Version 2.9.0-9.0.dev

Merge commit '092ed38a87e9536f43c6a35aed057c137e45113a' into dev
diff --git a/BUILD.gn b/BUILD.gn
index dc28b54..e2d4d23 100644
--- a/BUILD.gn
+++ b/BUILD.gn
@@ -57,6 +57,12 @@
     "runtime/vm:kernel_platform_files($host_toolchain)",
     "utils/kernel-service:kernel-service",
   ]
+
+  # TODO(bkonyi): this dep causes a segfault on Android XARM_X64 builds.
+  # See issue #41776.
+  if (dart_target_arch != "arm") {
+    deps += [ "utils/dartdev:dartdev" ]
+  }
 }
 
 group("runtime_kernel") {
@@ -74,13 +80,13 @@
   ]
 }
 
-if (use_nnbd) {
+if (dont_use_nnbd) {
   group("create_sdk") {
-    public_deps = [ "sdk_nnbd:create_sdk" ]
+    public_deps = [ "sdk:create_sdk" ]
   }
 } else {
   group("create_sdk") {
-    public_deps = [ "sdk:create_sdk" ]
+    public_deps = [ "sdk_nnbd:create_sdk" ]
   }
 }
 
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 4ccf379..ae01df3 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -23,6 +23,18 @@
     null-safe changes in the `Set` interface, it will now return `false`
     instead. The same applies for `CssClassSet.toggle`.
 
+*   `EventStreamSubscription.cancel` method used to return `null`, but since
+    `StreamSubscription.cancel` has changed to be non-nullable, this method
+    returns an empty `Future` instead. Due to an optimization on `null`
+    `Future`s, this method used to complete synchronously, but now that the
+    `Future` is empty instead, it completes asynchronously, therefore
+    potentially invalidating code that relied on the synchronous side-effect.
+    This change will only affect code using sound null-safety. See issue
+    [41653][] for more details.
+
+[41653]: https://github.com/dart-lang/sdk/issues/41653
+
+
 #### `dart:io`
 
 *   Class `OSError` now implements `Exception`. This change means `OSError` will
diff --git a/DEPS b/DEPS
index f29c6914..54149ac 100644
--- a/DEPS
+++ b/DEPS
@@ -43,7 +43,7 @@
   # co19 is a cipd package. Use update.sh in tests/co19[_2] to update these
   # hashes. It requires access to the dart-build-access group, which EngProd
   # has.
-  "co19_rev": "306b15d60048bee617b7d5ede9b49ebafb7d1c42",
+  "co19_rev": "f65f3578f95415c9a2f3ad002aac7b507549e64a",
   "co19_2_rev": "368bfa9e877a2df003547f64bb17e30596af10c7",
 
   # As Flutter does, we use Fuchsia's GN and Clang toolchain. These revision
@@ -69,10 +69,10 @@
   "boringssl_rev" : "4dfd5af70191b068aebe567b8e29ce108cee85ce",
   "charcode_tag": "9085e6b6127f084d66c0a94810a808121459012a",
   "chrome_rev" : "19997",
-  "cli_util_rev" : "4ad7ccbe3195fd2583b30f86a86697ef61e80f41",
+  "cli_util_tag" : "0.1.4",
   "collection_tag": "7be42e03d427cc19571cd7f9fc628a5913a6b757",
   "convert_tag": "49bde5b371eb5c2c8e721557cf762f17c75e49fc",
-  "crypto_tag" : "2.0.6",
+  "crypto_tag": "7422fb2f6584fe1839eb30bc4ca56e9f9760b801",
   "csslib_tag": "bf372d4fdc6dfa232ad93f77a0a3de0891edd04c",
   "dart2js_info_tag" : "0.6.0",
 
@@ -97,7 +97,7 @@
   "html_tag": "083a36cd801a4b787ba156b7c6e4c8b2e2daed4a",
   "http_io_rev": "2fa188caf7937e313026557713f7feffedd4978b",
   "http_multi_server_rev" : "ea269f79321d659208402088f3297e8920a88ee6",
-  "http_parser_tag" : "3.1.3",
+  "http_parser_tag": "6e63a97b5aaa2b4d1215fe01683e51fb73258e54",
   "http_retry_tag": "0.1.1",
   "http_tag": "a131e563c09349f624d5421237183a06fb10552d",
   "http_throttle_tag" : "1.0.2",
@@ -116,7 +116,7 @@
   "mustache_tag": "664737ecad027e6b96d0d1e627257efa0e46fcb1",
   "oauth2_tag": "1.6.0",
   "package_config_tag": "v1.9.2",
-  "path_tag": "1.7.0",
+  "path_tag": "4b8c83cd5ccfcc8101acd2940ffb5a44d24ec57e",
   "pedantic_tag": "v1.9.0",
   "ply_rev": "604b32590ffad5cbb82e4afef1d305512d06ae93",
   "pool_tag": "86fbb2cde9bbc66c8d159909d2f65a5981ea5b50",
@@ -139,7 +139,7 @@
   "stack_trace_tag": "1.9.3",
   "stagehand_tag": "v3.3.7",
   "stream_channel_tag": "2.0.0",
-  "string_scanner_tag": "1.0.3",
+  "string_scanner_tag": "a918e7371af6b6e73bfd534ff9da6084741c1f99",
   "test_descriptor_tag": "1.1.1",
   "test_process_tag": "1.0.3",
   "term_glyph_tag": "b3da31e9684a99cfe5f192b89914492018b44da7",
@@ -275,7 +275,7 @@
   Var("dart_root") + "/third_party/pkg/charcode":
       Var("dart_git") + "charcode.git" + "@" + Var("charcode_tag"),
   Var("dart_root") + "/third_party/pkg/cli_util":
-      Var("dart_git") + "cli_util.git" + "@" + Var("cli_util_rev"),
+      Var("dart_git") + "cli_util.git" + "@" + Var("cli_util_tag"),
   Var("dart_root") + "/third_party/pkg/collection":
       Var("dart_git") + "collection.git" + "@" + Var("collection_tag"),
   Var("dart_root") + "/third_party/pkg/convert":
diff --git a/benchmarks/Calls/dart/Calls.dart b/benchmarks/Calls/dart/Calls.dart
index 29103c6..7d3ca07 100644
--- a/benchmarks/Calls/dart/Calls.dart
+++ b/benchmarks/Calls/dart/Calls.dart
@@ -105,7 +105,7 @@
 @pragma('vm:never-inline')
 @pragma('dart2js:noInline')
 Future<int> performAwaitCallsClosureTargetPolymorphic(
-    FutureOr fun(int count)) async {
+    FutureOr<int> fun(int count)) async {
   int sum = 0;
   for (int i = 0; i < iterationLimitAsync; ++i) {
     sum += await fun(i);
@@ -330,7 +330,7 @@
 @pragma('dart2js:noInline')
 Stream<int> generateNumbersManualAsync(int limit) {
   int current = 0;
-  StreamController<int> controller;
+  StreamController<int> controller = StreamController(sync: true);
   void emit() {
     while (true) {
       if (controller.isPaused || !controller.hasListener) return;
@@ -347,7 +347,9 @@
     scheduleMicrotask(emit);
   }
 
-  controller = StreamController(onListen: run, onResume: run, sync: true);
+  controller.onListen = run;
+  controller.onResume = run;
+
   return controller.stream;
 }
 
diff --git a/pkg/_fe_analyzer_shared/lib/src/messages/codes_generated.dart b/pkg/_fe_analyzer_shared/lib/src/messages/codes_generated.dart
index 4c34d93..8f062d2 100644
--- a/pkg/_fe_analyzer_shared/lib/src/messages/codes_generated.dart
+++ b/pkg/_fe_analyzer_shared/lib/src/messages/codes_generated.dart
@@ -8455,6 +8455,14 @@
         r"""A type variable can't have the same name as its enclosing declaration.""");
 
 // DO NOT EDIT. THIS FILE IS GENERATED. SEE TOP OF FILE.
+const Code<Null> codeTypedefCause = messageTypedefCause;
+
+// DO NOT EDIT. THIS FILE IS GENERATED. SEE TOP OF FILE.
+const MessageCode messageTypedefCause = const MessageCode("TypedefCause",
+    severity: Severity.context,
+    message: r"""The issue arises via this type alias.""");
+
+// DO NOT EDIT. THIS FILE IS GENERATED. SEE TOP OF FILE.
 const Code<Null> codeTypedefInClass = messageTypedefInClass;
 
 // DO NOT EDIT. THIS FILE IS GENERATED. SEE TOP OF FILE.
@@ -8509,6 +8517,16 @@
         message: r"""This is the type variable ultimately denoted.""");
 
 // DO NOT EDIT. THIS FILE IS GENERATED. SEE TOP OF FILE.
+const Code<Null> codeTypedefUnaliasedTypeCause =
+    messageTypedefUnaliasedTypeCause;
+
+// DO NOT EDIT. THIS FILE IS GENERATED. SEE TOP OF FILE.
+const MessageCode messageTypedefUnaliasedTypeCause = const MessageCode(
+    "TypedefUnaliasedTypeCause",
+    severity: Severity.context,
+    message: r"""This is the type denoted by the type alias.""");
+
+// DO NOT EDIT. THIS FILE IS GENERATED. SEE TOP OF FILE.
 const Code<Null> codeUnexpectedDollarInString = messageUnexpectedDollarInString;
 
 // DO NOT EDIT. THIS FILE IS GENERATED. SEE TOP OF FILE.
diff --git a/pkg/_fe_analyzer_shared/lib/src/parser/identifier_context.dart b/pkg/_fe_analyzer_shared/lib/src/parser/identifier_context.dart
index d6c3b37..42c8fe2 100644
--- a/pkg/_fe_analyzer_shared/lib/src/parser/identifier_context.dart
+++ b/pkg/_fe_analyzer_shared/lib/src/parser/identifier_context.dart
@@ -7,8 +7,6 @@
 
 import '../scanner/token.dart' show Token, TokenType;
 
-import '../scanner/token_constants.dart' show IDENTIFIER_TOKEN;
-
 import 'identifier_context_impl.dart';
 
 import 'parser_impl.dart' show Parser;
@@ -22,7 +20,7 @@
 /// This can be used by the listener to determine the context in which the
 /// identifier appears; that in turn can help the listener decide how to resolve
 /// the identifier (if the listener is doing resolution).
-class IdentifierContext {
+abstract class IdentifierContext {
   /// Identifier is being declared as the name of an import prefix (i.e. `Foo`
   /// in `import "..." as Foo;`)
   static const ImportPrefixIdentifierContext importPrefixDeclaration =
@@ -292,12 +290,16 @@
   /// Ensure that the next token is an identifier (or keyword which should be
   /// treated as an identifier) and return that identifier.
   /// Report errors as necessary via [parser].
-  Token ensureIdentifier(Token token, Parser parser) {
-    assert(token.next.kind != IDENTIFIER_TOKEN);
-    // TODO(danrubel): Implement this method for each identifier context
-    // such that they return a non-null value.
-    return null;
-  }
+  Token ensureIdentifier(Token token, Parser parser);
+
+  /// Ensure that the next token is an identifier (or keyword which should be
+  /// treated as an identifier) and return that identifier.
+  /// Report errors as necessary via [parser].
+  /// If [recovered] implementers could allow 'token' to be used as an
+  /// identifier, even if it isn't a valid identifier.
+  Token ensureIdentifierPotentiallyRecovered(
+          Token token, Parser parser, bool isRecovered) =>
+      ensureIdentifier(token, parser);
 }
 
 /// Return `true` if the given [token] should be treated like the start of
diff --git a/pkg/_fe_analyzer_shared/lib/src/parser/identifier_context_impl.dart b/pkg/_fe_analyzer_shared/lib/src/parser/identifier_context_impl.dart
index e8665fa..7f7f609 100644
--- a/pkg/_fe_analyzer_shared/lib/src/parser/identifier_context_impl.dart
+++ b/pkg/_fe_analyzer_shared/lib/src/parser/identifier_context_impl.dart
@@ -350,6 +350,25 @@
       return identifier;
     }
   }
+
+  Token ensureIdentifierPotentiallyRecovered(
+      Token token, Parser parser, bool isRecovered) {
+    // Fast path good case.
+    Token identifier = token.next;
+    assert(identifier.kind != IDENTIFIER_TOKEN);
+    if (identifier.isIdentifier) {
+      return identifier;
+    }
+    // If not recovered, recover as normal.
+    if (!isRecovered || !token.isKeywordOrIdentifier) {
+      return ensureIdentifier(token, parser);
+    }
+
+    // If already recovered, use the given token.
+    parser.reportRecoverableErrorWithToken(
+        identifier, codes.templateExpectedIdentifier);
+    return identifier;
+  }
 }
 
 /// See [IdentifierContext.fieldInitializer].
@@ -754,6 +773,25 @@
       return identifier;
     }
   }
+
+  Token ensureIdentifierPotentiallyRecovered(
+      Token token, Parser parser, bool isRecovered) {
+    // Fast path good case.
+    Token identifier = token.next;
+    assert(identifier.kind != IDENTIFIER_TOKEN);
+    if (identifier.isIdentifier) {
+      return identifier;
+    }
+    // If not recovered, recover as normal.
+    if (!isRecovered || !token.isKeywordOrIdentifier) {
+      return ensureIdentifier(token, parser);
+    }
+
+    // If already recovered, use the given token.
+    parser.reportRecoverableErrorWithToken(
+        identifier, codes.templateExpectedIdentifier);
+    return identifier;
+  }
 }
 
 /// See [IdentifierContext.namedArgumentReference].
@@ -830,6 +868,30 @@
     }
     return identifier;
   }
+
+  Token ensureIdentifierPotentiallyRecovered(
+      Token token, Parser parser, bool isRecovered) {
+    // Fast path good case.
+    Token identifier = token.next;
+    assert(identifier.kind != IDENTIFIER_TOKEN);
+
+    if (identifier.isIdentifier) {
+      Token next = identifier.next;
+      if (!looksLikeStartOfNextTopLevelDeclaration(identifier) ||
+          isOneOfOrEof(next, followingValues)) {
+        return identifier;
+      }
+    }
+    // If not recovered, recover as normal.
+    if (!isRecovered || !token.isKeywordOrIdentifier) {
+      return ensureIdentifier(token, parser);
+    }
+
+    // If already recovered, use the given token.
+    parser.reportRecoverableErrorWithToken(
+        identifier, codes.templateExpectedIdentifier);
+    return identifier;
+  }
 }
 
 /// See [IdentifierContext.typedefDeclaration].
diff --git a/pkg/_fe_analyzer_shared/lib/src/parser/parser_impl.dart b/pkg/_fe_analyzer_shared/lib/src/parser/parser_impl.dart
index 13ab757..6ed311f 100644
--- a/pkg/_fe_analyzer_shared/lib/src/parser/parser_impl.dart
+++ b/pkg/_fe_analyzer_shared/lib/src/parser/parser_impl.dart
@@ -2213,6 +2213,28 @@
     return identifier;
   }
 
+  /// Parse a simple identifier at the given [token], and return the identifier
+  /// that was parsed.
+  ///
+  /// If the token is not an identifier, or is not appropriate for use as an
+  /// identifier in the given [context], create a synthetic identifier, report
+  /// an error, and return the synthetic identifier.
+  /// [isRecovered] is passed to [context] which - if true - allows implementers
+  /// to use the token as an identifier, even if it isn't a valid identifier.
+  Token ensureIdentifierPotentiallyRecovered(
+      Token token, IdentifierContext context, bool isRecovered) {
+    assert(context != null);
+    Token identifier = token.next;
+    if (identifier.kind != IDENTIFIER_TOKEN) {
+      identifier = context.ensureIdentifierPotentiallyRecovered(
+          token, this, isRecovered);
+      assert(identifier != null);
+      assert(identifier.isKeywordOrIdentifier);
+    }
+    listener.handleIdentifier(identifier, context);
+    return identifier;
+  }
+
   bool notEofOrValue(String value, Token token) {
     return !identical(token.kind, EOF_TOKEN) &&
         !identical(value, token.stringValue);
@@ -2306,6 +2328,25 @@
       }
     }
 
+    bool nameIsRecovered = false;
+
+    // Recovery: If the code is
+    // <return type>? <reserved word> <token indicating method or field>
+    // take the reserved keyword as the name.
+    if (typeInfo == noType &&
+        varFinalOrConst == null &&
+        isReservedKeyword(next.next) &&
+        indicatesMethodOrField(next.next.next)) {
+      // Recovery: Use the reserved keyword despite that not being legal.
+      typeInfo = computeType(
+          token,
+          /*required = */ true,
+          /* inDeclaration = */ true);
+      token = typeInfo.skipType(token);
+      next = token.next;
+      nameIsRecovered = true;
+    }
+
     if (next.type != TokenType.IDENTIFIER) {
       value = next.stringValue;
       if (identical(value, 'factory') || identical(value, 'operator')) {
@@ -2382,7 +2423,7 @@
             lateToken, codes.templateExtraneousModifier);
       }
       return parseTopLevelMethod(beforeStart, externalToken, beforeType,
-          typeInfo, getOrSet, token.next);
+          typeInfo, getOrSet, token.next, nameIsRecovered);
     }
 
     if (getOrSet != null) {
@@ -2400,7 +2441,8 @@
         typeInfo,
         token.next,
         DeclarationKind.TopLevel,
-        null);
+        null,
+        nameIsRecovered);
   }
 
   Token parseFields(
@@ -2414,7 +2456,8 @@
       TypeInfo typeInfo,
       Token name,
       DeclarationKind kind,
-      String enclosingDeclarationName) {
+      String enclosingDeclarationName,
+      bool nameIsRecovered) {
     if (externalToken != null) {
       reportRecoverableError(externalToken, codes.messageExternalField);
     }
@@ -2444,7 +2487,8 @@
     IdentifierContext context = kind == DeclarationKind.TopLevel
         ? IdentifierContext.topLevelVariableDeclaration
         : IdentifierContext.fieldDeclaration;
-    Token firstName = name = ensureIdentifier(token, context);
+    Token firstName = name = ensureIdentifierPotentiallyRecovered(
+        token, context, /* isRecovered = */ nameIsRecovered);
 
     // Check for covariant late final with initializer.
     if (covariantToken != null && lateToken != null) {
@@ -2513,14 +2557,22 @@
     return token;
   }
 
-  Token parseTopLevelMethod(Token beforeStart, Token externalToken,
-      Token beforeType, TypeInfo typeInfo, Token getOrSet, Token name) {
+  Token parseTopLevelMethod(
+      Token beforeStart,
+      Token externalToken,
+      Token beforeType,
+      TypeInfo typeInfo,
+      Token getOrSet,
+      Token name,
+      bool nameIsRecovered) {
     listener.beginTopLevelMethod(beforeStart, externalToken);
 
     Token token = typeInfo.parseType(beforeType, this);
     assert(token.next == (getOrSet ?? name) || token.next.isEof);
-    name = ensureIdentifier(
-        getOrSet ?? token, IdentifierContext.topLevelFunctionDeclaration);
+    name = ensureIdentifierPotentiallyRecovered(
+        getOrSet ?? token,
+        IdentifierContext.topLevelFunctionDeclaration,
+        /* isRecovered = */ nameIsRecovered);
 
     bool isGetter = false;
     if (getOrSet == null) {
@@ -3065,6 +3117,24 @@
         .next;
   }
 
+  bool isReservedKeyword(Token token) {
+    if (!token.isKeyword) return false;
+    return token.type.isReservedWord;
+  }
+
+  bool indicatesMethodOrField(Token token) {
+    String value = token.stringValue;
+    if (identical(value, ';') ||
+        identical(value, '=') ||
+        identical(value, '(') ||
+        identical(value, '{') ||
+        identical(value, '=>') ||
+        identical(value, '<')) {
+      return true;
+    }
+    return false;
+  }
+
   /// ```
   /// classMember:
   ///   fieldDeclaration |
@@ -3150,17 +3220,27 @@
     listener.beginMember();
 
     Token beforeType = token;
-    TypeInfo typeInfo = computeType(token, false, true);
+    TypeInfo typeInfo = computeType(
+        token,
+        /*required = */ false,
+        /* inDeclaration = */ true);
     token = typeInfo.skipType(token);
     next = token.next;
 
     Token getOrSet;
+    bool nameIsRecovered = false;
     if (next.type != TokenType.IDENTIFIER) {
       String value = next.stringValue;
       if (identical(value, 'get') || identical(value, 'set')) {
         if (next.next.isIdentifier) {
           getOrSet = token = next;
           next = token.next;
+        } else if (isReservedKeyword(next.next) &&
+            indicatesMethodOrField(next.next.next)) {
+          // Recovery: Getter or setter followed by a reserved word (name).
+          getOrSet = token = next;
+          next = token.next;
+          nameIsRecovered = true;
         }
         // Fall through to continue parsing `get` or `set` as an identifier.
       } else if (identical(value, 'factory')) {
@@ -3193,7 +3273,8 @@
               getOrSet,
               token.next,
               kind,
-              enclosingDeclarationName);
+              enclosingDeclarationName,
+              nameIsRecovered);
           listener.endMember();
           return token;
         } else if (optional('===', next2) ||
@@ -3226,7 +3307,8 @@
               getOrSet,
               token.next,
               kind,
-              enclosingDeclarationName);
+              enclosingDeclarationName,
+              nameIsRecovered);
           listener.endMember();
           return token;
         }
@@ -3269,6 +3351,16 @@
               kind,
               enclosingDeclarationName);
         }
+      } else if (isReservedKeyword(next2) &&
+          indicatesMethodOrField(next2.next)) {
+        // Recovery: Use the reserved keyword despite that not being legal.
+        typeInfo = computeType(
+            token,
+            /*required = */ true,
+            /* inDeclaration = */ true);
+        token = typeInfo.skipType(token);
+        next = token.next;
+        nameIsRecovered = true;
       }
     }
 
@@ -3293,7 +3385,8 @@
           getOrSet,
           token.next,
           kind,
-          enclosingDeclarationName);
+          enclosingDeclarationName,
+          nameIsRecovered);
     } else {
       if (getOrSet != null) {
         reportRecoverableErrorWithToken(
@@ -3310,7 +3403,8 @@
           typeInfo,
           token.next,
           kind,
-          enclosingDeclarationName);
+          enclosingDeclarationName,
+          nameIsRecovered);
     }
     listener.endMember();
     return token;
@@ -3328,7 +3422,8 @@
       Token getOrSet,
       Token name,
       DeclarationKind kind,
-      String enclosingDeclarationName) {
+      String enclosingDeclarationName,
+      bool nameIsRecovered) {
     if (lateToken != null) {
       reportRecoverableErrorWithToken(
           lateToken, codes.templateExtraneousModifier);
@@ -3387,7 +3482,10 @@
     if (isOperator) {
       token = parseOperatorName(token);
     } else {
-      token = ensureIdentifier(token, IdentifierContext.methodDeclaration);
+      token = ensureIdentifierPotentiallyRecovered(
+          token,
+          IdentifierContext.methodDeclaration,
+          /* isRecovered = */ nameIsRecovered);
       // Possible recovery: This call only does something if the next token is
       // a '.' --- that's not legal for get or set, but an error is reported
       // later, and it will recover better if we allow it.
@@ -6759,7 +6857,8 @@
         null,
         beforeName.next,
         kind,
-        enclosingDeclarationName);
+        enclosingDeclarationName,
+        false);
     listener.endMember();
     return token;
   }
@@ -6818,7 +6917,8 @@
           getOrSet,
           token.next,
           kind,
-          enclosingDeclarationName);
+          enclosingDeclarationName,
+          false);
     } else if (token == beforeStart) {
       // TODO(danrubel): Provide a more specific error message for extra ';'.
       reportRecoverableErrorWithToken(next, codes.templateExpectedClassMember);
@@ -6839,7 +6939,8 @@
           typeInfo,
           token.next,
           kind,
-          enclosingDeclarationName);
+          enclosingDeclarationName,
+          false);
     }
 
     listener.endMember();
diff --git a/pkg/_fe_analyzer_shared/lib/src/scanner/abstract_scanner.dart b/pkg/_fe_analyzer_shared/lib/src/scanner/abstract_scanner.dart
index 75be976..bd67253 100644
--- a/pkg/_fe_analyzer_shared/lib/src/scanner/abstract_scanner.dart
+++ b/pkg/_fe_analyzer_shared/lib/src/scanner/abstract_scanner.dart
@@ -124,15 +124,35 @@
    */
   Link<BeginToken> groupingStack = const Link<BeginToken>();
 
+  final bool inRecoveryOption;
+  int recoveryCount = 0;
+
   AbstractScanner(ScannerConfiguration config, this.includeComments,
       this.languageVersionChanged,
       {int numberOfBytesHint})
-      : lineStarts = new LineStarts(numberOfBytesHint) {
+      : lineStarts = new LineStarts(numberOfBytesHint),
+        inRecoveryOption = false {
     this.tail = this.tokens;
     this.errorTail = this.tokens;
     this.configuration = config;
   }
 
+  AbstractScanner createRecoveryOptionScanner();
+
+  AbstractScanner.recoveryOptionScanner(AbstractScanner copyFrom)
+      : lineStarts = [],
+        includeComments = false,
+        languageVersionChanged = null,
+        inRecoveryOption = true {
+    this.tail = this.tokens;
+    this.errorTail = this.tokens;
+    this._enableExtensionMethods = copyFrom._enableExtensionMethods;
+    this._enableNonNullable = copyFrom._enableNonNullable;
+    this._enableTripleShift = copyFrom._enableTripleShift;
+    this.tokenStart = copyFrom.tokenStart;
+    this.groupingStack = copyFrom.groupingStack;
+  }
+
   @override
   set configuration(ScannerConfiguration config) {
     if (config != null) {
@@ -362,8 +382,19 @@
    */
   int appendEndGroup(TokenType type, int openKind) {
     assert(!identical(openKind, LT_TOKEN)); // openKind is < for > and >>
-    if (!discardBeginGroupUntil(openKind)) {
-      // No begin group found. Just continue.
+    bool foundMatchingBrace = discardBeginGroupUntil(openKind);
+    return appendEndGroupInternal(foundMatchingBrace, type, openKind);
+  }
+
+  /// Append the end group (parenthesis, bracket etc).
+  /// If [foundMatchingBrace] is true the grouping stack (stack of parenthesis
+  /// etc) is updated, otherwise it's left alone.
+  /// In effect, if [foundMatchingBrace] is false this end token is basically
+  /// ignored, i.e. not really seen as an end group.
+  int appendEndGroupInternal(
+      bool foundMatchingBrace, TokenType type, int openKind) {
+    if (!foundMatchingBrace) {
+      // No begin group. Leave the grouping stack alone and just continue.
       appendPrecedenceToken(type);
       return advance();
     }
@@ -472,7 +503,7 @@
    * then discard begin group tokens up to that match and return `true`,
    * otherwise return `false`.
    * This recovers nicely from from situations like "{[}" and "{foo());}",
-   * but not "foo(() {bar());});
+   * but not "foo(() {bar());});"
    */
   bool discardBeginGroupUntil(int openKind) {
     Link<BeginToken> originalStack = groupingStack;
@@ -499,6 +530,8 @@
       groupingStack = groupingStack.tail;
     } while (!groupingStack.isEmpty);
 
+    recoveryCount++;
+
     // If the stack does not have any opener of the given type,
     // then return without discarding anything.
     // This recovers nicely from from situations like "{foo());}".
@@ -507,16 +540,90 @@
       return false;
     }
 
+    // We found a matching group somewhere in the stack, but generally don't
+    // know if we should recover by inserting synthetic closers or
+    // basically ignore the current token.
+    // We're in a recovery setting so we're allowed to be 'relatively slow' ---
+    // try both and see which is better (i.e. gives fewest rewrites later).
+    // To not get exponential runtime we will not do this nested though.
+    // E.g. we can recover "{[}" as "{[]}" (better) or (with . for ignored
+    // tokens) "{[.".
+    // Or we can recover "[(])]" as "[()].." or "[(.)]" (better).
+    if (!inRecoveryOption) {
+      TokenType type;
+      switch (openKind) {
+        case OPEN_SQUARE_BRACKET_TOKEN:
+          type = TokenType.CLOSE_SQUARE_BRACKET;
+          break;
+        case OPEN_CURLY_BRACKET_TOKEN:
+          type = TokenType.CLOSE_CURLY_BRACKET;
+          break;
+        case OPEN_PAREN_TOKEN:
+          type = TokenType.CLOSE_PAREN;
+          break;
+        default:
+          throw new StateError("Unexpected openKind");
+      }
+
+      // Option #1: Insert synthetic closers.
+      int option1Recoveries;
+      {
+        AbstractScanner option1 = createRecoveryOptionScanner();
+        option1.insertSyntheticClosers(originalStack, groupingStack);
+        option1Recoveries =
+            option1.recoveryOptionTokenizer(option1.appendEndGroupInternal(
+                /* foundMatchingBrace = */ true,
+                type,
+                openKind));
+        option1Recoveries += option1.groupingStack.slowLength();
+      }
+
+      // Option #2: ignore this token.
+      int option2Recoveries;
+      {
+        AbstractScanner option2 = createRecoveryOptionScanner();
+        option2.groupingStack = originalStack;
+        option2Recoveries =
+            option2.recoveryOptionTokenizer(option2.appendEndGroupInternal(
+                /* foundMatchingBrace = */ false,
+                type,
+                openKind));
+        // We add 1 to make this option pay for ignoring this token.
+        option2Recoveries += option2.groupingStack.slowLength() + 1;
+      }
+
+      // The option-runs might have set invalid endGroup pointers. Reset them.
+      for (Link<BeginToken> link = originalStack;
+          link.isNotEmpty;
+          link = link.tail) {
+        link.head.endToken = null;
+      }
+
+      if (option2Recoveries < option1Recoveries) {
+        // Perform option #2 recovery.
+        groupingStack = originalStack;
+        return false;
+      }
+      // option #1 is the default, so fall though.
+    }
+
     // Insert synthetic closers and report errors for any unbalanced openers.
     // This recovers nicely from from situations like "{[}".
-    while (!identical(originalStack, groupingStack)) {
+    insertSyntheticClosers(originalStack, groupingStack);
+    return true;
+  }
+
+  void insertSyntheticClosers(
+      Link<BeginToken> originalStack, Link<BeginToken> entryToUse) {
+    // Insert synthetic closers and report errors for any unbalanced openers.
+    // This recovers nicely from from situations like "{[}".
+    while (!identical(originalStack, entryToUse)) {
       // Don't report unmatched errors for <; it is also the less-than operator.
-      if (!identical(groupingStack.head.kind, LT_TOKEN)) {
+      if (!identical(entryToUse.head.kind, LT_TOKEN)) {
         unmatchedBeginGroup(originalStack.head);
       }
       originalStack = originalStack.tail;
     }
-    return true;
   }
 
   /**
@@ -601,6 +708,7 @@
     appendToken(new SyntheticToken(type, tokenStart)..beforeSynthetic = tail);
     begin.endGroup = tail;
     prependErrorToken(new UnmatchedToken(begin));
+    recoveryCount++;
   }
 
   /// Return true when at EOF.
@@ -640,6 +748,26 @@
     return firstToken();
   }
 
+  /// Tokenize a (small) part of the data. Used for recovery "option testing".
+  ///
+  /// Returns the number of recoveries performed.
+  int recoveryOptionTokenizer(int next) {
+    int iterations = 0;
+    while (!atEndOfFile()) {
+      while (!identical(next, $EOF)) {
+        // TODO(jensj): Look at number of lines, tokens, parenthesis stack,
+        // semi-colon etc, not just number of iterations.
+        next = bigSwitch(next);
+        iterations++;
+
+        if (iterations > 100) {
+          break;
+        }
+      }
+    }
+    return recoveryCount;
+  }
+
   int bigHeaderSwitch(int next) {
     if (!identical(next, $SLASH)) {
       return bigSwitch(next);
diff --git a/pkg/_fe_analyzer_shared/lib/src/scanner/string_scanner.dart b/pkg/_fe_analyzer_shared/lib/src/scanner/string_scanner.dart
index aabe361..b09443e 100644
--- a/pkg/_fe_analyzer_shared/lib/src/scanner/string_scanner.dart
+++ b/pkg/_fe_analyzer_shared/lib/src/scanner/string_scanner.dart
@@ -34,6 +34,16 @@
       : string = ensureZeroTermination(string),
         super(configuration, includeComments, languageVersionChanged);
 
+  StringScanner.recoveryOptionScanner(StringScanner copyFrom)
+      : super.recoveryOptionScanner(copyFrom) {
+    string = copyFrom.string;
+    scanOffset = copyFrom.scanOffset;
+  }
+
+  StringScanner createRecoveryOptionScanner() {
+    return new StringScanner.recoveryOptionScanner(this);
+  }
+
   static String ensureZeroTermination(String string) {
     return (string.isEmpty || string.codeUnitAt(string.length - 1) != 0)
         // TODO(lry): abort instead of copying the array, or warn?
diff --git a/pkg/_fe_analyzer_shared/lib/src/scanner/token.dart b/pkg/_fe_analyzer_shared/lib/src/scanner/token.dart
index 0ab3ed5..fc3bb7e 100644
--- a/pkg/_fe_analyzer_shared/lib/src/scanner/token.dart
+++ b/pkg/_fe_analyzer_shared/lib/src/scanner/token.dart
@@ -119,177 +119,226 @@
   CommentToken copy() => new DocumentationCommentToken(type, _value, offset);
 }
 
+enum KeywordStyle {
+  reserved,
+  builtIn,
+  pseudo,
+}
+
 /**
  * The keywords in the Dart programming language.
  *
  * Clients may not extend, implement or mix-in this class.
  */
 class Keyword extends TokenType {
-  static const Keyword ABSTRACT =
-      const Keyword("abstract", "ABSTRACT", isBuiltIn: true, isModifier: true);
+  static const Keyword ABSTRACT = const Keyword(
+      "abstract", "ABSTRACT", KeywordStyle.builtIn,
+      isModifier: true);
 
-  static const Keyword AS = const Keyword("as", "AS",
-      precedence: RELATIONAL_PRECEDENCE, isBuiltIn: true);
+  static const Keyword AS = const Keyword("as", "AS", KeywordStyle.builtIn,
+      precedence: RELATIONAL_PRECEDENCE);
 
-  static const Keyword ASSERT = const Keyword("assert", "ASSERT");
+  static const Keyword ASSERT =
+      const Keyword("assert", "ASSERT", KeywordStyle.reserved);
 
-  static const Keyword ASYNC = const Keyword("async", "ASYNC", isPseudo: true);
+  static const Keyword ASYNC =
+      const Keyword("async", "ASYNC", KeywordStyle.pseudo);
 
-  static const Keyword AWAIT = const Keyword("await", "AWAIT", isPseudo: true);
+  static const Keyword AWAIT =
+      const Keyword("await", "AWAIT", KeywordStyle.pseudo);
 
-  static const Keyword BREAK = const Keyword("break", "BREAK");
+  static const Keyword BREAK =
+      const Keyword("break", "BREAK", KeywordStyle.reserved);
 
-  static const Keyword CASE = const Keyword("case", "CASE");
+  static const Keyword CASE =
+      const Keyword("case", "CASE", KeywordStyle.reserved);
 
-  static const Keyword CATCH = const Keyword("catch", "CATCH");
+  static const Keyword CATCH =
+      const Keyword("catch", "CATCH", KeywordStyle.reserved);
 
-  static const Keyword CLASS =
-      const Keyword("class", "CLASS", isTopLevelKeyword: true);
+  static const Keyword CLASS = const Keyword(
+      "class", "CLASS", KeywordStyle.reserved,
+      isTopLevelKeyword: true);
 
   static const Keyword CONST =
-      const Keyword("const", "CONST", isModifier: true);
+      const Keyword("const", "CONST", KeywordStyle.reserved, isModifier: true);
 
-  static const Keyword CONTINUE = const Keyword("continue", "CONTINUE");
+  static const Keyword CONTINUE =
+      const Keyword("continue", "CONTINUE", KeywordStyle.reserved);
 
-  static const Keyword COVARIANT = const Keyword("covariant", "COVARIANT",
-      isBuiltIn: true, isModifier: true);
+  static const Keyword COVARIANT = const Keyword(
+      "covariant", "COVARIANT", KeywordStyle.builtIn,
+      isModifier: true);
 
-  static const Keyword DEFAULT = const Keyword("default", "DEFAULT");
+  static const Keyword DEFAULT =
+      const Keyword("default", "DEFAULT", KeywordStyle.reserved);
 
   static const Keyword DEFERRED =
-      const Keyword("deferred", "DEFERRED", isBuiltIn: true);
+      const Keyword("deferred", "DEFERRED", KeywordStyle.builtIn);
 
-  static const Keyword DO = const Keyword("do", "DO");
+  static const Keyword DO = const Keyword("do", "DO", KeywordStyle.reserved);
 
   static const Keyword DYNAMIC =
-      const Keyword("dynamic", "DYNAMIC", isBuiltIn: true);
+      const Keyword("dynamic", "DYNAMIC", KeywordStyle.builtIn);
 
-  static const Keyword ELSE = const Keyword("else", "ELSE");
+  static const Keyword ELSE =
+      const Keyword("else", "ELSE", KeywordStyle.reserved);
 
-  static const Keyword ENUM =
-      const Keyword("enum", "ENUM", isTopLevelKeyword: true);
+  static const Keyword ENUM = const Keyword(
+      "enum", "ENUM", KeywordStyle.reserved,
+      isTopLevelKeyword: true);
 
-  static const Keyword EXPORT = const Keyword("export", "EXPORT",
-      isBuiltIn: true, isTopLevelKeyword: true);
+  static const Keyword EXPORT = const Keyword(
+      "export", "EXPORT", KeywordStyle.builtIn,
+      isTopLevelKeyword: true);
 
-  static const Keyword EXTENDS = const Keyword("extends", "EXTENDS");
+  static const Keyword EXTENDS =
+      const Keyword("extends", "EXTENDS", KeywordStyle.reserved);
 
-  static const Keyword EXTENSION = const Keyword("extension", "EXTENSION",
-      isBuiltIn: true, isTopLevelKeyword: true);
+  static const Keyword EXTENSION = const Keyword(
+      "extension", "EXTENSION", KeywordStyle.builtIn,
+      isTopLevelKeyword: true);
 
-  static const Keyword EXTERNAL =
-      const Keyword("external", "EXTERNAL", isBuiltIn: true, isModifier: true);
+  static const Keyword EXTERNAL = const Keyword(
+      "external", "EXTERNAL", KeywordStyle.builtIn,
+      isModifier: true);
 
   static const Keyword FACTORY =
-      const Keyword("factory", "FACTORY", isBuiltIn: true);
+      const Keyword("factory", "FACTORY", KeywordStyle.builtIn);
 
-  static const Keyword FALSE = const Keyword("false", "FALSE");
+  static const Keyword FALSE =
+      const Keyword("false", "FALSE", KeywordStyle.reserved);
 
   static const Keyword FINAL =
-      const Keyword("final", "FINAL", isModifier: true);
+      const Keyword("final", "FINAL", KeywordStyle.reserved, isModifier: true);
 
-  static const Keyword FINALLY = const Keyword("finally", "FINALLY");
+  static const Keyword FINALLY =
+      const Keyword("finally", "FINALLY", KeywordStyle.reserved);
 
-  static const Keyword FOR = const Keyword("for", "FOR");
+  static const Keyword FOR = const Keyword("for", "FOR", KeywordStyle.reserved);
 
   static const Keyword FUNCTION =
-      const Keyword("Function", "FUNCTION", isPseudo: true);
+      const Keyword("Function", "FUNCTION", KeywordStyle.pseudo);
 
-  static const Keyword GET = const Keyword("get", "GET", isBuiltIn: true);
+  static const Keyword GET = const Keyword("get", "GET", KeywordStyle.builtIn);
 
-  static const Keyword HIDE = const Keyword("hide", "HIDE", isPseudo: true);
+  static const Keyword HIDE =
+      const Keyword("hide", "HIDE", KeywordStyle.pseudo);
 
-  static const Keyword IF = const Keyword("if", "IF");
+  static const Keyword IF = const Keyword("if", "IF", KeywordStyle.reserved);
 
   static const Keyword IMPLEMENTS =
-      const Keyword("implements", "IMPLEMENTS", isBuiltIn: true);
+      const Keyword("implements", "IMPLEMENTS", KeywordStyle.builtIn);
 
-  static const Keyword IMPORT = const Keyword("import", "IMPORT",
-      isBuiltIn: true, isTopLevelKeyword: true);
+  static const Keyword IMPORT = const Keyword(
+      "import", "IMPORT", KeywordStyle.builtIn,
+      isTopLevelKeyword: true);
 
-  static const Keyword IN = const Keyword("in", "IN");
+  static const Keyword IN = const Keyword("in", "IN", KeywordStyle.reserved);
 
-  static const Keyword INOUT = const Keyword("inout", "INOUT", isPseudo: true);
+  static const Keyword INOUT =
+      const Keyword("inout", "INOUT", KeywordStyle.pseudo);
 
   static const Keyword INTERFACE =
-      const Keyword("interface", "INTERFACE", isBuiltIn: true);
+      const Keyword("interface", "INTERFACE", KeywordStyle.builtIn);
 
-  static const Keyword IS =
-      const Keyword("is", "IS", precedence: RELATIONAL_PRECEDENCE);
+  static const Keyword IS = const Keyword("is", "IS", KeywordStyle.reserved,
+      precedence: RELATIONAL_PRECEDENCE);
 
   static const Keyword LATE =
-      const Keyword("late", "LATE", isModifier: true, isBuiltIn: true);
+      const Keyword("late", "LATE", KeywordStyle.builtIn, isModifier: true);
 
-  static const Keyword LIBRARY = const Keyword("library", "LIBRARY",
-      isBuiltIn: true, isTopLevelKeyword: true);
+  static const Keyword LIBRARY = const Keyword(
+      "library", "LIBRARY", KeywordStyle.builtIn,
+      isTopLevelKeyword: true);
 
-  static const Keyword MIXIN =
-      const Keyword("mixin", "MIXIN", isBuiltIn: true, isTopLevelKeyword: true);
+  static const Keyword MIXIN = const Keyword(
+      "mixin", "MIXIN", KeywordStyle.builtIn,
+      isTopLevelKeyword: true);
 
   static const Keyword NATIVE =
-      const Keyword("native", "NATIVE", isPseudo: true);
+      const Keyword("native", "NATIVE", KeywordStyle.pseudo);
 
-  static const Keyword NEW = const Keyword("new", "NEW");
+  static const Keyword NEW = const Keyword("new", "NEW", KeywordStyle.reserved);
 
-  static const Keyword NULL = const Keyword("null", "NULL");
+  static const Keyword NULL =
+      const Keyword("null", "NULL", KeywordStyle.reserved);
 
-  static const Keyword OF = const Keyword("of", "OF", isPseudo: true);
+  static const Keyword OF = const Keyword("of", "OF", KeywordStyle.pseudo);
 
-  static const Keyword ON = const Keyword("on", "ON", isPseudo: true);
+  static const Keyword ON = const Keyword("on", "ON", KeywordStyle.pseudo);
 
   static const Keyword OPERATOR =
-      const Keyword("operator", "OPERATOR", isBuiltIn: true);
+      const Keyword("operator", "OPERATOR", KeywordStyle.builtIn);
 
-  static const Keyword OUT = const Keyword("out", "OUT", isPseudo: true);
+  static const Keyword OUT = const Keyword("out", "OUT", KeywordStyle.pseudo);
 
-  static const Keyword PART =
-      const Keyword("part", "PART", isBuiltIn: true, isTopLevelKeyword: true);
+  static const Keyword PART = const Keyword(
+      "part", "PART", KeywordStyle.builtIn,
+      isTopLevelKeyword: true);
 
-  static const Keyword PATCH = const Keyword("patch", "PATCH", isPseudo: true);
+  static const Keyword PATCH =
+      const Keyword("patch", "PATCH", KeywordStyle.pseudo);
 
-  static const Keyword REQUIRED =
-      const Keyword("required", "REQUIRED", isBuiltIn: true, isModifier: true);
+  static const Keyword REQUIRED = const Keyword(
+      "required", "REQUIRED", KeywordStyle.builtIn,
+      isModifier: true);
 
-  static const Keyword RETHROW = const Keyword("rethrow", "RETHROW");
+  static const Keyword RETHROW =
+      const Keyword("rethrow", "RETHROW", KeywordStyle.reserved);
 
-  static const Keyword RETURN = const Keyword("return", "RETURN");
+  static const Keyword RETURN =
+      const Keyword("return", "RETURN", KeywordStyle.reserved);
 
-  static const Keyword SET = const Keyword("set", "SET", isBuiltIn: true);
+  static const Keyword SET = const Keyword("set", "SET", KeywordStyle.builtIn);
 
-  static const Keyword SHOW = const Keyword("show", "SHOW", isPseudo: true);
+  static const Keyword SHOW =
+      const Keyword("show", "SHOW", KeywordStyle.pseudo);
 
   static const Keyword SOURCE =
-      const Keyword("source", "SOURCE", isPseudo: true);
+      const Keyword("source", "SOURCE", KeywordStyle.pseudo);
 
   static const Keyword STATIC =
-      const Keyword("static", "STATIC", isBuiltIn: true, isModifier: true);
+      const Keyword("static", "STATIC", KeywordStyle.builtIn, isModifier: true);
 
-  static const Keyword SUPER = const Keyword("super", "SUPER");
+  static const Keyword SUPER =
+      const Keyword("super", "SUPER", KeywordStyle.reserved);
 
-  static const Keyword SWITCH = const Keyword("switch", "SWITCH");
+  static const Keyword SWITCH =
+      const Keyword("switch", "SWITCH", KeywordStyle.reserved);
 
-  static const Keyword SYNC = const Keyword("sync", "SYNC", isPseudo: true);
+  static const Keyword SYNC =
+      const Keyword("sync", "SYNC", KeywordStyle.pseudo);
 
-  static const Keyword THIS = const Keyword("this", "THIS");
+  static const Keyword THIS =
+      const Keyword("this", "THIS", KeywordStyle.reserved);
 
-  static const Keyword THROW = const Keyword("throw", "THROW");
+  static const Keyword THROW =
+      const Keyword("throw", "THROW", KeywordStyle.reserved);
 
-  static const Keyword TRUE = const Keyword("true", "TRUE");
+  static const Keyword TRUE =
+      const Keyword("true", "TRUE", KeywordStyle.reserved);
 
-  static const Keyword TRY = const Keyword("try", "TRY");
+  static const Keyword TRY = const Keyword("try", "TRY", KeywordStyle.reserved);
 
-  static const Keyword TYPEDEF = const Keyword("typedef", "TYPEDEF",
-      isBuiltIn: true, isTopLevelKeyword: true);
+  static const Keyword TYPEDEF = const Keyword(
+      "typedef", "TYPEDEF", KeywordStyle.builtIn,
+      isTopLevelKeyword: true);
 
-  static const Keyword VAR = const Keyword("var", "VAR", isModifier: true);
+  static const Keyword VAR =
+      const Keyword("var", "VAR", KeywordStyle.reserved, isModifier: true);
 
-  static const Keyword VOID = const Keyword("void", "VOID");
+  static const Keyword VOID =
+      const Keyword("void", "VOID", KeywordStyle.reserved);
 
-  static const Keyword WHILE = const Keyword("while", "WHILE");
+  static const Keyword WHILE =
+      const Keyword("while", "WHILE", KeywordStyle.reserved);
 
-  static const Keyword WITH = const Keyword("with", "WITH");
+  static const Keyword WITH =
+      const Keyword("with", "WITH", KeywordStyle.reserved);
 
-  static const Keyword YIELD = const Keyword("yield", "YIELD", isPseudo: true);
+  static const Keyword YIELD =
+      const Keyword("yield", "YIELD", KeywordStyle.pseudo);
 
   static const List<Keyword> values = const <Keyword>[
     ABSTRACT,
@@ -368,50 +417,34 @@
    */
   static final Map<String, Keyword> keywords = _createKeywordMap();
 
-  /**
-   * A flag indicating whether the keyword is "built-in" identifier.
-   */
-  @override
-  final bool isBuiltIn;
-
-  @override
-  final bool isPseudo;
+  final KeywordStyle keywordStyle;
 
   /**
    * Initialize a newly created keyword.
    */
-  const Keyword(String lexeme, String name,
-      {this.isBuiltIn: false,
-      bool isModifier: false,
-      this.isPseudo: false,
+  const Keyword(String lexeme, String name, this.keywordStyle,
+      {bool isModifier: false,
       bool isTopLevelKeyword: false,
       int precedence: NO_PRECEDENCE})
       : super(lexeme, name, precedence, KEYWORD_TOKEN,
             isModifier: isModifier, isTopLevelKeyword: isTopLevelKeyword);
 
+  @override
+  bool get isBuiltIn => keywordStyle == KeywordStyle.builtIn;
+
+  @override
+  bool get isPseudo => keywordStyle == KeywordStyle.pseudo;
+
   bool get isBuiltInOrPseudo => isBuiltIn || isPseudo;
 
-  /**
-   * A flag indicating whether the keyword is "built-in" identifier.
-   * This method exists for backward compatibility and will be removed.
-   * Use [isBuiltIn] instead.
-   */
-  @deprecated
-  bool get isPseudoKeyword => isBuiltIn; // TODO (danrubel): remove this
+  @override
+  bool get isReservedWord => keywordStyle == KeywordStyle.reserved;
 
   /**
    * The name of the keyword type.
    */
   String get name => lexeme.toUpperCase();
 
-  /**
-   * The lexeme for the keyword.
-   *
-   * Deprecated - use [lexeme] instead.
-   */
-  @deprecated
-  String get syntax => lexeme;
-
   @override
   String toString() => name;
 
@@ -1687,6 +1720,9 @@
    */
   bool get isBuiltIn => false;
 
+  /// A flag indicating whether the keyword is a "reserved word".
+  bool get isReservedWord => false;
+
   /**
    * Return `true` if this type of token represents an equality operator.
    */
@@ -1751,10 +1787,4 @@
 
   @override
   String toString() => name;
-
-  /**
-   * Use [lexeme] instead of this method
-   */
-  @deprecated
-  String get value => lexeme;
 }
diff --git a/pkg/_fe_analyzer_shared/lib/src/scanner/utf8_bytes_scanner.dart b/pkg/_fe_analyzer_shared/lib/src/scanner/utf8_bytes_scanner.dart
index 8619c6f..97191c6 100644
--- a/pkg/_fe_analyzer_shared/lib/src/scanner/utf8_bytes_scanner.dart
+++ b/pkg/_fe_analyzer_shared/lib/src/scanner/utf8_bytes_scanner.dart
@@ -97,6 +97,19 @@
     }
   }
 
+  Utf8BytesScanner.createRecoveryOptionScanner(Utf8BytesScanner copyFrom)
+      : super.recoveryOptionScanner(copyFrom) {
+    this.bytes = copyFrom.bytes;
+    this.byteOffset = copyFrom.byteOffset;
+    this.scanSlack = copyFrom.scanSlack;
+    this.scanSlackOffset = copyFrom.scanSlackOffset;
+    this.utf8Slack = copyFrom.utf8Slack;
+  }
+
+  Utf8BytesScanner createRecoveryOptionScanner() {
+    return new Utf8BytesScanner.createRecoveryOptionScanner(this);
+  }
+
   bool containsBomAt(int offset) {
     const List<int> BOM_UTF8 = const [0xEF, 0xBB, 0xBF];
 
diff --git a/pkg/_fe_analyzer_shared/test/inheritance/data/covariant_opt_out.dart b/pkg/_fe_analyzer_shared/test/inheritance/data/covariant_opt_out.dart
index dddf142..97c17e9 100644
--- a/pkg/_fe_analyzer_shared/test/inheritance/data/covariant_opt_out.dart
+++ b/pkg/_fe_analyzer_shared/test/inheritance/data/covariant_opt_out.dart
@@ -7,39 +7,109 @@
 // @dart=2.6
 
 /*class: A:A,Object*/
+/*cfe|cfe:builder.member: A.toString:String* Function()**/
+/*cfe|cfe:builder.member: A.runtimeType:Type**/
+/*cfe|cfe:builder.member: A._simpleInstanceOf:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: A._instanceOf:bool* Function(dynamic, dynamic, dynamic)**/
+/*cfe|cfe:builder.member: A.noSuchMethod:dynamic Function(Invocation*)**/
+/*cfe|cfe:builder.member: A._identityHashCode:int**/
+/*cfe|cfe:builder.member: A.hashCode:int**/
+/*cfe|cfe:builder.member: A._simpleInstanceOfFalse:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: A._simpleInstanceOfTrue:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: A.==:bool* Function(dynamic)**/
 abstract class A {
   /*member: A.method:void Function(dynamic)**/
   void method(dynamic a);
 }
 
 /*class: B:B,Object*/
+/*cfe|cfe:builder.member: B.toString:String* Function()**/
+/*cfe|cfe:builder.member: B.runtimeType:Type**/
+/*cfe|cfe:builder.member: B._simpleInstanceOf:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: B._instanceOf:bool* Function(dynamic, dynamic, dynamic)**/
+/*cfe|cfe:builder.member: B.noSuchMethod:dynamic Function(Invocation*)**/
+/*cfe|cfe:builder.member: B._identityHashCode:int**/
+/*cfe|cfe:builder.member: B.hashCode:int**/
+/*cfe|cfe:builder.member: B._simpleInstanceOfFalse:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: B._simpleInstanceOfTrue:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: B.==:bool* Function(dynamic)**/
 abstract class B {
   /*member: B.method:void Function(num*)**/
   void method(covariant num a);
 }
 
 /*class: C:C,Object*/
+/*cfe|cfe:builder.member: C.toString:String* Function()**/
+/*cfe|cfe:builder.member: C.runtimeType:Type**/
+/*cfe|cfe:builder.member: C._simpleInstanceOf:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: C._instanceOf:bool* Function(dynamic, dynamic, dynamic)**/
+/*cfe|cfe:builder.member: C.noSuchMethod:dynamic Function(Invocation*)**/
+/*cfe|cfe:builder.member: C._identityHashCode:int**/
+/*cfe|cfe:builder.member: C.hashCode:int**/
+/*cfe|cfe:builder.member: C._simpleInstanceOfFalse:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: C._simpleInstanceOfTrue:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: C.==:bool* Function(dynamic)**/
 abstract class C {
   /*member: C.method:void Function(int*)**/
   void method(covariant int a);
 }
 
 /*class: D1:A,B,C,D1,Object*/
+/*cfe|cfe:builder.member: D1.toString:String* Function()**/
+/*cfe|cfe:builder.member: D1.runtimeType:Type**/
+/*cfe|cfe:builder.member: D1._simpleInstanceOf:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: D1._instanceOf:bool* Function(dynamic, dynamic, dynamic)**/
+/*cfe|cfe:builder.member: D1.noSuchMethod:dynamic Function(Invocation*)**/
+/*cfe|cfe:builder.member: D1._identityHashCode:int**/
+/*cfe|cfe:builder.member: D1.hashCode:int**/
+/*cfe|cfe:builder.member: D1._simpleInstanceOfFalse:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: D1._simpleInstanceOfTrue:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: D1.==:bool* Function(dynamic)**/
 abstract class D1 implements A, B, C {
   /*member: D1.method:void Function(dynamic)**/
 }
 
 /*class: D2:A,B,D2,Object*/
+/*cfe|cfe:builder.member: D2.toString:String* Function()**/
+/*cfe|cfe:builder.member: D2.runtimeType:Type**/
+/*cfe|cfe:builder.member: D2._simpleInstanceOf:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: D2._instanceOf:bool* Function(dynamic, dynamic, dynamic)**/
+/*cfe|cfe:builder.member: D2.noSuchMethod:dynamic Function(Invocation*)**/
+/*cfe|cfe:builder.member: D2._identityHashCode:int**/
+/*cfe|cfe:builder.member: D2.hashCode:int**/
+/*cfe|cfe:builder.member: D2._simpleInstanceOfFalse:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: D2._simpleInstanceOfTrue:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: D2.==:bool* Function(dynamic)**/
 abstract class D2 implements A, B {
   /*member: D2.method:void Function(dynamic)**/
 }
 
 /*class: D3:B,C,D3,Object*/
+/*cfe|cfe:builder.member: D3.toString:String* Function()**/
+/*cfe|cfe:builder.member: D3.runtimeType:Type**/
+/*cfe|cfe:builder.member: D3._simpleInstanceOf:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: D3._instanceOf:bool* Function(dynamic, dynamic, dynamic)**/
+/*cfe|cfe:builder.member: D3.noSuchMethod:dynamic Function(Invocation*)**/
+/*cfe|cfe:builder.member: D3._identityHashCode:int**/
+/*cfe|cfe:builder.member: D3.hashCode:int**/
+/*cfe|cfe:builder.member: D3._simpleInstanceOfFalse:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: D3._simpleInstanceOfTrue:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: D3.==:bool* Function(dynamic)**/
 abstract class D3 implements B, C {
   /*member: D3.method:void Function(num*)**/
 }
 
 /*class: D4:B,C,D4,Object*/
+/*cfe|cfe:builder.member: D4.toString:String* Function()**/
+/*cfe|cfe:builder.member: D4.runtimeType:Type**/
+/*cfe|cfe:builder.member: D4._simpleInstanceOf:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: D4._instanceOf:bool* Function(dynamic, dynamic, dynamic)**/
+/*cfe|cfe:builder.member: D4.noSuchMethod:dynamic Function(Invocation*)**/
+/*cfe|cfe:builder.member: D4._identityHashCode:int**/
+/*cfe|cfe:builder.member: D4.hashCode:int**/
+/*cfe|cfe:builder.member: D4._simpleInstanceOfFalse:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: D4._simpleInstanceOfTrue:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: D4.==:bool* Function(dynamic)**/
 abstract class D4 implements C, B {
   /// TODO: Solve CFE / analyzer difference.
   /// In opt-out library we can choose any valid override, so the analyzer
@@ -49,28 +119,78 @@
 }
 
 /*class: D5:A,C,D5,Object*/
+/*cfe|cfe:builder.member: D5.toString:String* Function()**/
+/*cfe|cfe:builder.member: D5.runtimeType:Type**/
+/*cfe|cfe:builder.member: D5._simpleInstanceOf:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: D5._instanceOf:bool* Function(dynamic, dynamic, dynamic)**/
+/*cfe|cfe:builder.member: D5.noSuchMethod:dynamic Function(Invocation*)**/
+/*cfe|cfe:builder.member: D5._identityHashCode:int**/
+/*cfe|cfe:builder.member: D5.hashCode:int**/
+/*cfe|cfe:builder.member: D5._simpleInstanceOfFalse:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: D5._simpleInstanceOfTrue:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: D5.==:bool* Function(dynamic)**/
 abstract class D5 implements A, C {
   /*member: D5.method:void Function(dynamic)**/
 }
 
 /*class: E:E,Object*/
+/*cfe|cfe:builder.member: E.toString:String* Function()**/
+/*cfe|cfe:builder.member: E.runtimeType:Type**/
+/*cfe|cfe:builder.member: E._simpleInstanceOf:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: E._instanceOf:bool* Function(dynamic, dynamic, dynamic)**/
+/*cfe|cfe:builder.member: E.noSuchMethod:dynamic Function(Invocation*)**/
+/*cfe|cfe:builder.member: E._identityHashCode:int**/
+/*cfe|cfe:builder.member: E.hashCode:int**/
+/*cfe|cfe:builder.member: E._simpleInstanceOfFalse:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: E._simpleInstanceOfTrue:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: E.==:bool* Function(dynamic)**/
 abstract class E {
   /*member: E.method:void Function(num*)**/
   void method(num a);
 }
 
 /*class: F:F,Object*/
+/*cfe|cfe:builder.member: F.toString:String* Function()**/
+/*cfe|cfe:builder.member: F.runtimeType:Type**/
+/*cfe|cfe:builder.member: F._simpleInstanceOf:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: F._instanceOf:bool* Function(dynamic, dynamic, dynamic)**/
+/*cfe|cfe:builder.member: F.noSuchMethod:dynamic Function(Invocation*)**/
+/*cfe|cfe:builder.member: F._identityHashCode:int**/
+/*cfe|cfe:builder.member: F.hashCode:int**/
+/*cfe|cfe:builder.member: F._simpleInstanceOfFalse:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: F._simpleInstanceOfTrue:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: F.==:bool* Function(dynamic)**/
 abstract class F {
   /*member: F.method:void Function(int*)**/
   void method(covariant int a);
 }
 
 /*class: G1:E,F,G1,Object*/
+/*cfe|cfe:builder.member: G1.toString:String* Function()**/
+/*cfe|cfe:builder.member: G1.runtimeType:Type**/
+/*cfe|cfe:builder.member: G1._simpleInstanceOf:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: G1._instanceOf:bool* Function(dynamic, dynamic, dynamic)**/
+/*cfe|cfe:builder.member: G1.noSuchMethod:dynamic Function(Invocation*)**/
+/*cfe|cfe:builder.member: G1._identityHashCode:int**/
+/*cfe|cfe:builder.member: G1.hashCode:int**/
+/*cfe|cfe:builder.member: G1._simpleInstanceOfFalse:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: G1._simpleInstanceOfTrue:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: G1.==:bool* Function(dynamic)**/
 abstract class G1 implements E, F {
   /*member: G1.method:void Function(num*)**/
 }
 
 /*class: G2:E,F,G2,Object*/
+/*cfe|cfe:builder.member: G2.toString:String* Function()**/
+/*cfe|cfe:builder.member: G2.runtimeType:Type**/
+/*cfe|cfe:builder.member: G2._simpleInstanceOf:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: G2._instanceOf:bool* Function(dynamic, dynamic, dynamic)**/
+/*cfe|cfe:builder.member: G2.noSuchMethod:dynamic Function(Invocation*)**/
+/*cfe|cfe:builder.member: G2._identityHashCode:int**/
+/*cfe|cfe:builder.member: G2.hashCode:int**/
+/*cfe|cfe:builder.member: G2._simpleInstanceOfFalse:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: G2._simpleInstanceOfTrue:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: G2.==:bool* Function(dynamic)**/
 abstract class G2 implements F, E {
   /// TODO: Solve CFE / analyzer difference.
   /// In opt-out library we can choose any valid override, so the analyzer
diff --git a/pkg/_fe_analyzer_shared/test/inheritance/data/from_opt_in/main.dart b/pkg/_fe_analyzer_shared/test/inheritance/data/from_opt_in/main.dart
index ae5b1dbf..cc6f516 100644
--- a/pkg/_fe_analyzer_shared/test/inheritance/data/from_opt_in/main.dart
+++ b/pkg/_fe_analyzer_shared/test/inheritance/data/from_opt_in/main.dart
@@ -9,9 +9,29 @@
 import 'opt_in.dart';
 
 /*class: LegacyClass1:Class1,LegacyClass1,Object*/
+/*cfe|cfe:builder.member: LegacyClass1.toString:String* Function()**/
+/*cfe|cfe:builder.member: LegacyClass1.runtimeType:Type**/
+/*cfe|cfe:builder.member: LegacyClass1._simpleInstanceOf:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: LegacyClass1._instanceOf:bool* Function(dynamic, dynamic, dynamic)**/
+/*cfe|cfe:builder.member: LegacyClass1.noSuchMethod:dynamic Function(Invocation*)**/
+/*cfe|cfe:builder.member: LegacyClass1._identityHashCode:int**/
+/*cfe|cfe:builder.member: LegacyClass1.hashCode:int**/
+/*cfe|cfe:builder.member: LegacyClass1._simpleInstanceOfFalse:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: LegacyClass1._simpleInstanceOfTrue:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: LegacyClass1.==:bool* Function(dynamic)**/
 class LegacyClass1 extends Class1 {}
 
 /*class: LegacyClass2:Class2<T*>,LegacyClass2<T*>,Object*/
+/*cfe|cfe:builder.member: LegacyClass2.toString:String* Function()**/
+/*cfe|cfe:builder.member: LegacyClass2.runtimeType:Type**/
+/*cfe|cfe:builder.member: LegacyClass2._simpleInstanceOf:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: LegacyClass2._instanceOf:bool* Function(dynamic, dynamic, dynamic)**/
+/*cfe|cfe:builder.member: LegacyClass2.noSuchMethod:dynamic Function(Invocation*)**/
+/*cfe|cfe:builder.member: LegacyClass2._identityHashCode:int**/
+/*cfe|cfe:builder.member: LegacyClass2.hashCode:int**/
+/*cfe|cfe:builder.member: LegacyClass2._simpleInstanceOfFalse:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: LegacyClass2._simpleInstanceOfTrue:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: LegacyClass2.==:bool* Function(dynamic)**/
 class LegacyClass2<T> extends Class2<T> {}
 
 /*class: LegacyClass3a:
@@ -20,6 +40,16 @@
  LegacyClass3a<T*>,
  Object
 */
+/*cfe|cfe:builder.member: LegacyClass3a.toString:String* Function()**/
+/*cfe|cfe:builder.member: LegacyClass3a.runtimeType:Type**/
+/*cfe|cfe:builder.member: LegacyClass3a._simpleInstanceOf:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: LegacyClass3a._instanceOf:bool* Function(dynamic, dynamic, dynamic)**/
+/*cfe|cfe:builder.member: LegacyClass3a.noSuchMethod:dynamic Function(Invocation*)**/
+/*cfe|cfe:builder.member: LegacyClass3a._identityHashCode:int**/
+/*cfe|cfe:builder.member: LegacyClass3a.hashCode:int**/
+/*cfe|cfe:builder.member: LegacyClass3a._simpleInstanceOfFalse:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: LegacyClass3a._simpleInstanceOfTrue:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: LegacyClass3a.==:bool* Function(dynamic)**/
 class LegacyClass3a<T> extends Class3<T> {}
 
 /*class: LegacyClass3b:
@@ -28,24 +58,84 @@
  LegacyClass3b<T*>,
  Object
 */
+/*cfe|cfe:builder.member: LegacyClass3b.toString:String* Function()**/
+/*cfe|cfe:builder.member: LegacyClass3b.runtimeType:Type**/
+/*cfe|cfe:builder.member: LegacyClass3b._simpleInstanceOf:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: LegacyClass3b._instanceOf:bool* Function(dynamic, dynamic, dynamic)**/
+/*cfe|cfe:builder.member: LegacyClass3b.noSuchMethod:dynamic Function(Invocation*)**/
+/*cfe|cfe:builder.member: LegacyClass3b._identityHashCode:int**/
+/*cfe|cfe:builder.member: LegacyClass3b.hashCode:int**/
+/*cfe|cfe:builder.member: LegacyClass3b._simpleInstanceOfFalse:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: LegacyClass3b._simpleInstanceOfTrue:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: LegacyClass3b.==:bool* Function(dynamic)**/
 class LegacyClass3b<T> extends Class3<T> implements GenericInterface<T> {}
 
 /*class: LegacyClass4a:Class4a,GenericInterface<num*>,LegacyClass4a,Object*/
+/*cfe|cfe:builder.member: LegacyClass4a.toString:String* Function()**/
+/*cfe|cfe:builder.member: LegacyClass4a.runtimeType:Type**/
+/*cfe|cfe:builder.member: LegacyClass4a._simpleInstanceOf:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: LegacyClass4a._instanceOf:bool* Function(dynamic, dynamic, dynamic)**/
+/*cfe|cfe:builder.member: LegacyClass4a.noSuchMethod:dynamic Function(Invocation*)**/
+/*cfe|cfe:builder.member: LegacyClass4a._identityHashCode:int**/
+/*cfe|cfe:builder.member: LegacyClass4a.hashCode:int**/
+/*cfe|cfe:builder.member: LegacyClass4a._simpleInstanceOfFalse:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: LegacyClass4a._simpleInstanceOfTrue:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: LegacyClass4a.==:bool* Function(dynamic)**/
 class LegacyClass4a extends Class4a {}
 
 /*class: LegacyClass4b:GenericInterface<num*>,LegacyClass4b,Object*/
+/*cfe|cfe:builder.member: LegacyClass4b.toString:String* Function()**/
+/*cfe|cfe:builder.member: LegacyClass4b.runtimeType:Type**/
+/*cfe|cfe:builder.member: LegacyClass4b._simpleInstanceOf:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: LegacyClass4b._instanceOf:bool* Function(dynamic, dynamic, dynamic)**/
+/*cfe|cfe:builder.member: LegacyClass4b.noSuchMethod:dynamic Function(Invocation*)**/
+/*cfe|cfe:builder.member: LegacyClass4b._identityHashCode:int**/
+/*cfe|cfe:builder.member: LegacyClass4b.hashCode:int**/
+/*cfe|cfe:builder.member: LegacyClass4b._simpleInstanceOfFalse:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: LegacyClass4b._simpleInstanceOfTrue:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: LegacyClass4b.==:bool* Function(dynamic)**/
 class LegacyClass4b implements GenericInterface<num> {}
 
 /*class: LegacyClass4c:Class4a,GenericInterface<num*>,LegacyClass4c,Object*/
+/*cfe|cfe:builder.member: LegacyClass4c.toString:String* Function()**/
+/*cfe|cfe:builder.member: LegacyClass4c.runtimeType:Type**/
+/*cfe|cfe:builder.member: LegacyClass4c._simpleInstanceOf:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: LegacyClass4c._instanceOf:bool* Function(dynamic, dynamic, dynamic)**/
+/*cfe|cfe:builder.member: LegacyClass4c.noSuchMethod:dynamic Function(Invocation*)**/
+/*cfe|cfe:builder.member: LegacyClass4c._identityHashCode:int**/
+/*cfe|cfe:builder.member: LegacyClass4c.hashCode:int**/
+/*cfe|cfe:builder.member: LegacyClass4c._simpleInstanceOfFalse:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: LegacyClass4c._simpleInstanceOfTrue:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: LegacyClass4c.==:bool* Function(dynamic)**/
 class LegacyClass4c extends Class4a implements GenericInterface<num> {}
 
 /*class: LegacyClass4d:Class4a,Class4b,GenericInterface<num*>,LegacyClass4d,Object*/
+/*cfe|cfe:builder.member: LegacyClass4d.toString:String* Function()**/
+/*cfe|cfe:builder.member: LegacyClass4d.runtimeType:Type**/
+/*cfe|cfe:builder.member: LegacyClass4d._simpleInstanceOf:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: LegacyClass4d._instanceOf:bool* Function(dynamic, dynamic, dynamic)**/
+/*cfe|cfe:builder.member: LegacyClass4d.noSuchMethod:dynamic Function(Invocation*)**/
+/*cfe|cfe:builder.member: LegacyClass4d._identityHashCode:int**/
+/*cfe|cfe:builder.member: LegacyClass4d.hashCode:int**/
+/*cfe|cfe:builder.member: LegacyClass4d._simpleInstanceOfFalse:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: LegacyClass4d._simpleInstanceOfTrue:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: LegacyClass4d.==:bool* Function(dynamic)**/
 class LegacyClass4d implements Class4a, Class4b {}
 
 /*class: LegacyClass5:Class5,GenericInterface<dynamic>,LegacyClass5,Object*/
 /*analyzer.error: CompileTimeErrorCode.CONFLICTING_GENERIC_INTERFACES*/
 class
 /*cfe|cfe:builder.error: AmbiguousSupertypes*/
+    /*cfe|cfe:builder.member: LegacyClass5.toString:String* Function()**/
+/*cfe|cfe:builder.member: LegacyClass5.runtimeType:Type**/
+/*cfe|cfe:builder.member: LegacyClass5._simpleInstanceOf:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: LegacyClass5._instanceOf:bool* Function(dynamic, dynamic, dynamic)**/
+/*cfe|cfe:builder.member: LegacyClass5.noSuchMethod:dynamic Function(Invocation*)**/
+/*cfe|cfe:builder.member: LegacyClass5._identityHashCode:int**/
+/*cfe|cfe:builder.member: LegacyClass5.hashCode:int**/
+/*cfe|cfe:builder.member: LegacyClass5._simpleInstanceOfFalse:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: LegacyClass5._simpleInstanceOfTrue:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: LegacyClass5.==:bool* Function(dynamic)**/
     LegacyClass5 extends Class5 implements GenericInterface<Object> {}
 
 /*class: LegacyClass6a:
@@ -55,6 +145,16 @@
  LegacyClass6a<T*>,
  Object
 */
+/*cfe|cfe:builder.member: LegacyClass6a.toString:String* Function()**/
+/*cfe|cfe:builder.member: LegacyClass6a.runtimeType:Type**/
+/*cfe|cfe:builder.member: LegacyClass6a._simpleInstanceOf:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: LegacyClass6a._instanceOf:bool* Function(dynamic, dynamic, dynamic)**/
+/*cfe|cfe:builder.member: LegacyClass6a.noSuchMethod:dynamic Function(Invocation*)**/
+/*cfe|cfe:builder.member: LegacyClass6a._identityHashCode:int**/
+/*cfe|cfe:builder.member: LegacyClass6a.hashCode:int**/
+/*cfe|cfe:builder.member: LegacyClass6a._simpleInstanceOfFalse:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: LegacyClass6a._simpleInstanceOfTrue:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: LegacyClass6a.==:bool* Function(dynamic)**/
 class LegacyClass6a<T> extends Class3<T> implements GenericSubInterface<T> {}
 
 /*class: LegacyClass6b:
@@ -65,5 +165,15 @@
  LegacyClass6b<T*>,
  Object
 */
+/*cfe|cfe:builder.member: LegacyClass6b.toString:String* Function()**/
+/*cfe|cfe:builder.member: LegacyClass6b.runtimeType:Type**/
+/*cfe|cfe:builder.member: LegacyClass6b._simpleInstanceOf:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: LegacyClass6b._instanceOf:bool* Function(dynamic, dynamic, dynamic)**/
+/*cfe|cfe:builder.member: LegacyClass6b.noSuchMethod:dynamic Function(Invocation*)**/
+/*cfe|cfe:builder.member: LegacyClass6b._identityHashCode:int**/
+/*cfe|cfe:builder.member: LegacyClass6b.hashCode:int**/
+/*cfe|cfe:builder.member: LegacyClass6b._simpleInstanceOfFalse:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: LegacyClass6b._simpleInstanceOfTrue:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: LegacyClass6b.==:bool* Function(dynamic)**/
 class LegacyClass6b<T> extends LegacyClass3a<T>
     implements GenericSubInterface<T> {}
diff --git a/pkg/_fe_analyzer_shared/test/inheritance/data/from_opt_out/main.dart b/pkg/_fe_analyzer_shared/test/inheritance/data/from_opt_out/main.dart
index f65a1e6..af9ddc5 100644
--- a/pkg/_fe_analyzer_shared/test/inheritance/data/from_opt_out/main.dart
+++ b/pkg/_fe_analyzer_shared/test/inheritance/data/from_opt_out/main.dart
@@ -7,25 +7,87 @@
 import 'opt_out.dart';
 
 /*class: Class1:Class1,LegacyClass1,Object*/
+/*cfe|cfe:builder.member: Class1.toString:String* Function()**/
+/*cfe|cfe:builder.member: Class1.runtimeType:Type**/
+/*cfe|cfe:builder.member: Class1._simpleInstanceOf:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: Class1._instanceOf:bool* Function(dynamic, dynamic, dynamic)**/
+/*cfe|cfe:builder.member: Class1.noSuchMethod:dynamic Function(Invocation*)**/
+/*cfe|cfe:builder.member: Class1._identityHashCode:int**/
+/*cfe|cfe:builder.member: Class1.hashCode:int**/
+/*cfe|cfe:builder.member: Class1._simpleInstanceOfFalse:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: Class1._simpleInstanceOfTrue:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: Class1.==:bool* Function(dynamic)**/
 class Class1 extends LegacyClass1 {}
 
 /*class: Class2:Class2<T>,LegacyClass2<T>,Object*/
+/*cfe|cfe:builder.member: Class2.toString:String* Function()**/
+/*cfe|cfe:builder.member: Class2.runtimeType:Type**/
+/*cfe|cfe:builder.member: Class2._simpleInstanceOf:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: Class2._instanceOf:bool* Function(dynamic, dynamic, dynamic)**/
+/*cfe|cfe:builder.member: Class2.noSuchMethod:dynamic Function(Invocation*)**/
+/*cfe|cfe:builder.member: Class2._identityHashCode:int**/
+/*cfe|cfe:builder.member: Class2.hashCode:int**/
+/*cfe|cfe:builder.member: Class2._simpleInstanceOfFalse:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: Class2._simpleInstanceOfTrue:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: Class2.==:bool* Function(dynamic)**/
 class Class2<T> extends LegacyClass2<T> {}
 
 /*class: Class3a:Class3a<T>,GenericInterface<T*>,LegacyClass3<T>,Object*/
+/*cfe|cfe:builder.member: Class3a.toString:String* Function()**/
+/*cfe|cfe:builder.member: Class3a.runtimeType:Type**/
+/*cfe|cfe:builder.member: Class3a._simpleInstanceOf:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: Class3a._instanceOf:bool* Function(dynamic, dynamic, dynamic)**/
+/*cfe|cfe:builder.member: Class3a.noSuchMethod:dynamic Function(Invocation*)**/
+/*cfe|cfe:builder.member: Class3a._identityHashCode:int**/
+/*cfe|cfe:builder.member: Class3a.hashCode:int**/
+/*cfe|cfe:builder.member: Class3a._simpleInstanceOfFalse:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: Class3a._simpleInstanceOfTrue:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: Class3a.==:bool* Function(dynamic)**/
 class Class3a<T> extends LegacyClass3<T> {}
 
 /*class: Class3b:Class3b<T>,GenericInterface<T>,LegacyClass3<T>,Object*/
+/*cfe|cfe:builder.member: Class3b.toString:String* Function()**/
+/*cfe|cfe:builder.member: Class3b.runtimeType:Type**/
+/*cfe|cfe:builder.member: Class3b._simpleInstanceOf:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: Class3b._instanceOf:bool* Function(dynamic, dynamic, dynamic)**/
+/*cfe|cfe:builder.member: Class3b.noSuchMethod:dynamic Function(Invocation*)**/
+/*cfe|cfe:builder.member: Class3b._identityHashCode:int**/
+/*cfe|cfe:builder.member: Class3b.hashCode:int**/
+/*cfe|cfe:builder.member: Class3b._simpleInstanceOfFalse:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: Class3b._simpleInstanceOfTrue:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: Class3b.==:bool* Function(dynamic)**/
 class Class3b<T> extends LegacyClass3<T> implements GenericInterface<T> {}
 
 /*class: Class4a:Class4a,GenericInterface<num*>,LegacyClass4,Object*/
+/*cfe|cfe:builder.member: Class4a.toString:String* Function()**/
+/*cfe|cfe:builder.member: Class4a.runtimeType:Type**/
+/*cfe|cfe:builder.member: Class4a._simpleInstanceOf:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: Class4a._instanceOf:bool* Function(dynamic, dynamic, dynamic)**/
+/*cfe|cfe:builder.member: Class4a.noSuchMethod:dynamic Function(Invocation*)**/
+/*cfe|cfe:builder.member: Class4a._identityHashCode:int**/
+/*cfe|cfe:builder.member: Class4a.hashCode:int**/
+/*cfe|cfe:builder.member: Class4a._simpleInstanceOfFalse:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: Class4a._simpleInstanceOfTrue:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: Class4a.==:bool* Function(dynamic)**/
 class Class4a extends LegacyClass4 {}
 
 /*class: Class4b:Class4b,GenericInterface<num>,Object*/
+/*cfe|cfe:builder.member: Class4b.==:bool* Function(dynamic)*/
 class Class4b implements GenericInterface<num> {}
 
 /*class: Class4c:Class4c,GenericInterface<num?>,Object*/
+/*cfe|cfe:builder.member: Class4c.==:bool* Function(dynamic)*/
 class Class4c implements GenericInterface<num?> {}
 
 /*class: Class4d:Class4d,GenericInterface<num>,LegacyClass4,Object*/
+/*cfe|cfe:builder.member: Class4d.toString:String* Function()**/
+/*cfe|cfe:builder.member: Class4d.runtimeType:Type**/
+/*cfe|cfe:builder.member: Class4d._simpleInstanceOf:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: Class4d._instanceOf:bool* Function(dynamic, dynamic, dynamic)**/
+/*cfe|cfe:builder.member: Class4d.noSuchMethod:dynamic Function(Invocation*)**/
+/*cfe|cfe:builder.member: Class4d._identityHashCode:int**/
+/*cfe|cfe:builder.member: Class4d.hashCode:int**/
+/*cfe|cfe:builder.member: Class4d._simpleInstanceOfFalse:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: Class4d._simpleInstanceOfTrue:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: Class4d.==:bool* Function(dynamic)**/
 class Class4d extends LegacyClass4 implements GenericInterface<num> {}
diff --git a/pkg/_fe_analyzer_shared/test/inheritance/data/from_opt_out/opt_out.dart b/pkg/_fe_analyzer_shared/test/inheritance/data/from_opt_out/opt_out.dart
index 93b337e..18b183d 100644
--- a/pkg/_fe_analyzer_shared/test/inheritance/data/from_opt_out/opt_out.dart
+++ b/pkg/_fe_analyzer_shared/test/inheritance/data/from_opt_out/opt_out.dart
@@ -7,6 +7,16 @@
 /*library: nnbd=false*/
 
 /*class: GenericInterface:GenericInterface<T*>,Object*/
+/*cfe|cfe:builder.member: GenericInterface.toString:String* Function()**/
+/*cfe|cfe:builder.member: GenericInterface.runtimeType:Type**/
+/*cfe|cfe:builder.member: GenericInterface._simpleInstanceOf:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: GenericInterface._instanceOf:bool* Function(dynamic, dynamic, dynamic)**/
+/*cfe|cfe:builder.member: GenericInterface.noSuchMethod:dynamic Function(Invocation*)**/
+/*cfe|cfe:builder.member: GenericInterface._identityHashCode:int**/
+/*cfe|cfe:builder.member: GenericInterface.hashCode:int**/
+/*cfe|cfe:builder.member: GenericInterface._simpleInstanceOfFalse:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: GenericInterface._simpleInstanceOfTrue:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: GenericInterface.==:bool* Function(dynamic)**/
 abstract class GenericInterface<T> {}
 
 /*class: GenericSubInterface:
@@ -14,18 +24,68 @@
  GenericSubInterface<T*>,
  Object
 */
+/*cfe|cfe:builder.member: GenericSubInterface.toString:String* Function()**/
+/*cfe|cfe:builder.member: GenericSubInterface.runtimeType:Type**/
+/*cfe|cfe:builder.member: GenericSubInterface._simpleInstanceOf:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: GenericSubInterface._instanceOf:bool* Function(dynamic, dynamic, dynamic)**/
+/*cfe|cfe:builder.member: GenericSubInterface.noSuchMethod:dynamic Function(Invocation*)**/
+/*cfe|cfe:builder.member: GenericSubInterface._identityHashCode:int**/
+/*cfe|cfe:builder.member: GenericSubInterface.hashCode:int**/
+/*cfe|cfe:builder.member: GenericSubInterface._simpleInstanceOfFalse:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: GenericSubInterface._simpleInstanceOfTrue:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: GenericSubInterface.==:bool* Function(dynamic)**/
 abstract class GenericSubInterface<T> implements GenericInterface<T> {}
 
 /*class: LegacyClass1:LegacyClass1,Object*/
+/*cfe|cfe:builder.member: LegacyClass1.toString:String* Function()**/
+/*cfe|cfe:builder.member: LegacyClass1.runtimeType:Type**/
+/*cfe|cfe:builder.member: LegacyClass1._simpleInstanceOf:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: LegacyClass1._instanceOf:bool* Function(dynamic, dynamic, dynamic)**/
+/*cfe|cfe:builder.member: LegacyClass1.noSuchMethod:dynamic Function(Invocation*)**/
+/*cfe|cfe:builder.member: LegacyClass1._identityHashCode:int**/
+/*cfe|cfe:builder.member: LegacyClass1.hashCode:int**/
+/*cfe|cfe:builder.member: LegacyClass1._simpleInstanceOfFalse:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: LegacyClass1._simpleInstanceOfTrue:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: LegacyClass1.==:bool* Function(dynamic)**/
 class LegacyClass1 {}
 
 /*class: LegacyClass2:LegacyClass2<T*>,Object*/
+/*cfe|cfe:builder.member: LegacyClass2.toString:String* Function()**/
+/*cfe|cfe:builder.member: LegacyClass2.runtimeType:Type**/
+/*cfe|cfe:builder.member: LegacyClass2._simpleInstanceOf:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: LegacyClass2._instanceOf:bool* Function(dynamic, dynamic, dynamic)**/
+/*cfe|cfe:builder.member: LegacyClass2.noSuchMethod:dynamic Function(Invocation*)**/
+/*cfe|cfe:builder.member: LegacyClass2._identityHashCode:int**/
+/*cfe|cfe:builder.member: LegacyClass2.hashCode:int**/
+/*cfe|cfe:builder.member: LegacyClass2._simpleInstanceOfFalse:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: LegacyClass2._simpleInstanceOfTrue:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: LegacyClass2.==:bool* Function(dynamic)**/
 class LegacyClass2<T> {}
 
 /*class: LegacyClass3:GenericInterface<T*>,LegacyClass3<T*>,Object*/
+/*cfe|cfe:builder.member: LegacyClass3.toString:String* Function()**/
+/*cfe|cfe:builder.member: LegacyClass3.runtimeType:Type**/
+/*cfe|cfe:builder.member: LegacyClass3._simpleInstanceOf:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: LegacyClass3._instanceOf:bool* Function(dynamic, dynamic, dynamic)**/
+/*cfe|cfe:builder.member: LegacyClass3.noSuchMethod:dynamic Function(Invocation*)**/
+/*cfe|cfe:builder.member: LegacyClass3._identityHashCode:int**/
+/*cfe|cfe:builder.member: LegacyClass3.hashCode:int**/
+/*cfe|cfe:builder.member: LegacyClass3._simpleInstanceOfFalse:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: LegacyClass3._simpleInstanceOfTrue:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: LegacyClass3.==:bool* Function(dynamic)**/
 class LegacyClass3<T> implements GenericInterface<T> {}
 
 /*class: LegacyClass4:GenericInterface<num*>,LegacyClass4,Object*/
+/*cfe|cfe:builder.member: LegacyClass4.toString:String* Function()**/
+/*cfe|cfe:builder.member: LegacyClass4.runtimeType:Type**/
+/*cfe|cfe:builder.member: LegacyClass4._simpleInstanceOf:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: LegacyClass4._instanceOf:bool* Function(dynamic, dynamic, dynamic)**/
+/*cfe|cfe:builder.member: LegacyClass4.noSuchMethod:dynamic Function(Invocation*)**/
+/*cfe|cfe:builder.member: LegacyClass4._identityHashCode:int**/
+/*cfe|cfe:builder.member: LegacyClass4.hashCode:int**/
+/*cfe|cfe:builder.member: LegacyClass4._simpleInstanceOfFalse:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: LegacyClass4._simpleInstanceOfTrue:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: LegacyClass4.==:bool* Function(dynamic)**/
 class LegacyClass4 implements GenericInterface<num> {}
 
 /*class: LegacyClass5:
@@ -34,9 +94,29 @@
  LegacyClass5<T*>,
  Object
 */
+/*cfe|cfe:builder.member: LegacyClass5.toString:String* Function()**/
+/*cfe|cfe:builder.member: LegacyClass5.runtimeType:Type**/
+/*cfe|cfe:builder.member: LegacyClass5._simpleInstanceOf:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: LegacyClass5._instanceOf:bool* Function(dynamic, dynamic, dynamic)**/
+/*cfe|cfe:builder.member: LegacyClass5.noSuchMethod:dynamic Function(Invocation*)**/
+/*cfe|cfe:builder.member: LegacyClass5._identityHashCode:int**/
+/*cfe|cfe:builder.member: LegacyClass5.hashCode:int**/
+/*cfe|cfe:builder.member: LegacyClass5._simpleInstanceOfFalse:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: LegacyClass5._simpleInstanceOfTrue:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: LegacyClass5.==:bool* Function(dynamic)**/
 class LegacyClass5<T> extends LegacyClass3<T> implements GenericInterface<T> {}
 
 /*class: LegacyClass6:GenericInterface<T*>,LegacyClass3<T*>,LegacyClass6<T*>,Object*/
+/*cfe|cfe:builder.member: LegacyClass6.toString:String* Function()**/
+/*cfe|cfe:builder.member: LegacyClass6.runtimeType:Type**/
+/*cfe|cfe:builder.member: LegacyClass6._simpleInstanceOf:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: LegacyClass6._instanceOf:bool* Function(dynamic, dynamic, dynamic)**/
+/*cfe|cfe:builder.member: LegacyClass6.noSuchMethod:dynamic Function(Invocation*)**/
+/*cfe|cfe:builder.member: LegacyClass6._identityHashCode:int**/
+/*cfe|cfe:builder.member: LegacyClass6.hashCode:int**/
+/*cfe|cfe:builder.member: LegacyClass6._simpleInstanceOfFalse:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: LegacyClass6._simpleInstanceOfTrue:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: LegacyClass6.==:bool* Function(dynamic)**/
 class LegacyClass6<T> extends Object
     with LegacyClass3<T>
     implements GenericInterface<T> {}
@@ -48,10 +128,30 @@
  LegacyClass7<T*>,
  Object
 */
+/*cfe|cfe:builder.member: LegacyClass7.toString:String* Function()**/
+/*cfe|cfe:builder.member: LegacyClass7.runtimeType:Type**/
+/*cfe|cfe:builder.member: LegacyClass7._simpleInstanceOf:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: LegacyClass7._instanceOf:bool* Function(dynamic, dynamic, dynamic)**/
+/*cfe|cfe:builder.member: LegacyClass7.noSuchMethod:dynamic Function(Invocation*)**/
+/*cfe|cfe:builder.member: LegacyClass7._identityHashCode:int**/
+/*cfe|cfe:builder.member: LegacyClass7.hashCode:int**/
+/*cfe|cfe:builder.member: LegacyClass7._simpleInstanceOfFalse:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: LegacyClass7._simpleInstanceOfTrue:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: LegacyClass7.==:bool* Function(dynamic)**/
 class LegacyClass7<T> extends LegacyClass3<T>
     implements GenericSubInterface<T> {}
 
 /*class: LegacyClass8:GenericInterface<T*>,GenericSubInterface<T*>,LegacyClass3<T*>,LegacyClass8<T*>,Object*/
+/*cfe|cfe:builder.member: LegacyClass8.toString:String* Function()**/
+/*cfe|cfe:builder.member: LegacyClass8.runtimeType:Type**/
+/*cfe|cfe:builder.member: LegacyClass8._simpleInstanceOf:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: LegacyClass8._instanceOf:bool* Function(dynamic, dynamic, dynamic)**/
+/*cfe|cfe:builder.member: LegacyClass8.noSuchMethod:dynamic Function(Invocation*)**/
+/*cfe|cfe:builder.member: LegacyClass8._identityHashCode:int**/
+/*cfe|cfe:builder.member: LegacyClass8.hashCode:int**/
+/*cfe|cfe:builder.member: LegacyClass8._simpleInstanceOfFalse:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: LegacyClass8._simpleInstanceOfTrue:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: LegacyClass8.==:bool* Function(dynamic)**/
 class LegacyClass8<T> extends Object
     with LegacyClass3<T>
     implements GenericSubInterface<T> {}
diff --git a/pkg/_fe_analyzer_shared/test/inheritance/data/generic_members_from_opt_in/main.dart b/pkg/_fe_analyzer_shared/test/inheritance/data/generic_members_from_opt_in/main.dart
index 673553b..3857d0f 100644
--- a/pkg/_fe_analyzer_shared/test/inheritance/data/generic_members_from_opt_in/main.dart
+++ b/pkg/_fe_analyzer_shared/test/inheritance/data/generic_members_from_opt_in/main.dart
@@ -9,12 +9,32 @@
 import 'opt_in.dart';
 
 /*class: MapImpl:Map<K*, V*>,MapImpl<K*, V*>,Object*/
+/*cfe|cfe:builder.member: MapImpl.toString:String* Function()**/
+/*cfe|cfe:builder.member: MapImpl.runtimeType:Type**/
+/*cfe|cfe:builder.member: MapImpl._simpleInstanceOf:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: MapImpl._instanceOf:bool* Function(dynamic, dynamic, dynamic)**/
+/*cfe|cfe:builder.member: MapImpl.noSuchMethod:dynamic Function(Invocation*)**/
+/*cfe|cfe:builder.member: MapImpl._identityHashCode:int**/
+/*cfe|cfe:builder.member: MapImpl.hashCode:int**/
+/*cfe|cfe:builder.member: MapImpl._simpleInstanceOfFalse:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: MapImpl._simpleInstanceOfTrue:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: MapImpl.==:bool* Function(dynamic)**/
 abstract class MapImpl<K, V> implements Map<K, V> {
   /*member: MapImpl.map:Map<K2*, V2*>* Function<K2, V2>(MapEntry<K2*, V2*>* Function(K*, V*)*)**/
   Map<K2, V2> map<K2, V2>(MapEntry<K2, V2> Function(K key, V value) f);
 }
 
 /*class: FixedMapImpl:FixedMapImpl,Map<int*, String*>,Object*/
+/*cfe|cfe:builder.member: FixedMapImpl.toString:String* Function()**/
+/*cfe|cfe:builder.member: FixedMapImpl.runtimeType:Type**/
+/*cfe|cfe:builder.member: FixedMapImpl._simpleInstanceOf:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: FixedMapImpl._instanceOf:bool* Function(dynamic, dynamic, dynamic)**/
+/*cfe|cfe:builder.member: FixedMapImpl.noSuchMethod:dynamic Function(Invocation*)**/
+/*cfe|cfe:builder.member: FixedMapImpl._identityHashCode:int**/
+/*cfe|cfe:builder.member: FixedMapImpl.hashCode:int**/
+/*cfe|cfe:builder.member: FixedMapImpl._simpleInstanceOfFalse:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: FixedMapImpl._simpleInstanceOfTrue:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: FixedMapImpl.==:bool* Function(dynamic)**/
 abstract class FixedMapImpl implements Map<int, String> {
   /*member: FixedMapImpl.map:Map<K2*, V2*>* Function<K2, V2>(MapEntry<K2*, V2*>* Function(int*, String*)*)**/
   Map<K2, V2> map<K2, V2>(MapEntry<K2, V2> Function(int key, String value) f);
diff --git a/pkg/_fe_analyzer_shared/test/inheritance/data/generic_members_from_opt_out/main.dart b/pkg/_fe_analyzer_shared/test/inheritance/data/generic_members_from_opt_out/main.dart
index cd53607..ca31ab8 100644
--- a/pkg/_fe_analyzer_shared/test/inheritance/data/generic_members_from_opt_out/main.dart
+++ b/pkg/_fe_analyzer_shared/test/inheritance/data/generic_members_from_opt_out/main.dart
@@ -7,12 +7,14 @@
 import 'opt_out.dart';
 
 /*class: MapImpl:Map<K, V>,MapImpl<K, V>,Object*/
+/*cfe|cfe:builder.member: MapImpl.==:bool* Function(dynamic)*/
 abstract class MapImpl<K, V> implements Map<K, V> {
   /*member: MapImpl.map:Map<K2, V2> Function<K2, V2>(MapEntry<K2, V2> Function(K, V))*/
   Map<K2, V2> map<K2, V2>(MapEntry<K2, V2> Function(K key, V value) f);
 }
 
 /*class: FixedMapImpl:FixedMapImpl,Map<int, String?>,Object*/
+/*cfe|cfe:builder.member: FixedMapImpl.==:bool* Function(dynamic)*/
 abstract class FixedMapImpl implements Map<int, String?> {
   /*member: FixedMapImpl.map:Map<K2, V2> Function<K2, V2>(MapEntry<K2, V2> Function(int, String?))*/
   Map<K2, V2> map<K2, V2>(MapEntry<K2, V2> Function(int key, String? value) f);
diff --git a/pkg/_fe_analyzer_shared/test/inheritance/data/generic_members_from_opt_out/opt_out.dart b/pkg/_fe_analyzer_shared/test/inheritance/data/generic_members_from_opt_out/opt_out.dart
index 24926e7..929793b 100644
--- a/pkg/_fe_analyzer_shared/test/inheritance/data/generic_members_from_opt_out/opt_out.dart
+++ b/pkg/_fe_analyzer_shared/test/inheritance/data/generic_members_from_opt_out/opt_out.dart
@@ -7,10 +7,30 @@
 // @dart=2.5
 
 /*class: Map:Map<K*, V*>,Object*/
+/*cfe|cfe:builder.member: Map.toString:String* Function()**/
+/*cfe|cfe:builder.member: Map.runtimeType:Type**/
+/*cfe|cfe:builder.member: Map._simpleInstanceOf:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: Map._instanceOf:bool* Function(dynamic, dynamic, dynamic)**/
+/*cfe|cfe:builder.member: Map.noSuchMethod:dynamic Function(Invocation*)**/
+/*cfe|cfe:builder.member: Map._identityHashCode:int**/
+/*cfe|cfe:builder.member: Map.hashCode:int**/
+/*cfe|cfe:builder.member: Map._simpleInstanceOfFalse:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: Map._simpleInstanceOfTrue:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: Map.==:bool* Function(dynamic)**/
 abstract class Map<K, V> {
   /*member: Map.map:Map<K2*, V2*>* Function<K2, V2>(MapEntry<K2*, V2*>* Function(K*, V*)*)**/
   Map<K2, V2> map<K2, V2>(MapEntry<K2, V2> Function(K key, V value) f);
 }
 
 /*class: MapEntry:MapEntry<K*, V*>,Object*/
+/*cfe|cfe:builder.member: MapEntry.toString:String* Function()**/
+/*cfe|cfe:builder.member: MapEntry.runtimeType:Type**/
+/*cfe|cfe:builder.member: MapEntry._simpleInstanceOf:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: MapEntry._instanceOf:bool* Function(dynamic, dynamic, dynamic)**/
+/*cfe|cfe:builder.member: MapEntry.noSuchMethod:dynamic Function(Invocation*)**/
+/*cfe|cfe:builder.member: MapEntry._identityHashCode:int**/
+/*cfe|cfe:builder.member: MapEntry.hashCode:int**/
+/*cfe|cfe:builder.member: MapEntry._simpleInstanceOfFalse:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: MapEntry._simpleInstanceOfTrue:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: MapEntry.==:bool* Function(dynamic)**/
 abstract class MapEntry<K, V> {}
diff --git a/pkg/_fe_analyzer_shared/test/inheritance/data/in_out_in/main.dart b/pkg/_fe_analyzer_shared/test/inheritance/data/in_out_in/main.dart
index cdf272f..c394d3f 100644
--- a/pkg/_fe_analyzer_shared/test/inheritance/data/in_out_in/main.dart
+++ b/pkg/_fe_analyzer_shared/test/inheritance/data/in_out_in/main.dart
@@ -8,34 +8,94 @@
 import 'opt_out.dart';
 
 /*class: SubClass1:Class,Interface,LegacyClass1,Object,SubClass1*/
+/*cfe|cfe:builder.member: SubClass1.toString:String* Function()**/
+/*cfe|cfe:builder.member: SubClass1.runtimeType:Type**/
+/*cfe|cfe:builder.member: SubClass1._simpleInstanceOf:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: SubClass1._instanceOf:bool* Function(dynamic, dynamic, dynamic)**/
+/*cfe|cfe:builder.member: SubClass1.noSuchMethod:dynamic Function(Invocation*)**/
+/*cfe|cfe:builder.member: SubClass1._identityHashCode:int**/
+/*cfe|cfe:builder.member: SubClass1.hashCode:int**/
+/*cfe|cfe:builder.member: SubClass1._simpleInstanceOfFalse:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: SubClass1._simpleInstanceOfTrue:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: SubClass1.==:bool* Function(dynamic)**/
 class SubClass1 extends LegacyClass1 {
   /*member: SubClass1.method:int* Function(int*)**/
 }
 
 /*class: SubClass2:Class,Interface,LegacyClass2,Object,SubClass2*/
+/*cfe|cfe:builder.member: SubClass2.toString:String Function()*/
+/*cfe|cfe:builder.member: SubClass2.runtimeType:Type*/
+/*cfe|cfe:builder.member: SubClass2._simpleInstanceOf:bool Function(dynamic)*/
+/*cfe|cfe:builder.member: SubClass2._instanceOf:bool Function(dynamic, dynamic, dynamic)*/
+/*cfe|cfe:builder.member: SubClass2.noSuchMethod:dynamic Function(Invocation)*/
+/*cfe|cfe:builder.member: SubClass2._identityHashCode:int*/
+/*cfe|cfe:builder.member: SubClass2.hashCode:int*/
+/*cfe|cfe:builder.member: SubClass2._simpleInstanceOfFalse:bool Function(dynamic)*/
+/*cfe|cfe:builder.member: SubClass2._simpleInstanceOfTrue:bool Function(dynamic)*/
+/*cfe|cfe:builder.member: SubClass2.==:bool* Function(dynamic)**/
 class SubClass2 extends LegacyClass2 implements Interface {
   /*member: SubClass2.method:int? Function(int)*/
 }
 
 /*class: GenericSubClass1a:GenericClass1,GenericInterface<int?>,GenericLegacyClass1a,GenericSubClass1a,Object*/
+/*cfe|cfe:builder.member: GenericSubClass1a.toString:String Function()*/
+/*cfe|cfe:builder.member: GenericSubClass1a.runtimeType:Type*/
+/*cfe|cfe:builder.member: GenericSubClass1a._simpleInstanceOf:bool Function(dynamic)*/
+/*cfe|cfe:builder.member: GenericSubClass1a._instanceOf:bool Function(dynamic, dynamic, dynamic)*/
+/*cfe|cfe:builder.member: GenericSubClass1a.noSuchMethod:dynamic Function(Invocation)*/
+/*cfe|cfe:builder.member: GenericSubClass1a._identityHashCode:int*/
+/*cfe|cfe:builder.member: GenericSubClass1a.hashCode:int*/
+/*cfe|cfe:builder.member: GenericSubClass1a._simpleInstanceOfFalse:bool Function(dynamic)*/
+/*cfe|cfe:builder.member: GenericSubClass1a._simpleInstanceOfTrue:bool Function(dynamic)*/
+/*cfe|cfe:builder.member: GenericSubClass1a.==:bool* Function(dynamic)**/
 abstract class GenericSubClass1a extends GenericLegacyClass1a
     implements GenericInterface<int?> {
   /*member: GenericSubClass1a.method:int? Function(int?)*/
 }
 
 /*class: GenericSubClass1b:GenericClass1,GenericInterface<int?>,GenericLegacyClass1b,GenericSubClass1b,Object*/
+/*cfe|cfe:builder.member: GenericSubClass1b.toString:String Function()*/
+/*cfe|cfe:builder.member: GenericSubClass1b.runtimeType:Type*/
+/*cfe|cfe:builder.member: GenericSubClass1b._simpleInstanceOf:bool Function(dynamic)*/
+/*cfe|cfe:builder.member: GenericSubClass1b._instanceOf:bool Function(dynamic, dynamic, dynamic)*/
+/*cfe|cfe:builder.member: GenericSubClass1b.noSuchMethod:dynamic Function(Invocation)*/
+/*cfe|cfe:builder.member: GenericSubClass1b._identityHashCode:int*/
+/*cfe|cfe:builder.member: GenericSubClass1b.hashCode:int*/
+/*cfe|cfe:builder.member: GenericSubClass1b._simpleInstanceOfFalse:bool Function(dynamic)*/
+/*cfe|cfe:builder.member: GenericSubClass1b._simpleInstanceOfTrue:bool Function(dynamic)*/
+/*cfe|cfe:builder.member: GenericSubClass1b.==:bool* Function(dynamic)**/
 abstract class GenericSubClass1b extends GenericLegacyClass1b
     implements GenericInterface<int?> {
   /*member: GenericSubClass1b.method:int? Function(int?)*/
 }
 
 /*class: GenericSubClass2a:GenericClass2,GenericInterface<int>,GenericLegacyClass2a,GenericSubClass2a,Object*/
+/*cfe|cfe:builder.member: GenericSubClass2a.toString:String Function()*/
+/*cfe|cfe:builder.member: GenericSubClass2a.runtimeType:Type*/
+/*cfe|cfe:builder.member: GenericSubClass2a._simpleInstanceOf:bool Function(dynamic)*/
+/*cfe|cfe:builder.member: GenericSubClass2a._instanceOf:bool Function(dynamic, dynamic, dynamic)*/
+/*cfe|cfe:builder.member: GenericSubClass2a.noSuchMethod:dynamic Function(Invocation)*/
+/*cfe|cfe:builder.member: GenericSubClass2a._identityHashCode:int*/
+/*cfe|cfe:builder.member: GenericSubClass2a.hashCode:int*/
+/*cfe|cfe:builder.member: GenericSubClass2a._simpleInstanceOfFalse:bool Function(dynamic)*/
+/*cfe|cfe:builder.member: GenericSubClass2a._simpleInstanceOfTrue:bool Function(dynamic)*/
+/*cfe|cfe:builder.member: GenericSubClass2a.==:bool* Function(dynamic)**/
 abstract class GenericSubClass2a extends GenericLegacyClass2a
     implements GenericInterface<int> {
   /*member: GenericSubClass2a.method:int Function(int)*/
 }
 
 /*class: GenericSubClass2b:GenericClass2,GenericInterface<int>,GenericLegacyClass2b,GenericSubClass2b,Object*/
+/*cfe|cfe:builder.member: GenericSubClass2b.toString:String Function()*/
+/*cfe|cfe:builder.member: GenericSubClass2b.runtimeType:Type*/
+/*cfe|cfe:builder.member: GenericSubClass2b._simpleInstanceOf:bool Function(dynamic)*/
+/*cfe|cfe:builder.member: GenericSubClass2b._instanceOf:bool Function(dynamic, dynamic, dynamic)*/
+/*cfe|cfe:builder.member: GenericSubClass2b.noSuchMethod:dynamic Function(Invocation)*/
+/*cfe|cfe:builder.member: GenericSubClass2b._identityHashCode:int*/
+/*cfe|cfe:builder.member: GenericSubClass2b.hashCode:int*/
+/*cfe|cfe:builder.member: GenericSubClass2b._simpleInstanceOfFalse:bool Function(dynamic)*/
+/*cfe|cfe:builder.member: GenericSubClass2b._simpleInstanceOfTrue:bool Function(dynamic)*/
+/*cfe|cfe:builder.member: GenericSubClass2b.==:bool* Function(dynamic)**/
 abstract class GenericSubClass2b extends GenericLegacyClass2b
     implements GenericInterface<int> {
   /*member: GenericSubClass2b.method:int Function(int)*/
diff --git a/pkg/_fe_analyzer_shared/test/inheritance/data/in_out_in/opt_out.dart b/pkg/_fe_analyzer_shared/test/inheritance/data/in_out_in/opt_out.dart
index 09cfea2..c232f64 100644
--- a/pkg/_fe_analyzer_shared/test/inheritance/data/in_out_in/opt_out.dart
+++ b/pkg/_fe_analyzer_shared/test/inheritance/data/in_out_in/opt_out.dart
@@ -9,32 +9,92 @@
 import 'opt_in.dart';
 
 /*class: LegacyClass1:Class,Interface,LegacyClass1,Object*/
+/*cfe|cfe:builder.member: LegacyClass1.toString:String* Function()**/
+/*cfe|cfe:builder.member: LegacyClass1.runtimeType:Type**/
+/*cfe|cfe:builder.member: LegacyClass1._simpleInstanceOf:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: LegacyClass1._instanceOf:bool* Function(dynamic, dynamic, dynamic)**/
+/*cfe|cfe:builder.member: LegacyClass1.noSuchMethod:dynamic Function(Invocation*)**/
+/*cfe|cfe:builder.member: LegacyClass1._identityHashCode:int**/
+/*cfe|cfe:builder.member: LegacyClass1.hashCode:int**/
+/*cfe|cfe:builder.member: LegacyClass1._simpleInstanceOfFalse:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: LegacyClass1._simpleInstanceOfTrue:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: LegacyClass1.==:bool* Function(dynamic)**/
 abstract class LegacyClass1 extends Class implements Interface {
   /*member: LegacyClass1.method:int* Function(int*)**/
 }
 
 /*class: LegacyClass2:Class,LegacyClass2,Object*/
+/*cfe|cfe:builder.member: LegacyClass2.toString:String* Function()**/
+/*cfe|cfe:builder.member: LegacyClass2.runtimeType:Type**/
+/*cfe|cfe:builder.member: LegacyClass2._simpleInstanceOf:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: LegacyClass2._instanceOf:bool* Function(dynamic, dynamic, dynamic)**/
+/*cfe|cfe:builder.member: LegacyClass2.noSuchMethod:dynamic Function(Invocation*)**/
+/*cfe|cfe:builder.member: LegacyClass2._identityHashCode:int**/
+/*cfe|cfe:builder.member: LegacyClass2.hashCode:int**/
+/*cfe|cfe:builder.member: LegacyClass2._simpleInstanceOfFalse:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: LegacyClass2._simpleInstanceOfTrue:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: LegacyClass2.==:bool* Function(dynamic)**/
 abstract class LegacyClass2 extends Class {
   /*member: LegacyClass2.method:int* Function(int*)**/
 }
 
 /*class: GenericLegacyClass1a:GenericClass1,GenericInterface<int*>,GenericLegacyClass1a,Object*/
+/*cfe|cfe:builder.member: GenericLegacyClass1a.toString:String* Function()**/
+/*cfe|cfe:builder.member: GenericLegacyClass1a.runtimeType:Type**/
+/*cfe|cfe:builder.member: GenericLegacyClass1a._simpleInstanceOf:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: GenericLegacyClass1a._instanceOf:bool* Function(dynamic, dynamic, dynamic)**/
+/*cfe|cfe:builder.member: GenericLegacyClass1a.noSuchMethod:dynamic Function(Invocation*)**/
+/*cfe|cfe:builder.member: GenericLegacyClass1a._identityHashCode:int**/
+/*cfe|cfe:builder.member: GenericLegacyClass1a.hashCode:int**/
+/*cfe|cfe:builder.member: GenericLegacyClass1a._simpleInstanceOfFalse:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: GenericLegacyClass1a._simpleInstanceOfTrue:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: GenericLegacyClass1a.==:bool* Function(dynamic)**/
 abstract class GenericLegacyClass1a extends GenericClass1 {
   /*member: GenericLegacyClass1a.method:int* Function(int*)**/
 }
 
 /*class: GenericLegacyClass1b:GenericClass1,GenericInterface<int*>,GenericLegacyClass1b,Object*/
+/*cfe|cfe:builder.member: GenericLegacyClass1b.toString:String* Function()**/
+/*cfe|cfe:builder.member: GenericLegacyClass1b.runtimeType:Type**/
+/*cfe|cfe:builder.member: GenericLegacyClass1b._simpleInstanceOf:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: GenericLegacyClass1b._instanceOf:bool* Function(dynamic, dynamic, dynamic)**/
+/*cfe|cfe:builder.member: GenericLegacyClass1b.noSuchMethod:dynamic Function(Invocation*)**/
+/*cfe|cfe:builder.member: GenericLegacyClass1b._identityHashCode:int**/
+/*cfe|cfe:builder.member: GenericLegacyClass1b.hashCode:int**/
+/*cfe|cfe:builder.member: GenericLegacyClass1b._simpleInstanceOfFalse:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: GenericLegacyClass1b._simpleInstanceOfTrue:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: GenericLegacyClass1b.==:bool* Function(dynamic)**/
 abstract class GenericLegacyClass1b extends GenericClass1
     implements GenericInterface<int> {
   /*member: GenericLegacyClass1b.method:int* Function(int*)**/
 }
 
 /*class: GenericLegacyClass2a:GenericClass2,GenericInterface<int*>,GenericLegacyClass2a,Object*/
+/*cfe|cfe:builder.member: GenericLegacyClass2a.toString:String* Function()**/
+/*cfe|cfe:builder.member: GenericLegacyClass2a.runtimeType:Type**/
+/*cfe|cfe:builder.member: GenericLegacyClass2a._simpleInstanceOf:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: GenericLegacyClass2a._instanceOf:bool* Function(dynamic, dynamic, dynamic)**/
+/*cfe|cfe:builder.member: GenericLegacyClass2a.noSuchMethod:dynamic Function(Invocation*)**/
+/*cfe|cfe:builder.member: GenericLegacyClass2a._identityHashCode:int**/
+/*cfe|cfe:builder.member: GenericLegacyClass2a.hashCode:int**/
+/*cfe|cfe:builder.member: GenericLegacyClass2a._simpleInstanceOfFalse:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: GenericLegacyClass2a._simpleInstanceOfTrue:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: GenericLegacyClass2a.==:bool* Function(dynamic)**/
 abstract class GenericLegacyClass2a extends GenericClass2 {
   /*member: GenericLegacyClass2a.method:int* Function(int*)**/
 }
 
 /*class: GenericLegacyClass2b:GenericClass2,GenericInterface<int*>,GenericLegacyClass2b,Object*/
+/*cfe|cfe:builder.member: GenericLegacyClass2b.toString:String* Function()**/
+/*cfe|cfe:builder.member: GenericLegacyClass2b.runtimeType:Type**/
+/*cfe|cfe:builder.member: GenericLegacyClass2b._simpleInstanceOf:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: GenericLegacyClass2b._instanceOf:bool* Function(dynamic, dynamic, dynamic)**/
+/*cfe|cfe:builder.member: GenericLegacyClass2b.noSuchMethod:dynamic Function(Invocation*)**/
+/*cfe|cfe:builder.member: GenericLegacyClass2b._identityHashCode:int**/
+/*cfe|cfe:builder.member: GenericLegacyClass2b.hashCode:int**/
+/*cfe|cfe:builder.member: GenericLegacyClass2b._simpleInstanceOfFalse:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: GenericLegacyClass2b._simpleInstanceOfTrue:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: GenericLegacyClass2b.==:bool* Function(dynamic)**/
 abstract class GenericLegacyClass2b extends GenericClass2
     implements GenericInterface<int> {
   /*member: GenericLegacyClass2b.method:int* Function(int*)**/
diff --git a/pkg/_fe_analyzer_shared/test/inheritance/data/infer_from_opt_in/main.dart b/pkg/_fe_analyzer_shared/test/inheritance/data/infer_from_opt_in/main.dart
index 2784dd4..12302cc 100644
--- a/pkg/_fe_analyzer_shared/test/inheritance/data/infer_from_opt_in/main.dart
+++ b/pkg/_fe_analyzer_shared/test/inheritance/data/infer_from_opt_in/main.dart
@@ -8,12 +8,32 @@
 import 'opt_in.dart';
 
 /*class: LegacyClass1:Class,LegacyClass1,Object*/
+/*cfe|cfe:builder.member: LegacyClass1.toString:String* Function()**/
+/*cfe|cfe:builder.member: LegacyClass1.runtimeType:Type**/
+/*cfe|cfe:builder.member: LegacyClass1._simpleInstanceOf:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: LegacyClass1._instanceOf:bool* Function(dynamic, dynamic, dynamic)**/
+/*cfe|cfe:builder.member: LegacyClass1.noSuchMethod:dynamic Function(Invocation*)**/
+/*cfe|cfe:builder.member: LegacyClass1._identityHashCode:int**/
+/*cfe|cfe:builder.member: LegacyClass1.hashCode:int**/
+/*cfe|cfe:builder.member: LegacyClass1._simpleInstanceOfFalse:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: LegacyClass1._simpleInstanceOfTrue:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: LegacyClass1.==:bool* Function(dynamic)**/
 abstract class LegacyClass1 extends Class {
   /*member: LegacyClass1.getter:int**/
   /*member: LegacyClass1.method:int* Function()**/
 }
 
 /*class: LegacyClass2:Class,LegacyClass1,LegacyClass2,Object*/
+/*cfe|cfe:builder.member: LegacyClass2.toString:String* Function()**/
+/*cfe|cfe:builder.member: LegacyClass2.runtimeType:Type**/
+/*cfe|cfe:builder.member: LegacyClass2._simpleInstanceOf:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: LegacyClass2._instanceOf:bool* Function(dynamic, dynamic, dynamic)**/
+/*cfe|cfe:builder.member: LegacyClass2.noSuchMethod:dynamic Function(Invocation*)**/
+/*cfe|cfe:builder.member: LegacyClass2._identityHashCode:int**/
+/*cfe|cfe:builder.member: LegacyClass2.hashCode:int**/
+/*cfe|cfe:builder.member: LegacyClass2._simpleInstanceOfFalse:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: LegacyClass2._simpleInstanceOfTrue:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: LegacyClass2.==:bool* Function(dynamic)**/
 class LegacyClass2 extends Class implements LegacyClass1 {
   /*member: LegacyClass2.method:int* Function()**/
   method() => 0;
@@ -23,6 +43,16 @@
 }
 
 /*class: LegacyClass3:Class,LegacyClass1,LegacyClass3,Object*/
+/*cfe|cfe:builder.member: LegacyClass3.toString:String* Function()**/
+/*cfe|cfe:builder.member: LegacyClass3.runtimeType:Type**/
+/*cfe|cfe:builder.member: LegacyClass3._simpleInstanceOf:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: LegacyClass3._instanceOf:bool* Function(dynamic, dynamic, dynamic)**/
+/*cfe|cfe:builder.member: LegacyClass3.noSuchMethod:dynamic Function(Invocation*)**/
+/*cfe|cfe:builder.member: LegacyClass3._identityHashCode:int**/
+/*cfe|cfe:builder.member: LegacyClass3.hashCode:int**/
+/*cfe|cfe:builder.member: LegacyClass3._simpleInstanceOfFalse:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: LegacyClass3._simpleInstanceOfTrue:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: LegacyClass3.==:bool* Function(dynamic)**/
 class LegacyClass3 extends LegacyClass1 {
   /*member: LegacyClass3.method:int* Function()**/
   method() => 0;
@@ -39,6 +69,16 @@
  UnmodifiableMapBase<String*, String*>,
  _UnmodifiableMapMixin<String*, String*>
 */
+/*cfe|cfe:builder.member: EnvironmentMap.toString:String* Function()**/
+/*cfe|cfe:builder.member: EnvironmentMap.runtimeType:Type**/
+/*cfe|cfe:builder.member: EnvironmentMap._simpleInstanceOf:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: EnvironmentMap._instanceOf:bool* Function(dynamic, dynamic, dynamic)**/
+/*cfe|cfe:builder.member: EnvironmentMap.noSuchMethod:dynamic Function(Invocation*)**/
+/*cfe|cfe:builder.member: EnvironmentMap._identityHashCode:int**/
+/*cfe|cfe:builder.member: EnvironmentMap.hashCode:int**/
+/*cfe|cfe:builder.member: EnvironmentMap._simpleInstanceOfFalse:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: EnvironmentMap._simpleInstanceOfTrue:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: EnvironmentMap.==:bool* Function(dynamic)**/
 class EnvironmentMap extends UnmodifiableMapBase<String, String> {
   /*member: EnvironmentMap.keys:Iterable<String*>**/
   get keys => null;
diff --git a/pkg/_fe_analyzer_shared/test/inheritance/data/infer_opt_in_from_mixed/main.dart b/pkg/_fe_analyzer_shared/test/inheritance/data/infer_opt_in_from_mixed/main.dart
index b628daac..0c75b04 100644
--- a/pkg/_fe_analyzer_shared/test/inheritance/data/infer_opt_in_from_mixed/main.dart
+++ b/pkg/_fe_analyzer_shared/test/inheritance/data/infer_opt_in_from_mixed/main.dart
@@ -15,6 +15,7 @@
 }
 
 /*class: Both1:Both1,Legacy,Nnbd,Object*/
+/*cfe|cfe:builder.member: Both1.==:bool* Function(dynamic)*/
 class Both1 implements Legacy, Nnbd {
   /*member: Both1.mandatory:void Function(int)*/
   void mandatory(param) {}
@@ -23,6 +24,7 @@
 }
 
 /*class: Both2:Both2,Legacy,Nnbd,Object*/
+/*cfe|cfe:builder.member: Both2.==:bool* Function(dynamic)*/
 class Both2 implements Nnbd, Legacy {
   /*member: Both2.mandatory:void Function(int)*/
   void mandatory(param) {}
diff --git a/pkg/_fe_analyzer_shared/test/inheritance/data/infer_opt_in_from_mixed/opt_out.dart b/pkg/_fe_analyzer_shared/test/inheritance/data/infer_opt_in_from_mixed/opt_out.dart
index 26a4379..dbb6996 100644
--- a/pkg/_fe_analyzer_shared/test/inheritance/data/infer_opt_in_from_mixed/opt_out.dart
+++ b/pkg/_fe_analyzer_shared/test/inheritance/data/infer_opt_in_from_mixed/opt_out.dart
@@ -7,6 +7,16 @@
 // @dart = 2.5
 
 /*class: Legacy:Legacy,Object*/
+/*cfe|cfe:builder.member: Legacy.toString:String* Function()**/
+/*cfe|cfe:builder.member: Legacy.runtimeType:Type**/
+/*cfe|cfe:builder.member: Legacy._simpleInstanceOf:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: Legacy._instanceOf:bool* Function(dynamic, dynamic, dynamic)**/
+/*cfe|cfe:builder.member: Legacy.noSuchMethod:dynamic Function(Invocation*)**/
+/*cfe|cfe:builder.member: Legacy._identityHashCode:int**/
+/*cfe|cfe:builder.member: Legacy.hashCode:int**/
+/*cfe|cfe:builder.member: Legacy._simpleInstanceOfFalse:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: Legacy._simpleInstanceOfTrue:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: Legacy.==:bool* Function(dynamic)**/
 abstract class Legacy {
   /*member: Legacy.mandatory:void Function(int*)**/
   void mandatory(int param);
diff --git a/pkg/_fe_analyzer_shared/test/inheritance/data/infer_opt_out_from_mixed/main.dart b/pkg/_fe_analyzer_shared/test/inheritance/data/infer_opt_out_from_mixed/main.dart
index 4a40b97..05862b6 100644
--- a/pkg/_fe_analyzer_shared/test/inheritance/data/infer_opt_out_from_mixed/main.dart
+++ b/pkg/_fe_analyzer_shared/test/inheritance/data/infer_opt_out_from_mixed/main.dart
@@ -8,6 +8,16 @@
 import 'opt_in.dart';
 
 /*class: Legacy:Legacy,Object*/
+/*cfe|cfe:builder.member: Legacy.toString:String* Function()**/
+/*cfe|cfe:builder.member: Legacy.runtimeType:Type**/
+/*cfe|cfe:builder.member: Legacy._simpleInstanceOf:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: Legacy._instanceOf:bool* Function(dynamic, dynamic, dynamic)**/
+/*cfe|cfe:builder.member: Legacy.noSuchMethod:dynamic Function(Invocation*)**/
+/*cfe|cfe:builder.member: Legacy._identityHashCode:int**/
+/*cfe|cfe:builder.member: Legacy.hashCode:int**/
+/*cfe|cfe:builder.member: Legacy._simpleInstanceOfFalse:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: Legacy._simpleInstanceOfTrue:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: Legacy.==:bool* Function(dynamic)**/
 abstract class Legacy {
   /*member: Legacy.mandatory:void Function(int*)**/
   void mandatory(int param);
@@ -16,6 +26,16 @@
 }
 
 /*class: Both1:Both1,Legacy,Nnbd,Object*/
+/*cfe|cfe:builder.member: Both1.toString:String* Function()**/
+/*cfe|cfe:builder.member: Both1.runtimeType:Type**/
+/*cfe|cfe:builder.member: Both1._simpleInstanceOf:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: Both1._instanceOf:bool* Function(dynamic, dynamic, dynamic)**/
+/*cfe|cfe:builder.member: Both1.noSuchMethod:dynamic Function(Invocation*)**/
+/*cfe|cfe:builder.member: Both1._identityHashCode:int**/
+/*cfe|cfe:builder.member: Both1.hashCode:int**/
+/*cfe|cfe:builder.member: Both1._simpleInstanceOfFalse:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: Both1._simpleInstanceOfTrue:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: Both1.==:bool* Function(dynamic)**/
 class Both1 implements Legacy, Nnbd {
   /*member: Both1.mandatory:void Function(int*)**/
   void mandatory(param) {}
@@ -24,6 +44,16 @@
 }
 
 /*class: Both2:Both2,Legacy,Nnbd,Object*/
+/*cfe|cfe:builder.member: Both2.toString:String* Function()**/
+/*cfe|cfe:builder.member: Both2.runtimeType:Type**/
+/*cfe|cfe:builder.member: Both2._simpleInstanceOf:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: Both2._instanceOf:bool* Function(dynamic, dynamic, dynamic)**/
+/*cfe|cfe:builder.member: Both2.noSuchMethod:dynamic Function(Invocation*)**/
+/*cfe|cfe:builder.member: Both2._identityHashCode:int**/
+/*cfe|cfe:builder.member: Both2.hashCode:int**/
+/*cfe|cfe:builder.member: Both2._simpleInstanceOfFalse:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: Both2._simpleInstanceOfTrue:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: Both2.==:bool* Function(dynamic)**/
 class Both2 implements Nnbd, Legacy {
   /*member: Both2.mandatory:void Function(int*)**/
   void mandatory(param) {}
diff --git a/pkg/_fe_analyzer_shared/test/inheritance/data/infer_parameter_opt_out.dart b/pkg/_fe_analyzer_shared/test/inheritance/data/infer_parameter_opt_out.dart
index 646feff..3fe9525 100644
--- a/pkg/_fe_analyzer_shared/test/inheritance/data/infer_parameter_opt_out.dart
+++ b/pkg/_fe_analyzer_shared/test/inheritance/data/infer_parameter_opt_out.dart
@@ -7,51 +7,139 @@
 /*library: nnbd=false*/
 
 /*class: A:A,Object*/
+/*cfe|cfe:builder.member: A.toString:String* Function()**/
+/*cfe|cfe:builder.member: A.runtimeType:Type**/
+/*cfe|cfe:builder.member: A._simpleInstanceOf:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: A._instanceOf:bool* Function(dynamic, dynamic, dynamic)**/
+/*cfe|cfe:builder.member: A.noSuchMethod:dynamic Function(Invocation*)**/
+/*cfe|cfe:builder.member: A._identityHashCode:int**/
+/*cfe|cfe:builder.member: A.hashCode:int**/
+/*cfe|cfe:builder.member: A._simpleInstanceOfFalse:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: A._simpleInstanceOfTrue:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: A.==:bool* Function(dynamic)**/
 class A {
   /*member: A.method:dynamic Function(dynamic, {dynamic named})**/
   dynamic method(dynamic o, {dynamic named}) {}
 }
 
 /*class: B:A,B,Object*/
+/*cfe|cfe:builder.member: B.toString:String* Function()**/
+/*cfe|cfe:builder.member: B.runtimeType:Type**/
+/*cfe|cfe:builder.member: B._simpleInstanceOf:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: B._instanceOf:bool* Function(dynamic, dynamic, dynamic)**/
+/*cfe|cfe:builder.member: B.noSuchMethod:dynamic Function(Invocation*)**/
+/*cfe|cfe:builder.member: B._identityHashCode:int**/
+/*cfe|cfe:builder.member: B.hashCode:int**/
+/*cfe|cfe:builder.member: B._simpleInstanceOfFalse:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: B._simpleInstanceOfTrue:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: B.==:bool* Function(dynamic)**/
 abstract class B extends A {
   /*member: B.method:Object* Function(Object*, {Object* named})**/
   Object method(Object o, {Object named});
 }
 
 /*class: C1:A,B,C1,Object*/
+/*cfe|cfe:builder.member: C1.toString:String* Function()**/
+/*cfe|cfe:builder.member: C1.runtimeType:Type**/
+/*cfe|cfe:builder.member: C1._simpleInstanceOf:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: C1._instanceOf:bool* Function(dynamic, dynamic, dynamic)**/
+/*cfe|cfe:builder.member: C1.noSuchMethod:dynamic Function(Invocation*)**/
+/*cfe|cfe:builder.member: C1._identityHashCode:int**/
+/*cfe|cfe:builder.member: C1.hashCode:int**/
+/*cfe|cfe:builder.member: C1._simpleInstanceOfFalse:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: C1._simpleInstanceOfTrue:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: C1.==:bool* Function(dynamic)**/
 class C1 extends A implements B {
   /*member: C1.method:dynamic Function(dynamic, {dynamic named})**/
   method(o, {named}) {}
 }
 
 /*class: C2:A,B,C2,Object*/
+/*cfe|cfe:builder.member: C2.toString:String* Function()**/
+/*cfe|cfe:builder.member: C2.runtimeType:Type**/
+/*cfe|cfe:builder.member: C2._simpleInstanceOf:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: C2._instanceOf:bool* Function(dynamic, dynamic, dynamic)**/
+/*cfe|cfe:builder.member: C2.noSuchMethod:dynamic Function(Invocation*)**/
+/*cfe|cfe:builder.member: C2._identityHashCode:int**/
+/*cfe|cfe:builder.member: C2.hashCode:int**/
+/*cfe|cfe:builder.member: C2._simpleInstanceOfFalse:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: C2._simpleInstanceOfTrue:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: C2.==:bool* Function(dynamic)**/
 class C2 extends B implements A {
   /*member: C2.method:dynamic Function(dynamic, {dynamic named})**/
   method(o, {named}) {}
 }
 
 /*class: C3:A,B,C3,Object*/
+/*cfe|cfe:builder.member: C3.toString:String* Function()**/
+/*cfe|cfe:builder.member: C3.runtimeType:Type**/
+/*cfe|cfe:builder.member: C3._simpleInstanceOf:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: C3._instanceOf:bool* Function(dynamic, dynamic, dynamic)**/
+/*cfe|cfe:builder.member: C3.noSuchMethod:dynamic Function(Invocation*)**/
+/*cfe|cfe:builder.member: C3._identityHashCode:int**/
+/*cfe|cfe:builder.member: C3.hashCode:int**/
+/*cfe|cfe:builder.member: C3._simpleInstanceOfFalse:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: C3._simpleInstanceOfTrue:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: C3.==:bool* Function(dynamic)**/
 class C3 implements A, B {
   /*member: C3.method:dynamic Function(dynamic, {dynamic named})**/
   method(o, {named}) {}
 }
 
 /*class: C4:A,B,C4,Object*/
+/*cfe|cfe:builder.member: C4.toString:String* Function()**/
+/*cfe|cfe:builder.member: C4.runtimeType:Type**/
+/*cfe|cfe:builder.member: C4._simpleInstanceOf:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: C4._instanceOf:bool* Function(dynamic, dynamic, dynamic)**/
+/*cfe|cfe:builder.member: C4.noSuchMethod:dynamic Function(Invocation*)**/
+/*cfe|cfe:builder.member: C4._identityHashCode:int**/
+/*cfe|cfe:builder.member: C4.hashCode:int**/
+/*cfe|cfe:builder.member: C4._simpleInstanceOfFalse:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: C4._simpleInstanceOfTrue:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: C4.==:bool* Function(dynamic)**/
 class C4 implements B, A {
   /*member: C4.method:dynamic Function(dynamic, {dynamic named})**/
   method(o, {named}) {}
 }
 
 /*class: D:D,Object*/
+/*cfe|cfe:builder.member: D.toString:String* Function()**/
+/*cfe|cfe:builder.member: D.runtimeType:Type**/
+/*cfe|cfe:builder.member: D._simpleInstanceOf:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: D._instanceOf:bool* Function(dynamic, dynamic, dynamic)**/
+/*cfe|cfe:builder.member: D.noSuchMethod:dynamic Function(Invocation*)**/
+/*cfe|cfe:builder.member: D._identityHashCode:int**/
+/*cfe|cfe:builder.member: D.hashCode:int**/
+/*cfe|cfe:builder.member: D._simpleInstanceOfFalse:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: D._simpleInstanceOfTrue:bool* Function(dynamic)**/
 abstract class D {
   /*member: D.==:bool* Function(Object*)**/
   bool operator ==(Object other);
 }
 
 /*class: F:F,Object*/
+/*cfe|cfe:builder.member: F.toString:String* Function()**/
+/*cfe|cfe:builder.member: F.runtimeType:Type**/
+/*cfe|cfe:builder.member: F._simpleInstanceOf:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: F._instanceOf:bool* Function(dynamic, dynamic, dynamic)**/
+/*cfe|cfe:builder.member: F.noSuchMethod:dynamic Function(Invocation*)**/
+/*cfe|cfe:builder.member: F._identityHashCode:int**/
+/*cfe|cfe:builder.member: F.hashCode:int**/
+/*cfe|cfe:builder.member: F._simpleInstanceOfFalse:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: F._simpleInstanceOfTrue:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: F.==:bool* Function(dynamic)**/
 abstract class F {}
 
 /*class: E:D,E,F,Object*/
+/*cfe|cfe:builder.member: E.toString:String* Function()**/
+/*cfe|cfe:builder.member: E.runtimeType:Type**/
+/*cfe|cfe:builder.member: E._simpleInstanceOf:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: E._instanceOf:bool* Function(dynamic, dynamic, dynamic)**/
+/*cfe|cfe:builder.member: E.noSuchMethod:dynamic Function(Invocation*)**/
+/*cfe|cfe:builder.member: E._identityHashCode:int**/
+/*cfe|cfe:builder.member: E.hashCode:int**/
+/*cfe|cfe:builder.member: E._simpleInstanceOfFalse:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: E._simpleInstanceOfTrue:bool* Function(dynamic)**/
 class E implements D, F {
   /// TODO: Solve CFE / analyzer difference.
   /// Analyzer uses MockSdk that is migrated. So, `Object.==(Object)`.
diff --git a/pkg/_fe_analyzer_shared/test/inheritance/data/issue40414/main.dart b/pkg/_fe_analyzer_shared/test/inheritance/data/issue40414/main.dart
index 6446c09..abea562 100644
--- a/pkg/_fe_analyzer_shared/test/inheritance/data/issue40414/main.dart
+++ b/pkg/_fe_analyzer_shared/test/inheritance/data/issue40414/main.dart
@@ -7,12 +7,32 @@
 import "opt_out.dart";
 
 /*class: B:A,B,NONNULLABLE,NULLABLE,Object*/
+/*cfe|cfe:builder.member: B.toString:String* Function()**/
+/*cfe|cfe:builder.member: B.runtimeType:Type**/
+/*cfe|cfe:builder.member: B._simpleInstanceOf:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: B._instanceOf:bool* Function(dynamic, dynamic, dynamic)**/
+/*cfe|cfe:builder.member: B.noSuchMethod:dynamic Function(Invocation*)**/
+/*cfe|cfe:builder.member: B._identityHashCode:int**/
+/*cfe|cfe:builder.member: B.hashCode:int**/
+/*cfe|cfe:builder.member: B._simpleInstanceOfFalse:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: B._simpleInstanceOfTrue:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: B.==:bool* Function(dynamic)**/
 class B extends A {
   /*member: B.i:int**/
   /*member: B.i=:int**/
 }
 
 /*class: C:A,C,NONNULLABLE,NULLABLE,Object*/
+/*cfe|cfe:builder.member: C.toString:String* Function()**/
+/*cfe|cfe:builder.member: C.runtimeType:Type**/
+/*cfe|cfe:builder.member: C._simpleInstanceOf:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: C._instanceOf:bool* Function(dynamic, dynamic, dynamic)**/
+/*cfe|cfe:builder.member: C.noSuchMethod:dynamic Function(Invocation*)**/
+/*cfe|cfe:builder.member: C._identityHashCode:int**/
+/*cfe|cfe:builder.member: C.hashCode:int**/
+/*cfe|cfe:builder.member: C._simpleInstanceOfFalse:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: C._simpleInstanceOfTrue:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: C.==:bool* Function(dynamic)**/
 class C extends A {
   /*member: C.i:int?*/
   /*member: C.i=:int?*/
diff --git a/pkg/_fe_analyzer_shared/test/inheritance/data/issue40414/opt_out.dart b/pkg/_fe_analyzer_shared/test/inheritance/data/issue40414/opt_out.dart
index 5bc7f0d..47f208f 100644
--- a/pkg/_fe_analyzer_shared/test/inheritance/data/issue40414/opt_out.dart
+++ b/pkg/_fe_analyzer_shared/test/inheritance/data/issue40414/opt_out.dart
@@ -9,6 +9,16 @@
 import "opt_in.dart";
 
 /*class: A:A,NONNULLABLE,NULLABLE,Object*/
+/*cfe|cfe:builder.member: A.toString:String* Function()**/
+/*cfe|cfe:builder.member: A.runtimeType:Type**/
+/*cfe|cfe:builder.member: A._simpleInstanceOf:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: A._instanceOf:bool* Function(dynamic, dynamic, dynamic)**/
+/*cfe|cfe:builder.member: A.noSuchMethod:dynamic Function(Invocation*)**/
+/*cfe|cfe:builder.member: A._identityHashCode:int**/
+/*cfe|cfe:builder.member: A.hashCode:int**/
+/*cfe|cfe:builder.member: A._simpleInstanceOfFalse:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: A._simpleInstanceOfTrue:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: A.==:bool* Function(dynamic)**/
 class A extends NULLABLE implements NONNULLABLE {
   /*member: A.i:int**/
   /*member: A.i=:int**/
diff --git a/pkg/_fe_analyzer_shared/test/inheritance/data/issue40481/main.dart b/pkg/_fe_analyzer_shared/test/inheritance/data/issue40481/main.dart
index 6468993..f0f51c0 100644
--- a/pkg/_fe_analyzer_shared/test/inheritance/data/issue40481/main.dart
+++ b/pkg/_fe_analyzer_shared/test/inheritance/data/issue40481/main.dart
@@ -7,15 +7,37 @@
 import "opt_out.dart";
 
 /*class: A_dynamic:A<dynamic>,A_dynamic,Object*/
+/*cfe|cfe:builder.member: A_dynamic.==:bool* Function(dynamic)*/
 class A_dynamic implements A<dynamic> {}
 
 /*class: A_void:A<void>,A_void,Object*/
+/*cfe|cfe:builder.member: A_void.==:bool* Function(dynamic)*/
 class A_void implements A<void> {}
 
 /*class: B1:A<Object?>,A_Object,A_dynamic,B1,Object*/
+/*cfe|cfe:builder.member: B1.toString:String Function()*/
+/*cfe|cfe:builder.member: B1.runtimeType:Type*/
+/*cfe|cfe:builder.member: B1._simpleInstanceOf:bool Function(dynamic)*/
+/*cfe|cfe:builder.member: B1._instanceOf:bool Function(dynamic, dynamic, dynamic)*/
+/*cfe|cfe:builder.member: B1.noSuchMethod:dynamic Function(Invocation)*/
+/*cfe|cfe:builder.member: B1._identityHashCode:int*/
+/*cfe|cfe:builder.member: B1.hashCode:int*/
+/*cfe|cfe:builder.member: B1._simpleInstanceOfFalse:bool Function(dynamic)*/
+/*cfe|cfe:builder.member: B1._simpleInstanceOfTrue:bool Function(dynamic)*/
+/*cfe|cfe:builder.member: B1.==:bool* Function(dynamic)**/
 class B1 extends A_Object implements A_dynamic {}
 
 /*class: B2:A<Object?>,A_Object,A_void,B2,Object*/
+/*cfe|cfe:builder.member: B2.toString:String Function()*/
+/*cfe|cfe:builder.member: B2.runtimeType:Type*/
+/*cfe|cfe:builder.member: B2._simpleInstanceOf:bool Function(dynamic)*/
+/*cfe|cfe:builder.member: B2._instanceOf:bool Function(dynamic, dynamic, dynamic)*/
+/*cfe|cfe:builder.member: B2.noSuchMethod:dynamic Function(Invocation)*/
+/*cfe|cfe:builder.member: B2._identityHashCode:int*/
+/*cfe|cfe:builder.member: B2.hashCode:int*/
+/*cfe|cfe:builder.member: B2._simpleInstanceOfFalse:bool Function(dynamic)*/
+/*cfe|cfe:builder.member: B2._simpleInstanceOfTrue:bool Function(dynamic)*/
+/*cfe|cfe:builder.member: B2.==:bool* Function(dynamic)**/
 class B2 extends A_Object implements A_void {}
 
 main() {}
diff --git a/pkg/_fe_analyzer_shared/test/inheritance/data/issue40481/opt_out.dart b/pkg/_fe_analyzer_shared/test/inheritance/data/issue40481/opt_out.dart
index db490bd..91c879e 100644
--- a/pkg/_fe_analyzer_shared/test/inheritance/data/issue40481/opt_out.dart
+++ b/pkg/_fe_analyzer_shared/test/inheritance/data/issue40481/opt_out.dart
@@ -7,7 +7,27 @@
 /*library: nnbd=false*/
 
 /*class: A:A<T*>,Object*/
+/*cfe|cfe:builder.member: A.toString:String* Function()**/
+/*cfe|cfe:builder.member: A.runtimeType:Type**/
+/*cfe|cfe:builder.member: A._simpleInstanceOf:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: A._instanceOf:bool* Function(dynamic, dynamic, dynamic)**/
+/*cfe|cfe:builder.member: A.noSuchMethod:dynamic Function(Invocation*)**/
+/*cfe|cfe:builder.member: A._identityHashCode:int**/
+/*cfe|cfe:builder.member: A.hashCode:int**/
+/*cfe|cfe:builder.member: A._simpleInstanceOfFalse:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: A._simpleInstanceOfTrue:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: A.==:bool* Function(dynamic)**/
 class A<T> {}
 
 /*class: A_Object:A<Object*>,A_Object,Object*/
+/*cfe|cfe:builder.member: A_Object.toString:String* Function()**/
+/*cfe|cfe:builder.member: A_Object.runtimeType:Type**/
+/*cfe|cfe:builder.member: A_Object._simpleInstanceOf:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: A_Object._instanceOf:bool* Function(dynamic, dynamic, dynamic)**/
+/*cfe|cfe:builder.member: A_Object.noSuchMethod:dynamic Function(Invocation*)**/
+/*cfe|cfe:builder.member: A_Object._identityHashCode:int**/
+/*cfe|cfe:builder.member: A_Object.hashCode:int**/
+/*cfe|cfe:builder.member: A_Object._simpleInstanceOfFalse:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: A_Object._simpleInstanceOfTrue:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: A_Object.==:bool* Function(dynamic)**/
 class A_Object implements A<Object> {}
diff --git a/pkg/_fe_analyzer_shared/test/inheritance/data/issue40524/main.dart b/pkg/_fe_analyzer_shared/test/inheritance/data/issue40524/main.dart
index 83ad4bb..9266296 100644
--- a/pkg/_fe_analyzer_shared/test/inheritance/data/issue40524/main.dart
+++ b/pkg/_fe_analyzer_shared/test/inheritance/data/issue40524/main.dart
@@ -7,11 +7,31 @@
 import "opt_out.dart";
 
 /*class: B:A<int?>,B,Object*/
+/*cfe|cfe:builder.member: B.toString:String* Function()**/
+/*cfe|cfe:builder.member: B.runtimeType:Type**/
+/*cfe|cfe:builder.member: B._simpleInstanceOf:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: B._instanceOf:bool* Function(dynamic, dynamic, dynamic)**/
+/*cfe|cfe:builder.member: B.noSuchMethod:dynamic Function(Invocation*)**/
+/*cfe|cfe:builder.member: B._identityHashCode:int**/
+/*cfe|cfe:builder.member: B.hashCode:int**/
+/*cfe|cfe:builder.member: B._simpleInstanceOfFalse:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: B._simpleInstanceOfTrue:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: B.==:bool* Function(dynamic)**/
 class B extends A<int?> {
   /*member: B.getType:Type* Function()**/
 }
 
 /*class: C:A<int?>,B,C,Object,out_int*/
+/*cfe|cfe:builder.member: C.toString:String* Function()**/
+/*cfe|cfe:builder.member: C.runtimeType:Type**/
+/*cfe|cfe:builder.member: C._simpleInstanceOf:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: C._instanceOf:bool* Function(dynamic, dynamic, dynamic)**/
+/*cfe|cfe:builder.member: C.noSuchMethod:dynamic Function(Invocation*)**/
+/*cfe|cfe:builder.member: C._identityHashCode:int**/
+/*cfe|cfe:builder.member: C.hashCode:int**/
+/*cfe|cfe:builder.member: C._simpleInstanceOfFalse:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: C._simpleInstanceOfTrue:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: C.==:bool* Function(dynamic)**/
 class C extends out_int implements B {
   /*member: C.getType:Type* Function()**/
 }
diff --git a/pkg/_fe_analyzer_shared/test/inheritance/data/issue40524/opt_out.dart b/pkg/_fe_analyzer_shared/test/inheritance/data/issue40524/opt_out.dart
index 1efd65b..0573a97 100644
--- a/pkg/_fe_analyzer_shared/test/inheritance/data/issue40524/opt_out.dart
+++ b/pkg/_fe_analyzer_shared/test/inheritance/data/issue40524/opt_out.dart
@@ -7,12 +7,32 @@
 // @dart=2.6
 
 /*class: A:A<T*>,Object*/
+/*cfe|cfe:builder.member: A.toString:String* Function()**/
+/*cfe|cfe:builder.member: A.runtimeType:Type**/
+/*cfe|cfe:builder.member: A._simpleInstanceOf:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: A._instanceOf:bool* Function(dynamic, dynamic, dynamic)**/
+/*cfe|cfe:builder.member: A.noSuchMethod:dynamic Function(Invocation*)**/
+/*cfe|cfe:builder.member: A._identityHashCode:int**/
+/*cfe|cfe:builder.member: A.hashCode:int**/
+/*cfe|cfe:builder.member: A._simpleInstanceOfFalse:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: A._simpleInstanceOfTrue:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: A.==:bool* Function(dynamic)**/
 class A<T> {
   /*member: A.getType:Type* Function()**/
   Type getType() => T;
 }
 
 /*class: out_int:A<int*>,Object,out_int*/
+/*cfe|cfe:builder.member: out_int.toString:String* Function()**/
+/*cfe|cfe:builder.member: out_int.runtimeType:Type**/
+/*cfe|cfe:builder.member: out_int._simpleInstanceOf:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: out_int._instanceOf:bool* Function(dynamic, dynamic, dynamic)**/
+/*cfe|cfe:builder.member: out_int.noSuchMethod:dynamic Function(Invocation*)**/
+/*cfe|cfe:builder.member: out_int._identityHashCode:int**/
+/*cfe|cfe:builder.member: out_int.hashCode:int**/
+/*cfe|cfe:builder.member: out_int._simpleInstanceOfFalse:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: out_int._simpleInstanceOfTrue:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: out_int.==:bool* Function(dynamic)**/
 class out_int extends A<int> {
   /*member: out_int.getType:Type* Function()**/
 }
diff --git a/pkg/_fe_analyzer_shared/test/inheritance/data/issue40553/main.dart b/pkg/_fe_analyzer_shared/test/inheritance/data/issue40553/main.dart
index f05435c..7fa31c0 100644
--- a/pkg/_fe_analyzer_shared/test/inheritance/data/issue40553/main.dart
+++ b/pkg/_fe_analyzer_shared/test/inheritance/data/issue40553/main.dart
@@ -10,11 +10,31 @@
 Type typeOf<X>() => X;
 
 /*class: C:A<FutureOr<int?>>,C,Object*/
+/*cfe|cfe:builder.member: C.toString:String* Function()**/
+/*cfe|cfe:builder.member: C.runtimeType:Type**/
+/*cfe|cfe:builder.member: C._simpleInstanceOf:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: C._instanceOf:bool* Function(dynamic, dynamic, dynamic)**/
+/*cfe|cfe:builder.member: C.noSuchMethod:dynamic Function(Invocation*)**/
+/*cfe|cfe:builder.member: C._identityHashCode:int**/
+/*cfe|cfe:builder.member: C.hashCode:int**/
+/*cfe|cfe:builder.member: C._simpleInstanceOfFalse:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: C._simpleInstanceOfTrue:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: C.==:bool* Function(dynamic)**/
 class C extends A<FutureOr<int?>> {
   /*member: C.getType:Type* Function()**/
 }
 
 /*class: D:A<FutureOr<int>>,D,Object*/
+/*cfe|cfe:builder.member: D.toString:String* Function()**/
+/*cfe|cfe:builder.member: D.runtimeType:Type**/
+/*cfe|cfe:builder.member: D._simpleInstanceOf:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: D._instanceOf:bool* Function(dynamic, dynamic, dynamic)**/
+/*cfe|cfe:builder.member: D.noSuchMethod:dynamic Function(Invocation*)**/
+/*cfe|cfe:builder.member: D._identityHashCode:int**/
+/*cfe|cfe:builder.member: D.hashCode:int**/
+/*cfe|cfe:builder.member: D._simpleInstanceOfFalse:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: D._simpleInstanceOfTrue:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: D.==:bool* Function(dynamic)**/
 class D extends A<FutureOr<int>> {
   /*member: D.getType:Type* Function()**/
 }
@@ -25,6 +45,16 @@
 /// NNBD_TOP_MERGE(FutureOr<int?>, FutureOr*<int*>) = FutureOr<int?>
 /*cfe|cfe:builder.class: E:A<FutureOr<int?>?>,B,C,E,Object*/
 /*analyzer.class: E:A<FutureOr<int?>>,B,C,E,Object*/
+/*cfe|cfe:builder.member: E.toString:String* Function()**/
+/*cfe|cfe:builder.member: E.runtimeType:Type**/
+/*cfe|cfe:builder.member: E._simpleInstanceOf:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: E._instanceOf:bool* Function(dynamic, dynamic, dynamic)**/
+/*cfe|cfe:builder.member: E.noSuchMethod:dynamic Function(Invocation*)**/
+/*cfe|cfe:builder.member: E._identityHashCode:int**/
+/*cfe|cfe:builder.member: E.hashCode:int**/
+/*cfe|cfe:builder.member: E._simpleInstanceOfFalse:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: E._simpleInstanceOfTrue:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: E.==:bool* Function(dynamic)**/
 class E extends B implements C {
   /*member: E.getType:Type* Function()**/
 }
diff --git a/pkg/_fe_analyzer_shared/test/inheritance/data/issue40553/opt_out.dart b/pkg/_fe_analyzer_shared/test/inheritance/data/issue40553/opt_out.dart
index 8647b27..0a692fa 100644
--- a/pkg/_fe_analyzer_shared/test/inheritance/data/issue40553/opt_out.dart
+++ b/pkg/_fe_analyzer_shared/test/inheritance/data/issue40553/opt_out.dart
@@ -8,12 +8,32 @@
 import "dart:async";
 
 /*class: A:A<T*>,Object*/
+/*cfe|cfe:builder.member: A.toString:String* Function()**/
+/*cfe|cfe:builder.member: A.runtimeType:Type**/
+/*cfe|cfe:builder.member: A._simpleInstanceOf:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: A._instanceOf:bool* Function(dynamic, dynamic, dynamic)**/
+/*cfe|cfe:builder.member: A.noSuchMethod:dynamic Function(Invocation*)**/
+/*cfe|cfe:builder.member: A._identityHashCode:int**/
+/*cfe|cfe:builder.member: A.hashCode:int**/
+/*cfe|cfe:builder.member: A._simpleInstanceOfFalse:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: A._simpleInstanceOfTrue:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: A.==:bool* Function(dynamic)**/
 class A<T> {
   /*member: A.getType:Type* Function()**/
   Type getType() => T;
 }
 
 /*class: B:A<FutureOr<int*>*>,B,Object*/
+/*cfe|cfe:builder.member: B.toString:String* Function()**/
+/*cfe|cfe:builder.member: B.runtimeType:Type**/
+/*cfe|cfe:builder.member: B._simpleInstanceOf:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: B._instanceOf:bool* Function(dynamic, dynamic, dynamic)**/
+/*cfe|cfe:builder.member: B.noSuchMethod:dynamic Function(Invocation*)**/
+/*cfe|cfe:builder.member: B._identityHashCode:int**/
+/*cfe|cfe:builder.member: B.hashCode:int**/
+/*cfe|cfe:builder.member: B._simpleInstanceOfFalse:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: B._simpleInstanceOfTrue:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: B.==:bool* Function(dynamic)**/
 class B extends A<FutureOr<int>> {
   /*member: B.getType:Type* Function()**/
 }
diff --git a/pkg/_fe_analyzer_shared/test/inheritance/data/member_from_opt_in/main.dart b/pkg/_fe_analyzer_shared/test/inheritance/data/member_from_opt_in/main.dart
index 4b43ac6..07fb2cf 100644
--- a/pkg/_fe_analyzer_shared/test/inheritance/data/member_from_opt_in/main.dart
+++ b/pkg/_fe_analyzer_shared/test/inheritance/data/member_from_opt_in/main.dart
@@ -9,21 +9,61 @@
 import 'opt_in.dart';
 
 /*class: LegacyClass:Class,LegacyClass,Object*/
+/*cfe|cfe:builder.member: LegacyClass.toString:String* Function()**/
+/*cfe|cfe:builder.member: LegacyClass.runtimeType:Type**/
+/*cfe|cfe:builder.member: LegacyClass._simpleInstanceOf:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: LegacyClass._instanceOf:bool* Function(dynamic, dynamic, dynamic)**/
+/*cfe|cfe:builder.member: LegacyClass.noSuchMethod:dynamic Function(Invocation*)**/
+/*cfe|cfe:builder.member: LegacyClass._identityHashCode:int**/
+/*cfe|cfe:builder.member: LegacyClass.hashCode:int**/
+/*cfe|cfe:builder.member: LegacyClass._simpleInstanceOfFalse:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: LegacyClass._simpleInstanceOfTrue:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: LegacyClass.==:bool* Function(dynamic)**/
 class LegacyClass extends Class {
   /*member: LegacyClass.method:int* Function(int*)**/
 }
 
 /*class: LegacyInterface:Interface,LegacyInterface,Object*/
+/*cfe|cfe:builder.member: LegacyInterface.toString:String* Function()**/
+/*cfe|cfe:builder.member: LegacyInterface.runtimeType:Type**/
+/*cfe|cfe:builder.member: LegacyInterface._simpleInstanceOf:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: LegacyInterface._instanceOf:bool* Function(dynamic, dynamic, dynamic)**/
+/*cfe|cfe:builder.member: LegacyInterface.noSuchMethod:dynamic Function(Invocation*)**/
+/*cfe|cfe:builder.member: LegacyInterface._identityHashCode:int**/
+/*cfe|cfe:builder.member: LegacyInterface.hashCode:int**/
+/*cfe|cfe:builder.member: LegacyInterface._simpleInstanceOfFalse:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: LegacyInterface._simpleInstanceOfTrue:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: LegacyInterface.==:bool* Function(dynamic)**/
 abstract class LegacyInterface implements Interface {
   /*member: LegacyInterface.method:int* Function(int*)**/
 }
 
 /*class: LegacySubClass:Class,Interface,LegacyClass,LegacyInterface,LegacySubClass,Object*/
+/*cfe|cfe:builder.member: LegacySubClass.toString:String* Function()**/
+/*cfe|cfe:builder.member: LegacySubClass.runtimeType:Type**/
+/*cfe|cfe:builder.member: LegacySubClass._simpleInstanceOf:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: LegacySubClass._instanceOf:bool* Function(dynamic, dynamic, dynamic)**/
+/*cfe|cfe:builder.member: LegacySubClass.noSuchMethod:dynamic Function(Invocation*)**/
+/*cfe|cfe:builder.member: LegacySubClass._identityHashCode:int**/
+/*cfe|cfe:builder.member: LegacySubClass.hashCode:int**/
+/*cfe|cfe:builder.member: LegacySubClass._simpleInstanceOfFalse:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: LegacySubClass._simpleInstanceOfTrue:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: LegacySubClass.==:bool* Function(dynamic)**/
 class LegacySubClass extends LegacyClass implements LegacyInterface {
   /*member: LegacySubClass.method:int* Function(int*)**/
 }
 
 /*class: LegacyClass2:Class2,Interface,LegacyClass2,Object*/
+/*cfe|cfe:builder.member: LegacyClass2.toString:String* Function()**/
+/*cfe|cfe:builder.member: LegacyClass2.runtimeType:Type**/
+/*cfe|cfe:builder.member: LegacyClass2._simpleInstanceOf:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: LegacyClass2._instanceOf:bool* Function(dynamic, dynamic, dynamic)**/
+/*cfe|cfe:builder.member: LegacyClass2.noSuchMethod:dynamic Function(Invocation*)**/
+/*cfe|cfe:builder.member: LegacyClass2._identityHashCode:int**/
+/*cfe|cfe:builder.member: LegacyClass2.hashCode:int**/
+/*cfe|cfe:builder.member: LegacyClass2._simpleInstanceOfFalse:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: LegacyClass2._simpleInstanceOfTrue:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: LegacyClass2.==:bool* Function(dynamic)**/
 abstract class LegacyClass2 extends Class2 {
   /*member: LegacyClass2.method:int* Function(int*)**/
 }
diff --git a/pkg/_fe_analyzer_shared/test/inheritance/data/member_from_opt_out/main.dart b/pkg/_fe_analyzer_shared/test/inheritance/data/member_from_opt_out/main.dart
index ebe48e3..9a7c312 100644
--- a/pkg/_fe_analyzer_shared/test/inheritance/data/member_from_opt_out/main.dart
+++ b/pkg/_fe_analyzer_shared/test/inheritance/data/member_from_opt_out/main.dart
@@ -13,6 +13,16 @@
 }
 
 /*class: Class:Class,Interface,LegacyClass,Object*/
+/*cfe|cfe:builder.member: Class.toString:String Function()*/
+/*cfe|cfe:builder.member: Class.runtimeType:Type*/
+/*cfe|cfe:builder.member: Class._simpleInstanceOf:bool Function(dynamic)*/
+/*cfe|cfe:builder.member: Class._instanceOf:bool Function(dynamic, dynamic, dynamic)*/
+/*cfe|cfe:builder.member: Class.noSuchMethod:dynamic Function(Invocation)*/
+/*cfe|cfe:builder.member: Class._identityHashCode:int*/
+/*cfe|cfe:builder.member: Class.hashCode:int*/
+/*cfe|cfe:builder.member: Class._simpleInstanceOfFalse:bool Function(dynamic)*/
+/*cfe|cfe:builder.member: Class._simpleInstanceOfTrue:bool Function(dynamic)*/
+/*cfe|cfe:builder.member: Class.==:bool* Function(dynamic)**/
 abstract class Class extends LegacyClass implements Interface {
   /*member: Class.method:int Function(int?)*/
 }
diff --git a/pkg/_fe_analyzer_shared/test/inheritance/data/member_from_opt_out/opt_out.dart b/pkg/_fe_analyzer_shared/test/inheritance/data/member_from_opt_out/opt_out.dart
index 50be618..fbeccca 100644
--- a/pkg/_fe_analyzer_shared/test/inheritance/data/member_from_opt_out/opt_out.dart
+++ b/pkg/_fe_analyzer_shared/test/inheritance/data/member_from_opt_out/opt_out.dart
@@ -7,6 +7,16 @@
 // @dart=2.6
 
 /*class: LegacyClass:LegacyClass,Object*/
+/*cfe|cfe:builder.member: LegacyClass.toString:String* Function()**/
+/*cfe|cfe:builder.member: LegacyClass.runtimeType:Type**/
+/*cfe|cfe:builder.member: LegacyClass._simpleInstanceOf:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: LegacyClass._instanceOf:bool* Function(dynamic, dynamic, dynamic)**/
+/*cfe|cfe:builder.member: LegacyClass.noSuchMethod:dynamic Function(Invocation*)**/
+/*cfe|cfe:builder.member: LegacyClass._identityHashCode:int**/
+/*cfe|cfe:builder.member: LegacyClass.hashCode:int**/
+/*cfe|cfe:builder.member: LegacyClass._simpleInstanceOfFalse:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: LegacyClass._simpleInstanceOfTrue:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: LegacyClass.==:bool* Function(dynamic)**/
 class LegacyClass {
   /*member: LegacyClass.method:int* Function(int*)**/
   int method(int i) => i;
diff --git a/pkg/_fe_analyzer_shared/test/inheritance/data/members_from_opt_in/main.dart b/pkg/_fe_analyzer_shared/test/inheritance/data/members_from_opt_in/main.dart
index 5cadc1d..2c891f3 100644
--- a/pkg/_fe_analyzer_shared/test/inheritance/data/members_from_opt_in/main.dart
+++ b/pkg/_fe_analyzer_shared/test/inheritance/data/members_from_opt_in/main.dart
@@ -9,6 +9,16 @@
 import 'opt_in.dart';
 
 /*class: LegacyClass:Class,Interface,LegacyClass,Object*/
+/*cfe|cfe:builder.member: LegacyClass.toString:String* Function()**/
+/*cfe|cfe:builder.member: LegacyClass.runtimeType:Type**/
+/*cfe|cfe:builder.member: LegacyClass._simpleInstanceOf:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: LegacyClass._instanceOf:bool* Function(dynamic, dynamic, dynamic)**/
+/*cfe|cfe:builder.member: LegacyClass.noSuchMethod:dynamic Function(Invocation*)**/
+/*cfe|cfe:builder.member: LegacyClass._identityHashCode:int**/
+/*cfe|cfe:builder.member: LegacyClass.hashCode:int**/
+/*cfe|cfe:builder.member: LegacyClass._simpleInstanceOfFalse:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: LegacyClass._simpleInstanceOfTrue:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: LegacyClass.==:bool* Function(dynamic)**/
 class LegacyClass extends Class implements Interface {
   /*member: LegacyClass.method1:int* Function()**/
   /*member: LegacyClass.method2:int* Function()**/
@@ -127,6 +137,16 @@
 }
 
 /*class: LegacyClass2a:Class,LegacyClass2a,Object*/
+/*cfe|cfe:builder.member: LegacyClass2a.toString:String* Function()**/
+/*cfe|cfe:builder.member: LegacyClass2a.runtimeType:Type**/
+/*cfe|cfe:builder.member: LegacyClass2a._simpleInstanceOf:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: LegacyClass2a._instanceOf:bool* Function(dynamic, dynamic, dynamic)**/
+/*cfe|cfe:builder.member: LegacyClass2a.noSuchMethod:dynamic Function(Invocation*)**/
+/*cfe|cfe:builder.member: LegacyClass2a._identityHashCode:int**/
+/*cfe|cfe:builder.member: LegacyClass2a.hashCode:int**/
+/*cfe|cfe:builder.member: LegacyClass2a._simpleInstanceOfFalse:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: LegacyClass2a._simpleInstanceOfTrue:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: LegacyClass2a.==:bool* Function(dynamic)**/
 abstract class LegacyClass2a extends Class {
   /*member: LegacyClass2a.field1:int**/
   /*member: LegacyClass2a.field1=:int**/
@@ -167,6 +187,16 @@
 }
 
 /*class: LegacyInterface2:Interface,LegacyInterface2,Object*/
+/*cfe|cfe:builder.member: LegacyInterface2.toString:String* Function()**/
+/*cfe|cfe:builder.member: LegacyInterface2.runtimeType:Type**/
+/*cfe|cfe:builder.member: LegacyInterface2._simpleInstanceOf:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: LegacyInterface2._instanceOf:bool* Function(dynamic, dynamic, dynamic)**/
+/*cfe|cfe:builder.member: LegacyInterface2.noSuchMethod:dynamic Function(Invocation*)**/
+/*cfe|cfe:builder.member: LegacyInterface2._identityHashCode:int**/
+/*cfe|cfe:builder.member: LegacyInterface2.hashCode:int**/
+/*cfe|cfe:builder.member: LegacyInterface2._simpleInstanceOfFalse:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: LegacyInterface2._simpleInstanceOfTrue:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: LegacyInterface2.==:bool* Function(dynamic)**/
 abstract class LegacyInterface2 implements Interface {
   /*member: LegacyInterface2.field1:int**/
   /*member: LegacyInterface2.field1=:int**/
@@ -225,6 +255,16 @@
 }
 
 /*class: LegacyClass2b:Class,Interface,LegacyClass2a,LegacyClass2b,LegacyInterface2,Object*/
+/*cfe|cfe:builder.member: LegacyClass2b.toString:String* Function()**/
+/*cfe|cfe:builder.member: LegacyClass2b.runtimeType:Type**/
+/*cfe|cfe:builder.member: LegacyClass2b._simpleInstanceOf:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: LegacyClass2b._instanceOf:bool* Function(dynamic, dynamic, dynamic)**/
+/*cfe|cfe:builder.member: LegacyClass2b.noSuchMethod:dynamic Function(Invocation*)**/
+/*cfe|cfe:builder.member: LegacyClass2b._identityHashCode:int**/
+/*cfe|cfe:builder.member: LegacyClass2b.hashCode:int**/
+/*cfe|cfe:builder.member: LegacyClass2b._simpleInstanceOfFalse:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: LegacyClass2b._simpleInstanceOfTrue:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: LegacyClass2b.==:bool* Function(dynamic)**/
 abstract class LegacyClass2b extends LegacyClass2a implements LegacyInterface2 {
   /*member: LegacyClass2b.field1:int**/
   /*member: LegacyClass2b.field1=:int**/
@@ -289,6 +329,16 @@
 }
 
 /*class: LegacyGenericClass1:GenericInterface<T*>,LegacyGenericClass1<T*>,Object*/
+/*cfe|cfe:builder.member: LegacyGenericClass1.toString:String* Function()**/
+/*cfe|cfe:builder.member: LegacyGenericClass1.runtimeType:Type**/
+/*cfe|cfe:builder.member: LegacyGenericClass1._simpleInstanceOf:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: LegacyGenericClass1._instanceOf:bool* Function(dynamic, dynamic, dynamic)**/
+/*cfe|cfe:builder.member: LegacyGenericClass1.noSuchMethod:dynamic Function(Invocation*)**/
+/*cfe|cfe:builder.member: LegacyGenericClass1._identityHashCode:int**/
+/*cfe|cfe:builder.member: LegacyGenericClass1.hashCode:int**/
+/*cfe|cfe:builder.member: LegacyGenericClass1._simpleInstanceOfFalse:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: LegacyGenericClass1._simpleInstanceOfTrue:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: LegacyGenericClass1.==:bool* Function(dynamic)**/
 abstract class LegacyGenericClass1<T> implements GenericInterface<T> {
   /*member: LegacyGenericClass1.genericMethod1:S* Function<S>(T*, S*, {T* c, S* d})**/
   /*member: LegacyGenericClass1.genericMethod2:S* Function<S>(T*, S*, [T*, S*])**/
diff --git a/pkg/_fe_analyzer_shared/test/inheritance/data/members_from_opt_out/main.dart b/pkg/_fe_analyzer_shared/test/inheritance/data/members_from_opt_out/main.dart
index 3f043b7..fdf681b 100644
--- a/pkg/_fe_analyzer_shared/test/inheritance/data/members_from_opt_out/main.dart
+++ b/pkg/_fe_analyzer_shared/test/inheritance/data/members_from_opt_out/main.dart
@@ -113,6 +113,16 @@
 /*member: Class1.field4=:int**/
 /*member: Class1.field5=:int**/
 /*member: Class1.field6=:int**/
+/*cfe|cfe:builder.member: Class1.toString:String* Function()**/
+/*cfe|cfe:builder.member: Class1.runtimeType:Type**/
+/*cfe|cfe:builder.member: Class1._simpleInstanceOf:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: Class1._instanceOf:bool* Function(dynamic, dynamic, dynamic)**/
+/*cfe|cfe:builder.member: Class1.noSuchMethod:dynamic Function(Invocation*)**/
+/*cfe|cfe:builder.member: Class1._identityHashCode:int**/
+/*cfe|cfe:builder.member: Class1.hashCode:int**/
+/*cfe|cfe:builder.member: Class1._simpleInstanceOfFalse:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: Class1._simpleInstanceOfTrue:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: Class1.==:bool* Function(dynamic)**/
 class Class1 extends LegacyClass {
   /*member: Class1.method1:int* Function()**/
   /*member: Class1.method2:int* Function()**/
@@ -147,6 +157,16 @@
 }
 
 /*class: Class2a:Class2a,Interface,LegacyClass,Object*/
+/*cfe|cfe:builder.member: Class2a.toString:String Function()*/
+/*cfe|cfe:builder.member: Class2a.runtimeType:Type*/
+/*cfe|cfe:builder.member: Class2a._simpleInstanceOf:bool Function(dynamic)*/
+/*cfe|cfe:builder.member: Class2a._instanceOf:bool Function(dynamic, dynamic, dynamic)*/
+/*cfe|cfe:builder.member: Class2a.noSuchMethod:dynamic Function(Invocation)*/
+/*cfe|cfe:builder.member: Class2a._identityHashCode:int*/
+/*cfe|cfe:builder.member: Class2a.hashCode:int*/
+/*cfe|cfe:builder.member: Class2a._simpleInstanceOfFalse:bool Function(dynamic)*/
+/*cfe|cfe:builder.member: Class2a._simpleInstanceOfTrue:bool Function(dynamic)*/
+/*cfe|cfe:builder.member: Class2a.==:bool* Function(dynamic)**/
 class Class2a extends LegacyClass implements Interface {
   /*member: Class2a.method1:int Function()*/
 
@@ -210,6 +230,16 @@
 }
 
 /*class: Class2b:Class2b,Interface,LegacyClass,Object*/
+/*cfe|cfe:builder.member: Class2b.toString:String Function()*/
+/*cfe|cfe:builder.member: Class2b.runtimeType:Type*/
+/*cfe|cfe:builder.member: Class2b._simpleInstanceOf:bool Function(dynamic)*/
+/*cfe|cfe:builder.member: Class2b._instanceOf:bool Function(dynamic, dynamic, dynamic)*/
+/*cfe|cfe:builder.member: Class2b.noSuchMethod:dynamic Function(Invocation)*/
+/*cfe|cfe:builder.member: Class2b._identityHashCode:int*/
+/*cfe|cfe:builder.member: Class2b.hashCode:int*/
+/*cfe|cfe:builder.member: Class2b._simpleInstanceOfFalse:bool Function(dynamic)*/
+/*cfe|cfe:builder.member: Class2b._simpleInstanceOfTrue:bool Function(dynamic)*/
+/*cfe|cfe:builder.member: Class2b.==:bool* Function(dynamic)**/
 class Class2b extends LegacyClass implements Interface {
   /*member: Class2b.method1:int Function()*/
   int method1() => 0;
@@ -309,16 +339,46 @@
 }
 
 /*class: Class3a:Class3a,GenericLegacyClass<int>,Object*/
+/*cfe|cfe:builder.member: Class3a.toString:String* Function()**/
+/*cfe|cfe:builder.member: Class3a.runtimeType:Type**/
+/*cfe|cfe:builder.member: Class3a._simpleInstanceOf:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: Class3a._instanceOf:bool* Function(dynamic, dynamic, dynamic)**/
+/*cfe|cfe:builder.member: Class3a.noSuchMethod:dynamic Function(Invocation*)**/
+/*cfe|cfe:builder.member: Class3a._identityHashCode:int**/
+/*cfe|cfe:builder.member: Class3a.hashCode:int**/
+/*cfe|cfe:builder.member: Class3a._simpleInstanceOfFalse:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: Class3a._simpleInstanceOfTrue:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: Class3a.==:bool* Function(dynamic)**/
 class Class3a extends GenericLegacyClass<int> {
   /*member: Class3a.method1:int* Function()**/
 }
 
 /*class: Class3b:Class3b,GenericLegacyClass<int?>,Object*/
+/*cfe|cfe:builder.member: Class3b.toString:String* Function()**/
+/*cfe|cfe:builder.member: Class3b.runtimeType:Type**/
+/*cfe|cfe:builder.member: Class3b._simpleInstanceOf:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: Class3b._instanceOf:bool* Function(dynamic, dynamic, dynamic)**/
+/*cfe|cfe:builder.member: Class3b.noSuchMethod:dynamic Function(Invocation*)**/
+/*cfe|cfe:builder.member: Class3b._identityHashCode:int**/
+/*cfe|cfe:builder.member: Class3b.hashCode:int**/
+/*cfe|cfe:builder.member: Class3b._simpleInstanceOfFalse:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: Class3b._simpleInstanceOfTrue:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: Class3b.==:bool* Function(dynamic)**/
 class Class3b extends GenericLegacyClass<int?> {
   /*member: Class3b.method1:int? Function()**/
 }
 
 /*class: Class3c:Class3c<S>,GenericLegacyClass<S>,Object*/
+/*cfe|cfe:builder.member: Class3c.toString:String* Function()**/
+/*cfe|cfe:builder.member: Class3c.runtimeType:Type**/
+/*cfe|cfe:builder.member: Class3c._simpleInstanceOf:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: Class3c._instanceOf:bool* Function(dynamic, dynamic, dynamic)**/
+/*cfe|cfe:builder.member: Class3c.noSuchMethod:dynamic Function(Invocation*)**/
+/*cfe|cfe:builder.member: Class3c._identityHashCode:int**/
+/*cfe|cfe:builder.member: Class3c.hashCode:int**/
+/*cfe|cfe:builder.member: Class3c._simpleInstanceOfFalse:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: Class3c._simpleInstanceOfTrue:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: Class3c.==:bool* Function(dynamic)**/
 class Class3c<S> extends GenericLegacyClass<S> {
   /*member: Class3c.method1:S* Function()**/
 }
diff --git a/pkg/_fe_analyzer_shared/test/inheritance/data/members_from_opt_out/opt_out.dart b/pkg/_fe_analyzer_shared/test/inheritance/data/members_from_opt_out/opt_out.dart
index ea49b9879..4ef3e61 100644
--- a/pkg/_fe_analyzer_shared/test/inheritance/data/members_from_opt_out/opt_out.dart
+++ b/pkg/_fe_analyzer_shared/test/inheritance/data/members_from_opt_out/opt_out.dart
@@ -8,6 +8,16 @@
 library opt_out;
 
 /*class: LegacyClass:LegacyClass,Object*/
+/*cfe|cfe:builder.member: LegacyClass.toString:String* Function()**/
+/*cfe|cfe:builder.member: LegacyClass.runtimeType:Type**/
+/*cfe|cfe:builder.member: LegacyClass._simpleInstanceOf:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: LegacyClass._instanceOf:bool* Function(dynamic, dynamic, dynamic)**/
+/*cfe|cfe:builder.member: LegacyClass.noSuchMethod:dynamic Function(Invocation*)**/
+/*cfe|cfe:builder.member: LegacyClass._identityHashCode:int**/
+/*cfe|cfe:builder.member: LegacyClass.hashCode:int**/
+/*cfe|cfe:builder.member: LegacyClass._simpleInstanceOfFalse:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: LegacyClass._simpleInstanceOfTrue:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: LegacyClass.==:bool* Function(dynamic)**/
 class LegacyClass {
   /*member: LegacyClass.method1:int* Function()**/
   int method1() => 0;
@@ -107,6 +117,16 @@
 }
 
 /*class: GenericLegacyClass:GenericLegacyClass<T*>,Object*/
+/*cfe|cfe:builder.member: GenericLegacyClass.toString:String* Function()**/
+/*cfe|cfe:builder.member: GenericLegacyClass.runtimeType:Type**/
+/*cfe|cfe:builder.member: GenericLegacyClass._simpleInstanceOf:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: GenericLegacyClass._instanceOf:bool* Function(dynamic, dynamic, dynamic)**/
+/*cfe|cfe:builder.member: GenericLegacyClass.noSuchMethod:dynamic Function(Invocation*)**/
+/*cfe|cfe:builder.member: GenericLegacyClass._identityHashCode:int**/
+/*cfe|cfe:builder.member: GenericLegacyClass.hashCode:int**/
+/*cfe|cfe:builder.member: GenericLegacyClass._simpleInstanceOfFalse:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: GenericLegacyClass._simpleInstanceOfTrue:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: GenericLegacyClass.==:bool* Function(dynamic)**/
 class GenericLegacyClass<T> {
   /*member: GenericLegacyClass.method1:T* Function()**/
   T method1() => null;
diff --git a/pkg/_fe_analyzer_shared/test/inheritance/data/members_opt_out.dart b/pkg/_fe_analyzer_shared/test/inheritance/data/members_opt_out.dart
index 6534bca..022c702 100644
--- a/pkg/_fe_analyzer_shared/test/inheritance/data/members_opt_out.dart
+++ b/pkg/_fe_analyzer_shared/test/inheritance/data/members_opt_out.dart
@@ -7,84 +7,224 @@
 /*library: nnbd=false*/
 
 /*class: A1:A1,Object*/
+/*cfe|cfe:builder.member: A1.toString:String* Function()**/
+/*cfe|cfe:builder.member: A1.runtimeType:Type**/
+/*cfe|cfe:builder.member: A1._simpleInstanceOf:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: A1._instanceOf:bool* Function(dynamic, dynamic, dynamic)**/
+/*cfe|cfe:builder.member: A1.noSuchMethod:dynamic Function(Invocation*)**/
+/*cfe|cfe:builder.member: A1._identityHashCode:int**/
+/*cfe|cfe:builder.member: A1.hashCode:int**/
+/*cfe|cfe:builder.member: A1._simpleInstanceOfFalse:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: A1._simpleInstanceOfTrue:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: A1.==:bool* Function(dynamic)**/
 abstract class A1 {
   /*member: A1.close:void Function()**/
   void close();
 }
 
 /*class: B1:B1,Object*/
+/*cfe|cfe:builder.member: B1.toString:String* Function()**/
+/*cfe|cfe:builder.member: B1.runtimeType:Type**/
+/*cfe|cfe:builder.member: B1._simpleInstanceOf:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: B1._instanceOf:bool* Function(dynamic, dynamic, dynamic)**/
+/*cfe|cfe:builder.member: B1.noSuchMethod:dynamic Function(Invocation*)**/
+/*cfe|cfe:builder.member: B1._identityHashCode:int**/
+/*cfe|cfe:builder.member: B1.hashCode:int**/
+/*cfe|cfe:builder.member: B1._simpleInstanceOfFalse:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: B1._simpleInstanceOfTrue:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: B1.==:bool* Function(dynamic)**/
 abstract class B1 {
   /*member: B1.close:Object* Function()**/
   Object close();
 }
 
 /*class: C1a:A1,B1,C1a,Object*/
+/*cfe|cfe:builder.member: C1a.toString:String* Function()**/
+/*cfe|cfe:builder.member: C1a.runtimeType:Type**/
+/*cfe|cfe:builder.member: C1a._simpleInstanceOf:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: C1a._instanceOf:bool* Function(dynamic, dynamic, dynamic)**/
+/*cfe|cfe:builder.member: C1a.noSuchMethod:dynamic Function(Invocation*)**/
+/*cfe|cfe:builder.member: C1a._identityHashCode:int**/
+/*cfe|cfe:builder.member: C1a.hashCode:int**/
+/*cfe|cfe:builder.member: C1a._simpleInstanceOfFalse:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: C1a._simpleInstanceOfTrue:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: C1a.==:bool* Function(dynamic)**/
 abstract class C1a implements A1, B1 {
   /*member: C1a.close:Object* Function()**/
   Object close();
 }
 
 /*class: C1b:A1,B1,C1b,Object*/
+/*cfe|cfe:builder.member: C1b.toString:String* Function()**/
+/*cfe|cfe:builder.member: C1b.runtimeType:Type**/
+/*cfe|cfe:builder.member: C1b._simpleInstanceOf:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: C1b._instanceOf:bool* Function(dynamic, dynamic, dynamic)**/
+/*cfe|cfe:builder.member: C1b.noSuchMethod:dynamic Function(Invocation*)**/
+/*cfe|cfe:builder.member: C1b._identityHashCode:int**/
+/*cfe|cfe:builder.member: C1b.hashCode:int**/
+/*cfe|cfe:builder.member: C1b._simpleInstanceOfFalse:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: C1b._simpleInstanceOfTrue:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: C1b.==:bool* Function(dynamic)**/
 abstract class C1b implements B1, A1 {
   /*member: C1b.close:Object* Function()**/
   Object close();
 }
 
 /*class: A2:A2<T*>,Object*/
+/*cfe|cfe:builder.member: A2.toString:String* Function()**/
+/*cfe|cfe:builder.member: A2.runtimeType:Type**/
+/*cfe|cfe:builder.member: A2._simpleInstanceOf:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: A2._instanceOf:bool* Function(dynamic, dynamic, dynamic)**/
+/*cfe|cfe:builder.member: A2.noSuchMethod:dynamic Function(Invocation*)**/
+/*cfe|cfe:builder.member: A2._identityHashCode:int**/
+/*cfe|cfe:builder.member: A2.hashCode:int**/
+/*cfe|cfe:builder.member: A2._simpleInstanceOfFalse:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: A2._simpleInstanceOfTrue:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: A2.==:bool* Function(dynamic)**/
 abstract class A2<T> {
   /*member: A2.close:void Function()**/
   void close();
 }
 
 /*class: B2a:B2a<T*>,Object*/
+/*cfe|cfe:builder.member: B2a.toString:String* Function()**/
+/*cfe|cfe:builder.member: B2a.runtimeType:Type**/
+/*cfe|cfe:builder.member: B2a._simpleInstanceOf:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: B2a._instanceOf:bool* Function(dynamic, dynamic, dynamic)**/
+/*cfe|cfe:builder.member: B2a.noSuchMethod:dynamic Function(Invocation*)**/
+/*cfe|cfe:builder.member: B2a._identityHashCode:int**/
+/*cfe|cfe:builder.member: B2a.hashCode:int**/
+/*cfe|cfe:builder.member: B2a._simpleInstanceOfFalse:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: B2a._simpleInstanceOfTrue:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: B2a.==:bool* Function(dynamic)**/
 abstract class B2a<T> {
   /*member: B2a.close:Object* Function()**/
   Object close();
 }
 
 /*class: B2b:B2a<dynamic>,B2b<T*>,Object*/
+/*cfe|cfe:builder.member: B2b.toString:String* Function()**/
+/*cfe|cfe:builder.member: B2b.runtimeType:Type**/
+/*cfe|cfe:builder.member: B2b._simpleInstanceOf:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: B2b._instanceOf:bool* Function(dynamic, dynamic, dynamic)**/
+/*cfe|cfe:builder.member: B2b.noSuchMethod:dynamic Function(Invocation*)**/
+/*cfe|cfe:builder.member: B2b._identityHashCode:int**/
+/*cfe|cfe:builder.member: B2b.hashCode:int**/
+/*cfe|cfe:builder.member: B2b._simpleInstanceOfFalse:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: B2b._simpleInstanceOfTrue:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: B2b.==:bool* Function(dynamic)**/
 abstract class B2b<T> implements B2a {
   /*member: B2b.close:Object* Function()**/
   Object close();
 }
 
 /*class: C2a:A2<T*>,B2a<dynamic>,B2b<T*>,C2a<T*>,Object*/
+/*cfe|cfe:builder.member: C2a.toString:String* Function()**/
+/*cfe|cfe:builder.member: C2a.runtimeType:Type**/
+/*cfe|cfe:builder.member: C2a._simpleInstanceOf:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: C2a._instanceOf:bool* Function(dynamic, dynamic, dynamic)**/
+/*cfe|cfe:builder.member: C2a.noSuchMethod:dynamic Function(Invocation*)**/
+/*cfe|cfe:builder.member: C2a._identityHashCode:int**/
+/*cfe|cfe:builder.member: C2a.hashCode:int**/
+/*cfe|cfe:builder.member: C2a._simpleInstanceOfFalse:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: C2a._simpleInstanceOfTrue:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: C2a.==:bool* Function(dynamic)**/
 abstract class C2a<T> implements A2<T>, B2b<T> {
   /*member: C2a.close:Object* Function()**/
   Object close();
 }
 
 /*class: C2b:A2<T*>,B2a<dynamic>,B2b<T*>,C2b<T*>,Object*/
+/*cfe|cfe:builder.member: C2b.toString:String* Function()**/
+/*cfe|cfe:builder.member: C2b.runtimeType:Type**/
+/*cfe|cfe:builder.member: C2b._simpleInstanceOf:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: C2b._instanceOf:bool* Function(dynamic, dynamic, dynamic)**/
+/*cfe|cfe:builder.member: C2b.noSuchMethod:dynamic Function(Invocation*)**/
+/*cfe|cfe:builder.member: C2b._identityHashCode:int**/
+/*cfe|cfe:builder.member: C2b.hashCode:int**/
+/*cfe|cfe:builder.member: C2b._simpleInstanceOfFalse:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: C2b._simpleInstanceOfTrue:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: C2b.==:bool* Function(dynamic)**/
 abstract class C2b<T> implements B2b<T>, A2<T> {
   /*member: C2b.close:Object* Function()**/
   Object close();
 }
 
 /*class: A3a:A3a<T*>,Object*/
+/*cfe|cfe:builder.member: A3a.toString:String* Function()**/
+/*cfe|cfe:builder.member: A3a.runtimeType:Type**/
+/*cfe|cfe:builder.member: A3a._simpleInstanceOf:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: A3a._instanceOf:bool* Function(dynamic, dynamic, dynamic)**/
+/*cfe|cfe:builder.member: A3a.noSuchMethod:dynamic Function(Invocation*)**/
+/*cfe|cfe:builder.member: A3a._identityHashCode:int**/
+/*cfe|cfe:builder.member: A3a.hashCode:int**/
+/*cfe|cfe:builder.member: A3a._simpleInstanceOfFalse:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: A3a._simpleInstanceOfTrue:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: A3a.==:bool* Function(dynamic)**/
 abstract class A3a<T> {
   /*member: A3a.close:void Function()**/
   void close();
 }
 
 /*class: A3b:A3a<T*>,A3b<T*>,Object*/
+/*cfe|cfe:builder.member: A3b.toString:String* Function()**/
+/*cfe|cfe:builder.member: A3b.runtimeType:Type**/
+/*cfe|cfe:builder.member: A3b._simpleInstanceOf:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: A3b._instanceOf:bool* Function(dynamic, dynamic, dynamic)**/
+/*cfe|cfe:builder.member: A3b.noSuchMethod:dynamic Function(Invocation*)**/
+/*cfe|cfe:builder.member: A3b._identityHashCode:int**/
+/*cfe|cfe:builder.member: A3b.hashCode:int**/
+/*cfe|cfe:builder.member: A3b._simpleInstanceOfFalse:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: A3b._simpleInstanceOfTrue:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: A3b.==:bool* Function(dynamic)**/
 abstract class A3b<T> implements A3a<T> {
   /*member: A3b.close:void Function()**/
   void close();
 }
 
 /*class: B3:B3<T*>,Object*/
+/*cfe|cfe:builder.member: B3.toString:String* Function()**/
+/*cfe|cfe:builder.member: B3.runtimeType:Type**/
+/*cfe|cfe:builder.member: B3._simpleInstanceOf:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: B3._instanceOf:bool* Function(dynamic, dynamic, dynamic)**/
+/*cfe|cfe:builder.member: B3.noSuchMethod:dynamic Function(Invocation*)**/
+/*cfe|cfe:builder.member: B3._identityHashCode:int**/
+/*cfe|cfe:builder.member: B3.hashCode:int**/
+/*cfe|cfe:builder.member: B3._simpleInstanceOfFalse:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: B3._simpleInstanceOfTrue:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: B3.==:bool* Function(dynamic)**/
 abstract class B3<T> {
   /*member: B3.close:Object* Function()**/
   Object close();
 }
 
 /*class: C3a:A3a<T*>,A3b<T*>,B3<T*>,C3a<T*>,Object*/
+/*cfe|cfe:builder.member: C3a.toString:String* Function()**/
+/*cfe|cfe:builder.member: C3a.runtimeType:Type**/
+/*cfe|cfe:builder.member: C3a._simpleInstanceOf:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: C3a._instanceOf:bool* Function(dynamic, dynamic, dynamic)**/
+/*cfe|cfe:builder.member: C3a.noSuchMethod:dynamic Function(Invocation*)**/
+/*cfe|cfe:builder.member: C3a._identityHashCode:int**/
+/*cfe|cfe:builder.member: C3a.hashCode:int**/
+/*cfe|cfe:builder.member: C3a._simpleInstanceOfFalse:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: C3a._simpleInstanceOfTrue:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: C3a.==:bool* Function(dynamic)**/
 abstract class C3a<T> implements A3b<T>, B3<T> {
   /*member: C3a.close:Object* Function()**/
   Object close();
 }
 
 /*class: C3b:A3a<T*>,A3b<T*>,B3<T*>,C3b<T*>,Object*/
+/*cfe|cfe:builder.member: C3b.toString:String* Function()**/
+/*cfe|cfe:builder.member: C3b.runtimeType:Type**/
+/*cfe|cfe:builder.member: C3b._simpleInstanceOf:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: C3b._instanceOf:bool* Function(dynamic, dynamic, dynamic)**/
+/*cfe|cfe:builder.member: C3b.noSuchMethod:dynamic Function(Invocation*)**/
+/*cfe|cfe:builder.member: C3b._identityHashCode:int**/
+/*cfe|cfe:builder.member: C3b.hashCode:int**/
+/*cfe|cfe:builder.member: C3b._simpleInstanceOfFalse:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: C3b._simpleInstanceOfTrue:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: C3b.==:bool* Function(dynamic)**/
 abstract class C3b<T> implements B3<T>, A3b<T> {
   /*member: C3b.close:Object* Function()**/
   Object close();
diff --git a/pkg/_fe_analyzer_shared/test/inheritance/data/nsm_from_opt_in/main.dart b/pkg/_fe_analyzer_shared/test/inheritance/data/nsm_from_opt_in/main.dart
index 4a580a1..65fc5c0 100644
--- a/pkg/_fe_analyzer_shared/test/inheritance/data/nsm_from_opt_in/main.dart
+++ b/pkg/_fe_analyzer_shared/test/inheritance/data/nsm_from_opt_in/main.dart
@@ -9,6 +9,15 @@
 import 'opt_in.dart';
 
 /*class: B2:A,B2,C2,Object*/
+/*cfe|cfe:builder.member: B2.toString:String* Function()**/
+/*cfe|cfe:builder.member: B2.runtimeType:Type**/
+/*cfe|cfe:builder.member: B2._simpleInstanceOf:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: B2._instanceOf:bool* Function(dynamic, dynamic, dynamic)**/
+/*cfe|cfe:builder.member: B2._identityHashCode:int**/
+/*cfe|cfe:builder.member: B2.hashCode:int**/
+/*cfe|cfe:builder.member: B2._simpleInstanceOfFalse:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: B2._simpleInstanceOfTrue:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: B2.==:bool* Function(dynamic)**/
 abstract class B2 extends A implements C2 {
   /*member: B2.method:int* Function(int*, {dynamic optional})**/
 
@@ -19,6 +28,16 @@
 }
 
 /*class: C2:C2,Object*/
+/*cfe|cfe:builder.member: C2.toString:String* Function()**/
+/*cfe|cfe:builder.member: C2.runtimeType:Type**/
+/*cfe|cfe:builder.member: C2._simpleInstanceOf:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: C2._instanceOf:bool* Function(dynamic, dynamic, dynamic)**/
+/*cfe|cfe:builder.member: C2.noSuchMethod:dynamic Function(Invocation*)**/
+/*cfe|cfe:builder.member: C2._identityHashCode:int**/
+/*cfe|cfe:builder.member: C2.hashCode:int**/
+/*cfe|cfe:builder.member: C2._simpleInstanceOfFalse:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: C2._simpleInstanceOfTrue:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: C2.==:bool* Function(dynamic)**/
 abstract class C2 {
   /*member: C2.method:int* Function(int*, {dynamic optional})**/
   int method(int i, {optional});
diff --git a/pkg/_fe_analyzer_shared/test/inheritance/data/sink.dart b/pkg/_fe_analyzer_shared/test/inheritance/data/sink.dart
index e1cc6c6..6a8903e 100644
--- a/pkg/_fe_analyzer_shared/test/inheritance/data/sink.dart
+++ b/pkg/_fe_analyzer_shared/test/inheritance/data/sink.dart
@@ -7,24 +7,64 @@
 // @dart=2.6
 
 /*class: Sink:Object,Sink<T*>*/
+/*cfe|cfe:builder.member: Sink.toString:String* Function()**/
+/*cfe|cfe:builder.member: Sink.runtimeType:Type**/
+/*cfe|cfe:builder.member: Sink._simpleInstanceOf:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: Sink._instanceOf:bool* Function(dynamic, dynamic, dynamic)**/
+/*cfe|cfe:builder.member: Sink.noSuchMethod:dynamic Function(Invocation*)**/
+/*cfe|cfe:builder.member: Sink._identityHashCode:int**/
+/*cfe|cfe:builder.member: Sink.hashCode:int**/
+/*cfe|cfe:builder.member: Sink._simpleInstanceOfFalse:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: Sink._simpleInstanceOfTrue:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: Sink.==:bool* Function(dynamic)**/
 abstract class Sink<T> {
   /*member: Sink.close:void Function()**/
   void close();
 }
 
 /*class: EventSink:EventSink<T*>,Object,Sink<T*>*/
+/*cfe|cfe:builder.member: EventSink.toString:String* Function()**/
+/*cfe|cfe:builder.member: EventSink.runtimeType:Type**/
+/*cfe|cfe:builder.member: EventSink._simpleInstanceOf:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: EventSink._instanceOf:bool* Function(dynamic, dynamic, dynamic)**/
+/*cfe|cfe:builder.member: EventSink.noSuchMethod:dynamic Function(Invocation*)**/
+/*cfe|cfe:builder.member: EventSink._identityHashCode:int**/
+/*cfe|cfe:builder.member: EventSink.hashCode:int**/
+/*cfe|cfe:builder.member: EventSink._simpleInstanceOfFalse:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: EventSink._simpleInstanceOfTrue:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: EventSink.==:bool* Function(dynamic)**/
 abstract class EventSink<T> implements Sink<T> {
   /*member: EventSink.close:void Function()**/
   void close();
 }
 
 /*class: StreamConsumer:Object,StreamConsumer<S*>*/
+/*cfe|cfe:builder.member: StreamConsumer.toString:String* Function()**/
+/*cfe|cfe:builder.member: StreamConsumer.runtimeType:Type**/
+/*cfe|cfe:builder.member: StreamConsumer._simpleInstanceOf:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: StreamConsumer._instanceOf:bool* Function(dynamic, dynamic, dynamic)**/
+/*cfe|cfe:builder.member: StreamConsumer.noSuchMethod:dynamic Function(Invocation*)**/
+/*cfe|cfe:builder.member: StreamConsumer._identityHashCode:int**/
+/*cfe|cfe:builder.member: StreamConsumer.hashCode:int**/
+/*cfe|cfe:builder.member: StreamConsumer._simpleInstanceOfFalse:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: StreamConsumer._simpleInstanceOfTrue:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: StreamConsumer.==:bool* Function(dynamic)**/
 abstract class StreamConsumer<S> {
   /*member: StreamConsumer.close:Future<dynamic>* Function()**/
   Future close();
 }
 
 /*class: StreamSink:EventSink<S*>,Object,Sink<S*>,StreamConsumer<S*>,StreamSink<S*>*/
+/*cfe|cfe:builder.member: StreamSink.toString:String* Function()**/
+/*cfe|cfe:builder.member: StreamSink.runtimeType:Type**/
+/*cfe|cfe:builder.member: StreamSink._simpleInstanceOf:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: StreamSink._instanceOf:bool* Function(dynamic, dynamic, dynamic)**/
+/*cfe|cfe:builder.member: StreamSink.noSuchMethod:dynamic Function(Invocation*)**/
+/*cfe|cfe:builder.member: StreamSink._identityHashCode:int**/
+/*cfe|cfe:builder.member: StreamSink.hashCode:int**/
+/*cfe|cfe:builder.member: StreamSink._simpleInstanceOfFalse:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: StreamSink._simpleInstanceOfTrue:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: StreamSink.==:bool* Function(dynamic)**/
 abstract class StreamSink<S> implements EventSink<S>, StreamConsumer<S> {
   /*member: StreamSink.close:Future<dynamic>* Function()**/
   Future close();
diff --git a/pkg/_fe_analyzer_shared/test/inheritance/data/top_merge_opt_out.dart b/pkg/_fe_analyzer_shared/test/inheritance/data/top_merge_opt_out.dart
index 3de2a8e..ae77091 100644
--- a/pkg/_fe_analyzer_shared/test/inheritance/data/top_merge_opt_out.dart
+++ b/pkg/_fe_analyzer_shared/test/inheritance/data/top_merge_opt_out.dart
@@ -9,81 +9,231 @@
 import 'dart:async';
 
 /*class: A:A,Object*/
+/*cfe|cfe:builder.member: A.toString:String* Function()**/
+/*cfe|cfe:builder.member: A.runtimeType:Type**/
+/*cfe|cfe:builder.member: A._simpleInstanceOf:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: A._instanceOf:bool* Function(dynamic, dynamic, dynamic)**/
+/*cfe|cfe:builder.member: A.noSuchMethod:dynamic Function(Invocation*)**/
+/*cfe|cfe:builder.member: A._identityHashCode:int**/
+/*cfe|cfe:builder.member: A.hashCode:int**/
+/*cfe|cfe:builder.member: A._simpleInstanceOfFalse:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: A._simpleInstanceOfTrue:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: A.==:bool* Function(dynamic)**/
 abstract class A {
   /*member: A.method:Object* Function(Object*)**/
   Object method(Object a);
 }
 
 /*class: B:B,Object*/
+/*cfe|cfe:builder.member: B.toString:String* Function()**/
+/*cfe|cfe:builder.member: B.runtimeType:Type**/
+/*cfe|cfe:builder.member: B._simpleInstanceOf:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: B._instanceOf:bool* Function(dynamic, dynamic, dynamic)**/
+/*cfe|cfe:builder.member: B.noSuchMethod:dynamic Function(Invocation*)**/
+/*cfe|cfe:builder.member: B._identityHashCode:int**/
+/*cfe|cfe:builder.member: B.hashCode:int**/
+/*cfe|cfe:builder.member: B._simpleInstanceOfFalse:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: B._simpleInstanceOfTrue:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: B.==:bool* Function(dynamic)**/
 abstract class B {
   /*member: B.method:dynamic Function(dynamic)**/
   dynamic method(dynamic a);
 }
 
 /*class: C:C,Object*/
+/*cfe|cfe:builder.member: C.toString:String* Function()**/
+/*cfe|cfe:builder.member: C.runtimeType:Type**/
+/*cfe|cfe:builder.member: C._simpleInstanceOf:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: C._instanceOf:bool* Function(dynamic, dynamic, dynamic)**/
+/*cfe|cfe:builder.member: C.noSuchMethod:dynamic Function(Invocation*)**/
+/*cfe|cfe:builder.member: C._identityHashCode:int**/
+/*cfe|cfe:builder.member: C.hashCode:int**/
+/*cfe|cfe:builder.member: C._simpleInstanceOfFalse:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: C._simpleInstanceOfTrue:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: C.==:bool* Function(dynamic)**/
 abstract class C {
   /*member: C.method:void Function(void)**/
   void method(void a);
 }
 
 /*class: D:D,Object*/
+/*cfe|cfe:builder.member: D.toString:String* Function()**/
+/*cfe|cfe:builder.member: D.runtimeType:Type**/
+/*cfe|cfe:builder.member: D._simpleInstanceOf:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: D._instanceOf:bool* Function(dynamic, dynamic, dynamic)**/
+/*cfe|cfe:builder.member: D.noSuchMethod:dynamic Function(Invocation*)**/
+/*cfe|cfe:builder.member: D._identityHashCode:int**/
+/*cfe|cfe:builder.member: D.hashCode:int**/
+/*cfe|cfe:builder.member: D._simpleInstanceOfFalse:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: D._simpleInstanceOfTrue:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: D.==:bool* Function(dynamic)**/
 abstract class D {
   /*member: D.method:FutureOr<dynamic>* Function(FutureOr<dynamic>*)**/
   FutureOr method(FutureOr a);
 }
 
 /*class: E1:A,B,C,E1,Object*/
+/*cfe|cfe:builder.member: E1.toString:String* Function()**/
+/*cfe|cfe:builder.member: E1.runtimeType:Type**/
+/*cfe|cfe:builder.member: E1._simpleInstanceOf:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: E1._instanceOf:bool* Function(dynamic, dynamic, dynamic)**/
+/*cfe|cfe:builder.member: E1.noSuchMethod:dynamic Function(Invocation*)**/
+/*cfe|cfe:builder.member: E1._identityHashCode:int**/
+/*cfe|cfe:builder.member: E1.hashCode:int**/
+/*cfe|cfe:builder.member: E1._simpleInstanceOfFalse:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: E1._simpleInstanceOfTrue:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: E1.==:bool* Function(dynamic)**/
 abstract class E1 implements A, B, C {
   /*member: E1.method:Object* Function(Object*)**/
 }
 
 /*class: E2:A,B,E2,Object*/
+/*cfe|cfe:builder.member: E2.toString:String* Function()**/
+/*cfe|cfe:builder.member: E2.runtimeType:Type**/
+/*cfe|cfe:builder.member: E2._simpleInstanceOf:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: E2._instanceOf:bool* Function(dynamic, dynamic, dynamic)**/
+/*cfe|cfe:builder.member: E2.noSuchMethod:dynamic Function(Invocation*)**/
+/*cfe|cfe:builder.member: E2._identityHashCode:int**/
+/*cfe|cfe:builder.member: E2.hashCode:int**/
+/*cfe|cfe:builder.member: E2._simpleInstanceOfFalse:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: E2._simpleInstanceOfTrue:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: E2.==:bool* Function(dynamic)**/
 abstract class E2 implements A, B {
   /*member: E2.method:Object* Function(Object*)**/
 }
 
 /*class: E3:B,C,E3,Object*/
+/*cfe|cfe:builder.member: E3.toString:String* Function()**/
+/*cfe|cfe:builder.member: E3.runtimeType:Type**/
+/*cfe|cfe:builder.member: E3._simpleInstanceOf:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: E3._instanceOf:bool* Function(dynamic, dynamic, dynamic)**/
+/*cfe|cfe:builder.member: E3.noSuchMethod:dynamic Function(Invocation*)**/
+/*cfe|cfe:builder.member: E3._identityHashCode:int**/
+/*cfe|cfe:builder.member: E3.hashCode:int**/
+/*cfe|cfe:builder.member: E3._simpleInstanceOfFalse:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: E3._simpleInstanceOfTrue:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: E3.==:bool* Function(dynamic)**/
 abstract class E3 implements B, C {
   /*member: E3.method:dynamic Function(dynamic)**/
 }
 
 /*class: E4:A,C,E4,Object*/
+/*cfe|cfe:builder.member: E4.toString:String* Function()**/
+/*cfe|cfe:builder.member: E4.runtimeType:Type**/
+/*cfe|cfe:builder.member: E4._simpleInstanceOf:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: E4._instanceOf:bool* Function(dynamic, dynamic, dynamic)**/
+/*cfe|cfe:builder.member: E4.noSuchMethod:dynamic Function(Invocation*)**/
+/*cfe|cfe:builder.member: E4._identityHashCode:int**/
+/*cfe|cfe:builder.member: E4.hashCode:int**/
+/*cfe|cfe:builder.member: E4._simpleInstanceOfFalse:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: E4._simpleInstanceOfTrue:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: E4.==:bool* Function(dynamic)**/
 abstract class E4 implements A, C {
   /*member: E4.method:Object* Function(Object*)**/
 }
 
 /*class: E5:A,D,E5,Object*/
+/*cfe|cfe:builder.member: E5.toString:String* Function()**/
+/*cfe|cfe:builder.member: E5.runtimeType:Type**/
+/*cfe|cfe:builder.member: E5._simpleInstanceOf:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: E5._instanceOf:bool* Function(dynamic, dynamic, dynamic)**/
+/*cfe|cfe:builder.member: E5.noSuchMethod:dynamic Function(Invocation*)**/
+/*cfe|cfe:builder.member: E5._identityHashCode:int**/
+/*cfe|cfe:builder.member: E5.hashCode:int**/
+/*cfe|cfe:builder.member: E5._simpleInstanceOfFalse:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: E5._simpleInstanceOfTrue:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: E5.==:bool* Function(dynamic)**/
 abstract class E5 implements A, D {
   /*member: E5.method:Object* Function(Object*)**/
 }
 
 /*class: E6:A,D,E6,Object*/
+/*cfe|cfe:builder.member: E6.toString:String* Function()**/
+/*cfe|cfe:builder.member: E6.runtimeType:Type**/
+/*cfe|cfe:builder.member: E6._simpleInstanceOf:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: E6._instanceOf:bool* Function(dynamic, dynamic, dynamic)**/
+/*cfe|cfe:builder.member: E6.noSuchMethod:dynamic Function(Invocation*)**/
+/*cfe|cfe:builder.member: E6._identityHashCode:int**/
+/*cfe|cfe:builder.member: E6.hashCode:int**/
+/*cfe|cfe:builder.member: E6._simpleInstanceOfFalse:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: E6._simpleInstanceOfTrue:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: E6.==:bool* Function(dynamic)**/
 abstract class E6 implements D, A {
   /*member: E6.method:FutureOr<dynamic>* Function(FutureOr<dynamic>*)**/
 }
 
 /*class: F:F,Object*/
+/*cfe|cfe:builder.member: F.toString:String* Function()**/
+/*cfe|cfe:builder.member: F.runtimeType:Type**/
+/*cfe|cfe:builder.member: F._simpleInstanceOf:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: F._instanceOf:bool* Function(dynamic, dynamic, dynamic)**/
+/*cfe|cfe:builder.member: F.noSuchMethod:dynamic Function(Invocation*)**/
+/*cfe|cfe:builder.member: F._identityHashCode:int**/
+/*cfe|cfe:builder.member: F.hashCode:int**/
+/*cfe|cfe:builder.member: F._simpleInstanceOfFalse:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: F._simpleInstanceOfTrue:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: F.==:bool* Function(dynamic)**/
 abstract class F {
   /*member: F.method:void Function(int*)**/
   void method(int a);
 }
 
 /*class: G1:A,C,F,G1,Object*/
+/*cfe|cfe:builder.member: G1.toString:String* Function()**/
+/*cfe|cfe:builder.member: G1.runtimeType:Type**/
+/*cfe|cfe:builder.member: G1._simpleInstanceOf:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: G1._instanceOf:bool* Function(dynamic, dynamic, dynamic)**/
+/*cfe|cfe:builder.member: G1.noSuchMethod:dynamic Function(Invocation*)**/
+/*cfe|cfe:builder.member: G1._identityHashCode:int**/
+/*cfe|cfe:builder.member: G1.hashCode:int**/
+/*cfe|cfe:builder.member: G1._simpleInstanceOfFalse:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: G1._simpleInstanceOfTrue:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: G1.==:bool* Function(dynamic)**/
 abstract class G1 implements A, C, F {
   /*member: G1.method:Object* Function(Object*)**/
 }
 
 /*class: G2:A,C,F,G2,Object*/
+/*cfe|cfe:builder.member: G2.toString:String* Function()**/
+/*cfe|cfe:builder.member: G2.runtimeType:Type**/
+/*cfe|cfe:builder.member: G2._simpleInstanceOf:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: G2._instanceOf:bool* Function(dynamic, dynamic, dynamic)**/
+/*cfe|cfe:builder.member: G2.noSuchMethod:dynamic Function(Invocation*)**/
+/*cfe|cfe:builder.member: G2._identityHashCode:int**/
+/*cfe|cfe:builder.member: G2.hashCode:int**/
+/*cfe|cfe:builder.member: G2._simpleInstanceOfFalse:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: G2._simpleInstanceOfTrue:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: G2.==:bool* Function(dynamic)**/
 abstract class G2 implements A, F, C {
   /*member: G2.method:Object* Function(Object*)**/
 }
 
 /*class: G3:A,C,F,G3,Object*/
+/*cfe|cfe:builder.member: G3.toString:String* Function()**/
+/*cfe|cfe:builder.member: G3.runtimeType:Type**/
+/*cfe|cfe:builder.member: G3._simpleInstanceOf:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: G3._instanceOf:bool* Function(dynamic, dynamic, dynamic)**/
+/*cfe|cfe:builder.member: G3.noSuchMethod:dynamic Function(Invocation*)**/
+/*cfe|cfe:builder.member: G3._identityHashCode:int**/
+/*cfe|cfe:builder.member: G3.hashCode:int**/
+/*cfe|cfe:builder.member: G3._simpleInstanceOfFalse:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: G3._simpleInstanceOfTrue:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: G3.==:bool* Function(dynamic)**/
 abstract class G3 implements C, A, F {
   /*member: G3.method:void Function(void)**/
 }
 
 /*class: G4:A,C,F,G4,Object*/
+/*cfe|cfe:builder.member: G4.toString:String* Function()**/
+/*cfe|cfe:builder.member: G4.runtimeType:Type**/
+/*cfe|cfe:builder.member: G4._simpleInstanceOf:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: G4._instanceOf:bool* Function(dynamic, dynamic, dynamic)**/
+/*cfe|cfe:builder.member: G4.noSuchMethod:dynamic Function(Invocation*)**/
+/*cfe|cfe:builder.member: G4._identityHashCode:int**/
+/*cfe|cfe:builder.member: G4.hashCode:int**/
+/*cfe|cfe:builder.member: G4._simpleInstanceOfFalse:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: G4._simpleInstanceOfTrue:bool* Function(dynamic)**/
+/*cfe|cfe:builder.member: G4.==:bool* Function(dynamic)**/
 abstract class G4 implements C, F, A {
   /*member: G4.method:void Function(void)**/
 }
diff --git a/pkg/analysis_server/lib/src/analysis_server.dart b/pkg/analysis_server/lib/src/analysis_server.dart
index bcc76e2..6032b6a 100644
--- a/pkg/analysis_server/lib/src/analysis_server.dart
+++ b/pkg/analysis_server/lib/src/analysis_server.dart
@@ -777,6 +777,7 @@
       }
     });
     analysisDriver.exceptions.listen(analysisServer.logExceptionResult);
+    analysisDriver.priorityFiles = analysisServer.priorityFiles.toList();
     analysisServer.driverMap[folder] = analysisDriver;
     return analysisDriver;
   }
diff --git a/pkg/analysis_server/lib/src/cider/completion.dart b/pkg/analysis_server/lib/src/cider/completion.dart
index d44effd..068facc 100644
--- a/pkg/analysis_server/lib/src/cider/completion.dart
+++ b/pkg/analysis_server/lib/src/cider/completion.dart
@@ -9,6 +9,7 @@
 import 'package:analysis_server/src/services/completion/completion_performance.dart';
 import 'package:analysis_server/src/services/completion/dart/completion_manager.dart';
 import 'package:analysis_server/src/services/completion/dart/local_library_contributor.dart';
+import 'package:analysis_server/src/services/completion/dart/suggestion_builder.dart';
 import 'package:analysis_server/src/services/completion/filtering/fuzzy_matcher.dart';
 import 'package:analyzer/dart/ast/ast.dart';
 import 'package:analyzer/dart/element/element.dart' show LibraryElement;
@@ -43,22 +44,6 @@
 
   CiderCompletionComputer(this._logger, this._cache, this._fileResolver);
 
-  @deprecated
-  Future<List<CompletionSuggestion>> compute(String path, int offset) async {
-    var fileContext = _fileResolver.getFileContext(path);
-    var file = fileContext.file;
-
-    var location = file.lineInfo.getLocation(offset);
-
-    var result = await compute2(
-      path: path,
-      line: location.lineNumber - 1,
-      column: location.columnNumber - 1,
-    );
-
-    return result.suggestions;
-  }
-
   /// Return completion suggestions for the file and position.
   ///
   /// The [path] must be the absolute and normalized path of the file.
@@ -66,7 +51,7 @@
   /// The content of the file has already been updated.
   ///
   /// The [line] and [column] are zero based.
-  Future<CiderCompletionResult> compute2({
+  Future<CiderCompletionResult> compute({
     @required String path,
     @required int line,
     @required int column,
@@ -134,14 +119,17 @@
       });
     }
 
+    var filter = _FilterSort(
+      _dartCompletionRequest,
+      suggestions,
+    );
+
     _logger.run('Filter suggestions', () {
-      suggestions = _FilterSort(
-        _dartCompletionRequest,
-        suggestions,
-      ).perform();
+      suggestions = filter.perform();
     });
 
-    var result = CiderCompletionResult._(suggestions);
+    var result = CiderCompletionResult._(
+        suggestions, CiderPosition(line, column - filter._pattern.length));
 
     _cache._lastResult =
         _LastCompletionResult(path, resolvedSignature, offset, result);
@@ -149,6 +137,15 @@
     return result;
   }
 
+  @Deprecated('Use compute')
+  Future<CiderCompletionResult> compute2({
+    @required String path,
+    @required int line,
+    @required int column,
+  }) async {
+    return compute(path: path, line: line, column: column);
+  }
+
   /// Return suggestions from libraries imported into the [target].
   ///
   /// TODO(scheglov) Implement show / hide combinators.
@@ -188,19 +185,33 @@
   /// Compute all unprefixed suggestions for all elements exported from
   /// the library.
   List<CompletionSuggestion> _librarySuggestions(LibraryElement element) {
-    var visitor = LibraryElementSuggestionBuilder(_dartCompletionRequest, '');
+    var suggestionBuilder = SuggestionBuilder(_dartCompletionRequest);
+    var visitor = LibraryElementSuggestionBuilder(
+        _dartCompletionRequest, suggestionBuilder);
     var exportMap = element.exportNamespace.definedNames;
     for (var definedElement in exportMap.values) {
       definedElement.accept(visitor);
     }
-    return visitor.suggestions;
+    return suggestionBuilder.suggestions.toList();
   }
 }
 
 class CiderCompletionResult {
   final List<CompletionSuggestion> suggestions;
 
-  CiderCompletionResult._(this.suggestions);
+  /// The start of the range that should be replaced with the suggestion. This
+  /// position always precedes or is the same as the cursor provided in the
+  /// completion request.
+  final CiderPosition prefixStart;
+
+  CiderCompletionResult._(this.suggestions, this.prefixStart);
+}
+
+class CiderPosition {
+  final int line;
+  final int column;
+
+  CiderPosition(this.line, this.column);
 }
 
 class _CiderImportedLibrarySuggestions {
@@ -215,12 +226,13 @@
   final List<CompletionSuggestion> _suggestions;
 
   FuzzyMatcher _matcher;
+  String _pattern;
 
   _FilterSort(this._request, this._suggestions);
 
   List<CompletionSuggestion> perform() {
-    var pattern = _matchingPattern();
-    _matcher = FuzzyMatcher(pattern, matchStyle: MatchStyle.SYMBOL);
+    _pattern = _matchingPattern();
+    _matcher = FuzzyMatcher(_pattern, matchStyle: MatchStyle.SYMBOL);
 
     var scored = _suggestions
         .map((e) => _FuzzyScoredSuggestion(e, _score(e)))
diff --git a/pkg/analysis_server/lib/src/edit/fix/dartfix_listener.dart b/pkg/analysis_server/lib/src/edit/fix/dartfix_listener.dart
index ca028f7..7fb7a80 100644
--- a/pkg/analysis_server/lib/src/edit/fix/dartfix_listener.dart
+++ b/pkg/analysis_server/lib/src/edit/fix/dartfix_listener.dart
@@ -5,6 +5,7 @@
 import 'package:analysis_server/protocol/protocol_generated.dart';
 import 'package:analysis_server/src/analysis_server.dart';
 import 'package:analyzer/dart/analysis/results.dart';
+import 'package:analyzer/file_system/file_system.dart';
 import 'package:analyzer/src/generated/source.dart';
 import 'package:analyzer_plugin/protocol/protocol_common.dart'
     show Location, SourceChange, SourceEdit, SourceFileEdit;
@@ -26,6 +27,8 @@
 
   DartFixListener(this.server);
 
+  ResourceProvider get resourceProvider => server.resourceProvider;
+
   /// Add the given [detail] to the list of details to be returned to the
   /// client.
   @override
diff --git a/pkg/analysis_server/lib/src/edit/fix/non_nullable_fix.dart b/pkg/analysis_server/lib/src/edit/fix/non_nullable_fix.dart
index 2b2f011..24c6bd1 100644
--- a/pkg/analysis_server/lib/src/edit/fix/non_nullable_fix.dart
+++ b/pkg/analysis_server/lib/src/edit/fix/non_nullable_fix.dart
@@ -18,6 +18,7 @@
 import 'package:nnbd_migration/api_for_analysis_server/instrumentation_listener.dart';
 import 'package:nnbd_migration/api_for_analysis_server/migration_state.dart';
 import 'package:nnbd_migration/api_for_analysis_server/nnbd_migration.dart';
+import 'package:nnbd_migration/src/front_end/migration_summary.dart';
 import 'package:pub_semver/pub_semver.dart';
 import 'package:source_span/source_span.dart';
 import 'package:yaml/yaml.dart';
@@ -53,6 +54,12 @@
   /// Indicates whether the web preview of migration results should be launched.
   final bool enablePreview;
 
+  /// If non-null, the path to which a machine-readable summary of migration
+  /// results should be written.
+  final String summaryPath;
+
+  final ResourceProvider resourceProvider;
+
   /// The HTTP server that serves the preview tool.
   HttpPreviewServer _server;
 
@@ -78,10 +85,11 @@
   /// A list of the URLs corresponding to the included roots.
   List<String> previewUrls;
 
-  NonNullableFix(this.listener,
+  NonNullableFix(this.listener, this.resourceProvider,
       {List<String> included = const [],
       this.preferredPort,
-      this.enablePreview = true})
+      this.enablePreview = true,
+      this.summaryPath})
       : includedRoot =
             _getIncludedRoot(included, listener.server.resourceProvider) {
     reset();
@@ -92,6 +100,7 @@
 
   @override
   Future<void> finish() async {
+    migration.finish();
     final state = MigrationState(
         migration, includedRoot, listener, instrumentationListener);
     await state.refresh();
@@ -258,7 +267,10 @@
   }
 
   void reset() {
-    instrumentationListener = InstrumentationListener();
+    instrumentationListener = InstrumentationListener(
+        migrationSummary: summaryPath == null
+            ? null
+            : MigrationSummary(summaryPath, resourceProvider, includedRoot));
     adapter = NullabilityMigrationAdapter(listener);
     migration = NullabilityMigration(adapter,
         permissive: _usePermissiveMode,
@@ -283,7 +295,8 @@
 
   static void task(DartFixRegistrar registrar, DartFixListener listener,
       EditDartfixParams params) {
-    registrar.registerCodeTask(NonNullableFix(listener,
+    registrar.registerCodeTask(NonNullableFix(
+        listener, listener.resourceProvider,
         included: params.included, preferredPort: params.port));
   }
 
diff --git a/pkg/analysis_server/lib/src/services/completion/dart/arglist_contributor.dart b/pkg/analysis_server/lib/src/services/completion/dart/arglist_contributor.dart
index 29c8cda..84c4bec 100644
--- a/pkg/analysis_server/lib/src/services/completion/dart/arglist_contributor.dart
+++ b/pkg/analysis_server/lib/src/services/completion/dart/arglist_contributor.dart
@@ -4,19 +4,15 @@
 
 import 'dart:async';
 
-import 'package:analysis_server/src/computer/computer_hover.dart';
 import 'package:analysis_server/src/protocol_server.dart'
     hide Element, ElementKind;
 import 'package:analysis_server/src/provisional/completion/dart/completion_dart.dart';
 import 'package:analysis_server/src/services/completion/dart/suggestion_builder.dart';
-import 'package:analysis_server/src/services/completion/dart/utilities.dart';
 import 'package:analysis_server/src/utilities/flutter.dart';
 import 'package:analyzer/dart/ast/ast.dart';
 import 'package:analyzer/dart/ast/token.dart';
 import 'package:analyzer/dart/element/element.dart';
 import 'package:analyzer/dart/element/type.dart';
-import 'package:analyzer/src/util/comment.dart';
-import 'package:meta/meta.dart';
 
 /// A contributor that produces suggestions for named expression labels that
 /// correspond to named parameters when completing in argument lists.
@@ -24,14 +20,14 @@
   /// The request that is currently being handled.
   DartCompletionRequest request;
 
+  /// The suggestion builder used to build suggestions.
+  SuggestionBuilder builder;
+
   /// The argument list that is the containing node of the target, or `null` if
   /// the containing node of the target is not an argument list (such as when
   /// it's a named expression).
   ArgumentList argumentList;
 
-  /// The list of suggestions that is currently being built.
-  List<CompletionSuggestion> suggestions;
-
   @override
   Future<List<CompletionSuggestion>> computeSuggestions(
       DartCompletionRequest request, SuggestionBuilder builder) async {
@@ -45,9 +41,9 @@
     }
 
     this.request = request;
-    suggestions = <CompletionSuggestion>[];
+    this.builder = builder;
     _addSuggestions(executable.parameters);
-    return suggestions;
+    return const <CompletionSuggestion>[];
   }
 
   void _addDefaultParamSuggestions(Iterable<ParameterElement> parameters,
@@ -65,64 +61,9 @@
   void _addNamedParameterSuggestion(List<String> namedArgs,
       ParameterElement parameter, bool appendColon, bool appendComma) {
     var name = parameter.name;
-    var type = parameter.type?.getDisplayString(withNullability: false);
     if (name != null && name.isNotEmpty && !namedArgs.contains(name)) {
-      var completion = name;
-      if (appendColon) {
-        completion += ': ';
-      }
-      var selectionOffset = completion.length;
-
-      // Optionally add Flutter child widget details.
-      // todo (pq): revisit this special casing; likely it can be generalized away
-      var element = parameter.enclosingElement;
-      if (element is ConstructorElement) {
-        var flutter = Flutter.of(request.result);
-        if (flutter.isWidget(element.enclosingElement)) {
-          var defaultValue = getDefaultStringParameterValue(parameter);
-          // TODO(devoncarew): Should we remove the check here? We would then
-          // suggest values for param types like closures.
-          if (defaultValue != null && defaultValue.text == '[]') {
-            var completionLength = completion.length;
-            completion += defaultValue.text;
-            if (defaultValue.cursorPosition != null) {
-              selectionOffset = completionLength + defaultValue.cursorPosition;
-            }
-          }
-        }
-      }
-
-      if (appendComma) {
-        completion += ',';
-      }
-
-      int relevance;
-      if (parameter.isRequiredNamed || parameter.hasRequired) {
-        relevance = request.useNewRelevance
-            ? Relevance.requiredNamedArgument
-            : DART_RELEVANCE_NAMED_PARAMETER_REQUIRED;
-      } else {
-        relevance = request.useNewRelevance
-            ? Relevance.namedArgument
-            : DART_RELEVANCE_NAMED_PARAMETER;
-      }
-
-      var suggestion = CompletionSuggestion(
-          CompletionSuggestionKind.NAMED_ARGUMENT,
-          relevance,
-          completion,
-          selectionOffset,
-          0,
-          false,
-          false,
-          parameterName: name,
-          parameterType: type);
-      if (parameter is FieldFormalParameterElement) {
-        _setDocumentation(suggestion, parameter);
-        suggestion.element = convertElement(parameter);
-      }
-
-      suggestions.add(suggestion);
+      builder.suggestNamedArgument(parameter,
+          appendColon: appendColon, appendComma: appendComma);
     }
   }
 
@@ -171,56 +112,11 @@
   }
 
   void _buildClosureSuggestions(NamedExpression argument) {
-    // TODO(brianwilkerson) Consider moving this support so that it can be used
-    //  whenever the context type is a FunctionType.
     var type = argument.staticParameterElement?.type;
     if (type is FunctionType) {
-      var indent = getRequestLineIndent(request);
-      var parametersString = buildClosureParameters(type);
-
-      var blockBuffer = StringBuffer(parametersString);
-      blockBuffer.writeln(' {');
-      blockBuffer.write('$indent  ');
-      var blockSelectionOffset = blockBuffer.length;
-      blockBuffer.writeln();
-      blockBuffer.write('$indent}');
-
-      var expressionBuffer = StringBuffer(parametersString);
-      expressionBuffer.write(' => ');
-      var expressionSelectionOffset = expressionBuffer.length;
-
-      if (argument.endToken.next?.type != TokenType.COMMA) {
-        blockBuffer.write(',');
-        expressionBuffer.write(',');
-      }
-
-      CompletionSuggestion createSuggestion({
-        @required String completion,
-        @required String displayText,
-        @required int selectionOffset,
-      }) {
-        return CompletionSuggestion(
-          CompletionSuggestionKind.INVOCATION,
-          request.useNewRelevance ? Relevance.closure : DART_RELEVANCE_HIGH,
-          completion,
-          selectionOffset,
-          0,
-          false,
-          false,
-          displayText: displayText,
-        );
-      }
-
-      suggestions.add(createSuggestion(
-        completion: blockBuffer.toString(),
-        displayText: '$parametersString {}',
-        selectionOffset: blockSelectionOffset,
-      ));
-      suggestions.add(createSuggestion(
-        completion: expressionBuffer.toString(),
-        displayText: '$parametersString =>',
-        selectionOffset: expressionSelectionOffset,
-      ));
+      builder.suggestClosure(type,
+          includeTrailingComma:
+              argument.endToken.next?.type != TokenType.COMMA);
     }
   }
 
@@ -333,15 +229,4 @@
     }
     return namedArgs;
   }
-
-  /// If the given [comment] is not `null`, fill the [suggestion] documentation
-  /// fields.
-  void _setDocumentation(CompletionSuggestion suggestion, Element element) {
-    var doc = DartUnitHoverComputer.computeDocumentation(
-        request.dartdocDirectiveInfo, element);
-    if (doc != null) {
-      suggestion.docComplete = doc;
-      suggestion.docSummary = getDartDocSummary(doc);
-    }
-  }
 }
diff --git a/pkg/analysis_server/lib/src/services/completion/dart/imported_reference_contributor.dart b/pkg/analysis_server/lib/src/services/completion/dart/imported_reference_contributor.dart
index 15aad2a..ffa17ea 100644
--- a/pkg/analysis_server/lib/src/services/completion/dart/imported_reference_contributor.dart
+++ b/pkg/analysis_server/lib/src/services/completion/dart/imported_reference_contributor.dart
@@ -4,14 +4,13 @@
 
 import 'dart:async';
 
+import 'package:analysis_server/src/protocol_server.dart'
+    show CompletionSuggestion;
 import 'package:analysis_server/src/provisional/completion/dart/completion_dart.dart';
 import 'package:analysis_server/src/services/completion/dart/local_library_contributor.dart';
 import 'package:analysis_server/src/services/completion/dart/suggestion_builder.dart'
     show SuggestionBuilder;
 import 'package:analyzer/src/generated/resolver.dart';
-import 'package:analyzer_plugin/protocol/protocol_common.dart' as protocol;
-
-import '../../../protocol_server.dart' show CompletionSuggestion;
 
 /// A contributor for calculating suggestions for imported top level members.
 class ImportedReferenceContributor extends DartCompletionContributor {
@@ -27,35 +26,23 @@
       return const <CompletionSuggestion>[];
     }
 
-    var suggestions = <CompletionSuggestion>[];
-
-    var seenElements = <protocol.Element>{};
-
     // Traverse imports including dart:core
     for (var importElement in imports) {
       var libraryElement = importElement.importedLibrary;
       if (libraryElement != null) {
-        final newSuggestions = _buildSuggestions(
-            request, importElement.namespace,
+        _buildSuggestions(request, builder, importElement.namespace,
             prefix: importElement.prefix?.name);
-        for (var suggestion in newSuggestions) {
-          // Filter out multiply-exported elements (like Future and Stream).
-          if (seenElements.add(suggestion.element)) {
-            suggestions.add(suggestion);
-          }
-        }
       }
     }
-    return suggestions;
+    return const <CompletionSuggestion>[];
   }
 
-  List<CompletionSuggestion> _buildSuggestions(
-      DartCompletionRequest request, Namespace namespace,
+  void _buildSuggestions(DartCompletionRequest request,
+      SuggestionBuilder builder, Namespace namespace,
       {String prefix}) {
-    var visitor = LibraryElementSuggestionBuilder(request, prefix);
+    var visitor = LibraryElementSuggestionBuilder(request, builder, prefix);
     for (var elem in namespace.definedNames.values) {
       elem.accept(visitor);
     }
-    return visitor.suggestions;
   }
 }
diff --git a/pkg/analysis_server/lib/src/services/completion/dart/keyword_contributor.dart b/pkg/analysis_server/lib/src/services/completion/dart/keyword_contributor.dart
index 6d08f63..65f8f0b 100644
--- a/pkg/analysis_server/lib/src/services/completion/dart/keyword_contributor.dart
+++ b/pkg/analysis_server/lib/src/services/completion/dart/keyword_contributor.dart
@@ -31,15 +31,12 @@
   @override
   Future<List<CompletionSuggestion>> computeSuggestions(
       DartCompletionRequest request, SuggestionBuilder builder) async {
-    var suggestions = <CompletionSuggestion>[];
-
     // Don't suggest anything right after double or integer literals.
     if (request.target.isDoubleOrIntLiteral()) {
-      return suggestions;
+      return const <CompletionSuggestion>[];
     }
-
-    request.target.containingNode.accept(_KeywordVisitor(request, suggestions));
-    return suggestions;
+    request.target.containingNode.accept(_KeywordVisitor(request, builder));
+    return const <CompletionSuggestion>[];
   }
 }
 
@@ -47,12 +44,11 @@
 class _KeywordVisitor extends GeneralizingAstVisitor<void> {
   final DartCompletionRequest request;
 
+  final SuggestionBuilder builder;
+
   final Object entity;
 
-  final List<CompletionSuggestion> suggestions;
-
-  _KeywordVisitor(this.request, this.suggestions)
-      : entity = request.target.entity;
+  _KeywordVisitor(this.request, this.builder) : entity = request.target.entity;
 
   int get defaultKeyword =>
       request.useNewRelevance ? 800 : DART_RELEVANCE_KEYWORD;
@@ -877,10 +873,9 @@
     _addSuggestion2(keyword.lexeme, relevance: relevance);
   }
 
-  void _addSuggestion2(String completion, {int offset, int relevance}) {
-    offset ??= completion.length;
-    suggestions.add(CompletionSuggestion(CompletionSuggestionKind.KEYWORD,
-        relevance ?? defaultKeyword, completion, offset, 0, false, false));
+  void _addSuggestion2(String keyword, {int offset, int relevance}) {
+    builder.suggestKeyword(keyword,
+        offset: offset, relevance: relevance ?? defaultKeyword);
   }
 
   void _addSuggestions(List<Keyword> keywords, {int relevance}) {
diff --git a/pkg/analysis_server/lib/src/services/completion/dart/label_contributor.dart b/pkg/analysis_server/lib/src/services/completion/dart/label_contributor.dart
index fb3b718..3c04098 100644
--- a/pkg/analysis_server/lib/src/services/completion/dart/label_contributor.dart
+++ b/pkg/analysis_server/lib/src/services/completion/dart/label_contributor.dart
@@ -5,15 +5,12 @@
 import 'dart:async';
 
 import 'package:analysis_server/src/protocol_server.dart'
-    show CompletionSuggestion, CompletionSuggestionKind;
+    show CompletionSuggestion;
 import 'package:analysis_server/src/provisional/completion/dart/completion_dart.dart';
 import 'package:analysis_server/src/services/completion/dart/completion_manager.dart'
     show DartCompletionRequestImpl;
 import 'package:analysis_server/src/services/completion/dart/suggestion_builder.dart';
-import 'package:analysis_server/src/services/completion/dart/utilities.dart';
 import 'package:analyzer/dart/ast/ast.dart';
-import 'package:analyzer_plugin/protocol/protocol_common.dart' as protocol
-    show ElementKind;
 import 'package:analyzer_plugin/src/utilities/visitors/local_declaration_visitor.dart'
     show LocalDeclarationVisitor;
 
@@ -28,34 +25,34 @@
 
     // Collect suggestions from the specific child [AstNode] that contains
     // the completion offset and all of its parents recursively.
-    var suggestions = <CompletionSuggestion>[];
     if (!optype.isPrefixed) {
       if (optype.includeStatementLabelSuggestions ||
           optype.includeCaseLabelSuggestions) {
-        _LabelVisitor(request, optype.includeStatementLabelSuggestions,
-                optype.includeCaseLabelSuggestions, suggestions)
+        _LabelVisitor(request, builder, optype.includeStatementLabelSuggestions,
+                optype.includeCaseLabelSuggestions)
             .visit(request.target.containingNode);
       }
     }
-    return suggestions;
+    return const <CompletionSuggestion>[];
   }
 }
 
 /// A visitor for collecting suggestions for break and continue labels.
 class _LabelVisitor extends LocalDeclarationVisitor {
   final DartCompletionRequest request;
-  final List<CompletionSuggestion> suggestions;
 
-  /// True if statement labels should be included as suggestions.
+  final SuggestionBuilder builder;
+
+  /// A flag indicating whether statement labels should be included as
+  /// suggestions.
   final bool includeStatementLabels;
 
-  /// True if case labels should be included as suggestions.
+  /// A flag indicating whether case labels should be included as suggestions.
   final bool includeCaseLabels;
 
-  _LabelVisitor(DartCompletionRequest request, this.includeStatementLabels,
-      this.includeCaseLabels, this.suggestions)
-      : request = request,
-        super(request.offset);
+  _LabelVisitor(this.request, this.builder, this.includeStatementLabels,
+      this.includeCaseLabels)
+      : super(request.offset);
 
   @override
   void declaredClass(ClassDeclaration declaration) {
@@ -95,12 +92,7 @@
   @override
   void declaredLabel(Label label, bool isCaseLabel) {
     if (isCaseLabel ? includeCaseLabels : includeStatementLabels) {
-      var suggestion = _addSuggestion(label.label);
-      if (suggestion != null) {
-        suggestion.element = createLocalElement(
-            request.source, protocol.ElementKind.LABEL, label.label,
-            returnType: NO_RETURN_TYPE);
-      }
+      builder.suggestLabel(label);
     }
   }
 
@@ -138,23 +130,4 @@
     // once we reach a function boundary.
     finished();
   }
-
-  CompletionSuggestion _addSuggestion(SimpleIdentifier id) {
-    if (id != null) {
-      var completion = id.name;
-      if (completion != null && completion.isNotEmpty && completion != '_') {
-        var suggestion = CompletionSuggestion(
-            CompletionSuggestionKind.IDENTIFIER,
-            request.useNewRelevance ? Relevance.label : DART_RELEVANCE_DEFAULT,
-            completion,
-            completion.length,
-            0,
-            false,
-            false);
-        suggestions.add(suggestion);
-        return suggestion;
-      }
-    }
-    return null;
-  }
 }
diff --git a/pkg/analysis_server/lib/src/services/completion/dart/library_prefix_contributor.dart b/pkg/analysis_server/lib/src/services/completion/dart/library_prefix_contributor.dart
index c9e4d19..bd8674d 100644
--- a/pkg/analysis_server/lib/src/services/completion/dart/library_prefix_contributor.dart
+++ b/pkg/analysis_server/lib/src/services/completion/dart/library_prefix_contributor.dart
@@ -4,12 +4,11 @@
 
 import 'dart:async';
 
+import 'package:analysis_server/src/protocol_server.dart'
+    show CompletionSuggestion;
 import 'package:analysis_server/src/provisional/completion/dart/completion_dart.dart';
 import 'package:analysis_server/src/services/completion/dart/suggestion_builder.dart';
 
-import '../../../protocol_server.dart'
-    show CompletionSuggestion, CompletionSuggestionKind;
-
 /// A contributor that produces suggestions based on the prefixes defined on
 /// import directives.
 class LibraryPrefixContributor extends DartCompletionContributor {
@@ -25,32 +24,15 @@
       return const <CompletionSuggestion>[];
     }
 
-    // TODO(brianwilkerson) The code below will result in duplication if two or
-    //  more imports use the same prefix. Might not be worth fixing. The one
-    //  potential complication is if the library is displayed with the prefix,
-    //  in which case not having one per library could be confusing.
-    var useNewRelevance = request.useNewRelevance;
-    var suggestions = <CompletionSuggestion>[];
     for (var element in imports) {
-      var completion = element.prefix?.name;
-      if (completion != null && completion.isNotEmpty) {
+      var prefix = element.prefix?.name;
+      if (prefix != null && prefix.isNotEmpty) {
         var libraryElement = element.importedLibrary;
         if (libraryElement != null) {
-          var relevance = useNewRelevance
-              ? Relevance.prefix
-              : (libraryElement.hasDeprecated
-                  ? DART_RELEVANCE_LOW
-                  : DART_RELEVANCE_DEFAULT);
-          var suggestion = createSuggestion(request, libraryElement,
-              completion: completion,
-              kind: CompletionSuggestionKind.IDENTIFIER,
-              relevance: relevance);
-          if (suggestion != null) {
-            suggestions.add(suggestion);
-          }
+          builder.suggestPrefix(libraryElement, prefix);
         }
       }
     }
-    return suggestions;
+    return const <CompletionSuggestion>[];
   }
 }
diff --git a/pkg/analysis_server/lib/src/services/completion/dart/local_constructor_contributor.dart b/pkg/analysis_server/lib/src/services/completion/dart/local_constructor_contributor.dart
index 007b8df..d1a62d3 100644
--- a/pkg/analysis_server/lib/src/services/completion/dart/local_constructor_contributor.dart
+++ b/pkg/analysis_server/lib/src/services/completion/dart/local_constructor_contributor.dart
@@ -2,26 +2,11 @@
 // 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.
 
-import 'dart:async';
-
 import 'package:analysis_server/src/protocol_server.dart'
-    show CompletionSuggestion, CompletionSuggestionKind;
+    show CompletionSuggestion;
 import 'package:analysis_server/src/provisional/completion/dart/completion_dart.dart';
-import 'package:analysis_server/src/services/completion/dart/completion_manager.dart'
-    show DartCompletionRequestImpl;
-import 'package:analysis_server/src/services/completion/dart/feature_computer.dart';
 import 'package:analysis_server/src/services/completion/dart/suggestion_builder.dart';
-import 'package:analysis_server/src/services/completion/dart/utilities.dart';
-import 'package:analyzer/dart/analysis/features.dart';
 import 'package:analyzer/dart/ast/ast.dart';
-import 'package:analyzer/dart/element/element.dart';
-import 'package:analyzer/dart/element/nullability_suffix.dart';
-import 'package:analyzer/dart/element/type.dart';
-import 'package:analyzer_plugin/protocol/protocol_common.dart' as protocol
-    show ElementKind;
-import 'package:analyzer_plugin/src/utilities/completion/optype.dart';
-import 'package:analyzer_plugin/src/utilities/visitors/local_declaration_visitor.dart'
-    show LocalDeclarationVisitor;
 
 /// A contributor that produces suggestions based on the constructors declared
 /// in the same file in which suggestions were requested.
@@ -29,157 +14,24 @@
   @override
   Future<List<CompletionSuggestion>> computeSuggestions(
       DartCompletionRequest request, SuggestionBuilder builder) async {
-    var optype = (request as DartCompletionRequestImpl).opType;
-
-    // Collect suggestions from the specific child [AstNode] that contains
-    // the completion offset and all of its parents recursively.
-    var suggestions = <CompletionSuggestion>[];
-    if (!optype.isPrefixed) {
-      if (optype.includeConstructorSuggestions) {
-        _Visitor(request, suggestions, optype)
-            .visit(request.target.containingNode);
+    var opType = request.opType;
+    if (!opType.isPrefixed && opType.includeConstructorSuggestions) {
+      var unit = request.target.unit;
+      // TODO(brianwilkerson) Consider iterating over
+      //  `unit.declaredElement.types` instead.
+      for (var declaration in unit.declarations) {
+        if (declaration is ClassDeclaration) {
+          var classElement = declaration.declaredElement;
+          if (classElement != null) {
+            for (var constructor in classElement.constructors) {
+              if (!classElement.isAbstract || constructor.isFactory) {
+                builder.suggestConstructor(constructor);
+              }
+            }
+          }
+        }
       }
     }
-    return suggestions;
-  }
-}
-
-/// A visitor for collecting constructor suggestions.
-class _Visitor extends LocalDeclarationVisitor {
-  final DartCompletionRequest request;
-  final OpType optype;
-  final List<CompletionSuggestion> suggestions;
-
-  _Visitor(DartCompletionRequest request, this.suggestions, this.optype)
-      : request = request,
-        super(request.offset);
-
-  @override
-  void declaredClass(ClassDeclaration declaration) {
-    var found = false;
-    for (var member in declaration.members) {
-      if (member is ConstructorDeclaration) {
-        found = true;
-        _addSuggestion(declaration, member);
-      }
-    }
-    if (!found) {
-      _addSuggestion(declaration, null);
-    }
-  }
-
-  @override
-  void declaredClassTypeAlias(ClassTypeAlias declaration) {}
-
-  @override
-  void declaredExtension(ExtensionDeclaration declaration) {}
-
-  @override
-  void declaredField(FieldDeclaration fieldDecl, VariableDeclaration varDecl) {}
-
-  @override
-  void declaredFunction(FunctionDeclaration declaration) {}
-
-  @override
-  void declaredFunctionTypeAlias(FunctionTypeAlias declaration) {}
-
-  @override
-  void declaredGenericTypeAlias(GenericTypeAlias declaration) {}
-
-  @override
-  void declaredLabel(Label label, bool isCaseLabel) {}
-
-  @override
-  void declaredLocalVar(SimpleIdentifier name, TypeAnnotation type) {}
-
-  @override
-  void declaredMethod(MethodDeclaration declaration) {}
-
-  @override
-  void declaredParam(SimpleIdentifier name, TypeAnnotation type) {}
-
-  @override
-  void declaredTopLevelVar(
-      VariableDeclarationList varList, VariableDeclaration varDecl) {}
-
-  /// For the given class and constructor, add a suggestion of the form `B(...)`
-  /// or `B.name(...)`. If the given constructor is `null` then add a default
-  /// constructor suggestion.
-  void _addSuggestion(
-      ClassDeclaration classDecl, ConstructorDeclaration constructorDecl) {
-    var completion = classDecl.name.name;
-
-    var classElement = classDecl.declaredElement;
-    var useNewRelevance = request.useNewRelevance;
-    int relevance;
-    if (useNewRelevance) {
-      var contextType = request.featureComputer
-          .computeContextType(request.target.containingNode);
-      var contextTypeFeature = request.featureComputer
-          .contextTypeFeature(contextType, classElement.thisType);
-      relevance = toRelevance(contextTypeFeature, Relevance.constructor);
-    } else {
-      relevance = optype.returnValueSuggestionsFilter(
-          _instantiateClassElement(classElement), DART_RELEVANCE_DEFAULT);
-    }
-    if (constructorDecl != null) {
-      // Build a suggestion for explicitly declared constructor.
-      var element = constructorDecl.declaredElement;
-      if (element == null) {
-        return;
-      }
-      if (classElement.isAbstract && !element.isFactory) {
-        return;
-      }
-
-      var name = constructorDecl.name?.name;
-      if (name != null && name.isNotEmpty) {
-        completion = '$completion.$name';
-      }
-      if (!useNewRelevance && element.hasDeprecated) {
-        relevance = DART_RELEVANCE_LOW;
-      }
-
-      var suggestion = createSuggestion(request, element,
-          completion: completion, relevance: relevance);
-      if (suggestion != null) {
-        suggestions.add(suggestion);
-      }
-    } else if (!classElement.isAbstract) {
-      // Build a suggestion for an implicit constructor.
-      var element = createLocalElement(
-          request.source, protocol.ElementKind.CONSTRUCTOR, null,
-          parameters: '()');
-      element.returnType = classDecl.name.name;
-      var suggestion = CompletionSuggestion(CompletionSuggestionKind.INVOCATION,
-          relevance, completion, completion.length, 0, false, false,
-          declaringType: classDecl.name.name,
-          element: element,
-          parameterNames: [],
-          parameterTypes: [],
-          requiredParameterCount: 0,
-          hasNamedParameters: false);
-      suggestions.add(suggestion);
-    }
-  }
-
-  InterfaceType _instantiateClassElement(ClassElement element) {
-    var typeParameters = element.typeParameters;
-    var typeArguments = const <DartType>[];
-    if (typeParameters.isNotEmpty) {
-      var typeProvider = request.libraryElement.typeProvider;
-      typeArguments = typeParameters.map((t) {
-        return typeProvider.dynamicType;
-      }).toList();
-    }
-
-    var nullabilitySuffix = request.featureSet.isEnabled(Feature.non_nullable)
-        ? NullabilitySuffix.none
-        : NullabilitySuffix.star;
-
-    return element.instantiate(
-      typeArguments: typeArguments,
-      nullabilitySuffix: nullabilitySuffix,
-    );
+    return const <CompletionSuggestion>[];
   }
 }
diff --git a/pkg/analysis_server/lib/src/services/completion/dart/local_library_contributor.dart b/pkg/analysis_server/lib/src/services/completion/dart/local_library_contributor.dart
index 8f8e024..fb142fa 100644
--- a/pkg/analysis_server/lib/src/services/completion/dart/local_library_contributor.dart
+++ b/pkg/analysis_server/lib/src/services/completion/dart/local_library_contributor.dart
@@ -4,33 +4,28 @@
 
 import 'dart:async';
 
+import 'package:analysis_server/src/protocol_server.dart'
+    show CompletionSuggestion, CompletionSuggestionKind;
 import 'package:analysis_server/src/provisional/completion/dart/completion_dart.dart';
-import 'package:analysis_server/src/services/completion/dart/feature_computer.dart';
 import 'package:analysis_server/src/services/completion/dart/suggestion_builder.dart'
-    show createSuggestion, ElementSuggestionBuilder, SuggestionBuilder;
-import 'package:analyzer/dart/analysis/features.dart';
+    show SuggestionBuilder;
 import 'package:analyzer/dart/element/element.dart';
-import 'package:analyzer/dart/element/nullability_suffix.dart';
 import 'package:analyzer/dart/element/type.dart';
 import 'package:analyzer/dart/element/visitor.dart';
 import 'package:analyzer_plugin/src/utilities/completion/optype.dart';
 
-import '../../../protocol_server.dart'
-    show CompletionSuggestion, CompletionSuggestionKind;
-
 /// A visitor for building suggestions based upon the elements defined by
 /// a source file contained in the same library but not the same as
 /// the source in which the completions are being requested.
-class LibraryElementSuggestionBuilder extends GeneralizingElementVisitor
-    with ElementSuggestionBuilder {
-  @override
+class LibraryElementSuggestionBuilder extends GeneralizingElementVisitor {
   final DartCompletionRequest request;
 
-  final OpType optype;
+  final SuggestionBuilder builder;
+
+  final OpType opType;
 
   DartType contextType;
 
-  @override
   CompletionSuggestionKind kind;
 
   final String prefix;
@@ -38,65 +33,28 @@
   /// The set of libraries that have been, or are currently being, visited.
   final Set<LibraryElement> visitedLibraries = <LibraryElement>{};
 
-  LibraryElementSuggestionBuilder(this.request, [this.prefix])
-      : optype = request.opType {
+  LibraryElementSuggestionBuilder(this.request, this.builder, [this.prefix])
+      : opType = request.opType {
     contextType = request.featureComputer
         .computeContextType(request.target.containingNode);
     kind = request.target.isFunctionalArgument()
         ? CompletionSuggestionKind.IDENTIFIER
-        : optype.suggestKind;
+        : opType.suggestKind;
   }
 
   @override
-  LibraryElement get containingLibrary => request.libraryElement;
-
-  @override
   void visitClassElement(ClassElement element) {
-    if (optype.includeTypeNameSuggestions) {
-      // if includeTypeNameSuggestions, then use the filter
-      int relevance;
-      if (request.useNewRelevance) {
-        relevance = _relevanceForType(element.thisType);
-      } else if (element.hasDeprecated) {
-        relevance = DART_RELEVANCE_LOW;
-      } else {
-        relevance = optype.typeNameSuggestionsFilter(
-            _instantiateClassElement(element), DART_RELEVANCE_DEFAULT);
-      }
-      if (relevance != null) {
-        addSuggestion(element, prefix: prefix, relevance: relevance);
-      }
+    if (opType.includeTypeNameSuggestions) {
+      builder.suggestClass(element, kind: kind, prefix: prefix);
     }
-    if (optype.includeConstructorSuggestions) {
-      int relevance;
-      if (request.useNewRelevance) {
-        relevance = _relevanceForType(element.thisType);
-      } else if (element.hasDeprecated) {
-        relevance = DART_RELEVANCE_LOW;
-      } else {
-        relevance = optype.returnValueSuggestionsFilter(
-            _instantiateClassElement(element), DART_RELEVANCE_DEFAULT);
-      }
-      _addConstructorSuggestions(element, relevance);
+    if (opType.includeConstructorSuggestions) {
+      _addConstructorSuggestions(element);
     }
-    if (optype.includeReturnValueSuggestions) {
+    if (opType.includeReturnValueSuggestions) {
       if (element.isEnum) {
-        var enumName = element.displayName;
-        int relevance;
-        if (request.useNewRelevance) {
-          relevance = _relevanceForType(element.thisType);
-        } else if (element.hasDeprecated) {
-          relevance = DART_RELEVANCE_LOW;
-        } else {
-          relevance = optype.returnValueSuggestionsFilter(
-              _instantiateClassElement(element), DART_RELEVANCE_DEFAULT);
-        }
         for (var field in element.fields) {
           if (field.isEnumConstant) {
-            addSuggestion(field,
-                prefix: prefix,
-                relevance: relevance,
-                elementCompletion: '$enumName.${field.name}');
+            builder.suggestEnumConstant(field, prefix: prefix);
           }
         }
       }
@@ -115,15 +73,8 @@
 
   @override
   void visitExtensionElement(ExtensionElement element) {
-    if (optype.includeReturnValueSuggestions) {
-      int relevance;
-      if (request.useNewRelevance) {
-        relevance = _relevanceForType(element.extendedType);
-      } else {
-        relevance =
-            element.hasDeprecated ? DART_RELEVANCE_LOW : DART_RELEVANCE_DEFAULT;
-      }
-      addSuggestion(element, prefix: prefix, relevance: relevance);
+    if (opType.includeReturnValueSuggestions) {
+      builder.suggestExtension(element, kind: kind, prefix: prefix);
     }
     element.visitChildren(this);
   }
@@ -138,43 +89,21 @@
       return;
     }
     var returnType = element.returnType;
-    int relevance;
-    if (request.useNewRelevance) {
-      relevance = _relevanceForType(returnType);
-    } else {
-      relevance = element.hasDeprecated
-          ? DART_RELEVANCE_LOW
-          : (element.library == containingLibrary
-              ? DART_RELEVANCE_LOCAL_FUNCTION
-              : DART_RELEVANCE_DEFAULT);
-    }
     if (returnType != null && returnType.isVoid) {
-      if (optype.includeVoidReturnSuggestions) {
-        addSuggestion(element, prefix: prefix, relevance: relevance);
+      if (opType.includeVoidReturnSuggestions) {
+        builder.suggestTopLevelFunction(element, kind: kind, prefix: prefix);
       }
     } else {
-      if (optype.includeReturnValueSuggestions) {
-        addSuggestion(element, prefix: prefix, relevance: relevance);
+      if (opType.includeReturnValueSuggestions) {
+        builder.suggestTopLevelFunction(element, kind: kind, prefix: prefix);
       }
     }
   }
 
   @override
   void visitFunctionTypeAliasElement(FunctionTypeAliasElement element) {
-    if (optype.includeTypeNameSuggestions) {
-      int relevance;
-      if (request.useNewRelevance) {
-        // TODO(brianwilkerson) Figure out whether there are any features that
-        //  ought to be used here and what the right default value is.
-        relevance = 400;
-      } else {
-        relevance = element.hasDeprecated
-            ? DART_RELEVANCE_LOW
-            : (element.library == containingLibrary
-                ? DART_RELEVANCE_LOCAL_FUNCTION
-                : DART_RELEVANCE_DEFAULT);
-      }
-      addSuggestion(element, prefix: prefix, relevance: relevance);
+    if (opType.includeTypeNameSuggestions) {
+      builder.suggestFunctionTypeAlias(element, prefix: prefix);
     }
   }
 
@@ -187,47 +116,26 @@
 
   @override
   void visitPropertyAccessorElement(PropertyAccessorElement element) {
-    if (optype.includeReturnValueSuggestions) {
-      int relevance;
-      if (request.useNewRelevance) {
-        relevance = _relevanceForType(element.returnType);
-      } else if (element.hasDeprecated) {
-        relevance = DART_RELEVANCE_LOW;
+    if (opType.includeReturnValueSuggestions) {
+      if (element.enclosingElement is ClassElement) {
+        // TODO(brianwilkerson) Verify that we cannot reach this point and
+        //  remove the dead code.
+        builder.suggestAccessor(element, inheritanceDistance: -1.0);
       } else {
-        if (element.library == containingLibrary) {
-          if (element.enclosingElement is ClassElement) {
-            relevance = DART_RELEVANCE_LOCAL_FIELD;
-          } else {
-            relevance = DART_RELEVANCE_LOCAL_TOP_LEVEL_VARIABLE;
-          }
-        } else {
-          relevance = DART_RELEVANCE_DEFAULT;
-        }
+        builder.suggestTopLevelPropertyAccessor(element, prefix: prefix);
       }
-      addSuggestion(element, prefix: prefix, relevance: relevance);
     }
   }
 
   @override
   void visitTopLevelVariableElement(TopLevelVariableElement element) {
-    if (optype.includeReturnValueSuggestions) {
-      int relevance;
-      if (request.useNewRelevance) {
-        relevance = _relevanceForType(element.type);
-      } else {
-        relevance = element.hasDeprecated
-            ? DART_RELEVANCE_LOW
-            : (element.library == containingLibrary
-                ? DART_RELEVANCE_LOCAL_TOP_LEVEL_VARIABLE
-                : DART_RELEVANCE_DEFAULT);
-      }
-      addSuggestion(element, prefix: prefix, relevance: relevance);
+    if (opType.includeReturnValueSuggestions && !element.isSynthetic) {
+      builder.suggestTopLevelVariable(element, prefix: prefix);
     }
   }
 
   /// Add constructor suggestions for the given class.
-  void _addConstructorSuggestions(ClassElement classElem, int relevance) {
-    var className = classElem.name;
+  void _addConstructorSuggestions(ClassElement classElem) {
     for (var constructor in classElem.constructors) {
       if (constructor.isPrivate) {
         continue;
@@ -235,48 +143,9 @@
       if (classElem.isAbstract && !constructor.isFactory) {
         continue;
       }
-
-      var completion = constructor.displayName;
-      completion = completion.isNotEmpty ? '$className.$completion' : className;
-      if (prefix != null && prefix.isNotEmpty) {
-        completion = '$prefix.$completion';
-      }
-      var suggestion = createSuggestion(request, constructor,
-          completion: completion, relevance: relevance);
-      if (suggestion != null) {
-        suggestion.selectionOffset = suggestion.completion.length;
-        suggestions.add(suggestion);
-      }
+      builder.suggestConstructor(constructor, kind: kind, prefix: prefix);
     }
   }
-
-  InterfaceType _instantiateClassElement(ClassElement element) {
-    var typeParameters = element.typeParameters;
-    var typeArguments = const <DartType>[];
-    if (typeParameters.isNotEmpty) {
-      var typeProvider = request.libraryElement.typeProvider;
-      typeArguments = typeParameters.map((t) {
-        return typeProvider.dynamicType;
-      }).toList();
-    }
-
-    var nullabilitySuffix = request.featureSet.isEnabled(Feature.non_nullable)
-        ? NullabilitySuffix.none
-        : NullabilitySuffix.star;
-
-    return element.instantiate(
-      typeArguments: typeArguments,
-      nullabilitySuffix: nullabilitySuffix,
-    );
-  }
-
-  int _relevanceForType(DartType elementType) {
-    var contextTypeFeature =
-        request.featureComputer.contextTypeFeature(contextType, elementType);
-    // TODO(brianwilkerson) Figure out whether there are other features that
-    //  ought to be used here and what the right default value is.
-    return toRelevance(contextTypeFeature, 800);
-  }
 }
 
 /// A contributor that produces suggestions based on the top level members in
@@ -295,12 +164,12 @@
       return const <CompletionSuggestion>[];
     }
 
-    var visitor = LibraryElementSuggestionBuilder(request);
+    var visitor = LibraryElementSuggestionBuilder(request, builder);
     for (var unit in libraryUnits) {
       if (unit != null && unit.source != request.source) {
         unit.accept(visitor);
       }
     }
-    return visitor.suggestions;
+    return const <CompletionSuggestion>[];
   }
 }
diff --git a/pkg/analysis_server/lib/src/services/completion/dart/override_contributor.dart b/pkg/analysis_server/lib/src/services/completion/dart/override_contributor.dart
index 28c0d6f..f3210e7 100644
--- a/pkg/analysis_server/lib/src/services/completion/dart/override_contributor.dart
+++ b/pkg/analysis_server/lib/src/services/completion/dart/override_contributor.dart
@@ -4,21 +4,12 @@
 
 import 'dart:async';
 
-import 'package:analysis_server/src/protocol_server.dart'
-    show CompletionSuggestion, CompletionSuggestionKind;
-import 'package:analysis_server/src/protocol_server.dart' as protocol
-    hide CompletionSuggestion, CompletionSuggestionKind;
+import 'package:analysis_server/src/protocol_server.dart';
 import 'package:analysis_server/src/provisional/completion/dart/completion_dart.dart';
 import 'package:analysis_server/src/services/completion/dart/suggestion_builder.dart';
-import 'package:analyzer/dart/analysis/features.dart';
 import 'package:analyzer/dart/ast/ast.dart';
-import 'package:analyzer/dart/element/element.dart';
-import 'package:analyzer/dart/element/nullability_suffix.dart';
-import 'package:analyzer/dart/element/type.dart';
 import 'package:analyzer/src/dart/element/inheritance_manager3.dart';
 import 'package:analyzer_plugin/src/utilities/completion/completion_target.dart';
-import 'package:analyzer_plugin/utilities/change_builder/change_builder_dart.dart';
-import 'package:analyzer_plugin/utilities/range_factory.dart';
 
 /// A completion contributor used to suggest replacing partial identifiers
 /// inside a class declaration with templates for inherited members.
@@ -39,8 +30,7 @@
 
     // Generate a collection of inherited members
     var classElem = classDecl.declaredElement;
-    var classType = _thisType(request, classElem);
-    var interface = inheritance.getInterface(classType);
+    var interface = inheritance.getInterface(classElem);
     var interfaceMap = interface.map;
     var namesToOverride =
         _namesToOverride(classElem.librarySource.uri, interface);
@@ -52,72 +42,12 @@
       // Gracefully degrade if the overridden element has not been resolved.
       if (element.returnType != null) {
         var invokeSuper = interface.isSuperImplemented(name);
-        var suggestion =
-            await _buildSuggestion(request, targetId, element, invokeSuper);
-        if (suggestion != null) {
-          suggestions.add(suggestion);
-        }
+        await builder.suggestOverride(targetId, element, invokeSuper);
       }
     }
     return suggestions;
   }
 
-  /// Build a suggestion to replace [targetId] in the given [request] with an
-  /// override of the given [element].
-  Future<CompletionSuggestion> _buildSuggestion(
-      DartCompletionRequest request,
-      SimpleIdentifier targetId,
-      ExecutableElement element,
-      bool invokeSuper) async {
-    var displayTextBuffer = StringBuffer();
-    var builder = DartChangeBuilder(request.result.session);
-    await builder.addFileEdit(request.result.path, (builder) {
-      builder.addReplacement(range.node(targetId), (builder) {
-        builder.writeOverride(
-          element,
-          displayTextBuffer: displayTextBuffer,
-          invokeSuper: invokeSuper,
-        );
-      });
-    });
-
-    var fileEdits = builder.sourceChange.edits;
-    if (fileEdits.length != 1) return null;
-
-    var sourceEdits = fileEdits[0].edits;
-    if (sourceEdits.length != 1) return null;
-
-    var replacement = sourceEdits[0].replacement;
-    var completion = replacement.trim();
-    var overrideAnnotation = '@override';
-    if (_hasOverride(request.target.containingNode) &&
-        completion.startsWith(overrideAnnotation)) {
-      completion = completion.substring(overrideAnnotation.length).trim();
-    }
-    if (completion.isEmpty) {
-      return null;
-    }
-
-    var selectionRange = builder.selectionRange;
-    if (selectionRange == null) {
-      return null;
-    }
-    var offsetDelta = targetId.offset + replacement.indexOf(completion);
-    var displayText =
-        displayTextBuffer.isNotEmpty ? displayTextBuffer.toString() : null;
-    var suggestion = CompletionSuggestion(
-        CompletionSuggestionKind.OVERRIDE,
-        request.useNewRelevance ? Relevance.override : DART_RELEVANCE_HIGH,
-        completion,
-        selectionRange.offset - offsetDelta,
-        selectionRange.length,
-        element.hasDeprecated,
-        false,
-        displayText: displayText);
-    suggestion.element = protocol.convertElement(element);
-    return suggestion;
-  }
-
   /// If the target looks like a partial identifier inside a class declaration
   /// then return that identifier, otherwise return `null`.
   SimpleIdentifier _getTargetId(CompletionTarget target) {
@@ -157,20 +87,6 @@
     return null;
   }
 
-  /// Return `true` if the given [node] has an `override` annotation.
-  bool _hasOverride(AstNode node) {
-    if (node is AnnotatedNode) {
-      var metadata = node.metadata;
-      for (var annotation in metadata) {
-        if (annotation.name.name == 'override' &&
-            annotation.arguments == null) {
-          return true;
-        }
-      }
-    }
-    return false;
-  }
-
   /// Return the list of names that belong to the [interface] of a class, but
   /// are not yet declared in the class.
   List<Name> _namesToOverride(Uri libraryUri, Interface interface) {
@@ -184,25 +100,4 @@
     }
     return namesToOverride;
   }
-
-  InterfaceType _thisType(
-    DartCompletionRequest request,
-    ClassElement thisElement,
-  ) {
-    var typeParameters = thisElement.typeParameters;
-    var typeArguments = const <DartType>[];
-    if (typeParameters.isNotEmpty) {
-      var nullabilitySuffix = request.featureSet.isEnabled(Feature.non_nullable)
-          ? NullabilitySuffix.none
-          : NullabilitySuffix.star;
-      typeArguments = typeParameters.map((t) {
-        return t.instantiate(nullabilitySuffix: nullabilitySuffix);
-      }).toList();
-    }
-
-    return thisElement.instantiate(
-      typeArguments: typeArguments,
-      nullabilitySuffix: NullabilitySuffix.none,
-    );
-  }
 }
diff --git a/pkg/analysis_server/lib/src/services/completion/dart/suggestion_builder.dart b/pkg/analysis_server/lib/src/services/completion/dart/suggestion_builder.dart
index e8eb817..18c203c 100644
--- a/pkg/analysis_server/lib/src/services/completion/dart/suggestion_builder.dart
+++ b/pkg/analysis_server/lib/src/services/completion/dart/suggestion_builder.dart
@@ -13,6 +13,7 @@
 import 'package:analysis_server/src/provisional/completion/dart/completion_dart.dart';
 import 'package:analysis_server/src/services/completion/dart/feature_computer.dart';
 import 'package:analysis_server/src/services/completion/dart/utilities.dart';
+import 'package:analysis_server/src/utilities/extensions/ast.dart';
 import 'package:analysis_server/src/utilities/flutter.dart';
 import 'package:analyzer/dart/analysis/features.dart';
 import 'package:analyzer/dart/ast/ast.dart';
@@ -20,161 +21,10 @@
 import 'package:analyzer/dart/element/nullability_suffix.dart';
 import 'package:analyzer/dart/element/type.dart';
 import 'package:analyzer/src/util/comment.dart';
+import 'package:analyzer_plugin/utilities/change_builder/change_builder_dart.dart';
+import 'package:analyzer_plugin/utilities/range_factory.dart';
 import 'package:meta/meta.dart';
 
-/// Return a suggestion based on the given [element], or `null` if a suggestion
-/// is not appropriate for the given element.
-CompletionSuggestion createSuggestion(
-    DartCompletionRequest request, Element element,
-    {String completion,
-    protocol.ElementKind elementKind,
-    CompletionSuggestionKind kind,
-    int relevance = DART_RELEVANCE_DEFAULT}) {
-  if (element == null) {
-    return null;
-  }
-  if (element is ExecutableElement && element.isOperator) {
-    // Do not include operators in suggestions
-    return null;
-  }
-  completion ??= element.displayName;
-  if (completion == null || completion.isEmpty) {
-    return null;
-  }
-  kind ??= CompletionSuggestionKind.INVOCATION;
-  var suggestion = CompletionSuggestion(kind, relevance, completion,
-      completion.length, 0, element.hasOrInheritsDeprecated, false);
-
-  // Attach docs.
-  var doc = DartUnitHoverComputer.computeDocumentation(
-      request.dartdocDirectiveInfo, element);
-  if (doc != null) {
-    suggestion.docComplete = doc;
-    suggestion.docSummary = getDartDocSummary(doc);
-  }
-
-  suggestion.element = protocol.convertElement(element);
-  if (elementKind != null) {
-    suggestion.element.kind = elementKind;
-  }
-  var enclosingElement = element.enclosingElement;
-  if (enclosingElement is ClassElement) {
-    suggestion.declaringType = enclosingElement.displayName;
-  }
-  suggestion.returnType = getReturnTypeString(element);
-  if (element is ExecutableElement && element is! PropertyAccessorElement) {
-    suggestion.parameterNames = element.parameters
-        .map((ParameterElement parameter) => parameter.name)
-        .toList();
-    suggestion.parameterTypes =
-        element.parameters.map((ParameterElement parameter) {
-      var paramType = parameter.type;
-      // Gracefully degrade if type not resolved yet
-      return paramType != null
-          ? paramType.getDisplayString(withNullability: false)
-          : 'var';
-    }).toList();
-
-    var requiredParameters = element.parameters
-        .where((ParameterElement param) => param.isRequiredPositional);
-    suggestion.requiredParameterCount = requiredParameters.length;
-
-    var namedParameters =
-        element.parameters.where((ParameterElement param) => param.isNamed);
-    suggestion.hasNamedParameters = namedParameters.isNotEmpty;
-
-    addDefaultArgDetails(
-        suggestion, element, requiredParameters, namedParameters);
-  }
-  return suggestion;
-}
-
-/// Common mixin for sharing behavior.
-mixin ElementSuggestionBuilder {
-  /// A collection of completion suggestions.
-  final List<CompletionSuggestion> suggestions = <CompletionSuggestion>[];
-
-  /// A set of existing completions used to prevent duplicate suggestions.
-  final Set<String> _completions = <String>{};
-
-  /// A map of element names to suggestions for synthetic getters and setters.
-  final Map<String, CompletionSuggestion> _syntheticMap =
-      <String, CompletionSuggestion>{};
-
-  /// Return the library in which the completion is requested.
-  LibraryElement get containingLibrary;
-
-  /// Return the kind of suggestions that should be built.
-  CompletionSuggestionKind get kind;
-
-  /// Return the completion request for which suggestions are being built.
-  DartCompletionRequest get request;
-
-  /// Add a suggestion based upon the given element.
-  CompletionSuggestion addSuggestion(Element element,
-      {String prefix,
-      int relevance = DART_RELEVANCE_DEFAULT,
-      String elementCompletion}) {
-    if (element.isPrivate) {
-      if (element.library != containingLibrary) {
-        return null;
-      }
-    }
-    var completion = elementCompletion ?? element.displayName;
-    if (prefix != null && prefix.isNotEmpty) {
-      if (completion == null || completion.isEmpty) {
-        completion = prefix;
-      } else {
-        completion = '$prefix.$completion';
-      }
-    }
-    if (completion == null || completion.isEmpty) {
-      return null;
-    }
-    var suggestion = createSuggestion(request, element,
-        completion: completion, kind: kind, relevance: relevance);
-    if (suggestion != null) {
-      if (element.isSynthetic && element is PropertyAccessorElement) {
-        String cacheKey;
-        if (element.isGetter) {
-          cacheKey = element.name;
-        }
-        if (element.isSetter) {
-          cacheKey = element.name;
-          cacheKey = cacheKey.substring(0, cacheKey.length - 1);
-        }
-        if (cacheKey != null) {
-          var existingSuggestion = _syntheticMap[cacheKey];
-
-          // Pair getter/setter by updating the existing suggestion
-          if (existingSuggestion != null) {
-            var getter = element.isGetter ? suggestion : existingSuggestion;
-            var elemKind = element.enclosingElement is ClassElement
-                ? protocol.ElementKind.FIELD
-                : protocol.ElementKind.TOP_LEVEL_VARIABLE;
-            existingSuggestion.element = protocol.Element(
-                elemKind,
-                existingSuggestion.element.name,
-                existingSuggestion.element.flags,
-                location: getter.element.location,
-                typeParameters: getter.element.typeParameters,
-                parameters: null,
-                returnType: getter.returnType);
-            return existingSuggestion;
-          }
-
-          // Cache lone getter/setter so that it can be paired
-          _syntheticMap[cacheKey] = suggestion;
-        }
-      }
-      if (_completions.add(suggestion.completion)) {
-        suggestions.add(suggestion);
-      }
-    }
-    return suggestion;
-  }
-}
-
 /// This class provides suggestions based upon the visible instance members in
 /// an interface type.
 class MemberSuggestionBuilder {
@@ -368,8 +218,8 @@
   /// If the accessor is being invoked with a target of `super`, then the
   /// [containingMemberName] should be the name of the member containing the
   /// invocation. The [inheritanceDistance] is the value of the inheritance
-  /// distance feature computed for the accessor (or `-1.0` if the accessor is a
-  /// static accessor).
+  /// distance feature computed for the accessor or `-1.0` if the accessor is a
+  /// static accessor.
   void suggestAccessor(PropertyAccessorElement accessor,
       {@required double inheritanceDistance}) {
     assert(accessor.enclosingElement is ClassElement ||
@@ -385,8 +235,7 @@
         }
       }
     } else {
-      var type =
-          accessor.isGetter ? accessor.returnType : accessor.parameters[0].type;
+      var type = _getPropertyAccessorType(accessor);
       int relevance;
       if (request.useNewRelevance) {
         var featureComputer = request.featureComputer;
@@ -407,7 +256,9 @@
             startsWithDollar: startsWithDollar,
             superMatches: superMatches);
       } else {
-        relevance = _computeOldMemberRelevance(accessor);
+        relevance = accessor.hasOrInheritsDeprecated
+            ? DART_RELEVANCE_LOW
+            : _computeOldMemberRelevance(accessor);
         if (request.opType.includeReturnValueSuggestions) {
           relevance =
               request.opType.returnValueSuggestionsFilter(type, relevance);
@@ -416,7 +267,7 @@
           return;
         }
       }
-      _add(createSuggestion(request, accessor, relevance: relevance));
+      _add(_createSuggestion(accessor, relevance: relevance));
     }
   }
 
@@ -437,14 +288,16 @@
       }
     }
 
-    _add(createSuggestion(request, parameter,
+    _add(_createSuggestion(parameter,
         elementKind: protocol.ElementKind.PARAMETER, relevance: relevance));
   }
 
   /// Add a suggestion for a [classElement]. If a [kind] is provided it will
-  /// be used as the kind for the suggestion.
+  /// be used as the kind for the suggestion. If the class can only be
+  /// referenced using a prefix, then the [prefix] should be provided.
   void suggestClass(ClassElement classElement,
-      {CompletionSuggestionKind kind = CompletionSuggestionKind.INVOCATION}) {
+      {CompletionSuggestionKind kind = CompletionSuggestionKind.INVOCATION,
+      String prefix}) {
     int relevance;
     if (request.useNewRelevance) {
       relevance = _computeTopLevelRelevance(classElement,
@@ -459,34 +312,86 @@
       }
     }
 
-    _add(createSuggestion(request, classElement,
-        kind: kind, relevance: relevance));
+    _add(_createSuggestion(classElement,
+        kind: kind, prefix: prefix, relevance: relevance));
+  }
+
+  /// Add a suggestion to insert a closure matching the given function [type].
+  /// If [includeTrailingComma] is `true` then the completion text will include
+  /// a trailing comma, such as when the closure is part of an argument list.
+  void suggestClosure(FunctionType type, {bool includeTrailingComma = false}) {
+    var indent = getRequestLineIndent(request);
+    var parametersString = buildClosureParameters(type);
+
+    var blockBuffer = StringBuffer(parametersString);
+    blockBuffer.writeln(' {');
+    blockBuffer.write('$indent  ');
+    var blockSelectionOffset = blockBuffer.length;
+    blockBuffer.writeln();
+    blockBuffer.write('$indent}');
+
+    var expressionBuffer = StringBuffer(parametersString);
+    expressionBuffer.write(' => ');
+    var expressionSelectionOffset = expressionBuffer.length;
+
+    if (includeTrailingComma) {
+      blockBuffer.write(',');
+      expressionBuffer.write(',');
+    }
+
+    CompletionSuggestion createSuggestion({
+      @required String completion,
+      @required String displayText,
+      @required int selectionOffset,
+    }) {
+      return CompletionSuggestion(
+        CompletionSuggestionKind.INVOCATION,
+        request.useNewRelevance ? Relevance.closure : DART_RELEVANCE_HIGH,
+        completion,
+        selectionOffset,
+        0,
+        false,
+        false,
+        displayText: displayText,
+      );
+    }
+
+    _add(createSuggestion(
+      completion: blockBuffer.toString(),
+      displayText: '$parametersString {}',
+      selectionOffset: blockSelectionOffset,
+    ));
+    _add(createSuggestion(
+      completion: expressionBuffer.toString(),
+      displayText: '$parametersString =>',
+      selectionOffset: expressionSelectionOffset,
+    ));
   }
 
   /// Add a suggestion for a [constructor]. If a [kind] is provided it will be
   /// used as the kind for the suggestion. The flag [hasClassName] should be
   /// `true` if the completion is occurring after the name of the class and a
-  /// period, and hence should not include the name of the class.
+  /// period, and hence should not include the name of the class. If the class
+  /// can only be referenced using a prefix, and the class name is to be
+  /// included in the completion, then the [prefix] should be provided.
   void suggestConstructor(ConstructorElement constructor,
       {CompletionSuggestionKind kind = CompletionSuggestionKind.INVOCATION,
-      bool hasClassName = false}) {
-    var classElement = constructor.enclosingElement;
-    if (classElement == null) {
-      return;
-    }
-    var prefix = classElement.name;
-    // TODO(brianwilkerson) It shouldn't be necessary to test for an empty
-    //  prefix.
-    if (prefix == null || prefix.isEmpty) {
+      bool hasClassName = false,
+      String prefix}) {
+    // If the class name is already in the text, then we don't support
+    // prepending a prefix.
+    assert(!hasClassName || prefix == null);
+    var className = constructor.enclosingElement?.name;
+    if (className == null || className.isEmpty) {
       return;
     }
 
     var completion = constructor.displayName;
-    if (!hasClassName && prefix != null && prefix.isNotEmpty) {
+    if (!hasClassName && className != null && className.isNotEmpty) {
       if (completion == null || completion.isEmpty) {
-        completion = prefix;
+        completion = className;
       } else {
-        completion = '$prefix.$completion';
+        completion = '$className.$completion';
       }
     }
     if (completion == null || completion.isEmpty) {
@@ -500,10 +405,18 @@
       relevance = constructor.hasOrInheritsDeprecated
           ? DART_RELEVANCE_LOW
           : DART_RELEVANCE_DEFAULT;
+      relevance = request.opType.returnValueSuggestionsFilter(
+          _instantiateClassElement(constructor.enclosingElement), relevance);
+      if (relevance == null) {
+        return;
+      }
     }
 
-    _add(createSuggestion(request, constructor,
-        completion: completion, kind: kind, relevance: relevance));
+    _add(_createSuggestion(constructor,
+        completion: completion,
+        kind: kind,
+        prefix: prefix,
+        relevance: relevance));
   }
 
   /// Add a suggestion for a top-level [element]. If a [kind] is provided it
@@ -529,8 +442,9 @@
     }
   }
 
-  /// Add a suggestion for an enum [constant].
-  void suggestEnumConstant(FieldElement constant) {
+  /// Add a suggestion for an enum [constant]. If the enum can only be
+  /// referenced using a prefix, then the [prefix] should be provided.
+  void suggestEnumConstant(FieldElement constant, {String prefix}) {
     var constantName = constant.name;
     var enumElement = constant.enclosingElement;
     var enumName = enumElement.name;
@@ -550,14 +464,16 @@
       }
     }
 
-    _add(createSuggestion(request, constant,
-        completion: completion, relevance: relevance));
+    _add(_createSuggestion(constant,
+        completion: completion, prefix: prefix, relevance: relevance));
   }
 
   /// Add a suggestion for an [extension]. If a [kind] is provided it will be
-  /// used as the kind for the suggestion.
+  /// used as the kind for the suggestion. If the extension can only be
+  /// referenced using a prefix, then the [prefix] should be provided.
   void suggestExtension(ExtensionElement extension,
-      {CompletionSuggestionKind kind = CompletionSuggestionKind.INVOCATION}) {
+      {CompletionSuggestionKind kind = CompletionSuggestionKind.INVOCATION,
+      String prefix}) {
     int relevance;
     if (request.useNewRelevance) {
       relevance = _computeTopLevelRelevance(extension,
@@ -568,8 +484,8 @@
           : DART_RELEVANCE_DEFAULT;
     }
 
-    _add(
-        createSuggestion(request, extension, kind: kind, relevance: relevance));
+    _add(_createSuggestion(extension,
+        kind: kind, prefix: prefix, relevance: relevance));
   }
 
   /// Add a suggestion for a [field]. If the field is being referenced with a
@@ -608,7 +524,7 @@
         return;
       }
     }
-    _add(createSuggestion(request, field, relevance: relevance));
+    _add(_createSuggestion(field, relevance: relevance));
   }
 
   /// Add a suggestion to reference a [field] in a field formal parameter.
@@ -619,7 +535,7 @@
         ? Relevance.fieldFormalParameter
         : DART_RELEVANCE_LOCAL_FIELD;
 
-    _add(createSuggestion(request, field, relevance: relevance));
+    _add(_createSuggestion(field, relevance: relevance));
   }
 
   /// Add a suggestion for the `call` method defined on functions.
@@ -646,9 +562,11 @@
   }
 
   /// Add a suggestion for a [functionTypeAlias]. If a [kind] is provided it
-  /// will be used as the kind for the suggestion.
+  /// will be used as the kind for the suggestion. If the alias can only be
+  /// referenced using a prefix, then the [prefix] should be provided.
   void suggestFunctionTypeAlias(FunctionTypeAliasElement functionTypeAlias,
-      {CompletionSuggestionKind kind = CompletionSuggestionKind.INVOCATION}) {
+      {CompletionSuggestionKind kind = CompletionSuggestionKind.INVOCATION,
+      String prefix}) {
     int relevance;
     if (request.useNewRelevance) {
       relevance = _computeTopLevelRelevance(functionTypeAlias,
@@ -661,8 +579,38 @@
           ? DART_RELEVANCE_LOCAL_FUNCTION
           : DART_RELEVANCE_DEFAULT;
     }
-    _add(createSuggestion(request, functionTypeAlias,
-        kind: kind, relevance: relevance));
+    _add(_createSuggestion(functionTypeAlias,
+        kind: kind, prefix: prefix, relevance: relevance));
+  }
+
+  /// Add a suggestion for a [keyword]. The [offset] is the offset from the
+  /// beginning of the keyword where the cursor will be left.
+  void suggestKeyword(String keyword, {int offset, @required int relevance}) {
+    // TODO(brianwilkerson) Use the location at which the keyword is being
+    //  inserted to compute the relevance.
+    _add(CompletionSuggestion(CompletionSuggestionKind.KEYWORD, relevance,
+        keyword, offset ?? keyword.length, 0, false, false));
+  }
+
+  /// Add a suggestion for a [label].
+  void suggestLabel(Label label) {
+    var completion = label.label?.name;
+    // TODO(brianwilkerson) Figure out why we're excluding labels consisting of
+    //  a single underscore.
+    if (completion != null && completion.isNotEmpty && completion != '_') {
+      var suggestion = CompletionSuggestion(
+          CompletionSuggestionKind.IDENTIFIER,
+          request.useNewRelevance ? Relevance.label : DART_RELEVANCE_DEFAULT,
+          completion,
+          completion.length,
+          0,
+          false,
+          false);
+      suggestion.element = createLocalElement(
+          request.source, protocol.ElementKind.LABEL, label.label,
+          returnType: NO_RETURN_TYPE);
+      _add(suggestion);
+    }
   }
 
   /// Add a suggestion for the `loadLibrary` [function] associated with a
@@ -679,7 +627,7 @@
           : DART_RELEVANCE_DEFAULT;
     }
 
-    _add(createSuggestion(request, function, relevance: relevance));
+    _add(_createSuggestion(function, relevance: relevance));
   }
 
   /// Add a suggestion for a local [variable].
@@ -701,7 +649,7 @@
       }
     }
 
-    _add(createSuggestion(request, variable, relevance: relevance));
+    _add(_createSuggestion(variable, relevance: relevance));
   }
 
   /// Add a suggestion for a [method]. If the method is being invoked with a
@@ -745,7 +693,7 @@
     }
 
     var suggestion =
-        createSuggestion(request, method, kind: kind, relevance: relevance);
+        _createSuggestion(method, kind: kind, relevance: relevance);
     if (suggestion != null) {
       if (method.name == 'setState' &&
           flutter.isExactState(method.enclosingElement)) {
@@ -776,6 +724,144 @@
     }
   }
 
+  /// Add a suggestion to use the [name] at a declaration site.
+  void suggestName(String name) {
+    // TODO(brianwilkerson) Explore whether there are any features of the name
+    //  that can be used to provide better relevance scores.
+    _add(CompletionSuggestion(
+        CompletionSuggestionKind.IDENTIFIER,
+        request.useNewRelevance ? 500 : DART_RELEVANCE_DEFAULT,
+        name,
+        name.length,
+        0,
+        false,
+        false));
+  }
+
+  /// Add a suggestion to add a named argument corresponding to the [parameter].
+  /// If [appendColon] is `true` then a colon will be added after the name. If
+  /// [appendComma] is `true` then a comma will be included at the end of the
+  /// completion text.
+  void suggestNamedArgument(ParameterElement parameter,
+      {@required bool appendColon, @required bool appendComma}) {
+    var name = parameter.name;
+    var type = parameter.type?.getDisplayString(withNullability: false);
+
+    var completion = name;
+    if (appendColon) {
+      completion += ': ';
+    }
+    var selectionOffset = completion.length;
+
+    // Optionally add Flutter child widget details.
+    // todo (pq): revisit this special casing; likely it can be generalized away
+    var element = parameter.enclosingElement;
+    if (element is ConstructorElement) {
+      var flutter = Flutter.of(request.result);
+      if (flutter.isWidget(element.enclosingElement)) {
+        var defaultValue = getDefaultStringParameterValue(parameter);
+        // TODO(devoncarew): Should we remove the check here? We would then
+        // suggest values for param types like closures.
+        if (defaultValue != null && defaultValue.text == '[]') {
+          var completionLength = completion.length;
+          completion += defaultValue.text;
+          if (defaultValue.cursorPosition != null) {
+            selectionOffset = completionLength + defaultValue.cursorPosition;
+          }
+        }
+      }
+    }
+
+    if (appendComma) {
+      completion += ',';
+    }
+
+    int relevance;
+    if (parameter.isRequiredNamed || parameter.hasRequired) {
+      relevance = request.useNewRelevance
+          ? Relevance.requiredNamedArgument
+          : DART_RELEVANCE_NAMED_PARAMETER_REQUIRED;
+    } else {
+      relevance = request.useNewRelevance
+          ? Relevance.namedArgument
+          : DART_RELEVANCE_NAMED_PARAMETER;
+    }
+
+    var suggestion = CompletionSuggestion(
+        CompletionSuggestionKind.NAMED_ARGUMENT,
+        relevance,
+        completion,
+        selectionOffset,
+        0,
+        false,
+        false,
+        parameterName: name,
+        parameterType: type);
+    if (parameter is FieldFormalParameterElement) {
+      _setDocumentation(suggestion, parameter);
+      suggestion.element = convertElement(parameter);
+    }
+    _add(suggestion);
+  }
+
+  /// Add a suggestion to replace the [targetId] with an override of the given
+  /// [element]. If [invokeSuper] is `true`, then the override will contain an
+  /// invocation of an overridden member.
+  Future<void> suggestOverride(SimpleIdentifier targetId,
+      ExecutableElement element, bool invokeSuper) async {
+    var displayTextBuffer = StringBuffer();
+    var builder = DartChangeBuilder(request.result.session);
+    await builder.addFileEdit(request.result.path, (builder) {
+      builder.addReplacement(range.node(targetId), (builder) {
+        builder.writeOverride(
+          element,
+          displayTextBuffer: displayTextBuffer,
+          invokeSuper: invokeSuper,
+        );
+      });
+    });
+
+    var fileEdits = builder.sourceChange.edits;
+    if (fileEdits.length != 1) {
+      return;
+    }
+
+    var sourceEdits = fileEdits[0].edits;
+    if (sourceEdits.length != 1) {
+      return;
+    }
+
+    var replacement = sourceEdits[0].replacement;
+    var completion = replacement.trim();
+    var overrideAnnotation = '@override';
+    if (request.target.containingNode.hasOverride &&
+        completion.startsWith(overrideAnnotation)) {
+      completion = completion.substring(overrideAnnotation.length).trim();
+    }
+    if (completion.isEmpty) {
+      return;
+    }
+
+    var selectionRange = builder.selectionRange;
+    if (selectionRange == null) {
+      return;
+    }
+    var offsetDelta = targetId.offset + replacement.indexOf(completion);
+    var displayText =
+        displayTextBuffer.isNotEmpty ? displayTextBuffer.toString() : null;
+    var suggestion = CompletionSuggestion(
+        CompletionSuggestionKind.OVERRIDE,
+        request.useNewRelevance ? Relevance.override : DART_RELEVANCE_HIGH,
+        completion,
+        selectionRange.offset - offsetDelta,
+        selectionRange.length,
+        element.hasDeprecated,
+        false,
+        displayText: displayText);
+    suggestion.element = protocol.convertElement(element);
+    _add(suggestion);
+  }
+
   /// Add a suggestion for a [parameter].
   void suggestParameter(ParameterElement parameter) {
     var variableType = parameter.type;
@@ -795,13 +881,30 @@
       }
     }
 
-    _add(createSuggestion(request, parameter, relevance: relevance));
+    _add(_createSuggestion(parameter, relevance: relevance));
+  }
+
+  /// Add a suggestion for a [prefix] associated with a [library].
+  void suggestPrefix(LibraryElement library, String prefix) {
+    var relevance;
+    if (request.useNewRelevance) {
+      relevance = Relevance.prefix;
+    } else {
+      relevance =
+          library.hasDeprecated ? DART_RELEVANCE_LOW : DART_RELEVANCE_DEFAULT;
+    }
+    _add(_createSuggestion(library,
+        completion: prefix,
+        kind: CompletionSuggestionKind.IDENTIFIER,
+        relevance: relevance));
   }
 
   /// Add a suggestion for a top-level [function]. If a [kind] is provided it
-  /// will be used as the kind for the suggestion.
+  /// will be used as the kind for the suggestion. If the function can only be
+  /// referenced using a prefix, then the [prefix] should be provided.
   void suggestTopLevelFunction(FunctionElement function,
-      {CompletionSuggestionKind kind = CompletionSuggestionKind.INVOCATION}) {
+      {CompletionSuggestionKind kind = CompletionSuggestionKind.INVOCATION,
+      String prefix}) {
     int relevance;
     if (request.useNewRelevance) {
       relevance =
@@ -819,13 +922,17 @@
       }
     }
 
-    _add(createSuggestion(request, function, kind: kind, relevance: relevance));
+    _add(_createSuggestion(function,
+        kind: kind, prefix: prefix, relevance: relevance));
   }
 
   /// Add a suggestion for a top-level property [accessor]. If a [kind] is
-  /// provided it will be used as the kind for the suggestion.
+  /// provided it will be used as the kind for the suggestion. If the accessor
+  /// can only be referenced using a prefix, then the [prefix] should be
+  /// provided.
   void suggestTopLevelPropertyAccessor(PropertyAccessorElement accessor,
-      {CompletionSuggestionKind kind = CompletionSuggestionKind.INVOCATION}) {
+      {CompletionSuggestionKind kind = CompletionSuggestionKind.INVOCATION,
+      String prefix}) {
     assert(accessor.enclosingElement is CompilationUnitElement);
     if (accessor.isSynthetic) {
       // Avoid visiting a field twice. All fields induce a getter, but only
@@ -838,8 +945,7 @@
         }
       }
     } else {
-      var type =
-          accessor.isGetter ? accessor.returnType : accessor.parameters[0].type;
+      var type = _getPropertyAccessorType(accessor);
       int relevance;
       if (request.useNewRelevance) {
         var featureComputer = request.featureComputer;
@@ -858,7 +964,9 @@
             startsWithDollar: startsWithDollar,
             superMatches: -1.0);
       } else {
-        relevance = _computeOldMemberRelevance(accessor);
+        relevance = accessor.hasOrInheritsDeprecated
+            ? DART_RELEVANCE_LOW
+            : _computeOldMemberRelevance(accessor);
         if (request.opType.includeReturnValueSuggestions) {
           relevance =
               request.opType.returnValueSuggestionsFilter(type, relevance);
@@ -867,31 +975,34 @@
           return;
         }
       }
-      _add(createSuggestion(request, accessor, relevance: relevance));
+      _add(_createSuggestion(accessor, prefix: prefix, relevance: relevance));
     }
   }
 
   /// Add a suggestion for a top-level [variable]. If a [kind] is provided it
-  /// will be used as the kind for the suggestion.
+  /// will be used as the kind for the suggestion. If the variable can only be
+  /// referenced using a prefix, then the [prefix] should be provided.
   void suggestTopLevelVariable(TopLevelVariableElement variable,
-      {CompletionSuggestionKind kind = CompletionSuggestionKind.INVOCATION}) {
+      {CompletionSuggestionKind kind = CompletionSuggestionKind.INVOCATION,
+      String prefix}) {
     assert(variable.enclosingElement is CompilationUnitElement);
     int relevance;
     if (request.useNewRelevance) {
       relevance =
           _computeTopLevelRelevance(variable, elementType: variable.type);
-    } else if (variable.hasOrInheritsDeprecated) {
-      relevance = DART_RELEVANCE_LOW;
     } else {
       var type = variable.type;
-      relevance = _computeOldMemberRelevance(variable);
+      relevance = variable.hasOrInheritsDeprecated
+          ? DART_RELEVANCE_LOW
+          : _computeOldMemberRelevance(variable);
       relevance = request.opType.returnValueSuggestionsFilter(type, relevance);
       if (relevance == null) {
         return;
       }
     }
 
-    _add(createSuggestion(request, variable, kind: kind, relevance: relevance));
+    _add(_createSuggestion(variable,
+        kind: kind, prefix: prefix, relevance: relevance));
   }
 
   /// Add a suggestion for a type [parameter].
@@ -903,18 +1014,36 @@
       relevance = _computeOldMemberRelevance(parameter);
     }
 
-    _add(createSuggestion(request, parameter,
+    _add(_createSuggestion(parameter,
         kind: CompletionSuggestionKind.IDENTIFIER, relevance: relevance));
   }
 
+  /// Add a suggestion to use the [uri] in an import, export, or part directive.
+  void suggestUri(String uri) {
+    int relevance;
+    if (request.useNewRelevance) {
+      relevance =
+          uri == 'dart:core' ? Relevance.importDartCore : Relevance.import;
+    } else {
+      relevance =
+          uri == 'dart:core' ? DART_RELEVANCE_LOW : DART_RELEVANCE_DEFAULT;
+    }
+    _add(CompletionSuggestion(CompletionSuggestionKind.IMPORT, relevance, uri,
+        uri.length, 0, false, false));
+  }
+
   /// Add the given [suggestion] if it isn't `null` and if it isn't shadowed by
   /// a previously added suggestion.
   void _add(protocol.CompletionSuggestion suggestion) {
     if (suggestion != null) {
+      var key = suggestion.completion;
+      if (suggestion.element?.kind == protocol.ElementKind.CONSTRUCTOR) {
+        key = '$key()';
+      }
       if (laterReplacesEarlier) {
-        _suggestionMap[suggestion.completion] = suggestion;
+        _suggestionMap[key] = suggestion;
       } else {
-        _suggestionMap.putIfAbsent(suggestion.completion, () => suggestion);
+        _suggestionMap.putIfAbsent(key, () => suggestion);
       }
     }
   }
@@ -1013,6 +1142,87 @@
         defaultRelevance);
   }
 
+  /// Return a suggestion based on the [element], or `null` if a suggestion is
+  /// not appropriate for the element. If the completion should be something
+  /// different than the name of the element, then the [completion] should be
+  /// supplied. If an [elementKind] is provided, then it will be used rather
+  /// than the kind normally used for the element. If a [prefix] is provided,
+  /// then the element name (or completion) will be prefixed. The [relevance] is
+  /// the relevance of the suggestion.
+  CompletionSuggestion _createSuggestion(Element element,
+      {String completion,
+      protocol.ElementKind elementKind,
+      CompletionSuggestionKind kind,
+      String prefix,
+      @required int relevance}) {
+    if (element is ExecutableElement && element.isOperator) {
+      // Do not include operators in suggestions
+      return null;
+    }
+    completion ??= element.displayName;
+    if (completion == null || completion.isEmpty) {
+      return null;
+    }
+    if (prefix != null && prefix.isNotEmpty) {
+      completion = '$prefix.$completion';
+    }
+    kind ??= CompletionSuggestionKind.INVOCATION;
+    var suggestion = CompletionSuggestion(kind, relevance, completion,
+        completion.length, 0, element.hasOrInheritsDeprecated, false);
+
+    _setDocumentation(suggestion, element);
+
+    suggestion.element = protocol.convertElement(element);
+    if (elementKind != null) {
+      suggestion.element.kind = elementKind;
+    }
+    var enclosingElement = element.enclosingElement;
+    if (enclosingElement is ClassElement) {
+      suggestion.declaringType = enclosingElement.displayName;
+    }
+    suggestion.returnType = getReturnTypeString(element);
+    if (element is ExecutableElement && element is! PropertyAccessorElement) {
+      suggestion.parameterNames = element.parameters
+          .map((ParameterElement parameter) => parameter.name)
+          .toList();
+      suggestion.parameterTypes =
+          element.parameters.map((ParameterElement parameter) {
+        var paramType = parameter.type;
+        // Gracefully degrade if type not resolved yet
+        return paramType != null
+            ? paramType.getDisplayString(withNullability: false)
+            : 'var';
+      }).toList();
+
+      var requiredParameters = element.parameters
+          .where((ParameterElement param) => param.isRequiredPositional);
+      suggestion.requiredParameterCount = requiredParameters.length;
+
+      var namedParameters =
+          element.parameters.where((ParameterElement param) => param.isNamed);
+      suggestion.hasNamedParameters = namedParameters.isNotEmpty;
+
+      addDefaultArgDetails(
+          suggestion, element, requiredParameters, namedParameters);
+    }
+    return suggestion;
+  }
+
+  /// Return the type associated with the [accessor], maybe `null` if an
+  /// invalid setter with no parameters at all.
+  DartType _getPropertyAccessorType(PropertyAccessorElement accessor) {
+    if (accessor.isGetter) {
+      return accessor.returnType;
+    } else {
+      var parameters = accessor.parameters;
+      if (parameters.isEmpty) {
+        return null;
+      } else {
+        return parameters[0].type;
+      }
+    }
+  }
+
   InterfaceType _instantiateClassElement(ClassElement element) {
     var typeParameters = element.typeParameters;
     var typeArguments = const <DartType>[];
@@ -1048,4 +1258,15 @@
       nullabilitySuffix: nullabilitySuffix,
     );
   }
+
+  /// If the [element] has a documentation comment, fill the [suggestion]'s
+  /// documentation fields.
+  void _setDocumentation(CompletionSuggestion suggestion, Element element) {
+    var doc = DartUnitHoverComputer.computeDocumentation(
+        request.dartdocDirectiveInfo, element);
+    if (doc != null) {
+      suggestion.docComplete = doc;
+      suggestion.docSummary = getDartDocSummary(doc);
+    }
+  }
 }
diff --git a/pkg/analysis_server/lib/src/services/completion/dart/uri_contributor.dart b/pkg/analysis_server/lib/src/services/completion/dart/uri_contributor.dart
index cc6bad1..06ea2a4 100644
--- a/pkg/analysis_server/lib/src/services/completion/dart/uri_contributor.dart
+++ b/pkg/analysis_server/lib/src/services/completion/dart/uri_contributor.dart
@@ -6,7 +6,7 @@
 import 'dart:core';
 
 import 'package:analysis_server/src/protocol_server.dart'
-    show CompletionSuggestion, CompletionSuggestionKind;
+    show CompletionSuggestion;
 import 'package:analysis_server/src/provisional/completion/dart/completion_dart.dart';
 import 'package:analysis_server/src/services/completion/dart/suggestion_builder.dart';
 import 'package:analyzer/dart/ast/ast.dart';
@@ -27,23 +27,18 @@
   @override
   Future<List<CompletionSuggestion>> computeSuggestions(
       DartCompletionRequest request, SuggestionBuilder builder) async {
-    var builder = _UriSuggestionBuilder(request);
-    request.target.containingNode.accept(builder);
-    return builder.suggestions;
+    var visitor = _UriSuggestionBuilder(request, builder);
+    request.target.containingNode.accept(visitor);
+    return const <CompletionSuggestion>[];
   }
 }
 
 class _UriSuggestionBuilder extends SimpleAstVisitor<void> {
-  // TODO(brianwilkerson) Consider whether to make these constants in
-  //  Relevance (after renaming them).
-  static const int dartCoreRelevance = 100;
-  static const int defaultRelevance = 900;
-
   final DartCompletionRequest request;
 
-  final List<CompletionSuggestion> suggestions = <CompletionSuggestion>[];
+  final SuggestionBuilder builder;
 
-  _UriSuggestionBuilder(this.request);
+  _UriSuggestionBuilder(this.request, this.builder);
 
   @override
   void visitExportDirective(ExportDirective node) {
@@ -118,22 +113,12 @@
   }
 
   void _addDartSuggestions() {
-    _addSuggestion('dart:');
+    builder.suggestUri('dart:');
     var factory = request.sourceFactory;
     for (var lib in factory.dartSdk.sdkLibraries) {
       if (!lib.isInternal && !lib.isImplementation) {
         if (!lib.shortName.startsWith('dart:_')) {
-          int relevance;
-          if (request.useNewRelevance) {
-            relevance = lib.shortName == 'dart:core'
-                ? dartCoreRelevance
-                : defaultRelevance;
-          } else {
-            relevance = lib.shortName == 'dart:core'
-                ? DART_RELEVANCE_LOW
-                : DART_RELEVANCE_DEFAULT;
-          }
-          _addSuggestion(lib.shortName, relevance: relevance);
+          builder.suggestUri(lib.shortName);
         }
       }
     }
@@ -197,7 +182,7 @@
             }
           }
           if (completion != null && completion != source.shortName) {
-            _addSuggestion(completion);
+            builder.suggestUri(completion);
           }
         }
       } on FileSystemException {
@@ -212,12 +197,12 @@
       for (var child in folder.getChildren()) {
         if (child is Folder) {
           var childPrefix = '$prefix${child.shortName}/';
-          _addSuggestion(childPrefix);
+          builder.suggestUri(childPrefix);
           if (partial.startsWith(childPrefix)) {
             _addPackageFolderSuggestions(partial, childPrefix, child);
           }
         } else {
-          _addSuggestion('$prefix${child.shortName}');
+          builder.suggestUri('$prefix${child.shortName}');
         }
       }
     } on FileSystemException {
@@ -230,10 +215,10 @@
     var factory = request.sourceFactory;
     var packageMap = factory.packageMap;
     if (packageMap != null) {
-      _addSuggestion('package:');
+      builder.suggestUri('package:');
       packageMap.forEach((pkgName, folders) {
         var prefix = 'package:$pkgName/';
-        _addSuggestion(prefix);
+        builder.suggestUri(prefix);
         for (var folder in folders) {
           if (folder.exists) {
             _addPackageFolderSuggestions(partial, prefix, folder);
@@ -243,16 +228,6 @@
     }
   }
 
-  void _addSuggestion(String completion, {int relevance}) {
-    if (request.useNewRelevance) {
-      relevance ??= defaultRelevance;
-    } else {
-      relevance ??= DART_RELEVANCE_DEFAULT;
-    }
-    suggestions.add(CompletionSuggestion(CompletionSuggestionKind.IMPORT,
-        relevance, completion, completion.length, 0, false, false));
-  }
-
   String _extractPartialUri(SimpleStringLiteral node) {
     if (request.offset < node.contentsOffset) {
       return null;
diff --git a/pkg/analysis_server/lib/src/services/completion/dart/variable_name_contributor.dart b/pkg/analysis_server/lib/src/services/completion/dart/variable_name_contributor.dart
index b40435c..3c87372 100644
--- a/pkg/analysis_server/lib/src/services/completion/dart/variable_name_contributor.dart
+++ b/pkg/analysis_server/lib/src/services/completion/dart/variable_name_contributor.dart
@@ -5,7 +5,7 @@
 import 'dart:async';
 
 import 'package:analysis_server/src/protocol_server.dart'
-    show CompletionSuggestion, CompletionSuggestionKind;
+    show CompletionSuggestion;
 import 'package:analysis_server/src/provisional/completion/dart/completion_dart.dart';
 import 'package:analysis_server/src/services/completion/dart/suggestion_builder.dart';
 import 'package:analysis_server/src/services/correction/name_suggestion.dart';
@@ -73,42 +73,22 @@
 
       var variableNameSuggestions = getCamelWordCombinations(strName);
       variableNameSuggestions.remove(strName);
-      var suggestions = <CompletionSuggestion>[];
       for (var varName in variableNameSuggestions) {
-        var suggestion = _createNameSuggestion(request, varName);
-        if (suggestion != null) {
-          suggestions.add(suggestion);
-        }
+        _createNameSuggestion(builder, varName);
         if (doIncludePrivateVersion) {
-          var privateSuggestion = _createNameSuggestion(request, '_' + varName);
-          if (privateSuggestion != null) {
-            suggestions.add(privateSuggestion);
-          }
+          _createNameSuggestion(builder, '_' + varName);
         }
       }
-      return suggestions;
     }
     return const <CompletionSuggestion>[];
   }
 
-  /// Given some [name], return a [CompletionSuggestion] with the name.
-  ///
-  /// If the passed name is `null` or empty, `null` is returned.
-  CompletionSuggestion _createNameSuggestion(
-      DartCompletionRequest request, String name) {
-    if (name == null || name.isEmpty) {
-      return null;
+  /// Given some [name], add a suggestion with the name (unless the name is
+  /// `null` or empty).
+  void _createNameSuggestion(SuggestionBuilder builder, String name) {
+    if (name != null && name.isNotEmpty) {
+      builder.suggestName(name);
     }
-    // TODO(brianwilkerson) Explore whether there are any features of the name
-    //  that can be used to provide better relevance scores.
-    return CompletionSuggestion(
-        CompletionSuggestionKind.IDENTIFIER,
-        request.useNewRelevance ? 500 : DART_RELEVANCE_DEFAULT,
-        name,
-        name.length,
-        0,
-        false,
-        false);
   }
 
   /// Convert some [Identifier] to its [String] name.
diff --git a/pkg/analysis_server/lib/src/services/correction/dart/abstract_producer.dart b/pkg/analysis_server/lib/src/services/correction/dart/abstract_producer.dart
index e624242..00fa1c3 100644
--- a/pkg/analysis_server/lib/src/services/correction/dart/abstract_producer.dart
+++ b/pkg/analysis_server/lib/src/services/correction/dart/abstract_producer.dart
@@ -2,11 +2,14 @@
 // 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.
 
+import 'dart:math' as math;
+
 import 'package:analysis_server/src/services/correction/util.dart';
 import 'package:analysis_server/src/utilities/flutter.dart';
 import 'package:analyzer/dart/analysis/results.dart';
 import 'package:analyzer/dart/analysis/session.dart';
 import 'package:analyzer/dart/ast/ast.dart';
+import 'package:analyzer/diagnostic/diagnostic.dart';
 import 'package:analyzer/source/source_range.dart';
 import 'package:analyzer/src/dart/analysis/session_helper.dart';
 import 'package:analyzer/src/dart/ast/utilities.dart';
@@ -20,6 +23,12 @@
 abstract class CorrectionProducer {
   CorrectionProducerContext _context;
 
+  /// The most deeply nested node that completely covers the highlight region of
+  /// the diagnostic, or `null` if there is no diagnostic, such a node does not
+  /// exist, or if it hasn't been computed yet. Use [coveredNode] to access this
+  /// field.
+  AstNode _coveredNode;
+
   /// Return the arguments that should be used when composing the message for an
   /// assist, or `null` if the assist message has no parameters or if this
   /// producer doesn't support assists.
@@ -29,6 +38,29 @@
   /// if this producer doesn't support assists.
   AssistKind get assistKind => null;
 
+  /// The most deeply nested node that completely covers the highlight region of
+  /// the diagnostic, or `null` if there is no diagnostic or if such a node does
+  /// not exist.
+  AstNode get coveredNode {
+    // TODO(brianwilkerson) Consider renaming this to `coveringNode`.
+    if (_coveredNode == null) {
+      var diagnostic = this.diagnostic;
+      if (diagnostic == null) {
+        return null;
+      }
+      var errorOffset = diagnostic.problemMessage.offset;
+      var errorLength = diagnostic.problemMessage.length;
+      _coveredNode =
+          NodeLocator2(errorOffset, math.max(errorOffset + errorLength - 1, 0))
+              .searchWithin(unit);
+    }
+    return _coveredNode;
+  }
+
+  /// Return the diagnostic being fixed, or `null` if this producer is being
+  /// used to produce an assist.
+  Diagnostic get diagnostic => _context.diagnostic;
+
   /// Returns the EOL to use for this [CompilationUnit].
   String get eol => utils.endOfLine;
 
@@ -137,13 +169,16 @@
   final ResolvedUnitResult resolvedResult;
   final ChangeWorkspace workspace;
 
+  final Diagnostic diagnostic;
+
   AstNode _node;
 
   CorrectionProducerContext({
-    this.selectionOffset = -1,
-    this.selectionLength = 0,
     @required this.resolvedResult,
     @required this.workspace,
+    this.diagnostic,
+    this.selectionOffset = -1,
+    this.selectionLength = 0,
   })  : file = resolvedResult.path,
         flutter = Flutter.of(resolvedResult),
         session = resolvedResult.session,
diff --git a/pkg/analysis_server/lib/src/services/correction/dart/add_async.dart b/pkg/analysis_server/lib/src/services/correction/dart/add_async.dart
new file mode 100644
index 0000000..69dd645
--- /dev/null
+++ b/pkg/analysis_server/lib/src/services/correction/dart/add_async.dart
@@ -0,0 +1,28 @@
+// Copyright (c) 2020, the Dart project authors. Please see the AUTHORS file
+// 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.
+
+import 'package:analysis_server/src/services/correction/dart/abstract_producer.dart';
+import 'package:analysis_server/src/services/correction/fix.dart';
+import 'package:analyzer/dart/ast/ast.dart';
+import 'package:analyzer_plugin/utilities/change_builder/change_builder_dart.dart';
+import 'package:analyzer_plugin/utilities/fixes/fixes.dart';
+
+class AddSync extends CorrectionProducer {
+  @override
+  FixKind get fixKind => DartFixKind.ADD_ASYNC;
+
+  @override
+  Future<void> compute(DartChangeBuilder builder) async {
+    var body = node.thisOrAncestorOfType<FunctionBody>();
+    if (body != null && body.keyword == null) {
+      var typeProvider = this.typeProvider;
+      await builder.addFileEdit(file, (DartFileEditBuilder builder) {
+        builder.convertFunctionFromSyncToAsync(body, typeProvider);
+      });
+    }
+  }
+
+  /// Return an instance of this class. Used as a tear-off in `FixProcessor`.
+  static AddSync newInstance() => AddSync();
+}
diff --git a/pkg/analysis_server/lib/src/services/correction/dart/add_await.dart b/pkg/analysis_server/lib/src/services/correction/dart/add_await.dart
new file mode 100644
index 0000000..aa4fa5c
--- /dev/null
+++ b/pkg/analysis_server/lib/src/services/correction/dart/add_await.dart
@@ -0,0 +1,23 @@
+// Copyright (c) 2020, the Dart project authors. Please see the AUTHORS file
+// 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.
+
+import 'package:analysis_server/src/services/correction/dart/abstract_producer.dart';
+import 'package:analysis_server/src/services/correction/fix.dart';
+import 'package:analyzer_plugin/utilities/change_builder/change_builder_dart.dart';
+import 'package:analyzer_plugin/utilities/fixes/fixes.dart';
+
+class AddAwait extends CorrectionProducer {
+  @override
+  FixKind get fixKind => DartFixKind.ADD_AWAIT;
+
+  @override
+  Future<void> compute(DartChangeBuilder builder) async {
+    await builder.addFileEdit(file, (DartFileEditBuilder builder) {
+      builder.addSimpleInsertion(node.offset, 'await ');
+    });
+  }
+
+  /// Return an instance of this class. Used as a tear-off in `FixProcessor`.
+  static AddAwait newInstance() => AddAwait();
+}
diff --git a/pkg/analysis_server/lib/src/services/correction/dart/add_const.dart b/pkg/analysis_server/lib/src/services/correction/dart/add_const.dart
new file mode 100644
index 0000000..05fb681
--- /dev/null
+++ b/pkg/analysis_server/lib/src/services/correction/dart/add_const.dart
@@ -0,0 +1,47 @@
+// Copyright (c) 2020, the Dart project authors. Please see the AUTHORS file
+// 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.
+
+import 'package:analysis_server/src/services/correction/dart/abstract_producer.dart';
+import 'package:analysis_server/src/services/correction/fix.dart';
+import 'package:analyzer/dart/ast/ast.dart';
+import 'package:analyzer_plugin/utilities/change_builder/change_builder_dart.dart';
+import 'package:analyzer_plugin/utilities/fixes/fixes.dart';
+
+class AddConst extends CorrectionProducer {
+  @override
+  FixKind get fixKind => DartFixKind.ADD_CONST;
+
+  @override
+  Future<void> compute(DartChangeBuilder builder) async {
+    var node = this.node;
+    if (node is SimpleIdentifier) {
+      node = node.parent;
+    }
+    if (node is ConstructorDeclaration) {
+      await builder.addFileEdit(file, (DartFileEditBuilder builder) {
+        final offset = (node as ConstructorDeclaration)
+            .firstTokenAfterCommentAndMetadata
+            .offset;
+        builder.addSimpleInsertion(offset, 'const ');
+      });
+      return;
+    }
+    if (node is TypeName) {
+      node = node.parent;
+    }
+    if (node is ConstructorName) {
+      node = node.parent;
+    }
+    if (node is InstanceCreationExpression) {
+      if ((node as InstanceCreationExpression).keyword == null) {
+        await builder.addFileEdit(file, (DartFileEditBuilder builder) {
+          builder.addSimpleInsertion(node.offset, 'const ');
+        });
+      }
+    }
+  }
+
+  /// Return an instance of this class. Used as a tear-off in `FixProcessor`.
+  static AddConst newInstance() => AddConst();
+}
diff --git a/pkg/analysis_server/lib/src/services/correction/dart/add_explicit_cast.dart b/pkg/analysis_server/lib/src/services/correction/dart/add_explicit_cast.dart
new file mode 100644
index 0000000..f4127ef
--- /dev/null
+++ b/pkg/analysis_server/lib/src/services/correction/dart/add_explicit_cast.dart
@@ -0,0 +1,115 @@
+// Copyright (c) 2020, the Dart project authors. Please see the AUTHORS file
+// 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.
+
+import 'package:analysis_server/src/services/correction/dart/abstract_producer.dart';
+import 'package:analysis_server/src/services/correction/fix.dart';
+import 'package:analysis_server/src/utilities/extensions/ast.dart';
+import 'package:analysis_server/src/utilities/extensions/type.dart';
+import 'package:analyzer/dart/ast/ast.dart';
+import 'package:analyzer/dart/ast/precedence.dart';
+import 'package:analyzer/dart/element/type.dart';
+import 'package:analyzer_plugin/utilities/change_builder/change_builder_dart.dart';
+import 'package:analyzer_plugin/utilities/fixes/fixes.dart';
+
+class AddExplicitCast extends CorrectionProducer {
+  @override
+  FixKind get fixKind => DartFixKind.ADD_EXPLICIT_CAST;
+
+  @override
+  Future<void> compute(DartChangeBuilder builder) async {
+    Expression target = coveredNode;
+    if (target is! Expression) {
+      return;
+    }
+    var fromType = target.staticType;
+    DartType toType;
+    var parent = target.parent;
+    if (parent is AssignmentExpression && target == parent.rightHandSide) {
+      toType = parent.leftHandSide.staticType;
+    } else if (parent is VariableDeclaration && target == parent.initializer) {
+      toType = parent.declaredElement.type;
+    } else {
+      // TODO(brianwilkerson) Handle function arguments.
+      return;
+    }
+    // TODO(brianwilkerson) Handle `toSet` in a manner similar to the below.
+    if (target.isToListMethodInvocation) {
+      var targetTarget = (target as MethodInvocation).target;
+      if (targetTarget != null) {
+        var targetTargetType = targetTarget.staticType;
+        if (targetTargetType.isDartCoreIterable ||
+            targetTargetType.isDartCoreList ||
+            targetTargetType.isDartCoreMap ||
+            targetTargetType.isDartCoreSet) {
+          target = targetTarget;
+          fromType = targetTargetType;
+        }
+      }
+    }
+    if (target is AsExpression) {
+      // TODO(brianwilkerson) Consider updating the right operand.
+      return;
+    }
+    var needsParentheses = target.precedence < Precedence.postfix;
+    if (((fromType.isDartCoreIterable || fromType.isDartCoreList) &&
+            toType.isDartCoreList) ||
+        (fromType.isDartCoreSet && toType.isDartCoreSet)) {
+      if (target.isCastMethodInvocation) {
+        // TODO(brianwilkerson) Consider updating the type arguments to the
+        // `cast` invocation.
+        return;
+      }
+      await builder.addFileEdit(file, (DartFileEditBuilder builder) {
+        if (needsParentheses) {
+          builder.addSimpleInsertion(target.offset, '(');
+        }
+        builder.addInsertion(target.end, (DartEditBuilder builder) {
+          if (needsParentheses) {
+            builder.write(')');
+          }
+          builder.write('.cast<');
+          builder.writeType((toType as InterfaceType).typeArguments[0]);
+          builder.write('>()');
+        });
+      });
+    } else if (fromType.isDartCoreMap && toType.isDartCoreMap) {
+      if (target.isCastMethodInvocation) {
+        // TODO(brianwilkerson) Consider updating the type arguments to the
+        // `cast` invocation.
+        return;
+      }
+      await builder.addFileEdit(file, (DartFileEditBuilder builder) {
+        if (needsParentheses) {
+          builder.addSimpleInsertion(target.offset, '(');
+        }
+        builder.addInsertion(target.end, (DartEditBuilder builder) {
+          if (needsParentheses) {
+            builder.write(')');
+          }
+          builder.write('.cast<');
+          builder.writeType((toType as InterfaceType).typeArguments[0]);
+          builder.write(', ');
+          builder.writeType((toType as InterfaceType).typeArguments[1]);
+          builder.write('>()');
+        });
+      });
+    } else {
+      await builder.addFileEdit(file, (DartFileEditBuilder builder) {
+        if (needsParentheses) {
+          builder.addSimpleInsertion(target.offset, '(');
+        }
+        builder.addInsertion(target.end, (DartEditBuilder builder) {
+          if (needsParentheses) {
+            builder.write(')');
+          }
+          builder.write(' as ');
+          builder.writeType(toType);
+        });
+      });
+    }
+  }
+
+  /// Return an instance of this class. Used as a tear-off in `FixProcessor`.
+  static AddExplicitCast newInstance() => AddExplicitCast();
+}
diff --git a/pkg/analysis_server/lib/src/services/correction/dart/add_missing_enum_case_clauses.dart b/pkg/analysis_server/lib/src/services/correction/dart/add_missing_enum_case_clauses.dart
new file mode 100644
index 0000000..678e8a8
--- /dev/null
+++ b/pkg/analysis_server/lib/src/services/correction/dart/add_missing_enum_case_clauses.dart
@@ -0,0 +1,80 @@
+// Copyright (c) 2020, the Dart project authors. Please see the AUTHORS file
+// 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.
+
+import 'package:analysis_server/src/services/correction/dart/abstract_producer.dart';
+import 'package:analysis_server/src/services/correction/fix.dart';
+import 'package:analyzer/dart/ast/ast.dart';
+import 'package:analyzer/dart/element/element.dart';
+import 'package:analyzer/dart/element/type.dart';
+import 'package:analyzer_plugin/utilities/change_builder/change_builder_dart.dart';
+import 'package:analyzer_plugin/utilities/fixes/fixes.dart';
+
+class AddMissingEnumCaseClauses extends CorrectionProducer {
+  @override
+  FixKind get fixKind => DartFixKind.ADD_MISSING_ENUM_CASE_CLAUSES;
+
+  @override
+  Future<void> compute(DartChangeBuilder builder) async {
+    var statement = node as SwitchStatement;
+    String enumName;
+    var enumConstantNames = <String>[];
+    var expressionType = statement.expression.staticType;
+    if (expressionType is InterfaceType) {
+      var enumElement = expressionType.element;
+      if (enumElement.isEnum) {
+        enumName = enumElement.name;
+        for (var field in enumElement.fields) {
+          if (!field.isSynthetic) {
+            enumConstantNames.add(field.name);
+          }
+        }
+      }
+    }
+    if (enumName == null) {
+      return;
+    }
+    for (var member in statement.members) {
+      if (member is SwitchCase) {
+        var expression = member.expression;
+        if (expression is Identifier) {
+          var element = expression.staticElement;
+          if (element is PropertyAccessorElement) {
+            enumConstantNames.remove(element.name);
+          }
+        }
+      }
+    }
+    if (enumConstantNames.isEmpty) {
+      return;
+    }
+
+    var statementIndent = utils.getLinePrefix(statement.offset);
+    var singleIndent = utils.getIndent(1);
+
+    await builder.addFileEdit(file, (DartFileEditBuilder builder) {
+      builder.addInsertion(utils.getLineThis(statement.end), (builder) {
+        for (var constantName in enumConstantNames) {
+          builder.write(statementIndent);
+          builder.write(singleIndent);
+          builder.write('case ');
+          builder.write(enumName);
+          builder.write('.');
+          builder.write(constantName);
+          builder.writeln(':');
+          builder.write(statementIndent);
+          builder.write(singleIndent);
+          builder.write(singleIndent);
+          builder.writeln('// TODO: Handle this case.');
+          builder.write(statementIndent);
+          builder.write(singleIndent);
+          builder.write(singleIndent);
+          builder.writeln('break;');
+        }
+      });
+    });
+  }
+
+  /// Return an instance of this class. Used as a tear-off in `FixProcessor`.
+  static AddMissingEnumCaseClauses newInstance() => AddMissingEnumCaseClauses();
+}
diff --git a/pkg/analysis_server/lib/src/services/correction/dart/add_missing_required_argument.dart b/pkg/analysis_server/lib/src/services/correction/dart/add_missing_required_argument.dart
new file mode 100644
index 0000000..aa108ea
--- /dev/null
+++ b/pkg/analysis_server/lib/src/services/correction/dart/add_missing_required_argument.dart
@@ -0,0 +1,122 @@
+// Copyright (c) 2020, the Dart project authors. Please see the AUTHORS file
+// 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.
+
+import 'package:_fe_analyzer_shared/src/scanner/token.dart';
+import 'package:analysis_server/src/services/completion/dart/utilities.dart';
+import 'package:analysis_server/src/services/correction/dart/abstract_producer.dart';
+import 'package:analysis_server/src/services/correction/fix.dart';
+import 'package:analyzer/dart/ast/ast.dart';
+import 'package:analyzer/dart/element/element.dart';
+import 'package:analyzer_plugin/utilities/change_builder/change_builder_dart.dart';
+import 'package:analyzer_plugin/utilities/fixes/fixes.dart';
+
+class AddMissingRequiredArgument extends CorrectionProducer {
+  /// The name of the parameter that was missing.
+  String _missingParameterName;
+
+  @override
+  List<Object> get fixArguments => [_missingParameterName];
+
+  @override
+  FixKind get fixKind => DartFixKind.ADD_MISSING_REQUIRED_ARGUMENT;
+
+  @override
+  Future<void> compute(DartChangeBuilder builder) async {
+    InstanceCreationExpression creation;
+    Element targetElement;
+    ArgumentList argumentList;
+
+    if (node is SimpleIdentifier) {
+      var invocation = node.parent;
+      if (invocation is MethodInvocation) {
+        targetElement = invocation.methodName.staticElement;
+        argumentList = invocation.argumentList;
+      } else {
+        creation =
+            invocation.thisOrAncestorOfType<InstanceCreationExpression>();
+        if (creation != null) {
+          targetElement = creation.staticElement;
+          argumentList = creation.argumentList;
+        }
+      }
+    }
+
+    if (targetElement is ExecutableElement) {
+      // Format: "Missing required argument 'foo"
+      var messageParts = diagnostic.problemMessage.message.split("'");
+      if (messageParts.length < 2) {
+        return;
+      }
+      _missingParameterName = messageParts[1];
+
+      var missingParameter = targetElement.parameters.firstWhere(
+          (p) => p.name == _missingParameterName,
+          orElse: () => null);
+      if (missingParameter == null) {
+        return;
+      }
+
+      int offset;
+      var hasTrailingComma = false;
+      var insertBetweenParams = false;
+      List<Expression> arguments = argumentList.arguments;
+      if (arguments.isEmpty) {
+        offset = argumentList.leftParenthesis.end;
+      } else {
+        var lastArgument = arguments.last;
+        offset = lastArgument.end;
+        hasTrailingComma = lastArgument.endToken.next.type == TokenType.COMMA;
+
+        if (lastArgument is NamedExpression &&
+            flutter.isWidgetExpression(creation)) {
+          if (flutter.isChildArgument(lastArgument) ||
+              flutter.isChildrenArgument(lastArgument)) {
+            offset = lastArgument.offset;
+            hasTrailingComma = true;
+            insertBetweenParams = true;
+          }
+        }
+      }
+
+      await builder.addFileEdit(file, (DartFileEditBuilder builder) {
+        builder.addInsertion(offset, (DartEditBuilder builder) {
+          if (arguments.isNotEmpty && !insertBetweenParams) {
+            builder.write(', ');
+          }
+
+          builder.write('$_missingParameterName: ');
+
+          var defaultValue = getDefaultStringParameterValue(missingParameter);
+          // Use defaultValue.cursorPosition if it's not null.
+          if (defaultValue?.cursorPosition != null) {
+            builder.write(
+                defaultValue.text.substring(0, defaultValue.cursorPosition));
+            builder.selectHere();
+            builder.write(
+                defaultValue.text.substring(defaultValue.cursorPosition));
+          } else {
+            builder.addSimpleLinkedEdit('VALUE', defaultValue?.text);
+          }
+
+          if (flutter.isWidgetExpression(creation)) {
+            // Insert a trailing comma after Flutter instance creation params.
+            if (!hasTrailingComma) {
+              builder.write(',');
+            } else if (insertBetweenParams) {
+              builder.writeln(',');
+
+              // Insert indent before the child: or children: param.
+              var indent = utils.getLinePrefix(offset);
+              builder.write(indent);
+            }
+          }
+        });
+      });
+    }
+  }
+
+  /// Return an instance of this class. Used as a tear-off in `FixProcessor`.
+  static AddMissingRequiredArgument newInstance() =>
+      AddMissingRequiredArgument();
+}
diff --git a/pkg/analysis_server/lib/src/services/correction/dart/add_override.dart b/pkg/analysis_server/lib/src/services/correction/dart/add_override.dart
new file mode 100644
index 0000000..2faac70
--- /dev/null
+++ b/pkg/analysis_server/lib/src/services/correction/dart/add_override.dart
@@ -0,0 +1,44 @@
+// Copyright (c) 2020, the Dart project authors. Please see the AUTHORS file
+// 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.
+
+import 'package:_fe_analyzer_shared/src/scanner/token.dart';
+import 'package:analysis_server/src/services/correction/dart/abstract_producer.dart';
+import 'package:analysis_server/src/services/correction/fix.dart';
+import 'package:analyzer/dart/ast/ast.dart';
+import 'package:analyzer_plugin/protocol/protocol_common.dart';
+import 'package:analyzer_plugin/utilities/change_builder/change_builder_dart.dart';
+import 'package:analyzer_plugin/utilities/fixes/fixes.dart';
+import 'package:analyzer_plugin/utilities/range_factory.dart';
+
+class AddOverride extends CorrectionProducer {
+  @override
+  FixKind get fixKind => DartFixKind.ADD_OVERRIDE;
+
+  @override
+  Future<void> compute(DartChangeBuilder builder) async {
+    var member = node.thisOrAncestorOfType<ClassMember>();
+    if (member == null) {
+      return;
+    }
+
+    //TODO(pq): migrate annotation edit building to change_builder
+
+    // Handle doc comments.
+    var token = member.beginToken;
+    if (token is CommentToken) {
+      token = (token as CommentToken).parent;
+    }
+
+    var exitPosition = Position(file, token.offset - 1);
+    var indent = utils.getIndent(1);
+    await builder.addFileEdit(file, (DartFileEditBuilder builder) {
+      builder.addSimpleReplacement(
+          range.startLength(token, 0), '@override$eol$indent');
+    });
+    builder.setSelection(exitPosition);
+  }
+
+  /// Return an instance of this class. Used as a tear-off in `FixProcessor`.
+  static AddOverride newInstance() => AddOverride();
+}
diff --git a/pkg/analysis_server/lib/src/services/correction/dart/add_required.dart b/pkg/analysis_server/lib/src/services/correction/dart/add_required.dart
new file mode 100644
index 0000000..3ccea52
--- /dev/null
+++ b/pkg/analysis_server/lib/src/services/correction/dart/add_required.dart
@@ -0,0 +1,23 @@
+// Copyright (c) 2020, the Dart project authors. Please see the AUTHORS file
+// 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.
+
+import 'package:analysis_server/src/services/correction/dart/abstract_producer.dart';
+import 'package:analysis_server/src/services/correction/fix.dart';
+import 'package:analyzer_plugin/utilities/change_builder/change_builder_dart.dart';
+import 'package:analyzer_plugin/utilities/fixes/fixes.dart';
+
+class AddRequired extends CorrectionProducer {
+  @override
+  FixKind get fixKind => DartFixKind.ADD_REQUIRED;
+
+  @override
+  Future<void> compute(DartChangeBuilder builder) async {
+    await builder.addFileEdit(file, (DartFileEditBuilder builder) {
+      builder.addSimpleInsertion(node.parent.offset, '@required ');
+    });
+  }
+
+  /// Return an instance of this class. Used as a tear-off in `FixProcessor`.
+  static AddRequired newInstance() => AddRequired();
+}
diff --git a/pkg/analysis_server/lib/src/services/correction/dart/add_static.dart b/pkg/analysis_server/lib/src/services/correction/dart/add_static.dart
new file mode 100644
index 0000000..27b7abf
--- /dev/null
+++ b/pkg/analysis_server/lib/src/services/correction/dart/add_static.dart
@@ -0,0 +1,26 @@
+// Copyright (c) 2020, the Dart project authors. Please see the AUTHORS file
+// 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.
+
+import 'package:analysis_server/src/services/correction/dart/abstract_producer.dart';
+import 'package:analysis_server/src/services/correction/fix.dart';
+import 'package:analyzer/dart/ast/ast.dart';
+import 'package:analyzer_plugin/utilities/change_builder/change_builder_dart.dart';
+import 'package:analyzer_plugin/utilities/fixes/fixes.dart';
+
+class AddStatic extends CorrectionProducer {
+  @override
+  FixKind get fixKind => DartFixKind.ADD_STATIC; // TODO
+
+  @override
+  Future<void> compute(DartChangeBuilder builder) async {
+    var declaration = node.thisOrAncestorOfType<FieldDeclaration>();
+    await builder.addFileEdit(file, (DartFileEditBuilder builder) {
+      var offset = declaration.firstTokenAfterCommentAndMetadata.offset;
+      builder.addSimpleInsertion(offset, 'static ');
+    });
+  }
+
+  /// Return an instance of this class. Used as a tear-off in `FixProcessor`.
+  static AddStatic newInstance() => AddStatic();
+}
diff --git a/pkg/analysis_server/lib/src/services/correction/dart/replace_new_with_const.dart b/pkg/analysis_server/lib/src/services/correction/dart/replace_new_with_const.dart
new file mode 100644
index 0000000..c7ebaf9
--- /dev/null
+++ b/pkg/analysis_server/lib/src/services/correction/dart/replace_new_with_const.dart
@@ -0,0 +1,34 @@
+// Copyright (c) 2020, the Dart project authors. Please see the AUTHORS file
+// 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.
+
+import 'package:analysis_server/src/services/correction/dart/abstract_producer.dart';
+import 'package:analysis_server/src/services/correction/fix.dart';
+import 'package:analyzer/dart/ast/ast.dart';
+import 'package:analyzer_plugin/utilities/change_builder/change_builder_dart.dart';
+import 'package:analyzer_plugin/utilities/fixes/fixes.dart';
+import 'package:analyzer_plugin/utilities/range_factory.dart';
+
+class ReplaceNewWithConst extends CorrectionProducer {
+  @override
+  FixKind get fixKind => DartFixKind.REPLACE_NEW_WITH_CONST;
+
+  @override
+  Future<void> compute(DartChangeBuilder builder) async {
+    var node = this.node;
+    if (node is ConstructorName) {
+      node = node.parent;
+    }
+    if (node is InstanceCreationExpression) {
+      final keyword = node.keyword;
+      if (keyword != null) {
+        await builder.addFileEdit(file, (DartFileEditBuilder builder) {
+          builder.addSimpleReplacement(range.token(keyword), 'const');
+        });
+      }
+    }
+  }
+
+  /// Return an instance of this class. Used as a tear-off in `FixProcessor`.
+  static ReplaceNewWithConst newInstance() => ReplaceNewWithConst();
+}
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 f0fd8b2..12d3153 100644
--- a/pkg/analysis_server/lib/src/services/correction/fix_internal.dart
+++ b/pkg/analysis_server/lib/src/services/correction/fix_internal.dart
@@ -9,13 +9,21 @@
 
 import 'package:analysis_server/plugin/edit/fix/fix_core.dart';
 import 'package:analysis_server/plugin/edit/fix/fix_dart.dart';
-import 'package:analysis_server/src/services/completion/dart/utilities.dart';
 import 'package:analysis_server/src/services/correction/base_processor.dart';
 import 'package:analysis_server/src/services/correction/dart/abstract_producer.dart';
+import 'package:analysis_server/src/services/correction/dart/add_async.dart';
+import 'package:analysis_server/src/services/correction/dart/add_await.dart';
+import 'package:analysis_server/src/services/correction/dart/add_const.dart';
 import 'package:analysis_server/src/services/correction/dart/add_diagnostic_property_reference.dart';
+import 'package:analysis_server/src/services/correction/dart/add_explicit_cast.dart';
 import 'package:analysis_server/src/services/correction/dart/add_field_formal_parameters.dart';
+import 'package:analysis_server/src/services/correction/dart/add_missing_enum_case_clauses.dart';
+import 'package:analysis_server/src/services/correction/dart/add_missing_required_argument.dart';
+import 'package:analysis_server/src/services/correction/dart/add_override.dart';
+import 'package:analysis_server/src/services/correction/dart/add_required.dart';
 import 'package:analysis_server/src/services/correction/dart/add_required_keyword.dart';
 import 'package:analysis_server/src/services/correction/dart/add_return_type.dart';
+import 'package:analysis_server/src/services/correction/dart/add_static.dart';
 import 'package:analysis_server/src/services/correction/dart/add_type_annotation.dart';
 import 'package:analysis_server/src/services/correction/dart/convert_add_all_to_spread.dart';
 import 'package:analysis_server/src/services/correction/dart/convert_conditional_expression_to_if_element.dart';
@@ -41,6 +49,7 @@
 import 'package:analysis_server/src/services/correction/dart/remove_question_mark.dart';
 import 'package:analysis_server/src/services/correction/dart/remove_unused.dart';
 import 'package:analysis_server/src/services/correction/dart/remove_unused_local_variable.dart';
+import 'package:analysis_server/src/services/correction/dart/replace_new_with_const.dart';
 import 'package:analysis_server/src/services/correction/dart/replace_with_eight_digit_hex.dart';
 import 'package:analysis_server/src/services/correction/dart/replace_with_interpolation.dart';
 import 'package:analysis_server/src/services/correction/dart/replace_with_var.dart';
@@ -69,7 +78,6 @@
 import 'package:analyzer/file_system/file_system.dart';
 import 'package:analyzer/src/dart/analysis/session_helper.dart';
 import 'package:analyzer/src/dart/ast/ast.dart';
-import 'package:analyzer/src/dart/ast/token.dart';
 import 'package:analyzer/src/dart/ast/utilities.dart';
 import 'package:analyzer/src/dart/element/type.dart';
 import 'package:analyzer/src/error/codes.dart';
@@ -204,41 +212,76 @@
     LintNames.always_declare_return_types: [
       AddReturnType.newInstance,
     ],
+    LintNames.always_require_non_null_named_parameters: [
+      AddRequired.newInstance,
+    ],
     LintNames.always_specify_types: [
       AddTypeAnnotation.newInstance,
     ],
+    LintNames.annotate_overrides: [
+      AddOverride.newInstance,
+    ],
+//    LintNames.avoid_annotating_with_dynamic : [],
+//    LintNames.avoid_empty_else : [],
+//    LintNames.avoid_init_to_null : [],
     LintNames.avoid_private_typedef_functions: [
       InlineTypedef.newInstance,
     ],
+//    LintNames.avoid_redundant_argument_values : [],
     LintNames.avoid_relative_lib_imports: [
       ConvertToPackageImport.newInstance,
     ],
+//    LintNames.avoid_return_types_on_setters : [],
     LintNames.avoid_returning_null_for_future: [
+      AddSync.newInstance,
       WrapInFuture.newInstance,
     ],
     LintNames.avoid_types_as_parameter_names: [
       ConvertToOnType.newInstance,
     ],
+//    LintNames.avoid_types_on_closure_parameters : [],
+//    LintNames.await_only_futures : [],
     LintNames.curly_braces_in_flow_control_structures: [
       UseCurlyBraces.newInstance,
     ],
     LintNames.diagnostic_describe_all_properties: [
       AddDiagnosticPropertyReference.newInstance,
     ],
+//    LintNames.directives_ordering : [],
+//    LintNames.empty_catches : [],
+//    LintNames.empty_constructor_bodies : [],
+//    LintNames.empty_statements : [],
+//    LintNames.hash_and_equals : [],
+//    LintNames.no_duplicate_case_values : [],
+//    LintNames.non_constant_identifier_names : [],
+//    LintNames.null_closures : [],
     LintNames.omit_local_variable_types: [
       ReplaceWithVar.newInstance,
     ],
+//    LintNames.prefer_adjacent_string_concatenation : [],
     LintNames.prefer_collection_literals: [
       ConvertToListLiteral.newInstance,
       ConvertToMapLiteral.newInstance,
       ConvertToSetLiteral.newInstance,
     ],
+//    LintNames.prefer_conditional_assignment : [],
+    LintNames.prefer_const_constructors: [
+      AddConst.newInstance,
+      ReplaceNewWithConst.newInstance,
+    ],
+    LintNames.prefer_const_constructors_in_immutables: [
+      AddConst.newInstance,
+    ],
+//    LintNames.prefer_const_declarations : [],
     LintNames.prefer_contains: [
       ConvertToContains.newInstance,
     ],
+//    LintNames.prefer_equal_for_default_values : [],
     LintNames.prefer_expression_function_bodies: [
       ConvertToExpressionFunctionBody.newInstance,
     ],
+//    LintNames.prefer_final_fields : [],
+//    LintNames.prefer_final_locals : [],
     LintNames.prefer_for_elements_to_map_fromIterable: [
       ConvertMapFromIterableToForLiteral.newInstance,
     ],
@@ -248,6 +291,9 @@
     LintNames.prefer_if_elements_to_conditional_expressions: [
       ConvertConditionalExpressionToIfElement.newInstance,
     ],
+//    LintNames.prefer_is_empty : [],
+//    LintNames.prefer_is_not_empty : [],
+//    LintNames.prefer_if_null_operators : [],
     LintNames.prefer_inlined_adds: [
       InlineInvocation.newInstance,
     ],
@@ -281,24 +327,55 @@
     LintNames.type_annotate_public_apis: [
       AddTypeAnnotation.newInstance,
     ],
+//    LintNames.type_init_formals : [],
+    LintNames.unawaited_futures: [
+      AddAwait.newInstance,
+    ],
+//    LintNames.unnecessary_brace_in_string_interps : [],
+//    LintNames.unnecessary_const : [],
+//    LintNames.unnecessary_lambdas : [],
+//    LintNames.unnecessary_new : [],
     LintNames.unnecessary_null_in_if_null_operators: [
       RemoveIfNullOperator.newInstance,
     ],
+//    LintNames.unnecessary_overrides : [],
+//    LintNames.unnecessary_this : [],
     LintNames.use_full_hex_values_for_flutter_colors: [
       ReplaceWithEightDigitHex.newInstance,
     ],
     LintNames.use_function_type_syntax_for_parameters: [
       ConvertToGenericFunctionSyntax.newInstance,
     ],
+//    LintNames.use_rethrow_when_possible : [],
   };
 
   /// A map from error codes to a list of generators used to create the
   /// correction producers used to build fixes for those diagnostics. The
   /// generators used for lint rules are in the [lintProducerMap].
   static const Map<ErrorCode, List<ProducerGenerator>> nonLintProducerMap = {
+    CompileTimeErrorCode.ASYNC_FOR_IN_WRONG_CONTEXT: [
+      AddSync.newInstance,
+    ],
+    CompileTimeErrorCode.AWAIT_IN_WRONG_CONTEXT: [
+      AddSync.newInstance,
+    ],
+//    CompileTimeErrorCode.CONST_INITIALIZED_WITH_NON_CONSTANT_VALUE : [],
+    CompileTimeErrorCode.CONST_INSTANCE_FIELD: [
+      AddStatic.newInstance,
+    ],
+//    CompileTimeErrorCode.CONST_WITH_NON_CONST : [],
+//    CompileTimeErrorCode.EXTENSION_OVERRIDE_ACCESS_TO_STATIC_MEMBER : [],
+//    CompileTimeErrorCode.EXTRA_POSITIONAL_ARGUMENTS : [],
+//    CompileTimeErrorCode.EXTRA_POSITIONAL_ARGUMENTS_COULD_BE_NAMED : [],
+//    CompileTimeErrorCode.INITIALIZING_FORMAL_FOR_NON_EXISTENT_FIELD : [],
+//    CompileTimeErrorCode.INTEGER_LITERAL_IMPRECISE_AS_DOUBLE : [],
+//    CompileTimeErrorCode.INVALID_ANNOTATION : [],
     CompileTimeErrorCode.MISSING_DEFAULT_VALUE_FOR_PARAMETER: [
       AddRequiredKeyword.newInstance,
     ],
+//    CompileTimeErrorCode.MIXIN_APPLICATION_NOT_IMPLEMENTED_INTERFACE : [],
+//    CompileTimeErrorCode.NO_DEFAULT_SUPER_CONSTRUCTOR_EXPLICIT : [],
+//    CompileTimeErrorCode.NO_DEFAULT_SUPER_CONSTRUCTOR_IMPLICIT : [],
     CompileTimeErrorCode.NULLABLE_TYPE_IN_EXTENDS_CLAUSE: [
       RemoveQuestionMark.newInstance,
     ],
@@ -311,27 +388,106 @@
     CompileTimeErrorCode.NULLABLE_TYPE_IN_WITH_CLAUSE: [
       RemoveQuestionMark.newInstance,
     ],
+//    CompileTimeErrorCode.UNDEFINED_ANNOTATION : [],
+//    CompileTimeErrorCode.UNDEFINED_CLASS : [],
+//    CompileTimeErrorCode.UNDEFINED_CONSTRUCTOR_IN_INITIALIZER_DEFAULT : [],
+//    CompileTimeErrorCode.UNDEFINED_EXTENSION_GETTER : [],
+//    CompileTimeErrorCode.UNDEFINED_EXTENSION_METHOD : [],
+//    CompileTimeErrorCode.UNDEFINED_EXTENSION_SETTER : [],
+//    CompileTimeErrorCode.UNDEFINED_NAMED_PARAMETER : [],
+//    CompileTimeErrorCode.UNQUALIFIED_REFERENCE_TO_STATIC_MEMBER_OF_EXTENDED_TYPE : [],
+//    CompileTimeErrorCode.URI_DOES_NOT_EXIST : [],
+
+//    HintCode.CAN_BE_NULL_AFTER_NULL_AWARE : [],
+//    HintCode.DEAD_CODE : [],
+//    HintCode.DEAD_CODE_CATCH_FOLLOWING_CATCH : [],
+//    HintCode.DEAD_CODE_ON_CATCH_SUBTYPE : [],
+//    HintCode.DIVISION_OPTIMIZATION : [],
+//    HintCode.DUPLICATE_HIDDEN_NAME : [],
+//    HintCode.DUPLICATE_IMPORT : [],
+//    HintCode.DUPLICATE_SHOWN_NAME : [],
+//    HintCode.INVALID_FACTORY_ANNOTATION : [],
+//    HintCode.INVALID_IMMUTABLE_ANNOTATION : [],
+//    HintCode.INVALID_LITERAL_ANNOTATION : [],
+//    HintCode.INVALID_REQUIRED_NAMED_PARAM : [],
+//    HintCode.INVALID_REQUIRED_OPTIONAL_POSITIONAL_PARAM : [],
+//    HintCode.INVALID_REQUIRED_POSITIONAL_PARAM : [],
+//    HintCode.INVALID_SEALED_ANNOTATION : [],
+    HintCode.MISSING_REQUIRED_PARAM: [
+      AddMissingRequiredArgument.newInstance,
+    ],
+    HintCode.MISSING_REQUIRED_PARAM_WITH_DETAILS: [
+      AddMissingRequiredArgument.newInstance,
+    ],
     HintCode.NULLABLE_TYPE_IN_CATCH_CLAUSE: [
       RemoveQuestionMark.newInstance,
     ],
+//    HintCode.OVERRIDE_ON_NON_OVERRIDING_FIELD : [],
+//    HintCode.OVERRIDE_ON_NON_OVERRIDING_GETTER : [],
+//    HintCode.OVERRIDE_ON_NON_OVERRIDING_METHOD : [],
+//    HintCode.OVERRIDE_ON_NON_OVERRIDING_SETTER : [],
+//    HintCode.SDK_VERSION_AS_EXPRESSION_IN_CONST_CONTEXT : [],
+//    HintCode.SDK_VERSION_ASYNC_EXPORTED_FROM_CORE : [],
+//    HintCode.SDK_VERSION_BOOL_OPERATOR_IN_CONST_CONTEXT : [],
+//    HintCode.SDK_VERSION_EQ_EQ_OPERATOR_IN_CONST_CONTEXT : [],
+//    HintCode.SDK_VERSION_EXTENSION_METHODS : [],
+//    HintCode.SDK_VERSION_GT_GT_GT_OPERATOR : [],
+//    HintCode.SDK_VERSION_IS_EXPRESSION_IN_CONST_CONTEXT : [],
+//    HintCode.SDK_VERSION_SET_LITERAL : [],
+//    HintCode.SDK_VERSION_UI_AS_CODE : [],
+//    HintCode.TYPE_CHECK_IS_NOT_NULL : [],
+//    HintCode.TYPE_CHECK_IS_NULL : [],
+//    HintCode.UNDEFINED_HIDDEN_NAME : [],
+//    HintCode.UNDEFINED_SHOWN_NAME : [],
+//    HintCode.UNNECESSARY_CAST : [],
+//    HintCode.UNUSED_CATCH_CLAUSE : [],
+//    HintCode.UNUSED_CATCH_STACK : [],
     HintCode.UNUSED_ELEMENT: [
       RemoveUnusedElement.newInstance,
     ],
     HintCode.UNUSED_FIELD: [
       RemoveUnusedField.newInstance,
     ],
+//    HintCode.UNUSED_IMPORT : [],
+//    HintCode.UNUSED_LABEL : [],
     HintCode.UNUSED_LOCAL_VARIABLE: [
       RemoveUnusedLocalVariable.newInstance,
     ],
+//    HintCode.UNUSED_SHOWN_NAME : [],
+
+//    ParserErrorCode.EXPECTED_TOKEN : [],
+//    ParserErrorCode.GETTER_WITH_PARAMETERS : [],
     ParserErrorCode.MISSING_CONST_FINAL_VAR_OR_TYPE: [
       AddTypeAnnotation.newInstance,
     ],
+//    ParserErrorCode.VAR_AS_TYPE_NAME : [],
+
+//    StaticTypeWarningCode.ILLEGAL_ASYNC_RETURN_TYPE : [],
+//    StaticTypeWarningCode.INSTANCE_ACCESS_TO_STATIC_MEMBER : [],
+    StaticTypeWarningCode.INVALID_ASSIGNMENT: [
+      AddExplicitCast.newInstance,
+    ],
+//    StaticTypeWarningCode.INVOCATION_OF_NON_FUNCTION_EXPRESSION : [],
+//    StaticTypeWarningCode.NON_BOOL_CONDITION : [],
+//    StaticTypeWarningCode.NON_TYPE_AS_TYPE_ARGUMENT : [],
+//    StaticTypeWarningCode.UNDEFINED_FUNCTION : [],
+//    StaticTypeWarningCode.UNDEFINED_GETTER : [],
+//    StaticTypeWarningCode.UNDEFINED_METHOD : [],
+//    StaticTypeWarningCode.UNDEFINED_SETTER : [],
+//    StaticTypeWarningCode.WRONG_NUMBER_OF_TYPE_ARGUMENTS_CONSTRUCTOR : [],
+//    StaticTypeWarningCode.UNQUALIFIED_REFERENCE_TO_NON_LOCAL_STATIC_MEMBER : [],
+
+//    StaticWarningCode.ASSIGNMENT_TO_FINAL : [],
+//    StaticWarningCode.ASSIGNMENT_TO_FINAL_LOCAL : [],
     StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE: [
       WrapInText.newInstance,
     ],
+//    StaticWarningCode.CAST_TO_NON_TYPE : [],
+//    StaticWarningCode.CONCRETE_CLASS_WITH_ABSTRACT_MEMBER : [],
     StaticWarningCode.DEAD_NULL_AWARE_EXPRESSION: [
       RemoveDeadIfNull.newInstance,
     ],
+//    StaticWarningCode.FINAL_NOT_INITIALIZED : [],
     StaticWarningCode.FINAL_NOT_INITIALIZED_CONSTRUCTOR_1: [
       AddFieldFormalParameters.newInstance,
     ],
@@ -341,6 +497,23 @@
     StaticWarningCode.FINAL_NOT_INITIALIZED_CONSTRUCTOR_3_PLUS: [
       AddFieldFormalParameters.newInstance,
     ],
+    StaticWarningCode.MISSING_ENUM_CONSTANT_IN_SWITCH: [
+      AddMissingEnumCaseClauses.newInstance,
+    ],
+//    StaticWarningCode.NEW_WITH_UNDEFINED_CONSTRUCTOR : [],
+//    StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_FIVE_PLUS : [],
+//    StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_FOUR : [],
+//    StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_ONE : [],
+//    StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_THREE : [],
+//    StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_TWO : [],
+//    StaticWarningCode.NON_TYPE_IN_CATCH_CLAUSE : [],
+//    StaticWarningCode.NOT_A_TYPE : [],
+//    StaticWarningCode.TYPE_TEST_WITH_UNDEFINED_NAME : [],
+//    StaticWarningCode.UNDEFINED_CLASS_BOOLEAN : [],
+//    StaticWarningCode.UNDEFINED_IDENTIFIER : [],
+    StaticWarningCode.UNDEFINED_IDENTIFIER_AWAIT: [
+      AddSync.newInstance,
+    ],
   };
 
   final DartFixContext context;
@@ -400,11 +573,6 @@
         CompileTimeErrorCode.CONST_INITIALIZED_WITH_NON_CONSTANT_VALUE) {
       await _addFix_replaceWithConstInstanceCreation();
     }
-    if (errorCode == CompileTimeErrorCode.ASYNC_FOR_IN_WRONG_CONTEXT ||
-        errorCode == CompileTimeErrorCode.AWAIT_IN_WRONG_CONTEXT ||
-        errorCode == StaticWarningCode.UNDEFINED_IDENTIFIER_AWAIT) {
-      await _addFix_addAsync();
-    }
     if (errorCode == CompileTimeErrorCode.INTEGER_LITERAL_IMPRECISE_AS_DOUBLE) {
       await _addFix_changeToNearestPreciseValue();
     }
@@ -487,10 +655,6 @@
         errorCode == HintCode.INVALID_SEALED_ANNOTATION) {
       await _addFix_removeAnnotation();
     }
-    if (errorCode == HintCode.MISSING_REQUIRED_PARAM ||
-        errorCode == HintCode.MISSING_REQUIRED_PARAM_WITH_DETAILS) {
-      await _addFix_addMissingRequiredArgument();
-    }
     if (errorCode == HintCode.OVERRIDE_ON_NON_OVERRIDING_GETTER ||
         errorCode == HintCode.OVERRIDE_ON_NON_OVERRIDING_FIELD ||
         errorCode == HintCode.OVERRIDE_ON_NON_OVERRIDING_METHOD ||
@@ -648,7 +812,6 @@
       await _addFix_useStaticAccess_property();
     }
     if (errorCode == StaticTypeWarningCode.INVALID_ASSIGNMENT) {
-      await _addFix_addExplicitCast();
       await _addFix_changeTypeAnnotation();
     }
     if (errorCode ==
@@ -720,9 +883,6 @@
         CompileTimeErrorCode.INITIALIZING_FORMAL_FOR_NON_EXISTENT_FIELD) {
       await _addFix_createField_initializingFormal();
     }
-    if (errorCode == CompileTimeErrorCode.CONST_INSTANCE_FIELD) {
-      await _addFix_addStatic();
-    }
     if (errorCode ==
         StaticTypeWarningCode.WRONG_NUMBER_OF_TYPE_ARGUMENTS_CONSTRUCTOR) {
       await _addFix_moveTypeArgumentsToClass();
@@ -732,9 +892,6 @@
         CompileTimeErrorCode.MIXIN_APPLICATION_NOT_IMPLEMENTED_INTERFACE) {
       await _addFix_extendClassForMixin();
     }
-    if (errorCode == StaticWarningCode.MISSING_ENUM_CONSTANT_IN_SWITCH) {
-      await _addFix_addMissingEnumCaseClauses();
-    }
     if (errorCode ==
         CompileTimeErrorCode.EXTENSION_OVERRIDE_ACCESS_TO_STATIC_MEMBER) {
       await _addFix_replaceWithExtensionName();
@@ -758,12 +915,6 @@
     // lints
     if (errorCode is LintCode) {
       var name = errorCode.name;
-      if (name == LintNames.always_require_non_null_named_parameters) {
-        await _addFix_addRequiredAnnotation();
-      }
-      if (name == LintNames.annotate_overrides) {
-        await _addFix_addOverrideAnnotation();
-      }
       if (name == LintNames.avoid_annotating_with_dynamic) {
         await _addFix_removeTypeAnnotation();
       }
@@ -779,9 +930,6 @@
       if (name == LintNames.avoid_return_types_on_setters) {
         await _addFix_removeTypeAnnotation();
       }
-      if (name == LintNames.avoid_returning_null_for_future) {
-        await _addFix_addAsync();
-      }
       if (name == LintNames.avoid_types_on_closure_parameters) {
         await _addFix_replaceWithIdentifier();
       }
@@ -836,22 +984,12 @@
       if (name == LintNames.prefer_is_not_empty) {
         await _addFix_isNotEmpty();
       }
-      if (errorCode.name == LintNames.prefer_const_constructors) {
-        await _addFix_addConst();
-        await _addFix_replaceNewWithConst();
-      }
-      if (errorCode.name == LintNames.prefer_const_constructors_in_immutables) {
-        await _addFix_addConstToConstructor();
-      }
       if (errorCode.name == LintNames.prefer_if_null_operators) {
         await _addFix_convertToIfNullOperator();
       }
       if (name == LintNames.type_init_formals) {
         await _addFix_removeTypeAnnotation();
       }
-      if (name == LintNames.unawaited_futures) {
-        await _addFix_addAwait();
-      }
       if (name == LintNames.unnecessary_brace_in_string_interps) {
         await _addFix_removeInterpolationBraces();
       }
@@ -887,221 +1025,6 @@
     return fixes.isNotEmpty ? fixes.first : null;
   }
 
-  Future<void> _addFix_addAsync() async {
-    var body = node.thisOrAncestorOfType<FunctionBody>();
-    if (body != null && body.keyword == null) {
-      var typeProvider = this.typeProvider;
-      var changeBuilder = _newDartChangeBuilder();
-      await changeBuilder.addFileEdit(file, (DartFileEditBuilder builder) {
-        builder.convertFunctionFromSyncToAsync(body, typeProvider);
-      });
-      _addFixFromBuilder(changeBuilder, DartFixKind.ADD_ASYNC);
-    }
-  }
-
-  Future<void> _addFix_addAwait() async {
-    var changeBuilder = _newDartChangeBuilder();
-    await changeBuilder.addFileEdit(file, (DartFileEditBuilder builder) {
-      builder.addSimpleInsertion(node.offset, 'await ');
-    });
-    _addFixFromBuilder(changeBuilder, DartFixKind.ADD_AWAIT);
-  }
-
-  Future<void> _addFix_addConst() async {
-    var node = coveredNode;
-    if (node is ConstructorName) {
-      node = node.parent;
-    }
-    if (node is InstanceCreationExpression) {
-      if ((node as InstanceCreationExpression).keyword == null) {
-        final changeBuilder = _newDartChangeBuilder();
-        await changeBuilder.addFileEdit(file, (DartFileEditBuilder builder) {
-          builder.addSimpleInsertion(node.offset, 'const ');
-        });
-        _addFixFromBuilder(changeBuilder, DartFixKind.ADD_CONST);
-      }
-    }
-  }
-
-  Future<void> _addFix_addConstToConstructor() async {
-    var node = coveredNode;
-    if (node is SimpleIdentifier) {
-      node = node.parent;
-    }
-    if (node is ConstructorDeclaration) {
-      final changeBuilder = _newDartChangeBuilder();
-      await changeBuilder.addFileEdit(file, (DartFileEditBuilder builder) {
-        final offset = (node as ConstructorDeclaration)
-            .firstTokenAfterCommentAndMetadata
-            .offset;
-        builder.addSimpleInsertion(offset, 'const ');
-      });
-      _addFixFromBuilder(changeBuilder, DartFixKind.ADD_CONST);
-    }
-  }
-
-  Future<void> _addFix_addExplicitCast() async {
-    if (coveredNode is! Expression) {
-      return;
-    }
-    Expression target = coveredNode;
-    var fromType = target.staticType;
-    DartType toType;
-    var parent = target.parent;
-    if (parent is AssignmentExpression && target == parent.rightHandSide) {
-      toType = parent.leftHandSide.staticType;
-    } else if (parent is VariableDeclaration && target == parent.initializer) {
-      toType = parent.declaredElement.type;
-    } else {
-      // TODO(brianwilkerson) Handle function arguments.
-      return;
-    }
-    // TODO(brianwilkerson) Handle `toSet` in a manner similar to the below.
-    if (_isToListMethodInvocation(target)) {
-      var targetTarget = (target as MethodInvocation).target;
-      if (targetTarget != null) {
-        var targetTargetType = targetTarget.staticType;
-        if (_isDartCoreIterable(targetTargetType) ||
-            _isDartCoreList(targetTargetType) ||
-            _isDartCoreMap(targetTargetType) ||
-            _isDartCoreSet(targetTargetType)) {
-          target = targetTarget;
-          fromType = targetTargetType;
-        }
-      }
-    }
-    if (target is AsExpression) {
-      // TODO(brianwilkerson) Consider updating the right operand.
-      return;
-    }
-    var needsParentheses = target.precedence < Precedence.postfix;
-    if (((_isDartCoreIterable(fromType) || _isDartCoreList(fromType)) &&
-            _isDartCoreList(toType)) ||
-        (_isDartCoreSet(fromType) && _isDartCoreSet(toType))) {
-      if (_isCastMethodInvocation(target)) {
-        // TODO(brianwilkerson) Consider updating the type arguments to the
-        // `cast` invocation.
-        return;
-      }
-      var changeBuilder = _newDartChangeBuilder();
-      await changeBuilder.addFileEdit(file, (DartFileEditBuilder builder) {
-        if (needsParentheses) {
-          builder.addSimpleInsertion(target.offset, '(');
-        }
-        builder.addInsertion(target.end, (DartEditBuilder builder) {
-          if (needsParentheses) {
-            builder.write(')');
-          }
-          builder.write('.cast<');
-          builder.writeType((toType as InterfaceType).typeArguments[0]);
-          builder.write('>()');
-        });
-      });
-      _addFixFromBuilder(changeBuilder, DartFixKind.ADD_EXPLICIT_CAST);
-    } else if (_isDartCoreMap(fromType) && _isDartCoreMap(toType)) {
-      if (_isCastMethodInvocation(target)) {
-        // TODO(brianwilkerson) Consider updating the type arguments to the
-        // `cast` invocation.
-        return;
-      }
-      var changeBuilder = _newDartChangeBuilder();
-      await changeBuilder.addFileEdit(file, (DartFileEditBuilder builder) {
-        if (needsParentheses) {
-          builder.addSimpleInsertion(target.offset, '(');
-        }
-        builder.addInsertion(target.end, (DartEditBuilder builder) {
-          if (needsParentheses) {
-            builder.write(')');
-          }
-          builder.write('.cast<');
-          builder.writeType((toType as InterfaceType).typeArguments[0]);
-          builder.write(', ');
-          builder.writeType((toType as InterfaceType).typeArguments[1]);
-          builder.write('>()');
-        });
-      });
-      _addFixFromBuilder(changeBuilder, DartFixKind.ADD_EXPLICIT_CAST);
-    } else {
-      var changeBuilder = _newDartChangeBuilder();
-      await changeBuilder.addFileEdit(file, (DartFileEditBuilder builder) {
-        if (needsParentheses) {
-          builder.addSimpleInsertion(target.offset, '(');
-        }
-        builder.addInsertion(target.end, (DartEditBuilder builder) {
-          if (needsParentheses) {
-            builder.write(')');
-          }
-          builder.write(' as ');
-          builder.writeType(toType);
-        });
-      });
-      _addFixFromBuilder(changeBuilder, DartFixKind.ADD_EXPLICIT_CAST);
-    }
-  }
-
-  Future<void> _addFix_addMissingEnumCaseClauses() async {
-    var statement = node as SwitchStatement;
-    String enumName;
-    var enumConstantNames = <String>[];
-    var expressionType = statement.expression.staticType;
-    if (expressionType is InterfaceType) {
-      var enumElement = expressionType.element;
-      if (enumElement.isEnum) {
-        enumName = enumElement.name;
-        for (var field in enumElement.fields) {
-          if (!field.isSynthetic) {
-            enumConstantNames.add(field.name);
-          }
-        }
-      }
-    }
-    if (enumName == null) {
-      return;
-    }
-    for (var member in statement.members) {
-      if (member is SwitchCase) {
-        var expression = member.expression;
-        if (expression is Identifier) {
-          var element = expression.staticElement;
-          if (element is PropertyAccessorElement) {
-            enumConstantNames.remove(element.name);
-          }
-        }
-      }
-    }
-    if (enumConstantNames.isEmpty) {
-      return;
-    }
-
-    var statementIndent = utils.getLinePrefix(statement.offset);
-    var singleIndent = utils.getIndent(1);
-
-    var changeBuilder = _newDartChangeBuilder();
-    await changeBuilder.addFileEdit(file, (DartFileEditBuilder builder) {
-      builder.addInsertion(utils.getLineThis(statement.end), (builder) {
-        for (var constantName in enumConstantNames) {
-          builder.write(statementIndent);
-          builder.write(singleIndent);
-          builder.write('case ');
-          builder.write(enumName);
-          builder.write('.');
-          builder.write(constantName);
-          builder.writeln(':');
-          builder.write(statementIndent);
-          builder.write(singleIndent);
-          builder.write(singleIndent);
-          builder.writeln('// TODO: Handle this case.');
-          builder.write(statementIndent);
-          builder.write(singleIndent);
-          builder.write(singleIndent);
-          builder.writeln('break;');
-        }
-      });
-    });
-    _addFixFromBuilder(
-        changeBuilder, DartFixKind.ADD_MISSING_ENUM_CASE_CLAUSES);
-  }
-
   Future<void> _addFix_addMissingHashOrEquals() async {
     final methodDecl = node.thisOrAncestorOfType<MethodDeclaration>();
     final classDecl = node.thisOrAncestorOfType<ClassDeclaration>();
@@ -1264,147 +1187,6 @@
     }
   }
 
-  Future<void> _addFix_addMissingRequiredArgument() async {
-    InstanceCreationExpression creation;
-    Element targetElement;
-    ArgumentList argumentList;
-
-    if (node is SimpleIdentifier) {
-      var invocation = node.parent;
-      if (invocation is MethodInvocation) {
-        targetElement = invocation.methodName.staticElement;
-        argumentList = invocation.argumentList;
-      } else {
-        creation =
-            invocation.thisOrAncestorOfType<InstanceCreationExpression>();
-        if (creation != null) {
-          targetElement = creation.staticElement;
-          argumentList = creation.argumentList;
-        }
-      }
-    }
-
-    if (targetElement is ExecutableElement) {
-      // Format: "Missing required argument 'foo"
-      var messageParts = error.message.split("'");
-      if (messageParts.length < 2) {
-        return;
-      }
-      var missingParameterName = messageParts[1];
-
-      var missingParameter = targetElement.parameters.firstWhere(
-          (p) => p.name == missingParameterName,
-          orElse: () => null);
-      if (missingParameter == null) {
-        return;
-      }
-
-      int offset;
-      var hasTrailingComma = false;
-      var insertBetweenParams = false;
-      List<Expression> arguments = argumentList.arguments;
-      if (arguments.isEmpty) {
-        offset = argumentList.leftParenthesis.end;
-      } else {
-        var lastArgument = arguments.last;
-        offset = lastArgument.end;
-        hasTrailingComma = lastArgument.endToken.next.type == TokenType.COMMA;
-
-        if (lastArgument is NamedExpression &&
-            flutter.isWidgetExpression(creation)) {
-          if (flutter.isChildArgument(lastArgument) ||
-              flutter.isChildrenArgument(lastArgument)) {
-            offset = lastArgument.offset;
-            hasTrailingComma = true;
-            insertBetweenParams = true;
-          }
-        }
-      }
-
-      var changeBuilder = _newDartChangeBuilder();
-      await changeBuilder.addFileEdit(file, (DartFileEditBuilder builder) {
-        builder.addInsertion(offset, (DartEditBuilder builder) {
-          if (arguments.isNotEmpty && !insertBetweenParams) {
-            builder.write(', ');
-          }
-
-          builder.write('$missingParameterName: ');
-
-          var defaultValue = getDefaultStringParameterValue(missingParameter);
-          // Use defaultValue.cursorPosition if it's not null.
-          if (defaultValue?.cursorPosition != null) {
-            builder.write(
-                defaultValue.text.substring(0, defaultValue.cursorPosition));
-            builder.selectHere();
-            builder.write(
-                defaultValue.text.substring(defaultValue.cursorPosition));
-          } else {
-            builder.addSimpleLinkedEdit('VALUE', defaultValue?.text);
-          }
-
-          if (flutter.isWidgetExpression(creation)) {
-            // Insert a trailing comma after Flutter instance creation params.
-            if (!hasTrailingComma) {
-              builder.write(',');
-            } else if (insertBetweenParams) {
-              builder.writeln(',');
-
-              // Insert indent before the child: or children: param.
-              var indent = utils.getLinePrefix(offset);
-              builder.write(indent);
-            }
-          }
-        });
-      });
-      _addFixFromBuilder(
-          changeBuilder, DartFixKind.ADD_MISSING_REQUIRED_ARGUMENT,
-          args: [missingParameterName]);
-    }
-  }
-
-  Future<void> _addFix_addOverrideAnnotation() async {
-    var member = node.thisOrAncestorOfType<ClassMember>();
-    if (member == null) {
-      return;
-    }
-
-    //TODO(pq): migrate annotation edit building to change_builder
-
-    // Handle doc comments.
-    var token = member.beginToken;
-    if (token is CommentToken) {
-      token = (token as CommentToken).parent;
-    }
-
-    var exitPosition = Position(file, token.offset - 1);
-    var indent = utils.getIndent(1);
-    var changeBuilder = _newDartChangeBuilder();
-    await changeBuilder.addFileEdit(file, (DartFileEditBuilder builder) {
-      builder.addSimpleReplacement(
-          range.startLength(token, 0), '@override$eol$indent');
-    });
-    changeBuilder.setSelection(exitPosition);
-    _addFixFromBuilder(changeBuilder, DartFixKind.ADD_OVERRIDE);
-  }
-
-  Future<void> _addFix_addRequiredAnnotation() async {
-    var changeBuilder = _newDartChangeBuilder();
-    await changeBuilder.addFileEdit(file, (DartFileEditBuilder builder) {
-      builder.addSimpleInsertion(node.parent.offset, '@required ');
-    });
-    _addFixFromBuilder(changeBuilder, DartFixKind.ADD_REQUIRED);
-  }
-
-  Future<void> _addFix_addStatic() async {
-    var declaration = node.thisOrAncestorOfType<FieldDeclaration>();
-    var changeBuilder = _newDartChangeBuilder();
-    await changeBuilder.addFileEdit(file, (DartFileEditBuilder builder) {
-      var offset = declaration.firstTokenAfterCommentAndMetadata.offset;
-      builder.addSimpleInsertion(offset, 'static ');
-    });
-    _addFixFromBuilder(changeBuilder, DartFixKind.ADD_STATIC);
-  }
-
   Future<void> _addFix_boolInsteadOfBoolean() async {
     var changeBuilder = _newDartChangeBuilder();
     await changeBuilder.addFileEdit(file, (DartFileEditBuilder builder) {
@@ -3852,23 +3634,6 @@
     }
   }
 
-  Future<void> _addFix_replaceNewWithConst() async {
-    var node = coveredNode;
-    if (node is ConstructorName) {
-      node = node.parent;
-    }
-    if (node is InstanceCreationExpression) {
-      final keyword = node.keyword;
-      if (keyword != null) {
-        final changeBuilder = _newDartChangeBuilder();
-        await changeBuilder.addFileEdit(file, (DartFileEditBuilder builder) {
-          builder.addSimpleReplacement(range.token(keyword), 'const');
-        });
-        _addFixFromBuilder(changeBuilder, DartFixKind.REPLACE_NEW_WITH_CONST);
-      }
-    }
-  }
-
   Future<void> _addFix_replaceNullWithClosure() async {
     var nodeToFix;
     var parameters = const <ParameterElement>[];
@@ -4492,9 +4257,10 @@
 
   Future<void> _addFromProducers() async {
     var context = CorrectionProducerContext(
+      diagnostic: error,
+      resolvedResult: resolvedResult,
       selectionOffset: errorOffset,
       selectionLength: 0,
-      resolvedResult: resolvedResult,
       workspace: workspace,
     );
 
@@ -4831,51 +4597,6 @@
     return node is SimpleIdentifier && node.name == 'await';
   }
 
-  bool _isCastMethodElement(MethodElement method) {
-    if (method.name != 'cast') {
-      return false;
-    }
-    ClassElement definingClass = method.enclosingElement;
-    return _isDartCoreIterableElement(definingClass) ||
-        _isDartCoreListElement(definingClass) ||
-        _isDartCoreMapElement(definingClass) ||
-        _isDartCoreSetElement(definingClass);
-  }
-
-  bool _isCastMethodInvocation(Expression expression) {
-    if (expression is MethodInvocation) {
-      var element = expression.methodName.staticElement;
-      return element is MethodElement && _isCastMethodElement(element);
-    }
-    return false;
-  }
-
-  bool _isDartCoreIterable(DartType type) =>
-      type is InterfaceType && _isDartCoreIterableElement(type.element);
-
-  bool _isDartCoreIterableElement(ClassElement element) =>
-      element != null &&
-      element.name == 'Iterable' &&
-      element.library.isDartCore;
-
-  bool _isDartCoreList(DartType type) =>
-      type is InterfaceType && _isDartCoreListElement(type.element);
-
-  bool _isDartCoreListElement(ClassElement element) =>
-      element != null && element.name == 'List' && element.library.isDartCore;
-
-  bool _isDartCoreMap(DartType type) =>
-      type is InterfaceType && _isDartCoreMapElement(type.element);
-
-  bool _isDartCoreMapElement(ClassElement element) =>
-      element != null && element.name == 'Map' && element.library.isDartCore;
-
-  bool _isDartCoreSet(DartType type) =>
-      type is InterfaceType && _isDartCoreSetElement(type.element);
-
-  bool _isDartCoreSetElement(ClassElement element) =>
-      element != null && element.name == 'Set' && element.library.isDartCore;
-
   bool _isLibSrcPath(String path) {
     var parts = resourceProvider.pathContext.split(path);
     for (var i = 0; i < parts.length - 2; i++) {
@@ -4886,23 +4607,6 @@
     return false;
   }
 
-  bool _isToListMethodElement(MethodElement method) {
-    if (method.name != 'toList') {
-      return false;
-    }
-    ClassElement definingClass = method.enclosingElement;
-    return _isDartCoreIterableElement(definingClass) ||
-        _isDartCoreListElement(definingClass);
-  }
-
-  bool _isToListMethodInvocation(Expression expression) {
-    if (expression is MethodInvocation) {
-      var element = expression.methodName.staticElement;
-      return element is MethodElement && _isToListMethodElement(element);
-    }
-    return false;
-  }
-
   DartChangeBuilder _newDartChangeBuilder() {
     return DartChangeBuilderImpl.forWorkspace(context.workspace);
   }
diff --git a/pkg/analysis_server/lib/src/services/kythe/kythe_visitors.dart b/pkg/analysis_server/lib/src/services/kythe/kythe_visitors.dart
index 8e289c2..398620c 100644
--- a/pkg/analysis_server/lib/src/services/kythe/kythe_visitors.dart
+++ b/pkg/analysis_server/lib/src/services/kythe/kythe_visitors.dart
@@ -4,13 +4,11 @@
 
 import 'dart:convert';
 
-import 'package:analyzer/dart/analysis/features.dart';
 import 'package:analyzer/dart/ast/ast.dart';
 import 'package:analyzer/dart/ast/syntactic_entity.dart';
 import 'package:analyzer/dart/ast/token.dart';
 import 'package:analyzer/dart/ast/visitor.dart';
 import 'package:analyzer/dart/element/element.dart';
-import 'package:analyzer/dart/element/nullability_suffix.dart';
 import 'package:analyzer/dart/element/type.dart';
 import 'package:analyzer/dart/element/visitor.dart';
 import 'package:analyzer/file_system/file_system.dart';
@@ -96,10 +94,8 @@
   final String _contents;
 
   String _enclosingFilePath = '';
-  FeatureSet _enclosingUnitFeatureSet;
   Element _enclosingElement;
   ClassElement _enclosingClassElement;
-  InterfaceType _enclosingClassThisType;
   KytheVName _enclosingVName;
   KytheVName _enclosingFileVName;
   KytheVName _enclosingClassVName;
@@ -340,7 +336,6 @@
   @override
   void visitCompilationUnit(CompilationUnit node) {
     _enclosingFilePath = _getPath(resourceProvider, node.declaredElement);
-    _enclosingUnitFeatureSet = node.featureSet;
     return _withEnclosingElement(node.declaredElement, () {
       addFact(_enclosingFileVName, schema.NODE_KIND_FACT,
           _encode(schema.FILE_KIND));
@@ -693,8 +688,8 @@
           returnNode: node.returnType);
 
       // override edges
-      var overriddenList = _inheritanceManager.getOverridden(
-        _enclosingClassThisType,
+      var overriddenList = _inheritanceManager.getOverridden2(
+        _enclosingClassElement,
         Name(
           _enclosingClassElement.library.source.uri,
           node.declaredElement.name,
@@ -1082,17 +1077,6 @@
         _enclosingClassElement = element;
         _enclosingClassVName = _enclosingVName =
             _vNameFromElement(_enclosingClassElement, schema.RECORD_KIND);
-        _enclosingClassThisType = element.instantiate(
-          typeArguments: element.typeParameters.map((t) {
-            return t.instantiate(
-              nullabilitySuffix:
-                  _enclosingUnitFeatureSet.isEnabled(Feature.non_nullable)
-                      ? NullabilitySuffix.none
-                      : NullabilitySuffix.star,
-            );
-          }).toList(),
-          nullabilitySuffix: NullabilitySuffix.none,
-        );
       } else if (element is MethodElement ||
           element is FunctionElement ||
           element is ConstructorElement) {
diff --git a/pkg/analysis_server/lib/src/utilities/extensions/ast.dart b/pkg/analysis_server/lib/src/utilities/extensions/ast.dart
index 20a9324..f974740 100644
--- a/pkg/analysis_server/lib/src/utilities/extensions/ast.dart
+++ b/pkg/analysis_server/lib/src/utilities/extensions/ast.dart
@@ -2,10 +2,26 @@
 // 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.
 
+import 'package:analysis_server/src/utilities/extensions/element.dart';
 import 'package:analyzer/dart/ast/ast.dart';
+import 'package:analyzer/dart/element/element.dart';
 
 /// Extensions for [AstNode]s
 extension AstNodeExtensions on AstNode {
+  /// Return `true` if this node has an `override` annotation.
+  bool get hasOverride {
+    var node = this;
+    if (node is AnnotatedNode) {
+      for (var annotation in node.metadata) {
+        if (annotation.name.name == 'override' &&
+            annotation.arguments == null) {
+          return true;
+        }
+      }
+    }
+    return false;
+  }
+
   bool get inAsyncMethodOrFunction {
     var body = thisOrAncestorOfType<FunctionBody>();
     return body != null && body.isAsynchronous && body.star == null;
@@ -45,6 +61,29 @@
   bool get inWhileLoop => thisOrAncestorOfType<WhileStatement>() != null;
 }
 
+/// Extensions for [Expression]s
+extension ExpressionExtensions on Expression {
+  /// Return `true` if this expression is an invocation of the method `cast`
+  /// from either Iterable`, `List`, `Map`, or `Set`.
+  bool get isCastMethodInvocation {
+    if (this is MethodInvocation) {
+      var element = (this as MethodInvocation).methodName.staticElement;
+      return element is MethodElement && element.isCastMethod;
+    }
+    return false;
+  }
+
+  /// Return `true` if this expression is an invocation of the method `toList`
+  /// from either `Iterable` or `List`.
+  bool get isToListMethodInvocation {
+    if (this is MethodInvocation) {
+      var element = (this as MethodInvocation).methodName.staticElement;
+      return element is MethodElement && element.isToListMethod;
+    }
+    return false;
+  }
+}
+
 /// Extensions for [FunctionBody]s
 extension FunctionBodyExtensions on FunctionBody {
   bool get isEmpty =>
diff --git a/pkg/analysis_server/lib/src/utilities/extensions/element.dart b/pkg/analysis_server/lib/src/utilities/extensions/element.dart
new file mode 100644
index 0000000..f502725
--- /dev/null
+++ b/pkg/analysis_server/lib/src/utilities/extensions/element.dart
@@ -0,0 +1,52 @@
+// Copyright (c) 2020, the Dart project authors. Please see the AUTHORS file
+// 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.
+
+import 'package:analyzer/dart/element/element.dart';
+
+/// Extensions for [ClassElement]s
+extension ClassElementExtensions on ClassElement {
+  /// Return `true` if this element represents the class `Iterable` from
+  /// `dart:core`.
+  bool get isDartCoreIterable =>
+      this != null && name == 'Iterable' && library.isDartCore;
+
+  /// Return `true` if this element represents the class `List` from
+  /// `dart:core`.
+  bool get isDartCoreList =>
+      this != null && name == 'List' && library.isDartCore;
+
+  /// Return `true` if this element represents the class `Map` from
+  /// `dart:core`.
+  bool get isDartCoreMap => this != null && name == 'Map' && library.isDartCore;
+
+  /// Return `true` if this element represents the class `Set` from
+  /// `dart:core`.
+  bool get isDartCoreSet => this != null && name == 'Set' && library.isDartCore;
+}
+
+/// Extensions for [MethodElement]s
+extension MethodElementExtensions on MethodElement {
+  /// Return `true` if this element represents the method `cast` from either
+  /// `Iterable`, `List`, `Map`, or `Set`.
+  bool get isCastMethod {
+    if (name != 'cast') {
+      return false;
+    }
+    ClassElement definingClass = enclosingElement;
+    return definingClass.isDartCoreIterable ||
+        definingClass.isDartCoreList ||
+        definingClass.isDartCoreMap ||
+        definingClass.isDartCoreSet;
+  }
+
+  /// Return `true` if this element represents the method `toList` from either
+  /// `Iterable` or `List`.
+  bool get isToListMethod {
+    if (name != 'toList') {
+      return false;
+    }
+    ClassElement definingClass = enclosingElement;
+    return definingClass.isDartCoreIterable || definingClass.isDartCoreList;
+  }
+}
diff --git a/pkg/analysis_server/lib/src/utilities/extensions/type.dart b/pkg/analysis_server/lib/src/utilities/extensions/type.dart
new file mode 100644
index 0000000..8964365
--- /dev/null
+++ b/pkg/analysis_server/lib/src/utilities/extensions/type.dart
@@ -0,0 +1,15 @@
+// Copyright (c) 2020, the Dart project authors. Please see the AUTHORS file
+// 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.
+
+import 'package:analysis_server/src/utilities/extensions/element.dart';
+import 'package:analyzer/dart/element/type.dart';
+
+/// Extensions for [DartType]s.
+extension DartTypeExtensions on DartType {
+  /// Return `true` if this type represents the class `Iterable` from
+  /// `dart:core`.
+  bool get isDartCoreIterable =>
+      this is InterfaceType &&
+      (this as InterfaceType).element.isDartCoreIterable;
+}
diff --git a/pkg/analysis_server/test/analysis/get_hover_test.dart b/pkg/analysis_server/test/analysis/get_hover_test.dart
index c9df867..493f406 100644
--- a/pkg/analysis_server/test/analysis/get_hover_test.dart
+++ b/pkg/analysis_server/test/analysis/get_hover_test.dart
@@ -319,7 +319,6 @@
   }
 
   Future<void> test_extensionDeclaration() async {
-    createAnalysisOptionsFile(experiments: ['extension-methods']);
     addTestFile('''
 class A {}
 /// Comment
diff --git a/pkg/analysis_server/test/analysis/notification_highlights2_test.dart b/pkg/analysis_server/test/analysis/notification_highlights2_test.dart
index 121574d..1113017 100644
--- a/pkg/analysis_server/test/analysis/notification_highlights2_test.dart
+++ b/pkg/analysis_server/test/analysis/notification_highlights2_test.dart
@@ -1156,16 +1156,6 @@
 
 @reflectiveTest
 class HighlightsWithControlFlowCollectionsTest extends HighlightsTestSupport {
-  @override
-  void createProject({Map<String, String> packageRoots}) {
-    addAnalysisOptionsFile('''
-analyzer:
-  enable-experiment:
-    - control-flow-collections
-''');
-    super.createProject(packageRoots: packageRoots);
-  }
-
   @failingTest
   Future<void> test_KEYWORD_awaitForIn_list() async {
     addTestFile('''
diff --git a/pkg/analysis_server/test/analysis/notification_highlights_test.dart b/pkg/analysis_server/test/analysis/notification_highlights_test.dart
index 30966bf..d35cfe3 100644
--- a/pkg/analysis_server/test/analysis/notification_highlights_test.dart
+++ b/pkg/analysis_server/test/analysis/notification_highlights_test.dart
@@ -1004,16 +1004,6 @@
 
 @reflectiveTest
 class HighlightsWithControlFlowCollectionsTest extends HighlightsTestSupport {
-  @override
-  void createProject({Map<String, String> packageRoots}) {
-    addAnalysisOptionsFile('''
-analyzer:
-  enable-experiment:
-    - control-flow-collections
-''');
-    super.createProject(packageRoots: packageRoots);
-  }
-
   @failingTest
   Future<void> test_KEYWORD_awaitForIn_list() async {
     addTestFile('''
diff --git a/pkg/analysis_server/test/analysis/notification_navigation_test.dart b/pkg/analysis_server/test/analysis/notification_navigation_test.dart
index d0528ad..e394993 100644
--- a/pkg/analysis_server/test/analysis/notification_navigation_test.dart
+++ b/pkg/analysis_server/test/analysis/notification_navigation_test.dart
@@ -345,7 +345,6 @@
   }
 
   Future<void> test_extension_on() async {
-    createAnalysisOptionsFile(experiments: ['extension-methods']);
     addTestFile('''
 class C //1
 {}
diff --git a/pkg/analysis_server/test/analysis/set_priority_files_test.dart b/pkg/analysis_server/test/analysis/set_priority_files_test.dart
index 44ae720..46d189d 100644
--- a/pkg/analysis_server/test/analysis/set_priority_files_test.dart
+++ b/pkg/analysis_server/test/analysis/set_priority_files_test.dart
@@ -43,6 +43,14 @@
     _verifyPriorityFiles(testFile);
   }
 
+  Future<void> test_fileInAnalysisRootAddedLater() async {
+    var path = convertPath('/other/file.dart');
+    newFile(path);
+    await _setPriorityFile(path);
+    await _setAnalysisRoots('/other');
+    _verifyPriorityFiles(path);
+  }
+
   Future<void> test_fileInSdk() async {
     addTestFile('');
     // set priority files
@@ -134,6 +142,11 @@
     expect(params.files, <String>[testFile]);
   }
 
+  Future<Response> _setAnalysisRoots(String folder) async {
+    var request = AnalysisSetAnalysisRootsParams([folder], []).toRequest('1');
+    return await serverChannel.sendRequest(request);
+  }
+
   Future<Response> _setPriorityFile(String file) async {
     var request = AnalysisSetPriorityFilesParams(<String>[file]).toRequest('0');
     return await serverChannel.sendRequest(request);
diff --git a/pkg/analysis_server/test/search/element_references_test.dart b/pkg/analysis_server/test/search/element_references_test.dart
index 7bbc24e..12d5198 100644
--- a/pkg/analysis_server/test/search/element_references_test.dart
+++ b/pkg/analysis_server/test/search/element_references_test.dart
@@ -128,7 +128,6 @@
   }
 
   Future<void> test_extension() async {
-    createAnalysisOptionsFile(experiments: ['extension-methods']);
     addTestFile('''
 extension E on int {
   static void foo() {}
@@ -238,7 +237,6 @@
   }
 
   Future<void> test_field_ofExtension_explicit_static() async {
-    createAnalysisOptionsFile(experiments: ['extension-methods']);
     addTestFile('''
 extension E on int {
   static var fff; // declaration
@@ -274,7 +272,6 @@
   }
 
   Future<void> test_field_ofExtension_implicit_instance() async {
-    createAnalysisOptionsFile(experiments: ['extension-methods']);
     addTestFile('''
 extension E on int {
   var get fff => null;
@@ -309,7 +306,6 @@
   }
 
   Future<void> test_field_ofExtension_implicit_static() async {
-    createAnalysisOptionsFile(experiments: ['extension-methods']);
     addTestFile('''
 extension E on int {
   static var get fff => null;
@@ -515,7 +511,6 @@
   }
 
   Future<void> test_method_ofExtension() async {
-    createAnalysisOptionsFile(experiments: ['extension-methods']);
     addTestFile('''
 extension E on int {
   void foo() {}
diff --git a/pkg/analysis_server/test/search/top_level_declarations_test.dart b/pkg/analysis_server/test/search/top_level_declarations_test.dart
index 78086d1..a3f5ed3 100644
--- a/pkg/analysis_server/test/search/top_level_declarations_test.dart
+++ b/pkg/analysis_server/test/search/top_level_declarations_test.dart
@@ -55,7 +55,6 @@
   }
 
   Future<void> test_extensionDeclaration() async {
-    createAnalysisOptionsFile(experiments: ['extension-methods']);
     addTestFile('''
 extension MyExtension on int {}
 ''');
diff --git a/pkg/analysis_server/test/services/completion/dart/extension_member_contributor_test.dart b/pkg/analysis_server/test/services/completion/dart/extension_member_contributor_test.dart
index 4085340..1c5cfd9 100644
--- a/pkg/analysis_server/test/services/completion/dart/extension_member_contributor_test.dart
+++ b/pkg/analysis_server/test/services/completion/dart/extension_member_contributor_test.dart
@@ -21,12 +21,6 @@
     return ExtensionMemberContributor();
   }
 
-  @override
-  void setUp() {
-    createAnalysisOptionsFile(experiments: ['extension-methods']);
-    super.setUp();
-  }
-
   Future<void> test_extended_members_inExtension_field() async {
     addTestSource('''
 class A {
diff --git a/pkg/analysis_server/test/services/completion/dart/keyword_contributor_test.dart b/pkg/analysis_server/test/services/completion/dart/keyword_contributor_test.dart
index 0df9309..e6bab18 100644
--- a/pkg/analysis_server/test/services/completion/dart/keyword_contributor_test.dart
+++ b/pkg/analysis_server/test/services/completion/dart/keyword_contributor_test.dart
@@ -16,7 +16,6 @@
 void main() {
   defineReflectiveSuite(() {
     defineReflectiveTests(KeywordContributorTest);
-    defineReflectiveTests(KeywordContributorWithExtensionMethodsTest);
     defineReflectiveTests(KeywordContributorWithNnbdTest);
   });
 }
@@ -91,14 +90,12 @@
       Keyword.CONST,
       Keyword.COVARIANT,
       Keyword.DYNAMIC,
+      Keyword.EXTENSION,
       Keyword.FINAL,
       Keyword.TYPEDEF,
       Keyword.VAR,
       Keyword.VOID
     ];
-    if (isEnabled(ExperimentalFeatures.extension_methods)) {
-      keywords.add(Keyword.EXTENSION);
-    }
     if (isEnabled(ExperimentalFeatures.non_nullable)) {
       keywords.add(Keyword.LATE);
     }
@@ -113,6 +110,7 @@
       Keyword.COVARIANT,
       Keyword.DYNAMIC,
       Keyword.EXPORT,
+      Keyword.EXTENSION,
       Keyword.FINAL,
       Keyword.IMPORT,
       Keyword.PART,
@@ -120,9 +118,6 @@
       Keyword.VAR,
       Keyword.VOID
     ];
-    if (isEnabled(ExperimentalFeatures.extension_methods)) {
-      keywords.add(Keyword.EXTENSION);
-    }
     if (isEnabled(ExperimentalFeatures.non_nullable)) {
       keywords.add(Keyword.LATE);
     }
@@ -145,6 +140,7 @@
       Keyword.COVARIANT,
       Keyword.DYNAMIC,
       Keyword.EXPORT,
+      Keyword.EXTENSION,
       Keyword.FINAL,
       Keyword.IMPORT,
       Keyword.PART,
@@ -152,9 +148,24 @@
       Keyword.VAR,
       Keyword.VOID
     ];
-    if (isEnabled(ExperimentalFeatures.extension_methods)) {
-      keywords.add(Keyword.EXTENSION);
+    if (isEnabled(ExperimentalFeatures.non_nullable)) {
+      keywords.add(Keyword.LATE);
     }
+    return keywords;
+  }
+
+  List<Keyword> get extensionBodyKeywords {
+    var keywords = [
+      Keyword.CONST,
+      Keyword.DYNAMIC,
+      Keyword.FINAL,
+      Keyword.GET,
+      Keyword.OPERATOR,
+      Keyword.SET,
+      Keyword.STATIC,
+      Keyword.VAR,
+      Keyword.VOID
+    ];
     if (isEnabled(ExperimentalFeatures.non_nullable)) {
       keywords.add(Keyword.LATE);
     }
@@ -859,6 +870,12 @@
     assertSuggestKeywords(classBodyKeywords);
   }
 
+  Future<void> test_class_body_empty() async {
+    addTestSource('extension E on int {^}');
+    await computeSuggestions();
+    assertSuggestKeywords(extensionBodyKeywords);
+  }
+
   Future<void> test_class_body_end() async {
     addTestSource('class A {var foo; ^}');
     await computeSuggestions();
@@ -1075,6 +1092,56 @@
         relevance: DART_RELEVANCE_HIGH);
   }
 
+  Future<void> test_extension_body_beginning() async {
+    addTestSource('extension E on int {^ foo() {}}');
+    await computeSuggestions();
+    assertSuggestKeywords(extensionBodyKeywords);
+  }
+
+  Future<void> test_extension_body_between() async {
+    addTestSource('extension E on int {foo() {} ^ void bar() {}}');
+    await computeSuggestions();
+    assertSuggestKeywords(extensionBodyKeywords);
+  }
+
+  Future<void> test_extension_body_end() async {
+    addTestSource('extension E on int {foo() {} ^}');
+    await computeSuggestions();
+    assertSuggestKeywords(extensionBodyKeywords);
+  }
+
+  Future<void> test_extension_member_const_afterStatic() async {
+    addTestSource('''
+extension E on int {
+  static c^
+}
+''');
+    await computeSuggestions();
+    assertSuggestKeywords(staticMember);
+  }
+
+  Future<void> test_extension_member_final_afterStatic() async {
+    addTestSource('''
+extension E on int {
+  static f^
+}
+''');
+    await computeSuggestions();
+    assertSuggestKeywords(staticMember);
+  }
+
+  Future<void> test_extension_noBody_named() async {
+    addTestSource('extension E ^');
+    await computeSuggestions();
+    assertSuggestKeywords([Keyword.ON], relevance: DART_RELEVANCE_HIGH);
+  }
+
+  Future<void> test_extension_noBody_unnamed() async {
+    addTestSource('extension ^');
+    await computeSuggestions();
+    assertSuggestKeywords([Keyword.ON], relevance: DART_RELEVANCE_HIGH);
+  }
+
   Future<void> test_for_break_continue_insideClass() async {
     addTestSource('class A {foo() {for (int x in myList) {^}}}');
     await computeSuggestions();
@@ -2026,6 +2093,19 @@
     assertSuggestKeywords(methodParameter);
   }
 
+  Future<void> test_method_type_params() async {
+    addTestSource('''
+void f<T>() {}
+
+void m() {
+  f<^>();
+}
+''');
+
+    await computeSuggestions();
+    assertSuggestKeywords([Keyword.DYNAMIC, Keyword.VOID]);
+  }
+
   Future<void> test_mixin() async {
     addTestSource('mixin M o^ { }');
     await computeSuggestions();
@@ -2268,97 +2348,6 @@
 }
 
 @reflectiveTest
-class KeywordContributorWithExtensionMethodsTest
-    extends KeywordContributorTest {
-  List<Keyword> get extensionBodyKeywords => [
-        Keyword.CONST,
-        Keyword.DYNAMIC,
-        Keyword.FINAL,
-        Keyword.GET,
-        Keyword.OPERATOR,
-        Keyword.SET,
-        Keyword.STATIC,
-        Keyword.VAR,
-        Keyword.VOID
-      ];
-
-  @override
-  void setupResourceProvider() {
-    super.setupResourceProvider();
-    createAnalysisOptionsFile(experiments: [EnableString.extension_methods]);
-  }
-
-  Future<void> test_class_body_empty() async {
-    addTestSource('extension E on int {^}');
-    await computeSuggestions();
-    assertSuggestKeywords(extensionBodyKeywords);
-  }
-
-  Future<void> test_extension_body_beginning() async {
-    addTestSource('extension E on int {^ foo() {}}');
-    await computeSuggestions();
-    assertSuggestKeywords(extensionBodyKeywords);
-  }
-
-  Future<void> test_extension_body_between() async {
-    addTestSource('extension E on int {foo() {} ^ void bar() {}}');
-    await computeSuggestions();
-    assertSuggestKeywords(extensionBodyKeywords);
-  }
-
-  Future<void> test_extension_body_end() async {
-    addTestSource('extension E on int {foo() {} ^}');
-    await computeSuggestions();
-    assertSuggestKeywords(extensionBodyKeywords);
-  }
-
-  Future<void> test_extension_member_const_afterStatic() async {
-    addTestSource('''
-extension E on int {
-  static c^
-}
-''');
-    await computeSuggestions();
-    assertSuggestKeywords(staticMember);
-  }
-
-  Future<void> test_extension_member_final_afterStatic() async {
-    addTestSource('''
-extension E on int {
-  static f^
-}
-''');
-    await computeSuggestions();
-    assertSuggestKeywords(staticMember);
-  }
-
-  Future<void> test_extension_noBody_named() async {
-    addTestSource('extension E ^');
-    await computeSuggestions();
-    assertSuggestKeywords([Keyword.ON], relevance: DART_RELEVANCE_HIGH);
-  }
-
-  Future<void> test_extension_noBody_unnamed() async {
-    addTestSource('extension ^');
-    await computeSuggestions();
-    assertSuggestKeywords([Keyword.ON], relevance: DART_RELEVANCE_HIGH);
-  }
-
-  Future<void> test_method_type_params() async {
-    addTestSource('''
-void f<T>() {}
-
-void m() {
-  f<^>();
-}
-''');
-
-    await computeSuggestions();
-    assertSuggestKeywords([Keyword.DYNAMIC, Keyword.VOID]);
-  }
-}
-
-@reflectiveTest
 class KeywordContributorWithNnbdTest extends KeywordContributorTest {
   @override
   void setupResourceProvider() {
diff --git a/pkg/analysis_server/test/services/completion/dart/library_member_contributor_test.dart b/pkg/analysis_server/test/services/completion/dart/library_member_contributor_test.dart
index eb674bd2..f9de3eb 100644
--- a/pkg/analysis_server/test/services/completion/dart/library_member_contributor_test.dart
+++ b/pkg/analysis_server/test/services/completion/dart/library_member_contributor_test.dart
@@ -4,7 +4,6 @@
 
 import 'package:analysis_server/src/provisional/completion/dart/completion_dart.dart';
 import 'package:analysis_server/src/services/completion/dart/library_member_contributor.dart';
-import 'package:analyzer/src/dart/analysis/experiments.dart';
 import 'package:test/test.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
@@ -13,7 +12,6 @@
 void main() {
   defineReflectiveSuite(() {
     defineReflectiveTests(LibraryMemberContributorTest);
-    defineReflectiveTests(LibraryMemberContributorWithExtensionMethodsTest);
   });
 }
 
@@ -24,6 +22,18 @@
     return LibraryMemberContributor();
   }
 
+  Future<void> test_extension() async {
+    // SimpleIdentifier  PrefixedIdentifier  ExpressionStatement
+    addSource('/home/test/lib/b.dart', '''
+extension MyExt on int {}
+''');
+    addTestSource('''
+        import "b.dart" as b;
+        main() {b.^}''');
+    await computeSuggestions();
+    assertSuggest('MyExt');
+  }
+
   Future<void> test_libraryPrefix() async {
     // SimpleIdentifier  PrefixedIdentifier  ExpressionStatement
     addTestSource('import "dart:async" as bar; foo() {bar.^}');
@@ -282,30 +292,3 @@
     assertNoSuggestions();
   }
 }
-
-@reflectiveTest
-class LibraryMemberContributorWithExtensionMethodsTest
-    extends DartCompletionContributorTest {
-  @override
-  DartCompletionContributor createContributor() {
-    return LibraryMemberContributor();
-  }
-
-  @override
-  void setupResourceProvider() {
-    super.setupResourceProvider();
-    createAnalysisOptionsFile(experiments: [EnableString.extension_methods]);
-  }
-
-  Future<void> test_extension() async {
-    // SimpleIdentifier  PrefixedIdentifier  ExpressionStatement
-    addSource('/home/test/lib/b.dart', '''
-extension MyExt on int {}
-''');
-    addTestSource('''
-        import "b.dart" as b;
-        main() {b.^}''');
-    await computeSuggestions();
-    assertSuggest('MyExt');
-  }
-}
diff --git a/pkg/analysis_server/test/services/completion/dart/local_library_contributor_test.dart b/pkg/analysis_server/test/services/completion/dart/local_library_contributor_test.dart
index c5755b8..498d1f2 100644
--- a/pkg/analysis_server/test/services/completion/dart/local_library_contributor_test.dart
+++ b/pkg/analysis_server/test/services/completion/dart/local_library_contributor_test.dart
@@ -4,7 +4,6 @@
 
 import 'package:analysis_server/src/provisional/completion/dart/completion_dart.dart';
 import 'package:analysis_server/src/services/completion/dart/local_library_contributor.dart';
-import 'package:analyzer/src/dart/analysis/experiments.dart';
 import 'package:test/test.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
@@ -13,7 +12,6 @@
 void main() {
   defineReflectiveSuite(() {
     defineReflectiveTests(LocalLibraryContributorTest);
-    defineReflectiveTests(LocalLibraryContributorWithExtensionMethodsTest);
   });
 }
 
@@ -92,6 +90,22 @@
     assertNotSuggested('m');
   }
 
+  Future<void> test_partFile_extension() async {
+    addSource('/home/test/lib/a.dart', '''
+part of libA;
+extension E on int {}
+''');
+    addTestSource('''
+library libA;
+part "a.dart";
+void f() {^}
+''');
+    await computeSuggestions();
+    expect(replacementOffset, completionOffset);
+    expect(replacementLength, 0);
+    assertSuggest('E');
+  }
+
   Future<void>
       test_partFile_InstanceCreationExpression_assignment_filter() async {
     // ConstructorName  InstanceCreationExpression  VariableDeclarationList
@@ -288,29 +302,3 @@
     assertNotSuggested('m');
   }
 }
-
-@reflectiveTest
-class LocalLibraryContributorWithExtensionMethodsTest
-    extends LocalLibraryContributorTest {
-  @override
-  void setupResourceProvider() {
-    super.setupResourceProvider();
-    createAnalysisOptionsFile(experiments: [EnableString.extension_methods]);
-  }
-
-  Future<void> test_partFile_extension() async {
-    addSource('/home/test/lib/a.dart', '''
-part of libA;
-extension E on int {}
-''');
-    addTestSource('''
-library libA;
-part "a.dart";
-void f() {^}
-''');
-    await computeSuggestions();
-    expect(replacementOffset, completionOffset);
-    expect(replacementLength, 0);
-    assertSuggest('E');
-  }
-}
diff --git a/pkg/analysis_server/test/services/completion/dart/local_reference_contributor_test.dart b/pkg/analysis_server/test/services/completion/dart/local_reference_contributor_test.dart
index 6827874..725e4bd 100644
--- a/pkg/analysis_server/test/services/completion/dart/local_reference_contributor_test.dart
+++ b/pkg/analysis_server/test/services/completion/dart/local_reference_contributor_test.dart
@@ -5,7 +5,6 @@
 import 'package:analysis_server/src/protocol_server.dart';
 import 'package:analysis_server/src/provisional/completion/dart/completion_dart.dart';
 import 'package:analysis_server/src/services/completion/dart/local_reference_contributor.dart';
-import 'package:analyzer/src/dart/analysis/experiments.dart';
 import 'package:test/test.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
@@ -14,7 +13,6 @@
 void main() {
   defineReflectiveSuite(() {
     defineReflectiveTests(LocalReferenceContributorTest);
-    defineReflectiveTests(LocalReferenceContributorWithExtensionMethodsTest);
   });
 }
 
@@ -1421,6 +1419,19 @@
     assertNotSuggested('parseHex');
   }
 
+  Future<void> test_Block_setterWithoutParameters() async {
+    addTestSource('''
+set foo() {}
+
+void main() {
+  ^
+}
+''');
+    await computeSuggestions();
+
+    assertSuggestSetter('foo', relevance: DART_RELEVANCE_LOCAL_ACCESSOR);
+  }
+
   Future<void> test_Block_unimported() async {
     addPackageFile('aaa', 'a.dart', 'class A {}');
     addTestSource('main() { ^ }');
@@ -2555,6 +2566,23 @@
     assertNotSuggested('E');
   }
 
+  Future<void> test_extensionDeclaration_inMethod() async {
+    // ExtensionDeclaration  CompilationUnit
+    addTestSource('''
+extension E on int {}
+class C {
+  void m() {
+    ^
+  }
+}
+''');
+    await computeSuggestions();
+
+    expect(replacementOffset, completionOffset);
+    expect(replacementLength, 0);
+    assertSuggest('E');
+  }
+
   Future<void> test_ExtensionDeclaration_member() async {
     addTestSource('''
 class A {}
@@ -2564,6 +2592,41 @@
     assertSuggestClass('A');
   }
 
+  Future<void> test_extensionDeclaration_notInBody() async {
+    // ExtensionDeclaration  CompilationUnit
+    addSource('/home/test/lib/b.dart', '''
+class B { }''');
+    addTestSource('''
+import "b.dart" as x;
+extension E on int {^}
+class _B {}
+A T;''');
+    await computeSuggestions();
+
+    expect(replacementOffset, completionOffset);
+    expect(replacementLength, 0);
+    var suggestionB = assertSuggestClass('_B');
+    if (suggestionB != null) {
+      expect(suggestionB.element.isDeprecated, isFalse);
+      expect(suggestionB.element.isPrivate, isTrue);
+    }
+    assertNotSuggested('Object');
+    assertNotSuggested('T');
+    assertNotSuggested('E');
+    // Suggested by LibraryPrefixContributor
+    assertNotSuggested('x');
+  }
+
+  Future<void> test_extensionDeclaration_unnamed() async {
+    addTestSource('''
+extension on String {
+  void something() => this.^
+}
+''');
+    await computeSuggestions();
+    assertNoSuggestions();
+  }
+
   Future<void> test_FieldDeclaration_name_typed() async {
     // SimpleIdentifier  VariableDeclaration  VariableDeclarationList
     // FieldDeclaration
@@ -5175,69 +5238,3 @@
     assertSuggestLocalVariable('value', null);
   }
 }
-
-@reflectiveTest
-class LocalReferenceContributorWithExtensionMethodsTest
-    extends LocalReferenceContributorTest {
-  @override
-  void setUp() {
-    createAnalysisOptionsFile(
-      experiments: [
-        EnableString.extension_methods,
-      ],
-    );
-    super.setUp();
-  }
-
-  Future<void> test_extensionDeclaration_inMethod() async {
-    // ExtensionDeclaration  CompilationUnit
-    addTestSource('''
-extension E on int {}
-class C {
-  void m() {
-    ^
-  }
-}
-''');
-    await computeSuggestions();
-
-    expect(replacementOffset, completionOffset);
-    expect(replacementLength, 0);
-    assertSuggest('E');
-  }
-
-  Future<void> test_extensionDeclaration_notInBody() async {
-    // ExtensionDeclaration  CompilationUnit
-    addSource('/home/test/lib/b.dart', '''
-class B { }''');
-    addTestSource('''
-import "b.dart" as x;
-extension E on int {^}
-class _B {}
-A T;''');
-    await computeSuggestions();
-
-    expect(replacementOffset, completionOffset);
-    expect(replacementLength, 0);
-    var suggestionB = assertSuggestClass('_B');
-    if (suggestionB != null) {
-      expect(suggestionB.element.isDeprecated, isFalse);
-      expect(suggestionB.element.isPrivate, isTrue);
-    }
-    assertNotSuggested('Object');
-    assertNotSuggested('T');
-    assertNotSuggested('E');
-    // Suggested by LibraryPrefixContributor
-    assertNotSuggested('x');
-  }
-
-  Future<void> test_extensionDeclaration_unnamed() async {
-    addTestSource('''
-extension on String {
-  void something() => this.^
-}
-''');
-    await computeSuggestions();
-    assertNoSuggestions();
-  }
-}
diff --git a/pkg/analysis_server/test/services/completion/dart/static_member_contributor_test.dart b/pkg/analysis_server/test/services/completion/dart/static_member_contributor_test.dart
index dae0842..ba32930 100644
--- a/pkg/analysis_server/test/services/completion/dart/static_member_contributor_test.dart
+++ b/pkg/analysis_server/test/services/completion/dart/static_member_contributor_test.dart
@@ -4,7 +4,6 @@
 
 import 'package:analysis_server/src/provisional/completion/dart/completion_dart.dart';
 import 'package:analysis_server/src/services/completion/dart/static_member_contributor.dart';
-import 'package:analyzer/src/dart/analysis/experiments.dart';
 import 'package:test/test.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
@@ -13,7 +12,6 @@
 void main() {
   defineReflectiveSuite(() {
     defineReflectiveTests(StaticMemberContributorTest);
-    defineReflectiveTests(StaticMemberContributorWithExtensionMethodsTest);
   });
 }
 
@@ -96,6 +94,20 @@
     assertSuggestField('values', 'List<E>', isDeprecated: true);
   }
 
+  Future<void> test_extension() async {
+    addTestSource('''
+extension E on Object {
+  static int i;
+  static String s;
+}
+main() {E.^}
+''');
+    await computeSuggestions();
+    assertNotSuggested('E');
+    assertSuggestField('i', 'int');
+    assertSuggestField('s', 'String');
+  }
+
   Future<void> test_implicitCreation() async {
     addSource('/home/test/lib/a.dart', '''
 class A {
@@ -303,32 +315,3 @@
     assertNotSuggested('==');
   }
 }
-
-@reflectiveTest
-class StaticMemberContributorWithExtensionMethodsTest
-    extends DartCompletionContributorTest {
-  @override
-  DartCompletionContributor createContributor() {
-    return StaticMemberContributor();
-  }
-
-  @override
-  void setupResourceProvider() {
-    super.setupResourceProvider();
-    createAnalysisOptionsFile(experiments: [EnableString.extension_methods]);
-  }
-
-  Future<void> test_extension() async {
-    addTestSource('''
-extension E on Object {
-  static int i;
-  static String s;
-}
-main() {E.^}
-''');
-    await computeSuggestions();
-    assertNotSuggested('E');
-    assertSuggestField('i', 'int');
-    assertSuggestField('s', 'String');
-  }
-}
diff --git a/pkg/analysis_server/test/services/completion/dart/type_member_contributor_test.dart b/pkg/analysis_server/test/services/completion/dart/type_member_contributor_test.dart
index f5c8488..3d6bdb5 100644
--- a/pkg/analysis_server/test/services/completion/dart/type_member_contributor_test.dart
+++ b/pkg/analysis_server/test/services/completion/dart/type_member_contributor_test.dart
@@ -15,9 +15,6 @@
 void main() {
   defineReflectiveSuite(() {
     defineReflectiveTests(TypeMemberContributorTest);
-    defineReflectiveTests(TypeMemberContributorWithExtensionMethodsTest);
-    defineReflectiveTests(
-        TypeMemberContributorWithExtensionMethodsAndNewRelevanceTest);
     defineReflectiveTests(TypeMemberContributorWithNewRelevanceTest);
   });
 }
@@ -1743,6 +1740,20 @@
     assertNoSuggestions();
   }
 
+  Future<void> test_extensionOverride() async {
+    addTestSource('''
+extension E on int {
+  int get foo => 0;
+}
+
+void f() {
+  E(1).^
+}
+''');
+    await computeSuggestions();
+    assertNotSuggested('toString');
+  }
+
   Future<void> test_FieldDeclaration_name_typed() async {
     // SimpleIdentifier  VariableDeclaration  VariableDeclarationList
     // FieldDeclaration
@@ -3127,6 +3138,17 @@
     assertHasNoParameterInfo(suggestion);
   }
 
+  Future<void> test_no_parameters_setter2() async {
+    addTestSource('''
+class C {
+  set x() {};
+}
+void main() {int y = new C().^}''');
+    await computeSuggestions();
+    var suggestion = assertSuggestSetter('x');
+    assertHasNoParameterInfo(suggestion);
+  }
+
   Future<void> test_only_instance() async {
     // SimpleIdentifier  PropertyAccess  ExpressionStatement
     addTestSource('''
@@ -4225,42 +4247,6 @@
 }
 
 @reflectiveTest
-class TypeMemberContributorWithExtensionMethodsAndNewRelevanceTest
-    extends TypeMemberContributorWithExtensionMethodsTest {
-  @override
-  bool get useNewRelevance => true;
-}
-
-@reflectiveTest
-class TypeMemberContributorWithExtensionMethodsTest
-    extends DartCompletionContributorTest {
-  @override
-  DartCompletionContributor createContributor() {
-    return TypeMemberContributor();
-  }
-
-  @override
-  void setUp() {
-    createAnalysisOptionsFile(experiments: ['extension-methods']);
-    super.setUp();
-  }
-
-  Future<void> test_extensionOverride() async {
-    addTestSource('''
-extension E on int {
-  int get foo => 0;
-}
-
-void f() {
-  E(1).^
-}
-''');
-    await computeSuggestions();
-    assertNotSuggested('toString');
-  }
-}
-
-@reflectiveTest
 class TypeMemberContributorWithNewRelevanceTest
     extends TypeMemberContributorTest {
   @override
diff --git a/pkg/analysis_server/test/services/correction/sort_members_test.dart b/pkg/analysis_server/test/services/correction/sort_members_test.dart
index 81b2afb..4501f63 100644
--- a/pkg/analysis_server/test/services/correction/sort_members_test.dart
+++ b/pkg/analysis_server/test/services/correction/sort_members_test.dart
@@ -654,7 +654,6 @@
   }
 
   Future<void> test_unitMembers_extensionClass() async {
-    createAnalysisOptionsFile(experiments: ['extension-methods']);
     await _parseTestUnit(r'''
 extension E on C {}
 class C {}
@@ -667,7 +666,6 @@
   }
 
   Future<void> test_unitMembers_extensions() async {
-    createAnalysisOptionsFile(experiments: ['extension-methods']);
     await _parseTestUnit(r'''
 extension E2 on String {}
 extension on List {}
diff --git a/pkg/analysis_server/test/services/refactoring/rename_extension_member_test.dart b/pkg/analysis_server/test/services/refactoring/rename_extension_member_test.dart
index c61686d..696000e 100644
--- a/pkg/analysis_server/test/services/refactoring/rename_extension_member_test.dart
+++ b/pkg/analysis_server/test/services/refactoring/rename_extension_member_test.dart
@@ -16,12 +16,6 @@
 
 @reflectiveTest
 class RenameExtensionMemberTest extends RenameRefactoringTest {
-  @override
-  void setUp() {
-    createAnalysisOptionsFile(experiments: ['extension-methods']);
-    super.setUp();
-  }
-
   Future<void> test_checkFinalConditions_hasMember_MethodElement() async {
     await indexTestUnit('''
 extension E on int {
diff --git a/pkg/analysis_server/test/src/cider/completion_test.dart b/pkg/analysis_server/test/src/cider/completion_test.dart
index 9aedd3f..c83ac3b 100644
--- a/pkg/analysis_server/test/src/cider/completion_test.dart
+++ b/pkg/analysis_server/test/src/cider/completion_test.dart
@@ -32,34 +32,7 @@
   }
 
   Future<void> test_compute() async {
-    var context = _updateFile(r'''
-class A {}
-
-int a = 0;
-
-main(int b) {
-  int c = 0;
-  ^
-}
-''');
-
-    // ignore: deprecated_member_use_from_same_package
-    _suggestions = await _newComputer().compute(
-      convertPath(testPath),
-      context.offset,
-    );
-
-    _assertHasCompletion(text: 'a');
-    _assertHasCompletion(text: 'b');
-    _assertHasCompletion(text: 'c');
-    _assertHasClass(text: 'A');
-    _assertHasClass(text: 'String');
-
-    _assertNoClass(text: 'Random');
-  }
-
-  Future<void> test_compute2() async {
-    await _compute2(r'''
+    await _compute(r'''
 class A {}
 
 int a = 0;
@@ -79,9 +52,31 @@
     _assertNoClass(text: 'Random');
   }
 
-  Future<void> test_compute2_sameSignature_sameResult() async {
-    _createFileResolver();
-    await _compute2(r'''
+  Future<void> test_compute_prefixStart_hasPrefix() async {
+    await _compute('''
+class A {
+  String foobar;
+}
+
+main(A a) {
+  a.foo^
+}
+''');
+    expect(_completionResult.prefixStart.line, 5);
+    expect(_completionResult.prefixStart.column, 4);
+  }
+
+  Future<void> test_compute_prefixStart_noPrefix() async {
+    await _compute(r'''
+import 'dart:math';
+^
+''');
+    expect(_completionResult.prefixStart.line, 1);
+    expect(_completionResult.prefixStart.column, 0);
+  }
+
+  Future<void> test_compute_sameSignature_sameResult() async {
+    await _compute(r'''
 var a = ^;
 ''');
     var lastResult = _completionResult;
@@ -89,15 +84,13 @@
     // Ask for completion using new resolver and computer.
     // But the file signature is the same, so the same result.
     _createFileResolver();
-    await _compute2(r'''
+    await _compute(r'''
 var a = ^;
 ''');
     expect(_completionResult, same(lastResult));
   }
 
-  Future<void> test_compute2_updateImportedLibrary() async {
-    var corePath = convertPath('/sdk/lib/core/core.dart');
-
+  Future<void> test_compute_updateImportedLibrary() async {
     var aPath = convertPath('/workspace/dart/test/lib/a.dart');
     newFile(aPath, content: r'''
 class A {}
@@ -108,14 +101,13 @@
 ^
 ''';
 
-    _createFileResolver();
-    await _compute2(content);
-    _assertComputedImportedLibraries([corePath, aPath]);
+    await _compute(content);
+    _assertComputedImportedLibraries([aPath], hasCore: true);
     _assertHasClass(text: 'A');
 
     // Repeat the query, still has 'A'.
     _createFileResolver();
-    await _compute2(content);
+    await _compute(content);
     _assertComputedImportedLibraries([]);
     _assertHasClass(text: 'A');
 
@@ -124,30 +116,27 @@
 class B {}
 ''');
     _createFileResolver();
-    await _compute2(content);
+    await _compute(content);
     _assertComputedImportedLibraries([aPath]);
     _assertHasClass(text: 'B');
     _assertNoClass(text: 'A');
   }
 
-  Future<void> test_compute2_updateImports() async {
-    var corePath = convertPath('/sdk/lib/core/core.dart');
-
+  Future<void> test_compute_updateImports() async {
     var aPath = convertPath('/workspace/dart/test/lib/a.dart');
     newFile(aPath, content: r'''
 class A {}
 ''');
 
-    _createFileResolver();
-    await _compute2(r'''
+    await _compute(r'''
 var a = ^;
 ''');
-    _assertComputedImportedLibraries([corePath]);
+    _assertComputedImportedLibraries([], hasCore: true);
     _assertHasClass(text: 'String');
 
     // Repeat the query, still has 'A'.
     _createFileResolver();
-    await _compute2(r'''
+    await _compute(r'''
 import 'a.dart';
 var a = ^;
 ''');
@@ -157,7 +146,7 @@
   }
 
   Future<void> test_filterSort_byPattern_excludeNotMatching() async {
-    await _compute2(r'''
+    await _compute(r'''
 var a = F^;
 ''');
 
@@ -166,7 +155,7 @@
   }
 
   Future<void> test_filterSort_byPattern_location_beforeMethod() async {
-    await _compute2(r'''
+    await _compute(r'''
 class A {
   F^
   void foo() {}
@@ -178,7 +167,7 @@
   }
 
   Future<void> test_filterSort_byPattern_location_functionReturnType() async {
-    await _compute2(r'''
+    await _compute(r'''
 F^ foo() {}
 ''');
 
@@ -187,7 +176,7 @@
   }
 
   Future<void> test_filterSort_byPattern_location_methodReturnType() async {
-    await _compute2(r'''
+    await _compute(r'''
 class A {
   F^ foo() {}
 }
@@ -198,7 +187,7 @@
   }
 
   Future<void> test_filterSort_byPattern_location_parameterType() async {
-    await _compute2(r'''
+    await _compute(r'''
 void foo(F^ a) {}
 ''');
 
@@ -207,7 +196,7 @@
   }
 
   Future<void> test_filterSort_byPattern_location_parameterType2() async {
-    await _compute2(r'''
+    await _compute(r'''
 void foo(^a) {}
 ''');
 
@@ -216,7 +205,7 @@
   }
 
   Future<void> test_filterSort_byPattern_location_statement() async {
-    await _compute2(r'''
+    await _compute(r'''
 main() {
   F^
   0;
@@ -228,7 +217,7 @@
   }
 
   Future<void> test_filterSort_byPattern_preferPrefix() async {
-    await _compute2(r'''
+    await _compute(r'''
 class Foobar {}
 class Falcon {}
 var a = Fo^;
@@ -241,7 +230,7 @@
   }
 
   Future<void> test_filterSort_preferLocal() async {
-    await _compute2(r'''
+    await _compute(r'''
 var a = 0;
 main() {
   var b = 0;
@@ -256,7 +245,7 @@
   }
 
   Future<void> test_filterSort_sortByName() async {
-    await _compute2(r'''
+    await _compute(r'''
 main() {
   var a = 0;
   var b = 0;
@@ -270,8 +259,17 @@
     ]);
   }
 
-  void _assertComputedImportedLibraries(List<String> expected) {
+  void _assertComputedImportedLibraries(
+    List<String> expected, {
+    bool hasCore = false,
+  }) {
     expected = expected.map(convertPath).toList();
+
+    if (hasCore) {
+      var corePath = convertPath('/sdk/lib/core/core.dart');
+      expected.add(corePath);
+    }
+
     expect(
       _computer.computedImportedLibraries,
       unorderedEquals(expected),
@@ -336,10 +334,10 @@
     }
   }
 
-  Future _compute2(String content) async {
+  Future _compute(String content) async {
     var context = _updateFile(content);
 
-    _completionResult = await _newComputer().compute2(
+    _completionResult = await _newComputer().compute(
       path: convertPath(testPath),
       line: context.line,
       column: context.character,
diff --git a/pkg/analysis_server/test/src/computer/highlights2_computer_test.dart b/pkg/analysis_server/test/src/computer/highlights2_computer_test.dart
index 922c42e..5ae859f 100644
--- a/pkg/analysis_server/test/src/computer/highlights2_computer_test.dart
+++ b/pkg/analysis_server/test/src/computer/highlights2_computer_test.dart
@@ -30,7 +30,6 @@
   }
 
   Future<void> test_extension() async {
-    createAnalysisOptionsFile(experiments: ['extension-methods']);
     await _computeHighlights('''
 extension E on String {}
 ''');
@@ -39,7 +38,6 @@
   }
 
   Future<void> test_methodInvocation_ofExtensionOverride_unresolved() async {
-    createAnalysisOptionsFile(experiments: ['extension-methods']);
     await _computeHighlights('''
 extension E on int {}
 
diff --git a/pkg/analysis_server/test/src/computer/highlights_computer_test.dart b/pkg/analysis_server/test/src/computer/highlights_computer_test.dart
index f145825..e6c5879 100644
--- a/pkg/analysis_server/test/src/computer/highlights_computer_test.dart
+++ b/pkg/analysis_server/test/src/computer/highlights_computer_test.dart
@@ -30,7 +30,6 @@
   }
 
   Future<void> test_extension() async {
-    createAnalysisOptionsFile(experiments: ['extension-methods']);
     await _computeHighlights('''
 extension E on String {}
 ''');
@@ -39,7 +38,6 @@
   }
 
   Future<void> test_methodInvocation_ofExtensionOverride_unresolved() async {
-    createAnalysisOptionsFile(experiments: ['extension-methods']);
     await _computeHighlights('''
 extension E on int {}
 
diff --git a/pkg/analysis_server/test/src/computer/outline_computer_test.dart b/pkg/analysis_server/test/src/computer/outline_computer_test.dart
index 8113eed..48985ee 100644
--- a/pkg/analysis_server/test/src/computer/outline_computer_test.dart
+++ b/pkg/analysis_server/test/src/computer/outline_computer_test.dart
@@ -5,7 +5,6 @@
 import 'dart:async';
 
 import 'package:analysis_server/src/computer/computer_outline.dart';
-import 'package:analyzer/src/dart/analysis/experiments.dart';
 import 'package:analyzer_plugin/protocol/protocol_common.dart';
 import 'package:meta/meta.dart';
 import 'package:test/test.dart';
@@ -415,7 +414,6 @@
   }
 
   Future<void> test_extension_named() async {
-    createAnalysisOptionsFile(experiments: [EnableString.extension_methods]);
     var unitOutline = await _computeOutline('''
 extension MyExt on String {
   int get halfLength => length ~/ 2;
@@ -446,7 +444,6 @@
   }
 
   Future<void> test_extension_unnamed() async {
-    createAnalysisOptionsFile(experiments: [EnableString.extension_methods]);
     var unitOutline = await _computeOutline('''
 extension on String {
   int get halfLength => length ~/ 2;
diff --git a/pkg/analysis_server/test/src/edit/fix/non_nullable_fix_test.dart b/pkg/analysis_server/test/src/edit/fix/non_nullable_fix_test.dart
index 62068dc..658b309 100644
--- a/pkg/analysis_server/test/src/edit/fix/non_nullable_fix_test.dart
+++ b/pkg/analysis_server/test/src/edit/fix/non_nullable_fix_test.dart
@@ -72,12 +72,13 @@
   }
 
   Future<void> test_included_multipleRelativeDirectories() async {
-    var fix = NonNullableFix(listener, included: ['lib', 'test']);
+    var fix =
+        NonNullableFix(listener, resourceProvider, included: ['lib', 'test']);
     expect(fix.includedRoot, equals(convertPath('/project')));
   }
 
   Future<void> test_included_multipleRelativeDirectories_nonCanonical() async {
-    var fix = NonNullableFix(listener, included: [
+    var fix = NonNullableFix(listener, resourceProvider, included: [
       convertPath('../project2/lib'),
       convertPath('../project2/lib/src')
     ]);
@@ -86,7 +87,7 @@
 
   Future<void>
       test_included_multipleRelativeDirectories_nonCanonical_atRoot() async {
-    var fix = NonNullableFix(listener, included: [
+    var fix = NonNullableFix(listener, resourceProvider, included: [
       convertPath('../project2/lib'),
       convertPath('../project/lib')
     ]);
@@ -95,12 +96,13 @@
 
   Future<void>
       test_included_multipleRelativeDirectories_subAndSuperDirectories() async {
-    var fix = NonNullableFix(listener, included: ['lib', '.']);
+    var fix =
+        NonNullableFix(listener, resourceProvider, included: ['lib', '.']);
     expect(fix.includedRoot, equals(convertPath('/project')));
   }
 
   Future<void> test_included_multipleRelativeFiles() async {
-    var fix = NonNullableFix(listener, included: [
+    var fix = NonNullableFix(listener, resourceProvider, included: [
       convertPath('lib/lib1.dart'),
       convertPath('test/test.dart')
     ]);
@@ -108,13 +110,13 @@
   }
 
   Future<void> test_included_multipleRelativeFiles_sameDirectory() async {
-    var fix = NonNullableFix(listener,
+    var fix = NonNullableFix(listener, resourceProvider,
         included: [convertPath('lib/lib1.dart'), convertPath('lib/lib2.dart')]);
     expect(fix.includedRoot, equals(convertPath('/project/lib')));
   }
 
   Future<void> test_included_multipleRelativeFilesAndDirectories() async {
-    var fix = NonNullableFix(listener, included: [
+    var fix = NonNullableFix(listener, resourceProvider, included: [
       convertPath('lib/lib1.dart'),
       convertPath('lib/src'),
       convertPath('../project/lib/src/lib3.dart')
@@ -123,18 +125,19 @@
   }
 
   Future<void> test_included_singleAbsoluteDirectory() async {
-    var fix = NonNullableFix(listener, included: [convertPath('/project')]);
+    var fix = NonNullableFix(listener, resourceProvider,
+        included: [convertPath('/project')]);
     expect(fix.includedRoot, equals(convertPath('/project')));
   }
 
   Future<void> test_included_singleAbsoluteFile() async {
-    var fix = NonNullableFix(listener,
+    var fix = NonNullableFix(listener, resourceProvider,
         included: [convertPath('/project/bin/bin.dart')]);
     expect(fix.includedRoot, equals(convertPath('/project/bin')));
   }
 
   Future<void> test_included_singleRelativeDirectory() async {
-    var fix = NonNullableFix(listener, included: ['.']);
+    var fix = NonNullableFix(listener, resourceProvider, included: ['.']);
     expect(fix.includedRoot, equals(convertPath('/project')));
   }
 }
diff --git a/pkg/analysis_server/test/src/services/correction/assist/convert_to_if_element_test.dart b/pkg/analysis_server/test/src/services/correction/assist/convert_to_if_element_test.dart
index be17326..f59eb2a 100644
--- a/pkg/analysis_server/test/src/services/correction/assist/convert_to_if_element_test.dart
+++ b/pkg/analysis_server/test/src/services/correction/assist/convert_to_if_element_test.dart
@@ -4,7 +4,6 @@
 
 import 'package:analysis_server/src/services/correction/assist.dart';
 import 'package:analysis_server/src/services/linter/lint_names.dart';
-import 'package:analyzer/src/dart/analysis/experiments.dart';
 import 'package:analyzer_plugin/utilities/assist/assist.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
@@ -21,13 +20,6 @@
   @override
   AssistKind get kind => DartAssistKind.CONVERT_TO_IF_ELEMENT;
 
-  @override
-  void setUp() {
-    createAnalysisOptionsFile(
-        experiments: [EnableString.control_flow_collections]);
-    super.setUp();
-  }
-
   Future<void> test_conditional_list() async {
     await resolveTestUnit('''
 f(bool b) {
diff --git a/pkg/analysis_server/test/src/services/correction/assist/convert_to_spread_test.dart b/pkg/analysis_server/test/src/services/correction/assist/convert_to_spread_test.dart
index 7a8b12d..e577bef 100644
--- a/pkg/analysis_server/test/src/services/correction/assist/convert_to_spread_test.dart
+++ b/pkg/analysis_server/test/src/services/correction/assist/convert_to_spread_test.dart
@@ -4,7 +4,6 @@
 
 import 'package:analysis_server/src/services/correction/assist.dart';
 import 'package:analysis_server/src/services/linter/lint_names.dart';
-import 'package:analyzer/src/dart/analysis/experiments.dart';
 import 'package:analyzer_plugin/utilities/assist/assist.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
@@ -13,7 +12,6 @@
 void main() {
   defineReflectiveSuite(() {
     defineReflectiveTests(ConvertToSpreadTest);
-    defineReflectiveTests(ConvertToSpreadWithControlFlowTest);
   });
 }
 
@@ -22,10 +20,30 @@
   @override
   AssistKind get kind => DartAssistKind.CONVERT_TO_SPREAD;
 
-  @override
-  void setUp() {
-    createAnalysisOptionsFile(experiments: [EnableString.spread_collections]);
-    super.setUp();
+  Future<void> test_addAll_condition_const() async {
+    await resolveTestUnit('''
+bool condition;
+var things;
+var l = ['a']..add/*caret*/All(condition ? things : const []);
+''');
+    await assertHasAssist('''
+bool condition;
+var things;
+var l = ['a', if (condition) ...things];
+''');
+  }
+
+  Future<void> test_addAll_condition_nonConst() async {
+    await resolveTestUnit('''
+bool condition;
+var things;
+var l = ['a']..add/*caret*/All(condition ? things : []);
+''');
+    await assertHasAssist('''
+bool condition;
+var things;
+var l = ['a', if (condition) ...things];
+''');
   }
 
   Future<void> test_addAll_expression() async {
@@ -115,44 +133,3 @@
 ''');
   }
 }
-
-@reflectiveTest
-class ConvertToSpreadWithControlFlowTest extends AssistProcessorTest {
-  @override
-  AssistKind get kind => DartAssistKind.CONVERT_TO_SPREAD;
-
-  @override
-  void setUp() {
-    createAnalysisOptionsFile(experiments: [
-      EnableString.control_flow_collections,
-      EnableString.spread_collections
-    ]);
-    super.setUp();
-  }
-
-  Future<void> test_addAll_condition_const() async {
-    await resolveTestUnit('''
-bool condition;
-var things;
-var l = ['a']..add/*caret*/All(condition ? things : const []);
-''');
-    await assertHasAssist('''
-bool condition;
-var things;
-var l = ['a', if (condition) ...things];
-''');
-  }
-
-  Future<void> test_addAll_condition_nonConst() async {
-    await resolveTestUnit('''
-bool condition;
-var things;
-var l = ['a']..add/*caret*/All(condition ? things : []);
-''');
-    await assertHasAssist('''
-bool condition;
-var things;
-var l = ['a', if (condition) ...things];
-''');
-  }
-}
diff --git a/pkg/analysis_server/test/src/services/correction/assist/inline_invocation_test.dart b/pkg/analysis_server/test/src/services/correction/assist/inline_invocation_test.dart
index d013c1e..f00cf69 100644
--- a/pkg/analysis_server/test/src/services/correction/assist/inline_invocation_test.dart
+++ b/pkg/analysis_server/test/src/services/correction/assist/inline_invocation_test.dart
@@ -4,7 +4,6 @@
 
 import 'package:analysis_server/src/services/correction/assist.dart';
 import 'package:analysis_server/src/services/linter/lint_names.dart';
-import 'package:analyzer/src/dart/analysis/experiments.dart';
 import 'package:analyzer_plugin/utilities/assist/assist.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
@@ -21,12 +20,6 @@
   @override
   AssistKind get kind => DartAssistKind.INLINE_INVOCATION;
 
-  @override
-  void setUp() {
-    createAnalysisOptionsFile(experiments: [EnableString.spread_collections]);
-    super.setUp();
-  }
-
   Future<void> test_add_emptyTarget() async {
     await resolveTestUnit('''
 var l = []..ad/*caret*/d('a')..add('b');
diff --git a/pkg/analysis_server/test/src/services/correction/assist/shadow_field_test.dart b/pkg/analysis_server/test/src/services/correction/assist/shadow_field_test.dart
index c6bfb62..d4c1df0 100644
--- a/pkg/analysis_server/test/src/services/correction/assist/shadow_field_test.dart
+++ b/pkg/analysis_server/test/src/services/correction/assist/shadow_field_test.dart
@@ -3,6 +3,7 @@
 // BSD-style license that can be found in the LICENSE file.
 
 import 'package:analysis_server/src/services/correction/assist.dart';
+import 'package:analyzer/src/dart/analysis/experiments.dart';
 import 'package:analyzer_plugin/utilities/assist/assist.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
@@ -109,12 +110,9 @@
 @reflectiveTest
 class ShadowFieldWithNNBDTest extends ShadowFieldTest {
   @override
-  AssistKind get kind => DartAssistKind.SHADOW_FIELD;
-
-  @override
   void setUp() {
     super.setUp();
-    createAnalysisOptionsFile(experiments: ['non-nullable']);
+    createAnalysisOptionsFile(experiments: [EnableString.non_nullable]);
   }
 
   Future<void> test_notNull() async {
diff --git a/pkg/analysis_server/test/src/services/correction/fix/add_required_test.dart b/pkg/analysis_server/test/src/services/correction/fix/add_required_test.dart
index 14fdb0d..c45b6ca 100644
--- a/pkg/analysis_server/test/src/services/correction/fix/add_required_test.dart
+++ b/pkg/analysis_server/test/src/services/correction/fix/add_required_test.dart
@@ -4,6 +4,7 @@
 
 import 'package:analysis_server/src/services/correction/fix.dart';
 import 'package:analysis_server/src/services/linter/lint_names.dart';
+import 'package:analyzer/src/dart/analysis/experiments.dart';
 import 'package:analyzer_plugin/utilities/fixes/fixes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
@@ -41,7 +42,7 @@
 @reflectiveTest
 class AddRequiredWithNNBDTest extends FixProcessorTest {
   @override
-  List<String> get experiments => ['non-nullable'];
+  List<String> get experiments => [EnableString.non_nullable];
 
   @override
   FixKind get kind => DartFixKind.ADD_REQUIRED2;
diff --git a/pkg/analysis_server/test/src/services/correction/fix/change_to_static_access_test.dart b/pkg/analysis_server/test/src/services/correction/fix/change_to_static_access_test.dart
index 0011642..ab9e0af 100644
--- a/pkg/analysis_server/test/src/services/correction/fix/change_to_static_access_test.dart
+++ b/pkg/analysis_server/test/src/services/correction/fix/change_to_static_access_test.dart
@@ -11,7 +11,6 @@
 void main() {
   defineReflectiveSuite(() {
     defineReflectiveTests(ChangeToStaticAccessClassTest);
-    defineReflectiveTests(ChangeToStaticAccessExtensionTest);
   });
 }
 
@@ -39,6 +38,25 @@
 ''');
   }
 
+  Future<void> test_method_extension() async {
+    await resolveTestUnit('''
+extension E on int {
+  static void foo() {}
+}
+main() {
+  0.foo();
+}
+''');
+    await assertHasFix('''
+extension E on int {
+  static void foo() {}
+}
+main() {
+  E.foo();
+}
+''');
+  }
+
   Future<void> test_method_importType() async {
     addSource('/home/test/lib/a.dart', r'''
 class A {
@@ -101,6 +119,26 @@
 ''');
   }
 
+  @failingTest
+  Future<void> test_property_extension() async {
+    await resolveTestUnit('''
+extension E on int {
+  static int get foo => 42;
+}
+main() {
+  0.foo;
+}
+''');
+    await assertHasFix('''
+extension E on int {
+  static int get foo => 42;
+}
+main() {
+  E.foo;
+}
+''');
+  }
+
   Future<void> test_property_importType() async {
     addSource('/home/test/lib/a.dart', r'''
 class A {
@@ -129,50 +167,3 @@
 ''');
   }
 }
-
-@reflectiveTest
-class ChangeToStaticAccessExtensionTest extends FixProcessorTest {
-  @override
-  FixKind get kind => DartFixKind.CHANGE_TO_STATIC_ACCESS;
-
-  Future<void> test_method() async {
-    createAnalysisOptionsFile(experiments: ['extension-methods']);
-    await resolveTestUnit('''
-extension E on int {
-  static void foo() {}
-}
-main() {
-  0.foo();
-}
-''');
-    await assertHasFix('''
-extension E on int {
-  static void foo() {}
-}
-main() {
-  E.foo();
-}
-''');
-  }
-
-  @failingTest
-  Future<void> test_property() async {
-    createAnalysisOptionsFile(experiments: ['extension-methods']);
-    await resolveTestUnit('''
-extension E on int {
-  static int get foo => 42;
-}
-main() {
-  0.foo;
-}
-''');
-    await assertHasFix('''
-extension E on int {
-  static int get foo => 42;
-}
-main() {
-  E.foo;
-}
-''');
-  }
-}
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 a91fc11..86fe994 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
@@ -11,7 +11,6 @@
 void main() {
   defineReflectiveSuite(() {
     defineReflectiveTests(ChangeToTest);
-    defineReflectiveTests(ChangeToWithExtensionMethodsTest);
   });
 }
 
@@ -143,6 +142,25 @@
 ''');
   }
 
+  Future<void> test_getter_override() async {
+    await resolveTestUnit('''
+extension E on int {
+  int get myGetter => 0;
+}
+void f() {
+  E(1).myGeter;
+}
+''');
+    await assertHasFix('''
+extension E on int {
+  int get myGetter => 0;
+}
+void f() {
+  E(1).myGetter;
+}
+''');
+  }
+
   Future<void> test_getter_qualified() async {
     await resolveTestUnit('''
 class A {
@@ -181,6 +199,25 @@
 ''');
   }
 
+  Future<void> test_getter_static() async {
+    await resolveTestUnit('''
+extension E on int {
+  static int get myGetter => 0;
+}
+void f() {
+  E.myGeter;
+}
+''');
+    await assertHasFix('''
+extension E on int {
+  static int get myGetter => 0;
+}
+void f() {
+  E.myGetter;
+}
+''');
+  }
+
   Future<void> test_getter_unqualified() async {
     await resolveTestUnit('''
 class A {
@@ -209,6 +246,25 @@
     await assertNoFix();
   }
 
+  Future<void> test_method_override() async {
+    await resolveTestUnit('''
+extension E on int {
+  int myMethod() => 0;
+}
+void f() {
+  E(1).myMetod();
+}
+''');
+    await assertHasFix('''
+extension E on int {
+  int myMethod() => 0;
+}
+void f() {
+  E(1).myMethod();
+}
+''');
+  }
+
   Future<void> test_method_qualified() async {
     await resolveTestUnit('''
 class A {
@@ -230,6 +286,25 @@
 ''');
   }
 
+  Future<void> test_method_static() async {
+    await resolveTestUnit('''
+extension E on int {
+  static int myMethod() => 0;
+}
+void f() {
+  E.myMetod();
+}
+''');
+    await assertHasFix('''
+extension E on int {
+  static int myMethod() => 0;
+}
+void f() {
+  E.myMethod();
+}
+''');
+  }
+
   Future<void> test_method_unqualified_superClass() async {
     await resolveTestUnit('''
 class A {
@@ -293,132 +368,6 @@
 ''');
   }
 
-  Future<void> test_setter_qualified() async {
-    await resolveTestUnit('''
-class A {
-  int myField;
-}
-main(A a) {
-  a.myFild = 42;
-}
-''');
-    await assertHasFix('''
-class A {
-  int myField;
-}
-main(A a) {
-  a.myField = 42;
-}
-''');
-  }
-
-  Future<void> test_setter_unqualified() async {
-    await resolveTestUnit('''
-class A {
-  int myField;
-  main() {
-    myFild = 42;
-  }
-}
-''');
-    await assertHasFix('''
-class A {
-  int myField;
-  main() {
-    myField = 42;
-  }
-}
-''');
-  }
-}
-
-@reflectiveTest
-class ChangeToWithExtensionMethodsTest extends FixProcessorTest {
-  @override
-  FixKind get kind => DartFixKind.CHANGE_TO;
-
-  @override
-  void setUp() {
-    createAnalysisOptionsFile(experiments: ['extension-methods']);
-    super.setUp();
-  }
-
-  Future<void> test_getter_override() async {
-    await resolveTestUnit('''
-extension E on int {
-  int get myGetter => 0;
-}
-void f() {
-  E(1).myGeter;
-}
-''');
-    await assertHasFix('''
-extension E on int {
-  int get myGetter => 0;
-}
-void f() {
-  E(1).myGetter;
-}
-''');
-  }
-
-  Future<void> test_getter_static() async {
-    await resolveTestUnit('''
-extension E on int {
-  static int get myGetter => 0;
-}
-void f() {
-  E.myGeter;
-}
-''');
-    await assertHasFix('''
-extension E on int {
-  static int get myGetter => 0;
-}
-void f() {
-  E.myGetter;
-}
-''');
-  }
-
-  Future<void> test_method_override() async {
-    await resolveTestUnit('''
-extension E on int {
-  int myMethod() => 0;
-}
-void f() {
-  E(1).myMetod();
-}
-''');
-    await assertHasFix('''
-extension E on int {
-  int myMethod() => 0;
-}
-void f() {
-  E(1).myMethod();
-}
-''');
-  }
-
-  Future<void> test_method_static() async {
-    await resolveTestUnit('''
-extension E on int {
-  static int myMethod() => 0;
-}
-void f() {
-  E.myMetod();
-}
-''');
-    await assertHasFix('''
-extension E on int {
-  static int myMethod() => 0;
-}
-void f() {
-  E.myMethod();
-}
-''');
-  }
-
   Future<void> test_setter_override() async {
     await resolveTestUnit('''
 extension E on int {
@@ -438,6 +387,25 @@
 ''');
   }
 
+  Future<void> test_setter_qualified() async {
+    await resolveTestUnit('''
+class A {
+  int myField;
+}
+main(A a) {
+  a.myFild = 42;
+}
+''');
+    await assertHasFix('''
+class A {
+  int myField;
+}
+main(A a) {
+  a.myField = 42;
+}
+''');
+  }
+
   Future<void> test_setter_static() async {
     await resolveTestUnit('''
 extension E on int {
@@ -456,4 +424,23 @@
 }
 ''');
   }
+
+  Future<void> test_setter_unqualified() async {
+    await resolveTestUnit('''
+class A {
+  int myField;
+  main() {
+    myFild = 42;
+  }
+}
+''');
+    await assertHasFix('''
+class A {
+  int myField;
+  main() {
+    myField = 42;
+  }
+}
+''');
+  }
 }
diff --git a/pkg/analysis_server/test/src/services/correction/fix/create_getter_test.dart b/pkg/analysis_server/test/src/services/correction/fix/create_getter_test.dart
index 5d0f6e8..b3e1fe2 100644
--- a/pkg/analysis_server/test/src/services/correction/fix/create_getter_test.dart
+++ b/pkg/analysis_server/test/src/services/correction/fix/create_getter_test.dart
@@ -13,7 +13,6 @@
   defineReflectiveSuite(() {
     defineReflectiveTests(CreateGetterTest);
     defineReflectiveTests(CreateGetterMixinTest);
-    defineReflectiveTests(CreateGetterWithExtensionMethodsTest);
   });
 }
 
@@ -114,6 +113,36 @@
     await assertNoFix();
   }
 
+  Future<void> test_internal_instance() async {
+    await resolveTestUnit('''
+extension E on String {
+  int m()  => g;
+}
+''');
+    await assertHasFix('''
+extension E on String {
+  get g => null;
+
+  int m()  => g;
+}
+''');
+  }
+
+  Future<void> test_internal_static() async {
+    await resolveTestUnit('''
+extension E on String {
+  static int m()  => g;
+}
+''');
+    await assertHasFix('''
+extension E on String {
+  static get g => null;
+
+  static int m()  => g;
+}
+''');
+  }
+
   Future<void> test_location_afterLastGetter() async {
     await resolveTestUnit('''
 class A {
@@ -177,6 +206,28 @@
 ''');
   }
 
+  Future<void> test_override() async {
+    await resolveTestUnit('''
+extension E on String {
+}
+
+main(String s) {
+  int v = E(s).test;
+  print(v);
+}
+''');
+    await assertHasFix('''
+extension E on String {
+  int get test => null;
+}
+
+main(String s) {
+  int v = E(s).test;
+  print(v);
+}
+''');
+  }
+
   Future<void> test_qualified_instance() async {
     await resolveTestUnit('''
 class A {
@@ -326,6 +377,28 @@
     await assertNoFix();
   }
 
+  Future<void> test_static() async {
+    await resolveTestUnit('''
+extension E on String {
+}
+
+main(String s) {
+  int v = E.test;
+  print(v);
+}
+''');
+    await assertHasFix('''
+extension E on String {
+  static int get test => null;
+}
+
+main(String s) {
+  int v = E.test;
+  print(v);
+}
+''');
+  }
+
   Future<void> test_unqualified_instance_asInvocationArgument() async {
     await resolveTestUnit('''
 class A {
@@ -398,89 +471,3 @@
 ''');
   }
 }
-
-@reflectiveTest
-class CreateGetterWithExtensionMethodsTest extends FixProcessorTest {
-  @override
-  FixKind get kind => DartFixKind.CREATE_GETTER;
-
-  @override
-  void setUp() {
-    createAnalysisOptionsFile(experiments: ['extension-methods']);
-    super.setUp();
-  }
-
-  Future<void> test_internal_instance() async {
-    await resolveTestUnit('''
-extension E on String {
-  int m()  => g;
-}
-''');
-    await assertHasFix('''
-extension E on String {
-  get g => null;
-
-  int m()  => g;
-}
-''');
-  }
-
-  Future<void> test_internal_static() async {
-    await resolveTestUnit('''
-extension E on String {
-  static int m()  => g;
-}
-''');
-    await assertHasFix('''
-extension E on String {
-  static get g => null;
-
-  static int m()  => g;
-}
-''');
-  }
-
-  Future<void> test_override() async {
-    await resolveTestUnit('''
-extension E on String {
-}
-
-main(String s) {
-  int v = E(s).test;
-  print(v);
-}
-''');
-    await assertHasFix('''
-extension E on String {
-  int get test => null;
-}
-
-main(String s) {
-  int v = E(s).test;
-  print(v);
-}
-''');
-  }
-
-  Future<void> test_static() async {
-    await resolveTestUnit('''
-extension E on String {
-}
-
-main(String s) {
-  int v = E.test;
-  print(v);
-}
-''');
-    await assertHasFix('''
-extension E on String {
-  static int get test => null;
-}
-
-main(String s) {
-  int v = E.test;
-  print(v);
-}
-''');
-  }
-}
diff --git a/pkg/analysis_server/test/src/services/correction/fix/create_method_test.dart b/pkg/analysis_server/test/src/services/correction/fix/create_method_test.dart
index 318248c..d207559 100644
--- a/pkg/analysis_server/test/src/services/correction/fix/create_method_test.dart
+++ b/pkg/analysis_server/test/src/services/correction/fix/create_method_test.dart
@@ -15,7 +15,6 @@
     defineReflectiveTests(AddMissingHashOrEqualsTest);
     defineReflectiveTests(CreateMethodMixinTest);
     defineReflectiveTests(CreateMethodTest);
-    defineReflectiveTests(CreateMethodWithExtensionMethodsTest);
   });
 }
 
@@ -712,6 +711,55 @@
     await assertNoFix();
   }
 
+  Future<void> test_internal_instance() async {
+    await resolveTestUnit('''
+extension E on String {
+  int m() => n();
+}
+''');
+    await assertHasFix('''
+extension E on String {
+  int m() => n();
+
+  n() {}
+}
+''');
+  }
+
+  Future<void> test_internal_static() async {
+    await resolveTestUnit('''
+extension E on String {
+  static int m() => n();
+}
+''');
+    await assertHasFix('''
+extension E on String {
+  static int m() => n();
+
+  static n() {}
+}
+''');
+  }
+
+  Future<void> test_override() async {
+    await resolveTestUnit('''
+extension E on String {}
+
+void f() {
+  E('a').m();
+}
+''');
+    await assertHasFix('''
+extension E on String {
+  void m() {}
+}
+
+void f() {
+  E('a').m();
+}
+''');
+  }
+
   Future<void> test_parameterType_differentPrefixInTargetUnit() async {
     var code2 = r'''
 import 'test3.dart' as bbb;
@@ -770,77 +818,6 @@
 ''', target: '/home/test/lib/test2.dart');
   }
 
-  Future<void> test_targetIsEnum() async {
-    await resolveTestUnit('''
-enum MyEnum {A, B}
-main() {
-  MyEnum.foo();
-}
-''');
-    await assertNoFix();
-  }
-}
-
-@reflectiveTest
-class CreateMethodWithExtensionMethodsTest extends FixProcessorTest {
-  @override
-  FixKind get kind => DartFixKind.CREATE_METHOD;
-
-  @override
-  void setUp() {
-    createAnalysisOptionsFile(experiments: ['extension-methods']);
-    super.setUp();
-  }
-
-  Future<void> test_internal_instance() async {
-    await resolveTestUnit('''
-extension E on String {
-  int m() => n();
-}
-''');
-    await assertHasFix('''
-extension E on String {
-  int m() => n();
-
-  n() {}
-}
-''');
-  }
-
-  Future<void> test_internal_static() async {
-    await resolveTestUnit('''
-extension E on String {
-  static int m() => n();
-}
-''');
-    await assertHasFix('''
-extension E on String {
-  static int m() => n();
-
-  static n() {}
-}
-''');
-  }
-
-  Future<void> test_override() async {
-    await resolveTestUnit('''
-extension E on String {}
-
-void f() {
-  E('a').m();
-}
-''');
-    await assertHasFix('''
-extension E on String {
-  void m() {}
-}
-
-void f() {
-  E('a').m();
-}
-''');
-  }
-
   Future<void> test_static() async {
     await resolveTestUnit('''
 extension E on String {}
@@ -859,4 +836,14 @@
 }
 ''');
   }
+
+  Future<void> test_targetIsEnum() async {
+    await resolveTestUnit('''
+enum MyEnum {A, B}
+main() {
+  MyEnum.foo();
+}
+''');
+    await assertNoFix();
+  }
 }
diff --git a/pkg/analysis_server/test/src/services/correction/fix/create_setter_test.dart b/pkg/analysis_server/test/src/services/correction/fix/create_setter_test.dart
index 98216f6..5dc1260 100644
--- a/pkg/analysis_server/test/src/services/correction/fix/create_setter_test.dart
+++ b/pkg/analysis_server/test/src/services/correction/fix/create_setter_test.dart
@@ -13,7 +13,6 @@
   defineReflectiveSuite(() {
     defineReflectiveTests(CreateSetterTest);
     defineReflectiveTests(CreateSetterMixinTest);
-    defineReflectiveTests(CreateSetterWithExtensionMethodsTest);
   });
 }
 
@@ -118,6 +117,36 @@
     await assertNoFix();
   }
 
+  Future<void> test_internal_instance() async {
+    await resolveTestUnit('''
+extension E on String {
+  int m(int x) => s = x;
+}
+''');
+    await assertHasFix('''
+extension E on String {
+  set s(int s) {}
+
+  int m(int x) => s = x;
+}
+''');
+  }
+
+  Future<void> test_internal_static() async {
+    await resolveTestUnit('''
+extension E on String {
+  static int m(int x) => s = x;
+}
+''');
+    await assertHasFix('''
+extension E on String {
+  static set s(int s) {}
+
+  static int m(int x) => s = x;
+}
+''');
+  }
+
   Future<void> test_location_afterLastAccessor() async {
     await resolveTestUnit('''
 class A {
@@ -177,6 +206,26 @@
 ''');
   }
 
+  Future<void> test_override() async {
+    await resolveTestUnit('''
+extension E on String {
+}
+
+main(String s) {
+  E(s).test = '0';
+}
+''');
+    await assertHasFix('''
+extension E on String {
+  set test(String test) {}
+}
+
+main(String s) {
+  E(s).test = '0';
+}
+''');
+  }
+
   Future<void> test_qualified_instance() async {
     await resolveTestUnit('''
 class A {
@@ -308,6 +357,26 @@
 ''');
   }
 
+  Future<void> test_static() async {
+    await resolveTestUnit('''
+extension E on String {
+}
+
+main(String s) {
+  E.test = 0;
+}
+''');
+    await assertHasFix('''
+extension E on String {
+  static set test(int test) {}
+}
+
+main(String s) {
+  E.test = 0;
+}
+''');
+  }
+
   Future<void> test_unqualified_instance_assignmentLhs() async {
     await resolveTestUnit('''
 class A {
@@ -338,85 +407,3 @@
     await assertNoFix();
   }
 }
-
-@reflectiveTest
-class CreateSetterWithExtensionMethodsTest extends FixProcessorTest {
-  @override
-  FixKind get kind => DartFixKind.CREATE_SETTER;
-
-  @override
-  void setUp() {
-    createAnalysisOptionsFile(experiments: ['extension-methods']);
-    super.setUp();
-  }
-
-  Future<void> test_internal_instance() async {
-    await resolveTestUnit('''
-extension E on String {
-  int m(int x) => s = x;
-}
-''');
-    await assertHasFix('''
-extension E on String {
-  set s(int s) {}
-
-  int m(int x) => s = x;
-}
-''');
-  }
-
-  Future<void> test_internal_static() async {
-    await resolveTestUnit('''
-extension E on String {
-  static int m(int x) => s = x;
-}
-''');
-    await assertHasFix('''
-extension E on String {
-  static set s(int s) {}
-
-  static int m(int x) => s = x;
-}
-''');
-  }
-
-  Future<void> test_override() async {
-    await resolveTestUnit('''
-extension E on String {
-}
-
-main(String s) {
-  E(s).test = '0';
-}
-''');
-    await assertHasFix('''
-extension E on String {
-  set test(String test) {}
-}
-
-main(String s) {
-  E(s).test = '0';
-}
-''');
-  }
-
-  Future<void> test_static() async {
-    await resolveTestUnit('''
-extension E on String {
-}
-
-main(String s) {
-  E.test = 0;
-}
-''');
-    await assertHasFix('''
-extension E on String {
-  static set test(int test) {}
-}
-
-main(String s) {
-  E.test = 0;
-}
-''');
-  }
-}
diff --git a/pkg/analysis_server/test/src/services/correction/fix/import_library_prefix_test.dart b/pkg/analysis_server/test/src/services/correction/fix/import_library_prefix_test.dart
index d87f1e7..b5979a9 100644
--- a/pkg/analysis_server/test/src/services/correction/fix/import_library_prefix_test.dart
+++ b/pkg/analysis_server/test/src/services/correction/fix/import_library_prefix_test.dart
@@ -11,7 +11,6 @@
 void main() {
   defineReflectiveSuite(() {
     defineReflectiveTests(ImportLibraryPrefixTest);
-    defineReflectiveTests(ImportLibraryPrefixWithExtensionMethodsTest);
   });
 }
 
@@ -39,35 +38,6 @@
 ''');
   }
 
-  Future<void> test_withTopLevelVariable() async {
-    await resolveTestUnit('''
-import 'dart:math' as pref;
-main() {
-  print(pref.E);
-  print(PI);
-}
-''');
-    await assertHasFix('''
-import 'dart:math' as pref;
-main() {
-  print(pref.E);
-  print(pref.PI);
-}
-''');
-  }
-}
-
-@reflectiveTest
-class ImportLibraryPrefixWithExtensionMethodsTest extends FixProcessorTest {
-  @override
-  FixKind get kind => DartFixKind.IMPORT_LIBRARY_PREFIX;
-
-  @override
-  void setUp() {
-    createAnalysisOptionsFile(experiments: ['extension-methods']);
-    super.setUp();
-  }
-
   Future<void> test_withExtension() async {
     addSource('/home/test/lib/lib.dart', '''
 class C {}
@@ -88,4 +58,21 @@
 }
 ''');
   }
+
+  Future<void> test_withTopLevelVariable() async {
+    await resolveTestUnit('''
+import 'dart:math' as pref;
+main() {
+  print(pref.E);
+  print(PI);
+}
+''');
+    await assertHasFix('''
+import 'dart:math' as pref;
+main() {
+  print(pref.E);
+  print(pref.PI);
+}
+''');
+  }
 }
diff --git a/pkg/analysis_server/test/src/services/correction/fix/import_library_project_test.dart b/pkg/analysis_server/test/src/services/correction/fix/import_library_project_test.dart
index e2f4017..a86150d 100644
--- a/pkg/analysis_server/test/src/services/correction/fix/import_library_project_test.dart
+++ b/pkg/analysis_server/test/src/services/correction/fix/import_library_project_test.dart
@@ -12,11 +12,8 @@
 void main() {
   defineReflectiveSuite(() {
     defineReflectiveTests(ImportLibraryProject1Test);
-    defineReflectiveTests(ImportLibraryProject1WithExtensionMethodsTest);
     defineReflectiveTests(ImportLibraryProject2Test);
-    defineReflectiveTests(ImportLibraryProject2WithExtensionMethodsTest);
     defineReflectiveTests(ImportLibraryProject3Test);
-    defineReflectiveTests(ImportLibraryProject3WithExtensionMethodsTest);
   });
 }
 
@@ -65,6 +62,32 @@
 ''', expectedNumberOfFixesForKind: 1);
   }
 
+  Future<void> test_lib_extension() async {
+    addPackageFile('my_pkg', 'a.dart', '''
+extension E on int {
+  static String m() => '';
+}
+''');
+    newFile('/home/test/pubspec.yaml', content: r'''
+dependencies:
+  my_pkg: any
+''');
+
+    await resolveTestUnit('''
+f() {
+  print(E.m());
+}
+''');
+
+    await assertHasFix('''
+import 'package:my_pkg/a.dart';
+
+f() {
+  print(E.m());
+}
+''', expectedNumberOfFixesForKind: 1);
+  }
+
   Future<void> test_lib_src() async {
     addPackageFile('my_pkg', 'src/a.dart', 'class Test {}');
     newFile('/home/test/pubspec.yaml', content: r'''
@@ -542,44 +565,6 @@
 }
 
 @reflectiveTest
-class ImportLibraryProject1WithExtensionMethodsTest extends FixProcessorTest {
-  @override
-  FixKind get kind => DartFixKind.IMPORT_LIBRARY_PROJECT1;
-
-  @override
-  void setUp() {
-    createAnalysisOptionsFile(experiments: ['extension-methods']);
-    super.setUp();
-  }
-
-  Future<void> test_lib() async {
-    addPackageFile('my_pkg', 'a.dart', '''
-extension E on int {
-  static String m() => '';
-}
-''');
-    newFile('/home/test/pubspec.yaml', content: r'''
-dependencies:
-  my_pkg: any
-''');
-
-    await resolveTestUnit('''
-f() {
-  print(E.m());
-}
-''');
-
-    await assertHasFix('''
-import 'package:my_pkg/a.dart';
-
-f() {
-  print(E.m());
-}
-''', expectedNumberOfFixesForKind: 1);
-  }
-}
-
-@reflectiveTest
 class ImportLibraryProject2Test extends FixProcessorTest {
   @override
   FixKind get kind => DartFixKind.IMPORT_LIBRARY_PROJECT2;
@@ -629,20 +614,8 @@
 }
 ''');
   }
-}
 
-@reflectiveTest
-class ImportLibraryProject2WithExtensionMethodsTest extends FixProcessorTest {
-  @override
-  FixKind get kind => DartFixKind.IMPORT_LIBRARY_PROJECT2;
-
-  @override
-  void setUp() {
-    createAnalysisOptionsFile(experiments: ['extension-methods']);
-    super.setUp();
-  }
-
-  Future<void> test_lib_src() async {
+  Future<void> test_lib_src_extension() async {
     addPackageFile('my_pkg', 'a.dart', "export 'src/b.dart';");
     addPackageFile('my_pkg', 'src/b.dart', '''
 extension E on int {
@@ -707,20 +680,8 @@
 }
 ''');
   }
-}
 
-@reflectiveTest
-class ImportLibraryProject3WithExtensionMethodsTest extends FixProcessorTest {
-  @override
-  FixKind get kind => DartFixKind.IMPORT_LIBRARY_PROJECT3;
-
-  @override
-  void setUp() {
-    createAnalysisOptionsFile(experiments: ['extension-methods']);
-    super.setUp();
-  }
-
-  Future<void> test_inLibSrc_thisContextRoot() async {
+  Future<void> test_inLibSrc_thisContextRoot_extension() async {
     addSource('/home/test/lib/src/lib.dart', '''
 extension E on int {
   static String m() => '';
diff --git a/pkg/analysis_server/test/src/services/correction/fix/import_library_show_test.dart b/pkg/analysis_server/test/src/services/correction/fix/import_library_show_test.dart
index a89b015..5afd7f5 100644
--- a/pkg/analysis_server/test/src/services/correction/fix/import_library_show_test.dart
+++ b/pkg/analysis_server/test/src/services/correction/fix/import_library_show_test.dart
@@ -11,7 +11,6 @@
 void main() {
   defineReflectiveSuite(() {
     defineReflectiveTests(ImportLibraryShowTest);
-    defineReflectiveTests(ImportLibraryShowWithExtensionMethodsTest);
   });
 }
 
@@ -20,6 +19,27 @@
   @override
   FixKind get kind => DartFixKind.IMPORT_LIBRARY_SHOW;
 
+  Future<void> test_override_samePackage() async {
+    addSource('/home/test/lib/lib.dart', '''
+class A {}
+extension E on int {
+  String m() => '';
+}
+''');
+    await resolveTestUnit(r'''
+import 'lib.dart' show A;
+void f(A a) {
+  print('$a ${E(3).m()}');
+}
+''');
+    await assertHasFix(r'''
+import 'lib.dart' show A, E;
+void f(A a) {
+  print('$a ${E(3).m()}');
+}
+''');
+  }
+
   Future<void> test_package() async {
     addSource('/home/test/lib/lib.dart', '''
 class A {}
@@ -61,39 +81,6 @@
 }
 ''');
   }
-}
-
-@reflectiveTest
-class ImportLibraryShowWithExtensionMethodsTest extends FixProcessorTest {
-  @override
-  FixKind get kind => DartFixKind.IMPORT_LIBRARY_SHOW;
-
-  @override
-  void setUp() {
-    createAnalysisOptionsFile(experiments: ['extension-methods']);
-    super.setUp();
-  }
-
-  Future<void> test_override_samePackage() async {
-    addSource('/home/test/lib/lib.dart', '''
-class A {}
-extension E on int {
-  String m() => '';
-}
-''');
-    await resolveTestUnit(r'''
-import 'lib.dart' show A;
-void f(A a) {
-  print('$a ${E(3).m()}');
-}
-''');
-    await assertHasFix(r'''
-import 'lib.dart' show A, E;
-void f(A a) {
-  print('$a ${E(3).m()}');
-}
-''');
-  }
 
   Future<void> test_static_samePackage() async {
     addSource('/home/test/lib/lib.dart', '''
diff --git a/pkg/analysis_server/test/src/services/correction/fix/inline_typedef_test.dart b/pkg/analysis_server/test/src/services/correction/fix/inline_typedef_test.dart
index 92b2217..ceefcc5 100644
--- a/pkg/analysis_server/test/src/services/correction/fix/inline_typedef_test.dart
+++ b/pkg/analysis_server/test/src/services/correction/fix/inline_typedef_test.dart
@@ -4,6 +4,7 @@
 
 import 'package:analysis_server/src/services/correction/fix.dart';
 import 'package:analysis_server/src/services/linter/lint_names.dart';
+import 'package:analyzer/src/dart/analysis/experiments.dart';
 import 'package:analyzer_plugin/utilities/fixes/fixes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
@@ -138,7 +139,7 @@
 @reflectiveTest
 class InlineTypedefWithNNBDTest extends InlineTypedefTest {
   @override
-  List<String> get experiments => ['non-nullable'];
+  List<String> get experiments => [EnableString.non_nullable];
 
   Future<void> test_generic_parameter_requiredNamed() async {
     await resolveTestUnit('''
diff --git a/pkg/analysis_server/test/src/services/correction/fix/qualify_reference_test.dart b/pkg/analysis_server/test/src/services/correction/fix/qualify_reference_test.dart
index 000b9bb..9e7d7ec 100644
--- a/pkg/analysis_server/test/src/services/correction/fix/qualify_reference_test.dart
+++ b/pkg/analysis_server/test/src/services/correction/fix/qualify_reference_test.dart
@@ -3,7 +3,6 @@
 // BSD-style license that can be found in the LICENSE file.
 
 import 'package:analysis_server/src/services/correction/fix.dart';
-import 'package:analyzer/src/dart/analysis/experiments.dart';
 import 'package:analyzer_plugin/utilities/fixes/fixes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
@@ -12,7 +11,6 @@
 void main() {
   defineReflectiveSuite(() {
     defineReflectiveTests(QualifyReferenceTest);
-    defineReflectiveTests(QualifyReferenceWithExtensionMethodsTest);
   });
 }
 
@@ -125,15 +123,6 @@
 ''');
     await assertNoFix();
   }
-}
-
-@reflectiveTest
-class QualifyReferenceWithExtensionMethodsTest extends QualifyReferenceTest {
-  @override
-  void setupResourceProvider() {
-    super.setupResourceProvider();
-    createAnalysisOptionsFile(experiments: [EnableString.extension_methods]);
-  }
 
   Future<void> test_extension_direct() async {
     await resolveTestUnit('''
diff --git a/pkg/analysis_server/test/src/services/correction/fix/remove_if_null_operator_test.dart b/pkg/analysis_server/test/src/services/correction/fix/remove_if_null_operator_test.dart
index 20529c8..32b927a 100644
--- a/pkg/analysis_server/test/src/services/correction/fix/remove_if_null_operator_test.dart
+++ b/pkg/analysis_server/test/src/services/correction/fix/remove_if_null_operator_test.dart
@@ -4,6 +4,7 @@
 
 import 'package:analysis_server/src/services/correction/fix.dart';
 import 'package:analysis_server/src/services/linter/lint_names.dart';
+import 'package:analyzer/src/dart/analysis/experiments.dart';
 import 'package:analyzer_plugin/utilities/fixes/fixes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
@@ -19,13 +20,10 @@
 @reflectiveTest
 class DeadNullAwareExpressionTest extends FixProcessorTest {
   @override
-  FixKind get kind => DartFixKind.REMOVE_IF_NULL_OPERATOR;
+  List<String> get experiments => [EnableString.non_nullable];
 
   @override
-  void setUp() {
-    super.setUp();
-    createAnalysisOptionsFile(experiments: ['non-nullable']);
-  }
+  FixKind get kind => DartFixKind.REMOVE_IF_NULL_OPERATOR;
 
   Future<void> test_immediateChild() async {
     await resolveTestUnit('''
diff --git a/pkg/analysis_server/test/src/services/correction/fix/remove_method_declaration_test.dart b/pkg/analysis_server/test/src/services/correction/fix/remove_method_declaration_test.dart
index ef2456c..77b371d 100644
--- a/pkg/analysis_server/test/src/services/correction/fix/remove_method_declaration_test.dart
+++ b/pkg/analysis_server/test/src/services/correction/fix/remove_method_declaration_test.dart
@@ -4,6 +4,7 @@
 
 import 'package:analysis_server/src/services/correction/fix.dart';
 import 'package:analysis_server/src/services/linter/lint_names.dart';
+import 'package:analyzer/src/dart/analysis/experiments.dart';
 import 'package:analyzer_plugin/utilities/fixes/fixes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
@@ -94,7 +95,7 @@
   @FailingTest(issue: 'https://github.com/dart-lang/linter/issues/1997')
   Future<void> test_method_nullSafety_optIn_fromOptOut() async {
     createAnalysisOptionsFile(
-      experiments: ['non-nullable'],
+      experiments: [EnableString.non_nullable],
       lints: [lintCode],
     );
     newFile('/home/test/lib/a.dart', content: r'''
diff --git a/pkg/analysis_server/test/src/services/correction/fix/remove_question_mark_test.dart b/pkg/analysis_server/test/src/services/correction/fix/remove_question_mark_test.dart
index 428f1d6..69573a2 100644
--- a/pkg/analysis_server/test/src/services/correction/fix/remove_question_mark_test.dart
+++ b/pkg/analysis_server/test/src/services/correction/fix/remove_question_mark_test.dart
@@ -3,6 +3,7 @@
 // BSD-style license that can be found in the LICENSE file.
 
 import 'package:analysis_server/src/services/correction/fix.dart';
+import 'package:analyzer/src/dart/analysis/experiments.dart';
 import 'package:analyzer_plugin/utilities/fixes/fixes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
@@ -17,13 +18,10 @@
 @reflectiveTest
 class RemoveQuestionMarkTest extends FixProcessorTest {
   @override
-  FixKind get kind => DartFixKind.REMOVE_QUESTION_MARK;
+  List<String> get experiments => [EnableString.non_nullable];
 
   @override
-  void setUp() {
-    super.setUp();
-    createAnalysisOptionsFile(experiments: ['non-nullable']);
-  }
+  FixKind get kind => DartFixKind.REMOVE_QUESTION_MARK;
 
   Future<void> test_catchClause() async {
     await resolveTestUnit('''
diff --git a/pkg/analysis_server/test/src/services/correction/fix/replace_with_extension_name_test.dart b/pkg/analysis_server/test/src/services/correction/fix/replace_with_extension_name_test.dart
index bd4dfcd..cc1fb07 100644
--- a/pkg/analysis_server/test/src/services/correction/fix/replace_with_extension_name_test.dart
+++ b/pkg/analysis_server/test/src/services/correction/fix/replace_with_extension_name_test.dart
@@ -3,7 +3,6 @@
 // BSD-style license that can be found in the LICENSE file.
 
 import 'package:analysis_server/src/services/correction/fix.dart';
-import 'package:analyzer/src/dart/analysis/experiments.dart';
 import 'package:analyzer_plugin/utilities/fixes/fixes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
@@ -20,12 +19,6 @@
   @override
   FixKind get kind => DartFixKind.REPLACE_WITH_EXTENSION_NAME;
 
-  @override
-  void setupResourceProvider() {
-    super.setupResourceProvider();
-    createAnalysisOptionsFile(experiments: [EnableString.extension_methods]);
-  }
-
   Future<void> test_getter() async {
     await resolveTestUnit('''
 extension E on String {
diff --git a/pkg/analysis_server/test/src/services/correction/fix/update_sdk_constraints_test.dart b/pkg/analysis_server/test/src/services/correction/fix/update_sdk_constraints_test.dart
index 7dc77c9..9576a29 100644
--- a/pkg/analysis_server/test/src/services/correction/fix/update_sdk_constraints_test.dart
+++ b/pkg/analysis_server/test/src/services/correction/fix/update_sdk_constraints_test.dart
@@ -25,7 +25,6 @@
   }
 
   Future<void> test_asInConstContext() async {
-    createAnalysisOptionsFile(experiments: [EnableString.constant_update_2018]);
     await testUpdate(content: '''
 const dynamic a = 2;
 const c = a as int;
@@ -33,7 +32,6 @@
   }
 
   Future<void> test_boolOperator() async {
-    createAnalysisOptionsFile(experiments: [EnableString.constant_update_2018]);
     await testUpdate(content: '''
 const c = true & false;
 ''', to: '^2.2.2');
@@ -75,7 +73,6 @@
   }
 
   Future<void> test_isInConstContext() async {
-    createAnalysisOptionsFile(experiments: [EnableString.constant_update_2018]);
     await testUpdate(content: '''
 const a = 0;
 const c = a is int;
diff --git a/pkg/analysis_server/tool/completion_metrics/relevance_metrics.dart b/pkg/analysis_server/tool/completion_metrics/relevance_metrics.dart
index 21ff025..0f06e85 100644
--- a/pkg/analysis_server/tool/completion_metrics/relevance_metrics.dart
+++ b/pkg/analysis_server/tool/completion_metrics/relevance_metrics.dart
@@ -1040,8 +1040,8 @@
     // There are no completions.
     var element = node.declaredElement;
     if (!element.isStatic && element.enclosingElement is ClassElement) {
-      var overriddenMembers = inheritanceManager.getOverridden(
-          (element.enclosingElement as ClassElement).thisType,
+      var overriddenMembers = inheritanceManager.getOverridden2(
+          element.enclosingElement as ClassElement,
           Name(element.librarySource.uri, element.name));
       if (overriddenMembers != null) {
         // Consider limiting this to the most immediate override. If the
diff --git a/pkg/analyzer/analysis_options.yaml b/pkg/analyzer/analysis_options.yaml
index 83ff969..77ecc7d 100644
--- a/pkg/analyzer/analysis_options.yaml
+++ b/pkg/analyzer/analysis_options.yaml
@@ -17,7 +17,7 @@
     # Ignoring "style" lint rules from pedantic for now. There are pre-existing
     # violations that need to be cleaned up. Each one can be cleaned up and
     # enabled according to the value provided.
-    # TODO(srawlins): At the time of writing, 2600 violations in lib/. The fix
+    # TODO(srawlins): At the time of writing, 1700 violations in lib/. The fix
     # is mechanical, via `dartfmt --fix-doc-comments`, but not worth the churn
     # today.
     slash_for_doc_comments: ignore
@@ -26,6 +26,7 @@
 
 linter:
   rules:
+    - avoid_unused_constructor_parameters
     - empty_statements
     - unnecessary_brace_in_string_interps
     - # TODO(scheglov) Remove these when pedantic is updated to include them
diff --git a/pkg/analyzer/lib/src/dart/analysis/driver.dart b/pkg/analyzer/lib/src/dart/analysis/driver.dart
index 0ece485..ae47f06 100644
--- a/pkg/analyzer/lib/src/dart/analysis/driver.dart
+++ b/pkg/analyzer/lib/src/dart/analysis/driver.dart
@@ -1306,7 +1306,7 @@
             libraryContext.isLibraryUri,
             libraryContext.analysisContext,
             libraryContext.elementFactory,
-            libraryContext.inheritanceManager,
+            libraryContext.analysisSession.inheritanceManager,
             library,
             _resourceProvider,
             testingData: testingData);
@@ -1389,7 +1389,7 @@
           libraryContext.isLibraryUri,
           libraryContext.analysisContext,
           libraryContext.elementFactory,
-          libraryContext.inheritanceManager,
+          libraryContext.analysisSession.inheritanceManager,
           library,
           _resourceProvider,
           testingData: testingData);
@@ -1516,7 +1516,6 @@
         _libraryContext = LibraryContext(
           session: currentSession,
           logger: _logger,
-          fsState: fsState,
           byteStore: _byteStore,
           analysisOptions: _analysisOptions,
           declaredVariables: declaredVariables,
diff --git a/pkg/analyzer/lib/src/dart/analysis/library_analyzer.dart b/pkg/analyzer/lib/src/dart/analysis/library_analyzer.dart
index 818e0b0..be14894 100644
--- a/pkg/analyzer/lib/src/dart/analysis/library_analyzer.dart
+++ b/pkg/analyzer/lib/src/dart/analysis/library_analyzer.dart
@@ -211,7 +211,7 @@
       ErrorReporter errorReporter, CompilationUnit unit) {
     ConstantVerifier constantVerifier = ConstantVerifier(
         errorReporter, _libraryElement, _declaredVariables,
-        featureSet: unit.featureSet, forAnalysisDriver: true);
+        featureSet: unit.featureSet);
     unit.accept(constantVerifier);
   }
 
@@ -232,8 +232,7 @@
     ErrorReporter errorReporter = _getErrorReporter(file);
 
     if (!_libraryElement.isNonNullableByDefault) {
-      unit.accept(DeadCodeVerifier(errorReporter, unit.featureSet,
-          typeSystem: _typeSystem));
+      unit.accept(DeadCodeVerifier(errorReporter, typeSystem: _typeSystem));
     }
 
     // Dart2js analysis.
@@ -387,7 +386,7 @@
     // Use the ErrorVerifier to compute errors.
     //
     ErrorVerifier errorVerifier = ErrorVerifier(
-        errorReporter, _libraryElement, _typeProvider, _inheritance, false);
+        errorReporter, _libraryElement, _typeProvider, _inheritance);
     unit.accept(errorVerifier);
 
     // Verify constraints on FFI uses. The CFE enforces these constraints as
diff --git a/pkg/analyzer/lib/src/dart/analysis/library_context.dart b/pkg/analyzer/lib/src/dart/analysis/library_context.dart
index 559c900..0a1f5c6 100644
--- a/pkg/analyzer/lib/src/dart/analysis/library_context.dart
+++ b/pkg/analyzer/lib/src/dart/analysis/library_context.dart
@@ -13,7 +13,6 @@
 import 'package:analyzer/src/dart/analysis/library_graph.dart';
 import 'package:analyzer/src/dart/analysis/performance_logger.dart';
 import 'package:analyzer/src/dart/analysis/session.dart';
-import 'package:analyzer/src/dart/element/inheritance_manager3.dart';
 import 'package:analyzer/src/generated/engine.dart'
     show AnalysisContext, AnalysisOptions;
 import 'package:analyzer/src/generated/source.dart';
@@ -54,7 +53,6 @@
 
   AnalysisContextImpl analysisContext;
   LinkedElementFactory elementFactory;
-  InheritanceManager3 inheritanceManager;
 
   var loadedBundles = Set<LibraryCycle>.identity();
 
@@ -62,7 +60,6 @@
     @required AnalysisSessionImpl session,
     @required PerformanceLog logger,
     @required ByteStore byteStore,
-    @required FileSystemState fsState,
     @required AnalysisOptions analysisOptions,
     @required DeclaredVariables declaredVariables,
     @required SourceFactory sourceFactory,
@@ -77,8 +74,6 @@
 
     _createElementFactory();
     load2(targetLibrary);
-
-    inheritanceManager = InheritanceManager3();
   }
 
   /**
diff --git a/pkg/analyzer/lib/src/dart/analysis/session.dart b/pkg/analyzer/lib/src/dart/analysis/session.dart
index e0a5320..7c1dc5c 100644
--- a/pkg/analyzer/lib/src/dart/analysis/session.dart
+++ b/pkg/analyzer/lib/src/dart/analysis/session.dart
@@ -226,8 +226,6 @@
   TypeSystemImpl _typeSystemLegacy;
   TypeSystemImpl _typeSystemNonNullableByDefault;
 
-  InheritanceManager3 _inheritanceManager;
-
   SynchronousSession(this._analysisOptions, this.declaredVariables);
 
   AnalysisOptionsImpl get analysisOptions => _analysisOptions;
@@ -246,10 +244,6 @@
     );
   }
 
-  InheritanceManager3 get inheritanceManager {
-    return _inheritanceManager ??= InheritanceManager3();
-  }
-
   @Deprecated('Use LibraryElement.typeProvider')
   TypeProvider get typeProvider => _typeProviderLegacy;
 
@@ -280,8 +274,6 @@
 
     _typeSystemLegacy = null;
     _typeSystemNonNullableByDefault = null;
-
-    _inheritanceManager = null;
   }
 
   void setTypeProviders({
diff --git a/pkg/analyzer/lib/src/dart/constant/constant_verifier.dart b/pkg/analyzer/lib/src/dart/constant/constant_verifier.dart
index 189fe9f..9a1d3e7 100644
--- a/pkg/analyzer/lib/src/dart/constant/constant_verifier.dart
+++ b/pkg/analyzer/lib/src/dart/constant/constant_verifier.dart
@@ -55,8 +55,7 @@
   /// Initialize a newly created constant verifier.
   ConstantVerifier(ErrorReporter errorReporter, LibraryElement currentLibrary,
       DeclaredVariables declaredVariables,
-      // TODO(brianwilkerson) Remove the unused parameter `forAnalysisDriver`.
-      {bool forAnalysisDriver,
+      {
       // TODO(paulberry): make [featureSet] a required parameter.
       FeatureSet featureSet})
       : this._(
diff --git a/pkg/analyzer/lib/src/dart/element/inheritance_manager3.dart b/pkg/analyzer/lib/src/dart/element/inheritance_manager3.dart
index 6f4e1f1..5535d6c 100644
--- a/pkg/analyzer/lib/src/dart/element/inheritance_manager3.dart
+++ b/pkg/analyzer/lib/src/dart/element/inheritance_manager3.dart
@@ -7,38 +7,49 @@
 import 'package:analyzer/dart/element/type_system.dart';
 import 'package:analyzer/src/dart/element/element.dart';
 import 'package:analyzer/src/dart/element/member.dart';
+import 'package:analyzer/src/dart/element/type_algebra.dart';
 import 'package:analyzer/src/error/correct_override.dart';
 import 'package:analyzer/src/generated/type_system.dart' show TypeSystemImpl;
 import 'package:analyzer/src/generated/utilities_general.dart';
 import 'package:meta/meta.dart';
 
-/// Description of a failure to find a valid override from superinterfaces.
-class Conflict {
-  /// The name of an instance member for which we failed to find a valid
-  /// override.
-  final Name name;
-
-  /// The list of candidates for a valid override for a member [name].  It has
-  /// at least two items, because otherwise the only candidate is always valid.
+/// Failure because of there is no most specific signature in [candidates].
+class CandidatesConflict extends Conflict {
+  /// The list has at least two items, because the only item is always valid.
   final List<ExecutableElement> candidates;
 
-  /// The getter that conflicts with the [method], or `null`, if the conflict
-  /// is inconsistent inheritance.
-  final ExecutableElement getter;
+  CandidatesConflict({
+    @required Name name,
+    @required this.candidates,
+  }) : super(name);
+}
 
-  /// The method tha conflicts with the [getter], or `null`, if the conflict
-  /// is inconsistent inheritance.
+/// Failure to find a valid signature from superinterfaces.
+class Conflict {
+  /// The name for which we failed to find a valid signature.
+  final Name name;
+
+  Conflict(this.name);
+}
+
+/// Failure because of a getter and a method from direct superinterfaces.
+class GetterMethodConflict extends Conflict {
+  final ExecutableElement getter;
   final ExecutableElement method;
 
-  Conflict(this.name, this.candidates, [this.getter, this.method]);
+  GetterMethodConflict({
+    @required Name name,
+    @required this.getter,
+    @required this.method,
+  }) : super(name);
 }
 
 /// Manages knowledge about interface types and their members.
 class InheritanceManager3 {
   static final _noSuchMethodName = Name(null, 'noSuchMethod');
 
-  /// Cached instance interfaces for [InterfaceType].
-  final Map<InterfaceType, Interface> _interfaces = {};
+  /// Cached instance interfaces for [ClassElement].
+  final Map<ClassElement, Interface> _interfaces = {};
 
   /// The set of classes that are currently being processed, used to detect
   /// self-referencing cycles.
@@ -46,20 +57,51 @@
 
   InheritanceManager3([@deprecated TypeSystem typeSystem]);
 
+  /// Return the result of [getInherited2] with [type] substitution.
+  ExecutableElement getInherited(InterfaceType type, Name name) {
+    var rawElement = getInherited2(type.element, name);
+    if (rawElement == null) {
+      return null;
+    }
+
+    return ExecutableMember.from2(
+      rawElement,
+      Substitution.fromInterfaceType(type),
+    );
+  }
+
   /// Return the most specific signature of the member with the given [name]
-  /// that the [type] inherits from the mixins, superclasses, or interfaces;
+  /// that [element] inherits from the mixins, superclasses, or interfaces;
   /// or `null` if no member is inherited because the member is not declared
   /// at all, or because there is no the most specific signature.
   ///
-  /// This is equivalent to `getInheritedMap(type)[name]`.
-  ExecutableElement getInherited(InterfaceType type, Name name) {
-    return getInheritedMap(type)[name];
+  /// This is equivalent to `getInheritedMap2(type)[name]`.
+  ExecutableElement getInherited2(ClassElement element, Name name) {
+    return getInheritedMap2(element)[name];
   }
 
   /// Return signatures of all concrete members that the given [type] inherits
   /// from the superclasses and mixins.
+  @Deprecated('Use getInheritedConcreteMap2')
   Map<Name, ExecutableElement> getInheritedConcreteMap(InterfaceType type) {
-    var interface = getInterface(type);
+    var result = <Name, ExecutableElement>{};
+
+    var substitution = Substitution.fromInterfaceType(type);
+    var rawMap = getInheritedConcreteMap2(type.element);
+    for (var rawEntry in rawMap.entries) {
+      result[rawEntry.key] = ExecutableMember.from2(
+        rawEntry.value,
+        substitution,
+      );
+    }
+
+    return result;
+  }
+
+  /// Return signatures of all concrete members that the given [element] inherits
+  /// from the superclasses and mixins.
+  Map<Name, ExecutableElement> getInheritedConcreteMap2(ClassElement element) {
+    var interface = getInterface(element);
     return interface._superImplemented.last;
   }
 
@@ -67,12 +109,32 @@
   /// inherited from the super-interfaces (superclasses, mixins, and
   /// interfaces).  If there is no most specific signature for a name, the
   /// corresponding name will not be included.
+  @Deprecated('Use getInheritedMap2')
   Map<Name, ExecutableElement> getInheritedMap(InterfaceType type) {
-    var interface = getInterface(type);
+    var result = <Name, ExecutableElement>{};
+
+    var substitution = Substitution.fromInterfaceType(type);
+    var rawMap = getInheritedMap2(type.element);
+    for (var rawEntry in rawMap.entries) {
+      result[rawEntry.key] = ExecutableMember.from2(
+        rawEntry.value,
+        substitution,
+      );
+    }
+
+    return result;
+  }
+
+  /// Return the mapping from names to most specific signatures of members
+  /// inherited from the super-interfaces (superclasses, mixins, and
+  /// interfaces).  If there is no most specific signature for a name, the
+  /// corresponding name will not be included.
+  Map<Name, ExecutableElement> getInheritedMap2(ClassElement element) {
+    var interface = getInterface(element);
     if (interface._inheritedMap == null) {
       interface._inheritedMap = {};
       _findMostSpecificFromNamedCandidates(
-        type.element,
+        element,
         interface._inheritedMap,
         interface._overridden,
         doTopMerge: false,
@@ -81,243 +143,160 @@
     return interface._inheritedMap;
   }
 
-  /// Return the interface of the given [type].  It might include private
-  /// members, not necessary accessible in all libraries.
-  Interface getInterface(InterfaceType type) {
-    if (type == null) {
+  /// Return the interface of the given [element].  It might include
+  /// private members, not necessary accessible in all libraries.
+  Interface getInterface(ClassElement element) {
+    if (element == null) {
       return Interface._empty;
     }
 
-    var result = _interfaces[type];
+    var result = _interfaces[element];
     if (result != null) {
       return result;
     }
-    _interfaces[type] = Interface._empty;
+    _interfaces[element] = Interface._empty;
 
-    var classElement = type.element;
-    if (!_processingClasses.add(classElement)) {
+    if (!_processingClasses.add(element)) {
       return Interface._empty;
     }
 
-    var classLibrary = classElement.library;
-    var isNonNullableByDefault = classLibrary.isNonNullableByDefault;
-
-    Map<Name, List<ExecutableElement>> namedCandidates = {};
-    List<Map<Name, ExecutableElement>> superImplemented = [];
-    Map<Name, ExecutableElement> declared;
-    Interface superInterface;
-    Map<Name, ExecutableElement> implemented;
-    List<List<Conflict>> mixinsConflicts = [];
     try {
-      // If a class declaration has a member declaration, the signature of that
-      // member declaration becomes the signature in the interface.
-      declared = _getTypeMembers(type);
-
-      if (classElement.isMixin) {
-        var superClassCandidates = <Name, List<ExecutableElement>>{};
-        for (var constraint in type.superclassConstraints) {
-          var interfaceObj = getInterface(constraint);
-          _addCandidates(
-            superClassCandidates,
-            interfaceObj,
-            isNonNullableByDefault: isNonNullableByDefault,
-          );
-          _addCandidates(
-            namedCandidates,
-            interfaceObj,
-            isNonNullableByDefault: isNonNullableByDefault,
-          );
-        }
-
-        implemented = {};
-
-        // `mixin M on S1, S2 {}` can call using `super` any instance member
-        // from its superclass constraints, whether it is abstract or concrete.
-        var superClass = <Name, ExecutableElement>{};
-        _findMostSpecificFromNamedCandidates(
-          classElement,
-          superClass,
-          superClassCandidates,
-          doTopMerge: true,
-        );
-        superImplemented.add(superClass);
+      if (element.isMixin) {
+        result = _getInterfaceMixin(element);
       } else {
-        if (type.superclass != null) {
-          superInterface = getInterface(type.superclass);
-          _addCandidates(
-            namedCandidates,
-            superInterface,
-            isNonNullableByDefault: isNonNullableByDefault,
-          );
-
-          if (isNonNullableByDefault) {
-            implemented = superInterface.implemented;
-          } else {
-            implemented = {};
-            for (var entry in superInterface.implemented.entries) {
-              implemented[entry.key] = Member.legacy(entry.value);
-            }
-          }
-
-          superImplemented.add(implemented);
-        } else {
-          implemented = {};
-        }
-
-        // TODO(scheglov) Handling of members for super and mixins is not
-        // optimal. We always have just one member for each name in super,
-        // multiple candidates happen only when we merge super and multiple
-        // interfaces. Consider using `Map<Name, ExecutableElement>` here.
-        for (var mixin in type.mixins) {
-          var mixinElement = mixin.element;
-          var interfaceObj = getInterface(mixin);
-          // `class X extends S with M1, M2 {}` is semantically a sequence of:
-          //     class S&M1 extends S implements M1 {
-          //       // declared M1 members
-          //     }
-          //     class S&M2 extends S&M1 implements M2 {
-          //       // declared M2 members
-          //     }
-          //     class X extends S&M2 {
-          //       // declared X members
-          //     }
-          // So, each mixin always replaces members in the interface.
-          // And there are individual override conflicts for each mixin.
-          var candidatesFromSuperAndMixin = <Name, List<ExecutableElement>>{};
-          var mixinConflicts = <Conflict>[];
-          for (var name in interfaceObj.map.keys) {
-            var candidate = interfaceObj.map[name];
-
-            var currentList = namedCandidates[name];
-            if (currentList == null) {
-              namedCandidates[name] = [
-                isNonNullableByDefault ? candidate : Member.legacy(candidate),
-              ];
-              continue;
-            }
-
-            var current = currentList.single;
-            if (candidate.enclosingElement == mixinElement) {
-              namedCandidates[name] = [
-                isNonNullableByDefault ? candidate : Member.legacy(candidate),
-              ];
-              if (current.kind != candidate.kind) {
-                var currentIsGetter = current.kind == ElementKind.GETTER;
-                mixinConflicts.add(
-                  Conflict(
-                    name,
-                    [current, candidate],
-                    currentIsGetter ? current : candidate,
-                    currentIsGetter ? candidate : current,
-                  ),
-                );
-              }
-            } else {
-              candidatesFromSuperAndMixin[name] = [current, candidate];
-            }
-          }
-
-          // Merge members from the superclass and the mixin interface.
-          {
-            var map = <Name, ExecutableElement>{};
-            _findMostSpecificFromNamedCandidates(
-              classElement,
-              map,
-              candidatesFromSuperAndMixin,
-              doTopMerge: true,
-            );
-            for (var entry in map.entries) {
-              namedCandidates[entry.key] = [
-                isNonNullableByDefault
-                    ? entry.value
-                    : Member.legacy(entry.value),
-              ];
-            }
-          }
-
-          mixinsConflicts.add(mixinConflicts);
-
-          implemented = <Name, ExecutableElement>{}..addAll(implemented);
-          _addMixinMembers(implemented, interfaceObj,
-              isNonNullableByDefault: isNonNullableByDefault);
-
-          superImplemented.add(implemented);
-        }
-      }
-
-      for (var interface in type.interfaces) {
-        var interfaceObj = getInterface(interface);
-        _addCandidates(
-          namedCandidates,
-          interfaceObj,
-          isNonNullableByDefault: isNonNullableByDefault,
-        );
+        result = _getInterfaceClass(element);
       }
     } finally {
-      _processingClasses.remove(classElement);
+      _processingClasses.remove(element);
     }
 
-    implemented = <Name, ExecutableElement>{}..addAll(implemented);
-    _addImplemented(implemented, type);
-
-    // If a class declaration does not have a member declaration with a
-    // particular name, but some super-interfaces do have a member with that
-    // name, it's a compile-time error if there is no signature among the
-    // super-interfaces that is a valid override of all the other
-    // super-interface signatures with the same name. That "most specific"
-    // signature becomes the signature of the class's interface.
-    Map<Name, ExecutableElement> map = Map.of(declared);
-    List<Conflict> conflicts = _findMostSpecificFromNamedCandidates(
-      classElement,
-      map,
-      namedCandidates,
-      doTopMerge: true,
-    );
-
-    var noSuchMethodForwarders = <Name>{};
-    if (classElement.isAbstract) {
-      if (superInterface != null) {
-        noSuchMethodForwarders = superInterface._noSuchMethodForwarders;
-      }
-    } else {
-      var noSuchMethod = implemented[_noSuchMethodName];
-      if (noSuchMethod != null && !_isDeclaredInObject(noSuchMethod)) {
-        var superForwarders = superInterface?._noSuchMethodForwarders;
-        for (var name in map.keys) {
-          if (!implemented.containsKey(name) ||
-              superForwarders != null && superForwarders.contains(name)) {
-            implemented[name] = map[name];
-            noSuchMethodForwarders.add(name);
-          }
-        }
-      }
-    }
-
-    /// TODO(scheglov) Instead of merging conflicts we could report them on
-    /// the corresponding mixins applied in the class.
-    for (var mixinConflicts in mixinsConflicts) {
-      if (mixinConflicts.isNotEmpty) {
-        conflicts ??= [];
-        conflicts.addAll(mixinConflicts);
-      }
-    }
-
-    var interface = Interface._(
-      map,
-      declared,
-      implemented,
-      noSuchMethodForwarders,
-      namedCandidates,
-      superImplemented,
-      conflicts ?? const [],
-    );
-    _interfaces[type] = interface;
-    return interface;
+    _interfaces[element] = result;
+    return result;
   }
 
-  void _addMixinMembers(
+  /// Return the result of [getMember2] with [type] substitution.
+  ExecutableElement getMember(
+    InterfaceType type,
+    Name name, {
+    bool concrete = false,
+    int forMixinIndex = -1,
+    bool forSuper = false,
+  }) {
+    var rawElement = getMember2(
+      type.element,
+      name,
+      concrete: concrete,
+      forMixinIndex: forMixinIndex,
+      forSuper: forSuper,
+    );
+    if (rawElement == null) {
+      return null;
+    }
+
+    var substitution = Substitution.fromInterfaceType(type);
+    return ExecutableMember.from2(rawElement, substitution);
+  }
+
+  /// Return the member with the given [name].
+  ///
+  /// If [concrete] is `true`, the the concrete implementation is returned,
+  /// from the given [element], or its superclass.
+  ///
+  /// If [forSuper] is `true`, then [concrete] is implied, and only concrete
+  /// members from the superclass are considered.
+  ///
+  /// If [forMixinIndex] is specified, only the nominal superclass, and the
+  /// given number of mixins after it are considered.  For example for `1` in
+  /// `class C extends S with M1, M2, M3`, only `S` and `M1` are considered.
+  ExecutableElement getMember2(
+    ClassElement element,
+    Name name, {
+    bool concrete = false,
+    int forMixinIndex = -1,
+    bool forSuper = false,
+  }) {
+    var interface = getInterface(element);
+    if (forSuper) {
+      var superImplemented = interface._superImplemented;
+      if (forMixinIndex >= 0) {
+        return superImplemented[forMixinIndex][name];
+      }
+      if (superImplemented.isNotEmpty) {
+        return superImplemented.last[name];
+      } else {
+        assert(element.name == 'Object');
+        return null;
+      }
+    }
+    if (concrete) {
+      return interface.implemented[name];
+    }
+    return interface.map[name];
+  }
+
+  /// Return all members of mixins, superclasses, and interfaces that a member
+  /// with the given [name], defined in the [type], would override; or `null`
+  /// if no members would be overridden.
+  @Deprecated('Use getOverridden2')
+  List<ExecutableElement> getOverridden(InterfaceType type, Name name) {
+    return getOverridden2(type.element, name);
+  }
+
+  /// Return all members of mixins, superclasses, and interfaces that a member
+  /// with the given [name], defined in the [element], would override; or `null`
+  /// if no members would be overridden.
+  List<ExecutableElement> getOverridden2(ClassElement element, Name name) {
+    var interface = getInterface(element);
+    return interface._overridden[name];
+  }
+
+  void _addCandidates({
+    @required Map<Name, List<ExecutableElement>> namedCandidates,
+    @required Substitution substitution,
+    @required Interface interface,
+    @required bool isNonNullableByDefault,
+  }) {
+    var map = interface.map;
+    for (var name in map.keys) {
+      var candidate = map[name];
+
+      candidate = ExecutableMember.from2(candidate, substitution);
+
+      if (!isNonNullableByDefault) {
+        candidate = Member.legacy(candidate);
+      }
+
+      var candidates = namedCandidates[name];
+      if (candidates == null) {
+        candidates = <ExecutableElement>[];
+        namedCandidates[name] = candidates;
+      }
+
+      candidates.add(candidate);
+    }
+  }
+
+  void _addImplemented(
     Map<Name, ExecutableElement> implemented,
-    Interface mixin, {
+    ClassElement element,
+  ) {
+    var libraryUri = element.librarySource.uri;
+
+    void addMember(ExecutableElement member) {
+      if (!member.isAbstract && !member.isStatic) {
+        var name = Name(libraryUri, member.name);
+        implemented[name] = member;
+      }
+    }
+
+    element.methods.forEach(addMember);
+    element.accessors.forEach(addMember);
+  }
+
+  void _addMixinMembers({
+    @required Map<Name, ExecutableElement> implemented,
+    @required Substitution substitution,
+    @required Interface mixin,
     @required bool isNonNullableByDefault,
   }) {
     for (var entry in mixin.implemented.entries) {
@@ -331,6 +310,8 @@
         continue;
       }
 
+      executable = ExecutableMember.from2(executable, substitution);
+
       if (!isNonNullableByDefault) {
         executable = Member.legacy(executable);
       }
@@ -339,102 +320,6 @@
     }
   }
 
-  /// Return the member with the given [name].
-  ///
-  /// If [concrete] is `true`, the the concrete implementation is returned,
-  /// from the given [type], or its superclass.
-  ///
-  /// If [forSuper] is `true`, then [concrete] is implied, and only concrete
-  /// members from the superclass are considered.
-  ///
-  /// If [forMixinIndex] is specified, only the nominal superclass, and the
-  /// given number of mixins after it are considered.  For example for `1` in
-  /// `class C extends S with M1, M2, M3`, only `S` and `M1` are considered.
-  ExecutableElement getMember(
-    InterfaceType type,
-    Name name, {
-    bool concrete = false,
-    int forMixinIndex = -1,
-    bool forSuper = false,
-  }) {
-    var interface = getInterface(type);
-    if (forSuper) {
-      var superImplemented = interface._superImplemented;
-      if (forMixinIndex >= 0) {
-        return superImplemented[forMixinIndex][name];
-      }
-      if (superImplemented.isNotEmpty) {
-        return superImplemented.last[name];
-      } else {
-        assert(type.element.name == 'Object');
-        return null;
-      }
-    }
-    if (concrete) {
-      return interface.implemented[name];
-    }
-    return interface.map[name];
-  }
-
-  /// Return all members of mixins, superclasses, and interfaces that a member
-  /// with the given [name], defined in the [type], would override; or `null`
-  /// if no members would be overridden.
-  List<ExecutableElement> getOverridden(InterfaceType type, Name name) {
-    var interface = getInterface(type);
-    return interface._overridden[name];
-  }
-
-  void _addCandidate(
-    Map<Name, List<ExecutableElement>> namedCandidates,
-    Name name,
-    ExecutableElement candidate, {
-    @required bool isNonNullableByDefault,
-  }) {
-    var candidates = namedCandidates[name];
-    if (candidates == null) {
-      candidates = <ExecutableElement>[];
-      namedCandidates[name] = candidates;
-    }
-
-    if (!isNonNullableByDefault) {
-      candidate = Member.legacy(candidate);
-    }
-
-    candidates.add(candidate);
-  }
-
-  void _addCandidates(
-    Map<Name, List<ExecutableElement>> namedCandidates,
-    Interface interface, {
-    @required bool isNonNullableByDefault,
-  }) {
-    var map = interface.map;
-    for (var name in map.keys) {
-      var candidate = map[name];
-      _addCandidate(namedCandidates, name, candidate,
-          isNonNullableByDefault: isNonNullableByDefault);
-    }
-  }
-
-  void _addImplemented(
-      Map<Name, ExecutableElement> implemented, InterfaceType type) {
-    var libraryUri = type.element.librarySource.uri;
-
-    void addMember(ExecutableElement member) {
-      if (!member.isAbstract && !member.isStatic) {
-        var name = Name(libraryUri, member.name);
-        implemented[name] = member;
-      }
-    }
-
-    void addMembers(InterfaceType type) {
-      type.methods.forEach(addMember);
-      type.accessors.forEach(addMember);
-    }
-
-    addMembers(type);
-  }
-
   /// Check that all [candidates] for the given [name] have the same kind, all
   /// getters, all methods, or all setter.  If a conflict found, return the
   /// new [Conflict] instance that describes it.
@@ -473,7 +358,7 @@
         method ??= candidate;
       }
     }
-    return Conflict(name, candidates, getter, method);
+    return GetterMethodConflict(name: name, getter: getter, method: method);
   }
 
   /// The given [namedCandidates] maps names to candidates from direct
@@ -532,7 +417,12 @@
 
       if (validOverrides.isEmpty) {
         conflicts ??= <Conflict>[];
-        conflicts.add(Conflict(name, candidates));
+        conflicts.add(
+          CandidatesConflict(
+            name: name,
+            candidates: candidates,
+          ),
+        );
         continue;
       }
 
@@ -546,29 +436,251 @@
     return conflicts;
   }
 
-  Map<Name, ExecutableElement> _getTypeMembers(InterfaceType type) {
-    var declared = <Name, ExecutableElement>{};
-    var libraryUri = type.element.librarySource.uri;
+  Interface _getInterfaceClass(ClassElement element) {
+    var classLibrary = element.library;
+    var isNonNullableByDefault = classLibrary.isNonNullableByDefault;
 
-    var methods = type.methods;
-    for (var i = 0; i < methods.length; i++) {
-      var method = methods[i];
-      if (!method.isStatic) {
-        var name = Name(libraryUri, method.name);
-        declared[name] = method;
+    var namedCandidates = <Name, List<ExecutableElement>>{};
+    var superImplemented = <Map<Name, ExecutableElement>>[];
+    var implemented = <Name, ExecutableElement>{};
+
+    Interface superTypeInterface;
+    var superType = element.supertype;
+    if (superType != null) {
+      var substitution = Substitution.fromInterfaceType(superType);
+      superTypeInterface = getInterface(superType.element);
+      _addCandidates(
+        namedCandidates: namedCandidates,
+        substitution: substitution,
+        interface: superTypeInterface,
+        isNonNullableByDefault: isNonNullableByDefault,
+      );
+
+      for (var entry in superTypeInterface.implemented.entries) {
+        var executable = entry.value;
+        executable = ExecutableMember.from2(executable, substitution);
+        if (!isNonNullableByDefault) {
+          executable = Member.legacy(executable);
+        }
+        implemented[entry.key] = executable;
+      }
+
+      superImplemented.add(implemented);
+    }
+
+    // TODO(scheglov) Handling of members for super and mixins is not
+    // optimal. We always have just one member for each name in super,
+    // multiple candidates happen only when we merge super and multiple
+    // interfaces. Consider using `Map<Name, ExecutableElement>` here.
+    var mixinsConflicts = <List<Conflict>>[];
+    for (var mixin in element.mixins) {
+      var mixinElement = mixin.element;
+      var substitution = Substitution.fromInterfaceType(mixin);
+      var mixinInterface = getInterface(mixinElement);
+      // `class X extends S with M1, M2 {}` is semantically a sequence of:
+      //     class S&M1 extends S implements M1 {
+      //       // declared M1 members
+      //     }
+      //     class S&M2 extends S&M1 implements M2 {
+      //       // declared M2 members
+      //     }
+      //     class X extends S&M2 {
+      //       // declared X members
+      //     }
+      // So, each mixin always replaces members in the interface.
+      // And there are individual override conflicts for each mixin.
+      var candidatesFromSuperAndMixin = <Name, List<ExecutableElement>>{};
+      var mixinConflicts = <Conflict>[];
+      for (var name in mixinInterface.map.keys) {
+        var candidate = ExecutableMember.from2(
+          mixinInterface.map[name],
+          substitution,
+        );
+
+        var currentList = namedCandidates[name];
+        if (currentList == null) {
+          namedCandidates[name] = [
+            isNonNullableByDefault ? candidate : Member.legacy(candidate),
+          ];
+          continue;
+        }
+
+        var current = currentList.single;
+        if (candidate.enclosingElement == mixinElement) {
+          namedCandidates[name] = [
+            isNonNullableByDefault ? candidate : Member.legacy(candidate),
+          ];
+          if (current.kind != candidate.kind) {
+            var currentIsGetter = current.kind == ElementKind.GETTER;
+            mixinConflicts.add(
+              GetterMethodConflict(
+                name: name,
+                getter: currentIsGetter ? current : candidate,
+                method: currentIsGetter ? candidate : current,
+              ),
+            );
+          }
+        } else {
+          candidatesFromSuperAndMixin[name] = [current, candidate];
+        }
+      }
+
+      // Merge members from the superclass and the mixin interface.
+      {
+        var map = <Name, ExecutableElement>{};
+        _findMostSpecificFromNamedCandidates(
+          element,
+          map,
+          candidatesFromSuperAndMixin,
+          doTopMerge: true,
+        );
+        for (var entry in map.entries) {
+          namedCandidates[entry.key] = [
+            isNonNullableByDefault ? entry.value : Member.legacy(entry.value),
+          ];
+        }
+      }
+
+      mixinsConflicts.add(mixinConflicts);
+
+      implemented = Map.of(implemented);
+      _addMixinMembers(
+        implemented: implemented,
+        substitution: substitution,
+        mixin: mixinInterface,
+        isNonNullableByDefault: isNonNullableByDefault,
+      );
+
+      superImplemented.add(implemented);
+    }
+
+    for (var interface in element.interfaces) {
+      _addCandidates(
+        namedCandidates: namedCandidates,
+        substitution: Substitution.fromInterfaceType(interface),
+        interface: getInterface(interface.element),
+        isNonNullableByDefault: isNonNullableByDefault,
+      );
+    }
+
+    implemented = Map.of(implemented);
+    _addImplemented(implemented, element);
+
+    // If a class declaration has a member declaration, the signature of that
+    // member declaration becomes the signature in the interface.
+    var declared = _getTypeMembers(element);
+
+    // If a class declaration does not have a member declaration with a
+    // particular name, but some super-interfaces do have a member with that
+    // name, it's a compile-time error if there is no signature among the
+    // super-interfaces that is a valid override of all the other
+    // super-interface signatures with the same name. That "most specific"
+    // signature becomes the signature of the class's interface.
+    var interface = Map.of(declared);
+    List<Conflict> conflicts = _findMostSpecificFromNamedCandidates(
+      element,
+      interface,
+      namedCandidates,
+      doTopMerge: true,
+    );
+
+    var noSuchMethodForwarders = <Name>{};
+    if (element.isAbstract) {
+      if (superTypeInterface != null) {
+        noSuchMethodForwarders = superTypeInterface._noSuchMethodForwarders;
+      }
+    } else {
+      var noSuchMethod = implemented[_noSuchMethodName];
+      if (noSuchMethod != null && !_isDeclaredInObject(noSuchMethod)) {
+        var superForwarders = superTypeInterface?._noSuchMethodForwarders;
+        for (var name in interface.keys) {
+          if (!implemented.containsKey(name) ||
+              superForwarders != null && superForwarders.contains(name)) {
+            implemented[name] = interface[name];
+            noSuchMethodForwarders.add(name);
+          }
+        }
       }
     }
 
-    var accessors = type.accessors;
-    for (var i = 0; i < accessors.length; i++) {
-      var accessor = accessors[i];
-      if (!accessor.isStatic) {
-        var name = Name(libraryUri, accessor.name);
-        declared[name] = accessor;
+    /// TODO(scheglov) Instead of merging conflicts we could report them on
+    /// the corresponding mixins applied in the class.
+    for (var mixinConflicts in mixinsConflicts) {
+      if (mixinConflicts.isNotEmpty) {
+        conflicts ??= [];
+        conflicts.addAll(mixinConflicts);
       }
     }
 
-    return declared;
+    return Interface._(
+      interface,
+      declared,
+      implemented,
+      noSuchMethodForwarders,
+      namedCandidates,
+      superImplemented,
+      conflicts ?? const [],
+    );
+  }
+
+  Interface _getInterfaceMixin(ClassElement element) {
+    var classLibrary = element.library;
+    var isNonNullableByDefault = classLibrary.isNonNullableByDefault;
+
+    var superCandidates = <Name, List<ExecutableElement>>{};
+    for (var constraint in element.superclassConstraints) {
+      var substitution = Substitution.fromInterfaceType(constraint);
+      var interfaceObj = getInterface(constraint.element);
+      _addCandidates(
+        namedCandidates: superCandidates,
+        substitution: substitution,
+        interface: interfaceObj,
+        isNonNullableByDefault: isNonNullableByDefault,
+      );
+    }
+
+    // `mixin M on S1, S2 {}` can call using `super` any instance member
+    // from its superclass constraints, whether it is abstract or concrete.
+    var superInterface = <Name, ExecutableElement>{};
+    var superConflicts = _findMostSpecificFromNamedCandidates(
+      element,
+      superInterface,
+      superCandidates,
+      doTopMerge: true,
+    );
+
+    var interfaceCandidates = Map.of(superCandidates);
+    for (var interface in element.interfaces) {
+      _addCandidates(
+        namedCandidates: interfaceCandidates,
+        substitution: Substitution.fromInterfaceType(interface),
+        interface: getInterface(interface.element),
+        isNonNullableByDefault: isNonNullableByDefault,
+      );
+    }
+
+    var declared = _getTypeMembers(element);
+
+    var interface = Map.of(declared);
+    var interfaceConflicts = _findMostSpecificFromNamedCandidates(
+      element,
+      interface,
+      interfaceCandidates,
+      doTopMerge: true,
+    );
+
+    var implemented = <Name, ExecutableElement>{};
+    _addImplemented(implemented, element);
+
+    return Interface._(
+      interface,
+      declared,
+      implemented,
+      {},
+      interfaceCandidates,
+      [superInterface],
+      <Conflict>[...?superConflicts, ...?interfaceConflicts],
+    );
   }
 
   /// Given one or more [validOverrides], merge them into a single resulting
@@ -637,6 +749,31 @@
     }
   }
 
+  static Map<Name, ExecutableElement> _getTypeMembers(ClassElement element) {
+    var declared = <Name, ExecutableElement>{};
+    var libraryUri = element.librarySource.uri;
+
+    var methods = element.methods;
+    for (var i = 0; i < methods.length; i++) {
+      var method = methods[i];
+      if (!method.isStatic) {
+        var name = Name(libraryUri, method.name);
+        declared[name] = method;
+      }
+    }
+
+    var accessors = element.accessors;
+    for (var i = 0; i < accessors.length; i++) {
+      var accessor = accessors[i];
+      if (!accessor.isStatic) {
+        var name = Name(libraryUri, accessor.name);
+        declared[name] = accessor;
+      }
+    }
+
+    return declared;
+  }
+
   static bool _isDeclaredInObject(ExecutableElement element) {
     var enclosing = element.enclosingElement;
     return enclosing is ClassElement &&
diff --git a/pkg/analyzer/lib/src/dart/element/member.dart b/pkg/analyzer/lib/src/dart/element/member.dart
index 2fc7443..ce6ced7 100644
--- a/pkg/analyzer/lib/src/dart/element/member.dart
+++ b/pkg/analyzer/lib/src/dart/element/member.dart
@@ -232,26 +232,32 @@
       return null;
     }
 
+    var isLegacy = false;
     var combined = substitution;
     if (element is ExecutableMember) {
       ExecutableMember member = element;
       element = member.declaration;
+
+      isLegacy = member.isLegacy;
+
       var map = <TypeParameterElement, DartType>{};
-      map.addAll(member._substitution.map);
+      for (var entry in member._substitution.map.entries) {
+        map[entry.key] = substitution.substituteType(entry.value);
+      }
       map.addAll(substitution.map);
       combined = Substitution.fromMap(map);
     }
 
-    if (combined.map.isEmpty) {
+    if (!isLegacy && combined.map.isEmpty) {
       return element;
     }
 
     if (element is ConstructorElement) {
-      return ConstructorMember(element, combined, false);
+      return ConstructorMember(element, combined, isLegacy);
     } else if (element is MethodElement) {
-      return MethodMember(element, combined, false);
+      return MethodMember(element, combined, isLegacy);
     } else if (element is PropertyAccessorElement) {
-      return PropertyAccessorMember(element, combined, false);
+      return PropertyAccessorMember(element, combined, isLegacy);
     } else {
       throw UnimplementedError('(${element.runtimeType}) $element');
     }
diff --git a/pkg/analyzer/lib/src/dart/micro/analysis_context.dart b/pkg/analyzer/lib/src/dart/micro/analysis_context.dart
index 82a6e42..8254469 100644
--- a/pkg/analyzer/lib/src/dart/micro/analysis_context.dart
+++ b/pkg/analyzer/lib/src/dart/micro/analysis_context.dart
@@ -13,6 +13,7 @@
 import 'package:analyzer/src/dart/analysis/context_root.dart';
 import 'package:analyzer/src/dart/analysis/results.dart';
 import 'package:analyzer/src/dart/analysis/session.dart';
+import 'package:analyzer/src/dart/element/inheritance_manager3.dart';
 import 'package:analyzer/src/dart/micro/resolve_file.dart';
 import 'package:analyzer/src/generated/engine.dart' show AnalysisOptionsImpl;
 import 'package:analyzer/src/generated/source.dart';
@@ -83,6 +84,10 @@
   set analysisOptions(AnalysisOptionsImpl analysisOptions) {
     synchronousSession.analysisOptions = analysisOptions;
   }
+
+  InheritanceManager3 get inheritanceManager {
+    return analysisSession.inheritanceManager;
+  }
 }
 
 class _MicroAnalysisContextImpl implements AnalysisContext {
diff --git a/pkg/analyzer/lib/src/dart/micro/library_analyzer.dart b/pkg/analyzer/lib/src/dart/micro/library_analyzer.dart
index 3accea6..a805bcd 100644
--- a/pkg/analyzer/lib/src/dart/micro/library_analyzer.dart
+++ b/pkg/analyzer/lib/src/dart/micro/library_analyzer.dart
@@ -240,7 +240,7 @@
       ErrorReporter errorReporter, CompilationUnit unit) {
     ConstantVerifier constantVerifier = ConstantVerifier(
         errorReporter, _libraryElement, _declaredVariables,
-        featureSet: unit.featureSet, forAnalysisDriver: true);
+        featureSet: unit.featureSet);
     unit.accept(constantVerifier);
   }
 
@@ -260,8 +260,7 @@
     AnalysisErrorListener errorListener = _getErrorListener(file);
     ErrorReporter errorReporter = _getErrorReporter(file);
 
-    unit.accept(DeadCodeVerifier(errorReporter, unit.featureSet,
-        typeSystem: _typeSystem));
+    unit.accept(DeadCodeVerifier(errorReporter, typeSystem: _typeSystem));
 
     // Dart2js analysis.
     if (_analysisOptions.dart2jsHint) {
@@ -428,7 +427,7 @@
     // Use the ErrorVerifier to compute errors.
     //
     ErrorVerifier errorVerifier = ErrorVerifier(
-        errorReporter, _libraryElement, _typeProvider, _inheritance, false);
+        errorReporter, _libraryElement, _typeProvider, _inheritance);
     unit.accept(errorVerifier);
   }
 
diff --git a/pkg/analyzer/lib/src/dart/micro/library_graph.dart b/pkg/analyzer/lib/src/dart/micro/library_graph.dart
index c392e42..4d47e4d 100644
--- a/pkg/analyzer/lib/src/dart/micro/library_graph.dart
+++ b/pkg/analyzer/lib/src/dart/micro/library_graph.dart
@@ -64,6 +64,7 @@
   final Set<FileState> directReferencedFiles = Set();
   final Set<FileState> directReferencedLibraries = Set();
   final List<FileState> libraryFiles = [];
+  FileState partOfLibrary;
 
   List<int> _digest;
   bool _exists;
@@ -215,6 +216,13 @@
       var file = _fileForRelativeUri(uri);
       partedFiles.add(file);
     }
+    if (unlinked2.hasPartOfDirective) {
+      var uri = unlinked2.partOfUri;
+      if (uri.isNotEmpty) {
+        partOfLibrary = _fileForRelativeUri(uri);
+        directReferencedFiles.add(partOfLibrary);
+      }
+    }
     libraryFiles.add(this);
     libraryFiles.addAll(partedFiles);
 
@@ -292,6 +300,7 @@
     var hasDartCoreImport = false;
     var hasLibraryDirective = false;
     var hasPartOfDirective = false;
+    var partOfUriStr = '';
     for (var directive in unit.directives) {
       if (directive is ExportDirective) {
         var builder = _serializeNamespaceDirective(directive);
@@ -309,6 +318,9 @@
         parts.add(uriStr ?? '');
       } else if (directive is PartOfDirective) {
         hasPartOfDirective = true;
+        if (directive.uri != null) {
+          partOfUriStr = directive.uri.stringValue;
+        }
       }
     }
     if (!hasDartCoreImport) {
@@ -326,6 +338,7 @@
       parts: parts,
       hasLibraryDirective: hasLibraryDirective,
       hasPartOfDirective: hasPartOfDirective,
+      partOfUri: partOfUriStr,
       lineStarts: unit.lineInfo.lineStarts,
       informativeData: informativeData,
     );
diff --git a/pkg/analyzer/lib/src/dart/micro/resolve_file.dart b/pkg/analyzer/lib/src/dart/micro/resolve_file.dart
index c173f89..2c10232 100644
--- a/pkg/analyzer/lib/src/dart/micro/resolve_file.dart
+++ b/pkg/analyzer/lib/src/dart/micro/resolve_file.dart
@@ -18,7 +18,6 @@
 import 'package:analyzer/src/dart/analysis/feature_set_provider.dart';
 import 'package:analyzer/src/dart/analysis/performance_logger.dart';
 import 'package:analyzer/src/dart/analysis/results.dart';
-import 'package:analyzer/src/dart/element/inheritance_manager3.dart';
 import 'package:analyzer/src/dart/micro/analysis_context.dart';
 import 'package:analyzer/src/dart/micro/library_analyzer.dart';
 import 'package:analyzer/src/dart/micro/library_graph.dart';
@@ -192,8 +191,9 @@
       return logger.run('Resolve $path', () {
         var fileContext = getFileContext(path);
         var file = fileContext.file;
+        var libraryFile = file.partOfLibrary ?? file;
 
-        libraryContext.load2(file);
+        libraryContext.load2(libraryFile);
 
         testView?.addResolvedFile(path);
 
@@ -202,6 +202,7 @@
         var unit = file.parse(errorListener, content);
 
         Map<FileState, UnitAnalysisResult> results;
+
         logger.run('Compute analysis results', () {
           var libraryAnalyzer = LibraryAnalyzer(
             fileContext.analysisOptions,
@@ -210,8 +211,8 @@
             (_) => true, // _isLibraryUri
             contextObjects.analysisContext,
             libraryContext.elementFactory,
-            libraryContext.inheritanceManager,
-            file,
+            contextObjects.inheritanceManager,
+            libraryFile,
             resourceProvider,
             (String path) => resourceProvider.getFile(path).readAsStringSync(),
           );
@@ -338,7 +339,7 @@
       if (workspace is WorkspaceWithDefaultAnalysisOptions) {
         var separator = resourceProvider.pathContext.separator;
         if (path
-            .contains('${separator}third_party${separator}dart${separator}')) {
+            .contains('${separator}third_party${separator}dart$separator')) {
           source = sourceFactory
               .forUri(WorkspaceWithDefaultAnalysisOptions.thirdPartyUri);
         } else {
@@ -415,7 +416,6 @@
   final MicroContextObjects contextObjects;
 
   LinkedElementFactory elementFactory;
-  InheritanceManager3 inheritanceManager;
 
   Set<LibraryCycle> loadedBundles = Set.identity();
 
@@ -563,7 +563,6 @@
     // already include the [targetLibrary]. When this happens, [loadBundle]
     // exists without doing any work. But the type provider must be created.
     _createElementFactoryTypeProvider();
-    inheritanceManager = InheritanceManager3();
   }
 
   void _createElementFactory() {
diff --git a/pkg/analyzer/lib/src/dart/resolver/function_expression_resolver.dart b/pkg/analyzer/lib/src/dart/resolver/function_expression_resolver.dart
new file mode 100644
index 0000000..a2c9566
--- /dev/null
+++ b/pkg/analyzer/lib/src/dart/resolver/function_expression_resolver.dart
@@ -0,0 +1,249 @@
+// Copyright (c) 2020, the Dart project authors. Please see the AUTHORS file
+// 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.
+
+import 'package:analyzer/dart/ast/ast.dart';
+import 'package:analyzer/dart/element/element.dart';
+import 'package:analyzer/dart/element/type.dart';
+import 'package:analyzer/src/dart/element/element.dart';
+import 'package:analyzer/src/dart/element/type.dart';
+import 'package:analyzer/src/dart/resolver/flow_analysis_visitor.dart';
+import 'package:analyzer/src/dart/resolver/invocation_inference_helper.dart';
+import 'package:analyzer/src/generated/migration.dart';
+import 'package:analyzer/src/generated/resolver.dart';
+import 'package:analyzer/src/generated/type_promotion_manager.dart';
+import 'package:meta/meta.dart';
+
+class FunctionExpressionResolver {
+  final ResolverVisitor _resolver;
+  final MigrationResolutionHooks _migrationResolutionHooks;
+  final InvocationInferenceHelper _inferenceHelper;
+  final FlowAnalysisHelper _flowAnalysis;
+  final TypePromotionManager _promoteManager;
+
+  FunctionExpressionResolver({
+    @required ResolverVisitor resolver,
+    @required MigrationResolutionHooks migrationResolutionHooks,
+    @required FlowAnalysisHelper flowAnalysis,
+    @required TypePromotionManager promoteManager,
+  })  : _resolver = resolver,
+        _migrationResolutionHooks = migrationResolutionHooks,
+        _inferenceHelper = resolver.inferenceHelper,
+        _flowAnalysis = flowAnalysis,
+        _promoteManager = promoteManager;
+
+  bool get _isNonNullableByDefault => _typeSystem.isNonNullableByDefault;
+
+  TypeProvider get _typeProvider => _resolver.typeProvider;
+
+  TypeSystemImpl get _typeSystem => _resolver.typeSystem;
+
+  void resolve(FunctionExpression node) {
+    var isFunctionDeclaration = node.parent is FunctionDeclaration;
+    var body = node.body;
+
+    if (_flowAnalysis != null) {
+      if (_flowAnalysis.flow != null && !isFunctionDeclaration) {
+        _flowAnalysis.executableDeclaration_enter(node, node.parameters, true);
+      }
+    } else {
+      _promoteManager.enterFunctionBody(body);
+    }
+
+    DartType returnType;
+    var contextType = InferenceContext.getContext(node);
+    if (contextType is FunctionType) {
+      contextType = _matchFunctionTypeParameters(
+        node.typeParameters,
+        contextType,
+      );
+      if (contextType is FunctionType) {
+        _inferFormalParameterList(node.parameters, contextType);
+        returnType = _resolver.computeReturnOrYieldType(contextType.returnType);
+        InferenceContext.setType(body, returnType);
+      }
+    }
+
+    node.visitChildren(_resolver);
+    _resolve2(node);
+
+    if (_flowAnalysis != null) {
+      if (_flowAnalysis.flow != null && !isFunctionDeclaration) {
+        _resolver.checkForBodyMayCompleteNormally(
+          returnType: returnType,
+          body: body,
+          errorNode: body,
+        );
+        _flowAnalysis.flow?.functionExpression_end();
+        _resolver.nullSafetyDeadCodeVerifier?.flowEnd(node);
+      }
+    } else {
+      _promoteManager.exitFunctionBody();
+    }
+  }
+
+  /// Given a function body and its return type, compute the return type of
+  /// the entire function, taking into account whether the function body
+  /// is `sync*`, `async` or `async*`.
+  ///
+  /// See also [FunctionBody.isAsynchronous], [FunctionBody.isGenerator].
+  DartType _computeReturnTypeOfFunction(FunctionBody body, DartType type) {
+    if (body.isGenerator) {
+      InterfaceType generatedType = body.isAsynchronous
+          ? _typeProvider.streamType2(type)
+          : _typeProvider.iterableType2(type);
+      return _nonNullable(generatedType);
+    } else if (body.isAsynchronous) {
+      if (type.isDartAsyncFutureOr) {
+        type = (type as InterfaceType).typeArguments[0];
+      }
+      DartType futureType =
+          _typeProvider.futureType2(_typeSystem.flatten(type));
+      return _nonNullable(futureType);
+    } else {
+      return type;
+    }
+  }
+
+  /// Given a formal parameter list and a function type use the function type
+  /// to infer types for any of the parameters which have implicit (missing)
+  /// types.  Returns true if inference has occurred.
+  bool _inferFormalParameterList(
+      FormalParameterList node, DartType functionType) {
+    bool inferred = false;
+    if (node != null && functionType is FunctionType) {
+      void inferType(ParameterElementImpl p, DartType inferredType) {
+        // Check that there is no declared type, and that we have not already
+        // inferred a type in some fashion.
+        if (p.hasImplicitType && (p.type == null || p.type.isDynamic)) {
+          inferredType = _typeSystem.greatestClosure(inferredType);
+          if (inferredType.isDartCoreNull || inferredType is NeverTypeImpl) {
+            inferredType = _isNonNullableByDefault
+                ? _typeSystem.objectQuestion
+                : _typeSystem.objectStar;
+          }
+          if (_migrationResolutionHooks != null) {
+            inferredType = _migrationResolutionHooks
+                .modifyInferredParameterType(p, inferredType);
+          }
+          if (!inferredType.isDynamic) {
+            p.type = inferredType;
+            inferred = true;
+          }
+        }
+      }
+
+      List<ParameterElement> parameters = node.parameterElements;
+      {
+        Iterator<ParameterElement> positional =
+            parameters.where((p) => p.isPositional).iterator;
+        Iterator<ParameterElement> fnPositional =
+            functionType.parameters.where((p) => p.isPositional).iterator;
+        while (positional.moveNext() && fnPositional.moveNext()) {
+          inferType(positional.current, fnPositional.current.type);
+        }
+      }
+
+      {
+        Map<String, DartType> namedParameterTypes =
+            functionType.namedParameterTypes;
+        Iterable<ParameterElement> named = parameters.where((p) => p.isNamed);
+        for (ParameterElementImpl p in named) {
+          if (!namedParameterTypes.containsKey(p.name)) {
+            continue;
+          }
+          inferType(p, namedParameterTypes[p.name]);
+        }
+      }
+    }
+    return inferred;
+  }
+
+  /// Infers the return type of a local function, either a lambda or
+  /// (in strong mode) a local function declaration.
+  DartType _inferLocalFunctionReturnType(FunctionExpression node) {
+    FunctionBody body = node.body;
+
+    DartType computedType =
+        InferenceContext.getContext(body) ?? DynamicTypeImpl.instance;
+
+    return _computeReturnTypeOfFunction(body, computedType);
+  }
+
+  /// Given a downward inference type [fnType], and the declared
+  /// [typeParameterList] for a function expression, determines if we can enable
+  /// downward inference and if so, returns the function type to use for
+  /// inference.
+  ///
+  /// This will return null if inference is not possible. This happens when
+  /// there is no way we can find a subtype of the function type, given the
+  /// provided type parameter list.
+  FunctionType _matchFunctionTypeParameters(
+      TypeParameterList typeParameterList, FunctionType fnType) {
+    if (typeParameterList == null) {
+      if (fnType.typeFormals.isEmpty) {
+        return fnType;
+      }
+
+      // A non-generic function cannot be a subtype of a generic one.
+      return null;
+    }
+
+    NodeList<TypeParameter> typeParameters = typeParameterList.typeParameters;
+    if (fnType.typeFormals.isEmpty) {
+      // TODO(jmesserly): this is a legal subtype. We don't currently infer
+      // here, but we could.  This is similar to
+      // Dart2TypeSystem.inferFunctionTypeInstantiation, but we don't
+      // have the FunctionType yet for the current node, so it's not quite
+      // straightforward to apply.
+      return null;
+    }
+
+    if (fnType.typeFormals.length != typeParameters.length) {
+      // A subtype cannot have different number of type formals.
+      return null;
+    }
+
+    // Same number of type formals. Instantiate the function type so its
+    // parameter and return type are in terms of the surrounding context.
+    return fnType.instantiate(typeParameters.map((TypeParameter t) {
+      return t.declaredElement.instantiate(
+        nullabilitySuffix: _resolver.noneOrStarSuffix,
+      );
+    }).toList());
+  }
+
+  /// Return the non-nullable variant of the [type] if NNBD is enabled, otherwise
+  /// return the type itself.
+  ///
+  /// TODO(scheglov) this is duplicate
+  DartType _nonNullable(DartType type) {
+    if (_isNonNullableByDefault) {
+      return _typeSystem.promoteToNonNull(type);
+    }
+    return type;
+  }
+
+  void _resolve2(FunctionExpression node) {
+    var functionElement = node.declaredElement as ExecutableElementImpl;
+
+    if (_shouldUpdateReturnType(node)) {
+      var returnType = _inferLocalFunctionReturnType(node);
+      functionElement.returnType = returnType;
+    }
+
+    _inferenceHelper.recordStaticType(node, functionElement.type);
+  }
+
+  static bool _shouldUpdateReturnType(FunctionExpression node) {
+    var parent = node.parent;
+    if (parent is FunctionDeclaration) {
+      // Local function without declared return type.
+      return node.parent.parent is FunctionDeclarationStatement &&
+          parent.returnType == null;
+    } else {
+      // Pure function expression.
+      return true;
+    }
+  }
+}
diff --git a/pkg/analyzer/lib/src/dart/resolver/invocation_inference_helper.dart b/pkg/analyzer/lib/src/dart/resolver/invocation_inference_helper.dart
index a917c05..5d517cb 100644
--- a/pkg/analyzer/lib/src/dart/resolver/invocation_inference_helper.dart
+++ b/pkg/analyzer/lib/src/dart/resolver/invocation_inference_helper.dart
@@ -7,7 +7,6 @@
 import 'package:analyzer/dart/element/type.dart';
 import 'package:analyzer/error/listener.dart';
 import 'package:analyzer/src/dart/ast/ast.dart';
-import 'package:analyzer/src/dart/element/element.dart';
 import 'package:analyzer/src/dart/element/type.dart';
 import 'package:analyzer/src/dart/element/type_algebra.dart';
 import 'package:analyzer/src/dart/element/type_provider.dart';
@@ -30,7 +29,6 @@
 
   InvocationInferenceHelper(
       {@required ResolverVisitor resolver,
-      @required LibraryElementImpl definingLibrary,
       @required ErrorReporter errorReporter,
       @required FlowAnalysisHelper flowAnalysis,
       @required TypeSystemImpl typeSystem,
diff --git a/pkg/analyzer/lib/src/dart/resolver/method_invocation_resolver.dart b/pkg/analyzer/lib/src/dart/resolver/method_invocation_resolver.dart
index bf681d1..6e73920 100644
--- a/pkg/analyzer/lib/src/dart/resolver/method_invocation_resolver.dart
+++ b/pkg/analyzer/lib/src/dart/resolver/method_invocation_resolver.dart
@@ -576,9 +576,8 @@
       return;
     }
 
-    var receiverType = enclosingClass.thisType;
-    var target = _inheritance.getMember(
-      receiverType,
+    var target = _inheritance.getMember2(
+      enclosingClass,
       _currentName,
       forSuper: true,
     );
@@ -597,7 +596,7 @@
     // Otherwise, this is an error.
     // But we would like to give the user at least some resolution.
     // So, we try to find the interface target.
-    target = _inheritance.getInherited(receiverType, _currentName);
+    target = _inheritance.getInherited2(enclosingClass, _currentName);
     if (target != null) {
       nameNode.staticElement = target;
       _setResolution(node, target.type);
diff --git a/pkg/analyzer/lib/src/error/best_practices_verifier.dart b/pkg/analyzer/lib/src/error/best_practices_verifier.dart
index 71bcb62..3e1289c 100644
--- a/pkg/analyzer/lib/src/error/best_practices_verifier.dart
+++ b/pkg/analyzer/lib/src/error/best_practices_verifier.dart
@@ -307,15 +307,14 @@
             Name name = Name(_currentLibrary.source.uri, element.name);
             Element enclosingElement = element.enclosingElement;
             if (enclosingElement is ClassElement) {
-              InterfaceType classType = enclosingElement.thisType;
-              var overridden = _inheritanceManager.getMember(classType, name,
-                  forSuper: true);
+              var overridden = _inheritanceManager
+                  .getMember2(enclosingElement, name, forSuper: true);
               // Check for a setter.
               if (overridden == null) {
                 Name setterName =
                     Name(_currentLibrary.source.uri, '${element.name}=');
                 overridden = _inheritanceManager
-                    .getMember(classType, setterName, forSuper: true);
+                    .getMember2(enclosingElement, setterName, forSuper: true);
               }
               return overridden;
             }
@@ -462,21 +461,21 @@
     ExecutableElement element = node.declaredElement;
     Element enclosingElement = element?.enclosingElement;
 
-    InterfaceType classType =
-        enclosingElement is ClassElement ? enclosingElement.thisType : null;
     Name name = Name(_currentLibrary.source.uri, element?.name ?? '');
 
     bool elementIsOverride() =>
-        element is ClassMemberElement && enclosingElement != null
-            ? _inheritanceManager.getOverridden(classType, name) != null
+        element is ClassMemberElement && enclosingElement is ClassElement
+            ? _inheritanceManager.getOverridden2(enclosingElement, name) != null
             : false;
     ExecutableElement getConcreteOverriddenElement() =>
-        element is ClassMemberElement && enclosingElement != null
-            ? _inheritanceManager.getMember(classType, name, forSuper: true)
+        element is ClassMemberElement && enclosingElement is ClassElement
+            ? _inheritanceManager.getMember2(enclosingElement, name,
+                forSuper: true)
             : null;
     ExecutableElement getOverriddenPropertyAccessor() =>
-        element is PropertyAccessorElement && enclosingElement != null
-            ? _inheritanceManager.getMember(classType, name, forSuper: true)
+        element is PropertyAccessorElement && enclosingElement is ClassElement
+            ? _inheritanceManager.getMember2(enclosingElement, name,
+                forSuper: true)
             : null;
 
     if (element != null && element.hasDeprecated) {
@@ -1500,6 +1499,7 @@
 class _InvalidAccessVerifier {
   static final _templateExtension = '.template';
   static final _testDir = '${path.separator}test${path.separator}';
+  static final _testDriverDir = '${path.separator}test_driver${path.separator}';
   static final _testingDir = '${path.separator}testing${path.separator}';
 
   final ErrorReporter _errorReporter;
@@ -1513,7 +1513,9 @@
   _InvalidAccessVerifier(this._errorReporter, this._library) {
     var path = _library.source.fullName;
     _inTemplateSource = path.contains(_templateExtension);
-    _inTestDirectory = path.contains(_testDir) || path.contains(_testingDir);
+    _inTestDirectory = path.contains(_testDir) ||
+        path.contains(_testDriverDir) ||
+        path.contains(_testingDir);
   }
 
   /// Produces a hint if [identifier] is accessed from an invalid location. In
diff --git a/pkg/analyzer/lib/src/error/codes.dart b/pkg/analyzer/lib/src/error/codes.dart
index 3a45736..38fb787 100644
--- a/pkg/analyzer/lib/src/error/codes.dart
+++ b/pkg/analyzer/lib/src/error/codes.dart
@@ -12,6 +12,10 @@
 export 'package:analyzer/src/dart/error/lint_codes.dart';
 export 'package:analyzer/src/dart/error/todo_codes.dart';
 
+// It is hard to visually separate each code's _doc comment_ from its published
+// _documentation comment_ when each is written as an end-of-line comment.
+// ignore_for_file: slash_for_doc_comments
+
 /**
  * The error codes used for compile time errors caused by constant evaluation
  * that would throw an exception when run in checked mode. The client of the
@@ -5304,12 +5308,14 @@
       correction: "Try adding a part-of directive to '{0}'.",
       hasPublishedDocs: true);
 
-  /// Parts: It is a static warning if the referenced part declaration
-  /// <i>p</i> names a library that does not have a library tag.
-  ///
-  /// Parameters:
-  /// 0: the URI of the expected library
-  /// 1: the non-matching actual library name from the "part of" declaration
+  /**
+   * Parts: It is a static warning if the referenced part declaration <i>p</i>
+   * names a library that does not have a library tag.
+   *
+   * Parameters:
+   * 0: the URI of the expected library
+   * 1: the non-matching actual library name from the "part of" declaration
+   */
   static const CompileTimeErrorCode PART_OF_UNNAMED_LIBRARY =
       CompileTimeErrorCode(
           'PART_OF_UNNAMED_LIBRARY',
@@ -5766,11 +5772,13 @@
       CompileTimeErrorCode('SUPER_INITIALIZER_IN_OBJECT',
           "The class 'Object' can't invoke a constructor from a superclass.");
 
-  /// It is an error if any case of a switch statement except the last case
-  /// (the default case if present) may complete normally. The previous
-  /// syntactic restriction requiring the last statement of each case to be
-  /// one of an enumerated list of statements (break, continue, return,
-  /// throw, or rethrow) is removed.
+  /**
+   * It is an error if any case of a switch statement except the last case (the
+   * default case if present) may complete normally. The previous syntactic
+   * restriction requiring the last statement of each case to be one of an
+   * enumerated list of statements (break, continue, return, throw, or rethrow)
+   * is removed.
+   */
   static const CompileTimeErrorCode SWITCH_CASE_COMPLETES_NORMALLY =
       CompileTimeErrorCode('SWITCH_CASE_COMPLETES_NORMALLY',
           "The 'case' should not complete normally.",
diff --git a/pkg/analyzer/lib/src/error/dead_code_verifier.dart b/pkg/analyzer/lib/src/error/dead_code_verifier.dart
index 780f770..79f497e 100644
--- a/pkg/analyzer/lib/src/error/dead_code_verifier.dart
+++ b/pkg/analyzer/lib/src/error/dead_code_verifier.dart
@@ -2,7 +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.
 
-import 'package:analyzer/dart/analysis/features.dart';
 import 'package:analyzer/dart/ast/ast.dart';
 import 'package:analyzer/dart/ast/token.dart';
 import 'package:analyzer/dart/ast/visitor.dart';
@@ -40,8 +39,7 @@
   /// Initialize a newly created dead code verifier that will report dead code
   /// to the given [errorReporter] and will use the given [typeSystem] if one is
   /// provided.
-  DeadCodeVerifier(this._errorReporter, FeatureSet featureSet,
-      {TypeSystemImpl typeSystem})
+  DeadCodeVerifier(this._errorReporter, {TypeSystemImpl typeSystem})
       : this._typeSystem = typeSystem ??
             TypeSystemImpl(
               implicitCasts: true,
diff --git a/pkg/analyzer/lib/src/error/inheritance_override.dart b/pkg/analyzer/lib/src/error/inheritance_override.dart
index 7d6fc78..7b6902e 100644
--- a/pkg/analyzer/lib/src/error/inheritance_override.dart
+++ b/pkg/analyzer/lib/src/error/inheritance_override.dart
@@ -133,10 +133,8 @@
       return;
     }
 
-    InterfaceTypeImpl type = classElement.thisType;
-
     // Compute the interface of the class.
-    var interface = inheritance.getInterface(type);
+    var interface = inheritance.getInterface(classElement);
 
     // Report conflicts between direct superinterfaces of the class.
     for (var conflict in interface.conflicts) {
@@ -146,6 +144,7 @@
     if (classElement.supertype != null) {
       directSuperInterfaces.add(classElement.supertype);
     }
+    directSuperInterfaces.addAll(classElement.superclassConstraints);
 
     // Each mixin in `class C extends S with M0, M1, M2 {}` is equivalent to:
     //   class S&M0 extends S { ...members of M0... }
@@ -155,7 +154,7 @@
     // So, we need to check members of each mixin against superinterfaces
     // of `S`, and superinterfaces of all previous mixins.
     var mixinNodes = withClause?.mixinTypes;
-    var mixinTypes = type.mixins;
+    var mixinTypes = classElement.mixins;
     for (var i = 0; i < mixinTypes.length; i++) {
       var mixinType = mixinTypes[i];
       _checkDeclaredMembers(mixinNodes[i], mixinType, mixinIndex: i);
@@ -301,7 +300,7 @@
   }
 
   /// Check that instance members of [type] are valid overrides of the
-  /// corresponding instance members in each of [allSuperinterfaces].
+  /// corresponding instance members in each of [directSuperInterfaces].
   void _checkDeclaredMembers(AstNode node, InterfaceTypeImpl type,
       {@required int mixinIndex}) {
     var libraryUri = type.element.library.source.uri;
@@ -598,7 +597,7 @@
   void _reportInconsistentInheritance(AstNode node, Conflict conflict) {
     var name = conflict.name;
 
-    if (conflict.getter != null && conflict.method != null) {
+    if (conflict is GetterMethodConflict) {
       reporter.reportErrorForNode(
         CompileTimeErrorCode.INCONSISTENT_INHERITANCE_GETTER_AND_METHOD,
         node,
@@ -608,7 +607,7 @@
           conflict.method.enclosingElement.name
         ],
       );
-    } else {
+    } else if (conflict is CandidatesConflict) {
       var candidatesStr = conflict.candidates.map((candidate) {
         var className = candidate.enclosingElement.name;
         var typeStr = candidate.type.getDisplayString(
@@ -622,6 +621,8 @@
         node,
         [name.name, candidatesStr],
       );
+    } else {
+      throw StateError('${conflict.runtimeType}');
     }
   }
 
diff --git a/pkg/analyzer/lib/src/error/override_verifier.dart b/pkg/analyzer/lib/src/error/override_verifier.dart
index 93723e2..91c7968 100644
--- a/pkg/analyzer/lib/src/error/override_verifier.dart
+++ b/pkg/analyzer/lib/src/error/override_verifier.dart
@@ -5,7 +5,6 @@
 import 'package:analyzer/dart/ast/ast.dart';
 import 'package:analyzer/dart/ast/visitor.dart';
 import 'package:analyzer/dart/element/element.dart';
-import 'package:analyzer/dart/element/type.dart';
 import 'package:analyzer/error/listener.dart';
 import 'package:analyzer/src/dart/element/inheritance_manager3.dart';
 import 'package:analyzer/src/error/codes.dart';
@@ -24,7 +23,7 @@
   final ErrorReporter _errorReporter;
 
   /// The current class or mixin.
-  InterfaceType _currentType;
+  ClassElement _currentClass;
 
   OverrideVerifier(
       this._inheritance, LibraryElement library, this._errorReporter)
@@ -32,9 +31,9 @@
 
   @override
   visitClassDeclaration(ClassDeclaration node) {
-    _currentType = node.declaredElement.thisType;
+    _currentClass = node.declaredElement;
     super.visitClassDeclaration(node);
-    _currentType = null;
+    _currentClass = null;
   }
 
   @override
@@ -83,14 +82,14 @@
 
   @override
   visitMixinDeclaration(MixinDeclaration node) {
-    _currentType = node.declaredElement.thisType;
+    _currentClass = node.declaredElement;
     super.visitMixinDeclaration(node);
-    _currentType = null;
+    _currentClass = null;
   }
 
   /// Return `true` if the [member] overrides a member from a superinterface.
   bool _isOverride(ExecutableElement member) {
     var name = Name(_libraryUri, member.name);
-    return _inheritance.getOverridden(_currentType, name) != null;
+    return _inheritance.getOverridden2(_currentClass, name) != null;
   }
 }
diff --git a/pkg/analyzer/lib/src/error/return_type_verifier.dart b/pkg/analyzer/lib/src/error/return_type_verifier.dart
new file mode 100644
index 0000000..69f798f
--- /dev/null
+++ b/pkg/analyzer/lib/src/error/return_type_verifier.dart
@@ -0,0 +1,259 @@
+// Copyright (c) 2020, the Dart project authors. Please see the AUTHORS file
+// 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.
+
+import 'package:analyzer/dart/ast/ast.dart';
+import 'package:analyzer/dart/element/element.dart';
+import 'package:analyzer/dart/element/nullability_suffix.dart';
+import 'package:analyzer/dart/element/type.dart';
+import 'package:analyzer/error/listener.dart';
+import 'package:analyzer/src/dart/element/type.dart';
+import 'package:analyzer/src/dart/element/type_provider.dart';
+import 'package:analyzer/src/error/codes.dart';
+import 'package:analyzer/src/generated/error_verifier.dart';
+import 'package:analyzer/src/generated/resolver.dart';
+import 'package:meta/meta.dart';
+
+class ReturnTypeVerifier {
+  final TypeProviderImpl _typeProvider;
+  final TypeSystemImpl _typeSystem;
+  final ErrorReporter _errorReporter;
+
+  EnclosingExecutableContext enclosingExecutable;
+
+  ReturnTypeVerifier({
+    @required TypeProviderImpl typeProvider,
+    @required TypeSystemImpl typeSystem,
+    @required ErrorReporter errorReporter,
+  })  : _typeProvider = typeProvider,
+        _typeSystem = typeSystem,
+        _errorReporter = errorReporter;
+
+  /// Check that a type mis-match between the type of the [expression] and
+  /// the [expectedReturnType] by the enclosing method or function.
+  ///
+  /// This method is called both by [_checkForAllReturnStatementErrorCodes]
+  /// and [visitExpressionFunctionBody].
+  void verifyReturnExpression(Expression expression, DartType expectedType,
+      {bool isArrowFunction = false}) {
+    if (enclosingExecutable == null) {
+      return;
+    }
+    if (enclosingExecutable.isGenerator) {
+      // "return expression;" is disallowed in generators, but this is checked
+      // elsewhere.  Bare "return" is always allowed in generators regardless
+      // of the return type.  So no need to do any further checking.
+      return;
+    }
+    if (expression == null) {
+      return; // Empty returns are handled elsewhere
+    }
+
+    DartType expressionType = getStaticType(expression);
+
+    var toType = expectedType;
+    var fromType = expressionType;
+    if (enclosingExecutable.isAsynchronous) {
+      toType = _typeSystem.flatten(toType);
+      fromType = _typeSystem.flatten(fromType);
+      if (!_isLegalReturnType(_typeProvider.futureElement)) {
+        // ILLEGAL_ASYNC_RETURN_TYPE has already been reported, meaning the
+        // _declared_ return type is illegal; don't confuse by also reporting
+        // that the type being returned here does not match that illegal return
+        // type.
+        return;
+      }
+    }
+
+    void reportTypeError() {
+      String displayName = enclosingExecutable.element.displayName;
+
+      if (displayName.isEmpty) {
+        _errorReporter.reportErrorForNode(
+            StaticTypeWarningCode.RETURN_OF_INVALID_TYPE_FROM_CLOSURE,
+            expression,
+            [fromType, toType]);
+      } else if (enclosingExecutable.isMethod) {
+        _errorReporter.reportErrorForNode(
+            StaticTypeWarningCode.RETURN_OF_INVALID_TYPE_FROM_METHOD,
+            expression,
+            [fromType, toType, displayName]);
+      } else {
+        _errorReporter.reportErrorForNode(
+            StaticTypeWarningCode.RETURN_OF_INVALID_TYPE_FROM_FUNCTION,
+            expression,
+            [fromType, toType, displayName]);
+      }
+    }
+
+    // Anything can be returned to `void` in an arrow bodied function
+    // or to `Future<void>` in an async arrow bodied function.
+    if (isArrowFunction && toType.isVoid) {
+      return;
+    }
+
+    if (toType.isVoid) {
+      if (fromType.isVoid ||
+          fromType.isDynamic ||
+          fromType.isDartCoreNull ||
+          fromType.isBottom) {
+        return;
+      }
+    } else if (fromType.isVoid) {
+      if (toType.isDynamic || toType.isDartCoreNull || toType.isBottom) {
+        return;
+      }
+    }
+    if (!expectedType.isVoid && !fromType.isVoid) {
+      var checkWithType = !enclosingExecutable.isAsynchronous
+          ? fromType
+          : _typeProvider.futureType2(fromType);
+      if (_typeSystem.isAssignableTo2(checkWithType, expectedType)) {
+        return;
+      }
+    }
+
+    reportTypeError();
+  }
+
+  void verifyReturnStatement(ReturnStatement statement) {
+    FunctionType functionType = enclosingExecutable.element.type;
+    DartType expectedReturnType = functionType == null
+        ? DynamicTypeImpl.instance
+        : functionType.returnType;
+    Expression returnExpression = statement.expression;
+
+    // RETURN_IN_GENERATIVE_CONSTRUCTOR
+    bool isGenerativeConstructor(ExecutableElement element) =>
+        element is ConstructorElement && !element.isFactory;
+    if (isGenerativeConstructor(enclosingExecutable.element)) {
+      if (returnExpression == null) {
+        return;
+      }
+      _errorReporter.reportErrorForNode(
+          CompileTimeErrorCode.RETURN_IN_GENERATIVE_CONSTRUCTOR,
+          returnExpression);
+      return;
+    }
+    // RETURN_WITHOUT_VALUE
+    if (returnExpression == null) {
+      _checkForAllEmptyReturnStatementErrorCodes(statement, expectedReturnType);
+      return;
+    } else if (enclosingExecutable.isGenerator) {
+      // RETURN_IN_GENERATOR
+      _errorReporter.reportErrorForNode(
+          CompileTimeErrorCode.RETURN_IN_GENERATOR,
+          statement,
+          [enclosingExecutable.isAsynchronous ? "async*" : "sync*"]);
+      return;
+    }
+
+    verifyReturnExpression(returnExpression, expectedReturnType);
+  }
+
+  void verifyReturnType(TypeAnnotation returnType) {
+    // If no declared type, then the type is `dynamic`, which is valid.
+    if (returnType == null) {
+      return;
+    }
+
+    if (enclosingExecutable.isAsynchronous) {
+      if (enclosingExecutable.isGenerator) {
+        _checkForIllegalReturnTypeCode(
+          returnType,
+          _typeProvider.streamElement,
+          StaticTypeWarningCode.ILLEGAL_ASYNC_GENERATOR_RETURN_TYPE,
+        );
+      } else {
+        _checkForIllegalReturnTypeCode(
+          returnType,
+          _typeProvider.futureElement,
+          StaticTypeWarningCode.ILLEGAL_ASYNC_RETURN_TYPE,
+        );
+      }
+    } else if (enclosingExecutable.isGenerator) {
+      _checkForIllegalReturnTypeCode(
+        returnType,
+        _typeProvider.iterableElement,
+        StaticTypeWarningCode.ILLEGAL_SYNC_GENERATOR_RETURN_TYPE,
+      );
+    }
+  }
+
+  /// Check that return statements without expressions are not in a generative
+  /// constructor and the return type is not assignable to `null`; that is, we
+  /// don't have `return;` if the enclosing method has a non-void containing
+  /// return type.
+  void _checkForAllEmptyReturnStatementErrorCodes(
+      ReturnStatement statement, DartType expectedReturnType) {
+    if (enclosingExecutable.isGenerator) {
+      return;
+    }
+    var returnType = enclosingExecutable.isAsynchronous
+        ? _typeSystem.flatten(expectedReturnType)
+        : expectedReturnType;
+    if (returnType.isDynamic ||
+        returnType.isDartCoreNull ||
+        returnType.isVoid) {
+      return;
+    }
+    // If we reach here, this is an invalid return
+    _errorReporter.reportErrorForToken(
+        StaticWarningCode.RETURN_WITHOUT_VALUE, statement.returnKeyword);
+    return;
+  }
+
+  /// If the current function is async, async*, or sync*, verify that its
+  /// declared return type is assignable to Future, Stream, or Iterable,
+  /// respectively. This is called by [_checkForIllegalReturnType] to check if
+  /// a value with the type of the declared [returnTypeName] is assignable to
+  /// [expectedElement] and if not report [errorCode].
+  void _checkForIllegalReturnTypeCode(TypeAnnotation returnTypeName,
+      ClassElement expectedElement, StaticTypeWarningCode errorCode) {
+    if (!_isLegalReturnType(expectedElement)) {
+      _errorReporter.reportErrorForNode(errorCode, returnTypeName);
+    }
+  }
+
+  /// Returns whether a value with the type of the the enclosing function's
+  /// declared return type is assignable to [expectedElement].
+  bool _isLegalReturnType(ClassElement expectedElement) {
+    DartType returnType = enclosingExecutable.element.returnType;
+    //
+    // When checking an async/sync*/async* method, we know the exact type
+    // that will be returned (e.g. Future, Iterable, or Stream).
+    //
+    // For example an `async` function body will return a `Future<T>` for
+    // some `T` (possibly `dynamic`).
+    //
+    // We allow the declared return type to be a supertype of that
+    // (e.g. `dynamic`, `Object`), or Future<S> for some S.
+    // (We assume the T <: S relation is checked elsewhere.)
+    //
+    // We do not allow user-defined subtypes of Future, because an `async`
+    // method will never return those.
+    //
+    // To check for this, we ensure that `Future<bottom> <: returnType`.
+    //
+    // Similar logic applies for sync* and async*.
+    //
+    var lowerBound = expectedElement.instantiate(
+      typeArguments: [NeverTypeImpl.instance],
+      nullabilitySuffix: NullabilitySuffix.star,
+    );
+    return _typeSystem.isSubtypeOf2(lowerBound, returnType);
+  }
+
+  /// Return the static type of the given [expression] that is to be used for
+  /// type analysis.
+  ///
+  /// TODO(scheglov) this is duplicate
+  static DartType getStaticType(Expression expression) {
+    DartType type = expression.staticType;
+    if (type == null) {
+      // TODO(brianwilkerson) This should never happen.
+      return DynamicTypeImpl.instance;
+    }
+    return type;
+  }
+}
diff --git a/pkg/analyzer/lib/src/error/unused_local_elements_verifier.dart b/pkg/analyzer/lib/src/error/unused_local_elements_verifier.dart
index 94bd973..659c51a 100644
--- a/pkg/analyzer/lib/src/error/unused_local_elements_verifier.dart
+++ b/pkg/analyzer/lib/src/error/unused_local_elements_verifier.dart
@@ -323,13 +323,18 @@
     return _usedElements.elements.contains(element);
   }
 
-  bool _isUsedMember(Element element) {
+  bool _isUsedMember(ExecutableElement element) {
+    var enclosingElement = element.enclosingElement;
     if (element.isPublic) {
-      if (_isPrivateClassOrExtension(element.enclosingElement) &&
-          element is ExecutableElement &&
+      if (enclosingElement is ClassElement &&
+          enclosingElement.isPrivate &&
           element.isStatic) {
-        // Public static members of private classes, mixins, and extensions are
-        // inaccessible from outside the library in which they are declared.
+        // Public static members of private classes and mixins are inaccessible
+        // from outside the library in which they are declared.
+      } else if (enclosingElement is ExtensionElement &&
+          enclosingElement.isPrivate) {
+        // Public members of private extensions are inaccessible from outside
+        // the library in which they are declared.
       } else {
         return true;
       }
@@ -354,7 +359,7 @@
     if (enclosingElement is ClassElement) {
       Name name = Name(_libraryUri, element.name);
       Iterable<ExecutableElement> overriddenElements = _inheritanceManager
-          .getOverridden(enclosingElement.thisType, name)
+          .getOverridden2(enclosingElement, name)
           ?.map((ExecutableElement e) =>
               (e is ExecutableMember) ? e.declaration : e);
       if (overriddenElements != null) {
diff --git a/pkg/analyzer/lib/src/generated/element_resolver.dart b/pkg/analyzer/lib/src/generated/element_resolver.dart
index 22e20e2..433b172 100644
--- a/pkg/analyzer/lib/src/generated/element_resolver.dart
+++ b/pkg/analyzer/lib/src/generated/element_resolver.dart
@@ -1396,8 +1396,8 @@
       if (staticType is InterfaceTypeImpl) {
         if (propertyName.inGetterContext()) {
           var name = Name(_definingLibrary.source.uri, propertyName.name);
-          var element =
-              _resolver.inheritance.getMember(staticType, name, forSuper: true);
+          var element = _resolver.inheritance
+              .getMember2(staticType.element, name, forSuper: true);
 
           if (element != null) {
             element = _resolver.toLegacyElement(element);
@@ -1406,18 +1406,15 @@
             // We were not able to find the concrete dispatch target.
             // But we would like to give the user at least some resolution.
             // So, we retry simply looking for an inherited member.
-            var element = _resolver.inheritance.getInherited(staticType, name);
+            var element =
+                _resolver.inheritance.getInherited2(staticType.element, name);
             if (element != null) {
               propertyName.staticElement = element;
-              ClassElementImpl receiverSuperClass =
-                  staticType.element.supertype.element;
-              if (!receiverSuperClass.hasNoSuchMethod) {
-                _errorReporter.reportErrorForNode(
-                  CompileTimeErrorCode.ABSTRACT_SUPER_MEMBER_REFERENCE,
-                  propertyName,
-                  [element.kind.displayName, propertyName.name],
-                );
-              }
+              _errorReporter.reportErrorForNode(
+                CompileTimeErrorCode.ABSTRACT_SUPER_MEMBER_REFERENCE,
+                propertyName,
+                [element.kind.displayName, propertyName.name],
+              );
             } else {
               _errorReporter.reportErrorForNode(
                 StaticTypeWarningCode.UNDEFINED_SUPER_GETTER,
diff --git a/pkg/analyzer/lib/src/generated/error_verifier.dart b/pkg/analyzer/lib/src/generated/error_verifier.dart
index dc1011c..a2eea08 100644
--- a/pkg/analyzer/lib/src/generated/error_verifier.dart
+++ b/pkg/analyzer/lib/src/generated/error_verifier.dart
@@ -30,6 +30,7 @@
 import 'package:analyzer/src/error/getter_setter_types_verifier.dart';
 import 'package:analyzer/src/error/literal_element_verifier.dart';
 import 'package:analyzer/src/error/required_parameters_verifier.dart';
+import 'package:analyzer/src/error/return_type_verifier.dart';
 import 'package:analyzer/src/error/type_arguments_verifier.dart';
 import 'package:analyzer/src/generated/element_resolver.dart';
 import 'package:analyzer/src/generated/engine.dart';
@@ -63,6 +64,8 @@
 
   EnclosingExecutableContext.empty() : this(null);
 
+  bool get isMethod => element is MethodElement;
+
   static bool _isStaticMethod(ExecutableElement element) {
     var enclosing = element?.enclosingElement;
     if (enclosing is ClassElement) {
@@ -228,12 +231,14 @@
   final DuplicateDefinitionVerifier _duplicateDefinitionVerifier;
   TypeArgumentsVerifier _typeArgumentsVerifier;
   ConstructorFieldsVerifier _constructorFieldsVerifier;
+  ReturnTypeVerifier _returnTypeVerifier;
 
   /**
    * Initialize a newly created error verifier.
    */
   ErrorVerifier(ErrorReporter errorReporter, this._currentLibrary,
-      this._typeProvider, this._inheritanceManager, bool enableSuperMixins)
+      this._typeProvider, this._inheritanceManager,
+      [@deprecated bool enableSuperMixins])
       : _errorReporter = errorReporter,
         _uninstantiatedBoundChecker =
             _UninstantiatedBoundChecker(errorReporter),
@@ -254,6 +259,11 @@
       typeSystem: _typeSystem,
       errorReporter: _errorReporter,
     );
+    _returnTypeVerifier = ReturnTypeVerifier(
+      typeProvider: _typeProvider,
+      typeSystem: _typeSystem,
+      errorReporter: _errorReporter,
+    );
   }
 
   /**
@@ -281,6 +291,15 @@
     _enclosingClass = classElement;
   }
 
+  /// The language team is thinking about adding abstract fields, or external
+  /// fields. But for now we will ignore such fields in `Struct` subtypes.
+  bool get _isEnclosingClassFfiStruct {
+    var superClass = _enclosingClass?.supertype?.element;
+    return superClass != null &&
+        superClass.library.name == 'dart.ffi' &&
+        superClass.name == 'Struct';
+  }
+
   bool get _isNonNullableByDefault =>
       _featureSet?.isEnabled(Feature.non_nullable) ?? false;
 
@@ -562,8 +581,11 @@
         function is PropertyAccessorElement &&
         function.isSetter;
     if (!isSetterWithImplicitReturn) {
-      _checkForReturnOfInvalidType(node.expression, expectedReturnType,
-          isArrowFunction: true);
+      _returnTypeVerifier.verifyReturnExpression(
+        node.expression,
+        expectedReturnType,
+        isArrowFunction: true,
+      );
     }
     super.visitExpressionFunctionBody(node);
   }
@@ -694,7 +716,7 @@
             CompileTimeErrorCode.INVALID_MODIFIER_ON_SETTER);
       }
       _checkForTypeAnnotationDeferredClass(returnType);
-      _checkForIllegalReturnType(returnType);
+      _returnTypeVerifier.verifyReturnType(returnType);
       _checkForImplicitDynamicReturn(node.name, node.declaredElement);
       super.visitFunctionDeclaration(node);
     });
@@ -886,7 +908,7 @@
       }
       _checkForExtensionDeclaresMemberOfObject(node);
       _checkForTypeAnnotationDeferredClass(returnType);
-      _checkForIllegalReturnType(returnType);
+      _returnTypeVerifier.verifyReturnType(returnType);
       _checkForImplicitDynamicReturn(node, node.declaredElement);
       _checkForMustCallSuper(node);
       _checkForWrongTypeParameterVarianceInMethod(node);
@@ -1034,7 +1056,7 @@
     } else {
       _enclosingExecutable._returnsWith.add(node);
     }
-    _checkForAllReturnStatementErrorCodes(node);
+    _returnTypeVerifier.verifyReturnStatement(node);
     super.visitReturnStatement(node);
   }
 
@@ -1274,31 +1296,6 @@
   }
 
   /**
-   * Check that return statements without expressions are not in a generative
-   * constructor and the return type is not assignable to `null`; that is, we
-   * don't have `return;` if the enclosing method has a non-void containing
-   * return type.
-   */
-  void _checkForAllEmptyReturnStatementErrorCodes(
-      ReturnStatement statement, DartType expectedReturnType) {
-    if (_enclosingExecutable.isGenerator) {
-      return;
-    }
-    var returnType = _enclosingExecutable.isAsynchronous
-        ? _typeSystem.flatten(expectedReturnType)
-        : expectedReturnType;
-    if (returnType.isDynamic ||
-        returnType.isDartCoreNull ||
-        returnType.isVoid) {
-      return;
-    }
-    // If we reach here, this is an invalid return
-    _errorReporter.reportErrorForToken(
-        StaticWarningCode.RETURN_WITHOUT_VALUE, statement.returnKeyword);
-    return;
-  }
-
-  /**
    * Verify that all classes of the given [withClause] are valid.
    *
    * See [CompileTimeErrorCode.MIXIN_CLASS_DECLARES_CONSTRUCTOR],
@@ -1409,53 +1406,6 @@
   }
 
   /**
-   * Check that the return [statement] of the form <i>return e;</i> is not in a
-   * generative constructor.
-   *
-   * Check that return statements without expressions are not in a generative
-   * constructor and the return type is not assignable to `null`; that is, we
-   * don't have `return;` if the enclosing method has a non-void containing
-   * return type.
-   *
-   * Check that the return type matches the type of the declared return type in
-   * the enclosing method or function.
-   */
-  void _checkForAllReturnStatementErrorCodes(ReturnStatement statement) {
-    FunctionType functionType = _enclosingExecutable.element.type;
-    DartType expectedReturnType = functionType == null
-        ? DynamicTypeImpl.instance
-        : functionType.returnType;
-    Expression returnExpression = statement.expression;
-
-    // RETURN_IN_GENERATIVE_CONSTRUCTOR
-    bool isGenerativeConstructor(ExecutableElement element) =>
-        element is ConstructorElement && !element.isFactory;
-    if (isGenerativeConstructor(_enclosingExecutable.element)) {
-      if (returnExpression == null) {
-        return;
-      }
-      _errorReporter.reportErrorForNode(
-          CompileTimeErrorCode.RETURN_IN_GENERATIVE_CONSTRUCTOR,
-          returnExpression);
-      return;
-    }
-    // RETURN_WITHOUT_VALUE
-    if (returnExpression == null) {
-      _checkForAllEmptyReturnStatementErrorCodes(statement, expectedReturnType);
-      return;
-    } else if (_enclosingExecutable.isGenerator) {
-      // RETURN_IN_GENERATOR
-      _errorReporter.reportErrorForNode(
-          CompileTimeErrorCode.RETURN_IN_GENERATOR,
-          statement,
-          [_enclosingExecutable.isAsynchronous ? "async*" : "sync*"]);
-      return;
-    }
-
-    _checkForReturnOfInvalidType(returnExpression, expectedReturnType);
-  }
-
-  /**
    * Verify that the export namespace of the given export [directive] does not
    * export any name already exported by another export directive. The
    * [exportElement] is the [ExportElement] retrieved from the node. If the
@@ -1815,7 +1765,6 @@
     if (_enclosingClass == null) {
       return;
     }
-    InterfaceType enclosingType = _enclosingClass.thisType;
     Uri libraryUri = _currentLibrary.source.uri;
 
     // method declared in the enclosing class vs. inherited getter/setter
@@ -1823,10 +1772,10 @@
       String name = method.name;
 
       // find inherited property accessor
-      ExecutableElement inherited = _inheritanceManager.getInherited(
-          enclosingType, Name(libraryUri, name));
-      inherited ??= _inheritanceManager.getInherited(
-          enclosingType, Name(libraryUri, '$name='));
+      ExecutableElement inherited = _inheritanceManager.getInherited2(
+          _enclosingClass, Name(libraryUri, name));
+      inherited ??= _inheritanceManager.getInherited2(
+          _enclosingClass, Name(libraryUri, '$name='));
 
       if (method.isStatic && inherited != null) {
         _errorReporter.reportErrorForElement(
@@ -1850,10 +1799,10 @@
       String name = accessor.displayName;
 
       // find inherited method or property accessor
-      ExecutableElement inherited = _inheritanceManager.getInherited(
-          enclosingType, Name(libraryUri, name));
-      inherited ??= _inheritanceManager.getInherited(
-          enclosingType, Name(libraryUri, '$name='));
+      ExecutableElement inherited = _inheritanceManager.getInherited2(
+          _enclosingClass, Name(libraryUri, name));
+      inherited ??= _inheritanceManager.getInherited2(
+          _enclosingClass, Name(libraryUri, '$name='));
 
       if (accessor.isStatic && inherited != null) {
         _errorReporter.reportErrorForElement(
@@ -2724,54 +2673,6 @@
   }
 
   /**
-   * If the current function is async, async*, or sync*, verify that its
-   * declared return type is assignable to Future, Stream, or Iterable,
-   * respectively.  If not, report the error using [returnType].
-   */
-  void _checkForIllegalReturnType(TypeAnnotation returnType) {
-    if (returnType == null) {
-      // No declared return type, so the return type must be dynamic, which is
-      // assignable to everything.
-      return;
-    }
-    if (_enclosingExecutable.isAsynchronous) {
-      if (_enclosingExecutable.isGenerator) {
-        _checkForIllegalReturnTypeCode(
-          returnType,
-          _typeProvider.streamElement,
-          StaticTypeWarningCode.ILLEGAL_ASYNC_GENERATOR_RETURN_TYPE,
-        );
-      } else {
-        _checkForIllegalReturnTypeCode(
-          returnType,
-          _typeProvider.futureElement,
-          StaticTypeWarningCode.ILLEGAL_ASYNC_RETURN_TYPE,
-        );
-      }
-    } else if (_enclosingExecutable.isGenerator) {
-      _checkForIllegalReturnTypeCode(
-        returnType,
-        _typeProvider.iterableElement,
-        StaticTypeWarningCode.ILLEGAL_SYNC_GENERATOR_RETURN_TYPE,
-      );
-    }
-  }
-
-  /**
-   * If the current function is async, async*, or sync*, verify that its
-   * declared return type is assignable to Future, Stream, or Iterable,
-   * respectively. This is called by [_checkForIllegalReturnType] to check if
-   * a value with the type of the declared [returnTypeName] is assignable to
-   * [expectedElement] and if not report [errorCode].
-   */
-  void _checkForIllegalReturnTypeCode(TypeAnnotation returnTypeName,
-      ClassElement expectedElement, StaticTypeWarningCode errorCode) {
-    if (!_isLegalReturnType(expectedElement)) {
-      _errorReporter.reportErrorForNode(errorCode, returnTypeName);
-    }
-  }
-
-  /**
    * Verify that the given implements [clause] does not implement classes such
    * as 'num' or 'String'.
    *
@@ -3422,12 +3323,12 @@
       return false;
     }
 
-    InterfaceTypeImpl enclosingType = _enclosingClass.thisType;
     Uri mixinLibraryUri = mixinElement.librarySource.uri;
     for (var name in mixinElementImpl.superInvokedNames) {
       var nameObject = Name(mixinLibraryUri, name);
 
-      var superMember = _inheritanceManager.getMember(enclosingType, nameObject,
+      var superMember = _inheritanceManager.getMember2(
+          _enclosingClass, nameObject,
           forMixinIndex: mixinIndex, concrete: true, forSuper: true);
 
       if (superMember == null) {
@@ -3477,7 +3378,6 @@
     if (declaredSupertype is! InterfaceType) {
       return;
     }
-    InterfaceType superclass = declaredSupertype;
     Map<LibraryElement, Map<String, String>> mixedInNames =
         <LibraryElement, Map<String, String>>{};
 
@@ -3497,8 +3397,8 @@
           return true;
         }
         names[name] = typeName.name.name;
-        ExecutableElement inheritedMember = _inheritanceManager.getMember(
-          superclass,
+        ExecutableElement inheritedMember = _inheritanceManager.getMember2(
+          declaredSupertype.element,
           Name(library.source.uri, name),
           concrete: true,
         );
@@ -3753,6 +3653,8 @@
     if (fields.isLate) return;
     if (fields.isFinal) return;
 
+    if (_isEnclosingClassFfiStruct) return;
+
     for (var field in fields.variables) {
       if (field.initializer != null) continue;
 
@@ -4189,96 +4091,6 @@
   }
 
   /**
-   * Check that a type mis-match between the type of the [returnExpression] and
-   * the [expectedReturnType] by the enclosing method or function.
-   *
-   * This method is called both by [_checkForAllReturnStatementErrorCodes]
-   * and [visitExpressionFunctionBody].
-   */
-  void _checkForReturnOfInvalidType(
-      Expression returnExpression, DartType expectedType,
-      {bool isArrowFunction = false}) {
-    if (_enclosingExecutable == null) {
-      return;
-    }
-    if (_enclosingExecutable.isGenerator) {
-      // "return expression;" is disallowed in generators, but this is checked
-      // elsewhere.  Bare "return" is always allowed in generators regardless
-      // of the return type.  So no need to do any further checking.
-      return;
-    }
-    if (returnExpression == null) {
-      return; // Empty returns are handled elsewhere
-    }
-
-    DartType expressionType = getStaticType(returnExpression);
-
-    var toType = expectedType;
-    var fromType = expressionType;
-    if (_enclosingExecutable.isAsynchronous) {
-      toType = _typeSystem.flatten(toType);
-      fromType = _typeSystem.flatten(fromType);
-      if (!_isLegalReturnType(_typeProvider.futureElement)) {
-        // ILLEGAL_ASYNC_RETURN_TYPE has already been reported, meaning the
-        // _declared_ return type is illegal; don't confuse by also reporting
-        // that the type being returned here does not match that illegal return
-        // type.
-        return;
-      }
-    }
-
-    void reportTypeError() {
-      String displayName = _enclosingExecutable.element.displayName;
-
-      if (displayName.isEmpty) {
-        _errorReporter.reportErrorForNode(
-            StaticTypeWarningCode.RETURN_OF_INVALID_TYPE_FROM_CLOSURE,
-            returnExpression,
-            [fromType, toType]);
-      } else if (_enclosingExecutable.element is MethodElement) {
-        _errorReporter.reportErrorForNode(
-            StaticTypeWarningCode.RETURN_OF_INVALID_TYPE_FROM_METHOD,
-            returnExpression,
-            [fromType, toType, displayName]);
-      } else {
-        _errorReporter.reportErrorForNode(
-            StaticTypeWarningCode.RETURN_OF_INVALID_TYPE_FROM_FUNCTION,
-            returnExpression,
-            [fromType, toType, displayName]);
-      }
-    }
-
-    // Anything can be returned to `void` in an arrow bodied function
-    // or to `Future<void>` in an async arrow bodied function.
-    if (isArrowFunction && toType.isVoid) {
-      return;
-    }
-
-    if (toType.isVoid) {
-      if (fromType.isVoid ||
-          fromType.isDynamic ||
-          fromType.isDartCoreNull ||
-          fromType.isBottom) {
-        return;
-      }
-    } else if (fromType.isVoid) {
-      if (toType.isDynamic || toType.isDartCoreNull || toType.isBottom) {
-        return;
-      }
-    }
-    if (!expectedType.isVoid && !fromType.isVoid) {
-      var checkWithType = !_enclosingExecutable.isAsynchronous
-          ? fromType
-          : _typeProvider.futureType2(fromType);
-      if (_typeSystem.isAssignableTo2(checkWithType, expectedType)) {
-        return;
-      }
-    }
-
-    reportTypeError();
-  }
-
-  /**
    * Verify that the elements in the given set [literal] are subtypes of the
    * set's static type.
    *
@@ -5118,14 +4930,30 @@
   void _checkUseOfDefaultValuesInParameters(FormalParameterList node) {
     if (!_isNonNullableByDefault) return;
 
-    var parent = node.parent;
-    var defaultValuesAreExpected =
-        parent is ConstructorDeclaration && parent.externalKeyword == null ||
-            parent is FunctionExpression ||
-            parent is MethodDeclaration &&
-                !parent.isAbstract &&
-                parent.externalKeyword == null &&
-                parent.body is! NativeFunctionBody;
+    var defaultValuesAreExpected = () {
+      var parent = node.parent;
+      if (parent is ConstructorDeclaration) {
+        if (parent.externalKeyword != null) {
+          return false;
+        } else if (parent.factoryKeyword != null &&
+            parent.redirectedConstructor != null) {
+          return false;
+        }
+        return true;
+      } else if (parent is FunctionExpression) {
+        return true;
+      } else if (parent is MethodDeclaration) {
+        if (parent.isAbstract) {
+          return false;
+        } else if (parent.externalKeyword != null) {
+          return false;
+        } else if (parent.body is NativeFunctionBody) {
+          return false;
+        }
+        return true;
+      }
+      return false;
+    }();
 
     for (var parameter in node.parameters) {
       if (parameter is DefaultFormalParameter) {
@@ -5373,35 +5201,6 @@
     return false;
   }
 
-  /// Returns whether a value with the type of the the enclosing function's
-  /// declared return type is assignable to [expectedElement].
-  bool _isLegalReturnType(ClassElement expectedElement) {
-    DartType returnType = _enclosingExecutable.element.returnType;
-    //
-    // When checking an async/sync*/async* method, we know the exact type
-    // that will be returned (e.g. Future, Iterable, or Stream).
-    //
-    // For example an `async` function body will return a `Future<T>` for
-    // some `T` (possibly `dynamic`).
-    //
-    // We allow the declared return type to be a supertype of that
-    // (e.g. `dynamic`, `Object`), or Future<S> for some S.
-    // (We assume the T <: S relation is checked elsewhere.)
-    //
-    // We do not allow user-defined subtypes of Future, because an `async`
-    // method will never return those.
-    //
-    // To check for this, we ensure that `Future<bottom> <: returnType`.
-    //
-    // Similar logic applies for sync* and async*.
-    //
-    var lowerBound = expectedElement.instantiate(
-      typeArguments: [NeverTypeImpl.instance],
-      nullabilitySuffix: NullabilitySuffix.star,
-    );
-    return _typeSystem.isSubtypeOf2(lowerBound, returnType);
-  }
-
   /**
    * Return `true` if the given 'this' [expression] is in a valid context.
    */
@@ -5479,9 +5278,11 @@
     var current = _enclosingExecutable;
     try {
       _enclosingExecutable = EnclosingExecutableContext(element);
+      _returnTypeVerifier.enclosingExecutable = _enclosingExecutable;
       operation();
     } finally {
       _enclosingExecutable = current;
+      _returnTypeVerifier.enclosingExecutable = _enclosingExecutable;
     }
   }
 
diff --git a/pkg/analyzer/lib/src/generated/resolver.dart b/pkg/analyzer/lib/src/generated/resolver.dart
index ea4d2dd..0db842a 100644
--- a/pkg/analyzer/lib/src/generated/resolver.dart
+++ b/pkg/analyzer/lib/src/generated/resolver.dart
@@ -28,6 +28,7 @@
 import 'package:analyzer/src/dart/resolver/flow_analysis_visitor.dart';
 import 'package:analyzer/src/dart/resolver/for_resolver.dart';
 import 'package:analyzer/src/dart/resolver/function_expression_invocation_resolver.dart';
+import 'package:analyzer/src/dart/resolver/function_expression_resolver.dart';
 import 'package:analyzer/src/dart/resolver/invocation_inference_helper.dart';
 import 'package:analyzer/src/dart/resolver/method_invocation_resolver.dart';
 import 'package:analyzer/src/dart/resolver/postfix_expression_resolver.dart';
@@ -218,6 +219,7 @@
   AssignmentExpressionResolver _assignmentExpressionResolver;
   BinaryExpressionResolver _binaryExpressionResolver;
   FunctionExpressionInvocationResolver _functionExpressionInvocationResolver;
+  FunctionExpressionResolver _functionExpressionResolver;
   ForResolver _forResolver;
   PostfixExpressionResolver _postfixExpressionResolver;
   PrefixExpressionResolver _prefixExpressionResolver;
@@ -305,7 +307,6 @@
       AnalysisErrorListener errorListener,
       {FeatureSet featureSet,
       Scope nameScope,
-      bool propagateTypes = true,
       reportConstEvaluationErrors = true,
       FlowAnalysisHelper flowAnalysisHelper})
       : this._(
@@ -318,7 +319,6 @@
             featureSet ??
                 definingLibrary.context.analysisOptions.contextFeatures,
             nameScope,
-            propagateTypes,
             reportConstEvaluationErrors,
             flowAnalysisHelper,
             const MigratableAstInfoProvider(),
@@ -333,7 +333,6 @@
       AnalysisErrorListener errorListener,
       FeatureSet featureSet,
       Scope nameScope,
-      bool propagateTypes,
       reportConstEvaluationErrors,
       this._flowAnalysis,
       this._migratableAstInfoProvider,
@@ -358,7 +357,6 @@
     this.typePropertyResolver = TypePropertyResolver(this);
     this.inferenceHelper = InvocationInferenceHelper(
         resolver: this,
-        definingLibrary: definingLibrary,
         flowAnalysis: _flowAnalysis,
         errorReporter: errorReporter,
         typeSystem: typeSystem,
@@ -376,6 +374,12 @@
         FunctionExpressionInvocationResolver(
       resolver: this,
     );
+    this._functionExpressionResolver = FunctionExpressionResolver(
+      resolver: this,
+      migrationResolutionHooks: migrationResolutionHooks,
+      flowAnalysis: _flowAnalysis,
+      promoteManager: _promoteManager,
+    );
     this._forResolver = ForResolver(
       resolver: this,
       flowAnalysis: _flowAnalysis,
@@ -439,10 +443,74 @@
   bool get _isNonNullableByDefault =>
       _featureSet.isEnabled(Feature.non_nullable);
 
+  void checkForBodyMayCompleteNormally({
+    @required DartType returnType,
+    @required FunctionBody body,
+    @required AstNode errorNode,
+  }) {
+    if (!_flowAnalysis.flow.isReachable) {
+      return;
+    }
+
+    if (returnType == null) {
+      return;
+    }
+
+    if (body is BlockFunctionBody) {
+      if (body.isGenerator) {
+        return;
+      }
+
+      if (typeSystem.isPotentiallyNonNullable(returnType)) {
+        errorReporter.reportErrorForNode(
+          CompileTimeErrorCode.BODY_MIGHT_COMPLETE_NORMALLY,
+          errorNode,
+        );
+      }
+    }
+  }
+
   void checkUnreachableNode(AstNode node) {
     nullSafetyDeadCodeVerifier.visitNode(node);
   }
 
+  /// Given the declared return type of a function, compute the type of the
+  /// values which should be returned or yielded as appropriate.  If a type
+  /// cannot be computed from the declared return type, return null.
+  DartType computeReturnOrYieldType(DartType declaredType) {
+    bool isGenerator = _enclosingFunction.isGenerator;
+    bool isAsynchronous = _enclosingFunction.isAsynchronous;
+
+    // Ordinary functions just return their declared types.
+    if (!isGenerator && !isAsynchronous) {
+      return declaredType;
+    }
+    if (declaredType is InterfaceType) {
+      if (isGenerator) {
+        // If it's sync* we expect Iterable<T>
+        // If it's async* we expect Stream<T>
+        // Match the types to instantiate the type arguments if possible
+        List<DartType> targs = declaredType.typeArguments;
+        if (targs.length == 1) {
+          var arg = targs[0];
+          if (isAsynchronous) {
+            if (typeProvider.streamType2(arg) == declaredType) {
+              return arg;
+            }
+          } else {
+            if (typeProvider.iterableType2(arg) == declaredType) {
+              return arg;
+            }
+          }
+        }
+      }
+      // async functions expect `Future<T> | T`
+      var futureTypeParam = typeSystem.flatten(declaredType);
+      return _createFutureOr(futureTypeParam);
+    }
+    return declaredType;
+  }
+
   /// Return the static element associated with the given expression whose type
   /// can be overridden, or `null` if there is no element whose type can be
   /// overridden.
@@ -464,49 +532,6 @@
     return null;
   }
 
-  /// Given a downward inference type [fnType], and the declared
-  /// [typeParameterList] for a function expression, determines if we can enable
-  /// downward inference and if so, returns the function type to use for
-  /// inference.
-  ///
-  /// This will return null if inference is not possible. This happens when
-  /// there is no way we can find a subtype of the function type, given the
-  /// provided type parameter list.
-  FunctionType matchFunctionTypeParameters(
-      TypeParameterList typeParameterList, FunctionType fnType) {
-    if (typeParameterList == null) {
-      if (fnType.typeFormals.isEmpty) {
-        return fnType;
-      }
-
-      // A non-generic function cannot be a subtype of a generic one.
-      return null;
-    }
-
-    NodeList<TypeParameter> typeParameters = typeParameterList.typeParameters;
-    if (fnType.typeFormals.isEmpty) {
-      // TODO(jmesserly): this is a legal subtype. We don't currently infer
-      // here, but we could.  This is similar to
-      // Dart2TypeSystem.inferFunctionTypeInstantiation, but we don't
-      // have the FunctionType yet for the current node, so it's not quite
-      // straightforward to apply.
-      return null;
-    }
-
-    if (fnType.typeFormals.length != typeParameters.length) {
-      // A subtype cannot have different number of type formals.
-      return null;
-    }
-
-    // Same number of type formals. Instantiate the function type so its
-    // parameter and return type are in terms of the surrounding context.
-    return fnType.instantiate(typeParameters.map((TypeParameter t) {
-      return t.declaredElement.instantiate(
-        nullabilitySuffix: noneOrStarSuffix,
-      );
-    }).toList());
-  }
-
   /// If we reached a null-shorting termination, and the [node] has null
   /// shorting, make the type of the [node] nullable.
   void nullShortingTermination(Expression node) {
@@ -1112,8 +1137,8 @@
     super.visitFunctionDeclaration(node);
 
     if (_flowAnalysis != null) {
-      var returnType = _computeReturnOrYieldType(functionType.returnType);
-      _checkForBodyMayCompleteNormally(
+      var returnType = computeReturnOrYieldType(functionType.returnType);
+      checkForBodyMayCompleteNormally(
         returnType: returnType,
         body: node.functionExpression.body,
         errorNode: node.name,
@@ -1146,47 +1171,19 @@
     ExecutableElement outerFunction = _enclosingFunction;
     _enclosingFunction = node.declaredElement;
 
-    var isFunctionDeclaration = node.parent is FunctionDeclaration;
-    var body = node.body;
-
-    if (_flowAnalysis != null) {
-      if (_flowAnalysis.flow != null && !isFunctionDeclaration) {
-        _flowAnalysis.executableDeclaration_enter(node, node.parameters, true);
-      }
+    if (node.parent is FunctionDeclaration) {
+      _functionExpressionResolver.resolve(node);
     } else {
-      _promoteManager.enterFunctionBody(body);
-    }
-
-    DartType returnType;
-    var contextType = InferenceContext.getContext(node);
-    if (contextType is FunctionType) {
-      contextType = matchFunctionTypeParameters(
-        node.typeParameters,
-        contextType,
-      );
-      if (contextType is FunctionType) {
-        typeAnalyzer.inferFormalParameterList(node.parameters, contextType);
-        returnType = _computeReturnOrYieldType(contextType.returnType);
-        InferenceContext.setType(body, returnType);
+      Scope outerScope = nameScope;
+      try {
+        ExecutableElement functionElement = node.declaredElement;
+        nameScope = FunctionScope(nameScope, functionElement);
+        _functionExpressionResolver.resolve(node);
+      } finally {
+        nameScope = outerScope;
       }
     }
 
-    super.visitFunctionExpression(node);
-
-    if (_flowAnalysis != null) {
-      if (_flowAnalysis.flow != null && !isFunctionDeclaration) {
-        _checkForBodyMayCompleteNormally(
-          returnType: returnType,
-          body: body,
-          errorNode: body,
-        );
-        _flowAnalysis.flow?.functionExpression_end();
-        nullSafetyDeadCodeVerifier?.flowEnd(node);
-      }
-    } else {
-      _promoteManager.exitFunctionBody();
-    }
-
     _enclosingFunction = outerFunction;
   }
 
@@ -1370,7 +1367,7 @@
       _promoteManager.enterFunctionBody(node.body);
     }
 
-    DartType returnType = _computeReturnOrYieldType(
+    DartType returnType = computeReturnOrYieldType(
       _enclosingFunction?.returnType,
     );
     InferenceContext.setType(node.body, returnType);
@@ -1378,7 +1375,7 @@
     super.visitMethodDeclaration(node);
 
     if (_flowAnalysis != null) {
-      _checkForBodyMayCompleteNormally(
+      checkForBodyMayCompleteNormally(
         returnType: returnType,
         body: node.body,
         errorNode: node.name,
@@ -1801,70 +1798,6 @@
     _yieldStatementResolver.resolve(node);
   }
 
-  void _checkForBodyMayCompleteNormally({
-    @required DartType returnType,
-    @required FunctionBody body,
-    @required AstNode errorNode,
-  }) {
-    if (!_flowAnalysis.flow.isReachable) {
-      return;
-    }
-
-    if (returnType == null) {
-      return;
-    }
-
-    if (body is BlockFunctionBody) {
-      if (body.isGenerator) {
-        return;
-      }
-
-      if (typeSystem.isPotentiallyNonNullable(returnType)) {
-        errorReporter.reportErrorForNode(
-          CompileTimeErrorCode.BODY_MIGHT_COMPLETE_NORMALLY,
-          errorNode,
-        );
-      }
-    }
-  }
-
-  /// Given the declared return type of a function, compute the type of the
-  /// values which should be returned or yielded as appropriate.  If a type
-  /// cannot be computed from the declared return type, return null.
-  DartType _computeReturnOrYieldType(DartType declaredType) {
-    bool isGenerator = _enclosingFunction.isGenerator;
-    bool isAsynchronous = _enclosingFunction.isAsynchronous;
-
-    // Ordinary functions just return their declared types.
-    if (!isGenerator && !isAsynchronous) {
-      return declaredType;
-    }
-    if (declaredType is InterfaceType) {
-      if (isGenerator) {
-        // If it's sync* we expect Iterable<T>
-        // If it's async* we expect Stream<T>
-        // Match the types to instantiate the type arguments if possible
-        List<DartType> targs = declaredType.typeArguments;
-        if (targs.length == 1) {
-          var arg = targs[0];
-          if (isAsynchronous) {
-            if (typeProvider.streamType2(arg) == declaredType) {
-              return arg;
-            }
-          } else {
-            if (typeProvider.iterableType2(arg) == declaredType) {
-              return arg;
-            }
-          }
-        }
-      }
-      // async functions expect `Future<T> | T`
-      var futureTypeParam = typeSystem.flatten(declaredType);
-      return _createFutureOr(futureTypeParam);
-    }
-    return declaredType;
-  }
-
   /// Return a newly created cloner that can be used to clone constant
   /// expressions.
   ConstantAstCloner _createCloner() {
@@ -2086,7 +2019,6 @@
             featureSet,
             null,
             true,
-            true,
             FlowAnalysisHelperForMigration(
                 typeSystem, migrationResolutionHooks),
             migrationResolutionHooks,
diff --git a/pkg/analyzer/lib/src/generated/sdk.dart b/pkg/analyzer/lib/src/generated/sdk.dart
index 1670a91..e07e96e 100644
--- a/pkg/analyzer/lib/src/generated/sdk.dart
+++ b/pkg/analyzer/lib/src/generated/sdk.dart
@@ -117,8 +117,7 @@
   /**
    * Initialize a newly created manager.
    */
-  DartSdkManager(this.defaultSdkDirectory, this.canUseSummaries,
-      [dynamic ignored]);
+  DartSdkManager(this.defaultSdkDirectory, this.canUseSummaries);
 
   /**
    * Return any SDK that has been created, or `null` if no SDKs have been
diff --git a/pkg/analyzer/lib/src/generated/static_type_analyzer.dart b/pkg/analyzer/lib/src/generated/static_type_analyzer.dart
index 71e150d..12dd347 100644
--- a/pkg/analyzer/lib/src/generated/static_type_analyzer.dart
+++ b/pkg/analyzer/lib/src/generated/static_type_analyzer.dart
@@ -118,62 +118,6 @@
   }
 
   /**
-   * Given a formal parameter list and a function type use the function type
-   * to infer types for any of the parameters which have implicit (missing)
-   * types.  Returns true if inference has occurred.
-   */
-  bool inferFormalParameterList(
-      FormalParameterList node, DartType functionType) {
-    bool inferred = false;
-    if (node != null && functionType is FunctionType) {
-      void inferType(ParameterElementImpl p, DartType inferredType) {
-        // Check that there is no declared type, and that we have not already
-        // inferred a type in some fashion.
-        if (p.hasImplicitType && (p.type == null || p.type.isDynamic)) {
-          inferredType = _typeSystem.greatestClosure(inferredType);
-          if (inferredType.isDartCoreNull || inferredType is NeverTypeImpl) {
-            inferredType = _isNonNullableByDefault
-                ? _typeSystem.objectQuestion
-                : _typeSystem.objectStar;
-          }
-          if (_migrationResolutionHooks != null) {
-            inferredType = _migrationResolutionHooks
-                .modifyInferredParameterType(p, inferredType);
-          }
-          if (!inferredType.isDynamic) {
-            p.type = inferredType;
-            inferred = true;
-          }
-        }
-      }
-
-      List<ParameterElement> parameters = node.parameterElements;
-      {
-        Iterator<ParameterElement> positional =
-            parameters.where((p) => p.isPositional).iterator;
-        Iterator<ParameterElement> fnPositional =
-            functionType.parameters.where((p) => p.isPositional).iterator;
-        while (positional.moveNext() && fnPositional.moveNext()) {
-          inferType(positional.current, fnPositional.current.type);
-        }
-      }
-
-      {
-        Map<String, DartType> namedParameterTypes =
-            functionType.namedParameterTypes;
-        Iterable<ParameterElement> named = parameters.where((p) => p.isNamed);
-        for (ParameterElementImpl p in named) {
-          if (!namedParameterTypes.containsKey(p.name)) {
-            continue;
-          }
-          inferType(p, namedParameterTypes[p.name]);
-        }
-      }
-    }
-    return inferred;
-  }
-
-  /**
    * Record that the static type of the given node is the given type.
    *
    * @param expression the node whose type is to be recorded
@@ -277,24 +221,6 @@
     _resolver.extensionResolver.resolveOverride(node);
   }
 
-  @override
-  void visitFunctionDeclaration(FunctionDeclaration node) {
-    FunctionExpression function = node.functionExpression;
-    ExecutableElementImpl functionElement =
-        node.declaredElement as ExecutableElementImpl;
-    if (node.parent is FunctionDeclarationStatement) {
-      // TypeResolverVisitor sets the return type for top-level functions, so
-      // we only need to handle local functions.
-      if (node.returnType == null) {
-        _inferLocalFunctionReturnType(node.functionExpression);
-        return;
-      }
-      functionElement.returnType =
-          _computeStaticReturnTypeOfFunctionDeclaration(node);
-    }
-    recordStaticType(function, functionElement.type);
-  }
-
   /**
    * The Dart Language Specification, 12.9: <blockquote>The static type of a function literal of the
    * form <i>(T<sub>1</sub> a<sub>1</sub>, &hellip;, T<sub>n</sub> a<sub>n</sub>, [T<sub>n+1</sub>
@@ -326,14 +252,7 @@
    * specified as dynamic.</blockquote>
    */
   @override
-  void visitFunctionExpression(FunctionExpression node) {
-    if (node.parent is FunctionDeclaration) {
-      // The function type will be resolved and set when we visit the parent
-      // node.
-      return;
-    }
-    _inferLocalFunctionReturnType(node);
-  }
+  void visitFunctionExpression(FunctionExpression node) {}
 
   /**
    * The Dart Language Specification, 12.29: <blockquote>An assignable expression of the form
@@ -765,48 +684,6 @@
   }
 
   /**
-   * Given a function body and its return type, compute the return type of
-   * the entire function, taking into account whether the function body
-   * is `sync*`, `async` or `async*`.
-   *
-   * See also [FunctionBody.isAsynchronous], [FunctionBody.isGenerator].
-   */
-  DartType _computeReturnTypeOfFunction(FunctionBody body, DartType type) {
-    if (body.isGenerator) {
-      InterfaceType generatedType = body.isAsynchronous
-          ? _typeProvider.streamType2(type)
-          : _typeProvider.iterableType2(type);
-      return _nonNullable(generatedType);
-    } else if (body.isAsynchronous) {
-      if (type.isDartAsyncFutureOr) {
-        type = (type as InterfaceType).typeArguments[0];
-      }
-      DartType futureType =
-          _typeProvider.futureType2(_typeSystem.flatten(type));
-      return _nonNullable(futureType);
-    } else {
-      return type;
-    }
-  }
-
-  /**
-   * Given a function declaration, compute the return static type of the function. The return type
-   * of functions with a block body is `dynamicType`, with an expression body it is the type
-   * of the expression.
-   *
-   * @param node the function expression whose static return type is to be computed
-   * @return the static return type that was computed
-   */
-  DartType _computeStaticReturnTypeOfFunctionDeclaration(
-      FunctionDeclaration node) {
-    TypeAnnotation returnType = node.returnType;
-    if (returnType == null) {
-      return _dynamicType;
-    }
-    return returnType.type;
-  }
-
-  /**
    * Gets the definite type of expression, which can be used in cases where
    * the most precise type is desired, for example computing the least upper
    * bound.
@@ -951,23 +828,6 @@
   }
 
   /**
-   * Infers the return type of a local function, either a lambda or
-   * (in strong mode) a local function declaration.
-   */
-  void _inferLocalFunctionReturnType(FunctionExpression node) {
-    ExecutableElementImpl functionElement =
-        node.declaredElement as ExecutableElementImpl;
-
-    FunctionBody body = node.body;
-
-    DartType computedType = InferenceContext.getContext(body) ?? _dynamicType;
-
-    computedType = _computeReturnTypeOfFunction(body, computedType);
-    functionElement.returnType = computedType;
-    recordStaticType(node, functionElement.type);
-  }
-
-  /**
    * Given a local variable declaration and its initializer, attempt to infer
    * a type for the local variable declaration based on the initializer.
    * Inference is only done if an explicit type is not present, and if
diff --git a/pkg/analyzer/lib/src/generated/testing/test_type_provider.dart b/pkg/analyzer/lib/src/generated/testing/test_type_provider.dart
index 4ad4eae..0d8516d 100644
--- a/pkg/analyzer/lib/src/generated/testing/test_type_provider.dart
+++ b/pkg/analyzer/lib/src/generated/testing/test_type_provider.dart
@@ -16,23 +16,19 @@
  * for the core library.
  */
 class TestTypeProvider extends TypeProviderImpl {
-  factory TestTypeProvider({
-    bool isNonNullableByDefault = false,
-  }) {
+  factory TestTypeProvider() {
     var analysisContext = _MockAnalysisContext();
     var analysisSession = _MockAnalysisSession();
     var sdkElements = MockSdkElements(analysisContext, analysisSession);
     return TestTypeProvider._(
       sdkElements.coreLibrary,
       sdkElements.asyncLibrary,
-      isNonNullableByDefault,
     );
   }
 
   TestTypeProvider._(
     LibraryElement coreLibrary,
     LibraryElement asyncLibrary,
-    bool isNonNullableByDefault,
   ) : super(
           coreLibrary: coreLibrary,
           asyncLibrary: asyncLibrary,
diff --git a/pkg/analyzer/lib/src/summary/format.dart b/pkg/analyzer/lib/src/summary/format.dart
index a97325c..7a1bfcd 100644
--- a/pkg/analyzer/lib/src/summary/format.dart
+++ b/pkg/analyzer/lib/src/summary/format.dart
@@ -19565,6 +19565,7 @@
   List<UnlinkedNamespaceDirectiveBuilder> _exports;
   bool _hasLibraryDirective;
   bool _hasPartOfDirective;
+  String _partOfUri;
   List<UnlinkedNamespaceDirectiveBuilder> _imports;
   List<UnlinkedInformativeDataBuilder> _informativeData;
   List<int> _lineStarts;
@@ -19606,6 +19607,14 @@
   }
 
   @override
+  String get partOfUri => _partOfUri ??= '';
+
+  /// URI of the `part of` directive.
+  set partOfUri(String value) {
+    this._partOfUri = value;
+  }
+
+  @override
   List<UnlinkedNamespaceDirectiveBuilder> get imports =>
       _imports ??= <UnlinkedNamespaceDirectiveBuilder>[];
 
@@ -19644,6 +19653,7 @@
       List<UnlinkedNamespaceDirectiveBuilder> exports,
       bool hasLibraryDirective,
       bool hasPartOfDirective,
+      String partOfUri,
       List<UnlinkedNamespaceDirectiveBuilder> imports,
       List<UnlinkedInformativeDataBuilder> informativeData,
       List<int> lineStarts,
@@ -19652,6 +19662,7 @@
         _exports = exports,
         _hasLibraryDirective = hasLibraryDirective,
         _hasPartOfDirective = hasPartOfDirective,
+        _partOfUri = partOfUri,
         _imports = imports,
         _informativeData = informativeData,
         _lineStarts = lineStarts,
@@ -19709,6 +19720,7 @@
         x?.collectApiSignature(signature);
       }
     }
+    signature.addString(this._partOfUri ?? '');
   }
 
   List<int> toBuffer() {
@@ -19719,6 +19731,7 @@
   fb.Offset finish(fb.Builder fbBuilder) {
     fb.Offset offset_apiSignature;
     fb.Offset offset_exports;
+    fb.Offset offset_partOfUri;
     fb.Offset offset_imports;
     fb.Offset offset_informativeData;
     fb.Offset offset_lineStarts;
@@ -19730,6 +19743,9 @@
       offset_exports = fbBuilder
           .writeList(_exports.map((b) => b.finish(fbBuilder)).toList());
     }
+    if (_partOfUri != null) {
+      offset_partOfUri = fbBuilder.writeString(_partOfUri);
+    }
     if (!(_imports == null || _imports.isEmpty)) {
       offset_imports = fbBuilder
           .writeList(_imports.map((b) => b.finish(fbBuilder)).toList());
@@ -19758,6 +19774,9 @@
     if (_hasPartOfDirective == true) {
       fbBuilder.addBool(3, true);
     }
+    if (offset_partOfUri != null) {
+      fbBuilder.addOffset(8, offset_partOfUri);
+    }
     if (offset_imports != null) {
       fbBuilder.addOffset(2, offset_imports);
     }
@@ -19799,6 +19818,7 @@
   List<idl.UnlinkedNamespaceDirective> _exports;
   bool _hasLibraryDirective;
   bool _hasPartOfDirective;
+  String _partOfUri;
   List<idl.UnlinkedNamespaceDirective> _imports;
   List<idl.UnlinkedInformativeData> _informativeData;
   List<int> _lineStarts;
@@ -19834,6 +19854,12 @@
   }
 
   @override
+  String get partOfUri {
+    _partOfUri ??= const fb.StringReader().vTableGet(_bc, _bcOffset, 8, '');
+    return _partOfUri;
+  }
+
+  @override
   List<idl.UnlinkedNamespaceDirective> get imports {
     _imports ??= const fb.ListReader<idl.UnlinkedNamespaceDirective>(
             _UnlinkedNamespaceDirectiveReader())
@@ -19880,6 +19906,9 @@
     if (hasPartOfDirective != false) {
       _result["hasPartOfDirective"] = hasPartOfDirective;
     }
+    if (partOfUri != '') {
+      _result["partOfUri"] = partOfUri;
+    }
     if (imports.isNotEmpty) {
       _result["imports"] = imports.map((_value) => _value.toJson()).toList();
     }
@@ -19902,6 +19931,7 @@
         "exports": exports,
         "hasLibraryDirective": hasLibraryDirective,
         "hasPartOfDirective": hasPartOfDirective,
+        "partOfUri": partOfUri,
         "imports": imports,
         "informativeData": informativeData,
         "lineStarts": lineStarts,
diff --git a/pkg/analyzer/lib/src/summary/format.fbs b/pkg/analyzer/lib/src/summary/format.fbs
index cfd13d9..9c222aa 100644
--- a/pkg/analyzer/lib/src/summary/format.fbs
+++ b/pkg/analyzer/lib/src/summary/format.fbs
@@ -1335,6 +1335,9 @@
   /// Is `true` if the unit contains a `part of` directive.
   hasPartOfDirective:bool (id: 3);
 
+  /// URI of the `part of` directive.
+  partOfUri:string (id: 8);
+
   /// URIs of `import` directives.
   imports:[UnlinkedNamespaceDirective] (id: 2);
 
diff --git a/pkg/analyzer/lib/src/summary/idl.dart b/pkg/analyzer/lib/src/summary/idl.dart
index 6e182ec..178754b8 100644
--- a/pkg/analyzer/lib/src/summary/idl.dart
+++ b/pkg/analyzer/lib/src/summary/idl.dart
@@ -2244,6 +2244,10 @@
   @Id(3)
   bool get hasPartOfDirective;
 
+  /// URI of the `part of` directive.
+  @Id(8)
+  String get partOfUri;
+
   /// URIs of `import` directives.
   @Id(2)
   List<UnlinkedNamespaceDirective> get imports;
diff --git a/pkg/analyzer/lib/src/summary2/ast_resolver.dart b/pkg/analyzer/lib/src/summary2/ast_resolver.dart
index efb6e65..4883af9 100644
--- a/pkg/analyzer/lib/src/summary2/ast_resolver.dart
+++ b/pkg/analyzer/lib/src/summary2/ast_resolver.dart
@@ -70,7 +70,6 @@
       errorListener,
       featureSet: featureSet,
       nameScope: _nameScope,
-      propagateTypes: false,
       reportConstEvaluationErrors: false,
       flowAnalysisHelper: flowAnalysis,
     );
diff --git a/pkg/analyzer/lib/src/task/strong_mode.dart b/pkg/analyzer/lib/src/task/strong_mode.dart
index 6035e5e..2f4ae36 100644
--- a/pkg/analyzer/lib/src/task/strong_mode.dart
+++ b/pkg/analyzer/lib/src/task/strong_mode.dart
@@ -25,7 +25,7 @@
 
   TypeSystemImpl typeSystem;
   bool isNonNullableByDefault;
-  InterfaceType interfaceType;
+  ClassElement currentClassElement;
 
   /**
    * Initialize a newly create inferrer.
@@ -68,15 +68,15 @@
       PropertyAccessorElement accessor) {
     String name = accessor.displayName;
 
-    var overriddenGetters = inheritance.getOverridden(
-      interfaceType,
+    var overriddenGetters = inheritance.getOverridden2(
+      currentClassElement,
       Name(accessor.library.source.uri, name),
     );
 
     List<ExecutableElement> overriddenSetters;
     if (overriddenGetters == null || !accessor.variable.isFinal) {
-      overriddenSetters = inheritance.getOverridden(
-        interfaceType,
+      overriddenSetters = inheritance.getOverridden2(
+        currentClassElement,
         Name(accessor.library.source.uri, '$name='),
       );
     }
@@ -285,7 +285,7 @@
         //
         // Then infer the types for the members.
         //
-        this.interfaceType = classElement.thisType;
+        currentClassElement = classElement;
         for (FieldElement field in classElement.fields) {
           _inferField(field);
         }
@@ -342,8 +342,8 @@
 
     // TODO(scheglov) If no implicit types, don't ask inherited.
 
-    List<ExecutableElement> overriddenElements = inheritance.getOverridden(
-      interfaceType,
+    List<ExecutableElement> overriddenElements = inheritance.getOverridden2(
+      currentClassElement,
       Name(element.library.source.uri, element.name),
     );
     if (overriddenElements == null ||
diff --git a/pkg/analyzer/test/generated/static_type_analyzer_test.dart b/pkg/analyzer/test/generated/static_type_analyzer_test.dart
index fac087f..03839d8 100644
--- a/pkg/analyzer/test/generated/static_type_analyzer_test.dart
+++ b/pkg/analyzer/test/generated/static_type_analyzer_test.dart
@@ -2,15 +2,11 @@
 // 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.
 
-import 'dart:collection';
-
 import 'package:analyzer/dart/analysis/features.dart';
 import 'package:analyzer/dart/ast/ast.dart';
-import 'package:analyzer/dart/ast/token.dart';
 import 'package:analyzer/dart/element/element.dart';
 import 'package:analyzer/dart/element/type.dart';
 import 'package:analyzer/dart/element/type_provider.dart';
-import 'package:analyzer/src/dart/ast/ast.dart';
 import 'package:analyzer/src/dart/element/element.dart';
 import 'package:analyzer/src/dart/element/inheritance_manager3.dart';
 import 'package:analyzer/src/dart/element/type.dart';
@@ -21,7 +17,6 @@
 import 'package:analyzer/src/generated/static_type_analyzer.dart';
 import 'package:analyzer/src/generated/testing/ast_test_factory.dart';
 import 'package:analyzer/src/generated/testing/element_factory.dart';
-import 'package:analyzer/src/generated/testing/token_factory.dart';
 import 'package:analyzer/src/source/source_resource.dart';
 import 'package:analyzer/src/test_utilities/resource_provider_mixin.dart';
 import 'package:test/test.dart';
@@ -474,281 +469,6 @@
     _listener.assertNoErrors();
   }
 
-  void test_visitFunctionExpression_async_block() {
-    // () async {}
-    BlockFunctionBody body = AstTestFactory.blockFunctionBody2();
-    body.keyword = TokenFactory.tokenFromString('async');
-    FunctionExpression node = _resolvedFunctionExpression(
-        AstTestFactory.formalParameterList([]), body);
-    DartType resultType = _analyze(node);
-    _assertFunctionType(
-        _typeProvider.futureDynamicType, null, null, null, resultType);
-    _listener.assertNoErrors();
-  }
-
-  void test_visitFunctionExpression_async_expression() {
-    // () async => e, where e has type int
-    InterfaceType intType = _typeProvider.intType;
-    Expression expression = _resolvedVariable(intType, 'e');
-    ExpressionFunctionBody body =
-        AstTestFactory.expressionFunctionBody(expression);
-    body.keyword = TokenFactory.tokenFromString('async');
-    FunctionExpression node = _resolvedFunctionExpression(
-        AstTestFactory.formalParameterList([]), body);
-    DartType resultType = _analyze(node);
-    _assertFunctionType(_typeProvider.futureType2(_typeProvider.dynamicType),
-        null, null, null, resultType);
-    _listener.assertNoErrors();
-  }
-
-  void test_visitFunctionExpression_async_expression_flatten() {
-    // () async => e, where e has type Future<int>
-    InterfaceType intType = _typeProvider.intType;
-    InterfaceType futureIntType = _typeProvider.futureType2(intType);
-    Expression expression = _resolvedVariable(futureIntType, 'e');
-    ExpressionFunctionBody body =
-        AstTestFactory.expressionFunctionBody(expression);
-    body.keyword = TokenFactory.tokenFromString('async');
-    FunctionExpression node = _resolvedFunctionExpression(
-        AstTestFactory.formalParameterList([]), body);
-    DartType resultType = _analyze(node);
-    _assertFunctionType(_typeProvider.futureType2(_typeProvider.dynamicType),
-        null, null, null, resultType);
-    _listener.assertNoErrors();
-  }
-
-  void test_visitFunctionExpression_async_expression_flatten_twice() {
-    // () async => e, where e has type Future<Future<int>>
-    InterfaceType intType = _typeProvider.intType;
-    InterfaceType futureIntType = _typeProvider.futureType2(intType);
-    InterfaceType futureFutureIntType =
-        _typeProvider.futureType2(futureIntType);
-    Expression expression = _resolvedVariable(futureFutureIntType, 'e');
-    ExpressionFunctionBody body =
-        AstTestFactory.expressionFunctionBody(expression);
-    body.keyword = TokenFactory.tokenFromString('async');
-    FunctionExpression node = _resolvedFunctionExpression(
-        AstTestFactory.formalParameterList([]), body);
-    DartType resultType = _analyze(node);
-    _assertFunctionType(_typeProvider.futureType2(_typeProvider.dynamicType),
-        null, null, null, resultType);
-    _listener.assertNoErrors();
-  }
-
-  void test_visitFunctionExpression_generator_async() {
-    // () async* {}
-    BlockFunctionBody body = AstTestFactory.blockFunctionBody2();
-    body.keyword = TokenFactory.tokenFromString('async');
-    body.star = TokenFactory.tokenFromType(TokenType.STAR);
-    FunctionExpression node = _resolvedFunctionExpression(
-        AstTestFactory.formalParameterList([]), body);
-    DartType resultType = _analyze(node);
-    _assertFunctionType(
-        _typeProvider.streamDynamicType, null, null, null, resultType);
-    _listener.assertNoErrors();
-  }
-
-  void test_visitFunctionExpression_generator_sync() {
-    // () sync* {}
-    BlockFunctionBody body = AstTestFactory.blockFunctionBody2();
-    body.keyword = TokenFactory.tokenFromString('sync');
-    body.star = TokenFactory.tokenFromType(TokenType.STAR);
-    FunctionExpression node = _resolvedFunctionExpression(
-        AstTestFactory.formalParameterList([]), body);
-    DartType resultType = _analyze(node);
-    _assertFunctionType(
-        _typeProvider.iterableDynamicType, null, null, null, resultType);
-    _listener.assertNoErrors();
-  }
-
-  void test_visitFunctionExpression_named_block() {
-    // ({p1 : 0, p2 : 0}) {}
-    DartType dynamicType = _typeProvider.dynamicType;
-    FormalParameter p1 = AstTestFactory.namedFormalParameter(
-        AstTestFactory.simpleFormalParameter3("p1"), _resolvedInteger(0));
-    _setType(p1, dynamicType);
-    FormalParameter p2 = AstTestFactory.namedFormalParameter(
-        AstTestFactory.simpleFormalParameter3("p2"), _resolvedInteger(0));
-    _setType(p2, dynamicType);
-    FunctionExpression node = _resolvedFunctionExpression(
-        AstTestFactory.formalParameterList([p1, p2]),
-        AstTestFactory.blockFunctionBody2());
-    _analyze5(p1);
-    _analyze5(p2);
-    DartType resultType = _analyze(node);
-    Map<String, DartType> expectedNamedTypes = HashMap<String, DartType>();
-    expectedNamedTypes["p1"] = dynamicType;
-    expectedNamedTypes["p2"] = dynamicType;
-    _assertFunctionType(
-        dynamicType, null, null, expectedNamedTypes, resultType);
-    _listener.assertNoErrors();
-  }
-
-  void test_visitFunctionExpression_named_expression() {
-    // ({p : 0}) -> 0;
-    DartType dynamicType = _typeProvider.dynamicType;
-    FormalParameter p = AstTestFactory.namedFormalParameter(
-        AstTestFactory.simpleFormalParameter3("p"), _resolvedInteger(0));
-    _setType(p, dynamicType);
-    FunctionExpression node = _resolvedFunctionExpression(
-        AstTestFactory.formalParameterList([p]),
-        AstTestFactory.expressionFunctionBody(_resolvedInteger(0)));
-    _analyze5(p);
-    DartType resultType = _analyze(node);
-    Map<String, DartType> expectedNamedTypes = HashMap<String, DartType>();
-    expectedNamedTypes["p"] = dynamicType;
-    _assertFunctionType(
-        dynamicType, null, null, expectedNamedTypes, resultType);
-    _listener.assertNoErrors();
-  }
-
-  void test_visitFunctionExpression_normal_block() {
-    // (p1, p2) {}
-    DartType dynamicType = _typeProvider.dynamicType;
-    FormalParameter p1 = AstTestFactory.simpleFormalParameter3("p1");
-    _setType(p1, dynamicType);
-    FormalParameter p2 = AstTestFactory.simpleFormalParameter3("p2");
-    _setType(p2, dynamicType);
-    FunctionExpression node = _resolvedFunctionExpression(
-        AstTestFactory.formalParameterList([p1, p2]),
-        AstTestFactory.blockFunctionBody2());
-    _analyze5(p1);
-    _analyze5(p2);
-    DartType resultType = _analyze(node);
-    _assertFunctionType(dynamicType, <DartType>[dynamicType, dynamicType], null,
-        null, resultType);
-    _listener.assertNoErrors();
-  }
-
-  void test_visitFunctionExpression_normal_expression() {
-    // (p1, p2) -> 0
-    DartType dynamicType = _typeProvider.dynamicType;
-    FormalParameter p = AstTestFactory.simpleFormalParameter3("p");
-    _setType(p, dynamicType);
-    FunctionExpression node = _resolvedFunctionExpression(
-        AstTestFactory.formalParameterList([p]),
-        AstTestFactory.expressionFunctionBody(_resolvedInteger(0)));
-    _analyze5(p);
-    DartType resultType = _analyze(node);
-    _assertFunctionType(
-        dynamicType, <DartType>[dynamicType], null, null, resultType);
-    _listener.assertNoErrors();
-  }
-
-  void test_visitFunctionExpression_normalAndNamed_block() {
-    // (p1, {p2 : 0}) {}
-    DartType dynamicType = _typeProvider.dynamicType;
-    FormalParameter p1 = AstTestFactory.simpleFormalParameter3("p1");
-    _setType(p1, dynamicType);
-    FormalParameter p2 = AstTestFactory.namedFormalParameter(
-        AstTestFactory.simpleFormalParameter3("p2"), _resolvedInteger(0));
-    _setType(p2, dynamicType);
-    FunctionExpression node = _resolvedFunctionExpression(
-        AstTestFactory.formalParameterList([p1, p2]),
-        AstTestFactory.blockFunctionBody2());
-    _analyze5(p2);
-    DartType resultType = _analyze(node);
-    Map<String, DartType> expectedNamedTypes = HashMap<String, DartType>();
-    expectedNamedTypes["p2"] = dynamicType;
-    _assertFunctionType(dynamicType, <DartType>[dynamicType], null,
-        expectedNamedTypes, resultType);
-    _listener.assertNoErrors();
-  }
-
-  void test_visitFunctionExpression_normalAndNamed_expression() {
-    // (p1, {p2 : 0}) -> 0
-    DartType dynamicType = _typeProvider.dynamicType;
-    FormalParameter p1 = AstTestFactory.simpleFormalParameter3("p1");
-    _setType(p1, dynamicType);
-    FormalParameter p2 = AstTestFactory.namedFormalParameter(
-        AstTestFactory.simpleFormalParameter3("p2"), _resolvedInteger(0));
-    _setType(p2, dynamicType);
-    FunctionExpression node = _resolvedFunctionExpression(
-        AstTestFactory.formalParameterList([p1, p2]),
-        AstTestFactory.expressionFunctionBody(_resolvedInteger(0)));
-    _analyze5(p2);
-    DartType resultType = _analyze(node);
-    Map<String, DartType> expectedNamedTypes = HashMap<String, DartType>();
-    expectedNamedTypes["p2"] = dynamicType;
-    _assertFunctionType(dynamicType, <DartType>[dynamicType], null,
-        expectedNamedTypes, resultType);
-    _listener.assertNoErrors();
-  }
-
-  void test_visitFunctionExpression_normalAndPositional_block() {
-    // (p1, [p2 = 0]) {}
-    DartType dynamicType = _typeProvider.dynamicType;
-    FormalParameter p1 = AstTestFactory.simpleFormalParameter3("p1");
-    _setType(p1, dynamicType);
-    FormalParameter p2 = AstTestFactory.positionalFormalParameter(
-        AstTestFactory.simpleFormalParameter3("p2"), _resolvedInteger(0));
-    _setType(p2, dynamicType);
-    FunctionExpression node = _resolvedFunctionExpression(
-        AstTestFactory.formalParameterList([p1, p2]),
-        AstTestFactory.blockFunctionBody2());
-    _analyze5(p1);
-    _analyze5(p2);
-    DartType resultType = _analyze(node);
-    _assertFunctionType(dynamicType, <DartType>[dynamicType],
-        <DartType>[dynamicType], null, resultType);
-    _listener.assertNoErrors();
-  }
-
-  void test_visitFunctionExpression_normalAndPositional_expression() {
-    // (p1, [p2 = 0]) -> 0
-    DartType dynamicType = _typeProvider.dynamicType;
-    FormalParameter p1 = AstTestFactory.simpleFormalParameter3("p1");
-    _setType(p1, dynamicType);
-    FormalParameter p2 = AstTestFactory.positionalFormalParameter(
-        AstTestFactory.simpleFormalParameter3("p2"), _resolvedInteger(0));
-    _setType(p2, dynamicType);
-    FunctionExpression node = _resolvedFunctionExpression(
-        AstTestFactory.formalParameterList([p1, p2]),
-        AstTestFactory.expressionFunctionBody(_resolvedInteger(0)));
-    _analyze5(p1);
-    _analyze5(p2);
-    DartType resultType = _analyze(node);
-    _assertFunctionType(dynamicType, <DartType>[dynamicType],
-        <DartType>[dynamicType], null, resultType);
-    _listener.assertNoErrors();
-  }
-
-  void test_visitFunctionExpression_positional_block() {
-    // ([p1 = 0, p2 = 0]) {}
-    DartType dynamicType = _typeProvider.dynamicType;
-    FormalParameter p1 = AstTestFactory.positionalFormalParameter(
-        AstTestFactory.simpleFormalParameter3("p1"), _resolvedInteger(0));
-    _setType(p1, dynamicType);
-    FormalParameter p2 = AstTestFactory.positionalFormalParameter(
-        AstTestFactory.simpleFormalParameter3("p2"), _resolvedInteger(0));
-    _setType(p2, dynamicType);
-    FunctionExpression node = _resolvedFunctionExpression(
-        AstTestFactory.formalParameterList([p1, p2]),
-        AstTestFactory.blockFunctionBody2());
-    _analyze5(p1);
-    _analyze5(p2);
-    DartType resultType = _analyze(node);
-    _assertFunctionType(dynamicType, null, <DartType>[dynamicType, dynamicType],
-        null, resultType);
-    _listener.assertNoErrors();
-  }
-
-  void test_visitFunctionExpression_positional_expression() {
-    // ([p = 0]) -> 0
-    DartType dynamicType = _typeProvider.dynamicType;
-    FormalParameter p = AstTestFactory.positionalFormalParameter(
-        AstTestFactory.simpleFormalParameter3("p"), _resolvedInteger(0));
-    _setType(p, dynamicType);
-    FunctionExpression node = _resolvedFunctionExpression(
-        AstTestFactory.formalParameterList([p]),
-        AstTestFactory.expressionFunctionBody(_resolvedInteger(0)));
-    _analyze5(p);
-    DartType resultType = _analyze(node);
-    _assertFunctionType(
-        dynamicType, null, <DartType>[dynamicType], null, resultType);
-    _listener.assertNoErrors();
-  }
-
   void test_visitInstanceCreationExpression_named() {
     // new C.m()
     ClassElementImpl classElement = ElementFactory.classElement2("C");
@@ -976,66 +696,6 @@
     return node.staticType;
   }
 
-  /**
-   * Return the type associated with the given parameter after the static type analyzer has computed
-   * a type for it.
-   *
-   * @param node the parameter with which the type is associated
-   * @return the type associated with the parameter
-   */
-  DartType _analyze5(FormalParameter node) {
-    node.accept(_analyzer);
-    return (node.identifier.staticElement as ParameterElement).type;
-  }
-
-  /**
-   * Assert that the actual type is a function type with the expected characteristics.
-   *
-   * @param expectedReturnType the expected return type of the function
-   * @param expectedNormalTypes the expected types of the normal parameters
-   * @param expectedOptionalTypes the expected types of the optional parameters
-   * @param expectedNamedTypes the expected types of the named parameters
-   * @param actualType the type being tested
-   */
-  void _assertFunctionType(
-      DartType expectedReturnType,
-      List<DartType> expectedNormalTypes,
-      List<DartType> expectedOptionalTypes,
-      Map<String, DartType> expectedNamedTypes,
-      DartType actualType) {
-    FunctionType functionType = actualType;
-    List<DartType> normalTypes = functionType.normalParameterTypes;
-    if (expectedNormalTypes == null) {
-      expect(normalTypes, hasLength(0));
-    } else {
-      int expectedCount = expectedNormalTypes.length;
-      expect(normalTypes, hasLength(expectedCount));
-      for (int i = 0; i < expectedCount; i++) {
-        expect(normalTypes[i], same(expectedNormalTypes[i]));
-      }
-    }
-    List<DartType> optionalTypes = functionType.optionalParameterTypes;
-    if (expectedOptionalTypes == null) {
-      expect(optionalTypes, hasLength(0));
-    } else {
-      int expectedCount = expectedOptionalTypes.length;
-      expect(optionalTypes, hasLength(expectedCount));
-      for (int i = 0; i < expectedCount; i++) {
-        expect(optionalTypes[i], same(expectedOptionalTypes[i]));
-      }
-    }
-    Map<String, DartType> namedTypes = functionType.namedParameterTypes;
-    if (expectedNamedTypes == null) {
-      expect(namedTypes, hasLength(0));
-    } else {
-      expect(namedTypes, hasLength(expectedNamedTypes.length));
-      expectedNamedTypes.forEach((String name, DartType type) {
-        expect(namedTypes[name], same(type));
-      });
-    }
-    expect(functionType.returnType, equals(expectedReturnType));
-  }
-
   void _assertType(
       InterfaceTypeImpl expectedType, InterfaceTypeImpl actualType) {
     expect(actualType.getDisplayString(), expectedType.getDisplayString());
@@ -1099,37 +759,6 @@
   }
 
   /**
-   * Create a function expression that has an element associated with it, where the element has an
-   * incomplete type associated with it (just like the one
-   * [ElementBuilder.visitFunctionExpression] would have built if we had
-   * run it).
-   *
-   * @param parameters the parameters to the function
-   * @param body the body of the function
-   * @return a resolved function expression
-   */
-  FunctionExpression _resolvedFunctionExpression(
-      FormalParameterList parameters, FunctionBody body) {
-    List<ParameterElement> parameterElements = <ParameterElement>[];
-    for (FormalParameter parameter in parameters.parameters) {
-      var nameNode = parameter.identifier;
-      ParameterElementImpl element =
-          ParameterElementImpl(nameNode.name, nameNode.offset);
-      // ignore: deprecated_member_use_from_same_package
-      element.parameterKind = parameter.kind;
-      element.type = _typeProvider.dynamicType;
-      nameNode.staticElement = element;
-      parameterElements.add(element);
-    }
-    FunctionExpression node =
-        AstTestFactory.functionExpression2(parameters, body);
-    FunctionElementImpl element = FunctionElementImpl('', -1);
-    element.parameters = parameterElements;
-    (node as FunctionExpressionImpl).declaredElement = element;
-    return node;
-  }
-
-  /**
    * Return an integer literal that has been resolved to the correct type.
    *
    * @param value the value of the literal
@@ -1169,22 +798,6 @@
     identifier.staticType = type;
     return identifier;
   }
-
-  /**
-   * Set the type of the given parameter to the given type.
-   *
-   * @param parameter the parameter whose type is to be set
-   * @param type the new type of the given parameter
-   */
-  void _setType(FormalParameter parameter, DartType type) {
-    SimpleIdentifier identifier = parameter.identifier;
-    Element element = identifier.staticElement;
-    if (element is! ParameterElement) {
-      element = ParameterElementImpl(identifier.name, identifier.offset);
-      identifier.staticElement = element;
-    }
-    (element as ParameterElementImpl).type = type;
-  }
 }
 
 /**
diff --git a/pkg/analyzer/test/id_tests/inheritance_test.dart b/pkg/analyzer/test/id_tests/inheritance_test.dart
index 00d45f8..2dcf6b7 100644
--- a/pkg/analyzer/test/id_tests/inheritance_test.dart
+++ b/pkg/analyzer/test/id_tests/inheritance_test.dart
@@ -86,7 +86,7 @@
             type.getDisplayString(withNullability: true), object);
       }
 
-      var interface = inheritance.getInterface(element.thisType);
+      var interface = inheritance.getInterface(element);
       for (var name in interface.map.keys) {
         var executable = interface.map[name];
 
diff --git a/pkg/analyzer/test/src/dart/element/inheritance_manager3_test.dart b/pkg/analyzer/test/src/dart/element/inheritance_manager3_test.dart
index e7b9cbae..ab566fc 100644
--- a/pkg/analyzer/test/src/dart/element/inheritance_manager3_test.dart
+++ b/pkg/analyzer/test/src/dart/element/inheritance_manager3_test.dart
@@ -5,8 +5,6 @@
 import 'package:analyzer/dart/analysis/features.dart';
 import 'package:analyzer/dart/element/element.dart';
 import 'package:analyzer/dart/element/null_safety_understanding_flag.dart';
-import 'package:analyzer/dart/element/nullability_suffix.dart';
-import 'package:analyzer/dart/element/type.dart';
 import 'package:analyzer/src/dart/element/inheritance_manager3.dart';
 import 'package:analyzer/src/generated/engine.dart';
 import 'package:meta/meta.dart';
@@ -51,7 +49,7 @@
   void foo();
 }
 
-abstrac class J {
+abstract class J {
   void foo();
 }
 
@@ -967,8 +965,8 @@
     await resolveTestCode('''
 class A {}
 ''');
-    var member = manager.getMember(
-      typeProvider.objectType,
+    var member = manager.getMember2(
+      typeProvider.objectType.element,
       Name(null, 'hashCode'),
       forSuper: true,
     );
@@ -1322,10 +1320,8 @@
     @required String name,
     String expected,
   }) {
-    var interfaceType = _classInterfaceType(className);
-
-    var member = manager.getInherited(
-      interfaceType,
+    var member = manager.getInherited2(
+      findElement.classOrMixin(className),
       Name(null, name),
     );
 
@@ -1339,12 +1335,10 @@
     bool concrete = false,
     bool forSuper = false,
   }) {
-    var interfaceType = _classInterfaceType(className);
-
     ExecutableElement member;
     NullSafetyUnderstandingFlag.enableNullSafetyTypes(() {
-      member = manager.getMember(
-        interfaceType,
+      member = manager.getMember2(
+        findElement.classOrMixin(className),
         Name(null, name),
         concrete: concrete,
         forSuper: forSuper,
@@ -1375,14 +1369,14 @@
   }
 
   void _assertInheritedConcreteMap(String className, String expected) {
-    var type = _classInterfaceType(className);
-    var map = manager.getInheritedConcreteMap(type);
+    var element = findElement.classOrMixin(className);
+    var map = manager.getInheritedConcreteMap2(element);
     _assertNameToExecutableMap(map, expected);
   }
 
   void _assertInheritedMap(String className, String expected) {
-    var type = _classInterfaceType(className);
-    var map = manager.getInheritedMap(type);
+    var element = findElement.classOrMixin(className);
+    var map = manager.getInheritedMap2(element);
     _assertNameToExecutableMap(map, expected);
   }
 
@@ -1408,12 +1402,4 @@
     }
     expect(actual, expected);
   }
-
-  InterfaceType _classInterfaceType(String className) {
-    var element = findElement.classOrMixin(className);
-    return element.instantiate(
-      typeArguments: const [],
-      nullabilitySuffix: NullabilitySuffix.star,
-    );
-  }
 }
diff --git a/pkg/analyzer/test/src/dart/element/type_algebra_test.dart b/pkg/analyzer/test/src/dart/element/type_algebra_test.dart
index 75efd3f..298138f 100644
--- a/pkg/analyzer/test/src/dart/element/type_algebra_test.dart
+++ b/pkg/analyzer/test/src/dart/element/type_algebra_test.dart
@@ -371,12 +371,12 @@
 
 class _Base with ElementsTypesMixin {
   @override
-  final TestTypeProvider typeProvider;
+  final TestTypeProvider typeProvider = TestTypeProvider();
 
+  /// TODO(scheglov) remove it
   final bool useNnbd;
 
-  _Base({this.useNnbd = false})
-      : typeProvider = TestTypeProvider(isNonNullableByDefault: useNnbd);
+  _Base({this.useNnbd = false});
 
   InterfaceType get boolType => typeProvider.boolType;
 
diff --git a/pkg/analyzer/test/src/dart/micro/simple_file_resolver_test.dart b/pkg/analyzer/test/src/dart/micro/simple_file_resolver_test.dart
index 28ed93b..86f64b0 100644
--- a/pkg/analyzer/test/src/dart/micro/simple_file_resolver_test.dart
+++ b/pkg/analyzer/test/src/dart/micro/simple_file_resolver_test.dart
@@ -63,6 +63,38 @@
     _assertRefreshedFiles([aPath, cPath]);
   }
 
+  test_changePartFile_refreshedFiles() async {
+    newFile(aPath, content: r'''
+part 'b.dart';
+
+class A {}
+''');
+
+    newFile(bPath, content: r'''
+part of 'a.dart';
+
+class B extends A {}
+''');
+
+    newFile(cPath, content: r'''
+import 'a.dart';
+''');
+
+    // First time we refresh everything.
+    await fileResolver.resolve(bPath);
+    _assertRefreshedFiles([aPath, bPath], withSdk: true);
+    // Change b.dart, refresh a.dart
+    fileResolver.changeFile(bPath);
+    await fileResolver.resolve(bPath);
+    _assertRefreshedFiles([aPath, bPath]);
+    // now with c.dart
+    await fileResolver.resolve(cPath);
+    _assertRefreshedFiles([cPath]);
+    fileResolver.changeFile(bPath);
+    await fileResolver.resolve(cPath);
+    _assertRefreshedFiles([aPath, bPath, cPath]);
+  }
+
   test_changeFile_resolution() async {
     newFile(aPath, content: r'''
 class A {}
@@ -350,4 +382,23 @@
       error(StaticTypeWarningCode.INVALID_ASSIGNMENT, 19, 1),
     ]);
   }
+
+  test_resolve_part_of() async {
+    newFile('/workspace/dart/test/lib/a.dart', content: r'''
+part 'test.dart';
+
+class A {
+  int m;
+}
+''');
+
+    await assertNoErrorsInCode(r'''
+part of 'a.dart';
+
+void func() {
+  var a = A();
+  print(a.m);
+}
+''');
+  }
 }
diff --git a/pkg/analyzer/test/src/dart/resolution/class_test.dart b/pkg/analyzer/test/src/dart/resolution/class_test.dart
index 4ff5920..b988020 100644
--- a/pkg/analyzer/test/src/dart/resolution/class_test.dart
+++ b/pkg/analyzer/test/src/dart/resolution/class_test.dart
@@ -515,118 +515,6 @@
     expect(method.isStatic, isTrue);
   }
 
-  test_inconsistentInheritance_parameterType() async {
-    await assertErrorsInCode(r'''
-abstract class A {
-  x(int i);
-}
-abstract class B {
-  x(String s);
-}
-abstract class C implements A, B {}
-''', [
-      error(CompileTimeErrorCode.INCONSISTENT_INHERITANCE, 84, 1),
-    ]);
-  }
-
-  test_inconsistentInheritance_requiredParameters() async {
-    await assertErrorsInCode(r'''
-abstract class A {
-  x();
-}
-abstract class B {
-  x(int y);
-}
-abstract class C implements A, B {}
-''', [
-      error(CompileTimeErrorCode.INCONSISTENT_INHERITANCE, 76, 1),
-    ]);
-  }
-
-  test_inconsistentInheritance_returnType() async {
-    await assertErrorsInCode(r'''
-abstract class A {
-  int x();
-}
-abstract class B {
-  String x();
-}
-abstract class C implements A, B {}
-''', [
-      error(CompileTimeErrorCode.INCONSISTENT_INHERITANCE, 82, 1),
-    ]);
-  }
-
-  test_inconsistentInheritanceGetterAndMethod_getter_method() async {
-    await assertErrorsInCode(r'''
-abstract class A {
-  int get x;
-}
-abstract class B {
-  int x();
-}
-abstract class C implements A, B {}
-''', [
-      error(CompileTimeErrorCode.INCONSISTENT_INHERITANCE_GETTER_AND_METHOD, 81,
-          1),
-    ]);
-  }
-
-  test_inconsistentInheritanceGetterAndMethod_method_getter() async {
-    await assertErrorsInCode(r'''
-abstract class A {
-  int x();
-}
-abstract class B {
-  int get x;
-}
-abstract class C implements A, B {}
-''', [
-      error(CompileTimeErrorCode.INCONSISTENT_INHERITANCE_GETTER_AND_METHOD, 81,
-          1),
-    ]);
-  }
-
-  test_inconsistentInheritanceGetterAndMethod_mixinApp() async {
-    await assertErrorsInCode('''
-class S {
-  bool get m => false;
-}
-
-class M {
-  int m() => 1;
-}
-
-class C = S with M;
-''', [
-      error(CompileTimeErrorCode.INCONSISTENT_INHERITANCE_GETTER_AND_METHOD, 71,
-          1),
-    ]);
-  }
-
-  test_inconsistentInheritanceGetterAndMethod_mixinApp2() async {
-    await assertErrorsInCode('''
-class S {
-  bool get m => false;
-}
-
-class M1 {
-  int m() => 1;
-}
-
-class M2 {
-  bool get m => false;
-}
-
-class C = S with M1, M2;
-''', [
-      error(CompileTimeErrorCode.INCONSISTENT_INHERITANCE_GETTER_AND_METHOD,
-          109, 1),
-      error(CompileTimeErrorCode.INCONSISTENT_INHERITANCE_GETTER_AND_METHOD,
-          109, 1),
-    ]);
-  }
-
   test_issue32815() async {
     await assertErrorsInCode(r'''
 class A<T> extends B<T> {}
diff --git a/pkg/analyzer/test/src/dart/resolution/extension_method_test.dart b/pkg/analyzer/test/src/dart/resolution/extension_method_test.dart
index 77886d3..0505e26 100644
--- a/pkg/analyzer/test/src/dart/resolution/extension_method_test.dart
+++ b/pkg/analyzer/test/src/dart/resolution/extension_method_test.dart
@@ -1414,7 +1414,7 @@
 
   test_thisAccessOnDynamic() async {
     await assertNoErrorsInCode('''
-extension on dynamic {
+extension E on dynamic {
   int get d => 3;
 
   void testDynamic() {
@@ -1427,7 +1427,7 @@
 
   test_thisAccessOnFunction() async {
     await assertNoErrorsInCode('''
-extension on Function {
+extension E on Function {
   int get f => 4;
 
   void testFunction() {
diff --git a/pkg/analyzer/test/src/dart/resolution/mixin_test.dart b/pkg/analyzer/test/src/dart/resolution/mixin_test.dart
index c897c26..77d2705 100644
--- a/pkg/analyzer/test/src/dart/resolution/mixin_test.dart
+++ b/pkg/analyzer/test/src/dart/resolution/mixin_test.dart
@@ -1026,150 +1026,6 @@
     assertTypeName(bRef, findElement.class_('B'), 'B');
   }
 
-  test_inconsistentInheritance_implements_parameterType() async {
-    await assertErrorsInCode(r'''
-abstract class A {
-  x(int i);
-}
-abstract class B {
-  x(String s);
-}
-mixin M implements A, B {}
-''', [
-      error(CompileTimeErrorCode.INCONSISTENT_INHERITANCE, 75, 1),
-    ]);
-  }
-
-  test_inconsistentInheritance_implements_requiredParameters() async {
-    await assertErrorsInCode(r'''
-abstract class A {
-  x();
-}
-abstract class B {
-  x(int y);
-}
-mixin M implements A, B {}
-''', [
-      error(CompileTimeErrorCode.INCONSISTENT_INHERITANCE, 67, 1),
-    ]);
-  }
-
-  test_inconsistentInheritance_implements_returnType() async {
-    await assertErrorsInCode(r'''
-abstract class A {
-  int x();
-}
-abstract class B {
-  String x();
-}
-mixin M implements A, B {}
-''', [
-      error(CompileTimeErrorCode.INCONSISTENT_INHERITANCE, 73, 1),
-    ]);
-  }
-
-  test_inconsistentInheritance_on_parameterType() async {
-    await assertErrorsInCode(r'''
-abstract class A {
-  x(int i);
-}
-abstract class B {
-  x(String s);
-}
-mixin M on A, B {}
-''', [
-      error(CompileTimeErrorCode.INCONSISTENT_INHERITANCE, 75, 1),
-    ]);
-  }
-
-  test_inconsistentInheritance_on_requiredParameters() async {
-    await assertErrorsInCode(r'''
-abstract class A {
-  x();
-}
-abstract class B {
-  x(int y);
-}
-mixin M on A, B {}
-''', [
-      error(CompileTimeErrorCode.INCONSISTENT_INHERITANCE, 67, 1),
-    ]);
-  }
-
-  test_inconsistentInheritance_on_returnType() async {
-    await assertErrorsInCode(r'''
-abstract class A {
-  int x();
-}
-abstract class B {
-  String x();
-}
-mixin M on A, B {}
-''', [
-      error(CompileTimeErrorCode.INCONSISTENT_INHERITANCE, 73, 1),
-    ]);
-  }
-
-  test_inconsistentInheritanceGetterAndMethod_implements_getter_method() async {
-    await assertErrorsInCode(r'''
-abstract class A {
-  int get x;
-}
-abstract class B {
-  int x();
-}
-mixin M implements A, B {}
-''', [
-      error(CompileTimeErrorCode.INCONSISTENT_INHERITANCE_GETTER_AND_METHOD, 72,
-          1),
-    ]);
-  }
-
-  test_inconsistentInheritanceGetterAndMethod_implements_method_getter() async {
-    await assertErrorsInCode(r'''
-abstract class A {
-  int x();
-}
-abstract class B {
-  int get x;
-}
-mixin M implements A, B {}
-''', [
-      error(CompileTimeErrorCode.INCONSISTENT_INHERITANCE_GETTER_AND_METHOD, 72,
-          1),
-    ]);
-  }
-
-  test_inconsistentInheritanceGetterAndMethod_on_getter_method() async {
-    await assertErrorsInCode(r'''
-abstract class A {
-  int get x;
-}
-abstract class B {
-  int x();
-}
-mixin M implements A, B {}
-''', [
-      error(CompileTimeErrorCode.INCONSISTENT_INHERITANCE_GETTER_AND_METHOD, 72,
-          1),
-    ]);
-  }
-
-  test_inconsistentInheritanceGetterAndMethod_on_method_getter() async {
-    await assertErrorsInCode(r'''
-abstract class A {
-  int x();
-}
-abstract class B {
-  int get x;
-}
-mixin M implements A, B {}
-''', [
-      error(CompileTimeErrorCode.INCONSISTENT_INHERITANCE_GETTER_AND_METHOD, 72,
-          1),
-    ]);
-  }
-
   test_invalid_unresolved_before_mixin() async {
     await assertErrorsInCode(r'''
 abstract class A {
diff --git a/pkg/analyzer/test/src/dart/resolution/type_inference/function_expression_test.dart b/pkg/analyzer/test/src/dart/resolution/type_inference/function_expression_test.dart
index 15bea04..32db6c1 100644
--- a/pkg/analyzer/test/src/dart/resolution/type_inference/function_expression_test.dart
+++ b/pkg/analyzer/test/src/dart/resolution/type_inference/function_expression_test.dart
@@ -63,6 +63,13 @@
     _assertReturnType('() async {', 'Future<int>');
   }
 
+  test_returnType_async_blockBody_noReturn() async {
+    await resolveTestCode('''
+var v = () async {};
+''');
+    _assertReturnType('() async {', 'Future<Null>');
+  }
+
   test_returnType_async_expressionBody() async {
     await resolveTestCode('''
 var v = () async => 0;
@@ -70,7 +77,21 @@
     _assertReturnType('() async =>', 'Future<int>');
   }
 
-  test_returnType_asyncStar_blockBody() async {
+  test_returnType_async_expressionBody_flatten() async {
+    await resolveTestCode('''
+var v = () async => Future.value(0);
+''');
+    _assertReturnType('() async =>', 'Future<int>');
+  }
+
+  test_returnType_async_expressionBody_flatten2() async {
+    await resolveTestCode('''
+var v = () async => Future.value(Future.value(0));
+''');
+    _assertReturnType('() async =>', 'Future<int>');
+  }
+
+  test_returnType_asyncStar_blockBody_hasYield() async {
     await resolveTestCode('''
 var v = () async* {
   yield 0;
@@ -79,6 +100,13 @@
     _assertReturnType('() async* {', 'Stream<int>');
   }
 
+  test_returnType_asyncStar_blockBody_noYield() async {
+    await resolveTestCode('''
+var v = () async* {};
+''');
+    _assertReturnType('() async* {', 'Stream<dynamic>');
+  }
+
   test_returnType_sync_blockBody() async {
     await resolveTestCode('''
 var v = () {
@@ -225,7 +253,7 @@
     _assertReturnType('() =>', 'Null');
   }
 
-  test_returnType_syncStar_blockBody() async {
+  test_returnType_syncStar_blockBody_hasYield() async {
     await resolveTestCode('''
 var v = () sync* {
   yield 0;
@@ -234,6 +262,13 @@
     _assertReturnType('() sync* {', 'Iterable<int>');
   }
 
+  test_returnType_syncStar_blockBody_noYield() async {
+    await resolveTestCode('''
+var v = () sync* {};
+''');
+    _assertReturnType('() sync* {', 'Iterable<dynamic>');
+  }
+
   void _assertReturnType(String search, String expected) {
     var element = findNode.functionExpression(search).declaredElement;
     assertType(element.returnType, expected);
diff --git a/pkg/analyzer/test/src/diagnostics/abstract_super_member_reference_test.dart b/pkg/analyzer/test/src/diagnostics/abstract_super_member_reference_test.dart
index cb4fedd..ce1e5b1 100644
--- a/pkg/analyzer/test/src/diagnostics/abstract_super_member_reference_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/abstract_super_member_reference_test.dart
@@ -211,6 +211,28 @@
     );
   }
 
+  test_propertyAccess_getter_mixin_implements() async {
+    await assertErrorsInCode(r'''
+class A {
+  int get foo => 0;
+}
+
+mixin M implements A {
+  void bar() {
+    super.foo;
+  }
+}
+''', [
+      error(CompileTimeErrorCode.ABSTRACT_SUPER_MEMBER_REFERENCE, 81, 3),
+    ]);
+
+    assertPropertyAccess2(
+      findNode.propertyAccess('super.foo'),
+      element: findElement.getter('foo', of: 'A'),
+      type: 'int',
+    );
+  }
+
   test_propertyAccess_getter_mixinHasNoSuchMethod() async {
     await assertErrorsInCode('''
 class A {
diff --git a/pkg/analyzer/test/src/diagnostics/inconsistent_inheritance_getter_and_method_test.dart b/pkg/analyzer/test/src/diagnostics/inconsistent_inheritance_getter_and_method_test.dart
new file mode 100644
index 0000000..029df6c
--- /dev/null
+++ b/pkg/analyzer/test/src/diagnostics/inconsistent_inheritance_getter_and_method_test.dart
@@ -0,0 +1,147 @@
+// Copyright (c) 2020, the Dart project authors. Please see the AUTHORS file
+// 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.
+
+import 'package:analyzer/src/error/codes.dart';
+import 'package:test_reflective_loader/test_reflective_loader.dart';
+
+import '../dart/resolution/driver_resolution.dart';
+
+main() {
+  defineReflectiveSuite(() {
+    defineReflectiveTests(InconsistentInheritanceGetterAndMethodTest);
+  });
+}
+
+@reflectiveTest
+class InconsistentInheritanceGetterAndMethodTest extends DriverResolutionTest {
+  test_class_getter_method() async {
+    await assertErrorsInCode(r'''
+abstract class A {
+  int get foo;
+}
+abstract class B {
+  int foo();
+}
+abstract class C implements A, B {}
+''', [
+      error(CompileTimeErrorCode.INCONSISTENT_INHERITANCE_GETTER_AND_METHOD, 85,
+          1),
+    ]);
+  }
+
+  test_class_method_getter() async {
+    await assertErrorsInCode(r'''
+abstract class A {
+  int foo();
+}
+abstract class B {
+  int get foo;
+}
+abstract class C implements A, B {}
+''', [
+      error(CompileTimeErrorCode.INCONSISTENT_INHERITANCE_GETTER_AND_METHOD, 85,
+          1),
+    ]);
+  }
+
+  test_class_mixinApp() async {
+    await assertErrorsInCode('''
+class S {
+  int get foo => 0;
+}
+
+class M {
+  int foo() => 0;
+}
+
+class C = S with M;
+''', [
+      error(CompileTimeErrorCode.INCONSISTENT_INHERITANCE_GETTER_AND_METHOD, 70,
+          1),
+    ]);
+  }
+
+  test_class_mixinApp2() async {
+    await assertErrorsInCode('''
+class S {
+  int get foo => 0;
+}
+
+class M1 {
+  int foo() => 0;
+}
+
+class M2 {
+  int get foo => 0;
+}
+
+class C = S with M1, M2;
+''', [
+      error(CompileTimeErrorCode.INCONSISTENT_INHERITANCE_GETTER_AND_METHOD,
+          105, 1),
+      error(CompileTimeErrorCode.INCONSISTENT_INHERITANCE_GETTER_AND_METHOD,
+          105, 1),
+    ]);
+  }
+
+  test_mixin_implements_getter_method() async {
+    await assertErrorsInCode(r'''
+abstract class A {
+  int get foo;
+}
+abstract class B {
+  int foo();
+}
+mixin M implements A, B {}
+''', [
+      error(CompileTimeErrorCode.INCONSISTENT_INHERITANCE_GETTER_AND_METHOD, 76,
+          1),
+    ]);
+  }
+
+  test_mixin_implements_method_getter() async {
+    await assertErrorsInCode(r'''
+abstract class A {
+  int foo();
+}
+abstract class B {
+  int get foo;
+}
+mixin M implements A, B {}
+''', [
+      error(CompileTimeErrorCode.INCONSISTENT_INHERITANCE_GETTER_AND_METHOD, 76,
+          1),
+    ]);
+  }
+
+  test_mixin_on_getter_method() async {
+    await assertErrorsInCode(r'''
+abstract class A {
+  int get foo;
+}
+abstract class B {
+  int foo();
+}
+mixin M on A, B {}
+''', [
+      error(CompileTimeErrorCode.INCONSISTENT_INHERITANCE_GETTER_AND_METHOD, 76,
+          1),
+    ]);
+  }
+
+  test_mixin_on_method_getter() async {
+    await assertErrorsInCode(r'''
+abstract class A {
+  int foo();
+}
+abstract class B {
+  int get foo;
+}
+mixin M on A, B {}
+''', [
+      error(CompileTimeErrorCode.INCONSISTENT_INHERITANCE_GETTER_AND_METHOD, 76,
+          1),
+    ]);
+  }
+}
diff --git a/pkg/analyzer/test/src/diagnostics/inconsistent_inheritance_test.dart b/pkg/analyzer/test/src/diagnostics/inconsistent_inheritance_test.dart
new file mode 100644
index 0000000..7d6f23e
--- /dev/null
+++ b/pkg/analyzer/test/src/diagnostics/inconsistent_inheritance_test.dart
@@ -0,0 +1,143 @@
+// Copyright (c) 2020, the Dart project authors. Please see the AUTHORS file
+// 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.
+
+import 'package:analyzer/src/error/codes.dart';
+import 'package:test_reflective_loader/test_reflective_loader.dart';
+
+import '../dart/resolution/driver_resolution.dart';
+
+main() {
+  defineReflectiveSuite(() {
+    defineReflectiveTests(InconsistentInheritanceTest);
+  });
+}
+
+@reflectiveTest
+class InconsistentInheritanceTest extends DriverResolutionTest {
+  test_class_parameterType() async {
+    await assertErrorsInCode(r'''
+abstract class A {
+  void foo(int i);
+}
+abstract class B {
+  void foo(String s);
+}
+abstract class C implements A, B {}
+''', [
+      error(CompileTimeErrorCode.INCONSISTENT_INHERITANCE, 98, 1),
+    ]);
+  }
+
+  test_class_requiredParameters() async {
+    await assertErrorsInCode(r'''
+abstract class A {
+  void foo();
+}
+abstract class B {
+  void foo(int y);
+}
+abstract class C implements A, B {}
+''', [
+      error(CompileTimeErrorCode.INCONSISTENT_INHERITANCE, 90, 1),
+    ]);
+  }
+
+  test_class_returnType() async {
+    await assertErrorsInCode(r'''
+abstract class A {
+  int foo();
+}
+abstract class B {
+  String foo();
+}
+abstract class C implements A, B {}
+''', [
+      error(CompileTimeErrorCode.INCONSISTENT_INHERITANCE, 86, 1),
+    ]);
+  }
+
+  test_mixin_implements_parameterType() async {
+    await assertErrorsInCode(r'''
+abstract class A {
+  void foo(int i);
+}
+abstract class B {
+  void foo(String s);
+}
+mixin M implements A, B {}
+''', [
+      error(CompileTimeErrorCode.INCONSISTENT_INHERITANCE, 89, 1),
+    ]);
+  }
+
+  test_mixin_implements_requiredParameters() async {
+    await assertErrorsInCode(r'''
+abstract class A {
+  void foo();
+}
+abstract class B {
+  void foo(int y);
+}
+mixin M implements A, B {}
+''', [
+      error(CompileTimeErrorCode.INCONSISTENT_INHERITANCE, 81, 1),
+    ]);
+  }
+
+  test_mixin_implements_returnType() async {
+    await assertErrorsInCode(r'''
+abstract class A {
+  int foo();
+}
+abstract class B {
+  String foo();
+}
+mixin M implements A, B {}
+''', [
+      error(CompileTimeErrorCode.INCONSISTENT_INHERITANCE, 77, 1),
+    ]);
+  }
+
+  test_mixin_on_parameterType() async {
+    await assertErrorsInCode(r'''
+abstract class A {
+  void foo(int i);
+}
+abstract class B {
+  void foo(String s);
+}
+mixin M on A, B {}
+''', [
+      error(CompileTimeErrorCode.INCONSISTENT_INHERITANCE, 89, 1),
+    ]);
+  }
+
+  test_mixin_on_requiredParameters() async {
+    await assertErrorsInCode(r'''
+abstract class A {
+  void foo();
+}
+abstract class B {
+  void foo(int y);
+}
+mixin M on A, B {}
+''', [
+      error(CompileTimeErrorCode.INCONSISTENT_INHERITANCE, 81, 1),
+    ]);
+  }
+
+  test_mixin_on_returnType() async {
+    await assertErrorsInCode(r'''
+abstract class A {
+  int foo();
+}
+abstract class B {
+  String foo();
+}
+mixin M on A, B {}
+''', [
+      error(CompileTimeErrorCode.INCONSISTENT_INHERITANCE, 77, 1),
+    ]);
+  }
+}
diff --git a/pkg/analyzer/test/src/diagnostics/invalid_override_test.dart b/pkg/analyzer/test/src/diagnostics/invalid_override_test.dart
index 662a22b..baaff61 100644
--- a/pkg/analyzer/test/src/diagnostics/invalid_override_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/invalid_override_test.dart
@@ -439,6 +439,63 @@
     ]);
   }
 
+  test_mixin_field_type() async {
+    await assertErrorsInCode(r'''
+class A {
+  String foo = '';
+}
+
+mixin M on A {
+  int foo = 0;
+}
+''', [
+      error(CompileTimeErrorCode.INVALID_OVERRIDE, 53, 3),
+      error(CompileTimeErrorCode.INVALID_OVERRIDE, 53, 3),
+    ]);
+  }
+
+  test_mixin_getter_type() async {
+    await assertErrorsInCode(r'''
+class A {
+  String get foo => '';
+}
+
+mixin M on A {
+  int get foo => 0;
+}
+''', [
+      error(CompileTimeErrorCode.INVALID_OVERRIDE, 62, 3),
+    ]);
+  }
+
+  test_mixin_method_returnType() async {
+    await assertErrorsInCode(r'''
+class A {
+  String foo() => '';
+}
+
+mixin M on A {
+  int foo() => 0;
+}
+''', [
+      error(CompileTimeErrorCode.INVALID_OVERRIDE, 56, 3),
+    ]);
+  }
+
+  test_mixin_setter_type() async {
+    await assertErrorsInCode(r'''
+class A {
+  set foo(String _) {}
+}
+
+mixin M on A {
+  set foo(int _) {}
+}
+''', [
+      error(CompileTimeErrorCode.INVALID_OVERRIDE, 57, 3),
+    ]);
+  }
+
   test_setter_normalParamType() async {
     await assertErrorsInCode('''
 class A {
diff --git a/pkg/analyzer/test/src/diagnostics/missing_default_value_for_parameter_test.dart b/pkg/analyzer/test/src/diagnostics/missing_default_value_for_parameter_test.dart
index 0236a09..b78b72b 100644
--- a/pkg/analyzer/test/src/diagnostics/missing_default_value_for_parameter_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/missing_default_value_for_parameter_test.dart
@@ -115,6 +115,42 @@
 ''');
   }
 
+  test_constructor_redirectingFactory_nonNullable_named_optional() async {
+    await assertNoErrorsInCode('''
+class A {
+  factory A({int a}) = B;
+}
+
+class B implements A {
+  B({int a = 0});
+}
+''');
+  }
+
+  test_constructor_redirectingFactory_nonNullable_positional_optional() async {
+    await assertNoErrorsInCode('''
+class A {
+  factory A([int a]) = B;
+}
+
+class B implements A {
+  B([int a = 0]);
+}
+''');
+  }
+
+  test_constructor_redirectingFactory_nullable_named_optional() async {
+    await assertNoErrorsInCode('''
+class A {
+  factory A({int? a}) = B;
+}
+
+class B implements A {
+  B({int? a});
+}
+''');
+  }
+
   test_fieldFormalParameter_functionTyped_named_optional() async {
     await assertNoErrorsInCode('''
 class A {
diff --git a/pkg/analyzer/test/src/diagnostics/not_initialized_non_nullable_instance_field_test.dart b/pkg/analyzer/test/src/diagnostics/not_initialized_non_nullable_instance_field_test.dart
index c6bc64f..1ef6b33 100644
--- a/pkg/analyzer/test/src/diagnostics/not_initialized_non_nullable_instance_field_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/not_initialized_non_nullable_instance_field_test.dart
@@ -36,6 +36,17 @@
 ''');
   }
 
+  test_class_ffi_struct() async {
+    await assertNoErrorsInCode('''
+import 'dart:ffi';
+
+class A extends Struct {
+  @Double()
+  double foo;
+}
+''');
+  }
+
   test_class_notNullable_factoryConstructor_only() async {
     await assertErrorsInCode('''
 class A {
diff --git a/pkg/analyzer/test/src/diagnostics/super_in_extension_test.dart b/pkg/analyzer/test/src/diagnostics/super_in_extension_test.dart
index 84652ac..e28a9eb 100644
--- a/pkg/analyzer/test/src/diagnostics/super_in_extension_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/super_in_extension_test.dart
@@ -33,6 +33,7 @@
   }
 }
 ''', [
+      error(HintCode.UNUSED_ELEMENT, 23, 1),
       error(CompileTimeErrorCode.SUPER_IN_EXTENSION, 33, 5),
     ]);
   }
diff --git a/pkg/analyzer/test/src/diagnostics/test_all.dart b/pkg/analyzer/test/src/diagnostics/test_all.dart
index 76664cc..47eaec0 100644
--- a/pkg/analyzer/test/src/diagnostics/test_all.dart
+++ b/pkg/analyzer/test/src/diagnostics/test_all.dart
@@ -168,6 +168,9 @@
 import 'import_of_non_library_test.dart' as import_of_non_library;
 import 'inconsistent_case_expression_types_test.dart'
     as inconsistent_case_expression_types;
+import 'inconsistent_inheritance_getter_and_method_test.dart'
+    as inconsistent_inheritance_getter_and_method;
+import 'inconsistent_inheritance_test.dart' as inconsistent_inheritance;
 import 'inference_failure_on_collection_literal_test.dart'
     as inference_failure_on_collection_literal;
 import 'inference_failure_on_function_return_type_test.dart'
@@ -619,6 +622,8 @@
     import_deferred_library_with_load_function.main();
     import_duplicated_library_named.main();
     inconsistent_case_expression_types.main();
+    inconsistent_inheritance_getter_and_method.main();
+    inconsistent_inheritance.main();
     import_of_non_library.main();
     inference_failure_on_collection_literal.main();
     inference_failure_on_function_return_type.main();
diff --git a/pkg/analyzer/test/src/diagnostics/unused_element_test.dart b/pkg/analyzer/test/src/diagnostics/unused_element_test.dart
index 2235ada..4ed85b1 100644
--- a/pkg/analyzer/test/src/diagnostics/unused_element_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/unused_element_test.dart
@@ -715,6 +715,17 @@
 ''');
   }
 
+  test_method_isUsed_privateExtension() async {
+    await assertNoErrorsInCode(r'''
+extension _A on String {
+  void m() {}
+}
+void main() {
+  "hello".m();
+}
+''');
+  }
+
   test_method_isUsed_staticInvocation() async {
     await assertNoErrorsInCode(r'''
 class A {
@@ -726,6 +737,17 @@
 ''');
   }
 
+  test_method_isUsed_unnamedExtension() async {
+    await assertNoErrorsInCode(r'''
+extension on String {
+  void m() {}
+}
+void main() {
+  "hello".m();
+}
+''');
+  }
+
   test_method_notUsed_hasSameNameAsUsed() async {
     await assertErrorsInCode(r'''
 class A {
@@ -750,6 +772,16 @@
     ]);
   }
 
+  test_method_notUsed_privateExtension() async {
+    await assertErrorsInCode(r'''
+extension _A on String {
+  void m() {}
+}
+''', [
+      error(HintCode.UNUSED_ELEMENT, 32, 1),
+    ]);
+  }
+
   test_method_notUsed_referenceFromItself() async {
     await assertErrorsInCode(r'''
 class A {
@@ -785,6 +817,16 @@
     ]);
   }
 
+  test_method_notUsed_unnamedExtension() async {
+    await assertErrorsInCode(r'''
+extension on String {
+  void m() {}
+}
+''', [
+      error(HintCode.UNUSED_ELEMENT, 29, 1),
+    ]);
+  }
+
   test_publicStaticMethod_privateClass_isUsed() async {
     await assertNoErrorsInCode(r'''
 class _A {
diff --git a/pkg/analyzer/test/src/diagnostics/use_of_void_result_test.dart b/pkg/analyzer/test/src/diagnostics/use_of_void_result_test.dart
index b1cbafc..d702f89 100644
--- a/pkg/analyzer/test/src/diagnostics/use_of_void_result_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/use_of_void_result_test.dart
@@ -568,6 +568,7 @@
   }
 }
 ''', [
+      error(HintCode.UNUSED_ELEMENT, 22, 8),
       error(StaticWarningCode.USE_OF_VOID_RESULT, 96, 4),
     ]);
   }
diff --git a/pkg/analyzer/test/src/lint/linter/resolve_name_in_scope_test.dart b/pkg/analyzer/test/src/lint/linter/resolve_name_in_scope_test.dart
index 88b6282..3aa45e2 100644
--- a/pkg/analyzer/test/src/lint/linter/resolve_name_in_scope_test.dart
+++ b/pkg/analyzer/test/src/lint/linter/resolve_name_in_scope_test.dart
@@ -551,7 +551,9 @@
     this.foo();
   }
 }
-''');
+''', [
+      error(HintCode.UNUSED_ELEMENT, 53, 3),
+    ]);
     _checkMethodNone();
   }
 
@@ -566,7 +568,9 @@
     this.foo();
   }
 }
-''');
+''', [
+      error(HintCode.UNUSED_ELEMENT, 53, 3),
+    ]);
     _checkMethodRequested(findElement.parameter('foo'));
   }
 
@@ -583,7 +587,9 @@
 }
 
 var foo = 0;
-''');
+''', [
+      error(HintCode.UNUSED_ELEMENT, 53, 3),
+    ]);
     _checkMethodRequested(findElement.topGet('foo'));
   }
 
@@ -598,7 +604,9 @@
     this.foo();
   }
 }
-''');
+''', [
+      error(HintCode.UNUSED_ELEMENT, 53, 3),
+    ]);
     _checkMethodRequested(findElement.method('foo'));
   }
 
diff --git a/pkg/analyzer_plugin/lib/utilities/completion/relevance.dart b/pkg/analyzer_plugin/lib/utilities/completion/relevance.dart
index 21655d7..1034dca 100644
--- a/pkg/analyzer_plugin/lib/utilities/completion/relevance.dart
+++ b/pkg/analyzer_plugin/lib/utilities/completion/relevance.dart
@@ -53,6 +53,13 @@
   /// The relevance used when suggesting a field as a field formal parameter.
   static const int fieldFormalParameter = 1000;
 
+  /// The relevance used when suggesting an import of a library other than
+  /// `dart:core`.
+  static const int import = 900;
+
+  /// The relevance used when suggesting an import of `dart:core`.
+  static const int importDartCore = 100;
+
   /// The relevance used when suggesting a label.
   static const int label = 1000;
 
diff --git a/pkg/analyzer_plugin/test/src/utilities/change_builder/change_builder_dart_test.dart b/pkg/analyzer_plugin/test/src/utilities/change_builder/change_builder_dart_test.dart
index 6be5479..86904fb 100644
--- a/pkg/analyzer_plugin/test/src/utilities/change_builder/change_builder_dart_test.dart
+++ b/pkg/analyzer_plugin/test/src/utilities/change_builder/change_builder_dart_test.dart
@@ -2804,15 +2804,8 @@
       }
     }
 
-    var targetType = targetElement.instantiate(
-      typeArguments: targetElement.typeParameters
-          .map((e) => e.instantiate(nullabilitySuffix: NullabilitySuffix.star))
-          .toList(),
-      nullabilitySuffix: NullabilitySuffix.star,
-    );
-
-    var inherited = InheritanceManager3().getInherited(
-      targetType,
+    var inherited = InheritanceManager3().getInherited2(
+      targetElement,
       Name(null, nameToOverride),
     );
 
diff --git a/pkg/compiler/lib/src/constants/values.dart b/pkg/compiler/lib/src/constants/values.dart
index 0a1679d..ebeac09 100644
--- a/pkg/compiler/lib/src/constants/values.dart
+++ b/pkg/compiler/lib/src/constants/values.dart
@@ -906,7 +906,9 @@
 // A constant with an empty type used in [HInstruction]s of an expression
 // in an unreachable context.
 class UnreachableConstantValue extends ConstantValue {
-  const UnreachableConstantValue();
+  factory UnreachableConstantValue() => const UnreachableConstantValue._();
+
+  const UnreachableConstantValue._();
 
   @override
   bool get isDummy => true;
diff --git a/pkg/compiler/lib/src/js_backend/constant_emitter.dart b/pkg/compiler/lib/src/js_backend/constant_emitter.dart
index 25a309e..4cd0619 100644
--- a/pkg/compiler/lib/src/js_backend/constant_emitter.dart
+++ b/pkg/compiler/lib/src/js_backend/constant_emitter.dart
@@ -155,7 +155,9 @@
 
   @override
   jsAst.Expression visitUnreachable(UnreachableConstantValue constant, [_]) {
-    return new jsAst.LiteralNumber('0');
+    // Unreachable constants should be rare in generated code, so we use
+    // `undefined` encoded as `void 1' to make them distinctive.
+    return js('void 1');
   }
 
   @override
diff --git a/pkg/compiler/lib/src/serialization/abstract_source.dart b/pkg/compiler/lib/src/serialization/abstract_source.dart
index fb968a5..a6564cc 100644
--- a/pkg/compiler/lib/src/serialization/abstract_source.dart
+++ b/pkg/compiler/lib/src/serialization/abstract_source.dart
@@ -542,7 +542,7 @@
         AbstractValue abstractValue = readAbstractValue();
         return new DummyInterceptorConstantValue(abstractValue);
       case ConstantValueKind.UNREACHABLE:
-        return const UnreachableConstantValue();
+        return UnreachableConstantValue();
       case ConstantValueKind.JS_NAME:
         js.LiteralString name = readJsNode();
         return new JsNameConstantValue(name);
diff --git a/pkg/compiler/lib/src/serialization/task.dart b/pkg/compiler/lib/src/serialization/task.dart
index f9affee..86b00ee 100644
--- a/pkg/compiler/lib/src/serialization/task.dart
+++ b/pkg/compiler/lib/src/serialization/task.dart
@@ -98,6 +98,10 @@
       new ir.BinaryBuilder(dillInput.data).readComponent(component);
       return component;
     });
+    if (component.libraries.any((lib) =>
+        lib.isNonNullableByDefault && lib.importUri.scheme == 'dart')) {
+      _options.useNullSafety = true;
+    }
 
     return await measureIoSubtask('deserialize data', () async {
       _reporter.log('Reading data from ${_options.readDataUri}');
diff --git a/pkg/compiler/lib/src/ssa/builder_kernel.dart b/pkg/compiler/lib/src/ssa/builder_kernel.dart
index ba9f5f6..16b8d5f 100644
--- a/pkg/compiler/lib/src/ssa/builder_kernel.dart
+++ b/pkg/compiler/lib/src/ssa/builder_kernel.dart
@@ -1755,7 +1755,11 @@
   @override
   void visitBlock(ir.Block block) {
     assert(!isAborted());
-    if (!_isReachable) return; // This can only happen when inlining.
+    // [block] can be unreachable at the beginning of a block if an
+    // ir.BlockExpression that is a subexpression of an expression that contains
+    // a throwing prior subexpression, e.g. `[throw e, {...[]}]`.
+    if (!_isReachable) return;
+
     for (ir.Statement statement in block.statements) {
       statement.accept(this);
       if (!_isReachable) {
@@ -3617,7 +3621,13 @@
   @override
   void visitBlockExpression(ir.BlockExpression node) {
     node.body.accept(this);
-    node.value.accept(this);
+    // Body can be partially generated due to an exception exit and be missing
+    // bindings referenced in the value.
+    if (!_isReachable) {
+      stack.add(graph.addConstantUnreachable(closedWorld));
+    } else {
+      node.value.accept(this);
+    }
   }
 
   /// Extracts the list of instructions for the positional subset of arguments.
@@ -5956,7 +5966,8 @@
       _enterInlinedMethod(function, compiledArguments, instanceType);
       _inlinedFrom(function, sourceInformation, () {
         if (!_isReachable) {
-          _emitReturn(graph.addConstantNull(closedWorld), sourceInformation);
+          _emitReturn(
+              graph.addConstantUnreachable(closedWorld), sourceInformation);
         } else {
           _doInline(function);
         }
diff --git a/pkg/compiler/lib/src/ssa/nodes.dart b/pkg/compiler/lib/src/ssa/nodes.dart
index 414e7a3..e29459a 100644
--- a/pkg/compiler/lib/src/ssa/nodes.dart
+++ b/pkg/compiler/lib/src/ssa/nodes.dart
@@ -341,7 +341,7 @@
   HConstant addConstantUnreachable(JClosedWorld closedWorld) {
     // A constant with an empty type used as the HInstruction of an expression
     // in an unreachable context.
-    return addConstant(const UnreachableConstantValue(), closedWorld);
+    return addConstant(UnreachableConstantValue(), closedWorld);
   }
 
   void finalize(AbstractValueDomain domain) {
diff --git a/pkg/compiler/lib/src/ssa/optimize.dart b/pkg/compiler/lib/src/ssa/optimize.dart
index 6b65f2a..cce21ad 100644
--- a/pkg/compiler/lib/src/ssa/optimize.dart
+++ b/pkg/compiler/lib/src/ssa/optimize.dart
@@ -2380,8 +2380,7 @@
   HInstruction get zapInstruction {
     if (zapInstructionCache == null) {
       // A constant with no type does not pollute types at phi nodes.
-      ConstantValue constant = const UnreachableConstantValue();
-      zapInstructionCache = analyzer.graph.addConstant(constant, closedWorld);
+      zapInstructionCache = analyzer.graph.addConstantUnreachable(closedWorld);
     }
     return zapInstructionCache;
   }
diff --git a/pkg/dart2native/bin/dart2native.dart b/pkg/dart2native/bin/dart2native.dart
index 754b221..d51368d 100644
--- a/pkg/dart2native/bin/dart2native.dart
+++ b/pkg/dart2native/bin/dart2native.dart
@@ -32,7 +32,8 @@
     String packages,
     List<String> defines,
     bool enableAsserts,
-    bool verbose) async {
+    bool verbose,
+    List<String> extraGenSnapshotOptions) async {
   final Directory tempDir = Directory.systemTemp.createTempSync();
   try {
     final String kernelFile = path.join(tempDir.path, 'kernel.dill');
@@ -68,8 +69,8 @@
     if (verbose) {
       print('Generating AOT snapshot.');
     }
-    final snapshotResult = await generateAotSnapshot(
-        genSnapshot, kernelFile, snapshotFile, debugFile, enableAsserts);
+    final snapshotResult = await generateAotSnapshot(genSnapshot, kernelFile,
+        snapshotFile, debugFile, enableAsserts, extraGenSnapshotOptions);
     if (snapshotResult.exitCode != 0) {
       stderr.writeln(snapshotResult.stdout);
       stderr.writeln(snapshotResult.stderr);
@@ -119,6 +120,12 @@
 E.g.: dart2native -Da=1,b=2 main.dart''')
     ..addFlag('enable-asserts',
         negatable: false, help: 'Enable assert statements.')
+    ..addMultiOption(
+      'extra-gen-snapshot-options',
+      help: 'Pass additional options to gen_snapshot.',
+      hide: true,
+      valueHelp: 'opt1,opt2,...',
+    )
     ..addFlag('help',
         abbr: 'h', negatable: false, help: 'Display this help message.')
     ..addOption(
@@ -200,7 +207,8 @@
         parsedArgs['packages'],
         parsedArgs['define'],
         parsedArgs['enable-asserts'],
-        parsedArgs['verbose']);
+        parsedArgs['verbose'],
+        parsedArgs['extra-gen-snapshot-options']);
   } catch (e) {
     stderr.writeln('Failed to generate native files:');
     stderr.writeln(e);
diff --git a/pkg/dart2native/lib/dart2native.dart b/pkg/dart2native/lib/dart2native.dart
index 26e146a..21df61f 100644
--- a/pkg/dart2native/lib/dart2native.dart
+++ b/pkg/dart2native/lib/dart2native.dart
@@ -59,8 +59,13 @@
   ]);
 }
 
-Future generateAotSnapshot(String genSnapshot, String kernelFile,
-    String snapshotFile, String debugFile, bool enableAsserts) {
+Future generateAotSnapshot(
+    String genSnapshot,
+    String kernelFile,
+    String snapshotFile,
+    String debugFile,
+    bool enableAsserts,
+    List<String> extraGenSnapshotOptions) {
   return Process.run(genSnapshot, [
     '--snapshot-kind=app-aot-elf',
     '--elf=${snapshotFile}',
@@ -68,6 +73,7 @@
     if (debugFile != null) '--dwarf-stack-traces',
     if (debugFile != null) '--strip',
     if (enableAsserts) '--enable-asserts',
+    ...extraGenSnapshotOptions,
     kernelFile
   ]);
 }
diff --git a/pkg/dartdev/lib/dartdev.dart b/pkg/dartdev/lib/dartdev.dart
index 62180a8..b4cb2c8 100644
--- a/pkg/dartdev/lib/dartdev.dart
+++ b/pkg/dartdev/lib/dartdev.dart
@@ -2,6 +2,8 @@
 // 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.
 
+import 'dart:io';
+
 import 'package:args/args.dart';
 import 'package:args/command_runner.dart';
 import 'package:cli_util/cli_logging.dart';
@@ -30,7 +32,7 @@
     addCommand(AnalyzeCommand(verbose: verbose));
     addCommand(CreateCommand(verbose: verbose));
     addCommand(FormatCommand(verbose: verbose));
-    addCommand(MigrateCommand(logProvider: () => log, hidden: !verbose));
+    addCommand(MigrateCommand(logProvider: () => log));
     addCommand(PubCommand(verbose: verbose));
     addCommand(RunCommand(verbose: verbose));
     addCommand(TestCommand(verbose: verbose));
@@ -42,6 +44,16 @@
 
   @override
   Future<int> runCommand(ArgResults results) async {
+    if (results.command == null && results.arguments.isNotEmpty) {
+      final firstArg = results.arguments.first;
+      // If we make it this far, it means the VM couldn't find the file on disk.
+      if (firstArg.endsWith('.dart')) {
+        stderr.writeln(
+            "Error when reading '$firstArg': No such file or directory.");
+        // This is the exit code used by the frontend.
+        exit(254);
+      }
+    }
     isVerbose = results['verbose'];
 
     final Ansi ansi = Ansi(Ansi.terminalSupportsAnsi);
diff --git a/pkg/dartdev/lib/src/commands/run.dart b/pkg/dartdev/lib/src/commands/run.dart
index 5c6cd31..1abc46a 100644
--- a/pkg/dartdev/lib/src/commands/run.dart
+++ b/pkg/dartdev/lib/src/commands/run.dart
@@ -3,9 +3,11 @@
 // BSD-style license that can be found in the LICENSE file.
 
 import 'dart:async';
+import 'dart:convert';
 import 'dart:io';
 
 import 'package:args/args.dart';
+import 'package:dds/dds.dart';
 
 import '../core.dart';
 import '../sdk.dart';
@@ -51,6 +53,16 @@
     // the command line arguments after 'run'
     final args = argResults.arguments;
 
+    // If the user wants to start a debugging session we need to do some extra
+    // work and spawn a Dart Development Service (DDS) instance. DDS is a VM
+    // service intermediary which implements the VM service protocol and
+    // provides non-VM specific extensions (e.g., log caching, client
+    // synchronization).
+    if (args.any((element) => (element.startsWith('--observe') ||
+        element.startsWith('--enable-vm-service')))) {
+      return await _DebuggingSession(args).start();
+    }
+
     // Starting in ProcessStartMode.inheritStdio mode means the child process
     // can detect support for ansi chars.
     final process = await Process.start(
@@ -59,3 +71,185 @@
     return process.exitCode;
   }
 }
+
+class _DebuggingSession {
+  _DebuggingSession(List<String> args) : _args = args.toList() {
+    // Process flags that are meant to configure the VM service HTTP server or
+    // dump VM service connection information to a file. Since the VM service
+    // clients won't actually be connecting directly to the service, we'll make
+    // DDS appear as if it is the actual VM service.
+    for (final arg in _args) {
+      final isObserve = arg.startsWith('--observe');
+      if (isObserve || arg.startsWith('--enable-vm-service')) {
+        if (isObserve) {
+          _observe = true;
+        }
+        // These flags can be provided by the embedder so we need to check for
+        // both `=` and `:` separators.
+        final observatoryBindInfo =
+            (arg.contains('=') ? arg.split('=') : arg.split(':'))[1].split('/');
+        _port = int.tryParse(observatoryBindInfo.first) ?? 0;
+        if (observatoryBindInfo.length > 1) {
+          try {
+            _bindAddress = Uri.http(observatoryBindInfo[1], '');
+          } on FormatException {
+            // TODO(bkonyi): log invalid parse? The VM service just ignores bad
+            // input flags.
+            // Ignore.
+          }
+        }
+      } else if (arg.startsWith('--write-service-info=')) {
+        try {
+          _serviceInfoUri = Uri.parse(arg.split('=')[1]);
+        } on FormatException {
+          // TODO(bkonyi): log invalid parse? The VM service just ignores bad
+          // input flags.
+          // Ignore.
+        }
+      }
+    }
+
+    // Strip --observe and --write-service-info from the arguments as we'll be
+    // providing our own.
+    _args.removeWhere(
+      (arg) => (arg.startsWith('--observe') ||
+          arg.startsWith('--enable-vm-service') ||
+          arg.startsWith('--write-service-info')),
+    );
+  }
+
+  FutureOr<int> start() async {
+    // Output the service information for the target process to a temporary
+    // file so we can avoid scraping stderr for the service URI.
+    final serviceInfoDir =
+        await Directory.systemTemp.createTemp('dart_service');
+    final serviceInfoUri = serviceInfoDir.uri.resolve('service_info.json');
+    final serviceInfoFile = await File.fromUri(serviceInfoUri).create();
+
+    // Start using ProcessStartMode.normal and forward stdio manually as we
+    // need to filter the true VM service URI and replace it with the DDS URI.
+    _process = await Process.start(
+      'dart',
+      [
+        '--disable-dart-dev',
+        _observe
+            ? '--observe=0'
+            : '--enable-vm-service=0', // We don't care which port the VM service binds to.
+        '--write-service-info=$serviceInfoUri',
+        ..._args,
+      ],
+    );
+    _forwardAndFilterStdio(_process);
+
+    // Start DDS once the VM service has finished starting up.
+    await Future.any([
+      _waitForRemoteServiceUri(serviceInfoFile)
+          .then((serviceUri) => _startDDS(serviceUri)),
+      _process.exitCode,
+    ]);
+
+    return _process.exitCode.then((exitCode) async {
+      // Shutdown DDS if it was started and wait for the process' stdio streams
+      // to close so we don't truncate program output.
+      await Future.wait([
+        _dds?.shutdown(),
+        _stderrDone,
+        _stdoutDone,
+      ]);
+      return exitCode;
+    });
+  }
+
+  Future<Uri> _waitForRemoteServiceUri(File serviceInfoFile) async {
+    // Wait for VM service to write its connection info to disk.
+    while ((await serviceInfoFile.length() <= 5)) {
+      await Future.delayed(const Duration(milliseconds: 50));
+    }
+    final serviceInfoStr = await serviceInfoFile.readAsString();
+    return Uri.parse(jsonDecode(serviceInfoStr)['uri']);
+  }
+
+  Future<void> _startDDS(Uri remoteVmServiceUri) async {
+    _dds = await DartDevelopmentService.startDartDevelopmentService(
+      remoteVmServiceUri,
+      serviceUri: _bindAddress.replace(port: _port),
+    );
+    if (_serviceInfoUri != null) {
+      // Output the service connection information.
+      await File.fromUri(_serviceInfoUri).writeAsString(
+        json.encode({
+          'uri': _dds.uri.toString(),
+        }),
+      );
+    }
+    _ddsCompleter.complete();
+  }
+
+  void _forwardAndFilterStdio(Process process) {
+    // Since VM service clients cannot connect to the real VM service once DDS
+    // has started, replace all instances of the real VM service's URI with the
+    // DDS URI. Clients should only know that they are connected to DDS if they
+    // explicitly request that information via the protocol.
+    String filterObservatoryUri(String msg) {
+      if (_dds == null) {
+        return msg;
+      }
+      if (msg.startsWith('Observatory listening on') ||
+          msg.startsWith('Connect to Observatory at')) {
+        // Search for the VM service URI in the message and replace it.
+        msg = msg.replaceFirst(
+          RegExp(r'https?:\/\/(www\.)?[-a-zA-Z0-9@:%._\+~#=]{1,256}\.'
+              r'[a-zA-Z0-9()]{1,6}\b([-a-zA-Z0-9()@:%_\+.~#?&//=]*)'),
+          _dds.uri.toString(),
+        );
+      }
+      return msg;
+    }
+
+    // Wait for DDS to start before handling any stdio events from the target
+    // to ensure we don't let any unfiltered messages slip through.
+    // TODO(bkonyi): consider filtering on bytes rather than decoding the UTF8.
+    _stderrDone = process.stderr
+        .transform(Utf8Decoder(allowMalformed: true))
+        .listen((event) async {
+      await _waitForDDS();
+      stderr.write(filterObservatoryUri(event));
+    }).asFuture();
+
+    _stdoutDone = process.stdout
+        .transform(Utf8Decoder(allowMalformed: true))
+        .listen((event) async {
+      await _waitForDDS();
+      stdout.write(filterObservatoryUri(event));
+    }).asFuture();
+
+    stdin.listen(
+      (event) async {
+        await _waitForDDS();
+        process.stdin.add(event);
+      },
+    );
+  }
+
+  Future<void> _waitForDDS() async {
+    if (!_ddsCompleter.isCompleted) {
+      // No need to wait for DDS if the process has already exited.
+      await Future.any([
+        _ddsCompleter.future,
+        _process.exitCode,
+      ]);
+    }
+  }
+
+  Uri _bindAddress = Uri.http('127.0.0.1', '');
+  DartDevelopmentService _dds;
+  bool _observe = false;
+  int _port;
+  Process _process;
+  Uri _serviceInfoUri;
+  Future _stderrDone;
+  Future _stdoutDone;
+
+  final List<String> _args;
+  final Completer<void> _ddsCompleter = Completer();
+}
diff --git a/pkg/dartdev/pubspec.yaml b/pkg/dartdev/pubspec.yaml
index 949d21c..8714110 100644
--- a/pkg/dartdev/pubspec.yaml
+++ b/pkg/dartdev/pubspec.yaml
@@ -8,6 +8,8 @@
 dependencies:
   args: ^1.5.2
   cli_util: ^0.1.0
+  dds:
+    path: '../dds'
   intl: ^0.16.0
   path: ^1.6.2
   stagehand: 3.3.7
diff --git a/pkg/dartdev/test/commands/flag_test.dart b/pkg/dartdev/test/commands/flag_test.dart
index b18b6e5..4224db2 100644
--- a/pkg/dartdev/test/commands/flag_test.dart
+++ b/pkg/dartdev/test/commands/flag_test.dart
@@ -54,7 +54,7 @@
     expect(result.stdout, contains('analyze '));
     expect(result.stdout, contains('create '));
     expect(result.stdout, contains('format '));
-    expect(result.stdout, isNot(contains('migrate ')));
+    expect(result.stdout, contains('migrate '));
   });
 
   test('--help --verbose', () {
diff --git a/pkg/dartdev/test/commands/migrate_test.dart b/pkg/dartdev/test/commands/migrate_test.dart
index c3d2c97..c5f8882 100644
--- a/pkg/dartdev/test/commands/migrate_test.dart
+++ b/pkg/dartdev/test/commands/migrate_test.dart
@@ -11,9 +11,7 @@
   group('migrate', defineMigrateTests, timeout: longTimeout);
 }
 
-// TODO(jcollins-g): Set to true and/or remove when when NNBD is enabled in the
-//  SDK running this test.
-bool _nnbdIsEnabled = false;
+bool _nnbdIsEnabled = true;
 
 void defineMigrateTests() {
   final didYouForgetToRunPubGet = contains('Did you forget to run "pub get"?');
diff --git a/pkg/dartfix/lib/src/migrate/migrate.dart b/pkg/dartfix/lib/src/migrate/migrate.dart
index a7cb7a4..1fbd9e5 100644
--- a/pkg/dartfix/lib/src/migrate/migrate.dart
+++ b/pkg/dartfix/lib/src/migrate/migrate.dart
@@ -57,7 +57,10 @@
 
   @override
   String get description =>
-      'Perform a null safety migration on a project or package.';
+      'Perform a null safety migration on a project or package.'
+      '\n\nThe migrate feature is in preview and not yet complete; we welcome '
+      'feedback.\n\n'
+      'https://github.com/dart-lang/sdk/tree/master/pkg/nnbd_migration#providing-feedback';
 
   @override
   String get invocation {
diff --git a/pkg/dartfix/pubspec.yaml b/pkg/dartfix/pubspec.yaml
index c8de0ad..ca488e6 100644
--- a/pkg/dartfix/pubspec.yaml
+++ b/pkg/dartfix/pubspec.yaml
@@ -14,7 +14,7 @@
 dependencies:
   # Pin to an exact version of analysis_server_client because the edit.dartfix
   # protocol is experimental and will continue to evolve.
-  analysis_server_client: 1.1.3
+  analysis_server_client: '>=1.1.3 <1.1.4'
   args: ^1.4.0
   cli_util: ^0.1.3
   path: ^1.7.0
diff --git a/pkg/dartfix/test/src/client_version_test.dart b/pkg/dartfix/test/src/client_version_test.dart
deleted file mode 100644
index 54be7bcc80..0000000
--- a/pkg/dartfix/test/src/client_version_test.dart
+++ /dev/null
@@ -1,24 +0,0 @@
-// Copyright (c) 2019, the Dart project authors. Please see the AUTHORS file
-// 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.
-
-import 'package:test/test.dart';
-
-import 'test_context.dart';
-
-void main() {
-  test('client version', () {
-    // The edit.dartfix protocol is experimental and will continue to evolve
-    // an so dartfix will only work with this specific version of the
-    // analysis_server_client package.
-    // If the protocol changes, then a new version of both the
-    // analysis_server_client and dartfix packages must be published.
-    expect(clientVersion, clientVersionInDartfixPubspec);
-  });
-}
-
-String get clientVersion =>
-    findValue(findFile('pkg/analysis_server_client/pubspec.yaml'), 'version');
-
-String get clientVersionInDartfixPubspec =>
-    findValue(findFile('pkg/dartfix/pubspec.yaml'), 'analysis_server_client');
diff --git a/pkg/dartfix/test/test_all.dart b/pkg/dartfix/test/test_all.dart
index c87a99f..0b1908e 100644
--- a/pkg/dartfix/test/test_all.dart
+++ b/pkg/dartfix/test/test_all.dart
@@ -4,7 +4,6 @@
 
 import 'package:test/test.dart';
 
-import 'src/client_version_test.dart' as client_version;
 import 'src/driver_example_test.dart' as driver_example;
 import 'src/driver_exclude_test.dart' as driver_exclude;
 import 'src/driver_help_test.dart' as driver_help;
@@ -16,7 +15,6 @@
 import 'src/options_test.dart' as options_test;
 
 void main() {
-  group('version', client_version.main);
   group('driver', driver_example.main);
   group('driver', driver_exclude.main);
   group('driver', driver_help.main);
diff --git a/pkg/dds/dds_protocol.md b/pkg/dds/dds_protocol.md
index c40b84d..b3bca7b 100644
--- a/pkg/dds/dds_protocol.md
+++ b/pkg/dds/dds_protocol.md
@@ -1,6 +1,6 @@
-# Dart Development Service Protocol 0.x
+# Dart Development Service Protocol 1.0
 
-This document describes _version 0.x_ of the Dart Development Service Protocol.
+This document describes _version 1.0_ of the Dart Development Service Protocol.
 This protocol is an extension of the Dart VM Service Protocol and implements it
 in it's entirety. For details on the VM Service Protocol, see the [Dart VM Service Protocol Specification][service-protocol].
 
@@ -17,10 +17,13 @@
 - [Revision History](#revision-history)
 - [Public RPCs](#public-rpcs)
   - [getClientName](#getclientname)
+  - [getLogHistorySize](#getloghistorysize)
   - [requirePermissionToResume](#requirepermissiontoresume)
   - [setClientName](#setclientname)
+  - [setLogHistorySize](#setloghistorysize)
 - [Public Types](#public-types)
   - [ClientName](#clientname)
+  - [Size](#size)
 
 ## RPCs, Requests, and Responses
 
@@ -58,6 +61,18 @@
 
 See [ClientName](#clientname)
 
+### getLogHistorySize
+
+```
+Size getLogHistorySize()
+```
+
+The _getLogHistorySize_ RPC is used to retrieve the current size of the log
+history buffer. If the returned [Size](#size) is zero, then log history is
+disabled.
+
+See [Size](#size).
+
 ### requirePermissionToResume
 
 ```
@@ -106,6 +121,19 @@
 
 See [Success](#success).
 
+### setLogHistorySize
+
+```
+Success setLogHistorySize(int size)
+```
+
+The _setLogHistorySize_ RPC is used to set the size of the ring buffer used for
+caching a limited set of historical log messages. If _size_ is 0, logging history
+will be disabled. The maximum history size is 100,000 messages, with the default
+set to 10,000 messages.
+
+See [Success](#success).
+
 ## Public Types
 
 The DDS Protocol supports all [public types defined in the VM Service protocol][service-protocol-public-types].
@@ -121,11 +149,21 @@
 
 See [getClientName](#getclientname) and [setClientName](#setclientname).
 
+### Size
+
+```
+class Size extends Response {
+  int size;
+}
+```
+
+A simple object representing a size response.
+
 ## Revision History
 
 version | comments
 ------- | --------
-0.x | Initial revision
+1.0 | Initial revision
 
 [resume]: https://github.com/dart-lang/sdk/blob/master/runtime/vm/service/service.md#resume
 [success]: https://github.com/dart-lang/sdk/blob/master/runtime/vm/service/service.md#success
@@ -137,4 +175,4 @@
 [service-protocol-types]: https://github.com/dart-lang/sdk/blob/master/runtime/vm/service/service.md#types
 [service-protocol-ids-and-names]: https://github.com/dart-lang/sdk/blob/master/runtime/vm/service/service.md#ids-and-names
 [service-protocol-public-rpcs]: https://github.com/dart-lang/sdk/blob/master/runtime/vm/service/service.md#public-rpcs
-[service-protocol-public-types]: https://github.com/dart-lang/sdk/blob/master/runtime/vm/service/service.md#public-types
\ No newline at end of file
+[service-protocol-public-types]: https://github.com/dart-lang/sdk/blob/master/runtime/vm/service/service.md#public-types
diff --git a/pkg/dds/lib/dds.dart b/pkg/dds/lib/dds.dart
index 4312c28..8fdb4b5 100644
--- a/pkg/dds/lib/dds.dart
+++ b/pkg/dds/lib/dds.dart
@@ -10,6 +10,7 @@
 import 'dart:collection';
 import 'dart:convert';
 import 'dart:io';
+import 'dart:math';
 import 'dart:typed_data';
 
 import 'package:async/async.dart';
@@ -28,6 +29,7 @@
 part 'src/client_manager.dart';
 part 'src/constants.dart';
 part 'src/dds_impl.dart';
+part 'src/logging_repository.dart';
 part 'src/isolate_manager.dart';
 part 'src/named_lookup.dart';
 part 'src/rpc_error_codes.dart';
diff --git a/pkg/dds/lib/src/client.dart b/pkg/dds/lib/src/client.dart
index 2c19752..811aec2 100644
--- a/pkg/dds/lib/src/client.dart
+++ b/pkg/dds/lib/src/client.dart
@@ -99,6 +99,24 @@
       (parameters) => dds.isolateManager.resumeIsolate(this, parameters),
     );
 
+    _clientPeer.registerMethod(
+        'getLogHistorySize',
+        (parameters) => {
+              'type': 'Size',
+              'size': dds.loggingRepository.bufferSize,
+            });
+
+    _clientPeer.registerMethod('setLogHistorySize', (parameters) {
+      final size = parameters['size'].asInt;
+      if (size < 0) {
+        throw json_rpc.RpcException.invalidParams(
+          "'size' must be greater or equal to zero",
+        );
+      }
+      dds.loggingRepository.resize(size);
+      return _RPCResponses.success;
+    });
+
     // When invoked within a fallback, the next fallback will start executing.
     // The final fallback forwards the request to the VM service directly.
     @alwaysThrows
diff --git a/pkg/dds/lib/src/dds_impl.dart b/pkg/dds/lib/src/dds_impl.dart
index f47d909f..5b68151 100644
--- a/pkg/dds/lib/src/dds_impl.dart
+++ b/pkg/dds/lib/src/dds_impl.dart
@@ -8,6 +8,7 @@
   _DartDevelopmentService(this._remoteVmServiceUri, this._uri) {
     _clientManager = _ClientManager(this);
     _isolateManager = _IsolateManager(this);
+    _loggingRepository = _LoggingRepository();
     _streamManager = _StreamManager(this);
   }
 
@@ -136,6 +137,9 @@
   _IsolateManager get isolateManager => _isolateManager;
   _IsolateManager _isolateManager;
 
+  _LoggingRepository get loggingRepository => _loggingRepository;
+  _LoggingRepository _loggingRepository;
+
   _StreamManager get streamManager => _streamManager;
   _StreamManager _streamManager;
 
diff --git a/pkg/dds/lib/src/logging_repository.dart b/pkg/dds/lib/src/logging_repository.dart
new file mode 100644
index 0000000..67415be
--- /dev/null
+++ b/pkg/dds/lib/src/logging_repository.dart
@@ -0,0 +1,94 @@
+// Copyright (c) 2020, the Dart project authors.  Please see the AUTHORS file
+// 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.
+
+part of dds;
+
+/// [_LoggingRepository] is used to store historical log messages from the
+/// target VM service. Clients which connect to DDS and subscribe to the
+/// `Logging` stream will be sent all messages contained within this repository
+/// upon initial subscription.
+class _LoggingRepository extends _RingBuffer<Map<String, dynamic>> {
+  _LoggingRepository([int logHistoryLength = 10000]) : super(logHistoryLength) {
+    // TODO(bkonyi): enforce log history limit when DartDevelopmentService
+    // allows for this to be set via Dart code.
+  }
+
+  void sendHistoricalLogs(_DartDevelopmentServiceClient client) {
+    // Only send historical log messages when the client first subscribes to
+    // the logging stream.
+    if (_sentHistoricLogsClientSet.contains(client)) {
+      return;
+    }
+    _sentHistoricLogsClientSet.add(client);
+    for (final log in this()) {
+      client.sendNotification('streamNotify', log);
+    }
+  }
+
+  @override
+  void resize(int size) {
+    if (size > _kMaxLogBufferSize) {
+      throw json_rpc.RpcException.invalidParams(
+        "'size' must be less than $_kMaxLogBufferSize",
+      );
+    }
+    super.resize(size);
+  }
+
+  // The set of clients which have subscribed to the Logging stream at some
+  // point in time.
+  final Set<_DartDevelopmentServiceClient> _sentHistoricLogsClientSet = {};
+  static const int _kMaxLogBufferSize = 100000;
+}
+
+// TODO(bkonyi): move to standalone file if we decide to use this elsewhere.
+class _RingBuffer<T> {
+  _RingBuffer(int initialSize) {
+    _bufferSize = initialSize;
+    _buffer = List<T>.filled(
+      _bufferSize,
+      null,
+    );
+  }
+
+  Iterable<T> call() sync* {
+    for (int i = _size - 1; i >= 0; --i) {
+      yield _buffer[(_count - i - 1) % _bufferSize];
+    }
+  }
+
+  void add(T e) {
+    if (_buffer.isEmpty) {
+      return;
+    }
+    _buffer[_count++ % _bufferSize] = e;
+  }
+
+  void resize(int size) {
+    assert(size >= 0);
+    if (size == _bufferSize) {
+      return;
+    }
+    final resized = List<T>.filled(
+      size,
+      null,
+    );
+    int count = 0;
+    if (size > 0) {
+      for (final e in this()) {
+        resized[count++ % size] = e;
+      }
+    }
+    _count = count;
+    _bufferSize = size;
+    _buffer = resized;
+  }
+
+  int get bufferSize => _bufferSize;
+  int get _size => min(_count, _bufferSize);
+
+  int _bufferSize;
+  int _count = 0;
+  List<T> _buffer;
+}
diff --git a/pkg/dds/lib/src/stream_manager.dart b/pkg/dds/lib/src/stream_manager.dart
index 217471f..d648d50 100644
--- a/pkg/dds/lib/src/stream_manager.dart
+++ b/pkg/dds/lib/src/stream_manager.dart
@@ -97,6 +97,11 @@
         if (isolateManagerStreams.contains(streamId)) {
           dds.isolateManager.handleIsolateEvent(parameters);
         }
+        // Keep a history of log messages to send to clients when they first
+        // subscribe to the Logging stream.
+        if (streamId == kLoggingStream) {
+          dds.loggingRepository.add(parameters.asMap);
+        }
         streamNotify(streamId, parameters.value);
       },
     );
@@ -125,6 +130,9 @@
     }
     if (client != null) {
       streamListeners[stream].add(client);
+      if (stream == kLoggingStream) {
+        dds.loggingRepository.sendHistoricalLogs(client);
+      }
     }
   }
 
@@ -181,6 +189,7 @@
 
   static const kDebugStream = 'Debug';
   static const kIsolateStream = 'Isolate';
+  static const kLoggingStream = 'Logging';
 
   // Never cancel the Debug or Isolate stream as `_IsolateManager` requires
   // them for isolate state notifications.
@@ -189,9 +198,16 @@
     kIsolateStream,
   };
 
+  // Never cancel the Logging stream as `_LoggingRepository` requires it to
+  // keep a log history.
+  static const loggingRepositoryStreams = <String>{
+    kLoggingStream,
+  };
+
   // The set of streams that DDS requires to function.
   static final ddsCoreStreams = <String>{
     ...isolateManagerStreams,
+    ...loggingRepositoryStreams,
   };
 
   final _DartDevelopmentService dds;
diff --git a/pkg/dds/pubspec.yaml b/pkg/dds/pubspec.yaml
index 9dbb70e..3df2581 100644
--- a/pkg/dds/pubspec.yaml
+++ b/pkg/dds/pubspec.yaml
@@ -3,7 +3,7 @@
   A library used to spawn the Dart Developer Service, used to communicate with
   a Dart VM Service instance.
 
-version: 0.1.0-dev
+version: 1.0.0
 
 homepage: https://github.com/dart-lang/sdk/tree/master/pkg/dds
 
diff --git a/pkg/dev_compiler/test/modular_suite.dart b/pkg/dev_compiler/test/modular_suite.dart
index 573238d..033d682 100644
--- a/pkg/dev_compiler/test/modular_suite.dart
+++ b/pkg/dev_compiler/test/modular_suite.dart
@@ -75,7 +75,12 @@
     List<String> extraArgs;
     if (module.isSdk) {
       sources = ['dart:core'];
-      extraArgs = ['--libraries-file', '$rootScheme:///sdk/lib/libraries.json'];
+      extraArgs = [
+        '--libraries-file',
+        '$rootScheme:///sdk_nnbd/lib/libraries.json',
+        '--enable-experiment',
+        'non-nullable',
+      ];
       assert(transitiveDependencies.isEmpty);
     } else {
       sources = module.sources.map(sourceToImportUri).toList();
@@ -149,7 +154,13 @@
     List<String> extraArgs;
     if (module.isSdk) {
       sources = ['dart:core'];
-      extraArgs = ['--compile-sdk'];
+      extraArgs = [
+        '--compile-sdk',
+        '--libraries-file',
+        '$rootScheme:///sdk_nnbd/lib/libraries.json',
+        '--enable-experiment',
+        'non-nullable',
+      ];
       assert(transitiveDependencies.isEmpty);
     } else {
       var sdkModule = module.dependencies.firstWhere((m) => m.isSdk);
@@ -229,6 +240,8 @@
     var runjs = '''
     import { dart, _isolate_helper } from 'dart_sdk.js';
     import { main } from 'main.js';
+    // Run with weak null safety.
+    dart.nullSafety(false);
     _isolate_helper.startRootIsolate(() => {}, []);
     main.main();
     ''';
diff --git a/pkg/dev_compiler/test/sourcemap/common.dart b/pkg/dev_compiler/test/sourcemap/common.dart
index 3abc7ec..d28dc9e 100644
--- a/pkg/dev_compiler/test/sourcemap/common.dart
+++ b/pkg/dev_compiler/test/sourcemap/common.dart
@@ -14,6 +14,7 @@
 class Data {
   Uri uri;
   Directory outDir;
+  String testFileName;
   AnnotatedCode code;
   List<String> d8Output;
 }
@@ -75,8 +76,8 @@
   @override
   Future<Result<Data>> run(Data data, ChainContext context) async {
     var outWrapperPath = p.join(data.outDir.path, 'wrapper.js');
-    var runResult =
-        runD8AndStep(data.outDir.path, data.code, ['--module', outWrapperPath]);
+    var runResult = runD8AndStep(data.outDir.path, data.testFileName, data.code,
+        ['--module', outWrapperPath]);
     data.d8Output = (runResult.stdout as String).split('\n');
     return pass(data);
   }
diff --git a/pkg/dev_compiler/test/sourcemap/ddc_common.dart b/pkg/dev_compiler/test/sourcemap/ddc_common.dart
index 7ea70ee..37b78f7 100644
--- a/pkg/dev_compiler/test/sourcemap/ddc_common.dart
+++ b/pkg/dev_compiler/test/sourcemap/ddc_common.dart
@@ -40,8 +40,9 @@
     data.outDir = await Directory.systemTemp.createTemp('ddc_step_test');
     data.code = AnnotatedCode.fromText(
         File(inputFile).readAsStringSync(), commentStart, commentEnd);
+    data.testFileName = 'test.dart';
     var outDirUri = data.outDir.uri;
-    var testFile = outDirUri.resolve('test.dart');
+    var testFile = outDirUri.resolve(data.testFileName);
     File.fromUri(testFile).writeAsStringSync(data.code.sourceCode);
     var outputFilename = 'js.js';
     var outputFile = outDirUri.resolve(outputFilename);
diff --git a/pkg/dev_compiler/tool/dart2js_nnbd_sdk_error_golden.txt b/pkg/dev_compiler/tool/dart2js_nnbd_sdk_error_golden.txt
index 51310b9..1140c53 100644
--- a/pkg/dev_compiler/tool/dart2js_nnbd_sdk_error_golden.txt
+++ b/pkg/dev_compiler/tool/dart2js_nnbd_sdk_error_golden.txt
@@ -8,4 +8,3 @@
 ERROR|STATIC_TYPE_WARNING|UNDEFINED_OPERATOR|lib/_internal/js_runtime/lib/interceptors.dart|1656|17|1|The operator '&' isn't defined for the type 'JSInt'.
 ERROR|STATIC_TYPE_WARNING|UNDEFINED_OPERATOR|lib/_internal/js_runtime/lib/interceptors.dart|1661|18|1|The operator '&' isn't defined for the type 'JSInt'.
 ERROR|STATIC_TYPE_WARNING|UNDEFINED_OPERATOR|lib/_internal/js_runtime/lib/interceptors.dart|1661|44|1|The operator '&' isn't defined for the type 'JSInt'.
-ERROR|STATIC_WARNING|ARGUMENT_TYPE_NOT_ASSIGNABLE|lib/io/io.dart|6334|51|12|The argument type 'Object' can't be assigned to the parameter type 'String'.
diff --git a/pkg/dev_compiler/tool/dartdevc_nnbd_sdk_error_golden.txt b/pkg/dev_compiler/tool/dartdevc_nnbd_sdk_error_golden.txt
index 1f1e98a..6004fc5 100644
--- a/pkg/dev_compiler/tool/dartdevc_nnbd_sdk_error_golden.txt
+++ b/pkg/dev_compiler/tool/dartdevc_nnbd_sdk_error_golden.txt
@@ -2,7 +2,6 @@
 ERROR|COMPILE_TIME_ERROR|CONST_CONSTRUCTOR_THROWS_EXCEPTION|lib/core/core.dart|7908|5|97|Const constructors can't throw exceptions.
 ERROR|COMPILE_TIME_ERROR|CONST_CONSTRUCTOR_THROWS_EXCEPTION|lib/core/core.dart|940|5|95|Const constructors can't throw exceptions.
 ERROR|COMPILE_TIME_ERROR|CONST_CONSTRUCTOR_THROWS_EXCEPTION|lib/core/core.dart|973|5|94|Const constructors can't throw exceptions.
-ERROR|STATIC_WARNING|ARGUMENT_TYPE_NOT_ASSIGNABLE|lib/io/io.dart|6334|51|12|The argument type 'Object' can't be assigned to the parameter type 'String'.
 ERROR|SYNTACTIC_ERROR|CONST_FACTORY|lib/core/core.dart|3717|3|5|Only redirecting factory constructors can be declared to be 'const'.
 ERROR|SYNTACTIC_ERROR|CONST_FACTORY|lib/core/core.dart|7906|3|5|Only redirecting factory constructors can be declared to be 'const'.
 ERROR|SYNTACTIC_ERROR|CONST_FACTORY|lib/core/core.dart|938|3|5|Only redirecting factory constructors can be declared to be 'const'.
diff --git a/pkg/expect/lib/expect.dart b/pkg/expect/lib/expect.dart
index 4a177ab..eba48ff 100644
--- a/pkg/expect/lib/expect.dart
+++ b/pkg/expect/lib/expect.dart
@@ -10,6 +10,12 @@
 
 import 'package:meta/meta.dart';
 
+/// Whether the program is running with weak null safety checking.
+bool get isWeakMode => const <Null>[] is List<Object>;
+
+/// Whether the program is running with strong null safety checking.
+bool get isStrongMode => !isWeakMode;
+
 /**
  * Expect is used for tests that do not want to make use of the
  * Dart unit test library - for example, the core language tests.
diff --git a/pkg/front_end/lib/src/fasta/builder/class_builder.dart b/pkg/front_end/lib/src/fasta/builder/class_builder.dart
index fd82ceb..bde7581 100644
--- a/pkg/front_end/lib/src/fasta/builder/class_builder.dart
+++ b/pkg/front_end/lib/src/fasta/builder/class_builder.dart
@@ -646,7 +646,8 @@
     // Moreover, it checks that `FutureOr` and `void` are not among the
     // supertypes.
 
-    void fail(NamedTypeBuilder target, Message message) {
+    void fail(NamedTypeBuilder target, Message message,
+        TypeAliasBuilder aliasBuilder) {
       int nameOffset = target.nameOffset;
       int nameLength = target.nameLength;
       // TODO(eernst): nameOffset not fully implemented; use backup.
@@ -654,7 +655,14 @@
         nameOffset = this.charOffset;
         nameLength = noLength;
       }
-      addProblem(message, nameOffset, nameLength);
+      if (aliasBuilder != null) {
+        addProblem(message, nameOffset, nameLength, context: [
+          messageTypedefCause.withLocation(
+              aliasBuilder.fileUri, aliasBuilder.charOffset, noLength),
+        ]);
+      } else {
+        addProblem(message, nameOffset, nameLength);
+      }
     }
 
     // Extract and check superclass (if it exists).
@@ -662,19 +670,20 @@
     TypeBuilder superClassType = supertypeBuilder;
     if (superClassType is NamedTypeBuilder) {
       TypeDeclarationBuilder decl = superClassType.declaration;
+      TypeAliasBuilder aliasBuilder; // Non-null if a type alias is use.
       if (decl is TypeAliasBuilder) {
-        TypeAliasBuilder aliasBuilder = decl;
+        aliasBuilder = decl;
         decl = aliasBuilder.unaliasDeclaration(superClassType.arguments);
       }
       // TODO(eernst): Should gather 'restricted supertype' checks in one place,
       // e.g., dynamic/int/String/Null and more are checked elsewhere.
       if (decl is VoidTypeBuilder) {
-        fail(superClassType, messageExtendsVoid);
+        fail(superClassType, messageExtendsVoid, aliasBuilder);
       } else if (decl is NeverTypeBuilder) {
-        fail(superClassType, messageExtendsNever);
+        fail(superClassType, messageExtendsNever, aliasBuilder);
       } else if (decl is ClassBuilder) {
         if (decl.cls == coreTypes.futureOrClass) {
-          fail(superClassType, messageExtendsFutureOr);
+          fail(superClassType, messageExtendsFutureOr, aliasBuilder);
         }
         superClass = decl;
       }
@@ -689,9 +698,14 @@
       if (type is NamedTypeBuilder) {
         int charOffset = -1; // TODO(ahe): Get offset from type.
         TypeDeclarationBuilder typeDeclaration = type.declaration;
-        TypeDeclarationBuilder decl = typeDeclaration is TypeAliasBuilder
-            ? typeDeclaration.unaliasDeclaration(type.arguments)
-            : typeDeclaration;
+        TypeDeclarationBuilder decl;
+        TypeAliasBuilder aliasBuilder; // Non-null if a type alias is used.
+        if (typeDeclaration is TypeAliasBuilder) {
+          aliasBuilder = typeDeclaration;
+          decl = aliasBuilder.unaliasDeclaration(type.arguments);
+        } else {
+          decl = typeDeclaration;
+        }
         if (decl is ClassBuilder) {
           ClassBuilder interface = decl;
           if (superClass == interface) {
@@ -707,7 +721,7 @@
             problemsOffsets ??= new Map<ClassBuilder, int>();
             problemsOffsets[interface] ??= charOffset;
           } else if (interface.cls == coreTypes.futureOrClass) {
-            fail(type, messageImplementsFutureOr);
+            fail(type, messageImplementsFutureOr, aliasBuilder);
           } else {
             implemented.add(interface);
           }
@@ -715,9 +729,9 @@
         if (decl != superClass) {
           // TODO(eernst): Have all 'restricted supertype' checks in one place.
           if (decl is VoidTypeBuilder) {
-            fail(type, messageImplementsVoid);
+            fail(type, messageImplementsVoid, aliasBuilder);
           } else if (decl is NeverTypeBuilder) {
-            fail(type, messageImplementsNever);
+            fail(type, messageImplementsNever, aliasBuilder);
           }
         }
       }
diff --git a/pkg/front_end/lib/src/fasta/builder/named_type_builder.dart b/pkg/front_end/lib/src/fasta/builder/named_type_builder.dart
index 55531dc..0ab1b7f 100644
--- a/pkg/front_end/lib/src/fasta/builder/named_type_builder.dart
+++ b/pkg/front_end/lib/src/fasta/builder/named_type_builder.dart
@@ -26,6 +26,7 @@
         Template,
         messageNotATypeContext,
         messageTypeVariableInStaticContext,
+        messageTypedefCause,
         noLength,
         templateExtendingRestricted,
         templateMissingExplicitTypeArguments,
@@ -221,17 +222,29 @@
         context: context);
   }
 
-  Supertype handleInvalidSupertype(
-      LibraryBuilder library, int charOffset, Uri fileUri) {
+  Supertype handleInvalidSupertype(LibraryBuilder library, int charOffset,
+      Uri fileUri, TypeAliasBuilder aliasBuilder) {
     Template<Message Function(String name)> template =
         declaration.isTypeVariable
             ? templateSupertypeIsTypeVariable
             : templateSupertypeIsIllegal;
-    library.addProblem(
-        template.withArguments(flattenName(name, charOffset, fileUri)),
-        charOffset,
-        noLength,
-        fileUri);
+    if (aliasBuilder != null) {
+      library.addProblem(
+          template.withArguments(flattenName(name, charOffset, fileUri)),
+          charOffset,
+          noLength,
+          fileUri,
+          context: [
+            messageTypedefCause.withLocation(
+                aliasBuilder.fileUri, aliasBuilder.charOffset, noLength),
+          ]);
+    } else {
+      library.addProblem(
+          template.withArguments(flattenName(name, charOffset, fileUri)),
+          charOffset,
+          noLength,
+          fileUri);
+    }
     return null;
   }
 
@@ -260,6 +273,7 @@
   Supertype buildSupertype(
       LibraryBuilder library, int charOffset, Uri fileUri) {
     TypeDeclarationBuilder declaration = this.declaration;
+    TypeAliasBuilder aliasBuilder; // Non-null if a type alias is used.
     if (declaration is ClassBuilder) {
       if (declaration.isNullClass && !library.mayImplementRestrictedTypes) {
         library.addProblem(
@@ -270,6 +284,7 @@
       }
       return declaration.buildSupertype(library, arguments);
     } else if (declaration is TypeAliasBuilder) {
+      aliasBuilder = declaration;
       DartType type =
           declaration.buildType(library, library.nonNullableBuilder, arguments);
       if (type is InterfaceType) {
@@ -284,15 +299,17 @@
           severity: Severity.error);
       return null;
     }
-    return handleInvalidSupertype(library, charOffset, fileUri);
+    return handleInvalidSupertype(library, charOffset, fileUri, aliasBuilder);
   }
 
   Supertype buildMixedInType(
       LibraryBuilder library, int charOffset, Uri fileUri) {
     TypeDeclarationBuilder declaration = this.declaration;
+    TypeAliasBuilder aliasBuilder; // Non-null if a type alias is used.
     if (declaration is ClassBuilder) {
       return declaration.buildMixedInType(library, arguments);
     } else if (declaration is TypeAliasBuilder) {
+      aliasBuilder = declaration;
       DartType type =
           declaration.buildType(library, library.nonNullableBuilder, arguments);
       if (type is InterfaceType) {
@@ -307,7 +324,7 @@
           severity: Severity.error);
       return null;
     }
-    return handleInvalidSupertype(library, charOffset, fileUri);
+    return handleInvalidSupertype(library, charOffset, fileUri, aliasBuilder);
   }
 
   TypeBuilder subst(Map<TypeVariableBuilder, TypeBuilder> substitution) {
diff --git a/pkg/front_end/lib/src/fasta/kernel/inference_visitor.dart b/pkg/front_end/lib/src/fasta/kernel/inference_visitor.dart
index b174679..f7ff3fe 100644
--- a/pkg/front_end/lib/src/fasta/kernel/inference_visitor.dart
+++ b/pkg/front_end/lib/src/fasta/kernel/inference_visitor.dart
@@ -3529,7 +3529,6 @@
       case ObjectAccessTargetKind.instanceMember:
       case ObjectAccessTargetKind.nullableInstanceMember:
       case ObjectAccessTargetKind.invalid:
-      case ObjectAccessTargetKind.unresolved:
       case ObjectAccessTargetKind.callFunction:
       case ObjectAccessTargetKind.nullableCallFunction:
       case ObjectAccessTargetKind.dynamic:
@@ -3626,7 +3625,6 @@
       case ObjectAccessTargetKind.instanceMember:
       case ObjectAccessTargetKind.nullableInstanceMember:
       case ObjectAccessTargetKind.invalid:
-      case ObjectAccessTargetKind.unresolved:
       case ObjectAccessTargetKind.callFunction:
       case ObjectAccessTargetKind.nullableCallFunction:
       case ObjectAccessTargetKind.dynamic:
@@ -3718,7 +3716,6 @@
       case ObjectAccessTargetKind.instanceMember:
       case ObjectAccessTargetKind.nullableInstanceMember:
       case ObjectAccessTargetKind.invalid:
-      case ObjectAccessTargetKind.unresolved:
       case ObjectAccessTargetKind.callFunction:
       case ObjectAccessTargetKind.nullableCallFunction:
       case ObjectAccessTargetKind.dynamic:
@@ -3801,7 +3798,6 @@
       case ObjectAccessTargetKind.instanceMember:
       case ObjectAccessTargetKind.nullableInstanceMember:
       case ObjectAccessTargetKind.invalid:
-      case ObjectAccessTargetKind.unresolved:
       case ObjectAccessTargetKind.callFunction:
       case ObjectAccessTargetKind.nullableCallFunction:
       case ObjectAccessTargetKind.dynamic:
@@ -3893,7 +3889,6 @@
       case ObjectAccessTargetKind.instanceMember:
       case ObjectAccessTargetKind.nullableInstanceMember:
       case ObjectAccessTargetKind.invalid:
-      case ObjectAccessTargetKind.unresolved:
       case ObjectAccessTargetKind.callFunction:
       case ObjectAccessTargetKind.nullableCallFunction:
       case ObjectAccessTargetKind.dynamic:
@@ -4019,7 +4014,6 @@
       case ObjectAccessTargetKind.instanceMember:
       case ObjectAccessTargetKind.nullableInstanceMember:
       case ObjectAccessTargetKind.invalid:
-      case ObjectAccessTargetKind.unresolved:
       case ObjectAccessTargetKind.callFunction:
       case ObjectAccessTargetKind.nullableCallFunction:
       case ObjectAccessTargetKind.dynamic:
@@ -5089,7 +5083,7 @@
         node.interfaceTarget != null
             ? new ObjectAccessTarget.interfaceMember(node.interfaceTarget,
                 isPotentiallyNullable: false)
-            : const ObjectAccessTarget.unresolved());
+            : const ObjectAccessTarget.missing());
   }
 
   @override
@@ -5108,7 +5102,7 @@
         node.interfaceTarget != null
             ? new ObjectAccessTarget.interfaceMember(node.interfaceTarget,
                 isPotentiallyNullable: false)
-            : const ObjectAccessTarget.unresolved());
+            : const ObjectAccessTarget.missing());
   }
 
   @override
diff --git a/pkg/front_end/lib/src/fasta/source/source_class_builder.dart b/pkg/front_end/lib/src/fasta/source/source_class_builder.dart
index 75eacd7..705327b 100644
--- a/pkg/front_end/lib/src/fasta/source/source_class_builder.dart
+++ b/pkg/front_end/lib/src/fasta/source/source_class_builder.dart
@@ -616,9 +616,14 @@
     return count;
   }
 
-  List<TypeDeclarationBuilder> computeDirectSupertypes(
+  /// Return a map whose keys are the supertypes of this [SourceClassBuilder]
+  /// after expansion of type aliases, if any. For each supertype key, the
+  /// corresponding value is the type alias which was unaliased in order to
+  /// find the supertype, or null if the supertype was not aliased.
+  Map<TypeDeclarationBuilder, TypeAliasBuilder> computeDirectSupertypes(
       ClassBuilder objectClass) {
-    final List<TypeDeclarationBuilder> result = <TypeDeclarationBuilder>[];
+    final Map<TypeDeclarationBuilder, TypeAliasBuilder> result =
+        <TypeDeclarationBuilder, TypeAliasBuilder>{};
     final TypeBuilder supertype = this.supertypeBuilder;
     if (supertype != null) {
       TypeDeclarationBuilder declarationBuilder = supertype.declaration;
@@ -627,10 +632,12 @@
         NamedTypeBuilder namedBuilder = supertype;
         declarationBuilder =
             aliasBuilder.unaliasDeclaration(namedBuilder.arguments);
+        result[declarationBuilder] = aliasBuilder;
+      } else {
+        result[declarationBuilder] = null;
       }
-      result.add(declarationBuilder);
     } else if (objectClass != this) {
-      result.add(objectClass);
+      result[objectClass] = null;
     }
     final List<TypeBuilder> interfaces = this.interfaceBuilders;
     if (interfaces != null) {
@@ -642,8 +649,10 @@
           NamedTypeBuilder namedBuilder = interface;
           declarationBuilder =
               aliasBuilder.unaliasDeclaration(namedBuilder.arguments);
+          result[declarationBuilder] = aliasBuilder;
+        } else {
+          result[declarationBuilder] = null;
         }
-        result.add(declarationBuilder);
       }
     }
     final TypeBuilder mixedInTypeBuilder = this.mixedInTypeBuilder;
@@ -655,8 +664,10 @@
         NamedTypeBuilder namedBuilder = mixedInTypeBuilder;
         declarationBuilder =
             aliasBuilder.unaliasDeclaration(namedBuilder.arguments);
+        result[declarationBuilder] = aliasBuilder;
+      } else {
+        result[declarationBuilder] = null;
       }
-      result.add(declarationBuilder);
     }
     return result;
   }
diff --git a/pkg/front_end/lib/src/fasta/source/source_library_builder.dart b/pkg/front_end/lib/src/fasta/source/source_library_builder.dart
index 6b0594b..7d76be2 100644
--- a/pkg/front_end/lib/src/fasta/source/source_library_builder.dart
+++ b/pkg/front_end/lib/src/fasta/source/source_library_builder.dart
@@ -579,7 +579,8 @@
       LibraryBuilder coreLibrary = loader.read(
           resolve(this.importUri,
               new Uri(scheme: "dart", path: "core").toString(), -1),
-          -1);
+          -1,
+          accessor: loader.first);
       imported = coreLibrary
           .loader.builders[new Uri(scheme: 'dart', path: dottedName)];
     }
diff --git a/pkg/front_end/lib/src/fasta/source/source_loader.dart b/pkg/front_end/lib/src/fasta/source/source_loader.dart
index 92f6450..0401c0b 100644
--- a/pkg/front_end/lib/src/fasta/source/source_loader.dart
+++ b/pkg/front_end/lib/src/fasta/source/source_loader.dart
@@ -89,6 +89,8 @@
         messageObjectImplements,
         messageObjectMixesIn,
         messagePartOrphan,
+        messageTypedefCause,
+        messageTypedefUnaliasedTypeCause,
         noLength,
         templateAmbiguousSupertypes,
         templateCantReadFile,
@@ -676,8 +678,10 @@
       workList = <SourceClassBuilder>[];
       for (int i = 0; i < previousWorkList.length; i++) {
         SourceClassBuilder cls = previousWorkList[i];
-        List<TypeDeclarationBuilder> directSupertypes =
+        Map<TypeDeclarationBuilder, TypeAliasBuilder> directSupertypeMap =
             cls.computeDirectSupertypes(objectClass);
+        List<TypeDeclarationBuilder> directSupertypes =
+            directSupertypeMap.keys.toList();
         bool allSupertypesProcessed = true;
         for (int i = 0; i < directSupertypes.length; i++) {
           Builder supertype = directSupertypes[i];
@@ -694,7 +698,7 @@
         }
         if (allSupertypesProcessed) {
           topologicallySortedClasses.add(cls);
-          checkClassSupertypes(cls, directSupertypes, blackListedClasses);
+          checkClassSupertypes(cls, directSupertypeMap, blackListedClasses);
         } else {
           workList.add(cls);
         }
@@ -743,9 +747,11 @@
 
   void checkClassSupertypes(
       SourceClassBuilder cls,
-      List<TypeDeclarationBuilder> directSupertypes,
+      Map<TypeDeclarationBuilder, TypeAliasBuilder> directSupertypeMap,
       Set<ClassBuilder> blackListedClasses) {
     // Check that the direct supertypes aren't black-listed or enums.
+    List<TypeDeclarationBuilder> directSupertypes =
+        directSupertypeMap.keys.toList();
     for (int i = 0; i < directSupertypes.length; i++) {
       TypeDeclarationBuilder supertype = directSupertypes[i];
       if (supertype is EnumBuilder) {
@@ -753,11 +759,24 @@
             cls.charOffset, noLength);
       } else if (!cls.library.mayImplementRestrictedTypes &&
           blackListedClasses.contains(supertype)) {
-        cls.addProblem(
-            templateExtendingRestricted
-                .withArguments(supertype.fullNameForErrors),
-            cls.charOffset,
-            noLength);
+        TypeAliasBuilder aliasBuilder = directSupertypeMap[supertype];
+        if (aliasBuilder != null) {
+          cls.addProblem(
+              templateExtendingRestricted
+                  .withArguments(supertype.fullNameForErrors),
+              cls.charOffset,
+              noLength,
+              context: [
+                messageTypedefCause.withLocation(
+                    aliasBuilder.fileUri, aliasBuilder.charOffset, noLength),
+              ]);
+        } else {
+          cls.addProblem(
+              templateExtendingRestricted
+                  .withArguments(supertype.fullNameForErrors),
+              cls.charOffset,
+              noLength);
+        }
       }
     }
 
@@ -771,6 +790,29 @@
           TypeAliasBuilder aliasBuilder = builder;
           NamedTypeBuilder namedBuilder = mixedInTypeBuilder;
           builder = aliasBuilder.unaliasDeclaration(namedBuilder.arguments);
+          if (builder is! ClassBuilder) {
+            cls.addProblem(
+                templateIllegalMixin.withArguments(builder.fullNameForErrors),
+                cls.charOffset,
+                noLength,
+                context: [
+                  messageTypedefCause.withLocation(
+                      aliasBuilder.fileUri, aliasBuilder.charOffset, noLength),
+                ]);
+            return;
+          } else if (!cls.library.mayImplementRestrictedTypes &&
+              blackListedClasses.contains(builder)) {
+            cls.addProblem(
+                templateExtendingRestricted
+                    .withArguments(mixedInTypeBuilder.fullNameForErrors),
+                cls.charOffset,
+                noLength,
+                context: [
+                  messageTypedefUnaliasedTypeCause.withLocation(
+                      builder.fileUri, builder.charOffset, noLength),
+                ]);
+            return;
+          }
         }
         if (builder is ClassBuilder) {
           isClassBuilder = true;
diff --git a/pkg/front_end/lib/src/fasta/type_inference/type_inferrer.dart b/pkg/front_end/lib/src/fasta/type_inference/type_inferrer.dart
index c28a357..05ee3f4 100644
--- a/pkg/front_end/lib/src/fasta/type_inference/type_inferrer.dart
+++ b/pkg/front_end/lib/src/fasta/type_inference/type_inferrer.dart
@@ -1273,9 +1273,7 @@
           new InstrumentationValueForMember(target.member));
     }
 
-    if (target.isUnresolved &&
-        receiverBound is! DynamicType &&
-        includeExtensionMethods) {
+    if (target.isMissing && includeExtensionMethods) {
       if (isReceiverTypePotentiallyNullable) {
         // When the receiver type is potentially nullable we would have found
         // the extension member above, if available. Therefore we know that we
@@ -1342,7 +1340,6 @@
         return receiverType;
       case ObjectAccessTargetKind.invalid:
         return const InvalidType();
-      case ObjectAccessTargetKind.unresolved:
       case ObjectAccessTargetKind.dynamic:
       case ObjectAccessTargetKind.missing:
       case ObjectAccessTargetKind.ambiguous:
@@ -1450,7 +1447,6 @@
       case ObjectAccessTargetKind.callFunction:
       case ObjectAccessTargetKind.nullableCallFunction:
         return _getFunctionType(receiverType);
-      case ObjectAccessTargetKind.unresolved:
       case ObjectAccessTargetKind.dynamic:
       case ObjectAccessTargetKind.never:
       case ObjectAccessTargetKind.invalid:
@@ -1527,7 +1523,6 @@
         return const InvalidType();
       case ObjectAccessTargetKind.callFunction:
       case ObjectAccessTargetKind.nullableCallFunction:
-      case ObjectAccessTargetKind.unresolved:
       case ObjectAccessTargetKind.dynamic:
       case ObjectAccessTargetKind.missing:
       case ObjectAccessTargetKind.ambiguous:
@@ -1566,7 +1561,6 @@
         return const InvalidType();
       case ObjectAccessTargetKind.callFunction:
       case ObjectAccessTargetKind.nullableCallFunction:
-      case ObjectAccessTargetKind.unresolved:
       case ObjectAccessTargetKind.dynamic:
       case ObjectAccessTargetKind.never:
       case ObjectAccessTargetKind.missing:
@@ -1630,7 +1624,6 @@
         return const InvalidType();
       case ObjectAccessTargetKind.callFunction:
       case ObjectAccessTargetKind.nullableCallFunction:
-      case ObjectAccessTargetKind.unresolved:
       case ObjectAccessTargetKind.dynamic:
       case ObjectAccessTargetKind.never:
       case ObjectAccessTargetKind.missing:
@@ -1691,7 +1684,6 @@
         return const InvalidType();
       case ObjectAccessTargetKind.callFunction:
       case ObjectAccessTargetKind.nullableCallFunction:
-      case ObjectAccessTargetKind.unresolved:
       case ObjectAccessTargetKind.dynamic:
       case ObjectAccessTargetKind.never:
       case ObjectAccessTargetKind.missing:
@@ -1702,6 +1694,7 @@
   }
 
   FunctionType _getFunctionType(DartType calleeType) {
+    calleeType = resolveTypeParameter(calleeType);
     if (calleeType is FunctionType) {
       return calleeType;
     }
@@ -1709,6 +1702,7 @@
   }
 
   FunctionType getFunctionTypeForImplicitCall(DartType calleeType) {
+    calleeType = resolveTypeParameter(calleeType);
     if (calleeType is FunctionType) {
       return calleeType;
     } else if (calleeType is InterfaceType) {
@@ -1746,7 +1740,6 @@
 
   DartType getSetterType(ObjectAccessTarget target, DartType receiverType) {
     switch (target.kind) {
-      case ObjectAccessTargetKind.unresolved:
       case ObjectAccessTargetKind.dynamic:
       case ObjectAccessTargetKind.never:
       case ObjectAccessTargetKind.missing:
@@ -2854,13 +2847,13 @@
       FunctionNode signature = method.function;
       if (arguments.positional.length < signature.requiredParameterCount ||
           arguments.positional.length > signature.positionalParameters.length) {
-        target = const ObjectAccessTarget.unresolved();
+        target = const ObjectAccessTarget.dynamic();
         method = null;
       }
       for (NamedExpression argument in arguments.named) {
         if (!signature.namedParameters
             .any((declaration) => declaration.name == argument.name)) {
-          target = const ObjectAccessTarget.unresolved();
+          target = const ObjectAccessTarget.dynamic();
           method = null;
         }
       }
@@ -2954,13 +2947,13 @@
       FunctionNode signature = getter.function;
       if (arguments.positional.length < signature.requiredParameterCount ||
           arguments.positional.length > signature.positionalParameters.length) {
-        target = const ObjectAccessTarget.unresolved();
+        target = const ObjectAccessTarget.dynamic();
         getter = null;
       }
       for (NamedExpression argument in arguments.named) {
         if (!signature.namedParameters
             .any((declaration) => declaration.name == argument.name)) {
-          target = const ObjectAccessTarget.unresolved();
+          target = const ObjectAccessTarget.dynamic();
           getter = null;
         }
       }
@@ -3276,7 +3269,6 @@
             implicitInvocationPropertyName: implicitInvocationPropertyName);
       case ObjectAccessTargetKind.dynamic:
       case ObjectAccessTargetKind.invalid:
-      case ObjectAccessTargetKind.unresolved:
         return _inferDynamicInvocation(fileOffset, nullAwareGuards, receiver,
             name, arguments, typeContext, hoistedExpressions,
             isImplicitCall: isExpressionInvocation || isImplicitCall);
@@ -3346,6 +3338,7 @@
       SuperMethodInvocation expression,
       DartType typeContext,
       ObjectAccessTarget target) {
+    assert(target.isInstanceMember || target.isMissing);
     int fileOffset = expression.fileOffset;
     Name methodName = expression.name;
     Arguments arguments = expression.arguments;
@@ -3392,6 +3385,7 @@
   /// Performs the core type inference algorithm for super property get.
   ExpressionInferenceResult inferSuperPropertyGet(SuperPropertyGet expression,
       DartType typeContext, ObjectAccessTarget readTarget) {
+    assert(readTarget.isInstanceMember || readTarget.isMissing);
     DartType receiverType = thisType;
     DartType inferredType = getGetterType(readTarget, receiverType);
     if (readTarget.isInstanceMember) {
@@ -4261,9 +4255,6 @@
   /// An access to multiple extension members, none of which are most specific.
   /// This is an erroneous case and a compile-time error is reported.
   ambiguous,
-
-  // TODO(johnniwinther): Remove this.
-  unresolved,
 }
 
 /// Result for performing an access on an object, like `o.foo`, `o.foo()` and
@@ -4304,10 +4295,6 @@
   const ObjectAccessTarget.nullableCallFunction()
       : this.internal(ObjectAccessTargetKind.nullableCallFunction, null);
 
-  /// Creates an access with no known target.
-  const ObjectAccessTarget.unresolved()
-      : this.internal(ObjectAccessTargetKind.unresolved, null);
-
   /// Creates an access on a dynamic receiver type with no known target.
   const ObjectAccessTarget.dynamic()
       : this.internal(ObjectAccessTargetKind.dynamic, null);
@@ -4342,13 +4329,6 @@
   bool get isNullableCallFunction =>
       kind == ObjectAccessTargetKind.nullableCallFunction;
 
-  /// Returns `true` if this is an access without a known target.
-  bool get isUnresolved =>
-      kind == ObjectAccessTargetKind.unresolved ||
-      isDynamic ||
-      isInvalid ||
-      isMissing;
-
   /// Returns `true` if this is an access on a dynamic receiver type.
   bool get isDynamic => kind == ObjectAccessTargetKind.dynamic;
 
diff --git a/pkg/front_end/messages.yaml b/pkg/front_end/messages.yaml
index bf8b9c1..9605edd 100644
--- a/pkg/front_end/messages.yaml
+++ b/pkg/front_end/messages.yaml
@@ -2230,6 +2230,14 @@
   configuration: nnbd-strong
   script: typedef F = void Function()?;
 
+TypedefUnaliasedTypeCause:
+  template: "This is the type denoted by the type alias."
+  severity: CONTEXT
+
+TypedefCause:
+  template: "The issue arises via this type alias."
+  severity: CONTEXT
+
 LibraryDirectiveNotFirst:
   index: 37
   template: "The library directive must appear before all other directives."
diff --git a/pkg/front_end/parser_testcases/error_recovery/await_not_in_async.dart.intertwined.expect b/pkg/front_end/parser_testcases/error_recovery/await_not_in_async.dart.intertwined.expect
index afe1750..56c7a0d 100644
--- a/pkg/front_end/parser_testcases/error_recovery/await_not_in_async.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/error_recovery/await_not_in_async.dart.intertwined.expect
@@ -8,7 +8,7 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl()
       listener: beginTopLevelMember(Future)
-      parseTopLevelMethod(, null, , Instance of 'ComplexTypeInfo', null, f)
+      parseTopLevelMethod(, null, , Instance of 'ComplexTypeInfo', null, f, false)
         listener: beginTopLevelMethod(, null)
         ensureIdentifier(, typeReference)
           listener: handleIdentifier(Future, typeReference)
@@ -16,7 +16,7 @@
         listener: handleVoidKeyword(void)
         listener: endTypeArguments(1, <, >)
         listener: handleType(Future, null)
-        ensureIdentifier(>, topLevelFunctionDeclaration)
+        ensureIdentifierPotentiallyRecovered(>, topLevelFunctionDeclaration, false)
           listener: handleIdentifier(f, topLevelFunctionDeclaration)
         parseMethodTypeVar(f)
           listener: handleNoTypeVariables(()
@@ -67,10 +67,10 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(void)
-      parseTopLevelMethod(;, null, ;, Instance of 'VoidType', null, g)
+      parseTopLevelMethod(;, null, ;, Instance of 'VoidType', null, g, false)
         listener: beginTopLevelMethod(;, null)
         listener: handleVoidKeyword(void)
-        ensureIdentifier(void, topLevelFunctionDeclaration)
+        ensureIdentifierPotentiallyRecovered(void, topLevelFunctionDeclaration, false)
           listener: handleIdentifier(g, topLevelFunctionDeclaration)
         parseMethodTypeVar(g)
           listener: handleNoTypeVariables(()
diff --git a/pkg/front_end/parser_testcases/error_recovery/bracket_mismatch_00.dart b/pkg/front_end/parser_testcases/error_recovery/bracket_mismatch_00.dart
new file mode 100644
index 0000000..675eab2a
--- /dev/null
+++ b/pkg/front_end/parser_testcases/error_recovery/bracket_mismatch_00.dart
@@ -0,0 +1,13 @@
+void good() {
+  [
+    ([
+    ])
+  ];
+}
+
+void bad() {
+  [
+    (
+    ])
+  ];
+}
\ No newline at end of file
diff --git a/pkg/front_end/parser_testcases/error_recovery/bracket_mismatch_00.dart.expect b/pkg/front_end/parser_testcases/error_recovery/bracket_mismatch_00.dart.expect
new file mode 100644
index 0000000..2331267
--- /dev/null
+++ b/pkg/front_end/parser_testcases/error_recovery/bracket_mismatch_00.dart.expect
@@ -0,0 +1,56 @@
+Problems reported:
+
+parser/error_recovery/bracket_mismatch_00:11:5: Expected an identifier, but got ']'.
+    ])
+    ^
+
+parser/error_recovery/bracket_mismatch_00:11:5: Expected ')' before this.
+    ])
+    ^
+
+beginCompilationUnit(void)
+  beginMetadataStar(void)
+  endMetadataStar(0)
+  beginTopLevelMember(void)
+    beginTopLevelMethod(, null)
+      handleVoidKeyword(void)
+      handleIdentifier(good, topLevelFunctionDeclaration)
+      handleNoTypeVariables(()
+      beginFormalParameters((, MemberKind.TopLevelMethod)
+      endFormalParameters(0, (, ), MemberKind.TopLevelMethod)
+      handleAsyncModifier(null, null)
+      beginBlockFunctionBody({)
+        handleNoTypeArguments([)
+        handleNoTypeArguments([)
+        handleLiteralList(0, [, null, ])
+        handleParenthesizedExpression(()
+        handleLiteralList(1, [, null, ])
+        handleExpressionStatement(;)
+      endBlockFunctionBody(1, {, })
+    endTopLevelMethod(void, null, })
+  endTopLevelDeclaration(void)
+  beginMetadataStar(void)
+  endMetadataStar(0)
+  beginTopLevelMember(void)
+    beginTopLevelMethod(}, null)
+      handleVoidKeyword(void)
+      handleIdentifier(bad, topLevelFunctionDeclaration)
+      handleNoTypeVariables(()
+      beginFormalParameters((, MemberKind.TopLevelMethod)
+      endFormalParameters(0, (, ), MemberKind.TopLevelMethod)
+      handleAsyncModifier(null, null)
+      beginBlockFunctionBody({)
+        handleNoTypeArguments([)
+        handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got ']'., null, {token: ]}], ], ])
+        handleIdentifier(, expression)
+        handleNoTypeArguments(])
+        handleNoArguments(])
+        handleSend(, ])
+        handleRecoverableError(Message[ExpectedButGot, Expected ')' before this., null, {string: )}], ], ])
+        handleParenthesizedExpression(()
+        handleLiteralList(1, [, null, ])
+        handleExpressionStatement(;)
+      endBlockFunctionBody(1, {, })
+    endTopLevelMethod(void, null, })
+  endTopLevelDeclaration()
+endCompilationUnit(2, )
diff --git a/pkg/front_end/parser_testcases/error_recovery/bracket_mismatch_00.dart.intertwined.expect b/pkg/front_end/parser_testcases/error_recovery/bracket_mismatch_00.dart.intertwined.expect
new file mode 100644
index 0000000..51983b2
--- /dev/null
+++ b/pkg/front_end/parser_testcases/error_recovery/bracket_mismatch_00.dart.intertwined.expect
@@ -0,0 +1,135 @@
+parseUnit(void)
+  skipErrorTokens(void)
+  listener: beginCompilationUnit(void)
+  syntheticPreviousToken(void)
+  parseTopLevelDeclarationImpl(, Instance of 'DirectiveContext')
+    parseMetadataStar()
+      listener: beginMetadataStar(void)
+      listener: endMetadataStar(0)
+    parseTopLevelMemberImpl()
+      listener: beginTopLevelMember(void)
+      parseTopLevelMethod(, null, , Instance of 'VoidType', null, good, false)
+        listener: beginTopLevelMethod(, null)
+        listener: handleVoidKeyword(void)
+        ensureIdentifierPotentiallyRecovered(void, topLevelFunctionDeclaration, false)
+          listener: handleIdentifier(good, topLevelFunctionDeclaration)
+        parseMethodTypeVar(good)
+          listener: handleNoTypeVariables(()
+        parseGetterOrFormalParameters(good, good, false, MemberKind.TopLevelMethod)
+          parseFormalParameters(good, MemberKind.TopLevelMethod)
+            parseFormalParametersRest((, MemberKind.TopLevelMethod)
+              listener: beginFormalParameters((, MemberKind.TopLevelMethod)
+              listener: endFormalParameters(0, (, ), MemberKind.TopLevelMethod)
+        parseAsyncModifierOpt())
+          listener: handleAsyncModifier(null, null)
+          inPlainSync()
+        parseFunctionBody(), false, false)
+          listener: beginBlockFunctionBody({)
+          notEofOrValue(}, [)
+          parseStatement({)
+            parseStatementX({)
+              parseExpressionStatementOrDeclaration({, false)
+                parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+                  looksLikeLocalFunction([)
+                  parseExpressionStatement({)
+                    parseExpression({)
+                      parsePrecedenceExpression({, 1, true)
+                        parseUnaryExpression({, true)
+                          parsePrimary({, expression)
+                            listener: handleNoTypeArguments([)
+                            parseLiteralListSuffix({, null)
+                              parseExpression([)
+                                parsePrecedenceExpression([, 1, true)
+                                  parseUnaryExpression([, true)
+                                    parsePrimary([, expression)
+                                      parseParenthesizedExpressionOrFunctionLiteral([)
+                                        parseParenthesizedExpression([)
+                                          parseExpressionInParenthesis([)
+                                            parseExpressionInParenthesisRest(()
+                                              parseExpression(()
+                                                parsePrecedenceExpression((, 1, true)
+                                                  parseUnaryExpression((, true)
+                                                    parsePrimary((, expression)
+                                                      listener: handleNoTypeArguments([)
+                                                      parseLiteralListSuffix((, null)
+                                                        listener: handleLiteralList(0, [, null, ])
+                                              ensureCloseParen(], ()
+                                          listener: handleParenthesizedExpression(()
+                              listener: handleLiteralList(1, [, null, ])
+                    ensureSemicolon(])
+                    listener: handleExpressionStatement(;)
+          notEofOrValue(}, })
+          listener: endBlockFunctionBody(1, {, })
+        listener: endTopLevelMethod(void, null, })
+  listener: endTopLevelDeclaration(void)
+  parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
+    parseMetadataStar(})
+      listener: beginMetadataStar(void)
+      listener: endMetadataStar(0)
+    parseTopLevelMemberImpl(})
+      listener: beginTopLevelMember(void)
+      parseTopLevelMethod(}, null, }, Instance of 'VoidType', null, bad, false)
+        listener: beginTopLevelMethod(}, null)
+        listener: handleVoidKeyword(void)
+        ensureIdentifierPotentiallyRecovered(void, topLevelFunctionDeclaration, false)
+          listener: handleIdentifier(bad, topLevelFunctionDeclaration)
+        parseMethodTypeVar(bad)
+          listener: handleNoTypeVariables(()
+        parseGetterOrFormalParameters(bad, bad, false, MemberKind.TopLevelMethod)
+          parseFormalParameters(bad, MemberKind.TopLevelMethod)
+            parseFormalParametersRest((, MemberKind.TopLevelMethod)
+              listener: beginFormalParameters((, MemberKind.TopLevelMethod)
+              listener: endFormalParameters(0, (, ), MemberKind.TopLevelMethod)
+        parseAsyncModifierOpt())
+          listener: handleAsyncModifier(null, null)
+          inPlainSync()
+        parseFunctionBody(), false, false)
+          listener: beginBlockFunctionBody({)
+          notEofOrValue(}, [)
+          parseStatement({)
+            parseStatementX({)
+              parseExpressionStatementOrDeclaration({, false)
+                parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+                  looksLikeLocalFunction([)
+                  parseExpressionStatement({)
+                    parseExpression({)
+                      parsePrecedenceExpression({, 1, true)
+                        parseUnaryExpression({, true)
+                          parsePrimary({, expression)
+                            listener: handleNoTypeArguments([)
+                            parseLiteralListSuffix({, null)
+                              parseExpression([)
+                                parsePrecedenceExpression([, 1, true)
+                                  parseUnaryExpression([, true)
+                                    parsePrimary([, expression)
+                                      parseParenthesizedExpressionOrFunctionLiteral([)
+                                        parseParenthesizedExpression([)
+                                          parseExpressionInParenthesis([)
+                                            parseExpressionInParenthesisRest(()
+                                              parseExpression(()
+                                                parsePrecedenceExpression((, 1, true)
+                                                  parseUnaryExpression((, true)
+                                                    parsePrimary((, expression)
+                                                      parseSend((, expression)
+                                                        ensureIdentifier((, expression)
+                                                          reportRecoverableErrorWithToken(], Instance of 'Template<(Token) => Message>')
+                                                            listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got ']'., null, {token: ]}], ], ])
+                                                          rewriter()
+                                                          listener: handleIdentifier(, expression)
+                                                        listener: handleNoTypeArguments(])
+                                                        parseArgumentsOpt()
+                                                          listener: handleNoArguments(])
+                                                        listener: handleSend(, ])
+                                              ensureCloseParen(, ()
+                                                reportRecoverableError(], Message[ExpectedButGot, Expected ')' before this., null, {string: )}])
+                                                  listener: handleRecoverableError(Message[ExpectedButGot, Expected ')' before this., null, {string: )}], ], ])
+                                          listener: handleParenthesizedExpression(()
+                              listener: handleLiteralList(1, [, null, ])
+                    ensureSemicolon(])
+                    listener: handleExpressionStatement(;)
+          notEofOrValue(}, })
+          listener: endBlockFunctionBody(1, {, })
+        listener: endTopLevelMethod(void, null, })
+  listener: endTopLevelDeclaration()
+  reportAllErrorTokens(void)
+  listener: endCompilationUnit(2, )
diff --git a/pkg/front_end/parser_testcases/error_recovery/bracket_mismatch_00.dart.parser.expect b/pkg/front_end/parser_testcases/error_recovery/bracket_mismatch_00.dart.parser.expect
new file mode 100644
index 0000000..fa741ec
--- /dev/null
+++ b/pkg/front_end/parser_testcases/error_recovery/bracket_mismatch_00.dart.parser.expect
@@ -0,0 +1,29 @@
+NOTICE: Stream was rewritten by parser!
+
+void good() {
+[
+([
+])
+];
+}
+
+void bad() {
+[
+(
+])
+];
+}
+
+void[KeywordToken] good[StringToken]([BeginToken])[SimpleToken] {[BeginToken]
+[[BeginToken]
+([BeginToken][[BeginToken]
+][SimpleToken])[SimpleToken]
+][SimpleToken];[SimpleToken]
+}[SimpleToken]
+
+void[KeywordToken] bad[StringToken]([BeginToken])[SimpleToken] {[BeginToken]
+[[BeginToken]
+([BeginToken]
+[SyntheticStringToken]][SimpleToken])[SimpleToken]
+][SimpleToken];[SimpleToken]
+}[SimpleToken][SimpleToken]
diff --git a/pkg/front_end/parser_testcases/error_recovery/bracket_mismatch_00.dart.scanner.expect b/pkg/front_end/parser_testcases/error_recovery/bracket_mismatch_00.dart.scanner.expect
new file mode 100644
index 0000000..f51baed
--- /dev/null
+++ b/pkg/front_end/parser_testcases/error_recovery/bracket_mismatch_00.dart.scanner.expect
@@ -0,0 +1,27 @@
+void good() {
+[
+([
+])
+];
+}
+
+void bad() {
+[
+(
+])
+];
+}
+
+void[KeywordToken] good[StringToken]([BeginToken])[SimpleToken] {[BeginToken]
+[[BeginToken]
+([BeginToken][[BeginToken]
+][SimpleToken])[SimpleToken]
+][SimpleToken];[SimpleToken]
+}[SimpleToken]
+
+void[KeywordToken] bad[StringToken]([BeginToken])[SimpleToken] {[BeginToken]
+[[BeginToken]
+([BeginToken]
+][SimpleToken])[SimpleToken]
+][SimpleToken];[SimpleToken]
+}[SimpleToken][SimpleToken]
diff --git a/pkg/front_end/parser_testcases/error_recovery/bracket_mismatch_01.dart b/pkg/front_end/parser_testcases/error_recovery/bracket_mismatch_01.dart
new file mode 100644
index 0000000..bd7cae8
--- /dev/null
+++ b/pkg/front_end/parser_testcases/error_recovery/bracket_mismatch_01.dart
@@ -0,0 +1,33 @@
+class C {
+  C({c});
+  C m() {
+    return C(
+      c: [
+        C(c: [
+          C(),
+          C(),
+          C(),
+        ]),
+        C(),
+        C(),
+      ],
+    );
+  }
+}
+
+class D {
+  D({d});
+  D m() {
+    return D(
+      d: [
+        D(d:
+          D(),
+          D(),
+          D(),
+        ]),
+        D(),
+        D(),
+      ],
+    );
+  }
+}
\ No newline at end of file
diff --git a/pkg/front_end/parser_testcases/error_recovery/bracket_mismatch_01.dart.expect b/pkg/front_end/parser_testcases/error_recovery/bracket_mismatch_01.dart.expect
new file mode 100644
index 0000000..9dc7216
--- /dev/null
+++ b/pkg/front_end/parser_testcases/error_recovery/bracket_mismatch_01.dart.expect
@@ -0,0 +1,231 @@
+Problems reported:
+
+parser/error_recovery/bracket_mismatch_01:25:11: Place positional arguments before named arguments.
+          D(),
+          ^
+
+parser/error_recovery/bracket_mismatch_01:26:11: Place positional arguments before named arguments.
+          D(),
+          ^
+
+parser/error_recovery/bracket_mismatch_01:27:9: Place positional arguments before named arguments.
+        ]),
+        ^
+
+parser/error_recovery/bracket_mismatch_01:27:9: Expected an identifier, but got ']'.
+        ]),
+        ^
+
+parser/error_recovery/bracket_mismatch_01:27:9: Expected ')' before this.
+        ]),
+        ^
+
+beginCompilationUnit(class)
+  beginMetadataStar(class)
+  endMetadataStar(0)
+  beginClassOrNamedMixinApplicationPrelude(class)
+    handleIdentifier(C, classOrMixinDeclaration)
+    handleNoTypeVariables({)
+    beginClassDeclaration(class, null, C)
+      handleNoType(C)
+      handleClassExtends(null)
+      handleClassNoWithClause()
+      handleClassOrMixinImplements(null, 0)
+      handleClassHeader(class, class, null)
+      beginClassOrMixinBody(DeclarationKind.Class, {)
+        beginMetadataStar(C)
+        endMetadataStar(0)
+        beginMember()
+          beginMethod(null, null, null, null, null, C)
+            handleNoType({)
+            handleIdentifier(C, methodDeclaration)
+            handleNoTypeVariables(()
+            beginFormalParameters((, MemberKind.NonStaticMethod)
+              beginOptionalFormalParameters({)
+                beginMetadataStar(c)
+                endMetadataStar(0)
+                beginFormalParameter(c, MemberKind.NonStaticMethod, null, null, null)
+                  handleNoType({)
+                  handleIdentifier(c, formalParameterDeclaration)
+                  handleFormalParameterWithoutValue(})
+                endFormalParameter(null, null, c, null, null, FormalParameterKind.optionalNamed, MemberKind.NonStaticMethod)
+              endOptionalFormalParameters(1, {, })
+            endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
+            handleNoInitializers()
+            handleAsyncModifier(null, null)
+            handleEmptyFunctionBody(;)
+          endClassConstructor(null, C, (, null, ;)
+        endMember()
+        beginMetadataStar(C)
+        endMetadataStar(0)
+        beginMember()
+          beginMethod(null, null, null, null, null, m)
+            handleIdentifier(C, typeReference)
+            handleNoTypeArguments(m)
+            handleType(C, null)
+            handleIdentifier(m, methodDeclaration)
+            handleNoTypeVariables(()
+            beginFormalParameters((, MemberKind.NonStaticMethod)
+            endFormalParameters(0, (, ), MemberKind.NonStaticMethod)
+            handleNoInitializers()
+            handleAsyncModifier(null, null)
+            beginBlockFunctionBody({)
+              beginReturnStatement(return)
+                handleIdentifier(C, expression)
+                handleNoTypeArguments(()
+                beginArguments(()
+                  handleIdentifier(c, namedArgumentReference)
+                  handleNoTypeArguments([)
+                  handleIdentifier(C, expression)
+                  handleNoTypeArguments(()
+                  beginArguments(()
+                    handleIdentifier(c, namedArgumentReference)
+                    handleNoTypeArguments([)
+                    handleIdentifier(C, expression)
+                    handleNoTypeArguments(()
+                    beginArguments(()
+                    endArguments(0, (, ))
+                    handleSend(C, ,)
+                    handleIdentifier(C, expression)
+                    handleNoTypeArguments(()
+                    beginArguments(()
+                    endArguments(0, (, ))
+                    handleSend(C, ,)
+                    handleIdentifier(C, expression)
+                    handleNoTypeArguments(()
+                    beginArguments(()
+                    endArguments(0, (, ))
+                    handleSend(C, ,)
+                    handleLiteralList(3, [, null, ])
+                    handleNamedArgument(:)
+                  endArguments(1, (, ))
+                  handleSend(C, ,)
+                  handleIdentifier(C, expression)
+                  handleNoTypeArguments(()
+                  beginArguments(()
+                  endArguments(0, (, ))
+                  handleSend(C, ,)
+                  handleIdentifier(C, expression)
+                  handleNoTypeArguments(()
+                  beginArguments(()
+                  endArguments(0, (, ))
+                  handleSend(C, ,)
+                  handleLiteralList(3, [, null, ])
+                  handleNamedArgument(:)
+                endArguments(1, (, ))
+                handleSend(C, ;)
+              endReturnStatement(true, return, ;)
+            endBlockFunctionBody(1, {, })
+          endClassMethod(null, C, (, null, })
+        endMember()
+      endClassOrMixinBody(DeclarationKind.Class, 2, {, })
+    endClassDeclaration(class, })
+  endTopLevelDeclaration(class)
+  beginMetadataStar(class)
+  endMetadataStar(0)
+  beginClassOrNamedMixinApplicationPrelude(class)
+    handleIdentifier(D, classOrMixinDeclaration)
+    handleNoTypeVariables({)
+    beginClassDeclaration(class, null, D)
+      handleNoType(D)
+      handleClassExtends(null)
+      handleClassNoWithClause()
+      handleClassOrMixinImplements(null, 0)
+      handleClassHeader(class, class, null)
+      beginClassOrMixinBody(DeclarationKind.Class, {)
+        beginMetadataStar(D)
+        endMetadataStar(0)
+        beginMember()
+          beginMethod(null, null, null, null, null, D)
+            handleNoType({)
+            handleIdentifier(D, methodDeclaration)
+            handleNoTypeVariables(()
+            beginFormalParameters((, MemberKind.NonStaticMethod)
+              beginOptionalFormalParameters({)
+                beginMetadataStar(d)
+                endMetadataStar(0)
+                beginFormalParameter(d, MemberKind.NonStaticMethod, null, null, null)
+                  handleNoType({)
+                  handleIdentifier(d, formalParameterDeclaration)
+                  handleFormalParameterWithoutValue(})
+                endFormalParameter(null, null, d, null, null, FormalParameterKind.optionalNamed, MemberKind.NonStaticMethod)
+              endOptionalFormalParameters(1, {, })
+            endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
+            handleNoInitializers()
+            handleAsyncModifier(null, null)
+            handleEmptyFunctionBody(;)
+          endClassConstructor(null, D, (, null, ;)
+        endMember()
+        beginMetadataStar(D)
+        endMetadataStar(0)
+        beginMember()
+          beginMethod(null, null, null, null, null, m)
+            handleIdentifier(D, typeReference)
+            handleNoTypeArguments(m)
+            handleType(D, null)
+            handleIdentifier(m, methodDeclaration)
+            handleNoTypeVariables(()
+            beginFormalParameters((, MemberKind.NonStaticMethod)
+            endFormalParameters(0, (, ), MemberKind.NonStaticMethod)
+            handleNoInitializers()
+            handleAsyncModifier(null, null)
+            beginBlockFunctionBody({)
+              beginReturnStatement(return)
+                handleIdentifier(D, expression)
+                handleNoTypeArguments(()
+                beginArguments(()
+                  handleIdentifier(d, namedArgumentReference)
+                  handleNoTypeArguments([)
+                  handleIdentifier(D, expression)
+                  handleNoTypeArguments(()
+                  beginArguments(()
+                    handleIdentifier(d, namedArgumentReference)
+                    handleIdentifier(D, expression)
+                    handleNoTypeArguments(()
+                    beginArguments(()
+                    endArguments(0, (, ))
+                    handleSend(D, ,)
+                    handleNamedArgument(:)
+                    handleRecoverableError(PositionalAfterNamedArgument, D, D)
+                    handleIdentifier(D, expression)
+                    handleNoTypeArguments(()
+                    beginArguments(()
+                    endArguments(0, (, ))
+                    handleSend(D, ,)
+                    handleRecoverableError(PositionalAfterNamedArgument, D, D)
+                    handleIdentifier(D, expression)
+                    handleNoTypeArguments(()
+                    beginArguments(()
+                    endArguments(0, (, ))
+                    handleSend(D, ,)
+                    handleRecoverableError(PositionalAfterNamedArgument, ], ])
+                    handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got ']'., null, {token: ]}], ], ])
+                    handleIdentifier(, expression)
+                    handleNoTypeArguments(])
+                    handleNoArguments(])
+                    handleSend(, ])
+                    handleRecoverableError(Message[ExpectedButGot, Expected ')' before this., null, {string: )}], ], ])
+                  endArguments(4, (, ))
+                  handleSend(D, ,)
+                  handleIdentifier(D, expression)
+                  handleNoTypeArguments(()
+                  beginArguments(()
+                  endArguments(0, (, ))
+                  handleSend(D, ,)
+                  handleIdentifier(D, expression)
+                  handleNoTypeArguments(()
+                  beginArguments(()
+                  endArguments(0, (, ))
+                  handleSend(D, ,)
+                  handleLiteralList(3, [, null, ])
+                  handleNamedArgument(:)
+                endArguments(1, (, ))
+                handleSend(D, ;)
+              endReturnStatement(true, return, ;)
+            endBlockFunctionBody(1, {, })
+          endClassMethod(null, D, (, null, })
+        endMember()
+      endClassOrMixinBody(DeclarationKind.Class, 2, {, })
+    endClassDeclaration(class, })
+  endTopLevelDeclaration()
+endCompilationUnit(2, )
diff --git a/pkg/front_end/parser_testcases/error_recovery/bracket_mismatch_01.dart.intertwined.expect b/pkg/front_end/parser_testcases/error_recovery/bracket_mismatch_01.dart.intertwined.expect
new file mode 100644
index 0000000..5b5ca89
--- /dev/null
+++ b/pkg/front_end/parser_testcases/error_recovery/bracket_mismatch_01.dart.intertwined.expect
@@ -0,0 +1,512 @@
+parseUnit(class)
+  skipErrorTokens(class)
+  listener: beginCompilationUnit(class)
+  syntheticPreviousToken(class)
+  parseTopLevelDeclarationImpl(, Instance of 'DirectiveContext')
+    parseMetadataStar()
+      listener: beginMetadataStar(class)
+      listener: endMetadataStar(0)
+    parseTopLevelKeywordDeclaration(, class, Instance of 'DirectiveContext')
+      parseClassDeclarationModifiers(, class)
+      parseClassOrNamedMixinApplication(null, class)
+        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        ensureIdentifier(class, classOrMixinDeclaration)
+          listener: handleIdentifier(C, classOrMixinDeclaration)
+        listener: handleNoTypeVariables({)
+        listener: beginClassDeclaration(class, null, C)
+        parseClass(C, class, class, C)
+          parseClassHeaderOpt(C, class, class)
+            parseClassExtendsOpt(C)
+              listener: handleNoType(C)
+              listener: handleClassExtends(null)
+            parseWithClauseOpt(C)
+              listener: handleClassNoWithClause()
+            parseClassOrMixinImplementsOpt(C)
+              listener: handleClassOrMixinImplements(null, 0)
+            listener: handleClassHeader(class, class, null)
+          parseClassOrMixinOrExtensionBody(C, DeclarationKind.Class, C)
+            listener: beginClassOrMixinBody(DeclarationKind.Class, {)
+            notEofOrValue(}, C)
+            parseClassOrMixinOrExtensionMemberImpl({, DeclarationKind.Class, C)
+              parseMetadataStar({)
+                listener: beginMetadataStar(C)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              isReservedKeyword(()
+              parseMethod({, null, null, null, null, null, {, Instance of 'NoType', null, C, DeclarationKind.Class, C, false)
+                listener: beginMethod(null, null, null, null, null, C)
+                listener: handleNoType({)
+                ensureIdentifierPotentiallyRecovered({, methodDeclaration, false)
+                  listener: handleIdentifier(C, methodDeclaration)
+                parseQualifiedRestOpt(C, methodDeclarationContinuation)
+                parseMethodTypeVar(C)
+                  listener: handleNoTypeVariables(()
+                parseGetterOrFormalParameters(C, C, false, MemberKind.NonStaticMethod)
+                  parseFormalParameters(C, MemberKind.NonStaticMethod)
+                    parseFormalParametersRest((, MemberKind.NonStaticMethod)
+                      listener: beginFormalParameters((, MemberKind.NonStaticMethod)
+                      parseOptionalNamedParameters((, MemberKind.NonStaticMethod)
+                        listener: beginOptionalFormalParameters({)
+                        parseFormalParameter({, FormalParameterKind.optionalNamed, MemberKind.NonStaticMethod)
+                          parseMetadataStar({)
+                            listener: beginMetadataStar(c)
+                            listener: endMetadataStar(0)
+                          listener: beginFormalParameter(c, MemberKind.NonStaticMethod, null, null, null)
+                          listener: handleNoType({)
+                          ensureIdentifier({, formalParameterDeclaration)
+                            listener: handleIdentifier(c, formalParameterDeclaration)
+                          listener: handleFormalParameterWithoutValue(})
+                          listener: endFormalParameter(null, null, c, null, null, FormalParameterKind.optionalNamed, MemberKind.NonStaticMethod)
+                        listener: endOptionalFormalParameters(1, {, })
+                      ensureCloseParen(}, ()
+                      listener: endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
+                parseInitializersOpt())
+                  listener: handleNoInitializers()
+                parseAsyncModifierOpt())
+                  listener: handleAsyncModifier(null, null)
+                  inPlainSync()
+                inPlainSync()
+                parseFunctionBody(), false, true)
+                  listener: handleEmptyFunctionBody(;)
+                listener: endClassConstructor(null, C, (, null, ;)
+              listener: endMember()
+            notEofOrValue(}, C)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, C)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(C)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseMethod(;, null, null, null, null, null, ;, Instance of 'SimpleType', null, m, DeclarationKind.Class, C, false)
+                listener: beginMethod(null, null, null, null, null, m)
+                listener: handleIdentifier(C, typeReference)
+                listener: handleNoTypeArguments(m)
+                listener: handleType(C, null)
+                ensureIdentifierPotentiallyRecovered(C, methodDeclaration, false)
+                  listener: handleIdentifier(m, methodDeclaration)
+                parseQualifiedRestOpt(m, methodDeclarationContinuation)
+                parseMethodTypeVar(m)
+                  listener: handleNoTypeVariables(()
+                parseGetterOrFormalParameters(m, m, false, MemberKind.NonStaticMethod)
+                  parseFormalParameters(m, MemberKind.NonStaticMethod)
+                    parseFormalParametersRest((, MemberKind.NonStaticMethod)
+                      listener: beginFormalParameters((, MemberKind.NonStaticMethod)
+                      listener: endFormalParameters(0, (, ), MemberKind.NonStaticMethod)
+                parseInitializersOpt())
+                  listener: handleNoInitializers()
+                parseAsyncModifierOpt())
+                  listener: handleAsyncModifier(null, null)
+                  inPlainSync()
+                inPlainSync()
+                parseFunctionBody(), false, true)
+                  listener: beginBlockFunctionBody({)
+                  notEofOrValue(}, return)
+                  parseStatement({)
+                    parseStatementX({)
+                      parseReturnStatement({)
+                        listener: beginReturnStatement(return)
+                        parseExpression(return)
+                          parsePrecedenceExpression(return, 1, true)
+                            parseUnaryExpression(return, true)
+                              parsePrimary(return, expression)
+                                parseSendOrFunctionLiteral(return, expression)
+                                  looksLikeFunctionBody(;)
+                                  parseSend(return, expression)
+                                    ensureIdentifier(return, expression)
+                                      listener: handleIdentifier(C, expression)
+                                    listener: handleNoTypeArguments(()
+                                    parseArgumentsOpt(C)
+                                      parseArguments(C)
+                                        parseArgumentsRest(()
+                                          listener: beginArguments(()
+                                          ensureIdentifier((, namedArgumentReference)
+                                            listener: handleIdentifier(c, namedArgumentReference)
+                                          parseExpression(:)
+                                            parsePrecedenceExpression(:, 1, true)
+                                              parseUnaryExpression(:, true)
+                                                parsePrimary(:, expression)
+                                                  listener: handleNoTypeArguments([)
+                                                  parseLiteralListSuffix(:, null)
+                                                    parseExpression([)
+                                                      parsePrecedenceExpression([, 1, true)
+                                                        parseUnaryExpression([, true)
+                                                          parsePrimary([, expression)
+                                                            parseSendOrFunctionLiteral([, expression)
+                                                              looksLikeFunctionBody(,)
+                                                              parseSend([, expression)
+                                                                ensureIdentifier([, expression)
+                                                                  listener: handleIdentifier(C, expression)
+                                                                listener: handleNoTypeArguments(()
+                                                                parseArgumentsOpt(C)
+                                                                  parseArguments(C)
+                                                                    parseArgumentsRest(()
+                                                                      listener: beginArguments(()
+                                                                      ensureIdentifier((, namedArgumentReference)
+                                                                        listener: handleIdentifier(c, namedArgumentReference)
+                                                                      parseExpression(:)
+                                                                        parsePrecedenceExpression(:, 1, true)
+                                                                          parseUnaryExpression(:, true)
+                                                                            parsePrimary(:, expression)
+                                                                              listener: handleNoTypeArguments([)
+                                                                              parseLiteralListSuffix(:, null)
+                                                                                parseExpression([)
+                                                                                  parsePrecedenceExpression([, 1, true)
+                                                                                    parseUnaryExpression([, true)
+                                                                                      parsePrimary([, expression)
+                                                                                        parseSendOrFunctionLiteral([, expression)
+                                                                                          looksLikeFunctionBody(,)
+                                                                                          parseSend([, expression)
+                                                                                            ensureIdentifier([, expression)
+                                                                                              listener: handleIdentifier(C, expression)
+                                                                                            listener: handleNoTypeArguments(()
+                                                                                            parseArgumentsOpt(C)
+                                                                                              parseArguments(C)
+                                                                                                parseArgumentsRest(()
+                                                                                                  listener: beginArguments(()
+                                                                                                  listener: endArguments(0, (, ))
+                                                                                            listener: handleSend(C, ,)
+                                                                                parseExpression(,)
+                                                                                  parsePrecedenceExpression(,, 1, true)
+                                                                                    parseUnaryExpression(,, true)
+                                                                                      parsePrimary(,, expression)
+                                                                                        parseSendOrFunctionLiteral(,, expression)
+                                                                                          looksLikeFunctionBody(,)
+                                                                                          parseSend(,, expression)
+                                                                                            ensureIdentifier(,, expression)
+                                                                                              listener: handleIdentifier(C, expression)
+                                                                                            listener: handleNoTypeArguments(()
+                                                                                            parseArgumentsOpt(C)
+                                                                                              parseArguments(C)
+                                                                                                parseArgumentsRest(()
+                                                                                                  listener: beginArguments(()
+                                                                                                  listener: endArguments(0, (, ))
+                                                                                            listener: handleSend(C, ,)
+                                                                                parseExpression(,)
+                                                                                  parsePrecedenceExpression(,, 1, true)
+                                                                                    parseUnaryExpression(,, true)
+                                                                                      parsePrimary(,, expression)
+                                                                                        parseSendOrFunctionLiteral(,, expression)
+                                                                                          looksLikeFunctionBody(,)
+                                                                                          parseSend(,, expression)
+                                                                                            ensureIdentifier(,, expression)
+                                                                                              listener: handleIdentifier(C, expression)
+                                                                                            listener: handleNoTypeArguments(()
+                                                                                            parseArgumentsOpt(C)
+                                                                                              parseArguments(C)
+                                                                                                parseArgumentsRest(()
+                                                                                                  listener: beginArguments(()
+                                                                                                  listener: endArguments(0, (, ))
+                                                                                            listener: handleSend(C, ,)
+                                                                                listener: handleLiteralList(3, [, null, ])
+                                                                      listener: handleNamedArgument(:)
+                                                                      listener: endArguments(1, (, ))
+                                                                listener: handleSend(C, ,)
+                                                    parseExpression(,)
+                                                      parsePrecedenceExpression(,, 1, true)
+                                                        parseUnaryExpression(,, true)
+                                                          parsePrimary(,, expression)
+                                                            parseSendOrFunctionLiteral(,, expression)
+                                                              looksLikeFunctionBody(,)
+                                                              parseSend(,, expression)
+                                                                ensureIdentifier(,, expression)
+                                                                  listener: handleIdentifier(C, expression)
+                                                                listener: handleNoTypeArguments(()
+                                                                parseArgumentsOpt(C)
+                                                                  parseArguments(C)
+                                                                    parseArgumentsRest(()
+                                                                      listener: beginArguments(()
+                                                                      listener: endArguments(0, (, ))
+                                                                listener: handleSend(C, ,)
+                                                    parseExpression(,)
+                                                      parsePrecedenceExpression(,, 1, true)
+                                                        parseUnaryExpression(,, true)
+                                                          parsePrimary(,, expression)
+                                                            parseSendOrFunctionLiteral(,, expression)
+                                                              looksLikeFunctionBody(,)
+                                                              parseSend(,, expression)
+                                                                ensureIdentifier(,, expression)
+                                                                  listener: handleIdentifier(C, expression)
+                                                                listener: handleNoTypeArguments(()
+                                                                parseArgumentsOpt(C)
+                                                                  parseArguments(C)
+                                                                    parseArgumentsRest(()
+                                                                      listener: beginArguments(()
+                                                                      listener: endArguments(0, (, ))
+                                                                listener: handleSend(C, ,)
+                                                    listener: handleLiteralList(3, [, null, ])
+                                          listener: handleNamedArgument(:)
+                                          listener: endArguments(1, (, ))
+                                    listener: handleSend(C, ;)
+                        ensureSemicolon())
+                        listener: endReturnStatement(true, return, ;)
+                        inGenerator()
+                  notEofOrValue(}, })
+                  listener: endBlockFunctionBody(1, {, })
+                listener: endClassMethod(null, C, (, null, })
+              listener: endMember()
+            notEofOrValue(}, })
+            listener: endClassOrMixinBody(DeclarationKind.Class, 2, {, })
+          listener: endClassDeclaration(class, })
+  listener: endTopLevelDeclaration(class)
+  parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
+    parseMetadataStar(})
+      listener: beginMetadataStar(class)
+      listener: endMetadataStar(0)
+    parseTopLevelKeywordDeclaration(}, class, Instance of 'DirectiveContext')
+      parseClassDeclarationModifiers(}, class)
+      parseClassOrNamedMixinApplication(null, class)
+        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        ensureIdentifier(class, classOrMixinDeclaration)
+          listener: handleIdentifier(D, classOrMixinDeclaration)
+        listener: handleNoTypeVariables({)
+        listener: beginClassDeclaration(class, null, D)
+        parseClass(D, class, class, D)
+          parseClassHeaderOpt(D, class, class)
+            parseClassExtendsOpt(D)
+              listener: handleNoType(D)
+              listener: handleClassExtends(null)
+            parseWithClauseOpt(D)
+              listener: handleClassNoWithClause()
+            parseClassOrMixinImplementsOpt(D)
+              listener: handleClassOrMixinImplements(null, 0)
+            listener: handleClassHeader(class, class, null)
+          parseClassOrMixinOrExtensionBody(D, DeclarationKind.Class, D)
+            listener: beginClassOrMixinBody(DeclarationKind.Class, {)
+            notEofOrValue(}, D)
+            parseClassOrMixinOrExtensionMemberImpl({, DeclarationKind.Class, D)
+              parseMetadataStar({)
+                listener: beginMetadataStar(D)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              isReservedKeyword(()
+              parseMethod({, null, null, null, null, null, {, Instance of 'NoType', null, D, DeclarationKind.Class, D, false)
+                listener: beginMethod(null, null, null, null, null, D)
+                listener: handleNoType({)
+                ensureIdentifierPotentiallyRecovered({, methodDeclaration, false)
+                  listener: handleIdentifier(D, methodDeclaration)
+                parseQualifiedRestOpt(D, methodDeclarationContinuation)
+                parseMethodTypeVar(D)
+                  listener: handleNoTypeVariables(()
+                parseGetterOrFormalParameters(D, D, false, MemberKind.NonStaticMethod)
+                  parseFormalParameters(D, MemberKind.NonStaticMethod)
+                    parseFormalParametersRest((, MemberKind.NonStaticMethod)
+                      listener: beginFormalParameters((, MemberKind.NonStaticMethod)
+                      parseOptionalNamedParameters((, MemberKind.NonStaticMethod)
+                        listener: beginOptionalFormalParameters({)
+                        parseFormalParameter({, FormalParameterKind.optionalNamed, MemberKind.NonStaticMethod)
+                          parseMetadataStar({)
+                            listener: beginMetadataStar(d)
+                            listener: endMetadataStar(0)
+                          listener: beginFormalParameter(d, MemberKind.NonStaticMethod, null, null, null)
+                          listener: handleNoType({)
+                          ensureIdentifier({, formalParameterDeclaration)
+                            listener: handleIdentifier(d, formalParameterDeclaration)
+                          listener: handleFormalParameterWithoutValue(})
+                          listener: endFormalParameter(null, null, d, null, null, FormalParameterKind.optionalNamed, MemberKind.NonStaticMethod)
+                        listener: endOptionalFormalParameters(1, {, })
+                      ensureCloseParen(}, ()
+                      listener: endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
+                parseInitializersOpt())
+                  listener: handleNoInitializers()
+                parseAsyncModifierOpt())
+                  listener: handleAsyncModifier(null, null)
+                  inPlainSync()
+                inPlainSync()
+                parseFunctionBody(), false, true)
+                  listener: handleEmptyFunctionBody(;)
+                listener: endClassConstructor(null, D, (, null, ;)
+              listener: endMember()
+            notEofOrValue(}, D)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, D)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(D)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              parseMethod(;, null, null, null, null, null, ;, Instance of 'SimpleType', null, m, DeclarationKind.Class, D, false)
+                listener: beginMethod(null, null, null, null, null, m)
+                listener: handleIdentifier(D, typeReference)
+                listener: handleNoTypeArguments(m)
+                listener: handleType(D, null)
+                ensureIdentifierPotentiallyRecovered(D, methodDeclaration, false)
+                  listener: handleIdentifier(m, methodDeclaration)
+                parseQualifiedRestOpt(m, methodDeclarationContinuation)
+                parseMethodTypeVar(m)
+                  listener: handleNoTypeVariables(()
+                parseGetterOrFormalParameters(m, m, false, MemberKind.NonStaticMethod)
+                  parseFormalParameters(m, MemberKind.NonStaticMethod)
+                    parseFormalParametersRest((, MemberKind.NonStaticMethod)
+                      listener: beginFormalParameters((, MemberKind.NonStaticMethod)
+                      listener: endFormalParameters(0, (, ), MemberKind.NonStaticMethod)
+                parseInitializersOpt())
+                  listener: handleNoInitializers()
+                parseAsyncModifierOpt())
+                  listener: handleAsyncModifier(null, null)
+                  inPlainSync()
+                inPlainSync()
+                parseFunctionBody(), false, true)
+                  listener: beginBlockFunctionBody({)
+                  notEofOrValue(}, return)
+                  parseStatement({)
+                    parseStatementX({)
+                      parseReturnStatement({)
+                        listener: beginReturnStatement(return)
+                        parseExpression(return)
+                          parsePrecedenceExpression(return, 1, true)
+                            parseUnaryExpression(return, true)
+                              parsePrimary(return, expression)
+                                parseSendOrFunctionLiteral(return, expression)
+                                  looksLikeFunctionBody(;)
+                                  parseSend(return, expression)
+                                    ensureIdentifier(return, expression)
+                                      listener: handleIdentifier(D, expression)
+                                    listener: handleNoTypeArguments(()
+                                    parseArgumentsOpt(D)
+                                      parseArguments(D)
+                                        parseArgumentsRest(()
+                                          listener: beginArguments(()
+                                          ensureIdentifier((, namedArgumentReference)
+                                            listener: handleIdentifier(d, namedArgumentReference)
+                                          parseExpression(:)
+                                            parsePrecedenceExpression(:, 1, true)
+                                              parseUnaryExpression(:, true)
+                                                parsePrimary(:, expression)
+                                                  listener: handleNoTypeArguments([)
+                                                  parseLiteralListSuffix(:, null)
+                                                    parseExpression([)
+                                                      parsePrecedenceExpression([, 1, true)
+                                                        parseUnaryExpression([, true)
+                                                          parsePrimary([, expression)
+                                                            parseSendOrFunctionLiteral([, expression)
+                                                              looksLikeFunctionBody(,)
+                                                              parseSend([, expression)
+                                                                ensureIdentifier([, expression)
+                                                                  listener: handleIdentifier(D, expression)
+                                                                listener: handleNoTypeArguments(()
+                                                                parseArgumentsOpt(D)
+                                                                  parseArguments(D)
+                                                                    parseArgumentsRest(()
+                                                                      listener: beginArguments(()
+                                                                      ensureIdentifier((, namedArgumentReference)
+                                                                        listener: handleIdentifier(d, namedArgumentReference)
+                                                                      parseExpression(:)
+                                                                        parsePrecedenceExpression(:, 1, true)
+                                                                          parseUnaryExpression(:, true)
+                                                                            parsePrimary(:, expression)
+                                                                              parseSendOrFunctionLiteral(:, expression)
+                                                                                looksLikeFunctionBody(,)
+                                                                                parseSend(:, expression)
+                                                                                  ensureIdentifier(:, expression)
+                                                                                    listener: handleIdentifier(D, expression)
+                                                                                  listener: handleNoTypeArguments(()
+                                                                                  parseArgumentsOpt(D)
+                                                                                    parseArguments(D)
+                                                                                      parseArgumentsRest(()
+                                                                                        listener: beginArguments(()
+                                                                                        listener: endArguments(0, (, ))
+                                                                                  listener: handleSend(D, ,)
+                                                                      listener: handleNamedArgument(:)
+                                                                      reportRecoverableError(D, PositionalAfterNamedArgument)
+                                                                        listener: handleRecoverableError(PositionalAfterNamedArgument, D, D)
+                                                                      parseExpression(,)
+                                                                        parsePrecedenceExpression(,, 1, true)
+                                                                          parseUnaryExpression(,, true)
+                                                                            parsePrimary(,, expression)
+                                                                              parseSendOrFunctionLiteral(,, expression)
+                                                                                looksLikeFunctionBody(,)
+                                                                                parseSend(,, expression)
+                                                                                  ensureIdentifier(,, expression)
+                                                                                    listener: handleIdentifier(D, expression)
+                                                                                  listener: handleNoTypeArguments(()
+                                                                                  parseArgumentsOpt(D)
+                                                                                    parseArguments(D)
+                                                                                      parseArgumentsRest(()
+                                                                                        listener: beginArguments(()
+                                                                                        listener: endArguments(0, (, ))
+                                                                                  listener: handleSend(D, ,)
+                                                                      reportRecoverableError(D, PositionalAfterNamedArgument)
+                                                                        listener: handleRecoverableError(PositionalAfterNamedArgument, D, D)
+                                                                      parseExpression(,)
+                                                                        parsePrecedenceExpression(,, 1, true)
+                                                                          parseUnaryExpression(,, true)
+                                                                            parsePrimary(,, expression)
+                                                                              parseSendOrFunctionLiteral(,, expression)
+                                                                                looksLikeFunctionBody(,)
+                                                                                parseSend(,, expression)
+                                                                                  ensureIdentifier(,, expression)
+                                                                                    listener: handleIdentifier(D, expression)
+                                                                                  listener: handleNoTypeArguments(()
+                                                                                  parseArgumentsOpt(D)
+                                                                                    parseArguments(D)
+                                                                                      parseArgumentsRest(()
+                                                                                        listener: beginArguments(()
+                                                                                        listener: endArguments(0, (, ))
+                                                                                  listener: handleSend(D, ,)
+                                                                      reportRecoverableError(], PositionalAfterNamedArgument)
+                                                                        listener: handleRecoverableError(PositionalAfterNamedArgument, ], ])
+                                                                      parseExpression(,)
+                                                                        parsePrecedenceExpression(,, 1, true)
+                                                                          parseUnaryExpression(,, true)
+                                                                            parsePrimary(,, expression)
+                                                                              parseSend(,, expression)
+                                                                                ensureIdentifier(,, expression)
+                                                                                  reportRecoverableErrorWithToken(], Instance of 'Template<(Token) => Message>')
+                                                                                    listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got ']'., null, {token: ]}], ], ])
+                                                                                  rewriter()
+                                                                                  listener: handleIdentifier(, expression)
+                                                                                listener: handleNoTypeArguments(])
+                                                                                parseArgumentsOpt()
+                                                                                  listener: handleNoArguments(])
+                                                                                listener: handleSend(, ])
+                                                                      ensureCloseParen(, ()
+                                                                        reportRecoverableError(], Message[ExpectedButGot, Expected ')' before this., null, {string: )}])
+                                                                          listener: handleRecoverableError(Message[ExpectedButGot, Expected ')' before this., null, {string: )}], ], ])
+                                                                      listener: endArguments(4, (, ))
+                                                                listener: handleSend(D, ,)
+                                                    parseExpression(,)
+                                                      parsePrecedenceExpression(,, 1, true)
+                                                        parseUnaryExpression(,, true)
+                                                          parsePrimary(,, expression)
+                                                            parseSendOrFunctionLiteral(,, expression)
+                                                              looksLikeFunctionBody(,)
+                                                              parseSend(,, expression)
+                                                                ensureIdentifier(,, expression)
+                                                                  listener: handleIdentifier(D, expression)
+                                                                listener: handleNoTypeArguments(()
+                                                                parseArgumentsOpt(D)
+                                                                  parseArguments(D)
+                                                                    parseArgumentsRest(()
+                                                                      listener: beginArguments(()
+                                                                      listener: endArguments(0, (, ))
+                                                                listener: handleSend(D, ,)
+                                                    parseExpression(,)
+                                                      parsePrecedenceExpression(,, 1, true)
+                                                        parseUnaryExpression(,, true)
+                                                          parsePrimary(,, expression)
+                                                            parseSendOrFunctionLiteral(,, expression)
+                                                              looksLikeFunctionBody(,)
+                                                              parseSend(,, expression)
+                                                                ensureIdentifier(,, expression)
+                                                                  listener: handleIdentifier(D, expression)
+                                                                listener: handleNoTypeArguments(()
+                                                                parseArgumentsOpt(D)
+                                                                  parseArguments(D)
+                                                                    parseArgumentsRest(()
+                                                                      listener: beginArguments(()
+                                                                      listener: endArguments(0, (, ))
+                                                                listener: handleSend(D, ,)
+                                                    listener: handleLiteralList(3, [, null, ])
+                                          listener: handleNamedArgument(:)
+                                          listener: endArguments(1, (, ))
+                                    listener: handleSend(D, ;)
+                        ensureSemicolon())
+                        listener: endReturnStatement(true, return, ;)
+                        inGenerator()
+                  notEofOrValue(}, })
+                  listener: endBlockFunctionBody(1, {, })
+                listener: endClassMethod(null, D, (, null, })
+              listener: endMember()
+            notEofOrValue(}, })
+            listener: endClassOrMixinBody(DeclarationKind.Class, 2, {, })
+          listener: endClassDeclaration(class, })
+  listener: endTopLevelDeclaration()
+  reportAllErrorTokens(class)
+  listener: endCompilationUnit(2, )
diff --git a/pkg/front_end/parser_testcases/error_recovery/bracket_mismatch_01.dart.parser.expect b/pkg/front_end/parser_testcases/error_recovery/bracket_mismatch_01.dart.parser.expect
new file mode 100644
index 0000000..bbde7fc
--- /dev/null
+++ b/pkg/front_end/parser_testcases/error_recovery/bracket_mismatch_01.dart.parser.expect
@@ -0,0 +1,69 @@
+NOTICE: Stream was rewritten by parser!
+
+class C {
+C({c});
+C m() {
+return C(
+c: [
+C(c: [
+C(),
+C(),
+C(),
+]),
+C(),
+C(),
+],
+);
+}
+}
+
+class D {
+D({d});
+D m() {
+return D(
+d: [
+D(d:
+D(),
+D(),
+D(),
+]),
+D(),
+D(),
+],
+);
+}
+}
+
+class[KeywordToken] C[StringToken] {[BeginToken]
+C[StringToken]([BeginToken]{[BeginToken]c[StringToken]}[SimpleToken])[SimpleToken];[SimpleToken]
+C[StringToken] m[StringToken]([BeginToken])[SimpleToken] {[BeginToken]
+return[KeywordToken] C[StringToken]([BeginToken]
+c[StringToken]:[SimpleToken] [[BeginToken]
+C[StringToken]([BeginToken]c[StringToken]:[SimpleToken] [[BeginToken]
+C[StringToken]([BeginToken])[SimpleToken],[SimpleToken]
+C[StringToken]([BeginToken])[SimpleToken],[SimpleToken]
+C[StringToken]([BeginToken])[SimpleToken],[SimpleToken]
+][SimpleToken])[SimpleToken],[SimpleToken]
+C[StringToken]([BeginToken])[SimpleToken],[SimpleToken]
+C[StringToken]([BeginToken])[SimpleToken],[SimpleToken]
+][SimpleToken],[SimpleToken]
+)[SimpleToken];[SimpleToken]
+}[SimpleToken]
+}[SimpleToken]
+
+class[KeywordToken] D[StringToken] {[BeginToken]
+D[StringToken]([BeginToken]{[BeginToken]d[StringToken]}[SimpleToken])[SimpleToken];[SimpleToken]
+D[StringToken] m[StringToken]([BeginToken])[SimpleToken] {[BeginToken]
+return[KeywordToken] D[StringToken]([BeginToken]
+d[StringToken]:[SimpleToken] [[BeginToken]
+D[StringToken]([BeginToken]d[StringToken]:[SimpleToken]
+D[StringToken]([BeginToken])[SimpleToken],[SimpleToken]
+D[StringToken]([BeginToken])[SimpleToken],[SimpleToken]
+D[StringToken]([BeginToken])[SimpleToken],[SimpleToken]
+[SyntheticStringToken]][SimpleToken])[SimpleToken],[SimpleToken]
+D[StringToken]([BeginToken])[SimpleToken],[SimpleToken]
+D[StringToken]([BeginToken])[SimpleToken],[SimpleToken]
+][SimpleToken],[SimpleToken]
+)[SimpleToken];[SimpleToken]
+}[SimpleToken]
+}[SimpleToken][SimpleToken]
diff --git a/pkg/front_end/parser_testcases/error_recovery/bracket_mismatch_01.dart.scanner.expect b/pkg/front_end/parser_testcases/error_recovery/bracket_mismatch_01.dart.scanner.expect
new file mode 100644
index 0000000..103c8c2
--- /dev/null
+++ b/pkg/front_end/parser_testcases/error_recovery/bracket_mismatch_01.dart.scanner.expect
@@ -0,0 +1,67 @@
+class C {
+C({c});
+C m() {
+return C(
+c: [
+C(c: [
+C(),
+C(),
+C(),
+]),
+C(),
+C(),
+],
+);
+}
+}
+
+class D {
+D({d});
+D m() {
+return D(
+d: [
+D(d:
+D(),
+D(),
+D(),
+]),
+D(),
+D(),
+],
+);
+}
+}
+
+class[KeywordToken] C[StringToken] {[BeginToken]
+C[StringToken]([BeginToken]{[BeginToken]c[StringToken]}[SimpleToken])[SimpleToken];[SimpleToken]
+C[StringToken] m[StringToken]([BeginToken])[SimpleToken] {[BeginToken]
+return[KeywordToken] C[StringToken]([BeginToken]
+c[StringToken]:[SimpleToken] [[BeginToken]
+C[StringToken]([BeginToken]c[StringToken]:[SimpleToken] [[BeginToken]
+C[StringToken]([BeginToken])[SimpleToken],[SimpleToken]
+C[StringToken]([BeginToken])[SimpleToken],[SimpleToken]
+C[StringToken]([BeginToken])[SimpleToken],[SimpleToken]
+][SimpleToken])[SimpleToken],[SimpleToken]
+C[StringToken]([BeginToken])[SimpleToken],[SimpleToken]
+C[StringToken]([BeginToken])[SimpleToken],[SimpleToken]
+][SimpleToken],[SimpleToken]
+)[SimpleToken];[SimpleToken]
+}[SimpleToken]
+}[SimpleToken]
+
+class[KeywordToken] D[StringToken] {[BeginToken]
+D[StringToken]([BeginToken]{[BeginToken]d[StringToken]}[SimpleToken])[SimpleToken];[SimpleToken]
+D[StringToken] m[StringToken]([BeginToken])[SimpleToken] {[BeginToken]
+return[KeywordToken] D[StringToken]([BeginToken]
+d[StringToken]:[SimpleToken] [[BeginToken]
+D[StringToken]([BeginToken]d[StringToken]:[SimpleToken]
+D[StringToken]([BeginToken])[SimpleToken],[SimpleToken]
+D[StringToken]([BeginToken])[SimpleToken],[SimpleToken]
+D[StringToken]([BeginToken])[SimpleToken],[SimpleToken]
+][SimpleToken])[SimpleToken],[SimpleToken]
+D[StringToken]([BeginToken])[SimpleToken],[SimpleToken]
+D[StringToken]([BeginToken])[SimpleToken],[SimpleToken]
+][SimpleToken],[SimpleToken]
+)[SimpleToken];[SimpleToken]
+}[SimpleToken]
+}[SimpleToken][SimpleToken]
diff --git a/pkg/front_end/parser_testcases/error_recovery/bracket_mismatch_02.dart b/pkg/front_end/parser_testcases/error_recovery/bracket_mismatch_02.dart
new file mode 100644
index 0000000..b41c15b
--- /dev/null
+++ b/pkg/front_end/parser_testcases/error_recovery/bracket_mismatch_02.dart
@@ -0,0 +1,3 @@
+void foo() {
+  {[};
+}
\ No newline at end of file
diff --git a/pkg/front_end/parser_testcases/error_recovery/bracket_mismatch_02.dart.expect b/pkg/front_end/parser_testcases/error_recovery/bracket_mismatch_02.dart.expect
new file mode 100644
index 0000000..8031306
--- /dev/null
+++ b/pkg/front_end/parser_testcases/error_recovery/bracket_mismatch_02.dart.expect
@@ -0,0 +1,35 @@
+Problems reported:
+
+parser/error_recovery/bracket_mismatch_02:2:4: Expected ';' after this.
+  {[};
+   ^
+
+parser/error_recovery/bracket_mismatch_02:2:4: Can't find ']' to match '['.
+  {[};
+   ^
+
+beginCompilationUnit(void)
+  beginMetadataStar(void)
+  endMetadataStar(0)
+  beginTopLevelMember(void)
+    beginTopLevelMethod(UnmatchedToken([), null)
+      handleVoidKeyword(void)
+      handleIdentifier(foo, topLevelFunctionDeclaration)
+      handleNoTypeVariables(()
+      beginFormalParameters((, MemberKind.TopLevelMethod)
+      endFormalParameters(0, (, ), MemberKind.TopLevelMethod)
+      handleAsyncModifier(null, null)
+      beginBlockFunctionBody({)
+        beginBlock({, BlockKind(statement))
+          handleNoTypeArguments([)
+          handleLiteralList(0, [, null, ])
+          handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], [, [)
+          handleExpressionStatement(;)
+        endBlock(1, {, }, BlockKind(statement))
+        handleEmptyStatement(;)
+      endBlockFunctionBody(2, {, })
+    endTopLevelMethod(void, null, })
+  endTopLevelDeclaration()
+  handleErrorToken(UnmatchedToken([))
+  handleRecoverableError(Message[UnmatchedToken, Can't find ']' to match '['., null, {string: ], token: [}], UnmatchedToken([), UnmatchedToken([))
+endCompilationUnit(1, )
diff --git a/pkg/front_end/parser_testcases/error_recovery/bracket_mismatch_02.dart.intertwined.expect b/pkg/front_end/parser_testcases/error_recovery/bracket_mismatch_02.dart.intertwined.expect
new file mode 100644
index 0000000..e1b6a96
--- /dev/null
+++ b/pkg/front_end/parser_testcases/error_recovery/bracket_mismatch_02.dart.intertwined.expect
@@ -0,0 +1,67 @@
+parseUnit(UnmatchedToken([))
+  skipErrorTokens(UnmatchedToken([))
+  listener: beginCompilationUnit(void)
+  syntheticPreviousToken(void)
+  parseTopLevelDeclarationImpl(UnmatchedToken([), Instance of 'DirectiveContext')
+    parseMetadataStar(UnmatchedToken([))
+      listener: beginMetadataStar(void)
+      listener: endMetadataStar(0)
+    parseTopLevelMemberImpl(UnmatchedToken([))
+      listener: beginTopLevelMember(void)
+      parseTopLevelMethod(UnmatchedToken([), null, UnmatchedToken([), Instance of 'VoidType', null, foo, false)
+        listener: beginTopLevelMethod(UnmatchedToken([), null)
+        listener: handleVoidKeyword(void)
+        ensureIdentifierPotentiallyRecovered(void, topLevelFunctionDeclaration, false)
+          listener: handleIdentifier(foo, topLevelFunctionDeclaration)
+        parseMethodTypeVar(foo)
+          listener: handleNoTypeVariables(()
+        parseGetterOrFormalParameters(foo, foo, false, MemberKind.TopLevelMethod)
+          parseFormalParameters(foo, MemberKind.TopLevelMethod)
+            parseFormalParametersRest((, MemberKind.TopLevelMethod)
+              listener: beginFormalParameters((, MemberKind.TopLevelMethod)
+              listener: endFormalParameters(0, (, ), MemberKind.TopLevelMethod)
+        parseAsyncModifierOpt())
+          listener: handleAsyncModifier(null, null)
+          inPlainSync()
+        parseFunctionBody(), false, false)
+          listener: beginBlockFunctionBody({)
+          notEofOrValue(}, {)
+          parseStatement({)
+            parseStatementX({)
+              parseBlock({, BlockKind(statement))
+                ensureBlock({, null, null)
+                listener: beginBlock({, BlockKind(statement))
+                notEofOrValue(}, [)
+                parseStatement({)
+                  parseStatementX({)
+                    parseExpressionStatementOrDeclaration({, false)
+                      parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+                        looksLikeLocalFunction([)
+                        parseExpressionStatement({)
+                          parseExpression({)
+                            parsePrecedenceExpression({, 1, true)
+                              parseUnaryExpression({, true)
+                                parsePrimary({, expression)
+                                  listener: handleNoTypeArguments([)
+                                  parseLiteralListSuffix({, null)
+                                    listener: handleLiteralList(0, [, null, ])
+                          ensureSemicolon(])
+                            reportRecoverableError([, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+                              listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], [, [)
+                            rewriter()
+                          listener: handleExpressionStatement(;)
+                notEofOrValue(}, })
+                listener: endBlock(1, {, }, BlockKind(statement))
+          notEofOrValue(}, ;)
+          parseStatement(})
+            parseStatementX(})
+              parseEmptyStatement(})
+                listener: handleEmptyStatement(;)
+          notEofOrValue(}, })
+          listener: endBlockFunctionBody(2, {, })
+        listener: endTopLevelMethod(void, null, })
+  listener: endTopLevelDeclaration()
+  reportAllErrorTokens(UnmatchedToken([))
+    listener: handleErrorToken(UnmatchedToken([))
+    listener: handleRecoverableError(Message[UnmatchedToken, Can't find ']' to match '['., null, {string: ], token: [}], UnmatchedToken([), UnmatchedToken([))
+  listener: endCompilationUnit(1, )
diff --git a/pkg/front_end/parser_testcases/error_recovery/bracket_mismatch_02.dart.parser.expect b/pkg/front_end/parser_testcases/error_recovery/bracket_mismatch_02.dart.parser.expect
new file mode 100644
index 0000000..fc7d4e8
--- /dev/null
+++ b/pkg/front_end/parser_testcases/error_recovery/bracket_mismatch_02.dart.parser.expect
@@ -0,0 +1,9 @@
+NOTICE: Stream was rewritten by parser!
+
+void foo() {
+{[];};
+}
+
+[UnmatchedToken]void[KeywordToken] foo[StringToken]([BeginToken])[SimpleToken] {[BeginToken]
+{[BeginToken][[BeginToken]][SyntheticToken];[SyntheticToken]}[SimpleToken];[SimpleToken]
+}[SimpleToken][SimpleToken]
diff --git a/pkg/front_end/parser_testcases/error_recovery/bracket_mismatch_02.dart.scanner.expect b/pkg/front_end/parser_testcases/error_recovery/bracket_mismatch_02.dart.scanner.expect
new file mode 100644
index 0000000..70fa686
--- /dev/null
+++ b/pkg/front_end/parser_testcases/error_recovery/bracket_mismatch_02.dart.scanner.expect
@@ -0,0 +1,7 @@
+void foo() {
+{[]};
+}
+
+[UnmatchedToken]void[KeywordToken] foo[StringToken]([BeginToken])[SimpleToken] {[BeginToken]
+{[BeginToken][[BeginToken]][SyntheticToken]}[SimpleToken];[SimpleToken]
+}[SimpleToken][SimpleToken]
diff --git a/pkg/front_end/parser_testcases/error_recovery/bracket_mismatch_03.dart b/pkg/front_end/parser_testcases/error_recovery/bracket_mismatch_03.dart
new file mode 100644
index 0000000..a2eed43
--- /dev/null
+++ b/pkg/front_end/parser_testcases/error_recovery/bracket_mismatch_03.dart
@@ -0,0 +1,3 @@
+void foo() {
+  {foo());}
+}
\ No newline at end of file
diff --git a/pkg/front_end/parser_testcases/error_recovery/bracket_mismatch_03.dart.expect b/pkg/front_end/parser_testcases/error_recovery/bracket_mismatch_03.dart.expect
new file mode 100644
index 0000000..8f34cb0
--- /dev/null
+++ b/pkg/front_end/parser_testcases/error_recovery/bracket_mismatch_03.dart.expect
@@ -0,0 +1,52 @@
+Problems reported:
+
+parser/error_recovery/bracket_mismatch_03:2:8: Expected ';' after this.
+  {foo());}
+       ^
+
+parser/error_recovery/bracket_mismatch_03:2:9: Expected an identifier, but got ')'.
+  {foo());}
+        ^
+
+parser/error_recovery/bracket_mismatch_03:2:9: Expected ';' after this.
+  {foo());}
+        ^
+
+parser/error_recovery/bracket_mismatch_03:2:9: Unexpected token ')'.
+  {foo());}
+        ^
+
+beginCompilationUnit(void)
+  beginMetadataStar(void)
+  endMetadataStar(0)
+  beginTopLevelMember(void)
+    beginTopLevelMethod(, null)
+      handleVoidKeyword(void)
+      handleIdentifier(foo, topLevelFunctionDeclaration)
+      handleNoTypeVariables(()
+      beginFormalParameters((, MemberKind.TopLevelMethod)
+      endFormalParameters(0, (, ), MemberKind.TopLevelMethod)
+      handleAsyncModifier(null, null)
+      beginBlockFunctionBody({)
+        beginBlock({, BlockKind(statement))
+          handleIdentifier(foo, expression)
+          handleNoTypeArguments(()
+          beginArguments(()
+          endArguments(0, (, ))
+          handleSend(foo, ))
+          handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], ), ))
+          handleExpressionStatement(;)
+          handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got ')'., null, {token: )}], ), ))
+          handleIdentifier(, expression)
+          handleNoTypeArguments())
+          handleNoArguments())
+          handleSend(, ))
+          handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], ), ))
+          handleExpressionStatement(;)
+          handleRecoverableError(Message[UnexpectedToken, Unexpected token ')'., null, {token: )}], ), ))
+          handleEmptyStatement(;)
+        endBlock(3, {, }, BlockKind(statement))
+      endBlockFunctionBody(1, {, })
+    endTopLevelMethod(void, null, })
+  endTopLevelDeclaration()
+endCompilationUnit(1, )
diff --git a/pkg/front_end/parser_testcases/error_recovery/bracket_mismatch_03.dart.intertwined.expect b/pkg/front_end/parser_testcases/error_recovery/bracket_mismatch_03.dart.intertwined.expect
new file mode 100644
index 0000000..9828c2f
--- /dev/null
+++ b/pkg/front_end/parser_testcases/error_recovery/bracket_mismatch_03.dart.intertwined.expect
@@ -0,0 +1,101 @@
+parseUnit(void)
+  skipErrorTokens(void)
+  listener: beginCompilationUnit(void)
+  syntheticPreviousToken(void)
+  parseTopLevelDeclarationImpl(, Instance of 'DirectiveContext')
+    parseMetadataStar()
+      listener: beginMetadataStar(void)
+      listener: endMetadataStar(0)
+    parseTopLevelMemberImpl()
+      listener: beginTopLevelMember(void)
+      parseTopLevelMethod(, null, , Instance of 'VoidType', null, foo, false)
+        listener: beginTopLevelMethod(, null)
+        listener: handleVoidKeyword(void)
+        ensureIdentifierPotentiallyRecovered(void, topLevelFunctionDeclaration, false)
+          listener: handleIdentifier(foo, topLevelFunctionDeclaration)
+        parseMethodTypeVar(foo)
+          listener: handleNoTypeVariables(()
+        parseGetterOrFormalParameters(foo, foo, false, MemberKind.TopLevelMethod)
+          parseFormalParameters(foo, MemberKind.TopLevelMethod)
+            parseFormalParametersRest((, MemberKind.TopLevelMethod)
+              listener: beginFormalParameters((, MemberKind.TopLevelMethod)
+              listener: endFormalParameters(0, (, ), MemberKind.TopLevelMethod)
+        parseAsyncModifierOpt())
+          listener: handleAsyncModifier(null, null)
+          inPlainSync()
+        parseFunctionBody(), false, false)
+          listener: beginBlockFunctionBody({)
+          notEofOrValue(}, {)
+          parseStatement({)
+            parseStatementX({)
+              parseBlock({, BlockKind(statement))
+                ensureBlock({, null, null)
+                listener: beginBlock({, BlockKind(statement))
+                notEofOrValue(}, foo)
+                parseStatement({)
+                  parseStatementX({)
+                    parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+                      looksLikeLocalFunction(foo)
+                      parseExpressionStatement({)
+                        parseExpression({)
+                          parsePrecedenceExpression({, 1, true)
+                            parseUnaryExpression({, true)
+                              parsePrimary({, expression)
+                                parseSendOrFunctionLiteral({, expression)
+                                  looksLikeFunctionBody())
+                                  parseSend({, expression)
+                                    ensureIdentifier({, expression)
+                                      listener: handleIdentifier(foo, expression)
+                                    listener: handleNoTypeArguments(()
+                                    parseArgumentsOpt(foo)
+                                      parseArguments(foo)
+                                        parseArgumentsRest(()
+                                          listener: beginArguments(()
+                                          listener: endArguments(0, (, ))
+                                    listener: handleSend(foo, ))
+                        ensureSemicolon())
+                          reportRecoverableError(), Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+                            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], ), ))
+                          rewriter()
+                        listener: handleExpressionStatement(;)
+                notEofOrValue(}, ))
+                parseStatement(;)
+                  parseStatementX(;)
+                    parseExpressionStatementOrDeclaration(;, false)
+                      parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+                        looksLikeLocalFunction())
+                        parseExpressionStatement(;)
+                          parseExpression(;)
+                            parsePrecedenceExpression(;, 1, true)
+                              parseUnaryExpression(;, true)
+                                parsePrimary(;, expression)
+                                  parseSend(;, expression)
+                                    ensureIdentifier(;, expression)
+                                      reportRecoverableErrorWithToken(), Instance of 'Template<(Token) => Message>')
+                                        listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got ')'., null, {token: )}], ), ))
+                                      rewriter()
+                                      listener: handleIdentifier(, expression)
+                                    listener: handleNoTypeArguments())
+                                    parseArgumentsOpt()
+                                      listener: handleNoArguments())
+                                    listener: handleSend(, ))
+                          ensureSemicolon()
+                            reportRecoverableError(, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+                              listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], ), ))
+                            rewriter()
+                          listener: handleExpressionStatement(;)
+                reportRecoverableError(), Message[UnexpectedToken, Unexpected token ')'., null, {token: )}])
+                  listener: handleRecoverableError(Message[UnexpectedToken, Unexpected token ')'., null, {token: )}], ), ))
+                notEofOrValue(}, ;)
+                parseStatement())
+                  parseStatementX())
+                    parseEmptyStatement())
+                      listener: handleEmptyStatement(;)
+                notEofOrValue(}, })
+                listener: endBlock(3, {, }, BlockKind(statement))
+          notEofOrValue(}, })
+          listener: endBlockFunctionBody(1, {, })
+        listener: endTopLevelMethod(void, null, })
+  listener: endTopLevelDeclaration()
+  reportAllErrorTokens(void)
+  listener: endCompilationUnit(1, )
diff --git a/pkg/front_end/parser_testcases/error_recovery/bracket_mismatch_03.dart.parser.expect b/pkg/front_end/parser_testcases/error_recovery/bracket_mismatch_03.dart.parser.expect
new file mode 100644
index 0000000..b435d9f
--- /dev/null
+++ b/pkg/front_end/parser_testcases/error_recovery/bracket_mismatch_03.dart.parser.expect
@@ -0,0 +1,9 @@
+NOTICE: Stream was rewritten by parser!
+
+void foo() {
+{foo();;);}
+}
+
+void[KeywordToken] foo[StringToken]([BeginToken])[SimpleToken] {[BeginToken]
+{[BeginToken]foo[StringToken]([BeginToken])[SimpleToken];[SyntheticToken][SyntheticStringToken];[SyntheticToken])[SimpleToken];[SimpleToken]}[SimpleToken]
+}[SimpleToken][SimpleToken]
diff --git a/pkg/front_end/parser_testcases/error_recovery/bracket_mismatch_03.dart.scanner.expect b/pkg/front_end/parser_testcases/error_recovery/bracket_mismatch_03.dart.scanner.expect
new file mode 100644
index 0000000..e4cf4ed
--- /dev/null
+++ b/pkg/front_end/parser_testcases/error_recovery/bracket_mismatch_03.dart.scanner.expect
@@ -0,0 +1,7 @@
+void foo() {
+{foo());}
+}
+
+void[KeywordToken] foo[StringToken]([BeginToken])[SimpleToken] {[BeginToken]
+{[BeginToken]foo[StringToken]([BeginToken])[SimpleToken])[SimpleToken];[SimpleToken]}[SimpleToken]
+}[SimpleToken][SimpleToken]
diff --git a/pkg/front_end/parser_testcases/error_recovery/bracket_mismatch_04.dart b/pkg/front_end/parser_testcases/error_recovery/bracket_mismatch_04.dart
new file mode 100644
index 0000000..3015ad4
--- /dev/null
+++ b/pkg/front_end/parser_testcases/error_recovery/bracket_mismatch_04.dart
@@ -0,0 +1,3 @@
+void foo() {
+  foo(() {bar());});
+}
diff --git a/pkg/front_end/parser_testcases/error_recovery/bracket_mismatch_04.dart.expect b/pkg/front_end/parser_testcases/error_recovery/bracket_mismatch_04.dart.expect
new file mode 100644
index 0000000..650a4a0
--- /dev/null
+++ b/pkg/front_end/parser_testcases/error_recovery/bracket_mismatch_04.dart.expect
@@ -0,0 +1,64 @@
+Problems reported:
+
+parser/error_recovery/bracket_mismatch_04:2:15: Expected ';' after this.
+  foo(() {bar());});
+              ^
+
+parser/error_recovery/bracket_mismatch_04:2:16: Expected an identifier, but got ')'.
+  foo(() {bar());});
+               ^
+
+parser/error_recovery/bracket_mismatch_04:2:16: Expected ';' after this.
+  foo(() {bar());});
+               ^
+
+parser/error_recovery/bracket_mismatch_04:2:16: Unexpected token ';'.
+  foo(() {bar());});
+               ^
+
+beginCompilationUnit(void)
+  beginMetadataStar(void)
+  endMetadataStar(0)
+  beginTopLevelMember(void)
+    beginTopLevelMethod(, null)
+      handleVoidKeyword(void)
+      handleIdentifier(foo, topLevelFunctionDeclaration)
+      handleNoTypeVariables(()
+      beginFormalParameters((, MemberKind.TopLevelMethod)
+      endFormalParameters(0, (, ), MemberKind.TopLevelMethod)
+      handleAsyncModifier(null, null)
+      beginBlockFunctionBody({)
+        handleIdentifier(foo, expression)
+        handleNoTypeArguments(()
+        beginArguments(()
+          handleNoTypeVariables(()
+          beginFunctionExpression(()
+            beginFormalParameters((, MemberKind.Local)
+            endFormalParameters(0, (, ), MemberKind.Local)
+            handleAsyncModifier(null, null)
+            beginBlockFunctionBody({)
+              handleIdentifier(bar, expression)
+              handleNoTypeArguments(()
+              beginArguments(()
+              endArguments(0, (, ))
+              handleSend(bar, ))
+              handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], ), ))
+              handleExpressionStatement(;)
+              handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got ')'., null, {token: )}], ), ))
+              handleIdentifier(, expression)
+              handleNoTypeArguments())
+              handleNoArguments())
+              handleSend(, ))
+              handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], ), ))
+              handleExpressionStatement(;)
+              handleRecoverableError(Message[UnexpectedToken, Unexpected token ';'., null, {token: ;}], ), ))
+              handleEmptyStatement(;)
+            endBlockFunctionBody(3, {, })
+          endFunctionExpression((, ))
+        endArguments(1, (, ))
+        handleSend(foo, ;)
+        handleExpressionStatement(;)
+      endBlockFunctionBody(1, {, })
+    endTopLevelMethod(void, null, })
+  endTopLevelDeclaration()
+endCompilationUnit(1, )
diff --git a/pkg/front_end/parser_testcases/error_recovery/bracket_mismatch_04.dart.intertwined.expect b/pkg/front_end/parser_testcases/error_recovery/bracket_mismatch_04.dart.intertwined.expect
new file mode 100644
index 0000000..37ece75
--- /dev/null
+++ b/pkg/front_end/parser_testcases/error_recovery/bracket_mismatch_04.dart.intertwined.expect
@@ -0,0 +1,138 @@
+parseUnit(void)
+  skipErrorTokens(void)
+  listener: beginCompilationUnit(void)
+  syntheticPreviousToken(void)
+  parseTopLevelDeclarationImpl(, Instance of 'DirectiveContext')
+    parseMetadataStar()
+      listener: beginMetadataStar(void)
+      listener: endMetadataStar(0)
+    parseTopLevelMemberImpl()
+      listener: beginTopLevelMember(void)
+      parseTopLevelMethod(, null, , Instance of 'VoidType', null, foo, false)
+        listener: beginTopLevelMethod(, null)
+        listener: handleVoidKeyword(void)
+        ensureIdentifierPotentiallyRecovered(void, topLevelFunctionDeclaration, false)
+          listener: handleIdentifier(foo, topLevelFunctionDeclaration)
+        parseMethodTypeVar(foo)
+          listener: handleNoTypeVariables(()
+        parseGetterOrFormalParameters(foo, foo, false, MemberKind.TopLevelMethod)
+          parseFormalParameters(foo, MemberKind.TopLevelMethod)
+            parseFormalParametersRest((, MemberKind.TopLevelMethod)
+              listener: beginFormalParameters((, MemberKind.TopLevelMethod)
+              listener: endFormalParameters(0, (, ), MemberKind.TopLevelMethod)
+        parseAsyncModifierOpt())
+          listener: handleAsyncModifier(null, null)
+          inPlainSync()
+        parseFunctionBody(), false, false)
+          listener: beginBlockFunctionBody({)
+          notEofOrValue(}, foo)
+          parseStatement({)
+            parseStatementX({)
+              parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+                looksLikeLocalFunction(foo)
+                parseExpressionStatement({)
+                  parseExpression({)
+                    parsePrecedenceExpression({, 1, true)
+                      parseUnaryExpression({, true)
+                        parsePrimary({, expression)
+                          parseSendOrFunctionLiteral({, expression)
+                            looksLikeFunctionBody(;)
+                            parseSend({, expression)
+                              ensureIdentifier({, expression)
+                                listener: handleIdentifier(foo, expression)
+                              listener: handleNoTypeArguments(()
+                              parseArgumentsOpt(foo)
+                                parseArguments(foo)
+                                  parseArgumentsRest(()
+                                    listener: beginArguments(()
+                                    parseExpression(()
+                                      parsePrecedenceExpression((, 1, true)
+                                        parseUnaryExpression((, true)
+                                          parsePrimary((, expression)
+                                            parseParenthesizedExpressionOrFunctionLiteral(()
+                                              listener: handleNoTypeVariables(()
+                                              parseFunctionExpression(()
+                                                listener: beginFunctionExpression(()
+                                                parseFormalParametersRequiredOpt((, MemberKind.Local)
+                                                  parseFormalParametersRest((, MemberKind.Local)
+                                                    listener: beginFormalParameters((, MemberKind.Local)
+                                                    listener: endFormalParameters(0, (, ), MemberKind.Local)
+                                                parseAsyncOptBody(), true, false)
+                                                  parseAsyncModifierOpt())
+                                                    listener: handleAsyncModifier(null, null)
+                                                    inPlainSync()
+                                                  parseFunctionBody(), true, false)
+                                                    listener: beginBlockFunctionBody({)
+                                                    notEofOrValue(}, bar)
+                                                    parseStatement({)
+                                                      parseStatementX({)
+                                                        parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+                                                          looksLikeLocalFunction(bar)
+                                                          parseExpressionStatement({)
+                                                            parseExpression({)
+                                                              parsePrecedenceExpression({, 1, true)
+                                                                parseUnaryExpression({, true)
+                                                                  parsePrimary({, expression)
+                                                                    parseSendOrFunctionLiteral({, expression)
+                                                                      looksLikeFunctionBody())
+                                                                      parseSend({, expression)
+                                                                        ensureIdentifier({, expression)
+                                                                          listener: handleIdentifier(bar, expression)
+                                                                        listener: handleNoTypeArguments(()
+                                                                        parseArgumentsOpt(bar)
+                                                                          parseArguments(bar)
+                                                                            parseArgumentsRest(()
+                                                                              listener: beginArguments(()
+                                                                              listener: endArguments(0, (, ))
+                                                                        listener: handleSend(bar, ))
+                                                            ensureSemicolon())
+                                                              reportRecoverableError(), Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+                                                                listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], ), ))
+                                                              rewriter()
+                                                            listener: handleExpressionStatement(;)
+                                                    notEofOrValue(}, ))
+                                                    parseStatement(;)
+                                                      parseStatementX(;)
+                                                        parseExpressionStatementOrDeclaration(;, false)
+                                                          parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+                                                            looksLikeLocalFunction())
+                                                            parseExpressionStatement(;)
+                                                              parseExpression(;)
+                                                                parsePrecedenceExpression(;, 1, true)
+                                                                  parseUnaryExpression(;, true)
+                                                                    parsePrimary(;, expression)
+                                                                      parseSend(;, expression)
+                                                                        ensureIdentifier(;, expression)
+                                                                          reportRecoverableErrorWithToken(), Instance of 'Template<(Token) => Message>')
+                                                                            listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got ')'., null, {token: )}], ), ))
+                                                                          rewriter()
+                                                                          listener: handleIdentifier(, expression)
+                                                                        listener: handleNoTypeArguments())
+                                                                        parseArgumentsOpt()
+                                                                          listener: handleNoArguments())
+                                                                        listener: handleSend(, ))
+                                                              ensureSemicolon()
+                                                                reportRecoverableError(, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+                                                                  listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], ), ))
+                                                                rewriter()
+                                                              listener: handleExpressionStatement(;)
+                                                    reportRecoverableError(;, Message[UnexpectedToken, Unexpected token ';'., null, {token: ;}])
+                                                      listener: handleRecoverableError(Message[UnexpectedToken, Unexpected token ';'., null, {token: ;}], ), ))
+                                                    notEofOrValue(}, ;)
+                                                    parseStatement())
+                                                      parseStatementX())
+                                                        parseEmptyStatement())
+                                                          listener: handleEmptyStatement(;)
+                                                    notEofOrValue(}, })
+                                                    listener: endBlockFunctionBody(3, {, })
+                                                listener: endFunctionExpression((, ))
+                                    listener: endArguments(1, (, ))
+                              listener: handleSend(foo, ;)
+                  ensureSemicolon())
+                  listener: handleExpressionStatement(;)
+          notEofOrValue(}, })
+          listener: endBlockFunctionBody(1, {, })
+        listener: endTopLevelMethod(void, null, })
+  listener: endTopLevelDeclaration()
+  reportAllErrorTokens(void)
+  listener: endCompilationUnit(1, )
diff --git a/pkg/front_end/parser_testcases/error_recovery/bracket_mismatch_04.dart.parser.expect b/pkg/front_end/parser_testcases/error_recovery/bracket_mismatch_04.dart.parser.expect
new file mode 100644
index 0000000..5106907
--- /dev/null
+++ b/pkg/front_end/parser_testcases/error_recovery/bracket_mismatch_04.dart.parser.expect
@@ -0,0 +1,11 @@
+NOTICE: Stream was rewritten by parser!
+
+void foo() {
+foo(() {bar();;);});
+}
+
+
+void[KeywordToken] foo[StringToken]([BeginToken])[SimpleToken] {[BeginToken]
+foo[StringToken]([BeginToken]([BeginToken])[SimpleToken] {[BeginToken]bar[StringToken]([BeginToken])[SimpleToken];[SyntheticToken][SyntheticStringToken];[SyntheticToken])[SimpleToken];[SimpleToken]}[SimpleToken])[SimpleToken];[SimpleToken]
+}[SimpleToken]
+[SimpleToken]
diff --git a/pkg/front_end/parser_testcases/error_recovery/bracket_mismatch_04.dart.scanner.expect b/pkg/front_end/parser_testcases/error_recovery/bracket_mismatch_04.dart.scanner.expect
new file mode 100644
index 0000000..52503ac
--- /dev/null
+++ b/pkg/front_end/parser_testcases/error_recovery/bracket_mismatch_04.dart.scanner.expect
@@ -0,0 +1,9 @@
+void foo() {
+foo(() {bar());});
+}
+
+
+void[KeywordToken] foo[StringToken]([BeginToken])[SimpleToken] {[BeginToken]
+foo[StringToken]([BeginToken]([BeginToken])[SimpleToken] {[BeginToken]bar[StringToken]([BeginToken])[SimpleToken])[SimpleToken];[SimpleToken]}[SimpleToken])[SimpleToken];[SimpleToken]
+}[SimpleToken]
+[SimpleToken]
diff --git a/pkg/front_end/parser_testcases/error_recovery/bracket_mismatch_05.dart b/pkg/front_end/parser_testcases/error_recovery/bracket_mismatch_05.dart
new file mode 100644
index 0000000..fcaf975
--- /dev/null
+++ b/pkg/front_end/parser_testcases/error_recovery/bracket_mismatch_05.dart
@@ -0,0 +1,3 @@
+void foo() {
+  {[1};
+}
\ No newline at end of file
diff --git a/pkg/front_end/parser_testcases/error_recovery/bracket_mismatch_05.dart.expect b/pkg/front_end/parser_testcases/error_recovery/bracket_mismatch_05.dart.expect
new file mode 100644
index 0000000..cbe4515
--- /dev/null
+++ b/pkg/front_end/parser_testcases/error_recovery/bracket_mismatch_05.dart.expect
@@ -0,0 +1,36 @@
+Problems reported:
+
+parser/error_recovery/bracket_mismatch_05:2:5: Expected ';' after this.
+  {[1};
+    ^
+
+parser/error_recovery/bracket_mismatch_05:2:4: Can't find ']' to match '['.
+  {[1};
+   ^
+
+beginCompilationUnit(void)
+  beginMetadataStar(void)
+  endMetadataStar(0)
+  beginTopLevelMember(void)
+    beginTopLevelMethod(UnmatchedToken([), null)
+      handleVoidKeyword(void)
+      handleIdentifier(foo, topLevelFunctionDeclaration)
+      handleNoTypeVariables(()
+      beginFormalParameters((, MemberKind.TopLevelMethod)
+      endFormalParameters(0, (, ), MemberKind.TopLevelMethod)
+      handleAsyncModifier(null, null)
+      beginBlockFunctionBody({)
+        beginBlock({, BlockKind(statement))
+          handleNoTypeArguments([)
+          handleLiteralInt(1)
+          handleLiteralList(1, [, null, ])
+          handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], 1, 1)
+          handleExpressionStatement(;)
+        endBlock(1, {, }, BlockKind(statement))
+        handleEmptyStatement(;)
+      endBlockFunctionBody(2, {, })
+    endTopLevelMethod(void, null, })
+  endTopLevelDeclaration()
+  handleErrorToken(UnmatchedToken([))
+  handleRecoverableError(Message[UnmatchedToken, Can't find ']' to match '['., null, {string: ], token: [}], UnmatchedToken([), UnmatchedToken([))
+endCompilationUnit(1, )
diff --git a/pkg/front_end/parser_testcases/error_recovery/bracket_mismatch_05.dart.intertwined.expect b/pkg/front_end/parser_testcases/error_recovery/bracket_mismatch_05.dart.intertwined.expect
new file mode 100644
index 0000000..3bc07e7
--- /dev/null
+++ b/pkg/front_end/parser_testcases/error_recovery/bracket_mismatch_05.dart.intertwined.expect
@@ -0,0 +1,73 @@
+parseUnit(UnmatchedToken([))
+  skipErrorTokens(UnmatchedToken([))
+  listener: beginCompilationUnit(void)
+  syntheticPreviousToken(void)
+  parseTopLevelDeclarationImpl(UnmatchedToken([), Instance of 'DirectiveContext')
+    parseMetadataStar(UnmatchedToken([))
+      listener: beginMetadataStar(void)
+      listener: endMetadataStar(0)
+    parseTopLevelMemberImpl(UnmatchedToken([))
+      listener: beginTopLevelMember(void)
+      parseTopLevelMethod(UnmatchedToken([), null, UnmatchedToken([), Instance of 'VoidType', null, foo, false)
+        listener: beginTopLevelMethod(UnmatchedToken([), null)
+        listener: handleVoidKeyword(void)
+        ensureIdentifierPotentiallyRecovered(void, topLevelFunctionDeclaration, false)
+          listener: handleIdentifier(foo, topLevelFunctionDeclaration)
+        parseMethodTypeVar(foo)
+          listener: handleNoTypeVariables(()
+        parseGetterOrFormalParameters(foo, foo, false, MemberKind.TopLevelMethod)
+          parseFormalParameters(foo, MemberKind.TopLevelMethod)
+            parseFormalParametersRest((, MemberKind.TopLevelMethod)
+              listener: beginFormalParameters((, MemberKind.TopLevelMethod)
+              listener: endFormalParameters(0, (, ), MemberKind.TopLevelMethod)
+        parseAsyncModifierOpt())
+          listener: handleAsyncModifier(null, null)
+          inPlainSync()
+        parseFunctionBody(), false, false)
+          listener: beginBlockFunctionBody({)
+          notEofOrValue(}, {)
+          parseStatement({)
+            parseStatementX({)
+              parseBlock({, BlockKind(statement))
+                ensureBlock({, null, null)
+                listener: beginBlock({, BlockKind(statement))
+                notEofOrValue(}, [)
+                parseStatement({)
+                  parseStatementX({)
+                    parseExpressionStatementOrDeclaration({, false)
+                      parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+                        looksLikeLocalFunction([)
+                        parseExpressionStatement({)
+                          parseExpression({)
+                            parsePrecedenceExpression({, 1, true)
+                              parseUnaryExpression({, true)
+                                parsePrimary({, expression)
+                                  listener: handleNoTypeArguments([)
+                                  parseLiteralListSuffix({, null)
+                                    parseExpression([)
+                                      parsePrecedenceExpression([, 1, true)
+                                        parseUnaryExpression([, true)
+                                          parsePrimary([, expression)
+                                            parseLiteralInt([)
+                                              listener: handleLiteralInt(1)
+                                    listener: handleLiteralList(1, [, null, ])
+                          ensureSemicolon(])
+                            reportRecoverableError(1, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+                              listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], 1, 1)
+                            rewriter()
+                          listener: handleExpressionStatement(;)
+                notEofOrValue(}, })
+                listener: endBlock(1, {, }, BlockKind(statement))
+          notEofOrValue(}, ;)
+          parseStatement(})
+            parseStatementX(})
+              parseEmptyStatement(})
+                listener: handleEmptyStatement(;)
+          notEofOrValue(}, })
+          listener: endBlockFunctionBody(2, {, })
+        listener: endTopLevelMethod(void, null, })
+  listener: endTopLevelDeclaration()
+  reportAllErrorTokens(UnmatchedToken([))
+    listener: handleErrorToken(UnmatchedToken([))
+    listener: handleRecoverableError(Message[UnmatchedToken, Can't find ']' to match '['., null, {string: ], token: [}], UnmatchedToken([), UnmatchedToken([))
+  listener: endCompilationUnit(1, )
diff --git a/pkg/front_end/parser_testcases/error_recovery/bracket_mismatch_05.dart.parser.expect b/pkg/front_end/parser_testcases/error_recovery/bracket_mismatch_05.dart.parser.expect
new file mode 100644
index 0000000..351fa55
--- /dev/null
+++ b/pkg/front_end/parser_testcases/error_recovery/bracket_mismatch_05.dart.parser.expect
@@ -0,0 +1,9 @@
+NOTICE: Stream was rewritten by parser!
+
+void foo() {
+{[1];};
+}
+
+[UnmatchedToken]void[KeywordToken] foo[StringToken]([BeginToken])[SimpleToken] {[BeginToken]
+{[BeginToken][[BeginToken]1[StringToken]][SyntheticToken];[SyntheticToken]}[SimpleToken];[SimpleToken]
+}[SimpleToken][SimpleToken]
diff --git a/pkg/front_end/parser_testcases/error_recovery/bracket_mismatch_05.dart.scanner.expect b/pkg/front_end/parser_testcases/error_recovery/bracket_mismatch_05.dart.scanner.expect
new file mode 100644
index 0000000..34e317f
--- /dev/null
+++ b/pkg/front_end/parser_testcases/error_recovery/bracket_mismatch_05.dart.scanner.expect
@@ -0,0 +1,7 @@
+void foo() {
+{[1]};
+}
+
+[UnmatchedToken]void[KeywordToken] foo[StringToken]([BeginToken])[SimpleToken] {[BeginToken]
+{[BeginToken][[BeginToken]1[StringToken]][SyntheticToken]}[SimpleToken];[SimpleToken]
+}[SimpleToken][SimpleToken]
diff --git a/pkg/front_end/parser_testcases/error_recovery/bracket_mismatch_06.dart b/pkg/front_end/parser_testcases/error_recovery/bracket_mismatch_06.dart
new file mode 100644
index 0000000..93ffb8f
--- /dev/null
+++ b/pkg/front_end/parser_testcases/error_recovery/bracket_mismatch_06.dart
@@ -0,0 +1,3 @@
+main() {
+  new C(;
+}
diff --git a/pkg/front_end/parser_testcases/error_recovery/bracket_mismatch_06.dart.expect b/pkg/front_end/parser_testcases/error_recovery/bracket_mismatch_06.dart.expect
new file mode 100644
index 0000000..82e783d
--- /dev/null
+++ b/pkg/front_end/parser_testcases/error_recovery/bracket_mismatch_06.dart.expect
@@ -0,0 +1,43 @@
+Problems reported:
+
+parser/error_recovery/bracket_mismatch_06:2:9: Expected an identifier, but got ';'.
+  new C(;
+        ^
+
+parser/error_recovery/bracket_mismatch_06:2:8: Can't find ')' to match '('.
+  new C(;
+       ^
+
+beginCompilationUnit(main)
+  beginMetadataStar(main)
+  endMetadataStar(0)
+  beginTopLevelMember(main)
+    beginTopLevelMethod(UnmatchedToken((), null)
+      handleNoType(UnmatchedToken(())
+      handleIdentifier(main, topLevelFunctionDeclaration)
+      handleNoTypeVariables(()
+      beginFormalParameters((, MemberKind.TopLevelMethod)
+      endFormalParameters(0, (, ), MemberKind.TopLevelMethod)
+      handleAsyncModifier(null, null)
+      beginBlockFunctionBody({)
+        beginNewExpression(new)
+          handleIdentifier(C, constructorReference)
+          beginConstructorReference(C)
+            handleNoTypeArguments(()
+            handleNoConstructorReferenceContinuationAfterTypeArguments(()
+          endConstructorReference(C, null, ()
+          beginArguments(()
+            handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got ';'., null, {token: ;}], ;, ;)
+            handleIdentifier(, expression)
+            handleNoTypeArguments(;)
+            handleNoArguments(;)
+            handleSend(, ;)
+          endArguments(1, (, ))
+        endNewExpression(new)
+        handleExpressionStatement(;)
+      endBlockFunctionBody(1, {, })
+    endTopLevelMethod(main, null, })
+  endTopLevelDeclaration()
+  handleErrorToken(UnmatchedToken(())
+  handleRecoverableError(Message[UnmatchedToken, Can't find ')' to match '('., null, {string: ), token: (}], UnmatchedToken((), UnmatchedToken(())
+endCompilationUnit(1, )
diff --git a/pkg/front_end/parser_testcases/error_recovery/bracket_mismatch_06.dart.intertwined.expect b/pkg/front_end/parser_testcases/error_recovery/bracket_mismatch_06.dart.intertwined.expect
new file mode 100644
index 0000000..e005b6c
--- /dev/null
+++ b/pkg/front_end/parser_testcases/error_recovery/bracket_mismatch_06.dart.intertwined.expect
@@ -0,0 +1,80 @@
+parseUnit(UnmatchedToken(())
+  skipErrorTokens(UnmatchedToken(())
+  listener: beginCompilationUnit(main)
+  syntheticPreviousToken(main)
+  parseTopLevelDeclarationImpl(UnmatchedToken((), Instance of 'DirectiveContext')
+    parseMetadataStar(UnmatchedToken(())
+      listener: beginMetadataStar(main)
+      listener: endMetadataStar(0)
+    parseTopLevelMemberImpl(UnmatchedToken(())
+      listener: beginTopLevelMember(main)
+      isReservedKeyword(()
+      parseTopLevelMethod(UnmatchedToken((), null, UnmatchedToken((), Instance of 'NoType', null, main, false)
+        listener: beginTopLevelMethod(UnmatchedToken((), null)
+        listener: handleNoType(UnmatchedToken(())
+        ensureIdentifierPotentiallyRecovered(UnmatchedToken((), topLevelFunctionDeclaration, false)
+          listener: handleIdentifier(main, topLevelFunctionDeclaration)
+        parseMethodTypeVar(main)
+          listener: handleNoTypeVariables(()
+        parseGetterOrFormalParameters(main, main, false, MemberKind.TopLevelMethod)
+          parseFormalParameters(main, MemberKind.TopLevelMethod)
+            parseFormalParametersRest((, MemberKind.TopLevelMethod)
+              listener: beginFormalParameters((, MemberKind.TopLevelMethod)
+              listener: endFormalParameters(0, (, ), MemberKind.TopLevelMethod)
+        parseAsyncModifierOpt())
+          listener: handleAsyncModifier(null, null)
+          inPlainSync()
+        parseFunctionBody(), false, false)
+          listener: beginBlockFunctionBody({)
+          notEofOrValue(}, new)
+          parseStatement({)
+            parseStatementX({)
+              parseExpressionStatementOrDeclaration({, false)
+                parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+                  looksLikeLocalFunction(new)
+                  parseExpressionStatement({)
+                    parseExpression({)
+                      parsePrecedenceExpression({, 1, true)
+                        parseUnaryExpression({, true)
+                          parsePrimary({, expression)
+                            parseNewExpression({)
+                              listener: beginNewExpression(new)
+                              parseConstructorReference(new, null)
+                                ensureIdentifier(new, constructorReference)
+                                  listener: handleIdentifier(C, constructorReference)
+                                listener: beginConstructorReference(C)
+                                parseQualifiedRestOpt(C, constructorReferenceContinuation)
+                                listener: handleNoTypeArguments(()
+                                listener: handleNoConstructorReferenceContinuationAfterTypeArguments(()
+                                listener: endConstructorReference(C, null, ()
+                              parseConstructorInvocationArguments(C)
+                                parseArgumentsRest(()
+                                  listener: beginArguments(()
+                                  parseExpression(()
+                                    parsePrecedenceExpression((, 1, true)
+                                      parseUnaryExpression((, true)
+                                        parsePrimary((, expression)
+                                          parseSend((, expression)
+                                            ensureIdentifier((, expression)
+                                              reportRecoverableErrorWithToken(;, Instance of 'Template<(Token) => Message>')
+                                                listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got ';'., null, {token: ;}], ;, ;)
+                                              rewriter()
+                                              listener: handleIdentifier(, expression)
+                                            listener: handleNoTypeArguments(;)
+                                            parseArgumentsOpt()
+                                              listener: handleNoArguments(;)
+                                            listener: handleSend(, ;)
+                                  ensureCloseParen(, ()
+                                    rewriter()
+                                  listener: endArguments(1, (, ))
+                              listener: endNewExpression(new)
+                    ensureSemicolon())
+                    listener: handleExpressionStatement(;)
+          notEofOrValue(}, })
+          listener: endBlockFunctionBody(1, {, })
+        listener: endTopLevelMethod(main, null, })
+  listener: endTopLevelDeclaration()
+  reportAllErrorTokens(UnmatchedToken(())
+    listener: handleErrorToken(UnmatchedToken(())
+    listener: handleRecoverableError(Message[UnmatchedToken, Can't find ')' to match '('., null, {string: ), token: (}], UnmatchedToken((), UnmatchedToken(())
+  listener: endCompilationUnit(1, )
diff --git a/pkg/front_end/parser_testcases/error_recovery/bracket_mismatch_06.dart.parser.expect b/pkg/front_end/parser_testcases/error_recovery/bracket_mismatch_06.dart.parser.expect
new file mode 100644
index 0000000..7750cc4
--- /dev/null
+++ b/pkg/front_end/parser_testcases/error_recovery/bracket_mismatch_06.dart.parser.expect
@@ -0,0 +1,11 @@
+NOTICE: Stream was rewritten by parser!
+
+main() {
+new C();
+}
+
+
+[UnmatchedToken]main[StringToken]([BeginToken])[SimpleToken] {[BeginToken]
+new[KeywordToken] C[StringToken]([BeginToken][SyntheticStringToken])[SyntheticToken];[SimpleToken]
+}[SimpleToken]
+[SimpleToken]
diff --git a/pkg/front_end/parser_testcases/error_recovery/bracket_mismatch_06.dart.scanner.expect b/pkg/front_end/parser_testcases/error_recovery/bracket_mismatch_06.dart.scanner.expect
new file mode 100644
index 0000000..f220583
--- /dev/null
+++ b/pkg/front_end/parser_testcases/error_recovery/bracket_mismatch_06.dart.scanner.expect
@@ -0,0 +1,9 @@
+main() {
+new C(;
+)}
+
+
+[UnmatchedToken]main[StringToken]([BeginToken])[SimpleToken] {[BeginToken]
+new[KeywordToken] C[StringToken]([BeginToken];[SimpleToken]
+)[SyntheticToken]}[SimpleToken]
+[SimpleToken]
diff --git a/pkg/front_end/parser_testcases/error_recovery/constructor_recovery_bad_name_general.crash_dart.intertwined.expect b/pkg/front_end/parser_testcases/error_recovery/constructor_recovery_bad_name_general.crash_dart.intertwined.expect
index f353af0..fec79f8 100644
--- a/pkg/front_end/parser_testcases/error_recovery/constructor_recovery_bad_name_general.crash_dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/error_recovery/constructor_recovery_bad_name_general.crash_dart.intertwined.expect
@@ -32,10 +32,11 @@
                 listener: beginMetadataStar(foo)
                 listener: endMetadataStar(0)
               listener: beginMember()
-              parseMethod({, null, null, null, null, null, {, Instance of 'NoType', null, foo, DeclarationKind.Class, Foo)
+              isReservedKeyword(.)
+              parseMethod({, null, null, null, null, null, {, Instance of 'NoType', null, foo, DeclarationKind.Class, Foo, false)
                 listener: beginMethod(null, null, null, null, null, foo)
                 listener: handleNoType({)
-                ensureIdentifier({, methodDeclaration)
+                ensureIdentifierPotentiallyRecovered({, methodDeclaration, false)
                   listener: handleIdentifier(foo, methodDeclaration)
                 parseQualifiedRestOpt(foo, methodDeclarationContinuation)
                   parseQualifiedRest(foo, methodDeclarationContinuation)
@@ -69,10 +70,11 @@
                 listener: beginMetadataStar(foo)
                 listener: endMetadataStar(0)
               listener: beginMember()
-              parseMethod(}, null, null, null, null, null, }, Instance of 'NoType', null, foo, DeclarationKind.Class, Foo)
+              isReservedKeyword(.)
+              parseMethod(}, null, null, null, null, null, }, Instance of 'NoType', null, foo, DeclarationKind.Class, Foo, false)
                 listener: beginMethod(null, null, null, null, null, foo)
                 listener: handleNoType(})
-                ensureIdentifier(}, methodDeclaration)
+                ensureIdentifierPotentiallyRecovered(}, methodDeclaration, false)
                   listener: handleIdentifier(foo, methodDeclaration)
                 parseQualifiedRestOpt(foo, methodDeclarationContinuation)
                   parseQualifiedRest(foo, methodDeclarationContinuation)
@@ -130,10 +132,11 @@
                 listener: beginMetadataStar(foo)
                 listener: endMetadataStar(0)
               listener: beginMember()
-              parseMethod(}, null, null, null, null, null, }, Instance of 'NoType', null, foo, DeclarationKind.Class, Foo)
+              isReservedKeyword(()
+              parseMethod(}, null, null, null, null, null, }, Instance of 'NoType', null, foo, DeclarationKind.Class, Foo, false)
                 listener: beginMethod(null, null, null, null, null, foo)
                 listener: handleNoType(})
-                ensureIdentifier(}, methodDeclaration)
+                ensureIdentifierPotentiallyRecovered(}, methodDeclaration, false)
                   listener: handleIdentifier(foo, methodDeclaration)
                 parseQualifiedRestOpt(foo, methodDeclarationContinuation)
                 parseMethodTypeVar(foo)
@@ -187,10 +190,10 @@
                 listener: beginMetadataStar(get)
                 listener: endMetadataStar(0)
               listener: beginMember()
-              parseMethod(}, null, null, null, null, null, }, Instance of 'NoType', get, Foo, DeclarationKind.Class, Foo)
+              parseMethod(}, null, null, null, null, null, }, Instance of 'NoType', get, Foo, DeclarationKind.Class, Foo, false)
                 listener: beginMethod(null, null, null, null, get, Foo)
                 listener: handleNoType(})
-                ensureIdentifier(get, methodDeclaration)
+                ensureIdentifierPotentiallyRecovered(get, methodDeclaration, false)
                   listener: handleIdentifier(Foo, methodDeclaration)
                 parseQualifiedRestOpt(Foo, methodDeclarationContinuation)
                 listener: handleNoTypeVariables(=>)
@@ -224,10 +227,10 @@
                 listener: beginMetadataStar(get)
                 listener: endMetadataStar(0)
               listener: beginMember()
-              parseMethod(;, null, null, null, null, null, ;, Instance of 'NoType', get, Foo, DeclarationKind.Class, Foo)
+              parseMethod(;, null, null, null, null, null, ;, Instance of 'NoType', get, Foo, DeclarationKind.Class, Foo, false)
                 listener: beginMethod(null, null, null, null, get, Foo)
                 listener: handleNoType(;)
-                ensureIdentifier(get, methodDeclaration)
+                ensureIdentifierPotentiallyRecovered(get, methodDeclaration, false)
                   listener: handleIdentifier(Foo, methodDeclaration)
                 parseQualifiedRestOpt(Foo, methodDeclarationContinuation)
                 listener: handleNoTypeVariables({)
@@ -268,10 +271,10 @@
                 listener: beginMetadataStar(get)
                 listener: endMetadataStar(0)
               listener: beginMember()
-              parseMethod(}, null, null, null, null, null, }, Instance of 'NoType', get, Foo, DeclarationKind.Class, Foo)
+              parseMethod(}, null, null, null, null, null, }, Instance of 'NoType', get, Foo, DeclarationKind.Class, Foo, false)
                 listener: beginMethod(null, null, null, null, get, Foo)
                 listener: handleNoType(})
-                ensureIdentifier(get, methodDeclaration)
+                ensureIdentifierPotentiallyRecovered(get, methodDeclaration, false)
                   listener: handleIdentifier(Foo, methodDeclaration)
                 parseQualifiedRestOpt(Foo, methodDeclarationContinuation)
                   parseQualifiedRest(Foo, methodDeclarationContinuation)
@@ -315,10 +318,10 @@
                 listener: beginMetadataStar(get)
                 listener: endMetadataStar(0)
               listener: beginMember()
-              parseMethod(;, null, null, null, null, null, ;, Instance of 'NoType', get, Foo, DeclarationKind.Class, Foo)
+              parseMethod(;, null, null, null, null, null, ;, Instance of 'NoType', get, Foo, DeclarationKind.Class, Foo, false)
                 listener: beginMethod(null, null, null, null, get, Foo)
                 listener: handleNoType(;)
-                ensureIdentifier(get, methodDeclaration)
+                ensureIdentifierPotentiallyRecovered(get, methodDeclaration, false)
                   listener: handleIdentifier(Foo, methodDeclaration)
                 parseQualifiedRestOpt(Foo, methodDeclarationContinuation)
                   parseQualifiedRest(Foo, methodDeclarationContinuation)
@@ -369,10 +372,10 @@
                 listener: beginMetadataStar(get)
                 listener: endMetadataStar(0)
               listener: beginMember()
-              parseMethod(}, null, null, null, null, null, }, Instance of 'NoType', get, Foo, DeclarationKind.Class, Foo)
+              parseMethod(}, null, null, null, null, null, }, Instance of 'NoType', get, Foo, DeclarationKind.Class, Foo, false)
                 listener: beginMethod(null, null, null, null, get, Foo)
                 listener: handleNoType(})
-                ensureIdentifier(get, methodDeclaration)
+                ensureIdentifierPotentiallyRecovered(get, methodDeclaration, false)
                   listener: handleIdentifier(Foo, methodDeclaration)
                 parseQualifiedRestOpt(Foo, methodDeclarationContinuation)
                 listener: handleNoTypeVariables(:)
@@ -436,10 +439,10 @@
                 listener: beginMetadataStar(get)
                 listener: endMetadataStar(0)
               listener: beginMember()
-              parseMethod(;, null, null, null, null, null, ;, Instance of 'NoType', get, Foo, DeclarationKind.Class, Foo)
+              parseMethod(;, null, null, null, null, null, ;, Instance of 'NoType', get, Foo, DeclarationKind.Class, Foo, false)
                 listener: beginMethod(null, null, null, null, get, Foo)
                 listener: handleNoType(;)
-                ensureIdentifier(get, methodDeclaration)
+                ensureIdentifierPotentiallyRecovered(get, methodDeclaration, false)
                   listener: handleIdentifier(Foo, methodDeclaration)
                 parseQualifiedRestOpt(Foo, methodDeclarationContinuation)
                   parseQualifiedRest(Foo, methodDeclarationContinuation)
@@ -514,10 +517,10 @@
                 listener: beginMetadataStar(set)
                 listener: endMetadataStar(0)
               listener: beginMember()
-              parseMethod(}, null, null, null, null, null, }, Instance of 'NoType', set, Foo, DeclarationKind.Class, Foo)
+              parseMethod(}, null, null, null, null, null, }, Instance of 'NoType', set, Foo, DeclarationKind.Class, Foo, false)
                 listener: beginMethod(null, null, null, null, set, Foo)
                 listener: handleNoType(})
-                ensureIdentifier(set, methodDeclaration)
+                ensureIdentifierPotentiallyRecovered(set, methodDeclaration, false)
                   listener: handleIdentifier(Foo, methodDeclaration)
                 parseQualifiedRestOpt(Foo, methodDeclarationContinuation)
                 listener: handleNoTypeVariables(=>)
@@ -557,10 +560,10 @@
                 listener: beginMetadataStar(set)
                 listener: endMetadataStar(0)
               listener: beginMember()
-              parseMethod(;, null, null, null, null, null, ;, Instance of 'NoType', set, Foo, DeclarationKind.Class, Foo)
+              parseMethod(;, null, null, null, null, null, ;, Instance of 'NoType', set, Foo, DeclarationKind.Class, Foo, false)
                 listener: beginMethod(null, null, null, null, set, Foo)
                 listener: handleNoType(;)
-                ensureIdentifier(set, methodDeclaration)
+                ensureIdentifierPotentiallyRecovered(set, methodDeclaration, false)
                   listener: handleIdentifier(Foo, methodDeclaration)
                 parseQualifiedRestOpt(Foo, methodDeclarationContinuation)
                 listener: handleNoTypeVariables({)
@@ -607,10 +610,10 @@
                 listener: beginMetadataStar(set)
                 listener: endMetadataStar(0)
               listener: beginMember()
-              parseMethod(}, null, null, null, null, null, }, Instance of 'NoType', set, Foo, DeclarationKind.Class, Foo)
+              parseMethod(}, null, null, null, null, null, }, Instance of 'NoType', set, Foo, DeclarationKind.Class, Foo, false)
                 listener: beginMethod(null, null, null, null, set, Foo)
                 listener: handleNoType(})
-                ensureIdentifier(set, methodDeclaration)
+                ensureIdentifierPotentiallyRecovered(set, methodDeclaration, false)
                   listener: handleIdentifier(Foo, methodDeclaration)
                 parseQualifiedRestOpt(Foo, methodDeclarationContinuation)
                   parseQualifiedRest(Foo, methodDeclarationContinuation)
@@ -654,10 +657,10 @@
                 listener: beginMetadataStar(set)
                 listener: endMetadataStar(0)
               listener: beginMember()
-              parseMethod(;, null, null, null, null, null, ;, Instance of 'NoType', set, Foo, DeclarationKind.Class, Foo)
+              parseMethod(;, null, null, null, null, null, ;, Instance of 'NoType', set, Foo, DeclarationKind.Class, Foo, false)
                 listener: beginMethod(null, null, null, null, set, Foo)
                 listener: handleNoType(;)
-                ensureIdentifier(set, methodDeclaration)
+                ensureIdentifierPotentiallyRecovered(set, methodDeclaration, false)
                   listener: handleIdentifier(Foo, methodDeclaration)
                 parseQualifiedRestOpt(Foo, methodDeclarationContinuation)
                   parseQualifiedRest(Foo, methodDeclarationContinuation)
@@ -708,10 +711,10 @@
                 listener: beginMetadataStar(set)
                 listener: endMetadataStar(0)
               listener: beginMember()
-              parseMethod(}, null, null, null, null, null, }, Instance of 'NoType', set, Foo, DeclarationKind.Class, Foo)
+              parseMethod(}, null, null, null, null, null, }, Instance of 'NoType', set, Foo, DeclarationKind.Class, Foo, false)
                 listener: beginMethod(null, null, null, null, set, Foo)
                 listener: handleNoType(})
-                ensureIdentifier(set, methodDeclaration)
+                ensureIdentifierPotentiallyRecovered(set, methodDeclaration, false)
                   listener: handleIdentifier(Foo, methodDeclaration)
                 parseQualifiedRestOpt(Foo, methodDeclarationContinuation)
                 listener: handleNoTypeVariables(:)
@@ -775,10 +778,10 @@
                 listener: beginMetadataStar(set)
                 listener: endMetadataStar(0)
               listener: beginMember()
-              parseMethod(;, null, null, null, null, null, ;, Instance of 'NoType', set, Foo, DeclarationKind.Class, Foo)
+              parseMethod(;, null, null, null, null, null, ;, Instance of 'NoType', set, Foo, DeclarationKind.Class, Foo, false)
                 listener: beginMethod(null, null, null, null, set, Foo)
                 listener: handleNoType(;)
-                ensureIdentifier(set, methodDeclaration)
+                ensureIdentifierPotentiallyRecovered(set, methodDeclaration, false)
                   listener: handleIdentifier(Foo, methodDeclaration)
                 parseQualifiedRestOpt(Foo, methodDeclarationContinuation)
                   parseQualifiedRest(Foo, methodDeclarationContinuation)
@@ -853,10 +856,11 @@
                 listener: beginMetadataStar(external)
                 listener: endMetadataStar(0)
               listener: beginMember()
-              parseMethod(}, external, null, null, null, null, external, Instance of 'NoType', null, Foo, DeclarationKind.Class, Foo)
+              isReservedKeyword(()
+              parseMethod(}, external, null, null, null, null, external, Instance of 'NoType', null, Foo, DeclarationKind.Class, Foo, false)
                 listener: beginMethod(external, null, null, null, null, Foo)
                 listener: handleNoType(external)
-                ensureIdentifier(external, methodDeclaration)
+                ensureIdentifierPotentiallyRecovered(external, methodDeclaration, false)
                   listener: handleIdentifier(Foo, methodDeclaration)
                 parseQualifiedRestOpt(Foo, methodDeclarationContinuation)
                 parseMethodTypeVar(Foo)
@@ -908,10 +912,11 @@
                 listener: beginMetadataStar(external)
                 listener: endMetadataStar(0)
               listener: beginMember()
-              parseMethod(;, external, null, null, null, null, external, Instance of 'NoType', null, Foo, DeclarationKind.Class, Foo)
+              isReservedKeyword(.)
+              parseMethod(;, external, null, null, null, null, external, Instance of 'NoType', null, Foo, DeclarationKind.Class, Foo, false)
                 listener: beginMethod(external, null, null, null, null, Foo)
                 listener: handleNoType(external)
-                ensureIdentifier(external, methodDeclaration)
+                ensureIdentifierPotentiallyRecovered(external, methodDeclaration, false)
                   listener: handleIdentifier(Foo, methodDeclaration)
                 parseQualifiedRestOpt(Foo, methodDeclarationContinuation)
                   parseQualifiedRest(Foo, methodDeclarationContinuation)
@@ -985,11 +990,11 @@
                 listener: beginMetadataStar(int)
                 listener: endMetadataStar(0)
               listener: beginMember()
-              parseFields(}, null, null, null, null, null, }, Instance of 'SimpleType', Foo, DeclarationKind.Class, Foo)
+              parseFields(}, null, null, null, null, null, }, Instance of 'SimpleType', Foo, DeclarationKind.Class, Foo, false)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(Foo)
                 listener: handleType(int, null)
-                ensureIdentifier(int, fieldDeclaration)
+                ensureIdentifierPotentiallyRecovered(int, fieldDeclaration, false)
                   listener: handleIdentifier(Foo, fieldDeclaration)
                 parseFieldInitializerOpt(Foo, Foo, null, null, DeclarationKind.Class, Foo)
                   reportRecoverableError(Foo, MemberWithSameNameAsClass)
@@ -1003,11 +1008,11 @@
                 listener: beginMetadataStar(int)
                 listener: endMetadataStar(0)
               listener: beginMember()
-              parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', A, DeclarationKind.Class, Foo)
+              parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', A, DeclarationKind.Class, Foo, false)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(A)
                 listener: handleType(int, null)
-                ensureIdentifier(int, fieldDeclaration)
+                ensureIdentifierPotentiallyRecovered(int, fieldDeclaration, false)
                   listener: handleIdentifier(A, fieldDeclaration)
                 parseFieldInitializerOpt(A, A, null, null, DeclarationKind.Class, Foo)
                   listener: handleNoFieldInitializer(,)
diff --git a/pkg/front_end/parser_testcases/error_recovery/constructor_recovery_bad_name_get.crash_dart.intertwined.expect b/pkg/front_end/parser_testcases/error_recovery/constructor_recovery_bad_name_get.crash_dart.intertwined.expect
index 7ca18b9..c85db7e 100644
--- a/pkg/front_end/parser_testcases/error_recovery/constructor_recovery_bad_name_get.crash_dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/error_recovery/constructor_recovery_bad_name_get.crash_dart.intertwined.expect
@@ -32,10 +32,10 @@
                 listener: beginMetadataStar(get)
                 listener: endMetadataStar(0)
               listener: beginMember()
-              parseMethod({, null, null, null, null, null, {, Instance of 'NoType', get, foo, DeclarationKind.Class, Foo)
+              parseMethod({, null, null, null, null, null, {, Instance of 'NoType', get, foo, DeclarationKind.Class, Foo, false)
                 listener: beginMethod(null, null, null, null, get, foo)
                 listener: handleNoType({)
-                ensureIdentifier(get, methodDeclaration)
+                ensureIdentifierPotentiallyRecovered(get, methodDeclaration, false)
                   listener: handleIdentifier(foo, methodDeclaration)
                 parseQualifiedRestOpt(foo, methodDeclarationContinuation)
                   parseQualifiedRest(foo, methodDeclarationContinuation)
@@ -71,10 +71,10 @@
                 listener: beginMetadataStar(get)
                 listener: endMetadataStar(0)
               listener: beginMember()
-              parseMethod(}, null, null, null, null, null, }, Instance of 'NoType', get, foo, DeclarationKind.Class, Foo)
+              parseMethod(}, null, null, null, null, null, }, Instance of 'NoType', get, foo, DeclarationKind.Class, Foo, false)
                 listener: beginMethod(null, null, null, null, get, foo)
                 listener: handleNoType(})
-                ensureIdentifier(get, methodDeclaration)
+                ensureIdentifierPotentiallyRecovered(get, methodDeclaration, false)
                   listener: handleIdentifier(foo, methodDeclaration)
                 parseQualifiedRestOpt(foo, methodDeclarationContinuation)
                   parseQualifiedRest(foo, methodDeclarationContinuation)
@@ -134,10 +134,10 @@
                 listener: beginMetadataStar(get)
                 listener: endMetadataStar(0)
               listener: beginMember()
-              parseMethod(}, null, null, null, null, null, }, Instance of 'NoType', get, foo, DeclarationKind.Class, Foo)
+              parseMethod(}, null, null, null, null, null, }, Instance of 'NoType', get, foo, DeclarationKind.Class, Foo, false)
                 listener: beginMethod(null, null, null, null, get, foo)
                 listener: handleNoType(})
-                ensureIdentifier(get, methodDeclaration)
+                ensureIdentifierPotentiallyRecovered(get, methodDeclaration, false)
                   listener: handleIdentifier(foo, methodDeclaration)
                 parseQualifiedRestOpt(foo, methodDeclarationContinuation)
                 listener: handleNoTypeVariables(()
diff --git a/pkg/front_end/parser_testcases/error_recovery/constructor_recovery_bad_name_return_type.crash_dart.intertwined.expect b/pkg/front_end/parser_testcases/error_recovery/constructor_recovery_bad_name_return_type.crash_dart.intertwined.expect
index 752ba9a..65a470c 100644
--- a/pkg/front_end/parser_testcases/error_recovery/constructor_recovery_bad_name_return_type.crash_dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/error_recovery/constructor_recovery_bad_name_return_type.crash_dart.intertwined.expect
@@ -32,10 +32,10 @@
                 listener: beginMetadataStar(void)
                 listener: endMetadataStar(0)
               listener: beginMember()
-              parseMethod({, null, null, null, null, null, {, Instance of 'VoidType', null, foo, DeclarationKind.Class, Foo)
+              parseMethod({, null, null, null, null, null, {, Instance of 'VoidType', null, foo, DeclarationKind.Class, Foo, false)
                 listener: beginMethod(null, null, null, null, null, foo)
                 listener: handleVoidKeyword(void)
-                ensureIdentifier(void, methodDeclaration)
+                ensureIdentifierPotentiallyRecovered(void, methodDeclaration, false)
                   listener: handleIdentifier(foo, methodDeclaration)
                 parseQualifiedRestOpt(foo, methodDeclarationContinuation)
                   parseQualifiedRest(foo, methodDeclarationContinuation)
@@ -71,10 +71,10 @@
                 listener: beginMetadataStar(void)
                 listener: endMetadataStar(0)
               listener: beginMember()
-              parseMethod(}, null, null, null, null, null, }, Instance of 'VoidType', null, foo, DeclarationKind.Class, Foo)
+              parseMethod(}, null, null, null, null, null, }, Instance of 'VoidType', null, foo, DeclarationKind.Class, Foo, false)
                 listener: beginMethod(null, null, null, null, null, foo)
                 listener: handleVoidKeyword(void)
-                ensureIdentifier(void, methodDeclaration)
+                ensureIdentifierPotentiallyRecovered(void, methodDeclaration, false)
                   listener: handleIdentifier(foo, methodDeclaration)
                 parseQualifiedRestOpt(foo, methodDeclarationContinuation)
                   parseQualifiedRest(foo, methodDeclarationContinuation)
@@ -134,10 +134,10 @@
                 listener: beginMetadataStar(void)
                 listener: endMetadataStar(0)
               listener: beginMember()
-              parseMethod(}, null, null, null, null, null, }, Instance of 'VoidType', null, foo, DeclarationKind.Class, Foo)
+              parseMethod(}, null, null, null, null, null, }, Instance of 'VoidType', null, foo, DeclarationKind.Class, Foo, false)
                 listener: beginMethod(null, null, null, null, null, foo)
                 listener: handleVoidKeyword(void)
-                ensureIdentifier(void, methodDeclaration)
+                ensureIdentifierPotentiallyRecovered(void, methodDeclaration, false)
                   listener: handleIdentifier(foo, methodDeclaration)
                 parseQualifiedRestOpt(foo, methodDeclarationContinuation)
                 parseMethodTypeVar(foo)
diff --git a/pkg/front_end/parser_testcases/error_recovery/constructor_recovery_bad_name_set.crash_dart.intertwined.expect b/pkg/front_end/parser_testcases/error_recovery/constructor_recovery_bad_name_set.crash_dart.intertwined.expect
index 83b3721..700b32f 100644
--- a/pkg/front_end/parser_testcases/error_recovery/constructor_recovery_bad_name_set.crash_dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/error_recovery/constructor_recovery_bad_name_set.crash_dart.intertwined.expect
@@ -32,10 +32,10 @@
                 listener: beginMetadataStar(set)
                 listener: endMetadataStar(0)
               listener: beginMember()
-              parseMethod({, null, null, null, null, null, {, Instance of 'NoType', set, foo, DeclarationKind.Class, Foo)
+              parseMethod({, null, null, null, null, null, {, Instance of 'NoType', set, foo, DeclarationKind.Class, Foo, false)
                 listener: beginMethod(null, null, null, null, set, foo)
                 listener: handleNoType({)
-                ensureIdentifier(set, methodDeclaration)
+                ensureIdentifierPotentiallyRecovered(set, methodDeclaration, false)
                   listener: handleIdentifier(foo, methodDeclaration)
                 parseQualifiedRestOpt(foo, methodDeclarationContinuation)
                   parseQualifiedRest(foo, methodDeclarationContinuation)
@@ -71,10 +71,10 @@
                 listener: beginMetadataStar(set)
                 listener: endMetadataStar(0)
               listener: beginMember()
-              parseMethod(}, null, null, null, null, null, }, Instance of 'NoType', set, foo, DeclarationKind.Class, Foo)
+              parseMethod(}, null, null, null, null, null, }, Instance of 'NoType', set, foo, DeclarationKind.Class, Foo, false)
                 listener: beginMethod(null, null, null, null, set, foo)
                 listener: handleNoType(})
-                ensureIdentifier(set, methodDeclaration)
+                ensureIdentifierPotentiallyRecovered(set, methodDeclaration, false)
                   listener: handleIdentifier(foo, methodDeclaration)
                 parseQualifiedRestOpt(foo, methodDeclarationContinuation)
                   parseQualifiedRest(foo, methodDeclarationContinuation)
@@ -134,10 +134,10 @@
                 listener: beginMetadataStar(set)
                 listener: endMetadataStar(0)
               listener: beginMember()
-              parseMethod(}, null, null, null, null, null, }, Instance of 'NoType', set, foo, DeclarationKind.Class, Foo)
+              parseMethod(}, null, null, null, null, null, }, Instance of 'NoType', set, foo, DeclarationKind.Class, Foo, false)
                 listener: beginMethod(null, null, null, null, set, foo)
                 listener: handleNoType(})
-                ensureIdentifier(set, methodDeclaration)
+                ensureIdentifierPotentiallyRecovered(set, methodDeclaration, false)
                   listener: handleIdentifier(foo, methodDeclaration)
                 parseQualifiedRestOpt(foo, methodDeclarationContinuation)
                 listener: handleNoTypeVariables(()
diff --git a/pkg/front_end/parser_testcases/error_recovery/constructor_recovery_get.dart.intertwined.expect b/pkg/front_end/parser_testcases/error_recovery/constructor_recovery_get.dart.intertwined.expect
index a584715..942c9f8 100644
--- a/pkg/front_end/parser_testcases/error_recovery/constructor_recovery_get.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/error_recovery/constructor_recovery_get.dart.intertwined.expect
@@ -32,10 +32,10 @@
                 listener: beginMetadataStar(get)
                 listener: endMetadataStar(0)
               listener: beginMember()
-              parseMethod({, null, null, null, null, null, {, Instance of 'NoType', get, Foo, DeclarationKind.Class, Foo)
+              parseMethod({, null, null, null, null, null, {, Instance of 'NoType', get, Foo, DeclarationKind.Class, Foo, false)
                 listener: beginMethod(null, null, null, null, get, Foo)
                 listener: handleNoType({)
-                ensureIdentifier(get, methodDeclaration)
+                ensureIdentifierPotentiallyRecovered(get, methodDeclaration, false)
                   listener: handleIdentifier(Foo, methodDeclaration)
                 parseQualifiedRestOpt(Foo, methodDeclarationContinuation)
                 listener: handleNoTypeVariables(()
@@ -67,10 +67,10 @@
                 listener: beginMetadataStar(get)
                 listener: endMetadataStar(0)
               listener: beginMember()
-              parseMethod(}, null, null, null, null, null, }, Instance of 'NoType', get, Foo, DeclarationKind.Class, Foo)
+              parseMethod(}, null, null, null, null, null, }, Instance of 'NoType', get, Foo, DeclarationKind.Class, Foo, false)
                 listener: beginMethod(null, null, null, null, get, Foo)
                 listener: handleNoType(})
-                ensureIdentifier(get, methodDeclaration)
+                ensureIdentifierPotentiallyRecovered(get, methodDeclaration, false)
                   listener: handleIdentifier(Foo, methodDeclaration)
                 parseQualifiedRestOpt(Foo, methodDeclarationContinuation)
                 listener: handleNoTypeVariables(()
@@ -126,10 +126,10 @@
                 listener: beginMetadataStar(get)
                 listener: endMetadataStar(0)
               listener: beginMember()
-              parseMethod(}, null, null, null, null, null, }, Instance of 'NoType', get, Foo, DeclarationKind.Class, Foo)
+              parseMethod(}, null, null, null, null, null, }, Instance of 'NoType', get, Foo, DeclarationKind.Class, Foo, false)
                 listener: beginMethod(null, null, null, null, get, Foo)
                 listener: handleNoType(})
-                ensureIdentifier(get, methodDeclaration)
+                ensureIdentifierPotentiallyRecovered(get, methodDeclaration, false)
                   listener: handleIdentifier(Foo, methodDeclaration)
                 parseQualifiedRestOpt(Foo, methodDeclarationContinuation)
                   parseQualifiedRest(Foo, methodDeclarationContinuation)
@@ -163,10 +163,10 @@
                 listener: beginMetadataStar(get)
                 listener: endMetadataStar(0)
               listener: beginMember()
-              parseMethod(}, null, null, null, null, null, }, Instance of 'NoType', get, Foo, DeclarationKind.Class, Foo)
+              parseMethod(}, null, null, null, null, null, }, Instance of 'NoType', get, Foo, DeclarationKind.Class, Foo, false)
                 listener: beginMethod(null, null, null, null, get, Foo)
                 listener: handleNoType(})
-                ensureIdentifier(get, methodDeclaration)
+                ensureIdentifierPotentiallyRecovered(get, methodDeclaration, false)
                   listener: handleIdentifier(Foo, methodDeclaration)
                 parseQualifiedRestOpt(Foo, methodDeclarationContinuation)
                   parseQualifiedRest(Foo, methodDeclarationContinuation)
diff --git a/pkg/front_end/parser_testcases/error_recovery/constructor_recovery_ok.dart.intertwined.expect b/pkg/front_end/parser_testcases/error_recovery/constructor_recovery_ok.dart.intertwined.expect
index 14837ca..fa9e673 100644
--- a/pkg/front_end/parser_testcases/error_recovery/constructor_recovery_ok.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/error_recovery/constructor_recovery_ok.dart.intertwined.expect
@@ -32,10 +32,11 @@
                 listener: beginMetadataStar(Foo)
                 listener: endMetadataStar(0)
               listener: beginMember()
-              parseMethod({, null, null, null, null, null, {, Instance of 'NoType', null, Foo, DeclarationKind.Class, Foo)
+              isReservedKeyword(()
+              parseMethod({, null, null, null, null, null, {, Instance of 'NoType', null, Foo, DeclarationKind.Class, Foo, false)
                 listener: beginMethod(null, null, null, null, null, Foo)
                 listener: handleNoType({)
-                ensureIdentifier({, methodDeclaration)
+                ensureIdentifierPotentiallyRecovered({, methodDeclaration, false)
                   listener: handleIdentifier(Foo, methodDeclaration)
                 parseQualifiedRestOpt(Foo, methodDeclarationContinuation)
                 parseMethodTypeVar(Foo)
@@ -63,10 +64,11 @@
                 listener: beginMetadataStar(Foo)
                 listener: endMetadataStar(0)
               listener: beginMember()
-              parseMethod(}, null, null, null, null, null, }, Instance of 'NoType', null, Foo, DeclarationKind.Class, Foo)
+              isReservedKeyword(()
+              parseMethod(}, null, null, null, null, null, }, Instance of 'NoType', null, Foo, DeclarationKind.Class, Foo, false)
                 listener: beginMethod(null, null, null, null, null, Foo)
                 listener: handleNoType(})
-                ensureIdentifier(}, methodDeclaration)
+                ensureIdentifierPotentiallyRecovered(}, methodDeclaration, false)
                   listener: handleIdentifier(Foo, methodDeclaration)
                 parseQualifiedRestOpt(Foo, methodDeclarationContinuation)
                 parseMethodTypeVar(Foo)
@@ -118,10 +120,11 @@
                 listener: beginMetadataStar(Foo)
                 listener: endMetadataStar(0)
               listener: beginMember()
-              parseMethod(}, null, null, null, null, null, }, Instance of 'NoType', null, Foo, DeclarationKind.Class, Foo)
+              isReservedKeyword(.)
+              parseMethod(}, null, null, null, null, null, }, Instance of 'NoType', null, Foo, DeclarationKind.Class, Foo, false)
                 listener: beginMethod(null, null, null, null, null, Foo)
                 listener: handleNoType(})
-                ensureIdentifier(}, methodDeclaration)
+                ensureIdentifierPotentiallyRecovered(}, methodDeclaration, false)
                   listener: handleIdentifier(Foo, methodDeclaration)
                 parseQualifiedRestOpt(Foo, methodDeclarationContinuation)
                   parseQualifiedRest(Foo, methodDeclarationContinuation)
@@ -153,10 +156,11 @@
                 listener: beginMetadataStar(Foo)
                 listener: endMetadataStar(0)
               listener: beginMember()
-              parseMethod(}, null, null, null, null, null, }, Instance of 'NoType', null, Foo, DeclarationKind.Class, Foo)
+              isReservedKeyword(.)
+              parseMethod(}, null, null, null, null, null, }, Instance of 'NoType', null, Foo, DeclarationKind.Class, Foo, false)
                 listener: beginMethod(null, null, null, null, null, Foo)
                 listener: handleNoType(})
-                ensureIdentifier(}, methodDeclaration)
+                ensureIdentifierPotentiallyRecovered(}, methodDeclaration, false)
                   listener: handleIdentifier(Foo, methodDeclaration)
                 parseQualifiedRestOpt(Foo, methodDeclarationContinuation)
                   parseQualifiedRest(Foo, methodDeclarationContinuation)
diff --git a/pkg/front_end/parser_testcases/error_recovery/constructor_recovery_operator.crash_dart.intertwined.expect b/pkg/front_end/parser_testcases/error_recovery/constructor_recovery_operator.crash_dart.intertwined.expect
index 1a0d2d1..83c7426 100644
--- a/pkg/front_end/parser_testcases/error_recovery/constructor_recovery_operator.crash_dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/error_recovery/constructor_recovery_operator.crash_dart.intertwined.expect
@@ -32,10 +32,11 @@
                 listener: beginMetadataStar(Foo)
                 listener: endMetadataStar(0)
               listener: beginMember()
-              parseMethod({, null, null, null, null, null, {, Instance of 'NoType', null, Foo, DeclarationKind.Class, Foo)
+              isReservedKeyword(()
+              parseMethod({, null, null, null, null, null, {, Instance of 'NoType', null, Foo, DeclarationKind.Class, Foo, false)
                 listener: beginMethod(null, null, null, null, null, Foo)
                 listener: handleNoType({)
-                ensureIdentifier({, methodDeclaration)
+                ensureIdentifierPotentiallyRecovered({, methodDeclaration, false)
                   listener: handleIdentifier(Foo, methodDeclaration)
                 parseQualifiedRestOpt(Foo, methodDeclarationContinuation)
                 parseMethodTypeVar(Foo)
@@ -72,7 +73,7 @@
                   reportRecoverableError(/, MissingOperatorKeyword)
                     listener: handleRecoverableError(MissingOperatorKeyword, /, /)
                   rewriter()
-                  parseMethod(}, null, null, null, null, null, }, Instance of 'NoType', null, operator, DeclarationKind.Class, Foo)
+                  parseMethod(}, null, null, null, null, null, }, Instance of 'NoType', null, operator, DeclarationKind.Class, Foo, false)
                     listener: beginMethod(null, null, null, null, null, operator)
                     listener: handleNoType(})
                     parseOperatorName(})
@@ -126,10 +127,11 @@
                 listener: beginMetadataStar(Foo)
                 listener: endMetadataStar(0)
               listener: beginMember()
-              parseMethod(}, null, null, null, null, null, }, Instance of 'NoType', null, Foo, DeclarationKind.Class, Foo)
+              isReservedKeyword(()
+              parseMethod(}, null, null, null, null, null, }, Instance of 'NoType', null, Foo, DeclarationKind.Class, Foo, false)
                 listener: beginMethod(null, null, null, null, null, Foo)
                 listener: handleNoType(})
-                ensureIdentifier(}, methodDeclaration)
+                ensureIdentifierPotentiallyRecovered(}, methodDeclaration, false)
                   listener: handleIdentifier(Foo, methodDeclaration)
                 parseQualifiedRestOpt(Foo, methodDeclarationContinuation)
                 parseMethodTypeVar(Foo)
@@ -177,7 +179,7 @@
                   reportRecoverableError(/, MissingOperatorKeyword)
                     listener: handleRecoverableError(MissingOperatorKeyword, /, /)
                   rewriter()
-                  parseMethod(., null, null, null, null, null, ., Instance of 'NoType', null, operator, DeclarationKind.Class, Foo)
+                  parseMethod(., null, null, null, null, null, ., Instance of 'NoType', null, operator, DeclarationKind.Class, Foo, false)
                     listener: beginMethod(null, null, null, null, null, operator)
                     listener: handleNoType(.)
                     parseOperatorName(.)
@@ -231,10 +233,11 @@
                 listener: beginMetadataStar(foo)
                 listener: endMetadataStar(0)
               listener: beginMember()
-              parseMethod(}, null, null, null, null, null, }, Instance of 'NoType', null, foo, DeclarationKind.Class, Foo)
+              isReservedKeyword(()
+              parseMethod(}, null, null, null, null, null, }, Instance of 'NoType', null, foo, DeclarationKind.Class, Foo, false)
                 listener: beginMethod(null, null, null, null, null, foo)
                 listener: handleNoType(})
-                ensureIdentifier(}, methodDeclaration)
+                ensureIdentifierPotentiallyRecovered(}, methodDeclaration, false)
                   listener: handleIdentifier(foo, methodDeclaration)
                 parseQualifiedRestOpt(foo, methodDeclarationContinuation)
                 parseMethodTypeVar(foo)
@@ -271,7 +274,7 @@
                   reportRecoverableError(/, MissingOperatorKeyword)
                     listener: handleRecoverableError(MissingOperatorKeyword, /, /)
                   rewriter()
-                  parseMethod(}, null, null, null, null, null, }, Instance of 'NoType', null, operator, DeclarationKind.Class, Foo)
+                  parseMethod(}, null, null, null, null, null, }, Instance of 'NoType', null, operator, DeclarationKind.Class, Foo, false)
                     listener: beginMethod(null, null, null, null, null, operator)
                     listener: handleNoType(})
                     parseOperatorName(})
@@ -325,10 +328,11 @@
                 listener: beginMetadataStar(foo)
                 listener: endMetadataStar(0)
               listener: beginMember()
-              parseMethod(}, null, null, null, null, null, }, Instance of 'NoType', null, foo, DeclarationKind.Class, Foo)
+              isReservedKeyword(()
+              parseMethod(}, null, null, null, null, null, }, Instance of 'NoType', null, foo, DeclarationKind.Class, Foo, false)
                 listener: beginMethod(null, null, null, null, null, foo)
                 listener: handleNoType(})
-                ensureIdentifier(}, methodDeclaration)
+                ensureIdentifierPotentiallyRecovered(}, methodDeclaration, false)
                   listener: handleIdentifier(foo, methodDeclaration)
                 parseQualifiedRestOpt(foo, methodDeclarationContinuation)
                 parseMethodTypeVar(foo)
@@ -376,7 +380,7 @@
                   reportRecoverableError(/, MissingOperatorKeyword)
                     listener: handleRecoverableError(MissingOperatorKeyword, /, /)
                   rewriter()
-                  parseMethod(., null, null, null, null, null, ., Instance of 'NoType', null, operator, DeclarationKind.Class, Foo)
+                  parseMethod(., null, null, null, null, null, ., Instance of 'NoType', null, operator, DeclarationKind.Class, Foo, false)
                     listener: beginMethod(null, null, null, null, null, operator)
                     listener: handleNoType(.)
                     parseOperatorName(.)
diff --git a/pkg/front_end/parser_testcases/error_recovery/constructor_recovery_return_type.dart.intertwined.expect b/pkg/front_end/parser_testcases/error_recovery/constructor_recovery_return_type.dart.intertwined.expect
index 95de9da..b1b218d 100644
--- a/pkg/front_end/parser_testcases/error_recovery/constructor_recovery_return_type.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/error_recovery/constructor_recovery_return_type.dart.intertwined.expect
@@ -32,10 +32,10 @@
                 listener: beginMetadataStar(void)
                 listener: endMetadataStar(0)
               listener: beginMember()
-              parseMethod({, null, null, null, null, null, {, Instance of 'VoidType', null, Foo, DeclarationKind.Class, Foo)
+              parseMethod({, null, null, null, null, null, {, Instance of 'VoidType', null, Foo, DeclarationKind.Class, Foo, false)
                 listener: beginMethod(null, null, null, null, null, Foo)
                 listener: handleVoidKeyword(void)
-                ensureIdentifier(void, methodDeclaration)
+                ensureIdentifierPotentiallyRecovered(void, methodDeclaration, false)
                   listener: handleIdentifier(Foo, methodDeclaration)
                 parseQualifiedRestOpt(Foo, methodDeclarationContinuation)
                 parseMethodTypeVar(Foo)
@@ -65,10 +65,10 @@
                 listener: beginMetadataStar(void)
                 listener: endMetadataStar(0)
               listener: beginMember()
-              parseMethod(}, null, null, null, null, null, }, Instance of 'VoidType', null, Foo, DeclarationKind.Class, Foo)
+              parseMethod(}, null, null, null, null, null, }, Instance of 'VoidType', null, Foo, DeclarationKind.Class, Foo, false)
                 listener: beginMethod(null, null, null, null, null, Foo)
                 listener: handleVoidKeyword(void)
-                ensureIdentifier(void, methodDeclaration)
+                ensureIdentifierPotentiallyRecovered(void, methodDeclaration, false)
                   listener: handleIdentifier(Foo, methodDeclaration)
                 parseQualifiedRestOpt(Foo, methodDeclarationContinuation)
                 parseMethodTypeVar(Foo)
@@ -122,10 +122,10 @@
                 listener: beginMetadataStar(void)
                 listener: endMetadataStar(0)
               listener: beginMember()
-              parseMethod(}, null, null, null, null, null, }, Instance of 'VoidType', null, Foo, DeclarationKind.Class, Foo)
+              parseMethod(}, null, null, null, null, null, }, Instance of 'VoidType', null, Foo, DeclarationKind.Class, Foo, false)
                 listener: beginMethod(null, null, null, null, null, Foo)
                 listener: handleVoidKeyword(void)
-                ensureIdentifier(void, methodDeclaration)
+                ensureIdentifierPotentiallyRecovered(void, methodDeclaration, false)
                   listener: handleIdentifier(Foo, methodDeclaration)
                 parseQualifiedRestOpt(Foo, methodDeclarationContinuation)
                   parseQualifiedRest(Foo, methodDeclarationContinuation)
@@ -159,10 +159,10 @@
                 listener: beginMetadataStar(void)
                 listener: endMetadataStar(0)
               listener: beginMember()
-              parseMethod(}, null, null, null, null, null, }, Instance of 'VoidType', null, Foo, DeclarationKind.Class, Foo)
+              parseMethod(}, null, null, null, null, null, }, Instance of 'VoidType', null, Foo, DeclarationKind.Class, Foo, false)
                 listener: beginMethod(null, null, null, null, null, Foo)
                 listener: handleVoidKeyword(void)
-                ensureIdentifier(void, methodDeclaration)
+                ensureIdentifierPotentiallyRecovered(void, methodDeclaration, false)
                   listener: handleIdentifier(Foo, methodDeclaration)
                 parseQualifiedRestOpt(Foo, methodDeclarationContinuation)
                   parseQualifiedRest(Foo, methodDeclarationContinuation)
diff --git a/pkg/front_end/parser_testcases/error_recovery/constructor_recovery_set.dart.intertwined.expect b/pkg/front_end/parser_testcases/error_recovery/constructor_recovery_set.dart.intertwined.expect
index 2d6459a..572e2e5 100644
--- a/pkg/front_end/parser_testcases/error_recovery/constructor_recovery_set.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/error_recovery/constructor_recovery_set.dart.intertwined.expect
@@ -32,10 +32,10 @@
                 listener: beginMetadataStar(set)
                 listener: endMetadataStar(0)
               listener: beginMember()
-              parseMethod({, null, null, null, null, null, {, Instance of 'NoType', set, Foo, DeclarationKind.Class, Foo)
+              parseMethod({, null, null, null, null, null, {, Instance of 'NoType', set, Foo, DeclarationKind.Class, Foo, false)
                 listener: beginMethod(null, null, null, null, set, Foo)
                 listener: handleNoType({)
-                ensureIdentifier(set, methodDeclaration)
+                ensureIdentifierPotentiallyRecovered(set, methodDeclaration, false)
                   listener: handleIdentifier(Foo, methodDeclaration)
                 parseQualifiedRestOpt(Foo, methodDeclarationContinuation)
                 listener: handleNoTypeVariables(()
@@ -65,10 +65,10 @@
                 listener: beginMetadataStar(set)
                 listener: endMetadataStar(0)
               listener: beginMember()
-              parseMethod(}, null, null, null, null, null, }, Instance of 'NoType', set, Foo, DeclarationKind.Class, Foo)
+              parseMethod(}, null, null, null, null, null, }, Instance of 'NoType', set, Foo, DeclarationKind.Class, Foo, false)
                 listener: beginMethod(null, null, null, null, set, Foo)
                 listener: handleNoType(})
-                ensureIdentifier(set, methodDeclaration)
+                ensureIdentifierPotentiallyRecovered(set, methodDeclaration, false)
                   listener: handleIdentifier(Foo, methodDeclaration)
                 parseQualifiedRestOpt(Foo, methodDeclarationContinuation)
                 listener: handleNoTypeVariables(()
@@ -122,10 +122,10 @@
                 listener: beginMetadataStar(set)
                 listener: endMetadataStar(0)
               listener: beginMember()
-              parseMethod(}, null, null, null, null, null, }, Instance of 'NoType', set, Foo, DeclarationKind.Class, Foo)
+              parseMethod(}, null, null, null, null, null, }, Instance of 'NoType', set, Foo, DeclarationKind.Class, Foo, false)
                 listener: beginMethod(null, null, null, null, set, Foo)
                 listener: handleNoType(})
-                ensureIdentifier(set, methodDeclaration)
+                ensureIdentifierPotentiallyRecovered(set, methodDeclaration, false)
                   listener: handleIdentifier(Foo, methodDeclaration)
                 parseQualifiedRestOpt(Foo, methodDeclarationContinuation)
                   parseQualifiedRest(Foo, methodDeclarationContinuation)
@@ -159,10 +159,10 @@
                 listener: beginMetadataStar(set)
                 listener: endMetadataStar(0)
               listener: beginMember()
-              parseMethod(}, null, null, null, null, null, }, Instance of 'NoType', set, Foo, DeclarationKind.Class, Foo)
+              parseMethod(}, null, null, null, null, null, }, Instance of 'NoType', set, Foo, DeclarationKind.Class, Foo, false)
                 listener: beginMethod(null, null, null, null, set, Foo)
                 listener: handleNoType(})
-                ensureIdentifier(set, methodDeclaration)
+                ensureIdentifierPotentiallyRecovered(set, methodDeclaration, false)
                   listener: handleIdentifier(Foo, methodDeclaration)
                 parseQualifiedRestOpt(Foo, methodDeclarationContinuation)
                   parseQualifiedRest(Foo, methodDeclarationContinuation)
diff --git a/pkg/front_end/parser_testcases/error_recovery/empty_await_for.dart.intertwined.expect b/pkg/front_end/parser_testcases/error_recovery/empty_await_for.dart.intertwined.expect
index 5b35362..f1c1fcd 100644
--- a/pkg/front_end/parser_testcases/error_recovery/empty_await_for.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/error_recovery/empty_await_for.dart.intertwined.expect
@@ -8,10 +8,11 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl()
       listener: beginTopLevelMember(main)
-      parseTopLevelMethod(, null, , Instance of 'NoType', null, main)
+      isReservedKeyword(()
+      parseTopLevelMethod(, null, , Instance of 'NoType', null, main, false)
         listener: beginTopLevelMethod(, null)
         listener: handleNoType()
-        ensureIdentifier(, topLevelFunctionDeclaration)
+        ensureIdentifierPotentiallyRecovered(, topLevelFunctionDeclaration, false)
           listener: handleIdentifier(main, topLevelFunctionDeclaration)
         parseMethodTypeVar(main)
           listener: handleNoTypeVariables(()
diff --git a/pkg/front_end/parser_testcases/error_recovery/empty_for.dart.intertwined.expect b/pkg/front_end/parser_testcases/error_recovery/empty_for.dart.intertwined.expect
index 96c0c6e..c1b40e9 100644
--- a/pkg/front_end/parser_testcases/error_recovery/empty_for.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/error_recovery/empty_for.dart.intertwined.expect
@@ -8,10 +8,11 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl()
       listener: beginTopLevelMember(main)
-      parseTopLevelMethod(, null, , Instance of 'NoType', null, main)
+      isReservedKeyword(()
+      parseTopLevelMethod(, null, , Instance of 'NoType', null, main, false)
         listener: beginTopLevelMethod(, null)
         listener: handleNoType()
-        ensureIdentifier(, topLevelFunctionDeclaration)
+        ensureIdentifierPotentiallyRecovered(, topLevelFunctionDeclaration, false)
           listener: handleIdentifier(main, topLevelFunctionDeclaration)
         parseMethodTypeVar(main)
           listener: handleNoTypeVariables(()
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_38415.crash_dart.expect b/pkg/front_end/parser_testcases/error_recovery/issue_38415.crash_dart.expect
index 67f4baf..0525878 100644
--- a/pkg/front_end/parser_testcases/error_recovery/issue_38415.crash_dart.expect
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_38415.crash_dart.expect
@@ -8,6 +8,22 @@
 f() { m(T<R(<Z
               ^...
 
+parser/error_recovery/issue_38415.crash:1:12: Can't find ')' to match '('.
+f() { m(T<R(<Z
+           ^
+
+parser/error_recovery/issue_38415.crash:1:10: Can't find '>' to match '<'.
+f() { m(T<R(<Z
+         ^
+
+parser/error_recovery/issue_38415.crash:1:8: Can't find ')' to match '('.
+f() { m(T<R(<Z
+       ^
+
+parser/error_recovery/issue_38415.crash:1:5: Can't find '}' to match '{'.
+f() { m(T<R(<Z
+    ^
+
 beginCompilationUnit(f)
   beginMetadataStar(f)
   endMetadataStar(0)
@@ -49,7 +65,11 @@
     endTopLevelMethod(f, null, })
   endTopLevelDeclaration()
   handleErrorToken(UnmatchedToken(())
+  handleRecoverableError(Message[UnmatchedToken, Can't find ')' to match '('., null, {string: ), token: (}], UnmatchedToken((), UnmatchedToken(())
   handleErrorToken(UnmatchedToken(<))
+  handleRecoverableError(Message[UnmatchedToken, Can't find '>' to match '<'., null, {string: >, token: <}], UnmatchedToken(<), UnmatchedToken(<))
   handleErrorToken(UnmatchedToken(())
+  handleRecoverableError(Message[UnmatchedToken, Can't find ')' to match '('., null, {string: ), token: (}], UnmatchedToken((), UnmatchedToken(())
   handleErrorToken(UnmatchedToken({))
+  handleRecoverableError(Message[UnmatchedToken, Can't find '}' to match '{'., null, {string: }, token: {}], UnmatchedToken({), UnmatchedToken({))
 endCompilationUnit(1, )
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_38415.crash_dart.intertwined.expect b/pkg/front_end/parser_testcases/error_recovery/issue_38415.crash_dart.intertwined.expect
index de44d61b..846b118 100644
--- a/pkg/front_end/parser_testcases/error_recovery/issue_38415.crash_dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_38415.crash_dart.intertwined.expect
@@ -8,10 +8,11 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl(UnmatchedToken({))
       listener: beginTopLevelMember(f)
-      parseTopLevelMethod(UnmatchedToken({), null, UnmatchedToken({), Instance of 'NoType', null, f)
+      isReservedKeyword(()
+      parseTopLevelMethod(UnmatchedToken({), null, UnmatchedToken({), Instance of 'NoType', null, f, false)
         listener: beginTopLevelMethod(UnmatchedToken({), null)
         listener: handleNoType(UnmatchedToken({))
-        ensureIdentifier(UnmatchedToken({), topLevelFunctionDeclaration)
+        ensureIdentifierPotentiallyRecovered(UnmatchedToken({), topLevelFunctionDeclaration, false)
           listener: handleIdentifier(f, topLevelFunctionDeclaration)
         parseMethodTypeVar(f)
           listener: handleNoTypeVariables(()
@@ -107,7 +108,11 @@
   listener: endTopLevelDeclaration()
   reportAllErrorTokens(UnmatchedToken(())
     listener: handleErrorToken(UnmatchedToken(())
+    listener: handleRecoverableError(Message[UnmatchedToken, Can't find ')' to match '('., null, {string: ), token: (}], UnmatchedToken((), UnmatchedToken(())
     listener: handleErrorToken(UnmatchedToken(<))
+    listener: handleRecoverableError(Message[UnmatchedToken, Can't find '>' to match '<'., null, {string: >, token: <}], UnmatchedToken(<), UnmatchedToken(<))
     listener: handleErrorToken(UnmatchedToken(())
+    listener: handleRecoverableError(Message[UnmatchedToken, Can't find ')' to match '('., null, {string: ), token: (}], UnmatchedToken((), UnmatchedToken(())
     listener: handleErrorToken(UnmatchedToken({))
+    listener: handleRecoverableError(Message[UnmatchedToken, Can't find '}' to match '{'., null, {string: }, token: {}], UnmatchedToken({), UnmatchedToken({))
   listener: endCompilationUnit(1, )
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_39024.crash_dart.expect b/pkg/front_end/parser_testcases/error_recovery/issue_39024.crash_dart.expect
index b06508d..e4e00d9 100644
--- a/pkg/front_end/parser_testcases/error_recovery/issue_39024.crash_dart.expect
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_39024.crash_dart.expect
@@ -16,6 +16,14 @@
 n<S e(
       ^...
 
+parser/error_recovery/issue_39024.crash:1:6: Can't find ')' to match '('.
+n<S e(
+     ^
+
+parser/error_recovery/issue_39024.crash:1:2: Can't find '>' to match '<'.
+n<S e(
+ ^
+
 beginCompilationUnit(n)
   beginMetadataStar(n)
   endMetadataStar(0)
@@ -41,5 +49,7 @@
     endTopLevelMethod(n, null, })
   endTopLevelDeclaration()
   handleErrorToken(UnmatchedToken(())
+  handleRecoverableError(Message[UnmatchedToken, Can't find ')' to match '('., null, {string: ), token: (}], UnmatchedToken((), UnmatchedToken(())
   handleErrorToken(UnmatchedToken(<))
+  handleRecoverableError(Message[UnmatchedToken, Can't find '>' to match '<'., null, {string: >, token: <}], UnmatchedToken(<), UnmatchedToken(<))
 endCompilationUnit(1, )
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_39024.crash_dart.intertwined.expect b/pkg/front_end/parser_testcases/error_recovery/issue_39024.crash_dart.intertwined.expect
index 3dc962f..80d4990 100644
--- a/pkg/front_end/parser_testcases/error_recovery/issue_39024.crash_dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_39024.crash_dart.intertwined.expect
@@ -8,7 +8,7 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl(UnmatchedToken(<))
       listener: beginTopLevelMember(n)
-      parseTopLevelMethod(UnmatchedToken(<), null, UnmatchedToken(<), Instance of 'ComplexTypeInfo', null, e)
+      parseTopLevelMethod(UnmatchedToken(<), null, UnmatchedToken(<), Instance of 'ComplexTypeInfo', null, e, false)
         listener: beginTopLevelMethod(UnmatchedToken(<), null)
         ensureIdentifier(UnmatchedToken(<), typeReference)
           listener: handleIdentifier(n, typeReference)
@@ -20,7 +20,7 @@
           listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected '>' after this., null, {string: >}], S, S)
         listener: endTypeArguments(1, <, >)
         listener: handleType(n, null)
-        ensureIdentifier(>, topLevelFunctionDeclaration)
+        ensureIdentifierPotentiallyRecovered(>, topLevelFunctionDeclaration, false)
           insertSyntheticIdentifier(>, topLevelFunctionDeclaration, message: Message[ExpectedIdentifier, Expected an identifier, but got ''., null, {token: }], messageOnToken: null)
             reportRecoverableError(, Message[ExpectedIdentifier, Expected an identifier, but got ''., null, {token: }])
               listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got ''., null, {token: }], , )
@@ -51,5 +51,7 @@
   listener: endTopLevelDeclaration()
   reportAllErrorTokens(UnmatchedToken(())
     listener: handleErrorToken(UnmatchedToken(())
+    listener: handleRecoverableError(Message[UnmatchedToken, Can't find ')' to match '('., null, {string: ), token: (}], UnmatchedToken((), UnmatchedToken(())
     listener: handleErrorToken(UnmatchedToken(<))
+    listener: handleRecoverableError(Message[UnmatchedToken, Can't find '>' to match '<'., null, {string: >, token: <}], UnmatchedToken(<), UnmatchedToken(<))
   listener: endCompilationUnit(1, )
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_39026.crash_dart.intertwined.expect b/pkg/front_end/parser_testcases/error_recovery/issue_39026.crash_dart.intertwined.expect
index 51025d0..a182540 100644
--- a/pkg/front_end/parser_testcases/error_recovery/issue_39026.crash_dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_39026.crash_dart.intertwined.expect
@@ -36,7 +36,7 @@
                 reportRecoverableError(<, MissingOperatorKeyword)
                   listener: handleRecoverableError(MissingOperatorKeyword, <, <)
                 rewriter()
-                parseMethod({, null, null, null, null, null, {, Instance of 'SimpleType', null, operator, DeclarationKind.Class, A)
+                parseMethod({, null, null, null, null, null, {, Instance of 'SimpleType', null, operator, DeclarationKind.Class, A, false)
                   listener: beginMethod(null, null, null, null, null, operator)
                   listener: handleIdentifier(co, typeReference)
                   listener: handleNoTypeArguments(operator)
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_39026_prime.crash_dart.intertwined.expect b/pkg/front_end/parser_testcases/error_recovery/issue_39026_prime.crash_dart.intertwined.expect
index a52cd94..cc5f502 100644
--- a/pkg/front_end/parser_testcases/error_recovery/issue_39026_prime.crash_dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_39026_prime.crash_dart.intertwined.expect
@@ -32,7 +32,7 @@
                 listener: beginMetadataStar(co)
                 listener: endMetadataStar(0)
               listener: beginMember()
-              parseMethod({, null, null, null, null, null, {, Instance of 'SimpleType', null, operator, DeclarationKind.Class, A)
+              parseMethod({, null, null, null, null, null, {, Instance of 'SimpleType', null, operator, DeclarationKind.Class, A, false)
                 listener: beginMethod(null, null, null, null, null, operator)
                 listener: handleIdentifier(co, typeReference)
                 listener: handleNoTypeArguments(operator)
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_39058.crash_dart.expect b/pkg/front_end/parser_testcases/error_recovery/issue_39058.crash_dart.expect
index c60bbb7..431957c 100644
--- a/pkg/front_end/parser_testcases/error_recovery/issue_39058.crash_dart.expect
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_39058.crash_dart.expect
@@ -4,6 +4,18 @@
 {<[](
 ^
 
+parser/error_recovery/issue_39058.crash:1:5: Can't find ')' to match '('.
+{<[](
+    ^
+
+parser/error_recovery/issue_39058.crash:1:2: Can't find '>' to match '<'.
+{<[](
+ ^
+
+parser/error_recovery/issue_39058.crash:1:1: Can't find '}' to match '{'.
+{<[](
+^
+
 beginCompilationUnit({)
   beginMetadataStar({)
   endMetadataStar(0)
@@ -22,6 +34,9 @@
     handleInvalidTopLevelDeclaration(})
   endTopLevelDeclaration()
   handleErrorToken(UnmatchedToken(())
+  handleRecoverableError(Message[UnmatchedToken, Can't find ')' to match '('., null, {string: ), token: (}], UnmatchedToken((), UnmatchedToken(())
   handleErrorToken(UnmatchedToken(<))
+  handleRecoverableError(Message[UnmatchedToken, Can't find '>' to match '<'., null, {string: >, token: <}], UnmatchedToken(<), UnmatchedToken(<))
   handleErrorToken(UnmatchedToken({))
+  handleRecoverableError(Message[UnmatchedToken, Can't find '}' to match '{'., null, {string: }, token: {}], UnmatchedToken({), UnmatchedToken({))
 endCompilationUnit(1, )
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_39058.crash_dart.intertwined.expect b/pkg/front_end/parser_testcases/error_recovery/issue_39058.crash_dart.intertwined.expect
index 3c32b06..feb6d9d 100644
--- a/pkg/front_end/parser_testcases/error_recovery/issue_39058.crash_dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_39058.crash_dart.intertwined.expect
@@ -51,6 +51,9 @@
   listener: endTopLevelDeclaration()
   reportAllErrorTokens(UnmatchedToken(())
     listener: handleErrorToken(UnmatchedToken(())
+    listener: handleRecoverableError(Message[UnmatchedToken, Can't find ')' to match '('., null, {string: ), token: (}], UnmatchedToken((), UnmatchedToken(())
     listener: handleErrorToken(UnmatchedToken(<))
+    listener: handleRecoverableError(Message[UnmatchedToken, Can't find '>' to match '<'., null, {string: >, token: <}], UnmatchedToken(<), UnmatchedToken(<))
     listener: handleErrorToken(UnmatchedToken({))
+    listener: handleRecoverableError(Message[UnmatchedToken, Can't find '}' to match '{'., null, {string: }, token: {}], UnmatchedToken({), UnmatchedToken({))
   listener: endCompilationUnit(1, )
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_39060.dart.intertwined.expect b/pkg/front_end/parser_testcases/error_recovery/issue_39060.dart.intertwined.expect
index 5a251df..e5d85d2 100644
--- a/pkg/front_end/parser_testcases/error_recovery/issue_39060.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_39060.dart.intertwined.expect
@@ -8,10 +8,11 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl()
       listener: beginTopLevelMember(main)
-      parseTopLevelMethod(, null, , Instance of 'NoType', null, main)
+      isReservedKeyword(()
+      parseTopLevelMethod(, null, , Instance of 'NoType', null, main, false)
         listener: beginTopLevelMethod(, null)
         listener: handleNoType()
-        ensureIdentifier(, topLevelFunctionDeclaration)
+        ensureIdentifierPotentiallyRecovered(, topLevelFunctionDeclaration, false)
           listener: handleIdentifier(main, topLevelFunctionDeclaration)
         parseMethodTypeVar(main)
           listener: handleNoTypeVariables(()
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_39202.crash_dart.intertwined.expect b/pkg/front_end/parser_testcases/error_recovery/issue_39202.crash_dart.intertwined.expect
index d73d799..bcf47c6 100644
--- a/pkg/front_end/parser_testcases/error_recovery/issue_39202.crash_dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_39202.crash_dart.intertwined.expect
@@ -28,10 +28,11 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl())
       listener: beginTopLevelMember(async)
-      parseTopLevelMethod(), null, ), Instance of 'NoType', null, async)
+      isReservedKeyword(=>)
+      parseTopLevelMethod(), null, ), Instance of 'NoType', null, async, false)
         listener: beginTopLevelMethod(), null)
         listener: handleNoType())
-        ensureIdentifier(), topLevelFunctionDeclaration)
+        ensureIdentifierPotentiallyRecovered(), topLevelFunctionDeclaration, false)
           listener: handleIdentifier(async, topLevelFunctionDeclaration)
         parseMethodTypeVar(async)
           listener: handleNoTypeVariables(=>)
@@ -74,7 +75,7 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(b)
-      parseFields(;, null, null, null, null, null, ;, Instance of 'ComplexTypeInfo', $, DeclarationKind.TopLevel, null)
+      parseFields(;, null, null, null, null, null, ;, Instance of 'ComplexTypeInfo', $, DeclarationKind.TopLevel, null, false)
         ensureIdentifier(;, typeReference)
           listener: handleIdentifier(b, typeReference)
         listener: beginTypeArguments(<)
@@ -85,7 +86,7 @@
           listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected '>' after this., null, {string: >}], c, c)
         listener: endTypeArguments(1, <, >)
         listener: handleType(b, null)
-        ensureIdentifier(>, topLevelVariableDeclaration)
+        ensureIdentifierPotentiallyRecovered(>, topLevelVariableDeclaration, false)
           insertSyntheticIdentifier(>, topLevelVariableDeclaration, message: Message[ExpectedIdentifier, Expected an identifier, but got ''., null, {token: }], messageOnToken: null)
             reportRecoverableError(, Message[ExpectedIdentifier, Expected an identifier, but got ''., null, {token: }])
               listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got ''., null, {token: }], , )
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_39230.crash_dart.intertwined.expect b/pkg/front_end/parser_testcases/error_recovery/issue_39230.crash_dart.intertwined.expect
index 739d7ab..2310e8e 100644
--- a/pkg/front_end/parser_testcases/error_recovery/issue_39230.crash_dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_39230.crash_dart.intertwined.expect
@@ -32,10 +32,11 @@
                 listener: beginMetadataStar(C)
                 listener: endMetadataStar(0)
               listener: beginMember()
-              parseMethod({, null, null, null, null, null, {, Instance of 'NoType', null, C, DeclarationKind.Class, C)
+              isReservedKeyword(()
+              parseMethod({, null, null, null, null, null, {, Instance of 'NoType', null, C, DeclarationKind.Class, C, false)
                 listener: beginMethod(null, null, null, null, null, C)
                 listener: handleNoType({)
-                ensureIdentifier({, methodDeclaration)
+                ensureIdentifierPotentiallyRecovered({, methodDeclaration, false)
                   listener: handleIdentifier(C, methodDeclaration)
                 parseQualifiedRestOpt(C, methodDeclarationContinuation)
                 parseMethodTypeVar(C)
@@ -72,7 +73,7 @@
                   reportRecoverableError(/, MissingOperatorKeyword)
                     listener: handleRecoverableError(MissingOperatorKeyword, /, /)
                   rewriter()
-                  parseMethod(}, null, null, null, null, null, }, Instance of 'NoType', null, operator, DeclarationKind.Class, C)
+                  parseMethod(}, null, null, null, null, null, }, Instance of 'NoType', null, operator, DeclarationKind.Class, C, false)
                     listener: beginMethod(null, null, null, null, null, operator)
                     listener: handleNoType(})
                     parseOperatorName(})
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_39958_01.dart.intertwined.expect b/pkg/front_end/parser_testcases/error_recovery/issue_39958_01.dart.intertwined.expect
index da6f501..f36fedc 100644
--- a/pkg/front_end/parser_testcases/error_recovery/issue_39958_01.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_39958_01.dart.intertwined.expect
@@ -8,7 +8,7 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl()
       listener: beginTopLevelMember(void)
-      parseTopLevelMethod(, null, , Instance of 'VoidType', null, f)
+      parseTopLevelMethod(, null, , Instance of 'VoidType', null, f, false)
         listener: beginTopLevelMethod(, null)
         reportRecoverableError(<, VoidWithTypeArguments)
           listener: handleRecoverableError(VoidWithTypeArguments, <, <)
@@ -18,7 +18,7 @@
         listener: handleType(int, null)
         listener: endTypeArguments(1, <, >)
         listener: handleVoidKeywordWithTypeArguments(void)
-        ensureIdentifier(>, topLevelFunctionDeclaration)
+        ensureIdentifierPotentiallyRecovered(>, topLevelFunctionDeclaration, false)
           listener: handleIdentifier(f, topLevelFunctionDeclaration)
         parseMethodTypeVar(f)
           listener: handleNoTypeVariables(()
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_39958_02.dart.intertwined.expect b/pkg/front_end/parser_testcases/error_recovery/issue_39958_02.dart.intertwined.expect
index 23ab86d..8126215 100644
--- a/pkg/front_end/parser_testcases/error_recovery/issue_39958_02.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_39958_02.dart.intertwined.expect
@@ -8,7 +8,7 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl()
       listener: beginTopLevelMember(dynamic)
-      parseTopLevelMethod(, null, , Instance of 'SimpleTypeWith1Argument', null, f)
+      parseTopLevelMethod(, null, , Instance of 'SimpleTypeWith1Argument', null, f, false)
         listener: beginTopLevelMethod(, null)
         listener: handleIdentifier(dynamic, typeReference)
         listener: beginTypeArguments(<)
@@ -17,7 +17,7 @@
         listener: handleType(int, null)
         listener: endTypeArguments(1, <, >)
         listener: handleType(dynamic, null)
-        ensureIdentifier(>, topLevelFunctionDeclaration)
+        ensureIdentifierPotentiallyRecovered(>, topLevelFunctionDeclaration, false)
           listener: handleIdentifier(f, topLevelFunctionDeclaration)
         parseMethodTypeVar(f)
           listener: handleNoTypeVariables(()
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_39958_03.dart.intertwined.expect b/pkg/front_end/parser_testcases/error_recovery/issue_39958_03.dart.intertwined.expect
index 86f90d9..aefdb96 100644
--- a/pkg/front_end/parser_testcases/error_recovery/issue_39958_03.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_39958_03.dart.intertwined.expect
@@ -8,7 +8,7 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl()
       listener: beginTopLevelMember(int)
-      parseTopLevelMethod(, null, , Instance of 'SimpleTypeWith1Argument', null, f)
+      parseTopLevelMethod(, null, , Instance of 'SimpleTypeWith1Argument', null, f, false)
         listener: beginTopLevelMethod(, null)
         listener: handleIdentifier(int, typeReference)
         listener: beginTypeArguments(<)
@@ -17,7 +17,7 @@
         listener: handleType(int, null)
         listener: endTypeArguments(1, <, >)
         listener: handleType(int, null)
-        ensureIdentifier(>, topLevelFunctionDeclaration)
+        ensureIdentifierPotentiallyRecovered(>, topLevelFunctionDeclaration, false)
           listener: handleIdentifier(f, topLevelFunctionDeclaration)
         parseMethodTypeVar(f)
           listener: handleNoTypeVariables(()
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_39958_04.dart.intertwined.expect b/pkg/front_end/parser_testcases/error_recovery/issue_39958_04.dart.intertwined.expect
index 502ba49..cc0c855 100644
--- a/pkg/front_end/parser_testcases/error_recovery/issue_39958_04.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_39958_04.dart.intertwined.expect
@@ -8,7 +8,7 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl()
       listener: beginTopLevelMember(Foo)
-      parseTopLevelMethod(, null, , Instance of 'SimpleTypeWith1Argument', null, f)
+      parseTopLevelMethod(, null, , Instance of 'SimpleTypeWith1Argument', null, f, false)
         listener: beginTopLevelMethod(, null)
         listener: handleIdentifier(Foo, typeReference)
         listener: beginTypeArguments(<)
@@ -17,7 +17,7 @@
         listener: handleType(int, null)
         listener: endTypeArguments(1, <, >)
         listener: handleType(Foo, null)
-        ensureIdentifier(>, topLevelFunctionDeclaration)
+        ensureIdentifierPotentiallyRecovered(>, topLevelFunctionDeclaration, false)
           listener: handleIdentifier(f, topLevelFunctionDeclaration)
         parseMethodTypeVar(f)
           listener: handleNoTypeVariables(()
diff --git a/pkg/front_end/parser_testcases/error_recovery/method_called_with.dart.expect b/pkg/front_end/parser_testcases/error_recovery/method_called_with.dart.expect
index eac2ae2..f04da6b 100644
--- a/pkg/front_end/parser_testcases/error_recovery/method_called_with.dart.expect
+++ b/pkg/front_end/parser_testcases/error_recovery/method_called_with.dart.expect
@@ -1,109 +1,25 @@
 Problems reported:
 
-parser/error_recovery/method_called_with:2:3: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
-  int with() => 7;
-  ^^^
-
-parser/error_recovery/method_called_with:2:3: Expected ';' after this.
-  int with() => 7;
-  ^^^
-
-parser/error_recovery/method_called_with:2:7: Expected a class member, but got 'with'.
+parser/error_recovery/method_called_with:2:7: Expected an identifier, but got 'with'.
   int with() => 7;
       ^^^^
 
-parser/error_recovery/method_called_with:2:11: Expected an identifier, but got '('.
-  int with() => 7;
-          ^
-
-parser/error_recovery/method_called_with:3:3: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
-  int with = 7;
-  ^^^
-
-parser/error_recovery/method_called_with:3:3: Expected ';' after this.
-  int with = 7;
-  ^^^
-
-parser/error_recovery/method_called_with:3:7: Expected a class member, but got 'with'.
+parser/error_recovery/method_called_with:3:7: Expected an identifier, but got 'with'.
   int with = 7;
       ^^^^
 
-parser/error_recovery/method_called_with:3:12: Operator declarations must be preceded by the keyword 'operator'.
-  int with = 7;
-           ^
-
-parser/error_recovery/method_called_with:3:12: The string '=' isn't a user-definable operator.
-  int with = 7;
-           ^
-
-parser/error_recovery/method_called_with:3:12: A method declaration needs an explicit list of parameters.
-  int with = 7;
-           ^
-
-parser/error_recovery/method_called_with:3:14: Expected a function body, but got '7'.
-  int with = 7;
-             ^
-
-parser/error_recovery/method_called_with:3:14: Expected a class member, but got '7'.
-  int with = 7;
-             ^
-
-parser/error_recovery/method_called_with:3:15: Expected a class member, but got ';'.
-  int with = 7;
-              ^
-
-parser/error_recovery/method_called_with:4:7: Expected ';' after this.
-  int get with => 7;
-      ^^^
-
-parser/error_recovery/method_called_with:4:11: Expected a class member, but got 'with'.
+parser/error_recovery/method_called_with:4:11: Expected an identifier, but got 'with'.
   int get with => 7;
           ^^^^
 
-parser/error_recovery/method_called_with:4:16: Expected an identifier, but got '=>'.
-  int get with => 7;
-               ^^
-
-parser/error_recovery/method_called_with:4:16: A method declaration needs an explicit list of parameters.
-  int get with => 7;
-               ^^
-
-parser/error_recovery/method_called_with:5:8: Expected ';' after this.
-  void set with(int x) {}
-       ^^^
-
-parser/error_recovery/method_called_with:5:12: Expected a class member, but got 'with'.
+parser/error_recovery/method_called_with:5:12: Expected an identifier, but got 'with'.
   void set with(int x) {}
            ^^^^
 
-parser/error_recovery/method_called_with:5:16: Expected an identifier, but got '('.
-  void set with(int x) {}
-               ^
-
-parser/error_recovery/method_called_with:8:1: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
-int with() => 7;
-^^^
-
-parser/error_recovery/method_called_with:8:1: Expected ';' after this.
-int with() => 7;
-^^^
-
 parser/error_recovery/method_called_with:8:5: Expected an identifier, but got 'with'.
 int with() => 7;
     ^^^^
 
-parser/error_recovery/method_called_with:9:1: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
-int with = 7;
-^^^
-
-parser/error_recovery/method_called_with:9:1: Expected ';' after this.
-int with = 7;
-^^^
-
-parser/error_recovery/method_called_with:9:5: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
-int with = 7;
-    ^^^^
-
 parser/error_recovery/method_called_with:9:5: Expected an identifier, but got 'with'.
 int with = 7;
     ^^^^
@@ -124,203 +40,107 @@
         beginMetadataStar(int)
         endMetadataStar(0)
         beginMember()
-          handleRecoverableError(MissingConstFinalVarOrType, int, int)
-          handleNoType({)
-          handleIdentifier(int, fieldDeclaration)
-          handleNoFieldInitializer(with)
-          handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+          beginMethod(null, null, null, null, null, with)
+            handleIdentifier(int, typeReference)
+            handleNoTypeArguments(with)
+            handleType(int, null)
+            handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'with'., null, {token: with}], with, with)
+            handleIdentifier(with, methodDeclaration)
+            handleNoTypeVariables(()
+            beginFormalParameters((, MemberKind.NonStaticMethod)
+            endFormalParameters(0, (, ), MemberKind.NonStaticMethod)
+            handleNoInitializers()
+            handleAsyncModifier(null, null)
+            handleLiteralInt(7)
+            handleExpressionFunctionBody(=>, ;)
+          endClassMethod(null, int, (, null, ;)
+        endMember()
+        beginMetadataStar(int)
+        endMetadataStar(0)
+        beginMember()
+          handleIdentifier(int, typeReference)
+          handleNoTypeArguments(with)
+          handleType(int, null)
+          handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'with'., null, {token: with}], with, with)
+          handleIdentifier(with, fieldDeclaration)
+          beginFieldInitializer(=)
+            handleLiteralInt(7)
+          endFieldInitializer(=, ;)
         endClassFields(null, null, null, null, 1, int, ;)
       endMember()
-      beginMetadataStar(with)
+      beginMetadataStar(int)
       endMetadataStar(0)
       beginMember()
-        handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got 'with'., null, {token: with}], with, with)
-        handleInvalidMember(with)
-      endMember()
-      beginMetadataStar(()
-      endMetadataStar(0)
-      beginMember()
-        beginMethod(null, null, null, null, null, ()
-          handleNoType(with)
-          handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}], (, ()
-          handleIdentifier(, methodDeclaration)
-          handleNoTypeVariables(()
-          beginFormalParameters((, MemberKind.NonStaticMethod)
-          endFormalParameters(0, (, ), MemberKind.NonStaticMethod)
+        beginMethod(null, null, null, null, get, with)
+          handleIdentifier(int, typeReference)
+          handleNoTypeArguments(get)
+          handleType(int, null)
+          handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'with'., null, {token: with}], with, with)
+          handleIdentifier(with, methodDeclaration)
+          handleNoTypeVariables(=>)
+          handleNoFormalParameters(=>, MemberKind.NonStaticMethod)
           handleNoInitializers()
           handleAsyncModifier(null, null)
           handleLiteralInt(7)
           handleExpressionFunctionBody(=>, ;)
-        endClassMethod(null, , (, null, ;)
+        endClassMethod(get, int, =>, null, ;)
       endMember()
-      beginMetadataStar(int)
+      beginMetadataStar(void)
       endMetadataStar(0)
       beginMember()
-        handleRecoverableError(MissingConstFinalVarOrType, int, int)
-        handleNoType(;)
-        handleIdentifier(int, fieldDeclaration)
-        handleNoFieldInitializer(with)
-        handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
-      endClassFields(null, null, null, null, 1, int, ;)
-    endMember()
-    beginMetadataStar(with)
-    endMetadataStar(0)
-    beginMember()
-      handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got 'with'., null, {token: with}], with, with)
-      handleInvalidMember(with)
-    endMember()
-    beginMetadataStar(=)
-    endMetadataStar(0)
-    beginMember()
-      handleRecoverableError(MissingOperatorKeyword, =, =)
-      beginMethod(null, null, null, null, null, operator)
-        handleNoType(with)
-        handleRecoverableError(Message[InvalidOperator, The string '=' isn't a user-definable operator., null, {token: =}], =, =)
-        handleInvalidOperatorName(operator, =)
-        handleNoTypeVariables(7)
-        handleRecoverableError(MissingMethodParameters, =, =)
-        beginFormalParameters((, MemberKind.NonStaticMethod)
-        endFormalParameters(0, (, ), MemberKind.NonStaticMethod)
-        handleNoInitializers()
-        handleAsyncModifier(null, null)
-        handleRecoverableError(Message[ExpectedFunctionBody, Expected a function body, but got '7'., null, {token: 7}], 7, 7)
-        handleInvalidFunctionBody({)
-      endClassMethod(null, operator, (, null, })
-    endMember()
-    beginMetadataStar(7)
-    endMetadataStar(0)
-    beginMember()
-      handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got '7'., null, {token: 7}], 7, 7)
-      handleInvalidMember(7)
-    endMember()
-    beginMetadataStar(;)
-    endMetadataStar(0)
-    beginMember()
-      handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got ';'., null, {token: ;}], ;, ;)
-      handleInvalidMember(;)
-    endMember()
-    beginMetadataStar(int)
-    endMetadataStar(0)
-    beginMember()
-      handleIdentifier(int, typeReference)
-      handleNoTypeArguments(get)
-      handleType(int, null)
-      handleIdentifier(get, fieldDeclaration)
-      handleNoFieldInitializer(with)
-      handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], get, get)
-    endClassFields(null, null, null, null, 1, int, ;)
-  endMember()
-  beginMetadataStar(with)
-  endMetadataStar(0)
-  beginMember()
-    handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got 'with'., null, {token: with}], with, with)
-    handleInvalidMember(with)
-  endMember()
-  beginMetadataStar(=>)
-  endMetadataStar(0)
-  beginMember()
-    beginMethod(null, null, null, null, null, =>)
-      handleNoType(with)
-      handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '=>'., null, {token: =>}], =>, =>)
-      handleIdentifier(, methodDeclaration)
-      handleNoTypeVariables(=>)
-      handleRecoverableError(MissingMethodParameters, =>, =>)
-      beginFormalParameters((, MemberKind.NonStaticMethod)
-      endFormalParameters(0, (, ), MemberKind.NonStaticMethod)
-      handleNoInitializers()
-      handleAsyncModifier(null, null)
-      handleLiteralInt(7)
-      handleExpressionFunctionBody(=>, ;)
-    endClassMethod(null, , (, null, ;)
-  endMember()
-  beginMetadataStar(void)
-  endMetadataStar(0)
-  beginMember()
-    handleVoidKeyword(void)
-    handleIdentifier(set, fieldDeclaration)
-    handleNoFieldInitializer(with)
-    handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], set, set)
-  endClassFields(null, null, null, null, 1, void, ;)
-endMember()
-beginMetadataStar(with)
+        beginMethod(null, null, null, null, set, with)
+          handleVoidKeyword(void)
+          handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'with'., null, {token: with}], with, with)
+          handleIdentifier(with, methodDeclaration)
+          handleNoTypeVariables(()
+          beginFormalParameters((, MemberKind.NonStaticMethod)
+            beginMetadataStar(int)
+            endMetadataStar(0)
+            beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+              handleIdentifier(int, typeReference)
+              handleNoTypeArguments(x)
+              handleType(int, null)
+              handleIdentifier(x, formalParameterDeclaration)
+              handleFormalParameterWithoutValue())
+            endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+          endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
+          handleNoInitializers()
+          handleAsyncModifier(null, null)
+          beginBlockFunctionBody({)
+          endBlockFunctionBody(0, {, })
+        endClassMethod(set, void, (, null, })
+      endMember()
+    endClassOrMixinBody(DeclarationKind.Class, 4, {, })
+  endClassDeclaration(class, })
+endTopLevelDeclaration(int)
+beginMetadataStar(int)
 endMetadataStar(0)
-beginMember()
-  handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got 'with'., null, {token: with}], with, with)
-  handleInvalidMember(with)
-endMember()
-beginMetadataStar(()
-endMetadataStar(0)
-beginMember()
-  beginMethod(null, null, null, null, null, ()
-    handleNoType(with)
-    handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}], (, ()
-    handleIdentifier(, methodDeclaration)
+beginTopLevelMember(int)
+  beginTopLevelMethod(}, null)
+    handleIdentifier(int, typeReference)
+    handleNoTypeArguments(with)
+    handleType(int, null)
+    handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'with'., null, {token: with}], with, with)
+    handleIdentifier(with, topLevelFunctionDeclaration)
     handleNoTypeVariables(()
-    beginFormalParameters((, MemberKind.NonStaticMethod)
-      beginMetadataStar(int)
-      endMetadataStar(0)
-      beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
-        handleIdentifier(int, typeReference)
-        handleNoTypeArguments(x)
-        handleType(int, null)
-        handleIdentifier(x, formalParameterDeclaration)
-        handleFormalParameterWithoutValue())
-      endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
-    endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
-    handleNoInitializers()
+    beginFormalParameters((, MemberKind.TopLevelMethod)
+    endFormalParameters(0, (, ), MemberKind.TopLevelMethod)
     handleAsyncModifier(null, null)
-    beginBlockFunctionBody({)
-    endBlockFunctionBody(0, {, })
-  endClassMethod(null, , (, null, })
-endMember()
-endClassOrMixinBody(DeclarationKind.Class, 14, {, })
-endClassDeclaration(class, })
+    handleLiteralInt(7)
+    handleExpressionFunctionBody(=>, ;)
+  endTopLevelMethod(int, null, ;)
 endTopLevelDeclaration(int)
 beginMetadataStar(int)
 endMetadataStar(0)
 beginTopLevelMember(int)
-handleRecoverableError(MissingConstFinalVarOrType, int, int)
-handleNoType(})
-handleIdentifier(int, topLevelVariableDeclaration)
-handleNoFieldInitializer(with)
-handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+  handleIdentifier(int, typeReference)
+  handleNoTypeArguments(with)
+  handleType(int, null)
+  handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'with'., null, {token: with}], with, with)
+  handleIdentifier(with, topLevelVariableDeclaration)
+  beginFieldInitializer(=)
+    handleLiteralInt(7)
+  endFieldInitializer(=, ;)
 endTopLevelFields(null, null, null, null, 1, int, ;)
-endTopLevelDeclaration(with)
-beginMetadataStar(with)
-endMetadataStar(0)
-beginTopLevelMember(with)
-beginTopLevelMethod(;, null)
-handleNoType(;)
-handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'with'., null, {token: with}], with, with)
-handleIdentifier(with, topLevelFunctionDeclaration)
-handleNoTypeVariables(()
-beginFormalParameters((, MemberKind.TopLevelMethod)
-endFormalParameters(0, (, ), MemberKind.TopLevelMethod)
-handleAsyncModifier(null, null)
-handleLiteralInt(7)
-handleExpressionFunctionBody(=>, ;)
-endTopLevelMethod(with, null, ;)
-endTopLevelDeclaration(int)
-beginMetadataStar(int)
-endMetadataStar(0)
-beginTopLevelMember(int)
-handleRecoverableError(MissingConstFinalVarOrType, int, int)
-handleNoType(;)
-handleIdentifier(int, topLevelVariableDeclaration)
-handleNoFieldInitializer(with)
-handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
-endTopLevelFields(null, null, null, null, 1, int, ;)
-endTopLevelDeclaration(with)
-beginMetadataStar(with)
-endMetadataStar(0)
-beginTopLevelMember(with)
-handleRecoverableError(MissingConstFinalVarOrType, with, with)
-handleNoType(;)
-handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'with'., null, {token: with}], with, with)
-handleIdentifier(with, topLevelVariableDeclaration)
-beginFieldInitializer(=)
-handleLiteralInt(7)
-endFieldInitializer(=, ;)
-endTopLevelFields(null, null, null, null, 1, with, ;)
 endTopLevelDeclaration()
-endCompilationUnit(5, )
+endCompilationUnit(3, )
diff --git a/pkg/front_end/parser_testcases/error_recovery/method_called_with.dart.intertwined.expect b/pkg/front_end/parser_testcases/error_recovery/method_called_with.dart.intertwined.expect
index 3335498..34e33bb 100644
--- a/pkg/front_end/parser_testcases/error_recovery/method_called_with.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/error_recovery/method_called_with.dart.intertwined.expect
@@ -32,328 +32,161 @@
                 listener: beginMetadataStar(int)
                 listener: endMetadataStar(0)
               listener: beginMember()
-              parseFields({, null, null, null, null, null, {, Instance of 'NoType', int, DeclarationKind.Class, C)
-                reportRecoverableError(int, MissingConstFinalVarOrType)
-                  listener: handleRecoverableError(MissingConstFinalVarOrType, int, int)
-                listener: handleNoType({)
-                ensureIdentifier({, fieldDeclaration)
-                  listener: handleIdentifier(int, fieldDeclaration)
-                parseFieldInitializerOpt(int, int, null, null, DeclarationKind.Class, C)
-                  listener: handleNoFieldInitializer(with)
-                ensureSemicolon(int)
-                  reportRecoverableError(int, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
-                    listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
-                  rewriter()
-                listener: endClassFields(null, null, null, null, 1, int, ;)
-              listener: endMember()
-            notEofOrValue(}, with)
-            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, C)
-              parseMetadataStar(;)
-                listener: beginMetadataStar(with)
-                listener: endMetadataStar(0)
-              listener: beginMember()
-              recoverFromInvalidMember(;, ;, null, null, null, null, null, ;, Instance of 'NoType', null, DeclarationKind.Class, C)
-                reportRecoverableErrorWithToken(with, Instance of 'Template<(Token) => Message>')
-                  listener: handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got 'with'., null, {token: with}], with, with)
-                listener: handleInvalidMember(with)
-                listener: endMember()
-            notEofOrValue(}, ()
-            parseClassOrMixinOrExtensionMemberImpl(with, DeclarationKind.Class, C)
-              parseMetadataStar(with)
-                listener: beginMetadataStar(()
-                listener: endMetadataStar(0)
-              listener: beginMember()
-              recoverFromInvalidMember(with, with, null, null, null, null, null, with, Instance of 'NoType', null, DeclarationKind.Class, C)
-                parseMethod(with, null, null, null, null, null, with, Instance of 'NoType', null, (, DeclarationKind.Class, C)
-                  listener: beginMethod(null, null, null, null, null, ()
-                  listener: handleNoType(with)
-                  ensureIdentifier(with, methodDeclaration)
-                    insertSyntheticIdentifier(with, methodDeclaration, message: null, messageOnToken: null)
-                      reportRecoverableError((, Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}])
-                        listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}], (, ()
-                      rewriter()
-                    listener: handleIdentifier(, methodDeclaration)
-                  parseQualifiedRestOpt(, methodDeclarationContinuation)
-                  parseMethodTypeVar()
-                    listener: handleNoTypeVariables(()
-                  parseGetterOrFormalParameters(, (, false, MemberKind.NonStaticMethod)
-                    parseFormalParameters(, MemberKind.NonStaticMethod)
-                      parseFormalParametersRest((, MemberKind.NonStaticMethod)
-                        listener: beginFormalParameters((, MemberKind.NonStaticMethod)
-                        listener: endFormalParameters(0, (, ), MemberKind.NonStaticMethod)
-                  parseInitializersOpt())
-                    listener: handleNoInitializers()
-                  parseAsyncModifierOpt())
-                    listener: handleAsyncModifier(null, null)
-                    inPlainSync()
-                  inPlainSync()
-                  parseFunctionBody(), false, true)
-                    parseExpressionFunctionBody(=>, false)
-                      parseExpression(=>)
-                        parsePrecedenceExpression(=>, 1, true)
-                          parseUnaryExpression(=>, true)
-                            parsePrimary(=>, expression)
-                              parseLiteralInt(=>)
-                                listener: handleLiteralInt(7)
-                      ensureSemicolon(7)
-                      listener: handleExpressionFunctionBody(=>, ;)
-                      inGenerator()
-                  listener: endClassMethod(null, , (, null, ;)
-                listener: endMember()
-            notEofOrValue(}, int)
-            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, C)
-              parseMetadataStar(;)
-                listener: beginMetadataStar(int)
-                listener: endMetadataStar(0)
-              listener: beginMember()
-              parseFields(;, null, null, null, null, null, ;, Instance of 'NoType', int, DeclarationKind.Class, C)
-                reportRecoverableError(int, MissingConstFinalVarOrType)
-                  listener: handleRecoverableError(MissingConstFinalVarOrType, int, int)
-                listener: handleNoType(;)
-                ensureIdentifier(;, fieldDeclaration)
-                  listener: handleIdentifier(int, fieldDeclaration)
-                parseFieldInitializerOpt(int, int, null, null, DeclarationKind.Class, C)
-                  listener: handleNoFieldInitializer(with)
-                ensureSemicolon(int)
-                  reportRecoverableError(int, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
-                    listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
-                  rewriter()
-                listener: endClassFields(null, null, null, null, 1, int, ;)
-              listener: endMember()
-            notEofOrValue(}, with)
-            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, C)
-              parseMetadataStar(;)
-                listener: beginMetadataStar(with)
-                listener: endMetadataStar(0)
-              listener: beginMember()
-              recoverFromInvalidMember(;, ;, null, null, null, null, null, ;, Instance of 'NoType', null, DeclarationKind.Class, C)
-                reportRecoverableErrorWithToken(with, Instance of 'Template<(Token) => Message>')
-                  listener: handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got 'with'., null, {token: with}], with, with)
-                listener: handleInvalidMember(with)
-                listener: endMember()
-            notEofOrValue(}, =)
-            parseClassOrMixinOrExtensionMemberImpl(with, DeclarationKind.Class, C)
-              parseMetadataStar(with)
-                listener: beginMetadataStar(=)
-                listener: endMetadataStar(0)
-              listener: beginMember()
-              recoverFromInvalidMember(with, with, null, null, null, null, null, with, Instance of 'NoType', null, DeclarationKind.Class, C)
-                parseInvalidOperatorDeclaration(with, null, null, null, null, null, with, DeclarationKind.Class, C)
-                  reportRecoverableError(=, MissingOperatorKeyword)
-                    listener: handleRecoverableError(MissingOperatorKeyword, =, =)
-                  rewriter()
-                  parseMethod(with, null, null, null, null, null, with, Instance of 'NoType', null, operator, DeclarationKind.Class, C)
-                    listener: beginMethod(null, null, null, null, null, operator)
-                    listener: handleNoType(with)
-                    parseOperatorName(with)
-                      isUnaryMinus(=)
-                      reportRecoverableErrorWithToken(=, Instance of 'Template<(Token) => Message>')
-                        listener: handleRecoverableError(Message[InvalidOperator, The string '=' isn't a user-definable operator., null, {token: =}], =, =)
-                      listener: handleInvalidOperatorName(operator, =)
-                    parseMethodTypeVar(=)
-                      listener: handleNoTypeVariables(7)
-                    parseGetterOrFormalParameters(=, operator, false, MemberKind.NonStaticMethod)
-                      missingParameterMessage(MemberKind.NonStaticMethod)
-                      reportRecoverableError(=, MissingMethodParameters)
-                        listener: handleRecoverableError(MissingMethodParameters, =, =)
-                      rewriter()
-                      parseFormalParametersRest((, MemberKind.NonStaticMethod)
-                        listener: beginFormalParameters((, MemberKind.NonStaticMethod)
-                        listener: endFormalParameters(0, (, ), MemberKind.NonStaticMethod)
-                    parseInitializersOpt())
-                      listener: handleNoInitializers()
-                    parseAsyncModifierOpt())
-                      listener: handleAsyncModifier(null, null)
-                      inPlainSync()
-                    inPlainSync()
-                    parseFunctionBody(), false, true)
-                      ensureBlock(), Instance of 'Template<(Token) => Message>', null)
-                        reportRecoverableError(7, Message[ExpectedFunctionBody, Expected a function body, but got '7'., null, {token: 7}])
-                          listener: handleRecoverableError(Message[ExpectedFunctionBody, Expected a function body, but got '7'., null, {token: 7}], 7, 7)
-                        insertBlock())
-                          rewriter()
-                          rewriter()
-                      listener: handleInvalidFunctionBody({)
-                    listener: endClassMethod(null, operator, (, null, })
-                  listener: endMember()
-            notEofOrValue(}, 7)
-            parseClassOrMixinOrExtensionMemberImpl(}, DeclarationKind.Class, C)
-              parseMetadataStar(})
-                listener: beginMetadataStar(7)
-                listener: endMetadataStar(0)
-              listener: beginMember()
-              recoverFromInvalidMember(}, }, null, null, null, null, null, }, Instance of 'NoType', null, DeclarationKind.Class, C)
-                reportRecoverableErrorWithToken(7, Instance of 'Template<(Token) => Message>')
-                  listener: handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got '7'., null, {token: 7}], 7, 7)
-                listener: handleInvalidMember(7)
-                listener: endMember()
-            notEofOrValue(}, ;)
-            parseClassOrMixinOrExtensionMemberImpl(7, DeclarationKind.Class, C)
-              parseMetadataStar(7)
-                listener: beginMetadataStar(;)
-                listener: endMetadataStar(0)
-              listener: beginMember()
-              recoverFromInvalidMember(7, 7, null, null, null, null, null, 7, Instance of 'NoType', null, DeclarationKind.Class, C)
-                reportRecoverableErrorWithToken(;, Instance of 'Template<(Token) => Message>')
-                  listener: handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got ';'., null, {token: ;}], ;, ;)
-                listener: handleInvalidMember(;)
-                listener: endMember()
-            notEofOrValue(}, int)
-            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, C)
-              parseMetadataStar(;)
-                listener: beginMetadataStar(int)
-                listener: endMetadataStar(0)
-              listener: beginMember()
-              parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', get, DeclarationKind.Class, C)
+              isReservedKeyword(with)
+              indicatesMethodOrField(()
+              parseMethod({, null, null, null, null, null, {, Instance of 'SimpleType', null, with, DeclarationKind.Class, C, true)
+                listener: beginMethod(null, null, null, null, null, with)
                 listener: handleIdentifier(int, typeReference)
-                listener: handleNoTypeArguments(get)
+                listener: handleNoTypeArguments(with)
                 listener: handleType(int, null)
-                ensureIdentifier(int, fieldDeclaration)
-                  listener: handleIdentifier(get, fieldDeclaration)
-                parseFieldInitializerOpt(get, get, null, null, DeclarationKind.Class, C)
-                  listener: handleNoFieldInitializer(with)
-                ensureSemicolon(get)
-                  reportRecoverableError(get, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
-                    listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], get, get)
-                  rewriter()
-                listener: endClassFields(null, null, null, null, 1, int, ;)
-              listener: endMember()
-            notEofOrValue(}, with)
-            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, C)
-              parseMetadataStar(;)
-                listener: beginMetadataStar(with)
-                listener: endMetadataStar(0)
-              listener: beginMember()
-              recoverFromInvalidMember(;, ;, null, null, null, null, null, ;, Instance of 'NoType', null, DeclarationKind.Class, C)
-                reportRecoverableErrorWithToken(with, Instance of 'Template<(Token) => Message>')
-                  listener: handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got 'with'., null, {token: with}], with, with)
-                listener: handleInvalidMember(with)
-                listener: endMember()
-            notEofOrValue(}, =>)
-            parseClassOrMixinOrExtensionMemberImpl(with, DeclarationKind.Class, C)
-              parseMetadataStar(with)
-                listener: beginMetadataStar(=>)
-                listener: endMetadataStar(0)
-              listener: beginMember()
-              recoverFromInvalidMember(with, with, null, null, null, null, null, with, Instance of 'NoType', null, DeclarationKind.Class, C)
-                parseMethod(with, null, null, null, null, null, with, Instance of 'NoType', null, =>, DeclarationKind.Class, C)
-                  listener: beginMethod(null, null, null, null, null, =>)
-                  listener: handleNoType(with)
-                  ensureIdentifier(with, methodDeclaration)
-                    insertSyntheticIdentifier(with, methodDeclaration, message: null, messageOnToken: null)
-                      reportRecoverableError(=>, Message[ExpectedIdentifier, Expected an identifier, but got '=>'., null, {token: =>}])
-                        listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '=>'., null, {token: =>}], =>, =>)
-                      rewriter()
-                    listener: handleIdentifier(, methodDeclaration)
-                  parseQualifiedRestOpt(, methodDeclarationContinuation)
-                  parseMethodTypeVar()
-                    listener: handleNoTypeVariables(=>)
-                  parseGetterOrFormalParameters(, =>, false, MemberKind.NonStaticMethod)
-                    missingParameterMessage(MemberKind.NonStaticMethod)
-                    reportRecoverableError(=>, MissingMethodParameters)
-                      listener: handleRecoverableError(MissingMethodParameters, =>, =>)
-                    rewriter()
+                ensureIdentifierPotentiallyRecovered(int, methodDeclaration, true)
+                  reportRecoverableErrorWithToken(with, Instance of 'Template<(Token) => Message>')
+                    listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'with'., null, {token: with}], with, with)
+                  listener: handleIdentifier(with, methodDeclaration)
+                parseQualifiedRestOpt(with, methodDeclarationContinuation)
+                parseMethodTypeVar(with)
+                  listener: handleNoTypeVariables(()
+                parseGetterOrFormalParameters(with, with, false, MemberKind.NonStaticMethod)
+                  parseFormalParameters(with, MemberKind.NonStaticMethod)
                     parseFormalParametersRest((, MemberKind.NonStaticMethod)
                       listener: beginFormalParameters((, MemberKind.NonStaticMethod)
                       listener: endFormalParameters(0, (, ), MemberKind.NonStaticMethod)
-                  parseInitializersOpt())
-                    listener: handleNoInitializers()
-                  parseAsyncModifierOpt())
-                    listener: handleAsyncModifier(null, null)
-                    inPlainSync()
+                parseInitializersOpt())
+                  listener: handleNoInitializers()
+                parseAsyncModifierOpt())
+                  listener: handleAsyncModifier(null, null)
                   inPlainSync()
-                  parseFunctionBody(), false, true)
-                    parseExpressionFunctionBody(=>, false)
-                      parseExpression(=>)
-                        parsePrecedenceExpression(=>, 1, true)
-                          parseUnaryExpression(=>, true)
-                            parsePrimary(=>, expression)
-                              parseLiteralInt(=>)
-                                listener: handleLiteralInt(7)
-                      ensureSemicolon(7)
-                      listener: handleExpressionFunctionBody(=>, ;)
-                      inGenerator()
-                  listener: endClassMethod(null, , (, null, ;)
-                listener: endMember()
+                inPlainSync()
+                parseFunctionBody(), false, true)
+                  parseExpressionFunctionBody(=>, false)
+                    parseExpression(=>)
+                      parsePrecedenceExpression(=>, 1, true)
+                        parseUnaryExpression(=>, true)
+                          parsePrimary(=>, expression)
+                            parseLiteralInt(=>)
+                              listener: handleLiteralInt(7)
+                    ensureSemicolon(7)
+                    listener: handleExpressionFunctionBody(=>, ;)
+                    inGenerator()
+                listener: endClassMethod(null, int, (, null, ;)
+              listener: endMember()
+            notEofOrValue(}, int)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, C)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(int)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              isReservedKeyword(with)
+              indicatesMethodOrField(=)
+              parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', with, DeclarationKind.Class, C, true)
+                listener: handleIdentifier(int, typeReference)
+                listener: handleNoTypeArguments(with)
+                listener: handleType(int, null)
+                ensureIdentifierPotentiallyRecovered(int, fieldDeclaration, true)
+                  reportRecoverableErrorWithToken(with, Instance of 'Template<(Token) => Message>')
+                    listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'with'., null, {token: with}], with, with)
+                  listener: handleIdentifier(with, fieldDeclaration)
+                parseFieldInitializerOpt(with, with, null, null, DeclarationKind.Class, C)
+                  listener: beginFieldInitializer(=)
+                  parseExpression(=)
+                    parsePrecedenceExpression(=, 1, true)
+                      parseUnaryExpression(=, true)
+                        parsePrimary(=, expression)
+                          parseLiteralInt(=)
+                            listener: handleLiteralInt(7)
+                  listener: endFieldInitializer(=, ;)
+                listener: endClassFields(null, null, null, null, 1, int, ;)
+              listener: endMember()
+            notEofOrValue(}, int)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, C)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(int)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              isReservedKeyword(with)
+              indicatesMethodOrField(=>)
+              parseMethod(;, null, null, null, null, null, ;, Instance of 'SimpleType', get, with, DeclarationKind.Class, C, true)
+                listener: beginMethod(null, null, null, null, get, with)
+                listener: handleIdentifier(int, typeReference)
+                listener: handleNoTypeArguments(get)
+                listener: handleType(int, null)
+                ensureIdentifierPotentiallyRecovered(get, methodDeclaration, true)
+                  reportRecoverableErrorWithToken(with, Instance of 'Template<(Token) => Message>')
+                    listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'with'., null, {token: with}], with, with)
+                  listener: handleIdentifier(with, methodDeclaration)
+                parseQualifiedRestOpt(with, methodDeclarationContinuation)
+                listener: handleNoTypeVariables(=>)
+                parseGetterOrFormalParameters(with, with, true, MemberKind.NonStaticMethod)
+                  listener: handleNoFormalParameters(=>, MemberKind.NonStaticMethod)
+                parseInitializersOpt(with)
+                  listener: handleNoInitializers()
+                parseAsyncModifierOpt(with)
+                  listener: handleAsyncModifier(null, null)
+                  inPlainSync()
+                inPlainSync()
+                inPlainSync()
+                parseFunctionBody(with, false, true)
+                  parseExpressionFunctionBody(=>, false)
+                    parseExpression(=>)
+                      parsePrecedenceExpression(=>, 1, true)
+                        parseUnaryExpression(=>, true)
+                          parsePrimary(=>, expression)
+                            parseLiteralInt(=>)
+                              listener: handleLiteralInt(7)
+                    ensureSemicolon(7)
+                    listener: handleExpressionFunctionBody(=>, ;)
+                    inGenerator()
+                listener: endClassMethod(get, int, =>, null, ;)
+              listener: endMember()
             notEofOrValue(}, void)
             parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, C)
               parseMetadataStar(;)
                 listener: beginMetadataStar(void)
                 listener: endMetadataStar(0)
               listener: beginMember()
-              parseFields(;, null, null, null, null, null, ;, Instance of 'VoidType', set, DeclarationKind.Class, C)
+              isReservedKeyword(with)
+              indicatesMethodOrField(()
+              parseMethod(;, null, null, null, null, null, ;, Instance of 'VoidType', set, with, DeclarationKind.Class, C, true)
+                listener: beginMethod(null, null, null, null, set, with)
                 listener: handleVoidKeyword(void)
-                ensureIdentifier(void, fieldDeclaration)
-                  listener: handleIdentifier(set, fieldDeclaration)
-                parseFieldInitializerOpt(set, set, null, null, DeclarationKind.Class, C)
-                  listener: handleNoFieldInitializer(with)
-                ensureSemicolon(set)
-                  reportRecoverableError(set, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
-                    listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], set, set)
-                  rewriter()
-                listener: endClassFields(null, null, null, null, 1, void, ;)
-              listener: endMember()
-            notEofOrValue(}, with)
-            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, C)
-              parseMetadataStar(;)
-                listener: beginMetadataStar(with)
-                listener: endMetadataStar(0)
-              listener: beginMember()
-              recoverFromInvalidMember(;, ;, null, null, null, null, null, ;, Instance of 'NoType', null, DeclarationKind.Class, C)
-                reportRecoverableErrorWithToken(with, Instance of 'Template<(Token) => Message>')
-                  listener: handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got 'with'., null, {token: with}], with, with)
-                listener: handleInvalidMember(with)
-                listener: endMember()
-            notEofOrValue(}, ()
-            parseClassOrMixinOrExtensionMemberImpl(with, DeclarationKind.Class, C)
-              parseMetadataStar(with)
-                listener: beginMetadataStar(()
-                listener: endMetadataStar(0)
-              listener: beginMember()
-              recoverFromInvalidMember(with, with, null, null, null, null, null, with, Instance of 'NoType', null, DeclarationKind.Class, C)
-                parseMethod(with, null, null, null, null, null, with, Instance of 'NoType', null, (, DeclarationKind.Class, C)
-                  listener: beginMethod(null, null, null, null, null, ()
-                  listener: handleNoType(with)
-                  ensureIdentifier(with, methodDeclaration)
-                    insertSyntheticIdentifier(with, methodDeclaration, message: null, messageOnToken: null)
-                      reportRecoverableError((, Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}])
-                        listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}], (, ()
-                      rewriter()
-                    listener: handleIdentifier(, methodDeclaration)
-                  parseQualifiedRestOpt(, methodDeclarationContinuation)
-                  parseMethodTypeVar()
-                    listener: handleNoTypeVariables(()
-                  parseGetterOrFormalParameters(, (, false, MemberKind.NonStaticMethod)
-                    parseFormalParameters(, MemberKind.NonStaticMethod)
-                      parseFormalParametersRest((, MemberKind.NonStaticMethod)
-                        listener: beginFormalParameters((, MemberKind.NonStaticMethod)
-                        parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
-                          parseMetadataStar(()
-                            listener: beginMetadataStar(int)
-                            listener: endMetadataStar(0)
-                          listener: beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
-                          listener: handleIdentifier(int, typeReference)
-                          listener: handleNoTypeArguments(x)
-                          listener: handleType(int, null)
-                          ensureIdentifier(int, formalParameterDeclaration)
-                            listener: handleIdentifier(x, formalParameterDeclaration)
-                          listener: handleFormalParameterWithoutValue())
-                          listener: endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
-                        listener: endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
-                  parseInitializersOpt())
-                    listener: handleNoInitializers()
-                  parseAsyncModifierOpt())
-                    listener: handleAsyncModifier(null, null)
-                    inPlainSync()
+                ensureIdentifierPotentiallyRecovered(set, methodDeclaration, true)
+                  reportRecoverableErrorWithToken(with, Instance of 'Template<(Token) => Message>')
+                    listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'with'., null, {token: with}], with, with)
+                  listener: handleIdentifier(with, methodDeclaration)
+                parseQualifiedRestOpt(with, methodDeclarationContinuation)
+                listener: handleNoTypeVariables(()
+                parseGetterOrFormalParameters(with, with, false, MemberKind.NonStaticMethod)
+                  parseFormalParameters(with, MemberKind.NonStaticMethod)
+                    parseFormalParametersRest((, MemberKind.NonStaticMethod)
+                      listener: beginFormalParameters((, MemberKind.NonStaticMethod)
+                      parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+                        parseMetadataStar(()
+                          listener: beginMetadataStar(int)
+                          listener: endMetadataStar(0)
+                        listener: beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+                        listener: handleIdentifier(int, typeReference)
+                        listener: handleNoTypeArguments(x)
+                        listener: handleType(int, null)
+                        ensureIdentifier(int, formalParameterDeclaration)
+                          listener: handleIdentifier(x, formalParameterDeclaration)
+                        listener: handleFormalParameterWithoutValue())
+                        listener: endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+                      listener: endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
+                parseInitializersOpt())
+                  listener: handleNoInitializers()
+                parseAsyncModifierOpt())
+                  listener: handleAsyncModifier(null, null)
                   inPlainSync()
-                  parseFunctionBody(), false, true)
-                    listener: beginBlockFunctionBody({)
-                    notEofOrValue(}, })
-                    listener: endBlockFunctionBody(0, {, })
-                  listener: endClassMethod(null, , (, null, })
-                listener: endMember()
+                inPlainSync()
+                inPlainSync()
+                parseFunctionBody(), false, true)
+                  listener: beginBlockFunctionBody({)
+                  notEofOrValue(}, })
+                  listener: endBlockFunctionBody(0, {, })
+                listener: endClassMethod(set, void, (, null, })
+              listener: endMember()
             notEofOrValue(}, })
-            listener: endClassOrMixinBody(DeclarationKind.Class, 14, {, })
+            listener: endClassOrMixinBody(DeclarationKind.Class, 4, {, })
           listener: endClassDeclaration(class, })
   listener: endTopLevelDeclaration(int)
   parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
@@ -362,30 +195,14 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl(})
       listener: beginTopLevelMember(int)
-      parseFields(}, null, null, null, null, null, }, Instance of 'NoType', int, DeclarationKind.TopLevel, null)
-        reportRecoverableError(int, MissingConstFinalVarOrType)
-          listener: handleRecoverableError(MissingConstFinalVarOrType, int, int)
-        listener: handleNoType(})
-        ensureIdentifier(}, topLevelVariableDeclaration)
-          listener: handleIdentifier(int, topLevelVariableDeclaration)
-        parseFieldInitializerOpt(int, int, null, null, DeclarationKind.TopLevel, null)
-          listener: handleNoFieldInitializer(with)
-        ensureSemicolon(int)
-          reportRecoverableError(int, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
-            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
-          rewriter()
-        listener: endTopLevelFields(null, null, null, null, 1, int, ;)
-  listener: endTopLevelDeclaration(with)
-  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
-    parseMetadataStar(;)
-      listener: beginMetadataStar(with)
-      listener: endMetadataStar(0)
-    parseTopLevelMemberImpl(;)
-      listener: beginTopLevelMember(with)
-      parseTopLevelMethod(;, null, ;, Instance of 'NoType', null, with)
-        listener: beginTopLevelMethod(;, null)
-        listener: handleNoType(;)
-        ensureIdentifier(;, topLevelFunctionDeclaration)
+      isReservedKeyword(with)
+      indicatesMethodOrField(()
+      parseTopLevelMethod(}, null, }, Instance of 'SimpleType', null, with, true)
+        listener: beginTopLevelMethod(}, null)
+        listener: handleIdentifier(int, typeReference)
+        listener: handleNoTypeArguments(with)
+        listener: handleType(int, null)
+        ensureIdentifierPotentiallyRecovered(int, topLevelFunctionDeclaration, true)
           reportRecoverableErrorWithToken(with, Instance of 'Template<(Token) => Message>')
             listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'with'., null, {token: with}], with, with)
           listener: handleIdentifier(with, topLevelFunctionDeclaration)
@@ -410,7 +227,7 @@
             ensureSemicolon(7)
             listener: handleExpressionFunctionBody(=>, ;)
             inGenerator()
-        listener: endTopLevelMethod(with, null, ;)
+        listener: endTopLevelMethod(int, null, ;)
   listener: endTopLevelDeclaration(int)
   parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
     parseMetadataStar(;)
@@ -418,31 +235,13 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(int)
-      parseFields(;, null, null, null, null, null, ;, Instance of 'NoType', int, DeclarationKind.TopLevel, null)
-        reportRecoverableError(int, MissingConstFinalVarOrType)
-          listener: handleRecoverableError(MissingConstFinalVarOrType, int, int)
-        listener: handleNoType(;)
-        ensureIdentifier(;, topLevelVariableDeclaration)
-          listener: handleIdentifier(int, topLevelVariableDeclaration)
-        parseFieldInitializerOpt(int, int, null, null, DeclarationKind.TopLevel, null)
-          listener: handleNoFieldInitializer(with)
-        ensureSemicolon(int)
-          reportRecoverableError(int, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
-            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
-          rewriter()
-        listener: endTopLevelFields(null, null, null, null, 1, int, ;)
-  listener: endTopLevelDeclaration(with)
-  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
-    parseMetadataStar(;)
-      listener: beginMetadataStar(with)
-      listener: endMetadataStar(0)
-    parseTopLevelMemberImpl(;)
-      listener: beginTopLevelMember(with)
-      parseFields(;, null, null, null, null, null, ;, Instance of 'NoType', with, DeclarationKind.TopLevel, null)
-        reportRecoverableError(with, MissingConstFinalVarOrType)
-          listener: handleRecoverableError(MissingConstFinalVarOrType, with, with)
-        listener: handleNoType(;)
-        ensureIdentifier(;, topLevelVariableDeclaration)
+      isReservedKeyword(with)
+      indicatesMethodOrField(=)
+      parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', with, DeclarationKind.TopLevel, null, true)
+        listener: handleIdentifier(int, typeReference)
+        listener: handleNoTypeArguments(with)
+        listener: handleType(int, null)
+        ensureIdentifierPotentiallyRecovered(int, topLevelVariableDeclaration, true)
           reportRecoverableErrorWithToken(with, Instance of 'Template<(Token) => Message>')
             listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'with'., null, {token: with}], with, with)
           listener: handleIdentifier(with, topLevelVariableDeclaration)
@@ -455,7 +254,7 @@
                   parseLiteralInt(=)
                     listener: handleLiteralInt(7)
           listener: endFieldInitializer(=, ;)
-        listener: endTopLevelFields(null, null, null, null, 1, with, ;)
+        listener: endTopLevelFields(null, null, null, null, 1, int, ;)
   listener: endTopLevelDeclaration()
   reportAllErrorTokens(class)
-  listener: endCompilationUnit(5, )
+  listener: endCompilationUnit(3, )
diff --git a/pkg/front_end/parser_testcases/error_recovery/method_called_with.dart.parser.expect b/pkg/front_end/parser_testcases/error_recovery/method_called_with.dart.parser.expect
index 0d88f7f..8295b68 100644
--- a/pkg/front_end/parser_testcases/error_recovery/method_called_with.dart.parser.expect
+++ b/pkg/front_end/parser_testcases/error_recovery/method_called_with.dart.parser.expect
@@ -1,23 +1,21 @@
-NOTICE: Stream was rewritten by parser!
-
 class C {
-int ;with() => 7;
-int ;with operator= (){}7;
-int get ;with ()=> 7;
-void set ;with(int x) {}
+int with() => 7;
+int with = 7;
+int get with => 7;
+void set with(int x) {}
 }
 
-int ;with() => 7;
-int ;with = 7;
+int with() => 7;
+int with = 7;
 
 
 class[KeywordToken] C[StringToken] {[BeginToken]
-int[StringToken] ;[SyntheticToken]with[KeywordToken][SyntheticStringToken]([BeginToken])[SimpleToken] =>[SimpleToken] 7[StringToken];[SimpleToken]
-int[StringToken] ;[SyntheticToken]with[KeywordToken] operator[SyntheticKeywordToken]=[SimpleToken] ([SyntheticBeginToken])[SyntheticToken]{[SyntheticBeginToken]}[SyntheticToken]7[StringToken];[SimpleToken]
-int[StringToken] get[KeywordToken] ;[SyntheticToken]with[KeywordToken] [SyntheticStringToken]([SyntheticBeginToken])[SyntheticToken]=>[SimpleToken] 7[StringToken];[SimpleToken]
-void[KeywordToken] set[KeywordToken] ;[SyntheticToken]with[KeywordToken][SyntheticStringToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]}[SimpleToken]
+int[StringToken] with[KeywordToken]([BeginToken])[SimpleToken] =>[SimpleToken] 7[StringToken];[SimpleToken]
+int[StringToken] with[KeywordToken] =[SimpleToken] 7[StringToken];[SimpleToken]
+int[StringToken] get[KeywordToken] with[KeywordToken] =>[SimpleToken] 7[StringToken];[SimpleToken]
+void[KeywordToken] set[KeywordToken] with[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]}[SimpleToken]
 }[SimpleToken]
 
-int[StringToken] ;[SyntheticToken]with[KeywordToken]([BeginToken])[SimpleToken] =>[SimpleToken] 7[StringToken];[SimpleToken]
-int[StringToken] ;[SyntheticToken]with[KeywordToken] =[SimpleToken] 7[StringToken];[SimpleToken]
+int[StringToken] with[KeywordToken]([BeginToken])[SimpleToken] =>[SimpleToken] 7[StringToken];[SimpleToken]
+int[StringToken] with[KeywordToken] =[SimpleToken] 7[StringToken];[SimpleToken]
 [SimpleToken]
diff --git a/pkg/front_end/parser_testcases/error_recovery/method_called_with_prime.dart.intertwined.expect b/pkg/front_end/parser_testcases/error_recovery/method_called_with_prime.dart.intertwined.expect
index 695beee..bd0176a 100644
--- a/pkg/front_end/parser_testcases/error_recovery/method_called_with_prime.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/error_recovery/method_called_with_prime.dart.intertwined.expect
@@ -32,12 +32,12 @@
                 listener: beginMetadataStar(int)
                 listener: endMetadataStar(0)
               listener: beginMember()
-              parseMethod({, null, null, null, null, null, {, Instance of 'SimpleType', null, With, DeclarationKind.Class, C)
+              parseMethod({, null, null, null, null, null, {, Instance of 'SimpleType', null, With, DeclarationKind.Class, C, false)
                 listener: beginMethod(null, null, null, null, null, With)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(With)
                 listener: handleType(int, null)
-                ensureIdentifier(int, methodDeclaration)
+                ensureIdentifierPotentiallyRecovered(int, methodDeclaration, false)
                   listener: handleIdentifier(With, methodDeclaration)
                 parseQualifiedRestOpt(With, methodDeclarationContinuation)
                 parseMethodTypeVar(With)
@@ -72,11 +72,11 @@
                 listener: beginMetadataStar(int)
                 listener: endMetadataStar(0)
               listener: beginMember()
-              parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', With, DeclarationKind.Class, C)
+              parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', With, DeclarationKind.Class, C, false)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(With)
                 listener: handleType(int, null)
-                ensureIdentifier(int, fieldDeclaration)
+                ensureIdentifierPotentiallyRecovered(int, fieldDeclaration, false)
                   listener: handleIdentifier(With, fieldDeclaration)
                 parseFieldInitializerOpt(With, With, null, null, DeclarationKind.Class, C)
                   listener: beginFieldInitializer(=)
@@ -95,12 +95,12 @@
                 listener: beginMetadataStar(int)
                 listener: endMetadataStar(0)
               listener: beginMember()
-              parseMethod(;, null, null, null, null, null, ;, Instance of 'SimpleType', get, With, DeclarationKind.Class, C)
+              parseMethod(;, null, null, null, null, null, ;, Instance of 'SimpleType', get, With, DeclarationKind.Class, C, false)
                 listener: beginMethod(null, null, null, null, get, With)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(get)
                 listener: handleType(int, null)
-                ensureIdentifier(get, methodDeclaration)
+                ensureIdentifierPotentiallyRecovered(get, methodDeclaration, false)
                   listener: handleIdentifier(With, methodDeclaration)
                 parseQualifiedRestOpt(With, methodDeclarationContinuation)
                 listener: handleNoTypeVariables(=>)
@@ -132,10 +132,10 @@
                 listener: beginMetadataStar(void)
                 listener: endMetadataStar(0)
               listener: beginMember()
-              parseMethod(;, null, null, null, null, null, ;, Instance of 'VoidType', set, With, DeclarationKind.Class, C)
+              parseMethod(;, null, null, null, null, null, ;, Instance of 'VoidType', set, With, DeclarationKind.Class, C, false)
                 listener: beginMethod(null, null, null, null, set, With)
                 listener: handleVoidKeyword(void)
-                ensureIdentifier(set, methodDeclaration)
+                ensureIdentifierPotentiallyRecovered(set, methodDeclaration, false)
                   listener: handleIdentifier(With, methodDeclaration)
                 parseQualifiedRestOpt(With, methodDeclarationContinuation)
                 listener: handleNoTypeVariables(()
@@ -179,12 +179,12 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl(})
       listener: beginTopLevelMember(int)
-      parseTopLevelMethod(}, null, }, Instance of 'SimpleType', null, With)
+      parseTopLevelMethod(}, null, }, Instance of 'SimpleType', null, With, false)
         listener: beginTopLevelMethod(}, null)
         listener: handleIdentifier(int, typeReference)
         listener: handleNoTypeArguments(With)
         listener: handleType(int, null)
-        ensureIdentifier(int, topLevelFunctionDeclaration)
+        ensureIdentifierPotentiallyRecovered(int, topLevelFunctionDeclaration, false)
           listener: handleIdentifier(With, topLevelFunctionDeclaration)
         parseMethodTypeVar(With)
           listener: handleNoTypeVariables(()
@@ -215,11 +215,11 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(int)
-      parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', With, DeclarationKind.TopLevel, null)
+      parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', With, DeclarationKind.TopLevel, null, false)
         listener: handleIdentifier(int, typeReference)
         listener: handleNoTypeArguments(With)
         listener: handleType(int, null)
-        ensureIdentifier(int, topLevelVariableDeclaration)
+        ensureIdentifierPotentiallyRecovered(int, topLevelVariableDeclaration, false)
           listener: handleIdentifier(With, topLevelVariableDeclaration)
         parseFieldInitializerOpt(With, With, null, null, DeclarationKind.TopLevel, null)
           listener: beginFieldInitializer(=)
diff --git a/pkg/front_end/parser_testcases/error_recovery/method_called_with_prime2.dart b/pkg/front_end/parser_testcases/error_recovery/method_called_with_prime2.dart
new file mode 100644
index 0000000..b9275fa66
--- /dev/null
+++ b/pkg/front_end/parser_testcases/error_recovery/method_called_with_prime2.dart
@@ -0,0 +1,9 @@
+// This doesn't actually have any method called 'with', but could (wrongly) be
+// seen as a method called 'class' returning type "foo" (or at least give
+// errors at a wrong place.
+
+class B {}foo
+class M1 {foo
+  class M2 {
+  }
+}
\ No newline at end of file
diff --git a/pkg/front_end/parser_testcases/error_recovery/method_called_with_prime2.dart.expect b/pkg/front_end/parser_testcases/error_recovery/method_called_with_prime2.dart.expect
new file mode 100644
index 0000000..e98991a
--- /dev/null
+++ b/pkg/front_end/parser_testcases/error_recovery/method_called_with_prime2.dart.expect
@@ -0,0 +1,79 @@
+Problems reported:
+
+parser/error_recovery/method_called_with_prime2:5:11: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
+class B {}foo
+          ^^^
+
+parser/error_recovery/method_called_with_prime2:5:11: Expected ';' after this.
+class B {}foo
+          ^^^
+
+parser/error_recovery/method_called_with_prime2:6:11: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
+class M1 {foo
+          ^^^
+
+parser/error_recovery/method_called_with_prime2:6:11: Expected ';' after this.
+class M1 {foo
+          ^^^
+
+parser/error_recovery/method_called_with_prime2:7:3: Classes can't be declared inside other classes.
+  class M2 {
+  ^^^^^
+
+beginCompilationUnit(class)
+  beginMetadataStar(class)
+  endMetadataStar(0)
+  beginClassOrNamedMixinApplicationPrelude(class)
+    handleIdentifier(B, classOrMixinDeclaration)
+    handleNoTypeVariables({)
+    beginClassDeclaration(class, null, B)
+      handleNoType(B)
+      handleClassExtends(null)
+      handleClassNoWithClause()
+      handleClassOrMixinImplements(null, 0)
+      handleClassHeader(class, class, null)
+      beginClassOrMixinBody(DeclarationKind.Class, {)
+      endClassOrMixinBody(DeclarationKind.Class, 0, {, })
+    endClassDeclaration(class, })
+  endTopLevelDeclaration(foo)
+  beginMetadataStar(foo)
+  endMetadataStar(0)
+  beginTopLevelMember(foo)
+    handleRecoverableError(MissingConstFinalVarOrType, foo, foo)
+    handleNoType(})
+    handleIdentifier(foo, topLevelVariableDeclaration)
+    handleNoFieldInitializer(class)
+    handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], foo, foo)
+  endTopLevelFields(null, null, null, null, 1, foo, ;)
+endTopLevelDeclaration(class)
+beginMetadataStar(class)
+endMetadataStar(0)
+beginClassOrNamedMixinApplicationPrelude(class)
+  handleIdentifier(M1, classOrMixinDeclaration)
+  handleNoTypeVariables({)
+  beginClassDeclaration(class, null, M1)
+    handleNoType(M1)
+    handleClassExtends(null)
+    handleClassNoWithClause()
+    handleClassOrMixinImplements(null, 0)
+    handleClassHeader(class, class, null)
+    beginClassOrMixinBody(DeclarationKind.Class, {)
+      beginMetadataStar(foo)
+      endMetadataStar(0)
+      beginMember()
+        handleRecoverableError(MissingConstFinalVarOrType, foo, foo)
+        handleNoType({)
+        handleIdentifier(foo, fieldDeclaration)
+        handleNoFieldInitializer(class)
+        handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], foo, foo)
+      endClassFields(null, null, null, null, 1, foo, ;)
+    endMember()
+    beginMetadataStar(class)
+    endMetadataStar(0)
+    beginMember()
+      handleRecoverableError(ClassInClass, class, class)
+      handleInvalidMember(class)
+    endClassOrMixinBody(DeclarationKind.Class, 2, {, })
+  endClassDeclaration(class, })
+endTopLevelDeclaration()
+endCompilationUnit(3, )
diff --git a/pkg/front_end/parser_testcases/error_recovery/method_called_with_prime2.dart.intertwined.expect b/pkg/front_end/parser_testcases/error_recovery/method_called_with_prime2.dart.intertwined.expect
new file mode 100644
index 0000000..1dcb53c
--- /dev/null
+++ b/pkg/front_end/parser_testcases/error_recovery/method_called_with_prime2.dart.intertwined.expect
@@ -0,0 +1,117 @@
+parseUnit(class)
+  skipErrorTokens(class)
+  listener: beginCompilationUnit(class)
+  syntheticPreviousToken(class)
+  parseTopLevelDeclarationImpl(, Instance of 'DirectiveContext')
+    parseMetadataStar()
+      listener: beginMetadataStar(class)
+      listener: endMetadataStar(0)
+    parseTopLevelKeywordDeclaration(, class, Instance of 'DirectiveContext')
+      parseClassDeclarationModifiers(, class)
+      parseClassOrNamedMixinApplication(null, class)
+        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        ensureIdentifier(class, classOrMixinDeclaration)
+          listener: handleIdentifier(B, classOrMixinDeclaration)
+        listener: handleNoTypeVariables({)
+        listener: beginClassDeclaration(class, null, B)
+        parseClass(B, class, class, B)
+          parseClassHeaderOpt(B, class, class)
+            parseClassExtendsOpt(B)
+              listener: handleNoType(B)
+              listener: handleClassExtends(null)
+            parseWithClauseOpt(B)
+              listener: handleClassNoWithClause()
+            parseClassOrMixinImplementsOpt(B)
+              listener: handleClassOrMixinImplements(null, 0)
+            listener: handleClassHeader(class, class, null)
+          parseClassOrMixinOrExtensionBody(B, DeclarationKind.Class, B)
+            listener: beginClassOrMixinBody(DeclarationKind.Class, {)
+            notEofOrValue(}, })
+            listener: endClassOrMixinBody(DeclarationKind.Class, 0, {, })
+          listener: endClassDeclaration(class, })
+  listener: endTopLevelDeclaration(foo)
+  parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
+    parseMetadataStar(})
+      listener: beginMetadataStar(foo)
+      listener: endMetadataStar(0)
+    parseTopLevelMemberImpl(})
+      listener: beginTopLevelMember(foo)
+      isReservedKeyword(class)
+      indicatesMethodOrField(M1)
+      parseFields(}, null, null, null, null, null, }, Instance of 'NoType', foo, DeclarationKind.TopLevel, null, false)
+        reportRecoverableError(foo, MissingConstFinalVarOrType)
+          listener: handleRecoverableError(MissingConstFinalVarOrType, foo, foo)
+        listener: handleNoType(})
+        ensureIdentifierPotentiallyRecovered(}, topLevelVariableDeclaration, false)
+          listener: handleIdentifier(foo, topLevelVariableDeclaration)
+        parseFieldInitializerOpt(foo, foo, null, null, DeclarationKind.TopLevel, null)
+          listener: handleNoFieldInitializer(class)
+        ensureSemicolon(foo)
+          reportRecoverableError(foo, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], foo, foo)
+          rewriter()
+        listener: endTopLevelFields(null, null, null, null, 1, foo, ;)
+  listener: endTopLevelDeclaration(class)
+  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
+    parseMetadataStar(;)
+      listener: beginMetadataStar(class)
+      listener: endMetadataStar(0)
+    parseTopLevelKeywordDeclaration(;, class, Instance of 'DirectiveContext')
+      parseClassDeclarationModifiers(;, class)
+      parseClassOrNamedMixinApplication(null, class)
+        listener: beginClassOrNamedMixinApplicationPrelude(class)
+        ensureIdentifier(class, classOrMixinDeclaration)
+          listener: handleIdentifier(M1, classOrMixinDeclaration)
+        listener: handleNoTypeVariables({)
+        listener: beginClassDeclaration(class, null, M1)
+        parseClass(M1, class, class, M1)
+          parseClassHeaderOpt(M1, class, class)
+            parseClassExtendsOpt(M1)
+              listener: handleNoType(M1)
+              listener: handleClassExtends(null)
+            parseWithClauseOpt(M1)
+              listener: handleClassNoWithClause()
+            parseClassOrMixinImplementsOpt(M1)
+              listener: handleClassOrMixinImplements(null, 0)
+            listener: handleClassHeader(class, class, null)
+          parseClassOrMixinOrExtensionBody(M1, DeclarationKind.Class, M1)
+            listener: beginClassOrMixinBody(DeclarationKind.Class, {)
+            notEofOrValue(}, foo)
+            parseClassOrMixinOrExtensionMemberImpl({, DeclarationKind.Class, M1)
+              parseMetadataStar({)
+                listener: beginMetadataStar(foo)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              isReservedKeyword(class)
+              indicatesMethodOrField(M2)
+              parseFields({, null, null, null, null, null, {, Instance of 'NoType', foo, DeclarationKind.Class, M1, false)
+                reportRecoverableError(foo, MissingConstFinalVarOrType)
+                  listener: handleRecoverableError(MissingConstFinalVarOrType, foo, foo)
+                listener: handleNoType({)
+                ensureIdentifierPotentiallyRecovered({, fieldDeclaration, false)
+                  listener: handleIdentifier(foo, fieldDeclaration)
+                parseFieldInitializerOpt(foo, foo, null, null, DeclarationKind.Class, M1)
+                  listener: handleNoFieldInitializer(class)
+                ensureSemicolon(foo)
+                  reportRecoverableError(foo, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+                    listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], foo, foo)
+                  rewriter()
+                listener: endClassFields(null, null, null, null, 1, foo, ;)
+              listener: endMember()
+            notEofOrValue(}, class)
+            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, M1)
+              parseMetadataStar(;)
+                listener: beginMetadataStar(class)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              recoverFromInvalidMember(;, ;, null, null, null, null, null, ;, Instance of 'NoType', null, DeclarationKind.Class, M1)
+                reportAndSkipClassInClass(class)
+                  reportRecoverableError(class, ClassInClass)
+                    listener: handleRecoverableError(ClassInClass, class, class)
+                  listener: handleInvalidMember(class)
+            notEofOrValue(}, })
+            listener: endClassOrMixinBody(DeclarationKind.Class, 2, {, })
+          listener: endClassDeclaration(class, })
+  listener: endTopLevelDeclaration()
+  reportAllErrorTokens(class)
+  listener: endCompilationUnit(3, )
diff --git a/pkg/front_end/parser_testcases/error_recovery/method_called_with_prime2.dart.parser.expect b/pkg/front_end/parser_testcases/error_recovery/method_called_with_prime2.dart.parser.expect
new file mode 100644
index 0000000..2a72163
--- /dev/null
+++ b/pkg/front_end/parser_testcases/error_recovery/method_called_with_prime2.dart.parser.expect
@@ -0,0 +1,13 @@
+NOTICE: Stream was rewritten by parser!
+
+class B {}foo
+;class M1 {foo
+;class M2 {
+}
+}
+
+class[KeywordToken] B[StringToken] {[BeginToken]}[SimpleToken]foo[StringToken]
+;[SyntheticToken]class[KeywordToken] M1[StringToken] {[BeginToken]foo[StringToken]
+;[SyntheticToken]class[KeywordToken] M2[StringToken] {[BeginToken]
+}[SimpleToken]
+}[SimpleToken][SimpleToken]
diff --git a/pkg/front_end/parser_testcases/error_recovery/method_called_with_prime2.dart.scanner.expect b/pkg/front_end/parser_testcases/error_recovery/method_called_with_prime2.dart.scanner.expect
new file mode 100644
index 0000000..9ea1252
--- /dev/null
+++ b/pkg/front_end/parser_testcases/error_recovery/method_called_with_prime2.dart.scanner.expect
@@ -0,0 +1,11 @@
+class B {}foo
+class M1 {foo
+class M2 {
+}
+}
+
+class[KeywordToken] B[StringToken] {[BeginToken]}[SimpleToken]foo[StringToken]
+class[KeywordToken] M1[StringToken] {[BeginToken]foo[StringToken]
+class[KeywordToken] M2[StringToken] {[BeginToken]
+}[SimpleToken]
+}[SimpleToken][SimpleToken]
diff --git a/pkg/front_end/parser_testcases/error_recovery/reserved_words_class_fields.dart.expect b/pkg/front_end/parser_testcases/error_recovery/reserved_words_class_fields.dart.expect
index 313f38a..22fd6c3 100644
--- a/pkg/front_end/parser_testcases/error_recovery/reserved_words_class_fields.dart.expect
+++ b/pkg/front_end/parser_testcases/error_recovery/reserved_words_class_fields.dart.expect
@@ -1,1157 +1,137 @@
 Problems reported:
 
-parser/error_recovery/reserved_words_class_fields:2:3: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
-  int assert = 42;
-  ^^^
-
-parser/error_recovery/reserved_words_class_fields:2:3: Expected ';' after this.
-  int assert = 42;
-  ^^^
-
-parser/error_recovery/reserved_words_class_fields:2:7: Expected a class member, but got 'assert'.
+parser/error_recovery/reserved_words_class_fields:2:7: Expected an identifier, but got 'assert'.
   int assert = 42;
       ^^^^^^
 
-parser/error_recovery/reserved_words_class_fields:2:14: Operator declarations must be preceded by the keyword 'operator'.
-  int assert = 42;
-             ^
-
-parser/error_recovery/reserved_words_class_fields:2:14: The string '=' isn't a user-definable operator.
-  int assert = 42;
-             ^
-
-parser/error_recovery/reserved_words_class_fields:2:14: A method declaration needs an explicit list of parameters.
-  int assert = 42;
-             ^
-
-parser/error_recovery/reserved_words_class_fields:2:16: Expected a function body, but got '42'.
-  int assert = 42;
-               ^^
-
-parser/error_recovery/reserved_words_class_fields:2:16: Expected a class member, but got '42'.
-  int assert = 42;
-               ^^
-
-parser/error_recovery/reserved_words_class_fields:2:18: Expected a class member, but got ';'.
-  int assert = 42;
-                 ^
-
-parser/error_recovery/reserved_words_class_fields:3:3: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
-  int break = 42;
-  ^^^
-
-parser/error_recovery/reserved_words_class_fields:3:3: Expected ';' after this.
-  int break = 42;
-  ^^^
-
-parser/error_recovery/reserved_words_class_fields:3:7: Expected a class member, but got 'break'.
+parser/error_recovery/reserved_words_class_fields:3:7: Expected an identifier, but got 'break'.
   int break = 42;
       ^^^^^
 
-parser/error_recovery/reserved_words_class_fields:3:13: Operator declarations must be preceded by the keyword 'operator'.
-  int break = 42;
-            ^
-
-parser/error_recovery/reserved_words_class_fields:3:13: The string '=' isn't a user-definable operator.
-  int break = 42;
-            ^
-
-parser/error_recovery/reserved_words_class_fields:3:13: A method declaration needs an explicit list of parameters.
-  int break = 42;
-            ^
-
-parser/error_recovery/reserved_words_class_fields:3:15: Expected a function body, but got '42'.
-  int break = 42;
-              ^^
-
-parser/error_recovery/reserved_words_class_fields:3:15: Expected a class member, but got '42'.
-  int break = 42;
-              ^^
-
-parser/error_recovery/reserved_words_class_fields:3:17: Expected a class member, but got ';'.
-  int break = 42;
-                ^
-
-parser/error_recovery/reserved_words_class_fields:4:3: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
-  int case = 42;
-  ^^^
-
-parser/error_recovery/reserved_words_class_fields:4:3: Expected ';' after this.
-  int case = 42;
-  ^^^
-
-parser/error_recovery/reserved_words_class_fields:4:7: Expected a class member, but got 'case'.
+parser/error_recovery/reserved_words_class_fields:4:7: Expected an identifier, but got 'case'.
   int case = 42;
       ^^^^
 
-parser/error_recovery/reserved_words_class_fields:4:12: Operator declarations must be preceded by the keyword 'operator'.
-  int case = 42;
-           ^
-
-parser/error_recovery/reserved_words_class_fields:4:12: The string '=' isn't a user-definable operator.
-  int case = 42;
-           ^
-
-parser/error_recovery/reserved_words_class_fields:4:12: A method declaration needs an explicit list of parameters.
-  int case = 42;
-           ^
-
-parser/error_recovery/reserved_words_class_fields:4:14: Expected a function body, but got '42'.
-  int case = 42;
-             ^^
-
-parser/error_recovery/reserved_words_class_fields:4:14: Expected a class member, but got '42'.
-  int case = 42;
-             ^^
-
-parser/error_recovery/reserved_words_class_fields:4:16: Expected a class member, but got ';'.
-  int case = 42;
-               ^
-
-parser/error_recovery/reserved_words_class_fields:5:3: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
-  int catch = 42;
-  ^^^
-
-parser/error_recovery/reserved_words_class_fields:5:3: Expected ';' after this.
-  int catch = 42;
-  ^^^
-
-parser/error_recovery/reserved_words_class_fields:5:7: Expected a class member, but got 'catch'.
+parser/error_recovery/reserved_words_class_fields:5:7: Expected an identifier, but got 'catch'.
   int catch = 42;
       ^^^^^
 
-parser/error_recovery/reserved_words_class_fields:5:13: Operator declarations must be preceded by the keyword 'operator'.
-  int catch = 42;
-            ^
-
-parser/error_recovery/reserved_words_class_fields:5:13: The string '=' isn't a user-definable operator.
-  int catch = 42;
-            ^
-
-parser/error_recovery/reserved_words_class_fields:5:13: A method declaration needs an explicit list of parameters.
-  int catch = 42;
-            ^
-
-parser/error_recovery/reserved_words_class_fields:5:15: Expected a function body, but got '42'.
-  int catch = 42;
-              ^^
-
-parser/error_recovery/reserved_words_class_fields:5:15: Expected a class member, but got '42'.
-  int catch = 42;
-              ^^
-
-parser/error_recovery/reserved_words_class_fields:5:17: Expected a class member, but got ';'.
-  int catch = 42;
-                ^
-
-parser/error_recovery/reserved_words_class_fields:6:3: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
-  int class = 42;
-  ^^^
-
-parser/error_recovery/reserved_words_class_fields:6:3: Expected ';' after this.
-  int class = 42;
-  ^^^
-
-parser/error_recovery/reserved_words_class_fields:6:7: Classes can't be declared inside other classes.
+parser/error_recovery/reserved_words_class_fields:6:7: Expected an identifier, but got 'class'.
   int class = 42;
       ^^^^^
 
-parser/error_recovery/reserved_words_class_fields:6:13: Operator declarations must be preceded by the keyword 'operator'.
-  int class = 42;
-            ^
-
-parser/error_recovery/reserved_words_class_fields:6:13: The string '=' isn't a user-definable operator.
-  int class = 42;
-            ^
-
-parser/error_recovery/reserved_words_class_fields:6:13: A method declaration needs an explicit list of parameters.
-  int class = 42;
-            ^
-
-parser/error_recovery/reserved_words_class_fields:6:15: Expected a function body, but got '42'.
-  int class = 42;
-              ^^
-
-parser/error_recovery/reserved_words_class_fields:6:15: Expected a class member, but got '42'.
-  int class = 42;
-              ^^
-
-parser/error_recovery/reserved_words_class_fields:6:17: Expected a class member, but got ';'.
-  int class = 42;
-                ^
-
-parser/error_recovery/reserved_words_class_fields:7:3: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
-  int const = 42;
-  ^^^
-
-parser/error_recovery/reserved_words_class_fields:7:3: Expected ';' after this.
-  int const = 42;
-  ^^^
-
-parser/error_recovery/reserved_words_class_fields:7:13: Operator declarations must be preceded by the keyword 'operator'.
-  int const = 42;
-            ^
-
-parser/error_recovery/reserved_words_class_fields:7:13: The string '=' isn't a user-definable operator.
-  int const = 42;
-            ^
-
-parser/error_recovery/reserved_words_class_fields:7:13: A method declaration needs an explicit list of parameters.
-  int const = 42;
-            ^
-
-parser/error_recovery/reserved_words_class_fields:7:15: Expected a function body, but got '42'.
-  int const = 42;
-              ^^
-
-parser/error_recovery/reserved_words_class_fields:7:7: Getters, setters and methods can't be declared to be 'const'.
+parser/error_recovery/reserved_words_class_fields:7:7: Expected an identifier, but got 'const'.
   int const = 42;
       ^^^^^
 
-parser/error_recovery/reserved_words_class_fields:7:15: Expected a class member, but got '42'.
-  int const = 42;
-              ^^
-
-parser/error_recovery/reserved_words_class_fields:7:17: Expected a class member, but got ';'.
-  int const = 42;
-                ^
-
-parser/error_recovery/reserved_words_class_fields:8:3: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
-  int continue = 42;
-  ^^^
-
-parser/error_recovery/reserved_words_class_fields:8:3: Expected ';' after this.
-  int continue = 42;
-  ^^^
-
-parser/error_recovery/reserved_words_class_fields:8:7: Expected a class member, but got 'continue'.
+parser/error_recovery/reserved_words_class_fields:8:7: Expected an identifier, but got 'continue'.
   int continue = 42;
       ^^^^^^^^
 
-parser/error_recovery/reserved_words_class_fields:8:16: Operator declarations must be preceded by the keyword 'operator'.
-  int continue = 42;
-               ^
-
-parser/error_recovery/reserved_words_class_fields:8:16: The string '=' isn't a user-definable operator.
-  int continue = 42;
-               ^
-
-parser/error_recovery/reserved_words_class_fields:8:16: A method declaration needs an explicit list of parameters.
-  int continue = 42;
-               ^
-
-parser/error_recovery/reserved_words_class_fields:8:18: Expected a function body, but got '42'.
-  int continue = 42;
-                 ^^
-
-parser/error_recovery/reserved_words_class_fields:8:18: Expected a class member, but got '42'.
-  int continue = 42;
-                 ^^
-
-parser/error_recovery/reserved_words_class_fields:8:20: Expected a class member, but got ';'.
-  int continue = 42;
-                   ^
-
-parser/error_recovery/reserved_words_class_fields:9:3: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
-  int default = 42;
-  ^^^
-
-parser/error_recovery/reserved_words_class_fields:9:3: Expected ';' after this.
-  int default = 42;
-  ^^^
-
-parser/error_recovery/reserved_words_class_fields:9:7: Expected a class member, but got 'default'.
+parser/error_recovery/reserved_words_class_fields:9:7: Expected an identifier, but got 'default'.
   int default = 42;
       ^^^^^^^
 
-parser/error_recovery/reserved_words_class_fields:9:15: Operator declarations must be preceded by the keyword 'operator'.
-  int default = 42;
-              ^
-
-parser/error_recovery/reserved_words_class_fields:9:15: The string '=' isn't a user-definable operator.
-  int default = 42;
-              ^
-
-parser/error_recovery/reserved_words_class_fields:9:15: A method declaration needs an explicit list of parameters.
-  int default = 42;
-              ^
-
-parser/error_recovery/reserved_words_class_fields:9:17: Expected a function body, but got '42'.
-  int default = 42;
-                ^^
-
-parser/error_recovery/reserved_words_class_fields:9:17: Expected a class member, but got '42'.
-  int default = 42;
-                ^^
-
-parser/error_recovery/reserved_words_class_fields:9:19: Expected a class member, but got ';'.
-  int default = 42;
-                  ^
-
-parser/error_recovery/reserved_words_class_fields:10:3: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
-  int do = 42;
-  ^^^
-
-parser/error_recovery/reserved_words_class_fields:10:3: Expected ';' after this.
-  int do = 42;
-  ^^^
-
-parser/error_recovery/reserved_words_class_fields:10:7: Expected a class member, but got 'do'.
+parser/error_recovery/reserved_words_class_fields:10:7: Expected an identifier, but got 'do'.
   int do = 42;
       ^^
 
-parser/error_recovery/reserved_words_class_fields:10:10: Operator declarations must be preceded by the keyword 'operator'.
-  int do = 42;
-         ^
-
-parser/error_recovery/reserved_words_class_fields:10:10: The string '=' isn't a user-definable operator.
-  int do = 42;
-         ^
-
-parser/error_recovery/reserved_words_class_fields:10:10: A method declaration needs an explicit list of parameters.
-  int do = 42;
-         ^
-
-parser/error_recovery/reserved_words_class_fields:10:12: Expected a function body, but got '42'.
-  int do = 42;
-           ^^
-
-parser/error_recovery/reserved_words_class_fields:10:12: Expected a class member, but got '42'.
-  int do = 42;
-           ^^
-
-parser/error_recovery/reserved_words_class_fields:10:14: Expected a class member, but got ';'.
-  int do = 42;
-             ^
-
-parser/error_recovery/reserved_words_class_fields:11:3: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
-  int else = 42;
-  ^^^
-
-parser/error_recovery/reserved_words_class_fields:11:3: Expected ';' after this.
-  int else = 42;
-  ^^^
-
-parser/error_recovery/reserved_words_class_fields:11:7: Expected a class member, but got 'else'.
+parser/error_recovery/reserved_words_class_fields:11:7: Expected an identifier, but got 'else'.
   int else = 42;
       ^^^^
 
-parser/error_recovery/reserved_words_class_fields:11:12: Operator declarations must be preceded by the keyword 'operator'.
-  int else = 42;
-           ^
-
-parser/error_recovery/reserved_words_class_fields:11:12: The string '=' isn't a user-definable operator.
-  int else = 42;
-           ^
-
-parser/error_recovery/reserved_words_class_fields:11:12: A method declaration needs an explicit list of parameters.
-  int else = 42;
-           ^
-
-parser/error_recovery/reserved_words_class_fields:11:14: Expected a function body, but got '42'.
-  int else = 42;
-             ^^
-
-parser/error_recovery/reserved_words_class_fields:11:14: Expected a class member, but got '42'.
-  int else = 42;
-             ^^
-
-parser/error_recovery/reserved_words_class_fields:11:16: Expected a class member, but got ';'.
-  int else = 42;
-               ^
-
-parser/error_recovery/reserved_words_class_fields:12:3: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
-  int enum = 42;
-  ^^^
-
-parser/error_recovery/reserved_words_class_fields:12:3: Expected ';' after this.
-  int enum = 42;
-  ^^^
-
-parser/error_recovery/reserved_words_class_fields:12:7: Enums can't be declared inside classes.
+parser/error_recovery/reserved_words_class_fields:12:7: Expected an identifier, but got 'enum'.
   int enum = 42;
       ^^^^
 
-parser/error_recovery/reserved_words_class_fields:12:12: Operator declarations must be preceded by the keyword 'operator'.
-  int enum = 42;
-           ^
-
-parser/error_recovery/reserved_words_class_fields:12:12: The string '=' isn't a user-definable operator.
-  int enum = 42;
-           ^
-
-parser/error_recovery/reserved_words_class_fields:12:12: A method declaration needs an explicit list of parameters.
-  int enum = 42;
-           ^
-
-parser/error_recovery/reserved_words_class_fields:12:14: Expected a function body, but got '42'.
-  int enum = 42;
-             ^^
-
-parser/error_recovery/reserved_words_class_fields:12:14: Expected a class member, but got '42'.
-  int enum = 42;
-             ^^
-
-parser/error_recovery/reserved_words_class_fields:12:16: Expected a class member, but got ';'.
-  int enum = 42;
-               ^
-
-parser/error_recovery/reserved_words_class_fields:13:3: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
-  int extends = 42;
-  ^^^
-
-parser/error_recovery/reserved_words_class_fields:13:3: Expected ';' after this.
-  int extends = 42;
-  ^^^
-
-parser/error_recovery/reserved_words_class_fields:13:7: Expected a class member, but got 'extends'.
+parser/error_recovery/reserved_words_class_fields:13:7: Expected an identifier, but got 'extends'.
   int extends = 42;
       ^^^^^^^
 
-parser/error_recovery/reserved_words_class_fields:13:15: Operator declarations must be preceded by the keyword 'operator'.
-  int extends = 42;
-              ^
-
-parser/error_recovery/reserved_words_class_fields:13:15: The string '=' isn't a user-definable operator.
-  int extends = 42;
-              ^
-
-parser/error_recovery/reserved_words_class_fields:13:15: A method declaration needs an explicit list of parameters.
-  int extends = 42;
-              ^
-
-parser/error_recovery/reserved_words_class_fields:13:17: Expected a function body, but got '42'.
-  int extends = 42;
-                ^^
-
-parser/error_recovery/reserved_words_class_fields:13:17: Expected a class member, but got '42'.
-  int extends = 42;
-                ^^
-
-parser/error_recovery/reserved_words_class_fields:13:19: Expected a class member, but got ';'.
-  int extends = 42;
-                  ^
-
-parser/error_recovery/reserved_words_class_fields:14:3: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
-  int false = 42;
-  ^^^
-
-parser/error_recovery/reserved_words_class_fields:14:3: Expected ';' after this.
-  int false = 42;
-  ^^^
-
-parser/error_recovery/reserved_words_class_fields:14:7: Expected a class member, but got 'false'.
+parser/error_recovery/reserved_words_class_fields:14:7: Expected an identifier, but got 'false'.
   int false = 42;
       ^^^^^
 
-parser/error_recovery/reserved_words_class_fields:14:13: Operator declarations must be preceded by the keyword 'operator'.
-  int false = 42;
-            ^
-
-parser/error_recovery/reserved_words_class_fields:14:13: The string '=' isn't a user-definable operator.
-  int false = 42;
-            ^
-
-parser/error_recovery/reserved_words_class_fields:14:13: A method declaration needs an explicit list of parameters.
-  int false = 42;
-            ^
-
-parser/error_recovery/reserved_words_class_fields:14:15: Expected a function body, but got '42'.
-  int false = 42;
-              ^^
-
-parser/error_recovery/reserved_words_class_fields:14:15: Expected a class member, but got '42'.
-  int false = 42;
-              ^^
-
-parser/error_recovery/reserved_words_class_fields:14:17: Expected a class member, but got ';'.
-  int false = 42;
-                ^
-
-parser/error_recovery/reserved_words_class_fields:15:3: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
-  int final = 42;
-  ^^^
-
-parser/error_recovery/reserved_words_class_fields:15:3: Expected ';' after this.
-  int final = 42;
-  ^^^
-
-parser/error_recovery/reserved_words_class_fields:15:13: Operator declarations must be preceded by the keyword 'operator'.
-  int final = 42;
-            ^
-
-parser/error_recovery/reserved_words_class_fields:15:7: Can't have modifier 'final' here.
+parser/error_recovery/reserved_words_class_fields:15:7: Expected an identifier, but got 'final'.
   int final = 42;
       ^^^^^
 
-parser/error_recovery/reserved_words_class_fields:15:13: The string '=' isn't a user-definable operator.
-  int final = 42;
-            ^
-
-parser/error_recovery/reserved_words_class_fields:15:13: A method declaration needs an explicit list of parameters.
-  int final = 42;
-            ^
-
-parser/error_recovery/reserved_words_class_fields:15:15: Expected a function body, but got '42'.
-  int final = 42;
-              ^^
-
-parser/error_recovery/reserved_words_class_fields:15:15: Expected a class member, but got '42'.
-  int final = 42;
-              ^^
-
-parser/error_recovery/reserved_words_class_fields:15:17: Expected a class member, but got ';'.
-  int final = 42;
-                ^
-
-parser/error_recovery/reserved_words_class_fields:16:3: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
-  int finally = 42;
-  ^^^
-
-parser/error_recovery/reserved_words_class_fields:16:3: Expected ';' after this.
-  int finally = 42;
-  ^^^
-
-parser/error_recovery/reserved_words_class_fields:16:7: Expected a class member, but got 'finally'.
+parser/error_recovery/reserved_words_class_fields:16:7: Expected an identifier, but got 'finally'.
   int finally = 42;
       ^^^^^^^
 
-parser/error_recovery/reserved_words_class_fields:16:15: Operator declarations must be preceded by the keyword 'operator'.
-  int finally = 42;
-              ^
-
-parser/error_recovery/reserved_words_class_fields:16:15: The string '=' isn't a user-definable operator.
-  int finally = 42;
-              ^
-
-parser/error_recovery/reserved_words_class_fields:16:15: A method declaration needs an explicit list of parameters.
-  int finally = 42;
-              ^
-
-parser/error_recovery/reserved_words_class_fields:16:17: Expected a function body, but got '42'.
-  int finally = 42;
-                ^^
-
-parser/error_recovery/reserved_words_class_fields:16:17: Expected a class member, but got '42'.
-  int finally = 42;
-                ^^
-
-parser/error_recovery/reserved_words_class_fields:16:19: Expected a class member, but got ';'.
-  int finally = 42;
-                  ^
-
-parser/error_recovery/reserved_words_class_fields:17:3: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
-  int for = 42;
-  ^^^
-
-parser/error_recovery/reserved_words_class_fields:17:3: Expected ';' after this.
-  int for = 42;
-  ^^^
-
-parser/error_recovery/reserved_words_class_fields:17:7: Expected a class member, but got 'for'.
+parser/error_recovery/reserved_words_class_fields:17:7: Expected an identifier, but got 'for'.
   int for = 42;
       ^^^
 
-parser/error_recovery/reserved_words_class_fields:17:11: Operator declarations must be preceded by the keyword 'operator'.
-  int for = 42;
-          ^
-
-parser/error_recovery/reserved_words_class_fields:17:11: The string '=' isn't a user-definable operator.
-  int for = 42;
-          ^
-
-parser/error_recovery/reserved_words_class_fields:17:11: A method declaration needs an explicit list of parameters.
-  int for = 42;
-          ^
-
-parser/error_recovery/reserved_words_class_fields:17:13: Expected a function body, but got '42'.
-  int for = 42;
-            ^^
-
-parser/error_recovery/reserved_words_class_fields:17:13: Expected a class member, but got '42'.
-  int for = 42;
-            ^^
-
-parser/error_recovery/reserved_words_class_fields:17:15: Expected a class member, but got ';'.
-  int for = 42;
-              ^
-
-parser/error_recovery/reserved_words_class_fields:18:3: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
-  int if = 42;
-  ^^^
-
-parser/error_recovery/reserved_words_class_fields:18:3: Expected ';' after this.
-  int if = 42;
-  ^^^
-
-parser/error_recovery/reserved_words_class_fields:18:7: Expected a class member, but got 'if'.
+parser/error_recovery/reserved_words_class_fields:18:7: Expected an identifier, but got 'if'.
   int if = 42;
       ^^
 
-parser/error_recovery/reserved_words_class_fields:18:10: Operator declarations must be preceded by the keyword 'operator'.
-  int if = 42;
-         ^
-
-parser/error_recovery/reserved_words_class_fields:18:10: The string '=' isn't a user-definable operator.
-  int if = 42;
-         ^
-
-parser/error_recovery/reserved_words_class_fields:18:10: A method declaration needs an explicit list of parameters.
-  int if = 42;
-         ^
-
-parser/error_recovery/reserved_words_class_fields:18:12: Expected a function body, but got '42'.
-  int if = 42;
-           ^^
-
-parser/error_recovery/reserved_words_class_fields:18:12: Expected a class member, but got '42'.
-  int if = 42;
-           ^^
-
-parser/error_recovery/reserved_words_class_fields:18:14: Expected a class member, but got ';'.
-  int if = 42;
-             ^
-
-parser/error_recovery/reserved_words_class_fields:19:3: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
-  int in = 42;
-  ^^^
-
-parser/error_recovery/reserved_words_class_fields:19:3: Expected ';' after this.
-  int in = 42;
-  ^^^
-
-parser/error_recovery/reserved_words_class_fields:19:7: Expected a class member, but got 'in'.
+parser/error_recovery/reserved_words_class_fields:19:7: Expected an identifier, but got 'in'.
   int in = 42;
       ^^
 
-parser/error_recovery/reserved_words_class_fields:19:10: Operator declarations must be preceded by the keyword 'operator'.
-  int in = 42;
-         ^
-
-parser/error_recovery/reserved_words_class_fields:19:10: The string '=' isn't a user-definable operator.
-  int in = 42;
-         ^
-
-parser/error_recovery/reserved_words_class_fields:19:10: A method declaration needs an explicit list of parameters.
-  int in = 42;
-         ^
-
-parser/error_recovery/reserved_words_class_fields:19:12: Expected a function body, but got '42'.
-  int in = 42;
-           ^^
-
-parser/error_recovery/reserved_words_class_fields:19:12: Expected a class member, but got '42'.
-  int in = 42;
-           ^^
-
-parser/error_recovery/reserved_words_class_fields:19:14: Expected a class member, but got ';'.
-  int in = 42;
-             ^
-
-parser/error_recovery/reserved_words_class_fields:20:3: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
-  int is = 42;
-  ^^^
-
-parser/error_recovery/reserved_words_class_fields:20:3: Expected ';' after this.
-  int is = 42;
-  ^^^
-
-parser/error_recovery/reserved_words_class_fields:20:7: Expected a class member, but got 'is'.
+parser/error_recovery/reserved_words_class_fields:20:7: Expected an identifier, but got 'is'.
   int is = 42;
       ^^
 
-parser/error_recovery/reserved_words_class_fields:20:10: Operator declarations must be preceded by the keyword 'operator'.
-  int is = 42;
-         ^
-
-parser/error_recovery/reserved_words_class_fields:20:10: The string '=' isn't a user-definable operator.
-  int is = 42;
-         ^
-
-parser/error_recovery/reserved_words_class_fields:20:10: A method declaration needs an explicit list of parameters.
-  int is = 42;
-         ^
-
-parser/error_recovery/reserved_words_class_fields:20:12: Expected a function body, but got '42'.
-  int is = 42;
-           ^^
-
-parser/error_recovery/reserved_words_class_fields:20:12: Expected a class member, but got '42'.
-  int is = 42;
-           ^^
-
-parser/error_recovery/reserved_words_class_fields:20:14: Expected a class member, but got ';'.
-  int is = 42;
-             ^
-
-parser/error_recovery/reserved_words_class_fields:21:3: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
-  int new = 42;
-  ^^^
-
-parser/error_recovery/reserved_words_class_fields:21:3: Expected ';' after this.
-  int new = 42;
-  ^^^
-
-parser/error_recovery/reserved_words_class_fields:21:7: Expected a class member, but got 'new'.
+parser/error_recovery/reserved_words_class_fields:21:7: Expected an identifier, but got 'new'.
   int new = 42;
       ^^^
 
-parser/error_recovery/reserved_words_class_fields:21:11: Operator declarations must be preceded by the keyword 'operator'.
-  int new = 42;
-          ^
-
-parser/error_recovery/reserved_words_class_fields:21:11: The string '=' isn't a user-definable operator.
-  int new = 42;
-          ^
-
-parser/error_recovery/reserved_words_class_fields:21:11: A method declaration needs an explicit list of parameters.
-  int new = 42;
-          ^
-
-parser/error_recovery/reserved_words_class_fields:21:13: Expected a function body, but got '42'.
-  int new = 42;
-            ^^
-
-parser/error_recovery/reserved_words_class_fields:21:13: Expected a class member, but got '42'.
-  int new = 42;
-            ^^
-
-parser/error_recovery/reserved_words_class_fields:21:15: Expected a class member, but got ';'.
-  int new = 42;
-              ^
-
-parser/error_recovery/reserved_words_class_fields:22:3: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
-  int null = 42;
-  ^^^
-
-parser/error_recovery/reserved_words_class_fields:22:3: Expected ';' after this.
-  int null = 42;
-  ^^^
-
-parser/error_recovery/reserved_words_class_fields:22:7: Expected a class member, but got 'null'.
+parser/error_recovery/reserved_words_class_fields:22:7: Expected an identifier, but got 'null'.
   int null = 42;
       ^^^^
 
-parser/error_recovery/reserved_words_class_fields:22:12: Operator declarations must be preceded by the keyword 'operator'.
-  int null = 42;
-           ^
-
-parser/error_recovery/reserved_words_class_fields:22:12: The string '=' isn't a user-definable operator.
-  int null = 42;
-           ^
-
-parser/error_recovery/reserved_words_class_fields:22:12: A method declaration needs an explicit list of parameters.
-  int null = 42;
-           ^
-
-parser/error_recovery/reserved_words_class_fields:22:14: Expected a function body, but got '42'.
-  int null = 42;
-             ^^
-
-parser/error_recovery/reserved_words_class_fields:22:14: Expected a class member, but got '42'.
-  int null = 42;
-             ^^
-
-parser/error_recovery/reserved_words_class_fields:22:16: Expected a class member, but got ';'.
-  int null = 42;
-               ^
-
-parser/error_recovery/reserved_words_class_fields:23:3: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
-  int rethrow = 42;
-  ^^^
-
-parser/error_recovery/reserved_words_class_fields:23:3: Expected ';' after this.
-  int rethrow = 42;
-  ^^^
-
-parser/error_recovery/reserved_words_class_fields:23:7: Expected a class member, but got 'rethrow'.
+parser/error_recovery/reserved_words_class_fields:23:7: Expected an identifier, but got 'rethrow'.
   int rethrow = 42;
       ^^^^^^^
 
-parser/error_recovery/reserved_words_class_fields:23:15: Operator declarations must be preceded by the keyword 'operator'.
-  int rethrow = 42;
-              ^
-
-parser/error_recovery/reserved_words_class_fields:23:15: The string '=' isn't a user-definable operator.
-  int rethrow = 42;
-              ^
-
-parser/error_recovery/reserved_words_class_fields:23:15: A method declaration needs an explicit list of parameters.
-  int rethrow = 42;
-              ^
-
-parser/error_recovery/reserved_words_class_fields:23:17: Expected a function body, but got '42'.
-  int rethrow = 42;
-                ^^
-
-parser/error_recovery/reserved_words_class_fields:23:17: Expected a class member, but got '42'.
-  int rethrow = 42;
-                ^^
-
-parser/error_recovery/reserved_words_class_fields:23:19: Expected a class member, but got ';'.
-  int rethrow = 42;
-                  ^
-
-parser/error_recovery/reserved_words_class_fields:24:3: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
-  int return = 42;
-  ^^^
-
-parser/error_recovery/reserved_words_class_fields:24:3: Expected ';' after this.
-  int return = 42;
-  ^^^
-
-parser/error_recovery/reserved_words_class_fields:24:7: Expected a class member, but got 'return'.
+parser/error_recovery/reserved_words_class_fields:24:7: Expected an identifier, but got 'return'.
   int return = 42;
       ^^^^^^
 
-parser/error_recovery/reserved_words_class_fields:24:14: Operator declarations must be preceded by the keyword 'operator'.
-  int return = 42;
-             ^
-
-parser/error_recovery/reserved_words_class_fields:24:14: The string '=' isn't a user-definable operator.
-  int return = 42;
-             ^
-
-parser/error_recovery/reserved_words_class_fields:24:14: A method declaration needs an explicit list of parameters.
-  int return = 42;
-             ^
-
-parser/error_recovery/reserved_words_class_fields:24:16: Expected a function body, but got '42'.
-  int return = 42;
-               ^^
-
-parser/error_recovery/reserved_words_class_fields:24:16: Expected a class member, but got '42'.
-  int return = 42;
-               ^^
-
-parser/error_recovery/reserved_words_class_fields:24:18: Expected a class member, but got ';'.
-  int return = 42;
-                 ^
-
-parser/error_recovery/reserved_words_class_fields:25:3: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
-  int super = 42;
-  ^^^
-
-parser/error_recovery/reserved_words_class_fields:25:3: Expected ';' after this.
-  int super = 42;
-  ^^^
-
-parser/error_recovery/reserved_words_class_fields:25:7: Expected a class member, but got 'super'.
+parser/error_recovery/reserved_words_class_fields:25:7: Expected an identifier, but got 'super'.
   int super = 42;
       ^^^^^
 
-parser/error_recovery/reserved_words_class_fields:25:13: Operator declarations must be preceded by the keyword 'operator'.
-  int super = 42;
-            ^
-
-parser/error_recovery/reserved_words_class_fields:25:13: The string '=' isn't a user-definable operator.
-  int super = 42;
-            ^
-
-parser/error_recovery/reserved_words_class_fields:25:13: A method declaration needs an explicit list of parameters.
-  int super = 42;
-            ^
-
-parser/error_recovery/reserved_words_class_fields:25:15: Expected a function body, but got '42'.
-  int super = 42;
-              ^^
-
-parser/error_recovery/reserved_words_class_fields:25:15: Expected a class member, but got '42'.
-  int super = 42;
-              ^^
-
-parser/error_recovery/reserved_words_class_fields:25:17: Expected a class member, but got ';'.
-  int super = 42;
-                ^
-
-parser/error_recovery/reserved_words_class_fields:26:3: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
-  int switch = 42;
-  ^^^
-
-parser/error_recovery/reserved_words_class_fields:26:3: Expected ';' after this.
-  int switch = 42;
-  ^^^
-
-parser/error_recovery/reserved_words_class_fields:26:7: Expected a class member, but got 'switch'.
+parser/error_recovery/reserved_words_class_fields:26:7: Expected an identifier, but got 'switch'.
   int switch = 42;
       ^^^^^^
 
-parser/error_recovery/reserved_words_class_fields:26:14: Operator declarations must be preceded by the keyword 'operator'.
-  int switch = 42;
-             ^
-
-parser/error_recovery/reserved_words_class_fields:26:14: The string '=' isn't a user-definable operator.
-  int switch = 42;
-             ^
-
-parser/error_recovery/reserved_words_class_fields:26:14: A method declaration needs an explicit list of parameters.
-  int switch = 42;
-             ^
-
-parser/error_recovery/reserved_words_class_fields:26:16: Expected a function body, but got '42'.
-  int switch = 42;
-               ^^
-
-parser/error_recovery/reserved_words_class_fields:26:16: Expected a class member, but got '42'.
-  int switch = 42;
-               ^^
-
-parser/error_recovery/reserved_words_class_fields:26:18: Expected a class member, but got ';'.
-  int switch = 42;
-                 ^
-
 parser/error_recovery/reserved_words_class_fields:27:7: Expected an identifier, but got 'this'.
   int this = 42;
       ^^^^
 
-parser/error_recovery/reserved_words_class_fields:28:3: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
-  int throw = 42;
-  ^^^
-
-parser/error_recovery/reserved_words_class_fields:28:3: Expected ';' after this.
-  int throw = 42;
-  ^^^
-
-parser/error_recovery/reserved_words_class_fields:28:7: Expected a class member, but got 'throw'.
+parser/error_recovery/reserved_words_class_fields:28:7: Expected an identifier, but got 'throw'.
   int throw = 42;
       ^^^^^
 
-parser/error_recovery/reserved_words_class_fields:28:13: Operator declarations must be preceded by the keyword 'operator'.
-  int throw = 42;
-            ^
-
-parser/error_recovery/reserved_words_class_fields:28:13: The string '=' isn't a user-definable operator.
-  int throw = 42;
-            ^
-
-parser/error_recovery/reserved_words_class_fields:28:13: A method declaration needs an explicit list of parameters.
-  int throw = 42;
-            ^
-
-parser/error_recovery/reserved_words_class_fields:28:15: Expected a function body, but got '42'.
-  int throw = 42;
-              ^^
-
-parser/error_recovery/reserved_words_class_fields:28:15: Expected a class member, but got '42'.
-  int throw = 42;
-              ^^
-
-parser/error_recovery/reserved_words_class_fields:28:17: Expected a class member, but got ';'.
-  int throw = 42;
-                ^
-
-parser/error_recovery/reserved_words_class_fields:29:3: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
-  int true = 42;
-  ^^^
-
-parser/error_recovery/reserved_words_class_fields:29:3: Expected ';' after this.
-  int true = 42;
-  ^^^
-
-parser/error_recovery/reserved_words_class_fields:29:7: Expected a class member, but got 'true'.
+parser/error_recovery/reserved_words_class_fields:29:7: Expected an identifier, but got 'true'.
   int true = 42;
       ^^^^
 
-parser/error_recovery/reserved_words_class_fields:29:12: Operator declarations must be preceded by the keyword 'operator'.
-  int true = 42;
-           ^
-
-parser/error_recovery/reserved_words_class_fields:29:12: The string '=' isn't a user-definable operator.
-  int true = 42;
-           ^
-
-parser/error_recovery/reserved_words_class_fields:29:12: A method declaration needs an explicit list of parameters.
-  int true = 42;
-           ^
-
-parser/error_recovery/reserved_words_class_fields:29:14: Expected a function body, but got '42'.
-  int true = 42;
-             ^^
-
-parser/error_recovery/reserved_words_class_fields:29:14: Expected a class member, but got '42'.
-  int true = 42;
-             ^^
-
-parser/error_recovery/reserved_words_class_fields:29:16: Expected a class member, but got ';'.
-  int true = 42;
-               ^
-
-parser/error_recovery/reserved_words_class_fields:30:3: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
-  int try = 42;
-  ^^^
-
-parser/error_recovery/reserved_words_class_fields:30:3: Expected ';' after this.
-  int try = 42;
-  ^^^
-
-parser/error_recovery/reserved_words_class_fields:30:7: Expected a class member, but got 'try'.
+parser/error_recovery/reserved_words_class_fields:30:7: Expected an identifier, but got 'try'.
   int try = 42;
       ^^^
 
-parser/error_recovery/reserved_words_class_fields:30:11: Operator declarations must be preceded by the keyword 'operator'.
-  int try = 42;
-          ^
-
-parser/error_recovery/reserved_words_class_fields:30:11: The string '=' isn't a user-definable operator.
-  int try = 42;
-          ^
-
-parser/error_recovery/reserved_words_class_fields:30:11: A method declaration needs an explicit list of parameters.
-  int try = 42;
-          ^
-
-parser/error_recovery/reserved_words_class_fields:30:13: Expected a function body, but got '42'.
-  int try = 42;
-            ^^
-
-parser/error_recovery/reserved_words_class_fields:30:13: Expected a class member, but got '42'.
-  int try = 42;
-            ^^
-
-parser/error_recovery/reserved_words_class_fields:30:15: Expected a class member, but got ';'.
-  int try = 42;
-              ^
-
-parser/error_recovery/reserved_words_class_fields:31:3: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
-  int var = 42;
-  ^^^
-
-parser/error_recovery/reserved_words_class_fields:31:3: Expected ';' after this.
-  int var = 42;
-  ^^^
-
-parser/error_recovery/reserved_words_class_fields:31:11: Operator declarations must be preceded by the keyword 'operator'.
-  int var = 42;
-          ^
-
-parser/error_recovery/reserved_words_class_fields:31:7: The return type can't be 'var'.
+parser/error_recovery/reserved_words_class_fields:31:7: Expected an identifier, but got 'var'.
   int var = 42;
       ^^^
 
-parser/error_recovery/reserved_words_class_fields:31:11: The string '=' isn't a user-definable operator.
-  int var = 42;
-          ^
-
-parser/error_recovery/reserved_words_class_fields:31:11: A method declaration needs an explicit list of parameters.
-  int var = 42;
-          ^
-
-parser/error_recovery/reserved_words_class_fields:31:13: Expected a function body, but got '42'.
-  int var = 42;
-            ^^
-
-parser/error_recovery/reserved_words_class_fields:31:13: Expected a class member, but got '42'.
-  int var = 42;
-            ^^
-
-parser/error_recovery/reserved_words_class_fields:31:15: Expected a class member, but got ';'.
-  int var = 42;
-              ^
-
-parser/error_recovery/reserved_words_class_fields:32:3: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
+parser/error_recovery/reserved_words_class_fields:32:7: Expected an identifier, but got 'void'.
   int void = 42;
-  ^^^
+      ^^^^
 
-parser/error_recovery/reserved_words_class_fields:32:3: Expected ';' after this.
-  int void = 42;
-  ^^^
-
-parser/error_recovery/reserved_words_class_fields:32:12: Operator declarations must be preceded by the keyword 'operator'.
-  int void = 42;
-           ^
-
-parser/error_recovery/reserved_words_class_fields:32:12: The string '=' isn't a user-definable operator.
-  int void = 42;
-           ^
-
-parser/error_recovery/reserved_words_class_fields:32:12: A method declaration needs an explicit list of parameters.
-  int void = 42;
-           ^
-
-parser/error_recovery/reserved_words_class_fields:32:14: Expected a function body, but got '42'.
-  int void = 42;
-             ^^
-
-parser/error_recovery/reserved_words_class_fields:32:14: Expected a class member, but got '42'.
-  int void = 42;
-             ^^
-
-parser/error_recovery/reserved_words_class_fields:32:16: Expected a class member, but got ';'.
-  int void = 42;
-               ^
-
-parser/error_recovery/reserved_words_class_fields:33:3: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
-  int while = 42;
-  ^^^
-
-parser/error_recovery/reserved_words_class_fields:33:3: Expected ';' after this.
-  int while = 42;
-  ^^^
-
-parser/error_recovery/reserved_words_class_fields:33:7: Expected a class member, but got 'while'.
+parser/error_recovery/reserved_words_class_fields:33:7: Expected an identifier, but got 'while'.
   int while = 42;
       ^^^^^
 
-parser/error_recovery/reserved_words_class_fields:33:13: Operator declarations must be preceded by the keyword 'operator'.
-  int while = 42;
-            ^
-
-parser/error_recovery/reserved_words_class_fields:33:13: The string '=' isn't a user-definable operator.
-  int while = 42;
-            ^
-
-parser/error_recovery/reserved_words_class_fields:33:13: A method declaration needs an explicit list of parameters.
-  int while = 42;
-            ^
-
-parser/error_recovery/reserved_words_class_fields:33:15: Expected a function body, but got '42'.
-  int while = 42;
-              ^^
-
-parser/error_recovery/reserved_words_class_fields:33:15: Expected a class member, but got '42'.
-  int while = 42;
-              ^^
-
-parser/error_recovery/reserved_words_class_fields:33:17: Expected a class member, but got ';'.
-  int while = 42;
-                ^
-
-parser/error_recovery/reserved_words_class_fields:34:3: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
-  int with = 42;
-  ^^^
-
-parser/error_recovery/reserved_words_class_fields:34:3: Expected ';' after this.
-  int with = 42;
-  ^^^
-
-parser/error_recovery/reserved_words_class_fields:34:7: Expected a class member, but got 'with'.
+parser/error_recovery/reserved_words_class_fields:34:7: Expected an identifier, but got 'with'.
   int with = 42;
       ^^^^
 
-parser/error_recovery/reserved_words_class_fields:34:12: Operator declarations must be preceded by the keyword 'operator'.
-  int with = 42;
-           ^
-
-parser/error_recovery/reserved_words_class_fields:34:12: The string '=' isn't a user-definable operator.
-  int with = 42;
-           ^
-
-parser/error_recovery/reserved_words_class_fields:34:12: A method declaration needs an explicit list of parameters.
-  int with = 42;
-           ^
-
-parser/error_recovery/reserved_words_class_fields:34:14: Expected a function body, but got '42'.
-  int with = 42;
-             ^^
-
-parser/error_recovery/reserved_words_class_fields:34:14: Expected a class member, but got '42'.
-  int with = 42;
-             ^^
-
-parser/error_recovery/reserved_words_class_fields:34:16: Expected a class member, but got ';'.
-  int with = 42;
-               ^
-
 beginCompilationUnit(class)
   beginMetadataStar(class)
   endMetadataStar(0)
@@ -1168,1141 +148,328 @@
         beginMetadataStar(int)
         endMetadataStar(0)
         beginMember()
-          handleRecoverableError(MissingConstFinalVarOrType, int, int)
-          handleNoType({)
-          handleIdentifier(int, fieldDeclaration)
-          handleNoFieldInitializer(assert)
-          handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+          handleIdentifier(int, typeReference)
+          handleNoTypeArguments(assert)
+          handleType(int, null)
+          handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'assert'., null, {token: assert}], assert, assert)
+          handleIdentifier(assert, fieldDeclaration)
+          beginFieldInitializer(=)
+            handleLiteralInt(42)
+          endFieldInitializer(=, ;)
         endClassFields(null, null, null, null, 1, int, ;)
       endMember()
-      beginMetadataStar(assert)
-      endMetadataStar(0)
-      beginMember()
-        handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got 'assert'., null, {token: assert}], assert, assert)
-        handleInvalidMember(assert)
-      endMember()
-      beginMetadataStar(=)
-      endMetadataStar(0)
-      beginMember()
-        handleRecoverableError(MissingOperatorKeyword, =, =)
-        beginMethod(null, null, null, null, null, operator)
-          handleNoType(assert)
-          handleRecoverableError(Message[InvalidOperator, The string '=' isn't a user-definable operator., null, {token: =}], =, =)
-          handleInvalidOperatorName(operator, =)
-          handleNoTypeVariables(42)
-          handleRecoverableError(MissingMethodParameters, =, =)
-          beginFormalParameters((, MemberKind.NonStaticMethod)
-          endFormalParameters(0, (, ), MemberKind.NonStaticMethod)
-          handleNoInitializers()
-          handleAsyncModifier(null, null)
-          handleRecoverableError(Message[ExpectedFunctionBody, Expected a function body, but got '42'., null, {token: 42}], 42, 42)
-          handleInvalidFunctionBody({)
-        endClassMethod(null, operator, (, null, })
-      endMember()
-      beginMetadataStar(42)
-      endMetadataStar(0)
-      beginMember()
-        handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got '42'., null, {token: 42}], 42, 42)
-        handleInvalidMember(42)
-      endMember()
-      beginMetadataStar(;)
-      endMetadataStar(0)
-      beginMember()
-        handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got ';'., null, {token: ;}], ;, ;)
-        handleInvalidMember(;)
-      endMember()
       beginMetadataStar(int)
       endMetadataStar(0)
       beginMember()
-        handleRecoverableError(MissingConstFinalVarOrType, int, int)
-        handleNoType(;)
-        handleIdentifier(int, fieldDeclaration)
-        handleNoFieldInitializer(break)
-        handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+        handleIdentifier(int, typeReference)
+        handleNoTypeArguments(break)
+        handleType(int, null)
+        handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'break'., null, {token: break}], break, break)
+        handleIdentifier(break, fieldDeclaration)
+        beginFieldInitializer(=)
+          handleLiteralInt(42)
+        endFieldInitializer(=, ;)
       endClassFields(null, null, null, null, 1, int, ;)
     endMember()
-    beginMetadataStar(break)
-    endMetadataStar(0)
-    beginMember()
-      handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got 'break'., null, {token: break}], break, break)
-      handleInvalidMember(break)
-    endMember()
-    beginMetadataStar(=)
-    endMetadataStar(0)
-    beginMember()
-      handleRecoverableError(MissingOperatorKeyword, =, =)
-      beginMethod(null, null, null, null, null, operator)
-        handleNoType(break)
-        handleRecoverableError(Message[InvalidOperator, The string '=' isn't a user-definable operator., null, {token: =}], =, =)
-        handleInvalidOperatorName(operator, =)
-        handleNoTypeVariables(42)
-        handleRecoverableError(MissingMethodParameters, =, =)
-        beginFormalParameters((, MemberKind.NonStaticMethod)
-        endFormalParameters(0, (, ), MemberKind.NonStaticMethod)
-        handleNoInitializers()
-        handleAsyncModifier(null, null)
-        handleRecoverableError(Message[ExpectedFunctionBody, Expected a function body, but got '42'., null, {token: 42}], 42, 42)
-        handleInvalidFunctionBody({)
-      endClassMethod(null, operator, (, null, })
-    endMember()
-    beginMetadataStar(42)
-    endMetadataStar(0)
-    beginMember()
-      handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got '42'., null, {token: 42}], 42, 42)
-      handleInvalidMember(42)
-    endMember()
-    beginMetadataStar(;)
-    endMetadataStar(0)
-    beginMember()
-      handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got ';'., null, {token: ;}], ;, ;)
-      handleInvalidMember(;)
-    endMember()
     beginMetadataStar(int)
     endMetadataStar(0)
     beginMember()
-      handleRecoverableError(MissingConstFinalVarOrType, int, int)
-      handleNoType(;)
-      handleIdentifier(int, fieldDeclaration)
-      handleNoFieldInitializer(case)
-      handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+      handleIdentifier(int, typeReference)
+      handleNoTypeArguments(case)
+      handleType(int, null)
+      handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'case'., null, {token: case}], case, case)
+      handleIdentifier(case, fieldDeclaration)
+      beginFieldInitializer(=)
+        handleLiteralInt(42)
+      endFieldInitializer(=, ;)
     endClassFields(null, null, null, null, 1, int, ;)
   endMember()
-  beginMetadataStar(case)
-  endMetadataStar(0)
-  beginMember()
-    handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got 'case'., null, {token: case}], case, case)
-    handleInvalidMember(case)
-  endMember()
-  beginMetadataStar(=)
-  endMetadataStar(0)
-  beginMember()
-    handleRecoverableError(MissingOperatorKeyword, =, =)
-    beginMethod(null, null, null, null, null, operator)
-      handleNoType(case)
-      handleRecoverableError(Message[InvalidOperator, The string '=' isn't a user-definable operator., null, {token: =}], =, =)
-      handleInvalidOperatorName(operator, =)
-      handleNoTypeVariables(42)
-      handleRecoverableError(MissingMethodParameters, =, =)
-      beginFormalParameters((, MemberKind.NonStaticMethod)
-      endFormalParameters(0, (, ), MemberKind.NonStaticMethod)
-      handleNoInitializers()
-      handleAsyncModifier(null, null)
-      handleRecoverableError(Message[ExpectedFunctionBody, Expected a function body, but got '42'., null, {token: 42}], 42, 42)
-      handleInvalidFunctionBody({)
-    endClassMethod(null, operator, (, null, })
-  endMember()
-  beginMetadataStar(42)
-  endMetadataStar(0)
-  beginMember()
-    handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got '42'., null, {token: 42}], 42, 42)
-    handleInvalidMember(42)
-  endMember()
-  beginMetadataStar(;)
-  endMetadataStar(0)
-  beginMember()
-    handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got ';'., null, {token: ;}], ;, ;)
-    handleInvalidMember(;)
-  endMember()
   beginMetadataStar(int)
   endMetadataStar(0)
   beginMember()
-    handleRecoverableError(MissingConstFinalVarOrType, int, int)
-    handleNoType(;)
-    handleIdentifier(int, fieldDeclaration)
-    handleNoFieldInitializer(catch)
-    handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+    handleIdentifier(int, typeReference)
+    handleNoTypeArguments(catch)
+    handleType(int, null)
+    handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'catch'., null, {token: catch}], catch, catch)
+    handleIdentifier(catch, fieldDeclaration)
+    beginFieldInitializer(=)
+      handleLiteralInt(42)
+    endFieldInitializer(=, ;)
   endClassFields(null, null, null, null, 1, int, ;)
 endMember()
-beginMetadataStar(catch)
+beginMetadataStar(int)
 endMetadataStar(0)
 beginMember()
-  handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got 'catch'., null, {token: catch}], catch, catch)
-  handleInvalidMember(catch)
-endMember()
-beginMetadataStar(=)
-endMetadataStar(0)
-beginMember()
-  handleRecoverableError(MissingOperatorKeyword, =, =)
-  beginMethod(null, null, null, null, null, operator)
-    handleNoType(catch)
-    handleRecoverableError(Message[InvalidOperator, The string '=' isn't a user-definable operator., null, {token: =}], =, =)
-    handleInvalidOperatorName(operator, =)
-    handleNoTypeVariables(42)
-    handleRecoverableError(MissingMethodParameters, =, =)
-    beginFormalParameters((, MemberKind.NonStaticMethod)
-    endFormalParameters(0, (, ), MemberKind.NonStaticMethod)
-    handleNoInitializers()
-    handleAsyncModifier(null, null)
-    handleRecoverableError(Message[ExpectedFunctionBody, Expected a function body, but got '42'., null, {token: 42}], 42, 42)
-    handleInvalidFunctionBody({)
-  endClassMethod(null, operator, (, null, })
-endMember()
-beginMetadataStar(42)
-endMetadataStar(0)
-beginMember()
-  handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got '42'., null, {token: 42}], 42, 42)
-  handleInvalidMember(42)
-endMember()
-beginMetadataStar(;)
-endMetadataStar(0)
-beginMember()
-  handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got ';'., null, {token: ;}], ;, ;)
-  handleInvalidMember(;)
+  handleIdentifier(int, typeReference)
+  handleNoTypeArguments(class)
+  handleType(int, null)
+  handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'class'., null, {token: class}], class, class)
+  handleIdentifier(class, fieldDeclaration)
+  beginFieldInitializer(=)
+    handleLiteralInt(42)
+  endFieldInitializer(=, ;)
+endClassFields(null, null, null, null, 1, int, ;)
 endMember()
 beginMetadataStar(int)
 endMetadataStar(0)
 beginMember()
-  handleRecoverableError(MissingConstFinalVarOrType, int, int)
-  handleNoType(;)
-  handleIdentifier(int, fieldDeclaration)
-  handleNoFieldInitializer(class)
-  handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+handleIdentifier(int, typeReference)
+handleNoTypeArguments(const)
+handleType(int, null)
+handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'const'., null, {token: const}], const, const)
+handleIdentifier(const, fieldDeclaration)
+beginFieldInitializer(=)
+  handleLiteralInt(42)
+endFieldInitializer(=, ;)
 endClassFields(null, null, null, null, 1, int, ;)
 endMember()
-beginMetadataStar(class)
-endMetadataStar(0)
-beginMember()
-handleRecoverableError(ClassInClass, class, class)
-handleInvalidMember(class)
-beginMetadataStar(=)
-endMetadataStar(0)
-beginMember()
-  handleRecoverableError(MissingOperatorKeyword, =, =)
-  beginMethod(null, null, null, null, null, operator)
-    handleNoType(class)
-    handleRecoverableError(Message[InvalidOperator, The string '=' isn't a user-definable operator., null, {token: =}], =, =)
-    handleInvalidOperatorName(operator, =)
-    handleNoTypeVariables(42)
-    handleRecoverableError(MissingMethodParameters, =, =)
-    beginFormalParameters((, MemberKind.NonStaticMethod)
-    endFormalParameters(0, (, ), MemberKind.NonStaticMethod)
-    handleNoInitializers()
-    handleAsyncModifier(null, null)
-    handleRecoverableError(Message[ExpectedFunctionBody, Expected a function body, but got '42'., null, {token: 42}], 42, 42)
-    handleInvalidFunctionBody({)
-  endClassMethod(null, operator, (, null, })
-endMember()
-beginMetadataStar(42)
-endMetadataStar(0)
-beginMember()
-  handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got '42'., null, {token: 42}], 42, 42)
-  handleInvalidMember(42)
-endMember()
-beginMetadataStar(;)
-endMetadataStar(0)
-beginMember()
-  handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got ';'., null, {token: ;}], ;, ;)
-  handleInvalidMember(;)
-endMember()
 beginMetadataStar(int)
 endMetadataStar(0)
 beginMember()
-  handleRecoverableError(MissingConstFinalVarOrType, int, int)
-  handleNoType(;)
-  handleIdentifier(int, fieldDeclaration)
-  handleNoFieldInitializer(const)
-  handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+handleIdentifier(int, typeReference)
+handleNoTypeArguments(continue)
+handleType(int, null)
+handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'continue'., null, {token: continue}], continue, continue)
+handleIdentifier(continue, fieldDeclaration)
+beginFieldInitializer(=)
+handleLiteralInt(42)
+endFieldInitializer(=, ;)
 endClassFields(null, null, null, null, 1, int, ;)
 endMember()
-beginMetadataStar(const)
-endMetadataStar(0)
-beginMember()
-handleRecoverableError(MissingOperatorKeyword, =, =)
-beginMethod(null, null, null, const, null, operator)
-  handleNoType(const)
-  handleRecoverableError(Message[InvalidOperator, The string '=' isn't a user-definable operator., null, {token: =}], =, =)
-  handleInvalidOperatorName(operator, =)
-  handleNoTypeVariables(42)
-  handleRecoverableError(MissingMethodParameters, =, =)
-  beginFormalParameters((, MemberKind.NonStaticMethod)
-  endFormalParameters(0, (, ), MemberKind.NonStaticMethod)
-  handleNoInitializers()
-  handleAsyncModifier(null, null)
-  handleRecoverableError(Message[ExpectedFunctionBody, Expected a function body, but got '42'., null, {token: 42}], 42, 42)
-  handleInvalidFunctionBody({)
-  handleRecoverableError(ConstMethod, const, const)
-endClassMethod(null, const, (, null, })
-endMember()
-beginMetadataStar(42)
-endMetadataStar(0)
-beginMember()
-handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got '42'., null, {token: 42}], 42, 42)
-handleInvalidMember(42)
-endMember()
-beginMetadataStar(;)
-endMetadataStar(0)
-beginMember()
-handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got ';'., null, {token: ;}], ;, ;)
-handleInvalidMember(;)
-endMember()
 beginMetadataStar(int)
 endMetadataStar(0)
 beginMember()
-handleRecoverableError(MissingConstFinalVarOrType, int, int)
-handleNoType(;)
-handleIdentifier(int, fieldDeclaration)
-handleNoFieldInitializer(continue)
-handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+handleIdentifier(int, typeReference)
+handleNoTypeArguments(default)
+handleType(int, null)
+handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'default'., null, {token: default}], default, default)
+handleIdentifier(default, fieldDeclaration)
+beginFieldInitializer(=)
+handleLiteralInt(42)
+endFieldInitializer(=, ;)
 endClassFields(null, null, null, null, 1, int, ;)
 endMember()
-beginMetadataStar(continue)
-endMetadataStar(0)
-beginMember()
-handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got 'continue'., null, {token: continue}], continue, continue)
-handleInvalidMember(continue)
-endMember()
-beginMetadataStar(=)
-endMetadataStar(0)
-beginMember()
-handleRecoverableError(MissingOperatorKeyword, =, =)
-beginMethod(null, null, null, null, null, operator)
-handleNoType(continue)
-handleRecoverableError(Message[InvalidOperator, The string '=' isn't a user-definable operator., null, {token: =}], =, =)
-handleInvalidOperatorName(operator, =)
-handleNoTypeVariables(42)
-handleRecoverableError(MissingMethodParameters, =, =)
-beginFormalParameters((, MemberKind.NonStaticMethod)
-endFormalParameters(0, (, ), MemberKind.NonStaticMethod)
-handleNoInitializers()
-handleAsyncModifier(null, null)
-handleRecoverableError(Message[ExpectedFunctionBody, Expected a function body, but got '42'., null, {token: 42}], 42, 42)
-handleInvalidFunctionBody({)
-endClassMethod(null, operator, (, null, })
-endMember()
-beginMetadataStar(42)
-endMetadataStar(0)
-beginMember()
-handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got '42'., null, {token: 42}], 42, 42)
-handleInvalidMember(42)
-endMember()
-beginMetadataStar(;)
-endMetadataStar(0)
-beginMember()
-handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got ';'., null, {token: ;}], ;, ;)
-handleInvalidMember(;)
-endMember()
 beginMetadataStar(int)
 endMetadataStar(0)
 beginMember()
-handleRecoverableError(MissingConstFinalVarOrType, int, int)
-handleNoType(;)
-handleIdentifier(int, fieldDeclaration)
-handleNoFieldInitializer(default)
-handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+handleIdentifier(int, typeReference)
+handleNoTypeArguments(do)
+handleType(int, null)
+handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'do'., null, {token: do}], do, do)
+handleIdentifier(do, fieldDeclaration)
+beginFieldInitializer(=)
+handleLiteralInt(42)
+endFieldInitializer(=, ;)
 endClassFields(null, null, null, null, 1, int, ;)
 endMember()
-beginMetadataStar(default)
-endMetadataStar(0)
-beginMember()
-handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got 'default'., null, {token: default}], default, default)
-handleInvalidMember(default)
-endMember()
-beginMetadataStar(=)
-endMetadataStar(0)
-beginMember()
-handleRecoverableError(MissingOperatorKeyword, =, =)
-beginMethod(null, null, null, null, null, operator)
-handleNoType(default)
-handleRecoverableError(Message[InvalidOperator, The string '=' isn't a user-definable operator., null, {token: =}], =, =)
-handleInvalidOperatorName(operator, =)
-handleNoTypeVariables(42)
-handleRecoverableError(MissingMethodParameters, =, =)
-beginFormalParameters((, MemberKind.NonStaticMethod)
-endFormalParameters(0, (, ), MemberKind.NonStaticMethod)
-handleNoInitializers()
-handleAsyncModifier(null, null)
-handleRecoverableError(Message[ExpectedFunctionBody, Expected a function body, but got '42'., null, {token: 42}], 42, 42)
-handleInvalidFunctionBody({)
-endClassMethod(null, operator, (, null, })
-endMember()
-beginMetadataStar(42)
-endMetadataStar(0)
-beginMember()
-handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got '42'., null, {token: 42}], 42, 42)
-handleInvalidMember(42)
-endMember()
-beginMetadataStar(;)
-endMetadataStar(0)
-beginMember()
-handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got ';'., null, {token: ;}], ;, ;)
-handleInvalidMember(;)
-endMember()
 beginMetadataStar(int)
 endMetadataStar(0)
 beginMember()
-handleRecoverableError(MissingConstFinalVarOrType, int, int)
-handleNoType(;)
-handleIdentifier(int, fieldDeclaration)
-handleNoFieldInitializer(do)
-handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+handleIdentifier(int, typeReference)
+handleNoTypeArguments(else)
+handleType(int, null)
+handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'else'., null, {token: else}], else, else)
+handleIdentifier(else, fieldDeclaration)
+beginFieldInitializer(=)
+handleLiteralInt(42)
+endFieldInitializer(=, ;)
 endClassFields(null, null, null, null, 1, int, ;)
 endMember()
-beginMetadataStar(do)
-endMetadataStar(0)
-beginMember()
-handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got 'do'., null, {token: do}], do, do)
-handleInvalidMember(do)
-endMember()
-beginMetadataStar(=)
-endMetadataStar(0)
-beginMember()
-handleRecoverableError(MissingOperatorKeyword, =, =)
-beginMethod(null, null, null, null, null, operator)
-handleNoType(do)
-handleRecoverableError(Message[InvalidOperator, The string '=' isn't a user-definable operator., null, {token: =}], =, =)
-handleInvalidOperatorName(operator, =)
-handleNoTypeVariables(42)
-handleRecoverableError(MissingMethodParameters, =, =)
-beginFormalParameters((, MemberKind.NonStaticMethod)
-endFormalParameters(0, (, ), MemberKind.NonStaticMethod)
-handleNoInitializers()
-handleAsyncModifier(null, null)
-handleRecoverableError(Message[ExpectedFunctionBody, Expected a function body, but got '42'., null, {token: 42}], 42, 42)
-handleInvalidFunctionBody({)
-endClassMethod(null, operator, (, null, })
-endMember()
-beginMetadataStar(42)
-endMetadataStar(0)
-beginMember()
-handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got '42'., null, {token: 42}], 42, 42)
-handleInvalidMember(42)
-endMember()
-beginMetadataStar(;)
-endMetadataStar(0)
-beginMember()
-handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got ';'., null, {token: ;}], ;, ;)
-handleInvalidMember(;)
-endMember()
 beginMetadataStar(int)
 endMetadataStar(0)
 beginMember()
-handleRecoverableError(MissingConstFinalVarOrType, int, int)
-handleNoType(;)
-handleIdentifier(int, fieldDeclaration)
-handleNoFieldInitializer(else)
-handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+handleIdentifier(int, typeReference)
+handleNoTypeArguments(enum)
+handleType(int, null)
+handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'enum'., null, {token: enum}], enum, enum)
+handleIdentifier(enum, fieldDeclaration)
+beginFieldInitializer(=)
+handleLiteralInt(42)
+endFieldInitializer(=, ;)
 endClassFields(null, null, null, null, 1, int, ;)
 endMember()
-beginMetadataStar(else)
-endMetadataStar(0)
-beginMember()
-handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got 'else'., null, {token: else}], else, else)
-handleInvalidMember(else)
-endMember()
-beginMetadataStar(=)
-endMetadataStar(0)
-beginMember()
-handleRecoverableError(MissingOperatorKeyword, =, =)
-beginMethod(null, null, null, null, null, operator)
-handleNoType(else)
-handleRecoverableError(Message[InvalidOperator, The string '=' isn't a user-definable operator., null, {token: =}], =, =)
-handleInvalidOperatorName(operator, =)
-handleNoTypeVariables(42)
-handleRecoverableError(MissingMethodParameters, =, =)
-beginFormalParameters((, MemberKind.NonStaticMethod)
-endFormalParameters(0, (, ), MemberKind.NonStaticMethod)
-handleNoInitializers()
-handleAsyncModifier(null, null)
-handleRecoverableError(Message[ExpectedFunctionBody, Expected a function body, but got '42'., null, {token: 42}], 42, 42)
-handleInvalidFunctionBody({)
-endClassMethod(null, operator, (, null, })
-endMember()
-beginMetadataStar(42)
-endMetadataStar(0)
-beginMember()
-handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got '42'., null, {token: 42}], 42, 42)
-handleInvalidMember(42)
-endMember()
-beginMetadataStar(;)
-endMetadataStar(0)
-beginMember()
-handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got ';'., null, {token: ;}], ;, ;)
-handleInvalidMember(;)
-endMember()
 beginMetadataStar(int)
 endMetadataStar(0)
 beginMember()
-handleRecoverableError(MissingConstFinalVarOrType, int, int)
-handleNoType(;)
-handleIdentifier(int, fieldDeclaration)
-handleNoFieldInitializer(enum)
-handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+handleIdentifier(int, typeReference)
+handleNoTypeArguments(extends)
+handleType(int, null)
+handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'extends'., null, {token: extends}], extends, extends)
+handleIdentifier(extends, fieldDeclaration)
+beginFieldInitializer(=)
+handleLiteralInt(42)
+endFieldInitializer(=, ;)
 endClassFields(null, null, null, null, 1, int, ;)
 endMember()
-beginMetadataStar(enum)
-endMetadataStar(0)
-beginMember()
-handleRecoverableError(EnumInClass, enum, enum)
-handleInvalidMember(enum)
-beginMetadataStar(=)
-endMetadataStar(0)
-beginMember()
-handleRecoverableError(MissingOperatorKeyword, =, =)
-beginMethod(null, null, null, null, null, operator)
-handleNoType(enum)
-handleRecoverableError(Message[InvalidOperator, The string '=' isn't a user-definable operator., null, {token: =}], =, =)
-handleInvalidOperatorName(operator, =)
-handleNoTypeVariables(42)
-handleRecoverableError(MissingMethodParameters, =, =)
-beginFormalParameters((, MemberKind.NonStaticMethod)
-endFormalParameters(0, (, ), MemberKind.NonStaticMethod)
-handleNoInitializers()
-handleAsyncModifier(null, null)
-handleRecoverableError(Message[ExpectedFunctionBody, Expected a function body, but got '42'., null, {token: 42}], 42, 42)
-handleInvalidFunctionBody({)
-endClassMethod(null, operator, (, null, })
-endMember()
-beginMetadataStar(42)
-endMetadataStar(0)
-beginMember()
-handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got '42'., null, {token: 42}], 42, 42)
-handleInvalidMember(42)
-endMember()
-beginMetadataStar(;)
-endMetadataStar(0)
-beginMember()
-handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got ';'., null, {token: ;}], ;, ;)
-handleInvalidMember(;)
-endMember()
 beginMetadataStar(int)
 endMetadataStar(0)
 beginMember()
-handleRecoverableError(MissingConstFinalVarOrType, int, int)
-handleNoType(;)
-handleIdentifier(int, fieldDeclaration)
-handleNoFieldInitializer(extends)
-handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+handleIdentifier(int, typeReference)
+handleNoTypeArguments(false)
+handleType(int, null)
+handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'false'., null, {token: false}], false, false)
+handleIdentifier(false, fieldDeclaration)
+beginFieldInitializer(=)
+handleLiteralInt(42)
+endFieldInitializer(=, ;)
 endClassFields(null, null, null, null, 1, int, ;)
 endMember()
-beginMetadataStar(extends)
-endMetadataStar(0)
-beginMember()
-handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got 'extends'., null, {token: extends}], extends, extends)
-handleInvalidMember(extends)
-endMember()
-beginMetadataStar(=)
-endMetadataStar(0)
-beginMember()
-handleRecoverableError(MissingOperatorKeyword, =, =)
-beginMethod(null, null, null, null, null, operator)
-handleNoType(extends)
-handleRecoverableError(Message[InvalidOperator, The string '=' isn't a user-definable operator., null, {token: =}], =, =)
-handleInvalidOperatorName(operator, =)
-handleNoTypeVariables(42)
-handleRecoverableError(MissingMethodParameters, =, =)
-beginFormalParameters((, MemberKind.NonStaticMethod)
-endFormalParameters(0, (, ), MemberKind.NonStaticMethod)
-handleNoInitializers()
-handleAsyncModifier(null, null)
-handleRecoverableError(Message[ExpectedFunctionBody, Expected a function body, but got '42'., null, {token: 42}], 42, 42)
-handleInvalidFunctionBody({)
-endClassMethod(null, operator, (, null, })
-endMember()
-beginMetadataStar(42)
-endMetadataStar(0)
-beginMember()
-handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got '42'., null, {token: 42}], 42, 42)
-handleInvalidMember(42)
-endMember()
-beginMetadataStar(;)
-endMetadataStar(0)
-beginMember()
-handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got ';'., null, {token: ;}], ;, ;)
-handleInvalidMember(;)
-endMember()
 beginMetadataStar(int)
 endMetadataStar(0)
 beginMember()
-handleRecoverableError(MissingConstFinalVarOrType, int, int)
-handleNoType(;)
-handleIdentifier(int, fieldDeclaration)
-handleNoFieldInitializer(false)
-handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+handleIdentifier(int, typeReference)
+handleNoTypeArguments(final)
+handleType(int, null)
+handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'final'., null, {token: final}], final, final)
+handleIdentifier(final, fieldDeclaration)
+beginFieldInitializer(=)
+handleLiteralInt(42)
+endFieldInitializer(=, ;)
 endClassFields(null, null, null, null, 1, int, ;)
 endMember()
-beginMetadataStar(false)
-endMetadataStar(0)
-beginMember()
-handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got 'false'., null, {token: false}], false, false)
-handleInvalidMember(false)
-endMember()
-beginMetadataStar(=)
-endMetadataStar(0)
-beginMember()
-handleRecoverableError(MissingOperatorKeyword, =, =)
-beginMethod(null, null, null, null, null, operator)
-handleNoType(false)
-handleRecoverableError(Message[InvalidOperator, The string '=' isn't a user-definable operator., null, {token: =}], =, =)
-handleInvalidOperatorName(operator, =)
-handleNoTypeVariables(42)
-handleRecoverableError(MissingMethodParameters, =, =)
-beginFormalParameters((, MemberKind.NonStaticMethod)
-endFormalParameters(0, (, ), MemberKind.NonStaticMethod)
-handleNoInitializers()
-handleAsyncModifier(null, null)
-handleRecoverableError(Message[ExpectedFunctionBody, Expected a function body, but got '42'., null, {token: 42}], 42, 42)
-handleInvalidFunctionBody({)
-endClassMethod(null, operator, (, null, })
-endMember()
-beginMetadataStar(42)
-endMetadataStar(0)
-beginMember()
-handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got '42'., null, {token: 42}], 42, 42)
-handleInvalidMember(42)
-endMember()
-beginMetadataStar(;)
-endMetadataStar(0)
-beginMember()
-handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got ';'., null, {token: ;}], ;, ;)
-handleInvalidMember(;)
-endMember()
 beginMetadataStar(int)
 endMetadataStar(0)
 beginMember()
-handleRecoverableError(MissingConstFinalVarOrType, int, int)
-handleNoType(;)
-handleIdentifier(int, fieldDeclaration)
-handleNoFieldInitializer(final)
-handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+handleIdentifier(int, typeReference)
+handleNoTypeArguments(finally)
+handleType(int, null)
+handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'finally'., null, {token: finally}], finally, finally)
+handleIdentifier(finally, fieldDeclaration)
+beginFieldInitializer(=)
+handleLiteralInt(42)
+endFieldInitializer(=, ;)
 endClassFields(null, null, null, null, 1, int, ;)
 endMember()
-beginMetadataStar(final)
-endMetadataStar(0)
-beginMember()
-handleRecoverableError(MissingOperatorKeyword, =, =)
-handleRecoverableError(Message[ExtraneousModifier, Can't have modifier 'final' here., Try removing 'final'., {token: final}], final, final)
-beginMethod(null, null, null, null, null, operator)
-handleNoType(final)
-handleRecoverableError(Message[InvalidOperator, The string '=' isn't a user-definable operator., null, {token: =}], =, =)
-handleInvalidOperatorName(operator, =)
-handleNoTypeVariables(42)
-handleRecoverableError(MissingMethodParameters, =, =)
-beginFormalParameters((, MemberKind.NonStaticMethod)
-endFormalParameters(0, (, ), MemberKind.NonStaticMethod)
-handleNoInitializers()
-handleAsyncModifier(null, null)
-handleRecoverableError(Message[ExpectedFunctionBody, Expected a function body, but got '42'., null, {token: 42}], 42, 42)
-handleInvalidFunctionBody({)
-endClassMethod(null, final, (, null, })
-endMember()
-beginMetadataStar(42)
-endMetadataStar(0)
-beginMember()
-handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got '42'., null, {token: 42}], 42, 42)
-handleInvalidMember(42)
-endMember()
-beginMetadataStar(;)
-endMetadataStar(0)
-beginMember()
-handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got ';'., null, {token: ;}], ;, ;)
-handleInvalidMember(;)
-endMember()
 beginMetadataStar(int)
 endMetadataStar(0)
 beginMember()
-handleRecoverableError(MissingConstFinalVarOrType, int, int)
-handleNoType(;)
-handleIdentifier(int, fieldDeclaration)
-handleNoFieldInitializer(finally)
-handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+handleIdentifier(int, typeReference)
+handleNoTypeArguments(for)
+handleType(int, null)
+handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'for'., null, {token: for}], for, for)
+handleIdentifier(for, fieldDeclaration)
+beginFieldInitializer(=)
+handleLiteralInt(42)
+endFieldInitializer(=, ;)
 endClassFields(null, null, null, null, 1, int, ;)
 endMember()
-beginMetadataStar(finally)
-endMetadataStar(0)
-beginMember()
-handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got 'finally'., null, {token: finally}], finally, finally)
-handleInvalidMember(finally)
-endMember()
-beginMetadataStar(=)
-endMetadataStar(0)
-beginMember()
-handleRecoverableError(MissingOperatorKeyword, =, =)
-beginMethod(null, null, null, null, null, operator)
-handleNoType(finally)
-handleRecoverableError(Message[InvalidOperator, The string '=' isn't a user-definable operator., null, {token: =}], =, =)
-handleInvalidOperatorName(operator, =)
-handleNoTypeVariables(42)
-handleRecoverableError(MissingMethodParameters, =, =)
-beginFormalParameters((, MemberKind.NonStaticMethod)
-endFormalParameters(0, (, ), MemberKind.NonStaticMethod)
-handleNoInitializers()
-handleAsyncModifier(null, null)
-handleRecoverableError(Message[ExpectedFunctionBody, Expected a function body, but got '42'., null, {token: 42}], 42, 42)
-handleInvalidFunctionBody({)
-endClassMethod(null, operator, (, null, })
-endMember()
-beginMetadataStar(42)
-endMetadataStar(0)
-beginMember()
-handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got '42'., null, {token: 42}], 42, 42)
-handleInvalidMember(42)
-endMember()
-beginMetadataStar(;)
-endMetadataStar(0)
-beginMember()
-handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got ';'., null, {token: ;}], ;, ;)
-handleInvalidMember(;)
-endMember()
 beginMetadataStar(int)
 endMetadataStar(0)
 beginMember()
-handleRecoverableError(MissingConstFinalVarOrType, int, int)
-handleNoType(;)
-handleIdentifier(int, fieldDeclaration)
-handleNoFieldInitializer(for)
-handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+handleIdentifier(int, typeReference)
+handleNoTypeArguments(if)
+handleType(int, null)
+handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'if'., null, {token: if}], if, if)
+handleIdentifier(if, fieldDeclaration)
+beginFieldInitializer(=)
+handleLiteralInt(42)
+endFieldInitializer(=, ;)
 endClassFields(null, null, null, null, 1, int, ;)
 endMember()
-beginMetadataStar(for)
-endMetadataStar(0)
-beginMember()
-handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got 'for'., null, {token: for}], for, for)
-handleInvalidMember(for)
-endMember()
-beginMetadataStar(=)
-endMetadataStar(0)
-beginMember()
-handleRecoverableError(MissingOperatorKeyword, =, =)
-beginMethod(null, null, null, null, null, operator)
-handleNoType(for)
-handleRecoverableError(Message[InvalidOperator, The string '=' isn't a user-definable operator., null, {token: =}], =, =)
-handleInvalidOperatorName(operator, =)
-handleNoTypeVariables(42)
-handleRecoverableError(MissingMethodParameters, =, =)
-beginFormalParameters((, MemberKind.NonStaticMethod)
-endFormalParameters(0, (, ), MemberKind.NonStaticMethod)
-handleNoInitializers()
-handleAsyncModifier(null, null)
-handleRecoverableError(Message[ExpectedFunctionBody, Expected a function body, but got '42'., null, {token: 42}], 42, 42)
-handleInvalidFunctionBody({)
-endClassMethod(null, operator, (, null, })
-endMember()
-beginMetadataStar(42)
-endMetadataStar(0)
-beginMember()
-handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got '42'., null, {token: 42}], 42, 42)
-handleInvalidMember(42)
-endMember()
-beginMetadataStar(;)
-endMetadataStar(0)
-beginMember()
-handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got ';'., null, {token: ;}], ;, ;)
-handleInvalidMember(;)
-endMember()
 beginMetadataStar(int)
 endMetadataStar(0)
 beginMember()
-handleRecoverableError(MissingConstFinalVarOrType, int, int)
-handleNoType(;)
-handleIdentifier(int, fieldDeclaration)
-handleNoFieldInitializer(if)
-handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+handleIdentifier(int, typeReference)
+handleNoTypeArguments(in)
+handleType(int, null)
+handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'in'., null, {token: in}], in, in)
+handleIdentifier(in, fieldDeclaration)
+beginFieldInitializer(=)
+handleLiteralInt(42)
+endFieldInitializer(=, ;)
 endClassFields(null, null, null, null, 1, int, ;)
 endMember()
-beginMetadataStar(if)
-endMetadataStar(0)
-beginMember()
-handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got 'if'., null, {token: if}], if, if)
-handleInvalidMember(if)
-endMember()
-beginMetadataStar(=)
-endMetadataStar(0)
-beginMember()
-handleRecoverableError(MissingOperatorKeyword, =, =)
-beginMethod(null, null, null, null, null, operator)
-handleNoType(if)
-handleRecoverableError(Message[InvalidOperator, The string '=' isn't a user-definable operator., null, {token: =}], =, =)
-handleInvalidOperatorName(operator, =)
-handleNoTypeVariables(42)
-handleRecoverableError(MissingMethodParameters, =, =)
-beginFormalParameters((, MemberKind.NonStaticMethod)
-endFormalParameters(0, (, ), MemberKind.NonStaticMethod)
-handleNoInitializers()
-handleAsyncModifier(null, null)
-handleRecoverableError(Message[ExpectedFunctionBody, Expected a function body, but got '42'., null, {token: 42}], 42, 42)
-handleInvalidFunctionBody({)
-endClassMethod(null, operator, (, null, })
-endMember()
-beginMetadataStar(42)
-endMetadataStar(0)
-beginMember()
-handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got '42'., null, {token: 42}], 42, 42)
-handleInvalidMember(42)
-endMember()
-beginMetadataStar(;)
-endMetadataStar(0)
-beginMember()
-handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got ';'., null, {token: ;}], ;, ;)
-handleInvalidMember(;)
-endMember()
 beginMetadataStar(int)
 endMetadataStar(0)
 beginMember()
-handleRecoverableError(MissingConstFinalVarOrType, int, int)
-handleNoType(;)
-handleIdentifier(int, fieldDeclaration)
-handleNoFieldInitializer(in)
-handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+handleIdentifier(int, typeReference)
+handleNoTypeArguments(is)
+handleType(int, null)
+handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'is'., null, {token: is}], is, is)
+handleIdentifier(is, fieldDeclaration)
+beginFieldInitializer(=)
+handleLiteralInt(42)
+endFieldInitializer(=, ;)
 endClassFields(null, null, null, null, 1, int, ;)
 endMember()
-beginMetadataStar(in)
-endMetadataStar(0)
-beginMember()
-handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got 'in'., null, {token: in}], in, in)
-handleInvalidMember(in)
-endMember()
-beginMetadataStar(=)
-endMetadataStar(0)
-beginMember()
-handleRecoverableError(MissingOperatorKeyword, =, =)
-beginMethod(null, null, null, null, null, operator)
-handleNoType(in)
-handleRecoverableError(Message[InvalidOperator, The string '=' isn't a user-definable operator., null, {token: =}], =, =)
-handleInvalidOperatorName(operator, =)
-handleNoTypeVariables(42)
-handleRecoverableError(MissingMethodParameters, =, =)
-beginFormalParameters((, MemberKind.NonStaticMethod)
-endFormalParameters(0, (, ), MemberKind.NonStaticMethod)
-handleNoInitializers()
-handleAsyncModifier(null, null)
-handleRecoverableError(Message[ExpectedFunctionBody, Expected a function body, but got '42'., null, {token: 42}], 42, 42)
-handleInvalidFunctionBody({)
-endClassMethod(null, operator, (, null, })
-endMember()
-beginMetadataStar(42)
-endMetadataStar(0)
-beginMember()
-handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got '42'., null, {token: 42}], 42, 42)
-handleInvalidMember(42)
-endMember()
-beginMetadataStar(;)
-endMetadataStar(0)
-beginMember()
-handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got ';'., null, {token: ;}], ;, ;)
-handleInvalidMember(;)
-endMember()
 beginMetadataStar(int)
 endMetadataStar(0)
 beginMember()
-handleRecoverableError(MissingConstFinalVarOrType, int, int)
-handleNoType(;)
-handleIdentifier(int, fieldDeclaration)
-handleNoFieldInitializer(is)
-handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+handleIdentifier(int, typeReference)
+handleNoTypeArguments(new)
+handleType(int, null)
+handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'new'., null, {token: new}], new, new)
+handleIdentifier(new, fieldDeclaration)
+beginFieldInitializer(=)
+handleLiteralInt(42)
+endFieldInitializer(=, ;)
 endClassFields(null, null, null, null, 1, int, ;)
 endMember()
-beginMetadataStar(is)
-endMetadataStar(0)
-beginMember()
-handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got 'is'., null, {token: is}], is, is)
-handleInvalidMember(is)
-endMember()
-beginMetadataStar(=)
-endMetadataStar(0)
-beginMember()
-handleRecoverableError(MissingOperatorKeyword, =, =)
-beginMethod(null, null, null, null, null, operator)
-handleNoType(is)
-handleRecoverableError(Message[InvalidOperator, The string '=' isn't a user-definable operator., null, {token: =}], =, =)
-handleInvalidOperatorName(operator, =)
-handleNoTypeVariables(42)
-handleRecoverableError(MissingMethodParameters, =, =)
-beginFormalParameters((, MemberKind.NonStaticMethod)
-endFormalParameters(0, (, ), MemberKind.NonStaticMethod)
-handleNoInitializers()
-handleAsyncModifier(null, null)
-handleRecoverableError(Message[ExpectedFunctionBody, Expected a function body, but got '42'., null, {token: 42}], 42, 42)
-handleInvalidFunctionBody({)
-endClassMethod(null, operator, (, null, })
-endMember()
-beginMetadataStar(42)
-endMetadataStar(0)
-beginMember()
-handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got '42'., null, {token: 42}], 42, 42)
-handleInvalidMember(42)
-endMember()
-beginMetadataStar(;)
-endMetadataStar(0)
-beginMember()
-handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got ';'., null, {token: ;}], ;, ;)
-handleInvalidMember(;)
-endMember()
 beginMetadataStar(int)
 endMetadataStar(0)
 beginMember()
-handleRecoverableError(MissingConstFinalVarOrType, int, int)
-handleNoType(;)
-handleIdentifier(int, fieldDeclaration)
-handleNoFieldInitializer(new)
-handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+handleIdentifier(int, typeReference)
+handleNoTypeArguments(null)
+handleType(int, null)
+handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'null'., null, {token: null}], null, null)
+handleIdentifier(null, fieldDeclaration)
+beginFieldInitializer(=)
+handleLiteralInt(42)
+endFieldInitializer(=, ;)
 endClassFields(null, null, null, null, 1, int, ;)
 endMember()
-beginMetadataStar(new)
-endMetadataStar(0)
-beginMember()
-handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got 'new'., null, {token: new}], new, new)
-handleInvalidMember(new)
-endMember()
-beginMetadataStar(=)
-endMetadataStar(0)
-beginMember()
-handleRecoverableError(MissingOperatorKeyword, =, =)
-beginMethod(null, null, null, null, null, operator)
-handleNoType(new)
-handleRecoverableError(Message[InvalidOperator, The string '=' isn't a user-definable operator., null, {token: =}], =, =)
-handleInvalidOperatorName(operator, =)
-handleNoTypeVariables(42)
-handleRecoverableError(MissingMethodParameters, =, =)
-beginFormalParameters((, MemberKind.NonStaticMethod)
-endFormalParameters(0, (, ), MemberKind.NonStaticMethod)
-handleNoInitializers()
-handleAsyncModifier(null, null)
-handleRecoverableError(Message[ExpectedFunctionBody, Expected a function body, but got '42'., null, {token: 42}], 42, 42)
-handleInvalidFunctionBody({)
-endClassMethod(null, operator, (, null, })
-endMember()
-beginMetadataStar(42)
-endMetadataStar(0)
-beginMember()
-handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got '42'., null, {token: 42}], 42, 42)
-handleInvalidMember(42)
-endMember()
-beginMetadataStar(;)
-endMetadataStar(0)
-beginMember()
-handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got ';'., null, {token: ;}], ;, ;)
-handleInvalidMember(;)
-endMember()
 beginMetadataStar(int)
 endMetadataStar(0)
 beginMember()
-handleRecoverableError(MissingConstFinalVarOrType, int, int)
-handleNoType(;)
-handleIdentifier(int, fieldDeclaration)
-handleNoFieldInitializer(null)
-handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+handleIdentifier(int, typeReference)
+handleNoTypeArguments(rethrow)
+handleType(int, null)
+handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'rethrow'., null, {token: rethrow}], rethrow, rethrow)
+handleIdentifier(rethrow, fieldDeclaration)
+beginFieldInitializer(=)
+handleLiteralInt(42)
+endFieldInitializer(=, ;)
 endClassFields(null, null, null, null, 1, int, ;)
 endMember()
-beginMetadataStar(null)
-endMetadataStar(0)
-beginMember()
-handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got 'null'., null, {token: null}], null, null)
-handleInvalidMember(null)
-endMember()
-beginMetadataStar(=)
-endMetadataStar(0)
-beginMember()
-handleRecoverableError(MissingOperatorKeyword, =, =)
-beginMethod(null, null, null, null, null, operator)
-handleNoType(null)
-handleRecoverableError(Message[InvalidOperator, The string '=' isn't a user-definable operator., null, {token: =}], =, =)
-handleInvalidOperatorName(operator, =)
-handleNoTypeVariables(42)
-handleRecoverableError(MissingMethodParameters, =, =)
-beginFormalParameters((, MemberKind.NonStaticMethod)
-endFormalParameters(0, (, ), MemberKind.NonStaticMethod)
-handleNoInitializers()
-handleAsyncModifier(null, null)
-handleRecoverableError(Message[ExpectedFunctionBody, Expected a function body, but got '42'., null, {token: 42}], 42, 42)
-handleInvalidFunctionBody({)
-endClassMethod(null, operator, (, null, })
-endMember()
-beginMetadataStar(42)
-endMetadataStar(0)
-beginMember()
-handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got '42'., null, {token: 42}], 42, 42)
-handleInvalidMember(42)
-endMember()
-beginMetadataStar(;)
-endMetadataStar(0)
-beginMember()
-handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got ';'., null, {token: ;}], ;, ;)
-handleInvalidMember(;)
-endMember()
 beginMetadataStar(int)
 endMetadataStar(0)
 beginMember()
-handleRecoverableError(MissingConstFinalVarOrType, int, int)
-handleNoType(;)
-handleIdentifier(int, fieldDeclaration)
-handleNoFieldInitializer(rethrow)
-handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+handleIdentifier(int, typeReference)
+handleNoTypeArguments(return)
+handleType(int, null)
+handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'return'., null, {token: return}], return, return)
+handleIdentifier(return, fieldDeclaration)
+beginFieldInitializer(=)
+handleLiteralInt(42)
+endFieldInitializer(=, ;)
 endClassFields(null, null, null, null, 1, int, ;)
 endMember()
-beginMetadataStar(rethrow)
-endMetadataStar(0)
-beginMember()
-handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got 'rethrow'., null, {token: rethrow}], rethrow, rethrow)
-handleInvalidMember(rethrow)
-endMember()
-beginMetadataStar(=)
-endMetadataStar(0)
-beginMember()
-handleRecoverableError(MissingOperatorKeyword, =, =)
-beginMethod(null, null, null, null, null, operator)
-handleNoType(rethrow)
-handleRecoverableError(Message[InvalidOperator, The string '=' isn't a user-definable operator., null, {token: =}], =, =)
-handleInvalidOperatorName(operator, =)
-handleNoTypeVariables(42)
-handleRecoverableError(MissingMethodParameters, =, =)
-beginFormalParameters((, MemberKind.NonStaticMethod)
-endFormalParameters(0, (, ), MemberKind.NonStaticMethod)
-handleNoInitializers()
-handleAsyncModifier(null, null)
-handleRecoverableError(Message[ExpectedFunctionBody, Expected a function body, but got '42'., null, {token: 42}], 42, 42)
-handleInvalidFunctionBody({)
-endClassMethod(null, operator, (, null, })
-endMember()
-beginMetadataStar(42)
-endMetadataStar(0)
-beginMember()
-handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got '42'., null, {token: 42}], 42, 42)
-handleInvalidMember(42)
-endMember()
-beginMetadataStar(;)
-endMetadataStar(0)
-beginMember()
-handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got ';'., null, {token: ;}], ;, ;)
-handleInvalidMember(;)
-endMember()
 beginMetadataStar(int)
 endMetadataStar(0)
 beginMember()
-handleRecoverableError(MissingConstFinalVarOrType, int, int)
-handleNoType(;)
-handleIdentifier(int, fieldDeclaration)
-handleNoFieldInitializer(return)
-handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+handleIdentifier(int, typeReference)
+handleNoTypeArguments(super)
+handleType(int, null)
+handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'super'., null, {token: super}], super, super)
+handleIdentifier(super, fieldDeclaration)
+beginFieldInitializer(=)
+handleLiteralInt(42)
+endFieldInitializer(=, ;)
 endClassFields(null, null, null, null, 1, int, ;)
 endMember()
-beginMetadataStar(return)
-endMetadataStar(0)
-beginMember()
-handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got 'return'., null, {token: return}], return, return)
-handleInvalidMember(return)
-endMember()
-beginMetadataStar(=)
-endMetadataStar(0)
-beginMember()
-handleRecoverableError(MissingOperatorKeyword, =, =)
-beginMethod(null, null, null, null, null, operator)
-handleNoType(return)
-handleRecoverableError(Message[InvalidOperator, The string '=' isn't a user-definable operator., null, {token: =}], =, =)
-handleInvalidOperatorName(operator, =)
-handleNoTypeVariables(42)
-handleRecoverableError(MissingMethodParameters, =, =)
-beginFormalParameters((, MemberKind.NonStaticMethod)
-endFormalParameters(0, (, ), MemberKind.NonStaticMethod)
-handleNoInitializers()
-handleAsyncModifier(null, null)
-handleRecoverableError(Message[ExpectedFunctionBody, Expected a function body, but got '42'., null, {token: 42}], 42, 42)
-handleInvalidFunctionBody({)
-endClassMethod(null, operator, (, null, })
-endMember()
-beginMetadataStar(42)
-endMetadataStar(0)
-beginMember()
-handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got '42'., null, {token: 42}], 42, 42)
-handleInvalidMember(42)
-endMember()
-beginMetadataStar(;)
-endMetadataStar(0)
-beginMember()
-handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got ';'., null, {token: ;}], ;, ;)
-handleInvalidMember(;)
-endMember()
 beginMetadataStar(int)
 endMetadataStar(0)
 beginMember()
-handleRecoverableError(MissingConstFinalVarOrType, int, int)
-handleNoType(;)
-handleIdentifier(int, fieldDeclaration)
-handleNoFieldInitializer(super)
-handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+handleIdentifier(int, typeReference)
+handleNoTypeArguments(switch)
+handleType(int, null)
+handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'switch'., null, {token: switch}], switch, switch)
+handleIdentifier(switch, fieldDeclaration)
+beginFieldInitializer(=)
+handleLiteralInt(42)
+endFieldInitializer(=, ;)
 endClassFields(null, null, null, null, 1, int, ;)
 endMember()
-beginMetadataStar(super)
-endMetadataStar(0)
-beginMember()
-handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got 'super'., null, {token: super}], super, super)
-handleInvalidMember(super)
-endMember()
-beginMetadataStar(=)
-endMetadataStar(0)
-beginMember()
-handleRecoverableError(MissingOperatorKeyword, =, =)
-beginMethod(null, null, null, null, null, operator)
-handleNoType(super)
-handleRecoverableError(Message[InvalidOperator, The string '=' isn't a user-definable operator., null, {token: =}], =, =)
-handleInvalidOperatorName(operator, =)
-handleNoTypeVariables(42)
-handleRecoverableError(MissingMethodParameters, =, =)
-beginFormalParameters((, MemberKind.NonStaticMethod)
-endFormalParameters(0, (, ), MemberKind.NonStaticMethod)
-handleNoInitializers()
-handleAsyncModifier(null, null)
-handleRecoverableError(Message[ExpectedFunctionBody, Expected a function body, but got '42'., null, {token: 42}], 42, 42)
-handleInvalidFunctionBody({)
-endClassMethod(null, operator, (, null, })
-endMember()
-beginMetadataStar(42)
-endMetadataStar(0)
-beginMember()
-handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got '42'., null, {token: 42}], 42, 42)
-handleInvalidMember(42)
-endMember()
-beginMetadataStar(;)
-endMetadataStar(0)
-beginMember()
-handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got ';'., null, {token: ;}], ;, ;)
-handleInvalidMember(;)
-endMember()
-beginMetadataStar(int)
-endMetadataStar(0)
-beginMember()
-handleRecoverableError(MissingConstFinalVarOrType, int, int)
-handleNoType(;)
-handleIdentifier(int, fieldDeclaration)
-handleNoFieldInitializer(switch)
-handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
-endClassFields(null, null, null, null, 1, int, ;)
-endMember()
-beginMetadataStar(switch)
-endMetadataStar(0)
-beginMember()
-handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got 'switch'., null, {token: switch}], switch, switch)
-handleInvalidMember(switch)
-endMember()
-beginMetadataStar(=)
-endMetadataStar(0)
-beginMember()
-handleRecoverableError(MissingOperatorKeyword, =, =)
-beginMethod(null, null, null, null, null, operator)
-handleNoType(switch)
-handleRecoverableError(Message[InvalidOperator, The string '=' isn't a user-definable operator., null, {token: =}], =, =)
-handleInvalidOperatorName(operator, =)
-handleNoTypeVariables(42)
-handleRecoverableError(MissingMethodParameters, =, =)
-beginFormalParameters((, MemberKind.NonStaticMethod)
-endFormalParameters(0, (, ), MemberKind.NonStaticMethod)
-handleNoInitializers()
-handleAsyncModifier(null, null)
-handleRecoverableError(Message[ExpectedFunctionBody, Expected a function body, but got '42'., null, {token: 42}], 42, 42)
-handleInvalidFunctionBody({)
-endClassMethod(null, operator, (, null, })
-endMember()
-beginMetadataStar(42)
-endMetadataStar(0)
-beginMember()
-handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got '42'., null, {token: 42}], 42, 42)
-handleInvalidMember(42)
-endMember()
-beginMetadataStar(;)
-endMetadataStar(0)
-beginMember()
-handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got ';'., null, {token: ;}], ;, ;)
-handleInvalidMember(;)
-endMember()
 beginMetadataStar(int)
 endMetadataStar(0)
 beginMember()
@@ -2319,315 +486,95 @@
 beginMetadataStar(int)
 endMetadataStar(0)
 beginMember()
-handleRecoverableError(MissingConstFinalVarOrType, int, int)
-handleNoType(;)
-handleIdentifier(int, fieldDeclaration)
-handleNoFieldInitializer(throw)
-handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+handleIdentifier(int, typeReference)
+handleNoTypeArguments(throw)
+handleType(int, null)
+handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'throw'., null, {token: throw}], throw, throw)
+handleIdentifier(throw, fieldDeclaration)
+beginFieldInitializer(=)
+handleLiteralInt(42)
+endFieldInitializer(=, ;)
 endClassFields(null, null, null, null, 1, int, ;)
 endMember()
-beginMetadataStar(throw)
-endMetadataStar(0)
-beginMember()
-handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got 'throw'., null, {token: throw}], throw, throw)
-handleInvalidMember(throw)
-endMember()
-beginMetadataStar(=)
-endMetadataStar(0)
-beginMember()
-handleRecoverableError(MissingOperatorKeyword, =, =)
-beginMethod(null, null, null, null, null, operator)
-handleNoType(throw)
-handleRecoverableError(Message[InvalidOperator, The string '=' isn't a user-definable operator., null, {token: =}], =, =)
-handleInvalidOperatorName(operator, =)
-handleNoTypeVariables(42)
-handleRecoverableError(MissingMethodParameters, =, =)
-beginFormalParameters((, MemberKind.NonStaticMethod)
-endFormalParameters(0, (, ), MemberKind.NonStaticMethod)
-handleNoInitializers()
-handleAsyncModifier(null, null)
-handleRecoverableError(Message[ExpectedFunctionBody, Expected a function body, but got '42'., null, {token: 42}], 42, 42)
-handleInvalidFunctionBody({)
-endClassMethod(null, operator, (, null, })
-endMember()
-beginMetadataStar(42)
-endMetadataStar(0)
-beginMember()
-handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got '42'., null, {token: 42}], 42, 42)
-handleInvalidMember(42)
-endMember()
-beginMetadataStar(;)
-endMetadataStar(0)
-beginMember()
-handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got ';'., null, {token: ;}], ;, ;)
-handleInvalidMember(;)
-endMember()
 beginMetadataStar(int)
 endMetadataStar(0)
 beginMember()
-handleRecoverableError(MissingConstFinalVarOrType, int, int)
-handleNoType(;)
-handleIdentifier(int, fieldDeclaration)
-handleNoFieldInitializer(true)
-handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+handleIdentifier(int, typeReference)
+handleNoTypeArguments(true)
+handleType(int, null)
+handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'true'., null, {token: true}], true, true)
+handleIdentifier(true, fieldDeclaration)
+beginFieldInitializer(=)
+handleLiteralInt(42)
+endFieldInitializer(=, ;)
 endClassFields(null, null, null, null, 1, int, ;)
 endMember()
-beginMetadataStar(true)
-endMetadataStar(0)
-beginMember()
-handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got 'true'., null, {token: true}], true, true)
-handleInvalidMember(true)
-endMember()
-beginMetadataStar(=)
-endMetadataStar(0)
-beginMember()
-handleRecoverableError(MissingOperatorKeyword, =, =)
-beginMethod(null, null, null, null, null, operator)
-handleNoType(true)
-handleRecoverableError(Message[InvalidOperator, The string '=' isn't a user-definable operator., null, {token: =}], =, =)
-handleInvalidOperatorName(operator, =)
-handleNoTypeVariables(42)
-handleRecoverableError(MissingMethodParameters, =, =)
-beginFormalParameters((, MemberKind.NonStaticMethod)
-endFormalParameters(0, (, ), MemberKind.NonStaticMethod)
-handleNoInitializers()
-handleAsyncModifier(null, null)
-handleRecoverableError(Message[ExpectedFunctionBody, Expected a function body, but got '42'., null, {token: 42}], 42, 42)
-handleInvalidFunctionBody({)
-endClassMethod(null, operator, (, null, })
-endMember()
-beginMetadataStar(42)
-endMetadataStar(0)
-beginMember()
-handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got '42'., null, {token: 42}], 42, 42)
-handleInvalidMember(42)
-endMember()
-beginMetadataStar(;)
-endMetadataStar(0)
-beginMember()
-handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got ';'., null, {token: ;}], ;, ;)
-handleInvalidMember(;)
-endMember()
 beginMetadataStar(int)
 endMetadataStar(0)
 beginMember()
-handleRecoverableError(MissingConstFinalVarOrType, int, int)
-handleNoType(;)
-handleIdentifier(int, fieldDeclaration)
-handleNoFieldInitializer(try)
-handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+handleIdentifier(int, typeReference)
+handleNoTypeArguments(try)
+handleType(int, null)
+handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'try'., null, {token: try}], try, try)
+handleIdentifier(try, fieldDeclaration)
+beginFieldInitializer(=)
+handleLiteralInt(42)
+endFieldInitializer(=, ;)
 endClassFields(null, null, null, null, 1, int, ;)
 endMember()
-beginMetadataStar(try)
-endMetadataStar(0)
-beginMember()
-handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got 'try'., null, {token: try}], try, try)
-handleInvalidMember(try)
-endMember()
-beginMetadataStar(=)
-endMetadataStar(0)
-beginMember()
-handleRecoverableError(MissingOperatorKeyword, =, =)
-beginMethod(null, null, null, null, null, operator)
-handleNoType(try)
-handleRecoverableError(Message[InvalidOperator, The string '=' isn't a user-definable operator., null, {token: =}], =, =)
-handleInvalidOperatorName(operator, =)
-handleNoTypeVariables(42)
-handleRecoverableError(MissingMethodParameters, =, =)
-beginFormalParameters((, MemberKind.NonStaticMethod)
-endFormalParameters(0, (, ), MemberKind.NonStaticMethod)
-handleNoInitializers()
-handleAsyncModifier(null, null)
-handleRecoverableError(Message[ExpectedFunctionBody, Expected a function body, but got '42'., null, {token: 42}], 42, 42)
-handleInvalidFunctionBody({)
-endClassMethod(null, operator, (, null, })
-endMember()
-beginMetadataStar(42)
-endMetadataStar(0)
-beginMember()
-handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got '42'., null, {token: 42}], 42, 42)
-handleInvalidMember(42)
-endMember()
-beginMetadataStar(;)
-endMetadataStar(0)
-beginMember()
-handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got ';'., null, {token: ;}], ;, ;)
-handleInvalidMember(;)
-endMember()
 beginMetadataStar(int)
 endMetadataStar(0)
 beginMember()
-handleRecoverableError(MissingConstFinalVarOrType, int, int)
-handleNoType(;)
-handleIdentifier(int, fieldDeclaration)
-handleNoFieldInitializer(var)
-handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+handleIdentifier(int, typeReference)
+handleNoTypeArguments(var)
+handleType(int, null)
+handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'var'., null, {token: var}], var, var)
+handleIdentifier(var, fieldDeclaration)
+beginFieldInitializer(=)
+handleLiteralInt(42)
+endFieldInitializer(=, ;)
 endClassFields(null, null, null, null, 1, int, ;)
 endMember()
-beginMetadataStar(var)
-endMetadataStar(0)
-beginMember()
-handleRecoverableError(MissingOperatorKeyword, =, =)
-handleRecoverableError(VarReturnType, var, var)
-beginMethod(null, null, null, null, null, operator)
-handleNoType(var)
-handleRecoverableError(Message[InvalidOperator, The string '=' isn't a user-definable operator., null, {token: =}], =, =)
-handleInvalidOperatorName(operator, =)
-handleNoTypeVariables(42)
-handleRecoverableError(MissingMethodParameters, =, =)
-beginFormalParameters((, MemberKind.NonStaticMethod)
-endFormalParameters(0, (, ), MemberKind.NonStaticMethod)
-handleNoInitializers()
-handleAsyncModifier(null, null)
-handleRecoverableError(Message[ExpectedFunctionBody, Expected a function body, but got '42'., null, {token: 42}], 42, 42)
-handleInvalidFunctionBody({)
-endClassMethod(null, var, (, null, })
-endMember()
-beginMetadataStar(42)
-endMetadataStar(0)
-beginMember()
-handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got '42'., null, {token: 42}], 42, 42)
-handleInvalidMember(42)
-endMember()
-beginMetadataStar(;)
-endMetadataStar(0)
-beginMember()
-handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got ';'., null, {token: ;}], ;, ;)
-handleInvalidMember(;)
-endMember()
 beginMetadataStar(int)
 endMetadataStar(0)
 beginMember()
-handleRecoverableError(MissingConstFinalVarOrType, int, int)
-handleNoType(;)
-handleIdentifier(int, fieldDeclaration)
-handleNoFieldInitializer(void)
-handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+handleIdentifier(int, typeReference)
+handleNoTypeArguments(void)
+handleType(int, null)
+handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'void'., null, {token: void}], void, void)
+handleIdentifier(void, fieldDeclaration)
+beginFieldInitializer(=)
+handleLiteralInt(42)
+endFieldInitializer(=, ;)
 endClassFields(null, null, null, null, 1, int, ;)
 endMember()
-beginMetadataStar(void)
-endMetadataStar(0)
-beginMember()
-handleRecoverableError(MissingOperatorKeyword, =, =)
-beginMethod(null, null, null, null, null, operator)
-handleVoidKeyword(void)
-handleRecoverableError(Message[InvalidOperator, The string '=' isn't a user-definable operator., null, {token: =}], =, =)
-handleInvalidOperatorName(operator, =)
-handleNoTypeVariables(42)
-handleRecoverableError(MissingMethodParameters, =, =)
-beginFormalParameters((, MemberKind.NonStaticMethod)
-endFormalParameters(0, (, ), MemberKind.NonStaticMethod)
-handleNoInitializers()
-handleAsyncModifier(null, null)
-handleRecoverableError(Message[ExpectedFunctionBody, Expected a function body, but got '42'., null, {token: 42}], 42, 42)
-handleInvalidFunctionBody({)
-endClassMethod(null, void, (, null, })
-endMember()
-beginMetadataStar(42)
-endMetadataStar(0)
-beginMember()
-handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got '42'., null, {token: 42}], 42, 42)
-handleInvalidMember(42)
-endMember()
-beginMetadataStar(;)
-endMetadataStar(0)
-beginMember()
-handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got ';'., null, {token: ;}], ;, ;)
-handleInvalidMember(;)
-endMember()
 beginMetadataStar(int)
 endMetadataStar(0)
 beginMember()
-handleRecoverableError(MissingConstFinalVarOrType, int, int)
-handleNoType(;)
-handleIdentifier(int, fieldDeclaration)
-handleNoFieldInitializer(while)
-handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+handleIdentifier(int, typeReference)
+handleNoTypeArguments(while)
+handleType(int, null)
+handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'while'., null, {token: while}], while, while)
+handleIdentifier(while, fieldDeclaration)
+beginFieldInitializer(=)
+handleLiteralInt(42)
+endFieldInitializer(=, ;)
 endClassFields(null, null, null, null, 1, int, ;)
 endMember()
-beginMetadataStar(while)
-endMetadataStar(0)
-beginMember()
-handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got 'while'., null, {token: while}], while, while)
-handleInvalidMember(while)
-endMember()
-beginMetadataStar(=)
-endMetadataStar(0)
-beginMember()
-handleRecoverableError(MissingOperatorKeyword, =, =)
-beginMethod(null, null, null, null, null, operator)
-handleNoType(while)
-handleRecoverableError(Message[InvalidOperator, The string '=' isn't a user-definable operator., null, {token: =}], =, =)
-handleInvalidOperatorName(operator, =)
-handleNoTypeVariables(42)
-handleRecoverableError(MissingMethodParameters, =, =)
-beginFormalParameters((, MemberKind.NonStaticMethod)
-endFormalParameters(0, (, ), MemberKind.NonStaticMethod)
-handleNoInitializers()
-handleAsyncModifier(null, null)
-handleRecoverableError(Message[ExpectedFunctionBody, Expected a function body, but got '42'., null, {token: 42}], 42, 42)
-handleInvalidFunctionBody({)
-endClassMethod(null, operator, (, null, })
-endMember()
-beginMetadataStar(42)
-endMetadataStar(0)
-beginMember()
-handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got '42'., null, {token: 42}], 42, 42)
-handleInvalidMember(42)
-endMember()
-beginMetadataStar(;)
-endMetadataStar(0)
-beginMember()
-handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got ';'., null, {token: ;}], ;, ;)
-handleInvalidMember(;)
-endMember()
 beginMetadataStar(int)
 endMetadataStar(0)
 beginMember()
-handleRecoverableError(MissingConstFinalVarOrType, int, int)
-handleNoType(;)
-handleIdentifier(int, fieldDeclaration)
-handleNoFieldInitializer(with)
-handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+handleIdentifier(int, typeReference)
+handleNoTypeArguments(with)
+handleType(int, null)
+handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'with'., null, {token: with}], with, with)
+handleIdentifier(with, fieldDeclaration)
+beginFieldInitializer(=)
+handleLiteralInt(42)
+endFieldInitializer(=, ;)
 endClassFields(null, null, null, null, 1, int, ;)
 endMember()
-beginMetadataStar(with)
-endMetadataStar(0)
-beginMember()
-handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got 'with'., null, {token: with}], with, with)
-handleInvalidMember(with)
-endMember()
-beginMetadataStar(=)
-endMetadataStar(0)
-beginMember()
-handleRecoverableError(MissingOperatorKeyword, =, =)
-beginMethod(null, null, null, null, null, operator)
-handleNoType(with)
-handleRecoverableError(Message[InvalidOperator, The string '=' isn't a user-definable operator., null, {token: =}], =, =)
-handleInvalidOperatorName(operator, =)
-handleNoTypeVariables(42)
-handleRecoverableError(MissingMethodParameters, =, =)
-beginFormalParameters((, MemberKind.NonStaticMethod)
-endFormalParameters(0, (, ), MemberKind.NonStaticMethod)
-handleNoInitializers()
-handleAsyncModifier(null, null)
-handleRecoverableError(Message[ExpectedFunctionBody, Expected a function body, but got '42'., null, {token: 42}], 42, 42)
-handleInvalidFunctionBody({)
-endClassMethod(null, operator, (, null, })
-endMember()
-beginMetadataStar(42)
-endMetadataStar(0)
-beginMember()
-handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got '42'., null, {token: 42}], 42, 42)
-handleInvalidMember(42)
-endMember()
-beginMetadataStar(;)
-endMetadataStar(0)
-beginMember()
-handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got ';'., null, {token: ;}], ;, ;)
-handleInvalidMember(;)
-endMember()
-endClassOrMixinBody(DeclarationKind.Class, 157, {, })
+endClassOrMixinBody(DeclarationKind.Class, 33, {, })
 endClassDeclaration(class, })
 endTopLevelDeclaration()
 endCompilationUnit(1, )
diff --git a/pkg/front_end/parser_testcases/error_recovery/reserved_words_class_fields.dart.intertwined.expect b/pkg/front_end/parser_testcases/error_recovery/reserved_words_class_fields.dart.intertwined.expect
index 3cd1733..82af82e 100644
--- a/pkg/front_end/parser_testcases/error_recovery/reserved_words_class_fields.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/error_recovery/reserved_words_class_fields.dart.intertwined.expect
@@ -32,2432 +32,675 @@
                 listener: beginMetadataStar(int)
                 listener: endMetadataStar(0)
               listener: beginMember()
-              parseFields({, null, null, null, null, null, {, Instance of 'NoType', int, DeclarationKind.Class, WrapperClass)
-                reportRecoverableError(int, MissingConstFinalVarOrType)
-                  listener: handleRecoverableError(MissingConstFinalVarOrType, int, int)
-                listener: handleNoType({)
-                ensureIdentifier({, fieldDeclaration)
-                  listener: handleIdentifier(int, fieldDeclaration)
-                parseFieldInitializerOpt(int, int, null, null, DeclarationKind.Class, WrapperClass)
-                  listener: handleNoFieldInitializer(assert)
-                ensureSemicolon(int)
-                  reportRecoverableError(int, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
-                    listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
-                  rewriter()
+              isReservedKeyword(assert)
+              indicatesMethodOrField(=)
+              parseFields({, null, null, null, null, null, {, Instance of 'SimpleType', assert, DeclarationKind.Class, WrapperClass, true)
+                listener: handleIdentifier(int, typeReference)
+                listener: handleNoTypeArguments(assert)
+                listener: handleType(int, null)
+                ensureIdentifierPotentiallyRecovered(int, fieldDeclaration, true)
+                  reportRecoverableErrorWithToken(assert, Instance of 'Template<(Token) => Message>')
+                    listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'assert'., null, {token: assert}], assert, assert)
+                  listener: handleIdentifier(assert, fieldDeclaration)
+                parseFieldInitializerOpt(assert, assert, null, null, DeclarationKind.Class, WrapperClass)
+                  listener: beginFieldInitializer(=)
+                  parseExpression(=)
+                    parsePrecedenceExpression(=, 1, true)
+                      parseUnaryExpression(=, true)
+                        parsePrimary(=, expression)
+                          parseLiteralInt(=)
+                            listener: handleLiteralInt(42)
+                  listener: endFieldInitializer(=, ;)
                 listener: endClassFields(null, null, null, null, 1, int, ;)
               listener: endMember()
-            notEofOrValue(}, assert)
-            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
-              parseMetadataStar(;)
-                listener: beginMetadataStar(assert)
-                listener: endMetadataStar(0)
-              listener: beginMember()
-              recoverFromInvalidMember(;, ;, null, null, null, null, null, ;, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
-                reportRecoverableErrorWithToken(assert, Instance of 'Template<(Token) => Message>')
-                  listener: handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got 'assert'., null, {token: assert}], assert, assert)
-                listener: handleInvalidMember(assert)
-                listener: endMember()
-            notEofOrValue(}, =)
-            parseClassOrMixinOrExtensionMemberImpl(assert, DeclarationKind.Class, WrapperClass)
-              parseMetadataStar(assert)
-                listener: beginMetadataStar(=)
-                listener: endMetadataStar(0)
-              listener: beginMember()
-              recoverFromInvalidMember(assert, assert, null, null, null, null, null, assert, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
-                parseInvalidOperatorDeclaration(assert, null, null, null, null, null, assert, DeclarationKind.Class, WrapperClass)
-                  reportRecoverableError(=, MissingOperatorKeyword)
-                    listener: handleRecoverableError(MissingOperatorKeyword, =, =)
-                  rewriter()
-                  parseMethod(assert, null, null, null, null, null, assert, Instance of 'NoType', null, operator, DeclarationKind.Class, WrapperClass)
-                    listener: beginMethod(null, null, null, null, null, operator)
-                    listener: handleNoType(assert)
-                    parseOperatorName(assert)
-                      isUnaryMinus(=)
-                      reportRecoverableErrorWithToken(=, Instance of 'Template<(Token) => Message>')
-                        listener: handleRecoverableError(Message[InvalidOperator, The string '=' isn't a user-definable operator., null, {token: =}], =, =)
-                      listener: handleInvalidOperatorName(operator, =)
-                    parseMethodTypeVar(=)
-                      listener: handleNoTypeVariables(42)
-                    parseGetterOrFormalParameters(=, operator, false, MemberKind.NonStaticMethod)
-                      missingParameterMessage(MemberKind.NonStaticMethod)
-                      reportRecoverableError(=, MissingMethodParameters)
-                        listener: handleRecoverableError(MissingMethodParameters, =, =)
-                      rewriter()
-                      parseFormalParametersRest((, MemberKind.NonStaticMethod)
-                        listener: beginFormalParameters((, MemberKind.NonStaticMethod)
-                        listener: endFormalParameters(0, (, ), MemberKind.NonStaticMethod)
-                    parseInitializersOpt())
-                      listener: handleNoInitializers()
-                    parseAsyncModifierOpt())
-                      listener: handleAsyncModifier(null, null)
-                      inPlainSync()
-                    inPlainSync()
-                    parseFunctionBody(), false, true)
-                      ensureBlock(), Instance of 'Template<(Token) => Message>', null)
-                        reportRecoverableError(42, Message[ExpectedFunctionBody, Expected a function body, but got '42'., null, {token: 42}])
-                          listener: handleRecoverableError(Message[ExpectedFunctionBody, Expected a function body, but got '42'., null, {token: 42}], 42, 42)
-                        insertBlock())
-                          rewriter()
-                          rewriter()
-                      listener: handleInvalidFunctionBody({)
-                    listener: endClassMethod(null, operator, (, null, })
-                  listener: endMember()
-            notEofOrValue(}, 42)
-            parseClassOrMixinOrExtensionMemberImpl(}, DeclarationKind.Class, WrapperClass)
-              parseMetadataStar(})
-                listener: beginMetadataStar(42)
-                listener: endMetadataStar(0)
-              listener: beginMember()
-              recoverFromInvalidMember(}, }, null, null, null, null, null, }, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
-                reportRecoverableErrorWithToken(42, Instance of 'Template<(Token) => Message>')
-                  listener: handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got '42'., null, {token: 42}], 42, 42)
-                listener: handleInvalidMember(42)
-                listener: endMember()
-            notEofOrValue(}, ;)
-            parseClassOrMixinOrExtensionMemberImpl(42, DeclarationKind.Class, WrapperClass)
-              parseMetadataStar(42)
-                listener: beginMetadataStar(;)
-                listener: endMetadataStar(0)
-              listener: beginMember()
-              recoverFromInvalidMember(42, 42, null, null, null, null, null, 42, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
-                reportRecoverableErrorWithToken(;, Instance of 'Template<(Token) => Message>')
-                  listener: handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got ';'., null, {token: ;}], ;, ;)
-                listener: handleInvalidMember(;)
-                listener: endMember()
             notEofOrValue(}, int)
             parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
               parseMetadataStar(;)
                 listener: beginMetadataStar(int)
                 listener: endMetadataStar(0)
               listener: beginMember()
-              parseFields(;, null, null, null, null, null, ;, Instance of 'NoType', int, DeclarationKind.Class, WrapperClass)
-                reportRecoverableError(int, MissingConstFinalVarOrType)
-                  listener: handleRecoverableError(MissingConstFinalVarOrType, int, int)
-                listener: handleNoType(;)
-                ensureIdentifier(;, fieldDeclaration)
-                  listener: handleIdentifier(int, fieldDeclaration)
-                parseFieldInitializerOpt(int, int, null, null, DeclarationKind.Class, WrapperClass)
-                  listener: handleNoFieldInitializer(break)
-                ensureSemicolon(int)
-                  reportRecoverableError(int, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
-                    listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
-                  rewriter()
+              isReservedKeyword(break)
+              indicatesMethodOrField(=)
+              parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', break, DeclarationKind.Class, WrapperClass, true)
+                listener: handleIdentifier(int, typeReference)
+                listener: handleNoTypeArguments(break)
+                listener: handleType(int, null)
+                ensureIdentifierPotentiallyRecovered(int, fieldDeclaration, true)
+                  reportRecoverableErrorWithToken(break, Instance of 'Template<(Token) => Message>')
+                    listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'break'., null, {token: break}], break, break)
+                  listener: handleIdentifier(break, fieldDeclaration)
+                parseFieldInitializerOpt(break, break, null, null, DeclarationKind.Class, WrapperClass)
+                  listener: beginFieldInitializer(=)
+                  parseExpression(=)
+                    parsePrecedenceExpression(=, 1, true)
+                      parseUnaryExpression(=, true)
+                        parsePrimary(=, expression)
+                          parseLiteralInt(=)
+                            listener: handleLiteralInt(42)
+                  listener: endFieldInitializer(=, ;)
                 listener: endClassFields(null, null, null, null, 1, int, ;)
               listener: endMember()
-            notEofOrValue(}, break)
-            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
-              parseMetadataStar(;)
-                listener: beginMetadataStar(break)
-                listener: endMetadataStar(0)
-              listener: beginMember()
-              recoverFromInvalidMember(;, ;, null, null, null, null, null, ;, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
-                reportRecoverableErrorWithToken(break, Instance of 'Template<(Token) => Message>')
-                  listener: handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got 'break'., null, {token: break}], break, break)
-                listener: handleInvalidMember(break)
-                listener: endMember()
-            notEofOrValue(}, =)
-            parseClassOrMixinOrExtensionMemberImpl(break, DeclarationKind.Class, WrapperClass)
-              parseMetadataStar(break)
-                listener: beginMetadataStar(=)
-                listener: endMetadataStar(0)
-              listener: beginMember()
-              recoverFromInvalidMember(break, break, null, null, null, null, null, break, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
-                parseInvalidOperatorDeclaration(break, null, null, null, null, null, break, DeclarationKind.Class, WrapperClass)
-                  reportRecoverableError(=, MissingOperatorKeyword)
-                    listener: handleRecoverableError(MissingOperatorKeyword, =, =)
-                  rewriter()
-                  parseMethod(break, null, null, null, null, null, break, Instance of 'NoType', null, operator, DeclarationKind.Class, WrapperClass)
-                    listener: beginMethod(null, null, null, null, null, operator)
-                    listener: handleNoType(break)
-                    parseOperatorName(break)
-                      isUnaryMinus(=)
-                      reportRecoverableErrorWithToken(=, Instance of 'Template<(Token) => Message>')
-                        listener: handleRecoverableError(Message[InvalidOperator, The string '=' isn't a user-definable operator., null, {token: =}], =, =)
-                      listener: handleInvalidOperatorName(operator, =)
-                    parseMethodTypeVar(=)
-                      listener: handleNoTypeVariables(42)
-                    parseGetterOrFormalParameters(=, operator, false, MemberKind.NonStaticMethod)
-                      missingParameterMessage(MemberKind.NonStaticMethod)
-                      reportRecoverableError(=, MissingMethodParameters)
-                        listener: handleRecoverableError(MissingMethodParameters, =, =)
-                      rewriter()
-                      parseFormalParametersRest((, MemberKind.NonStaticMethod)
-                        listener: beginFormalParameters((, MemberKind.NonStaticMethod)
-                        listener: endFormalParameters(0, (, ), MemberKind.NonStaticMethod)
-                    parseInitializersOpt())
-                      listener: handleNoInitializers()
-                    parseAsyncModifierOpt())
-                      listener: handleAsyncModifier(null, null)
-                      inPlainSync()
-                    inPlainSync()
-                    parseFunctionBody(), false, true)
-                      ensureBlock(), Instance of 'Template<(Token) => Message>', null)
-                        reportRecoverableError(42, Message[ExpectedFunctionBody, Expected a function body, but got '42'., null, {token: 42}])
-                          listener: handleRecoverableError(Message[ExpectedFunctionBody, Expected a function body, but got '42'., null, {token: 42}], 42, 42)
-                        insertBlock())
-                          rewriter()
-                          rewriter()
-                      listener: handleInvalidFunctionBody({)
-                    listener: endClassMethod(null, operator, (, null, })
-                  listener: endMember()
-            notEofOrValue(}, 42)
-            parseClassOrMixinOrExtensionMemberImpl(}, DeclarationKind.Class, WrapperClass)
-              parseMetadataStar(})
-                listener: beginMetadataStar(42)
-                listener: endMetadataStar(0)
-              listener: beginMember()
-              recoverFromInvalidMember(}, }, null, null, null, null, null, }, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
-                reportRecoverableErrorWithToken(42, Instance of 'Template<(Token) => Message>')
-                  listener: handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got '42'., null, {token: 42}], 42, 42)
-                listener: handleInvalidMember(42)
-                listener: endMember()
-            notEofOrValue(}, ;)
-            parseClassOrMixinOrExtensionMemberImpl(42, DeclarationKind.Class, WrapperClass)
-              parseMetadataStar(42)
-                listener: beginMetadataStar(;)
-                listener: endMetadataStar(0)
-              listener: beginMember()
-              recoverFromInvalidMember(42, 42, null, null, null, null, null, 42, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
-                reportRecoverableErrorWithToken(;, Instance of 'Template<(Token) => Message>')
-                  listener: handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got ';'., null, {token: ;}], ;, ;)
-                listener: handleInvalidMember(;)
-                listener: endMember()
             notEofOrValue(}, int)
             parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
               parseMetadataStar(;)
                 listener: beginMetadataStar(int)
                 listener: endMetadataStar(0)
               listener: beginMember()
-              parseFields(;, null, null, null, null, null, ;, Instance of 'NoType', int, DeclarationKind.Class, WrapperClass)
-                reportRecoverableError(int, MissingConstFinalVarOrType)
-                  listener: handleRecoverableError(MissingConstFinalVarOrType, int, int)
-                listener: handleNoType(;)
-                ensureIdentifier(;, fieldDeclaration)
-                  listener: handleIdentifier(int, fieldDeclaration)
-                parseFieldInitializerOpt(int, int, null, null, DeclarationKind.Class, WrapperClass)
-                  listener: handleNoFieldInitializer(case)
-                ensureSemicolon(int)
-                  reportRecoverableError(int, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
-                    listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
-                  rewriter()
+              isReservedKeyword(case)
+              indicatesMethodOrField(=)
+              parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', case, DeclarationKind.Class, WrapperClass, true)
+                listener: handleIdentifier(int, typeReference)
+                listener: handleNoTypeArguments(case)
+                listener: handleType(int, null)
+                ensureIdentifierPotentiallyRecovered(int, fieldDeclaration, true)
+                  reportRecoverableErrorWithToken(case, Instance of 'Template<(Token) => Message>')
+                    listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'case'., null, {token: case}], case, case)
+                  listener: handleIdentifier(case, fieldDeclaration)
+                parseFieldInitializerOpt(case, case, null, null, DeclarationKind.Class, WrapperClass)
+                  listener: beginFieldInitializer(=)
+                  parseExpression(=)
+                    parsePrecedenceExpression(=, 1, true)
+                      parseUnaryExpression(=, true)
+                        parsePrimary(=, expression)
+                          parseLiteralInt(=)
+                            listener: handleLiteralInt(42)
+                  listener: endFieldInitializer(=, ;)
                 listener: endClassFields(null, null, null, null, 1, int, ;)
               listener: endMember()
-            notEofOrValue(}, case)
-            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
-              parseMetadataStar(;)
-                listener: beginMetadataStar(case)
-                listener: endMetadataStar(0)
-              listener: beginMember()
-              recoverFromInvalidMember(;, ;, null, null, null, null, null, ;, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
-                reportRecoverableErrorWithToken(case, Instance of 'Template<(Token) => Message>')
-                  listener: handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got 'case'., null, {token: case}], case, case)
-                listener: handleInvalidMember(case)
-                listener: endMember()
-            notEofOrValue(}, =)
-            parseClassOrMixinOrExtensionMemberImpl(case, DeclarationKind.Class, WrapperClass)
-              parseMetadataStar(case)
-                listener: beginMetadataStar(=)
-                listener: endMetadataStar(0)
-              listener: beginMember()
-              recoverFromInvalidMember(case, case, null, null, null, null, null, case, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
-                parseInvalidOperatorDeclaration(case, null, null, null, null, null, case, DeclarationKind.Class, WrapperClass)
-                  reportRecoverableError(=, MissingOperatorKeyword)
-                    listener: handleRecoverableError(MissingOperatorKeyword, =, =)
-                  rewriter()
-                  parseMethod(case, null, null, null, null, null, case, Instance of 'NoType', null, operator, DeclarationKind.Class, WrapperClass)
-                    listener: beginMethod(null, null, null, null, null, operator)
-                    listener: handleNoType(case)
-                    parseOperatorName(case)
-                      isUnaryMinus(=)
-                      reportRecoverableErrorWithToken(=, Instance of 'Template<(Token) => Message>')
-                        listener: handleRecoverableError(Message[InvalidOperator, The string '=' isn't a user-definable operator., null, {token: =}], =, =)
-                      listener: handleInvalidOperatorName(operator, =)
-                    parseMethodTypeVar(=)
-                      listener: handleNoTypeVariables(42)
-                    parseGetterOrFormalParameters(=, operator, false, MemberKind.NonStaticMethod)
-                      missingParameterMessage(MemberKind.NonStaticMethod)
-                      reportRecoverableError(=, MissingMethodParameters)
-                        listener: handleRecoverableError(MissingMethodParameters, =, =)
-                      rewriter()
-                      parseFormalParametersRest((, MemberKind.NonStaticMethod)
-                        listener: beginFormalParameters((, MemberKind.NonStaticMethod)
-                        listener: endFormalParameters(0, (, ), MemberKind.NonStaticMethod)
-                    parseInitializersOpt())
-                      listener: handleNoInitializers()
-                    parseAsyncModifierOpt())
-                      listener: handleAsyncModifier(null, null)
-                      inPlainSync()
-                    inPlainSync()
-                    parseFunctionBody(), false, true)
-                      ensureBlock(), Instance of 'Template<(Token) => Message>', null)
-                        reportRecoverableError(42, Message[ExpectedFunctionBody, Expected a function body, but got '42'., null, {token: 42}])
-                          listener: handleRecoverableError(Message[ExpectedFunctionBody, Expected a function body, but got '42'., null, {token: 42}], 42, 42)
-                        insertBlock())
-                          rewriter()
-                          rewriter()
-                      listener: handleInvalidFunctionBody({)
-                    listener: endClassMethod(null, operator, (, null, })
-                  listener: endMember()
-            notEofOrValue(}, 42)
-            parseClassOrMixinOrExtensionMemberImpl(}, DeclarationKind.Class, WrapperClass)
-              parseMetadataStar(})
-                listener: beginMetadataStar(42)
-                listener: endMetadataStar(0)
-              listener: beginMember()
-              recoverFromInvalidMember(}, }, null, null, null, null, null, }, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
-                reportRecoverableErrorWithToken(42, Instance of 'Template<(Token) => Message>')
-                  listener: handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got '42'., null, {token: 42}], 42, 42)
-                listener: handleInvalidMember(42)
-                listener: endMember()
-            notEofOrValue(}, ;)
-            parseClassOrMixinOrExtensionMemberImpl(42, DeclarationKind.Class, WrapperClass)
-              parseMetadataStar(42)
-                listener: beginMetadataStar(;)
-                listener: endMetadataStar(0)
-              listener: beginMember()
-              recoverFromInvalidMember(42, 42, null, null, null, null, null, 42, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
-                reportRecoverableErrorWithToken(;, Instance of 'Template<(Token) => Message>')
-                  listener: handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got ';'., null, {token: ;}], ;, ;)
-                listener: handleInvalidMember(;)
-                listener: endMember()
             notEofOrValue(}, int)
             parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
               parseMetadataStar(;)
                 listener: beginMetadataStar(int)
                 listener: endMetadataStar(0)
               listener: beginMember()
-              parseFields(;, null, null, null, null, null, ;, Instance of 'NoType', int, DeclarationKind.Class, WrapperClass)
-                reportRecoverableError(int, MissingConstFinalVarOrType)
-                  listener: handleRecoverableError(MissingConstFinalVarOrType, int, int)
-                listener: handleNoType(;)
-                ensureIdentifier(;, fieldDeclaration)
-                  listener: handleIdentifier(int, fieldDeclaration)
-                parseFieldInitializerOpt(int, int, null, null, DeclarationKind.Class, WrapperClass)
-                  listener: handleNoFieldInitializer(catch)
-                ensureSemicolon(int)
-                  reportRecoverableError(int, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
-                    listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
-                  rewriter()
+              isReservedKeyword(catch)
+              indicatesMethodOrField(=)
+              parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', catch, DeclarationKind.Class, WrapperClass, true)
+                listener: handleIdentifier(int, typeReference)
+                listener: handleNoTypeArguments(catch)
+                listener: handleType(int, null)
+                ensureIdentifierPotentiallyRecovered(int, fieldDeclaration, true)
+                  reportRecoverableErrorWithToken(catch, Instance of 'Template<(Token) => Message>')
+                    listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'catch'., null, {token: catch}], catch, catch)
+                  listener: handleIdentifier(catch, fieldDeclaration)
+                parseFieldInitializerOpt(catch, catch, null, null, DeclarationKind.Class, WrapperClass)
+                  listener: beginFieldInitializer(=)
+                  parseExpression(=)
+                    parsePrecedenceExpression(=, 1, true)
+                      parseUnaryExpression(=, true)
+                        parsePrimary(=, expression)
+                          parseLiteralInt(=)
+                            listener: handleLiteralInt(42)
+                  listener: endFieldInitializer(=, ;)
                 listener: endClassFields(null, null, null, null, 1, int, ;)
               listener: endMember()
-            notEofOrValue(}, catch)
-            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
-              parseMetadataStar(;)
-                listener: beginMetadataStar(catch)
-                listener: endMetadataStar(0)
-              listener: beginMember()
-              recoverFromInvalidMember(;, ;, null, null, null, null, null, ;, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
-                reportRecoverableErrorWithToken(catch, Instance of 'Template<(Token) => Message>')
-                  listener: handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got 'catch'., null, {token: catch}], catch, catch)
-                listener: handleInvalidMember(catch)
-                listener: endMember()
-            notEofOrValue(}, =)
-            parseClassOrMixinOrExtensionMemberImpl(catch, DeclarationKind.Class, WrapperClass)
-              parseMetadataStar(catch)
-                listener: beginMetadataStar(=)
-                listener: endMetadataStar(0)
-              listener: beginMember()
-              recoverFromInvalidMember(catch, catch, null, null, null, null, null, catch, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
-                parseInvalidOperatorDeclaration(catch, null, null, null, null, null, catch, DeclarationKind.Class, WrapperClass)
-                  reportRecoverableError(=, MissingOperatorKeyword)
-                    listener: handleRecoverableError(MissingOperatorKeyword, =, =)
-                  rewriter()
-                  parseMethod(catch, null, null, null, null, null, catch, Instance of 'NoType', null, operator, DeclarationKind.Class, WrapperClass)
-                    listener: beginMethod(null, null, null, null, null, operator)
-                    listener: handleNoType(catch)
-                    parseOperatorName(catch)
-                      isUnaryMinus(=)
-                      reportRecoverableErrorWithToken(=, Instance of 'Template<(Token) => Message>')
-                        listener: handleRecoverableError(Message[InvalidOperator, The string '=' isn't a user-definable operator., null, {token: =}], =, =)
-                      listener: handleInvalidOperatorName(operator, =)
-                    parseMethodTypeVar(=)
-                      listener: handleNoTypeVariables(42)
-                    parseGetterOrFormalParameters(=, operator, false, MemberKind.NonStaticMethod)
-                      missingParameterMessage(MemberKind.NonStaticMethod)
-                      reportRecoverableError(=, MissingMethodParameters)
-                        listener: handleRecoverableError(MissingMethodParameters, =, =)
-                      rewriter()
-                      parseFormalParametersRest((, MemberKind.NonStaticMethod)
-                        listener: beginFormalParameters((, MemberKind.NonStaticMethod)
-                        listener: endFormalParameters(0, (, ), MemberKind.NonStaticMethod)
-                    parseInitializersOpt())
-                      listener: handleNoInitializers()
-                    parseAsyncModifierOpt())
-                      listener: handleAsyncModifier(null, null)
-                      inPlainSync()
-                    inPlainSync()
-                    parseFunctionBody(), false, true)
-                      ensureBlock(), Instance of 'Template<(Token) => Message>', null)
-                        reportRecoverableError(42, Message[ExpectedFunctionBody, Expected a function body, but got '42'., null, {token: 42}])
-                          listener: handleRecoverableError(Message[ExpectedFunctionBody, Expected a function body, but got '42'., null, {token: 42}], 42, 42)
-                        insertBlock())
-                          rewriter()
-                          rewriter()
-                      listener: handleInvalidFunctionBody({)
-                    listener: endClassMethod(null, operator, (, null, })
-                  listener: endMember()
-            notEofOrValue(}, 42)
-            parseClassOrMixinOrExtensionMemberImpl(}, DeclarationKind.Class, WrapperClass)
-              parseMetadataStar(})
-                listener: beginMetadataStar(42)
-                listener: endMetadataStar(0)
-              listener: beginMember()
-              recoverFromInvalidMember(}, }, null, null, null, null, null, }, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
-                reportRecoverableErrorWithToken(42, Instance of 'Template<(Token) => Message>')
-                  listener: handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got '42'., null, {token: 42}], 42, 42)
-                listener: handleInvalidMember(42)
-                listener: endMember()
-            notEofOrValue(}, ;)
-            parseClassOrMixinOrExtensionMemberImpl(42, DeclarationKind.Class, WrapperClass)
-              parseMetadataStar(42)
-                listener: beginMetadataStar(;)
-                listener: endMetadataStar(0)
-              listener: beginMember()
-              recoverFromInvalidMember(42, 42, null, null, null, null, null, 42, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
-                reportRecoverableErrorWithToken(;, Instance of 'Template<(Token) => Message>')
-                  listener: handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got ';'., null, {token: ;}], ;, ;)
-                listener: handleInvalidMember(;)
-                listener: endMember()
             notEofOrValue(}, int)
             parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
               parseMetadataStar(;)
                 listener: beginMetadataStar(int)
                 listener: endMetadataStar(0)
               listener: beginMember()
-              parseFields(;, null, null, null, null, null, ;, Instance of 'NoType', int, DeclarationKind.Class, WrapperClass)
-                reportRecoverableError(int, MissingConstFinalVarOrType)
-                  listener: handleRecoverableError(MissingConstFinalVarOrType, int, int)
-                listener: handleNoType(;)
-                ensureIdentifier(;, fieldDeclaration)
-                  listener: handleIdentifier(int, fieldDeclaration)
-                parseFieldInitializerOpt(int, int, null, null, DeclarationKind.Class, WrapperClass)
-                  listener: handleNoFieldInitializer(class)
-                ensureSemicolon(int)
-                  reportRecoverableError(int, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
-                    listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
-                  rewriter()
+              isReservedKeyword(class)
+              indicatesMethodOrField(=)
+              parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', class, DeclarationKind.Class, WrapperClass, true)
+                listener: handleIdentifier(int, typeReference)
+                listener: handleNoTypeArguments(class)
+                listener: handleType(int, null)
+                ensureIdentifierPotentiallyRecovered(int, fieldDeclaration, true)
+                  reportRecoverableErrorWithToken(class, Instance of 'Template<(Token) => Message>')
+                    listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'class'., null, {token: class}], class, class)
+                  listener: handleIdentifier(class, fieldDeclaration)
+                parseFieldInitializerOpt(class, class, null, null, DeclarationKind.Class, WrapperClass)
+                  listener: beginFieldInitializer(=)
+                  parseExpression(=)
+                    parsePrecedenceExpression(=, 1, true)
+                      parseUnaryExpression(=, true)
+                        parsePrimary(=, expression)
+                          parseLiteralInt(=)
+                            listener: handleLiteralInt(42)
+                  listener: endFieldInitializer(=, ;)
                 listener: endClassFields(null, null, null, null, 1, int, ;)
               listener: endMember()
-            notEofOrValue(}, class)
-            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
-              parseMetadataStar(;)
-                listener: beginMetadataStar(class)
-                listener: endMetadataStar(0)
-              listener: beginMember()
-              recoverFromInvalidMember(;, ;, null, null, null, null, null, ;, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
-                reportAndSkipClassInClass(class)
-                  reportRecoverableError(class, ClassInClass)
-                    listener: handleRecoverableError(ClassInClass, class, class)
-                  listener: handleInvalidMember(class)
-            notEofOrValue(}, =)
-            parseClassOrMixinOrExtensionMemberImpl(class, DeclarationKind.Class, WrapperClass)
-              parseMetadataStar(class)
-                listener: beginMetadataStar(=)
-                listener: endMetadataStar(0)
-              listener: beginMember()
-              recoverFromInvalidMember(class, class, null, null, null, null, null, class, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
-                parseInvalidOperatorDeclaration(class, null, null, null, null, null, class, DeclarationKind.Class, WrapperClass)
-                  reportRecoverableError(=, MissingOperatorKeyword)
-                    listener: handleRecoverableError(MissingOperatorKeyword, =, =)
-                  rewriter()
-                  parseMethod(class, null, null, null, null, null, class, Instance of 'NoType', null, operator, DeclarationKind.Class, WrapperClass)
-                    listener: beginMethod(null, null, null, null, null, operator)
-                    listener: handleNoType(class)
-                    parseOperatorName(class)
-                      isUnaryMinus(=)
-                      reportRecoverableErrorWithToken(=, Instance of 'Template<(Token) => Message>')
-                        listener: handleRecoverableError(Message[InvalidOperator, The string '=' isn't a user-definable operator., null, {token: =}], =, =)
-                      listener: handleInvalidOperatorName(operator, =)
-                    parseMethodTypeVar(=)
-                      listener: handleNoTypeVariables(42)
-                    parseGetterOrFormalParameters(=, operator, false, MemberKind.NonStaticMethod)
-                      missingParameterMessage(MemberKind.NonStaticMethod)
-                      reportRecoverableError(=, MissingMethodParameters)
-                        listener: handleRecoverableError(MissingMethodParameters, =, =)
-                      rewriter()
-                      parseFormalParametersRest((, MemberKind.NonStaticMethod)
-                        listener: beginFormalParameters((, MemberKind.NonStaticMethod)
-                        listener: endFormalParameters(0, (, ), MemberKind.NonStaticMethod)
-                    parseInitializersOpt())
-                      listener: handleNoInitializers()
-                    parseAsyncModifierOpt())
-                      listener: handleAsyncModifier(null, null)
-                      inPlainSync()
-                    inPlainSync()
-                    parseFunctionBody(), false, true)
-                      ensureBlock(), Instance of 'Template<(Token) => Message>', null)
-                        reportRecoverableError(42, Message[ExpectedFunctionBody, Expected a function body, but got '42'., null, {token: 42}])
-                          listener: handleRecoverableError(Message[ExpectedFunctionBody, Expected a function body, but got '42'., null, {token: 42}], 42, 42)
-                        insertBlock())
-                          rewriter()
-                          rewriter()
-                      listener: handleInvalidFunctionBody({)
-                    listener: endClassMethod(null, operator, (, null, })
-                  listener: endMember()
-            notEofOrValue(}, 42)
-            parseClassOrMixinOrExtensionMemberImpl(}, DeclarationKind.Class, WrapperClass)
-              parseMetadataStar(})
-                listener: beginMetadataStar(42)
-                listener: endMetadataStar(0)
-              listener: beginMember()
-              recoverFromInvalidMember(}, }, null, null, null, null, null, }, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
-                reportRecoverableErrorWithToken(42, Instance of 'Template<(Token) => Message>')
-                  listener: handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got '42'., null, {token: 42}], 42, 42)
-                listener: handleInvalidMember(42)
-                listener: endMember()
-            notEofOrValue(}, ;)
-            parseClassOrMixinOrExtensionMemberImpl(42, DeclarationKind.Class, WrapperClass)
-              parseMetadataStar(42)
-                listener: beginMetadataStar(;)
-                listener: endMetadataStar(0)
-              listener: beginMember()
-              recoverFromInvalidMember(42, 42, null, null, null, null, null, 42, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
-                reportRecoverableErrorWithToken(;, Instance of 'Template<(Token) => Message>')
-                  listener: handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got ';'., null, {token: ;}], ;, ;)
-                listener: handleInvalidMember(;)
-                listener: endMember()
             notEofOrValue(}, int)
             parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
               parseMetadataStar(;)
                 listener: beginMetadataStar(int)
                 listener: endMetadataStar(0)
               listener: beginMember()
-              parseFields(;, null, null, null, null, null, ;, Instance of 'NoType', int, DeclarationKind.Class, WrapperClass)
-                reportRecoverableError(int, MissingConstFinalVarOrType)
-                  listener: handleRecoverableError(MissingConstFinalVarOrType, int, int)
-                listener: handleNoType(;)
-                ensureIdentifier(;, fieldDeclaration)
-                  listener: handleIdentifier(int, fieldDeclaration)
-                parseFieldInitializerOpt(int, int, null, null, DeclarationKind.Class, WrapperClass)
-                  listener: handleNoFieldInitializer(const)
-                ensureSemicolon(int)
-                  reportRecoverableError(int, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
-                    listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
-                  rewriter()
+              isReservedKeyword(const)
+              indicatesMethodOrField(=)
+              parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', const, DeclarationKind.Class, WrapperClass, true)
+                listener: handleIdentifier(int, typeReference)
+                listener: handleNoTypeArguments(const)
+                listener: handleType(int, null)
+                ensureIdentifierPotentiallyRecovered(int, fieldDeclaration, true)
+                  reportRecoverableErrorWithToken(const, Instance of 'Template<(Token) => Message>')
+                    listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'const'., null, {token: const}], const, const)
+                  listener: handleIdentifier(const, fieldDeclaration)
+                parseFieldInitializerOpt(const, const, null, null, DeclarationKind.Class, WrapperClass)
+                  listener: beginFieldInitializer(=)
+                  parseExpression(=)
+                    parsePrecedenceExpression(=, 1, true)
+                      parseUnaryExpression(=, true)
+                        parsePrimary(=, expression)
+                          parseLiteralInt(=)
+                            listener: handleLiteralInt(42)
+                  listener: endFieldInitializer(=, ;)
                 listener: endClassFields(null, null, null, null, 1, int, ;)
               listener: endMember()
-            notEofOrValue(}, const)
-            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
-              parseMetadataStar(;)
-                listener: beginMetadataStar(const)
-                listener: endMetadataStar(0)
-              listener: beginMember()
-              recoverFromInvalidMember(const, ;, null, null, null, null, const, const, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
-                parseInvalidOperatorDeclaration(;, null, null, null, null, const, const, DeclarationKind.Class, WrapperClass)
-                  reportRecoverableError(=, MissingOperatorKeyword)
-                    listener: handleRecoverableError(MissingOperatorKeyword, =, =)
-                  rewriter()
-                  parseMethod(;, null, null, null, null, const, const, Instance of 'NoType', null, operator, DeclarationKind.Class, WrapperClass)
-                    listener: beginMethod(null, null, null, const, null, operator)
-                    listener: handleNoType(const)
-                    parseOperatorName(const)
-                      isUnaryMinus(=)
-                      reportRecoverableErrorWithToken(=, Instance of 'Template<(Token) => Message>')
-                        listener: handleRecoverableError(Message[InvalidOperator, The string '=' isn't a user-definable operator., null, {token: =}], =, =)
-                      listener: handleInvalidOperatorName(operator, =)
-                    parseMethodTypeVar(=)
-                      listener: handleNoTypeVariables(42)
-                    parseGetterOrFormalParameters(=, operator, false, MemberKind.NonStaticMethod)
-                      missingParameterMessage(MemberKind.NonStaticMethod)
-                      reportRecoverableError(=, MissingMethodParameters)
-                        listener: handleRecoverableError(MissingMethodParameters, =, =)
-                      rewriter()
-                      parseFormalParametersRest((, MemberKind.NonStaticMethod)
-                        listener: beginFormalParameters((, MemberKind.NonStaticMethod)
-                        listener: endFormalParameters(0, (, ), MemberKind.NonStaticMethod)
-                    parseInitializersOpt())
-                      listener: handleNoInitializers()
-                    parseAsyncModifierOpt())
-                      listener: handleAsyncModifier(null, null)
-                      inPlainSync()
-                    inPlainSync()
-                    parseFunctionBody(), false, true)
-                      ensureBlock(), Instance of 'Template<(Token) => Message>', null)
-                        reportRecoverableError(42, Message[ExpectedFunctionBody, Expected a function body, but got '42'., null, {token: 42}])
-                          listener: handleRecoverableError(Message[ExpectedFunctionBody, Expected a function body, but got '42'., null, {token: 42}], 42, 42)
-                        insertBlock())
-                          rewriter()
-                          rewriter()
-                      listener: handleInvalidFunctionBody({)
-                    reportRecoverableError(const, ConstMethod)
-                      listener: handleRecoverableError(ConstMethod, const, const)
-                    listener: endClassMethod(null, const, (, null, })
-                  listener: endMember()
-            notEofOrValue(}, 42)
-            parseClassOrMixinOrExtensionMemberImpl(}, DeclarationKind.Class, WrapperClass)
-              parseMetadataStar(})
-                listener: beginMetadataStar(42)
-                listener: endMetadataStar(0)
-              listener: beginMember()
-              recoverFromInvalidMember(}, }, null, null, null, null, null, }, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
-                reportRecoverableErrorWithToken(42, Instance of 'Template<(Token) => Message>')
-                  listener: handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got '42'., null, {token: 42}], 42, 42)
-                listener: handleInvalidMember(42)
-                listener: endMember()
-            notEofOrValue(}, ;)
-            parseClassOrMixinOrExtensionMemberImpl(42, DeclarationKind.Class, WrapperClass)
-              parseMetadataStar(42)
-                listener: beginMetadataStar(;)
-                listener: endMetadataStar(0)
-              listener: beginMember()
-              recoverFromInvalidMember(42, 42, null, null, null, null, null, 42, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
-                reportRecoverableErrorWithToken(;, Instance of 'Template<(Token) => Message>')
-                  listener: handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got ';'., null, {token: ;}], ;, ;)
-                listener: handleInvalidMember(;)
-                listener: endMember()
             notEofOrValue(}, int)
             parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
               parseMetadataStar(;)
                 listener: beginMetadataStar(int)
                 listener: endMetadataStar(0)
               listener: beginMember()
-              parseFields(;, null, null, null, null, null, ;, Instance of 'NoType', int, DeclarationKind.Class, WrapperClass)
-                reportRecoverableError(int, MissingConstFinalVarOrType)
-                  listener: handleRecoverableError(MissingConstFinalVarOrType, int, int)
-                listener: handleNoType(;)
-                ensureIdentifier(;, fieldDeclaration)
-                  listener: handleIdentifier(int, fieldDeclaration)
-                parseFieldInitializerOpt(int, int, null, null, DeclarationKind.Class, WrapperClass)
-                  listener: handleNoFieldInitializer(continue)
-                ensureSemicolon(int)
-                  reportRecoverableError(int, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
-                    listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
-                  rewriter()
+              isReservedKeyword(continue)
+              indicatesMethodOrField(=)
+              parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', continue, DeclarationKind.Class, WrapperClass, true)
+                listener: handleIdentifier(int, typeReference)
+                listener: handleNoTypeArguments(continue)
+                listener: handleType(int, null)
+                ensureIdentifierPotentiallyRecovered(int, fieldDeclaration, true)
+                  reportRecoverableErrorWithToken(continue, Instance of 'Template<(Token) => Message>')
+                    listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'continue'., null, {token: continue}], continue, continue)
+                  listener: handleIdentifier(continue, fieldDeclaration)
+                parseFieldInitializerOpt(continue, continue, null, null, DeclarationKind.Class, WrapperClass)
+                  listener: beginFieldInitializer(=)
+                  parseExpression(=)
+                    parsePrecedenceExpression(=, 1, true)
+                      parseUnaryExpression(=, true)
+                        parsePrimary(=, expression)
+                          parseLiteralInt(=)
+                            listener: handleLiteralInt(42)
+                  listener: endFieldInitializer(=, ;)
                 listener: endClassFields(null, null, null, null, 1, int, ;)
               listener: endMember()
-            notEofOrValue(}, continue)
-            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
-              parseMetadataStar(;)
-                listener: beginMetadataStar(continue)
-                listener: endMetadataStar(0)
-              listener: beginMember()
-              recoverFromInvalidMember(;, ;, null, null, null, null, null, ;, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
-                reportRecoverableErrorWithToken(continue, Instance of 'Template<(Token) => Message>')
-                  listener: handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got 'continue'., null, {token: continue}], continue, continue)
-                listener: handleInvalidMember(continue)
-                listener: endMember()
-            notEofOrValue(}, =)
-            parseClassOrMixinOrExtensionMemberImpl(continue, DeclarationKind.Class, WrapperClass)
-              parseMetadataStar(continue)
-                listener: beginMetadataStar(=)
-                listener: endMetadataStar(0)
-              listener: beginMember()
-              recoverFromInvalidMember(continue, continue, null, null, null, null, null, continue, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
-                parseInvalidOperatorDeclaration(continue, null, null, null, null, null, continue, DeclarationKind.Class, WrapperClass)
-                  reportRecoverableError(=, MissingOperatorKeyword)
-                    listener: handleRecoverableError(MissingOperatorKeyword, =, =)
-                  rewriter()
-                  parseMethod(continue, null, null, null, null, null, continue, Instance of 'NoType', null, operator, DeclarationKind.Class, WrapperClass)
-                    listener: beginMethod(null, null, null, null, null, operator)
-                    listener: handleNoType(continue)
-                    parseOperatorName(continue)
-                      isUnaryMinus(=)
-                      reportRecoverableErrorWithToken(=, Instance of 'Template<(Token) => Message>')
-                        listener: handleRecoverableError(Message[InvalidOperator, The string '=' isn't a user-definable operator., null, {token: =}], =, =)
-                      listener: handleInvalidOperatorName(operator, =)
-                    parseMethodTypeVar(=)
-                      listener: handleNoTypeVariables(42)
-                    parseGetterOrFormalParameters(=, operator, false, MemberKind.NonStaticMethod)
-                      missingParameterMessage(MemberKind.NonStaticMethod)
-                      reportRecoverableError(=, MissingMethodParameters)
-                        listener: handleRecoverableError(MissingMethodParameters, =, =)
-                      rewriter()
-                      parseFormalParametersRest((, MemberKind.NonStaticMethod)
-                        listener: beginFormalParameters((, MemberKind.NonStaticMethod)
-                        listener: endFormalParameters(0, (, ), MemberKind.NonStaticMethod)
-                    parseInitializersOpt())
-                      listener: handleNoInitializers()
-                    parseAsyncModifierOpt())
-                      listener: handleAsyncModifier(null, null)
-                      inPlainSync()
-                    inPlainSync()
-                    parseFunctionBody(), false, true)
-                      ensureBlock(), Instance of 'Template<(Token) => Message>', null)
-                        reportRecoverableError(42, Message[ExpectedFunctionBody, Expected a function body, but got '42'., null, {token: 42}])
-                          listener: handleRecoverableError(Message[ExpectedFunctionBody, Expected a function body, but got '42'., null, {token: 42}], 42, 42)
-                        insertBlock())
-                          rewriter()
-                          rewriter()
-                      listener: handleInvalidFunctionBody({)
-                    listener: endClassMethod(null, operator, (, null, })
-                  listener: endMember()
-            notEofOrValue(}, 42)
-            parseClassOrMixinOrExtensionMemberImpl(}, DeclarationKind.Class, WrapperClass)
-              parseMetadataStar(})
-                listener: beginMetadataStar(42)
-                listener: endMetadataStar(0)
-              listener: beginMember()
-              recoverFromInvalidMember(}, }, null, null, null, null, null, }, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
-                reportRecoverableErrorWithToken(42, Instance of 'Template<(Token) => Message>')
-                  listener: handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got '42'., null, {token: 42}], 42, 42)
-                listener: handleInvalidMember(42)
-                listener: endMember()
-            notEofOrValue(}, ;)
-            parseClassOrMixinOrExtensionMemberImpl(42, DeclarationKind.Class, WrapperClass)
-              parseMetadataStar(42)
-                listener: beginMetadataStar(;)
-                listener: endMetadataStar(0)
-              listener: beginMember()
-              recoverFromInvalidMember(42, 42, null, null, null, null, null, 42, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
-                reportRecoverableErrorWithToken(;, Instance of 'Template<(Token) => Message>')
-                  listener: handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got ';'., null, {token: ;}], ;, ;)
-                listener: handleInvalidMember(;)
-                listener: endMember()
             notEofOrValue(}, int)
             parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
               parseMetadataStar(;)
                 listener: beginMetadataStar(int)
                 listener: endMetadataStar(0)
               listener: beginMember()
-              parseFields(;, null, null, null, null, null, ;, Instance of 'NoType', int, DeclarationKind.Class, WrapperClass)
-                reportRecoverableError(int, MissingConstFinalVarOrType)
-                  listener: handleRecoverableError(MissingConstFinalVarOrType, int, int)
-                listener: handleNoType(;)
-                ensureIdentifier(;, fieldDeclaration)
-                  listener: handleIdentifier(int, fieldDeclaration)
-                parseFieldInitializerOpt(int, int, null, null, DeclarationKind.Class, WrapperClass)
-                  listener: handleNoFieldInitializer(default)
-                ensureSemicolon(int)
-                  reportRecoverableError(int, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
-                    listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
-                  rewriter()
+              isReservedKeyword(default)
+              indicatesMethodOrField(=)
+              parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', default, DeclarationKind.Class, WrapperClass, true)
+                listener: handleIdentifier(int, typeReference)
+                listener: handleNoTypeArguments(default)
+                listener: handleType(int, null)
+                ensureIdentifierPotentiallyRecovered(int, fieldDeclaration, true)
+                  reportRecoverableErrorWithToken(default, Instance of 'Template<(Token) => Message>')
+                    listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'default'., null, {token: default}], default, default)
+                  listener: handleIdentifier(default, fieldDeclaration)
+                parseFieldInitializerOpt(default, default, null, null, DeclarationKind.Class, WrapperClass)
+                  listener: beginFieldInitializer(=)
+                  parseExpression(=)
+                    parsePrecedenceExpression(=, 1, true)
+                      parseUnaryExpression(=, true)
+                        parsePrimary(=, expression)
+                          parseLiteralInt(=)
+                            listener: handleLiteralInt(42)
+                  listener: endFieldInitializer(=, ;)
                 listener: endClassFields(null, null, null, null, 1, int, ;)
               listener: endMember()
-            notEofOrValue(}, default)
-            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
-              parseMetadataStar(;)
-                listener: beginMetadataStar(default)
-                listener: endMetadataStar(0)
-              listener: beginMember()
-              recoverFromInvalidMember(;, ;, null, null, null, null, null, ;, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
-                reportRecoverableErrorWithToken(default, Instance of 'Template<(Token) => Message>')
-                  listener: handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got 'default'., null, {token: default}], default, default)
-                listener: handleInvalidMember(default)
-                listener: endMember()
-            notEofOrValue(}, =)
-            parseClassOrMixinOrExtensionMemberImpl(default, DeclarationKind.Class, WrapperClass)
-              parseMetadataStar(default)
-                listener: beginMetadataStar(=)
-                listener: endMetadataStar(0)
-              listener: beginMember()
-              recoverFromInvalidMember(default, default, null, null, null, null, null, default, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
-                parseInvalidOperatorDeclaration(default, null, null, null, null, null, default, DeclarationKind.Class, WrapperClass)
-                  reportRecoverableError(=, MissingOperatorKeyword)
-                    listener: handleRecoverableError(MissingOperatorKeyword, =, =)
-                  rewriter()
-                  parseMethod(default, null, null, null, null, null, default, Instance of 'NoType', null, operator, DeclarationKind.Class, WrapperClass)
-                    listener: beginMethod(null, null, null, null, null, operator)
-                    listener: handleNoType(default)
-                    parseOperatorName(default)
-                      isUnaryMinus(=)
-                      reportRecoverableErrorWithToken(=, Instance of 'Template<(Token) => Message>')
-                        listener: handleRecoverableError(Message[InvalidOperator, The string '=' isn't a user-definable operator., null, {token: =}], =, =)
-                      listener: handleInvalidOperatorName(operator, =)
-                    parseMethodTypeVar(=)
-                      listener: handleNoTypeVariables(42)
-                    parseGetterOrFormalParameters(=, operator, false, MemberKind.NonStaticMethod)
-                      missingParameterMessage(MemberKind.NonStaticMethod)
-                      reportRecoverableError(=, MissingMethodParameters)
-                        listener: handleRecoverableError(MissingMethodParameters, =, =)
-                      rewriter()
-                      parseFormalParametersRest((, MemberKind.NonStaticMethod)
-                        listener: beginFormalParameters((, MemberKind.NonStaticMethod)
-                        listener: endFormalParameters(0, (, ), MemberKind.NonStaticMethod)
-                    parseInitializersOpt())
-                      listener: handleNoInitializers()
-                    parseAsyncModifierOpt())
-                      listener: handleAsyncModifier(null, null)
-                      inPlainSync()
-                    inPlainSync()
-                    parseFunctionBody(), false, true)
-                      ensureBlock(), Instance of 'Template<(Token) => Message>', null)
-                        reportRecoverableError(42, Message[ExpectedFunctionBody, Expected a function body, but got '42'., null, {token: 42}])
-                          listener: handleRecoverableError(Message[ExpectedFunctionBody, Expected a function body, but got '42'., null, {token: 42}], 42, 42)
-                        insertBlock())
-                          rewriter()
-                          rewriter()
-                      listener: handleInvalidFunctionBody({)
-                    listener: endClassMethod(null, operator, (, null, })
-                  listener: endMember()
-            notEofOrValue(}, 42)
-            parseClassOrMixinOrExtensionMemberImpl(}, DeclarationKind.Class, WrapperClass)
-              parseMetadataStar(})
-                listener: beginMetadataStar(42)
-                listener: endMetadataStar(0)
-              listener: beginMember()
-              recoverFromInvalidMember(}, }, null, null, null, null, null, }, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
-                reportRecoverableErrorWithToken(42, Instance of 'Template<(Token) => Message>')
-                  listener: handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got '42'., null, {token: 42}], 42, 42)
-                listener: handleInvalidMember(42)
-                listener: endMember()
-            notEofOrValue(}, ;)
-            parseClassOrMixinOrExtensionMemberImpl(42, DeclarationKind.Class, WrapperClass)
-              parseMetadataStar(42)
-                listener: beginMetadataStar(;)
-                listener: endMetadataStar(0)
-              listener: beginMember()
-              recoverFromInvalidMember(42, 42, null, null, null, null, null, 42, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
-                reportRecoverableErrorWithToken(;, Instance of 'Template<(Token) => Message>')
-                  listener: handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got ';'., null, {token: ;}], ;, ;)
-                listener: handleInvalidMember(;)
-                listener: endMember()
             notEofOrValue(}, int)
             parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
               parseMetadataStar(;)
                 listener: beginMetadataStar(int)
                 listener: endMetadataStar(0)
               listener: beginMember()
-              parseFields(;, null, null, null, null, null, ;, Instance of 'NoType', int, DeclarationKind.Class, WrapperClass)
-                reportRecoverableError(int, MissingConstFinalVarOrType)
-                  listener: handleRecoverableError(MissingConstFinalVarOrType, int, int)
-                listener: handleNoType(;)
-                ensureIdentifier(;, fieldDeclaration)
-                  listener: handleIdentifier(int, fieldDeclaration)
-                parseFieldInitializerOpt(int, int, null, null, DeclarationKind.Class, WrapperClass)
-                  listener: handleNoFieldInitializer(do)
-                ensureSemicolon(int)
-                  reportRecoverableError(int, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
-                    listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
-                  rewriter()
+              isReservedKeyword(do)
+              indicatesMethodOrField(=)
+              parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', do, DeclarationKind.Class, WrapperClass, true)
+                listener: handleIdentifier(int, typeReference)
+                listener: handleNoTypeArguments(do)
+                listener: handleType(int, null)
+                ensureIdentifierPotentiallyRecovered(int, fieldDeclaration, true)
+                  reportRecoverableErrorWithToken(do, Instance of 'Template<(Token) => Message>')
+                    listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'do'., null, {token: do}], do, do)
+                  listener: handleIdentifier(do, fieldDeclaration)
+                parseFieldInitializerOpt(do, do, null, null, DeclarationKind.Class, WrapperClass)
+                  listener: beginFieldInitializer(=)
+                  parseExpression(=)
+                    parsePrecedenceExpression(=, 1, true)
+                      parseUnaryExpression(=, true)
+                        parsePrimary(=, expression)
+                          parseLiteralInt(=)
+                            listener: handleLiteralInt(42)
+                  listener: endFieldInitializer(=, ;)
                 listener: endClassFields(null, null, null, null, 1, int, ;)
               listener: endMember()
-            notEofOrValue(}, do)
-            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
-              parseMetadataStar(;)
-                listener: beginMetadataStar(do)
-                listener: endMetadataStar(0)
-              listener: beginMember()
-              recoverFromInvalidMember(;, ;, null, null, null, null, null, ;, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
-                reportRecoverableErrorWithToken(do, Instance of 'Template<(Token) => Message>')
-                  listener: handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got 'do'., null, {token: do}], do, do)
-                listener: handleInvalidMember(do)
-                listener: endMember()
-            notEofOrValue(}, =)
-            parseClassOrMixinOrExtensionMemberImpl(do, DeclarationKind.Class, WrapperClass)
-              parseMetadataStar(do)
-                listener: beginMetadataStar(=)
-                listener: endMetadataStar(0)
-              listener: beginMember()
-              recoverFromInvalidMember(do, do, null, null, null, null, null, do, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
-                parseInvalidOperatorDeclaration(do, null, null, null, null, null, do, DeclarationKind.Class, WrapperClass)
-                  reportRecoverableError(=, MissingOperatorKeyword)
-                    listener: handleRecoverableError(MissingOperatorKeyword, =, =)
-                  rewriter()
-                  parseMethod(do, null, null, null, null, null, do, Instance of 'NoType', null, operator, DeclarationKind.Class, WrapperClass)
-                    listener: beginMethod(null, null, null, null, null, operator)
-                    listener: handleNoType(do)
-                    parseOperatorName(do)
-                      isUnaryMinus(=)
-                      reportRecoverableErrorWithToken(=, Instance of 'Template<(Token) => Message>')
-                        listener: handleRecoverableError(Message[InvalidOperator, The string '=' isn't a user-definable operator., null, {token: =}], =, =)
-                      listener: handleInvalidOperatorName(operator, =)
-                    parseMethodTypeVar(=)
-                      listener: handleNoTypeVariables(42)
-                    parseGetterOrFormalParameters(=, operator, false, MemberKind.NonStaticMethod)
-                      missingParameterMessage(MemberKind.NonStaticMethod)
-                      reportRecoverableError(=, MissingMethodParameters)
-                        listener: handleRecoverableError(MissingMethodParameters, =, =)
-                      rewriter()
-                      parseFormalParametersRest((, MemberKind.NonStaticMethod)
-                        listener: beginFormalParameters((, MemberKind.NonStaticMethod)
-                        listener: endFormalParameters(0, (, ), MemberKind.NonStaticMethod)
-                    parseInitializersOpt())
-                      listener: handleNoInitializers()
-                    parseAsyncModifierOpt())
-                      listener: handleAsyncModifier(null, null)
-                      inPlainSync()
-                    inPlainSync()
-                    parseFunctionBody(), false, true)
-                      ensureBlock(), Instance of 'Template<(Token) => Message>', null)
-                        reportRecoverableError(42, Message[ExpectedFunctionBody, Expected a function body, but got '42'., null, {token: 42}])
-                          listener: handleRecoverableError(Message[ExpectedFunctionBody, Expected a function body, but got '42'., null, {token: 42}], 42, 42)
-                        insertBlock())
-                          rewriter()
-                          rewriter()
-                      listener: handleInvalidFunctionBody({)
-                    listener: endClassMethod(null, operator, (, null, })
-                  listener: endMember()
-            notEofOrValue(}, 42)
-            parseClassOrMixinOrExtensionMemberImpl(}, DeclarationKind.Class, WrapperClass)
-              parseMetadataStar(})
-                listener: beginMetadataStar(42)
-                listener: endMetadataStar(0)
-              listener: beginMember()
-              recoverFromInvalidMember(}, }, null, null, null, null, null, }, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
-                reportRecoverableErrorWithToken(42, Instance of 'Template<(Token) => Message>')
-                  listener: handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got '42'., null, {token: 42}], 42, 42)
-                listener: handleInvalidMember(42)
-                listener: endMember()
-            notEofOrValue(}, ;)
-            parseClassOrMixinOrExtensionMemberImpl(42, DeclarationKind.Class, WrapperClass)
-              parseMetadataStar(42)
-                listener: beginMetadataStar(;)
-                listener: endMetadataStar(0)
-              listener: beginMember()
-              recoverFromInvalidMember(42, 42, null, null, null, null, null, 42, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
-                reportRecoverableErrorWithToken(;, Instance of 'Template<(Token) => Message>')
-                  listener: handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got ';'., null, {token: ;}], ;, ;)
-                listener: handleInvalidMember(;)
-                listener: endMember()
             notEofOrValue(}, int)
             parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
               parseMetadataStar(;)
                 listener: beginMetadataStar(int)
                 listener: endMetadataStar(0)
               listener: beginMember()
-              parseFields(;, null, null, null, null, null, ;, Instance of 'NoType', int, DeclarationKind.Class, WrapperClass)
-                reportRecoverableError(int, MissingConstFinalVarOrType)
-                  listener: handleRecoverableError(MissingConstFinalVarOrType, int, int)
-                listener: handleNoType(;)
-                ensureIdentifier(;, fieldDeclaration)
-                  listener: handleIdentifier(int, fieldDeclaration)
-                parseFieldInitializerOpt(int, int, null, null, DeclarationKind.Class, WrapperClass)
-                  listener: handleNoFieldInitializer(else)
-                ensureSemicolon(int)
-                  reportRecoverableError(int, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
-                    listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
-                  rewriter()
+              isReservedKeyword(else)
+              indicatesMethodOrField(=)
+              parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', else, DeclarationKind.Class, WrapperClass, true)
+                listener: handleIdentifier(int, typeReference)
+                listener: handleNoTypeArguments(else)
+                listener: handleType(int, null)
+                ensureIdentifierPotentiallyRecovered(int, fieldDeclaration, true)
+                  reportRecoverableErrorWithToken(else, Instance of 'Template<(Token) => Message>')
+                    listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'else'., null, {token: else}], else, else)
+                  listener: handleIdentifier(else, fieldDeclaration)
+                parseFieldInitializerOpt(else, else, null, null, DeclarationKind.Class, WrapperClass)
+                  listener: beginFieldInitializer(=)
+                  parseExpression(=)
+                    parsePrecedenceExpression(=, 1, true)
+                      parseUnaryExpression(=, true)
+                        parsePrimary(=, expression)
+                          parseLiteralInt(=)
+                            listener: handleLiteralInt(42)
+                  listener: endFieldInitializer(=, ;)
                 listener: endClassFields(null, null, null, null, 1, int, ;)
               listener: endMember()
-            notEofOrValue(}, else)
-            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
-              parseMetadataStar(;)
-                listener: beginMetadataStar(else)
-                listener: endMetadataStar(0)
-              listener: beginMember()
-              recoverFromInvalidMember(;, ;, null, null, null, null, null, ;, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
-                reportRecoverableErrorWithToken(else, Instance of 'Template<(Token) => Message>')
-                  listener: handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got 'else'., null, {token: else}], else, else)
-                listener: handleInvalidMember(else)
-                listener: endMember()
-            notEofOrValue(}, =)
-            parseClassOrMixinOrExtensionMemberImpl(else, DeclarationKind.Class, WrapperClass)
-              parseMetadataStar(else)
-                listener: beginMetadataStar(=)
-                listener: endMetadataStar(0)
-              listener: beginMember()
-              recoverFromInvalidMember(else, else, null, null, null, null, null, else, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
-                parseInvalidOperatorDeclaration(else, null, null, null, null, null, else, DeclarationKind.Class, WrapperClass)
-                  reportRecoverableError(=, MissingOperatorKeyword)
-                    listener: handleRecoverableError(MissingOperatorKeyword, =, =)
-                  rewriter()
-                  parseMethod(else, null, null, null, null, null, else, Instance of 'NoType', null, operator, DeclarationKind.Class, WrapperClass)
-                    listener: beginMethod(null, null, null, null, null, operator)
-                    listener: handleNoType(else)
-                    parseOperatorName(else)
-                      isUnaryMinus(=)
-                      reportRecoverableErrorWithToken(=, Instance of 'Template<(Token) => Message>')
-                        listener: handleRecoverableError(Message[InvalidOperator, The string '=' isn't a user-definable operator., null, {token: =}], =, =)
-                      listener: handleInvalidOperatorName(operator, =)
-                    parseMethodTypeVar(=)
-                      listener: handleNoTypeVariables(42)
-                    parseGetterOrFormalParameters(=, operator, false, MemberKind.NonStaticMethod)
-                      missingParameterMessage(MemberKind.NonStaticMethod)
-                      reportRecoverableError(=, MissingMethodParameters)
-                        listener: handleRecoverableError(MissingMethodParameters, =, =)
-                      rewriter()
-                      parseFormalParametersRest((, MemberKind.NonStaticMethod)
-                        listener: beginFormalParameters((, MemberKind.NonStaticMethod)
-                        listener: endFormalParameters(0, (, ), MemberKind.NonStaticMethod)
-                    parseInitializersOpt())
-                      listener: handleNoInitializers()
-                    parseAsyncModifierOpt())
-                      listener: handleAsyncModifier(null, null)
-                      inPlainSync()
-                    inPlainSync()
-                    parseFunctionBody(), false, true)
-                      ensureBlock(), Instance of 'Template<(Token) => Message>', null)
-                        reportRecoverableError(42, Message[ExpectedFunctionBody, Expected a function body, but got '42'., null, {token: 42}])
-                          listener: handleRecoverableError(Message[ExpectedFunctionBody, Expected a function body, but got '42'., null, {token: 42}], 42, 42)
-                        insertBlock())
-                          rewriter()
-                          rewriter()
-                      listener: handleInvalidFunctionBody({)
-                    listener: endClassMethod(null, operator, (, null, })
-                  listener: endMember()
-            notEofOrValue(}, 42)
-            parseClassOrMixinOrExtensionMemberImpl(}, DeclarationKind.Class, WrapperClass)
-              parseMetadataStar(})
-                listener: beginMetadataStar(42)
-                listener: endMetadataStar(0)
-              listener: beginMember()
-              recoverFromInvalidMember(}, }, null, null, null, null, null, }, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
-                reportRecoverableErrorWithToken(42, Instance of 'Template<(Token) => Message>')
-                  listener: handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got '42'., null, {token: 42}], 42, 42)
-                listener: handleInvalidMember(42)
-                listener: endMember()
-            notEofOrValue(}, ;)
-            parseClassOrMixinOrExtensionMemberImpl(42, DeclarationKind.Class, WrapperClass)
-              parseMetadataStar(42)
-                listener: beginMetadataStar(;)
-                listener: endMetadataStar(0)
-              listener: beginMember()
-              recoverFromInvalidMember(42, 42, null, null, null, null, null, 42, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
-                reportRecoverableErrorWithToken(;, Instance of 'Template<(Token) => Message>')
-                  listener: handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got ';'., null, {token: ;}], ;, ;)
-                listener: handleInvalidMember(;)
-                listener: endMember()
             notEofOrValue(}, int)
             parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
               parseMetadataStar(;)
                 listener: beginMetadataStar(int)
                 listener: endMetadataStar(0)
               listener: beginMember()
-              parseFields(;, null, null, null, null, null, ;, Instance of 'NoType', int, DeclarationKind.Class, WrapperClass)
-                reportRecoverableError(int, MissingConstFinalVarOrType)
-                  listener: handleRecoverableError(MissingConstFinalVarOrType, int, int)
-                listener: handleNoType(;)
-                ensureIdentifier(;, fieldDeclaration)
-                  listener: handleIdentifier(int, fieldDeclaration)
-                parseFieldInitializerOpt(int, int, null, null, DeclarationKind.Class, WrapperClass)
-                  listener: handleNoFieldInitializer(enum)
-                ensureSemicolon(int)
-                  reportRecoverableError(int, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
-                    listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
-                  rewriter()
+              isReservedKeyword(enum)
+              indicatesMethodOrField(=)
+              parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', enum, DeclarationKind.Class, WrapperClass, true)
+                listener: handleIdentifier(int, typeReference)
+                listener: handleNoTypeArguments(enum)
+                listener: handleType(int, null)
+                ensureIdentifierPotentiallyRecovered(int, fieldDeclaration, true)
+                  reportRecoverableErrorWithToken(enum, Instance of 'Template<(Token) => Message>')
+                    listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'enum'., null, {token: enum}], enum, enum)
+                  listener: handleIdentifier(enum, fieldDeclaration)
+                parseFieldInitializerOpt(enum, enum, null, null, DeclarationKind.Class, WrapperClass)
+                  listener: beginFieldInitializer(=)
+                  parseExpression(=)
+                    parsePrecedenceExpression(=, 1, true)
+                      parseUnaryExpression(=, true)
+                        parsePrimary(=, expression)
+                          parseLiteralInt(=)
+                            listener: handleLiteralInt(42)
+                  listener: endFieldInitializer(=, ;)
                 listener: endClassFields(null, null, null, null, 1, int, ;)
               listener: endMember()
-            notEofOrValue(}, enum)
-            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
-              parseMetadataStar(;)
-                listener: beginMetadataStar(enum)
-                listener: endMetadataStar(0)
-              listener: beginMember()
-              recoverFromInvalidMember(;, ;, null, null, null, null, null, ;, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
-                reportAndSkipEnumInClass(enum)
-                  reportRecoverableError(enum, EnumInClass)
-                    listener: handleRecoverableError(EnumInClass, enum, enum)
-                  listener: handleInvalidMember(enum)
-            notEofOrValue(}, =)
-            parseClassOrMixinOrExtensionMemberImpl(enum, DeclarationKind.Class, WrapperClass)
-              parseMetadataStar(enum)
-                listener: beginMetadataStar(=)
-                listener: endMetadataStar(0)
-              listener: beginMember()
-              recoverFromInvalidMember(enum, enum, null, null, null, null, null, enum, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
-                parseInvalidOperatorDeclaration(enum, null, null, null, null, null, enum, DeclarationKind.Class, WrapperClass)
-                  reportRecoverableError(=, MissingOperatorKeyword)
-                    listener: handleRecoverableError(MissingOperatorKeyword, =, =)
-                  rewriter()
-                  parseMethod(enum, null, null, null, null, null, enum, Instance of 'NoType', null, operator, DeclarationKind.Class, WrapperClass)
-                    listener: beginMethod(null, null, null, null, null, operator)
-                    listener: handleNoType(enum)
-                    parseOperatorName(enum)
-                      isUnaryMinus(=)
-                      reportRecoverableErrorWithToken(=, Instance of 'Template<(Token) => Message>')
-                        listener: handleRecoverableError(Message[InvalidOperator, The string '=' isn't a user-definable operator., null, {token: =}], =, =)
-                      listener: handleInvalidOperatorName(operator, =)
-                    parseMethodTypeVar(=)
-                      listener: handleNoTypeVariables(42)
-                    parseGetterOrFormalParameters(=, operator, false, MemberKind.NonStaticMethod)
-                      missingParameterMessage(MemberKind.NonStaticMethod)
-                      reportRecoverableError(=, MissingMethodParameters)
-                        listener: handleRecoverableError(MissingMethodParameters, =, =)
-                      rewriter()
-                      parseFormalParametersRest((, MemberKind.NonStaticMethod)
-                        listener: beginFormalParameters((, MemberKind.NonStaticMethod)
-                        listener: endFormalParameters(0, (, ), MemberKind.NonStaticMethod)
-                    parseInitializersOpt())
-                      listener: handleNoInitializers()
-                    parseAsyncModifierOpt())
-                      listener: handleAsyncModifier(null, null)
-                      inPlainSync()
-                    inPlainSync()
-                    parseFunctionBody(), false, true)
-                      ensureBlock(), Instance of 'Template<(Token) => Message>', null)
-                        reportRecoverableError(42, Message[ExpectedFunctionBody, Expected a function body, but got '42'., null, {token: 42}])
-                          listener: handleRecoverableError(Message[ExpectedFunctionBody, Expected a function body, but got '42'., null, {token: 42}], 42, 42)
-                        insertBlock())
-                          rewriter()
-                          rewriter()
-                      listener: handleInvalidFunctionBody({)
-                    listener: endClassMethod(null, operator, (, null, })
-                  listener: endMember()
-            notEofOrValue(}, 42)
-            parseClassOrMixinOrExtensionMemberImpl(}, DeclarationKind.Class, WrapperClass)
-              parseMetadataStar(})
-                listener: beginMetadataStar(42)
-                listener: endMetadataStar(0)
-              listener: beginMember()
-              recoverFromInvalidMember(}, }, null, null, null, null, null, }, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
-                reportRecoverableErrorWithToken(42, Instance of 'Template<(Token) => Message>')
-                  listener: handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got '42'., null, {token: 42}], 42, 42)
-                listener: handleInvalidMember(42)
-                listener: endMember()
-            notEofOrValue(}, ;)
-            parseClassOrMixinOrExtensionMemberImpl(42, DeclarationKind.Class, WrapperClass)
-              parseMetadataStar(42)
-                listener: beginMetadataStar(;)
-                listener: endMetadataStar(0)
-              listener: beginMember()
-              recoverFromInvalidMember(42, 42, null, null, null, null, null, 42, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
-                reportRecoverableErrorWithToken(;, Instance of 'Template<(Token) => Message>')
-                  listener: handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got ';'., null, {token: ;}], ;, ;)
-                listener: handleInvalidMember(;)
-                listener: endMember()
             notEofOrValue(}, int)
             parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
               parseMetadataStar(;)
                 listener: beginMetadataStar(int)
                 listener: endMetadataStar(0)
               listener: beginMember()
-              parseFields(;, null, null, null, null, null, ;, Instance of 'NoType', int, DeclarationKind.Class, WrapperClass)
-                reportRecoverableError(int, MissingConstFinalVarOrType)
-                  listener: handleRecoverableError(MissingConstFinalVarOrType, int, int)
-                listener: handleNoType(;)
-                ensureIdentifier(;, fieldDeclaration)
-                  listener: handleIdentifier(int, fieldDeclaration)
-                parseFieldInitializerOpt(int, int, null, null, DeclarationKind.Class, WrapperClass)
-                  listener: handleNoFieldInitializer(extends)
-                ensureSemicolon(int)
-                  reportRecoverableError(int, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
-                    listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
-                  rewriter()
+              isReservedKeyword(extends)
+              indicatesMethodOrField(=)
+              parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', extends, DeclarationKind.Class, WrapperClass, true)
+                listener: handleIdentifier(int, typeReference)
+                listener: handleNoTypeArguments(extends)
+                listener: handleType(int, null)
+                ensureIdentifierPotentiallyRecovered(int, fieldDeclaration, true)
+                  reportRecoverableErrorWithToken(extends, Instance of 'Template<(Token) => Message>')
+                    listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'extends'., null, {token: extends}], extends, extends)
+                  listener: handleIdentifier(extends, fieldDeclaration)
+                parseFieldInitializerOpt(extends, extends, null, null, DeclarationKind.Class, WrapperClass)
+                  listener: beginFieldInitializer(=)
+                  parseExpression(=)
+                    parsePrecedenceExpression(=, 1, true)
+                      parseUnaryExpression(=, true)
+                        parsePrimary(=, expression)
+                          parseLiteralInt(=)
+                            listener: handleLiteralInt(42)
+                  listener: endFieldInitializer(=, ;)
                 listener: endClassFields(null, null, null, null, 1, int, ;)
               listener: endMember()
-            notEofOrValue(}, extends)
-            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
-              parseMetadataStar(;)
-                listener: beginMetadataStar(extends)
-                listener: endMetadataStar(0)
-              listener: beginMember()
-              recoverFromInvalidMember(;, ;, null, null, null, null, null, ;, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
-                reportRecoverableErrorWithToken(extends, Instance of 'Template<(Token) => Message>')
-                  listener: handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got 'extends'., null, {token: extends}], extends, extends)
-                listener: handleInvalidMember(extends)
-                listener: endMember()
-            notEofOrValue(}, =)
-            parseClassOrMixinOrExtensionMemberImpl(extends, DeclarationKind.Class, WrapperClass)
-              parseMetadataStar(extends)
-                listener: beginMetadataStar(=)
-                listener: endMetadataStar(0)
-              listener: beginMember()
-              recoverFromInvalidMember(extends, extends, null, null, null, null, null, extends, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
-                parseInvalidOperatorDeclaration(extends, null, null, null, null, null, extends, DeclarationKind.Class, WrapperClass)
-                  reportRecoverableError(=, MissingOperatorKeyword)
-                    listener: handleRecoverableError(MissingOperatorKeyword, =, =)
-                  rewriter()
-                  parseMethod(extends, null, null, null, null, null, extends, Instance of 'NoType', null, operator, DeclarationKind.Class, WrapperClass)
-                    listener: beginMethod(null, null, null, null, null, operator)
-                    listener: handleNoType(extends)
-                    parseOperatorName(extends)
-                      isUnaryMinus(=)
-                      reportRecoverableErrorWithToken(=, Instance of 'Template<(Token) => Message>')
-                        listener: handleRecoverableError(Message[InvalidOperator, The string '=' isn't a user-definable operator., null, {token: =}], =, =)
-                      listener: handleInvalidOperatorName(operator, =)
-                    parseMethodTypeVar(=)
-                      listener: handleNoTypeVariables(42)
-                    parseGetterOrFormalParameters(=, operator, false, MemberKind.NonStaticMethod)
-                      missingParameterMessage(MemberKind.NonStaticMethod)
-                      reportRecoverableError(=, MissingMethodParameters)
-                        listener: handleRecoverableError(MissingMethodParameters, =, =)
-                      rewriter()
-                      parseFormalParametersRest((, MemberKind.NonStaticMethod)
-                        listener: beginFormalParameters((, MemberKind.NonStaticMethod)
-                        listener: endFormalParameters(0, (, ), MemberKind.NonStaticMethod)
-                    parseInitializersOpt())
-                      listener: handleNoInitializers()
-                    parseAsyncModifierOpt())
-                      listener: handleAsyncModifier(null, null)
-                      inPlainSync()
-                    inPlainSync()
-                    parseFunctionBody(), false, true)
-                      ensureBlock(), Instance of 'Template<(Token) => Message>', null)
-                        reportRecoverableError(42, Message[ExpectedFunctionBody, Expected a function body, but got '42'., null, {token: 42}])
-                          listener: handleRecoverableError(Message[ExpectedFunctionBody, Expected a function body, but got '42'., null, {token: 42}], 42, 42)
-                        insertBlock())
-                          rewriter()
-                          rewriter()
-                      listener: handleInvalidFunctionBody({)
-                    listener: endClassMethod(null, operator, (, null, })
-                  listener: endMember()
-            notEofOrValue(}, 42)
-            parseClassOrMixinOrExtensionMemberImpl(}, DeclarationKind.Class, WrapperClass)
-              parseMetadataStar(})
-                listener: beginMetadataStar(42)
-                listener: endMetadataStar(0)
-              listener: beginMember()
-              recoverFromInvalidMember(}, }, null, null, null, null, null, }, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
-                reportRecoverableErrorWithToken(42, Instance of 'Template<(Token) => Message>')
-                  listener: handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got '42'., null, {token: 42}], 42, 42)
-                listener: handleInvalidMember(42)
-                listener: endMember()
-            notEofOrValue(}, ;)
-            parseClassOrMixinOrExtensionMemberImpl(42, DeclarationKind.Class, WrapperClass)
-              parseMetadataStar(42)
-                listener: beginMetadataStar(;)
-                listener: endMetadataStar(0)
-              listener: beginMember()
-              recoverFromInvalidMember(42, 42, null, null, null, null, null, 42, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
-                reportRecoverableErrorWithToken(;, Instance of 'Template<(Token) => Message>')
-                  listener: handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got ';'., null, {token: ;}], ;, ;)
-                listener: handleInvalidMember(;)
-                listener: endMember()
             notEofOrValue(}, int)
             parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
               parseMetadataStar(;)
                 listener: beginMetadataStar(int)
                 listener: endMetadataStar(0)
               listener: beginMember()
-              parseFields(;, null, null, null, null, null, ;, Instance of 'NoType', int, DeclarationKind.Class, WrapperClass)
-                reportRecoverableError(int, MissingConstFinalVarOrType)
-                  listener: handleRecoverableError(MissingConstFinalVarOrType, int, int)
-                listener: handleNoType(;)
-                ensureIdentifier(;, fieldDeclaration)
-                  listener: handleIdentifier(int, fieldDeclaration)
-                parseFieldInitializerOpt(int, int, null, null, DeclarationKind.Class, WrapperClass)
-                  listener: handleNoFieldInitializer(false)
-                ensureSemicolon(int)
-                  reportRecoverableError(int, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
-                    listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
-                  rewriter()
+              isReservedKeyword(false)
+              indicatesMethodOrField(=)
+              parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', false, DeclarationKind.Class, WrapperClass, true)
+                listener: handleIdentifier(int, typeReference)
+                listener: handleNoTypeArguments(false)
+                listener: handleType(int, null)
+                ensureIdentifierPotentiallyRecovered(int, fieldDeclaration, true)
+                  reportRecoverableErrorWithToken(false, Instance of 'Template<(Token) => Message>')
+                    listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'false'., null, {token: false}], false, false)
+                  listener: handleIdentifier(false, fieldDeclaration)
+                parseFieldInitializerOpt(false, false, null, null, DeclarationKind.Class, WrapperClass)
+                  listener: beginFieldInitializer(=)
+                  parseExpression(=)
+                    parsePrecedenceExpression(=, 1, true)
+                      parseUnaryExpression(=, true)
+                        parsePrimary(=, expression)
+                          parseLiteralInt(=)
+                            listener: handleLiteralInt(42)
+                  listener: endFieldInitializer(=, ;)
                 listener: endClassFields(null, null, null, null, 1, int, ;)
               listener: endMember()
-            notEofOrValue(}, false)
-            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
-              parseMetadataStar(;)
-                listener: beginMetadataStar(false)
-                listener: endMetadataStar(0)
-              listener: beginMember()
-              recoverFromInvalidMember(;, ;, null, null, null, null, null, ;, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
-                reportRecoverableErrorWithToken(false, Instance of 'Template<(Token) => Message>')
-                  listener: handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got 'false'., null, {token: false}], false, false)
-                listener: handleInvalidMember(false)
-                listener: endMember()
-            notEofOrValue(}, =)
-            parseClassOrMixinOrExtensionMemberImpl(false, DeclarationKind.Class, WrapperClass)
-              parseMetadataStar(false)
-                listener: beginMetadataStar(=)
-                listener: endMetadataStar(0)
-              listener: beginMember()
-              recoverFromInvalidMember(false, false, null, null, null, null, null, false, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
-                parseInvalidOperatorDeclaration(false, null, null, null, null, null, false, DeclarationKind.Class, WrapperClass)
-                  reportRecoverableError(=, MissingOperatorKeyword)
-                    listener: handleRecoverableError(MissingOperatorKeyword, =, =)
-                  rewriter()
-                  parseMethod(false, null, null, null, null, null, false, Instance of 'NoType', null, operator, DeclarationKind.Class, WrapperClass)
-                    listener: beginMethod(null, null, null, null, null, operator)
-                    listener: handleNoType(false)
-                    parseOperatorName(false)
-                      isUnaryMinus(=)
-                      reportRecoverableErrorWithToken(=, Instance of 'Template<(Token) => Message>')
-                        listener: handleRecoverableError(Message[InvalidOperator, The string '=' isn't a user-definable operator., null, {token: =}], =, =)
-                      listener: handleInvalidOperatorName(operator, =)
-                    parseMethodTypeVar(=)
-                      listener: handleNoTypeVariables(42)
-                    parseGetterOrFormalParameters(=, operator, false, MemberKind.NonStaticMethod)
-                      missingParameterMessage(MemberKind.NonStaticMethod)
-                      reportRecoverableError(=, MissingMethodParameters)
-                        listener: handleRecoverableError(MissingMethodParameters, =, =)
-                      rewriter()
-                      parseFormalParametersRest((, MemberKind.NonStaticMethod)
-                        listener: beginFormalParameters((, MemberKind.NonStaticMethod)
-                        listener: endFormalParameters(0, (, ), MemberKind.NonStaticMethod)
-                    parseInitializersOpt())
-                      listener: handleNoInitializers()
-                    parseAsyncModifierOpt())
-                      listener: handleAsyncModifier(null, null)
-                      inPlainSync()
-                    inPlainSync()
-                    parseFunctionBody(), false, true)
-                      ensureBlock(), Instance of 'Template<(Token) => Message>', null)
-                        reportRecoverableError(42, Message[ExpectedFunctionBody, Expected a function body, but got '42'., null, {token: 42}])
-                          listener: handleRecoverableError(Message[ExpectedFunctionBody, Expected a function body, but got '42'., null, {token: 42}], 42, 42)
-                        insertBlock())
-                          rewriter()
-                          rewriter()
-                      listener: handleInvalidFunctionBody({)
-                    listener: endClassMethod(null, operator, (, null, })
-                  listener: endMember()
-            notEofOrValue(}, 42)
-            parseClassOrMixinOrExtensionMemberImpl(}, DeclarationKind.Class, WrapperClass)
-              parseMetadataStar(})
-                listener: beginMetadataStar(42)
-                listener: endMetadataStar(0)
-              listener: beginMember()
-              recoverFromInvalidMember(}, }, null, null, null, null, null, }, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
-                reportRecoverableErrorWithToken(42, Instance of 'Template<(Token) => Message>')
-                  listener: handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got '42'., null, {token: 42}], 42, 42)
-                listener: handleInvalidMember(42)
-                listener: endMember()
-            notEofOrValue(}, ;)
-            parseClassOrMixinOrExtensionMemberImpl(42, DeclarationKind.Class, WrapperClass)
-              parseMetadataStar(42)
-                listener: beginMetadataStar(;)
-                listener: endMetadataStar(0)
-              listener: beginMember()
-              recoverFromInvalidMember(42, 42, null, null, null, null, null, 42, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
-                reportRecoverableErrorWithToken(;, Instance of 'Template<(Token) => Message>')
-                  listener: handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got ';'., null, {token: ;}], ;, ;)
-                listener: handleInvalidMember(;)
-                listener: endMember()
             notEofOrValue(}, int)
             parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
               parseMetadataStar(;)
                 listener: beginMetadataStar(int)
                 listener: endMetadataStar(0)
               listener: beginMember()
-              parseFields(;, null, null, null, null, null, ;, Instance of 'NoType', int, DeclarationKind.Class, WrapperClass)
-                reportRecoverableError(int, MissingConstFinalVarOrType)
-                  listener: handleRecoverableError(MissingConstFinalVarOrType, int, int)
-                listener: handleNoType(;)
-                ensureIdentifier(;, fieldDeclaration)
-                  listener: handleIdentifier(int, fieldDeclaration)
-                parseFieldInitializerOpt(int, int, null, null, DeclarationKind.Class, WrapperClass)
-                  listener: handleNoFieldInitializer(final)
-                ensureSemicolon(int)
-                  reportRecoverableError(int, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
-                    listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
-                  rewriter()
+              isReservedKeyword(final)
+              indicatesMethodOrField(=)
+              parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', final, DeclarationKind.Class, WrapperClass, true)
+                listener: handleIdentifier(int, typeReference)
+                listener: handleNoTypeArguments(final)
+                listener: handleType(int, null)
+                ensureIdentifierPotentiallyRecovered(int, fieldDeclaration, true)
+                  reportRecoverableErrorWithToken(final, Instance of 'Template<(Token) => Message>')
+                    listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'final'., null, {token: final}], final, final)
+                  listener: handleIdentifier(final, fieldDeclaration)
+                parseFieldInitializerOpt(final, final, null, null, DeclarationKind.Class, WrapperClass)
+                  listener: beginFieldInitializer(=)
+                  parseExpression(=)
+                    parsePrecedenceExpression(=, 1, true)
+                      parseUnaryExpression(=, true)
+                        parsePrimary(=, expression)
+                          parseLiteralInt(=)
+                            listener: handleLiteralInt(42)
+                  listener: endFieldInitializer(=, ;)
                 listener: endClassFields(null, null, null, null, 1, int, ;)
               listener: endMember()
-            notEofOrValue(}, final)
-            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
-              parseMetadataStar(;)
-                listener: beginMetadataStar(final)
-                listener: endMetadataStar(0)
-              listener: beginMember()
-              recoverFromInvalidMember(final, ;, null, null, null, null, final, final, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
-                parseInvalidOperatorDeclaration(;, null, null, null, null, final, final, DeclarationKind.Class, WrapperClass)
-                  reportRecoverableError(=, MissingOperatorKeyword)
-                    listener: handleRecoverableError(MissingOperatorKeyword, =, =)
-                  rewriter()
-                  parseMethod(;, null, null, null, null, final, final, Instance of 'NoType', null, operator, DeclarationKind.Class, WrapperClass)
-                    reportRecoverableErrorWithToken(final, Instance of 'Template<(Token) => Message>')
-                      listener: handleRecoverableError(Message[ExtraneousModifier, Can't have modifier 'final' here., Try removing 'final'., {token: final}], final, final)
-                    listener: beginMethod(null, null, null, null, null, operator)
-                    listener: handleNoType(final)
-                    parseOperatorName(final)
-                      isUnaryMinus(=)
-                      reportRecoverableErrorWithToken(=, Instance of 'Template<(Token) => Message>')
-                        listener: handleRecoverableError(Message[InvalidOperator, The string '=' isn't a user-definable operator., null, {token: =}], =, =)
-                      listener: handleInvalidOperatorName(operator, =)
-                    parseMethodTypeVar(=)
-                      listener: handleNoTypeVariables(42)
-                    parseGetterOrFormalParameters(=, operator, false, MemberKind.NonStaticMethod)
-                      missingParameterMessage(MemberKind.NonStaticMethod)
-                      reportRecoverableError(=, MissingMethodParameters)
-                        listener: handleRecoverableError(MissingMethodParameters, =, =)
-                      rewriter()
-                      parseFormalParametersRest((, MemberKind.NonStaticMethod)
-                        listener: beginFormalParameters((, MemberKind.NonStaticMethod)
-                        listener: endFormalParameters(0, (, ), MemberKind.NonStaticMethod)
-                    parseInitializersOpt())
-                      listener: handleNoInitializers()
-                    parseAsyncModifierOpt())
-                      listener: handleAsyncModifier(null, null)
-                      inPlainSync()
-                    inPlainSync()
-                    parseFunctionBody(), false, true)
-                      ensureBlock(), Instance of 'Template<(Token) => Message>', null)
-                        reportRecoverableError(42, Message[ExpectedFunctionBody, Expected a function body, but got '42'., null, {token: 42}])
-                          listener: handleRecoverableError(Message[ExpectedFunctionBody, Expected a function body, but got '42'., null, {token: 42}], 42, 42)
-                        insertBlock())
-                          rewriter()
-                          rewriter()
-                      listener: handleInvalidFunctionBody({)
-                    listener: endClassMethod(null, final, (, null, })
-                  listener: endMember()
-            notEofOrValue(}, 42)
-            parseClassOrMixinOrExtensionMemberImpl(}, DeclarationKind.Class, WrapperClass)
-              parseMetadataStar(})
-                listener: beginMetadataStar(42)
-                listener: endMetadataStar(0)
-              listener: beginMember()
-              recoverFromInvalidMember(}, }, null, null, null, null, null, }, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
-                reportRecoverableErrorWithToken(42, Instance of 'Template<(Token) => Message>')
-                  listener: handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got '42'., null, {token: 42}], 42, 42)
-                listener: handleInvalidMember(42)
-                listener: endMember()
-            notEofOrValue(}, ;)
-            parseClassOrMixinOrExtensionMemberImpl(42, DeclarationKind.Class, WrapperClass)
-              parseMetadataStar(42)
-                listener: beginMetadataStar(;)
-                listener: endMetadataStar(0)
-              listener: beginMember()
-              recoverFromInvalidMember(42, 42, null, null, null, null, null, 42, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
-                reportRecoverableErrorWithToken(;, Instance of 'Template<(Token) => Message>')
-                  listener: handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got ';'., null, {token: ;}], ;, ;)
-                listener: handleInvalidMember(;)
-                listener: endMember()
             notEofOrValue(}, int)
             parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
               parseMetadataStar(;)
                 listener: beginMetadataStar(int)
                 listener: endMetadataStar(0)
               listener: beginMember()
-              parseFields(;, null, null, null, null, null, ;, Instance of 'NoType', int, DeclarationKind.Class, WrapperClass)
-                reportRecoverableError(int, MissingConstFinalVarOrType)
-                  listener: handleRecoverableError(MissingConstFinalVarOrType, int, int)
-                listener: handleNoType(;)
-                ensureIdentifier(;, fieldDeclaration)
-                  listener: handleIdentifier(int, fieldDeclaration)
-                parseFieldInitializerOpt(int, int, null, null, DeclarationKind.Class, WrapperClass)
-                  listener: handleNoFieldInitializer(finally)
-                ensureSemicolon(int)
-                  reportRecoverableError(int, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
-                    listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
-                  rewriter()
+              isReservedKeyword(finally)
+              indicatesMethodOrField(=)
+              parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', finally, DeclarationKind.Class, WrapperClass, true)
+                listener: handleIdentifier(int, typeReference)
+                listener: handleNoTypeArguments(finally)
+                listener: handleType(int, null)
+                ensureIdentifierPotentiallyRecovered(int, fieldDeclaration, true)
+                  reportRecoverableErrorWithToken(finally, Instance of 'Template<(Token) => Message>')
+                    listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'finally'., null, {token: finally}], finally, finally)
+                  listener: handleIdentifier(finally, fieldDeclaration)
+                parseFieldInitializerOpt(finally, finally, null, null, DeclarationKind.Class, WrapperClass)
+                  listener: beginFieldInitializer(=)
+                  parseExpression(=)
+                    parsePrecedenceExpression(=, 1, true)
+                      parseUnaryExpression(=, true)
+                        parsePrimary(=, expression)
+                          parseLiteralInt(=)
+                            listener: handleLiteralInt(42)
+                  listener: endFieldInitializer(=, ;)
                 listener: endClassFields(null, null, null, null, 1, int, ;)
               listener: endMember()
-            notEofOrValue(}, finally)
-            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
-              parseMetadataStar(;)
-                listener: beginMetadataStar(finally)
-                listener: endMetadataStar(0)
-              listener: beginMember()
-              recoverFromInvalidMember(;, ;, null, null, null, null, null, ;, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
-                reportRecoverableErrorWithToken(finally, Instance of 'Template<(Token) => Message>')
-                  listener: handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got 'finally'., null, {token: finally}], finally, finally)
-                listener: handleInvalidMember(finally)
-                listener: endMember()
-            notEofOrValue(}, =)
-            parseClassOrMixinOrExtensionMemberImpl(finally, DeclarationKind.Class, WrapperClass)
-              parseMetadataStar(finally)
-                listener: beginMetadataStar(=)
-                listener: endMetadataStar(0)
-              listener: beginMember()
-              recoverFromInvalidMember(finally, finally, null, null, null, null, null, finally, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
-                parseInvalidOperatorDeclaration(finally, null, null, null, null, null, finally, DeclarationKind.Class, WrapperClass)
-                  reportRecoverableError(=, MissingOperatorKeyword)
-                    listener: handleRecoverableError(MissingOperatorKeyword, =, =)
-                  rewriter()
-                  parseMethod(finally, null, null, null, null, null, finally, Instance of 'NoType', null, operator, DeclarationKind.Class, WrapperClass)
-                    listener: beginMethod(null, null, null, null, null, operator)
-                    listener: handleNoType(finally)
-                    parseOperatorName(finally)
-                      isUnaryMinus(=)
-                      reportRecoverableErrorWithToken(=, Instance of 'Template<(Token) => Message>')
-                        listener: handleRecoverableError(Message[InvalidOperator, The string '=' isn't a user-definable operator., null, {token: =}], =, =)
-                      listener: handleInvalidOperatorName(operator, =)
-                    parseMethodTypeVar(=)
-                      listener: handleNoTypeVariables(42)
-                    parseGetterOrFormalParameters(=, operator, false, MemberKind.NonStaticMethod)
-                      missingParameterMessage(MemberKind.NonStaticMethod)
-                      reportRecoverableError(=, MissingMethodParameters)
-                        listener: handleRecoverableError(MissingMethodParameters, =, =)
-                      rewriter()
-                      parseFormalParametersRest((, MemberKind.NonStaticMethod)
-                        listener: beginFormalParameters((, MemberKind.NonStaticMethod)
-                        listener: endFormalParameters(0, (, ), MemberKind.NonStaticMethod)
-                    parseInitializersOpt())
-                      listener: handleNoInitializers()
-                    parseAsyncModifierOpt())
-                      listener: handleAsyncModifier(null, null)
-                      inPlainSync()
-                    inPlainSync()
-                    parseFunctionBody(), false, true)
-                      ensureBlock(), Instance of 'Template<(Token) => Message>', null)
-                        reportRecoverableError(42, Message[ExpectedFunctionBody, Expected a function body, but got '42'., null, {token: 42}])
-                          listener: handleRecoverableError(Message[ExpectedFunctionBody, Expected a function body, but got '42'., null, {token: 42}], 42, 42)
-                        insertBlock())
-                          rewriter()
-                          rewriter()
-                      listener: handleInvalidFunctionBody({)
-                    listener: endClassMethod(null, operator, (, null, })
-                  listener: endMember()
-            notEofOrValue(}, 42)
-            parseClassOrMixinOrExtensionMemberImpl(}, DeclarationKind.Class, WrapperClass)
-              parseMetadataStar(})
-                listener: beginMetadataStar(42)
-                listener: endMetadataStar(0)
-              listener: beginMember()
-              recoverFromInvalidMember(}, }, null, null, null, null, null, }, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
-                reportRecoverableErrorWithToken(42, Instance of 'Template<(Token) => Message>')
-                  listener: handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got '42'., null, {token: 42}], 42, 42)
-                listener: handleInvalidMember(42)
-                listener: endMember()
-            notEofOrValue(}, ;)
-            parseClassOrMixinOrExtensionMemberImpl(42, DeclarationKind.Class, WrapperClass)
-              parseMetadataStar(42)
-                listener: beginMetadataStar(;)
-                listener: endMetadataStar(0)
-              listener: beginMember()
-              recoverFromInvalidMember(42, 42, null, null, null, null, null, 42, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
-                reportRecoverableErrorWithToken(;, Instance of 'Template<(Token) => Message>')
-                  listener: handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got ';'., null, {token: ;}], ;, ;)
-                listener: handleInvalidMember(;)
-                listener: endMember()
             notEofOrValue(}, int)
             parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
               parseMetadataStar(;)
                 listener: beginMetadataStar(int)
                 listener: endMetadataStar(0)
               listener: beginMember()
-              parseFields(;, null, null, null, null, null, ;, Instance of 'NoType', int, DeclarationKind.Class, WrapperClass)
-                reportRecoverableError(int, MissingConstFinalVarOrType)
-                  listener: handleRecoverableError(MissingConstFinalVarOrType, int, int)
-                listener: handleNoType(;)
-                ensureIdentifier(;, fieldDeclaration)
-                  listener: handleIdentifier(int, fieldDeclaration)
-                parseFieldInitializerOpt(int, int, null, null, DeclarationKind.Class, WrapperClass)
-                  listener: handleNoFieldInitializer(for)
-                ensureSemicolon(int)
-                  reportRecoverableError(int, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
-                    listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
-                  rewriter()
+              isReservedKeyword(for)
+              indicatesMethodOrField(=)
+              parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', for, DeclarationKind.Class, WrapperClass, true)
+                listener: handleIdentifier(int, typeReference)
+                listener: handleNoTypeArguments(for)
+                listener: handleType(int, null)
+                ensureIdentifierPotentiallyRecovered(int, fieldDeclaration, true)
+                  reportRecoverableErrorWithToken(for, Instance of 'Template<(Token) => Message>')
+                    listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'for'., null, {token: for}], for, for)
+                  listener: handleIdentifier(for, fieldDeclaration)
+                parseFieldInitializerOpt(for, for, null, null, DeclarationKind.Class, WrapperClass)
+                  listener: beginFieldInitializer(=)
+                  parseExpression(=)
+                    parsePrecedenceExpression(=, 1, true)
+                      parseUnaryExpression(=, true)
+                        parsePrimary(=, expression)
+                          parseLiteralInt(=)
+                            listener: handleLiteralInt(42)
+                  listener: endFieldInitializer(=, ;)
                 listener: endClassFields(null, null, null, null, 1, int, ;)
               listener: endMember()
-            notEofOrValue(}, for)
-            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
-              parseMetadataStar(;)
-                listener: beginMetadataStar(for)
-                listener: endMetadataStar(0)
-              listener: beginMember()
-              recoverFromInvalidMember(;, ;, null, null, null, null, null, ;, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
-                reportRecoverableErrorWithToken(for, Instance of 'Template<(Token) => Message>')
-                  listener: handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got 'for'., null, {token: for}], for, for)
-                listener: handleInvalidMember(for)
-                listener: endMember()
-            notEofOrValue(}, =)
-            parseClassOrMixinOrExtensionMemberImpl(for, DeclarationKind.Class, WrapperClass)
-              parseMetadataStar(for)
-                listener: beginMetadataStar(=)
-                listener: endMetadataStar(0)
-              listener: beginMember()
-              recoverFromInvalidMember(for, for, null, null, null, null, null, for, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
-                parseInvalidOperatorDeclaration(for, null, null, null, null, null, for, DeclarationKind.Class, WrapperClass)
-                  reportRecoverableError(=, MissingOperatorKeyword)
-                    listener: handleRecoverableError(MissingOperatorKeyword, =, =)
-                  rewriter()
-                  parseMethod(for, null, null, null, null, null, for, Instance of 'NoType', null, operator, DeclarationKind.Class, WrapperClass)
-                    listener: beginMethod(null, null, null, null, null, operator)
-                    listener: handleNoType(for)
-                    parseOperatorName(for)
-                      isUnaryMinus(=)
-                      reportRecoverableErrorWithToken(=, Instance of 'Template<(Token) => Message>')
-                        listener: handleRecoverableError(Message[InvalidOperator, The string '=' isn't a user-definable operator., null, {token: =}], =, =)
-                      listener: handleInvalidOperatorName(operator, =)
-                    parseMethodTypeVar(=)
-                      listener: handleNoTypeVariables(42)
-                    parseGetterOrFormalParameters(=, operator, false, MemberKind.NonStaticMethod)
-                      missingParameterMessage(MemberKind.NonStaticMethod)
-                      reportRecoverableError(=, MissingMethodParameters)
-                        listener: handleRecoverableError(MissingMethodParameters, =, =)
-                      rewriter()
-                      parseFormalParametersRest((, MemberKind.NonStaticMethod)
-                        listener: beginFormalParameters((, MemberKind.NonStaticMethod)
-                        listener: endFormalParameters(0, (, ), MemberKind.NonStaticMethod)
-                    parseInitializersOpt())
-                      listener: handleNoInitializers()
-                    parseAsyncModifierOpt())
-                      listener: handleAsyncModifier(null, null)
-                      inPlainSync()
-                    inPlainSync()
-                    parseFunctionBody(), false, true)
-                      ensureBlock(), Instance of 'Template<(Token) => Message>', null)
-                        reportRecoverableError(42, Message[ExpectedFunctionBody, Expected a function body, but got '42'., null, {token: 42}])
-                          listener: handleRecoverableError(Message[ExpectedFunctionBody, Expected a function body, but got '42'., null, {token: 42}], 42, 42)
-                        insertBlock())
-                          rewriter()
-                          rewriter()
-                      listener: handleInvalidFunctionBody({)
-                    listener: endClassMethod(null, operator, (, null, })
-                  listener: endMember()
-            notEofOrValue(}, 42)
-            parseClassOrMixinOrExtensionMemberImpl(}, DeclarationKind.Class, WrapperClass)
-              parseMetadataStar(})
-                listener: beginMetadataStar(42)
-                listener: endMetadataStar(0)
-              listener: beginMember()
-              recoverFromInvalidMember(}, }, null, null, null, null, null, }, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
-                reportRecoverableErrorWithToken(42, Instance of 'Template<(Token) => Message>')
-                  listener: handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got '42'., null, {token: 42}], 42, 42)
-                listener: handleInvalidMember(42)
-                listener: endMember()
-            notEofOrValue(}, ;)
-            parseClassOrMixinOrExtensionMemberImpl(42, DeclarationKind.Class, WrapperClass)
-              parseMetadataStar(42)
-                listener: beginMetadataStar(;)
-                listener: endMetadataStar(0)
-              listener: beginMember()
-              recoverFromInvalidMember(42, 42, null, null, null, null, null, 42, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
-                reportRecoverableErrorWithToken(;, Instance of 'Template<(Token) => Message>')
-                  listener: handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got ';'., null, {token: ;}], ;, ;)
-                listener: handleInvalidMember(;)
-                listener: endMember()
             notEofOrValue(}, int)
             parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
               parseMetadataStar(;)
                 listener: beginMetadataStar(int)
                 listener: endMetadataStar(0)
               listener: beginMember()
-              parseFields(;, null, null, null, null, null, ;, Instance of 'NoType', int, DeclarationKind.Class, WrapperClass)
-                reportRecoverableError(int, MissingConstFinalVarOrType)
-                  listener: handleRecoverableError(MissingConstFinalVarOrType, int, int)
-                listener: handleNoType(;)
-                ensureIdentifier(;, fieldDeclaration)
-                  listener: handleIdentifier(int, fieldDeclaration)
-                parseFieldInitializerOpt(int, int, null, null, DeclarationKind.Class, WrapperClass)
-                  listener: handleNoFieldInitializer(if)
-                ensureSemicolon(int)
-                  reportRecoverableError(int, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
-                    listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
-                  rewriter()
+              isReservedKeyword(if)
+              indicatesMethodOrField(=)
+              parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', if, DeclarationKind.Class, WrapperClass, true)
+                listener: handleIdentifier(int, typeReference)
+                listener: handleNoTypeArguments(if)
+                listener: handleType(int, null)
+                ensureIdentifierPotentiallyRecovered(int, fieldDeclaration, true)
+                  reportRecoverableErrorWithToken(if, Instance of 'Template<(Token) => Message>')
+                    listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'if'., null, {token: if}], if, if)
+                  listener: handleIdentifier(if, fieldDeclaration)
+                parseFieldInitializerOpt(if, if, null, null, DeclarationKind.Class, WrapperClass)
+                  listener: beginFieldInitializer(=)
+                  parseExpression(=)
+                    parsePrecedenceExpression(=, 1, true)
+                      parseUnaryExpression(=, true)
+                        parsePrimary(=, expression)
+                          parseLiteralInt(=)
+                            listener: handleLiteralInt(42)
+                  listener: endFieldInitializer(=, ;)
                 listener: endClassFields(null, null, null, null, 1, int, ;)
               listener: endMember()
-            notEofOrValue(}, if)
-            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
-              parseMetadataStar(;)
-                listener: beginMetadataStar(if)
-                listener: endMetadataStar(0)
-              listener: beginMember()
-              recoverFromInvalidMember(;, ;, null, null, null, null, null, ;, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
-                reportRecoverableErrorWithToken(if, Instance of 'Template<(Token) => Message>')
-                  listener: handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got 'if'., null, {token: if}], if, if)
-                listener: handleInvalidMember(if)
-                listener: endMember()
-            notEofOrValue(}, =)
-            parseClassOrMixinOrExtensionMemberImpl(if, DeclarationKind.Class, WrapperClass)
-              parseMetadataStar(if)
-                listener: beginMetadataStar(=)
-                listener: endMetadataStar(0)
-              listener: beginMember()
-              recoverFromInvalidMember(if, if, null, null, null, null, null, if, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
-                parseInvalidOperatorDeclaration(if, null, null, null, null, null, if, DeclarationKind.Class, WrapperClass)
-                  reportRecoverableError(=, MissingOperatorKeyword)
-                    listener: handleRecoverableError(MissingOperatorKeyword, =, =)
-                  rewriter()
-                  parseMethod(if, null, null, null, null, null, if, Instance of 'NoType', null, operator, DeclarationKind.Class, WrapperClass)
-                    listener: beginMethod(null, null, null, null, null, operator)
-                    listener: handleNoType(if)
-                    parseOperatorName(if)
-                      isUnaryMinus(=)
-                      reportRecoverableErrorWithToken(=, Instance of 'Template<(Token) => Message>')
-                        listener: handleRecoverableError(Message[InvalidOperator, The string '=' isn't a user-definable operator., null, {token: =}], =, =)
-                      listener: handleInvalidOperatorName(operator, =)
-                    parseMethodTypeVar(=)
-                      listener: handleNoTypeVariables(42)
-                    parseGetterOrFormalParameters(=, operator, false, MemberKind.NonStaticMethod)
-                      missingParameterMessage(MemberKind.NonStaticMethod)
-                      reportRecoverableError(=, MissingMethodParameters)
-                        listener: handleRecoverableError(MissingMethodParameters, =, =)
-                      rewriter()
-                      parseFormalParametersRest((, MemberKind.NonStaticMethod)
-                        listener: beginFormalParameters((, MemberKind.NonStaticMethod)
-                        listener: endFormalParameters(0, (, ), MemberKind.NonStaticMethod)
-                    parseInitializersOpt())
-                      listener: handleNoInitializers()
-                    parseAsyncModifierOpt())
-                      listener: handleAsyncModifier(null, null)
-                      inPlainSync()
-                    inPlainSync()
-                    parseFunctionBody(), false, true)
-                      ensureBlock(), Instance of 'Template<(Token) => Message>', null)
-                        reportRecoverableError(42, Message[ExpectedFunctionBody, Expected a function body, but got '42'., null, {token: 42}])
-                          listener: handleRecoverableError(Message[ExpectedFunctionBody, Expected a function body, but got '42'., null, {token: 42}], 42, 42)
-                        insertBlock())
-                          rewriter()
-                          rewriter()
-                      listener: handleInvalidFunctionBody({)
-                    listener: endClassMethod(null, operator, (, null, })
-                  listener: endMember()
-            notEofOrValue(}, 42)
-            parseClassOrMixinOrExtensionMemberImpl(}, DeclarationKind.Class, WrapperClass)
-              parseMetadataStar(})
-                listener: beginMetadataStar(42)
-                listener: endMetadataStar(0)
-              listener: beginMember()
-              recoverFromInvalidMember(}, }, null, null, null, null, null, }, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
-                reportRecoverableErrorWithToken(42, Instance of 'Template<(Token) => Message>')
-                  listener: handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got '42'., null, {token: 42}], 42, 42)
-                listener: handleInvalidMember(42)
-                listener: endMember()
-            notEofOrValue(}, ;)
-            parseClassOrMixinOrExtensionMemberImpl(42, DeclarationKind.Class, WrapperClass)
-              parseMetadataStar(42)
-                listener: beginMetadataStar(;)
-                listener: endMetadataStar(0)
-              listener: beginMember()
-              recoverFromInvalidMember(42, 42, null, null, null, null, null, 42, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
-                reportRecoverableErrorWithToken(;, Instance of 'Template<(Token) => Message>')
-                  listener: handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got ';'., null, {token: ;}], ;, ;)
-                listener: handleInvalidMember(;)
-                listener: endMember()
             notEofOrValue(}, int)
             parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
               parseMetadataStar(;)
                 listener: beginMetadataStar(int)
                 listener: endMetadataStar(0)
               listener: beginMember()
-              parseFields(;, null, null, null, null, null, ;, Instance of 'NoType', int, DeclarationKind.Class, WrapperClass)
-                reportRecoverableError(int, MissingConstFinalVarOrType)
-                  listener: handleRecoverableError(MissingConstFinalVarOrType, int, int)
-                listener: handleNoType(;)
-                ensureIdentifier(;, fieldDeclaration)
-                  listener: handleIdentifier(int, fieldDeclaration)
-                parseFieldInitializerOpt(int, int, null, null, DeclarationKind.Class, WrapperClass)
-                  listener: handleNoFieldInitializer(in)
-                ensureSemicolon(int)
-                  reportRecoverableError(int, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
-                    listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
-                  rewriter()
+              isReservedKeyword(in)
+              indicatesMethodOrField(=)
+              parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', in, DeclarationKind.Class, WrapperClass, true)
+                listener: handleIdentifier(int, typeReference)
+                listener: handleNoTypeArguments(in)
+                listener: handleType(int, null)
+                ensureIdentifierPotentiallyRecovered(int, fieldDeclaration, true)
+                  reportRecoverableErrorWithToken(in, Instance of 'Template<(Token) => Message>')
+                    listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'in'., null, {token: in}], in, in)
+                  listener: handleIdentifier(in, fieldDeclaration)
+                parseFieldInitializerOpt(in, in, null, null, DeclarationKind.Class, WrapperClass)
+                  listener: beginFieldInitializer(=)
+                  parseExpression(=)
+                    parsePrecedenceExpression(=, 1, true)
+                      parseUnaryExpression(=, true)
+                        parsePrimary(=, expression)
+                          parseLiteralInt(=)
+                            listener: handleLiteralInt(42)
+                  listener: endFieldInitializer(=, ;)
                 listener: endClassFields(null, null, null, null, 1, int, ;)
               listener: endMember()
-            notEofOrValue(}, in)
-            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
-              parseMetadataStar(;)
-                listener: beginMetadataStar(in)
-                listener: endMetadataStar(0)
-              listener: beginMember()
-              recoverFromInvalidMember(;, ;, null, null, null, null, null, ;, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
-                reportRecoverableErrorWithToken(in, Instance of 'Template<(Token) => Message>')
-                  listener: handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got 'in'., null, {token: in}], in, in)
-                listener: handleInvalidMember(in)
-                listener: endMember()
-            notEofOrValue(}, =)
-            parseClassOrMixinOrExtensionMemberImpl(in, DeclarationKind.Class, WrapperClass)
-              parseMetadataStar(in)
-                listener: beginMetadataStar(=)
-                listener: endMetadataStar(0)
-              listener: beginMember()
-              recoverFromInvalidMember(in, in, null, null, null, null, null, in, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
-                parseInvalidOperatorDeclaration(in, null, null, null, null, null, in, DeclarationKind.Class, WrapperClass)
-                  reportRecoverableError(=, MissingOperatorKeyword)
-                    listener: handleRecoverableError(MissingOperatorKeyword, =, =)
-                  rewriter()
-                  parseMethod(in, null, null, null, null, null, in, Instance of 'NoType', null, operator, DeclarationKind.Class, WrapperClass)
-                    listener: beginMethod(null, null, null, null, null, operator)
-                    listener: handleNoType(in)
-                    parseOperatorName(in)
-                      isUnaryMinus(=)
-                      reportRecoverableErrorWithToken(=, Instance of 'Template<(Token) => Message>')
-                        listener: handleRecoverableError(Message[InvalidOperator, The string '=' isn't a user-definable operator., null, {token: =}], =, =)
-                      listener: handleInvalidOperatorName(operator, =)
-                    parseMethodTypeVar(=)
-                      listener: handleNoTypeVariables(42)
-                    parseGetterOrFormalParameters(=, operator, false, MemberKind.NonStaticMethod)
-                      missingParameterMessage(MemberKind.NonStaticMethod)
-                      reportRecoverableError(=, MissingMethodParameters)
-                        listener: handleRecoverableError(MissingMethodParameters, =, =)
-                      rewriter()
-                      parseFormalParametersRest((, MemberKind.NonStaticMethod)
-                        listener: beginFormalParameters((, MemberKind.NonStaticMethod)
-                        listener: endFormalParameters(0, (, ), MemberKind.NonStaticMethod)
-                    parseInitializersOpt())
-                      listener: handleNoInitializers()
-                    parseAsyncModifierOpt())
-                      listener: handleAsyncModifier(null, null)
-                      inPlainSync()
-                    inPlainSync()
-                    parseFunctionBody(), false, true)
-                      ensureBlock(), Instance of 'Template<(Token) => Message>', null)
-                        reportRecoverableError(42, Message[ExpectedFunctionBody, Expected a function body, but got '42'., null, {token: 42}])
-                          listener: handleRecoverableError(Message[ExpectedFunctionBody, Expected a function body, but got '42'., null, {token: 42}], 42, 42)
-                        insertBlock())
-                          rewriter()
-                          rewriter()
-                      listener: handleInvalidFunctionBody({)
-                    listener: endClassMethod(null, operator, (, null, })
-                  listener: endMember()
-            notEofOrValue(}, 42)
-            parseClassOrMixinOrExtensionMemberImpl(}, DeclarationKind.Class, WrapperClass)
-              parseMetadataStar(})
-                listener: beginMetadataStar(42)
-                listener: endMetadataStar(0)
-              listener: beginMember()
-              recoverFromInvalidMember(}, }, null, null, null, null, null, }, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
-                reportRecoverableErrorWithToken(42, Instance of 'Template<(Token) => Message>')
-                  listener: handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got '42'., null, {token: 42}], 42, 42)
-                listener: handleInvalidMember(42)
-                listener: endMember()
-            notEofOrValue(}, ;)
-            parseClassOrMixinOrExtensionMemberImpl(42, DeclarationKind.Class, WrapperClass)
-              parseMetadataStar(42)
-                listener: beginMetadataStar(;)
-                listener: endMetadataStar(0)
-              listener: beginMember()
-              recoverFromInvalidMember(42, 42, null, null, null, null, null, 42, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
-                reportRecoverableErrorWithToken(;, Instance of 'Template<(Token) => Message>')
-                  listener: handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got ';'., null, {token: ;}], ;, ;)
-                listener: handleInvalidMember(;)
-                listener: endMember()
             notEofOrValue(}, int)
             parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
               parseMetadataStar(;)
                 listener: beginMetadataStar(int)
                 listener: endMetadataStar(0)
               listener: beginMember()
-              parseFields(;, null, null, null, null, null, ;, Instance of 'NoType', int, DeclarationKind.Class, WrapperClass)
-                reportRecoverableError(int, MissingConstFinalVarOrType)
-                  listener: handleRecoverableError(MissingConstFinalVarOrType, int, int)
-                listener: handleNoType(;)
-                ensureIdentifier(;, fieldDeclaration)
-                  listener: handleIdentifier(int, fieldDeclaration)
-                parseFieldInitializerOpt(int, int, null, null, DeclarationKind.Class, WrapperClass)
-                  listener: handleNoFieldInitializer(is)
-                ensureSemicolon(int)
-                  reportRecoverableError(int, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
-                    listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
-                  rewriter()
+              isReservedKeyword(is)
+              indicatesMethodOrField(=)
+              parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', is, DeclarationKind.Class, WrapperClass, true)
+                listener: handleIdentifier(int, typeReference)
+                listener: handleNoTypeArguments(is)
+                listener: handleType(int, null)
+                ensureIdentifierPotentiallyRecovered(int, fieldDeclaration, true)
+                  reportRecoverableErrorWithToken(is, Instance of 'Template<(Token) => Message>')
+                    listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'is'., null, {token: is}], is, is)
+                  listener: handleIdentifier(is, fieldDeclaration)
+                parseFieldInitializerOpt(is, is, null, null, DeclarationKind.Class, WrapperClass)
+                  listener: beginFieldInitializer(=)
+                  parseExpression(=)
+                    parsePrecedenceExpression(=, 1, true)
+                      parseUnaryExpression(=, true)
+                        parsePrimary(=, expression)
+                          parseLiteralInt(=)
+                            listener: handleLiteralInt(42)
+                  listener: endFieldInitializer(=, ;)
                 listener: endClassFields(null, null, null, null, 1, int, ;)
               listener: endMember()
-            notEofOrValue(}, is)
-            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
-              parseMetadataStar(;)
-                listener: beginMetadataStar(is)
-                listener: endMetadataStar(0)
-              listener: beginMember()
-              recoverFromInvalidMember(;, ;, null, null, null, null, null, ;, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
-                reportRecoverableErrorWithToken(is, Instance of 'Template<(Token) => Message>')
-                  listener: handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got 'is'., null, {token: is}], is, is)
-                listener: handleInvalidMember(is)
-                listener: endMember()
-            notEofOrValue(}, =)
-            parseClassOrMixinOrExtensionMemberImpl(is, DeclarationKind.Class, WrapperClass)
-              parseMetadataStar(is)
-                listener: beginMetadataStar(=)
-                listener: endMetadataStar(0)
-              listener: beginMember()
-              recoverFromInvalidMember(is, is, null, null, null, null, null, is, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
-                parseInvalidOperatorDeclaration(is, null, null, null, null, null, is, DeclarationKind.Class, WrapperClass)
-                  reportRecoverableError(=, MissingOperatorKeyword)
-                    listener: handleRecoverableError(MissingOperatorKeyword, =, =)
-                  rewriter()
-                  parseMethod(is, null, null, null, null, null, is, Instance of 'NoType', null, operator, DeclarationKind.Class, WrapperClass)
-                    listener: beginMethod(null, null, null, null, null, operator)
-                    listener: handleNoType(is)
-                    parseOperatorName(is)
-                      isUnaryMinus(=)
-                      reportRecoverableErrorWithToken(=, Instance of 'Template<(Token) => Message>')
-                        listener: handleRecoverableError(Message[InvalidOperator, The string '=' isn't a user-definable operator., null, {token: =}], =, =)
-                      listener: handleInvalidOperatorName(operator, =)
-                    parseMethodTypeVar(=)
-                      listener: handleNoTypeVariables(42)
-                    parseGetterOrFormalParameters(=, operator, false, MemberKind.NonStaticMethod)
-                      missingParameterMessage(MemberKind.NonStaticMethod)
-                      reportRecoverableError(=, MissingMethodParameters)
-                        listener: handleRecoverableError(MissingMethodParameters, =, =)
-                      rewriter()
-                      parseFormalParametersRest((, MemberKind.NonStaticMethod)
-                        listener: beginFormalParameters((, MemberKind.NonStaticMethod)
-                        listener: endFormalParameters(0, (, ), MemberKind.NonStaticMethod)
-                    parseInitializersOpt())
-                      listener: handleNoInitializers()
-                    parseAsyncModifierOpt())
-                      listener: handleAsyncModifier(null, null)
-                      inPlainSync()
-                    inPlainSync()
-                    parseFunctionBody(), false, true)
-                      ensureBlock(), Instance of 'Template<(Token) => Message>', null)
-                        reportRecoverableError(42, Message[ExpectedFunctionBody, Expected a function body, but got '42'., null, {token: 42}])
-                          listener: handleRecoverableError(Message[ExpectedFunctionBody, Expected a function body, but got '42'., null, {token: 42}], 42, 42)
-                        insertBlock())
-                          rewriter()
-                          rewriter()
-                      listener: handleInvalidFunctionBody({)
-                    listener: endClassMethod(null, operator, (, null, })
-                  listener: endMember()
-            notEofOrValue(}, 42)
-            parseClassOrMixinOrExtensionMemberImpl(}, DeclarationKind.Class, WrapperClass)
-              parseMetadataStar(})
-                listener: beginMetadataStar(42)
-                listener: endMetadataStar(0)
-              listener: beginMember()
-              recoverFromInvalidMember(}, }, null, null, null, null, null, }, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
-                reportRecoverableErrorWithToken(42, Instance of 'Template<(Token) => Message>')
-                  listener: handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got '42'., null, {token: 42}], 42, 42)
-                listener: handleInvalidMember(42)
-                listener: endMember()
-            notEofOrValue(}, ;)
-            parseClassOrMixinOrExtensionMemberImpl(42, DeclarationKind.Class, WrapperClass)
-              parseMetadataStar(42)
-                listener: beginMetadataStar(;)
-                listener: endMetadataStar(0)
-              listener: beginMember()
-              recoverFromInvalidMember(42, 42, null, null, null, null, null, 42, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
-                reportRecoverableErrorWithToken(;, Instance of 'Template<(Token) => Message>')
-                  listener: handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got ';'., null, {token: ;}], ;, ;)
-                listener: handleInvalidMember(;)
-                listener: endMember()
             notEofOrValue(}, int)
             parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
               parseMetadataStar(;)
                 listener: beginMetadataStar(int)
                 listener: endMetadataStar(0)
               listener: beginMember()
-              parseFields(;, null, null, null, null, null, ;, Instance of 'NoType', int, DeclarationKind.Class, WrapperClass)
-                reportRecoverableError(int, MissingConstFinalVarOrType)
-                  listener: handleRecoverableError(MissingConstFinalVarOrType, int, int)
-                listener: handleNoType(;)
-                ensureIdentifier(;, fieldDeclaration)
-                  listener: handleIdentifier(int, fieldDeclaration)
-                parseFieldInitializerOpt(int, int, null, null, DeclarationKind.Class, WrapperClass)
-                  listener: handleNoFieldInitializer(new)
-                ensureSemicolon(int)
-                  reportRecoverableError(int, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
-                    listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
-                  rewriter()
+              isReservedKeyword(new)
+              indicatesMethodOrField(=)
+              parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', new, DeclarationKind.Class, WrapperClass, true)
+                listener: handleIdentifier(int, typeReference)
+                listener: handleNoTypeArguments(new)
+                listener: handleType(int, null)
+                ensureIdentifierPotentiallyRecovered(int, fieldDeclaration, true)
+                  reportRecoverableErrorWithToken(new, Instance of 'Template<(Token) => Message>')
+                    listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'new'., null, {token: new}], new, new)
+                  listener: handleIdentifier(new, fieldDeclaration)
+                parseFieldInitializerOpt(new, new, null, null, DeclarationKind.Class, WrapperClass)
+                  listener: beginFieldInitializer(=)
+                  parseExpression(=)
+                    parsePrecedenceExpression(=, 1, true)
+                      parseUnaryExpression(=, true)
+                        parsePrimary(=, expression)
+                          parseLiteralInt(=)
+                            listener: handleLiteralInt(42)
+                  listener: endFieldInitializer(=, ;)
                 listener: endClassFields(null, null, null, null, 1, int, ;)
               listener: endMember()
-            notEofOrValue(}, new)
-            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
-              parseMetadataStar(;)
-                listener: beginMetadataStar(new)
-                listener: endMetadataStar(0)
-              listener: beginMember()
-              recoverFromInvalidMember(;, ;, null, null, null, null, null, ;, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
-                reportRecoverableErrorWithToken(new, Instance of 'Template<(Token) => Message>')
-                  listener: handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got 'new'., null, {token: new}], new, new)
-                listener: handleInvalidMember(new)
-                listener: endMember()
-            notEofOrValue(}, =)
-            parseClassOrMixinOrExtensionMemberImpl(new, DeclarationKind.Class, WrapperClass)
-              parseMetadataStar(new)
-                listener: beginMetadataStar(=)
-                listener: endMetadataStar(0)
-              listener: beginMember()
-              recoverFromInvalidMember(new, new, null, null, null, null, null, new, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
-                parseInvalidOperatorDeclaration(new, null, null, null, null, null, new, DeclarationKind.Class, WrapperClass)
-                  reportRecoverableError(=, MissingOperatorKeyword)
-                    listener: handleRecoverableError(MissingOperatorKeyword, =, =)
-                  rewriter()
-                  parseMethod(new, null, null, null, null, null, new, Instance of 'NoType', null, operator, DeclarationKind.Class, WrapperClass)
-                    listener: beginMethod(null, null, null, null, null, operator)
-                    listener: handleNoType(new)
-                    parseOperatorName(new)
-                      isUnaryMinus(=)
-                      reportRecoverableErrorWithToken(=, Instance of 'Template<(Token) => Message>')
-                        listener: handleRecoverableError(Message[InvalidOperator, The string '=' isn't a user-definable operator., null, {token: =}], =, =)
-                      listener: handleInvalidOperatorName(operator, =)
-                    parseMethodTypeVar(=)
-                      listener: handleNoTypeVariables(42)
-                    parseGetterOrFormalParameters(=, operator, false, MemberKind.NonStaticMethod)
-                      missingParameterMessage(MemberKind.NonStaticMethod)
-                      reportRecoverableError(=, MissingMethodParameters)
-                        listener: handleRecoverableError(MissingMethodParameters, =, =)
-                      rewriter()
-                      parseFormalParametersRest((, MemberKind.NonStaticMethod)
-                        listener: beginFormalParameters((, MemberKind.NonStaticMethod)
-                        listener: endFormalParameters(0, (, ), MemberKind.NonStaticMethod)
-                    parseInitializersOpt())
-                      listener: handleNoInitializers()
-                    parseAsyncModifierOpt())
-                      listener: handleAsyncModifier(null, null)
-                      inPlainSync()
-                    inPlainSync()
-                    parseFunctionBody(), false, true)
-                      ensureBlock(), Instance of 'Template<(Token) => Message>', null)
-                        reportRecoverableError(42, Message[ExpectedFunctionBody, Expected a function body, but got '42'., null, {token: 42}])
-                          listener: handleRecoverableError(Message[ExpectedFunctionBody, Expected a function body, but got '42'., null, {token: 42}], 42, 42)
-                        insertBlock())
-                          rewriter()
-                          rewriter()
-                      listener: handleInvalidFunctionBody({)
-                    listener: endClassMethod(null, operator, (, null, })
-                  listener: endMember()
-            notEofOrValue(}, 42)
-            parseClassOrMixinOrExtensionMemberImpl(}, DeclarationKind.Class, WrapperClass)
-              parseMetadataStar(})
-                listener: beginMetadataStar(42)
-                listener: endMetadataStar(0)
-              listener: beginMember()
-              recoverFromInvalidMember(}, }, null, null, null, null, null, }, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
-                reportRecoverableErrorWithToken(42, Instance of 'Template<(Token) => Message>')
-                  listener: handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got '42'., null, {token: 42}], 42, 42)
-                listener: handleInvalidMember(42)
-                listener: endMember()
-            notEofOrValue(}, ;)
-            parseClassOrMixinOrExtensionMemberImpl(42, DeclarationKind.Class, WrapperClass)
-              parseMetadataStar(42)
-                listener: beginMetadataStar(;)
-                listener: endMetadataStar(0)
-              listener: beginMember()
-              recoverFromInvalidMember(42, 42, null, null, null, null, null, 42, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
-                reportRecoverableErrorWithToken(;, Instance of 'Template<(Token) => Message>')
-                  listener: handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got ';'., null, {token: ;}], ;, ;)
-                listener: handleInvalidMember(;)
-                listener: endMember()
             notEofOrValue(}, int)
             parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
               parseMetadataStar(;)
                 listener: beginMetadataStar(int)
                 listener: endMetadataStar(0)
               listener: beginMember()
-              parseFields(;, null, null, null, null, null, ;, Instance of 'NoType', int, DeclarationKind.Class, WrapperClass)
-                reportRecoverableError(int, MissingConstFinalVarOrType)
-                  listener: handleRecoverableError(MissingConstFinalVarOrType, int, int)
-                listener: handleNoType(;)
-                ensureIdentifier(;, fieldDeclaration)
-                  listener: handleIdentifier(int, fieldDeclaration)
-                parseFieldInitializerOpt(int, int, null, null, DeclarationKind.Class, WrapperClass)
-                  listener: handleNoFieldInitializer(null)
-                ensureSemicolon(int)
-                  reportRecoverableError(int, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
-                    listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
-                  rewriter()
+              isReservedKeyword(null)
+              indicatesMethodOrField(=)
+              parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', null, DeclarationKind.Class, WrapperClass, true)
+                listener: handleIdentifier(int, typeReference)
+                listener: handleNoTypeArguments(null)
+                listener: handleType(int, null)
+                ensureIdentifierPotentiallyRecovered(int, fieldDeclaration, true)
+                  reportRecoverableErrorWithToken(null, Instance of 'Template<(Token) => Message>')
+                    listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'null'., null, {token: null}], null, null)
+                  listener: handleIdentifier(null, fieldDeclaration)
+                parseFieldInitializerOpt(null, null, null, null, DeclarationKind.Class, WrapperClass)
+                  listener: beginFieldInitializer(=)
+                  parseExpression(=)
+                    parsePrecedenceExpression(=, 1, true)
+                      parseUnaryExpression(=, true)
+                        parsePrimary(=, expression)
+                          parseLiteralInt(=)
+                            listener: handleLiteralInt(42)
+                  listener: endFieldInitializer(=, ;)
                 listener: endClassFields(null, null, null, null, 1, int, ;)
               listener: endMember()
-            notEofOrValue(}, null)
-            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
-              parseMetadataStar(;)
-                listener: beginMetadataStar(null)
-                listener: endMetadataStar(0)
-              listener: beginMember()
-              recoverFromInvalidMember(;, ;, null, null, null, null, null, ;, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
-                reportRecoverableErrorWithToken(null, Instance of 'Template<(Token) => Message>')
-                  listener: handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got 'null'., null, {token: null}], null, null)
-                listener: handleInvalidMember(null)
-                listener: endMember()
-            notEofOrValue(}, =)
-            parseClassOrMixinOrExtensionMemberImpl(null, DeclarationKind.Class, WrapperClass)
-              parseMetadataStar(null)
-                listener: beginMetadataStar(=)
-                listener: endMetadataStar(0)
-              listener: beginMember()
-              recoverFromInvalidMember(null, null, null, null, null, null, null, null, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
-                parseInvalidOperatorDeclaration(null, null, null, null, null, null, null, DeclarationKind.Class, WrapperClass)
-                  reportRecoverableError(=, MissingOperatorKeyword)
-                    listener: handleRecoverableError(MissingOperatorKeyword, =, =)
-                  rewriter()
-                  parseMethod(null, null, null, null, null, null, null, Instance of 'NoType', null, operator, DeclarationKind.Class, WrapperClass)
-                    listener: beginMethod(null, null, null, null, null, operator)
-                    listener: handleNoType(null)
-                    parseOperatorName(null)
-                      isUnaryMinus(=)
-                      reportRecoverableErrorWithToken(=, Instance of 'Template<(Token) => Message>')
-                        listener: handleRecoverableError(Message[InvalidOperator, The string '=' isn't a user-definable operator., null, {token: =}], =, =)
-                      listener: handleInvalidOperatorName(operator, =)
-                    parseMethodTypeVar(=)
-                      listener: handleNoTypeVariables(42)
-                    parseGetterOrFormalParameters(=, operator, false, MemberKind.NonStaticMethod)
-                      missingParameterMessage(MemberKind.NonStaticMethod)
-                      reportRecoverableError(=, MissingMethodParameters)
-                        listener: handleRecoverableError(MissingMethodParameters, =, =)
-                      rewriter()
-                      parseFormalParametersRest((, MemberKind.NonStaticMethod)
-                        listener: beginFormalParameters((, MemberKind.NonStaticMethod)
-                        listener: endFormalParameters(0, (, ), MemberKind.NonStaticMethod)
-                    parseInitializersOpt())
-                      listener: handleNoInitializers()
-                    parseAsyncModifierOpt())
-                      listener: handleAsyncModifier(null, null)
-                      inPlainSync()
-                    inPlainSync()
-                    parseFunctionBody(), false, true)
-                      ensureBlock(), Instance of 'Template<(Token) => Message>', null)
-                        reportRecoverableError(42, Message[ExpectedFunctionBody, Expected a function body, but got '42'., null, {token: 42}])
-                          listener: handleRecoverableError(Message[ExpectedFunctionBody, Expected a function body, but got '42'., null, {token: 42}], 42, 42)
-                        insertBlock())
-                          rewriter()
-                          rewriter()
-                      listener: handleInvalidFunctionBody({)
-                    listener: endClassMethod(null, operator, (, null, })
-                  listener: endMember()
-            notEofOrValue(}, 42)
-            parseClassOrMixinOrExtensionMemberImpl(}, DeclarationKind.Class, WrapperClass)
-              parseMetadataStar(})
-                listener: beginMetadataStar(42)
-                listener: endMetadataStar(0)
-              listener: beginMember()
-              recoverFromInvalidMember(}, }, null, null, null, null, null, }, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
-                reportRecoverableErrorWithToken(42, Instance of 'Template<(Token) => Message>')
-                  listener: handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got '42'., null, {token: 42}], 42, 42)
-                listener: handleInvalidMember(42)
-                listener: endMember()
-            notEofOrValue(}, ;)
-            parseClassOrMixinOrExtensionMemberImpl(42, DeclarationKind.Class, WrapperClass)
-              parseMetadataStar(42)
-                listener: beginMetadataStar(;)
-                listener: endMetadataStar(0)
-              listener: beginMember()
-              recoverFromInvalidMember(42, 42, null, null, null, null, null, 42, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
-                reportRecoverableErrorWithToken(;, Instance of 'Template<(Token) => Message>')
-                  listener: handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got ';'., null, {token: ;}], ;, ;)
-                listener: handleInvalidMember(;)
-                listener: endMember()
             notEofOrValue(}, int)
             parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
               parseMetadataStar(;)
                 listener: beginMetadataStar(int)
                 listener: endMetadataStar(0)
               listener: beginMember()
-              parseFields(;, null, null, null, null, null, ;, Instance of 'NoType', int, DeclarationKind.Class, WrapperClass)
-                reportRecoverableError(int, MissingConstFinalVarOrType)
-                  listener: handleRecoverableError(MissingConstFinalVarOrType, int, int)
-                listener: handleNoType(;)
-                ensureIdentifier(;, fieldDeclaration)
-                  listener: handleIdentifier(int, fieldDeclaration)
-                parseFieldInitializerOpt(int, int, null, null, DeclarationKind.Class, WrapperClass)
-                  listener: handleNoFieldInitializer(rethrow)
-                ensureSemicolon(int)
-                  reportRecoverableError(int, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
-                    listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
-                  rewriter()
+              isReservedKeyword(rethrow)
+              indicatesMethodOrField(=)
+              parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', rethrow, DeclarationKind.Class, WrapperClass, true)
+                listener: handleIdentifier(int, typeReference)
+                listener: handleNoTypeArguments(rethrow)
+                listener: handleType(int, null)
+                ensureIdentifierPotentiallyRecovered(int, fieldDeclaration, true)
+                  reportRecoverableErrorWithToken(rethrow, Instance of 'Template<(Token) => Message>')
+                    listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'rethrow'., null, {token: rethrow}], rethrow, rethrow)
+                  listener: handleIdentifier(rethrow, fieldDeclaration)
+                parseFieldInitializerOpt(rethrow, rethrow, null, null, DeclarationKind.Class, WrapperClass)
+                  listener: beginFieldInitializer(=)
+                  parseExpression(=)
+                    parsePrecedenceExpression(=, 1, true)
+                      parseUnaryExpression(=, true)
+                        parsePrimary(=, expression)
+                          parseLiteralInt(=)
+                            listener: handleLiteralInt(42)
+                  listener: endFieldInitializer(=, ;)
                 listener: endClassFields(null, null, null, null, 1, int, ;)
               listener: endMember()
-            notEofOrValue(}, rethrow)
-            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
-              parseMetadataStar(;)
-                listener: beginMetadataStar(rethrow)
-                listener: endMetadataStar(0)
-              listener: beginMember()
-              recoverFromInvalidMember(;, ;, null, null, null, null, null, ;, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
-                reportRecoverableErrorWithToken(rethrow, Instance of 'Template<(Token) => Message>')
-                  listener: handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got 'rethrow'., null, {token: rethrow}], rethrow, rethrow)
-                listener: handleInvalidMember(rethrow)
-                listener: endMember()
-            notEofOrValue(}, =)
-            parseClassOrMixinOrExtensionMemberImpl(rethrow, DeclarationKind.Class, WrapperClass)
-              parseMetadataStar(rethrow)
-                listener: beginMetadataStar(=)
-                listener: endMetadataStar(0)
-              listener: beginMember()
-              recoverFromInvalidMember(rethrow, rethrow, null, null, null, null, null, rethrow, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
-                parseInvalidOperatorDeclaration(rethrow, null, null, null, null, null, rethrow, DeclarationKind.Class, WrapperClass)
-                  reportRecoverableError(=, MissingOperatorKeyword)
-                    listener: handleRecoverableError(MissingOperatorKeyword, =, =)
-                  rewriter()
-                  parseMethod(rethrow, null, null, null, null, null, rethrow, Instance of 'NoType', null, operator, DeclarationKind.Class, WrapperClass)
-                    listener: beginMethod(null, null, null, null, null, operator)
-                    listener: handleNoType(rethrow)
-                    parseOperatorName(rethrow)
-                      isUnaryMinus(=)
-                      reportRecoverableErrorWithToken(=, Instance of 'Template<(Token) => Message>')
-                        listener: handleRecoverableError(Message[InvalidOperator, The string '=' isn't a user-definable operator., null, {token: =}], =, =)
-                      listener: handleInvalidOperatorName(operator, =)
-                    parseMethodTypeVar(=)
-                      listener: handleNoTypeVariables(42)
-                    parseGetterOrFormalParameters(=, operator, false, MemberKind.NonStaticMethod)
-                      missingParameterMessage(MemberKind.NonStaticMethod)
-                      reportRecoverableError(=, MissingMethodParameters)
-                        listener: handleRecoverableError(MissingMethodParameters, =, =)
-                      rewriter()
-                      parseFormalParametersRest((, MemberKind.NonStaticMethod)
-                        listener: beginFormalParameters((, MemberKind.NonStaticMethod)
-                        listener: endFormalParameters(0, (, ), MemberKind.NonStaticMethod)
-                    parseInitializersOpt())
-                      listener: handleNoInitializers()
-                    parseAsyncModifierOpt())
-                      listener: handleAsyncModifier(null, null)
-                      inPlainSync()
-                    inPlainSync()
-                    parseFunctionBody(), false, true)
-                      ensureBlock(), Instance of 'Template<(Token) => Message>', null)
-                        reportRecoverableError(42, Message[ExpectedFunctionBody, Expected a function body, but got '42'., null, {token: 42}])
-                          listener: handleRecoverableError(Message[ExpectedFunctionBody, Expected a function body, but got '42'., null, {token: 42}], 42, 42)
-                        insertBlock())
-                          rewriter()
-                          rewriter()
-                      listener: handleInvalidFunctionBody({)
-                    listener: endClassMethod(null, operator, (, null, })
-                  listener: endMember()
-            notEofOrValue(}, 42)
-            parseClassOrMixinOrExtensionMemberImpl(}, DeclarationKind.Class, WrapperClass)
-              parseMetadataStar(})
-                listener: beginMetadataStar(42)
-                listener: endMetadataStar(0)
-              listener: beginMember()
-              recoverFromInvalidMember(}, }, null, null, null, null, null, }, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
-                reportRecoverableErrorWithToken(42, Instance of 'Template<(Token) => Message>')
-                  listener: handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got '42'., null, {token: 42}], 42, 42)
-                listener: handleInvalidMember(42)
-                listener: endMember()
-            notEofOrValue(}, ;)
-            parseClassOrMixinOrExtensionMemberImpl(42, DeclarationKind.Class, WrapperClass)
-              parseMetadataStar(42)
-                listener: beginMetadataStar(;)
-                listener: endMetadataStar(0)
-              listener: beginMember()
-              recoverFromInvalidMember(42, 42, null, null, null, null, null, 42, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
-                reportRecoverableErrorWithToken(;, Instance of 'Template<(Token) => Message>')
-                  listener: handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got ';'., null, {token: ;}], ;, ;)
-                listener: handleInvalidMember(;)
-                listener: endMember()
             notEofOrValue(}, int)
             parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
               parseMetadataStar(;)
                 listener: beginMetadataStar(int)
                 listener: endMetadataStar(0)
               listener: beginMember()
-              parseFields(;, null, null, null, null, null, ;, Instance of 'NoType', int, DeclarationKind.Class, WrapperClass)
-                reportRecoverableError(int, MissingConstFinalVarOrType)
-                  listener: handleRecoverableError(MissingConstFinalVarOrType, int, int)
-                listener: handleNoType(;)
-                ensureIdentifier(;, fieldDeclaration)
-                  listener: handleIdentifier(int, fieldDeclaration)
-                parseFieldInitializerOpt(int, int, null, null, DeclarationKind.Class, WrapperClass)
-                  listener: handleNoFieldInitializer(return)
-                ensureSemicolon(int)
-                  reportRecoverableError(int, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
-                    listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
-                  rewriter()
+              isReservedKeyword(return)
+              indicatesMethodOrField(=)
+              parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', return, DeclarationKind.Class, WrapperClass, true)
+                listener: handleIdentifier(int, typeReference)
+                listener: handleNoTypeArguments(return)
+                listener: handleType(int, null)
+                ensureIdentifierPotentiallyRecovered(int, fieldDeclaration, true)
+                  reportRecoverableErrorWithToken(return, Instance of 'Template<(Token) => Message>')
+                    listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'return'., null, {token: return}], return, return)
+                  listener: handleIdentifier(return, fieldDeclaration)
+                parseFieldInitializerOpt(return, return, null, null, DeclarationKind.Class, WrapperClass)
+                  listener: beginFieldInitializer(=)
+                  parseExpression(=)
+                    parsePrecedenceExpression(=, 1, true)
+                      parseUnaryExpression(=, true)
+                        parsePrimary(=, expression)
+                          parseLiteralInt(=)
+                            listener: handleLiteralInt(42)
+                  listener: endFieldInitializer(=, ;)
                 listener: endClassFields(null, null, null, null, 1, int, ;)
               listener: endMember()
-            notEofOrValue(}, return)
-            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
-              parseMetadataStar(;)
-                listener: beginMetadataStar(return)
-                listener: endMetadataStar(0)
-              listener: beginMember()
-              recoverFromInvalidMember(;, ;, null, null, null, null, null, ;, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
-                reportRecoverableErrorWithToken(return, Instance of 'Template<(Token) => Message>')
-                  listener: handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got 'return'., null, {token: return}], return, return)
-                listener: handleInvalidMember(return)
-                listener: endMember()
-            notEofOrValue(}, =)
-            parseClassOrMixinOrExtensionMemberImpl(return, DeclarationKind.Class, WrapperClass)
-              parseMetadataStar(return)
-                listener: beginMetadataStar(=)
-                listener: endMetadataStar(0)
-              listener: beginMember()
-              recoverFromInvalidMember(return, return, null, null, null, null, null, return, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
-                parseInvalidOperatorDeclaration(return, null, null, null, null, null, return, DeclarationKind.Class, WrapperClass)
-                  reportRecoverableError(=, MissingOperatorKeyword)
-                    listener: handleRecoverableError(MissingOperatorKeyword, =, =)
-                  rewriter()
-                  parseMethod(return, null, null, null, null, null, return, Instance of 'NoType', null, operator, DeclarationKind.Class, WrapperClass)
-                    listener: beginMethod(null, null, null, null, null, operator)
-                    listener: handleNoType(return)
-                    parseOperatorName(return)
-                      isUnaryMinus(=)
-                      reportRecoverableErrorWithToken(=, Instance of 'Template<(Token) => Message>')
-                        listener: handleRecoverableError(Message[InvalidOperator, The string '=' isn't a user-definable operator., null, {token: =}], =, =)
-                      listener: handleInvalidOperatorName(operator, =)
-                    parseMethodTypeVar(=)
-                      listener: handleNoTypeVariables(42)
-                    parseGetterOrFormalParameters(=, operator, false, MemberKind.NonStaticMethod)
-                      missingParameterMessage(MemberKind.NonStaticMethod)
-                      reportRecoverableError(=, MissingMethodParameters)
-                        listener: handleRecoverableError(MissingMethodParameters, =, =)
-                      rewriter()
-                      parseFormalParametersRest((, MemberKind.NonStaticMethod)
-                        listener: beginFormalParameters((, MemberKind.NonStaticMethod)
-                        listener: endFormalParameters(0, (, ), MemberKind.NonStaticMethod)
-                    parseInitializersOpt())
-                      listener: handleNoInitializers()
-                    parseAsyncModifierOpt())
-                      listener: handleAsyncModifier(null, null)
-                      inPlainSync()
-                    inPlainSync()
-                    parseFunctionBody(), false, true)
-                      ensureBlock(), Instance of 'Template<(Token) => Message>', null)
-                        reportRecoverableError(42, Message[ExpectedFunctionBody, Expected a function body, but got '42'., null, {token: 42}])
-                          listener: handleRecoverableError(Message[ExpectedFunctionBody, Expected a function body, but got '42'., null, {token: 42}], 42, 42)
-                        insertBlock())
-                          rewriter()
-                          rewriter()
-                      listener: handleInvalidFunctionBody({)
-                    listener: endClassMethod(null, operator, (, null, })
-                  listener: endMember()
-            notEofOrValue(}, 42)
-            parseClassOrMixinOrExtensionMemberImpl(}, DeclarationKind.Class, WrapperClass)
-              parseMetadataStar(})
-                listener: beginMetadataStar(42)
-                listener: endMetadataStar(0)
-              listener: beginMember()
-              recoverFromInvalidMember(}, }, null, null, null, null, null, }, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
-                reportRecoverableErrorWithToken(42, Instance of 'Template<(Token) => Message>')
-                  listener: handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got '42'., null, {token: 42}], 42, 42)
-                listener: handleInvalidMember(42)
-                listener: endMember()
-            notEofOrValue(}, ;)
-            parseClassOrMixinOrExtensionMemberImpl(42, DeclarationKind.Class, WrapperClass)
-              parseMetadataStar(42)
-                listener: beginMetadataStar(;)
-                listener: endMetadataStar(0)
-              listener: beginMember()
-              recoverFromInvalidMember(42, 42, null, null, null, null, null, 42, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
-                reportRecoverableErrorWithToken(;, Instance of 'Template<(Token) => Message>')
-                  listener: handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got ';'., null, {token: ;}], ;, ;)
-                listener: handleInvalidMember(;)
-                listener: endMember()
             notEofOrValue(}, int)
             parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
               parseMetadataStar(;)
                 listener: beginMetadataStar(int)
                 listener: endMetadataStar(0)
               listener: beginMember()
-              parseFields(;, null, null, null, null, null, ;, Instance of 'NoType', int, DeclarationKind.Class, WrapperClass)
-                reportRecoverableError(int, MissingConstFinalVarOrType)
-                  listener: handleRecoverableError(MissingConstFinalVarOrType, int, int)
-                listener: handleNoType(;)
-                ensureIdentifier(;, fieldDeclaration)
-                  listener: handleIdentifier(int, fieldDeclaration)
-                parseFieldInitializerOpt(int, int, null, null, DeclarationKind.Class, WrapperClass)
-                  listener: handleNoFieldInitializer(super)
-                ensureSemicolon(int)
-                  reportRecoverableError(int, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
-                    listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
-                  rewriter()
+              isReservedKeyword(super)
+              indicatesMethodOrField(=)
+              parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', super, DeclarationKind.Class, WrapperClass, true)
+                listener: handleIdentifier(int, typeReference)
+                listener: handleNoTypeArguments(super)
+                listener: handleType(int, null)
+                ensureIdentifierPotentiallyRecovered(int, fieldDeclaration, true)
+                  reportRecoverableErrorWithToken(super, Instance of 'Template<(Token) => Message>')
+                    listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'super'., null, {token: super}], super, super)
+                  listener: handleIdentifier(super, fieldDeclaration)
+                parseFieldInitializerOpt(super, super, null, null, DeclarationKind.Class, WrapperClass)
+                  listener: beginFieldInitializer(=)
+                  parseExpression(=)
+                    parsePrecedenceExpression(=, 1, true)
+                      parseUnaryExpression(=, true)
+                        parsePrimary(=, expression)
+                          parseLiteralInt(=)
+                            listener: handleLiteralInt(42)
+                  listener: endFieldInitializer(=, ;)
                 listener: endClassFields(null, null, null, null, 1, int, ;)
               listener: endMember()
-            notEofOrValue(}, super)
-            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
-              parseMetadataStar(;)
-                listener: beginMetadataStar(super)
-                listener: endMetadataStar(0)
-              listener: beginMember()
-              recoverFromInvalidMember(;, ;, null, null, null, null, null, ;, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
-                reportRecoverableErrorWithToken(super, Instance of 'Template<(Token) => Message>')
-                  listener: handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got 'super'., null, {token: super}], super, super)
-                listener: handleInvalidMember(super)
-                listener: endMember()
-            notEofOrValue(}, =)
-            parseClassOrMixinOrExtensionMemberImpl(super, DeclarationKind.Class, WrapperClass)
-              parseMetadataStar(super)
-                listener: beginMetadataStar(=)
-                listener: endMetadataStar(0)
-              listener: beginMember()
-              recoverFromInvalidMember(super, super, null, null, null, null, null, super, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
-                parseInvalidOperatorDeclaration(super, null, null, null, null, null, super, DeclarationKind.Class, WrapperClass)
-                  reportRecoverableError(=, MissingOperatorKeyword)
-                    listener: handleRecoverableError(MissingOperatorKeyword, =, =)
-                  rewriter()
-                  parseMethod(super, null, null, null, null, null, super, Instance of 'NoType', null, operator, DeclarationKind.Class, WrapperClass)
-                    listener: beginMethod(null, null, null, null, null, operator)
-                    listener: handleNoType(super)
-                    parseOperatorName(super)
-                      isUnaryMinus(=)
-                      reportRecoverableErrorWithToken(=, Instance of 'Template<(Token) => Message>')
-                        listener: handleRecoverableError(Message[InvalidOperator, The string '=' isn't a user-definable operator., null, {token: =}], =, =)
-                      listener: handleInvalidOperatorName(operator, =)
-                    parseMethodTypeVar(=)
-                      listener: handleNoTypeVariables(42)
-                    parseGetterOrFormalParameters(=, operator, false, MemberKind.NonStaticMethod)
-                      missingParameterMessage(MemberKind.NonStaticMethod)
-                      reportRecoverableError(=, MissingMethodParameters)
-                        listener: handleRecoverableError(MissingMethodParameters, =, =)
-                      rewriter()
-                      parseFormalParametersRest((, MemberKind.NonStaticMethod)
-                        listener: beginFormalParameters((, MemberKind.NonStaticMethod)
-                        listener: endFormalParameters(0, (, ), MemberKind.NonStaticMethod)
-                    parseInitializersOpt())
-                      listener: handleNoInitializers()
-                    parseAsyncModifierOpt())
-                      listener: handleAsyncModifier(null, null)
-                      inPlainSync()
-                    inPlainSync()
-                    parseFunctionBody(), false, true)
-                      ensureBlock(), Instance of 'Template<(Token) => Message>', null)
-                        reportRecoverableError(42, Message[ExpectedFunctionBody, Expected a function body, but got '42'., null, {token: 42}])
-                          listener: handleRecoverableError(Message[ExpectedFunctionBody, Expected a function body, but got '42'., null, {token: 42}], 42, 42)
-                        insertBlock())
-                          rewriter()
-                          rewriter()
-                      listener: handleInvalidFunctionBody({)
-                    listener: endClassMethod(null, operator, (, null, })
-                  listener: endMember()
-            notEofOrValue(}, 42)
-            parseClassOrMixinOrExtensionMemberImpl(}, DeclarationKind.Class, WrapperClass)
-              parseMetadataStar(})
-                listener: beginMetadataStar(42)
-                listener: endMetadataStar(0)
-              listener: beginMember()
-              recoverFromInvalidMember(}, }, null, null, null, null, null, }, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
-                reportRecoverableErrorWithToken(42, Instance of 'Template<(Token) => Message>')
-                  listener: handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got '42'., null, {token: 42}], 42, 42)
-                listener: handleInvalidMember(42)
-                listener: endMember()
-            notEofOrValue(}, ;)
-            parseClassOrMixinOrExtensionMemberImpl(42, DeclarationKind.Class, WrapperClass)
-              parseMetadataStar(42)
-                listener: beginMetadataStar(;)
-                listener: endMetadataStar(0)
-              listener: beginMember()
-              recoverFromInvalidMember(42, 42, null, null, null, null, null, 42, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
-                reportRecoverableErrorWithToken(;, Instance of 'Template<(Token) => Message>')
-                  listener: handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got ';'., null, {token: ;}], ;, ;)
-                listener: handleInvalidMember(;)
-                listener: endMember()
             notEofOrValue(}, int)
             parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
               parseMetadataStar(;)
                 listener: beginMetadataStar(int)
                 listener: endMetadataStar(0)
               listener: beginMember()
-              parseFields(;, null, null, null, null, null, ;, Instance of 'NoType', int, DeclarationKind.Class, WrapperClass)
-                reportRecoverableError(int, MissingConstFinalVarOrType)
-                  listener: handleRecoverableError(MissingConstFinalVarOrType, int, int)
-                listener: handleNoType(;)
-                ensureIdentifier(;, fieldDeclaration)
-                  listener: handleIdentifier(int, fieldDeclaration)
-                parseFieldInitializerOpt(int, int, null, null, DeclarationKind.Class, WrapperClass)
-                  listener: handleNoFieldInitializer(switch)
-                ensureSemicolon(int)
-                  reportRecoverableError(int, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
-                    listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
-                  rewriter()
+              isReservedKeyword(switch)
+              indicatesMethodOrField(=)
+              parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', switch, DeclarationKind.Class, WrapperClass, true)
+                listener: handleIdentifier(int, typeReference)
+                listener: handleNoTypeArguments(switch)
+                listener: handleType(int, null)
+                ensureIdentifierPotentiallyRecovered(int, fieldDeclaration, true)
+                  reportRecoverableErrorWithToken(switch, Instance of 'Template<(Token) => Message>')
+                    listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'switch'., null, {token: switch}], switch, switch)
+                  listener: handleIdentifier(switch, fieldDeclaration)
+                parseFieldInitializerOpt(switch, switch, null, null, DeclarationKind.Class, WrapperClass)
+                  listener: beginFieldInitializer(=)
+                  parseExpression(=)
+                    parsePrecedenceExpression(=, 1, true)
+                      parseUnaryExpression(=, true)
+                        parsePrimary(=, expression)
+                          parseLiteralInt(=)
+                            listener: handleLiteralInt(42)
+                  listener: endFieldInitializer(=, ;)
                 listener: endClassFields(null, null, null, null, 1, int, ;)
               listener: endMember()
-            notEofOrValue(}, switch)
-            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
-              parseMetadataStar(;)
-                listener: beginMetadataStar(switch)
-                listener: endMetadataStar(0)
-              listener: beginMember()
-              recoverFromInvalidMember(;, ;, null, null, null, null, null, ;, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
-                reportRecoverableErrorWithToken(switch, Instance of 'Template<(Token) => Message>')
-                  listener: handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got 'switch'., null, {token: switch}], switch, switch)
-                listener: handleInvalidMember(switch)
-                listener: endMember()
-            notEofOrValue(}, =)
-            parseClassOrMixinOrExtensionMemberImpl(switch, DeclarationKind.Class, WrapperClass)
-              parseMetadataStar(switch)
-                listener: beginMetadataStar(=)
-                listener: endMetadataStar(0)
-              listener: beginMember()
-              recoverFromInvalidMember(switch, switch, null, null, null, null, null, switch, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
-                parseInvalidOperatorDeclaration(switch, null, null, null, null, null, switch, DeclarationKind.Class, WrapperClass)
-                  reportRecoverableError(=, MissingOperatorKeyword)
-                    listener: handleRecoverableError(MissingOperatorKeyword, =, =)
-                  rewriter()
-                  parseMethod(switch, null, null, null, null, null, switch, Instance of 'NoType', null, operator, DeclarationKind.Class, WrapperClass)
-                    listener: beginMethod(null, null, null, null, null, operator)
-                    listener: handleNoType(switch)
-                    parseOperatorName(switch)
-                      isUnaryMinus(=)
-                      reportRecoverableErrorWithToken(=, Instance of 'Template<(Token) => Message>')
-                        listener: handleRecoverableError(Message[InvalidOperator, The string '=' isn't a user-definable operator., null, {token: =}], =, =)
-                      listener: handleInvalidOperatorName(operator, =)
-                    parseMethodTypeVar(=)
-                      listener: handleNoTypeVariables(42)
-                    parseGetterOrFormalParameters(=, operator, false, MemberKind.NonStaticMethod)
-                      missingParameterMessage(MemberKind.NonStaticMethod)
-                      reportRecoverableError(=, MissingMethodParameters)
-                        listener: handleRecoverableError(MissingMethodParameters, =, =)
-                      rewriter()
-                      parseFormalParametersRest((, MemberKind.NonStaticMethod)
-                        listener: beginFormalParameters((, MemberKind.NonStaticMethod)
-                        listener: endFormalParameters(0, (, ), MemberKind.NonStaticMethod)
-                    parseInitializersOpt())
-                      listener: handleNoInitializers()
-                    parseAsyncModifierOpt())
-                      listener: handleAsyncModifier(null, null)
-                      inPlainSync()
-                    inPlainSync()
-                    parseFunctionBody(), false, true)
-                      ensureBlock(), Instance of 'Template<(Token) => Message>', null)
-                        reportRecoverableError(42, Message[ExpectedFunctionBody, Expected a function body, but got '42'., null, {token: 42}])
-                          listener: handleRecoverableError(Message[ExpectedFunctionBody, Expected a function body, but got '42'., null, {token: 42}], 42, 42)
-                        insertBlock())
-                          rewriter()
-                          rewriter()
-                      listener: handleInvalidFunctionBody({)
-                    listener: endClassMethod(null, operator, (, null, })
-                  listener: endMember()
-            notEofOrValue(}, 42)
-            parseClassOrMixinOrExtensionMemberImpl(}, DeclarationKind.Class, WrapperClass)
-              parseMetadataStar(})
-                listener: beginMetadataStar(42)
-                listener: endMetadataStar(0)
-              listener: beginMember()
-              recoverFromInvalidMember(}, }, null, null, null, null, null, }, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
-                reportRecoverableErrorWithToken(42, Instance of 'Template<(Token) => Message>')
-                  listener: handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got '42'., null, {token: 42}], 42, 42)
-                listener: handleInvalidMember(42)
-                listener: endMember()
-            notEofOrValue(}, ;)
-            parseClassOrMixinOrExtensionMemberImpl(42, DeclarationKind.Class, WrapperClass)
-              parseMetadataStar(42)
-                listener: beginMetadataStar(;)
-                listener: endMetadataStar(0)
-              listener: beginMember()
-              recoverFromInvalidMember(42, 42, null, null, null, null, null, 42, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
-                reportRecoverableErrorWithToken(;, Instance of 'Template<(Token) => Message>')
-                  listener: handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got ';'., null, {token: ;}], ;, ;)
-                listener: handleInvalidMember(;)
-                listener: endMember()
             notEofOrValue(}, int)
             parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
               parseMetadataStar(;)
@@ -2465,11 +708,11 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               recoverFromInvalidMember(int, ;, null, null, null, null, null, ;, Instance of 'SimpleType', null, DeclarationKind.Class, WrapperClass)
-                parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', this, DeclarationKind.Class, WrapperClass)
+                parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', this, DeclarationKind.Class, WrapperClass, false)
                   listener: handleIdentifier(int, typeReference)
                   listener: handleNoTypeArguments(this)
                   listener: handleType(int, null)
-                  ensureIdentifier(int, fieldDeclaration)
+                  ensureIdentifierPotentiallyRecovered(int, fieldDeclaration, false)
                     reportRecoverableErrorWithToken(this, Instance of 'Template<(Token) => Message>')
                       listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'this'., null, {token: this}], this, this)
                     listener: handleIdentifier(this, fieldDeclaration)
@@ -2490,668 +733,191 @@
                 listener: beginMetadataStar(int)
                 listener: endMetadataStar(0)
               listener: beginMember()
-              parseFields(;, null, null, null, null, null, ;, Instance of 'NoType', int, DeclarationKind.Class, WrapperClass)
-                reportRecoverableError(int, MissingConstFinalVarOrType)
-                  listener: handleRecoverableError(MissingConstFinalVarOrType, int, int)
-                listener: handleNoType(;)
-                ensureIdentifier(;, fieldDeclaration)
-                  listener: handleIdentifier(int, fieldDeclaration)
-                parseFieldInitializerOpt(int, int, null, null, DeclarationKind.Class, WrapperClass)
-                  listener: handleNoFieldInitializer(throw)
-                ensureSemicolon(int)
-                  reportRecoverableError(int, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
-                    listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
-                  rewriter()
+              isReservedKeyword(throw)
+              indicatesMethodOrField(=)
+              parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', throw, DeclarationKind.Class, WrapperClass, true)
+                listener: handleIdentifier(int, typeReference)
+                listener: handleNoTypeArguments(throw)
+                listener: handleType(int, null)
+                ensureIdentifierPotentiallyRecovered(int, fieldDeclaration, true)
+                  reportRecoverableErrorWithToken(throw, Instance of 'Template<(Token) => Message>')
+                    listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'throw'., null, {token: throw}], throw, throw)
+                  listener: handleIdentifier(throw, fieldDeclaration)
+                parseFieldInitializerOpt(throw, throw, null, null, DeclarationKind.Class, WrapperClass)
+                  listener: beginFieldInitializer(=)
+                  parseExpression(=)
+                    parsePrecedenceExpression(=, 1, true)
+                      parseUnaryExpression(=, true)
+                        parsePrimary(=, expression)
+                          parseLiteralInt(=)
+                            listener: handleLiteralInt(42)
+                  listener: endFieldInitializer(=, ;)
                 listener: endClassFields(null, null, null, null, 1, int, ;)
               listener: endMember()
-            notEofOrValue(}, throw)
-            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
-              parseMetadataStar(;)
-                listener: beginMetadataStar(throw)
-                listener: endMetadataStar(0)
-              listener: beginMember()
-              recoverFromInvalidMember(;, ;, null, null, null, null, null, ;, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
-                reportRecoverableErrorWithToken(throw, Instance of 'Template<(Token) => Message>')
-                  listener: handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got 'throw'., null, {token: throw}], throw, throw)
-                listener: handleInvalidMember(throw)
-                listener: endMember()
-            notEofOrValue(}, =)
-            parseClassOrMixinOrExtensionMemberImpl(throw, DeclarationKind.Class, WrapperClass)
-              parseMetadataStar(throw)
-                listener: beginMetadataStar(=)
-                listener: endMetadataStar(0)
-              listener: beginMember()
-              recoverFromInvalidMember(throw, throw, null, null, null, null, null, throw, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
-                parseInvalidOperatorDeclaration(throw, null, null, null, null, null, throw, DeclarationKind.Class, WrapperClass)
-                  reportRecoverableError(=, MissingOperatorKeyword)
-                    listener: handleRecoverableError(MissingOperatorKeyword, =, =)
-                  rewriter()
-                  parseMethod(throw, null, null, null, null, null, throw, Instance of 'NoType', null, operator, DeclarationKind.Class, WrapperClass)
-                    listener: beginMethod(null, null, null, null, null, operator)
-                    listener: handleNoType(throw)
-                    parseOperatorName(throw)
-                      isUnaryMinus(=)
-                      reportRecoverableErrorWithToken(=, Instance of 'Template<(Token) => Message>')
-                        listener: handleRecoverableError(Message[InvalidOperator, The string '=' isn't a user-definable operator., null, {token: =}], =, =)
-                      listener: handleInvalidOperatorName(operator, =)
-                    parseMethodTypeVar(=)
-                      listener: handleNoTypeVariables(42)
-                    parseGetterOrFormalParameters(=, operator, false, MemberKind.NonStaticMethod)
-                      missingParameterMessage(MemberKind.NonStaticMethod)
-                      reportRecoverableError(=, MissingMethodParameters)
-                        listener: handleRecoverableError(MissingMethodParameters, =, =)
-                      rewriter()
-                      parseFormalParametersRest((, MemberKind.NonStaticMethod)
-                        listener: beginFormalParameters((, MemberKind.NonStaticMethod)
-                        listener: endFormalParameters(0, (, ), MemberKind.NonStaticMethod)
-                    parseInitializersOpt())
-                      listener: handleNoInitializers()
-                    parseAsyncModifierOpt())
-                      listener: handleAsyncModifier(null, null)
-                      inPlainSync()
-                    inPlainSync()
-                    parseFunctionBody(), false, true)
-                      ensureBlock(), Instance of 'Template<(Token) => Message>', null)
-                        reportRecoverableError(42, Message[ExpectedFunctionBody, Expected a function body, but got '42'., null, {token: 42}])
-                          listener: handleRecoverableError(Message[ExpectedFunctionBody, Expected a function body, but got '42'., null, {token: 42}], 42, 42)
-                        insertBlock())
-                          rewriter()
-                          rewriter()
-                      listener: handleInvalidFunctionBody({)
-                    listener: endClassMethod(null, operator, (, null, })
-                  listener: endMember()
-            notEofOrValue(}, 42)
-            parseClassOrMixinOrExtensionMemberImpl(}, DeclarationKind.Class, WrapperClass)
-              parseMetadataStar(})
-                listener: beginMetadataStar(42)
-                listener: endMetadataStar(0)
-              listener: beginMember()
-              recoverFromInvalidMember(}, }, null, null, null, null, null, }, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
-                reportRecoverableErrorWithToken(42, Instance of 'Template<(Token) => Message>')
-                  listener: handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got '42'., null, {token: 42}], 42, 42)
-                listener: handleInvalidMember(42)
-                listener: endMember()
-            notEofOrValue(}, ;)
-            parseClassOrMixinOrExtensionMemberImpl(42, DeclarationKind.Class, WrapperClass)
-              parseMetadataStar(42)
-                listener: beginMetadataStar(;)
-                listener: endMetadataStar(0)
-              listener: beginMember()
-              recoverFromInvalidMember(42, 42, null, null, null, null, null, 42, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
-                reportRecoverableErrorWithToken(;, Instance of 'Template<(Token) => Message>')
-                  listener: handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got ';'., null, {token: ;}], ;, ;)
-                listener: handleInvalidMember(;)
-                listener: endMember()
             notEofOrValue(}, int)
             parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
               parseMetadataStar(;)
                 listener: beginMetadataStar(int)
                 listener: endMetadataStar(0)
               listener: beginMember()
-              parseFields(;, null, null, null, null, null, ;, Instance of 'NoType', int, DeclarationKind.Class, WrapperClass)
-                reportRecoverableError(int, MissingConstFinalVarOrType)
-                  listener: handleRecoverableError(MissingConstFinalVarOrType, int, int)
-                listener: handleNoType(;)
-                ensureIdentifier(;, fieldDeclaration)
-                  listener: handleIdentifier(int, fieldDeclaration)
-                parseFieldInitializerOpt(int, int, null, null, DeclarationKind.Class, WrapperClass)
-                  listener: handleNoFieldInitializer(true)
-                ensureSemicolon(int)
-                  reportRecoverableError(int, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
-                    listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
-                  rewriter()
+              isReservedKeyword(true)
+              indicatesMethodOrField(=)
+              parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', true, DeclarationKind.Class, WrapperClass, true)
+                listener: handleIdentifier(int, typeReference)
+                listener: handleNoTypeArguments(true)
+                listener: handleType(int, null)
+                ensureIdentifierPotentiallyRecovered(int, fieldDeclaration, true)
+                  reportRecoverableErrorWithToken(true, Instance of 'Template<(Token) => Message>')
+                    listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'true'., null, {token: true}], true, true)
+                  listener: handleIdentifier(true, fieldDeclaration)
+                parseFieldInitializerOpt(true, true, null, null, DeclarationKind.Class, WrapperClass)
+                  listener: beginFieldInitializer(=)
+                  parseExpression(=)
+                    parsePrecedenceExpression(=, 1, true)
+                      parseUnaryExpression(=, true)
+                        parsePrimary(=, expression)
+                          parseLiteralInt(=)
+                            listener: handleLiteralInt(42)
+                  listener: endFieldInitializer(=, ;)
                 listener: endClassFields(null, null, null, null, 1, int, ;)
               listener: endMember()
-            notEofOrValue(}, true)
-            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
-              parseMetadataStar(;)
-                listener: beginMetadataStar(true)
-                listener: endMetadataStar(0)
-              listener: beginMember()
-              recoverFromInvalidMember(;, ;, null, null, null, null, null, ;, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
-                reportRecoverableErrorWithToken(true, Instance of 'Template<(Token) => Message>')
-                  listener: handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got 'true'., null, {token: true}], true, true)
-                listener: handleInvalidMember(true)
-                listener: endMember()
-            notEofOrValue(}, =)
-            parseClassOrMixinOrExtensionMemberImpl(true, DeclarationKind.Class, WrapperClass)
-              parseMetadataStar(true)
-                listener: beginMetadataStar(=)
-                listener: endMetadataStar(0)
-              listener: beginMember()
-              recoverFromInvalidMember(true, true, null, null, null, null, null, true, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
-                parseInvalidOperatorDeclaration(true, null, null, null, null, null, true, DeclarationKind.Class, WrapperClass)
-                  reportRecoverableError(=, MissingOperatorKeyword)
-                    listener: handleRecoverableError(MissingOperatorKeyword, =, =)
-                  rewriter()
-                  parseMethod(true, null, null, null, null, null, true, Instance of 'NoType', null, operator, DeclarationKind.Class, WrapperClass)
-                    listener: beginMethod(null, null, null, null, null, operator)
-                    listener: handleNoType(true)
-                    parseOperatorName(true)
-                      isUnaryMinus(=)
-                      reportRecoverableErrorWithToken(=, Instance of 'Template<(Token) => Message>')
-                        listener: handleRecoverableError(Message[InvalidOperator, The string '=' isn't a user-definable operator., null, {token: =}], =, =)
-                      listener: handleInvalidOperatorName(operator, =)
-                    parseMethodTypeVar(=)
-                      listener: handleNoTypeVariables(42)
-                    parseGetterOrFormalParameters(=, operator, false, MemberKind.NonStaticMethod)
-                      missingParameterMessage(MemberKind.NonStaticMethod)
-                      reportRecoverableError(=, MissingMethodParameters)
-                        listener: handleRecoverableError(MissingMethodParameters, =, =)
-                      rewriter()
-                      parseFormalParametersRest((, MemberKind.NonStaticMethod)
-                        listener: beginFormalParameters((, MemberKind.NonStaticMethod)
-                        listener: endFormalParameters(0, (, ), MemberKind.NonStaticMethod)
-                    parseInitializersOpt())
-                      listener: handleNoInitializers()
-                    parseAsyncModifierOpt())
-                      listener: handleAsyncModifier(null, null)
-                      inPlainSync()
-                    inPlainSync()
-                    parseFunctionBody(), false, true)
-                      ensureBlock(), Instance of 'Template<(Token) => Message>', null)
-                        reportRecoverableError(42, Message[ExpectedFunctionBody, Expected a function body, but got '42'., null, {token: 42}])
-                          listener: handleRecoverableError(Message[ExpectedFunctionBody, Expected a function body, but got '42'., null, {token: 42}], 42, 42)
-                        insertBlock())
-                          rewriter()
-                          rewriter()
-                      listener: handleInvalidFunctionBody({)
-                    listener: endClassMethod(null, operator, (, null, })
-                  listener: endMember()
-            notEofOrValue(}, 42)
-            parseClassOrMixinOrExtensionMemberImpl(}, DeclarationKind.Class, WrapperClass)
-              parseMetadataStar(})
-                listener: beginMetadataStar(42)
-                listener: endMetadataStar(0)
-              listener: beginMember()
-              recoverFromInvalidMember(}, }, null, null, null, null, null, }, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
-                reportRecoverableErrorWithToken(42, Instance of 'Template<(Token) => Message>')
-                  listener: handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got '42'., null, {token: 42}], 42, 42)
-                listener: handleInvalidMember(42)
-                listener: endMember()
-            notEofOrValue(}, ;)
-            parseClassOrMixinOrExtensionMemberImpl(42, DeclarationKind.Class, WrapperClass)
-              parseMetadataStar(42)
-                listener: beginMetadataStar(;)
-                listener: endMetadataStar(0)
-              listener: beginMember()
-              recoverFromInvalidMember(42, 42, null, null, null, null, null, 42, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
-                reportRecoverableErrorWithToken(;, Instance of 'Template<(Token) => Message>')
-                  listener: handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got ';'., null, {token: ;}], ;, ;)
-                listener: handleInvalidMember(;)
-                listener: endMember()
             notEofOrValue(}, int)
             parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
               parseMetadataStar(;)
                 listener: beginMetadataStar(int)
                 listener: endMetadataStar(0)
               listener: beginMember()
-              parseFields(;, null, null, null, null, null, ;, Instance of 'NoType', int, DeclarationKind.Class, WrapperClass)
-                reportRecoverableError(int, MissingConstFinalVarOrType)
-                  listener: handleRecoverableError(MissingConstFinalVarOrType, int, int)
-                listener: handleNoType(;)
-                ensureIdentifier(;, fieldDeclaration)
-                  listener: handleIdentifier(int, fieldDeclaration)
-                parseFieldInitializerOpt(int, int, null, null, DeclarationKind.Class, WrapperClass)
-                  listener: handleNoFieldInitializer(try)
-                ensureSemicolon(int)
-                  reportRecoverableError(int, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
-                    listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
-                  rewriter()
+              isReservedKeyword(try)
+              indicatesMethodOrField(=)
+              parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', try, DeclarationKind.Class, WrapperClass, true)
+                listener: handleIdentifier(int, typeReference)
+                listener: handleNoTypeArguments(try)
+                listener: handleType(int, null)
+                ensureIdentifierPotentiallyRecovered(int, fieldDeclaration, true)
+                  reportRecoverableErrorWithToken(try, Instance of 'Template<(Token) => Message>')
+                    listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'try'., null, {token: try}], try, try)
+                  listener: handleIdentifier(try, fieldDeclaration)
+                parseFieldInitializerOpt(try, try, null, null, DeclarationKind.Class, WrapperClass)
+                  listener: beginFieldInitializer(=)
+                  parseExpression(=)
+                    parsePrecedenceExpression(=, 1, true)
+                      parseUnaryExpression(=, true)
+                        parsePrimary(=, expression)
+                          parseLiteralInt(=)
+                            listener: handleLiteralInt(42)
+                  listener: endFieldInitializer(=, ;)
                 listener: endClassFields(null, null, null, null, 1, int, ;)
               listener: endMember()
-            notEofOrValue(}, try)
-            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
-              parseMetadataStar(;)
-                listener: beginMetadataStar(try)
-                listener: endMetadataStar(0)
-              listener: beginMember()
-              recoverFromInvalidMember(;, ;, null, null, null, null, null, ;, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
-                reportRecoverableErrorWithToken(try, Instance of 'Template<(Token) => Message>')
-                  listener: handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got 'try'., null, {token: try}], try, try)
-                listener: handleInvalidMember(try)
-                listener: endMember()
-            notEofOrValue(}, =)
-            parseClassOrMixinOrExtensionMemberImpl(try, DeclarationKind.Class, WrapperClass)
-              parseMetadataStar(try)
-                listener: beginMetadataStar(=)
-                listener: endMetadataStar(0)
-              listener: beginMember()
-              recoverFromInvalidMember(try, try, null, null, null, null, null, try, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
-                parseInvalidOperatorDeclaration(try, null, null, null, null, null, try, DeclarationKind.Class, WrapperClass)
-                  reportRecoverableError(=, MissingOperatorKeyword)
-                    listener: handleRecoverableError(MissingOperatorKeyword, =, =)
-                  rewriter()
-                  parseMethod(try, null, null, null, null, null, try, Instance of 'NoType', null, operator, DeclarationKind.Class, WrapperClass)
-                    listener: beginMethod(null, null, null, null, null, operator)
-                    listener: handleNoType(try)
-                    parseOperatorName(try)
-                      isUnaryMinus(=)
-                      reportRecoverableErrorWithToken(=, Instance of 'Template<(Token) => Message>')
-                        listener: handleRecoverableError(Message[InvalidOperator, The string '=' isn't a user-definable operator., null, {token: =}], =, =)
-                      listener: handleInvalidOperatorName(operator, =)
-                    parseMethodTypeVar(=)
-                      listener: handleNoTypeVariables(42)
-                    parseGetterOrFormalParameters(=, operator, false, MemberKind.NonStaticMethod)
-                      missingParameterMessage(MemberKind.NonStaticMethod)
-                      reportRecoverableError(=, MissingMethodParameters)
-                        listener: handleRecoverableError(MissingMethodParameters, =, =)
-                      rewriter()
-                      parseFormalParametersRest((, MemberKind.NonStaticMethod)
-                        listener: beginFormalParameters((, MemberKind.NonStaticMethod)
-                        listener: endFormalParameters(0, (, ), MemberKind.NonStaticMethod)
-                    parseInitializersOpt())
-                      listener: handleNoInitializers()
-                    parseAsyncModifierOpt())
-                      listener: handleAsyncModifier(null, null)
-                      inPlainSync()
-                    inPlainSync()
-                    parseFunctionBody(), false, true)
-                      ensureBlock(), Instance of 'Template<(Token) => Message>', null)
-                        reportRecoverableError(42, Message[ExpectedFunctionBody, Expected a function body, but got '42'., null, {token: 42}])
-                          listener: handleRecoverableError(Message[ExpectedFunctionBody, Expected a function body, but got '42'., null, {token: 42}], 42, 42)
-                        insertBlock())
-                          rewriter()
-                          rewriter()
-                      listener: handleInvalidFunctionBody({)
-                    listener: endClassMethod(null, operator, (, null, })
-                  listener: endMember()
-            notEofOrValue(}, 42)
-            parseClassOrMixinOrExtensionMemberImpl(}, DeclarationKind.Class, WrapperClass)
-              parseMetadataStar(})
-                listener: beginMetadataStar(42)
-                listener: endMetadataStar(0)
-              listener: beginMember()
-              recoverFromInvalidMember(}, }, null, null, null, null, null, }, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
-                reportRecoverableErrorWithToken(42, Instance of 'Template<(Token) => Message>')
-                  listener: handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got '42'., null, {token: 42}], 42, 42)
-                listener: handleInvalidMember(42)
-                listener: endMember()
-            notEofOrValue(}, ;)
-            parseClassOrMixinOrExtensionMemberImpl(42, DeclarationKind.Class, WrapperClass)
-              parseMetadataStar(42)
-                listener: beginMetadataStar(;)
-                listener: endMetadataStar(0)
-              listener: beginMember()
-              recoverFromInvalidMember(42, 42, null, null, null, null, null, 42, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
-                reportRecoverableErrorWithToken(;, Instance of 'Template<(Token) => Message>')
-                  listener: handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got ';'., null, {token: ;}], ;, ;)
-                listener: handleInvalidMember(;)
-                listener: endMember()
             notEofOrValue(}, int)
             parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
               parseMetadataStar(;)
                 listener: beginMetadataStar(int)
                 listener: endMetadataStar(0)
               listener: beginMember()
-              parseFields(;, null, null, null, null, null, ;, Instance of 'NoType', int, DeclarationKind.Class, WrapperClass)
-                reportRecoverableError(int, MissingConstFinalVarOrType)
-                  listener: handleRecoverableError(MissingConstFinalVarOrType, int, int)
-                listener: handleNoType(;)
-                ensureIdentifier(;, fieldDeclaration)
-                  listener: handleIdentifier(int, fieldDeclaration)
-                parseFieldInitializerOpt(int, int, null, null, DeclarationKind.Class, WrapperClass)
-                  listener: handleNoFieldInitializer(var)
-                ensureSemicolon(int)
-                  reportRecoverableError(int, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
-                    listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
-                  rewriter()
+              isReservedKeyword(var)
+              indicatesMethodOrField(=)
+              parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', var, DeclarationKind.Class, WrapperClass, true)
+                listener: handleIdentifier(int, typeReference)
+                listener: handleNoTypeArguments(var)
+                listener: handleType(int, null)
+                ensureIdentifierPotentiallyRecovered(int, fieldDeclaration, true)
+                  reportRecoverableErrorWithToken(var, Instance of 'Template<(Token) => Message>')
+                    listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'var'., null, {token: var}], var, var)
+                  listener: handleIdentifier(var, fieldDeclaration)
+                parseFieldInitializerOpt(var, var, null, null, DeclarationKind.Class, WrapperClass)
+                  listener: beginFieldInitializer(=)
+                  parseExpression(=)
+                    parsePrecedenceExpression(=, 1, true)
+                      parseUnaryExpression(=, true)
+                        parsePrimary(=, expression)
+                          parseLiteralInt(=)
+                            listener: handleLiteralInt(42)
+                  listener: endFieldInitializer(=, ;)
                 listener: endClassFields(null, null, null, null, 1, int, ;)
               listener: endMember()
-            notEofOrValue(}, var)
-            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
-              parseMetadataStar(;)
-                listener: beginMetadataStar(var)
-                listener: endMetadataStar(0)
-              listener: beginMember()
-              recoverFromInvalidMember(var, ;, null, null, null, null, var, var, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
-                parseInvalidOperatorDeclaration(;, null, null, null, null, var, var, DeclarationKind.Class, WrapperClass)
-                  reportRecoverableError(=, MissingOperatorKeyword)
-                    listener: handleRecoverableError(MissingOperatorKeyword, =, =)
-                  rewriter()
-                  parseMethod(;, null, null, null, null, var, var, Instance of 'NoType', null, operator, DeclarationKind.Class, WrapperClass)
-                    reportRecoverableError(var, VarReturnType)
-                      listener: handleRecoverableError(VarReturnType, var, var)
-                    listener: beginMethod(null, null, null, null, null, operator)
-                    listener: handleNoType(var)
-                    parseOperatorName(var)
-                      isUnaryMinus(=)
-                      reportRecoverableErrorWithToken(=, Instance of 'Template<(Token) => Message>')
-                        listener: handleRecoverableError(Message[InvalidOperator, The string '=' isn't a user-definable operator., null, {token: =}], =, =)
-                      listener: handleInvalidOperatorName(operator, =)
-                    parseMethodTypeVar(=)
-                      listener: handleNoTypeVariables(42)
-                    parseGetterOrFormalParameters(=, operator, false, MemberKind.NonStaticMethod)
-                      missingParameterMessage(MemberKind.NonStaticMethod)
-                      reportRecoverableError(=, MissingMethodParameters)
-                        listener: handleRecoverableError(MissingMethodParameters, =, =)
-                      rewriter()
-                      parseFormalParametersRest((, MemberKind.NonStaticMethod)
-                        listener: beginFormalParameters((, MemberKind.NonStaticMethod)
-                        listener: endFormalParameters(0, (, ), MemberKind.NonStaticMethod)
-                    parseInitializersOpt())
-                      listener: handleNoInitializers()
-                    parseAsyncModifierOpt())
-                      listener: handleAsyncModifier(null, null)
-                      inPlainSync()
-                    inPlainSync()
-                    parseFunctionBody(), false, true)
-                      ensureBlock(), Instance of 'Template<(Token) => Message>', null)
-                        reportRecoverableError(42, Message[ExpectedFunctionBody, Expected a function body, but got '42'., null, {token: 42}])
-                          listener: handleRecoverableError(Message[ExpectedFunctionBody, Expected a function body, but got '42'., null, {token: 42}], 42, 42)
-                        insertBlock())
-                          rewriter()
-                          rewriter()
-                      listener: handleInvalidFunctionBody({)
-                    listener: endClassMethod(null, var, (, null, })
-                  listener: endMember()
-            notEofOrValue(}, 42)
-            parseClassOrMixinOrExtensionMemberImpl(}, DeclarationKind.Class, WrapperClass)
-              parseMetadataStar(})
-                listener: beginMetadataStar(42)
-                listener: endMetadataStar(0)
-              listener: beginMember()
-              recoverFromInvalidMember(}, }, null, null, null, null, null, }, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
-                reportRecoverableErrorWithToken(42, Instance of 'Template<(Token) => Message>')
-                  listener: handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got '42'., null, {token: 42}], 42, 42)
-                listener: handleInvalidMember(42)
-                listener: endMember()
-            notEofOrValue(}, ;)
-            parseClassOrMixinOrExtensionMemberImpl(42, DeclarationKind.Class, WrapperClass)
-              parseMetadataStar(42)
-                listener: beginMetadataStar(;)
-                listener: endMetadataStar(0)
-              listener: beginMember()
-              recoverFromInvalidMember(42, 42, null, null, null, null, null, 42, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
-                reportRecoverableErrorWithToken(;, Instance of 'Template<(Token) => Message>')
-                  listener: handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got ';'., null, {token: ;}], ;, ;)
-                listener: handleInvalidMember(;)
-                listener: endMember()
             notEofOrValue(}, int)
             parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
               parseMetadataStar(;)
                 listener: beginMetadataStar(int)
                 listener: endMetadataStar(0)
               listener: beginMember()
-              parseFields(;, null, null, null, null, null, ;, Instance of 'NoType', int, DeclarationKind.Class, WrapperClass)
-                reportRecoverableError(int, MissingConstFinalVarOrType)
-                  listener: handleRecoverableError(MissingConstFinalVarOrType, int, int)
-                listener: handleNoType(;)
-                ensureIdentifier(;, fieldDeclaration)
-                  listener: handleIdentifier(int, fieldDeclaration)
-                parseFieldInitializerOpt(int, int, null, null, DeclarationKind.Class, WrapperClass)
-                  listener: handleNoFieldInitializer(void)
-                ensureSemicolon(int)
-                  reportRecoverableError(int, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
-                    listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
-                  rewriter()
+              isReservedKeyword(void)
+              indicatesMethodOrField(=)
+              parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', void, DeclarationKind.Class, WrapperClass, true)
+                listener: handleIdentifier(int, typeReference)
+                listener: handleNoTypeArguments(void)
+                listener: handleType(int, null)
+                ensureIdentifierPotentiallyRecovered(int, fieldDeclaration, true)
+                  reportRecoverableErrorWithToken(void, Instance of 'Template<(Token) => Message>')
+                    listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'void'., null, {token: void}], void, void)
+                  listener: handleIdentifier(void, fieldDeclaration)
+                parseFieldInitializerOpt(void, void, null, null, DeclarationKind.Class, WrapperClass)
+                  listener: beginFieldInitializer(=)
+                  parseExpression(=)
+                    parsePrecedenceExpression(=, 1, true)
+                      parseUnaryExpression(=, true)
+                        parsePrimary(=, expression)
+                          parseLiteralInt(=)
+                            listener: handleLiteralInt(42)
+                  listener: endFieldInitializer(=, ;)
                 listener: endClassFields(null, null, null, null, 1, int, ;)
               listener: endMember()
-            notEofOrValue(}, void)
-            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
-              parseMetadataStar(;)
-                listener: beginMetadataStar(void)
-                listener: endMetadataStar(0)
-              listener: beginMember()
-              recoverFromInvalidMember(void, ;, null, null, null, null, null, ;, Instance of 'VoidType', null, DeclarationKind.Class, WrapperClass)
-                parseInvalidOperatorDeclaration(;, null, null, null, null, null, ;, DeclarationKind.Class, WrapperClass)
-                  reportRecoverableError(=, MissingOperatorKeyword)
-                    listener: handleRecoverableError(MissingOperatorKeyword, =, =)
-                  rewriter()
-                  parseMethod(;, null, null, null, null, null, ;, Instance of 'VoidType', null, operator, DeclarationKind.Class, WrapperClass)
-                    listener: beginMethod(null, null, null, null, null, operator)
-                    listener: handleVoidKeyword(void)
-                    parseOperatorName(void)
-                      isUnaryMinus(=)
-                      reportRecoverableErrorWithToken(=, Instance of 'Template<(Token) => Message>')
-                        listener: handleRecoverableError(Message[InvalidOperator, The string '=' isn't a user-definable operator., null, {token: =}], =, =)
-                      listener: handleInvalidOperatorName(operator, =)
-                    parseMethodTypeVar(=)
-                      listener: handleNoTypeVariables(42)
-                    parseGetterOrFormalParameters(=, operator, false, MemberKind.NonStaticMethod)
-                      missingParameterMessage(MemberKind.NonStaticMethod)
-                      reportRecoverableError(=, MissingMethodParameters)
-                        listener: handleRecoverableError(MissingMethodParameters, =, =)
-                      rewriter()
-                      parseFormalParametersRest((, MemberKind.NonStaticMethod)
-                        listener: beginFormalParameters((, MemberKind.NonStaticMethod)
-                        listener: endFormalParameters(0, (, ), MemberKind.NonStaticMethod)
-                    parseInitializersOpt())
-                      listener: handleNoInitializers()
-                    parseAsyncModifierOpt())
-                      listener: handleAsyncModifier(null, null)
-                      inPlainSync()
-                    inPlainSync()
-                    parseFunctionBody(), false, true)
-                      ensureBlock(), Instance of 'Template<(Token) => Message>', null)
-                        reportRecoverableError(42, Message[ExpectedFunctionBody, Expected a function body, but got '42'., null, {token: 42}])
-                          listener: handleRecoverableError(Message[ExpectedFunctionBody, Expected a function body, but got '42'., null, {token: 42}], 42, 42)
-                        insertBlock())
-                          rewriter()
-                          rewriter()
-                      listener: handleInvalidFunctionBody({)
-                    listener: endClassMethod(null, void, (, null, })
-                  listener: endMember()
-            notEofOrValue(}, 42)
-            parseClassOrMixinOrExtensionMemberImpl(}, DeclarationKind.Class, WrapperClass)
-              parseMetadataStar(})
-                listener: beginMetadataStar(42)
-                listener: endMetadataStar(0)
-              listener: beginMember()
-              recoverFromInvalidMember(}, }, null, null, null, null, null, }, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
-                reportRecoverableErrorWithToken(42, Instance of 'Template<(Token) => Message>')
-                  listener: handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got '42'., null, {token: 42}], 42, 42)
-                listener: handleInvalidMember(42)
-                listener: endMember()
-            notEofOrValue(}, ;)
-            parseClassOrMixinOrExtensionMemberImpl(42, DeclarationKind.Class, WrapperClass)
-              parseMetadataStar(42)
-                listener: beginMetadataStar(;)
-                listener: endMetadataStar(0)
-              listener: beginMember()
-              recoverFromInvalidMember(42, 42, null, null, null, null, null, 42, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
-                reportRecoverableErrorWithToken(;, Instance of 'Template<(Token) => Message>')
-                  listener: handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got ';'., null, {token: ;}], ;, ;)
-                listener: handleInvalidMember(;)
-                listener: endMember()
             notEofOrValue(}, int)
             parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
               parseMetadataStar(;)
                 listener: beginMetadataStar(int)
                 listener: endMetadataStar(0)
               listener: beginMember()
-              parseFields(;, null, null, null, null, null, ;, Instance of 'NoType', int, DeclarationKind.Class, WrapperClass)
-                reportRecoverableError(int, MissingConstFinalVarOrType)
-                  listener: handleRecoverableError(MissingConstFinalVarOrType, int, int)
-                listener: handleNoType(;)
-                ensureIdentifier(;, fieldDeclaration)
-                  listener: handleIdentifier(int, fieldDeclaration)
-                parseFieldInitializerOpt(int, int, null, null, DeclarationKind.Class, WrapperClass)
-                  listener: handleNoFieldInitializer(while)
-                ensureSemicolon(int)
-                  reportRecoverableError(int, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
-                    listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
-                  rewriter()
+              isReservedKeyword(while)
+              indicatesMethodOrField(=)
+              parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', while, DeclarationKind.Class, WrapperClass, true)
+                listener: handleIdentifier(int, typeReference)
+                listener: handleNoTypeArguments(while)
+                listener: handleType(int, null)
+                ensureIdentifierPotentiallyRecovered(int, fieldDeclaration, true)
+                  reportRecoverableErrorWithToken(while, Instance of 'Template<(Token) => Message>')
+                    listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'while'., null, {token: while}], while, while)
+                  listener: handleIdentifier(while, fieldDeclaration)
+                parseFieldInitializerOpt(while, while, null, null, DeclarationKind.Class, WrapperClass)
+                  listener: beginFieldInitializer(=)
+                  parseExpression(=)
+                    parsePrecedenceExpression(=, 1, true)
+                      parseUnaryExpression(=, true)
+                        parsePrimary(=, expression)
+                          parseLiteralInt(=)
+                            listener: handleLiteralInt(42)
+                  listener: endFieldInitializer(=, ;)
                 listener: endClassFields(null, null, null, null, 1, int, ;)
               listener: endMember()
-            notEofOrValue(}, while)
-            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
-              parseMetadataStar(;)
-                listener: beginMetadataStar(while)
-                listener: endMetadataStar(0)
-              listener: beginMember()
-              recoverFromInvalidMember(;, ;, null, null, null, null, null, ;, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
-                reportRecoverableErrorWithToken(while, Instance of 'Template<(Token) => Message>')
-                  listener: handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got 'while'., null, {token: while}], while, while)
-                listener: handleInvalidMember(while)
-                listener: endMember()
-            notEofOrValue(}, =)
-            parseClassOrMixinOrExtensionMemberImpl(while, DeclarationKind.Class, WrapperClass)
-              parseMetadataStar(while)
-                listener: beginMetadataStar(=)
-                listener: endMetadataStar(0)
-              listener: beginMember()
-              recoverFromInvalidMember(while, while, null, null, null, null, null, while, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
-                parseInvalidOperatorDeclaration(while, null, null, null, null, null, while, DeclarationKind.Class, WrapperClass)
-                  reportRecoverableError(=, MissingOperatorKeyword)
-                    listener: handleRecoverableError(MissingOperatorKeyword, =, =)
-                  rewriter()
-                  parseMethod(while, null, null, null, null, null, while, Instance of 'NoType', null, operator, DeclarationKind.Class, WrapperClass)
-                    listener: beginMethod(null, null, null, null, null, operator)
-                    listener: handleNoType(while)
-                    parseOperatorName(while)
-                      isUnaryMinus(=)
-                      reportRecoverableErrorWithToken(=, Instance of 'Template<(Token) => Message>')
-                        listener: handleRecoverableError(Message[InvalidOperator, The string '=' isn't a user-definable operator., null, {token: =}], =, =)
-                      listener: handleInvalidOperatorName(operator, =)
-                    parseMethodTypeVar(=)
-                      listener: handleNoTypeVariables(42)
-                    parseGetterOrFormalParameters(=, operator, false, MemberKind.NonStaticMethod)
-                      missingParameterMessage(MemberKind.NonStaticMethod)
-                      reportRecoverableError(=, MissingMethodParameters)
-                        listener: handleRecoverableError(MissingMethodParameters, =, =)
-                      rewriter()
-                      parseFormalParametersRest((, MemberKind.NonStaticMethod)
-                        listener: beginFormalParameters((, MemberKind.NonStaticMethod)
-                        listener: endFormalParameters(0, (, ), MemberKind.NonStaticMethod)
-                    parseInitializersOpt())
-                      listener: handleNoInitializers()
-                    parseAsyncModifierOpt())
-                      listener: handleAsyncModifier(null, null)
-                      inPlainSync()
-                    inPlainSync()
-                    parseFunctionBody(), false, true)
-                      ensureBlock(), Instance of 'Template<(Token) => Message>', null)
-                        reportRecoverableError(42, Message[ExpectedFunctionBody, Expected a function body, but got '42'., null, {token: 42}])
-                          listener: handleRecoverableError(Message[ExpectedFunctionBody, Expected a function body, but got '42'., null, {token: 42}], 42, 42)
-                        insertBlock())
-                          rewriter()
-                          rewriter()
-                      listener: handleInvalidFunctionBody({)
-                    listener: endClassMethod(null, operator, (, null, })
-                  listener: endMember()
-            notEofOrValue(}, 42)
-            parseClassOrMixinOrExtensionMemberImpl(}, DeclarationKind.Class, WrapperClass)
-              parseMetadataStar(})
-                listener: beginMetadataStar(42)
-                listener: endMetadataStar(0)
-              listener: beginMember()
-              recoverFromInvalidMember(}, }, null, null, null, null, null, }, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
-                reportRecoverableErrorWithToken(42, Instance of 'Template<(Token) => Message>')
-                  listener: handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got '42'., null, {token: 42}], 42, 42)
-                listener: handleInvalidMember(42)
-                listener: endMember()
-            notEofOrValue(}, ;)
-            parseClassOrMixinOrExtensionMemberImpl(42, DeclarationKind.Class, WrapperClass)
-              parseMetadataStar(42)
-                listener: beginMetadataStar(;)
-                listener: endMetadataStar(0)
-              listener: beginMember()
-              recoverFromInvalidMember(42, 42, null, null, null, null, null, 42, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
-                reportRecoverableErrorWithToken(;, Instance of 'Template<(Token) => Message>')
-                  listener: handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got ';'., null, {token: ;}], ;, ;)
-                listener: handleInvalidMember(;)
-                listener: endMember()
             notEofOrValue(}, int)
             parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
               parseMetadataStar(;)
                 listener: beginMetadataStar(int)
                 listener: endMetadataStar(0)
               listener: beginMember()
-              parseFields(;, null, null, null, null, null, ;, Instance of 'NoType', int, DeclarationKind.Class, WrapperClass)
-                reportRecoverableError(int, MissingConstFinalVarOrType)
-                  listener: handleRecoverableError(MissingConstFinalVarOrType, int, int)
-                listener: handleNoType(;)
-                ensureIdentifier(;, fieldDeclaration)
-                  listener: handleIdentifier(int, fieldDeclaration)
-                parseFieldInitializerOpt(int, int, null, null, DeclarationKind.Class, WrapperClass)
-                  listener: handleNoFieldInitializer(with)
-                ensureSemicolon(int)
-                  reportRecoverableError(int, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
-                    listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
-                  rewriter()
+              isReservedKeyword(with)
+              indicatesMethodOrField(=)
+              parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', with, DeclarationKind.Class, WrapperClass, true)
+                listener: handleIdentifier(int, typeReference)
+                listener: handleNoTypeArguments(with)
+                listener: handleType(int, null)
+                ensureIdentifierPotentiallyRecovered(int, fieldDeclaration, true)
+                  reportRecoverableErrorWithToken(with, Instance of 'Template<(Token) => Message>')
+                    listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'with'., null, {token: with}], with, with)
+                  listener: handleIdentifier(with, fieldDeclaration)
+                parseFieldInitializerOpt(with, with, null, null, DeclarationKind.Class, WrapperClass)
+                  listener: beginFieldInitializer(=)
+                  parseExpression(=)
+                    parsePrecedenceExpression(=, 1, true)
+                      parseUnaryExpression(=, true)
+                        parsePrimary(=, expression)
+                          parseLiteralInt(=)
+                            listener: handleLiteralInt(42)
+                  listener: endFieldInitializer(=, ;)
                 listener: endClassFields(null, null, null, null, 1, int, ;)
               listener: endMember()
-            notEofOrValue(}, with)
-            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
-              parseMetadataStar(;)
-                listener: beginMetadataStar(with)
-                listener: endMetadataStar(0)
-              listener: beginMember()
-              recoverFromInvalidMember(;, ;, null, null, null, null, null, ;, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
-                reportRecoverableErrorWithToken(with, Instance of 'Template<(Token) => Message>')
-                  listener: handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got 'with'., null, {token: with}], with, with)
-                listener: handleInvalidMember(with)
-                listener: endMember()
-            notEofOrValue(}, =)
-            parseClassOrMixinOrExtensionMemberImpl(with, DeclarationKind.Class, WrapperClass)
-              parseMetadataStar(with)
-                listener: beginMetadataStar(=)
-                listener: endMetadataStar(0)
-              listener: beginMember()
-              recoverFromInvalidMember(with, with, null, null, null, null, null, with, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
-                parseInvalidOperatorDeclaration(with, null, null, null, null, null, with, DeclarationKind.Class, WrapperClass)
-                  reportRecoverableError(=, MissingOperatorKeyword)
-                    listener: handleRecoverableError(MissingOperatorKeyword, =, =)
-                  rewriter()
-                  parseMethod(with, null, null, null, null, null, with, Instance of 'NoType', null, operator, DeclarationKind.Class, WrapperClass)
-                    listener: beginMethod(null, null, null, null, null, operator)
-                    listener: handleNoType(with)
-                    parseOperatorName(with)
-                      isUnaryMinus(=)
-                      reportRecoverableErrorWithToken(=, Instance of 'Template<(Token) => Message>')
-                        listener: handleRecoverableError(Message[InvalidOperator, The string '=' isn't a user-definable operator., null, {token: =}], =, =)
-                      listener: handleInvalidOperatorName(operator, =)
-                    parseMethodTypeVar(=)
-                      listener: handleNoTypeVariables(42)
-                    parseGetterOrFormalParameters(=, operator, false, MemberKind.NonStaticMethod)
-                      missingParameterMessage(MemberKind.NonStaticMethod)
-                      reportRecoverableError(=, MissingMethodParameters)
-                        listener: handleRecoverableError(MissingMethodParameters, =, =)
-                      rewriter()
-                      parseFormalParametersRest((, MemberKind.NonStaticMethod)
-                        listener: beginFormalParameters((, MemberKind.NonStaticMethod)
-                        listener: endFormalParameters(0, (, ), MemberKind.NonStaticMethod)
-                    parseInitializersOpt())
-                      listener: handleNoInitializers()
-                    parseAsyncModifierOpt())
-                      listener: handleAsyncModifier(null, null)
-                      inPlainSync()
-                    inPlainSync()
-                    parseFunctionBody(), false, true)
-                      ensureBlock(), Instance of 'Template<(Token) => Message>', null)
-                        reportRecoverableError(42, Message[ExpectedFunctionBody, Expected a function body, but got '42'., null, {token: 42}])
-                          listener: handleRecoverableError(Message[ExpectedFunctionBody, Expected a function body, but got '42'., null, {token: 42}], 42, 42)
-                        insertBlock())
-                          rewriter()
-                          rewriter()
-                      listener: handleInvalidFunctionBody({)
-                    listener: endClassMethod(null, operator, (, null, })
-                  listener: endMember()
-            notEofOrValue(}, 42)
-            parseClassOrMixinOrExtensionMemberImpl(}, DeclarationKind.Class, WrapperClass)
-              parseMetadataStar(})
-                listener: beginMetadataStar(42)
-                listener: endMetadataStar(0)
-              listener: beginMember()
-              recoverFromInvalidMember(}, }, null, null, null, null, null, }, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
-                reportRecoverableErrorWithToken(42, Instance of 'Template<(Token) => Message>')
-                  listener: handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got '42'., null, {token: 42}], 42, 42)
-                listener: handleInvalidMember(42)
-                listener: endMember()
-            notEofOrValue(}, ;)
-            parseClassOrMixinOrExtensionMemberImpl(42, DeclarationKind.Class, WrapperClass)
-              parseMetadataStar(42)
-                listener: beginMetadataStar(;)
-                listener: endMetadataStar(0)
-              listener: beginMember()
-              recoverFromInvalidMember(42, 42, null, null, null, null, null, 42, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
-                reportRecoverableErrorWithToken(;, Instance of 'Template<(Token) => Message>')
-                  listener: handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got ';'., null, {token: ;}], ;, ;)
-                listener: handleInvalidMember(;)
-                listener: endMember()
             notEofOrValue(}, })
-            listener: endClassOrMixinBody(DeclarationKind.Class, 157, {, })
+            listener: endClassOrMixinBody(DeclarationKind.Class, 33, {, })
           listener: endClassDeclaration(class, })
   listener: endTopLevelDeclaration()
   reportAllErrorTokens(class)
diff --git a/pkg/front_end/parser_testcases/error_recovery/reserved_words_class_fields.dart.parser.expect b/pkg/front_end/parser_testcases/error_recovery/reserved_words_class_fields.dart.parser.expect
index 0ed105a..99a26c4 100644
--- a/pkg/front_end/parser_testcases/error_recovery/reserved_words_class_fields.dart.parser.expect
+++ b/pkg/front_end/parser_testcases/error_recovery/reserved_words_class_fields.dart.parser.expect
@@ -1,73 +1,71 @@
-NOTICE: Stream was rewritten by parser!
-
 class WrapperClass {
-int ;assert operator= (){}42;
-int ;break operator= (){}42;
-int ;case operator= (){}42;
-int ;catch operator= (){}42;
-int ;class operator= (){}42;
-int ;const operator= (){}42;
-int ;continue operator= (){}42;
-int ;default operator= (){}42;
-int ;do operator= (){}42;
-int ;else operator= (){}42;
-int ;enum operator= (){}42;
-int ;extends operator= (){}42;
-int ;false operator= (){}42;
-int ;final operator= (){}42;
-int ;finally operator= (){}42;
-int ;for operator= (){}42;
-int ;if operator= (){}42;
-int ;in operator= (){}42;
-int ;is operator= (){}42;
-int ;new operator= (){}42;
-int ;null operator= (){}42;
-int ;rethrow operator= (){}42;
-int ;return operator= (){}42;
-int ;super operator= (){}42;
-int ;switch operator= (){}42;
+int assert = 42;
+int break = 42;
+int case = 42;
+int catch = 42;
+int class = 42;
+int const = 42;
+int continue = 42;
+int default = 42;
+int do = 42;
+int else = 42;
+int enum = 42;
+int extends = 42;
+int false = 42;
+int final = 42;
+int finally = 42;
+int for = 42;
+int if = 42;
+int in = 42;
+int is = 42;
+int new = 42;
+int null = 42;
+int rethrow = 42;
+int return = 42;
+int super = 42;
+int switch = 42;
 int this = 42;
-int ;throw operator= (){}42;
-int ;true operator= (){}42;
-int ;try operator= (){}42;
-int ;var operator= (){}42;
-int ;void operator= (){}42;
-int ;while operator= (){}42;
-int ;with operator= (){}42;
+int throw = 42;
+int true = 42;
+int try = 42;
+int var = 42;
+int void = 42;
+int while = 42;
+int with = 42;
 }
 
 class[KeywordToken] WrapperClass[StringToken] {[BeginToken]
-int[StringToken] ;[SyntheticToken]assert[KeywordToken] operator[SyntheticKeywordToken]=[SimpleToken] ([SyntheticBeginToken])[SyntheticToken]{[SyntheticBeginToken]}[SyntheticToken]42[StringToken];[SimpleToken]
-int[StringToken] ;[SyntheticToken]break[KeywordToken] operator[SyntheticKeywordToken]=[SimpleToken] ([SyntheticBeginToken])[SyntheticToken]{[SyntheticBeginToken]}[SyntheticToken]42[StringToken];[SimpleToken]
-int[StringToken] ;[SyntheticToken]case[KeywordToken] operator[SyntheticKeywordToken]=[SimpleToken] ([SyntheticBeginToken])[SyntheticToken]{[SyntheticBeginToken]}[SyntheticToken]42[StringToken];[SimpleToken]
-int[StringToken] ;[SyntheticToken]catch[KeywordToken] operator[SyntheticKeywordToken]=[SimpleToken] ([SyntheticBeginToken])[SyntheticToken]{[SyntheticBeginToken]}[SyntheticToken]42[StringToken];[SimpleToken]
-int[StringToken] ;[SyntheticToken]class[KeywordToken] operator[SyntheticKeywordToken]=[SimpleToken] ([SyntheticBeginToken])[SyntheticToken]{[SyntheticBeginToken]}[SyntheticToken]42[StringToken];[SimpleToken]
-int[StringToken] ;[SyntheticToken]const[KeywordToken] operator[SyntheticKeywordToken]=[SimpleToken] ([SyntheticBeginToken])[SyntheticToken]{[SyntheticBeginToken]}[SyntheticToken]42[StringToken];[SimpleToken]
-int[StringToken] ;[SyntheticToken]continue[KeywordToken] operator[SyntheticKeywordToken]=[SimpleToken] ([SyntheticBeginToken])[SyntheticToken]{[SyntheticBeginToken]}[SyntheticToken]42[StringToken];[SimpleToken]
-int[StringToken] ;[SyntheticToken]default[KeywordToken] operator[SyntheticKeywordToken]=[SimpleToken] ([SyntheticBeginToken])[SyntheticToken]{[SyntheticBeginToken]}[SyntheticToken]42[StringToken];[SimpleToken]
-int[StringToken] ;[SyntheticToken]do[KeywordToken] operator[SyntheticKeywordToken]=[SimpleToken] ([SyntheticBeginToken])[SyntheticToken]{[SyntheticBeginToken]}[SyntheticToken]42[StringToken];[SimpleToken]
-int[StringToken] ;[SyntheticToken]else[KeywordToken] operator[SyntheticKeywordToken]=[SimpleToken] ([SyntheticBeginToken])[SyntheticToken]{[SyntheticBeginToken]}[SyntheticToken]42[StringToken];[SimpleToken]
-int[StringToken] ;[SyntheticToken]enum[KeywordToken] operator[SyntheticKeywordToken]=[SimpleToken] ([SyntheticBeginToken])[SyntheticToken]{[SyntheticBeginToken]}[SyntheticToken]42[StringToken];[SimpleToken]
-int[StringToken] ;[SyntheticToken]extends[KeywordToken] operator[SyntheticKeywordToken]=[SimpleToken] ([SyntheticBeginToken])[SyntheticToken]{[SyntheticBeginToken]}[SyntheticToken]42[StringToken];[SimpleToken]
-int[StringToken] ;[SyntheticToken]false[KeywordToken] operator[SyntheticKeywordToken]=[SimpleToken] ([SyntheticBeginToken])[SyntheticToken]{[SyntheticBeginToken]}[SyntheticToken]42[StringToken];[SimpleToken]
-int[StringToken] ;[SyntheticToken]final[KeywordToken] operator[SyntheticKeywordToken]=[SimpleToken] ([SyntheticBeginToken])[SyntheticToken]{[SyntheticBeginToken]}[SyntheticToken]42[StringToken];[SimpleToken]
-int[StringToken] ;[SyntheticToken]finally[KeywordToken] operator[SyntheticKeywordToken]=[SimpleToken] ([SyntheticBeginToken])[SyntheticToken]{[SyntheticBeginToken]}[SyntheticToken]42[StringToken];[SimpleToken]
-int[StringToken] ;[SyntheticToken]for[KeywordToken] operator[SyntheticKeywordToken]=[SimpleToken] ([SyntheticBeginToken])[SyntheticToken]{[SyntheticBeginToken]}[SyntheticToken]42[StringToken];[SimpleToken]
-int[StringToken] ;[SyntheticToken]if[KeywordToken] operator[SyntheticKeywordToken]=[SimpleToken] ([SyntheticBeginToken])[SyntheticToken]{[SyntheticBeginToken]}[SyntheticToken]42[StringToken];[SimpleToken]
-int[StringToken] ;[SyntheticToken]in[KeywordToken] operator[SyntheticKeywordToken]=[SimpleToken] ([SyntheticBeginToken])[SyntheticToken]{[SyntheticBeginToken]}[SyntheticToken]42[StringToken];[SimpleToken]
-int[StringToken] ;[SyntheticToken]is[KeywordToken] operator[SyntheticKeywordToken]=[SimpleToken] ([SyntheticBeginToken])[SyntheticToken]{[SyntheticBeginToken]}[SyntheticToken]42[StringToken];[SimpleToken]
-int[StringToken] ;[SyntheticToken]new[KeywordToken] operator[SyntheticKeywordToken]=[SimpleToken] ([SyntheticBeginToken])[SyntheticToken]{[SyntheticBeginToken]}[SyntheticToken]42[StringToken];[SimpleToken]
-int[StringToken] ;[SyntheticToken]null[KeywordToken] operator[SyntheticKeywordToken]=[SimpleToken] ([SyntheticBeginToken])[SyntheticToken]{[SyntheticBeginToken]}[SyntheticToken]42[StringToken];[SimpleToken]
-int[StringToken] ;[SyntheticToken]rethrow[KeywordToken] operator[SyntheticKeywordToken]=[SimpleToken] ([SyntheticBeginToken])[SyntheticToken]{[SyntheticBeginToken]}[SyntheticToken]42[StringToken];[SimpleToken]
-int[StringToken] ;[SyntheticToken]return[KeywordToken] operator[SyntheticKeywordToken]=[SimpleToken] ([SyntheticBeginToken])[SyntheticToken]{[SyntheticBeginToken]}[SyntheticToken]42[StringToken];[SimpleToken]
-int[StringToken] ;[SyntheticToken]super[KeywordToken] operator[SyntheticKeywordToken]=[SimpleToken] ([SyntheticBeginToken])[SyntheticToken]{[SyntheticBeginToken]}[SyntheticToken]42[StringToken];[SimpleToken]
-int[StringToken] ;[SyntheticToken]switch[KeywordToken] operator[SyntheticKeywordToken]=[SimpleToken] ([SyntheticBeginToken])[SyntheticToken]{[SyntheticBeginToken]}[SyntheticToken]42[StringToken];[SimpleToken]
+int[StringToken] assert[KeywordToken] =[SimpleToken] 42[StringToken];[SimpleToken]
+int[StringToken] break[KeywordToken] =[SimpleToken] 42[StringToken];[SimpleToken]
+int[StringToken] case[KeywordToken] =[SimpleToken] 42[StringToken];[SimpleToken]
+int[StringToken] catch[KeywordToken] =[SimpleToken] 42[StringToken];[SimpleToken]
+int[StringToken] class[KeywordToken] =[SimpleToken] 42[StringToken];[SimpleToken]
+int[StringToken] const[KeywordToken] =[SimpleToken] 42[StringToken];[SimpleToken]
+int[StringToken] continue[KeywordToken] =[SimpleToken] 42[StringToken];[SimpleToken]
+int[StringToken] default[KeywordToken] =[SimpleToken] 42[StringToken];[SimpleToken]
+int[StringToken] do[KeywordToken] =[SimpleToken] 42[StringToken];[SimpleToken]
+int[StringToken] else[KeywordToken] =[SimpleToken] 42[StringToken];[SimpleToken]
+int[StringToken] enum[KeywordToken] =[SimpleToken] 42[StringToken];[SimpleToken]
+int[StringToken] extends[KeywordToken] =[SimpleToken] 42[StringToken];[SimpleToken]
+int[StringToken] false[KeywordToken] =[SimpleToken] 42[StringToken];[SimpleToken]
+int[StringToken] final[KeywordToken] =[SimpleToken] 42[StringToken];[SimpleToken]
+int[StringToken] finally[KeywordToken] =[SimpleToken] 42[StringToken];[SimpleToken]
+int[StringToken] for[KeywordToken] =[SimpleToken] 42[StringToken];[SimpleToken]
+int[StringToken] if[KeywordToken] =[SimpleToken] 42[StringToken];[SimpleToken]
+int[StringToken] in[KeywordToken] =[SimpleToken] 42[StringToken];[SimpleToken]
+int[StringToken] is[KeywordToken] =[SimpleToken] 42[StringToken];[SimpleToken]
+int[StringToken] new[KeywordToken] =[SimpleToken] 42[StringToken];[SimpleToken]
+int[StringToken] null[KeywordToken] =[SimpleToken] 42[StringToken];[SimpleToken]
+int[StringToken] rethrow[KeywordToken] =[SimpleToken] 42[StringToken];[SimpleToken]
+int[StringToken] return[KeywordToken] =[SimpleToken] 42[StringToken];[SimpleToken]
+int[StringToken] super[KeywordToken] =[SimpleToken] 42[StringToken];[SimpleToken]
+int[StringToken] switch[KeywordToken] =[SimpleToken] 42[StringToken];[SimpleToken]
 int[StringToken] this[KeywordToken] =[SimpleToken] 42[StringToken];[SimpleToken]
-int[StringToken] ;[SyntheticToken]throw[KeywordToken] operator[SyntheticKeywordToken]=[SimpleToken] ([SyntheticBeginToken])[SyntheticToken]{[SyntheticBeginToken]}[SyntheticToken]42[StringToken];[SimpleToken]
-int[StringToken] ;[SyntheticToken]true[KeywordToken] operator[SyntheticKeywordToken]=[SimpleToken] ([SyntheticBeginToken])[SyntheticToken]{[SyntheticBeginToken]}[SyntheticToken]42[StringToken];[SimpleToken]
-int[StringToken] ;[SyntheticToken]try[KeywordToken] operator[SyntheticKeywordToken]=[SimpleToken] ([SyntheticBeginToken])[SyntheticToken]{[SyntheticBeginToken]}[SyntheticToken]42[StringToken];[SimpleToken]
-int[StringToken] ;[SyntheticToken]var[KeywordToken] operator[SyntheticKeywordToken]=[SimpleToken] ([SyntheticBeginToken])[SyntheticToken]{[SyntheticBeginToken]}[SyntheticToken]42[StringToken];[SimpleToken]
-int[StringToken] ;[SyntheticToken]void[KeywordToken] operator[SyntheticKeywordToken]=[SimpleToken] ([SyntheticBeginToken])[SyntheticToken]{[SyntheticBeginToken]}[SyntheticToken]42[StringToken];[SimpleToken]
-int[StringToken] ;[SyntheticToken]while[KeywordToken] operator[SyntheticKeywordToken]=[SimpleToken] ([SyntheticBeginToken])[SyntheticToken]{[SyntheticBeginToken]}[SyntheticToken]42[StringToken];[SimpleToken]
-int[StringToken] ;[SyntheticToken]with[KeywordToken] operator[SyntheticKeywordToken]=[SimpleToken] ([SyntheticBeginToken])[SyntheticToken]{[SyntheticBeginToken]}[SyntheticToken]42[StringToken];[SimpleToken]
+int[StringToken] throw[KeywordToken] =[SimpleToken] 42[StringToken];[SimpleToken]
+int[StringToken] true[KeywordToken] =[SimpleToken] 42[StringToken];[SimpleToken]
+int[StringToken] try[KeywordToken] =[SimpleToken] 42[StringToken];[SimpleToken]
+int[StringToken] var[KeywordToken] =[SimpleToken] 42[StringToken];[SimpleToken]
+int[StringToken] void[KeywordToken] =[SimpleToken] 42[StringToken];[SimpleToken]
+int[StringToken] while[KeywordToken] =[SimpleToken] 42[StringToken];[SimpleToken]
+int[StringToken] with[KeywordToken] =[SimpleToken] 42[StringToken];[SimpleToken]
 }[SimpleToken][SimpleToken]
diff --git a/pkg/front_end/parser_testcases/error_recovery/reserved_words_class_methods.dart.expect b/pkg/front_end/parser_testcases/error_recovery/reserved_words_class_methods.dart.expect
index adf4e0b..5259f92 100644
--- a/pkg/front_end/parser_testcases/error_recovery/reserved_words_class_methods.dart.expect
+++ b/pkg/front_end/parser_testcases/error_recovery/reserved_words_class_methods.dart.expect
@@ -1,41 +1,17 @@
 Problems reported:
 
-parser/error_recovery/reserved_words_class_methods:2:3: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
-  int assert(int x) {
-  ^^^
-
-parser/error_recovery/reserved_words_class_methods:2:3: Expected ';' after this.
-  int assert(int x) {
-  ^^^
-
-parser/error_recovery/reserved_words_class_methods:2:7: Expected a class member, but got 'assert'.
+parser/error_recovery/reserved_words_class_methods:2:7: Expected an identifier, but got 'assert'.
   int assert(int x) {
       ^^^^^^
 
-parser/error_recovery/reserved_words_class_methods:2:13: Expected an identifier, but got '('.
-  int assert(int x) {
-            ^
-
 parser/error_recovery/reserved_words_class_methods:4:12: `assert` can't be used as an expression.
     return assert(x-1) + 1;
            ^^^^^^
 
-parser/error_recovery/reserved_words_class_methods:7:3: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
-  int break(int x) {
-  ^^^
-
-parser/error_recovery/reserved_words_class_methods:7:3: Expected ';' after this.
-  int break(int x) {
-  ^^^
-
-parser/error_recovery/reserved_words_class_methods:7:7: Expected a class member, but got 'break'.
+parser/error_recovery/reserved_words_class_methods:7:7: Expected an identifier, but got 'break'.
   int break(int x) {
       ^^^^^
 
-parser/error_recovery/reserved_words_class_methods:7:12: Expected an identifier, but got '('.
-  int break(int x) {
-           ^
-
 parser/error_recovery/reserved_words_class_methods:9:12: Expected an identifier, but got 'break'.
     return break(x-1) + 1;
            ^^^^^
@@ -52,102 +28,42 @@
     return break(x-1) + 1;
            ^^^^^
 
-parser/error_recovery/reserved_words_class_methods:12:3: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
-  int case(int x) {
-  ^^^
-
-parser/error_recovery/reserved_words_class_methods:12:3: Expected ';' after this.
-  int case(int x) {
-  ^^^
-
-parser/error_recovery/reserved_words_class_methods:12:7: Expected a class member, but got 'case'.
+parser/error_recovery/reserved_words_class_methods:12:7: Expected an identifier, but got 'case'.
   int case(int x) {
       ^^^^
 
-parser/error_recovery/reserved_words_class_methods:12:11: Expected an identifier, but got '('.
-  int case(int x) {
-          ^
-
 parser/error_recovery/reserved_words_class_methods:14:12: Expected an identifier, but got 'case'.
     return case(x-1) + 1;
            ^^^^
 
-parser/error_recovery/reserved_words_class_methods:17:3: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
-  int catch(int x) {
-  ^^^
-
-parser/error_recovery/reserved_words_class_methods:17:3: Expected ';' after this.
-  int catch(int x) {
-  ^^^
-
-parser/error_recovery/reserved_words_class_methods:17:7: Expected a class member, but got 'catch'.
+parser/error_recovery/reserved_words_class_methods:17:7: Expected an identifier, but got 'catch'.
   int catch(int x) {
       ^^^^^
 
-parser/error_recovery/reserved_words_class_methods:17:12: Expected an identifier, but got '('.
-  int catch(int x) {
-           ^
-
 parser/error_recovery/reserved_words_class_methods:19:12: Expected an identifier, but got 'catch'.
     return catch(x-1) + 1;
            ^^^^^
 
-parser/error_recovery/reserved_words_class_methods:22:3: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
-  int class(int x) {
-  ^^^
-
-parser/error_recovery/reserved_words_class_methods:22:3: Expected ';' after this.
-  int class(int x) {
-  ^^^
-
-parser/error_recovery/reserved_words_class_methods:22:7: Classes can't be declared inside other classes.
+parser/error_recovery/reserved_words_class_methods:22:7: Expected an identifier, but got 'class'.
   int class(int x) {
       ^^^^^
 
-parser/error_recovery/reserved_words_class_methods:22:12: Expected an identifier, but got '('.
-  int class(int x) {
-           ^
-
 parser/error_recovery/reserved_words_class_methods:24:12: Expected an identifier, but got 'class'.
     return class(x-1) + 1;
            ^^^^^
 
-parser/error_recovery/reserved_words_class_methods:27:3: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
+parser/error_recovery/reserved_words_class_methods:27:7: Expected an identifier, but got 'const'.
   int const(int x) {
-  ^^^
-
-parser/error_recovery/reserved_words_class_methods:27:3: Expected ';' after this.
-  int const(int x) {
-  ^^^
-
-parser/error_recovery/reserved_words_class_methods:27:12: Expected an identifier, but got '('.
-  int const(int x) {
-           ^
+      ^^^^^
 
 parser/error_recovery/reserved_words_class_methods:29:17: Expected an identifier, but got '('.
     return const(x-1) + 1;
                 ^
 
-parser/error_recovery/reserved_words_class_methods:27:7: Getters, setters and methods can't be declared to be 'const'.
-  int const(int x) {
-      ^^^^^
-
-parser/error_recovery/reserved_words_class_methods:32:3: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
-  int continue(int x) {
-  ^^^
-
-parser/error_recovery/reserved_words_class_methods:32:3: Expected ';' after this.
-  int continue(int x) {
-  ^^^
-
-parser/error_recovery/reserved_words_class_methods:32:7: Expected a class member, but got 'continue'.
+parser/error_recovery/reserved_words_class_methods:32:7: Expected an identifier, but got 'continue'.
   int continue(int x) {
       ^^^^^^^^
 
-parser/error_recovery/reserved_words_class_methods:32:15: Expected an identifier, but got '('.
-  int continue(int x) {
-              ^
-
 parser/error_recovery/reserved_words_class_methods:34:12: Expected an identifier, but got 'continue'.
     return continue(x-1) + 1;
            ^^^^^^^^
@@ -164,42 +80,18 @@
     return continue(x-1) + 1;
            ^^^^^^^^
 
-parser/error_recovery/reserved_words_class_methods:37:3: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
-  int default(int x) {
-  ^^^
-
-parser/error_recovery/reserved_words_class_methods:37:3: Expected ';' after this.
-  int default(int x) {
-  ^^^
-
-parser/error_recovery/reserved_words_class_methods:37:7: Expected a class member, but got 'default'.
+parser/error_recovery/reserved_words_class_methods:37:7: Expected an identifier, but got 'default'.
   int default(int x) {
       ^^^^^^^
 
-parser/error_recovery/reserved_words_class_methods:37:14: Expected an identifier, but got '('.
-  int default(int x) {
-             ^
-
 parser/error_recovery/reserved_words_class_methods:39:12: Expected an identifier, but got 'default'.
     return default(x-1) + 1;
            ^^^^^^^
 
-parser/error_recovery/reserved_words_class_methods:42:3: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
-  int do(int x) {
-  ^^^
-
-parser/error_recovery/reserved_words_class_methods:42:3: Expected ';' after this.
-  int do(int x) {
-  ^^^
-
-parser/error_recovery/reserved_words_class_methods:42:7: Expected a class member, but got 'do'.
+parser/error_recovery/reserved_words_class_methods:42:7: Expected an identifier, but got 'do'.
   int do(int x) {
       ^^
 
-parser/error_recovery/reserved_words_class_methods:42:9: Expected an identifier, but got '('.
-  int do(int x) {
-        ^
-
 parser/error_recovery/reserved_words_class_methods:44:12: Expected an identifier, but got 'do'.
     return do(x-1) + 1;
            ^^
@@ -224,22 +116,10 @@
   }
   ^
 
-parser/error_recovery/reserved_words_class_methods:47:3: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
-  int else(int x) {
-  ^^^
-
-parser/error_recovery/reserved_words_class_methods:47:3: Expected ';' after this.
-  int else(int x) {
-  ^^^
-
-parser/error_recovery/reserved_words_class_methods:47:7: Expected a class member, but got 'else'.
+parser/error_recovery/reserved_words_class_methods:47:7: Expected an identifier, but got 'else'.
   int else(int x) {
       ^^^^
 
-parser/error_recovery/reserved_words_class_methods:47:11: Expected an identifier, but got '('.
-  int else(int x) {
-          ^
-
 parser/error_recovery/reserved_words_class_methods:49:12: Expected an identifier, but got 'else'.
     return else(x-1) + 1;
            ^^^^
@@ -260,78 +140,30 @@
     return else(x-1) + 1;
            ^^^^
 
-parser/error_recovery/reserved_words_class_methods:52:3: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
-  int enum(int x) {
-  ^^^
-
-parser/error_recovery/reserved_words_class_methods:52:3: Expected ';' after this.
-  int enum(int x) {
-  ^^^
-
-parser/error_recovery/reserved_words_class_methods:52:7: Enums can't be declared inside classes.
+parser/error_recovery/reserved_words_class_methods:52:7: Expected an identifier, but got 'enum'.
   int enum(int x) {
       ^^^^
 
-parser/error_recovery/reserved_words_class_methods:52:11: Expected an identifier, but got '('.
-  int enum(int x) {
-          ^
-
 parser/error_recovery/reserved_words_class_methods:54:12: Expected an identifier, but got 'enum'.
     return enum(x-1) + 1;
            ^^^^
 
-parser/error_recovery/reserved_words_class_methods:57:3: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
-  int extends(int x) {
-  ^^^
-
-parser/error_recovery/reserved_words_class_methods:57:3: Expected ';' after this.
-  int extends(int x) {
-  ^^^
-
-parser/error_recovery/reserved_words_class_methods:57:7: Expected a class member, but got 'extends'.
+parser/error_recovery/reserved_words_class_methods:57:7: Expected an identifier, but got 'extends'.
   int extends(int x) {
       ^^^^^^^
 
-parser/error_recovery/reserved_words_class_methods:57:14: Expected an identifier, but got '('.
-  int extends(int x) {
-             ^
-
 parser/error_recovery/reserved_words_class_methods:59:12: Expected an identifier, but got 'extends'.
     return extends(x-1) + 1;
            ^^^^^^^
 
-parser/error_recovery/reserved_words_class_methods:62:3: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
-  int false(int x) {
-  ^^^
-
-parser/error_recovery/reserved_words_class_methods:62:3: Expected ';' after this.
-  int false(int x) {
-  ^^^
-
-parser/error_recovery/reserved_words_class_methods:62:7: Expected a class member, but got 'false'.
+parser/error_recovery/reserved_words_class_methods:62:7: Expected an identifier, but got 'false'.
   int false(int x) {
       ^^^^^
 
-parser/error_recovery/reserved_words_class_methods:62:12: Expected an identifier, but got '('.
-  int false(int x) {
-           ^
-
-parser/error_recovery/reserved_words_class_methods:67:3: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
-  int final(int x) {
-  ^^^
-
-parser/error_recovery/reserved_words_class_methods:67:3: Expected ';' after this.
-  int final(int x) {
-  ^^^
-
-parser/error_recovery/reserved_words_class_methods:67:7: Can't have modifier 'final' here.
+parser/error_recovery/reserved_words_class_methods:67:7: Expected an identifier, but got 'final'.
   int final(int x) {
       ^^^^^
 
-parser/error_recovery/reserved_words_class_methods:67:12: Expected an identifier, but got '('.
-  int final(int x) {
-           ^
-
 parser/error_recovery/reserved_words_class_methods:69:12: Expected an identifier, but got 'final'.
     return final(x-1) + 1;
            ^^^^^
@@ -368,42 +200,18 @@
     return final(x-1) + 1;
                       ^
 
-parser/error_recovery/reserved_words_class_methods:72:3: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
-  int finally(int x) {
-  ^^^
-
-parser/error_recovery/reserved_words_class_methods:72:3: Expected ';' after this.
-  int finally(int x) {
-  ^^^
-
-parser/error_recovery/reserved_words_class_methods:72:7: Expected a class member, but got 'finally'.
+parser/error_recovery/reserved_words_class_methods:72:7: Expected an identifier, but got 'finally'.
   int finally(int x) {
       ^^^^^^^
 
-parser/error_recovery/reserved_words_class_methods:72:14: Expected an identifier, but got '('.
-  int finally(int x) {
-             ^
-
 parser/error_recovery/reserved_words_class_methods:74:12: Expected an identifier, but got 'finally'.
     return finally(x-1) + 1;
            ^^^^^^^
 
-parser/error_recovery/reserved_words_class_methods:77:3: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
-  int for(int x) {
-  ^^^
-
-parser/error_recovery/reserved_words_class_methods:77:3: Expected ';' after this.
-  int for(int x) {
-  ^^^
-
-parser/error_recovery/reserved_words_class_methods:77:7: Expected a class member, but got 'for'.
+parser/error_recovery/reserved_words_class_methods:77:7: Expected an identifier, but got 'for'.
   int for(int x) {
       ^^^
 
-parser/error_recovery/reserved_words_class_methods:77:10: Expected an identifier, but got '('.
-  int for(int x) {
-         ^
-
 parser/error_recovery/reserved_words_class_methods:79:12: Expected an identifier, but got 'for'.
     return for(x-1) + 1;
            ^^^
@@ -428,22 +236,10 @@
     return for(x-1) + 1;
                     ^
 
-parser/error_recovery/reserved_words_class_methods:82:3: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
-  int if(int x) {
-  ^^^
-
-parser/error_recovery/reserved_words_class_methods:82:3: Expected ';' after this.
-  int if(int x) {
-  ^^^
-
-parser/error_recovery/reserved_words_class_methods:82:7: Expected a class member, but got 'if'.
+parser/error_recovery/reserved_words_class_methods:82:7: Expected an identifier, but got 'if'.
   int if(int x) {
       ^^
 
-parser/error_recovery/reserved_words_class_methods:82:9: Expected an identifier, but got '('.
-  int if(int x) {
-        ^
-
 parser/error_recovery/reserved_words_class_methods:84:12: Expected an identifier, but got 'if'.
     return if(x-1) + 1;
            ^^
@@ -456,42 +252,18 @@
     return if(x-1) + 1;
                    ^
 
-parser/error_recovery/reserved_words_class_methods:87:3: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
-  int in(int x) {
-  ^^^
-
-parser/error_recovery/reserved_words_class_methods:87:3: Expected ';' after this.
-  int in(int x) {
-  ^^^
-
-parser/error_recovery/reserved_words_class_methods:87:7: Expected a class member, but got 'in'.
+parser/error_recovery/reserved_words_class_methods:87:7: Expected an identifier, but got 'in'.
   int in(int x) {
       ^^
 
-parser/error_recovery/reserved_words_class_methods:87:9: Expected an identifier, but got '('.
-  int in(int x) {
-        ^
-
 parser/error_recovery/reserved_words_class_methods:89:12: Expected an identifier, but got 'in'.
     return in(x-1) + 1;
            ^^
 
-parser/error_recovery/reserved_words_class_methods:92:3: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
-  int is(int x) {
-  ^^^
-
-parser/error_recovery/reserved_words_class_methods:92:3: Expected ';' after this.
-  int is(int x) {
-  ^^^
-
-parser/error_recovery/reserved_words_class_methods:92:7: Expected a class member, but got 'is'.
+parser/error_recovery/reserved_words_class_methods:92:7: Expected an identifier, but got 'is'.
   int is(int x) {
       ^^
 
-parser/error_recovery/reserved_words_class_methods:92:9: Expected an identifier, but got '('.
-  int is(int x) {
-        ^
-
 parser/error_recovery/reserved_words_class_methods:94:12: Expected an identifier, but got 'is'.
     return is(x-1) + 1;
            ^^
@@ -504,114 +276,42 @@
     return is(x-1) + 1;
              ^
 
-parser/error_recovery/reserved_words_class_methods:97:3: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
-  int new(int x) {
-  ^^^
-
-parser/error_recovery/reserved_words_class_methods:97:3: Expected ';' after this.
-  int new(int x) {
-  ^^^
-
-parser/error_recovery/reserved_words_class_methods:97:7: Expected a class member, but got 'new'.
+parser/error_recovery/reserved_words_class_methods:97:7: Expected an identifier, but got 'new'.
   int new(int x) {
       ^^^
 
-parser/error_recovery/reserved_words_class_methods:97:10: Expected an identifier, but got '('.
-  int new(int x) {
-         ^
-
 parser/error_recovery/reserved_words_class_methods:99:15: Expected an identifier, but got '('.
     return new(x-1) + 1;
               ^
 
-parser/error_recovery/reserved_words_class_methods:102:3: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
-  int null(int x) {
-  ^^^
-
-parser/error_recovery/reserved_words_class_methods:102:3: Expected ';' after this.
-  int null(int x) {
-  ^^^
-
-parser/error_recovery/reserved_words_class_methods:102:7: Expected a class member, but got 'null'.
+parser/error_recovery/reserved_words_class_methods:102:7: Expected an identifier, but got 'null'.
   int null(int x) {
       ^^^^
 
-parser/error_recovery/reserved_words_class_methods:102:11: Expected an identifier, but got '('.
-  int null(int x) {
-          ^
-
-parser/error_recovery/reserved_words_class_methods:107:3: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
-  int rethrow(int x) {
-  ^^^
-
-parser/error_recovery/reserved_words_class_methods:107:3: Expected ';' after this.
-  int rethrow(int x) {
-  ^^^
-
-parser/error_recovery/reserved_words_class_methods:107:7: Expected a class member, but got 'rethrow'.
+parser/error_recovery/reserved_words_class_methods:107:7: Expected an identifier, but got 'rethrow'.
   int rethrow(int x) {
       ^^^^^^^
 
-parser/error_recovery/reserved_words_class_methods:107:14: Expected an identifier, but got '('.
-  int rethrow(int x) {
-             ^
-
 parser/error_recovery/reserved_words_class_methods:109:12: Expected an identifier, but got 'rethrow'.
     return rethrow(x-1) + 1;
            ^^^^^^^
 
-parser/error_recovery/reserved_words_class_methods:112:3: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
-  int return(int x) {
-  ^^^
-
-parser/error_recovery/reserved_words_class_methods:112:3: Expected ';' after this.
-  int return(int x) {
-  ^^^
-
-parser/error_recovery/reserved_words_class_methods:112:7: Expected a class member, but got 'return'.
+parser/error_recovery/reserved_words_class_methods:112:7: Expected an identifier, but got 'return'.
   int return(int x) {
       ^^^^^^
 
-parser/error_recovery/reserved_words_class_methods:112:13: Expected an identifier, but got '('.
-  int return(int x) {
-            ^
-
 parser/error_recovery/reserved_words_class_methods:114:12: Unexpected token 'return'.
     return return(x-1) + 1;
            ^^^^^^
 
-parser/error_recovery/reserved_words_class_methods:117:3: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
-  int super(int x) {
-  ^^^
-
-parser/error_recovery/reserved_words_class_methods:117:3: Expected ';' after this.
-  int super(int x) {
-  ^^^
-
-parser/error_recovery/reserved_words_class_methods:117:7: Expected a class member, but got 'super'.
+parser/error_recovery/reserved_words_class_methods:117:7: Expected an identifier, but got 'super'.
   int super(int x) {
       ^^^^^
 
-parser/error_recovery/reserved_words_class_methods:117:12: Expected an identifier, but got '('.
-  int super(int x) {
-           ^
-
-parser/error_recovery/reserved_words_class_methods:122:3: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
-  int switch(int x) {
-  ^^^
-
-parser/error_recovery/reserved_words_class_methods:122:3: Expected ';' after this.
-  int switch(int x) {
-  ^^^
-
-parser/error_recovery/reserved_words_class_methods:122:7: Expected a class member, but got 'switch'.
+parser/error_recovery/reserved_words_class_methods:122:7: Expected an identifier, but got 'switch'.
   int switch(int x) {
       ^^^^^^
 
-parser/error_recovery/reserved_words_class_methods:122:13: Expected an identifier, but got '('.
-  int switch(int x) {
-            ^
-
 parser/error_recovery/reserved_words_class_methods:124:12: Expected an identifier, but got 'switch'.
     return switch(x-1) + 1;
            ^^^^^^
@@ -640,54 +340,18 @@
   int this(int x) {
           ^
 
-parser/error_recovery/reserved_words_class_methods:132:3: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
-  int throw(int x) {
-  ^^^
-
-parser/error_recovery/reserved_words_class_methods:132:3: Expected ';' after this.
-  int throw(int x) {
-  ^^^
-
-parser/error_recovery/reserved_words_class_methods:132:7: Expected a class member, but got 'throw'.
+parser/error_recovery/reserved_words_class_methods:132:7: Expected an identifier, but got 'throw'.
   int throw(int x) {
       ^^^^^
 
-parser/error_recovery/reserved_words_class_methods:132:12: Expected an identifier, but got '('.
-  int throw(int x) {
-           ^
-
-parser/error_recovery/reserved_words_class_methods:137:3: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
-  int true(int x) {
-  ^^^
-
-parser/error_recovery/reserved_words_class_methods:137:3: Expected ';' after this.
-  int true(int x) {
-  ^^^
-
-parser/error_recovery/reserved_words_class_methods:137:7: Expected a class member, but got 'true'.
+parser/error_recovery/reserved_words_class_methods:137:7: Expected an identifier, but got 'true'.
   int true(int x) {
       ^^^^
 
-parser/error_recovery/reserved_words_class_methods:137:11: Expected an identifier, but got '('.
-  int true(int x) {
-          ^
-
-parser/error_recovery/reserved_words_class_methods:142:3: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
-  int try(int x) {
-  ^^^
-
-parser/error_recovery/reserved_words_class_methods:142:3: Expected ';' after this.
-  int try(int x) {
-  ^^^
-
-parser/error_recovery/reserved_words_class_methods:142:7: Expected a class member, but got 'try'.
+parser/error_recovery/reserved_words_class_methods:142:7: Expected an identifier, but got 'try'.
   int try(int x) {
       ^^^
 
-parser/error_recovery/reserved_words_class_methods:142:10: Expected an identifier, but got '('.
-  int try(int x) {
-         ^
-
 parser/error_recovery/reserved_words_class_methods:144:12: Expected an identifier, but got 'try'.
     return try(x-1) + 1;
            ^^^
@@ -704,22 +368,10 @@
     return try(x-1) + 1;
            ^^^
 
-parser/error_recovery/reserved_words_class_methods:147:3: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
-  int var(int x) {
-  ^^^
-
-parser/error_recovery/reserved_words_class_methods:147:3: Expected ';' after this.
-  int var(int x) {
-  ^^^
-
-parser/error_recovery/reserved_words_class_methods:147:7: The return type can't be 'var'.
+parser/error_recovery/reserved_words_class_methods:147:7: Expected an identifier, but got 'var'.
   int var(int x) {
       ^^^
 
-parser/error_recovery/reserved_words_class_methods:147:10: Expected an identifier, but got '('.
-  int var(int x) {
-         ^
-
 parser/error_recovery/reserved_words_class_methods:149:12: Expected an identifier, but got 'var'.
     return var(x-1) + 1;
            ^^^
@@ -756,17 +408,9 @@
     return var(x-1) + 1;
                     ^
 
-parser/error_recovery/reserved_words_class_methods:152:3: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
+parser/error_recovery/reserved_words_class_methods:152:7: Expected an identifier, but got 'void'.
   int void(int x) {
-  ^^^
-
-parser/error_recovery/reserved_words_class_methods:152:3: Expected ';' after this.
-  int void(int x) {
-  ^^^
-
-parser/error_recovery/reserved_words_class_methods:152:11: Expected an identifier, but got '('.
-  int void(int x) {
-          ^
+      ^^^^
 
 parser/error_recovery/reserved_words_class_methods:154:12: Expected an identifier, but got 'void'.
     return void(x-1) + 1;
@@ -804,22 +448,10 @@
     return void(x-1) + 1;
                      ^
 
-parser/error_recovery/reserved_words_class_methods:157:3: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
-  int while(int x) {
-  ^^^
-
-parser/error_recovery/reserved_words_class_methods:157:3: Expected ';' after this.
-  int while(int x) {
-  ^^^
-
-parser/error_recovery/reserved_words_class_methods:157:7: Expected a class member, but got 'while'.
+parser/error_recovery/reserved_words_class_methods:157:7: Expected an identifier, but got 'while'.
   int while(int x) {
       ^^^^^
 
-parser/error_recovery/reserved_words_class_methods:157:12: Expected an identifier, but got '('.
-  int while(int x) {
-           ^
-
 parser/error_recovery/reserved_words_class_methods:159:12: Expected an identifier, but got 'while'.
     return while(x-1) + 1;
            ^^^^^
@@ -832,22 +464,10 @@
     return while(x-1) + 1;
                       ^
 
-parser/error_recovery/reserved_words_class_methods:162:3: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
-  int with(int x) {
-  ^^^
-
-parser/error_recovery/reserved_words_class_methods:162:3: Expected ';' after this.
-  int with(int x) {
-  ^^^
-
-parser/error_recovery/reserved_words_class_methods:162:7: Expected a class member, but got 'with'.
+parser/error_recovery/reserved_words_class_methods:162:7: Expected an identifier, but got 'with'.
   int with(int x) {
       ^^^^
 
-parser/error_recovery/reserved_words_class_methods:162:11: Expected an identifier, but got '('.
-  int with(int x) {
-          ^
-
 parser/error_recovery/reserved_words_class_methods:164:12: Expected an identifier, but got 'with'.
     return with(x-1) + 1;
            ^^^^
@@ -868,24 +488,1632 @@
         beginMetadataStar(int)
         endMetadataStar(0)
         beginMember()
-          handleRecoverableError(MissingConstFinalVarOrType, int, int)
-          handleNoType({)
-          handleIdentifier(int, fieldDeclaration)
-          handleNoFieldInitializer(assert)
-          handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+          beginMethod(null, null, null, null, null, assert)
+            handleIdentifier(int, typeReference)
+            handleNoTypeArguments(assert)
+            handleType(int, null)
+            handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'assert'., null, {token: assert}], assert, assert)
+            handleIdentifier(assert, methodDeclaration)
+            handleNoTypeVariables(()
+            beginFormalParameters((, MemberKind.NonStaticMethod)
+              beginMetadataStar(int)
+              endMetadataStar(0)
+              beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+                handleIdentifier(int, typeReference)
+                handleNoTypeArguments(x)
+                handleType(int, null)
+                handleIdentifier(x, formalParameterDeclaration)
+                handleFormalParameterWithoutValue())
+              endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+            endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
+            handleNoInitializers()
+            handleAsyncModifier(null, null)
+            beginBlockFunctionBody({)
+              beginIfStatement(if)
+                handleIdentifier(x, expression)
+                handleNoTypeArguments(==)
+                handleNoArguments(==)
+                handleSend(x, ==)
+                beginBinaryExpression(==)
+                handleLiteralInt(0)
+                endBinaryExpression(==)
+                handleParenthesizedCondition(()
+                beginThenStatement(return)
+                  beginReturnStatement(return)
+                    handleLiteralInt(42)
+                  endReturnStatement(true, return, ;)
+                endThenStatement(;)
+              endIfStatement(if, null)
+              beginReturnStatement(return)
+                beginAssert(assert, Assert.Expression)
+                  handleIdentifier(x, expression)
+                  handleNoTypeArguments(-)
+                  handleNoArguments(-)
+                  handleSend(x, -)
+                  beginBinaryExpression(-)
+                  handleLiteralInt(1)
+                  endBinaryExpression(-)
+                  handleRecoverableError(AssertAsExpression, assert, assert)
+                endAssert(assert, Assert.Expression, (, null, +)
+                beginBinaryExpression(+)
+                handleLiteralInt(1)
+                endBinaryExpression(+)
+              endReturnStatement(true, return, ;)
+            endBlockFunctionBody(2, {, })
+          endClassMethod(null, int, (, null, })
+        endMember()
+        beginMetadataStar(int)
+        endMetadataStar(0)
+        beginMember()
+          beginMethod(null, null, null, null, null, break)
+            handleIdentifier(int, typeReference)
+            handleNoTypeArguments(break)
+            handleType(int, null)
+            handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'break'., null, {token: break}], break, break)
+            handleIdentifier(break, methodDeclaration)
+            handleNoTypeVariables(()
+            beginFormalParameters((, MemberKind.NonStaticMethod)
+              beginMetadataStar(int)
+              endMetadataStar(0)
+              beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+                handleIdentifier(int, typeReference)
+                handleNoTypeArguments(x)
+                handleType(int, null)
+                handleIdentifier(x, formalParameterDeclaration)
+                handleFormalParameterWithoutValue())
+              endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+            endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
+            handleNoInitializers()
+            handleAsyncModifier(null, null)
+            beginBlockFunctionBody({)
+              beginIfStatement(if)
+                handleIdentifier(x, expression)
+                handleNoTypeArguments(==)
+                handleNoArguments(==)
+                handleSend(x, ==)
+                beginBinaryExpression(==)
+                handleLiteralInt(0)
+                endBinaryExpression(==)
+                handleParenthesizedCondition(()
+                beginThenStatement(return)
+                  beginReturnStatement(return)
+                    handleLiteralInt(42)
+                  endReturnStatement(true, return, ;)
+                endThenStatement(;)
+              endIfStatement(if, null)
+              beginReturnStatement(return)
+                handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'break'., null, {token: break}], break, break)
+                handleIdentifier(, expression)
+                handleNoTypeArguments(break)
+                handleNoArguments(break)
+                handleSend(, break)
+                handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], break, break)
+              endReturnStatement(true, return, ;)
+              handleRecoverableError(BreakOutsideOfLoop, break, break)
+              handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], break, break)
+              handleBreakStatement(false, break, ;)
+              handleIdentifier(x, expression)
+              handleNoTypeArguments(-)
+              handleNoArguments(-)
+              handleSend(x, -)
+              beginBinaryExpression(-)
+              handleLiteralInt(1)
+              endBinaryExpression(-)
+              handleParenthesizedExpression(()
+              beginBinaryExpression(+)
+              handleLiteralInt(1)
+              endBinaryExpression(+)
+              handleExpressionStatement(;)
+            endBlockFunctionBody(4, {, })
+          endClassMethod(null, int, (, null, })
+        endMember()
+        beginMetadataStar(int)
+        endMetadataStar(0)
+        beginMember()
+          beginMethod(null, null, null, null, null, case)
+            handleIdentifier(int, typeReference)
+            handleNoTypeArguments(case)
+            handleType(int, null)
+            handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'case'., null, {token: case}], case, case)
+            handleIdentifier(case, methodDeclaration)
+            handleNoTypeVariables(()
+            beginFormalParameters((, MemberKind.NonStaticMethod)
+              beginMetadataStar(int)
+              endMetadataStar(0)
+              beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+                handleIdentifier(int, typeReference)
+                handleNoTypeArguments(x)
+                handleType(int, null)
+                handleIdentifier(x, formalParameterDeclaration)
+                handleFormalParameterWithoutValue())
+              endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+            endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
+            handleNoInitializers()
+            handleAsyncModifier(null, null)
+            beginBlockFunctionBody({)
+              beginIfStatement(if)
+                handleIdentifier(x, expression)
+                handleNoTypeArguments(==)
+                handleNoArguments(==)
+                handleSend(x, ==)
+                beginBinaryExpression(==)
+                handleLiteralInt(0)
+                endBinaryExpression(==)
+                handleParenthesizedCondition(()
+                beginThenStatement(return)
+                  beginReturnStatement(return)
+                    handleLiteralInt(42)
+                  endReturnStatement(true, return, ;)
+                endThenStatement(;)
+              endIfStatement(if, null)
+              beginReturnStatement(return)
+                handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'case'., null, {token: case}], case, case)
+                handleIdentifier(case, expression)
+                handleNoTypeArguments(()
+                beginArguments(()
+                  handleIdentifier(x, expression)
+                  handleNoTypeArguments(-)
+                  handleNoArguments(-)
+                  handleSend(x, -)
+                  beginBinaryExpression(-)
+                  handleLiteralInt(1)
+                  endBinaryExpression(-)
+                endArguments(1, (, ))
+                handleSend(case, +)
+                beginBinaryExpression(+)
+                handleLiteralInt(1)
+                endBinaryExpression(+)
+              endReturnStatement(true, return, ;)
+            endBlockFunctionBody(2, {, })
+          endClassMethod(null, int, (, null, })
+        endMember()
+        beginMetadataStar(int)
+        endMetadataStar(0)
+        beginMember()
+          beginMethod(null, null, null, null, null, catch)
+            handleIdentifier(int, typeReference)
+            handleNoTypeArguments(catch)
+            handleType(int, null)
+            handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'catch'., null, {token: catch}], catch, catch)
+            handleIdentifier(catch, methodDeclaration)
+            handleNoTypeVariables(()
+            beginFormalParameters((, MemberKind.NonStaticMethod)
+              beginMetadataStar(int)
+              endMetadataStar(0)
+              beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+                handleIdentifier(int, typeReference)
+                handleNoTypeArguments(x)
+                handleType(int, null)
+                handleIdentifier(x, formalParameterDeclaration)
+                handleFormalParameterWithoutValue())
+              endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+            endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
+            handleNoInitializers()
+            handleAsyncModifier(null, null)
+            beginBlockFunctionBody({)
+              beginIfStatement(if)
+                handleIdentifier(x, expression)
+                handleNoTypeArguments(==)
+                handleNoArguments(==)
+                handleSend(x, ==)
+                beginBinaryExpression(==)
+                handleLiteralInt(0)
+                endBinaryExpression(==)
+                handleParenthesizedCondition(()
+                beginThenStatement(return)
+                  beginReturnStatement(return)
+                    handleLiteralInt(42)
+                  endReturnStatement(true, return, ;)
+                endThenStatement(;)
+              endIfStatement(if, null)
+              beginReturnStatement(return)
+                handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'catch'., null, {token: catch}], catch, catch)
+                handleIdentifier(catch, expression)
+                handleNoTypeArguments(()
+                beginArguments(()
+                  handleIdentifier(x, expression)
+                  handleNoTypeArguments(-)
+                  handleNoArguments(-)
+                  handleSend(x, -)
+                  beginBinaryExpression(-)
+                  handleLiteralInt(1)
+                  endBinaryExpression(-)
+                endArguments(1, (, ))
+                handleSend(catch, +)
+                beginBinaryExpression(+)
+                handleLiteralInt(1)
+                endBinaryExpression(+)
+              endReturnStatement(true, return, ;)
+            endBlockFunctionBody(2, {, })
+          endClassMethod(null, int, (, null, })
+        endMember()
+        beginMetadataStar(int)
+        endMetadataStar(0)
+        beginMember()
+          beginMethod(null, null, null, null, null, class)
+            handleIdentifier(int, typeReference)
+            handleNoTypeArguments(class)
+            handleType(int, null)
+            handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'class'., null, {token: class}], class, class)
+            handleIdentifier(class, methodDeclaration)
+            handleNoTypeVariables(()
+            beginFormalParameters((, MemberKind.NonStaticMethod)
+              beginMetadataStar(int)
+              endMetadataStar(0)
+              beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+                handleIdentifier(int, typeReference)
+                handleNoTypeArguments(x)
+                handleType(int, null)
+                handleIdentifier(x, formalParameterDeclaration)
+                handleFormalParameterWithoutValue())
+              endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+            endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
+            handleNoInitializers()
+            handleAsyncModifier(null, null)
+            beginBlockFunctionBody({)
+              beginIfStatement(if)
+                handleIdentifier(x, expression)
+                handleNoTypeArguments(==)
+                handleNoArguments(==)
+                handleSend(x, ==)
+                beginBinaryExpression(==)
+                handleLiteralInt(0)
+                endBinaryExpression(==)
+                handleParenthesizedCondition(()
+                beginThenStatement(return)
+                  beginReturnStatement(return)
+                    handleLiteralInt(42)
+                  endReturnStatement(true, return, ;)
+                endThenStatement(;)
+              endIfStatement(if, null)
+              beginReturnStatement(return)
+                handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'class'., null, {token: class}], class, class)
+                handleIdentifier(class, expression)
+                handleNoTypeArguments(()
+                beginArguments(()
+                  handleIdentifier(x, expression)
+                  handleNoTypeArguments(-)
+                  handleNoArguments(-)
+                  handleSend(x, -)
+                  beginBinaryExpression(-)
+                  handleLiteralInt(1)
+                  endBinaryExpression(-)
+                endArguments(1, (, ))
+                handleSend(class, +)
+                beginBinaryExpression(+)
+                handleLiteralInt(1)
+                endBinaryExpression(+)
+              endReturnStatement(true, return, ;)
+            endBlockFunctionBody(2, {, })
+          endClassMethod(null, int, (, null, })
+        endMember()
+        beginMetadataStar(int)
+        endMetadataStar(0)
+        beginMember()
+          beginMethod(null, null, null, null, null, const)
+            handleIdentifier(int, typeReference)
+            handleNoTypeArguments(const)
+            handleType(int, null)
+            handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'const'., null, {token: const}], const, const)
+            handleIdentifier(const, methodDeclaration)
+            handleNoTypeVariables(()
+            beginFormalParameters((, MemberKind.NonStaticMethod)
+              beginMetadataStar(int)
+              endMetadataStar(0)
+              beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+                handleIdentifier(int, typeReference)
+                handleNoTypeArguments(x)
+                handleType(int, null)
+                handleIdentifier(x, formalParameterDeclaration)
+                handleFormalParameterWithoutValue())
+              endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+            endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
+            handleNoInitializers()
+            handleAsyncModifier(null, null)
+            beginBlockFunctionBody({)
+              beginIfStatement(if)
+                handleIdentifier(x, expression)
+                handleNoTypeArguments(==)
+                handleNoArguments(==)
+                handleSend(x, ==)
+                beginBinaryExpression(==)
+                handleLiteralInt(0)
+                endBinaryExpression(==)
+                handleParenthesizedCondition(()
+                beginThenStatement(return)
+                  beginReturnStatement(return)
+                    handleLiteralInt(42)
+                  endReturnStatement(true, return, ;)
+                endThenStatement(;)
+              endIfStatement(if, null)
+              beginReturnStatement(return)
+                beginConstExpression(const)
+                  handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}], (, ()
+                  handleIdentifier(, constructorReference)
+                  beginConstructorReference()
+                    handleNoTypeArguments(()
+                    handleNoConstructorReferenceContinuationAfterTypeArguments(()
+                  endConstructorReference(, null, ()
+                  beginArguments(()
+                    handleIdentifier(x, expression)
+                    handleNoTypeArguments(-)
+                    handleNoArguments(-)
+                    handleSend(x, -)
+                    beginBinaryExpression(-)
+                    handleLiteralInt(1)
+                    endBinaryExpression(-)
+                  endArguments(1, (, ))
+                endConstExpression(const)
+                beginBinaryExpression(+)
+                handleLiteralInt(1)
+                endBinaryExpression(+)
+              endReturnStatement(true, return, ;)
+            endBlockFunctionBody(2, {, })
+          endClassMethod(null, int, (, null, })
+        endMember()
+        beginMetadataStar(int)
+        endMetadataStar(0)
+        beginMember()
+          beginMethod(null, null, null, null, null, continue)
+            handleIdentifier(int, typeReference)
+            handleNoTypeArguments(continue)
+            handleType(int, null)
+            handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'continue'., null, {token: continue}], continue, continue)
+            handleIdentifier(continue, methodDeclaration)
+            handleNoTypeVariables(()
+            beginFormalParameters((, MemberKind.NonStaticMethod)
+              beginMetadataStar(int)
+              endMetadataStar(0)
+              beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+                handleIdentifier(int, typeReference)
+                handleNoTypeArguments(x)
+                handleType(int, null)
+                handleIdentifier(x, formalParameterDeclaration)
+                handleFormalParameterWithoutValue())
+              endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+            endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
+            handleNoInitializers()
+            handleAsyncModifier(null, null)
+            beginBlockFunctionBody({)
+              beginIfStatement(if)
+                handleIdentifier(x, expression)
+                handleNoTypeArguments(==)
+                handleNoArguments(==)
+                handleSend(x, ==)
+                beginBinaryExpression(==)
+                handleLiteralInt(0)
+                endBinaryExpression(==)
+                handleParenthesizedCondition(()
+                beginThenStatement(return)
+                  beginReturnStatement(return)
+                    handleLiteralInt(42)
+                  endReturnStatement(true, return, ;)
+                endThenStatement(;)
+              endIfStatement(if, null)
+              beginReturnStatement(return)
+                handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'continue'., null, {token: continue}], continue, continue)
+                handleIdentifier(, expression)
+                handleNoTypeArguments(continue)
+                handleNoArguments(continue)
+                handleSend(, continue)
+                handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], continue, continue)
+              endReturnStatement(true, return, ;)
+              handleRecoverableError(ContinueOutsideOfLoop, continue, continue)
+              handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], continue, continue)
+              handleContinueStatement(false, continue, ;)
+              handleIdentifier(x, expression)
+              handleNoTypeArguments(-)
+              handleNoArguments(-)
+              handleSend(x, -)
+              beginBinaryExpression(-)
+              handleLiteralInt(1)
+              endBinaryExpression(-)
+              handleParenthesizedExpression(()
+              beginBinaryExpression(+)
+              handleLiteralInt(1)
+              endBinaryExpression(+)
+              handleExpressionStatement(;)
+            endBlockFunctionBody(4, {, })
+          endClassMethod(null, int, (, null, })
+        endMember()
+        beginMetadataStar(int)
+        endMetadataStar(0)
+        beginMember()
+          beginMethod(null, null, null, null, null, default)
+            handleIdentifier(int, typeReference)
+            handleNoTypeArguments(default)
+            handleType(int, null)
+            handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'default'., null, {token: default}], default, default)
+            handleIdentifier(default, methodDeclaration)
+            handleNoTypeVariables(()
+            beginFormalParameters((, MemberKind.NonStaticMethod)
+              beginMetadataStar(int)
+              endMetadataStar(0)
+              beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+                handleIdentifier(int, typeReference)
+                handleNoTypeArguments(x)
+                handleType(int, null)
+                handleIdentifier(x, formalParameterDeclaration)
+                handleFormalParameterWithoutValue())
+              endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+            endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
+            handleNoInitializers()
+            handleAsyncModifier(null, null)
+            beginBlockFunctionBody({)
+              beginIfStatement(if)
+                handleIdentifier(x, expression)
+                handleNoTypeArguments(==)
+                handleNoArguments(==)
+                handleSend(x, ==)
+                beginBinaryExpression(==)
+                handleLiteralInt(0)
+                endBinaryExpression(==)
+                handleParenthesizedCondition(()
+                beginThenStatement(return)
+                  beginReturnStatement(return)
+                    handleLiteralInt(42)
+                  endReturnStatement(true, return, ;)
+                endThenStatement(;)
+              endIfStatement(if, null)
+              beginReturnStatement(return)
+                handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'default'., null, {token: default}], default, default)
+                handleIdentifier(default, expression)
+                handleNoTypeArguments(()
+                beginArguments(()
+                  handleIdentifier(x, expression)
+                  handleNoTypeArguments(-)
+                  handleNoArguments(-)
+                  handleSend(x, -)
+                  beginBinaryExpression(-)
+                  handleLiteralInt(1)
+                  endBinaryExpression(-)
+                endArguments(1, (, ))
+                handleSend(default, +)
+                beginBinaryExpression(+)
+                handleLiteralInt(1)
+                endBinaryExpression(+)
+              endReturnStatement(true, return, ;)
+            endBlockFunctionBody(2, {, })
+          endClassMethod(null, int, (, null, })
+        endMember()
+        beginMetadataStar(int)
+        endMetadataStar(0)
+        beginMember()
+          beginMethod(null, null, null, null, null, do)
+            handleIdentifier(int, typeReference)
+            handleNoTypeArguments(do)
+            handleType(int, null)
+            handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'do'., null, {token: do}], do, do)
+            handleIdentifier(do, methodDeclaration)
+            handleNoTypeVariables(()
+            beginFormalParameters((, MemberKind.NonStaticMethod)
+              beginMetadataStar(int)
+              endMetadataStar(0)
+              beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+                handleIdentifier(int, typeReference)
+                handleNoTypeArguments(x)
+                handleType(int, null)
+                handleIdentifier(x, formalParameterDeclaration)
+                handleFormalParameterWithoutValue())
+              endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+            endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
+            handleNoInitializers()
+            handleAsyncModifier(null, null)
+            beginBlockFunctionBody({)
+              beginIfStatement(if)
+                handleIdentifier(x, expression)
+                handleNoTypeArguments(==)
+                handleNoArguments(==)
+                handleSend(x, ==)
+                beginBinaryExpression(==)
+                handleLiteralInt(0)
+                endBinaryExpression(==)
+                handleParenthesizedCondition(()
+                beginThenStatement(return)
+                  beginReturnStatement(return)
+                    handleLiteralInt(42)
+                  endReturnStatement(true, return, ;)
+                endThenStatement(;)
+              endIfStatement(if, null)
+              beginReturnStatement(return)
+                handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'do'., null, {token: do}], do, do)
+                handleIdentifier(, expression)
+                handleNoTypeArguments(do)
+                handleNoArguments(do)
+                handleSend(, do)
+                handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], do, do)
+              endReturnStatement(true, return, ;)
+              beginDoWhileStatement(do)
+                beginDoWhileStatementBody(()
+                  handleIdentifier(x, expression)
+                  handleNoTypeArguments(-)
+                  handleNoArguments(-)
+                  handleSend(x, -)
+                  beginBinaryExpression(-)
+                  handleLiteralInt(1)
+                  endBinaryExpression(-)
+                  handleParenthesizedExpression(()
+                  beginBinaryExpression(+)
+                  handleLiteralInt(1)
+                  endBinaryExpression(+)
+                  handleExpressionStatement(;)
+                endDoWhileStatementBody(;)
+                handleRecoverableError(Message[ExpectedButGot, Expected 'while' before this., null, {string: while}], }, })
+                handleRecoverableError(Message[ExpectedToken, Expected to find '('., null, {string: (}], }, })
+                handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '}'., null, {token: }}], }, })
+                handleIdentifier(, expression)
+                handleNoTypeArguments())
+                handleNoArguments())
+                handleSend(, ))
+                handleParenthesizedCondition(()
+                handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], }, })
+              endDoWhileStatement(do, while, ;)
+            endBlockFunctionBody(3, {, })
+          endClassMethod(null, int, (, null, })
+        endMember()
+        beginMetadataStar(int)
+        endMetadataStar(0)
+        beginMember()
+          beginMethod(null, null, null, null, null, else)
+            handleIdentifier(int, typeReference)
+            handleNoTypeArguments(else)
+            handleType(int, null)
+            handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'else'., null, {token: else}], else, else)
+            handleIdentifier(else, methodDeclaration)
+            handleNoTypeVariables(()
+            beginFormalParameters((, MemberKind.NonStaticMethod)
+              beginMetadataStar(int)
+              endMetadataStar(0)
+              beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+                handleIdentifier(int, typeReference)
+                handleNoTypeArguments(x)
+                handleType(int, null)
+                handleIdentifier(x, formalParameterDeclaration)
+                handleFormalParameterWithoutValue())
+              endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+            endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
+            handleNoInitializers()
+            handleAsyncModifier(null, null)
+            beginBlockFunctionBody({)
+              beginIfStatement(if)
+                handleIdentifier(x, expression)
+                handleNoTypeArguments(==)
+                handleNoArguments(==)
+                handleSend(x, ==)
+                beginBinaryExpression(==)
+                handleLiteralInt(0)
+                endBinaryExpression(==)
+                handleParenthesizedCondition(()
+                beginThenStatement(return)
+                  beginReturnStatement(return)
+                    handleLiteralInt(42)
+                  endReturnStatement(true, return, ;)
+                endThenStatement(;)
+              endIfStatement(if, null)
+              beginReturnStatement(return)
+                handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'else'., null, {token: else}], else, else)
+                handleIdentifier(, expression)
+                handleNoTypeArguments(else)
+                handleNoArguments(else)
+                handleSend(, else)
+                handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], else, else)
+              endReturnStatement(true, return, ;)
+              handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'else'., null, {token: else}], else, else)
+              handleIdentifier(, expression)
+              handleNoTypeArguments(else)
+              handleNoArguments(else)
+              handleSend(, else)
+              handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], else, else)
+              handleExpressionStatement(;)
+              handleRecoverableError(Message[UnexpectedToken, Unexpected token ';'., null, {token: ;}], else, else)
+              handleIdentifier(x, expression)
+              handleNoTypeArguments(-)
+              handleNoArguments(-)
+              handleSend(x, -)
+              beginBinaryExpression(-)
+              handleLiteralInt(1)
+              endBinaryExpression(-)
+              handleParenthesizedExpression(()
+              beginBinaryExpression(+)
+              handleLiteralInt(1)
+              endBinaryExpression(+)
+              handleExpressionStatement(;)
+            endBlockFunctionBody(4, {, })
+          endClassMethod(null, int, (, null, })
+        endMember()
+        beginMetadataStar(int)
+        endMetadataStar(0)
+        beginMember()
+          beginMethod(null, null, null, null, null, enum)
+            handleIdentifier(int, typeReference)
+            handleNoTypeArguments(enum)
+            handleType(int, null)
+            handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'enum'., null, {token: enum}], enum, enum)
+            handleIdentifier(enum, methodDeclaration)
+            handleNoTypeVariables(()
+            beginFormalParameters((, MemberKind.NonStaticMethod)
+              beginMetadataStar(int)
+              endMetadataStar(0)
+              beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+                handleIdentifier(int, typeReference)
+                handleNoTypeArguments(x)
+                handleType(int, null)
+                handleIdentifier(x, formalParameterDeclaration)
+                handleFormalParameterWithoutValue())
+              endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+            endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
+            handleNoInitializers()
+            handleAsyncModifier(null, null)
+            beginBlockFunctionBody({)
+              beginIfStatement(if)
+                handleIdentifier(x, expression)
+                handleNoTypeArguments(==)
+                handleNoArguments(==)
+                handleSend(x, ==)
+                beginBinaryExpression(==)
+                handleLiteralInt(0)
+                endBinaryExpression(==)
+                handleParenthesizedCondition(()
+                beginThenStatement(return)
+                  beginReturnStatement(return)
+                    handleLiteralInt(42)
+                  endReturnStatement(true, return, ;)
+                endThenStatement(;)
+              endIfStatement(if, null)
+              beginReturnStatement(return)
+                handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'enum'., null, {token: enum}], enum, enum)
+                handleIdentifier(enum, expression)
+                handleNoTypeArguments(()
+                beginArguments(()
+                  handleIdentifier(x, expression)
+                  handleNoTypeArguments(-)
+                  handleNoArguments(-)
+                  handleSend(x, -)
+                  beginBinaryExpression(-)
+                  handleLiteralInt(1)
+                  endBinaryExpression(-)
+                endArguments(1, (, ))
+                handleSend(enum, +)
+                beginBinaryExpression(+)
+                handleLiteralInt(1)
+                endBinaryExpression(+)
+              endReturnStatement(true, return, ;)
+            endBlockFunctionBody(2, {, })
+          endClassMethod(null, int, (, null, })
+        endMember()
+        beginMetadataStar(int)
+        endMetadataStar(0)
+        beginMember()
+          beginMethod(null, null, null, null, null, extends)
+            handleIdentifier(int, typeReference)
+            handleNoTypeArguments(extends)
+            handleType(int, null)
+            handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'extends'., null, {token: extends}], extends, extends)
+            handleIdentifier(extends, methodDeclaration)
+            handleNoTypeVariables(()
+            beginFormalParameters((, MemberKind.NonStaticMethod)
+              beginMetadataStar(int)
+              endMetadataStar(0)
+              beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+                handleIdentifier(int, typeReference)
+                handleNoTypeArguments(x)
+                handleType(int, null)
+                handleIdentifier(x, formalParameterDeclaration)
+                handleFormalParameterWithoutValue())
+              endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+            endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
+            handleNoInitializers()
+            handleAsyncModifier(null, null)
+            beginBlockFunctionBody({)
+              beginIfStatement(if)
+                handleIdentifier(x, expression)
+                handleNoTypeArguments(==)
+                handleNoArguments(==)
+                handleSend(x, ==)
+                beginBinaryExpression(==)
+                handleLiteralInt(0)
+                endBinaryExpression(==)
+                handleParenthesizedCondition(()
+                beginThenStatement(return)
+                  beginReturnStatement(return)
+                    handleLiteralInt(42)
+                  endReturnStatement(true, return, ;)
+                endThenStatement(;)
+              endIfStatement(if, null)
+              beginReturnStatement(return)
+                handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'extends'., null, {token: extends}], extends, extends)
+                handleIdentifier(extends, expression)
+                handleNoTypeArguments(()
+                beginArguments(()
+                  handleIdentifier(x, expression)
+                  handleNoTypeArguments(-)
+                  handleNoArguments(-)
+                  handleSend(x, -)
+                  beginBinaryExpression(-)
+                  handleLiteralInt(1)
+                  endBinaryExpression(-)
+                endArguments(1, (, ))
+                handleSend(extends, +)
+                beginBinaryExpression(+)
+                handleLiteralInt(1)
+                endBinaryExpression(+)
+              endReturnStatement(true, return, ;)
+            endBlockFunctionBody(2, {, })
+          endClassMethod(null, int, (, null, })
+        endMember()
+        beginMetadataStar(int)
+        endMetadataStar(0)
+        beginMember()
+          beginMethod(null, null, null, null, null, false)
+            handleIdentifier(int, typeReference)
+            handleNoTypeArguments(false)
+            handleType(int, null)
+            handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'false'., null, {token: false}], false, false)
+            handleIdentifier(false, methodDeclaration)
+            handleNoTypeVariables(()
+            beginFormalParameters((, MemberKind.NonStaticMethod)
+              beginMetadataStar(int)
+              endMetadataStar(0)
+              beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+                handleIdentifier(int, typeReference)
+                handleNoTypeArguments(x)
+                handleType(int, null)
+                handleIdentifier(x, formalParameterDeclaration)
+                handleFormalParameterWithoutValue())
+              endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+            endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
+            handleNoInitializers()
+            handleAsyncModifier(null, null)
+            beginBlockFunctionBody({)
+              beginIfStatement(if)
+                handleIdentifier(x, expression)
+                handleNoTypeArguments(==)
+                handleNoArguments(==)
+                handleSend(x, ==)
+                beginBinaryExpression(==)
+                handleLiteralInt(0)
+                endBinaryExpression(==)
+                handleParenthesizedCondition(()
+                beginThenStatement(return)
+                  beginReturnStatement(return)
+                    handleLiteralInt(42)
+                  endReturnStatement(true, return, ;)
+                endThenStatement(;)
+              endIfStatement(if, null)
+              beginReturnStatement(return)
+                handleLiteralBool(false)
+                handleNoTypeArguments(()
+                beginArguments(()
+                  handleIdentifier(x, expression)
+                  handleNoTypeArguments(-)
+                  handleNoArguments(-)
+                  handleSend(x, -)
+                  beginBinaryExpression(-)
+                  handleLiteralInt(1)
+                  endBinaryExpression(-)
+                endArguments(1, (, ))
+                handleSend((, ))
+                beginBinaryExpression(+)
+                handleLiteralInt(1)
+                endBinaryExpression(+)
+              endReturnStatement(true, return, ;)
+            endBlockFunctionBody(2, {, })
+          endClassMethod(null, int, (, null, })
+        endMember()
+        beginMetadataStar(int)
+        endMetadataStar(0)
+        beginMember()
+          beginMethod(null, null, null, null, null, final)
+            handleIdentifier(int, typeReference)
+            handleNoTypeArguments(final)
+            handleType(int, null)
+            handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'final'., null, {token: final}], final, final)
+            handleIdentifier(final, methodDeclaration)
+            handleNoTypeVariables(()
+            beginFormalParameters((, MemberKind.NonStaticMethod)
+              beginMetadataStar(int)
+              endMetadataStar(0)
+              beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+                handleIdentifier(int, typeReference)
+                handleNoTypeArguments(x)
+                handleType(int, null)
+                handleIdentifier(x, formalParameterDeclaration)
+                handleFormalParameterWithoutValue())
+              endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+            endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
+            handleNoInitializers()
+            handleAsyncModifier(null, null)
+            beginBlockFunctionBody({)
+              beginIfStatement(if)
+                handleIdentifier(x, expression)
+                handleNoTypeArguments(==)
+                handleNoArguments(==)
+                handleSend(x, ==)
+                beginBinaryExpression(==)
+                handleLiteralInt(0)
+                endBinaryExpression(==)
+                handleParenthesizedCondition(()
+                beginThenStatement(return)
+                  beginReturnStatement(return)
+                    handleLiteralInt(42)
+                  endReturnStatement(true, return, ;)
+                endThenStatement(;)
+              endIfStatement(if, null)
+              beginReturnStatement(return)
+                handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'final'., null, {token: final}], final, final)
+                handleIdentifier(, expression)
+                handleNoTypeArguments(final)
+                handleNoArguments(final)
+                handleSend(, final)
+                handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], final, final)
+              endReturnStatement(true, return, ;)
+              beginMetadataStar(final)
+              endMetadataStar(0)
+              handleNoType(final)
+              beginVariablesDeclaration((, null, final)
+                handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}], (, ()
+                handleIdentifier(, localVariableDeclaration)
+                beginInitializedIdentifier()
+                  handleNoVariableInitializer(x)
+                endInitializedIdentifier()
+                handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], x, x)
+              endVariablesDeclaration(1, ;)
+              handleIdentifier(x, expression)
+              handleNoTypeArguments(-)
+              handleNoArguments(-)
+              handleSend(x, -)
+              beginBinaryExpression(-)
+              handleLiteralInt(1)
+              endBinaryExpression(-)
+              handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], 1, 1)
+              handleExpressionStatement(;)
+              handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got ')'., null, {token: )}], ), ))
+              handleIdentifier(, expression)
+              handleNoTypeArguments())
+              handleNoArguments())
+              handleSend(, ))
+              handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], ), ))
+              handleExpressionStatement(;)
+              handleRecoverableError(Message[UnexpectedToken, Unexpected token ';'., null, {token: ;}], ), ))
+              handleRecoverableError(UnsupportedPrefixPlus, +, +)
+              handleIdentifier(, expression)
+              handleNoTypeArguments(+)
+              handleNoArguments(+)
+              handleSend(, +)
+              beginBinaryExpression(+)
+              handleLiteralInt(1)
+              endBinaryExpression(+)
+              handleExpressionStatement(;)
+            endBlockFunctionBody(6, {, })
+          endClassMethod(null, int, (, null, })
+        endMember()
+        beginMetadataStar(int)
+        endMetadataStar(0)
+        beginMember()
+          beginMethod(null, null, null, null, null, finally)
+            handleIdentifier(int, typeReference)
+            handleNoTypeArguments(finally)
+            handleType(int, null)
+            handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'finally'., null, {token: finally}], finally, finally)
+            handleIdentifier(finally, methodDeclaration)
+            handleNoTypeVariables(()
+            beginFormalParameters((, MemberKind.NonStaticMethod)
+              beginMetadataStar(int)
+              endMetadataStar(0)
+              beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+                handleIdentifier(int, typeReference)
+                handleNoTypeArguments(x)
+                handleType(int, null)
+                handleIdentifier(x, formalParameterDeclaration)
+                handleFormalParameterWithoutValue())
+              endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+            endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
+            handleNoInitializers()
+            handleAsyncModifier(null, null)
+            beginBlockFunctionBody({)
+              beginIfStatement(if)
+                handleIdentifier(x, expression)
+                handleNoTypeArguments(==)
+                handleNoArguments(==)
+                handleSend(x, ==)
+                beginBinaryExpression(==)
+                handleLiteralInt(0)
+                endBinaryExpression(==)
+                handleParenthesizedCondition(()
+                beginThenStatement(return)
+                  beginReturnStatement(return)
+                    handleLiteralInt(42)
+                  endReturnStatement(true, return, ;)
+                endThenStatement(;)
+              endIfStatement(if, null)
+              beginReturnStatement(return)
+                handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'finally'., null, {token: finally}], finally, finally)
+                handleIdentifier(finally, expression)
+                handleNoTypeArguments(()
+                beginArguments(()
+                  handleIdentifier(x, expression)
+                  handleNoTypeArguments(-)
+                  handleNoArguments(-)
+                  handleSend(x, -)
+                  beginBinaryExpression(-)
+                  handleLiteralInt(1)
+                  endBinaryExpression(-)
+                endArguments(1, (, ))
+                handleSend(finally, +)
+                beginBinaryExpression(+)
+                handleLiteralInt(1)
+                endBinaryExpression(+)
+              endReturnStatement(true, return, ;)
+            endBlockFunctionBody(2, {, })
+          endClassMethod(null, int, (, null, })
+        endMember()
+        beginMetadataStar(int)
+        endMetadataStar(0)
+        beginMember()
+          beginMethod(null, null, null, null, null, for)
+            handleIdentifier(int, typeReference)
+            handleNoTypeArguments(for)
+            handleType(int, null)
+            handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'for'., null, {token: for}], for, for)
+            handleIdentifier(for, methodDeclaration)
+            handleNoTypeVariables(()
+            beginFormalParameters((, MemberKind.NonStaticMethod)
+              beginMetadataStar(int)
+              endMetadataStar(0)
+              beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+                handleIdentifier(int, typeReference)
+                handleNoTypeArguments(x)
+                handleType(int, null)
+                handleIdentifier(x, formalParameterDeclaration)
+                handleFormalParameterWithoutValue())
+              endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+            endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
+            handleNoInitializers()
+            handleAsyncModifier(null, null)
+            beginBlockFunctionBody({)
+              beginIfStatement(if)
+                handleIdentifier(x, expression)
+                handleNoTypeArguments(==)
+                handleNoArguments(==)
+                handleSend(x, ==)
+                beginBinaryExpression(==)
+                handleLiteralInt(0)
+                endBinaryExpression(==)
+                handleParenthesizedCondition(()
+                beginThenStatement(return)
+                  beginReturnStatement(return)
+                    handleLiteralInt(42)
+                  endReturnStatement(true, return, ;)
+                endThenStatement(;)
+              endIfStatement(if, null)
+              beginReturnStatement(return)
+                handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'for'., null, {token: for}], for, for)
+                handleIdentifier(, expression)
+                handleNoTypeArguments(for)
+                handleNoArguments(for)
+                handleSend(, for)
+                handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], for, for)
+              endReturnStatement(true, return, ;)
+              beginForStatement(for)
+                handleIdentifier(x, expression)
+                handleNoTypeArguments(-)
+                handleNoArguments(-)
+                handleSend(x, -)
+                beginBinaryExpression(-)
+                handleLiteralInt(1)
+                endBinaryExpression(-)
+                handleForInitializerExpressionStatement(1, false)
+                handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], 1, 1)
+                handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got ')'., null, {token: )}], ), ))
+                handleIdentifier(, expression)
+                handleNoTypeArguments())
+                handleNoArguments())
+                handleSend(, ))
+                handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], ), ))
+                handleExpressionStatement(;)
+                handleForLoopParts(for, (, ;, 0)
+                beginForStatementBody(+)
+                  handleRecoverableError(UnsupportedPrefixPlus, +, +)
+                  handleIdentifier(, expression)
+                  handleNoTypeArguments(+)
+                  handleNoArguments(+)
+                  handleSend(, +)
+                  beginBinaryExpression(+)
+                  handleLiteralInt(1)
+                  endBinaryExpression(+)
+                  handleExpressionStatement(;)
+                endForStatementBody(})
+              endForStatement(})
+            endBlockFunctionBody(3, {, })
+          endClassMethod(null, int, (, null, })
+        endMember()
+        beginMetadataStar(int)
+        endMetadataStar(0)
+        beginMember()
+          beginMethod(null, null, null, null, null, if)
+            handleIdentifier(int, typeReference)
+            handleNoTypeArguments(if)
+            handleType(int, null)
+            handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'if'., null, {token: if}], if, if)
+            handleIdentifier(if, methodDeclaration)
+            handleNoTypeVariables(()
+            beginFormalParameters((, MemberKind.NonStaticMethod)
+              beginMetadataStar(int)
+              endMetadataStar(0)
+              beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+                handleIdentifier(int, typeReference)
+                handleNoTypeArguments(x)
+                handleType(int, null)
+                handleIdentifier(x, formalParameterDeclaration)
+                handleFormalParameterWithoutValue())
+              endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+            endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
+            handleNoInitializers()
+            handleAsyncModifier(null, null)
+            beginBlockFunctionBody({)
+              beginIfStatement(if)
+                handleIdentifier(x, expression)
+                handleNoTypeArguments(==)
+                handleNoArguments(==)
+                handleSend(x, ==)
+                beginBinaryExpression(==)
+                handleLiteralInt(0)
+                endBinaryExpression(==)
+                handleParenthesizedCondition(()
+                beginThenStatement(return)
+                  beginReturnStatement(return)
+                    handleLiteralInt(42)
+                  endReturnStatement(true, return, ;)
+                endThenStatement(;)
+              endIfStatement(if, null)
+              beginReturnStatement(return)
+                handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'if'., null, {token: if}], if, if)
+                handleIdentifier(, expression)
+                handleNoTypeArguments(if)
+                handleNoArguments(if)
+                handleSend(, if)
+                handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], if, if)
+              endReturnStatement(true, return, ;)
+              beginIfStatement(if)
+                handleIdentifier(x, expression)
+                handleNoTypeArguments(-)
+                handleNoArguments(-)
+                handleSend(x, -)
+                beginBinaryExpression(-)
+                handleLiteralInt(1)
+                endBinaryExpression(-)
+                handleParenthesizedCondition(()
+                beginThenStatement(+)
+                  handleRecoverableError(UnsupportedPrefixPlus, +, +)
+                  handleIdentifier(, expression)
+                  handleNoTypeArguments(+)
+                  handleNoArguments(+)
+                  handleSend(, +)
+                  beginBinaryExpression(+)
+                  handleLiteralInt(1)
+                  endBinaryExpression(+)
+                  handleExpressionStatement(;)
+                endThenStatement(;)
+              endIfStatement(if, null)
+            endBlockFunctionBody(3, {, })
+          endClassMethod(null, int, (, null, })
+        endMember()
+        beginMetadataStar(int)
+        endMetadataStar(0)
+        beginMember()
+          beginMethod(null, null, null, null, null, in)
+            handleIdentifier(int, typeReference)
+            handleNoTypeArguments(in)
+            handleType(int, null)
+            handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'in'., null, {token: in}], in, in)
+            handleIdentifier(in, methodDeclaration)
+            handleNoTypeVariables(()
+            beginFormalParameters((, MemberKind.NonStaticMethod)
+              beginMetadataStar(int)
+              endMetadataStar(0)
+              beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+                handleIdentifier(int, typeReference)
+                handleNoTypeArguments(x)
+                handleType(int, null)
+                handleIdentifier(x, formalParameterDeclaration)
+                handleFormalParameterWithoutValue())
+              endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+            endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
+            handleNoInitializers()
+            handleAsyncModifier(null, null)
+            beginBlockFunctionBody({)
+              beginIfStatement(if)
+                handleIdentifier(x, expression)
+                handleNoTypeArguments(==)
+                handleNoArguments(==)
+                handleSend(x, ==)
+                beginBinaryExpression(==)
+                handleLiteralInt(0)
+                endBinaryExpression(==)
+                handleParenthesizedCondition(()
+                beginThenStatement(return)
+                  beginReturnStatement(return)
+                    handleLiteralInt(42)
+                  endReturnStatement(true, return, ;)
+                endThenStatement(;)
+              endIfStatement(if, null)
+              beginReturnStatement(return)
+                handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'in'., null, {token: in}], in, in)
+                handleIdentifier(in, expression)
+                handleNoTypeArguments(()
+                beginArguments(()
+                  handleIdentifier(x, expression)
+                  handleNoTypeArguments(-)
+                  handleNoArguments(-)
+                  handleSend(x, -)
+                  beginBinaryExpression(-)
+                  handleLiteralInt(1)
+                  endBinaryExpression(-)
+                endArguments(1, (, ))
+                handleSend(in, +)
+                beginBinaryExpression(+)
+                handleLiteralInt(1)
+                endBinaryExpression(+)
+              endReturnStatement(true, return, ;)
+            endBlockFunctionBody(2, {, })
+          endClassMethod(null, int, (, null, })
+        endMember()
+        beginMetadataStar(int)
+        endMetadataStar(0)
+        beginMember()
+          beginMethod(null, null, null, null, null, is)
+            handleIdentifier(int, typeReference)
+            handleNoTypeArguments(is)
+            handleType(int, null)
+            handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'is'., null, {token: is}], is, is)
+            handleIdentifier(is, methodDeclaration)
+            handleNoTypeVariables(()
+            beginFormalParameters((, MemberKind.NonStaticMethod)
+              beginMetadataStar(int)
+              endMetadataStar(0)
+              beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+                handleIdentifier(int, typeReference)
+                handleNoTypeArguments(x)
+                handleType(int, null)
+                handleIdentifier(x, formalParameterDeclaration)
+                handleFormalParameterWithoutValue())
+              endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+            endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
+            handleNoInitializers()
+            handleAsyncModifier(null, null)
+            beginBlockFunctionBody({)
+              beginIfStatement(if)
+                handleIdentifier(x, expression)
+                handleNoTypeArguments(==)
+                handleNoArguments(==)
+                handleSend(x, ==)
+                beginBinaryExpression(==)
+                handleLiteralInt(0)
+                endBinaryExpression(==)
+                handleParenthesizedCondition(()
+                beginThenStatement(return)
+                  beginReturnStatement(return)
+                    handleLiteralInt(42)
+                  endReturnStatement(true, return, ;)
+                endThenStatement(;)
+              endIfStatement(if, null)
+              beginReturnStatement(return)
+                handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'is'., null, {token: is}], is, is)
+                handleIdentifier(, expression)
+                handleNoTypeArguments(is)
+                handleNoArguments(is)
+                handleSend(, is)
+                beginIsOperatorType(is)
+                  handleRecoverableError(Message[ExpectedType, Expected a type, but got '('., null, {token: (}], (, ()
+                  handleIdentifier(, typeReference)
+                  handleNoTypeArguments(()
+                  handleType(, null)
+                endIsOperatorType(is)
+                handleIsOperator(is, null)
+                handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], (, ()
+              endReturnStatement(true, return, ;)
+              handleIdentifier(x, expression)
+              handleNoTypeArguments(-)
+              handleNoArguments(-)
+              handleSend(x, -)
+              beginBinaryExpression(-)
+              handleLiteralInt(1)
+              endBinaryExpression(-)
+              handleParenthesizedExpression(()
+              beginBinaryExpression(+)
+              handleLiteralInt(1)
+              endBinaryExpression(+)
+              handleExpressionStatement(;)
+            endBlockFunctionBody(3, {, })
+          endClassMethod(null, int, (, null, })
+        endMember()
+        beginMetadataStar(int)
+        endMetadataStar(0)
+        beginMember()
+          beginMethod(null, null, null, null, null, new)
+            handleIdentifier(int, typeReference)
+            handleNoTypeArguments(new)
+            handleType(int, null)
+            handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'new'., null, {token: new}], new, new)
+            handleIdentifier(new, methodDeclaration)
+            handleNoTypeVariables(()
+            beginFormalParameters((, MemberKind.NonStaticMethod)
+              beginMetadataStar(int)
+              endMetadataStar(0)
+              beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+                handleIdentifier(int, typeReference)
+                handleNoTypeArguments(x)
+                handleType(int, null)
+                handleIdentifier(x, formalParameterDeclaration)
+                handleFormalParameterWithoutValue())
+              endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+            endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
+            handleNoInitializers()
+            handleAsyncModifier(null, null)
+            beginBlockFunctionBody({)
+              beginIfStatement(if)
+                handleIdentifier(x, expression)
+                handleNoTypeArguments(==)
+                handleNoArguments(==)
+                handleSend(x, ==)
+                beginBinaryExpression(==)
+                handleLiteralInt(0)
+                endBinaryExpression(==)
+                handleParenthesizedCondition(()
+                beginThenStatement(return)
+                  beginReturnStatement(return)
+                    handleLiteralInt(42)
+                  endReturnStatement(true, return, ;)
+                endThenStatement(;)
+              endIfStatement(if, null)
+              beginReturnStatement(return)
+                beginNewExpression(new)
+                  handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}], (, ()
+                  handleIdentifier(, constructorReference)
+                  beginConstructorReference()
+                    handleNoTypeArguments(()
+                    handleNoConstructorReferenceContinuationAfterTypeArguments(()
+                  endConstructorReference(, null, ()
+                  beginArguments(()
+                    handleIdentifier(x, expression)
+                    handleNoTypeArguments(-)
+                    handleNoArguments(-)
+                    handleSend(x, -)
+                    beginBinaryExpression(-)
+                    handleLiteralInt(1)
+                    endBinaryExpression(-)
+                  endArguments(1, (, ))
+                endNewExpression(new)
+                beginBinaryExpression(+)
+                handleLiteralInt(1)
+                endBinaryExpression(+)
+              endReturnStatement(true, return, ;)
+            endBlockFunctionBody(2, {, })
+          endClassMethod(null, int, (, null, })
+        endMember()
+        beginMetadataStar(int)
+        endMetadataStar(0)
+        beginMember()
+          beginMethod(null, null, null, null, null, null)
+            handleIdentifier(int, typeReference)
+            handleNoTypeArguments(null)
+            handleType(int, null)
+            handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'null'., null, {token: null}], null, null)
+            handleIdentifier(null, methodDeclaration)
+            handleNoTypeVariables(()
+            beginFormalParameters((, MemberKind.NonStaticMethod)
+              beginMetadataStar(int)
+              endMetadataStar(0)
+              beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+                handleIdentifier(int, typeReference)
+                handleNoTypeArguments(x)
+                handleType(int, null)
+                handleIdentifier(x, formalParameterDeclaration)
+                handleFormalParameterWithoutValue())
+              endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+            endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
+            handleNoInitializers()
+            handleAsyncModifier(null, null)
+            beginBlockFunctionBody({)
+              beginIfStatement(if)
+                handleIdentifier(x, expression)
+                handleNoTypeArguments(==)
+                handleNoArguments(==)
+                handleSend(x, ==)
+                beginBinaryExpression(==)
+                handleLiteralInt(0)
+                endBinaryExpression(==)
+                handleParenthesizedCondition(()
+                beginThenStatement(return)
+                  beginReturnStatement(return)
+                    handleLiteralInt(42)
+                  endReturnStatement(true, return, ;)
+                endThenStatement(;)
+              endIfStatement(if, null)
+              beginReturnStatement(return)
+                handleLiteralNull(null)
+                handleNoTypeArguments(()
+                beginArguments(()
+                  handleIdentifier(x, expression)
+                  handleNoTypeArguments(-)
+                  handleNoArguments(-)
+                  handleSend(x, -)
+                  beginBinaryExpression(-)
+                  handleLiteralInt(1)
+                  endBinaryExpression(-)
+                endArguments(1, (, ))
+                handleSend((, ))
+                beginBinaryExpression(+)
+                handleLiteralInt(1)
+                endBinaryExpression(+)
+              endReturnStatement(true, return, ;)
+            endBlockFunctionBody(2, {, })
+          endClassMethod(null, int, (, null, })
+        endMember()
+        beginMetadataStar(int)
+        endMetadataStar(0)
+        beginMember()
+          beginMethod(null, null, null, null, null, rethrow)
+            handleIdentifier(int, typeReference)
+            handleNoTypeArguments(rethrow)
+            handleType(int, null)
+            handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'rethrow'., null, {token: rethrow}], rethrow, rethrow)
+            handleIdentifier(rethrow, methodDeclaration)
+            handleNoTypeVariables(()
+            beginFormalParameters((, MemberKind.NonStaticMethod)
+              beginMetadataStar(int)
+              endMetadataStar(0)
+              beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+                handleIdentifier(int, typeReference)
+                handleNoTypeArguments(x)
+                handleType(int, null)
+                handleIdentifier(x, formalParameterDeclaration)
+                handleFormalParameterWithoutValue())
+              endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+            endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
+            handleNoInitializers()
+            handleAsyncModifier(null, null)
+            beginBlockFunctionBody({)
+              beginIfStatement(if)
+                handleIdentifier(x, expression)
+                handleNoTypeArguments(==)
+                handleNoArguments(==)
+                handleSend(x, ==)
+                beginBinaryExpression(==)
+                handleLiteralInt(0)
+                endBinaryExpression(==)
+                handleParenthesizedCondition(()
+                beginThenStatement(return)
+                  beginReturnStatement(return)
+                    handleLiteralInt(42)
+                  endReturnStatement(true, return, ;)
+                endThenStatement(;)
+              endIfStatement(if, null)
+              beginReturnStatement(return)
+                handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'rethrow'., null, {token: rethrow}], rethrow, rethrow)
+                handleIdentifier(rethrow, expression)
+                handleNoTypeArguments(()
+                beginArguments(()
+                  handleIdentifier(x, expression)
+                  handleNoTypeArguments(-)
+                  handleNoArguments(-)
+                  handleSend(x, -)
+                  beginBinaryExpression(-)
+                  handleLiteralInt(1)
+                  endBinaryExpression(-)
+                endArguments(1, (, ))
+                handleSend(rethrow, +)
+                beginBinaryExpression(+)
+                handleLiteralInt(1)
+                endBinaryExpression(+)
+              endReturnStatement(true, return, ;)
+            endBlockFunctionBody(2, {, })
+          endClassMethod(null, int, (, null, })
+        endMember()
+        beginMetadataStar(int)
+        endMetadataStar(0)
+        beginMember()
+          beginMethod(null, null, null, null, null, return)
+            handleIdentifier(int, typeReference)
+            handleNoTypeArguments(return)
+            handleType(int, null)
+            handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'return'., null, {token: return}], return, return)
+            handleIdentifier(return, methodDeclaration)
+            handleNoTypeVariables(()
+            beginFormalParameters((, MemberKind.NonStaticMethod)
+              beginMetadataStar(int)
+              endMetadataStar(0)
+              beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+                handleIdentifier(int, typeReference)
+                handleNoTypeArguments(x)
+                handleType(int, null)
+                handleIdentifier(x, formalParameterDeclaration)
+                handleFormalParameterWithoutValue())
+              endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+            endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
+            handleNoInitializers()
+            handleAsyncModifier(null, null)
+            beginBlockFunctionBody({)
+              beginIfStatement(if)
+                handleIdentifier(x, expression)
+                handleNoTypeArguments(==)
+                handleNoArguments(==)
+                handleSend(x, ==)
+                beginBinaryExpression(==)
+                handleLiteralInt(0)
+                endBinaryExpression(==)
+                handleParenthesizedCondition(()
+                beginThenStatement(return)
+                  beginReturnStatement(return)
+                    handleLiteralInt(42)
+                  endReturnStatement(true, return, ;)
+                endThenStatement(;)
+              endIfStatement(if, null)
+              beginReturnStatement(return)
+                handleRecoverableError(Message[UnexpectedToken, Unexpected token 'return'., null, {token: return}], return, return)
+                handleIdentifier(x, expression)
+                handleNoTypeArguments(-)
+                handleNoArguments(-)
+                handleSend(x, -)
+                beginBinaryExpression(-)
+                handleLiteralInt(1)
+                endBinaryExpression(-)
+                handleParenthesizedExpression(()
+                beginBinaryExpression(+)
+                handleLiteralInt(1)
+                endBinaryExpression(+)
+              endReturnStatement(true, return, ;)
+            endBlockFunctionBody(2, {, })
+          endClassMethod(null, int, (, null, })
+        endMember()
+        beginMetadataStar(int)
+        endMetadataStar(0)
+        beginMember()
+          beginMethod(null, null, null, null, null, super)
+            handleIdentifier(int, typeReference)
+            handleNoTypeArguments(super)
+            handleType(int, null)
+            handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'super'., null, {token: super}], super, super)
+            handleIdentifier(super, methodDeclaration)
+            handleNoTypeVariables(()
+            beginFormalParameters((, MemberKind.NonStaticMethod)
+              beginMetadataStar(int)
+              endMetadataStar(0)
+              beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+                handleIdentifier(int, typeReference)
+                handleNoTypeArguments(x)
+                handleType(int, null)
+                handleIdentifier(x, formalParameterDeclaration)
+                handleFormalParameterWithoutValue())
+              endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+            endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
+            handleNoInitializers()
+            handleAsyncModifier(null, null)
+            beginBlockFunctionBody({)
+              beginIfStatement(if)
+                handleIdentifier(x, expression)
+                handleNoTypeArguments(==)
+                handleNoArguments(==)
+                handleSend(x, ==)
+                beginBinaryExpression(==)
+                handleLiteralInt(0)
+                endBinaryExpression(==)
+                handleParenthesizedCondition(()
+                beginThenStatement(return)
+                  beginReturnStatement(return)
+                    handleLiteralInt(42)
+                  endReturnStatement(true, return, ;)
+                endThenStatement(;)
+              endIfStatement(if, null)
+              beginReturnStatement(return)
+                handleSuperExpression(super, expression)
+                handleNoTypeArguments(()
+                beginArguments(()
+                  handleIdentifier(x, expression)
+                  handleNoTypeArguments(-)
+                  handleNoArguments(-)
+                  handleSend(x, -)
+                  beginBinaryExpression(-)
+                  handleLiteralInt(1)
+                  endBinaryExpression(-)
+                endArguments(1, (, ))
+                handleSend(super, +)
+                beginBinaryExpression(+)
+                handleLiteralInt(1)
+                endBinaryExpression(+)
+              endReturnStatement(true, return, ;)
+            endBlockFunctionBody(2, {, })
+          endClassMethod(null, int, (, null, })
+        endMember()
+        beginMetadataStar(int)
+        endMetadataStar(0)
+        beginMember()
+          beginMethod(null, null, null, null, null, switch)
+            handleIdentifier(int, typeReference)
+            handleNoTypeArguments(switch)
+            handleType(int, null)
+            handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'switch'., null, {token: switch}], switch, switch)
+            handleIdentifier(switch, methodDeclaration)
+            handleNoTypeVariables(()
+            beginFormalParameters((, MemberKind.NonStaticMethod)
+              beginMetadataStar(int)
+              endMetadataStar(0)
+              beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+                handleIdentifier(int, typeReference)
+                handleNoTypeArguments(x)
+                handleType(int, null)
+                handleIdentifier(x, formalParameterDeclaration)
+                handleFormalParameterWithoutValue())
+              endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+            endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
+            handleNoInitializers()
+            handleAsyncModifier(null, null)
+            beginBlockFunctionBody({)
+              beginIfStatement(if)
+                handleIdentifier(x, expression)
+                handleNoTypeArguments(==)
+                handleNoArguments(==)
+                handleSend(x, ==)
+                beginBinaryExpression(==)
+                handleLiteralInt(0)
+                endBinaryExpression(==)
+                handleParenthesizedCondition(()
+                beginThenStatement(return)
+                  beginReturnStatement(return)
+                    handleLiteralInt(42)
+                  endReturnStatement(true, return, ;)
+                endThenStatement(;)
+              endIfStatement(if, null)
+              beginReturnStatement(return)
+                handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'switch'., null, {token: switch}], switch, switch)
+                handleIdentifier(, expression)
+                handleNoTypeArguments(switch)
+                handleNoArguments(switch)
+                handleSend(, switch)
+                handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], switch, switch)
+              endReturnStatement(true, return, ;)
+              beginSwitchStatement(switch)
+                handleIdentifier(x, expression)
+                handleNoTypeArguments(-)
+                handleNoArguments(-)
+                handleSend(x, -)
+                beginBinaryExpression(-)
+                handleLiteralInt(1)
+                endBinaryExpression(-)
+                handleParenthesizedCondition(()
+                handleRecoverableError(Message[ExpectedClassOrMixinBody, A switch statement must have a body, even if it is empty., Try adding an empty body., {string: switch statement}], ), ))
+                beginSwitchBlock({)
+                endSwitchBlock(0, {, })
+              endSwitchStatement(switch, })
+              handleRecoverableError(UnsupportedPrefixPlus, +, +)
+              handleIdentifier(, expression)
+              handleNoTypeArguments(+)
+              handleNoArguments(+)
+              handleSend(, +)
+              beginBinaryExpression(+)
+              handleLiteralInt(1)
+              endBinaryExpression(+)
+              handleExpressionStatement(;)
+            endBlockFunctionBody(4, {, })
+          endClassMethod(null, int, (, null, })
+        endMember()
+        beginMetadataStar(int)
+        endMetadataStar(0)
+        beginMember()
+          handleIdentifier(int, typeReference)
+          handleNoTypeArguments(this)
+          handleType(int, null)
+          handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'this'., null, {token: this}], this, this)
+          handleIdentifier(this, fieldDeclaration)
+          handleNoFieldInitializer(()
+          handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], this, this)
         endClassFields(null, null, null, null, 1, int, ;)
       endMember()
-      beginMetadataStar(assert)
-      endMetadataStar(0)
-      beginMember()
-        handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got 'assert'., null, {token: assert}], assert, assert)
-        handleInvalidMember(assert)
-      endMember()
       beginMetadataStar(()
       endMetadataStar(0)
       beginMember()
         beginMethod(null, null, null, null, null, ()
-          handleNoType(assert)
+          handleNoType(;)
           handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}], (, ()
           handleIdentifier(, methodDeclaration)
           handleNoTypeVariables(()
@@ -919,7 +2147,9 @@
               endThenStatement(;)
             endIfStatement(if, null)
             beginReturnStatement(return)
-              beginAssert(assert, Assert.Expression)
+              handleThisExpression(this, expression)
+              handleNoTypeArguments(()
+              beginArguments(()
                 handleIdentifier(x, expression)
                 handleNoTypeArguments(-)
                 handleNoArguments(-)
@@ -927,8 +2157,8 @@
                 beginBinaryExpression(-)
                 handleLiteralInt(1)
                 endBinaryExpression(-)
-                handleRecoverableError(AssertAsExpression, assert, assert)
-              endAssert(assert, Assert.Expression, (, null, +)
+              endArguments(1, (, ))
+              handleSend(this, +)
               beginBinaryExpression(+)
               handleLiteralInt(1)
               endBinaryExpression(+)
@@ -939,140 +2169,171 @@
       beginMetadataStar(int)
       endMetadataStar(0)
       beginMember()
-        handleRecoverableError(MissingConstFinalVarOrType, int, int)
-        handleNoType(})
-        handleIdentifier(int, fieldDeclaration)
-        handleNoFieldInitializer(break)
-        handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
-      endClassFields(null, null, null, null, 1, int, ;)
-    endMember()
-    beginMetadataStar(break)
-    endMetadataStar(0)
-    beginMember()
-      handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got 'break'., null, {token: break}], break, break)
-      handleInvalidMember(break)
-    endMember()
-    beginMetadataStar(()
-    endMetadataStar(0)
-    beginMember()
-      beginMethod(null, null, null, null, null, ()
-        handleNoType(break)
-        handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}], (, ()
-        handleIdentifier(, methodDeclaration)
-        handleNoTypeVariables(()
-        beginFormalParameters((, MemberKind.NonStaticMethod)
-          beginMetadataStar(int)
-          endMetadataStar(0)
-          beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
-            handleIdentifier(int, typeReference)
-            handleNoTypeArguments(x)
-            handleType(int, null)
-            handleIdentifier(x, formalParameterDeclaration)
-            handleFormalParameterWithoutValue())
-          endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
-        endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
-        handleNoInitializers()
-        handleAsyncModifier(null, null)
-        beginBlockFunctionBody({)
-          beginIfStatement(if)
-            handleIdentifier(x, expression)
-            handleNoTypeArguments(==)
-            handleNoArguments(==)
-            handleSend(x, ==)
-            beginBinaryExpression(==)
-            handleLiteralInt(0)
-            endBinaryExpression(==)
-            handleParenthesizedCondition(()
-            beginThenStatement(return)
-              beginReturnStatement(return)
-                handleLiteralInt(42)
-              endReturnStatement(true, return, ;)
-            endThenStatement(;)
-          endIfStatement(if, null)
-          beginReturnStatement(return)
-            handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'break'., null, {token: break}], break, break)
-            handleIdentifier(, expression)
-            handleNoTypeArguments(break)
-            handleNoArguments(break)
-            handleSend(, break)
-            handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], break, break)
-          endReturnStatement(true, return, ;)
-          handleRecoverableError(BreakOutsideOfLoop, break, break)
-          handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], break, break)
-          handleBreakStatement(false, break, ;)
-          handleIdentifier(x, expression)
-          handleNoTypeArguments(-)
-          handleNoArguments(-)
-          handleSend(x, -)
-          beginBinaryExpression(-)
-          handleLiteralInt(1)
-          endBinaryExpression(-)
-          handleParenthesizedExpression(()
-          beginBinaryExpression(+)
-          handleLiteralInt(1)
-          endBinaryExpression(+)
-          handleExpressionStatement(;)
-        endBlockFunctionBody(4, {, })
-      endClassMethod(null, , (, null, })
-    endMember()
-    beginMetadataStar(int)
-    endMetadataStar(0)
-    beginMember()
-      handleRecoverableError(MissingConstFinalVarOrType, int, int)
-      handleNoType(})
-      handleIdentifier(int, fieldDeclaration)
-      handleNoFieldInitializer(case)
-      handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
-    endClassFields(null, null, null, null, 1, int, ;)
-  endMember()
-  beginMetadataStar(case)
-  endMetadataStar(0)
-  beginMember()
-    handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got 'case'., null, {token: case}], case, case)
-    handleInvalidMember(case)
-  endMember()
-  beginMetadataStar(()
-  endMetadataStar(0)
-  beginMember()
-    beginMethod(null, null, null, null, null, ()
-      handleNoType(case)
-      handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}], (, ()
-      handleIdentifier(, methodDeclaration)
-      handleNoTypeVariables(()
-      beginFormalParameters((, MemberKind.NonStaticMethod)
-        beginMetadataStar(int)
-        endMetadataStar(0)
-        beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+        beginMethod(null, null, null, null, null, throw)
           handleIdentifier(int, typeReference)
-          handleNoTypeArguments(x)
+          handleNoTypeArguments(throw)
           handleType(int, null)
-          handleIdentifier(x, formalParameterDeclaration)
-          handleFormalParameterWithoutValue())
-        endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
-      endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
-      handleNoInitializers()
-      handleAsyncModifier(null, null)
-      beginBlockFunctionBody({)
-        beginIfStatement(if)
-          handleIdentifier(x, expression)
-          handleNoTypeArguments(==)
-          handleNoArguments(==)
-          handleSend(x, ==)
-          beginBinaryExpression(==)
-          handleLiteralInt(0)
-          endBinaryExpression(==)
-          handleParenthesizedCondition(()
-          beginThenStatement(return)
+          handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'throw'., null, {token: throw}], throw, throw)
+          handleIdentifier(throw, methodDeclaration)
+          handleNoTypeVariables(()
+          beginFormalParameters((, MemberKind.NonStaticMethod)
+            beginMetadataStar(int)
+            endMetadataStar(0)
+            beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+              handleIdentifier(int, typeReference)
+              handleNoTypeArguments(x)
+              handleType(int, null)
+              handleIdentifier(x, formalParameterDeclaration)
+              handleFormalParameterWithoutValue())
+            endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+          endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
+          handleNoInitializers()
+          handleAsyncModifier(null, null)
+          beginBlockFunctionBody({)
+            beginIfStatement(if)
+              handleIdentifier(x, expression)
+              handleNoTypeArguments(==)
+              handleNoArguments(==)
+              handleSend(x, ==)
+              beginBinaryExpression(==)
+              handleLiteralInt(0)
+              endBinaryExpression(==)
+              handleParenthesizedCondition(()
+              beginThenStatement(return)
+                beginReturnStatement(return)
+                  handleLiteralInt(42)
+                endReturnStatement(true, return, ;)
+              endThenStatement(;)
+            endIfStatement(if, null)
             beginReturnStatement(return)
-              handleLiteralInt(42)
+              handleIdentifier(x, expression)
+              handleNoTypeArguments(-)
+              handleNoArguments(-)
+              handleSend(x, -)
+              beginBinaryExpression(-)
+              handleLiteralInt(1)
+              endBinaryExpression(-)
+              handleParenthesizedExpression(()
+              beginBinaryExpression(+)
+              handleLiteralInt(1)
+              endBinaryExpression(+)
+              handleThrowExpression(throw, ;)
             endReturnStatement(true, return, ;)
-          endThenStatement(;)
-        endIfStatement(if, null)
-        beginReturnStatement(return)
-          handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'case'., null, {token: case}], case, case)
-          handleIdentifier(case, expression)
-          handleNoTypeArguments(()
-          beginArguments(()
+          endBlockFunctionBody(2, {, })
+        endClassMethod(null, int, (, null, })
+      endMember()
+      beginMetadataStar(int)
+      endMetadataStar(0)
+      beginMember()
+        beginMethod(null, null, null, null, null, true)
+          handleIdentifier(int, typeReference)
+          handleNoTypeArguments(true)
+          handleType(int, null)
+          handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'true'., null, {token: true}], true, true)
+          handleIdentifier(true, methodDeclaration)
+          handleNoTypeVariables(()
+          beginFormalParameters((, MemberKind.NonStaticMethod)
+            beginMetadataStar(int)
+            endMetadataStar(0)
+            beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+              handleIdentifier(int, typeReference)
+              handleNoTypeArguments(x)
+              handleType(int, null)
+              handleIdentifier(x, formalParameterDeclaration)
+              handleFormalParameterWithoutValue())
+            endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+          endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
+          handleNoInitializers()
+          handleAsyncModifier(null, null)
+          beginBlockFunctionBody({)
+            beginIfStatement(if)
+              handleIdentifier(x, expression)
+              handleNoTypeArguments(==)
+              handleNoArguments(==)
+              handleSend(x, ==)
+              beginBinaryExpression(==)
+              handleLiteralInt(0)
+              endBinaryExpression(==)
+              handleParenthesizedCondition(()
+              beginThenStatement(return)
+                beginReturnStatement(return)
+                  handleLiteralInt(42)
+                endReturnStatement(true, return, ;)
+              endThenStatement(;)
+            endIfStatement(if, null)
+            beginReturnStatement(return)
+              handleLiteralBool(true)
+              handleNoTypeArguments(()
+              beginArguments(()
+                handleIdentifier(x, expression)
+                handleNoTypeArguments(-)
+                handleNoArguments(-)
+                handleSend(x, -)
+                beginBinaryExpression(-)
+                handleLiteralInt(1)
+                endBinaryExpression(-)
+              endArguments(1, (, ))
+              handleSend((, ))
+              beginBinaryExpression(+)
+              handleLiteralInt(1)
+              endBinaryExpression(+)
+            endReturnStatement(true, return, ;)
+          endBlockFunctionBody(2, {, })
+        endClassMethod(null, int, (, null, })
+      endMember()
+      beginMetadataStar(int)
+      endMetadataStar(0)
+      beginMember()
+        beginMethod(null, null, null, null, null, try)
+          handleIdentifier(int, typeReference)
+          handleNoTypeArguments(try)
+          handleType(int, null)
+          handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'try'., null, {token: try}], try, try)
+          handleIdentifier(try, methodDeclaration)
+          handleNoTypeVariables(()
+          beginFormalParameters((, MemberKind.NonStaticMethod)
+            beginMetadataStar(int)
+            endMetadataStar(0)
+            beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+              handleIdentifier(int, typeReference)
+              handleNoTypeArguments(x)
+              handleType(int, null)
+              handleIdentifier(x, formalParameterDeclaration)
+              handleFormalParameterWithoutValue())
+            endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+          endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
+          handleNoInitializers()
+          handleAsyncModifier(null, null)
+          beginBlockFunctionBody({)
+            beginIfStatement(if)
+              handleIdentifier(x, expression)
+              handleNoTypeArguments(==)
+              handleNoArguments(==)
+              handleSend(x, ==)
+              beginBinaryExpression(==)
+              handleLiteralInt(0)
+              endBinaryExpression(==)
+              handleParenthesizedCondition(()
+              beginThenStatement(return)
+                beginReturnStatement(return)
+                  handleLiteralInt(42)
+                endReturnStatement(true, return, ;)
+              endThenStatement(;)
+            endIfStatement(if, null)
+            beginReturnStatement(return)
+              handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'try'., null, {token: try}], try, try)
+              handleIdentifier(, expression)
+              handleNoTypeArguments(try)
+              handleNoArguments(try)
+              handleSend(, try)
+              handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], try, try)
+            endReturnStatement(true, return, ;)
+            beginTryStatement(try)
+              handleRecoverableError(Message[ExpectedClassOrMixinBody, A try statement must have a body, even if it is empty., Try adding an empty body., {string: try statement}], try, try)
+              beginBlock({, BlockKind(try statement))
+              endBlock(0, {, }, BlockKind(try statement))
+              handleRecoverableError(OnlyTry, try, try)
+            endTryStatement(0, try, null)
             handleIdentifier(x, expression)
             handleNoTypeArguments(-)
             handleNoArguments(-)
@@ -1080,2386 +2341,320 @@
             beginBinaryExpression(-)
             handleLiteralInt(1)
             endBinaryExpression(-)
-          endArguments(1, (, ))
-          handleSend(case, +)
-          beginBinaryExpression(+)
-          handleLiteralInt(1)
-          endBinaryExpression(+)
-        endReturnStatement(true, return, ;)
-      endBlockFunctionBody(2, {, })
-    endClassMethod(null, , (, null, })
-  endMember()
-  beginMetadataStar(int)
-  endMetadataStar(0)
-  beginMember()
-    handleRecoverableError(MissingConstFinalVarOrType, int, int)
-    handleNoType(})
-    handleIdentifier(int, fieldDeclaration)
-    handleNoFieldInitializer(catch)
-    handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
-  endClassFields(null, null, null, null, 1, int, ;)
-endMember()
-beginMetadataStar(catch)
-endMetadataStar(0)
-beginMember()
-  handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got 'catch'., null, {token: catch}], catch, catch)
-  handleInvalidMember(catch)
-endMember()
-beginMetadataStar(()
-endMetadataStar(0)
-beginMember()
-  beginMethod(null, null, null, null, null, ()
-    handleNoType(catch)
-    handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}], (, ()
-    handleIdentifier(, methodDeclaration)
-    handleNoTypeVariables(()
-    beginFormalParameters((, MemberKind.NonStaticMethod)
+            handleParenthesizedExpression(()
+            beginBinaryExpression(+)
+            handleLiteralInt(1)
+            endBinaryExpression(+)
+            handleExpressionStatement(;)
+          endBlockFunctionBody(4, {, })
+        endClassMethod(null, int, (, null, })
+      endMember()
       beginMetadataStar(int)
       endMetadataStar(0)
-      beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
-        handleIdentifier(int, typeReference)
-        handleNoTypeArguments(x)
-        handleType(int, null)
-        handleIdentifier(x, formalParameterDeclaration)
-        handleFormalParameterWithoutValue())
-      endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
-    endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
-    handleNoInitializers()
-    handleAsyncModifier(null, null)
-    beginBlockFunctionBody({)
-      beginIfStatement(if)
-        handleIdentifier(x, expression)
-        handleNoTypeArguments(==)
-        handleNoArguments(==)
-        handleSend(x, ==)
-        beginBinaryExpression(==)
-        handleLiteralInt(0)
-        endBinaryExpression(==)
-        handleParenthesizedCondition(()
-        beginThenStatement(return)
-          beginReturnStatement(return)
-            handleLiteralInt(42)
-          endReturnStatement(true, return, ;)
-        endThenStatement(;)
-      endIfStatement(if, null)
-      beginReturnStatement(return)
-        handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'catch'., null, {token: catch}], catch, catch)
-        handleIdentifier(catch, expression)
-        handleNoTypeArguments(()
-        beginArguments(()
-          handleIdentifier(x, expression)
-          handleNoTypeArguments(-)
-          handleNoArguments(-)
-          handleSend(x, -)
-          beginBinaryExpression(-)
-          handleLiteralInt(1)
-          endBinaryExpression(-)
-        endArguments(1, (, ))
-        handleSend(catch, +)
-        beginBinaryExpression(+)
-        handleLiteralInt(1)
-        endBinaryExpression(+)
-      endReturnStatement(true, return, ;)
-    endBlockFunctionBody(2, {, })
-  endClassMethod(null, , (, null, })
-endMember()
-beginMetadataStar(int)
-endMetadataStar(0)
-beginMember()
-  handleRecoverableError(MissingConstFinalVarOrType, int, int)
-  handleNoType(})
-  handleIdentifier(int, fieldDeclaration)
-  handleNoFieldInitializer(class)
-  handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
-endClassFields(null, null, null, null, 1, int, ;)
-endMember()
-beginMetadataStar(class)
-endMetadataStar(0)
-beginMember()
-handleRecoverableError(ClassInClass, class, class)
-handleInvalidMember(class)
-beginMetadataStar(()
-endMetadataStar(0)
-beginMember()
-  beginMethod(null, null, null, null, null, ()
-    handleNoType(class)
-    handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}], (, ()
-    handleIdentifier(, methodDeclaration)
-    handleNoTypeVariables(()
-    beginFormalParameters((, MemberKind.NonStaticMethod)
+      beginMember()
+        beginMethod(null, null, null, null, null, var)
+          handleIdentifier(int, typeReference)
+          handleNoTypeArguments(var)
+          handleType(int, null)
+          handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'var'., null, {token: var}], var, var)
+          handleIdentifier(var, methodDeclaration)
+          handleNoTypeVariables(()
+          beginFormalParameters((, MemberKind.NonStaticMethod)
+            beginMetadataStar(int)
+            endMetadataStar(0)
+            beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+              handleIdentifier(int, typeReference)
+              handleNoTypeArguments(x)
+              handleType(int, null)
+              handleIdentifier(x, formalParameterDeclaration)
+              handleFormalParameterWithoutValue())
+            endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+          endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
+          handleNoInitializers()
+          handleAsyncModifier(null, null)
+          beginBlockFunctionBody({)
+            beginIfStatement(if)
+              handleIdentifier(x, expression)
+              handleNoTypeArguments(==)
+              handleNoArguments(==)
+              handleSend(x, ==)
+              beginBinaryExpression(==)
+              handleLiteralInt(0)
+              endBinaryExpression(==)
+              handleParenthesizedCondition(()
+              beginThenStatement(return)
+                beginReturnStatement(return)
+                  handleLiteralInt(42)
+                endReturnStatement(true, return, ;)
+              endThenStatement(;)
+            endIfStatement(if, null)
+            beginReturnStatement(return)
+              handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'var'., null, {token: var}], var, var)
+              handleIdentifier(, expression)
+              handleNoTypeArguments(var)
+              handleNoArguments(var)
+              handleSend(, var)
+              handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], var, var)
+            endReturnStatement(true, return, ;)
+            beginMetadataStar(var)
+            endMetadataStar(0)
+            handleNoType(var)
+            beginVariablesDeclaration((, null, var)
+              handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}], (, ()
+              handleIdentifier(, localVariableDeclaration)
+              beginInitializedIdentifier()
+                handleNoVariableInitializer(x)
+              endInitializedIdentifier()
+              handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], x, x)
+            endVariablesDeclaration(1, ;)
+            handleIdentifier(x, expression)
+            handleNoTypeArguments(-)
+            handleNoArguments(-)
+            handleSend(x, -)
+            beginBinaryExpression(-)
+            handleLiteralInt(1)
+            endBinaryExpression(-)
+            handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], 1, 1)
+            handleExpressionStatement(;)
+            handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got ')'., null, {token: )}], ), ))
+            handleIdentifier(, expression)
+            handleNoTypeArguments())
+            handleNoArguments())
+            handleSend(, ))
+            handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], ), ))
+            handleExpressionStatement(;)
+            handleRecoverableError(Message[UnexpectedToken, Unexpected token ';'., null, {token: ;}], ), ))
+            handleRecoverableError(UnsupportedPrefixPlus, +, +)
+            handleIdentifier(, expression)
+            handleNoTypeArguments(+)
+            handleNoArguments(+)
+            handleSend(, +)
+            beginBinaryExpression(+)
+            handleLiteralInt(1)
+            endBinaryExpression(+)
+            handleExpressionStatement(;)
+          endBlockFunctionBody(6, {, })
+        endClassMethod(null, int, (, null, })
+      endMember()
       beginMetadataStar(int)
       endMetadataStar(0)
-      beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
-        handleIdentifier(int, typeReference)
-        handleNoTypeArguments(x)
-        handleType(int, null)
-        handleIdentifier(x, formalParameterDeclaration)
-        handleFormalParameterWithoutValue())
-      endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
-    endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
-    handleNoInitializers()
-    handleAsyncModifier(null, null)
-    beginBlockFunctionBody({)
-      beginIfStatement(if)
-        handleIdentifier(x, expression)
-        handleNoTypeArguments(==)
-        handleNoArguments(==)
-        handleSend(x, ==)
-        beginBinaryExpression(==)
-        handleLiteralInt(0)
-        endBinaryExpression(==)
-        handleParenthesizedCondition(()
-        beginThenStatement(return)
-          beginReturnStatement(return)
-            handleLiteralInt(42)
-          endReturnStatement(true, return, ;)
-        endThenStatement(;)
-      endIfStatement(if, null)
-      beginReturnStatement(return)
-        handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'class'., null, {token: class}], class, class)
-        handleIdentifier(class, expression)
-        handleNoTypeArguments(()
-        beginArguments(()
-          handleIdentifier(x, expression)
-          handleNoTypeArguments(-)
-          handleNoArguments(-)
-          handleSend(x, -)
-          beginBinaryExpression(-)
-          handleLiteralInt(1)
-          endBinaryExpression(-)
-        endArguments(1, (, ))
-        handleSend(class, +)
-        beginBinaryExpression(+)
-        handleLiteralInt(1)
-        endBinaryExpression(+)
-      endReturnStatement(true, return, ;)
-    endBlockFunctionBody(2, {, })
-  endClassMethod(null, , (, null, })
-endMember()
-beginMetadataStar(int)
-endMetadataStar(0)
-beginMember()
-  handleRecoverableError(MissingConstFinalVarOrType, int, int)
-  handleNoType(})
-  handleIdentifier(int, fieldDeclaration)
-  handleNoFieldInitializer(const)
-  handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
-endClassFields(null, null, null, null, 1, int, ;)
-endMember()
-beginMetadataStar(const)
-endMetadataStar(0)
-beginMember()
-beginMethod(null, null, null, const, null, ()
-  handleNoType(const)
-  handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}], (, ()
-  handleIdentifier(, methodDeclaration)
-  handleNoTypeVariables(()
-  beginFormalParameters((, MemberKind.NonStaticMethod)
-    beginMetadataStar(int)
-    endMetadataStar(0)
-    beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
-      handleIdentifier(int, typeReference)
-      handleNoTypeArguments(x)
-      handleType(int, null)
-      handleIdentifier(x, formalParameterDeclaration)
-      handleFormalParameterWithoutValue())
-    endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
-  endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
-  handleNoInitializers()
-  handleAsyncModifier(null, null)
-  beginBlockFunctionBody({)
-    beginIfStatement(if)
-      handleIdentifier(x, expression)
-      handleNoTypeArguments(==)
-      handleNoArguments(==)
-      handleSend(x, ==)
-      beginBinaryExpression(==)
-      handleLiteralInt(0)
-      endBinaryExpression(==)
-      handleParenthesizedCondition(()
-      beginThenStatement(return)
-        beginReturnStatement(return)
-          handleLiteralInt(42)
-        endReturnStatement(true, return, ;)
-      endThenStatement(;)
-    endIfStatement(if, null)
-    beginReturnStatement(return)
-      beginConstExpression(const)
-        handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}], (, ()
-        handleIdentifier(, constructorReference)
-        beginConstructorReference()
-          handleNoTypeArguments(()
-          handleNoConstructorReferenceContinuationAfterTypeArguments(()
-        endConstructorReference(, null, ()
-        beginArguments(()
-          handleIdentifier(x, expression)
-          handleNoTypeArguments(-)
-          handleNoArguments(-)
-          handleSend(x, -)
-          beginBinaryExpression(-)
-          handleLiteralInt(1)
-          endBinaryExpression(-)
-        endArguments(1, (, ))
-      endConstExpression(const)
-      beginBinaryExpression(+)
-      handleLiteralInt(1)
-      endBinaryExpression(+)
-    endReturnStatement(true, return, ;)
-  endBlockFunctionBody(2, {, })
-  handleRecoverableError(ConstMethod, const, const)
-endClassMethod(null, const, (, null, })
-endMember()
-beginMetadataStar(int)
-endMetadataStar(0)
-beginMember()
-handleRecoverableError(MissingConstFinalVarOrType, int, int)
-handleNoType(})
-handleIdentifier(int, fieldDeclaration)
-handleNoFieldInitializer(continue)
-handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
-endClassFields(null, null, null, null, 1, int, ;)
-endMember()
-beginMetadataStar(continue)
-endMetadataStar(0)
-beginMember()
-handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got 'continue'., null, {token: continue}], continue, continue)
-handleInvalidMember(continue)
-endMember()
-beginMetadataStar(()
-endMetadataStar(0)
-beginMember()
-beginMethod(null, null, null, null, null, ()
-handleNoType(continue)
-handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}], (, ()
-handleIdentifier(, methodDeclaration)
-handleNoTypeVariables(()
-beginFormalParameters((, MemberKind.NonStaticMethod)
-  beginMetadataStar(int)
-  endMetadataStar(0)
-  beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
-    handleIdentifier(int, typeReference)
-    handleNoTypeArguments(x)
-    handleType(int, null)
-    handleIdentifier(x, formalParameterDeclaration)
-    handleFormalParameterWithoutValue())
-  endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
-endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
-handleNoInitializers()
-handleAsyncModifier(null, null)
-beginBlockFunctionBody({)
-  beginIfStatement(if)
-    handleIdentifier(x, expression)
-    handleNoTypeArguments(==)
-    handleNoArguments(==)
-    handleSend(x, ==)
-    beginBinaryExpression(==)
-    handleLiteralInt(0)
-    endBinaryExpression(==)
-    handleParenthesizedCondition(()
-    beginThenStatement(return)
-      beginReturnStatement(return)
-        handleLiteralInt(42)
-      endReturnStatement(true, return, ;)
-    endThenStatement(;)
-  endIfStatement(if, null)
-  beginReturnStatement(return)
-    handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'continue'., null, {token: continue}], continue, continue)
-    handleIdentifier(, expression)
-    handleNoTypeArguments(continue)
-    handleNoArguments(continue)
-    handleSend(, continue)
-    handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], continue, continue)
-  endReturnStatement(true, return, ;)
-  handleRecoverableError(ContinueOutsideOfLoop, continue, continue)
-  handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], continue, continue)
-  handleContinueStatement(false, continue, ;)
-  handleIdentifier(x, expression)
-  handleNoTypeArguments(-)
-  handleNoArguments(-)
-  handleSend(x, -)
-  beginBinaryExpression(-)
-  handleLiteralInt(1)
-  endBinaryExpression(-)
-  handleParenthesizedExpression(()
-  beginBinaryExpression(+)
-  handleLiteralInt(1)
-  endBinaryExpression(+)
-  handleExpressionStatement(;)
-endBlockFunctionBody(4, {, })
-endClassMethod(null, , (, null, })
-endMember()
-beginMetadataStar(int)
-endMetadataStar(0)
-beginMember()
-handleRecoverableError(MissingConstFinalVarOrType, int, int)
-handleNoType(})
-handleIdentifier(int, fieldDeclaration)
-handleNoFieldInitializer(default)
-handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
-endClassFields(null, null, null, null, 1, int, ;)
-endMember()
-beginMetadataStar(default)
-endMetadataStar(0)
-beginMember()
-handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got 'default'., null, {token: default}], default, default)
-handleInvalidMember(default)
-endMember()
-beginMetadataStar(()
-endMetadataStar(0)
-beginMember()
-beginMethod(null, null, null, null, null, ()
-handleNoType(default)
-handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}], (, ()
-handleIdentifier(, methodDeclaration)
-handleNoTypeVariables(()
-beginFormalParameters((, MemberKind.NonStaticMethod)
-beginMetadataStar(int)
-endMetadataStar(0)
-beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
-  handleIdentifier(int, typeReference)
-  handleNoTypeArguments(x)
-  handleType(int, null)
-  handleIdentifier(x, formalParameterDeclaration)
-  handleFormalParameterWithoutValue())
-endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
-endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
-handleNoInitializers()
-handleAsyncModifier(null, null)
-beginBlockFunctionBody({)
-beginIfStatement(if)
-  handleIdentifier(x, expression)
-  handleNoTypeArguments(==)
-  handleNoArguments(==)
-  handleSend(x, ==)
-  beginBinaryExpression(==)
-  handleLiteralInt(0)
-  endBinaryExpression(==)
-  handleParenthesizedCondition(()
-  beginThenStatement(return)
-    beginReturnStatement(return)
-      handleLiteralInt(42)
-    endReturnStatement(true, return, ;)
-  endThenStatement(;)
-endIfStatement(if, null)
-beginReturnStatement(return)
-  handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'default'., null, {token: default}], default, default)
-  handleIdentifier(default, expression)
-  handleNoTypeArguments(()
-  beginArguments(()
-    handleIdentifier(x, expression)
-    handleNoTypeArguments(-)
-    handleNoArguments(-)
-    handleSend(x, -)
-    beginBinaryExpression(-)
-    handleLiteralInt(1)
-    endBinaryExpression(-)
-  endArguments(1, (, ))
-  handleSend(default, +)
-  beginBinaryExpression(+)
-  handleLiteralInt(1)
-  endBinaryExpression(+)
-endReturnStatement(true, return, ;)
-endBlockFunctionBody(2, {, })
-endClassMethod(null, , (, null, })
-endMember()
-beginMetadataStar(int)
-endMetadataStar(0)
-beginMember()
-handleRecoverableError(MissingConstFinalVarOrType, int, int)
-handleNoType(})
-handleIdentifier(int, fieldDeclaration)
-handleNoFieldInitializer(do)
-handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
-endClassFields(null, null, null, null, 1, int, ;)
-endMember()
-beginMetadataStar(do)
-endMetadataStar(0)
-beginMember()
-handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got 'do'., null, {token: do}], do, do)
-handleInvalidMember(do)
-endMember()
-beginMetadataStar(()
-endMetadataStar(0)
-beginMember()
-beginMethod(null, null, null, null, null, ()
-handleNoType(do)
-handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}], (, ()
-handleIdentifier(, methodDeclaration)
-handleNoTypeVariables(()
-beginFormalParameters((, MemberKind.NonStaticMethod)
-beginMetadataStar(int)
-endMetadataStar(0)
-beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
-handleIdentifier(int, typeReference)
-handleNoTypeArguments(x)
-handleType(int, null)
-handleIdentifier(x, formalParameterDeclaration)
-handleFormalParameterWithoutValue())
-endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
-endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
-handleNoInitializers()
-handleAsyncModifier(null, null)
-beginBlockFunctionBody({)
-beginIfStatement(if)
-handleIdentifier(x, expression)
-handleNoTypeArguments(==)
-handleNoArguments(==)
-handleSend(x, ==)
-beginBinaryExpression(==)
-handleLiteralInt(0)
-endBinaryExpression(==)
-handleParenthesizedCondition(()
-beginThenStatement(return)
-  beginReturnStatement(return)
-    handleLiteralInt(42)
-  endReturnStatement(true, return, ;)
-endThenStatement(;)
-endIfStatement(if, null)
-beginReturnStatement(return)
-handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'do'., null, {token: do}], do, do)
-handleIdentifier(, expression)
-handleNoTypeArguments(do)
-handleNoArguments(do)
-handleSend(, do)
-handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], do, do)
-endReturnStatement(true, return, ;)
-beginDoWhileStatement(do)
-beginDoWhileStatementBody(()
-  handleIdentifier(x, expression)
-  handleNoTypeArguments(-)
-  handleNoArguments(-)
-  handleSend(x, -)
-  beginBinaryExpression(-)
-  handleLiteralInt(1)
-  endBinaryExpression(-)
-  handleParenthesizedExpression(()
-  beginBinaryExpression(+)
-  handleLiteralInt(1)
-  endBinaryExpression(+)
-  handleExpressionStatement(;)
-endDoWhileStatementBody(;)
-handleRecoverableError(Message[ExpectedButGot, Expected 'while' before this., null, {string: while}], }, })
-handleRecoverableError(Message[ExpectedToken, Expected to find '('., null, {string: (}], }, })
-handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '}'., null, {token: }}], }, })
-handleIdentifier(, expression)
-handleNoTypeArguments())
-handleNoArguments())
-handleSend(, ))
-handleParenthesizedCondition(()
-handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], }, })
-endDoWhileStatement(do, while, ;)
-endBlockFunctionBody(3, {, })
-endClassMethod(null, , (, null, })
-endMember()
-beginMetadataStar(int)
-endMetadataStar(0)
-beginMember()
-handleRecoverableError(MissingConstFinalVarOrType, int, int)
-handleNoType(})
-handleIdentifier(int, fieldDeclaration)
-handleNoFieldInitializer(else)
-handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
-endClassFields(null, null, null, null, 1, int, ;)
-endMember()
-beginMetadataStar(else)
-endMetadataStar(0)
-beginMember()
-handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got 'else'., null, {token: else}], else, else)
-handleInvalidMember(else)
-endMember()
-beginMetadataStar(()
-endMetadataStar(0)
-beginMember()
-beginMethod(null, null, null, null, null, ()
-handleNoType(else)
-handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}], (, ()
-handleIdentifier(, methodDeclaration)
-handleNoTypeVariables(()
-beginFormalParameters((, MemberKind.NonStaticMethod)
-beginMetadataStar(int)
-endMetadataStar(0)
-beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
-handleIdentifier(int, typeReference)
-handleNoTypeArguments(x)
-handleType(int, null)
-handleIdentifier(x, formalParameterDeclaration)
-handleFormalParameterWithoutValue())
-endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
-endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
-handleNoInitializers()
-handleAsyncModifier(null, null)
-beginBlockFunctionBody({)
-beginIfStatement(if)
-handleIdentifier(x, expression)
-handleNoTypeArguments(==)
-handleNoArguments(==)
-handleSend(x, ==)
-beginBinaryExpression(==)
-handleLiteralInt(0)
-endBinaryExpression(==)
-handleParenthesizedCondition(()
-beginThenStatement(return)
-beginReturnStatement(return)
-  handleLiteralInt(42)
-endReturnStatement(true, return, ;)
-endThenStatement(;)
-endIfStatement(if, null)
-beginReturnStatement(return)
-handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'else'., null, {token: else}], else, else)
-handleIdentifier(, expression)
-handleNoTypeArguments(else)
-handleNoArguments(else)
-handleSend(, else)
-handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], else, else)
-endReturnStatement(true, return, ;)
-handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'else'., null, {token: else}], else, else)
-handleIdentifier(, expression)
-handleNoTypeArguments(else)
-handleNoArguments(else)
-handleSend(, else)
-handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], else, else)
-handleExpressionStatement(;)
-handleRecoverableError(Message[UnexpectedToken, Unexpected token ';'., null, {token: ;}], else, else)
-handleIdentifier(x, expression)
-handleNoTypeArguments(-)
-handleNoArguments(-)
-handleSend(x, -)
-beginBinaryExpression(-)
-handleLiteralInt(1)
-endBinaryExpression(-)
-handleParenthesizedExpression(()
-beginBinaryExpression(+)
-handleLiteralInt(1)
-endBinaryExpression(+)
-handleExpressionStatement(;)
-endBlockFunctionBody(4, {, })
-endClassMethod(null, , (, null, })
-endMember()
-beginMetadataStar(int)
-endMetadataStar(0)
-beginMember()
-handleRecoverableError(MissingConstFinalVarOrType, int, int)
-handleNoType(})
-handleIdentifier(int, fieldDeclaration)
-handleNoFieldInitializer(enum)
-handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
-endClassFields(null, null, null, null, 1, int, ;)
-endMember()
-beginMetadataStar(enum)
-endMetadataStar(0)
-beginMember()
-handleRecoverableError(EnumInClass, enum, enum)
-handleInvalidMember(enum)
-beginMetadataStar(()
-endMetadataStar(0)
-beginMember()
-beginMethod(null, null, null, null, null, ()
-handleNoType(enum)
-handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}], (, ()
-handleIdentifier(, methodDeclaration)
-handleNoTypeVariables(()
-beginFormalParameters((, MemberKind.NonStaticMethod)
-beginMetadataStar(int)
-endMetadataStar(0)
-beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
-handleIdentifier(int, typeReference)
-handleNoTypeArguments(x)
-handleType(int, null)
-handleIdentifier(x, formalParameterDeclaration)
-handleFormalParameterWithoutValue())
-endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
-endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
-handleNoInitializers()
-handleAsyncModifier(null, null)
-beginBlockFunctionBody({)
-beginIfStatement(if)
-handleIdentifier(x, expression)
-handleNoTypeArguments(==)
-handleNoArguments(==)
-handleSend(x, ==)
-beginBinaryExpression(==)
-handleLiteralInt(0)
-endBinaryExpression(==)
-handleParenthesizedCondition(()
-beginThenStatement(return)
-beginReturnStatement(return)
-  handleLiteralInt(42)
-endReturnStatement(true, return, ;)
-endThenStatement(;)
-endIfStatement(if, null)
-beginReturnStatement(return)
-handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'enum'., null, {token: enum}], enum, enum)
-handleIdentifier(enum, expression)
-handleNoTypeArguments(()
-beginArguments(()
-handleIdentifier(x, expression)
-handleNoTypeArguments(-)
-handleNoArguments(-)
-handleSend(x, -)
-beginBinaryExpression(-)
-handleLiteralInt(1)
-endBinaryExpression(-)
-endArguments(1, (, ))
-handleSend(enum, +)
-beginBinaryExpression(+)
-handleLiteralInt(1)
-endBinaryExpression(+)
-endReturnStatement(true, return, ;)
-endBlockFunctionBody(2, {, })
-endClassMethod(null, , (, null, })
-endMember()
-beginMetadataStar(int)
-endMetadataStar(0)
-beginMember()
-handleRecoverableError(MissingConstFinalVarOrType, int, int)
-handleNoType(})
-handleIdentifier(int, fieldDeclaration)
-handleNoFieldInitializer(extends)
-handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
-endClassFields(null, null, null, null, 1, int, ;)
-endMember()
-beginMetadataStar(extends)
-endMetadataStar(0)
-beginMember()
-handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got 'extends'., null, {token: extends}], extends, extends)
-handleInvalidMember(extends)
-endMember()
-beginMetadataStar(()
-endMetadataStar(0)
-beginMember()
-beginMethod(null, null, null, null, null, ()
-handleNoType(extends)
-handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}], (, ()
-handleIdentifier(, methodDeclaration)
-handleNoTypeVariables(()
-beginFormalParameters((, MemberKind.NonStaticMethod)
-beginMetadataStar(int)
-endMetadataStar(0)
-beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
-handleIdentifier(int, typeReference)
-handleNoTypeArguments(x)
-handleType(int, null)
-handleIdentifier(x, formalParameterDeclaration)
-handleFormalParameterWithoutValue())
-endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
-endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
-handleNoInitializers()
-handleAsyncModifier(null, null)
-beginBlockFunctionBody({)
-beginIfStatement(if)
-handleIdentifier(x, expression)
-handleNoTypeArguments(==)
-handleNoArguments(==)
-handleSend(x, ==)
-beginBinaryExpression(==)
-handleLiteralInt(0)
-endBinaryExpression(==)
-handleParenthesizedCondition(()
-beginThenStatement(return)
-beginReturnStatement(return)
-handleLiteralInt(42)
-endReturnStatement(true, return, ;)
-endThenStatement(;)
-endIfStatement(if, null)
-beginReturnStatement(return)
-handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'extends'., null, {token: extends}], extends, extends)
-handleIdentifier(extends, expression)
-handleNoTypeArguments(()
-beginArguments(()
-handleIdentifier(x, expression)
-handleNoTypeArguments(-)
-handleNoArguments(-)
-handleSend(x, -)
-beginBinaryExpression(-)
-handleLiteralInt(1)
-endBinaryExpression(-)
-endArguments(1, (, ))
-handleSend(extends, +)
-beginBinaryExpression(+)
-handleLiteralInt(1)
-endBinaryExpression(+)
-endReturnStatement(true, return, ;)
-endBlockFunctionBody(2, {, })
-endClassMethod(null, , (, null, })
-endMember()
-beginMetadataStar(int)
-endMetadataStar(0)
-beginMember()
-handleRecoverableError(MissingConstFinalVarOrType, int, int)
-handleNoType(})
-handleIdentifier(int, fieldDeclaration)
-handleNoFieldInitializer(false)
-handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
-endClassFields(null, null, null, null, 1, int, ;)
-endMember()
-beginMetadataStar(false)
-endMetadataStar(0)
-beginMember()
-handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got 'false'., null, {token: false}], false, false)
-handleInvalidMember(false)
-endMember()
-beginMetadataStar(()
-endMetadataStar(0)
-beginMember()
-beginMethod(null, null, null, null, null, ()
-handleNoType(false)
-handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}], (, ()
-handleIdentifier(, methodDeclaration)
-handleNoTypeVariables(()
-beginFormalParameters((, MemberKind.NonStaticMethod)
-beginMetadataStar(int)
-endMetadataStar(0)
-beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
-handleIdentifier(int, typeReference)
-handleNoTypeArguments(x)
-handleType(int, null)
-handleIdentifier(x, formalParameterDeclaration)
-handleFormalParameterWithoutValue())
-endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
-endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
-handleNoInitializers()
-handleAsyncModifier(null, null)
-beginBlockFunctionBody({)
-beginIfStatement(if)
-handleIdentifier(x, expression)
-handleNoTypeArguments(==)
-handleNoArguments(==)
-handleSend(x, ==)
-beginBinaryExpression(==)
-handleLiteralInt(0)
-endBinaryExpression(==)
-handleParenthesizedCondition(()
-beginThenStatement(return)
-beginReturnStatement(return)
-handleLiteralInt(42)
-endReturnStatement(true, return, ;)
-endThenStatement(;)
-endIfStatement(if, null)
-beginReturnStatement(return)
-handleLiteralBool(false)
-handleNoTypeArguments(()
-beginArguments(()
-handleIdentifier(x, expression)
-handleNoTypeArguments(-)
-handleNoArguments(-)
-handleSend(x, -)
-beginBinaryExpression(-)
-handleLiteralInt(1)
-endBinaryExpression(-)
-endArguments(1, (, ))
-handleSend((, ))
-beginBinaryExpression(+)
-handleLiteralInt(1)
-endBinaryExpression(+)
-endReturnStatement(true, return, ;)
-endBlockFunctionBody(2, {, })
-endClassMethod(null, , (, null, })
-endMember()
-beginMetadataStar(int)
-endMetadataStar(0)
-beginMember()
-handleRecoverableError(MissingConstFinalVarOrType, int, int)
-handleNoType(})
-handleIdentifier(int, fieldDeclaration)
-handleNoFieldInitializer(final)
-handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
-endClassFields(null, null, null, null, 1, int, ;)
-endMember()
-beginMetadataStar(final)
-endMetadataStar(0)
-beginMember()
-handleRecoverableError(Message[ExtraneousModifier, Can't have modifier 'final' here., Try removing 'final'., {token: final}], final, final)
-beginMethod(null, null, null, null, null, ()
-handleNoType(final)
-handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}], (, ()
-handleIdentifier(, methodDeclaration)
-handleNoTypeVariables(()
-beginFormalParameters((, MemberKind.NonStaticMethod)
-beginMetadataStar(int)
-endMetadataStar(0)
-beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
-handleIdentifier(int, typeReference)
-handleNoTypeArguments(x)
-handleType(int, null)
-handleIdentifier(x, formalParameterDeclaration)
-handleFormalParameterWithoutValue())
-endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
-endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
-handleNoInitializers()
-handleAsyncModifier(null, null)
-beginBlockFunctionBody({)
-beginIfStatement(if)
-handleIdentifier(x, expression)
-handleNoTypeArguments(==)
-handleNoArguments(==)
-handleSend(x, ==)
-beginBinaryExpression(==)
-handleLiteralInt(0)
-endBinaryExpression(==)
-handleParenthesizedCondition(()
-beginThenStatement(return)
-beginReturnStatement(return)
-handleLiteralInt(42)
-endReturnStatement(true, return, ;)
-endThenStatement(;)
-endIfStatement(if, null)
-beginReturnStatement(return)
-handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'final'., null, {token: final}], final, final)
-handleIdentifier(, expression)
-handleNoTypeArguments(final)
-handleNoArguments(final)
-handleSend(, final)
-handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], final, final)
-endReturnStatement(true, return, ;)
-beginMetadataStar(final)
-endMetadataStar(0)
-handleNoType(final)
-beginVariablesDeclaration((, null, final)
-handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}], (, ()
-handleIdentifier(, localVariableDeclaration)
-beginInitializedIdentifier()
-handleNoVariableInitializer(x)
-endInitializedIdentifier()
-handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], x, x)
-endVariablesDeclaration(1, ;)
-handleIdentifier(x, expression)
-handleNoTypeArguments(-)
-handleNoArguments(-)
-handleSend(x, -)
-beginBinaryExpression(-)
-handleLiteralInt(1)
-endBinaryExpression(-)
-handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], 1, 1)
-handleExpressionStatement(;)
-handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got ')'., null, {token: )}], ), ))
-handleIdentifier(, expression)
-handleNoTypeArguments())
-handleNoArguments())
-handleSend(, ))
-handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], ), ))
-handleExpressionStatement(;)
-handleRecoverableError(Message[UnexpectedToken, Unexpected token ';'., null, {token: ;}], ), ))
-handleRecoverableError(UnsupportedPrefixPlus, +, +)
-handleIdentifier(, expression)
-handleNoTypeArguments(+)
-handleNoArguments(+)
-handleSend(, +)
-beginBinaryExpression(+)
-handleLiteralInt(1)
-endBinaryExpression(+)
-handleExpressionStatement(;)
-endBlockFunctionBody(6, {, })
-endClassMethod(null, final, (, null, })
-endMember()
-beginMetadataStar(int)
-endMetadataStar(0)
-beginMember()
-handleRecoverableError(MissingConstFinalVarOrType, int, int)
-handleNoType(})
-handleIdentifier(int, fieldDeclaration)
-handleNoFieldInitializer(finally)
-handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
-endClassFields(null, null, null, null, 1, int, ;)
-endMember()
-beginMetadataStar(finally)
-endMetadataStar(0)
-beginMember()
-handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got 'finally'., null, {token: finally}], finally, finally)
-handleInvalidMember(finally)
-endMember()
-beginMetadataStar(()
-endMetadataStar(0)
-beginMember()
-beginMethod(null, null, null, null, null, ()
-handleNoType(finally)
-handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}], (, ()
-handleIdentifier(, methodDeclaration)
-handleNoTypeVariables(()
-beginFormalParameters((, MemberKind.NonStaticMethod)
-beginMetadataStar(int)
-endMetadataStar(0)
-beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
-handleIdentifier(int, typeReference)
-handleNoTypeArguments(x)
-handleType(int, null)
-handleIdentifier(x, formalParameterDeclaration)
-handleFormalParameterWithoutValue())
-endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
-endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
-handleNoInitializers()
-handleAsyncModifier(null, null)
-beginBlockFunctionBody({)
-beginIfStatement(if)
-handleIdentifier(x, expression)
-handleNoTypeArguments(==)
-handleNoArguments(==)
-handleSend(x, ==)
-beginBinaryExpression(==)
-handleLiteralInt(0)
-endBinaryExpression(==)
-handleParenthesizedCondition(()
-beginThenStatement(return)
-beginReturnStatement(return)
-handleLiteralInt(42)
-endReturnStatement(true, return, ;)
-endThenStatement(;)
-endIfStatement(if, null)
-beginReturnStatement(return)
-handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'finally'., null, {token: finally}], finally, finally)
-handleIdentifier(finally, expression)
-handleNoTypeArguments(()
-beginArguments(()
-handleIdentifier(x, expression)
-handleNoTypeArguments(-)
-handleNoArguments(-)
-handleSend(x, -)
-beginBinaryExpression(-)
-handleLiteralInt(1)
-endBinaryExpression(-)
-endArguments(1, (, ))
-handleSend(finally, +)
-beginBinaryExpression(+)
-handleLiteralInt(1)
-endBinaryExpression(+)
-endReturnStatement(true, return, ;)
-endBlockFunctionBody(2, {, })
-endClassMethod(null, , (, null, })
-endMember()
-beginMetadataStar(int)
-endMetadataStar(0)
-beginMember()
-handleRecoverableError(MissingConstFinalVarOrType, int, int)
-handleNoType(})
-handleIdentifier(int, fieldDeclaration)
-handleNoFieldInitializer(for)
-handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
-endClassFields(null, null, null, null, 1, int, ;)
-endMember()
-beginMetadataStar(for)
-endMetadataStar(0)
-beginMember()
-handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got 'for'., null, {token: for}], for, for)
-handleInvalidMember(for)
-endMember()
-beginMetadataStar(()
-endMetadataStar(0)
-beginMember()
-beginMethod(null, null, null, null, null, ()
-handleNoType(for)
-handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}], (, ()
-handleIdentifier(, methodDeclaration)
-handleNoTypeVariables(()
-beginFormalParameters((, MemberKind.NonStaticMethod)
-beginMetadataStar(int)
-endMetadataStar(0)
-beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
-handleIdentifier(int, typeReference)
-handleNoTypeArguments(x)
-handleType(int, null)
-handleIdentifier(x, formalParameterDeclaration)
-handleFormalParameterWithoutValue())
-endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
-endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
-handleNoInitializers()
-handleAsyncModifier(null, null)
-beginBlockFunctionBody({)
-beginIfStatement(if)
-handleIdentifier(x, expression)
-handleNoTypeArguments(==)
-handleNoArguments(==)
-handleSend(x, ==)
-beginBinaryExpression(==)
-handleLiteralInt(0)
-endBinaryExpression(==)
-handleParenthesizedCondition(()
-beginThenStatement(return)
-beginReturnStatement(return)
-handleLiteralInt(42)
-endReturnStatement(true, return, ;)
-endThenStatement(;)
-endIfStatement(if, null)
-beginReturnStatement(return)
-handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'for'., null, {token: for}], for, for)
-handleIdentifier(, expression)
-handleNoTypeArguments(for)
-handleNoArguments(for)
-handleSend(, for)
-handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], for, for)
-endReturnStatement(true, return, ;)
-beginForStatement(for)
-handleIdentifier(x, expression)
-handleNoTypeArguments(-)
-handleNoArguments(-)
-handleSend(x, -)
-beginBinaryExpression(-)
-handleLiteralInt(1)
-endBinaryExpression(-)
-handleForInitializerExpressionStatement(1, false)
-handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], 1, 1)
-handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got ')'., null, {token: )}], ), ))
-handleIdentifier(, expression)
-handleNoTypeArguments())
-handleNoArguments())
-handleSend(, ))
-handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], ), ))
-handleExpressionStatement(;)
-handleForLoopParts(for, (, ;, 0)
-beginForStatementBody(+)
-handleRecoverableError(UnsupportedPrefixPlus, +, +)
-handleIdentifier(, expression)
-handleNoTypeArguments(+)
-handleNoArguments(+)
-handleSend(, +)
-beginBinaryExpression(+)
-handleLiteralInt(1)
-endBinaryExpression(+)
-handleExpressionStatement(;)
-endForStatementBody(})
-endForStatement(})
-endBlockFunctionBody(3, {, })
-endClassMethod(null, , (, null, })
-endMember()
-beginMetadataStar(int)
-endMetadataStar(0)
-beginMember()
-handleRecoverableError(MissingConstFinalVarOrType, int, int)
-handleNoType(})
-handleIdentifier(int, fieldDeclaration)
-handleNoFieldInitializer(if)
-handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
-endClassFields(null, null, null, null, 1, int, ;)
-endMember()
-beginMetadataStar(if)
-endMetadataStar(0)
-beginMember()
-handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got 'if'., null, {token: if}], if, if)
-handleInvalidMember(if)
-endMember()
-beginMetadataStar(()
-endMetadataStar(0)
-beginMember()
-beginMethod(null, null, null, null, null, ()
-handleNoType(if)
-handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}], (, ()
-handleIdentifier(, methodDeclaration)
-handleNoTypeVariables(()
-beginFormalParameters((, MemberKind.NonStaticMethod)
-beginMetadataStar(int)
-endMetadataStar(0)
-beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
-handleIdentifier(int, typeReference)
-handleNoTypeArguments(x)
-handleType(int, null)
-handleIdentifier(x, formalParameterDeclaration)
-handleFormalParameterWithoutValue())
-endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
-endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
-handleNoInitializers()
-handleAsyncModifier(null, null)
-beginBlockFunctionBody({)
-beginIfStatement(if)
-handleIdentifier(x, expression)
-handleNoTypeArguments(==)
-handleNoArguments(==)
-handleSend(x, ==)
-beginBinaryExpression(==)
-handleLiteralInt(0)
-endBinaryExpression(==)
-handleParenthesizedCondition(()
-beginThenStatement(return)
-beginReturnStatement(return)
-handleLiteralInt(42)
-endReturnStatement(true, return, ;)
-endThenStatement(;)
-endIfStatement(if, null)
-beginReturnStatement(return)
-handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'if'., null, {token: if}], if, if)
-handleIdentifier(, expression)
-handleNoTypeArguments(if)
-handleNoArguments(if)
-handleSend(, if)
-handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], if, if)
-endReturnStatement(true, return, ;)
-beginIfStatement(if)
-handleIdentifier(x, expression)
-handleNoTypeArguments(-)
-handleNoArguments(-)
-handleSend(x, -)
-beginBinaryExpression(-)
-handleLiteralInt(1)
-endBinaryExpression(-)
-handleParenthesizedCondition(()
-beginThenStatement(+)
-handleRecoverableError(UnsupportedPrefixPlus, +, +)
-handleIdentifier(, expression)
-handleNoTypeArguments(+)
-handleNoArguments(+)
-handleSend(, +)
-beginBinaryExpression(+)
-handleLiteralInt(1)
-endBinaryExpression(+)
-handleExpressionStatement(;)
-endThenStatement(;)
-endIfStatement(if, null)
-endBlockFunctionBody(3, {, })
-endClassMethod(null, , (, null, })
-endMember()
-beginMetadataStar(int)
-endMetadataStar(0)
-beginMember()
-handleRecoverableError(MissingConstFinalVarOrType, int, int)
-handleNoType(})
-handleIdentifier(int, fieldDeclaration)
-handleNoFieldInitializer(in)
-handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
-endClassFields(null, null, null, null, 1, int, ;)
-endMember()
-beginMetadataStar(in)
-endMetadataStar(0)
-beginMember()
-handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got 'in'., null, {token: in}], in, in)
-handleInvalidMember(in)
-endMember()
-beginMetadataStar(()
-endMetadataStar(0)
-beginMember()
-beginMethod(null, null, null, null, null, ()
-handleNoType(in)
-handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}], (, ()
-handleIdentifier(, methodDeclaration)
-handleNoTypeVariables(()
-beginFormalParameters((, MemberKind.NonStaticMethod)
-beginMetadataStar(int)
-endMetadataStar(0)
-beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
-handleIdentifier(int, typeReference)
-handleNoTypeArguments(x)
-handleType(int, null)
-handleIdentifier(x, formalParameterDeclaration)
-handleFormalParameterWithoutValue())
-endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
-endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
-handleNoInitializers()
-handleAsyncModifier(null, null)
-beginBlockFunctionBody({)
-beginIfStatement(if)
-handleIdentifier(x, expression)
-handleNoTypeArguments(==)
-handleNoArguments(==)
-handleSend(x, ==)
-beginBinaryExpression(==)
-handleLiteralInt(0)
-endBinaryExpression(==)
-handleParenthesizedCondition(()
-beginThenStatement(return)
-beginReturnStatement(return)
-handleLiteralInt(42)
-endReturnStatement(true, return, ;)
-endThenStatement(;)
-endIfStatement(if, null)
-beginReturnStatement(return)
-handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'in'., null, {token: in}], in, in)
-handleIdentifier(in, expression)
-handleNoTypeArguments(()
-beginArguments(()
-handleIdentifier(x, expression)
-handleNoTypeArguments(-)
-handleNoArguments(-)
-handleSend(x, -)
-beginBinaryExpression(-)
-handleLiteralInt(1)
-endBinaryExpression(-)
-endArguments(1, (, ))
-handleSend(in, +)
-beginBinaryExpression(+)
-handleLiteralInt(1)
-endBinaryExpression(+)
-endReturnStatement(true, return, ;)
-endBlockFunctionBody(2, {, })
-endClassMethod(null, , (, null, })
-endMember()
-beginMetadataStar(int)
-endMetadataStar(0)
-beginMember()
-handleRecoverableError(MissingConstFinalVarOrType, int, int)
-handleNoType(})
-handleIdentifier(int, fieldDeclaration)
-handleNoFieldInitializer(is)
-handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
-endClassFields(null, null, null, null, 1, int, ;)
-endMember()
-beginMetadataStar(is)
-endMetadataStar(0)
-beginMember()
-handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got 'is'., null, {token: is}], is, is)
-handleInvalidMember(is)
-endMember()
-beginMetadataStar(()
-endMetadataStar(0)
-beginMember()
-beginMethod(null, null, null, null, null, ()
-handleNoType(is)
-handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}], (, ()
-handleIdentifier(, methodDeclaration)
-handleNoTypeVariables(()
-beginFormalParameters((, MemberKind.NonStaticMethod)
-beginMetadataStar(int)
-endMetadataStar(0)
-beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
-handleIdentifier(int, typeReference)
-handleNoTypeArguments(x)
-handleType(int, null)
-handleIdentifier(x, formalParameterDeclaration)
-handleFormalParameterWithoutValue())
-endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
-endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
-handleNoInitializers()
-handleAsyncModifier(null, null)
-beginBlockFunctionBody({)
-beginIfStatement(if)
-handleIdentifier(x, expression)
-handleNoTypeArguments(==)
-handleNoArguments(==)
-handleSend(x, ==)
-beginBinaryExpression(==)
-handleLiteralInt(0)
-endBinaryExpression(==)
-handleParenthesizedCondition(()
-beginThenStatement(return)
-beginReturnStatement(return)
-handleLiteralInt(42)
-endReturnStatement(true, return, ;)
-endThenStatement(;)
-endIfStatement(if, null)
-beginReturnStatement(return)
-handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'is'., null, {token: is}], is, is)
-handleIdentifier(, expression)
-handleNoTypeArguments(is)
-handleNoArguments(is)
-handleSend(, is)
-beginIsOperatorType(is)
-handleRecoverableError(Message[ExpectedType, Expected a type, but got '('., null, {token: (}], (, ()
-handleIdentifier(, typeReference)
-handleNoTypeArguments(()
-handleType(, null)
-endIsOperatorType(is)
-handleIsOperator(is, null)
-handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], (, ()
-endReturnStatement(true, return, ;)
-handleIdentifier(x, expression)
-handleNoTypeArguments(-)
-handleNoArguments(-)
-handleSend(x, -)
-beginBinaryExpression(-)
-handleLiteralInt(1)
-endBinaryExpression(-)
-handleParenthesizedExpression(()
-beginBinaryExpression(+)
-handleLiteralInt(1)
-endBinaryExpression(+)
-handleExpressionStatement(;)
-endBlockFunctionBody(3, {, })
-endClassMethod(null, , (, null, })
-endMember()
-beginMetadataStar(int)
-endMetadataStar(0)
-beginMember()
-handleRecoverableError(MissingConstFinalVarOrType, int, int)
-handleNoType(})
-handleIdentifier(int, fieldDeclaration)
-handleNoFieldInitializer(new)
-handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
-endClassFields(null, null, null, null, 1, int, ;)
-endMember()
-beginMetadataStar(new)
-endMetadataStar(0)
-beginMember()
-handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got 'new'., null, {token: new}], new, new)
-handleInvalidMember(new)
-endMember()
-beginMetadataStar(()
-endMetadataStar(0)
-beginMember()
-beginMethod(null, null, null, null, null, ()
-handleNoType(new)
-handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}], (, ()
-handleIdentifier(, methodDeclaration)
-handleNoTypeVariables(()
-beginFormalParameters((, MemberKind.NonStaticMethod)
-beginMetadataStar(int)
-endMetadataStar(0)
-beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
-handleIdentifier(int, typeReference)
-handleNoTypeArguments(x)
-handleType(int, null)
-handleIdentifier(x, formalParameterDeclaration)
-handleFormalParameterWithoutValue())
-endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
-endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
-handleNoInitializers()
-handleAsyncModifier(null, null)
-beginBlockFunctionBody({)
-beginIfStatement(if)
-handleIdentifier(x, expression)
-handleNoTypeArguments(==)
-handleNoArguments(==)
-handleSend(x, ==)
-beginBinaryExpression(==)
-handleLiteralInt(0)
-endBinaryExpression(==)
-handleParenthesizedCondition(()
-beginThenStatement(return)
-beginReturnStatement(return)
-handleLiteralInt(42)
-endReturnStatement(true, return, ;)
-endThenStatement(;)
-endIfStatement(if, null)
-beginReturnStatement(return)
-beginNewExpression(new)
-handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}], (, ()
-handleIdentifier(, constructorReference)
-beginConstructorReference()
-handleNoTypeArguments(()
-handleNoConstructorReferenceContinuationAfterTypeArguments(()
-endConstructorReference(, null, ()
-beginArguments(()
-handleIdentifier(x, expression)
-handleNoTypeArguments(-)
-handleNoArguments(-)
-handleSend(x, -)
-beginBinaryExpression(-)
-handleLiteralInt(1)
-endBinaryExpression(-)
-endArguments(1, (, ))
-endNewExpression(new)
-beginBinaryExpression(+)
-handleLiteralInt(1)
-endBinaryExpression(+)
-endReturnStatement(true, return, ;)
-endBlockFunctionBody(2, {, })
-endClassMethod(null, , (, null, })
-endMember()
-beginMetadataStar(int)
-endMetadataStar(0)
-beginMember()
-handleRecoverableError(MissingConstFinalVarOrType, int, int)
-handleNoType(})
-handleIdentifier(int, fieldDeclaration)
-handleNoFieldInitializer(null)
-handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
-endClassFields(null, null, null, null, 1, int, ;)
-endMember()
-beginMetadataStar(null)
-endMetadataStar(0)
-beginMember()
-handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got 'null'., null, {token: null}], null, null)
-handleInvalidMember(null)
-endMember()
-beginMetadataStar(()
-endMetadataStar(0)
-beginMember()
-beginMethod(null, null, null, null, null, ()
-handleNoType(null)
-handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}], (, ()
-handleIdentifier(, methodDeclaration)
-handleNoTypeVariables(()
-beginFormalParameters((, MemberKind.NonStaticMethod)
-beginMetadataStar(int)
-endMetadataStar(0)
-beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
-handleIdentifier(int, typeReference)
-handleNoTypeArguments(x)
-handleType(int, null)
-handleIdentifier(x, formalParameterDeclaration)
-handleFormalParameterWithoutValue())
-endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
-endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
-handleNoInitializers()
-handleAsyncModifier(null, null)
-beginBlockFunctionBody({)
-beginIfStatement(if)
-handleIdentifier(x, expression)
-handleNoTypeArguments(==)
-handleNoArguments(==)
-handleSend(x, ==)
-beginBinaryExpression(==)
-handleLiteralInt(0)
-endBinaryExpression(==)
-handleParenthesizedCondition(()
-beginThenStatement(return)
-beginReturnStatement(return)
-handleLiteralInt(42)
-endReturnStatement(true, return, ;)
-endThenStatement(;)
-endIfStatement(if, null)
-beginReturnStatement(return)
-handleLiteralNull(null)
-handleNoTypeArguments(()
-beginArguments(()
-handleIdentifier(x, expression)
-handleNoTypeArguments(-)
-handleNoArguments(-)
-handleSend(x, -)
-beginBinaryExpression(-)
-handleLiteralInt(1)
-endBinaryExpression(-)
-endArguments(1, (, ))
-handleSend((, ))
-beginBinaryExpression(+)
-handleLiteralInt(1)
-endBinaryExpression(+)
-endReturnStatement(true, return, ;)
-endBlockFunctionBody(2, {, })
-endClassMethod(null, , (, null, })
-endMember()
-beginMetadataStar(int)
-endMetadataStar(0)
-beginMember()
-handleRecoverableError(MissingConstFinalVarOrType, int, int)
-handleNoType(})
-handleIdentifier(int, fieldDeclaration)
-handleNoFieldInitializer(rethrow)
-handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
-endClassFields(null, null, null, null, 1, int, ;)
-endMember()
-beginMetadataStar(rethrow)
-endMetadataStar(0)
-beginMember()
-handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got 'rethrow'., null, {token: rethrow}], rethrow, rethrow)
-handleInvalidMember(rethrow)
-endMember()
-beginMetadataStar(()
-endMetadataStar(0)
-beginMember()
-beginMethod(null, null, null, null, null, ()
-handleNoType(rethrow)
-handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}], (, ()
-handleIdentifier(, methodDeclaration)
-handleNoTypeVariables(()
-beginFormalParameters((, MemberKind.NonStaticMethod)
-beginMetadataStar(int)
-endMetadataStar(0)
-beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
-handleIdentifier(int, typeReference)
-handleNoTypeArguments(x)
-handleType(int, null)
-handleIdentifier(x, formalParameterDeclaration)
-handleFormalParameterWithoutValue())
-endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
-endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
-handleNoInitializers()
-handleAsyncModifier(null, null)
-beginBlockFunctionBody({)
-beginIfStatement(if)
-handleIdentifier(x, expression)
-handleNoTypeArguments(==)
-handleNoArguments(==)
-handleSend(x, ==)
-beginBinaryExpression(==)
-handleLiteralInt(0)
-endBinaryExpression(==)
-handleParenthesizedCondition(()
-beginThenStatement(return)
-beginReturnStatement(return)
-handleLiteralInt(42)
-endReturnStatement(true, return, ;)
-endThenStatement(;)
-endIfStatement(if, null)
-beginReturnStatement(return)
-handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'rethrow'., null, {token: rethrow}], rethrow, rethrow)
-handleIdentifier(rethrow, expression)
-handleNoTypeArguments(()
-beginArguments(()
-handleIdentifier(x, expression)
-handleNoTypeArguments(-)
-handleNoArguments(-)
-handleSend(x, -)
-beginBinaryExpression(-)
-handleLiteralInt(1)
-endBinaryExpression(-)
-endArguments(1, (, ))
-handleSend(rethrow, +)
-beginBinaryExpression(+)
-handleLiteralInt(1)
-endBinaryExpression(+)
-endReturnStatement(true, return, ;)
-endBlockFunctionBody(2, {, })
-endClassMethod(null, , (, null, })
-endMember()
-beginMetadataStar(int)
-endMetadataStar(0)
-beginMember()
-handleRecoverableError(MissingConstFinalVarOrType, int, int)
-handleNoType(})
-handleIdentifier(int, fieldDeclaration)
-handleNoFieldInitializer(return)
-handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
-endClassFields(null, null, null, null, 1, int, ;)
-endMember()
-beginMetadataStar(return)
-endMetadataStar(0)
-beginMember()
-handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got 'return'., null, {token: return}], return, return)
-handleInvalidMember(return)
-endMember()
-beginMetadataStar(()
-endMetadataStar(0)
-beginMember()
-beginMethod(null, null, null, null, null, ()
-handleNoType(return)
-handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}], (, ()
-handleIdentifier(, methodDeclaration)
-handleNoTypeVariables(()
-beginFormalParameters((, MemberKind.NonStaticMethod)
-beginMetadataStar(int)
-endMetadataStar(0)
-beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
-handleIdentifier(int, typeReference)
-handleNoTypeArguments(x)
-handleType(int, null)
-handleIdentifier(x, formalParameterDeclaration)
-handleFormalParameterWithoutValue())
-endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
-endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
-handleNoInitializers()
-handleAsyncModifier(null, null)
-beginBlockFunctionBody({)
-beginIfStatement(if)
-handleIdentifier(x, expression)
-handleNoTypeArguments(==)
-handleNoArguments(==)
-handleSend(x, ==)
-beginBinaryExpression(==)
-handleLiteralInt(0)
-endBinaryExpression(==)
-handleParenthesizedCondition(()
-beginThenStatement(return)
-beginReturnStatement(return)
-handleLiteralInt(42)
-endReturnStatement(true, return, ;)
-endThenStatement(;)
-endIfStatement(if, null)
-beginReturnStatement(return)
-handleRecoverableError(Message[UnexpectedToken, Unexpected token 'return'., null, {token: return}], return, return)
-handleIdentifier(x, expression)
-handleNoTypeArguments(-)
-handleNoArguments(-)
-handleSend(x, -)
-beginBinaryExpression(-)
-handleLiteralInt(1)
-endBinaryExpression(-)
-handleParenthesizedExpression(()
-beginBinaryExpression(+)
-handleLiteralInt(1)
-endBinaryExpression(+)
-endReturnStatement(true, return, ;)
-endBlockFunctionBody(2, {, })
-endClassMethod(null, , (, null, })
-endMember()
-beginMetadataStar(int)
-endMetadataStar(0)
-beginMember()
-handleRecoverableError(MissingConstFinalVarOrType, int, int)
-handleNoType(})
-handleIdentifier(int, fieldDeclaration)
-handleNoFieldInitializer(super)
-handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
-endClassFields(null, null, null, null, 1, int, ;)
-endMember()
-beginMetadataStar(super)
-endMetadataStar(0)
-beginMember()
-handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got 'super'., null, {token: super}], super, super)
-handleInvalidMember(super)
-endMember()
-beginMetadataStar(()
-endMetadataStar(0)
-beginMember()
-beginMethod(null, null, null, null, null, ()
-handleNoType(super)
-handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}], (, ()
-handleIdentifier(, methodDeclaration)
-handleNoTypeVariables(()
-beginFormalParameters((, MemberKind.NonStaticMethod)
-beginMetadataStar(int)
-endMetadataStar(0)
-beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
-handleIdentifier(int, typeReference)
-handleNoTypeArguments(x)
-handleType(int, null)
-handleIdentifier(x, formalParameterDeclaration)
-handleFormalParameterWithoutValue())
-endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
-endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
-handleNoInitializers()
-handleAsyncModifier(null, null)
-beginBlockFunctionBody({)
-beginIfStatement(if)
-handleIdentifier(x, expression)
-handleNoTypeArguments(==)
-handleNoArguments(==)
-handleSend(x, ==)
-beginBinaryExpression(==)
-handleLiteralInt(0)
-endBinaryExpression(==)
-handleParenthesizedCondition(()
-beginThenStatement(return)
-beginReturnStatement(return)
-handleLiteralInt(42)
-endReturnStatement(true, return, ;)
-endThenStatement(;)
-endIfStatement(if, null)
-beginReturnStatement(return)
-handleSuperExpression(super, expression)
-handleNoTypeArguments(()
-beginArguments(()
-handleIdentifier(x, expression)
-handleNoTypeArguments(-)
-handleNoArguments(-)
-handleSend(x, -)
-beginBinaryExpression(-)
-handleLiteralInt(1)
-endBinaryExpression(-)
-endArguments(1, (, ))
-handleSend(super, +)
-beginBinaryExpression(+)
-handleLiteralInt(1)
-endBinaryExpression(+)
-endReturnStatement(true, return, ;)
-endBlockFunctionBody(2, {, })
-endClassMethod(null, , (, null, })
-endMember()
-beginMetadataStar(int)
-endMetadataStar(0)
-beginMember()
-handleRecoverableError(MissingConstFinalVarOrType, int, int)
-handleNoType(})
-handleIdentifier(int, fieldDeclaration)
-handleNoFieldInitializer(switch)
-handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
-endClassFields(null, null, null, null, 1, int, ;)
-endMember()
-beginMetadataStar(switch)
-endMetadataStar(0)
-beginMember()
-handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got 'switch'., null, {token: switch}], switch, switch)
-handleInvalidMember(switch)
-endMember()
-beginMetadataStar(()
-endMetadataStar(0)
-beginMember()
-beginMethod(null, null, null, null, null, ()
-handleNoType(switch)
-handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}], (, ()
-handleIdentifier(, methodDeclaration)
-handleNoTypeVariables(()
-beginFormalParameters((, MemberKind.NonStaticMethod)
-beginMetadataStar(int)
-endMetadataStar(0)
-beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
-handleIdentifier(int, typeReference)
-handleNoTypeArguments(x)
-handleType(int, null)
-handleIdentifier(x, formalParameterDeclaration)
-handleFormalParameterWithoutValue())
-endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
-endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
-handleNoInitializers()
-handleAsyncModifier(null, null)
-beginBlockFunctionBody({)
-beginIfStatement(if)
-handleIdentifier(x, expression)
-handleNoTypeArguments(==)
-handleNoArguments(==)
-handleSend(x, ==)
-beginBinaryExpression(==)
-handleLiteralInt(0)
-endBinaryExpression(==)
-handleParenthesizedCondition(()
-beginThenStatement(return)
-beginReturnStatement(return)
-handleLiteralInt(42)
-endReturnStatement(true, return, ;)
-endThenStatement(;)
-endIfStatement(if, null)
-beginReturnStatement(return)
-handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'switch'., null, {token: switch}], switch, switch)
-handleIdentifier(, expression)
-handleNoTypeArguments(switch)
-handleNoArguments(switch)
-handleSend(, switch)
-handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], switch, switch)
-endReturnStatement(true, return, ;)
-beginSwitchStatement(switch)
-handleIdentifier(x, expression)
-handleNoTypeArguments(-)
-handleNoArguments(-)
-handleSend(x, -)
-beginBinaryExpression(-)
-handleLiteralInt(1)
-endBinaryExpression(-)
-handleParenthesizedCondition(()
-handleRecoverableError(Message[ExpectedClassOrMixinBody, A switch statement must have a body, even if it is empty., Try adding an empty body., {string: switch statement}], ), ))
-beginSwitchBlock({)
-endSwitchBlock(0, {, })
-endSwitchStatement(switch, })
-handleRecoverableError(UnsupportedPrefixPlus, +, +)
-handleIdentifier(, expression)
-handleNoTypeArguments(+)
-handleNoArguments(+)
-handleSend(, +)
-beginBinaryExpression(+)
-handleLiteralInt(1)
-endBinaryExpression(+)
-handleExpressionStatement(;)
-endBlockFunctionBody(4, {, })
-endClassMethod(null, , (, null, })
-endMember()
-beginMetadataStar(int)
-endMetadataStar(0)
-beginMember()
-handleIdentifier(int, typeReference)
-handleNoTypeArguments(this)
-handleType(int, null)
-handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'this'., null, {token: this}], this, this)
-handleIdentifier(this, fieldDeclaration)
-handleNoFieldInitializer(()
-handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], this, this)
-endClassFields(null, null, null, null, 1, int, ;)
-endMember()
-beginMetadataStar(()
-endMetadataStar(0)
-beginMember()
-beginMethod(null, null, null, null, null, ()
-handleNoType(;)
-handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}], (, ()
-handleIdentifier(, methodDeclaration)
-handleNoTypeVariables(()
-beginFormalParameters((, MemberKind.NonStaticMethod)
-beginMetadataStar(int)
-endMetadataStar(0)
-beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
-handleIdentifier(int, typeReference)
-handleNoTypeArguments(x)
-handleType(int, null)
-handleIdentifier(x, formalParameterDeclaration)
-handleFormalParameterWithoutValue())
-endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
-endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
-handleNoInitializers()
-handleAsyncModifier(null, null)
-beginBlockFunctionBody({)
-beginIfStatement(if)
-handleIdentifier(x, expression)
-handleNoTypeArguments(==)
-handleNoArguments(==)
-handleSend(x, ==)
-beginBinaryExpression(==)
-handleLiteralInt(0)
-endBinaryExpression(==)
-handleParenthesizedCondition(()
-beginThenStatement(return)
-beginReturnStatement(return)
-handleLiteralInt(42)
-endReturnStatement(true, return, ;)
-endThenStatement(;)
-endIfStatement(if, null)
-beginReturnStatement(return)
-handleThisExpression(this, expression)
-handleNoTypeArguments(()
-beginArguments(()
-handleIdentifier(x, expression)
-handleNoTypeArguments(-)
-handleNoArguments(-)
-handleSend(x, -)
-beginBinaryExpression(-)
-handleLiteralInt(1)
-endBinaryExpression(-)
-endArguments(1, (, ))
-handleSend(this, +)
-beginBinaryExpression(+)
-handleLiteralInt(1)
-endBinaryExpression(+)
-endReturnStatement(true, return, ;)
-endBlockFunctionBody(2, {, })
-endClassMethod(null, , (, null, })
-endMember()
-beginMetadataStar(int)
-endMetadataStar(0)
-beginMember()
-handleRecoverableError(MissingConstFinalVarOrType, int, int)
-handleNoType(})
-handleIdentifier(int, fieldDeclaration)
-handleNoFieldInitializer(throw)
-handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
-endClassFields(null, null, null, null, 1, int, ;)
-endMember()
-beginMetadataStar(throw)
-endMetadataStar(0)
-beginMember()
-handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got 'throw'., null, {token: throw}], throw, throw)
-handleInvalidMember(throw)
-endMember()
-beginMetadataStar(()
-endMetadataStar(0)
-beginMember()
-beginMethod(null, null, null, null, null, ()
-handleNoType(throw)
-handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}], (, ()
-handleIdentifier(, methodDeclaration)
-handleNoTypeVariables(()
-beginFormalParameters((, MemberKind.NonStaticMethod)
-beginMetadataStar(int)
-endMetadataStar(0)
-beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
-handleIdentifier(int, typeReference)
-handleNoTypeArguments(x)
-handleType(int, null)
-handleIdentifier(x, formalParameterDeclaration)
-handleFormalParameterWithoutValue())
-endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
-endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
-handleNoInitializers()
-handleAsyncModifier(null, null)
-beginBlockFunctionBody({)
-beginIfStatement(if)
-handleIdentifier(x, expression)
-handleNoTypeArguments(==)
-handleNoArguments(==)
-handleSend(x, ==)
-beginBinaryExpression(==)
-handleLiteralInt(0)
-endBinaryExpression(==)
-handleParenthesizedCondition(()
-beginThenStatement(return)
-beginReturnStatement(return)
-handleLiteralInt(42)
-endReturnStatement(true, return, ;)
-endThenStatement(;)
-endIfStatement(if, null)
-beginReturnStatement(return)
-handleIdentifier(x, expression)
-handleNoTypeArguments(-)
-handleNoArguments(-)
-handleSend(x, -)
-beginBinaryExpression(-)
-handleLiteralInt(1)
-endBinaryExpression(-)
-handleParenthesizedExpression(()
-beginBinaryExpression(+)
-handleLiteralInt(1)
-endBinaryExpression(+)
-handleThrowExpression(throw, ;)
-endReturnStatement(true, return, ;)
-endBlockFunctionBody(2, {, })
-endClassMethod(null, , (, null, })
-endMember()
-beginMetadataStar(int)
-endMetadataStar(0)
-beginMember()
-handleRecoverableError(MissingConstFinalVarOrType, int, int)
-handleNoType(})
-handleIdentifier(int, fieldDeclaration)
-handleNoFieldInitializer(true)
-handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
-endClassFields(null, null, null, null, 1, int, ;)
-endMember()
-beginMetadataStar(true)
-endMetadataStar(0)
-beginMember()
-handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got 'true'., null, {token: true}], true, true)
-handleInvalidMember(true)
-endMember()
-beginMetadataStar(()
-endMetadataStar(0)
-beginMember()
-beginMethod(null, null, null, null, null, ()
-handleNoType(true)
-handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}], (, ()
-handleIdentifier(, methodDeclaration)
-handleNoTypeVariables(()
-beginFormalParameters((, MemberKind.NonStaticMethod)
-beginMetadataStar(int)
-endMetadataStar(0)
-beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
-handleIdentifier(int, typeReference)
-handleNoTypeArguments(x)
-handleType(int, null)
-handleIdentifier(x, formalParameterDeclaration)
-handleFormalParameterWithoutValue())
-endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
-endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
-handleNoInitializers()
-handleAsyncModifier(null, null)
-beginBlockFunctionBody({)
-beginIfStatement(if)
-handleIdentifier(x, expression)
-handleNoTypeArguments(==)
-handleNoArguments(==)
-handleSend(x, ==)
-beginBinaryExpression(==)
-handleLiteralInt(0)
-endBinaryExpression(==)
-handleParenthesizedCondition(()
-beginThenStatement(return)
-beginReturnStatement(return)
-handleLiteralInt(42)
-endReturnStatement(true, return, ;)
-endThenStatement(;)
-endIfStatement(if, null)
-beginReturnStatement(return)
-handleLiteralBool(true)
-handleNoTypeArguments(()
-beginArguments(()
-handleIdentifier(x, expression)
-handleNoTypeArguments(-)
-handleNoArguments(-)
-handleSend(x, -)
-beginBinaryExpression(-)
-handleLiteralInt(1)
-endBinaryExpression(-)
-endArguments(1, (, ))
-handleSend((, ))
-beginBinaryExpression(+)
-handleLiteralInt(1)
-endBinaryExpression(+)
-endReturnStatement(true, return, ;)
-endBlockFunctionBody(2, {, })
-endClassMethod(null, , (, null, })
-endMember()
-beginMetadataStar(int)
-endMetadataStar(0)
-beginMember()
-handleRecoverableError(MissingConstFinalVarOrType, int, int)
-handleNoType(})
-handleIdentifier(int, fieldDeclaration)
-handleNoFieldInitializer(try)
-handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
-endClassFields(null, null, null, null, 1, int, ;)
-endMember()
-beginMetadataStar(try)
-endMetadataStar(0)
-beginMember()
-handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got 'try'., null, {token: try}], try, try)
-handleInvalidMember(try)
-endMember()
-beginMetadataStar(()
-endMetadataStar(0)
-beginMember()
-beginMethod(null, null, null, null, null, ()
-handleNoType(try)
-handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}], (, ()
-handleIdentifier(, methodDeclaration)
-handleNoTypeVariables(()
-beginFormalParameters((, MemberKind.NonStaticMethod)
-beginMetadataStar(int)
-endMetadataStar(0)
-beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
-handleIdentifier(int, typeReference)
-handleNoTypeArguments(x)
-handleType(int, null)
-handleIdentifier(x, formalParameterDeclaration)
-handleFormalParameterWithoutValue())
-endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
-endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
-handleNoInitializers()
-handleAsyncModifier(null, null)
-beginBlockFunctionBody({)
-beginIfStatement(if)
-handleIdentifier(x, expression)
-handleNoTypeArguments(==)
-handleNoArguments(==)
-handleSend(x, ==)
-beginBinaryExpression(==)
-handleLiteralInt(0)
-endBinaryExpression(==)
-handleParenthesizedCondition(()
-beginThenStatement(return)
-beginReturnStatement(return)
-handleLiteralInt(42)
-endReturnStatement(true, return, ;)
-endThenStatement(;)
-endIfStatement(if, null)
-beginReturnStatement(return)
-handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'try'., null, {token: try}], try, try)
-handleIdentifier(, expression)
-handleNoTypeArguments(try)
-handleNoArguments(try)
-handleSend(, try)
-handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], try, try)
-endReturnStatement(true, return, ;)
-beginTryStatement(try)
-handleRecoverableError(Message[ExpectedClassOrMixinBody, A try statement must have a body, even if it is empty., Try adding an empty body., {string: try statement}], try, try)
-beginBlock({, BlockKind(try statement))
-endBlock(0, {, }, BlockKind(try statement))
-handleRecoverableError(OnlyTry, try, try)
-endTryStatement(0, try, null)
-handleIdentifier(x, expression)
-handleNoTypeArguments(-)
-handleNoArguments(-)
-handleSend(x, -)
-beginBinaryExpression(-)
-handleLiteralInt(1)
-endBinaryExpression(-)
-handleParenthesizedExpression(()
-beginBinaryExpression(+)
-handleLiteralInt(1)
-endBinaryExpression(+)
-handleExpressionStatement(;)
-endBlockFunctionBody(4, {, })
-endClassMethod(null, , (, null, })
-endMember()
-beginMetadataStar(int)
-endMetadataStar(0)
-beginMember()
-handleRecoverableError(MissingConstFinalVarOrType, int, int)
-handleNoType(})
-handleIdentifier(int, fieldDeclaration)
-handleNoFieldInitializer(var)
-handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
-endClassFields(null, null, null, null, 1, int, ;)
-endMember()
-beginMetadataStar(var)
-endMetadataStar(0)
-beginMember()
-handleRecoverableError(VarReturnType, var, var)
-beginMethod(null, null, null, null, null, ()
-handleNoType(var)
-handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}], (, ()
-handleIdentifier(, methodDeclaration)
-handleNoTypeVariables(()
-beginFormalParameters((, MemberKind.NonStaticMethod)
-beginMetadataStar(int)
-endMetadataStar(0)
-beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
-handleIdentifier(int, typeReference)
-handleNoTypeArguments(x)
-handleType(int, null)
-handleIdentifier(x, formalParameterDeclaration)
-handleFormalParameterWithoutValue())
-endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
-endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
-handleNoInitializers()
-handleAsyncModifier(null, null)
-beginBlockFunctionBody({)
-beginIfStatement(if)
-handleIdentifier(x, expression)
-handleNoTypeArguments(==)
-handleNoArguments(==)
-handleSend(x, ==)
-beginBinaryExpression(==)
-handleLiteralInt(0)
-endBinaryExpression(==)
-handleParenthesizedCondition(()
-beginThenStatement(return)
-beginReturnStatement(return)
-handleLiteralInt(42)
-endReturnStatement(true, return, ;)
-endThenStatement(;)
-endIfStatement(if, null)
-beginReturnStatement(return)
-handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'var'., null, {token: var}], var, var)
-handleIdentifier(, expression)
-handleNoTypeArguments(var)
-handleNoArguments(var)
-handleSend(, var)
-handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], var, var)
-endReturnStatement(true, return, ;)
-beginMetadataStar(var)
-endMetadataStar(0)
-handleNoType(var)
-beginVariablesDeclaration((, null, var)
-handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}], (, ()
-handleIdentifier(, localVariableDeclaration)
-beginInitializedIdentifier()
-handleNoVariableInitializer(x)
-endInitializedIdentifier()
-handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], x, x)
-endVariablesDeclaration(1, ;)
-handleIdentifier(x, expression)
-handleNoTypeArguments(-)
-handleNoArguments(-)
-handleSend(x, -)
-beginBinaryExpression(-)
-handleLiteralInt(1)
-endBinaryExpression(-)
-handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], 1, 1)
-handleExpressionStatement(;)
-handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got ')'., null, {token: )}], ), ))
-handleIdentifier(, expression)
-handleNoTypeArguments())
-handleNoArguments())
-handleSend(, ))
-handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], ), ))
-handleExpressionStatement(;)
-handleRecoverableError(Message[UnexpectedToken, Unexpected token ';'., null, {token: ;}], ), ))
-handleRecoverableError(UnsupportedPrefixPlus, +, +)
-handleIdentifier(, expression)
-handleNoTypeArguments(+)
-handleNoArguments(+)
-handleSend(, +)
-beginBinaryExpression(+)
-handleLiteralInt(1)
-endBinaryExpression(+)
-handleExpressionStatement(;)
-endBlockFunctionBody(6, {, })
-endClassMethod(null, var, (, null, })
-endMember()
-beginMetadataStar(int)
-endMetadataStar(0)
-beginMember()
-handleRecoverableError(MissingConstFinalVarOrType, int, int)
-handleNoType(})
-handleIdentifier(int, fieldDeclaration)
-handleNoFieldInitializer(void)
-handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
-endClassFields(null, null, null, null, 1, int, ;)
-endMember()
-beginMetadataStar(void)
-endMetadataStar(0)
-beginMember()
-beginMethod(null, null, null, null, null, ()
-handleVoidKeyword(void)
-handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}], (, ()
-handleIdentifier(, methodDeclaration)
-handleNoTypeVariables(()
-beginFormalParameters((, MemberKind.NonStaticMethod)
-beginMetadataStar(int)
-endMetadataStar(0)
-beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
-handleIdentifier(int, typeReference)
-handleNoTypeArguments(x)
-handleType(int, null)
-handleIdentifier(x, formalParameterDeclaration)
-handleFormalParameterWithoutValue())
-endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
-endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
-handleNoInitializers()
-handleAsyncModifier(null, null)
-beginBlockFunctionBody({)
-beginIfStatement(if)
-handleIdentifier(x, expression)
-handleNoTypeArguments(==)
-handleNoArguments(==)
-handleSend(x, ==)
-beginBinaryExpression(==)
-handleLiteralInt(0)
-endBinaryExpression(==)
-handleParenthesizedCondition(()
-beginThenStatement(return)
-beginReturnStatement(return)
-handleLiteralInt(42)
-endReturnStatement(true, return, ;)
-endThenStatement(;)
-endIfStatement(if, null)
-beginReturnStatement(return)
-handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'void'., null, {token: void}], void, void)
-handleIdentifier(, expression)
-handleNoTypeArguments(void)
-handleNoArguments(void)
-handleSend(, void)
-handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], void, void)
-endReturnStatement(true, return, ;)
-beginMetadataStar(void)
-endMetadataStar(0)
-handleVoidKeyword(void)
-beginVariablesDeclaration((, null, null)
-handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}], (, ()
-handleIdentifier(, localVariableDeclaration)
-beginInitializedIdentifier()
-handleNoVariableInitializer(x)
-endInitializedIdentifier()
-handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], x, x)
-endVariablesDeclaration(1, ;)
-handleIdentifier(x, expression)
-handleNoTypeArguments(-)
-handleNoArguments(-)
-handleSend(x, -)
-beginBinaryExpression(-)
-handleLiteralInt(1)
-endBinaryExpression(-)
-handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], 1, 1)
-handleExpressionStatement(;)
-handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got ')'., null, {token: )}], ), ))
-handleIdentifier(, expression)
-handleNoTypeArguments())
-handleNoArguments())
-handleSend(, ))
-handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], ), ))
-handleExpressionStatement(;)
-handleRecoverableError(Message[UnexpectedToken, Unexpected token ';'., null, {token: ;}], ), ))
-handleRecoverableError(UnsupportedPrefixPlus, +, +)
-handleIdentifier(, expression)
-handleNoTypeArguments(+)
-handleNoArguments(+)
-handleSend(, +)
-beginBinaryExpression(+)
-handleLiteralInt(1)
-endBinaryExpression(+)
-handleExpressionStatement(;)
-endBlockFunctionBody(6, {, })
-endClassMethod(null, void, (, null, })
-endMember()
-beginMetadataStar(int)
-endMetadataStar(0)
-beginMember()
-handleRecoverableError(MissingConstFinalVarOrType, int, int)
-handleNoType(})
-handleIdentifier(int, fieldDeclaration)
-handleNoFieldInitializer(while)
-handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
-endClassFields(null, null, null, null, 1, int, ;)
-endMember()
-beginMetadataStar(while)
-endMetadataStar(0)
-beginMember()
-handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got 'while'., null, {token: while}], while, while)
-handleInvalidMember(while)
-endMember()
-beginMetadataStar(()
-endMetadataStar(0)
-beginMember()
-beginMethod(null, null, null, null, null, ()
-handleNoType(while)
-handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}], (, ()
-handleIdentifier(, methodDeclaration)
-handleNoTypeVariables(()
-beginFormalParameters((, MemberKind.NonStaticMethod)
-beginMetadataStar(int)
-endMetadataStar(0)
-beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
-handleIdentifier(int, typeReference)
-handleNoTypeArguments(x)
-handleType(int, null)
-handleIdentifier(x, formalParameterDeclaration)
-handleFormalParameterWithoutValue())
-endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
-endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
-handleNoInitializers()
-handleAsyncModifier(null, null)
-beginBlockFunctionBody({)
-beginIfStatement(if)
-handleIdentifier(x, expression)
-handleNoTypeArguments(==)
-handleNoArguments(==)
-handleSend(x, ==)
-beginBinaryExpression(==)
-handleLiteralInt(0)
-endBinaryExpression(==)
-handleParenthesizedCondition(()
-beginThenStatement(return)
-beginReturnStatement(return)
-handleLiteralInt(42)
-endReturnStatement(true, return, ;)
-endThenStatement(;)
-endIfStatement(if, null)
-beginReturnStatement(return)
-handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'while'., null, {token: while}], while, while)
-handleIdentifier(, expression)
-handleNoTypeArguments(while)
-handleNoArguments(while)
-handleSend(, while)
-handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], while, while)
-endReturnStatement(true, return, ;)
-beginWhileStatement(while)
-handleIdentifier(x, expression)
-handleNoTypeArguments(-)
-handleNoArguments(-)
-handleSend(x, -)
-beginBinaryExpression(-)
-handleLiteralInt(1)
-endBinaryExpression(-)
-handleParenthesizedCondition(()
-beginWhileStatementBody(+)
-handleRecoverableError(UnsupportedPrefixPlus, +, +)
-handleIdentifier(, expression)
-handleNoTypeArguments(+)
-handleNoArguments(+)
-handleSend(, +)
-beginBinaryExpression(+)
-handleLiteralInt(1)
-endBinaryExpression(+)
-handleExpressionStatement(;)
-endWhileStatementBody(})
-endWhileStatement(while, })
-endBlockFunctionBody(3, {, })
-endClassMethod(null, , (, null, })
-endMember()
-beginMetadataStar(int)
-endMetadataStar(0)
-beginMember()
-handleRecoverableError(MissingConstFinalVarOrType, int, int)
-handleNoType(})
-handleIdentifier(int, fieldDeclaration)
-handleNoFieldInitializer(with)
-handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
-endClassFields(null, null, null, null, 1, int, ;)
-endMember()
-beginMetadataStar(with)
-endMetadataStar(0)
-beginMember()
-handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got 'with'., null, {token: with}], with, with)
-handleInvalidMember(with)
-endMember()
-beginMetadataStar(()
-endMetadataStar(0)
-beginMember()
-beginMethod(null, null, null, null, null, ()
-handleNoType(with)
-handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}], (, ()
-handleIdentifier(, methodDeclaration)
-handleNoTypeVariables(()
-beginFormalParameters((, MemberKind.NonStaticMethod)
-beginMetadataStar(int)
-endMetadataStar(0)
-beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
-handleIdentifier(int, typeReference)
-handleNoTypeArguments(x)
-handleType(int, null)
-handleIdentifier(x, formalParameterDeclaration)
-handleFormalParameterWithoutValue())
-endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
-endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
-handleNoInitializers()
-handleAsyncModifier(null, null)
-beginBlockFunctionBody({)
-beginIfStatement(if)
-handleIdentifier(x, expression)
-handleNoTypeArguments(==)
-handleNoArguments(==)
-handleSend(x, ==)
-beginBinaryExpression(==)
-handleLiteralInt(0)
-endBinaryExpression(==)
-handleParenthesizedCondition(()
-beginThenStatement(return)
-beginReturnStatement(return)
-handleLiteralInt(42)
-endReturnStatement(true, return, ;)
-endThenStatement(;)
-endIfStatement(if, null)
-beginReturnStatement(return)
-handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'with'., null, {token: with}], with, with)
-handleIdentifier(with, expression)
-handleNoTypeArguments(()
-beginArguments(()
-handleIdentifier(x, expression)
-handleNoTypeArguments(-)
-handleNoArguments(-)
-handleSend(x, -)
-beginBinaryExpression(-)
-handleLiteralInt(1)
-endBinaryExpression(-)
-endArguments(1, (, ))
-handleSend(with, +)
-beginBinaryExpression(+)
-handleLiteralInt(1)
-endBinaryExpression(+)
-endReturnStatement(true, return, ;)
-endBlockFunctionBody(2, {, })
-endClassMethod(null, , (, null, })
-endMember()
-endClassOrMixinBody(DeclarationKind.Class, 94, {, })
-endClassDeclaration(class, })
+      beginMember()
+        beginMethod(null, null, null, null, null, void)
+          handleIdentifier(int, typeReference)
+          handleNoTypeArguments(void)
+          handleType(int, null)
+          handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'void'., null, {token: void}], void, void)
+          handleIdentifier(void, methodDeclaration)
+          handleNoTypeVariables(()
+          beginFormalParameters((, MemberKind.NonStaticMethod)
+            beginMetadataStar(int)
+            endMetadataStar(0)
+            beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+              handleIdentifier(int, typeReference)
+              handleNoTypeArguments(x)
+              handleType(int, null)
+              handleIdentifier(x, formalParameterDeclaration)
+              handleFormalParameterWithoutValue())
+            endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+          endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
+          handleNoInitializers()
+          handleAsyncModifier(null, null)
+          beginBlockFunctionBody({)
+            beginIfStatement(if)
+              handleIdentifier(x, expression)
+              handleNoTypeArguments(==)
+              handleNoArguments(==)
+              handleSend(x, ==)
+              beginBinaryExpression(==)
+              handleLiteralInt(0)
+              endBinaryExpression(==)
+              handleParenthesizedCondition(()
+              beginThenStatement(return)
+                beginReturnStatement(return)
+                  handleLiteralInt(42)
+                endReturnStatement(true, return, ;)
+              endThenStatement(;)
+            endIfStatement(if, null)
+            beginReturnStatement(return)
+              handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'void'., null, {token: void}], void, void)
+              handleIdentifier(, expression)
+              handleNoTypeArguments(void)
+              handleNoArguments(void)
+              handleSend(, void)
+              handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], void, void)
+            endReturnStatement(true, return, ;)
+            beginMetadataStar(void)
+            endMetadataStar(0)
+            handleVoidKeyword(void)
+            beginVariablesDeclaration((, null, null)
+              handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}], (, ()
+              handleIdentifier(, localVariableDeclaration)
+              beginInitializedIdentifier()
+                handleNoVariableInitializer(x)
+              endInitializedIdentifier()
+              handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], x, x)
+            endVariablesDeclaration(1, ;)
+            handleIdentifier(x, expression)
+            handleNoTypeArguments(-)
+            handleNoArguments(-)
+            handleSend(x, -)
+            beginBinaryExpression(-)
+            handleLiteralInt(1)
+            endBinaryExpression(-)
+            handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], 1, 1)
+            handleExpressionStatement(;)
+            handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got ')'., null, {token: )}], ), ))
+            handleIdentifier(, expression)
+            handleNoTypeArguments())
+            handleNoArguments())
+            handleSend(, ))
+            handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], ), ))
+            handleExpressionStatement(;)
+            handleRecoverableError(Message[UnexpectedToken, Unexpected token ';'., null, {token: ;}], ), ))
+            handleRecoverableError(UnsupportedPrefixPlus, +, +)
+            handleIdentifier(, expression)
+            handleNoTypeArguments(+)
+            handleNoArguments(+)
+            handleSend(, +)
+            beginBinaryExpression(+)
+            handleLiteralInt(1)
+            endBinaryExpression(+)
+            handleExpressionStatement(;)
+          endBlockFunctionBody(6, {, })
+        endClassMethod(null, int, (, null, })
+      endMember()
+      beginMetadataStar(int)
+      endMetadataStar(0)
+      beginMember()
+        beginMethod(null, null, null, null, null, while)
+          handleIdentifier(int, typeReference)
+          handleNoTypeArguments(while)
+          handleType(int, null)
+          handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'while'., null, {token: while}], while, while)
+          handleIdentifier(while, methodDeclaration)
+          handleNoTypeVariables(()
+          beginFormalParameters((, MemberKind.NonStaticMethod)
+            beginMetadataStar(int)
+            endMetadataStar(0)
+            beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+              handleIdentifier(int, typeReference)
+              handleNoTypeArguments(x)
+              handleType(int, null)
+              handleIdentifier(x, formalParameterDeclaration)
+              handleFormalParameterWithoutValue())
+            endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+          endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
+          handleNoInitializers()
+          handleAsyncModifier(null, null)
+          beginBlockFunctionBody({)
+            beginIfStatement(if)
+              handleIdentifier(x, expression)
+              handleNoTypeArguments(==)
+              handleNoArguments(==)
+              handleSend(x, ==)
+              beginBinaryExpression(==)
+              handleLiteralInt(0)
+              endBinaryExpression(==)
+              handleParenthesizedCondition(()
+              beginThenStatement(return)
+                beginReturnStatement(return)
+                  handleLiteralInt(42)
+                endReturnStatement(true, return, ;)
+              endThenStatement(;)
+            endIfStatement(if, null)
+            beginReturnStatement(return)
+              handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'while'., null, {token: while}], while, while)
+              handleIdentifier(, expression)
+              handleNoTypeArguments(while)
+              handleNoArguments(while)
+              handleSend(, while)
+              handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], while, while)
+            endReturnStatement(true, return, ;)
+            beginWhileStatement(while)
+              handleIdentifier(x, expression)
+              handleNoTypeArguments(-)
+              handleNoArguments(-)
+              handleSend(x, -)
+              beginBinaryExpression(-)
+              handleLiteralInt(1)
+              endBinaryExpression(-)
+              handleParenthesizedCondition(()
+              beginWhileStatementBody(+)
+                handleRecoverableError(UnsupportedPrefixPlus, +, +)
+                handleIdentifier(, expression)
+                handleNoTypeArguments(+)
+                handleNoArguments(+)
+                handleSend(, +)
+                beginBinaryExpression(+)
+                handleLiteralInt(1)
+                endBinaryExpression(+)
+                handleExpressionStatement(;)
+              endWhileStatementBody(})
+            endWhileStatement(while, })
+          endBlockFunctionBody(3, {, })
+        endClassMethod(null, int, (, null, })
+      endMember()
+      beginMetadataStar(int)
+      endMetadataStar(0)
+      beginMember()
+        beginMethod(null, null, null, null, null, with)
+          handleIdentifier(int, typeReference)
+          handleNoTypeArguments(with)
+          handleType(int, null)
+          handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'with'., null, {token: with}], with, with)
+          handleIdentifier(with, methodDeclaration)
+          handleNoTypeVariables(()
+          beginFormalParameters((, MemberKind.NonStaticMethod)
+            beginMetadataStar(int)
+            endMetadataStar(0)
+            beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+              handleIdentifier(int, typeReference)
+              handleNoTypeArguments(x)
+              handleType(int, null)
+              handleIdentifier(x, formalParameterDeclaration)
+              handleFormalParameterWithoutValue())
+            endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+          endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
+          handleNoInitializers()
+          handleAsyncModifier(null, null)
+          beginBlockFunctionBody({)
+            beginIfStatement(if)
+              handleIdentifier(x, expression)
+              handleNoTypeArguments(==)
+              handleNoArguments(==)
+              handleSend(x, ==)
+              beginBinaryExpression(==)
+              handleLiteralInt(0)
+              endBinaryExpression(==)
+              handleParenthesizedCondition(()
+              beginThenStatement(return)
+                beginReturnStatement(return)
+                  handleLiteralInt(42)
+                endReturnStatement(true, return, ;)
+              endThenStatement(;)
+            endIfStatement(if, null)
+            beginReturnStatement(return)
+              handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'with'., null, {token: with}], with, with)
+              handleIdentifier(with, expression)
+              handleNoTypeArguments(()
+              beginArguments(()
+                handleIdentifier(x, expression)
+                handleNoTypeArguments(-)
+                handleNoArguments(-)
+                handleSend(x, -)
+                beginBinaryExpression(-)
+                handleLiteralInt(1)
+                endBinaryExpression(-)
+              endArguments(1, (, ))
+              handleSend(with, +)
+              beginBinaryExpression(+)
+              handleLiteralInt(1)
+              endBinaryExpression(+)
+            endReturnStatement(true, return, ;)
+          endBlockFunctionBody(2, {, })
+        endClassMethod(null, int, (, null, })
+      endMember()
+    endClassOrMixinBody(DeclarationKind.Class, 34, {, })
+  endClassDeclaration(class, })
 endTopLevelDeclaration()
 endCompilationUnit(1, )
diff --git a/pkg/front_end/parser_testcases/error_recovery/reserved_words_class_methods.dart.intertwined.expect b/pkg/front_end/parser_testcases/error_recovery/reserved_words_class_methods.dart.intertwined.expect
index 2b33d7b..8ad3c89 100644
--- a/pkg/front_end/parser_testcases/error_recovery/reserved_words_class_methods.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/error_recovery/reserved_words_class_methods.dart.intertwined.expect
@@ -32,1027 +32,420 @@
                 listener: beginMetadataStar(int)
                 listener: endMetadataStar(0)
               listener: beginMember()
-              parseFields({, null, null, null, null, null, {, Instance of 'NoType', int, DeclarationKind.Class, WrapperClass)
-                reportRecoverableError(int, MissingConstFinalVarOrType)
-                  listener: handleRecoverableError(MissingConstFinalVarOrType, int, int)
-                listener: handleNoType({)
-                ensureIdentifier({, fieldDeclaration)
-                  listener: handleIdentifier(int, fieldDeclaration)
-                parseFieldInitializerOpt(int, int, null, null, DeclarationKind.Class, WrapperClass)
-                  listener: handleNoFieldInitializer(assert)
-                ensureSemicolon(int)
-                  reportRecoverableError(int, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
-                    listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
-                  rewriter()
-                listener: endClassFields(null, null, null, null, 1, int, ;)
-              listener: endMember()
-            notEofOrValue(}, assert)
-            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
-              parseMetadataStar(;)
-                listener: beginMetadataStar(assert)
-                listener: endMetadataStar(0)
-              listener: beginMember()
-              recoverFromInvalidMember(;, ;, null, null, null, null, null, ;, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
-                reportRecoverableErrorWithToken(assert, Instance of 'Template<(Token) => Message>')
-                  listener: handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got 'assert'., null, {token: assert}], assert, assert)
-                listener: handleInvalidMember(assert)
-                listener: endMember()
-            notEofOrValue(}, ()
-            parseClassOrMixinOrExtensionMemberImpl(assert, DeclarationKind.Class, WrapperClass)
-              parseMetadataStar(assert)
-                listener: beginMetadataStar(()
-                listener: endMetadataStar(0)
-              listener: beginMember()
-              recoverFromInvalidMember(assert, assert, null, null, null, null, null, assert, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
-                parseMethod(assert, null, null, null, null, null, assert, Instance of 'NoType', null, (, DeclarationKind.Class, WrapperClass)
-                  listener: beginMethod(null, null, null, null, null, ()
-                  listener: handleNoType(assert)
-                  ensureIdentifier(assert, methodDeclaration)
-                    insertSyntheticIdentifier(assert, methodDeclaration, message: null, messageOnToken: null)
-                      reportRecoverableError((, Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}])
-                        listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}], (, ()
-                      rewriter()
-                    listener: handleIdentifier(, methodDeclaration)
-                  parseQualifiedRestOpt(, methodDeclarationContinuation)
-                  parseMethodTypeVar()
-                    listener: handleNoTypeVariables(()
-                  parseGetterOrFormalParameters(, (, false, MemberKind.NonStaticMethod)
-                    parseFormalParameters(, MemberKind.NonStaticMethod)
-                      parseFormalParametersRest((, MemberKind.NonStaticMethod)
-                        listener: beginFormalParameters((, MemberKind.NonStaticMethod)
-                        parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
-                          parseMetadataStar(()
-                            listener: beginMetadataStar(int)
-                            listener: endMetadataStar(0)
-                          listener: beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
-                          listener: handleIdentifier(int, typeReference)
-                          listener: handleNoTypeArguments(x)
-                          listener: handleType(int, null)
-                          ensureIdentifier(int, formalParameterDeclaration)
-                            listener: handleIdentifier(x, formalParameterDeclaration)
-                          listener: handleFormalParameterWithoutValue())
-                          listener: endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
-                        listener: endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
-                  parseInitializersOpt())
-                    listener: handleNoInitializers()
-                  parseAsyncModifierOpt())
-                    listener: handleAsyncModifier(null, null)
-                    inPlainSync()
+              isReservedKeyword(assert)
+              indicatesMethodOrField(()
+              parseMethod({, null, null, null, null, null, {, Instance of 'SimpleType', null, assert, DeclarationKind.Class, WrapperClass, true)
+                listener: beginMethod(null, null, null, null, null, assert)
+                listener: handleIdentifier(int, typeReference)
+                listener: handleNoTypeArguments(assert)
+                listener: handleType(int, null)
+                ensureIdentifierPotentiallyRecovered(int, methodDeclaration, true)
+                  reportRecoverableErrorWithToken(assert, Instance of 'Template<(Token) => Message>')
+                    listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'assert'., null, {token: assert}], assert, assert)
+                  listener: handleIdentifier(assert, methodDeclaration)
+                parseQualifiedRestOpt(assert, methodDeclarationContinuation)
+                parseMethodTypeVar(assert)
+                  listener: handleNoTypeVariables(()
+                parseGetterOrFormalParameters(assert, assert, false, MemberKind.NonStaticMethod)
+                  parseFormalParameters(assert, MemberKind.NonStaticMethod)
+                    parseFormalParametersRest((, MemberKind.NonStaticMethod)
+                      listener: beginFormalParameters((, MemberKind.NonStaticMethod)
+                      parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+                        parseMetadataStar(()
+                          listener: beginMetadataStar(int)
+                          listener: endMetadataStar(0)
+                        listener: beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+                        listener: handleIdentifier(int, typeReference)
+                        listener: handleNoTypeArguments(x)
+                        listener: handleType(int, null)
+                        ensureIdentifier(int, formalParameterDeclaration)
+                          listener: handleIdentifier(x, formalParameterDeclaration)
+                        listener: handleFormalParameterWithoutValue())
+                        listener: endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+                      listener: endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
+                parseInitializersOpt())
+                  listener: handleNoInitializers()
+                parseAsyncModifierOpt())
+                  listener: handleAsyncModifier(null, null)
                   inPlainSync()
-                  parseFunctionBody(), false, true)
-                    listener: beginBlockFunctionBody({)
-                    notEofOrValue(}, if)
-                    parseStatement({)
-                      parseStatementX({)
-                        parseIfStatement({)
-                          listener: beginIfStatement(if)
-                          ensureParenthesizedCondition(if)
-                            parseExpressionInParenthesisRest(()
-                              parseExpression(()
-                                parsePrecedenceExpression((, 1, true)
-                                  parseUnaryExpression((, true)
-                                    parsePrimary((, expression)
-                                      parseSendOrFunctionLiteral((, expression)
-                                        parseSend((, expression)
-                                          ensureIdentifier((, expression)
-                                            listener: handleIdentifier(x, expression)
-                                          listener: handleNoTypeArguments(==)
-                                          parseArgumentsOpt(x)
-                                            listener: handleNoArguments(==)
-                                          listener: handleSend(x, ==)
-                                  listener: beginBinaryExpression(==)
-                                  parsePrecedenceExpression(==, 8, true)
-                                    parseUnaryExpression(==, true)
-                                      parsePrimary(==, expression)
-                                        parseLiteralInt(==)
-                                          listener: handleLiteralInt(0)
-                                  listener: endBinaryExpression(==)
-                              ensureCloseParen(0, ()
-                            listener: handleParenthesizedCondition(()
-                          listener: beginThenStatement(return)
-                          parseStatement())
-                            parseStatementX())
-                              parseReturnStatement())
-                                listener: beginReturnStatement(return)
-                                parseExpression(return)
-                                  parsePrecedenceExpression(return, 1, true)
-                                    parseUnaryExpression(return, true)
-                                      parsePrimary(return, expression)
-                                        parseLiteralInt(return)
-                                          listener: handleLiteralInt(42)
-                                ensureSemicolon(42)
-                                listener: endReturnStatement(true, return, ;)
-                                inGenerator()
-                          listener: endThenStatement(;)
-                          listener: endIfStatement(if, null)
-                    notEofOrValue(}, return)
-                    parseStatement(;)
-                      parseStatementX(;)
-                        parseReturnStatement(;)
-                          listener: beginReturnStatement(return)
-                          parseExpression(return)
-                            parsePrecedenceExpression(return, 1, true)
-                              parseUnaryExpression(return, true)
-                                parsePrimary(return, expression)
-                                  inPlainSync()
-                                  parseAssert(return, Assert.Expression)
-                                    listener: beginAssert(assert, Assert.Expression)
-                                    parseExpression(()
-                                      parsePrecedenceExpression((, 1, true)
-                                        parseUnaryExpression((, true)
-                                          parsePrimary((, expression)
-                                            parseSendOrFunctionLiteral((, expression)
-                                              parseSend((, expression)
-                                                ensureIdentifier((, expression)
-                                                  listener: handleIdentifier(x, expression)
-                                                listener: handleNoTypeArguments(-)
-                                                parseArgumentsOpt(x)
-                                                  listener: handleNoArguments(-)
-                                                listener: handleSend(x, -)
-                                        listener: beginBinaryExpression(-)
-                                        parsePrecedenceExpression(-, 14, true)
-                                          parseUnaryExpression(-, true)
-                                            parsePrimary(-, expression)
-                                              parseLiteralInt(-)
-                                                listener: handleLiteralInt(1)
-                                        listener: endBinaryExpression(-)
-                                    reportRecoverableError(assert, AssertAsExpression)
-                                      listener: handleRecoverableError(AssertAsExpression, assert, assert)
-                                    listener: endAssert(assert, Assert.Expression, (, null, +)
-                              listener: beginBinaryExpression(+)
-                              parsePrecedenceExpression(+, 14, true)
-                                parseUnaryExpression(+, true)
-                                  parsePrimary(+, expression)
-                                    parseLiteralInt(+)
-                                      listener: handleLiteralInt(1)
-                              listener: endBinaryExpression(+)
-                          ensureSemicolon(1)
-                          listener: endReturnStatement(true, return, ;)
-                          inGenerator()
-                    notEofOrValue(}, })
-                    listener: endBlockFunctionBody(2, {, })
-                  listener: endClassMethod(null, , (, null, })
-                listener: endMember()
+                inPlainSync()
+                parseFunctionBody(), false, true)
+                  listener: beginBlockFunctionBody({)
+                  notEofOrValue(}, if)
+                  parseStatement({)
+                    parseStatementX({)
+                      parseIfStatement({)
+                        listener: beginIfStatement(if)
+                        ensureParenthesizedCondition(if)
+                          parseExpressionInParenthesisRest(()
+                            parseExpression(()
+                              parsePrecedenceExpression((, 1, true)
+                                parseUnaryExpression((, true)
+                                  parsePrimary((, expression)
+                                    parseSendOrFunctionLiteral((, expression)
+                                      parseSend((, expression)
+                                        ensureIdentifier((, expression)
+                                          listener: handleIdentifier(x, expression)
+                                        listener: handleNoTypeArguments(==)
+                                        parseArgumentsOpt(x)
+                                          listener: handleNoArguments(==)
+                                        listener: handleSend(x, ==)
+                                listener: beginBinaryExpression(==)
+                                parsePrecedenceExpression(==, 8, true)
+                                  parseUnaryExpression(==, true)
+                                    parsePrimary(==, expression)
+                                      parseLiteralInt(==)
+                                        listener: handleLiteralInt(0)
+                                listener: endBinaryExpression(==)
+                            ensureCloseParen(0, ()
+                          listener: handleParenthesizedCondition(()
+                        listener: beginThenStatement(return)
+                        parseStatement())
+                          parseStatementX())
+                            parseReturnStatement())
+                              listener: beginReturnStatement(return)
+                              parseExpression(return)
+                                parsePrecedenceExpression(return, 1, true)
+                                  parseUnaryExpression(return, true)
+                                    parsePrimary(return, expression)
+                                      parseLiteralInt(return)
+                                        listener: handleLiteralInt(42)
+                              ensureSemicolon(42)
+                              listener: endReturnStatement(true, return, ;)
+                              inGenerator()
+                        listener: endThenStatement(;)
+                        listener: endIfStatement(if, null)
+                  notEofOrValue(}, return)
+                  parseStatement(;)
+                    parseStatementX(;)
+                      parseReturnStatement(;)
+                        listener: beginReturnStatement(return)
+                        parseExpression(return)
+                          parsePrecedenceExpression(return, 1, true)
+                            parseUnaryExpression(return, true)
+                              parsePrimary(return, expression)
+                                inPlainSync()
+                                parseAssert(return, Assert.Expression)
+                                  listener: beginAssert(assert, Assert.Expression)
+                                  parseExpression(()
+                                    parsePrecedenceExpression((, 1, true)
+                                      parseUnaryExpression((, true)
+                                        parsePrimary((, expression)
+                                          parseSendOrFunctionLiteral((, expression)
+                                            parseSend((, expression)
+                                              ensureIdentifier((, expression)
+                                                listener: handleIdentifier(x, expression)
+                                              listener: handleNoTypeArguments(-)
+                                              parseArgumentsOpt(x)
+                                                listener: handleNoArguments(-)
+                                              listener: handleSend(x, -)
+                                      listener: beginBinaryExpression(-)
+                                      parsePrecedenceExpression(-, 14, true)
+                                        parseUnaryExpression(-, true)
+                                          parsePrimary(-, expression)
+                                            parseLiteralInt(-)
+                                              listener: handleLiteralInt(1)
+                                      listener: endBinaryExpression(-)
+                                  reportRecoverableError(assert, AssertAsExpression)
+                                    listener: handleRecoverableError(AssertAsExpression, assert, assert)
+                                  listener: endAssert(assert, Assert.Expression, (, null, +)
+                            listener: beginBinaryExpression(+)
+                            parsePrecedenceExpression(+, 14, true)
+                              parseUnaryExpression(+, true)
+                                parsePrimary(+, expression)
+                                  parseLiteralInt(+)
+                                    listener: handleLiteralInt(1)
+                            listener: endBinaryExpression(+)
+                        ensureSemicolon(1)
+                        listener: endReturnStatement(true, return, ;)
+                        inGenerator()
+                  notEofOrValue(}, })
+                  listener: endBlockFunctionBody(2, {, })
+                listener: endClassMethod(null, int, (, null, })
+              listener: endMember()
             notEofOrValue(}, int)
             parseClassOrMixinOrExtensionMemberImpl(}, DeclarationKind.Class, WrapperClass)
               parseMetadataStar(})
                 listener: beginMetadataStar(int)
                 listener: endMetadataStar(0)
               listener: beginMember()
-              parseFields(}, null, null, null, null, null, }, Instance of 'NoType', int, DeclarationKind.Class, WrapperClass)
-                reportRecoverableError(int, MissingConstFinalVarOrType)
-                  listener: handleRecoverableError(MissingConstFinalVarOrType, int, int)
-                listener: handleNoType(})
-                ensureIdentifier(}, fieldDeclaration)
-                  listener: handleIdentifier(int, fieldDeclaration)
-                parseFieldInitializerOpt(int, int, null, null, DeclarationKind.Class, WrapperClass)
-                  listener: handleNoFieldInitializer(break)
-                ensureSemicolon(int)
-                  reportRecoverableError(int, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
-                    listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
-                  rewriter()
-                listener: endClassFields(null, null, null, null, 1, int, ;)
-              listener: endMember()
-            notEofOrValue(}, break)
-            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
-              parseMetadataStar(;)
-                listener: beginMetadataStar(break)
-                listener: endMetadataStar(0)
-              listener: beginMember()
-              recoverFromInvalidMember(;, ;, null, null, null, null, null, ;, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
-                reportRecoverableErrorWithToken(break, Instance of 'Template<(Token) => Message>')
-                  listener: handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got 'break'., null, {token: break}], break, break)
-                listener: handleInvalidMember(break)
-                listener: endMember()
-            notEofOrValue(}, ()
-            parseClassOrMixinOrExtensionMemberImpl(break, DeclarationKind.Class, WrapperClass)
-              parseMetadataStar(break)
-                listener: beginMetadataStar(()
-                listener: endMetadataStar(0)
-              listener: beginMember()
-              recoverFromInvalidMember(break, break, null, null, null, null, null, break, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
-                parseMethod(break, null, null, null, null, null, break, Instance of 'NoType', null, (, DeclarationKind.Class, WrapperClass)
-                  listener: beginMethod(null, null, null, null, null, ()
-                  listener: handleNoType(break)
-                  ensureIdentifier(break, methodDeclaration)
-                    insertSyntheticIdentifier(break, methodDeclaration, message: null, messageOnToken: null)
-                      reportRecoverableError((, Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}])
-                        listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}], (, ()
-                      rewriter()
-                    listener: handleIdentifier(, methodDeclaration)
-                  parseQualifiedRestOpt(, methodDeclarationContinuation)
-                  parseMethodTypeVar()
-                    listener: handleNoTypeVariables(()
-                  parseGetterOrFormalParameters(, (, false, MemberKind.NonStaticMethod)
-                    parseFormalParameters(, MemberKind.NonStaticMethod)
-                      parseFormalParametersRest((, MemberKind.NonStaticMethod)
-                        listener: beginFormalParameters((, MemberKind.NonStaticMethod)
-                        parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
-                          parseMetadataStar(()
-                            listener: beginMetadataStar(int)
-                            listener: endMetadataStar(0)
-                          listener: beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
-                          listener: handleIdentifier(int, typeReference)
-                          listener: handleNoTypeArguments(x)
-                          listener: handleType(int, null)
-                          ensureIdentifier(int, formalParameterDeclaration)
-                            listener: handleIdentifier(x, formalParameterDeclaration)
-                          listener: handleFormalParameterWithoutValue())
-                          listener: endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
-                        listener: endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
-                  parseInitializersOpt())
-                    listener: handleNoInitializers()
-                  parseAsyncModifierOpt())
-                    listener: handleAsyncModifier(null, null)
-                    inPlainSync()
+              isReservedKeyword(break)
+              indicatesMethodOrField(()
+              parseMethod(}, null, null, null, null, null, }, Instance of 'SimpleType', null, break, DeclarationKind.Class, WrapperClass, true)
+                listener: beginMethod(null, null, null, null, null, break)
+                listener: handleIdentifier(int, typeReference)
+                listener: handleNoTypeArguments(break)
+                listener: handleType(int, null)
+                ensureIdentifierPotentiallyRecovered(int, methodDeclaration, true)
+                  reportRecoverableErrorWithToken(break, Instance of 'Template<(Token) => Message>')
+                    listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'break'., null, {token: break}], break, break)
+                  listener: handleIdentifier(break, methodDeclaration)
+                parseQualifiedRestOpt(break, methodDeclarationContinuation)
+                parseMethodTypeVar(break)
+                  listener: handleNoTypeVariables(()
+                parseGetterOrFormalParameters(break, break, false, MemberKind.NonStaticMethod)
+                  parseFormalParameters(break, MemberKind.NonStaticMethod)
+                    parseFormalParametersRest((, MemberKind.NonStaticMethod)
+                      listener: beginFormalParameters((, MemberKind.NonStaticMethod)
+                      parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+                        parseMetadataStar(()
+                          listener: beginMetadataStar(int)
+                          listener: endMetadataStar(0)
+                        listener: beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+                        listener: handleIdentifier(int, typeReference)
+                        listener: handleNoTypeArguments(x)
+                        listener: handleType(int, null)
+                        ensureIdentifier(int, formalParameterDeclaration)
+                          listener: handleIdentifier(x, formalParameterDeclaration)
+                        listener: handleFormalParameterWithoutValue())
+                        listener: endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+                      listener: endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
+                parseInitializersOpt())
+                  listener: handleNoInitializers()
+                parseAsyncModifierOpt())
+                  listener: handleAsyncModifier(null, null)
                   inPlainSync()
-                  parseFunctionBody(), false, true)
-                    listener: beginBlockFunctionBody({)
-                    notEofOrValue(}, if)
-                    parseStatement({)
-                      parseStatementX({)
-                        parseIfStatement({)
-                          listener: beginIfStatement(if)
-                          ensureParenthesizedCondition(if)
-                            parseExpressionInParenthesisRest(()
-                              parseExpression(()
-                                parsePrecedenceExpression((, 1, true)
-                                  parseUnaryExpression((, true)
-                                    parsePrimary((, expression)
-                                      parseSendOrFunctionLiteral((, expression)
-                                        parseSend((, expression)
-                                          ensureIdentifier((, expression)
-                                            listener: handleIdentifier(x, expression)
-                                          listener: handleNoTypeArguments(==)
-                                          parseArgumentsOpt(x)
-                                            listener: handleNoArguments(==)
-                                          listener: handleSend(x, ==)
-                                  listener: beginBinaryExpression(==)
-                                  parsePrecedenceExpression(==, 8, true)
-                                    parseUnaryExpression(==, true)
-                                      parsePrimary(==, expression)
-                                        parseLiteralInt(==)
-                                          listener: handleLiteralInt(0)
-                                  listener: endBinaryExpression(==)
-                              ensureCloseParen(0, ()
-                            listener: handleParenthesizedCondition(()
-                          listener: beginThenStatement(return)
-                          parseStatement())
-                            parseStatementX())
-                              parseReturnStatement())
-                                listener: beginReturnStatement(return)
-                                parseExpression(return)
-                                  parsePrecedenceExpression(return, 1, true)
-                                    parseUnaryExpression(return, true)
-                                      parsePrimary(return, expression)
-                                        parseLiteralInt(return)
-                                          listener: handleLiteralInt(42)
-                                ensureSemicolon(42)
-                                listener: endReturnStatement(true, return, ;)
-                                inGenerator()
-                          listener: endThenStatement(;)
-                          listener: endIfStatement(if, null)
-                    notEofOrValue(}, return)
-                    parseStatement(;)
-                      parseStatementX(;)
-                        parseReturnStatement(;)
-                          listener: beginReturnStatement(return)
-                          parseExpression(return)
-                            parsePrecedenceExpression(return, 1, true)
-                              parseUnaryExpression(return, true)
-                                parsePrimary(return, expression)
-                                  inPlainSync()
-                                  parseSend(return, expression)
-                                    ensureIdentifier(return, expression)
-                                      reportRecoverableErrorWithToken(break, Instance of 'Template<(Token) => Message>')
-                                        listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'break'., null, {token: break}], break, break)
-                                      rewriter()
-                                      listener: handleIdentifier(, expression)
-                                    listener: handleNoTypeArguments(break)
-                                    parseArgumentsOpt()
-                                      listener: handleNoArguments(break)
-                                    listener: handleSend(, break)
-                          ensureSemicolon()
-                            reportRecoverableError(, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
-                              listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], break, break)
-                            rewriter()
-                          listener: endReturnStatement(true, return, ;)
-                          inGenerator()
-                    notEofOrValue(}, break)
-                    parseStatement(;)
-                      parseStatementX(;)
-                        parseBreakStatement(;)
-                          isBreakAllowed()
-                          reportRecoverableError(break, BreakOutsideOfLoop)
-                            listener: handleRecoverableError(BreakOutsideOfLoop, break, break)
-                          ensureSemicolon(break)
-                            reportRecoverableError(break, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
-                              listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], break, break)
-                            rewriter()
-                          listener: handleBreakStatement(false, break, ;)
-                    notEofOrValue(}, ()
-                    parseStatement(;)
-                      parseStatementX(;)
-                        parseExpressionStatementOrDeclaration(;, false)
-                          parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
-                            looksLikeLocalFunction(()
-                            parseExpressionStatement(;)
-                              parseExpression(;)
-                                parsePrecedenceExpression(;, 1, true)
-                                  parseUnaryExpression(;, true)
-                                    parsePrimary(;, expression)
-                                      parseParenthesizedExpressionOrFunctionLiteral(;)
-                                        parseParenthesizedExpression(;)
-                                          parseExpressionInParenthesis(;)
-                                            parseExpressionInParenthesisRest(()
-                                              parseExpression(()
-                                                parsePrecedenceExpression((, 1, true)
-                                                  parseUnaryExpression((, true)
-                                                    parsePrimary((, expression)
-                                                      parseSendOrFunctionLiteral((, expression)
-                                                        parseSend((, expression)
-                                                          ensureIdentifier((, expression)
-                                                            listener: handleIdentifier(x, expression)
-                                                          listener: handleNoTypeArguments(-)
-                                                          parseArgumentsOpt(x)
-                                                            listener: handleNoArguments(-)
-                                                          listener: handleSend(x, -)
-                                                  listener: beginBinaryExpression(-)
-                                                  parsePrecedenceExpression(-, 14, true)
-                                                    parseUnaryExpression(-, true)
-                                                      parsePrimary(-, expression)
-                                                        parseLiteralInt(-)
-                                                          listener: handleLiteralInt(1)
-                                                  listener: endBinaryExpression(-)
-                                              ensureCloseParen(1, ()
-                                          listener: handleParenthesizedExpression(()
-                                  listener: beginBinaryExpression(+)
-                                  parsePrecedenceExpression(+, 14, true)
-                                    parseUnaryExpression(+, true)
-                                      parsePrimary(+, expression)
-                                        parseLiteralInt(+)
-                                          listener: handleLiteralInt(1)
-                                  listener: endBinaryExpression(+)
-                              ensureSemicolon(1)
-                              listener: handleExpressionStatement(;)
-                    notEofOrValue(}, })
-                    listener: endBlockFunctionBody(4, {, })
-                  listener: endClassMethod(null, , (, null, })
-                listener: endMember()
+                inPlainSync()
+                parseFunctionBody(), false, true)
+                  listener: beginBlockFunctionBody({)
+                  notEofOrValue(}, if)
+                  parseStatement({)
+                    parseStatementX({)
+                      parseIfStatement({)
+                        listener: beginIfStatement(if)
+                        ensureParenthesizedCondition(if)
+                          parseExpressionInParenthesisRest(()
+                            parseExpression(()
+                              parsePrecedenceExpression((, 1, true)
+                                parseUnaryExpression((, true)
+                                  parsePrimary((, expression)
+                                    parseSendOrFunctionLiteral((, expression)
+                                      parseSend((, expression)
+                                        ensureIdentifier((, expression)
+                                          listener: handleIdentifier(x, expression)
+                                        listener: handleNoTypeArguments(==)
+                                        parseArgumentsOpt(x)
+                                          listener: handleNoArguments(==)
+                                        listener: handleSend(x, ==)
+                                listener: beginBinaryExpression(==)
+                                parsePrecedenceExpression(==, 8, true)
+                                  parseUnaryExpression(==, true)
+                                    parsePrimary(==, expression)
+                                      parseLiteralInt(==)
+                                        listener: handleLiteralInt(0)
+                                listener: endBinaryExpression(==)
+                            ensureCloseParen(0, ()
+                          listener: handleParenthesizedCondition(()
+                        listener: beginThenStatement(return)
+                        parseStatement())
+                          parseStatementX())
+                            parseReturnStatement())
+                              listener: beginReturnStatement(return)
+                              parseExpression(return)
+                                parsePrecedenceExpression(return, 1, true)
+                                  parseUnaryExpression(return, true)
+                                    parsePrimary(return, expression)
+                                      parseLiteralInt(return)
+                                        listener: handleLiteralInt(42)
+                              ensureSemicolon(42)
+                              listener: endReturnStatement(true, return, ;)
+                              inGenerator()
+                        listener: endThenStatement(;)
+                        listener: endIfStatement(if, null)
+                  notEofOrValue(}, return)
+                  parseStatement(;)
+                    parseStatementX(;)
+                      parseReturnStatement(;)
+                        listener: beginReturnStatement(return)
+                        parseExpression(return)
+                          parsePrecedenceExpression(return, 1, true)
+                            parseUnaryExpression(return, true)
+                              parsePrimary(return, expression)
+                                inPlainSync()
+                                parseSend(return, expression)
+                                  ensureIdentifier(return, expression)
+                                    reportRecoverableErrorWithToken(break, Instance of 'Template<(Token) => Message>')
+                                      listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'break'., null, {token: break}], break, break)
+                                    rewriter()
+                                    listener: handleIdentifier(, expression)
+                                  listener: handleNoTypeArguments(break)
+                                  parseArgumentsOpt()
+                                    listener: handleNoArguments(break)
+                                  listener: handleSend(, break)
+                        ensureSemicolon()
+                          reportRecoverableError(, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+                            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], break, break)
+                          rewriter()
+                        listener: endReturnStatement(true, return, ;)
+                        inGenerator()
+                  notEofOrValue(}, break)
+                  parseStatement(;)
+                    parseStatementX(;)
+                      parseBreakStatement(;)
+                        isBreakAllowed()
+                        reportRecoverableError(break, BreakOutsideOfLoop)
+                          listener: handleRecoverableError(BreakOutsideOfLoop, break, break)
+                        ensureSemicolon(break)
+                          reportRecoverableError(break, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+                            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], break, break)
+                          rewriter()
+                        listener: handleBreakStatement(false, break, ;)
+                  notEofOrValue(}, ()
+                  parseStatement(;)
+                    parseStatementX(;)
+                      parseExpressionStatementOrDeclaration(;, false)
+                        parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+                          looksLikeLocalFunction(()
+                          parseExpressionStatement(;)
+                            parseExpression(;)
+                              parsePrecedenceExpression(;, 1, true)
+                                parseUnaryExpression(;, true)
+                                  parsePrimary(;, expression)
+                                    parseParenthesizedExpressionOrFunctionLiteral(;)
+                                      parseParenthesizedExpression(;)
+                                        parseExpressionInParenthesis(;)
+                                          parseExpressionInParenthesisRest(()
+                                            parseExpression(()
+                                              parsePrecedenceExpression((, 1, true)
+                                                parseUnaryExpression((, true)
+                                                  parsePrimary((, expression)
+                                                    parseSendOrFunctionLiteral((, expression)
+                                                      parseSend((, expression)
+                                                        ensureIdentifier((, expression)
+                                                          listener: handleIdentifier(x, expression)
+                                                        listener: handleNoTypeArguments(-)
+                                                        parseArgumentsOpt(x)
+                                                          listener: handleNoArguments(-)
+                                                        listener: handleSend(x, -)
+                                                listener: beginBinaryExpression(-)
+                                                parsePrecedenceExpression(-, 14, true)
+                                                  parseUnaryExpression(-, true)
+                                                    parsePrimary(-, expression)
+                                                      parseLiteralInt(-)
+                                                        listener: handleLiteralInt(1)
+                                                listener: endBinaryExpression(-)
+                                            ensureCloseParen(1, ()
+                                        listener: handleParenthesizedExpression(()
+                                listener: beginBinaryExpression(+)
+                                parsePrecedenceExpression(+, 14, true)
+                                  parseUnaryExpression(+, true)
+                                    parsePrimary(+, expression)
+                                      parseLiteralInt(+)
+                                        listener: handleLiteralInt(1)
+                                listener: endBinaryExpression(+)
+                            ensureSemicolon(1)
+                            listener: handleExpressionStatement(;)
+                  notEofOrValue(}, })
+                  listener: endBlockFunctionBody(4, {, })
+                listener: endClassMethod(null, int, (, null, })
+              listener: endMember()
             notEofOrValue(}, int)
             parseClassOrMixinOrExtensionMemberImpl(}, DeclarationKind.Class, WrapperClass)
               parseMetadataStar(})
                 listener: beginMetadataStar(int)
                 listener: endMetadataStar(0)
               listener: beginMember()
-              parseFields(}, null, null, null, null, null, }, Instance of 'NoType', int, DeclarationKind.Class, WrapperClass)
-                reportRecoverableError(int, MissingConstFinalVarOrType)
-                  listener: handleRecoverableError(MissingConstFinalVarOrType, int, int)
-                listener: handleNoType(})
-                ensureIdentifier(}, fieldDeclaration)
-                  listener: handleIdentifier(int, fieldDeclaration)
-                parseFieldInitializerOpt(int, int, null, null, DeclarationKind.Class, WrapperClass)
-                  listener: handleNoFieldInitializer(case)
-                ensureSemicolon(int)
-                  reportRecoverableError(int, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
-                    listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
-                  rewriter()
-                listener: endClassFields(null, null, null, null, 1, int, ;)
-              listener: endMember()
-            notEofOrValue(}, case)
-            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
-              parseMetadataStar(;)
-                listener: beginMetadataStar(case)
-                listener: endMetadataStar(0)
-              listener: beginMember()
-              recoverFromInvalidMember(;, ;, null, null, null, null, null, ;, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
-                reportRecoverableErrorWithToken(case, Instance of 'Template<(Token) => Message>')
-                  listener: handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got 'case'., null, {token: case}], case, case)
-                listener: handleInvalidMember(case)
-                listener: endMember()
-            notEofOrValue(}, ()
-            parseClassOrMixinOrExtensionMemberImpl(case, DeclarationKind.Class, WrapperClass)
-              parseMetadataStar(case)
-                listener: beginMetadataStar(()
-                listener: endMetadataStar(0)
-              listener: beginMember()
-              recoverFromInvalidMember(case, case, null, null, null, null, null, case, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
-                parseMethod(case, null, null, null, null, null, case, Instance of 'NoType', null, (, DeclarationKind.Class, WrapperClass)
-                  listener: beginMethod(null, null, null, null, null, ()
-                  listener: handleNoType(case)
-                  ensureIdentifier(case, methodDeclaration)
-                    insertSyntheticIdentifier(case, methodDeclaration, message: null, messageOnToken: null)
-                      reportRecoverableError((, Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}])
-                        listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}], (, ()
-                      rewriter()
-                    listener: handleIdentifier(, methodDeclaration)
-                  parseQualifiedRestOpt(, methodDeclarationContinuation)
-                  parseMethodTypeVar()
-                    listener: handleNoTypeVariables(()
-                  parseGetterOrFormalParameters(, (, false, MemberKind.NonStaticMethod)
-                    parseFormalParameters(, MemberKind.NonStaticMethod)
-                      parseFormalParametersRest((, MemberKind.NonStaticMethod)
-                        listener: beginFormalParameters((, MemberKind.NonStaticMethod)
-                        parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
-                          parseMetadataStar(()
-                            listener: beginMetadataStar(int)
-                            listener: endMetadataStar(0)
-                          listener: beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
-                          listener: handleIdentifier(int, typeReference)
-                          listener: handleNoTypeArguments(x)
-                          listener: handleType(int, null)
-                          ensureIdentifier(int, formalParameterDeclaration)
-                            listener: handleIdentifier(x, formalParameterDeclaration)
-                          listener: handleFormalParameterWithoutValue())
-                          listener: endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
-                        listener: endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
-                  parseInitializersOpt())
-                    listener: handleNoInitializers()
-                  parseAsyncModifierOpt())
-                    listener: handleAsyncModifier(null, null)
-                    inPlainSync()
+              isReservedKeyword(case)
+              indicatesMethodOrField(()
+              parseMethod(}, null, null, null, null, null, }, Instance of 'SimpleType', null, case, DeclarationKind.Class, WrapperClass, true)
+                listener: beginMethod(null, null, null, null, null, case)
+                listener: handleIdentifier(int, typeReference)
+                listener: handleNoTypeArguments(case)
+                listener: handleType(int, null)
+                ensureIdentifierPotentiallyRecovered(int, methodDeclaration, true)
+                  reportRecoverableErrorWithToken(case, Instance of 'Template<(Token) => Message>')
+                    listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'case'., null, {token: case}], case, case)
+                  listener: handleIdentifier(case, methodDeclaration)
+                parseQualifiedRestOpt(case, methodDeclarationContinuation)
+                parseMethodTypeVar(case)
+                  listener: handleNoTypeVariables(()
+                parseGetterOrFormalParameters(case, case, false, MemberKind.NonStaticMethod)
+                  parseFormalParameters(case, MemberKind.NonStaticMethod)
+                    parseFormalParametersRest((, MemberKind.NonStaticMethod)
+                      listener: beginFormalParameters((, MemberKind.NonStaticMethod)
+                      parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+                        parseMetadataStar(()
+                          listener: beginMetadataStar(int)
+                          listener: endMetadataStar(0)
+                        listener: beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+                        listener: handleIdentifier(int, typeReference)
+                        listener: handleNoTypeArguments(x)
+                        listener: handleType(int, null)
+                        ensureIdentifier(int, formalParameterDeclaration)
+                          listener: handleIdentifier(x, formalParameterDeclaration)
+                        listener: handleFormalParameterWithoutValue())
+                        listener: endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+                      listener: endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
+                parseInitializersOpt())
+                  listener: handleNoInitializers()
+                parseAsyncModifierOpt())
+                  listener: handleAsyncModifier(null, null)
                   inPlainSync()
-                  parseFunctionBody(), false, true)
-                    listener: beginBlockFunctionBody({)
-                    notEofOrValue(}, if)
-                    parseStatement({)
-                      parseStatementX({)
-                        parseIfStatement({)
-                          listener: beginIfStatement(if)
-                          ensureParenthesizedCondition(if)
-                            parseExpressionInParenthesisRest(()
-                              parseExpression(()
-                                parsePrecedenceExpression((, 1, true)
-                                  parseUnaryExpression((, true)
-                                    parsePrimary((, expression)
-                                      parseSendOrFunctionLiteral((, expression)
-                                        parseSend((, expression)
-                                          ensureIdentifier((, expression)
-                                            listener: handleIdentifier(x, expression)
-                                          listener: handleNoTypeArguments(==)
-                                          parseArgumentsOpt(x)
-                                            listener: handleNoArguments(==)
-                                          listener: handleSend(x, ==)
-                                  listener: beginBinaryExpression(==)
-                                  parsePrecedenceExpression(==, 8, true)
-                                    parseUnaryExpression(==, true)
-                                      parsePrimary(==, expression)
-                                        parseLiteralInt(==)
-                                          listener: handleLiteralInt(0)
-                                  listener: endBinaryExpression(==)
-                              ensureCloseParen(0, ()
-                            listener: handleParenthesizedCondition(()
-                          listener: beginThenStatement(return)
-                          parseStatement())
-                            parseStatementX())
-                              parseReturnStatement())
-                                listener: beginReturnStatement(return)
-                                parseExpression(return)
-                                  parsePrecedenceExpression(return, 1, true)
-                                    parseUnaryExpression(return, true)
-                                      parsePrimary(return, expression)
-                                        parseLiteralInt(return)
-                                          listener: handleLiteralInt(42)
-                                ensureSemicolon(42)
-                                listener: endReturnStatement(true, return, ;)
-                                inGenerator()
-                          listener: endThenStatement(;)
-                          listener: endIfStatement(if, null)
-                    notEofOrValue(}, return)
-                    parseStatement(;)
-                      parseStatementX(;)
-                        parseReturnStatement(;)
-                          listener: beginReturnStatement(return)
-                          parseExpression(return)
-                            parsePrecedenceExpression(return, 1, true)
-                              parseUnaryExpression(return, true)
-                                parsePrimary(return, expression)
-                                  inPlainSync()
-                                  parseSend(return, expression)
-                                    ensureIdentifier(return, expression)
-                                      reportRecoverableErrorWithToken(case, Instance of 'Template<(Token) => Message>')
-                                        listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'case'., null, {token: case}], case, case)
-                                      listener: handleIdentifier(case, expression)
-                                    listener: handleNoTypeArguments(()
-                                    parseArgumentsOpt(case)
-                                      parseArguments(case)
-                                        parseArgumentsRest(()
-                                          listener: beginArguments(()
-                                          parseExpression(()
-                                            parsePrecedenceExpression((, 1, true)
-                                              parseUnaryExpression((, true)
-                                                parsePrimary((, expression)
-                                                  parseSendOrFunctionLiteral((, expression)
-                                                    parseSend((, expression)
-                                                      ensureIdentifier((, expression)
-                                                        listener: handleIdentifier(x, expression)
-                                                      listener: handleNoTypeArguments(-)
-                                                      parseArgumentsOpt(x)
-                                                        listener: handleNoArguments(-)
-                                                      listener: handleSend(x, -)
-                                              listener: beginBinaryExpression(-)
-                                              parsePrecedenceExpression(-, 14, true)
-                                                parseUnaryExpression(-, true)
-                                                  parsePrimary(-, expression)
-                                                    parseLiteralInt(-)
-                                                      listener: handleLiteralInt(1)
-                                              listener: endBinaryExpression(-)
-                                          listener: endArguments(1, (, ))
-                                    listener: handleSend(case, +)
-                              listener: beginBinaryExpression(+)
-                              parsePrecedenceExpression(+, 14, true)
-                                parseUnaryExpression(+, true)
-                                  parsePrimary(+, expression)
-                                    parseLiteralInt(+)
-                                      listener: handleLiteralInt(1)
-                              listener: endBinaryExpression(+)
-                          ensureSemicolon(1)
-                          listener: endReturnStatement(true, return, ;)
-                          inGenerator()
-                    notEofOrValue(}, })
-                    listener: endBlockFunctionBody(2, {, })
-                  listener: endClassMethod(null, , (, null, })
-                listener: endMember()
-            notEofOrValue(}, int)
-            parseClassOrMixinOrExtensionMemberImpl(}, DeclarationKind.Class, WrapperClass)
-              parseMetadataStar(})
-                listener: beginMetadataStar(int)
-                listener: endMetadataStar(0)
-              listener: beginMember()
-              parseFields(}, null, null, null, null, null, }, Instance of 'NoType', int, DeclarationKind.Class, WrapperClass)
-                reportRecoverableError(int, MissingConstFinalVarOrType)
-                  listener: handleRecoverableError(MissingConstFinalVarOrType, int, int)
-                listener: handleNoType(})
-                ensureIdentifier(}, fieldDeclaration)
-                  listener: handleIdentifier(int, fieldDeclaration)
-                parseFieldInitializerOpt(int, int, null, null, DeclarationKind.Class, WrapperClass)
-                  listener: handleNoFieldInitializer(catch)
-                ensureSemicolon(int)
-                  reportRecoverableError(int, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
-                    listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
-                  rewriter()
-                listener: endClassFields(null, null, null, null, 1, int, ;)
-              listener: endMember()
-            notEofOrValue(}, catch)
-            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
-              parseMetadataStar(;)
-                listener: beginMetadataStar(catch)
-                listener: endMetadataStar(0)
-              listener: beginMember()
-              recoverFromInvalidMember(;, ;, null, null, null, null, null, ;, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
-                reportRecoverableErrorWithToken(catch, Instance of 'Template<(Token) => Message>')
-                  listener: handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got 'catch'., null, {token: catch}], catch, catch)
-                listener: handleInvalidMember(catch)
-                listener: endMember()
-            notEofOrValue(}, ()
-            parseClassOrMixinOrExtensionMemberImpl(catch, DeclarationKind.Class, WrapperClass)
-              parseMetadataStar(catch)
-                listener: beginMetadataStar(()
-                listener: endMetadataStar(0)
-              listener: beginMember()
-              recoverFromInvalidMember(catch, catch, null, null, null, null, null, catch, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
-                parseMethod(catch, null, null, null, null, null, catch, Instance of 'NoType', null, (, DeclarationKind.Class, WrapperClass)
-                  listener: beginMethod(null, null, null, null, null, ()
-                  listener: handleNoType(catch)
-                  ensureIdentifier(catch, methodDeclaration)
-                    insertSyntheticIdentifier(catch, methodDeclaration, message: null, messageOnToken: null)
-                      reportRecoverableError((, Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}])
-                        listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}], (, ()
-                      rewriter()
-                    listener: handleIdentifier(, methodDeclaration)
-                  parseQualifiedRestOpt(, methodDeclarationContinuation)
-                  parseMethodTypeVar()
-                    listener: handleNoTypeVariables(()
-                  parseGetterOrFormalParameters(, (, false, MemberKind.NonStaticMethod)
-                    parseFormalParameters(, MemberKind.NonStaticMethod)
-                      parseFormalParametersRest((, MemberKind.NonStaticMethod)
-                        listener: beginFormalParameters((, MemberKind.NonStaticMethod)
-                        parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
-                          parseMetadataStar(()
-                            listener: beginMetadataStar(int)
-                            listener: endMetadataStar(0)
-                          listener: beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
-                          listener: handleIdentifier(int, typeReference)
-                          listener: handleNoTypeArguments(x)
-                          listener: handleType(int, null)
-                          ensureIdentifier(int, formalParameterDeclaration)
-                            listener: handleIdentifier(x, formalParameterDeclaration)
-                          listener: handleFormalParameterWithoutValue())
-                          listener: endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
-                        listener: endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
-                  parseInitializersOpt())
-                    listener: handleNoInitializers()
-                  parseAsyncModifierOpt())
-                    listener: handleAsyncModifier(null, null)
-                    inPlainSync()
-                  inPlainSync()
-                  parseFunctionBody(), false, true)
-                    listener: beginBlockFunctionBody({)
-                    notEofOrValue(}, if)
-                    parseStatement({)
-                      parseStatementX({)
-                        parseIfStatement({)
-                          listener: beginIfStatement(if)
-                          ensureParenthesizedCondition(if)
-                            parseExpressionInParenthesisRest(()
-                              parseExpression(()
-                                parsePrecedenceExpression((, 1, true)
-                                  parseUnaryExpression((, true)
-                                    parsePrimary((, expression)
-                                      parseSendOrFunctionLiteral((, expression)
-                                        parseSend((, expression)
-                                          ensureIdentifier((, expression)
-                                            listener: handleIdentifier(x, expression)
-                                          listener: handleNoTypeArguments(==)
-                                          parseArgumentsOpt(x)
-                                            listener: handleNoArguments(==)
-                                          listener: handleSend(x, ==)
-                                  listener: beginBinaryExpression(==)
-                                  parsePrecedenceExpression(==, 8, true)
-                                    parseUnaryExpression(==, true)
-                                      parsePrimary(==, expression)
-                                        parseLiteralInt(==)
-                                          listener: handleLiteralInt(0)
-                                  listener: endBinaryExpression(==)
-                              ensureCloseParen(0, ()
-                            listener: handleParenthesizedCondition(()
-                          listener: beginThenStatement(return)
-                          parseStatement())
-                            parseStatementX())
-                              parseReturnStatement())
-                                listener: beginReturnStatement(return)
-                                parseExpression(return)
-                                  parsePrecedenceExpression(return, 1, true)
-                                    parseUnaryExpression(return, true)
-                                      parsePrimary(return, expression)
-                                        parseLiteralInt(return)
-                                          listener: handleLiteralInt(42)
-                                ensureSemicolon(42)
-                                listener: endReturnStatement(true, return, ;)
-                                inGenerator()
-                          listener: endThenStatement(;)
-                          listener: endIfStatement(if, null)
-                    notEofOrValue(}, return)
-                    parseStatement(;)
-                      parseStatementX(;)
-                        parseReturnStatement(;)
-                          listener: beginReturnStatement(return)
-                          parseExpression(return)
-                            parsePrecedenceExpression(return, 1, true)
-                              parseUnaryExpression(return, true)
-                                parsePrimary(return, expression)
-                                  inPlainSync()
-                                  parseSend(return, expression)
-                                    ensureIdentifier(return, expression)
-                                      reportRecoverableErrorWithToken(catch, Instance of 'Template<(Token) => Message>')
-                                        listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'catch'., null, {token: catch}], catch, catch)
-                                      listener: handleIdentifier(catch, expression)
-                                    listener: handleNoTypeArguments(()
-                                    parseArgumentsOpt(catch)
-                                      parseArguments(catch)
-                                        parseArgumentsRest(()
-                                          listener: beginArguments(()
-                                          parseExpression(()
-                                            parsePrecedenceExpression((, 1, true)
-                                              parseUnaryExpression((, true)
-                                                parsePrimary((, expression)
-                                                  parseSendOrFunctionLiteral((, expression)
-                                                    parseSend((, expression)
-                                                      ensureIdentifier((, expression)
-                                                        listener: handleIdentifier(x, expression)
-                                                      listener: handleNoTypeArguments(-)
-                                                      parseArgumentsOpt(x)
-                                                        listener: handleNoArguments(-)
-                                                      listener: handleSend(x, -)
-                                              listener: beginBinaryExpression(-)
-                                              parsePrecedenceExpression(-, 14, true)
-                                                parseUnaryExpression(-, true)
-                                                  parsePrimary(-, expression)
-                                                    parseLiteralInt(-)
-                                                      listener: handleLiteralInt(1)
-                                              listener: endBinaryExpression(-)
-                                          listener: endArguments(1, (, ))
-                                    listener: handleSend(catch, +)
-                              listener: beginBinaryExpression(+)
-                              parsePrecedenceExpression(+, 14, true)
-                                parseUnaryExpression(+, true)
-                                  parsePrimary(+, expression)
-                                    parseLiteralInt(+)
-                                      listener: handleLiteralInt(1)
-                              listener: endBinaryExpression(+)
-                          ensureSemicolon(1)
-                          listener: endReturnStatement(true, return, ;)
-                          inGenerator()
-                    notEofOrValue(}, })
-                    listener: endBlockFunctionBody(2, {, })
-                  listener: endClassMethod(null, , (, null, })
-                listener: endMember()
-            notEofOrValue(}, int)
-            parseClassOrMixinOrExtensionMemberImpl(}, DeclarationKind.Class, WrapperClass)
-              parseMetadataStar(})
-                listener: beginMetadataStar(int)
-                listener: endMetadataStar(0)
-              listener: beginMember()
-              parseFields(}, null, null, null, null, null, }, Instance of 'NoType', int, DeclarationKind.Class, WrapperClass)
-                reportRecoverableError(int, MissingConstFinalVarOrType)
-                  listener: handleRecoverableError(MissingConstFinalVarOrType, int, int)
-                listener: handleNoType(})
-                ensureIdentifier(}, fieldDeclaration)
-                  listener: handleIdentifier(int, fieldDeclaration)
-                parseFieldInitializerOpt(int, int, null, null, DeclarationKind.Class, WrapperClass)
-                  listener: handleNoFieldInitializer(class)
-                ensureSemicolon(int)
-                  reportRecoverableError(int, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
-                    listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
-                  rewriter()
-                listener: endClassFields(null, null, null, null, 1, int, ;)
-              listener: endMember()
-            notEofOrValue(}, class)
-            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
-              parseMetadataStar(;)
-                listener: beginMetadataStar(class)
-                listener: endMetadataStar(0)
-              listener: beginMember()
-              recoverFromInvalidMember(;, ;, null, null, null, null, null, ;, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
-                reportAndSkipClassInClass(class)
-                  reportRecoverableError(class, ClassInClass)
-                    listener: handleRecoverableError(ClassInClass, class, class)
-                  listener: handleInvalidMember(class)
-            notEofOrValue(}, ()
-            parseClassOrMixinOrExtensionMemberImpl(class, DeclarationKind.Class, WrapperClass)
-              parseMetadataStar(class)
-                listener: beginMetadataStar(()
-                listener: endMetadataStar(0)
-              listener: beginMember()
-              recoverFromInvalidMember(class, class, null, null, null, null, null, class, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
-                parseMethod(class, null, null, null, null, null, class, Instance of 'NoType', null, (, DeclarationKind.Class, WrapperClass)
-                  listener: beginMethod(null, null, null, null, null, ()
-                  listener: handleNoType(class)
-                  ensureIdentifier(class, methodDeclaration)
-                    insertSyntheticIdentifier(class, methodDeclaration, message: null, messageOnToken: null)
-                      reportRecoverableError((, Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}])
-                        listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}], (, ()
-                      rewriter()
-                    listener: handleIdentifier(, methodDeclaration)
-                  parseQualifiedRestOpt(, methodDeclarationContinuation)
-                  parseMethodTypeVar()
-                    listener: handleNoTypeVariables(()
-                  parseGetterOrFormalParameters(, (, false, MemberKind.NonStaticMethod)
-                    parseFormalParameters(, MemberKind.NonStaticMethod)
-                      parseFormalParametersRest((, MemberKind.NonStaticMethod)
-                        listener: beginFormalParameters((, MemberKind.NonStaticMethod)
-                        parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
-                          parseMetadataStar(()
-                            listener: beginMetadataStar(int)
-                            listener: endMetadataStar(0)
-                          listener: beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
-                          listener: handleIdentifier(int, typeReference)
-                          listener: handleNoTypeArguments(x)
-                          listener: handleType(int, null)
-                          ensureIdentifier(int, formalParameterDeclaration)
-                            listener: handleIdentifier(x, formalParameterDeclaration)
-                          listener: handleFormalParameterWithoutValue())
-                          listener: endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
-                        listener: endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
-                  parseInitializersOpt())
-                    listener: handleNoInitializers()
-                  parseAsyncModifierOpt())
-                    listener: handleAsyncModifier(null, null)
-                    inPlainSync()
-                  inPlainSync()
-                  parseFunctionBody(), false, true)
-                    listener: beginBlockFunctionBody({)
-                    notEofOrValue(}, if)
-                    parseStatement({)
-                      parseStatementX({)
-                        parseIfStatement({)
-                          listener: beginIfStatement(if)
-                          ensureParenthesizedCondition(if)
-                            parseExpressionInParenthesisRest(()
-                              parseExpression(()
-                                parsePrecedenceExpression((, 1, true)
-                                  parseUnaryExpression((, true)
-                                    parsePrimary((, expression)
-                                      parseSendOrFunctionLiteral((, expression)
-                                        parseSend((, expression)
-                                          ensureIdentifier((, expression)
-                                            listener: handleIdentifier(x, expression)
-                                          listener: handleNoTypeArguments(==)
-                                          parseArgumentsOpt(x)
-                                            listener: handleNoArguments(==)
-                                          listener: handleSend(x, ==)
-                                  listener: beginBinaryExpression(==)
-                                  parsePrecedenceExpression(==, 8, true)
-                                    parseUnaryExpression(==, true)
-                                      parsePrimary(==, expression)
-                                        parseLiteralInt(==)
-                                          listener: handleLiteralInt(0)
-                                  listener: endBinaryExpression(==)
-                              ensureCloseParen(0, ()
-                            listener: handleParenthesizedCondition(()
-                          listener: beginThenStatement(return)
-                          parseStatement())
-                            parseStatementX())
-                              parseReturnStatement())
-                                listener: beginReturnStatement(return)
-                                parseExpression(return)
-                                  parsePrecedenceExpression(return, 1, true)
-                                    parseUnaryExpression(return, true)
-                                      parsePrimary(return, expression)
-                                        parseLiteralInt(return)
-                                          listener: handleLiteralInt(42)
-                                ensureSemicolon(42)
-                                listener: endReturnStatement(true, return, ;)
-                                inGenerator()
-                          listener: endThenStatement(;)
-                          listener: endIfStatement(if, null)
-                    notEofOrValue(}, return)
-                    parseStatement(;)
-                      parseStatementX(;)
-                        parseReturnStatement(;)
-                          listener: beginReturnStatement(return)
-                          parseExpression(return)
-                            parsePrecedenceExpression(return, 1, true)
-                              parseUnaryExpression(return, true)
-                                parsePrimary(return, expression)
-                                  inPlainSync()
-                                  parseSend(return, expression)
-                                    ensureIdentifier(return, expression)
-                                      reportRecoverableErrorWithToken(class, Instance of 'Template<(Token) => Message>')
-                                        listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'class'., null, {token: class}], class, class)
-                                      listener: handleIdentifier(class, expression)
-                                    listener: handleNoTypeArguments(()
-                                    parseArgumentsOpt(class)
-                                      parseArguments(class)
-                                        parseArgumentsRest(()
-                                          listener: beginArguments(()
-                                          parseExpression(()
-                                            parsePrecedenceExpression((, 1, true)
-                                              parseUnaryExpression((, true)
-                                                parsePrimary((, expression)
-                                                  parseSendOrFunctionLiteral((, expression)
-                                                    parseSend((, expression)
-                                                      ensureIdentifier((, expression)
-                                                        listener: handleIdentifier(x, expression)
-                                                      listener: handleNoTypeArguments(-)
-                                                      parseArgumentsOpt(x)
-                                                        listener: handleNoArguments(-)
-                                                      listener: handleSend(x, -)
-                                              listener: beginBinaryExpression(-)
-                                              parsePrecedenceExpression(-, 14, true)
-                                                parseUnaryExpression(-, true)
-                                                  parsePrimary(-, expression)
-                                                    parseLiteralInt(-)
-                                                      listener: handleLiteralInt(1)
-                                              listener: endBinaryExpression(-)
-                                          listener: endArguments(1, (, ))
-                                    listener: handleSend(class, +)
-                              listener: beginBinaryExpression(+)
-                              parsePrecedenceExpression(+, 14, true)
-                                parseUnaryExpression(+, true)
-                                  parsePrimary(+, expression)
-                                    parseLiteralInt(+)
-                                      listener: handleLiteralInt(1)
-                              listener: endBinaryExpression(+)
-                          ensureSemicolon(1)
-                          listener: endReturnStatement(true, return, ;)
-                          inGenerator()
-                    notEofOrValue(}, })
-                    listener: endBlockFunctionBody(2, {, })
-                  listener: endClassMethod(null, , (, null, })
-                listener: endMember()
-            notEofOrValue(}, int)
-            parseClassOrMixinOrExtensionMemberImpl(}, DeclarationKind.Class, WrapperClass)
-              parseMetadataStar(})
-                listener: beginMetadataStar(int)
-                listener: endMetadataStar(0)
-              listener: beginMember()
-              parseFields(}, null, null, null, null, null, }, Instance of 'NoType', int, DeclarationKind.Class, WrapperClass)
-                reportRecoverableError(int, MissingConstFinalVarOrType)
-                  listener: handleRecoverableError(MissingConstFinalVarOrType, int, int)
-                listener: handleNoType(})
-                ensureIdentifier(}, fieldDeclaration)
-                  listener: handleIdentifier(int, fieldDeclaration)
-                parseFieldInitializerOpt(int, int, null, null, DeclarationKind.Class, WrapperClass)
-                  listener: handleNoFieldInitializer(const)
-                ensureSemicolon(int)
-                  reportRecoverableError(int, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
-                    listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
-                  rewriter()
-                listener: endClassFields(null, null, null, null, 1, int, ;)
-              listener: endMember()
-            notEofOrValue(}, const)
-            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
-              parseMetadataStar(;)
-                listener: beginMetadataStar(const)
-                listener: endMetadataStar(0)
-              listener: beginMember()
-              recoverFromInvalidMember(const, ;, null, null, null, null, const, const, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
-                parseMethod(;, null, null, null, null, const, const, Instance of 'NoType', null, (, DeclarationKind.Class, WrapperClass)
-                  listener: beginMethod(null, null, null, const, null, ()
-                  listener: handleNoType(const)
-                  ensureIdentifier(const, methodDeclaration)
-                    insertSyntheticIdentifier(const, methodDeclaration, message: null, messageOnToken: null)
-                      reportRecoverableError((, Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}])
-                        listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}], (, ()
-                      rewriter()
-                    listener: handleIdentifier(, methodDeclaration)
-                  parseQualifiedRestOpt(, methodDeclarationContinuation)
-                  parseMethodTypeVar()
-                    listener: handleNoTypeVariables(()
-                  parseGetterOrFormalParameters(, (, false, MemberKind.NonStaticMethod)
-                    parseFormalParameters(, MemberKind.NonStaticMethod)
-                      parseFormalParametersRest((, MemberKind.NonStaticMethod)
-                        listener: beginFormalParameters((, MemberKind.NonStaticMethod)
-                        parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
-                          parseMetadataStar(()
-                            listener: beginMetadataStar(int)
-                            listener: endMetadataStar(0)
-                          listener: beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
-                          listener: handleIdentifier(int, typeReference)
-                          listener: handleNoTypeArguments(x)
-                          listener: handleType(int, null)
-                          ensureIdentifier(int, formalParameterDeclaration)
-                            listener: handleIdentifier(x, formalParameterDeclaration)
-                          listener: handleFormalParameterWithoutValue())
-                          listener: endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
-                        listener: endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
-                  parseInitializersOpt())
-                    listener: handleNoInitializers()
-                  parseAsyncModifierOpt())
-                    listener: handleAsyncModifier(null, null)
-                    inPlainSync()
-                  inPlainSync()
-                  parseFunctionBody(), false, true)
-                    listener: beginBlockFunctionBody({)
-                    notEofOrValue(}, if)
-                    parseStatement({)
-                      parseStatementX({)
-                        parseIfStatement({)
-                          listener: beginIfStatement(if)
-                          ensureParenthesizedCondition(if)
-                            parseExpressionInParenthesisRest(()
-                              parseExpression(()
-                                parsePrecedenceExpression((, 1, true)
-                                  parseUnaryExpression((, true)
-                                    parsePrimary((, expression)
-                                      parseSendOrFunctionLiteral((, expression)
-                                        parseSend((, expression)
-                                          ensureIdentifier((, expression)
-                                            listener: handleIdentifier(x, expression)
-                                          listener: handleNoTypeArguments(==)
-                                          parseArgumentsOpt(x)
-                                            listener: handleNoArguments(==)
-                                          listener: handleSend(x, ==)
-                                  listener: beginBinaryExpression(==)
-                                  parsePrecedenceExpression(==, 8, true)
-                                    parseUnaryExpression(==, true)
-                                      parsePrimary(==, expression)
-                                        parseLiteralInt(==)
-                                          listener: handleLiteralInt(0)
-                                  listener: endBinaryExpression(==)
-                              ensureCloseParen(0, ()
-                            listener: handleParenthesizedCondition(()
-                          listener: beginThenStatement(return)
-                          parseStatement())
-                            parseStatementX())
-                              parseReturnStatement())
-                                listener: beginReturnStatement(return)
-                                parseExpression(return)
-                                  parsePrecedenceExpression(return, 1, true)
-                                    parseUnaryExpression(return, true)
-                                      parsePrimary(return, expression)
-                                        parseLiteralInt(return)
-                                          listener: handleLiteralInt(42)
-                                ensureSemicolon(42)
-                                listener: endReturnStatement(true, return, ;)
-                                inGenerator()
-                          listener: endThenStatement(;)
-                          listener: endIfStatement(if, null)
-                    notEofOrValue(}, return)
-                    parseStatement(;)
-                      parseStatementX(;)
-                        parseReturnStatement(;)
-                          listener: beginReturnStatement(return)
-                          parseExpression(return)
-                            parsePrecedenceExpression(return, 1, true)
-                              parseUnaryExpression(return, true)
-                                parsePrimary(return, expression)
-                                  parseConstExpression(return)
-                                    listener: beginConstExpression(const)
-                                    parseConstructorReference(const, null)
-                                      ensureIdentifier(const, constructorReference)
-                                        insertSyntheticIdentifier(const, constructorReference, message: Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}], messageOnToken: null)
-                                          reportRecoverableError((, Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}])
-                                            listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}], (, ()
-                                          rewriter()
-                                        listener: handleIdentifier(, constructorReference)
-                                      listener: beginConstructorReference()
-                                      parseQualifiedRestOpt(, constructorReferenceContinuation)
-                                      listener: handleNoTypeArguments(()
-                                      listener: handleNoConstructorReferenceContinuationAfterTypeArguments(()
-                                      listener: endConstructorReference(, null, ()
-                                    parseConstructorInvocationArguments()
+                inPlainSync()
+                parseFunctionBody(), false, true)
+                  listener: beginBlockFunctionBody({)
+                  notEofOrValue(}, if)
+                  parseStatement({)
+                    parseStatementX({)
+                      parseIfStatement({)
+                        listener: beginIfStatement(if)
+                        ensureParenthesizedCondition(if)
+                          parseExpressionInParenthesisRest(()
+                            parseExpression(()
+                              parsePrecedenceExpression((, 1, true)
+                                parseUnaryExpression((, true)
+                                  parsePrimary((, expression)
+                                    parseSendOrFunctionLiteral((, expression)
+                                      parseSend((, expression)
+                                        ensureIdentifier((, expression)
+                                          listener: handleIdentifier(x, expression)
+                                        listener: handleNoTypeArguments(==)
+                                        parseArgumentsOpt(x)
+                                          listener: handleNoArguments(==)
+                                        listener: handleSend(x, ==)
+                                listener: beginBinaryExpression(==)
+                                parsePrecedenceExpression(==, 8, true)
+                                  parseUnaryExpression(==, true)
+                                    parsePrimary(==, expression)
+                                      parseLiteralInt(==)
+                                        listener: handleLiteralInt(0)
+                                listener: endBinaryExpression(==)
+                            ensureCloseParen(0, ()
+                          listener: handleParenthesizedCondition(()
+                        listener: beginThenStatement(return)
+                        parseStatement())
+                          parseStatementX())
+                            parseReturnStatement())
+                              listener: beginReturnStatement(return)
+                              parseExpression(return)
+                                parsePrecedenceExpression(return, 1, true)
+                                  parseUnaryExpression(return, true)
+                                    parsePrimary(return, expression)
+                                      parseLiteralInt(return)
+                                        listener: handleLiteralInt(42)
+                              ensureSemicolon(42)
+                              listener: endReturnStatement(true, return, ;)
+                              inGenerator()
+                        listener: endThenStatement(;)
+                        listener: endIfStatement(if, null)
+                  notEofOrValue(}, return)
+                  parseStatement(;)
+                    parseStatementX(;)
+                      parseReturnStatement(;)
+                        listener: beginReturnStatement(return)
+                        parseExpression(return)
+                          parsePrecedenceExpression(return, 1, true)
+                            parseUnaryExpression(return, true)
+                              parsePrimary(return, expression)
+                                inPlainSync()
+                                parseSend(return, expression)
+                                  ensureIdentifier(return, expression)
+                                    reportRecoverableErrorWithToken(case, Instance of 'Template<(Token) => Message>')
+                                      listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'case'., null, {token: case}], case, case)
+                                    listener: handleIdentifier(case, expression)
+                                  listener: handleNoTypeArguments(()
+                                  parseArgumentsOpt(case)
+                                    parseArguments(case)
                                       parseArgumentsRest(()
                                         listener: beginArguments(()
                                         parseExpression(()
@@ -1075,1570 +468,2127 @@
                                                     listener: handleLiteralInt(1)
                                             listener: endBinaryExpression(-)
                                         listener: endArguments(1, (, ))
-                                    listener: endConstExpression(const)
-                              listener: beginBinaryExpression(+)
-                              parsePrecedenceExpression(+, 14, true)
-                                parseUnaryExpression(+, true)
-                                  parsePrimary(+, expression)
-                                    parseLiteralInt(+)
-                                      listener: handleLiteralInt(1)
-                              listener: endBinaryExpression(+)
-                          ensureSemicolon(1)
-                          listener: endReturnStatement(true, return, ;)
-                          inGenerator()
-                    notEofOrValue(}, })
-                    listener: endBlockFunctionBody(2, {, })
-                  reportRecoverableError(const, ConstMethod)
-                    listener: handleRecoverableError(ConstMethod, const, const)
-                  listener: endClassMethod(null, const, (, null, })
-                listener: endMember()
+                                  listener: handleSend(case, +)
+                            listener: beginBinaryExpression(+)
+                            parsePrecedenceExpression(+, 14, true)
+                              parseUnaryExpression(+, true)
+                                parsePrimary(+, expression)
+                                  parseLiteralInt(+)
+                                    listener: handleLiteralInt(1)
+                            listener: endBinaryExpression(+)
+                        ensureSemicolon(1)
+                        listener: endReturnStatement(true, return, ;)
+                        inGenerator()
+                  notEofOrValue(}, })
+                  listener: endBlockFunctionBody(2, {, })
+                listener: endClassMethod(null, int, (, null, })
+              listener: endMember()
             notEofOrValue(}, int)
             parseClassOrMixinOrExtensionMemberImpl(}, DeclarationKind.Class, WrapperClass)
               parseMetadataStar(})
                 listener: beginMetadataStar(int)
                 listener: endMetadataStar(0)
               listener: beginMember()
-              parseFields(}, null, null, null, null, null, }, Instance of 'NoType', int, DeclarationKind.Class, WrapperClass)
-                reportRecoverableError(int, MissingConstFinalVarOrType)
-                  listener: handleRecoverableError(MissingConstFinalVarOrType, int, int)
-                listener: handleNoType(})
-                ensureIdentifier(}, fieldDeclaration)
-                  listener: handleIdentifier(int, fieldDeclaration)
-                parseFieldInitializerOpt(int, int, null, null, DeclarationKind.Class, WrapperClass)
-                  listener: handleNoFieldInitializer(continue)
-                ensureSemicolon(int)
-                  reportRecoverableError(int, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
-                    listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
-                  rewriter()
-                listener: endClassFields(null, null, null, null, 1, int, ;)
-              listener: endMember()
-            notEofOrValue(}, continue)
-            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
-              parseMetadataStar(;)
-                listener: beginMetadataStar(continue)
-                listener: endMetadataStar(0)
-              listener: beginMember()
-              recoverFromInvalidMember(;, ;, null, null, null, null, null, ;, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
-                reportRecoverableErrorWithToken(continue, Instance of 'Template<(Token) => Message>')
-                  listener: handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got 'continue'., null, {token: continue}], continue, continue)
-                listener: handleInvalidMember(continue)
-                listener: endMember()
-            notEofOrValue(}, ()
-            parseClassOrMixinOrExtensionMemberImpl(continue, DeclarationKind.Class, WrapperClass)
-              parseMetadataStar(continue)
-                listener: beginMetadataStar(()
-                listener: endMetadataStar(0)
-              listener: beginMember()
-              recoverFromInvalidMember(continue, continue, null, null, null, null, null, continue, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
-                parseMethod(continue, null, null, null, null, null, continue, Instance of 'NoType', null, (, DeclarationKind.Class, WrapperClass)
-                  listener: beginMethod(null, null, null, null, null, ()
-                  listener: handleNoType(continue)
-                  ensureIdentifier(continue, methodDeclaration)
-                    insertSyntheticIdentifier(continue, methodDeclaration, message: null, messageOnToken: null)
-                      reportRecoverableError((, Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}])
-                        listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}], (, ()
-                      rewriter()
-                    listener: handleIdentifier(, methodDeclaration)
-                  parseQualifiedRestOpt(, methodDeclarationContinuation)
-                  parseMethodTypeVar()
-                    listener: handleNoTypeVariables(()
-                  parseGetterOrFormalParameters(, (, false, MemberKind.NonStaticMethod)
-                    parseFormalParameters(, MemberKind.NonStaticMethod)
-                      parseFormalParametersRest((, MemberKind.NonStaticMethod)
-                        listener: beginFormalParameters((, MemberKind.NonStaticMethod)
-                        parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
-                          parseMetadataStar(()
-                            listener: beginMetadataStar(int)
-                            listener: endMetadataStar(0)
-                          listener: beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
-                          listener: handleIdentifier(int, typeReference)
-                          listener: handleNoTypeArguments(x)
-                          listener: handleType(int, null)
-                          ensureIdentifier(int, formalParameterDeclaration)
-                            listener: handleIdentifier(x, formalParameterDeclaration)
-                          listener: handleFormalParameterWithoutValue())
-                          listener: endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
-                        listener: endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
-                  parseInitializersOpt())
-                    listener: handleNoInitializers()
-                  parseAsyncModifierOpt())
-                    listener: handleAsyncModifier(null, null)
-                    inPlainSync()
+              isReservedKeyword(catch)
+              indicatesMethodOrField(()
+              parseMethod(}, null, null, null, null, null, }, Instance of 'SimpleType', null, catch, DeclarationKind.Class, WrapperClass, true)
+                listener: beginMethod(null, null, null, null, null, catch)
+                listener: handleIdentifier(int, typeReference)
+                listener: handleNoTypeArguments(catch)
+                listener: handleType(int, null)
+                ensureIdentifierPotentiallyRecovered(int, methodDeclaration, true)
+                  reportRecoverableErrorWithToken(catch, Instance of 'Template<(Token) => Message>')
+                    listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'catch'., null, {token: catch}], catch, catch)
+                  listener: handleIdentifier(catch, methodDeclaration)
+                parseQualifiedRestOpt(catch, methodDeclarationContinuation)
+                parseMethodTypeVar(catch)
+                  listener: handleNoTypeVariables(()
+                parseGetterOrFormalParameters(catch, catch, false, MemberKind.NonStaticMethod)
+                  parseFormalParameters(catch, MemberKind.NonStaticMethod)
+                    parseFormalParametersRest((, MemberKind.NonStaticMethod)
+                      listener: beginFormalParameters((, MemberKind.NonStaticMethod)
+                      parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+                        parseMetadataStar(()
+                          listener: beginMetadataStar(int)
+                          listener: endMetadataStar(0)
+                        listener: beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+                        listener: handleIdentifier(int, typeReference)
+                        listener: handleNoTypeArguments(x)
+                        listener: handleType(int, null)
+                        ensureIdentifier(int, formalParameterDeclaration)
+                          listener: handleIdentifier(x, formalParameterDeclaration)
+                        listener: handleFormalParameterWithoutValue())
+                        listener: endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+                      listener: endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
+                parseInitializersOpt())
+                  listener: handleNoInitializers()
+                parseAsyncModifierOpt())
+                  listener: handleAsyncModifier(null, null)
                   inPlainSync()
-                  parseFunctionBody(), false, true)
-                    listener: beginBlockFunctionBody({)
-                    notEofOrValue(}, if)
-                    parseStatement({)
-                      parseStatementX({)
-                        parseIfStatement({)
-                          listener: beginIfStatement(if)
-                          ensureParenthesizedCondition(if)
-                            parseExpressionInParenthesisRest(()
-                              parseExpression(()
-                                parsePrecedenceExpression((, 1, true)
-                                  parseUnaryExpression((, true)
-                                    parsePrimary((, expression)
-                                      parseSendOrFunctionLiteral((, expression)
-                                        parseSend((, expression)
-                                          ensureIdentifier((, expression)
-                                            listener: handleIdentifier(x, expression)
-                                          listener: handleNoTypeArguments(==)
-                                          parseArgumentsOpt(x)
-                                            listener: handleNoArguments(==)
-                                          listener: handleSend(x, ==)
-                                  listener: beginBinaryExpression(==)
-                                  parsePrecedenceExpression(==, 8, true)
-                                    parseUnaryExpression(==, true)
-                                      parsePrimary(==, expression)
-                                        parseLiteralInt(==)
-                                          listener: handleLiteralInt(0)
-                                  listener: endBinaryExpression(==)
-                              ensureCloseParen(0, ()
-                            listener: handleParenthesizedCondition(()
-                          listener: beginThenStatement(return)
-                          parseStatement())
-                            parseStatementX())
-                              parseReturnStatement())
-                                listener: beginReturnStatement(return)
-                                parseExpression(return)
-                                  parsePrecedenceExpression(return, 1, true)
-                                    parseUnaryExpression(return, true)
-                                      parsePrimary(return, expression)
-                                        parseLiteralInt(return)
-                                          listener: handleLiteralInt(42)
-                                ensureSemicolon(42)
-                                listener: endReturnStatement(true, return, ;)
-                                inGenerator()
-                          listener: endThenStatement(;)
-                          listener: endIfStatement(if, null)
-                    notEofOrValue(}, return)
-                    parseStatement(;)
-                      parseStatementX(;)
-                        parseReturnStatement(;)
-                          listener: beginReturnStatement(return)
-                          parseExpression(return)
-                            parsePrecedenceExpression(return, 1, true)
-                              parseUnaryExpression(return, true)
-                                parsePrimary(return, expression)
-                                  inPlainSync()
-                                  parseSend(return, expression)
-                                    ensureIdentifier(return, expression)
-                                      reportRecoverableErrorWithToken(continue, Instance of 'Template<(Token) => Message>')
-                                        listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'continue'., null, {token: continue}], continue, continue)
-                                      rewriter()
-                                      listener: handleIdentifier(, expression)
-                                    listener: handleNoTypeArguments(continue)
-                                    parseArgumentsOpt()
-                                      listener: handleNoArguments(continue)
-                                    listener: handleSend(, continue)
-                          ensureSemicolon()
-                            reportRecoverableError(, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
-                              listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], continue, continue)
-                            rewriter()
-                          listener: endReturnStatement(true, return, ;)
-                          inGenerator()
-                    notEofOrValue(}, continue)
-                    parseStatement(;)
-                      parseStatementX(;)
-                        parseContinueStatement(;)
-                          isContinueAllowed()
-                          reportRecoverableError(continue, ContinueOutsideOfLoop)
-                            listener: handleRecoverableError(ContinueOutsideOfLoop, continue, continue)
-                          ensureSemicolon(continue)
-                            reportRecoverableError(continue, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
-                              listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], continue, continue)
-                            rewriter()
-                          listener: handleContinueStatement(false, continue, ;)
-                    notEofOrValue(}, ()
-                    parseStatement(;)
-                      parseStatementX(;)
-                        parseExpressionStatementOrDeclaration(;, false)
-                          parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
-                            looksLikeLocalFunction(()
-                            parseExpressionStatement(;)
-                              parseExpression(;)
-                                parsePrecedenceExpression(;, 1, true)
-                                  parseUnaryExpression(;, true)
-                                    parsePrimary(;, expression)
-                                      parseParenthesizedExpressionOrFunctionLiteral(;)
-                                        parseParenthesizedExpression(;)
-                                          parseExpressionInParenthesis(;)
-                                            parseExpressionInParenthesisRest(()
-                                              parseExpression(()
-                                                parsePrecedenceExpression((, 1, true)
-                                                  parseUnaryExpression((, true)
-                                                    parsePrimary((, expression)
-                                                      parseSendOrFunctionLiteral((, expression)
-                                                        parseSend((, expression)
-                                                          ensureIdentifier((, expression)
-                                                            listener: handleIdentifier(x, expression)
-                                                          listener: handleNoTypeArguments(-)
-                                                          parseArgumentsOpt(x)
-                                                            listener: handleNoArguments(-)
-                                                          listener: handleSend(x, -)
-                                                  listener: beginBinaryExpression(-)
-                                                  parsePrecedenceExpression(-, 14, true)
-                                                    parseUnaryExpression(-, true)
-                                                      parsePrimary(-, expression)
-                                                        parseLiteralInt(-)
-                                                          listener: handleLiteralInt(1)
-                                                  listener: endBinaryExpression(-)
-                                              ensureCloseParen(1, ()
-                                          listener: handleParenthesizedExpression(()
-                                  listener: beginBinaryExpression(+)
-                                  parsePrecedenceExpression(+, 14, true)
-                                    parseUnaryExpression(+, true)
-                                      parsePrimary(+, expression)
-                                        parseLiteralInt(+)
-                                          listener: handleLiteralInt(1)
-                                  listener: endBinaryExpression(+)
-                              ensureSemicolon(1)
-                              listener: handleExpressionStatement(;)
-                    notEofOrValue(}, })
-                    listener: endBlockFunctionBody(4, {, })
-                  listener: endClassMethod(null, , (, null, })
-                listener: endMember()
-            notEofOrValue(}, int)
-            parseClassOrMixinOrExtensionMemberImpl(}, DeclarationKind.Class, WrapperClass)
-              parseMetadataStar(})
-                listener: beginMetadataStar(int)
-                listener: endMetadataStar(0)
-              listener: beginMember()
-              parseFields(}, null, null, null, null, null, }, Instance of 'NoType', int, DeclarationKind.Class, WrapperClass)
-                reportRecoverableError(int, MissingConstFinalVarOrType)
-                  listener: handleRecoverableError(MissingConstFinalVarOrType, int, int)
-                listener: handleNoType(})
-                ensureIdentifier(}, fieldDeclaration)
-                  listener: handleIdentifier(int, fieldDeclaration)
-                parseFieldInitializerOpt(int, int, null, null, DeclarationKind.Class, WrapperClass)
-                  listener: handleNoFieldInitializer(default)
-                ensureSemicolon(int)
-                  reportRecoverableError(int, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
-                    listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
-                  rewriter()
-                listener: endClassFields(null, null, null, null, 1, int, ;)
-              listener: endMember()
-            notEofOrValue(}, default)
-            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
-              parseMetadataStar(;)
-                listener: beginMetadataStar(default)
-                listener: endMetadataStar(0)
-              listener: beginMember()
-              recoverFromInvalidMember(;, ;, null, null, null, null, null, ;, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
-                reportRecoverableErrorWithToken(default, Instance of 'Template<(Token) => Message>')
-                  listener: handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got 'default'., null, {token: default}], default, default)
-                listener: handleInvalidMember(default)
-                listener: endMember()
-            notEofOrValue(}, ()
-            parseClassOrMixinOrExtensionMemberImpl(default, DeclarationKind.Class, WrapperClass)
-              parseMetadataStar(default)
-                listener: beginMetadataStar(()
-                listener: endMetadataStar(0)
-              listener: beginMember()
-              recoverFromInvalidMember(default, default, null, null, null, null, null, default, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
-                parseMethod(default, null, null, null, null, null, default, Instance of 'NoType', null, (, DeclarationKind.Class, WrapperClass)
-                  listener: beginMethod(null, null, null, null, null, ()
-                  listener: handleNoType(default)
-                  ensureIdentifier(default, methodDeclaration)
-                    insertSyntheticIdentifier(default, methodDeclaration, message: null, messageOnToken: null)
-                      reportRecoverableError((, Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}])
-                        listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}], (, ()
-                      rewriter()
-                    listener: handleIdentifier(, methodDeclaration)
-                  parseQualifiedRestOpt(, methodDeclarationContinuation)
-                  parseMethodTypeVar()
-                    listener: handleNoTypeVariables(()
-                  parseGetterOrFormalParameters(, (, false, MemberKind.NonStaticMethod)
-                    parseFormalParameters(, MemberKind.NonStaticMethod)
-                      parseFormalParametersRest((, MemberKind.NonStaticMethod)
-                        listener: beginFormalParameters((, MemberKind.NonStaticMethod)
-                        parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
-                          parseMetadataStar(()
-                            listener: beginMetadataStar(int)
-                            listener: endMetadataStar(0)
-                          listener: beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
-                          listener: handleIdentifier(int, typeReference)
-                          listener: handleNoTypeArguments(x)
-                          listener: handleType(int, null)
-                          ensureIdentifier(int, formalParameterDeclaration)
-                            listener: handleIdentifier(x, formalParameterDeclaration)
-                          listener: handleFormalParameterWithoutValue())
-                          listener: endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
-                        listener: endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
-                  parseInitializersOpt())
-                    listener: handleNoInitializers()
-                  parseAsyncModifierOpt())
-                    listener: handleAsyncModifier(null, null)
-                    inPlainSync()
-                  inPlainSync()
-                  parseFunctionBody(), false, true)
-                    listener: beginBlockFunctionBody({)
-                    notEofOrValue(}, if)
-                    parseStatement({)
-                      parseStatementX({)
-                        parseIfStatement({)
-                          listener: beginIfStatement(if)
-                          ensureParenthesizedCondition(if)
-                            parseExpressionInParenthesisRest(()
-                              parseExpression(()
-                                parsePrecedenceExpression((, 1, true)
-                                  parseUnaryExpression((, true)
-                                    parsePrimary((, expression)
-                                      parseSendOrFunctionLiteral((, expression)
-                                        parseSend((, expression)
-                                          ensureIdentifier((, expression)
-                                            listener: handleIdentifier(x, expression)
-                                          listener: handleNoTypeArguments(==)
-                                          parseArgumentsOpt(x)
-                                            listener: handleNoArguments(==)
-                                          listener: handleSend(x, ==)
-                                  listener: beginBinaryExpression(==)
-                                  parsePrecedenceExpression(==, 8, true)
-                                    parseUnaryExpression(==, true)
-                                      parsePrimary(==, expression)
-                                        parseLiteralInt(==)
-                                          listener: handleLiteralInt(0)
-                                  listener: endBinaryExpression(==)
-                              ensureCloseParen(0, ()
-                            listener: handleParenthesizedCondition(()
-                          listener: beginThenStatement(return)
-                          parseStatement())
-                            parseStatementX())
-                              parseReturnStatement())
-                                listener: beginReturnStatement(return)
-                                parseExpression(return)
-                                  parsePrecedenceExpression(return, 1, true)
-                                    parseUnaryExpression(return, true)
-                                      parsePrimary(return, expression)
-                                        parseLiteralInt(return)
-                                          listener: handleLiteralInt(42)
-                                ensureSemicolon(42)
-                                listener: endReturnStatement(true, return, ;)
-                                inGenerator()
-                          listener: endThenStatement(;)
-                          listener: endIfStatement(if, null)
-                    notEofOrValue(}, return)
-                    parseStatement(;)
-                      parseStatementX(;)
-                        parseReturnStatement(;)
-                          listener: beginReturnStatement(return)
-                          parseExpression(return)
-                            parsePrecedenceExpression(return, 1, true)
-                              parseUnaryExpression(return, true)
-                                parsePrimary(return, expression)
-                                  inPlainSync()
-                                  parseSend(return, expression)
-                                    ensureIdentifier(return, expression)
-                                      reportRecoverableErrorWithToken(default, Instance of 'Template<(Token) => Message>')
-                                        listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'default'., null, {token: default}], default, default)
-                                      listener: handleIdentifier(default, expression)
-                                    listener: handleNoTypeArguments(()
-                                    parseArgumentsOpt(default)
-                                      parseArguments(default)
-                                        parseArgumentsRest(()
-                                          listener: beginArguments(()
-                                          parseExpression(()
-                                            parsePrecedenceExpression((, 1, true)
-                                              parseUnaryExpression((, true)
-                                                parsePrimary((, expression)
-                                                  parseSendOrFunctionLiteral((, expression)
-                                                    parseSend((, expression)
-                                                      ensureIdentifier((, expression)
-                                                        listener: handleIdentifier(x, expression)
-                                                      listener: handleNoTypeArguments(-)
-                                                      parseArgumentsOpt(x)
-                                                        listener: handleNoArguments(-)
-                                                      listener: handleSend(x, -)
-                                              listener: beginBinaryExpression(-)
-                                              parsePrecedenceExpression(-, 14, true)
-                                                parseUnaryExpression(-, true)
-                                                  parsePrimary(-, expression)
-                                                    parseLiteralInt(-)
-                                                      listener: handleLiteralInt(1)
-                                              listener: endBinaryExpression(-)
-                                          listener: endArguments(1, (, ))
-                                    listener: handleSend(default, +)
-                              listener: beginBinaryExpression(+)
-                              parsePrecedenceExpression(+, 14, true)
-                                parseUnaryExpression(+, true)
-                                  parsePrimary(+, expression)
-                                    parseLiteralInt(+)
-                                      listener: handleLiteralInt(1)
-                              listener: endBinaryExpression(+)
-                          ensureSemicolon(1)
-                          listener: endReturnStatement(true, return, ;)
-                          inGenerator()
-                    notEofOrValue(}, })
-                    listener: endBlockFunctionBody(2, {, })
-                  listener: endClassMethod(null, , (, null, })
-                listener: endMember()
-            notEofOrValue(}, int)
-            parseClassOrMixinOrExtensionMemberImpl(}, DeclarationKind.Class, WrapperClass)
-              parseMetadataStar(})
-                listener: beginMetadataStar(int)
-                listener: endMetadataStar(0)
-              listener: beginMember()
-              parseFields(}, null, null, null, null, null, }, Instance of 'NoType', int, DeclarationKind.Class, WrapperClass)
-                reportRecoverableError(int, MissingConstFinalVarOrType)
-                  listener: handleRecoverableError(MissingConstFinalVarOrType, int, int)
-                listener: handleNoType(})
-                ensureIdentifier(}, fieldDeclaration)
-                  listener: handleIdentifier(int, fieldDeclaration)
-                parseFieldInitializerOpt(int, int, null, null, DeclarationKind.Class, WrapperClass)
-                  listener: handleNoFieldInitializer(do)
-                ensureSemicolon(int)
-                  reportRecoverableError(int, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
-                    listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
-                  rewriter()
-                listener: endClassFields(null, null, null, null, 1, int, ;)
-              listener: endMember()
-            notEofOrValue(}, do)
-            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
-              parseMetadataStar(;)
-                listener: beginMetadataStar(do)
-                listener: endMetadataStar(0)
-              listener: beginMember()
-              recoverFromInvalidMember(;, ;, null, null, null, null, null, ;, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
-                reportRecoverableErrorWithToken(do, Instance of 'Template<(Token) => Message>')
-                  listener: handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got 'do'., null, {token: do}], do, do)
-                listener: handleInvalidMember(do)
-                listener: endMember()
-            notEofOrValue(}, ()
-            parseClassOrMixinOrExtensionMemberImpl(do, DeclarationKind.Class, WrapperClass)
-              parseMetadataStar(do)
-                listener: beginMetadataStar(()
-                listener: endMetadataStar(0)
-              listener: beginMember()
-              recoverFromInvalidMember(do, do, null, null, null, null, null, do, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
-                parseMethod(do, null, null, null, null, null, do, Instance of 'NoType', null, (, DeclarationKind.Class, WrapperClass)
-                  listener: beginMethod(null, null, null, null, null, ()
-                  listener: handleNoType(do)
-                  ensureIdentifier(do, methodDeclaration)
-                    insertSyntheticIdentifier(do, methodDeclaration, message: null, messageOnToken: null)
-                      reportRecoverableError((, Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}])
-                        listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}], (, ()
-                      rewriter()
-                    listener: handleIdentifier(, methodDeclaration)
-                  parseQualifiedRestOpt(, methodDeclarationContinuation)
-                  parseMethodTypeVar()
-                    listener: handleNoTypeVariables(()
-                  parseGetterOrFormalParameters(, (, false, MemberKind.NonStaticMethod)
-                    parseFormalParameters(, MemberKind.NonStaticMethod)
-                      parseFormalParametersRest((, MemberKind.NonStaticMethod)
-                        listener: beginFormalParameters((, MemberKind.NonStaticMethod)
-                        parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
-                          parseMetadataStar(()
-                            listener: beginMetadataStar(int)
-                            listener: endMetadataStar(0)
-                          listener: beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
-                          listener: handleIdentifier(int, typeReference)
-                          listener: handleNoTypeArguments(x)
-                          listener: handleType(int, null)
-                          ensureIdentifier(int, formalParameterDeclaration)
-                            listener: handleIdentifier(x, formalParameterDeclaration)
-                          listener: handleFormalParameterWithoutValue())
-                          listener: endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
-                        listener: endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
-                  parseInitializersOpt())
-                    listener: handleNoInitializers()
-                  parseAsyncModifierOpt())
-                    listener: handleAsyncModifier(null, null)
-                    inPlainSync()
-                  inPlainSync()
-                  parseFunctionBody(), false, true)
-                    listener: beginBlockFunctionBody({)
-                    notEofOrValue(}, if)
-                    parseStatement({)
-                      parseStatementX({)
-                        parseIfStatement({)
-                          listener: beginIfStatement(if)
-                          ensureParenthesizedCondition(if)
-                            parseExpressionInParenthesisRest(()
-                              parseExpression(()
-                                parsePrecedenceExpression((, 1, true)
-                                  parseUnaryExpression((, true)
-                                    parsePrimary((, expression)
-                                      parseSendOrFunctionLiteral((, expression)
-                                        parseSend((, expression)
-                                          ensureIdentifier((, expression)
-                                            listener: handleIdentifier(x, expression)
-                                          listener: handleNoTypeArguments(==)
-                                          parseArgumentsOpt(x)
-                                            listener: handleNoArguments(==)
-                                          listener: handleSend(x, ==)
-                                  listener: beginBinaryExpression(==)
-                                  parsePrecedenceExpression(==, 8, true)
-                                    parseUnaryExpression(==, true)
-                                      parsePrimary(==, expression)
-                                        parseLiteralInt(==)
-                                          listener: handleLiteralInt(0)
-                                  listener: endBinaryExpression(==)
-                              ensureCloseParen(0, ()
-                            listener: handleParenthesizedCondition(()
-                          listener: beginThenStatement(return)
-                          parseStatement())
-                            parseStatementX())
-                              parseReturnStatement())
-                                listener: beginReturnStatement(return)
-                                parseExpression(return)
-                                  parsePrecedenceExpression(return, 1, true)
-                                    parseUnaryExpression(return, true)
-                                      parsePrimary(return, expression)
-                                        parseLiteralInt(return)
-                                          listener: handleLiteralInt(42)
-                                ensureSemicolon(42)
-                                listener: endReturnStatement(true, return, ;)
-                                inGenerator()
-                          listener: endThenStatement(;)
-                          listener: endIfStatement(if, null)
-                    notEofOrValue(}, return)
-                    parseStatement(;)
-                      parseStatementX(;)
-                        parseReturnStatement(;)
-                          listener: beginReturnStatement(return)
-                          parseExpression(return)
-                            parsePrecedenceExpression(return, 1, true)
-                              parseUnaryExpression(return, true)
-                                parsePrimary(return, expression)
-                                  inPlainSync()
-                                  parseSend(return, expression)
-                                    ensureIdentifier(return, expression)
-                                      reportRecoverableErrorWithToken(do, Instance of 'Template<(Token) => Message>')
-                                        listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'do'., null, {token: do}], do, do)
-                                      rewriter()
-                                      listener: handleIdentifier(, expression)
-                                    listener: handleNoTypeArguments(do)
-                                    parseArgumentsOpt()
-                                      listener: handleNoArguments(do)
-                                    listener: handleSend(, do)
-                          ensureSemicolon()
-                            reportRecoverableError(, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
-                              listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], do, do)
-                            rewriter()
-                          listener: endReturnStatement(true, return, ;)
-                          inGenerator()
-                    notEofOrValue(}, do)
-                    parseStatement(;)
-                      parseStatementX(;)
-                        parseDoWhileStatement(;)
-                          listener: beginDoWhileStatement(do)
-                          listener: beginDoWhileStatementBody(()
-                          parseStatement(do)
-                            parseStatementX(do)
-                              parseExpressionStatementOrDeclaration(do, false)
-                                parseExpressionStatementOrDeclarationAfterModifiers(do, do, null, null, null, false)
-                                  looksLikeLocalFunction(()
-                                  parseExpressionStatement(do)
-                                    parseExpression(do)
-                                      parsePrecedenceExpression(do, 1, true)
-                                        parseUnaryExpression(do, true)
-                                          parsePrimary(do, expression)
-                                            parseParenthesizedExpressionOrFunctionLiteral(do)
-                                              parseParenthesizedExpression(do)
-                                                parseExpressionInParenthesis(do)
-                                                  parseExpressionInParenthesisRest(()
-                                                    parseExpression(()
-                                                      parsePrecedenceExpression((, 1, true)
-                                                        parseUnaryExpression((, true)
-                                                          parsePrimary((, expression)
-                                                            parseSendOrFunctionLiteral((, expression)
-                                                              parseSend((, expression)
-                                                                ensureIdentifier((, expression)
-                                                                  listener: handleIdentifier(x, expression)
-                                                                listener: handleNoTypeArguments(-)
-                                                                parseArgumentsOpt(x)
-                                                                  listener: handleNoArguments(-)
-                                                                listener: handleSend(x, -)
-                                                        listener: beginBinaryExpression(-)
-                                                        parsePrecedenceExpression(-, 14, true)
-                                                          parseUnaryExpression(-, true)
-                                                            parsePrimary(-, expression)
-                                                              parseLiteralInt(-)
-                                                                listener: handleLiteralInt(1)
-                                                        listener: endBinaryExpression(-)
-                                                    ensureCloseParen(1, ()
-                                                listener: handleParenthesizedExpression(()
-                                        listener: beginBinaryExpression(+)
-                                        parsePrecedenceExpression(+, 14, true)
-                                          parseUnaryExpression(+, true)
-                                            parsePrimary(+, expression)
-                                              parseLiteralInt(+)
-                                                listener: handleLiteralInt(1)
-                                        listener: endBinaryExpression(+)
-                                    ensureSemicolon(1)
-                                    listener: handleExpressionStatement(;)
-                          listener: endDoWhileStatementBody(;)
-                          reportRecoverableError(}, Message[ExpectedButGot, Expected 'while' before this., null, {string: while}])
-                            listener: handleRecoverableError(Message[ExpectedButGot, Expected 'while' before this., null, {string: while}], }, })
-                          rewriter()
-                          ensureParenthesizedCondition(while)
-                            reportRecoverableError(}, Message[ExpectedToken, Expected to find '('., null, {string: (}])
-                              listener: handleRecoverableError(Message[ExpectedToken, Expected to find '('., null, {string: (}], }, })
-                            rewriter()
-                            parseExpressionInParenthesisRest(()
-                              parseExpression(()
-                                parsePrecedenceExpression((, 1, true)
-                                  parseUnaryExpression((, true)
-                                    parsePrimary((, expression)
+                inPlainSync()
+                parseFunctionBody(), false, true)
+                  listener: beginBlockFunctionBody({)
+                  notEofOrValue(}, if)
+                  parseStatement({)
+                    parseStatementX({)
+                      parseIfStatement({)
+                        listener: beginIfStatement(if)
+                        ensureParenthesizedCondition(if)
+                          parseExpressionInParenthesisRest(()
+                            parseExpression(()
+                              parsePrecedenceExpression((, 1, true)
+                                parseUnaryExpression((, true)
+                                  parsePrimary((, expression)
+                                    parseSendOrFunctionLiteral((, expression)
                                       parseSend((, expression)
                                         ensureIdentifier((, expression)
-                                          reportRecoverableErrorWithToken(), Instance of 'Template<(Token) => Message>')
-                                            listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '}'., null, {token: }}], }, })
-                                          rewriter()
-                                          listener: handleIdentifier(, expression)
-                                        listener: handleNoTypeArguments())
-                                        parseArgumentsOpt()
-                                          listener: handleNoArguments())
-                                        listener: handleSend(, ))
-                              ensureCloseParen(, ()
-                            listener: handleParenthesizedCondition(()
-                          ensureSemicolon())
-                            reportRecoverableError(, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
-                              listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], }, })
-                            rewriter()
-                          listener: endDoWhileStatement(do, while, ;)
-                    notEofOrValue(}, })
-                    listener: endBlockFunctionBody(3, {, })
-                  listener: endClassMethod(null, , (, null, })
-                listener: endMember()
+                                          listener: handleIdentifier(x, expression)
+                                        listener: handleNoTypeArguments(==)
+                                        parseArgumentsOpt(x)
+                                          listener: handleNoArguments(==)
+                                        listener: handleSend(x, ==)
+                                listener: beginBinaryExpression(==)
+                                parsePrecedenceExpression(==, 8, true)
+                                  parseUnaryExpression(==, true)
+                                    parsePrimary(==, expression)
+                                      parseLiteralInt(==)
+                                        listener: handleLiteralInt(0)
+                                listener: endBinaryExpression(==)
+                            ensureCloseParen(0, ()
+                          listener: handleParenthesizedCondition(()
+                        listener: beginThenStatement(return)
+                        parseStatement())
+                          parseStatementX())
+                            parseReturnStatement())
+                              listener: beginReturnStatement(return)
+                              parseExpression(return)
+                                parsePrecedenceExpression(return, 1, true)
+                                  parseUnaryExpression(return, true)
+                                    parsePrimary(return, expression)
+                                      parseLiteralInt(return)
+                                        listener: handleLiteralInt(42)
+                              ensureSemicolon(42)
+                              listener: endReturnStatement(true, return, ;)
+                              inGenerator()
+                        listener: endThenStatement(;)
+                        listener: endIfStatement(if, null)
+                  notEofOrValue(}, return)
+                  parseStatement(;)
+                    parseStatementX(;)
+                      parseReturnStatement(;)
+                        listener: beginReturnStatement(return)
+                        parseExpression(return)
+                          parsePrecedenceExpression(return, 1, true)
+                            parseUnaryExpression(return, true)
+                              parsePrimary(return, expression)
+                                inPlainSync()
+                                parseSend(return, expression)
+                                  ensureIdentifier(return, expression)
+                                    reportRecoverableErrorWithToken(catch, Instance of 'Template<(Token) => Message>')
+                                      listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'catch'., null, {token: catch}], catch, catch)
+                                    listener: handleIdentifier(catch, expression)
+                                  listener: handleNoTypeArguments(()
+                                  parseArgumentsOpt(catch)
+                                    parseArguments(catch)
+                                      parseArgumentsRest(()
+                                        listener: beginArguments(()
+                                        parseExpression(()
+                                          parsePrecedenceExpression((, 1, true)
+                                            parseUnaryExpression((, true)
+                                              parsePrimary((, expression)
+                                                parseSendOrFunctionLiteral((, expression)
+                                                  parseSend((, expression)
+                                                    ensureIdentifier((, expression)
+                                                      listener: handleIdentifier(x, expression)
+                                                    listener: handleNoTypeArguments(-)
+                                                    parseArgumentsOpt(x)
+                                                      listener: handleNoArguments(-)
+                                                    listener: handleSend(x, -)
+                                            listener: beginBinaryExpression(-)
+                                            parsePrecedenceExpression(-, 14, true)
+                                              parseUnaryExpression(-, true)
+                                                parsePrimary(-, expression)
+                                                  parseLiteralInt(-)
+                                                    listener: handleLiteralInt(1)
+                                            listener: endBinaryExpression(-)
+                                        listener: endArguments(1, (, ))
+                                  listener: handleSend(catch, +)
+                            listener: beginBinaryExpression(+)
+                            parsePrecedenceExpression(+, 14, true)
+                              parseUnaryExpression(+, true)
+                                parsePrimary(+, expression)
+                                  parseLiteralInt(+)
+                                    listener: handleLiteralInt(1)
+                            listener: endBinaryExpression(+)
+                        ensureSemicolon(1)
+                        listener: endReturnStatement(true, return, ;)
+                        inGenerator()
+                  notEofOrValue(}, })
+                  listener: endBlockFunctionBody(2, {, })
+                listener: endClassMethod(null, int, (, null, })
+              listener: endMember()
             notEofOrValue(}, int)
             parseClassOrMixinOrExtensionMemberImpl(}, DeclarationKind.Class, WrapperClass)
               parseMetadataStar(})
                 listener: beginMetadataStar(int)
                 listener: endMetadataStar(0)
               listener: beginMember()
-              parseFields(}, null, null, null, null, null, }, Instance of 'NoType', int, DeclarationKind.Class, WrapperClass)
-                reportRecoverableError(int, MissingConstFinalVarOrType)
-                  listener: handleRecoverableError(MissingConstFinalVarOrType, int, int)
-                listener: handleNoType(})
-                ensureIdentifier(}, fieldDeclaration)
-                  listener: handleIdentifier(int, fieldDeclaration)
-                parseFieldInitializerOpt(int, int, null, null, DeclarationKind.Class, WrapperClass)
-                  listener: handleNoFieldInitializer(else)
-                ensureSemicolon(int)
-                  reportRecoverableError(int, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
-                    listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
-                  rewriter()
-                listener: endClassFields(null, null, null, null, 1, int, ;)
-              listener: endMember()
-            notEofOrValue(}, else)
-            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
-              parseMetadataStar(;)
-                listener: beginMetadataStar(else)
-                listener: endMetadataStar(0)
-              listener: beginMember()
-              recoverFromInvalidMember(;, ;, null, null, null, null, null, ;, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
-                reportRecoverableErrorWithToken(else, Instance of 'Template<(Token) => Message>')
-                  listener: handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got 'else'., null, {token: else}], else, else)
-                listener: handleInvalidMember(else)
-                listener: endMember()
-            notEofOrValue(}, ()
-            parseClassOrMixinOrExtensionMemberImpl(else, DeclarationKind.Class, WrapperClass)
-              parseMetadataStar(else)
-                listener: beginMetadataStar(()
-                listener: endMetadataStar(0)
-              listener: beginMember()
-              recoverFromInvalidMember(else, else, null, null, null, null, null, else, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
-                parseMethod(else, null, null, null, null, null, else, Instance of 'NoType', null, (, DeclarationKind.Class, WrapperClass)
-                  listener: beginMethod(null, null, null, null, null, ()
-                  listener: handleNoType(else)
-                  ensureIdentifier(else, methodDeclaration)
-                    insertSyntheticIdentifier(else, methodDeclaration, message: null, messageOnToken: null)
-                      reportRecoverableError((, Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}])
-                        listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}], (, ()
-                      rewriter()
-                    listener: handleIdentifier(, methodDeclaration)
-                  parseQualifiedRestOpt(, methodDeclarationContinuation)
-                  parseMethodTypeVar()
-                    listener: handleNoTypeVariables(()
-                  parseGetterOrFormalParameters(, (, false, MemberKind.NonStaticMethod)
-                    parseFormalParameters(, MemberKind.NonStaticMethod)
-                      parseFormalParametersRest((, MemberKind.NonStaticMethod)
-                        listener: beginFormalParameters((, MemberKind.NonStaticMethod)
-                        parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
-                          parseMetadataStar(()
-                            listener: beginMetadataStar(int)
-                            listener: endMetadataStar(0)
-                          listener: beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
-                          listener: handleIdentifier(int, typeReference)
-                          listener: handleNoTypeArguments(x)
-                          listener: handleType(int, null)
-                          ensureIdentifier(int, formalParameterDeclaration)
-                            listener: handleIdentifier(x, formalParameterDeclaration)
-                          listener: handleFormalParameterWithoutValue())
-                          listener: endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
-                        listener: endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
-                  parseInitializersOpt())
-                    listener: handleNoInitializers()
-                  parseAsyncModifierOpt())
-                    listener: handleAsyncModifier(null, null)
-                    inPlainSync()
-                  inPlainSync()
-                  parseFunctionBody(), false, true)
-                    listener: beginBlockFunctionBody({)
-                    notEofOrValue(}, if)
-                    parseStatement({)
-                      parseStatementX({)
-                        parseIfStatement({)
-                          listener: beginIfStatement(if)
-                          ensureParenthesizedCondition(if)
-                            parseExpressionInParenthesisRest(()
-                              parseExpression(()
-                                parsePrecedenceExpression((, 1, true)
-                                  parseUnaryExpression((, true)
-                                    parsePrimary((, expression)
-                                      parseSendOrFunctionLiteral((, expression)
-                                        parseSend((, expression)
-                                          ensureIdentifier((, expression)
-                                            listener: handleIdentifier(x, expression)
-                                          listener: handleNoTypeArguments(==)
-                                          parseArgumentsOpt(x)
-                                            listener: handleNoArguments(==)
-                                          listener: handleSend(x, ==)
-                                  listener: beginBinaryExpression(==)
-                                  parsePrecedenceExpression(==, 8, true)
-                                    parseUnaryExpression(==, true)
-                                      parsePrimary(==, expression)
-                                        parseLiteralInt(==)
-                                          listener: handleLiteralInt(0)
-                                  listener: endBinaryExpression(==)
-                              ensureCloseParen(0, ()
-                            listener: handleParenthesizedCondition(()
-                          listener: beginThenStatement(return)
-                          parseStatement())
-                            parseStatementX())
-                              parseReturnStatement())
-                                listener: beginReturnStatement(return)
-                                parseExpression(return)
-                                  parsePrecedenceExpression(return, 1, true)
-                                    parseUnaryExpression(return, true)
-                                      parsePrimary(return, expression)
-                                        parseLiteralInt(return)
-                                          listener: handleLiteralInt(42)
-                                ensureSemicolon(42)
-                                listener: endReturnStatement(true, return, ;)
-                                inGenerator()
-                          listener: endThenStatement(;)
-                          listener: endIfStatement(if, null)
-                    notEofOrValue(}, return)
-                    parseStatement(;)
-                      parseStatementX(;)
-                        parseReturnStatement(;)
-                          listener: beginReturnStatement(return)
-                          parseExpression(return)
-                            parsePrecedenceExpression(return, 1, true)
-                              parseUnaryExpression(return, true)
-                                parsePrimary(return, expression)
-                                  inPlainSync()
-                                  parseSend(return, expression)
-                                    ensureIdentifier(return, expression)
-                                      reportRecoverableErrorWithToken(else, Instance of 'Template<(Token) => Message>')
-                                        listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'else'., null, {token: else}], else, else)
-                                      rewriter()
-                                      listener: handleIdentifier(, expression)
-                                    listener: handleNoTypeArguments(else)
-                                    parseArgumentsOpt()
-                                      listener: handleNoArguments(else)
-                                    listener: handleSend(, else)
-                          ensureSemicolon()
-                            reportRecoverableError(, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
-                              listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], else, else)
-                            rewriter()
-                          listener: endReturnStatement(true, return, ;)
-                          inGenerator()
-                    notEofOrValue(}, else)
-                    parseStatement(;)
-                      parseStatementX(;)
-                        parseExpressionStatementOrDeclaration(;, false)
-                          parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
-                            looksLikeLocalFunction(else)
-                            parseExpressionStatement(;)
-                              parseExpression(;)
-                                parsePrecedenceExpression(;, 1, true)
-                                  parseUnaryExpression(;, true)
-                                    parsePrimary(;, expression)
-                                      inPlainSync()
-                                      parseSend(;, expression)
-                                        ensureIdentifier(;, expression)
-                                          reportRecoverableErrorWithToken(else, Instance of 'Template<(Token) => Message>')
-                                            listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'else'., null, {token: else}], else, else)
-                                          rewriter()
-                                          listener: handleIdentifier(, expression)
-                                        listener: handleNoTypeArguments(else)
-                                        parseArgumentsOpt()
-                                          listener: handleNoArguments(else)
-                                        listener: handleSend(, else)
-                              ensureSemicolon()
-                                reportRecoverableError(, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
-                                  listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], else, else)
-                                rewriter()
-                              listener: handleExpressionStatement(;)
-                    reportRecoverableError(;, Message[UnexpectedToken, Unexpected token ';'., null, {token: ;}])
-                      listener: handleRecoverableError(Message[UnexpectedToken, Unexpected token ';'., null, {token: ;}], else, else)
-                    notEofOrValue(}, ()
-                    parseStatement(else)
-                      parseStatementX(else)
-                        parseExpressionStatementOrDeclaration(else, false)
-                          parseExpressionStatementOrDeclarationAfterModifiers(else, else, null, null, null, false)
-                            looksLikeLocalFunction(()
-                            parseExpressionStatement(else)
-                              parseExpression(else)
-                                parsePrecedenceExpression(else, 1, true)
-                                  parseUnaryExpression(else, true)
-                                    parsePrimary(else, expression)
-                                      parseParenthesizedExpressionOrFunctionLiteral(else)
-                                        parseParenthesizedExpression(else)
-                                          parseExpressionInParenthesis(else)
-                                            parseExpressionInParenthesisRest(()
-                                              parseExpression(()
-                                                parsePrecedenceExpression((, 1, true)
-                                                  parseUnaryExpression((, true)
-                                                    parsePrimary((, expression)
-                                                      parseSendOrFunctionLiteral((, expression)
-                                                        parseSend((, expression)
-                                                          ensureIdentifier((, expression)
-                                                            listener: handleIdentifier(x, expression)
-                                                          listener: handleNoTypeArguments(-)
-                                                          parseArgumentsOpt(x)
-                                                            listener: handleNoArguments(-)
-                                                          listener: handleSend(x, -)
-                                                  listener: beginBinaryExpression(-)
-                                                  parsePrecedenceExpression(-, 14, true)
-                                                    parseUnaryExpression(-, true)
-                                                      parsePrimary(-, expression)
-                                                        parseLiteralInt(-)
-                                                          listener: handleLiteralInt(1)
-                                                  listener: endBinaryExpression(-)
-                                              ensureCloseParen(1, ()
-                                          listener: handleParenthesizedExpression(()
-                                  listener: beginBinaryExpression(+)
-                                  parsePrecedenceExpression(+, 14, true)
-                                    parseUnaryExpression(+, true)
-                                      parsePrimary(+, expression)
-                                        parseLiteralInt(+)
-                                          listener: handleLiteralInt(1)
-                                  listener: endBinaryExpression(+)
-                              ensureSemicolon(1)
-                              listener: handleExpressionStatement(;)
-                    notEofOrValue(}, })
-                    listener: endBlockFunctionBody(4, {, })
-                  listener: endClassMethod(null, , (, null, })
-                listener: endMember()
-            notEofOrValue(}, int)
-            parseClassOrMixinOrExtensionMemberImpl(}, DeclarationKind.Class, WrapperClass)
-              parseMetadataStar(})
-                listener: beginMetadataStar(int)
-                listener: endMetadataStar(0)
-              listener: beginMember()
-              parseFields(}, null, null, null, null, null, }, Instance of 'NoType', int, DeclarationKind.Class, WrapperClass)
-                reportRecoverableError(int, MissingConstFinalVarOrType)
-                  listener: handleRecoverableError(MissingConstFinalVarOrType, int, int)
-                listener: handleNoType(})
-                ensureIdentifier(}, fieldDeclaration)
-                  listener: handleIdentifier(int, fieldDeclaration)
-                parseFieldInitializerOpt(int, int, null, null, DeclarationKind.Class, WrapperClass)
-                  listener: handleNoFieldInitializer(enum)
-                ensureSemicolon(int)
-                  reportRecoverableError(int, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
-                    listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
-                  rewriter()
-                listener: endClassFields(null, null, null, null, 1, int, ;)
-              listener: endMember()
-            notEofOrValue(}, enum)
-            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
-              parseMetadataStar(;)
-                listener: beginMetadataStar(enum)
-                listener: endMetadataStar(0)
-              listener: beginMember()
-              recoverFromInvalidMember(;, ;, null, null, null, null, null, ;, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
-                reportAndSkipEnumInClass(enum)
-                  reportRecoverableError(enum, EnumInClass)
-                    listener: handleRecoverableError(EnumInClass, enum, enum)
-                  listener: handleInvalidMember(enum)
-            notEofOrValue(}, ()
-            parseClassOrMixinOrExtensionMemberImpl(enum, DeclarationKind.Class, WrapperClass)
-              parseMetadataStar(enum)
-                listener: beginMetadataStar(()
-                listener: endMetadataStar(0)
-              listener: beginMember()
-              recoverFromInvalidMember(enum, enum, null, null, null, null, null, enum, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
-                parseMethod(enum, null, null, null, null, null, enum, Instance of 'NoType', null, (, DeclarationKind.Class, WrapperClass)
-                  listener: beginMethod(null, null, null, null, null, ()
-                  listener: handleNoType(enum)
-                  ensureIdentifier(enum, methodDeclaration)
-                    insertSyntheticIdentifier(enum, methodDeclaration, message: null, messageOnToken: null)
-                      reportRecoverableError((, Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}])
-                        listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}], (, ()
-                      rewriter()
-                    listener: handleIdentifier(, methodDeclaration)
-                  parseQualifiedRestOpt(, methodDeclarationContinuation)
-                  parseMethodTypeVar()
-                    listener: handleNoTypeVariables(()
-                  parseGetterOrFormalParameters(, (, false, MemberKind.NonStaticMethod)
-                    parseFormalParameters(, MemberKind.NonStaticMethod)
-                      parseFormalParametersRest((, MemberKind.NonStaticMethod)
-                        listener: beginFormalParameters((, MemberKind.NonStaticMethod)
-                        parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
-                          parseMetadataStar(()
-                            listener: beginMetadataStar(int)
-                            listener: endMetadataStar(0)
-                          listener: beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
-                          listener: handleIdentifier(int, typeReference)
-                          listener: handleNoTypeArguments(x)
-                          listener: handleType(int, null)
-                          ensureIdentifier(int, formalParameterDeclaration)
-                            listener: handleIdentifier(x, formalParameterDeclaration)
-                          listener: handleFormalParameterWithoutValue())
-                          listener: endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
-                        listener: endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
-                  parseInitializersOpt())
-                    listener: handleNoInitializers()
-                  parseAsyncModifierOpt())
-                    listener: handleAsyncModifier(null, null)
-                    inPlainSync()
-                  inPlainSync()
-                  parseFunctionBody(), false, true)
-                    listener: beginBlockFunctionBody({)
-                    notEofOrValue(}, if)
-                    parseStatement({)
-                      parseStatementX({)
-                        parseIfStatement({)
-                          listener: beginIfStatement(if)
-                          ensureParenthesizedCondition(if)
-                            parseExpressionInParenthesisRest(()
-                              parseExpression(()
-                                parsePrecedenceExpression((, 1, true)
-                                  parseUnaryExpression((, true)
-                                    parsePrimary((, expression)
-                                      parseSendOrFunctionLiteral((, expression)
-                                        parseSend((, expression)
-                                          ensureIdentifier((, expression)
-                                            listener: handleIdentifier(x, expression)
-                                          listener: handleNoTypeArguments(==)
-                                          parseArgumentsOpt(x)
-                                            listener: handleNoArguments(==)
-                                          listener: handleSend(x, ==)
-                                  listener: beginBinaryExpression(==)
-                                  parsePrecedenceExpression(==, 8, true)
-                                    parseUnaryExpression(==, true)
-                                      parsePrimary(==, expression)
-                                        parseLiteralInt(==)
-                                          listener: handleLiteralInt(0)
-                                  listener: endBinaryExpression(==)
-                              ensureCloseParen(0, ()
-                            listener: handleParenthesizedCondition(()
-                          listener: beginThenStatement(return)
-                          parseStatement())
-                            parseStatementX())
-                              parseReturnStatement())
-                                listener: beginReturnStatement(return)
-                                parseExpression(return)
-                                  parsePrecedenceExpression(return, 1, true)
-                                    parseUnaryExpression(return, true)
-                                      parsePrimary(return, expression)
-                                        parseLiteralInt(return)
-                                          listener: handleLiteralInt(42)
-                                ensureSemicolon(42)
-                                listener: endReturnStatement(true, return, ;)
-                                inGenerator()
-                          listener: endThenStatement(;)
-                          listener: endIfStatement(if, null)
-                    notEofOrValue(}, return)
-                    parseStatement(;)
-                      parseStatementX(;)
-                        parseReturnStatement(;)
-                          listener: beginReturnStatement(return)
-                          parseExpression(return)
-                            parsePrecedenceExpression(return, 1, true)
-                              parseUnaryExpression(return, true)
-                                parsePrimary(return, expression)
-                                  inPlainSync()
-                                  parseSend(return, expression)
-                                    ensureIdentifier(return, expression)
-                                      reportRecoverableErrorWithToken(enum, Instance of 'Template<(Token) => Message>')
-                                        listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'enum'., null, {token: enum}], enum, enum)
-                                      listener: handleIdentifier(enum, expression)
-                                    listener: handleNoTypeArguments(()
-                                    parseArgumentsOpt(enum)
-                                      parseArguments(enum)
-                                        parseArgumentsRest(()
-                                          listener: beginArguments(()
-                                          parseExpression(()
-                                            parsePrecedenceExpression((, 1, true)
-                                              parseUnaryExpression((, true)
-                                                parsePrimary((, expression)
-                                                  parseSendOrFunctionLiteral((, expression)
-                                                    parseSend((, expression)
-                                                      ensureIdentifier((, expression)
-                                                        listener: handleIdentifier(x, expression)
-                                                      listener: handleNoTypeArguments(-)
-                                                      parseArgumentsOpt(x)
-                                                        listener: handleNoArguments(-)
-                                                      listener: handleSend(x, -)
-                                              listener: beginBinaryExpression(-)
-                                              parsePrecedenceExpression(-, 14, true)
-                                                parseUnaryExpression(-, true)
-                                                  parsePrimary(-, expression)
-                                                    parseLiteralInt(-)
-                                                      listener: handleLiteralInt(1)
-                                              listener: endBinaryExpression(-)
-                                          listener: endArguments(1, (, ))
-                                    listener: handleSend(enum, +)
-                              listener: beginBinaryExpression(+)
-                              parsePrecedenceExpression(+, 14, true)
-                                parseUnaryExpression(+, true)
-                                  parsePrimary(+, expression)
-                                    parseLiteralInt(+)
-                                      listener: handleLiteralInt(1)
-                              listener: endBinaryExpression(+)
-                          ensureSemicolon(1)
-                          listener: endReturnStatement(true, return, ;)
-                          inGenerator()
-                    notEofOrValue(}, })
-                    listener: endBlockFunctionBody(2, {, })
-                  listener: endClassMethod(null, , (, null, })
-                listener: endMember()
-            notEofOrValue(}, int)
-            parseClassOrMixinOrExtensionMemberImpl(}, DeclarationKind.Class, WrapperClass)
-              parseMetadataStar(})
-                listener: beginMetadataStar(int)
-                listener: endMetadataStar(0)
-              listener: beginMember()
-              parseFields(}, null, null, null, null, null, }, Instance of 'NoType', int, DeclarationKind.Class, WrapperClass)
-                reportRecoverableError(int, MissingConstFinalVarOrType)
-                  listener: handleRecoverableError(MissingConstFinalVarOrType, int, int)
-                listener: handleNoType(})
-                ensureIdentifier(}, fieldDeclaration)
-                  listener: handleIdentifier(int, fieldDeclaration)
-                parseFieldInitializerOpt(int, int, null, null, DeclarationKind.Class, WrapperClass)
-                  listener: handleNoFieldInitializer(extends)
-                ensureSemicolon(int)
-                  reportRecoverableError(int, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
-                    listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
-                  rewriter()
-                listener: endClassFields(null, null, null, null, 1, int, ;)
-              listener: endMember()
-            notEofOrValue(}, extends)
-            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
-              parseMetadataStar(;)
-                listener: beginMetadataStar(extends)
-                listener: endMetadataStar(0)
-              listener: beginMember()
-              recoverFromInvalidMember(;, ;, null, null, null, null, null, ;, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
-                reportRecoverableErrorWithToken(extends, Instance of 'Template<(Token) => Message>')
-                  listener: handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got 'extends'., null, {token: extends}], extends, extends)
-                listener: handleInvalidMember(extends)
-                listener: endMember()
-            notEofOrValue(}, ()
-            parseClassOrMixinOrExtensionMemberImpl(extends, DeclarationKind.Class, WrapperClass)
-              parseMetadataStar(extends)
-                listener: beginMetadataStar(()
-                listener: endMetadataStar(0)
-              listener: beginMember()
-              recoverFromInvalidMember(extends, extends, null, null, null, null, null, extends, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
-                parseMethod(extends, null, null, null, null, null, extends, Instance of 'NoType', null, (, DeclarationKind.Class, WrapperClass)
-                  listener: beginMethod(null, null, null, null, null, ()
-                  listener: handleNoType(extends)
-                  ensureIdentifier(extends, methodDeclaration)
-                    insertSyntheticIdentifier(extends, methodDeclaration, message: null, messageOnToken: null)
-                      reportRecoverableError((, Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}])
-                        listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}], (, ()
-                      rewriter()
-                    listener: handleIdentifier(, methodDeclaration)
-                  parseQualifiedRestOpt(, methodDeclarationContinuation)
-                  parseMethodTypeVar()
-                    listener: handleNoTypeVariables(()
-                  parseGetterOrFormalParameters(, (, false, MemberKind.NonStaticMethod)
-                    parseFormalParameters(, MemberKind.NonStaticMethod)
-                      parseFormalParametersRest((, MemberKind.NonStaticMethod)
-                        listener: beginFormalParameters((, MemberKind.NonStaticMethod)
-                        parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
-                          parseMetadataStar(()
-                            listener: beginMetadataStar(int)
-                            listener: endMetadataStar(0)
-                          listener: beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
-                          listener: handleIdentifier(int, typeReference)
-                          listener: handleNoTypeArguments(x)
-                          listener: handleType(int, null)
-                          ensureIdentifier(int, formalParameterDeclaration)
-                            listener: handleIdentifier(x, formalParameterDeclaration)
-                          listener: handleFormalParameterWithoutValue())
-                          listener: endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
-                        listener: endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
-                  parseInitializersOpt())
-                    listener: handleNoInitializers()
-                  parseAsyncModifierOpt())
-                    listener: handleAsyncModifier(null, null)
-                    inPlainSync()
-                  inPlainSync()
-                  parseFunctionBody(), false, true)
-                    listener: beginBlockFunctionBody({)
-                    notEofOrValue(}, if)
-                    parseStatement({)
-                      parseStatementX({)
-                        parseIfStatement({)
-                          listener: beginIfStatement(if)
-                          ensureParenthesizedCondition(if)
-                            parseExpressionInParenthesisRest(()
-                              parseExpression(()
-                                parsePrecedenceExpression((, 1, true)
-                                  parseUnaryExpression((, true)
-                                    parsePrimary((, expression)
-                                      parseSendOrFunctionLiteral((, expression)
-                                        parseSend((, expression)
-                                          ensureIdentifier((, expression)
-                                            listener: handleIdentifier(x, expression)
-                                          listener: handleNoTypeArguments(==)
-                                          parseArgumentsOpt(x)
-                                            listener: handleNoArguments(==)
-                                          listener: handleSend(x, ==)
-                                  listener: beginBinaryExpression(==)
-                                  parsePrecedenceExpression(==, 8, true)
-                                    parseUnaryExpression(==, true)
-                                      parsePrimary(==, expression)
-                                        parseLiteralInt(==)
-                                          listener: handleLiteralInt(0)
-                                  listener: endBinaryExpression(==)
-                              ensureCloseParen(0, ()
-                            listener: handleParenthesizedCondition(()
-                          listener: beginThenStatement(return)
-                          parseStatement())
-                            parseStatementX())
-                              parseReturnStatement())
-                                listener: beginReturnStatement(return)
-                                parseExpression(return)
-                                  parsePrecedenceExpression(return, 1, true)
-                                    parseUnaryExpression(return, true)
-                                      parsePrimary(return, expression)
-                                        parseLiteralInt(return)
-                                          listener: handleLiteralInt(42)
-                                ensureSemicolon(42)
-                                listener: endReturnStatement(true, return, ;)
-                                inGenerator()
-                          listener: endThenStatement(;)
-                          listener: endIfStatement(if, null)
-                    notEofOrValue(}, return)
-                    parseStatement(;)
-                      parseStatementX(;)
-                        parseReturnStatement(;)
-                          listener: beginReturnStatement(return)
-                          parseExpression(return)
-                            parsePrecedenceExpression(return, 1, true)
-                              parseUnaryExpression(return, true)
-                                parsePrimary(return, expression)
-                                  inPlainSync()
-                                  parseSend(return, expression)
-                                    ensureIdentifier(return, expression)
-                                      reportRecoverableErrorWithToken(extends, Instance of 'Template<(Token) => Message>')
-                                        listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'extends'., null, {token: extends}], extends, extends)
-                                      listener: handleIdentifier(extends, expression)
-                                    listener: handleNoTypeArguments(()
-                                    parseArgumentsOpt(extends)
-                                      parseArguments(extends)
-                                        parseArgumentsRest(()
-                                          listener: beginArguments(()
-                                          parseExpression(()
-                                            parsePrecedenceExpression((, 1, true)
-                                              parseUnaryExpression((, true)
-                                                parsePrimary((, expression)
-                                                  parseSendOrFunctionLiteral((, expression)
-                                                    parseSend((, expression)
-                                                      ensureIdentifier((, expression)
-                                                        listener: handleIdentifier(x, expression)
-                                                      listener: handleNoTypeArguments(-)
-                                                      parseArgumentsOpt(x)
-                                                        listener: handleNoArguments(-)
-                                                      listener: handleSend(x, -)
-                                              listener: beginBinaryExpression(-)
-                                              parsePrecedenceExpression(-, 14, true)
-                                                parseUnaryExpression(-, true)
-                                                  parsePrimary(-, expression)
-                                                    parseLiteralInt(-)
-                                                      listener: handleLiteralInt(1)
-                                              listener: endBinaryExpression(-)
-                                          listener: endArguments(1, (, ))
-                                    listener: handleSend(extends, +)
-                              listener: beginBinaryExpression(+)
-                              parsePrecedenceExpression(+, 14, true)
-                                parseUnaryExpression(+, true)
-                                  parsePrimary(+, expression)
-                                    parseLiteralInt(+)
-                                      listener: handleLiteralInt(1)
-                              listener: endBinaryExpression(+)
-                          ensureSemicolon(1)
-                          listener: endReturnStatement(true, return, ;)
-                          inGenerator()
-                    notEofOrValue(}, })
-                    listener: endBlockFunctionBody(2, {, })
-                  listener: endClassMethod(null, , (, null, })
-                listener: endMember()
-            notEofOrValue(}, int)
-            parseClassOrMixinOrExtensionMemberImpl(}, DeclarationKind.Class, WrapperClass)
-              parseMetadataStar(})
-                listener: beginMetadataStar(int)
-                listener: endMetadataStar(0)
-              listener: beginMember()
-              parseFields(}, null, null, null, null, null, }, Instance of 'NoType', int, DeclarationKind.Class, WrapperClass)
-                reportRecoverableError(int, MissingConstFinalVarOrType)
-                  listener: handleRecoverableError(MissingConstFinalVarOrType, int, int)
-                listener: handleNoType(})
-                ensureIdentifier(}, fieldDeclaration)
-                  listener: handleIdentifier(int, fieldDeclaration)
-                parseFieldInitializerOpt(int, int, null, null, DeclarationKind.Class, WrapperClass)
-                  listener: handleNoFieldInitializer(false)
-                ensureSemicolon(int)
-                  reportRecoverableError(int, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
-                    listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
-                  rewriter()
-                listener: endClassFields(null, null, null, null, 1, int, ;)
-              listener: endMember()
-            notEofOrValue(}, false)
-            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
-              parseMetadataStar(;)
-                listener: beginMetadataStar(false)
-                listener: endMetadataStar(0)
-              listener: beginMember()
-              recoverFromInvalidMember(;, ;, null, null, null, null, null, ;, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
-                reportRecoverableErrorWithToken(false, Instance of 'Template<(Token) => Message>')
-                  listener: handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got 'false'., null, {token: false}], false, false)
-                listener: handleInvalidMember(false)
-                listener: endMember()
-            notEofOrValue(}, ()
-            parseClassOrMixinOrExtensionMemberImpl(false, DeclarationKind.Class, WrapperClass)
-              parseMetadataStar(false)
-                listener: beginMetadataStar(()
-                listener: endMetadataStar(0)
-              listener: beginMember()
-              recoverFromInvalidMember(false, false, null, null, null, null, null, false, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
-                parseMethod(false, null, null, null, null, null, false, Instance of 'NoType', null, (, DeclarationKind.Class, WrapperClass)
-                  listener: beginMethod(null, null, null, null, null, ()
-                  listener: handleNoType(false)
-                  ensureIdentifier(false, methodDeclaration)
-                    insertSyntheticIdentifier(false, methodDeclaration, message: null, messageOnToken: null)
-                      reportRecoverableError((, Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}])
-                        listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}], (, ()
-                      rewriter()
-                    listener: handleIdentifier(, methodDeclaration)
-                  parseQualifiedRestOpt(, methodDeclarationContinuation)
-                  parseMethodTypeVar()
-                    listener: handleNoTypeVariables(()
-                  parseGetterOrFormalParameters(, (, false, MemberKind.NonStaticMethod)
-                    parseFormalParameters(, MemberKind.NonStaticMethod)
-                      parseFormalParametersRest((, MemberKind.NonStaticMethod)
-                        listener: beginFormalParameters((, MemberKind.NonStaticMethod)
-                        parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
-                          parseMetadataStar(()
-                            listener: beginMetadataStar(int)
-                            listener: endMetadataStar(0)
-                          listener: beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
-                          listener: handleIdentifier(int, typeReference)
-                          listener: handleNoTypeArguments(x)
-                          listener: handleType(int, null)
-                          ensureIdentifier(int, formalParameterDeclaration)
-                            listener: handleIdentifier(x, formalParameterDeclaration)
-                          listener: handleFormalParameterWithoutValue())
-                          listener: endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
-                        listener: endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
-                  parseInitializersOpt())
-                    listener: handleNoInitializers()
-                  parseAsyncModifierOpt())
-                    listener: handleAsyncModifier(null, null)
-                    inPlainSync()
-                  inPlainSync()
-                  parseFunctionBody(), false, true)
-                    listener: beginBlockFunctionBody({)
-                    notEofOrValue(}, if)
-                    parseStatement({)
-                      parseStatementX({)
-                        parseIfStatement({)
-                          listener: beginIfStatement(if)
-                          ensureParenthesizedCondition(if)
-                            parseExpressionInParenthesisRest(()
-                              parseExpression(()
-                                parsePrecedenceExpression((, 1, true)
-                                  parseUnaryExpression((, true)
-                                    parsePrimary((, expression)
-                                      parseSendOrFunctionLiteral((, expression)
-                                        parseSend((, expression)
-                                          ensureIdentifier((, expression)
-                                            listener: handleIdentifier(x, expression)
-                                          listener: handleNoTypeArguments(==)
-                                          parseArgumentsOpt(x)
-                                            listener: handleNoArguments(==)
-                                          listener: handleSend(x, ==)
-                                  listener: beginBinaryExpression(==)
-                                  parsePrecedenceExpression(==, 8, true)
-                                    parseUnaryExpression(==, true)
-                                      parsePrimary(==, expression)
-                                        parseLiteralInt(==)
-                                          listener: handleLiteralInt(0)
-                                  listener: endBinaryExpression(==)
-                              ensureCloseParen(0, ()
-                            listener: handleParenthesizedCondition(()
-                          listener: beginThenStatement(return)
-                          parseStatement())
-                            parseStatementX())
-                              parseReturnStatement())
-                                listener: beginReturnStatement(return)
-                                parseExpression(return)
-                                  parsePrecedenceExpression(return, 1, true)
-                                    parseUnaryExpression(return, true)
-                                      parsePrimary(return, expression)
-                                        parseLiteralInt(return)
-                                          listener: handleLiteralInt(42)
-                                ensureSemicolon(42)
-                                listener: endReturnStatement(true, return, ;)
-                                inGenerator()
-                          listener: endThenStatement(;)
-                          listener: endIfStatement(if, null)
-                    notEofOrValue(}, return)
-                    parseStatement(;)
-                      parseStatementX(;)
-                        parseReturnStatement(;)
-                          listener: beginReturnStatement(return)
-                          parseExpression(return)
-                            parsePrecedenceExpression(return, 1, true)
-                              parseUnaryExpression(return, true)
-                                parsePrimary(return, expression)
-                                  parseLiteralBool(return)
-                                    listener: handleLiteralBool(false)
-                              parseArgumentOrIndexStar(false, Instance of 'NoTypeParamOrArg', false)
-                                listener: handleNoTypeArguments(()
-                                parseArguments(false)
-                                  parseArgumentsRest(()
-                                    listener: beginArguments(()
-                                    parseExpression(()
-                                      parsePrecedenceExpression((, 1, true)
-                                        parseUnaryExpression((, true)
-                                          parsePrimary((, expression)
-                                            parseSendOrFunctionLiteral((, expression)
-                                              parseSend((, expression)
-                                                ensureIdentifier((, expression)
-                                                  listener: handleIdentifier(x, expression)
-                                                listener: handleNoTypeArguments(-)
-                                                parseArgumentsOpt(x)
-                                                  listener: handleNoArguments(-)
-                                                listener: handleSend(x, -)
-                                        listener: beginBinaryExpression(-)
-                                        parsePrecedenceExpression(-, 14, true)
-                                          parseUnaryExpression(-, true)
-                                            parsePrimary(-, expression)
-                                              parseLiteralInt(-)
-                                                listener: handleLiteralInt(1)
-                                        listener: endBinaryExpression(-)
-                                    listener: endArguments(1, (, ))
-                                listener: handleSend((, ))
-                              listener: beginBinaryExpression(+)
-                              parsePrecedenceExpression(+, 14, true)
-                                parseUnaryExpression(+, true)
-                                  parsePrimary(+, expression)
-                                    parseLiteralInt(+)
-                                      listener: handleLiteralInt(1)
-                              listener: endBinaryExpression(+)
-                          ensureSemicolon(1)
-                          listener: endReturnStatement(true, return, ;)
-                          inGenerator()
-                    notEofOrValue(}, })
-                    listener: endBlockFunctionBody(2, {, })
-                  listener: endClassMethod(null, , (, null, })
-                listener: endMember()
-            notEofOrValue(}, int)
-            parseClassOrMixinOrExtensionMemberImpl(}, DeclarationKind.Class, WrapperClass)
-              parseMetadataStar(})
-                listener: beginMetadataStar(int)
-                listener: endMetadataStar(0)
-              listener: beginMember()
-              parseFields(}, null, null, null, null, null, }, Instance of 'NoType', int, DeclarationKind.Class, WrapperClass)
-                reportRecoverableError(int, MissingConstFinalVarOrType)
-                  listener: handleRecoverableError(MissingConstFinalVarOrType, int, int)
-                listener: handleNoType(})
-                ensureIdentifier(}, fieldDeclaration)
-                  listener: handleIdentifier(int, fieldDeclaration)
-                parseFieldInitializerOpt(int, int, null, null, DeclarationKind.Class, WrapperClass)
-                  listener: handleNoFieldInitializer(final)
-                ensureSemicolon(int)
-                  reportRecoverableError(int, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
-                    listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
-                  rewriter()
-                listener: endClassFields(null, null, null, null, 1, int, ;)
-              listener: endMember()
-            notEofOrValue(}, final)
-            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
-              parseMetadataStar(;)
-                listener: beginMetadataStar(final)
-                listener: endMetadataStar(0)
-              listener: beginMember()
-              recoverFromInvalidMember(final, ;, null, null, null, null, final, final, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
-                parseMethod(;, null, null, null, null, final, final, Instance of 'NoType', null, (, DeclarationKind.Class, WrapperClass)
-                  reportRecoverableErrorWithToken(final, Instance of 'Template<(Token) => Message>')
-                    listener: handleRecoverableError(Message[ExtraneousModifier, Can't have modifier 'final' here., Try removing 'final'., {token: final}], final, final)
-                  listener: beginMethod(null, null, null, null, null, ()
-                  listener: handleNoType(final)
-                  ensureIdentifier(final, methodDeclaration)
-                    insertSyntheticIdentifier(final, methodDeclaration, message: null, messageOnToken: null)
-                      reportRecoverableError((, Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}])
-                        listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}], (, ()
-                      rewriter()
-                    listener: handleIdentifier(, methodDeclaration)
-                  parseQualifiedRestOpt(, methodDeclarationContinuation)
-                  parseMethodTypeVar()
-                    listener: handleNoTypeVariables(()
-                  parseGetterOrFormalParameters(, (, false, MemberKind.NonStaticMethod)
-                    parseFormalParameters(, MemberKind.NonStaticMethod)
-                      parseFormalParametersRest((, MemberKind.NonStaticMethod)
-                        listener: beginFormalParameters((, MemberKind.NonStaticMethod)
-                        parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
-                          parseMetadataStar(()
-                            listener: beginMetadataStar(int)
-                            listener: endMetadataStar(0)
-                          listener: beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
-                          listener: handleIdentifier(int, typeReference)
-                          listener: handleNoTypeArguments(x)
-                          listener: handleType(int, null)
-                          ensureIdentifier(int, formalParameterDeclaration)
-                            listener: handleIdentifier(x, formalParameterDeclaration)
-                          listener: handleFormalParameterWithoutValue())
-                          listener: endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
-                        listener: endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
-                  parseInitializersOpt())
-                    listener: handleNoInitializers()
-                  parseAsyncModifierOpt())
-                    listener: handleAsyncModifier(null, null)
-                    inPlainSync()
-                  inPlainSync()
-                  parseFunctionBody(), false, true)
-                    listener: beginBlockFunctionBody({)
-                    notEofOrValue(}, if)
-                    parseStatement({)
-                      parseStatementX({)
-                        parseIfStatement({)
-                          listener: beginIfStatement(if)
-                          ensureParenthesizedCondition(if)
-                            parseExpressionInParenthesisRest(()
-                              parseExpression(()
-                                parsePrecedenceExpression((, 1, true)
-                                  parseUnaryExpression((, true)
-                                    parsePrimary((, expression)
-                                      parseSendOrFunctionLiteral((, expression)
-                                        parseSend((, expression)
-                                          ensureIdentifier((, expression)
-                                            listener: handleIdentifier(x, expression)
-                                          listener: handleNoTypeArguments(==)
-                                          parseArgumentsOpt(x)
-                                            listener: handleNoArguments(==)
-                                          listener: handleSend(x, ==)
-                                  listener: beginBinaryExpression(==)
-                                  parsePrecedenceExpression(==, 8, true)
-                                    parseUnaryExpression(==, true)
-                                      parsePrimary(==, expression)
-                                        parseLiteralInt(==)
-                                          listener: handleLiteralInt(0)
-                                  listener: endBinaryExpression(==)
-                              ensureCloseParen(0, ()
-                            listener: handleParenthesizedCondition(()
-                          listener: beginThenStatement(return)
-                          parseStatement())
-                            parseStatementX())
-                              parseReturnStatement())
-                                listener: beginReturnStatement(return)
-                                parseExpression(return)
-                                  parsePrecedenceExpression(return, 1, true)
-                                    parseUnaryExpression(return, true)
-                                      parsePrimary(return, expression)
-                                        parseLiteralInt(return)
-                                          listener: handleLiteralInt(42)
-                                ensureSemicolon(42)
-                                listener: endReturnStatement(true, return, ;)
-                                inGenerator()
-                          listener: endThenStatement(;)
-                          listener: endIfStatement(if, null)
-                    notEofOrValue(}, return)
-                    parseStatement(;)
-                      parseStatementX(;)
-                        parseReturnStatement(;)
-                          listener: beginReturnStatement(return)
-                          parseExpression(return)
-                            parsePrecedenceExpression(return, 1, true)
-                              parseUnaryExpression(return, true)
-                                parsePrimary(return, expression)
-                                  inPlainSync()
-                                  parseSend(return, expression)
-                                    ensureIdentifier(return, expression)
-                                      reportRecoverableErrorWithToken(final, Instance of 'Template<(Token) => Message>')
-                                        listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'final'., null, {token: final}], final, final)
-                                      rewriter()
-                                      listener: handleIdentifier(, expression)
-                                    listener: handleNoTypeArguments(final)
-                                    parseArgumentsOpt()
-                                      listener: handleNoArguments(final)
-                                    listener: handleSend(, final)
-                          ensureSemicolon()
-                            reportRecoverableError(, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
-                              listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], final, final)
-                            rewriter()
-                          listener: endReturnStatement(true, return, ;)
-                          inGenerator()
-                    notEofOrValue(}, final)
-                    parseStatement(;)
-                      parseStatementX(;)
-                        parseExpressionStatementOrDeclarationAfterModifiers(final, ;, null, final, null, false)
-                          looksLikeLocalFunction(()
-                          listener: beginMetadataStar(final)
+              isReservedKeyword(class)
+              indicatesMethodOrField(()
+              parseMethod(}, null, null, null, null, null, }, Instance of 'SimpleType', null, class, DeclarationKind.Class, WrapperClass, true)
+                listener: beginMethod(null, null, null, null, null, class)
+                listener: handleIdentifier(int, typeReference)
+                listener: handleNoTypeArguments(class)
+                listener: handleType(int, null)
+                ensureIdentifierPotentiallyRecovered(int, methodDeclaration, true)
+                  reportRecoverableErrorWithToken(class, Instance of 'Template<(Token) => Message>')
+                    listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'class'., null, {token: class}], class, class)
+                  listener: handleIdentifier(class, methodDeclaration)
+                parseQualifiedRestOpt(class, methodDeclarationContinuation)
+                parseMethodTypeVar(class)
+                  listener: handleNoTypeVariables(()
+                parseGetterOrFormalParameters(class, class, false, MemberKind.NonStaticMethod)
+                  parseFormalParameters(class, MemberKind.NonStaticMethod)
+                    parseFormalParametersRest((, MemberKind.NonStaticMethod)
+                      listener: beginFormalParameters((, MemberKind.NonStaticMethod)
+                      parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+                        parseMetadataStar(()
+                          listener: beginMetadataStar(int)
                           listener: endMetadataStar(0)
-                          listener: handleNoType(final)
-                          listener: beginVariablesDeclaration((, null, final)
-                          parseVariablesDeclarationRest(final, true)
-                            parseOptionallyInitializedIdentifier(final)
-                              ensureIdentifier(final, localVariableDeclaration)
-                                reportRecoverableErrorWithToken((, Instance of 'Template<(Token) => Message>')
-                                  listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}], (, ()
-                                rewriter()
-                                listener: handleIdentifier(, localVariableDeclaration)
-                              listener: beginInitializedIdentifier()
-                              parseVariableInitializerOpt()
-                                listener: handleNoVariableInitializer(x)
-                              listener: endInitializedIdentifier()
-                            ensureSemicolon()
-                              reportRecoverableError(, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
-                                listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], x, x)
-                              rewriter()
-                            listener: endVariablesDeclaration(1, ;)
-                    notEofOrValue(}, x)
-                    parseStatement(;)
-                      parseStatementX(;)
+                        listener: beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+                        listener: handleIdentifier(int, typeReference)
+                        listener: handleNoTypeArguments(x)
+                        listener: handleType(int, null)
+                        ensureIdentifier(int, formalParameterDeclaration)
+                          listener: handleIdentifier(x, formalParameterDeclaration)
+                        listener: handleFormalParameterWithoutValue())
+                        listener: endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+                      listener: endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
+                parseInitializersOpt())
+                  listener: handleNoInitializers()
+                parseAsyncModifierOpt())
+                  listener: handleAsyncModifier(null, null)
+                  inPlainSync()
+                inPlainSync()
+                parseFunctionBody(), false, true)
+                  listener: beginBlockFunctionBody({)
+                  notEofOrValue(}, if)
+                  parseStatement({)
+                    parseStatementX({)
+                      parseIfStatement({)
+                        listener: beginIfStatement(if)
+                        ensureParenthesizedCondition(if)
+                          parseExpressionInParenthesisRest(()
+                            parseExpression(()
+                              parsePrecedenceExpression((, 1, true)
+                                parseUnaryExpression((, true)
+                                  parsePrimary((, expression)
+                                    parseSendOrFunctionLiteral((, expression)
+                                      parseSend((, expression)
+                                        ensureIdentifier((, expression)
+                                          listener: handleIdentifier(x, expression)
+                                        listener: handleNoTypeArguments(==)
+                                        parseArgumentsOpt(x)
+                                          listener: handleNoArguments(==)
+                                        listener: handleSend(x, ==)
+                                listener: beginBinaryExpression(==)
+                                parsePrecedenceExpression(==, 8, true)
+                                  parseUnaryExpression(==, true)
+                                    parsePrimary(==, expression)
+                                      parseLiteralInt(==)
+                                        listener: handleLiteralInt(0)
+                                listener: endBinaryExpression(==)
+                            ensureCloseParen(0, ()
+                          listener: handleParenthesizedCondition(()
+                        listener: beginThenStatement(return)
+                        parseStatement())
+                          parseStatementX())
+                            parseReturnStatement())
+                              listener: beginReturnStatement(return)
+                              parseExpression(return)
+                                parsePrecedenceExpression(return, 1, true)
+                                  parseUnaryExpression(return, true)
+                                    parsePrimary(return, expression)
+                                      parseLiteralInt(return)
+                                        listener: handleLiteralInt(42)
+                              ensureSemicolon(42)
+                              listener: endReturnStatement(true, return, ;)
+                              inGenerator()
+                        listener: endThenStatement(;)
+                        listener: endIfStatement(if, null)
+                  notEofOrValue(}, return)
+                  parseStatement(;)
+                    parseStatementX(;)
+                      parseReturnStatement(;)
+                        listener: beginReturnStatement(return)
+                        parseExpression(return)
+                          parsePrecedenceExpression(return, 1, true)
+                            parseUnaryExpression(return, true)
+                              parsePrimary(return, expression)
+                                inPlainSync()
+                                parseSend(return, expression)
+                                  ensureIdentifier(return, expression)
+                                    reportRecoverableErrorWithToken(class, Instance of 'Template<(Token) => Message>')
+                                      listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'class'., null, {token: class}], class, class)
+                                    listener: handleIdentifier(class, expression)
+                                  listener: handleNoTypeArguments(()
+                                  parseArgumentsOpt(class)
+                                    parseArguments(class)
+                                      parseArgumentsRest(()
+                                        listener: beginArguments(()
+                                        parseExpression(()
+                                          parsePrecedenceExpression((, 1, true)
+                                            parseUnaryExpression((, true)
+                                              parsePrimary((, expression)
+                                                parseSendOrFunctionLiteral((, expression)
+                                                  parseSend((, expression)
+                                                    ensureIdentifier((, expression)
+                                                      listener: handleIdentifier(x, expression)
+                                                    listener: handleNoTypeArguments(-)
+                                                    parseArgumentsOpt(x)
+                                                      listener: handleNoArguments(-)
+                                                    listener: handleSend(x, -)
+                                            listener: beginBinaryExpression(-)
+                                            parsePrecedenceExpression(-, 14, true)
+                                              parseUnaryExpression(-, true)
+                                                parsePrimary(-, expression)
+                                                  parseLiteralInt(-)
+                                                    listener: handleLiteralInt(1)
+                                            listener: endBinaryExpression(-)
+                                        listener: endArguments(1, (, ))
+                                  listener: handleSend(class, +)
+                            listener: beginBinaryExpression(+)
+                            parsePrecedenceExpression(+, 14, true)
+                              parseUnaryExpression(+, true)
+                                parsePrimary(+, expression)
+                                  parseLiteralInt(+)
+                                    listener: handleLiteralInt(1)
+                            listener: endBinaryExpression(+)
+                        ensureSemicolon(1)
+                        listener: endReturnStatement(true, return, ;)
+                        inGenerator()
+                  notEofOrValue(}, })
+                  listener: endBlockFunctionBody(2, {, })
+                listener: endClassMethod(null, int, (, null, })
+              listener: endMember()
+            notEofOrValue(}, int)
+            parseClassOrMixinOrExtensionMemberImpl(}, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(})
+                listener: beginMetadataStar(int)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              isReservedKeyword(const)
+              indicatesMethodOrField(()
+              parseMethod(}, null, null, null, null, null, }, Instance of 'SimpleType', null, const, DeclarationKind.Class, WrapperClass, true)
+                listener: beginMethod(null, null, null, null, null, const)
+                listener: handleIdentifier(int, typeReference)
+                listener: handleNoTypeArguments(const)
+                listener: handleType(int, null)
+                ensureIdentifierPotentiallyRecovered(int, methodDeclaration, true)
+                  reportRecoverableErrorWithToken(const, Instance of 'Template<(Token) => Message>')
+                    listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'const'., null, {token: const}], const, const)
+                  listener: handleIdentifier(const, methodDeclaration)
+                parseQualifiedRestOpt(const, methodDeclarationContinuation)
+                parseMethodTypeVar(const)
+                  listener: handleNoTypeVariables(()
+                parseGetterOrFormalParameters(const, const, false, MemberKind.NonStaticMethod)
+                  parseFormalParameters(const, MemberKind.NonStaticMethod)
+                    parseFormalParametersRest((, MemberKind.NonStaticMethod)
+                      listener: beginFormalParameters((, MemberKind.NonStaticMethod)
+                      parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+                        parseMetadataStar(()
+                          listener: beginMetadataStar(int)
+                          listener: endMetadataStar(0)
+                        listener: beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+                        listener: handleIdentifier(int, typeReference)
+                        listener: handleNoTypeArguments(x)
+                        listener: handleType(int, null)
+                        ensureIdentifier(int, formalParameterDeclaration)
+                          listener: handleIdentifier(x, formalParameterDeclaration)
+                        listener: handleFormalParameterWithoutValue())
+                        listener: endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+                      listener: endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
+                parseInitializersOpt())
+                  listener: handleNoInitializers()
+                parseAsyncModifierOpt())
+                  listener: handleAsyncModifier(null, null)
+                  inPlainSync()
+                inPlainSync()
+                parseFunctionBody(), false, true)
+                  listener: beginBlockFunctionBody({)
+                  notEofOrValue(}, if)
+                  parseStatement({)
+                    parseStatementX({)
+                      parseIfStatement({)
+                        listener: beginIfStatement(if)
+                        ensureParenthesizedCondition(if)
+                          parseExpressionInParenthesisRest(()
+                            parseExpression(()
+                              parsePrecedenceExpression((, 1, true)
+                                parseUnaryExpression((, true)
+                                  parsePrimary((, expression)
+                                    parseSendOrFunctionLiteral((, expression)
+                                      parseSend((, expression)
+                                        ensureIdentifier((, expression)
+                                          listener: handleIdentifier(x, expression)
+                                        listener: handleNoTypeArguments(==)
+                                        parseArgumentsOpt(x)
+                                          listener: handleNoArguments(==)
+                                        listener: handleSend(x, ==)
+                                listener: beginBinaryExpression(==)
+                                parsePrecedenceExpression(==, 8, true)
+                                  parseUnaryExpression(==, true)
+                                    parsePrimary(==, expression)
+                                      parseLiteralInt(==)
+                                        listener: handleLiteralInt(0)
+                                listener: endBinaryExpression(==)
+                            ensureCloseParen(0, ()
+                          listener: handleParenthesizedCondition(()
+                        listener: beginThenStatement(return)
+                        parseStatement())
+                          parseStatementX())
+                            parseReturnStatement())
+                              listener: beginReturnStatement(return)
+                              parseExpression(return)
+                                parsePrecedenceExpression(return, 1, true)
+                                  parseUnaryExpression(return, true)
+                                    parsePrimary(return, expression)
+                                      parseLiteralInt(return)
+                                        listener: handleLiteralInt(42)
+                              ensureSemicolon(42)
+                              listener: endReturnStatement(true, return, ;)
+                              inGenerator()
+                        listener: endThenStatement(;)
+                        listener: endIfStatement(if, null)
+                  notEofOrValue(}, return)
+                  parseStatement(;)
+                    parseStatementX(;)
+                      parseReturnStatement(;)
+                        listener: beginReturnStatement(return)
+                        parseExpression(return)
+                          parsePrecedenceExpression(return, 1, true)
+                            parseUnaryExpression(return, true)
+                              parsePrimary(return, expression)
+                                parseConstExpression(return)
+                                  listener: beginConstExpression(const)
+                                  parseConstructorReference(const, null)
+                                    ensureIdentifier(const, constructorReference)
+                                      insertSyntheticIdentifier(const, constructorReference, message: Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}], messageOnToken: null)
+                                        reportRecoverableError((, Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}])
+                                          listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}], (, ()
+                                        rewriter()
+                                      listener: handleIdentifier(, constructorReference)
+                                    listener: beginConstructorReference()
+                                    parseQualifiedRestOpt(, constructorReferenceContinuation)
+                                    listener: handleNoTypeArguments(()
+                                    listener: handleNoConstructorReferenceContinuationAfterTypeArguments(()
+                                    listener: endConstructorReference(, null, ()
+                                  parseConstructorInvocationArguments()
+                                    parseArgumentsRest(()
+                                      listener: beginArguments(()
+                                      parseExpression(()
+                                        parsePrecedenceExpression((, 1, true)
+                                          parseUnaryExpression((, true)
+                                            parsePrimary((, expression)
+                                              parseSendOrFunctionLiteral((, expression)
+                                                parseSend((, expression)
+                                                  ensureIdentifier((, expression)
+                                                    listener: handleIdentifier(x, expression)
+                                                  listener: handleNoTypeArguments(-)
+                                                  parseArgumentsOpt(x)
+                                                    listener: handleNoArguments(-)
+                                                  listener: handleSend(x, -)
+                                          listener: beginBinaryExpression(-)
+                                          parsePrecedenceExpression(-, 14, true)
+                                            parseUnaryExpression(-, true)
+                                              parsePrimary(-, expression)
+                                                parseLiteralInt(-)
+                                                  listener: handleLiteralInt(1)
+                                          listener: endBinaryExpression(-)
+                                      listener: endArguments(1, (, ))
+                                  listener: endConstExpression(const)
+                            listener: beginBinaryExpression(+)
+                            parsePrecedenceExpression(+, 14, true)
+                              parseUnaryExpression(+, true)
+                                parsePrimary(+, expression)
+                                  parseLiteralInt(+)
+                                    listener: handleLiteralInt(1)
+                            listener: endBinaryExpression(+)
+                        ensureSemicolon(1)
+                        listener: endReturnStatement(true, return, ;)
+                        inGenerator()
+                  notEofOrValue(}, })
+                  listener: endBlockFunctionBody(2, {, })
+                listener: endClassMethod(null, int, (, null, })
+              listener: endMember()
+            notEofOrValue(}, int)
+            parseClassOrMixinOrExtensionMemberImpl(}, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(})
+                listener: beginMetadataStar(int)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              isReservedKeyword(continue)
+              indicatesMethodOrField(()
+              parseMethod(}, null, null, null, null, null, }, Instance of 'SimpleType', null, continue, DeclarationKind.Class, WrapperClass, true)
+                listener: beginMethod(null, null, null, null, null, continue)
+                listener: handleIdentifier(int, typeReference)
+                listener: handleNoTypeArguments(continue)
+                listener: handleType(int, null)
+                ensureIdentifierPotentiallyRecovered(int, methodDeclaration, true)
+                  reportRecoverableErrorWithToken(continue, Instance of 'Template<(Token) => Message>')
+                    listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'continue'., null, {token: continue}], continue, continue)
+                  listener: handleIdentifier(continue, methodDeclaration)
+                parseQualifiedRestOpt(continue, methodDeclarationContinuation)
+                parseMethodTypeVar(continue)
+                  listener: handleNoTypeVariables(()
+                parseGetterOrFormalParameters(continue, continue, false, MemberKind.NonStaticMethod)
+                  parseFormalParameters(continue, MemberKind.NonStaticMethod)
+                    parseFormalParametersRest((, MemberKind.NonStaticMethod)
+                      listener: beginFormalParameters((, MemberKind.NonStaticMethod)
+                      parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+                        parseMetadataStar(()
+                          listener: beginMetadataStar(int)
+                          listener: endMetadataStar(0)
+                        listener: beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+                        listener: handleIdentifier(int, typeReference)
+                        listener: handleNoTypeArguments(x)
+                        listener: handleType(int, null)
+                        ensureIdentifier(int, formalParameterDeclaration)
+                          listener: handleIdentifier(x, formalParameterDeclaration)
+                        listener: handleFormalParameterWithoutValue())
+                        listener: endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+                      listener: endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
+                parseInitializersOpt())
+                  listener: handleNoInitializers()
+                parseAsyncModifierOpt())
+                  listener: handleAsyncModifier(null, null)
+                  inPlainSync()
+                inPlainSync()
+                parseFunctionBody(), false, true)
+                  listener: beginBlockFunctionBody({)
+                  notEofOrValue(}, if)
+                  parseStatement({)
+                    parseStatementX({)
+                      parseIfStatement({)
+                        listener: beginIfStatement(if)
+                        ensureParenthesizedCondition(if)
+                          parseExpressionInParenthesisRest(()
+                            parseExpression(()
+                              parsePrecedenceExpression((, 1, true)
+                                parseUnaryExpression((, true)
+                                  parsePrimary((, expression)
+                                    parseSendOrFunctionLiteral((, expression)
+                                      parseSend((, expression)
+                                        ensureIdentifier((, expression)
+                                          listener: handleIdentifier(x, expression)
+                                        listener: handleNoTypeArguments(==)
+                                        parseArgumentsOpt(x)
+                                          listener: handleNoArguments(==)
+                                        listener: handleSend(x, ==)
+                                listener: beginBinaryExpression(==)
+                                parsePrecedenceExpression(==, 8, true)
+                                  parseUnaryExpression(==, true)
+                                    parsePrimary(==, expression)
+                                      parseLiteralInt(==)
+                                        listener: handleLiteralInt(0)
+                                listener: endBinaryExpression(==)
+                            ensureCloseParen(0, ()
+                          listener: handleParenthesizedCondition(()
+                        listener: beginThenStatement(return)
+                        parseStatement())
+                          parseStatementX())
+                            parseReturnStatement())
+                              listener: beginReturnStatement(return)
+                              parseExpression(return)
+                                parsePrecedenceExpression(return, 1, true)
+                                  parseUnaryExpression(return, true)
+                                    parsePrimary(return, expression)
+                                      parseLiteralInt(return)
+                                        listener: handleLiteralInt(42)
+                              ensureSemicolon(42)
+                              listener: endReturnStatement(true, return, ;)
+                              inGenerator()
+                        listener: endThenStatement(;)
+                        listener: endIfStatement(if, null)
+                  notEofOrValue(}, return)
+                  parseStatement(;)
+                    parseStatementX(;)
+                      parseReturnStatement(;)
+                        listener: beginReturnStatement(return)
+                        parseExpression(return)
+                          parsePrecedenceExpression(return, 1, true)
+                            parseUnaryExpression(return, true)
+                              parsePrimary(return, expression)
+                                inPlainSync()
+                                parseSend(return, expression)
+                                  ensureIdentifier(return, expression)
+                                    reportRecoverableErrorWithToken(continue, Instance of 'Template<(Token) => Message>')
+                                      listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'continue'., null, {token: continue}], continue, continue)
+                                    rewriter()
+                                    listener: handleIdentifier(, expression)
+                                  listener: handleNoTypeArguments(continue)
+                                  parseArgumentsOpt()
+                                    listener: handleNoArguments(continue)
+                                  listener: handleSend(, continue)
+                        ensureSemicolon()
+                          reportRecoverableError(, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+                            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], continue, continue)
+                          rewriter()
+                        listener: endReturnStatement(true, return, ;)
+                        inGenerator()
+                  notEofOrValue(}, continue)
+                  parseStatement(;)
+                    parseStatementX(;)
+                      parseContinueStatement(;)
+                        isContinueAllowed()
+                        reportRecoverableError(continue, ContinueOutsideOfLoop)
+                          listener: handleRecoverableError(ContinueOutsideOfLoop, continue, continue)
+                        ensureSemicolon(continue)
+                          reportRecoverableError(continue, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+                            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], continue, continue)
+                          rewriter()
+                        listener: handleContinueStatement(false, continue, ;)
+                  notEofOrValue(}, ()
+                  parseStatement(;)
+                    parseStatementX(;)
+                      parseExpressionStatementOrDeclaration(;, false)
                         parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
-                          looksLikeLocalFunction(x)
+                          looksLikeLocalFunction(()
                           parseExpressionStatement(;)
                             parseExpression(;)
                               parsePrecedenceExpression(;, 1, true)
                                 parseUnaryExpression(;, true)
                                   parsePrimary(;, expression)
-                                    parseSendOrFunctionLiteral(;, expression)
-                                      parseSend(;, expression)
-                                        ensureIdentifier(;, expression)
-                                          listener: handleIdentifier(x, expression)
-                                        listener: handleNoTypeArguments(-)
-                                        parseArgumentsOpt(x)
-                                          listener: handleNoArguments(-)
-                                        listener: handleSend(x, -)
-                                listener: beginBinaryExpression(-)
-                                parsePrecedenceExpression(-, 14, true)
-                                  parseUnaryExpression(-, true)
-                                    parsePrimary(-, expression)
-                                      parseLiteralInt(-)
+                                    parseParenthesizedExpressionOrFunctionLiteral(;)
+                                      parseParenthesizedExpression(;)
+                                        parseExpressionInParenthesis(;)
+                                          parseExpressionInParenthesisRest(()
+                                            parseExpression(()
+                                              parsePrecedenceExpression((, 1, true)
+                                                parseUnaryExpression((, true)
+                                                  parsePrimary((, expression)
+                                                    parseSendOrFunctionLiteral((, expression)
+                                                      parseSend((, expression)
+                                                        ensureIdentifier((, expression)
+                                                          listener: handleIdentifier(x, expression)
+                                                        listener: handleNoTypeArguments(-)
+                                                        parseArgumentsOpt(x)
+                                                          listener: handleNoArguments(-)
+                                                        listener: handleSend(x, -)
+                                                listener: beginBinaryExpression(-)
+                                                parsePrecedenceExpression(-, 14, true)
+                                                  parseUnaryExpression(-, true)
+                                                    parsePrimary(-, expression)
+                                                      parseLiteralInt(-)
+                                                        listener: handleLiteralInt(1)
+                                                listener: endBinaryExpression(-)
+                                            ensureCloseParen(1, ()
+                                        listener: handleParenthesizedExpression(()
+                                listener: beginBinaryExpression(+)
+                                parsePrecedenceExpression(+, 14, true)
+                                  parseUnaryExpression(+, true)
+                                    parsePrimary(+, expression)
+                                      parseLiteralInt(+)
                                         listener: handleLiteralInt(1)
-                                listener: endBinaryExpression(-)
+                                listener: endBinaryExpression(+)
+                            ensureSemicolon(1)
+                            listener: handleExpressionStatement(;)
+                  notEofOrValue(}, })
+                  listener: endBlockFunctionBody(4, {, })
+                listener: endClassMethod(null, int, (, null, })
+              listener: endMember()
+            notEofOrValue(}, int)
+            parseClassOrMixinOrExtensionMemberImpl(}, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(})
+                listener: beginMetadataStar(int)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              isReservedKeyword(default)
+              indicatesMethodOrField(()
+              parseMethod(}, null, null, null, null, null, }, Instance of 'SimpleType', null, default, DeclarationKind.Class, WrapperClass, true)
+                listener: beginMethod(null, null, null, null, null, default)
+                listener: handleIdentifier(int, typeReference)
+                listener: handleNoTypeArguments(default)
+                listener: handleType(int, null)
+                ensureIdentifierPotentiallyRecovered(int, methodDeclaration, true)
+                  reportRecoverableErrorWithToken(default, Instance of 'Template<(Token) => Message>')
+                    listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'default'., null, {token: default}], default, default)
+                  listener: handleIdentifier(default, methodDeclaration)
+                parseQualifiedRestOpt(default, methodDeclarationContinuation)
+                parseMethodTypeVar(default)
+                  listener: handleNoTypeVariables(()
+                parseGetterOrFormalParameters(default, default, false, MemberKind.NonStaticMethod)
+                  parseFormalParameters(default, MemberKind.NonStaticMethod)
+                    parseFormalParametersRest((, MemberKind.NonStaticMethod)
+                      listener: beginFormalParameters((, MemberKind.NonStaticMethod)
+                      parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+                        parseMetadataStar(()
+                          listener: beginMetadataStar(int)
+                          listener: endMetadataStar(0)
+                        listener: beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+                        listener: handleIdentifier(int, typeReference)
+                        listener: handleNoTypeArguments(x)
+                        listener: handleType(int, null)
+                        ensureIdentifier(int, formalParameterDeclaration)
+                          listener: handleIdentifier(x, formalParameterDeclaration)
+                        listener: handleFormalParameterWithoutValue())
+                        listener: endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+                      listener: endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
+                parseInitializersOpt())
+                  listener: handleNoInitializers()
+                parseAsyncModifierOpt())
+                  listener: handleAsyncModifier(null, null)
+                  inPlainSync()
+                inPlainSync()
+                parseFunctionBody(), false, true)
+                  listener: beginBlockFunctionBody({)
+                  notEofOrValue(}, if)
+                  parseStatement({)
+                    parseStatementX({)
+                      parseIfStatement({)
+                        listener: beginIfStatement(if)
+                        ensureParenthesizedCondition(if)
+                          parseExpressionInParenthesisRest(()
+                            parseExpression(()
+                              parsePrecedenceExpression((, 1, true)
+                                parseUnaryExpression((, true)
+                                  parsePrimary((, expression)
+                                    parseSendOrFunctionLiteral((, expression)
+                                      parseSend((, expression)
+                                        ensureIdentifier((, expression)
+                                          listener: handleIdentifier(x, expression)
+                                        listener: handleNoTypeArguments(==)
+                                        parseArgumentsOpt(x)
+                                          listener: handleNoArguments(==)
+                                        listener: handleSend(x, ==)
+                                listener: beginBinaryExpression(==)
+                                parsePrecedenceExpression(==, 8, true)
+                                  parseUnaryExpression(==, true)
+                                    parsePrimary(==, expression)
+                                      parseLiteralInt(==)
+                                        listener: handleLiteralInt(0)
+                                listener: endBinaryExpression(==)
+                            ensureCloseParen(0, ()
+                          listener: handleParenthesizedCondition(()
+                        listener: beginThenStatement(return)
+                        parseStatement())
+                          parseStatementX())
+                            parseReturnStatement())
+                              listener: beginReturnStatement(return)
+                              parseExpression(return)
+                                parsePrecedenceExpression(return, 1, true)
+                                  parseUnaryExpression(return, true)
+                                    parsePrimary(return, expression)
+                                      parseLiteralInt(return)
+                                        listener: handleLiteralInt(42)
+                              ensureSemicolon(42)
+                              listener: endReturnStatement(true, return, ;)
+                              inGenerator()
+                        listener: endThenStatement(;)
+                        listener: endIfStatement(if, null)
+                  notEofOrValue(}, return)
+                  parseStatement(;)
+                    parseStatementX(;)
+                      parseReturnStatement(;)
+                        listener: beginReturnStatement(return)
+                        parseExpression(return)
+                          parsePrecedenceExpression(return, 1, true)
+                            parseUnaryExpression(return, true)
+                              parsePrimary(return, expression)
+                                inPlainSync()
+                                parseSend(return, expression)
+                                  ensureIdentifier(return, expression)
+                                    reportRecoverableErrorWithToken(default, Instance of 'Template<(Token) => Message>')
+                                      listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'default'., null, {token: default}], default, default)
+                                    listener: handleIdentifier(default, expression)
+                                  listener: handleNoTypeArguments(()
+                                  parseArgumentsOpt(default)
+                                    parseArguments(default)
+                                      parseArgumentsRest(()
+                                        listener: beginArguments(()
+                                        parseExpression(()
+                                          parsePrecedenceExpression((, 1, true)
+                                            parseUnaryExpression((, true)
+                                              parsePrimary((, expression)
+                                                parseSendOrFunctionLiteral((, expression)
+                                                  parseSend((, expression)
+                                                    ensureIdentifier((, expression)
+                                                      listener: handleIdentifier(x, expression)
+                                                    listener: handleNoTypeArguments(-)
+                                                    parseArgumentsOpt(x)
+                                                      listener: handleNoArguments(-)
+                                                    listener: handleSend(x, -)
+                                            listener: beginBinaryExpression(-)
+                                            parsePrecedenceExpression(-, 14, true)
+                                              parseUnaryExpression(-, true)
+                                                parsePrimary(-, expression)
+                                                  parseLiteralInt(-)
+                                                    listener: handleLiteralInt(1)
+                                            listener: endBinaryExpression(-)
+                                        listener: endArguments(1, (, ))
+                                  listener: handleSend(default, +)
+                            listener: beginBinaryExpression(+)
+                            parsePrecedenceExpression(+, 14, true)
+                              parseUnaryExpression(+, true)
+                                parsePrimary(+, expression)
+                                  parseLiteralInt(+)
+                                    listener: handleLiteralInt(1)
+                            listener: endBinaryExpression(+)
+                        ensureSemicolon(1)
+                        listener: endReturnStatement(true, return, ;)
+                        inGenerator()
+                  notEofOrValue(}, })
+                  listener: endBlockFunctionBody(2, {, })
+                listener: endClassMethod(null, int, (, null, })
+              listener: endMember()
+            notEofOrValue(}, int)
+            parseClassOrMixinOrExtensionMemberImpl(}, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(})
+                listener: beginMetadataStar(int)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              isReservedKeyword(do)
+              indicatesMethodOrField(()
+              parseMethod(}, null, null, null, null, null, }, Instance of 'SimpleType', null, do, DeclarationKind.Class, WrapperClass, true)
+                listener: beginMethod(null, null, null, null, null, do)
+                listener: handleIdentifier(int, typeReference)
+                listener: handleNoTypeArguments(do)
+                listener: handleType(int, null)
+                ensureIdentifierPotentiallyRecovered(int, methodDeclaration, true)
+                  reportRecoverableErrorWithToken(do, Instance of 'Template<(Token) => Message>')
+                    listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'do'., null, {token: do}], do, do)
+                  listener: handleIdentifier(do, methodDeclaration)
+                parseQualifiedRestOpt(do, methodDeclarationContinuation)
+                parseMethodTypeVar(do)
+                  listener: handleNoTypeVariables(()
+                parseGetterOrFormalParameters(do, do, false, MemberKind.NonStaticMethod)
+                  parseFormalParameters(do, MemberKind.NonStaticMethod)
+                    parseFormalParametersRest((, MemberKind.NonStaticMethod)
+                      listener: beginFormalParameters((, MemberKind.NonStaticMethod)
+                      parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+                        parseMetadataStar(()
+                          listener: beginMetadataStar(int)
+                          listener: endMetadataStar(0)
+                        listener: beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+                        listener: handleIdentifier(int, typeReference)
+                        listener: handleNoTypeArguments(x)
+                        listener: handleType(int, null)
+                        ensureIdentifier(int, formalParameterDeclaration)
+                          listener: handleIdentifier(x, formalParameterDeclaration)
+                        listener: handleFormalParameterWithoutValue())
+                        listener: endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+                      listener: endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
+                parseInitializersOpt())
+                  listener: handleNoInitializers()
+                parseAsyncModifierOpt())
+                  listener: handleAsyncModifier(null, null)
+                  inPlainSync()
+                inPlainSync()
+                parseFunctionBody(), false, true)
+                  listener: beginBlockFunctionBody({)
+                  notEofOrValue(}, if)
+                  parseStatement({)
+                    parseStatementX({)
+                      parseIfStatement({)
+                        listener: beginIfStatement(if)
+                        ensureParenthesizedCondition(if)
+                          parseExpressionInParenthesisRest(()
+                            parseExpression(()
+                              parsePrecedenceExpression((, 1, true)
+                                parseUnaryExpression((, true)
+                                  parsePrimary((, expression)
+                                    parseSendOrFunctionLiteral((, expression)
+                                      parseSend((, expression)
+                                        ensureIdentifier((, expression)
+                                          listener: handleIdentifier(x, expression)
+                                        listener: handleNoTypeArguments(==)
+                                        parseArgumentsOpt(x)
+                                          listener: handleNoArguments(==)
+                                        listener: handleSend(x, ==)
+                                listener: beginBinaryExpression(==)
+                                parsePrecedenceExpression(==, 8, true)
+                                  parseUnaryExpression(==, true)
+                                    parsePrimary(==, expression)
+                                      parseLiteralInt(==)
+                                        listener: handleLiteralInt(0)
+                                listener: endBinaryExpression(==)
+                            ensureCloseParen(0, ()
+                          listener: handleParenthesizedCondition(()
+                        listener: beginThenStatement(return)
+                        parseStatement())
+                          parseStatementX())
+                            parseReturnStatement())
+                              listener: beginReturnStatement(return)
+                              parseExpression(return)
+                                parsePrecedenceExpression(return, 1, true)
+                                  parseUnaryExpression(return, true)
+                                    parsePrimary(return, expression)
+                                      parseLiteralInt(return)
+                                        listener: handleLiteralInt(42)
+                              ensureSemicolon(42)
+                              listener: endReturnStatement(true, return, ;)
+                              inGenerator()
+                        listener: endThenStatement(;)
+                        listener: endIfStatement(if, null)
+                  notEofOrValue(}, return)
+                  parseStatement(;)
+                    parseStatementX(;)
+                      parseReturnStatement(;)
+                        listener: beginReturnStatement(return)
+                        parseExpression(return)
+                          parsePrecedenceExpression(return, 1, true)
+                            parseUnaryExpression(return, true)
+                              parsePrimary(return, expression)
+                                inPlainSync()
+                                parseSend(return, expression)
+                                  ensureIdentifier(return, expression)
+                                    reportRecoverableErrorWithToken(do, Instance of 'Template<(Token) => Message>')
+                                      listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'do'., null, {token: do}], do, do)
+                                    rewriter()
+                                    listener: handleIdentifier(, expression)
+                                  listener: handleNoTypeArguments(do)
+                                  parseArgumentsOpt()
+                                    listener: handleNoArguments(do)
+                                  listener: handleSend(, do)
+                        ensureSemicolon()
+                          reportRecoverableError(, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+                            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], do, do)
+                          rewriter()
+                        listener: endReturnStatement(true, return, ;)
+                        inGenerator()
+                  notEofOrValue(}, do)
+                  parseStatement(;)
+                    parseStatementX(;)
+                      parseDoWhileStatement(;)
+                        listener: beginDoWhileStatement(do)
+                        listener: beginDoWhileStatementBody(()
+                        parseStatement(do)
+                          parseStatementX(do)
+                            parseExpressionStatementOrDeclaration(do, false)
+                              parseExpressionStatementOrDeclarationAfterModifiers(do, do, null, null, null, false)
+                                looksLikeLocalFunction(()
+                                parseExpressionStatement(do)
+                                  parseExpression(do)
+                                    parsePrecedenceExpression(do, 1, true)
+                                      parseUnaryExpression(do, true)
+                                        parsePrimary(do, expression)
+                                          parseParenthesizedExpressionOrFunctionLiteral(do)
+                                            parseParenthesizedExpression(do)
+                                              parseExpressionInParenthesis(do)
+                                                parseExpressionInParenthesisRest(()
+                                                  parseExpression(()
+                                                    parsePrecedenceExpression((, 1, true)
+                                                      parseUnaryExpression((, true)
+                                                        parsePrimary((, expression)
+                                                          parseSendOrFunctionLiteral((, expression)
+                                                            parseSend((, expression)
+                                                              ensureIdentifier((, expression)
+                                                                listener: handleIdentifier(x, expression)
+                                                              listener: handleNoTypeArguments(-)
+                                                              parseArgumentsOpt(x)
+                                                                listener: handleNoArguments(-)
+                                                              listener: handleSend(x, -)
+                                                      listener: beginBinaryExpression(-)
+                                                      parsePrecedenceExpression(-, 14, true)
+                                                        parseUnaryExpression(-, true)
+                                                          parsePrimary(-, expression)
+                                                            parseLiteralInt(-)
+                                                              listener: handleLiteralInt(1)
+                                                      listener: endBinaryExpression(-)
+                                                  ensureCloseParen(1, ()
+                                              listener: handleParenthesizedExpression(()
+                                      listener: beginBinaryExpression(+)
+                                      parsePrecedenceExpression(+, 14, true)
+                                        parseUnaryExpression(+, true)
+                                          parsePrimary(+, expression)
+                                            parseLiteralInt(+)
+                                              listener: handleLiteralInt(1)
+                                      listener: endBinaryExpression(+)
+                                  ensureSemicolon(1)
+                                  listener: handleExpressionStatement(;)
+                        listener: endDoWhileStatementBody(;)
+                        reportRecoverableError(}, Message[ExpectedButGot, Expected 'while' before this., null, {string: while}])
+                          listener: handleRecoverableError(Message[ExpectedButGot, Expected 'while' before this., null, {string: while}], }, })
+                        rewriter()
+                        ensureParenthesizedCondition(while)
+                          reportRecoverableError(}, Message[ExpectedToken, Expected to find '('., null, {string: (}])
+                            listener: handleRecoverableError(Message[ExpectedToken, Expected to find '('., null, {string: (}], }, })
+                          rewriter()
+                          parseExpressionInParenthesisRest(()
+                            parseExpression(()
+                              parsePrecedenceExpression((, 1, true)
+                                parseUnaryExpression((, true)
+                                  parsePrimary((, expression)
+                                    parseSend((, expression)
+                                      ensureIdentifier((, expression)
+                                        reportRecoverableErrorWithToken(), Instance of 'Template<(Token) => Message>')
+                                          listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '}'., null, {token: }}], }, })
+                                        rewriter()
+                                        listener: handleIdentifier(, expression)
+                                      listener: handleNoTypeArguments())
+                                      parseArgumentsOpt()
+                                        listener: handleNoArguments())
+                                      listener: handleSend(, ))
+                            ensureCloseParen(, ()
+                          listener: handleParenthesizedCondition(()
+                        ensureSemicolon())
+                          reportRecoverableError(, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+                            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], }, })
+                          rewriter()
+                        listener: endDoWhileStatement(do, while, ;)
+                  notEofOrValue(}, })
+                  listener: endBlockFunctionBody(3, {, })
+                listener: endClassMethod(null, int, (, null, })
+              listener: endMember()
+            notEofOrValue(}, int)
+            parseClassOrMixinOrExtensionMemberImpl(}, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(})
+                listener: beginMetadataStar(int)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              isReservedKeyword(else)
+              indicatesMethodOrField(()
+              parseMethod(}, null, null, null, null, null, }, Instance of 'SimpleType', null, else, DeclarationKind.Class, WrapperClass, true)
+                listener: beginMethod(null, null, null, null, null, else)
+                listener: handleIdentifier(int, typeReference)
+                listener: handleNoTypeArguments(else)
+                listener: handleType(int, null)
+                ensureIdentifierPotentiallyRecovered(int, methodDeclaration, true)
+                  reportRecoverableErrorWithToken(else, Instance of 'Template<(Token) => Message>')
+                    listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'else'., null, {token: else}], else, else)
+                  listener: handleIdentifier(else, methodDeclaration)
+                parseQualifiedRestOpt(else, methodDeclarationContinuation)
+                parseMethodTypeVar(else)
+                  listener: handleNoTypeVariables(()
+                parseGetterOrFormalParameters(else, else, false, MemberKind.NonStaticMethod)
+                  parseFormalParameters(else, MemberKind.NonStaticMethod)
+                    parseFormalParametersRest((, MemberKind.NonStaticMethod)
+                      listener: beginFormalParameters((, MemberKind.NonStaticMethod)
+                      parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+                        parseMetadataStar(()
+                          listener: beginMetadataStar(int)
+                          listener: endMetadataStar(0)
+                        listener: beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+                        listener: handleIdentifier(int, typeReference)
+                        listener: handleNoTypeArguments(x)
+                        listener: handleType(int, null)
+                        ensureIdentifier(int, formalParameterDeclaration)
+                          listener: handleIdentifier(x, formalParameterDeclaration)
+                        listener: handleFormalParameterWithoutValue())
+                        listener: endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+                      listener: endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
+                parseInitializersOpt())
+                  listener: handleNoInitializers()
+                parseAsyncModifierOpt())
+                  listener: handleAsyncModifier(null, null)
+                  inPlainSync()
+                inPlainSync()
+                parseFunctionBody(), false, true)
+                  listener: beginBlockFunctionBody({)
+                  notEofOrValue(}, if)
+                  parseStatement({)
+                    parseStatementX({)
+                      parseIfStatement({)
+                        listener: beginIfStatement(if)
+                        ensureParenthesizedCondition(if)
+                          parseExpressionInParenthesisRest(()
+                            parseExpression(()
+                              parsePrecedenceExpression((, 1, true)
+                                parseUnaryExpression((, true)
+                                  parsePrimary((, expression)
+                                    parseSendOrFunctionLiteral((, expression)
+                                      parseSend((, expression)
+                                        ensureIdentifier((, expression)
+                                          listener: handleIdentifier(x, expression)
+                                        listener: handleNoTypeArguments(==)
+                                        parseArgumentsOpt(x)
+                                          listener: handleNoArguments(==)
+                                        listener: handleSend(x, ==)
+                                listener: beginBinaryExpression(==)
+                                parsePrecedenceExpression(==, 8, true)
+                                  parseUnaryExpression(==, true)
+                                    parsePrimary(==, expression)
+                                      parseLiteralInt(==)
+                                        listener: handleLiteralInt(0)
+                                listener: endBinaryExpression(==)
+                            ensureCloseParen(0, ()
+                          listener: handleParenthesizedCondition(()
+                        listener: beginThenStatement(return)
+                        parseStatement())
+                          parseStatementX())
+                            parseReturnStatement())
+                              listener: beginReturnStatement(return)
+                              parseExpression(return)
+                                parsePrecedenceExpression(return, 1, true)
+                                  parseUnaryExpression(return, true)
+                                    parsePrimary(return, expression)
+                                      parseLiteralInt(return)
+                                        listener: handleLiteralInt(42)
+                              ensureSemicolon(42)
+                              listener: endReturnStatement(true, return, ;)
+                              inGenerator()
+                        listener: endThenStatement(;)
+                        listener: endIfStatement(if, null)
+                  notEofOrValue(}, return)
+                  parseStatement(;)
+                    parseStatementX(;)
+                      parseReturnStatement(;)
+                        listener: beginReturnStatement(return)
+                        parseExpression(return)
+                          parsePrecedenceExpression(return, 1, true)
+                            parseUnaryExpression(return, true)
+                              parsePrimary(return, expression)
+                                inPlainSync()
+                                parseSend(return, expression)
+                                  ensureIdentifier(return, expression)
+                                    reportRecoverableErrorWithToken(else, Instance of 'Template<(Token) => Message>')
+                                      listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'else'., null, {token: else}], else, else)
+                                    rewriter()
+                                    listener: handleIdentifier(, expression)
+                                  listener: handleNoTypeArguments(else)
+                                  parseArgumentsOpt()
+                                    listener: handleNoArguments(else)
+                                  listener: handleSend(, else)
+                        ensureSemicolon()
+                          reportRecoverableError(, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+                            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], else, else)
+                          rewriter()
+                        listener: endReturnStatement(true, return, ;)
+                        inGenerator()
+                  notEofOrValue(}, else)
+                  parseStatement(;)
+                    parseStatementX(;)
+                      parseExpressionStatementOrDeclaration(;, false)
+                        parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+                          looksLikeLocalFunction(else)
+                          parseExpressionStatement(;)
+                            parseExpression(;)
+                              parsePrecedenceExpression(;, 1, true)
+                                parseUnaryExpression(;, true)
+                                  parsePrimary(;, expression)
+                                    inPlainSync()
+                                    parseSend(;, expression)
+                                      ensureIdentifier(;, expression)
+                                        reportRecoverableErrorWithToken(else, Instance of 'Template<(Token) => Message>')
+                                          listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'else'., null, {token: else}], else, else)
+                                        rewriter()
+                                        listener: handleIdentifier(, expression)
+                                      listener: handleNoTypeArguments(else)
+                                      parseArgumentsOpt()
+                                        listener: handleNoArguments(else)
+                                      listener: handleSend(, else)
+                            ensureSemicolon()
+                              reportRecoverableError(, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+                                listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], else, else)
+                              rewriter()
+                            listener: handleExpressionStatement(;)
+                  reportRecoverableError(;, Message[UnexpectedToken, Unexpected token ';'., null, {token: ;}])
+                    listener: handleRecoverableError(Message[UnexpectedToken, Unexpected token ';'., null, {token: ;}], else, else)
+                  notEofOrValue(}, ()
+                  parseStatement(else)
+                    parseStatementX(else)
+                      parseExpressionStatementOrDeclaration(else, false)
+                        parseExpressionStatementOrDeclarationAfterModifiers(else, else, null, null, null, false)
+                          looksLikeLocalFunction(()
+                          parseExpressionStatement(else)
+                            parseExpression(else)
+                              parsePrecedenceExpression(else, 1, true)
+                                parseUnaryExpression(else, true)
+                                  parsePrimary(else, expression)
+                                    parseParenthesizedExpressionOrFunctionLiteral(else)
+                                      parseParenthesizedExpression(else)
+                                        parseExpressionInParenthesis(else)
+                                          parseExpressionInParenthesisRest(()
+                                            parseExpression(()
+                                              parsePrecedenceExpression((, 1, true)
+                                                parseUnaryExpression((, true)
+                                                  parsePrimary((, expression)
+                                                    parseSendOrFunctionLiteral((, expression)
+                                                      parseSend((, expression)
+                                                        ensureIdentifier((, expression)
+                                                          listener: handleIdentifier(x, expression)
+                                                        listener: handleNoTypeArguments(-)
+                                                        parseArgumentsOpt(x)
+                                                          listener: handleNoArguments(-)
+                                                        listener: handleSend(x, -)
+                                                listener: beginBinaryExpression(-)
+                                                parsePrecedenceExpression(-, 14, true)
+                                                  parseUnaryExpression(-, true)
+                                                    parsePrimary(-, expression)
+                                                      parseLiteralInt(-)
+                                                        listener: handleLiteralInt(1)
+                                                listener: endBinaryExpression(-)
+                                            ensureCloseParen(1, ()
+                                        listener: handleParenthesizedExpression(()
+                                listener: beginBinaryExpression(+)
+                                parsePrecedenceExpression(+, 14, true)
+                                  parseUnaryExpression(+, true)
+                                    parsePrimary(+, expression)
+                                      parseLiteralInt(+)
+                                        listener: handleLiteralInt(1)
+                                listener: endBinaryExpression(+)
+                            ensureSemicolon(1)
+                            listener: handleExpressionStatement(;)
+                  notEofOrValue(}, })
+                  listener: endBlockFunctionBody(4, {, })
+                listener: endClassMethod(null, int, (, null, })
+              listener: endMember()
+            notEofOrValue(}, int)
+            parseClassOrMixinOrExtensionMemberImpl(}, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(})
+                listener: beginMetadataStar(int)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              isReservedKeyword(enum)
+              indicatesMethodOrField(()
+              parseMethod(}, null, null, null, null, null, }, Instance of 'SimpleType', null, enum, DeclarationKind.Class, WrapperClass, true)
+                listener: beginMethod(null, null, null, null, null, enum)
+                listener: handleIdentifier(int, typeReference)
+                listener: handleNoTypeArguments(enum)
+                listener: handleType(int, null)
+                ensureIdentifierPotentiallyRecovered(int, methodDeclaration, true)
+                  reportRecoverableErrorWithToken(enum, Instance of 'Template<(Token) => Message>')
+                    listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'enum'., null, {token: enum}], enum, enum)
+                  listener: handleIdentifier(enum, methodDeclaration)
+                parseQualifiedRestOpt(enum, methodDeclarationContinuation)
+                parseMethodTypeVar(enum)
+                  listener: handleNoTypeVariables(()
+                parseGetterOrFormalParameters(enum, enum, false, MemberKind.NonStaticMethod)
+                  parseFormalParameters(enum, MemberKind.NonStaticMethod)
+                    parseFormalParametersRest((, MemberKind.NonStaticMethod)
+                      listener: beginFormalParameters((, MemberKind.NonStaticMethod)
+                      parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+                        parseMetadataStar(()
+                          listener: beginMetadataStar(int)
+                          listener: endMetadataStar(0)
+                        listener: beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+                        listener: handleIdentifier(int, typeReference)
+                        listener: handleNoTypeArguments(x)
+                        listener: handleType(int, null)
+                        ensureIdentifier(int, formalParameterDeclaration)
+                          listener: handleIdentifier(x, formalParameterDeclaration)
+                        listener: handleFormalParameterWithoutValue())
+                        listener: endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+                      listener: endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
+                parseInitializersOpt())
+                  listener: handleNoInitializers()
+                parseAsyncModifierOpt())
+                  listener: handleAsyncModifier(null, null)
+                  inPlainSync()
+                inPlainSync()
+                parseFunctionBody(), false, true)
+                  listener: beginBlockFunctionBody({)
+                  notEofOrValue(}, if)
+                  parseStatement({)
+                    parseStatementX({)
+                      parseIfStatement({)
+                        listener: beginIfStatement(if)
+                        ensureParenthesizedCondition(if)
+                          parseExpressionInParenthesisRest(()
+                            parseExpression(()
+                              parsePrecedenceExpression((, 1, true)
+                                parseUnaryExpression((, true)
+                                  parsePrimary((, expression)
+                                    parseSendOrFunctionLiteral((, expression)
+                                      parseSend((, expression)
+                                        ensureIdentifier((, expression)
+                                          listener: handleIdentifier(x, expression)
+                                        listener: handleNoTypeArguments(==)
+                                        parseArgumentsOpt(x)
+                                          listener: handleNoArguments(==)
+                                        listener: handleSend(x, ==)
+                                listener: beginBinaryExpression(==)
+                                parsePrecedenceExpression(==, 8, true)
+                                  parseUnaryExpression(==, true)
+                                    parsePrimary(==, expression)
+                                      parseLiteralInt(==)
+                                        listener: handleLiteralInt(0)
+                                listener: endBinaryExpression(==)
+                            ensureCloseParen(0, ()
+                          listener: handleParenthesizedCondition(()
+                        listener: beginThenStatement(return)
+                        parseStatement())
+                          parseStatementX())
+                            parseReturnStatement())
+                              listener: beginReturnStatement(return)
+                              parseExpression(return)
+                                parsePrecedenceExpression(return, 1, true)
+                                  parseUnaryExpression(return, true)
+                                    parsePrimary(return, expression)
+                                      parseLiteralInt(return)
+                                        listener: handleLiteralInt(42)
+                              ensureSemicolon(42)
+                              listener: endReturnStatement(true, return, ;)
+                              inGenerator()
+                        listener: endThenStatement(;)
+                        listener: endIfStatement(if, null)
+                  notEofOrValue(}, return)
+                  parseStatement(;)
+                    parseStatementX(;)
+                      parseReturnStatement(;)
+                        listener: beginReturnStatement(return)
+                        parseExpression(return)
+                          parsePrecedenceExpression(return, 1, true)
+                            parseUnaryExpression(return, true)
+                              parsePrimary(return, expression)
+                                inPlainSync()
+                                parseSend(return, expression)
+                                  ensureIdentifier(return, expression)
+                                    reportRecoverableErrorWithToken(enum, Instance of 'Template<(Token) => Message>')
+                                      listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'enum'., null, {token: enum}], enum, enum)
+                                    listener: handleIdentifier(enum, expression)
+                                  listener: handleNoTypeArguments(()
+                                  parseArgumentsOpt(enum)
+                                    parseArguments(enum)
+                                      parseArgumentsRest(()
+                                        listener: beginArguments(()
+                                        parseExpression(()
+                                          parsePrecedenceExpression((, 1, true)
+                                            parseUnaryExpression((, true)
+                                              parsePrimary((, expression)
+                                                parseSendOrFunctionLiteral((, expression)
+                                                  parseSend((, expression)
+                                                    ensureIdentifier((, expression)
+                                                      listener: handleIdentifier(x, expression)
+                                                    listener: handleNoTypeArguments(-)
+                                                    parseArgumentsOpt(x)
+                                                      listener: handleNoArguments(-)
+                                                    listener: handleSend(x, -)
+                                            listener: beginBinaryExpression(-)
+                                            parsePrecedenceExpression(-, 14, true)
+                                              parseUnaryExpression(-, true)
+                                                parsePrimary(-, expression)
+                                                  parseLiteralInt(-)
+                                                    listener: handleLiteralInt(1)
+                                            listener: endBinaryExpression(-)
+                                        listener: endArguments(1, (, ))
+                                  listener: handleSend(enum, +)
+                            listener: beginBinaryExpression(+)
+                            parsePrecedenceExpression(+, 14, true)
+                              parseUnaryExpression(+, true)
+                                parsePrimary(+, expression)
+                                  parseLiteralInt(+)
+                                    listener: handleLiteralInt(1)
+                            listener: endBinaryExpression(+)
+                        ensureSemicolon(1)
+                        listener: endReturnStatement(true, return, ;)
+                        inGenerator()
+                  notEofOrValue(}, })
+                  listener: endBlockFunctionBody(2, {, })
+                listener: endClassMethod(null, int, (, null, })
+              listener: endMember()
+            notEofOrValue(}, int)
+            parseClassOrMixinOrExtensionMemberImpl(}, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(})
+                listener: beginMetadataStar(int)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              isReservedKeyword(extends)
+              indicatesMethodOrField(()
+              parseMethod(}, null, null, null, null, null, }, Instance of 'SimpleType', null, extends, DeclarationKind.Class, WrapperClass, true)
+                listener: beginMethod(null, null, null, null, null, extends)
+                listener: handleIdentifier(int, typeReference)
+                listener: handleNoTypeArguments(extends)
+                listener: handleType(int, null)
+                ensureIdentifierPotentiallyRecovered(int, methodDeclaration, true)
+                  reportRecoverableErrorWithToken(extends, Instance of 'Template<(Token) => Message>')
+                    listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'extends'., null, {token: extends}], extends, extends)
+                  listener: handleIdentifier(extends, methodDeclaration)
+                parseQualifiedRestOpt(extends, methodDeclarationContinuation)
+                parseMethodTypeVar(extends)
+                  listener: handleNoTypeVariables(()
+                parseGetterOrFormalParameters(extends, extends, false, MemberKind.NonStaticMethod)
+                  parseFormalParameters(extends, MemberKind.NonStaticMethod)
+                    parseFormalParametersRest((, MemberKind.NonStaticMethod)
+                      listener: beginFormalParameters((, MemberKind.NonStaticMethod)
+                      parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+                        parseMetadataStar(()
+                          listener: beginMetadataStar(int)
+                          listener: endMetadataStar(0)
+                        listener: beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+                        listener: handleIdentifier(int, typeReference)
+                        listener: handleNoTypeArguments(x)
+                        listener: handleType(int, null)
+                        ensureIdentifier(int, formalParameterDeclaration)
+                          listener: handleIdentifier(x, formalParameterDeclaration)
+                        listener: handleFormalParameterWithoutValue())
+                        listener: endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+                      listener: endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
+                parseInitializersOpt())
+                  listener: handleNoInitializers()
+                parseAsyncModifierOpt())
+                  listener: handleAsyncModifier(null, null)
+                  inPlainSync()
+                inPlainSync()
+                parseFunctionBody(), false, true)
+                  listener: beginBlockFunctionBody({)
+                  notEofOrValue(}, if)
+                  parseStatement({)
+                    parseStatementX({)
+                      parseIfStatement({)
+                        listener: beginIfStatement(if)
+                        ensureParenthesizedCondition(if)
+                          parseExpressionInParenthesisRest(()
+                            parseExpression(()
+                              parsePrecedenceExpression((, 1, true)
+                                parseUnaryExpression((, true)
+                                  parsePrimary((, expression)
+                                    parseSendOrFunctionLiteral((, expression)
+                                      parseSend((, expression)
+                                        ensureIdentifier((, expression)
+                                          listener: handleIdentifier(x, expression)
+                                        listener: handleNoTypeArguments(==)
+                                        parseArgumentsOpt(x)
+                                          listener: handleNoArguments(==)
+                                        listener: handleSend(x, ==)
+                                listener: beginBinaryExpression(==)
+                                parsePrecedenceExpression(==, 8, true)
+                                  parseUnaryExpression(==, true)
+                                    parsePrimary(==, expression)
+                                      parseLiteralInt(==)
+                                        listener: handleLiteralInt(0)
+                                listener: endBinaryExpression(==)
+                            ensureCloseParen(0, ()
+                          listener: handleParenthesizedCondition(()
+                        listener: beginThenStatement(return)
+                        parseStatement())
+                          parseStatementX())
+                            parseReturnStatement())
+                              listener: beginReturnStatement(return)
+                              parseExpression(return)
+                                parsePrecedenceExpression(return, 1, true)
+                                  parseUnaryExpression(return, true)
+                                    parsePrimary(return, expression)
+                                      parseLiteralInt(return)
+                                        listener: handleLiteralInt(42)
+                              ensureSemicolon(42)
+                              listener: endReturnStatement(true, return, ;)
+                              inGenerator()
+                        listener: endThenStatement(;)
+                        listener: endIfStatement(if, null)
+                  notEofOrValue(}, return)
+                  parseStatement(;)
+                    parseStatementX(;)
+                      parseReturnStatement(;)
+                        listener: beginReturnStatement(return)
+                        parseExpression(return)
+                          parsePrecedenceExpression(return, 1, true)
+                            parseUnaryExpression(return, true)
+                              parsePrimary(return, expression)
+                                inPlainSync()
+                                parseSend(return, expression)
+                                  ensureIdentifier(return, expression)
+                                    reportRecoverableErrorWithToken(extends, Instance of 'Template<(Token) => Message>')
+                                      listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'extends'., null, {token: extends}], extends, extends)
+                                    listener: handleIdentifier(extends, expression)
+                                  listener: handleNoTypeArguments(()
+                                  parseArgumentsOpt(extends)
+                                    parseArguments(extends)
+                                      parseArgumentsRest(()
+                                        listener: beginArguments(()
+                                        parseExpression(()
+                                          parsePrecedenceExpression((, 1, true)
+                                            parseUnaryExpression((, true)
+                                              parsePrimary((, expression)
+                                                parseSendOrFunctionLiteral((, expression)
+                                                  parseSend((, expression)
+                                                    ensureIdentifier((, expression)
+                                                      listener: handleIdentifier(x, expression)
+                                                    listener: handleNoTypeArguments(-)
+                                                    parseArgumentsOpt(x)
+                                                      listener: handleNoArguments(-)
+                                                    listener: handleSend(x, -)
+                                            listener: beginBinaryExpression(-)
+                                            parsePrecedenceExpression(-, 14, true)
+                                              parseUnaryExpression(-, true)
+                                                parsePrimary(-, expression)
+                                                  parseLiteralInt(-)
+                                                    listener: handleLiteralInt(1)
+                                            listener: endBinaryExpression(-)
+                                        listener: endArguments(1, (, ))
+                                  listener: handleSend(extends, +)
+                            listener: beginBinaryExpression(+)
+                            parsePrecedenceExpression(+, 14, true)
+                              parseUnaryExpression(+, true)
+                                parsePrimary(+, expression)
+                                  parseLiteralInt(+)
+                                    listener: handleLiteralInt(1)
+                            listener: endBinaryExpression(+)
+                        ensureSemicolon(1)
+                        listener: endReturnStatement(true, return, ;)
+                        inGenerator()
+                  notEofOrValue(}, })
+                  listener: endBlockFunctionBody(2, {, })
+                listener: endClassMethod(null, int, (, null, })
+              listener: endMember()
+            notEofOrValue(}, int)
+            parseClassOrMixinOrExtensionMemberImpl(}, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(})
+                listener: beginMetadataStar(int)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              isReservedKeyword(false)
+              indicatesMethodOrField(()
+              parseMethod(}, null, null, null, null, null, }, Instance of 'SimpleType', null, false, DeclarationKind.Class, WrapperClass, true)
+                listener: beginMethod(null, null, null, null, null, false)
+                listener: handleIdentifier(int, typeReference)
+                listener: handleNoTypeArguments(false)
+                listener: handleType(int, null)
+                ensureIdentifierPotentiallyRecovered(int, methodDeclaration, true)
+                  reportRecoverableErrorWithToken(false, Instance of 'Template<(Token) => Message>')
+                    listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'false'., null, {token: false}], false, false)
+                  listener: handleIdentifier(false, methodDeclaration)
+                parseQualifiedRestOpt(false, methodDeclarationContinuation)
+                parseMethodTypeVar(false)
+                  listener: handleNoTypeVariables(()
+                parseGetterOrFormalParameters(false, false, false, MemberKind.NonStaticMethod)
+                  parseFormalParameters(false, MemberKind.NonStaticMethod)
+                    parseFormalParametersRest((, MemberKind.NonStaticMethod)
+                      listener: beginFormalParameters((, MemberKind.NonStaticMethod)
+                      parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+                        parseMetadataStar(()
+                          listener: beginMetadataStar(int)
+                          listener: endMetadataStar(0)
+                        listener: beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+                        listener: handleIdentifier(int, typeReference)
+                        listener: handleNoTypeArguments(x)
+                        listener: handleType(int, null)
+                        ensureIdentifier(int, formalParameterDeclaration)
+                          listener: handleIdentifier(x, formalParameterDeclaration)
+                        listener: handleFormalParameterWithoutValue())
+                        listener: endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+                      listener: endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
+                parseInitializersOpt())
+                  listener: handleNoInitializers()
+                parseAsyncModifierOpt())
+                  listener: handleAsyncModifier(null, null)
+                  inPlainSync()
+                inPlainSync()
+                parseFunctionBody(), false, true)
+                  listener: beginBlockFunctionBody({)
+                  notEofOrValue(}, if)
+                  parseStatement({)
+                    parseStatementX({)
+                      parseIfStatement({)
+                        listener: beginIfStatement(if)
+                        ensureParenthesizedCondition(if)
+                          parseExpressionInParenthesisRest(()
+                            parseExpression(()
+                              parsePrecedenceExpression((, 1, true)
+                                parseUnaryExpression((, true)
+                                  parsePrimary((, expression)
+                                    parseSendOrFunctionLiteral((, expression)
+                                      parseSend((, expression)
+                                        ensureIdentifier((, expression)
+                                          listener: handleIdentifier(x, expression)
+                                        listener: handleNoTypeArguments(==)
+                                        parseArgumentsOpt(x)
+                                          listener: handleNoArguments(==)
+                                        listener: handleSend(x, ==)
+                                listener: beginBinaryExpression(==)
+                                parsePrecedenceExpression(==, 8, true)
+                                  parseUnaryExpression(==, true)
+                                    parsePrimary(==, expression)
+                                      parseLiteralInt(==)
+                                        listener: handleLiteralInt(0)
+                                listener: endBinaryExpression(==)
+                            ensureCloseParen(0, ()
+                          listener: handleParenthesizedCondition(()
+                        listener: beginThenStatement(return)
+                        parseStatement())
+                          parseStatementX())
+                            parseReturnStatement())
+                              listener: beginReturnStatement(return)
+                              parseExpression(return)
+                                parsePrecedenceExpression(return, 1, true)
+                                  parseUnaryExpression(return, true)
+                                    parsePrimary(return, expression)
+                                      parseLiteralInt(return)
+                                        listener: handleLiteralInt(42)
+                              ensureSemicolon(42)
+                              listener: endReturnStatement(true, return, ;)
+                              inGenerator()
+                        listener: endThenStatement(;)
+                        listener: endIfStatement(if, null)
+                  notEofOrValue(}, return)
+                  parseStatement(;)
+                    parseStatementX(;)
+                      parseReturnStatement(;)
+                        listener: beginReturnStatement(return)
+                        parseExpression(return)
+                          parsePrecedenceExpression(return, 1, true)
+                            parseUnaryExpression(return, true)
+                              parsePrimary(return, expression)
+                                parseLiteralBool(return)
+                                  listener: handleLiteralBool(false)
+                            parseArgumentOrIndexStar(false, Instance of 'NoTypeParamOrArg', false)
+                              listener: handleNoTypeArguments(()
+                              parseArguments(false)
+                                parseArgumentsRest(()
+                                  listener: beginArguments(()
+                                  parseExpression(()
+                                    parsePrecedenceExpression((, 1, true)
+                                      parseUnaryExpression((, true)
+                                        parsePrimary((, expression)
+                                          parseSendOrFunctionLiteral((, expression)
+                                            parseSend((, expression)
+                                              ensureIdentifier((, expression)
+                                                listener: handleIdentifier(x, expression)
+                                              listener: handleNoTypeArguments(-)
+                                              parseArgumentsOpt(x)
+                                                listener: handleNoArguments(-)
+                                              listener: handleSend(x, -)
+                                      listener: beginBinaryExpression(-)
+                                      parsePrecedenceExpression(-, 14, true)
+                                        parseUnaryExpression(-, true)
+                                          parsePrimary(-, expression)
+                                            parseLiteralInt(-)
+                                              listener: handleLiteralInt(1)
+                                      listener: endBinaryExpression(-)
+                                  listener: endArguments(1, (, ))
+                              listener: handleSend((, ))
+                            listener: beginBinaryExpression(+)
+                            parsePrecedenceExpression(+, 14, true)
+                              parseUnaryExpression(+, true)
+                                parsePrimary(+, expression)
+                                  parseLiteralInt(+)
+                                    listener: handleLiteralInt(1)
+                            listener: endBinaryExpression(+)
+                        ensureSemicolon(1)
+                        listener: endReturnStatement(true, return, ;)
+                        inGenerator()
+                  notEofOrValue(}, })
+                  listener: endBlockFunctionBody(2, {, })
+                listener: endClassMethod(null, int, (, null, })
+              listener: endMember()
+            notEofOrValue(}, int)
+            parseClassOrMixinOrExtensionMemberImpl(}, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(})
+                listener: beginMetadataStar(int)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              isReservedKeyword(final)
+              indicatesMethodOrField(()
+              parseMethod(}, null, null, null, null, null, }, Instance of 'SimpleType', null, final, DeclarationKind.Class, WrapperClass, true)
+                listener: beginMethod(null, null, null, null, null, final)
+                listener: handleIdentifier(int, typeReference)
+                listener: handleNoTypeArguments(final)
+                listener: handleType(int, null)
+                ensureIdentifierPotentiallyRecovered(int, methodDeclaration, true)
+                  reportRecoverableErrorWithToken(final, Instance of 'Template<(Token) => Message>')
+                    listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'final'., null, {token: final}], final, final)
+                  listener: handleIdentifier(final, methodDeclaration)
+                parseQualifiedRestOpt(final, methodDeclarationContinuation)
+                parseMethodTypeVar(final)
+                  listener: handleNoTypeVariables(()
+                parseGetterOrFormalParameters(final, final, false, MemberKind.NonStaticMethod)
+                  parseFormalParameters(final, MemberKind.NonStaticMethod)
+                    parseFormalParametersRest((, MemberKind.NonStaticMethod)
+                      listener: beginFormalParameters((, MemberKind.NonStaticMethod)
+                      parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+                        parseMetadataStar(()
+                          listener: beginMetadataStar(int)
+                          listener: endMetadataStar(0)
+                        listener: beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+                        listener: handleIdentifier(int, typeReference)
+                        listener: handleNoTypeArguments(x)
+                        listener: handleType(int, null)
+                        ensureIdentifier(int, formalParameterDeclaration)
+                          listener: handleIdentifier(x, formalParameterDeclaration)
+                        listener: handleFormalParameterWithoutValue())
+                        listener: endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+                      listener: endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
+                parseInitializersOpt())
+                  listener: handleNoInitializers()
+                parseAsyncModifierOpt())
+                  listener: handleAsyncModifier(null, null)
+                  inPlainSync()
+                inPlainSync()
+                parseFunctionBody(), false, true)
+                  listener: beginBlockFunctionBody({)
+                  notEofOrValue(}, if)
+                  parseStatement({)
+                    parseStatementX({)
+                      parseIfStatement({)
+                        listener: beginIfStatement(if)
+                        ensureParenthesizedCondition(if)
+                          parseExpressionInParenthesisRest(()
+                            parseExpression(()
+                              parsePrecedenceExpression((, 1, true)
+                                parseUnaryExpression((, true)
+                                  parsePrimary((, expression)
+                                    parseSendOrFunctionLiteral((, expression)
+                                      parseSend((, expression)
+                                        ensureIdentifier((, expression)
+                                          listener: handleIdentifier(x, expression)
+                                        listener: handleNoTypeArguments(==)
+                                        parseArgumentsOpt(x)
+                                          listener: handleNoArguments(==)
+                                        listener: handleSend(x, ==)
+                                listener: beginBinaryExpression(==)
+                                parsePrecedenceExpression(==, 8, true)
+                                  parseUnaryExpression(==, true)
+                                    parsePrimary(==, expression)
+                                      parseLiteralInt(==)
+                                        listener: handleLiteralInt(0)
+                                listener: endBinaryExpression(==)
+                            ensureCloseParen(0, ()
+                          listener: handleParenthesizedCondition(()
+                        listener: beginThenStatement(return)
+                        parseStatement())
+                          parseStatementX())
+                            parseReturnStatement())
+                              listener: beginReturnStatement(return)
+                              parseExpression(return)
+                                parsePrecedenceExpression(return, 1, true)
+                                  parseUnaryExpression(return, true)
+                                    parsePrimary(return, expression)
+                                      parseLiteralInt(return)
+                                        listener: handleLiteralInt(42)
+                              ensureSemicolon(42)
+                              listener: endReturnStatement(true, return, ;)
+                              inGenerator()
+                        listener: endThenStatement(;)
+                        listener: endIfStatement(if, null)
+                  notEofOrValue(}, return)
+                  parseStatement(;)
+                    parseStatementX(;)
+                      parseReturnStatement(;)
+                        listener: beginReturnStatement(return)
+                        parseExpression(return)
+                          parsePrecedenceExpression(return, 1, true)
+                            parseUnaryExpression(return, true)
+                              parsePrimary(return, expression)
+                                inPlainSync()
+                                parseSend(return, expression)
+                                  ensureIdentifier(return, expression)
+                                    reportRecoverableErrorWithToken(final, Instance of 'Template<(Token) => Message>')
+                                      listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'final'., null, {token: final}], final, final)
+                                    rewriter()
+                                    listener: handleIdentifier(, expression)
+                                  listener: handleNoTypeArguments(final)
+                                  parseArgumentsOpt()
+                                    listener: handleNoArguments(final)
+                                  listener: handleSend(, final)
+                        ensureSemicolon()
+                          reportRecoverableError(, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+                            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], final, final)
+                          rewriter()
+                        listener: endReturnStatement(true, return, ;)
+                        inGenerator()
+                  notEofOrValue(}, final)
+                  parseStatement(;)
+                    parseStatementX(;)
+                      parseExpressionStatementOrDeclarationAfterModifiers(final, ;, null, final, null, false)
+                        looksLikeLocalFunction(()
+                        listener: beginMetadataStar(final)
+                        listener: endMetadataStar(0)
+                        listener: handleNoType(final)
+                        listener: beginVariablesDeclaration((, null, final)
+                        parseVariablesDeclarationRest(final, true)
+                          parseOptionallyInitializedIdentifier(final)
+                            ensureIdentifier(final, localVariableDeclaration)
+                              reportRecoverableErrorWithToken((, Instance of 'Template<(Token) => Message>')
+                                listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}], (, ()
+                              rewriter()
+                              listener: handleIdentifier(, localVariableDeclaration)
+                            listener: beginInitializedIdentifier()
+                            parseVariableInitializerOpt()
+                              listener: handleNoVariableInitializer(x)
+                            listener: endInitializedIdentifier()
+                          ensureSemicolon()
+                            reportRecoverableError(, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+                              listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], x, x)
+                            rewriter()
+                          listener: endVariablesDeclaration(1, ;)
+                  notEofOrValue(}, x)
+                  parseStatement(;)
+                    parseStatementX(;)
+                      parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+                        looksLikeLocalFunction(x)
+                        parseExpressionStatement(;)
+                          parseExpression(;)
+                            parsePrecedenceExpression(;, 1, true)
+                              parseUnaryExpression(;, true)
+                                parsePrimary(;, expression)
+                                  parseSendOrFunctionLiteral(;, expression)
+                                    parseSend(;, expression)
+                                      ensureIdentifier(;, expression)
+                                        listener: handleIdentifier(x, expression)
+                                      listener: handleNoTypeArguments(-)
+                                      parseArgumentsOpt(x)
+                                        listener: handleNoArguments(-)
+                                      listener: handleSend(x, -)
+                              listener: beginBinaryExpression(-)
+                              parsePrecedenceExpression(-, 14, true)
+                                parseUnaryExpression(-, true)
+                                  parsePrimary(-, expression)
+                                    parseLiteralInt(-)
+                                      listener: handleLiteralInt(1)
+                              listener: endBinaryExpression(-)
+                          ensureSemicolon(1)
+                            reportRecoverableError(1, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+                              listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], 1, 1)
+                            rewriter()
+                          listener: handleExpressionStatement(;)
+                  notEofOrValue(}, ))
+                  parseStatement(;)
+                    parseStatementX(;)
+                      parseExpressionStatementOrDeclaration(;, false)
+                        parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+                          looksLikeLocalFunction())
+                          parseExpressionStatement(;)
+                            parseExpression(;)
+                              parsePrecedenceExpression(;, 1, true)
+                                parseUnaryExpression(;, true)
+                                  parsePrimary(;, expression)
+                                    parseSend(;, expression)
+                                      ensureIdentifier(;, expression)
+                                        reportRecoverableErrorWithToken(), Instance of 'Template<(Token) => Message>')
+                                          listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got ')'., null, {token: )}], ), ))
+                                        rewriter()
+                                        listener: handleIdentifier(, expression)
+                                      listener: handleNoTypeArguments())
+                                      parseArgumentsOpt()
+                                        listener: handleNoArguments())
+                                      listener: handleSend(, ))
+                            ensureSemicolon()
+                              reportRecoverableError(, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+                                listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], ), ))
+                              rewriter()
+                            listener: handleExpressionStatement(;)
+                  reportRecoverableError(;, Message[UnexpectedToken, Unexpected token ';'., null, {token: ;}])
+                    listener: handleRecoverableError(Message[UnexpectedToken, Unexpected token ';'., null, {token: ;}], ), ))
+                  notEofOrValue(}, +)
+                  parseStatement())
+                    parseStatementX())
+                      parseExpressionStatementOrDeclaration(), false)
+                        parseExpressionStatementOrDeclarationAfterModifiers(), ), null, null, null, false)
+                          looksLikeLocalFunction(+)
+                          parseExpressionStatement())
+                            parseExpression())
+                              parsePrecedenceExpression(), 1, true)
+                                parseUnaryExpression(), true)
+                                  rewriteAndRecover(), UnsupportedPrefixPlus, )
+                                    reportRecoverableError(+, UnsupportedPrefixPlus)
+                                      listener: handleRecoverableError(UnsupportedPrefixPlus, +, +)
+                                    rewriter()
+                                  parsePrimary(), expression)
+                                    parseSendOrFunctionLiteral(), expression)
+                                      parseSend(), expression)
+                                        ensureIdentifier(), expression)
+                                          listener: handleIdentifier(, expression)
+                                        listener: handleNoTypeArguments(+)
+                                        parseArgumentsOpt()
+                                          listener: handleNoArguments(+)
+                                        listener: handleSend(, +)
+                                listener: beginBinaryExpression(+)
+                                parsePrecedenceExpression(+, 14, true)
+                                  parseUnaryExpression(+, true)
+                                    parsePrimary(+, expression)
+                                      parseLiteralInt(+)
+                                        listener: handleLiteralInt(1)
+                                listener: endBinaryExpression(+)
+                            ensureSemicolon(1)
+                            listener: handleExpressionStatement(;)
+                  notEofOrValue(}, })
+                  listener: endBlockFunctionBody(6, {, })
+                listener: endClassMethod(null, int, (, null, })
+              listener: endMember()
+            notEofOrValue(}, int)
+            parseClassOrMixinOrExtensionMemberImpl(}, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(})
+                listener: beginMetadataStar(int)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              isReservedKeyword(finally)
+              indicatesMethodOrField(()
+              parseMethod(}, null, null, null, null, null, }, Instance of 'SimpleType', null, finally, DeclarationKind.Class, WrapperClass, true)
+                listener: beginMethod(null, null, null, null, null, finally)
+                listener: handleIdentifier(int, typeReference)
+                listener: handleNoTypeArguments(finally)
+                listener: handleType(int, null)
+                ensureIdentifierPotentiallyRecovered(int, methodDeclaration, true)
+                  reportRecoverableErrorWithToken(finally, Instance of 'Template<(Token) => Message>')
+                    listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'finally'., null, {token: finally}], finally, finally)
+                  listener: handleIdentifier(finally, methodDeclaration)
+                parseQualifiedRestOpt(finally, methodDeclarationContinuation)
+                parseMethodTypeVar(finally)
+                  listener: handleNoTypeVariables(()
+                parseGetterOrFormalParameters(finally, finally, false, MemberKind.NonStaticMethod)
+                  parseFormalParameters(finally, MemberKind.NonStaticMethod)
+                    parseFormalParametersRest((, MemberKind.NonStaticMethod)
+                      listener: beginFormalParameters((, MemberKind.NonStaticMethod)
+                      parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+                        parseMetadataStar(()
+                          listener: beginMetadataStar(int)
+                          listener: endMetadataStar(0)
+                        listener: beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+                        listener: handleIdentifier(int, typeReference)
+                        listener: handleNoTypeArguments(x)
+                        listener: handleType(int, null)
+                        ensureIdentifier(int, formalParameterDeclaration)
+                          listener: handleIdentifier(x, formalParameterDeclaration)
+                        listener: handleFormalParameterWithoutValue())
+                        listener: endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+                      listener: endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
+                parseInitializersOpt())
+                  listener: handleNoInitializers()
+                parseAsyncModifierOpt())
+                  listener: handleAsyncModifier(null, null)
+                  inPlainSync()
+                inPlainSync()
+                parseFunctionBody(), false, true)
+                  listener: beginBlockFunctionBody({)
+                  notEofOrValue(}, if)
+                  parseStatement({)
+                    parseStatementX({)
+                      parseIfStatement({)
+                        listener: beginIfStatement(if)
+                        ensureParenthesizedCondition(if)
+                          parseExpressionInParenthesisRest(()
+                            parseExpression(()
+                              parsePrecedenceExpression((, 1, true)
+                                parseUnaryExpression((, true)
+                                  parsePrimary((, expression)
+                                    parseSendOrFunctionLiteral((, expression)
+                                      parseSend((, expression)
+                                        ensureIdentifier((, expression)
+                                          listener: handleIdentifier(x, expression)
+                                        listener: handleNoTypeArguments(==)
+                                        parseArgumentsOpt(x)
+                                          listener: handleNoArguments(==)
+                                        listener: handleSend(x, ==)
+                                listener: beginBinaryExpression(==)
+                                parsePrecedenceExpression(==, 8, true)
+                                  parseUnaryExpression(==, true)
+                                    parsePrimary(==, expression)
+                                      parseLiteralInt(==)
+                                        listener: handleLiteralInt(0)
+                                listener: endBinaryExpression(==)
+                            ensureCloseParen(0, ()
+                          listener: handleParenthesizedCondition(()
+                        listener: beginThenStatement(return)
+                        parseStatement())
+                          parseStatementX())
+                            parseReturnStatement())
+                              listener: beginReturnStatement(return)
+                              parseExpression(return)
+                                parsePrecedenceExpression(return, 1, true)
+                                  parseUnaryExpression(return, true)
+                                    parsePrimary(return, expression)
+                                      parseLiteralInt(return)
+                                        listener: handleLiteralInt(42)
+                              ensureSemicolon(42)
+                              listener: endReturnStatement(true, return, ;)
+                              inGenerator()
+                        listener: endThenStatement(;)
+                        listener: endIfStatement(if, null)
+                  notEofOrValue(}, return)
+                  parseStatement(;)
+                    parseStatementX(;)
+                      parseReturnStatement(;)
+                        listener: beginReturnStatement(return)
+                        parseExpression(return)
+                          parsePrecedenceExpression(return, 1, true)
+                            parseUnaryExpression(return, true)
+                              parsePrimary(return, expression)
+                                inPlainSync()
+                                parseSend(return, expression)
+                                  ensureIdentifier(return, expression)
+                                    reportRecoverableErrorWithToken(finally, Instance of 'Template<(Token) => Message>')
+                                      listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'finally'., null, {token: finally}], finally, finally)
+                                    listener: handleIdentifier(finally, expression)
+                                  listener: handleNoTypeArguments(()
+                                  parseArgumentsOpt(finally)
+                                    parseArguments(finally)
+                                      parseArgumentsRest(()
+                                        listener: beginArguments(()
+                                        parseExpression(()
+                                          parsePrecedenceExpression((, 1, true)
+                                            parseUnaryExpression((, true)
+                                              parsePrimary((, expression)
+                                                parseSendOrFunctionLiteral((, expression)
+                                                  parseSend((, expression)
+                                                    ensureIdentifier((, expression)
+                                                      listener: handleIdentifier(x, expression)
+                                                    listener: handleNoTypeArguments(-)
+                                                    parseArgumentsOpt(x)
+                                                      listener: handleNoArguments(-)
+                                                    listener: handleSend(x, -)
+                                            listener: beginBinaryExpression(-)
+                                            parsePrecedenceExpression(-, 14, true)
+                                              parseUnaryExpression(-, true)
+                                                parsePrimary(-, expression)
+                                                  parseLiteralInt(-)
+                                                    listener: handleLiteralInt(1)
+                                            listener: endBinaryExpression(-)
+                                        listener: endArguments(1, (, ))
+                                  listener: handleSend(finally, +)
+                            listener: beginBinaryExpression(+)
+                            parsePrecedenceExpression(+, 14, true)
+                              parseUnaryExpression(+, true)
+                                parsePrimary(+, expression)
+                                  parseLiteralInt(+)
+                                    listener: handleLiteralInt(1)
+                            listener: endBinaryExpression(+)
+                        ensureSemicolon(1)
+                        listener: endReturnStatement(true, return, ;)
+                        inGenerator()
+                  notEofOrValue(}, })
+                  listener: endBlockFunctionBody(2, {, })
+                listener: endClassMethod(null, int, (, null, })
+              listener: endMember()
+            notEofOrValue(}, int)
+            parseClassOrMixinOrExtensionMemberImpl(}, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(})
+                listener: beginMetadataStar(int)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              isReservedKeyword(for)
+              indicatesMethodOrField(()
+              parseMethod(}, null, null, null, null, null, }, Instance of 'SimpleType', null, for, DeclarationKind.Class, WrapperClass, true)
+                listener: beginMethod(null, null, null, null, null, for)
+                listener: handleIdentifier(int, typeReference)
+                listener: handleNoTypeArguments(for)
+                listener: handleType(int, null)
+                ensureIdentifierPotentiallyRecovered(int, methodDeclaration, true)
+                  reportRecoverableErrorWithToken(for, Instance of 'Template<(Token) => Message>')
+                    listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'for'., null, {token: for}], for, for)
+                  listener: handleIdentifier(for, methodDeclaration)
+                parseQualifiedRestOpt(for, methodDeclarationContinuation)
+                parseMethodTypeVar(for)
+                  listener: handleNoTypeVariables(()
+                parseGetterOrFormalParameters(for, for, false, MemberKind.NonStaticMethod)
+                  parseFormalParameters(for, MemberKind.NonStaticMethod)
+                    parseFormalParametersRest((, MemberKind.NonStaticMethod)
+                      listener: beginFormalParameters((, MemberKind.NonStaticMethod)
+                      parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+                        parseMetadataStar(()
+                          listener: beginMetadataStar(int)
+                          listener: endMetadataStar(0)
+                        listener: beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+                        listener: handleIdentifier(int, typeReference)
+                        listener: handleNoTypeArguments(x)
+                        listener: handleType(int, null)
+                        ensureIdentifier(int, formalParameterDeclaration)
+                          listener: handleIdentifier(x, formalParameterDeclaration)
+                        listener: handleFormalParameterWithoutValue())
+                        listener: endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+                      listener: endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
+                parseInitializersOpt())
+                  listener: handleNoInitializers()
+                parseAsyncModifierOpt())
+                  listener: handleAsyncModifier(null, null)
+                  inPlainSync()
+                inPlainSync()
+                parseFunctionBody(), false, true)
+                  listener: beginBlockFunctionBody({)
+                  notEofOrValue(}, if)
+                  parseStatement({)
+                    parseStatementX({)
+                      parseIfStatement({)
+                        listener: beginIfStatement(if)
+                        ensureParenthesizedCondition(if)
+                          parseExpressionInParenthesisRest(()
+                            parseExpression(()
+                              parsePrecedenceExpression((, 1, true)
+                                parseUnaryExpression((, true)
+                                  parsePrimary((, expression)
+                                    parseSendOrFunctionLiteral((, expression)
+                                      parseSend((, expression)
+                                        ensureIdentifier((, expression)
+                                          listener: handleIdentifier(x, expression)
+                                        listener: handleNoTypeArguments(==)
+                                        parseArgumentsOpt(x)
+                                          listener: handleNoArguments(==)
+                                        listener: handleSend(x, ==)
+                                listener: beginBinaryExpression(==)
+                                parsePrecedenceExpression(==, 8, true)
+                                  parseUnaryExpression(==, true)
+                                    parsePrimary(==, expression)
+                                      parseLiteralInt(==)
+                                        listener: handleLiteralInt(0)
+                                listener: endBinaryExpression(==)
+                            ensureCloseParen(0, ()
+                          listener: handleParenthesizedCondition(()
+                        listener: beginThenStatement(return)
+                        parseStatement())
+                          parseStatementX())
+                            parseReturnStatement())
+                              listener: beginReturnStatement(return)
+                              parseExpression(return)
+                                parsePrecedenceExpression(return, 1, true)
+                                  parseUnaryExpression(return, true)
+                                    parsePrimary(return, expression)
+                                      parseLiteralInt(return)
+                                        listener: handleLiteralInt(42)
+                              ensureSemicolon(42)
+                              listener: endReturnStatement(true, return, ;)
+                              inGenerator()
+                        listener: endThenStatement(;)
+                        listener: endIfStatement(if, null)
+                  notEofOrValue(}, return)
+                  parseStatement(;)
+                    parseStatementX(;)
+                      parseReturnStatement(;)
+                        listener: beginReturnStatement(return)
+                        parseExpression(return)
+                          parsePrecedenceExpression(return, 1, true)
+                            parseUnaryExpression(return, true)
+                              parsePrimary(return, expression)
+                                inPlainSync()
+                                parseSend(return, expression)
+                                  ensureIdentifier(return, expression)
+                                    reportRecoverableErrorWithToken(for, Instance of 'Template<(Token) => Message>')
+                                      listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'for'., null, {token: for}], for, for)
+                                    rewriter()
+                                    listener: handleIdentifier(, expression)
+                                  listener: handleNoTypeArguments(for)
+                                  parseArgumentsOpt()
+                                    listener: handleNoArguments(for)
+                                  listener: handleSend(, for)
+                        ensureSemicolon()
+                          reportRecoverableError(, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+                            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], for, for)
+                          rewriter()
+                        listener: endReturnStatement(true, return, ;)
+                        inGenerator()
+                  notEofOrValue(}, for)
+                  parseStatement(;)
+                    parseStatementX(;)
+                      parseForStatement(;, null)
+                        listener: beginForStatement(for)
+                        parseForLoopPartsStart(null, for)
+                          parseExpressionStatementOrDeclaration((, true)
+                            parseExpressionStatementOrDeclarationAfterModifiers((, (, null, null, null, true)
+                        parseForLoopPartsMid((, null, for)
+                          parseExpression(()
+                            parsePrecedenceExpression((, 1, true)
+                              parseUnaryExpression((, true)
+                                parsePrimary((, expression)
+                                  parseSendOrFunctionLiteral((, expression)
+                                    parseSend((, expression)
+                                      ensureIdentifier((, expression)
+                                        listener: handleIdentifier(x, expression)
+                                      listener: handleNoTypeArguments(-)
+                                      parseArgumentsOpt(x)
+                                        listener: handleNoArguments(-)
+                                      listener: handleSend(x, -)
+                              listener: beginBinaryExpression(-)
+                              parsePrecedenceExpression(-, 14, true)
+                                parseUnaryExpression(-, true)
+                                  parsePrimary(-, expression)
+                                    parseLiteralInt(-)
+                                      listener: handleLiteralInt(1)
+                              listener: endBinaryExpression(-)
+                          listener: handleForInitializerExpressionStatement(1, false)
+                        parseForRest(null, 1, for)
+                          parseForLoopPartsRest(1, for, null)
                             ensureSemicolon(1)
                               reportRecoverableError(1, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
                                 listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], 1, 1)
                               rewriter()
-                            listener: handleExpressionStatement(;)
-                    notEofOrValue(}, ))
-                    parseStatement(;)
-                      parseStatementX(;)
-                        parseExpressionStatementOrDeclaration(;, false)
-                          parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
-                            looksLikeLocalFunction())
                             parseExpressionStatement(;)
                               parseExpression(;)
                                 parsePrecedenceExpression(;, 1, true)
@@ -2659,631 +2609,8 @@
                                   listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], ), ))
                                 rewriter()
                               listener: handleExpressionStatement(;)
-                    reportRecoverableError(;, Message[UnexpectedToken, Unexpected token ';'., null, {token: ;}])
-                      listener: handleRecoverableError(Message[UnexpectedToken, Unexpected token ';'., null, {token: ;}], ), ))
-                    notEofOrValue(}, +)
-                    parseStatement())
-                      parseStatementX())
-                        parseExpressionStatementOrDeclaration(), false)
-                          parseExpressionStatementOrDeclarationAfterModifiers(), ), null, null, null, false)
-                            looksLikeLocalFunction(+)
-                            parseExpressionStatement())
-                              parseExpression())
-                                parsePrecedenceExpression(), 1, true)
-                                  parseUnaryExpression(), true)
-                                    rewriteAndRecover(), UnsupportedPrefixPlus, )
-                                      reportRecoverableError(+, UnsupportedPrefixPlus)
-                                        listener: handleRecoverableError(UnsupportedPrefixPlus, +, +)
-                                      rewriter()
-                                    parsePrimary(), expression)
-                                      parseSendOrFunctionLiteral(), expression)
-                                        parseSend(), expression)
-                                          ensureIdentifier(), expression)
-                                            listener: handleIdentifier(, expression)
-                                          listener: handleNoTypeArguments(+)
-                                          parseArgumentsOpt()
-                                            listener: handleNoArguments(+)
-                                          listener: handleSend(, +)
-                                  listener: beginBinaryExpression(+)
-                                  parsePrecedenceExpression(+, 14, true)
-                                    parseUnaryExpression(+, true)
-                                      parsePrimary(+, expression)
-                                        parseLiteralInt(+)
-                                          listener: handleLiteralInt(1)
-                                  listener: endBinaryExpression(+)
-                              ensureSemicolon(1)
-                              listener: handleExpressionStatement(;)
-                    notEofOrValue(}, })
-                    listener: endBlockFunctionBody(6, {, })
-                  listener: endClassMethod(null, final, (, null, })
-                listener: endMember()
-            notEofOrValue(}, int)
-            parseClassOrMixinOrExtensionMemberImpl(}, DeclarationKind.Class, WrapperClass)
-              parseMetadataStar(})
-                listener: beginMetadataStar(int)
-                listener: endMetadataStar(0)
-              listener: beginMember()
-              parseFields(}, null, null, null, null, null, }, Instance of 'NoType', int, DeclarationKind.Class, WrapperClass)
-                reportRecoverableError(int, MissingConstFinalVarOrType)
-                  listener: handleRecoverableError(MissingConstFinalVarOrType, int, int)
-                listener: handleNoType(})
-                ensureIdentifier(}, fieldDeclaration)
-                  listener: handleIdentifier(int, fieldDeclaration)
-                parseFieldInitializerOpt(int, int, null, null, DeclarationKind.Class, WrapperClass)
-                  listener: handleNoFieldInitializer(finally)
-                ensureSemicolon(int)
-                  reportRecoverableError(int, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
-                    listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
-                  rewriter()
-                listener: endClassFields(null, null, null, null, 1, int, ;)
-              listener: endMember()
-            notEofOrValue(}, finally)
-            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
-              parseMetadataStar(;)
-                listener: beginMetadataStar(finally)
-                listener: endMetadataStar(0)
-              listener: beginMember()
-              recoverFromInvalidMember(;, ;, null, null, null, null, null, ;, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
-                reportRecoverableErrorWithToken(finally, Instance of 'Template<(Token) => Message>')
-                  listener: handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got 'finally'., null, {token: finally}], finally, finally)
-                listener: handleInvalidMember(finally)
-                listener: endMember()
-            notEofOrValue(}, ()
-            parseClassOrMixinOrExtensionMemberImpl(finally, DeclarationKind.Class, WrapperClass)
-              parseMetadataStar(finally)
-                listener: beginMetadataStar(()
-                listener: endMetadataStar(0)
-              listener: beginMember()
-              recoverFromInvalidMember(finally, finally, null, null, null, null, null, finally, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
-                parseMethod(finally, null, null, null, null, null, finally, Instance of 'NoType', null, (, DeclarationKind.Class, WrapperClass)
-                  listener: beginMethod(null, null, null, null, null, ()
-                  listener: handleNoType(finally)
-                  ensureIdentifier(finally, methodDeclaration)
-                    insertSyntheticIdentifier(finally, methodDeclaration, message: null, messageOnToken: null)
-                      reportRecoverableError((, Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}])
-                        listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}], (, ()
-                      rewriter()
-                    listener: handleIdentifier(, methodDeclaration)
-                  parseQualifiedRestOpt(, methodDeclarationContinuation)
-                  parseMethodTypeVar()
-                    listener: handleNoTypeVariables(()
-                  parseGetterOrFormalParameters(, (, false, MemberKind.NonStaticMethod)
-                    parseFormalParameters(, MemberKind.NonStaticMethod)
-                      parseFormalParametersRest((, MemberKind.NonStaticMethod)
-                        listener: beginFormalParameters((, MemberKind.NonStaticMethod)
-                        parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
-                          parseMetadataStar(()
-                            listener: beginMetadataStar(int)
-                            listener: endMetadataStar(0)
-                          listener: beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
-                          listener: handleIdentifier(int, typeReference)
-                          listener: handleNoTypeArguments(x)
-                          listener: handleType(int, null)
-                          ensureIdentifier(int, formalParameterDeclaration)
-                            listener: handleIdentifier(x, formalParameterDeclaration)
-                          listener: handleFormalParameterWithoutValue())
-                          listener: endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
-                        listener: endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
-                  parseInitializersOpt())
-                    listener: handleNoInitializers()
-                  parseAsyncModifierOpt())
-                    listener: handleAsyncModifier(null, null)
-                    inPlainSync()
-                  inPlainSync()
-                  parseFunctionBody(), false, true)
-                    listener: beginBlockFunctionBody({)
-                    notEofOrValue(}, if)
-                    parseStatement({)
-                      parseStatementX({)
-                        parseIfStatement({)
-                          listener: beginIfStatement(if)
-                          ensureParenthesizedCondition(if)
-                            parseExpressionInParenthesisRest(()
-                              parseExpression(()
-                                parsePrecedenceExpression((, 1, true)
-                                  parseUnaryExpression((, true)
-                                    parsePrimary((, expression)
-                                      parseSendOrFunctionLiteral((, expression)
-                                        parseSend((, expression)
-                                          ensureIdentifier((, expression)
-                                            listener: handleIdentifier(x, expression)
-                                          listener: handleNoTypeArguments(==)
-                                          parseArgumentsOpt(x)
-                                            listener: handleNoArguments(==)
-                                          listener: handleSend(x, ==)
-                                  listener: beginBinaryExpression(==)
-                                  parsePrecedenceExpression(==, 8, true)
-                                    parseUnaryExpression(==, true)
-                                      parsePrimary(==, expression)
-                                        parseLiteralInt(==)
-                                          listener: handleLiteralInt(0)
-                                  listener: endBinaryExpression(==)
-                              ensureCloseParen(0, ()
-                            listener: handleParenthesizedCondition(()
-                          listener: beginThenStatement(return)
-                          parseStatement())
-                            parseStatementX())
-                              parseReturnStatement())
-                                listener: beginReturnStatement(return)
-                                parseExpression(return)
-                                  parsePrecedenceExpression(return, 1, true)
-                                    parseUnaryExpression(return, true)
-                                      parsePrimary(return, expression)
-                                        parseLiteralInt(return)
-                                          listener: handleLiteralInt(42)
-                                ensureSemicolon(42)
-                                listener: endReturnStatement(true, return, ;)
-                                inGenerator()
-                          listener: endThenStatement(;)
-                          listener: endIfStatement(if, null)
-                    notEofOrValue(}, return)
-                    parseStatement(;)
-                      parseStatementX(;)
-                        parseReturnStatement(;)
-                          listener: beginReturnStatement(return)
-                          parseExpression(return)
-                            parsePrecedenceExpression(return, 1, true)
-                              parseUnaryExpression(return, true)
-                                parsePrimary(return, expression)
-                                  inPlainSync()
-                                  parseSend(return, expression)
-                                    ensureIdentifier(return, expression)
-                                      reportRecoverableErrorWithToken(finally, Instance of 'Template<(Token) => Message>')
-                                        listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'finally'., null, {token: finally}], finally, finally)
-                                      listener: handleIdentifier(finally, expression)
-                                    listener: handleNoTypeArguments(()
-                                    parseArgumentsOpt(finally)
-                                      parseArguments(finally)
-                                        parseArgumentsRest(()
-                                          listener: beginArguments(()
-                                          parseExpression(()
-                                            parsePrecedenceExpression((, 1, true)
-                                              parseUnaryExpression((, true)
-                                                parsePrimary((, expression)
-                                                  parseSendOrFunctionLiteral((, expression)
-                                                    parseSend((, expression)
-                                                      ensureIdentifier((, expression)
-                                                        listener: handleIdentifier(x, expression)
-                                                      listener: handleNoTypeArguments(-)
-                                                      parseArgumentsOpt(x)
-                                                        listener: handleNoArguments(-)
-                                                      listener: handleSend(x, -)
-                                              listener: beginBinaryExpression(-)
-                                              parsePrecedenceExpression(-, 14, true)
-                                                parseUnaryExpression(-, true)
-                                                  parsePrimary(-, expression)
-                                                    parseLiteralInt(-)
-                                                      listener: handleLiteralInt(1)
-                                              listener: endBinaryExpression(-)
-                                          listener: endArguments(1, (, ))
-                                    listener: handleSend(finally, +)
-                              listener: beginBinaryExpression(+)
-                              parsePrecedenceExpression(+, 14, true)
-                                parseUnaryExpression(+, true)
-                                  parsePrimary(+, expression)
-                                    parseLiteralInt(+)
-                                      listener: handleLiteralInt(1)
-                              listener: endBinaryExpression(+)
-                          ensureSemicolon(1)
-                          listener: endReturnStatement(true, return, ;)
-                          inGenerator()
-                    notEofOrValue(}, })
-                    listener: endBlockFunctionBody(2, {, })
-                  listener: endClassMethod(null, , (, null, })
-                listener: endMember()
-            notEofOrValue(}, int)
-            parseClassOrMixinOrExtensionMemberImpl(}, DeclarationKind.Class, WrapperClass)
-              parseMetadataStar(})
-                listener: beginMetadataStar(int)
-                listener: endMetadataStar(0)
-              listener: beginMember()
-              parseFields(}, null, null, null, null, null, }, Instance of 'NoType', int, DeclarationKind.Class, WrapperClass)
-                reportRecoverableError(int, MissingConstFinalVarOrType)
-                  listener: handleRecoverableError(MissingConstFinalVarOrType, int, int)
-                listener: handleNoType(})
-                ensureIdentifier(}, fieldDeclaration)
-                  listener: handleIdentifier(int, fieldDeclaration)
-                parseFieldInitializerOpt(int, int, null, null, DeclarationKind.Class, WrapperClass)
-                  listener: handleNoFieldInitializer(for)
-                ensureSemicolon(int)
-                  reportRecoverableError(int, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
-                    listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
-                  rewriter()
-                listener: endClassFields(null, null, null, null, 1, int, ;)
-              listener: endMember()
-            notEofOrValue(}, for)
-            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
-              parseMetadataStar(;)
-                listener: beginMetadataStar(for)
-                listener: endMetadataStar(0)
-              listener: beginMember()
-              recoverFromInvalidMember(;, ;, null, null, null, null, null, ;, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
-                reportRecoverableErrorWithToken(for, Instance of 'Template<(Token) => Message>')
-                  listener: handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got 'for'., null, {token: for}], for, for)
-                listener: handleInvalidMember(for)
-                listener: endMember()
-            notEofOrValue(}, ()
-            parseClassOrMixinOrExtensionMemberImpl(for, DeclarationKind.Class, WrapperClass)
-              parseMetadataStar(for)
-                listener: beginMetadataStar(()
-                listener: endMetadataStar(0)
-              listener: beginMember()
-              recoverFromInvalidMember(for, for, null, null, null, null, null, for, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
-                parseMethod(for, null, null, null, null, null, for, Instance of 'NoType', null, (, DeclarationKind.Class, WrapperClass)
-                  listener: beginMethod(null, null, null, null, null, ()
-                  listener: handleNoType(for)
-                  ensureIdentifier(for, methodDeclaration)
-                    insertSyntheticIdentifier(for, methodDeclaration, message: null, messageOnToken: null)
-                      reportRecoverableError((, Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}])
-                        listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}], (, ()
-                      rewriter()
-                    listener: handleIdentifier(, methodDeclaration)
-                  parseQualifiedRestOpt(, methodDeclarationContinuation)
-                  parseMethodTypeVar()
-                    listener: handleNoTypeVariables(()
-                  parseGetterOrFormalParameters(, (, false, MemberKind.NonStaticMethod)
-                    parseFormalParameters(, MemberKind.NonStaticMethod)
-                      parseFormalParametersRest((, MemberKind.NonStaticMethod)
-                        listener: beginFormalParameters((, MemberKind.NonStaticMethod)
-                        parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
-                          parseMetadataStar(()
-                            listener: beginMetadataStar(int)
-                            listener: endMetadataStar(0)
-                          listener: beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
-                          listener: handleIdentifier(int, typeReference)
-                          listener: handleNoTypeArguments(x)
-                          listener: handleType(int, null)
-                          ensureIdentifier(int, formalParameterDeclaration)
-                            listener: handleIdentifier(x, formalParameterDeclaration)
-                          listener: handleFormalParameterWithoutValue())
-                          listener: endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
-                        listener: endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
-                  parseInitializersOpt())
-                    listener: handleNoInitializers()
-                  parseAsyncModifierOpt())
-                    listener: handleAsyncModifier(null, null)
-                    inPlainSync()
-                  inPlainSync()
-                  parseFunctionBody(), false, true)
-                    listener: beginBlockFunctionBody({)
-                    notEofOrValue(}, if)
-                    parseStatement({)
-                      parseStatementX({)
-                        parseIfStatement({)
-                          listener: beginIfStatement(if)
-                          ensureParenthesizedCondition(if)
-                            parseExpressionInParenthesisRest(()
-                              parseExpression(()
-                                parsePrecedenceExpression((, 1, true)
-                                  parseUnaryExpression((, true)
-                                    parsePrimary((, expression)
-                                      parseSendOrFunctionLiteral((, expression)
-                                        parseSend((, expression)
-                                          ensureIdentifier((, expression)
-                                            listener: handleIdentifier(x, expression)
-                                          listener: handleNoTypeArguments(==)
-                                          parseArgumentsOpt(x)
-                                            listener: handleNoArguments(==)
-                                          listener: handleSend(x, ==)
-                                  listener: beginBinaryExpression(==)
-                                  parsePrecedenceExpression(==, 8, true)
-                                    parseUnaryExpression(==, true)
-                                      parsePrimary(==, expression)
-                                        parseLiteralInt(==)
-                                          listener: handleLiteralInt(0)
-                                  listener: endBinaryExpression(==)
-                              ensureCloseParen(0, ()
-                            listener: handleParenthesizedCondition(()
-                          listener: beginThenStatement(return)
-                          parseStatement())
-                            parseStatementX())
-                              parseReturnStatement())
-                                listener: beginReturnStatement(return)
-                                parseExpression(return)
-                                  parsePrecedenceExpression(return, 1, true)
-                                    parseUnaryExpression(return, true)
-                                      parsePrimary(return, expression)
-                                        parseLiteralInt(return)
-                                          listener: handleLiteralInt(42)
-                                ensureSemicolon(42)
-                                listener: endReturnStatement(true, return, ;)
-                                inGenerator()
-                          listener: endThenStatement(;)
-                          listener: endIfStatement(if, null)
-                    notEofOrValue(}, return)
-                    parseStatement(;)
-                      parseStatementX(;)
-                        parseReturnStatement(;)
-                          listener: beginReturnStatement(return)
-                          parseExpression(return)
-                            parsePrecedenceExpression(return, 1, true)
-                              parseUnaryExpression(return, true)
-                                parsePrimary(return, expression)
-                                  inPlainSync()
-                                  parseSend(return, expression)
-                                    ensureIdentifier(return, expression)
-                                      reportRecoverableErrorWithToken(for, Instance of 'Template<(Token) => Message>')
-                                        listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'for'., null, {token: for}], for, for)
-                                      rewriter()
-                                      listener: handleIdentifier(, expression)
-                                    listener: handleNoTypeArguments(for)
-                                    parseArgumentsOpt()
-                                      listener: handleNoArguments(for)
-                                    listener: handleSend(, for)
-                          ensureSemicolon()
-                            reportRecoverableError(, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
-                              listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], for, for)
-                            rewriter()
-                          listener: endReturnStatement(true, return, ;)
-                          inGenerator()
-                    notEofOrValue(}, for)
-                    parseStatement(;)
-                      parseStatementX(;)
-                        parseForStatement(;, null)
-                          listener: beginForStatement(for)
-                          parseForLoopPartsStart(null, for)
-                            parseExpressionStatementOrDeclaration((, true)
-                              parseExpressionStatementOrDeclarationAfterModifiers((, (, null, null, null, true)
-                          parseForLoopPartsMid((, null, for)
-                            parseExpression(()
-                              parsePrecedenceExpression((, 1, true)
-                                parseUnaryExpression((, true)
-                                  parsePrimary((, expression)
-                                    parseSendOrFunctionLiteral((, expression)
-                                      parseSend((, expression)
-                                        ensureIdentifier((, expression)
-                                          listener: handleIdentifier(x, expression)
-                                        listener: handleNoTypeArguments(-)
-                                        parseArgumentsOpt(x)
-                                          listener: handleNoArguments(-)
-                                        listener: handleSend(x, -)
-                                listener: beginBinaryExpression(-)
-                                parsePrecedenceExpression(-, 14, true)
-                                  parseUnaryExpression(-, true)
-                                    parsePrimary(-, expression)
-                                      parseLiteralInt(-)
-                                        listener: handleLiteralInt(1)
-                                listener: endBinaryExpression(-)
-                            listener: handleForInitializerExpressionStatement(1, false)
-                          parseForRest(null, 1, for)
-                            parseForLoopPartsRest(1, for, null)
-                              ensureSemicolon(1)
-                                reportRecoverableError(1, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
-                                  listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], 1, 1)
-                                rewriter()
-                              parseExpressionStatement(;)
-                                parseExpression(;)
-                                  parsePrecedenceExpression(;, 1, true)
-                                    parseUnaryExpression(;, true)
-                                      parsePrimary(;, expression)
-                                        parseSend(;, expression)
-                                          ensureIdentifier(;, expression)
-                                            reportRecoverableErrorWithToken(), Instance of 'Template<(Token) => Message>')
-                                              listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got ')'., null, {token: )}], ), ))
-                                            rewriter()
-                                            listener: handleIdentifier(, expression)
-                                          listener: handleNoTypeArguments())
-                                          parseArgumentsOpt()
-                                            listener: handleNoArguments())
-                                          listener: handleSend(, ))
-                                ensureSemicolon()
-                                  reportRecoverableError(, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
-                                    listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], ), ))
-                                  rewriter()
-                                listener: handleExpressionStatement(;)
-                              listener: handleForLoopParts(for, (, ;, 0)
-                            listener: beginForStatementBody(+)
-                            parseStatement())
-                              parseStatementX())
-                                parseExpressionStatementOrDeclaration(), false)
-                                  parseExpressionStatementOrDeclarationAfterModifiers(), ), null, null, null, false)
-                                    looksLikeLocalFunction(+)
-                                    parseExpressionStatement())
-                                      parseExpression())
-                                        parsePrecedenceExpression(), 1, true)
-                                          parseUnaryExpression(), true)
-                                            rewriteAndRecover(), UnsupportedPrefixPlus, )
-                                              reportRecoverableError(+, UnsupportedPrefixPlus)
-                                                listener: handleRecoverableError(UnsupportedPrefixPlus, +, +)
-                                              rewriter()
-                                            parsePrimary(), expression)
-                                              parseSendOrFunctionLiteral(), expression)
-                                                parseSend(), expression)
-                                                  ensureIdentifier(), expression)
-                                                    listener: handleIdentifier(, expression)
-                                                  listener: handleNoTypeArguments(+)
-                                                  parseArgumentsOpt()
-                                                    listener: handleNoArguments(+)
-                                                  listener: handleSend(, +)
-                                          listener: beginBinaryExpression(+)
-                                          parsePrecedenceExpression(+, 14, true)
-                                            parseUnaryExpression(+, true)
-                                              parsePrimary(+, expression)
-                                                parseLiteralInt(+)
-                                                  listener: handleLiteralInt(1)
-                                          listener: endBinaryExpression(+)
-                                      ensureSemicolon(1)
-                                      listener: handleExpressionStatement(;)
-                            listener: endForStatementBody(})
-                            listener: endForStatement(})
-                    notEofOrValue(}, })
-                    listener: endBlockFunctionBody(3, {, })
-                  listener: endClassMethod(null, , (, null, })
-                listener: endMember()
-            notEofOrValue(}, int)
-            parseClassOrMixinOrExtensionMemberImpl(}, DeclarationKind.Class, WrapperClass)
-              parseMetadataStar(})
-                listener: beginMetadataStar(int)
-                listener: endMetadataStar(0)
-              listener: beginMember()
-              parseFields(}, null, null, null, null, null, }, Instance of 'NoType', int, DeclarationKind.Class, WrapperClass)
-                reportRecoverableError(int, MissingConstFinalVarOrType)
-                  listener: handleRecoverableError(MissingConstFinalVarOrType, int, int)
-                listener: handleNoType(})
-                ensureIdentifier(}, fieldDeclaration)
-                  listener: handleIdentifier(int, fieldDeclaration)
-                parseFieldInitializerOpt(int, int, null, null, DeclarationKind.Class, WrapperClass)
-                  listener: handleNoFieldInitializer(if)
-                ensureSemicolon(int)
-                  reportRecoverableError(int, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
-                    listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
-                  rewriter()
-                listener: endClassFields(null, null, null, null, 1, int, ;)
-              listener: endMember()
-            notEofOrValue(}, if)
-            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
-              parseMetadataStar(;)
-                listener: beginMetadataStar(if)
-                listener: endMetadataStar(0)
-              listener: beginMember()
-              recoverFromInvalidMember(;, ;, null, null, null, null, null, ;, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
-                reportRecoverableErrorWithToken(if, Instance of 'Template<(Token) => Message>')
-                  listener: handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got 'if'., null, {token: if}], if, if)
-                listener: handleInvalidMember(if)
-                listener: endMember()
-            notEofOrValue(}, ()
-            parseClassOrMixinOrExtensionMemberImpl(if, DeclarationKind.Class, WrapperClass)
-              parseMetadataStar(if)
-                listener: beginMetadataStar(()
-                listener: endMetadataStar(0)
-              listener: beginMember()
-              recoverFromInvalidMember(if, if, null, null, null, null, null, if, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
-                parseMethod(if, null, null, null, null, null, if, Instance of 'NoType', null, (, DeclarationKind.Class, WrapperClass)
-                  listener: beginMethod(null, null, null, null, null, ()
-                  listener: handleNoType(if)
-                  ensureIdentifier(if, methodDeclaration)
-                    insertSyntheticIdentifier(if, methodDeclaration, message: null, messageOnToken: null)
-                      reportRecoverableError((, Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}])
-                        listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}], (, ()
-                      rewriter()
-                    listener: handleIdentifier(, methodDeclaration)
-                  parseQualifiedRestOpt(, methodDeclarationContinuation)
-                  parseMethodTypeVar()
-                    listener: handleNoTypeVariables(()
-                  parseGetterOrFormalParameters(, (, false, MemberKind.NonStaticMethod)
-                    parseFormalParameters(, MemberKind.NonStaticMethod)
-                      parseFormalParametersRest((, MemberKind.NonStaticMethod)
-                        listener: beginFormalParameters((, MemberKind.NonStaticMethod)
-                        parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
-                          parseMetadataStar(()
-                            listener: beginMetadataStar(int)
-                            listener: endMetadataStar(0)
-                          listener: beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
-                          listener: handleIdentifier(int, typeReference)
-                          listener: handleNoTypeArguments(x)
-                          listener: handleType(int, null)
-                          ensureIdentifier(int, formalParameterDeclaration)
-                            listener: handleIdentifier(x, formalParameterDeclaration)
-                          listener: handleFormalParameterWithoutValue())
-                          listener: endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
-                        listener: endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
-                  parseInitializersOpt())
-                    listener: handleNoInitializers()
-                  parseAsyncModifierOpt())
-                    listener: handleAsyncModifier(null, null)
-                    inPlainSync()
-                  inPlainSync()
-                  parseFunctionBody(), false, true)
-                    listener: beginBlockFunctionBody({)
-                    notEofOrValue(}, if)
-                    parseStatement({)
-                      parseStatementX({)
-                        parseIfStatement({)
-                          listener: beginIfStatement(if)
-                          ensureParenthesizedCondition(if)
-                            parseExpressionInParenthesisRest(()
-                              parseExpression(()
-                                parsePrecedenceExpression((, 1, true)
-                                  parseUnaryExpression((, true)
-                                    parsePrimary((, expression)
-                                      parseSendOrFunctionLiteral((, expression)
-                                        parseSend((, expression)
-                                          ensureIdentifier((, expression)
-                                            listener: handleIdentifier(x, expression)
-                                          listener: handleNoTypeArguments(==)
-                                          parseArgumentsOpt(x)
-                                            listener: handleNoArguments(==)
-                                          listener: handleSend(x, ==)
-                                  listener: beginBinaryExpression(==)
-                                  parsePrecedenceExpression(==, 8, true)
-                                    parseUnaryExpression(==, true)
-                                      parsePrimary(==, expression)
-                                        parseLiteralInt(==)
-                                          listener: handleLiteralInt(0)
-                                  listener: endBinaryExpression(==)
-                              ensureCloseParen(0, ()
-                            listener: handleParenthesizedCondition(()
-                          listener: beginThenStatement(return)
-                          parseStatement())
-                            parseStatementX())
-                              parseReturnStatement())
-                                listener: beginReturnStatement(return)
-                                parseExpression(return)
-                                  parsePrecedenceExpression(return, 1, true)
-                                    parseUnaryExpression(return, true)
-                                      parsePrimary(return, expression)
-                                        parseLiteralInt(return)
-                                          listener: handleLiteralInt(42)
-                                ensureSemicolon(42)
-                                listener: endReturnStatement(true, return, ;)
-                                inGenerator()
-                          listener: endThenStatement(;)
-                          listener: endIfStatement(if, null)
-                    notEofOrValue(}, return)
-                    parseStatement(;)
-                      parseStatementX(;)
-                        parseReturnStatement(;)
-                          listener: beginReturnStatement(return)
-                          parseExpression(return)
-                            parsePrecedenceExpression(return, 1, true)
-                              parseUnaryExpression(return, true)
-                                parsePrimary(return, expression)
-                                  inPlainSync()
-                                  parseSend(return, expression)
-                                    ensureIdentifier(return, expression)
-                                      reportRecoverableErrorWithToken(if, Instance of 'Template<(Token) => Message>')
-                                        listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'if'., null, {token: if}], if, if)
-                                      rewriter()
-                                      listener: handleIdentifier(, expression)
-                                    listener: handleNoTypeArguments(if)
-                                    parseArgumentsOpt()
-                                      listener: handleNoArguments(if)
-                                    listener: handleSend(, if)
-                          ensureSemicolon()
-                            reportRecoverableError(, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
-                              listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], if, if)
-                            rewriter()
-                          listener: endReturnStatement(true, return, ;)
-                          inGenerator()
-                    notEofOrValue(}, if)
-                    parseStatement(;)
-                      parseStatementX(;)
-                        parseIfStatement(;)
-                          listener: beginIfStatement(if)
-                          ensureParenthesizedCondition(if)
-                            parseExpressionInParenthesisRest(()
-                              parseExpression(()
-                                parsePrecedenceExpression((, 1, true)
-                                  parseUnaryExpression((, true)
-                                    parsePrimary((, expression)
-                                      parseSendOrFunctionLiteral((, expression)
-                                        parseSend((, expression)
-                                          ensureIdentifier((, expression)
-                                            listener: handleIdentifier(x, expression)
-                                          listener: handleNoTypeArguments(-)
-                                          parseArgumentsOpt(x)
-                                            listener: handleNoArguments(-)
-                                          listener: handleSend(x, -)
-                                  listener: beginBinaryExpression(-)
-                                  parsePrecedenceExpression(-, 14, true)
-                                    parseUnaryExpression(-, true)
-                                      parsePrimary(-, expression)
-                                        parseLiteralInt(-)
-                                          listener: handleLiteralInt(1)
-                                  listener: endBinaryExpression(-)
-                              ensureCloseParen(1, ()
-                            listener: handleParenthesizedCondition(()
-                          listener: beginThenStatement(+)
+                            listener: handleForLoopParts(for, (, ;, 0)
+                          listener: beginForStatementBody(+)
                           parseStatement())
                             parseStatementX())
                               parseExpressionStatementOrDeclaration(), false)
@@ -3315,535 +2642,300 @@
                                         listener: endBinaryExpression(+)
                                     ensureSemicolon(1)
                                     listener: handleExpressionStatement(;)
-                          listener: endThenStatement(;)
-                          listener: endIfStatement(if, null)
-                    notEofOrValue(}, })
-                    listener: endBlockFunctionBody(3, {, })
-                  listener: endClassMethod(null, , (, null, })
-                listener: endMember()
+                          listener: endForStatementBody(})
+                          listener: endForStatement(})
+                  notEofOrValue(}, })
+                  listener: endBlockFunctionBody(3, {, })
+                listener: endClassMethod(null, int, (, null, })
+              listener: endMember()
             notEofOrValue(}, int)
             parseClassOrMixinOrExtensionMemberImpl(}, DeclarationKind.Class, WrapperClass)
               parseMetadataStar(})
                 listener: beginMetadataStar(int)
                 listener: endMetadataStar(0)
               listener: beginMember()
-              parseFields(}, null, null, null, null, null, }, Instance of 'NoType', int, DeclarationKind.Class, WrapperClass)
-                reportRecoverableError(int, MissingConstFinalVarOrType)
-                  listener: handleRecoverableError(MissingConstFinalVarOrType, int, int)
-                listener: handleNoType(})
-                ensureIdentifier(}, fieldDeclaration)
-                  listener: handleIdentifier(int, fieldDeclaration)
-                parseFieldInitializerOpt(int, int, null, null, DeclarationKind.Class, WrapperClass)
-                  listener: handleNoFieldInitializer(in)
-                ensureSemicolon(int)
-                  reportRecoverableError(int, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
-                    listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
-                  rewriter()
-                listener: endClassFields(null, null, null, null, 1, int, ;)
-              listener: endMember()
-            notEofOrValue(}, in)
-            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
-              parseMetadataStar(;)
-                listener: beginMetadataStar(in)
-                listener: endMetadataStar(0)
-              listener: beginMember()
-              recoverFromInvalidMember(;, ;, null, null, null, null, null, ;, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
-                reportRecoverableErrorWithToken(in, Instance of 'Template<(Token) => Message>')
-                  listener: handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got 'in'., null, {token: in}], in, in)
-                listener: handleInvalidMember(in)
-                listener: endMember()
-            notEofOrValue(}, ()
-            parseClassOrMixinOrExtensionMemberImpl(in, DeclarationKind.Class, WrapperClass)
-              parseMetadataStar(in)
-                listener: beginMetadataStar(()
-                listener: endMetadataStar(0)
-              listener: beginMember()
-              recoverFromInvalidMember(in, in, null, null, null, null, null, in, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
-                parseMethod(in, null, null, null, null, null, in, Instance of 'NoType', null, (, DeclarationKind.Class, WrapperClass)
-                  listener: beginMethod(null, null, null, null, null, ()
-                  listener: handleNoType(in)
-                  ensureIdentifier(in, methodDeclaration)
-                    insertSyntheticIdentifier(in, methodDeclaration, message: null, messageOnToken: null)
-                      reportRecoverableError((, Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}])
-                        listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}], (, ()
-                      rewriter()
-                    listener: handleIdentifier(, methodDeclaration)
-                  parseQualifiedRestOpt(, methodDeclarationContinuation)
-                  parseMethodTypeVar()
-                    listener: handleNoTypeVariables(()
-                  parseGetterOrFormalParameters(, (, false, MemberKind.NonStaticMethod)
-                    parseFormalParameters(, MemberKind.NonStaticMethod)
-                      parseFormalParametersRest((, MemberKind.NonStaticMethod)
-                        listener: beginFormalParameters((, MemberKind.NonStaticMethod)
-                        parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
-                          parseMetadataStar(()
-                            listener: beginMetadataStar(int)
-                            listener: endMetadataStar(0)
-                          listener: beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
-                          listener: handleIdentifier(int, typeReference)
-                          listener: handleNoTypeArguments(x)
-                          listener: handleType(int, null)
-                          ensureIdentifier(int, formalParameterDeclaration)
-                            listener: handleIdentifier(x, formalParameterDeclaration)
-                          listener: handleFormalParameterWithoutValue())
-                          listener: endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
-                        listener: endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
-                  parseInitializersOpt())
-                    listener: handleNoInitializers()
-                  parseAsyncModifierOpt())
-                    listener: handleAsyncModifier(null, null)
-                    inPlainSync()
+              isReservedKeyword(if)
+              indicatesMethodOrField(()
+              parseMethod(}, null, null, null, null, null, }, Instance of 'SimpleType', null, if, DeclarationKind.Class, WrapperClass, true)
+                listener: beginMethod(null, null, null, null, null, if)
+                listener: handleIdentifier(int, typeReference)
+                listener: handleNoTypeArguments(if)
+                listener: handleType(int, null)
+                ensureIdentifierPotentiallyRecovered(int, methodDeclaration, true)
+                  reportRecoverableErrorWithToken(if, Instance of 'Template<(Token) => Message>')
+                    listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'if'., null, {token: if}], if, if)
+                  listener: handleIdentifier(if, methodDeclaration)
+                parseQualifiedRestOpt(if, methodDeclarationContinuation)
+                parseMethodTypeVar(if)
+                  listener: handleNoTypeVariables(()
+                parseGetterOrFormalParameters(if, if, false, MemberKind.NonStaticMethod)
+                  parseFormalParameters(if, MemberKind.NonStaticMethod)
+                    parseFormalParametersRest((, MemberKind.NonStaticMethod)
+                      listener: beginFormalParameters((, MemberKind.NonStaticMethod)
+                      parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+                        parseMetadataStar(()
+                          listener: beginMetadataStar(int)
+                          listener: endMetadataStar(0)
+                        listener: beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+                        listener: handleIdentifier(int, typeReference)
+                        listener: handleNoTypeArguments(x)
+                        listener: handleType(int, null)
+                        ensureIdentifier(int, formalParameterDeclaration)
+                          listener: handleIdentifier(x, formalParameterDeclaration)
+                        listener: handleFormalParameterWithoutValue())
+                        listener: endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+                      listener: endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
+                parseInitializersOpt())
+                  listener: handleNoInitializers()
+                parseAsyncModifierOpt())
+                  listener: handleAsyncModifier(null, null)
                   inPlainSync()
-                  parseFunctionBody(), false, true)
-                    listener: beginBlockFunctionBody({)
-                    notEofOrValue(}, if)
-                    parseStatement({)
-                      parseStatementX({)
-                        parseIfStatement({)
-                          listener: beginIfStatement(if)
-                          ensureParenthesizedCondition(if)
-                            parseExpressionInParenthesisRest(()
-                              parseExpression(()
-                                parsePrecedenceExpression((, 1, true)
-                                  parseUnaryExpression((, true)
-                                    parsePrimary((, expression)
-                                      parseSendOrFunctionLiteral((, expression)
-                                        parseSend((, expression)
-                                          ensureIdentifier((, expression)
-                                            listener: handleIdentifier(x, expression)
-                                          listener: handleNoTypeArguments(==)
-                                          parseArgumentsOpt(x)
-                                            listener: handleNoArguments(==)
-                                          listener: handleSend(x, ==)
-                                  listener: beginBinaryExpression(==)
-                                  parsePrecedenceExpression(==, 8, true)
-                                    parseUnaryExpression(==, true)
-                                      parsePrimary(==, expression)
-                                        parseLiteralInt(==)
-                                          listener: handleLiteralInt(0)
-                                  listener: endBinaryExpression(==)
-                              ensureCloseParen(0, ()
-                            listener: handleParenthesizedCondition(()
-                          listener: beginThenStatement(return)
-                          parseStatement())
-                            parseStatementX())
-                              parseReturnStatement())
-                                listener: beginReturnStatement(return)
-                                parseExpression(return)
-                                  parsePrecedenceExpression(return, 1, true)
-                                    parseUnaryExpression(return, true)
-                                      parsePrimary(return, expression)
-                                        parseLiteralInt(return)
-                                          listener: handleLiteralInt(42)
-                                ensureSemicolon(42)
-                                listener: endReturnStatement(true, return, ;)
-                                inGenerator()
-                          listener: endThenStatement(;)
-                          listener: endIfStatement(if, null)
-                    notEofOrValue(}, return)
-                    parseStatement(;)
-                      parseStatementX(;)
-                        parseReturnStatement(;)
-                          listener: beginReturnStatement(return)
-                          parseExpression(return)
-                            parsePrecedenceExpression(return, 1, true)
-                              parseUnaryExpression(return, true)
-                                parsePrimary(return, expression)
-                                  inPlainSync()
-                                  parseSend(return, expression)
-                                    ensureIdentifier(return, expression)
-                                      reportRecoverableErrorWithToken(in, Instance of 'Template<(Token) => Message>')
-                                        listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'in'., null, {token: in}], in, in)
-                                      listener: handleIdentifier(in, expression)
-                                    listener: handleNoTypeArguments(()
-                                    parseArgumentsOpt(in)
-                                      parseArguments(in)
-                                        parseArgumentsRest(()
-                                          listener: beginArguments(()
-                                          parseExpression(()
-                                            parsePrecedenceExpression((, 1, true)
-                                              parseUnaryExpression((, true)
-                                                parsePrimary((, expression)
-                                                  parseSendOrFunctionLiteral((, expression)
-                                                    parseSend((, expression)
-                                                      ensureIdentifier((, expression)
-                                                        listener: handleIdentifier(x, expression)
-                                                      listener: handleNoTypeArguments(-)
-                                                      parseArgumentsOpt(x)
-                                                        listener: handleNoArguments(-)
-                                                      listener: handleSend(x, -)
-                                              listener: beginBinaryExpression(-)
-                                              parsePrecedenceExpression(-, 14, true)
-                                                parseUnaryExpression(-, true)
-                                                  parsePrimary(-, expression)
-                                                    parseLiteralInt(-)
-                                                      listener: handleLiteralInt(1)
-                                              listener: endBinaryExpression(-)
-                                          listener: endArguments(1, (, ))
-                                    listener: handleSend(in, +)
-                              listener: beginBinaryExpression(+)
-                              parsePrecedenceExpression(+, 14, true)
-                                parseUnaryExpression(+, true)
-                                  parsePrimary(+, expression)
-                                    parseLiteralInt(+)
-                                      listener: handleLiteralInt(1)
-                              listener: endBinaryExpression(+)
-                          ensureSemicolon(1)
-                          listener: endReturnStatement(true, return, ;)
-                          inGenerator()
-                    notEofOrValue(}, })
-                    listener: endBlockFunctionBody(2, {, })
-                  listener: endClassMethod(null, , (, null, })
-                listener: endMember()
-            notEofOrValue(}, int)
-            parseClassOrMixinOrExtensionMemberImpl(}, DeclarationKind.Class, WrapperClass)
-              parseMetadataStar(})
-                listener: beginMetadataStar(int)
-                listener: endMetadataStar(0)
-              listener: beginMember()
-              parseFields(}, null, null, null, null, null, }, Instance of 'NoType', int, DeclarationKind.Class, WrapperClass)
-                reportRecoverableError(int, MissingConstFinalVarOrType)
-                  listener: handleRecoverableError(MissingConstFinalVarOrType, int, int)
-                listener: handleNoType(})
-                ensureIdentifier(}, fieldDeclaration)
-                  listener: handleIdentifier(int, fieldDeclaration)
-                parseFieldInitializerOpt(int, int, null, null, DeclarationKind.Class, WrapperClass)
-                  listener: handleNoFieldInitializer(is)
-                ensureSemicolon(int)
-                  reportRecoverableError(int, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
-                    listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
-                  rewriter()
-                listener: endClassFields(null, null, null, null, 1, int, ;)
-              listener: endMember()
-            notEofOrValue(}, is)
-            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
-              parseMetadataStar(;)
-                listener: beginMetadataStar(is)
-                listener: endMetadataStar(0)
-              listener: beginMember()
-              recoverFromInvalidMember(;, ;, null, null, null, null, null, ;, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
-                reportRecoverableErrorWithToken(is, Instance of 'Template<(Token) => Message>')
-                  listener: handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got 'is'., null, {token: is}], is, is)
-                listener: handleInvalidMember(is)
-                listener: endMember()
-            notEofOrValue(}, ()
-            parseClassOrMixinOrExtensionMemberImpl(is, DeclarationKind.Class, WrapperClass)
-              parseMetadataStar(is)
-                listener: beginMetadataStar(()
-                listener: endMetadataStar(0)
-              listener: beginMember()
-              recoverFromInvalidMember(is, is, null, null, null, null, null, is, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
-                parseMethod(is, null, null, null, null, null, is, Instance of 'NoType', null, (, DeclarationKind.Class, WrapperClass)
-                  listener: beginMethod(null, null, null, null, null, ()
-                  listener: handleNoType(is)
-                  ensureIdentifier(is, methodDeclaration)
-                    insertSyntheticIdentifier(is, methodDeclaration, message: null, messageOnToken: null)
-                      reportRecoverableError((, Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}])
-                        listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}], (, ()
-                      rewriter()
-                    listener: handleIdentifier(, methodDeclaration)
-                  parseQualifiedRestOpt(, methodDeclarationContinuation)
-                  parseMethodTypeVar()
-                    listener: handleNoTypeVariables(()
-                  parseGetterOrFormalParameters(, (, false, MemberKind.NonStaticMethod)
-                    parseFormalParameters(, MemberKind.NonStaticMethod)
-                      parseFormalParametersRest((, MemberKind.NonStaticMethod)
-                        listener: beginFormalParameters((, MemberKind.NonStaticMethod)
-                        parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
-                          parseMetadataStar(()
-                            listener: beginMetadataStar(int)
-                            listener: endMetadataStar(0)
-                          listener: beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
-                          listener: handleIdentifier(int, typeReference)
-                          listener: handleNoTypeArguments(x)
-                          listener: handleType(int, null)
-                          ensureIdentifier(int, formalParameterDeclaration)
-                            listener: handleIdentifier(x, formalParameterDeclaration)
-                          listener: handleFormalParameterWithoutValue())
-                          listener: endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
-                        listener: endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
-                  parseInitializersOpt())
-                    listener: handleNoInitializers()
-                  parseAsyncModifierOpt())
-                    listener: handleAsyncModifier(null, null)
-                    inPlainSync()
-                  inPlainSync()
-                  parseFunctionBody(), false, true)
-                    listener: beginBlockFunctionBody({)
-                    notEofOrValue(}, if)
-                    parseStatement({)
-                      parseStatementX({)
-                        parseIfStatement({)
-                          listener: beginIfStatement(if)
-                          ensureParenthesizedCondition(if)
-                            parseExpressionInParenthesisRest(()
-                              parseExpression(()
-                                parsePrecedenceExpression((, 1, true)
-                                  parseUnaryExpression((, true)
-                                    parsePrimary((, expression)
-                                      parseSendOrFunctionLiteral((, expression)
-                                        parseSend((, expression)
-                                          ensureIdentifier((, expression)
-                                            listener: handleIdentifier(x, expression)
-                                          listener: handleNoTypeArguments(==)
-                                          parseArgumentsOpt(x)
-                                            listener: handleNoArguments(==)
-                                          listener: handleSend(x, ==)
-                                  listener: beginBinaryExpression(==)
-                                  parsePrecedenceExpression(==, 8, true)
-                                    parseUnaryExpression(==, true)
-                                      parsePrimary(==, expression)
-                                        parseLiteralInt(==)
-                                          listener: handleLiteralInt(0)
-                                  listener: endBinaryExpression(==)
-                              ensureCloseParen(0, ()
-                            listener: handleParenthesizedCondition(()
-                          listener: beginThenStatement(return)
-                          parseStatement())
-                            parseStatementX())
-                              parseReturnStatement())
-                                listener: beginReturnStatement(return)
-                                parseExpression(return)
-                                  parsePrecedenceExpression(return, 1, true)
-                                    parseUnaryExpression(return, true)
-                                      parsePrimary(return, expression)
-                                        parseLiteralInt(return)
-                                          listener: handleLiteralInt(42)
-                                ensureSemicolon(42)
-                                listener: endReturnStatement(true, return, ;)
-                                inGenerator()
-                          listener: endThenStatement(;)
-                          listener: endIfStatement(if, null)
-                    notEofOrValue(}, return)
-                    parseStatement(;)
-                      parseStatementX(;)
-                        parseReturnStatement(;)
-                          listener: beginReturnStatement(return)
-                          parseExpression(return)
-                            parsePrecedenceExpression(return, 1, true)
-                              parseUnaryExpression(return, true)
-                                parsePrimary(return, expression)
-                                  inPlainSync()
-                                  parseSend(return, expression)
-                                    ensureIdentifier(return, expression)
-                                      reportRecoverableErrorWithToken(is, Instance of 'Template<(Token) => Message>')
-                                        listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'is'., null, {token: is}], is, is)
-                                      rewriter()
-                                      listener: handleIdentifier(, expression)
-                                    listener: handleNoTypeArguments(is)
-                                    parseArgumentsOpt()
-                                      listener: handleNoArguments(is)
-                                    listener: handleSend(, is)
-                              parseIsOperatorRest()
-                                listener: beginIsOperatorType(is)
-                                computeTypeAfterIsOrAs(is)
-                                reportRecoverableErrorWithToken((, Instance of 'Template<(Token) => Message>')
-                                  listener: handleRecoverableError(Message[ExpectedType, Expected a type, but got '('., null, {token: (}], (, ()
-                                rewriter()
-                                listener: handleIdentifier(, typeReference)
-                                listener: handleNoTypeArguments(()
-                                listener: handleType(, null)
-                                listener: endIsOperatorType(is)
-                                listener: handleIsOperator(is, null)
-                                skipChainedAsIsOperators()
-                          ensureSemicolon()
-                            reportRecoverableError(, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
-                              listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], (, ()
-                            rewriter()
-                          listener: endReturnStatement(true, return, ;)
-                          inGenerator()
-                    notEofOrValue(}, ()
-                    parseStatement(;)
-                      parseStatementX(;)
-                        parseExpressionStatementOrDeclaration(;, false)
-                          parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
-                            looksLikeLocalFunction(()
-                            parseExpressionStatement(;)
-                              parseExpression(;)
-                                parsePrecedenceExpression(;, 1, true)
-                                  parseUnaryExpression(;, true)
-                                    parsePrimary(;, expression)
-                                      parseParenthesizedExpressionOrFunctionLiteral(;)
-                                        parseParenthesizedExpression(;)
-                                          parseExpressionInParenthesis(;)
-                                            parseExpressionInParenthesisRest(()
-                                              parseExpression(()
-                                                parsePrecedenceExpression((, 1, true)
-                                                  parseUnaryExpression((, true)
-                                                    parsePrimary((, expression)
-                                                      parseSendOrFunctionLiteral((, expression)
-                                                        parseSend((, expression)
-                                                          ensureIdentifier((, expression)
-                                                            listener: handleIdentifier(x, expression)
-                                                          listener: handleNoTypeArguments(-)
-                                                          parseArgumentsOpt(x)
-                                                            listener: handleNoArguments(-)
-                                                          listener: handleSend(x, -)
-                                                  listener: beginBinaryExpression(-)
-                                                  parsePrecedenceExpression(-, 14, true)
-                                                    parseUnaryExpression(-, true)
-                                                      parsePrimary(-, expression)
-                                                        parseLiteralInt(-)
-                                                          listener: handleLiteralInt(1)
-                                                  listener: endBinaryExpression(-)
-                                              ensureCloseParen(1, ()
-                                          listener: handleParenthesizedExpression(()
-                                  listener: beginBinaryExpression(+)
-                                  parsePrecedenceExpression(+, 14, true)
-                                    parseUnaryExpression(+, true)
-                                      parsePrimary(+, expression)
-                                        parseLiteralInt(+)
-                                          listener: handleLiteralInt(1)
-                                  listener: endBinaryExpression(+)
-                              ensureSemicolon(1)
-                              listener: handleExpressionStatement(;)
-                    notEofOrValue(}, })
-                    listener: endBlockFunctionBody(3, {, })
-                  listener: endClassMethod(null, , (, null, })
-                listener: endMember()
-            notEofOrValue(}, int)
-            parseClassOrMixinOrExtensionMemberImpl(}, DeclarationKind.Class, WrapperClass)
-              parseMetadataStar(})
-                listener: beginMetadataStar(int)
-                listener: endMetadataStar(0)
-              listener: beginMember()
-              parseFields(}, null, null, null, null, null, }, Instance of 'NoType', int, DeclarationKind.Class, WrapperClass)
-                reportRecoverableError(int, MissingConstFinalVarOrType)
-                  listener: handleRecoverableError(MissingConstFinalVarOrType, int, int)
-                listener: handleNoType(})
-                ensureIdentifier(}, fieldDeclaration)
-                  listener: handleIdentifier(int, fieldDeclaration)
-                parseFieldInitializerOpt(int, int, null, null, DeclarationKind.Class, WrapperClass)
-                  listener: handleNoFieldInitializer(new)
-                ensureSemicolon(int)
-                  reportRecoverableError(int, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
-                    listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
-                  rewriter()
-                listener: endClassFields(null, null, null, null, 1, int, ;)
-              listener: endMember()
-            notEofOrValue(}, new)
-            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
-              parseMetadataStar(;)
-                listener: beginMetadataStar(new)
-                listener: endMetadataStar(0)
-              listener: beginMember()
-              recoverFromInvalidMember(;, ;, null, null, null, null, null, ;, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
-                reportRecoverableErrorWithToken(new, Instance of 'Template<(Token) => Message>')
-                  listener: handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got 'new'., null, {token: new}], new, new)
-                listener: handleInvalidMember(new)
-                listener: endMember()
-            notEofOrValue(}, ()
-            parseClassOrMixinOrExtensionMemberImpl(new, DeclarationKind.Class, WrapperClass)
-              parseMetadataStar(new)
-                listener: beginMetadataStar(()
-                listener: endMetadataStar(0)
-              listener: beginMember()
-              recoverFromInvalidMember(new, new, null, null, null, null, null, new, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
-                parseMethod(new, null, null, null, null, null, new, Instance of 'NoType', null, (, DeclarationKind.Class, WrapperClass)
-                  listener: beginMethod(null, null, null, null, null, ()
-                  listener: handleNoType(new)
-                  ensureIdentifier(new, methodDeclaration)
-                    insertSyntheticIdentifier(new, methodDeclaration, message: null, messageOnToken: null)
-                      reportRecoverableError((, Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}])
-                        listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}], (, ()
-                      rewriter()
-                    listener: handleIdentifier(, methodDeclaration)
-                  parseQualifiedRestOpt(, methodDeclarationContinuation)
-                  parseMethodTypeVar()
-                    listener: handleNoTypeVariables(()
-                  parseGetterOrFormalParameters(, (, false, MemberKind.NonStaticMethod)
-                    parseFormalParameters(, MemberKind.NonStaticMethod)
-                      parseFormalParametersRest((, MemberKind.NonStaticMethod)
-                        listener: beginFormalParameters((, MemberKind.NonStaticMethod)
-                        parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
-                          parseMetadataStar(()
-                            listener: beginMetadataStar(int)
-                            listener: endMetadataStar(0)
-                          listener: beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
-                          listener: handleIdentifier(int, typeReference)
-                          listener: handleNoTypeArguments(x)
-                          listener: handleType(int, null)
-                          ensureIdentifier(int, formalParameterDeclaration)
-                            listener: handleIdentifier(x, formalParameterDeclaration)
-                          listener: handleFormalParameterWithoutValue())
-                          listener: endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
-                        listener: endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
-                  parseInitializersOpt())
-                    listener: handleNoInitializers()
-                  parseAsyncModifierOpt())
-                    listener: handleAsyncModifier(null, null)
-                    inPlainSync()
-                  inPlainSync()
-                  parseFunctionBody(), false, true)
-                    listener: beginBlockFunctionBody({)
-                    notEofOrValue(}, if)
-                    parseStatement({)
-                      parseStatementX({)
-                        parseIfStatement({)
-                          listener: beginIfStatement(if)
-                          ensureParenthesizedCondition(if)
-                            parseExpressionInParenthesisRest(()
-                              parseExpression(()
-                                parsePrecedenceExpression((, 1, true)
-                                  parseUnaryExpression((, true)
-                                    parsePrimary((, expression)
-                                      parseSendOrFunctionLiteral((, expression)
-                                        parseSend((, expression)
-                                          ensureIdentifier((, expression)
-                                            listener: handleIdentifier(x, expression)
-                                          listener: handleNoTypeArguments(==)
-                                          parseArgumentsOpt(x)
-                                            listener: handleNoArguments(==)
-                                          listener: handleSend(x, ==)
-                                  listener: beginBinaryExpression(==)
-                                  parsePrecedenceExpression(==, 8, true)
-                                    parseUnaryExpression(==, true)
-                                      parsePrimary(==, expression)
-                                        parseLiteralInt(==)
-                                          listener: handleLiteralInt(0)
-                                  listener: endBinaryExpression(==)
-                              ensureCloseParen(0, ()
-                            listener: handleParenthesizedCondition(()
-                          listener: beginThenStatement(return)
-                          parseStatement())
-                            parseStatementX())
-                              parseReturnStatement())
-                                listener: beginReturnStatement(return)
-                                parseExpression(return)
-                                  parsePrecedenceExpression(return, 1, true)
-                                    parseUnaryExpression(return, true)
-                                      parsePrimary(return, expression)
-                                        parseLiteralInt(return)
-                                          listener: handleLiteralInt(42)
-                                ensureSemicolon(42)
-                                listener: endReturnStatement(true, return, ;)
-                                inGenerator()
-                          listener: endThenStatement(;)
-                          listener: endIfStatement(if, null)
-                    notEofOrValue(}, return)
-                    parseStatement(;)
-                      parseStatementX(;)
-                        parseReturnStatement(;)
-                          listener: beginReturnStatement(return)
-                          parseExpression(return)
-                            parsePrecedenceExpression(return, 1, true)
-                              parseUnaryExpression(return, true)
-                                parsePrimary(return, expression)
-                                  parseNewExpression(return)
-                                    listener: beginNewExpression(new)
-                                    parseConstructorReference(new, null)
-                                      ensureIdentifier(new, constructorReference)
-                                        insertSyntheticIdentifier(new, constructorReference, message: Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}], messageOnToken: null)
-                                          reportRecoverableError((, Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}])
-                                            listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}], (, ()
+                inPlainSync()
+                parseFunctionBody(), false, true)
+                  listener: beginBlockFunctionBody({)
+                  notEofOrValue(}, if)
+                  parseStatement({)
+                    parseStatementX({)
+                      parseIfStatement({)
+                        listener: beginIfStatement(if)
+                        ensureParenthesizedCondition(if)
+                          parseExpressionInParenthesisRest(()
+                            parseExpression(()
+                              parsePrecedenceExpression((, 1, true)
+                                parseUnaryExpression((, true)
+                                  parsePrimary((, expression)
+                                    parseSendOrFunctionLiteral((, expression)
+                                      parseSend((, expression)
+                                        ensureIdentifier((, expression)
+                                          listener: handleIdentifier(x, expression)
+                                        listener: handleNoTypeArguments(==)
+                                        parseArgumentsOpt(x)
+                                          listener: handleNoArguments(==)
+                                        listener: handleSend(x, ==)
+                                listener: beginBinaryExpression(==)
+                                parsePrecedenceExpression(==, 8, true)
+                                  parseUnaryExpression(==, true)
+                                    parsePrimary(==, expression)
+                                      parseLiteralInt(==)
+                                        listener: handleLiteralInt(0)
+                                listener: endBinaryExpression(==)
+                            ensureCloseParen(0, ()
+                          listener: handleParenthesizedCondition(()
+                        listener: beginThenStatement(return)
+                        parseStatement())
+                          parseStatementX())
+                            parseReturnStatement())
+                              listener: beginReturnStatement(return)
+                              parseExpression(return)
+                                parsePrecedenceExpression(return, 1, true)
+                                  parseUnaryExpression(return, true)
+                                    parsePrimary(return, expression)
+                                      parseLiteralInt(return)
+                                        listener: handleLiteralInt(42)
+                              ensureSemicolon(42)
+                              listener: endReturnStatement(true, return, ;)
+                              inGenerator()
+                        listener: endThenStatement(;)
+                        listener: endIfStatement(if, null)
+                  notEofOrValue(}, return)
+                  parseStatement(;)
+                    parseStatementX(;)
+                      parseReturnStatement(;)
+                        listener: beginReturnStatement(return)
+                        parseExpression(return)
+                          parsePrecedenceExpression(return, 1, true)
+                            parseUnaryExpression(return, true)
+                              parsePrimary(return, expression)
+                                inPlainSync()
+                                parseSend(return, expression)
+                                  ensureIdentifier(return, expression)
+                                    reportRecoverableErrorWithToken(if, Instance of 'Template<(Token) => Message>')
+                                      listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'if'., null, {token: if}], if, if)
+                                    rewriter()
+                                    listener: handleIdentifier(, expression)
+                                  listener: handleNoTypeArguments(if)
+                                  parseArgumentsOpt()
+                                    listener: handleNoArguments(if)
+                                  listener: handleSend(, if)
+                        ensureSemicolon()
+                          reportRecoverableError(, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+                            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], if, if)
+                          rewriter()
+                        listener: endReturnStatement(true, return, ;)
+                        inGenerator()
+                  notEofOrValue(}, if)
+                  parseStatement(;)
+                    parseStatementX(;)
+                      parseIfStatement(;)
+                        listener: beginIfStatement(if)
+                        ensureParenthesizedCondition(if)
+                          parseExpressionInParenthesisRest(()
+                            parseExpression(()
+                              parsePrecedenceExpression((, 1, true)
+                                parseUnaryExpression((, true)
+                                  parsePrimary((, expression)
+                                    parseSendOrFunctionLiteral((, expression)
+                                      parseSend((, expression)
+                                        ensureIdentifier((, expression)
+                                          listener: handleIdentifier(x, expression)
+                                        listener: handleNoTypeArguments(-)
+                                        parseArgumentsOpt(x)
+                                          listener: handleNoArguments(-)
+                                        listener: handleSend(x, -)
+                                listener: beginBinaryExpression(-)
+                                parsePrecedenceExpression(-, 14, true)
+                                  parseUnaryExpression(-, true)
+                                    parsePrimary(-, expression)
+                                      parseLiteralInt(-)
+                                        listener: handleLiteralInt(1)
+                                listener: endBinaryExpression(-)
+                            ensureCloseParen(1, ()
+                          listener: handleParenthesizedCondition(()
+                        listener: beginThenStatement(+)
+                        parseStatement())
+                          parseStatementX())
+                            parseExpressionStatementOrDeclaration(), false)
+                              parseExpressionStatementOrDeclarationAfterModifiers(), ), null, null, null, false)
+                                looksLikeLocalFunction(+)
+                                parseExpressionStatement())
+                                  parseExpression())
+                                    parsePrecedenceExpression(), 1, true)
+                                      parseUnaryExpression(), true)
+                                        rewriteAndRecover(), UnsupportedPrefixPlus, )
+                                          reportRecoverableError(+, UnsupportedPrefixPlus)
+                                            listener: handleRecoverableError(UnsupportedPrefixPlus, +, +)
                                           rewriter()
-                                        listener: handleIdentifier(, constructorReference)
-                                      listener: beginConstructorReference()
-                                      parseQualifiedRestOpt(, constructorReferenceContinuation)
-                                      listener: handleNoTypeArguments(()
-                                      listener: handleNoConstructorReferenceContinuationAfterTypeArguments(()
-                                      listener: endConstructorReference(, null, ()
-                                    parseConstructorInvocationArguments()
+                                        parsePrimary(), expression)
+                                          parseSendOrFunctionLiteral(), expression)
+                                            parseSend(), expression)
+                                              ensureIdentifier(), expression)
+                                                listener: handleIdentifier(, expression)
+                                              listener: handleNoTypeArguments(+)
+                                              parseArgumentsOpt()
+                                                listener: handleNoArguments(+)
+                                              listener: handleSend(, +)
+                                      listener: beginBinaryExpression(+)
+                                      parsePrecedenceExpression(+, 14, true)
+                                        parseUnaryExpression(+, true)
+                                          parsePrimary(+, expression)
+                                            parseLiteralInt(+)
+                                              listener: handleLiteralInt(1)
+                                      listener: endBinaryExpression(+)
+                                  ensureSemicolon(1)
+                                  listener: handleExpressionStatement(;)
+                        listener: endThenStatement(;)
+                        listener: endIfStatement(if, null)
+                  notEofOrValue(}, })
+                  listener: endBlockFunctionBody(3, {, })
+                listener: endClassMethod(null, int, (, null, })
+              listener: endMember()
+            notEofOrValue(}, int)
+            parseClassOrMixinOrExtensionMemberImpl(}, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(})
+                listener: beginMetadataStar(int)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              isReservedKeyword(in)
+              indicatesMethodOrField(()
+              parseMethod(}, null, null, null, null, null, }, Instance of 'SimpleType', null, in, DeclarationKind.Class, WrapperClass, true)
+                listener: beginMethod(null, null, null, null, null, in)
+                listener: handleIdentifier(int, typeReference)
+                listener: handleNoTypeArguments(in)
+                listener: handleType(int, null)
+                ensureIdentifierPotentiallyRecovered(int, methodDeclaration, true)
+                  reportRecoverableErrorWithToken(in, Instance of 'Template<(Token) => Message>')
+                    listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'in'., null, {token: in}], in, in)
+                  listener: handleIdentifier(in, methodDeclaration)
+                parseQualifiedRestOpt(in, methodDeclarationContinuation)
+                parseMethodTypeVar(in)
+                  listener: handleNoTypeVariables(()
+                parseGetterOrFormalParameters(in, in, false, MemberKind.NonStaticMethod)
+                  parseFormalParameters(in, MemberKind.NonStaticMethod)
+                    parseFormalParametersRest((, MemberKind.NonStaticMethod)
+                      listener: beginFormalParameters((, MemberKind.NonStaticMethod)
+                      parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+                        parseMetadataStar(()
+                          listener: beginMetadataStar(int)
+                          listener: endMetadataStar(0)
+                        listener: beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+                        listener: handleIdentifier(int, typeReference)
+                        listener: handleNoTypeArguments(x)
+                        listener: handleType(int, null)
+                        ensureIdentifier(int, formalParameterDeclaration)
+                          listener: handleIdentifier(x, formalParameterDeclaration)
+                        listener: handleFormalParameterWithoutValue())
+                        listener: endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+                      listener: endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
+                parseInitializersOpt())
+                  listener: handleNoInitializers()
+                parseAsyncModifierOpt())
+                  listener: handleAsyncModifier(null, null)
+                  inPlainSync()
+                inPlainSync()
+                parseFunctionBody(), false, true)
+                  listener: beginBlockFunctionBody({)
+                  notEofOrValue(}, if)
+                  parseStatement({)
+                    parseStatementX({)
+                      parseIfStatement({)
+                        listener: beginIfStatement(if)
+                        ensureParenthesizedCondition(if)
+                          parseExpressionInParenthesisRest(()
+                            parseExpression(()
+                              parsePrecedenceExpression((, 1, true)
+                                parseUnaryExpression((, true)
+                                  parsePrimary((, expression)
+                                    parseSendOrFunctionLiteral((, expression)
+                                      parseSend((, expression)
+                                        ensureIdentifier((, expression)
+                                          listener: handleIdentifier(x, expression)
+                                        listener: handleNoTypeArguments(==)
+                                        parseArgumentsOpt(x)
+                                          listener: handleNoArguments(==)
+                                        listener: handleSend(x, ==)
+                                listener: beginBinaryExpression(==)
+                                parsePrecedenceExpression(==, 8, true)
+                                  parseUnaryExpression(==, true)
+                                    parsePrimary(==, expression)
+                                      parseLiteralInt(==)
+                                        listener: handleLiteralInt(0)
+                                listener: endBinaryExpression(==)
+                            ensureCloseParen(0, ()
+                          listener: handleParenthesizedCondition(()
+                        listener: beginThenStatement(return)
+                        parseStatement())
+                          parseStatementX())
+                            parseReturnStatement())
+                              listener: beginReturnStatement(return)
+                              parseExpression(return)
+                                parsePrecedenceExpression(return, 1, true)
+                                  parseUnaryExpression(return, true)
+                                    parsePrimary(return, expression)
+                                      parseLiteralInt(return)
+                                        listener: handleLiteralInt(42)
+                              ensureSemicolon(42)
+                              listener: endReturnStatement(true, return, ;)
+                              inGenerator()
+                        listener: endThenStatement(;)
+                        listener: endIfStatement(if, null)
+                  notEofOrValue(}, return)
+                  parseStatement(;)
+                    parseStatementX(;)
+                      parseReturnStatement(;)
+                        listener: beginReturnStatement(return)
+                        parseExpression(return)
+                          parsePrecedenceExpression(return, 1, true)
+                            parseUnaryExpression(return, true)
+                              parsePrimary(return, expression)
+                                inPlainSync()
+                                parseSend(return, expression)
+                                  ensureIdentifier(return, expression)
+                                    reportRecoverableErrorWithToken(in, Instance of 'Template<(Token) => Message>')
+                                      listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'in'., null, {token: in}], in, in)
+                                    listener: handleIdentifier(in, expression)
+                                  listener: handleNoTypeArguments(()
+                                  parseArgumentsOpt(in)
+                                    parseArguments(in)
                                       parseArgumentsRest(()
                                         listener: beginArguments(()
                                         parseExpression(()
@@ -3866,500 +2958,162 @@
                                                     listener: handleLiteralInt(1)
                                             listener: endBinaryExpression(-)
                                         listener: endArguments(1, (, ))
-                                    listener: endNewExpression(new)
-                              listener: beginBinaryExpression(+)
-                              parsePrecedenceExpression(+, 14, true)
-                                parseUnaryExpression(+, true)
-                                  parsePrimary(+, expression)
-                                    parseLiteralInt(+)
-                                      listener: handleLiteralInt(1)
-                              listener: endBinaryExpression(+)
-                          ensureSemicolon(1)
-                          listener: endReturnStatement(true, return, ;)
-                          inGenerator()
-                    notEofOrValue(}, })
-                    listener: endBlockFunctionBody(2, {, })
-                  listener: endClassMethod(null, , (, null, })
-                listener: endMember()
+                                  listener: handleSend(in, +)
+                            listener: beginBinaryExpression(+)
+                            parsePrecedenceExpression(+, 14, true)
+                              parseUnaryExpression(+, true)
+                                parsePrimary(+, expression)
+                                  parseLiteralInt(+)
+                                    listener: handleLiteralInt(1)
+                            listener: endBinaryExpression(+)
+                        ensureSemicolon(1)
+                        listener: endReturnStatement(true, return, ;)
+                        inGenerator()
+                  notEofOrValue(}, })
+                  listener: endBlockFunctionBody(2, {, })
+                listener: endClassMethod(null, int, (, null, })
+              listener: endMember()
             notEofOrValue(}, int)
             parseClassOrMixinOrExtensionMemberImpl(}, DeclarationKind.Class, WrapperClass)
               parseMetadataStar(})
                 listener: beginMetadataStar(int)
                 listener: endMetadataStar(0)
               listener: beginMember()
-              parseFields(}, null, null, null, null, null, }, Instance of 'NoType', int, DeclarationKind.Class, WrapperClass)
-                reportRecoverableError(int, MissingConstFinalVarOrType)
-                  listener: handleRecoverableError(MissingConstFinalVarOrType, int, int)
-                listener: handleNoType(})
-                ensureIdentifier(}, fieldDeclaration)
-                  listener: handleIdentifier(int, fieldDeclaration)
-                parseFieldInitializerOpt(int, int, null, null, DeclarationKind.Class, WrapperClass)
-                  listener: handleNoFieldInitializer(null)
-                ensureSemicolon(int)
-                  reportRecoverableError(int, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
-                    listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
-                  rewriter()
-                listener: endClassFields(null, null, null, null, 1, int, ;)
-              listener: endMember()
-            notEofOrValue(}, null)
-            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
-              parseMetadataStar(;)
-                listener: beginMetadataStar(null)
-                listener: endMetadataStar(0)
-              listener: beginMember()
-              recoverFromInvalidMember(;, ;, null, null, null, null, null, ;, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
-                reportRecoverableErrorWithToken(null, Instance of 'Template<(Token) => Message>')
-                  listener: handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got 'null'., null, {token: null}], null, null)
-                listener: handleInvalidMember(null)
-                listener: endMember()
-            notEofOrValue(}, ()
-            parseClassOrMixinOrExtensionMemberImpl(null, DeclarationKind.Class, WrapperClass)
-              parseMetadataStar(null)
-                listener: beginMetadataStar(()
-                listener: endMetadataStar(0)
-              listener: beginMember()
-              recoverFromInvalidMember(null, null, null, null, null, null, null, null, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
-                parseMethod(null, null, null, null, null, null, null, Instance of 'NoType', null, (, DeclarationKind.Class, WrapperClass)
-                  listener: beginMethod(null, null, null, null, null, ()
-                  listener: handleNoType(null)
-                  ensureIdentifier(null, methodDeclaration)
-                    insertSyntheticIdentifier(null, methodDeclaration, message: null, messageOnToken: null)
-                      reportRecoverableError((, Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}])
-                        listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}], (, ()
-                      rewriter()
-                    listener: handleIdentifier(, methodDeclaration)
-                  parseQualifiedRestOpt(, methodDeclarationContinuation)
-                  parseMethodTypeVar()
-                    listener: handleNoTypeVariables(()
-                  parseGetterOrFormalParameters(, (, false, MemberKind.NonStaticMethod)
-                    parseFormalParameters(, MemberKind.NonStaticMethod)
-                      parseFormalParametersRest((, MemberKind.NonStaticMethod)
-                        listener: beginFormalParameters((, MemberKind.NonStaticMethod)
-                        parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
-                          parseMetadataStar(()
-                            listener: beginMetadataStar(int)
-                            listener: endMetadataStar(0)
-                          listener: beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
-                          listener: handleIdentifier(int, typeReference)
-                          listener: handleNoTypeArguments(x)
-                          listener: handleType(int, null)
-                          ensureIdentifier(int, formalParameterDeclaration)
-                            listener: handleIdentifier(x, formalParameterDeclaration)
-                          listener: handleFormalParameterWithoutValue())
-                          listener: endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
-                        listener: endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
-                  parseInitializersOpt())
-                    listener: handleNoInitializers()
-                  parseAsyncModifierOpt())
-                    listener: handleAsyncModifier(null, null)
-                    inPlainSync()
+              isReservedKeyword(is)
+              indicatesMethodOrField(()
+              parseMethod(}, null, null, null, null, null, }, Instance of 'SimpleType', null, is, DeclarationKind.Class, WrapperClass, true)
+                listener: beginMethod(null, null, null, null, null, is)
+                listener: handleIdentifier(int, typeReference)
+                listener: handleNoTypeArguments(is)
+                listener: handleType(int, null)
+                ensureIdentifierPotentiallyRecovered(int, methodDeclaration, true)
+                  reportRecoverableErrorWithToken(is, Instance of 'Template<(Token) => Message>')
+                    listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'is'., null, {token: is}], is, is)
+                  listener: handleIdentifier(is, methodDeclaration)
+                parseQualifiedRestOpt(is, methodDeclarationContinuation)
+                parseMethodTypeVar(is)
+                  listener: handleNoTypeVariables(()
+                parseGetterOrFormalParameters(is, is, false, MemberKind.NonStaticMethod)
+                  parseFormalParameters(is, MemberKind.NonStaticMethod)
+                    parseFormalParametersRest((, MemberKind.NonStaticMethod)
+                      listener: beginFormalParameters((, MemberKind.NonStaticMethod)
+                      parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+                        parseMetadataStar(()
+                          listener: beginMetadataStar(int)
+                          listener: endMetadataStar(0)
+                        listener: beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+                        listener: handleIdentifier(int, typeReference)
+                        listener: handleNoTypeArguments(x)
+                        listener: handleType(int, null)
+                        ensureIdentifier(int, formalParameterDeclaration)
+                          listener: handleIdentifier(x, formalParameterDeclaration)
+                        listener: handleFormalParameterWithoutValue())
+                        listener: endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+                      listener: endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
+                parseInitializersOpt())
+                  listener: handleNoInitializers()
+                parseAsyncModifierOpt())
+                  listener: handleAsyncModifier(null, null)
                   inPlainSync()
-                  parseFunctionBody(), false, true)
-                    listener: beginBlockFunctionBody({)
-                    notEofOrValue(}, if)
-                    parseStatement({)
-                      parseStatementX({)
-                        parseIfStatement({)
-                          listener: beginIfStatement(if)
-                          ensureParenthesizedCondition(if)
-                            parseExpressionInParenthesisRest(()
-                              parseExpression(()
-                                parsePrecedenceExpression((, 1, true)
-                                  parseUnaryExpression((, true)
-                                    parsePrimary((, expression)
-                                      parseSendOrFunctionLiteral((, expression)
-                                        parseSend((, expression)
-                                          ensureIdentifier((, expression)
-                                            listener: handleIdentifier(x, expression)
-                                          listener: handleNoTypeArguments(==)
-                                          parseArgumentsOpt(x)
-                                            listener: handleNoArguments(==)
-                                          listener: handleSend(x, ==)
-                                  listener: beginBinaryExpression(==)
-                                  parsePrecedenceExpression(==, 8, true)
-                                    parseUnaryExpression(==, true)
-                                      parsePrimary(==, expression)
-                                        parseLiteralInt(==)
-                                          listener: handleLiteralInt(0)
-                                  listener: endBinaryExpression(==)
-                              ensureCloseParen(0, ()
-                            listener: handleParenthesizedCondition(()
-                          listener: beginThenStatement(return)
-                          parseStatement())
-                            parseStatementX())
-                              parseReturnStatement())
-                                listener: beginReturnStatement(return)
-                                parseExpression(return)
-                                  parsePrecedenceExpression(return, 1, true)
-                                    parseUnaryExpression(return, true)
-                                      parsePrimary(return, expression)
-                                        parseLiteralInt(return)
-                                          listener: handleLiteralInt(42)
-                                ensureSemicolon(42)
-                                listener: endReturnStatement(true, return, ;)
-                                inGenerator()
-                          listener: endThenStatement(;)
-                          listener: endIfStatement(if, null)
-                    notEofOrValue(}, return)
-                    parseStatement(;)
-                      parseStatementX(;)
-                        parseReturnStatement(;)
-                          listener: beginReturnStatement(return)
-                          parseExpression(return)
-                            parsePrecedenceExpression(return, 1, true)
-                              parseUnaryExpression(return, true)
-                                parsePrimary(return, expression)
-                                  parseLiteralNull(return)
-                                    listener: handleLiteralNull(null)
-                              parseArgumentOrIndexStar(null, Instance of 'NoTypeParamOrArg', false)
-                                listener: handleNoTypeArguments(()
-                                parseArguments(null)
-                                  parseArgumentsRest(()
-                                    listener: beginArguments(()
-                                    parseExpression(()
-                                      parsePrecedenceExpression((, 1, true)
-                                        parseUnaryExpression((, true)
-                                          parsePrimary((, expression)
-                                            parseSendOrFunctionLiteral((, expression)
-                                              parseSend((, expression)
-                                                ensureIdentifier((, expression)
-                                                  listener: handleIdentifier(x, expression)
-                                                listener: handleNoTypeArguments(-)
-                                                parseArgumentsOpt(x)
-                                                  listener: handleNoArguments(-)
-                                                listener: handleSend(x, -)
-                                        listener: beginBinaryExpression(-)
-                                        parsePrecedenceExpression(-, 14, true)
-                                          parseUnaryExpression(-, true)
-                                            parsePrimary(-, expression)
-                                              parseLiteralInt(-)
-                                                listener: handleLiteralInt(1)
-                                        listener: endBinaryExpression(-)
-                                    listener: endArguments(1, (, ))
-                                listener: handleSend((, ))
-                              listener: beginBinaryExpression(+)
-                              parsePrecedenceExpression(+, 14, true)
-                                parseUnaryExpression(+, true)
-                                  parsePrimary(+, expression)
-                                    parseLiteralInt(+)
-                                      listener: handleLiteralInt(1)
-                              listener: endBinaryExpression(+)
-                          ensureSemicolon(1)
-                          listener: endReturnStatement(true, return, ;)
-                          inGenerator()
-                    notEofOrValue(}, })
-                    listener: endBlockFunctionBody(2, {, })
-                  listener: endClassMethod(null, , (, null, })
-                listener: endMember()
-            notEofOrValue(}, int)
-            parseClassOrMixinOrExtensionMemberImpl(}, DeclarationKind.Class, WrapperClass)
-              parseMetadataStar(})
-                listener: beginMetadataStar(int)
-                listener: endMetadataStar(0)
-              listener: beginMember()
-              parseFields(}, null, null, null, null, null, }, Instance of 'NoType', int, DeclarationKind.Class, WrapperClass)
-                reportRecoverableError(int, MissingConstFinalVarOrType)
-                  listener: handleRecoverableError(MissingConstFinalVarOrType, int, int)
-                listener: handleNoType(})
-                ensureIdentifier(}, fieldDeclaration)
-                  listener: handleIdentifier(int, fieldDeclaration)
-                parseFieldInitializerOpt(int, int, null, null, DeclarationKind.Class, WrapperClass)
-                  listener: handleNoFieldInitializer(rethrow)
-                ensureSemicolon(int)
-                  reportRecoverableError(int, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
-                    listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
-                  rewriter()
-                listener: endClassFields(null, null, null, null, 1, int, ;)
-              listener: endMember()
-            notEofOrValue(}, rethrow)
-            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
-              parseMetadataStar(;)
-                listener: beginMetadataStar(rethrow)
-                listener: endMetadataStar(0)
-              listener: beginMember()
-              recoverFromInvalidMember(;, ;, null, null, null, null, null, ;, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
-                reportRecoverableErrorWithToken(rethrow, Instance of 'Template<(Token) => Message>')
-                  listener: handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got 'rethrow'., null, {token: rethrow}], rethrow, rethrow)
-                listener: handleInvalidMember(rethrow)
-                listener: endMember()
-            notEofOrValue(}, ()
-            parseClassOrMixinOrExtensionMemberImpl(rethrow, DeclarationKind.Class, WrapperClass)
-              parseMetadataStar(rethrow)
-                listener: beginMetadataStar(()
-                listener: endMetadataStar(0)
-              listener: beginMember()
-              recoverFromInvalidMember(rethrow, rethrow, null, null, null, null, null, rethrow, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
-                parseMethod(rethrow, null, null, null, null, null, rethrow, Instance of 'NoType', null, (, DeclarationKind.Class, WrapperClass)
-                  listener: beginMethod(null, null, null, null, null, ()
-                  listener: handleNoType(rethrow)
-                  ensureIdentifier(rethrow, methodDeclaration)
-                    insertSyntheticIdentifier(rethrow, methodDeclaration, message: null, messageOnToken: null)
-                      reportRecoverableError((, Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}])
-                        listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}], (, ()
-                      rewriter()
-                    listener: handleIdentifier(, methodDeclaration)
-                  parseQualifiedRestOpt(, methodDeclarationContinuation)
-                  parseMethodTypeVar()
-                    listener: handleNoTypeVariables(()
-                  parseGetterOrFormalParameters(, (, false, MemberKind.NonStaticMethod)
-                    parseFormalParameters(, MemberKind.NonStaticMethod)
-                      parseFormalParametersRest((, MemberKind.NonStaticMethod)
-                        listener: beginFormalParameters((, MemberKind.NonStaticMethod)
-                        parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
-                          parseMetadataStar(()
-                            listener: beginMetadataStar(int)
-                            listener: endMetadataStar(0)
-                          listener: beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
-                          listener: handleIdentifier(int, typeReference)
-                          listener: handleNoTypeArguments(x)
-                          listener: handleType(int, null)
-                          ensureIdentifier(int, formalParameterDeclaration)
-                            listener: handleIdentifier(x, formalParameterDeclaration)
-                          listener: handleFormalParameterWithoutValue())
-                          listener: endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
-                        listener: endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
-                  parseInitializersOpt())
-                    listener: handleNoInitializers()
-                  parseAsyncModifierOpt())
-                    listener: handleAsyncModifier(null, null)
-                    inPlainSync()
-                  inPlainSync()
-                  parseFunctionBody(), false, true)
-                    listener: beginBlockFunctionBody({)
-                    notEofOrValue(}, if)
-                    parseStatement({)
-                      parseStatementX({)
-                        parseIfStatement({)
-                          listener: beginIfStatement(if)
-                          ensureParenthesizedCondition(if)
-                            parseExpressionInParenthesisRest(()
-                              parseExpression(()
-                                parsePrecedenceExpression((, 1, true)
-                                  parseUnaryExpression((, true)
-                                    parsePrimary((, expression)
-                                      parseSendOrFunctionLiteral((, expression)
-                                        parseSend((, expression)
-                                          ensureIdentifier((, expression)
-                                            listener: handleIdentifier(x, expression)
-                                          listener: handleNoTypeArguments(==)
-                                          parseArgumentsOpt(x)
-                                            listener: handleNoArguments(==)
-                                          listener: handleSend(x, ==)
-                                  listener: beginBinaryExpression(==)
-                                  parsePrecedenceExpression(==, 8, true)
-                                    parseUnaryExpression(==, true)
-                                      parsePrimary(==, expression)
-                                        parseLiteralInt(==)
-                                          listener: handleLiteralInt(0)
-                                  listener: endBinaryExpression(==)
-                              ensureCloseParen(0, ()
-                            listener: handleParenthesizedCondition(()
-                          listener: beginThenStatement(return)
-                          parseStatement())
-                            parseStatementX())
-                              parseReturnStatement())
-                                listener: beginReturnStatement(return)
-                                parseExpression(return)
-                                  parsePrecedenceExpression(return, 1, true)
-                                    parseUnaryExpression(return, true)
-                                      parsePrimary(return, expression)
-                                        parseLiteralInt(return)
-                                          listener: handleLiteralInt(42)
-                                ensureSemicolon(42)
-                                listener: endReturnStatement(true, return, ;)
-                                inGenerator()
-                          listener: endThenStatement(;)
-                          listener: endIfStatement(if, null)
-                    notEofOrValue(}, return)
-                    parseStatement(;)
-                      parseStatementX(;)
-                        parseReturnStatement(;)
-                          listener: beginReturnStatement(return)
-                          parseExpression(return)
-                            parsePrecedenceExpression(return, 1, true)
-                              parseUnaryExpression(return, true)
-                                parsePrimary(return, expression)
-                                  inPlainSync()
-                                  parseSend(return, expression)
-                                    ensureIdentifier(return, expression)
-                                      reportRecoverableErrorWithToken(rethrow, Instance of 'Template<(Token) => Message>')
-                                        listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'rethrow'., null, {token: rethrow}], rethrow, rethrow)
-                                      listener: handleIdentifier(rethrow, expression)
-                                    listener: handleNoTypeArguments(()
-                                    parseArgumentsOpt(rethrow)
-                                      parseArguments(rethrow)
-                                        parseArgumentsRest(()
-                                          listener: beginArguments(()
-                                          parseExpression(()
-                                            parsePrecedenceExpression((, 1, true)
-                                              parseUnaryExpression((, true)
-                                                parsePrimary((, expression)
-                                                  parseSendOrFunctionLiteral((, expression)
-                                                    parseSend((, expression)
-                                                      ensureIdentifier((, expression)
-                                                        listener: handleIdentifier(x, expression)
-                                                      listener: handleNoTypeArguments(-)
-                                                      parseArgumentsOpt(x)
-                                                        listener: handleNoArguments(-)
-                                                      listener: handleSend(x, -)
-                                              listener: beginBinaryExpression(-)
-                                              parsePrecedenceExpression(-, 14, true)
-                                                parseUnaryExpression(-, true)
-                                                  parsePrimary(-, expression)
-                                                    parseLiteralInt(-)
-                                                      listener: handleLiteralInt(1)
-                                              listener: endBinaryExpression(-)
-                                          listener: endArguments(1, (, ))
-                                    listener: handleSend(rethrow, +)
-                              listener: beginBinaryExpression(+)
-                              parsePrecedenceExpression(+, 14, true)
-                                parseUnaryExpression(+, true)
-                                  parsePrimary(+, expression)
-                                    parseLiteralInt(+)
-                                      listener: handleLiteralInt(1)
-                              listener: endBinaryExpression(+)
-                          ensureSemicolon(1)
-                          listener: endReturnStatement(true, return, ;)
-                          inGenerator()
-                    notEofOrValue(}, })
-                    listener: endBlockFunctionBody(2, {, })
-                  listener: endClassMethod(null, , (, null, })
-                listener: endMember()
-            notEofOrValue(}, int)
-            parseClassOrMixinOrExtensionMemberImpl(}, DeclarationKind.Class, WrapperClass)
-              parseMetadataStar(})
-                listener: beginMetadataStar(int)
-                listener: endMetadataStar(0)
-              listener: beginMember()
-              parseFields(}, null, null, null, null, null, }, Instance of 'NoType', int, DeclarationKind.Class, WrapperClass)
-                reportRecoverableError(int, MissingConstFinalVarOrType)
-                  listener: handleRecoverableError(MissingConstFinalVarOrType, int, int)
-                listener: handleNoType(})
-                ensureIdentifier(}, fieldDeclaration)
-                  listener: handleIdentifier(int, fieldDeclaration)
-                parseFieldInitializerOpt(int, int, null, null, DeclarationKind.Class, WrapperClass)
-                  listener: handleNoFieldInitializer(return)
-                ensureSemicolon(int)
-                  reportRecoverableError(int, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
-                    listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
-                  rewriter()
-                listener: endClassFields(null, null, null, null, 1, int, ;)
-              listener: endMember()
-            notEofOrValue(}, return)
-            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
-              parseMetadataStar(;)
-                listener: beginMetadataStar(return)
-                listener: endMetadataStar(0)
-              listener: beginMember()
-              recoverFromInvalidMember(;, ;, null, null, null, null, null, ;, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
-                reportRecoverableErrorWithToken(return, Instance of 'Template<(Token) => Message>')
-                  listener: handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got 'return'., null, {token: return}], return, return)
-                listener: handleInvalidMember(return)
-                listener: endMember()
-            notEofOrValue(}, ()
-            parseClassOrMixinOrExtensionMemberImpl(return, DeclarationKind.Class, WrapperClass)
-              parseMetadataStar(return)
-                listener: beginMetadataStar(()
-                listener: endMetadataStar(0)
-              listener: beginMember()
-              recoverFromInvalidMember(return, return, null, null, null, null, null, return, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
-                parseMethod(return, null, null, null, null, null, return, Instance of 'NoType', null, (, DeclarationKind.Class, WrapperClass)
-                  listener: beginMethod(null, null, null, null, null, ()
-                  listener: handleNoType(return)
-                  ensureIdentifier(return, methodDeclaration)
-                    insertSyntheticIdentifier(return, methodDeclaration, message: null, messageOnToken: null)
-                      reportRecoverableError((, Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}])
-                        listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}], (, ()
-                      rewriter()
-                    listener: handleIdentifier(, methodDeclaration)
-                  parseQualifiedRestOpt(, methodDeclarationContinuation)
-                  parseMethodTypeVar()
-                    listener: handleNoTypeVariables(()
-                  parseGetterOrFormalParameters(, (, false, MemberKind.NonStaticMethod)
-                    parseFormalParameters(, MemberKind.NonStaticMethod)
-                      parseFormalParametersRest((, MemberKind.NonStaticMethod)
-                        listener: beginFormalParameters((, MemberKind.NonStaticMethod)
-                        parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
-                          parseMetadataStar(()
-                            listener: beginMetadataStar(int)
-                            listener: endMetadataStar(0)
-                          listener: beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
-                          listener: handleIdentifier(int, typeReference)
-                          listener: handleNoTypeArguments(x)
-                          listener: handleType(int, null)
-                          ensureIdentifier(int, formalParameterDeclaration)
-                            listener: handleIdentifier(x, formalParameterDeclaration)
-                          listener: handleFormalParameterWithoutValue())
-                          listener: endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
-                        listener: endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
-                  parseInitializersOpt())
-                    listener: handleNoInitializers()
-                  parseAsyncModifierOpt())
-                    listener: handleAsyncModifier(null, null)
-                    inPlainSync()
-                  inPlainSync()
-                  parseFunctionBody(), false, true)
-                    listener: beginBlockFunctionBody({)
-                    notEofOrValue(}, if)
-                    parseStatement({)
-                      parseStatementX({)
-                        parseIfStatement({)
-                          listener: beginIfStatement(if)
-                          ensureParenthesizedCondition(if)
-                            parseExpressionInParenthesisRest(()
-                              parseExpression(()
-                                parsePrecedenceExpression((, 1, true)
-                                  parseUnaryExpression((, true)
-                                    parsePrimary((, expression)
-                                      parseSendOrFunctionLiteral((, expression)
-                                        parseSend((, expression)
-                                          ensureIdentifier((, expression)
-                                            listener: handleIdentifier(x, expression)
-                                          listener: handleNoTypeArguments(==)
-                                          parseArgumentsOpt(x)
-                                            listener: handleNoArguments(==)
-                                          listener: handleSend(x, ==)
-                                  listener: beginBinaryExpression(==)
-                                  parsePrecedenceExpression(==, 8, true)
-                                    parseUnaryExpression(==, true)
-                                      parsePrimary(==, expression)
-                                        parseLiteralInt(==)
-                                          listener: handleLiteralInt(0)
-                                  listener: endBinaryExpression(==)
-                              ensureCloseParen(0, ()
-                            listener: handleParenthesizedCondition(()
-                          listener: beginThenStatement(return)
-                          parseStatement())
-                            parseStatementX())
-                              parseReturnStatement())
-                                listener: beginReturnStatement(return)
-                                parseExpression(return)
-                                  parsePrecedenceExpression(return, 1, true)
-                                    parseUnaryExpression(return, true)
-                                      parsePrimary(return, expression)
-                                        parseLiteralInt(return)
-                                          listener: handleLiteralInt(42)
-                                ensureSemicolon(42)
-                                listener: endReturnStatement(true, return, ;)
-                                inGenerator()
-                          listener: endThenStatement(;)
-                          listener: endIfStatement(if, null)
-                    notEofOrValue(}, return)
-                    parseStatement(;)
-                      parseStatementX(;)
-                        parseReturnStatement(;)
-                          listener: beginReturnStatement(return)
-                          parseExpression(return)
-                            parsePrecedenceExpression(return, 1, true)
-                              parseUnaryExpression(return, true)
-                                parsePrimary(return, expression)
-                                  inPlainSync()
-                                  reportRecoverableErrorWithToken(return, Instance of 'Template<(Token) => Message>')
-                                    listener: handleRecoverableError(Message[UnexpectedToken, Unexpected token 'return'., null, {token: return}], return, return)
-                                  parsePrimary(return, expression)
-                                    parseParenthesizedExpressionOrFunctionLiteral(return)
-                                      parseParenthesizedExpression(return)
-                                        parseExpressionInParenthesis(return)
+                inPlainSync()
+                parseFunctionBody(), false, true)
+                  listener: beginBlockFunctionBody({)
+                  notEofOrValue(}, if)
+                  parseStatement({)
+                    parseStatementX({)
+                      parseIfStatement({)
+                        listener: beginIfStatement(if)
+                        ensureParenthesizedCondition(if)
+                          parseExpressionInParenthesisRest(()
+                            parseExpression(()
+                              parsePrecedenceExpression((, 1, true)
+                                parseUnaryExpression((, true)
+                                  parsePrimary((, expression)
+                                    parseSendOrFunctionLiteral((, expression)
+                                      parseSend((, expression)
+                                        ensureIdentifier((, expression)
+                                          listener: handleIdentifier(x, expression)
+                                        listener: handleNoTypeArguments(==)
+                                        parseArgumentsOpt(x)
+                                          listener: handleNoArguments(==)
+                                        listener: handleSend(x, ==)
+                                listener: beginBinaryExpression(==)
+                                parsePrecedenceExpression(==, 8, true)
+                                  parseUnaryExpression(==, true)
+                                    parsePrimary(==, expression)
+                                      parseLiteralInt(==)
+                                        listener: handleLiteralInt(0)
+                                listener: endBinaryExpression(==)
+                            ensureCloseParen(0, ()
+                          listener: handleParenthesizedCondition(()
+                        listener: beginThenStatement(return)
+                        parseStatement())
+                          parseStatementX())
+                            parseReturnStatement())
+                              listener: beginReturnStatement(return)
+                              parseExpression(return)
+                                parsePrecedenceExpression(return, 1, true)
+                                  parseUnaryExpression(return, true)
+                                    parsePrimary(return, expression)
+                                      parseLiteralInt(return)
+                                        listener: handleLiteralInt(42)
+                              ensureSemicolon(42)
+                              listener: endReturnStatement(true, return, ;)
+                              inGenerator()
+                        listener: endThenStatement(;)
+                        listener: endIfStatement(if, null)
+                  notEofOrValue(}, return)
+                  parseStatement(;)
+                    parseStatementX(;)
+                      parseReturnStatement(;)
+                        listener: beginReturnStatement(return)
+                        parseExpression(return)
+                          parsePrecedenceExpression(return, 1, true)
+                            parseUnaryExpression(return, true)
+                              parsePrimary(return, expression)
+                                inPlainSync()
+                                parseSend(return, expression)
+                                  ensureIdentifier(return, expression)
+                                    reportRecoverableErrorWithToken(is, Instance of 'Template<(Token) => Message>')
+                                      listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'is'., null, {token: is}], is, is)
+                                    rewriter()
+                                    listener: handleIdentifier(, expression)
+                                  listener: handleNoTypeArguments(is)
+                                  parseArgumentsOpt()
+                                    listener: handleNoArguments(is)
+                                  listener: handleSend(, is)
+                            parseIsOperatorRest()
+                              listener: beginIsOperatorType(is)
+                              computeTypeAfterIsOrAs(is)
+                              reportRecoverableErrorWithToken((, Instance of 'Template<(Token) => Message>')
+                                listener: handleRecoverableError(Message[ExpectedType, Expected a type, but got '('., null, {token: (}], (, ()
+                              rewriter()
+                              listener: handleIdentifier(, typeReference)
+                              listener: handleNoTypeArguments(()
+                              listener: handleType(, null)
+                              listener: endIsOperatorType(is)
+                              listener: handleIsOperator(is, null)
+                              skipChainedAsIsOperators()
+                        ensureSemicolon()
+                          reportRecoverableError(, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+                            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], (, ()
+                          rewriter()
+                        listener: endReturnStatement(true, return, ;)
+                        inGenerator()
+                  notEofOrValue(}, ()
+                  parseStatement(;)
+                    parseStatementX(;)
+                      parseExpressionStatementOrDeclaration(;, false)
+                        parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+                          looksLikeLocalFunction(()
+                          parseExpressionStatement(;)
+                            parseExpression(;)
+                              parsePrecedenceExpression(;, 1, true)
+                                parseUnaryExpression(;, true)
+                                  parsePrimary(;, expression)
+                                    parseParenthesizedExpressionOrFunctionLiteral(;)
+                                      parseParenthesizedExpression(;)
+                                        parseExpressionInParenthesis(;)
                                           parseExpressionInParenthesisRest(()
                                             parseExpression(()
                                               parsePrecedenceExpression((, 1, true)
@@ -4382,152 +3136,416 @@
                                                 listener: endBinaryExpression(-)
                                             ensureCloseParen(1, ()
                                         listener: handleParenthesizedExpression(()
-                              listener: beginBinaryExpression(+)
-                              parsePrecedenceExpression(+, 14, true)
-                                parseUnaryExpression(+, true)
-                                  parsePrimary(+, expression)
-                                    parseLiteralInt(+)
-                                      listener: handleLiteralInt(1)
-                              listener: endBinaryExpression(+)
-                          ensureSemicolon(1)
-                          listener: endReturnStatement(true, return, ;)
-                          inGenerator()
-                    notEofOrValue(}, })
-                    listener: endBlockFunctionBody(2, {, })
-                  listener: endClassMethod(null, , (, null, })
-                listener: endMember()
+                                listener: beginBinaryExpression(+)
+                                parsePrecedenceExpression(+, 14, true)
+                                  parseUnaryExpression(+, true)
+                                    parsePrimary(+, expression)
+                                      parseLiteralInt(+)
+                                        listener: handleLiteralInt(1)
+                                listener: endBinaryExpression(+)
+                            ensureSemicolon(1)
+                            listener: handleExpressionStatement(;)
+                  notEofOrValue(}, })
+                  listener: endBlockFunctionBody(3, {, })
+                listener: endClassMethod(null, int, (, null, })
+              listener: endMember()
             notEofOrValue(}, int)
             parseClassOrMixinOrExtensionMemberImpl(}, DeclarationKind.Class, WrapperClass)
               parseMetadataStar(})
                 listener: beginMetadataStar(int)
                 listener: endMetadataStar(0)
               listener: beginMember()
-              parseFields(}, null, null, null, null, null, }, Instance of 'NoType', int, DeclarationKind.Class, WrapperClass)
-                reportRecoverableError(int, MissingConstFinalVarOrType)
-                  listener: handleRecoverableError(MissingConstFinalVarOrType, int, int)
-                listener: handleNoType(})
-                ensureIdentifier(}, fieldDeclaration)
-                  listener: handleIdentifier(int, fieldDeclaration)
-                parseFieldInitializerOpt(int, int, null, null, DeclarationKind.Class, WrapperClass)
-                  listener: handleNoFieldInitializer(super)
-                ensureSemicolon(int)
-                  reportRecoverableError(int, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
-                    listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
-                  rewriter()
-                listener: endClassFields(null, null, null, null, 1, int, ;)
-              listener: endMember()
-            notEofOrValue(}, super)
-            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
-              parseMetadataStar(;)
-                listener: beginMetadataStar(super)
-                listener: endMetadataStar(0)
-              listener: beginMember()
-              recoverFromInvalidMember(;, ;, null, null, null, null, null, ;, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
-                reportRecoverableErrorWithToken(super, Instance of 'Template<(Token) => Message>')
-                  listener: handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got 'super'., null, {token: super}], super, super)
-                listener: handleInvalidMember(super)
-                listener: endMember()
-            notEofOrValue(}, ()
-            parseClassOrMixinOrExtensionMemberImpl(super, DeclarationKind.Class, WrapperClass)
-              parseMetadataStar(super)
-                listener: beginMetadataStar(()
-                listener: endMetadataStar(0)
-              listener: beginMember()
-              recoverFromInvalidMember(super, super, null, null, null, null, null, super, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
-                parseMethod(super, null, null, null, null, null, super, Instance of 'NoType', null, (, DeclarationKind.Class, WrapperClass)
-                  listener: beginMethod(null, null, null, null, null, ()
-                  listener: handleNoType(super)
-                  ensureIdentifier(super, methodDeclaration)
-                    insertSyntheticIdentifier(super, methodDeclaration, message: null, messageOnToken: null)
-                      reportRecoverableError((, Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}])
-                        listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}], (, ()
-                      rewriter()
-                    listener: handleIdentifier(, methodDeclaration)
-                  parseQualifiedRestOpt(, methodDeclarationContinuation)
-                  parseMethodTypeVar()
-                    listener: handleNoTypeVariables(()
-                  parseGetterOrFormalParameters(, (, false, MemberKind.NonStaticMethod)
-                    parseFormalParameters(, MemberKind.NonStaticMethod)
-                      parseFormalParametersRest((, MemberKind.NonStaticMethod)
-                        listener: beginFormalParameters((, MemberKind.NonStaticMethod)
-                        parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
-                          parseMetadataStar(()
-                            listener: beginMetadataStar(int)
-                            listener: endMetadataStar(0)
-                          listener: beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
-                          listener: handleIdentifier(int, typeReference)
-                          listener: handleNoTypeArguments(x)
-                          listener: handleType(int, null)
-                          ensureIdentifier(int, formalParameterDeclaration)
-                            listener: handleIdentifier(x, formalParameterDeclaration)
-                          listener: handleFormalParameterWithoutValue())
-                          listener: endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
-                        listener: endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
-                  parseInitializersOpt())
-                    listener: handleNoInitializers()
-                  parseAsyncModifierOpt())
-                    listener: handleAsyncModifier(null, null)
-                    inPlainSync()
+              isReservedKeyword(new)
+              indicatesMethodOrField(()
+              parseMethod(}, null, null, null, null, null, }, Instance of 'SimpleType', null, new, DeclarationKind.Class, WrapperClass, true)
+                listener: beginMethod(null, null, null, null, null, new)
+                listener: handleIdentifier(int, typeReference)
+                listener: handleNoTypeArguments(new)
+                listener: handleType(int, null)
+                ensureIdentifierPotentiallyRecovered(int, methodDeclaration, true)
+                  reportRecoverableErrorWithToken(new, Instance of 'Template<(Token) => Message>')
+                    listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'new'., null, {token: new}], new, new)
+                  listener: handleIdentifier(new, methodDeclaration)
+                parseQualifiedRestOpt(new, methodDeclarationContinuation)
+                parseMethodTypeVar(new)
+                  listener: handleNoTypeVariables(()
+                parseGetterOrFormalParameters(new, new, false, MemberKind.NonStaticMethod)
+                  parseFormalParameters(new, MemberKind.NonStaticMethod)
+                    parseFormalParametersRest((, MemberKind.NonStaticMethod)
+                      listener: beginFormalParameters((, MemberKind.NonStaticMethod)
+                      parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+                        parseMetadataStar(()
+                          listener: beginMetadataStar(int)
+                          listener: endMetadataStar(0)
+                        listener: beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+                        listener: handleIdentifier(int, typeReference)
+                        listener: handleNoTypeArguments(x)
+                        listener: handleType(int, null)
+                        ensureIdentifier(int, formalParameterDeclaration)
+                          listener: handleIdentifier(x, formalParameterDeclaration)
+                        listener: handleFormalParameterWithoutValue())
+                        listener: endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+                      listener: endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
+                parseInitializersOpt())
+                  listener: handleNoInitializers()
+                parseAsyncModifierOpt())
+                  listener: handleAsyncModifier(null, null)
                   inPlainSync()
-                  parseFunctionBody(), false, true)
-                    listener: beginBlockFunctionBody({)
-                    notEofOrValue(}, if)
-                    parseStatement({)
-                      parseStatementX({)
-                        parseIfStatement({)
-                          listener: beginIfStatement(if)
-                          ensureParenthesizedCondition(if)
-                            parseExpressionInParenthesisRest(()
-                              parseExpression(()
-                                parsePrecedenceExpression((, 1, true)
-                                  parseUnaryExpression((, true)
-                                    parsePrimary((, expression)
-                                      parseSendOrFunctionLiteral((, expression)
-                                        parseSend((, expression)
-                                          ensureIdentifier((, expression)
-                                            listener: handleIdentifier(x, expression)
-                                          listener: handleNoTypeArguments(==)
-                                          parseArgumentsOpt(x)
-                                            listener: handleNoArguments(==)
-                                          listener: handleSend(x, ==)
-                                  listener: beginBinaryExpression(==)
-                                  parsePrecedenceExpression(==, 8, true)
-                                    parseUnaryExpression(==, true)
-                                      parsePrimary(==, expression)
-                                        parseLiteralInt(==)
-                                          listener: handleLiteralInt(0)
-                                  listener: endBinaryExpression(==)
-                              ensureCloseParen(0, ()
-                            listener: handleParenthesizedCondition(()
-                          listener: beginThenStatement(return)
-                          parseStatement())
-                            parseStatementX())
-                              parseReturnStatement())
-                                listener: beginReturnStatement(return)
-                                parseExpression(return)
-                                  parsePrecedenceExpression(return, 1, true)
-                                    parseUnaryExpression(return, true)
-                                      parsePrimary(return, expression)
-                                        parseLiteralInt(return)
-                                          listener: handleLiteralInt(42)
-                                ensureSemicolon(42)
-                                listener: endReturnStatement(true, return, ;)
-                                inGenerator()
-                          listener: endThenStatement(;)
-                          listener: endIfStatement(if, null)
-                    notEofOrValue(}, return)
-                    parseStatement(;)
-                      parseStatementX(;)
-                        parseReturnStatement(;)
-                          listener: beginReturnStatement(return)
-                          parseExpression(return)
-                            parsePrecedenceExpression(return, 1, true)
-                              parseUnaryExpression(return, true)
-                                parsePrimary(return, expression)
-                                  parseSuperExpression(return, expression)
-                                    listener: handleSuperExpression(super, expression)
+                inPlainSync()
+                parseFunctionBody(), false, true)
+                  listener: beginBlockFunctionBody({)
+                  notEofOrValue(}, if)
+                  parseStatement({)
+                    parseStatementX({)
+                      parseIfStatement({)
+                        listener: beginIfStatement(if)
+                        ensureParenthesizedCondition(if)
+                          parseExpressionInParenthesisRest(()
+                            parseExpression(()
+                              parsePrecedenceExpression((, 1, true)
+                                parseUnaryExpression((, true)
+                                  parsePrimary((, expression)
+                                    parseSendOrFunctionLiteral((, expression)
+                                      parseSend((, expression)
+                                        ensureIdentifier((, expression)
+                                          listener: handleIdentifier(x, expression)
+                                        listener: handleNoTypeArguments(==)
+                                        parseArgumentsOpt(x)
+                                          listener: handleNoArguments(==)
+                                        listener: handleSend(x, ==)
+                                listener: beginBinaryExpression(==)
+                                parsePrecedenceExpression(==, 8, true)
+                                  parseUnaryExpression(==, true)
+                                    parsePrimary(==, expression)
+                                      parseLiteralInt(==)
+                                        listener: handleLiteralInt(0)
+                                listener: endBinaryExpression(==)
+                            ensureCloseParen(0, ()
+                          listener: handleParenthesizedCondition(()
+                        listener: beginThenStatement(return)
+                        parseStatement())
+                          parseStatementX())
+                            parseReturnStatement())
+                              listener: beginReturnStatement(return)
+                              parseExpression(return)
+                                parsePrecedenceExpression(return, 1, true)
+                                  parseUnaryExpression(return, true)
+                                    parsePrimary(return, expression)
+                                      parseLiteralInt(return)
+                                        listener: handleLiteralInt(42)
+                              ensureSemicolon(42)
+                              listener: endReturnStatement(true, return, ;)
+                              inGenerator()
+                        listener: endThenStatement(;)
+                        listener: endIfStatement(if, null)
+                  notEofOrValue(}, return)
+                  parseStatement(;)
+                    parseStatementX(;)
+                      parseReturnStatement(;)
+                        listener: beginReturnStatement(return)
+                        parseExpression(return)
+                          parsePrecedenceExpression(return, 1, true)
+                            parseUnaryExpression(return, true)
+                              parsePrimary(return, expression)
+                                parseNewExpression(return)
+                                  listener: beginNewExpression(new)
+                                  parseConstructorReference(new, null)
+                                    ensureIdentifier(new, constructorReference)
+                                      insertSyntheticIdentifier(new, constructorReference, message: Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}], messageOnToken: null)
+                                        reportRecoverableError((, Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}])
+                                          listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}], (, ()
+                                        rewriter()
+                                      listener: handleIdentifier(, constructorReference)
+                                    listener: beginConstructorReference()
+                                    parseQualifiedRestOpt(, constructorReferenceContinuation)
                                     listener: handleNoTypeArguments(()
-                                    parseArguments(super)
+                                    listener: handleNoConstructorReferenceContinuationAfterTypeArguments(()
+                                    listener: endConstructorReference(, null, ()
+                                  parseConstructorInvocationArguments()
+                                    parseArgumentsRest(()
+                                      listener: beginArguments(()
+                                      parseExpression(()
+                                        parsePrecedenceExpression((, 1, true)
+                                          parseUnaryExpression((, true)
+                                            parsePrimary((, expression)
+                                              parseSendOrFunctionLiteral((, expression)
+                                                parseSend((, expression)
+                                                  ensureIdentifier((, expression)
+                                                    listener: handleIdentifier(x, expression)
+                                                  listener: handleNoTypeArguments(-)
+                                                  parseArgumentsOpt(x)
+                                                    listener: handleNoArguments(-)
+                                                  listener: handleSend(x, -)
+                                          listener: beginBinaryExpression(-)
+                                          parsePrecedenceExpression(-, 14, true)
+                                            parseUnaryExpression(-, true)
+                                              parsePrimary(-, expression)
+                                                parseLiteralInt(-)
+                                                  listener: handleLiteralInt(1)
+                                          listener: endBinaryExpression(-)
+                                      listener: endArguments(1, (, ))
+                                  listener: endNewExpression(new)
+                            listener: beginBinaryExpression(+)
+                            parsePrecedenceExpression(+, 14, true)
+                              parseUnaryExpression(+, true)
+                                parsePrimary(+, expression)
+                                  parseLiteralInt(+)
+                                    listener: handleLiteralInt(1)
+                            listener: endBinaryExpression(+)
+                        ensureSemicolon(1)
+                        listener: endReturnStatement(true, return, ;)
+                        inGenerator()
+                  notEofOrValue(}, })
+                  listener: endBlockFunctionBody(2, {, })
+                listener: endClassMethod(null, int, (, null, })
+              listener: endMember()
+            notEofOrValue(}, int)
+            parseClassOrMixinOrExtensionMemberImpl(}, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(})
+                listener: beginMetadataStar(int)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              isReservedKeyword(null)
+              indicatesMethodOrField(()
+              parseMethod(}, null, null, null, null, null, }, Instance of 'SimpleType', null, null, DeclarationKind.Class, WrapperClass, true)
+                listener: beginMethod(null, null, null, null, null, null)
+                listener: handleIdentifier(int, typeReference)
+                listener: handleNoTypeArguments(null)
+                listener: handleType(int, null)
+                ensureIdentifierPotentiallyRecovered(int, methodDeclaration, true)
+                  reportRecoverableErrorWithToken(null, Instance of 'Template<(Token) => Message>')
+                    listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'null'., null, {token: null}], null, null)
+                  listener: handleIdentifier(null, methodDeclaration)
+                parseQualifiedRestOpt(null, methodDeclarationContinuation)
+                parseMethodTypeVar(null)
+                  listener: handleNoTypeVariables(()
+                parseGetterOrFormalParameters(null, null, false, MemberKind.NonStaticMethod)
+                  parseFormalParameters(null, MemberKind.NonStaticMethod)
+                    parseFormalParametersRest((, MemberKind.NonStaticMethod)
+                      listener: beginFormalParameters((, MemberKind.NonStaticMethod)
+                      parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+                        parseMetadataStar(()
+                          listener: beginMetadataStar(int)
+                          listener: endMetadataStar(0)
+                        listener: beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+                        listener: handleIdentifier(int, typeReference)
+                        listener: handleNoTypeArguments(x)
+                        listener: handleType(int, null)
+                        ensureIdentifier(int, formalParameterDeclaration)
+                          listener: handleIdentifier(x, formalParameterDeclaration)
+                        listener: handleFormalParameterWithoutValue())
+                        listener: endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+                      listener: endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
+                parseInitializersOpt())
+                  listener: handleNoInitializers()
+                parseAsyncModifierOpt())
+                  listener: handleAsyncModifier(null, null)
+                  inPlainSync()
+                inPlainSync()
+                parseFunctionBody(), false, true)
+                  listener: beginBlockFunctionBody({)
+                  notEofOrValue(}, if)
+                  parseStatement({)
+                    parseStatementX({)
+                      parseIfStatement({)
+                        listener: beginIfStatement(if)
+                        ensureParenthesizedCondition(if)
+                          parseExpressionInParenthesisRest(()
+                            parseExpression(()
+                              parsePrecedenceExpression((, 1, true)
+                                parseUnaryExpression((, true)
+                                  parsePrimary((, expression)
+                                    parseSendOrFunctionLiteral((, expression)
+                                      parseSend((, expression)
+                                        ensureIdentifier((, expression)
+                                          listener: handleIdentifier(x, expression)
+                                        listener: handleNoTypeArguments(==)
+                                        parseArgumentsOpt(x)
+                                          listener: handleNoArguments(==)
+                                        listener: handleSend(x, ==)
+                                listener: beginBinaryExpression(==)
+                                parsePrecedenceExpression(==, 8, true)
+                                  parseUnaryExpression(==, true)
+                                    parsePrimary(==, expression)
+                                      parseLiteralInt(==)
+                                        listener: handleLiteralInt(0)
+                                listener: endBinaryExpression(==)
+                            ensureCloseParen(0, ()
+                          listener: handleParenthesizedCondition(()
+                        listener: beginThenStatement(return)
+                        parseStatement())
+                          parseStatementX())
+                            parseReturnStatement())
+                              listener: beginReturnStatement(return)
+                              parseExpression(return)
+                                parsePrecedenceExpression(return, 1, true)
+                                  parseUnaryExpression(return, true)
+                                    parsePrimary(return, expression)
+                                      parseLiteralInt(return)
+                                        listener: handleLiteralInt(42)
+                              ensureSemicolon(42)
+                              listener: endReturnStatement(true, return, ;)
+                              inGenerator()
+                        listener: endThenStatement(;)
+                        listener: endIfStatement(if, null)
+                  notEofOrValue(}, return)
+                  parseStatement(;)
+                    parseStatementX(;)
+                      parseReturnStatement(;)
+                        listener: beginReturnStatement(return)
+                        parseExpression(return)
+                          parsePrecedenceExpression(return, 1, true)
+                            parseUnaryExpression(return, true)
+                              parsePrimary(return, expression)
+                                parseLiteralNull(return)
+                                  listener: handleLiteralNull(null)
+                            parseArgumentOrIndexStar(null, Instance of 'NoTypeParamOrArg', false)
+                              listener: handleNoTypeArguments(()
+                              parseArguments(null)
+                                parseArgumentsRest(()
+                                  listener: beginArguments(()
+                                  parseExpression(()
+                                    parsePrecedenceExpression((, 1, true)
+                                      parseUnaryExpression((, true)
+                                        parsePrimary((, expression)
+                                          parseSendOrFunctionLiteral((, expression)
+                                            parseSend((, expression)
+                                              ensureIdentifier((, expression)
+                                                listener: handleIdentifier(x, expression)
+                                              listener: handleNoTypeArguments(-)
+                                              parseArgumentsOpt(x)
+                                                listener: handleNoArguments(-)
+                                              listener: handleSend(x, -)
+                                      listener: beginBinaryExpression(-)
+                                      parsePrecedenceExpression(-, 14, true)
+                                        parseUnaryExpression(-, true)
+                                          parsePrimary(-, expression)
+                                            parseLiteralInt(-)
+                                              listener: handleLiteralInt(1)
+                                      listener: endBinaryExpression(-)
+                                  listener: endArguments(1, (, ))
+                              listener: handleSend((, ))
+                            listener: beginBinaryExpression(+)
+                            parsePrecedenceExpression(+, 14, true)
+                              parseUnaryExpression(+, true)
+                                parsePrimary(+, expression)
+                                  parseLiteralInt(+)
+                                    listener: handleLiteralInt(1)
+                            listener: endBinaryExpression(+)
+                        ensureSemicolon(1)
+                        listener: endReturnStatement(true, return, ;)
+                        inGenerator()
+                  notEofOrValue(}, })
+                  listener: endBlockFunctionBody(2, {, })
+                listener: endClassMethod(null, int, (, null, })
+              listener: endMember()
+            notEofOrValue(}, int)
+            parseClassOrMixinOrExtensionMemberImpl(}, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(})
+                listener: beginMetadataStar(int)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              isReservedKeyword(rethrow)
+              indicatesMethodOrField(()
+              parseMethod(}, null, null, null, null, null, }, Instance of 'SimpleType', null, rethrow, DeclarationKind.Class, WrapperClass, true)
+                listener: beginMethod(null, null, null, null, null, rethrow)
+                listener: handleIdentifier(int, typeReference)
+                listener: handleNoTypeArguments(rethrow)
+                listener: handleType(int, null)
+                ensureIdentifierPotentiallyRecovered(int, methodDeclaration, true)
+                  reportRecoverableErrorWithToken(rethrow, Instance of 'Template<(Token) => Message>')
+                    listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'rethrow'., null, {token: rethrow}], rethrow, rethrow)
+                  listener: handleIdentifier(rethrow, methodDeclaration)
+                parseQualifiedRestOpt(rethrow, methodDeclarationContinuation)
+                parseMethodTypeVar(rethrow)
+                  listener: handleNoTypeVariables(()
+                parseGetterOrFormalParameters(rethrow, rethrow, false, MemberKind.NonStaticMethod)
+                  parseFormalParameters(rethrow, MemberKind.NonStaticMethod)
+                    parseFormalParametersRest((, MemberKind.NonStaticMethod)
+                      listener: beginFormalParameters((, MemberKind.NonStaticMethod)
+                      parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+                        parseMetadataStar(()
+                          listener: beginMetadataStar(int)
+                          listener: endMetadataStar(0)
+                        listener: beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+                        listener: handleIdentifier(int, typeReference)
+                        listener: handleNoTypeArguments(x)
+                        listener: handleType(int, null)
+                        ensureIdentifier(int, formalParameterDeclaration)
+                          listener: handleIdentifier(x, formalParameterDeclaration)
+                        listener: handleFormalParameterWithoutValue())
+                        listener: endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+                      listener: endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
+                parseInitializersOpt())
+                  listener: handleNoInitializers()
+                parseAsyncModifierOpt())
+                  listener: handleAsyncModifier(null, null)
+                  inPlainSync()
+                inPlainSync()
+                parseFunctionBody(), false, true)
+                  listener: beginBlockFunctionBody({)
+                  notEofOrValue(}, if)
+                  parseStatement({)
+                    parseStatementX({)
+                      parseIfStatement({)
+                        listener: beginIfStatement(if)
+                        ensureParenthesizedCondition(if)
+                          parseExpressionInParenthesisRest(()
+                            parseExpression(()
+                              parsePrecedenceExpression((, 1, true)
+                                parseUnaryExpression((, true)
+                                  parsePrimary((, expression)
+                                    parseSendOrFunctionLiteral((, expression)
+                                      parseSend((, expression)
+                                        ensureIdentifier((, expression)
+                                          listener: handleIdentifier(x, expression)
+                                        listener: handleNoTypeArguments(==)
+                                        parseArgumentsOpt(x)
+                                          listener: handleNoArguments(==)
+                                        listener: handleSend(x, ==)
+                                listener: beginBinaryExpression(==)
+                                parsePrecedenceExpression(==, 8, true)
+                                  parseUnaryExpression(==, true)
+                                    parsePrimary(==, expression)
+                                      parseLiteralInt(==)
+                                        listener: handleLiteralInt(0)
+                                listener: endBinaryExpression(==)
+                            ensureCloseParen(0, ()
+                          listener: handleParenthesizedCondition(()
+                        listener: beginThenStatement(return)
+                        parseStatement())
+                          parseStatementX())
+                            parseReturnStatement())
+                              listener: beginReturnStatement(return)
+                              parseExpression(return)
+                                parsePrecedenceExpression(return, 1, true)
+                                  parseUnaryExpression(return, true)
+                                    parsePrimary(return, expression)
+                                      parseLiteralInt(return)
+                                        listener: handleLiteralInt(42)
+                              ensureSemicolon(42)
+                              listener: endReturnStatement(true, return, ;)
+                              inGenerator()
+                        listener: endThenStatement(;)
+                        listener: endIfStatement(if, null)
+                  notEofOrValue(}, return)
+                  parseStatement(;)
+                    parseStatementX(;)
+                      parseReturnStatement(;)
+                        listener: beginReturnStatement(return)
+                        parseExpression(return)
+                          parsePrecedenceExpression(return, 1, true)
+                            parseUnaryExpression(return, true)
+                              parsePrimary(return, expression)
+                                inPlainSync()
+                                parseSend(return, expression)
+                                  ensureIdentifier(return, expression)
+                                    reportRecoverableErrorWithToken(rethrow, Instance of 'Template<(Token) => Message>')
+                                      listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'rethrow'., null, {token: rethrow}], rethrow, rethrow)
+                                    listener: handleIdentifier(rethrow, expression)
+                                  listener: handleNoTypeArguments(()
+                                  parseArgumentsOpt(rethrow)
+                                    parseArguments(rethrow)
                                       parseArgumentsRest(()
                                         listener: beginArguments(()
                                         parseExpression(()
@@ -4550,241 +3568,491 @@
                                                     listener: handleLiteralInt(1)
                                             listener: endBinaryExpression(-)
                                         listener: endArguments(1, (, ))
-                                    listener: handleSend(super, +)
-                              listener: beginBinaryExpression(+)
-                              parsePrecedenceExpression(+, 14, true)
-                                parseUnaryExpression(+, true)
-                                  parsePrimary(+, expression)
-                                    parseLiteralInt(+)
-                                      listener: handleLiteralInt(1)
-                              listener: endBinaryExpression(+)
-                          ensureSemicolon(1)
-                          listener: endReturnStatement(true, return, ;)
-                          inGenerator()
-                    notEofOrValue(}, })
-                    listener: endBlockFunctionBody(2, {, })
-                  listener: endClassMethod(null, , (, null, })
-                listener: endMember()
+                                  listener: handleSend(rethrow, +)
+                            listener: beginBinaryExpression(+)
+                            parsePrecedenceExpression(+, 14, true)
+                              parseUnaryExpression(+, true)
+                                parsePrimary(+, expression)
+                                  parseLiteralInt(+)
+                                    listener: handleLiteralInt(1)
+                            listener: endBinaryExpression(+)
+                        ensureSemicolon(1)
+                        listener: endReturnStatement(true, return, ;)
+                        inGenerator()
+                  notEofOrValue(}, })
+                  listener: endBlockFunctionBody(2, {, })
+                listener: endClassMethod(null, int, (, null, })
+              listener: endMember()
             notEofOrValue(}, int)
             parseClassOrMixinOrExtensionMemberImpl(}, DeclarationKind.Class, WrapperClass)
               parseMetadataStar(})
                 listener: beginMetadataStar(int)
                 listener: endMetadataStar(0)
               listener: beginMember()
-              parseFields(}, null, null, null, null, null, }, Instance of 'NoType', int, DeclarationKind.Class, WrapperClass)
-                reportRecoverableError(int, MissingConstFinalVarOrType)
-                  listener: handleRecoverableError(MissingConstFinalVarOrType, int, int)
-                listener: handleNoType(})
-                ensureIdentifier(}, fieldDeclaration)
-                  listener: handleIdentifier(int, fieldDeclaration)
-                parseFieldInitializerOpt(int, int, null, null, DeclarationKind.Class, WrapperClass)
-                  listener: handleNoFieldInitializer(switch)
-                ensureSemicolon(int)
-                  reportRecoverableError(int, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
-                    listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
-                  rewriter()
-                listener: endClassFields(null, null, null, null, 1, int, ;)
-              listener: endMember()
-            notEofOrValue(}, switch)
-            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
-              parseMetadataStar(;)
-                listener: beginMetadataStar(switch)
-                listener: endMetadataStar(0)
-              listener: beginMember()
-              recoverFromInvalidMember(;, ;, null, null, null, null, null, ;, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
-                reportRecoverableErrorWithToken(switch, Instance of 'Template<(Token) => Message>')
-                  listener: handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got 'switch'., null, {token: switch}], switch, switch)
-                listener: handleInvalidMember(switch)
-                listener: endMember()
-            notEofOrValue(}, ()
-            parseClassOrMixinOrExtensionMemberImpl(switch, DeclarationKind.Class, WrapperClass)
-              parseMetadataStar(switch)
-                listener: beginMetadataStar(()
-                listener: endMetadataStar(0)
-              listener: beginMember()
-              recoverFromInvalidMember(switch, switch, null, null, null, null, null, switch, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
-                parseMethod(switch, null, null, null, null, null, switch, Instance of 'NoType', null, (, DeclarationKind.Class, WrapperClass)
-                  listener: beginMethod(null, null, null, null, null, ()
-                  listener: handleNoType(switch)
-                  ensureIdentifier(switch, methodDeclaration)
-                    insertSyntheticIdentifier(switch, methodDeclaration, message: null, messageOnToken: null)
-                      reportRecoverableError((, Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}])
-                        listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}], (, ()
-                      rewriter()
-                    listener: handleIdentifier(, methodDeclaration)
-                  parseQualifiedRestOpt(, methodDeclarationContinuation)
-                  parseMethodTypeVar()
-                    listener: handleNoTypeVariables(()
-                  parseGetterOrFormalParameters(, (, false, MemberKind.NonStaticMethod)
-                    parseFormalParameters(, MemberKind.NonStaticMethod)
-                      parseFormalParametersRest((, MemberKind.NonStaticMethod)
-                        listener: beginFormalParameters((, MemberKind.NonStaticMethod)
-                        parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
-                          parseMetadataStar(()
-                            listener: beginMetadataStar(int)
-                            listener: endMetadataStar(0)
-                          listener: beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
-                          listener: handleIdentifier(int, typeReference)
-                          listener: handleNoTypeArguments(x)
-                          listener: handleType(int, null)
-                          ensureIdentifier(int, formalParameterDeclaration)
-                            listener: handleIdentifier(x, formalParameterDeclaration)
-                          listener: handleFormalParameterWithoutValue())
-                          listener: endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
-                        listener: endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
-                  parseInitializersOpt())
-                    listener: handleNoInitializers()
-                  parseAsyncModifierOpt())
-                    listener: handleAsyncModifier(null, null)
-                    inPlainSync()
+              isReservedKeyword(return)
+              indicatesMethodOrField(()
+              parseMethod(}, null, null, null, null, null, }, Instance of 'SimpleType', null, return, DeclarationKind.Class, WrapperClass, true)
+                listener: beginMethod(null, null, null, null, null, return)
+                listener: handleIdentifier(int, typeReference)
+                listener: handleNoTypeArguments(return)
+                listener: handleType(int, null)
+                ensureIdentifierPotentiallyRecovered(int, methodDeclaration, true)
+                  reportRecoverableErrorWithToken(return, Instance of 'Template<(Token) => Message>')
+                    listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'return'., null, {token: return}], return, return)
+                  listener: handleIdentifier(return, methodDeclaration)
+                parseQualifiedRestOpt(return, methodDeclarationContinuation)
+                parseMethodTypeVar(return)
+                  listener: handleNoTypeVariables(()
+                parseGetterOrFormalParameters(return, return, false, MemberKind.NonStaticMethod)
+                  parseFormalParameters(return, MemberKind.NonStaticMethod)
+                    parseFormalParametersRest((, MemberKind.NonStaticMethod)
+                      listener: beginFormalParameters((, MemberKind.NonStaticMethod)
+                      parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+                        parseMetadataStar(()
+                          listener: beginMetadataStar(int)
+                          listener: endMetadataStar(0)
+                        listener: beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+                        listener: handleIdentifier(int, typeReference)
+                        listener: handleNoTypeArguments(x)
+                        listener: handleType(int, null)
+                        ensureIdentifier(int, formalParameterDeclaration)
+                          listener: handleIdentifier(x, formalParameterDeclaration)
+                        listener: handleFormalParameterWithoutValue())
+                        listener: endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+                      listener: endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
+                parseInitializersOpt())
+                  listener: handleNoInitializers()
+                parseAsyncModifierOpt())
+                  listener: handleAsyncModifier(null, null)
                   inPlainSync()
-                  parseFunctionBody(), false, true)
-                    listener: beginBlockFunctionBody({)
-                    notEofOrValue(}, if)
-                    parseStatement({)
-                      parseStatementX({)
-                        parseIfStatement({)
-                          listener: beginIfStatement(if)
-                          ensureParenthesizedCondition(if)
-                            parseExpressionInParenthesisRest(()
-                              parseExpression(()
-                                parsePrecedenceExpression((, 1, true)
-                                  parseUnaryExpression((, true)
-                                    parsePrimary((, expression)
-                                      parseSendOrFunctionLiteral((, expression)
-                                        parseSend((, expression)
-                                          ensureIdentifier((, expression)
-                                            listener: handleIdentifier(x, expression)
-                                          listener: handleNoTypeArguments(==)
-                                          parseArgumentsOpt(x)
-                                            listener: handleNoArguments(==)
-                                          listener: handleSend(x, ==)
-                                  listener: beginBinaryExpression(==)
-                                  parsePrecedenceExpression(==, 8, true)
-                                    parseUnaryExpression(==, true)
-                                      parsePrimary(==, expression)
-                                        parseLiteralInt(==)
-                                          listener: handleLiteralInt(0)
-                                  listener: endBinaryExpression(==)
-                              ensureCloseParen(0, ()
-                            listener: handleParenthesizedCondition(()
-                          listener: beginThenStatement(return)
-                          parseStatement())
-                            parseStatementX())
-                              parseReturnStatement())
-                                listener: beginReturnStatement(return)
-                                parseExpression(return)
-                                  parsePrecedenceExpression(return, 1, true)
-                                    parseUnaryExpression(return, true)
-                                      parsePrimary(return, expression)
-                                        parseLiteralInt(return)
-                                          listener: handleLiteralInt(42)
-                                ensureSemicolon(42)
-                                listener: endReturnStatement(true, return, ;)
-                                inGenerator()
-                          listener: endThenStatement(;)
-                          listener: endIfStatement(if, null)
-                    notEofOrValue(}, return)
-                    parseStatement(;)
-                      parseStatementX(;)
-                        parseReturnStatement(;)
-                          listener: beginReturnStatement(return)
-                          parseExpression(return)
-                            parsePrecedenceExpression(return, 1, true)
-                              parseUnaryExpression(return, true)
+                inPlainSync()
+                parseFunctionBody(), false, true)
+                  listener: beginBlockFunctionBody({)
+                  notEofOrValue(}, if)
+                  parseStatement({)
+                    parseStatementX({)
+                      parseIfStatement({)
+                        listener: beginIfStatement(if)
+                        ensureParenthesizedCondition(if)
+                          parseExpressionInParenthesisRest(()
+                            parseExpression(()
+                              parsePrecedenceExpression((, 1, true)
+                                parseUnaryExpression((, true)
+                                  parsePrimary((, expression)
+                                    parseSendOrFunctionLiteral((, expression)
+                                      parseSend((, expression)
+                                        ensureIdentifier((, expression)
+                                          listener: handleIdentifier(x, expression)
+                                        listener: handleNoTypeArguments(==)
+                                        parseArgumentsOpt(x)
+                                          listener: handleNoArguments(==)
+                                        listener: handleSend(x, ==)
+                                listener: beginBinaryExpression(==)
+                                parsePrecedenceExpression(==, 8, true)
+                                  parseUnaryExpression(==, true)
+                                    parsePrimary(==, expression)
+                                      parseLiteralInt(==)
+                                        listener: handleLiteralInt(0)
+                                listener: endBinaryExpression(==)
+                            ensureCloseParen(0, ()
+                          listener: handleParenthesizedCondition(()
+                        listener: beginThenStatement(return)
+                        parseStatement())
+                          parseStatementX())
+                            parseReturnStatement())
+                              listener: beginReturnStatement(return)
+                              parseExpression(return)
+                                parsePrecedenceExpression(return, 1, true)
+                                  parseUnaryExpression(return, true)
+                                    parsePrimary(return, expression)
+                                      parseLiteralInt(return)
+                                        listener: handleLiteralInt(42)
+                              ensureSemicolon(42)
+                              listener: endReturnStatement(true, return, ;)
+                              inGenerator()
+                        listener: endThenStatement(;)
+                        listener: endIfStatement(if, null)
+                  notEofOrValue(}, return)
+                  parseStatement(;)
+                    parseStatementX(;)
+                      parseReturnStatement(;)
+                        listener: beginReturnStatement(return)
+                        parseExpression(return)
+                          parsePrecedenceExpression(return, 1, true)
+                            parseUnaryExpression(return, true)
+                              parsePrimary(return, expression)
+                                inPlainSync()
+                                reportRecoverableErrorWithToken(return, Instance of 'Template<(Token) => Message>')
+                                  listener: handleRecoverableError(Message[UnexpectedToken, Unexpected token 'return'., null, {token: return}], return, return)
                                 parsePrimary(return, expression)
-                                  inPlainSync()
-                                  parseSend(return, expression)
-                                    ensureIdentifier(return, expression)
-                                      reportRecoverableErrorWithToken(switch, Instance of 'Template<(Token) => Message>')
-                                        listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'switch'., null, {token: switch}], switch, switch)
-                                      rewriter()
-                                      listener: handleIdentifier(, expression)
-                                    listener: handleNoTypeArguments(switch)
-                                    parseArgumentsOpt()
-                                      listener: handleNoArguments(switch)
-                                    listener: handleSend(, switch)
-                          ensureSemicolon()
-                            reportRecoverableError(, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
-                              listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], switch, switch)
-                            rewriter()
-                          listener: endReturnStatement(true, return, ;)
-                          inGenerator()
-                    notEofOrValue(}, switch)
-                    parseStatement(;)
-                      parseStatementX(;)
-                        parseSwitchStatement(;)
-                          listener: beginSwitchStatement(switch)
-                          ensureParenthesizedCondition(switch)
-                            parseExpressionInParenthesisRest(()
-                              parseExpression(()
-                                parsePrecedenceExpression((, 1, true)
-                                  parseUnaryExpression((, true)
-                                    parsePrimary((, expression)
-                                      parseSendOrFunctionLiteral((, expression)
-                                        parseSend((, expression)
-                                          ensureIdentifier((, expression)
-                                            listener: handleIdentifier(x, expression)
-                                          listener: handleNoTypeArguments(-)
-                                          parseArgumentsOpt(x)
-                                            listener: handleNoArguments(-)
-                                          listener: handleSend(x, -)
-                                  listener: beginBinaryExpression(-)
-                                  parsePrecedenceExpression(-, 14, true)
-                                    parseUnaryExpression(-, true)
-                                      parsePrimary(-, expression)
-                                        parseLiteralInt(-)
-                                          listener: handleLiteralInt(1)
-                                  listener: endBinaryExpression(-)
-                              ensureCloseParen(1, ()
-                            listener: handleParenthesizedCondition(()
-                          parseSwitchBlock())
-                            ensureBlock(), null, switch statement)
-                              reportRecoverableError(), Message[ExpectedClassOrMixinBody, A switch statement must have a body, even if it is empty., Try adding an empty body., {string: switch statement}])
-                                listener: handleRecoverableError(Message[ExpectedClassOrMixinBody, A switch statement must have a body, even if it is empty., Try adding an empty body., {string: switch statement}], ), ))
-                              insertBlock())
-                                rewriter()
-                                rewriter()
-                            listener: beginSwitchBlock({)
-                            notEofOrValue(}, })
-                            listener: endSwitchBlock(0, {, })
-                          listener: endSwitchStatement(switch, })
-                    notEofOrValue(}, +)
-                    parseStatement(})
-                      parseStatementX(})
-                        parseExpressionStatementOrDeclaration(}, false)
-                          parseExpressionStatementOrDeclarationAfterModifiers(}, }, null, null, null, false)
-                            looksLikeLocalFunction(+)
-                            parseExpressionStatement(})
-                              parseExpression(})
-                                parsePrecedenceExpression(}, 1, true)
-                                  parseUnaryExpression(}, true)
-                                    rewriteAndRecover(}, UnsupportedPrefixPlus, )
-                                      reportRecoverableError(+, UnsupportedPrefixPlus)
-                                        listener: handleRecoverableError(UnsupportedPrefixPlus, +, +)
-                                      rewriter()
-                                    parsePrimary(}, expression)
-                                      parseSendOrFunctionLiteral(}, expression)
-                                        parseSend(}, expression)
-                                          ensureIdentifier(}, expression)
-                                            listener: handleIdentifier(, expression)
-                                          listener: handleNoTypeArguments(+)
-                                          parseArgumentsOpt()
-                                            listener: handleNoArguments(+)
-                                          listener: handleSend(, +)
-                                  listener: beginBinaryExpression(+)
-                                  parsePrecedenceExpression(+, 14, true)
-                                    parseUnaryExpression(+, true)
-                                      parsePrimary(+, expression)
-                                        parseLiteralInt(+)
-                                          listener: handleLiteralInt(1)
-                                  listener: endBinaryExpression(+)
-                              ensureSemicolon(1)
-                              listener: handleExpressionStatement(;)
-                    notEofOrValue(}, })
-                    listener: endBlockFunctionBody(4, {, })
-                  listener: endClassMethod(null, , (, null, })
-                listener: endMember()
+                                  parseParenthesizedExpressionOrFunctionLiteral(return)
+                                    parseParenthesizedExpression(return)
+                                      parseExpressionInParenthesis(return)
+                                        parseExpressionInParenthesisRest(()
+                                          parseExpression(()
+                                            parsePrecedenceExpression((, 1, true)
+                                              parseUnaryExpression((, true)
+                                                parsePrimary((, expression)
+                                                  parseSendOrFunctionLiteral((, expression)
+                                                    parseSend((, expression)
+                                                      ensureIdentifier((, expression)
+                                                        listener: handleIdentifier(x, expression)
+                                                      listener: handleNoTypeArguments(-)
+                                                      parseArgumentsOpt(x)
+                                                        listener: handleNoArguments(-)
+                                                      listener: handleSend(x, -)
+                                              listener: beginBinaryExpression(-)
+                                              parsePrecedenceExpression(-, 14, true)
+                                                parseUnaryExpression(-, true)
+                                                  parsePrimary(-, expression)
+                                                    parseLiteralInt(-)
+                                                      listener: handleLiteralInt(1)
+                                              listener: endBinaryExpression(-)
+                                          ensureCloseParen(1, ()
+                                      listener: handleParenthesizedExpression(()
+                            listener: beginBinaryExpression(+)
+                            parsePrecedenceExpression(+, 14, true)
+                              parseUnaryExpression(+, true)
+                                parsePrimary(+, expression)
+                                  parseLiteralInt(+)
+                                    listener: handleLiteralInt(1)
+                            listener: endBinaryExpression(+)
+                        ensureSemicolon(1)
+                        listener: endReturnStatement(true, return, ;)
+                        inGenerator()
+                  notEofOrValue(}, })
+                  listener: endBlockFunctionBody(2, {, })
+                listener: endClassMethod(null, int, (, null, })
+              listener: endMember()
+            notEofOrValue(}, int)
+            parseClassOrMixinOrExtensionMemberImpl(}, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(})
+                listener: beginMetadataStar(int)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              isReservedKeyword(super)
+              indicatesMethodOrField(()
+              parseMethod(}, null, null, null, null, null, }, Instance of 'SimpleType', null, super, DeclarationKind.Class, WrapperClass, true)
+                listener: beginMethod(null, null, null, null, null, super)
+                listener: handleIdentifier(int, typeReference)
+                listener: handleNoTypeArguments(super)
+                listener: handleType(int, null)
+                ensureIdentifierPotentiallyRecovered(int, methodDeclaration, true)
+                  reportRecoverableErrorWithToken(super, Instance of 'Template<(Token) => Message>')
+                    listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'super'., null, {token: super}], super, super)
+                  listener: handleIdentifier(super, methodDeclaration)
+                parseQualifiedRestOpt(super, methodDeclarationContinuation)
+                parseMethodTypeVar(super)
+                  listener: handleNoTypeVariables(()
+                parseGetterOrFormalParameters(super, super, false, MemberKind.NonStaticMethod)
+                  parseFormalParameters(super, MemberKind.NonStaticMethod)
+                    parseFormalParametersRest((, MemberKind.NonStaticMethod)
+                      listener: beginFormalParameters((, MemberKind.NonStaticMethod)
+                      parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+                        parseMetadataStar(()
+                          listener: beginMetadataStar(int)
+                          listener: endMetadataStar(0)
+                        listener: beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+                        listener: handleIdentifier(int, typeReference)
+                        listener: handleNoTypeArguments(x)
+                        listener: handleType(int, null)
+                        ensureIdentifier(int, formalParameterDeclaration)
+                          listener: handleIdentifier(x, formalParameterDeclaration)
+                        listener: handleFormalParameterWithoutValue())
+                        listener: endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+                      listener: endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
+                parseInitializersOpt())
+                  listener: handleNoInitializers()
+                parseAsyncModifierOpt())
+                  listener: handleAsyncModifier(null, null)
+                  inPlainSync()
+                inPlainSync()
+                parseFunctionBody(), false, true)
+                  listener: beginBlockFunctionBody({)
+                  notEofOrValue(}, if)
+                  parseStatement({)
+                    parseStatementX({)
+                      parseIfStatement({)
+                        listener: beginIfStatement(if)
+                        ensureParenthesizedCondition(if)
+                          parseExpressionInParenthesisRest(()
+                            parseExpression(()
+                              parsePrecedenceExpression((, 1, true)
+                                parseUnaryExpression((, true)
+                                  parsePrimary((, expression)
+                                    parseSendOrFunctionLiteral((, expression)
+                                      parseSend((, expression)
+                                        ensureIdentifier((, expression)
+                                          listener: handleIdentifier(x, expression)
+                                        listener: handleNoTypeArguments(==)
+                                        parseArgumentsOpt(x)
+                                          listener: handleNoArguments(==)
+                                        listener: handleSend(x, ==)
+                                listener: beginBinaryExpression(==)
+                                parsePrecedenceExpression(==, 8, true)
+                                  parseUnaryExpression(==, true)
+                                    parsePrimary(==, expression)
+                                      parseLiteralInt(==)
+                                        listener: handleLiteralInt(0)
+                                listener: endBinaryExpression(==)
+                            ensureCloseParen(0, ()
+                          listener: handleParenthesizedCondition(()
+                        listener: beginThenStatement(return)
+                        parseStatement())
+                          parseStatementX())
+                            parseReturnStatement())
+                              listener: beginReturnStatement(return)
+                              parseExpression(return)
+                                parsePrecedenceExpression(return, 1, true)
+                                  parseUnaryExpression(return, true)
+                                    parsePrimary(return, expression)
+                                      parseLiteralInt(return)
+                                        listener: handleLiteralInt(42)
+                              ensureSemicolon(42)
+                              listener: endReturnStatement(true, return, ;)
+                              inGenerator()
+                        listener: endThenStatement(;)
+                        listener: endIfStatement(if, null)
+                  notEofOrValue(}, return)
+                  parseStatement(;)
+                    parseStatementX(;)
+                      parseReturnStatement(;)
+                        listener: beginReturnStatement(return)
+                        parseExpression(return)
+                          parsePrecedenceExpression(return, 1, true)
+                            parseUnaryExpression(return, true)
+                              parsePrimary(return, expression)
+                                parseSuperExpression(return, expression)
+                                  listener: handleSuperExpression(super, expression)
+                                  listener: handleNoTypeArguments(()
+                                  parseArguments(super)
+                                    parseArgumentsRest(()
+                                      listener: beginArguments(()
+                                      parseExpression(()
+                                        parsePrecedenceExpression((, 1, true)
+                                          parseUnaryExpression((, true)
+                                            parsePrimary((, expression)
+                                              parseSendOrFunctionLiteral((, expression)
+                                                parseSend((, expression)
+                                                  ensureIdentifier((, expression)
+                                                    listener: handleIdentifier(x, expression)
+                                                  listener: handleNoTypeArguments(-)
+                                                  parseArgumentsOpt(x)
+                                                    listener: handleNoArguments(-)
+                                                  listener: handleSend(x, -)
+                                          listener: beginBinaryExpression(-)
+                                          parsePrecedenceExpression(-, 14, true)
+                                            parseUnaryExpression(-, true)
+                                              parsePrimary(-, expression)
+                                                parseLiteralInt(-)
+                                                  listener: handleLiteralInt(1)
+                                          listener: endBinaryExpression(-)
+                                      listener: endArguments(1, (, ))
+                                  listener: handleSend(super, +)
+                            listener: beginBinaryExpression(+)
+                            parsePrecedenceExpression(+, 14, true)
+                              parseUnaryExpression(+, true)
+                                parsePrimary(+, expression)
+                                  parseLiteralInt(+)
+                                    listener: handleLiteralInt(1)
+                            listener: endBinaryExpression(+)
+                        ensureSemicolon(1)
+                        listener: endReturnStatement(true, return, ;)
+                        inGenerator()
+                  notEofOrValue(}, })
+                  listener: endBlockFunctionBody(2, {, })
+                listener: endClassMethod(null, int, (, null, })
+              listener: endMember()
+            notEofOrValue(}, int)
+            parseClassOrMixinOrExtensionMemberImpl(}, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(})
+                listener: beginMetadataStar(int)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              isReservedKeyword(switch)
+              indicatesMethodOrField(()
+              parseMethod(}, null, null, null, null, null, }, Instance of 'SimpleType', null, switch, DeclarationKind.Class, WrapperClass, true)
+                listener: beginMethod(null, null, null, null, null, switch)
+                listener: handleIdentifier(int, typeReference)
+                listener: handleNoTypeArguments(switch)
+                listener: handleType(int, null)
+                ensureIdentifierPotentiallyRecovered(int, methodDeclaration, true)
+                  reportRecoverableErrorWithToken(switch, Instance of 'Template<(Token) => Message>')
+                    listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'switch'., null, {token: switch}], switch, switch)
+                  listener: handleIdentifier(switch, methodDeclaration)
+                parseQualifiedRestOpt(switch, methodDeclarationContinuation)
+                parseMethodTypeVar(switch)
+                  listener: handleNoTypeVariables(()
+                parseGetterOrFormalParameters(switch, switch, false, MemberKind.NonStaticMethod)
+                  parseFormalParameters(switch, MemberKind.NonStaticMethod)
+                    parseFormalParametersRest((, MemberKind.NonStaticMethod)
+                      listener: beginFormalParameters((, MemberKind.NonStaticMethod)
+                      parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+                        parseMetadataStar(()
+                          listener: beginMetadataStar(int)
+                          listener: endMetadataStar(0)
+                        listener: beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+                        listener: handleIdentifier(int, typeReference)
+                        listener: handleNoTypeArguments(x)
+                        listener: handleType(int, null)
+                        ensureIdentifier(int, formalParameterDeclaration)
+                          listener: handleIdentifier(x, formalParameterDeclaration)
+                        listener: handleFormalParameterWithoutValue())
+                        listener: endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+                      listener: endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
+                parseInitializersOpt())
+                  listener: handleNoInitializers()
+                parseAsyncModifierOpt())
+                  listener: handleAsyncModifier(null, null)
+                  inPlainSync()
+                inPlainSync()
+                parseFunctionBody(), false, true)
+                  listener: beginBlockFunctionBody({)
+                  notEofOrValue(}, if)
+                  parseStatement({)
+                    parseStatementX({)
+                      parseIfStatement({)
+                        listener: beginIfStatement(if)
+                        ensureParenthesizedCondition(if)
+                          parseExpressionInParenthesisRest(()
+                            parseExpression(()
+                              parsePrecedenceExpression((, 1, true)
+                                parseUnaryExpression((, true)
+                                  parsePrimary((, expression)
+                                    parseSendOrFunctionLiteral((, expression)
+                                      parseSend((, expression)
+                                        ensureIdentifier((, expression)
+                                          listener: handleIdentifier(x, expression)
+                                        listener: handleNoTypeArguments(==)
+                                        parseArgumentsOpt(x)
+                                          listener: handleNoArguments(==)
+                                        listener: handleSend(x, ==)
+                                listener: beginBinaryExpression(==)
+                                parsePrecedenceExpression(==, 8, true)
+                                  parseUnaryExpression(==, true)
+                                    parsePrimary(==, expression)
+                                      parseLiteralInt(==)
+                                        listener: handleLiteralInt(0)
+                                listener: endBinaryExpression(==)
+                            ensureCloseParen(0, ()
+                          listener: handleParenthesizedCondition(()
+                        listener: beginThenStatement(return)
+                        parseStatement())
+                          parseStatementX())
+                            parseReturnStatement())
+                              listener: beginReturnStatement(return)
+                              parseExpression(return)
+                                parsePrecedenceExpression(return, 1, true)
+                                  parseUnaryExpression(return, true)
+                                    parsePrimary(return, expression)
+                                      parseLiteralInt(return)
+                                        listener: handleLiteralInt(42)
+                              ensureSemicolon(42)
+                              listener: endReturnStatement(true, return, ;)
+                              inGenerator()
+                        listener: endThenStatement(;)
+                        listener: endIfStatement(if, null)
+                  notEofOrValue(}, return)
+                  parseStatement(;)
+                    parseStatementX(;)
+                      parseReturnStatement(;)
+                        listener: beginReturnStatement(return)
+                        parseExpression(return)
+                          parsePrecedenceExpression(return, 1, true)
+                            parseUnaryExpression(return, true)
+                              parsePrimary(return, expression)
+                                inPlainSync()
+                                parseSend(return, expression)
+                                  ensureIdentifier(return, expression)
+                                    reportRecoverableErrorWithToken(switch, Instance of 'Template<(Token) => Message>')
+                                      listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'switch'., null, {token: switch}], switch, switch)
+                                    rewriter()
+                                    listener: handleIdentifier(, expression)
+                                  listener: handleNoTypeArguments(switch)
+                                  parseArgumentsOpt()
+                                    listener: handleNoArguments(switch)
+                                  listener: handleSend(, switch)
+                        ensureSemicolon()
+                          reportRecoverableError(, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+                            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], switch, switch)
+                          rewriter()
+                        listener: endReturnStatement(true, return, ;)
+                        inGenerator()
+                  notEofOrValue(}, switch)
+                  parseStatement(;)
+                    parseStatementX(;)
+                      parseSwitchStatement(;)
+                        listener: beginSwitchStatement(switch)
+                        ensureParenthesizedCondition(switch)
+                          parseExpressionInParenthesisRest(()
+                            parseExpression(()
+                              parsePrecedenceExpression((, 1, true)
+                                parseUnaryExpression((, true)
+                                  parsePrimary((, expression)
+                                    parseSendOrFunctionLiteral((, expression)
+                                      parseSend((, expression)
+                                        ensureIdentifier((, expression)
+                                          listener: handleIdentifier(x, expression)
+                                        listener: handleNoTypeArguments(-)
+                                        parseArgumentsOpt(x)
+                                          listener: handleNoArguments(-)
+                                        listener: handleSend(x, -)
+                                listener: beginBinaryExpression(-)
+                                parsePrecedenceExpression(-, 14, true)
+                                  parseUnaryExpression(-, true)
+                                    parsePrimary(-, expression)
+                                      parseLiteralInt(-)
+                                        listener: handleLiteralInt(1)
+                                listener: endBinaryExpression(-)
+                            ensureCloseParen(1, ()
+                          listener: handleParenthesizedCondition(()
+                        parseSwitchBlock())
+                          ensureBlock(), null, switch statement)
+                            reportRecoverableError(), Message[ExpectedClassOrMixinBody, A switch statement must have a body, even if it is empty., Try adding an empty body., {string: switch statement}])
+                              listener: handleRecoverableError(Message[ExpectedClassOrMixinBody, A switch statement must have a body, even if it is empty., Try adding an empty body., {string: switch statement}], ), ))
+                            insertBlock())
+                              rewriter()
+                              rewriter()
+                          listener: beginSwitchBlock({)
+                          notEofOrValue(}, })
+                          listener: endSwitchBlock(0, {, })
+                        listener: endSwitchStatement(switch, })
+                  notEofOrValue(}, +)
+                  parseStatement(})
+                    parseStatementX(})
+                      parseExpressionStatementOrDeclaration(}, false)
+                        parseExpressionStatementOrDeclarationAfterModifiers(}, }, null, null, null, false)
+                          looksLikeLocalFunction(+)
+                          parseExpressionStatement(})
+                            parseExpression(})
+                              parsePrecedenceExpression(}, 1, true)
+                                parseUnaryExpression(}, true)
+                                  rewriteAndRecover(}, UnsupportedPrefixPlus, )
+                                    reportRecoverableError(+, UnsupportedPrefixPlus)
+                                      listener: handleRecoverableError(UnsupportedPrefixPlus, +, +)
+                                    rewriter()
+                                  parsePrimary(}, expression)
+                                    parseSendOrFunctionLiteral(}, expression)
+                                      parseSend(}, expression)
+                                        ensureIdentifier(}, expression)
+                                          listener: handleIdentifier(, expression)
+                                        listener: handleNoTypeArguments(+)
+                                        parseArgumentsOpt()
+                                          listener: handleNoArguments(+)
+                                        listener: handleSend(, +)
+                                listener: beginBinaryExpression(+)
+                                parsePrecedenceExpression(+, 14, true)
+                                  parseUnaryExpression(+, true)
+                                    parsePrimary(+, expression)
+                                      parseLiteralInt(+)
+                                        listener: handleLiteralInt(1)
+                                listener: endBinaryExpression(+)
+                            ensureSemicolon(1)
+                            listener: handleExpressionStatement(;)
+                  notEofOrValue(}, })
+                  listener: endBlockFunctionBody(4, {, })
+                listener: endClassMethod(null, int, (, null, })
+              listener: endMember()
             notEofOrValue(}, int)
             parseClassOrMixinOrExtensionMemberImpl(}, DeclarationKind.Class, WrapperClass)
               parseMetadataStar(})
@@ -4792,11 +4060,11 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               recoverFromInvalidMember(int, }, null, null, null, null, null, }, Instance of 'SimpleType', null, DeclarationKind.Class, WrapperClass)
-                parseFields(}, null, null, null, null, null, }, Instance of 'SimpleType', this, DeclarationKind.Class, WrapperClass)
+                parseFields(}, null, null, null, null, null, }, Instance of 'SimpleType', this, DeclarationKind.Class, WrapperClass, false)
                   listener: handleIdentifier(int, typeReference)
                   listener: handleNoTypeArguments(this)
                   listener: handleType(int, null)
-                  ensureIdentifier(int, fieldDeclaration)
+                  ensureIdentifierPotentiallyRecovered(int, fieldDeclaration, false)
                     reportRecoverableErrorWithToken(this, Instance of 'Template<(Token) => Message>')
                       listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'this'., null, {token: this}], this, this)
                     listener: handleIdentifier(this, fieldDeclaration)
@@ -4815,10 +4083,10 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               recoverFromInvalidMember(;, ;, null, null, null, null, null, ;, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
-                parseMethod(;, null, null, null, null, null, ;, Instance of 'NoType', null, (, DeclarationKind.Class, WrapperClass)
+                parseMethod(;, null, null, null, null, null, ;, Instance of 'NoType', null, (, DeclarationKind.Class, WrapperClass, false)
                   listener: beginMethod(null, null, null, null, null, ()
                   listener: handleNoType(;)
-                  ensureIdentifier(;, methodDeclaration)
+                  ensureIdentifierPotentiallyRecovered(;, methodDeclaration, false)
                     insertSyntheticIdentifier(;, methodDeclaration, message: null, messageOnToken: null)
                       reportRecoverableError((, Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}])
                         listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}], (, ()
@@ -4952,700 +4220,824 @@
                 listener: beginMetadataStar(int)
                 listener: endMetadataStar(0)
               listener: beginMember()
-              parseFields(}, null, null, null, null, null, }, Instance of 'NoType', int, DeclarationKind.Class, WrapperClass)
-                reportRecoverableError(int, MissingConstFinalVarOrType)
-                  listener: handleRecoverableError(MissingConstFinalVarOrType, int, int)
-                listener: handleNoType(})
-                ensureIdentifier(}, fieldDeclaration)
-                  listener: handleIdentifier(int, fieldDeclaration)
-                parseFieldInitializerOpt(int, int, null, null, DeclarationKind.Class, WrapperClass)
-                  listener: handleNoFieldInitializer(throw)
-                ensureSemicolon(int)
-                  reportRecoverableError(int, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
-                    listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
-                  rewriter()
-                listener: endClassFields(null, null, null, null, 1, int, ;)
-              listener: endMember()
-            notEofOrValue(}, throw)
-            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
-              parseMetadataStar(;)
-                listener: beginMetadataStar(throw)
-                listener: endMetadataStar(0)
-              listener: beginMember()
-              recoverFromInvalidMember(;, ;, null, null, null, null, null, ;, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
-                reportRecoverableErrorWithToken(throw, Instance of 'Template<(Token) => Message>')
-                  listener: handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got 'throw'., null, {token: throw}], throw, throw)
-                listener: handleInvalidMember(throw)
-                listener: endMember()
-            notEofOrValue(}, ()
-            parseClassOrMixinOrExtensionMemberImpl(throw, DeclarationKind.Class, WrapperClass)
-              parseMetadataStar(throw)
-                listener: beginMetadataStar(()
-                listener: endMetadataStar(0)
-              listener: beginMember()
-              recoverFromInvalidMember(throw, throw, null, null, null, null, null, throw, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
-                parseMethod(throw, null, null, null, null, null, throw, Instance of 'NoType', null, (, DeclarationKind.Class, WrapperClass)
-                  listener: beginMethod(null, null, null, null, null, ()
-                  listener: handleNoType(throw)
-                  ensureIdentifier(throw, methodDeclaration)
-                    insertSyntheticIdentifier(throw, methodDeclaration, message: null, messageOnToken: null)
-                      reportRecoverableError((, Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}])
-                        listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}], (, ()
-                      rewriter()
-                    listener: handleIdentifier(, methodDeclaration)
-                  parseQualifiedRestOpt(, methodDeclarationContinuation)
-                  parseMethodTypeVar()
-                    listener: handleNoTypeVariables(()
-                  parseGetterOrFormalParameters(, (, false, MemberKind.NonStaticMethod)
-                    parseFormalParameters(, MemberKind.NonStaticMethod)
-                      parseFormalParametersRest((, MemberKind.NonStaticMethod)
-                        listener: beginFormalParameters((, MemberKind.NonStaticMethod)
-                        parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
-                          parseMetadataStar(()
-                            listener: beginMetadataStar(int)
-                            listener: endMetadataStar(0)
-                          listener: beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
-                          listener: handleIdentifier(int, typeReference)
-                          listener: handleNoTypeArguments(x)
-                          listener: handleType(int, null)
-                          ensureIdentifier(int, formalParameterDeclaration)
-                            listener: handleIdentifier(x, formalParameterDeclaration)
-                          listener: handleFormalParameterWithoutValue())
-                          listener: endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
-                        listener: endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
-                  parseInitializersOpt())
-                    listener: handleNoInitializers()
-                  parseAsyncModifierOpt())
-                    listener: handleAsyncModifier(null, null)
-                    inPlainSync()
-                  inPlainSync()
-                  parseFunctionBody(), false, true)
-                    listener: beginBlockFunctionBody({)
-                    notEofOrValue(}, if)
-                    parseStatement({)
-                      parseStatementX({)
-                        parseIfStatement({)
-                          listener: beginIfStatement(if)
-                          ensureParenthesizedCondition(if)
-                            parseExpressionInParenthesisRest(()
-                              parseExpression(()
-                                parsePrecedenceExpression((, 1, true)
-                                  parseUnaryExpression((, true)
-                                    parsePrimary((, expression)
-                                      parseSendOrFunctionLiteral((, expression)
-                                        parseSend((, expression)
-                                          ensureIdentifier((, expression)
-                                            listener: handleIdentifier(x, expression)
-                                          listener: handleNoTypeArguments(==)
-                                          parseArgumentsOpt(x)
-                                            listener: handleNoArguments(==)
-                                          listener: handleSend(x, ==)
-                                  listener: beginBinaryExpression(==)
-                                  parsePrecedenceExpression(==, 8, true)
-                                    parseUnaryExpression(==, true)
-                                      parsePrimary(==, expression)
-                                        parseLiteralInt(==)
-                                          listener: handleLiteralInt(0)
-                                  listener: endBinaryExpression(==)
-                              ensureCloseParen(0, ()
-                            listener: handleParenthesizedCondition(()
-                          listener: beginThenStatement(return)
-                          parseStatement())
-                            parseStatementX())
-                              parseReturnStatement())
-                                listener: beginReturnStatement(return)
-                                parseExpression(return)
-                                  parsePrecedenceExpression(return, 1, true)
-                                    parseUnaryExpression(return, true)
-                                      parsePrimary(return, expression)
-                                        parseLiteralInt(return)
-                                          listener: handleLiteralInt(42)
-                                ensureSemicolon(42)
-                                listener: endReturnStatement(true, return, ;)
-                                inGenerator()
-                          listener: endThenStatement(;)
-                          listener: endIfStatement(if, null)
-                    notEofOrValue(}, return)
-                    parseStatement(;)
-                      parseStatementX(;)
-                        parseReturnStatement(;)
-                          listener: beginReturnStatement(return)
-                          parseExpression(return)
-                            parseThrowExpression(return, true)
-                              parseExpression(throw)
-                                parsePrecedenceExpression(throw, 1, true)
-                                  parseUnaryExpression(throw, true)
-                                    parsePrimary(throw, expression)
-                                      parseParenthesizedExpressionOrFunctionLiteral(throw)
-                                        parseParenthesizedExpression(throw)
-                                          parseExpressionInParenthesis(throw)
-                                            parseExpressionInParenthesisRest(()
-                                              parseExpression(()
-                                                parsePrecedenceExpression((, 1, true)
-                                                  parseUnaryExpression((, true)
-                                                    parsePrimary((, expression)
-                                                      parseSendOrFunctionLiteral((, expression)
-                                                        parseSend((, expression)
-                                                          ensureIdentifier((, expression)
-                                                            listener: handleIdentifier(x, expression)
-                                                          listener: handleNoTypeArguments(-)
-                                                          parseArgumentsOpt(x)
-                                                            listener: handleNoArguments(-)
-                                                          listener: handleSend(x, -)
-                                                  listener: beginBinaryExpression(-)
-                                                  parsePrecedenceExpression(-, 14, true)
-                                                    parseUnaryExpression(-, true)
-                                                      parsePrimary(-, expression)
-                                                        parseLiteralInt(-)
-                                                          listener: handleLiteralInt(1)
-                                                  listener: endBinaryExpression(-)
-                                              ensureCloseParen(1, ()
-                                          listener: handleParenthesizedExpression(()
-                                  listener: beginBinaryExpression(+)
-                                  parsePrecedenceExpression(+, 14, true)
-                                    parseUnaryExpression(+, true)
-                                      parsePrimary(+, expression)
-                                        parseLiteralInt(+)
-                                          listener: handleLiteralInt(1)
-                                  listener: endBinaryExpression(+)
-                              listener: handleThrowExpression(throw, ;)
-                          ensureSemicolon(1)
-                          listener: endReturnStatement(true, return, ;)
-                          inGenerator()
-                    notEofOrValue(}, })
-                    listener: endBlockFunctionBody(2, {, })
-                  listener: endClassMethod(null, , (, null, })
-                listener: endMember()
-            notEofOrValue(}, int)
-            parseClassOrMixinOrExtensionMemberImpl(}, DeclarationKind.Class, WrapperClass)
-              parseMetadataStar(})
-                listener: beginMetadataStar(int)
-                listener: endMetadataStar(0)
-              listener: beginMember()
-              parseFields(}, null, null, null, null, null, }, Instance of 'NoType', int, DeclarationKind.Class, WrapperClass)
-                reportRecoverableError(int, MissingConstFinalVarOrType)
-                  listener: handleRecoverableError(MissingConstFinalVarOrType, int, int)
-                listener: handleNoType(})
-                ensureIdentifier(}, fieldDeclaration)
-                  listener: handleIdentifier(int, fieldDeclaration)
-                parseFieldInitializerOpt(int, int, null, null, DeclarationKind.Class, WrapperClass)
-                  listener: handleNoFieldInitializer(true)
-                ensureSemicolon(int)
-                  reportRecoverableError(int, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
-                    listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
-                  rewriter()
-                listener: endClassFields(null, null, null, null, 1, int, ;)
-              listener: endMember()
-            notEofOrValue(}, true)
-            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
-              parseMetadataStar(;)
-                listener: beginMetadataStar(true)
-                listener: endMetadataStar(0)
-              listener: beginMember()
-              recoverFromInvalidMember(;, ;, null, null, null, null, null, ;, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
-                reportRecoverableErrorWithToken(true, Instance of 'Template<(Token) => Message>')
-                  listener: handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got 'true'., null, {token: true}], true, true)
-                listener: handleInvalidMember(true)
-                listener: endMember()
-            notEofOrValue(}, ()
-            parseClassOrMixinOrExtensionMemberImpl(true, DeclarationKind.Class, WrapperClass)
-              parseMetadataStar(true)
-                listener: beginMetadataStar(()
-                listener: endMetadataStar(0)
-              listener: beginMember()
-              recoverFromInvalidMember(true, true, null, null, null, null, null, true, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
-                parseMethod(true, null, null, null, null, null, true, Instance of 'NoType', null, (, DeclarationKind.Class, WrapperClass)
-                  listener: beginMethod(null, null, null, null, null, ()
-                  listener: handleNoType(true)
-                  ensureIdentifier(true, methodDeclaration)
-                    insertSyntheticIdentifier(true, methodDeclaration, message: null, messageOnToken: null)
-                      reportRecoverableError((, Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}])
-                        listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}], (, ()
-                      rewriter()
-                    listener: handleIdentifier(, methodDeclaration)
-                  parseQualifiedRestOpt(, methodDeclarationContinuation)
-                  parseMethodTypeVar()
-                    listener: handleNoTypeVariables(()
-                  parseGetterOrFormalParameters(, (, false, MemberKind.NonStaticMethod)
-                    parseFormalParameters(, MemberKind.NonStaticMethod)
-                      parseFormalParametersRest((, MemberKind.NonStaticMethod)
-                        listener: beginFormalParameters((, MemberKind.NonStaticMethod)
-                        parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
-                          parseMetadataStar(()
-                            listener: beginMetadataStar(int)
-                            listener: endMetadataStar(0)
-                          listener: beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
-                          listener: handleIdentifier(int, typeReference)
-                          listener: handleNoTypeArguments(x)
-                          listener: handleType(int, null)
-                          ensureIdentifier(int, formalParameterDeclaration)
-                            listener: handleIdentifier(x, formalParameterDeclaration)
-                          listener: handleFormalParameterWithoutValue())
-                          listener: endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
-                        listener: endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
-                  parseInitializersOpt())
-                    listener: handleNoInitializers()
-                  parseAsyncModifierOpt())
-                    listener: handleAsyncModifier(null, null)
-                    inPlainSync()
-                  inPlainSync()
-                  parseFunctionBody(), false, true)
-                    listener: beginBlockFunctionBody({)
-                    notEofOrValue(}, if)
-                    parseStatement({)
-                      parseStatementX({)
-                        parseIfStatement({)
-                          listener: beginIfStatement(if)
-                          ensureParenthesizedCondition(if)
-                            parseExpressionInParenthesisRest(()
-                              parseExpression(()
-                                parsePrecedenceExpression((, 1, true)
-                                  parseUnaryExpression((, true)
-                                    parsePrimary((, expression)
-                                      parseSendOrFunctionLiteral((, expression)
-                                        parseSend((, expression)
-                                          ensureIdentifier((, expression)
-                                            listener: handleIdentifier(x, expression)
-                                          listener: handleNoTypeArguments(==)
-                                          parseArgumentsOpt(x)
-                                            listener: handleNoArguments(==)
-                                          listener: handleSend(x, ==)
-                                  listener: beginBinaryExpression(==)
-                                  parsePrecedenceExpression(==, 8, true)
-                                    parseUnaryExpression(==, true)
-                                      parsePrimary(==, expression)
-                                        parseLiteralInt(==)
-                                          listener: handleLiteralInt(0)
-                                  listener: endBinaryExpression(==)
-                              ensureCloseParen(0, ()
-                            listener: handleParenthesizedCondition(()
-                          listener: beginThenStatement(return)
-                          parseStatement())
-                            parseStatementX())
-                              parseReturnStatement())
-                                listener: beginReturnStatement(return)
-                                parseExpression(return)
-                                  parsePrecedenceExpression(return, 1, true)
-                                    parseUnaryExpression(return, true)
-                                      parsePrimary(return, expression)
-                                        parseLiteralInt(return)
-                                          listener: handleLiteralInt(42)
-                                ensureSemicolon(42)
-                                listener: endReturnStatement(true, return, ;)
-                                inGenerator()
-                          listener: endThenStatement(;)
-                          listener: endIfStatement(if, null)
-                    notEofOrValue(}, return)
-                    parseStatement(;)
-                      parseStatementX(;)
-                        parseReturnStatement(;)
-                          listener: beginReturnStatement(return)
-                          parseExpression(return)
-                            parsePrecedenceExpression(return, 1, true)
-                              parseUnaryExpression(return, true)
-                                parsePrimary(return, expression)
-                                  parseLiteralBool(return)
-                                    listener: handleLiteralBool(true)
-                              parseArgumentOrIndexStar(true, Instance of 'NoTypeParamOrArg', false)
-                                listener: handleNoTypeArguments(()
-                                parseArguments(true)
-                                  parseArgumentsRest(()
-                                    listener: beginArguments(()
-                                    parseExpression(()
-                                      parsePrecedenceExpression((, 1, true)
-                                        parseUnaryExpression((, true)
-                                          parsePrimary((, expression)
-                                            parseSendOrFunctionLiteral((, expression)
-                                              parseSend((, expression)
-                                                ensureIdentifier((, expression)
-                                                  listener: handleIdentifier(x, expression)
-                                                listener: handleNoTypeArguments(-)
-                                                parseArgumentsOpt(x)
-                                                  listener: handleNoArguments(-)
-                                                listener: handleSend(x, -)
-                                        listener: beginBinaryExpression(-)
-                                        parsePrecedenceExpression(-, 14, true)
-                                          parseUnaryExpression(-, true)
-                                            parsePrimary(-, expression)
-                                              parseLiteralInt(-)
-                                                listener: handleLiteralInt(1)
-                                        listener: endBinaryExpression(-)
-                                    listener: endArguments(1, (, ))
-                                listener: handleSend((, ))
-                              listener: beginBinaryExpression(+)
-                              parsePrecedenceExpression(+, 14, true)
-                                parseUnaryExpression(+, true)
-                                  parsePrimary(+, expression)
-                                    parseLiteralInt(+)
-                                      listener: handleLiteralInt(1)
-                              listener: endBinaryExpression(+)
-                          ensureSemicolon(1)
-                          listener: endReturnStatement(true, return, ;)
-                          inGenerator()
-                    notEofOrValue(}, })
-                    listener: endBlockFunctionBody(2, {, })
-                  listener: endClassMethod(null, , (, null, })
-                listener: endMember()
-            notEofOrValue(}, int)
-            parseClassOrMixinOrExtensionMemberImpl(}, DeclarationKind.Class, WrapperClass)
-              parseMetadataStar(})
-                listener: beginMetadataStar(int)
-                listener: endMetadataStar(0)
-              listener: beginMember()
-              parseFields(}, null, null, null, null, null, }, Instance of 'NoType', int, DeclarationKind.Class, WrapperClass)
-                reportRecoverableError(int, MissingConstFinalVarOrType)
-                  listener: handleRecoverableError(MissingConstFinalVarOrType, int, int)
-                listener: handleNoType(})
-                ensureIdentifier(}, fieldDeclaration)
-                  listener: handleIdentifier(int, fieldDeclaration)
-                parseFieldInitializerOpt(int, int, null, null, DeclarationKind.Class, WrapperClass)
-                  listener: handleNoFieldInitializer(try)
-                ensureSemicolon(int)
-                  reportRecoverableError(int, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
-                    listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
-                  rewriter()
-                listener: endClassFields(null, null, null, null, 1, int, ;)
-              listener: endMember()
-            notEofOrValue(}, try)
-            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
-              parseMetadataStar(;)
-                listener: beginMetadataStar(try)
-                listener: endMetadataStar(0)
-              listener: beginMember()
-              recoverFromInvalidMember(;, ;, null, null, null, null, null, ;, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
-                reportRecoverableErrorWithToken(try, Instance of 'Template<(Token) => Message>')
-                  listener: handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got 'try'., null, {token: try}], try, try)
-                listener: handleInvalidMember(try)
-                listener: endMember()
-            notEofOrValue(}, ()
-            parseClassOrMixinOrExtensionMemberImpl(try, DeclarationKind.Class, WrapperClass)
-              parseMetadataStar(try)
-                listener: beginMetadataStar(()
-                listener: endMetadataStar(0)
-              listener: beginMember()
-              recoverFromInvalidMember(try, try, null, null, null, null, null, try, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
-                parseMethod(try, null, null, null, null, null, try, Instance of 'NoType', null, (, DeclarationKind.Class, WrapperClass)
-                  listener: beginMethod(null, null, null, null, null, ()
-                  listener: handleNoType(try)
-                  ensureIdentifier(try, methodDeclaration)
-                    insertSyntheticIdentifier(try, methodDeclaration, message: null, messageOnToken: null)
-                      reportRecoverableError((, Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}])
-                        listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}], (, ()
-                      rewriter()
-                    listener: handleIdentifier(, methodDeclaration)
-                  parseQualifiedRestOpt(, methodDeclarationContinuation)
-                  parseMethodTypeVar()
-                    listener: handleNoTypeVariables(()
-                  parseGetterOrFormalParameters(, (, false, MemberKind.NonStaticMethod)
-                    parseFormalParameters(, MemberKind.NonStaticMethod)
-                      parseFormalParametersRest((, MemberKind.NonStaticMethod)
-                        listener: beginFormalParameters((, MemberKind.NonStaticMethod)
-                        parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
-                          parseMetadataStar(()
-                            listener: beginMetadataStar(int)
-                            listener: endMetadataStar(0)
-                          listener: beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
-                          listener: handleIdentifier(int, typeReference)
-                          listener: handleNoTypeArguments(x)
-                          listener: handleType(int, null)
-                          ensureIdentifier(int, formalParameterDeclaration)
-                            listener: handleIdentifier(x, formalParameterDeclaration)
-                          listener: handleFormalParameterWithoutValue())
-                          listener: endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
-                        listener: endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
-                  parseInitializersOpt())
-                    listener: handleNoInitializers()
-                  parseAsyncModifierOpt())
-                    listener: handleAsyncModifier(null, null)
-                    inPlainSync()
-                  inPlainSync()
-                  parseFunctionBody(), false, true)
-                    listener: beginBlockFunctionBody({)
-                    notEofOrValue(}, if)
-                    parseStatement({)
-                      parseStatementX({)
-                        parseIfStatement({)
-                          listener: beginIfStatement(if)
-                          ensureParenthesizedCondition(if)
-                            parseExpressionInParenthesisRest(()
-                              parseExpression(()
-                                parsePrecedenceExpression((, 1, true)
-                                  parseUnaryExpression((, true)
-                                    parsePrimary((, expression)
-                                      parseSendOrFunctionLiteral((, expression)
-                                        parseSend((, expression)
-                                          ensureIdentifier((, expression)
-                                            listener: handleIdentifier(x, expression)
-                                          listener: handleNoTypeArguments(==)
-                                          parseArgumentsOpt(x)
-                                            listener: handleNoArguments(==)
-                                          listener: handleSend(x, ==)
-                                  listener: beginBinaryExpression(==)
-                                  parsePrecedenceExpression(==, 8, true)
-                                    parseUnaryExpression(==, true)
-                                      parsePrimary(==, expression)
-                                        parseLiteralInt(==)
-                                          listener: handleLiteralInt(0)
-                                  listener: endBinaryExpression(==)
-                              ensureCloseParen(0, ()
-                            listener: handleParenthesizedCondition(()
-                          listener: beginThenStatement(return)
-                          parseStatement())
-                            parseStatementX())
-                              parseReturnStatement())
-                                listener: beginReturnStatement(return)
-                                parseExpression(return)
-                                  parsePrecedenceExpression(return, 1, true)
-                                    parseUnaryExpression(return, true)
-                                      parsePrimary(return, expression)
-                                        parseLiteralInt(return)
-                                          listener: handleLiteralInt(42)
-                                ensureSemicolon(42)
-                                listener: endReturnStatement(true, return, ;)
-                                inGenerator()
-                          listener: endThenStatement(;)
-                          listener: endIfStatement(if, null)
-                    notEofOrValue(}, return)
-                    parseStatement(;)
-                      parseStatementX(;)
-                        parseReturnStatement(;)
-                          listener: beginReturnStatement(return)
-                          parseExpression(return)
-                            parsePrecedenceExpression(return, 1, true)
-                              parseUnaryExpression(return, true)
-                                parsePrimary(return, expression)
-                                  inPlainSync()
-                                  parseSend(return, expression)
-                                    ensureIdentifier(return, expression)
-                                      reportRecoverableErrorWithToken(try, Instance of 'Template<(Token) => Message>')
-                                        listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'try'., null, {token: try}], try, try)
-                                      rewriter()
-                                      listener: handleIdentifier(, expression)
-                                    listener: handleNoTypeArguments(try)
-                                    parseArgumentsOpt()
-                                      listener: handleNoArguments(try)
-                                    listener: handleSend(, try)
-                          ensureSemicolon()
-                            reportRecoverableError(, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
-                              listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], try, try)
-                            rewriter()
-                          listener: endReturnStatement(true, return, ;)
-                          inGenerator()
-                    notEofOrValue(}, try)
-                    parseStatement(;)
-                      parseStatementX(;)
-                        parseTryStatement(;)
-                          listener: beginTryStatement(try)
-                          parseBlock(try, BlockKind(try statement))
-                            ensureBlock(try, null, try statement)
-                              reportRecoverableError(try, Message[ExpectedClassOrMixinBody, A try statement must have a body, even if it is empty., Try adding an empty body., {string: try statement}])
-                                listener: handleRecoverableError(Message[ExpectedClassOrMixinBody, A try statement must have a body, even if it is empty., Try adding an empty body., {string: try statement}], try, try)
-                              insertBlock(try)
-                                rewriter()
-                                rewriter()
-                            listener: beginBlock({, BlockKind(try statement))
-                            notEofOrValue(}, })
-                            listener: endBlock(0, {, }, BlockKind(try statement))
-                          reportRecoverableError(try, OnlyTry)
-                            listener: handleRecoverableError(OnlyTry, try, try)
-                          listener: endTryStatement(0, try, null)
-                    notEofOrValue(}, ()
-                    parseStatement(})
-                      parseStatementX(})
-                        parseExpressionStatementOrDeclaration(}, false)
-                          parseExpressionStatementOrDeclarationAfterModifiers(}, }, null, null, null, false)
-                            looksLikeLocalFunction(()
-                            parseExpressionStatement(})
-                              parseExpression(})
-                                parsePrecedenceExpression(}, 1, true)
-                                  parseUnaryExpression(}, true)
-                                    parsePrimary(}, expression)
-                                      parseParenthesizedExpressionOrFunctionLiteral(})
-                                        parseParenthesizedExpression(})
-                                          parseExpressionInParenthesis(})
-                                            parseExpressionInParenthesisRest(()
-                                              parseExpression(()
-                                                parsePrecedenceExpression((, 1, true)
-                                                  parseUnaryExpression((, true)
-                                                    parsePrimary((, expression)
-                                                      parseSendOrFunctionLiteral((, expression)
-                                                        parseSend((, expression)
-                                                          ensureIdentifier((, expression)
-                                                            listener: handleIdentifier(x, expression)
-                                                          listener: handleNoTypeArguments(-)
-                                                          parseArgumentsOpt(x)
-                                                            listener: handleNoArguments(-)
-                                                          listener: handleSend(x, -)
-                                                  listener: beginBinaryExpression(-)
-                                                  parsePrecedenceExpression(-, 14, true)
-                                                    parseUnaryExpression(-, true)
-                                                      parsePrimary(-, expression)
-                                                        parseLiteralInt(-)
-                                                          listener: handleLiteralInt(1)
-                                                  listener: endBinaryExpression(-)
-                                              ensureCloseParen(1, ()
-                                          listener: handleParenthesizedExpression(()
-                                  listener: beginBinaryExpression(+)
-                                  parsePrecedenceExpression(+, 14, true)
-                                    parseUnaryExpression(+, true)
-                                      parsePrimary(+, expression)
-                                        parseLiteralInt(+)
-                                          listener: handleLiteralInt(1)
-                                  listener: endBinaryExpression(+)
-                              ensureSemicolon(1)
-                              listener: handleExpressionStatement(;)
-                    notEofOrValue(}, })
-                    listener: endBlockFunctionBody(4, {, })
-                  listener: endClassMethod(null, , (, null, })
-                listener: endMember()
-            notEofOrValue(}, int)
-            parseClassOrMixinOrExtensionMemberImpl(}, DeclarationKind.Class, WrapperClass)
-              parseMetadataStar(})
-                listener: beginMetadataStar(int)
-                listener: endMetadataStar(0)
-              listener: beginMember()
-              parseFields(}, null, null, null, null, null, }, Instance of 'NoType', int, DeclarationKind.Class, WrapperClass)
-                reportRecoverableError(int, MissingConstFinalVarOrType)
-                  listener: handleRecoverableError(MissingConstFinalVarOrType, int, int)
-                listener: handleNoType(})
-                ensureIdentifier(}, fieldDeclaration)
-                  listener: handleIdentifier(int, fieldDeclaration)
-                parseFieldInitializerOpt(int, int, null, null, DeclarationKind.Class, WrapperClass)
-                  listener: handleNoFieldInitializer(var)
-                ensureSemicolon(int)
-                  reportRecoverableError(int, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
-                    listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
-                  rewriter()
-                listener: endClassFields(null, null, null, null, 1, int, ;)
-              listener: endMember()
-            notEofOrValue(}, var)
-            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
-              parseMetadataStar(;)
-                listener: beginMetadataStar(var)
-                listener: endMetadataStar(0)
-              listener: beginMember()
-              recoverFromInvalidMember(var, ;, null, null, null, null, var, var, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
-                parseMethod(;, null, null, null, null, var, var, Instance of 'NoType', null, (, DeclarationKind.Class, WrapperClass)
-                  reportRecoverableError(var, VarReturnType)
-                    listener: handleRecoverableError(VarReturnType, var, var)
-                  listener: beginMethod(null, null, null, null, null, ()
-                  listener: handleNoType(var)
-                  ensureIdentifier(var, methodDeclaration)
-                    insertSyntheticIdentifier(var, methodDeclaration, message: null, messageOnToken: null)
-                      reportRecoverableError((, Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}])
-                        listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}], (, ()
-                      rewriter()
-                    listener: handleIdentifier(, methodDeclaration)
-                  parseQualifiedRestOpt(, methodDeclarationContinuation)
-                  parseMethodTypeVar()
-                    listener: handleNoTypeVariables(()
-                  parseGetterOrFormalParameters(, (, false, MemberKind.NonStaticMethod)
-                    parseFormalParameters(, MemberKind.NonStaticMethod)
-                      parseFormalParametersRest((, MemberKind.NonStaticMethod)
-                        listener: beginFormalParameters((, MemberKind.NonStaticMethod)
-                        parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
-                          parseMetadataStar(()
-                            listener: beginMetadataStar(int)
-                            listener: endMetadataStar(0)
-                          listener: beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
-                          listener: handleIdentifier(int, typeReference)
-                          listener: handleNoTypeArguments(x)
-                          listener: handleType(int, null)
-                          ensureIdentifier(int, formalParameterDeclaration)
-                            listener: handleIdentifier(x, formalParameterDeclaration)
-                          listener: handleFormalParameterWithoutValue())
-                          listener: endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
-                        listener: endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
-                  parseInitializersOpt())
-                    listener: handleNoInitializers()
-                  parseAsyncModifierOpt())
-                    listener: handleAsyncModifier(null, null)
-                    inPlainSync()
-                  inPlainSync()
-                  parseFunctionBody(), false, true)
-                    listener: beginBlockFunctionBody({)
-                    notEofOrValue(}, if)
-                    parseStatement({)
-                      parseStatementX({)
-                        parseIfStatement({)
-                          listener: beginIfStatement(if)
-                          ensureParenthesizedCondition(if)
-                            parseExpressionInParenthesisRest(()
-                              parseExpression(()
-                                parsePrecedenceExpression((, 1, true)
-                                  parseUnaryExpression((, true)
-                                    parsePrimary((, expression)
-                                      parseSendOrFunctionLiteral((, expression)
-                                        parseSend((, expression)
-                                          ensureIdentifier((, expression)
-                                            listener: handleIdentifier(x, expression)
-                                          listener: handleNoTypeArguments(==)
-                                          parseArgumentsOpt(x)
-                                            listener: handleNoArguments(==)
-                                          listener: handleSend(x, ==)
-                                  listener: beginBinaryExpression(==)
-                                  parsePrecedenceExpression(==, 8, true)
-                                    parseUnaryExpression(==, true)
-                                      parsePrimary(==, expression)
-                                        parseLiteralInt(==)
-                                          listener: handleLiteralInt(0)
-                                  listener: endBinaryExpression(==)
-                              ensureCloseParen(0, ()
-                            listener: handleParenthesizedCondition(()
-                          listener: beginThenStatement(return)
-                          parseStatement())
-                            parseStatementX())
-                              parseReturnStatement())
-                                listener: beginReturnStatement(return)
-                                parseExpression(return)
-                                  parsePrecedenceExpression(return, 1, true)
-                                    parseUnaryExpression(return, true)
-                                      parsePrimary(return, expression)
-                                        parseLiteralInt(return)
-                                          listener: handleLiteralInt(42)
-                                ensureSemicolon(42)
-                                listener: endReturnStatement(true, return, ;)
-                                inGenerator()
-                          listener: endThenStatement(;)
-                          listener: endIfStatement(if, null)
-                    notEofOrValue(}, return)
-                    parseStatement(;)
-                      parseStatementX(;)
-                        parseReturnStatement(;)
-                          listener: beginReturnStatement(return)
-                          parseExpression(return)
-                            parsePrecedenceExpression(return, 1, true)
-                              parseUnaryExpression(return, true)
-                                parsePrimary(return, expression)
-                                  inPlainSync()
-                                  parseSend(return, expression)
-                                    ensureIdentifier(return, expression)
-                                      reportRecoverableErrorWithToken(var, Instance of 'Template<(Token) => Message>')
-                                        listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'var'., null, {token: var}], var, var)
-                                      rewriter()
-                                      listener: handleIdentifier(, expression)
-                                    listener: handleNoTypeArguments(var)
-                                    parseArgumentsOpt()
-                                      listener: handleNoArguments(var)
-                                    listener: handleSend(, var)
-                          ensureSemicolon()
-                            reportRecoverableError(, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
-                              listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], var, var)
-                            rewriter()
-                          listener: endReturnStatement(true, return, ;)
-                          inGenerator()
-                    notEofOrValue(}, var)
-                    parseStatement(;)
-                      parseStatementX(;)
-                        parseExpressionStatementOrDeclarationAfterModifiers(var, ;, null, var, null, false)
-                          looksLikeLocalFunction(()
-                          listener: beginMetadataStar(var)
+              isReservedKeyword(throw)
+              indicatesMethodOrField(()
+              parseMethod(}, null, null, null, null, null, }, Instance of 'SimpleType', null, throw, DeclarationKind.Class, WrapperClass, true)
+                listener: beginMethod(null, null, null, null, null, throw)
+                listener: handleIdentifier(int, typeReference)
+                listener: handleNoTypeArguments(throw)
+                listener: handleType(int, null)
+                ensureIdentifierPotentiallyRecovered(int, methodDeclaration, true)
+                  reportRecoverableErrorWithToken(throw, Instance of 'Template<(Token) => Message>')
+                    listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'throw'., null, {token: throw}], throw, throw)
+                  listener: handleIdentifier(throw, methodDeclaration)
+                parseQualifiedRestOpt(throw, methodDeclarationContinuation)
+                parseMethodTypeVar(throw)
+                  listener: handleNoTypeVariables(()
+                parseGetterOrFormalParameters(throw, throw, false, MemberKind.NonStaticMethod)
+                  parseFormalParameters(throw, MemberKind.NonStaticMethod)
+                    parseFormalParametersRest((, MemberKind.NonStaticMethod)
+                      listener: beginFormalParameters((, MemberKind.NonStaticMethod)
+                      parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+                        parseMetadataStar(()
+                          listener: beginMetadataStar(int)
                           listener: endMetadataStar(0)
-                          listener: handleNoType(var)
-                          listener: beginVariablesDeclaration((, null, var)
-                          parseVariablesDeclarationRest(var, true)
-                            parseOptionallyInitializedIdentifier(var)
-                              ensureIdentifier(var, localVariableDeclaration)
+                        listener: beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+                        listener: handleIdentifier(int, typeReference)
+                        listener: handleNoTypeArguments(x)
+                        listener: handleType(int, null)
+                        ensureIdentifier(int, formalParameterDeclaration)
+                          listener: handleIdentifier(x, formalParameterDeclaration)
+                        listener: handleFormalParameterWithoutValue())
+                        listener: endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+                      listener: endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
+                parseInitializersOpt())
+                  listener: handleNoInitializers()
+                parseAsyncModifierOpt())
+                  listener: handleAsyncModifier(null, null)
+                  inPlainSync()
+                inPlainSync()
+                parseFunctionBody(), false, true)
+                  listener: beginBlockFunctionBody({)
+                  notEofOrValue(}, if)
+                  parseStatement({)
+                    parseStatementX({)
+                      parseIfStatement({)
+                        listener: beginIfStatement(if)
+                        ensureParenthesizedCondition(if)
+                          parseExpressionInParenthesisRest(()
+                            parseExpression(()
+                              parsePrecedenceExpression((, 1, true)
+                                parseUnaryExpression((, true)
+                                  parsePrimary((, expression)
+                                    parseSendOrFunctionLiteral((, expression)
+                                      parseSend((, expression)
+                                        ensureIdentifier((, expression)
+                                          listener: handleIdentifier(x, expression)
+                                        listener: handleNoTypeArguments(==)
+                                        parseArgumentsOpt(x)
+                                          listener: handleNoArguments(==)
+                                        listener: handleSend(x, ==)
+                                listener: beginBinaryExpression(==)
+                                parsePrecedenceExpression(==, 8, true)
+                                  parseUnaryExpression(==, true)
+                                    parsePrimary(==, expression)
+                                      parseLiteralInt(==)
+                                        listener: handleLiteralInt(0)
+                                listener: endBinaryExpression(==)
+                            ensureCloseParen(0, ()
+                          listener: handleParenthesizedCondition(()
+                        listener: beginThenStatement(return)
+                        parseStatement())
+                          parseStatementX())
+                            parseReturnStatement())
+                              listener: beginReturnStatement(return)
+                              parseExpression(return)
+                                parsePrecedenceExpression(return, 1, true)
+                                  parseUnaryExpression(return, true)
+                                    parsePrimary(return, expression)
+                                      parseLiteralInt(return)
+                                        listener: handleLiteralInt(42)
+                              ensureSemicolon(42)
+                              listener: endReturnStatement(true, return, ;)
+                              inGenerator()
+                        listener: endThenStatement(;)
+                        listener: endIfStatement(if, null)
+                  notEofOrValue(}, return)
+                  parseStatement(;)
+                    parseStatementX(;)
+                      parseReturnStatement(;)
+                        listener: beginReturnStatement(return)
+                        parseExpression(return)
+                          parseThrowExpression(return, true)
+                            parseExpression(throw)
+                              parsePrecedenceExpression(throw, 1, true)
+                                parseUnaryExpression(throw, true)
+                                  parsePrimary(throw, expression)
+                                    parseParenthesizedExpressionOrFunctionLiteral(throw)
+                                      parseParenthesizedExpression(throw)
+                                        parseExpressionInParenthesis(throw)
+                                          parseExpressionInParenthesisRest(()
+                                            parseExpression(()
+                                              parsePrecedenceExpression((, 1, true)
+                                                parseUnaryExpression((, true)
+                                                  parsePrimary((, expression)
+                                                    parseSendOrFunctionLiteral((, expression)
+                                                      parseSend((, expression)
+                                                        ensureIdentifier((, expression)
+                                                          listener: handleIdentifier(x, expression)
+                                                        listener: handleNoTypeArguments(-)
+                                                        parseArgumentsOpt(x)
+                                                          listener: handleNoArguments(-)
+                                                        listener: handleSend(x, -)
+                                                listener: beginBinaryExpression(-)
+                                                parsePrecedenceExpression(-, 14, true)
+                                                  parseUnaryExpression(-, true)
+                                                    parsePrimary(-, expression)
+                                                      parseLiteralInt(-)
+                                                        listener: handleLiteralInt(1)
+                                                listener: endBinaryExpression(-)
+                                            ensureCloseParen(1, ()
+                                        listener: handleParenthesizedExpression(()
+                                listener: beginBinaryExpression(+)
+                                parsePrecedenceExpression(+, 14, true)
+                                  parseUnaryExpression(+, true)
+                                    parsePrimary(+, expression)
+                                      parseLiteralInt(+)
+                                        listener: handleLiteralInt(1)
+                                listener: endBinaryExpression(+)
+                            listener: handleThrowExpression(throw, ;)
+                        ensureSemicolon(1)
+                        listener: endReturnStatement(true, return, ;)
+                        inGenerator()
+                  notEofOrValue(}, })
+                  listener: endBlockFunctionBody(2, {, })
+                listener: endClassMethod(null, int, (, null, })
+              listener: endMember()
+            notEofOrValue(}, int)
+            parseClassOrMixinOrExtensionMemberImpl(}, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(})
+                listener: beginMetadataStar(int)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              isReservedKeyword(true)
+              indicatesMethodOrField(()
+              parseMethod(}, null, null, null, null, null, }, Instance of 'SimpleType', null, true, DeclarationKind.Class, WrapperClass, true)
+                listener: beginMethod(null, null, null, null, null, true)
+                listener: handleIdentifier(int, typeReference)
+                listener: handleNoTypeArguments(true)
+                listener: handleType(int, null)
+                ensureIdentifierPotentiallyRecovered(int, methodDeclaration, true)
+                  reportRecoverableErrorWithToken(true, Instance of 'Template<(Token) => Message>')
+                    listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'true'., null, {token: true}], true, true)
+                  listener: handleIdentifier(true, methodDeclaration)
+                parseQualifiedRestOpt(true, methodDeclarationContinuation)
+                parseMethodTypeVar(true)
+                  listener: handleNoTypeVariables(()
+                parseGetterOrFormalParameters(true, true, false, MemberKind.NonStaticMethod)
+                  parseFormalParameters(true, MemberKind.NonStaticMethod)
+                    parseFormalParametersRest((, MemberKind.NonStaticMethod)
+                      listener: beginFormalParameters((, MemberKind.NonStaticMethod)
+                      parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+                        parseMetadataStar(()
+                          listener: beginMetadataStar(int)
+                          listener: endMetadataStar(0)
+                        listener: beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+                        listener: handleIdentifier(int, typeReference)
+                        listener: handleNoTypeArguments(x)
+                        listener: handleType(int, null)
+                        ensureIdentifier(int, formalParameterDeclaration)
+                          listener: handleIdentifier(x, formalParameterDeclaration)
+                        listener: handleFormalParameterWithoutValue())
+                        listener: endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+                      listener: endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
+                parseInitializersOpt())
+                  listener: handleNoInitializers()
+                parseAsyncModifierOpt())
+                  listener: handleAsyncModifier(null, null)
+                  inPlainSync()
+                inPlainSync()
+                parseFunctionBody(), false, true)
+                  listener: beginBlockFunctionBody({)
+                  notEofOrValue(}, if)
+                  parseStatement({)
+                    parseStatementX({)
+                      parseIfStatement({)
+                        listener: beginIfStatement(if)
+                        ensureParenthesizedCondition(if)
+                          parseExpressionInParenthesisRest(()
+                            parseExpression(()
+                              parsePrecedenceExpression((, 1, true)
+                                parseUnaryExpression((, true)
+                                  parsePrimary((, expression)
+                                    parseSendOrFunctionLiteral((, expression)
+                                      parseSend((, expression)
+                                        ensureIdentifier((, expression)
+                                          listener: handleIdentifier(x, expression)
+                                        listener: handleNoTypeArguments(==)
+                                        parseArgumentsOpt(x)
+                                          listener: handleNoArguments(==)
+                                        listener: handleSend(x, ==)
+                                listener: beginBinaryExpression(==)
+                                parsePrecedenceExpression(==, 8, true)
+                                  parseUnaryExpression(==, true)
+                                    parsePrimary(==, expression)
+                                      parseLiteralInt(==)
+                                        listener: handleLiteralInt(0)
+                                listener: endBinaryExpression(==)
+                            ensureCloseParen(0, ()
+                          listener: handleParenthesizedCondition(()
+                        listener: beginThenStatement(return)
+                        parseStatement())
+                          parseStatementX())
+                            parseReturnStatement())
+                              listener: beginReturnStatement(return)
+                              parseExpression(return)
+                                parsePrecedenceExpression(return, 1, true)
+                                  parseUnaryExpression(return, true)
+                                    parsePrimary(return, expression)
+                                      parseLiteralInt(return)
+                                        listener: handleLiteralInt(42)
+                              ensureSemicolon(42)
+                              listener: endReturnStatement(true, return, ;)
+                              inGenerator()
+                        listener: endThenStatement(;)
+                        listener: endIfStatement(if, null)
+                  notEofOrValue(}, return)
+                  parseStatement(;)
+                    parseStatementX(;)
+                      parseReturnStatement(;)
+                        listener: beginReturnStatement(return)
+                        parseExpression(return)
+                          parsePrecedenceExpression(return, 1, true)
+                            parseUnaryExpression(return, true)
+                              parsePrimary(return, expression)
+                                parseLiteralBool(return)
+                                  listener: handleLiteralBool(true)
+                            parseArgumentOrIndexStar(true, Instance of 'NoTypeParamOrArg', false)
+                              listener: handleNoTypeArguments(()
+                              parseArguments(true)
+                                parseArgumentsRest(()
+                                  listener: beginArguments(()
+                                  parseExpression(()
+                                    parsePrecedenceExpression((, 1, true)
+                                      parseUnaryExpression((, true)
+                                        parsePrimary((, expression)
+                                          parseSendOrFunctionLiteral((, expression)
+                                            parseSend((, expression)
+                                              ensureIdentifier((, expression)
+                                                listener: handleIdentifier(x, expression)
+                                              listener: handleNoTypeArguments(-)
+                                              parseArgumentsOpt(x)
+                                                listener: handleNoArguments(-)
+                                              listener: handleSend(x, -)
+                                      listener: beginBinaryExpression(-)
+                                      parsePrecedenceExpression(-, 14, true)
+                                        parseUnaryExpression(-, true)
+                                          parsePrimary(-, expression)
+                                            parseLiteralInt(-)
+                                              listener: handleLiteralInt(1)
+                                      listener: endBinaryExpression(-)
+                                  listener: endArguments(1, (, ))
+                              listener: handleSend((, ))
+                            listener: beginBinaryExpression(+)
+                            parsePrecedenceExpression(+, 14, true)
+                              parseUnaryExpression(+, true)
+                                parsePrimary(+, expression)
+                                  parseLiteralInt(+)
+                                    listener: handleLiteralInt(1)
+                            listener: endBinaryExpression(+)
+                        ensureSemicolon(1)
+                        listener: endReturnStatement(true, return, ;)
+                        inGenerator()
+                  notEofOrValue(}, })
+                  listener: endBlockFunctionBody(2, {, })
+                listener: endClassMethod(null, int, (, null, })
+              listener: endMember()
+            notEofOrValue(}, int)
+            parseClassOrMixinOrExtensionMemberImpl(}, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(})
+                listener: beginMetadataStar(int)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              isReservedKeyword(try)
+              indicatesMethodOrField(()
+              parseMethod(}, null, null, null, null, null, }, Instance of 'SimpleType', null, try, DeclarationKind.Class, WrapperClass, true)
+                listener: beginMethod(null, null, null, null, null, try)
+                listener: handleIdentifier(int, typeReference)
+                listener: handleNoTypeArguments(try)
+                listener: handleType(int, null)
+                ensureIdentifierPotentiallyRecovered(int, methodDeclaration, true)
+                  reportRecoverableErrorWithToken(try, Instance of 'Template<(Token) => Message>')
+                    listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'try'., null, {token: try}], try, try)
+                  listener: handleIdentifier(try, methodDeclaration)
+                parseQualifiedRestOpt(try, methodDeclarationContinuation)
+                parseMethodTypeVar(try)
+                  listener: handleNoTypeVariables(()
+                parseGetterOrFormalParameters(try, try, false, MemberKind.NonStaticMethod)
+                  parseFormalParameters(try, MemberKind.NonStaticMethod)
+                    parseFormalParametersRest((, MemberKind.NonStaticMethod)
+                      listener: beginFormalParameters((, MemberKind.NonStaticMethod)
+                      parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+                        parseMetadataStar(()
+                          listener: beginMetadataStar(int)
+                          listener: endMetadataStar(0)
+                        listener: beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+                        listener: handleIdentifier(int, typeReference)
+                        listener: handleNoTypeArguments(x)
+                        listener: handleType(int, null)
+                        ensureIdentifier(int, formalParameterDeclaration)
+                          listener: handleIdentifier(x, formalParameterDeclaration)
+                        listener: handleFormalParameterWithoutValue())
+                        listener: endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+                      listener: endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
+                parseInitializersOpt())
+                  listener: handleNoInitializers()
+                parseAsyncModifierOpt())
+                  listener: handleAsyncModifier(null, null)
+                  inPlainSync()
+                inPlainSync()
+                parseFunctionBody(), false, true)
+                  listener: beginBlockFunctionBody({)
+                  notEofOrValue(}, if)
+                  parseStatement({)
+                    parseStatementX({)
+                      parseIfStatement({)
+                        listener: beginIfStatement(if)
+                        ensureParenthesizedCondition(if)
+                          parseExpressionInParenthesisRest(()
+                            parseExpression(()
+                              parsePrecedenceExpression((, 1, true)
+                                parseUnaryExpression((, true)
+                                  parsePrimary((, expression)
+                                    parseSendOrFunctionLiteral((, expression)
+                                      parseSend((, expression)
+                                        ensureIdentifier((, expression)
+                                          listener: handleIdentifier(x, expression)
+                                        listener: handleNoTypeArguments(==)
+                                        parseArgumentsOpt(x)
+                                          listener: handleNoArguments(==)
+                                        listener: handleSend(x, ==)
+                                listener: beginBinaryExpression(==)
+                                parsePrecedenceExpression(==, 8, true)
+                                  parseUnaryExpression(==, true)
+                                    parsePrimary(==, expression)
+                                      parseLiteralInt(==)
+                                        listener: handleLiteralInt(0)
+                                listener: endBinaryExpression(==)
+                            ensureCloseParen(0, ()
+                          listener: handleParenthesizedCondition(()
+                        listener: beginThenStatement(return)
+                        parseStatement())
+                          parseStatementX())
+                            parseReturnStatement())
+                              listener: beginReturnStatement(return)
+                              parseExpression(return)
+                                parsePrecedenceExpression(return, 1, true)
+                                  parseUnaryExpression(return, true)
+                                    parsePrimary(return, expression)
+                                      parseLiteralInt(return)
+                                        listener: handleLiteralInt(42)
+                              ensureSemicolon(42)
+                              listener: endReturnStatement(true, return, ;)
+                              inGenerator()
+                        listener: endThenStatement(;)
+                        listener: endIfStatement(if, null)
+                  notEofOrValue(}, return)
+                  parseStatement(;)
+                    parseStatementX(;)
+                      parseReturnStatement(;)
+                        listener: beginReturnStatement(return)
+                        parseExpression(return)
+                          parsePrecedenceExpression(return, 1, true)
+                            parseUnaryExpression(return, true)
+                              parsePrimary(return, expression)
+                                inPlainSync()
+                                parseSend(return, expression)
+                                  ensureIdentifier(return, expression)
+                                    reportRecoverableErrorWithToken(try, Instance of 'Template<(Token) => Message>')
+                                      listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'try'., null, {token: try}], try, try)
+                                    rewriter()
+                                    listener: handleIdentifier(, expression)
+                                  listener: handleNoTypeArguments(try)
+                                  parseArgumentsOpt()
+                                    listener: handleNoArguments(try)
+                                  listener: handleSend(, try)
+                        ensureSemicolon()
+                          reportRecoverableError(, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+                            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], try, try)
+                          rewriter()
+                        listener: endReturnStatement(true, return, ;)
+                        inGenerator()
+                  notEofOrValue(}, try)
+                  parseStatement(;)
+                    parseStatementX(;)
+                      parseTryStatement(;)
+                        listener: beginTryStatement(try)
+                        parseBlock(try, BlockKind(try statement))
+                          ensureBlock(try, null, try statement)
+                            reportRecoverableError(try, Message[ExpectedClassOrMixinBody, A try statement must have a body, even if it is empty., Try adding an empty body., {string: try statement}])
+                              listener: handleRecoverableError(Message[ExpectedClassOrMixinBody, A try statement must have a body, even if it is empty., Try adding an empty body., {string: try statement}], try, try)
+                            insertBlock(try)
+                              rewriter()
+                              rewriter()
+                          listener: beginBlock({, BlockKind(try statement))
+                          notEofOrValue(}, })
+                          listener: endBlock(0, {, }, BlockKind(try statement))
+                        reportRecoverableError(try, OnlyTry)
+                          listener: handleRecoverableError(OnlyTry, try, try)
+                        listener: endTryStatement(0, try, null)
+                  notEofOrValue(}, ()
+                  parseStatement(})
+                    parseStatementX(})
+                      parseExpressionStatementOrDeclaration(}, false)
+                        parseExpressionStatementOrDeclarationAfterModifiers(}, }, null, null, null, false)
+                          looksLikeLocalFunction(()
+                          parseExpressionStatement(})
+                            parseExpression(})
+                              parsePrecedenceExpression(}, 1, true)
+                                parseUnaryExpression(}, true)
+                                  parsePrimary(}, expression)
+                                    parseParenthesizedExpressionOrFunctionLiteral(})
+                                      parseParenthesizedExpression(})
+                                        parseExpressionInParenthesis(})
+                                          parseExpressionInParenthesisRest(()
+                                            parseExpression(()
+                                              parsePrecedenceExpression((, 1, true)
+                                                parseUnaryExpression((, true)
+                                                  parsePrimary((, expression)
+                                                    parseSendOrFunctionLiteral((, expression)
+                                                      parseSend((, expression)
+                                                        ensureIdentifier((, expression)
+                                                          listener: handleIdentifier(x, expression)
+                                                        listener: handleNoTypeArguments(-)
+                                                        parseArgumentsOpt(x)
+                                                          listener: handleNoArguments(-)
+                                                        listener: handleSend(x, -)
+                                                listener: beginBinaryExpression(-)
+                                                parsePrecedenceExpression(-, 14, true)
+                                                  parseUnaryExpression(-, true)
+                                                    parsePrimary(-, expression)
+                                                      parseLiteralInt(-)
+                                                        listener: handleLiteralInt(1)
+                                                listener: endBinaryExpression(-)
+                                            ensureCloseParen(1, ()
+                                        listener: handleParenthesizedExpression(()
+                                listener: beginBinaryExpression(+)
+                                parsePrecedenceExpression(+, 14, true)
+                                  parseUnaryExpression(+, true)
+                                    parsePrimary(+, expression)
+                                      parseLiteralInt(+)
+                                        listener: handleLiteralInt(1)
+                                listener: endBinaryExpression(+)
+                            ensureSemicolon(1)
+                            listener: handleExpressionStatement(;)
+                  notEofOrValue(}, })
+                  listener: endBlockFunctionBody(4, {, })
+                listener: endClassMethod(null, int, (, null, })
+              listener: endMember()
+            notEofOrValue(}, int)
+            parseClassOrMixinOrExtensionMemberImpl(}, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(})
+                listener: beginMetadataStar(int)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              isReservedKeyword(var)
+              indicatesMethodOrField(()
+              parseMethod(}, null, null, null, null, null, }, Instance of 'SimpleType', null, var, DeclarationKind.Class, WrapperClass, true)
+                listener: beginMethod(null, null, null, null, null, var)
+                listener: handleIdentifier(int, typeReference)
+                listener: handleNoTypeArguments(var)
+                listener: handleType(int, null)
+                ensureIdentifierPotentiallyRecovered(int, methodDeclaration, true)
+                  reportRecoverableErrorWithToken(var, Instance of 'Template<(Token) => Message>')
+                    listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'var'., null, {token: var}], var, var)
+                  listener: handleIdentifier(var, methodDeclaration)
+                parseQualifiedRestOpt(var, methodDeclarationContinuation)
+                parseMethodTypeVar(var)
+                  listener: handleNoTypeVariables(()
+                parseGetterOrFormalParameters(var, var, false, MemberKind.NonStaticMethod)
+                  parseFormalParameters(var, MemberKind.NonStaticMethod)
+                    parseFormalParametersRest((, MemberKind.NonStaticMethod)
+                      listener: beginFormalParameters((, MemberKind.NonStaticMethod)
+                      parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+                        parseMetadataStar(()
+                          listener: beginMetadataStar(int)
+                          listener: endMetadataStar(0)
+                        listener: beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+                        listener: handleIdentifier(int, typeReference)
+                        listener: handleNoTypeArguments(x)
+                        listener: handleType(int, null)
+                        ensureIdentifier(int, formalParameterDeclaration)
+                          listener: handleIdentifier(x, formalParameterDeclaration)
+                        listener: handleFormalParameterWithoutValue())
+                        listener: endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+                      listener: endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
+                parseInitializersOpt())
+                  listener: handleNoInitializers()
+                parseAsyncModifierOpt())
+                  listener: handleAsyncModifier(null, null)
+                  inPlainSync()
+                inPlainSync()
+                parseFunctionBody(), false, true)
+                  listener: beginBlockFunctionBody({)
+                  notEofOrValue(}, if)
+                  parseStatement({)
+                    parseStatementX({)
+                      parseIfStatement({)
+                        listener: beginIfStatement(if)
+                        ensureParenthesizedCondition(if)
+                          parseExpressionInParenthesisRest(()
+                            parseExpression(()
+                              parsePrecedenceExpression((, 1, true)
+                                parseUnaryExpression((, true)
+                                  parsePrimary((, expression)
+                                    parseSendOrFunctionLiteral((, expression)
+                                      parseSend((, expression)
+                                        ensureIdentifier((, expression)
+                                          listener: handleIdentifier(x, expression)
+                                        listener: handleNoTypeArguments(==)
+                                        parseArgumentsOpt(x)
+                                          listener: handleNoArguments(==)
+                                        listener: handleSend(x, ==)
+                                listener: beginBinaryExpression(==)
+                                parsePrecedenceExpression(==, 8, true)
+                                  parseUnaryExpression(==, true)
+                                    parsePrimary(==, expression)
+                                      parseLiteralInt(==)
+                                        listener: handleLiteralInt(0)
+                                listener: endBinaryExpression(==)
+                            ensureCloseParen(0, ()
+                          listener: handleParenthesizedCondition(()
+                        listener: beginThenStatement(return)
+                        parseStatement())
+                          parseStatementX())
+                            parseReturnStatement())
+                              listener: beginReturnStatement(return)
+                              parseExpression(return)
+                                parsePrecedenceExpression(return, 1, true)
+                                  parseUnaryExpression(return, true)
+                                    parsePrimary(return, expression)
+                                      parseLiteralInt(return)
+                                        listener: handleLiteralInt(42)
+                              ensureSemicolon(42)
+                              listener: endReturnStatement(true, return, ;)
+                              inGenerator()
+                        listener: endThenStatement(;)
+                        listener: endIfStatement(if, null)
+                  notEofOrValue(}, return)
+                  parseStatement(;)
+                    parseStatementX(;)
+                      parseReturnStatement(;)
+                        listener: beginReturnStatement(return)
+                        parseExpression(return)
+                          parsePrecedenceExpression(return, 1, true)
+                            parseUnaryExpression(return, true)
+                              parsePrimary(return, expression)
+                                inPlainSync()
+                                parseSend(return, expression)
+                                  ensureIdentifier(return, expression)
+                                    reportRecoverableErrorWithToken(var, Instance of 'Template<(Token) => Message>')
+                                      listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'var'., null, {token: var}], var, var)
+                                    rewriter()
+                                    listener: handleIdentifier(, expression)
+                                  listener: handleNoTypeArguments(var)
+                                  parseArgumentsOpt()
+                                    listener: handleNoArguments(var)
+                                  listener: handleSend(, var)
+                        ensureSemicolon()
+                          reportRecoverableError(, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+                            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], var, var)
+                          rewriter()
+                        listener: endReturnStatement(true, return, ;)
+                        inGenerator()
+                  notEofOrValue(}, var)
+                  parseStatement(;)
+                    parseStatementX(;)
+                      parseExpressionStatementOrDeclarationAfterModifiers(var, ;, null, var, null, false)
+                        looksLikeLocalFunction(()
+                        listener: beginMetadataStar(var)
+                        listener: endMetadataStar(0)
+                        listener: handleNoType(var)
+                        listener: beginVariablesDeclaration((, null, var)
+                        parseVariablesDeclarationRest(var, true)
+                          parseOptionallyInitializedIdentifier(var)
+                            ensureIdentifier(var, localVariableDeclaration)
+                              reportRecoverableErrorWithToken((, Instance of 'Template<(Token) => Message>')
+                                listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}], (, ()
+                              rewriter()
+                              listener: handleIdentifier(, localVariableDeclaration)
+                            listener: beginInitializedIdentifier()
+                            parseVariableInitializerOpt()
+                              listener: handleNoVariableInitializer(x)
+                            listener: endInitializedIdentifier()
+                          ensureSemicolon()
+                            reportRecoverableError(, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+                              listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], x, x)
+                            rewriter()
+                          listener: endVariablesDeclaration(1, ;)
+                  notEofOrValue(}, x)
+                  parseStatement(;)
+                    parseStatementX(;)
+                      parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+                        looksLikeLocalFunction(x)
+                        parseExpressionStatement(;)
+                          parseExpression(;)
+                            parsePrecedenceExpression(;, 1, true)
+                              parseUnaryExpression(;, true)
+                                parsePrimary(;, expression)
+                                  parseSendOrFunctionLiteral(;, expression)
+                                    parseSend(;, expression)
+                                      ensureIdentifier(;, expression)
+                                        listener: handleIdentifier(x, expression)
+                                      listener: handleNoTypeArguments(-)
+                                      parseArgumentsOpt(x)
+                                        listener: handleNoArguments(-)
+                                      listener: handleSend(x, -)
+                              listener: beginBinaryExpression(-)
+                              parsePrecedenceExpression(-, 14, true)
+                                parseUnaryExpression(-, true)
+                                  parsePrimary(-, expression)
+                                    parseLiteralInt(-)
+                                      listener: handleLiteralInt(1)
+                              listener: endBinaryExpression(-)
+                          ensureSemicolon(1)
+                            reportRecoverableError(1, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+                              listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], 1, 1)
+                            rewriter()
+                          listener: handleExpressionStatement(;)
+                  notEofOrValue(}, ))
+                  parseStatement(;)
+                    parseStatementX(;)
+                      parseExpressionStatementOrDeclaration(;, false)
+                        parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+                          looksLikeLocalFunction())
+                          parseExpressionStatement(;)
+                            parseExpression(;)
+                              parsePrecedenceExpression(;, 1, true)
+                                parseUnaryExpression(;, true)
+                                  parsePrimary(;, expression)
+                                    parseSend(;, expression)
+                                      ensureIdentifier(;, expression)
+                                        reportRecoverableErrorWithToken(), Instance of 'Template<(Token) => Message>')
+                                          listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got ')'., null, {token: )}], ), ))
+                                        rewriter()
+                                        listener: handleIdentifier(, expression)
+                                      listener: handleNoTypeArguments())
+                                      parseArgumentsOpt()
+                                        listener: handleNoArguments())
+                                      listener: handleSend(, ))
+                            ensureSemicolon()
+                              reportRecoverableError(, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+                                listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], ), ))
+                              rewriter()
+                            listener: handleExpressionStatement(;)
+                  reportRecoverableError(;, Message[UnexpectedToken, Unexpected token ';'., null, {token: ;}])
+                    listener: handleRecoverableError(Message[UnexpectedToken, Unexpected token ';'., null, {token: ;}], ), ))
+                  notEofOrValue(}, +)
+                  parseStatement())
+                    parseStatementX())
+                      parseExpressionStatementOrDeclaration(), false)
+                        parseExpressionStatementOrDeclarationAfterModifiers(), ), null, null, null, false)
+                          looksLikeLocalFunction(+)
+                          parseExpressionStatement())
+                            parseExpression())
+                              parsePrecedenceExpression(), 1, true)
+                                parseUnaryExpression(), true)
+                                  rewriteAndRecover(), UnsupportedPrefixPlus, )
+                                    reportRecoverableError(+, UnsupportedPrefixPlus)
+                                      listener: handleRecoverableError(UnsupportedPrefixPlus, +, +)
+                                    rewriter()
+                                  parsePrimary(), expression)
+                                    parseSendOrFunctionLiteral(), expression)
+                                      parseSend(), expression)
+                                        ensureIdentifier(), expression)
+                                          listener: handleIdentifier(, expression)
+                                        listener: handleNoTypeArguments(+)
+                                        parseArgumentsOpt()
+                                          listener: handleNoArguments(+)
+                                        listener: handleSend(, +)
+                                listener: beginBinaryExpression(+)
+                                parsePrecedenceExpression(+, 14, true)
+                                  parseUnaryExpression(+, true)
+                                    parsePrimary(+, expression)
+                                      parseLiteralInt(+)
+                                        listener: handleLiteralInt(1)
+                                listener: endBinaryExpression(+)
+                            ensureSemicolon(1)
+                            listener: handleExpressionStatement(;)
+                  notEofOrValue(}, })
+                  listener: endBlockFunctionBody(6, {, })
+                listener: endClassMethod(null, int, (, null, })
+              listener: endMember()
+            notEofOrValue(}, int)
+            parseClassOrMixinOrExtensionMemberImpl(}, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(})
+                listener: beginMetadataStar(int)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              isReservedKeyword(void)
+              indicatesMethodOrField(()
+              parseMethod(}, null, null, null, null, null, }, Instance of 'SimpleType', null, void, DeclarationKind.Class, WrapperClass, true)
+                listener: beginMethod(null, null, null, null, null, void)
+                listener: handleIdentifier(int, typeReference)
+                listener: handleNoTypeArguments(void)
+                listener: handleType(int, null)
+                ensureIdentifierPotentiallyRecovered(int, methodDeclaration, true)
+                  reportRecoverableErrorWithToken(void, Instance of 'Template<(Token) => Message>')
+                    listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'void'., null, {token: void}], void, void)
+                  listener: handleIdentifier(void, methodDeclaration)
+                parseQualifiedRestOpt(void, methodDeclarationContinuation)
+                parseMethodTypeVar(void)
+                  listener: handleNoTypeVariables(()
+                parseGetterOrFormalParameters(void, void, false, MemberKind.NonStaticMethod)
+                  parseFormalParameters(void, MemberKind.NonStaticMethod)
+                    parseFormalParametersRest((, MemberKind.NonStaticMethod)
+                      listener: beginFormalParameters((, MemberKind.NonStaticMethod)
+                      parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+                        parseMetadataStar(()
+                          listener: beginMetadataStar(int)
+                          listener: endMetadataStar(0)
+                        listener: beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+                        listener: handleIdentifier(int, typeReference)
+                        listener: handleNoTypeArguments(x)
+                        listener: handleType(int, null)
+                        ensureIdentifier(int, formalParameterDeclaration)
+                          listener: handleIdentifier(x, formalParameterDeclaration)
+                        listener: handleFormalParameterWithoutValue())
+                        listener: endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+                      listener: endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
+                parseInitializersOpt())
+                  listener: handleNoInitializers()
+                parseAsyncModifierOpt())
+                  listener: handleAsyncModifier(null, null)
+                  inPlainSync()
+                inPlainSync()
+                parseFunctionBody(), false, true)
+                  listener: beginBlockFunctionBody({)
+                  notEofOrValue(}, if)
+                  parseStatement({)
+                    parseStatementX({)
+                      parseIfStatement({)
+                        listener: beginIfStatement(if)
+                        ensureParenthesizedCondition(if)
+                          parseExpressionInParenthesisRest(()
+                            parseExpression(()
+                              parsePrecedenceExpression((, 1, true)
+                                parseUnaryExpression((, true)
+                                  parsePrimary((, expression)
+                                    parseSendOrFunctionLiteral((, expression)
+                                      parseSend((, expression)
+                                        ensureIdentifier((, expression)
+                                          listener: handleIdentifier(x, expression)
+                                        listener: handleNoTypeArguments(==)
+                                        parseArgumentsOpt(x)
+                                          listener: handleNoArguments(==)
+                                        listener: handleSend(x, ==)
+                                listener: beginBinaryExpression(==)
+                                parsePrecedenceExpression(==, 8, true)
+                                  parseUnaryExpression(==, true)
+                                    parsePrimary(==, expression)
+                                      parseLiteralInt(==)
+                                        listener: handleLiteralInt(0)
+                                listener: endBinaryExpression(==)
+                            ensureCloseParen(0, ()
+                          listener: handleParenthesizedCondition(()
+                        listener: beginThenStatement(return)
+                        parseStatement())
+                          parseStatementX())
+                            parseReturnStatement())
+                              listener: beginReturnStatement(return)
+                              parseExpression(return)
+                                parsePrecedenceExpression(return, 1, true)
+                                  parseUnaryExpression(return, true)
+                                    parsePrimary(return, expression)
+                                      parseLiteralInt(return)
+                                        listener: handleLiteralInt(42)
+                              ensureSemicolon(42)
+                              listener: endReturnStatement(true, return, ;)
+                              inGenerator()
+                        listener: endThenStatement(;)
+                        listener: endIfStatement(if, null)
+                  notEofOrValue(}, return)
+                  parseStatement(;)
+                    parseStatementX(;)
+                      parseReturnStatement(;)
+                        listener: beginReturnStatement(return)
+                        parseExpression(return)
+                          parsePrecedenceExpression(return, 1, true)
+                            parseUnaryExpression(return, true)
+                              parsePrimary(return, expression)
+                                parseSendOrFunctionLiteral(return, expression)
+                                  parseSend(return, expression)
+                                    ensureIdentifier(return, expression)
+                                      reportRecoverableErrorWithToken(void, Instance of 'Template<(Token) => Message>')
+                                        listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'void'., null, {token: void}], void, void)
+                                      rewriter()
+                                      listener: handleIdentifier(, expression)
+                                    listener: handleNoTypeArguments(void)
+                                    parseArgumentsOpt()
+                                      listener: handleNoArguments(void)
+                                    listener: handleSend(, void)
+                        ensureSemicolon()
+                          reportRecoverableError(, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+                            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], void, void)
+                          rewriter()
+                        listener: endReturnStatement(true, return, ;)
+                        inGenerator()
+                  notEofOrValue(}, void)
+                  parseStatement(;)
+                    parseStatementX(;)
+                      parseExpressionStatementOrDeclaration(;, false)
+                        parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+                          looksLikeLocalFunction(()
+                          listener: beginMetadataStar(void)
+                          listener: endMetadataStar(0)
+                          listener: handleVoidKeyword(void)
+                          listener: beginVariablesDeclaration((, null, null)
+                          parseVariablesDeclarationRest(void, true)
+                            parseOptionallyInitializedIdentifier(void)
+                              ensureIdentifier(void, localVariableDeclaration)
                                 reportRecoverableErrorWithToken((, Instance of 'Template<(Token) => Message>')
                                   listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}], (, ()
                                 rewriter()
@@ -5659,273 +5051,229 @@
                                 listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], x, x)
                               rewriter()
                             listener: endVariablesDeclaration(1, ;)
-                    notEofOrValue(}, x)
-                    parseStatement(;)
-                      parseStatementX(;)
+                  notEofOrValue(}, x)
+                  parseStatement(;)
+                    parseStatementX(;)
+                      parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+                        looksLikeLocalFunction(x)
+                        parseExpressionStatement(;)
+                          parseExpression(;)
+                            parsePrecedenceExpression(;, 1, true)
+                              parseUnaryExpression(;, true)
+                                parsePrimary(;, expression)
+                                  parseSendOrFunctionLiteral(;, expression)
+                                    parseSend(;, expression)
+                                      ensureIdentifier(;, expression)
+                                        listener: handleIdentifier(x, expression)
+                                      listener: handleNoTypeArguments(-)
+                                      parseArgumentsOpt(x)
+                                        listener: handleNoArguments(-)
+                                      listener: handleSend(x, -)
+                              listener: beginBinaryExpression(-)
+                              parsePrecedenceExpression(-, 14, true)
+                                parseUnaryExpression(-, true)
+                                  parsePrimary(-, expression)
+                                    parseLiteralInt(-)
+                                      listener: handleLiteralInt(1)
+                              listener: endBinaryExpression(-)
+                          ensureSemicolon(1)
+                            reportRecoverableError(1, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+                              listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], 1, 1)
+                            rewriter()
+                          listener: handleExpressionStatement(;)
+                  notEofOrValue(}, ))
+                  parseStatement(;)
+                    parseStatementX(;)
+                      parseExpressionStatementOrDeclaration(;, false)
                         parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
-                          looksLikeLocalFunction(x)
+                          looksLikeLocalFunction())
                           parseExpressionStatement(;)
                             parseExpression(;)
                               parsePrecedenceExpression(;, 1, true)
                                 parseUnaryExpression(;, true)
                                   parsePrimary(;, expression)
-                                    parseSendOrFunctionLiteral(;, expression)
-                                      parseSend(;, expression)
-                                        ensureIdentifier(;, expression)
-                                          listener: handleIdentifier(x, expression)
-                                        listener: handleNoTypeArguments(-)
-                                        parseArgumentsOpt(x)
-                                          listener: handleNoArguments(-)
-                                        listener: handleSend(x, -)
-                                listener: beginBinaryExpression(-)
-                                parsePrecedenceExpression(-, 14, true)
-                                  parseUnaryExpression(-, true)
-                                    parsePrimary(-, expression)
-                                      parseLiteralInt(-)
-                                        listener: handleLiteralInt(1)
-                                listener: endBinaryExpression(-)
-                            ensureSemicolon(1)
-                              reportRecoverableError(1, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
-                                listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], 1, 1)
-                              rewriter()
-                            listener: handleExpressionStatement(;)
-                    notEofOrValue(}, ))
-                    parseStatement(;)
-                      parseStatementX(;)
-                        parseExpressionStatementOrDeclaration(;, false)
-                          parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
-                            looksLikeLocalFunction())
-                            parseExpressionStatement(;)
-                              parseExpression(;)
-                                parsePrecedenceExpression(;, 1, true)
-                                  parseUnaryExpression(;, true)
-                                    parsePrimary(;, expression)
-                                      parseSend(;, expression)
-                                        ensureIdentifier(;, expression)
-                                          reportRecoverableErrorWithToken(), Instance of 'Template<(Token) => Message>')
-                                            listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got ')'., null, {token: )}], ), ))
-                                          rewriter()
-                                          listener: handleIdentifier(, expression)
-                                        listener: handleNoTypeArguments())
-                                        parseArgumentsOpt()
-                                          listener: handleNoArguments())
-                                        listener: handleSend(, ))
-                              ensureSemicolon()
-                                reportRecoverableError(, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
-                                  listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], ), ))
-                                rewriter()
-                              listener: handleExpressionStatement(;)
-                    reportRecoverableError(;, Message[UnexpectedToken, Unexpected token ';'., null, {token: ;}])
-                      listener: handleRecoverableError(Message[UnexpectedToken, Unexpected token ';'., null, {token: ;}], ), ))
-                    notEofOrValue(}, +)
-                    parseStatement())
-                      parseStatementX())
-                        parseExpressionStatementOrDeclaration(), false)
-                          parseExpressionStatementOrDeclarationAfterModifiers(), ), null, null, null, false)
-                            looksLikeLocalFunction(+)
-                            parseExpressionStatement())
-                              parseExpression())
-                                parsePrecedenceExpression(), 1, true)
-                                  parseUnaryExpression(), true)
-                                    rewriteAndRecover(), UnsupportedPrefixPlus, )
-                                      reportRecoverableError(+, UnsupportedPrefixPlus)
-                                        listener: handleRecoverableError(UnsupportedPrefixPlus, +, +)
-                                      rewriter()
-                                    parsePrimary(), expression)
-                                      parseSendOrFunctionLiteral(), expression)
-                                        parseSend(), expression)
-                                          ensureIdentifier(), expression)
-                                            listener: handleIdentifier(, expression)
-                                          listener: handleNoTypeArguments(+)
-                                          parseArgumentsOpt()
-                                            listener: handleNoArguments(+)
-                                          listener: handleSend(, +)
-                                  listener: beginBinaryExpression(+)
-                                  parsePrecedenceExpression(+, 14, true)
-                                    parseUnaryExpression(+, true)
-                                      parsePrimary(+, expression)
-                                        parseLiteralInt(+)
-                                          listener: handleLiteralInt(1)
-                                  listener: endBinaryExpression(+)
-                              ensureSemicolon(1)
-                              listener: handleExpressionStatement(;)
-                    notEofOrValue(}, })
-                    listener: endBlockFunctionBody(6, {, })
-                  listener: endClassMethod(null, var, (, null, })
-                listener: endMember()
-            notEofOrValue(}, int)
-            parseClassOrMixinOrExtensionMemberImpl(}, DeclarationKind.Class, WrapperClass)
-              parseMetadataStar(})
-                listener: beginMetadataStar(int)
-                listener: endMetadataStar(0)
-              listener: beginMember()
-              parseFields(}, null, null, null, null, null, }, Instance of 'NoType', int, DeclarationKind.Class, WrapperClass)
-                reportRecoverableError(int, MissingConstFinalVarOrType)
-                  listener: handleRecoverableError(MissingConstFinalVarOrType, int, int)
-                listener: handleNoType(})
-                ensureIdentifier(}, fieldDeclaration)
-                  listener: handleIdentifier(int, fieldDeclaration)
-                parseFieldInitializerOpt(int, int, null, null, DeclarationKind.Class, WrapperClass)
-                  listener: handleNoFieldInitializer(void)
-                ensureSemicolon(int)
-                  reportRecoverableError(int, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
-                    listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
-                  rewriter()
-                listener: endClassFields(null, null, null, null, 1, int, ;)
-              listener: endMember()
-            notEofOrValue(}, void)
-            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
-              parseMetadataStar(;)
-                listener: beginMetadataStar(void)
-                listener: endMetadataStar(0)
-              listener: beginMember()
-              recoverFromInvalidMember(void, ;, null, null, null, null, null, ;, Instance of 'VoidType', null, DeclarationKind.Class, WrapperClass)
-                parseMethod(;, null, null, null, null, null, ;, Instance of 'VoidType', null, (, DeclarationKind.Class, WrapperClass)
-                  listener: beginMethod(null, null, null, null, null, ()
-                  listener: handleVoidKeyword(void)
-                  ensureIdentifier(void, methodDeclaration)
-                    insertSyntheticIdentifier(void, methodDeclaration, message: null, messageOnToken: null)
-                      reportRecoverableError((, Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}])
-                        listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}], (, ()
-                      rewriter()
-                    listener: handleIdentifier(, methodDeclaration)
-                  parseQualifiedRestOpt(, methodDeclarationContinuation)
-                  parseMethodTypeVar()
-                    listener: handleNoTypeVariables(()
-                  parseGetterOrFormalParameters(, (, false, MemberKind.NonStaticMethod)
-                    parseFormalParameters(, MemberKind.NonStaticMethod)
-                      parseFormalParametersRest((, MemberKind.NonStaticMethod)
-                        listener: beginFormalParameters((, MemberKind.NonStaticMethod)
-                        parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
-                          parseMetadataStar(()
-                            listener: beginMetadataStar(int)
-                            listener: endMetadataStar(0)
-                          listener: beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
-                          listener: handleIdentifier(int, typeReference)
-                          listener: handleNoTypeArguments(x)
-                          listener: handleType(int, null)
-                          ensureIdentifier(int, formalParameterDeclaration)
-                            listener: handleIdentifier(x, formalParameterDeclaration)
-                          listener: handleFormalParameterWithoutValue())
-                          listener: endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
-                        listener: endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
-                  parseInitializersOpt())
-                    listener: handleNoInitializers()
-                  parseAsyncModifierOpt())
-                    listener: handleAsyncModifier(null, null)
-                    inPlainSync()
-                  inPlainSync()
-                  parseFunctionBody(), false, true)
-                    listener: beginBlockFunctionBody({)
-                    notEofOrValue(}, if)
-                    parseStatement({)
-                      parseStatementX({)
-                        parseIfStatement({)
-                          listener: beginIfStatement(if)
-                          ensureParenthesizedCondition(if)
-                            parseExpressionInParenthesisRest(()
-                              parseExpression(()
-                                parsePrecedenceExpression((, 1, true)
-                                  parseUnaryExpression((, true)
-                                    parsePrimary((, expression)
-                                      parseSendOrFunctionLiteral((, expression)
-                                        parseSend((, expression)
-                                          ensureIdentifier((, expression)
-                                            listener: handleIdentifier(x, expression)
-                                          listener: handleNoTypeArguments(==)
-                                          parseArgumentsOpt(x)
-                                            listener: handleNoArguments(==)
-                                          listener: handleSend(x, ==)
-                                  listener: beginBinaryExpression(==)
-                                  parsePrecedenceExpression(==, 8, true)
-                                    parseUnaryExpression(==, true)
-                                      parsePrimary(==, expression)
-                                        parseLiteralInt(==)
-                                          listener: handleLiteralInt(0)
-                                  listener: endBinaryExpression(==)
-                              ensureCloseParen(0, ()
-                            listener: handleParenthesizedCondition(()
-                          listener: beginThenStatement(return)
-                          parseStatement())
-                            parseStatementX())
-                              parseReturnStatement())
-                                listener: beginReturnStatement(return)
-                                parseExpression(return)
-                                  parsePrecedenceExpression(return, 1, true)
-                                    parseUnaryExpression(return, true)
-                                      parsePrimary(return, expression)
-                                        parseLiteralInt(return)
-                                          listener: handleLiteralInt(42)
-                                ensureSemicolon(42)
-                                listener: endReturnStatement(true, return, ;)
-                                inGenerator()
-                          listener: endThenStatement(;)
-                          listener: endIfStatement(if, null)
-                    notEofOrValue(}, return)
-                    parseStatement(;)
-                      parseStatementX(;)
-                        parseReturnStatement(;)
-                          listener: beginReturnStatement(return)
-                          parseExpression(return)
-                            parsePrecedenceExpression(return, 1, true)
-                              parseUnaryExpression(return, true)
-                                parsePrimary(return, expression)
-                                  parseSendOrFunctionLiteral(return, expression)
-                                    parseSend(return, expression)
-                                      ensureIdentifier(return, expression)
-                                        reportRecoverableErrorWithToken(void, Instance of 'Template<(Token) => Message>')
-                                          listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'void'., null, {token: void}], void, void)
+                                    parseSend(;, expression)
+                                      ensureIdentifier(;, expression)
+                                        reportRecoverableErrorWithToken(), Instance of 'Template<(Token) => Message>')
+                                          listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got ')'., null, {token: )}], ), ))
                                         rewriter()
                                         listener: handleIdentifier(, expression)
-                                      listener: handleNoTypeArguments(void)
+                                      listener: handleNoTypeArguments())
                                       parseArgumentsOpt()
-                                        listener: handleNoArguments(void)
-                                      listener: handleSend(, void)
-                          ensureSemicolon()
-                            reportRecoverableError(, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
-                              listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], void, void)
-                            rewriter()
-                          listener: endReturnStatement(true, return, ;)
-                          inGenerator()
-                    notEofOrValue(}, void)
-                    parseStatement(;)
-                      parseStatementX(;)
-                        parseExpressionStatementOrDeclaration(;, false)
-                          parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
-                            looksLikeLocalFunction(()
-                            listener: beginMetadataStar(void)
-                            listener: endMetadataStar(0)
-                            listener: handleVoidKeyword(void)
-                            listener: beginVariablesDeclaration((, null, null)
-                            parseVariablesDeclarationRest(void, true)
-                              parseOptionallyInitializedIdentifier(void)
-                                ensureIdentifier(void, localVariableDeclaration)
-                                  reportRecoverableErrorWithToken((, Instance of 'Template<(Token) => Message>')
-                                    listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}], (, ()
-                                  rewriter()
-                                  listener: handleIdentifier(, localVariableDeclaration)
-                                listener: beginInitializedIdentifier()
-                                parseVariableInitializerOpt()
-                                  listener: handleNoVariableInitializer(x)
-                                listener: endInitializedIdentifier()
-                              ensureSemicolon()
-                                reportRecoverableError(, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
-                                  listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], x, x)
-                                rewriter()
-                              listener: endVariablesDeclaration(1, ;)
-                    notEofOrValue(}, x)
-                    parseStatement(;)
-                      parseStatementX(;)
-                        parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
-                          looksLikeLocalFunction(x)
-                          parseExpressionStatement(;)
-                            parseExpression(;)
-                              parsePrecedenceExpression(;, 1, true)
-                                parseUnaryExpression(;, true)
-                                  parsePrimary(;, expression)
-                                    parseSendOrFunctionLiteral(;, expression)
-                                      parseSend(;, expression)
-                                        ensureIdentifier(;, expression)
+                                        listener: handleNoArguments())
+                                      listener: handleSend(, ))
+                            ensureSemicolon()
+                              reportRecoverableError(, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+                                listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], ), ))
+                              rewriter()
+                            listener: handleExpressionStatement(;)
+                  reportRecoverableError(;, Message[UnexpectedToken, Unexpected token ';'., null, {token: ;}])
+                    listener: handleRecoverableError(Message[UnexpectedToken, Unexpected token ';'., null, {token: ;}], ), ))
+                  notEofOrValue(}, +)
+                  parseStatement())
+                    parseStatementX())
+                      parseExpressionStatementOrDeclaration(), false)
+                        parseExpressionStatementOrDeclarationAfterModifiers(), ), null, null, null, false)
+                          looksLikeLocalFunction(+)
+                          parseExpressionStatement())
+                            parseExpression())
+                              parsePrecedenceExpression(), 1, true)
+                                parseUnaryExpression(), true)
+                                  rewriteAndRecover(), UnsupportedPrefixPlus, )
+                                    reportRecoverableError(+, UnsupportedPrefixPlus)
+                                      listener: handleRecoverableError(UnsupportedPrefixPlus, +, +)
+                                    rewriter()
+                                  parsePrimary(), expression)
+                                    parseSendOrFunctionLiteral(), expression)
+                                      parseSend(), expression)
+                                        ensureIdentifier(), expression)
+                                          listener: handleIdentifier(, expression)
+                                        listener: handleNoTypeArguments(+)
+                                        parseArgumentsOpt()
+                                          listener: handleNoArguments(+)
+                                        listener: handleSend(, +)
+                                listener: beginBinaryExpression(+)
+                                parsePrecedenceExpression(+, 14, true)
+                                  parseUnaryExpression(+, true)
+                                    parsePrimary(+, expression)
+                                      parseLiteralInt(+)
+                                        listener: handleLiteralInt(1)
+                                listener: endBinaryExpression(+)
+                            ensureSemicolon(1)
+                            listener: handleExpressionStatement(;)
+                  notEofOrValue(}, })
+                  listener: endBlockFunctionBody(6, {, })
+                listener: endClassMethod(null, int, (, null, })
+              listener: endMember()
+            notEofOrValue(}, int)
+            parseClassOrMixinOrExtensionMemberImpl(}, DeclarationKind.Class, WrapperClass)
+              parseMetadataStar(})
+                listener: beginMetadataStar(int)
+                listener: endMetadataStar(0)
+              listener: beginMember()
+              isReservedKeyword(while)
+              indicatesMethodOrField(()
+              parseMethod(}, null, null, null, null, null, }, Instance of 'SimpleType', null, while, DeclarationKind.Class, WrapperClass, true)
+                listener: beginMethod(null, null, null, null, null, while)
+                listener: handleIdentifier(int, typeReference)
+                listener: handleNoTypeArguments(while)
+                listener: handleType(int, null)
+                ensureIdentifierPotentiallyRecovered(int, methodDeclaration, true)
+                  reportRecoverableErrorWithToken(while, Instance of 'Template<(Token) => Message>')
+                    listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'while'., null, {token: while}], while, while)
+                  listener: handleIdentifier(while, methodDeclaration)
+                parseQualifiedRestOpt(while, methodDeclarationContinuation)
+                parseMethodTypeVar(while)
+                  listener: handleNoTypeVariables(()
+                parseGetterOrFormalParameters(while, while, false, MemberKind.NonStaticMethod)
+                  parseFormalParameters(while, MemberKind.NonStaticMethod)
+                    parseFormalParametersRest((, MemberKind.NonStaticMethod)
+                      listener: beginFormalParameters((, MemberKind.NonStaticMethod)
+                      parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+                        parseMetadataStar(()
+                          listener: beginMetadataStar(int)
+                          listener: endMetadataStar(0)
+                        listener: beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+                        listener: handleIdentifier(int, typeReference)
+                        listener: handleNoTypeArguments(x)
+                        listener: handleType(int, null)
+                        ensureIdentifier(int, formalParameterDeclaration)
+                          listener: handleIdentifier(x, formalParameterDeclaration)
+                        listener: handleFormalParameterWithoutValue())
+                        listener: endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+                      listener: endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
+                parseInitializersOpt())
+                  listener: handleNoInitializers()
+                parseAsyncModifierOpt())
+                  listener: handleAsyncModifier(null, null)
+                  inPlainSync()
+                inPlainSync()
+                parseFunctionBody(), false, true)
+                  listener: beginBlockFunctionBody({)
+                  notEofOrValue(}, if)
+                  parseStatement({)
+                    parseStatementX({)
+                      parseIfStatement({)
+                        listener: beginIfStatement(if)
+                        ensureParenthesizedCondition(if)
+                          parseExpressionInParenthesisRest(()
+                            parseExpression(()
+                              parsePrecedenceExpression((, 1, true)
+                                parseUnaryExpression((, true)
+                                  parsePrimary((, expression)
+                                    parseSendOrFunctionLiteral((, expression)
+                                      parseSend((, expression)
+                                        ensureIdentifier((, expression)
+                                          listener: handleIdentifier(x, expression)
+                                        listener: handleNoTypeArguments(==)
+                                        parseArgumentsOpt(x)
+                                          listener: handleNoArguments(==)
+                                        listener: handleSend(x, ==)
+                                listener: beginBinaryExpression(==)
+                                parsePrecedenceExpression(==, 8, true)
+                                  parseUnaryExpression(==, true)
+                                    parsePrimary(==, expression)
+                                      parseLiteralInt(==)
+                                        listener: handleLiteralInt(0)
+                                listener: endBinaryExpression(==)
+                            ensureCloseParen(0, ()
+                          listener: handleParenthesizedCondition(()
+                        listener: beginThenStatement(return)
+                        parseStatement())
+                          parseStatementX())
+                            parseReturnStatement())
+                              listener: beginReturnStatement(return)
+                              parseExpression(return)
+                                parsePrecedenceExpression(return, 1, true)
+                                  parseUnaryExpression(return, true)
+                                    parsePrimary(return, expression)
+                                      parseLiteralInt(return)
+                                        listener: handleLiteralInt(42)
+                              ensureSemicolon(42)
+                              listener: endReturnStatement(true, return, ;)
+                              inGenerator()
+                        listener: endThenStatement(;)
+                        listener: endIfStatement(if, null)
+                  notEofOrValue(}, return)
+                  parseStatement(;)
+                    parseStatementX(;)
+                      parseReturnStatement(;)
+                        listener: beginReturnStatement(return)
+                        parseExpression(return)
+                          parsePrecedenceExpression(return, 1, true)
+                            parseUnaryExpression(return, true)
+                              parsePrimary(return, expression)
+                                inPlainSync()
+                                parseSend(return, expression)
+                                  ensureIdentifier(return, expression)
+                                    reportRecoverableErrorWithToken(while, Instance of 'Template<(Token) => Message>')
+                                      listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'while'., null, {token: while}], while, while)
+                                    rewriter()
+                                    listener: handleIdentifier(, expression)
+                                  listener: handleNoTypeArguments(while)
+                                  parseArgumentsOpt()
+                                    listener: handleNoArguments(while)
+                                  listener: handleSend(, while)
+                        ensureSemicolon()
+                          reportRecoverableError(, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+                            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], while, while)
+                          rewriter()
+                        listener: endReturnStatement(true, return, ;)
+                        inGenerator()
+                  notEofOrValue(}, while)
+                  parseStatement(;)
+                    parseStatementX(;)
+                      parseWhileStatement(;)
+                        listener: beginWhileStatement(while)
+                        ensureParenthesizedCondition(while)
+                          parseExpressionInParenthesisRest(()
+                            parseExpression(()
+                              parsePrecedenceExpression((, 1, true)
+                                parseUnaryExpression((, true)
+                                  parsePrimary((, expression)
+                                    parseSendOrFunctionLiteral((, expression)
+                                      parseSend((, expression)
+                                        ensureIdentifier((, expression)
                                           listener: handleIdentifier(x, expression)
                                         listener: handleNoTypeArguments(-)
                                         parseArgumentsOpt(x)
@@ -5938,462 +5286,192 @@
                                       parseLiteralInt(-)
                                         listener: handleLiteralInt(1)
                                 listener: endBinaryExpression(-)
-                            ensureSemicolon(1)
-                              reportRecoverableError(1, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
-                                listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], 1, 1)
-                              rewriter()
-                            listener: handleExpressionStatement(;)
-                    notEofOrValue(}, ))
-                    parseStatement(;)
-                      parseStatementX(;)
-                        parseExpressionStatementOrDeclaration(;, false)
-                          parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
-                            looksLikeLocalFunction())
-                            parseExpressionStatement(;)
-                              parseExpression(;)
-                                parsePrecedenceExpression(;, 1, true)
-                                  parseUnaryExpression(;, true)
-                                    parsePrimary(;, expression)
-                                      parseSend(;, expression)
-                                        ensureIdentifier(;, expression)
-                                          reportRecoverableErrorWithToken(), Instance of 'Template<(Token) => Message>')
-                                            listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got ')'., null, {token: )}], ), ))
+                            ensureCloseParen(1, ()
+                          listener: handleParenthesizedCondition(()
+                        listener: beginWhileStatementBody(+)
+                        parseStatement())
+                          parseStatementX())
+                            parseExpressionStatementOrDeclaration(), false)
+                              parseExpressionStatementOrDeclarationAfterModifiers(), ), null, null, null, false)
+                                looksLikeLocalFunction(+)
+                                parseExpressionStatement())
+                                  parseExpression())
+                                    parsePrecedenceExpression(), 1, true)
+                                      parseUnaryExpression(), true)
+                                        rewriteAndRecover(), UnsupportedPrefixPlus, )
+                                          reportRecoverableError(+, UnsupportedPrefixPlus)
+                                            listener: handleRecoverableError(UnsupportedPrefixPlus, +, +)
                                           rewriter()
-                                          listener: handleIdentifier(, expression)
-                                        listener: handleNoTypeArguments())
-                                        parseArgumentsOpt()
-                                          listener: handleNoArguments())
-                                        listener: handleSend(, ))
-                              ensureSemicolon()
-                                reportRecoverableError(, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
-                                  listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], ), ))
-                                rewriter()
-                              listener: handleExpressionStatement(;)
-                    reportRecoverableError(;, Message[UnexpectedToken, Unexpected token ';'., null, {token: ;}])
-                      listener: handleRecoverableError(Message[UnexpectedToken, Unexpected token ';'., null, {token: ;}], ), ))
-                    notEofOrValue(}, +)
-                    parseStatement())
-                      parseStatementX())
-                        parseExpressionStatementOrDeclaration(), false)
-                          parseExpressionStatementOrDeclarationAfterModifiers(), ), null, null, null, false)
-                            looksLikeLocalFunction(+)
-                            parseExpressionStatement())
-                              parseExpression())
-                                parsePrecedenceExpression(), 1, true)
-                                  parseUnaryExpression(), true)
-                                    rewriteAndRecover(), UnsupportedPrefixPlus, )
-                                      reportRecoverableError(+, UnsupportedPrefixPlus)
-                                        listener: handleRecoverableError(UnsupportedPrefixPlus, +, +)
-                                      rewriter()
-                                    parsePrimary(), expression)
-                                      parseSendOrFunctionLiteral(), expression)
-                                        parseSend(), expression)
-                                          ensureIdentifier(), expression)
-                                            listener: handleIdentifier(, expression)
-                                          listener: handleNoTypeArguments(+)
-                                          parseArgumentsOpt()
-                                            listener: handleNoArguments(+)
-                                          listener: handleSend(, +)
-                                  listener: beginBinaryExpression(+)
-                                  parsePrecedenceExpression(+, 14, true)
-                                    parseUnaryExpression(+, true)
-                                      parsePrimary(+, expression)
-                                        parseLiteralInt(+)
-                                          listener: handleLiteralInt(1)
-                                  listener: endBinaryExpression(+)
-                              ensureSemicolon(1)
-                              listener: handleExpressionStatement(;)
-                    notEofOrValue(}, })
-                    listener: endBlockFunctionBody(6, {, })
-                  listener: endClassMethod(null, void, (, null, })
-                listener: endMember()
+                                        parsePrimary(), expression)
+                                          parseSendOrFunctionLiteral(), expression)
+                                            parseSend(), expression)
+                                              ensureIdentifier(), expression)
+                                                listener: handleIdentifier(, expression)
+                                              listener: handleNoTypeArguments(+)
+                                              parseArgumentsOpt()
+                                                listener: handleNoArguments(+)
+                                              listener: handleSend(, +)
+                                      listener: beginBinaryExpression(+)
+                                      parsePrecedenceExpression(+, 14, true)
+                                        parseUnaryExpression(+, true)
+                                          parsePrimary(+, expression)
+                                            parseLiteralInt(+)
+                                              listener: handleLiteralInt(1)
+                                      listener: endBinaryExpression(+)
+                                  ensureSemicolon(1)
+                                  listener: handleExpressionStatement(;)
+                        listener: endWhileStatementBody(})
+                        listener: endWhileStatement(while, })
+                  notEofOrValue(}, })
+                  listener: endBlockFunctionBody(3, {, })
+                listener: endClassMethod(null, int, (, null, })
+              listener: endMember()
             notEofOrValue(}, int)
             parseClassOrMixinOrExtensionMemberImpl(}, DeclarationKind.Class, WrapperClass)
               parseMetadataStar(})
                 listener: beginMetadataStar(int)
                 listener: endMetadataStar(0)
               listener: beginMember()
-              parseFields(}, null, null, null, null, null, }, Instance of 'NoType', int, DeclarationKind.Class, WrapperClass)
-                reportRecoverableError(int, MissingConstFinalVarOrType)
-                  listener: handleRecoverableError(MissingConstFinalVarOrType, int, int)
-                listener: handleNoType(})
-                ensureIdentifier(}, fieldDeclaration)
-                  listener: handleIdentifier(int, fieldDeclaration)
-                parseFieldInitializerOpt(int, int, null, null, DeclarationKind.Class, WrapperClass)
-                  listener: handleNoFieldInitializer(while)
-                ensureSemicolon(int)
-                  reportRecoverableError(int, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
-                    listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
-                  rewriter()
-                listener: endClassFields(null, null, null, null, 1, int, ;)
-              listener: endMember()
-            notEofOrValue(}, while)
-            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
-              parseMetadataStar(;)
-                listener: beginMetadataStar(while)
-                listener: endMetadataStar(0)
-              listener: beginMember()
-              recoverFromInvalidMember(;, ;, null, null, null, null, null, ;, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
-                reportRecoverableErrorWithToken(while, Instance of 'Template<(Token) => Message>')
-                  listener: handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got 'while'., null, {token: while}], while, while)
-                listener: handleInvalidMember(while)
-                listener: endMember()
-            notEofOrValue(}, ()
-            parseClassOrMixinOrExtensionMemberImpl(while, DeclarationKind.Class, WrapperClass)
-              parseMetadataStar(while)
-                listener: beginMetadataStar(()
-                listener: endMetadataStar(0)
-              listener: beginMember()
-              recoverFromInvalidMember(while, while, null, null, null, null, null, while, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
-                parseMethod(while, null, null, null, null, null, while, Instance of 'NoType', null, (, DeclarationKind.Class, WrapperClass)
-                  listener: beginMethod(null, null, null, null, null, ()
-                  listener: handleNoType(while)
-                  ensureIdentifier(while, methodDeclaration)
-                    insertSyntheticIdentifier(while, methodDeclaration, message: null, messageOnToken: null)
-                      reportRecoverableError((, Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}])
-                        listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}], (, ()
-                      rewriter()
-                    listener: handleIdentifier(, methodDeclaration)
-                  parseQualifiedRestOpt(, methodDeclarationContinuation)
-                  parseMethodTypeVar()
-                    listener: handleNoTypeVariables(()
-                  parseGetterOrFormalParameters(, (, false, MemberKind.NonStaticMethod)
-                    parseFormalParameters(, MemberKind.NonStaticMethod)
-                      parseFormalParametersRest((, MemberKind.NonStaticMethod)
-                        listener: beginFormalParameters((, MemberKind.NonStaticMethod)
-                        parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
-                          parseMetadataStar(()
-                            listener: beginMetadataStar(int)
-                            listener: endMetadataStar(0)
-                          listener: beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
-                          listener: handleIdentifier(int, typeReference)
-                          listener: handleNoTypeArguments(x)
-                          listener: handleType(int, null)
-                          ensureIdentifier(int, formalParameterDeclaration)
-                            listener: handleIdentifier(x, formalParameterDeclaration)
-                          listener: handleFormalParameterWithoutValue())
-                          listener: endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
-                        listener: endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
-                  parseInitializersOpt())
-                    listener: handleNoInitializers()
-                  parseAsyncModifierOpt())
-                    listener: handleAsyncModifier(null, null)
-                    inPlainSync()
+              isReservedKeyword(with)
+              indicatesMethodOrField(()
+              parseMethod(}, null, null, null, null, null, }, Instance of 'SimpleType', null, with, DeclarationKind.Class, WrapperClass, true)
+                listener: beginMethod(null, null, null, null, null, with)
+                listener: handleIdentifier(int, typeReference)
+                listener: handleNoTypeArguments(with)
+                listener: handleType(int, null)
+                ensureIdentifierPotentiallyRecovered(int, methodDeclaration, true)
+                  reportRecoverableErrorWithToken(with, Instance of 'Template<(Token) => Message>')
+                    listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'with'., null, {token: with}], with, with)
+                  listener: handleIdentifier(with, methodDeclaration)
+                parseQualifiedRestOpt(with, methodDeclarationContinuation)
+                parseMethodTypeVar(with)
+                  listener: handleNoTypeVariables(()
+                parseGetterOrFormalParameters(with, with, false, MemberKind.NonStaticMethod)
+                  parseFormalParameters(with, MemberKind.NonStaticMethod)
+                    parseFormalParametersRest((, MemberKind.NonStaticMethod)
+                      listener: beginFormalParameters((, MemberKind.NonStaticMethod)
+                      parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+                        parseMetadataStar(()
+                          listener: beginMetadataStar(int)
+                          listener: endMetadataStar(0)
+                        listener: beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+                        listener: handleIdentifier(int, typeReference)
+                        listener: handleNoTypeArguments(x)
+                        listener: handleType(int, null)
+                        ensureIdentifier(int, formalParameterDeclaration)
+                          listener: handleIdentifier(x, formalParameterDeclaration)
+                        listener: handleFormalParameterWithoutValue())
+                        listener: endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+                      listener: endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
+                parseInitializersOpt())
+                  listener: handleNoInitializers()
+                parseAsyncModifierOpt())
+                  listener: handleAsyncModifier(null, null)
                   inPlainSync()
-                  parseFunctionBody(), false, true)
-                    listener: beginBlockFunctionBody({)
-                    notEofOrValue(}, if)
-                    parseStatement({)
-                      parseStatementX({)
-                        parseIfStatement({)
-                          listener: beginIfStatement(if)
-                          ensureParenthesizedCondition(if)
-                            parseExpressionInParenthesisRest(()
-                              parseExpression(()
-                                parsePrecedenceExpression((, 1, true)
-                                  parseUnaryExpression((, true)
-                                    parsePrimary((, expression)
-                                      parseSendOrFunctionLiteral((, expression)
-                                        parseSend((, expression)
-                                          ensureIdentifier((, expression)
-                                            listener: handleIdentifier(x, expression)
-                                          listener: handleNoTypeArguments(==)
-                                          parseArgumentsOpt(x)
-                                            listener: handleNoArguments(==)
-                                          listener: handleSend(x, ==)
-                                  listener: beginBinaryExpression(==)
-                                  parsePrecedenceExpression(==, 8, true)
-                                    parseUnaryExpression(==, true)
-                                      parsePrimary(==, expression)
-                                        parseLiteralInt(==)
-                                          listener: handleLiteralInt(0)
-                                  listener: endBinaryExpression(==)
-                              ensureCloseParen(0, ()
-                            listener: handleParenthesizedCondition(()
-                          listener: beginThenStatement(return)
-                          parseStatement())
-                            parseStatementX())
-                              parseReturnStatement())
-                                listener: beginReturnStatement(return)
-                                parseExpression(return)
-                                  parsePrecedenceExpression(return, 1, true)
-                                    parseUnaryExpression(return, true)
-                                      parsePrimary(return, expression)
-                                        parseLiteralInt(return)
-                                          listener: handleLiteralInt(42)
-                                ensureSemicolon(42)
-                                listener: endReturnStatement(true, return, ;)
-                                inGenerator()
-                          listener: endThenStatement(;)
-                          listener: endIfStatement(if, null)
-                    notEofOrValue(}, return)
-                    parseStatement(;)
-                      parseStatementX(;)
-                        parseReturnStatement(;)
-                          listener: beginReturnStatement(return)
-                          parseExpression(return)
-                            parsePrecedenceExpression(return, 1, true)
-                              parseUnaryExpression(return, true)
-                                parsePrimary(return, expression)
-                                  inPlainSync()
-                                  parseSend(return, expression)
-                                    ensureIdentifier(return, expression)
-                                      reportRecoverableErrorWithToken(while, Instance of 'Template<(Token) => Message>')
-                                        listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'while'., null, {token: while}], while, while)
-                                      rewriter()
-                                      listener: handleIdentifier(, expression)
-                                    listener: handleNoTypeArguments(while)
-                                    parseArgumentsOpt()
-                                      listener: handleNoArguments(while)
-                                    listener: handleSend(, while)
-                          ensureSemicolon()
-                            reportRecoverableError(, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
-                              listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], while, while)
-                            rewriter()
-                          listener: endReturnStatement(true, return, ;)
-                          inGenerator()
-                    notEofOrValue(}, while)
-                    parseStatement(;)
-                      parseStatementX(;)
-                        parseWhileStatement(;)
-                          listener: beginWhileStatement(while)
-                          ensureParenthesizedCondition(while)
-                            parseExpressionInParenthesisRest(()
-                              parseExpression(()
-                                parsePrecedenceExpression((, 1, true)
-                                  parseUnaryExpression((, true)
-                                    parsePrimary((, expression)
-                                      parseSendOrFunctionLiteral((, expression)
-                                        parseSend((, expression)
-                                          ensureIdentifier((, expression)
-                                            listener: handleIdentifier(x, expression)
-                                          listener: handleNoTypeArguments(-)
-                                          parseArgumentsOpt(x)
-                                            listener: handleNoArguments(-)
-                                          listener: handleSend(x, -)
-                                  listener: beginBinaryExpression(-)
-                                  parsePrecedenceExpression(-, 14, true)
-                                    parseUnaryExpression(-, true)
-                                      parsePrimary(-, expression)
-                                        parseLiteralInt(-)
-                                          listener: handleLiteralInt(1)
-                                  listener: endBinaryExpression(-)
-                              ensureCloseParen(1, ()
-                            listener: handleParenthesizedCondition(()
-                          listener: beginWhileStatementBody(+)
-                          parseStatement())
-                            parseStatementX())
-                              parseExpressionStatementOrDeclaration(), false)
-                                parseExpressionStatementOrDeclarationAfterModifiers(), ), null, null, null, false)
-                                  looksLikeLocalFunction(+)
-                                  parseExpressionStatement())
-                                    parseExpression())
-                                      parsePrecedenceExpression(), 1, true)
-                                        parseUnaryExpression(), true)
-                                          rewriteAndRecover(), UnsupportedPrefixPlus, )
-                                            reportRecoverableError(+, UnsupportedPrefixPlus)
-                                              listener: handleRecoverableError(UnsupportedPrefixPlus, +, +)
-                                            rewriter()
-                                          parsePrimary(), expression)
-                                            parseSendOrFunctionLiteral(), expression)
-                                              parseSend(), expression)
-                                                ensureIdentifier(), expression)
-                                                  listener: handleIdentifier(, expression)
-                                                listener: handleNoTypeArguments(+)
-                                                parseArgumentsOpt()
-                                                  listener: handleNoArguments(+)
-                                                listener: handleSend(, +)
-                                        listener: beginBinaryExpression(+)
-                                        parsePrecedenceExpression(+, 14, true)
-                                          parseUnaryExpression(+, true)
-                                            parsePrimary(+, expression)
-                                              parseLiteralInt(+)
-                                                listener: handleLiteralInt(1)
-                                        listener: endBinaryExpression(+)
-                                    ensureSemicolon(1)
-                                    listener: handleExpressionStatement(;)
-                          listener: endWhileStatementBody(})
-                          listener: endWhileStatement(while, })
-                    notEofOrValue(}, })
-                    listener: endBlockFunctionBody(3, {, })
-                  listener: endClassMethod(null, , (, null, })
-                listener: endMember()
-            notEofOrValue(}, int)
-            parseClassOrMixinOrExtensionMemberImpl(}, DeclarationKind.Class, WrapperClass)
-              parseMetadataStar(})
-                listener: beginMetadataStar(int)
-                listener: endMetadataStar(0)
-              listener: beginMember()
-              parseFields(}, null, null, null, null, null, }, Instance of 'NoType', int, DeclarationKind.Class, WrapperClass)
-                reportRecoverableError(int, MissingConstFinalVarOrType)
-                  listener: handleRecoverableError(MissingConstFinalVarOrType, int, int)
-                listener: handleNoType(})
-                ensureIdentifier(}, fieldDeclaration)
-                  listener: handleIdentifier(int, fieldDeclaration)
-                parseFieldInitializerOpt(int, int, null, null, DeclarationKind.Class, WrapperClass)
-                  listener: handleNoFieldInitializer(with)
-                ensureSemicolon(int)
-                  reportRecoverableError(int, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
-                    listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
-                  rewriter()
-                listener: endClassFields(null, null, null, null, 1, int, ;)
+                inPlainSync()
+                parseFunctionBody(), false, true)
+                  listener: beginBlockFunctionBody({)
+                  notEofOrValue(}, if)
+                  parseStatement({)
+                    parseStatementX({)
+                      parseIfStatement({)
+                        listener: beginIfStatement(if)
+                        ensureParenthesizedCondition(if)
+                          parseExpressionInParenthesisRest(()
+                            parseExpression(()
+                              parsePrecedenceExpression((, 1, true)
+                                parseUnaryExpression((, true)
+                                  parsePrimary((, expression)
+                                    parseSendOrFunctionLiteral((, expression)
+                                      parseSend((, expression)
+                                        ensureIdentifier((, expression)
+                                          listener: handleIdentifier(x, expression)
+                                        listener: handleNoTypeArguments(==)
+                                        parseArgumentsOpt(x)
+                                          listener: handleNoArguments(==)
+                                        listener: handleSend(x, ==)
+                                listener: beginBinaryExpression(==)
+                                parsePrecedenceExpression(==, 8, true)
+                                  parseUnaryExpression(==, true)
+                                    parsePrimary(==, expression)
+                                      parseLiteralInt(==)
+                                        listener: handleLiteralInt(0)
+                                listener: endBinaryExpression(==)
+                            ensureCloseParen(0, ()
+                          listener: handleParenthesizedCondition(()
+                        listener: beginThenStatement(return)
+                        parseStatement())
+                          parseStatementX())
+                            parseReturnStatement())
+                              listener: beginReturnStatement(return)
+                              parseExpression(return)
+                                parsePrecedenceExpression(return, 1, true)
+                                  parseUnaryExpression(return, true)
+                                    parsePrimary(return, expression)
+                                      parseLiteralInt(return)
+                                        listener: handleLiteralInt(42)
+                              ensureSemicolon(42)
+                              listener: endReturnStatement(true, return, ;)
+                              inGenerator()
+                        listener: endThenStatement(;)
+                        listener: endIfStatement(if, null)
+                  notEofOrValue(}, return)
+                  parseStatement(;)
+                    parseStatementX(;)
+                      parseReturnStatement(;)
+                        listener: beginReturnStatement(return)
+                        parseExpression(return)
+                          parsePrecedenceExpression(return, 1, true)
+                            parseUnaryExpression(return, true)
+                              parsePrimary(return, expression)
+                                inPlainSync()
+                                parseSend(return, expression)
+                                  ensureIdentifier(return, expression)
+                                    reportRecoverableErrorWithToken(with, Instance of 'Template<(Token) => Message>')
+                                      listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'with'., null, {token: with}], with, with)
+                                    listener: handleIdentifier(with, expression)
+                                  listener: handleNoTypeArguments(()
+                                  parseArgumentsOpt(with)
+                                    parseArguments(with)
+                                      parseArgumentsRest(()
+                                        listener: beginArguments(()
+                                        parseExpression(()
+                                          parsePrecedenceExpression((, 1, true)
+                                            parseUnaryExpression((, true)
+                                              parsePrimary((, expression)
+                                                parseSendOrFunctionLiteral((, expression)
+                                                  parseSend((, expression)
+                                                    ensureIdentifier((, expression)
+                                                      listener: handleIdentifier(x, expression)
+                                                    listener: handleNoTypeArguments(-)
+                                                    parseArgumentsOpt(x)
+                                                      listener: handleNoArguments(-)
+                                                    listener: handleSend(x, -)
+                                            listener: beginBinaryExpression(-)
+                                            parsePrecedenceExpression(-, 14, true)
+                                              parseUnaryExpression(-, true)
+                                                parsePrimary(-, expression)
+                                                  parseLiteralInt(-)
+                                                    listener: handleLiteralInt(1)
+                                            listener: endBinaryExpression(-)
+                                        listener: endArguments(1, (, ))
+                                  listener: handleSend(with, +)
+                            listener: beginBinaryExpression(+)
+                            parsePrecedenceExpression(+, 14, true)
+                              parseUnaryExpression(+, true)
+                                parsePrimary(+, expression)
+                                  parseLiteralInt(+)
+                                    listener: handleLiteralInt(1)
+                            listener: endBinaryExpression(+)
+                        ensureSemicolon(1)
+                        listener: endReturnStatement(true, return, ;)
+                        inGenerator()
+                  notEofOrValue(}, })
+                  listener: endBlockFunctionBody(2, {, })
+                listener: endClassMethod(null, int, (, null, })
               listener: endMember()
-            notEofOrValue(}, with)
-            parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, WrapperClass)
-              parseMetadataStar(;)
-                listener: beginMetadataStar(with)
-                listener: endMetadataStar(0)
-              listener: beginMember()
-              recoverFromInvalidMember(;, ;, null, null, null, null, null, ;, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
-                reportRecoverableErrorWithToken(with, Instance of 'Template<(Token) => Message>')
-                  listener: handleRecoverableError(Message[ExpectedClassMember, Expected a class member, but got 'with'., null, {token: with}], with, with)
-                listener: handleInvalidMember(with)
-                listener: endMember()
-            notEofOrValue(}, ()
-            parseClassOrMixinOrExtensionMemberImpl(with, DeclarationKind.Class, WrapperClass)
-              parseMetadataStar(with)
-                listener: beginMetadataStar(()
-                listener: endMetadataStar(0)
-              listener: beginMember()
-              recoverFromInvalidMember(with, with, null, null, null, null, null, with, Instance of 'NoType', null, DeclarationKind.Class, WrapperClass)
-                parseMethod(with, null, null, null, null, null, with, Instance of 'NoType', null, (, DeclarationKind.Class, WrapperClass)
-                  listener: beginMethod(null, null, null, null, null, ()
-                  listener: handleNoType(with)
-                  ensureIdentifier(with, methodDeclaration)
-                    insertSyntheticIdentifier(with, methodDeclaration, message: null, messageOnToken: null)
-                      reportRecoverableError((, Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}])
-                        listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}], (, ()
-                      rewriter()
-                    listener: handleIdentifier(, methodDeclaration)
-                  parseQualifiedRestOpt(, methodDeclarationContinuation)
-                  parseMethodTypeVar()
-                    listener: handleNoTypeVariables(()
-                  parseGetterOrFormalParameters(, (, false, MemberKind.NonStaticMethod)
-                    parseFormalParameters(, MemberKind.NonStaticMethod)
-                      parseFormalParametersRest((, MemberKind.NonStaticMethod)
-                        listener: beginFormalParameters((, MemberKind.NonStaticMethod)
-                        parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
-                          parseMetadataStar(()
-                            listener: beginMetadataStar(int)
-                            listener: endMetadataStar(0)
-                          listener: beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
-                          listener: handleIdentifier(int, typeReference)
-                          listener: handleNoTypeArguments(x)
-                          listener: handleType(int, null)
-                          ensureIdentifier(int, formalParameterDeclaration)
-                            listener: handleIdentifier(x, formalParameterDeclaration)
-                          listener: handleFormalParameterWithoutValue())
-                          listener: endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
-                        listener: endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
-                  parseInitializersOpt())
-                    listener: handleNoInitializers()
-                  parseAsyncModifierOpt())
-                    listener: handleAsyncModifier(null, null)
-                    inPlainSync()
-                  inPlainSync()
-                  parseFunctionBody(), false, true)
-                    listener: beginBlockFunctionBody({)
-                    notEofOrValue(}, if)
-                    parseStatement({)
-                      parseStatementX({)
-                        parseIfStatement({)
-                          listener: beginIfStatement(if)
-                          ensureParenthesizedCondition(if)
-                            parseExpressionInParenthesisRest(()
-                              parseExpression(()
-                                parsePrecedenceExpression((, 1, true)
-                                  parseUnaryExpression((, true)
-                                    parsePrimary((, expression)
-                                      parseSendOrFunctionLiteral((, expression)
-                                        parseSend((, expression)
-                                          ensureIdentifier((, expression)
-                                            listener: handleIdentifier(x, expression)
-                                          listener: handleNoTypeArguments(==)
-                                          parseArgumentsOpt(x)
-                                            listener: handleNoArguments(==)
-                                          listener: handleSend(x, ==)
-                                  listener: beginBinaryExpression(==)
-                                  parsePrecedenceExpression(==, 8, true)
-                                    parseUnaryExpression(==, true)
-                                      parsePrimary(==, expression)
-                                        parseLiteralInt(==)
-                                          listener: handleLiteralInt(0)
-                                  listener: endBinaryExpression(==)
-                              ensureCloseParen(0, ()
-                            listener: handleParenthesizedCondition(()
-                          listener: beginThenStatement(return)
-                          parseStatement())
-                            parseStatementX())
-                              parseReturnStatement())
-                                listener: beginReturnStatement(return)
-                                parseExpression(return)
-                                  parsePrecedenceExpression(return, 1, true)
-                                    parseUnaryExpression(return, true)
-                                      parsePrimary(return, expression)
-                                        parseLiteralInt(return)
-                                          listener: handleLiteralInt(42)
-                                ensureSemicolon(42)
-                                listener: endReturnStatement(true, return, ;)
-                                inGenerator()
-                          listener: endThenStatement(;)
-                          listener: endIfStatement(if, null)
-                    notEofOrValue(}, return)
-                    parseStatement(;)
-                      parseStatementX(;)
-                        parseReturnStatement(;)
-                          listener: beginReturnStatement(return)
-                          parseExpression(return)
-                            parsePrecedenceExpression(return, 1, true)
-                              parseUnaryExpression(return, true)
-                                parsePrimary(return, expression)
-                                  inPlainSync()
-                                  parseSend(return, expression)
-                                    ensureIdentifier(return, expression)
-                                      reportRecoverableErrorWithToken(with, Instance of 'Template<(Token) => Message>')
-                                        listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'with'., null, {token: with}], with, with)
-                                      listener: handleIdentifier(with, expression)
-                                    listener: handleNoTypeArguments(()
-                                    parseArgumentsOpt(with)
-                                      parseArguments(with)
-                                        parseArgumentsRest(()
-                                          listener: beginArguments(()
-                                          parseExpression(()
-                                            parsePrecedenceExpression((, 1, true)
-                                              parseUnaryExpression((, true)
-                                                parsePrimary((, expression)
-                                                  parseSendOrFunctionLiteral((, expression)
-                                                    parseSend((, expression)
-                                                      ensureIdentifier((, expression)
-                                                        listener: handleIdentifier(x, expression)
-                                                      listener: handleNoTypeArguments(-)
-                                                      parseArgumentsOpt(x)
-                                                        listener: handleNoArguments(-)
-                                                      listener: handleSend(x, -)
-                                              listener: beginBinaryExpression(-)
-                                              parsePrecedenceExpression(-, 14, true)
-                                                parseUnaryExpression(-, true)
-                                                  parsePrimary(-, expression)
-                                                    parseLiteralInt(-)
-                                                      listener: handleLiteralInt(1)
-                                              listener: endBinaryExpression(-)
-                                          listener: endArguments(1, (, ))
-                                    listener: handleSend(with, +)
-                              listener: beginBinaryExpression(+)
-                              parsePrecedenceExpression(+, 14, true)
-                                parseUnaryExpression(+, true)
-                                  parsePrimary(+, expression)
-                                    parseLiteralInt(+)
-                                      listener: handleLiteralInt(1)
-                              listener: endBinaryExpression(+)
-                          ensureSemicolon(1)
-                          listener: endReturnStatement(true, return, ;)
-                          inGenerator()
-                    notEofOrValue(}, })
-                    listener: endBlockFunctionBody(2, {, })
-                  listener: endClassMethod(null, , (, null, })
-                listener: endMember()
             notEofOrValue(}, })
-            listener: endClassOrMixinBody(DeclarationKind.Class, 94, {, })
+            listener: endClassOrMixinBody(DeclarationKind.Class, 34, {, })
           listener: endClassDeclaration(class, })
   listener: endTopLevelDeclaration()
   reportAllErrorTokens(class)
diff --git a/pkg/front_end/parser_testcases/error_recovery/reserved_words_class_methods.dart.parser.expect b/pkg/front_end/parser_testcases/error_recovery/reserved_words_class_methods.dart.parser.expect
index 2d842d0..dcf12ad 100644
--- a/pkg/front_end/parser_testcases/error_recovery/reserved_words_class_methods.dart.parser.expect
+++ b/pkg/front_end/parser_testcases/error_recovery/reserved_words_class_methods.dart.parser.expect
@@ -1,127 +1,127 @@
 NOTICE: Stream was rewritten by parser!
 
 class WrapperClass {
-int ;assert(int x) {
+int assert(int x) {
 if (x == 0) return 42;
 return assert(x-1) + 1;
 }
 
-int ;break(int x) {
+int break(int x) {
 if (x == 0) return 42;
 return ;break;(x-1) + 1;
 }
 
-int ;case(int x) {
+int case(int x) {
 if (x == 0) return 42;
 return case(x-1) + 1;
 }
 
-int ;catch(int x) {
+int catch(int x) {
 if (x == 0) return 42;
 return catch(x-1) + 1;
 }
 
-int ;class(int x) {
+int class(int x) {
 if (x == 0) return 42;
 return class(x-1) + 1;
 }
 
-int ;const(int x) {
+int const(int x) {
 if (x == 0) return 42;
 return const(x-1) + 1;
 }
 
-int ;continue(int x) {
+int continue(int x) {
 if (x == 0) return 42;
 return ;continue;(x-1) + 1;
 }
 
-int ;default(int x) {
+int default(int x) {
 if (x == 0) return 42;
 return default(x-1) + 1;
 }
 
-int ;do(int x) {
+int do(int x) {
 if (x == 0) return 42;
 return ;do(x-1) + 1;
 while();}
 
-int ;else(int x) {
+int else(int x) {
 if (x == 0) return 42;
 return ;;else(x-1) + 1;
 }
 
-int ;enum(int x) {
+int enum(int x) {
 if (x == 0) return 42;
 return enum(x-1) + 1;
 }
 
-int ;extends(int x) {
+int extends(int x) {
 if (x == 0) return 42;
 return extends(x-1) + 1;
 }
 
-int ;false(int x) {
+int false(int x) {
 if (x == 0) return 42;
 return false(x-1) + 1;
 }
 
-int ;final(int x) {
+int final(int x) {
 if (x == 0) return 42;
 return ;final(;x-1;;) + 1;
 }
 
-int ;finally(int x) {
+int finally(int x) {
 if (x == 0) return 42;
 return finally(x-1) + 1;
 }
 
-int ;for(int x) {
+int for(int x) {
 if (x == 0) return 42;
 return ;for(x-1;;) + 1;
 }
 
-int ;if(int x) {
+int if(int x) {
 if (x == 0) return 42;
 return ;if(x-1) + 1;
 }
 
-int ;in(int x) {
+int in(int x) {
 if (x == 0) return 42;
 return in(x-1) + 1;
 }
 
-int ;is(int x) {
+int is(int x) {
 if (x == 0) return 42;
 return is;(x-1) + 1;
 }
 
-int ;new(int x) {
+int new(int x) {
 if (x == 0) return 42;
 return new(x-1) + 1;
 }
 
-int ;null(int x) {
+int null(int x) {
 if (x == 0) return 42;
 return null(x-1) + 1;
 }
 
-int ;rethrow(int x) {
+int rethrow(int x) {
 if (x == 0) return 42;
 return rethrow(x-1) + 1;
 }
 
-int ;return(int x) {
+int return(int x) {
 if (x == 0) return 42;
 return return(x-1) + 1;
 }
 
-int ;super(int x) {
+int super(int x) {
 if (x == 0) return 42;
 return super(x-1) + 1;
 }
 
-int ;switch(int x) {
+int switch(int x) {
 if (x == 0) return 42;
 return ;switch(x-1) {}+ 1;
 }
@@ -131,164 +131,164 @@
 return this(x-1) + 1;
 }
 
-int ;throw(int x) {
+int throw(int x) {
 if (x == 0) return 42;
 return throw(x-1) + 1;
 }
 
-int ;true(int x) {
+int true(int x) {
 if (x == 0) return 42;
 return true(x-1) + 1;
 }
 
-int ;try(int x) {
+int try(int x) {
 if (x == 0) return 42;
 return ;try{}(x-1) + 1;
 }
 
-int ;var(int x) {
+int var(int x) {
 if (x == 0) return 42;
 return ;var(;x-1;;) + 1;
 }
 
-int ;void(int x) {
+int void(int x) {
 if (x == 0) return 42;
 return ;void(;x-1;;) + 1;
 }
 
-int ;while(int x) {
+int while(int x) {
 if (x == 0) return 42;
 return ;while(x-1) + 1;
 }
 
-int ;with(int x) {
+int with(int x) {
 if (x == 0) return 42;
 return with(x-1) + 1;
 }
 }
 
 class[KeywordToken] WrapperClass[StringToken] {[BeginToken]
-int[StringToken] ;[SyntheticToken]assert[KeywordToken][SyntheticStringToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+int[StringToken] assert[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
 if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
 return[KeywordToken] assert[KeywordToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] +[SimpleToken] 1[StringToken];[SimpleToken]
 }[SimpleToken]
 
-int[StringToken] ;[SyntheticToken]break[KeywordToken][SyntheticStringToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+int[StringToken] break[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
 if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
 return[KeywordToken] [SyntheticStringToken];[SyntheticToken]break[KeywordToken];[SyntheticToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] +[SimpleToken] 1[StringToken];[SimpleToken]
 }[SimpleToken]
 
-int[StringToken] ;[SyntheticToken]case[KeywordToken][SyntheticStringToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+int[StringToken] case[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
 if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
 return[KeywordToken] case[KeywordToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] +[SimpleToken] 1[StringToken];[SimpleToken]
 }[SimpleToken]
 
-int[StringToken] ;[SyntheticToken]catch[KeywordToken][SyntheticStringToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+int[StringToken] catch[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
 if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
 return[KeywordToken] catch[KeywordToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] +[SimpleToken] 1[StringToken];[SimpleToken]
 }[SimpleToken]
 
-int[StringToken] ;[SyntheticToken]class[KeywordToken][SyntheticStringToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+int[StringToken] class[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
 if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
 return[KeywordToken] class[KeywordToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] +[SimpleToken] 1[StringToken];[SimpleToken]
 }[SimpleToken]
 
-int[StringToken] ;[SyntheticToken]const[KeywordToken][SyntheticStringToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+int[StringToken] const[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
 if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
 return[KeywordToken] const[KeywordToken][SyntheticStringToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] +[SimpleToken] 1[StringToken];[SimpleToken]
 }[SimpleToken]
 
-int[StringToken] ;[SyntheticToken]continue[KeywordToken][SyntheticStringToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+int[StringToken] continue[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
 if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
 return[KeywordToken] [SyntheticStringToken];[SyntheticToken]continue[KeywordToken];[SyntheticToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] +[SimpleToken] 1[StringToken];[SimpleToken]
 }[SimpleToken]
 
-int[StringToken] ;[SyntheticToken]default[KeywordToken][SyntheticStringToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+int[StringToken] default[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
 if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
 return[KeywordToken] default[KeywordToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] +[SimpleToken] 1[StringToken];[SimpleToken]
 }[SimpleToken]
 
-int[StringToken] ;[SyntheticToken]do[KeywordToken][SyntheticStringToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+int[StringToken] do[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
 if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
 return[KeywordToken] [SyntheticStringToken];[SyntheticToken]do[KeywordToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] +[SimpleToken] 1[StringToken];[SimpleToken]
 while[SyntheticKeywordToken]([SyntheticBeginToken][SyntheticStringToken])[SyntheticToken];[SyntheticToken]}[SimpleToken]
 
-int[StringToken] ;[SyntheticToken]else[KeywordToken][SyntheticStringToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+int[StringToken] else[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
 if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
 return[KeywordToken] [SyntheticStringToken];[SyntheticToken][SyntheticStringToken];[SyntheticToken]else[KeywordToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] +[SimpleToken] 1[StringToken];[SimpleToken]
 }[SimpleToken]
 
-int[StringToken] ;[SyntheticToken]enum[KeywordToken][SyntheticStringToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+int[StringToken] enum[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
 if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
 return[KeywordToken] enum[KeywordToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] +[SimpleToken] 1[StringToken];[SimpleToken]
 }[SimpleToken]
 
-int[StringToken] ;[SyntheticToken]extends[KeywordToken][SyntheticStringToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+int[StringToken] extends[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
 if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
 return[KeywordToken] extends[KeywordToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] +[SimpleToken] 1[StringToken];[SimpleToken]
 }[SimpleToken]
 
-int[StringToken] ;[SyntheticToken]false[KeywordToken][SyntheticStringToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+int[StringToken] false[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
 if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
 return[KeywordToken] false[KeywordToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] +[SimpleToken] 1[StringToken];[SimpleToken]
 }[SimpleToken]
 
-int[StringToken] ;[SyntheticToken]final[KeywordToken][SyntheticStringToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+int[StringToken] final[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
 if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
 return[KeywordToken] [SyntheticStringToken];[SyntheticToken]final[KeywordToken]([BeginToken][SyntheticStringToken];[SyntheticToken]x[StringToken]-[SimpleToken]1[StringToken];[SyntheticToken][SyntheticStringToken];[SyntheticToken])[SimpleToken] [SyntheticStringToken]+[SimpleToken] 1[StringToken];[SimpleToken]
 }[SimpleToken]
 
-int[StringToken] ;[SyntheticToken]finally[KeywordToken][SyntheticStringToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+int[StringToken] finally[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
 if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
 return[KeywordToken] finally[KeywordToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] +[SimpleToken] 1[StringToken];[SimpleToken]
 }[SimpleToken]
 
-int[StringToken] ;[SyntheticToken]for[KeywordToken][SyntheticStringToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+int[StringToken] for[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
 if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
 return[KeywordToken] [SyntheticStringToken];[SyntheticToken]for[KeywordToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken];[SyntheticToken][SyntheticStringToken];[SyntheticToken])[SimpleToken] [SyntheticStringToken]+[SimpleToken] 1[StringToken];[SimpleToken]
 }[SimpleToken]
 
-int[StringToken] ;[SyntheticToken]if[KeywordToken][SyntheticStringToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+int[StringToken] if[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
 if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
 return[KeywordToken] [SyntheticStringToken];[SyntheticToken]if[KeywordToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] [SyntheticStringToken]+[SimpleToken] 1[StringToken];[SimpleToken]
 }[SimpleToken]
 
-int[StringToken] ;[SyntheticToken]in[KeywordToken][SyntheticStringToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+int[StringToken] in[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
 if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
 return[KeywordToken] in[KeywordToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] +[SimpleToken] 1[StringToken];[SimpleToken]
 }[SimpleToken]
 
-int[StringToken] ;[SyntheticToken]is[KeywordToken][SyntheticStringToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+int[StringToken] is[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
 if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
 return[KeywordToken] [SyntheticStringToken]is[KeywordToken][SyntheticStringToken];[SyntheticToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] +[SimpleToken] 1[StringToken];[SimpleToken]
 }[SimpleToken]
 
-int[StringToken] ;[SyntheticToken]new[KeywordToken][SyntheticStringToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+int[StringToken] new[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
 if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
 return[KeywordToken] new[KeywordToken][SyntheticStringToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] +[SimpleToken] 1[StringToken];[SimpleToken]
 }[SimpleToken]
 
-int[StringToken] ;[SyntheticToken]null[KeywordToken][SyntheticStringToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+int[StringToken] null[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
 if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
 return[KeywordToken] null[KeywordToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] +[SimpleToken] 1[StringToken];[SimpleToken]
 }[SimpleToken]
 
-int[StringToken] ;[SyntheticToken]rethrow[KeywordToken][SyntheticStringToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+int[StringToken] rethrow[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
 if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
 return[KeywordToken] rethrow[KeywordToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] +[SimpleToken] 1[StringToken];[SimpleToken]
 }[SimpleToken]
 
-int[StringToken] ;[SyntheticToken]return[KeywordToken][SyntheticStringToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+int[StringToken] return[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
 if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
 return[KeywordToken] return[KeywordToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] +[SimpleToken] 1[StringToken];[SimpleToken]
 }[SimpleToken]
 
-int[StringToken] ;[SyntheticToken]super[KeywordToken][SyntheticStringToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+int[StringToken] super[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
 if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
 return[KeywordToken] super[KeywordToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] +[SimpleToken] 1[StringToken];[SimpleToken]
 }[SimpleToken]
 
-int[StringToken] ;[SyntheticToken]switch[KeywordToken][SyntheticStringToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+int[StringToken] switch[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
 if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
 return[KeywordToken] [SyntheticStringToken];[SyntheticToken]switch[KeywordToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] {[SyntheticBeginToken]}[SyntheticToken][SyntheticStringToken]+[SimpleToken] 1[StringToken];[SimpleToken]
 }[SimpleToken]
@@ -298,37 +298,37 @@
 return[KeywordToken] this[KeywordToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] +[SimpleToken] 1[StringToken];[SimpleToken]
 }[SimpleToken]
 
-int[StringToken] ;[SyntheticToken]throw[KeywordToken][SyntheticStringToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+int[StringToken] throw[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
 if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
 return[KeywordToken] throw[KeywordToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] +[SimpleToken] 1[StringToken];[SimpleToken]
 }[SimpleToken]
 
-int[StringToken] ;[SyntheticToken]true[KeywordToken][SyntheticStringToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+int[StringToken] true[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
 if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
 return[KeywordToken] true[KeywordToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] +[SimpleToken] 1[StringToken];[SimpleToken]
 }[SimpleToken]
 
-int[StringToken] ;[SyntheticToken]try[KeywordToken][SyntheticStringToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+int[StringToken] try[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
 if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
 return[KeywordToken] [SyntheticStringToken];[SyntheticToken]try[KeywordToken]{[SyntheticBeginToken]}[SyntheticToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] +[SimpleToken] 1[StringToken];[SimpleToken]
 }[SimpleToken]
 
-int[StringToken] ;[SyntheticToken]var[KeywordToken][SyntheticStringToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+int[StringToken] var[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
 if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
 return[KeywordToken] [SyntheticStringToken];[SyntheticToken]var[KeywordToken]([BeginToken][SyntheticStringToken];[SyntheticToken]x[StringToken]-[SimpleToken]1[StringToken];[SyntheticToken][SyntheticStringToken];[SyntheticToken])[SimpleToken] [SyntheticStringToken]+[SimpleToken] 1[StringToken];[SimpleToken]
 }[SimpleToken]
 
-int[StringToken] ;[SyntheticToken]void[KeywordToken][SyntheticStringToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+int[StringToken] void[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
 if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
 return[KeywordToken] [SyntheticStringToken];[SyntheticToken]void[KeywordToken]([BeginToken][SyntheticStringToken];[SyntheticToken]x[StringToken]-[SimpleToken]1[StringToken];[SyntheticToken][SyntheticStringToken];[SyntheticToken])[SimpleToken] [SyntheticStringToken]+[SimpleToken] 1[StringToken];[SimpleToken]
 }[SimpleToken]
 
-int[StringToken] ;[SyntheticToken]while[KeywordToken][SyntheticStringToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+int[StringToken] while[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
 if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
 return[KeywordToken] [SyntheticStringToken];[SyntheticToken]while[KeywordToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] [SyntheticStringToken]+[SimpleToken] 1[StringToken];[SimpleToken]
 }[SimpleToken]
 
-int[StringToken] ;[SyntheticToken]with[KeywordToken][SyntheticStringToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+int[StringToken] with[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
 if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
 return[KeywordToken] with[KeywordToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] +[SimpleToken] 1[StringToken];[SimpleToken]
 }[SimpleToken]
diff --git a/pkg/front_end/parser_testcases/error_recovery/reserved_words_top_level_fields.dart.expect b/pkg/front_end/parser_testcases/error_recovery/reserved_words_top_level_fields.dart.expect
index ca1fdb1..858beef 100644
--- a/pkg/front_end/parser_testcases/error_recovery/reserved_words_top_level_fields.dart.expect
+++ b/pkg/front_end/parser_testcases/error_recovery/reserved_words_top_level_fields.dart.expect
@@ -1,13 +1,5 @@
 Problems reported:
 
-parser/error_recovery/reserved_words_top_level_fields:1:1: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
-int assert(int x) {
-^^^
-
-parser/error_recovery/reserved_words_top_level_fields:1:1: Expected ';' after this.
-int assert(int x) {
-^^^
-
 parser/error_recovery/reserved_words_top_level_fields:1:5: Expected an identifier, but got 'assert'.
 int assert(int x) {
     ^^^^^^
@@ -16,14 +8,6 @@
   return assert(x-1) + 1;
          ^^^^^^
 
-parser/error_recovery/reserved_words_top_level_fields:6:1: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
-int break(int x) {
-^^^
-
-parser/error_recovery/reserved_words_top_level_fields:6:1: Expected ';' after this.
-int break(int x) {
-^^^
-
 parser/error_recovery/reserved_words_top_level_fields:6:5: Expected an identifier, but got 'break'.
 int break(int x) {
     ^^^^^
@@ -44,14 +28,6 @@
   return break(x-1) + 1;
          ^^^^^
 
-parser/error_recovery/reserved_words_top_level_fields:11:1: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
-int case(int x) {
-^^^
-
-parser/error_recovery/reserved_words_top_level_fields:11:1: Expected ';' after this.
-int case(int x) {
-^^^
-
 parser/error_recovery/reserved_words_top_level_fields:11:5: Expected an identifier, but got 'case'.
 int case(int x) {
     ^^^^
@@ -60,14 +36,6 @@
   return case(x-1) + 1;
          ^^^^
 
-parser/error_recovery/reserved_words_top_level_fields:16:1: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
-int catch(int x) {
-^^^
-
-parser/error_recovery/reserved_words_top_level_fields:16:1: Expected ';' after this.
-int catch(int x) {
-^^^
-
 parser/error_recovery/reserved_words_top_level_fields:16:5: Expected an identifier, but got 'catch'.
 int catch(int x) {
     ^^^^^
@@ -76,47 +44,15 @@
   return catch(x-1) + 1;
          ^^^^^
 
-parser/error_recovery/reserved_words_top_level_fields:21:1: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
+parser/error_recovery/reserved_words_top_level_fields:21:5: Expected an identifier, but got 'class'.
 int class(int x) {
-^^^
+    ^^^^^
 
-parser/error_recovery/reserved_words_top_level_fields:21:1: Expected ';' after this.
-int class(int x) {
-^^^
+parser/error_recovery/reserved_words_top_level_fields:23:10: Expected an identifier, but got 'class'.
+  return class(x-1) + 1;
+         ^^^^^
 
-parser/error_recovery/reserved_words_top_level_fields:21:10: Expected an identifier, but got '('.
-int class(int x) {
-         ^
-
-parser/error_recovery/reserved_words_top_level_fields:21:11: A class declaration must have a body, even if it is empty.
-int class(int x) {
-          ^^^
-
-parser/error_recovery/reserved_words_top_level_fields:21:15: Expected ';' after this.
-int class(int x) {
-              ^
-
-parser/error_recovery/reserved_words_top_level_fields:21:16: Expected a declaration, but got ')'.
-int class(int x) {
-               ^
-
-parser/error_recovery/reserved_words_top_level_fields:21:18: Expected a declaration, but got '{'.
-int class(int x) {
-                 ^
-
-parser/error_recovery/reserved_words_top_level_fields:26:1: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
-int const(int x) {
-^^^
-
-parser/error_recovery/reserved_words_top_level_fields:26:1: Expected ';' after this.
-int const(int x) {
-^^^
-
-parser/error_recovery/reserved_words_top_level_fields:26:10: Expected an identifier, but got '('.
-int const(int x) {
-         ^
-
-parser/error_recovery/reserved_words_top_level_fields:26:5: Can't have modifier 'const' here.
+parser/error_recovery/reserved_words_top_level_fields:26:5: Expected an identifier, but got 'const'.
 int const(int x) {
     ^^^^^
 
@@ -124,14 +60,6 @@
   return const(x-1) + 1;
               ^
 
-parser/error_recovery/reserved_words_top_level_fields:31:1: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
-int continue(int x) {
-^^^
-
-parser/error_recovery/reserved_words_top_level_fields:31:1: Expected ';' after this.
-int continue(int x) {
-^^^
-
 parser/error_recovery/reserved_words_top_level_fields:31:5: Expected an identifier, but got 'continue'.
 int continue(int x) {
     ^^^^^^^^
@@ -152,14 +80,6 @@
   return continue(x-1) + 1;
          ^^^^^^^^
 
-parser/error_recovery/reserved_words_top_level_fields:36:1: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
-int default(int x) {
-^^^
-
-parser/error_recovery/reserved_words_top_level_fields:36:1: Expected ';' after this.
-int default(int x) {
-^^^
-
 parser/error_recovery/reserved_words_top_level_fields:36:5: Expected an identifier, but got 'default'.
 int default(int x) {
     ^^^^^^^
@@ -168,14 +88,6 @@
   return default(x-1) + 1;
          ^^^^^^^
 
-parser/error_recovery/reserved_words_top_level_fields:41:1: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
-int do(int x) {
-^^^
-
-parser/error_recovery/reserved_words_top_level_fields:41:1: Expected ';' after this.
-int do(int x) {
-^^^
-
 parser/error_recovery/reserved_words_top_level_fields:41:5: Expected an identifier, but got 'do'.
 int do(int x) {
     ^^
@@ -204,14 +116,6 @@
 }
 ^
 
-parser/error_recovery/reserved_words_top_level_fields:46:1: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
-int else(int x) {
-^^^
-
-parser/error_recovery/reserved_words_top_level_fields:46:1: Expected ';' after this.
-int else(int x) {
-^^^
-
 parser/error_recovery/reserved_words_top_level_fields:46:5: Expected an identifier, but got 'else'.
 int else(int x) {
     ^^^^
@@ -236,41 +140,13 @@
   return else(x-1) + 1;
          ^^^^
 
-parser/error_recovery/reserved_words_top_level_fields:51:1: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
+parser/error_recovery/reserved_words_top_level_fields:51:5: Expected an identifier, but got 'enum'.
 int enum(int x) {
-^^^
+    ^^^^
 
-parser/error_recovery/reserved_words_top_level_fields:51:1: Expected ';' after this.
-int enum(int x) {
-^^^
-
-parser/error_recovery/reserved_words_top_level_fields:51:9: Expected an identifier, but got '('.
-int enum(int x) {
-        ^
-
-parser/error_recovery/reserved_words_top_level_fields:51:10: Expected a enum body, but got 'int'.
-int enum(int x) {
-         ^^^
-
-parser/error_recovery/reserved_words_top_level_fields:51:14: Expected ';' after this.
-int enum(int x) {
-             ^
-
-parser/error_recovery/reserved_words_top_level_fields:51:15: Expected a declaration, but got ')'.
-int enum(int x) {
-              ^
-
-parser/error_recovery/reserved_words_top_level_fields:51:17: Expected a declaration, but got '{'.
-int enum(int x) {
-                ^
-
-parser/error_recovery/reserved_words_top_level_fields:56:1: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
-int extends(int x) {
-^^^
-
-parser/error_recovery/reserved_words_top_level_fields:56:1: Expected ';' after this.
-int extends(int x) {
-^^^
+parser/error_recovery/reserved_words_top_level_fields:53:10: Expected an identifier, but got 'enum'.
+  return enum(x-1) + 1;
+         ^^^^
 
 parser/error_recovery/reserved_words_top_level_fields:56:5: Expected an identifier, but got 'extends'.
 int extends(int x) {
@@ -280,31 +156,11 @@
   return extends(x-1) + 1;
          ^^^^^^^
 
-parser/error_recovery/reserved_words_top_level_fields:61:1: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
-int false(int x) {
-^^^
-
-parser/error_recovery/reserved_words_top_level_fields:61:1: Expected ';' after this.
-int false(int x) {
-^^^
-
 parser/error_recovery/reserved_words_top_level_fields:61:5: Expected an identifier, but got 'false'.
 int false(int x) {
     ^^^^^
 
-parser/error_recovery/reserved_words_top_level_fields:66:1: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
-int final(int x) {
-^^^
-
-parser/error_recovery/reserved_words_top_level_fields:66:1: Expected ';' after this.
-int final(int x) {
-^^^
-
-parser/error_recovery/reserved_words_top_level_fields:66:10: Expected an identifier, but got '('.
-int final(int x) {
-         ^
-
-parser/error_recovery/reserved_words_top_level_fields:66:5: Can't have modifier 'final' here.
+parser/error_recovery/reserved_words_top_level_fields:66:5: Expected an identifier, but got 'final'.
 int final(int x) {
     ^^^^^
 
@@ -344,14 +200,6 @@
   return final(x-1) + 1;
                     ^
 
-parser/error_recovery/reserved_words_top_level_fields:71:1: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
-int finally(int x) {
-^^^
-
-parser/error_recovery/reserved_words_top_level_fields:71:1: Expected ';' after this.
-int finally(int x) {
-^^^
-
 parser/error_recovery/reserved_words_top_level_fields:71:5: Expected an identifier, but got 'finally'.
 int finally(int x) {
     ^^^^^^^
@@ -360,14 +208,6 @@
   return finally(x-1) + 1;
          ^^^^^^^
 
-parser/error_recovery/reserved_words_top_level_fields:76:1: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
-int for(int x) {
-^^^
-
-parser/error_recovery/reserved_words_top_level_fields:76:1: Expected ';' after this.
-int for(int x) {
-^^^
-
 parser/error_recovery/reserved_words_top_level_fields:76:5: Expected an identifier, but got 'for'.
 int for(int x) {
     ^^^
@@ -396,14 +236,6 @@
   return for(x-1) + 1;
                   ^
 
-parser/error_recovery/reserved_words_top_level_fields:81:1: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
-int if(int x) {
-^^^
-
-parser/error_recovery/reserved_words_top_level_fields:81:1: Expected ';' after this.
-int if(int x) {
-^^^
-
 parser/error_recovery/reserved_words_top_level_fields:81:5: Expected an identifier, but got 'if'.
 int if(int x) {
     ^^
@@ -420,14 +252,6 @@
   return if(x-1) + 1;
                  ^
 
-parser/error_recovery/reserved_words_top_level_fields:86:1: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
-int in(int x) {
-^^^
-
-parser/error_recovery/reserved_words_top_level_fields:86:1: Expected ';' after this.
-int in(int x) {
-^^^
-
 parser/error_recovery/reserved_words_top_level_fields:86:5: Expected an identifier, but got 'in'.
 int in(int x) {
     ^^
@@ -436,14 +260,6 @@
   return in(x-1) + 1;
          ^^
 
-parser/error_recovery/reserved_words_top_level_fields:91:1: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
-int is(int x) {
-^^^
-
-parser/error_recovery/reserved_words_top_level_fields:91:1: Expected ';' after this.
-int is(int x) {
-^^^
-
 parser/error_recovery/reserved_words_top_level_fields:91:5: Expected an identifier, but got 'is'.
 int is(int x) {
     ^^
@@ -460,14 +276,6 @@
   return is(x-1) + 1;
            ^
 
-parser/error_recovery/reserved_words_top_level_fields:96:1: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
-int new(int x) {
-^^^
-
-parser/error_recovery/reserved_words_top_level_fields:96:1: Expected ';' after this.
-int new(int x) {
-^^^
-
 parser/error_recovery/reserved_words_top_level_fields:96:5: Expected an identifier, but got 'new'.
 int new(int x) {
     ^^^
@@ -476,26 +284,10 @@
   return new(x-1) + 1;
             ^
 
-parser/error_recovery/reserved_words_top_level_fields:101:1: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
-int null(int x) {
-^^^
-
-parser/error_recovery/reserved_words_top_level_fields:101:1: Expected ';' after this.
-int null(int x) {
-^^^
-
 parser/error_recovery/reserved_words_top_level_fields:101:5: Expected an identifier, but got 'null'.
 int null(int x) {
     ^^^^
 
-parser/error_recovery/reserved_words_top_level_fields:106:1: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
-int rethrow(int x) {
-^^^
-
-parser/error_recovery/reserved_words_top_level_fields:106:1: Expected ';' after this.
-int rethrow(int x) {
-^^^
-
 parser/error_recovery/reserved_words_top_level_fields:106:5: Expected an identifier, but got 'rethrow'.
 int rethrow(int x) {
     ^^^^^^^
@@ -504,14 +296,6 @@
   return rethrow(x-1) + 1;
          ^^^^^^^
 
-parser/error_recovery/reserved_words_top_level_fields:111:1: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
-int return(int x) {
-^^^
-
-parser/error_recovery/reserved_words_top_level_fields:111:1: Expected ';' after this.
-int return(int x) {
-^^^
-
 parser/error_recovery/reserved_words_top_level_fields:111:5: Expected an identifier, but got 'return'.
 int return(int x) {
     ^^^^^^
@@ -520,26 +304,10 @@
   return return(x-1) + 1;
          ^^^^^^
 
-parser/error_recovery/reserved_words_top_level_fields:116:1: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
-int super(int x) {
-^^^
-
-parser/error_recovery/reserved_words_top_level_fields:116:1: Expected ';' after this.
-int super(int x) {
-^^^
-
 parser/error_recovery/reserved_words_top_level_fields:116:5: Expected an identifier, but got 'super'.
 int super(int x) {
     ^^^^^
 
-parser/error_recovery/reserved_words_top_level_fields:121:1: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
-int switch(int x) {
-^^^
-
-parser/error_recovery/reserved_words_top_level_fields:121:1: Expected ';' after this.
-int switch(int x) {
-^^^
-
 parser/error_recovery/reserved_words_top_level_fields:121:5: Expected an identifier, but got 'switch'.
 int switch(int x) {
     ^^^^^^
@@ -564,38 +332,14 @@
 int this(int x) {
     ^^^^
 
-parser/error_recovery/reserved_words_top_level_fields:131:1: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
-int throw(int x) {
-^^^
-
-parser/error_recovery/reserved_words_top_level_fields:131:1: Expected ';' after this.
-int throw(int x) {
-^^^
-
 parser/error_recovery/reserved_words_top_level_fields:131:5: Expected an identifier, but got 'throw'.
 int throw(int x) {
     ^^^^^
 
-parser/error_recovery/reserved_words_top_level_fields:136:1: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
-int true(int x) {
-^^^
-
-parser/error_recovery/reserved_words_top_level_fields:136:1: Expected ';' after this.
-int true(int x) {
-^^^
-
 parser/error_recovery/reserved_words_top_level_fields:136:5: Expected an identifier, but got 'true'.
 int true(int x) {
     ^^^^
 
-parser/error_recovery/reserved_words_top_level_fields:141:1: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
-int try(int x) {
-^^^
-
-parser/error_recovery/reserved_words_top_level_fields:141:1: Expected ';' after this.
-int try(int x) {
-^^^
-
 parser/error_recovery/reserved_words_top_level_fields:141:5: Expected an identifier, but got 'try'.
 int try(int x) {
     ^^^
@@ -616,19 +360,7 @@
   return try(x-1) + 1;
          ^^^
 
-parser/error_recovery/reserved_words_top_level_fields:146:1: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
-int var(int x) {
-^^^
-
-parser/error_recovery/reserved_words_top_level_fields:146:1: Expected ';' after this.
-int var(int x) {
-^^^
-
-parser/error_recovery/reserved_words_top_level_fields:146:8: Expected an identifier, but got '('.
-int var(int x) {
-       ^
-
-parser/error_recovery/reserved_words_top_level_fields:146:5: The return type can't be 'var'.
+parser/error_recovery/reserved_words_top_level_fields:146:5: Expected an identifier, but got 'var'.
 int var(int x) {
     ^^^
 
@@ -668,17 +400,9 @@
   return var(x-1) + 1;
                   ^
 
-parser/error_recovery/reserved_words_top_level_fields:151:1: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
+parser/error_recovery/reserved_words_top_level_fields:151:5: Expected an identifier, but got 'void'.
 int void(int x) {
-^^^
-
-parser/error_recovery/reserved_words_top_level_fields:151:1: Expected ';' after this.
-int void(int x) {
-^^^
-
-parser/error_recovery/reserved_words_top_level_fields:151:9: Expected an identifier, but got '('.
-int void(int x) {
-        ^
+    ^^^^
 
 parser/error_recovery/reserved_words_top_level_fields:153:10: Expected an identifier, but got 'void'.
   return void(x-1) + 1;
@@ -716,14 +440,6 @@
   return void(x-1) + 1;
                    ^
 
-parser/error_recovery/reserved_words_top_level_fields:156:1: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
-int while(int x) {
-^^^
-
-parser/error_recovery/reserved_words_top_level_fields:156:1: Expected ';' after this.
-int while(int x) {
-^^^
-
 parser/error_recovery/reserved_words_top_level_fields:156:5: Expected an identifier, but got 'while'.
 int while(int x) {
     ^^^^^
@@ -740,14 +456,6 @@
   return while(x-1) + 1;
                     ^
 
-parser/error_recovery/reserved_words_top_level_fields:161:1: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
-int with(int x) {
-^^^
-
-parser/error_recovery/reserved_words_top_level_fields:161:1: Expected ';' after this.
-int with(int x) {
-^^^
-
 parser/error_recovery/reserved_words_top_level_fields:161:5: Expected an identifier, but got 'with'.
 int with(int x) {
     ^^^^
@@ -760,51 +468,997 @@
   beginMetadataStar(int)
   endMetadataStar(0)
   beginTopLevelMember(int)
-    handleRecoverableError(MissingConstFinalVarOrType, int, int)
-    handleNoType()
-    handleIdentifier(int, topLevelVariableDeclaration)
-    handleNoFieldInitializer(assert)
-    handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
-  endTopLevelFields(null, null, null, null, 1, int, ;)
-endTopLevelDeclaration(assert)
-beginMetadataStar(assert)
-endMetadataStar(0)
-beginTopLevelMember(assert)
-  beginTopLevelMethod(;, null)
-    handleNoType(;)
-    handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'assert'., null, {token: assert}], assert, assert)
-    handleIdentifier(assert, topLevelFunctionDeclaration)
-    handleNoTypeVariables(()
-    beginFormalParameters((, MemberKind.TopLevelMethod)
-      beginMetadataStar(int)
-      endMetadataStar(0)
-      beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
-        handleIdentifier(int, typeReference)
-        handleNoTypeArguments(x)
-        handleType(int, null)
-        handleIdentifier(x, formalParameterDeclaration)
-        handleFormalParameterWithoutValue())
-      endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
-    endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
-    handleAsyncModifier(null, null)
-    beginBlockFunctionBody({)
-      beginIfStatement(if)
+    beginTopLevelMethod(, null)
+      handleIdentifier(int, typeReference)
+      handleNoTypeArguments(assert)
+      handleType(int, null)
+      handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'assert'., null, {token: assert}], assert, assert)
+      handleIdentifier(assert, topLevelFunctionDeclaration)
+      handleNoTypeVariables(()
+      beginFormalParameters((, MemberKind.TopLevelMethod)
+        beginMetadataStar(int)
+        endMetadataStar(0)
+        beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+          handleIdentifier(int, typeReference)
+          handleNoTypeArguments(x)
+          handleType(int, null)
+          handleIdentifier(x, formalParameterDeclaration)
+          handleFormalParameterWithoutValue())
+        endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+      endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
+      handleAsyncModifier(null, null)
+      beginBlockFunctionBody({)
+        beginIfStatement(if)
+          handleIdentifier(x, expression)
+          handleNoTypeArguments(==)
+          handleNoArguments(==)
+          handleSend(x, ==)
+          beginBinaryExpression(==)
+          handleLiteralInt(0)
+          endBinaryExpression(==)
+          handleParenthesizedCondition(()
+          beginThenStatement(return)
+            beginReturnStatement(return)
+              handleLiteralInt(42)
+            endReturnStatement(true, return, ;)
+          endThenStatement(;)
+        endIfStatement(if, null)
+        beginReturnStatement(return)
+          beginAssert(assert, Assert.Expression)
+            handleIdentifier(x, expression)
+            handleNoTypeArguments(-)
+            handleNoArguments(-)
+            handleSend(x, -)
+            beginBinaryExpression(-)
+            handleLiteralInt(1)
+            endBinaryExpression(-)
+            handleRecoverableError(AssertAsExpression, assert, assert)
+          endAssert(assert, Assert.Expression, (, null, +)
+          beginBinaryExpression(+)
+          handleLiteralInt(1)
+          endBinaryExpression(+)
+        endReturnStatement(true, return, ;)
+      endBlockFunctionBody(2, {, })
+    endTopLevelMethod(int, null, })
+  endTopLevelDeclaration(int)
+  beginMetadataStar(int)
+  endMetadataStar(0)
+  beginTopLevelMember(int)
+    beginTopLevelMethod(}, null)
+      handleIdentifier(int, typeReference)
+      handleNoTypeArguments(break)
+      handleType(int, null)
+      handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'break'., null, {token: break}], break, break)
+      handleIdentifier(break, topLevelFunctionDeclaration)
+      handleNoTypeVariables(()
+      beginFormalParameters((, MemberKind.TopLevelMethod)
+        beginMetadataStar(int)
+        endMetadataStar(0)
+        beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+          handleIdentifier(int, typeReference)
+          handleNoTypeArguments(x)
+          handleType(int, null)
+          handleIdentifier(x, formalParameterDeclaration)
+          handleFormalParameterWithoutValue())
+        endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+      endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
+      handleAsyncModifier(null, null)
+      beginBlockFunctionBody({)
+        beginIfStatement(if)
+          handleIdentifier(x, expression)
+          handleNoTypeArguments(==)
+          handleNoArguments(==)
+          handleSend(x, ==)
+          beginBinaryExpression(==)
+          handleLiteralInt(0)
+          endBinaryExpression(==)
+          handleParenthesizedCondition(()
+          beginThenStatement(return)
+            beginReturnStatement(return)
+              handleLiteralInt(42)
+            endReturnStatement(true, return, ;)
+          endThenStatement(;)
+        endIfStatement(if, null)
+        beginReturnStatement(return)
+          handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'break'., null, {token: break}], break, break)
+          handleIdentifier(, expression)
+          handleNoTypeArguments(break)
+          handleNoArguments(break)
+          handleSend(, break)
+          handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], break, break)
+        endReturnStatement(true, return, ;)
+        handleRecoverableError(BreakOutsideOfLoop, break, break)
+        handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], break, break)
+        handleBreakStatement(false, break, ;)
         handleIdentifier(x, expression)
-        handleNoTypeArguments(==)
-        handleNoArguments(==)
-        handleSend(x, ==)
-        beginBinaryExpression(==)
-        handleLiteralInt(0)
-        endBinaryExpression(==)
-        handleParenthesizedCondition(()
-        beginThenStatement(return)
-          beginReturnStatement(return)
-            handleLiteralInt(42)
-          endReturnStatement(true, return, ;)
-        endThenStatement(;)
-      endIfStatement(if, null)
-      beginReturnStatement(return)
-        beginAssert(assert, Assert.Expression)
+        handleNoTypeArguments(-)
+        handleNoArguments(-)
+        handleSend(x, -)
+        beginBinaryExpression(-)
+        handleLiteralInt(1)
+        endBinaryExpression(-)
+        handleParenthesizedExpression(()
+        beginBinaryExpression(+)
+        handleLiteralInt(1)
+        endBinaryExpression(+)
+        handleExpressionStatement(;)
+      endBlockFunctionBody(4, {, })
+    endTopLevelMethod(int, null, })
+  endTopLevelDeclaration(int)
+  beginMetadataStar(int)
+  endMetadataStar(0)
+  beginTopLevelMember(int)
+    beginTopLevelMethod(}, null)
+      handleIdentifier(int, typeReference)
+      handleNoTypeArguments(case)
+      handleType(int, null)
+      handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'case'., null, {token: case}], case, case)
+      handleIdentifier(case, topLevelFunctionDeclaration)
+      handleNoTypeVariables(()
+      beginFormalParameters((, MemberKind.TopLevelMethod)
+        beginMetadataStar(int)
+        endMetadataStar(0)
+        beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+          handleIdentifier(int, typeReference)
+          handleNoTypeArguments(x)
+          handleType(int, null)
+          handleIdentifier(x, formalParameterDeclaration)
+          handleFormalParameterWithoutValue())
+        endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+      endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
+      handleAsyncModifier(null, null)
+      beginBlockFunctionBody({)
+        beginIfStatement(if)
+          handleIdentifier(x, expression)
+          handleNoTypeArguments(==)
+          handleNoArguments(==)
+          handleSend(x, ==)
+          beginBinaryExpression(==)
+          handleLiteralInt(0)
+          endBinaryExpression(==)
+          handleParenthesizedCondition(()
+          beginThenStatement(return)
+            beginReturnStatement(return)
+              handleLiteralInt(42)
+            endReturnStatement(true, return, ;)
+          endThenStatement(;)
+        endIfStatement(if, null)
+        beginReturnStatement(return)
+          handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'case'., null, {token: case}], case, case)
+          handleIdentifier(case, expression)
+          handleNoTypeArguments(()
+          beginArguments(()
+            handleIdentifier(x, expression)
+            handleNoTypeArguments(-)
+            handleNoArguments(-)
+            handleSend(x, -)
+            beginBinaryExpression(-)
+            handleLiteralInt(1)
+            endBinaryExpression(-)
+          endArguments(1, (, ))
+          handleSend(case, +)
+          beginBinaryExpression(+)
+          handleLiteralInt(1)
+          endBinaryExpression(+)
+        endReturnStatement(true, return, ;)
+      endBlockFunctionBody(2, {, })
+    endTopLevelMethod(int, null, })
+  endTopLevelDeclaration(int)
+  beginMetadataStar(int)
+  endMetadataStar(0)
+  beginTopLevelMember(int)
+    beginTopLevelMethod(}, null)
+      handleIdentifier(int, typeReference)
+      handleNoTypeArguments(catch)
+      handleType(int, null)
+      handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'catch'., null, {token: catch}], catch, catch)
+      handleIdentifier(catch, topLevelFunctionDeclaration)
+      handleNoTypeVariables(()
+      beginFormalParameters((, MemberKind.TopLevelMethod)
+        beginMetadataStar(int)
+        endMetadataStar(0)
+        beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+          handleIdentifier(int, typeReference)
+          handleNoTypeArguments(x)
+          handleType(int, null)
+          handleIdentifier(x, formalParameterDeclaration)
+          handleFormalParameterWithoutValue())
+        endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+      endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
+      handleAsyncModifier(null, null)
+      beginBlockFunctionBody({)
+        beginIfStatement(if)
+          handleIdentifier(x, expression)
+          handleNoTypeArguments(==)
+          handleNoArguments(==)
+          handleSend(x, ==)
+          beginBinaryExpression(==)
+          handleLiteralInt(0)
+          endBinaryExpression(==)
+          handleParenthesizedCondition(()
+          beginThenStatement(return)
+            beginReturnStatement(return)
+              handleLiteralInt(42)
+            endReturnStatement(true, return, ;)
+          endThenStatement(;)
+        endIfStatement(if, null)
+        beginReturnStatement(return)
+          handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'catch'., null, {token: catch}], catch, catch)
+          handleIdentifier(catch, expression)
+          handleNoTypeArguments(()
+          beginArguments(()
+            handleIdentifier(x, expression)
+            handleNoTypeArguments(-)
+            handleNoArguments(-)
+            handleSend(x, -)
+            beginBinaryExpression(-)
+            handleLiteralInt(1)
+            endBinaryExpression(-)
+          endArguments(1, (, ))
+          handleSend(catch, +)
+          beginBinaryExpression(+)
+          handleLiteralInt(1)
+          endBinaryExpression(+)
+        endReturnStatement(true, return, ;)
+      endBlockFunctionBody(2, {, })
+    endTopLevelMethod(int, null, })
+  endTopLevelDeclaration(int)
+  beginMetadataStar(int)
+  endMetadataStar(0)
+  beginTopLevelMember(int)
+    beginTopLevelMethod(}, null)
+      handleIdentifier(int, typeReference)
+      handleNoTypeArguments(class)
+      handleType(int, null)
+      handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'class'., null, {token: class}], class, class)
+      handleIdentifier(class, topLevelFunctionDeclaration)
+      handleNoTypeVariables(()
+      beginFormalParameters((, MemberKind.TopLevelMethod)
+        beginMetadataStar(int)
+        endMetadataStar(0)
+        beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+          handleIdentifier(int, typeReference)
+          handleNoTypeArguments(x)
+          handleType(int, null)
+          handleIdentifier(x, formalParameterDeclaration)
+          handleFormalParameterWithoutValue())
+        endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+      endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
+      handleAsyncModifier(null, null)
+      beginBlockFunctionBody({)
+        beginIfStatement(if)
+          handleIdentifier(x, expression)
+          handleNoTypeArguments(==)
+          handleNoArguments(==)
+          handleSend(x, ==)
+          beginBinaryExpression(==)
+          handleLiteralInt(0)
+          endBinaryExpression(==)
+          handleParenthesizedCondition(()
+          beginThenStatement(return)
+            beginReturnStatement(return)
+              handleLiteralInt(42)
+            endReturnStatement(true, return, ;)
+          endThenStatement(;)
+        endIfStatement(if, null)
+        beginReturnStatement(return)
+          handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'class'., null, {token: class}], class, class)
+          handleIdentifier(class, expression)
+          handleNoTypeArguments(()
+          beginArguments(()
+            handleIdentifier(x, expression)
+            handleNoTypeArguments(-)
+            handleNoArguments(-)
+            handleSend(x, -)
+            beginBinaryExpression(-)
+            handleLiteralInt(1)
+            endBinaryExpression(-)
+          endArguments(1, (, ))
+          handleSend(class, +)
+          beginBinaryExpression(+)
+          handleLiteralInt(1)
+          endBinaryExpression(+)
+        endReturnStatement(true, return, ;)
+      endBlockFunctionBody(2, {, })
+    endTopLevelMethod(int, null, })
+  endTopLevelDeclaration(int)
+  beginMetadataStar(int)
+  endMetadataStar(0)
+  beginTopLevelMember(int)
+    beginTopLevelMethod(}, null)
+      handleIdentifier(int, typeReference)
+      handleNoTypeArguments(const)
+      handleType(int, null)
+      handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'const'., null, {token: const}], const, const)
+      handleIdentifier(const, topLevelFunctionDeclaration)
+      handleNoTypeVariables(()
+      beginFormalParameters((, MemberKind.TopLevelMethod)
+        beginMetadataStar(int)
+        endMetadataStar(0)
+        beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+          handleIdentifier(int, typeReference)
+          handleNoTypeArguments(x)
+          handleType(int, null)
+          handleIdentifier(x, formalParameterDeclaration)
+          handleFormalParameterWithoutValue())
+        endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+      endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
+      handleAsyncModifier(null, null)
+      beginBlockFunctionBody({)
+        beginIfStatement(if)
+          handleIdentifier(x, expression)
+          handleNoTypeArguments(==)
+          handleNoArguments(==)
+          handleSend(x, ==)
+          beginBinaryExpression(==)
+          handleLiteralInt(0)
+          endBinaryExpression(==)
+          handleParenthesizedCondition(()
+          beginThenStatement(return)
+            beginReturnStatement(return)
+              handleLiteralInt(42)
+            endReturnStatement(true, return, ;)
+          endThenStatement(;)
+        endIfStatement(if, null)
+        beginReturnStatement(return)
+          beginConstExpression(const)
+            handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}], (, ()
+            handleIdentifier(, constructorReference)
+            beginConstructorReference()
+              handleNoTypeArguments(()
+              handleNoConstructorReferenceContinuationAfterTypeArguments(()
+            endConstructorReference(, null, ()
+            beginArguments(()
+              handleIdentifier(x, expression)
+              handleNoTypeArguments(-)
+              handleNoArguments(-)
+              handleSend(x, -)
+              beginBinaryExpression(-)
+              handleLiteralInt(1)
+              endBinaryExpression(-)
+            endArguments(1, (, ))
+          endConstExpression(const)
+          beginBinaryExpression(+)
+          handleLiteralInt(1)
+          endBinaryExpression(+)
+        endReturnStatement(true, return, ;)
+      endBlockFunctionBody(2, {, })
+    endTopLevelMethod(int, null, })
+  endTopLevelDeclaration(int)
+  beginMetadataStar(int)
+  endMetadataStar(0)
+  beginTopLevelMember(int)
+    beginTopLevelMethod(}, null)
+      handleIdentifier(int, typeReference)
+      handleNoTypeArguments(continue)
+      handleType(int, null)
+      handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'continue'., null, {token: continue}], continue, continue)
+      handleIdentifier(continue, topLevelFunctionDeclaration)
+      handleNoTypeVariables(()
+      beginFormalParameters((, MemberKind.TopLevelMethod)
+        beginMetadataStar(int)
+        endMetadataStar(0)
+        beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+          handleIdentifier(int, typeReference)
+          handleNoTypeArguments(x)
+          handleType(int, null)
+          handleIdentifier(x, formalParameterDeclaration)
+          handleFormalParameterWithoutValue())
+        endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+      endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
+      handleAsyncModifier(null, null)
+      beginBlockFunctionBody({)
+        beginIfStatement(if)
+          handleIdentifier(x, expression)
+          handleNoTypeArguments(==)
+          handleNoArguments(==)
+          handleSend(x, ==)
+          beginBinaryExpression(==)
+          handleLiteralInt(0)
+          endBinaryExpression(==)
+          handleParenthesizedCondition(()
+          beginThenStatement(return)
+            beginReturnStatement(return)
+              handleLiteralInt(42)
+            endReturnStatement(true, return, ;)
+          endThenStatement(;)
+        endIfStatement(if, null)
+        beginReturnStatement(return)
+          handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'continue'., null, {token: continue}], continue, continue)
+          handleIdentifier(, expression)
+          handleNoTypeArguments(continue)
+          handleNoArguments(continue)
+          handleSend(, continue)
+          handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], continue, continue)
+        endReturnStatement(true, return, ;)
+        handleRecoverableError(ContinueOutsideOfLoop, continue, continue)
+        handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], continue, continue)
+        handleContinueStatement(false, continue, ;)
+        handleIdentifier(x, expression)
+        handleNoTypeArguments(-)
+        handleNoArguments(-)
+        handleSend(x, -)
+        beginBinaryExpression(-)
+        handleLiteralInt(1)
+        endBinaryExpression(-)
+        handleParenthesizedExpression(()
+        beginBinaryExpression(+)
+        handleLiteralInt(1)
+        endBinaryExpression(+)
+        handleExpressionStatement(;)
+      endBlockFunctionBody(4, {, })
+    endTopLevelMethod(int, null, })
+  endTopLevelDeclaration(int)
+  beginMetadataStar(int)
+  endMetadataStar(0)
+  beginTopLevelMember(int)
+    beginTopLevelMethod(}, null)
+      handleIdentifier(int, typeReference)
+      handleNoTypeArguments(default)
+      handleType(int, null)
+      handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'default'., null, {token: default}], default, default)
+      handleIdentifier(default, topLevelFunctionDeclaration)
+      handleNoTypeVariables(()
+      beginFormalParameters((, MemberKind.TopLevelMethod)
+        beginMetadataStar(int)
+        endMetadataStar(0)
+        beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+          handleIdentifier(int, typeReference)
+          handleNoTypeArguments(x)
+          handleType(int, null)
+          handleIdentifier(x, formalParameterDeclaration)
+          handleFormalParameterWithoutValue())
+        endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+      endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
+      handleAsyncModifier(null, null)
+      beginBlockFunctionBody({)
+        beginIfStatement(if)
+          handleIdentifier(x, expression)
+          handleNoTypeArguments(==)
+          handleNoArguments(==)
+          handleSend(x, ==)
+          beginBinaryExpression(==)
+          handleLiteralInt(0)
+          endBinaryExpression(==)
+          handleParenthesizedCondition(()
+          beginThenStatement(return)
+            beginReturnStatement(return)
+              handleLiteralInt(42)
+            endReturnStatement(true, return, ;)
+          endThenStatement(;)
+        endIfStatement(if, null)
+        beginReturnStatement(return)
+          handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'default'., null, {token: default}], default, default)
+          handleIdentifier(default, expression)
+          handleNoTypeArguments(()
+          beginArguments(()
+            handleIdentifier(x, expression)
+            handleNoTypeArguments(-)
+            handleNoArguments(-)
+            handleSend(x, -)
+            beginBinaryExpression(-)
+            handleLiteralInt(1)
+            endBinaryExpression(-)
+          endArguments(1, (, ))
+          handleSend(default, +)
+          beginBinaryExpression(+)
+          handleLiteralInt(1)
+          endBinaryExpression(+)
+        endReturnStatement(true, return, ;)
+      endBlockFunctionBody(2, {, })
+    endTopLevelMethod(int, null, })
+  endTopLevelDeclaration(int)
+  beginMetadataStar(int)
+  endMetadataStar(0)
+  beginTopLevelMember(int)
+    beginTopLevelMethod(}, null)
+      handleIdentifier(int, typeReference)
+      handleNoTypeArguments(do)
+      handleType(int, null)
+      handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'do'., null, {token: do}], do, do)
+      handleIdentifier(do, topLevelFunctionDeclaration)
+      handleNoTypeVariables(()
+      beginFormalParameters((, MemberKind.TopLevelMethod)
+        beginMetadataStar(int)
+        endMetadataStar(0)
+        beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+          handleIdentifier(int, typeReference)
+          handleNoTypeArguments(x)
+          handleType(int, null)
+          handleIdentifier(x, formalParameterDeclaration)
+          handleFormalParameterWithoutValue())
+        endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+      endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
+      handleAsyncModifier(null, null)
+      beginBlockFunctionBody({)
+        beginIfStatement(if)
+          handleIdentifier(x, expression)
+          handleNoTypeArguments(==)
+          handleNoArguments(==)
+          handleSend(x, ==)
+          beginBinaryExpression(==)
+          handleLiteralInt(0)
+          endBinaryExpression(==)
+          handleParenthesizedCondition(()
+          beginThenStatement(return)
+            beginReturnStatement(return)
+              handleLiteralInt(42)
+            endReturnStatement(true, return, ;)
+          endThenStatement(;)
+        endIfStatement(if, null)
+        beginReturnStatement(return)
+          handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'do'., null, {token: do}], do, do)
+          handleIdentifier(, expression)
+          handleNoTypeArguments(do)
+          handleNoArguments(do)
+          handleSend(, do)
+          handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], do, do)
+        endReturnStatement(true, return, ;)
+        beginDoWhileStatement(do)
+          beginDoWhileStatementBody(()
+            handleIdentifier(x, expression)
+            handleNoTypeArguments(-)
+            handleNoArguments(-)
+            handleSend(x, -)
+            beginBinaryExpression(-)
+            handleLiteralInt(1)
+            endBinaryExpression(-)
+            handleParenthesizedExpression(()
+            beginBinaryExpression(+)
+            handleLiteralInt(1)
+            endBinaryExpression(+)
+            handleExpressionStatement(;)
+          endDoWhileStatementBody(;)
+          handleRecoverableError(Message[ExpectedButGot, Expected 'while' before this., null, {string: while}], }, })
+          handleRecoverableError(Message[ExpectedToken, Expected to find '('., null, {string: (}], }, })
+          handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '}'., null, {token: }}], }, })
+          handleIdentifier(, expression)
+          handleNoTypeArguments())
+          handleNoArguments())
+          handleSend(, ))
+          handleParenthesizedCondition(()
+          handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], }, })
+        endDoWhileStatement(do, while, ;)
+      endBlockFunctionBody(3, {, })
+    endTopLevelMethod(int, null, })
+  endTopLevelDeclaration(int)
+  beginMetadataStar(int)
+  endMetadataStar(0)
+  beginTopLevelMember(int)
+    beginTopLevelMethod(}, null)
+      handleIdentifier(int, typeReference)
+      handleNoTypeArguments(else)
+      handleType(int, null)
+      handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'else'., null, {token: else}], else, else)
+      handleIdentifier(else, topLevelFunctionDeclaration)
+      handleNoTypeVariables(()
+      beginFormalParameters((, MemberKind.TopLevelMethod)
+        beginMetadataStar(int)
+        endMetadataStar(0)
+        beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+          handleIdentifier(int, typeReference)
+          handleNoTypeArguments(x)
+          handleType(int, null)
+          handleIdentifier(x, formalParameterDeclaration)
+          handleFormalParameterWithoutValue())
+        endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+      endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
+      handleAsyncModifier(null, null)
+      beginBlockFunctionBody({)
+        beginIfStatement(if)
+          handleIdentifier(x, expression)
+          handleNoTypeArguments(==)
+          handleNoArguments(==)
+          handleSend(x, ==)
+          beginBinaryExpression(==)
+          handleLiteralInt(0)
+          endBinaryExpression(==)
+          handleParenthesizedCondition(()
+          beginThenStatement(return)
+            beginReturnStatement(return)
+              handleLiteralInt(42)
+            endReturnStatement(true, return, ;)
+          endThenStatement(;)
+        endIfStatement(if, null)
+        beginReturnStatement(return)
+          handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'else'., null, {token: else}], else, else)
+          handleIdentifier(, expression)
+          handleNoTypeArguments(else)
+          handleNoArguments(else)
+          handleSend(, else)
+          handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], else, else)
+        endReturnStatement(true, return, ;)
+        handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'else'., null, {token: else}], else, else)
+        handleIdentifier(, expression)
+        handleNoTypeArguments(else)
+        handleNoArguments(else)
+        handleSend(, else)
+        handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], else, else)
+        handleExpressionStatement(;)
+        handleRecoverableError(Message[UnexpectedToken, Unexpected token ';'., null, {token: ;}], else, else)
+        handleIdentifier(x, expression)
+        handleNoTypeArguments(-)
+        handleNoArguments(-)
+        handleSend(x, -)
+        beginBinaryExpression(-)
+        handleLiteralInt(1)
+        endBinaryExpression(-)
+        handleParenthesizedExpression(()
+        beginBinaryExpression(+)
+        handleLiteralInt(1)
+        endBinaryExpression(+)
+        handleExpressionStatement(;)
+      endBlockFunctionBody(4, {, })
+    endTopLevelMethod(int, null, })
+  endTopLevelDeclaration(int)
+  beginMetadataStar(int)
+  endMetadataStar(0)
+  beginTopLevelMember(int)
+    beginTopLevelMethod(}, null)
+      handleIdentifier(int, typeReference)
+      handleNoTypeArguments(enum)
+      handleType(int, null)
+      handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'enum'., null, {token: enum}], enum, enum)
+      handleIdentifier(enum, topLevelFunctionDeclaration)
+      handleNoTypeVariables(()
+      beginFormalParameters((, MemberKind.TopLevelMethod)
+        beginMetadataStar(int)
+        endMetadataStar(0)
+        beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+          handleIdentifier(int, typeReference)
+          handleNoTypeArguments(x)
+          handleType(int, null)
+          handleIdentifier(x, formalParameterDeclaration)
+          handleFormalParameterWithoutValue())
+        endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+      endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
+      handleAsyncModifier(null, null)
+      beginBlockFunctionBody({)
+        beginIfStatement(if)
+          handleIdentifier(x, expression)
+          handleNoTypeArguments(==)
+          handleNoArguments(==)
+          handleSend(x, ==)
+          beginBinaryExpression(==)
+          handleLiteralInt(0)
+          endBinaryExpression(==)
+          handleParenthesizedCondition(()
+          beginThenStatement(return)
+            beginReturnStatement(return)
+              handleLiteralInt(42)
+            endReturnStatement(true, return, ;)
+          endThenStatement(;)
+        endIfStatement(if, null)
+        beginReturnStatement(return)
+          handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'enum'., null, {token: enum}], enum, enum)
+          handleIdentifier(enum, expression)
+          handleNoTypeArguments(()
+          beginArguments(()
+            handleIdentifier(x, expression)
+            handleNoTypeArguments(-)
+            handleNoArguments(-)
+            handleSend(x, -)
+            beginBinaryExpression(-)
+            handleLiteralInt(1)
+            endBinaryExpression(-)
+          endArguments(1, (, ))
+          handleSend(enum, +)
+          beginBinaryExpression(+)
+          handleLiteralInt(1)
+          endBinaryExpression(+)
+        endReturnStatement(true, return, ;)
+      endBlockFunctionBody(2, {, })
+    endTopLevelMethod(int, null, })
+  endTopLevelDeclaration(int)
+  beginMetadataStar(int)
+  endMetadataStar(0)
+  beginTopLevelMember(int)
+    beginTopLevelMethod(}, null)
+      handleIdentifier(int, typeReference)
+      handleNoTypeArguments(extends)
+      handleType(int, null)
+      handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'extends'., null, {token: extends}], extends, extends)
+      handleIdentifier(extends, topLevelFunctionDeclaration)
+      handleNoTypeVariables(()
+      beginFormalParameters((, MemberKind.TopLevelMethod)
+        beginMetadataStar(int)
+        endMetadataStar(0)
+        beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+          handleIdentifier(int, typeReference)
+          handleNoTypeArguments(x)
+          handleType(int, null)
+          handleIdentifier(x, formalParameterDeclaration)
+          handleFormalParameterWithoutValue())
+        endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+      endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
+      handleAsyncModifier(null, null)
+      beginBlockFunctionBody({)
+        beginIfStatement(if)
+          handleIdentifier(x, expression)
+          handleNoTypeArguments(==)
+          handleNoArguments(==)
+          handleSend(x, ==)
+          beginBinaryExpression(==)
+          handleLiteralInt(0)
+          endBinaryExpression(==)
+          handleParenthesizedCondition(()
+          beginThenStatement(return)
+            beginReturnStatement(return)
+              handleLiteralInt(42)
+            endReturnStatement(true, return, ;)
+          endThenStatement(;)
+        endIfStatement(if, null)
+        beginReturnStatement(return)
+          handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'extends'., null, {token: extends}], extends, extends)
+          handleIdentifier(extends, expression)
+          handleNoTypeArguments(()
+          beginArguments(()
+            handleIdentifier(x, expression)
+            handleNoTypeArguments(-)
+            handleNoArguments(-)
+            handleSend(x, -)
+            beginBinaryExpression(-)
+            handleLiteralInt(1)
+            endBinaryExpression(-)
+          endArguments(1, (, ))
+          handleSend(extends, +)
+          beginBinaryExpression(+)
+          handleLiteralInt(1)
+          endBinaryExpression(+)
+        endReturnStatement(true, return, ;)
+      endBlockFunctionBody(2, {, })
+    endTopLevelMethod(int, null, })
+  endTopLevelDeclaration(int)
+  beginMetadataStar(int)
+  endMetadataStar(0)
+  beginTopLevelMember(int)
+    beginTopLevelMethod(}, null)
+      handleIdentifier(int, typeReference)
+      handleNoTypeArguments(false)
+      handleType(int, null)
+      handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'false'., null, {token: false}], false, false)
+      handleIdentifier(false, topLevelFunctionDeclaration)
+      handleNoTypeVariables(()
+      beginFormalParameters((, MemberKind.TopLevelMethod)
+        beginMetadataStar(int)
+        endMetadataStar(0)
+        beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+          handleIdentifier(int, typeReference)
+          handleNoTypeArguments(x)
+          handleType(int, null)
+          handleIdentifier(x, formalParameterDeclaration)
+          handleFormalParameterWithoutValue())
+        endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+      endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
+      handleAsyncModifier(null, null)
+      beginBlockFunctionBody({)
+        beginIfStatement(if)
+          handleIdentifier(x, expression)
+          handleNoTypeArguments(==)
+          handleNoArguments(==)
+          handleSend(x, ==)
+          beginBinaryExpression(==)
+          handleLiteralInt(0)
+          endBinaryExpression(==)
+          handleParenthesizedCondition(()
+          beginThenStatement(return)
+            beginReturnStatement(return)
+              handleLiteralInt(42)
+            endReturnStatement(true, return, ;)
+          endThenStatement(;)
+        endIfStatement(if, null)
+        beginReturnStatement(return)
+          handleLiteralBool(false)
+          handleNoTypeArguments(()
+          beginArguments(()
+            handleIdentifier(x, expression)
+            handleNoTypeArguments(-)
+            handleNoArguments(-)
+            handleSend(x, -)
+            beginBinaryExpression(-)
+            handleLiteralInt(1)
+            endBinaryExpression(-)
+          endArguments(1, (, ))
+          handleSend((, ))
+          beginBinaryExpression(+)
+          handleLiteralInt(1)
+          endBinaryExpression(+)
+        endReturnStatement(true, return, ;)
+      endBlockFunctionBody(2, {, })
+    endTopLevelMethod(int, null, })
+  endTopLevelDeclaration(int)
+  beginMetadataStar(int)
+  endMetadataStar(0)
+  beginTopLevelMember(int)
+    beginTopLevelMethod(}, null)
+      handleIdentifier(int, typeReference)
+      handleNoTypeArguments(final)
+      handleType(int, null)
+      handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'final'., null, {token: final}], final, final)
+      handleIdentifier(final, topLevelFunctionDeclaration)
+      handleNoTypeVariables(()
+      beginFormalParameters((, MemberKind.TopLevelMethod)
+        beginMetadataStar(int)
+        endMetadataStar(0)
+        beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+          handleIdentifier(int, typeReference)
+          handleNoTypeArguments(x)
+          handleType(int, null)
+          handleIdentifier(x, formalParameterDeclaration)
+          handleFormalParameterWithoutValue())
+        endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+      endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
+      handleAsyncModifier(null, null)
+      beginBlockFunctionBody({)
+        beginIfStatement(if)
+          handleIdentifier(x, expression)
+          handleNoTypeArguments(==)
+          handleNoArguments(==)
+          handleSend(x, ==)
+          beginBinaryExpression(==)
+          handleLiteralInt(0)
+          endBinaryExpression(==)
+          handleParenthesizedCondition(()
+          beginThenStatement(return)
+            beginReturnStatement(return)
+              handleLiteralInt(42)
+            endReturnStatement(true, return, ;)
+          endThenStatement(;)
+        endIfStatement(if, null)
+        beginReturnStatement(return)
+          handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'final'., null, {token: final}], final, final)
+          handleIdentifier(, expression)
+          handleNoTypeArguments(final)
+          handleNoArguments(final)
+          handleSend(, final)
+          handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], final, final)
+        endReturnStatement(true, return, ;)
+        beginMetadataStar(final)
+        endMetadataStar(0)
+        handleNoType(final)
+        beginVariablesDeclaration((, null, final)
+          handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}], (, ()
+          handleIdentifier(, localVariableDeclaration)
+          beginInitializedIdentifier()
+            handleNoVariableInitializer(x)
+          endInitializedIdentifier()
+          handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], x, x)
+        endVariablesDeclaration(1, ;)
+        handleIdentifier(x, expression)
+        handleNoTypeArguments(-)
+        handleNoArguments(-)
+        handleSend(x, -)
+        beginBinaryExpression(-)
+        handleLiteralInt(1)
+        endBinaryExpression(-)
+        handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], 1, 1)
+        handleExpressionStatement(;)
+        handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got ')'., null, {token: )}], ), ))
+        handleIdentifier(, expression)
+        handleNoTypeArguments())
+        handleNoArguments())
+        handleSend(, ))
+        handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], ), ))
+        handleExpressionStatement(;)
+        handleRecoverableError(Message[UnexpectedToken, Unexpected token ';'., null, {token: ;}], ), ))
+        handleRecoverableError(UnsupportedPrefixPlus, +, +)
+        handleIdentifier(, expression)
+        handleNoTypeArguments(+)
+        handleNoArguments(+)
+        handleSend(, +)
+        beginBinaryExpression(+)
+        handleLiteralInt(1)
+        endBinaryExpression(+)
+        handleExpressionStatement(;)
+      endBlockFunctionBody(6, {, })
+    endTopLevelMethod(int, null, })
+  endTopLevelDeclaration(int)
+  beginMetadataStar(int)
+  endMetadataStar(0)
+  beginTopLevelMember(int)
+    beginTopLevelMethod(}, null)
+      handleIdentifier(int, typeReference)
+      handleNoTypeArguments(finally)
+      handleType(int, null)
+      handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'finally'., null, {token: finally}], finally, finally)
+      handleIdentifier(finally, topLevelFunctionDeclaration)
+      handleNoTypeVariables(()
+      beginFormalParameters((, MemberKind.TopLevelMethod)
+        beginMetadataStar(int)
+        endMetadataStar(0)
+        beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+          handleIdentifier(int, typeReference)
+          handleNoTypeArguments(x)
+          handleType(int, null)
+          handleIdentifier(x, formalParameterDeclaration)
+          handleFormalParameterWithoutValue())
+        endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+      endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
+      handleAsyncModifier(null, null)
+      beginBlockFunctionBody({)
+        beginIfStatement(if)
+          handleIdentifier(x, expression)
+          handleNoTypeArguments(==)
+          handleNoArguments(==)
+          handleSend(x, ==)
+          beginBinaryExpression(==)
+          handleLiteralInt(0)
+          endBinaryExpression(==)
+          handleParenthesizedCondition(()
+          beginThenStatement(return)
+            beginReturnStatement(return)
+              handleLiteralInt(42)
+            endReturnStatement(true, return, ;)
+          endThenStatement(;)
+        endIfStatement(if, null)
+        beginReturnStatement(return)
+          handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'finally'., null, {token: finally}], finally, finally)
+          handleIdentifier(finally, expression)
+          handleNoTypeArguments(()
+          beginArguments(()
+            handleIdentifier(x, expression)
+            handleNoTypeArguments(-)
+            handleNoArguments(-)
+            handleSend(x, -)
+            beginBinaryExpression(-)
+            handleLiteralInt(1)
+            endBinaryExpression(-)
+          endArguments(1, (, ))
+          handleSend(finally, +)
+          beginBinaryExpression(+)
+          handleLiteralInt(1)
+          endBinaryExpression(+)
+        endReturnStatement(true, return, ;)
+      endBlockFunctionBody(2, {, })
+    endTopLevelMethod(int, null, })
+  endTopLevelDeclaration(int)
+  beginMetadataStar(int)
+  endMetadataStar(0)
+  beginTopLevelMember(int)
+    beginTopLevelMethod(}, null)
+      handleIdentifier(int, typeReference)
+      handleNoTypeArguments(for)
+      handleType(int, null)
+      handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'for'., null, {token: for}], for, for)
+      handleIdentifier(for, topLevelFunctionDeclaration)
+      handleNoTypeVariables(()
+      beginFormalParameters((, MemberKind.TopLevelMethod)
+        beginMetadataStar(int)
+        endMetadataStar(0)
+        beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+          handleIdentifier(int, typeReference)
+          handleNoTypeArguments(x)
+          handleType(int, null)
+          handleIdentifier(x, formalParameterDeclaration)
+          handleFormalParameterWithoutValue())
+        endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+      endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
+      handleAsyncModifier(null, null)
+      beginBlockFunctionBody({)
+        beginIfStatement(if)
+          handleIdentifier(x, expression)
+          handleNoTypeArguments(==)
+          handleNoArguments(==)
+          handleSend(x, ==)
+          beginBinaryExpression(==)
+          handleLiteralInt(0)
+          endBinaryExpression(==)
+          handleParenthesizedCondition(()
+          beginThenStatement(return)
+            beginReturnStatement(return)
+              handleLiteralInt(42)
+            endReturnStatement(true, return, ;)
+          endThenStatement(;)
+        endIfStatement(if, null)
+        beginReturnStatement(return)
+          handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'for'., null, {token: for}], for, for)
+          handleIdentifier(, expression)
+          handleNoTypeArguments(for)
+          handleNoArguments(for)
+          handleSend(, for)
+          handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], for, for)
+        endReturnStatement(true, return, ;)
+        beginForStatement(for)
           handleIdentifier(x, expression)
           handleNoTypeArguments(-)
           handleNoArguments(-)
@@ -812,2366 +1466,1129 @@
           beginBinaryExpression(-)
           handleLiteralInt(1)
           endBinaryExpression(-)
-          handleRecoverableError(AssertAsExpression, assert, assert)
-        endAssert(assert, Assert.Expression, (, null, +)
+          handleForInitializerExpressionStatement(1, false)
+          handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], 1, 1)
+          handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got ')'., null, {token: )}], ), ))
+          handleIdentifier(, expression)
+          handleNoTypeArguments())
+          handleNoArguments())
+          handleSend(, ))
+          handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], ), ))
+          handleExpressionStatement(;)
+          handleForLoopParts(for, (, ;, 0)
+          beginForStatementBody(+)
+            handleRecoverableError(UnsupportedPrefixPlus, +, +)
+            handleIdentifier(, expression)
+            handleNoTypeArguments(+)
+            handleNoArguments(+)
+            handleSend(, +)
+            beginBinaryExpression(+)
+            handleLiteralInt(1)
+            endBinaryExpression(+)
+            handleExpressionStatement(;)
+          endForStatementBody(})
+        endForStatement(})
+      endBlockFunctionBody(3, {, })
+    endTopLevelMethod(int, null, })
+  endTopLevelDeclaration(int)
+  beginMetadataStar(int)
+  endMetadataStar(0)
+  beginTopLevelMember(int)
+    beginTopLevelMethod(}, null)
+      handleIdentifier(int, typeReference)
+      handleNoTypeArguments(if)
+      handleType(int, null)
+      handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'if'., null, {token: if}], if, if)
+      handleIdentifier(if, topLevelFunctionDeclaration)
+      handleNoTypeVariables(()
+      beginFormalParameters((, MemberKind.TopLevelMethod)
+        beginMetadataStar(int)
+        endMetadataStar(0)
+        beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+          handleIdentifier(int, typeReference)
+          handleNoTypeArguments(x)
+          handleType(int, null)
+          handleIdentifier(x, formalParameterDeclaration)
+          handleFormalParameterWithoutValue())
+        endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+      endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
+      handleAsyncModifier(null, null)
+      beginBlockFunctionBody({)
+        beginIfStatement(if)
+          handleIdentifier(x, expression)
+          handleNoTypeArguments(==)
+          handleNoArguments(==)
+          handleSend(x, ==)
+          beginBinaryExpression(==)
+          handleLiteralInt(0)
+          endBinaryExpression(==)
+          handleParenthesizedCondition(()
+          beginThenStatement(return)
+            beginReturnStatement(return)
+              handleLiteralInt(42)
+            endReturnStatement(true, return, ;)
+          endThenStatement(;)
+        endIfStatement(if, null)
+        beginReturnStatement(return)
+          handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'if'., null, {token: if}], if, if)
+          handleIdentifier(, expression)
+          handleNoTypeArguments(if)
+          handleNoArguments(if)
+          handleSend(, if)
+          handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], if, if)
+        endReturnStatement(true, return, ;)
+        beginIfStatement(if)
+          handleIdentifier(x, expression)
+          handleNoTypeArguments(-)
+          handleNoArguments(-)
+          handleSend(x, -)
+          beginBinaryExpression(-)
+          handleLiteralInt(1)
+          endBinaryExpression(-)
+          handleParenthesizedCondition(()
+          beginThenStatement(+)
+            handleRecoverableError(UnsupportedPrefixPlus, +, +)
+            handleIdentifier(, expression)
+            handleNoTypeArguments(+)
+            handleNoArguments(+)
+            handleSend(, +)
+            beginBinaryExpression(+)
+            handleLiteralInt(1)
+            endBinaryExpression(+)
+            handleExpressionStatement(;)
+          endThenStatement(;)
+        endIfStatement(if, null)
+      endBlockFunctionBody(3, {, })
+    endTopLevelMethod(int, null, })
+  endTopLevelDeclaration(int)
+  beginMetadataStar(int)
+  endMetadataStar(0)
+  beginTopLevelMember(int)
+    beginTopLevelMethod(}, null)
+      handleIdentifier(int, typeReference)
+      handleNoTypeArguments(in)
+      handleType(int, null)
+      handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'in'., null, {token: in}], in, in)
+      handleIdentifier(in, topLevelFunctionDeclaration)
+      handleNoTypeVariables(()
+      beginFormalParameters((, MemberKind.TopLevelMethod)
+        beginMetadataStar(int)
+        endMetadataStar(0)
+        beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+          handleIdentifier(int, typeReference)
+          handleNoTypeArguments(x)
+          handleType(int, null)
+          handleIdentifier(x, formalParameterDeclaration)
+          handleFormalParameterWithoutValue())
+        endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+      endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
+      handleAsyncModifier(null, null)
+      beginBlockFunctionBody({)
+        beginIfStatement(if)
+          handleIdentifier(x, expression)
+          handleNoTypeArguments(==)
+          handleNoArguments(==)
+          handleSend(x, ==)
+          beginBinaryExpression(==)
+          handleLiteralInt(0)
+          endBinaryExpression(==)
+          handleParenthesizedCondition(()
+          beginThenStatement(return)
+            beginReturnStatement(return)
+              handleLiteralInt(42)
+            endReturnStatement(true, return, ;)
+          endThenStatement(;)
+        endIfStatement(if, null)
+        beginReturnStatement(return)
+          handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'in'., null, {token: in}], in, in)
+          handleIdentifier(in, expression)
+          handleNoTypeArguments(()
+          beginArguments(()
+            handleIdentifier(x, expression)
+            handleNoTypeArguments(-)
+            handleNoArguments(-)
+            handleSend(x, -)
+            beginBinaryExpression(-)
+            handleLiteralInt(1)
+            endBinaryExpression(-)
+          endArguments(1, (, ))
+          handleSend(in, +)
+          beginBinaryExpression(+)
+          handleLiteralInt(1)
+          endBinaryExpression(+)
+        endReturnStatement(true, return, ;)
+      endBlockFunctionBody(2, {, })
+    endTopLevelMethod(int, null, })
+  endTopLevelDeclaration(int)
+  beginMetadataStar(int)
+  endMetadataStar(0)
+  beginTopLevelMember(int)
+    beginTopLevelMethod(}, null)
+      handleIdentifier(int, typeReference)
+      handleNoTypeArguments(is)
+      handleType(int, null)
+      handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'is'., null, {token: is}], is, is)
+      handleIdentifier(is, topLevelFunctionDeclaration)
+      handleNoTypeVariables(()
+      beginFormalParameters((, MemberKind.TopLevelMethod)
+        beginMetadataStar(int)
+        endMetadataStar(0)
+        beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+          handleIdentifier(int, typeReference)
+          handleNoTypeArguments(x)
+          handleType(int, null)
+          handleIdentifier(x, formalParameterDeclaration)
+          handleFormalParameterWithoutValue())
+        endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+      endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
+      handleAsyncModifier(null, null)
+      beginBlockFunctionBody({)
+        beginIfStatement(if)
+          handleIdentifier(x, expression)
+          handleNoTypeArguments(==)
+          handleNoArguments(==)
+          handleSend(x, ==)
+          beginBinaryExpression(==)
+          handleLiteralInt(0)
+          endBinaryExpression(==)
+          handleParenthesizedCondition(()
+          beginThenStatement(return)
+            beginReturnStatement(return)
+              handleLiteralInt(42)
+            endReturnStatement(true, return, ;)
+          endThenStatement(;)
+        endIfStatement(if, null)
+        beginReturnStatement(return)
+          handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'is'., null, {token: is}], is, is)
+          handleIdentifier(, expression)
+          handleNoTypeArguments(is)
+          handleNoArguments(is)
+          handleSend(, is)
+          beginIsOperatorType(is)
+            handleRecoverableError(Message[ExpectedType, Expected a type, but got '('., null, {token: (}], (, ()
+            handleIdentifier(, typeReference)
+            handleNoTypeArguments(()
+            handleType(, null)
+          endIsOperatorType(is)
+          handleIsOperator(is, null)
+          handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], (, ()
+        endReturnStatement(true, return, ;)
+        handleIdentifier(x, expression)
+        handleNoTypeArguments(-)
+        handleNoArguments(-)
+        handleSend(x, -)
+        beginBinaryExpression(-)
+        handleLiteralInt(1)
+        endBinaryExpression(-)
+        handleParenthesizedExpression(()
         beginBinaryExpression(+)
         handleLiteralInt(1)
         endBinaryExpression(+)
-      endReturnStatement(true, return, ;)
-    endBlockFunctionBody(2, {, })
-  endTopLevelMethod(assert, null, })
-endTopLevelDeclaration(int)
-beginMetadataStar(int)
-endMetadataStar(0)
-beginTopLevelMember(int)
-  handleRecoverableError(MissingConstFinalVarOrType, int, int)
-  handleNoType(})
-  handleIdentifier(int, topLevelVariableDeclaration)
-  handleNoFieldInitializer(break)
-  handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
-endTopLevelFields(null, null, null, null, 1, int, ;)
-endTopLevelDeclaration(break)
-beginMetadataStar(break)
-endMetadataStar(0)
-beginTopLevelMember(break)
-beginTopLevelMethod(;, null)
-  handleNoType(;)
-  handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'break'., null, {token: break}], break, break)
-  handleIdentifier(break, topLevelFunctionDeclaration)
-  handleNoTypeVariables(()
-  beginFormalParameters((, MemberKind.TopLevelMethod)
-    beginMetadataStar(int)
-    endMetadataStar(0)
-    beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
-      handleIdentifier(int, typeReference)
-      handleNoTypeArguments(x)
-      handleType(int, null)
-      handleIdentifier(x, formalParameterDeclaration)
-      handleFormalParameterWithoutValue())
-    endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
-  endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
-  handleAsyncModifier(null, null)
-  beginBlockFunctionBody({)
-    beginIfStatement(if)
-      handleIdentifier(x, expression)
-      handleNoTypeArguments(==)
-      handleNoArguments(==)
-      handleSend(x, ==)
-      beginBinaryExpression(==)
-      handleLiteralInt(0)
-      endBinaryExpression(==)
-      handleParenthesizedCondition(()
-      beginThenStatement(return)
-        beginReturnStatement(return)
-          handleLiteralInt(42)
-        endReturnStatement(true, return, ;)
-      endThenStatement(;)
-    endIfStatement(if, null)
-    beginReturnStatement(return)
-      handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'break'., null, {token: break}], break, break)
-      handleIdentifier(, expression)
-      handleNoTypeArguments(break)
-      handleNoArguments(break)
-      handleSend(, break)
-      handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], break, break)
-    endReturnStatement(true, return, ;)
-    handleRecoverableError(BreakOutsideOfLoop, break, break)
-    handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], break, break)
-    handleBreakStatement(false, break, ;)
-    handleIdentifier(x, expression)
-    handleNoTypeArguments(-)
-    handleNoArguments(-)
-    handleSend(x, -)
-    beginBinaryExpression(-)
-    handleLiteralInt(1)
-    endBinaryExpression(-)
-    handleParenthesizedExpression(()
-    beginBinaryExpression(+)
-    handleLiteralInt(1)
-    endBinaryExpression(+)
-    handleExpressionStatement(;)
-  endBlockFunctionBody(4, {, })
-endTopLevelMethod(break, null, })
-endTopLevelDeclaration(int)
-beginMetadataStar(int)
-endMetadataStar(0)
-beginTopLevelMember(int)
-handleRecoverableError(MissingConstFinalVarOrType, int, int)
-handleNoType(})
-handleIdentifier(int, topLevelVariableDeclaration)
-handleNoFieldInitializer(case)
-handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
-endTopLevelFields(null, null, null, null, 1, int, ;)
-endTopLevelDeclaration(case)
-beginMetadataStar(case)
-endMetadataStar(0)
-beginTopLevelMember(case)
-beginTopLevelMethod(;, null)
-handleNoType(;)
-handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'case'., null, {token: case}], case, case)
-handleIdentifier(case, topLevelFunctionDeclaration)
-handleNoTypeVariables(()
-beginFormalParameters((, MemberKind.TopLevelMethod)
+        handleExpressionStatement(;)
+      endBlockFunctionBody(3, {, })
+    endTopLevelMethod(int, null, })
+  endTopLevelDeclaration(int)
   beginMetadataStar(int)
   endMetadataStar(0)
-  beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
-    handleIdentifier(int, typeReference)
-    handleNoTypeArguments(x)
-    handleType(int, null)
-    handleIdentifier(x, formalParameterDeclaration)
-    handleFormalParameterWithoutValue())
-  endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
-endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
-handleAsyncModifier(null, null)
-beginBlockFunctionBody({)
-  beginIfStatement(if)
-    handleIdentifier(x, expression)
-    handleNoTypeArguments(==)
-    handleNoArguments(==)
-    handleSend(x, ==)
-    beginBinaryExpression(==)
-    handleLiteralInt(0)
-    endBinaryExpression(==)
-    handleParenthesizedCondition(()
-    beginThenStatement(return)
-      beginReturnStatement(return)
-        handleLiteralInt(42)
-      endReturnStatement(true, return, ;)
-    endThenStatement(;)
-  endIfStatement(if, null)
-  beginReturnStatement(return)
-    handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'case'., null, {token: case}], case, case)
-    handleIdentifier(case, expression)
-    handleNoTypeArguments(()
-    beginArguments(()
-      handleIdentifier(x, expression)
-      handleNoTypeArguments(-)
-      handleNoArguments(-)
-      handleSend(x, -)
-      beginBinaryExpression(-)
-      handleLiteralInt(1)
-      endBinaryExpression(-)
-    endArguments(1, (, ))
-    handleSend(case, +)
-    beginBinaryExpression(+)
-    handleLiteralInt(1)
-    endBinaryExpression(+)
-  endReturnStatement(true, return, ;)
-endBlockFunctionBody(2, {, })
-endTopLevelMethod(case, null, })
-endTopLevelDeclaration(int)
-beginMetadataStar(int)
-endMetadataStar(0)
-beginTopLevelMember(int)
-handleRecoverableError(MissingConstFinalVarOrType, int, int)
-handleNoType(})
-handleIdentifier(int, topLevelVariableDeclaration)
-handleNoFieldInitializer(catch)
-handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
-endTopLevelFields(null, null, null, null, 1, int, ;)
-endTopLevelDeclaration(catch)
-beginMetadataStar(catch)
-endMetadataStar(0)
-beginTopLevelMember(catch)
-beginTopLevelMethod(;, null)
-handleNoType(;)
-handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'catch'., null, {token: catch}], catch, catch)
-handleIdentifier(catch, topLevelFunctionDeclaration)
-handleNoTypeVariables(()
-beginFormalParameters((, MemberKind.TopLevelMethod)
-beginMetadataStar(int)
-endMetadataStar(0)
-beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
-  handleIdentifier(int, typeReference)
-  handleNoTypeArguments(x)
-  handleType(int, null)
-  handleIdentifier(x, formalParameterDeclaration)
-  handleFormalParameterWithoutValue())
-endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
-endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
-handleAsyncModifier(null, null)
-beginBlockFunctionBody({)
-beginIfStatement(if)
-  handleIdentifier(x, expression)
-  handleNoTypeArguments(==)
-  handleNoArguments(==)
-  handleSend(x, ==)
-  beginBinaryExpression(==)
-  handleLiteralInt(0)
-  endBinaryExpression(==)
-  handleParenthesizedCondition(()
-  beginThenStatement(return)
-    beginReturnStatement(return)
-      handleLiteralInt(42)
-    endReturnStatement(true, return, ;)
-  endThenStatement(;)
-endIfStatement(if, null)
-beginReturnStatement(return)
-  handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'catch'., null, {token: catch}], catch, catch)
-  handleIdentifier(catch, expression)
-  handleNoTypeArguments(()
-  beginArguments(()
-    handleIdentifier(x, expression)
-    handleNoTypeArguments(-)
-    handleNoArguments(-)
-    handleSend(x, -)
-    beginBinaryExpression(-)
-    handleLiteralInt(1)
-    endBinaryExpression(-)
-  endArguments(1, (, ))
-  handleSend(catch, +)
-  beginBinaryExpression(+)
-  handleLiteralInt(1)
-  endBinaryExpression(+)
-endReturnStatement(true, return, ;)
-endBlockFunctionBody(2, {, })
-endTopLevelMethod(catch, null, })
-endTopLevelDeclaration(int)
-beginMetadataStar(int)
-endMetadataStar(0)
-beginTopLevelMember(int)
-handleRecoverableError(MissingConstFinalVarOrType, int, int)
-handleNoType(})
-handleIdentifier(int, topLevelVariableDeclaration)
-handleNoFieldInitializer(class)
-handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
-endTopLevelFields(null, null, null, null, 1, int, ;)
-endTopLevelDeclaration(class)
-beginMetadataStar(class)
-endMetadataStar(0)
-beginClassOrNamedMixinApplicationPrelude(class)
-handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}], (, ()
-handleIdentifier(, classOrMixinDeclaration)
-handleNoTypeVariables(int)
-beginClassDeclaration(class, null, )
-handleNoType()
-handleClassExtends(null)
-handleClassNoWithClause()
-handleClassOrMixinImplements(null, 0)
-handleClassHeader(class, class, null)
-handleNoType()
-handleClassExtends(null)
-handleClassNoWithClause()
-handleClassOrMixinImplements(null, 0)
-handleRecoverClassHeader()
-handleRecoverableError(Message[ExpectedClassOrMixinBody, A class declaration must have a body, even if it is empty., Try adding an empty body., {string: class declaration}], int, int)
-beginClassOrMixinBody(DeclarationKind.Class, {)
-endClassOrMixinBody(DeclarationKind.Class, 0, {, })
-endClassDeclaration(class, })
-endTopLevelDeclaration(int)
-beginMetadataStar(int)
-endMetadataStar(0)
-beginTopLevelMember(int)
-handleIdentifier(int, typeReference)
-handleNoTypeArguments(x)
-handleType(int, null)
-handleIdentifier(x, topLevelVariableDeclaration)
-handleNoFieldInitializer())
-handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], x, x)
-endTopLevelFields(null, null, null, null, 1, int, ;)
-endTopLevelDeclaration())
-beginMetadataStar())
-endMetadataStar(0)
-beginTopLevelMember())
-handleRecoverableError(Message[ExpectedDeclaration, Expected a declaration, but got ')'., null, {token: )}], ), ))
-handleInvalidTopLevelDeclaration())
-endTopLevelDeclaration({)
-beginMetadataStar({)
-endMetadataStar(0)
-beginTopLevelMember({)
-handleRecoverableError(Message[ExpectedDeclaration, Expected a declaration, but got '{'., null, {token: {}], {, {)
-beginBlock({, BlockKind(invalid))
-beginIfStatement(if)
-handleIdentifier(x, expression)
-handleNoTypeArguments(==)
-handleNoArguments(==)
-handleSend(x, ==)
-beginBinaryExpression(==)
-handleLiteralInt(0)
-endBinaryExpression(==)
-handleParenthesizedCondition(()
-beginThenStatement(return)
-beginReturnStatement(return)
-handleLiteralInt(42)
-endReturnStatement(true, return, ;)
-endThenStatement(;)
-endIfStatement(if, null)
-beginReturnStatement(return)
-handleIdentifier(class, expression)
-handleNoTypeArguments(()
-beginArguments(()
-handleIdentifier(x, expression)
-handleNoTypeArguments(-)
-handleNoArguments(-)
-handleSend(x, -)
-beginBinaryExpression(-)
-handleLiteralInt(1)
-endBinaryExpression(-)
-endArguments(1, (, ))
-handleSend(class, +)
-beginBinaryExpression(+)
-handleLiteralInt(1)
-endBinaryExpression(+)
-endReturnStatement(true, return, ;)
-endBlock(2, {, }, BlockKind(invalid))
-handleInvalidTopLevelBlock({)
-handleInvalidTopLevelDeclaration(})
-endTopLevelDeclaration(int)
-beginMetadataStar(int)
-endMetadataStar(0)
-beginTopLevelMember(int)
-handleRecoverableError(MissingConstFinalVarOrType, int, int)
-handleNoType(})
-handleIdentifier(int, topLevelVariableDeclaration)
-handleNoFieldInitializer(const)
-handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
-endTopLevelFields(null, null, null, null, 1, int, ;)
-endTopLevelDeclaration(const)
-beginMetadataStar(const)
-endMetadataStar(0)
-beginTopLevelMember(const)
-handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}], (, ()
-handleRecoverableError(Message[ExtraneousModifier, Can't have modifier 'const' here., Try removing 'const'., {token: const}], const, const)
-beginTopLevelMethod(;, null)
-handleNoType(const)
-handleIdentifier(, topLevelFunctionDeclaration)
-handleNoTypeVariables(()
-beginFormalParameters((, MemberKind.TopLevelMethod)
-beginMetadataStar(int)
-endMetadataStar(0)
-beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
-handleIdentifier(int, typeReference)
-handleNoTypeArguments(x)
-handleType(int, null)
-handleIdentifier(x, formalParameterDeclaration)
-handleFormalParameterWithoutValue())
-endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
-endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
-handleAsyncModifier(null, null)
-beginBlockFunctionBody({)
-beginIfStatement(if)
-handleIdentifier(x, expression)
-handleNoTypeArguments(==)
-handleNoArguments(==)
-handleSend(x, ==)
-beginBinaryExpression(==)
-handleLiteralInt(0)
-endBinaryExpression(==)
-handleParenthesizedCondition(()
-beginThenStatement(return)
-beginReturnStatement(return)
-handleLiteralInt(42)
-endReturnStatement(true, return, ;)
-endThenStatement(;)
-endIfStatement(if, null)
-beginReturnStatement(return)
-beginConstExpression(const)
-handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}], (, ()
-handleIdentifier(, constructorReference)
-beginConstructorReference()
-handleNoTypeArguments(()
-handleNoConstructorReferenceContinuationAfterTypeArguments(()
-endConstructorReference(, null, ()
-beginArguments(()
-handleIdentifier(x, expression)
-handleNoTypeArguments(-)
-handleNoArguments(-)
-handleSend(x, -)
-beginBinaryExpression(-)
-handleLiteralInt(1)
-endBinaryExpression(-)
-endArguments(1, (, ))
-endConstExpression(const)
-beginBinaryExpression(+)
-handleLiteralInt(1)
-endBinaryExpression(+)
-endReturnStatement(true, return, ;)
-endBlockFunctionBody(2, {, })
-endTopLevelMethod(const, null, })
-endTopLevelDeclaration(int)
-beginMetadataStar(int)
-endMetadataStar(0)
-beginTopLevelMember(int)
-handleRecoverableError(MissingConstFinalVarOrType, int, int)
-handleNoType(})
-handleIdentifier(int, topLevelVariableDeclaration)
-handleNoFieldInitializer(continue)
-handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
-endTopLevelFields(null, null, null, null, 1, int, ;)
-endTopLevelDeclaration(continue)
-beginMetadataStar(continue)
-endMetadataStar(0)
-beginTopLevelMember(continue)
-beginTopLevelMethod(;, null)
-handleNoType(;)
-handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'continue'., null, {token: continue}], continue, continue)
-handleIdentifier(continue, topLevelFunctionDeclaration)
-handleNoTypeVariables(()
-beginFormalParameters((, MemberKind.TopLevelMethod)
-beginMetadataStar(int)
-endMetadataStar(0)
-beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
-handleIdentifier(int, typeReference)
-handleNoTypeArguments(x)
-handleType(int, null)
-handleIdentifier(x, formalParameterDeclaration)
-handleFormalParameterWithoutValue())
-endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
-endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
-handleAsyncModifier(null, null)
-beginBlockFunctionBody({)
-beginIfStatement(if)
-handleIdentifier(x, expression)
-handleNoTypeArguments(==)
-handleNoArguments(==)
-handleSend(x, ==)
-beginBinaryExpression(==)
-handleLiteralInt(0)
-endBinaryExpression(==)
-handleParenthesizedCondition(()
-beginThenStatement(return)
-beginReturnStatement(return)
-handleLiteralInt(42)
-endReturnStatement(true, return, ;)
-endThenStatement(;)
-endIfStatement(if, null)
-beginReturnStatement(return)
-handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'continue'., null, {token: continue}], continue, continue)
-handleIdentifier(, expression)
-handleNoTypeArguments(continue)
-handleNoArguments(continue)
-handleSend(, continue)
-handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], continue, continue)
-endReturnStatement(true, return, ;)
-handleRecoverableError(ContinueOutsideOfLoop, continue, continue)
-handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], continue, continue)
-handleContinueStatement(false, continue, ;)
-handleIdentifier(x, expression)
-handleNoTypeArguments(-)
-handleNoArguments(-)
-handleSend(x, -)
-beginBinaryExpression(-)
-handleLiteralInt(1)
-endBinaryExpression(-)
-handleParenthesizedExpression(()
-beginBinaryExpression(+)
-handleLiteralInt(1)
-endBinaryExpression(+)
-handleExpressionStatement(;)
-endBlockFunctionBody(4, {, })
-endTopLevelMethod(continue, null, })
-endTopLevelDeclaration(int)
-beginMetadataStar(int)
-endMetadataStar(0)
-beginTopLevelMember(int)
-handleRecoverableError(MissingConstFinalVarOrType, int, int)
-handleNoType(})
-handleIdentifier(int, topLevelVariableDeclaration)
-handleNoFieldInitializer(default)
-handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
-endTopLevelFields(null, null, null, null, 1, int, ;)
-endTopLevelDeclaration(default)
-beginMetadataStar(default)
-endMetadataStar(0)
-beginTopLevelMember(default)
-beginTopLevelMethod(;, null)
-handleNoType(;)
-handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'default'., null, {token: default}], default, default)
-handleIdentifier(default, topLevelFunctionDeclaration)
-handleNoTypeVariables(()
-beginFormalParameters((, MemberKind.TopLevelMethod)
-beginMetadataStar(int)
-endMetadataStar(0)
-beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
-handleIdentifier(int, typeReference)
-handleNoTypeArguments(x)
-handleType(int, null)
-handleIdentifier(x, formalParameterDeclaration)
-handleFormalParameterWithoutValue())
-endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
-endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
-handleAsyncModifier(null, null)
-beginBlockFunctionBody({)
-beginIfStatement(if)
-handleIdentifier(x, expression)
-handleNoTypeArguments(==)
-handleNoArguments(==)
-handleSend(x, ==)
-beginBinaryExpression(==)
-handleLiteralInt(0)
-endBinaryExpression(==)
-handleParenthesizedCondition(()
-beginThenStatement(return)
-beginReturnStatement(return)
-handleLiteralInt(42)
-endReturnStatement(true, return, ;)
-endThenStatement(;)
-endIfStatement(if, null)
-beginReturnStatement(return)
-handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'default'., null, {token: default}], default, default)
-handleIdentifier(default, expression)
-handleNoTypeArguments(()
-beginArguments(()
-handleIdentifier(x, expression)
-handleNoTypeArguments(-)
-handleNoArguments(-)
-handleSend(x, -)
-beginBinaryExpression(-)
-handleLiteralInt(1)
-endBinaryExpression(-)
-endArguments(1, (, ))
-handleSend(default, +)
-beginBinaryExpression(+)
-handleLiteralInt(1)
-endBinaryExpression(+)
-endReturnStatement(true, return, ;)
-endBlockFunctionBody(2, {, })
-endTopLevelMethod(default, null, })
-endTopLevelDeclaration(int)
-beginMetadataStar(int)
-endMetadataStar(0)
-beginTopLevelMember(int)
-handleRecoverableError(MissingConstFinalVarOrType, int, int)
-handleNoType(})
-handleIdentifier(int, topLevelVariableDeclaration)
-handleNoFieldInitializer(do)
-handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
-endTopLevelFields(null, null, null, null, 1, int, ;)
-endTopLevelDeclaration(do)
-beginMetadataStar(do)
-endMetadataStar(0)
-beginTopLevelMember(do)
-beginTopLevelMethod(;, null)
-handleNoType(;)
-handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'do'., null, {token: do}], do, do)
-handleIdentifier(do, topLevelFunctionDeclaration)
-handleNoTypeVariables(()
-beginFormalParameters((, MemberKind.TopLevelMethod)
-beginMetadataStar(int)
-endMetadataStar(0)
-beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
-handleIdentifier(int, typeReference)
-handleNoTypeArguments(x)
-handleType(int, null)
-handleIdentifier(x, formalParameterDeclaration)
-handleFormalParameterWithoutValue())
-endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
-endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
-handleAsyncModifier(null, null)
-beginBlockFunctionBody({)
-beginIfStatement(if)
-handleIdentifier(x, expression)
-handleNoTypeArguments(==)
-handleNoArguments(==)
-handleSend(x, ==)
-beginBinaryExpression(==)
-handleLiteralInt(0)
-endBinaryExpression(==)
-handleParenthesizedCondition(()
-beginThenStatement(return)
-beginReturnStatement(return)
-handleLiteralInt(42)
-endReturnStatement(true, return, ;)
-endThenStatement(;)
-endIfStatement(if, null)
-beginReturnStatement(return)
-handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'do'., null, {token: do}], do, do)
-handleIdentifier(, expression)
-handleNoTypeArguments(do)
-handleNoArguments(do)
-handleSend(, do)
-handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], do, do)
-endReturnStatement(true, return, ;)
-beginDoWhileStatement(do)
-beginDoWhileStatementBody(()
-handleIdentifier(x, expression)
-handleNoTypeArguments(-)
-handleNoArguments(-)
-handleSend(x, -)
-beginBinaryExpression(-)
-handleLiteralInt(1)
-endBinaryExpression(-)
-handleParenthesizedExpression(()
-beginBinaryExpression(+)
-handleLiteralInt(1)
-endBinaryExpression(+)
-handleExpressionStatement(;)
-endDoWhileStatementBody(;)
-handleRecoverableError(Message[ExpectedButGot, Expected 'while' before this., null, {string: while}], }, })
-handleRecoverableError(Message[ExpectedToken, Expected to find '('., null, {string: (}], }, })
-handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '}'., null, {token: }}], }, })
-handleIdentifier(, expression)
-handleNoTypeArguments())
-handleNoArguments())
-handleSend(, ))
-handleParenthesizedCondition(()
-handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], }, })
-endDoWhileStatement(do, while, ;)
-endBlockFunctionBody(3, {, })
-endTopLevelMethod(do, null, })
-endTopLevelDeclaration(int)
-beginMetadataStar(int)
-endMetadataStar(0)
-beginTopLevelMember(int)
-handleRecoverableError(MissingConstFinalVarOrType, int, int)
-handleNoType(})
-handleIdentifier(int, topLevelVariableDeclaration)
-handleNoFieldInitializer(else)
-handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
-endTopLevelFields(null, null, null, null, 1, int, ;)
-endTopLevelDeclaration(else)
-beginMetadataStar(else)
-endMetadataStar(0)
-beginTopLevelMember(else)
-beginTopLevelMethod(;, null)
-handleNoType(;)
-handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'else'., null, {token: else}], else, else)
-handleIdentifier(else, topLevelFunctionDeclaration)
-handleNoTypeVariables(()
-beginFormalParameters((, MemberKind.TopLevelMethod)
-beginMetadataStar(int)
-endMetadataStar(0)
-beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
-handleIdentifier(int, typeReference)
-handleNoTypeArguments(x)
-handleType(int, null)
-handleIdentifier(x, formalParameterDeclaration)
-handleFormalParameterWithoutValue())
-endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
-endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
-handleAsyncModifier(null, null)
-beginBlockFunctionBody({)
-beginIfStatement(if)
-handleIdentifier(x, expression)
-handleNoTypeArguments(==)
-handleNoArguments(==)
-handleSend(x, ==)
-beginBinaryExpression(==)
-handleLiteralInt(0)
-endBinaryExpression(==)
-handleParenthesizedCondition(()
-beginThenStatement(return)
-beginReturnStatement(return)
-handleLiteralInt(42)
-endReturnStatement(true, return, ;)
-endThenStatement(;)
-endIfStatement(if, null)
-beginReturnStatement(return)
-handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'else'., null, {token: else}], else, else)
-handleIdentifier(, expression)
-handleNoTypeArguments(else)
-handleNoArguments(else)
-handleSend(, else)
-handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], else, else)
-endReturnStatement(true, return, ;)
-handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'else'., null, {token: else}], else, else)
-handleIdentifier(, expression)
-handleNoTypeArguments(else)
-handleNoArguments(else)
-handleSend(, else)
-handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], else, else)
-handleExpressionStatement(;)
-handleRecoverableError(Message[UnexpectedToken, Unexpected token ';'., null, {token: ;}], else, else)
-handleIdentifier(x, expression)
-handleNoTypeArguments(-)
-handleNoArguments(-)
-handleSend(x, -)
-beginBinaryExpression(-)
-handleLiteralInt(1)
-endBinaryExpression(-)
-handleParenthesizedExpression(()
-beginBinaryExpression(+)
-handleLiteralInt(1)
-endBinaryExpression(+)
-handleExpressionStatement(;)
-endBlockFunctionBody(4, {, })
-endTopLevelMethod(else, null, })
-endTopLevelDeclaration(int)
-beginMetadataStar(int)
-endMetadataStar(0)
-beginTopLevelMember(int)
-handleRecoverableError(MissingConstFinalVarOrType, int, int)
-handleNoType(})
-handleIdentifier(int, topLevelVariableDeclaration)
-handleNoFieldInitializer(enum)
-handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
-endTopLevelFields(null, null, null, null, 1, int, ;)
-endTopLevelDeclaration(enum)
-beginMetadataStar(enum)
-endMetadataStar(0)
-beginEnum(enum)
-handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}], (, ()
-handleIdentifier(, enumDeclaration)
-handleRecoverableError(Message[ExpectedEnumBody, Expected a enum body, but got 'int'., An enum definition must have a body with at least one constant name., {token: int}], int, int)
-endEnum(enum, {, 0)
-endTopLevelDeclaration(int)
-beginMetadataStar(int)
-endMetadataStar(0)
-beginTopLevelMember(int)
-handleIdentifier(int, typeReference)
-handleNoTypeArguments(x)
-handleType(int, null)
-handleIdentifier(x, topLevelVariableDeclaration)
-handleNoFieldInitializer())
-handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], x, x)
-endTopLevelFields(null, null, null, null, 1, int, ;)
-endTopLevelDeclaration())
-beginMetadataStar())
-endMetadataStar(0)
-beginTopLevelMember())
-handleRecoverableError(Message[ExpectedDeclaration, Expected a declaration, but got ')'., null, {token: )}], ), ))
-handleInvalidTopLevelDeclaration())
-endTopLevelDeclaration({)
-beginMetadataStar({)
-endMetadataStar(0)
-beginTopLevelMember({)
-handleRecoverableError(Message[ExpectedDeclaration, Expected a declaration, but got '{'., null, {token: {}], {, {)
-beginBlock({, BlockKind(invalid))
-beginIfStatement(if)
-handleIdentifier(x, expression)
-handleNoTypeArguments(==)
-handleNoArguments(==)
-handleSend(x, ==)
-beginBinaryExpression(==)
-handleLiteralInt(0)
-endBinaryExpression(==)
-handleParenthesizedCondition(()
-beginThenStatement(return)
-beginReturnStatement(return)
-handleLiteralInt(42)
-endReturnStatement(true, return, ;)
-endThenStatement(;)
-endIfStatement(if, null)
-beginReturnStatement(return)
-handleIdentifier(enum, expression)
-handleNoTypeArguments(()
-beginArguments(()
-handleIdentifier(x, expression)
-handleNoTypeArguments(-)
-handleNoArguments(-)
-handleSend(x, -)
-beginBinaryExpression(-)
-handleLiteralInt(1)
-endBinaryExpression(-)
-endArguments(1, (, ))
-handleSend(enum, +)
-beginBinaryExpression(+)
-handleLiteralInt(1)
-endBinaryExpression(+)
-endReturnStatement(true, return, ;)
-endBlock(2, {, }, BlockKind(invalid))
-handleInvalidTopLevelBlock({)
-handleInvalidTopLevelDeclaration(})
-endTopLevelDeclaration(int)
-beginMetadataStar(int)
-endMetadataStar(0)
-beginTopLevelMember(int)
-handleRecoverableError(MissingConstFinalVarOrType, int, int)
-handleNoType(})
-handleIdentifier(int, topLevelVariableDeclaration)
-handleNoFieldInitializer(extends)
-handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
-endTopLevelFields(null, null, null, null, 1, int, ;)
-endTopLevelDeclaration(extends)
-beginMetadataStar(extends)
-endMetadataStar(0)
-beginTopLevelMember(extends)
-beginTopLevelMethod(;, null)
-handleNoType(;)
-handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'extends'., null, {token: extends}], extends, extends)
-handleIdentifier(extends, topLevelFunctionDeclaration)
-handleNoTypeVariables(()
-beginFormalParameters((, MemberKind.TopLevelMethod)
-beginMetadataStar(int)
-endMetadataStar(0)
-beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
-handleIdentifier(int, typeReference)
-handleNoTypeArguments(x)
-handleType(int, null)
-handleIdentifier(x, formalParameterDeclaration)
-handleFormalParameterWithoutValue())
-endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
-endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
-handleAsyncModifier(null, null)
-beginBlockFunctionBody({)
-beginIfStatement(if)
-handleIdentifier(x, expression)
-handleNoTypeArguments(==)
-handleNoArguments(==)
-handleSend(x, ==)
-beginBinaryExpression(==)
-handleLiteralInt(0)
-endBinaryExpression(==)
-handleParenthesizedCondition(()
-beginThenStatement(return)
-beginReturnStatement(return)
-handleLiteralInt(42)
-endReturnStatement(true, return, ;)
-endThenStatement(;)
-endIfStatement(if, null)
-beginReturnStatement(return)
-handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'extends'., null, {token: extends}], extends, extends)
-handleIdentifier(extends, expression)
-handleNoTypeArguments(()
-beginArguments(()
-handleIdentifier(x, expression)
-handleNoTypeArguments(-)
-handleNoArguments(-)
-handleSend(x, -)
-beginBinaryExpression(-)
-handleLiteralInt(1)
-endBinaryExpression(-)
-endArguments(1, (, ))
-handleSend(extends, +)
-beginBinaryExpression(+)
-handleLiteralInt(1)
-endBinaryExpression(+)
-endReturnStatement(true, return, ;)
-endBlockFunctionBody(2, {, })
-endTopLevelMethod(extends, null, })
-endTopLevelDeclaration(int)
-beginMetadataStar(int)
-endMetadataStar(0)
-beginTopLevelMember(int)
-handleRecoverableError(MissingConstFinalVarOrType, int, int)
-handleNoType(})
-handleIdentifier(int, topLevelVariableDeclaration)
-handleNoFieldInitializer(false)
-handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
-endTopLevelFields(null, null, null, null, 1, int, ;)
-endTopLevelDeclaration(false)
-beginMetadataStar(false)
-endMetadataStar(0)
-beginTopLevelMember(false)
-beginTopLevelMethod(;, null)
-handleNoType(;)
-handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'false'., null, {token: false}], false, false)
-handleIdentifier(false, topLevelFunctionDeclaration)
-handleNoTypeVariables(()
-beginFormalParameters((, MemberKind.TopLevelMethod)
-beginMetadataStar(int)
-endMetadataStar(0)
-beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
-handleIdentifier(int, typeReference)
-handleNoTypeArguments(x)
-handleType(int, null)
-handleIdentifier(x, formalParameterDeclaration)
-handleFormalParameterWithoutValue())
-endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
-endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
-handleAsyncModifier(null, null)
-beginBlockFunctionBody({)
-beginIfStatement(if)
-handleIdentifier(x, expression)
-handleNoTypeArguments(==)
-handleNoArguments(==)
-handleSend(x, ==)
-beginBinaryExpression(==)
-handleLiteralInt(0)
-endBinaryExpression(==)
-handleParenthesizedCondition(()
-beginThenStatement(return)
-beginReturnStatement(return)
-handleLiteralInt(42)
-endReturnStatement(true, return, ;)
-endThenStatement(;)
-endIfStatement(if, null)
-beginReturnStatement(return)
-handleLiteralBool(false)
-handleNoTypeArguments(()
-beginArguments(()
-handleIdentifier(x, expression)
-handleNoTypeArguments(-)
-handleNoArguments(-)
-handleSend(x, -)
-beginBinaryExpression(-)
-handleLiteralInt(1)
-endBinaryExpression(-)
-endArguments(1, (, ))
-handleSend((, ))
-beginBinaryExpression(+)
-handleLiteralInt(1)
-endBinaryExpression(+)
-endReturnStatement(true, return, ;)
-endBlockFunctionBody(2, {, })
-endTopLevelMethod(false, null, })
-endTopLevelDeclaration(int)
-beginMetadataStar(int)
-endMetadataStar(0)
-beginTopLevelMember(int)
-handleRecoverableError(MissingConstFinalVarOrType, int, int)
-handleNoType(})
-handleIdentifier(int, topLevelVariableDeclaration)
-handleNoFieldInitializer(final)
-handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
-endTopLevelFields(null, null, null, null, 1, int, ;)
-endTopLevelDeclaration(final)
-beginMetadataStar(final)
-endMetadataStar(0)
-beginTopLevelMember(final)
-handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}], (, ()
-handleRecoverableError(Message[ExtraneousModifier, Can't have modifier 'final' here., Try removing 'final'., {token: final}], final, final)
-beginTopLevelMethod(;, null)
-handleNoType(final)
-handleIdentifier(, topLevelFunctionDeclaration)
-handleNoTypeVariables(()
-beginFormalParameters((, MemberKind.TopLevelMethod)
-beginMetadataStar(int)
-endMetadataStar(0)
-beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
-handleIdentifier(int, typeReference)
-handleNoTypeArguments(x)
-handleType(int, null)
-handleIdentifier(x, formalParameterDeclaration)
-handleFormalParameterWithoutValue())
-endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
-endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
-handleAsyncModifier(null, null)
-beginBlockFunctionBody({)
-beginIfStatement(if)
-handleIdentifier(x, expression)
-handleNoTypeArguments(==)
-handleNoArguments(==)
-handleSend(x, ==)
-beginBinaryExpression(==)
-handleLiteralInt(0)
-endBinaryExpression(==)
-handleParenthesizedCondition(()
-beginThenStatement(return)
-beginReturnStatement(return)
-handleLiteralInt(42)
-endReturnStatement(true, return, ;)
-endThenStatement(;)
-endIfStatement(if, null)
-beginReturnStatement(return)
-handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'final'., null, {token: final}], final, final)
-handleIdentifier(, expression)
-handleNoTypeArguments(final)
-handleNoArguments(final)
-handleSend(, final)
-handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], final, final)
-endReturnStatement(true, return, ;)
-beginMetadataStar(final)
-endMetadataStar(0)
-handleNoType(final)
-beginVariablesDeclaration((, null, final)
-handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}], (, ()
-handleIdentifier(, localVariableDeclaration)
-beginInitializedIdentifier()
-handleNoVariableInitializer(x)
-endInitializedIdentifier()
-handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], x, x)
-endVariablesDeclaration(1, ;)
-handleIdentifier(x, expression)
-handleNoTypeArguments(-)
-handleNoArguments(-)
-handleSend(x, -)
-beginBinaryExpression(-)
-handleLiteralInt(1)
-endBinaryExpression(-)
-handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], 1, 1)
-handleExpressionStatement(;)
-handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got ')'., null, {token: )}], ), ))
-handleIdentifier(, expression)
-handleNoTypeArguments())
-handleNoArguments())
-handleSend(, ))
-handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], ), ))
-handleExpressionStatement(;)
-handleRecoverableError(Message[UnexpectedToken, Unexpected token ';'., null, {token: ;}], ), ))
-handleRecoverableError(UnsupportedPrefixPlus, +, +)
-handleIdentifier(, expression)
-handleNoTypeArguments(+)
-handleNoArguments(+)
-handleSend(, +)
-beginBinaryExpression(+)
-handleLiteralInt(1)
-endBinaryExpression(+)
-handleExpressionStatement(;)
-endBlockFunctionBody(6, {, })
-endTopLevelMethod(final, null, })
-endTopLevelDeclaration(int)
-beginMetadataStar(int)
-endMetadataStar(0)
-beginTopLevelMember(int)
-handleRecoverableError(MissingConstFinalVarOrType, int, int)
-handleNoType(})
-handleIdentifier(int, topLevelVariableDeclaration)
-handleNoFieldInitializer(finally)
-handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
-endTopLevelFields(null, null, null, null, 1, int, ;)
-endTopLevelDeclaration(finally)
-beginMetadataStar(finally)
-endMetadataStar(0)
-beginTopLevelMember(finally)
-beginTopLevelMethod(;, null)
-handleNoType(;)
-handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'finally'., null, {token: finally}], finally, finally)
-handleIdentifier(finally, topLevelFunctionDeclaration)
-handleNoTypeVariables(()
-beginFormalParameters((, MemberKind.TopLevelMethod)
-beginMetadataStar(int)
-endMetadataStar(0)
-beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
-handleIdentifier(int, typeReference)
-handleNoTypeArguments(x)
-handleType(int, null)
-handleIdentifier(x, formalParameterDeclaration)
-handleFormalParameterWithoutValue())
-endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
-endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
-handleAsyncModifier(null, null)
-beginBlockFunctionBody({)
-beginIfStatement(if)
-handleIdentifier(x, expression)
-handleNoTypeArguments(==)
-handleNoArguments(==)
-handleSend(x, ==)
-beginBinaryExpression(==)
-handleLiteralInt(0)
-endBinaryExpression(==)
-handleParenthesizedCondition(()
-beginThenStatement(return)
-beginReturnStatement(return)
-handleLiteralInt(42)
-endReturnStatement(true, return, ;)
-endThenStatement(;)
-endIfStatement(if, null)
-beginReturnStatement(return)
-handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'finally'., null, {token: finally}], finally, finally)
-handleIdentifier(finally, expression)
-handleNoTypeArguments(()
-beginArguments(()
-handleIdentifier(x, expression)
-handleNoTypeArguments(-)
-handleNoArguments(-)
-handleSend(x, -)
-beginBinaryExpression(-)
-handleLiteralInt(1)
-endBinaryExpression(-)
-endArguments(1, (, ))
-handleSend(finally, +)
-beginBinaryExpression(+)
-handleLiteralInt(1)
-endBinaryExpression(+)
-endReturnStatement(true, return, ;)
-endBlockFunctionBody(2, {, })
-endTopLevelMethod(finally, null, })
-endTopLevelDeclaration(int)
-beginMetadataStar(int)
-endMetadataStar(0)
-beginTopLevelMember(int)
-handleRecoverableError(MissingConstFinalVarOrType, int, int)
-handleNoType(})
-handleIdentifier(int, topLevelVariableDeclaration)
-handleNoFieldInitializer(for)
-handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
-endTopLevelFields(null, null, null, null, 1, int, ;)
-endTopLevelDeclaration(for)
-beginMetadataStar(for)
-endMetadataStar(0)
-beginTopLevelMember(for)
-beginTopLevelMethod(;, null)
-handleNoType(;)
-handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'for'., null, {token: for}], for, for)
-handleIdentifier(for, topLevelFunctionDeclaration)
-handleNoTypeVariables(()
-beginFormalParameters((, MemberKind.TopLevelMethod)
-beginMetadataStar(int)
-endMetadataStar(0)
-beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
-handleIdentifier(int, typeReference)
-handleNoTypeArguments(x)
-handleType(int, null)
-handleIdentifier(x, formalParameterDeclaration)
-handleFormalParameterWithoutValue())
-endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
-endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
-handleAsyncModifier(null, null)
-beginBlockFunctionBody({)
-beginIfStatement(if)
-handleIdentifier(x, expression)
-handleNoTypeArguments(==)
-handleNoArguments(==)
-handleSend(x, ==)
-beginBinaryExpression(==)
-handleLiteralInt(0)
-endBinaryExpression(==)
-handleParenthesizedCondition(()
-beginThenStatement(return)
-beginReturnStatement(return)
-handleLiteralInt(42)
-endReturnStatement(true, return, ;)
-endThenStatement(;)
-endIfStatement(if, null)
-beginReturnStatement(return)
-handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'for'., null, {token: for}], for, for)
-handleIdentifier(, expression)
-handleNoTypeArguments(for)
-handleNoArguments(for)
-handleSend(, for)
-handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], for, for)
-endReturnStatement(true, return, ;)
-beginForStatement(for)
-handleIdentifier(x, expression)
-handleNoTypeArguments(-)
-handleNoArguments(-)
-handleSend(x, -)
-beginBinaryExpression(-)
-handleLiteralInt(1)
-endBinaryExpression(-)
-handleForInitializerExpressionStatement(1, false)
-handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], 1, 1)
-handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got ')'., null, {token: )}], ), ))
-handleIdentifier(, expression)
-handleNoTypeArguments())
-handleNoArguments())
-handleSend(, ))
-handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], ), ))
-handleExpressionStatement(;)
-handleForLoopParts(for, (, ;, 0)
-beginForStatementBody(+)
-handleRecoverableError(UnsupportedPrefixPlus, +, +)
-handleIdentifier(, expression)
-handleNoTypeArguments(+)
-handleNoArguments(+)
-handleSend(, +)
-beginBinaryExpression(+)
-handleLiteralInt(1)
-endBinaryExpression(+)
-handleExpressionStatement(;)
-endForStatementBody(})
-endForStatement(})
-endBlockFunctionBody(3, {, })
-endTopLevelMethod(for, null, })
-endTopLevelDeclaration(int)
-beginMetadataStar(int)
-endMetadataStar(0)
-beginTopLevelMember(int)
-handleRecoverableError(MissingConstFinalVarOrType, int, int)
-handleNoType(})
-handleIdentifier(int, topLevelVariableDeclaration)
-handleNoFieldInitializer(if)
-handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
-endTopLevelFields(null, null, null, null, 1, int, ;)
-endTopLevelDeclaration(if)
-beginMetadataStar(if)
-endMetadataStar(0)
-beginTopLevelMember(if)
-beginTopLevelMethod(;, null)
-handleNoType(;)
-handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'if'., null, {token: if}], if, if)
-handleIdentifier(if, topLevelFunctionDeclaration)
-handleNoTypeVariables(()
-beginFormalParameters((, MemberKind.TopLevelMethod)
-beginMetadataStar(int)
-endMetadataStar(0)
-beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
-handleIdentifier(int, typeReference)
-handleNoTypeArguments(x)
-handleType(int, null)
-handleIdentifier(x, formalParameterDeclaration)
-handleFormalParameterWithoutValue())
-endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
-endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
-handleAsyncModifier(null, null)
-beginBlockFunctionBody({)
-beginIfStatement(if)
-handleIdentifier(x, expression)
-handleNoTypeArguments(==)
-handleNoArguments(==)
-handleSend(x, ==)
-beginBinaryExpression(==)
-handleLiteralInt(0)
-endBinaryExpression(==)
-handleParenthesizedCondition(()
-beginThenStatement(return)
-beginReturnStatement(return)
-handleLiteralInt(42)
-endReturnStatement(true, return, ;)
-endThenStatement(;)
-endIfStatement(if, null)
-beginReturnStatement(return)
-handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'if'., null, {token: if}], if, if)
-handleIdentifier(, expression)
-handleNoTypeArguments(if)
-handleNoArguments(if)
-handleSend(, if)
-handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], if, if)
-endReturnStatement(true, return, ;)
-beginIfStatement(if)
-handleIdentifier(x, expression)
-handleNoTypeArguments(-)
-handleNoArguments(-)
-handleSend(x, -)
-beginBinaryExpression(-)
-handleLiteralInt(1)
-endBinaryExpression(-)
-handleParenthesizedCondition(()
-beginThenStatement(+)
-handleRecoverableError(UnsupportedPrefixPlus, +, +)
-handleIdentifier(, expression)
-handleNoTypeArguments(+)
-handleNoArguments(+)
-handleSend(, +)
-beginBinaryExpression(+)
-handleLiteralInt(1)
-endBinaryExpression(+)
-handleExpressionStatement(;)
-endThenStatement(;)
-endIfStatement(if, null)
-endBlockFunctionBody(3, {, })
-endTopLevelMethod(if, null, })
-endTopLevelDeclaration(int)
-beginMetadataStar(int)
-endMetadataStar(0)
-beginTopLevelMember(int)
-handleRecoverableError(MissingConstFinalVarOrType, int, int)
-handleNoType(})
-handleIdentifier(int, topLevelVariableDeclaration)
-handleNoFieldInitializer(in)
-handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
-endTopLevelFields(null, null, null, null, 1, int, ;)
-endTopLevelDeclaration(in)
-beginMetadataStar(in)
-endMetadataStar(0)
-beginTopLevelMember(in)
-beginTopLevelMethod(;, null)
-handleNoType(;)
-handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'in'., null, {token: in}], in, in)
-handleIdentifier(in, topLevelFunctionDeclaration)
-handleNoTypeVariables(()
-beginFormalParameters((, MemberKind.TopLevelMethod)
-beginMetadataStar(int)
-endMetadataStar(0)
-beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
-handleIdentifier(int, typeReference)
-handleNoTypeArguments(x)
-handleType(int, null)
-handleIdentifier(x, formalParameterDeclaration)
-handleFormalParameterWithoutValue())
-endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
-endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
-handleAsyncModifier(null, null)
-beginBlockFunctionBody({)
-beginIfStatement(if)
-handleIdentifier(x, expression)
-handleNoTypeArguments(==)
-handleNoArguments(==)
-handleSend(x, ==)
-beginBinaryExpression(==)
-handleLiteralInt(0)
-endBinaryExpression(==)
-handleParenthesizedCondition(()
-beginThenStatement(return)
-beginReturnStatement(return)
-handleLiteralInt(42)
-endReturnStatement(true, return, ;)
-endThenStatement(;)
-endIfStatement(if, null)
-beginReturnStatement(return)
-handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'in'., null, {token: in}], in, in)
-handleIdentifier(in, expression)
-handleNoTypeArguments(()
-beginArguments(()
-handleIdentifier(x, expression)
-handleNoTypeArguments(-)
-handleNoArguments(-)
-handleSend(x, -)
-beginBinaryExpression(-)
-handleLiteralInt(1)
-endBinaryExpression(-)
-endArguments(1, (, ))
-handleSend(in, +)
-beginBinaryExpression(+)
-handleLiteralInt(1)
-endBinaryExpression(+)
-endReturnStatement(true, return, ;)
-endBlockFunctionBody(2, {, })
-endTopLevelMethod(in, null, })
-endTopLevelDeclaration(int)
-beginMetadataStar(int)
-endMetadataStar(0)
-beginTopLevelMember(int)
-handleRecoverableError(MissingConstFinalVarOrType, int, int)
-handleNoType(})
-handleIdentifier(int, topLevelVariableDeclaration)
-handleNoFieldInitializer(is)
-handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
-endTopLevelFields(null, null, null, null, 1, int, ;)
-endTopLevelDeclaration(is)
-beginMetadataStar(is)
-endMetadataStar(0)
-beginTopLevelMember(is)
-beginTopLevelMethod(;, null)
-handleNoType(;)
-handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'is'., null, {token: is}], is, is)
-handleIdentifier(is, topLevelFunctionDeclaration)
-handleNoTypeVariables(()
-beginFormalParameters((, MemberKind.TopLevelMethod)
-beginMetadataStar(int)
-endMetadataStar(0)
-beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
-handleIdentifier(int, typeReference)
-handleNoTypeArguments(x)
-handleType(int, null)
-handleIdentifier(x, formalParameterDeclaration)
-handleFormalParameterWithoutValue())
-endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
-endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
-handleAsyncModifier(null, null)
-beginBlockFunctionBody({)
-beginIfStatement(if)
-handleIdentifier(x, expression)
-handleNoTypeArguments(==)
-handleNoArguments(==)
-handleSend(x, ==)
-beginBinaryExpression(==)
-handleLiteralInt(0)
-endBinaryExpression(==)
-handleParenthesizedCondition(()
-beginThenStatement(return)
-beginReturnStatement(return)
-handleLiteralInt(42)
-endReturnStatement(true, return, ;)
-endThenStatement(;)
-endIfStatement(if, null)
-beginReturnStatement(return)
-handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'is'., null, {token: is}], is, is)
-handleIdentifier(, expression)
-handleNoTypeArguments(is)
-handleNoArguments(is)
-handleSend(, is)
-beginIsOperatorType(is)
-handleRecoverableError(Message[ExpectedType, Expected a type, but got '('., null, {token: (}], (, ()
-handleIdentifier(, typeReference)
-handleNoTypeArguments(()
-handleType(, null)
-endIsOperatorType(is)
-handleIsOperator(is, null)
-handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], (, ()
-endReturnStatement(true, return, ;)
-handleIdentifier(x, expression)
-handleNoTypeArguments(-)
-handleNoArguments(-)
-handleSend(x, -)
-beginBinaryExpression(-)
-handleLiteralInt(1)
-endBinaryExpression(-)
-handleParenthesizedExpression(()
-beginBinaryExpression(+)
-handleLiteralInt(1)
-endBinaryExpression(+)
-handleExpressionStatement(;)
-endBlockFunctionBody(3, {, })
-endTopLevelMethod(is, null, })
-endTopLevelDeclaration(int)
-beginMetadataStar(int)
-endMetadataStar(0)
-beginTopLevelMember(int)
-handleRecoverableError(MissingConstFinalVarOrType, int, int)
-handleNoType(})
-handleIdentifier(int, topLevelVariableDeclaration)
-handleNoFieldInitializer(new)
-handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
-endTopLevelFields(null, null, null, null, 1, int, ;)
-endTopLevelDeclaration(new)
-beginMetadataStar(new)
-endMetadataStar(0)
-beginTopLevelMember(new)
-beginTopLevelMethod(;, null)
-handleNoType(;)
-handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'new'., null, {token: new}], new, new)
-handleIdentifier(new, topLevelFunctionDeclaration)
-handleNoTypeVariables(()
-beginFormalParameters((, MemberKind.TopLevelMethod)
-beginMetadataStar(int)
-endMetadataStar(0)
-beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
-handleIdentifier(int, typeReference)
-handleNoTypeArguments(x)
-handleType(int, null)
-handleIdentifier(x, formalParameterDeclaration)
-handleFormalParameterWithoutValue())
-endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
-endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
-handleAsyncModifier(null, null)
-beginBlockFunctionBody({)
-beginIfStatement(if)
-handleIdentifier(x, expression)
-handleNoTypeArguments(==)
-handleNoArguments(==)
-handleSend(x, ==)
-beginBinaryExpression(==)
-handleLiteralInt(0)
-endBinaryExpression(==)
-handleParenthesizedCondition(()
-beginThenStatement(return)
-beginReturnStatement(return)
-handleLiteralInt(42)
-endReturnStatement(true, return, ;)
-endThenStatement(;)
-endIfStatement(if, null)
-beginReturnStatement(return)
-beginNewExpression(new)
-handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}], (, ()
-handleIdentifier(, constructorReference)
-beginConstructorReference()
-handleNoTypeArguments(()
-handleNoConstructorReferenceContinuationAfterTypeArguments(()
-endConstructorReference(, null, ()
-beginArguments(()
-handleIdentifier(x, expression)
-handleNoTypeArguments(-)
-handleNoArguments(-)
-handleSend(x, -)
-beginBinaryExpression(-)
-handleLiteralInt(1)
-endBinaryExpression(-)
-endArguments(1, (, ))
-endNewExpression(new)
-beginBinaryExpression(+)
-handleLiteralInt(1)
-endBinaryExpression(+)
-endReturnStatement(true, return, ;)
-endBlockFunctionBody(2, {, })
-endTopLevelMethod(new, null, })
-endTopLevelDeclaration(int)
-beginMetadataStar(int)
-endMetadataStar(0)
-beginTopLevelMember(int)
-handleRecoverableError(MissingConstFinalVarOrType, int, int)
-handleNoType(})
-handleIdentifier(int, topLevelVariableDeclaration)
-handleNoFieldInitializer(null)
-handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
-endTopLevelFields(null, null, null, null, 1, int, ;)
-endTopLevelDeclaration(null)
-beginMetadataStar(null)
-endMetadataStar(0)
-beginTopLevelMember(null)
-beginTopLevelMethod(;, null)
-handleNoType(;)
-handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'null'., null, {token: null}], null, null)
-handleIdentifier(null, topLevelFunctionDeclaration)
-handleNoTypeVariables(()
-beginFormalParameters((, MemberKind.TopLevelMethod)
-beginMetadataStar(int)
-endMetadataStar(0)
-beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
-handleIdentifier(int, typeReference)
-handleNoTypeArguments(x)
-handleType(int, null)
-handleIdentifier(x, formalParameterDeclaration)
-handleFormalParameterWithoutValue())
-endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
-endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
-handleAsyncModifier(null, null)
-beginBlockFunctionBody({)
-beginIfStatement(if)
-handleIdentifier(x, expression)
-handleNoTypeArguments(==)
-handleNoArguments(==)
-handleSend(x, ==)
-beginBinaryExpression(==)
-handleLiteralInt(0)
-endBinaryExpression(==)
-handleParenthesizedCondition(()
-beginThenStatement(return)
-beginReturnStatement(return)
-handleLiteralInt(42)
-endReturnStatement(true, return, ;)
-endThenStatement(;)
-endIfStatement(if, null)
-beginReturnStatement(return)
-handleLiteralNull(null)
-handleNoTypeArguments(()
-beginArguments(()
-handleIdentifier(x, expression)
-handleNoTypeArguments(-)
-handleNoArguments(-)
-handleSend(x, -)
-beginBinaryExpression(-)
-handleLiteralInt(1)
-endBinaryExpression(-)
-endArguments(1, (, ))
-handleSend((, ))
-beginBinaryExpression(+)
-handleLiteralInt(1)
-endBinaryExpression(+)
-endReturnStatement(true, return, ;)
-endBlockFunctionBody(2, {, })
-endTopLevelMethod(null, null, })
-endTopLevelDeclaration(int)
-beginMetadataStar(int)
-endMetadataStar(0)
-beginTopLevelMember(int)
-handleRecoverableError(MissingConstFinalVarOrType, int, int)
-handleNoType(})
-handleIdentifier(int, topLevelVariableDeclaration)
-handleNoFieldInitializer(rethrow)
-handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
-endTopLevelFields(null, null, null, null, 1, int, ;)
-endTopLevelDeclaration(rethrow)
-beginMetadataStar(rethrow)
-endMetadataStar(0)
-beginTopLevelMember(rethrow)
-beginTopLevelMethod(;, null)
-handleNoType(;)
-handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'rethrow'., null, {token: rethrow}], rethrow, rethrow)
-handleIdentifier(rethrow, topLevelFunctionDeclaration)
-handleNoTypeVariables(()
-beginFormalParameters((, MemberKind.TopLevelMethod)
-beginMetadataStar(int)
-endMetadataStar(0)
-beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
-handleIdentifier(int, typeReference)
-handleNoTypeArguments(x)
-handleType(int, null)
-handleIdentifier(x, formalParameterDeclaration)
-handleFormalParameterWithoutValue())
-endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
-endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
-handleAsyncModifier(null, null)
-beginBlockFunctionBody({)
-beginIfStatement(if)
-handleIdentifier(x, expression)
-handleNoTypeArguments(==)
-handleNoArguments(==)
-handleSend(x, ==)
-beginBinaryExpression(==)
-handleLiteralInt(0)
-endBinaryExpression(==)
-handleParenthesizedCondition(()
-beginThenStatement(return)
-beginReturnStatement(return)
-handleLiteralInt(42)
-endReturnStatement(true, return, ;)
-endThenStatement(;)
-endIfStatement(if, null)
-beginReturnStatement(return)
-handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'rethrow'., null, {token: rethrow}], rethrow, rethrow)
-handleIdentifier(rethrow, expression)
-handleNoTypeArguments(()
-beginArguments(()
-handleIdentifier(x, expression)
-handleNoTypeArguments(-)
-handleNoArguments(-)
-handleSend(x, -)
-beginBinaryExpression(-)
-handleLiteralInt(1)
-endBinaryExpression(-)
-endArguments(1, (, ))
-handleSend(rethrow, +)
-beginBinaryExpression(+)
-handleLiteralInt(1)
-endBinaryExpression(+)
-endReturnStatement(true, return, ;)
-endBlockFunctionBody(2, {, })
-endTopLevelMethod(rethrow, null, })
-endTopLevelDeclaration(int)
-beginMetadataStar(int)
-endMetadataStar(0)
-beginTopLevelMember(int)
-handleRecoverableError(MissingConstFinalVarOrType, int, int)
-handleNoType(})
-handleIdentifier(int, topLevelVariableDeclaration)
-handleNoFieldInitializer(return)
-handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
-endTopLevelFields(null, null, null, null, 1, int, ;)
-endTopLevelDeclaration(return)
-beginMetadataStar(return)
-endMetadataStar(0)
-beginTopLevelMember(return)
-beginTopLevelMethod(;, null)
-handleNoType(;)
-handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'return'., null, {token: return}], return, return)
-handleIdentifier(return, topLevelFunctionDeclaration)
-handleNoTypeVariables(()
-beginFormalParameters((, MemberKind.TopLevelMethod)
-beginMetadataStar(int)
-endMetadataStar(0)
-beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
-handleIdentifier(int, typeReference)
-handleNoTypeArguments(x)
-handleType(int, null)
-handleIdentifier(x, formalParameterDeclaration)
-handleFormalParameterWithoutValue())
-endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
-endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
-handleAsyncModifier(null, null)
-beginBlockFunctionBody({)
-beginIfStatement(if)
-handleIdentifier(x, expression)
-handleNoTypeArguments(==)
-handleNoArguments(==)
-handleSend(x, ==)
-beginBinaryExpression(==)
-handleLiteralInt(0)
-endBinaryExpression(==)
-handleParenthesizedCondition(()
-beginThenStatement(return)
-beginReturnStatement(return)
-handleLiteralInt(42)
-endReturnStatement(true, return, ;)
-endThenStatement(;)
-endIfStatement(if, null)
-beginReturnStatement(return)
-handleRecoverableError(Message[UnexpectedToken, Unexpected token 'return'., null, {token: return}], return, return)
-handleIdentifier(x, expression)
-handleNoTypeArguments(-)
-handleNoArguments(-)
-handleSend(x, -)
-beginBinaryExpression(-)
-handleLiteralInt(1)
-endBinaryExpression(-)
-handleParenthesizedExpression(()
-beginBinaryExpression(+)
-handleLiteralInt(1)
-endBinaryExpression(+)
-endReturnStatement(true, return, ;)
-endBlockFunctionBody(2, {, })
-endTopLevelMethod(return, null, })
-endTopLevelDeclaration(int)
-beginMetadataStar(int)
-endMetadataStar(0)
-beginTopLevelMember(int)
-handleRecoverableError(MissingConstFinalVarOrType, int, int)
-handleNoType(})
-handleIdentifier(int, topLevelVariableDeclaration)
-handleNoFieldInitializer(super)
-handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
-endTopLevelFields(null, null, null, null, 1, int, ;)
-endTopLevelDeclaration(super)
-beginMetadataStar(super)
-endMetadataStar(0)
-beginTopLevelMember(super)
-beginTopLevelMethod(;, null)
-handleNoType(;)
-handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'super'., null, {token: super}], super, super)
-handleIdentifier(super, topLevelFunctionDeclaration)
-handleNoTypeVariables(()
-beginFormalParameters((, MemberKind.TopLevelMethod)
-beginMetadataStar(int)
-endMetadataStar(0)
-beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
-handleIdentifier(int, typeReference)
-handleNoTypeArguments(x)
-handleType(int, null)
-handleIdentifier(x, formalParameterDeclaration)
-handleFormalParameterWithoutValue())
-endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
-endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
-handleAsyncModifier(null, null)
-beginBlockFunctionBody({)
-beginIfStatement(if)
-handleIdentifier(x, expression)
-handleNoTypeArguments(==)
-handleNoArguments(==)
-handleSend(x, ==)
-beginBinaryExpression(==)
-handleLiteralInt(0)
-endBinaryExpression(==)
-handleParenthesizedCondition(()
-beginThenStatement(return)
-beginReturnStatement(return)
-handleLiteralInt(42)
-endReturnStatement(true, return, ;)
-endThenStatement(;)
-endIfStatement(if, null)
-beginReturnStatement(return)
-handleSuperExpression(super, expression)
-handleNoTypeArguments(()
-beginArguments(()
-handleIdentifier(x, expression)
-handleNoTypeArguments(-)
-handleNoArguments(-)
-handleSend(x, -)
-beginBinaryExpression(-)
-handleLiteralInt(1)
-endBinaryExpression(-)
-endArguments(1, (, ))
-handleSend(super, +)
-beginBinaryExpression(+)
-handleLiteralInt(1)
-endBinaryExpression(+)
-endReturnStatement(true, return, ;)
-endBlockFunctionBody(2, {, })
-endTopLevelMethod(super, null, })
-endTopLevelDeclaration(int)
-beginMetadataStar(int)
-endMetadataStar(0)
-beginTopLevelMember(int)
-handleRecoverableError(MissingConstFinalVarOrType, int, int)
-handleNoType(})
-handleIdentifier(int, topLevelVariableDeclaration)
-handleNoFieldInitializer(switch)
-handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
-endTopLevelFields(null, null, null, null, 1, int, ;)
-endTopLevelDeclaration(switch)
-beginMetadataStar(switch)
-endMetadataStar(0)
-beginTopLevelMember(switch)
-beginTopLevelMethod(;, null)
-handleNoType(;)
-handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'switch'., null, {token: switch}], switch, switch)
-handleIdentifier(switch, topLevelFunctionDeclaration)
-handleNoTypeVariables(()
-beginFormalParameters((, MemberKind.TopLevelMethod)
-beginMetadataStar(int)
-endMetadataStar(0)
-beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
-handleIdentifier(int, typeReference)
-handleNoTypeArguments(x)
-handleType(int, null)
-handleIdentifier(x, formalParameterDeclaration)
-handleFormalParameterWithoutValue())
-endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
-endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
-handleAsyncModifier(null, null)
-beginBlockFunctionBody({)
-beginIfStatement(if)
-handleIdentifier(x, expression)
-handleNoTypeArguments(==)
-handleNoArguments(==)
-handleSend(x, ==)
-beginBinaryExpression(==)
-handleLiteralInt(0)
-endBinaryExpression(==)
-handleParenthesizedCondition(()
-beginThenStatement(return)
-beginReturnStatement(return)
-handleLiteralInt(42)
-endReturnStatement(true, return, ;)
-endThenStatement(;)
-endIfStatement(if, null)
-beginReturnStatement(return)
-handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'switch'., null, {token: switch}], switch, switch)
-handleIdentifier(, expression)
-handleNoTypeArguments(switch)
-handleNoArguments(switch)
-handleSend(, switch)
-handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], switch, switch)
-endReturnStatement(true, return, ;)
-beginSwitchStatement(switch)
-handleIdentifier(x, expression)
-handleNoTypeArguments(-)
-handleNoArguments(-)
-handleSend(x, -)
-beginBinaryExpression(-)
-handleLiteralInt(1)
-endBinaryExpression(-)
-handleParenthesizedCondition(()
-handleRecoverableError(Message[ExpectedClassOrMixinBody, A switch statement must have a body, even if it is empty., Try adding an empty body., {string: switch statement}], ), ))
-beginSwitchBlock({)
-endSwitchBlock(0, {, })
-endSwitchStatement(switch, })
-handleRecoverableError(UnsupportedPrefixPlus, +, +)
-handleIdentifier(, expression)
-handleNoTypeArguments(+)
-handleNoArguments(+)
-handleSend(, +)
-beginBinaryExpression(+)
-handleLiteralInt(1)
-endBinaryExpression(+)
-handleExpressionStatement(;)
-endBlockFunctionBody(4, {, })
-endTopLevelMethod(switch, null, })
-endTopLevelDeclaration(int)
-beginMetadataStar(int)
-endMetadataStar(0)
-beginTopLevelMember(int)
-beginTopLevelMethod(}, null)
-handleIdentifier(int, typeReference)
-handleNoTypeArguments(this)
-handleType(int, null)
-handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'this'., null, {token: this}], this, this)
-handleIdentifier(this, topLevelFunctionDeclaration)
-handleNoTypeVariables(()
-beginFormalParameters((, MemberKind.TopLevelMethod)
-beginMetadataStar(int)
-endMetadataStar(0)
-beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
-handleIdentifier(int, typeReference)
-handleNoTypeArguments(x)
-handleType(int, null)
-handleIdentifier(x, formalParameterDeclaration)
-handleFormalParameterWithoutValue())
-endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
-endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
-handleAsyncModifier(null, null)
-beginBlockFunctionBody({)
-beginIfStatement(if)
-handleIdentifier(x, expression)
-handleNoTypeArguments(==)
-handleNoArguments(==)
-handleSend(x, ==)
-beginBinaryExpression(==)
-handleLiteralInt(0)
-endBinaryExpression(==)
-handleParenthesizedCondition(()
-beginThenStatement(return)
-beginReturnStatement(return)
-handleLiteralInt(42)
-endReturnStatement(true, return, ;)
-endThenStatement(;)
-endIfStatement(if, null)
-beginReturnStatement(return)
-handleThisExpression(this, expression)
-handleNoTypeArguments(()
-beginArguments(()
-handleIdentifier(x, expression)
-handleNoTypeArguments(-)
-handleNoArguments(-)
-handleSend(x, -)
-beginBinaryExpression(-)
-handleLiteralInt(1)
-endBinaryExpression(-)
-endArguments(1, (, ))
-handleSend(this, +)
-beginBinaryExpression(+)
-handleLiteralInt(1)
-endBinaryExpression(+)
-endReturnStatement(true, return, ;)
-endBlockFunctionBody(2, {, })
-endTopLevelMethod(int, null, })
-endTopLevelDeclaration(int)
-beginMetadataStar(int)
-endMetadataStar(0)
-beginTopLevelMember(int)
-handleRecoverableError(MissingConstFinalVarOrType, int, int)
-handleNoType(})
-handleIdentifier(int, topLevelVariableDeclaration)
-handleNoFieldInitializer(throw)
-handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
-endTopLevelFields(null, null, null, null, 1, int, ;)
-endTopLevelDeclaration(throw)
-beginMetadataStar(throw)
-endMetadataStar(0)
-beginTopLevelMember(throw)
-beginTopLevelMethod(;, null)
-handleNoType(;)
-handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'throw'., null, {token: throw}], throw, throw)
-handleIdentifier(throw, topLevelFunctionDeclaration)
-handleNoTypeVariables(()
-beginFormalParameters((, MemberKind.TopLevelMethod)
-beginMetadataStar(int)
-endMetadataStar(0)
-beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
-handleIdentifier(int, typeReference)
-handleNoTypeArguments(x)
-handleType(int, null)
-handleIdentifier(x, formalParameterDeclaration)
-handleFormalParameterWithoutValue())
-endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
-endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
-handleAsyncModifier(null, null)
-beginBlockFunctionBody({)
-beginIfStatement(if)
-handleIdentifier(x, expression)
-handleNoTypeArguments(==)
-handleNoArguments(==)
-handleSend(x, ==)
-beginBinaryExpression(==)
-handleLiteralInt(0)
-endBinaryExpression(==)
-handleParenthesizedCondition(()
-beginThenStatement(return)
-beginReturnStatement(return)
-handleLiteralInt(42)
-endReturnStatement(true, return, ;)
-endThenStatement(;)
-endIfStatement(if, null)
-beginReturnStatement(return)
-handleIdentifier(x, expression)
-handleNoTypeArguments(-)
-handleNoArguments(-)
-handleSend(x, -)
-beginBinaryExpression(-)
-handleLiteralInt(1)
-endBinaryExpression(-)
-handleParenthesizedExpression(()
-beginBinaryExpression(+)
-handleLiteralInt(1)
-endBinaryExpression(+)
-handleThrowExpression(throw, ;)
-endReturnStatement(true, return, ;)
-endBlockFunctionBody(2, {, })
-endTopLevelMethod(throw, null, })
-endTopLevelDeclaration(int)
-beginMetadataStar(int)
-endMetadataStar(0)
-beginTopLevelMember(int)
-handleRecoverableError(MissingConstFinalVarOrType, int, int)
-handleNoType(})
-handleIdentifier(int, topLevelVariableDeclaration)
-handleNoFieldInitializer(true)
-handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
-endTopLevelFields(null, null, null, null, 1, int, ;)
-endTopLevelDeclaration(true)
-beginMetadataStar(true)
-endMetadataStar(0)
-beginTopLevelMember(true)
-beginTopLevelMethod(;, null)
-handleNoType(;)
-handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'true'., null, {token: true}], true, true)
-handleIdentifier(true, topLevelFunctionDeclaration)
-handleNoTypeVariables(()
-beginFormalParameters((, MemberKind.TopLevelMethod)
-beginMetadataStar(int)
-endMetadataStar(0)
-beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
-handleIdentifier(int, typeReference)
-handleNoTypeArguments(x)
-handleType(int, null)
-handleIdentifier(x, formalParameterDeclaration)
-handleFormalParameterWithoutValue())
-endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
-endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
-handleAsyncModifier(null, null)
-beginBlockFunctionBody({)
-beginIfStatement(if)
-handleIdentifier(x, expression)
-handleNoTypeArguments(==)
-handleNoArguments(==)
-handleSend(x, ==)
-beginBinaryExpression(==)
-handleLiteralInt(0)
-endBinaryExpression(==)
-handleParenthesizedCondition(()
-beginThenStatement(return)
-beginReturnStatement(return)
-handleLiteralInt(42)
-endReturnStatement(true, return, ;)
-endThenStatement(;)
-endIfStatement(if, null)
-beginReturnStatement(return)
-handleLiteralBool(true)
-handleNoTypeArguments(()
-beginArguments(()
-handleIdentifier(x, expression)
-handleNoTypeArguments(-)
-handleNoArguments(-)
-handleSend(x, -)
-beginBinaryExpression(-)
-handleLiteralInt(1)
-endBinaryExpression(-)
-endArguments(1, (, ))
-handleSend((, ))
-beginBinaryExpression(+)
-handleLiteralInt(1)
-endBinaryExpression(+)
-endReturnStatement(true, return, ;)
-endBlockFunctionBody(2, {, })
-endTopLevelMethod(true, null, })
-endTopLevelDeclaration(int)
-beginMetadataStar(int)
-endMetadataStar(0)
-beginTopLevelMember(int)
-handleRecoverableError(MissingConstFinalVarOrType, int, int)
-handleNoType(})
-handleIdentifier(int, topLevelVariableDeclaration)
-handleNoFieldInitializer(try)
-handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
-endTopLevelFields(null, null, null, null, 1, int, ;)
-endTopLevelDeclaration(try)
-beginMetadataStar(try)
-endMetadataStar(0)
-beginTopLevelMember(try)
-beginTopLevelMethod(;, null)
-handleNoType(;)
-handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'try'., null, {token: try}], try, try)
-handleIdentifier(try, topLevelFunctionDeclaration)
-handleNoTypeVariables(()
-beginFormalParameters((, MemberKind.TopLevelMethod)
-beginMetadataStar(int)
-endMetadataStar(0)
-beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
-handleIdentifier(int, typeReference)
-handleNoTypeArguments(x)
-handleType(int, null)
-handleIdentifier(x, formalParameterDeclaration)
-handleFormalParameterWithoutValue())
-endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
-endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
-handleAsyncModifier(null, null)
-beginBlockFunctionBody({)
-beginIfStatement(if)
-handleIdentifier(x, expression)
-handleNoTypeArguments(==)
-handleNoArguments(==)
-handleSend(x, ==)
-beginBinaryExpression(==)
-handleLiteralInt(0)
-endBinaryExpression(==)
-handleParenthesizedCondition(()
-beginThenStatement(return)
-beginReturnStatement(return)
-handleLiteralInt(42)
-endReturnStatement(true, return, ;)
-endThenStatement(;)
-endIfStatement(if, null)
-beginReturnStatement(return)
-handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'try'., null, {token: try}], try, try)
-handleIdentifier(, expression)
-handleNoTypeArguments(try)
-handleNoArguments(try)
-handleSend(, try)
-handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], try, try)
-endReturnStatement(true, return, ;)
-beginTryStatement(try)
-handleRecoverableError(Message[ExpectedClassOrMixinBody, A try statement must have a body, even if it is empty., Try adding an empty body., {string: try statement}], try, try)
-beginBlock({, BlockKind(try statement))
-endBlock(0, {, }, BlockKind(try statement))
-handleRecoverableError(OnlyTry, try, try)
-endTryStatement(0, try, null)
-handleIdentifier(x, expression)
-handleNoTypeArguments(-)
-handleNoArguments(-)
-handleSend(x, -)
-beginBinaryExpression(-)
-handleLiteralInt(1)
-endBinaryExpression(-)
-handleParenthesizedExpression(()
-beginBinaryExpression(+)
-handleLiteralInt(1)
-endBinaryExpression(+)
-handleExpressionStatement(;)
-endBlockFunctionBody(4, {, })
-endTopLevelMethod(try, null, })
-endTopLevelDeclaration(int)
-beginMetadataStar(int)
-endMetadataStar(0)
-beginTopLevelMember(int)
-handleRecoverableError(MissingConstFinalVarOrType, int, int)
-handleNoType(})
-handleIdentifier(int, topLevelVariableDeclaration)
-handleNoFieldInitializer(var)
-handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
-endTopLevelFields(null, null, null, null, 1, int, ;)
-endTopLevelDeclaration(var)
-beginMetadataStar(var)
-endMetadataStar(0)
-beginTopLevelMember(var)
-handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}], (, ()
-handleRecoverableError(VarReturnType, var, var)
-beginTopLevelMethod(;, null)
-handleNoType(var)
-handleIdentifier(, topLevelFunctionDeclaration)
-handleNoTypeVariables(()
-beginFormalParameters((, MemberKind.TopLevelMethod)
-beginMetadataStar(int)
-endMetadataStar(0)
-beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
-handleIdentifier(int, typeReference)
-handleNoTypeArguments(x)
-handleType(int, null)
-handleIdentifier(x, formalParameterDeclaration)
-handleFormalParameterWithoutValue())
-endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
-endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
-handleAsyncModifier(null, null)
-beginBlockFunctionBody({)
-beginIfStatement(if)
-handleIdentifier(x, expression)
-handleNoTypeArguments(==)
-handleNoArguments(==)
-handleSend(x, ==)
-beginBinaryExpression(==)
-handleLiteralInt(0)
-endBinaryExpression(==)
-handleParenthesizedCondition(()
-beginThenStatement(return)
-beginReturnStatement(return)
-handleLiteralInt(42)
-endReturnStatement(true, return, ;)
-endThenStatement(;)
-endIfStatement(if, null)
-beginReturnStatement(return)
-handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'var'., null, {token: var}], var, var)
-handleIdentifier(, expression)
-handleNoTypeArguments(var)
-handleNoArguments(var)
-handleSend(, var)
-handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], var, var)
-endReturnStatement(true, return, ;)
-beginMetadataStar(var)
-endMetadataStar(0)
-handleNoType(var)
-beginVariablesDeclaration((, null, var)
-handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}], (, ()
-handleIdentifier(, localVariableDeclaration)
-beginInitializedIdentifier()
-handleNoVariableInitializer(x)
-endInitializedIdentifier()
-handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], x, x)
-endVariablesDeclaration(1, ;)
-handleIdentifier(x, expression)
-handleNoTypeArguments(-)
-handleNoArguments(-)
-handleSend(x, -)
-beginBinaryExpression(-)
-handleLiteralInt(1)
-endBinaryExpression(-)
-handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], 1, 1)
-handleExpressionStatement(;)
-handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got ')'., null, {token: )}], ), ))
-handleIdentifier(, expression)
-handleNoTypeArguments())
-handleNoArguments())
-handleSend(, ))
-handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], ), ))
-handleExpressionStatement(;)
-handleRecoverableError(Message[UnexpectedToken, Unexpected token ';'., null, {token: ;}], ), ))
-handleRecoverableError(UnsupportedPrefixPlus, +, +)
-handleIdentifier(, expression)
-handleNoTypeArguments(+)
-handleNoArguments(+)
-handleSend(, +)
-beginBinaryExpression(+)
-handleLiteralInt(1)
-endBinaryExpression(+)
-handleExpressionStatement(;)
-endBlockFunctionBody(6, {, })
-endTopLevelMethod(var, null, })
-endTopLevelDeclaration(int)
-beginMetadataStar(int)
-endMetadataStar(0)
-beginTopLevelMember(int)
-handleRecoverableError(MissingConstFinalVarOrType, int, int)
-handleNoType(})
-handleIdentifier(int, topLevelVariableDeclaration)
-handleNoFieldInitializer(void)
-handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
-endTopLevelFields(null, null, null, null, 1, int, ;)
-endTopLevelDeclaration(void)
-beginMetadataStar(void)
-endMetadataStar(0)
-beginTopLevelMember(void)
-handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}], (, ()
-beginTopLevelMethod(;, null)
-handleVoidKeyword(void)
-handleIdentifier(, topLevelFunctionDeclaration)
-handleNoTypeVariables(()
-beginFormalParameters((, MemberKind.TopLevelMethod)
-beginMetadataStar(int)
-endMetadataStar(0)
-beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
-handleIdentifier(int, typeReference)
-handleNoTypeArguments(x)
-handleType(int, null)
-handleIdentifier(x, formalParameterDeclaration)
-handleFormalParameterWithoutValue())
-endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
-endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
-handleAsyncModifier(null, null)
-beginBlockFunctionBody({)
-beginIfStatement(if)
-handleIdentifier(x, expression)
-handleNoTypeArguments(==)
-handleNoArguments(==)
-handleSend(x, ==)
-beginBinaryExpression(==)
-handleLiteralInt(0)
-endBinaryExpression(==)
-handleParenthesizedCondition(()
-beginThenStatement(return)
-beginReturnStatement(return)
-handleLiteralInt(42)
-endReturnStatement(true, return, ;)
-endThenStatement(;)
-endIfStatement(if, null)
-beginReturnStatement(return)
-handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'void'., null, {token: void}], void, void)
-handleIdentifier(, expression)
-handleNoTypeArguments(void)
-handleNoArguments(void)
-handleSend(, void)
-handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], void, void)
-endReturnStatement(true, return, ;)
-beginMetadataStar(void)
-endMetadataStar(0)
-handleVoidKeyword(void)
-beginVariablesDeclaration((, null, null)
-handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}], (, ()
-handleIdentifier(, localVariableDeclaration)
-beginInitializedIdentifier()
-handleNoVariableInitializer(x)
-endInitializedIdentifier()
-handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], x, x)
-endVariablesDeclaration(1, ;)
-handleIdentifier(x, expression)
-handleNoTypeArguments(-)
-handleNoArguments(-)
-handleSend(x, -)
-beginBinaryExpression(-)
-handleLiteralInt(1)
-endBinaryExpression(-)
-handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], 1, 1)
-handleExpressionStatement(;)
-handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got ')'., null, {token: )}], ), ))
-handleIdentifier(, expression)
-handleNoTypeArguments())
-handleNoArguments())
-handleSend(, ))
-handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], ), ))
-handleExpressionStatement(;)
-handleRecoverableError(Message[UnexpectedToken, Unexpected token ';'., null, {token: ;}], ), ))
-handleRecoverableError(UnsupportedPrefixPlus, +, +)
-handleIdentifier(, expression)
-handleNoTypeArguments(+)
-handleNoArguments(+)
-handleSend(, +)
-beginBinaryExpression(+)
-handleLiteralInt(1)
-endBinaryExpression(+)
-handleExpressionStatement(;)
-endBlockFunctionBody(6, {, })
-endTopLevelMethod(void, null, })
-endTopLevelDeclaration(int)
-beginMetadataStar(int)
-endMetadataStar(0)
-beginTopLevelMember(int)
-handleRecoverableError(MissingConstFinalVarOrType, int, int)
-handleNoType(})
-handleIdentifier(int, topLevelVariableDeclaration)
-handleNoFieldInitializer(while)
-handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
-endTopLevelFields(null, null, null, null, 1, int, ;)
-endTopLevelDeclaration(while)
-beginMetadataStar(while)
-endMetadataStar(0)
-beginTopLevelMember(while)
-beginTopLevelMethod(;, null)
-handleNoType(;)
-handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'while'., null, {token: while}], while, while)
-handleIdentifier(while, topLevelFunctionDeclaration)
-handleNoTypeVariables(()
-beginFormalParameters((, MemberKind.TopLevelMethod)
-beginMetadataStar(int)
-endMetadataStar(0)
-beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
-handleIdentifier(int, typeReference)
-handleNoTypeArguments(x)
-handleType(int, null)
-handleIdentifier(x, formalParameterDeclaration)
-handleFormalParameterWithoutValue())
-endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
-endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
-handleAsyncModifier(null, null)
-beginBlockFunctionBody({)
-beginIfStatement(if)
-handleIdentifier(x, expression)
-handleNoTypeArguments(==)
-handleNoArguments(==)
-handleSend(x, ==)
-beginBinaryExpression(==)
-handleLiteralInt(0)
-endBinaryExpression(==)
-handleParenthesizedCondition(()
-beginThenStatement(return)
-beginReturnStatement(return)
-handleLiteralInt(42)
-endReturnStatement(true, return, ;)
-endThenStatement(;)
-endIfStatement(if, null)
-beginReturnStatement(return)
-handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'while'., null, {token: while}], while, while)
-handleIdentifier(, expression)
-handleNoTypeArguments(while)
-handleNoArguments(while)
-handleSend(, while)
-handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], while, while)
-endReturnStatement(true, return, ;)
-beginWhileStatement(while)
-handleIdentifier(x, expression)
-handleNoTypeArguments(-)
-handleNoArguments(-)
-handleSend(x, -)
-beginBinaryExpression(-)
-handleLiteralInt(1)
-endBinaryExpression(-)
-handleParenthesizedCondition(()
-beginWhileStatementBody(+)
-handleRecoverableError(UnsupportedPrefixPlus, +, +)
-handleIdentifier(, expression)
-handleNoTypeArguments(+)
-handleNoArguments(+)
-handleSend(, +)
-beginBinaryExpression(+)
-handleLiteralInt(1)
-endBinaryExpression(+)
-handleExpressionStatement(;)
-endWhileStatementBody(})
-endWhileStatement(while, })
-endBlockFunctionBody(3, {, })
-endTopLevelMethod(while, null, })
-endTopLevelDeclaration(int)
-beginMetadataStar(int)
-endMetadataStar(0)
-beginTopLevelMember(int)
-handleRecoverableError(MissingConstFinalVarOrType, int, int)
-handleNoType(})
-handleIdentifier(int, topLevelVariableDeclaration)
-handleNoFieldInitializer(with)
-handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
-endTopLevelFields(null, null, null, null, 1, int, ;)
-endTopLevelDeclaration(with)
-beginMetadataStar(with)
-endMetadataStar(0)
-beginTopLevelMember(with)
-beginTopLevelMethod(;, null)
-handleNoType(;)
-handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'with'., null, {token: with}], with, with)
-handleIdentifier(with, topLevelFunctionDeclaration)
-handleNoTypeVariables(()
-beginFormalParameters((, MemberKind.TopLevelMethod)
-beginMetadataStar(int)
-endMetadataStar(0)
-beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
-handleIdentifier(int, typeReference)
-handleNoTypeArguments(x)
-handleType(int, null)
-handleIdentifier(x, formalParameterDeclaration)
-handleFormalParameterWithoutValue())
-endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
-endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
-handleAsyncModifier(null, null)
-beginBlockFunctionBody({)
-beginIfStatement(if)
-handleIdentifier(x, expression)
-handleNoTypeArguments(==)
-handleNoArguments(==)
-handleSend(x, ==)
-beginBinaryExpression(==)
-handleLiteralInt(0)
-endBinaryExpression(==)
-handleParenthesizedCondition(()
-beginThenStatement(return)
-beginReturnStatement(return)
-handleLiteralInt(42)
-endReturnStatement(true, return, ;)
-endThenStatement(;)
-endIfStatement(if, null)
-beginReturnStatement(return)
-handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'with'., null, {token: with}], with, with)
-handleIdentifier(with, expression)
-handleNoTypeArguments(()
-beginArguments(()
-handleIdentifier(x, expression)
-handleNoTypeArguments(-)
-handleNoArguments(-)
-handleSend(x, -)
-beginBinaryExpression(-)
-handleLiteralInt(1)
-endBinaryExpression(-)
-endArguments(1, (, ))
-handleSend(with, +)
-beginBinaryExpression(+)
-handleLiteralInt(1)
-endBinaryExpression(+)
-endReturnStatement(true, return, ;)
-endBlockFunctionBody(2, {, })
-endTopLevelMethod(with, null, })
-endTopLevelDeclaration()
-endCompilationUnit(71, )
+  beginTopLevelMember(int)
+    beginTopLevelMethod(}, null)
+      handleIdentifier(int, typeReference)
+      handleNoTypeArguments(new)
+      handleType(int, null)
+      handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'new'., null, {token: new}], new, new)
+      handleIdentifier(new, topLevelFunctionDeclaration)
+      handleNoTypeVariables(()
+      beginFormalParameters((, MemberKind.TopLevelMethod)
+        beginMetadataStar(int)
+        endMetadataStar(0)
+        beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+          handleIdentifier(int, typeReference)
+          handleNoTypeArguments(x)
+          handleType(int, null)
+          handleIdentifier(x, formalParameterDeclaration)
+          handleFormalParameterWithoutValue())
+        endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+      endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
+      handleAsyncModifier(null, null)
+      beginBlockFunctionBody({)
+        beginIfStatement(if)
+          handleIdentifier(x, expression)
+          handleNoTypeArguments(==)
+          handleNoArguments(==)
+          handleSend(x, ==)
+          beginBinaryExpression(==)
+          handleLiteralInt(0)
+          endBinaryExpression(==)
+          handleParenthesizedCondition(()
+          beginThenStatement(return)
+            beginReturnStatement(return)
+              handleLiteralInt(42)
+            endReturnStatement(true, return, ;)
+          endThenStatement(;)
+        endIfStatement(if, null)
+        beginReturnStatement(return)
+          beginNewExpression(new)
+            handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}], (, ()
+            handleIdentifier(, constructorReference)
+            beginConstructorReference()
+              handleNoTypeArguments(()
+              handleNoConstructorReferenceContinuationAfterTypeArguments(()
+            endConstructorReference(, null, ()
+            beginArguments(()
+              handleIdentifier(x, expression)
+              handleNoTypeArguments(-)
+              handleNoArguments(-)
+              handleSend(x, -)
+              beginBinaryExpression(-)
+              handleLiteralInt(1)
+              endBinaryExpression(-)
+            endArguments(1, (, ))
+          endNewExpression(new)
+          beginBinaryExpression(+)
+          handleLiteralInt(1)
+          endBinaryExpression(+)
+        endReturnStatement(true, return, ;)
+      endBlockFunctionBody(2, {, })
+    endTopLevelMethod(int, null, })
+  endTopLevelDeclaration(int)
+  beginMetadataStar(int)
+  endMetadataStar(0)
+  beginTopLevelMember(int)
+    beginTopLevelMethod(}, null)
+      handleIdentifier(int, typeReference)
+      handleNoTypeArguments(null)
+      handleType(int, null)
+      handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'null'., null, {token: null}], null, null)
+      handleIdentifier(null, topLevelFunctionDeclaration)
+      handleNoTypeVariables(()
+      beginFormalParameters((, MemberKind.TopLevelMethod)
+        beginMetadataStar(int)
+        endMetadataStar(0)
+        beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+          handleIdentifier(int, typeReference)
+          handleNoTypeArguments(x)
+          handleType(int, null)
+          handleIdentifier(x, formalParameterDeclaration)
+          handleFormalParameterWithoutValue())
+        endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+      endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
+      handleAsyncModifier(null, null)
+      beginBlockFunctionBody({)
+        beginIfStatement(if)
+          handleIdentifier(x, expression)
+          handleNoTypeArguments(==)
+          handleNoArguments(==)
+          handleSend(x, ==)
+          beginBinaryExpression(==)
+          handleLiteralInt(0)
+          endBinaryExpression(==)
+          handleParenthesizedCondition(()
+          beginThenStatement(return)
+            beginReturnStatement(return)
+              handleLiteralInt(42)
+            endReturnStatement(true, return, ;)
+          endThenStatement(;)
+        endIfStatement(if, null)
+        beginReturnStatement(return)
+          handleLiteralNull(null)
+          handleNoTypeArguments(()
+          beginArguments(()
+            handleIdentifier(x, expression)
+            handleNoTypeArguments(-)
+            handleNoArguments(-)
+            handleSend(x, -)
+            beginBinaryExpression(-)
+            handleLiteralInt(1)
+            endBinaryExpression(-)
+          endArguments(1, (, ))
+          handleSend((, ))
+          beginBinaryExpression(+)
+          handleLiteralInt(1)
+          endBinaryExpression(+)
+        endReturnStatement(true, return, ;)
+      endBlockFunctionBody(2, {, })
+    endTopLevelMethod(int, null, })
+  endTopLevelDeclaration(int)
+  beginMetadataStar(int)
+  endMetadataStar(0)
+  beginTopLevelMember(int)
+    beginTopLevelMethod(}, null)
+      handleIdentifier(int, typeReference)
+      handleNoTypeArguments(rethrow)
+      handleType(int, null)
+      handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'rethrow'., null, {token: rethrow}], rethrow, rethrow)
+      handleIdentifier(rethrow, topLevelFunctionDeclaration)
+      handleNoTypeVariables(()
+      beginFormalParameters((, MemberKind.TopLevelMethod)
+        beginMetadataStar(int)
+        endMetadataStar(0)
+        beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+          handleIdentifier(int, typeReference)
+          handleNoTypeArguments(x)
+          handleType(int, null)
+          handleIdentifier(x, formalParameterDeclaration)
+          handleFormalParameterWithoutValue())
+        endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+      endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
+      handleAsyncModifier(null, null)
+      beginBlockFunctionBody({)
+        beginIfStatement(if)
+          handleIdentifier(x, expression)
+          handleNoTypeArguments(==)
+          handleNoArguments(==)
+          handleSend(x, ==)
+          beginBinaryExpression(==)
+          handleLiteralInt(0)
+          endBinaryExpression(==)
+          handleParenthesizedCondition(()
+          beginThenStatement(return)
+            beginReturnStatement(return)
+              handleLiteralInt(42)
+            endReturnStatement(true, return, ;)
+          endThenStatement(;)
+        endIfStatement(if, null)
+        beginReturnStatement(return)
+          handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'rethrow'., null, {token: rethrow}], rethrow, rethrow)
+          handleIdentifier(rethrow, expression)
+          handleNoTypeArguments(()
+          beginArguments(()
+            handleIdentifier(x, expression)
+            handleNoTypeArguments(-)
+            handleNoArguments(-)
+            handleSend(x, -)
+            beginBinaryExpression(-)
+            handleLiteralInt(1)
+            endBinaryExpression(-)
+          endArguments(1, (, ))
+          handleSend(rethrow, +)
+          beginBinaryExpression(+)
+          handleLiteralInt(1)
+          endBinaryExpression(+)
+        endReturnStatement(true, return, ;)
+      endBlockFunctionBody(2, {, })
+    endTopLevelMethod(int, null, })
+  endTopLevelDeclaration(int)
+  beginMetadataStar(int)
+  endMetadataStar(0)
+  beginTopLevelMember(int)
+    beginTopLevelMethod(}, null)
+      handleIdentifier(int, typeReference)
+      handleNoTypeArguments(return)
+      handleType(int, null)
+      handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'return'., null, {token: return}], return, return)
+      handleIdentifier(return, topLevelFunctionDeclaration)
+      handleNoTypeVariables(()
+      beginFormalParameters((, MemberKind.TopLevelMethod)
+        beginMetadataStar(int)
+        endMetadataStar(0)
+        beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+          handleIdentifier(int, typeReference)
+          handleNoTypeArguments(x)
+          handleType(int, null)
+          handleIdentifier(x, formalParameterDeclaration)
+          handleFormalParameterWithoutValue())
+        endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+      endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
+      handleAsyncModifier(null, null)
+      beginBlockFunctionBody({)
+        beginIfStatement(if)
+          handleIdentifier(x, expression)
+          handleNoTypeArguments(==)
+          handleNoArguments(==)
+          handleSend(x, ==)
+          beginBinaryExpression(==)
+          handleLiteralInt(0)
+          endBinaryExpression(==)
+          handleParenthesizedCondition(()
+          beginThenStatement(return)
+            beginReturnStatement(return)
+              handleLiteralInt(42)
+            endReturnStatement(true, return, ;)
+          endThenStatement(;)
+        endIfStatement(if, null)
+        beginReturnStatement(return)
+          handleRecoverableError(Message[UnexpectedToken, Unexpected token 'return'., null, {token: return}], return, return)
+          handleIdentifier(x, expression)
+          handleNoTypeArguments(-)
+          handleNoArguments(-)
+          handleSend(x, -)
+          beginBinaryExpression(-)
+          handleLiteralInt(1)
+          endBinaryExpression(-)
+          handleParenthesizedExpression(()
+          beginBinaryExpression(+)
+          handleLiteralInt(1)
+          endBinaryExpression(+)
+        endReturnStatement(true, return, ;)
+      endBlockFunctionBody(2, {, })
+    endTopLevelMethod(int, null, })
+  endTopLevelDeclaration(int)
+  beginMetadataStar(int)
+  endMetadataStar(0)
+  beginTopLevelMember(int)
+    beginTopLevelMethod(}, null)
+      handleIdentifier(int, typeReference)
+      handleNoTypeArguments(super)
+      handleType(int, null)
+      handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'super'., null, {token: super}], super, super)
+      handleIdentifier(super, topLevelFunctionDeclaration)
+      handleNoTypeVariables(()
+      beginFormalParameters((, MemberKind.TopLevelMethod)
+        beginMetadataStar(int)
+        endMetadataStar(0)
+        beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+          handleIdentifier(int, typeReference)
+          handleNoTypeArguments(x)
+          handleType(int, null)
+          handleIdentifier(x, formalParameterDeclaration)
+          handleFormalParameterWithoutValue())
+        endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+      endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
+      handleAsyncModifier(null, null)
+      beginBlockFunctionBody({)
+        beginIfStatement(if)
+          handleIdentifier(x, expression)
+          handleNoTypeArguments(==)
+          handleNoArguments(==)
+          handleSend(x, ==)
+          beginBinaryExpression(==)
+          handleLiteralInt(0)
+          endBinaryExpression(==)
+          handleParenthesizedCondition(()
+          beginThenStatement(return)
+            beginReturnStatement(return)
+              handleLiteralInt(42)
+            endReturnStatement(true, return, ;)
+          endThenStatement(;)
+        endIfStatement(if, null)
+        beginReturnStatement(return)
+          handleSuperExpression(super, expression)
+          handleNoTypeArguments(()
+          beginArguments(()
+            handleIdentifier(x, expression)
+            handleNoTypeArguments(-)
+            handleNoArguments(-)
+            handleSend(x, -)
+            beginBinaryExpression(-)
+            handleLiteralInt(1)
+            endBinaryExpression(-)
+          endArguments(1, (, ))
+          handleSend(super, +)
+          beginBinaryExpression(+)
+          handleLiteralInt(1)
+          endBinaryExpression(+)
+        endReturnStatement(true, return, ;)
+      endBlockFunctionBody(2, {, })
+    endTopLevelMethod(int, null, })
+  endTopLevelDeclaration(int)
+  beginMetadataStar(int)
+  endMetadataStar(0)
+  beginTopLevelMember(int)
+    beginTopLevelMethod(}, null)
+      handleIdentifier(int, typeReference)
+      handleNoTypeArguments(switch)
+      handleType(int, null)
+      handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'switch'., null, {token: switch}], switch, switch)
+      handleIdentifier(switch, topLevelFunctionDeclaration)
+      handleNoTypeVariables(()
+      beginFormalParameters((, MemberKind.TopLevelMethod)
+        beginMetadataStar(int)
+        endMetadataStar(0)
+        beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+          handleIdentifier(int, typeReference)
+          handleNoTypeArguments(x)
+          handleType(int, null)
+          handleIdentifier(x, formalParameterDeclaration)
+          handleFormalParameterWithoutValue())
+        endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+      endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
+      handleAsyncModifier(null, null)
+      beginBlockFunctionBody({)
+        beginIfStatement(if)
+          handleIdentifier(x, expression)
+          handleNoTypeArguments(==)
+          handleNoArguments(==)
+          handleSend(x, ==)
+          beginBinaryExpression(==)
+          handleLiteralInt(0)
+          endBinaryExpression(==)
+          handleParenthesizedCondition(()
+          beginThenStatement(return)
+            beginReturnStatement(return)
+              handleLiteralInt(42)
+            endReturnStatement(true, return, ;)
+          endThenStatement(;)
+        endIfStatement(if, null)
+        beginReturnStatement(return)
+          handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'switch'., null, {token: switch}], switch, switch)
+          handleIdentifier(, expression)
+          handleNoTypeArguments(switch)
+          handleNoArguments(switch)
+          handleSend(, switch)
+          handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], switch, switch)
+        endReturnStatement(true, return, ;)
+        beginSwitchStatement(switch)
+          handleIdentifier(x, expression)
+          handleNoTypeArguments(-)
+          handleNoArguments(-)
+          handleSend(x, -)
+          beginBinaryExpression(-)
+          handleLiteralInt(1)
+          endBinaryExpression(-)
+          handleParenthesizedCondition(()
+          handleRecoverableError(Message[ExpectedClassOrMixinBody, A switch statement must have a body, even if it is empty., Try adding an empty body., {string: switch statement}], ), ))
+          beginSwitchBlock({)
+          endSwitchBlock(0, {, })
+        endSwitchStatement(switch, })
+        handleRecoverableError(UnsupportedPrefixPlus, +, +)
+        handleIdentifier(, expression)
+        handleNoTypeArguments(+)
+        handleNoArguments(+)
+        handleSend(, +)
+        beginBinaryExpression(+)
+        handleLiteralInt(1)
+        endBinaryExpression(+)
+        handleExpressionStatement(;)
+      endBlockFunctionBody(4, {, })
+    endTopLevelMethod(int, null, })
+  endTopLevelDeclaration(int)
+  beginMetadataStar(int)
+  endMetadataStar(0)
+  beginTopLevelMember(int)
+    beginTopLevelMethod(}, null)
+      handleIdentifier(int, typeReference)
+      handleNoTypeArguments(this)
+      handleType(int, null)
+      handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'this'., null, {token: this}], this, this)
+      handleIdentifier(this, topLevelFunctionDeclaration)
+      handleNoTypeVariables(()
+      beginFormalParameters((, MemberKind.TopLevelMethod)
+        beginMetadataStar(int)
+        endMetadataStar(0)
+        beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+          handleIdentifier(int, typeReference)
+          handleNoTypeArguments(x)
+          handleType(int, null)
+          handleIdentifier(x, formalParameterDeclaration)
+          handleFormalParameterWithoutValue())
+        endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+      endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
+      handleAsyncModifier(null, null)
+      beginBlockFunctionBody({)
+        beginIfStatement(if)
+          handleIdentifier(x, expression)
+          handleNoTypeArguments(==)
+          handleNoArguments(==)
+          handleSend(x, ==)
+          beginBinaryExpression(==)
+          handleLiteralInt(0)
+          endBinaryExpression(==)
+          handleParenthesizedCondition(()
+          beginThenStatement(return)
+            beginReturnStatement(return)
+              handleLiteralInt(42)
+            endReturnStatement(true, return, ;)
+          endThenStatement(;)
+        endIfStatement(if, null)
+        beginReturnStatement(return)
+          handleThisExpression(this, expression)
+          handleNoTypeArguments(()
+          beginArguments(()
+            handleIdentifier(x, expression)
+            handleNoTypeArguments(-)
+            handleNoArguments(-)
+            handleSend(x, -)
+            beginBinaryExpression(-)
+            handleLiteralInt(1)
+            endBinaryExpression(-)
+          endArguments(1, (, ))
+          handleSend(this, +)
+          beginBinaryExpression(+)
+          handleLiteralInt(1)
+          endBinaryExpression(+)
+        endReturnStatement(true, return, ;)
+      endBlockFunctionBody(2, {, })
+    endTopLevelMethod(int, null, })
+  endTopLevelDeclaration(int)
+  beginMetadataStar(int)
+  endMetadataStar(0)
+  beginTopLevelMember(int)
+    beginTopLevelMethod(}, null)
+      handleIdentifier(int, typeReference)
+      handleNoTypeArguments(throw)
+      handleType(int, null)
+      handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'throw'., null, {token: throw}], throw, throw)
+      handleIdentifier(throw, topLevelFunctionDeclaration)
+      handleNoTypeVariables(()
+      beginFormalParameters((, MemberKind.TopLevelMethod)
+        beginMetadataStar(int)
+        endMetadataStar(0)
+        beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+          handleIdentifier(int, typeReference)
+          handleNoTypeArguments(x)
+          handleType(int, null)
+          handleIdentifier(x, formalParameterDeclaration)
+          handleFormalParameterWithoutValue())
+        endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+      endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
+      handleAsyncModifier(null, null)
+      beginBlockFunctionBody({)
+        beginIfStatement(if)
+          handleIdentifier(x, expression)
+          handleNoTypeArguments(==)
+          handleNoArguments(==)
+          handleSend(x, ==)
+          beginBinaryExpression(==)
+          handleLiteralInt(0)
+          endBinaryExpression(==)
+          handleParenthesizedCondition(()
+          beginThenStatement(return)
+            beginReturnStatement(return)
+              handleLiteralInt(42)
+            endReturnStatement(true, return, ;)
+          endThenStatement(;)
+        endIfStatement(if, null)
+        beginReturnStatement(return)
+          handleIdentifier(x, expression)
+          handleNoTypeArguments(-)
+          handleNoArguments(-)
+          handleSend(x, -)
+          beginBinaryExpression(-)
+          handleLiteralInt(1)
+          endBinaryExpression(-)
+          handleParenthesizedExpression(()
+          beginBinaryExpression(+)
+          handleLiteralInt(1)
+          endBinaryExpression(+)
+          handleThrowExpression(throw, ;)
+        endReturnStatement(true, return, ;)
+      endBlockFunctionBody(2, {, })
+    endTopLevelMethod(int, null, })
+  endTopLevelDeclaration(int)
+  beginMetadataStar(int)
+  endMetadataStar(0)
+  beginTopLevelMember(int)
+    beginTopLevelMethod(}, null)
+      handleIdentifier(int, typeReference)
+      handleNoTypeArguments(true)
+      handleType(int, null)
+      handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'true'., null, {token: true}], true, true)
+      handleIdentifier(true, topLevelFunctionDeclaration)
+      handleNoTypeVariables(()
+      beginFormalParameters((, MemberKind.TopLevelMethod)
+        beginMetadataStar(int)
+        endMetadataStar(0)
+        beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+          handleIdentifier(int, typeReference)
+          handleNoTypeArguments(x)
+          handleType(int, null)
+          handleIdentifier(x, formalParameterDeclaration)
+          handleFormalParameterWithoutValue())
+        endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+      endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
+      handleAsyncModifier(null, null)
+      beginBlockFunctionBody({)
+        beginIfStatement(if)
+          handleIdentifier(x, expression)
+          handleNoTypeArguments(==)
+          handleNoArguments(==)
+          handleSend(x, ==)
+          beginBinaryExpression(==)
+          handleLiteralInt(0)
+          endBinaryExpression(==)
+          handleParenthesizedCondition(()
+          beginThenStatement(return)
+            beginReturnStatement(return)
+              handleLiteralInt(42)
+            endReturnStatement(true, return, ;)
+          endThenStatement(;)
+        endIfStatement(if, null)
+        beginReturnStatement(return)
+          handleLiteralBool(true)
+          handleNoTypeArguments(()
+          beginArguments(()
+            handleIdentifier(x, expression)
+            handleNoTypeArguments(-)
+            handleNoArguments(-)
+            handleSend(x, -)
+            beginBinaryExpression(-)
+            handleLiteralInt(1)
+            endBinaryExpression(-)
+          endArguments(1, (, ))
+          handleSend((, ))
+          beginBinaryExpression(+)
+          handleLiteralInt(1)
+          endBinaryExpression(+)
+        endReturnStatement(true, return, ;)
+      endBlockFunctionBody(2, {, })
+    endTopLevelMethod(int, null, })
+  endTopLevelDeclaration(int)
+  beginMetadataStar(int)
+  endMetadataStar(0)
+  beginTopLevelMember(int)
+    beginTopLevelMethod(}, null)
+      handleIdentifier(int, typeReference)
+      handleNoTypeArguments(try)
+      handleType(int, null)
+      handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'try'., null, {token: try}], try, try)
+      handleIdentifier(try, topLevelFunctionDeclaration)
+      handleNoTypeVariables(()
+      beginFormalParameters((, MemberKind.TopLevelMethod)
+        beginMetadataStar(int)
+        endMetadataStar(0)
+        beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+          handleIdentifier(int, typeReference)
+          handleNoTypeArguments(x)
+          handleType(int, null)
+          handleIdentifier(x, formalParameterDeclaration)
+          handleFormalParameterWithoutValue())
+        endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+      endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
+      handleAsyncModifier(null, null)
+      beginBlockFunctionBody({)
+        beginIfStatement(if)
+          handleIdentifier(x, expression)
+          handleNoTypeArguments(==)
+          handleNoArguments(==)
+          handleSend(x, ==)
+          beginBinaryExpression(==)
+          handleLiteralInt(0)
+          endBinaryExpression(==)
+          handleParenthesizedCondition(()
+          beginThenStatement(return)
+            beginReturnStatement(return)
+              handleLiteralInt(42)
+            endReturnStatement(true, return, ;)
+          endThenStatement(;)
+        endIfStatement(if, null)
+        beginReturnStatement(return)
+          handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'try'., null, {token: try}], try, try)
+          handleIdentifier(, expression)
+          handleNoTypeArguments(try)
+          handleNoArguments(try)
+          handleSend(, try)
+          handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], try, try)
+        endReturnStatement(true, return, ;)
+        beginTryStatement(try)
+          handleRecoverableError(Message[ExpectedClassOrMixinBody, A try statement must have a body, even if it is empty., Try adding an empty body., {string: try statement}], try, try)
+          beginBlock({, BlockKind(try statement))
+          endBlock(0, {, }, BlockKind(try statement))
+          handleRecoverableError(OnlyTry, try, try)
+        endTryStatement(0, try, null)
+        handleIdentifier(x, expression)
+        handleNoTypeArguments(-)
+        handleNoArguments(-)
+        handleSend(x, -)
+        beginBinaryExpression(-)
+        handleLiteralInt(1)
+        endBinaryExpression(-)
+        handleParenthesizedExpression(()
+        beginBinaryExpression(+)
+        handleLiteralInt(1)
+        endBinaryExpression(+)
+        handleExpressionStatement(;)
+      endBlockFunctionBody(4, {, })
+    endTopLevelMethod(int, null, })
+  endTopLevelDeclaration(int)
+  beginMetadataStar(int)
+  endMetadataStar(0)
+  beginTopLevelMember(int)
+    beginTopLevelMethod(}, null)
+      handleIdentifier(int, typeReference)
+      handleNoTypeArguments(var)
+      handleType(int, null)
+      handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'var'., null, {token: var}], var, var)
+      handleIdentifier(var, topLevelFunctionDeclaration)
+      handleNoTypeVariables(()
+      beginFormalParameters((, MemberKind.TopLevelMethod)
+        beginMetadataStar(int)
+        endMetadataStar(0)
+        beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+          handleIdentifier(int, typeReference)
+          handleNoTypeArguments(x)
+          handleType(int, null)
+          handleIdentifier(x, formalParameterDeclaration)
+          handleFormalParameterWithoutValue())
+        endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+      endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
+      handleAsyncModifier(null, null)
+      beginBlockFunctionBody({)
+        beginIfStatement(if)
+          handleIdentifier(x, expression)
+          handleNoTypeArguments(==)
+          handleNoArguments(==)
+          handleSend(x, ==)
+          beginBinaryExpression(==)
+          handleLiteralInt(0)
+          endBinaryExpression(==)
+          handleParenthesizedCondition(()
+          beginThenStatement(return)
+            beginReturnStatement(return)
+              handleLiteralInt(42)
+            endReturnStatement(true, return, ;)
+          endThenStatement(;)
+        endIfStatement(if, null)
+        beginReturnStatement(return)
+          handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'var'., null, {token: var}], var, var)
+          handleIdentifier(, expression)
+          handleNoTypeArguments(var)
+          handleNoArguments(var)
+          handleSend(, var)
+          handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], var, var)
+        endReturnStatement(true, return, ;)
+        beginMetadataStar(var)
+        endMetadataStar(0)
+        handleNoType(var)
+        beginVariablesDeclaration((, null, var)
+          handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}], (, ()
+          handleIdentifier(, localVariableDeclaration)
+          beginInitializedIdentifier()
+            handleNoVariableInitializer(x)
+          endInitializedIdentifier()
+          handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], x, x)
+        endVariablesDeclaration(1, ;)
+        handleIdentifier(x, expression)
+        handleNoTypeArguments(-)
+        handleNoArguments(-)
+        handleSend(x, -)
+        beginBinaryExpression(-)
+        handleLiteralInt(1)
+        endBinaryExpression(-)
+        handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], 1, 1)
+        handleExpressionStatement(;)
+        handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got ')'., null, {token: )}], ), ))
+        handleIdentifier(, expression)
+        handleNoTypeArguments())
+        handleNoArguments())
+        handleSend(, ))
+        handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], ), ))
+        handleExpressionStatement(;)
+        handleRecoverableError(Message[UnexpectedToken, Unexpected token ';'., null, {token: ;}], ), ))
+        handleRecoverableError(UnsupportedPrefixPlus, +, +)
+        handleIdentifier(, expression)
+        handleNoTypeArguments(+)
+        handleNoArguments(+)
+        handleSend(, +)
+        beginBinaryExpression(+)
+        handleLiteralInt(1)
+        endBinaryExpression(+)
+        handleExpressionStatement(;)
+      endBlockFunctionBody(6, {, })
+    endTopLevelMethod(int, null, })
+  endTopLevelDeclaration(int)
+  beginMetadataStar(int)
+  endMetadataStar(0)
+  beginTopLevelMember(int)
+    beginTopLevelMethod(}, null)
+      handleIdentifier(int, typeReference)
+      handleNoTypeArguments(void)
+      handleType(int, null)
+      handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'void'., null, {token: void}], void, void)
+      handleIdentifier(void, topLevelFunctionDeclaration)
+      handleNoTypeVariables(()
+      beginFormalParameters((, MemberKind.TopLevelMethod)
+        beginMetadataStar(int)
+        endMetadataStar(0)
+        beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+          handleIdentifier(int, typeReference)
+          handleNoTypeArguments(x)
+          handleType(int, null)
+          handleIdentifier(x, formalParameterDeclaration)
+          handleFormalParameterWithoutValue())
+        endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+      endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
+      handleAsyncModifier(null, null)
+      beginBlockFunctionBody({)
+        beginIfStatement(if)
+          handleIdentifier(x, expression)
+          handleNoTypeArguments(==)
+          handleNoArguments(==)
+          handleSend(x, ==)
+          beginBinaryExpression(==)
+          handleLiteralInt(0)
+          endBinaryExpression(==)
+          handleParenthesizedCondition(()
+          beginThenStatement(return)
+            beginReturnStatement(return)
+              handleLiteralInt(42)
+            endReturnStatement(true, return, ;)
+          endThenStatement(;)
+        endIfStatement(if, null)
+        beginReturnStatement(return)
+          handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'void'., null, {token: void}], void, void)
+          handleIdentifier(, expression)
+          handleNoTypeArguments(void)
+          handleNoArguments(void)
+          handleSend(, void)
+          handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], void, void)
+        endReturnStatement(true, return, ;)
+        beginMetadataStar(void)
+        endMetadataStar(0)
+        handleVoidKeyword(void)
+        beginVariablesDeclaration((, null, null)
+          handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}], (, ()
+          handleIdentifier(, localVariableDeclaration)
+          beginInitializedIdentifier()
+            handleNoVariableInitializer(x)
+          endInitializedIdentifier()
+          handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], x, x)
+        endVariablesDeclaration(1, ;)
+        handleIdentifier(x, expression)
+        handleNoTypeArguments(-)
+        handleNoArguments(-)
+        handleSend(x, -)
+        beginBinaryExpression(-)
+        handleLiteralInt(1)
+        endBinaryExpression(-)
+        handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], 1, 1)
+        handleExpressionStatement(;)
+        handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got ')'., null, {token: )}], ), ))
+        handleIdentifier(, expression)
+        handleNoTypeArguments())
+        handleNoArguments())
+        handleSend(, ))
+        handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], ), ))
+        handleExpressionStatement(;)
+        handleRecoverableError(Message[UnexpectedToken, Unexpected token ';'., null, {token: ;}], ), ))
+        handleRecoverableError(UnsupportedPrefixPlus, +, +)
+        handleIdentifier(, expression)
+        handleNoTypeArguments(+)
+        handleNoArguments(+)
+        handleSend(, +)
+        beginBinaryExpression(+)
+        handleLiteralInt(1)
+        endBinaryExpression(+)
+        handleExpressionStatement(;)
+      endBlockFunctionBody(6, {, })
+    endTopLevelMethod(int, null, })
+  endTopLevelDeclaration(int)
+  beginMetadataStar(int)
+  endMetadataStar(0)
+  beginTopLevelMember(int)
+    beginTopLevelMethod(}, null)
+      handleIdentifier(int, typeReference)
+      handleNoTypeArguments(while)
+      handleType(int, null)
+      handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'while'., null, {token: while}], while, while)
+      handleIdentifier(while, topLevelFunctionDeclaration)
+      handleNoTypeVariables(()
+      beginFormalParameters((, MemberKind.TopLevelMethod)
+        beginMetadataStar(int)
+        endMetadataStar(0)
+        beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+          handleIdentifier(int, typeReference)
+          handleNoTypeArguments(x)
+          handleType(int, null)
+          handleIdentifier(x, formalParameterDeclaration)
+          handleFormalParameterWithoutValue())
+        endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+      endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
+      handleAsyncModifier(null, null)
+      beginBlockFunctionBody({)
+        beginIfStatement(if)
+          handleIdentifier(x, expression)
+          handleNoTypeArguments(==)
+          handleNoArguments(==)
+          handleSend(x, ==)
+          beginBinaryExpression(==)
+          handleLiteralInt(0)
+          endBinaryExpression(==)
+          handleParenthesizedCondition(()
+          beginThenStatement(return)
+            beginReturnStatement(return)
+              handleLiteralInt(42)
+            endReturnStatement(true, return, ;)
+          endThenStatement(;)
+        endIfStatement(if, null)
+        beginReturnStatement(return)
+          handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'while'., null, {token: while}], while, while)
+          handleIdentifier(, expression)
+          handleNoTypeArguments(while)
+          handleNoArguments(while)
+          handleSend(, while)
+          handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], while, while)
+        endReturnStatement(true, return, ;)
+        beginWhileStatement(while)
+          handleIdentifier(x, expression)
+          handleNoTypeArguments(-)
+          handleNoArguments(-)
+          handleSend(x, -)
+          beginBinaryExpression(-)
+          handleLiteralInt(1)
+          endBinaryExpression(-)
+          handleParenthesizedCondition(()
+          beginWhileStatementBody(+)
+            handleRecoverableError(UnsupportedPrefixPlus, +, +)
+            handleIdentifier(, expression)
+            handleNoTypeArguments(+)
+            handleNoArguments(+)
+            handleSend(, +)
+            beginBinaryExpression(+)
+            handleLiteralInt(1)
+            endBinaryExpression(+)
+            handleExpressionStatement(;)
+          endWhileStatementBody(})
+        endWhileStatement(while, })
+      endBlockFunctionBody(3, {, })
+    endTopLevelMethod(int, null, })
+  endTopLevelDeclaration(int)
+  beginMetadataStar(int)
+  endMetadataStar(0)
+  beginTopLevelMember(int)
+    beginTopLevelMethod(}, null)
+      handleIdentifier(int, typeReference)
+      handleNoTypeArguments(with)
+      handleType(int, null)
+      handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'with'., null, {token: with}], with, with)
+      handleIdentifier(with, topLevelFunctionDeclaration)
+      handleNoTypeVariables(()
+      beginFormalParameters((, MemberKind.TopLevelMethod)
+        beginMetadataStar(int)
+        endMetadataStar(0)
+        beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+          handleIdentifier(int, typeReference)
+          handleNoTypeArguments(x)
+          handleType(int, null)
+          handleIdentifier(x, formalParameterDeclaration)
+          handleFormalParameterWithoutValue())
+        endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+      endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
+      handleAsyncModifier(null, null)
+      beginBlockFunctionBody({)
+        beginIfStatement(if)
+          handleIdentifier(x, expression)
+          handleNoTypeArguments(==)
+          handleNoArguments(==)
+          handleSend(x, ==)
+          beginBinaryExpression(==)
+          handleLiteralInt(0)
+          endBinaryExpression(==)
+          handleParenthesizedCondition(()
+          beginThenStatement(return)
+            beginReturnStatement(return)
+              handleLiteralInt(42)
+            endReturnStatement(true, return, ;)
+          endThenStatement(;)
+        endIfStatement(if, null)
+        beginReturnStatement(return)
+          handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'with'., null, {token: with}], with, with)
+          handleIdentifier(with, expression)
+          handleNoTypeArguments(()
+          beginArguments(()
+            handleIdentifier(x, expression)
+            handleNoTypeArguments(-)
+            handleNoArguments(-)
+            handleSend(x, -)
+            beginBinaryExpression(-)
+            handleLiteralInt(1)
+            endBinaryExpression(-)
+          endArguments(1, (, ))
+          handleSend(with, +)
+          beginBinaryExpression(+)
+          handleLiteralInt(1)
+          endBinaryExpression(+)
+        endReturnStatement(true, return, ;)
+      endBlockFunctionBody(2, {, })
+    endTopLevelMethod(int, null, })
+  endTopLevelDeclaration()
+endCompilationUnit(33, )
diff --git a/pkg/front_end/parser_testcases/error_recovery/reserved_words_top_level_fields.dart.intertwined.expect b/pkg/front_end/parser_testcases/error_recovery/reserved_words_top_level_fields.dart.intertwined.expect
index 90e26b1..3325638 100644
--- a/pkg/front_end/parser_testcases/error_recovery/reserved_words_top_level_fields.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/error_recovery/reserved_words_top_level_fields.dart.intertwined.expect
@@ -8,30 +8,14 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl()
       listener: beginTopLevelMember(int)
-      parseFields(, null, null, null, null, null, , Instance of 'NoType', int, DeclarationKind.TopLevel, null)
-        reportRecoverableError(int, MissingConstFinalVarOrType)
-          listener: handleRecoverableError(MissingConstFinalVarOrType, int, int)
-        listener: handleNoType()
-        ensureIdentifier(, topLevelVariableDeclaration)
-          listener: handleIdentifier(int, topLevelVariableDeclaration)
-        parseFieldInitializerOpt(int, int, null, null, DeclarationKind.TopLevel, null)
-          listener: handleNoFieldInitializer(assert)
-        ensureSemicolon(int)
-          reportRecoverableError(int, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
-            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
-          rewriter()
-        listener: endTopLevelFields(null, null, null, null, 1, int, ;)
-  listener: endTopLevelDeclaration(assert)
-  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
-    parseMetadataStar(;)
-      listener: beginMetadataStar(assert)
-      listener: endMetadataStar(0)
-    parseTopLevelMemberImpl(;)
-      listener: beginTopLevelMember(assert)
-      parseTopLevelMethod(;, null, ;, Instance of 'NoType', null, assert)
-        listener: beginTopLevelMethod(;, null)
-        listener: handleNoType(;)
-        ensureIdentifier(;, topLevelFunctionDeclaration)
+      isReservedKeyword(assert)
+      indicatesMethodOrField(()
+      parseTopLevelMethod(, null, , Instance of 'SimpleType', null, assert, true)
+        listener: beginTopLevelMethod(, null)
+        listener: handleIdentifier(int, typeReference)
+        listener: handleNoTypeArguments(assert)
+        listener: handleType(int, null)
+        ensureIdentifierPotentiallyRecovered(int, topLevelFunctionDeclaration, true)
           reportRecoverableErrorWithToken(assert, Instance of 'Template<(Token) => Message>')
             listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'assert'., null, {token: assert}], assert, assert)
           listener: handleIdentifier(assert, topLevelFunctionDeclaration)
@@ -149,7 +133,7 @@
                 inGenerator()
           notEofOrValue(}, })
           listener: endBlockFunctionBody(2, {, })
-        listener: endTopLevelMethod(assert, null, })
+        listener: endTopLevelMethod(int, null, })
   listener: endTopLevelDeclaration(int)
   parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
     parseMetadataStar(})
@@ -157,30 +141,14 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl(})
       listener: beginTopLevelMember(int)
-      parseFields(}, null, null, null, null, null, }, Instance of 'NoType', int, DeclarationKind.TopLevel, null)
-        reportRecoverableError(int, MissingConstFinalVarOrType)
-          listener: handleRecoverableError(MissingConstFinalVarOrType, int, int)
-        listener: handleNoType(})
-        ensureIdentifier(}, topLevelVariableDeclaration)
-          listener: handleIdentifier(int, topLevelVariableDeclaration)
-        parseFieldInitializerOpt(int, int, null, null, DeclarationKind.TopLevel, null)
-          listener: handleNoFieldInitializer(break)
-        ensureSemicolon(int)
-          reportRecoverableError(int, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
-            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
-          rewriter()
-        listener: endTopLevelFields(null, null, null, null, 1, int, ;)
-  listener: endTopLevelDeclaration(break)
-  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
-    parseMetadataStar(;)
-      listener: beginMetadataStar(break)
-      listener: endMetadataStar(0)
-    parseTopLevelMemberImpl(;)
-      listener: beginTopLevelMember(break)
-      parseTopLevelMethod(;, null, ;, Instance of 'NoType', null, break)
-        listener: beginTopLevelMethod(;, null)
-        listener: handleNoType(;)
-        ensureIdentifier(;, topLevelFunctionDeclaration)
+      isReservedKeyword(break)
+      indicatesMethodOrField(()
+      parseTopLevelMethod(}, null, }, Instance of 'SimpleType', null, break, true)
+        listener: beginTopLevelMethod(}, null)
+        listener: handleIdentifier(int, typeReference)
+        listener: handleNoTypeArguments(break)
+        listener: handleType(int, null)
+        ensureIdentifierPotentiallyRecovered(int, topLevelFunctionDeclaration, true)
           reportRecoverableErrorWithToken(break, Instance of 'Template<(Token) => Message>')
             listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'break'., null, {token: break}], break, break)
           listener: handleIdentifier(break, topLevelFunctionDeclaration)
@@ -337,7 +305,7 @@
                     listener: handleExpressionStatement(;)
           notEofOrValue(}, })
           listener: endBlockFunctionBody(4, {, })
-        listener: endTopLevelMethod(break, null, })
+        listener: endTopLevelMethod(int, null, })
   listener: endTopLevelDeclaration(int)
   parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
     parseMetadataStar(})
@@ -345,30 +313,14 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl(})
       listener: beginTopLevelMember(int)
-      parseFields(}, null, null, null, null, null, }, Instance of 'NoType', int, DeclarationKind.TopLevel, null)
-        reportRecoverableError(int, MissingConstFinalVarOrType)
-          listener: handleRecoverableError(MissingConstFinalVarOrType, int, int)
-        listener: handleNoType(})
-        ensureIdentifier(}, topLevelVariableDeclaration)
-          listener: handleIdentifier(int, topLevelVariableDeclaration)
-        parseFieldInitializerOpt(int, int, null, null, DeclarationKind.TopLevel, null)
-          listener: handleNoFieldInitializer(case)
-        ensureSemicolon(int)
-          reportRecoverableError(int, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
-            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
-          rewriter()
-        listener: endTopLevelFields(null, null, null, null, 1, int, ;)
-  listener: endTopLevelDeclaration(case)
-  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
-    parseMetadataStar(;)
-      listener: beginMetadataStar(case)
-      listener: endMetadataStar(0)
-    parseTopLevelMemberImpl(;)
-      listener: beginTopLevelMember(case)
-      parseTopLevelMethod(;, null, ;, Instance of 'NoType', null, case)
-        listener: beginTopLevelMethod(;, null)
-        listener: handleNoType(;)
-        ensureIdentifier(;, topLevelFunctionDeclaration)
+      isReservedKeyword(case)
+      indicatesMethodOrField(()
+      parseTopLevelMethod(}, null, }, Instance of 'SimpleType', null, case, true)
+        listener: beginTopLevelMethod(}, null)
+        listener: handleIdentifier(int, typeReference)
+        listener: handleNoTypeArguments(case)
+        listener: handleType(int, null)
+        ensureIdentifierPotentiallyRecovered(int, topLevelFunctionDeclaration, true)
           reportRecoverableErrorWithToken(case, Instance of 'Template<(Token) => Message>')
             listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'case'., null, {token: case}], case, case)
           listener: handleIdentifier(case, topLevelFunctionDeclaration)
@@ -493,7 +445,7 @@
                 inGenerator()
           notEofOrValue(}, })
           listener: endBlockFunctionBody(2, {, })
-        listener: endTopLevelMethod(case, null, })
+        listener: endTopLevelMethod(int, null, })
   listener: endTopLevelDeclaration(int)
   parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
     parseMetadataStar(})
@@ -501,30 +453,14 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl(})
       listener: beginTopLevelMember(int)
-      parseFields(}, null, null, null, null, null, }, Instance of 'NoType', int, DeclarationKind.TopLevel, null)
-        reportRecoverableError(int, MissingConstFinalVarOrType)
-          listener: handleRecoverableError(MissingConstFinalVarOrType, int, int)
-        listener: handleNoType(})
-        ensureIdentifier(}, topLevelVariableDeclaration)
-          listener: handleIdentifier(int, topLevelVariableDeclaration)
-        parseFieldInitializerOpt(int, int, null, null, DeclarationKind.TopLevel, null)
-          listener: handleNoFieldInitializer(catch)
-        ensureSemicolon(int)
-          reportRecoverableError(int, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
-            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
-          rewriter()
-        listener: endTopLevelFields(null, null, null, null, 1, int, ;)
-  listener: endTopLevelDeclaration(catch)
-  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
-    parseMetadataStar(;)
-      listener: beginMetadataStar(catch)
-      listener: endMetadataStar(0)
-    parseTopLevelMemberImpl(;)
-      listener: beginTopLevelMember(catch)
-      parseTopLevelMethod(;, null, ;, Instance of 'NoType', null, catch)
-        listener: beginTopLevelMethod(;, null)
-        listener: handleNoType(;)
-        ensureIdentifier(;, topLevelFunctionDeclaration)
+      isReservedKeyword(catch)
+      indicatesMethodOrField(()
+      parseTopLevelMethod(}, null, }, Instance of 'SimpleType', null, catch, true)
+        listener: beginTopLevelMethod(}, null)
+        listener: handleIdentifier(int, typeReference)
+        listener: handleNoTypeArguments(catch)
+        listener: handleType(int, null)
+        ensureIdentifierPotentiallyRecovered(int, topLevelFunctionDeclaration, true)
           reportRecoverableErrorWithToken(catch, Instance of 'Template<(Token) => Message>')
             listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'catch'., null, {token: catch}], catch, catch)
           listener: handleIdentifier(catch, topLevelFunctionDeclaration)
@@ -649,7 +585,7 @@
                 inGenerator()
           notEofOrValue(}, })
           listener: endBlockFunctionBody(2, {, })
-        listener: endTopLevelMethod(catch, null, })
+        listener: endTopLevelMethod(int, null, })
   listener: endTopLevelDeclaration(int)
   parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
     parseMetadataStar(})
@@ -657,113 +593,41 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl(})
       listener: beginTopLevelMember(int)
-      parseFields(}, null, null, null, null, null, }, Instance of 'NoType', int, DeclarationKind.TopLevel, null)
-        reportRecoverableError(int, MissingConstFinalVarOrType)
-          listener: handleRecoverableError(MissingConstFinalVarOrType, int, int)
-        listener: handleNoType(})
-        ensureIdentifier(}, topLevelVariableDeclaration)
-          listener: handleIdentifier(int, topLevelVariableDeclaration)
-        parseFieldInitializerOpt(int, int, null, null, DeclarationKind.TopLevel, null)
-          listener: handleNoFieldInitializer(class)
-        ensureSemicolon(int)
-          reportRecoverableError(int, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
-            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
-          rewriter()
-        listener: endTopLevelFields(null, null, null, null, 1, int, ;)
-  listener: endTopLevelDeclaration(class)
-  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
-    parseMetadataStar(;)
-      listener: beginMetadataStar(class)
-      listener: endMetadataStar(0)
-    parseTopLevelKeywordDeclaration(;, class, Instance of 'DirectiveContext')
-      parseClassDeclarationModifiers(;, class)
-      parseClassOrNamedMixinApplication(null, class)
-        listener: beginClassOrNamedMixinApplicationPrelude(class)
-        ensureIdentifier(class, classOrMixinDeclaration)
-          reportRecoverableErrorWithToken((, Instance of 'Template<(Token) => Message>')
-            listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}], (, ()
-          rewriter()
-          listener: handleIdentifier(, classOrMixinDeclaration)
-        listener: handleNoTypeVariables(int)
-        listener: beginClassDeclaration(class, null, )
-        parseClass(, class, class, )
-          parseClassHeaderOpt(, class, class)
-            parseClassExtendsOpt()
-              listener: handleNoType()
-              listener: handleClassExtends(null)
-            parseWithClauseOpt()
-              listener: handleClassNoWithClause()
-            parseClassOrMixinImplementsOpt()
-              listener: handleClassOrMixinImplements(null, 0)
-            listener: handleClassHeader(class, class, null)
-          parseClassHeaderRecovery(, class, class)
-            parseClassHeaderOpt(, class, class)
-              parseClassExtendsOpt()
-              parseWithClauseOpt()
-              parseClassOrMixinImplementsOpt()
-            skipUnexpectedTokenOpt(, [extends, with, implements, {])
-            parseClassExtendsOpt()
-              listener: handleNoType()
-              listener: handleClassExtends(null)
-            parseWithClauseOpt()
-              listener: handleClassNoWithClause()
-            parseClassOrMixinImplementsOpt()
-              listener: handleClassOrMixinImplements(null, 0)
-            listener: handleRecoverClassHeader()
-          ensureBlock(, null, class declaration)
-            reportRecoverableError(, Message[ExpectedClassOrMixinBody, A class declaration must have a body, even if it is empty., Try adding an empty body., {string: class declaration}])
-              listener: handleRecoverableError(Message[ExpectedClassOrMixinBody, A class declaration must have a body, even if it is empty., Try adding an empty body., {string: class declaration}], int, int)
-            insertBlock()
-              rewriter()
-              rewriter()
-          parseClassOrMixinOrExtensionBody(, DeclarationKind.Class, )
-            listener: beginClassOrMixinBody(DeclarationKind.Class, {)
-            notEofOrValue(}, })
-            listener: endClassOrMixinBody(DeclarationKind.Class, 0, {, })
-          listener: endClassDeclaration(class, })
-  listener: endTopLevelDeclaration(int)
-  parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
-    parseMetadataStar(})
-      listener: beginMetadataStar(int)
-      listener: endMetadataStar(0)
-    parseTopLevelMemberImpl(})
-      listener: beginTopLevelMember(int)
-      parseFields(}, null, null, null, null, null, }, Instance of 'SimpleType', x, DeclarationKind.TopLevel, null)
+      isReservedKeyword(class)
+      indicatesMethodOrField(()
+      parseTopLevelMethod(}, null, }, Instance of 'SimpleType', null, class, true)
+        listener: beginTopLevelMethod(}, null)
         listener: handleIdentifier(int, typeReference)
-        listener: handleNoTypeArguments(x)
+        listener: handleNoTypeArguments(class)
         listener: handleType(int, null)
-        ensureIdentifier(int, topLevelVariableDeclaration)
-          listener: handleIdentifier(x, topLevelVariableDeclaration)
-        parseFieldInitializerOpt(x, x, null, null, DeclarationKind.TopLevel, null)
-          listener: handleNoFieldInitializer())
-        ensureSemicolon(x)
-          reportRecoverableError(x, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
-            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], x, x)
-          rewriter()
-        listener: endTopLevelFields(null, null, null, null, 1, int, ;)
-  listener: endTopLevelDeclaration())
-  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
-    parseMetadataStar(;)
-      listener: beginMetadataStar())
-      listener: endMetadataStar(0)
-    listener: beginTopLevelMember())
-    parseInvalidTopLevelDeclaration(;)
-      reportRecoverableErrorWithToken(), Instance of 'Template<(Token) => Message>')
-        listener: handleRecoverableError(Message[ExpectedDeclaration, Expected a declaration, but got ')'., null, {token: )}], ), ))
-      listener: handleInvalidTopLevelDeclaration())
-  listener: endTopLevelDeclaration({)
-  parseTopLevelDeclarationImpl(), Instance of 'DirectiveContext')
-    parseMetadataStar())
-      listener: beginMetadataStar({)
-      listener: endMetadataStar(0)
-    listener: beginTopLevelMember({)
-    parseInvalidTopLevelDeclaration())
-      reportRecoverableErrorWithToken({, Instance of 'Template<(Token) => Message>')
-        listener: handleRecoverableError(Message[ExpectedDeclaration, Expected a declaration, but got '{'., null, {token: {}], {, {)
-      parseInvalidBlock())
-        parseBlock(), BlockKind(invalid))
-          ensureBlock(), null, null)
-          listener: beginBlock({, BlockKind(invalid))
+        ensureIdentifierPotentiallyRecovered(int, topLevelFunctionDeclaration, true)
+          reportRecoverableErrorWithToken(class, Instance of 'Template<(Token) => Message>')
+            listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'class'., null, {token: class}], class, class)
+          listener: handleIdentifier(class, topLevelFunctionDeclaration)
+        parseMethodTypeVar(class)
+          listener: handleNoTypeVariables(()
+        parseGetterOrFormalParameters(class, class, false, MemberKind.TopLevelMethod)
+          parseFormalParameters(class, MemberKind.TopLevelMethod)
+            parseFormalParametersRest((, MemberKind.TopLevelMethod)
+              listener: beginFormalParameters((, MemberKind.TopLevelMethod)
+              parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+                parseMetadataStar(()
+                  listener: beginMetadataStar(int)
+                  listener: endMetadataStar(0)
+                listener: beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+                listener: handleIdentifier(int, typeReference)
+                listener: handleNoTypeArguments(x)
+                listener: handleType(int, null)
+                ensureIdentifier(int, formalParameterDeclaration)
+                  listener: handleIdentifier(x, formalParameterDeclaration)
+                listener: handleFormalParameterWithoutValue())
+                listener: endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+              listener: endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
+        parseAsyncModifierOpt())
+          listener: handleAsyncModifier(null, null)
+          inPlainSync()
+        parseFunctionBody(), false, false)
+          listener: beginBlockFunctionBody({)
           notEofOrValue(}, if)
           parseStatement({)
             parseStatementX({)
@@ -821,6 +685,7 @@
                         parseSend(return, expression)
                           ensureIdentifier(return, expression)
                             reportRecoverableErrorWithToken(class, Instance of 'Template<(Token) => Message>')
+                              listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'class'., null, {token: class}], class, class)
                             listener: handleIdentifier(class, expression)
                           listener: handleNoTypeArguments(()
                           parseArgumentsOpt(class)
@@ -859,9 +724,8 @@
                 listener: endReturnStatement(true, return, ;)
                 inGenerator()
           notEofOrValue(}, })
-          listener: endBlock(2, {, }, BlockKind(invalid))
-        listener: handleInvalidTopLevelBlock({)
-      listener: handleInvalidTopLevelDeclaration(})
+          listener: endBlockFunctionBody(2, {, })
+        listener: endTopLevelMethod(int, null, })
   listener: endTopLevelDeclaration(int)
   parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
     parseMetadataStar(})
@@ -869,41 +733,21 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl(})
       listener: beginTopLevelMember(int)
-      parseFields(}, null, null, null, null, null, }, Instance of 'NoType', int, DeclarationKind.TopLevel, null)
-        reportRecoverableError(int, MissingConstFinalVarOrType)
-          listener: handleRecoverableError(MissingConstFinalVarOrType, int, int)
-        listener: handleNoType(})
-        ensureIdentifier(}, topLevelVariableDeclaration)
-          listener: handleIdentifier(int, topLevelVariableDeclaration)
-        parseFieldInitializerOpt(int, int, null, null, DeclarationKind.TopLevel, null)
-          listener: handleNoFieldInitializer(const)
-        ensureSemicolon(int)
-          reportRecoverableError(int, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
-            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
-          rewriter()
-        listener: endTopLevelFields(null, null, null, null, 1, int, ;)
-  listener: endTopLevelDeclaration(const)
-  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
-    parseMetadataStar(;)
-      listener: beginMetadataStar(const)
-      listener: endMetadataStar(0)
-    parseTopLevelMemberImpl(;)
-      listener: beginTopLevelMember(const)
-      insertSyntheticIdentifier(const, methodDeclaration, message: null, messageOnToken: null)
-        reportRecoverableError((, Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}])
-          listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}], (, ()
-        rewriter()
-      reportRecoverableErrorWithToken(const, Instance of 'Template<(Token) => Message>')
-        listener: handleRecoverableError(Message[ExtraneousModifier, Can't have modifier 'const' here., Try removing 'const'., {token: const}], const, const)
-      parseTopLevelMethod(;, null, const, Instance of 'NoType', null, )
-        listener: beginTopLevelMethod(;, null)
-        listener: handleNoType(const)
-        ensureIdentifier(const, topLevelFunctionDeclaration)
-          listener: handleIdentifier(, topLevelFunctionDeclaration)
-        parseMethodTypeVar()
+      isReservedKeyword(const)
+      indicatesMethodOrField(()
+      parseTopLevelMethod(}, null, }, Instance of 'SimpleType', null, const, true)
+        listener: beginTopLevelMethod(}, null)
+        listener: handleIdentifier(int, typeReference)
+        listener: handleNoTypeArguments(const)
+        listener: handleType(int, null)
+        ensureIdentifierPotentiallyRecovered(int, topLevelFunctionDeclaration, true)
+          reportRecoverableErrorWithToken(const, Instance of 'Template<(Token) => Message>')
+            listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'const'., null, {token: const}], const, const)
+          listener: handleIdentifier(const, topLevelFunctionDeclaration)
+        parseMethodTypeVar(const)
           listener: handleNoTypeVariables(()
-        parseGetterOrFormalParameters(, , false, MemberKind.TopLevelMethod)
-          parseFormalParameters(, MemberKind.TopLevelMethod)
+        parseGetterOrFormalParameters(const, const, false, MemberKind.TopLevelMethod)
+          parseFormalParameters(const, MemberKind.TopLevelMethod)
             parseFormalParametersRest((, MemberKind.TopLevelMethod)
               listener: beginFormalParameters((, MemberKind.TopLevelMethod)
               parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
@@ -1027,7 +871,7 @@
                 inGenerator()
           notEofOrValue(}, })
           listener: endBlockFunctionBody(2, {, })
-        listener: endTopLevelMethod(const, null, })
+        listener: endTopLevelMethod(int, null, })
   listener: endTopLevelDeclaration(int)
   parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
     parseMetadataStar(})
@@ -1035,30 +879,14 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl(})
       listener: beginTopLevelMember(int)
-      parseFields(}, null, null, null, null, null, }, Instance of 'NoType', int, DeclarationKind.TopLevel, null)
-        reportRecoverableError(int, MissingConstFinalVarOrType)
-          listener: handleRecoverableError(MissingConstFinalVarOrType, int, int)
-        listener: handleNoType(})
-        ensureIdentifier(}, topLevelVariableDeclaration)
-          listener: handleIdentifier(int, topLevelVariableDeclaration)
-        parseFieldInitializerOpt(int, int, null, null, DeclarationKind.TopLevel, null)
-          listener: handleNoFieldInitializer(continue)
-        ensureSemicolon(int)
-          reportRecoverableError(int, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
-            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
-          rewriter()
-        listener: endTopLevelFields(null, null, null, null, 1, int, ;)
-  listener: endTopLevelDeclaration(continue)
-  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
-    parseMetadataStar(;)
-      listener: beginMetadataStar(continue)
-      listener: endMetadataStar(0)
-    parseTopLevelMemberImpl(;)
-      listener: beginTopLevelMember(continue)
-      parseTopLevelMethod(;, null, ;, Instance of 'NoType', null, continue)
-        listener: beginTopLevelMethod(;, null)
-        listener: handleNoType(;)
-        ensureIdentifier(;, topLevelFunctionDeclaration)
+      isReservedKeyword(continue)
+      indicatesMethodOrField(()
+      parseTopLevelMethod(}, null, }, Instance of 'SimpleType', null, continue, true)
+        listener: beginTopLevelMethod(}, null)
+        listener: handleIdentifier(int, typeReference)
+        listener: handleNoTypeArguments(continue)
+        listener: handleType(int, null)
+        ensureIdentifierPotentiallyRecovered(int, topLevelFunctionDeclaration, true)
           reportRecoverableErrorWithToken(continue, Instance of 'Template<(Token) => Message>')
             listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'continue'., null, {token: continue}], continue, continue)
           listener: handleIdentifier(continue, topLevelFunctionDeclaration)
@@ -1215,7 +1043,7 @@
                     listener: handleExpressionStatement(;)
           notEofOrValue(}, })
           listener: endBlockFunctionBody(4, {, })
-        listener: endTopLevelMethod(continue, null, })
+        listener: endTopLevelMethod(int, null, })
   listener: endTopLevelDeclaration(int)
   parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
     parseMetadataStar(})
@@ -1223,30 +1051,14 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl(})
       listener: beginTopLevelMember(int)
-      parseFields(}, null, null, null, null, null, }, Instance of 'NoType', int, DeclarationKind.TopLevel, null)
-        reportRecoverableError(int, MissingConstFinalVarOrType)
-          listener: handleRecoverableError(MissingConstFinalVarOrType, int, int)
-        listener: handleNoType(})
-        ensureIdentifier(}, topLevelVariableDeclaration)
-          listener: handleIdentifier(int, topLevelVariableDeclaration)
-        parseFieldInitializerOpt(int, int, null, null, DeclarationKind.TopLevel, null)
-          listener: handleNoFieldInitializer(default)
-        ensureSemicolon(int)
-          reportRecoverableError(int, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
-            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
-          rewriter()
-        listener: endTopLevelFields(null, null, null, null, 1, int, ;)
-  listener: endTopLevelDeclaration(default)
-  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
-    parseMetadataStar(;)
-      listener: beginMetadataStar(default)
-      listener: endMetadataStar(0)
-    parseTopLevelMemberImpl(;)
-      listener: beginTopLevelMember(default)
-      parseTopLevelMethod(;, null, ;, Instance of 'NoType', null, default)
-        listener: beginTopLevelMethod(;, null)
-        listener: handleNoType(;)
-        ensureIdentifier(;, topLevelFunctionDeclaration)
+      isReservedKeyword(default)
+      indicatesMethodOrField(()
+      parseTopLevelMethod(}, null, }, Instance of 'SimpleType', null, default, true)
+        listener: beginTopLevelMethod(}, null)
+        listener: handleIdentifier(int, typeReference)
+        listener: handleNoTypeArguments(default)
+        listener: handleType(int, null)
+        ensureIdentifierPotentiallyRecovered(int, topLevelFunctionDeclaration, true)
           reportRecoverableErrorWithToken(default, Instance of 'Template<(Token) => Message>')
             listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'default'., null, {token: default}], default, default)
           listener: handleIdentifier(default, topLevelFunctionDeclaration)
@@ -1371,7 +1183,7 @@
                 inGenerator()
           notEofOrValue(}, })
           listener: endBlockFunctionBody(2, {, })
-        listener: endTopLevelMethod(default, null, })
+        listener: endTopLevelMethod(int, null, })
   listener: endTopLevelDeclaration(int)
   parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
     parseMetadataStar(})
@@ -1379,30 +1191,14 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl(})
       listener: beginTopLevelMember(int)
-      parseFields(}, null, null, null, null, null, }, Instance of 'NoType', int, DeclarationKind.TopLevel, null)
-        reportRecoverableError(int, MissingConstFinalVarOrType)
-          listener: handleRecoverableError(MissingConstFinalVarOrType, int, int)
-        listener: handleNoType(})
-        ensureIdentifier(}, topLevelVariableDeclaration)
-          listener: handleIdentifier(int, topLevelVariableDeclaration)
-        parseFieldInitializerOpt(int, int, null, null, DeclarationKind.TopLevel, null)
-          listener: handleNoFieldInitializer(do)
-        ensureSemicolon(int)
-          reportRecoverableError(int, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
-            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
-          rewriter()
-        listener: endTopLevelFields(null, null, null, null, 1, int, ;)
-  listener: endTopLevelDeclaration(do)
-  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
-    parseMetadataStar(;)
-      listener: beginMetadataStar(do)
-      listener: endMetadataStar(0)
-    parseTopLevelMemberImpl(;)
-      listener: beginTopLevelMember(do)
-      parseTopLevelMethod(;, null, ;, Instance of 'NoType', null, do)
-        listener: beginTopLevelMethod(;, null)
-        listener: handleNoType(;)
-        ensureIdentifier(;, topLevelFunctionDeclaration)
+      isReservedKeyword(do)
+      indicatesMethodOrField(()
+      parseTopLevelMethod(}, null, }, Instance of 'SimpleType', null, do, true)
+        listener: beginTopLevelMethod(}, null)
+        listener: handleIdentifier(int, typeReference)
+        listener: handleNoTypeArguments(do)
+        listener: handleType(int, null)
+        ensureIdentifierPotentiallyRecovered(int, topLevelFunctionDeclaration, true)
           reportRecoverableErrorWithToken(do, Instance of 'Template<(Token) => Message>')
             listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'do'., null, {token: do}], do, do)
           listener: handleIdentifier(do, topLevelFunctionDeclaration)
@@ -1582,7 +1378,7 @@
                 listener: endDoWhileStatement(do, while, ;)
           notEofOrValue(}, })
           listener: endBlockFunctionBody(3, {, })
-        listener: endTopLevelMethod(do, null, })
+        listener: endTopLevelMethod(int, null, })
   listener: endTopLevelDeclaration(int)
   parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
     parseMetadataStar(})
@@ -1590,30 +1386,14 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl(})
       listener: beginTopLevelMember(int)
-      parseFields(}, null, null, null, null, null, }, Instance of 'NoType', int, DeclarationKind.TopLevel, null)
-        reportRecoverableError(int, MissingConstFinalVarOrType)
-          listener: handleRecoverableError(MissingConstFinalVarOrType, int, int)
-        listener: handleNoType(})
-        ensureIdentifier(}, topLevelVariableDeclaration)
-          listener: handleIdentifier(int, topLevelVariableDeclaration)
-        parseFieldInitializerOpt(int, int, null, null, DeclarationKind.TopLevel, null)
-          listener: handleNoFieldInitializer(else)
-        ensureSemicolon(int)
-          reportRecoverableError(int, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
-            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
-          rewriter()
-        listener: endTopLevelFields(null, null, null, null, 1, int, ;)
-  listener: endTopLevelDeclaration(else)
-  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
-    parseMetadataStar(;)
-      listener: beginMetadataStar(else)
-      listener: endMetadataStar(0)
-    parseTopLevelMemberImpl(;)
-      listener: beginTopLevelMember(else)
-      parseTopLevelMethod(;, null, ;, Instance of 'NoType', null, else)
-        listener: beginTopLevelMethod(;, null)
-        listener: handleNoType(;)
-        ensureIdentifier(;, topLevelFunctionDeclaration)
+      isReservedKeyword(else)
+      indicatesMethodOrField(()
+      parseTopLevelMethod(}, null, }, Instance of 'SimpleType', null, else, true)
+        listener: beginTopLevelMethod(}, null)
+        listener: handleIdentifier(int, typeReference)
+        listener: handleNoTypeArguments(else)
+        listener: handleType(int, null)
+        ensureIdentifierPotentiallyRecovered(int, topLevelFunctionDeclaration, true)
           reportRecoverableErrorWithToken(else, Instance of 'Template<(Token) => Message>')
             listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'else'., null, {token: else}], else, else)
           listener: handleIdentifier(else, topLevelFunctionDeclaration)
@@ -1787,7 +1567,7 @@
                     listener: handleExpressionStatement(;)
           notEofOrValue(}, })
           listener: endBlockFunctionBody(4, {, })
-        listener: endTopLevelMethod(else, null, })
+        listener: endTopLevelMethod(int, null, })
   listener: endTopLevelDeclaration(int)
   parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
     parseMetadataStar(})
@@ -1795,83 +1575,41 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl(})
       listener: beginTopLevelMember(int)
-      parseFields(}, null, null, null, null, null, }, Instance of 'NoType', int, DeclarationKind.TopLevel, null)
-        reportRecoverableError(int, MissingConstFinalVarOrType)
-          listener: handleRecoverableError(MissingConstFinalVarOrType, int, int)
-        listener: handleNoType(})
-        ensureIdentifier(}, topLevelVariableDeclaration)
-          listener: handleIdentifier(int, topLevelVariableDeclaration)
-        parseFieldInitializerOpt(int, int, null, null, DeclarationKind.TopLevel, null)
-          listener: handleNoFieldInitializer(enum)
-        ensureSemicolon(int)
-          reportRecoverableError(int, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
-            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
-          rewriter()
-        listener: endTopLevelFields(null, null, null, null, 1, int, ;)
-  listener: endTopLevelDeclaration(enum)
-  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
-    parseMetadataStar(;)
-      listener: beginMetadataStar(enum)
-      listener: endMetadataStar(0)
-    parseTopLevelKeywordDeclaration(;, enum, Instance of 'DirectiveContext')
-      parseTopLevelKeywordModifiers(;, enum)
-      parseEnum(enum)
-        listener: beginEnum(enum)
-        ensureIdentifier(enum, enumDeclaration)
-          reportRecoverableErrorWithToken((, Instance of 'Template<(Token) => Message>')
-            listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}], (, ()
-          rewriter()
-          listener: handleIdentifier(, enumDeclaration)
-        ensureBlock(, Instance of 'Template<(Token) => Message>', null)
-          reportRecoverableError(int, Message[ExpectedEnumBody, Expected a enum body, but got 'int'., An enum definition must have a body with at least one constant name., {token: int}])
-            listener: handleRecoverableError(Message[ExpectedEnumBody, Expected a enum body, but got 'int'., An enum definition must have a body with at least one constant name., {token: int}], int, int)
-          insertBlock()
-            rewriter()
-            rewriter()
-        listener: endEnum(enum, {, 0)
-  listener: endTopLevelDeclaration(int)
-  parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
-    parseMetadataStar(})
-      listener: beginMetadataStar(int)
-      listener: endMetadataStar(0)
-    parseTopLevelMemberImpl(})
-      listener: beginTopLevelMember(int)
-      parseFields(}, null, null, null, null, null, }, Instance of 'SimpleType', x, DeclarationKind.TopLevel, null)
+      isReservedKeyword(enum)
+      indicatesMethodOrField(()
+      parseTopLevelMethod(}, null, }, Instance of 'SimpleType', null, enum, true)
+        listener: beginTopLevelMethod(}, null)
         listener: handleIdentifier(int, typeReference)
-        listener: handleNoTypeArguments(x)
+        listener: handleNoTypeArguments(enum)
         listener: handleType(int, null)
-        ensureIdentifier(int, topLevelVariableDeclaration)
-          listener: handleIdentifier(x, topLevelVariableDeclaration)
-        parseFieldInitializerOpt(x, x, null, null, DeclarationKind.TopLevel, null)
-          listener: handleNoFieldInitializer())
-        ensureSemicolon(x)
-          reportRecoverableError(x, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
-            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], x, x)
-          rewriter()
-        listener: endTopLevelFields(null, null, null, null, 1, int, ;)
-  listener: endTopLevelDeclaration())
-  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
-    parseMetadataStar(;)
-      listener: beginMetadataStar())
-      listener: endMetadataStar(0)
-    listener: beginTopLevelMember())
-    parseInvalidTopLevelDeclaration(;)
-      reportRecoverableErrorWithToken(), Instance of 'Template<(Token) => Message>')
-        listener: handleRecoverableError(Message[ExpectedDeclaration, Expected a declaration, but got ')'., null, {token: )}], ), ))
-      listener: handleInvalidTopLevelDeclaration())
-  listener: endTopLevelDeclaration({)
-  parseTopLevelDeclarationImpl(), Instance of 'DirectiveContext')
-    parseMetadataStar())
-      listener: beginMetadataStar({)
-      listener: endMetadataStar(0)
-    listener: beginTopLevelMember({)
-    parseInvalidTopLevelDeclaration())
-      reportRecoverableErrorWithToken({, Instance of 'Template<(Token) => Message>')
-        listener: handleRecoverableError(Message[ExpectedDeclaration, Expected a declaration, but got '{'., null, {token: {}], {, {)
-      parseInvalidBlock())
-        parseBlock(), BlockKind(invalid))
-          ensureBlock(), null, null)
-          listener: beginBlock({, BlockKind(invalid))
+        ensureIdentifierPotentiallyRecovered(int, topLevelFunctionDeclaration, true)
+          reportRecoverableErrorWithToken(enum, Instance of 'Template<(Token) => Message>')
+            listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'enum'., null, {token: enum}], enum, enum)
+          listener: handleIdentifier(enum, topLevelFunctionDeclaration)
+        parseMethodTypeVar(enum)
+          listener: handleNoTypeVariables(()
+        parseGetterOrFormalParameters(enum, enum, false, MemberKind.TopLevelMethod)
+          parseFormalParameters(enum, MemberKind.TopLevelMethod)
+            parseFormalParametersRest((, MemberKind.TopLevelMethod)
+              listener: beginFormalParameters((, MemberKind.TopLevelMethod)
+              parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+                parseMetadataStar(()
+                  listener: beginMetadataStar(int)
+                  listener: endMetadataStar(0)
+                listener: beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+                listener: handleIdentifier(int, typeReference)
+                listener: handleNoTypeArguments(x)
+                listener: handleType(int, null)
+                ensureIdentifier(int, formalParameterDeclaration)
+                  listener: handleIdentifier(x, formalParameterDeclaration)
+                listener: handleFormalParameterWithoutValue())
+                listener: endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+              listener: endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
+        parseAsyncModifierOpt())
+          listener: handleAsyncModifier(null, null)
+          inPlainSync()
+        parseFunctionBody(), false, false)
+          listener: beginBlockFunctionBody({)
           notEofOrValue(}, if)
           parseStatement({)
             parseStatementX({)
@@ -1929,6 +1667,7 @@
                         parseSend(return, expression)
                           ensureIdentifier(return, expression)
                             reportRecoverableErrorWithToken(enum, Instance of 'Template<(Token) => Message>')
+                              listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'enum'., null, {token: enum}], enum, enum)
                             listener: handleIdentifier(enum, expression)
                           listener: handleNoTypeArguments(()
                           parseArgumentsOpt(enum)
@@ -1967,9 +1706,8 @@
                 listener: endReturnStatement(true, return, ;)
                 inGenerator()
           notEofOrValue(}, })
-          listener: endBlock(2, {, }, BlockKind(invalid))
-        listener: handleInvalidTopLevelBlock({)
-      listener: handleInvalidTopLevelDeclaration(})
+          listener: endBlockFunctionBody(2, {, })
+        listener: endTopLevelMethod(int, null, })
   listener: endTopLevelDeclaration(int)
   parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
     parseMetadataStar(})
@@ -1977,30 +1715,14 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl(})
       listener: beginTopLevelMember(int)
-      parseFields(}, null, null, null, null, null, }, Instance of 'NoType', int, DeclarationKind.TopLevel, null)
-        reportRecoverableError(int, MissingConstFinalVarOrType)
-          listener: handleRecoverableError(MissingConstFinalVarOrType, int, int)
-        listener: handleNoType(})
-        ensureIdentifier(}, topLevelVariableDeclaration)
-          listener: handleIdentifier(int, topLevelVariableDeclaration)
-        parseFieldInitializerOpt(int, int, null, null, DeclarationKind.TopLevel, null)
-          listener: handleNoFieldInitializer(extends)
-        ensureSemicolon(int)
-          reportRecoverableError(int, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
-            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
-          rewriter()
-        listener: endTopLevelFields(null, null, null, null, 1, int, ;)
-  listener: endTopLevelDeclaration(extends)
-  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
-    parseMetadataStar(;)
-      listener: beginMetadataStar(extends)
-      listener: endMetadataStar(0)
-    parseTopLevelMemberImpl(;)
-      listener: beginTopLevelMember(extends)
-      parseTopLevelMethod(;, null, ;, Instance of 'NoType', null, extends)
-        listener: beginTopLevelMethod(;, null)
-        listener: handleNoType(;)
-        ensureIdentifier(;, topLevelFunctionDeclaration)
+      isReservedKeyword(extends)
+      indicatesMethodOrField(()
+      parseTopLevelMethod(}, null, }, Instance of 'SimpleType', null, extends, true)
+        listener: beginTopLevelMethod(}, null)
+        listener: handleIdentifier(int, typeReference)
+        listener: handleNoTypeArguments(extends)
+        listener: handleType(int, null)
+        ensureIdentifierPotentiallyRecovered(int, topLevelFunctionDeclaration, true)
           reportRecoverableErrorWithToken(extends, Instance of 'Template<(Token) => Message>')
             listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'extends'., null, {token: extends}], extends, extends)
           listener: handleIdentifier(extends, topLevelFunctionDeclaration)
@@ -2125,7 +1847,7 @@
                 inGenerator()
           notEofOrValue(}, })
           listener: endBlockFunctionBody(2, {, })
-        listener: endTopLevelMethod(extends, null, })
+        listener: endTopLevelMethod(int, null, })
   listener: endTopLevelDeclaration(int)
   parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
     parseMetadataStar(})
@@ -2133,30 +1855,14 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl(})
       listener: beginTopLevelMember(int)
-      parseFields(}, null, null, null, null, null, }, Instance of 'NoType', int, DeclarationKind.TopLevel, null)
-        reportRecoverableError(int, MissingConstFinalVarOrType)
-          listener: handleRecoverableError(MissingConstFinalVarOrType, int, int)
-        listener: handleNoType(})
-        ensureIdentifier(}, topLevelVariableDeclaration)
-          listener: handleIdentifier(int, topLevelVariableDeclaration)
-        parseFieldInitializerOpt(int, int, null, null, DeclarationKind.TopLevel, null)
-          listener: handleNoFieldInitializer(false)
-        ensureSemicolon(int)
-          reportRecoverableError(int, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
-            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
-          rewriter()
-        listener: endTopLevelFields(null, null, null, null, 1, int, ;)
-  listener: endTopLevelDeclaration(false)
-  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
-    parseMetadataStar(;)
-      listener: beginMetadataStar(false)
-      listener: endMetadataStar(0)
-    parseTopLevelMemberImpl(;)
-      listener: beginTopLevelMember(false)
-      parseTopLevelMethod(;, null, ;, Instance of 'NoType', null, false)
-        listener: beginTopLevelMethod(;, null)
-        listener: handleNoType(;)
-        ensureIdentifier(;, topLevelFunctionDeclaration)
+      isReservedKeyword(false)
+      indicatesMethodOrField(()
+      parseTopLevelMethod(}, null, }, Instance of 'SimpleType', null, false, true)
+        listener: beginTopLevelMethod(}, null)
+        listener: handleIdentifier(int, typeReference)
+        listener: handleNoTypeArguments(false)
+        listener: handleType(int, null)
+        ensureIdentifierPotentiallyRecovered(int, topLevelFunctionDeclaration, true)
           reportRecoverableErrorWithToken(false, Instance of 'Template<(Token) => Message>')
             listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'false'., null, {token: false}], false, false)
           listener: handleIdentifier(false, topLevelFunctionDeclaration)
@@ -2277,7 +1983,7 @@
                 inGenerator()
           notEofOrValue(}, })
           listener: endBlockFunctionBody(2, {, })
-        listener: endTopLevelMethod(false, null, })
+        listener: endTopLevelMethod(int, null, })
   listener: endTopLevelDeclaration(int)
   parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
     parseMetadataStar(})
@@ -2285,41 +1991,21 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl(})
       listener: beginTopLevelMember(int)
-      parseFields(}, null, null, null, null, null, }, Instance of 'NoType', int, DeclarationKind.TopLevel, null)
-        reportRecoverableError(int, MissingConstFinalVarOrType)
-          listener: handleRecoverableError(MissingConstFinalVarOrType, int, int)
-        listener: handleNoType(})
-        ensureIdentifier(}, topLevelVariableDeclaration)
-          listener: handleIdentifier(int, topLevelVariableDeclaration)
-        parseFieldInitializerOpt(int, int, null, null, DeclarationKind.TopLevel, null)
-          listener: handleNoFieldInitializer(final)
-        ensureSemicolon(int)
-          reportRecoverableError(int, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
-            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
-          rewriter()
-        listener: endTopLevelFields(null, null, null, null, 1, int, ;)
-  listener: endTopLevelDeclaration(final)
-  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
-    parseMetadataStar(;)
-      listener: beginMetadataStar(final)
-      listener: endMetadataStar(0)
-    parseTopLevelMemberImpl(;)
-      listener: beginTopLevelMember(final)
-      insertSyntheticIdentifier(final, methodDeclaration, message: null, messageOnToken: null)
-        reportRecoverableError((, Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}])
-          listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}], (, ()
-        rewriter()
-      reportRecoverableErrorWithToken(final, Instance of 'Template<(Token) => Message>')
-        listener: handleRecoverableError(Message[ExtraneousModifier, Can't have modifier 'final' here., Try removing 'final'., {token: final}], final, final)
-      parseTopLevelMethod(;, null, final, Instance of 'NoType', null, )
-        listener: beginTopLevelMethod(;, null)
-        listener: handleNoType(final)
-        ensureIdentifier(final, topLevelFunctionDeclaration)
-          listener: handleIdentifier(, topLevelFunctionDeclaration)
-        parseMethodTypeVar()
+      isReservedKeyword(final)
+      indicatesMethodOrField(()
+      parseTopLevelMethod(}, null, }, Instance of 'SimpleType', null, final, true)
+        listener: beginTopLevelMethod(}, null)
+        listener: handleIdentifier(int, typeReference)
+        listener: handleNoTypeArguments(final)
+        listener: handleType(int, null)
+        ensureIdentifierPotentiallyRecovered(int, topLevelFunctionDeclaration, true)
+          reportRecoverableErrorWithToken(final, Instance of 'Template<(Token) => Message>')
+            listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'final'., null, {token: final}], final, final)
+          listener: handleIdentifier(final, topLevelFunctionDeclaration)
+        parseMethodTypeVar(final)
           listener: handleNoTypeVariables(()
-        parseGetterOrFormalParameters(, , false, MemberKind.TopLevelMethod)
-          parseFormalParameters(, MemberKind.TopLevelMethod)
+        parseGetterOrFormalParameters(final, final, false, MemberKind.TopLevelMethod)
+          parseFormalParameters(final, MemberKind.TopLevelMethod)
             parseFormalParametersRest((, MemberKind.TopLevelMethod)
               listener: beginFormalParameters((, MemberKind.TopLevelMethod)
               parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
@@ -2527,7 +2213,7 @@
                     listener: handleExpressionStatement(;)
           notEofOrValue(}, })
           listener: endBlockFunctionBody(6, {, })
-        listener: endTopLevelMethod(final, null, })
+        listener: endTopLevelMethod(int, null, })
   listener: endTopLevelDeclaration(int)
   parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
     parseMetadataStar(})
@@ -2535,30 +2221,14 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl(})
       listener: beginTopLevelMember(int)
-      parseFields(}, null, null, null, null, null, }, Instance of 'NoType', int, DeclarationKind.TopLevel, null)
-        reportRecoverableError(int, MissingConstFinalVarOrType)
-          listener: handleRecoverableError(MissingConstFinalVarOrType, int, int)
-        listener: handleNoType(})
-        ensureIdentifier(}, topLevelVariableDeclaration)
-          listener: handleIdentifier(int, topLevelVariableDeclaration)
-        parseFieldInitializerOpt(int, int, null, null, DeclarationKind.TopLevel, null)
-          listener: handleNoFieldInitializer(finally)
-        ensureSemicolon(int)
-          reportRecoverableError(int, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
-            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
-          rewriter()
-        listener: endTopLevelFields(null, null, null, null, 1, int, ;)
-  listener: endTopLevelDeclaration(finally)
-  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
-    parseMetadataStar(;)
-      listener: beginMetadataStar(finally)
-      listener: endMetadataStar(0)
-    parseTopLevelMemberImpl(;)
-      listener: beginTopLevelMember(finally)
-      parseTopLevelMethod(;, null, ;, Instance of 'NoType', null, finally)
-        listener: beginTopLevelMethod(;, null)
-        listener: handleNoType(;)
-        ensureIdentifier(;, topLevelFunctionDeclaration)
+      isReservedKeyword(finally)
+      indicatesMethodOrField(()
+      parseTopLevelMethod(}, null, }, Instance of 'SimpleType', null, finally, true)
+        listener: beginTopLevelMethod(}, null)
+        listener: handleIdentifier(int, typeReference)
+        listener: handleNoTypeArguments(finally)
+        listener: handleType(int, null)
+        ensureIdentifierPotentiallyRecovered(int, topLevelFunctionDeclaration, true)
           reportRecoverableErrorWithToken(finally, Instance of 'Template<(Token) => Message>')
             listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'finally'., null, {token: finally}], finally, finally)
           listener: handleIdentifier(finally, topLevelFunctionDeclaration)
@@ -2683,7 +2353,7 @@
                 inGenerator()
           notEofOrValue(}, })
           listener: endBlockFunctionBody(2, {, })
-        listener: endTopLevelMethod(finally, null, })
+        listener: endTopLevelMethod(int, null, })
   listener: endTopLevelDeclaration(int)
   parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
     parseMetadataStar(})
@@ -2691,30 +2361,14 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl(})
       listener: beginTopLevelMember(int)
-      parseFields(}, null, null, null, null, null, }, Instance of 'NoType', int, DeclarationKind.TopLevel, null)
-        reportRecoverableError(int, MissingConstFinalVarOrType)
-          listener: handleRecoverableError(MissingConstFinalVarOrType, int, int)
-        listener: handleNoType(})
-        ensureIdentifier(}, topLevelVariableDeclaration)
-          listener: handleIdentifier(int, topLevelVariableDeclaration)
-        parseFieldInitializerOpt(int, int, null, null, DeclarationKind.TopLevel, null)
-          listener: handleNoFieldInitializer(for)
-        ensureSemicolon(int)
-          reportRecoverableError(int, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
-            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
-          rewriter()
-        listener: endTopLevelFields(null, null, null, null, 1, int, ;)
-  listener: endTopLevelDeclaration(for)
-  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
-    parseMetadataStar(;)
-      listener: beginMetadataStar(for)
-      listener: endMetadataStar(0)
-    parseTopLevelMemberImpl(;)
-      listener: beginTopLevelMember(for)
-      parseTopLevelMethod(;, null, ;, Instance of 'NoType', null, for)
-        listener: beginTopLevelMethod(;, null)
-        listener: handleNoType(;)
-        ensureIdentifier(;, topLevelFunctionDeclaration)
+      isReservedKeyword(for)
+      indicatesMethodOrField(()
+      parseTopLevelMethod(}, null, }, Instance of 'SimpleType', null, for, true)
+        listener: beginTopLevelMethod(}, null)
+        listener: handleIdentifier(int, typeReference)
+        listener: handleNoTypeArguments(for)
+        listener: handleType(int, null)
+        ensureIdentifierPotentiallyRecovered(int, topLevelFunctionDeclaration, true)
           reportRecoverableErrorWithToken(for, Instance of 'Template<(Token) => Message>')
             listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'for'., null, {token: for}], for, for)
           listener: handleIdentifier(for, topLevelFunctionDeclaration)
@@ -2904,7 +2558,7 @@
                   listener: endForStatement(})
           notEofOrValue(}, })
           listener: endBlockFunctionBody(3, {, })
-        listener: endTopLevelMethod(for, null, })
+        listener: endTopLevelMethod(int, null, })
   listener: endTopLevelDeclaration(int)
   parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
     parseMetadataStar(})
@@ -2912,30 +2566,14 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl(})
       listener: beginTopLevelMember(int)
-      parseFields(}, null, null, null, null, null, }, Instance of 'NoType', int, DeclarationKind.TopLevel, null)
-        reportRecoverableError(int, MissingConstFinalVarOrType)
-          listener: handleRecoverableError(MissingConstFinalVarOrType, int, int)
-        listener: handleNoType(})
-        ensureIdentifier(}, topLevelVariableDeclaration)
-          listener: handleIdentifier(int, topLevelVariableDeclaration)
-        parseFieldInitializerOpt(int, int, null, null, DeclarationKind.TopLevel, null)
-          listener: handleNoFieldInitializer(if)
-        ensureSemicolon(int)
-          reportRecoverableError(int, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
-            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
-          rewriter()
-        listener: endTopLevelFields(null, null, null, null, 1, int, ;)
-  listener: endTopLevelDeclaration(if)
-  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
-    parseMetadataStar(;)
-      listener: beginMetadataStar(if)
-      listener: endMetadataStar(0)
-    parseTopLevelMemberImpl(;)
-      listener: beginTopLevelMember(if)
-      parseTopLevelMethod(;, null, ;, Instance of 'NoType', null, if)
-        listener: beginTopLevelMethod(;, null)
-        listener: handleNoType(;)
-        ensureIdentifier(;, topLevelFunctionDeclaration)
+      isReservedKeyword(if)
+      indicatesMethodOrField(()
+      parseTopLevelMethod(}, null, }, Instance of 'SimpleType', null, if, true)
+        listener: beginTopLevelMethod(}, null)
+        listener: handleIdentifier(int, typeReference)
+        listener: handleNoTypeArguments(if)
+        listener: handleType(int, null)
+        ensureIdentifierPotentiallyRecovered(int, topLevelFunctionDeclaration, true)
           reportRecoverableErrorWithToken(if, Instance of 'Template<(Token) => Message>')
             listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'if'., null, {token: if}], if, if)
           listener: handleIdentifier(if, topLevelFunctionDeclaration)
@@ -3097,7 +2735,7 @@
                 listener: endIfStatement(if, null)
           notEofOrValue(}, })
           listener: endBlockFunctionBody(3, {, })
-        listener: endTopLevelMethod(if, null, })
+        listener: endTopLevelMethod(int, null, })
   listener: endTopLevelDeclaration(int)
   parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
     parseMetadataStar(})
@@ -3105,30 +2743,14 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl(})
       listener: beginTopLevelMember(int)
-      parseFields(}, null, null, null, null, null, }, Instance of 'NoType', int, DeclarationKind.TopLevel, null)
-        reportRecoverableError(int, MissingConstFinalVarOrType)
-          listener: handleRecoverableError(MissingConstFinalVarOrType, int, int)
-        listener: handleNoType(})
-        ensureIdentifier(}, topLevelVariableDeclaration)
-          listener: handleIdentifier(int, topLevelVariableDeclaration)
-        parseFieldInitializerOpt(int, int, null, null, DeclarationKind.TopLevel, null)
-          listener: handleNoFieldInitializer(in)
-        ensureSemicolon(int)
-          reportRecoverableError(int, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
-            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
-          rewriter()
-        listener: endTopLevelFields(null, null, null, null, 1, int, ;)
-  listener: endTopLevelDeclaration(in)
-  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
-    parseMetadataStar(;)
-      listener: beginMetadataStar(in)
-      listener: endMetadataStar(0)
-    parseTopLevelMemberImpl(;)
-      listener: beginTopLevelMember(in)
-      parseTopLevelMethod(;, null, ;, Instance of 'NoType', null, in)
-        listener: beginTopLevelMethod(;, null)
-        listener: handleNoType(;)
-        ensureIdentifier(;, topLevelFunctionDeclaration)
+      isReservedKeyword(in)
+      indicatesMethodOrField(()
+      parseTopLevelMethod(}, null, }, Instance of 'SimpleType', null, in, true)
+        listener: beginTopLevelMethod(}, null)
+        listener: handleIdentifier(int, typeReference)
+        listener: handleNoTypeArguments(in)
+        listener: handleType(int, null)
+        ensureIdentifierPotentiallyRecovered(int, topLevelFunctionDeclaration, true)
           reportRecoverableErrorWithToken(in, Instance of 'Template<(Token) => Message>')
             listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'in'., null, {token: in}], in, in)
           listener: handleIdentifier(in, topLevelFunctionDeclaration)
@@ -3253,7 +2875,7 @@
                 inGenerator()
           notEofOrValue(}, })
           listener: endBlockFunctionBody(2, {, })
-        listener: endTopLevelMethod(in, null, })
+        listener: endTopLevelMethod(int, null, })
   listener: endTopLevelDeclaration(int)
   parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
     parseMetadataStar(})
@@ -3261,30 +2883,14 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl(})
       listener: beginTopLevelMember(int)
-      parseFields(}, null, null, null, null, null, }, Instance of 'NoType', int, DeclarationKind.TopLevel, null)
-        reportRecoverableError(int, MissingConstFinalVarOrType)
-          listener: handleRecoverableError(MissingConstFinalVarOrType, int, int)
-        listener: handleNoType(})
-        ensureIdentifier(}, topLevelVariableDeclaration)
-          listener: handleIdentifier(int, topLevelVariableDeclaration)
-        parseFieldInitializerOpt(int, int, null, null, DeclarationKind.TopLevel, null)
-          listener: handleNoFieldInitializer(is)
-        ensureSemicolon(int)
-          reportRecoverableError(int, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
-            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
-          rewriter()
-        listener: endTopLevelFields(null, null, null, null, 1, int, ;)
-  listener: endTopLevelDeclaration(is)
-  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
-    parseMetadataStar(;)
-      listener: beginMetadataStar(is)
-      listener: endMetadataStar(0)
-    parseTopLevelMemberImpl(;)
-      listener: beginTopLevelMember(is)
-      parseTopLevelMethod(;, null, ;, Instance of 'NoType', null, is)
-        listener: beginTopLevelMethod(;, null)
-        listener: handleNoType(;)
-        ensureIdentifier(;, topLevelFunctionDeclaration)
+      isReservedKeyword(is)
+      indicatesMethodOrField(()
+      parseTopLevelMethod(}, null, }, Instance of 'SimpleType', null, is, true)
+        listener: beginTopLevelMethod(}, null)
+        listener: handleIdentifier(int, typeReference)
+        listener: handleNoTypeArguments(is)
+        listener: handleType(int, null)
+        ensureIdentifierPotentiallyRecovered(int, topLevelFunctionDeclaration, true)
           reportRecoverableErrorWithToken(is, Instance of 'Template<(Token) => Message>')
             listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'is'., null, {token: is}], is, is)
           listener: handleIdentifier(is, topLevelFunctionDeclaration)
@@ -3441,7 +3047,7 @@
                     listener: handleExpressionStatement(;)
           notEofOrValue(}, })
           listener: endBlockFunctionBody(3, {, })
-        listener: endTopLevelMethod(is, null, })
+        listener: endTopLevelMethod(int, null, })
   listener: endTopLevelDeclaration(int)
   parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
     parseMetadataStar(})
@@ -3449,30 +3055,14 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl(})
       listener: beginTopLevelMember(int)
-      parseFields(}, null, null, null, null, null, }, Instance of 'NoType', int, DeclarationKind.TopLevel, null)
-        reportRecoverableError(int, MissingConstFinalVarOrType)
-          listener: handleRecoverableError(MissingConstFinalVarOrType, int, int)
-        listener: handleNoType(})
-        ensureIdentifier(}, topLevelVariableDeclaration)
-          listener: handleIdentifier(int, topLevelVariableDeclaration)
-        parseFieldInitializerOpt(int, int, null, null, DeclarationKind.TopLevel, null)
-          listener: handleNoFieldInitializer(new)
-        ensureSemicolon(int)
-          reportRecoverableError(int, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
-            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
-          rewriter()
-        listener: endTopLevelFields(null, null, null, null, 1, int, ;)
-  listener: endTopLevelDeclaration(new)
-  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
-    parseMetadataStar(;)
-      listener: beginMetadataStar(new)
-      listener: endMetadataStar(0)
-    parseTopLevelMemberImpl(;)
-      listener: beginTopLevelMember(new)
-      parseTopLevelMethod(;, null, ;, Instance of 'NoType', null, new)
-        listener: beginTopLevelMethod(;, null)
-        listener: handleNoType(;)
-        ensureIdentifier(;, topLevelFunctionDeclaration)
+      isReservedKeyword(new)
+      indicatesMethodOrField(()
+      parseTopLevelMethod(}, null, }, Instance of 'SimpleType', null, new, true)
+        listener: beginTopLevelMethod(}, null)
+        listener: handleIdentifier(int, typeReference)
+        listener: handleNoTypeArguments(new)
+        listener: handleType(int, null)
+        ensureIdentifierPotentiallyRecovered(int, topLevelFunctionDeclaration, true)
           reportRecoverableErrorWithToken(new, Instance of 'Template<(Token) => Message>')
             listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'new'., null, {token: new}], new, new)
           listener: handleIdentifier(new, topLevelFunctionDeclaration)
@@ -3603,7 +3193,7 @@
                 inGenerator()
           notEofOrValue(}, })
           listener: endBlockFunctionBody(2, {, })
-        listener: endTopLevelMethod(new, null, })
+        listener: endTopLevelMethod(int, null, })
   listener: endTopLevelDeclaration(int)
   parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
     parseMetadataStar(})
@@ -3611,30 +3201,14 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl(})
       listener: beginTopLevelMember(int)
-      parseFields(}, null, null, null, null, null, }, Instance of 'NoType', int, DeclarationKind.TopLevel, null)
-        reportRecoverableError(int, MissingConstFinalVarOrType)
-          listener: handleRecoverableError(MissingConstFinalVarOrType, int, int)
-        listener: handleNoType(})
-        ensureIdentifier(}, topLevelVariableDeclaration)
-          listener: handleIdentifier(int, topLevelVariableDeclaration)
-        parseFieldInitializerOpt(int, int, null, null, DeclarationKind.TopLevel, null)
-          listener: handleNoFieldInitializer(null)
-        ensureSemicolon(int)
-          reportRecoverableError(int, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
-            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
-          rewriter()
-        listener: endTopLevelFields(null, null, null, null, 1, int, ;)
-  listener: endTopLevelDeclaration(null)
-  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
-    parseMetadataStar(;)
-      listener: beginMetadataStar(null)
-      listener: endMetadataStar(0)
-    parseTopLevelMemberImpl(;)
-      listener: beginTopLevelMember(null)
-      parseTopLevelMethod(;, null, ;, Instance of 'NoType', null, null)
-        listener: beginTopLevelMethod(;, null)
-        listener: handleNoType(;)
-        ensureIdentifier(;, topLevelFunctionDeclaration)
+      isReservedKeyword(null)
+      indicatesMethodOrField(()
+      parseTopLevelMethod(}, null, }, Instance of 'SimpleType', null, null, true)
+        listener: beginTopLevelMethod(}, null)
+        listener: handleIdentifier(int, typeReference)
+        listener: handleNoTypeArguments(null)
+        listener: handleType(int, null)
+        ensureIdentifierPotentiallyRecovered(int, topLevelFunctionDeclaration, true)
           reportRecoverableErrorWithToken(null, Instance of 'Template<(Token) => Message>')
             listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'null'., null, {token: null}], null, null)
           listener: handleIdentifier(null, topLevelFunctionDeclaration)
@@ -3755,7 +3329,7 @@
                 inGenerator()
           notEofOrValue(}, })
           listener: endBlockFunctionBody(2, {, })
-        listener: endTopLevelMethod(null, null, })
+        listener: endTopLevelMethod(int, null, })
   listener: endTopLevelDeclaration(int)
   parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
     parseMetadataStar(})
@@ -3763,30 +3337,14 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl(})
       listener: beginTopLevelMember(int)
-      parseFields(}, null, null, null, null, null, }, Instance of 'NoType', int, DeclarationKind.TopLevel, null)
-        reportRecoverableError(int, MissingConstFinalVarOrType)
-          listener: handleRecoverableError(MissingConstFinalVarOrType, int, int)
-        listener: handleNoType(})
-        ensureIdentifier(}, topLevelVariableDeclaration)
-          listener: handleIdentifier(int, topLevelVariableDeclaration)
-        parseFieldInitializerOpt(int, int, null, null, DeclarationKind.TopLevel, null)
-          listener: handleNoFieldInitializer(rethrow)
-        ensureSemicolon(int)
-          reportRecoverableError(int, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
-            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
-          rewriter()
-        listener: endTopLevelFields(null, null, null, null, 1, int, ;)
-  listener: endTopLevelDeclaration(rethrow)
-  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
-    parseMetadataStar(;)
-      listener: beginMetadataStar(rethrow)
-      listener: endMetadataStar(0)
-    parseTopLevelMemberImpl(;)
-      listener: beginTopLevelMember(rethrow)
-      parseTopLevelMethod(;, null, ;, Instance of 'NoType', null, rethrow)
-        listener: beginTopLevelMethod(;, null)
-        listener: handleNoType(;)
-        ensureIdentifier(;, topLevelFunctionDeclaration)
+      isReservedKeyword(rethrow)
+      indicatesMethodOrField(()
+      parseTopLevelMethod(}, null, }, Instance of 'SimpleType', null, rethrow, true)
+        listener: beginTopLevelMethod(}, null)
+        listener: handleIdentifier(int, typeReference)
+        listener: handleNoTypeArguments(rethrow)
+        listener: handleType(int, null)
+        ensureIdentifierPotentiallyRecovered(int, topLevelFunctionDeclaration, true)
           reportRecoverableErrorWithToken(rethrow, Instance of 'Template<(Token) => Message>')
             listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'rethrow'., null, {token: rethrow}], rethrow, rethrow)
           listener: handleIdentifier(rethrow, topLevelFunctionDeclaration)
@@ -3911,7 +3469,7 @@
                 inGenerator()
           notEofOrValue(}, })
           listener: endBlockFunctionBody(2, {, })
-        listener: endTopLevelMethod(rethrow, null, })
+        listener: endTopLevelMethod(int, null, })
   listener: endTopLevelDeclaration(int)
   parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
     parseMetadataStar(})
@@ -3919,30 +3477,14 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl(})
       listener: beginTopLevelMember(int)
-      parseFields(}, null, null, null, null, null, }, Instance of 'NoType', int, DeclarationKind.TopLevel, null)
-        reportRecoverableError(int, MissingConstFinalVarOrType)
-          listener: handleRecoverableError(MissingConstFinalVarOrType, int, int)
-        listener: handleNoType(})
-        ensureIdentifier(}, topLevelVariableDeclaration)
-          listener: handleIdentifier(int, topLevelVariableDeclaration)
-        parseFieldInitializerOpt(int, int, null, null, DeclarationKind.TopLevel, null)
-          listener: handleNoFieldInitializer(return)
-        ensureSemicolon(int)
-          reportRecoverableError(int, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
-            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
-          rewriter()
-        listener: endTopLevelFields(null, null, null, null, 1, int, ;)
-  listener: endTopLevelDeclaration(return)
-  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
-    parseMetadataStar(;)
-      listener: beginMetadataStar(return)
-      listener: endMetadataStar(0)
-    parseTopLevelMemberImpl(;)
-      listener: beginTopLevelMember(return)
-      parseTopLevelMethod(;, null, ;, Instance of 'NoType', null, return)
-        listener: beginTopLevelMethod(;, null)
-        listener: handleNoType(;)
-        ensureIdentifier(;, topLevelFunctionDeclaration)
+      isReservedKeyword(return)
+      indicatesMethodOrField(()
+      parseTopLevelMethod(}, null, }, Instance of 'SimpleType', null, return, true)
+        listener: beginTopLevelMethod(}, null)
+        listener: handleIdentifier(int, typeReference)
+        listener: handleNoTypeArguments(return)
+        listener: handleType(int, null)
+        ensureIdentifierPotentiallyRecovered(int, topLevelFunctionDeclaration, true)
           reportRecoverableErrorWithToken(return, Instance of 'Template<(Token) => Message>')
             listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'return'., null, {token: return}], return, return)
           listener: handleIdentifier(return, topLevelFunctionDeclaration)
@@ -4064,7 +3606,7 @@
                 inGenerator()
           notEofOrValue(}, })
           listener: endBlockFunctionBody(2, {, })
-        listener: endTopLevelMethod(return, null, })
+        listener: endTopLevelMethod(int, null, })
   listener: endTopLevelDeclaration(int)
   parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
     parseMetadataStar(})
@@ -4072,30 +3614,14 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl(})
       listener: beginTopLevelMember(int)
-      parseFields(}, null, null, null, null, null, }, Instance of 'NoType', int, DeclarationKind.TopLevel, null)
-        reportRecoverableError(int, MissingConstFinalVarOrType)
-          listener: handleRecoverableError(MissingConstFinalVarOrType, int, int)
-        listener: handleNoType(})
-        ensureIdentifier(}, topLevelVariableDeclaration)
-          listener: handleIdentifier(int, topLevelVariableDeclaration)
-        parseFieldInitializerOpt(int, int, null, null, DeclarationKind.TopLevel, null)
-          listener: handleNoFieldInitializer(super)
-        ensureSemicolon(int)
-          reportRecoverableError(int, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
-            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
-          rewriter()
-        listener: endTopLevelFields(null, null, null, null, 1, int, ;)
-  listener: endTopLevelDeclaration(super)
-  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
-    parseMetadataStar(;)
-      listener: beginMetadataStar(super)
-      listener: endMetadataStar(0)
-    parseTopLevelMemberImpl(;)
-      listener: beginTopLevelMember(super)
-      parseTopLevelMethod(;, null, ;, Instance of 'NoType', null, super)
-        listener: beginTopLevelMethod(;, null)
-        listener: handleNoType(;)
-        ensureIdentifier(;, topLevelFunctionDeclaration)
+      isReservedKeyword(super)
+      indicatesMethodOrField(()
+      parseTopLevelMethod(}, null, }, Instance of 'SimpleType', null, super, true)
+        listener: beginTopLevelMethod(}, null)
+        listener: handleIdentifier(int, typeReference)
+        listener: handleNoTypeArguments(super)
+        listener: handleType(int, null)
+        ensureIdentifierPotentiallyRecovered(int, topLevelFunctionDeclaration, true)
           reportRecoverableErrorWithToken(super, Instance of 'Template<(Token) => Message>')
             listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'super'., null, {token: super}], super, super)
           listener: handleIdentifier(super, topLevelFunctionDeclaration)
@@ -4215,7 +3741,7 @@
                 inGenerator()
           notEofOrValue(}, })
           listener: endBlockFunctionBody(2, {, })
-        listener: endTopLevelMethod(super, null, })
+        listener: endTopLevelMethod(int, null, })
   listener: endTopLevelDeclaration(int)
   parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
     parseMetadataStar(})
@@ -4223,30 +3749,14 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl(})
       listener: beginTopLevelMember(int)
-      parseFields(}, null, null, null, null, null, }, Instance of 'NoType', int, DeclarationKind.TopLevel, null)
-        reportRecoverableError(int, MissingConstFinalVarOrType)
-          listener: handleRecoverableError(MissingConstFinalVarOrType, int, int)
-        listener: handleNoType(})
-        ensureIdentifier(}, topLevelVariableDeclaration)
-          listener: handleIdentifier(int, topLevelVariableDeclaration)
-        parseFieldInitializerOpt(int, int, null, null, DeclarationKind.TopLevel, null)
-          listener: handleNoFieldInitializer(switch)
-        ensureSemicolon(int)
-          reportRecoverableError(int, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
-            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
-          rewriter()
-        listener: endTopLevelFields(null, null, null, null, 1, int, ;)
-  listener: endTopLevelDeclaration(switch)
-  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
-    parseMetadataStar(;)
-      listener: beginMetadataStar(switch)
-      listener: endMetadataStar(0)
-    parseTopLevelMemberImpl(;)
-      listener: beginTopLevelMember(switch)
-      parseTopLevelMethod(;, null, ;, Instance of 'NoType', null, switch)
-        listener: beginTopLevelMethod(;, null)
-        listener: handleNoType(;)
-        ensureIdentifier(;, topLevelFunctionDeclaration)
+      isReservedKeyword(switch)
+      indicatesMethodOrField(()
+      parseTopLevelMethod(}, null, }, Instance of 'SimpleType', null, switch, true)
+        listener: beginTopLevelMethod(}, null)
+        listener: handleIdentifier(int, typeReference)
+        listener: handleNoTypeArguments(switch)
+        listener: handleType(int, null)
+        ensureIdentifierPotentiallyRecovered(int, topLevelFunctionDeclaration, true)
           reportRecoverableErrorWithToken(switch, Instance of 'Template<(Token) => Message>')
             listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'switch'., null, {token: switch}], switch, switch)
           listener: handleIdentifier(switch, topLevelFunctionDeclaration)
@@ -4417,7 +3927,7 @@
                     listener: handleExpressionStatement(;)
           notEofOrValue(}, })
           listener: endBlockFunctionBody(4, {, })
-        listener: endTopLevelMethod(switch, null, })
+        listener: endTopLevelMethod(int, null, })
   listener: endTopLevelDeclaration(int)
   parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
     parseMetadataStar(})
@@ -4425,12 +3935,12 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl(})
       listener: beginTopLevelMember(int)
-      parseTopLevelMethod(}, null, }, Instance of 'SimpleType', null, this)
+      parseTopLevelMethod(}, null, }, Instance of 'SimpleType', null, this, false)
         listener: beginTopLevelMethod(}, null)
         listener: handleIdentifier(int, typeReference)
         listener: handleNoTypeArguments(this)
         listener: handleType(int, null)
-        ensureIdentifier(int, topLevelFunctionDeclaration)
+        ensureIdentifierPotentiallyRecovered(int, topLevelFunctionDeclaration, false)
           reportRecoverableErrorWithToken(this, Instance of 'Template<(Token) => Message>')
             listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'this'., null, {token: this}], this, this)
           listener: handleIdentifier(this, topLevelFunctionDeclaration)
@@ -4558,30 +4068,14 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl(})
       listener: beginTopLevelMember(int)
-      parseFields(}, null, null, null, null, null, }, Instance of 'NoType', int, DeclarationKind.TopLevel, null)
-        reportRecoverableError(int, MissingConstFinalVarOrType)
-          listener: handleRecoverableError(MissingConstFinalVarOrType, int, int)
-        listener: handleNoType(})
-        ensureIdentifier(}, topLevelVariableDeclaration)
-          listener: handleIdentifier(int, topLevelVariableDeclaration)
-        parseFieldInitializerOpt(int, int, null, null, DeclarationKind.TopLevel, null)
-          listener: handleNoFieldInitializer(throw)
-        ensureSemicolon(int)
-          reportRecoverableError(int, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
-            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
-          rewriter()
-        listener: endTopLevelFields(null, null, null, null, 1, int, ;)
-  listener: endTopLevelDeclaration(throw)
-  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
-    parseMetadataStar(;)
-      listener: beginMetadataStar(throw)
-      listener: endMetadataStar(0)
-    parseTopLevelMemberImpl(;)
-      listener: beginTopLevelMember(throw)
-      parseTopLevelMethod(;, null, ;, Instance of 'NoType', null, throw)
-        listener: beginTopLevelMethod(;, null)
-        listener: handleNoType(;)
-        ensureIdentifier(;, topLevelFunctionDeclaration)
+      isReservedKeyword(throw)
+      indicatesMethodOrField(()
+      parseTopLevelMethod(}, null, }, Instance of 'SimpleType', null, throw, true)
+        listener: beginTopLevelMethod(}, null)
+        listener: handleIdentifier(int, typeReference)
+        listener: handleNoTypeArguments(throw)
+        listener: handleType(int, null)
+        ensureIdentifierPotentiallyRecovered(int, topLevelFunctionDeclaration, true)
           reportRecoverableErrorWithToken(throw, Instance of 'Template<(Token) => Message>')
             listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'throw'., null, {token: throw}], throw, throw)
           listener: handleIdentifier(throw, topLevelFunctionDeclaration)
@@ -4702,7 +4196,7 @@
                 inGenerator()
           notEofOrValue(}, })
           listener: endBlockFunctionBody(2, {, })
-        listener: endTopLevelMethod(throw, null, })
+        listener: endTopLevelMethod(int, null, })
   listener: endTopLevelDeclaration(int)
   parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
     parseMetadataStar(})
@@ -4710,30 +4204,14 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl(})
       listener: beginTopLevelMember(int)
-      parseFields(}, null, null, null, null, null, }, Instance of 'NoType', int, DeclarationKind.TopLevel, null)
-        reportRecoverableError(int, MissingConstFinalVarOrType)
-          listener: handleRecoverableError(MissingConstFinalVarOrType, int, int)
-        listener: handleNoType(})
-        ensureIdentifier(}, topLevelVariableDeclaration)
-          listener: handleIdentifier(int, topLevelVariableDeclaration)
-        parseFieldInitializerOpt(int, int, null, null, DeclarationKind.TopLevel, null)
-          listener: handleNoFieldInitializer(true)
-        ensureSemicolon(int)
-          reportRecoverableError(int, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
-            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
-          rewriter()
-        listener: endTopLevelFields(null, null, null, null, 1, int, ;)
-  listener: endTopLevelDeclaration(true)
-  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
-    parseMetadataStar(;)
-      listener: beginMetadataStar(true)
-      listener: endMetadataStar(0)
-    parseTopLevelMemberImpl(;)
-      listener: beginTopLevelMember(true)
-      parseTopLevelMethod(;, null, ;, Instance of 'NoType', null, true)
-        listener: beginTopLevelMethod(;, null)
-        listener: handleNoType(;)
-        ensureIdentifier(;, topLevelFunctionDeclaration)
+      isReservedKeyword(true)
+      indicatesMethodOrField(()
+      parseTopLevelMethod(}, null, }, Instance of 'SimpleType', null, true, true)
+        listener: beginTopLevelMethod(}, null)
+        listener: handleIdentifier(int, typeReference)
+        listener: handleNoTypeArguments(true)
+        listener: handleType(int, null)
+        ensureIdentifierPotentiallyRecovered(int, topLevelFunctionDeclaration, true)
           reportRecoverableErrorWithToken(true, Instance of 'Template<(Token) => Message>')
             listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'true'., null, {token: true}], true, true)
           listener: handleIdentifier(true, topLevelFunctionDeclaration)
@@ -4854,7 +4332,7 @@
                 inGenerator()
           notEofOrValue(}, })
           listener: endBlockFunctionBody(2, {, })
-        listener: endTopLevelMethod(true, null, })
+        listener: endTopLevelMethod(int, null, })
   listener: endTopLevelDeclaration(int)
   parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
     parseMetadataStar(})
@@ -4862,30 +4340,14 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl(})
       listener: beginTopLevelMember(int)
-      parseFields(}, null, null, null, null, null, }, Instance of 'NoType', int, DeclarationKind.TopLevel, null)
-        reportRecoverableError(int, MissingConstFinalVarOrType)
-          listener: handleRecoverableError(MissingConstFinalVarOrType, int, int)
-        listener: handleNoType(})
-        ensureIdentifier(}, topLevelVariableDeclaration)
-          listener: handleIdentifier(int, topLevelVariableDeclaration)
-        parseFieldInitializerOpt(int, int, null, null, DeclarationKind.TopLevel, null)
-          listener: handleNoFieldInitializer(try)
-        ensureSemicolon(int)
-          reportRecoverableError(int, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
-            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
-          rewriter()
-        listener: endTopLevelFields(null, null, null, null, 1, int, ;)
-  listener: endTopLevelDeclaration(try)
-  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
-    parseMetadataStar(;)
-      listener: beginMetadataStar(try)
-      listener: endMetadataStar(0)
-    parseTopLevelMemberImpl(;)
-      listener: beginTopLevelMember(try)
-      parseTopLevelMethod(;, null, ;, Instance of 'NoType', null, try)
-        listener: beginTopLevelMethod(;, null)
-        listener: handleNoType(;)
-        ensureIdentifier(;, topLevelFunctionDeclaration)
+      isReservedKeyword(try)
+      indicatesMethodOrField(()
+      parseTopLevelMethod(}, null, }, Instance of 'SimpleType', null, try, true)
+        listener: beginTopLevelMethod(}, null)
+        listener: handleIdentifier(int, typeReference)
+        listener: handleNoTypeArguments(try)
+        listener: handleType(int, null)
+        ensureIdentifierPotentiallyRecovered(int, topLevelFunctionDeclaration, true)
           reportRecoverableErrorWithToken(try, Instance of 'Template<(Token) => Message>')
             listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'try'., null, {token: try}], try, try)
           listener: handleIdentifier(try, topLevelFunctionDeclaration)
@@ -5048,7 +4510,7 @@
                     listener: handleExpressionStatement(;)
           notEofOrValue(}, })
           listener: endBlockFunctionBody(4, {, })
-        listener: endTopLevelMethod(try, null, })
+        listener: endTopLevelMethod(int, null, })
   listener: endTopLevelDeclaration(int)
   parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
     parseMetadataStar(})
@@ -5056,41 +4518,21 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl(})
       listener: beginTopLevelMember(int)
-      parseFields(}, null, null, null, null, null, }, Instance of 'NoType', int, DeclarationKind.TopLevel, null)
-        reportRecoverableError(int, MissingConstFinalVarOrType)
-          listener: handleRecoverableError(MissingConstFinalVarOrType, int, int)
-        listener: handleNoType(})
-        ensureIdentifier(}, topLevelVariableDeclaration)
-          listener: handleIdentifier(int, topLevelVariableDeclaration)
-        parseFieldInitializerOpt(int, int, null, null, DeclarationKind.TopLevel, null)
-          listener: handleNoFieldInitializer(var)
-        ensureSemicolon(int)
-          reportRecoverableError(int, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
-            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
-          rewriter()
-        listener: endTopLevelFields(null, null, null, null, 1, int, ;)
-  listener: endTopLevelDeclaration(var)
-  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
-    parseMetadataStar(;)
-      listener: beginMetadataStar(var)
-      listener: endMetadataStar(0)
-    parseTopLevelMemberImpl(;)
-      listener: beginTopLevelMember(var)
-      insertSyntheticIdentifier(var, methodDeclaration, message: null, messageOnToken: null)
-        reportRecoverableError((, Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}])
-          listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}], (, ()
-        rewriter()
-      reportRecoverableError(var, VarReturnType)
-        listener: handleRecoverableError(VarReturnType, var, var)
-      parseTopLevelMethod(;, null, var, Instance of 'NoType', null, )
-        listener: beginTopLevelMethod(;, null)
-        listener: handleNoType(var)
-        ensureIdentifier(var, topLevelFunctionDeclaration)
-          listener: handleIdentifier(, topLevelFunctionDeclaration)
-        parseMethodTypeVar()
+      isReservedKeyword(var)
+      indicatesMethodOrField(()
+      parseTopLevelMethod(}, null, }, Instance of 'SimpleType', null, var, true)
+        listener: beginTopLevelMethod(}, null)
+        listener: handleIdentifier(int, typeReference)
+        listener: handleNoTypeArguments(var)
+        listener: handleType(int, null)
+        ensureIdentifierPotentiallyRecovered(int, topLevelFunctionDeclaration, true)
+          reportRecoverableErrorWithToken(var, Instance of 'Template<(Token) => Message>')
+            listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'var'., null, {token: var}], var, var)
+          listener: handleIdentifier(var, topLevelFunctionDeclaration)
+        parseMethodTypeVar(var)
           listener: handleNoTypeVariables(()
-        parseGetterOrFormalParameters(, , false, MemberKind.TopLevelMethod)
-          parseFormalParameters(, MemberKind.TopLevelMethod)
+        parseGetterOrFormalParameters(var, var, false, MemberKind.TopLevelMethod)
+          parseFormalParameters(var, MemberKind.TopLevelMethod)
             parseFormalParametersRest((, MemberKind.TopLevelMethod)
               listener: beginFormalParameters((, MemberKind.TopLevelMethod)
               parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
@@ -5298,7 +4740,7 @@
                     listener: handleExpressionStatement(;)
           notEofOrValue(}, })
           listener: endBlockFunctionBody(6, {, })
-        listener: endTopLevelMethod(var, null, })
+        listener: endTopLevelMethod(int, null, })
   listener: endTopLevelDeclaration(int)
   parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
     parseMetadataStar(})
@@ -5306,39 +4748,21 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl(})
       listener: beginTopLevelMember(int)
-      parseFields(}, null, null, null, null, null, }, Instance of 'NoType', int, DeclarationKind.TopLevel, null)
-        reportRecoverableError(int, MissingConstFinalVarOrType)
-          listener: handleRecoverableError(MissingConstFinalVarOrType, int, int)
-        listener: handleNoType(})
-        ensureIdentifier(}, topLevelVariableDeclaration)
-          listener: handleIdentifier(int, topLevelVariableDeclaration)
-        parseFieldInitializerOpt(int, int, null, null, DeclarationKind.TopLevel, null)
-          listener: handleNoFieldInitializer(void)
-        ensureSemicolon(int)
-          reportRecoverableError(int, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
-            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
-          rewriter()
-        listener: endTopLevelFields(null, null, null, null, 1, int, ;)
-  listener: endTopLevelDeclaration(void)
-  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
-    parseMetadataStar(;)
-      listener: beginMetadataStar(void)
-      listener: endMetadataStar(0)
-    parseTopLevelMemberImpl(;)
-      listener: beginTopLevelMember(void)
-      insertSyntheticIdentifier(void, methodDeclaration, message: null, messageOnToken: null)
-        reportRecoverableError((, Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}])
-          listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}], (, ()
-        rewriter()
-      parseTopLevelMethod(;, null, ;, Instance of 'VoidType', null, )
-        listener: beginTopLevelMethod(;, null)
-        listener: handleVoidKeyword(void)
-        ensureIdentifier(void, topLevelFunctionDeclaration)
-          listener: handleIdentifier(, topLevelFunctionDeclaration)
-        parseMethodTypeVar()
+      isReservedKeyword(void)
+      indicatesMethodOrField(()
+      parseTopLevelMethod(}, null, }, Instance of 'SimpleType', null, void, true)
+        listener: beginTopLevelMethod(}, null)
+        listener: handleIdentifier(int, typeReference)
+        listener: handleNoTypeArguments(void)
+        listener: handleType(int, null)
+        ensureIdentifierPotentiallyRecovered(int, topLevelFunctionDeclaration, true)
+          reportRecoverableErrorWithToken(void, Instance of 'Template<(Token) => Message>')
+            listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'void'., null, {token: void}], void, void)
+          listener: handleIdentifier(void, topLevelFunctionDeclaration)
+        parseMethodTypeVar(void)
           listener: handleNoTypeVariables(()
-        parseGetterOrFormalParameters(, , false, MemberKind.TopLevelMethod)
-          parseFormalParameters(, MemberKind.TopLevelMethod)
+        parseGetterOrFormalParameters(void, void, false, MemberKind.TopLevelMethod)
+          parseFormalParameters(void, MemberKind.TopLevelMethod)
             parseFormalParametersRest((, MemberKind.TopLevelMethod)
               listener: beginFormalParameters((, MemberKind.TopLevelMethod)
               parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
@@ -5547,7 +4971,7 @@
                     listener: handleExpressionStatement(;)
           notEofOrValue(}, })
           listener: endBlockFunctionBody(6, {, })
-        listener: endTopLevelMethod(void, null, })
+        listener: endTopLevelMethod(int, null, })
   listener: endTopLevelDeclaration(int)
   parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
     parseMetadataStar(})
@@ -5555,30 +4979,14 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl(})
       listener: beginTopLevelMember(int)
-      parseFields(}, null, null, null, null, null, }, Instance of 'NoType', int, DeclarationKind.TopLevel, null)
-        reportRecoverableError(int, MissingConstFinalVarOrType)
-          listener: handleRecoverableError(MissingConstFinalVarOrType, int, int)
-        listener: handleNoType(})
-        ensureIdentifier(}, topLevelVariableDeclaration)
-          listener: handleIdentifier(int, topLevelVariableDeclaration)
-        parseFieldInitializerOpt(int, int, null, null, DeclarationKind.TopLevel, null)
-          listener: handleNoFieldInitializer(while)
-        ensureSemicolon(int)
-          reportRecoverableError(int, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
-            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
-          rewriter()
-        listener: endTopLevelFields(null, null, null, null, 1, int, ;)
-  listener: endTopLevelDeclaration(while)
-  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
-    parseMetadataStar(;)
-      listener: beginMetadataStar(while)
-      listener: endMetadataStar(0)
-    parseTopLevelMemberImpl(;)
-      listener: beginTopLevelMember(while)
-      parseTopLevelMethod(;, null, ;, Instance of 'NoType', null, while)
-        listener: beginTopLevelMethod(;, null)
-        listener: handleNoType(;)
-        ensureIdentifier(;, topLevelFunctionDeclaration)
+      isReservedKeyword(while)
+      indicatesMethodOrField(()
+      parseTopLevelMethod(}, null, }, Instance of 'SimpleType', null, while, true)
+        listener: beginTopLevelMethod(}, null)
+        listener: handleIdentifier(int, typeReference)
+        listener: handleNoTypeArguments(while)
+        listener: handleType(int, null)
+        ensureIdentifierPotentiallyRecovered(int, topLevelFunctionDeclaration, true)
           reportRecoverableErrorWithToken(while, Instance of 'Template<(Token) => Message>')
             listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'while'., null, {token: while}], while, while)
           listener: handleIdentifier(while, topLevelFunctionDeclaration)
@@ -5740,7 +5148,7 @@
                 listener: endWhileStatement(while, })
           notEofOrValue(}, })
           listener: endBlockFunctionBody(3, {, })
-        listener: endTopLevelMethod(while, null, })
+        listener: endTopLevelMethod(int, null, })
   listener: endTopLevelDeclaration(int)
   parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
     parseMetadataStar(})
@@ -5748,30 +5156,14 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl(})
       listener: beginTopLevelMember(int)
-      parseFields(}, null, null, null, null, null, }, Instance of 'NoType', int, DeclarationKind.TopLevel, null)
-        reportRecoverableError(int, MissingConstFinalVarOrType)
-          listener: handleRecoverableError(MissingConstFinalVarOrType, int, int)
-        listener: handleNoType(})
-        ensureIdentifier(}, topLevelVariableDeclaration)
-          listener: handleIdentifier(int, topLevelVariableDeclaration)
-        parseFieldInitializerOpt(int, int, null, null, DeclarationKind.TopLevel, null)
-          listener: handleNoFieldInitializer(with)
-        ensureSemicolon(int)
-          reportRecoverableError(int, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
-            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
-          rewriter()
-        listener: endTopLevelFields(null, null, null, null, 1, int, ;)
-  listener: endTopLevelDeclaration(with)
-  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
-    parseMetadataStar(;)
-      listener: beginMetadataStar(with)
-      listener: endMetadataStar(0)
-    parseTopLevelMemberImpl(;)
-      listener: beginTopLevelMember(with)
-      parseTopLevelMethod(;, null, ;, Instance of 'NoType', null, with)
-        listener: beginTopLevelMethod(;, null)
-        listener: handleNoType(;)
-        ensureIdentifier(;, topLevelFunctionDeclaration)
+      isReservedKeyword(with)
+      indicatesMethodOrField(()
+      parseTopLevelMethod(}, null, }, Instance of 'SimpleType', null, with, true)
+        listener: beginTopLevelMethod(}, null)
+        listener: handleIdentifier(int, typeReference)
+        listener: handleNoTypeArguments(with)
+        listener: handleType(int, null)
+        ensureIdentifierPotentiallyRecovered(int, topLevelFunctionDeclaration, true)
           reportRecoverableErrorWithToken(with, Instance of 'Template<(Token) => Message>')
             listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'with'., null, {token: with}], with, with)
           listener: handleIdentifier(with, topLevelFunctionDeclaration)
@@ -5896,7 +5288,7 @@
                 inGenerator()
           notEofOrValue(}, })
           listener: endBlockFunctionBody(2, {, })
-        listener: endTopLevelMethod(with, null, })
+        listener: endTopLevelMethod(int, null, })
   listener: endTopLevelDeclaration()
   reportAllErrorTokens(int)
-  listener: endCompilationUnit(71, )
+  listener: endCompilationUnit(33, )
diff --git a/pkg/front_end/parser_testcases/error_recovery/reserved_words_top_level_fields.dart.parser.expect b/pkg/front_end/parser_testcases/error_recovery/reserved_words_top_level_fields.dart.parser.expect
index 1dc529d..7e86c51 100644
--- a/pkg/front_end/parser_testcases/error_recovery/reserved_words_top_level_fields.dart.parser.expect
+++ b/pkg/front_end/parser_testcases/error_recovery/reserved_words_top_level_fields.dart.parser.expect
@@ -1,126 +1,126 @@
 NOTICE: Stream was rewritten by parser!
 
-int ;assert(int x) {
+int assert(int x) {
 if (x == 0) return 42;
 return assert(x-1) + 1;
 }
 
-int ;break(int x) {
+int break(int x) {
 if (x == 0) return 42;
 return ;break;(x-1) + 1;
 }
 
-int ;case(int x) {
+int case(int x) {
 if (x == 0) return 42;
 return case(x-1) + 1;
 }
 
-int ;catch(int x) {
+int catch(int x) {
 if (x == 0) return 42;
 return catch(x-1) + 1;
 }
 
-int ;class({}int x;) {
+int class(int x) {
 if (x == 0) return 42;
 return class(x-1) + 1;
 }
 
-int ;const(int x) {
+int const(int x) {
 if (x == 0) return 42;
 return const(x-1) + 1;
 }
 
-int ;continue(int x) {
+int continue(int x) {
 if (x == 0) return 42;
 return ;continue;(x-1) + 1;
 }
 
-int ;default(int x) {
+int default(int x) {
 if (x == 0) return 42;
 return default(x-1) + 1;
 }
 
-int ;do(int x) {
+int do(int x) {
 if (x == 0) return 42;
 return ;do(x-1) + 1;
 while();}
 
-int ;else(int x) {
+int else(int x) {
 if (x == 0) return 42;
 return ;;else(x-1) + 1;
 }
 
-int ;enum({}int x;) {
+int enum(int x) {
 if (x == 0) return 42;
 return enum(x-1) + 1;
 }
 
-int ;extends(int x) {
+int extends(int x) {
 if (x == 0) return 42;
 return extends(x-1) + 1;
 }
 
-int ;false(int x) {
+int false(int x) {
 if (x == 0) return 42;
 return false(x-1) + 1;
 }
 
-int ;final(int x) {
+int final(int x) {
 if (x == 0) return 42;
 return ;final(;x-1;;) + 1;
 }
 
-int ;finally(int x) {
+int finally(int x) {
 if (x == 0) return 42;
 return finally(x-1) + 1;
 }
 
-int ;for(int x) {
+int for(int x) {
 if (x == 0) return 42;
 return ;for(x-1;;) + 1;
 }
 
-int ;if(int x) {
+int if(int x) {
 if (x == 0) return 42;
 return ;if(x-1) + 1;
 }
 
-int ;in(int x) {
+int in(int x) {
 if (x == 0) return 42;
 return in(x-1) + 1;
 }
 
-int ;is(int x) {
+int is(int x) {
 if (x == 0) return 42;
 return is;(x-1) + 1;
 }
 
-int ;new(int x) {
+int new(int x) {
 if (x == 0) return 42;
 return new(x-1) + 1;
 }
 
-int ;null(int x) {
+int null(int x) {
 if (x == 0) return 42;
 return null(x-1) + 1;
 }
 
-int ;rethrow(int x) {
+int rethrow(int x) {
 if (x == 0) return 42;
 return rethrow(x-1) + 1;
 }
 
-int ;return(int x) {
+int return(int x) {
 if (x == 0) return 42;
 return return(x-1) + 1;
 }
 
-int ;super(int x) {
+int super(int x) {
 if (x == 0) return 42;
 return super(x-1) + 1;
 }
 
-int ;switch(int x) {
+int switch(int x) {
 if (x == 0) return 42;
 return ;switch(x-1) {}+ 1;
 }
@@ -130,163 +130,163 @@
 return this(x-1) + 1;
 }
 
-int ;throw(int x) {
+int throw(int x) {
 if (x == 0) return 42;
 return throw(x-1) + 1;
 }
 
-int ;true(int x) {
+int true(int x) {
 if (x == 0) return 42;
 return true(x-1) + 1;
 }
 
-int ;try(int x) {
+int try(int x) {
 if (x == 0) return 42;
 return ;try{}(x-1) + 1;
 }
 
-int ;var(int x) {
+int var(int x) {
 if (x == 0) return 42;
 return ;var(;x-1;;) + 1;
 }
 
-int ;void(int x) {
+int void(int x) {
 if (x == 0) return 42;
 return ;void(;x-1;;) + 1;
 }
 
-int ;while(int x) {
+int while(int x) {
 if (x == 0) return 42;
 return ;while(x-1) + 1;
 }
 
-int ;with(int x) {
+int with(int x) {
 if (x == 0) return 42;
 return with(x-1) + 1;
 }
 
 
-int[StringToken] ;[SyntheticToken]assert[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+int[StringToken] assert[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
 if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
 return[KeywordToken] assert[KeywordToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] +[SimpleToken] 1[StringToken];[SimpleToken]
 }[SimpleToken]
 
-int[StringToken] ;[SyntheticToken]break[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+int[StringToken] break[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
 if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
 return[KeywordToken] [SyntheticStringToken];[SyntheticToken]break[KeywordToken];[SyntheticToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] +[SimpleToken] 1[StringToken];[SimpleToken]
 }[SimpleToken]
 
-int[StringToken] ;[SyntheticToken]case[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+int[StringToken] case[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
 if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
 return[KeywordToken] case[KeywordToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] +[SimpleToken] 1[StringToken];[SimpleToken]
 }[SimpleToken]
 
-int[StringToken] ;[SyntheticToken]catch[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+int[StringToken] catch[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
 if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
 return[KeywordToken] catch[KeywordToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] +[SimpleToken] 1[StringToken];[SimpleToken]
 }[SimpleToken]
 
-int[StringToken] ;[SyntheticToken]class[KeywordToken]([BeginToken][SyntheticStringToken]{[SyntheticBeginToken]}[SyntheticToken]int[StringToken] x[StringToken];[SyntheticToken])[SimpleToken] {[BeginToken]
+int[StringToken] class[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
 if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
 return[KeywordToken] class[KeywordToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] +[SimpleToken] 1[StringToken];[SimpleToken]
 }[SimpleToken]
 
-int[StringToken] ;[SyntheticToken]const[KeywordToken][SyntheticStringToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+int[StringToken] const[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
 if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
 return[KeywordToken] const[KeywordToken][SyntheticStringToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] +[SimpleToken] 1[StringToken];[SimpleToken]
 }[SimpleToken]
 
-int[StringToken] ;[SyntheticToken]continue[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+int[StringToken] continue[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
 if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
 return[KeywordToken] [SyntheticStringToken];[SyntheticToken]continue[KeywordToken];[SyntheticToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] +[SimpleToken] 1[StringToken];[SimpleToken]
 }[SimpleToken]
 
-int[StringToken] ;[SyntheticToken]default[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+int[StringToken] default[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
 if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
 return[KeywordToken] default[KeywordToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] +[SimpleToken] 1[StringToken];[SimpleToken]
 }[SimpleToken]
 
-int[StringToken] ;[SyntheticToken]do[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+int[StringToken] do[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
 if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
 return[KeywordToken] [SyntheticStringToken];[SyntheticToken]do[KeywordToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] +[SimpleToken] 1[StringToken];[SimpleToken]
 while[SyntheticKeywordToken]([SyntheticBeginToken][SyntheticStringToken])[SyntheticToken];[SyntheticToken]}[SimpleToken]
 
-int[StringToken] ;[SyntheticToken]else[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+int[StringToken] else[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
 if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
 return[KeywordToken] [SyntheticStringToken];[SyntheticToken][SyntheticStringToken];[SyntheticToken]else[KeywordToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] +[SimpleToken] 1[StringToken];[SimpleToken]
 }[SimpleToken]
 
-int[StringToken] ;[SyntheticToken]enum[KeywordToken]([BeginToken][SyntheticStringToken]{[SyntheticBeginToken]}[SyntheticToken]int[StringToken] x[StringToken];[SyntheticToken])[SimpleToken] {[BeginToken]
+int[StringToken] enum[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
 if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
 return[KeywordToken] enum[KeywordToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] +[SimpleToken] 1[StringToken];[SimpleToken]
 }[SimpleToken]
 
-int[StringToken] ;[SyntheticToken]extends[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+int[StringToken] extends[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
 if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
 return[KeywordToken] extends[KeywordToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] +[SimpleToken] 1[StringToken];[SimpleToken]
 }[SimpleToken]
 
-int[StringToken] ;[SyntheticToken]false[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+int[StringToken] false[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
 if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
 return[KeywordToken] false[KeywordToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] +[SimpleToken] 1[StringToken];[SimpleToken]
 }[SimpleToken]
 
-int[StringToken] ;[SyntheticToken]final[KeywordToken][SyntheticStringToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+int[StringToken] final[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
 if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
 return[KeywordToken] [SyntheticStringToken];[SyntheticToken]final[KeywordToken]([BeginToken][SyntheticStringToken];[SyntheticToken]x[StringToken]-[SimpleToken]1[StringToken];[SyntheticToken][SyntheticStringToken];[SyntheticToken])[SimpleToken] [SyntheticStringToken]+[SimpleToken] 1[StringToken];[SimpleToken]
 }[SimpleToken]
 
-int[StringToken] ;[SyntheticToken]finally[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+int[StringToken] finally[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
 if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
 return[KeywordToken] finally[KeywordToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] +[SimpleToken] 1[StringToken];[SimpleToken]
 }[SimpleToken]
 
-int[StringToken] ;[SyntheticToken]for[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+int[StringToken] for[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
 if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
 return[KeywordToken] [SyntheticStringToken];[SyntheticToken]for[KeywordToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken];[SyntheticToken][SyntheticStringToken];[SyntheticToken])[SimpleToken] [SyntheticStringToken]+[SimpleToken] 1[StringToken];[SimpleToken]
 }[SimpleToken]
 
-int[StringToken] ;[SyntheticToken]if[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+int[StringToken] if[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
 if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
 return[KeywordToken] [SyntheticStringToken];[SyntheticToken]if[KeywordToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] [SyntheticStringToken]+[SimpleToken] 1[StringToken];[SimpleToken]
 }[SimpleToken]
 
-int[StringToken] ;[SyntheticToken]in[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+int[StringToken] in[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
 if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
 return[KeywordToken] in[KeywordToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] +[SimpleToken] 1[StringToken];[SimpleToken]
 }[SimpleToken]
 
-int[StringToken] ;[SyntheticToken]is[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+int[StringToken] is[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
 if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
 return[KeywordToken] [SyntheticStringToken]is[KeywordToken][SyntheticStringToken];[SyntheticToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] +[SimpleToken] 1[StringToken];[SimpleToken]
 }[SimpleToken]
 
-int[StringToken] ;[SyntheticToken]new[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+int[StringToken] new[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
 if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
 return[KeywordToken] new[KeywordToken][SyntheticStringToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] +[SimpleToken] 1[StringToken];[SimpleToken]
 }[SimpleToken]
 
-int[StringToken] ;[SyntheticToken]null[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+int[StringToken] null[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
 if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
 return[KeywordToken] null[KeywordToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] +[SimpleToken] 1[StringToken];[SimpleToken]
 }[SimpleToken]
 
-int[StringToken] ;[SyntheticToken]rethrow[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+int[StringToken] rethrow[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
 if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
 return[KeywordToken] rethrow[KeywordToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] +[SimpleToken] 1[StringToken];[SimpleToken]
 }[SimpleToken]
 
-int[StringToken] ;[SyntheticToken]return[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+int[StringToken] return[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
 if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
 return[KeywordToken] return[KeywordToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] +[SimpleToken] 1[StringToken];[SimpleToken]
 }[SimpleToken]
 
-int[StringToken] ;[SyntheticToken]super[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+int[StringToken] super[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
 if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
 return[KeywordToken] super[KeywordToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] +[SimpleToken] 1[StringToken];[SimpleToken]
 }[SimpleToken]
 
-int[StringToken] ;[SyntheticToken]switch[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+int[StringToken] switch[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
 if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
 return[KeywordToken] [SyntheticStringToken];[SyntheticToken]switch[KeywordToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] {[SyntheticBeginToken]}[SyntheticToken][SyntheticStringToken]+[SimpleToken] 1[StringToken];[SimpleToken]
 }[SimpleToken]
@@ -296,37 +296,37 @@
 return[KeywordToken] this[KeywordToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] +[SimpleToken] 1[StringToken];[SimpleToken]
 }[SimpleToken]
 
-int[StringToken] ;[SyntheticToken]throw[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+int[StringToken] throw[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
 if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
 return[KeywordToken] throw[KeywordToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] +[SimpleToken] 1[StringToken];[SimpleToken]
 }[SimpleToken]
 
-int[StringToken] ;[SyntheticToken]true[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+int[StringToken] true[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
 if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
 return[KeywordToken] true[KeywordToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] +[SimpleToken] 1[StringToken];[SimpleToken]
 }[SimpleToken]
 
-int[StringToken] ;[SyntheticToken]try[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+int[StringToken] try[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
 if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
 return[KeywordToken] [SyntheticStringToken];[SyntheticToken]try[KeywordToken]{[SyntheticBeginToken]}[SyntheticToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] +[SimpleToken] 1[StringToken];[SimpleToken]
 }[SimpleToken]
 
-int[StringToken] ;[SyntheticToken]var[KeywordToken][SyntheticStringToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+int[StringToken] var[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
 if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
 return[KeywordToken] [SyntheticStringToken];[SyntheticToken]var[KeywordToken]([BeginToken][SyntheticStringToken];[SyntheticToken]x[StringToken]-[SimpleToken]1[StringToken];[SyntheticToken][SyntheticStringToken];[SyntheticToken])[SimpleToken] [SyntheticStringToken]+[SimpleToken] 1[StringToken];[SimpleToken]
 }[SimpleToken]
 
-int[StringToken] ;[SyntheticToken]void[KeywordToken][SyntheticStringToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+int[StringToken] void[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
 if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
 return[KeywordToken] [SyntheticStringToken];[SyntheticToken]void[KeywordToken]([BeginToken][SyntheticStringToken];[SyntheticToken]x[StringToken]-[SimpleToken]1[StringToken];[SyntheticToken][SyntheticStringToken];[SyntheticToken])[SimpleToken] [SyntheticStringToken]+[SimpleToken] 1[StringToken];[SimpleToken]
 }[SimpleToken]
 
-int[StringToken] ;[SyntheticToken]while[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+int[StringToken] while[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
 if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
 return[KeywordToken] [SyntheticStringToken];[SyntheticToken]while[KeywordToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] [SyntheticStringToken]+[SimpleToken] 1[StringToken];[SimpleToken]
 }[SimpleToken]
 
-int[StringToken] ;[SyntheticToken]with[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+int[StringToken] with[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
 if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
 return[KeywordToken] with[KeywordToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] +[SimpleToken] 1[StringToken];[SimpleToken]
 }[SimpleToken]
diff --git a/pkg/front_end/parser_testcases/error_recovery/reserved_words_top_level_methods.dart.expect b/pkg/front_end/parser_testcases/error_recovery/reserved_words_top_level_methods.dart.expect
index 5d0f1b4..577ef81 100644
--- a/pkg/front_end/parser_testcases/error_recovery/reserved_words_top_level_methods.dart.expect
+++ b/pkg/front_end/parser_testcases/error_recovery/reserved_words_top_level_methods.dart.expect
@@ -1,13 +1,5 @@
 Problems reported:
 
-parser/error_recovery/reserved_words_top_level_methods:1:1: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
-int assert(int x) {
-^^^
-
-parser/error_recovery/reserved_words_top_level_methods:1:1: Expected ';' after this.
-int assert(int x) {
-^^^
-
 parser/error_recovery/reserved_words_top_level_methods:1:5: Expected an identifier, but got 'assert'.
 int assert(int x) {
     ^^^^^^
@@ -16,14 +8,6 @@
   return assert(x-1) + 1;
          ^^^^^^
 
-parser/error_recovery/reserved_words_top_level_methods:6:1: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
-int break(int x) {
-^^^
-
-parser/error_recovery/reserved_words_top_level_methods:6:1: Expected ';' after this.
-int break(int x) {
-^^^
-
 parser/error_recovery/reserved_words_top_level_methods:6:5: Expected an identifier, but got 'break'.
 int break(int x) {
     ^^^^^
@@ -44,14 +28,6 @@
   return break(x-1) + 1;
          ^^^^^
 
-parser/error_recovery/reserved_words_top_level_methods:11:1: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
-int case(int x) {
-^^^
-
-parser/error_recovery/reserved_words_top_level_methods:11:1: Expected ';' after this.
-int case(int x) {
-^^^
-
 parser/error_recovery/reserved_words_top_level_methods:11:5: Expected an identifier, but got 'case'.
 int case(int x) {
     ^^^^
@@ -60,14 +36,6 @@
   return case(x-1) + 1;
          ^^^^
 
-parser/error_recovery/reserved_words_top_level_methods:16:1: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
-int catch(int x) {
-^^^
-
-parser/error_recovery/reserved_words_top_level_methods:16:1: Expected ';' after this.
-int catch(int x) {
-^^^
-
 parser/error_recovery/reserved_words_top_level_methods:16:5: Expected an identifier, but got 'catch'.
 int catch(int x) {
     ^^^^^
@@ -76,47 +44,15 @@
   return catch(x-1) + 1;
          ^^^^^
 
-parser/error_recovery/reserved_words_top_level_methods:21:1: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
+parser/error_recovery/reserved_words_top_level_methods:21:5: Expected an identifier, but got 'class'.
 int class(int x) {
-^^^
+    ^^^^^
 
-parser/error_recovery/reserved_words_top_level_methods:21:1: Expected ';' after this.
-int class(int x) {
-^^^
+parser/error_recovery/reserved_words_top_level_methods:23:10: Expected an identifier, but got 'class'.
+  return class(x-1) + 1;
+         ^^^^^
 
-parser/error_recovery/reserved_words_top_level_methods:21:10: Expected an identifier, but got '('.
-int class(int x) {
-         ^
-
-parser/error_recovery/reserved_words_top_level_methods:21:11: A class declaration must have a body, even if it is empty.
-int class(int x) {
-          ^^^
-
-parser/error_recovery/reserved_words_top_level_methods:21:15: Expected ';' after this.
-int class(int x) {
-              ^
-
-parser/error_recovery/reserved_words_top_level_methods:21:16: Expected a declaration, but got ')'.
-int class(int x) {
-               ^
-
-parser/error_recovery/reserved_words_top_level_methods:21:18: Expected a declaration, but got '{'.
-int class(int x) {
-                 ^
-
-parser/error_recovery/reserved_words_top_level_methods:26:1: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
-int const(int x) {
-^^^
-
-parser/error_recovery/reserved_words_top_level_methods:26:1: Expected ';' after this.
-int const(int x) {
-^^^
-
-parser/error_recovery/reserved_words_top_level_methods:26:10: Expected an identifier, but got '('.
-int const(int x) {
-         ^
-
-parser/error_recovery/reserved_words_top_level_methods:26:5: Can't have modifier 'const' here.
+parser/error_recovery/reserved_words_top_level_methods:26:5: Expected an identifier, but got 'const'.
 int const(int x) {
     ^^^^^
 
@@ -124,14 +60,6 @@
   return const(x-1) + 1;
               ^
 
-parser/error_recovery/reserved_words_top_level_methods:31:1: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
-int continue(int x) {
-^^^
-
-parser/error_recovery/reserved_words_top_level_methods:31:1: Expected ';' after this.
-int continue(int x) {
-^^^
-
 parser/error_recovery/reserved_words_top_level_methods:31:5: Expected an identifier, but got 'continue'.
 int continue(int x) {
     ^^^^^^^^
@@ -152,14 +80,6 @@
   return continue(x-1) + 1;
          ^^^^^^^^
 
-parser/error_recovery/reserved_words_top_level_methods:36:1: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
-int default(int x) {
-^^^
-
-parser/error_recovery/reserved_words_top_level_methods:36:1: Expected ';' after this.
-int default(int x) {
-^^^
-
 parser/error_recovery/reserved_words_top_level_methods:36:5: Expected an identifier, but got 'default'.
 int default(int x) {
     ^^^^^^^
@@ -168,14 +88,6 @@
   return default(x-1) + 1;
          ^^^^^^^
 
-parser/error_recovery/reserved_words_top_level_methods:41:1: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
-int do(int x) {
-^^^
-
-parser/error_recovery/reserved_words_top_level_methods:41:1: Expected ';' after this.
-int do(int x) {
-^^^
-
 parser/error_recovery/reserved_words_top_level_methods:41:5: Expected an identifier, but got 'do'.
 int do(int x) {
     ^^
@@ -204,14 +116,6 @@
 }
 ^
 
-parser/error_recovery/reserved_words_top_level_methods:46:1: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
-int else(int x) {
-^^^
-
-parser/error_recovery/reserved_words_top_level_methods:46:1: Expected ';' after this.
-int else(int x) {
-^^^
-
 parser/error_recovery/reserved_words_top_level_methods:46:5: Expected an identifier, but got 'else'.
 int else(int x) {
     ^^^^
@@ -236,41 +140,13 @@
   return else(x-1) + 1;
          ^^^^
 
-parser/error_recovery/reserved_words_top_level_methods:51:1: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
+parser/error_recovery/reserved_words_top_level_methods:51:5: Expected an identifier, but got 'enum'.
 int enum(int x) {
-^^^
+    ^^^^
 
-parser/error_recovery/reserved_words_top_level_methods:51:1: Expected ';' after this.
-int enum(int x) {
-^^^
-
-parser/error_recovery/reserved_words_top_level_methods:51:9: Expected an identifier, but got '('.
-int enum(int x) {
-        ^
-
-parser/error_recovery/reserved_words_top_level_methods:51:10: Expected a enum body, but got 'int'.
-int enum(int x) {
-         ^^^
-
-parser/error_recovery/reserved_words_top_level_methods:51:14: Expected ';' after this.
-int enum(int x) {
-             ^
-
-parser/error_recovery/reserved_words_top_level_methods:51:15: Expected a declaration, but got ')'.
-int enum(int x) {
-              ^
-
-parser/error_recovery/reserved_words_top_level_methods:51:17: Expected a declaration, but got '{'.
-int enum(int x) {
-                ^
-
-parser/error_recovery/reserved_words_top_level_methods:56:1: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
-int extends(int x) {
-^^^
-
-parser/error_recovery/reserved_words_top_level_methods:56:1: Expected ';' after this.
-int extends(int x) {
-^^^
+parser/error_recovery/reserved_words_top_level_methods:53:10: Expected an identifier, but got 'enum'.
+  return enum(x-1) + 1;
+         ^^^^
 
 parser/error_recovery/reserved_words_top_level_methods:56:5: Expected an identifier, but got 'extends'.
 int extends(int x) {
@@ -280,31 +156,11 @@
   return extends(x-1) + 1;
          ^^^^^^^
 
-parser/error_recovery/reserved_words_top_level_methods:61:1: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
-int false(int x) {
-^^^
-
-parser/error_recovery/reserved_words_top_level_methods:61:1: Expected ';' after this.
-int false(int x) {
-^^^
-
 parser/error_recovery/reserved_words_top_level_methods:61:5: Expected an identifier, but got 'false'.
 int false(int x) {
     ^^^^^
 
-parser/error_recovery/reserved_words_top_level_methods:66:1: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
-int final(int x) {
-^^^
-
-parser/error_recovery/reserved_words_top_level_methods:66:1: Expected ';' after this.
-int final(int x) {
-^^^
-
-parser/error_recovery/reserved_words_top_level_methods:66:10: Expected an identifier, but got '('.
-int final(int x) {
-         ^
-
-parser/error_recovery/reserved_words_top_level_methods:66:5: Can't have modifier 'final' here.
+parser/error_recovery/reserved_words_top_level_methods:66:5: Expected an identifier, but got 'final'.
 int final(int x) {
     ^^^^^
 
@@ -344,14 +200,6 @@
   return final(x-1) + 1;
                     ^
 
-parser/error_recovery/reserved_words_top_level_methods:71:1: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
-int finally(int x) {
-^^^
-
-parser/error_recovery/reserved_words_top_level_methods:71:1: Expected ';' after this.
-int finally(int x) {
-^^^
-
 parser/error_recovery/reserved_words_top_level_methods:71:5: Expected an identifier, but got 'finally'.
 int finally(int x) {
     ^^^^^^^
@@ -360,14 +208,6 @@
   return finally(x-1) + 1;
          ^^^^^^^
 
-parser/error_recovery/reserved_words_top_level_methods:76:1: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
-int for(int x) {
-^^^
-
-parser/error_recovery/reserved_words_top_level_methods:76:1: Expected ';' after this.
-int for(int x) {
-^^^
-
 parser/error_recovery/reserved_words_top_level_methods:76:5: Expected an identifier, but got 'for'.
 int for(int x) {
     ^^^
@@ -396,14 +236,6 @@
   return for(x-1) + 1;
                   ^
 
-parser/error_recovery/reserved_words_top_level_methods:81:1: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
-int if(int x) {
-^^^
-
-parser/error_recovery/reserved_words_top_level_methods:81:1: Expected ';' after this.
-int if(int x) {
-^^^
-
 parser/error_recovery/reserved_words_top_level_methods:81:5: Expected an identifier, but got 'if'.
 int if(int x) {
     ^^
@@ -420,14 +252,6 @@
   return if(x-1) + 1;
                  ^
 
-parser/error_recovery/reserved_words_top_level_methods:86:1: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
-int in(int x) {
-^^^
-
-parser/error_recovery/reserved_words_top_level_methods:86:1: Expected ';' after this.
-int in(int x) {
-^^^
-
 parser/error_recovery/reserved_words_top_level_methods:86:5: Expected an identifier, but got 'in'.
 int in(int x) {
     ^^
@@ -436,14 +260,6 @@
   return in(x-1) + 1;
          ^^
 
-parser/error_recovery/reserved_words_top_level_methods:91:1: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
-int is(int x) {
-^^^
-
-parser/error_recovery/reserved_words_top_level_methods:91:1: Expected ';' after this.
-int is(int x) {
-^^^
-
 parser/error_recovery/reserved_words_top_level_methods:91:5: Expected an identifier, but got 'is'.
 int is(int x) {
     ^^
@@ -460,14 +276,6 @@
   return is(x-1) + 1;
            ^
 
-parser/error_recovery/reserved_words_top_level_methods:96:1: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
-int new(int x) {
-^^^
-
-parser/error_recovery/reserved_words_top_level_methods:96:1: Expected ';' after this.
-int new(int x) {
-^^^
-
 parser/error_recovery/reserved_words_top_level_methods:96:5: Expected an identifier, but got 'new'.
 int new(int x) {
     ^^^
@@ -476,26 +284,10 @@
   return new(x-1) + 1;
             ^
 
-parser/error_recovery/reserved_words_top_level_methods:101:1: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
-int null(int x) {
-^^^
-
-parser/error_recovery/reserved_words_top_level_methods:101:1: Expected ';' after this.
-int null(int x) {
-^^^
-
 parser/error_recovery/reserved_words_top_level_methods:101:5: Expected an identifier, but got 'null'.
 int null(int x) {
     ^^^^
 
-parser/error_recovery/reserved_words_top_level_methods:106:1: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
-int rethrow(int x) {
-^^^
-
-parser/error_recovery/reserved_words_top_level_methods:106:1: Expected ';' after this.
-int rethrow(int x) {
-^^^
-
 parser/error_recovery/reserved_words_top_level_methods:106:5: Expected an identifier, but got 'rethrow'.
 int rethrow(int x) {
     ^^^^^^^
@@ -504,14 +296,6 @@
   return rethrow(x-1) + 1;
          ^^^^^^^
 
-parser/error_recovery/reserved_words_top_level_methods:111:1: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
-int return(int x) {
-^^^
-
-parser/error_recovery/reserved_words_top_level_methods:111:1: Expected ';' after this.
-int return(int x) {
-^^^
-
 parser/error_recovery/reserved_words_top_level_methods:111:5: Expected an identifier, but got 'return'.
 int return(int x) {
     ^^^^^^
@@ -520,26 +304,10 @@
   return return(x-1) + 1;
          ^^^^^^
 
-parser/error_recovery/reserved_words_top_level_methods:116:1: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
-int super(int x) {
-^^^
-
-parser/error_recovery/reserved_words_top_level_methods:116:1: Expected ';' after this.
-int super(int x) {
-^^^
-
 parser/error_recovery/reserved_words_top_level_methods:116:5: Expected an identifier, but got 'super'.
 int super(int x) {
     ^^^^^
 
-parser/error_recovery/reserved_words_top_level_methods:121:1: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
-int switch(int x) {
-^^^
-
-parser/error_recovery/reserved_words_top_level_methods:121:1: Expected ';' after this.
-int switch(int x) {
-^^^
-
 parser/error_recovery/reserved_words_top_level_methods:121:5: Expected an identifier, but got 'switch'.
 int switch(int x) {
     ^^^^^^
@@ -564,38 +332,14 @@
 int this(int x) {
     ^^^^
 
-parser/error_recovery/reserved_words_top_level_methods:131:1: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
-int throw(int x) {
-^^^
-
-parser/error_recovery/reserved_words_top_level_methods:131:1: Expected ';' after this.
-int throw(int x) {
-^^^
-
 parser/error_recovery/reserved_words_top_level_methods:131:5: Expected an identifier, but got 'throw'.
 int throw(int x) {
     ^^^^^
 
-parser/error_recovery/reserved_words_top_level_methods:136:1: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
-int true(int x) {
-^^^
-
-parser/error_recovery/reserved_words_top_level_methods:136:1: Expected ';' after this.
-int true(int x) {
-^^^
-
 parser/error_recovery/reserved_words_top_level_methods:136:5: Expected an identifier, but got 'true'.
 int true(int x) {
     ^^^^
 
-parser/error_recovery/reserved_words_top_level_methods:141:1: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
-int try(int x) {
-^^^
-
-parser/error_recovery/reserved_words_top_level_methods:141:1: Expected ';' after this.
-int try(int x) {
-^^^
-
 parser/error_recovery/reserved_words_top_level_methods:141:5: Expected an identifier, but got 'try'.
 int try(int x) {
     ^^^
@@ -616,19 +360,7 @@
   return try(x-1) + 1;
          ^^^
 
-parser/error_recovery/reserved_words_top_level_methods:146:1: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
-int var(int x) {
-^^^
-
-parser/error_recovery/reserved_words_top_level_methods:146:1: Expected ';' after this.
-int var(int x) {
-^^^
-
-parser/error_recovery/reserved_words_top_level_methods:146:8: Expected an identifier, but got '('.
-int var(int x) {
-       ^
-
-parser/error_recovery/reserved_words_top_level_methods:146:5: The return type can't be 'var'.
+parser/error_recovery/reserved_words_top_level_methods:146:5: Expected an identifier, but got 'var'.
 int var(int x) {
     ^^^
 
@@ -668,17 +400,9 @@
   return var(x-1) + 1;
                   ^
 
-parser/error_recovery/reserved_words_top_level_methods:151:1: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
+parser/error_recovery/reserved_words_top_level_methods:151:5: Expected an identifier, but got 'void'.
 int void(int x) {
-^^^
-
-parser/error_recovery/reserved_words_top_level_methods:151:1: Expected ';' after this.
-int void(int x) {
-^^^
-
-parser/error_recovery/reserved_words_top_level_methods:151:9: Expected an identifier, but got '('.
-int void(int x) {
-        ^
+    ^^^^
 
 parser/error_recovery/reserved_words_top_level_methods:153:10: Expected an identifier, but got 'void'.
   return void(x-1) + 1;
@@ -716,14 +440,6 @@
   return void(x-1) + 1;
                    ^
 
-parser/error_recovery/reserved_words_top_level_methods:156:1: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
-int while(int x) {
-^^^
-
-parser/error_recovery/reserved_words_top_level_methods:156:1: Expected ';' after this.
-int while(int x) {
-^^^
-
 parser/error_recovery/reserved_words_top_level_methods:156:5: Expected an identifier, but got 'while'.
 int while(int x) {
     ^^^^^
@@ -740,14 +456,6 @@
   return while(x-1) + 1;
                     ^
 
-parser/error_recovery/reserved_words_top_level_methods:161:1: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
-int with(int x) {
-^^^
-
-parser/error_recovery/reserved_words_top_level_methods:161:1: Expected ';' after this.
-int with(int x) {
-^^^
-
 parser/error_recovery/reserved_words_top_level_methods:161:5: Expected an identifier, but got 'with'.
 int with(int x) {
     ^^^^
@@ -760,51 +468,997 @@
   beginMetadataStar(int)
   endMetadataStar(0)
   beginTopLevelMember(int)
-    handleRecoverableError(MissingConstFinalVarOrType, int, int)
-    handleNoType()
-    handleIdentifier(int, topLevelVariableDeclaration)
-    handleNoFieldInitializer(assert)
-    handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
-  endTopLevelFields(null, null, null, null, 1, int, ;)
-endTopLevelDeclaration(assert)
-beginMetadataStar(assert)
-endMetadataStar(0)
-beginTopLevelMember(assert)
-  beginTopLevelMethod(;, null)
-    handleNoType(;)
-    handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'assert'., null, {token: assert}], assert, assert)
-    handleIdentifier(assert, topLevelFunctionDeclaration)
-    handleNoTypeVariables(()
-    beginFormalParameters((, MemberKind.TopLevelMethod)
-      beginMetadataStar(int)
-      endMetadataStar(0)
-      beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
-        handleIdentifier(int, typeReference)
-        handleNoTypeArguments(x)
-        handleType(int, null)
-        handleIdentifier(x, formalParameterDeclaration)
-        handleFormalParameterWithoutValue())
-      endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
-    endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
-    handleAsyncModifier(null, null)
-    beginBlockFunctionBody({)
-      beginIfStatement(if)
+    beginTopLevelMethod(, null)
+      handleIdentifier(int, typeReference)
+      handleNoTypeArguments(assert)
+      handleType(int, null)
+      handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'assert'., null, {token: assert}], assert, assert)
+      handleIdentifier(assert, topLevelFunctionDeclaration)
+      handleNoTypeVariables(()
+      beginFormalParameters((, MemberKind.TopLevelMethod)
+        beginMetadataStar(int)
+        endMetadataStar(0)
+        beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+          handleIdentifier(int, typeReference)
+          handleNoTypeArguments(x)
+          handleType(int, null)
+          handleIdentifier(x, formalParameterDeclaration)
+          handleFormalParameterWithoutValue())
+        endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+      endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
+      handleAsyncModifier(null, null)
+      beginBlockFunctionBody({)
+        beginIfStatement(if)
+          handleIdentifier(x, expression)
+          handleNoTypeArguments(==)
+          handleNoArguments(==)
+          handleSend(x, ==)
+          beginBinaryExpression(==)
+          handleLiteralInt(0)
+          endBinaryExpression(==)
+          handleParenthesizedCondition(()
+          beginThenStatement(return)
+            beginReturnStatement(return)
+              handleLiteralInt(42)
+            endReturnStatement(true, return, ;)
+          endThenStatement(;)
+        endIfStatement(if, null)
+        beginReturnStatement(return)
+          beginAssert(assert, Assert.Expression)
+            handleIdentifier(x, expression)
+            handleNoTypeArguments(-)
+            handleNoArguments(-)
+            handleSend(x, -)
+            beginBinaryExpression(-)
+            handleLiteralInt(1)
+            endBinaryExpression(-)
+            handleRecoverableError(AssertAsExpression, assert, assert)
+          endAssert(assert, Assert.Expression, (, null, +)
+          beginBinaryExpression(+)
+          handleLiteralInt(1)
+          endBinaryExpression(+)
+        endReturnStatement(true, return, ;)
+      endBlockFunctionBody(2, {, })
+    endTopLevelMethod(int, null, })
+  endTopLevelDeclaration(int)
+  beginMetadataStar(int)
+  endMetadataStar(0)
+  beginTopLevelMember(int)
+    beginTopLevelMethod(}, null)
+      handleIdentifier(int, typeReference)
+      handleNoTypeArguments(break)
+      handleType(int, null)
+      handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'break'., null, {token: break}], break, break)
+      handleIdentifier(break, topLevelFunctionDeclaration)
+      handleNoTypeVariables(()
+      beginFormalParameters((, MemberKind.TopLevelMethod)
+        beginMetadataStar(int)
+        endMetadataStar(0)
+        beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+          handleIdentifier(int, typeReference)
+          handleNoTypeArguments(x)
+          handleType(int, null)
+          handleIdentifier(x, formalParameterDeclaration)
+          handleFormalParameterWithoutValue())
+        endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+      endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
+      handleAsyncModifier(null, null)
+      beginBlockFunctionBody({)
+        beginIfStatement(if)
+          handleIdentifier(x, expression)
+          handleNoTypeArguments(==)
+          handleNoArguments(==)
+          handleSend(x, ==)
+          beginBinaryExpression(==)
+          handleLiteralInt(0)
+          endBinaryExpression(==)
+          handleParenthesizedCondition(()
+          beginThenStatement(return)
+            beginReturnStatement(return)
+              handleLiteralInt(42)
+            endReturnStatement(true, return, ;)
+          endThenStatement(;)
+        endIfStatement(if, null)
+        beginReturnStatement(return)
+          handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'break'., null, {token: break}], break, break)
+          handleIdentifier(, expression)
+          handleNoTypeArguments(break)
+          handleNoArguments(break)
+          handleSend(, break)
+          handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], break, break)
+        endReturnStatement(true, return, ;)
+        handleRecoverableError(BreakOutsideOfLoop, break, break)
+        handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], break, break)
+        handleBreakStatement(false, break, ;)
         handleIdentifier(x, expression)
-        handleNoTypeArguments(==)
-        handleNoArguments(==)
-        handleSend(x, ==)
-        beginBinaryExpression(==)
-        handleLiteralInt(0)
-        endBinaryExpression(==)
-        handleParenthesizedCondition(()
-        beginThenStatement(return)
-          beginReturnStatement(return)
-            handleLiteralInt(42)
-          endReturnStatement(true, return, ;)
-        endThenStatement(;)
-      endIfStatement(if, null)
-      beginReturnStatement(return)
-        beginAssert(assert, Assert.Expression)
+        handleNoTypeArguments(-)
+        handleNoArguments(-)
+        handleSend(x, -)
+        beginBinaryExpression(-)
+        handleLiteralInt(1)
+        endBinaryExpression(-)
+        handleParenthesizedExpression(()
+        beginBinaryExpression(+)
+        handleLiteralInt(1)
+        endBinaryExpression(+)
+        handleExpressionStatement(;)
+      endBlockFunctionBody(4, {, })
+    endTopLevelMethod(int, null, })
+  endTopLevelDeclaration(int)
+  beginMetadataStar(int)
+  endMetadataStar(0)
+  beginTopLevelMember(int)
+    beginTopLevelMethod(}, null)
+      handleIdentifier(int, typeReference)
+      handleNoTypeArguments(case)
+      handleType(int, null)
+      handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'case'., null, {token: case}], case, case)
+      handleIdentifier(case, topLevelFunctionDeclaration)
+      handleNoTypeVariables(()
+      beginFormalParameters((, MemberKind.TopLevelMethod)
+        beginMetadataStar(int)
+        endMetadataStar(0)
+        beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+          handleIdentifier(int, typeReference)
+          handleNoTypeArguments(x)
+          handleType(int, null)
+          handleIdentifier(x, formalParameterDeclaration)
+          handleFormalParameterWithoutValue())
+        endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+      endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
+      handleAsyncModifier(null, null)
+      beginBlockFunctionBody({)
+        beginIfStatement(if)
+          handleIdentifier(x, expression)
+          handleNoTypeArguments(==)
+          handleNoArguments(==)
+          handleSend(x, ==)
+          beginBinaryExpression(==)
+          handleLiteralInt(0)
+          endBinaryExpression(==)
+          handleParenthesizedCondition(()
+          beginThenStatement(return)
+            beginReturnStatement(return)
+              handleLiteralInt(42)
+            endReturnStatement(true, return, ;)
+          endThenStatement(;)
+        endIfStatement(if, null)
+        beginReturnStatement(return)
+          handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'case'., null, {token: case}], case, case)
+          handleIdentifier(case, expression)
+          handleNoTypeArguments(()
+          beginArguments(()
+            handleIdentifier(x, expression)
+            handleNoTypeArguments(-)
+            handleNoArguments(-)
+            handleSend(x, -)
+            beginBinaryExpression(-)
+            handleLiteralInt(1)
+            endBinaryExpression(-)
+          endArguments(1, (, ))
+          handleSend(case, +)
+          beginBinaryExpression(+)
+          handleLiteralInt(1)
+          endBinaryExpression(+)
+        endReturnStatement(true, return, ;)
+      endBlockFunctionBody(2, {, })
+    endTopLevelMethod(int, null, })
+  endTopLevelDeclaration(int)
+  beginMetadataStar(int)
+  endMetadataStar(0)
+  beginTopLevelMember(int)
+    beginTopLevelMethod(}, null)
+      handleIdentifier(int, typeReference)
+      handleNoTypeArguments(catch)
+      handleType(int, null)
+      handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'catch'., null, {token: catch}], catch, catch)
+      handleIdentifier(catch, topLevelFunctionDeclaration)
+      handleNoTypeVariables(()
+      beginFormalParameters((, MemberKind.TopLevelMethod)
+        beginMetadataStar(int)
+        endMetadataStar(0)
+        beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+          handleIdentifier(int, typeReference)
+          handleNoTypeArguments(x)
+          handleType(int, null)
+          handleIdentifier(x, formalParameterDeclaration)
+          handleFormalParameterWithoutValue())
+        endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+      endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
+      handleAsyncModifier(null, null)
+      beginBlockFunctionBody({)
+        beginIfStatement(if)
+          handleIdentifier(x, expression)
+          handleNoTypeArguments(==)
+          handleNoArguments(==)
+          handleSend(x, ==)
+          beginBinaryExpression(==)
+          handleLiteralInt(0)
+          endBinaryExpression(==)
+          handleParenthesizedCondition(()
+          beginThenStatement(return)
+            beginReturnStatement(return)
+              handleLiteralInt(42)
+            endReturnStatement(true, return, ;)
+          endThenStatement(;)
+        endIfStatement(if, null)
+        beginReturnStatement(return)
+          handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'catch'., null, {token: catch}], catch, catch)
+          handleIdentifier(catch, expression)
+          handleNoTypeArguments(()
+          beginArguments(()
+            handleIdentifier(x, expression)
+            handleNoTypeArguments(-)
+            handleNoArguments(-)
+            handleSend(x, -)
+            beginBinaryExpression(-)
+            handleLiteralInt(1)
+            endBinaryExpression(-)
+          endArguments(1, (, ))
+          handleSend(catch, +)
+          beginBinaryExpression(+)
+          handleLiteralInt(1)
+          endBinaryExpression(+)
+        endReturnStatement(true, return, ;)
+      endBlockFunctionBody(2, {, })
+    endTopLevelMethod(int, null, })
+  endTopLevelDeclaration(int)
+  beginMetadataStar(int)
+  endMetadataStar(0)
+  beginTopLevelMember(int)
+    beginTopLevelMethod(}, null)
+      handleIdentifier(int, typeReference)
+      handleNoTypeArguments(class)
+      handleType(int, null)
+      handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'class'., null, {token: class}], class, class)
+      handleIdentifier(class, topLevelFunctionDeclaration)
+      handleNoTypeVariables(()
+      beginFormalParameters((, MemberKind.TopLevelMethod)
+        beginMetadataStar(int)
+        endMetadataStar(0)
+        beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+          handleIdentifier(int, typeReference)
+          handleNoTypeArguments(x)
+          handleType(int, null)
+          handleIdentifier(x, formalParameterDeclaration)
+          handleFormalParameterWithoutValue())
+        endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+      endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
+      handleAsyncModifier(null, null)
+      beginBlockFunctionBody({)
+        beginIfStatement(if)
+          handleIdentifier(x, expression)
+          handleNoTypeArguments(==)
+          handleNoArguments(==)
+          handleSend(x, ==)
+          beginBinaryExpression(==)
+          handleLiteralInt(0)
+          endBinaryExpression(==)
+          handleParenthesizedCondition(()
+          beginThenStatement(return)
+            beginReturnStatement(return)
+              handleLiteralInt(42)
+            endReturnStatement(true, return, ;)
+          endThenStatement(;)
+        endIfStatement(if, null)
+        beginReturnStatement(return)
+          handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'class'., null, {token: class}], class, class)
+          handleIdentifier(class, expression)
+          handleNoTypeArguments(()
+          beginArguments(()
+            handleIdentifier(x, expression)
+            handleNoTypeArguments(-)
+            handleNoArguments(-)
+            handleSend(x, -)
+            beginBinaryExpression(-)
+            handleLiteralInt(1)
+            endBinaryExpression(-)
+          endArguments(1, (, ))
+          handleSend(class, +)
+          beginBinaryExpression(+)
+          handleLiteralInt(1)
+          endBinaryExpression(+)
+        endReturnStatement(true, return, ;)
+      endBlockFunctionBody(2, {, })
+    endTopLevelMethod(int, null, })
+  endTopLevelDeclaration(int)
+  beginMetadataStar(int)
+  endMetadataStar(0)
+  beginTopLevelMember(int)
+    beginTopLevelMethod(}, null)
+      handleIdentifier(int, typeReference)
+      handleNoTypeArguments(const)
+      handleType(int, null)
+      handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'const'., null, {token: const}], const, const)
+      handleIdentifier(const, topLevelFunctionDeclaration)
+      handleNoTypeVariables(()
+      beginFormalParameters((, MemberKind.TopLevelMethod)
+        beginMetadataStar(int)
+        endMetadataStar(0)
+        beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+          handleIdentifier(int, typeReference)
+          handleNoTypeArguments(x)
+          handleType(int, null)
+          handleIdentifier(x, formalParameterDeclaration)
+          handleFormalParameterWithoutValue())
+        endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+      endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
+      handleAsyncModifier(null, null)
+      beginBlockFunctionBody({)
+        beginIfStatement(if)
+          handleIdentifier(x, expression)
+          handleNoTypeArguments(==)
+          handleNoArguments(==)
+          handleSend(x, ==)
+          beginBinaryExpression(==)
+          handleLiteralInt(0)
+          endBinaryExpression(==)
+          handleParenthesizedCondition(()
+          beginThenStatement(return)
+            beginReturnStatement(return)
+              handleLiteralInt(42)
+            endReturnStatement(true, return, ;)
+          endThenStatement(;)
+        endIfStatement(if, null)
+        beginReturnStatement(return)
+          beginConstExpression(const)
+            handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}], (, ()
+            handleIdentifier(, constructorReference)
+            beginConstructorReference()
+              handleNoTypeArguments(()
+              handleNoConstructorReferenceContinuationAfterTypeArguments(()
+            endConstructorReference(, null, ()
+            beginArguments(()
+              handleIdentifier(x, expression)
+              handleNoTypeArguments(-)
+              handleNoArguments(-)
+              handleSend(x, -)
+              beginBinaryExpression(-)
+              handleLiteralInt(1)
+              endBinaryExpression(-)
+            endArguments(1, (, ))
+          endConstExpression(const)
+          beginBinaryExpression(+)
+          handleLiteralInt(1)
+          endBinaryExpression(+)
+        endReturnStatement(true, return, ;)
+      endBlockFunctionBody(2, {, })
+    endTopLevelMethod(int, null, })
+  endTopLevelDeclaration(int)
+  beginMetadataStar(int)
+  endMetadataStar(0)
+  beginTopLevelMember(int)
+    beginTopLevelMethod(}, null)
+      handleIdentifier(int, typeReference)
+      handleNoTypeArguments(continue)
+      handleType(int, null)
+      handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'continue'., null, {token: continue}], continue, continue)
+      handleIdentifier(continue, topLevelFunctionDeclaration)
+      handleNoTypeVariables(()
+      beginFormalParameters((, MemberKind.TopLevelMethod)
+        beginMetadataStar(int)
+        endMetadataStar(0)
+        beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+          handleIdentifier(int, typeReference)
+          handleNoTypeArguments(x)
+          handleType(int, null)
+          handleIdentifier(x, formalParameterDeclaration)
+          handleFormalParameterWithoutValue())
+        endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+      endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
+      handleAsyncModifier(null, null)
+      beginBlockFunctionBody({)
+        beginIfStatement(if)
+          handleIdentifier(x, expression)
+          handleNoTypeArguments(==)
+          handleNoArguments(==)
+          handleSend(x, ==)
+          beginBinaryExpression(==)
+          handleLiteralInt(0)
+          endBinaryExpression(==)
+          handleParenthesizedCondition(()
+          beginThenStatement(return)
+            beginReturnStatement(return)
+              handleLiteralInt(42)
+            endReturnStatement(true, return, ;)
+          endThenStatement(;)
+        endIfStatement(if, null)
+        beginReturnStatement(return)
+          handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'continue'., null, {token: continue}], continue, continue)
+          handleIdentifier(, expression)
+          handleNoTypeArguments(continue)
+          handleNoArguments(continue)
+          handleSend(, continue)
+          handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], continue, continue)
+        endReturnStatement(true, return, ;)
+        handleRecoverableError(ContinueOutsideOfLoop, continue, continue)
+        handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], continue, continue)
+        handleContinueStatement(false, continue, ;)
+        handleIdentifier(x, expression)
+        handleNoTypeArguments(-)
+        handleNoArguments(-)
+        handleSend(x, -)
+        beginBinaryExpression(-)
+        handleLiteralInt(1)
+        endBinaryExpression(-)
+        handleParenthesizedExpression(()
+        beginBinaryExpression(+)
+        handleLiteralInt(1)
+        endBinaryExpression(+)
+        handleExpressionStatement(;)
+      endBlockFunctionBody(4, {, })
+    endTopLevelMethod(int, null, })
+  endTopLevelDeclaration(int)
+  beginMetadataStar(int)
+  endMetadataStar(0)
+  beginTopLevelMember(int)
+    beginTopLevelMethod(}, null)
+      handleIdentifier(int, typeReference)
+      handleNoTypeArguments(default)
+      handleType(int, null)
+      handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'default'., null, {token: default}], default, default)
+      handleIdentifier(default, topLevelFunctionDeclaration)
+      handleNoTypeVariables(()
+      beginFormalParameters((, MemberKind.TopLevelMethod)
+        beginMetadataStar(int)
+        endMetadataStar(0)
+        beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+          handleIdentifier(int, typeReference)
+          handleNoTypeArguments(x)
+          handleType(int, null)
+          handleIdentifier(x, formalParameterDeclaration)
+          handleFormalParameterWithoutValue())
+        endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+      endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
+      handleAsyncModifier(null, null)
+      beginBlockFunctionBody({)
+        beginIfStatement(if)
+          handleIdentifier(x, expression)
+          handleNoTypeArguments(==)
+          handleNoArguments(==)
+          handleSend(x, ==)
+          beginBinaryExpression(==)
+          handleLiteralInt(0)
+          endBinaryExpression(==)
+          handleParenthesizedCondition(()
+          beginThenStatement(return)
+            beginReturnStatement(return)
+              handleLiteralInt(42)
+            endReturnStatement(true, return, ;)
+          endThenStatement(;)
+        endIfStatement(if, null)
+        beginReturnStatement(return)
+          handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'default'., null, {token: default}], default, default)
+          handleIdentifier(default, expression)
+          handleNoTypeArguments(()
+          beginArguments(()
+            handleIdentifier(x, expression)
+            handleNoTypeArguments(-)
+            handleNoArguments(-)
+            handleSend(x, -)
+            beginBinaryExpression(-)
+            handleLiteralInt(1)
+            endBinaryExpression(-)
+          endArguments(1, (, ))
+          handleSend(default, +)
+          beginBinaryExpression(+)
+          handleLiteralInt(1)
+          endBinaryExpression(+)
+        endReturnStatement(true, return, ;)
+      endBlockFunctionBody(2, {, })
+    endTopLevelMethod(int, null, })
+  endTopLevelDeclaration(int)
+  beginMetadataStar(int)
+  endMetadataStar(0)
+  beginTopLevelMember(int)
+    beginTopLevelMethod(}, null)
+      handleIdentifier(int, typeReference)
+      handleNoTypeArguments(do)
+      handleType(int, null)
+      handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'do'., null, {token: do}], do, do)
+      handleIdentifier(do, topLevelFunctionDeclaration)
+      handleNoTypeVariables(()
+      beginFormalParameters((, MemberKind.TopLevelMethod)
+        beginMetadataStar(int)
+        endMetadataStar(0)
+        beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+          handleIdentifier(int, typeReference)
+          handleNoTypeArguments(x)
+          handleType(int, null)
+          handleIdentifier(x, formalParameterDeclaration)
+          handleFormalParameterWithoutValue())
+        endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+      endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
+      handleAsyncModifier(null, null)
+      beginBlockFunctionBody({)
+        beginIfStatement(if)
+          handleIdentifier(x, expression)
+          handleNoTypeArguments(==)
+          handleNoArguments(==)
+          handleSend(x, ==)
+          beginBinaryExpression(==)
+          handleLiteralInt(0)
+          endBinaryExpression(==)
+          handleParenthesizedCondition(()
+          beginThenStatement(return)
+            beginReturnStatement(return)
+              handleLiteralInt(42)
+            endReturnStatement(true, return, ;)
+          endThenStatement(;)
+        endIfStatement(if, null)
+        beginReturnStatement(return)
+          handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'do'., null, {token: do}], do, do)
+          handleIdentifier(, expression)
+          handleNoTypeArguments(do)
+          handleNoArguments(do)
+          handleSend(, do)
+          handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], do, do)
+        endReturnStatement(true, return, ;)
+        beginDoWhileStatement(do)
+          beginDoWhileStatementBody(()
+            handleIdentifier(x, expression)
+            handleNoTypeArguments(-)
+            handleNoArguments(-)
+            handleSend(x, -)
+            beginBinaryExpression(-)
+            handleLiteralInt(1)
+            endBinaryExpression(-)
+            handleParenthesizedExpression(()
+            beginBinaryExpression(+)
+            handleLiteralInt(1)
+            endBinaryExpression(+)
+            handleExpressionStatement(;)
+          endDoWhileStatementBody(;)
+          handleRecoverableError(Message[ExpectedButGot, Expected 'while' before this., null, {string: while}], }, })
+          handleRecoverableError(Message[ExpectedToken, Expected to find '('., null, {string: (}], }, })
+          handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '}'., null, {token: }}], }, })
+          handleIdentifier(, expression)
+          handleNoTypeArguments())
+          handleNoArguments())
+          handleSend(, ))
+          handleParenthesizedCondition(()
+          handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], }, })
+        endDoWhileStatement(do, while, ;)
+      endBlockFunctionBody(3, {, })
+    endTopLevelMethod(int, null, })
+  endTopLevelDeclaration(int)
+  beginMetadataStar(int)
+  endMetadataStar(0)
+  beginTopLevelMember(int)
+    beginTopLevelMethod(}, null)
+      handleIdentifier(int, typeReference)
+      handleNoTypeArguments(else)
+      handleType(int, null)
+      handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'else'., null, {token: else}], else, else)
+      handleIdentifier(else, topLevelFunctionDeclaration)
+      handleNoTypeVariables(()
+      beginFormalParameters((, MemberKind.TopLevelMethod)
+        beginMetadataStar(int)
+        endMetadataStar(0)
+        beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+          handleIdentifier(int, typeReference)
+          handleNoTypeArguments(x)
+          handleType(int, null)
+          handleIdentifier(x, formalParameterDeclaration)
+          handleFormalParameterWithoutValue())
+        endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+      endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
+      handleAsyncModifier(null, null)
+      beginBlockFunctionBody({)
+        beginIfStatement(if)
+          handleIdentifier(x, expression)
+          handleNoTypeArguments(==)
+          handleNoArguments(==)
+          handleSend(x, ==)
+          beginBinaryExpression(==)
+          handleLiteralInt(0)
+          endBinaryExpression(==)
+          handleParenthesizedCondition(()
+          beginThenStatement(return)
+            beginReturnStatement(return)
+              handleLiteralInt(42)
+            endReturnStatement(true, return, ;)
+          endThenStatement(;)
+        endIfStatement(if, null)
+        beginReturnStatement(return)
+          handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'else'., null, {token: else}], else, else)
+          handleIdentifier(, expression)
+          handleNoTypeArguments(else)
+          handleNoArguments(else)
+          handleSend(, else)
+          handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], else, else)
+        endReturnStatement(true, return, ;)
+        handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'else'., null, {token: else}], else, else)
+        handleIdentifier(, expression)
+        handleNoTypeArguments(else)
+        handleNoArguments(else)
+        handleSend(, else)
+        handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], else, else)
+        handleExpressionStatement(;)
+        handleRecoverableError(Message[UnexpectedToken, Unexpected token ';'., null, {token: ;}], else, else)
+        handleIdentifier(x, expression)
+        handleNoTypeArguments(-)
+        handleNoArguments(-)
+        handleSend(x, -)
+        beginBinaryExpression(-)
+        handleLiteralInt(1)
+        endBinaryExpression(-)
+        handleParenthesizedExpression(()
+        beginBinaryExpression(+)
+        handleLiteralInt(1)
+        endBinaryExpression(+)
+        handleExpressionStatement(;)
+      endBlockFunctionBody(4, {, })
+    endTopLevelMethod(int, null, })
+  endTopLevelDeclaration(int)
+  beginMetadataStar(int)
+  endMetadataStar(0)
+  beginTopLevelMember(int)
+    beginTopLevelMethod(}, null)
+      handleIdentifier(int, typeReference)
+      handleNoTypeArguments(enum)
+      handleType(int, null)
+      handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'enum'., null, {token: enum}], enum, enum)
+      handleIdentifier(enum, topLevelFunctionDeclaration)
+      handleNoTypeVariables(()
+      beginFormalParameters((, MemberKind.TopLevelMethod)
+        beginMetadataStar(int)
+        endMetadataStar(0)
+        beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+          handleIdentifier(int, typeReference)
+          handleNoTypeArguments(x)
+          handleType(int, null)
+          handleIdentifier(x, formalParameterDeclaration)
+          handleFormalParameterWithoutValue())
+        endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+      endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
+      handleAsyncModifier(null, null)
+      beginBlockFunctionBody({)
+        beginIfStatement(if)
+          handleIdentifier(x, expression)
+          handleNoTypeArguments(==)
+          handleNoArguments(==)
+          handleSend(x, ==)
+          beginBinaryExpression(==)
+          handleLiteralInt(0)
+          endBinaryExpression(==)
+          handleParenthesizedCondition(()
+          beginThenStatement(return)
+            beginReturnStatement(return)
+              handleLiteralInt(42)
+            endReturnStatement(true, return, ;)
+          endThenStatement(;)
+        endIfStatement(if, null)
+        beginReturnStatement(return)
+          handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'enum'., null, {token: enum}], enum, enum)
+          handleIdentifier(enum, expression)
+          handleNoTypeArguments(()
+          beginArguments(()
+            handleIdentifier(x, expression)
+            handleNoTypeArguments(-)
+            handleNoArguments(-)
+            handleSend(x, -)
+            beginBinaryExpression(-)
+            handleLiteralInt(1)
+            endBinaryExpression(-)
+          endArguments(1, (, ))
+          handleSend(enum, +)
+          beginBinaryExpression(+)
+          handleLiteralInt(1)
+          endBinaryExpression(+)
+        endReturnStatement(true, return, ;)
+      endBlockFunctionBody(2, {, })
+    endTopLevelMethod(int, null, })
+  endTopLevelDeclaration(int)
+  beginMetadataStar(int)
+  endMetadataStar(0)
+  beginTopLevelMember(int)
+    beginTopLevelMethod(}, null)
+      handleIdentifier(int, typeReference)
+      handleNoTypeArguments(extends)
+      handleType(int, null)
+      handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'extends'., null, {token: extends}], extends, extends)
+      handleIdentifier(extends, topLevelFunctionDeclaration)
+      handleNoTypeVariables(()
+      beginFormalParameters((, MemberKind.TopLevelMethod)
+        beginMetadataStar(int)
+        endMetadataStar(0)
+        beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+          handleIdentifier(int, typeReference)
+          handleNoTypeArguments(x)
+          handleType(int, null)
+          handleIdentifier(x, formalParameterDeclaration)
+          handleFormalParameterWithoutValue())
+        endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+      endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
+      handleAsyncModifier(null, null)
+      beginBlockFunctionBody({)
+        beginIfStatement(if)
+          handleIdentifier(x, expression)
+          handleNoTypeArguments(==)
+          handleNoArguments(==)
+          handleSend(x, ==)
+          beginBinaryExpression(==)
+          handleLiteralInt(0)
+          endBinaryExpression(==)
+          handleParenthesizedCondition(()
+          beginThenStatement(return)
+            beginReturnStatement(return)
+              handleLiteralInt(42)
+            endReturnStatement(true, return, ;)
+          endThenStatement(;)
+        endIfStatement(if, null)
+        beginReturnStatement(return)
+          handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'extends'., null, {token: extends}], extends, extends)
+          handleIdentifier(extends, expression)
+          handleNoTypeArguments(()
+          beginArguments(()
+            handleIdentifier(x, expression)
+            handleNoTypeArguments(-)
+            handleNoArguments(-)
+            handleSend(x, -)
+            beginBinaryExpression(-)
+            handleLiteralInt(1)
+            endBinaryExpression(-)
+          endArguments(1, (, ))
+          handleSend(extends, +)
+          beginBinaryExpression(+)
+          handleLiteralInt(1)
+          endBinaryExpression(+)
+        endReturnStatement(true, return, ;)
+      endBlockFunctionBody(2, {, })
+    endTopLevelMethod(int, null, })
+  endTopLevelDeclaration(int)
+  beginMetadataStar(int)
+  endMetadataStar(0)
+  beginTopLevelMember(int)
+    beginTopLevelMethod(}, null)
+      handleIdentifier(int, typeReference)
+      handleNoTypeArguments(false)
+      handleType(int, null)
+      handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'false'., null, {token: false}], false, false)
+      handleIdentifier(false, topLevelFunctionDeclaration)
+      handleNoTypeVariables(()
+      beginFormalParameters((, MemberKind.TopLevelMethod)
+        beginMetadataStar(int)
+        endMetadataStar(0)
+        beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+          handleIdentifier(int, typeReference)
+          handleNoTypeArguments(x)
+          handleType(int, null)
+          handleIdentifier(x, formalParameterDeclaration)
+          handleFormalParameterWithoutValue())
+        endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+      endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
+      handleAsyncModifier(null, null)
+      beginBlockFunctionBody({)
+        beginIfStatement(if)
+          handleIdentifier(x, expression)
+          handleNoTypeArguments(==)
+          handleNoArguments(==)
+          handleSend(x, ==)
+          beginBinaryExpression(==)
+          handleLiteralInt(0)
+          endBinaryExpression(==)
+          handleParenthesizedCondition(()
+          beginThenStatement(return)
+            beginReturnStatement(return)
+              handleLiteralInt(42)
+            endReturnStatement(true, return, ;)
+          endThenStatement(;)
+        endIfStatement(if, null)
+        beginReturnStatement(return)
+          handleLiteralBool(false)
+          handleNoTypeArguments(()
+          beginArguments(()
+            handleIdentifier(x, expression)
+            handleNoTypeArguments(-)
+            handleNoArguments(-)
+            handleSend(x, -)
+            beginBinaryExpression(-)
+            handleLiteralInt(1)
+            endBinaryExpression(-)
+          endArguments(1, (, ))
+          handleSend((, ))
+          beginBinaryExpression(+)
+          handleLiteralInt(1)
+          endBinaryExpression(+)
+        endReturnStatement(true, return, ;)
+      endBlockFunctionBody(2, {, })
+    endTopLevelMethod(int, null, })
+  endTopLevelDeclaration(int)
+  beginMetadataStar(int)
+  endMetadataStar(0)
+  beginTopLevelMember(int)
+    beginTopLevelMethod(}, null)
+      handleIdentifier(int, typeReference)
+      handleNoTypeArguments(final)
+      handleType(int, null)
+      handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'final'., null, {token: final}], final, final)
+      handleIdentifier(final, topLevelFunctionDeclaration)
+      handleNoTypeVariables(()
+      beginFormalParameters((, MemberKind.TopLevelMethod)
+        beginMetadataStar(int)
+        endMetadataStar(0)
+        beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+          handleIdentifier(int, typeReference)
+          handleNoTypeArguments(x)
+          handleType(int, null)
+          handleIdentifier(x, formalParameterDeclaration)
+          handleFormalParameterWithoutValue())
+        endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+      endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
+      handleAsyncModifier(null, null)
+      beginBlockFunctionBody({)
+        beginIfStatement(if)
+          handleIdentifier(x, expression)
+          handleNoTypeArguments(==)
+          handleNoArguments(==)
+          handleSend(x, ==)
+          beginBinaryExpression(==)
+          handleLiteralInt(0)
+          endBinaryExpression(==)
+          handleParenthesizedCondition(()
+          beginThenStatement(return)
+            beginReturnStatement(return)
+              handleLiteralInt(42)
+            endReturnStatement(true, return, ;)
+          endThenStatement(;)
+        endIfStatement(if, null)
+        beginReturnStatement(return)
+          handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'final'., null, {token: final}], final, final)
+          handleIdentifier(, expression)
+          handleNoTypeArguments(final)
+          handleNoArguments(final)
+          handleSend(, final)
+          handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], final, final)
+        endReturnStatement(true, return, ;)
+        beginMetadataStar(final)
+        endMetadataStar(0)
+        handleNoType(final)
+        beginVariablesDeclaration((, null, final)
+          handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}], (, ()
+          handleIdentifier(, localVariableDeclaration)
+          beginInitializedIdentifier()
+            handleNoVariableInitializer(x)
+          endInitializedIdentifier()
+          handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], x, x)
+        endVariablesDeclaration(1, ;)
+        handleIdentifier(x, expression)
+        handleNoTypeArguments(-)
+        handleNoArguments(-)
+        handleSend(x, -)
+        beginBinaryExpression(-)
+        handleLiteralInt(1)
+        endBinaryExpression(-)
+        handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], 1, 1)
+        handleExpressionStatement(;)
+        handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got ')'., null, {token: )}], ), ))
+        handleIdentifier(, expression)
+        handleNoTypeArguments())
+        handleNoArguments())
+        handleSend(, ))
+        handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], ), ))
+        handleExpressionStatement(;)
+        handleRecoverableError(Message[UnexpectedToken, Unexpected token ';'., null, {token: ;}], ), ))
+        handleRecoverableError(UnsupportedPrefixPlus, +, +)
+        handleIdentifier(, expression)
+        handleNoTypeArguments(+)
+        handleNoArguments(+)
+        handleSend(, +)
+        beginBinaryExpression(+)
+        handleLiteralInt(1)
+        endBinaryExpression(+)
+        handleExpressionStatement(;)
+      endBlockFunctionBody(6, {, })
+    endTopLevelMethod(int, null, })
+  endTopLevelDeclaration(int)
+  beginMetadataStar(int)
+  endMetadataStar(0)
+  beginTopLevelMember(int)
+    beginTopLevelMethod(}, null)
+      handleIdentifier(int, typeReference)
+      handleNoTypeArguments(finally)
+      handleType(int, null)
+      handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'finally'., null, {token: finally}], finally, finally)
+      handleIdentifier(finally, topLevelFunctionDeclaration)
+      handleNoTypeVariables(()
+      beginFormalParameters((, MemberKind.TopLevelMethod)
+        beginMetadataStar(int)
+        endMetadataStar(0)
+        beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+          handleIdentifier(int, typeReference)
+          handleNoTypeArguments(x)
+          handleType(int, null)
+          handleIdentifier(x, formalParameterDeclaration)
+          handleFormalParameterWithoutValue())
+        endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+      endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
+      handleAsyncModifier(null, null)
+      beginBlockFunctionBody({)
+        beginIfStatement(if)
+          handleIdentifier(x, expression)
+          handleNoTypeArguments(==)
+          handleNoArguments(==)
+          handleSend(x, ==)
+          beginBinaryExpression(==)
+          handleLiteralInt(0)
+          endBinaryExpression(==)
+          handleParenthesizedCondition(()
+          beginThenStatement(return)
+            beginReturnStatement(return)
+              handleLiteralInt(42)
+            endReturnStatement(true, return, ;)
+          endThenStatement(;)
+        endIfStatement(if, null)
+        beginReturnStatement(return)
+          handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'finally'., null, {token: finally}], finally, finally)
+          handleIdentifier(finally, expression)
+          handleNoTypeArguments(()
+          beginArguments(()
+            handleIdentifier(x, expression)
+            handleNoTypeArguments(-)
+            handleNoArguments(-)
+            handleSend(x, -)
+            beginBinaryExpression(-)
+            handleLiteralInt(1)
+            endBinaryExpression(-)
+          endArguments(1, (, ))
+          handleSend(finally, +)
+          beginBinaryExpression(+)
+          handleLiteralInt(1)
+          endBinaryExpression(+)
+        endReturnStatement(true, return, ;)
+      endBlockFunctionBody(2, {, })
+    endTopLevelMethod(int, null, })
+  endTopLevelDeclaration(int)
+  beginMetadataStar(int)
+  endMetadataStar(0)
+  beginTopLevelMember(int)
+    beginTopLevelMethod(}, null)
+      handleIdentifier(int, typeReference)
+      handleNoTypeArguments(for)
+      handleType(int, null)
+      handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'for'., null, {token: for}], for, for)
+      handleIdentifier(for, topLevelFunctionDeclaration)
+      handleNoTypeVariables(()
+      beginFormalParameters((, MemberKind.TopLevelMethod)
+        beginMetadataStar(int)
+        endMetadataStar(0)
+        beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+          handleIdentifier(int, typeReference)
+          handleNoTypeArguments(x)
+          handleType(int, null)
+          handleIdentifier(x, formalParameterDeclaration)
+          handleFormalParameterWithoutValue())
+        endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+      endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
+      handleAsyncModifier(null, null)
+      beginBlockFunctionBody({)
+        beginIfStatement(if)
+          handleIdentifier(x, expression)
+          handleNoTypeArguments(==)
+          handleNoArguments(==)
+          handleSend(x, ==)
+          beginBinaryExpression(==)
+          handleLiteralInt(0)
+          endBinaryExpression(==)
+          handleParenthesizedCondition(()
+          beginThenStatement(return)
+            beginReturnStatement(return)
+              handleLiteralInt(42)
+            endReturnStatement(true, return, ;)
+          endThenStatement(;)
+        endIfStatement(if, null)
+        beginReturnStatement(return)
+          handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'for'., null, {token: for}], for, for)
+          handleIdentifier(, expression)
+          handleNoTypeArguments(for)
+          handleNoArguments(for)
+          handleSend(, for)
+          handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], for, for)
+        endReturnStatement(true, return, ;)
+        beginForStatement(for)
           handleIdentifier(x, expression)
           handleNoTypeArguments(-)
           handleNoArguments(-)
@@ -812,2366 +1466,1129 @@
           beginBinaryExpression(-)
           handleLiteralInt(1)
           endBinaryExpression(-)
-          handleRecoverableError(AssertAsExpression, assert, assert)
-        endAssert(assert, Assert.Expression, (, null, +)
+          handleForInitializerExpressionStatement(1, false)
+          handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], 1, 1)
+          handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got ')'., null, {token: )}], ), ))
+          handleIdentifier(, expression)
+          handleNoTypeArguments())
+          handleNoArguments())
+          handleSend(, ))
+          handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], ), ))
+          handleExpressionStatement(;)
+          handleForLoopParts(for, (, ;, 0)
+          beginForStatementBody(+)
+            handleRecoverableError(UnsupportedPrefixPlus, +, +)
+            handleIdentifier(, expression)
+            handleNoTypeArguments(+)
+            handleNoArguments(+)
+            handleSend(, +)
+            beginBinaryExpression(+)
+            handleLiteralInt(1)
+            endBinaryExpression(+)
+            handleExpressionStatement(;)
+          endForStatementBody(})
+        endForStatement(})
+      endBlockFunctionBody(3, {, })
+    endTopLevelMethod(int, null, })
+  endTopLevelDeclaration(int)
+  beginMetadataStar(int)
+  endMetadataStar(0)
+  beginTopLevelMember(int)
+    beginTopLevelMethod(}, null)
+      handleIdentifier(int, typeReference)
+      handleNoTypeArguments(if)
+      handleType(int, null)
+      handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'if'., null, {token: if}], if, if)
+      handleIdentifier(if, topLevelFunctionDeclaration)
+      handleNoTypeVariables(()
+      beginFormalParameters((, MemberKind.TopLevelMethod)
+        beginMetadataStar(int)
+        endMetadataStar(0)
+        beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+          handleIdentifier(int, typeReference)
+          handleNoTypeArguments(x)
+          handleType(int, null)
+          handleIdentifier(x, formalParameterDeclaration)
+          handleFormalParameterWithoutValue())
+        endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+      endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
+      handleAsyncModifier(null, null)
+      beginBlockFunctionBody({)
+        beginIfStatement(if)
+          handleIdentifier(x, expression)
+          handleNoTypeArguments(==)
+          handleNoArguments(==)
+          handleSend(x, ==)
+          beginBinaryExpression(==)
+          handleLiteralInt(0)
+          endBinaryExpression(==)
+          handleParenthesizedCondition(()
+          beginThenStatement(return)
+            beginReturnStatement(return)
+              handleLiteralInt(42)
+            endReturnStatement(true, return, ;)
+          endThenStatement(;)
+        endIfStatement(if, null)
+        beginReturnStatement(return)
+          handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'if'., null, {token: if}], if, if)
+          handleIdentifier(, expression)
+          handleNoTypeArguments(if)
+          handleNoArguments(if)
+          handleSend(, if)
+          handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], if, if)
+        endReturnStatement(true, return, ;)
+        beginIfStatement(if)
+          handleIdentifier(x, expression)
+          handleNoTypeArguments(-)
+          handleNoArguments(-)
+          handleSend(x, -)
+          beginBinaryExpression(-)
+          handleLiteralInt(1)
+          endBinaryExpression(-)
+          handleParenthesizedCondition(()
+          beginThenStatement(+)
+            handleRecoverableError(UnsupportedPrefixPlus, +, +)
+            handleIdentifier(, expression)
+            handleNoTypeArguments(+)
+            handleNoArguments(+)
+            handleSend(, +)
+            beginBinaryExpression(+)
+            handleLiteralInt(1)
+            endBinaryExpression(+)
+            handleExpressionStatement(;)
+          endThenStatement(;)
+        endIfStatement(if, null)
+      endBlockFunctionBody(3, {, })
+    endTopLevelMethod(int, null, })
+  endTopLevelDeclaration(int)
+  beginMetadataStar(int)
+  endMetadataStar(0)
+  beginTopLevelMember(int)
+    beginTopLevelMethod(}, null)
+      handleIdentifier(int, typeReference)
+      handleNoTypeArguments(in)
+      handleType(int, null)
+      handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'in'., null, {token: in}], in, in)
+      handleIdentifier(in, topLevelFunctionDeclaration)
+      handleNoTypeVariables(()
+      beginFormalParameters((, MemberKind.TopLevelMethod)
+        beginMetadataStar(int)
+        endMetadataStar(0)
+        beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+          handleIdentifier(int, typeReference)
+          handleNoTypeArguments(x)
+          handleType(int, null)
+          handleIdentifier(x, formalParameterDeclaration)
+          handleFormalParameterWithoutValue())
+        endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+      endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
+      handleAsyncModifier(null, null)
+      beginBlockFunctionBody({)
+        beginIfStatement(if)
+          handleIdentifier(x, expression)
+          handleNoTypeArguments(==)
+          handleNoArguments(==)
+          handleSend(x, ==)
+          beginBinaryExpression(==)
+          handleLiteralInt(0)
+          endBinaryExpression(==)
+          handleParenthesizedCondition(()
+          beginThenStatement(return)
+            beginReturnStatement(return)
+              handleLiteralInt(42)
+            endReturnStatement(true, return, ;)
+          endThenStatement(;)
+        endIfStatement(if, null)
+        beginReturnStatement(return)
+          handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'in'., null, {token: in}], in, in)
+          handleIdentifier(in, expression)
+          handleNoTypeArguments(()
+          beginArguments(()
+            handleIdentifier(x, expression)
+            handleNoTypeArguments(-)
+            handleNoArguments(-)
+            handleSend(x, -)
+            beginBinaryExpression(-)
+            handleLiteralInt(1)
+            endBinaryExpression(-)
+          endArguments(1, (, ))
+          handleSend(in, +)
+          beginBinaryExpression(+)
+          handleLiteralInt(1)
+          endBinaryExpression(+)
+        endReturnStatement(true, return, ;)
+      endBlockFunctionBody(2, {, })
+    endTopLevelMethod(int, null, })
+  endTopLevelDeclaration(int)
+  beginMetadataStar(int)
+  endMetadataStar(0)
+  beginTopLevelMember(int)
+    beginTopLevelMethod(}, null)
+      handleIdentifier(int, typeReference)
+      handleNoTypeArguments(is)
+      handleType(int, null)
+      handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'is'., null, {token: is}], is, is)
+      handleIdentifier(is, topLevelFunctionDeclaration)
+      handleNoTypeVariables(()
+      beginFormalParameters((, MemberKind.TopLevelMethod)
+        beginMetadataStar(int)
+        endMetadataStar(0)
+        beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+          handleIdentifier(int, typeReference)
+          handleNoTypeArguments(x)
+          handleType(int, null)
+          handleIdentifier(x, formalParameterDeclaration)
+          handleFormalParameterWithoutValue())
+        endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+      endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
+      handleAsyncModifier(null, null)
+      beginBlockFunctionBody({)
+        beginIfStatement(if)
+          handleIdentifier(x, expression)
+          handleNoTypeArguments(==)
+          handleNoArguments(==)
+          handleSend(x, ==)
+          beginBinaryExpression(==)
+          handleLiteralInt(0)
+          endBinaryExpression(==)
+          handleParenthesizedCondition(()
+          beginThenStatement(return)
+            beginReturnStatement(return)
+              handleLiteralInt(42)
+            endReturnStatement(true, return, ;)
+          endThenStatement(;)
+        endIfStatement(if, null)
+        beginReturnStatement(return)
+          handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'is'., null, {token: is}], is, is)
+          handleIdentifier(, expression)
+          handleNoTypeArguments(is)
+          handleNoArguments(is)
+          handleSend(, is)
+          beginIsOperatorType(is)
+            handleRecoverableError(Message[ExpectedType, Expected a type, but got '('., null, {token: (}], (, ()
+            handleIdentifier(, typeReference)
+            handleNoTypeArguments(()
+            handleType(, null)
+          endIsOperatorType(is)
+          handleIsOperator(is, null)
+          handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], (, ()
+        endReturnStatement(true, return, ;)
+        handleIdentifier(x, expression)
+        handleNoTypeArguments(-)
+        handleNoArguments(-)
+        handleSend(x, -)
+        beginBinaryExpression(-)
+        handleLiteralInt(1)
+        endBinaryExpression(-)
+        handleParenthesizedExpression(()
         beginBinaryExpression(+)
         handleLiteralInt(1)
         endBinaryExpression(+)
-      endReturnStatement(true, return, ;)
-    endBlockFunctionBody(2, {, })
-  endTopLevelMethod(assert, null, })
-endTopLevelDeclaration(int)
-beginMetadataStar(int)
-endMetadataStar(0)
-beginTopLevelMember(int)
-  handleRecoverableError(MissingConstFinalVarOrType, int, int)
-  handleNoType(})
-  handleIdentifier(int, topLevelVariableDeclaration)
-  handleNoFieldInitializer(break)
-  handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
-endTopLevelFields(null, null, null, null, 1, int, ;)
-endTopLevelDeclaration(break)
-beginMetadataStar(break)
-endMetadataStar(0)
-beginTopLevelMember(break)
-beginTopLevelMethod(;, null)
-  handleNoType(;)
-  handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'break'., null, {token: break}], break, break)
-  handleIdentifier(break, topLevelFunctionDeclaration)
-  handleNoTypeVariables(()
-  beginFormalParameters((, MemberKind.TopLevelMethod)
-    beginMetadataStar(int)
-    endMetadataStar(0)
-    beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
-      handleIdentifier(int, typeReference)
-      handleNoTypeArguments(x)
-      handleType(int, null)
-      handleIdentifier(x, formalParameterDeclaration)
-      handleFormalParameterWithoutValue())
-    endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
-  endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
-  handleAsyncModifier(null, null)
-  beginBlockFunctionBody({)
-    beginIfStatement(if)
-      handleIdentifier(x, expression)
-      handleNoTypeArguments(==)
-      handleNoArguments(==)
-      handleSend(x, ==)
-      beginBinaryExpression(==)
-      handleLiteralInt(0)
-      endBinaryExpression(==)
-      handleParenthesizedCondition(()
-      beginThenStatement(return)
-        beginReturnStatement(return)
-          handleLiteralInt(42)
-        endReturnStatement(true, return, ;)
-      endThenStatement(;)
-    endIfStatement(if, null)
-    beginReturnStatement(return)
-      handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'break'., null, {token: break}], break, break)
-      handleIdentifier(, expression)
-      handleNoTypeArguments(break)
-      handleNoArguments(break)
-      handleSend(, break)
-      handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], break, break)
-    endReturnStatement(true, return, ;)
-    handleRecoverableError(BreakOutsideOfLoop, break, break)
-    handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], break, break)
-    handleBreakStatement(false, break, ;)
-    handleIdentifier(x, expression)
-    handleNoTypeArguments(-)
-    handleNoArguments(-)
-    handleSend(x, -)
-    beginBinaryExpression(-)
-    handleLiteralInt(1)
-    endBinaryExpression(-)
-    handleParenthesizedExpression(()
-    beginBinaryExpression(+)
-    handleLiteralInt(1)
-    endBinaryExpression(+)
-    handleExpressionStatement(;)
-  endBlockFunctionBody(4, {, })
-endTopLevelMethod(break, null, })
-endTopLevelDeclaration(int)
-beginMetadataStar(int)
-endMetadataStar(0)
-beginTopLevelMember(int)
-handleRecoverableError(MissingConstFinalVarOrType, int, int)
-handleNoType(})
-handleIdentifier(int, topLevelVariableDeclaration)
-handleNoFieldInitializer(case)
-handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
-endTopLevelFields(null, null, null, null, 1, int, ;)
-endTopLevelDeclaration(case)
-beginMetadataStar(case)
-endMetadataStar(0)
-beginTopLevelMember(case)
-beginTopLevelMethod(;, null)
-handleNoType(;)
-handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'case'., null, {token: case}], case, case)
-handleIdentifier(case, topLevelFunctionDeclaration)
-handleNoTypeVariables(()
-beginFormalParameters((, MemberKind.TopLevelMethod)
+        handleExpressionStatement(;)
+      endBlockFunctionBody(3, {, })
+    endTopLevelMethod(int, null, })
+  endTopLevelDeclaration(int)
   beginMetadataStar(int)
   endMetadataStar(0)
-  beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
-    handleIdentifier(int, typeReference)
-    handleNoTypeArguments(x)
-    handleType(int, null)
-    handleIdentifier(x, formalParameterDeclaration)
-    handleFormalParameterWithoutValue())
-  endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
-endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
-handleAsyncModifier(null, null)
-beginBlockFunctionBody({)
-  beginIfStatement(if)
-    handleIdentifier(x, expression)
-    handleNoTypeArguments(==)
-    handleNoArguments(==)
-    handleSend(x, ==)
-    beginBinaryExpression(==)
-    handleLiteralInt(0)
-    endBinaryExpression(==)
-    handleParenthesizedCondition(()
-    beginThenStatement(return)
-      beginReturnStatement(return)
-        handleLiteralInt(42)
-      endReturnStatement(true, return, ;)
-    endThenStatement(;)
-  endIfStatement(if, null)
-  beginReturnStatement(return)
-    handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'case'., null, {token: case}], case, case)
-    handleIdentifier(case, expression)
-    handleNoTypeArguments(()
-    beginArguments(()
-      handleIdentifier(x, expression)
-      handleNoTypeArguments(-)
-      handleNoArguments(-)
-      handleSend(x, -)
-      beginBinaryExpression(-)
-      handleLiteralInt(1)
-      endBinaryExpression(-)
-    endArguments(1, (, ))
-    handleSend(case, +)
-    beginBinaryExpression(+)
-    handleLiteralInt(1)
-    endBinaryExpression(+)
-  endReturnStatement(true, return, ;)
-endBlockFunctionBody(2, {, })
-endTopLevelMethod(case, null, })
-endTopLevelDeclaration(int)
-beginMetadataStar(int)
-endMetadataStar(0)
-beginTopLevelMember(int)
-handleRecoverableError(MissingConstFinalVarOrType, int, int)
-handleNoType(})
-handleIdentifier(int, topLevelVariableDeclaration)
-handleNoFieldInitializer(catch)
-handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
-endTopLevelFields(null, null, null, null, 1, int, ;)
-endTopLevelDeclaration(catch)
-beginMetadataStar(catch)
-endMetadataStar(0)
-beginTopLevelMember(catch)
-beginTopLevelMethod(;, null)
-handleNoType(;)
-handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'catch'., null, {token: catch}], catch, catch)
-handleIdentifier(catch, topLevelFunctionDeclaration)
-handleNoTypeVariables(()
-beginFormalParameters((, MemberKind.TopLevelMethod)
-beginMetadataStar(int)
-endMetadataStar(0)
-beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
-  handleIdentifier(int, typeReference)
-  handleNoTypeArguments(x)
-  handleType(int, null)
-  handleIdentifier(x, formalParameterDeclaration)
-  handleFormalParameterWithoutValue())
-endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
-endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
-handleAsyncModifier(null, null)
-beginBlockFunctionBody({)
-beginIfStatement(if)
-  handleIdentifier(x, expression)
-  handleNoTypeArguments(==)
-  handleNoArguments(==)
-  handleSend(x, ==)
-  beginBinaryExpression(==)
-  handleLiteralInt(0)
-  endBinaryExpression(==)
-  handleParenthesizedCondition(()
-  beginThenStatement(return)
-    beginReturnStatement(return)
-      handleLiteralInt(42)
-    endReturnStatement(true, return, ;)
-  endThenStatement(;)
-endIfStatement(if, null)
-beginReturnStatement(return)
-  handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'catch'., null, {token: catch}], catch, catch)
-  handleIdentifier(catch, expression)
-  handleNoTypeArguments(()
-  beginArguments(()
-    handleIdentifier(x, expression)
-    handleNoTypeArguments(-)
-    handleNoArguments(-)
-    handleSend(x, -)
-    beginBinaryExpression(-)
-    handleLiteralInt(1)
-    endBinaryExpression(-)
-  endArguments(1, (, ))
-  handleSend(catch, +)
-  beginBinaryExpression(+)
-  handleLiteralInt(1)
-  endBinaryExpression(+)
-endReturnStatement(true, return, ;)
-endBlockFunctionBody(2, {, })
-endTopLevelMethod(catch, null, })
-endTopLevelDeclaration(int)
-beginMetadataStar(int)
-endMetadataStar(0)
-beginTopLevelMember(int)
-handleRecoverableError(MissingConstFinalVarOrType, int, int)
-handleNoType(})
-handleIdentifier(int, topLevelVariableDeclaration)
-handleNoFieldInitializer(class)
-handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
-endTopLevelFields(null, null, null, null, 1, int, ;)
-endTopLevelDeclaration(class)
-beginMetadataStar(class)
-endMetadataStar(0)
-beginClassOrNamedMixinApplicationPrelude(class)
-handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}], (, ()
-handleIdentifier(, classOrMixinDeclaration)
-handleNoTypeVariables(int)
-beginClassDeclaration(class, null, )
-handleNoType()
-handleClassExtends(null)
-handleClassNoWithClause()
-handleClassOrMixinImplements(null, 0)
-handleClassHeader(class, class, null)
-handleNoType()
-handleClassExtends(null)
-handleClassNoWithClause()
-handleClassOrMixinImplements(null, 0)
-handleRecoverClassHeader()
-handleRecoverableError(Message[ExpectedClassOrMixinBody, A class declaration must have a body, even if it is empty., Try adding an empty body., {string: class declaration}], int, int)
-beginClassOrMixinBody(DeclarationKind.Class, {)
-endClassOrMixinBody(DeclarationKind.Class, 0, {, })
-endClassDeclaration(class, })
-endTopLevelDeclaration(int)
-beginMetadataStar(int)
-endMetadataStar(0)
-beginTopLevelMember(int)
-handleIdentifier(int, typeReference)
-handleNoTypeArguments(x)
-handleType(int, null)
-handleIdentifier(x, topLevelVariableDeclaration)
-handleNoFieldInitializer())
-handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], x, x)
-endTopLevelFields(null, null, null, null, 1, int, ;)
-endTopLevelDeclaration())
-beginMetadataStar())
-endMetadataStar(0)
-beginTopLevelMember())
-handleRecoverableError(Message[ExpectedDeclaration, Expected a declaration, but got ')'., null, {token: )}], ), ))
-handleInvalidTopLevelDeclaration())
-endTopLevelDeclaration({)
-beginMetadataStar({)
-endMetadataStar(0)
-beginTopLevelMember({)
-handleRecoverableError(Message[ExpectedDeclaration, Expected a declaration, but got '{'., null, {token: {}], {, {)
-beginBlock({, BlockKind(invalid))
-beginIfStatement(if)
-handleIdentifier(x, expression)
-handleNoTypeArguments(==)
-handleNoArguments(==)
-handleSend(x, ==)
-beginBinaryExpression(==)
-handleLiteralInt(0)
-endBinaryExpression(==)
-handleParenthesizedCondition(()
-beginThenStatement(return)
-beginReturnStatement(return)
-handleLiteralInt(42)
-endReturnStatement(true, return, ;)
-endThenStatement(;)
-endIfStatement(if, null)
-beginReturnStatement(return)
-handleIdentifier(class, expression)
-handleNoTypeArguments(()
-beginArguments(()
-handleIdentifier(x, expression)
-handleNoTypeArguments(-)
-handleNoArguments(-)
-handleSend(x, -)
-beginBinaryExpression(-)
-handleLiteralInt(1)
-endBinaryExpression(-)
-endArguments(1, (, ))
-handleSend(class, +)
-beginBinaryExpression(+)
-handleLiteralInt(1)
-endBinaryExpression(+)
-endReturnStatement(true, return, ;)
-endBlock(2, {, }, BlockKind(invalid))
-handleInvalidTopLevelBlock({)
-handleInvalidTopLevelDeclaration(})
-endTopLevelDeclaration(int)
-beginMetadataStar(int)
-endMetadataStar(0)
-beginTopLevelMember(int)
-handleRecoverableError(MissingConstFinalVarOrType, int, int)
-handleNoType(})
-handleIdentifier(int, topLevelVariableDeclaration)
-handleNoFieldInitializer(const)
-handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
-endTopLevelFields(null, null, null, null, 1, int, ;)
-endTopLevelDeclaration(const)
-beginMetadataStar(const)
-endMetadataStar(0)
-beginTopLevelMember(const)
-handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}], (, ()
-handleRecoverableError(Message[ExtraneousModifier, Can't have modifier 'const' here., Try removing 'const'., {token: const}], const, const)
-beginTopLevelMethod(;, null)
-handleNoType(const)
-handleIdentifier(, topLevelFunctionDeclaration)
-handleNoTypeVariables(()
-beginFormalParameters((, MemberKind.TopLevelMethod)
-beginMetadataStar(int)
-endMetadataStar(0)
-beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
-handleIdentifier(int, typeReference)
-handleNoTypeArguments(x)
-handleType(int, null)
-handleIdentifier(x, formalParameterDeclaration)
-handleFormalParameterWithoutValue())
-endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
-endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
-handleAsyncModifier(null, null)
-beginBlockFunctionBody({)
-beginIfStatement(if)
-handleIdentifier(x, expression)
-handleNoTypeArguments(==)
-handleNoArguments(==)
-handleSend(x, ==)
-beginBinaryExpression(==)
-handleLiteralInt(0)
-endBinaryExpression(==)
-handleParenthesizedCondition(()
-beginThenStatement(return)
-beginReturnStatement(return)
-handleLiteralInt(42)
-endReturnStatement(true, return, ;)
-endThenStatement(;)
-endIfStatement(if, null)
-beginReturnStatement(return)
-beginConstExpression(const)
-handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}], (, ()
-handleIdentifier(, constructorReference)
-beginConstructorReference()
-handleNoTypeArguments(()
-handleNoConstructorReferenceContinuationAfterTypeArguments(()
-endConstructorReference(, null, ()
-beginArguments(()
-handleIdentifier(x, expression)
-handleNoTypeArguments(-)
-handleNoArguments(-)
-handleSend(x, -)
-beginBinaryExpression(-)
-handleLiteralInt(1)
-endBinaryExpression(-)
-endArguments(1, (, ))
-endConstExpression(const)
-beginBinaryExpression(+)
-handleLiteralInt(1)
-endBinaryExpression(+)
-endReturnStatement(true, return, ;)
-endBlockFunctionBody(2, {, })
-endTopLevelMethod(const, null, })
-endTopLevelDeclaration(int)
-beginMetadataStar(int)
-endMetadataStar(0)
-beginTopLevelMember(int)
-handleRecoverableError(MissingConstFinalVarOrType, int, int)
-handleNoType(})
-handleIdentifier(int, topLevelVariableDeclaration)
-handleNoFieldInitializer(continue)
-handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
-endTopLevelFields(null, null, null, null, 1, int, ;)
-endTopLevelDeclaration(continue)
-beginMetadataStar(continue)
-endMetadataStar(0)
-beginTopLevelMember(continue)
-beginTopLevelMethod(;, null)
-handleNoType(;)
-handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'continue'., null, {token: continue}], continue, continue)
-handleIdentifier(continue, topLevelFunctionDeclaration)
-handleNoTypeVariables(()
-beginFormalParameters((, MemberKind.TopLevelMethod)
-beginMetadataStar(int)
-endMetadataStar(0)
-beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
-handleIdentifier(int, typeReference)
-handleNoTypeArguments(x)
-handleType(int, null)
-handleIdentifier(x, formalParameterDeclaration)
-handleFormalParameterWithoutValue())
-endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
-endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
-handleAsyncModifier(null, null)
-beginBlockFunctionBody({)
-beginIfStatement(if)
-handleIdentifier(x, expression)
-handleNoTypeArguments(==)
-handleNoArguments(==)
-handleSend(x, ==)
-beginBinaryExpression(==)
-handleLiteralInt(0)
-endBinaryExpression(==)
-handleParenthesizedCondition(()
-beginThenStatement(return)
-beginReturnStatement(return)
-handleLiteralInt(42)
-endReturnStatement(true, return, ;)
-endThenStatement(;)
-endIfStatement(if, null)
-beginReturnStatement(return)
-handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'continue'., null, {token: continue}], continue, continue)
-handleIdentifier(, expression)
-handleNoTypeArguments(continue)
-handleNoArguments(continue)
-handleSend(, continue)
-handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], continue, continue)
-endReturnStatement(true, return, ;)
-handleRecoverableError(ContinueOutsideOfLoop, continue, continue)
-handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], continue, continue)
-handleContinueStatement(false, continue, ;)
-handleIdentifier(x, expression)
-handleNoTypeArguments(-)
-handleNoArguments(-)
-handleSend(x, -)
-beginBinaryExpression(-)
-handleLiteralInt(1)
-endBinaryExpression(-)
-handleParenthesizedExpression(()
-beginBinaryExpression(+)
-handleLiteralInt(1)
-endBinaryExpression(+)
-handleExpressionStatement(;)
-endBlockFunctionBody(4, {, })
-endTopLevelMethod(continue, null, })
-endTopLevelDeclaration(int)
-beginMetadataStar(int)
-endMetadataStar(0)
-beginTopLevelMember(int)
-handleRecoverableError(MissingConstFinalVarOrType, int, int)
-handleNoType(})
-handleIdentifier(int, topLevelVariableDeclaration)
-handleNoFieldInitializer(default)
-handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
-endTopLevelFields(null, null, null, null, 1, int, ;)
-endTopLevelDeclaration(default)
-beginMetadataStar(default)
-endMetadataStar(0)
-beginTopLevelMember(default)
-beginTopLevelMethod(;, null)
-handleNoType(;)
-handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'default'., null, {token: default}], default, default)
-handleIdentifier(default, topLevelFunctionDeclaration)
-handleNoTypeVariables(()
-beginFormalParameters((, MemberKind.TopLevelMethod)
-beginMetadataStar(int)
-endMetadataStar(0)
-beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
-handleIdentifier(int, typeReference)
-handleNoTypeArguments(x)
-handleType(int, null)
-handleIdentifier(x, formalParameterDeclaration)
-handleFormalParameterWithoutValue())
-endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
-endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
-handleAsyncModifier(null, null)
-beginBlockFunctionBody({)
-beginIfStatement(if)
-handleIdentifier(x, expression)
-handleNoTypeArguments(==)
-handleNoArguments(==)
-handleSend(x, ==)
-beginBinaryExpression(==)
-handleLiteralInt(0)
-endBinaryExpression(==)
-handleParenthesizedCondition(()
-beginThenStatement(return)
-beginReturnStatement(return)
-handleLiteralInt(42)
-endReturnStatement(true, return, ;)
-endThenStatement(;)
-endIfStatement(if, null)
-beginReturnStatement(return)
-handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'default'., null, {token: default}], default, default)
-handleIdentifier(default, expression)
-handleNoTypeArguments(()
-beginArguments(()
-handleIdentifier(x, expression)
-handleNoTypeArguments(-)
-handleNoArguments(-)
-handleSend(x, -)
-beginBinaryExpression(-)
-handleLiteralInt(1)
-endBinaryExpression(-)
-endArguments(1, (, ))
-handleSend(default, +)
-beginBinaryExpression(+)
-handleLiteralInt(1)
-endBinaryExpression(+)
-endReturnStatement(true, return, ;)
-endBlockFunctionBody(2, {, })
-endTopLevelMethod(default, null, })
-endTopLevelDeclaration(int)
-beginMetadataStar(int)
-endMetadataStar(0)
-beginTopLevelMember(int)
-handleRecoverableError(MissingConstFinalVarOrType, int, int)
-handleNoType(})
-handleIdentifier(int, topLevelVariableDeclaration)
-handleNoFieldInitializer(do)
-handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
-endTopLevelFields(null, null, null, null, 1, int, ;)
-endTopLevelDeclaration(do)
-beginMetadataStar(do)
-endMetadataStar(0)
-beginTopLevelMember(do)
-beginTopLevelMethod(;, null)
-handleNoType(;)
-handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'do'., null, {token: do}], do, do)
-handleIdentifier(do, topLevelFunctionDeclaration)
-handleNoTypeVariables(()
-beginFormalParameters((, MemberKind.TopLevelMethod)
-beginMetadataStar(int)
-endMetadataStar(0)
-beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
-handleIdentifier(int, typeReference)
-handleNoTypeArguments(x)
-handleType(int, null)
-handleIdentifier(x, formalParameterDeclaration)
-handleFormalParameterWithoutValue())
-endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
-endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
-handleAsyncModifier(null, null)
-beginBlockFunctionBody({)
-beginIfStatement(if)
-handleIdentifier(x, expression)
-handleNoTypeArguments(==)
-handleNoArguments(==)
-handleSend(x, ==)
-beginBinaryExpression(==)
-handleLiteralInt(0)
-endBinaryExpression(==)
-handleParenthesizedCondition(()
-beginThenStatement(return)
-beginReturnStatement(return)
-handleLiteralInt(42)
-endReturnStatement(true, return, ;)
-endThenStatement(;)
-endIfStatement(if, null)
-beginReturnStatement(return)
-handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'do'., null, {token: do}], do, do)
-handleIdentifier(, expression)
-handleNoTypeArguments(do)
-handleNoArguments(do)
-handleSend(, do)
-handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], do, do)
-endReturnStatement(true, return, ;)
-beginDoWhileStatement(do)
-beginDoWhileStatementBody(()
-handleIdentifier(x, expression)
-handleNoTypeArguments(-)
-handleNoArguments(-)
-handleSend(x, -)
-beginBinaryExpression(-)
-handleLiteralInt(1)
-endBinaryExpression(-)
-handleParenthesizedExpression(()
-beginBinaryExpression(+)
-handleLiteralInt(1)
-endBinaryExpression(+)
-handleExpressionStatement(;)
-endDoWhileStatementBody(;)
-handleRecoverableError(Message[ExpectedButGot, Expected 'while' before this., null, {string: while}], }, })
-handleRecoverableError(Message[ExpectedToken, Expected to find '('., null, {string: (}], }, })
-handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '}'., null, {token: }}], }, })
-handleIdentifier(, expression)
-handleNoTypeArguments())
-handleNoArguments())
-handleSend(, ))
-handleParenthesizedCondition(()
-handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], }, })
-endDoWhileStatement(do, while, ;)
-endBlockFunctionBody(3, {, })
-endTopLevelMethod(do, null, })
-endTopLevelDeclaration(int)
-beginMetadataStar(int)
-endMetadataStar(0)
-beginTopLevelMember(int)
-handleRecoverableError(MissingConstFinalVarOrType, int, int)
-handleNoType(})
-handleIdentifier(int, topLevelVariableDeclaration)
-handleNoFieldInitializer(else)
-handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
-endTopLevelFields(null, null, null, null, 1, int, ;)
-endTopLevelDeclaration(else)
-beginMetadataStar(else)
-endMetadataStar(0)
-beginTopLevelMember(else)
-beginTopLevelMethod(;, null)
-handleNoType(;)
-handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'else'., null, {token: else}], else, else)
-handleIdentifier(else, topLevelFunctionDeclaration)
-handleNoTypeVariables(()
-beginFormalParameters((, MemberKind.TopLevelMethod)
-beginMetadataStar(int)
-endMetadataStar(0)
-beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
-handleIdentifier(int, typeReference)
-handleNoTypeArguments(x)
-handleType(int, null)
-handleIdentifier(x, formalParameterDeclaration)
-handleFormalParameterWithoutValue())
-endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
-endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
-handleAsyncModifier(null, null)
-beginBlockFunctionBody({)
-beginIfStatement(if)
-handleIdentifier(x, expression)
-handleNoTypeArguments(==)
-handleNoArguments(==)
-handleSend(x, ==)
-beginBinaryExpression(==)
-handleLiteralInt(0)
-endBinaryExpression(==)
-handleParenthesizedCondition(()
-beginThenStatement(return)
-beginReturnStatement(return)
-handleLiteralInt(42)
-endReturnStatement(true, return, ;)
-endThenStatement(;)
-endIfStatement(if, null)
-beginReturnStatement(return)
-handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'else'., null, {token: else}], else, else)
-handleIdentifier(, expression)
-handleNoTypeArguments(else)
-handleNoArguments(else)
-handleSend(, else)
-handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], else, else)
-endReturnStatement(true, return, ;)
-handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'else'., null, {token: else}], else, else)
-handleIdentifier(, expression)
-handleNoTypeArguments(else)
-handleNoArguments(else)
-handleSend(, else)
-handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], else, else)
-handleExpressionStatement(;)
-handleRecoverableError(Message[UnexpectedToken, Unexpected token ';'., null, {token: ;}], else, else)
-handleIdentifier(x, expression)
-handleNoTypeArguments(-)
-handleNoArguments(-)
-handleSend(x, -)
-beginBinaryExpression(-)
-handleLiteralInt(1)
-endBinaryExpression(-)
-handleParenthesizedExpression(()
-beginBinaryExpression(+)
-handleLiteralInt(1)
-endBinaryExpression(+)
-handleExpressionStatement(;)
-endBlockFunctionBody(4, {, })
-endTopLevelMethod(else, null, })
-endTopLevelDeclaration(int)
-beginMetadataStar(int)
-endMetadataStar(0)
-beginTopLevelMember(int)
-handleRecoverableError(MissingConstFinalVarOrType, int, int)
-handleNoType(})
-handleIdentifier(int, topLevelVariableDeclaration)
-handleNoFieldInitializer(enum)
-handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
-endTopLevelFields(null, null, null, null, 1, int, ;)
-endTopLevelDeclaration(enum)
-beginMetadataStar(enum)
-endMetadataStar(0)
-beginEnum(enum)
-handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}], (, ()
-handleIdentifier(, enumDeclaration)
-handleRecoverableError(Message[ExpectedEnumBody, Expected a enum body, but got 'int'., An enum definition must have a body with at least one constant name., {token: int}], int, int)
-endEnum(enum, {, 0)
-endTopLevelDeclaration(int)
-beginMetadataStar(int)
-endMetadataStar(0)
-beginTopLevelMember(int)
-handleIdentifier(int, typeReference)
-handleNoTypeArguments(x)
-handleType(int, null)
-handleIdentifier(x, topLevelVariableDeclaration)
-handleNoFieldInitializer())
-handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], x, x)
-endTopLevelFields(null, null, null, null, 1, int, ;)
-endTopLevelDeclaration())
-beginMetadataStar())
-endMetadataStar(0)
-beginTopLevelMember())
-handleRecoverableError(Message[ExpectedDeclaration, Expected a declaration, but got ')'., null, {token: )}], ), ))
-handleInvalidTopLevelDeclaration())
-endTopLevelDeclaration({)
-beginMetadataStar({)
-endMetadataStar(0)
-beginTopLevelMember({)
-handleRecoverableError(Message[ExpectedDeclaration, Expected a declaration, but got '{'., null, {token: {}], {, {)
-beginBlock({, BlockKind(invalid))
-beginIfStatement(if)
-handleIdentifier(x, expression)
-handleNoTypeArguments(==)
-handleNoArguments(==)
-handleSend(x, ==)
-beginBinaryExpression(==)
-handleLiteralInt(0)
-endBinaryExpression(==)
-handleParenthesizedCondition(()
-beginThenStatement(return)
-beginReturnStatement(return)
-handleLiteralInt(42)
-endReturnStatement(true, return, ;)
-endThenStatement(;)
-endIfStatement(if, null)
-beginReturnStatement(return)
-handleIdentifier(enum, expression)
-handleNoTypeArguments(()
-beginArguments(()
-handleIdentifier(x, expression)
-handleNoTypeArguments(-)
-handleNoArguments(-)
-handleSend(x, -)
-beginBinaryExpression(-)
-handleLiteralInt(1)
-endBinaryExpression(-)
-endArguments(1, (, ))
-handleSend(enum, +)
-beginBinaryExpression(+)
-handleLiteralInt(1)
-endBinaryExpression(+)
-endReturnStatement(true, return, ;)
-endBlock(2, {, }, BlockKind(invalid))
-handleInvalidTopLevelBlock({)
-handleInvalidTopLevelDeclaration(})
-endTopLevelDeclaration(int)
-beginMetadataStar(int)
-endMetadataStar(0)
-beginTopLevelMember(int)
-handleRecoverableError(MissingConstFinalVarOrType, int, int)
-handleNoType(})
-handleIdentifier(int, topLevelVariableDeclaration)
-handleNoFieldInitializer(extends)
-handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
-endTopLevelFields(null, null, null, null, 1, int, ;)
-endTopLevelDeclaration(extends)
-beginMetadataStar(extends)
-endMetadataStar(0)
-beginTopLevelMember(extends)
-beginTopLevelMethod(;, null)
-handleNoType(;)
-handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'extends'., null, {token: extends}], extends, extends)
-handleIdentifier(extends, topLevelFunctionDeclaration)
-handleNoTypeVariables(()
-beginFormalParameters((, MemberKind.TopLevelMethod)
-beginMetadataStar(int)
-endMetadataStar(0)
-beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
-handleIdentifier(int, typeReference)
-handleNoTypeArguments(x)
-handleType(int, null)
-handleIdentifier(x, formalParameterDeclaration)
-handleFormalParameterWithoutValue())
-endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
-endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
-handleAsyncModifier(null, null)
-beginBlockFunctionBody({)
-beginIfStatement(if)
-handleIdentifier(x, expression)
-handleNoTypeArguments(==)
-handleNoArguments(==)
-handleSend(x, ==)
-beginBinaryExpression(==)
-handleLiteralInt(0)
-endBinaryExpression(==)
-handleParenthesizedCondition(()
-beginThenStatement(return)
-beginReturnStatement(return)
-handleLiteralInt(42)
-endReturnStatement(true, return, ;)
-endThenStatement(;)
-endIfStatement(if, null)
-beginReturnStatement(return)
-handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'extends'., null, {token: extends}], extends, extends)
-handleIdentifier(extends, expression)
-handleNoTypeArguments(()
-beginArguments(()
-handleIdentifier(x, expression)
-handleNoTypeArguments(-)
-handleNoArguments(-)
-handleSend(x, -)
-beginBinaryExpression(-)
-handleLiteralInt(1)
-endBinaryExpression(-)
-endArguments(1, (, ))
-handleSend(extends, +)
-beginBinaryExpression(+)
-handleLiteralInt(1)
-endBinaryExpression(+)
-endReturnStatement(true, return, ;)
-endBlockFunctionBody(2, {, })
-endTopLevelMethod(extends, null, })
-endTopLevelDeclaration(int)
-beginMetadataStar(int)
-endMetadataStar(0)
-beginTopLevelMember(int)
-handleRecoverableError(MissingConstFinalVarOrType, int, int)
-handleNoType(})
-handleIdentifier(int, topLevelVariableDeclaration)
-handleNoFieldInitializer(false)
-handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
-endTopLevelFields(null, null, null, null, 1, int, ;)
-endTopLevelDeclaration(false)
-beginMetadataStar(false)
-endMetadataStar(0)
-beginTopLevelMember(false)
-beginTopLevelMethod(;, null)
-handleNoType(;)
-handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'false'., null, {token: false}], false, false)
-handleIdentifier(false, topLevelFunctionDeclaration)
-handleNoTypeVariables(()
-beginFormalParameters((, MemberKind.TopLevelMethod)
-beginMetadataStar(int)
-endMetadataStar(0)
-beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
-handleIdentifier(int, typeReference)
-handleNoTypeArguments(x)
-handleType(int, null)
-handleIdentifier(x, formalParameterDeclaration)
-handleFormalParameterWithoutValue())
-endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
-endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
-handleAsyncModifier(null, null)
-beginBlockFunctionBody({)
-beginIfStatement(if)
-handleIdentifier(x, expression)
-handleNoTypeArguments(==)
-handleNoArguments(==)
-handleSend(x, ==)
-beginBinaryExpression(==)
-handleLiteralInt(0)
-endBinaryExpression(==)
-handleParenthesizedCondition(()
-beginThenStatement(return)
-beginReturnStatement(return)
-handleLiteralInt(42)
-endReturnStatement(true, return, ;)
-endThenStatement(;)
-endIfStatement(if, null)
-beginReturnStatement(return)
-handleLiteralBool(false)
-handleNoTypeArguments(()
-beginArguments(()
-handleIdentifier(x, expression)
-handleNoTypeArguments(-)
-handleNoArguments(-)
-handleSend(x, -)
-beginBinaryExpression(-)
-handleLiteralInt(1)
-endBinaryExpression(-)
-endArguments(1, (, ))
-handleSend((, ))
-beginBinaryExpression(+)
-handleLiteralInt(1)
-endBinaryExpression(+)
-endReturnStatement(true, return, ;)
-endBlockFunctionBody(2, {, })
-endTopLevelMethod(false, null, })
-endTopLevelDeclaration(int)
-beginMetadataStar(int)
-endMetadataStar(0)
-beginTopLevelMember(int)
-handleRecoverableError(MissingConstFinalVarOrType, int, int)
-handleNoType(})
-handleIdentifier(int, topLevelVariableDeclaration)
-handleNoFieldInitializer(final)
-handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
-endTopLevelFields(null, null, null, null, 1, int, ;)
-endTopLevelDeclaration(final)
-beginMetadataStar(final)
-endMetadataStar(0)
-beginTopLevelMember(final)
-handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}], (, ()
-handleRecoverableError(Message[ExtraneousModifier, Can't have modifier 'final' here., Try removing 'final'., {token: final}], final, final)
-beginTopLevelMethod(;, null)
-handleNoType(final)
-handleIdentifier(, topLevelFunctionDeclaration)
-handleNoTypeVariables(()
-beginFormalParameters((, MemberKind.TopLevelMethod)
-beginMetadataStar(int)
-endMetadataStar(0)
-beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
-handleIdentifier(int, typeReference)
-handleNoTypeArguments(x)
-handleType(int, null)
-handleIdentifier(x, formalParameterDeclaration)
-handleFormalParameterWithoutValue())
-endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
-endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
-handleAsyncModifier(null, null)
-beginBlockFunctionBody({)
-beginIfStatement(if)
-handleIdentifier(x, expression)
-handleNoTypeArguments(==)
-handleNoArguments(==)
-handleSend(x, ==)
-beginBinaryExpression(==)
-handleLiteralInt(0)
-endBinaryExpression(==)
-handleParenthesizedCondition(()
-beginThenStatement(return)
-beginReturnStatement(return)
-handleLiteralInt(42)
-endReturnStatement(true, return, ;)
-endThenStatement(;)
-endIfStatement(if, null)
-beginReturnStatement(return)
-handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'final'., null, {token: final}], final, final)
-handleIdentifier(, expression)
-handleNoTypeArguments(final)
-handleNoArguments(final)
-handleSend(, final)
-handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], final, final)
-endReturnStatement(true, return, ;)
-beginMetadataStar(final)
-endMetadataStar(0)
-handleNoType(final)
-beginVariablesDeclaration((, null, final)
-handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}], (, ()
-handleIdentifier(, localVariableDeclaration)
-beginInitializedIdentifier()
-handleNoVariableInitializer(x)
-endInitializedIdentifier()
-handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], x, x)
-endVariablesDeclaration(1, ;)
-handleIdentifier(x, expression)
-handleNoTypeArguments(-)
-handleNoArguments(-)
-handleSend(x, -)
-beginBinaryExpression(-)
-handleLiteralInt(1)
-endBinaryExpression(-)
-handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], 1, 1)
-handleExpressionStatement(;)
-handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got ')'., null, {token: )}], ), ))
-handleIdentifier(, expression)
-handleNoTypeArguments())
-handleNoArguments())
-handleSend(, ))
-handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], ), ))
-handleExpressionStatement(;)
-handleRecoverableError(Message[UnexpectedToken, Unexpected token ';'., null, {token: ;}], ), ))
-handleRecoverableError(UnsupportedPrefixPlus, +, +)
-handleIdentifier(, expression)
-handleNoTypeArguments(+)
-handleNoArguments(+)
-handleSend(, +)
-beginBinaryExpression(+)
-handleLiteralInt(1)
-endBinaryExpression(+)
-handleExpressionStatement(;)
-endBlockFunctionBody(6, {, })
-endTopLevelMethod(final, null, })
-endTopLevelDeclaration(int)
-beginMetadataStar(int)
-endMetadataStar(0)
-beginTopLevelMember(int)
-handleRecoverableError(MissingConstFinalVarOrType, int, int)
-handleNoType(})
-handleIdentifier(int, topLevelVariableDeclaration)
-handleNoFieldInitializer(finally)
-handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
-endTopLevelFields(null, null, null, null, 1, int, ;)
-endTopLevelDeclaration(finally)
-beginMetadataStar(finally)
-endMetadataStar(0)
-beginTopLevelMember(finally)
-beginTopLevelMethod(;, null)
-handleNoType(;)
-handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'finally'., null, {token: finally}], finally, finally)
-handleIdentifier(finally, topLevelFunctionDeclaration)
-handleNoTypeVariables(()
-beginFormalParameters((, MemberKind.TopLevelMethod)
-beginMetadataStar(int)
-endMetadataStar(0)
-beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
-handleIdentifier(int, typeReference)
-handleNoTypeArguments(x)
-handleType(int, null)
-handleIdentifier(x, formalParameterDeclaration)
-handleFormalParameterWithoutValue())
-endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
-endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
-handleAsyncModifier(null, null)
-beginBlockFunctionBody({)
-beginIfStatement(if)
-handleIdentifier(x, expression)
-handleNoTypeArguments(==)
-handleNoArguments(==)
-handleSend(x, ==)
-beginBinaryExpression(==)
-handleLiteralInt(0)
-endBinaryExpression(==)
-handleParenthesizedCondition(()
-beginThenStatement(return)
-beginReturnStatement(return)
-handleLiteralInt(42)
-endReturnStatement(true, return, ;)
-endThenStatement(;)
-endIfStatement(if, null)
-beginReturnStatement(return)
-handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'finally'., null, {token: finally}], finally, finally)
-handleIdentifier(finally, expression)
-handleNoTypeArguments(()
-beginArguments(()
-handleIdentifier(x, expression)
-handleNoTypeArguments(-)
-handleNoArguments(-)
-handleSend(x, -)
-beginBinaryExpression(-)
-handleLiteralInt(1)
-endBinaryExpression(-)
-endArguments(1, (, ))
-handleSend(finally, +)
-beginBinaryExpression(+)
-handleLiteralInt(1)
-endBinaryExpression(+)
-endReturnStatement(true, return, ;)
-endBlockFunctionBody(2, {, })
-endTopLevelMethod(finally, null, })
-endTopLevelDeclaration(int)
-beginMetadataStar(int)
-endMetadataStar(0)
-beginTopLevelMember(int)
-handleRecoverableError(MissingConstFinalVarOrType, int, int)
-handleNoType(})
-handleIdentifier(int, topLevelVariableDeclaration)
-handleNoFieldInitializer(for)
-handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
-endTopLevelFields(null, null, null, null, 1, int, ;)
-endTopLevelDeclaration(for)
-beginMetadataStar(for)
-endMetadataStar(0)
-beginTopLevelMember(for)
-beginTopLevelMethod(;, null)
-handleNoType(;)
-handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'for'., null, {token: for}], for, for)
-handleIdentifier(for, topLevelFunctionDeclaration)
-handleNoTypeVariables(()
-beginFormalParameters((, MemberKind.TopLevelMethod)
-beginMetadataStar(int)
-endMetadataStar(0)
-beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
-handleIdentifier(int, typeReference)
-handleNoTypeArguments(x)
-handleType(int, null)
-handleIdentifier(x, formalParameterDeclaration)
-handleFormalParameterWithoutValue())
-endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
-endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
-handleAsyncModifier(null, null)
-beginBlockFunctionBody({)
-beginIfStatement(if)
-handleIdentifier(x, expression)
-handleNoTypeArguments(==)
-handleNoArguments(==)
-handleSend(x, ==)
-beginBinaryExpression(==)
-handleLiteralInt(0)
-endBinaryExpression(==)
-handleParenthesizedCondition(()
-beginThenStatement(return)
-beginReturnStatement(return)
-handleLiteralInt(42)
-endReturnStatement(true, return, ;)
-endThenStatement(;)
-endIfStatement(if, null)
-beginReturnStatement(return)
-handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'for'., null, {token: for}], for, for)
-handleIdentifier(, expression)
-handleNoTypeArguments(for)
-handleNoArguments(for)
-handleSend(, for)
-handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], for, for)
-endReturnStatement(true, return, ;)
-beginForStatement(for)
-handleIdentifier(x, expression)
-handleNoTypeArguments(-)
-handleNoArguments(-)
-handleSend(x, -)
-beginBinaryExpression(-)
-handleLiteralInt(1)
-endBinaryExpression(-)
-handleForInitializerExpressionStatement(1, false)
-handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], 1, 1)
-handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got ')'., null, {token: )}], ), ))
-handleIdentifier(, expression)
-handleNoTypeArguments())
-handleNoArguments())
-handleSend(, ))
-handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], ), ))
-handleExpressionStatement(;)
-handleForLoopParts(for, (, ;, 0)
-beginForStatementBody(+)
-handleRecoverableError(UnsupportedPrefixPlus, +, +)
-handleIdentifier(, expression)
-handleNoTypeArguments(+)
-handleNoArguments(+)
-handleSend(, +)
-beginBinaryExpression(+)
-handleLiteralInt(1)
-endBinaryExpression(+)
-handleExpressionStatement(;)
-endForStatementBody(})
-endForStatement(})
-endBlockFunctionBody(3, {, })
-endTopLevelMethod(for, null, })
-endTopLevelDeclaration(int)
-beginMetadataStar(int)
-endMetadataStar(0)
-beginTopLevelMember(int)
-handleRecoverableError(MissingConstFinalVarOrType, int, int)
-handleNoType(})
-handleIdentifier(int, topLevelVariableDeclaration)
-handleNoFieldInitializer(if)
-handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
-endTopLevelFields(null, null, null, null, 1, int, ;)
-endTopLevelDeclaration(if)
-beginMetadataStar(if)
-endMetadataStar(0)
-beginTopLevelMember(if)
-beginTopLevelMethod(;, null)
-handleNoType(;)
-handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'if'., null, {token: if}], if, if)
-handleIdentifier(if, topLevelFunctionDeclaration)
-handleNoTypeVariables(()
-beginFormalParameters((, MemberKind.TopLevelMethod)
-beginMetadataStar(int)
-endMetadataStar(0)
-beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
-handleIdentifier(int, typeReference)
-handleNoTypeArguments(x)
-handleType(int, null)
-handleIdentifier(x, formalParameterDeclaration)
-handleFormalParameterWithoutValue())
-endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
-endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
-handleAsyncModifier(null, null)
-beginBlockFunctionBody({)
-beginIfStatement(if)
-handleIdentifier(x, expression)
-handleNoTypeArguments(==)
-handleNoArguments(==)
-handleSend(x, ==)
-beginBinaryExpression(==)
-handleLiteralInt(0)
-endBinaryExpression(==)
-handleParenthesizedCondition(()
-beginThenStatement(return)
-beginReturnStatement(return)
-handleLiteralInt(42)
-endReturnStatement(true, return, ;)
-endThenStatement(;)
-endIfStatement(if, null)
-beginReturnStatement(return)
-handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'if'., null, {token: if}], if, if)
-handleIdentifier(, expression)
-handleNoTypeArguments(if)
-handleNoArguments(if)
-handleSend(, if)
-handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], if, if)
-endReturnStatement(true, return, ;)
-beginIfStatement(if)
-handleIdentifier(x, expression)
-handleNoTypeArguments(-)
-handleNoArguments(-)
-handleSend(x, -)
-beginBinaryExpression(-)
-handleLiteralInt(1)
-endBinaryExpression(-)
-handleParenthesizedCondition(()
-beginThenStatement(+)
-handleRecoverableError(UnsupportedPrefixPlus, +, +)
-handleIdentifier(, expression)
-handleNoTypeArguments(+)
-handleNoArguments(+)
-handleSend(, +)
-beginBinaryExpression(+)
-handleLiteralInt(1)
-endBinaryExpression(+)
-handleExpressionStatement(;)
-endThenStatement(;)
-endIfStatement(if, null)
-endBlockFunctionBody(3, {, })
-endTopLevelMethod(if, null, })
-endTopLevelDeclaration(int)
-beginMetadataStar(int)
-endMetadataStar(0)
-beginTopLevelMember(int)
-handleRecoverableError(MissingConstFinalVarOrType, int, int)
-handleNoType(})
-handleIdentifier(int, topLevelVariableDeclaration)
-handleNoFieldInitializer(in)
-handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
-endTopLevelFields(null, null, null, null, 1, int, ;)
-endTopLevelDeclaration(in)
-beginMetadataStar(in)
-endMetadataStar(0)
-beginTopLevelMember(in)
-beginTopLevelMethod(;, null)
-handleNoType(;)
-handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'in'., null, {token: in}], in, in)
-handleIdentifier(in, topLevelFunctionDeclaration)
-handleNoTypeVariables(()
-beginFormalParameters((, MemberKind.TopLevelMethod)
-beginMetadataStar(int)
-endMetadataStar(0)
-beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
-handleIdentifier(int, typeReference)
-handleNoTypeArguments(x)
-handleType(int, null)
-handleIdentifier(x, formalParameterDeclaration)
-handleFormalParameterWithoutValue())
-endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
-endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
-handleAsyncModifier(null, null)
-beginBlockFunctionBody({)
-beginIfStatement(if)
-handleIdentifier(x, expression)
-handleNoTypeArguments(==)
-handleNoArguments(==)
-handleSend(x, ==)
-beginBinaryExpression(==)
-handleLiteralInt(0)
-endBinaryExpression(==)
-handleParenthesizedCondition(()
-beginThenStatement(return)
-beginReturnStatement(return)
-handleLiteralInt(42)
-endReturnStatement(true, return, ;)
-endThenStatement(;)
-endIfStatement(if, null)
-beginReturnStatement(return)
-handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'in'., null, {token: in}], in, in)
-handleIdentifier(in, expression)
-handleNoTypeArguments(()
-beginArguments(()
-handleIdentifier(x, expression)
-handleNoTypeArguments(-)
-handleNoArguments(-)
-handleSend(x, -)
-beginBinaryExpression(-)
-handleLiteralInt(1)
-endBinaryExpression(-)
-endArguments(1, (, ))
-handleSend(in, +)
-beginBinaryExpression(+)
-handleLiteralInt(1)
-endBinaryExpression(+)
-endReturnStatement(true, return, ;)
-endBlockFunctionBody(2, {, })
-endTopLevelMethod(in, null, })
-endTopLevelDeclaration(int)
-beginMetadataStar(int)
-endMetadataStar(0)
-beginTopLevelMember(int)
-handleRecoverableError(MissingConstFinalVarOrType, int, int)
-handleNoType(})
-handleIdentifier(int, topLevelVariableDeclaration)
-handleNoFieldInitializer(is)
-handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
-endTopLevelFields(null, null, null, null, 1, int, ;)
-endTopLevelDeclaration(is)
-beginMetadataStar(is)
-endMetadataStar(0)
-beginTopLevelMember(is)
-beginTopLevelMethod(;, null)
-handleNoType(;)
-handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'is'., null, {token: is}], is, is)
-handleIdentifier(is, topLevelFunctionDeclaration)
-handleNoTypeVariables(()
-beginFormalParameters((, MemberKind.TopLevelMethod)
-beginMetadataStar(int)
-endMetadataStar(0)
-beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
-handleIdentifier(int, typeReference)
-handleNoTypeArguments(x)
-handleType(int, null)
-handleIdentifier(x, formalParameterDeclaration)
-handleFormalParameterWithoutValue())
-endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
-endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
-handleAsyncModifier(null, null)
-beginBlockFunctionBody({)
-beginIfStatement(if)
-handleIdentifier(x, expression)
-handleNoTypeArguments(==)
-handleNoArguments(==)
-handleSend(x, ==)
-beginBinaryExpression(==)
-handleLiteralInt(0)
-endBinaryExpression(==)
-handleParenthesizedCondition(()
-beginThenStatement(return)
-beginReturnStatement(return)
-handleLiteralInt(42)
-endReturnStatement(true, return, ;)
-endThenStatement(;)
-endIfStatement(if, null)
-beginReturnStatement(return)
-handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'is'., null, {token: is}], is, is)
-handleIdentifier(, expression)
-handleNoTypeArguments(is)
-handleNoArguments(is)
-handleSend(, is)
-beginIsOperatorType(is)
-handleRecoverableError(Message[ExpectedType, Expected a type, but got '('., null, {token: (}], (, ()
-handleIdentifier(, typeReference)
-handleNoTypeArguments(()
-handleType(, null)
-endIsOperatorType(is)
-handleIsOperator(is, null)
-handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], (, ()
-endReturnStatement(true, return, ;)
-handleIdentifier(x, expression)
-handleNoTypeArguments(-)
-handleNoArguments(-)
-handleSend(x, -)
-beginBinaryExpression(-)
-handleLiteralInt(1)
-endBinaryExpression(-)
-handleParenthesizedExpression(()
-beginBinaryExpression(+)
-handleLiteralInt(1)
-endBinaryExpression(+)
-handleExpressionStatement(;)
-endBlockFunctionBody(3, {, })
-endTopLevelMethod(is, null, })
-endTopLevelDeclaration(int)
-beginMetadataStar(int)
-endMetadataStar(0)
-beginTopLevelMember(int)
-handleRecoverableError(MissingConstFinalVarOrType, int, int)
-handleNoType(})
-handleIdentifier(int, topLevelVariableDeclaration)
-handleNoFieldInitializer(new)
-handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
-endTopLevelFields(null, null, null, null, 1, int, ;)
-endTopLevelDeclaration(new)
-beginMetadataStar(new)
-endMetadataStar(0)
-beginTopLevelMember(new)
-beginTopLevelMethod(;, null)
-handleNoType(;)
-handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'new'., null, {token: new}], new, new)
-handleIdentifier(new, topLevelFunctionDeclaration)
-handleNoTypeVariables(()
-beginFormalParameters((, MemberKind.TopLevelMethod)
-beginMetadataStar(int)
-endMetadataStar(0)
-beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
-handleIdentifier(int, typeReference)
-handleNoTypeArguments(x)
-handleType(int, null)
-handleIdentifier(x, formalParameterDeclaration)
-handleFormalParameterWithoutValue())
-endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
-endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
-handleAsyncModifier(null, null)
-beginBlockFunctionBody({)
-beginIfStatement(if)
-handleIdentifier(x, expression)
-handleNoTypeArguments(==)
-handleNoArguments(==)
-handleSend(x, ==)
-beginBinaryExpression(==)
-handleLiteralInt(0)
-endBinaryExpression(==)
-handleParenthesizedCondition(()
-beginThenStatement(return)
-beginReturnStatement(return)
-handleLiteralInt(42)
-endReturnStatement(true, return, ;)
-endThenStatement(;)
-endIfStatement(if, null)
-beginReturnStatement(return)
-beginNewExpression(new)
-handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}], (, ()
-handleIdentifier(, constructorReference)
-beginConstructorReference()
-handleNoTypeArguments(()
-handleNoConstructorReferenceContinuationAfterTypeArguments(()
-endConstructorReference(, null, ()
-beginArguments(()
-handleIdentifier(x, expression)
-handleNoTypeArguments(-)
-handleNoArguments(-)
-handleSend(x, -)
-beginBinaryExpression(-)
-handleLiteralInt(1)
-endBinaryExpression(-)
-endArguments(1, (, ))
-endNewExpression(new)
-beginBinaryExpression(+)
-handleLiteralInt(1)
-endBinaryExpression(+)
-endReturnStatement(true, return, ;)
-endBlockFunctionBody(2, {, })
-endTopLevelMethod(new, null, })
-endTopLevelDeclaration(int)
-beginMetadataStar(int)
-endMetadataStar(0)
-beginTopLevelMember(int)
-handleRecoverableError(MissingConstFinalVarOrType, int, int)
-handleNoType(})
-handleIdentifier(int, topLevelVariableDeclaration)
-handleNoFieldInitializer(null)
-handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
-endTopLevelFields(null, null, null, null, 1, int, ;)
-endTopLevelDeclaration(null)
-beginMetadataStar(null)
-endMetadataStar(0)
-beginTopLevelMember(null)
-beginTopLevelMethod(;, null)
-handleNoType(;)
-handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'null'., null, {token: null}], null, null)
-handleIdentifier(null, topLevelFunctionDeclaration)
-handleNoTypeVariables(()
-beginFormalParameters((, MemberKind.TopLevelMethod)
-beginMetadataStar(int)
-endMetadataStar(0)
-beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
-handleIdentifier(int, typeReference)
-handleNoTypeArguments(x)
-handleType(int, null)
-handleIdentifier(x, formalParameterDeclaration)
-handleFormalParameterWithoutValue())
-endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
-endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
-handleAsyncModifier(null, null)
-beginBlockFunctionBody({)
-beginIfStatement(if)
-handleIdentifier(x, expression)
-handleNoTypeArguments(==)
-handleNoArguments(==)
-handleSend(x, ==)
-beginBinaryExpression(==)
-handleLiteralInt(0)
-endBinaryExpression(==)
-handleParenthesizedCondition(()
-beginThenStatement(return)
-beginReturnStatement(return)
-handleLiteralInt(42)
-endReturnStatement(true, return, ;)
-endThenStatement(;)
-endIfStatement(if, null)
-beginReturnStatement(return)
-handleLiteralNull(null)
-handleNoTypeArguments(()
-beginArguments(()
-handleIdentifier(x, expression)
-handleNoTypeArguments(-)
-handleNoArguments(-)
-handleSend(x, -)
-beginBinaryExpression(-)
-handleLiteralInt(1)
-endBinaryExpression(-)
-endArguments(1, (, ))
-handleSend((, ))
-beginBinaryExpression(+)
-handleLiteralInt(1)
-endBinaryExpression(+)
-endReturnStatement(true, return, ;)
-endBlockFunctionBody(2, {, })
-endTopLevelMethod(null, null, })
-endTopLevelDeclaration(int)
-beginMetadataStar(int)
-endMetadataStar(0)
-beginTopLevelMember(int)
-handleRecoverableError(MissingConstFinalVarOrType, int, int)
-handleNoType(})
-handleIdentifier(int, topLevelVariableDeclaration)
-handleNoFieldInitializer(rethrow)
-handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
-endTopLevelFields(null, null, null, null, 1, int, ;)
-endTopLevelDeclaration(rethrow)
-beginMetadataStar(rethrow)
-endMetadataStar(0)
-beginTopLevelMember(rethrow)
-beginTopLevelMethod(;, null)
-handleNoType(;)
-handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'rethrow'., null, {token: rethrow}], rethrow, rethrow)
-handleIdentifier(rethrow, topLevelFunctionDeclaration)
-handleNoTypeVariables(()
-beginFormalParameters((, MemberKind.TopLevelMethod)
-beginMetadataStar(int)
-endMetadataStar(0)
-beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
-handleIdentifier(int, typeReference)
-handleNoTypeArguments(x)
-handleType(int, null)
-handleIdentifier(x, formalParameterDeclaration)
-handleFormalParameterWithoutValue())
-endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
-endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
-handleAsyncModifier(null, null)
-beginBlockFunctionBody({)
-beginIfStatement(if)
-handleIdentifier(x, expression)
-handleNoTypeArguments(==)
-handleNoArguments(==)
-handleSend(x, ==)
-beginBinaryExpression(==)
-handleLiteralInt(0)
-endBinaryExpression(==)
-handleParenthesizedCondition(()
-beginThenStatement(return)
-beginReturnStatement(return)
-handleLiteralInt(42)
-endReturnStatement(true, return, ;)
-endThenStatement(;)
-endIfStatement(if, null)
-beginReturnStatement(return)
-handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'rethrow'., null, {token: rethrow}], rethrow, rethrow)
-handleIdentifier(rethrow, expression)
-handleNoTypeArguments(()
-beginArguments(()
-handleIdentifier(x, expression)
-handleNoTypeArguments(-)
-handleNoArguments(-)
-handleSend(x, -)
-beginBinaryExpression(-)
-handleLiteralInt(1)
-endBinaryExpression(-)
-endArguments(1, (, ))
-handleSend(rethrow, +)
-beginBinaryExpression(+)
-handleLiteralInt(1)
-endBinaryExpression(+)
-endReturnStatement(true, return, ;)
-endBlockFunctionBody(2, {, })
-endTopLevelMethod(rethrow, null, })
-endTopLevelDeclaration(int)
-beginMetadataStar(int)
-endMetadataStar(0)
-beginTopLevelMember(int)
-handleRecoverableError(MissingConstFinalVarOrType, int, int)
-handleNoType(})
-handleIdentifier(int, topLevelVariableDeclaration)
-handleNoFieldInitializer(return)
-handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
-endTopLevelFields(null, null, null, null, 1, int, ;)
-endTopLevelDeclaration(return)
-beginMetadataStar(return)
-endMetadataStar(0)
-beginTopLevelMember(return)
-beginTopLevelMethod(;, null)
-handleNoType(;)
-handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'return'., null, {token: return}], return, return)
-handleIdentifier(return, topLevelFunctionDeclaration)
-handleNoTypeVariables(()
-beginFormalParameters((, MemberKind.TopLevelMethod)
-beginMetadataStar(int)
-endMetadataStar(0)
-beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
-handleIdentifier(int, typeReference)
-handleNoTypeArguments(x)
-handleType(int, null)
-handleIdentifier(x, formalParameterDeclaration)
-handleFormalParameterWithoutValue())
-endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
-endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
-handleAsyncModifier(null, null)
-beginBlockFunctionBody({)
-beginIfStatement(if)
-handleIdentifier(x, expression)
-handleNoTypeArguments(==)
-handleNoArguments(==)
-handleSend(x, ==)
-beginBinaryExpression(==)
-handleLiteralInt(0)
-endBinaryExpression(==)
-handleParenthesizedCondition(()
-beginThenStatement(return)
-beginReturnStatement(return)
-handleLiteralInt(42)
-endReturnStatement(true, return, ;)
-endThenStatement(;)
-endIfStatement(if, null)
-beginReturnStatement(return)
-handleRecoverableError(Message[UnexpectedToken, Unexpected token 'return'., null, {token: return}], return, return)
-handleIdentifier(x, expression)
-handleNoTypeArguments(-)
-handleNoArguments(-)
-handleSend(x, -)
-beginBinaryExpression(-)
-handleLiteralInt(1)
-endBinaryExpression(-)
-handleParenthesizedExpression(()
-beginBinaryExpression(+)
-handleLiteralInt(1)
-endBinaryExpression(+)
-endReturnStatement(true, return, ;)
-endBlockFunctionBody(2, {, })
-endTopLevelMethod(return, null, })
-endTopLevelDeclaration(int)
-beginMetadataStar(int)
-endMetadataStar(0)
-beginTopLevelMember(int)
-handleRecoverableError(MissingConstFinalVarOrType, int, int)
-handleNoType(})
-handleIdentifier(int, topLevelVariableDeclaration)
-handleNoFieldInitializer(super)
-handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
-endTopLevelFields(null, null, null, null, 1, int, ;)
-endTopLevelDeclaration(super)
-beginMetadataStar(super)
-endMetadataStar(0)
-beginTopLevelMember(super)
-beginTopLevelMethod(;, null)
-handleNoType(;)
-handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'super'., null, {token: super}], super, super)
-handleIdentifier(super, topLevelFunctionDeclaration)
-handleNoTypeVariables(()
-beginFormalParameters((, MemberKind.TopLevelMethod)
-beginMetadataStar(int)
-endMetadataStar(0)
-beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
-handleIdentifier(int, typeReference)
-handleNoTypeArguments(x)
-handleType(int, null)
-handleIdentifier(x, formalParameterDeclaration)
-handleFormalParameterWithoutValue())
-endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
-endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
-handleAsyncModifier(null, null)
-beginBlockFunctionBody({)
-beginIfStatement(if)
-handleIdentifier(x, expression)
-handleNoTypeArguments(==)
-handleNoArguments(==)
-handleSend(x, ==)
-beginBinaryExpression(==)
-handleLiteralInt(0)
-endBinaryExpression(==)
-handleParenthesizedCondition(()
-beginThenStatement(return)
-beginReturnStatement(return)
-handleLiteralInt(42)
-endReturnStatement(true, return, ;)
-endThenStatement(;)
-endIfStatement(if, null)
-beginReturnStatement(return)
-handleSuperExpression(super, expression)
-handleNoTypeArguments(()
-beginArguments(()
-handleIdentifier(x, expression)
-handleNoTypeArguments(-)
-handleNoArguments(-)
-handleSend(x, -)
-beginBinaryExpression(-)
-handleLiteralInt(1)
-endBinaryExpression(-)
-endArguments(1, (, ))
-handleSend(super, +)
-beginBinaryExpression(+)
-handleLiteralInt(1)
-endBinaryExpression(+)
-endReturnStatement(true, return, ;)
-endBlockFunctionBody(2, {, })
-endTopLevelMethod(super, null, })
-endTopLevelDeclaration(int)
-beginMetadataStar(int)
-endMetadataStar(0)
-beginTopLevelMember(int)
-handleRecoverableError(MissingConstFinalVarOrType, int, int)
-handleNoType(})
-handleIdentifier(int, topLevelVariableDeclaration)
-handleNoFieldInitializer(switch)
-handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
-endTopLevelFields(null, null, null, null, 1, int, ;)
-endTopLevelDeclaration(switch)
-beginMetadataStar(switch)
-endMetadataStar(0)
-beginTopLevelMember(switch)
-beginTopLevelMethod(;, null)
-handleNoType(;)
-handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'switch'., null, {token: switch}], switch, switch)
-handleIdentifier(switch, topLevelFunctionDeclaration)
-handleNoTypeVariables(()
-beginFormalParameters((, MemberKind.TopLevelMethod)
-beginMetadataStar(int)
-endMetadataStar(0)
-beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
-handleIdentifier(int, typeReference)
-handleNoTypeArguments(x)
-handleType(int, null)
-handleIdentifier(x, formalParameterDeclaration)
-handleFormalParameterWithoutValue())
-endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
-endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
-handleAsyncModifier(null, null)
-beginBlockFunctionBody({)
-beginIfStatement(if)
-handleIdentifier(x, expression)
-handleNoTypeArguments(==)
-handleNoArguments(==)
-handleSend(x, ==)
-beginBinaryExpression(==)
-handleLiteralInt(0)
-endBinaryExpression(==)
-handleParenthesizedCondition(()
-beginThenStatement(return)
-beginReturnStatement(return)
-handleLiteralInt(42)
-endReturnStatement(true, return, ;)
-endThenStatement(;)
-endIfStatement(if, null)
-beginReturnStatement(return)
-handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'switch'., null, {token: switch}], switch, switch)
-handleIdentifier(, expression)
-handleNoTypeArguments(switch)
-handleNoArguments(switch)
-handleSend(, switch)
-handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], switch, switch)
-endReturnStatement(true, return, ;)
-beginSwitchStatement(switch)
-handleIdentifier(x, expression)
-handleNoTypeArguments(-)
-handleNoArguments(-)
-handleSend(x, -)
-beginBinaryExpression(-)
-handleLiteralInt(1)
-endBinaryExpression(-)
-handleParenthesizedCondition(()
-handleRecoverableError(Message[ExpectedClassOrMixinBody, A switch statement must have a body, even if it is empty., Try adding an empty body., {string: switch statement}], ), ))
-beginSwitchBlock({)
-endSwitchBlock(0, {, })
-endSwitchStatement(switch, })
-handleRecoverableError(UnsupportedPrefixPlus, +, +)
-handleIdentifier(, expression)
-handleNoTypeArguments(+)
-handleNoArguments(+)
-handleSend(, +)
-beginBinaryExpression(+)
-handleLiteralInt(1)
-endBinaryExpression(+)
-handleExpressionStatement(;)
-endBlockFunctionBody(4, {, })
-endTopLevelMethod(switch, null, })
-endTopLevelDeclaration(int)
-beginMetadataStar(int)
-endMetadataStar(0)
-beginTopLevelMember(int)
-beginTopLevelMethod(}, null)
-handleIdentifier(int, typeReference)
-handleNoTypeArguments(this)
-handleType(int, null)
-handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'this'., null, {token: this}], this, this)
-handleIdentifier(this, topLevelFunctionDeclaration)
-handleNoTypeVariables(()
-beginFormalParameters((, MemberKind.TopLevelMethod)
-beginMetadataStar(int)
-endMetadataStar(0)
-beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
-handleIdentifier(int, typeReference)
-handleNoTypeArguments(x)
-handleType(int, null)
-handleIdentifier(x, formalParameterDeclaration)
-handleFormalParameterWithoutValue())
-endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
-endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
-handleAsyncModifier(null, null)
-beginBlockFunctionBody({)
-beginIfStatement(if)
-handleIdentifier(x, expression)
-handleNoTypeArguments(==)
-handleNoArguments(==)
-handleSend(x, ==)
-beginBinaryExpression(==)
-handleLiteralInt(0)
-endBinaryExpression(==)
-handleParenthesizedCondition(()
-beginThenStatement(return)
-beginReturnStatement(return)
-handleLiteralInt(42)
-endReturnStatement(true, return, ;)
-endThenStatement(;)
-endIfStatement(if, null)
-beginReturnStatement(return)
-handleThisExpression(this, expression)
-handleNoTypeArguments(()
-beginArguments(()
-handleIdentifier(x, expression)
-handleNoTypeArguments(-)
-handleNoArguments(-)
-handleSend(x, -)
-beginBinaryExpression(-)
-handleLiteralInt(1)
-endBinaryExpression(-)
-endArguments(1, (, ))
-handleSend(this, +)
-beginBinaryExpression(+)
-handleLiteralInt(1)
-endBinaryExpression(+)
-endReturnStatement(true, return, ;)
-endBlockFunctionBody(2, {, })
-endTopLevelMethod(int, null, })
-endTopLevelDeclaration(int)
-beginMetadataStar(int)
-endMetadataStar(0)
-beginTopLevelMember(int)
-handleRecoverableError(MissingConstFinalVarOrType, int, int)
-handleNoType(})
-handleIdentifier(int, topLevelVariableDeclaration)
-handleNoFieldInitializer(throw)
-handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
-endTopLevelFields(null, null, null, null, 1, int, ;)
-endTopLevelDeclaration(throw)
-beginMetadataStar(throw)
-endMetadataStar(0)
-beginTopLevelMember(throw)
-beginTopLevelMethod(;, null)
-handleNoType(;)
-handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'throw'., null, {token: throw}], throw, throw)
-handleIdentifier(throw, topLevelFunctionDeclaration)
-handleNoTypeVariables(()
-beginFormalParameters((, MemberKind.TopLevelMethod)
-beginMetadataStar(int)
-endMetadataStar(0)
-beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
-handleIdentifier(int, typeReference)
-handleNoTypeArguments(x)
-handleType(int, null)
-handleIdentifier(x, formalParameterDeclaration)
-handleFormalParameterWithoutValue())
-endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
-endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
-handleAsyncModifier(null, null)
-beginBlockFunctionBody({)
-beginIfStatement(if)
-handleIdentifier(x, expression)
-handleNoTypeArguments(==)
-handleNoArguments(==)
-handleSend(x, ==)
-beginBinaryExpression(==)
-handleLiteralInt(0)
-endBinaryExpression(==)
-handleParenthesizedCondition(()
-beginThenStatement(return)
-beginReturnStatement(return)
-handleLiteralInt(42)
-endReturnStatement(true, return, ;)
-endThenStatement(;)
-endIfStatement(if, null)
-beginReturnStatement(return)
-handleIdentifier(x, expression)
-handleNoTypeArguments(-)
-handleNoArguments(-)
-handleSend(x, -)
-beginBinaryExpression(-)
-handleLiteralInt(1)
-endBinaryExpression(-)
-handleParenthesizedExpression(()
-beginBinaryExpression(+)
-handleLiteralInt(1)
-endBinaryExpression(+)
-handleThrowExpression(throw, ;)
-endReturnStatement(true, return, ;)
-endBlockFunctionBody(2, {, })
-endTopLevelMethod(throw, null, })
-endTopLevelDeclaration(int)
-beginMetadataStar(int)
-endMetadataStar(0)
-beginTopLevelMember(int)
-handleRecoverableError(MissingConstFinalVarOrType, int, int)
-handleNoType(})
-handleIdentifier(int, topLevelVariableDeclaration)
-handleNoFieldInitializer(true)
-handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
-endTopLevelFields(null, null, null, null, 1, int, ;)
-endTopLevelDeclaration(true)
-beginMetadataStar(true)
-endMetadataStar(0)
-beginTopLevelMember(true)
-beginTopLevelMethod(;, null)
-handleNoType(;)
-handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'true'., null, {token: true}], true, true)
-handleIdentifier(true, topLevelFunctionDeclaration)
-handleNoTypeVariables(()
-beginFormalParameters((, MemberKind.TopLevelMethod)
-beginMetadataStar(int)
-endMetadataStar(0)
-beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
-handleIdentifier(int, typeReference)
-handleNoTypeArguments(x)
-handleType(int, null)
-handleIdentifier(x, formalParameterDeclaration)
-handleFormalParameterWithoutValue())
-endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
-endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
-handleAsyncModifier(null, null)
-beginBlockFunctionBody({)
-beginIfStatement(if)
-handleIdentifier(x, expression)
-handleNoTypeArguments(==)
-handleNoArguments(==)
-handleSend(x, ==)
-beginBinaryExpression(==)
-handleLiteralInt(0)
-endBinaryExpression(==)
-handleParenthesizedCondition(()
-beginThenStatement(return)
-beginReturnStatement(return)
-handleLiteralInt(42)
-endReturnStatement(true, return, ;)
-endThenStatement(;)
-endIfStatement(if, null)
-beginReturnStatement(return)
-handleLiteralBool(true)
-handleNoTypeArguments(()
-beginArguments(()
-handleIdentifier(x, expression)
-handleNoTypeArguments(-)
-handleNoArguments(-)
-handleSend(x, -)
-beginBinaryExpression(-)
-handleLiteralInt(1)
-endBinaryExpression(-)
-endArguments(1, (, ))
-handleSend((, ))
-beginBinaryExpression(+)
-handleLiteralInt(1)
-endBinaryExpression(+)
-endReturnStatement(true, return, ;)
-endBlockFunctionBody(2, {, })
-endTopLevelMethod(true, null, })
-endTopLevelDeclaration(int)
-beginMetadataStar(int)
-endMetadataStar(0)
-beginTopLevelMember(int)
-handleRecoverableError(MissingConstFinalVarOrType, int, int)
-handleNoType(})
-handleIdentifier(int, topLevelVariableDeclaration)
-handleNoFieldInitializer(try)
-handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
-endTopLevelFields(null, null, null, null, 1, int, ;)
-endTopLevelDeclaration(try)
-beginMetadataStar(try)
-endMetadataStar(0)
-beginTopLevelMember(try)
-beginTopLevelMethod(;, null)
-handleNoType(;)
-handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'try'., null, {token: try}], try, try)
-handleIdentifier(try, topLevelFunctionDeclaration)
-handleNoTypeVariables(()
-beginFormalParameters((, MemberKind.TopLevelMethod)
-beginMetadataStar(int)
-endMetadataStar(0)
-beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
-handleIdentifier(int, typeReference)
-handleNoTypeArguments(x)
-handleType(int, null)
-handleIdentifier(x, formalParameterDeclaration)
-handleFormalParameterWithoutValue())
-endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
-endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
-handleAsyncModifier(null, null)
-beginBlockFunctionBody({)
-beginIfStatement(if)
-handleIdentifier(x, expression)
-handleNoTypeArguments(==)
-handleNoArguments(==)
-handleSend(x, ==)
-beginBinaryExpression(==)
-handleLiteralInt(0)
-endBinaryExpression(==)
-handleParenthesizedCondition(()
-beginThenStatement(return)
-beginReturnStatement(return)
-handleLiteralInt(42)
-endReturnStatement(true, return, ;)
-endThenStatement(;)
-endIfStatement(if, null)
-beginReturnStatement(return)
-handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'try'., null, {token: try}], try, try)
-handleIdentifier(, expression)
-handleNoTypeArguments(try)
-handleNoArguments(try)
-handleSend(, try)
-handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], try, try)
-endReturnStatement(true, return, ;)
-beginTryStatement(try)
-handleRecoverableError(Message[ExpectedClassOrMixinBody, A try statement must have a body, even if it is empty., Try adding an empty body., {string: try statement}], try, try)
-beginBlock({, BlockKind(try statement))
-endBlock(0, {, }, BlockKind(try statement))
-handleRecoverableError(OnlyTry, try, try)
-endTryStatement(0, try, null)
-handleIdentifier(x, expression)
-handleNoTypeArguments(-)
-handleNoArguments(-)
-handleSend(x, -)
-beginBinaryExpression(-)
-handleLiteralInt(1)
-endBinaryExpression(-)
-handleParenthesizedExpression(()
-beginBinaryExpression(+)
-handleLiteralInt(1)
-endBinaryExpression(+)
-handleExpressionStatement(;)
-endBlockFunctionBody(4, {, })
-endTopLevelMethod(try, null, })
-endTopLevelDeclaration(int)
-beginMetadataStar(int)
-endMetadataStar(0)
-beginTopLevelMember(int)
-handleRecoverableError(MissingConstFinalVarOrType, int, int)
-handleNoType(})
-handleIdentifier(int, topLevelVariableDeclaration)
-handleNoFieldInitializer(var)
-handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
-endTopLevelFields(null, null, null, null, 1, int, ;)
-endTopLevelDeclaration(var)
-beginMetadataStar(var)
-endMetadataStar(0)
-beginTopLevelMember(var)
-handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}], (, ()
-handleRecoverableError(VarReturnType, var, var)
-beginTopLevelMethod(;, null)
-handleNoType(var)
-handleIdentifier(, topLevelFunctionDeclaration)
-handleNoTypeVariables(()
-beginFormalParameters((, MemberKind.TopLevelMethod)
-beginMetadataStar(int)
-endMetadataStar(0)
-beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
-handleIdentifier(int, typeReference)
-handleNoTypeArguments(x)
-handleType(int, null)
-handleIdentifier(x, formalParameterDeclaration)
-handleFormalParameterWithoutValue())
-endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
-endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
-handleAsyncModifier(null, null)
-beginBlockFunctionBody({)
-beginIfStatement(if)
-handleIdentifier(x, expression)
-handleNoTypeArguments(==)
-handleNoArguments(==)
-handleSend(x, ==)
-beginBinaryExpression(==)
-handleLiteralInt(0)
-endBinaryExpression(==)
-handleParenthesizedCondition(()
-beginThenStatement(return)
-beginReturnStatement(return)
-handleLiteralInt(42)
-endReturnStatement(true, return, ;)
-endThenStatement(;)
-endIfStatement(if, null)
-beginReturnStatement(return)
-handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'var'., null, {token: var}], var, var)
-handleIdentifier(, expression)
-handleNoTypeArguments(var)
-handleNoArguments(var)
-handleSend(, var)
-handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], var, var)
-endReturnStatement(true, return, ;)
-beginMetadataStar(var)
-endMetadataStar(0)
-handleNoType(var)
-beginVariablesDeclaration((, null, var)
-handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}], (, ()
-handleIdentifier(, localVariableDeclaration)
-beginInitializedIdentifier()
-handleNoVariableInitializer(x)
-endInitializedIdentifier()
-handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], x, x)
-endVariablesDeclaration(1, ;)
-handleIdentifier(x, expression)
-handleNoTypeArguments(-)
-handleNoArguments(-)
-handleSend(x, -)
-beginBinaryExpression(-)
-handleLiteralInt(1)
-endBinaryExpression(-)
-handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], 1, 1)
-handleExpressionStatement(;)
-handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got ')'., null, {token: )}], ), ))
-handleIdentifier(, expression)
-handleNoTypeArguments())
-handleNoArguments())
-handleSend(, ))
-handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], ), ))
-handleExpressionStatement(;)
-handleRecoverableError(Message[UnexpectedToken, Unexpected token ';'., null, {token: ;}], ), ))
-handleRecoverableError(UnsupportedPrefixPlus, +, +)
-handleIdentifier(, expression)
-handleNoTypeArguments(+)
-handleNoArguments(+)
-handleSend(, +)
-beginBinaryExpression(+)
-handleLiteralInt(1)
-endBinaryExpression(+)
-handleExpressionStatement(;)
-endBlockFunctionBody(6, {, })
-endTopLevelMethod(var, null, })
-endTopLevelDeclaration(int)
-beginMetadataStar(int)
-endMetadataStar(0)
-beginTopLevelMember(int)
-handleRecoverableError(MissingConstFinalVarOrType, int, int)
-handleNoType(})
-handleIdentifier(int, topLevelVariableDeclaration)
-handleNoFieldInitializer(void)
-handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
-endTopLevelFields(null, null, null, null, 1, int, ;)
-endTopLevelDeclaration(void)
-beginMetadataStar(void)
-endMetadataStar(0)
-beginTopLevelMember(void)
-handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}], (, ()
-beginTopLevelMethod(;, null)
-handleVoidKeyword(void)
-handleIdentifier(, topLevelFunctionDeclaration)
-handleNoTypeVariables(()
-beginFormalParameters((, MemberKind.TopLevelMethod)
-beginMetadataStar(int)
-endMetadataStar(0)
-beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
-handleIdentifier(int, typeReference)
-handleNoTypeArguments(x)
-handleType(int, null)
-handleIdentifier(x, formalParameterDeclaration)
-handleFormalParameterWithoutValue())
-endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
-endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
-handleAsyncModifier(null, null)
-beginBlockFunctionBody({)
-beginIfStatement(if)
-handleIdentifier(x, expression)
-handleNoTypeArguments(==)
-handleNoArguments(==)
-handleSend(x, ==)
-beginBinaryExpression(==)
-handleLiteralInt(0)
-endBinaryExpression(==)
-handleParenthesizedCondition(()
-beginThenStatement(return)
-beginReturnStatement(return)
-handleLiteralInt(42)
-endReturnStatement(true, return, ;)
-endThenStatement(;)
-endIfStatement(if, null)
-beginReturnStatement(return)
-handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'void'., null, {token: void}], void, void)
-handleIdentifier(, expression)
-handleNoTypeArguments(void)
-handleNoArguments(void)
-handleSend(, void)
-handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], void, void)
-endReturnStatement(true, return, ;)
-beginMetadataStar(void)
-endMetadataStar(0)
-handleVoidKeyword(void)
-beginVariablesDeclaration((, null, null)
-handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}], (, ()
-handleIdentifier(, localVariableDeclaration)
-beginInitializedIdentifier()
-handleNoVariableInitializer(x)
-endInitializedIdentifier()
-handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], x, x)
-endVariablesDeclaration(1, ;)
-handleIdentifier(x, expression)
-handleNoTypeArguments(-)
-handleNoArguments(-)
-handleSend(x, -)
-beginBinaryExpression(-)
-handleLiteralInt(1)
-endBinaryExpression(-)
-handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], 1, 1)
-handleExpressionStatement(;)
-handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got ')'., null, {token: )}], ), ))
-handleIdentifier(, expression)
-handleNoTypeArguments())
-handleNoArguments())
-handleSend(, ))
-handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], ), ))
-handleExpressionStatement(;)
-handleRecoverableError(Message[UnexpectedToken, Unexpected token ';'., null, {token: ;}], ), ))
-handleRecoverableError(UnsupportedPrefixPlus, +, +)
-handleIdentifier(, expression)
-handleNoTypeArguments(+)
-handleNoArguments(+)
-handleSend(, +)
-beginBinaryExpression(+)
-handleLiteralInt(1)
-endBinaryExpression(+)
-handleExpressionStatement(;)
-endBlockFunctionBody(6, {, })
-endTopLevelMethod(void, null, })
-endTopLevelDeclaration(int)
-beginMetadataStar(int)
-endMetadataStar(0)
-beginTopLevelMember(int)
-handleRecoverableError(MissingConstFinalVarOrType, int, int)
-handleNoType(})
-handleIdentifier(int, topLevelVariableDeclaration)
-handleNoFieldInitializer(while)
-handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
-endTopLevelFields(null, null, null, null, 1, int, ;)
-endTopLevelDeclaration(while)
-beginMetadataStar(while)
-endMetadataStar(0)
-beginTopLevelMember(while)
-beginTopLevelMethod(;, null)
-handleNoType(;)
-handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'while'., null, {token: while}], while, while)
-handleIdentifier(while, topLevelFunctionDeclaration)
-handleNoTypeVariables(()
-beginFormalParameters((, MemberKind.TopLevelMethod)
-beginMetadataStar(int)
-endMetadataStar(0)
-beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
-handleIdentifier(int, typeReference)
-handleNoTypeArguments(x)
-handleType(int, null)
-handleIdentifier(x, formalParameterDeclaration)
-handleFormalParameterWithoutValue())
-endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
-endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
-handleAsyncModifier(null, null)
-beginBlockFunctionBody({)
-beginIfStatement(if)
-handleIdentifier(x, expression)
-handleNoTypeArguments(==)
-handleNoArguments(==)
-handleSend(x, ==)
-beginBinaryExpression(==)
-handleLiteralInt(0)
-endBinaryExpression(==)
-handleParenthesizedCondition(()
-beginThenStatement(return)
-beginReturnStatement(return)
-handleLiteralInt(42)
-endReturnStatement(true, return, ;)
-endThenStatement(;)
-endIfStatement(if, null)
-beginReturnStatement(return)
-handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'while'., null, {token: while}], while, while)
-handleIdentifier(, expression)
-handleNoTypeArguments(while)
-handleNoArguments(while)
-handleSend(, while)
-handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], while, while)
-endReturnStatement(true, return, ;)
-beginWhileStatement(while)
-handleIdentifier(x, expression)
-handleNoTypeArguments(-)
-handleNoArguments(-)
-handleSend(x, -)
-beginBinaryExpression(-)
-handleLiteralInt(1)
-endBinaryExpression(-)
-handleParenthesizedCondition(()
-beginWhileStatementBody(+)
-handleRecoverableError(UnsupportedPrefixPlus, +, +)
-handleIdentifier(, expression)
-handleNoTypeArguments(+)
-handleNoArguments(+)
-handleSend(, +)
-beginBinaryExpression(+)
-handleLiteralInt(1)
-endBinaryExpression(+)
-handleExpressionStatement(;)
-endWhileStatementBody(})
-endWhileStatement(while, })
-endBlockFunctionBody(3, {, })
-endTopLevelMethod(while, null, })
-endTopLevelDeclaration(int)
-beginMetadataStar(int)
-endMetadataStar(0)
-beginTopLevelMember(int)
-handleRecoverableError(MissingConstFinalVarOrType, int, int)
-handleNoType(})
-handleIdentifier(int, topLevelVariableDeclaration)
-handleNoFieldInitializer(with)
-handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
-endTopLevelFields(null, null, null, null, 1, int, ;)
-endTopLevelDeclaration(with)
-beginMetadataStar(with)
-endMetadataStar(0)
-beginTopLevelMember(with)
-beginTopLevelMethod(;, null)
-handleNoType(;)
-handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'with'., null, {token: with}], with, with)
-handleIdentifier(with, topLevelFunctionDeclaration)
-handleNoTypeVariables(()
-beginFormalParameters((, MemberKind.TopLevelMethod)
-beginMetadataStar(int)
-endMetadataStar(0)
-beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
-handleIdentifier(int, typeReference)
-handleNoTypeArguments(x)
-handleType(int, null)
-handleIdentifier(x, formalParameterDeclaration)
-handleFormalParameterWithoutValue())
-endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
-endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
-handleAsyncModifier(null, null)
-beginBlockFunctionBody({)
-beginIfStatement(if)
-handleIdentifier(x, expression)
-handleNoTypeArguments(==)
-handleNoArguments(==)
-handleSend(x, ==)
-beginBinaryExpression(==)
-handleLiteralInt(0)
-endBinaryExpression(==)
-handleParenthesizedCondition(()
-beginThenStatement(return)
-beginReturnStatement(return)
-handleLiteralInt(42)
-endReturnStatement(true, return, ;)
-endThenStatement(;)
-endIfStatement(if, null)
-beginReturnStatement(return)
-handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'with'., null, {token: with}], with, with)
-handleIdentifier(with, expression)
-handleNoTypeArguments(()
-beginArguments(()
-handleIdentifier(x, expression)
-handleNoTypeArguments(-)
-handleNoArguments(-)
-handleSend(x, -)
-beginBinaryExpression(-)
-handleLiteralInt(1)
-endBinaryExpression(-)
-endArguments(1, (, ))
-handleSend(with, +)
-beginBinaryExpression(+)
-handleLiteralInt(1)
-endBinaryExpression(+)
-endReturnStatement(true, return, ;)
-endBlockFunctionBody(2, {, })
-endTopLevelMethod(with, null, })
-endTopLevelDeclaration()
-endCompilationUnit(71, )
+  beginTopLevelMember(int)
+    beginTopLevelMethod(}, null)
+      handleIdentifier(int, typeReference)
+      handleNoTypeArguments(new)
+      handleType(int, null)
+      handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'new'., null, {token: new}], new, new)
+      handleIdentifier(new, topLevelFunctionDeclaration)
+      handleNoTypeVariables(()
+      beginFormalParameters((, MemberKind.TopLevelMethod)
+        beginMetadataStar(int)
+        endMetadataStar(0)
+        beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+          handleIdentifier(int, typeReference)
+          handleNoTypeArguments(x)
+          handleType(int, null)
+          handleIdentifier(x, formalParameterDeclaration)
+          handleFormalParameterWithoutValue())
+        endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+      endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
+      handleAsyncModifier(null, null)
+      beginBlockFunctionBody({)
+        beginIfStatement(if)
+          handleIdentifier(x, expression)
+          handleNoTypeArguments(==)
+          handleNoArguments(==)
+          handleSend(x, ==)
+          beginBinaryExpression(==)
+          handleLiteralInt(0)
+          endBinaryExpression(==)
+          handleParenthesizedCondition(()
+          beginThenStatement(return)
+            beginReturnStatement(return)
+              handleLiteralInt(42)
+            endReturnStatement(true, return, ;)
+          endThenStatement(;)
+        endIfStatement(if, null)
+        beginReturnStatement(return)
+          beginNewExpression(new)
+            handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}], (, ()
+            handleIdentifier(, constructorReference)
+            beginConstructorReference()
+              handleNoTypeArguments(()
+              handleNoConstructorReferenceContinuationAfterTypeArguments(()
+            endConstructorReference(, null, ()
+            beginArguments(()
+              handleIdentifier(x, expression)
+              handleNoTypeArguments(-)
+              handleNoArguments(-)
+              handleSend(x, -)
+              beginBinaryExpression(-)
+              handleLiteralInt(1)
+              endBinaryExpression(-)
+            endArguments(1, (, ))
+          endNewExpression(new)
+          beginBinaryExpression(+)
+          handleLiteralInt(1)
+          endBinaryExpression(+)
+        endReturnStatement(true, return, ;)
+      endBlockFunctionBody(2, {, })
+    endTopLevelMethod(int, null, })
+  endTopLevelDeclaration(int)
+  beginMetadataStar(int)
+  endMetadataStar(0)
+  beginTopLevelMember(int)
+    beginTopLevelMethod(}, null)
+      handleIdentifier(int, typeReference)
+      handleNoTypeArguments(null)
+      handleType(int, null)
+      handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'null'., null, {token: null}], null, null)
+      handleIdentifier(null, topLevelFunctionDeclaration)
+      handleNoTypeVariables(()
+      beginFormalParameters((, MemberKind.TopLevelMethod)
+        beginMetadataStar(int)
+        endMetadataStar(0)
+        beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+          handleIdentifier(int, typeReference)
+          handleNoTypeArguments(x)
+          handleType(int, null)
+          handleIdentifier(x, formalParameterDeclaration)
+          handleFormalParameterWithoutValue())
+        endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+      endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
+      handleAsyncModifier(null, null)
+      beginBlockFunctionBody({)
+        beginIfStatement(if)
+          handleIdentifier(x, expression)
+          handleNoTypeArguments(==)
+          handleNoArguments(==)
+          handleSend(x, ==)
+          beginBinaryExpression(==)
+          handleLiteralInt(0)
+          endBinaryExpression(==)
+          handleParenthesizedCondition(()
+          beginThenStatement(return)
+            beginReturnStatement(return)
+              handleLiteralInt(42)
+            endReturnStatement(true, return, ;)
+          endThenStatement(;)
+        endIfStatement(if, null)
+        beginReturnStatement(return)
+          handleLiteralNull(null)
+          handleNoTypeArguments(()
+          beginArguments(()
+            handleIdentifier(x, expression)
+            handleNoTypeArguments(-)
+            handleNoArguments(-)
+            handleSend(x, -)
+            beginBinaryExpression(-)
+            handleLiteralInt(1)
+            endBinaryExpression(-)
+          endArguments(1, (, ))
+          handleSend((, ))
+          beginBinaryExpression(+)
+          handleLiteralInt(1)
+          endBinaryExpression(+)
+        endReturnStatement(true, return, ;)
+      endBlockFunctionBody(2, {, })
+    endTopLevelMethod(int, null, })
+  endTopLevelDeclaration(int)
+  beginMetadataStar(int)
+  endMetadataStar(0)
+  beginTopLevelMember(int)
+    beginTopLevelMethod(}, null)
+      handleIdentifier(int, typeReference)
+      handleNoTypeArguments(rethrow)
+      handleType(int, null)
+      handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'rethrow'., null, {token: rethrow}], rethrow, rethrow)
+      handleIdentifier(rethrow, topLevelFunctionDeclaration)
+      handleNoTypeVariables(()
+      beginFormalParameters((, MemberKind.TopLevelMethod)
+        beginMetadataStar(int)
+        endMetadataStar(0)
+        beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+          handleIdentifier(int, typeReference)
+          handleNoTypeArguments(x)
+          handleType(int, null)
+          handleIdentifier(x, formalParameterDeclaration)
+          handleFormalParameterWithoutValue())
+        endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+      endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
+      handleAsyncModifier(null, null)
+      beginBlockFunctionBody({)
+        beginIfStatement(if)
+          handleIdentifier(x, expression)
+          handleNoTypeArguments(==)
+          handleNoArguments(==)
+          handleSend(x, ==)
+          beginBinaryExpression(==)
+          handleLiteralInt(0)
+          endBinaryExpression(==)
+          handleParenthesizedCondition(()
+          beginThenStatement(return)
+            beginReturnStatement(return)
+              handleLiteralInt(42)
+            endReturnStatement(true, return, ;)
+          endThenStatement(;)
+        endIfStatement(if, null)
+        beginReturnStatement(return)
+          handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'rethrow'., null, {token: rethrow}], rethrow, rethrow)
+          handleIdentifier(rethrow, expression)
+          handleNoTypeArguments(()
+          beginArguments(()
+            handleIdentifier(x, expression)
+            handleNoTypeArguments(-)
+            handleNoArguments(-)
+            handleSend(x, -)
+            beginBinaryExpression(-)
+            handleLiteralInt(1)
+            endBinaryExpression(-)
+          endArguments(1, (, ))
+          handleSend(rethrow, +)
+          beginBinaryExpression(+)
+          handleLiteralInt(1)
+          endBinaryExpression(+)
+        endReturnStatement(true, return, ;)
+      endBlockFunctionBody(2, {, })
+    endTopLevelMethod(int, null, })
+  endTopLevelDeclaration(int)
+  beginMetadataStar(int)
+  endMetadataStar(0)
+  beginTopLevelMember(int)
+    beginTopLevelMethod(}, null)
+      handleIdentifier(int, typeReference)
+      handleNoTypeArguments(return)
+      handleType(int, null)
+      handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'return'., null, {token: return}], return, return)
+      handleIdentifier(return, topLevelFunctionDeclaration)
+      handleNoTypeVariables(()
+      beginFormalParameters((, MemberKind.TopLevelMethod)
+        beginMetadataStar(int)
+        endMetadataStar(0)
+        beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+          handleIdentifier(int, typeReference)
+          handleNoTypeArguments(x)
+          handleType(int, null)
+          handleIdentifier(x, formalParameterDeclaration)
+          handleFormalParameterWithoutValue())
+        endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+      endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
+      handleAsyncModifier(null, null)
+      beginBlockFunctionBody({)
+        beginIfStatement(if)
+          handleIdentifier(x, expression)
+          handleNoTypeArguments(==)
+          handleNoArguments(==)
+          handleSend(x, ==)
+          beginBinaryExpression(==)
+          handleLiteralInt(0)
+          endBinaryExpression(==)
+          handleParenthesizedCondition(()
+          beginThenStatement(return)
+            beginReturnStatement(return)
+              handleLiteralInt(42)
+            endReturnStatement(true, return, ;)
+          endThenStatement(;)
+        endIfStatement(if, null)
+        beginReturnStatement(return)
+          handleRecoverableError(Message[UnexpectedToken, Unexpected token 'return'., null, {token: return}], return, return)
+          handleIdentifier(x, expression)
+          handleNoTypeArguments(-)
+          handleNoArguments(-)
+          handleSend(x, -)
+          beginBinaryExpression(-)
+          handleLiteralInt(1)
+          endBinaryExpression(-)
+          handleParenthesizedExpression(()
+          beginBinaryExpression(+)
+          handleLiteralInt(1)
+          endBinaryExpression(+)
+        endReturnStatement(true, return, ;)
+      endBlockFunctionBody(2, {, })
+    endTopLevelMethod(int, null, })
+  endTopLevelDeclaration(int)
+  beginMetadataStar(int)
+  endMetadataStar(0)
+  beginTopLevelMember(int)
+    beginTopLevelMethod(}, null)
+      handleIdentifier(int, typeReference)
+      handleNoTypeArguments(super)
+      handleType(int, null)
+      handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'super'., null, {token: super}], super, super)
+      handleIdentifier(super, topLevelFunctionDeclaration)
+      handleNoTypeVariables(()
+      beginFormalParameters((, MemberKind.TopLevelMethod)
+        beginMetadataStar(int)
+        endMetadataStar(0)
+        beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+          handleIdentifier(int, typeReference)
+          handleNoTypeArguments(x)
+          handleType(int, null)
+          handleIdentifier(x, formalParameterDeclaration)
+          handleFormalParameterWithoutValue())
+        endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+      endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
+      handleAsyncModifier(null, null)
+      beginBlockFunctionBody({)
+        beginIfStatement(if)
+          handleIdentifier(x, expression)
+          handleNoTypeArguments(==)
+          handleNoArguments(==)
+          handleSend(x, ==)
+          beginBinaryExpression(==)
+          handleLiteralInt(0)
+          endBinaryExpression(==)
+          handleParenthesizedCondition(()
+          beginThenStatement(return)
+            beginReturnStatement(return)
+              handleLiteralInt(42)
+            endReturnStatement(true, return, ;)
+          endThenStatement(;)
+        endIfStatement(if, null)
+        beginReturnStatement(return)
+          handleSuperExpression(super, expression)
+          handleNoTypeArguments(()
+          beginArguments(()
+            handleIdentifier(x, expression)
+            handleNoTypeArguments(-)
+            handleNoArguments(-)
+            handleSend(x, -)
+            beginBinaryExpression(-)
+            handleLiteralInt(1)
+            endBinaryExpression(-)
+          endArguments(1, (, ))
+          handleSend(super, +)
+          beginBinaryExpression(+)
+          handleLiteralInt(1)
+          endBinaryExpression(+)
+        endReturnStatement(true, return, ;)
+      endBlockFunctionBody(2, {, })
+    endTopLevelMethod(int, null, })
+  endTopLevelDeclaration(int)
+  beginMetadataStar(int)
+  endMetadataStar(0)
+  beginTopLevelMember(int)
+    beginTopLevelMethod(}, null)
+      handleIdentifier(int, typeReference)
+      handleNoTypeArguments(switch)
+      handleType(int, null)
+      handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'switch'., null, {token: switch}], switch, switch)
+      handleIdentifier(switch, topLevelFunctionDeclaration)
+      handleNoTypeVariables(()
+      beginFormalParameters((, MemberKind.TopLevelMethod)
+        beginMetadataStar(int)
+        endMetadataStar(0)
+        beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+          handleIdentifier(int, typeReference)
+          handleNoTypeArguments(x)
+          handleType(int, null)
+          handleIdentifier(x, formalParameterDeclaration)
+          handleFormalParameterWithoutValue())
+        endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+      endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
+      handleAsyncModifier(null, null)
+      beginBlockFunctionBody({)
+        beginIfStatement(if)
+          handleIdentifier(x, expression)
+          handleNoTypeArguments(==)
+          handleNoArguments(==)
+          handleSend(x, ==)
+          beginBinaryExpression(==)
+          handleLiteralInt(0)
+          endBinaryExpression(==)
+          handleParenthesizedCondition(()
+          beginThenStatement(return)
+            beginReturnStatement(return)
+              handleLiteralInt(42)
+            endReturnStatement(true, return, ;)
+          endThenStatement(;)
+        endIfStatement(if, null)
+        beginReturnStatement(return)
+          handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'switch'., null, {token: switch}], switch, switch)
+          handleIdentifier(, expression)
+          handleNoTypeArguments(switch)
+          handleNoArguments(switch)
+          handleSend(, switch)
+          handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], switch, switch)
+        endReturnStatement(true, return, ;)
+        beginSwitchStatement(switch)
+          handleIdentifier(x, expression)
+          handleNoTypeArguments(-)
+          handleNoArguments(-)
+          handleSend(x, -)
+          beginBinaryExpression(-)
+          handleLiteralInt(1)
+          endBinaryExpression(-)
+          handleParenthesizedCondition(()
+          handleRecoverableError(Message[ExpectedClassOrMixinBody, A switch statement must have a body, even if it is empty., Try adding an empty body., {string: switch statement}], ), ))
+          beginSwitchBlock({)
+          endSwitchBlock(0, {, })
+        endSwitchStatement(switch, })
+        handleRecoverableError(UnsupportedPrefixPlus, +, +)
+        handleIdentifier(, expression)
+        handleNoTypeArguments(+)
+        handleNoArguments(+)
+        handleSend(, +)
+        beginBinaryExpression(+)
+        handleLiteralInt(1)
+        endBinaryExpression(+)
+        handleExpressionStatement(;)
+      endBlockFunctionBody(4, {, })
+    endTopLevelMethod(int, null, })
+  endTopLevelDeclaration(int)
+  beginMetadataStar(int)
+  endMetadataStar(0)
+  beginTopLevelMember(int)
+    beginTopLevelMethod(}, null)
+      handleIdentifier(int, typeReference)
+      handleNoTypeArguments(this)
+      handleType(int, null)
+      handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'this'., null, {token: this}], this, this)
+      handleIdentifier(this, topLevelFunctionDeclaration)
+      handleNoTypeVariables(()
+      beginFormalParameters((, MemberKind.TopLevelMethod)
+        beginMetadataStar(int)
+        endMetadataStar(0)
+        beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+          handleIdentifier(int, typeReference)
+          handleNoTypeArguments(x)
+          handleType(int, null)
+          handleIdentifier(x, formalParameterDeclaration)
+          handleFormalParameterWithoutValue())
+        endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+      endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
+      handleAsyncModifier(null, null)
+      beginBlockFunctionBody({)
+        beginIfStatement(if)
+          handleIdentifier(x, expression)
+          handleNoTypeArguments(==)
+          handleNoArguments(==)
+          handleSend(x, ==)
+          beginBinaryExpression(==)
+          handleLiteralInt(0)
+          endBinaryExpression(==)
+          handleParenthesizedCondition(()
+          beginThenStatement(return)
+            beginReturnStatement(return)
+              handleLiteralInt(42)
+            endReturnStatement(true, return, ;)
+          endThenStatement(;)
+        endIfStatement(if, null)
+        beginReturnStatement(return)
+          handleThisExpression(this, expression)
+          handleNoTypeArguments(()
+          beginArguments(()
+            handleIdentifier(x, expression)
+            handleNoTypeArguments(-)
+            handleNoArguments(-)
+            handleSend(x, -)
+            beginBinaryExpression(-)
+            handleLiteralInt(1)
+            endBinaryExpression(-)
+          endArguments(1, (, ))
+          handleSend(this, +)
+          beginBinaryExpression(+)
+          handleLiteralInt(1)
+          endBinaryExpression(+)
+        endReturnStatement(true, return, ;)
+      endBlockFunctionBody(2, {, })
+    endTopLevelMethod(int, null, })
+  endTopLevelDeclaration(int)
+  beginMetadataStar(int)
+  endMetadataStar(0)
+  beginTopLevelMember(int)
+    beginTopLevelMethod(}, null)
+      handleIdentifier(int, typeReference)
+      handleNoTypeArguments(throw)
+      handleType(int, null)
+      handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'throw'., null, {token: throw}], throw, throw)
+      handleIdentifier(throw, topLevelFunctionDeclaration)
+      handleNoTypeVariables(()
+      beginFormalParameters((, MemberKind.TopLevelMethod)
+        beginMetadataStar(int)
+        endMetadataStar(0)
+        beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+          handleIdentifier(int, typeReference)
+          handleNoTypeArguments(x)
+          handleType(int, null)
+          handleIdentifier(x, formalParameterDeclaration)
+          handleFormalParameterWithoutValue())
+        endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+      endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
+      handleAsyncModifier(null, null)
+      beginBlockFunctionBody({)
+        beginIfStatement(if)
+          handleIdentifier(x, expression)
+          handleNoTypeArguments(==)
+          handleNoArguments(==)
+          handleSend(x, ==)
+          beginBinaryExpression(==)
+          handleLiteralInt(0)
+          endBinaryExpression(==)
+          handleParenthesizedCondition(()
+          beginThenStatement(return)
+            beginReturnStatement(return)
+              handleLiteralInt(42)
+            endReturnStatement(true, return, ;)
+          endThenStatement(;)
+        endIfStatement(if, null)
+        beginReturnStatement(return)
+          handleIdentifier(x, expression)
+          handleNoTypeArguments(-)
+          handleNoArguments(-)
+          handleSend(x, -)
+          beginBinaryExpression(-)
+          handleLiteralInt(1)
+          endBinaryExpression(-)
+          handleParenthesizedExpression(()
+          beginBinaryExpression(+)
+          handleLiteralInt(1)
+          endBinaryExpression(+)
+          handleThrowExpression(throw, ;)
+        endReturnStatement(true, return, ;)
+      endBlockFunctionBody(2, {, })
+    endTopLevelMethod(int, null, })
+  endTopLevelDeclaration(int)
+  beginMetadataStar(int)
+  endMetadataStar(0)
+  beginTopLevelMember(int)
+    beginTopLevelMethod(}, null)
+      handleIdentifier(int, typeReference)
+      handleNoTypeArguments(true)
+      handleType(int, null)
+      handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'true'., null, {token: true}], true, true)
+      handleIdentifier(true, topLevelFunctionDeclaration)
+      handleNoTypeVariables(()
+      beginFormalParameters((, MemberKind.TopLevelMethod)
+        beginMetadataStar(int)
+        endMetadataStar(0)
+        beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+          handleIdentifier(int, typeReference)
+          handleNoTypeArguments(x)
+          handleType(int, null)
+          handleIdentifier(x, formalParameterDeclaration)
+          handleFormalParameterWithoutValue())
+        endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+      endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
+      handleAsyncModifier(null, null)
+      beginBlockFunctionBody({)
+        beginIfStatement(if)
+          handleIdentifier(x, expression)
+          handleNoTypeArguments(==)
+          handleNoArguments(==)
+          handleSend(x, ==)
+          beginBinaryExpression(==)
+          handleLiteralInt(0)
+          endBinaryExpression(==)
+          handleParenthesizedCondition(()
+          beginThenStatement(return)
+            beginReturnStatement(return)
+              handleLiteralInt(42)
+            endReturnStatement(true, return, ;)
+          endThenStatement(;)
+        endIfStatement(if, null)
+        beginReturnStatement(return)
+          handleLiteralBool(true)
+          handleNoTypeArguments(()
+          beginArguments(()
+            handleIdentifier(x, expression)
+            handleNoTypeArguments(-)
+            handleNoArguments(-)
+            handleSend(x, -)
+            beginBinaryExpression(-)
+            handleLiteralInt(1)
+            endBinaryExpression(-)
+          endArguments(1, (, ))
+          handleSend((, ))
+          beginBinaryExpression(+)
+          handleLiteralInt(1)
+          endBinaryExpression(+)
+        endReturnStatement(true, return, ;)
+      endBlockFunctionBody(2, {, })
+    endTopLevelMethod(int, null, })
+  endTopLevelDeclaration(int)
+  beginMetadataStar(int)
+  endMetadataStar(0)
+  beginTopLevelMember(int)
+    beginTopLevelMethod(}, null)
+      handleIdentifier(int, typeReference)
+      handleNoTypeArguments(try)
+      handleType(int, null)
+      handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'try'., null, {token: try}], try, try)
+      handleIdentifier(try, topLevelFunctionDeclaration)
+      handleNoTypeVariables(()
+      beginFormalParameters((, MemberKind.TopLevelMethod)
+        beginMetadataStar(int)
+        endMetadataStar(0)
+        beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+          handleIdentifier(int, typeReference)
+          handleNoTypeArguments(x)
+          handleType(int, null)
+          handleIdentifier(x, formalParameterDeclaration)
+          handleFormalParameterWithoutValue())
+        endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+      endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
+      handleAsyncModifier(null, null)
+      beginBlockFunctionBody({)
+        beginIfStatement(if)
+          handleIdentifier(x, expression)
+          handleNoTypeArguments(==)
+          handleNoArguments(==)
+          handleSend(x, ==)
+          beginBinaryExpression(==)
+          handleLiteralInt(0)
+          endBinaryExpression(==)
+          handleParenthesizedCondition(()
+          beginThenStatement(return)
+            beginReturnStatement(return)
+              handleLiteralInt(42)
+            endReturnStatement(true, return, ;)
+          endThenStatement(;)
+        endIfStatement(if, null)
+        beginReturnStatement(return)
+          handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'try'., null, {token: try}], try, try)
+          handleIdentifier(, expression)
+          handleNoTypeArguments(try)
+          handleNoArguments(try)
+          handleSend(, try)
+          handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], try, try)
+        endReturnStatement(true, return, ;)
+        beginTryStatement(try)
+          handleRecoverableError(Message[ExpectedClassOrMixinBody, A try statement must have a body, even if it is empty., Try adding an empty body., {string: try statement}], try, try)
+          beginBlock({, BlockKind(try statement))
+          endBlock(0, {, }, BlockKind(try statement))
+          handleRecoverableError(OnlyTry, try, try)
+        endTryStatement(0, try, null)
+        handleIdentifier(x, expression)
+        handleNoTypeArguments(-)
+        handleNoArguments(-)
+        handleSend(x, -)
+        beginBinaryExpression(-)
+        handleLiteralInt(1)
+        endBinaryExpression(-)
+        handleParenthesizedExpression(()
+        beginBinaryExpression(+)
+        handleLiteralInt(1)
+        endBinaryExpression(+)
+        handleExpressionStatement(;)
+      endBlockFunctionBody(4, {, })
+    endTopLevelMethod(int, null, })
+  endTopLevelDeclaration(int)
+  beginMetadataStar(int)
+  endMetadataStar(0)
+  beginTopLevelMember(int)
+    beginTopLevelMethod(}, null)
+      handleIdentifier(int, typeReference)
+      handleNoTypeArguments(var)
+      handleType(int, null)
+      handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'var'., null, {token: var}], var, var)
+      handleIdentifier(var, topLevelFunctionDeclaration)
+      handleNoTypeVariables(()
+      beginFormalParameters((, MemberKind.TopLevelMethod)
+        beginMetadataStar(int)
+        endMetadataStar(0)
+        beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+          handleIdentifier(int, typeReference)
+          handleNoTypeArguments(x)
+          handleType(int, null)
+          handleIdentifier(x, formalParameterDeclaration)
+          handleFormalParameterWithoutValue())
+        endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+      endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
+      handleAsyncModifier(null, null)
+      beginBlockFunctionBody({)
+        beginIfStatement(if)
+          handleIdentifier(x, expression)
+          handleNoTypeArguments(==)
+          handleNoArguments(==)
+          handleSend(x, ==)
+          beginBinaryExpression(==)
+          handleLiteralInt(0)
+          endBinaryExpression(==)
+          handleParenthesizedCondition(()
+          beginThenStatement(return)
+            beginReturnStatement(return)
+              handleLiteralInt(42)
+            endReturnStatement(true, return, ;)
+          endThenStatement(;)
+        endIfStatement(if, null)
+        beginReturnStatement(return)
+          handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'var'., null, {token: var}], var, var)
+          handleIdentifier(, expression)
+          handleNoTypeArguments(var)
+          handleNoArguments(var)
+          handleSend(, var)
+          handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], var, var)
+        endReturnStatement(true, return, ;)
+        beginMetadataStar(var)
+        endMetadataStar(0)
+        handleNoType(var)
+        beginVariablesDeclaration((, null, var)
+          handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}], (, ()
+          handleIdentifier(, localVariableDeclaration)
+          beginInitializedIdentifier()
+            handleNoVariableInitializer(x)
+          endInitializedIdentifier()
+          handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], x, x)
+        endVariablesDeclaration(1, ;)
+        handleIdentifier(x, expression)
+        handleNoTypeArguments(-)
+        handleNoArguments(-)
+        handleSend(x, -)
+        beginBinaryExpression(-)
+        handleLiteralInt(1)
+        endBinaryExpression(-)
+        handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], 1, 1)
+        handleExpressionStatement(;)
+        handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got ')'., null, {token: )}], ), ))
+        handleIdentifier(, expression)
+        handleNoTypeArguments())
+        handleNoArguments())
+        handleSend(, ))
+        handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], ), ))
+        handleExpressionStatement(;)
+        handleRecoverableError(Message[UnexpectedToken, Unexpected token ';'., null, {token: ;}], ), ))
+        handleRecoverableError(UnsupportedPrefixPlus, +, +)
+        handleIdentifier(, expression)
+        handleNoTypeArguments(+)
+        handleNoArguments(+)
+        handleSend(, +)
+        beginBinaryExpression(+)
+        handleLiteralInt(1)
+        endBinaryExpression(+)
+        handleExpressionStatement(;)
+      endBlockFunctionBody(6, {, })
+    endTopLevelMethod(int, null, })
+  endTopLevelDeclaration(int)
+  beginMetadataStar(int)
+  endMetadataStar(0)
+  beginTopLevelMember(int)
+    beginTopLevelMethod(}, null)
+      handleIdentifier(int, typeReference)
+      handleNoTypeArguments(void)
+      handleType(int, null)
+      handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'void'., null, {token: void}], void, void)
+      handleIdentifier(void, topLevelFunctionDeclaration)
+      handleNoTypeVariables(()
+      beginFormalParameters((, MemberKind.TopLevelMethod)
+        beginMetadataStar(int)
+        endMetadataStar(0)
+        beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+          handleIdentifier(int, typeReference)
+          handleNoTypeArguments(x)
+          handleType(int, null)
+          handleIdentifier(x, formalParameterDeclaration)
+          handleFormalParameterWithoutValue())
+        endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+      endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
+      handleAsyncModifier(null, null)
+      beginBlockFunctionBody({)
+        beginIfStatement(if)
+          handleIdentifier(x, expression)
+          handleNoTypeArguments(==)
+          handleNoArguments(==)
+          handleSend(x, ==)
+          beginBinaryExpression(==)
+          handleLiteralInt(0)
+          endBinaryExpression(==)
+          handleParenthesizedCondition(()
+          beginThenStatement(return)
+            beginReturnStatement(return)
+              handleLiteralInt(42)
+            endReturnStatement(true, return, ;)
+          endThenStatement(;)
+        endIfStatement(if, null)
+        beginReturnStatement(return)
+          handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'void'., null, {token: void}], void, void)
+          handleIdentifier(, expression)
+          handleNoTypeArguments(void)
+          handleNoArguments(void)
+          handleSend(, void)
+          handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], void, void)
+        endReturnStatement(true, return, ;)
+        beginMetadataStar(void)
+        endMetadataStar(0)
+        handleVoidKeyword(void)
+        beginVariablesDeclaration((, null, null)
+          handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}], (, ()
+          handleIdentifier(, localVariableDeclaration)
+          beginInitializedIdentifier()
+            handleNoVariableInitializer(x)
+          endInitializedIdentifier()
+          handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], x, x)
+        endVariablesDeclaration(1, ;)
+        handleIdentifier(x, expression)
+        handleNoTypeArguments(-)
+        handleNoArguments(-)
+        handleSend(x, -)
+        beginBinaryExpression(-)
+        handleLiteralInt(1)
+        endBinaryExpression(-)
+        handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], 1, 1)
+        handleExpressionStatement(;)
+        handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got ')'., null, {token: )}], ), ))
+        handleIdentifier(, expression)
+        handleNoTypeArguments())
+        handleNoArguments())
+        handleSend(, ))
+        handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], ), ))
+        handleExpressionStatement(;)
+        handleRecoverableError(Message[UnexpectedToken, Unexpected token ';'., null, {token: ;}], ), ))
+        handleRecoverableError(UnsupportedPrefixPlus, +, +)
+        handleIdentifier(, expression)
+        handleNoTypeArguments(+)
+        handleNoArguments(+)
+        handleSend(, +)
+        beginBinaryExpression(+)
+        handleLiteralInt(1)
+        endBinaryExpression(+)
+        handleExpressionStatement(;)
+      endBlockFunctionBody(6, {, })
+    endTopLevelMethod(int, null, })
+  endTopLevelDeclaration(int)
+  beginMetadataStar(int)
+  endMetadataStar(0)
+  beginTopLevelMember(int)
+    beginTopLevelMethod(}, null)
+      handleIdentifier(int, typeReference)
+      handleNoTypeArguments(while)
+      handleType(int, null)
+      handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'while'., null, {token: while}], while, while)
+      handleIdentifier(while, topLevelFunctionDeclaration)
+      handleNoTypeVariables(()
+      beginFormalParameters((, MemberKind.TopLevelMethod)
+        beginMetadataStar(int)
+        endMetadataStar(0)
+        beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+          handleIdentifier(int, typeReference)
+          handleNoTypeArguments(x)
+          handleType(int, null)
+          handleIdentifier(x, formalParameterDeclaration)
+          handleFormalParameterWithoutValue())
+        endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+      endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
+      handleAsyncModifier(null, null)
+      beginBlockFunctionBody({)
+        beginIfStatement(if)
+          handleIdentifier(x, expression)
+          handleNoTypeArguments(==)
+          handleNoArguments(==)
+          handleSend(x, ==)
+          beginBinaryExpression(==)
+          handleLiteralInt(0)
+          endBinaryExpression(==)
+          handleParenthesizedCondition(()
+          beginThenStatement(return)
+            beginReturnStatement(return)
+              handleLiteralInt(42)
+            endReturnStatement(true, return, ;)
+          endThenStatement(;)
+        endIfStatement(if, null)
+        beginReturnStatement(return)
+          handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'while'., null, {token: while}], while, while)
+          handleIdentifier(, expression)
+          handleNoTypeArguments(while)
+          handleNoArguments(while)
+          handleSend(, while)
+          handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], while, while)
+        endReturnStatement(true, return, ;)
+        beginWhileStatement(while)
+          handleIdentifier(x, expression)
+          handleNoTypeArguments(-)
+          handleNoArguments(-)
+          handleSend(x, -)
+          beginBinaryExpression(-)
+          handleLiteralInt(1)
+          endBinaryExpression(-)
+          handleParenthesizedCondition(()
+          beginWhileStatementBody(+)
+            handleRecoverableError(UnsupportedPrefixPlus, +, +)
+            handleIdentifier(, expression)
+            handleNoTypeArguments(+)
+            handleNoArguments(+)
+            handleSend(, +)
+            beginBinaryExpression(+)
+            handleLiteralInt(1)
+            endBinaryExpression(+)
+            handleExpressionStatement(;)
+          endWhileStatementBody(})
+        endWhileStatement(while, })
+      endBlockFunctionBody(3, {, })
+    endTopLevelMethod(int, null, })
+  endTopLevelDeclaration(int)
+  beginMetadataStar(int)
+  endMetadataStar(0)
+  beginTopLevelMember(int)
+    beginTopLevelMethod(}, null)
+      handleIdentifier(int, typeReference)
+      handleNoTypeArguments(with)
+      handleType(int, null)
+      handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'with'., null, {token: with}], with, with)
+      handleIdentifier(with, topLevelFunctionDeclaration)
+      handleNoTypeVariables(()
+      beginFormalParameters((, MemberKind.TopLevelMethod)
+        beginMetadataStar(int)
+        endMetadataStar(0)
+        beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+          handleIdentifier(int, typeReference)
+          handleNoTypeArguments(x)
+          handleType(int, null)
+          handleIdentifier(x, formalParameterDeclaration)
+          handleFormalParameterWithoutValue())
+        endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+      endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
+      handleAsyncModifier(null, null)
+      beginBlockFunctionBody({)
+        beginIfStatement(if)
+          handleIdentifier(x, expression)
+          handleNoTypeArguments(==)
+          handleNoArguments(==)
+          handleSend(x, ==)
+          beginBinaryExpression(==)
+          handleLiteralInt(0)
+          endBinaryExpression(==)
+          handleParenthesizedCondition(()
+          beginThenStatement(return)
+            beginReturnStatement(return)
+              handleLiteralInt(42)
+            endReturnStatement(true, return, ;)
+          endThenStatement(;)
+        endIfStatement(if, null)
+        beginReturnStatement(return)
+          handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'with'., null, {token: with}], with, with)
+          handleIdentifier(with, expression)
+          handleNoTypeArguments(()
+          beginArguments(()
+            handleIdentifier(x, expression)
+            handleNoTypeArguments(-)
+            handleNoArguments(-)
+            handleSend(x, -)
+            beginBinaryExpression(-)
+            handleLiteralInt(1)
+            endBinaryExpression(-)
+          endArguments(1, (, ))
+          handleSend(with, +)
+          beginBinaryExpression(+)
+          handleLiteralInt(1)
+          endBinaryExpression(+)
+        endReturnStatement(true, return, ;)
+      endBlockFunctionBody(2, {, })
+    endTopLevelMethod(int, null, })
+  endTopLevelDeclaration()
+endCompilationUnit(33, )
diff --git a/pkg/front_end/parser_testcases/error_recovery/reserved_words_top_level_methods.dart.intertwined.expect b/pkg/front_end/parser_testcases/error_recovery/reserved_words_top_level_methods.dart.intertwined.expect
index 90e26b1..3325638 100644
--- a/pkg/front_end/parser_testcases/error_recovery/reserved_words_top_level_methods.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/error_recovery/reserved_words_top_level_methods.dart.intertwined.expect
@@ -8,30 +8,14 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl()
       listener: beginTopLevelMember(int)
-      parseFields(, null, null, null, null, null, , Instance of 'NoType', int, DeclarationKind.TopLevel, null)
-        reportRecoverableError(int, MissingConstFinalVarOrType)
-          listener: handleRecoverableError(MissingConstFinalVarOrType, int, int)
-        listener: handleNoType()
-        ensureIdentifier(, topLevelVariableDeclaration)
-          listener: handleIdentifier(int, topLevelVariableDeclaration)
-        parseFieldInitializerOpt(int, int, null, null, DeclarationKind.TopLevel, null)
-          listener: handleNoFieldInitializer(assert)
-        ensureSemicolon(int)
-          reportRecoverableError(int, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
-            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
-          rewriter()
-        listener: endTopLevelFields(null, null, null, null, 1, int, ;)
-  listener: endTopLevelDeclaration(assert)
-  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
-    parseMetadataStar(;)
-      listener: beginMetadataStar(assert)
-      listener: endMetadataStar(0)
-    parseTopLevelMemberImpl(;)
-      listener: beginTopLevelMember(assert)
-      parseTopLevelMethod(;, null, ;, Instance of 'NoType', null, assert)
-        listener: beginTopLevelMethod(;, null)
-        listener: handleNoType(;)
-        ensureIdentifier(;, topLevelFunctionDeclaration)
+      isReservedKeyword(assert)
+      indicatesMethodOrField(()
+      parseTopLevelMethod(, null, , Instance of 'SimpleType', null, assert, true)
+        listener: beginTopLevelMethod(, null)
+        listener: handleIdentifier(int, typeReference)
+        listener: handleNoTypeArguments(assert)
+        listener: handleType(int, null)
+        ensureIdentifierPotentiallyRecovered(int, topLevelFunctionDeclaration, true)
           reportRecoverableErrorWithToken(assert, Instance of 'Template<(Token) => Message>')
             listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'assert'., null, {token: assert}], assert, assert)
           listener: handleIdentifier(assert, topLevelFunctionDeclaration)
@@ -149,7 +133,7 @@
                 inGenerator()
           notEofOrValue(}, })
           listener: endBlockFunctionBody(2, {, })
-        listener: endTopLevelMethod(assert, null, })
+        listener: endTopLevelMethod(int, null, })
   listener: endTopLevelDeclaration(int)
   parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
     parseMetadataStar(})
@@ -157,30 +141,14 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl(})
       listener: beginTopLevelMember(int)
-      parseFields(}, null, null, null, null, null, }, Instance of 'NoType', int, DeclarationKind.TopLevel, null)
-        reportRecoverableError(int, MissingConstFinalVarOrType)
-          listener: handleRecoverableError(MissingConstFinalVarOrType, int, int)
-        listener: handleNoType(})
-        ensureIdentifier(}, topLevelVariableDeclaration)
-          listener: handleIdentifier(int, topLevelVariableDeclaration)
-        parseFieldInitializerOpt(int, int, null, null, DeclarationKind.TopLevel, null)
-          listener: handleNoFieldInitializer(break)
-        ensureSemicolon(int)
-          reportRecoverableError(int, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
-            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
-          rewriter()
-        listener: endTopLevelFields(null, null, null, null, 1, int, ;)
-  listener: endTopLevelDeclaration(break)
-  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
-    parseMetadataStar(;)
-      listener: beginMetadataStar(break)
-      listener: endMetadataStar(0)
-    parseTopLevelMemberImpl(;)
-      listener: beginTopLevelMember(break)
-      parseTopLevelMethod(;, null, ;, Instance of 'NoType', null, break)
-        listener: beginTopLevelMethod(;, null)
-        listener: handleNoType(;)
-        ensureIdentifier(;, topLevelFunctionDeclaration)
+      isReservedKeyword(break)
+      indicatesMethodOrField(()
+      parseTopLevelMethod(}, null, }, Instance of 'SimpleType', null, break, true)
+        listener: beginTopLevelMethod(}, null)
+        listener: handleIdentifier(int, typeReference)
+        listener: handleNoTypeArguments(break)
+        listener: handleType(int, null)
+        ensureIdentifierPotentiallyRecovered(int, topLevelFunctionDeclaration, true)
           reportRecoverableErrorWithToken(break, Instance of 'Template<(Token) => Message>')
             listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'break'., null, {token: break}], break, break)
           listener: handleIdentifier(break, topLevelFunctionDeclaration)
@@ -337,7 +305,7 @@
                     listener: handleExpressionStatement(;)
           notEofOrValue(}, })
           listener: endBlockFunctionBody(4, {, })
-        listener: endTopLevelMethod(break, null, })
+        listener: endTopLevelMethod(int, null, })
   listener: endTopLevelDeclaration(int)
   parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
     parseMetadataStar(})
@@ -345,30 +313,14 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl(})
       listener: beginTopLevelMember(int)
-      parseFields(}, null, null, null, null, null, }, Instance of 'NoType', int, DeclarationKind.TopLevel, null)
-        reportRecoverableError(int, MissingConstFinalVarOrType)
-          listener: handleRecoverableError(MissingConstFinalVarOrType, int, int)
-        listener: handleNoType(})
-        ensureIdentifier(}, topLevelVariableDeclaration)
-          listener: handleIdentifier(int, topLevelVariableDeclaration)
-        parseFieldInitializerOpt(int, int, null, null, DeclarationKind.TopLevel, null)
-          listener: handleNoFieldInitializer(case)
-        ensureSemicolon(int)
-          reportRecoverableError(int, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
-            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
-          rewriter()
-        listener: endTopLevelFields(null, null, null, null, 1, int, ;)
-  listener: endTopLevelDeclaration(case)
-  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
-    parseMetadataStar(;)
-      listener: beginMetadataStar(case)
-      listener: endMetadataStar(0)
-    parseTopLevelMemberImpl(;)
-      listener: beginTopLevelMember(case)
-      parseTopLevelMethod(;, null, ;, Instance of 'NoType', null, case)
-        listener: beginTopLevelMethod(;, null)
-        listener: handleNoType(;)
-        ensureIdentifier(;, topLevelFunctionDeclaration)
+      isReservedKeyword(case)
+      indicatesMethodOrField(()
+      parseTopLevelMethod(}, null, }, Instance of 'SimpleType', null, case, true)
+        listener: beginTopLevelMethod(}, null)
+        listener: handleIdentifier(int, typeReference)
+        listener: handleNoTypeArguments(case)
+        listener: handleType(int, null)
+        ensureIdentifierPotentiallyRecovered(int, topLevelFunctionDeclaration, true)
           reportRecoverableErrorWithToken(case, Instance of 'Template<(Token) => Message>')
             listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'case'., null, {token: case}], case, case)
           listener: handleIdentifier(case, topLevelFunctionDeclaration)
@@ -493,7 +445,7 @@
                 inGenerator()
           notEofOrValue(}, })
           listener: endBlockFunctionBody(2, {, })
-        listener: endTopLevelMethod(case, null, })
+        listener: endTopLevelMethod(int, null, })
   listener: endTopLevelDeclaration(int)
   parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
     parseMetadataStar(})
@@ -501,30 +453,14 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl(})
       listener: beginTopLevelMember(int)
-      parseFields(}, null, null, null, null, null, }, Instance of 'NoType', int, DeclarationKind.TopLevel, null)
-        reportRecoverableError(int, MissingConstFinalVarOrType)
-          listener: handleRecoverableError(MissingConstFinalVarOrType, int, int)
-        listener: handleNoType(})
-        ensureIdentifier(}, topLevelVariableDeclaration)
-          listener: handleIdentifier(int, topLevelVariableDeclaration)
-        parseFieldInitializerOpt(int, int, null, null, DeclarationKind.TopLevel, null)
-          listener: handleNoFieldInitializer(catch)
-        ensureSemicolon(int)
-          reportRecoverableError(int, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
-            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
-          rewriter()
-        listener: endTopLevelFields(null, null, null, null, 1, int, ;)
-  listener: endTopLevelDeclaration(catch)
-  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
-    parseMetadataStar(;)
-      listener: beginMetadataStar(catch)
-      listener: endMetadataStar(0)
-    parseTopLevelMemberImpl(;)
-      listener: beginTopLevelMember(catch)
-      parseTopLevelMethod(;, null, ;, Instance of 'NoType', null, catch)
-        listener: beginTopLevelMethod(;, null)
-        listener: handleNoType(;)
-        ensureIdentifier(;, topLevelFunctionDeclaration)
+      isReservedKeyword(catch)
+      indicatesMethodOrField(()
+      parseTopLevelMethod(}, null, }, Instance of 'SimpleType', null, catch, true)
+        listener: beginTopLevelMethod(}, null)
+        listener: handleIdentifier(int, typeReference)
+        listener: handleNoTypeArguments(catch)
+        listener: handleType(int, null)
+        ensureIdentifierPotentiallyRecovered(int, topLevelFunctionDeclaration, true)
           reportRecoverableErrorWithToken(catch, Instance of 'Template<(Token) => Message>')
             listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'catch'., null, {token: catch}], catch, catch)
           listener: handleIdentifier(catch, topLevelFunctionDeclaration)
@@ -649,7 +585,7 @@
                 inGenerator()
           notEofOrValue(}, })
           listener: endBlockFunctionBody(2, {, })
-        listener: endTopLevelMethod(catch, null, })
+        listener: endTopLevelMethod(int, null, })
   listener: endTopLevelDeclaration(int)
   parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
     parseMetadataStar(})
@@ -657,113 +593,41 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl(})
       listener: beginTopLevelMember(int)
-      parseFields(}, null, null, null, null, null, }, Instance of 'NoType', int, DeclarationKind.TopLevel, null)
-        reportRecoverableError(int, MissingConstFinalVarOrType)
-          listener: handleRecoverableError(MissingConstFinalVarOrType, int, int)
-        listener: handleNoType(})
-        ensureIdentifier(}, topLevelVariableDeclaration)
-          listener: handleIdentifier(int, topLevelVariableDeclaration)
-        parseFieldInitializerOpt(int, int, null, null, DeclarationKind.TopLevel, null)
-          listener: handleNoFieldInitializer(class)
-        ensureSemicolon(int)
-          reportRecoverableError(int, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
-            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
-          rewriter()
-        listener: endTopLevelFields(null, null, null, null, 1, int, ;)
-  listener: endTopLevelDeclaration(class)
-  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
-    parseMetadataStar(;)
-      listener: beginMetadataStar(class)
-      listener: endMetadataStar(0)
-    parseTopLevelKeywordDeclaration(;, class, Instance of 'DirectiveContext')
-      parseClassDeclarationModifiers(;, class)
-      parseClassOrNamedMixinApplication(null, class)
-        listener: beginClassOrNamedMixinApplicationPrelude(class)
-        ensureIdentifier(class, classOrMixinDeclaration)
-          reportRecoverableErrorWithToken((, Instance of 'Template<(Token) => Message>')
-            listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}], (, ()
-          rewriter()
-          listener: handleIdentifier(, classOrMixinDeclaration)
-        listener: handleNoTypeVariables(int)
-        listener: beginClassDeclaration(class, null, )
-        parseClass(, class, class, )
-          parseClassHeaderOpt(, class, class)
-            parseClassExtendsOpt()
-              listener: handleNoType()
-              listener: handleClassExtends(null)
-            parseWithClauseOpt()
-              listener: handleClassNoWithClause()
-            parseClassOrMixinImplementsOpt()
-              listener: handleClassOrMixinImplements(null, 0)
-            listener: handleClassHeader(class, class, null)
-          parseClassHeaderRecovery(, class, class)
-            parseClassHeaderOpt(, class, class)
-              parseClassExtendsOpt()
-              parseWithClauseOpt()
-              parseClassOrMixinImplementsOpt()
-            skipUnexpectedTokenOpt(, [extends, with, implements, {])
-            parseClassExtendsOpt()
-              listener: handleNoType()
-              listener: handleClassExtends(null)
-            parseWithClauseOpt()
-              listener: handleClassNoWithClause()
-            parseClassOrMixinImplementsOpt()
-              listener: handleClassOrMixinImplements(null, 0)
-            listener: handleRecoverClassHeader()
-          ensureBlock(, null, class declaration)
-            reportRecoverableError(, Message[ExpectedClassOrMixinBody, A class declaration must have a body, even if it is empty., Try adding an empty body., {string: class declaration}])
-              listener: handleRecoverableError(Message[ExpectedClassOrMixinBody, A class declaration must have a body, even if it is empty., Try adding an empty body., {string: class declaration}], int, int)
-            insertBlock()
-              rewriter()
-              rewriter()
-          parseClassOrMixinOrExtensionBody(, DeclarationKind.Class, )
-            listener: beginClassOrMixinBody(DeclarationKind.Class, {)
-            notEofOrValue(}, })
-            listener: endClassOrMixinBody(DeclarationKind.Class, 0, {, })
-          listener: endClassDeclaration(class, })
-  listener: endTopLevelDeclaration(int)
-  parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
-    parseMetadataStar(})
-      listener: beginMetadataStar(int)
-      listener: endMetadataStar(0)
-    parseTopLevelMemberImpl(})
-      listener: beginTopLevelMember(int)
-      parseFields(}, null, null, null, null, null, }, Instance of 'SimpleType', x, DeclarationKind.TopLevel, null)
+      isReservedKeyword(class)
+      indicatesMethodOrField(()
+      parseTopLevelMethod(}, null, }, Instance of 'SimpleType', null, class, true)
+        listener: beginTopLevelMethod(}, null)
         listener: handleIdentifier(int, typeReference)
-        listener: handleNoTypeArguments(x)
+        listener: handleNoTypeArguments(class)
         listener: handleType(int, null)
-        ensureIdentifier(int, topLevelVariableDeclaration)
-          listener: handleIdentifier(x, topLevelVariableDeclaration)
-        parseFieldInitializerOpt(x, x, null, null, DeclarationKind.TopLevel, null)
-          listener: handleNoFieldInitializer())
-        ensureSemicolon(x)
-          reportRecoverableError(x, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
-            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], x, x)
-          rewriter()
-        listener: endTopLevelFields(null, null, null, null, 1, int, ;)
-  listener: endTopLevelDeclaration())
-  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
-    parseMetadataStar(;)
-      listener: beginMetadataStar())
-      listener: endMetadataStar(0)
-    listener: beginTopLevelMember())
-    parseInvalidTopLevelDeclaration(;)
-      reportRecoverableErrorWithToken(), Instance of 'Template<(Token) => Message>')
-        listener: handleRecoverableError(Message[ExpectedDeclaration, Expected a declaration, but got ')'., null, {token: )}], ), ))
-      listener: handleInvalidTopLevelDeclaration())
-  listener: endTopLevelDeclaration({)
-  parseTopLevelDeclarationImpl(), Instance of 'DirectiveContext')
-    parseMetadataStar())
-      listener: beginMetadataStar({)
-      listener: endMetadataStar(0)
-    listener: beginTopLevelMember({)
-    parseInvalidTopLevelDeclaration())
-      reportRecoverableErrorWithToken({, Instance of 'Template<(Token) => Message>')
-        listener: handleRecoverableError(Message[ExpectedDeclaration, Expected a declaration, but got '{'., null, {token: {}], {, {)
-      parseInvalidBlock())
-        parseBlock(), BlockKind(invalid))
-          ensureBlock(), null, null)
-          listener: beginBlock({, BlockKind(invalid))
+        ensureIdentifierPotentiallyRecovered(int, topLevelFunctionDeclaration, true)
+          reportRecoverableErrorWithToken(class, Instance of 'Template<(Token) => Message>')
+            listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'class'., null, {token: class}], class, class)
+          listener: handleIdentifier(class, topLevelFunctionDeclaration)
+        parseMethodTypeVar(class)
+          listener: handleNoTypeVariables(()
+        parseGetterOrFormalParameters(class, class, false, MemberKind.TopLevelMethod)
+          parseFormalParameters(class, MemberKind.TopLevelMethod)
+            parseFormalParametersRest((, MemberKind.TopLevelMethod)
+              listener: beginFormalParameters((, MemberKind.TopLevelMethod)
+              parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+                parseMetadataStar(()
+                  listener: beginMetadataStar(int)
+                  listener: endMetadataStar(0)
+                listener: beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+                listener: handleIdentifier(int, typeReference)
+                listener: handleNoTypeArguments(x)
+                listener: handleType(int, null)
+                ensureIdentifier(int, formalParameterDeclaration)
+                  listener: handleIdentifier(x, formalParameterDeclaration)
+                listener: handleFormalParameterWithoutValue())
+                listener: endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+              listener: endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
+        parseAsyncModifierOpt())
+          listener: handleAsyncModifier(null, null)
+          inPlainSync()
+        parseFunctionBody(), false, false)
+          listener: beginBlockFunctionBody({)
           notEofOrValue(}, if)
           parseStatement({)
             parseStatementX({)
@@ -821,6 +685,7 @@
                         parseSend(return, expression)
                           ensureIdentifier(return, expression)
                             reportRecoverableErrorWithToken(class, Instance of 'Template<(Token) => Message>')
+                              listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'class'., null, {token: class}], class, class)
                             listener: handleIdentifier(class, expression)
                           listener: handleNoTypeArguments(()
                           parseArgumentsOpt(class)
@@ -859,9 +724,8 @@
                 listener: endReturnStatement(true, return, ;)
                 inGenerator()
           notEofOrValue(}, })
-          listener: endBlock(2, {, }, BlockKind(invalid))
-        listener: handleInvalidTopLevelBlock({)
-      listener: handleInvalidTopLevelDeclaration(})
+          listener: endBlockFunctionBody(2, {, })
+        listener: endTopLevelMethod(int, null, })
   listener: endTopLevelDeclaration(int)
   parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
     parseMetadataStar(})
@@ -869,41 +733,21 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl(})
       listener: beginTopLevelMember(int)
-      parseFields(}, null, null, null, null, null, }, Instance of 'NoType', int, DeclarationKind.TopLevel, null)
-        reportRecoverableError(int, MissingConstFinalVarOrType)
-          listener: handleRecoverableError(MissingConstFinalVarOrType, int, int)
-        listener: handleNoType(})
-        ensureIdentifier(}, topLevelVariableDeclaration)
-          listener: handleIdentifier(int, topLevelVariableDeclaration)
-        parseFieldInitializerOpt(int, int, null, null, DeclarationKind.TopLevel, null)
-          listener: handleNoFieldInitializer(const)
-        ensureSemicolon(int)
-          reportRecoverableError(int, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
-            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
-          rewriter()
-        listener: endTopLevelFields(null, null, null, null, 1, int, ;)
-  listener: endTopLevelDeclaration(const)
-  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
-    parseMetadataStar(;)
-      listener: beginMetadataStar(const)
-      listener: endMetadataStar(0)
-    parseTopLevelMemberImpl(;)
-      listener: beginTopLevelMember(const)
-      insertSyntheticIdentifier(const, methodDeclaration, message: null, messageOnToken: null)
-        reportRecoverableError((, Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}])
-          listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}], (, ()
-        rewriter()
-      reportRecoverableErrorWithToken(const, Instance of 'Template<(Token) => Message>')
-        listener: handleRecoverableError(Message[ExtraneousModifier, Can't have modifier 'const' here., Try removing 'const'., {token: const}], const, const)
-      parseTopLevelMethod(;, null, const, Instance of 'NoType', null, )
-        listener: beginTopLevelMethod(;, null)
-        listener: handleNoType(const)
-        ensureIdentifier(const, topLevelFunctionDeclaration)
-          listener: handleIdentifier(, topLevelFunctionDeclaration)
-        parseMethodTypeVar()
+      isReservedKeyword(const)
+      indicatesMethodOrField(()
+      parseTopLevelMethod(}, null, }, Instance of 'SimpleType', null, const, true)
+        listener: beginTopLevelMethod(}, null)
+        listener: handleIdentifier(int, typeReference)
+        listener: handleNoTypeArguments(const)
+        listener: handleType(int, null)
+        ensureIdentifierPotentiallyRecovered(int, topLevelFunctionDeclaration, true)
+          reportRecoverableErrorWithToken(const, Instance of 'Template<(Token) => Message>')
+            listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'const'., null, {token: const}], const, const)
+          listener: handleIdentifier(const, topLevelFunctionDeclaration)
+        parseMethodTypeVar(const)
           listener: handleNoTypeVariables(()
-        parseGetterOrFormalParameters(, , false, MemberKind.TopLevelMethod)
-          parseFormalParameters(, MemberKind.TopLevelMethod)
+        parseGetterOrFormalParameters(const, const, false, MemberKind.TopLevelMethod)
+          parseFormalParameters(const, MemberKind.TopLevelMethod)
             parseFormalParametersRest((, MemberKind.TopLevelMethod)
               listener: beginFormalParameters((, MemberKind.TopLevelMethod)
               parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
@@ -1027,7 +871,7 @@
                 inGenerator()
           notEofOrValue(}, })
           listener: endBlockFunctionBody(2, {, })
-        listener: endTopLevelMethod(const, null, })
+        listener: endTopLevelMethod(int, null, })
   listener: endTopLevelDeclaration(int)
   parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
     parseMetadataStar(})
@@ -1035,30 +879,14 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl(})
       listener: beginTopLevelMember(int)
-      parseFields(}, null, null, null, null, null, }, Instance of 'NoType', int, DeclarationKind.TopLevel, null)
-        reportRecoverableError(int, MissingConstFinalVarOrType)
-          listener: handleRecoverableError(MissingConstFinalVarOrType, int, int)
-        listener: handleNoType(})
-        ensureIdentifier(}, topLevelVariableDeclaration)
-          listener: handleIdentifier(int, topLevelVariableDeclaration)
-        parseFieldInitializerOpt(int, int, null, null, DeclarationKind.TopLevel, null)
-          listener: handleNoFieldInitializer(continue)
-        ensureSemicolon(int)
-          reportRecoverableError(int, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
-            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
-          rewriter()
-        listener: endTopLevelFields(null, null, null, null, 1, int, ;)
-  listener: endTopLevelDeclaration(continue)
-  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
-    parseMetadataStar(;)
-      listener: beginMetadataStar(continue)
-      listener: endMetadataStar(0)
-    parseTopLevelMemberImpl(;)
-      listener: beginTopLevelMember(continue)
-      parseTopLevelMethod(;, null, ;, Instance of 'NoType', null, continue)
-        listener: beginTopLevelMethod(;, null)
-        listener: handleNoType(;)
-        ensureIdentifier(;, topLevelFunctionDeclaration)
+      isReservedKeyword(continue)
+      indicatesMethodOrField(()
+      parseTopLevelMethod(}, null, }, Instance of 'SimpleType', null, continue, true)
+        listener: beginTopLevelMethod(}, null)
+        listener: handleIdentifier(int, typeReference)
+        listener: handleNoTypeArguments(continue)
+        listener: handleType(int, null)
+        ensureIdentifierPotentiallyRecovered(int, topLevelFunctionDeclaration, true)
           reportRecoverableErrorWithToken(continue, Instance of 'Template<(Token) => Message>')
             listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'continue'., null, {token: continue}], continue, continue)
           listener: handleIdentifier(continue, topLevelFunctionDeclaration)
@@ -1215,7 +1043,7 @@
                     listener: handleExpressionStatement(;)
           notEofOrValue(}, })
           listener: endBlockFunctionBody(4, {, })
-        listener: endTopLevelMethod(continue, null, })
+        listener: endTopLevelMethod(int, null, })
   listener: endTopLevelDeclaration(int)
   parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
     parseMetadataStar(})
@@ -1223,30 +1051,14 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl(})
       listener: beginTopLevelMember(int)
-      parseFields(}, null, null, null, null, null, }, Instance of 'NoType', int, DeclarationKind.TopLevel, null)
-        reportRecoverableError(int, MissingConstFinalVarOrType)
-          listener: handleRecoverableError(MissingConstFinalVarOrType, int, int)
-        listener: handleNoType(})
-        ensureIdentifier(}, topLevelVariableDeclaration)
-          listener: handleIdentifier(int, topLevelVariableDeclaration)
-        parseFieldInitializerOpt(int, int, null, null, DeclarationKind.TopLevel, null)
-          listener: handleNoFieldInitializer(default)
-        ensureSemicolon(int)
-          reportRecoverableError(int, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
-            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
-          rewriter()
-        listener: endTopLevelFields(null, null, null, null, 1, int, ;)
-  listener: endTopLevelDeclaration(default)
-  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
-    parseMetadataStar(;)
-      listener: beginMetadataStar(default)
-      listener: endMetadataStar(0)
-    parseTopLevelMemberImpl(;)
-      listener: beginTopLevelMember(default)
-      parseTopLevelMethod(;, null, ;, Instance of 'NoType', null, default)
-        listener: beginTopLevelMethod(;, null)
-        listener: handleNoType(;)
-        ensureIdentifier(;, topLevelFunctionDeclaration)
+      isReservedKeyword(default)
+      indicatesMethodOrField(()
+      parseTopLevelMethod(}, null, }, Instance of 'SimpleType', null, default, true)
+        listener: beginTopLevelMethod(}, null)
+        listener: handleIdentifier(int, typeReference)
+        listener: handleNoTypeArguments(default)
+        listener: handleType(int, null)
+        ensureIdentifierPotentiallyRecovered(int, topLevelFunctionDeclaration, true)
           reportRecoverableErrorWithToken(default, Instance of 'Template<(Token) => Message>')
             listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'default'., null, {token: default}], default, default)
           listener: handleIdentifier(default, topLevelFunctionDeclaration)
@@ -1371,7 +1183,7 @@
                 inGenerator()
           notEofOrValue(}, })
           listener: endBlockFunctionBody(2, {, })
-        listener: endTopLevelMethod(default, null, })
+        listener: endTopLevelMethod(int, null, })
   listener: endTopLevelDeclaration(int)
   parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
     parseMetadataStar(})
@@ -1379,30 +1191,14 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl(})
       listener: beginTopLevelMember(int)
-      parseFields(}, null, null, null, null, null, }, Instance of 'NoType', int, DeclarationKind.TopLevel, null)
-        reportRecoverableError(int, MissingConstFinalVarOrType)
-          listener: handleRecoverableError(MissingConstFinalVarOrType, int, int)
-        listener: handleNoType(})
-        ensureIdentifier(}, topLevelVariableDeclaration)
-          listener: handleIdentifier(int, topLevelVariableDeclaration)
-        parseFieldInitializerOpt(int, int, null, null, DeclarationKind.TopLevel, null)
-          listener: handleNoFieldInitializer(do)
-        ensureSemicolon(int)
-          reportRecoverableError(int, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
-            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
-          rewriter()
-        listener: endTopLevelFields(null, null, null, null, 1, int, ;)
-  listener: endTopLevelDeclaration(do)
-  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
-    parseMetadataStar(;)
-      listener: beginMetadataStar(do)
-      listener: endMetadataStar(0)
-    parseTopLevelMemberImpl(;)
-      listener: beginTopLevelMember(do)
-      parseTopLevelMethod(;, null, ;, Instance of 'NoType', null, do)
-        listener: beginTopLevelMethod(;, null)
-        listener: handleNoType(;)
-        ensureIdentifier(;, topLevelFunctionDeclaration)
+      isReservedKeyword(do)
+      indicatesMethodOrField(()
+      parseTopLevelMethod(}, null, }, Instance of 'SimpleType', null, do, true)
+        listener: beginTopLevelMethod(}, null)
+        listener: handleIdentifier(int, typeReference)
+        listener: handleNoTypeArguments(do)
+        listener: handleType(int, null)
+        ensureIdentifierPotentiallyRecovered(int, topLevelFunctionDeclaration, true)
           reportRecoverableErrorWithToken(do, Instance of 'Template<(Token) => Message>')
             listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'do'., null, {token: do}], do, do)
           listener: handleIdentifier(do, topLevelFunctionDeclaration)
@@ -1582,7 +1378,7 @@
                 listener: endDoWhileStatement(do, while, ;)
           notEofOrValue(}, })
           listener: endBlockFunctionBody(3, {, })
-        listener: endTopLevelMethod(do, null, })
+        listener: endTopLevelMethod(int, null, })
   listener: endTopLevelDeclaration(int)
   parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
     parseMetadataStar(})
@@ -1590,30 +1386,14 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl(})
       listener: beginTopLevelMember(int)
-      parseFields(}, null, null, null, null, null, }, Instance of 'NoType', int, DeclarationKind.TopLevel, null)
-        reportRecoverableError(int, MissingConstFinalVarOrType)
-          listener: handleRecoverableError(MissingConstFinalVarOrType, int, int)
-        listener: handleNoType(})
-        ensureIdentifier(}, topLevelVariableDeclaration)
-          listener: handleIdentifier(int, topLevelVariableDeclaration)
-        parseFieldInitializerOpt(int, int, null, null, DeclarationKind.TopLevel, null)
-          listener: handleNoFieldInitializer(else)
-        ensureSemicolon(int)
-          reportRecoverableError(int, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
-            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
-          rewriter()
-        listener: endTopLevelFields(null, null, null, null, 1, int, ;)
-  listener: endTopLevelDeclaration(else)
-  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
-    parseMetadataStar(;)
-      listener: beginMetadataStar(else)
-      listener: endMetadataStar(0)
-    parseTopLevelMemberImpl(;)
-      listener: beginTopLevelMember(else)
-      parseTopLevelMethod(;, null, ;, Instance of 'NoType', null, else)
-        listener: beginTopLevelMethod(;, null)
-        listener: handleNoType(;)
-        ensureIdentifier(;, topLevelFunctionDeclaration)
+      isReservedKeyword(else)
+      indicatesMethodOrField(()
+      parseTopLevelMethod(}, null, }, Instance of 'SimpleType', null, else, true)
+        listener: beginTopLevelMethod(}, null)
+        listener: handleIdentifier(int, typeReference)
+        listener: handleNoTypeArguments(else)
+        listener: handleType(int, null)
+        ensureIdentifierPotentiallyRecovered(int, topLevelFunctionDeclaration, true)
           reportRecoverableErrorWithToken(else, Instance of 'Template<(Token) => Message>')
             listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'else'., null, {token: else}], else, else)
           listener: handleIdentifier(else, topLevelFunctionDeclaration)
@@ -1787,7 +1567,7 @@
                     listener: handleExpressionStatement(;)
           notEofOrValue(}, })
           listener: endBlockFunctionBody(4, {, })
-        listener: endTopLevelMethod(else, null, })
+        listener: endTopLevelMethod(int, null, })
   listener: endTopLevelDeclaration(int)
   parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
     parseMetadataStar(})
@@ -1795,83 +1575,41 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl(})
       listener: beginTopLevelMember(int)
-      parseFields(}, null, null, null, null, null, }, Instance of 'NoType', int, DeclarationKind.TopLevel, null)
-        reportRecoverableError(int, MissingConstFinalVarOrType)
-          listener: handleRecoverableError(MissingConstFinalVarOrType, int, int)
-        listener: handleNoType(})
-        ensureIdentifier(}, topLevelVariableDeclaration)
-          listener: handleIdentifier(int, topLevelVariableDeclaration)
-        parseFieldInitializerOpt(int, int, null, null, DeclarationKind.TopLevel, null)
-          listener: handleNoFieldInitializer(enum)
-        ensureSemicolon(int)
-          reportRecoverableError(int, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
-            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
-          rewriter()
-        listener: endTopLevelFields(null, null, null, null, 1, int, ;)
-  listener: endTopLevelDeclaration(enum)
-  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
-    parseMetadataStar(;)
-      listener: beginMetadataStar(enum)
-      listener: endMetadataStar(0)
-    parseTopLevelKeywordDeclaration(;, enum, Instance of 'DirectiveContext')
-      parseTopLevelKeywordModifiers(;, enum)
-      parseEnum(enum)
-        listener: beginEnum(enum)
-        ensureIdentifier(enum, enumDeclaration)
-          reportRecoverableErrorWithToken((, Instance of 'Template<(Token) => Message>')
-            listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}], (, ()
-          rewriter()
-          listener: handleIdentifier(, enumDeclaration)
-        ensureBlock(, Instance of 'Template<(Token) => Message>', null)
-          reportRecoverableError(int, Message[ExpectedEnumBody, Expected a enum body, but got 'int'., An enum definition must have a body with at least one constant name., {token: int}])
-            listener: handleRecoverableError(Message[ExpectedEnumBody, Expected a enum body, but got 'int'., An enum definition must have a body with at least one constant name., {token: int}], int, int)
-          insertBlock()
-            rewriter()
-            rewriter()
-        listener: endEnum(enum, {, 0)
-  listener: endTopLevelDeclaration(int)
-  parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
-    parseMetadataStar(})
-      listener: beginMetadataStar(int)
-      listener: endMetadataStar(0)
-    parseTopLevelMemberImpl(})
-      listener: beginTopLevelMember(int)
-      parseFields(}, null, null, null, null, null, }, Instance of 'SimpleType', x, DeclarationKind.TopLevel, null)
+      isReservedKeyword(enum)
+      indicatesMethodOrField(()
+      parseTopLevelMethod(}, null, }, Instance of 'SimpleType', null, enum, true)
+        listener: beginTopLevelMethod(}, null)
         listener: handleIdentifier(int, typeReference)
-        listener: handleNoTypeArguments(x)
+        listener: handleNoTypeArguments(enum)
         listener: handleType(int, null)
-        ensureIdentifier(int, topLevelVariableDeclaration)
-          listener: handleIdentifier(x, topLevelVariableDeclaration)
-        parseFieldInitializerOpt(x, x, null, null, DeclarationKind.TopLevel, null)
-          listener: handleNoFieldInitializer())
-        ensureSemicolon(x)
-          reportRecoverableError(x, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
-            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], x, x)
-          rewriter()
-        listener: endTopLevelFields(null, null, null, null, 1, int, ;)
-  listener: endTopLevelDeclaration())
-  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
-    parseMetadataStar(;)
-      listener: beginMetadataStar())
-      listener: endMetadataStar(0)
-    listener: beginTopLevelMember())
-    parseInvalidTopLevelDeclaration(;)
-      reportRecoverableErrorWithToken(), Instance of 'Template<(Token) => Message>')
-        listener: handleRecoverableError(Message[ExpectedDeclaration, Expected a declaration, but got ')'., null, {token: )}], ), ))
-      listener: handleInvalidTopLevelDeclaration())
-  listener: endTopLevelDeclaration({)
-  parseTopLevelDeclarationImpl(), Instance of 'DirectiveContext')
-    parseMetadataStar())
-      listener: beginMetadataStar({)
-      listener: endMetadataStar(0)
-    listener: beginTopLevelMember({)
-    parseInvalidTopLevelDeclaration())
-      reportRecoverableErrorWithToken({, Instance of 'Template<(Token) => Message>')
-        listener: handleRecoverableError(Message[ExpectedDeclaration, Expected a declaration, but got '{'., null, {token: {}], {, {)
-      parseInvalidBlock())
-        parseBlock(), BlockKind(invalid))
-          ensureBlock(), null, null)
-          listener: beginBlock({, BlockKind(invalid))
+        ensureIdentifierPotentiallyRecovered(int, topLevelFunctionDeclaration, true)
+          reportRecoverableErrorWithToken(enum, Instance of 'Template<(Token) => Message>')
+            listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'enum'., null, {token: enum}], enum, enum)
+          listener: handleIdentifier(enum, topLevelFunctionDeclaration)
+        parseMethodTypeVar(enum)
+          listener: handleNoTypeVariables(()
+        parseGetterOrFormalParameters(enum, enum, false, MemberKind.TopLevelMethod)
+          parseFormalParameters(enum, MemberKind.TopLevelMethod)
+            parseFormalParametersRest((, MemberKind.TopLevelMethod)
+              listener: beginFormalParameters((, MemberKind.TopLevelMethod)
+              parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+                parseMetadataStar(()
+                  listener: beginMetadataStar(int)
+                  listener: endMetadataStar(0)
+                listener: beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+                listener: handleIdentifier(int, typeReference)
+                listener: handleNoTypeArguments(x)
+                listener: handleType(int, null)
+                ensureIdentifier(int, formalParameterDeclaration)
+                  listener: handleIdentifier(x, formalParameterDeclaration)
+                listener: handleFormalParameterWithoutValue())
+                listener: endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+              listener: endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
+        parseAsyncModifierOpt())
+          listener: handleAsyncModifier(null, null)
+          inPlainSync()
+        parseFunctionBody(), false, false)
+          listener: beginBlockFunctionBody({)
           notEofOrValue(}, if)
           parseStatement({)
             parseStatementX({)
@@ -1929,6 +1667,7 @@
                         parseSend(return, expression)
                           ensureIdentifier(return, expression)
                             reportRecoverableErrorWithToken(enum, Instance of 'Template<(Token) => Message>')
+                              listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'enum'., null, {token: enum}], enum, enum)
                             listener: handleIdentifier(enum, expression)
                           listener: handleNoTypeArguments(()
                           parseArgumentsOpt(enum)
@@ -1967,9 +1706,8 @@
                 listener: endReturnStatement(true, return, ;)
                 inGenerator()
           notEofOrValue(}, })
-          listener: endBlock(2, {, }, BlockKind(invalid))
-        listener: handleInvalidTopLevelBlock({)
-      listener: handleInvalidTopLevelDeclaration(})
+          listener: endBlockFunctionBody(2, {, })
+        listener: endTopLevelMethod(int, null, })
   listener: endTopLevelDeclaration(int)
   parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
     parseMetadataStar(})
@@ -1977,30 +1715,14 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl(})
       listener: beginTopLevelMember(int)
-      parseFields(}, null, null, null, null, null, }, Instance of 'NoType', int, DeclarationKind.TopLevel, null)
-        reportRecoverableError(int, MissingConstFinalVarOrType)
-          listener: handleRecoverableError(MissingConstFinalVarOrType, int, int)
-        listener: handleNoType(})
-        ensureIdentifier(}, topLevelVariableDeclaration)
-          listener: handleIdentifier(int, topLevelVariableDeclaration)
-        parseFieldInitializerOpt(int, int, null, null, DeclarationKind.TopLevel, null)
-          listener: handleNoFieldInitializer(extends)
-        ensureSemicolon(int)
-          reportRecoverableError(int, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
-            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
-          rewriter()
-        listener: endTopLevelFields(null, null, null, null, 1, int, ;)
-  listener: endTopLevelDeclaration(extends)
-  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
-    parseMetadataStar(;)
-      listener: beginMetadataStar(extends)
-      listener: endMetadataStar(0)
-    parseTopLevelMemberImpl(;)
-      listener: beginTopLevelMember(extends)
-      parseTopLevelMethod(;, null, ;, Instance of 'NoType', null, extends)
-        listener: beginTopLevelMethod(;, null)
-        listener: handleNoType(;)
-        ensureIdentifier(;, topLevelFunctionDeclaration)
+      isReservedKeyword(extends)
+      indicatesMethodOrField(()
+      parseTopLevelMethod(}, null, }, Instance of 'SimpleType', null, extends, true)
+        listener: beginTopLevelMethod(}, null)
+        listener: handleIdentifier(int, typeReference)
+        listener: handleNoTypeArguments(extends)
+        listener: handleType(int, null)
+        ensureIdentifierPotentiallyRecovered(int, topLevelFunctionDeclaration, true)
           reportRecoverableErrorWithToken(extends, Instance of 'Template<(Token) => Message>')
             listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'extends'., null, {token: extends}], extends, extends)
           listener: handleIdentifier(extends, topLevelFunctionDeclaration)
@@ -2125,7 +1847,7 @@
                 inGenerator()
           notEofOrValue(}, })
           listener: endBlockFunctionBody(2, {, })
-        listener: endTopLevelMethod(extends, null, })
+        listener: endTopLevelMethod(int, null, })
   listener: endTopLevelDeclaration(int)
   parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
     parseMetadataStar(})
@@ -2133,30 +1855,14 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl(})
       listener: beginTopLevelMember(int)
-      parseFields(}, null, null, null, null, null, }, Instance of 'NoType', int, DeclarationKind.TopLevel, null)
-        reportRecoverableError(int, MissingConstFinalVarOrType)
-          listener: handleRecoverableError(MissingConstFinalVarOrType, int, int)
-        listener: handleNoType(})
-        ensureIdentifier(}, topLevelVariableDeclaration)
-          listener: handleIdentifier(int, topLevelVariableDeclaration)
-        parseFieldInitializerOpt(int, int, null, null, DeclarationKind.TopLevel, null)
-          listener: handleNoFieldInitializer(false)
-        ensureSemicolon(int)
-          reportRecoverableError(int, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
-            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
-          rewriter()
-        listener: endTopLevelFields(null, null, null, null, 1, int, ;)
-  listener: endTopLevelDeclaration(false)
-  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
-    parseMetadataStar(;)
-      listener: beginMetadataStar(false)
-      listener: endMetadataStar(0)
-    parseTopLevelMemberImpl(;)
-      listener: beginTopLevelMember(false)
-      parseTopLevelMethod(;, null, ;, Instance of 'NoType', null, false)
-        listener: beginTopLevelMethod(;, null)
-        listener: handleNoType(;)
-        ensureIdentifier(;, topLevelFunctionDeclaration)
+      isReservedKeyword(false)
+      indicatesMethodOrField(()
+      parseTopLevelMethod(}, null, }, Instance of 'SimpleType', null, false, true)
+        listener: beginTopLevelMethod(}, null)
+        listener: handleIdentifier(int, typeReference)
+        listener: handleNoTypeArguments(false)
+        listener: handleType(int, null)
+        ensureIdentifierPotentiallyRecovered(int, topLevelFunctionDeclaration, true)
           reportRecoverableErrorWithToken(false, Instance of 'Template<(Token) => Message>')
             listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'false'., null, {token: false}], false, false)
           listener: handleIdentifier(false, topLevelFunctionDeclaration)
@@ -2277,7 +1983,7 @@
                 inGenerator()
           notEofOrValue(}, })
           listener: endBlockFunctionBody(2, {, })
-        listener: endTopLevelMethod(false, null, })
+        listener: endTopLevelMethod(int, null, })
   listener: endTopLevelDeclaration(int)
   parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
     parseMetadataStar(})
@@ -2285,41 +1991,21 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl(})
       listener: beginTopLevelMember(int)
-      parseFields(}, null, null, null, null, null, }, Instance of 'NoType', int, DeclarationKind.TopLevel, null)
-        reportRecoverableError(int, MissingConstFinalVarOrType)
-          listener: handleRecoverableError(MissingConstFinalVarOrType, int, int)
-        listener: handleNoType(})
-        ensureIdentifier(}, topLevelVariableDeclaration)
-          listener: handleIdentifier(int, topLevelVariableDeclaration)
-        parseFieldInitializerOpt(int, int, null, null, DeclarationKind.TopLevel, null)
-          listener: handleNoFieldInitializer(final)
-        ensureSemicolon(int)
-          reportRecoverableError(int, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
-            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
-          rewriter()
-        listener: endTopLevelFields(null, null, null, null, 1, int, ;)
-  listener: endTopLevelDeclaration(final)
-  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
-    parseMetadataStar(;)
-      listener: beginMetadataStar(final)
-      listener: endMetadataStar(0)
-    parseTopLevelMemberImpl(;)
-      listener: beginTopLevelMember(final)
-      insertSyntheticIdentifier(final, methodDeclaration, message: null, messageOnToken: null)
-        reportRecoverableError((, Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}])
-          listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}], (, ()
-        rewriter()
-      reportRecoverableErrorWithToken(final, Instance of 'Template<(Token) => Message>')
-        listener: handleRecoverableError(Message[ExtraneousModifier, Can't have modifier 'final' here., Try removing 'final'., {token: final}], final, final)
-      parseTopLevelMethod(;, null, final, Instance of 'NoType', null, )
-        listener: beginTopLevelMethod(;, null)
-        listener: handleNoType(final)
-        ensureIdentifier(final, topLevelFunctionDeclaration)
-          listener: handleIdentifier(, topLevelFunctionDeclaration)
-        parseMethodTypeVar()
+      isReservedKeyword(final)
+      indicatesMethodOrField(()
+      parseTopLevelMethod(}, null, }, Instance of 'SimpleType', null, final, true)
+        listener: beginTopLevelMethod(}, null)
+        listener: handleIdentifier(int, typeReference)
+        listener: handleNoTypeArguments(final)
+        listener: handleType(int, null)
+        ensureIdentifierPotentiallyRecovered(int, topLevelFunctionDeclaration, true)
+          reportRecoverableErrorWithToken(final, Instance of 'Template<(Token) => Message>')
+            listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'final'., null, {token: final}], final, final)
+          listener: handleIdentifier(final, topLevelFunctionDeclaration)
+        parseMethodTypeVar(final)
           listener: handleNoTypeVariables(()
-        parseGetterOrFormalParameters(, , false, MemberKind.TopLevelMethod)
-          parseFormalParameters(, MemberKind.TopLevelMethod)
+        parseGetterOrFormalParameters(final, final, false, MemberKind.TopLevelMethod)
+          parseFormalParameters(final, MemberKind.TopLevelMethod)
             parseFormalParametersRest((, MemberKind.TopLevelMethod)
               listener: beginFormalParameters((, MemberKind.TopLevelMethod)
               parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
@@ -2527,7 +2213,7 @@
                     listener: handleExpressionStatement(;)
           notEofOrValue(}, })
           listener: endBlockFunctionBody(6, {, })
-        listener: endTopLevelMethod(final, null, })
+        listener: endTopLevelMethod(int, null, })
   listener: endTopLevelDeclaration(int)
   parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
     parseMetadataStar(})
@@ -2535,30 +2221,14 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl(})
       listener: beginTopLevelMember(int)
-      parseFields(}, null, null, null, null, null, }, Instance of 'NoType', int, DeclarationKind.TopLevel, null)
-        reportRecoverableError(int, MissingConstFinalVarOrType)
-          listener: handleRecoverableError(MissingConstFinalVarOrType, int, int)
-        listener: handleNoType(})
-        ensureIdentifier(}, topLevelVariableDeclaration)
-          listener: handleIdentifier(int, topLevelVariableDeclaration)
-        parseFieldInitializerOpt(int, int, null, null, DeclarationKind.TopLevel, null)
-          listener: handleNoFieldInitializer(finally)
-        ensureSemicolon(int)
-          reportRecoverableError(int, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
-            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
-          rewriter()
-        listener: endTopLevelFields(null, null, null, null, 1, int, ;)
-  listener: endTopLevelDeclaration(finally)
-  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
-    parseMetadataStar(;)
-      listener: beginMetadataStar(finally)
-      listener: endMetadataStar(0)
-    parseTopLevelMemberImpl(;)
-      listener: beginTopLevelMember(finally)
-      parseTopLevelMethod(;, null, ;, Instance of 'NoType', null, finally)
-        listener: beginTopLevelMethod(;, null)
-        listener: handleNoType(;)
-        ensureIdentifier(;, topLevelFunctionDeclaration)
+      isReservedKeyword(finally)
+      indicatesMethodOrField(()
+      parseTopLevelMethod(}, null, }, Instance of 'SimpleType', null, finally, true)
+        listener: beginTopLevelMethod(}, null)
+        listener: handleIdentifier(int, typeReference)
+        listener: handleNoTypeArguments(finally)
+        listener: handleType(int, null)
+        ensureIdentifierPotentiallyRecovered(int, topLevelFunctionDeclaration, true)
           reportRecoverableErrorWithToken(finally, Instance of 'Template<(Token) => Message>')
             listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'finally'., null, {token: finally}], finally, finally)
           listener: handleIdentifier(finally, topLevelFunctionDeclaration)
@@ -2683,7 +2353,7 @@
                 inGenerator()
           notEofOrValue(}, })
           listener: endBlockFunctionBody(2, {, })
-        listener: endTopLevelMethod(finally, null, })
+        listener: endTopLevelMethod(int, null, })
   listener: endTopLevelDeclaration(int)
   parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
     parseMetadataStar(})
@@ -2691,30 +2361,14 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl(})
       listener: beginTopLevelMember(int)
-      parseFields(}, null, null, null, null, null, }, Instance of 'NoType', int, DeclarationKind.TopLevel, null)
-        reportRecoverableError(int, MissingConstFinalVarOrType)
-          listener: handleRecoverableError(MissingConstFinalVarOrType, int, int)
-        listener: handleNoType(})
-        ensureIdentifier(}, topLevelVariableDeclaration)
-          listener: handleIdentifier(int, topLevelVariableDeclaration)
-        parseFieldInitializerOpt(int, int, null, null, DeclarationKind.TopLevel, null)
-          listener: handleNoFieldInitializer(for)
-        ensureSemicolon(int)
-          reportRecoverableError(int, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
-            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
-          rewriter()
-        listener: endTopLevelFields(null, null, null, null, 1, int, ;)
-  listener: endTopLevelDeclaration(for)
-  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
-    parseMetadataStar(;)
-      listener: beginMetadataStar(for)
-      listener: endMetadataStar(0)
-    parseTopLevelMemberImpl(;)
-      listener: beginTopLevelMember(for)
-      parseTopLevelMethod(;, null, ;, Instance of 'NoType', null, for)
-        listener: beginTopLevelMethod(;, null)
-        listener: handleNoType(;)
-        ensureIdentifier(;, topLevelFunctionDeclaration)
+      isReservedKeyword(for)
+      indicatesMethodOrField(()
+      parseTopLevelMethod(}, null, }, Instance of 'SimpleType', null, for, true)
+        listener: beginTopLevelMethod(}, null)
+        listener: handleIdentifier(int, typeReference)
+        listener: handleNoTypeArguments(for)
+        listener: handleType(int, null)
+        ensureIdentifierPotentiallyRecovered(int, topLevelFunctionDeclaration, true)
           reportRecoverableErrorWithToken(for, Instance of 'Template<(Token) => Message>')
             listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'for'., null, {token: for}], for, for)
           listener: handleIdentifier(for, topLevelFunctionDeclaration)
@@ -2904,7 +2558,7 @@
                   listener: endForStatement(})
           notEofOrValue(}, })
           listener: endBlockFunctionBody(3, {, })
-        listener: endTopLevelMethod(for, null, })
+        listener: endTopLevelMethod(int, null, })
   listener: endTopLevelDeclaration(int)
   parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
     parseMetadataStar(})
@@ -2912,30 +2566,14 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl(})
       listener: beginTopLevelMember(int)
-      parseFields(}, null, null, null, null, null, }, Instance of 'NoType', int, DeclarationKind.TopLevel, null)
-        reportRecoverableError(int, MissingConstFinalVarOrType)
-          listener: handleRecoverableError(MissingConstFinalVarOrType, int, int)
-        listener: handleNoType(})
-        ensureIdentifier(}, topLevelVariableDeclaration)
-          listener: handleIdentifier(int, topLevelVariableDeclaration)
-        parseFieldInitializerOpt(int, int, null, null, DeclarationKind.TopLevel, null)
-          listener: handleNoFieldInitializer(if)
-        ensureSemicolon(int)
-          reportRecoverableError(int, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
-            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
-          rewriter()
-        listener: endTopLevelFields(null, null, null, null, 1, int, ;)
-  listener: endTopLevelDeclaration(if)
-  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
-    parseMetadataStar(;)
-      listener: beginMetadataStar(if)
-      listener: endMetadataStar(0)
-    parseTopLevelMemberImpl(;)
-      listener: beginTopLevelMember(if)
-      parseTopLevelMethod(;, null, ;, Instance of 'NoType', null, if)
-        listener: beginTopLevelMethod(;, null)
-        listener: handleNoType(;)
-        ensureIdentifier(;, topLevelFunctionDeclaration)
+      isReservedKeyword(if)
+      indicatesMethodOrField(()
+      parseTopLevelMethod(}, null, }, Instance of 'SimpleType', null, if, true)
+        listener: beginTopLevelMethod(}, null)
+        listener: handleIdentifier(int, typeReference)
+        listener: handleNoTypeArguments(if)
+        listener: handleType(int, null)
+        ensureIdentifierPotentiallyRecovered(int, topLevelFunctionDeclaration, true)
           reportRecoverableErrorWithToken(if, Instance of 'Template<(Token) => Message>')
             listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'if'., null, {token: if}], if, if)
           listener: handleIdentifier(if, topLevelFunctionDeclaration)
@@ -3097,7 +2735,7 @@
                 listener: endIfStatement(if, null)
           notEofOrValue(}, })
           listener: endBlockFunctionBody(3, {, })
-        listener: endTopLevelMethod(if, null, })
+        listener: endTopLevelMethod(int, null, })
   listener: endTopLevelDeclaration(int)
   parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
     parseMetadataStar(})
@@ -3105,30 +2743,14 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl(})
       listener: beginTopLevelMember(int)
-      parseFields(}, null, null, null, null, null, }, Instance of 'NoType', int, DeclarationKind.TopLevel, null)
-        reportRecoverableError(int, MissingConstFinalVarOrType)
-          listener: handleRecoverableError(MissingConstFinalVarOrType, int, int)
-        listener: handleNoType(})
-        ensureIdentifier(}, topLevelVariableDeclaration)
-          listener: handleIdentifier(int, topLevelVariableDeclaration)
-        parseFieldInitializerOpt(int, int, null, null, DeclarationKind.TopLevel, null)
-          listener: handleNoFieldInitializer(in)
-        ensureSemicolon(int)
-          reportRecoverableError(int, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
-            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
-          rewriter()
-        listener: endTopLevelFields(null, null, null, null, 1, int, ;)
-  listener: endTopLevelDeclaration(in)
-  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
-    parseMetadataStar(;)
-      listener: beginMetadataStar(in)
-      listener: endMetadataStar(0)
-    parseTopLevelMemberImpl(;)
-      listener: beginTopLevelMember(in)
-      parseTopLevelMethod(;, null, ;, Instance of 'NoType', null, in)
-        listener: beginTopLevelMethod(;, null)
-        listener: handleNoType(;)
-        ensureIdentifier(;, topLevelFunctionDeclaration)
+      isReservedKeyword(in)
+      indicatesMethodOrField(()
+      parseTopLevelMethod(}, null, }, Instance of 'SimpleType', null, in, true)
+        listener: beginTopLevelMethod(}, null)
+        listener: handleIdentifier(int, typeReference)
+        listener: handleNoTypeArguments(in)
+        listener: handleType(int, null)
+        ensureIdentifierPotentiallyRecovered(int, topLevelFunctionDeclaration, true)
           reportRecoverableErrorWithToken(in, Instance of 'Template<(Token) => Message>')
             listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'in'., null, {token: in}], in, in)
           listener: handleIdentifier(in, topLevelFunctionDeclaration)
@@ -3253,7 +2875,7 @@
                 inGenerator()
           notEofOrValue(}, })
           listener: endBlockFunctionBody(2, {, })
-        listener: endTopLevelMethod(in, null, })
+        listener: endTopLevelMethod(int, null, })
   listener: endTopLevelDeclaration(int)
   parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
     parseMetadataStar(})
@@ -3261,30 +2883,14 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl(})
       listener: beginTopLevelMember(int)
-      parseFields(}, null, null, null, null, null, }, Instance of 'NoType', int, DeclarationKind.TopLevel, null)
-        reportRecoverableError(int, MissingConstFinalVarOrType)
-          listener: handleRecoverableError(MissingConstFinalVarOrType, int, int)
-        listener: handleNoType(})
-        ensureIdentifier(}, topLevelVariableDeclaration)
-          listener: handleIdentifier(int, topLevelVariableDeclaration)
-        parseFieldInitializerOpt(int, int, null, null, DeclarationKind.TopLevel, null)
-          listener: handleNoFieldInitializer(is)
-        ensureSemicolon(int)
-          reportRecoverableError(int, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
-            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
-          rewriter()
-        listener: endTopLevelFields(null, null, null, null, 1, int, ;)
-  listener: endTopLevelDeclaration(is)
-  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
-    parseMetadataStar(;)
-      listener: beginMetadataStar(is)
-      listener: endMetadataStar(0)
-    parseTopLevelMemberImpl(;)
-      listener: beginTopLevelMember(is)
-      parseTopLevelMethod(;, null, ;, Instance of 'NoType', null, is)
-        listener: beginTopLevelMethod(;, null)
-        listener: handleNoType(;)
-        ensureIdentifier(;, topLevelFunctionDeclaration)
+      isReservedKeyword(is)
+      indicatesMethodOrField(()
+      parseTopLevelMethod(}, null, }, Instance of 'SimpleType', null, is, true)
+        listener: beginTopLevelMethod(}, null)
+        listener: handleIdentifier(int, typeReference)
+        listener: handleNoTypeArguments(is)
+        listener: handleType(int, null)
+        ensureIdentifierPotentiallyRecovered(int, topLevelFunctionDeclaration, true)
           reportRecoverableErrorWithToken(is, Instance of 'Template<(Token) => Message>')
             listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'is'., null, {token: is}], is, is)
           listener: handleIdentifier(is, topLevelFunctionDeclaration)
@@ -3441,7 +3047,7 @@
                     listener: handleExpressionStatement(;)
           notEofOrValue(}, })
           listener: endBlockFunctionBody(3, {, })
-        listener: endTopLevelMethod(is, null, })
+        listener: endTopLevelMethod(int, null, })
   listener: endTopLevelDeclaration(int)
   parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
     parseMetadataStar(})
@@ -3449,30 +3055,14 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl(})
       listener: beginTopLevelMember(int)
-      parseFields(}, null, null, null, null, null, }, Instance of 'NoType', int, DeclarationKind.TopLevel, null)
-        reportRecoverableError(int, MissingConstFinalVarOrType)
-          listener: handleRecoverableError(MissingConstFinalVarOrType, int, int)
-        listener: handleNoType(})
-        ensureIdentifier(}, topLevelVariableDeclaration)
-          listener: handleIdentifier(int, topLevelVariableDeclaration)
-        parseFieldInitializerOpt(int, int, null, null, DeclarationKind.TopLevel, null)
-          listener: handleNoFieldInitializer(new)
-        ensureSemicolon(int)
-          reportRecoverableError(int, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
-            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
-          rewriter()
-        listener: endTopLevelFields(null, null, null, null, 1, int, ;)
-  listener: endTopLevelDeclaration(new)
-  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
-    parseMetadataStar(;)
-      listener: beginMetadataStar(new)
-      listener: endMetadataStar(0)
-    parseTopLevelMemberImpl(;)
-      listener: beginTopLevelMember(new)
-      parseTopLevelMethod(;, null, ;, Instance of 'NoType', null, new)
-        listener: beginTopLevelMethod(;, null)
-        listener: handleNoType(;)
-        ensureIdentifier(;, topLevelFunctionDeclaration)
+      isReservedKeyword(new)
+      indicatesMethodOrField(()
+      parseTopLevelMethod(}, null, }, Instance of 'SimpleType', null, new, true)
+        listener: beginTopLevelMethod(}, null)
+        listener: handleIdentifier(int, typeReference)
+        listener: handleNoTypeArguments(new)
+        listener: handleType(int, null)
+        ensureIdentifierPotentiallyRecovered(int, topLevelFunctionDeclaration, true)
           reportRecoverableErrorWithToken(new, Instance of 'Template<(Token) => Message>')
             listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'new'., null, {token: new}], new, new)
           listener: handleIdentifier(new, topLevelFunctionDeclaration)
@@ -3603,7 +3193,7 @@
                 inGenerator()
           notEofOrValue(}, })
           listener: endBlockFunctionBody(2, {, })
-        listener: endTopLevelMethod(new, null, })
+        listener: endTopLevelMethod(int, null, })
   listener: endTopLevelDeclaration(int)
   parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
     parseMetadataStar(})
@@ -3611,30 +3201,14 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl(})
       listener: beginTopLevelMember(int)
-      parseFields(}, null, null, null, null, null, }, Instance of 'NoType', int, DeclarationKind.TopLevel, null)
-        reportRecoverableError(int, MissingConstFinalVarOrType)
-          listener: handleRecoverableError(MissingConstFinalVarOrType, int, int)
-        listener: handleNoType(})
-        ensureIdentifier(}, topLevelVariableDeclaration)
-          listener: handleIdentifier(int, topLevelVariableDeclaration)
-        parseFieldInitializerOpt(int, int, null, null, DeclarationKind.TopLevel, null)
-          listener: handleNoFieldInitializer(null)
-        ensureSemicolon(int)
-          reportRecoverableError(int, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
-            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
-          rewriter()
-        listener: endTopLevelFields(null, null, null, null, 1, int, ;)
-  listener: endTopLevelDeclaration(null)
-  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
-    parseMetadataStar(;)
-      listener: beginMetadataStar(null)
-      listener: endMetadataStar(0)
-    parseTopLevelMemberImpl(;)
-      listener: beginTopLevelMember(null)
-      parseTopLevelMethod(;, null, ;, Instance of 'NoType', null, null)
-        listener: beginTopLevelMethod(;, null)
-        listener: handleNoType(;)
-        ensureIdentifier(;, topLevelFunctionDeclaration)
+      isReservedKeyword(null)
+      indicatesMethodOrField(()
+      parseTopLevelMethod(}, null, }, Instance of 'SimpleType', null, null, true)
+        listener: beginTopLevelMethod(}, null)
+        listener: handleIdentifier(int, typeReference)
+        listener: handleNoTypeArguments(null)
+        listener: handleType(int, null)
+        ensureIdentifierPotentiallyRecovered(int, topLevelFunctionDeclaration, true)
           reportRecoverableErrorWithToken(null, Instance of 'Template<(Token) => Message>')
             listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'null'., null, {token: null}], null, null)
           listener: handleIdentifier(null, topLevelFunctionDeclaration)
@@ -3755,7 +3329,7 @@
                 inGenerator()
           notEofOrValue(}, })
           listener: endBlockFunctionBody(2, {, })
-        listener: endTopLevelMethod(null, null, })
+        listener: endTopLevelMethod(int, null, })
   listener: endTopLevelDeclaration(int)
   parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
     parseMetadataStar(})
@@ -3763,30 +3337,14 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl(})
       listener: beginTopLevelMember(int)
-      parseFields(}, null, null, null, null, null, }, Instance of 'NoType', int, DeclarationKind.TopLevel, null)
-        reportRecoverableError(int, MissingConstFinalVarOrType)
-          listener: handleRecoverableError(MissingConstFinalVarOrType, int, int)
-        listener: handleNoType(})
-        ensureIdentifier(}, topLevelVariableDeclaration)
-          listener: handleIdentifier(int, topLevelVariableDeclaration)
-        parseFieldInitializerOpt(int, int, null, null, DeclarationKind.TopLevel, null)
-          listener: handleNoFieldInitializer(rethrow)
-        ensureSemicolon(int)
-          reportRecoverableError(int, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
-            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
-          rewriter()
-        listener: endTopLevelFields(null, null, null, null, 1, int, ;)
-  listener: endTopLevelDeclaration(rethrow)
-  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
-    parseMetadataStar(;)
-      listener: beginMetadataStar(rethrow)
-      listener: endMetadataStar(0)
-    parseTopLevelMemberImpl(;)
-      listener: beginTopLevelMember(rethrow)
-      parseTopLevelMethod(;, null, ;, Instance of 'NoType', null, rethrow)
-        listener: beginTopLevelMethod(;, null)
-        listener: handleNoType(;)
-        ensureIdentifier(;, topLevelFunctionDeclaration)
+      isReservedKeyword(rethrow)
+      indicatesMethodOrField(()
+      parseTopLevelMethod(}, null, }, Instance of 'SimpleType', null, rethrow, true)
+        listener: beginTopLevelMethod(}, null)
+        listener: handleIdentifier(int, typeReference)
+        listener: handleNoTypeArguments(rethrow)
+        listener: handleType(int, null)
+        ensureIdentifierPotentiallyRecovered(int, topLevelFunctionDeclaration, true)
           reportRecoverableErrorWithToken(rethrow, Instance of 'Template<(Token) => Message>')
             listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'rethrow'., null, {token: rethrow}], rethrow, rethrow)
           listener: handleIdentifier(rethrow, topLevelFunctionDeclaration)
@@ -3911,7 +3469,7 @@
                 inGenerator()
           notEofOrValue(}, })
           listener: endBlockFunctionBody(2, {, })
-        listener: endTopLevelMethod(rethrow, null, })
+        listener: endTopLevelMethod(int, null, })
   listener: endTopLevelDeclaration(int)
   parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
     parseMetadataStar(})
@@ -3919,30 +3477,14 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl(})
       listener: beginTopLevelMember(int)
-      parseFields(}, null, null, null, null, null, }, Instance of 'NoType', int, DeclarationKind.TopLevel, null)
-        reportRecoverableError(int, MissingConstFinalVarOrType)
-          listener: handleRecoverableError(MissingConstFinalVarOrType, int, int)
-        listener: handleNoType(})
-        ensureIdentifier(}, topLevelVariableDeclaration)
-          listener: handleIdentifier(int, topLevelVariableDeclaration)
-        parseFieldInitializerOpt(int, int, null, null, DeclarationKind.TopLevel, null)
-          listener: handleNoFieldInitializer(return)
-        ensureSemicolon(int)
-          reportRecoverableError(int, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
-            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
-          rewriter()
-        listener: endTopLevelFields(null, null, null, null, 1, int, ;)
-  listener: endTopLevelDeclaration(return)
-  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
-    parseMetadataStar(;)
-      listener: beginMetadataStar(return)
-      listener: endMetadataStar(0)
-    parseTopLevelMemberImpl(;)
-      listener: beginTopLevelMember(return)
-      parseTopLevelMethod(;, null, ;, Instance of 'NoType', null, return)
-        listener: beginTopLevelMethod(;, null)
-        listener: handleNoType(;)
-        ensureIdentifier(;, topLevelFunctionDeclaration)
+      isReservedKeyword(return)
+      indicatesMethodOrField(()
+      parseTopLevelMethod(}, null, }, Instance of 'SimpleType', null, return, true)
+        listener: beginTopLevelMethod(}, null)
+        listener: handleIdentifier(int, typeReference)
+        listener: handleNoTypeArguments(return)
+        listener: handleType(int, null)
+        ensureIdentifierPotentiallyRecovered(int, topLevelFunctionDeclaration, true)
           reportRecoverableErrorWithToken(return, Instance of 'Template<(Token) => Message>')
             listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'return'., null, {token: return}], return, return)
           listener: handleIdentifier(return, topLevelFunctionDeclaration)
@@ -4064,7 +3606,7 @@
                 inGenerator()
           notEofOrValue(}, })
           listener: endBlockFunctionBody(2, {, })
-        listener: endTopLevelMethod(return, null, })
+        listener: endTopLevelMethod(int, null, })
   listener: endTopLevelDeclaration(int)
   parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
     parseMetadataStar(})
@@ -4072,30 +3614,14 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl(})
       listener: beginTopLevelMember(int)
-      parseFields(}, null, null, null, null, null, }, Instance of 'NoType', int, DeclarationKind.TopLevel, null)
-        reportRecoverableError(int, MissingConstFinalVarOrType)
-          listener: handleRecoverableError(MissingConstFinalVarOrType, int, int)
-        listener: handleNoType(})
-        ensureIdentifier(}, topLevelVariableDeclaration)
-          listener: handleIdentifier(int, topLevelVariableDeclaration)
-        parseFieldInitializerOpt(int, int, null, null, DeclarationKind.TopLevel, null)
-          listener: handleNoFieldInitializer(super)
-        ensureSemicolon(int)
-          reportRecoverableError(int, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
-            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
-          rewriter()
-        listener: endTopLevelFields(null, null, null, null, 1, int, ;)
-  listener: endTopLevelDeclaration(super)
-  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
-    parseMetadataStar(;)
-      listener: beginMetadataStar(super)
-      listener: endMetadataStar(0)
-    parseTopLevelMemberImpl(;)
-      listener: beginTopLevelMember(super)
-      parseTopLevelMethod(;, null, ;, Instance of 'NoType', null, super)
-        listener: beginTopLevelMethod(;, null)
-        listener: handleNoType(;)
-        ensureIdentifier(;, topLevelFunctionDeclaration)
+      isReservedKeyword(super)
+      indicatesMethodOrField(()
+      parseTopLevelMethod(}, null, }, Instance of 'SimpleType', null, super, true)
+        listener: beginTopLevelMethod(}, null)
+        listener: handleIdentifier(int, typeReference)
+        listener: handleNoTypeArguments(super)
+        listener: handleType(int, null)
+        ensureIdentifierPotentiallyRecovered(int, topLevelFunctionDeclaration, true)
           reportRecoverableErrorWithToken(super, Instance of 'Template<(Token) => Message>')
             listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'super'., null, {token: super}], super, super)
           listener: handleIdentifier(super, topLevelFunctionDeclaration)
@@ -4215,7 +3741,7 @@
                 inGenerator()
           notEofOrValue(}, })
           listener: endBlockFunctionBody(2, {, })
-        listener: endTopLevelMethod(super, null, })
+        listener: endTopLevelMethod(int, null, })
   listener: endTopLevelDeclaration(int)
   parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
     parseMetadataStar(})
@@ -4223,30 +3749,14 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl(})
       listener: beginTopLevelMember(int)
-      parseFields(}, null, null, null, null, null, }, Instance of 'NoType', int, DeclarationKind.TopLevel, null)
-        reportRecoverableError(int, MissingConstFinalVarOrType)
-          listener: handleRecoverableError(MissingConstFinalVarOrType, int, int)
-        listener: handleNoType(})
-        ensureIdentifier(}, topLevelVariableDeclaration)
-          listener: handleIdentifier(int, topLevelVariableDeclaration)
-        parseFieldInitializerOpt(int, int, null, null, DeclarationKind.TopLevel, null)
-          listener: handleNoFieldInitializer(switch)
-        ensureSemicolon(int)
-          reportRecoverableError(int, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
-            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
-          rewriter()
-        listener: endTopLevelFields(null, null, null, null, 1, int, ;)
-  listener: endTopLevelDeclaration(switch)
-  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
-    parseMetadataStar(;)
-      listener: beginMetadataStar(switch)
-      listener: endMetadataStar(0)
-    parseTopLevelMemberImpl(;)
-      listener: beginTopLevelMember(switch)
-      parseTopLevelMethod(;, null, ;, Instance of 'NoType', null, switch)
-        listener: beginTopLevelMethod(;, null)
-        listener: handleNoType(;)
-        ensureIdentifier(;, topLevelFunctionDeclaration)
+      isReservedKeyword(switch)
+      indicatesMethodOrField(()
+      parseTopLevelMethod(}, null, }, Instance of 'SimpleType', null, switch, true)
+        listener: beginTopLevelMethod(}, null)
+        listener: handleIdentifier(int, typeReference)
+        listener: handleNoTypeArguments(switch)
+        listener: handleType(int, null)
+        ensureIdentifierPotentiallyRecovered(int, topLevelFunctionDeclaration, true)
           reportRecoverableErrorWithToken(switch, Instance of 'Template<(Token) => Message>')
             listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'switch'., null, {token: switch}], switch, switch)
           listener: handleIdentifier(switch, topLevelFunctionDeclaration)
@@ -4417,7 +3927,7 @@
                     listener: handleExpressionStatement(;)
           notEofOrValue(}, })
           listener: endBlockFunctionBody(4, {, })
-        listener: endTopLevelMethod(switch, null, })
+        listener: endTopLevelMethod(int, null, })
   listener: endTopLevelDeclaration(int)
   parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
     parseMetadataStar(})
@@ -4425,12 +3935,12 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl(})
       listener: beginTopLevelMember(int)
-      parseTopLevelMethod(}, null, }, Instance of 'SimpleType', null, this)
+      parseTopLevelMethod(}, null, }, Instance of 'SimpleType', null, this, false)
         listener: beginTopLevelMethod(}, null)
         listener: handleIdentifier(int, typeReference)
         listener: handleNoTypeArguments(this)
         listener: handleType(int, null)
-        ensureIdentifier(int, topLevelFunctionDeclaration)
+        ensureIdentifierPotentiallyRecovered(int, topLevelFunctionDeclaration, false)
           reportRecoverableErrorWithToken(this, Instance of 'Template<(Token) => Message>')
             listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'this'., null, {token: this}], this, this)
           listener: handleIdentifier(this, topLevelFunctionDeclaration)
@@ -4558,30 +4068,14 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl(})
       listener: beginTopLevelMember(int)
-      parseFields(}, null, null, null, null, null, }, Instance of 'NoType', int, DeclarationKind.TopLevel, null)
-        reportRecoverableError(int, MissingConstFinalVarOrType)
-          listener: handleRecoverableError(MissingConstFinalVarOrType, int, int)
-        listener: handleNoType(})
-        ensureIdentifier(}, topLevelVariableDeclaration)
-          listener: handleIdentifier(int, topLevelVariableDeclaration)
-        parseFieldInitializerOpt(int, int, null, null, DeclarationKind.TopLevel, null)
-          listener: handleNoFieldInitializer(throw)
-        ensureSemicolon(int)
-          reportRecoverableError(int, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
-            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
-          rewriter()
-        listener: endTopLevelFields(null, null, null, null, 1, int, ;)
-  listener: endTopLevelDeclaration(throw)
-  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
-    parseMetadataStar(;)
-      listener: beginMetadataStar(throw)
-      listener: endMetadataStar(0)
-    parseTopLevelMemberImpl(;)
-      listener: beginTopLevelMember(throw)
-      parseTopLevelMethod(;, null, ;, Instance of 'NoType', null, throw)
-        listener: beginTopLevelMethod(;, null)
-        listener: handleNoType(;)
-        ensureIdentifier(;, topLevelFunctionDeclaration)
+      isReservedKeyword(throw)
+      indicatesMethodOrField(()
+      parseTopLevelMethod(}, null, }, Instance of 'SimpleType', null, throw, true)
+        listener: beginTopLevelMethod(}, null)
+        listener: handleIdentifier(int, typeReference)
+        listener: handleNoTypeArguments(throw)
+        listener: handleType(int, null)
+        ensureIdentifierPotentiallyRecovered(int, topLevelFunctionDeclaration, true)
           reportRecoverableErrorWithToken(throw, Instance of 'Template<(Token) => Message>')
             listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'throw'., null, {token: throw}], throw, throw)
           listener: handleIdentifier(throw, topLevelFunctionDeclaration)
@@ -4702,7 +4196,7 @@
                 inGenerator()
           notEofOrValue(}, })
           listener: endBlockFunctionBody(2, {, })
-        listener: endTopLevelMethod(throw, null, })
+        listener: endTopLevelMethod(int, null, })
   listener: endTopLevelDeclaration(int)
   parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
     parseMetadataStar(})
@@ -4710,30 +4204,14 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl(})
       listener: beginTopLevelMember(int)
-      parseFields(}, null, null, null, null, null, }, Instance of 'NoType', int, DeclarationKind.TopLevel, null)
-        reportRecoverableError(int, MissingConstFinalVarOrType)
-          listener: handleRecoverableError(MissingConstFinalVarOrType, int, int)
-        listener: handleNoType(})
-        ensureIdentifier(}, topLevelVariableDeclaration)
-          listener: handleIdentifier(int, topLevelVariableDeclaration)
-        parseFieldInitializerOpt(int, int, null, null, DeclarationKind.TopLevel, null)
-          listener: handleNoFieldInitializer(true)
-        ensureSemicolon(int)
-          reportRecoverableError(int, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
-            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
-          rewriter()
-        listener: endTopLevelFields(null, null, null, null, 1, int, ;)
-  listener: endTopLevelDeclaration(true)
-  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
-    parseMetadataStar(;)
-      listener: beginMetadataStar(true)
-      listener: endMetadataStar(0)
-    parseTopLevelMemberImpl(;)
-      listener: beginTopLevelMember(true)
-      parseTopLevelMethod(;, null, ;, Instance of 'NoType', null, true)
-        listener: beginTopLevelMethod(;, null)
-        listener: handleNoType(;)
-        ensureIdentifier(;, topLevelFunctionDeclaration)
+      isReservedKeyword(true)
+      indicatesMethodOrField(()
+      parseTopLevelMethod(}, null, }, Instance of 'SimpleType', null, true, true)
+        listener: beginTopLevelMethod(}, null)
+        listener: handleIdentifier(int, typeReference)
+        listener: handleNoTypeArguments(true)
+        listener: handleType(int, null)
+        ensureIdentifierPotentiallyRecovered(int, topLevelFunctionDeclaration, true)
           reportRecoverableErrorWithToken(true, Instance of 'Template<(Token) => Message>')
             listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'true'., null, {token: true}], true, true)
           listener: handleIdentifier(true, topLevelFunctionDeclaration)
@@ -4854,7 +4332,7 @@
                 inGenerator()
           notEofOrValue(}, })
           listener: endBlockFunctionBody(2, {, })
-        listener: endTopLevelMethod(true, null, })
+        listener: endTopLevelMethod(int, null, })
   listener: endTopLevelDeclaration(int)
   parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
     parseMetadataStar(})
@@ -4862,30 +4340,14 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl(})
       listener: beginTopLevelMember(int)
-      parseFields(}, null, null, null, null, null, }, Instance of 'NoType', int, DeclarationKind.TopLevel, null)
-        reportRecoverableError(int, MissingConstFinalVarOrType)
-          listener: handleRecoverableError(MissingConstFinalVarOrType, int, int)
-        listener: handleNoType(})
-        ensureIdentifier(}, topLevelVariableDeclaration)
-          listener: handleIdentifier(int, topLevelVariableDeclaration)
-        parseFieldInitializerOpt(int, int, null, null, DeclarationKind.TopLevel, null)
-          listener: handleNoFieldInitializer(try)
-        ensureSemicolon(int)
-          reportRecoverableError(int, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
-            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
-          rewriter()
-        listener: endTopLevelFields(null, null, null, null, 1, int, ;)
-  listener: endTopLevelDeclaration(try)
-  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
-    parseMetadataStar(;)
-      listener: beginMetadataStar(try)
-      listener: endMetadataStar(0)
-    parseTopLevelMemberImpl(;)
-      listener: beginTopLevelMember(try)
-      parseTopLevelMethod(;, null, ;, Instance of 'NoType', null, try)
-        listener: beginTopLevelMethod(;, null)
-        listener: handleNoType(;)
-        ensureIdentifier(;, topLevelFunctionDeclaration)
+      isReservedKeyword(try)
+      indicatesMethodOrField(()
+      parseTopLevelMethod(}, null, }, Instance of 'SimpleType', null, try, true)
+        listener: beginTopLevelMethod(}, null)
+        listener: handleIdentifier(int, typeReference)
+        listener: handleNoTypeArguments(try)
+        listener: handleType(int, null)
+        ensureIdentifierPotentiallyRecovered(int, topLevelFunctionDeclaration, true)
           reportRecoverableErrorWithToken(try, Instance of 'Template<(Token) => Message>')
             listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'try'., null, {token: try}], try, try)
           listener: handleIdentifier(try, topLevelFunctionDeclaration)
@@ -5048,7 +4510,7 @@
                     listener: handleExpressionStatement(;)
           notEofOrValue(}, })
           listener: endBlockFunctionBody(4, {, })
-        listener: endTopLevelMethod(try, null, })
+        listener: endTopLevelMethod(int, null, })
   listener: endTopLevelDeclaration(int)
   parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
     parseMetadataStar(})
@@ -5056,41 +4518,21 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl(})
       listener: beginTopLevelMember(int)
-      parseFields(}, null, null, null, null, null, }, Instance of 'NoType', int, DeclarationKind.TopLevel, null)
-        reportRecoverableError(int, MissingConstFinalVarOrType)
-          listener: handleRecoverableError(MissingConstFinalVarOrType, int, int)
-        listener: handleNoType(})
-        ensureIdentifier(}, topLevelVariableDeclaration)
-          listener: handleIdentifier(int, topLevelVariableDeclaration)
-        parseFieldInitializerOpt(int, int, null, null, DeclarationKind.TopLevel, null)
-          listener: handleNoFieldInitializer(var)
-        ensureSemicolon(int)
-          reportRecoverableError(int, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
-            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
-          rewriter()
-        listener: endTopLevelFields(null, null, null, null, 1, int, ;)
-  listener: endTopLevelDeclaration(var)
-  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
-    parseMetadataStar(;)
-      listener: beginMetadataStar(var)
-      listener: endMetadataStar(0)
-    parseTopLevelMemberImpl(;)
-      listener: beginTopLevelMember(var)
-      insertSyntheticIdentifier(var, methodDeclaration, message: null, messageOnToken: null)
-        reportRecoverableError((, Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}])
-          listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}], (, ()
-        rewriter()
-      reportRecoverableError(var, VarReturnType)
-        listener: handleRecoverableError(VarReturnType, var, var)
-      parseTopLevelMethod(;, null, var, Instance of 'NoType', null, )
-        listener: beginTopLevelMethod(;, null)
-        listener: handleNoType(var)
-        ensureIdentifier(var, topLevelFunctionDeclaration)
-          listener: handleIdentifier(, topLevelFunctionDeclaration)
-        parseMethodTypeVar()
+      isReservedKeyword(var)
+      indicatesMethodOrField(()
+      parseTopLevelMethod(}, null, }, Instance of 'SimpleType', null, var, true)
+        listener: beginTopLevelMethod(}, null)
+        listener: handleIdentifier(int, typeReference)
+        listener: handleNoTypeArguments(var)
+        listener: handleType(int, null)
+        ensureIdentifierPotentiallyRecovered(int, topLevelFunctionDeclaration, true)
+          reportRecoverableErrorWithToken(var, Instance of 'Template<(Token) => Message>')
+            listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'var'., null, {token: var}], var, var)
+          listener: handleIdentifier(var, topLevelFunctionDeclaration)
+        parseMethodTypeVar(var)
           listener: handleNoTypeVariables(()
-        parseGetterOrFormalParameters(, , false, MemberKind.TopLevelMethod)
-          parseFormalParameters(, MemberKind.TopLevelMethod)
+        parseGetterOrFormalParameters(var, var, false, MemberKind.TopLevelMethod)
+          parseFormalParameters(var, MemberKind.TopLevelMethod)
             parseFormalParametersRest((, MemberKind.TopLevelMethod)
               listener: beginFormalParameters((, MemberKind.TopLevelMethod)
               parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
@@ -5298,7 +4740,7 @@
                     listener: handleExpressionStatement(;)
           notEofOrValue(}, })
           listener: endBlockFunctionBody(6, {, })
-        listener: endTopLevelMethod(var, null, })
+        listener: endTopLevelMethod(int, null, })
   listener: endTopLevelDeclaration(int)
   parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
     parseMetadataStar(})
@@ -5306,39 +4748,21 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl(})
       listener: beginTopLevelMember(int)
-      parseFields(}, null, null, null, null, null, }, Instance of 'NoType', int, DeclarationKind.TopLevel, null)
-        reportRecoverableError(int, MissingConstFinalVarOrType)
-          listener: handleRecoverableError(MissingConstFinalVarOrType, int, int)
-        listener: handleNoType(})
-        ensureIdentifier(}, topLevelVariableDeclaration)
-          listener: handleIdentifier(int, topLevelVariableDeclaration)
-        parseFieldInitializerOpt(int, int, null, null, DeclarationKind.TopLevel, null)
-          listener: handleNoFieldInitializer(void)
-        ensureSemicolon(int)
-          reportRecoverableError(int, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
-            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
-          rewriter()
-        listener: endTopLevelFields(null, null, null, null, 1, int, ;)
-  listener: endTopLevelDeclaration(void)
-  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
-    parseMetadataStar(;)
-      listener: beginMetadataStar(void)
-      listener: endMetadataStar(0)
-    parseTopLevelMemberImpl(;)
-      listener: beginTopLevelMember(void)
-      insertSyntheticIdentifier(void, methodDeclaration, message: null, messageOnToken: null)
-        reportRecoverableError((, Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}])
-          listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '('., null, {token: (}], (, ()
-        rewriter()
-      parseTopLevelMethod(;, null, ;, Instance of 'VoidType', null, )
-        listener: beginTopLevelMethod(;, null)
-        listener: handleVoidKeyword(void)
-        ensureIdentifier(void, topLevelFunctionDeclaration)
-          listener: handleIdentifier(, topLevelFunctionDeclaration)
-        parseMethodTypeVar()
+      isReservedKeyword(void)
+      indicatesMethodOrField(()
+      parseTopLevelMethod(}, null, }, Instance of 'SimpleType', null, void, true)
+        listener: beginTopLevelMethod(}, null)
+        listener: handleIdentifier(int, typeReference)
+        listener: handleNoTypeArguments(void)
+        listener: handleType(int, null)
+        ensureIdentifierPotentiallyRecovered(int, topLevelFunctionDeclaration, true)
+          reportRecoverableErrorWithToken(void, Instance of 'Template<(Token) => Message>')
+            listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'void'., null, {token: void}], void, void)
+          listener: handleIdentifier(void, topLevelFunctionDeclaration)
+        parseMethodTypeVar(void)
           listener: handleNoTypeVariables(()
-        parseGetterOrFormalParameters(, , false, MemberKind.TopLevelMethod)
-          parseFormalParameters(, MemberKind.TopLevelMethod)
+        parseGetterOrFormalParameters(void, void, false, MemberKind.TopLevelMethod)
+          parseFormalParameters(void, MemberKind.TopLevelMethod)
             parseFormalParametersRest((, MemberKind.TopLevelMethod)
               listener: beginFormalParameters((, MemberKind.TopLevelMethod)
               parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
@@ -5547,7 +4971,7 @@
                     listener: handleExpressionStatement(;)
           notEofOrValue(}, })
           listener: endBlockFunctionBody(6, {, })
-        listener: endTopLevelMethod(void, null, })
+        listener: endTopLevelMethod(int, null, })
   listener: endTopLevelDeclaration(int)
   parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
     parseMetadataStar(})
@@ -5555,30 +4979,14 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl(})
       listener: beginTopLevelMember(int)
-      parseFields(}, null, null, null, null, null, }, Instance of 'NoType', int, DeclarationKind.TopLevel, null)
-        reportRecoverableError(int, MissingConstFinalVarOrType)
-          listener: handleRecoverableError(MissingConstFinalVarOrType, int, int)
-        listener: handleNoType(})
-        ensureIdentifier(}, topLevelVariableDeclaration)
-          listener: handleIdentifier(int, topLevelVariableDeclaration)
-        parseFieldInitializerOpt(int, int, null, null, DeclarationKind.TopLevel, null)
-          listener: handleNoFieldInitializer(while)
-        ensureSemicolon(int)
-          reportRecoverableError(int, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
-            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
-          rewriter()
-        listener: endTopLevelFields(null, null, null, null, 1, int, ;)
-  listener: endTopLevelDeclaration(while)
-  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
-    parseMetadataStar(;)
-      listener: beginMetadataStar(while)
-      listener: endMetadataStar(0)
-    parseTopLevelMemberImpl(;)
-      listener: beginTopLevelMember(while)
-      parseTopLevelMethod(;, null, ;, Instance of 'NoType', null, while)
-        listener: beginTopLevelMethod(;, null)
-        listener: handleNoType(;)
-        ensureIdentifier(;, topLevelFunctionDeclaration)
+      isReservedKeyword(while)
+      indicatesMethodOrField(()
+      parseTopLevelMethod(}, null, }, Instance of 'SimpleType', null, while, true)
+        listener: beginTopLevelMethod(}, null)
+        listener: handleIdentifier(int, typeReference)
+        listener: handleNoTypeArguments(while)
+        listener: handleType(int, null)
+        ensureIdentifierPotentiallyRecovered(int, topLevelFunctionDeclaration, true)
           reportRecoverableErrorWithToken(while, Instance of 'Template<(Token) => Message>')
             listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'while'., null, {token: while}], while, while)
           listener: handleIdentifier(while, topLevelFunctionDeclaration)
@@ -5740,7 +5148,7 @@
                 listener: endWhileStatement(while, })
           notEofOrValue(}, })
           listener: endBlockFunctionBody(3, {, })
-        listener: endTopLevelMethod(while, null, })
+        listener: endTopLevelMethod(int, null, })
   listener: endTopLevelDeclaration(int)
   parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
     parseMetadataStar(})
@@ -5748,30 +5156,14 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl(})
       listener: beginTopLevelMember(int)
-      parseFields(}, null, null, null, null, null, }, Instance of 'NoType', int, DeclarationKind.TopLevel, null)
-        reportRecoverableError(int, MissingConstFinalVarOrType)
-          listener: handleRecoverableError(MissingConstFinalVarOrType, int, int)
-        listener: handleNoType(})
-        ensureIdentifier(}, topLevelVariableDeclaration)
-          listener: handleIdentifier(int, topLevelVariableDeclaration)
-        parseFieldInitializerOpt(int, int, null, null, DeclarationKind.TopLevel, null)
-          listener: handleNoFieldInitializer(with)
-        ensureSemicolon(int)
-          reportRecoverableError(int, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
-            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
-          rewriter()
-        listener: endTopLevelFields(null, null, null, null, 1, int, ;)
-  listener: endTopLevelDeclaration(with)
-  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
-    parseMetadataStar(;)
-      listener: beginMetadataStar(with)
-      listener: endMetadataStar(0)
-    parseTopLevelMemberImpl(;)
-      listener: beginTopLevelMember(with)
-      parseTopLevelMethod(;, null, ;, Instance of 'NoType', null, with)
-        listener: beginTopLevelMethod(;, null)
-        listener: handleNoType(;)
-        ensureIdentifier(;, topLevelFunctionDeclaration)
+      isReservedKeyword(with)
+      indicatesMethodOrField(()
+      parseTopLevelMethod(}, null, }, Instance of 'SimpleType', null, with, true)
+        listener: beginTopLevelMethod(}, null)
+        listener: handleIdentifier(int, typeReference)
+        listener: handleNoTypeArguments(with)
+        listener: handleType(int, null)
+        ensureIdentifierPotentiallyRecovered(int, topLevelFunctionDeclaration, true)
           reportRecoverableErrorWithToken(with, Instance of 'Template<(Token) => Message>')
             listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got 'with'., null, {token: with}], with, with)
           listener: handleIdentifier(with, topLevelFunctionDeclaration)
@@ -5896,7 +5288,7 @@
                 inGenerator()
           notEofOrValue(}, })
           listener: endBlockFunctionBody(2, {, })
-        listener: endTopLevelMethod(with, null, })
+        listener: endTopLevelMethod(int, null, })
   listener: endTopLevelDeclaration()
   reportAllErrorTokens(int)
-  listener: endCompilationUnit(71, )
+  listener: endCompilationUnit(33, )
diff --git a/pkg/front_end/parser_testcases/error_recovery/reserved_words_top_level_methods.dart.parser.expect b/pkg/front_end/parser_testcases/error_recovery/reserved_words_top_level_methods.dart.parser.expect
index 1dc529d..7e86c51 100644
--- a/pkg/front_end/parser_testcases/error_recovery/reserved_words_top_level_methods.dart.parser.expect
+++ b/pkg/front_end/parser_testcases/error_recovery/reserved_words_top_level_methods.dart.parser.expect
@@ -1,126 +1,126 @@
 NOTICE: Stream was rewritten by parser!
 
-int ;assert(int x) {
+int assert(int x) {
 if (x == 0) return 42;
 return assert(x-1) + 1;
 }
 
-int ;break(int x) {
+int break(int x) {
 if (x == 0) return 42;
 return ;break;(x-1) + 1;
 }
 
-int ;case(int x) {
+int case(int x) {
 if (x == 0) return 42;
 return case(x-1) + 1;
 }
 
-int ;catch(int x) {
+int catch(int x) {
 if (x == 0) return 42;
 return catch(x-1) + 1;
 }
 
-int ;class({}int x;) {
+int class(int x) {
 if (x == 0) return 42;
 return class(x-1) + 1;
 }
 
-int ;const(int x) {
+int const(int x) {
 if (x == 0) return 42;
 return const(x-1) + 1;
 }
 
-int ;continue(int x) {
+int continue(int x) {
 if (x == 0) return 42;
 return ;continue;(x-1) + 1;
 }
 
-int ;default(int x) {
+int default(int x) {
 if (x == 0) return 42;
 return default(x-1) + 1;
 }
 
-int ;do(int x) {
+int do(int x) {
 if (x == 0) return 42;
 return ;do(x-1) + 1;
 while();}
 
-int ;else(int x) {
+int else(int x) {
 if (x == 0) return 42;
 return ;;else(x-1) + 1;
 }
 
-int ;enum({}int x;) {
+int enum(int x) {
 if (x == 0) return 42;
 return enum(x-1) + 1;
 }
 
-int ;extends(int x) {
+int extends(int x) {
 if (x == 0) return 42;
 return extends(x-1) + 1;
 }
 
-int ;false(int x) {
+int false(int x) {
 if (x == 0) return 42;
 return false(x-1) + 1;
 }
 
-int ;final(int x) {
+int final(int x) {
 if (x == 0) return 42;
 return ;final(;x-1;;) + 1;
 }
 
-int ;finally(int x) {
+int finally(int x) {
 if (x == 0) return 42;
 return finally(x-1) + 1;
 }
 
-int ;for(int x) {
+int for(int x) {
 if (x == 0) return 42;
 return ;for(x-1;;) + 1;
 }
 
-int ;if(int x) {
+int if(int x) {
 if (x == 0) return 42;
 return ;if(x-1) + 1;
 }
 
-int ;in(int x) {
+int in(int x) {
 if (x == 0) return 42;
 return in(x-1) + 1;
 }
 
-int ;is(int x) {
+int is(int x) {
 if (x == 0) return 42;
 return is;(x-1) + 1;
 }
 
-int ;new(int x) {
+int new(int x) {
 if (x == 0) return 42;
 return new(x-1) + 1;
 }
 
-int ;null(int x) {
+int null(int x) {
 if (x == 0) return 42;
 return null(x-1) + 1;
 }
 
-int ;rethrow(int x) {
+int rethrow(int x) {
 if (x == 0) return 42;
 return rethrow(x-1) + 1;
 }
 
-int ;return(int x) {
+int return(int x) {
 if (x == 0) return 42;
 return return(x-1) + 1;
 }
 
-int ;super(int x) {
+int super(int x) {
 if (x == 0) return 42;
 return super(x-1) + 1;
 }
 
-int ;switch(int x) {
+int switch(int x) {
 if (x == 0) return 42;
 return ;switch(x-1) {}+ 1;
 }
@@ -130,163 +130,163 @@
 return this(x-1) + 1;
 }
 
-int ;throw(int x) {
+int throw(int x) {
 if (x == 0) return 42;
 return throw(x-1) + 1;
 }
 
-int ;true(int x) {
+int true(int x) {
 if (x == 0) return 42;
 return true(x-1) + 1;
 }
 
-int ;try(int x) {
+int try(int x) {
 if (x == 0) return 42;
 return ;try{}(x-1) + 1;
 }
 
-int ;var(int x) {
+int var(int x) {
 if (x == 0) return 42;
 return ;var(;x-1;;) + 1;
 }
 
-int ;void(int x) {
+int void(int x) {
 if (x == 0) return 42;
 return ;void(;x-1;;) + 1;
 }
 
-int ;while(int x) {
+int while(int x) {
 if (x == 0) return 42;
 return ;while(x-1) + 1;
 }
 
-int ;with(int x) {
+int with(int x) {
 if (x == 0) return 42;
 return with(x-1) + 1;
 }
 
 
-int[StringToken] ;[SyntheticToken]assert[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+int[StringToken] assert[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
 if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
 return[KeywordToken] assert[KeywordToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] +[SimpleToken] 1[StringToken];[SimpleToken]
 }[SimpleToken]
 
-int[StringToken] ;[SyntheticToken]break[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+int[StringToken] break[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
 if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
 return[KeywordToken] [SyntheticStringToken];[SyntheticToken]break[KeywordToken];[SyntheticToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] +[SimpleToken] 1[StringToken];[SimpleToken]
 }[SimpleToken]
 
-int[StringToken] ;[SyntheticToken]case[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+int[StringToken] case[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
 if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
 return[KeywordToken] case[KeywordToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] +[SimpleToken] 1[StringToken];[SimpleToken]
 }[SimpleToken]
 
-int[StringToken] ;[SyntheticToken]catch[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+int[StringToken] catch[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
 if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
 return[KeywordToken] catch[KeywordToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] +[SimpleToken] 1[StringToken];[SimpleToken]
 }[SimpleToken]
 
-int[StringToken] ;[SyntheticToken]class[KeywordToken]([BeginToken][SyntheticStringToken]{[SyntheticBeginToken]}[SyntheticToken]int[StringToken] x[StringToken];[SyntheticToken])[SimpleToken] {[BeginToken]
+int[StringToken] class[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
 if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
 return[KeywordToken] class[KeywordToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] +[SimpleToken] 1[StringToken];[SimpleToken]
 }[SimpleToken]
 
-int[StringToken] ;[SyntheticToken]const[KeywordToken][SyntheticStringToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+int[StringToken] const[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
 if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
 return[KeywordToken] const[KeywordToken][SyntheticStringToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] +[SimpleToken] 1[StringToken];[SimpleToken]
 }[SimpleToken]
 
-int[StringToken] ;[SyntheticToken]continue[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+int[StringToken] continue[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
 if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
 return[KeywordToken] [SyntheticStringToken];[SyntheticToken]continue[KeywordToken];[SyntheticToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] +[SimpleToken] 1[StringToken];[SimpleToken]
 }[SimpleToken]
 
-int[StringToken] ;[SyntheticToken]default[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+int[StringToken] default[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
 if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
 return[KeywordToken] default[KeywordToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] +[SimpleToken] 1[StringToken];[SimpleToken]
 }[SimpleToken]
 
-int[StringToken] ;[SyntheticToken]do[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+int[StringToken] do[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
 if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
 return[KeywordToken] [SyntheticStringToken];[SyntheticToken]do[KeywordToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] +[SimpleToken] 1[StringToken];[SimpleToken]
 while[SyntheticKeywordToken]([SyntheticBeginToken][SyntheticStringToken])[SyntheticToken];[SyntheticToken]}[SimpleToken]
 
-int[StringToken] ;[SyntheticToken]else[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+int[StringToken] else[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
 if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
 return[KeywordToken] [SyntheticStringToken];[SyntheticToken][SyntheticStringToken];[SyntheticToken]else[KeywordToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] +[SimpleToken] 1[StringToken];[SimpleToken]
 }[SimpleToken]
 
-int[StringToken] ;[SyntheticToken]enum[KeywordToken]([BeginToken][SyntheticStringToken]{[SyntheticBeginToken]}[SyntheticToken]int[StringToken] x[StringToken];[SyntheticToken])[SimpleToken] {[BeginToken]
+int[StringToken] enum[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
 if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
 return[KeywordToken] enum[KeywordToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] +[SimpleToken] 1[StringToken];[SimpleToken]
 }[SimpleToken]
 
-int[StringToken] ;[SyntheticToken]extends[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+int[StringToken] extends[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
 if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
 return[KeywordToken] extends[KeywordToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] +[SimpleToken] 1[StringToken];[SimpleToken]
 }[SimpleToken]
 
-int[StringToken] ;[SyntheticToken]false[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+int[StringToken] false[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
 if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
 return[KeywordToken] false[KeywordToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] +[SimpleToken] 1[StringToken];[SimpleToken]
 }[SimpleToken]
 
-int[StringToken] ;[SyntheticToken]final[KeywordToken][SyntheticStringToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+int[StringToken] final[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
 if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
 return[KeywordToken] [SyntheticStringToken];[SyntheticToken]final[KeywordToken]([BeginToken][SyntheticStringToken];[SyntheticToken]x[StringToken]-[SimpleToken]1[StringToken];[SyntheticToken][SyntheticStringToken];[SyntheticToken])[SimpleToken] [SyntheticStringToken]+[SimpleToken] 1[StringToken];[SimpleToken]
 }[SimpleToken]
 
-int[StringToken] ;[SyntheticToken]finally[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+int[StringToken] finally[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
 if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
 return[KeywordToken] finally[KeywordToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] +[SimpleToken] 1[StringToken];[SimpleToken]
 }[SimpleToken]
 
-int[StringToken] ;[SyntheticToken]for[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+int[StringToken] for[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
 if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
 return[KeywordToken] [SyntheticStringToken];[SyntheticToken]for[KeywordToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken];[SyntheticToken][SyntheticStringToken];[SyntheticToken])[SimpleToken] [SyntheticStringToken]+[SimpleToken] 1[StringToken];[SimpleToken]
 }[SimpleToken]
 
-int[StringToken] ;[SyntheticToken]if[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+int[StringToken] if[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
 if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
 return[KeywordToken] [SyntheticStringToken];[SyntheticToken]if[KeywordToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] [SyntheticStringToken]+[SimpleToken] 1[StringToken];[SimpleToken]
 }[SimpleToken]
 
-int[StringToken] ;[SyntheticToken]in[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+int[StringToken] in[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
 if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
 return[KeywordToken] in[KeywordToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] +[SimpleToken] 1[StringToken];[SimpleToken]
 }[SimpleToken]
 
-int[StringToken] ;[SyntheticToken]is[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+int[StringToken] is[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
 if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
 return[KeywordToken] [SyntheticStringToken]is[KeywordToken][SyntheticStringToken];[SyntheticToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] +[SimpleToken] 1[StringToken];[SimpleToken]
 }[SimpleToken]
 
-int[StringToken] ;[SyntheticToken]new[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+int[StringToken] new[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
 if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
 return[KeywordToken] new[KeywordToken][SyntheticStringToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] +[SimpleToken] 1[StringToken];[SimpleToken]
 }[SimpleToken]
 
-int[StringToken] ;[SyntheticToken]null[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+int[StringToken] null[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
 if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
 return[KeywordToken] null[KeywordToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] +[SimpleToken] 1[StringToken];[SimpleToken]
 }[SimpleToken]
 
-int[StringToken] ;[SyntheticToken]rethrow[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+int[StringToken] rethrow[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
 if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
 return[KeywordToken] rethrow[KeywordToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] +[SimpleToken] 1[StringToken];[SimpleToken]
 }[SimpleToken]
 
-int[StringToken] ;[SyntheticToken]return[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+int[StringToken] return[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
 if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
 return[KeywordToken] return[KeywordToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] +[SimpleToken] 1[StringToken];[SimpleToken]
 }[SimpleToken]
 
-int[StringToken] ;[SyntheticToken]super[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+int[StringToken] super[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
 if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
 return[KeywordToken] super[KeywordToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] +[SimpleToken] 1[StringToken];[SimpleToken]
 }[SimpleToken]
 
-int[StringToken] ;[SyntheticToken]switch[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+int[StringToken] switch[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
 if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
 return[KeywordToken] [SyntheticStringToken];[SyntheticToken]switch[KeywordToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] {[SyntheticBeginToken]}[SyntheticToken][SyntheticStringToken]+[SimpleToken] 1[StringToken];[SimpleToken]
 }[SimpleToken]
@@ -296,37 +296,37 @@
 return[KeywordToken] this[KeywordToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] +[SimpleToken] 1[StringToken];[SimpleToken]
 }[SimpleToken]
 
-int[StringToken] ;[SyntheticToken]throw[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+int[StringToken] throw[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
 if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
 return[KeywordToken] throw[KeywordToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] +[SimpleToken] 1[StringToken];[SimpleToken]
 }[SimpleToken]
 
-int[StringToken] ;[SyntheticToken]true[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+int[StringToken] true[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
 if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
 return[KeywordToken] true[KeywordToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] +[SimpleToken] 1[StringToken];[SimpleToken]
 }[SimpleToken]
 
-int[StringToken] ;[SyntheticToken]try[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+int[StringToken] try[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
 if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
 return[KeywordToken] [SyntheticStringToken];[SyntheticToken]try[KeywordToken]{[SyntheticBeginToken]}[SyntheticToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] +[SimpleToken] 1[StringToken];[SimpleToken]
 }[SimpleToken]
 
-int[StringToken] ;[SyntheticToken]var[KeywordToken][SyntheticStringToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+int[StringToken] var[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
 if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
 return[KeywordToken] [SyntheticStringToken];[SyntheticToken]var[KeywordToken]([BeginToken][SyntheticStringToken];[SyntheticToken]x[StringToken]-[SimpleToken]1[StringToken];[SyntheticToken][SyntheticStringToken];[SyntheticToken])[SimpleToken] [SyntheticStringToken]+[SimpleToken] 1[StringToken];[SimpleToken]
 }[SimpleToken]
 
-int[StringToken] ;[SyntheticToken]void[KeywordToken][SyntheticStringToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+int[StringToken] void[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
 if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
 return[KeywordToken] [SyntheticStringToken];[SyntheticToken]void[KeywordToken]([BeginToken][SyntheticStringToken];[SyntheticToken]x[StringToken]-[SimpleToken]1[StringToken];[SyntheticToken][SyntheticStringToken];[SyntheticToken])[SimpleToken] [SyntheticStringToken]+[SimpleToken] 1[StringToken];[SimpleToken]
 }[SimpleToken]
 
-int[StringToken] ;[SyntheticToken]while[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+int[StringToken] while[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
 if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
 return[KeywordToken] [SyntheticStringToken];[SyntheticToken]while[KeywordToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] [SyntheticStringToken]+[SimpleToken] 1[StringToken];[SimpleToken]
 }[SimpleToken]
 
-int[StringToken] ;[SyntheticToken]with[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+int[StringToken] with[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
 if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
 return[KeywordToken] with[KeywordToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] +[SimpleToken] 1[StringToken];[SimpleToken]
 }[SimpleToken]
diff --git a/pkg/front_end/parser_testcases/error_recovery/utf_16_le_content.crash_dart.expect b/pkg/front_end/parser_testcases/error_recovery/utf_16_le_content.crash_dart.expect
index cbfa036..3f36091 100644
--- a/pkg/front_end/parser_testcases/error_recovery/utf_16_le_content.crash_dart.expect
+++ b/pkg/front_end/parser_testcases/error_recovery/utf_16_le_content.crash_dart.expect
Binary files differ
diff --git a/pkg/front_end/parser_testcases/error_recovery/utf_16_le_content.crash_dart.intertwined.expect b/pkg/front_end/parser_testcases/error_recovery/utf_16_le_content.crash_dart.intertwined.expect
index 95a1a29..3fa4232 100644
--- a/pkg/front_end/parser_testcases/error_recovery/utf_16_le_content.crash_dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/error_recovery/utf_16_le_content.crash_dart.intertwined.expect
@@ -28,11 +28,11 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl(/)
       listener: beginTopLevelMember(C)
-      parseFields(/, null, null, null, null, null, /, Instance of 'SimpleType', o, DeclarationKind.TopLevel, null)
+      parseFields(/, null, null, null, null, null, /, Instance of 'SimpleType', o, DeclarationKind.TopLevel, null, false)
         listener: handleIdentifier(C, typeReference)
         listener: handleNoTypeArguments(o)
         listener: handleType(C, null)
-        ensureIdentifier(C, topLevelVariableDeclaration)
+        ensureIdentifierPotentiallyRecovered(C, topLevelVariableDeclaration, false)
           listener: handleIdentifier(o, topLevelVariableDeclaration)
         parseFieldInitializerOpt(o, o, null, null, DeclarationKind.TopLevel, null)
           listener: handleNoFieldInitializer(p)
@@ -48,11 +48,11 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(p)
-      parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', y, DeclarationKind.TopLevel, null)
+      parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', y, DeclarationKind.TopLevel, null, false)
         listener: handleIdentifier(p, typeReference)
         listener: handleNoTypeArguments(y)
         listener: handleType(p, null)
-        ensureIdentifier(p, topLevelVariableDeclaration)
+        ensureIdentifierPotentiallyRecovered(p, topLevelVariableDeclaration, false)
           listener: handleIdentifier(y, topLevelVariableDeclaration)
         parseFieldInitializerOpt(y, y, null, null, DeclarationKind.TopLevel, null)
           listener: handleNoFieldInitializer(r)
@@ -68,11 +68,11 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(r)
-      parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', i, DeclarationKind.TopLevel, null)
+      parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', i, DeclarationKind.TopLevel, null, false)
         listener: handleIdentifier(r, typeReference)
         listener: handleNoTypeArguments(i)
         listener: handleType(r, null)
-        ensureIdentifier(r, topLevelVariableDeclaration)
+        ensureIdentifierPotentiallyRecovered(r, topLevelVariableDeclaration, false)
           listener: handleIdentifier(i, topLevelVariableDeclaration)
         parseFieldInitializerOpt(i, i, null, null, DeclarationKind.TopLevel, null)
           listener: handleNoFieldInitializer(g)
@@ -88,11 +88,11 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(g)
-      parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', h, DeclarationKind.TopLevel, null)
+      parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', h, DeclarationKind.TopLevel, null, false)
         listener: handleIdentifier(g, typeReference)
         listener: handleNoTypeArguments(h)
         listener: handleType(g, null)
-        ensureIdentifier(g, topLevelVariableDeclaration)
+        ensureIdentifierPotentiallyRecovered(g, topLevelVariableDeclaration, false)
           listener: handleIdentifier(h, topLevelVariableDeclaration)
         parseFieldInitializerOpt(h, h, null, null, DeclarationKind.TopLevel, null)
           listener: handleNoFieldInitializer(t)
@@ -108,10 +108,11 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(t)
-      parseTopLevelMethod(;, null, ;, Instance of 'NoType', null, t)
+      isReservedKeyword(()
+      parseTopLevelMethod(;, null, ;, Instance of 'NoType', null, t, false)
         listener: beginTopLevelMethod(;, null)
         listener: handleNoType(;)
-        ensureIdentifier(;, topLevelFunctionDeclaration)
+        ensureIdentifierPotentiallyRecovered(;, topLevelFunctionDeclaration, false)
           listener: handleIdentifier(t, topLevelFunctionDeclaration)
         parseMethodTypeVar(t)
           listener: handleNoTypeVariables(()
@@ -199,11 +200,11 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl(,)
       listener: beginTopLevelMember(t)
-      parseFields(,, null, null, null, null, null, ,, Instance of 'SimpleType', h, DeclarationKind.TopLevel, null)
+      parseFields(,, null, null, null, null, null, ,, Instance of 'SimpleType', h, DeclarationKind.TopLevel, null, false)
         listener: handleIdentifier(t, typeReference)
         listener: handleNoTypeArguments(h)
         listener: handleType(t, null)
-        ensureIdentifier(t, topLevelVariableDeclaration)
+        ensureIdentifierPotentiallyRecovered(t, topLevelVariableDeclaration, false)
           listener: handleIdentifier(h, topLevelVariableDeclaration)
         parseFieldInitializerOpt(h, h, null, null, DeclarationKind.TopLevel, null)
           listener: handleNoFieldInitializer(e)
@@ -219,11 +220,11 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(e)
-      parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', D, DeclarationKind.TopLevel, null)
+      parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', D, DeclarationKind.TopLevel, null, false)
         listener: handleIdentifier(e, typeReference)
         listener: handleNoTypeArguments(D)
         listener: handleType(e, null)
-        ensureIdentifier(e, topLevelVariableDeclaration)
+        ensureIdentifierPotentiallyRecovered(e, topLevelVariableDeclaration, false)
           listener: handleIdentifier(D, topLevelVariableDeclaration)
         parseFieldInitializerOpt(D, D, null, null, DeclarationKind.TopLevel, null)
           listener: handleNoFieldInitializer(a)
@@ -239,11 +240,11 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(a)
-      parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', r, DeclarationKind.TopLevel, null)
+      parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', r, DeclarationKind.TopLevel, null, false)
         listener: handleIdentifier(a, typeReference)
         listener: handleNoTypeArguments(r)
         listener: handleType(a, null)
-        ensureIdentifier(a, topLevelVariableDeclaration)
+        ensureIdentifierPotentiallyRecovered(a, topLevelVariableDeclaration, false)
           listener: handleIdentifier(r, topLevelVariableDeclaration)
         parseFieldInitializerOpt(r, r, null, null, DeclarationKind.TopLevel, null)
           listener: handleNoFieldInitializer(t)
@@ -259,11 +260,11 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(t)
-      parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', p, DeclarationKind.TopLevel, null)
+      parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', p, DeclarationKind.TopLevel, null, false)
         listener: handleIdentifier(t, typeReference)
         listener: handleNoTypeArguments(p)
         listener: handleType(t, null)
-        ensureIdentifier(t, topLevelVariableDeclaration)
+        ensureIdentifierPotentiallyRecovered(t, topLevelVariableDeclaration, false)
           listener: handleIdentifier(p, topLevelVariableDeclaration)
         parseFieldInitializerOpt(p, p, null, null, DeclarationKind.TopLevel, null)
           listener: handleNoFieldInitializer(r)
@@ -279,11 +280,11 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(r)
-      parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', o, DeclarationKind.TopLevel, null)
+      parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', o, DeclarationKind.TopLevel, null, false)
         listener: handleIdentifier(r, typeReference)
         listener: handleNoTypeArguments(o)
         listener: handleType(r, null)
-        ensureIdentifier(r, topLevelVariableDeclaration)
+        ensureIdentifierPotentiallyRecovered(r, topLevelVariableDeclaration, false)
           listener: handleIdentifier(o, topLevelVariableDeclaration)
         parseFieldInitializerOpt(o, o, null, null, DeclarationKind.TopLevel, null)
           listener: handleNoFieldInitializer(j)
@@ -299,11 +300,11 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(j)
-      parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', e, DeclarationKind.TopLevel, null)
+      parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', e, DeclarationKind.TopLevel, null, false)
         listener: handleIdentifier(j, typeReference)
         listener: handleNoTypeArguments(e)
         listener: handleType(j, null)
-        ensureIdentifier(j, topLevelVariableDeclaration)
+        ensureIdentifierPotentiallyRecovered(j, topLevelVariableDeclaration, false)
           listener: handleIdentifier(e, topLevelVariableDeclaration)
         parseFieldInitializerOpt(e, e, null, null, DeclarationKind.TopLevel, null)
           listener: handleNoFieldInitializer(c)
@@ -319,11 +320,11 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(c)
-      parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', t, DeclarationKind.TopLevel, null)
+      parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', t, DeclarationKind.TopLevel, null, false)
         listener: handleIdentifier(c, typeReference)
         listener: handleNoTypeArguments(t)
         listener: handleType(c, null)
-        ensureIdentifier(c, topLevelVariableDeclaration)
+        ensureIdentifierPotentiallyRecovered(c, topLevelVariableDeclaration, false)
           listener: handleIdentifier(t, topLevelVariableDeclaration)
         parseFieldInitializerOpt(t, t, null, null, DeclarationKind.TopLevel, null)
           listener: handleNoFieldInitializer(a)
@@ -339,11 +340,11 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(a)
-      parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', u, DeclarationKind.TopLevel, null)
+      parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', u, DeclarationKind.TopLevel, null, false)
         listener: handleIdentifier(a, typeReference)
         listener: handleNoTypeArguments(u)
         listener: handleType(a, null)
-        ensureIdentifier(a, topLevelVariableDeclaration)
+        ensureIdentifierPotentiallyRecovered(a, topLevelVariableDeclaration, false)
           listener: handleIdentifier(u, topLevelVariableDeclaration)
         parseFieldInitializerOpt(u, u, null, null, DeclarationKind.TopLevel, null)
           listener: handleNoFieldInitializer(t)
@@ -359,11 +360,11 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(t)
-      parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', h, DeclarationKind.TopLevel, null)
+      parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', h, DeclarationKind.TopLevel, null, false)
         listener: handleIdentifier(t, typeReference)
         listener: handleNoTypeArguments(h)
         listener: handleType(t, null)
-        ensureIdentifier(t, topLevelVariableDeclaration)
+        ensureIdentifierPotentiallyRecovered(t, topLevelVariableDeclaration, false)
           listener: handleIdentifier(h, topLevelVariableDeclaration)
         parseFieldInitializerOpt(h, h, null, null, DeclarationKind.TopLevel, null)
           listener: handleNoFieldInitializer(o)
@@ -379,11 +380,11 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(o)
-      parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', r, DeclarationKind.TopLevel, null)
+      parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', r, DeclarationKind.TopLevel, null, false)
         listener: handleIdentifier(o, typeReference)
         listener: handleNoTypeArguments(r)
         listener: handleType(o, null)
-        ensureIdentifier(o, topLevelVariableDeclaration)
+        ensureIdentifierPotentiallyRecovered(o, topLevelVariableDeclaration, false)
           listener: handleIdentifier(r, topLevelVariableDeclaration)
         parseFieldInitializerOpt(r, r, null, null, DeclarationKind.TopLevel, null)
           listener: handleNoFieldInitializer(s)
@@ -399,13 +400,13 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(s)
-      parseFields(;, null, null, null, null, null, ;, Instance of 'PrefixedType', l, DeclarationKind.TopLevel, null)
+      parseFields(;, null, null, null, null, null, ;, Instance of 'PrefixedType', l, DeclarationKind.TopLevel, null, false)
         listener: handleIdentifier(s, prefixedTypeReference)
         listener: handleIdentifier(P, typeReferenceContinuation)
         listener: handleQualified(.)
         listener: handleNoTypeArguments(l)
         listener: handleType(s, null)
-        ensureIdentifier(P, topLevelVariableDeclaration)
+        ensureIdentifierPotentiallyRecovered(P, topLevelVariableDeclaration, false)
           listener: handleIdentifier(l, topLevelVariableDeclaration)
         parseFieldInitializerOpt(l, l, null, null, DeclarationKind.TopLevel, null)
           listener: handleNoFieldInitializer(e)
@@ -421,11 +422,11 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(e)
-      parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', a, DeclarationKind.TopLevel, null)
+      parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', a, DeclarationKind.TopLevel, null, false)
         listener: handleIdentifier(e, typeReference)
         listener: handleNoTypeArguments(a)
         listener: handleType(e, null)
-        ensureIdentifier(e, topLevelVariableDeclaration)
+        ensureIdentifierPotentiallyRecovered(e, topLevelVariableDeclaration, false)
           listener: handleIdentifier(a, topLevelVariableDeclaration)
         parseFieldInitializerOpt(a, a, null, null, DeclarationKind.TopLevel, null)
           listener: handleNoFieldInitializer(s)
@@ -441,11 +442,11 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(s)
-      parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', e, DeclarationKind.TopLevel, null)
+      parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', e, DeclarationKind.TopLevel, null, false)
         listener: handleIdentifier(s, typeReference)
         listener: handleNoTypeArguments(e)
         listener: handleType(s, null)
-        ensureIdentifier(s, topLevelVariableDeclaration)
+        ensureIdentifierPotentiallyRecovered(s, topLevelVariableDeclaration, false)
           listener: handleIdentifier(e, topLevelVariableDeclaration)
         parseFieldInitializerOpt(e, e, null, null, DeclarationKind.TopLevel, null)
           listener: handleNoFieldInitializer(s)
@@ -461,11 +462,11 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(s)
-      parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', e, DeclarationKind.TopLevel, null)
+      parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', e, DeclarationKind.TopLevel, null, false)
         listener: handleIdentifier(s, typeReference)
         listener: handleNoTypeArguments(e)
         listener: handleType(s, null)
-        ensureIdentifier(s, topLevelVariableDeclaration)
+        ensureIdentifierPotentiallyRecovered(s, topLevelVariableDeclaration, false)
           listener: handleIdentifier(e, topLevelVariableDeclaration)
         parseFieldInitializerOpt(e, e, null, null, DeclarationKind.TopLevel, null)
           listener: handleNoFieldInitializer(e)
@@ -481,11 +482,11 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(e)
-      parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', t, DeclarationKind.TopLevel, null)
+      parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', t, DeclarationKind.TopLevel, null, false)
         listener: handleIdentifier(e, typeReference)
         listener: handleNoTypeArguments(t)
         listener: handleType(e, null)
-        ensureIdentifier(e, topLevelVariableDeclaration)
+        ensureIdentifierPotentiallyRecovered(e, topLevelVariableDeclaration, false)
           listener: handleIdentifier(t, topLevelVariableDeclaration)
         parseFieldInitializerOpt(t, t, null, null, DeclarationKind.TopLevel, null)
           listener: handleNoFieldInitializer(h)
@@ -501,11 +502,11 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(h)
-      parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', e, DeclarationKind.TopLevel, null)
+      parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', e, DeclarationKind.TopLevel, null, false)
         listener: handleIdentifier(h, typeReference)
         listener: handleNoTypeArguments(e)
         listener: handleType(h, null)
-        ensureIdentifier(h, topLevelVariableDeclaration)
+        ensureIdentifierPotentiallyRecovered(h, topLevelVariableDeclaration, false)
           listener: handleIdentifier(e, topLevelVariableDeclaration)
         parseFieldInitializerOpt(e, e, null, null, DeclarationKind.TopLevel, null)
           listener: handleNoFieldInitializer(A)
@@ -521,11 +522,11 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(A)
-      parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', U, DeclarationKind.TopLevel, null)
+      parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', U, DeclarationKind.TopLevel, null, false)
         listener: handleIdentifier(A, typeReference)
         listener: handleNoTypeArguments(U)
         listener: handleType(A, null)
-        ensureIdentifier(A, topLevelVariableDeclaration)
+        ensureIdentifierPotentiallyRecovered(A, topLevelVariableDeclaration, false)
           listener: handleIdentifier(U, topLevelVariableDeclaration)
         parseFieldInitializerOpt(U, U, null, null, DeclarationKind.TopLevel, null)
           listener: handleNoFieldInitializer(T)
@@ -541,11 +542,11 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(T)
-      parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', H, DeclarationKind.TopLevel, null)
+      parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', H, DeclarationKind.TopLevel, null, false)
         listener: handleIdentifier(T, typeReference)
         listener: handleNoTypeArguments(H)
         listener: handleType(T, null)
-        ensureIdentifier(T, topLevelVariableDeclaration)
+        ensureIdentifierPotentiallyRecovered(T, topLevelVariableDeclaration, false)
           listener: handleIdentifier(H, topLevelVariableDeclaration)
         parseFieldInitializerOpt(H, H, null, null, DeclarationKind.TopLevel, null)
           listener: handleNoFieldInitializer(O)
@@ -561,11 +562,11 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(O)
-      parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', R, DeclarationKind.TopLevel, null)
+      parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', R, DeclarationKind.TopLevel, null, false)
         listener: handleIdentifier(O, typeReference)
         listener: handleNoTypeArguments(R)
         listener: handleType(O, null)
-        ensureIdentifier(O, topLevelVariableDeclaration)
+        ensureIdentifierPotentiallyRecovered(O, topLevelVariableDeclaration, false)
           listener: handleIdentifier(R, topLevelVariableDeclaration)
         parseFieldInitializerOpt(R, R, null, null, DeclarationKind.TopLevel, null)
           listener: handleNoFieldInitializer(S)
@@ -581,11 +582,11 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(S)
-      parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', f, DeclarationKind.TopLevel, null)
+      parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', f, DeclarationKind.TopLevel, null, false)
         listener: handleIdentifier(S, typeReference)
         listener: handleNoTypeArguments(f)
         listener: handleType(S, null)
-        ensureIdentifier(S, topLevelVariableDeclaration)
+        ensureIdentifierPotentiallyRecovered(S, topLevelVariableDeclaration, false)
           listener: handleIdentifier(f, topLevelVariableDeclaration)
         parseFieldInitializerOpt(f, f, null, null, DeclarationKind.TopLevel, null)
           listener: handleNoFieldInitializer(i)
@@ -601,11 +602,11 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(i)
-      parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', l, DeclarationKind.TopLevel, null)
+      parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', l, DeclarationKind.TopLevel, null, false)
         listener: handleIdentifier(i, typeReference)
         listener: handleNoTypeArguments(l)
         listener: handleType(i, null)
-        ensureIdentifier(i, topLevelVariableDeclaration)
+        ensureIdentifierPotentiallyRecovered(i, topLevelVariableDeclaration, false)
           listener: handleIdentifier(l, topLevelVariableDeclaration)
         parseFieldInitializerOpt(l, l, null, null, DeclarationKind.TopLevel, null)
           listener: handleNoFieldInitializer(e)
@@ -621,11 +622,12 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(e)
-      parseFields(;, null, null, null, null, null, ;, Instance of 'NoType', e, DeclarationKind.TopLevel, null)
+      isReservedKeyword(/)
+      parseFields(;, null, null, null, null, null, ;, Instance of 'NoType', e, DeclarationKind.TopLevel, null, false)
         reportRecoverableError(e, MissingConstFinalVarOrType)
           listener: handleRecoverableError(MissingConstFinalVarOrType, e, e)
         listener: handleNoType(;)
-        ensureIdentifier(;, topLevelVariableDeclaration)
+        ensureIdentifierPotentiallyRecovered(;, topLevelVariableDeclaration, false)
           listener: handleIdentifier(e, topLevelVariableDeclaration)
         parseFieldInitializerOpt(e, e, null, null, DeclarationKind.TopLevel, null)
           listener: handleNoFieldInitializer(/)
@@ -661,11 +663,11 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl(/)
       listener: beginTopLevelMember(f)
-      parseFields(/, null, null, null, null, null, /, Instance of 'SimpleType', o, DeclarationKind.TopLevel, null)
+      parseFields(/, null, null, null, null, null, /, Instance of 'SimpleType', o, DeclarationKind.TopLevel, null, false)
         listener: handleIdentifier(f, typeReference)
         listener: handleNoTypeArguments(o)
         listener: handleType(f, null)
-        ensureIdentifier(f, topLevelVariableDeclaration)
+        ensureIdentifierPotentiallyRecovered(f, topLevelVariableDeclaration, false)
           listener: handleIdentifier(o, topLevelVariableDeclaration)
         parseFieldInitializerOpt(o, o, null, null, DeclarationKind.TopLevel, null)
           listener: handleNoFieldInitializer(r)
@@ -681,11 +683,11 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(r)
-      parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', d, DeclarationKind.TopLevel, null)
+      parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', d, DeclarationKind.TopLevel, null, false)
         listener: handleIdentifier(r, typeReference)
         listener: handleNoTypeArguments(d)
         listener: handleType(r, null)
-        ensureIdentifier(r, topLevelVariableDeclaration)
+        ensureIdentifierPotentiallyRecovered(r, topLevelVariableDeclaration, false)
           listener: handleIdentifier(d, topLevelVariableDeclaration)
         parseFieldInitializerOpt(d, d, null, null, DeclarationKind.TopLevel, null)
           listener: handleNoFieldInitializer(e)
@@ -701,11 +703,11 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(e)
-      parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', t, DeclarationKind.TopLevel, null)
+      parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', t, DeclarationKind.TopLevel, null, false)
         listener: handleIdentifier(e, typeReference)
         listener: handleNoTypeArguments(t)
         listener: handleType(e, null)
-        ensureIdentifier(e, topLevelVariableDeclaration)
+        ensureIdentifierPotentiallyRecovered(e, topLevelVariableDeclaration, false)
           listener: handleIdentifier(t, topLevelVariableDeclaration)
         parseFieldInitializerOpt(t, t, null, null, DeclarationKind.TopLevel, null)
           listener: handleNoFieldInitializer(a)
@@ -721,11 +723,11 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(a)
-      parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', i, DeclarationKind.TopLevel, null)
+      parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', i, DeclarationKind.TopLevel, null, false)
         listener: handleIdentifier(a, typeReference)
         listener: handleNoTypeArguments(i)
         listener: handleType(a, null)
-        ensureIdentifier(a, topLevelVariableDeclaration)
+        ensureIdentifierPotentiallyRecovered(a, topLevelVariableDeclaration, false)
           listener: handleIdentifier(i, topLevelVariableDeclaration)
         parseFieldInitializerOpt(i, i, null, null, DeclarationKind.TopLevel, null)
           listener: handleNoFieldInitializer(l)
@@ -741,12 +743,12 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(l)
-      parseTopLevelMethod(;, null, ;, Instance of 'SimpleType', null, s)
+      parseTopLevelMethod(;, null, ;, Instance of 'SimpleType', null, s, false)
         listener: beginTopLevelMethod(;, null)
         listener: handleIdentifier(l, typeReference)
         listener: handleNoTypeArguments(s)
         listener: handleType(l, null)
-        ensureIdentifier(l, topLevelFunctionDeclaration)
+        ensureIdentifierPotentiallyRecovered(l, topLevelFunctionDeclaration, false)
           listener: handleIdentifier(s, topLevelFunctionDeclaration)
         parseMethodTypeVar(s)
           listener: handleNoTypeVariables(.)
@@ -787,11 +789,11 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl(.)
       listener: beginTopLevelMember(A)
-      parseFields(., null, null, null, null, null, ., Instance of 'SimpleType', l, DeclarationKind.TopLevel, null)
+      parseFields(., null, null, null, null, null, ., Instance of 'SimpleType', l, DeclarationKind.TopLevel, null, false)
         listener: handleIdentifier(A, typeReference)
         listener: handleNoTypeArguments(l)
         listener: handleType(A, null)
-        ensureIdentifier(A, topLevelVariableDeclaration)
+        ensureIdentifierPotentiallyRecovered(A, topLevelVariableDeclaration, false)
           listener: handleIdentifier(l, topLevelVariableDeclaration)
         parseFieldInitializerOpt(l, l, null, null, DeclarationKind.TopLevel, null)
           listener: handleNoFieldInitializer(l)
@@ -807,11 +809,11 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(l)
-      parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', r, DeclarationKind.TopLevel, null)
+      parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', r, DeclarationKind.TopLevel, null, false)
         listener: handleIdentifier(l, typeReference)
         listener: handleNoTypeArguments(r)
         listener: handleType(l, null)
-        ensureIdentifier(l, topLevelVariableDeclaration)
+        ensureIdentifierPotentiallyRecovered(l, topLevelVariableDeclaration, false)
           listener: handleIdentifier(r, topLevelVariableDeclaration)
         parseFieldInitializerOpt(r, r, null, null, DeclarationKind.TopLevel, null)
           listener: handleNoFieldInitializer(i)
@@ -827,11 +829,11 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(i)
-      parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', g, DeclarationKind.TopLevel, null)
+      parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', g, DeclarationKind.TopLevel, null, false)
         listener: handleIdentifier(i, typeReference)
         listener: handleNoTypeArguments(g)
         listener: handleType(i, null)
-        ensureIdentifier(i, topLevelVariableDeclaration)
+        ensureIdentifierPotentiallyRecovered(i, topLevelVariableDeclaration, false)
           listener: handleIdentifier(g, topLevelVariableDeclaration)
         parseFieldInitializerOpt(g, g, null, null, DeclarationKind.TopLevel, null)
           listener: handleNoFieldInitializer(h)
@@ -847,11 +849,11 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(h)
-      parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', t, DeclarationKind.TopLevel, null)
+      parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', t, DeclarationKind.TopLevel, null, false)
         listener: handleIdentifier(h, typeReference)
         listener: handleNoTypeArguments(t)
         listener: handleType(h, null)
-        ensureIdentifier(h, topLevelVariableDeclaration)
+        ensureIdentifierPotentiallyRecovered(h, topLevelVariableDeclaration, false)
           listener: handleIdentifier(t, topLevelVariableDeclaration)
         parseFieldInitializerOpt(t, t, null, null, DeclarationKind.TopLevel, null)
           listener: handleNoFieldInitializer(s)
@@ -867,11 +869,11 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(s)
-      parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', r, DeclarationKind.TopLevel, null)
+      parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', r, DeclarationKind.TopLevel, null, false)
         listener: handleIdentifier(s, typeReference)
         listener: handleNoTypeArguments(r)
         listener: handleType(s, null)
-        ensureIdentifier(s, topLevelVariableDeclaration)
+        ensureIdentifierPotentiallyRecovered(s, topLevelVariableDeclaration, false)
           listener: handleIdentifier(r, topLevelVariableDeclaration)
         parseFieldInitializerOpt(r, r, null, null, DeclarationKind.TopLevel, null)
           listener: handleNoFieldInitializer(e)
@@ -887,11 +889,11 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(e)
-      parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', s, DeclarationKind.TopLevel, null)
+      parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', s, DeclarationKind.TopLevel, null, false)
         listener: handleIdentifier(e, typeReference)
         listener: handleNoTypeArguments(s)
         listener: handleType(e, null)
-        ensureIdentifier(e, topLevelVariableDeclaration)
+        ensureIdentifierPotentiallyRecovered(e, topLevelVariableDeclaration, false)
           listener: handleIdentifier(s, topLevelVariableDeclaration)
         parseFieldInitializerOpt(s, s, null, null, DeclarationKind.TopLevel, null)
           listener: handleNoFieldInitializer(e)
@@ -907,11 +909,11 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(e)
-      parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', r, DeclarationKind.TopLevel, null)
+      parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', r, DeclarationKind.TopLevel, null, false)
         listener: handleIdentifier(e, typeReference)
         listener: handleNoTypeArguments(r)
         listener: handleType(e, null)
-        ensureIdentifier(e, topLevelVariableDeclaration)
+        ensureIdentifierPotentiallyRecovered(e, topLevelVariableDeclaration, false)
           listener: handleIdentifier(r, topLevelVariableDeclaration)
         parseFieldInitializerOpt(r, r, null, null, DeclarationKind.TopLevel, null)
           listener: handleNoFieldInitializer(v)
@@ -927,11 +929,11 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(v)
-      parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', e, DeclarationKind.TopLevel, null)
+      parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', e, DeclarationKind.TopLevel, null, false)
         listener: handleIdentifier(v, typeReference)
         listener: handleNoTypeArguments(e)
         listener: handleType(v, null)
-        ensureIdentifier(v, topLevelVariableDeclaration)
+        ensureIdentifierPotentiallyRecovered(v, topLevelVariableDeclaration, false)
           listener: handleIdentifier(e, topLevelVariableDeclaration)
         parseFieldInitializerOpt(e, e, null, null, DeclarationKind.TopLevel, null)
           listener: handleNoFieldInitializer(d)
@@ -947,13 +949,13 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(d)
-      parseFields(;, null, null, null, null, null, ;, Instance of 'PrefixedType', s, DeclarationKind.TopLevel, null)
+      parseFields(;, null, null, null, null, null, ;, Instance of 'PrefixedType', s, DeclarationKind.TopLevel, null, false)
         listener: handleIdentifier(d, prefixedTypeReference)
         listener: handleIdentifier(U, typeReferenceContinuation)
         listener: handleQualified(.)
         listener: handleNoTypeArguments(s)
         listener: handleType(d, null)
-        ensureIdentifier(U, topLevelVariableDeclaration)
+        ensureIdentifierPotentiallyRecovered(U, topLevelVariableDeclaration, false)
           listener: handleIdentifier(s, topLevelVariableDeclaration)
         parseFieldInitializerOpt(s, s, null, null, DeclarationKind.TopLevel, null)
           listener: handleNoFieldInitializer(e)
@@ -969,11 +971,11 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(e)
-      parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', o, DeclarationKind.TopLevel, null)
+      parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', o, DeclarationKind.TopLevel, null, false)
         listener: handleIdentifier(e, typeReference)
         listener: handleNoTypeArguments(o)
         listener: handleType(e, null)
-        ensureIdentifier(e, topLevelVariableDeclaration)
+        ensureIdentifierPotentiallyRecovered(e, topLevelVariableDeclaration, false)
           listener: handleIdentifier(o, topLevelVariableDeclaration)
         parseFieldInitializerOpt(o, o, null, null, DeclarationKind.TopLevel, null)
           listener: handleNoFieldInitializer(f)
@@ -989,11 +991,11 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(f)
-      parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', t, DeclarationKind.TopLevel, null)
+      parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', t, DeclarationKind.TopLevel, null, false)
         listener: handleIdentifier(f, typeReference)
         listener: handleNoTypeArguments(t)
         listener: handleType(f, null)
-        ensureIdentifier(f, topLevelVariableDeclaration)
+        ensureIdentifierPotentiallyRecovered(f, topLevelVariableDeclaration, false)
           listener: handleIdentifier(t, topLevelVariableDeclaration)
         parseFieldInitializerOpt(t, t, null, null, DeclarationKind.TopLevel, null)
           listener: handleNoFieldInitializer(h)
@@ -1009,11 +1011,11 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(h)
-      parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', i, DeclarationKind.TopLevel, null)
+      parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', i, DeclarationKind.TopLevel, null, false)
         listener: handleIdentifier(h, typeReference)
         listener: handleNoTypeArguments(i)
         listener: handleType(h, null)
-        ensureIdentifier(h, topLevelVariableDeclaration)
+        ensureIdentifierPotentiallyRecovered(h, topLevelVariableDeclaration, false)
           listener: handleIdentifier(i, topLevelVariableDeclaration)
         parseFieldInitializerOpt(i, i, null, null, DeclarationKind.TopLevel, null)
           listener: handleNoFieldInitializer(s)
@@ -1029,11 +1031,11 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(s)
-      parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', s, DeclarationKind.TopLevel, null)
+      parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', s, DeclarationKind.TopLevel, null, false)
         listener: handleIdentifier(s, typeReference)
         listener: handleNoTypeArguments(s)
         listener: handleType(s, null)
-        ensureIdentifier(s, topLevelVariableDeclaration)
+        ensureIdentifierPotentiallyRecovered(s, topLevelVariableDeclaration, false)
           listener: handleIdentifier(s, topLevelVariableDeclaration)
         parseFieldInitializerOpt(s, s, null, null, DeclarationKind.TopLevel, null)
           listener: handleNoFieldInitializer(o)
@@ -1049,11 +1051,11 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(o)
-      parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', u, DeclarationKind.TopLevel, null)
+      parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', u, DeclarationKind.TopLevel, null, false)
         listener: handleIdentifier(o, typeReference)
         listener: handleNoTypeArguments(u)
         listener: handleType(o, null)
-        ensureIdentifier(o, topLevelVariableDeclaration)
+        ensureIdentifierPotentiallyRecovered(o, topLevelVariableDeclaration, false)
           listener: handleIdentifier(u, topLevelVariableDeclaration)
         parseFieldInitializerOpt(u, u, null, null, DeclarationKind.TopLevel, null)
           listener: handleNoFieldInitializer(r)
@@ -1069,11 +1071,11 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(r)
-      parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', c, DeclarationKind.TopLevel, null)
+      parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', c, DeclarationKind.TopLevel, null, false)
         listener: handleIdentifier(r, typeReference)
         listener: handleNoTypeArguments(c)
         listener: handleType(r, null)
-        ensureIdentifier(r, topLevelVariableDeclaration)
+        ensureIdentifierPotentiallyRecovered(r, topLevelVariableDeclaration, false)
           listener: handleIdentifier(c, topLevelVariableDeclaration)
         parseFieldInitializerOpt(c, c, null, null, DeclarationKind.TopLevel, null)
           listener: handleNoFieldInitializer(e)
@@ -1089,11 +1091,11 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(e)
-      parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', c, DeclarationKind.TopLevel, null)
+      parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', c, DeclarationKind.TopLevel, null, false)
         listener: handleIdentifier(e, typeReference)
         listener: handleNoTypeArguments(c)
         listener: handleType(e, null)
-        ensureIdentifier(e, topLevelVariableDeclaration)
+        ensureIdentifierPotentiallyRecovered(e, topLevelVariableDeclaration, false)
           listener: handleIdentifier(c, topLevelVariableDeclaration)
         parseFieldInitializerOpt(c, c, null, null, DeclarationKind.TopLevel, null)
           listener: handleNoFieldInitializer(o)
@@ -1109,11 +1111,11 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(o)
-      parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', d, DeclarationKind.TopLevel, null)
+      parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', d, DeclarationKind.TopLevel, null, false)
         listener: handleIdentifier(o, typeReference)
         listener: handleNoTypeArguments(d)
         listener: handleType(o, null)
-        ensureIdentifier(o, topLevelVariableDeclaration)
+        ensureIdentifierPotentiallyRecovered(o, topLevelVariableDeclaration, false)
           listener: handleIdentifier(d, topLevelVariableDeclaration)
         parseFieldInitializerOpt(d, d, null, null, DeclarationKind.TopLevel, null)
           listener: handleNoFieldInitializer(e)
@@ -1129,11 +1131,11 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(e)
-      parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', i, DeclarationKind.TopLevel, null)
+      parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', i, DeclarationKind.TopLevel, null, false)
         listener: handleIdentifier(e, typeReference)
         listener: handleNoTypeArguments(i)
         listener: handleType(e, null)
-        ensureIdentifier(e, topLevelVariableDeclaration)
+        ensureIdentifierPotentiallyRecovered(e, topLevelVariableDeclaration, false)
           listener: handleIdentifier(i, topLevelVariableDeclaration)
         parseFieldInitializerOpt(i, i, null, null, DeclarationKind.TopLevel, null)
           listener: handleNoFieldInitializer(s)
@@ -1149,11 +1151,11 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(s)
-      parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', g, DeclarationKind.TopLevel, null)
+      parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', g, DeclarationKind.TopLevel, null, false)
         listener: handleIdentifier(s, typeReference)
         listener: handleNoTypeArguments(g)
         listener: handleType(s, null)
-        ensureIdentifier(s, topLevelVariableDeclaration)
+        ensureIdentifierPotentiallyRecovered(s, topLevelVariableDeclaration, false)
           listener: handleIdentifier(g, topLevelVariableDeclaration)
         parseFieldInitializerOpt(g, g, null, null, DeclarationKind.TopLevel, null)
           listener: handleNoFieldInitializer(o)
@@ -1169,11 +1171,11 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(o)
-      parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', v, DeclarationKind.TopLevel, null)
+      parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', v, DeclarationKind.TopLevel, null, false)
         listener: handleIdentifier(o, typeReference)
         listener: handleNoTypeArguments(v)
         listener: handleType(o, null)
-        ensureIdentifier(o, topLevelVariableDeclaration)
+        ensureIdentifierPotentiallyRecovered(o, topLevelVariableDeclaration, false)
           listener: handleIdentifier(v, topLevelVariableDeclaration)
         parseFieldInitializerOpt(v, v, null, null, DeclarationKind.TopLevel, null)
           listener: handleNoFieldInitializer(e)
@@ -1189,11 +1191,11 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(e)
-      parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', r, DeclarationKind.TopLevel, null)
+      parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', r, DeclarationKind.TopLevel, null, false)
         listener: handleIdentifier(e, typeReference)
         listener: handleNoTypeArguments(r)
         listener: handleType(e, null)
-        ensureIdentifier(e, topLevelVariableDeclaration)
+        ensureIdentifierPotentiallyRecovered(e, topLevelVariableDeclaration, false)
           listener: handleIdentifier(r, topLevelVariableDeclaration)
         parseFieldInitializerOpt(r, r, null, null, DeclarationKind.TopLevel, null)
           listener: handleNoFieldInitializer(n)
@@ -1209,11 +1211,11 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(n)
-      parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', e, DeclarationKind.TopLevel, null)
+      parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', e, DeclarationKind.TopLevel, null, false)
         listener: handleIdentifier(n, typeReference)
         listener: handleNoTypeArguments(e)
         listener: handleType(n, null)
-        ensureIdentifier(n, topLevelVariableDeclaration)
+        ensureIdentifierPotentiallyRecovered(n, topLevelVariableDeclaration, false)
           listener: handleIdentifier(e, topLevelVariableDeclaration)
         parseFieldInitializerOpt(e, e, null, null, DeclarationKind.TopLevel, null)
           listener: handleNoFieldInitializer(d)
@@ -1229,11 +1231,11 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(d)
-      parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', b, DeclarationKind.TopLevel, null)
+      parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', b, DeclarationKind.TopLevel, null, false)
         listener: handleIdentifier(d, typeReference)
         listener: handleNoTypeArguments(b)
         listener: handleType(d, null)
-        ensureIdentifier(d, topLevelVariableDeclaration)
+        ensureIdentifierPotentiallyRecovered(d, topLevelVariableDeclaration, false)
           listener: handleIdentifier(b, topLevelVariableDeclaration)
         parseFieldInitializerOpt(b, b, null, null, DeclarationKind.TopLevel, null)
           listener: handleNoFieldInitializer(y)
@@ -1249,11 +1251,11 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(y)
-      parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', a, DeclarationKind.TopLevel, null)
+      parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', a, DeclarationKind.TopLevel, null, false)
         listener: handleIdentifier(y, typeReference)
         listener: handleNoTypeArguments(a)
         listener: handleType(y, null)
-        ensureIdentifier(y, topLevelVariableDeclaration)
+        ensureIdentifierPotentiallyRecovered(y, topLevelVariableDeclaration, false)
           listener: handleIdentifier(a, topLevelVariableDeclaration)
         parseFieldInitializerOpt(a, a, null, null, DeclarationKind.TopLevel, null)
           listener: handleNoFieldInitializer(/)
@@ -1289,11 +1291,11 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl(/)
       listener: beginTopLevelMember(B)
-      parseFields(/, null, null, null, null, null, /, Instance of 'SimpleType', S, DeclarationKind.TopLevel, null)
+      parseFields(/, null, null, null, null, null, /, Instance of 'SimpleType', S, DeclarationKind.TopLevel, null, false)
         listener: handleIdentifier(B, typeReference)
         listener: handleNoTypeArguments(S)
         listener: handleType(B, null)
-        ensureIdentifier(B, topLevelVariableDeclaration)
+        ensureIdentifierPotentiallyRecovered(B, topLevelVariableDeclaration, false)
           listener: handleIdentifier(S, topLevelVariableDeclaration)
         parseFieldInitializerOpt(S, S, null, null, DeclarationKind.TopLevel, null)
           listener: handleNoFieldInitializer(D)
@@ -1309,11 +1311,12 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(D)
-      parseFields(;, null, null, null, null, null, ;, Instance of 'NoType', D, DeclarationKind.TopLevel, null)
+      isReservedKeyword(-)
+      parseFields(;, null, null, null, null, null, ;, Instance of 'NoType', D, DeclarationKind.TopLevel, null, false)
         reportRecoverableError(D, MissingConstFinalVarOrType)
           listener: handleRecoverableError(MissingConstFinalVarOrType, D, D)
         listener: handleNoType(;)
-        ensureIdentifier(;, topLevelVariableDeclaration)
+        ensureIdentifierPotentiallyRecovered(;, topLevelVariableDeclaration, false)
           listener: handleIdentifier(D, topLevelVariableDeclaration)
         parseFieldInitializerOpt(D, D, null, null, DeclarationKind.TopLevel, null)
           listener: handleNoFieldInitializer(-)
@@ -1339,11 +1342,11 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl(-)
       listener: beginTopLevelMember(s)
-      parseFields(-, null, null, null, null, null, -, Instance of 'SimpleType', t, DeclarationKind.TopLevel, null)
+      parseFields(-, null, null, null, null, null, -, Instance of 'SimpleType', t, DeclarationKind.TopLevel, null, false)
         listener: handleIdentifier(s, typeReference)
         listener: handleNoTypeArguments(t)
         listener: handleType(s, null)
-        ensureIdentifier(s, topLevelVariableDeclaration)
+        ensureIdentifierPotentiallyRecovered(s, topLevelVariableDeclaration, false)
           listener: handleIdentifier(t, topLevelVariableDeclaration)
         parseFieldInitializerOpt(t, t, null, null, DeclarationKind.TopLevel, null)
           listener: handleNoFieldInitializer(y)
@@ -1359,11 +1362,11 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(y)
-      parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', l, DeclarationKind.TopLevel, null)
+      parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', l, DeclarationKind.TopLevel, null, false)
         listener: handleIdentifier(y, typeReference)
         listener: handleNoTypeArguments(l)
         listener: handleType(y, null)
-        ensureIdentifier(y, topLevelVariableDeclaration)
+        ensureIdentifierPotentiallyRecovered(y, topLevelVariableDeclaration, false)
           listener: handleIdentifier(l, topLevelVariableDeclaration)
         parseFieldInitializerOpt(l, l, null, null, DeclarationKind.TopLevel, null)
           listener: handleNoFieldInitializer(e)
@@ -1379,11 +1382,11 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(e)
-      parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', l, DeclarationKind.TopLevel, null)
+      parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', l, DeclarationKind.TopLevel, null, false)
         listener: handleIdentifier(e, typeReference)
         listener: handleNoTypeArguments(l)
         listener: handleType(e, null)
-        ensureIdentifier(e, topLevelVariableDeclaration)
+        ensureIdentifierPotentiallyRecovered(e, topLevelVariableDeclaration, false)
           listener: handleIdentifier(l, topLevelVariableDeclaration)
         parseFieldInitializerOpt(l, l, null, null, DeclarationKind.TopLevel, null)
           listener: handleNoFieldInitializer(i)
@@ -1399,11 +1402,11 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(i)
-      parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', c, DeclarationKind.TopLevel, null)
+      parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', c, DeclarationKind.TopLevel, null, false)
         listener: handleIdentifier(i, typeReference)
         listener: handleNoTypeArguments(c)
         listener: handleType(i, null)
-        ensureIdentifier(i, topLevelVariableDeclaration)
+        ensureIdentifierPotentiallyRecovered(i, topLevelVariableDeclaration, false)
           listener: handleIdentifier(c, topLevelVariableDeclaration)
         parseFieldInitializerOpt(c, c, null, null, DeclarationKind.TopLevel, null)
           listener: handleNoFieldInitializer(e)
@@ -1419,11 +1422,11 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(e)
-      parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', n, DeclarationKind.TopLevel, null)
+      parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', n, DeclarationKind.TopLevel, null, false)
         listener: handleIdentifier(e, typeReference)
         listener: handleNoTypeArguments(n)
         listener: handleType(e, null)
-        ensureIdentifier(e, topLevelVariableDeclaration)
+        ensureIdentifierPotentiallyRecovered(e, topLevelVariableDeclaration, false)
           listener: handleIdentifier(n, topLevelVariableDeclaration)
         parseFieldInitializerOpt(n, n, null, null, DeclarationKind.TopLevel, null)
           listener: handleNoFieldInitializer(s)
@@ -1439,11 +1442,11 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(s)
-      parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', e, DeclarationKind.TopLevel, null)
+      parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', e, DeclarationKind.TopLevel, null, false)
         listener: handleIdentifier(s, typeReference)
         listener: handleNoTypeArguments(e)
         listener: handleType(s, null)
-        ensureIdentifier(s, topLevelVariableDeclaration)
+        ensureIdentifierPotentiallyRecovered(s, topLevelVariableDeclaration, false)
           listener: handleIdentifier(e, topLevelVariableDeclaration)
         parseFieldInitializerOpt(e, e, null, null, DeclarationKind.TopLevel, null)
           listener: handleNoFieldInitializer(t)
@@ -1459,11 +1462,11 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(t)
-      parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', h, DeclarationKind.TopLevel, null)
+      parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', h, DeclarationKind.TopLevel, null, false)
         listener: handleIdentifier(t, typeReference)
         listener: handleNoTypeArguments(h)
         listener: handleType(t, null)
-        ensureIdentifier(t, topLevelVariableDeclaration)
+        ensureIdentifierPotentiallyRecovered(t, topLevelVariableDeclaration, false)
           listener: handleIdentifier(h, topLevelVariableDeclaration)
         parseFieldInitializerOpt(h, h, null, null, DeclarationKind.TopLevel, null)
           listener: handleNoFieldInitializer(a)
@@ -1479,11 +1482,11 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(a)
-      parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', t, DeclarationKind.TopLevel, null)
+      parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', t, DeclarationKind.TopLevel, null, false)
         listener: handleIdentifier(a, typeReference)
         listener: handleNoTypeArguments(t)
         listener: handleType(a, null)
-        ensureIdentifier(a, topLevelVariableDeclaration)
+        ensureIdentifierPotentiallyRecovered(a, topLevelVariableDeclaration, false)
           listener: handleIdentifier(t, topLevelVariableDeclaration)
         parseFieldInitializerOpt(t, t, null, null, DeclarationKind.TopLevel, null)
           listener: handleNoFieldInitializer(c)
@@ -1499,11 +1502,11 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(c)
-      parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', a, DeclarationKind.TopLevel, null)
+      parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', a, DeclarationKind.TopLevel, null, false)
         listener: handleIdentifier(c, typeReference)
         listener: handleNoTypeArguments(a)
         listener: handleType(c, null)
-        ensureIdentifier(c, topLevelVariableDeclaration)
+        ensureIdentifierPotentiallyRecovered(c, topLevelVariableDeclaration, false)
           listener: handleIdentifier(a, topLevelVariableDeclaration)
         parseFieldInitializerOpt(a, a, null, null, DeclarationKind.TopLevel, null)
           listener: handleNoFieldInitializer(n)
@@ -1519,11 +1522,11 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(n)
-      parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', b, DeclarationKind.TopLevel, null)
+      parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', b, DeclarationKind.TopLevel, null, false)
         listener: handleIdentifier(n, typeReference)
         listener: handleNoTypeArguments(b)
         listener: handleType(n, null)
-        ensureIdentifier(n, topLevelVariableDeclaration)
+        ensureIdentifierPotentiallyRecovered(n, topLevelVariableDeclaration, false)
           listener: handleIdentifier(b, topLevelVariableDeclaration)
         parseFieldInitializerOpt(b, b, null, null, DeclarationKind.TopLevel, null)
           listener: handleNoFieldInitializer(e)
@@ -1539,11 +1542,11 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(e)
-      parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', f, DeclarationKind.TopLevel, null)
+      parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', f, DeclarationKind.TopLevel, null, false)
         listener: handleIdentifier(e, typeReference)
         listener: handleNoTypeArguments(f)
         listener: handleType(e, null)
-        ensureIdentifier(e, topLevelVariableDeclaration)
+        ensureIdentifierPotentiallyRecovered(e, topLevelVariableDeclaration, false)
           listener: handleIdentifier(f, topLevelVariableDeclaration)
         parseFieldInitializerOpt(f, f, null, null, DeclarationKind.TopLevel, null)
           listener: handleNoFieldInitializer(o)
@@ -1559,11 +1562,11 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(o)
-      parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', u, DeclarationKind.TopLevel, null)
+      parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', u, DeclarationKind.TopLevel, null, false)
         listener: handleIdentifier(o, typeReference)
         listener: handleNoTypeArguments(u)
         listener: handleType(o, null)
-        ensureIdentifier(o, topLevelVariableDeclaration)
+        ensureIdentifierPotentiallyRecovered(o, topLevelVariableDeclaration, false)
           listener: handleIdentifier(u, topLevelVariableDeclaration)
         parseFieldInitializerOpt(u, u, null, null, DeclarationKind.TopLevel, null)
           listener: handleNoFieldInitializer(n)
@@ -1579,11 +1582,11 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(n)
-      parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', d, DeclarationKind.TopLevel, null)
+      parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', d, DeclarationKind.TopLevel, null, false)
         listener: handleIdentifier(n, typeReference)
         listener: handleNoTypeArguments(d)
         listener: handleType(n, null)
-        ensureIdentifier(n, topLevelVariableDeclaration)
+        ensureIdentifierPotentiallyRecovered(n, topLevelVariableDeclaration, false)
           listener: handleIdentifier(d, topLevelVariableDeclaration)
         parseFieldInitializerOpt(d, d, null, null, DeclarationKind.TopLevel, null)
           listener: handleNoFieldInitializer(i)
@@ -1599,11 +1602,11 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(i)
-      parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', n, DeclarationKind.TopLevel, null)
+      parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', n, DeclarationKind.TopLevel, null, false)
         listener: handleIdentifier(i, typeReference)
         listener: handleNoTypeArguments(n)
         listener: handleType(i, null)
-        ensureIdentifier(i, topLevelVariableDeclaration)
+        ensureIdentifierPotentiallyRecovered(i, topLevelVariableDeclaration, false)
           listener: handleIdentifier(n, topLevelVariableDeclaration)
         parseFieldInitializerOpt(n, n, null, null, DeclarationKind.TopLevel, null)
           listener: handleNoFieldInitializer(t)
@@ -1619,11 +1622,11 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(t)
-      parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', h, DeclarationKind.TopLevel, null)
+      parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', h, DeclarationKind.TopLevel, null, false)
         listener: handleIdentifier(t, typeReference)
         listener: handleNoTypeArguments(h)
         listener: handleType(t, null)
-        ensureIdentifier(t, topLevelVariableDeclaration)
+        ensureIdentifierPotentiallyRecovered(t, topLevelVariableDeclaration, false)
           listener: handleIdentifier(h, topLevelVariableDeclaration)
         parseFieldInitializerOpt(h, h, null, null, DeclarationKind.TopLevel, null)
           listener: handleNoFieldInitializer(e)
@@ -1639,11 +1642,11 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(e)
-      parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', L, DeclarationKind.TopLevel, null)
+      parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', L, DeclarationKind.TopLevel, null, false)
         listener: handleIdentifier(e, typeReference)
         listener: handleNoTypeArguments(L)
         listener: handleType(e, null)
-        ensureIdentifier(e, topLevelVariableDeclaration)
+        ensureIdentifierPotentiallyRecovered(e, topLevelVariableDeclaration, false)
           listener: handleIdentifier(L, topLevelVariableDeclaration)
         parseFieldInitializerOpt(L, L, null, null, DeclarationKind.TopLevel, null)
           listener: handleNoFieldInitializer(I)
@@ -1659,11 +1662,11 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(I)
-      parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', C, DeclarationKind.TopLevel, null)
+      parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', C, DeclarationKind.TopLevel, null, false)
         listener: handleIdentifier(I, typeReference)
         listener: handleNoTypeArguments(C)
         listener: handleType(I, null)
-        ensureIdentifier(I, topLevelVariableDeclaration)
+        ensureIdentifierPotentiallyRecovered(I, topLevelVariableDeclaration, false)
           listener: handleIdentifier(C, topLevelVariableDeclaration)
         parseFieldInitializerOpt(C, C, null, null, DeclarationKind.TopLevel, null)
           listener: handleNoFieldInitializer(E)
@@ -1679,11 +1682,11 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(E)
-      parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', N, DeclarationKind.TopLevel, null)
+      parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', N, DeclarationKind.TopLevel, null, false)
         listener: handleIdentifier(E, typeReference)
         listener: handleNoTypeArguments(N)
         listener: handleType(E, null)
-        ensureIdentifier(E, topLevelVariableDeclaration)
+        ensureIdentifierPotentiallyRecovered(E, topLevelVariableDeclaration, false)
           listener: handleIdentifier(N, topLevelVariableDeclaration)
         parseFieldInitializerOpt(N, N, null, null, DeclarationKind.TopLevel, null)
           listener: handleNoFieldInitializer(S)
@@ -1699,12 +1702,12 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(S)
-      parseTopLevelMethod(;, null, ;, Instance of 'SimpleType', null, E)
+      parseTopLevelMethod(;, null, ;, Instance of 'SimpleType', null, E, false)
         listener: beginTopLevelMethod(;, null)
         listener: handleIdentifier(S, typeReference)
         listener: handleNoTypeArguments(E)
         listener: handleType(S, null)
-        ensureIdentifier(S, topLevelFunctionDeclaration)
+        ensureIdentifierPotentiallyRecovered(S, topLevelFunctionDeclaration, false)
           listener: handleIdentifier(E, topLevelFunctionDeclaration)
         parseMethodTypeVar(E)
           listener: handleNoTypeVariables(.)
@@ -1745,11 +1748,11 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl(.)
       listener: beginTopLevelMember(m)
-      parseFields(., null, null, null, null, null, ., Instance of 'SimpleType', d, DeclarationKind.TopLevel, null)
+      parseFields(., null, null, null, null, null, ., Instance of 'SimpleType', d, DeclarationKind.TopLevel, null, false)
         listener: handleIdentifier(m, typeReference)
         listener: handleNoTypeArguments(d)
         listener: handleType(m, null)
-        ensureIdentifier(m, topLevelVariableDeclaration)
+        ensureIdentifierPotentiallyRecovered(m, topLevelVariableDeclaration, false)
           listener: handleIdentifier(d, topLevelVariableDeclaration)
         parseFieldInitializerOpt(d, d, null, null, DeclarationKind.TopLevel, null)
           listener: handleNoFieldInitializer(f)
@@ -1765,11 +1768,11 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(f)
-      parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', i, DeclarationKind.TopLevel, null)
+      parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', i, DeclarationKind.TopLevel, null, false)
         listener: handleIdentifier(f, typeReference)
         listener: handleNoTypeArguments(i)
         listener: handleType(f, null)
-        ensureIdentifier(f, topLevelVariableDeclaration)
+        ensureIdentifierPotentiallyRecovered(f, topLevelVariableDeclaration, false)
           listener: handleIdentifier(i, topLevelVariableDeclaration)
         parseFieldInitializerOpt(i, i, null, null, DeclarationKind.TopLevel, null)
           listener: handleNoFieldInitializer(l)
@@ -1785,12 +1788,12 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(l)
-      parseTopLevelMethod(;, null, ;, Instance of 'SimpleType', null, e)
+      parseTopLevelMethod(;, null, ;, Instance of 'SimpleType', null, e, false)
         listener: beginTopLevelMethod(;, null)
         listener: handleIdentifier(l, typeReference)
         listener: handleNoTypeArguments(e)
         listener: handleType(l, null)
-        ensureIdentifier(l, topLevelFunctionDeclaration)
+        ensureIdentifierPotentiallyRecovered(l, topLevelFunctionDeclaration, false)
           listener: handleIdentifier(e, topLevelFunctionDeclaration)
         parseMethodTypeVar(e)
           listener: handleNoTypeVariables(.)
@@ -1851,11 +1854,11 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl(/)
       listener: beginTopLevelMember(T)
-      parseFields(/, null, null, null, null, null, /, Instance of 'SimpleType', h, DeclarationKind.TopLevel, null)
+      parseFields(/, null, null, null, null, null, /, Instance of 'SimpleType', h, DeclarationKind.TopLevel, null, false)
         listener: handleIdentifier(T, typeReference)
         listener: handleNoTypeArguments(h)
         listener: handleType(T, null)
-        ensureIdentifier(T, topLevelVariableDeclaration)
+        ensureIdentifierPotentiallyRecovered(T, topLevelVariableDeclaration, false)
           listener: handleIdentifier(h, topLevelVariableDeclaration)
         parseFieldInitializerOpt(h, h, null, null, DeclarationKind.TopLevel, null)
           listener: handleNoFieldInitializer(i)
@@ -1871,11 +1874,11 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(i)
-      parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', s, DeclarationKind.TopLevel, null)
+      parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', s, DeclarationKind.TopLevel, null, false)
         listener: handleIdentifier(i, typeReference)
         listener: handleNoTypeArguments(s)
         listener: handleType(i, null)
-        ensureIdentifier(i, topLevelVariableDeclaration)
+        ensureIdentifierPotentiallyRecovered(i, topLevelVariableDeclaration, false)
           listener: handleIdentifier(s, topLevelVariableDeclaration)
         parseFieldInitializerOpt(s, s, null, null, DeclarationKind.TopLevel, null)
           listener: handleNoFieldInitializer(f)
@@ -1891,11 +1894,11 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(f)
-      parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', i, DeclarationKind.TopLevel, null)
+      parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', i, DeclarationKind.TopLevel, null, false)
         listener: handleIdentifier(f, typeReference)
         listener: handleNoTypeArguments(i)
         listener: handleType(f, null)
-        ensureIdentifier(f, topLevelVariableDeclaration)
+        ensureIdentifierPotentiallyRecovered(f, topLevelVariableDeclaration, false)
           listener: handleIdentifier(i, topLevelVariableDeclaration)
         parseFieldInitializerOpt(i, i, null, null, DeclarationKind.TopLevel, null)
           listener: handleNoFieldInitializer(l)
@@ -1911,11 +1914,11 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(l)
-      parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', e, DeclarationKind.TopLevel, null)
+      parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', e, DeclarationKind.TopLevel, null, false)
         listener: handleIdentifier(l, typeReference)
         listener: handleNoTypeArguments(e)
         listener: handleType(l, null)
-        ensureIdentifier(l, topLevelVariableDeclaration)
+        ensureIdentifierPotentiallyRecovered(l, topLevelVariableDeclaration, false)
           listener: handleIdentifier(e, topLevelVariableDeclaration)
         parseFieldInitializerOpt(e, e, null, null, DeclarationKind.TopLevel, null)
           listener: handleNoFieldInitializer(i)
@@ -1931,11 +1934,11 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(i)
-      parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', s, DeclarationKind.TopLevel, null)
+      parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', s, DeclarationKind.TopLevel, null, false)
         listener: handleIdentifier(i, typeReference)
         listener: handleNoTypeArguments(s)
         listener: handleType(i, null)
-        ensureIdentifier(i, topLevelVariableDeclaration)
+        ensureIdentifierPotentiallyRecovered(i, topLevelVariableDeclaration, false)
           listener: handleIdentifier(s, topLevelVariableDeclaration)
         parseFieldInitializerOpt(s, s, null, null, DeclarationKind.TopLevel, null)
           listener: handleNoFieldInitializer(s)
@@ -1951,11 +1954,11 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(s)
-      parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', a, DeclarationKind.TopLevel, null)
+      parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', a, DeclarationKind.TopLevel, null, false)
         listener: handleIdentifier(s, typeReference)
         listener: handleNoTypeArguments(a)
         listener: handleType(s, null)
-        ensureIdentifier(s, topLevelVariableDeclaration)
+        ensureIdentifierPotentiallyRecovered(s, topLevelVariableDeclaration, false)
           listener: handleIdentifier(a, topLevelVariableDeclaration)
         parseFieldInitializerOpt(a, a, null, null, DeclarationKind.TopLevel, null)
           listener: handleNoFieldInitializer(v)
@@ -1971,11 +1974,11 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(v)
-      parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', e, DeclarationKind.TopLevel, null)
+      parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', e, DeclarationKind.TopLevel, null, false)
         listener: handleIdentifier(v, typeReference)
         listener: handleNoTypeArguments(e)
         listener: handleType(v, null)
-        ensureIdentifier(v, topLevelVariableDeclaration)
+        ensureIdentifierPotentiallyRecovered(v, topLevelVariableDeclaration, false)
           listener: handleIdentifier(e, topLevelVariableDeclaration)
         parseFieldInitializerOpt(e, e, null, null, DeclarationKind.TopLevel, null)
           listener: handleNoFieldInitializer(d)
@@ -1991,11 +1994,11 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(d)
-      parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', a, DeclarationKind.TopLevel, null)
+      parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', a, DeclarationKind.TopLevel, null, false)
         listener: handleIdentifier(d, typeReference)
         listener: handleNoTypeArguments(a)
         listener: handleType(d, null)
-        ensureIdentifier(d, topLevelVariableDeclaration)
+        ensureIdentifierPotentiallyRecovered(d, topLevelVariableDeclaration, false)
           listener: handleIdentifier(a, topLevelVariableDeclaration)
         parseFieldInitializerOpt(a, a, null, null, DeclarationKind.TopLevel, null)
           listener: handleNoFieldInitializer(s)
@@ -2011,11 +2014,11 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(s)
-      parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', U, DeclarationKind.TopLevel, null)
+      parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', U, DeclarationKind.TopLevel, null, false)
         listener: handleIdentifier(s, typeReference)
         listener: handleNoTypeArguments(U)
         listener: handleType(s, null)
-        ensureIdentifier(s, topLevelVariableDeclaration)
+        ensureIdentifierPotentiallyRecovered(s, topLevelVariableDeclaration, false)
           listener: handleIdentifier(U, topLevelVariableDeclaration)
         parseFieldInitializerOpt(U, U, null, null, DeclarationKind.TopLevel, null)
           listener: handleNoFieldInitializer(T)
@@ -2031,11 +2034,11 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(T)
-      parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', F, DeclarationKind.TopLevel, null)
+      parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', F, DeclarationKind.TopLevel, null, false)
         listener: handleIdentifier(T, typeReference)
         listener: handleNoTypeArguments(F)
         listener: handleType(T, null)
-        ensureIdentifier(T, topLevelVariableDeclaration)
+        ensureIdentifierPotentiallyRecovered(T, topLevelVariableDeclaration, false)
           listener: handleIdentifier(F, topLevelVariableDeclaration)
         parseFieldInitializerOpt(F, F, null, null, DeclarationKind.TopLevel, null)
           listener: handleNoFieldInitializer(-)
@@ -2081,12 +2084,12 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl(6)
       listener: beginTopLevelMember(L)
-      parseTopLevelMethod(6, null, 6, Instance of 'SimpleType', null, E)
+      parseTopLevelMethod(6, null, 6, Instance of 'SimpleType', null, E, false)
         listener: beginTopLevelMethod(6, null)
         listener: handleIdentifier(L, typeReference)
         listener: handleNoTypeArguments(E)
         listener: handleType(L, null)
-        ensureIdentifier(L, topLevelFunctionDeclaration)
+        ensureIdentifierPotentiallyRecovered(L, topLevelFunctionDeclaration, false)
           listener: handleIdentifier(E, topLevelFunctionDeclaration)
         parseMethodTypeVar(E)
           listener: handleNoTypeVariables(.)
@@ -2127,11 +2130,11 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl(.)
       listener: beginTopLevelMember(m)
-      parseFields(., null, null, null, null, null, ., Instance of 'SimpleType', a, DeclarationKind.TopLevel, null)
+      parseFields(., null, null, null, null, null, ., Instance of 'SimpleType', a, DeclarationKind.TopLevel, null, false)
         listener: handleIdentifier(m, typeReference)
         listener: handleNoTypeArguments(a)
         listener: handleType(m, null)
-        ensureIdentifier(m, topLevelVariableDeclaration)
+        ensureIdentifierPotentiallyRecovered(m, topLevelVariableDeclaration, false)
           listener: handleIdentifier(a, topLevelVariableDeclaration)
         parseFieldInitializerOpt(a, a, null, null, DeclarationKind.TopLevel, null)
           listener: handleNoFieldInitializer(i)
@@ -2147,12 +2150,12 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(i)
-      parseTopLevelMethod(;, null, ;, Instance of 'SimpleType', null, n)
+      parseTopLevelMethod(;, null, ;, Instance of 'SimpleType', null, n, false)
         listener: beginTopLevelMethod(;, null)
         listener: handleIdentifier(i, typeReference)
         listener: handleNoTypeArguments(n)
         listener: handleType(i, null)
-        ensureIdentifier(i, topLevelFunctionDeclaration)
+        ensureIdentifierPotentiallyRecovered(i, topLevelFunctionDeclaration, false)
           listener: handleIdentifier(n, topLevelFunctionDeclaration)
         parseMethodTypeVar(n)
           listener: handleNoTypeVariables(()
@@ -2421,309 +2424,615 @@
   listener: endTopLevelDeclaration()
   reportAllErrorTokens(EncodingErrorToken())
     listener: handleErrorToken(EncodingErrorToken())
+    listener: handleRecoverableError(Encoding, EncodingErrorToken(), EncodingErrorToken())
     listener: handleErrorToken(EncodingErrorToken())
+    listener: handleRecoverableError(Encoding, EncodingErrorToken(), EncodingErrorToken())
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(UnterminatedString("))
+    listener: handleRecoverableError(Message[UnterminatedString, String starting with " must end with "., null, {string: ", string2: "}], UnterminatedString("), UnterminatedString("))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(UnterminatedString("))
+    listener: handleRecoverableError(Message[UnterminatedString, String starting with " must end with "., null, {string: ", string2: "}], UnterminatedString("), UnterminatedString("))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
     listener: handleErrorToken(AsciiControlCharacterToken(0))
+    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
   listener: endCompilationUnit(114, )
diff --git a/pkg/front_end/parser_testcases/error_recovery/yield_not_in_generator.dart.intertwined.expect b/pkg/front_end/parser_testcases/error_recovery/yield_not_in_generator.dart.intertwined.expect
index ccafa7e..17191fa 100644
--- a/pkg/front_end/parser_testcases/error_recovery/yield_not_in_generator.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/error_recovery/yield_not_in_generator.dart.intertwined.expect
@@ -8,7 +8,7 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl()
       listener: beginTopLevelMember(Future)
-      parseTopLevelMethod(, null, , Instance of 'SimpleTypeWith1Argument', null, f)
+      parseTopLevelMethod(, null, , Instance of 'SimpleTypeWith1Argument', null, f, false)
         listener: beginTopLevelMethod(, null)
         listener: handleIdentifier(Future, typeReference)
         listener: beginTypeArguments(<)
@@ -17,7 +17,7 @@
         listener: handleType(int, null)
         listener: endTypeArguments(1, <, >)
         listener: handleType(Future, null)
-        ensureIdentifier(>, topLevelFunctionDeclaration)
+        ensureIdentifierPotentiallyRecovered(>, topLevelFunctionDeclaration, false)
           listener: handleIdentifier(f, topLevelFunctionDeclaration)
         parseMethodTypeVar(f)
           listener: handleNoTypeVariables(()
@@ -74,7 +74,7 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(List)
-      parseTopLevelMethod(;, null, ;, Instance of 'SimpleTypeWith1Argument', null, g)
+      parseTopLevelMethod(;, null, ;, Instance of 'SimpleTypeWith1Argument', null, g, false)
         listener: beginTopLevelMethod(;, null)
         listener: handleIdentifier(List, typeReference)
         listener: beginTypeArguments(<)
@@ -83,7 +83,7 @@
         listener: handleType(int, null)
         listener: endTypeArguments(1, <, >)
         listener: handleType(List, null)
-        ensureIdentifier(>, topLevelFunctionDeclaration)
+        ensureIdentifierPotentiallyRecovered(>, topLevelFunctionDeclaration, false)
           listener: handleIdentifier(g, topLevelFunctionDeclaration)
         parseMethodTypeVar(g)
           listener: handleNoTypeVariables(()
diff --git a/pkg/front_end/parser_testcases/extensions/covariant.dart.intertwined.expect b/pkg/front_end/parser_testcases/extensions/covariant.dart.intertwined.expect
index 25da1aa..6f54ea6 100644
--- a/pkg/front_end/parser_testcases/extensions/covariant.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/extensions/covariant.dart.intertwined.expect
@@ -81,10 +81,11 @@
               listener: beginMetadataStar(addChild)
               listener: endMetadataStar(0)
             listener: beginMember()
-            parseMethod({, null, null, null, null, null, {, Instance of 'NoType', null, addChild, DeclarationKind.Extension, null)
+            isReservedKeyword(()
+            parseMethod({, null, null, null, null, null, {, Instance of 'NoType', null, addChild, DeclarationKind.Extension, null, false)
               listener: beginMethod(null, null, null, null, null, addChild)
               listener: handleNoType({)
-              ensureIdentifier({, methodDeclaration)
+              ensureIdentifierPotentiallyRecovered({, methodDeclaration, false)
                 listener: handleIdentifier(addChild, methodDeclaration)
               parseQualifiedRestOpt(addChild, methodDeclarationContinuation)
               parseMethodTypeVar(addChild)
diff --git a/pkg/front_end/parser_testcases/extensions/not_covariant.dart.intertwined.expect b/pkg/front_end/parser_testcases/extensions/not_covariant.dart.intertwined.expect
index 498b744..309c3b2 100644
--- a/pkg/front_end/parser_testcases/extensions/not_covariant.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/extensions/not_covariant.dart.intertwined.expect
@@ -81,10 +81,11 @@
               listener: beginMetadataStar(addChild)
               listener: endMetadataStar(0)
             listener: beginMember()
-            parseMethod({, null, null, null, null, null, {, Instance of 'NoType', null, addChild, DeclarationKind.Extension, null)
+            isReservedKeyword(()
+            parseMethod({, null, null, null, null, null, {, Instance of 'NoType', null, addChild, DeclarationKind.Extension, null, false)
               listener: beginMethod(null, null, null, null, null, addChild)
               listener: handleNoType({)
-              ensureIdentifier({, methodDeclaration)
+              ensureIdentifierPotentiallyRecovered({, methodDeclaration, false)
                 listener: handleIdentifier(addChild, methodDeclaration)
               parseQualifiedRestOpt(addChild, methodDeclarationContinuation)
               parseMethodTypeVar(addChild)
diff --git a/pkg/front_end/parser_testcases/extensions/static.dart.intertwined.expect b/pkg/front_end/parser_testcases/extensions/static.dart.intertwined.expect
index 836dd78..8c2fff7 100644
--- a/pkg/front_end/parser_testcases/extensions/static.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/extensions/static.dart.intertwined.expect
@@ -81,10 +81,11 @@
               listener: beginMetadataStar(static)
               listener: endMetadataStar(0)
             listener: beginMember()
-            parseMethod({, null, static, null, null, null, static, Instance of 'NoType', null, addChild, DeclarationKind.Extension, null)
+            isReservedKeyword(()
+            parseMethod({, null, static, null, null, null, static, Instance of 'NoType', null, addChild, DeclarationKind.Extension, null, false)
               listener: beginMethod(null, static, null, null, null, addChild)
               listener: handleNoType(static)
-              ensureIdentifier(static, methodDeclaration)
+              ensureIdentifierPotentiallyRecovered(static, methodDeclaration, false)
                 listener: handleIdentifier(addChild, methodDeclaration)
               parseQualifiedRestOpt(addChild, methodDeclarationContinuation)
               parseMethodTypeVar(addChild)
diff --git a/pkg/front_end/parser_testcases/extensions/static_covariant.dart.intertwined.expect b/pkg/front_end/parser_testcases/extensions/static_covariant.dart.intertwined.expect
index 49e3f15..e53f220 100644
--- a/pkg/front_end/parser_testcases/extensions/static_covariant.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/extensions/static_covariant.dart.intertwined.expect
@@ -81,10 +81,11 @@
               listener: beginMetadataStar(static)
               listener: endMetadataStar(0)
             listener: beginMember()
-            parseMethod({, null, static, null, null, null, static, Instance of 'NoType', null, addChild, DeclarationKind.Extension, null)
+            isReservedKeyword(()
+            parseMethod({, null, static, null, null, null, static, Instance of 'NoType', null, addChild, DeclarationKind.Extension, null, false)
               listener: beginMethod(null, static, null, null, null, addChild)
               listener: handleNoType(static)
-              ensureIdentifier(static, methodDeclaration)
+              ensureIdentifierPotentiallyRecovered(static, methodDeclaration, false)
                 listener: handleIdentifier(addChild, methodDeclaration)
               parseQualifiedRestOpt(addChild, methodDeclarationContinuation)
               parseMethodTypeVar(addChild)
diff --git a/pkg/front_end/parser_testcases/general/assignment.dart.intertwined.expect b/pkg/front_end/parser_testcases/general/assignment.dart.intertwined.expect
index 2eb06c2..c3af58d 100644
--- a/pkg/front_end/parser_testcases/general/assignment.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/general/assignment.dart.intertwined.expect
@@ -8,10 +8,11 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl()
       listener: beginTopLevelMember(main)
-      parseTopLevelMethod(, null, , Instance of 'NoType', null, main)
+      isReservedKeyword(()
+      parseTopLevelMethod(, null, , Instance of 'NoType', null, main, false)
         listener: beginTopLevelMethod(, null)
         listener: handleNoType()
-        ensureIdentifier(, topLevelFunctionDeclaration)
+        ensureIdentifierPotentiallyRecovered(, topLevelFunctionDeclaration, false)
           listener: handleIdentifier(main, topLevelFunctionDeclaration)
         parseMethodTypeVar(main)
           listener: handleNoTypeVariables(()
diff --git a/pkg/front_end/parser_testcases/general/built_in_identifier_class_fields.dart.intertwined.expect b/pkg/front_end/parser_testcases/general/built_in_identifier_class_fields.dart.intertwined.expect
index b8e145f..82ec9c3 100644
--- a/pkg/front_end/parser_testcases/general/built_in_identifier_class_fields.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/general/built_in_identifier_class_fields.dart.intertwined.expect
@@ -32,11 +32,11 @@
                 listener: beginMetadataStar(int)
                 listener: endMetadataStar(0)
               listener: beginMember()
-              parseFields({, null, null, null, null, null, {, Instance of 'SimpleType', abstract, DeclarationKind.Class, WrapperClass)
+              parseFields({, null, null, null, null, null, {, Instance of 'SimpleType', abstract, DeclarationKind.Class, WrapperClass, false)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(abstract)
                 listener: handleType(int, null)
-                ensureIdentifier(int, fieldDeclaration)
+                ensureIdentifierPotentiallyRecovered(int, fieldDeclaration, false)
                   listener: handleIdentifier(abstract, fieldDeclaration)
                 parseFieldInitializerOpt(abstract, abstract, null, null, DeclarationKind.Class, WrapperClass)
                   listener: beginFieldInitializer(=)
@@ -55,11 +55,11 @@
                 listener: beginMetadataStar(int)
                 listener: endMetadataStar(0)
               listener: beginMember()
-              parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', as, DeclarationKind.Class, WrapperClass)
+              parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', as, DeclarationKind.Class, WrapperClass, false)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(as)
                 listener: handleType(int, null)
-                ensureIdentifier(int, fieldDeclaration)
+                ensureIdentifierPotentiallyRecovered(int, fieldDeclaration, false)
                   listener: handleIdentifier(as, fieldDeclaration)
                 parseFieldInitializerOpt(as, as, null, null, DeclarationKind.Class, WrapperClass)
                   listener: beginFieldInitializer(=)
@@ -78,11 +78,11 @@
                 listener: beginMetadataStar(int)
                 listener: endMetadataStar(0)
               listener: beginMember()
-              parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', covariant, DeclarationKind.Class, WrapperClass)
+              parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', covariant, DeclarationKind.Class, WrapperClass, false)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(covariant)
                 listener: handleType(int, null)
-                ensureIdentifier(int, fieldDeclaration)
+                ensureIdentifierPotentiallyRecovered(int, fieldDeclaration, false)
                   listener: handleIdentifier(covariant, fieldDeclaration)
                 parseFieldInitializerOpt(covariant, covariant, null, null, DeclarationKind.Class, WrapperClass)
                   listener: beginFieldInitializer(=)
@@ -101,11 +101,11 @@
                 listener: beginMetadataStar(int)
                 listener: endMetadataStar(0)
               listener: beginMember()
-              parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', deferred, DeclarationKind.Class, WrapperClass)
+              parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', deferred, DeclarationKind.Class, WrapperClass, false)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(deferred)
                 listener: handleType(int, null)
-                ensureIdentifier(int, fieldDeclaration)
+                ensureIdentifierPotentiallyRecovered(int, fieldDeclaration, false)
                   listener: handleIdentifier(deferred, fieldDeclaration)
                 parseFieldInitializerOpt(deferred, deferred, null, null, DeclarationKind.Class, WrapperClass)
                   listener: beginFieldInitializer(=)
@@ -124,11 +124,11 @@
                 listener: beginMetadataStar(int)
                 listener: endMetadataStar(0)
               listener: beginMember()
-              parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', dynamic, DeclarationKind.Class, WrapperClass)
+              parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', dynamic, DeclarationKind.Class, WrapperClass, false)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(dynamic)
                 listener: handleType(int, null)
-                ensureIdentifier(int, fieldDeclaration)
+                ensureIdentifierPotentiallyRecovered(int, fieldDeclaration, false)
                   listener: handleIdentifier(dynamic, fieldDeclaration)
                 parseFieldInitializerOpt(dynamic, dynamic, null, null, DeclarationKind.Class, WrapperClass)
                   listener: beginFieldInitializer(=)
@@ -147,11 +147,11 @@
                 listener: beginMetadataStar(int)
                 listener: endMetadataStar(0)
               listener: beginMember()
-              parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', export, DeclarationKind.Class, WrapperClass)
+              parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', export, DeclarationKind.Class, WrapperClass, false)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(export)
                 listener: handleType(int, null)
-                ensureIdentifier(int, fieldDeclaration)
+                ensureIdentifierPotentiallyRecovered(int, fieldDeclaration, false)
                   listener: handleIdentifier(export, fieldDeclaration)
                 parseFieldInitializerOpt(export, export, null, null, DeclarationKind.Class, WrapperClass)
                   listener: beginFieldInitializer(=)
@@ -170,11 +170,11 @@
                 listener: beginMetadataStar(int)
                 listener: endMetadataStar(0)
               listener: beginMember()
-              parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', external, DeclarationKind.Class, WrapperClass)
+              parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', external, DeclarationKind.Class, WrapperClass, false)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(external)
                 listener: handleType(int, null)
-                ensureIdentifier(int, fieldDeclaration)
+                ensureIdentifierPotentiallyRecovered(int, fieldDeclaration, false)
                   listener: handleIdentifier(external, fieldDeclaration)
                 parseFieldInitializerOpt(external, external, null, null, DeclarationKind.Class, WrapperClass)
                   listener: beginFieldInitializer(=)
@@ -193,11 +193,11 @@
                 listener: beginMetadataStar(int)
                 listener: endMetadataStar(0)
               listener: beginMember()
-              parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', factory, DeclarationKind.Class, WrapperClass)
+              parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', factory, DeclarationKind.Class, WrapperClass, false)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(factory)
                 listener: handleType(int, null)
-                ensureIdentifier(int, fieldDeclaration)
+                ensureIdentifierPotentiallyRecovered(int, fieldDeclaration, false)
                   listener: handleIdentifier(factory, fieldDeclaration)
                 parseFieldInitializerOpt(factory, factory, null, null, DeclarationKind.Class, WrapperClass)
                   listener: beginFieldInitializer(=)
@@ -216,11 +216,11 @@
                 listener: beginMetadataStar(int)
                 listener: endMetadataStar(0)
               listener: beginMember()
-              parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', Function, DeclarationKind.Class, WrapperClass)
+              parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', Function, DeclarationKind.Class, WrapperClass, false)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(Function)
                 listener: handleType(int, null)
-                ensureIdentifier(int, fieldDeclaration)
+                ensureIdentifierPotentiallyRecovered(int, fieldDeclaration, false)
                   listener: handleIdentifier(Function, fieldDeclaration)
                 parseFieldInitializerOpt(Function, Function, null, null, DeclarationKind.Class, WrapperClass)
                   listener: beginFieldInitializer(=)
@@ -239,11 +239,12 @@
                 listener: beginMetadataStar(int)
                 listener: endMetadataStar(0)
               listener: beginMember()
-              parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', get, DeclarationKind.Class, WrapperClass)
+              isReservedKeyword(=)
+              parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', get, DeclarationKind.Class, WrapperClass, false)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(get)
                 listener: handleType(int, null)
-                ensureIdentifier(int, fieldDeclaration)
+                ensureIdentifierPotentiallyRecovered(int, fieldDeclaration, false)
                   listener: handleIdentifier(get, fieldDeclaration)
                 parseFieldInitializerOpt(get, get, null, null, DeclarationKind.Class, WrapperClass)
                   listener: beginFieldInitializer(=)
@@ -262,11 +263,11 @@
                 listener: beginMetadataStar(int)
                 listener: endMetadataStar(0)
               listener: beginMember()
-              parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', implements, DeclarationKind.Class, WrapperClass)
+              parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', implements, DeclarationKind.Class, WrapperClass, false)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(implements)
                 listener: handleType(int, null)
-                ensureIdentifier(int, fieldDeclaration)
+                ensureIdentifierPotentiallyRecovered(int, fieldDeclaration, false)
                   listener: handleIdentifier(implements, fieldDeclaration)
                 parseFieldInitializerOpt(implements, implements, null, null, DeclarationKind.Class, WrapperClass)
                   listener: beginFieldInitializer(=)
@@ -285,11 +286,11 @@
                 listener: beginMetadataStar(int)
                 listener: endMetadataStar(0)
               listener: beginMember()
-              parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', import, DeclarationKind.Class, WrapperClass)
+              parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', import, DeclarationKind.Class, WrapperClass, false)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(import)
                 listener: handleType(int, null)
-                ensureIdentifier(int, fieldDeclaration)
+                ensureIdentifierPotentiallyRecovered(int, fieldDeclaration, false)
                   listener: handleIdentifier(import, fieldDeclaration)
                 parseFieldInitializerOpt(import, import, null, null, DeclarationKind.Class, WrapperClass)
                   listener: beginFieldInitializer(=)
@@ -308,11 +309,11 @@
                 listener: beginMetadataStar(int)
                 listener: endMetadataStar(0)
               listener: beginMember()
-              parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', interface, DeclarationKind.Class, WrapperClass)
+              parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', interface, DeclarationKind.Class, WrapperClass, false)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(interface)
                 listener: handleType(int, null)
-                ensureIdentifier(int, fieldDeclaration)
+                ensureIdentifierPotentiallyRecovered(int, fieldDeclaration, false)
                   listener: handleIdentifier(interface, fieldDeclaration)
                 parseFieldInitializerOpt(interface, interface, null, null, DeclarationKind.Class, WrapperClass)
                   listener: beginFieldInitializer(=)
@@ -331,11 +332,11 @@
                 listener: beginMetadataStar(int)
                 listener: endMetadataStar(0)
               listener: beginMember()
-              parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', library, DeclarationKind.Class, WrapperClass)
+              parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', library, DeclarationKind.Class, WrapperClass, false)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(library)
                 listener: handleType(int, null)
-                ensureIdentifier(int, fieldDeclaration)
+                ensureIdentifierPotentiallyRecovered(int, fieldDeclaration, false)
                   listener: handleIdentifier(library, fieldDeclaration)
                 parseFieldInitializerOpt(library, library, null, null, DeclarationKind.Class, WrapperClass)
                   listener: beginFieldInitializer(=)
@@ -355,11 +356,11 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               isUnaryMinus(=)
-              parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', operator, DeclarationKind.Class, WrapperClass)
+              parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', operator, DeclarationKind.Class, WrapperClass, false)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(operator)
                 listener: handleType(int, null)
-                ensureIdentifier(int, fieldDeclaration)
+                ensureIdentifierPotentiallyRecovered(int, fieldDeclaration, false)
                   listener: handleIdentifier(operator, fieldDeclaration)
                 parseFieldInitializerOpt(operator, operator, null, null, DeclarationKind.Class, WrapperClass)
                   listener: beginFieldInitializer(=)
@@ -378,11 +379,11 @@
                 listener: beginMetadataStar(int)
                 listener: endMetadataStar(0)
               listener: beginMember()
-              parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', mixin, DeclarationKind.Class, WrapperClass)
+              parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', mixin, DeclarationKind.Class, WrapperClass, false)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(mixin)
                 listener: handleType(int, null)
-                ensureIdentifier(int, fieldDeclaration)
+                ensureIdentifierPotentiallyRecovered(int, fieldDeclaration, false)
                   listener: handleIdentifier(mixin, fieldDeclaration)
                 parseFieldInitializerOpt(mixin, mixin, null, null, DeclarationKind.Class, WrapperClass)
                   listener: beginFieldInitializer(=)
@@ -401,11 +402,11 @@
                 listener: beginMetadataStar(int)
                 listener: endMetadataStar(0)
               listener: beginMember()
-              parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', part, DeclarationKind.Class, WrapperClass)
+              parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', part, DeclarationKind.Class, WrapperClass, false)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(part)
                 listener: handleType(int, null)
-                ensureIdentifier(int, fieldDeclaration)
+                ensureIdentifierPotentiallyRecovered(int, fieldDeclaration, false)
                   listener: handleIdentifier(part, fieldDeclaration)
                 parseFieldInitializerOpt(part, part, null, null, DeclarationKind.Class, WrapperClass)
                   listener: beginFieldInitializer(=)
@@ -424,11 +425,12 @@
                 listener: beginMetadataStar(int)
                 listener: endMetadataStar(0)
               listener: beginMember()
-              parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', set, DeclarationKind.Class, WrapperClass)
+              isReservedKeyword(=)
+              parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', set, DeclarationKind.Class, WrapperClass, false)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(set)
                 listener: handleType(int, null)
-                ensureIdentifier(int, fieldDeclaration)
+                ensureIdentifierPotentiallyRecovered(int, fieldDeclaration, false)
                   listener: handleIdentifier(set, fieldDeclaration)
                 parseFieldInitializerOpt(set, set, null, null, DeclarationKind.Class, WrapperClass)
                   listener: beginFieldInitializer(=)
@@ -447,11 +449,11 @@
                 listener: beginMetadataStar(int)
                 listener: endMetadataStar(0)
               listener: beginMember()
-              parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', static, DeclarationKind.Class, WrapperClass)
+              parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', static, DeclarationKind.Class, WrapperClass, false)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(static)
                 listener: handleType(int, null)
-                ensureIdentifier(int, fieldDeclaration)
+                ensureIdentifierPotentiallyRecovered(int, fieldDeclaration, false)
                   listener: handleIdentifier(static, fieldDeclaration)
                 parseFieldInitializerOpt(static, static, null, null, DeclarationKind.Class, WrapperClass)
                   listener: beginFieldInitializer(=)
@@ -470,11 +472,11 @@
                 listener: beginMetadataStar(int)
                 listener: endMetadataStar(0)
               listener: beginMember()
-              parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', typedef, DeclarationKind.Class, WrapperClass)
+              parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', typedef, DeclarationKind.Class, WrapperClass, false)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(typedef)
                 listener: handleType(int, null)
-                ensureIdentifier(int, fieldDeclaration)
+                ensureIdentifierPotentiallyRecovered(int, fieldDeclaration, false)
                   listener: handleIdentifier(typedef, fieldDeclaration)
                 parseFieldInitializerOpt(typedef, typedef, null, null, DeclarationKind.Class, WrapperClass)
                   listener: beginFieldInitializer(=)
diff --git a/pkg/front_end/parser_testcases/general/built_in_identifier_class_methods.dart.intertwined.expect b/pkg/front_end/parser_testcases/general/built_in_identifier_class_methods.dart.intertwined.expect
index 34e9020..70d5893 100644
--- a/pkg/front_end/parser_testcases/general/built_in_identifier_class_methods.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/general/built_in_identifier_class_methods.dart.intertwined.expect
@@ -32,12 +32,12 @@
                 listener: beginMetadataStar(int)
                 listener: endMetadataStar(0)
               listener: beginMember()
-              parseMethod({, null, null, null, null, null, {, Instance of 'SimpleType', null, abstract, DeclarationKind.Class, WrapperClass)
+              parseMethod({, null, null, null, null, null, {, Instance of 'SimpleType', null, abstract, DeclarationKind.Class, WrapperClass, false)
                 listener: beginMethod(null, null, null, null, null, abstract)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(abstract)
                 listener: handleType(int, null)
-                ensureIdentifier(int, methodDeclaration)
+                ensureIdentifierPotentiallyRecovered(int, methodDeclaration, false)
                   listener: handleIdentifier(abstract, methodDeclaration)
                 parseQualifiedRestOpt(abstract, methodDeclarationContinuation)
                 parseMethodTypeVar(abstract)
@@ -166,12 +166,12 @@
                 listener: beginMetadataStar(int)
                 listener: endMetadataStar(0)
               listener: beginMember()
-              parseMethod(}, null, null, null, null, null, }, Instance of 'SimpleType', null, as, DeclarationKind.Class, WrapperClass)
+              parseMethod(}, null, null, null, null, null, }, Instance of 'SimpleType', null, as, DeclarationKind.Class, WrapperClass, false)
                 listener: beginMethod(null, null, null, null, null, as)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(as)
                 listener: handleType(int, null)
-                ensureIdentifier(int, methodDeclaration)
+                ensureIdentifierPotentiallyRecovered(int, methodDeclaration, false)
                   listener: handleIdentifier(as, methodDeclaration)
                 parseQualifiedRestOpt(as, methodDeclarationContinuation)
                 parseMethodTypeVar(as)
@@ -300,12 +300,12 @@
                 listener: beginMetadataStar(int)
                 listener: endMetadataStar(0)
               listener: beginMember()
-              parseMethod(}, null, null, null, null, null, }, Instance of 'SimpleType', null, covariant, DeclarationKind.Class, WrapperClass)
+              parseMethod(}, null, null, null, null, null, }, Instance of 'SimpleType', null, covariant, DeclarationKind.Class, WrapperClass, false)
                 listener: beginMethod(null, null, null, null, null, covariant)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(covariant)
                 listener: handleType(int, null)
-                ensureIdentifier(int, methodDeclaration)
+                ensureIdentifierPotentiallyRecovered(int, methodDeclaration, false)
                   listener: handleIdentifier(covariant, methodDeclaration)
                 parseQualifiedRestOpt(covariant, methodDeclarationContinuation)
                 parseMethodTypeVar(covariant)
@@ -434,12 +434,12 @@
                 listener: beginMetadataStar(int)
                 listener: endMetadataStar(0)
               listener: beginMember()
-              parseMethod(}, null, null, null, null, null, }, Instance of 'SimpleType', null, deferred, DeclarationKind.Class, WrapperClass)
+              parseMethod(}, null, null, null, null, null, }, Instance of 'SimpleType', null, deferred, DeclarationKind.Class, WrapperClass, false)
                 listener: beginMethod(null, null, null, null, null, deferred)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(deferred)
                 listener: handleType(int, null)
-                ensureIdentifier(int, methodDeclaration)
+                ensureIdentifierPotentiallyRecovered(int, methodDeclaration, false)
                   listener: handleIdentifier(deferred, methodDeclaration)
                 parseQualifiedRestOpt(deferred, methodDeclarationContinuation)
                 parseMethodTypeVar(deferred)
@@ -568,12 +568,12 @@
                 listener: beginMetadataStar(int)
                 listener: endMetadataStar(0)
               listener: beginMember()
-              parseMethod(}, null, null, null, null, null, }, Instance of 'SimpleType', null, dynamic, DeclarationKind.Class, WrapperClass)
+              parseMethod(}, null, null, null, null, null, }, Instance of 'SimpleType', null, dynamic, DeclarationKind.Class, WrapperClass, false)
                 listener: beginMethod(null, null, null, null, null, dynamic)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(dynamic)
                 listener: handleType(int, null)
-                ensureIdentifier(int, methodDeclaration)
+                ensureIdentifierPotentiallyRecovered(int, methodDeclaration, false)
                   listener: handleIdentifier(dynamic, methodDeclaration)
                 parseQualifiedRestOpt(dynamic, methodDeclarationContinuation)
                 parseMethodTypeVar(dynamic)
@@ -702,12 +702,12 @@
                 listener: beginMetadataStar(int)
                 listener: endMetadataStar(0)
               listener: beginMember()
-              parseMethod(}, null, null, null, null, null, }, Instance of 'SimpleType', null, export, DeclarationKind.Class, WrapperClass)
+              parseMethod(}, null, null, null, null, null, }, Instance of 'SimpleType', null, export, DeclarationKind.Class, WrapperClass, false)
                 listener: beginMethod(null, null, null, null, null, export)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(export)
                 listener: handleType(int, null)
-                ensureIdentifier(int, methodDeclaration)
+                ensureIdentifierPotentiallyRecovered(int, methodDeclaration, false)
                   listener: handleIdentifier(export, methodDeclaration)
                 parseQualifiedRestOpt(export, methodDeclarationContinuation)
                 parseMethodTypeVar(export)
@@ -836,12 +836,12 @@
                 listener: beginMetadataStar(int)
                 listener: endMetadataStar(0)
               listener: beginMember()
-              parseMethod(}, null, null, null, null, null, }, Instance of 'SimpleType', null, external, DeclarationKind.Class, WrapperClass)
+              parseMethod(}, null, null, null, null, null, }, Instance of 'SimpleType', null, external, DeclarationKind.Class, WrapperClass, false)
                 listener: beginMethod(null, null, null, null, null, external)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(external)
                 listener: handleType(int, null)
-                ensureIdentifier(int, methodDeclaration)
+                ensureIdentifierPotentiallyRecovered(int, methodDeclaration, false)
                   listener: handleIdentifier(external, methodDeclaration)
                 parseQualifiedRestOpt(external, methodDeclarationContinuation)
                 parseMethodTypeVar(external)
@@ -970,12 +970,12 @@
                 listener: beginMetadataStar(int)
                 listener: endMetadataStar(0)
               listener: beginMember()
-              parseMethod(}, null, null, null, null, null, }, Instance of 'SimpleType', null, factory, DeclarationKind.Class, WrapperClass)
+              parseMethod(}, null, null, null, null, null, }, Instance of 'SimpleType', null, factory, DeclarationKind.Class, WrapperClass, false)
                 listener: beginMethod(null, null, null, null, null, factory)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(factory)
                 listener: handleType(int, null)
-                ensureIdentifier(int, methodDeclaration)
+                ensureIdentifierPotentiallyRecovered(int, methodDeclaration, false)
                   listener: handleIdentifier(factory, methodDeclaration)
                 parseQualifiedRestOpt(factory, methodDeclarationContinuation)
                 parseMethodTypeVar(factory)
@@ -1104,12 +1104,12 @@
                 listener: beginMetadataStar(int)
                 listener: endMetadataStar(0)
               listener: beginMember()
-              parseMethod(}, null, null, null, null, null, }, Instance of 'SimpleType', null, Function, DeclarationKind.Class, WrapperClass)
+              parseMethod(}, null, null, null, null, null, }, Instance of 'SimpleType', null, Function, DeclarationKind.Class, WrapperClass, false)
                 listener: beginMethod(null, null, null, null, null, Function)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(Function)
                 listener: handleType(int, null)
-                ensureIdentifier(int, methodDeclaration)
+                ensureIdentifierPotentiallyRecovered(int, methodDeclaration, false)
                   listener: handleIdentifier(Function, methodDeclaration)
                 parseQualifiedRestOpt(Function, methodDeclarationContinuation)
                 parseMethodTypeVar(Function)
@@ -1238,12 +1238,13 @@
                 listener: beginMetadataStar(int)
                 listener: endMetadataStar(0)
               listener: beginMember()
-              parseMethod(}, null, null, null, null, null, }, Instance of 'SimpleType', null, get, DeclarationKind.Class, WrapperClass)
+              isReservedKeyword(()
+              parseMethod(}, null, null, null, null, null, }, Instance of 'SimpleType', null, get, DeclarationKind.Class, WrapperClass, false)
                 listener: beginMethod(null, null, null, null, null, get)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(get)
                 listener: handleType(int, null)
-                ensureIdentifier(int, methodDeclaration)
+                ensureIdentifierPotentiallyRecovered(int, methodDeclaration, false)
                   listener: handleIdentifier(get, methodDeclaration)
                 parseQualifiedRestOpt(get, methodDeclarationContinuation)
                 parseMethodTypeVar(get)
@@ -1372,12 +1373,12 @@
                 listener: beginMetadataStar(int)
                 listener: endMetadataStar(0)
               listener: beginMember()
-              parseMethod(}, null, null, null, null, null, }, Instance of 'SimpleType', null, implements, DeclarationKind.Class, WrapperClass)
+              parseMethod(}, null, null, null, null, null, }, Instance of 'SimpleType', null, implements, DeclarationKind.Class, WrapperClass, false)
                 listener: beginMethod(null, null, null, null, null, implements)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(implements)
                 listener: handleType(int, null)
-                ensureIdentifier(int, methodDeclaration)
+                ensureIdentifierPotentiallyRecovered(int, methodDeclaration, false)
                   listener: handleIdentifier(implements, methodDeclaration)
                 parseQualifiedRestOpt(implements, methodDeclarationContinuation)
                 parseMethodTypeVar(implements)
@@ -1506,12 +1507,12 @@
                 listener: beginMetadataStar(int)
                 listener: endMetadataStar(0)
               listener: beginMember()
-              parseMethod(}, null, null, null, null, null, }, Instance of 'SimpleType', null, import, DeclarationKind.Class, WrapperClass)
+              parseMethod(}, null, null, null, null, null, }, Instance of 'SimpleType', null, import, DeclarationKind.Class, WrapperClass, false)
                 listener: beginMethod(null, null, null, null, null, import)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(import)
                 listener: handleType(int, null)
-                ensureIdentifier(int, methodDeclaration)
+                ensureIdentifierPotentiallyRecovered(int, methodDeclaration, false)
                   listener: handleIdentifier(import, methodDeclaration)
                 parseQualifiedRestOpt(import, methodDeclarationContinuation)
                 parseMethodTypeVar(import)
@@ -1640,12 +1641,12 @@
                 listener: beginMetadataStar(int)
                 listener: endMetadataStar(0)
               listener: beginMember()
-              parseMethod(}, null, null, null, null, null, }, Instance of 'SimpleType', null, interface, DeclarationKind.Class, WrapperClass)
+              parseMethod(}, null, null, null, null, null, }, Instance of 'SimpleType', null, interface, DeclarationKind.Class, WrapperClass, false)
                 listener: beginMethod(null, null, null, null, null, interface)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(interface)
                 listener: handleType(int, null)
-                ensureIdentifier(int, methodDeclaration)
+                ensureIdentifierPotentiallyRecovered(int, methodDeclaration, false)
                   listener: handleIdentifier(interface, methodDeclaration)
                 parseQualifiedRestOpt(interface, methodDeclarationContinuation)
                 parseMethodTypeVar(interface)
@@ -1774,12 +1775,12 @@
                 listener: beginMetadataStar(int)
                 listener: endMetadataStar(0)
               listener: beginMember()
-              parseMethod(}, null, null, null, null, null, }, Instance of 'SimpleType', null, library, DeclarationKind.Class, WrapperClass)
+              parseMethod(}, null, null, null, null, null, }, Instance of 'SimpleType', null, library, DeclarationKind.Class, WrapperClass, false)
                 listener: beginMethod(null, null, null, null, null, library)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(library)
                 listener: handleType(int, null)
-                ensureIdentifier(int, methodDeclaration)
+                ensureIdentifierPotentiallyRecovered(int, methodDeclaration, false)
                   listener: handleIdentifier(library, methodDeclaration)
                 parseQualifiedRestOpt(library, methodDeclarationContinuation)
                 parseMethodTypeVar(library)
@@ -1909,13 +1910,13 @@
                 listener: endMetadataStar(0)
               listener: beginMember()
               isUnaryMinus(()
-              parseMethod(}, null, null, null, null, null, }, Instance of 'SimpleType', null, operator, DeclarationKind.Class, WrapperClass)
+              parseMethod(}, null, null, null, null, null, }, Instance of 'SimpleType', null, operator, DeclarationKind.Class, WrapperClass, false)
                 isUnaryMinus(()
                 listener: beginMethod(null, null, null, null, null, operator)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(operator)
                 listener: handleType(int, null)
-                ensureIdentifier(int, methodDeclaration)
+                ensureIdentifierPotentiallyRecovered(int, methodDeclaration, false)
                   listener: handleIdentifier(operator, methodDeclaration)
                 parseQualifiedRestOpt(operator, methodDeclarationContinuation)
                 parseMethodTypeVar(operator)
@@ -2044,12 +2045,12 @@
                 listener: beginMetadataStar(int)
                 listener: endMetadataStar(0)
               listener: beginMember()
-              parseMethod(}, null, null, null, null, null, }, Instance of 'SimpleType', null, mixin, DeclarationKind.Class, WrapperClass)
+              parseMethod(}, null, null, null, null, null, }, Instance of 'SimpleType', null, mixin, DeclarationKind.Class, WrapperClass, false)
                 listener: beginMethod(null, null, null, null, null, mixin)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(mixin)
                 listener: handleType(int, null)
-                ensureIdentifier(int, methodDeclaration)
+                ensureIdentifierPotentiallyRecovered(int, methodDeclaration, false)
                   listener: handleIdentifier(mixin, methodDeclaration)
                 parseQualifiedRestOpt(mixin, methodDeclarationContinuation)
                 parseMethodTypeVar(mixin)
@@ -2178,12 +2179,12 @@
                 listener: beginMetadataStar(int)
                 listener: endMetadataStar(0)
               listener: beginMember()
-              parseMethod(}, null, null, null, null, null, }, Instance of 'SimpleType', null, part, DeclarationKind.Class, WrapperClass)
+              parseMethod(}, null, null, null, null, null, }, Instance of 'SimpleType', null, part, DeclarationKind.Class, WrapperClass, false)
                 listener: beginMethod(null, null, null, null, null, part)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(part)
                 listener: handleType(int, null)
-                ensureIdentifier(int, methodDeclaration)
+                ensureIdentifierPotentiallyRecovered(int, methodDeclaration, false)
                   listener: handleIdentifier(part, methodDeclaration)
                 parseQualifiedRestOpt(part, methodDeclarationContinuation)
                 parseMethodTypeVar(part)
@@ -2312,12 +2313,13 @@
                 listener: beginMetadataStar(int)
                 listener: endMetadataStar(0)
               listener: beginMember()
-              parseMethod(}, null, null, null, null, null, }, Instance of 'SimpleType', null, set, DeclarationKind.Class, WrapperClass)
+              isReservedKeyword(()
+              parseMethod(}, null, null, null, null, null, }, Instance of 'SimpleType', null, set, DeclarationKind.Class, WrapperClass, false)
                 listener: beginMethod(null, null, null, null, null, set)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(set)
                 listener: handleType(int, null)
-                ensureIdentifier(int, methodDeclaration)
+                ensureIdentifierPotentiallyRecovered(int, methodDeclaration, false)
                   listener: handleIdentifier(set, methodDeclaration)
                 parseQualifiedRestOpt(set, methodDeclarationContinuation)
                 parseMethodTypeVar(set)
@@ -2446,12 +2448,12 @@
                 listener: beginMetadataStar(int)
                 listener: endMetadataStar(0)
               listener: beginMember()
-              parseMethod(}, null, null, null, null, null, }, Instance of 'SimpleType', null, static, DeclarationKind.Class, WrapperClass)
+              parseMethod(}, null, null, null, null, null, }, Instance of 'SimpleType', null, static, DeclarationKind.Class, WrapperClass, false)
                 listener: beginMethod(null, null, null, null, null, static)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(static)
                 listener: handleType(int, null)
-                ensureIdentifier(int, methodDeclaration)
+                ensureIdentifierPotentiallyRecovered(int, methodDeclaration, false)
                   listener: handleIdentifier(static, methodDeclaration)
                 parseQualifiedRestOpt(static, methodDeclarationContinuation)
                 parseMethodTypeVar(static)
@@ -2580,12 +2582,12 @@
                 listener: beginMetadataStar(int)
                 listener: endMetadataStar(0)
               listener: beginMember()
-              parseMethod(}, null, null, null, null, null, }, Instance of 'SimpleType', null, typedef, DeclarationKind.Class, WrapperClass)
+              parseMethod(}, null, null, null, null, null, }, Instance of 'SimpleType', null, typedef, DeclarationKind.Class, WrapperClass, false)
                 listener: beginMethod(null, null, null, null, null, typedef)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(typedef)
                 listener: handleType(int, null)
-                ensureIdentifier(int, methodDeclaration)
+                ensureIdentifierPotentiallyRecovered(int, methodDeclaration, false)
                   listener: handleIdentifier(typedef, methodDeclaration)
                 parseQualifiedRestOpt(typedef, methodDeclarationContinuation)
                 parseMethodTypeVar(typedef)
diff --git a/pkg/front_end/parser_testcases/general/built_in_identifier_top_level_fields.dart.intertwined.expect b/pkg/front_end/parser_testcases/general/built_in_identifier_top_level_fields.dart.intertwined.expect
index eed1e21..33c529a 100644
--- a/pkg/front_end/parser_testcases/general/built_in_identifier_top_level_fields.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/general/built_in_identifier_top_level_fields.dart.intertwined.expect
@@ -8,11 +8,11 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl()
       listener: beginTopLevelMember(int)
-      parseFields(, null, null, null, null, null, , Instance of 'SimpleType', abstract, DeclarationKind.TopLevel, null)
+      parseFields(, null, null, null, null, null, , Instance of 'SimpleType', abstract, DeclarationKind.TopLevel, null, false)
         listener: handleIdentifier(int, typeReference)
         listener: handleNoTypeArguments(abstract)
         listener: handleType(int, null)
-        ensureIdentifier(int, topLevelVariableDeclaration)
+        ensureIdentifierPotentiallyRecovered(int, topLevelVariableDeclaration, false)
           listener: handleIdentifier(abstract, topLevelVariableDeclaration)
         parseFieldInitializerOpt(abstract, abstract, null, null, DeclarationKind.TopLevel, null)
           listener: beginFieldInitializer(=)
@@ -31,11 +31,11 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(int)
-      parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', as, DeclarationKind.TopLevel, null)
+      parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', as, DeclarationKind.TopLevel, null, false)
         listener: handleIdentifier(int, typeReference)
         listener: handleNoTypeArguments(as)
         listener: handleType(int, null)
-        ensureIdentifier(int, topLevelVariableDeclaration)
+        ensureIdentifierPotentiallyRecovered(int, topLevelVariableDeclaration, false)
           listener: handleIdentifier(as, topLevelVariableDeclaration)
         parseFieldInitializerOpt(as, as, null, null, DeclarationKind.TopLevel, null)
           listener: beginFieldInitializer(=)
@@ -54,11 +54,11 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(int)
-      parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', covariant, DeclarationKind.TopLevel, null)
+      parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', covariant, DeclarationKind.TopLevel, null, false)
         listener: handleIdentifier(int, typeReference)
         listener: handleNoTypeArguments(covariant)
         listener: handleType(int, null)
-        ensureIdentifier(int, topLevelVariableDeclaration)
+        ensureIdentifierPotentiallyRecovered(int, topLevelVariableDeclaration, false)
           listener: handleIdentifier(covariant, topLevelVariableDeclaration)
         parseFieldInitializerOpt(covariant, covariant, null, null, DeclarationKind.TopLevel, null)
           listener: beginFieldInitializer(=)
@@ -77,11 +77,11 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(int)
-      parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', deferred, DeclarationKind.TopLevel, null)
+      parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', deferred, DeclarationKind.TopLevel, null, false)
         listener: handleIdentifier(int, typeReference)
         listener: handleNoTypeArguments(deferred)
         listener: handleType(int, null)
-        ensureIdentifier(int, topLevelVariableDeclaration)
+        ensureIdentifierPotentiallyRecovered(int, topLevelVariableDeclaration, false)
           listener: handleIdentifier(deferred, topLevelVariableDeclaration)
         parseFieldInitializerOpt(deferred, deferred, null, null, DeclarationKind.TopLevel, null)
           listener: beginFieldInitializer(=)
@@ -100,11 +100,11 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(int)
-      parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', dynamic, DeclarationKind.TopLevel, null)
+      parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', dynamic, DeclarationKind.TopLevel, null, false)
         listener: handleIdentifier(int, typeReference)
         listener: handleNoTypeArguments(dynamic)
         listener: handleType(int, null)
-        ensureIdentifier(int, topLevelVariableDeclaration)
+        ensureIdentifierPotentiallyRecovered(int, topLevelVariableDeclaration, false)
           listener: handleIdentifier(dynamic, topLevelVariableDeclaration)
         parseFieldInitializerOpt(dynamic, dynamic, null, null, DeclarationKind.TopLevel, null)
           listener: beginFieldInitializer(=)
@@ -123,11 +123,11 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(int)
-      parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', export, DeclarationKind.TopLevel, null)
+      parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', export, DeclarationKind.TopLevel, null, false)
         listener: handleIdentifier(int, typeReference)
         listener: handleNoTypeArguments(export)
         listener: handleType(int, null)
-        ensureIdentifier(int, topLevelVariableDeclaration)
+        ensureIdentifierPotentiallyRecovered(int, topLevelVariableDeclaration, false)
           listener: handleIdentifier(export, topLevelVariableDeclaration)
         parseFieldInitializerOpt(export, export, null, null, DeclarationKind.TopLevel, null)
           listener: beginFieldInitializer(=)
@@ -146,11 +146,11 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(int)
-      parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', external, DeclarationKind.TopLevel, null)
+      parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', external, DeclarationKind.TopLevel, null, false)
         listener: handleIdentifier(int, typeReference)
         listener: handleNoTypeArguments(external)
         listener: handleType(int, null)
-        ensureIdentifier(int, topLevelVariableDeclaration)
+        ensureIdentifierPotentiallyRecovered(int, topLevelVariableDeclaration, false)
           listener: handleIdentifier(external, topLevelVariableDeclaration)
         parseFieldInitializerOpt(external, external, null, null, DeclarationKind.TopLevel, null)
           listener: beginFieldInitializer(=)
@@ -169,11 +169,11 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(int)
-      parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', factory, DeclarationKind.TopLevel, null)
+      parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', factory, DeclarationKind.TopLevel, null, false)
         listener: handleIdentifier(int, typeReference)
         listener: handleNoTypeArguments(factory)
         listener: handleType(int, null)
-        ensureIdentifier(int, topLevelVariableDeclaration)
+        ensureIdentifierPotentiallyRecovered(int, topLevelVariableDeclaration, false)
           listener: handleIdentifier(factory, topLevelVariableDeclaration)
         parseFieldInitializerOpt(factory, factory, null, null, DeclarationKind.TopLevel, null)
           listener: beginFieldInitializer(=)
@@ -192,11 +192,11 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(int)
-      parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', Function, DeclarationKind.TopLevel, null)
+      parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', Function, DeclarationKind.TopLevel, null, false)
         listener: handleIdentifier(int, typeReference)
         listener: handleNoTypeArguments(Function)
         listener: handleType(int, null)
-        ensureIdentifier(int, topLevelVariableDeclaration)
+        ensureIdentifierPotentiallyRecovered(int, topLevelVariableDeclaration, false)
           listener: handleIdentifier(Function, topLevelVariableDeclaration)
         parseFieldInitializerOpt(Function, Function, null, null, DeclarationKind.TopLevel, null)
           listener: beginFieldInitializer(=)
@@ -215,11 +215,11 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(int)
-      parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', get, DeclarationKind.TopLevel, null)
+      parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', get, DeclarationKind.TopLevel, null, false)
         listener: handleIdentifier(int, typeReference)
         listener: handleNoTypeArguments(get)
         listener: handleType(int, null)
-        ensureIdentifier(int, topLevelVariableDeclaration)
+        ensureIdentifierPotentiallyRecovered(int, topLevelVariableDeclaration, false)
           listener: handleIdentifier(get, topLevelVariableDeclaration)
         parseFieldInitializerOpt(get, get, null, null, DeclarationKind.TopLevel, null)
           listener: beginFieldInitializer(=)
@@ -238,11 +238,11 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(int)
-      parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', implements, DeclarationKind.TopLevel, null)
+      parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', implements, DeclarationKind.TopLevel, null, false)
         listener: handleIdentifier(int, typeReference)
         listener: handleNoTypeArguments(implements)
         listener: handleType(int, null)
-        ensureIdentifier(int, topLevelVariableDeclaration)
+        ensureIdentifierPotentiallyRecovered(int, topLevelVariableDeclaration, false)
           listener: handleIdentifier(implements, topLevelVariableDeclaration)
         parseFieldInitializerOpt(implements, implements, null, null, DeclarationKind.TopLevel, null)
           listener: beginFieldInitializer(=)
@@ -261,11 +261,11 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(int)
-      parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', import, DeclarationKind.TopLevel, null)
+      parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', import, DeclarationKind.TopLevel, null, false)
         listener: handleIdentifier(int, typeReference)
         listener: handleNoTypeArguments(import)
         listener: handleType(int, null)
-        ensureIdentifier(int, topLevelVariableDeclaration)
+        ensureIdentifierPotentiallyRecovered(int, topLevelVariableDeclaration, false)
           listener: handleIdentifier(import, topLevelVariableDeclaration)
         parseFieldInitializerOpt(import, import, null, null, DeclarationKind.TopLevel, null)
           listener: beginFieldInitializer(=)
@@ -284,11 +284,11 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(int)
-      parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', interface, DeclarationKind.TopLevel, null)
+      parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', interface, DeclarationKind.TopLevel, null, false)
         listener: handleIdentifier(int, typeReference)
         listener: handleNoTypeArguments(interface)
         listener: handleType(int, null)
-        ensureIdentifier(int, topLevelVariableDeclaration)
+        ensureIdentifierPotentiallyRecovered(int, topLevelVariableDeclaration, false)
           listener: handleIdentifier(interface, topLevelVariableDeclaration)
         parseFieldInitializerOpt(interface, interface, null, null, DeclarationKind.TopLevel, null)
           listener: beginFieldInitializer(=)
@@ -307,11 +307,11 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(int)
-      parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', library, DeclarationKind.TopLevel, null)
+      parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', library, DeclarationKind.TopLevel, null, false)
         listener: handleIdentifier(int, typeReference)
         listener: handleNoTypeArguments(library)
         listener: handleType(int, null)
-        ensureIdentifier(int, topLevelVariableDeclaration)
+        ensureIdentifierPotentiallyRecovered(int, topLevelVariableDeclaration, false)
           listener: handleIdentifier(library, topLevelVariableDeclaration)
         parseFieldInitializerOpt(library, library, null, null, DeclarationKind.TopLevel, null)
           listener: beginFieldInitializer(=)
@@ -330,11 +330,11 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(int)
-      parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', operator, DeclarationKind.TopLevel, null)
+      parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', operator, DeclarationKind.TopLevel, null, false)
         listener: handleIdentifier(int, typeReference)
         listener: handleNoTypeArguments(operator)
         listener: handleType(int, null)
-        ensureIdentifier(int, topLevelVariableDeclaration)
+        ensureIdentifierPotentiallyRecovered(int, topLevelVariableDeclaration, false)
           listener: handleIdentifier(operator, topLevelVariableDeclaration)
         parseFieldInitializerOpt(operator, operator, null, null, DeclarationKind.TopLevel, null)
           listener: beginFieldInitializer(=)
@@ -353,11 +353,11 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(int)
-      parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', mixin, DeclarationKind.TopLevel, null)
+      parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', mixin, DeclarationKind.TopLevel, null, false)
         listener: handleIdentifier(int, typeReference)
         listener: handleNoTypeArguments(mixin)
         listener: handleType(int, null)
-        ensureIdentifier(int, topLevelVariableDeclaration)
+        ensureIdentifierPotentiallyRecovered(int, topLevelVariableDeclaration, false)
           listener: handleIdentifier(mixin, topLevelVariableDeclaration)
         parseFieldInitializerOpt(mixin, mixin, null, null, DeclarationKind.TopLevel, null)
           listener: beginFieldInitializer(=)
@@ -376,11 +376,11 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(int)
-      parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', part, DeclarationKind.TopLevel, null)
+      parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', part, DeclarationKind.TopLevel, null, false)
         listener: handleIdentifier(int, typeReference)
         listener: handleNoTypeArguments(part)
         listener: handleType(int, null)
-        ensureIdentifier(int, topLevelVariableDeclaration)
+        ensureIdentifierPotentiallyRecovered(int, topLevelVariableDeclaration, false)
           listener: handleIdentifier(part, topLevelVariableDeclaration)
         parseFieldInitializerOpt(part, part, null, null, DeclarationKind.TopLevel, null)
           listener: beginFieldInitializer(=)
@@ -399,11 +399,11 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(int)
-      parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', set, DeclarationKind.TopLevel, null)
+      parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', set, DeclarationKind.TopLevel, null, false)
         listener: handleIdentifier(int, typeReference)
         listener: handleNoTypeArguments(set)
         listener: handleType(int, null)
-        ensureIdentifier(int, topLevelVariableDeclaration)
+        ensureIdentifierPotentiallyRecovered(int, topLevelVariableDeclaration, false)
           listener: handleIdentifier(set, topLevelVariableDeclaration)
         parseFieldInitializerOpt(set, set, null, null, DeclarationKind.TopLevel, null)
           listener: beginFieldInitializer(=)
@@ -422,11 +422,11 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(int)
-      parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', static, DeclarationKind.TopLevel, null)
+      parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', static, DeclarationKind.TopLevel, null, false)
         listener: handleIdentifier(int, typeReference)
         listener: handleNoTypeArguments(static)
         listener: handleType(int, null)
-        ensureIdentifier(int, topLevelVariableDeclaration)
+        ensureIdentifierPotentiallyRecovered(int, topLevelVariableDeclaration, false)
           listener: handleIdentifier(static, topLevelVariableDeclaration)
         parseFieldInitializerOpt(static, static, null, null, DeclarationKind.TopLevel, null)
           listener: beginFieldInitializer(=)
@@ -445,11 +445,11 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(int)
-      parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', typedef, DeclarationKind.TopLevel, null)
+      parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', typedef, DeclarationKind.TopLevel, null, false)
         listener: handleIdentifier(int, typeReference)
         listener: handleNoTypeArguments(typedef)
         listener: handleType(int, null)
-        ensureIdentifier(int, topLevelVariableDeclaration)
+        ensureIdentifierPotentiallyRecovered(int, topLevelVariableDeclaration, false)
           listener: handleIdentifier(typedef, topLevelVariableDeclaration)
         parseFieldInitializerOpt(typedef, typedef, null, null, DeclarationKind.TopLevel, null)
           listener: beginFieldInitializer(=)
diff --git a/pkg/front_end/parser_testcases/general/built_in_identifier_top_level_methods.dart.intertwined.expect b/pkg/front_end/parser_testcases/general/built_in_identifier_top_level_methods.dart.intertwined.expect
index 3c006e5..fc8f9c6 100644
--- a/pkg/front_end/parser_testcases/general/built_in_identifier_top_level_methods.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/general/built_in_identifier_top_level_methods.dart.intertwined.expect
@@ -8,12 +8,12 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl()
       listener: beginTopLevelMember(int)
-      parseTopLevelMethod(, null, , Instance of 'SimpleType', null, abstract)
+      parseTopLevelMethod(, null, , Instance of 'SimpleType', null, abstract, false)
         listener: beginTopLevelMethod(, null)
         listener: handleIdentifier(int, typeReference)
         listener: handleNoTypeArguments(abstract)
         listener: handleType(int, null)
-        ensureIdentifier(int, topLevelFunctionDeclaration)
+        ensureIdentifierPotentiallyRecovered(int, topLevelFunctionDeclaration, false)
           listener: handleIdentifier(abstract, topLevelFunctionDeclaration)
         parseMethodTypeVar(abstract)
           listener: handleNoTypeVariables(()
@@ -138,12 +138,12 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl(})
       listener: beginTopLevelMember(int)
-      parseTopLevelMethod(}, null, }, Instance of 'SimpleType', null, as)
+      parseTopLevelMethod(}, null, }, Instance of 'SimpleType', null, as, false)
         listener: beginTopLevelMethod(}, null)
         listener: handleIdentifier(int, typeReference)
         listener: handleNoTypeArguments(as)
         listener: handleType(int, null)
-        ensureIdentifier(int, topLevelFunctionDeclaration)
+        ensureIdentifierPotentiallyRecovered(int, topLevelFunctionDeclaration, false)
           listener: handleIdentifier(as, topLevelFunctionDeclaration)
         parseMethodTypeVar(as)
           listener: handleNoTypeVariables(()
@@ -268,12 +268,12 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl(})
       listener: beginTopLevelMember(int)
-      parseTopLevelMethod(}, null, }, Instance of 'SimpleType', null, covariant)
+      parseTopLevelMethod(}, null, }, Instance of 'SimpleType', null, covariant, false)
         listener: beginTopLevelMethod(}, null)
         listener: handleIdentifier(int, typeReference)
         listener: handleNoTypeArguments(covariant)
         listener: handleType(int, null)
-        ensureIdentifier(int, topLevelFunctionDeclaration)
+        ensureIdentifierPotentiallyRecovered(int, topLevelFunctionDeclaration, false)
           listener: handleIdentifier(covariant, topLevelFunctionDeclaration)
         parseMethodTypeVar(covariant)
           listener: handleNoTypeVariables(()
@@ -398,12 +398,12 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl(})
       listener: beginTopLevelMember(int)
-      parseTopLevelMethod(}, null, }, Instance of 'SimpleType', null, deferred)
+      parseTopLevelMethod(}, null, }, Instance of 'SimpleType', null, deferred, false)
         listener: beginTopLevelMethod(}, null)
         listener: handleIdentifier(int, typeReference)
         listener: handleNoTypeArguments(deferred)
         listener: handleType(int, null)
-        ensureIdentifier(int, topLevelFunctionDeclaration)
+        ensureIdentifierPotentiallyRecovered(int, topLevelFunctionDeclaration, false)
           listener: handleIdentifier(deferred, topLevelFunctionDeclaration)
         parseMethodTypeVar(deferred)
           listener: handleNoTypeVariables(()
@@ -528,12 +528,12 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl(})
       listener: beginTopLevelMember(int)
-      parseTopLevelMethod(}, null, }, Instance of 'SimpleType', null, dynamic)
+      parseTopLevelMethod(}, null, }, Instance of 'SimpleType', null, dynamic, false)
         listener: beginTopLevelMethod(}, null)
         listener: handleIdentifier(int, typeReference)
         listener: handleNoTypeArguments(dynamic)
         listener: handleType(int, null)
-        ensureIdentifier(int, topLevelFunctionDeclaration)
+        ensureIdentifierPotentiallyRecovered(int, topLevelFunctionDeclaration, false)
           listener: handleIdentifier(dynamic, topLevelFunctionDeclaration)
         parseMethodTypeVar(dynamic)
           listener: handleNoTypeVariables(()
@@ -658,12 +658,12 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl(})
       listener: beginTopLevelMember(int)
-      parseTopLevelMethod(}, null, }, Instance of 'SimpleType', null, export)
+      parseTopLevelMethod(}, null, }, Instance of 'SimpleType', null, export, false)
         listener: beginTopLevelMethod(}, null)
         listener: handleIdentifier(int, typeReference)
         listener: handleNoTypeArguments(export)
         listener: handleType(int, null)
-        ensureIdentifier(int, topLevelFunctionDeclaration)
+        ensureIdentifierPotentiallyRecovered(int, topLevelFunctionDeclaration, false)
           listener: handleIdentifier(export, topLevelFunctionDeclaration)
         parseMethodTypeVar(export)
           listener: handleNoTypeVariables(()
@@ -788,12 +788,12 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl(})
       listener: beginTopLevelMember(int)
-      parseTopLevelMethod(}, null, }, Instance of 'SimpleType', null, external)
+      parseTopLevelMethod(}, null, }, Instance of 'SimpleType', null, external, false)
         listener: beginTopLevelMethod(}, null)
         listener: handleIdentifier(int, typeReference)
         listener: handleNoTypeArguments(external)
         listener: handleType(int, null)
-        ensureIdentifier(int, topLevelFunctionDeclaration)
+        ensureIdentifierPotentiallyRecovered(int, topLevelFunctionDeclaration, false)
           listener: handleIdentifier(external, topLevelFunctionDeclaration)
         parseMethodTypeVar(external)
           listener: handleNoTypeVariables(()
@@ -918,12 +918,12 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl(})
       listener: beginTopLevelMember(int)
-      parseTopLevelMethod(}, null, }, Instance of 'SimpleType', null, factory)
+      parseTopLevelMethod(}, null, }, Instance of 'SimpleType', null, factory, false)
         listener: beginTopLevelMethod(}, null)
         listener: handleIdentifier(int, typeReference)
         listener: handleNoTypeArguments(factory)
         listener: handleType(int, null)
-        ensureIdentifier(int, topLevelFunctionDeclaration)
+        ensureIdentifierPotentiallyRecovered(int, topLevelFunctionDeclaration, false)
           listener: handleIdentifier(factory, topLevelFunctionDeclaration)
         parseMethodTypeVar(factory)
           listener: handleNoTypeVariables(()
@@ -1048,12 +1048,12 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl(})
       listener: beginTopLevelMember(int)
-      parseTopLevelMethod(}, null, }, Instance of 'SimpleType', null, Function)
+      parseTopLevelMethod(}, null, }, Instance of 'SimpleType', null, Function, false)
         listener: beginTopLevelMethod(}, null)
         listener: handleIdentifier(int, typeReference)
         listener: handleNoTypeArguments(Function)
         listener: handleType(int, null)
-        ensureIdentifier(int, topLevelFunctionDeclaration)
+        ensureIdentifierPotentiallyRecovered(int, topLevelFunctionDeclaration, false)
           listener: handleIdentifier(Function, topLevelFunctionDeclaration)
         parseMethodTypeVar(Function)
           listener: handleNoTypeVariables(()
@@ -1178,12 +1178,12 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl(})
       listener: beginTopLevelMember(int)
-      parseTopLevelMethod(}, null, }, Instance of 'SimpleType', null, get)
+      parseTopLevelMethod(}, null, }, Instance of 'SimpleType', null, get, false)
         listener: beginTopLevelMethod(}, null)
         listener: handleIdentifier(int, typeReference)
         listener: handleNoTypeArguments(get)
         listener: handleType(int, null)
-        ensureIdentifier(int, topLevelFunctionDeclaration)
+        ensureIdentifierPotentiallyRecovered(int, topLevelFunctionDeclaration, false)
           listener: handleIdentifier(get, topLevelFunctionDeclaration)
         parseMethodTypeVar(get)
           listener: handleNoTypeVariables(()
@@ -1308,12 +1308,12 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl(})
       listener: beginTopLevelMember(int)
-      parseTopLevelMethod(}, null, }, Instance of 'SimpleType', null, implements)
+      parseTopLevelMethod(}, null, }, Instance of 'SimpleType', null, implements, false)
         listener: beginTopLevelMethod(}, null)
         listener: handleIdentifier(int, typeReference)
         listener: handleNoTypeArguments(implements)
         listener: handleType(int, null)
-        ensureIdentifier(int, topLevelFunctionDeclaration)
+        ensureIdentifierPotentiallyRecovered(int, topLevelFunctionDeclaration, false)
           listener: handleIdentifier(implements, topLevelFunctionDeclaration)
         parseMethodTypeVar(implements)
           listener: handleNoTypeVariables(()
@@ -1438,12 +1438,12 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl(})
       listener: beginTopLevelMember(int)
-      parseTopLevelMethod(}, null, }, Instance of 'SimpleType', null, import)
+      parseTopLevelMethod(}, null, }, Instance of 'SimpleType', null, import, false)
         listener: beginTopLevelMethod(}, null)
         listener: handleIdentifier(int, typeReference)
         listener: handleNoTypeArguments(import)
         listener: handleType(int, null)
-        ensureIdentifier(int, topLevelFunctionDeclaration)
+        ensureIdentifierPotentiallyRecovered(int, topLevelFunctionDeclaration, false)
           listener: handleIdentifier(import, topLevelFunctionDeclaration)
         parseMethodTypeVar(import)
           listener: handleNoTypeVariables(()
@@ -1568,12 +1568,12 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl(})
       listener: beginTopLevelMember(int)
-      parseTopLevelMethod(}, null, }, Instance of 'SimpleType', null, interface)
+      parseTopLevelMethod(}, null, }, Instance of 'SimpleType', null, interface, false)
         listener: beginTopLevelMethod(}, null)
         listener: handleIdentifier(int, typeReference)
         listener: handleNoTypeArguments(interface)
         listener: handleType(int, null)
-        ensureIdentifier(int, topLevelFunctionDeclaration)
+        ensureIdentifierPotentiallyRecovered(int, topLevelFunctionDeclaration, false)
           listener: handleIdentifier(interface, topLevelFunctionDeclaration)
         parseMethodTypeVar(interface)
           listener: handleNoTypeVariables(()
@@ -1698,12 +1698,12 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl(})
       listener: beginTopLevelMember(int)
-      parseTopLevelMethod(}, null, }, Instance of 'SimpleType', null, library)
+      parseTopLevelMethod(}, null, }, Instance of 'SimpleType', null, library, false)
         listener: beginTopLevelMethod(}, null)
         listener: handleIdentifier(int, typeReference)
         listener: handleNoTypeArguments(library)
         listener: handleType(int, null)
-        ensureIdentifier(int, topLevelFunctionDeclaration)
+        ensureIdentifierPotentiallyRecovered(int, topLevelFunctionDeclaration, false)
           listener: handleIdentifier(library, topLevelFunctionDeclaration)
         parseMethodTypeVar(library)
           listener: handleNoTypeVariables(()
@@ -1828,12 +1828,12 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl(})
       listener: beginTopLevelMember(int)
-      parseTopLevelMethod(}, null, }, Instance of 'SimpleType', null, operator)
+      parseTopLevelMethod(}, null, }, Instance of 'SimpleType', null, operator, false)
         listener: beginTopLevelMethod(}, null)
         listener: handleIdentifier(int, typeReference)
         listener: handleNoTypeArguments(operator)
         listener: handleType(int, null)
-        ensureIdentifier(int, topLevelFunctionDeclaration)
+        ensureIdentifierPotentiallyRecovered(int, topLevelFunctionDeclaration, false)
           listener: handleIdentifier(operator, topLevelFunctionDeclaration)
         parseMethodTypeVar(operator)
           listener: handleNoTypeVariables(()
@@ -1958,12 +1958,12 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl(})
       listener: beginTopLevelMember(int)
-      parseTopLevelMethod(}, null, }, Instance of 'SimpleType', null, mixin)
+      parseTopLevelMethod(}, null, }, Instance of 'SimpleType', null, mixin, false)
         listener: beginTopLevelMethod(}, null)
         listener: handleIdentifier(int, typeReference)
         listener: handleNoTypeArguments(mixin)
         listener: handleType(int, null)
-        ensureIdentifier(int, topLevelFunctionDeclaration)
+        ensureIdentifierPotentiallyRecovered(int, topLevelFunctionDeclaration, false)
           listener: handleIdentifier(mixin, topLevelFunctionDeclaration)
         parseMethodTypeVar(mixin)
           listener: handleNoTypeVariables(()
@@ -2088,12 +2088,12 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl(})
       listener: beginTopLevelMember(int)
-      parseTopLevelMethod(}, null, }, Instance of 'SimpleType', null, part)
+      parseTopLevelMethod(}, null, }, Instance of 'SimpleType', null, part, false)
         listener: beginTopLevelMethod(}, null)
         listener: handleIdentifier(int, typeReference)
         listener: handleNoTypeArguments(part)
         listener: handleType(int, null)
-        ensureIdentifier(int, topLevelFunctionDeclaration)
+        ensureIdentifierPotentiallyRecovered(int, topLevelFunctionDeclaration, false)
           listener: handleIdentifier(part, topLevelFunctionDeclaration)
         parseMethodTypeVar(part)
           listener: handleNoTypeVariables(()
@@ -2218,12 +2218,12 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl(})
       listener: beginTopLevelMember(int)
-      parseTopLevelMethod(}, null, }, Instance of 'SimpleType', null, set)
+      parseTopLevelMethod(}, null, }, Instance of 'SimpleType', null, set, false)
         listener: beginTopLevelMethod(}, null)
         listener: handleIdentifier(int, typeReference)
         listener: handleNoTypeArguments(set)
         listener: handleType(int, null)
-        ensureIdentifier(int, topLevelFunctionDeclaration)
+        ensureIdentifierPotentiallyRecovered(int, topLevelFunctionDeclaration, false)
           listener: handleIdentifier(set, topLevelFunctionDeclaration)
         parseMethodTypeVar(set)
           listener: handleNoTypeVariables(()
@@ -2348,12 +2348,12 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl(})
       listener: beginTopLevelMember(int)
-      parseTopLevelMethod(}, null, }, Instance of 'SimpleType', null, static)
+      parseTopLevelMethod(}, null, }, Instance of 'SimpleType', null, static, false)
         listener: beginTopLevelMethod(}, null)
         listener: handleIdentifier(int, typeReference)
         listener: handleNoTypeArguments(static)
         listener: handleType(int, null)
-        ensureIdentifier(int, topLevelFunctionDeclaration)
+        ensureIdentifierPotentiallyRecovered(int, topLevelFunctionDeclaration, false)
           listener: handleIdentifier(static, topLevelFunctionDeclaration)
         parseMethodTypeVar(static)
           listener: handleNoTypeVariables(()
@@ -2478,12 +2478,12 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl(})
       listener: beginTopLevelMember(int)
-      parseTopLevelMethod(}, null, }, Instance of 'SimpleType', null, typedef)
+      parseTopLevelMethod(}, null, }, Instance of 'SimpleType', null, typedef, false)
         listener: beginTopLevelMethod(}, null)
         listener: handleIdentifier(int, typeReference)
         listener: handleNoTypeArguments(typedef)
         listener: handleType(int, null)
-        ensureIdentifier(int, topLevelFunctionDeclaration)
+        ensureIdentifierPotentiallyRecovered(int, topLevelFunctionDeclaration, false)
           listener: handleIdentifier(typedef, topLevelFunctionDeclaration)
         parseMethodTypeVar(typedef)
           listener: handleNoTypeVariables(()
diff --git a/pkg/front_end/parser_testcases/general/chained_call_01.dart.intertwined.expect b/pkg/front_end/parser_testcases/general/chained_call_01.dart.intertwined.expect
index 2575cc0..a4ee164 100644
--- a/pkg/front_end/parser_testcases/general/chained_call_01.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/general/chained_call_01.dart.intertwined.expect
@@ -8,10 +8,10 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl()
       listener: beginTopLevelMember(void)
-      parseTopLevelMethod(, null, , Instance of 'VoidType', null, f)
+      parseTopLevelMethod(, null, , Instance of 'VoidType', null, f, false)
         listener: beginTopLevelMethod(, null)
         listener: handleVoidKeyword(void)
-        ensureIdentifier(void, topLevelFunctionDeclaration)
+        ensureIdentifierPotentiallyRecovered(void, topLevelFunctionDeclaration, false)
           listener: handleIdentifier(f, topLevelFunctionDeclaration)
         parseMethodTypeVar(f)
           listener: handleNoTypeVariables(()
diff --git a/pkg/front_end/parser_testcases/general/chained_call_02.dart.intertwined.expect b/pkg/front_end/parser_testcases/general/chained_call_02.dart.intertwined.expect
index fb2547b..fe45ef1 100644
--- a/pkg/front_end/parser_testcases/general/chained_call_02.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/general/chained_call_02.dart.intertwined.expect
@@ -8,10 +8,10 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl()
       listener: beginTopLevelMember(void)
-      parseTopLevelMethod(, null, , Instance of 'VoidType', null, f)
+      parseTopLevelMethod(, null, , Instance of 'VoidType', null, f, false)
         listener: beginTopLevelMethod(, null)
         listener: handleVoidKeyword(void)
-        ensureIdentifier(void, topLevelFunctionDeclaration)
+        ensureIdentifierPotentiallyRecovered(void, topLevelFunctionDeclaration, false)
           listener: handleIdentifier(f, topLevelFunctionDeclaration)
         parseMethodTypeVar(f)
           listener: handleNoTypeVariables(()
diff --git a/pkg/front_end/parser_testcases/general/chained_call_03.dart.intertwined.expect b/pkg/front_end/parser_testcases/general/chained_call_03.dart.intertwined.expect
index 6dc755f..09fc946 100644
--- a/pkg/front_end/parser_testcases/general/chained_call_03.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/general/chained_call_03.dart.intertwined.expect
@@ -8,10 +8,10 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl()
       listener: beginTopLevelMember(void)
-      parseTopLevelMethod(, null, , Instance of 'VoidType', null, f)
+      parseTopLevelMethod(, null, , Instance of 'VoidType', null, f, false)
         listener: beginTopLevelMethod(, null)
         listener: handleVoidKeyword(void)
-        ensureIdentifier(void, topLevelFunctionDeclaration)
+        ensureIdentifierPotentiallyRecovered(void, topLevelFunctionDeclaration, false)
           listener: handleIdentifier(f, topLevelFunctionDeclaration)
         parseMethodTypeVar(f)
           listener: handleNoTypeVariables(()
diff --git a/pkg/front_end/parser_testcases/general/chained_call_04.dart.intertwined.expect b/pkg/front_end/parser_testcases/general/chained_call_04.dart.intertwined.expect
index 4ba48bd..468279f 100644
--- a/pkg/front_end/parser_testcases/general/chained_call_04.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/general/chained_call_04.dart.intertwined.expect
@@ -8,10 +8,10 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl()
       listener: beginTopLevelMember(void)
-      parseTopLevelMethod(, null, , Instance of 'VoidType', null, f)
+      parseTopLevelMethod(, null, , Instance of 'VoidType', null, f, false)
         listener: beginTopLevelMethod(, null)
         listener: handleVoidKeyword(void)
-        ensureIdentifier(void, topLevelFunctionDeclaration)
+        ensureIdentifierPotentiallyRecovered(void, topLevelFunctionDeclaration, false)
           listener: handleIdentifier(f, topLevelFunctionDeclaration)
         parseMethodTypeVar(f)
           listener: handleNoTypeVariables(()
diff --git a/pkg/front_end/parser_testcases/general/chained_call_05.dart.intertwined.expect b/pkg/front_end/parser_testcases/general/chained_call_05.dart.intertwined.expect
index 9d64579..715990d 100644
--- a/pkg/front_end/parser_testcases/general/chained_call_05.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/general/chained_call_05.dart.intertwined.expect
@@ -8,10 +8,10 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl()
       listener: beginTopLevelMember(void)
-      parseTopLevelMethod(, null, , Instance of 'VoidType', null, f)
+      parseTopLevelMethod(, null, , Instance of 'VoidType', null, f, false)
         listener: beginTopLevelMethod(, null)
         listener: handleVoidKeyword(void)
-        ensureIdentifier(void, topLevelFunctionDeclaration)
+        ensureIdentifierPotentiallyRecovered(void, topLevelFunctionDeclaration, false)
           listener: handleIdentifier(f, topLevelFunctionDeclaration)
         parseMethodTypeVar(f)
           listener: handleNoTypeVariables(()
diff --git a/pkg/front_end/parser_testcases/general/chained_call_06.dart.intertwined.expect b/pkg/front_end/parser_testcases/general/chained_call_06.dart.intertwined.expect
index 5766645..781d73c 100644
--- a/pkg/front_end/parser_testcases/general/chained_call_06.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/general/chained_call_06.dart.intertwined.expect
@@ -8,10 +8,10 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl()
       listener: beginTopLevelMember(void)
-      parseTopLevelMethod(, null, , Instance of 'VoidType', null, f)
+      parseTopLevelMethod(, null, , Instance of 'VoidType', null, f, false)
         listener: beginTopLevelMethod(, null)
         listener: handleVoidKeyword(void)
-        ensureIdentifier(void, topLevelFunctionDeclaration)
+        ensureIdentifierPotentiallyRecovered(void, topLevelFunctionDeclaration, false)
           listener: handleIdentifier(f, topLevelFunctionDeclaration)
         parseMethodTypeVar(f)
           listener: handleNoTypeVariables(()
diff --git a/pkg/front_end/parser_testcases/general/chained_call_07.dart.intertwined.expect b/pkg/front_end/parser_testcases/general/chained_call_07.dart.intertwined.expect
index 2bfbb09..9480d6c 100644
--- a/pkg/front_end/parser_testcases/general/chained_call_07.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/general/chained_call_07.dart.intertwined.expect
@@ -8,10 +8,10 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl()
       listener: beginTopLevelMember(void)
-      parseTopLevelMethod(, null, , Instance of 'VoidType', null, f)
+      parseTopLevelMethod(, null, , Instance of 'VoidType', null, f, false)
         listener: beginTopLevelMethod(, null)
         listener: handleVoidKeyword(void)
-        ensureIdentifier(void, topLevelFunctionDeclaration)
+        ensureIdentifierPotentiallyRecovered(void, topLevelFunctionDeclaration, false)
           listener: handleIdentifier(f, topLevelFunctionDeclaration)
         parseMethodTypeVar(f)
           listener: handleNoTypeVariables(()
diff --git a/pkg/front_end/parser_testcases/general/for.dart.intertwined.expect b/pkg/front_end/parser_testcases/general/for.dart.intertwined.expect
index 871903b..7a57adc 100644
--- a/pkg/front_end/parser_testcases/general/for.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/general/for.dart.intertwined.expect
@@ -8,10 +8,11 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl()
       listener: beginTopLevelMember(main)
-      parseTopLevelMethod(, null, , Instance of 'NoType', null, main)
+      isReservedKeyword(()
+      parseTopLevelMethod(, null, , Instance of 'NoType', null, main, false)
         listener: beginTopLevelMethod(, null)
         listener: handleNoType()
-        ensureIdentifier(, topLevelFunctionDeclaration)
+        ensureIdentifierPotentiallyRecovered(, topLevelFunctionDeclaration, false)
           listener: handleIdentifier(main, topLevelFunctionDeclaration)
         parseMethodTypeVar(main)
           listener: handleNoTypeVariables(()
diff --git a/pkg/front_end/parser_testcases/general/for_in.dart.intertwined.expect b/pkg/front_end/parser_testcases/general/for_in.dart.intertwined.expect
index 429e01e..d06605e 100644
--- a/pkg/front_end/parser_testcases/general/for_in.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/general/for_in.dart.intertwined.expect
@@ -8,10 +8,11 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl()
       listener: beginTopLevelMember(main)
-      parseTopLevelMethod(, null, , Instance of 'NoType', null, main)
+      isReservedKeyword(()
+      parseTopLevelMethod(, null, , Instance of 'NoType', null, main, false)
         listener: beginTopLevelMethod(, null)
         listener: handleNoType()
-        ensureIdentifier(, topLevelFunctionDeclaration)
+        ensureIdentifierPotentiallyRecovered(, topLevelFunctionDeclaration, false)
           listener: handleIdentifier(main, topLevelFunctionDeclaration)
         parseMethodTypeVar(main)
           listener: handleNoTypeVariables(()
diff --git a/pkg/front_end/parser_testcases/general/for_in_no_decl.dart.intertwined.expect b/pkg/front_end/parser_testcases/general/for_in_no_decl.dart.intertwined.expect
index 04c39fb..14660b8 100644
--- a/pkg/front_end/parser_testcases/general/for_in_no_decl.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/general/for_in_no_decl.dart.intertwined.expect
@@ -8,10 +8,11 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl()
       listener: beginTopLevelMember(main)
-      parseTopLevelMethod(, null, , Instance of 'NoType', null, main)
+      isReservedKeyword(()
+      parseTopLevelMethod(, null, , Instance of 'NoType', null, main, false)
         listener: beginTopLevelMethod(, null)
         listener: handleNoType()
-        ensureIdentifier(, topLevelFunctionDeclaration)
+        ensureIdentifierPotentiallyRecovered(, topLevelFunctionDeclaration, false)
           listener: handleIdentifier(main, topLevelFunctionDeclaration)
         parseMethodTypeVar(main)
           listener: handleNoTypeVariables(()
diff --git a/pkg/front_end/parser_testcases/general/for_no_decl.dart.intertwined.expect b/pkg/front_end/parser_testcases/general/for_no_decl.dart.intertwined.expect
index b1cc14f..710c4157 100644
--- a/pkg/front_end/parser_testcases/general/for_no_decl.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/general/for_no_decl.dart.intertwined.expect
@@ -8,10 +8,11 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl()
       listener: beginTopLevelMember(main)
-      parseTopLevelMethod(, null, , Instance of 'NoType', null, main)
+      isReservedKeyword(()
+      parseTopLevelMethod(, null, , Instance of 'NoType', null, main, false)
         listener: beginTopLevelMethod(, null)
         listener: handleNoType()
-        ensureIdentifier(, topLevelFunctionDeclaration)
+        ensureIdentifierPotentiallyRecovered(, topLevelFunctionDeclaration, false)
           listener: handleIdentifier(main, topLevelFunctionDeclaration)
         parseMethodTypeVar(main)
           listener: handleNoTypeVariables(()
diff --git a/pkg/front_end/parser_testcases/general/function_declaration.dart.intertwined.expect b/pkg/front_end/parser_testcases/general/function_declaration.dart.intertwined.expect
index 83e3df0..6b65195 100644
--- a/pkg/front_end/parser_testcases/general/function_declaration.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/general/function_declaration.dart.intertwined.expect
@@ -8,10 +8,11 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl()
       listener: beginTopLevelMember(main)
-      parseTopLevelMethod(, null, , Instance of 'NoType', null, main)
+      isReservedKeyword(()
+      parseTopLevelMethod(, null, , Instance of 'NoType', null, main, false)
         listener: beginTopLevelMethod(, null)
         listener: handleNoType()
-        ensureIdentifier(, topLevelFunctionDeclaration)
+        ensureIdentifierPotentiallyRecovered(, topLevelFunctionDeclaration, false)
           listener: handleIdentifier(main, topLevelFunctionDeclaration)
         parseMethodTypeVar(main)
           listener: handleNoTypeVariables(()
diff --git a/pkg/front_end/parser_testcases/general/function_expression.dart.intertwined.expect b/pkg/front_end/parser_testcases/general/function_expression.dart.intertwined.expect
index 57d0bf4..45036c8 100644
--- a/pkg/front_end/parser_testcases/general/function_expression.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/general/function_expression.dart.intertwined.expect
@@ -8,10 +8,11 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl()
       listener: beginTopLevelMember(main)
-      parseTopLevelMethod(, null, , Instance of 'NoType', null, main)
+      isReservedKeyword(()
+      parseTopLevelMethod(, null, , Instance of 'NoType', null, main, false)
         listener: beginTopLevelMethod(, null)
         listener: handleNoType()
-        ensureIdentifier(, topLevelFunctionDeclaration)
+        ensureIdentifierPotentiallyRecovered(, topLevelFunctionDeclaration, false)
           listener: handleIdentifier(main, topLevelFunctionDeclaration)
         parseMethodTypeVar(main)
           listener: handleNoTypeVariables(()
diff --git a/pkg/front_end/parser_testcases/general/issue_41121.dart.intertwined.expect b/pkg/front_end/parser_testcases/general/issue_41121.dart.intertwined.expect
index 896f82c..af39092 100644
--- a/pkg/front_end/parser_testcases/general/issue_41121.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/general/issue_41121.dart.intertwined.expect
@@ -32,11 +32,11 @@
                 listener: beginMetadataStar(Configuration)
                 listener: endMetadataStar(0)
               listener: beginMember()
-              parseFields({, null, null, null, null, null, {, Instance of 'SimpleType', _configuration, DeclarationKind.Class, ConfigurationService)
+              parseFields({, null, null, null, null, null, {, Instance of 'SimpleType', _configuration, DeclarationKind.Class, ConfigurationService, false)
                 listener: handleIdentifier(Configuration, typeReference)
                 listener: handleNoTypeArguments(_configuration)
                 listener: handleType(Configuration, null)
-                ensureIdentifier(Configuration, fieldDeclaration)
+                ensureIdentifierPotentiallyRecovered(Configuration, fieldDeclaration, false)
                   listener: handleIdentifier(_configuration, fieldDeclaration)
                 parseFieldInitializerOpt(_configuration, _configuration, null, null, DeclarationKind.Class, ConfigurationService)
                   listener: handleNoFieldInitializer(;)
@@ -48,10 +48,11 @@
                 listener: beginMetadataStar(ConfigurationService)
                 listener: endMetadataStar(0)
               listener: beginMember()
-              parseMethod(;, null, null, null, null, null, ;, Instance of 'NoType', null, ConfigurationService, DeclarationKind.Class, ConfigurationService)
+              isReservedKeyword(()
+              parseMethod(;, null, null, null, null, null, ;, Instance of 'NoType', null, ConfigurationService, DeclarationKind.Class, ConfigurationService, false)
                 listener: beginMethod(null, null, null, null, null, ConfigurationService)
                 listener: handleNoType(;)
-                ensureIdentifier(;, methodDeclaration)
+                ensureIdentifierPotentiallyRecovered(;, methodDeclaration, false)
                   listener: handleIdentifier(ConfigurationService, methodDeclaration)
                 parseQualifiedRestOpt(ConfigurationService, methodDeclarationContinuation)
                 parseMethodTypeVar(ConfigurationService)
@@ -146,10 +147,10 @@
                 listener: beginMetadataStar(void)
                 listener: endMetadataStar(0)
               listener: beginMember()
-              parseMethod(}, null, null, null, null, null, }, Instance of 'VoidType', set, configuration, DeclarationKind.Class, ConfigurationService)
+              parseMethod(}, null, null, null, null, null, }, Instance of 'VoidType', set, configuration, DeclarationKind.Class, ConfigurationService, false)
                 listener: beginMethod(null, null, null, null, set, configuration)
                 listener: handleVoidKeyword(void)
-                ensureIdentifier(set, methodDeclaration)
+                ensureIdentifierPotentiallyRecovered(set, methodDeclaration, false)
                   listener: handleIdentifier(configuration, methodDeclaration)
                 parseQualifiedRestOpt(configuration, methodDeclarationContinuation)
                 listener: handleNoTypeVariables(()
@@ -250,12 +251,12 @@
                 listener: beginMetadataStar(Configuration)
                 listener: endMetadataStar(0)
               listener: beginMember()
-              parseMethod(}, null, null, null, null, null, }, Instance of 'SimpleType', get, configuration, DeclarationKind.Class, ConfigurationService)
+              parseMethod(}, null, null, null, null, null, }, Instance of 'SimpleType', get, configuration, DeclarationKind.Class, ConfigurationService, false)
                 listener: beginMethod(null, null, null, null, get, configuration)
                 listener: handleIdentifier(Configuration, typeReference)
                 listener: handleNoTypeArguments(get)
                 listener: handleType(Configuration, null)
-                ensureIdentifier(get, methodDeclaration)
+                ensureIdentifierPotentiallyRecovered(get, methodDeclaration, false)
                   listener: handleIdentifier(configuration, methodDeclaration)
                 parseQualifiedRestOpt(configuration, methodDeclarationContinuation)
                 listener: handleNoTypeVariables(:)
@@ -377,10 +378,10 @@
                 listener: beginMetadataStar(void)
                 listener: endMetadataStar(0)
               listener: beginMember()
-              parseMethod(}, null, null, null, null, null, }, Instance of 'VoidType', null, method, DeclarationKind.Class, ConfigurationService)
+              parseMethod(}, null, null, null, null, null, }, Instance of 'VoidType', null, method, DeclarationKind.Class, ConfigurationService, false)
                 listener: beginMethod(null, null, null, null, null, method)
                 listener: handleVoidKeyword(void)
-                ensureIdentifier(void, methodDeclaration)
+                ensureIdentifierPotentiallyRecovered(void, methodDeclaration, false)
                   listener: handleIdentifier(method, methodDeclaration)
                 parseQualifiedRestOpt(method, methodDeclarationContinuation)
                 parseMethodTypeVar(method)
@@ -436,10 +437,11 @@
                 listener: beginMetadataStar(Foo)
                 listener: endMetadataStar(0)
               listener: beginMember()
-              parseMethod(}, null, null, null, null, null, }, Instance of 'NoType', null, Foo, DeclarationKind.Class, ConfigurationService)
+              isReservedKeyword(()
+              parseMethod(}, null, null, null, null, null, }, Instance of 'NoType', null, Foo, DeclarationKind.Class, ConfigurationService, false)
                 listener: beginMethod(null, null, null, null, null, Foo)
                 listener: handleNoType(})
-                ensureIdentifier(}, methodDeclaration)
+                ensureIdentifierPotentiallyRecovered(}, methodDeclaration, false)
                   listener: handleIdentifier(Foo, methodDeclaration)
                 parseQualifiedRestOpt(Foo, methodDeclarationContinuation)
                 parseMethodTypeVar(Foo)
@@ -521,12 +523,12 @@
                 listener: beginMetadataStar(Configuration)
                 listener: endMetadataStar(0)
               listener: beginMember()
-              parseMethod({, null, null, null, null, null, {, Instance of 'SimpleType', get, foo, DeclarationKind.Class, Configuration)
+              parseMethod({, null, null, null, null, null, {, Instance of 'SimpleType', get, foo, DeclarationKind.Class, Configuration, false)
                 listener: beginMethod(null, null, null, null, get, foo)
                 listener: handleIdentifier(Configuration, typeReference)
                 listener: handleNoTypeArguments(get)
                 listener: handleType(Configuration, null)
-                ensureIdentifier(get, methodDeclaration)
+                ensureIdentifierPotentiallyRecovered(get, methodDeclaration, false)
                   listener: handleIdentifier(foo, methodDeclaration)
                 parseQualifiedRestOpt(foo, methodDeclarationContinuation)
                 listener: handleNoTypeVariables(=>)
diff --git a/pkg/front_end/parser_testcases/general/missing_end_bracket.dart.expect b/pkg/front_end/parser_testcases/general/missing_end_bracket.dart.expect
index 076e320..4f4ca4b 100644
--- a/pkg/front_end/parser_testcases/general/missing_end_bracket.dart.expect
+++ b/pkg/front_end/parser_testcases/general/missing_end_bracket.dart.expect
@@ -1,3 +1,9 @@
+Problems reported:
+
+parser/general/missing_end_bracket:1:8: Can't find '}' to match '{'.
+main() {
+       ^
+
 beginCompilationUnit(main)
   beginMetadataStar(main)
   endMetadataStar(0)
@@ -22,4 +28,5 @@
     endTopLevelMethod(main, null, })
   endTopLevelDeclaration()
   handleErrorToken(UnmatchedToken({))
+  handleRecoverableError(Message[UnmatchedToken, Can't find '}' to match '{'., null, {string: }, token: {}], UnmatchedToken({), UnmatchedToken({))
 endCompilationUnit(1, )
diff --git a/pkg/front_end/parser_testcases/general/missing_end_bracket.dart.intertwined.expect b/pkg/front_end/parser_testcases/general/missing_end_bracket.dart.intertwined.expect
index 6d5f4a8..7a76420 100644
--- a/pkg/front_end/parser_testcases/general/missing_end_bracket.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/general/missing_end_bracket.dart.intertwined.expect
@@ -8,10 +8,11 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl(UnmatchedToken({))
       listener: beginTopLevelMember(main)
-      parseTopLevelMethod(UnmatchedToken({), null, UnmatchedToken({), Instance of 'NoType', null, main)
+      isReservedKeyword(()
+      parseTopLevelMethod(UnmatchedToken({), null, UnmatchedToken({), Instance of 'NoType', null, main, false)
         listener: beginTopLevelMethod(UnmatchedToken({), null)
         listener: handleNoType(UnmatchedToken({))
-        ensureIdentifier(UnmatchedToken({), topLevelFunctionDeclaration)
+        ensureIdentifierPotentiallyRecovered(UnmatchedToken({), topLevelFunctionDeclaration, false)
           listener: handleIdentifier(main, topLevelFunctionDeclaration)
         parseMethodTypeVar(main)
           listener: handleNoTypeVariables(()
@@ -63,4 +64,5 @@
   listener: endTopLevelDeclaration()
   reportAllErrorTokens(UnmatchedToken({))
     listener: handleErrorToken(UnmatchedToken({))
+    listener: handleRecoverableError(Message[UnmatchedToken, Can't find '}' to match '{'., null, {string: }, token: {}], UnmatchedToken({), UnmatchedToken({))
   listener: endCompilationUnit(1, )
diff --git a/pkg/front_end/parser_testcases/general/operator_hat_class.crash_dart.intertwined.expect b/pkg/front_end/parser_testcases/general/operator_hat_class.crash_dart.intertwined.expect
index 51dc180..0f64958 100644
--- a/pkg/front_end/parser_testcases/general/operator_hat_class.crash_dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/general/operator_hat_class.crash_dart.intertwined.expect
@@ -34,7 +34,7 @@
                 listener: beginMetadataStar(operator)
                 listener: endMetadataStar(0)
               listener: beginMember()
-              parseMethod({, null, null, null, null, null, {, Instance of 'NoType', null, operator, DeclarationKind.Class, operator)
+              parseMethod({, null, null, null, null, null, {, Instance of 'NoType', null, operator, DeclarationKind.Class, operator, false)
                 listener: beginMethod(null, null, null, null, null, operator)
                 listener: handleNoType({)
                 parseOperatorName({)
diff --git a/pkg/front_end/parser_testcases/general/try_catch.dart.intertwined.expect b/pkg/front_end/parser_testcases/general/try_catch.dart.intertwined.expect
index 3c5e427..10d5b1e 100644
--- a/pkg/front_end/parser_testcases/general/try_catch.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/general/try_catch.dart.intertwined.expect
@@ -8,10 +8,11 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl()
       listener: beginTopLevelMember(main)
-      parseTopLevelMethod(, null, , Instance of 'NoType', null, main)
+      isReservedKeyword(()
+      parseTopLevelMethod(, null, , Instance of 'NoType', null, main, false)
         listener: beginTopLevelMethod(, null)
         listener: handleNoType()
-        ensureIdentifier(, topLevelFunctionDeclaration)
+        ensureIdentifierPotentiallyRecovered(, topLevelFunctionDeclaration, false)
           listener: handleIdentifier(main, topLevelFunctionDeclaration)
         parseMethodTypeVar(main)
           listener: handleNoTypeVariables(()
diff --git a/pkg/front_end/parser_testcases/general/try_finally.dart.intertwined.expect b/pkg/front_end/parser_testcases/general/try_finally.dart.intertwined.expect
index be97a74..4e09409 100644
--- a/pkg/front_end/parser_testcases/general/try_finally.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/general/try_finally.dart.intertwined.expect
@@ -8,10 +8,11 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl()
       listener: beginTopLevelMember(main)
-      parseTopLevelMethod(, null, , Instance of 'NoType', null, main)
+      isReservedKeyword(()
+      parseTopLevelMethod(, null, , Instance of 'NoType', null, main, false)
         listener: beginTopLevelMethod(, null)
         listener: handleNoType()
-        ensureIdentifier(, topLevelFunctionDeclaration)
+        ensureIdentifierPotentiallyRecovered(, topLevelFunctionDeclaration, false)
           listener: handleIdentifier(main, topLevelFunctionDeclaration)
         parseMethodTypeVar(main)
           listener: handleNoTypeVariables(()
diff --git a/pkg/front_end/parser_testcases/nnbd/chained_call_01.dart.intertwined.expect b/pkg/front_end/parser_testcases/nnbd/chained_call_01.dart.intertwined.expect
index 2b51d84..1de74c1 100644
--- a/pkg/front_end/parser_testcases/nnbd/chained_call_01.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/nnbd/chained_call_01.dart.intertwined.expect
@@ -8,10 +8,10 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl()
       listener: beginTopLevelMember(void)
-      parseTopLevelMethod(, null, , Instance of 'VoidType', null, f)
+      parseTopLevelMethod(, null, , Instance of 'VoidType', null, f, false)
         listener: beginTopLevelMethod(, null)
         listener: handleVoidKeyword(void)
-        ensureIdentifier(void, topLevelFunctionDeclaration)
+        ensureIdentifierPotentiallyRecovered(void, topLevelFunctionDeclaration, false)
           listener: handleIdentifier(f, topLevelFunctionDeclaration)
         parseMethodTypeVar(f)
           listener: handleNoTypeVariables(()
diff --git a/pkg/front_end/parser_testcases/nnbd/chained_call_02.dart.intertwined.expect b/pkg/front_end/parser_testcases/nnbd/chained_call_02.dart.intertwined.expect
index c5d015e..555cd90 100644
--- a/pkg/front_end/parser_testcases/nnbd/chained_call_02.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/nnbd/chained_call_02.dart.intertwined.expect
@@ -8,10 +8,10 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl()
       listener: beginTopLevelMember(void)
-      parseTopLevelMethod(, null, , Instance of 'VoidType', null, f)
+      parseTopLevelMethod(, null, , Instance of 'VoidType', null, f, false)
         listener: beginTopLevelMethod(, null)
         listener: handleVoidKeyword(void)
-        ensureIdentifier(void, topLevelFunctionDeclaration)
+        ensureIdentifierPotentiallyRecovered(void, topLevelFunctionDeclaration, false)
           listener: handleIdentifier(f, topLevelFunctionDeclaration)
         parseMethodTypeVar(f)
           listener: handleNoTypeVariables(()
diff --git a/pkg/front_end/parser_testcases/nnbd/chained_call_03.dart.intertwined.expect b/pkg/front_end/parser_testcases/nnbd/chained_call_03.dart.intertwined.expect
index 53a44ab..0da40dd 100644
--- a/pkg/front_end/parser_testcases/nnbd/chained_call_03.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/nnbd/chained_call_03.dart.intertwined.expect
@@ -8,10 +8,10 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl()
       listener: beginTopLevelMember(void)
-      parseTopLevelMethod(, null, , Instance of 'VoidType', null, f)
+      parseTopLevelMethod(, null, , Instance of 'VoidType', null, f, false)
         listener: beginTopLevelMethod(, null)
         listener: handleVoidKeyword(void)
-        ensureIdentifier(void, topLevelFunctionDeclaration)
+        ensureIdentifierPotentiallyRecovered(void, topLevelFunctionDeclaration, false)
           listener: handleIdentifier(f, topLevelFunctionDeclaration)
         parseMethodTypeVar(f)
           listener: handleNoTypeVariables(()
diff --git a/pkg/front_end/parser_testcases/nnbd/chained_call_04.dart.intertwined.expect b/pkg/front_end/parser_testcases/nnbd/chained_call_04.dart.intertwined.expect
index 988fc8b..d7698cf 100644
--- a/pkg/front_end/parser_testcases/nnbd/chained_call_04.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/nnbd/chained_call_04.dart.intertwined.expect
@@ -8,10 +8,10 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl()
       listener: beginTopLevelMember(void)
-      parseTopLevelMethod(, null, , Instance of 'VoidType', null, f)
+      parseTopLevelMethod(, null, , Instance of 'VoidType', null, f, false)
         listener: beginTopLevelMethod(, null)
         listener: handleVoidKeyword(void)
-        ensureIdentifier(void, topLevelFunctionDeclaration)
+        ensureIdentifierPotentiallyRecovered(void, topLevelFunctionDeclaration, false)
           listener: handleIdentifier(f, topLevelFunctionDeclaration)
         parseMethodTypeVar(f)
           listener: handleNoTypeVariables(()
diff --git a/pkg/front_end/parser_testcases/nnbd/chained_call_05.dart.intertwined.expect b/pkg/front_end/parser_testcases/nnbd/chained_call_05.dart.intertwined.expect
index 04fb888..338a2bf 100644
--- a/pkg/front_end/parser_testcases/nnbd/chained_call_05.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/nnbd/chained_call_05.dart.intertwined.expect
@@ -8,10 +8,10 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl()
       listener: beginTopLevelMember(void)
-      parseTopLevelMethod(, null, , Instance of 'VoidType', null, f)
+      parseTopLevelMethod(, null, , Instance of 'VoidType', null, f, false)
         listener: beginTopLevelMethod(, null)
         listener: handleVoidKeyword(void)
-        ensureIdentifier(void, topLevelFunctionDeclaration)
+        ensureIdentifierPotentiallyRecovered(void, topLevelFunctionDeclaration, false)
           listener: handleIdentifier(f, topLevelFunctionDeclaration)
         parseMethodTypeVar(f)
           listener: handleNoTypeVariables(()
diff --git a/pkg/front_end/parser_testcases/nnbd/chained_call_06.dart.intertwined.expect b/pkg/front_end/parser_testcases/nnbd/chained_call_06.dart.intertwined.expect
index 2917556..c9412c6 100644
--- a/pkg/front_end/parser_testcases/nnbd/chained_call_06.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/nnbd/chained_call_06.dart.intertwined.expect
@@ -8,10 +8,10 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl()
       listener: beginTopLevelMember(void)
-      parseTopLevelMethod(, null, , Instance of 'VoidType', null, f)
+      parseTopLevelMethod(, null, , Instance of 'VoidType', null, f, false)
         listener: beginTopLevelMethod(, null)
         listener: handleVoidKeyword(void)
-        ensureIdentifier(void, topLevelFunctionDeclaration)
+        ensureIdentifierPotentiallyRecovered(void, topLevelFunctionDeclaration, false)
           listener: handleIdentifier(f, topLevelFunctionDeclaration)
         parseMethodTypeVar(f)
           listener: handleNoTypeVariables(()
diff --git a/pkg/front_end/parser_testcases/nnbd/chained_call_07.dart.intertwined.expect b/pkg/front_end/parser_testcases/nnbd/chained_call_07.dart.intertwined.expect
index 89e3871..4bafcd1 100644
--- a/pkg/front_end/parser_testcases/nnbd/chained_call_07.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/nnbd/chained_call_07.dart.intertwined.expect
@@ -8,10 +8,10 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl()
       listener: beginTopLevelMember(void)
-      parseTopLevelMethod(, null, , Instance of 'VoidType', null, f)
+      parseTopLevelMethod(, null, , Instance of 'VoidType', null, f, false)
         listener: beginTopLevelMethod(, null)
         listener: handleVoidKeyword(void)
-        ensureIdentifier(void, topLevelFunctionDeclaration)
+        ensureIdentifierPotentiallyRecovered(void, topLevelFunctionDeclaration, false)
           listener: handleIdentifier(f, topLevelFunctionDeclaration)
         parseMethodTypeVar(f)
           listener: handleNoTypeVariables(()
diff --git a/pkg/front_end/parser_testcases/nnbd/chained_call_08.dart.intertwined.expect b/pkg/front_end/parser_testcases/nnbd/chained_call_08.dart.intertwined.expect
index 147680b..2824282 100644
--- a/pkg/front_end/parser_testcases/nnbd/chained_call_08.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/nnbd/chained_call_08.dart.intertwined.expect
@@ -8,10 +8,10 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl()
       listener: beginTopLevelMember(void)
-      parseTopLevelMethod(, null, , Instance of 'VoidType', null, f)
+      parseTopLevelMethod(, null, , Instance of 'VoidType', null, f, false)
         listener: beginTopLevelMethod(, null)
         listener: handleVoidKeyword(void)
-        ensureIdentifier(void, topLevelFunctionDeclaration)
+        ensureIdentifierPotentiallyRecovered(void, topLevelFunctionDeclaration, false)
           listener: handleIdentifier(f, topLevelFunctionDeclaration)
         parseMethodTypeVar(f)
           listener: handleNoTypeVariables(()
diff --git a/pkg/front_end/parser_testcases/nnbd/chained_call_with_index_01.dart.dart.intertwined.expect b/pkg/front_end/parser_testcases/nnbd/chained_call_with_index_01.dart.dart.intertwined.expect
index 595fc04..4b44ae9 100644
--- a/pkg/front_end/parser_testcases/nnbd/chained_call_with_index_01.dart.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/nnbd/chained_call_with_index_01.dart.dart.intertwined.expect
@@ -8,10 +8,10 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl()
       listener: beginTopLevelMember(void)
-      parseTopLevelMethod(, null, , Instance of 'VoidType', null, f)
+      parseTopLevelMethod(, null, , Instance of 'VoidType', null, f, false)
         listener: beginTopLevelMethod(, null)
         listener: handleVoidKeyword(void)
-        ensureIdentifier(void, topLevelFunctionDeclaration)
+        ensureIdentifierPotentiallyRecovered(void, topLevelFunctionDeclaration, false)
           listener: handleIdentifier(f, topLevelFunctionDeclaration)
         parseMethodTypeVar(f)
           listener: handleNoTypeVariables(()
diff --git a/pkg/front_end/parser_testcases/nnbd/issue_39286.dart.intertwined.expect b/pkg/front_end/parser_testcases/nnbd/issue_39286.dart.intertwined.expect
index 3e45634..e2adb1f 100644
--- a/pkg/front_end/parser_testcases/nnbd/issue_39286.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/nnbd/issue_39286.dart.intertwined.expect
@@ -8,10 +8,10 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl()
       listener: beginTopLevelMember(void)
-      parseTopLevelMethod(, null, , Instance of 'VoidType', null, test)
+      parseTopLevelMethod(, null, , Instance of 'VoidType', null, test, false)
         listener: beginTopLevelMethod(, null)
         listener: handleVoidKeyword(void)
-        ensureIdentifier(void, topLevelFunctionDeclaration)
+        ensureIdentifierPotentiallyRecovered(void, topLevelFunctionDeclaration, false)
           listener: handleIdentifier(test, topLevelFunctionDeclaration)
         parseMethodTypeVar(test)
           listener: handleNoTypeVariables(()
diff --git a/pkg/front_end/parser_testcases/nnbd/issue_39286_2.dart.intertwined.expect b/pkg/front_end/parser_testcases/nnbd/issue_39286_2.dart.intertwined.expect
index 07e13bd..565b2a5 100644
--- a/pkg/front_end/parser_testcases/nnbd/issue_39286_2.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/nnbd/issue_39286_2.dart.intertwined.expect
@@ -8,10 +8,10 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl()
       listener: beginTopLevelMember(void)
-      parseTopLevelMethod(, null, , Instance of 'VoidType', null, test)
+      parseTopLevelMethod(, null, , Instance of 'VoidType', null, test, false)
         listener: beginTopLevelMethod(, null)
         listener: handleVoidKeyword(void)
-        ensureIdentifier(void, topLevelFunctionDeclaration)
+        ensureIdentifierPotentiallyRecovered(void, topLevelFunctionDeclaration, false)
           listener: handleIdentifier(test, topLevelFunctionDeclaration)
         parseMethodTypeVar(test)
           listener: handleNoTypeVariables(()
diff --git a/pkg/front_end/parser_testcases/nnbd/issue_39286_2_prime.dart.intertwined.expect b/pkg/front_end/parser_testcases/nnbd/issue_39286_2_prime.dart.intertwined.expect
index f503982..c3c6ad7 100644
--- a/pkg/front_end/parser_testcases/nnbd/issue_39286_2_prime.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/nnbd/issue_39286_2_prime.dart.intertwined.expect
@@ -8,10 +8,10 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl()
       listener: beginTopLevelMember(void)
-      parseTopLevelMethod(, null, , Instance of 'VoidType', null, test)
+      parseTopLevelMethod(, null, , Instance of 'VoidType', null, test, false)
         listener: beginTopLevelMethod(, null)
         listener: handleVoidKeyword(void)
-        ensureIdentifier(void, topLevelFunctionDeclaration)
+        ensureIdentifierPotentiallyRecovered(void, topLevelFunctionDeclaration, false)
           listener: handleIdentifier(test, topLevelFunctionDeclaration)
         parseMethodTypeVar(test)
           listener: handleNoTypeVariables(()
diff --git a/pkg/front_end/parser_testcases/nnbd/issue_39286_prime.dart.intertwined.expect b/pkg/front_end/parser_testcases/nnbd/issue_39286_prime.dart.intertwined.expect
index 9c41b55..7b12b5f 100644
--- a/pkg/front_end/parser_testcases/nnbd/issue_39286_prime.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/nnbd/issue_39286_prime.dart.intertwined.expect
@@ -8,10 +8,10 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl()
       listener: beginTopLevelMember(void)
-      parseTopLevelMethod(, null, , Instance of 'VoidType', null, test)
+      parseTopLevelMethod(, null, , Instance of 'VoidType', null, test, false)
         listener: beginTopLevelMethod(, null)
         listener: handleVoidKeyword(void)
-        ensureIdentifier(void, topLevelFunctionDeclaration)
+        ensureIdentifierPotentiallyRecovered(void, topLevelFunctionDeclaration, false)
           listener: handleIdentifier(test, topLevelFunctionDeclaration)
         parseMethodTypeVar(test)
           listener: handleNoTypeVariables(()
diff --git a/pkg/front_end/parser_testcases/nnbd/issue_39326.dart.intertwined.expect b/pkg/front_end/parser_testcases/nnbd/issue_39326.dart.intertwined.expect
index ae449d9..7b47813 100644
--- a/pkg/front_end/parser_testcases/nnbd/issue_39326.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/nnbd/issue_39326.dart.intertwined.expect
@@ -8,10 +8,11 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl()
       listener: beginTopLevelMember(main)
-      parseTopLevelMethod(, null, , Instance of 'NoType', null, main)
+      isReservedKeyword(()
+      parseTopLevelMethod(, null, , Instance of 'NoType', null, main, false)
         listener: beginTopLevelMethod(, null)
         listener: handleNoType()
-        ensureIdentifier(, topLevelFunctionDeclaration)
+        ensureIdentifierPotentiallyRecovered(, topLevelFunctionDeclaration, false)
           listener: handleIdentifier(main, topLevelFunctionDeclaration)
         parseMethodTypeVar(main)
           listener: handleNoTypeVariables(()
diff --git a/pkg/front_end/parser_testcases/nnbd/issue_39697.dart.intertwined.expect b/pkg/front_end/parser_testcases/nnbd/issue_39697.dart.intertwined.expect
index 6193bf7..1efe9cc 100644
--- a/pkg/front_end/parser_testcases/nnbd/issue_39697.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/nnbd/issue_39697.dart.intertwined.expect
@@ -8,12 +8,12 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl()
       listener: beginTopLevelMember(Logger)
-      parseTopLevelMethod(, null, , Instance of 'SimpleType', get, log)
+      parseTopLevelMethod(, null, , Instance of 'SimpleType', get, log, false)
         listener: beginTopLevelMethod(, null)
         listener: handleIdentifier(Logger, typeReference)
         listener: handleNoTypeArguments(get)
         listener: handleType(Logger, null)
-        ensureIdentifier(get, topLevelFunctionDeclaration)
+        ensureIdentifierPotentiallyRecovered(get, topLevelFunctionDeclaration, false)
           listener: handleIdentifier(log, topLevelFunctionDeclaration)
         listener: handleNoTypeVariables(=>)
         parseGetterOrFormalParameters(log, log, true, MemberKind.TopLevelMethod)
diff --git a/pkg/front_end/parser_testcases/nnbd/issue_39697_prime.dart.intertwined.expect b/pkg/front_end/parser_testcases/nnbd/issue_39697_prime.dart.intertwined.expect
index 08ff17d..b83104f 100644
--- a/pkg/front_end/parser_testcases/nnbd/issue_39697_prime.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/nnbd/issue_39697_prime.dart.intertwined.expect
@@ -8,12 +8,12 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl()
       listener: beginTopLevelMember(Logger)
-      parseTopLevelMethod(, null, , Instance of 'SimpleType', get, log)
+      parseTopLevelMethod(, null, , Instance of 'SimpleType', get, log, false)
         listener: beginTopLevelMethod(, null)
         listener: handleIdentifier(Logger, typeReference)
         listener: handleNoTypeArguments(get)
         listener: handleType(Logger, null)
-        ensureIdentifier(get, topLevelFunctionDeclaration)
+        ensureIdentifierPotentiallyRecovered(get, topLevelFunctionDeclaration, false)
           listener: handleIdentifier(log, topLevelFunctionDeclaration)
         listener: handleNoTypeVariables(=>)
         parseGetterOrFormalParameters(log, log, true, MemberKind.TopLevelMethod)
diff --git a/pkg/front_end/parser_testcases/nnbd/issue_39723.dart.intertwined.expect b/pkg/front_end/parser_testcases/nnbd/issue_39723.dart.intertwined.expect
index a3af705..8ae8297 100644
--- a/pkg/front_end/parser_testcases/nnbd/issue_39723.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/nnbd/issue_39723.dart.intertwined.expect
@@ -32,7 +32,7 @@
                 listener: beginMetadataStar(operator)
                 listener: endMetadataStar(0)
               listener: beginMember()
-              parseMethod({, null, null, null, null, null, {, Instance of 'NoType', null, operator, DeclarationKind.Class, A)
+              parseMethod({, null, null, null, null, null, {, Instance of 'NoType', null, operator, DeclarationKind.Class, A, false)
                 listener: beginMethod(null, null, null, null, null, operator)
                 listener: handleNoType({)
                 parseOperatorName({)
@@ -91,10 +91,11 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl(})
       listener: beginTopLevelMember(main)
-      parseTopLevelMethod(}, null, }, Instance of 'NoType', null, main)
+      isReservedKeyword(()
+      parseTopLevelMethod(}, null, }, Instance of 'NoType', null, main, false)
         listener: beginTopLevelMethod(}, null)
         listener: handleNoType(})
-        ensureIdentifier(}, topLevelFunctionDeclaration)
+        ensureIdentifierPotentiallyRecovered(}, topLevelFunctionDeclaration, false)
           listener: handleIdentifier(main, topLevelFunctionDeclaration)
         parseMethodTypeVar(main)
           listener: handleNoTypeVariables(()
diff --git a/pkg/front_end/parser_testcases/nnbd/issue_39723_prime.dart.intertwined.expect b/pkg/front_end/parser_testcases/nnbd/issue_39723_prime.dart.intertwined.expect
index 44dc4af..2c43271 100644
--- a/pkg/front_end/parser_testcases/nnbd/issue_39723_prime.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/nnbd/issue_39723_prime.dart.intertwined.expect
@@ -32,7 +32,7 @@
                 listener: beginMetadataStar(operator)
                 listener: endMetadataStar(0)
               listener: beginMember()
-              parseMethod({, null, null, null, null, null, {, Instance of 'NoType', null, operator, DeclarationKind.Class, A)
+              parseMethod({, null, null, null, null, null, {, Instance of 'NoType', null, operator, DeclarationKind.Class, A, false)
                 listener: beginMethod(null, null, null, null, null, operator)
                 listener: handleNoType({)
                 parseOperatorName({)
@@ -91,10 +91,11 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl(})
       listener: beginTopLevelMember(main)
-      parseTopLevelMethod(}, null, }, Instance of 'NoType', null, main)
+      isReservedKeyword(()
+      parseTopLevelMethod(}, null, }, Instance of 'NoType', null, main, false)
         listener: beginTopLevelMethod(}, null)
         listener: handleNoType(})
-        ensureIdentifier(}, topLevelFunctionDeclaration)
+        ensureIdentifierPotentiallyRecovered(}, topLevelFunctionDeclaration, false)
           listener: handleIdentifier(main, topLevelFunctionDeclaration)
         parseMethodTypeVar(main)
           listener: handleNoTypeVariables(()
diff --git a/pkg/front_end/parser_testcases/nnbd/issue_39776.dart.intertwined.expect b/pkg/front_end/parser_testcases/nnbd/issue_39776.dart.intertwined.expect
index 798237fd..a97ee3b 100644
--- a/pkg/front_end/parser_testcases/nnbd/issue_39776.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/nnbd/issue_39776.dart.intertwined.expect
@@ -8,12 +8,12 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl()
       listener: beginTopLevelMember(Object)
-      parseTopLevelMethod(, null, , Instance of 'SimpleNullableType', null, foo)
+      parseTopLevelMethod(, null, , Instance of 'SimpleNullableType', null, foo, false)
         listener: beginTopLevelMethod(, null)
         listener: handleIdentifier(Object, typeReference)
         listener: handleNoTypeArguments(?)
         listener: handleType(Object, ?)
-        ensureIdentifier(?, topLevelFunctionDeclaration)
+        ensureIdentifierPotentiallyRecovered(?, topLevelFunctionDeclaration, false)
           listener: handleIdentifier(foo, topLevelFunctionDeclaration)
         parseMethodTypeVar(foo)
           listener: handleNoTypeVariables(()
@@ -58,12 +58,12 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(Object)
-      parseTopLevelMethod(;, null, ;, Instance of 'SimpleNullableType', null, bar)
+      parseTopLevelMethod(;, null, ;, Instance of 'SimpleNullableType', null, bar, false)
         listener: beginTopLevelMethod(;, null)
         listener: handleIdentifier(Object, typeReference)
         listener: handleNoTypeArguments(?)
         listener: handleType(Object, ?)
-        ensureIdentifier(?, topLevelFunctionDeclaration)
+        ensureIdentifierPotentiallyRecovered(?, topLevelFunctionDeclaration, false)
           listener: handleIdentifier(bar, topLevelFunctionDeclaration)
         parseMethodTypeVar(bar)
           listener: beginTypeVariables(<)
@@ -114,10 +114,11 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(main)
-      parseTopLevelMethod(;, null, ;, Instance of 'NoType', null, main)
+      isReservedKeyword(()
+      parseTopLevelMethod(;, null, ;, Instance of 'NoType', null, main, false)
         listener: beginTopLevelMethod(;, null)
         listener: handleNoType(;)
-        ensureIdentifier(;, topLevelFunctionDeclaration)
+        ensureIdentifierPotentiallyRecovered(;, topLevelFunctionDeclaration, false)
           listener: handleIdentifier(main, topLevelFunctionDeclaration)
         parseMethodTypeVar(main)
           listener: handleNoTypeVariables(()
diff --git a/pkg/front_end/parser_testcases/nnbd/issue_39776_prime1.dart.intertwined.expect b/pkg/front_end/parser_testcases/nnbd/issue_39776_prime1.dart.intertwined.expect
index bc9963f..824c818 100644
--- a/pkg/front_end/parser_testcases/nnbd/issue_39776_prime1.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/nnbd/issue_39776_prime1.dart.intertwined.expect
@@ -8,12 +8,12 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl()
       listener: beginTopLevelMember(Object)
-      parseTopLevelMethod(, null, , Instance of 'SimpleNullableType', null, foo)
+      parseTopLevelMethod(, null, , Instance of 'SimpleNullableType', null, foo, false)
         listener: beginTopLevelMethod(, null)
         listener: handleIdentifier(Object, typeReference)
         listener: handleNoTypeArguments(?)
         listener: handleType(Object, ?)
-        ensureIdentifier(?, topLevelFunctionDeclaration)
+        ensureIdentifierPotentiallyRecovered(?, topLevelFunctionDeclaration, false)
           listener: handleIdentifier(foo, topLevelFunctionDeclaration)
         parseMethodTypeVar(foo)
           listener: handleNoTypeVariables(()
@@ -58,12 +58,12 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(Object)
-      parseTopLevelMethod(;, null, ;, Instance of 'SimpleNullableType', null, bar)
+      parseTopLevelMethod(;, null, ;, Instance of 'SimpleNullableType', null, bar, false)
         listener: beginTopLevelMethod(;, null)
         listener: handleIdentifier(Object, typeReference)
         listener: handleNoTypeArguments(?)
         listener: handleType(Object, ?)
-        ensureIdentifier(?, topLevelFunctionDeclaration)
+        ensureIdentifierPotentiallyRecovered(?, topLevelFunctionDeclaration, false)
           listener: handleIdentifier(bar, topLevelFunctionDeclaration)
         parseMethodTypeVar(bar)
           listener: beginTypeVariables(<)
@@ -114,10 +114,11 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(main)
-      parseTopLevelMethod(;, null, ;, Instance of 'NoType', null, main)
+      isReservedKeyword(()
+      parseTopLevelMethod(;, null, ;, Instance of 'NoType', null, main, false)
         listener: beginTopLevelMethod(;, null)
         listener: handleNoType(;)
-        ensureIdentifier(;, topLevelFunctionDeclaration)
+        ensureIdentifierPotentiallyRecovered(;, topLevelFunctionDeclaration, false)
           listener: handleIdentifier(main, topLevelFunctionDeclaration)
         parseMethodTypeVar(main)
           listener: handleNoTypeVariables(()
diff --git a/pkg/front_end/parser_testcases/nnbd/issue_39776_prime2.dart.intertwined.expect b/pkg/front_end/parser_testcases/nnbd/issue_39776_prime2.dart.intertwined.expect
index f7b182ea..6643b98 100644
--- a/pkg/front_end/parser_testcases/nnbd/issue_39776_prime2.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/nnbd/issue_39776_prime2.dart.intertwined.expect
@@ -8,12 +8,12 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl()
       listener: beginTopLevelMember(Object)
-      parseTopLevelMethod(, null, , Instance of 'SimpleNullableType', null, foo)
+      parseTopLevelMethod(, null, , Instance of 'SimpleNullableType', null, foo, false)
         listener: beginTopLevelMethod(, null)
         listener: handleIdentifier(Object, typeReference)
         listener: handleNoTypeArguments(?)
         listener: handleType(Object, ?)
-        ensureIdentifier(?, topLevelFunctionDeclaration)
+        ensureIdentifierPotentiallyRecovered(?, topLevelFunctionDeclaration, false)
           listener: handleIdentifier(foo, topLevelFunctionDeclaration)
         parseMethodTypeVar(foo)
           listener: handleNoTypeVariables(()
@@ -58,12 +58,12 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(Object)
-      parseTopLevelMethod(;, null, ;, Instance of 'SimpleNullableType', null, bar)
+      parseTopLevelMethod(;, null, ;, Instance of 'SimpleNullableType', null, bar, false)
         listener: beginTopLevelMethod(;, null)
         listener: handleIdentifier(Object, typeReference)
         listener: handleNoTypeArguments(?)
         listener: handleType(Object, ?)
-        ensureIdentifier(?, topLevelFunctionDeclaration)
+        ensureIdentifierPotentiallyRecovered(?, topLevelFunctionDeclaration, false)
           listener: handleIdentifier(bar, topLevelFunctionDeclaration)
         parseMethodTypeVar(bar)
           listener: beginTypeVariables(<)
@@ -114,10 +114,11 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(main)
-      parseTopLevelMethod(;, null, ;, Instance of 'NoType', null, main)
+      isReservedKeyword(()
+      parseTopLevelMethod(;, null, ;, Instance of 'NoType', null, main, false)
         listener: beginTopLevelMethod(;, null)
         listener: handleNoType(;)
-        ensureIdentifier(;, topLevelFunctionDeclaration)
+        ensureIdentifierPotentiallyRecovered(;, topLevelFunctionDeclaration, false)
           listener: handleIdentifier(main, topLevelFunctionDeclaration)
         parseMethodTypeVar(main)
           listener: handleNoTypeVariables(()
diff --git a/pkg/front_end/parser_testcases/nnbd/issue_39776_prime3.dart.intertwined.expect b/pkg/front_end/parser_testcases/nnbd/issue_39776_prime3.dart.intertwined.expect
index b08b9fd..0c1ffd1 100644
--- a/pkg/front_end/parser_testcases/nnbd/issue_39776_prime3.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/nnbd/issue_39776_prime3.dart.intertwined.expect
@@ -8,12 +8,12 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl()
       listener: beginTopLevelMember(Object)
-      parseTopLevelMethod(, null, , Instance of 'SimpleType', null, bar)
+      parseTopLevelMethod(, null, , Instance of 'SimpleType', null, bar, false)
         listener: beginTopLevelMethod(, null)
         listener: handleIdentifier(Object, typeReference)
         listener: handleNoTypeArguments(bar)
         listener: handleType(Object, null)
-        ensureIdentifier(Object, topLevelFunctionDeclaration)
+        ensureIdentifierPotentiallyRecovered(Object, topLevelFunctionDeclaration, false)
           listener: handleIdentifier(bar, topLevelFunctionDeclaration)
         parseMethodTypeVar(bar)
           listener: beginTypeVariables(<)
@@ -86,10 +86,11 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(main)
-      parseTopLevelMethod(;, null, ;, Instance of 'NoType', null, main)
+      isReservedKeyword(()
+      parseTopLevelMethod(;, null, ;, Instance of 'NoType', null, main, false)
         listener: beginTopLevelMethod(;, null)
         listener: handleNoType(;)
-        ensureIdentifier(;, topLevelFunctionDeclaration)
+        ensureIdentifierPotentiallyRecovered(;, topLevelFunctionDeclaration, false)
           listener: handleIdentifier(main, topLevelFunctionDeclaration)
         parseMethodTypeVar(main)
           listener: handleNoTypeVariables(()
diff --git a/pkg/front_end/parser_testcases/nnbd/issue_39776_prime4.dart.intertwined.expect b/pkg/front_end/parser_testcases/nnbd/issue_39776_prime4.dart.intertwined.expect
index 4e8a043..357e13e 100644
--- a/pkg/front_end/parser_testcases/nnbd/issue_39776_prime4.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/nnbd/issue_39776_prime4.dart.intertwined.expect
@@ -8,12 +8,12 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl()
       listener: beginTopLevelMember(Object)
-      parseTopLevelMethod(, null, , Instance of 'SimpleType', null, bar)
+      parseTopLevelMethod(, null, , Instance of 'SimpleType', null, bar, false)
         listener: beginTopLevelMethod(, null)
         listener: handleIdentifier(Object, typeReference)
         listener: handleNoTypeArguments(bar)
         listener: handleType(Object, null)
-        ensureIdentifier(Object, topLevelFunctionDeclaration)
+        ensureIdentifierPotentiallyRecovered(Object, topLevelFunctionDeclaration, false)
           listener: handleIdentifier(bar, topLevelFunctionDeclaration)
         parseMethodTypeVar(bar)
           listener: beginTypeVariables(<)
@@ -86,10 +86,11 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(main)
-      parseTopLevelMethod(;, null, ;, Instance of 'NoType', null, main)
+      isReservedKeyword(()
+      parseTopLevelMethod(;, null, ;, Instance of 'NoType', null, main, false)
         listener: beginTopLevelMethod(;, null)
         listener: handleNoType(;)
-        ensureIdentifier(;, topLevelFunctionDeclaration)
+        ensureIdentifierPotentiallyRecovered(;, topLevelFunctionDeclaration, false)
           listener: handleIdentifier(main, topLevelFunctionDeclaration)
         parseMethodTypeVar(main)
           listener: handleNoTypeVariables(()
diff --git a/pkg/front_end/parser_testcases/nnbd/issue_39776_prime5.dart.intertwined.expect b/pkg/front_end/parser_testcases/nnbd/issue_39776_prime5.dart.intertwined.expect
index 80648cc..0fef178 100644
--- a/pkg/front_end/parser_testcases/nnbd/issue_39776_prime5.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/nnbd/issue_39776_prime5.dart.intertwined.expect
@@ -8,10 +8,11 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl()
       listener: beginTopLevelMember(foo)
-      parseTopLevelMethod(, null, , Instance of 'NoType', null, foo)
+      isReservedKeyword(!)
+      parseTopLevelMethod(, null, , Instance of 'NoType', null, foo, false)
         listener: beginTopLevelMethod(, null)
         listener: handleNoType()
-        ensureIdentifier(, topLevelFunctionDeclaration)
+        ensureIdentifierPotentiallyRecovered(, topLevelFunctionDeclaration, false)
           listener: handleIdentifier(foo, topLevelFunctionDeclaration)
         parseMethodTypeVar(foo)
           reportRecoverableErrorWithToken(!, Instance of 'Template<(Token) => Message>')
@@ -44,10 +45,11 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(bar)
-      parseTopLevelMethod(;, null, ;, Instance of 'NoType', null, bar)
+      isReservedKeyword(!)
+      parseTopLevelMethod(;, null, ;, Instance of 'NoType', null, bar, false)
         listener: beginTopLevelMethod(;, null)
         listener: handleNoType(;)
-        ensureIdentifier(;, topLevelFunctionDeclaration)
+        ensureIdentifierPotentiallyRecovered(;, topLevelFunctionDeclaration, false)
           listener: handleIdentifier(bar, topLevelFunctionDeclaration)
         parseMethodTypeVar(bar)
           reportRecoverableErrorWithToken(!, Instance of 'Template<(Token) => Message>')
diff --git a/pkg/front_end/parser_testcases/nnbd/issue_39776_prime6.dart.intertwined.expect b/pkg/front_end/parser_testcases/nnbd/issue_39776_prime6.dart.intertwined.expect
index ecc48b8..8ff499f 100644
--- a/pkg/front_end/parser_testcases/nnbd/issue_39776_prime6.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/nnbd/issue_39776_prime6.dart.intertwined.expect
@@ -8,10 +8,11 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl()
       listener: beginTopLevelMember(foo)
-      parseTopLevelMethod(, null, , Instance of 'NoType', null, foo)
+      isReservedKeyword(()
+      parseTopLevelMethod(, null, , Instance of 'NoType', null, foo, false)
         listener: beginTopLevelMethod(, null)
         listener: handleNoType()
-        ensureIdentifier(, topLevelFunctionDeclaration)
+        ensureIdentifierPotentiallyRecovered(, topLevelFunctionDeclaration, false)
           listener: handleIdentifier(foo, topLevelFunctionDeclaration)
         parseMethodTypeVar(foo)
           listener: handleNoTypeVariables(()
@@ -42,10 +43,11 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(bar)
-      parseTopLevelMethod(;, null, ;, Instance of 'NoType', null, bar)
+      isReservedKeyword(<)
+      parseTopLevelMethod(;, null, ;, Instance of 'NoType', null, bar, false)
         listener: beginTopLevelMethod(;, null)
         listener: handleNoType(;)
-        ensureIdentifier(;, topLevelFunctionDeclaration)
+        ensureIdentifierPotentiallyRecovered(;, topLevelFunctionDeclaration, false)
           listener: handleIdentifier(bar, topLevelFunctionDeclaration)
         parseMethodTypeVar(bar)
           listener: beginTypeVariables(<)
diff --git a/pkg/front_end/parser_testcases/nnbd/issue_39858.dart.intertwined.expect b/pkg/front_end/parser_testcases/nnbd/issue_39858.dart.intertwined.expect
index 2361dfa..f4f808b 100644
--- a/pkg/front_end/parser_testcases/nnbd/issue_39858.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/nnbd/issue_39858.dart.intertwined.expect
@@ -32,11 +32,12 @@
                 listener: beginMetadataStar(late)
                 listener: endMetadataStar(0)
               listener: beginMember()
-              parseFields({, null, null, null, late, null, late, Instance of 'NoType', x1, DeclarationKind.Class, X)
+              isReservedKeyword(;)
+              parseFields({, null, null, null, late, null, late, Instance of 'NoType', x1, DeclarationKind.Class, X, false)
                 reportRecoverableError(x1, MissingConstFinalVarOrType)
                   listener: handleRecoverableError(MissingConstFinalVarOrType, x1, x1)
                 listener: handleNoType(late)
-                ensureIdentifier(late, fieldDeclaration)
+                ensureIdentifierPotentiallyRecovered(late, fieldDeclaration, false)
                   listener: handleIdentifier(x1, fieldDeclaration)
                 parseFieldInitializerOpt(x1, x1, late, null, DeclarationKind.Class, X)
                   listener: handleNoFieldInitializer(;)
@@ -48,11 +49,12 @@
                 listener: beginMetadataStar(static)
                 listener: endMetadataStar(0)
               listener: beginMember()
-              parseFields(;, null, static, null, late, null, late, Instance of 'NoType', x2, DeclarationKind.Class, X)
+              isReservedKeyword(;)
+              parseFields(;, null, static, null, late, null, late, Instance of 'NoType', x2, DeclarationKind.Class, X, false)
                 reportRecoverableError(x2, MissingConstFinalVarOrType)
                   listener: handleRecoverableError(MissingConstFinalVarOrType, x2, x2)
                 listener: handleNoType(late)
-                ensureIdentifier(late, fieldDeclaration)
+                ensureIdentifierPotentiallyRecovered(late, fieldDeclaration, false)
                   listener: handleIdentifier(x2, fieldDeclaration)
                 parseFieldInitializerOpt(x2, x2, late, null, DeclarationKind.Class, X)
                   listener: handleNoFieldInitializer(;)
@@ -64,11 +66,12 @@
                 listener: beginMetadataStar(covariant)
                 listener: endMetadataStar(0)
               listener: beginMember()
-              parseFields(;, null, null, covariant, late, null, late, Instance of 'NoType', x3, DeclarationKind.Class, X)
+              isReservedKeyword(;)
+              parseFields(;, null, null, covariant, late, null, late, Instance of 'NoType', x3, DeclarationKind.Class, X, false)
                 reportRecoverableError(x3, MissingConstFinalVarOrType)
                   listener: handleRecoverableError(MissingConstFinalVarOrType, x3, x3)
                 listener: handleNoType(late)
-                ensureIdentifier(late, fieldDeclaration)
+                ensureIdentifierPotentiallyRecovered(late, fieldDeclaration, false)
                   listener: handleIdentifier(x3, fieldDeclaration)
                 parseFieldInitializerOpt(x3, x3, late, null, DeclarationKind.Class, X)
                   listener: handleNoFieldInitializer(;)
@@ -80,11 +83,12 @@
                 listener: beginMetadataStar(late)
                 listener: endMetadataStar(0)
               listener: beginMember()
-              parseFields(;, null, null, null, late, null, late, Instance of 'NoType', x4, DeclarationKind.Class, X)
+              isReservedKeyword(=)
+              parseFields(;, null, null, null, late, null, late, Instance of 'NoType', x4, DeclarationKind.Class, X, false)
                 reportRecoverableError(x4, MissingConstFinalVarOrType)
                   listener: handleRecoverableError(MissingConstFinalVarOrType, x4, x4)
                 listener: handleNoType(late)
-                ensureIdentifier(late, fieldDeclaration)
+                ensureIdentifierPotentiallyRecovered(late, fieldDeclaration, false)
                   listener: handleIdentifier(x4, fieldDeclaration)
                 parseFieldInitializerOpt(x4, x4, late, null, DeclarationKind.Class, X)
                   listener: beginFieldInitializer(=)
@@ -103,11 +107,12 @@
                 listener: beginMetadataStar(static)
                 listener: endMetadataStar(0)
               listener: beginMember()
-              parseFields(;, null, static, null, late, null, late, Instance of 'NoType', x5, DeclarationKind.Class, X)
+              isReservedKeyword(=)
+              parseFields(;, null, static, null, late, null, late, Instance of 'NoType', x5, DeclarationKind.Class, X, false)
                 reportRecoverableError(x5, MissingConstFinalVarOrType)
                   listener: handleRecoverableError(MissingConstFinalVarOrType, x5, x5)
                 listener: handleNoType(late)
-                ensureIdentifier(late, fieldDeclaration)
+                ensureIdentifierPotentiallyRecovered(late, fieldDeclaration, false)
                   listener: handleIdentifier(x5, fieldDeclaration)
                 parseFieldInitializerOpt(x5, x5, late, null, DeclarationKind.Class, X)
                   listener: beginFieldInitializer(=)
@@ -126,11 +131,12 @@
                 listener: beginMetadataStar(covariant)
                 listener: endMetadataStar(0)
               listener: beginMember()
-              parseFields(;, null, null, covariant, late, null, late, Instance of 'NoType', x6, DeclarationKind.Class, X)
+              isReservedKeyword(=)
+              parseFields(;, null, null, covariant, late, null, late, Instance of 'NoType', x6, DeclarationKind.Class, X, false)
                 reportRecoverableError(x6, MissingConstFinalVarOrType)
                   listener: handleRecoverableError(MissingConstFinalVarOrType, x6, x6)
                 listener: handleNoType(late)
-                ensureIdentifier(late, fieldDeclaration)
+                ensureIdentifierPotentiallyRecovered(late, fieldDeclaration, false)
                   listener: handleIdentifier(x6, fieldDeclaration)
                 parseFieldInitializerOpt(x6, x6, late, null, DeclarationKind.Class, X)
                   listener: beginFieldInitializer(=)
diff --git a/pkg/front_end/parser_testcases/nnbd/issue_39858_prime1.dart.intertwined.expect b/pkg/front_end/parser_testcases/nnbd/issue_39858_prime1.dart.intertwined.expect
index b1d726d..d224ea7 100644
--- a/pkg/front_end/parser_testcases/nnbd/issue_39858_prime1.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/nnbd/issue_39858_prime1.dart.intertwined.expect
@@ -32,9 +32,9 @@
                 listener: beginMetadataStar(var)
                 listener: endMetadataStar(0)
               listener: beginMember()
-              parseFields({, null, null, null, null, var, var, Instance of 'NoType', x1, DeclarationKind.Class, X)
+              parseFields({, null, null, null, null, var, var, Instance of 'NoType', x1, DeclarationKind.Class, X, false)
                 listener: handleNoType(var)
-                ensureIdentifier(var, fieldDeclaration)
+                ensureIdentifierPotentiallyRecovered(var, fieldDeclaration, false)
                   listener: handleIdentifier(x1, fieldDeclaration)
                 parseFieldInitializerOpt(x1, x1, null, var, DeclarationKind.Class, X)
                   listener: handleNoFieldInitializer(;)
@@ -46,9 +46,9 @@
                 listener: beginMetadataStar(static)
                 listener: endMetadataStar(0)
               listener: beginMember()
-              parseFields(;, null, static, null, null, var, var, Instance of 'NoType', x2, DeclarationKind.Class, X)
+              parseFields(;, null, static, null, null, var, var, Instance of 'NoType', x2, DeclarationKind.Class, X, false)
                 listener: handleNoType(var)
-                ensureIdentifier(var, fieldDeclaration)
+                ensureIdentifierPotentiallyRecovered(var, fieldDeclaration, false)
                   listener: handleIdentifier(x2, fieldDeclaration)
                 parseFieldInitializerOpt(x2, x2, null, var, DeclarationKind.Class, X)
                   listener: handleNoFieldInitializer(;)
@@ -60,9 +60,9 @@
                 listener: beginMetadataStar(covariant)
                 listener: endMetadataStar(0)
               listener: beginMember()
-              parseFields(;, null, null, covariant, null, var, var, Instance of 'NoType', x3, DeclarationKind.Class, X)
+              parseFields(;, null, null, covariant, null, var, var, Instance of 'NoType', x3, DeclarationKind.Class, X, false)
                 listener: handleNoType(var)
-                ensureIdentifier(var, fieldDeclaration)
+                ensureIdentifierPotentiallyRecovered(var, fieldDeclaration, false)
                   listener: handleIdentifier(x3, fieldDeclaration)
                 parseFieldInitializerOpt(x3, x3, null, var, DeclarationKind.Class, X)
                   listener: handleNoFieldInitializer(;)
@@ -74,9 +74,9 @@
                 listener: beginMetadataStar(var)
                 listener: endMetadataStar(0)
               listener: beginMember()
-              parseFields(;, null, null, null, null, var, var, Instance of 'NoType', x4, DeclarationKind.Class, X)
+              parseFields(;, null, null, null, null, var, var, Instance of 'NoType', x4, DeclarationKind.Class, X, false)
                 listener: handleNoType(var)
-                ensureIdentifier(var, fieldDeclaration)
+                ensureIdentifierPotentiallyRecovered(var, fieldDeclaration, false)
                   listener: handleIdentifier(x4, fieldDeclaration)
                 parseFieldInitializerOpt(x4, x4, null, var, DeclarationKind.Class, X)
                   listener: beginFieldInitializer(=)
@@ -95,9 +95,9 @@
                 listener: beginMetadataStar(static)
                 listener: endMetadataStar(0)
               listener: beginMember()
-              parseFields(;, null, static, null, null, var, var, Instance of 'NoType', x5, DeclarationKind.Class, X)
+              parseFields(;, null, static, null, null, var, var, Instance of 'NoType', x5, DeclarationKind.Class, X, false)
                 listener: handleNoType(var)
-                ensureIdentifier(var, fieldDeclaration)
+                ensureIdentifierPotentiallyRecovered(var, fieldDeclaration, false)
                   listener: handleIdentifier(x5, fieldDeclaration)
                 parseFieldInitializerOpt(x5, x5, null, var, DeclarationKind.Class, X)
                   listener: beginFieldInitializer(=)
@@ -116,9 +116,9 @@
                 listener: beginMetadataStar(covariant)
                 listener: endMetadataStar(0)
               listener: beginMember()
-              parseFields(;, null, null, covariant, null, var, var, Instance of 'NoType', x6, DeclarationKind.Class, X)
+              parseFields(;, null, null, covariant, null, var, var, Instance of 'NoType', x6, DeclarationKind.Class, X, false)
                 listener: handleNoType(var)
-                ensureIdentifier(var, fieldDeclaration)
+                ensureIdentifierPotentiallyRecovered(var, fieldDeclaration, false)
                   listener: handleIdentifier(x6, fieldDeclaration)
                 parseFieldInitializerOpt(x6, x6, null, var, DeclarationKind.Class, X)
                   listener: beginFieldInitializer(=)
diff --git a/pkg/front_end/parser_testcases/nnbd/issue_40267_case_01.dart.intertwined.expect b/pkg/front_end/parser_testcases/nnbd/issue_40267_case_01.dart.intertwined.expect
index 11cef0c..2e0628e 100644
--- a/pkg/front_end/parser_testcases/nnbd/issue_40267_case_01.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/nnbd/issue_40267_case_01.dart.intertwined.expect
@@ -8,10 +8,11 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl()
       listener: beginTopLevelMember(main)
-      parseTopLevelMethod(, null, , Instance of 'NoType', null, main)
+      isReservedKeyword(()
+      parseTopLevelMethod(, null, , Instance of 'NoType', null, main, false)
         listener: beginTopLevelMethod(, null)
         listener: handleNoType()
-        ensureIdentifier(, topLevelFunctionDeclaration)
+        ensureIdentifierPotentiallyRecovered(, topLevelFunctionDeclaration, false)
           listener: handleIdentifier(main, topLevelFunctionDeclaration)
         parseMethodTypeVar(main)
           listener: handleNoTypeVariables(()
diff --git a/pkg/front_end/parser_testcases/nnbd/issue_40267_case_02.dart.intertwined.expect b/pkg/front_end/parser_testcases/nnbd/issue_40267_case_02.dart.intertwined.expect
index 193d377..1a79606 100644
--- a/pkg/front_end/parser_testcases/nnbd/issue_40267_case_02.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/nnbd/issue_40267_case_02.dart.intertwined.expect
@@ -8,10 +8,11 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl()
       listener: beginTopLevelMember(main)
-      parseTopLevelMethod(, null, , Instance of 'NoType', null, main)
+      isReservedKeyword(()
+      parseTopLevelMethod(, null, , Instance of 'NoType', null, main, false)
         listener: beginTopLevelMethod(, null)
         listener: handleNoType()
-        ensureIdentifier(, topLevelFunctionDeclaration)
+        ensureIdentifierPotentiallyRecovered(, topLevelFunctionDeclaration, false)
           listener: handleIdentifier(main, topLevelFunctionDeclaration)
         parseMethodTypeVar(main)
           listener: handleNoTypeVariables(()
diff --git a/pkg/front_end/parser_testcases/nnbd/issue_40267_case_03.dart.intertwined.expect b/pkg/front_end/parser_testcases/nnbd/issue_40267_case_03.dart.intertwined.expect
index dd08234..be7185a 100644
--- a/pkg/front_end/parser_testcases/nnbd/issue_40267_case_03.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/nnbd/issue_40267_case_03.dart.intertwined.expect
@@ -8,10 +8,11 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl()
       listener: beginTopLevelMember(main)
-      parseTopLevelMethod(, null, , Instance of 'NoType', null, main)
+      isReservedKeyword(()
+      parseTopLevelMethod(, null, , Instance of 'NoType', null, main, false)
         listener: beginTopLevelMethod(, null)
         listener: handleNoType()
-        ensureIdentifier(, topLevelFunctionDeclaration)
+        ensureIdentifierPotentiallyRecovered(, topLevelFunctionDeclaration, false)
           listener: handleIdentifier(main, topLevelFunctionDeclaration)
         parseMethodTypeVar(main)
           listener: handleNoTypeVariables(()
diff --git a/pkg/front_end/parser_testcases/nnbd/issue_40267_case_04.dart.intertwined.expect b/pkg/front_end/parser_testcases/nnbd/issue_40267_case_04.dart.intertwined.expect
index 9e05db0..3e8bb5a 100644
--- a/pkg/front_end/parser_testcases/nnbd/issue_40267_case_04.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/nnbd/issue_40267_case_04.dart.intertwined.expect
@@ -8,10 +8,11 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl()
       listener: beginTopLevelMember(main)
-      parseTopLevelMethod(, null, , Instance of 'NoType', null, main)
+      isReservedKeyword(()
+      parseTopLevelMethod(, null, , Instance of 'NoType', null, main, false)
         listener: beginTopLevelMethod(, null)
         listener: handleNoType()
-        ensureIdentifier(, topLevelFunctionDeclaration)
+        ensureIdentifierPotentiallyRecovered(, topLevelFunctionDeclaration, false)
           listener: handleIdentifier(main, topLevelFunctionDeclaration)
         parseMethodTypeVar(main)
           listener: handleNoTypeVariables(()
diff --git a/pkg/front_end/parser_testcases/nnbd/issue_40267_case_05.dart.intertwined.expect b/pkg/front_end/parser_testcases/nnbd/issue_40267_case_05.dart.intertwined.expect
index ac93388..a69553c 100644
--- a/pkg/front_end/parser_testcases/nnbd/issue_40267_case_05.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/nnbd/issue_40267_case_05.dart.intertwined.expect
@@ -8,10 +8,11 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl()
       listener: beginTopLevelMember(main)
-      parseTopLevelMethod(, null, , Instance of 'NoType', null, main)
+      isReservedKeyword(()
+      parseTopLevelMethod(, null, , Instance of 'NoType', null, main, false)
         listener: beginTopLevelMethod(, null)
         listener: handleNoType()
-        ensureIdentifier(, topLevelFunctionDeclaration)
+        ensureIdentifierPotentiallyRecovered(, topLevelFunctionDeclaration, false)
           listener: handleIdentifier(main, topLevelFunctionDeclaration)
         parseMethodTypeVar(main)
           listener: handleNoTypeVariables(()
diff --git a/pkg/front_end/parser_testcases/nnbd/issue_40267_conditional.dart.intertwined.expect b/pkg/front_end/parser_testcases/nnbd/issue_40267_conditional.dart.intertwined.expect
index 7d4e907..6761e0c 100644
--- a/pkg/front_end/parser_testcases/nnbd/issue_40267_conditional.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/nnbd/issue_40267_conditional.dart.intertwined.expect
@@ -8,10 +8,11 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl()
       listener: beginTopLevelMember(f)
-      parseTopLevelMethod(, null, , Instance of 'NoType', null, f)
+      isReservedKeyword(()
+      parseTopLevelMethod(, null, , Instance of 'NoType', null, f, false)
         listener: beginTopLevelMethod(, null)
         listener: handleNoType()
-        ensureIdentifier(, topLevelFunctionDeclaration)
+        ensureIdentifierPotentiallyRecovered(, topLevelFunctionDeclaration, false)
           listener: handleIdentifier(f, topLevelFunctionDeclaration)
         parseMethodTypeVar(f)
           listener: handleNoTypeVariables(()
diff --git a/pkg/front_end/parser_testcases/nnbd/issue_40267_conditional_2.dart.intertwined.expect b/pkg/front_end/parser_testcases/nnbd/issue_40267_conditional_2.dart.intertwined.expect
index 3af70bd..a4a13e9 100644
--- a/pkg/front_end/parser_testcases/nnbd/issue_40267_conditional_2.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/nnbd/issue_40267_conditional_2.dart.intertwined.expect
@@ -8,10 +8,11 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl()
       listener: beginTopLevelMember(f)
-      parseTopLevelMethod(, null, , Instance of 'NoType', null, f)
+      isReservedKeyword(()
+      parseTopLevelMethod(, null, , Instance of 'NoType', null, f, false)
         listener: beginTopLevelMethod(, null)
         listener: handleNoType()
-        ensureIdentifier(, topLevelFunctionDeclaration)
+        ensureIdentifierPotentiallyRecovered(, topLevelFunctionDeclaration, false)
           listener: handleIdentifier(f, topLevelFunctionDeclaration)
         parseMethodTypeVar(f)
           listener: handleNoTypeVariables(()
diff --git a/pkg/front_end/parser_testcases/nnbd/issue_40267_index_access.dart.intertwined.expect b/pkg/front_end/parser_testcases/nnbd/issue_40267_index_access.dart.intertwined.expect
index 4674f50..7582fd9 100644
--- a/pkg/front_end/parser_testcases/nnbd/issue_40267_index_access.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/nnbd/issue_40267_index_access.dart.intertwined.expect
@@ -8,10 +8,11 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl()
       listener: beginTopLevelMember(f)
-      parseTopLevelMethod(, null, , Instance of 'NoType', null, f)
+      isReservedKeyword(()
+      parseTopLevelMethod(, null, , Instance of 'NoType', null, f, false)
         listener: beginTopLevelMethod(, null)
         listener: handleNoType()
-        ensureIdentifier(, topLevelFunctionDeclaration)
+        ensureIdentifierPotentiallyRecovered(, topLevelFunctionDeclaration, false)
           listener: handleIdentifier(f, topLevelFunctionDeclaration)
         parseMethodTypeVar(f)
           listener: handleNoTypeVariables(()
diff --git a/pkg/front_end/parser_testcases/nnbd/issue_40267_index_set.dart.intertwined.expect b/pkg/front_end/parser_testcases/nnbd/issue_40267_index_set.dart.intertwined.expect
index ecd4668..0c65fee 100644
--- a/pkg/front_end/parser_testcases/nnbd/issue_40267_index_set.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/nnbd/issue_40267_index_set.dart.intertwined.expect
@@ -8,10 +8,11 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl()
       listener: beginTopLevelMember(f)
-      parseTopLevelMethod(, null, , Instance of 'NoType', null, f)
+      isReservedKeyword(()
+      parseTopLevelMethod(, null, , Instance of 'NoType', null, f, false)
         listener: beginTopLevelMethod(, null)
         listener: handleNoType()
-        ensureIdentifier(, topLevelFunctionDeclaration)
+        ensureIdentifierPotentiallyRecovered(, topLevelFunctionDeclaration, false)
           listener: handleIdentifier(f, topLevelFunctionDeclaration)
         parseMethodTypeVar(f)
           listener: handleNoTypeVariables(()
diff --git a/pkg/front_end/parser_testcases/nnbd/issue_40267_lookup_plus.dart.intertwined.expect b/pkg/front_end/parser_testcases/nnbd/issue_40267_lookup_plus.dart.intertwined.expect
index 2475c14..7f14904 100644
--- a/pkg/front_end/parser_testcases/nnbd/issue_40267_lookup_plus.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/nnbd/issue_40267_lookup_plus.dart.intertwined.expect
@@ -8,10 +8,11 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl()
       listener: beginTopLevelMember(f)
-      parseTopLevelMethod(, null, , Instance of 'NoType', null, f)
+      isReservedKeyword(()
+      parseTopLevelMethod(, null, , Instance of 'NoType', null, f, false)
         listener: beginTopLevelMethod(, null)
         listener: handleNoType()
-        ensureIdentifier(, topLevelFunctionDeclaration)
+        ensureIdentifierPotentiallyRecovered(, topLevelFunctionDeclaration, false)
           listener: handleIdentifier(f, topLevelFunctionDeclaration)
         parseMethodTypeVar(f)
           listener: handleNoTypeVariables(()
diff --git a/pkg/front_end/parser_testcases/nnbd/issue_40267_lookup_plus_plus.dart.intertwined.expect b/pkg/front_end/parser_testcases/nnbd/issue_40267_lookup_plus_plus.dart.intertwined.expect
index 244201e..2f6e742 100644
--- a/pkg/front_end/parser_testcases/nnbd/issue_40267_lookup_plus_plus.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/nnbd/issue_40267_lookup_plus_plus.dart.intertwined.expect
@@ -8,10 +8,11 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl()
       listener: beginTopLevelMember(f)
-      parseTopLevelMethod(, null, , Instance of 'NoType', null, f)
+      isReservedKeyword(()
+      parseTopLevelMethod(, null, , Instance of 'NoType', null, f, false)
         listener: beginTopLevelMethod(, null)
         listener: handleNoType()
-        ensureIdentifier(, topLevelFunctionDeclaration)
+        ensureIdentifierPotentiallyRecovered(, topLevelFunctionDeclaration, false)
           listener: handleIdentifier(f, topLevelFunctionDeclaration)
         parseMethodTypeVar(f)
           listener: handleNoTypeVariables(()
diff --git a/pkg/front_end/parser_testcases/nnbd/issue_40267_method_call_no_type_arguments.dart.intertwined.expect b/pkg/front_end/parser_testcases/nnbd/issue_40267_method_call_no_type_arguments.dart.intertwined.expect
index a7e1e9f..0fe0966 100644
--- a/pkg/front_end/parser_testcases/nnbd/issue_40267_method_call_no_type_arguments.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/nnbd/issue_40267_method_call_no_type_arguments.dart.intertwined.expect
@@ -8,10 +8,11 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl()
       listener: beginTopLevelMember(f)
-      parseTopLevelMethod(, null, , Instance of 'NoType', null, f)
+      isReservedKeyword(()
+      parseTopLevelMethod(, null, , Instance of 'NoType', null, f, false)
         listener: beginTopLevelMethod(, null)
         listener: handleNoType()
-        ensureIdentifier(, topLevelFunctionDeclaration)
+        ensureIdentifierPotentiallyRecovered(, topLevelFunctionDeclaration, false)
           listener: handleIdentifier(f, topLevelFunctionDeclaration)
         parseMethodTypeVar(f)
           listener: handleNoTypeVariables(()
diff --git a/pkg/front_end/parser_testcases/nnbd/issue_40267_method_call_with_type_arguments.dart.intertwined.expect b/pkg/front_end/parser_testcases/nnbd/issue_40267_method_call_with_type_arguments.dart.intertwined.expect
index ff02d11..d4d40f7 100644
--- a/pkg/front_end/parser_testcases/nnbd/issue_40267_method_call_with_type_arguments.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/nnbd/issue_40267_method_call_with_type_arguments.dart.intertwined.expect
@@ -8,10 +8,11 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl()
       listener: beginTopLevelMember(f)
-      parseTopLevelMethod(, null, , Instance of 'NoType', null, f)
+      isReservedKeyword(()
+      parseTopLevelMethod(, null, , Instance of 'NoType', null, f, false)
         listener: beginTopLevelMethod(, null)
         listener: handleNoType()
-        ensureIdentifier(, topLevelFunctionDeclaration)
+        ensureIdentifierPotentiallyRecovered(, topLevelFunctionDeclaration, false)
           listener: handleIdentifier(f, topLevelFunctionDeclaration)
         parseMethodTypeVar(f)
           listener: handleNoTypeVariables(()
diff --git a/pkg/front_end/parser_testcases/nnbd/issue_40267_plus_plus_lookup.dart.intertwined.expect b/pkg/front_end/parser_testcases/nnbd/issue_40267_plus_plus_lookup.dart.intertwined.expect
index 2b47b0f..2aa0856 100644
--- a/pkg/front_end/parser_testcases/nnbd/issue_40267_plus_plus_lookup.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/nnbd/issue_40267_plus_plus_lookup.dart.intertwined.expect
@@ -8,10 +8,11 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl()
       listener: beginTopLevelMember(f)
-      parseTopLevelMethod(, null, , Instance of 'NoType', null, f)
+      isReservedKeyword(()
+      parseTopLevelMethod(, null, , Instance of 'NoType', null, f, false)
         listener: beginTopLevelMethod(, null)
         listener: handleNoType()
-        ensureIdentifier(, topLevelFunctionDeclaration)
+        ensureIdentifierPotentiallyRecovered(, topLevelFunctionDeclaration, false)
           listener: handleIdentifier(f, topLevelFunctionDeclaration)
         parseMethodTypeVar(f)
           listener: handleNoTypeVariables(()
diff --git a/pkg/front_end/parser_testcases/nnbd/issue_40793.dart.intertwined.expect b/pkg/front_end/parser_testcases/nnbd/issue_40793.dart.intertwined.expect
index 05f75c7..c45375f 100644
--- a/pkg/front_end/parser_testcases/nnbd/issue_40793.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/nnbd/issue_40793.dart.intertwined.expect
@@ -8,10 +8,10 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl()
       listener: beginTopLevelMember(void)
-      parseTopLevelMethod(, null, , Instance of 'VoidType', null, f)
+      parseTopLevelMethod(, null, , Instance of 'VoidType', null, f, false)
         listener: beginTopLevelMethod(, null)
         listener: handleVoidKeyword(void)
-        ensureIdentifier(void, topLevelFunctionDeclaration)
+        ensureIdentifierPotentiallyRecovered(void, topLevelFunctionDeclaration, false)
           listener: handleIdentifier(f, topLevelFunctionDeclaration)
         parseMethodTypeVar(f)
           listener: handleNoTypeVariables(()
diff --git a/pkg/front_end/parser_testcases/nnbd/issue_40793_prime.dart.intertwined.expect b/pkg/front_end/parser_testcases/nnbd/issue_40793_prime.dart.intertwined.expect
index 291c699..4895f75 100644
--- a/pkg/front_end/parser_testcases/nnbd/issue_40793_prime.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/nnbd/issue_40793_prime.dart.intertwined.expect
@@ -8,10 +8,10 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl()
       listener: beginTopLevelMember(void)
-      parseTopLevelMethod(, null, , Instance of 'VoidType', null, f)
+      parseTopLevelMethod(, null, , Instance of 'VoidType', null, f, false)
         listener: beginTopLevelMethod(, null)
         listener: handleVoidKeyword(void)
-        ensureIdentifier(void, topLevelFunctionDeclaration)
+        ensureIdentifierPotentiallyRecovered(void, topLevelFunctionDeclaration, false)
           listener: handleIdentifier(f, topLevelFunctionDeclaration)
         parseMethodTypeVar(f)
           listener: handleNoTypeVariables(()
diff --git a/pkg/front_end/parser_testcases/nnbd/issue_40793_prime2.dart.intertwined.expect b/pkg/front_end/parser_testcases/nnbd/issue_40793_prime2.dart.intertwined.expect
index 3950b41..89547a0 100644
--- a/pkg/front_end/parser_testcases/nnbd/issue_40793_prime2.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/nnbd/issue_40793_prime2.dart.intertwined.expect
@@ -8,10 +8,10 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl()
       listener: beginTopLevelMember(void)
-      parseTopLevelMethod(, null, , Instance of 'VoidType', null, f)
+      parseTopLevelMethod(, null, , Instance of 'VoidType', null, f, false)
         listener: beginTopLevelMethod(, null)
         listener: handleVoidKeyword(void)
-        ensureIdentifier(void, topLevelFunctionDeclaration)
+        ensureIdentifierPotentiallyRecovered(void, topLevelFunctionDeclaration, false)
           listener: handleIdentifier(f, topLevelFunctionDeclaration)
         parseMethodTypeVar(f)
           listener: handleNoTypeVariables(()
diff --git a/pkg/front_end/parser_testcases/nnbd/issue_40793_prime3.dart.intertwined.expect b/pkg/front_end/parser_testcases/nnbd/issue_40793_prime3.dart.intertwined.expect
index 0ab7059..ae0ddb4 100644
--- a/pkg/front_end/parser_testcases/nnbd/issue_40793_prime3.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/nnbd/issue_40793_prime3.dart.intertwined.expect
@@ -8,10 +8,10 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl()
       listener: beginTopLevelMember(void)
-      parseTopLevelMethod(, null, , Instance of 'VoidType', null, f)
+      parseTopLevelMethod(, null, , Instance of 'VoidType', null, f, false)
         listener: beginTopLevelMethod(, null)
         listener: handleVoidKeyword(void)
-        ensureIdentifier(void, topLevelFunctionDeclaration)
+        ensureIdentifierPotentiallyRecovered(void, topLevelFunctionDeclaration, false)
           listener: handleIdentifier(f, topLevelFunctionDeclaration)
         parseMethodTypeVar(f)
           listener: handleNoTypeVariables(()
diff --git a/pkg/front_end/parser_testcases/nnbd/issue_40793_prime4.dart.intertwined.expect b/pkg/front_end/parser_testcases/nnbd/issue_40793_prime4.dart.intertwined.expect
index cf69aaf..4dfab55 100644
--- a/pkg/front_end/parser_testcases/nnbd/issue_40793_prime4.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/nnbd/issue_40793_prime4.dart.intertwined.expect
@@ -8,10 +8,10 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl()
       listener: beginTopLevelMember(void)
-      parseTopLevelMethod(, null, , Instance of 'VoidType', null, f)
+      parseTopLevelMethod(, null, , Instance of 'VoidType', null, f, false)
         listener: beginTopLevelMethod(, null)
         listener: handleVoidKeyword(void)
-        ensureIdentifier(void, topLevelFunctionDeclaration)
+        ensureIdentifierPotentiallyRecovered(void, topLevelFunctionDeclaration, false)
           listener: handleIdentifier(f, topLevelFunctionDeclaration)
         parseMethodTypeVar(f)
           listener: handleNoTypeVariables(()
diff --git a/pkg/front_end/parser_testcases/nnbd/issue_40793_prime5.dart.intertwined.expect b/pkg/front_end/parser_testcases/nnbd/issue_40793_prime5.dart.intertwined.expect
index 3d02975..9b6f454 100644
--- a/pkg/front_end/parser_testcases/nnbd/issue_40793_prime5.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/nnbd/issue_40793_prime5.dart.intertwined.expect
@@ -8,10 +8,10 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl()
       listener: beginTopLevelMember(void)
-      parseTopLevelMethod(, null, , Instance of 'VoidType', null, f)
+      parseTopLevelMethod(, null, , Instance of 'VoidType', null, f, false)
         listener: beginTopLevelMethod(, null)
         listener: handleVoidKeyword(void)
-        ensureIdentifier(void, topLevelFunctionDeclaration)
+        ensureIdentifierPotentiallyRecovered(void, topLevelFunctionDeclaration, false)
           listener: handleIdentifier(f, topLevelFunctionDeclaration)
         parseMethodTypeVar(f)
           listener: handleNoTypeVariables(()
diff --git a/pkg/front_end/parser_testcases/nnbd/issue_40805_01.dart.intertwined.expect b/pkg/front_end/parser_testcases/nnbd/issue_40805_01.dart.intertwined.expect
index b514254..d815fea 100644
--- a/pkg/front_end/parser_testcases/nnbd/issue_40805_01.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/nnbd/issue_40805_01.dart.intertwined.expect
@@ -32,11 +32,11 @@
                 listener: beginMetadataStar(covariant)
                 listener: endMetadataStar(0)
               listener: beginMember()
-              parseFields({, null, null, covariant, late, final, final, Instance of 'SimpleType', x, DeclarationKind.Class, C)
+              parseFields({, null, null, covariant, late, final, final, Instance of 'SimpleType', x, DeclarationKind.Class, C, false)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(x)
                 listener: handleType(int, null)
-                ensureIdentifier(int, fieldDeclaration)
+                ensureIdentifierPotentiallyRecovered(int, fieldDeclaration, false)
                   listener: handleIdentifier(x, fieldDeclaration)
                 parseFieldInitializerOpt(x, x, late, final, DeclarationKind.Class, C)
                   listener: handleNoFieldInitializer(;)
diff --git a/pkg/front_end/parser_testcases/nnbd/issue_40805_02.dart.intertwined.expect b/pkg/front_end/parser_testcases/nnbd/issue_40805_02.dart.intertwined.expect
index 0c9581c..ca8c3f6 100644
--- a/pkg/front_end/parser_testcases/nnbd/issue_40805_02.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/nnbd/issue_40805_02.dart.intertwined.expect
@@ -32,11 +32,11 @@
                 listener: beginMetadataStar(covariant)
                 listener: endMetadataStar(0)
               listener: beginMember()
-              parseFields({, null, null, covariant, late, final, final, Instance of 'SimpleType', x, DeclarationKind.Class, C)
+              parseFields({, null, null, covariant, late, final, final, Instance of 'SimpleType', x, DeclarationKind.Class, C, false)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(x)
                 listener: handleType(int, null)
-                ensureIdentifier(int, fieldDeclaration)
+                ensureIdentifierPotentiallyRecovered(int, fieldDeclaration, false)
                   listener: handleIdentifier(x, fieldDeclaration)
                 reportRecoverableError(covariant, FinalAndCovariantLateWithInitializer)
                   listener: handleRecoverableError(FinalAndCovariantLateWithInitializer, covariant, covariant)
diff --git a/pkg/front_end/parser_testcases/nnbd/issue_40805_03.dart.intertwined.expect b/pkg/front_end/parser_testcases/nnbd/issue_40805_03.dart.intertwined.expect
index 6c521ab..9854745 100644
--- a/pkg/front_end/parser_testcases/nnbd/issue_40805_03.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/nnbd/issue_40805_03.dart.intertwined.expect
@@ -32,13 +32,13 @@
                 listener: beginMetadataStar(covariant)
                 listener: endMetadataStar(0)
               listener: beginMember()
-              parseFields({, null, null, covariant, null, final, final, Instance of 'SimpleType', x, DeclarationKind.Class, C)
+              parseFields({, null, null, covariant, null, final, final, Instance of 'SimpleType', x, DeclarationKind.Class, C, false)
                 reportRecoverableError(covariant, FinalAndCovariant)
                   listener: handleRecoverableError(FinalAndCovariant, covariant, covariant)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(x)
                 listener: handleType(int, null)
-                ensureIdentifier(int, fieldDeclaration)
+                ensureIdentifierPotentiallyRecovered(int, fieldDeclaration, false)
                   listener: handleIdentifier(x, fieldDeclaration)
                 parseFieldInitializerOpt(x, x, null, final, DeclarationKind.Class, C)
                   listener: beginFieldInitializer(=)
diff --git a/pkg/front_end/parser_testcases/nnbd/issue_40834_01.dart.intertwined.expect b/pkg/front_end/parser_testcases/nnbd/issue_40834_01.dart.intertwined.expect
index e271d8f..3f329b4 100644
--- a/pkg/front_end/parser_testcases/nnbd/issue_40834_01.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/nnbd/issue_40834_01.dart.intertwined.expect
@@ -32,11 +32,11 @@
                 listener: beginMetadataStar(String)
                 listener: endMetadataStar(0)
               listener: beginMember()
-              parseFields({, null, null, null, null, null, {, Instance of 'SimpleNullableType', x, DeclarationKind.Class, Foo)
+              parseFields({, null, null, null, null, null, {, Instance of 'SimpleNullableType', x, DeclarationKind.Class, Foo, false)
                 listener: handleIdentifier(String, typeReference)
                 listener: handleNoTypeArguments(?)
                 listener: handleType(String, ?)
-                ensureIdentifier(?, fieldDeclaration)
+                ensureIdentifierPotentiallyRecovered(?, fieldDeclaration, false)
                   listener: handleIdentifier(x, fieldDeclaration)
                 parseFieldInitializerOpt(x, x, null, null, DeclarationKind.Class, Foo)
                   listener: handleNoFieldInitializer(;)
@@ -48,11 +48,11 @@
                 listener: beginMetadataStar(int)
                 listener: endMetadataStar(0)
               listener: beginMember()
-              parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', y, DeclarationKind.Class, Foo)
+              parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', y, DeclarationKind.Class, Foo, false)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(y)
                 listener: handleType(int, null)
-                ensureIdentifier(int, fieldDeclaration)
+                ensureIdentifierPotentiallyRecovered(int, fieldDeclaration, false)
                   listener: handleIdentifier(y, fieldDeclaration)
                 parseFieldInitializerOpt(y, y, null, null, DeclarationKind.Class, Foo)
                   listener: handleNoFieldInitializer(;)
@@ -64,10 +64,11 @@
                 listener: beginMetadataStar(Foo)
                 listener: endMetadataStar(0)
               listener: beginMember()
-              parseMethod(;, null, null, null, null, null, ;, Instance of 'NoType', null, Foo, DeclarationKind.Class, Foo)
+              isReservedKeyword(()
+              parseMethod(;, null, null, null, null, null, ;, Instance of 'NoType', null, Foo, DeclarationKind.Class, Foo, false)
                 listener: beginMethod(null, null, null, null, null, Foo)
                 listener: handleNoType(;)
-                ensureIdentifier(;, methodDeclaration)
+                ensureIdentifierPotentiallyRecovered(;, methodDeclaration, false)
                   listener: handleIdentifier(Foo, methodDeclaration)
                 parseQualifiedRestOpt(Foo, methodDeclarationContinuation)
                 parseMethodTypeVar(Foo)
@@ -166,10 +167,11 @@
                 listener: beginMetadataStar(Foo)
                 listener: endMetadataStar(0)
               listener: beginMember()
-              parseMethod(;, null, null, null, null, null, ;, Instance of 'NoType', null, Foo, DeclarationKind.Class, Foo)
+              isReservedKeyword(.)
+              parseMethod(;, null, null, null, null, null, ;, Instance of 'NoType', null, Foo, DeclarationKind.Class, Foo, false)
                 listener: beginMethod(null, null, null, null, null, Foo)
                 listener: handleNoType(;)
-                ensureIdentifier(;, methodDeclaration)
+                ensureIdentifierPotentiallyRecovered(;, methodDeclaration, false)
                   listener: handleIdentifier(Foo, methodDeclaration)
                 parseQualifiedRestOpt(Foo, methodDeclarationContinuation)
                   parseQualifiedRest(Foo, methodDeclarationContinuation)
@@ -305,10 +307,11 @@
                 listener: beginMetadataStar(Foo)
                 listener: endMetadataStar(0)
               listener: beginMember()
-              parseMethod(;, null, null, null, null, null, ;, Instance of 'NoType', null, Foo, DeclarationKind.Class, Foo)
+              isReservedKeyword(.)
+              parseMethod(;, null, null, null, null, null, ;, Instance of 'NoType', null, Foo, DeclarationKind.Class, Foo, false)
                 listener: beginMethod(null, null, null, null, null, Foo)
                 listener: handleNoType(;)
-                ensureIdentifier(;, methodDeclaration)
+                ensureIdentifierPotentiallyRecovered(;, methodDeclaration, false)
                   listener: handleIdentifier(Foo, methodDeclaration)
                 parseQualifiedRestOpt(Foo, methodDeclarationContinuation)
                   parseQualifiedRest(Foo, methodDeclarationContinuation)
@@ -444,10 +447,11 @@
                 listener: beginMetadataStar(Foo)
                 listener: endMetadataStar(0)
               listener: beginMember()
-              parseMethod(;, null, null, null, null, null, ;, Instance of 'NoType', null, Foo, DeclarationKind.Class, Foo)
+              isReservedKeyword(.)
+              parseMethod(;, null, null, null, null, null, ;, Instance of 'NoType', null, Foo, DeclarationKind.Class, Foo, false)
                 listener: beginMethod(null, null, null, null, null, Foo)
                 listener: handleNoType(;)
-                ensureIdentifier(;, methodDeclaration)
+                ensureIdentifierPotentiallyRecovered(;, methodDeclaration, false)
                   listener: handleIdentifier(Foo, methodDeclaration)
                 parseQualifiedRestOpt(Foo, methodDeclarationContinuation)
                   parseQualifiedRest(Foo, methodDeclarationContinuation)
@@ -583,10 +587,11 @@
                 listener: beginMetadataStar(Foo)
                 listener: endMetadataStar(0)
               listener: beginMember()
-              parseMethod(;, null, null, null, null, null, ;, Instance of 'NoType', null, Foo, DeclarationKind.Class, Foo)
+              isReservedKeyword(.)
+              parseMethod(;, null, null, null, null, null, ;, Instance of 'NoType', null, Foo, DeclarationKind.Class, Foo, false)
                 listener: beginMethod(null, null, null, null, null, Foo)
                 listener: handleNoType(;)
-                ensureIdentifier(;, methodDeclaration)
+                ensureIdentifierPotentiallyRecovered(;, methodDeclaration, false)
                   listener: handleIdentifier(Foo, methodDeclaration)
                 parseQualifiedRestOpt(Foo, methodDeclarationContinuation)
                   parseQualifiedRest(Foo, methodDeclarationContinuation)
diff --git a/pkg/front_end/parser_testcases/nnbd/issue_40834_02.dart.intertwined.expect b/pkg/front_end/parser_testcases/nnbd/issue_40834_02.dart.intertwined.expect
index edd176f..b87bd16 100644
--- a/pkg/front_end/parser_testcases/nnbd/issue_40834_02.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/nnbd/issue_40834_02.dart.intertwined.expect
@@ -32,11 +32,11 @@
                 listener: beginMetadataStar(String)
                 listener: endMetadataStar(0)
               listener: beginMember()
-              parseFields({, null, null, null, null, null, {, Instance of 'SimpleNullableType', x, DeclarationKind.Class, Foo)
+              parseFields({, null, null, null, null, null, {, Instance of 'SimpleNullableType', x, DeclarationKind.Class, Foo, false)
                 listener: handleIdentifier(String, typeReference)
                 listener: handleNoTypeArguments(?)
                 listener: handleType(String, ?)
-                ensureIdentifier(?, fieldDeclaration)
+                ensureIdentifierPotentiallyRecovered(?, fieldDeclaration, false)
                   listener: handleIdentifier(x, fieldDeclaration)
                 parseFieldInitializerOpt(x, x, null, null, DeclarationKind.Class, Foo)
                   listener: handleNoFieldInitializer(;)
@@ -48,11 +48,11 @@
                 listener: beginMetadataStar(int)
                 listener: endMetadataStar(0)
               listener: beginMember()
-              parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', y, DeclarationKind.Class, Foo)
+              parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', y, DeclarationKind.Class, Foo, false)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(y)
                 listener: handleType(int, null)
-                ensureIdentifier(int, fieldDeclaration)
+                ensureIdentifierPotentiallyRecovered(int, fieldDeclaration, false)
                   listener: handleIdentifier(y, fieldDeclaration)
                 parseFieldInitializerOpt(y, y, null, null, DeclarationKind.Class, Foo)
                   listener: handleNoFieldInitializer(;)
@@ -64,10 +64,11 @@
                 listener: beginMetadataStar(Foo)
                 listener: endMetadataStar(0)
               listener: beginMember()
-              parseMethod(;, null, null, null, null, null, ;, Instance of 'NoType', null, Foo, DeclarationKind.Class, Foo)
+              isReservedKeyword(()
+              parseMethod(;, null, null, null, null, null, ;, Instance of 'NoType', null, Foo, DeclarationKind.Class, Foo, false)
                 listener: beginMethod(null, null, null, null, null, Foo)
                 listener: handleNoType(;)
-                ensureIdentifier(;, methodDeclaration)
+                ensureIdentifierPotentiallyRecovered(;, methodDeclaration, false)
                   listener: handleIdentifier(Foo, methodDeclaration)
                 parseQualifiedRestOpt(Foo, methodDeclarationContinuation)
                 parseMethodTypeVar(Foo)
diff --git a/pkg/front_end/parser_testcases/nnbd/issue_40834_03.dart.intertwined.expect b/pkg/front_end/parser_testcases/nnbd/issue_40834_03.dart.intertwined.expect
index af51107..a2ada84 100644
--- a/pkg/front_end/parser_testcases/nnbd/issue_40834_03.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/nnbd/issue_40834_03.dart.intertwined.expect
@@ -32,11 +32,11 @@
                 listener: beginMetadataStar(String)
                 listener: endMetadataStar(0)
               listener: beginMember()
-              parseFields({, null, null, null, null, null, {, Instance of 'SimpleNullableType', x, DeclarationKind.Class, Foo)
+              parseFields({, null, null, null, null, null, {, Instance of 'SimpleNullableType', x, DeclarationKind.Class, Foo, false)
                 listener: handleIdentifier(String, typeReference)
                 listener: handleNoTypeArguments(?)
                 listener: handleType(String, ?)
-                ensureIdentifier(?, fieldDeclaration)
+                ensureIdentifierPotentiallyRecovered(?, fieldDeclaration, false)
                   listener: handleIdentifier(x, fieldDeclaration)
                 parseFieldInitializerOpt(x, x, null, null, DeclarationKind.Class, Foo)
                   listener: handleNoFieldInitializer(;)
@@ -48,11 +48,11 @@
                 listener: beginMetadataStar(int)
                 listener: endMetadataStar(0)
               listener: beginMember()
-              parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', y, DeclarationKind.Class, Foo)
+              parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', y, DeclarationKind.Class, Foo, false)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(y)
                 listener: handleType(int, null)
-                ensureIdentifier(int, fieldDeclaration)
+                ensureIdentifierPotentiallyRecovered(int, fieldDeclaration, false)
                   listener: handleIdentifier(y, fieldDeclaration)
                 parseFieldInitializerOpt(y, y, null, null, DeclarationKind.Class, Foo)
                   listener: handleNoFieldInitializer(;)
@@ -64,10 +64,11 @@
                 listener: beginMetadataStar(Foo)
                 listener: endMetadataStar(0)
               listener: beginMember()
-              parseMethod(;, null, null, null, null, null, ;, Instance of 'NoType', null, Foo, DeclarationKind.Class, Foo)
+              isReservedKeyword(()
+              parseMethod(;, null, null, null, null, null, ;, Instance of 'NoType', null, Foo, DeclarationKind.Class, Foo, false)
                 listener: beginMethod(null, null, null, null, null, Foo)
                 listener: handleNoType(;)
-                ensureIdentifier(;, methodDeclaration)
+                ensureIdentifierPotentiallyRecovered(;, methodDeclaration, false)
                   listener: handleIdentifier(Foo, methodDeclaration)
                 parseQualifiedRestOpt(Foo, methodDeclarationContinuation)
                 parseMethodTypeVar(Foo)
@@ -196,10 +197,10 @@
                 listener: beginMetadataStar(void)
                 listener: endMetadataStar(0)
               listener: beginMember()
-              parseMethod(;, null, null, null, null, null, ;, Instance of 'VoidType', null, foo, DeclarationKind.Class, Foo)
+              parseMethod(;, null, null, null, null, null, ;, Instance of 'VoidType', null, foo, DeclarationKind.Class, Foo, false)
                 listener: beginMethod(null, null, null, null, null, foo)
                 listener: handleVoidKeyword(void)
-                ensureIdentifier(void, methodDeclaration)
+                ensureIdentifierPotentiallyRecovered(void, methodDeclaration, false)
                   listener: handleIdentifier(foo, methodDeclaration)
                 parseQualifiedRestOpt(foo, methodDeclarationContinuation)
                 parseMethodTypeVar(foo)
@@ -335,10 +336,10 @@
                 listener: beginMetadataStar(void)
                 listener: endMetadataStar(0)
               listener: beginMember()
-              parseMethod(}, null, null, null, null, null, }, Instance of 'VoidType', null, bar, DeclarationKind.Class, Foo)
+              parseMethod(}, null, null, null, null, null, }, Instance of 'VoidType', null, bar, DeclarationKind.Class, Foo, false)
                 listener: beginMethod(null, null, null, null, null, bar)
                 listener: handleVoidKeyword(void)
-                ensureIdentifier(void, methodDeclaration)
+                ensureIdentifierPotentiallyRecovered(void, methodDeclaration, false)
                   listener: handleIdentifier(bar, methodDeclaration)
                 parseQualifiedRestOpt(bar, methodDeclarationContinuation)
                 parseMethodTypeVar(bar)
diff --git a/pkg/front_end/parser_testcases/nnbd/issue_41177.dart.intertwined.expect b/pkg/front_end/parser_testcases/nnbd/issue_41177.dart.intertwined.expect
index 963485a..b84966b 100644
--- a/pkg/front_end/parser_testcases/nnbd/issue_41177.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/nnbd/issue_41177.dart.intertwined.expect
@@ -8,10 +8,11 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl()
       listener: beginTopLevelMember(main)
-      parseTopLevelMethod(, null, , Instance of 'NoType', null, main)
+      isReservedKeyword(()
+      parseTopLevelMethod(, null, , Instance of 'NoType', null, main, false)
         listener: beginTopLevelMethod(, null)
         listener: handleNoType()
-        ensureIdentifier(, topLevelFunctionDeclaration)
+        ensureIdentifierPotentiallyRecovered(, topLevelFunctionDeclaration, false)
           listener: handleIdentifier(main, topLevelFunctionDeclaration)
         parseMethodTypeVar(main)
           listener: handleNoTypeVariables(()
diff --git a/pkg/front_end/parser_testcases/nnbd/issue_41597.dart.intertwined.expect b/pkg/front_end/parser_testcases/nnbd/issue_41597.dart.intertwined.expect
index ac4681d..0aa114d 100644
--- a/pkg/front_end/parser_testcases/nnbd/issue_41597.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/nnbd/issue_41597.dart.intertwined.expect
@@ -8,11 +8,11 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl()
       listener: beginTopLevelMember(bool)
-      parseFields(, null, null, null, null, null, , Instance of 'SimpleType', x, DeclarationKind.TopLevel, null)
+      parseFields(, null, null, null, null, null, , Instance of 'SimpleType', x, DeclarationKind.TopLevel, null, false)
         listener: handleIdentifier(bool, typeReference)
         listener: handleNoTypeArguments(x)
         listener: handleType(bool, null)
-        ensureIdentifier(bool, topLevelVariableDeclaration)
+        ensureIdentifierPotentiallyRecovered(bool, topLevelVariableDeclaration, false)
           listener: handleIdentifier(x, topLevelVariableDeclaration)
         parseFieldInitializerOpt(x, x, null, null, DeclarationKind.TopLevel, null)
           listener: handleNoFieldInitializer(;)
@@ -24,11 +24,11 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(bool)
-      parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', x, DeclarationKind.TopLevel, null)
+      parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', x, DeclarationKind.TopLevel, null, false)
         listener: handleIdentifier(bool, typeReference)
         listener: handleNoTypeArguments(x)
         listener: handleType(bool, null)
-        ensureIdentifier(bool, topLevelVariableDeclaration)
+        ensureIdentifierPotentiallyRecovered(bool, topLevelVariableDeclaration, false)
           listener: handleIdentifier(x, topLevelVariableDeclaration)
         parseFieldInitializerOpt(x, x, null, null, DeclarationKind.TopLevel, null)
           listener: handleNoFieldInitializer(;)
@@ -40,10 +40,11 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(errors)
-      parseTopLevelMethod(;, null, ;, Instance of 'NoType', null, errors)
+      isReservedKeyword(()
+      parseTopLevelMethod(;, null, ;, Instance of 'NoType', null, errors, false)
         listener: beginTopLevelMethod(;, null)
         listener: handleNoType(;)
-        ensureIdentifier(;, topLevelFunctionDeclaration)
+        ensureIdentifierPotentiallyRecovered(;, topLevelFunctionDeclaration, false)
           listener: handleIdentifier(errors, topLevelFunctionDeclaration)
         parseMethodTypeVar(errors)
           listener: handleNoTypeVariables(()
@@ -203,10 +204,11 @@
                 listener: beginMetadataStar(C)
                 listener: endMetadataStar(0)
               listener: beginMember()
-              parseMethod({, null, null, null, null, null, {, Instance of 'NoType', null, C, DeclarationKind.Class, C)
+              isReservedKeyword(.)
+              parseMethod({, null, null, null, null, null, {, Instance of 'NoType', null, C, DeclarationKind.Class, C, false)
                 listener: beginMethod(null, null, null, null, null, C)
                 listener: handleNoType({)
-                ensureIdentifier({, methodDeclaration)
+                ensureIdentifierPotentiallyRecovered({, methodDeclaration, false)
                   listener: handleIdentifier(C, methodDeclaration)
                 parseQualifiedRestOpt(C, methodDeclarationContinuation)
                   parseQualifiedRest(C, methodDeclarationContinuation)
@@ -255,10 +257,11 @@
                 listener: beginMetadataStar(C)
                 listener: endMetadataStar(0)
               listener: beginMember()
-              parseMethod(;, null, null, null, null, null, ;, Instance of 'NoType', null, C, DeclarationKind.Class, C)
+              isReservedKeyword(.)
+              parseMethod(;, null, null, null, null, null, ;, Instance of 'NoType', null, C, DeclarationKind.Class, C, false)
                 listener: beginMethod(null, null, null, null, null, C)
                 listener: handleNoType(;)
-                ensureIdentifier(;, methodDeclaration)
+                ensureIdentifierPotentiallyRecovered(;, methodDeclaration, false)
                   listener: handleIdentifier(C, methodDeclaration)
                 parseQualifiedRestOpt(C, methodDeclarationContinuation)
                   parseQualifiedRest(C, methodDeclarationContinuation)
@@ -312,10 +315,11 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl(})
       listener: beginTopLevelMember(main)
-      parseTopLevelMethod(}, null, }, Instance of 'NoType', null, main)
+      isReservedKeyword(()
+      parseTopLevelMethod(}, null, }, Instance of 'NoType', null, main, false)
         listener: beginTopLevelMethod(}, null)
         listener: handleNoType(})
-        ensureIdentifier(}, topLevelFunctionDeclaration)
+        ensureIdentifierPotentiallyRecovered(}, topLevelFunctionDeclaration, false)
           listener: handleIdentifier(main, topLevelFunctionDeclaration)
         parseMethodTypeVar(main)
           listener: handleNoTypeVariables(()
diff --git a/pkg/front_end/parser_testcases/nnbd/late_member.dart.intertwined.expect b/pkg/front_end/parser_testcases/nnbd/late_member.dart.intertwined.expect
index f46dc4c..ca211fe 100644
--- a/pkg/front_end/parser_testcases/nnbd/late_member.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/nnbd/late_member.dart.intertwined.expect
@@ -8,10 +8,11 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl()
       listener: beginTopLevelMember(main)
-      parseTopLevelMethod(, null, , Instance of 'NoType', null, main)
+      isReservedKeyword(()
+      parseTopLevelMethod(, null, , Instance of 'NoType', null, main, false)
         listener: beginTopLevelMethod(, null)
         listener: handleNoType()
-        ensureIdentifier(, topLevelFunctionDeclaration)
+        ensureIdentifierPotentiallyRecovered(, topLevelFunctionDeclaration, false)
           listener: handleIdentifier(main, topLevelFunctionDeclaration)
         parseMethodTypeVar(main)
           listener: handleNoTypeVariables(()
@@ -256,10 +257,11 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl(})
       listener: beginTopLevelMember(late)
-      parseTopLevelMethod(}, null, }, Instance of 'NoType', null, late)
+      isReservedKeyword(()
+      parseTopLevelMethod(}, null, }, Instance of 'NoType', null, late, false)
         listener: beginTopLevelMethod(}, null)
         listener: handleNoType(})
-        ensureIdentifier(}, topLevelFunctionDeclaration)
+        ensureIdentifierPotentiallyRecovered(}, topLevelFunctionDeclaration, false)
           listener: handleIdentifier(late, topLevelFunctionDeclaration)
         parseMethodTypeVar(late)
           listener: handleNoTypeVariables(()
@@ -339,10 +341,10 @@
                 listener: beginMetadataStar(late)
                 listener: endMetadataStar(0)
               listener: beginMember()
-              parseMethod({, null, null, null, null, null, {, Instance of 'NoType', null, late, DeclarationKind.Class, X)
+              parseMethod({, null, null, null, null, null, {, Instance of 'NoType', null, late, DeclarationKind.Class, X, false)
                 listener: beginMethod(null, null, null, null, null, late)
                 listener: handleNoType({)
-                ensureIdentifier({, methodDeclaration)
+                ensureIdentifierPotentiallyRecovered({, methodDeclaration, false)
                   listener: handleIdentifier(late, methodDeclaration)
                 parseQualifiedRestOpt(late, methodDeclarationContinuation)
                 parseMethodTypeVar(late)
@@ -430,11 +432,11 @@
                 listener: beginMetadataStar(int)
                 listener: endMetadataStar(0)
               listener: beginMember()
-              parseFields({, null, null, null, null, null, {, Instance of 'SimpleType', late, DeclarationKind.Class, Y)
+              parseFields({, null, null, null, null, null, {, Instance of 'SimpleType', late, DeclarationKind.Class, Y, false)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(late)
                 listener: handleType(int, null)
-                ensureIdentifier(int, fieldDeclaration)
+                ensureIdentifierPotentiallyRecovered(int, fieldDeclaration, false)
                   listener: handleIdentifier(late, fieldDeclaration)
                 parseFieldInitializerOpt(late, late, null, null, DeclarationKind.Class, Y)
                   listener: beginFieldInitializer(=)
diff --git a/pkg/front_end/parser_testcases/nnbd/late_modifier.dart.intertwined.expect b/pkg/front_end/parser_testcases/nnbd/late_modifier.dart.intertwined.expect
index b9a8365..2fecad0 100644
--- a/pkg/front_end/parser_testcases/nnbd/late_modifier.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/nnbd/late_modifier.dart.intertwined.expect
@@ -8,10 +8,11 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl()
       listener: beginTopLevelMember(main)
-      parseTopLevelMethod(, null, , Instance of 'NoType', null, main)
+      isReservedKeyword(()
+      parseTopLevelMethod(, null, , Instance of 'NoType', null, main, false)
         listener: beginTopLevelMethod(, null)
         listener: handleNoType()
-        ensureIdentifier(, topLevelFunctionDeclaration)
+        ensureIdentifierPotentiallyRecovered(, topLevelFunctionDeclaration, false)
           listener: handleIdentifier(main, topLevelFunctionDeclaration)
         parseMethodTypeVar(main)
           listener: handleNoTypeVariables(()
@@ -304,10 +305,11 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl(})
       listener: beginTopLevelMember(late)
-      parseTopLevelMethod(}, null, }, Instance of 'NoType', null, late)
+      isReservedKeyword(()
+      parseTopLevelMethod(}, null, }, Instance of 'NoType', null, late, false)
         listener: beginTopLevelMethod(}, null)
         listener: handleNoType(})
-        ensureIdentifier(}, topLevelFunctionDeclaration)
+        ensureIdentifierPotentiallyRecovered(}, topLevelFunctionDeclaration, false)
           listener: handleIdentifier(late, topLevelFunctionDeclaration)
         parseMethodTypeVar(late)
           listener: handleNoTypeVariables(()
@@ -387,10 +389,10 @@
                 listener: beginMetadataStar(late)
                 listener: endMetadataStar(0)
               listener: beginMember()
-              parseMethod({, null, null, null, null, null, {, Instance of 'NoType', null, late, DeclarationKind.Class, X)
+              parseMethod({, null, null, null, null, null, {, Instance of 'NoType', null, late, DeclarationKind.Class, X, false)
                 listener: beginMethod(null, null, null, null, null, late)
                 listener: handleNoType({)
-                ensureIdentifier({, methodDeclaration)
+                ensureIdentifierPotentiallyRecovered({, methodDeclaration, false)
                   listener: handleIdentifier(late, methodDeclaration)
                 parseQualifiedRestOpt(late, methodDeclarationContinuation)
                 parseMethodTypeVar(late)
@@ -478,11 +480,11 @@
                 listener: beginMetadataStar(int)
                 listener: endMetadataStar(0)
               listener: beginMember()
-              parseFields({, null, null, null, null, null, {, Instance of 'SimpleType', late, DeclarationKind.Class, Y)
+              parseFields({, null, null, null, null, null, {, Instance of 'SimpleType', late, DeclarationKind.Class, Y, false)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(late)
                 listener: handleType(int, null)
-                ensureIdentifier(int, fieldDeclaration)
+                ensureIdentifierPotentiallyRecovered(int, fieldDeclaration, false)
                   listener: handleIdentifier(late, fieldDeclaration)
                 parseFieldInitializerOpt(late, late, null, null, DeclarationKind.Class, Y)
                   listener: beginFieldInitializer(=)
diff --git a/pkg/front_end/parser_testcases/nnbd/nullCheckBeforeIndex.dart.intertwined.expect b/pkg/front_end/parser_testcases/nnbd/nullCheckBeforeIndex.dart.intertwined.expect
index 7d205bd..d874387 100644
--- a/pkg/front_end/parser_testcases/nnbd/nullCheckBeforeIndex.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/nnbd/nullCheckBeforeIndex.dart.intertwined.expect
@@ -8,10 +8,11 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl()
       listener: beginTopLevelMember(f)
-      parseTopLevelMethod(, null, , Instance of 'NoType', null, f)
+      isReservedKeyword(()
+      parseTopLevelMethod(, null, , Instance of 'NoType', null, f, false)
         listener: beginTopLevelMethod(, null)
         listener: handleNoType()
-        ensureIdentifier(, topLevelFunctionDeclaration)
+        ensureIdentifierPotentiallyRecovered(, topLevelFunctionDeclaration, false)
           listener: handleIdentifier(f, topLevelFunctionDeclaration)
         parseMethodTypeVar(f)
           listener: handleNoTypeVariables(()
diff --git a/pkg/front_end/parser_testcases/nnbd/nullCheckBeforeIndex_with_parens.dart.intertwined.expect b/pkg/front_end/parser_testcases/nnbd/nullCheckBeforeIndex_with_parens.dart.intertwined.expect
index 18176ea..ab2b8a7 100644
--- a/pkg/front_end/parser_testcases/nnbd/nullCheckBeforeIndex_with_parens.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/nnbd/nullCheckBeforeIndex_with_parens.dart.intertwined.expect
@@ -8,10 +8,11 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl()
       listener: beginTopLevelMember(f)
-      parseTopLevelMethod(, null, , Instance of 'NoType', null, f)
+      isReservedKeyword(()
+      parseTopLevelMethod(, null, , Instance of 'NoType', null, f, false)
         listener: beginTopLevelMethod(, null)
         listener: handleNoType()
-        ensureIdentifier(, topLevelFunctionDeclaration)
+        ensureIdentifierPotentiallyRecovered(, topLevelFunctionDeclaration, false)
           listener: handleIdentifier(f, topLevelFunctionDeclaration)
         parseMethodTypeVar(f)
           listener: handleNoTypeVariables(()
diff --git a/pkg/front_end/parser_testcases/nnbd/nullCheckOnIndex.dart.intertwined.expect b/pkg/front_end/parser_testcases/nnbd/nullCheckOnIndex.dart.intertwined.expect
index 61327aa..df31e84 100644
--- a/pkg/front_end/parser_testcases/nnbd/nullCheckOnIndex.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/nnbd/nullCheckOnIndex.dart.intertwined.expect
@@ -8,10 +8,11 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl()
       listener: beginTopLevelMember(f)
-      parseTopLevelMethod(, null, , Instance of 'NoType', null, f)
+      isReservedKeyword(()
+      parseTopLevelMethod(, null, , Instance of 'NoType', null, f, false)
         listener: beginTopLevelMethod(, null)
         listener: handleNoType()
-        ensureIdentifier(, topLevelFunctionDeclaration)
+        ensureIdentifierPotentiallyRecovered(, topLevelFunctionDeclaration, false)
           listener: handleIdentifier(f, topLevelFunctionDeclaration)
         parseMethodTypeVar(f)
           listener: handleNoTypeVariables(()
diff --git a/pkg/front_end/parser_testcases/nnbd/nullCheckOnIndex2.dart.intertwined.expect b/pkg/front_end/parser_testcases/nnbd/nullCheckOnIndex2.dart.intertwined.expect
index 00c6fda..61e8220 100644
--- a/pkg/front_end/parser_testcases/nnbd/nullCheckOnIndex2.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/nnbd/nullCheckOnIndex2.dart.intertwined.expect
@@ -8,10 +8,11 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl()
       listener: beginTopLevelMember(f)
-      parseTopLevelMethod(, null, , Instance of 'NoType', null, f)
+      isReservedKeyword(()
+      parseTopLevelMethod(, null, , Instance of 'NoType', null, f, false)
         listener: beginTopLevelMethod(, null)
         listener: handleNoType()
-        ensureIdentifier(, topLevelFunctionDeclaration)
+        ensureIdentifierPotentiallyRecovered(, topLevelFunctionDeclaration, false)
           listener: handleIdentifier(f, topLevelFunctionDeclaration)
         parseMethodTypeVar(f)
           listener: handleNoTypeVariables(()
diff --git a/pkg/front_end/parser_testcases/nnbd/nullCheckOnIndex2_with_parens.dart.intertwined.expect b/pkg/front_end/parser_testcases/nnbd/nullCheckOnIndex2_with_parens.dart.intertwined.expect
index 74c86bd..a98f8df 100644
--- a/pkg/front_end/parser_testcases/nnbd/nullCheckOnIndex2_with_parens.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/nnbd/nullCheckOnIndex2_with_parens.dart.intertwined.expect
@@ -8,10 +8,11 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl()
       listener: beginTopLevelMember(f)
-      parseTopLevelMethod(, null, , Instance of 'NoType', null, f)
+      isReservedKeyword(()
+      parseTopLevelMethod(, null, , Instance of 'NoType', null, f, false)
         listener: beginTopLevelMethod(, null)
         listener: handleNoType()
-        ensureIdentifier(, topLevelFunctionDeclaration)
+        ensureIdentifierPotentiallyRecovered(, topLevelFunctionDeclaration, false)
           listener: handleIdentifier(f, topLevelFunctionDeclaration)
         parseMethodTypeVar(f)
           listener: handleNoTypeVariables(()
diff --git a/pkg/front_end/parser_testcases/nnbd/nullCheckOnIndex3.dart.intertwined.expect b/pkg/front_end/parser_testcases/nnbd/nullCheckOnIndex3.dart.intertwined.expect
index d358a3a..927470a 100644
--- a/pkg/front_end/parser_testcases/nnbd/nullCheckOnIndex3.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/nnbd/nullCheckOnIndex3.dart.intertwined.expect
@@ -8,10 +8,11 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl()
       listener: beginTopLevelMember(f)
-      parseTopLevelMethod(, null, , Instance of 'NoType', null, f)
+      isReservedKeyword(()
+      parseTopLevelMethod(, null, , Instance of 'NoType', null, f, false)
         listener: beginTopLevelMethod(, null)
         listener: handleNoType()
-        ensureIdentifier(, topLevelFunctionDeclaration)
+        ensureIdentifierPotentiallyRecovered(, topLevelFunctionDeclaration, false)
           listener: handleIdentifier(f, topLevelFunctionDeclaration)
         parseMethodTypeVar(f)
           listener: handleNoTypeVariables(()
diff --git a/pkg/front_end/parser_testcases/nnbd/nullCheckOnIndex3_with_parens.dart.intertwined.expect b/pkg/front_end/parser_testcases/nnbd/nullCheckOnIndex3_with_parens.dart.intertwined.expect
index 68124f6..eac1369 100644
--- a/pkg/front_end/parser_testcases/nnbd/nullCheckOnIndex3_with_parens.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/nnbd/nullCheckOnIndex3_with_parens.dart.intertwined.expect
@@ -8,10 +8,11 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl()
       listener: beginTopLevelMember(f)
-      parseTopLevelMethod(, null, , Instance of 'NoType', null, f)
+      isReservedKeyword(()
+      parseTopLevelMethod(, null, , Instance of 'NoType', null, f, false)
         listener: beginTopLevelMethod(, null)
         listener: handleNoType()
-        ensureIdentifier(, topLevelFunctionDeclaration)
+        ensureIdentifierPotentiallyRecovered(, topLevelFunctionDeclaration, false)
           listener: handleIdentifier(f, topLevelFunctionDeclaration)
         parseMethodTypeVar(f)
           listener: handleNoTypeVariables(()
diff --git a/pkg/front_end/parser_testcases/nnbd/nullCheckOnIndex4.dart.intertwined.expect b/pkg/front_end/parser_testcases/nnbd/nullCheckOnIndex4.dart.intertwined.expect
index 1ab5bd1..728bae3 100644
--- a/pkg/front_end/parser_testcases/nnbd/nullCheckOnIndex4.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/nnbd/nullCheckOnIndex4.dart.intertwined.expect
@@ -8,10 +8,11 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl()
       listener: beginTopLevelMember(f)
-      parseTopLevelMethod(, null, , Instance of 'NoType', null, f)
+      isReservedKeyword(()
+      parseTopLevelMethod(, null, , Instance of 'NoType', null, f, false)
         listener: beginTopLevelMethod(, null)
         listener: handleNoType()
-        ensureIdentifier(, topLevelFunctionDeclaration)
+        ensureIdentifierPotentiallyRecovered(, topLevelFunctionDeclaration, false)
           listener: handleIdentifier(f, topLevelFunctionDeclaration)
         parseMethodTypeVar(f)
           listener: handleNoTypeVariables(()
diff --git a/pkg/front_end/parser_testcases/nnbd/nullCheckOnIndex4_with_parens.dart.intertwined.expect b/pkg/front_end/parser_testcases/nnbd/nullCheckOnIndex4_with_parens.dart.intertwined.expect
index 5375e8a..d1e5df3 100644
--- a/pkg/front_end/parser_testcases/nnbd/nullCheckOnIndex4_with_parens.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/nnbd/nullCheckOnIndex4_with_parens.dart.intertwined.expect
@@ -8,10 +8,11 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl()
       listener: beginTopLevelMember(f)
-      parseTopLevelMethod(, null, , Instance of 'NoType', null, f)
+      isReservedKeyword(()
+      parseTopLevelMethod(, null, , Instance of 'NoType', null, f, false)
         listener: beginTopLevelMethod(, null)
         listener: handleNoType()
-        ensureIdentifier(, topLevelFunctionDeclaration)
+        ensureIdentifierPotentiallyRecovered(, topLevelFunctionDeclaration, false)
           listener: handleIdentifier(f, topLevelFunctionDeclaration)
         parseMethodTypeVar(f)
           listener: handleNoTypeVariables(()
diff --git a/pkg/front_end/parser_testcases/nnbd/nullCheckOnIndex5.dart.intertwined.expect b/pkg/front_end/parser_testcases/nnbd/nullCheckOnIndex5.dart.intertwined.expect
index ab5b6f2..211e2d3 100644
--- a/pkg/front_end/parser_testcases/nnbd/nullCheckOnIndex5.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/nnbd/nullCheckOnIndex5.dart.intertwined.expect
@@ -8,10 +8,11 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl()
       listener: beginTopLevelMember(f)
-      parseTopLevelMethod(, null, , Instance of 'NoType', null, f)
+      isReservedKeyword(()
+      parseTopLevelMethod(, null, , Instance of 'NoType', null, f, false)
         listener: beginTopLevelMethod(, null)
         listener: handleNoType()
-        ensureIdentifier(, topLevelFunctionDeclaration)
+        ensureIdentifierPotentiallyRecovered(, topLevelFunctionDeclaration, false)
           listener: handleIdentifier(f, topLevelFunctionDeclaration)
         parseMethodTypeVar(f)
           listener: handleNoTypeVariables(()
diff --git a/pkg/front_end/parser_testcases/nnbd/nullCheckOnIndex5_with_parens.dart.intertwined.expect b/pkg/front_end/parser_testcases/nnbd/nullCheckOnIndex5_with_parens.dart.intertwined.expect
index ea2e9f1..a61f951 100644
--- a/pkg/front_end/parser_testcases/nnbd/nullCheckOnIndex5_with_parens.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/nnbd/nullCheckOnIndex5_with_parens.dart.intertwined.expect
@@ -8,10 +8,11 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl()
       listener: beginTopLevelMember(f)
-      parseTopLevelMethod(, null, , Instance of 'NoType', null, f)
+      isReservedKeyword(()
+      parseTopLevelMethod(, null, , Instance of 'NoType', null, f, false)
         listener: beginTopLevelMethod(, null)
         listener: handleNoType()
-        ensureIdentifier(, topLevelFunctionDeclaration)
+        ensureIdentifierPotentiallyRecovered(, topLevelFunctionDeclaration, false)
           listener: handleIdentifier(f, topLevelFunctionDeclaration)
         parseMethodTypeVar(f)
           listener: handleNoTypeVariables(()
diff --git a/pkg/front_end/parser_testcases/nnbd/nullCheckOnIndex6.dart.intertwined.expect b/pkg/front_end/parser_testcases/nnbd/nullCheckOnIndex6.dart.intertwined.expect
index 8ea0162..219e830 100644
--- a/pkg/front_end/parser_testcases/nnbd/nullCheckOnIndex6.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/nnbd/nullCheckOnIndex6.dart.intertwined.expect
@@ -8,10 +8,11 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl()
       listener: beginTopLevelMember(f)
-      parseTopLevelMethod(, null, , Instance of 'NoType', null, f)
+      isReservedKeyword(()
+      parseTopLevelMethod(, null, , Instance of 'NoType', null, f, false)
         listener: beginTopLevelMethod(, null)
         listener: handleNoType()
-        ensureIdentifier(, topLevelFunctionDeclaration)
+        ensureIdentifierPotentiallyRecovered(, topLevelFunctionDeclaration, false)
           listener: handleIdentifier(f, topLevelFunctionDeclaration)
         parseMethodTypeVar(f)
           listener: handleNoTypeVariables(()
diff --git a/pkg/front_end/parser_testcases/nnbd/nullCheckOnIndex6_with_parens.dart.intertwined.expect b/pkg/front_end/parser_testcases/nnbd/nullCheckOnIndex6_with_parens.dart.intertwined.expect
index 768982e..3e57f89 100644
--- a/pkg/front_end/parser_testcases/nnbd/nullCheckOnIndex6_with_parens.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/nnbd/nullCheckOnIndex6_with_parens.dart.intertwined.expect
@@ -8,10 +8,11 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl()
       listener: beginTopLevelMember(f)
-      parseTopLevelMethod(, null, , Instance of 'NoType', null, f)
+      isReservedKeyword(()
+      parseTopLevelMethod(, null, , Instance of 'NoType', null, f, false)
         listener: beginTopLevelMethod(, null)
         listener: handleNoType()
-        ensureIdentifier(, topLevelFunctionDeclaration)
+        ensureIdentifierPotentiallyRecovered(, topLevelFunctionDeclaration, false)
           listener: handleIdentifier(f, topLevelFunctionDeclaration)
         parseMethodTypeVar(f)
           listener: handleNoTypeVariables(()
diff --git a/pkg/front_end/parser_testcases/nnbd/nullCheckOnIndex_with_parens.dart.intertwined.expect b/pkg/front_end/parser_testcases/nnbd/nullCheckOnIndex_with_parens.dart.intertwined.expect
index ca0a67a..355789f 100644
--- a/pkg/front_end/parser_testcases/nnbd/nullCheckOnIndex_with_parens.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/nnbd/nullCheckOnIndex_with_parens.dart.intertwined.expect
@@ -8,10 +8,11 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl()
       listener: beginTopLevelMember(f)
-      parseTopLevelMethod(, null, , Instance of 'NoType', null, f)
+      isReservedKeyword(()
+      parseTopLevelMethod(, null, , Instance of 'NoType', null, f, false)
         listener: beginTopLevelMethod(, null)
         listener: handleNoType()
-        ensureIdentifier(, topLevelFunctionDeclaration)
+        ensureIdentifierPotentiallyRecovered(, topLevelFunctionDeclaration, false)
           listener: handleIdentifier(f, topLevelFunctionDeclaration)
         parseMethodTypeVar(f)
           listener: handleNoTypeVariables(()
diff --git a/pkg/front_end/parser_testcases/nnbd/null_shorting_index.dart.intertwined.expect b/pkg/front_end/parser_testcases/nnbd/null_shorting_index.dart.intertwined.expect
index 314ae49..d6e66a9 100644
--- a/pkg/front_end/parser_testcases/nnbd/null_shorting_index.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/nnbd/null_shorting_index.dart.intertwined.expect
@@ -32,7 +32,7 @@
                 listener: beginMetadataStar(int)
                 listener: endMetadataStar(0)
               listener: beginMember()
-              parseMethod({, null, null, null, null, null, {, Instance of 'SimpleType', null, operator, DeclarationKind.Class, Class1)
+              parseMethod({, null, null, null, null, null, {, Instance of 'SimpleType', null, operator, DeclarationKind.Class, Class1, false)
                 listener: beginMethod(null, null, null, null, null, operator)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(operator)
@@ -89,7 +89,7 @@
                 listener: beginMetadataStar(void)
                 listener: endMetadataStar(0)
               listener: beginMember()
-              parseMethod(;, null, null, null, null, null, ;, Instance of 'VoidType', null, operator, DeclarationKind.Class, Class1)
+              parseMethod(;, null, null, null, null, null, ;, Instance of 'VoidType', null, operator, DeclarationKind.Class, Class1, false)
                 listener: beginMethod(null, null, null, null, null, operator)
                 listener: handleVoidKeyword(void)
                 parseOperatorName(void)
@@ -147,10 +147,11 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl(})
       listener: beginTopLevelMember(main)
-      parseTopLevelMethod(}, null, }, Instance of 'NoType', null, main)
+      isReservedKeyword(()
+      parseTopLevelMethod(}, null, }, Instance of 'NoType', null, main, false)
         listener: beginTopLevelMethod(}, null)
         listener: handleNoType(})
-        ensureIdentifier(}, topLevelFunctionDeclaration)
+        ensureIdentifierPotentiallyRecovered(}, topLevelFunctionDeclaration, false)
           listener: handleIdentifier(main, topLevelFunctionDeclaration)
         parseMethodTypeVar(main)
           listener: handleNoTypeVariables(()
diff --git a/pkg/front_end/parser_testcases/nnbd/required_member.dart.intertwined.expect b/pkg/front_end/parser_testcases/nnbd/required_member.dart.intertwined.expect
index dcfdb41..993b8d5 100644
--- a/pkg/front_end/parser_testcases/nnbd/required_member.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/nnbd/required_member.dart.intertwined.expect
@@ -8,10 +8,11 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl()
       listener: beginTopLevelMember(main)
-      parseTopLevelMethod(, null, , Instance of 'NoType', null, main)
+      isReservedKeyword(()
+      parseTopLevelMethod(, null, , Instance of 'NoType', null, main, false)
         listener: beginTopLevelMethod(, null)
         listener: handleNoType()
-        ensureIdentifier(, topLevelFunctionDeclaration)
+        ensureIdentifierPotentiallyRecovered(, topLevelFunctionDeclaration, false)
           listener: handleIdentifier(main, topLevelFunctionDeclaration)
         parseMethodTypeVar(main)
           listener: handleNoTypeVariables(()
@@ -256,10 +257,11 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl(})
       listener: beginTopLevelMember(required)
-      parseTopLevelMethod(}, null, }, Instance of 'NoType', null, required)
+      isReservedKeyword(()
+      parseTopLevelMethod(}, null, }, Instance of 'NoType', null, required, false)
         listener: beginTopLevelMethod(}, null)
         listener: handleNoType(})
-        ensureIdentifier(}, topLevelFunctionDeclaration)
+        ensureIdentifierPotentiallyRecovered(}, topLevelFunctionDeclaration, false)
           listener: handleIdentifier(required, topLevelFunctionDeclaration)
         parseMethodTypeVar(required)
           listener: handleNoTypeVariables(()
@@ -339,10 +341,10 @@
                 listener: beginMetadataStar(required)
                 listener: endMetadataStar(0)
               listener: beginMember()
-              parseMethod({, null, null, null, null, null, {, Instance of 'NoType', null, required, DeclarationKind.Class, X)
+              parseMethod({, null, null, null, null, null, {, Instance of 'NoType', null, required, DeclarationKind.Class, X, false)
                 listener: beginMethod(null, null, null, null, null, required)
                 listener: handleNoType({)
-                ensureIdentifier({, methodDeclaration)
+                ensureIdentifierPotentiallyRecovered({, methodDeclaration, false)
                   listener: handleIdentifier(required, methodDeclaration)
                 parseQualifiedRestOpt(required, methodDeclarationContinuation)
                 parseMethodTypeVar(required)
@@ -430,11 +432,11 @@
                 listener: beginMetadataStar(int)
                 listener: endMetadataStar(0)
               listener: beginMember()
-              parseFields({, null, null, null, null, null, {, Instance of 'SimpleType', required, DeclarationKind.Class, Y)
+              parseFields({, null, null, null, null, null, {, Instance of 'SimpleType', required, DeclarationKind.Class, Y, false)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(required)
                 listener: handleType(int, null)
-                ensureIdentifier(int, fieldDeclaration)
+                ensureIdentifierPotentiallyRecovered(int, fieldDeclaration, false)
                   listener: handleIdentifier(required, fieldDeclaration)
                 parseFieldInitializerOpt(required, required, null, null, DeclarationKind.Class, Y)
                   listener: beginFieldInitializer(=)
diff --git a/pkg/front_end/parser_testcases/nnbd/required_modifier.dart.intertwined.expect b/pkg/front_end/parser_testcases/nnbd/required_modifier.dart.intertwined.expect
index 7375567..a8ff973 100644
--- a/pkg/front_end/parser_testcases/nnbd/required_modifier.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/nnbd/required_modifier.dart.intertwined.expect
@@ -8,10 +8,11 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl()
       listener: beginTopLevelMember(main)
-      parseTopLevelMethod(, null, , Instance of 'NoType', null, main)
+      isReservedKeyword(()
+      parseTopLevelMethod(, null, , Instance of 'NoType', null, main, false)
         listener: beginTopLevelMethod(, null)
         listener: handleNoType()
-        ensureIdentifier(, topLevelFunctionDeclaration)
+        ensureIdentifierPotentiallyRecovered(, topLevelFunctionDeclaration, false)
           listener: handleIdentifier(main, topLevelFunctionDeclaration)
         parseMethodTypeVar(main)
           listener: handleNoTypeVariables(()
@@ -256,10 +257,11 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl(})
       listener: beginTopLevelMember(required)
-      parseTopLevelMethod(}, null, }, Instance of 'NoType', null, required)
+      isReservedKeyword(()
+      parseTopLevelMethod(}, null, }, Instance of 'NoType', null, required, false)
         listener: beginTopLevelMethod(}, null)
         listener: handleNoType(})
-        ensureIdentifier(}, topLevelFunctionDeclaration)
+        ensureIdentifierPotentiallyRecovered(}, topLevelFunctionDeclaration, false)
           listener: handleIdentifier(required, topLevelFunctionDeclaration)
         parseMethodTypeVar(required)
           listener: handleNoTypeVariables(()
@@ -355,10 +357,10 @@
                 listener: beginMetadataStar(required)
                 listener: endMetadataStar(0)
               listener: beginMember()
-              parseMethod({, null, null, null, null, null, {, Instance of 'NoType', null, required, DeclarationKind.Class, X)
+              parseMethod({, null, null, null, null, null, {, Instance of 'NoType', null, required, DeclarationKind.Class, X, false)
                 listener: beginMethod(null, null, null, null, null, required)
                 listener: handleNoType({)
-                ensureIdentifier({, methodDeclaration)
+                ensureIdentifierPotentiallyRecovered({, methodDeclaration, false)
                   listener: handleIdentifier(required, methodDeclaration)
                 parseQualifiedRestOpt(required, methodDeclarationContinuation)
                 parseMethodTypeVar(required)
@@ -446,11 +448,11 @@
                 listener: beginMetadataStar(int)
                 listener: endMetadataStar(0)
               listener: beginMember()
-              parseFields({, null, null, null, null, null, {, Instance of 'SimpleType', required, DeclarationKind.Class, Y)
+              parseFields({, null, null, null, null, null, {, Instance of 'SimpleType', required, DeclarationKind.Class, Y, false)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(required)
                 listener: handleType(int, null)
-                ensureIdentifier(int, fieldDeclaration)
+                ensureIdentifierPotentiallyRecovered(int, fieldDeclaration, false)
                   listener: handleIdentifier(required, fieldDeclaration)
                 parseFieldInitializerOpt(required, required, null, null, DeclarationKind.Class, Y)
                   listener: beginFieldInitializer(=)
diff --git a/pkg/front_end/parser_testcases/non-nnbd/issue_39326.dart.intertwined.expect b/pkg/front_end/parser_testcases/non-nnbd/issue_39326.dart.intertwined.expect
index d5b5a6b..35d43d6 100644
--- a/pkg/front_end/parser_testcases/non-nnbd/issue_39326.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/non-nnbd/issue_39326.dart.intertwined.expect
@@ -8,10 +8,11 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl()
       listener: beginTopLevelMember(main)
-      parseTopLevelMethod(, null, , Instance of 'NoType', null, main)
+      isReservedKeyword(()
+      parseTopLevelMethod(, null, , Instance of 'NoType', null, main, false)
         listener: beginTopLevelMethod(, null)
         listener: handleNoType()
-        ensureIdentifier(, topLevelFunctionDeclaration)
+        ensureIdentifierPotentiallyRecovered(, topLevelFunctionDeclaration, false)
           listener: handleIdentifier(main, topLevelFunctionDeclaration)
         parseMethodTypeVar(main)
           listener: handleNoTypeVariables(()
diff --git a/pkg/front_end/parser_testcases/non-nnbd/issue_40267_conditional.dart.intertwined.expect b/pkg/front_end/parser_testcases/non-nnbd/issue_40267_conditional.dart.intertwined.expect
index 7d4e907..6761e0c 100644
--- a/pkg/front_end/parser_testcases/non-nnbd/issue_40267_conditional.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/non-nnbd/issue_40267_conditional.dart.intertwined.expect
@@ -8,10 +8,11 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl()
       listener: beginTopLevelMember(f)
-      parseTopLevelMethod(, null, , Instance of 'NoType', null, f)
+      isReservedKeyword(()
+      parseTopLevelMethod(, null, , Instance of 'NoType', null, f, false)
         listener: beginTopLevelMethod(, null)
         listener: handleNoType()
-        ensureIdentifier(, topLevelFunctionDeclaration)
+        ensureIdentifierPotentiallyRecovered(, topLevelFunctionDeclaration, false)
           listener: handleIdentifier(f, topLevelFunctionDeclaration)
         parseMethodTypeVar(f)
           listener: handleNoTypeVariables(()
diff --git a/pkg/front_end/parser_testcases/non-nnbd/issue_40267_conditional_2.dart.intertwined.expect b/pkg/front_end/parser_testcases/non-nnbd/issue_40267_conditional_2.dart.intertwined.expect
index 3af70bd..a4a13e9 100644
--- a/pkg/front_end/parser_testcases/non-nnbd/issue_40267_conditional_2.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/non-nnbd/issue_40267_conditional_2.dart.intertwined.expect
@@ -8,10 +8,11 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl()
       listener: beginTopLevelMember(f)
-      parseTopLevelMethod(, null, , Instance of 'NoType', null, f)
+      isReservedKeyword(()
+      parseTopLevelMethod(, null, , Instance of 'NoType', null, f, false)
         listener: beginTopLevelMethod(, null)
         listener: handleNoType()
-        ensureIdentifier(, topLevelFunctionDeclaration)
+        ensureIdentifierPotentiallyRecovered(, topLevelFunctionDeclaration, false)
           listener: handleIdentifier(f, topLevelFunctionDeclaration)
         parseMethodTypeVar(f)
           listener: handleNoTypeVariables(()
diff --git a/pkg/front_end/parser_testcases/non-nnbd/issue_40267_conditional_3.dart.intertwined.expect b/pkg/front_end/parser_testcases/non-nnbd/issue_40267_conditional_3.dart.intertwined.expect
index 0df432d..ac9fa6e 100644
--- a/pkg/front_end/parser_testcases/non-nnbd/issue_40267_conditional_3.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/non-nnbd/issue_40267_conditional_3.dart.intertwined.expect
@@ -8,10 +8,11 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl()
       listener: beginTopLevelMember(f)
-      parseTopLevelMethod(, null, , Instance of 'NoType', null, f)
+      isReservedKeyword(()
+      parseTopLevelMethod(, null, , Instance of 'NoType', null, f, false)
         listener: beginTopLevelMethod(, null)
         listener: handleNoType()
-        ensureIdentifier(, topLevelFunctionDeclaration)
+        ensureIdentifierPotentiallyRecovered(, topLevelFunctionDeclaration, false)
           listener: handleIdentifier(f, topLevelFunctionDeclaration)
         parseMethodTypeVar(f)
           listener: handleNoTypeVariables(()
diff --git a/pkg/front_end/parser_testcases/non-nnbd/issue_40267_conditional_4.dart.intertwined.expect b/pkg/front_end/parser_testcases/non-nnbd/issue_40267_conditional_4.dart.intertwined.expect
index f1cf95c..4ff7912 100644
--- a/pkg/front_end/parser_testcases/non-nnbd/issue_40267_conditional_4.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/non-nnbd/issue_40267_conditional_4.dart.intertwined.expect
@@ -8,9 +8,9 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl()
       listener: beginTopLevelMember(var)
-      parseFields(, null, null, null, null, var, var, Instance of 'NoType', a, DeclarationKind.TopLevel, null)
+      parseFields(, null, null, null, null, var, var, Instance of 'NoType', a, DeclarationKind.TopLevel, null, false)
         listener: handleNoType(var)
-        ensureIdentifier(var, topLevelVariableDeclaration)
+        ensureIdentifierPotentiallyRecovered(var, topLevelVariableDeclaration, false)
           listener: handleIdentifier(a, topLevelVariableDeclaration)
         parseFieldInitializerOpt(a, a, null, var, DeclarationKind.TopLevel, null)
           listener: handleNoFieldInitializer(,)
@@ -38,12 +38,12 @@
       listener: endMetadataStar(0)
     parseTopLevelMemberImpl(;)
       listener: beginTopLevelMember(List)
-      parseTopLevelMethod(;, null, ;, Instance of 'SimpleType', get, f)
+      parseTopLevelMethod(;, null, ;, Instance of 'SimpleType', get, f, false)
         listener: beginTopLevelMethod(;, null)
         listener: handleIdentifier(List, typeReference)
         listener: handleNoTypeArguments(get)
         listener: handleType(List, null)
-        ensureIdentifier(get, topLevelFunctionDeclaration)
+        ensureIdentifierPotentiallyRecovered(get, topLevelFunctionDeclaration, false)
           listener: handleIdentifier(f, topLevelFunctionDeclaration)
         listener: handleNoTypeVariables(=>)
         parseGetterOrFormalParameters(f, f, true, MemberKind.TopLevelMethod)
diff --git a/pkg/front_end/parser_testcases/non-nnbd/issue_40288.dart.intertwined.expect b/pkg/front_end/parser_testcases/non-nnbd/issue_40288.dart.intertwined.expect
index 3e711e5..223ac8e 100644
--- a/pkg/front_end/parser_testcases/non-nnbd/issue_40288.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/non-nnbd/issue_40288.dart.intertwined.expect
@@ -32,12 +32,12 @@
                 listener: beginMetadataStar(int)
                 listener: endMetadataStar(0)
               listener: beginMember()
-              parseMethod({, null, null, null, null, null, {, Instance of 'SimpleType', get, g, DeclarationKind.Class, late)
+              parseMethod({, null, null, null, null, null, {, Instance of 'SimpleType', get, g, DeclarationKind.Class, late, false)
                 listener: beginMethod(null, null, null, null, get, g)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(get)
                 listener: handleType(int, null)
-                ensureIdentifier(get, methodDeclaration)
+                ensureIdentifierPotentiallyRecovered(get, methodDeclaration, false)
                   listener: handleIdentifier(g, methodDeclaration)
                 parseQualifiedRestOpt(g, methodDeclarationContinuation)
                 listener: handleNoTypeVariables(=>)
@@ -97,12 +97,12 @@
                 listener: beginMetadataStar(int)
                 listener: endMetadataStar(0)
               listener: beginMember()
-              parseMethod({, null, null, null, null, null, {, Instance of 'SimpleType', get, g, DeclarationKind.Class, required)
+              parseMethod({, null, null, null, null, null, {, Instance of 'SimpleType', get, g, DeclarationKind.Class, required, false)
                 listener: beginMethod(null, null, null, null, get, g)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(get)
                 listener: handleType(int, null)
-                ensureIdentifier(get, methodDeclaration)
+                ensureIdentifierPotentiallyRecovered(get, methodDeclaration, false)
                   listener: handleIdentifier(g, methodDeclaration)
                 parseQualifiedRestOpt(g, methodDeclarationContinuation)
                 listener: handleNoTypeVariables(=>)
@@ -162,11 +162,11 @@
                 listener: beginMetadataStar(late)
                 listener: endMetadataStar(0)
               listener: beginMember()
-              parseFields({, null, null, null, null, null, {, Instance of 'SimpleType', l, DeclarationKind.Class, C)
+              parseFields({, null, null, null, null, null, {, Instance of 'SimpleType', l, DeclarationKind.Class, C, false)
                 listener: handleIdentifier(late, typeReference)
                 listener: handleNoTypeArguments(l)
                 listener: handleType(late, null)
-                ensureIdentifier(late, fieldDeclaration)
+                ensureIdentifierPotentiallyRecovered(late, fieldDeclaration, false)
                   listener: handleIdentifier(l, fieldDeclaration)
                 parseFieldInitializerOpt(l, l, null, null, DeclarationKind.Class, C)
                   listener: beginFieldInitializer(=)
@@ -195,11 +195,11 @@
                 listener: beginMetadataStar(required)
                 listener: endMetadataStar(0)
               listener: beginMember()
-              parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', r, DeclarationKind.Class, C)
+              parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', r, DeclarationKind.Class, C, false)
                 listener: handleIdentifier(required, typeReference)
                 listener: handleNoTypeArguments(r)
                 listener: handleType(required, null)
-                ensureIdentifier(required, fieldDeclaration)
+                ensureIdentifierPotentiallyRecovered(required, fieldDeclaration, false)
                   listener: handleIdentifier(r, fieldDeclaration)
                 parseFieldInitializerOpt(r, r, null, null, DeclarationKind.Class, C)
                   listener: beginFieldInitializer(=)
diff --git a/pkg/front_end/parser_testcases/non-nnbd/issue_40288_prime.dart.intertwined.expect b/pkg/front_end/parser_testcases/non-nnbd/issue_40288_prime.dart.intertwined.expect
index 6ae5c3c..0d80626 100644
--- a/pkg/front_end/parser_testcases/non-nnbd/issue_40288_prime.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/non-nnbd/issue_40288_prime.dart.intertwined.expect
@@ -32,12 +32,12 @@
                 listener: beginMetadataStar(int)
                 listener: endMetadataStar(0)
               listener: beginMember()
-              parseMethod({, null, null, null, null, null, {, Instance of 'SimpleType', get, g, DeclarationKind.Class, Xlate)
+              parseMethod({, null, null, null, null, null, {, Instance of 'SimpleType', get, g, DeclarationKind.Class, Xlate, false)
                 listener: beginMethod(null, null, null, null, get, g)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(get)
                 listener: handleType(int, null)
-                ensureIdentifier(get, methodDeclaration)
+                ensureIdentifierPotentiallyRecovered(get, methodDeclaration, false)
                   listener: handleIdentifier(g, methodDeclaration)
                 parseQualifiedRestOpt(g, methodDeclarationContinuation)
                 listener: handleNoTypeVariables(=>)
@@ -97,12 +97,12 @@
                 listener: beginMetadataStar(int)
                 listener: endMetadataStar(0)
               listener: beginMember()
-              parseMethod({, null, null, null, null, null, {, Instance of 'SimpleType', get, g, DeclarationKind.Class, Xrequired)
+              parseMethod({, null, null, null, null, null, {, Instance of 'SimpleType', get, g, DeclarationKind.Class, Xrequired, false)
                 listener: beginMethod(null, null, null, null, get, g)
                 listener: handleIdentifier(int, typeReference)
                 listener: handleNoTypeArguments(get)
                 listener: handleType(int, null)
-                ensureIdentifier(get, methodDeclaration)
+                ensureIdentifierPotentiallyRecovered(get, methodDeclaration, false)
                   listener: handleIdentifier(g, methodDeclaration)
                 parseQualifiedRestOpt(g, methodDeclarationContinuation)
                 listener: handleNoTypeVariables(=>)
@@ -162,11 +162,11 @@
                 listener: beginMetadataStar(Xlate)
                 listener: endMetadataStar(0)
               listener: beginMember()
-              parseFields({, null, null, null, null, null, {, Instance of 'SimpleType', l, DeclarationKind.Class, C)
+              parseFields({, null, null, null, null, null, {, Instance of 'SimpleType', l, DeclarationKind.Class, C, false)
                 listener: handleIdentifier(Xlate, typeReference)
                 listener: handleNoTypeArguments(l)
                 listener: handleType(Xlate, null)
-                ensureIdentifier(Xlate, fieldDeclaration)
+                ensureIdentifierPotentiallyRecovered(Xlate, fieldDeclaration, false)
                   listener: handleIdentifier(l, fieldDeclaration)
                 parseFieldInitializerOpt(l, l, null, null, DeclarationKind.Class, C)
                   listener: beginFieldInitializer(=)
@@ -195,11 +195,11 @@
                 listener: beginMetadataStar(Xrequired)
                 listener: endMetadataStar(0)
               listener: beginMember()
-              parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', r, DeclarationKind.Class, C)
+              parseFields(;, null, null, null, null, null, ;, Instance of 'SimpleType', r, DeclarationKind.Class, C, false)
                 listener: handleIdentifier(Xrequired, typeReference)
                 listener: handleNoTypeArguments(r)
                 listener: handleType(Xrequired, null)
-                ensureIdentifier(Xrequired, fieldDeclaration)
+                ensureIdentifierPotentiallyRecovered(Xrequired, fieldDeclaration, false)
                   listener: handleIdentifier(r, fieldDeclaration)
                 parseFieldInitializerOpt(r, r, null, null, DeclarationKind.Class, C)
                   listener: beginFieldInitializer(=)
diff --git a/pkg/front_end/test/compile_with_no_sdk_test.dart b/pkg/front_end/test/compile_with_no_sdk_test.dart
new file mode 100644
index 0000000..b096688
--- /dev/null
+++ b/pkg/front_end/test/compile_with_no_sdk_test.dart
@@ -0,0 +1,33 @@
+// Copyright (c) 2020, the Dart project authors.  Please see the AUTHORS file
+// 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.
+
+import 'package:front_end/src/api_prototype/compiler_options.dart';
+import 'package:front_end/src/api_prototype/memory_file_system.dart';
+
+import 'incremental_load_from_dill_suite.dart'
+    show TestIncrementalCompiler, getOptions;
+
+main() async {
+  await compile("import 'foo.dart' if (dart.library.bar) 'baz.dart';");
+}
+
+void compile(String data) async {
+  Uri base = Uri.parse("org-dartlang-test:///");
+  Uri sdkSummary = base.resolve("nonexisting.dill");
+  Uri mainFile = base.resolve("main.dart");
+  MemoryFileSystem fs = new MemoryFileSystem(base);
+  CompilerOptions options = getOptions();
+  options.fileSystem = fs;
+  options.sdkRoot = null;
+  options.sdkSummary = sdkSummary;
+  options.librariesSpecificationUri = null;
+  options.omitPlatform = true;
+  options.onDiagnostic = (DiagnosticMessage message) {
+    // ignored
+  };
+  fs.entityForUri(mainFile).writeAsStringSync(data);
+  TestIncrementalCompiler compiler =
+      new TestIncrementalCompiler(options, mainFile);
+  await compiler.computeDelta();
+}
diff --git a/pkg/front_end/test/crashing_test_case_minimizer.dart b/pkg/front_end/test/crashing_test_case_minimizer.dart
index 09bedc5..8d661f0 100644
--- a/pkg/front_end/test/crashing_test_case_minimizer.dart
+++ b/pkg/front_end/test/crashing_test_case_minimizer.dart
@@ -4,7 +4,7 @@
 
 import 'dart:convert' show utf8;
 
-import 'dart:io' show BytesBuilder, File;
+import 'dart:io' show BytesBuilder, File, stdin;
 
 import 'dart:typed_data' show Uint8List;
 
@@ -48,12 +48,15 @@
 final FakeFileSystem fs = new FakeFileSystem();
 Uri mainUri;
 Uri platformUri;
+bool noPlatform = false;
 bool nnbd = false;
 bool widgetTransformation = false;
 List<Uri> invalidate = [];
 String targetString = "VM";
 String expectedCrashLine;
 bool byteDelete = false;
+bool askAboutRedirectCrashTarget = false;
+Set<String> askedAboutRedirect = {};
 
 main(List<String> arguments) async {
   String filename;
@@ -64,6 +67,8 @@
       } else if (arg.startsWith("--platform=")) {
         String platform = arg.substring("--platform=".length);
         platformUri = Uri.base.resolve(platform);
+      } else if (arg == "--no-platform") {
+        noPlatform = true;
       } else if (arg.startsWith("--invalidate=")) {
         for (String s in arg.substring("--invalidate=".length).split(",")) {
           invalidate.add(Uri.base.resolve(s));
@@ -78,6 +83,8 @@
         targetString = "ddc";
       } else if (arg == "--byteDelete") {
         byteDelete = true;
+      } else if (arg == "--ask-redirect-target") {
+        askAboutRedirectCrashTarget = true;
       } else {
         throw "Unknown option $arg";
       }
@@ -88,11 +95,19 @@
       filename = arg;
     }
   }
-  if (platformUri == null) {
-    throw "No platform given. Use --platform=/path/to/platform.dill";
-  }
-  if (!new File.fromUri(platformUri).existsSync()) {
-    throw "The platform file '$platformUri' doesn't exist";
+  if (noPlatform) {
+    int i = 0;
+    while (platformUri == null || new File.fromUri(platformUri).existsSync()) {
+      platformUri = Uri.base.resolve("nonexisting_$i");
+      i++;
+    }
+  } else {
+    if (platformUri == null) {
+      throw "No platform given. Use --platform=/path/to/platform.dill";
+    }
+    if (!new File.fromUri(platformUri).existsSync()) {
+      throw "The platform file '$platformUri' doesn't exist";
+    }
   }
   if (filename == null) {
     throw "Need file to operate on";
@@ -331,7 +346,7 @@
   for (MapEntry<Uri, Uint8List> entry in fs.data.entries) {
     if (entry.value == null || entry.value.isEmpty) continue;
     if (!entry.key.toString().endsWith(".dart")) continue;
-    if (!neededUris.contains(entry.key)) {
+    if (!neededUris.contains(entry.key) && fs.data[entry.key].length != 0) {
       fs.data[entry.key] = new Uint8List(0);
       print(" => Can probably also delete ${entry.key}");
       removedSome = true;
@@ -452,9 +467,13 @@
 Component _latestComponent;
 
 Future<bool> crashesOnCompile(Component initialComponent) async {
-  IncrementalCompiler incrementalCompiler =
-      new IncrementalCompiler.fromComponent(
-          setupCompilerContext(), initialComponent);
+  IncrementalCompiler incrementalCompiler;
+  if (noPlatform) {
+    incrementalCompiler = new IncrementalCompiler(setupCompilerContext());
+  } else {
+    incrementalCompiler = new IncrementalCompiler.fromComponent(
+        setupCompilerContext(), initialComponent);
+  }
   incrementalCompiler.invalidate(mainUri);
   try {
     _latestComponent = await incrementalCompiler.computeDelta();
@@ -462,6 +481,7 @@
       incrementalCompiler.invalidate(uri);
       await incrementalCompiler.computeDelta();
     }
+    _latestComponent = null; // if it didn't crash this isn't relevant.
     return false;
   } catch (e, st) {
     // Find line with #0 in it.
@@ -483,6 +503,24 @@
       return true;
     } else {
       print("Crashed, but another place: $foundLine");
+      if (askAboutRedirectCrashTarget &&
+          !askedAboutRedirect.contains(foundLine)) {
+        while (true) {
+          askedAboutRedirect.add(foundLine);
+          print(eWithSt);
+          print("Should we redirect to searching for that? (y/n)");
+          String answer = stdin.readLineSync();
+          if (answer == "yes" || answer == "y") {
+            expectedCrashLine = foundLine;
+            return true;
+          } else if (answer == "no" || answer == "n") {
+            break;
+          } else {
+            print("Didn't get that answer. "
+                "Please answer 'yes, 'y', 'no' or 'n'");
+          }
+        }
+      }
       return false;
     }
   }
@@ -522,6 +560,9 @@
   options.onDiagnostic = (DiagnosticMessage message) {
     // don't care.
   };
+  if (noPlatform) {
+    options.librariesSpecificationUri = null;
+  }
 
   CompilerContext compilerContext = new CompilerContext(
       new ProcessedOptions(options: options, inputs: [mainUri]));
diff --git a/pkg/front_end/test/parser_test_listener.dart b/pkg/front_end/test/parser_test_listener.dart
index 54b7c6b..be3ec58 100644
--- a/pkg/front_end/test/parser_test_listener.dart
+++ b/pkg/front_end/test/parser_test_listener.dart
@@ -2094,6 +2094,7 @@
 
   void handleErrorToken(ErrorToken token) {
     doPrint('handleErrorToken(' '$token)');
+    handleRecoverableError(token.assertionMessage, token, token);
   }
 
   void handleUnescapeError(
diff --git a/pkg/front_end/test/parser_test_listener_creator.dart b/pkg/front_end/test/parser_test_listener_creator.dart
index 42692f6..f330b23 100644
--- a/pkg/front_end/test/parser_test_listener_creator.dart
+++ b/pkg/front_end/test/parser_test_listener_creator.dart
@@ -181,6 +181,12 @@
           out.write("  indent++;\n  ");
         }
 
+        if (currentMethodName == "handleErrorToken") {
+          // It redirects to give an error message, so also do that here.
+          out.write("  handleRecoverableError("
+              "token.assertionMessage, token, token);");
+        }
+
         out.write("}");
       }
       out.write("\n\n");
diff --git a/pkg/front_end/test/parser_test_parser.dart b/pkg/front_end/test/parser_test_parser.dart
index bef4e6a..d548c15 100644
--- a/pkg/front_end/test/parser_test_parser.dart
+++ b/pkg/front_end/test/parser_test_parser.dart
@@ -647,6 +647,19 @@
     return result;
   }
 
+  Token ensureIdentifierPotentiallyRecovered(
+      Token token, IdentifierContext context, bool isRecovered) {
+    doPrint('ensureIdentifierPotentiallyRecovered('
+        '$token, '
+        '$context, '
+        '$isRecovered)');
+    indent++;
+    var result =
+        super.ensureIdentifierPotentiallyRecovered(token, context, isRecovered);
+    indent--;
+    return result;
+  }
+
   bool notEofOrValue(String value, Token token) {
     doPrint('notEofOrValue(' '$value, ' '$token)');
     indent++;
@@ -690,7 +703,8 @@
       TypeInfo typeInfo,
       Token name,
       DeclarationKind kind,
-      String enclosingDeclarationName) {
+      String enclosingDeclarationName,
+      bool nameIsRecovered) {
     doPrint('parseFields('
         '$beforeStart, '
         '$externalToken, '
@@ -702,7 +716,8 @@
         '$typeInfo, '
         '$name, '
         '$kind, '
-        '$enclosingDeclarationName)');
+        '$enclosingDeclarationName, '
+        '$nameIsRecovered)');
     indent++;
     var result = super.parseFields(
         beforeStart,
@@ -715,23 +730,31 @@
         typeInfo,
         name,
         kind,
-        enclosingDeclarationName);
+        enclosingDeclarationName,
+        nameIsRecovered);
     indent--;
     return result;
   }
 
-  Token parseTopLevelMethod(Token beforeStart, Token externalToken,
-      Token beforeType, TypeInfo typeInfo, Token getOrSet, Token name) {
+  Token parseTopLevelMethod(
+      Token beforeStart,
+      Token externalToken,
+      Token beforeType,
+      TypeInfo typeInfo,
+      Token getOrSet,
+      Token name,
+      bool nameIsRecovered) {
     doPrint('parseTopLevelMethod('
         '$beforeStart, '
         '$externalToken, '
         '$beforeType, '
         '$typeInfo, '
         '$getOrSet, '
-        '$name)');
+        '$name, '
+        '$nameIsRecovered)');
     indent++;
-    var result = super.parseTopLevelMethod(
-        beforeStart, externalToken, beforeType, typeInfo, getOrSet, name);
+    var result = super.parseTopLevelMethod(beforeStart, externalToken,
+        beforeType, typeInfo, getOrSet, name, nameIsRecovered);
     indent--;
     return result;
   }
@@ -949,6 +972,22 @@
     return result;
   }
 
+  bool isReservedKeyword(Token token) {
+    doPrint('isReservedKeyword(' '$token)');
+    indent++;
+    var result = super.isReservedKeyword(token);
+    indent--;
+    return result;
+  }
+
+  bool indicatesMethodOrField(Token token) {
+    doPrint('indicatesMethodOrField(' '$token)');
+    indent++;
+    var result = super.indicatesMethodOrField(token);
+    indent--;
+    return result;
+  }
+
   Token parseClassOrMixinOrExtensionMemberImpl(
       Token token, DeclarationKind kind, String enclosingDeclarationName) {
     doPrint('parseClassOrMixinOrExtensionMemberImpl('
@@ -974,7 +1013,8 @@
       Token getOrSet,
       Token name,
       DeclarationKind kind,
-      String enclosingDeclarationName) {
+      String enclosingDeclarationName,
+      bool nameIsRecovered) {
     doPrint('parseMethod('
         '$beforeStart, '
         '$externalToken, '
@@ -987,7 +1027,8 @@
         '$getOrSet, '
         '$name, '
         '$kind, '
-        '$enclosingDeclarationName)');
+        '$enclosingDeclarationName, '
+        '$nameIsRecovered)');
     indent++;
     var result = super.parseMethod(
         beforeStart,
@@ -1001,7 +1042,8 @@
         getOrSet,
         name,
         kind,
-        enclosingDeclarationName);
+        enclosingDeclarationName,
+        nameIsRecovered);
     indent--;
     return result;
   }
diff --git a/pkg/front_end/test/scanner_test.dart b/pkg/front_end/test/scanner_test.dart
index 6f7156a..d6cdad2 100644
--- a/pkg/front_end/test/scanner_test.dart
+++ b/pkg/front_end/test/scanner_test.dart
@@ -776,18 +776,22 @@
   }
 
   void test_mismatched_closer2() {
-    // When openers and closers are mismatched, analyzer favors considering the
-    // closer to be mismatched, which means that `[(])` parses as a pair of
-    // matched parenthesis with an unmatched open bracket before them
-    // and an unmatched closing bracket between them.
+    // When openers and closers are mismatched, the scanner has two options:
+    // * If there is a matching opener on the stack it can create fake closers
+    //   for everything up til there, or
+    // * It can treat the closer as a non-closer (basically ignore that it's a
+    //   closer).
+    // The scanner tries both options to see which is better (leads to fewest
+    // rewrites later) and picks that strategy.
+    // Example: `[(])` can be scanned in 2 ways:
+    // 1) `[()])` where the first `)` is synthetic and the last `)` is
+    //    ignored/unmatched (i.e. 2 recoveries).
+    // 2) `[(])` where `]` is ignored/unmatched and `[` is unmatched (i.e.
+    //    2 recoveries).
+    // Both options are "equally bad" and the first choise is made.
     ErrorListener listener = new ErrorListener();
     BeginToken openBracket = scanWithListener('[(])', listener);
     BeginToken openParen = openBracket.next;
-    // When openers and closers are mismatched
-    // fasta favors considering the opener to be mismatched,
-    // and inserts synthetic closers as needed.
-    // `[(])` is parsed as `[()])` where the first `)` is synthetic
-    // and the trailing `)` is unmatched.
     var closeParen = openParen.next;
     expect(closeParen.isSynthetic, isTrue);
     var closeBracket = closeParen.next;
diff --git a/pkg/front_end/test/spell_checking_list_code.txt b/pkg/front_end/test/spell_checking_list_code.txt
index d342281..3d6c0bc 100644
--- a/pkg/front_end/test/spell_checking_list_code.txt
+++ b/pkg/front_end/test/spell_checking_list_code.txt
@@ -381,6 +381,7 @@
 fe
 feff
 fetched
+fewest
 ff
 fff
 ffff
@@ -711,6 +712,8 @@
 op
 opt
 optimizations
+option1
+option2
 opts
 ordered
 orders
@@ -846,6 +849,7 @@
 recompiling
 recompute
 recomputed
+recoveries
 recreate
 recursion
 red
@@ -986,6 +990,7 @@
 stacktrace
 stacktraces
 stale
+starter
 statics
 stderr
 stdin
@@ -1082,6 +1087,7 @@
 token's
 tokenize
 tokenized
+tokenizer
 tolerate
 tolerated
 toplevel
diff --git a/pkg/front_end/test/spell_checking_list_common.txt b/pkg/front_end/test/spell_checking_list_common.txt
index 885f530..3437680 100644
--- a/pkg/front_end/test/spell_checking_list_common.txt
+++ b/pkg/front_end/test/spell_checking_list_common.txt
@@ -179,6 +179,7 @@
 aren't
 argument
 arguments
+arises
 arithmetic
 arose
 around
@@ -468,6 +469,7 @@
 closer
 closers
 closes
+closest
 closing
 closure
 closures
@@ -655,6 +657,7 @@
 correctly
 correctness
 correspond
+correspondence
 corresponding
 corresponds
 cost
@@ -1082,6 +1085,7 @@
 exports
 exposed
 exposes
+expressed
 expression
 expressions
 extend
@@ -1731,6 +1735,7 @@
 lowered
 lowering
 lowerings
+lowest
 machine
 made
 magenta
diff --git a/pkg/front_end/test/spell_checking_list_tests.txt b/pkg/front_end/test/spell_checking_list_tests.txt
index 2c2610c..2a38575 100644
--- a/pkg/front_end/test/spell_checking_list_tests.txt
+++ b/pkg/front_end/test/spell_checking_list_tests.txt
@@ -547,6 +547,7 @@
 wins
 workflow
 worlds
+wrongly
 ws
 x's
 xlate
diff --git a/pkg/front_end/test/static_types/data/for_in.dart b/pkg/front_end/test/static_types/data/for_in.dart
index 93dcd4f..9282e55 100644
--- a/pkg/front_end/test/static_types/data/for_in.dart
+++ b/pkg/front_end/test/static_types/data/for_in.dart
@@ -25,7 +25,8 @@
 }
 
 forInInt(List<int> list) {
-  /*current: int*/
+  /*cfe.current: int*/
+  /*cfe:nnbd.current: int!*/
   for (var e in
       /*cfe.List<int>*/
       /*cfe:nnbd.List<int!>!*/ list) {
@@ -36,7 +37,8 @@
 }
 
 forInIntToNum(List<int> list) {
-  /*current: int*/
+  /*cfe.current: int*/
+  /*cfe:nnbd.current: int!*/
   for (num e in
       /*cfe.List<int>*/
       /*cfe:nnbd.List<int!>!*/ list) {
@@ -171,7 +173,7 @@
       /*cfe.T*/
       /*cfe:nnbd.T!*/
       x) {
-    /*T*/ y;
+    /*cfe.T*/ /*cfe:nnbd.T!*/ y;
   }
 }
 
@@ -182,6 +184,6 @@
       /*cfe.T*/
       /*cfe:nnbd.T!*/
       x) {
-    /*T*/ y;
+    /*cfe.T*/ /*cfe:nnbd.T!*/ y;
   }
 }
diff --git a/pkg/front_end/test/static_types/data/null_aware_spread.dart b/pkg/front_end/test/static_types/data/null_aware_spread.dart
index dddcbac..43cf405 100644
--- a/pkg/front_end/test/static_types/data/null_aware_spread.dart
+++ b/pkg/front_end/test/static_types/data/null_aware_spread.dart
@@ -30,15 +30,16 @@
   /*cfe.update: Set<String>*/
   /*cfe:nnbd.update: Set<String!>!*/
   set =
-      /*invoke: LinkedHashSet<String>*/
+      /*cfe.invoke: LinkedHashSet<String>!*/
+      /*cfe:nnbd.invoke: LinkedHashSet<String!>!*/
       /*cfe.<String>*/
       /*cfe:nnbd.<String!>*/
       {
-    /*invoke: bool*/
+    /*invoke: bool!*/
     /*cfe.String*/
     /*cfe:nnbd.String!*/
     'foo',
-    /*invoke: bool*/
+    /*invoke: bool!*/
     /*cfe.current: String*/
     /*cfe:nnbd.current: String!*/
     ...?
@@ -62,19 +63,10 @@
         /*cfe:nnbd.String!*/
         'foo',
     ...?
-    /*cfe.
-     Map<int,String>
-     |Iterable<MapEntry<int,String>>
-     |int
-     |String
-    */
-    /*cfe:nnbd.
-     Map<int!,String!>!
-     |Iterable<MapEntry<int,String>>
-     |int
-     |String
-    */
-    /*current: MapEntry<int,String>*/
+    /*cfe.Map<int,String>|Iterable<MapEntry<int,String>!>!|int|String*/
+    /*cfe:nnbd.Map<int!,String!>!|Iterable<MapEntry<int!,String!>!>!|int!|String!*/
+    /*cfe.current: MapEntry<int,String>!*/
+    /*cfe:nnbd.current: MapEntry<int!,String!>!*/
     /*update: void*/
     map
   };
diff --git a/pkg/front_end/test/utils/kernel_chain.dart b/pkg/front_end/test/utils/kernel_chain.dart
index 01edfe0..43bbcfa 100644
--- a/pkg/front_end/test/utils/kernel_chain.dart
+++ b/pkg/front_end/test/utils/kernel_chain.dart
@@ -24,8 +24,7 @@
 
 import 'package:front_end/src/fasta/compiler_context.dart' show CompilerContext;
 
-import 'package:front_end/src/fasta/fasta_codes.dart'
-    show templateInternalProblemUnhandled, templateUnspecified;
+import 'package:front_end/src/fasta/fasta_codes.dart' show templateUnspecified;
 
 import 'package:front_end/src/fasta/kernel/utils.dart' show ByteSink;
 
@@ -49,13 +48,7 @@
 import 'package:kernel/text/ast_to_text.dart' show Printer;
 
 import 'package:kernel/text/text_serialization_verifier.dart'
-    show
-        RoundTripStatus,
-        TextDeserializationFailure,
-        TextRoundTripFailure,
-        TextSerializationFailure,
-        TextSerializationVerificationFailure,
-        TextSerializationVerifier;
+    show RoundTripStatus, TextSerializationVerifier;
 
 import 'package:testing/testing.dart'
     show
@@ -379,33 +372,12 @@
           verifier.verify(library);
         }
       }
-      for (TextSerializationVerificationFailure failure in verifier.failures) {
-        LocatedMessage message;
-        if (failure is TextSerializationFailure) {
-          message = templateUnspecified
-              .withArguments("Failed to serialize a node: ${failure.message}")
-              .withLocation(failure.uri, failure.offset, 1);
-        } else if (failure is TextDeserializationFailure) {
-          message = templateUnspecified
-              .withArguments("Failed to deserialize a node: ${failure.message}")
-              .withLocation(failure.uri, failure.offset, 1);
-        } else if (failure is TextRoundTripFailure) {
-          String formattedInitial =
-              failure.initial.isNotEmpty ? failure.initial : "<empty>";
-          String formattedSerialized =
-              failure.serialized.isNotEmpty ? failure.serialized : "<empty>";
-          message = templateUnspecified
-              .withArguments(
-                  "Round trip failure: initial doesn't match serialized.\n"
-                  "  Initial    : $formattedInitial\n"
-                  "  Serialized : $formattedSerialized")
-              .withLocation(failure.uri, failure.offset, 1);
-        } else {
-          message = templateInternalProblemUnhandled
-              .withArguments(
-                  "${failure.runtimeType}", "KernelTextSerialization.run")
-              .withLocation(failure.uri, failure.offset, 1);
-        }
+
+      List<RoundTripStatus> failures = verifier.failures;
+      for (RoundTripStatus failure in failures) {
+        LocatedMessage message = templateUnspecified
+            .withArguments("\n${failure}")
+            .withLocation(failure.uri, failure.offset, 1);
         options.report(message, message.code.severity);
       }
 
@@ -415,7 +387,7 @@
         String filename = "${uri.toFilePath()}${suffix}";
         uri = new File(filename).uri;
         StringBuffer buffer = new StringBuffer();
-        for (RoundTripStatus status in verifier.status) {
+        for (RoundTripStatus status in verifier.takeStatus()) {
           status.printOn(buffer);
         }
         await openWrite(uri, (IOSink sink) {
@@ -423,7 +395,7 @@
         });
       }
 
-      if (verifier.failures.isNotEmpty) {
+      if (failures.isNotEmpty) {
         return new Result<ComponentResult>(
             null,
             context.expectationSet["TextSerializationFailure"],
diff --git a/pkg/front_end/testcases/expression/class_static3.expression.yaml.expect b/pkg/front_end/testcases/expression/class_static3.expression.yaml.expect
index b00f945..54da0ac 100644
--- a/pkg/front_end/testcases/expression/class_static3.expression.yaml.expect
+++ b/pkg/front_end/testcases/expression/class_static3.expression.yaml.expect
@@ -4,7 +4,7 @@
               ^^^^^^^^^
 }
 method /* from org-dartlang-debug:synthetic_debug_expression */ debugExpr() → dynamic
-  return #lib1::globalVar.{dart.core::num::+}(invalid-expression "org-dartlang-debug:synthetic_debug_expression:1:13: Error: Getter not found: 'staticVar'.\nglobalVar + staticVar + 5\n            ^^^^^^^^^" as{TypeError,ForDynamic} dart.core::num*).{dart.core::num::+}(5);
+  return #lib1::globalVar.{dart.core::num::+}(invalid-expression "org-dartlang-debug:synthetic_debug_expression:1:13: Error: Getter not found: 'staticVar'.\nglobalVar + staticVar + 5\n            ^^^^^^^^^" as{TypeError,ForDynamic} dart.core::num).{dart.core::num::+}(5);
 Errors: {
 }
 static method /* from org-dartlang-debug:synthetic_debug_expression */ debugExpr() → dynamic
diff --git a/pkg/front_end/testcases/expression/class_type_param_circular_reference.expression.yaml.expect b/pkg/front_end/testcases/expression/class_type_param_circular_reference.expression.yaml.expect
index d107580..efc0681 100644
--- a/pkg/front_end/testcases/expression/class_type_param_circular_reference.expression.yaml.expect
+++ b/pkg/front_end/testcases/expression/class_type_param_circular_reference.expression.yaml.expect
@@ -1,4 +1,4 @@
 Errors: {
 }
 method /* from org-dartlang-debug:synthetic_debug_expression */ debugExpr() → dynamic
-  return this.{dart.core::Object::toString}();
+  return this.{main::MiddlewareApi::toString}();
diff --git a/pkg/front_end/testcases/expression/core_lib_imported.expression.yaml.expect b/pkg/front_end/testcases/expression/core_lib_imported.expression.yaml.expect
index dd6add4..02ef4d6 100644
--- a/pkg/front_end/testcases/expression/core_lib_imported.expression.yaml.expect
+++ b/pkg/front_end/testcases/expression/core_lib_imported.expression.yaml.expect
@@ -1,4 +1,4 @@
 Errors: {
 }
-method /* from org-dartlang-debug:synthetic_debug_expression */ debugExpr() → dynamic
+method /*isNullableByDefault, from org-dartlang-debug:synthetic_debug_expression */ debugExpr() → dynamic
   return dart.core::identical(1, 1);
diff --git a/pkg/front_end/testcases/expression/core_lib_internal.expression.yaml.expect b/pkg/front_end/testcases/expression/core_lib_internal.expression.yaml.expect
index 1d47240b..c4ded9a 100644
--- a/pkg/front_end/testcases/expression/core_lib_internal.expression.yaml.expect
+++ b/pkg/front_end/testcases/expression/core_lib_internal.expression.yaml.expect
@@ -1,4 +1,4 @@
 Errors: {
 }
-method /* from org-dartlang-debug:synthetic_debug_expression */ debugExpr() → dynamic
+method /*isNullableByDefault, from org-dartlang-debug:synthetic_debug_expression */ debugExpr() → dynamic
   return null is dart.collection::Queue<dynamic>*;
diff --git a/pkg/front_end/testcases/expression/from_vm_cc_linked_hash_map.expression.yaml.expect b/pkg/front_end/testcases/expression/from_vm_cc_linked_hash_map.expression.yaml.expect
index 7cde4b9..2643d93 100644
--- a/pkg/front_end/testcases/expression/from_vm_cc_linked_hash_map.expression.yaml.expect
+++ b/pkg/front_end/testcases/expression/from_vm_cc_linked_hash_map.expression.yaml.expect
@@ -1,16 +1,16 @@
 Errors: {
 }
-method /* from org-dartlang-debug:synthetic_debug_expression */ debugExpr(dynamic a, dynamic b) → dynamic
+method /*isNullableByDefault, from org-dartlang-debug:synthetic_debug_expression */ debugExpr(dynamic a, dynamic b) → dynamic
   return ((dynamic a, dynamic b) → dart.core::bool* {
     if(!a._usedData.{dart.core::Object::==}(b._usedData) || !a._deletedKeys.{dart.core::Object::==}(b._deletedKeys) || !a._hashMask.{dart.core::Object::==}(b._hashMask) || !a._index.length.{dart.core::Object::==}(b._index.length) || !a._data.length.{dart.core::Object::==}(b._data.length)) {
       return false;
     }
-    for (dart.core::int* i = 0; i.{dart.core::num::<}(a._index.length as{TypeError,ForDynamic} dart.core::num*); i = i.{dart.core::num::+}(1)) {
+    for (dart.core::int* i = 0; i.{dart.core::num::<}(a._index.length as{TypeError,ForDynamic} dart.core::num); i = i.{dart.core::num::+}(1)) {
       if(!a._index.[](i).{dart.core::Object::==}(b._index.[](i))) {
         return false;
       }
     }
-    for (dart.core::int* i = 0; i.{dart.core::num::<}(a._data.length as{TypeError,ForDynamic} dart.core::num*); i = i.{dart.core::num::+}(1)) {
+    for (dart.core::int* i = 0; i.{dart.core::num::<}(a._data.length as{TypeError,ForDynamic} dart.core::num); i = i.{dart.core::num::+}(1)) {
       dynamic ad = a._data.[](i);
       dynamic bd = b._data.[](i);
       if(!dart.core::identical(ad, bd) && !(ad.{dart.core::Object::==}(a) && bd.{dart.core::Object::==}(b))) {
diff --git a/pkg/front_end/testcases/expression/regress_34224.expression.yaml.expect b/pkg/front_end/testcases/expression/regress_34224.expression.yaml.expect
index d107580..8c2b235 100644
--- a/pkg/front_end/testcases/expression/regress_34224.expression.yaml.expect
+++ b/pkg/front_end/testcases/expression/regress_34224.expression.yaml.expect
@@ -1,4 +1,4 @@
 Errors: {
 }
-method /* from org-dartlang-debug:synthetic_debug_expression */ debugExpr() → dynamic
+method /*isNullableByDefault, from org-dartlang-debug:synthetic_debug_expression */ debugExpr() → dynamic
   return this.{dart.core::Object::toString}();
diff --git a/pkg/front_end/testcases/extensions/ambiguous.dart.outline.expect b/pkg/front_end/testcases/extensions/ambiguous.dart.outline.expect
index ecc48e2..7b10546 100644
--- a/pkg/front_end/testcases/extensions/ambiguous.dart.outline.expect
+++ b/pkg/front_end/testcases/extensions/ambiguous.dart.outline.expect
@@ -5,6 +5,16 @@
 class C extends core::Object {
   synthetic constructor •() → self::C*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 extension A on self::C* {
   method method = self::A|method;
diff --git a/pkg/front_end/testcases/extensions/ambiguous.dart.strong.expect b/pkg/front_end/testcases/extensions/ambiguous.dart.strong.expect
index 8573677..9c97e7e 100644
--- a/pkg/front_end/testcases/extensions/ambiguous.dart.strong.expect
+++ b/pkg/front_end/testcases/extensions/ambiguous.dart.strong.expect
@@ -153,6 +153,16 @@
   synthetic constructor •() → self::C*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 extension A on self::C* {
   method method = self::A|method;
diff --git a/pkg/front_end/testcases/extensions/ambiguous.dart.strong.transformed.expect b/pkg/front_end/testcases/extensions/ambiguous.dart.strong.transformed.expect
index 8573677..9c97e7e 100644
--- a/pkg/front_end/testcases/extensions/ambiguous.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/extensions/ambiguous.dart.strong.transformed.expect
@@ -153,6 +153,16 @@
   synthetic constructor •() → self::C*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 extension A on self::C* {
   method method = self::A|method;
diff --git a/pkg/front_end/testcases/extensions/annotations.dart.outline.expect b/pkg/front_end/testcases/extensions/annotations.dart.outline.expect
index 1c72331..b94bed2 100644
--- a/pkg/front_end/testcases/extensions/annotations.dart.outline.expect
+++ b/pkg/front_end/testcases/extensions/annotations.dart.outline.expect
@@ -11,6 +11,16 @@
   @core::pragma::_("dart2js:noInline")
   static method staticMethod() → dynamic
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 extension Extension on self::Class* {
   method extensionInstanceMethod = self::Extension|extensionInstanceMethod;
diff --git a/pkg/front_end/testcases/extensions/annotations.dart.strong.expect b/pkg/front_end/testcases/extensions/annotations.dart.strong.expect
index 73aac11..24a187d 100644
--- a/pkg/front_end/testcases/extensions/annotations.dart.strong.expect
+++ b/pkg/front_end/testcases/extensions/annotations.dart.strong.expect
@@ -10,6 +10,16 @@
   method instanceMethod() → dynamic {}
   @#C3
   static method staticMethod() → dynamic {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 extension Extension on self::Class* {
   method extensionInstanceMethod = self::Extension|extensionInstanceMethod;
diff --git a/pkg/front_end/testcases/extensions/annotations.dart.strong.transformed.expect b/pkg/front_end/testcases/extensions/annotations.dart.strong.transformed.expect
index 73aac11..24a187d 100644
--- a/pkg/front_end/testcases/extensions/annotations.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/extensions/annotations.dart.strong.transformed.expect
@@ -10,6 +10,16 @@
   method instanceMethod() → dynamic {}
   @#C3
   static method staticMethod() → dynamic {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 extension Extension on self::Class* {
   method extensionInstanceMethod = self::Extension|extensionInstanceMethod;
diff --git a/pkg/front_end/testcases/extensions/call_methods.dart.outline.expect b/pkg/front_end/testcases/extensions/call_methods.dart.outline.expect
index 04fd8c7..3b5f205 100644
--- a/pkg/front_end/testcases/extensions/call_methods.dart.outline.expect
+++ b/pkg/front_end/testcases/extensions/call_methods.dart.outline.expect
@@ -7,12 +7,32 @@
     ;
   get call() → core::String*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends core::Object {
   synthetic constructor •() → self::B*
     ;
   get call() → () →* core::String*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 extension _extension#0 on core::int* {
   get call = self::_extension#0|get#call;
diff --git a/pkg/front_end/testcases/extensions/call_methods.dart.strong.expect b/pkg/front_end/testcases/extensions/call_methods.dart.strong.expect
index 7835653..7448fad 100644
--- a/pkg/front_end/testcases/extensions/call_methods.dart.strong.expect
+++ b/pkg/front_end/testcases/extensions/call_methods.dart.strong.expect
@@ -101,6 +101,16 @@
     ;
   get call() → core::String*
     return "My name is A";
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends core::Object {
   synthetic constructor •() → self::B*
@@ -108,6 +118,16 @@
     ;
   get call() → () →* core::String*
     return () → core::String* => "My name is B";
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 extension _extension#0 on core::int* {
   get call = self::_extension#0|get#call;
diff --git a/pkg/front_end/testcases/extensions/check_bounds.dart.outline.expect b/pkg/front_end/testcases/extensions/check_bounds.dart.outline.expect
index 533a05a..300db87 100644
--- a/pkg/front_end/testcases/extensions/check_bounds.dart.outline.expect
+++ b/pkg/front_end/testcases/extensions/check_bounds.dart.outline.expect
@@ -6,6 +6,16 @@
 class A extends core::Object {
   synthetic constructor •() → self::A*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A {
   synthetic constructor •() → self::B*
@@ -14,6 +24,16 @@
 class Class<T extends self::A* = self::A*> extends core::Object {
   synthetic constructor •() → self::Class<self::Class::T*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 extension Extension<T extends self::B* = dynamic> on self::Class<T*>* {
   method method = self::Extension|method;
diff --git a/pkg/front_end/testcases/extensions/check_bounds.dart.strong.expect b/pkg/front_end/testcases/extensions/check_bounds.dart.strong.expect
index ee82d11..f5ecea1 100644
--- a/pkg/front_end/testcases/extensions/check_bounds.dart.strong.expect
+++ b/pkg/front_end/testcases/extensions/check_bounds.dart.strong.expect
@@ -811,6 +811,16 @@
   synthetic constructor •() → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A {
   synthetic constructor •() → self::B*
@@ -821,6 +831,16 @@
   synthetic constructor •() → self::Class<self::Class::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 extension Extension<T extends self::B* = dynamic> on self::Class<T*>* {
   method method = self::Extension|method;
diff --git a/pkg/front_end/testcases/extensions/check_bounds.dart.strong.transformed.expect b/pkg/front_end/testcases/extensions/check_bounds.dart.strong.transformed.expect
index ee82d11..f5ecea1 100644
--- a/pkg/front_end/testcases/extensions/check_bounds.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/extensions/check_bounds.dart.strong.transformed.expect
@@ -811,6 +811,16 @@
   synthetic constructor •() → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A {
   synthetic constructor •() → self::B*
@@ -821,6 +831,16 @@
   synthetic constructor •() → self::Class<self::Class::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 extension Extension<T extends self::B* = dynamic> on self::Class<T*>* {
   method method = self::Extension|method;
diff --git a/pkg/front_end/testcases/extensions/compounds.dart.outline.expect b/pkg/front_end/testcases/extensions/compounds.dart.outline.expect
index 07927ac..3e78f6f 100644
--- a/pkg/front_end/testcases/extensions/compounds.dart.outline.expect
+++ b/pkg/front_end/testcases/extensions/compounds.dart.outline.expect
@@ -12,16 +12,43 @@
     ;
   method toString() → core::String*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Class extends core::Object {
   field self::Number* field;
   constructor •(self::Number* field) → self::Class*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class IntClass extends core::Object {
   field core::int* field;
   constructor •(core::int* field) → self::IntClass*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 extension NumberExtension on self::Number* {
   operator + = self::NumberExtension|+;
diff --git a/pkg/front_end/testcases/extensions/compounds.dart.strong.expect b/pkg/front_end/testcases/extensions/compounds.dart.strong.expect
index c2f32b4..6d48889 100644
--- a/pkg/front_end/testcases/extensions/compounds.dart.strong.expect
+++ b/pkg/front_end/testcases/extensions/compounds.dart.strong.expect
@@ -13,18 +13,45 @@
     return other is self::Number* && this.{self::Number::value}.{core::num::==}(other{self::Number*}.{self::Number::value});
   method toString() → core::String*
     return "Number(${this.{self::Number::value}})";
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Class extends core::Object {
   field self::Number* field;
   constructor •(self::Number* field) → self::Class*
     : self::Class::field = field, super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class IntClass extends core::Object {
   field core::int* field;
   constructor •(core::int* field) → self::IntClass*
     : self::IntClass::field = field, super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 extension NumberExtension on self::Number* {
   operator + = self::NumberExtension|+;
@@ -407,71 +434,71 @@
   self::Number* n0 = new self::Number::•(0);
   self::Number* n1 = new self::Number::•(1);
   self::Number* n2 = new self::Number::•(2);
-  self::expect(n0, let final self::Class* #t261 = v in #t261.{core::Object::==}(null) ?{self::Number*} null : self::ClassExtension|get#property(#t261), v.{core::Object::==}(null));
-  self::expect(n1, let final self::Class* #t262 = v in #t262.{core::Object::==}(null) ?{self::Number*} null : let final self::Number* #t263 = self::NumberExtension|+(self::ClassExtension|get#property(#t262), n1) in let final void #t264 = self::ClassExtension|set#property(#t262, #t263) in #t263, v.{core::Object::==}(null));
-  self::expect(n2, let final self::Class* #t265 = v in #t265.{core::Object::==}(null) ?{self::Number*} null : let final self::Number* #t266 = self::NumberExtension|+(self::ClassExtension|get#property(#t265), n1) in let final void #t267 = self::ClassExtension|set#property(#t265, #t266) in #t266, v.{core::Object::==}(null));
-  self::expect(n0, let final self::Class* #t268 = v in #t268.{core::Object::==}(null) ?{self::Number*} null : let final self::Number* #t269 = self::NumberExtension|-(self::ClassExtension|get#property(#t268), n2) in let final void #t270 = self::ClassExtension|set#property(#t268, #t269) in #t269, v.{core::Object::==}(null));
-  self::expect(n1, let final self::Class* #t271 = v in #t271.{core::Object::==}(null) ?{self::Number*} null : let final self::Number* #t272 = self::NumberExtension|+(self::ClassExtension|get#property(#t271), n1) in let final void #t273 = self::ClassExtension|set#property(#t271, #t272) in #t272, v.{core::Object::==}(null));
-  self::expect(n0, let final self::Class* #t274 = v in #t274.{core::Object::==}(null) ?{self::Number*} null : let final self::Number* #t275 = self::NumberExtension|-(self::ClassExtension|get#property(#t274), n1) in let final void #t276 = self::ClassExtension|set#property(#t274, #t275) in #t275, v.{core::Object::==}(null));
-  self::expect(n1, let final self::Class* #t277 = v in #t277.{core::Object::==}(null) ?{self::Number*} null : let final self::Number* #t278 = self::NumberExtension|+(self::ClassExtension|get#property(#t277), 1) in let final void #t279 = self::ClassExtension|set#property(#t277, #t278) in #t278, v.{core::Object::==}(null));
-  self::expect(n0, let final self::Class* #t280 = v in #t280.{core::Object::==}(null) ?{self::Number*} null : let final self::Number* #t281 = self::NumberExtension|-(self::ClassExtension|get#property(#t280), 1) in let final void #t282 = self::ClassExtension|set#property(#t280, #t281) in #t281, v.{core::Object::==}(null));
-  self::expect(n0, let final self::Class* #t283 = v in #t283.{core::Object::==}(null) ?{self::Number*} null : let final self::Number* #t284 = self::ClassExtension|get#property(#t283) in let final self::Number* #t285 = let final self::Number* #t286 = self::NumberExtension|+(#t284, 1) in let final void #t287 = self::ClassExtension|set#property(#t283, #t286) in #t286 in #t284, v.{core::Object::==}(null));
-  self::expect(n1, let final self::Class* #t288 = v in #t288.{core::Object::==}(null) ?{self::Number*} null : let final self::Number* #t289 = self::ClassExtension|get#property(#t288) in let final self::Number* #t290 = let final self::Number* #t291 = self::NumberExtension|-(#t289, 1) in let final void #t292 = self::ClassExtension|set#property(#t288, #t291) in #t291 in #t289, v.{core::Object::==}(null));
-  self::expect(n0, let final self::Class* #t293 = v in #t293.{core::Object::==}(null) ?{self::Number*} null : self::ClassExtension|get#property(#t293), v.{core::Object::==}(null));
-  self::expect(n0, let final self::Class* #t294 = v in #t294.{core::Object::==}(null) ?{self::Number*} null : self::ClassExtension|get#property(#t294), v.{core::Object::==}(null));
-  let final self::Class* #t295 = v in #t295.{core::Object::==}(null) ?{self::Number*} null : self::ClassExtension|set#property(#t295, self::NumberExtension|+(self::ClassExtension|get#property(#t295), n1));
-  self::expect(n1, let final self::Class* #t296 = v in #t296.{core::Object::==}(null) ?{self::Number*} null : self::ClassExtension|get#property(#t296), v.{core::Object::==}(null));
-  let final self::Class* #t297 = v in #t297.{core::Object::==}(null) ?{self::Number*} null : self::ClassExtension|set#property(#t297, self::NumberExtension|+(self::ClassExtension|get#property(#t297), n1));
-  self::expect(n2, let final self::Class* #t298 = v in #t298.{core::Object::==}(null) ?{self::Number*} null : self::ClassExtension|get#property(#t298), v.{core::Object::==}(null));
-  let final self::Class* #t299 = v in #t299.{core::Object::==}(null) ?{self::Number*} null : self::ClassExtension|set#property(#t299, self::NumberExtension|-(self::ClassExtension|get#property(#t299), n2));
-  self::expect(n0, let final self::Class* #t300 = v in #t300.{core::Object::==}(null) ?{self::Number*} null : self::ClassExtension|get#property(#t300), v.{core::Object::==}(null));
-  let final self::Class* #t301 = v in #t301.{core::Object::==}(null) ?{self::Number*} null : self::ClassExtension|set#property(#t301, self::NumberExtension|+(self::ClassExtension|get#property(#t301), n1));
-  self::expect(n1, let final self::Class* #t302 = v in #t302.{core::Object::==}(null) ?{self::Number*} null : self::ClassExtension|get#property(#t302), v.{core::Object::==}(null));
-  let final self::Class* #t303 = v in #t303.{core::Object::==}(null) ?{self::Number*} null : self::ClassExtension|set#property(#t303, self::NumberExtension|-(self::ClassExtension|get#property(#t303), n1));
-  self::expect(n0, let final self::Class* #t304 = v in #t304.{core::Object::==}(null) ?{self::Number*} null : self::ClassExtension|get#property(#t304), v.{core::Object::==}(null));
-  let final self::Class* #t305 = v in #t305.{core::Object::==}(null) ?{self::Number*} null : let final self::Number* #t306 = self::NumberExtension|+(self::ClassExtension|get#property(#t305), 1) in let final void #t307 = self::ClassExtension|set#property(#t305, #t306) in #t306;
-  self::expect(n1, let final self::Class* #t308 = v in #t308.{core::Object::==}(null) ?{self::Number*} null : self::ClassExtension|get#property(#t308), v.{core::Object::==}(null));
-  let final self::Class* #t309 = v in #t309.{core::Object::==}(null) ?{self::Number*} null : let final self::Number* #t310 = self::NumberExtension|-(self::ClassExtension|get#property(#t309), 1) in let final void #t311 = self::ClassExtension|set#property(#t309, #t310) in #t310;
-  self::expect(n0, let final self::Class* #t312 = v in #t312.{core::Object::==}(null) ?{self::Number*} null : self::ClassExtension|get#property(#t312), v.{core::Object::==}(null));
-  let final self::Class* #t313 = v in #t313.{core::Object::==}(null) ?{self::Number*} null : self::ClassExtension|set#property(#t313, self::NumberExtension|+(self::ClassExtension|get#property(#t313), 1));
-  self::expect(n1, let final self::Class* #t314 = v in #t314.{core::Object::==}(null) ?{self::Number*} null : self::ClassExtension|get#property(#t314), v.{core::Object::==}(null));
-  let final self::Class* #t315 = v in #t315.{core::Object::==}(null) ?{self::Number*} null : self::ClassExtension|set#property(#t315, self::NumberExtension|-(self::ClassExtension|get#property(#t315), 1));
-  self::expect(n0, let final self::Class* #t316 = v in #t316.{core::Object::==}(null) ?{self::Number*} null : self::ClassExtension|get#property(#t316), v.{core::Object::==}(null));
+  self::expect(n0, let final self::Class* #t261 = v in #t261.{self::Class::==}(null) ?{self::Number*} null : self::ClassExtension|get#property(#t261), v.{self::Class::==}(null));
+  self::expect(n1, let final self::Class* #t262 = v in #t262.{self::Class::==}(null) ?{self::Number*} null : let final self::Number* #t263 = self::NumberExtension|+(self::ClassExtension|get#property(#t262), n1) in let final void #t264 = self::ClassExtension|set#property(#t262, #t263) in #t263, v.{self::Class::==}(null));
+  self::expect(n2, let final self::Class* #t265 = v in #t265.{self::Class::==}(null) ?{self::Number*} null : let final self::Number* #t266 = self::NumberExtension|+(self::ClassExtension|get#property(#t265), n1) in let final void #t267 = self::ClassExtension|set#property(#t265, #t266) in #t266, v.{self::Class::==}(null));
+  self::expect(n0, let final self::Class* #t268 = v in #t268.{self::Class::==}(null) ?{self::Number*} null : let final self::Number* #t269 = self::NumberExtension|-(self::ClassExtension|get#property(#t268), n2) in let final void #t270 = self::ClassExtension|set#property(#t268, #t269) in #t269, v.{self::Class::==}(null));
+  self::expect(n1, let final self::Class* #t271 = v in #t271.{self::Class::==}(null) ?{self::Number*} null : let final self::Number* #t272 = self::NumberExtension|+(self::ClassExtension|get#property(#t271), n1) in let final void #t273 = self::ClassExtension|set#property(#t271, #t272) in #t272, v.{self::Class::==}(null));
+  self::expect(n0, let final self::Class* #t274 = v in #t274.{self::Class::==}(null) ?{self::Number*} null : let final self::Number* #t275 = self::NumberExtension|-(self::ClassExtension|get#property(#t274), n1) in let final void #t276 = self::ClassExtension|set#property(#t274, #t275) in #t275, v.{self::Class::==}(null));
+  self::expect(n1, let final self::Class* #t277 = v in #t277.{self::Class::==}(null) ?{self::Number*} null : let final self::Number* #t278 = self::NumberExtension|+(self::ClassExtension|get#property(#t277), 1) in let final void #t279 = self::ClassExtension|set#property(#t277, #t278) in #t278, v.{self::Class::==}(null));
+  self::expect(n0, let final self::Class* #t280 = v in #t280.{self::Class::==}(null) ?{self::Number*} null : let final self::Number* #t281 = self::NumberExtension|-(self::ClassExtension|get#property(#t280), 1) in let final void #t282 = self::ClassExtension|set#property(#t280, #t281) in #t281, v.{self::Class::==}(null));
+  self::expect(n0, let final self::Class* #t283 = v in #t283.{self::Class::==}(null) ?{self::Number*} null : let final self::Number* #t284 = self::ClassExtension|get#property(#t283) in let final self::Number* #t285 = let final self::Number* #t286 = self::NumberExtension|+(#t284, 1) in let final void #t287 = self::ClassExtension|set#property(#t283, #t286) in #t286 in #t284, v.{self::Class::==}(null));
+  self::expect(n1, let final self::Class* #t288 = v in #t288.{self::Class::==}(null) ?{self::Number*} null : let final self::Number* #t289 = self::ClassExtension|get#property(#t288) in let final self::Number* #t290 = let final self::Number* #t291 = self::NumberExtension|-(#t289, 1) in let final void #t292 = self::ClassExtension|set#property(#t288, #t291) in #t291 in #t289, v.{self::Class::==}(null));
+  self::expect(n0, let final self::Class* #t293 = v in #t293.{self::Class::==}(null) ?{self::Number*} null : self::ClassExtension|get#property(#t293), v.{self::Class::==}(null));
+  self::expect(n0, let final self::Class* #t294 = v in #t294.{self::Class::==}(null) ?{self::Number*} null : self::ClassExtension|get#property(#t294), v.{self::Class::==}(null));
+  let final self::Class* #t295 = v in #t295.{self::Class::==}(null) ?{self::Number*} null : self::ClassExtension|set#property(#t295, self::NumberExtension|+(self::ClassExtension|get#property(#t295), n1));
+  self::expect(n1, let final self::Class* #t296 = v in #t296.{self::Class::==}(null) ?{self::Number*} null : self::ClassExtension|get#property(#t296), v.{self::Class::==}(null));
+  let final self::Class* #t297 = v in #t297.{self::Class::==}(null) ?{self::Number*} null : self::ClassExtension|set#property(#t297, self::NumberExtension|+(self::ClassExtension|get#property(#t297), n1));
+  self::expect(n2, let final self::Class* #t298 = v in #t298.{self::Class::==}(null) ?{self::Number*} null : self::ClassExtension|get#property(#t298), v.{self::Class::==}(null));
+  let final self::Class* #t299 = v in #t299.{self::Class::==}(null) ?{self::Number*} null : self::ClassExtension|set#property(#t299, self::NumberExtension|-(self::ClassExtension|get#property(#t299), n2));
+  self::expect(n0, let final self::Class* #t300 = v in #t300.{self::Class::==}(null) ?{self::Number*} null : self::ClassExtension|get#property(#t300), v.{self::Class::==}(null));
+  let final self::Class* #t301 = v in #t301.{self::Class::==}(null) ?{self::Number*} null : self::ClassExtension|set#property(#t301, self::NumberExtension|+(self::ClassExtension|get#property(#t301), n1));
+  self::expect(n1, let final self::Class* #t302 = v in #t302.{self::Class::==}(null) ?{self::Number*} null : self::ClassExtension|get#property(#t302), v.{self::Class::==}(null));
+  let final self::Class* #t303 = v in #t303.{self::Class::==}(null) ?{self::Number*} null : self::ClassExtension|set#property(#t303, self::NumberExtension|-(self::ClassExtension|get#property(#t303), n1));
+  self::expect(n0, let final self::Class* #t304 = v in #t304.{self::Class::==}(null) ?{self::Number*} null : self::ClassExtension|get#property(#t304), v.{self::Class::==}(null));
+  let final self::Class* #t305 = v in #t305.{self::Class::==}(null) ?{self::Number*} null : let final self::Number* #t306 = self::NumberExtension|+(self::ClassExtension|get#property(#t305), 1) in let final void #t307 = self::ClassExtension|set#property(#t305, #t306) in #t306;
+  self::expect(n1, let final self::Class* #t308 = v in #t308.{self::Class::==}(null) ?{self::Number*} null : self::ClassExtension|get#property(#t308), v.{self::Class::==}(null));
+  let final self::Class* #t309 = v in #t309.{self::Class::==}(null) ?{self::Number*} null : let final self::Number* #t310 = self::NumberExtension|-(self::ClassExtension|get#property(#t309), 1) in let final void #t311 = self::ClassExtension|set#property(#t309, #t310) in #t310;
+  self::expect(n0, let final self::Class* #t312 = v in #t312.{self::Class::==}(null) ?{self::Number*} null : self::ClassExtension|get#property(#t312), v.{self::Class::==}(null));
+  let final self::Class* #t313 = v in #t313.{self::Class::==}(null) ?{self::Number*} null : self::ClassExtension|set#property(#t313, self::NumberExtension|+(self::ClassExtension|get#property(#t313), 1));
+  self::expect(n1, let final self::Class* #t314 = v in #t314.{self::Class::==}(null) ?{self::Number*} null : self::ClassExtension|get#property(#t314), v.{self::Class::==}(null));
+  let final self::Class* #t315 = v in #t315.{self::Class::==}(null) ?{self::Number*} null : self::ClassExtension|set#property(#t315, self::NumberExtension|-(self::ClassExtension|get#property(#t315), 1));
+  self::expect(n0, let final self::Class* #t316 = v in #t316.{self::Class::==}(null) ?{self::Number*} null : self::ClassExtension|get#property(#t316), v.{self::Class::==}(null));
 }
 static method testExplicitNullAwareIntProperties(self::IntClass* v) → dynamic {
   core::int* n0 = 0;
   core::int* n1 = 1;
   core::int* n2 = 2;
-  self::expect(n0, let final self::IntClass* #t317 = v in #t317.{core::Object::==}(null) ?{core::int*} null : self::IntClassExtension|get#property(#t317), v.{core::Object::==}(null));
-  self::expect(n1, let final self::IntClass* #t318 = v in #t318.{core::Object::==}(null) ?{core::int*} null : let final core::int* #t319 = self::IntClassExtension|get#property(#t318).{core::num::+}(n1) in let final void #t320 = self::IntClassExtension|set#property(#t318, #t319) in #t319, v.{core::Object::==}(null));
-  self::expect(n2, let final self::IntClass* #t321 = v in #t321.{core::Object::==}(null) ?{core::int*} null : let final core::int* #t322 = self::IntClassExtension|get#property(#t321).{core::num::+}(n1) in let final void #t323 = self::IntClassExtension|set#property(#t321, #t322) in #t322, v.{core::Object::==}(null));
-  self::expect(n0, let final self::IntClass* #t324 = v in #t324.{core::Object::==}(null) ?{core::int*} null : let final core::int* #t325 = self::IntClassExtension|get#property(#t324).{core::num::-}(n2) in let final void #t326 = self::IntClassExtension|set#property(#t324, #t325) in #t325, v.{core::Object::==}(null));
-  self::expect(n1, let final self::IntClass* #t327 = v in #t327.{core::Object::==}(null) ?{core::int*} null : let final core::int* #t328 = self::IntClassExtension|get#property(#t327).{core::num::+}(n1) in let final void #t329 = self::IntClassExtension|set#property(#t327, #t328) in #t328, v.{core::Object::==}(null));
-  self::expect(n0, let final self::IntClass* #t330 = v in #t330.{core::Object::==}(null) ?{core::int*} null : let final core::int* #t331 = self::IntClassExtension|get#property(#t330).{core::num::-}(n1) in let final void #t332 = self::IntClassExtension|set#property(#t330, #t331) in #t331, v.{core::Object::==}(null));
-  self::expect(n1, let final self::IntClass* #t333 = v in #t333.{core::Object::==}(null) ?{core::int*} null : let final core::int* #t334 = self::IntClassExtension|get#property(#t333).{core::num::+}(1) in let final void #t335 = self::IntClassExtension|set#property(#t333, #t334) in #t334, v.{core::Object::==}(null));
-  self::expect(n0, let final self::IntClass* #t336 = v in #t336.{core::Object::==}(null) ?{core::int*} null : let final core::int* #t337 = self::IntClassExtension|get#property(#t336).{core::num::-}(1) in let final void #t338 = self::IntClassExtension|set#property(#t336, #t337) in #t337, v.{core::Object::==}(null));
-  self::expect(n0, let final self::IntClass* #t339 = v in #t339.{core::Object::==}(null) ?{core::int*} null : let final core::int* #t340 = self::IntClassExtension|get#property(#t339) in let final core::int* #t341 = let final core::int* #t342 = #t340.{core::num::+}(1) in let final void #t343 = self::IntClassExtension|set#property(#t339, #t342) in #t342 in #t340, v.{core::Object::==}(null));
-  self::expect(n1, let final self::IntClass* #t344 = v in #t344.{core::Object::==}(null) ?{core::int*} null : let final core::int* #t345 = self::IntClassExtension|get#property(#t344) in let final core::int* #t346 = let final core::int* #t347 = #t345.{core::num::-}(1) in let final void #t348 = self::IntClassExtension|set#property(#t344, #t347) in #t347 in #t345, v.{core::Object::==}(null));
-  self::expect(n0, let final self::IntClass* #t349 = v in #t349.{core::Object::==}(null) ?{core::int*} null : self::IntClassExtension|get#property(#t349), v.{core::Object::==}(null));
-  self::expect(n0, let final self::IntClass* #t350 = v in #t350.{core::Object::==}(null) ?{core::int*} null : self::IntClassExtension|get#property(#t350), v.{core::Object::==}(null));
-  let final self::IntClass* #t351 = v in #t351.{core::Object::==}(null) ?{core::int*} null : self::IntClassExtension|set#property(#t351, self::IntClassExtension|get#property(#t351).{core::num::+}(n1));
-  self::expect(n1, let final self::IntClass* #t352 = v in #t352.{core::Object::==}(null) ?{core::int*} null : self::IntClassExtension|get#property(#t352), v.{core::Object::==}(null));
-  let final self::IntClass* #t353 = v in #t353.{core::Object::==}(null) ?{core::int*} null : self::IntClassExtension|set#property(#t353, self::IntClassExtension|get#property(#t353).{core::num::+}(n1));
-  self::expect(n2, let final self::IntClass* #t354 = v in #t354.{core::Object::==}(null) ?{core::int*} null : self::IntClassExtension|get#property(#t354), v.{core::Object::==}(null));
-  let final self::IntClass* #t355 = v in #t355.{core::Object::==}(null) ?{core::int*} null : self::IntClassExtension|set#property(#t355, self::IntClassExtension|get#property(#t355).{core::num::-}(n2));
-  self::expect(n0, let final self::IntClass* #t356 = v in #t356.{core::Object::==}(null) ?{core::int*} null : self::IntClassExtension|get#property(#t356), v.{core::Object::==}(null));
-  let final self::IntClass* #t357 = v in #t357.{core::Object::==}(null) ?{core::int*} null : self::IntClassExtension|set#property(#t357, self::IntClassExtension|get#property(#t357).{core::num::+}(n1));
-  self::expect(n1, let final self::IntClass* #t358 = v in #t358.{core::Object::==}(null) ?{core::int*} null : self::IntClassExtension|get#property(#t358), v.{core::Object::==}(null));
-  let final self::IntClass* #t359 = v in #t359.{core::Object::==}(null) ?{core::int*} null : self::IntClassExtension|set#property(#t359, self::IntClassExtension|get#property(#t359).{core::num::-}(n1));
-  self::expect(n0, let final self::IntClass* #t360 = v in #t360.{core::Object::==}(null) ?{core::int*} null : self::IntClassExtension|get#property(#t360), v.{core::Object::==}(null));
-  let final self::IntClass* #t361 = v in #t361.{core::Object::==}(null) ?{core::int*} null : let final core::int* #t362 = self::IntClassExtension|get#property(#t361).{core::num::+}(1) in let final void #t363 = self::IntClassExtension|set#property(#t361, #t362) in #t362;
-  self::expect(n1, let final self::IntClass* #t364 = v in #t364.{core::Object::==}(null) ?{core::int*} null : self::IntClassExtension|get#property(#t364), v.{core::Object::==}(null));
-  let final self::IntClass* #t365 = v in #t365.{core::Object::==}(null) ?{core::int*} null : let final core::int* #t366 = self::IntClassExtension|get#property(#t365).{core::num::-}(1) in let final void #t367 = self::IntClassExtension|set#property(#t365, #t366) in #t366;
-  self::expect(n0, let final self::IntClass* #t368 = v in #t368.{core::Object::==}(null) ?{core::int*} null : self::IntClassExtension|get#property(#t368), v.{core::Object::==}(null));
-  let final self::IntClass* #t369 = v in #t369.{core::Object::==}(null) ?{core::int*} null : self::IntClassExtension|set#property(#t369, self::IntClassExtension|get#property(#t369).{core::num::+}(1));
-  self::expect(n1, let final self::IntClass* #t370 = v in #t370.{core::Object::==}(null) ?{core::int*} null : self::IntClassExtension|get#property(#t370), v.{core::Object::==}(null));
-  let final self::IntClass* #t371 = v in #t371.{core::Object::==}(null) ?{core::int*} null : self::IntClassExtension|set#property(#t371, self::IntClassExtension|get#property(#t371).{core::num::-}(1));
-  self::expect(n0, let final self::IntClass* #t372 = v in #t372.{core::Object::==}(null) ?{core::int*} null : self::IntClassExtension|get#property(#t372), v.{core::Object::==}(null));
+  self::expect(n0, let final self::IntClass* #t317 = v in #t317.{self::IntClass::==}(null) ?{core::int*} null : self::IntClassExtension|get#property(#t317), v.{self::IntClass::==}(null));
+  self::expect(n1, let final self::IntClass* #t318 = v in #t318.{self::IntClass::==}(null) ?{core::int*} null : let final core::int* #t319 = self::IntClassExtension|get#property(#t318).{core::num::+}(n1) in let final void #t320 = self::IntClassExtension|set#property(#t318, #t319) in #t319, v.{self::IntClass::==}(null));
+  self::expect(n2, let final self::IntClass* #t321 = v in #t321.{self::IntClass::==}(null) ?{core::int*} null : let final core::int* #t322 = self::IntClassExtension|get#property(#t321).{core::num::+}(n1) in let final void #t323 = self::IntClassExtension|set#property(#t321, #t322) in #t322, v.{self::IntClass::==}(null));
+  self::expect(n0, let final self::IntClass* #t324 = v in #t324.{self::IntClass::==}(null) ?{core::int*} null : let final core::int* #t325 = self::IntClassExtension|get#property(#t324).{core::num::-}(n2) in let final void #t326 = self::IntClassExtension|set#property(#t324, #t325) in #t325, v.{self::IntClass::==}(null));
+  self::expect(n1, let final self::IntClass* #t327 = v in #t327.{self::IntClass::==}(null) ?{core::int*} null : let final core::int* #t328 = self::IntClassExtension|get#property(#t327).{core::num::+}(n1) in let final void #t329 = self::IntClassExtension|set#property(#t327, #t328) in #t328, v.{self::IntClass::==}(null));
+  self::expect(n0, let final self::IntClass* #t330 = v in #t330.{self::IntClass::==}(null) ?{core::int*} null : let final core::int* #t331 = self::IntClassExtension|get#property(#t330).{core::num::-}(n1) in let final void #t332 = self::IntClassExtension|set#property(#t330, #t331) in #t331, v.{self::IntClass::==}(null));
+  self::expect(n1, let final self::IntClass* #t333 = v in #t333.{self::IntClass::==}(null) ?{core::int*} null : let final core::int* #t334 = self::IntClassExtension|get#property(#t333).{core::num::+}(1) in let final void #t335 = self::IntClassExtension|set#property(#t333, #t334) in #t334, v.{self::IntClass::==}(null));
+  self::expect(n0, let final self::IntClass* #t336 = v in #t336.{self::IntClass::==}(null) ?{core::int*} null : let final core::int* #t337 = self::IntClassExtension|get#property(#t336).{core::num::-}(1) in let final void #t338 = self::IntClassExtension|set#property(#t336, #t337) in #t337, v.{self::IntClass::==}(null));
+  self::expect(n0, let final self::IntClass* #t339 = v in #t339.{self::IntClass::==}(null) ?{core::int*} null : let final core::int* #t340 = self::IntClassExtension|get#property(#t339) in let final core::int* #t341 = let final core::int* #t342 = #t340.{core::num::+}(1) in let final void #t343 = self::IntClassExtension|set#property(#t339, #t342) in #t342 in #t340, v.{self::IntClass::==}(null));
+  self::expect(n1, let final self::IntClass* #t344 = v in #t344.{self::IntClass::==}(null) ?{core::int*} null : let final core::int* #t345 = self::IntClassExtension|get#property(#t344) in let final core::int* #t346 = let final core::int* #t347 = #t345.{core::num::-}(1) in let final void #t348 = self::IntClassExtension|set#property(#t344, #t347) in #t347 in #t345, v.{self::IntClass::==}(null));
+  self::expect(n0, let final self::IntClass* #t349 = v in #t349.{self::IntClass::==}(null) ?{core::int*} null : self::IntClassExtension|get#property(#t349), v.{self::IntClass::==}(null));
+  self::expect(n0, let final self::IntClass* #t350 = v in #t350.{self::IntClass::==}(null) ?{core::int*} null : self::IntClassExtension|get#property(#t350), v.{self::IntClass::==}(null));
+  let final self::IntClass* #t351 = v in #t351.{self::IntClass::==}(null) ?{core::int*} null : self::IntClassExtension|set#property(#t351, self::IntClassExtension|get#property(#t351).{core::num::+}(n1));
+  self::expect(n1, let final self::IntClass* #t352 = v in #t352.{self::IntClass::==}(null) ?{core::int*} null : self::IntClassExtension|get#property(#t352), v.{self::IntClass::==}(null));
+  let final self::IntClass* #t353 = v in #t353.{self::IntClass::==}(null) ?{core::int*} null : self::IntClassExtension|set#property(#t353, self::IntClassExtension|get#property(#t353).{core::num::+}(n1));
+  self::expect(n2, let final self::IntClass* #t354 = v in #t354.{self::IntClass::==}(null) ?{core::int*} null : self::IntClassExtension|get#property(#t354), v.{self::IntClass::==}(null));
+  let final self::IntClass* #t355 = v in #t355.{self::IntClass::==}(null) ?{core::int*} null : self::IntClassExtension|set#property(#t355, self::IntClassExtension|get#property(#t355).{core::num::-}(n2));
+  self::expect(n0, let final self::IntClass* #t356 = v in #t356.{self::IntClass::==}(null) ?{core::int*} null : self::IntClassExtension|get#property(#t356), v.{self::IntClass::==}(null));
+  let final self::IntClass* #t357 = v in #t357.{self::IntClass::==}(null) ?{core::int*} null : self::IntClassExtension|set#property(#t357, self::IntClassExtension|get#property(#t357).{core::num::+}(n1));
+  self::expect(n1, let final self::IntClass* #t358 = v in #t358.{self::IntClass::==}(null) ?{core::int*} null : self::IntClassExtension|get#property(#t358), v.{self::IntClass::==}(null));
+  let final self::IntClass* #t359 = v in #t359.{self::IntClass::==}(null) ?{core::int*} null : self::IntClassExtension|set#property(#t359, self::IntClassExtension|get#property(#t359).{core::num::-}(n1));
+  self::expect(n0, let final self::IntClass* #t360 = v in #t360.{self::IntClass::==}(null) ?{core::int*} null : self::IntClassExtension|get#property(#t360), v.{self::IntClass::==}(null));
+  let final self::IntClass* #t361 = v in #t361.{self::IntClass::==}(null) ?{core::int*} null : let final core::int* #t362 = self::IntClassExtension|get#property(#t361).{core::num::+}(1) in let final void #t363 = self::IntClassExtension|set#property(#t361, #t362) in #t362;
+  self::expect(n1, let final self::IntClass* #t364 = v in #t364.{self::IntClass::==}(null) ?{core::int*} null : self::IntClassExtension|get#property(#t364), v.{self::IntClass::==}(null));
+  let final self::IntClass* #t365 = v in #t365.{self::IntClass::==}(null) ?{core::int*} null : let final core::int* #t366 = self::IntClassExtension|get#property(#t365).{core::num::-}(1) in let final void #t367 = self::IntClassExtension|set#property(#t365, #t366) in #t366;
+  self::expect(n0, let final self::IntClass* #t368 = v in #t368.{self::IntClass::==}(null) ?{core::int*} null : self::IntClassExtension|get#property(#t368), v.{self::IntClass::==}(null));
+  let final self::IntClass* #t369 = v in #t369.{self::IntClass::==}(null) ?{core::int*} null : self::IntClassExtension|set#property(#t369, self::IntClassExtension|get#property(#t369).{core::num::+}(1));
+  self::expect(n1, let final self::IntClass* #t370 = v in #t370.{self::IntClass::==}(null) ?{core::int*} null : self::IntClassExtension|get#property(#t370), v.{self::IntClass::==}(null));
+  let final self::IntClass* #t371 = v in #t371.{self::IntClass::==}(null) ?{core::int*} null : self::IntClassExtension|set#property(#t371, self::IntClassExtension|get#property(#t371).{core::num::-}(1));
+  self::expect(n0, let final self::IntClass* #t372 = v in #t372.{self::IntClass::==}(null) ?{core::int*} null : self::IntClassExtension|get#property(#t372), v.{self::IntClass::==}(null));
 }
 static method expect(dynamic expected, dynamic actual, [dynamic expectNull = #C1]) → dynamic {
   if(expectNull as{TypeError,ForDynamic} core::bool*) {
diff --git a/pkg/front_end/testcases/extensions/compounds.dart.strong.transformed.expect b/pkg/front_end/testcases/extensions/compounds.dart.strong.transformed.expect
index c2f32b4..6d48889 100644
--- a/pkg/front_end/testcases/extensions/compounds.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/extensions/compounds.dart.strong.transformed.expect
@@ -13,18 +13,45 @@
     return other is self::Number* && this.{self::Number::value}.{core::num::==}(other{self::Number*}.{self::Number::value});
   method toString() → core::String*
     return "Number(${this.{self::Number::value}})";
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Class extends core::Object {
   field self::Number* field;
   constructor •(self::Number* field) → self::Class*
     : self::Class::field = field, super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class IntClass extends core::Object {
   field core::int* field;
   constructor •(core::int* field) → self::IntClass*
     : self::IntClass::field = field, super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 extension NumberExtension on self::Number* {
   operator + = self::NumberExtension|+;
@@ -407,71 +434,71 @@
   self::Number* n0 = new self::Number::•(0);
   self::Number* n1 = new self::Number::•(1);
   self::Number* n2 = new self::Number::•(2);
-  self::expect(n0, let final self::Class* #t261 = v in #t261.{core::Object::==}(null) ?{self::Number*} null : self::ClassExtension|get#property(#t261), v.{core::Object::==}(null));
-  self::expect(n1, let final self::Class* #t262 = v in #t262.{core::Object::==}(null) ?{self::Number*} null : let final self::Number* #t263 = self::NumberExtension|+(self::ClassExtension|get#property(#t262), n1) in let final void #t264 = self::ClassExtension|set#property(#t262, #t263) in #t263, v.{core::Object::==}(null));
-  self::expect(n2, let final self::Class* #t265 = v in #t265.{core::Object::==}(null) ?{self::Number*} null : let final self::Number* #t266 = self::NumberExtension|+(self::ClassExtension|get#property(#t265), n1) in let final void #t267 = self::ClassExtension|set#property(#t265, #t266) in #t266, v.{core::Object::==}(null));
-  self::expect(n0, let final self::Class* #t268 = v in #t268.{core::Object::==}(null) ?{self::Number*} null : let final self::Number* #t269 = self::NumberExtension|-(self::ClassExtension|get#property(#t268), n2) in let final void #t270 = self::ClassExtension|set#property(#t268, #t269) in #t269, v.{core::Object::==}(null));
-  self::expect(n1, let final self::Class* #t271 = v in #t271.{core::Object::==}(null) ?{self::Number*} null : let final self::Number* #t272 = self::NumberExtension|+(self::ClassExtension|get#property(#t271), n1) in let final void #t273 = self::ClassExtension|set#property(#t271, #t272) in #t272, v.{core::Object::==}(null));
-  self::expect(n0, let final self::Class* #t274 = v in #t274.{core::Object::==}(null) ?{self::Number*} null : let final self::Number* #t275 = self::NumberExtension|-(self::ClassExtension|get#property(#t274), n1) in let final void #t276 = self::ClassExtension|set#property(#t274, #t275) in #t275, v.{core::Object::==}(null));
-  self::expect(n1, let final self::Class* #t277 = v in #t277.{core::Object::==}(null) ?{self::Number*} null : let final self::Number* #t278 = self::NumberExtension|+(self::ClassExtension|get#property(#t277), 1) in let final void #t279 = self::ClassExtension|set#property(#t277, #t278) in #t278, v.{core::Object::==}(null));
-  self::expect(n0, let final self::Class* #t280 = v in #t280.{core::Object::==}(null) ?{self::Number*} null : let final self::Number* #t281 = self::NumberExtension|-(self::ClassExtension|get#property(#t280), 1) in let final void #t282 = self::ClassExtension|set#property(#t280, #t281) in #t281, v.{core::Object::==}(null));
-  self::expect(n0, let final self::Class* #t283 = v in #t283.{core::Object::==}(null) ?{self::Number*} null : let final self::Number* #t284 = self::ClassExtension|get#property(#t283) in let final self::Number* #t285 = let final self::Number* #t286 = self::NumberExtension|+(#t284, 1) in let final void #t287 = self::ClassExtension|set#property(#t283, #t286) in #t286 in #t284, v.{core::Object::==}(null));
-  self::expect(n1, let final self::Class* #t288 = v in #t288.{core::Object::==}(null) ?{self::Number*} null : let final self::Number* #t289 = self::ClassExtension|get#property(#t288) in let final self::Number* #t290 = let final self::Number* #t291 = self::NumberExtension|-(#t289, 1) in let final void #t292 = self::ClassExtension|set#property(#t288, #t291) in #t291 in #t289, v.{core::Object::==}(null));
-  self::expect(n0, let final self::Class* #t293 = v in #t293.{core::Object::==}(null) ?{self::Number*} null : self::ClassExtension|get#property(#t293), v.{core::Object::==}(null));
-  self::expect(n0, let final self::Class* #t294 = v in #t294.{core::Object::==}(null) ?{self::Number*} null : self::ClassExtension|get#property(#t294), v.{core::Object::==}(null));
-  let final self::Class* #t295 = v in #t295.{core::Object::==}(null) ?{self::Number*} null : self::ClassExtension|set#property(#t295, self::NumberExtension|+(self::ClassExtension|get#property(#t295), n1));
-  self::expect(n1, let final self::Class* #t296 = v in #t296.{core::Object::==}(null) ?{self::Number*} null : self::ClassExtension|get#property(#t296), v.{core::Object::==}(null));
-  let final self::Class* #t297 = v in #t297.{core::Object::==}(null) ?{self::Number*} null : self::ClassExtension|set#property(#t297, self::NumberExtension|+(self::ClassExtension|get#property(#t297), n1));
-  self::expect(n2, let final self::Class* #t298 = v in #t298.{core::Object::==}(null) ?{self::Number*} null : self::ClassExtension|get#property(#t298), v.{core::Object::==}(null));
-  let final self::Class* #t299 = v in #t299.{core::Object::==}(null) ?{self::Number*} null : self::ClassExtension|set#property(#t299, self::NumberExtension|-(self::ClassExtension|get#property(#t299), n2));
-  self::expect(n0, let final self::Class* #t300 = v in #t300.{core::Object::==}(null) ?{self::Number*} null : self::ClassExtension|get#property(#t300), v.{core::Object::==}(null));
-  let final self::Class* #t301 = v in #t301.{core::Object::==}(null) ?{self::Number*} null : self::ClassExtension|set#property(#t301, self::NumberExtension|+(self::ClassExtension|get#property(#t301), n1));
-  self::expect(n1, let final self::Class* #t302 = v in #t302.{core::Object::==}(null) ?{self::Number*} null : self::ClassExtension|get#property(#t302), v.{core::Object::==}(null));
-  let final self::Class* #t303 = v in #t303.{core::Object::==}(null) ?{self::Number*} null : self::ClassExtension|set#property(#t303, self::NumberExtension|-(self::ClassExtension|get#property(#t303), n1));
-  self::expect(n0, let final self::Class* #t304 = v in #t304.{core::Object::==}(null) ?{self::Number*} null : self::ClassExtension|get#property(#t304), v.{core::Object::==}(null));
-  let final self::Class* #t305 = v in #t305.{core::Object::==}(null) ?{self::Number*} null : let final self::Number* #t306 = self::NumberExtension|+(self::ClassExtension|get#property(#t305), 1) in let final void #t307 = self::ClassExtension|set#property(#t305, #t306) in #t306;
-  self::expect(n1, let final self::Class* #t308 = v in #t308.{core::Object::==}(null) ?{self::Number*} null : self::ClassExtension|get#property(#t308), v.{core::Object::==}(null));
-  let final self::Class* #t309 = v in #t309.{core::Object::==}(null) ?{self::Number*} null : let final self::Number* #t310 = self::NumberExtension|-(self::ClassExtension|get#property(#t309), 1) in let final void #t311 = self::ClassExtension|set#property(#t309, #t310) in #t310;
-  self::expect(n0, let final self::Class* #t312 = v in #t312.{core::Object::==}(null) ?{self::Number*} null : self::ClassExtension|get#property(#t312), v.{core::Object::==}(null));
-  let final self::Class* #t313 = v in #t313.{core::Object::==}(null) ?{self::Number*} null : self::ClassExtension|set#property(#t313, self::NumberExtension|+(self::ClassExtension|get#property(#t313), 1));
-  self::expect(n1, let final self::Class* #t314 = v in #t314.{core::Object::==}(null) ?{self::Number*} null : self::ClassExtension|get#property(#t314), v.{core::Object::==}(null));
-  let final self::Class* #t315 = v in #t315.{core::Object::==}(null) ?{self::Number*} null : self::ClassExtension|set#property(#t315, self::NumberExtension|-(self::ClassExtension|get#property(#t315), 1));
-  self::expect(n0, let final self::Class* #t316 = v in #t316.{core::Object::==}(null) ?{self::Number*} null : self::ClassExtension|get#property(#t316), v.{core::Object::==}(null));
+  self::expect(n0, let final self::Class* #t261 = v in #t261.{self::Class::==}(null) ?{self::Number*} null : self::ClassExtension|get#property(#t261), v.{self::Class::==}(null));
+  self::expect(n1, let final self::Class* #t262 = v in #t262.{self::Class::==}(null) ?{self::Number*} null : let final self::Number* #t263 = self::NumberExtension|+(self::ClassExtension|get#property(#t262), n1) in let final void #t264 = self::ClassExtension|set#property(#t262, #t263) in #t263, v.{self::Class::==}(null));
+  self::expect(n2, let final self::Class* #t265 = v in #t265.{self::Class::==}(null) ?{self::Number*} null : let final self::Number* #t266 = self::NumberExtension|+(self::ClassExtension|get#property(#t265), n1) in let final void #t267 = self::ClassExtension|set#property(#t265, #t266) in #t266, v.{self::Class::==}(null));
+  self::expect(n0, let final self::Class* #t268 = v in #t268.{self::Class::==}(null) ?{self::Number*} null : let final self::Number* #t269 = self::NumberExtension|-(self::ClassExtension|get#property(#t268), n2) in let final void #t270 = self::ClassExtension|set#property(#t268, #t269) in #t269, v.{self::Class::==}(null));
+  self::expect(n1, let final self::Class* #t271 = v in #t271.{self::Class::==}(null) ?{self::Number*} null : let final self::Number* #t272 = self::NumberExtension|+(self::ClassExtension|get#property(#t271), n1) in let final void #t273 = self::ClassExtension|set#property(#t271, #t272) in #t272, v.{self::Class::==}(null));
+  self::expect(n0, let final self::Class* #t274 = v in #t274.{self::Class::==}(null) ?{self::Number*} null : let final self::Number* #t275 = self::NumberExtension|-(self::ClassExtension|get#property(#t274), n1) in let final void #t276 = self::ClassExtension|set#property(#t274, #t275) in #t275, v.{self::Class::==}(null));
+  self::expect(n1, let final self::Class* #t277 = v in #t277.{self::Class::==}(null) ?{self::Number*} null : let final self::Number* #t278 = self::NumberExtension|+(self::ClassExtension|get#property(#t277), 1) in let final void #t279 = self::ClassExtension|set#property(#t277, #t278) in #t278, v.{self::Class::==}(null));
+  self::expect(n0, let final self::Class* #t280 = v in #t280.{self::Class::==}(null) ?{self::Number*} null : let final self::Number* #t281 = self::NumberExtension|-(self::ClassExtension|get#property(#t280), 1) in let final void #t282 = self::ClassExtension|set#property(#t280, #t281) in #t281, v.{self::Class::==}(null));
+  self::expect(n0, let final self::Class* #t283 = v in #t283.{self::Class::==}(null) ?{self::Number*} null : let final self::Number* #t284 = self::ClassExtension|get#property(#t283) in let final self::Number* #t285 = let final self::Number* #t286 = self::NumberExtension|+(#t284, 1) in let final void #t287 = self::ClassExtension|set#property(#t283, #t286) in #t286 in #t284, v.{self::Class::==}(null));
+  self::expect(n1, let final self::Class* #t288 = v in #t288.{self::Class::==}(null) ?{self::Number*} null : let final self::Number* #t289 = self::ClassExtension|get#property(#t288) in let final self::Number* #t290 = let final self::Number* #t291 = self::NumberExtension|-(#t289, 1) in let final void #t292 = self::ClassExtension|set#property(#t288, #t291) in #t291 in #t289, v.{self::Class::==}(null));
+  self::expect(n0, let final self::Class* #t293 = v in #t293.{self::Class::==}(null) ?{self::Number*} null : self::ClassExtension|get#property(#t293), v.{self::Class::==}(null));
+  self::expect(n0, let final self::Class* #t294 = v in #t294.{self::Class::==}(null) ?{self::Number*} null : self::ClassExtension|get#property(#t294), v.{self::Class::==}(null));
+  let final self::Class* #t295 = v in #t295.{self::Class::==}(null) ?{self::Number*} null : self::ClassExtension|set#property(#t295, self::NumberExtension|+(self::ClassExtension|get#property(#t295), n1));
+  self::expect(n1, let final self::Class* #t296 = v in #t296.{self::Class::==}(null) ?{self::Number*} null : self::ClassExtension|get#property(#t296), v.{self::Class::==}(null));
+  let final self::Class* #t297 = v in #t297.{self::Class::==}(null) ?{self::Number*} null : self::ClassExtension|set#property(#t297, self::NumberExtension|+(self::ClassExtension|get#property(#t297), n1));
+  self::expect(n2, let final self::Class* #t298 = v in #t298.{self::Class::==}(null) ?{self::Number*} null : self::ClassExtension|get#property(#t298), v.{self::Class::==}(null));
+  let final self::Class* #t299 = v in #t299.{self::Class::==}(null) ?{self::Number*} null : self::ClassExtension|set#property(#t299, self::NumberExtension|-(self::ClassExtension|get#property(#t299), n2));
+  self::expect(n0, let final self::Class* #t300 = v in #t300.{self::Class::==}(null) ?{self::Number*} null : self::ClassExtension|get#property(#t300), v.{self::Class::==}(null));
+  let final self::Class* #t301 = v in #t301.{self::Class::==}(null) ?{self::Number*} null : self::ClassExtension|set#property(#t301, self::NumberExtension|+(self::ClassExtension|get#property(#t301), n1));
+  self::expect(n1, let final self::Class* #t302 = v in #t302.{self::Class::==}(null) ?{self::Number*} null : self::ClassExtension|get#property(#t302), v.{self::Class::==}(null));
+  let final self::Class* #t303 = v in #t303.{self::Class::==}(null) ?{self::Number*} null : self::ClassExtension|set#property(#t303, self::NumberExtension|-(self::ClassExtension|get#property(#t303), n1));
+  self::expect(n0, let final self::Class* #t304 = v in #t304.{self::Class::==}(null) ?{self::Number*} null : self::ClassExtension|get#property(#t304), v.{self::Class::==}(null));
+  let final self::Class* #t305 = v in #t305.{self::Class::==}(null) ?{self::Number*} null : let final self::Number* #t306 = self::NumberExtension|+(self::ClassExtension|get#property(#t305), 1) in let final void #t307 = self::ClassExtension|set#property(#t305, #t306) in #t306;
+  self::expect(n1, let final self::Class* #t308 = v in #t308.{self::Class::==}(null) ?{self::Number*} null : self::ClassExtension|get#property(#t308), v.{self::Class::==}(null));
+  let final self::Class* #t309 = v in #t309.{self::Class::==}(null) ?{self::Number*} null : let final self::Number* #t310 = self::NumberExtension|-(self::ClassExtension|get#property(#t309), 1) in let final void #t311 = self::ClassExtension|set#property(#t309, #t310) in #t310;
+  self::expect(n0, let final self::Class* #t312 = v in #t312.{self::Class::==}(null) ?{self::Number*} null : self::ClassExtension|get#property(#t312), v.{self::Class::==}(null));
+  let final self::Class* #t313 = v in #t313.{self::Class::==}(null) ?{self::Number*} null : self::ClassExtension|set#property(#t313, self::NumberExtension|+(self::ClassExtension|get#property(#t313), 1));
+  self::expect(n1, let final self::Class* #t314 = v in #t314.{self::Class::==}(null) ?{self::Number*} null : self::ClassExtension|get#property(#t314), v.{self::Class::==}(null));
+  let final self::Class* #t315 = v in #t315.{self::Class::==}(null) ?{self::Number*} null : self::ClassExtension|set#property(#t315, self::NumberExtension|-(self::ClassExtension|get#property(#t315), 1));
+  self::expect(n0, let final self::Class* #t316 = v in #t316.{self::Class::==}(null) ?{self::Number*} null : self::ClassExtension|get#property(#t316), v.{self::Class::==}(null));
 }
 static method testExplicitNullAwareIntProperties(self::IntClass* v) → dynamic {
   core::int* n0 = 0;
   core::int* n1 = 1;
   core::int* n2 = 2;
-  self::expect(n0, let final self::IntClass* #t317 = v in #t317.{core::Object::==}(null) ?{core::int*} null : self::IntClassExtension|get#property(#t317), v.{core::Object::==}(null));
-  self::expect(n1, let final self::IntClass* #t318 = v in #t318.{core::Object::==}(null) ?{core::int*} null : let final core::int* #t319 = self::IntClassExtension|get#property(#t318).{core::num::+}(n1) in let final void #t320 = self::IntClassExtension|set#property(#t318, #t319) in #t319, v.{core::Object::==}(null));
-  self::expect(n2, let final self::IntClass* #t321 = v in #t321.{core::Object::==}(null) ?{core::int*} null : let final core::int* #t322 = self::IntClassExtension|get#property(#t321).{core::num::+}(n1) in let final void #t323 = self::IntClassExtension|set#property(#t321, #t322) in #t322, v.{core::Object::==}(null));
-  self::expect(n0, let final self::IntClass* #t324 = v in #t324.{core::Object::==}(null) ?{core::int*} null : let final core::int* #t325 = self::IntClassExtension|get#property(#t324).{core::num::-}(n2) in let final void #t326 = self::IntClassExtension|set#property(#t324, #t325) in #t325, v.{core::Object::==}(null));
-  self::expect(n1, let final self::IntClass* #t327 = v in #t327.{core::Object::==}(null) ?{core::int*} null : let final core::int* #t328 = self::IntClassExtension|get#property(#t327).{core::num::+}(n1) in let final void #t329 = self::IntClassExtension|set#property(#t327, #t328) in #t328, v.{core::Object::==}(null));
-  self::expect(n0, let final self::IntClass* #t330 = v in #t330.{core::Object::==}(null) ?{core::int*} null : let final core::int* #t331 = self::IntClassExtension|get#property(#t330).{core::num::-}(n1) in let final void #t332 = self::IntClassExtension|set#property(#t330, #t331) in #t331, v.{core::Object::==}(null));
-  self::expect(n1, let final self::IntClass* #t333 = v in #t333.{core::Object::==}(null) ?{core::int*} null : let final core::int* #t334 = self::IntClassExtension|get#property(#t333).{core::num::+}(1) in let final void #t335 = self::IntClassExtension|set#property(#t333, #t334) in #t334, v.{core::Object::==}(null));
-  self::expect(n0, let final self::IntClass* #t336 = v in #t336.{core::Object::==}(null) ?{core::int*} null : let final core::int* #t337 = self::IntClassExtension|get#property(#t336).{core::num::-}(1) in let final void #t338 = self::IntClassExtension|set#property(#t336, #t337) in #t337, v.{core::Object::==}(null));
-  self::expect(n0, let final self::IntClass* #t339 = v in #t339.{core::Object::==}(null) ?{core::int*} null : let final core::int* #t340 = self::IntClassExtension|get#property(#t339) in let final core::int* #t341 = let final core::int* #t342 = #t340.{core::num::+}(1) in let final void #t343 = self::IntClassExtension|set#property(#t339, #t342) in #t342 in #t340, v.{core::Object::==}(null));
-  self::expect(n1, let final self::IntClass* #t344 = v in #t344.{core::Object::==}(null) ?{core::int*} null : let final core::int* #t345 = self::IntClassExtension|get#property(#t344) in let final core::int* #t346 = let final core::int* #t347 = #t345.{core::num::-}(1) in let final void #t348 = self::IntClassExtension|set#property(#t344, #t347) in #t347 in #t345, v.{core::Object::==}(null));
-  self::expect(n0, let final self::IntClass* #t349 = v in #t349.{core::Object::==}(null) ?{core::int*} null : self::IntClassExtension|get#property(#t349), v.{core::Object::==}(null));
-  self::expect(n0, let final self::IntClass* #t350 = v in #t350.{core::Object::==}(null) ?{core::int*} null : self::IntClassExtension|get#property(#t350), v.{core::Object::==}(null));
-  let final self::IntClass* #t351 = v in #t351.{core::Object::==}(null) ?{core::int*} null : self::IntClassExtension|set#property(#t351, self::IntClassExtension|get#property(#t351).{core::num::+}(n1));
-  self::expect(n1, let final self::IntClass* #t352 = v in #t352.{core::Object::==}(null) ?{core::int*} null : self::IntClassExtension|get#property(#t352), v.{core::Object::==}(null));
-  let final self::IntClass* #t353 = v in #t353.{core::Object::==}(null) ?{core::int*} null : self::IntClassExtension|set#property(#t353, self::IntClassExtension|get#property(#t353).{core::num::+}(n1));
-  self::expect(n2, let final self::IntClass* #t354 = v in #t354.{core::Object::==}(null) ?{core::int*} null : self::IntClassExtension|get#property(#t354), v.{core::Object::==}(null));
-  let final self::IntClass* #t355 = v in #t355.{core::Object::==}(null) ?{core::int*} null : self::IntClassExtension|set#property(#t355, self::IntClassExtension|get#property(#t355).{core::num::-}(n2));
-  self::expect(n0, let final self::IntClass* #t356 = v in #t356.{core::Object::==}(null) ?{core::int*} null : self::IntClassExtension|get#property(#t356), v.{core::Object::==}(null));
-  let final self::IntClass* #t357 = v in #t357.{core::Object::==}(null) ?{core::int*} null : self::IntClassExtension|set#property(#t357, self::IntClassExtension|get#property(#t357).{core::num::+}(n1));
-  self::expect(n1, let final self::IntClass* #t358 = v in #t358.{core::Object::==}(null) ?{core::int*} null : self::IntClassExtension|get#property(#t358), v.{core::Object::==}(null));
-  let final self::IntClass* #t359 = v in #t359.{core::Object::==}(null) ?{core::int*} null : self::IntClassExtension|set#property(#t359, self::IntClassExtension|get#property(#t359).{core::num::-}(n1));
-  self::expect(n0, let final self::IntClass* #t360 = v in #t360.{core::Object::==}(null) ?{core::int*} null : self::IntClassExtension|get#property(#t360), v.{core::Object::==}(null));
-  let final self::IntClass* #t361 = v in #t361.{core::Object::==}(null) ?{core::int*} null : let final core::int* #t362 = self::IntClassExtension|get#property(#t361).{core::num::+}(1) in let final void #t363 = self::IntClassExtension|set#property(#t361, #t362) in #t362;
-  self::expect(n1, let final self::IntClass* #t364 = v in #t364.{core::Object::==}(null) ?{core::int*} null : self::IntClassExtension|get#property(#t364), v.{core::Object::==}(null));
-  let final self::IntClass* #t365 = v in #t365.{core::Object::==}(null) ?{core::int*} null : let final core::int* #t366 = self::IntClassExtension|get#property(#t365).{core::num::-}(1) in let final void #t367 = self::IntClassExtension|set#property(#t365, #t366) in #t366;
-  self::expect(n0, let final self::IntClass* #t368 = v in #t368.{core::Object::==}(null) ?{core::int*} null : self::IntClassExtension|get#property(#t368), v.{core::Object::==}(null));
-  let final self::IntClass* #t369 = v in #t369.{core::Object::==}(null) ?{core::int*} null : self::IntClassExtension|set#property(#t369, self::IntClassExtension|get#property(#t369).{core::num::+}(1));
-  self::expect(n1, let final self::IntClass* #t370 = v in #t370.{core::Object::==}(null) ?{core::int*} null : self::IntClassExtension|get#property(#t370), v.{core::Object::==}(null));
-  let final self::IntClass* #t371 = v in #t371.{core::Object::==}(null) ?{core::int*} null : self::IntClassExtension|set#property(#t371, self::IntClassExtension|get#property(#t371).{core::num::-}(1));
-  self::expect(n0, let final self::IntClass* #t372 = v in #t372.{core::Object::==}(null) ?{core::int*} null : self::IntClassExtension|get#property(#t372), v.{core::Object::==}(null));
+  self::expect(n0, let final self::IntClass* #t317 = v in #t317.{self::IntClass::==}(null) ?{core::int*} null : self::IntClassExtension|get#property(#t317), v.{self::IntClass::==}(null));
+  self::expect(n1, let final self::IntClass* #t318 = v in #t318.{self::IntClass::==}(null) ?{core::int*} null : let final core::int* #t319 = self::IntClassExtension|get#property(#t318).{core::num::+}(n1) in let final void #t320 = self::IntClassExtension|set#property(#t318, #t319) in #t319, v.{self::IntClass::==}(null));
+  self::expect(n2, let final self::IntClass* #t321 = v in #t321.{self::IntClass::==}(null) ?{core::int*} null : let final core::int* #t322 = self::IntClassExtension|get#property(#t321).{core::num::+}(n1) in let final void #t323 = self::IntClassExtension|set#property(#t321, #t322) in #t322, v.{self::IntClass::==}(null));
+  self::expect(n0, let final self::IntClass* #t324 = v in #t324.{self::IntClass::==}(null) ?{core::int*} null : let final core::int* #t325 = self::IntClassExtension|get#property(#t324).{core::num::-}(n2) in let final void #t326 = self::IntClassExtension|set#property(#t324, #t325) in #t325, v.{self::IntClass::==}(null));
+  self::expect(n1, let final self::IntClass* #t327 = v in #t327.{self::IntClass::==}(null) ?{core::int*} null : let final core::int* #t328 = self::IntClassExtension|get#property(#t327).{core::num::+}(n1) in let final void #t329 = self::IntClassExtension|set#property(#t327, #t328) in #t328, v.{self::IntClass::==}(null));
+  self::expect(n0, let final self::IntClass* #t330 = v in #t330.{self::IntClass::==}(null) ?{core::int*} null : let final core::int* #t331 = self::IntClassExtension|get#property(#t330).{core::num::-}(n1) in let final void #t332 = self::IntClassExtension|set#property(#t330, #t331) in #t331, v.{self::IntClass::==}(null));
+  self::expect(n1, let final self::IntClass* #t333 = v in #t333.{self::IntClass::==}(null) ?{core::int*} null : let final core::int* #t334 = self::IntClassExtension|get#property(#t333).{core::num::+}(1) in let final void #t335 = self::IntClassExtension|set#property(#t333, #t334) in #t334, v.{self::IntClass::==}(null));
+  self::expect(n0, let final self::IntClass* #t336 = v in #t336.{self::IntClass::==}(null) ?{core::int*} null : let final core::int* #t337 = self::IntClassExtension|get#property(#t336).{core::num::-}(1) in let final void #t338 = self::IntClassExtension|set#property(#t336, #t337) in #t337, v.{self::IntClass::==}(null));
+  self::expect(n0, let final self::IntClass* #t339 = v in #t339.{self::IntClass::==}(null) ?{core::int*} null : let final core::int* #t340 = self::IntClassExtension|get#property(#t339) in let final core::int* #t341 = let final core::int* #t342 = #t340.{core::num::+}(1) in let final void #t343 = self::IntClassExtension|set#property(#t339, #t342) in #t342 in #t340, v.{self::IntClass::==}(null));
+  self::expect(n1, let final self::IntClass* #t344 = v in #t344.{self::IntClass::==}(null) ?{core::int*} null : let final core::int* #t345 = self::IntClassExtension|get#property(#t344) in let final core::int* #t346 = let final core::int* #t347 = #t345.{core::num::-}(1) in let final void #t348 = self::IntClassExtension|set#property(#t344, #t347) in #t347 in #t345, v.{self::IntClass::==}(null));
+  self::expect(n0, let final self::IntClass* #t349 = v in #t349.{self::IntClass::==}(null) ?{core::int*} null : self::IntClassExtension|get#property(#t349), v.{self::IntClass::==}(null));
+  self::expect(n0, let final self::IntClass* #t350 = v in #t350.{self::IntClass::==}(null) ?{core::int*} null : self::IntClassExtension|get#property(#t350), v.{self::IntClass::==}(null));
+  let final self::IntClass* #t351 = v in #t351.{self::IntClass::==}(null) ?{core::int*} null : self::IntClassExtension|set#property(#t351, self::IntClassExtension|get#property(#t351).{core::num::+}(n1));
+  self::expect(n1, let final self::IntClass* #t352 = v in #t352.{self::IntClass::==}(null) ?{core::int*} null : self::IntClassExtension|get#property(#t352), v.{self::IntClass::==}(null));
+  let final self::IntClass* #t353 = v in #t353.{self::IntClass::==}(null) ?{core::int*} null : self::IntClassExtension|set#property(#t353, self::IntClassExtension|get#property(#t353).{core::num::+}(n1));
+  self::expect(n2, let final self::IntClass* #t354 = v in #t354.{self::IntClass::==}(null) ?{core::int*} null : self::IntClassExtension|get#property(#t354), v.{self::IntClass::==}(null));
+  let final self::IntClass* #t355 = v in #t355.{self::IntClass::==}(null) ?{core::int*} null : self::IntClassExtension|set#property(#t355, self::IntClassExtension|get#property(#t355).{core::num::-}(n2));
+  self::expect(n0, let final self::IntClass* #t356 = v in #t356.{self::IntClass::==}(null) ?{core::int*} null : self::IntClassExtension|get#property(#t356), v.{self::IntClass::==}(null));
+  let final self::IntClass* #t357 = v in #t357.{self::IntClass::==}(null) ?{core::int*} null : self::IntClassExtension|set#property(#t357, self::IntClassExtension|get#property(#t357).{core::num::+}(n1));
+  self::expect(n1, let final self::IntClass* #t358 = v in #t358.{self::IntClass::==}(null) ?{core::int*} null : self::IntClassExtension|get#property(#t358), v.{self::IntClass::==}(null));
+  let final self::IntClass* #t359 = v in #t359.{self::IntClass::==}(null) ?{core::int*} null : self::IntClassExtension|set#property(#t359, self::IntClassExtension|get#property(#t359).{core::num::-}(n1));
+  self::expect(n0, let final self::IntClass* #t360 = v in #t360.{self::IntClass::==}(null) ?{core::int*} null : self::IntClassExtension|get#property(#t360), v.{self::IntClass::==}(null));
+  let final self::IntClass* #t361 = v in #t361.{self::IntClass::==}(null) ?{core::int*} null : let final core::int* #t362 = self::IntClassExtension|get#property(#t361).{core::num::+}(1) in let final void #t363 = self::IntClassExtension|set#property(#t361, #t362) in #t362;
+  self::expect(n1, let final self::IntClass* #t364 = v in #t364.{self::IntClass::==}(null) ?{core::int*} null : self::IntClassExtension|get#property(#t364), v.{self::IntClass::==}(null));
+  let final self::IntClass* #t365 = v in #t365.{self::IntClass::==}(null) ?{core::int*} null : let final core::int* #t366 = self::IntClassExtension|get#property(#t365).{core::num::-}(1) in let final void #t367 = self::IntClassExtension|set#property(#t365, #t366) in #t366;
+  self::expect(n0, let final self::IntClass* #t368 = v in #t368.{self::IntClass::==}(null) ?{core::int*} null : self::IntClassExtension|get#property(#t368), v.{self::IntClass::==}(null));
+  let final self::IntClass* #t369 = v in #t369.{self::IntClass::==}(null) ?{core::int*} null : self::IntClassExtension|set#property(#t369, self::IntClassExtension|get#property(#t369).{core::num::+}(1));
+  self::expect(n1, let final self::IntClass* #t370 = v in #t370.{self::IntClass::==}(null) ?{core::int*} null : self::IntClassExtension|get#property(#t370), v.{self::IntClass::==}(null));
+  let final self::IntClass* #t371 = v in #t371.{self::IntClass::==}(null) ?{core::int*} null : self::IntClassExtension|set#property(#t371, self::IntClassExtension|get#property(#t371).{core::num::-}(1));
+  self::expect(n0, let final self::IntClass* #t372 = v in #t372.{self::IntClass::==}(null) ?{core::int*} null : self::IntClassExtension|get#property(#t372), v.{self::IntClass::==}(null));
 }
 static method expect(dynamic expected, dynamic actual, [dynamic expectNull = #C1]) → dynamic {
   if(expectNull as{TypeError,ForDynamic} core::bool*) {
diff --git a/pkg/front_end/testcases/extensions/conflicts.dart.outline.expect b/pkg/front_end/testcases/extensions/conflicts.dart.outline.expect
index 268695d..3b84124 100644
--- a/pkg/front_end/testcases/extensions/conflicts.dart.outline.expect
+++ b/pkg/front_end/testcases/extensions/conflicts.dart.outline.expect
@@ -22,10 +22,30 @@
 class Class1 extends core::Object {
   synthetic constructor •() → self::Class1*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Class2 extends core::Object {
   synthetic constructor •() → self::Class2*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 extension DuplicateExtensionName on self::Class1* {
   method uniqueMethod1 = self::DuplicateExtensionName|uniqueMethod1;
diff --git a/pkg/front_end/testcases/extensions/conflicts.dart.strong.expect b/pkg/front_end/testcases/extensions/conflicts.dart.strong.expect
index 5481d64..704f46e 100644
--- a/pkg/front_end/testcases/extensions/conflicts.dart.strong.expect
+++ b/pkg/front_end/testcases/extensions/conflicts.dart.strong.expect
@@ -29,11 +29,31 @@
   synthetic constructor •() → self::Class1*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Class2 extends core::Object {
   synthetic constructor •() → self::Class2*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 extension DuplicateExtensionName on self::Class1* {
   method uniqueMethod1 = self::DuplicateExtensionName|uniqueMethod1;
diff --git a/pkg/front_end/testcases/extensions/conflicts.dart.strong.transformed.expect b/pkg/front_end/testcases/extensions/conflicts.dart.strong.transformed.expect
index 5481d64..704f46e 100644
--- a/pkg/front_end/testcases/extensions/conflicts.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/extensions/conflicts.dart.strong.transformed.expect
@@ -29,11 +29,31 @@
   synthetic constructor •() → self::Class1*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Class2 extends core::Object {
   synthetic constructor •() → self::Class2*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 extension DuplicateExtensionName on self::Class1* {
   method uniqueMethod1 = self::DuplicateExtensionName|uniqueMethod1;
diff --git a/pkg/front_end/testcases/extensions/default_values.dart.outline.expect b/pkg/front_end/testcases/extensions/default_values.dart.outline.expect
index 77ed4f4..5c261ce 100644
--- a/pkg/front_end/testcases/extensions/default_values.dart.outline.expect
+++ b/pkg/front_end/testcases/extensions/default_values.dart.outline.expect
@@ -5,6 +5,16 @@
 class Class extends core::Object {
   synthetic constructor •() → self::Class*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 extension Extension on self::Class* {
   method method0 = self::Extension|method0;
diff --git a/pkg/front_end/testcases/extensions/default_values.dart.strong.expect b/pkg/front_end/testcases/extensions/default_values.dart.strong.expect
index e6b8869..466cc59 100644
--- a/pkg/front_end/testcases/extensions/default_values.dart.strong.expect
+++ b/pkg/front_end/testcases/extensions/default_values.dart.strong.expect
@@ -6,6 +6,16 @@
   synthetic constructor •() → self::Class*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 extension Extension on self::Class* {
   method method0 = self::Extension|method0;
diff --git a/pkg/front_end/testcases/extensions/default_values.dart.strong.transformed.expect b/pkg/front_end/testcases/extensions/default_values.dart.strong.transformed.expect
index e6b8869..466cc59 100644
--- a/pkg/front_end/testcases/extensions/default_values.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/extensions/default_values.dart.strong.transformed.expect
@@ -6,6 +6,16 @@
   synthetic constructor •() → self::Class*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 extension Extension on self::Class* {
   method method0 = self::Extension|method0;
diff --git a/pkg/front_end/testcases/extensions/deferred_explicit_access.dart.strong.transformed.expect b/pkg/front_end/testcases/extensions/deferred_explicit_access.dart.strong.transformed.expect
index 9b085ee..c23b449 100644
--- a/pkg/front_end/testcases/extensions/deferred_explicit_access.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/extensions/deferred_explicit_access.dart.strong.transformed.expect
@@ -41,8 +41,8 @@
       asy::_completeOnAsyncReturn(:async_completer, :return_value);
       return;
     }
-    on dynamic catch(dynamic :exception, core::StackTrace* :stack_trace) {
-      :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+    on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
+      :async_completer.{asy::Completer::completeError}(exception, stack_trace);
     }
   :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
diff --git a/pkg/front_end/testcases/extensions/deferred_import_hidden.dart.strong.transformed.expect b/pkg/front_end/testcases/extensions/deferred_import_hidden.dart.strong.transformed.expect
index 81805ba..6597e46 100644
--- a/pkg/front_end/testcases/extensions/deferred_import_hidden.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/extensions/deferred_import_hidden.dart.strong.transformed.expect
@@ -32,8 +32,8 @@
       asy::_completeOnAsyncReturn(:async_completer, :return_value);
       return;
     }
-    on dynamic catch(dynamic :exception, core::StackTrace* :stack_trace) {
-      :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+    on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
+      :async_completer.{asy::Completer::completeError}(exception, stack_trace);
     }
   :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
diff --git a/pkg/front_end/testcases/extensions/direct_instance_access.dart.outline.expect b/pkg/front_end/testcases/extensions/direct_instance_access.dart.outline.expect
index f38f7f8c..d724dc9 100644
--- a/pkg/front_end/testcases/extensions/direct_instance_access.dart.outline.expect
+++ b/pkg/front_end/testcases/extensions/direct_instance_access.dart.outline.expect
@@ -6,11 +6,31 @@
   field dynamic field;
   synthetic constructor •() → self::Class*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class GenericClass<T extends core::Object* = dynamic> extends core::Object {
   generic-covariant-impl field self::GenericClass::T* field;
   synthetic constructor •() → self::GenericClass<self::GenericClass::T*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 extension Extension on self::Class* {
   method readGetter = self::Extension|readGetter;
diff --git a/pkg/front_end/testcases/extensions/direct_instance_access.dart.strong.expect b/pkg/front_end/testcases/extensions/direct_instance_access.dart.strong.expect
index ee8966f..d0a6793 100644
--- a/pkg/front_end/testcases/extensions/direct_instance_access.dart.strong.expect
+++ b/pkg/front_end/testcases/extensions/direct_instance_access.dart.strong.expect
@@ -7,12 +7,32 @@
   synthetic constructor •() → self::Class*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class GenericClass<T extends core::Object* = dynamic> extends core::Object {
   generic-covariant-impl field self::GenericClass::T* field = null;
   synthetic constructor •() → self::GenericClass<self::GenericClass::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 extension Extension on self::Class* {
   method readGetter = self::Extension|readGetter;
diff --git a/pkg/front_end/testcases/extensions/direct_instance_access.dart.strong.transformed.expect b/pkg/front_end/testcases/extensions/direct_instance_access.dart.strong.transformed.expect
index ee8966f..d0a6793 100644
--- a/pkg/front_end/testcases/extensions/direct_instance_access.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/extensions/direct_instance_access.dart.strong.transformed.expect
@@ -7,12 +7,32 @@
   synthetic constructor •() → self::Class*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class GenericClass<T extends core::Object* = dynamic> extends core::Object {
   generic-covariant-impl field self::GenericClass::T* field = null;
   synthetic constructor •() → self::GenericClass<self::GenericClass::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 extension Extension on self::Class* {
   method readGetter = self::Extension|readGetter;
diff --git a/pkg/front_end/testcases/extensions/direct_static_access.dart.outline.expect b/pkg/front_end/testcases/extensions/direct_static_access.dart.outline.expect
index f704ade..7eb3590 100644
--- a/pkg/front_end/testcases/extensions/direct_static_access.dart.outline.expect
+++ b/pkg/front_end/testcases/extensions/direct_static_access.dart.outline.expect
@@ -6,6 +6,16 @@
   static field dynamic field;
   synthetic constructor •() → self::Class<self::Class::T*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 extension Extension<T extends core::Object* = dynamic> on self::Class<T*>* {
   static get property = get self::Extension|property;
diff --git a/pkg/front_end/testcases/extensions/direct_static_access.dart.strong.expect b/pkg/front_end/testcases/extensions/direct_static_access.dart.strong.expect
index 19243a9..d52845e 100644
--- a/pkg/front_end/testcases/extensions/direct_static_access.dart.strong.expect
+++ b/pkg/front_end/testcases/extensions/direct_static_access.dart.strong.expect
@@ -7,6 +7,16 @@
   synthetic constructor •() → self::Class<self::Class::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 extension Extension<T extends core::Object* = dynamic> on self::Class<T*>* {
   static get property = get self::Extension|property;
diff --git a/pkg/front_end/testcases/extensions/direct_static_access.dart.strong.transformed.expect b/pkg/front_end/testcases/extensions/direct_static_access.dart.strong.transformed.expect
index 19243a9..d52845e 100644
--- a/pkg/front_end/testcases/extensions/direct_static_access.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/extensions/direct_static_access.dart.strong.transformed.expect
@@ -7,6 +7,16 @@
   synthetic constructor •() → self::Class<self::Class::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 extension Extension<T extends core::Object* = dynamic> on self::Class<T*>* {
   static get property = get self::Extension|property;
diff --git a/pkg/front_end/testcases/extensions/dynamic_invoke.dart.outline.expect b/pkg/front_end/testcases/extensions/dynamic_invoke.dart.outline.expect
index c8a99ef..925e9d2 100644
--- a/pkg/front_end/testcases/extensions/dynamic_invoke.dart.outline.expect
+++ b/pkg/front_end/testcases/extensions/dynamic_invoke.dart.outline.expect
@@ -7,6 +7,15 @@
     ;
   method noSuchMethod(core::Invocation* i) → dynamic
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 extension ClassExtension on self::Class* {
   method method = self::ClassExtension|method;
diff --git a/pkg/front_end/testcases/extensions/dynamic_invoke.dart.strong.expect b/pkg/front_end/testcases/extensions/dynamic_invoke.dart.strong.expect
index 95ddf7a..70e4f67 100644
--- a/pkg/front_end/testcases/extensions/dynamic_invoke.dart.strong.expect
+++ b/pkg/front_end/testcases/extensions/dynamic_invoke.dart.strong.expect
@@ -8,6 +8,15 @@
     ;
   method noSuchMethod(core::Invocation* i) → dynamic
     return 123;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 extension ClassExtension on self::Class* {
   method method = self::ClassExtension|method;
diff --git a/pkg/front_end/testcases/extensions/dynamic_invoke.dart.strong.transformed.expect b/pkg/front_end/testcases/extensions/dynamic_invoke.dart.strong.transformed.expect
index 95ddf7a..70e4f67 100644
--- a/pkg/front_end/testcases/extensions/dynamic_invoke.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/extensions/dynamic_invoke.dart.strong.transformed.expect
@@ -8,6 +8,15 @@
     ;
   method noSuchMethod(core::Invocation* i) → dynamic
     return 123;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 extension ClassExtension on self::Class* {
   method method = self::ClassExtension|method;
diff --git a/pkg/front_end/testcases/extensions/explicit_extension_access.dart.outline.expect b/pkg/front_end/testcases/extensions/explicit_extension_access.dart.outline.expect
index cf66bc6..3b2078d 100644
--- a/pkg/front_end/testcases/extensions/explicit_extension_access.dart.outline.expect
+++ b/pkg/front_end/testcases/extensions/explicit_extension_access.dart.outline.expect
@@ -7,6 +7,16 @@
   field core::int* field2;
   synthetic constructor •() → self::Class*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 extension Extension1 on self::Class* {
   get field = self::Extension1|get#field;
diff --git a/pkg/front_end/testcases/extensions/explicit_extension_access.dart.strong.expect b/pkg/front_end/testcases/extensions/explicit_extension_access.dart.strong.expect
index 4f30c9d..c590baae 100644
--- a/pkg/front_end/testcases/extensions/explicit_extension_access.dart.strong.expect
+++ b/pkg/front_end/testcases/extensions/explicit_extension_access.dart.strong.expect
@@ -8,6 +8,16 @@
   synthetic constructor •() → self::Class*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 extension Extension1 on self::Class* {
   get field = self::Extension1|get#field;
diff --git a/pkg/front_end/testcases/extensions/explicit_extension_access.dart.strong.transformed.expect b/pkg/front_end/testcases/extensions/explicit_extension_access.dart.strong.transformed.expect
index 4f30c9d..c590baae 100644
--- a/pkg/front_end/testcases/extensions/explicit_extension_access.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/extensions/explicit_extension_access.dart.strong.transformed.expect
@@ -8,6 +8,16 @@
   synthetic constructor •() → self::Class*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 extension Extension1 on self::Class* {
   get field = self::Extension1|get#field;
diff --git a/pkg/front_end/testcases/extensions/explicit_extension_inference.dart.outline.expect b/pkg/front_end/testcases/extensions/explicit_extension_inference.dart.outline.expect
index b09bea2..81bab87 100644
--- a/pkg/front_end/testcases/extensions/explicit_extension_inference.dart.outline.expect
+++ b/pkg/front_end/testcases/extensions/explicit_extension_inference.dart.outline.expect
@@ -5,6 +5,16 @@
 class A extends core::Object {
   synthetic constructor •() → self::A*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A {
   synthetic constructor •() → self::B*
@@ -17,6 +27,16 @@
 class GenericClass<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::GenericClass<self::GenericClass::T*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 extension GenericExtension<T extends core::Object* = dynamic> on self::GenericClass<T*>* {
   get property = self::GenericExtension|get#property;
diff --git a/pkg/front_end/testcases/extensions/explicit_extension_inference.dart.strong.expect b/pkg/front_end/testcases/extensions/explicit_extension_inference.dart.strong.expect
index b3a12f5..d472ca6 100644
--- a/pkg/front_end/testcases/extensions/explicit_extension_inference.dart.strong.expect
+++ b/pkg/front_end/testcases/extensions/explicit_extension_inference.dart.strong.expect
@@ -6,6 +6,16 @@
   synthetic constructor •() → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A {
   synthetic constructor •() → self::B*
@@ -21,6 +31,16 @@
   synthetic constructor •() → self::GenericClass<self::GenericClass::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 extension GenericExtension<T extends core::Object* = dynamic> on self::GenericClass<T*>* {
   get property = self::GenericExtension|get#property;
diff --git a/pkg/front_end/testcases/extensions/explicit_extension_inference.dart.strong.transformed.expect b/pkg/front_end/testcases/extensions/explicit_extension_inference.dart.strong.transformed.expect
index b3a12f5..d472ca6 100644
--- a/pkg/front_end/testcases/extensions/explicit_extension_inference.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/extensions/explicit_extension_inference.dart.strong.transformed.expect
@@ -6,6 +6,16 @@
   synthetic constructor •() → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A {
   synthetic constructor •() → self::B*
@@ -21,6 +31,16 @@
   synthetic constructor •() → self::GenericClass<self::GenericClass::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 extension GenericExtension<T extends core::Object* = dynamic> on self::GenericClass<T*>* {
   get property = self::GenericExtension|get#property;
diff --git a/pkg/front_end/testcases/extensions/explicit_generic_extension_access.dart.outline.expect b/pkg/front_end/testcases/extensions/explicit_generic_extension_access.dart.outline.expect
index 731ecb8..80c491b 100644
--- a/pkg/front_end/testcases/extensions/explicit_generic_extension_access.dart.outline.expect
+++ b/pkg/front_end/testcases/extensions/explicit_generic_extension_access.dart.outline.expect
@@ -7,6 +7,16 @@
   generic-covariant-impl field self::Class::T* field2;
   constructor •(self::Class::T* field1, self::Class::T* field2) → self::Class<self::Class::T*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 extension Extension1<T extends core::num* = dynamic> on self::Class<T*>* {
   static field latestType = self::Extension1|latestType;
diff --git a/pkg/front_end/testcases/extensions/explicit_generic_extension_access.dart.strong.expect b/pkg/front_end/testcases/extensions/explicit_generic_extension_access.dart.strong.expect
index accfea8..e2d3ce6 100644
--- a/pkg/front_end/testcases/extensions/explicit_generic_extension_access.dart.strong.expect
+++ b/pkg/front_end/testcases/extensions/explicit_generic_extension_access.dart.strong.expect
@@ -8,6 +8,16 @@
   constructor •(self::Class::T* field1, self::Class::T* field2) → self::Class<self::Class::T*>*
     : self::Class::field1 = field1, self::Class::field2 = field2, super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 extension Extension1<T extends core::num* = dynamic> on self::Class<T*>* {
   static field latestType = self::Extension1|latestType;
diff --git a/pkg/front_end/testcases/extensions/explicit_generic_extension_access.dart.strong.transformed.expect b/pkg/front_end/testcases/extensions/explicit_generic_extension_access.dart.strong.transformed.expect
index accfea8..e2d3ce6 100644
--- a/pkg/front_end/testcases/extensions/explicit_generic_extension_access.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/extensions/explicit_generic_extension_access.dart.strong.transformed.expect
@@ -8,6 +8,16 @@
   constructor •(self::Class::T* field1, self::Class::T* field2) → self::Class<self::Class::T*>*
     : self::Class::field1 = field1, self::Class::field2 = field2, super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 extension Extension1<T extends core::num* = dynamic> on self::Class<T*>* {
   static field latestType = self::Extension1|latestType;
diff --git a/pkg/front_end/testcases/extensions/explicit_invalid_access.dart.outline.expect b/pkg/front_end/testcases/extensions/explicit_invalid_access.dart.outline.expect
index d4546e9..daa0de3 100644
--- a/pkg/front_end/testcases/extensions/explicit_invalid_access.dart.outline.expect
+++ b/pkg/front_end/testcases/extensions/explicit_invalid_access.dart.outline.expect
@@ -5,6 +5,16 @@
 class Class extends core::Object {
   synthetic constructor •() → self::Class*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 extension Extension on self::Class* {
 }
diff --git a/pkg/front_end/testcases/extensions/explicit_invalid_access.dart.strong.expect b/pkg/front_end/testcases/extensions/explicit_invalid_access.dart.strong.expect
index a751f73..306413c 100644
--- a/pkg/front_end/testcases/extensions/explicit_invalid_access.dart.strong.expect
+++ b/pkg/front_end/testcases/extensions/explicit_invalid_access.dart.strong.expect
@@ -29,6 +29,16 @@
   synthetic constructor •() → self::Class*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 extension Extension on self::Class* {
 }
diff --git a/pkg/front_end/testcases/extensions/explicit_invalid_access.dart.strong.transformed.expect b/pkg/front_end/testcases/extensions/explicit_invalid_access.dart.strong.transformed.expect
index a751f73..306413c 100644
--- a/pkg/front_end/testcases/extensions/explicit_invalid_access.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/extensions/explicit_invalid_access.dart.strong.transformed.expect
@@ -29,6 +29,16 @@
   synthetic constructor •() → self::Class*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 extension Extension on self::Class* {
 }
diff --git a/pkg/front_end/testcases/extensions/explicit_this.dart.outline.expect b/pkg/front_end/testcases/extensions/explicit_this.dart.outline.expect
index ccf3c26..8f3339f 100644
--- a/pkg/front_end/testcases/extensions/explicit_this.dart.outline.expect
+++ b/pkg/front_end/testcases/extensions/explicit_this.dart.outline.expect
@@ -8,6 +8,16 @@
     ;
   method method1() → void
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 extension A2 on self::A1* {
   method method2 = self::A2|method2;
diff --git a/pkg/front_end/testcases/extensions/explicit_this.dart.strong.expect b/pkg/front_end/testcases/extensions/explicit_this.dart.strong.expect
index b1249bd..73653fe 100644
--- a/pkg/front_end/testcases/extensions/explicit_this.dart.strong.expect
+++ b/pkg/front_end/testcases/extensions/explicit_this.dart.strong.expect
@@ -8,6 +8,16 @@
     : super core::Object::•()
     ;
   method method1() → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 extension A2 on self::A1* {
   method method2 = self::A2|method2;
diff --git a/pkg/front_end/testcases/extensions/explicit_this.dart.strong.transformed.expect b/pkg/front_end/testcases/extensions/explicit_this.dart.strong.transformed.expect
index b1249bd..73653fe 100644
--- a/pkg/front_end/testcases/extensions/explicit_this.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/extensions/explicit_this.dart.strong.transformed.expect
@@ -8,6 +8,16 @@
     : super core::Object::•()
     ;
   method method1() → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 extension A2 on self::A1* {
   method method2 = self::A2|method2;
diff --git a/pkg/front_end/testcases/extensions/export_twice.dart.outline.expect b/pkg/front_end/testcases/extensions/export_twice.dart.outline.expect
index f65b867..a51c836 100644
--- a/pkg/front_end/testcases/extensions/export_twice.dart.outline.expect
+++ b/pkg/front_end/testcases/extensions/export_twice.dart.outline.expect
@@ -14,6 +14,16 @@
 class Class extends core::Object {
   synthetic constructor •() → self2::Class*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 extension Extension on self2::Class* {
   method method = self2::Extension|method;
diff --git a/pkg/front_end/testcases/extensions/export_twice.dart.strong.expect b/pkg/front_end/testcases/extensions/export_twice.dart.strong.expect
index b1703fd..5abcb24 100644
--- a/pkg/front_end/testcases/extensions/export_twice.dart.strong.expect
+++ b/pkg/front_end/testcases/extensions/export_twice.dart.strong.expect
@@ -17,6 +17,16 @@
   synthetic constructor •() → exp::Class*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 extension Extension on exp::Class* {
   method method = exp::Extension|method;
diff --git a/pkg/front_end/testcases/extensions/export_twice.dart.strong.transformed.expect b/pkg/front_end/testcases/extensions/export_twice.dart.strong.transformed.expect
index b1703fd..5abcb24 100644
--- a/pkg/front_end/testcases/extensions/export_twice.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/extensions/export_twice.dart.strong.transformed.expect
@@ -17,6 +17,16 @@
   synthetic constructor •() → exp::Class*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 extension Extension on exp::Class* {
   method method = exp::Extension|method;
diff --git a/pkg/front_end/testcases/extensions/extension_call.dart.outline.expect b/pkg/front_end/testcases/extensions/extension_call.dart.outline.expect
index 21fa0dd..6294d2c 100644
--- a/pkg/front_end/testcases/extensions/extension_call.dart.outline.expect
+++ b/pkg/front_end/testcases/extensions/extension_call.dart.outline.expect
@@ -7,6 +7,16 @@
     ;
   method method(generic-covariant-impl self::Class::T* a) → self::Class::T*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 extension Extension<T extends core::Object* = dynamic> on self::Class<T*>* {
   method call = self::Extension|call;
diff --git a/pkg/front_end/testcases/extensions/extension_call.dart.strong.expect b/pkg/front_end/testcases/extensions/extension_call.dart.strong.expect
index 599862a..a12bd40 100644
--- a/pkg/front_end/testcases/extensions/extension_call.dart.strong.expect
+++ b/pkg/front_end/testcases/extensions/extension_call.dart.strong.expect
@@ -8,6 +8,16 @@
     ;
   method method(generic-covariant-impl self::Class::T* a) → self::Class::T*
     return a;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 extension Extension<T extends core::Object* = dynamic> on self::Class<T*>* {
   method call = self::Extension|call;
diff --git a/pkg/front_end/testcases/extensions/extension_call.dart.strong.transformed.expect b/pkg/front_end/testcases/extensions/extension_call.dart.strong.transformed.expect
index 599862a..a12bd40 100644
--- a/pkg/front_end/testcases/extensions/extension_call.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/extensions/extension_call.dart.strong.transformed.expect
@@ -8,6 +8,16 @@
     ;
   method method(generic-covariant-impl self::Class::T* a) → self::Class::T*
     return a;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 extension Extension<T extends core::Object* = dynamic> on self::Class<T*>* {
   method call = self::Extension|call;
diff --git a/pkg/front_end/testcases/extensions/extension_constructor.dart.outline.expect b/pkg/front_end/testcases/extensions/extension_constructor.dart.outline.expect
index 76431a3..b1cc48b 100644
--- a/pkg/front_end/testcases/extensions/extension_constructor.dart.outline.expect
+++ b/pkg/front_end/testcases/extensions/extension_constructor.dart.outline.expect
@@ -42,6 +42,16 @@
 class Class extends core::Object {
   synthetic constructor •() → self::Class*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 extension Extension on self::Class* {
   method method = self::Extension|method;
diff --git a/pkg/front_end/testcases/extensions/extension_constructor.dart.strong.expect b/pkg/front_end/testcases/extensions/extension_constructor.dart.strong.expect
index b043e9d..62b93ab 100644
--- a/pkg/front_end/testcases/extensions/extension_constructor.dart.strong.expect
+++ b/pkg/front_end/testcases/extensions/extension_constructor.dart.strong.expect
@@ -43,6 +43,16 @@
   synthetic constructor •() → self::Class*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 extension Extension on self::Class* {
   method method = self::Extension|method;
diff --git a/pkg/front_end/testcases/extensions/extension_constructor.dart.strong.transformed.expect b/pkg/front_end/testcases/extensions/extension_constructor.dart.strong.transformed.expect
index b043e9d..62b93ab 100644
--- a/pkg/front_end/testcases/extensions/extension_constructor.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/extensions/extension_constructor.dart.strong.transformed.expect
@@ -43,6 +43,16 @@
   synthetic constructor •() → self::Class*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 extension Extension on self::Class* {
   method method = self::Extension|method;
diff --git a/pkg/front_end/testcases/extensions/extension_methods.dart.outline.expect b/pkg/front_end/testcases/extensions/extension_methods.dart.outline.expect
index 98495a1..c853ab1 100644
--- a/pkg/front_end/testcases/extensions/extension_methods.dart.outline.expect
+++ b/pkg/front_end/testcases/extensions/extension_methods.dart.outline.expect
@@ -9,6 +9,16 @@
     ;
   get one() → core::int*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 extension E on self::C* {
   get two = self::E|get#two;
diff --git a/pkg/front_end/testcases/extensions/extension_methods.dart.strong.expect b/pkg/front_end/testcases/extensions/extension_methods.dart.strong.expect
index b1e71de..aca9f6c 100644
--- a/pkg/front_end/testcases/extensions/extension_methods.dart.strong.expect
+++ b/pkg/front_end/testcases/extensions/extension_methods.dart.strong.expect
@@ -11,6 +11,16 @@
     ;
   get one() → core::int*
     return 1;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 extension E on self::C* {
   get two = self::E|get#two;
diff --git a/pkg/front_end/testcases/extensions/extension_methods.dart.strong.transformed.expect b/pkg/front_end/testcases/extensions/extension_methods.dart.strong.transformed.expect
index b1e71de..aca9f6c 100644
--- a/pkg/front_end/testcases/extensions/extension_methods.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/extensions/extension_methods.dart.strong.transformed.expect
@@ -11,6 +11,16 @@
     ;
   get one() → core::int*
     return 1;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 extension E on self::C* {
   get two = self::E|get#two;
diff --git a/pkg/front_end/testcases/extensions/extension_setter.dart.outline.expect b/pkg/front_end/testcases/extensions/extension_setter.dart.outline.expect
index 0c3a704..dfda67e 100644
--- a/pkg/front_end/testcases/extensions/extension_setter.dart.outline.expect
+++ b/pkg/front_end/testcases/extensions/extension_setter.dart.outline.expect
@@ -6,10 +6,30 @@
   field core::int* field;
   synthetic constructor •() → self::Class*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class GenericClass<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::GenericClass<self::GenericClass::T*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 extension Extension on self::Class* {
   get simpleSetter = self::Extension|get#simpleSetter;
diff --git a/pkg/front_end/testcases/extensions/extension_setter.dart.strong.expect b/pkg/front_end/testcases/extensions/extension_setter.dart.strong.expect
index f4366a8..686d8d2 100644
--- a/pkg/front_end/testcases/extensions/extension_setter.dart.strong.expect
+++ b/pkg/front_end/testcases/extensions/extension_setter.dart.strong.expect
@@ -7,11 +7,31 @@
   synthetic constructor •() → self::Class*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class GenericClass<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::GenericClass<self::GenericClass::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 extension Extension on self::Class* {
   get simpleSetter = self::Extension|get#simpleSetter;
@@ -71,7 +91,7 @@
   self::expect(2, #this.{self::Class::field});
   self::expect(3, let final core::int* #t5 = 3 in let final void #t6 = self::Extension|set#setterWithReturn(#this, #t5) in #t5);
   self::expect(3, #this.{self::Class::field});
-  self::expect(4.{core::int::unary-}(), let final core::int* #t7 = 4.{core::int::unary-}() in let final void #t8 = self::Extension|set#setterWithReturn(#this, #t7) in #t7);
+  self::expect(4.{core::int::unary-}(), let final core::int #t7 = 4.{core::int::unary-}() in let final void #t8 = self::Extension|set#setterWithReturn(#this, #t7) in #t7);
   self::expect(4, #this.{self::Class::field});
   self::Extension|set#setterWithClosure(#this, 1);
   self::expect(1, #this.{self::Class::field});
@@ -79,7 +99,7 @@
   self::expect(2, #this.{self::Class::field});
   self::expect(3, let final core::int* #t9 = 3 in let final void #t10 = self::Extension|set#setterWithClosure(#this, #t9) in #t9);
   self::expect(3, #this.{self::Class::field});
-  self::expect(4.{core::int::unary-}(), let final core::int* #t11 = 4.{core::int::unary-}() in let final void #t12 = self::Extension|set#setterWithClosure(#this, #t11) in #t11);
+  self::expect(4.{core::int::unary-}(), let final core::int #t11 = 4.{core::int::unary-}() in let final void #t12 = self::Extension|set#setterWithClosure(#this, #t11) in #t11);
   self::expect(4, #this.{self::Class::field});
 }
 static method Extension|get#testInternal(final self::Class* #this) → () →* dynamic
@@ -108,7 +128,7 @@
   self::expect(2, c.{self::Class::field});
   self::expect(3, let final core::int* #t23 = 3 in let final void #t24 = self::Extension|set#setterWithReturn(c, #t23) in #t23);
   self::expect(3, c.{self::Class::field});
-  self::expect(4.{core::int::unary-}(), let final core::int* #t25 = 4.{core::int::unary-}() in let final void #t26 = self::Extension|set#setterWithReturn(c, #t25) in #t25);
+  self::expect(4.{core::int::unary-}(), let final core::int #t25 = 4.{core::int::unary-}() in let final void #t26 = self::Extension|set#setterWithReturn(c, #t25) in #t25);
   self::expect(4, c.{self::Class::field});
   self::Extension|set#setterWithReturn(c, 5);
   self::expect(5, c.{self::Class::field});
@@ -116,7 +136,7 @@
   self::expect(6, c.{self::Class::field});
   self::expect(7, let final self::Class* #t27 = c in let final core::int* #t28 = 7 in let final void #t29 = self::Extension|set#setterWithReturn(#t27, #t28) in #t28);
   self::expect(7, c.{self::Class::field});
-  self::expect(8.{core::int::unary-}(), let final self::Class* #t30 = c in let final core::int* #t31 = 8.{core::int::unary-}() in let final void #t32 = self::Extension|set#setterWithReturn(#t30, #t31) in #t31);
+  self::expect(8.{core::int::unary-}(), let final self::Class* #t30 = c in let final core::int #t31 = 8.{core::int::unary-}() in let final void #t32 = self::Extension|set#setterWithReturn(#t30, #t31) in #t31);
   self::expect(8, c.{self::Class::field});
   self::Extension|set#setterWithClosure(c, 1);
   self::expect(1, c.{self::Class::field});
@@ -124,7 +144,7 @@
   self::expect(2, c.{self::Class::field});
   self::expect(3, let final core::int* #t33 = 3 in let final void #t34 = self::Extension|set#setterWithClosure(c, #t33) in #t33);
   self::expect(3, c.{self::Class::field});
-  self::expect(4.{core::int::unary-}(), let final core::int* #t35 = 4.{core::int::unary-}() in let final void #t36 = self::Extension|set#setterWithClosure(c, #t35) in #t35);
+  self::expect(4.{core::int::unary-}(), let final core::int #t35 = 4.{core::int::unary-}() in let final void #t36 = self::Extension|set#setterWithClosure(c, #t35) in #t35);
   self::expect(4, c.{self::Class::field});
   self::Extension|set#setterWithClosure(c, 5);
   self::expect(5, c.{self::Class::field});
@@ -132,66 +152,66 @@
   self::expect(6, c.{self::Class::field});
   self::expect(7, let final self::Class* #t37 = c in let final core::int* #t38 = 7 in let final void #t39 = self::Extension|set#setterWithClosure(#t37, #t38) in #t38);
   self::expect(7, c.{self::Class::field});
-  self::expect(8.{core::int::unary-}(), let final self::Class* #t40 = c in let final core::int* #t41 = 8.{core::int::unary-}() in let final void #t42 = self::Extension|set#setterWithClosure(#t40, #t41) in #t41);
+  self::expect(8.{core::int::unary-}(), let final self::Class* #t40 = c in let final core::int #t41 = 8.{core::int::unary-}() in let final void #t42 = self::Extension|set#setterWithClosure(#t40, #t41) in #t41);
   self::expect(8, c.{self::Class::field});
   self::Extension|set#simpleSetter(c, 0);
-  self::expect(0, let final self::Class* #t43 = c in #t43.{core::Object::==}(null) ?{core::int*} null : #t43.{self::Class::field});
-  self::expect(1, let final self::Class* #t44 = c in #t44.{core::Object::==}(null) ?{core::int*} null : let final core::int* #t45 = 1 in let final void #t46 = self::Extension|set#simpleSetter(#t44, #t45) in #t45);
+  self::expect(0, let final self::Class* #t43 = c in #t43.{self::Class::==}(null) ?{core::int*} null : #t43.{self::Class::field});
+  self::expect(1, let final self::Class* #t44 = c in #t44.{self::Class::==}(null) ?{core::int*} null : let final core::int* #t45 = 1 in let final void #t46 = self::Extension|set#simpleSetter(#t44, #t45) in #t45);
   self::Extension|set#simpleSetter(c, 2);
-  self::expect(2, let final self::Class* #t47 = c in #t47.{core::Object::==}(null) ?{core::int*} null : #t47.{self::Class::field});
+  self::expect(2, let final self::Class* #t47 = c in #t47.{self::Class::==}(null) ?{core::int*} null : #t47.{self::Class::field});
   self::expect(3, let final self::Class* #t48 = c in let final core::int* #t49 = 3 in let final void #t50 = self::Extension|set#simpleSetter(#t48, #t49) in #t49);
   self::Extension|set#mutatingSetter(c, 0);
-  self::expect(1, let final self::Class* #t51 = c in #t51.{core::Object::==}(null) ?{core::int*} null : #t51.{self::Class::field});
-  self::expect(2, let final self::Class* #t52 = c in #t52.{core::Object::==}(null) ?{core::int*} null : let final core::int* #t53 = 2 in let final void #t54 = self::Extension|set#mutatingSetter(#t52, #t53) in #t53);
-  self::expect(3, let final self::Class* #t55 = c in #t55.{core::Object::==}(null) ?{core::int*} null : #t55.{self::Class::field});
+  self::expect(1, let final self::Class* #t51 = c in #t51.{self::Class::==}(null) ?{core::int*} null : #t51.{self::Class::field});
+  self::expect(2, let final self::Class* #t52 = c in #t52.{self::Class::==}(null) ?{core::int*} null : let final core::int* #t53 = 2 in let final void #t54 = self::Extension|set#mutatingSetter(#t52, #t53) in #t53);
+  self::expect(3, let final self::Class* #t55 = c in #t55.{self::Class::==}(null) ?{core::int*} null : #t55.{self::Class::field});
   self::Extension|set#mutatingSetter(c, 4);
-  self::expect(5, let final self::Class* #t56 = c in #t56.{core::Object::==}(null) ?{core::int*} null : #t56.{self::Class::field});
+  self::expect(5, let final self::Class* #t56 = c in #t56.{self::Class::==}(null) ?{core::int*} null : #t56.{self::Class::field});
   self::expect(6, let final self::Class* #t57 = c in let final core::int* #t58 = 6 in let final void #t59 = self::Extension|set#mutatingSetter(#t57, #t58) in #t58);
-  self::expect(7, let final self::Class* #t60 = c in #t60.{core::Object::==}(null) ?{core::int*} null : #t60.{self::Class::field});
-  let final self::Class* #t61 = c in #t61.{core::Object::==}(null) ?{core::int*} null : self::Extension|set#setterWithReturn(#t61, 1);
-  self::expect(1, let final self::Class* #t62 = c in #t62.{core::Object::==}(null) ?{core::int*} null : #t62.{self::Class::field});
-  let final self::Class* #t63 = c in #t63.{core::Object::==}(null) ?{core::int*} null : self::Extension|set#setterWithReturn(#t63, 2.{core::int::unary-}());
-  self::expect(2, let final self::Class* #t64 = c in #t64.{core::Object::==}(null) ?{core::int*} null : #t64.{self::Class::field});
-  self::expect(3, let final self::Class* #t65 = c in #t65.{core::Object::==}(null) ?{core::int*} null : let final core::int* #t66 = 3 in let final void #t67 = self::Extension|set#setterWithReturn(#t65, #t66) in #t66);
-  self::expect(3, let final self::Class* #t68 = c in #t68.{core::Object::==}(null) ?{core::int*} null : #t68.{self::Class::field});
-  self::expect(4.{core::int::unary-}(), let final self::Class* #t69 = c in #t69.{core::Object::==}(null) ?{core::int*} null : let final core::int* #t70 = 4.{core::int::unary-}() in let final void #t71 = self::Extension|set#setterWithReturn(#t69, #t70) in #t70);
-  self::expect(4, let final self::Class* #t72 = c in #t72.{core::Object::==}(null) ?{core::int*} null : #t72.{self::Class::field});
+  self::expect(7, let final self::Class* #t60 = c in #t60.{self::Class::==}(null) ?{core::int*} null : #t60.{self::Class::field});
+  let final self::Class* #t61 = c in #t61.{self::Class::==}(null) ?{core::int*} null : self::Extension|set#setterWithReturn(#t61, 1);
+  self::expect(1, let final self::Class* #t62 = c in #t62.{self::Class::==}(null) ?{core::int*} null : #t62.{self::Class::field});
+  let final self::Class* #t63 = c in #t63.{self::Class::==}(null) ?{core::int*} null : self::Extension|set#setterWithReturn(#t63, 2.{core::int::unary-}());
+  self::expect(2, let final self::Class* #t64 = c in #t64.{self::Class::==}(null) ?{core::int*} null : #t64.{self::Class::field});
+  self::expect(3, let final self::Class* #t65 = c in #t65.{self::Class::==}(null) ?{core::int*} null : let final core::int* #t66 = 3 in let final void #t67 = self::Extension|set#setterWithReturn(#t65, #t66) in #t66);
+  self::expect(3, let final self::Class* #t68 = c in #t68.{self::Class::==}(null) ?{core::int*} null : #t68.{self::Class::field});
+  self::expect(4.{core::int::unary-}(), let final self::Class* #t69 = c in #t69.{self::Class::==}(null) ?{core::int*} null : let final core::int #t70 = 4.{core::int::unary-}() in let final void #t71 = self::Extension|set#setterWithReturn(#t69, #t70) in #t70);
+  self::expect(4, let final self::Class* #t72 = c in #t72.{self::Class::==}(null) ?{core::int*} null : #t72.{self::Class::field});
   self::Extension|set#setterWithReturn(c, 5);
-  self::expect(5, let final self::Class* #t73 = c in #t73.{core::Object::==}(null) ?{core::int*} null : #t73.{self::Class::field});
+  self::expect(5, let final self::Class* #t73 = c in #t73.{self::Class::==}(null) ?{core::int*} null : #t73.{self::Class::field});
   self::Extension|set#setterWithReturn(c, 6.{core::int::unary-}());
-  self::expect(6, let final self::Class* #t74 = c in #t74.{core::Object::==}(null) ?{core::int*} null : #t74.{self::Class::field});
+  self::expect(6, let final self::Class* #t74 = c in #t74.{self::Class::==}(null) ?{core::int*} null : #t74.{self::Class::field});
   self::expect(7, let final self::Class* #t75 = c in let final core::int* #t76 = 7 in let final void #t77 = self::Extension|set#setterWithReturn(#t75, #t76) in #t76);
-  self::expect(7, let final self::Class* #t78 = c in #t78.{core::Object::==}(null) ?{core::int*} null : #t78.{self::Class::field});
-  self::expect(8.{core::int::unary-}(), let final self::Class* #t79 = c in let final core::int* #t80 = 8.{core::int::unary-}() in let final void #t81 = self::Extension|set#setterWithReturn(#t79, #t80) in #t80);
-  self::expect(8, let final self::Class* #t82 = c in #t82.{core::Object::==}(null) ?{core::int*} null : #t82.{self::Class::field});
-  let final self::Class* #t83 = c in #t83.{core::Object::==}(null) ?{core::int*} null : self::Extension|set#setterWithClosure(#t83, 1);
-  self::expect(1, let final self::Class* #t84 = c in #t84.{core::Object::==}(null) ?{core::int*} null : #t84.{self::Class::field});
-  let final self::Class* #t85 = c in #t85.{core::Object::==}(null) ?{core::int*} null : self::Extension|set#setterWithClosure(#t85, 2.{core::int::unary-}());
-  self::expect(2, let final self::Class* #t86 = c in #t86.{core::Object::==}(null) ?{core::int*} null : #t86.{self::Class::field});
-  self::expect(3, let final self::Class* #t87 = c in #t87.{core::Object::==}(null) ?{core::int*} null : let final core::int* #t88 = 3 in let final void #t89 = self::Extension|set#setterWithClosure(#t87, #t88) in #t88);
-  self::expect(3, let final self::Class* #t90 = c in #t90.{core::Object::==}(null) ?{core::int*} null : #t90.{self::Class::field});
-  self::expect(4.{core::int::unary-}(), let final self::Class* #t91 = c in #t91.{core::Object::==}(null) ?{core::int*} null : let final core::int* #t92 = 4.{core::int::unary-}() in let final void #t93 = self::Extension|set#setterWithClosure(#t91, #t92) in #t92);
-  self::expect(4, let final self::Class* #t94 = c in #t94.{core::Object::==}(null) ?{core::int*} null : #t94.{self::Class::field});
+  self::expect(7, let final self::Class* #t78 = c in #t78.{self::Class::==}(null) ?{core::int*} null : #t78.{self::Class::field});
+  self::expect(8.{core::int::unary-}(), let final self::Class* #t79 = c in let final core::int #t80 = 8.{core::int::unary-}() in let final void #t81 = self::Extension|set#setterWithReturn(#t79, #t80) in #t80);
+  self::expect(8, let final self::Class* #t82 = c in #t82.{self::Class::==}(null) ?{core::int*} null : #t82.{self::Class::field});
+  let final self::Class* #t83 = c in #t83.{self::Class::==}(null) ?{core::int*} null : self::Extension|set#setterWithClosure(#t83, 1);
+  self::expect(1, let final self::Class* #t84 = c in #t84.{self::Class::==}(null) ?{core::int*} null : #t84.{self::Class::field});
+  let final self::Class* #t85 = c in #t85.{self::Class::==}(null) ?{core::int*} null : self::Extension|set#setterWithClosure(#t85, 2.{core::int::unary-}());
+  self::expect(2, let final self::Class* #t86 = c in #t86.{self::Class::==}(null) ?{core::int*} null : #t86.{self::Class::field});
+  self::expect(3, let final self::Class* #t87 = c in #t87.{self::Class::==}(null) ?{core::int*} null : let final core::int* #t88 = 3 in let final void #t89 = self::Extension|set#setterWithClosure(#t87, #t88) in #t88);
+  self::expect(3, let final self::Class* #t90 = c in #t90.{self::Class::==}(null) ?{core::int*} null : #t90.{self::Class::field});
+  self::expect(4.{core::int::unary-}(), let final self::Class* #t91 = c in #t91.{self::Class::==}(null) ?{core::int*} null : let final core::int #t92 = 4.{core::int::unary-}() in let final void #t93 = self::Extension|set#setterWithClosure(#t91, #t92) in #t92);
+  self::expect(4, let final self::Class* #t94 = c in #t94.{self::Class::==}(null) ?{core::int*} null : #t94.{self::Class::field});
   self::Extension|set#setterWithClosure(c, 5);
-  self::expect(5, let final self::Class* #t95 = c in #t95.{core::Object::==}(null) ?{core::int*} null : #t95.{self::Class::field});
+  self::expect(5, let final self::Class* #t95 = c in #t95.{self::Class::==}(null) ?{core::int*} null : #t95.{self::Class::field});
   self::Extension|set#setterWithClosure(c, 6.{core::int::unary-}());
-  self::expect(6, let final self::Class* #t96 = c in #t96.{core::Object::==}(null) ?{core::int*} null : #t96.{self::Class::field});
+  self::expect(6, let final self::Class* #t96 = c in #t96.{self::Class::==}(null) ?{core::int*} null : #t96.{self::Class::field});
   self::expect(7, let final self::Class* #t97 = c in let final core::int* #t98 = 7 in let final void #t99 = self::Extension|set#setterWithClosure(#t97, #t98) in #t98);
-  self::expect(7, let final self::Class* #t100 = c in #t100.{core::Object::==}(null) ?{core::int*} null : #t100.{self::Class::field});
-  self::expect(8.{core::int::unary-}(), let final self::Class* #t101 = c in let final core::int* #t102 = 8.{core::int::unary-}() in let final void #t103 = self::Extension|set#setterWithClosure(#t101, #t102) in #t102);
-  self::expect(8, let final self::Class* #t104 = c in #t104.{core::Object::==}(null) ?{core::int*} null : #t104.{self::Class::field});
+  self::expect(7, let final self::Class* #t100 = c in #t100.{self::Class::==}(null) ?{core::int*} null : #t100.{self::Class::field});
+  self::expect(8.{core::int::unary-}(), let final self::Class* #t101 = c in let final core::int #t102 = 8.{core::int::unary-}() in let final void #t103 = self::Extension|set#setterWithClosure(#t101, #t102) in #t102);
+  self::expect(8, let final self::Class* #t104 = c in #t104.{self::Class::==}(null) ?{core::int*} null : #t104.{self::Class::field});
   c.{self::Class::field} = null;
   let final self::Class* #t105 = c in self::Extension|get#simpleSetter(#t105).{core::num::==}(null) ?{core::int*} self::Extension|set#simpleSetter(#t105, 1) : null;
   self::expect(1, c.{self::Class::field});
   self::expect(1, let final self::Class* #t106 = c in let final core::int* #t107 = self::Extension|get#simpleSetter(#t106) in #t107.{core::num::==}(null) ?{core::int*} let final core::int* #t108 = 2 in let final void #t109 = self::Extension|set#simpleSetter(#t106, #t108) in #t108 : #t107);
   c.{self::Class::field} = null;
   self::expect(2, let final self::Class* #t110 = c in let final core::int* #t111 = self::Extension|get#simpleSetter(#t110) in #t111.{core::num::==}(null) ?{core::int*} let final core::int* #t112 = 2 in let final void #t113 = self::Extension|set#simpleSetter(#t110, #t112) in #t112 : #t111);
-  let final self::Class* #t114 = c in #t114.{core::Object::==}(null) ?{core::Null?} null : #t114.{self::Class::field} = null;
-  let final self::Class* #t115 = c in #t115.{core::Object::==}(null) ?{core::int*} null : self::Extension|get#simpleSetter(#t115).{core::num::==}(null) ?{core::int*} self::Extension|set#simpleSetter(#t115, 1) : null;
-  self::expect(1, let final self::Class* #t116 = c in #t116.{core::Object::==}(null) ?{core::int*} null : #t116.{self::Class::field});
-  self::expect(1, let final self::Class* #t117 = c in #t117.{core::Object::==}(null) ?{core::int*} null : let final core::int* #t118 = self::Extension|get#simpleSetter(#t117) in #t118.{core::num::==}(null) ?{core::int*} let final core::int* #t119 = 2 in let final void #t120 = self::Extension|set#simpleSetter(#t117, #t119) in #t119 : #t118);
-  let final self::Class* #t121 = c in #t121.{core::Object::==}(null) ?{core::Null?} null : #t121.{self::Class::field} = null;
-  self::expect(2, let final self::Class* #t122 = c in #t122.{core::Object::==}(null) ?{core::int*} null : let final core::int* #t123 = self::Extension|get#simpleSetter(#t122) in #t123.{core::num::==}(null) ?{core::int*} let final core::int* #t124 = 2 in let final void #t125 = self::Extension|set#simpleSetter(#t122, #t124) in #t124 : #t123);
+  let final self::Class* #t114 = c in #t114.{self::Class::==}(null) ?{core::Null?} null : #t114.{self::Class::field} = null;
+  let final self::Class* #t115 = c in #t115.{self::Class::==}(null) ?{core::int*} null : self::Extension|get#simpleSetter(#t115).{core::num::==}(null) ?{core::int*} self::Extension|set#simpleSetter(#t115, 1) : null;
+  self::expect(1, let final self::Class* #t116 = c in #t116.{self::Class::==}(null) ?{core::int*} null : #t116.{self::Class::field});
+  self::expect(1, let final self::Class* #t117 = c in #t117.{self::Class::==}(null) ?{core::int*} null : let final core::int* #t118 = self::Extension|get#simpleSetter(#t117) in #t118.{core::num::==}(null) ?{core::int*} let final core::int* #t119 = 2 in let final void #t120 = self::Extension|set#simpleSetter(#t117, #t119) in #t119 : #t118);
+  let final self::Class* #t121 = c in #t121.{self::Class::==}(null) ?{core::Null?} null : #t121.{self::Class::field} = null;
+  self::expect(2, let final self::Class* #t122 = c in #t122.{self::Class::==}(null) ?{core::int*} null : let final core::int* #t123 = self::Extension|get#simpleSetter(#t122) in #t123.{core::num::==}(null) ?{core::int*} let final core::int* #t124 = 2 in let final void #t125 = self::Extension|set#simpleSetter(#t122, #t124) in #t124 : #t123);
   self::Extension|testInternal(new self::Class::•());
   self::GenericClass<core::int*>* genericClass = new self::GenericClass::•<core::int*>();
   self::expect(1, let final self::GenericClass<core::int*>* #t126 = genericClass in let final core::int* #t127 = 1 in let final void #t128 = self::GenericExtension|set#setter<core::int*>(#t126, #t127) in #t127);
diff --git a/pkg/front_end/testcases/extensions/extension_setter.dart.strong.transformed.expect b/pkg/front_end/testcases/extensions/extension_setter.dart.strong.transformed.expect
index f4366a8..686d8d2 100644
--- a/pkg/front_end/testcases/extensions/extension_setter.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/extensions/extension_setter.dart.strong.transformed.expect
@@ -7,11 +7,31 @@
   synthetic constructor •() → self::Class*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class GenericClass<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::GenericClass<self::GenericClass::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 extension Extension on self::Class* {
   get simpleSetter = self::Extension|get#simpleSetter;
@@ -71,7 +91,7 @@
   self::expect(2, #this.{self::Class::field});
   self::expect(3, let final core::int* #t5 = 3 in let final void #t6 = self::Extension|set#setterWithReturn(#this, #t5) in #t5);
   self::expect(3, #this.{self::Class::field});
-  self::expect(4.{core::int::unary-}(), let final core::int* #t7 = 4.{core::int::unary-}() in let final void #t8 = self::Extension|set#setterWithReturn(#this, #t7) in #t7);
+  self::expect(4.{core::int::unary-}(), let final core::int #t7 = 4.{core::int::unary-}() in let final void #t8 = self::Extension|set#setterWithReturn(#this, #t7) in #t7);
   self::expect(4, #this.{self::Class::field});
   self::Extension|set#setterWithClosure(#this, 1);
   self::expect(1, #this.{self::Class::field});
@@ -79,7 +99,7 @@
   self::expect(2, #this.{self::Class::field});
   self::expect(3, let final core::int* #t9 = 3 in let final void #t10 = self::Extension|set#setterWithClosure(#this, #t9) in #t9);
   self::expect(3, #this.{self::Class::field});
-  self::expect(4.{core::int::unary-}(), let final core::int* #t11 = 4.{core::int::unary-}() in let final void #t12 = self::Extension|set#setterWithClosure(#this, #t11) in #t11);
+  self::expect(4.{core::int::unary-}(), let final core::int #t11 = 4.{core::int::unary-}() in let final void #t12 = self::Extension|set#setterWithClosure(#this, #t11) in #t11);
   self::expect(4, #this.{self::Class::field});
 }
 static method Extension|get#testInternal(final self::Class* #this) → () →* dynamic
@@ -108,7 +128,7 @@
   self::expect(2, c.{self::Class::field});
   self::expect(3, let final core::int* #t23 = 3 in let final void #t24 = self::Extension|set#setterWithReturn(c, #t23) in #t23);
   self::expect(3, c.{self::Class::field});
-  self::expect(4.{core::int::unary-}(), let final core::int* #t25 = 4.{core::int::unary-}() in let final void #t26 = self::Extension|set#setterWithReturn(c, #t25) in #t25);
+  self::expect(4.{core::int::unary-}(), let final core::int #t25 = 4.{core::int::unary-}() in let final void #t26 = self::Extension|set#setterWithReturn(c, #t25) in #t25);
   self::expect(4, c.{self::Class::field});
   self::Extension|set#setterWithReturn(c, 5);
   self::expect(5, c.{self::Class::field});
@@ -116,7 +136,7 @@
   self::expect(6, c.{self::Class::field});
   self::expect(7, let final self::Class* #t27 = c in let final core::int* #t28 = 7 in let final void #t29 = self::Extension|set#setterWithReturn(#t27, #t28) in #t28);
   self::expect(7, c.{self::Class::field});
-  self::expect(8.{core::int::unary-}(), let final self::Class* #t30 = c in let final core::int* #t31 = 8.{core::int::unary-}() in let final void #t32 = self::Extension|set#setterWithReturn(#t30, #t31) in #t31);
+  self::expect(8.{core::int::unary-}(), let final self::Class* #t30 = c in let final core::int #t31 = 8.{core::int::unary-}() in let final void #t32 = self::Extension|set#setterWithReturn(#t30, #t31) in #t31);
   self::expect(8, c.{self::Class::field});
   self::Extension|set#setterWithClosure(c, 1);
   self::expect(1, c.{self::Class::field});
@@ -124,7 +144,7 @@
   self::expect(2, c.{self::Class::field});
   self::expect(3, let final core::int* #t33 = 3 in let final void #t34 = self::Extension|set#setterWithClosure(c, #t33) in #t33);
   self::expect(3, c.{self::Class::field});
-  self::expect(4.{core::int::unary-}(), let final core::int* #t35 = 4.{core::int::unary-}() in let final void #t36 = self::Extension|set#setterWithClosure(c, #t35) in #t35);
+  self::expect(4.{core::int::unary-}(), let final core::int #t35 = 4.{core::int::unary-}() in let final void #t36 = self::Extension|set#setterWithClosure(c, #t35) in #t35);
   self::expect(4, c.{self::Class::field});
   self::Extension|set#setterWithClosure(c, 5);
   self::expect(5, c.{self::Class::field});
@@ -132,66 +152,66 @@
   self::expect(6, c.{self::Class::field});
   self::expect(7, let final self::Class* #t37 = c in let final core::int* #t38 = 7 in let final void #t39 = self::Extension|set#setterWithClosure(#t37, #t38) in #t38);
   self::expect(7, c.{self::Class::field});
-  self::expect(8.{core::int::unary-}(), let final self::Class* #t40 = c in let final core::int* #t41 = 8.{core::int::unary-}() in let final void #t42 = self::Extension|set#setterWithClosure(#t40, #t41) in #t41);
+  self::expect(8.{core::int::unary-}(), let final self::Class* #t40 = c in let final core::int #t41 = 8.{core::int::unary-}() in let final void #t42 = self::Extension|set#setterWithClosure(#t40, #t41) in #t41);
   self::expect(8, c.{self::Class::field});
   self::Extension|set#simpleSetter(c, 0);
-  self::expect(0, let final self::Class* #t43 = c in #t43.{core::Object::==}(null) ?{core::int*} null : #t43.{self::Class::field});
-  self::expect(1, let final self::Class* #t44 = c in #t44.{core::Object::==}(null) ?{core::int*} null : let final core::int* #t45 = 1 in let final void #t46 = self::Extension|set#simpleSetter(#t44, #t45) in #t45);
+  self::expect(0, let final self::Class* #t43 = c in #t43.{self::Class::==}(null) ?{core::int*} null : #t43.{self::Class::field});
+  self::expect(1, let final self::Class* #t44 = c in #t44.{self::Class::==}(null) ?{core::int*} null : let final core::int* #t45 = 1 in let final void #t46 = self::Extension|set#simpleSetter(#t44, #t45) in #t45);
   self::Extension|set#simpleSetter(c, 2);
-  self::expect(2, let final self::Class* #t47 = c in #t47.{core::Object::==}(null) ?{core::int*} null : #t47.{self::Class::field});
+  self::expect(2, let final self::Class* #t47 = c in #t47.{self::Class::==}(null) ?{core::int*} null : #t47.{self::Class::field});
   self::expect(3, let final self::Class* #t48 = c in let final core::int* #t49 = 3 in let final void #t50 = self::Extension|set#simpleSetter(#t48, #t49) in #t49);
   self::Extension|set#mutatingSetter(c, 0);
-  self::expect(1, let final self::Class* #t51 = c in #t51.{core::Object::==}(null) ?{core::int*} null : #t51.{self::Class::field});
-  self::expect(2, let final self::Class* #t52 = c in #t52.{core::Object::==}(null) ?{core::int*} null : let final core::int* #t53 = 2 in let final void #t54 = self::Extension|set#mutatingSetter(#t52, #t53) in #t53);
-  self::expect(3, let final self::Class* #t55 = c in #t55.{core::Object::==}(null) ?{core::int*} null : #t55.{self::Class::field});
+  self::expect(1, let final self::Class* #t51 = c in #t51.{self::Class::==}(null) ?{core::int*} null : #t51.{self::Class::field});
+  self::expect(2, let final self::Class* #t52 = c in #t52.{self::Class::==}(null) ?{core::int*} null : let final core::int* #t53 = 2 in let final void #t54 = self::Extension|set#mutatingSetter(#t52, #t53) in #t53);
+  self::expect(3, let final self::Class* #t55 = c in #t55.{self::Class::==}(null) ?{core::int*} null : #t55.{self::Class::field});
   self::Extension|set#mutatingSetter(c, 4);
-  self::expect(5, let final self::Class* #t56 = c in #t56.{core::Object::==}(null) ?{core::int*} null : #t56.{self::Class::field});
+  self::expect(5, let final self::Class* #t56 = c in #t56.{self::Class::==}(null) ?{core::int*} null : #t56.{self::Class::field});
   self::expect(6, let final self::Class* #t57 = c in let final core::int* #t58 = 6 in let final void #t59 = self::Extension|set#mutatingSetter(#t57, #t58) in #t58);
-  self::expect(7, let final self::Class* #t60 = c in #t60.{core::Object::==}(null) ?{core::int*} null : #t60.{self::Class::field});
-  let final self::Class* #t61 = c in #t61.{core::Object::==}(null) ?{core::int*} null : self::Extension|set#setterWithReturn(#t61, 1);
-  self::expect(1, let final self::Class* #t62 = c in #t62.{core::Object::==}(null) ?{core::int*} null : #t62.{self::Class::field});
-  let final self::Class* #t63 = c in #t63.{core::Object::==}(null) ?{core::int*} null : self::Extension|set#setterWithReturn(#t63, 2.{core::int::unary-}());
-  self::expect(2, let final self::Class* #t64 = c in #t64.{core::Object::==}(null) ?{core::int*} null : #t64.{self::Class::field});
-  self::expect(3, let final self::Class* #t65 = c in #t65.{core::Object::==}(null) ?{core::int*} null : let final core::int* #t66 = 3 in let final void #t67 = self::Extension|set#setterWithReturn(#t65, #t66) in #t66);
-  self::expect(3, let final self::Class* #t68 = c in #t68.{core::Object::==}(null) ?{core::int*} null : #t68.{self::Class::field});
-  self::expect(4.{core::int::unary-}(), let final self::Class* #t69 = c in #t69.{core::Object::==}(null) ?{core::int*} null : let final core::int* #t70 = 4.{core::int::unary-}() in let final void #t71 = self::Extension|set#setterWithReturn(#t69, #t70) in #t70);
-  self::expect(4, let final self::Class* #t72 = c in #t72.{core::Object::==}(null) ?{core::int*} null : #t72.{self::Class::field});
+  self::expect(7, let final self::Class* #t60 = c in #t60.{self::Class::==}(null) ?{core::int*} null : #t60.{self::Class::field});
+  let final self::Class* #t61 = c in #t61.{self::Class::==}(null) ?{core::int*} null : self::Extension|set#setterWithReturn(#t61, 1);
+  self::expect(1, let final self::Class* #t62 = c in #t62.{self::Class::==}(null) ?{core::int*} null : #t62.{self::Class::field});
+  let final self::Class* #t63 = c in #t63.{self::Class::==}(null) ?{core::int*} null : self::Extension|set#setterWithReturn(#t63, 2.{core::int::unary-}());
+  self::expect(2, let final self::Class* #t64 = c in #t64.{self::Class::==}(null) ?{core::int*} null : #t64.{self::Class::field});
+  self::expect(3, let final self::Class* #t65 = c in #t65.{self::Class::==}(null) ?{core::int*} null : let final core::int* #t66 = 3 in let final void #t67 = self::Extension|set#setterWithReturn(#t65, #t66) in #t66);
+  self::expect(3, let final self::Class* #t68 = c in #t68.{self::Class::==}(null) ?{core::int*} null : #t68.{self::Class::field});
+  self::expect(4.{core::int::unary-}(), let final self::Class* #t69 = c in #t69.{self::Class::==}(null) ?{core::int*} null : let final core::int #t70 = 4.{core::int::unary-}() in let final void #t71 = self::Extension|set#setterWithReturn(#t69, #t70) in #t70);
+  self::expect(4, let final self::Class* #t72 = c in #t72.{self::Class::==}(null) ?{core::int*} null : #t72.{self::Class::field});
   self::Extension|set#setterWithReturn(c, 5);
-  self::expect(5, let final self::Class* #t73 = c in #t73.{core::Object::==}(null) ?{core::int*} null : #t73.{self::Class::field});
+  self::expect(5, let final self::Class* #t73 = c in #t73.{self::Class::==}(null) ?{core::int*} null : #t73.{self::Class::field});
   self::Extension|set#setterWithReturn(c, 6.{core::int::unary-}());
-  self::expect(6, let final self::Class* #t74 = c in #t74.{core::Object::==}(null) ?{core::int*} null : #t74.{self::Class::field});
+  self::expect(6, let final self::Class* #t74 = c in #t74.{self::Class::==}(null) ?{core::int*} null : #t74.{self::Class::field});
   self::expect(7, let final self::Class* #t75 = c in let final core::int* #t76 = 7 in let final void #t77 = self::Extension|set#setterWithReturn(#t75, #t76) in #t76);
-  self::expect(7, let final self::Class* #t78 = c in #t78.{core::Object::==}(null) ?{core::int*} null : #t78.{self::Class::field});
-  self::expect(8.{core::int::unary-}(), let final self::Class* #t79 = c in let final core::int* #t80 = 8.{core::int::unary-}() in let final void #t81 = self::Extension|set#setterWithReturn(#t79, #t80) in #t80);
-  self::expect(8, let final self::Class* #t82 = c in #t82.{core::Object::==}(null) ?{core::int*} null : #t82.{self::Class::field});
-  let final self::Class* #t83 = c in #t83.{core::Object::==}(null) ?{core::int*} null : self::Extension|set#setterWithClosure(#t83, 1);
-  self::expect(1, let final self::Class* #t84 = c in #t84.{core::Object::==}(null) ?{core::int*} null : #t84.{self::Class::field});
-  let final self::Class* #t85 = c in #t85.{core::Object::==}(null) ?{core::int*} null : self::Extension|set#setterWithClosure(#t85, 2.{core::int::unary-}());
-  self::expect(2, let final self::Class* #t86 = c in #t86.{core::Object::==}(null) ?{core::int*} null : #t86.{self::Class::field});
-  self::expect(3, let final self::Class* #t87 = c in #t87.{core::Object::==}(null) ?{core::int*} null : let final core::int* #t88 = 3 in let final void #t89 = self::Extension|set#setterWithClosure(#t87, #t88) in #t88);
-  self::expect(3, let final self::Class* #t90 = c in #t90.{core::Object::==}(null) ?{core::int*} null : #t90.{self::Class::field});
-  self::expect(4.{core::int::unary-}(), let final self::Class* #t91 = c in #t91.{core::Object::==}(null) ?{core::int*} null : let final core::int* #t92 = 4.{core::int::unary-}() in let final void #t93 = self::Extension|set#setterWithClosure(#t91, #t92) in #t92);
-  self::expect(4, let final self::Class* #t94 = c in #t94.{core::Object::==}(null) ?{core::int*} null : #t94.{self::Class::field});
+  self::expect(7, let final self::Class* #t78 = c in #t78.{self::Class::==}(null) ?{core::int*} null : #t78.{self::Class::field});
+  self::expect(8.{core::int::unary-}(), let final self::Class* #t79 = c in let final core::int #t80 = 8.{core::int::unary-}() in let final void #t81 = self::Extension|set#setterWithReturn(#t79, #t80) in #t80);
+  self::expect(8, let final self::Class* #t82 = c in #t82.{self::Class::==}(null) ?{core::int*} null : #t82.{self::Class::field});
+  let final self::Class* #t83 = c in #t83.{self::Class::==}(null) ?{core::int*} null : self::Extension|set#setterWithClosure(#t83, 1);
+  self::expect(1, let final self::Class* #t84 = c in #t84.{self::Class::==}(null) ?{core::int*} null : #t84.{self::Class::field});
+  let final self::Class* #t85 = c in #t85.{self::Class::==}(null) ?{core::int*} null : self::Extension|set#setterWithClosure(#t85, 2.{core::int::unary-}());
+  self::expect(2, let final self::Class* #t86 = c in #t86.{self::Class::==}(null) ?{core::int*} null : #t86.{self::Class::field});
+  self::expect(3, let final self::Class* #t87 = c in #t87.{self::Class::==}(null) ?{core::int*} null : let final core::int* #t88 = 3 in let final void #t89 = self::Extension|set#setterWithClosure(#t87, #t88) in #t88);
+  self::expect(3, let final self::Class* #t90 = c in #t90.{self::Class::==}(null) ?{core::int*} null : #t90.{self::Class::field});
+  self::expect(4.{core::int::unary-}(), let final self::Class* #t91 = c in #t91.{self::Class::==}(null) ?{core::int*} null : let final core::int #t92 = 4.{core::int::unary-}() in let final void #t93 = self::Extension|set#setterWithClosure(#t91, #t92) in #t92);
+  self::expect(4, let final self::Class* #t94 = c in #t94.{self::Class::==}(null) ?{core::int*} null : #t94.{self::Class::field});
   self::Extension|set#setterWithClosure(c, 5);
-  self::expect(5, let final self::Class* #t95 = c in #t95.{core::Object::==}(null) ?{core::int*} null : #t95.{self::Class::field});
+  self::expect(5, let final self::Class* #t95 = c in #t95.{self::Class::==}(null) ?{core::int*} null : #t95.{self::Class::field});
   self::Extension|set#setterWithClosure(c, 6.{core::int::unary-}());
-  self::expect(6, let final self::Class* #t96 = c in #t96.{core::Object::==}(null) ?{core::int*} null : #t96.{self::Class::field});
+  self::expect(6, let final self::Class* #t96 = c in #t96.{self::Class::==}(null) ?{core::int*} null : #t96.{self::Class::field});
   self::expect(7, let final self::Class* #t97 = c in let final core::int* #t98 = 7 in let final void #t99 = self::Extension|set#setterWithClosure(#t97, #t98) in #t98);
-  self::expect(7, let final self::Class* #t100 = c in #t100.{core::Object::==}(null) ?{core::int*} null : #t100.{self::Class::field});
-  self::expect(8.{core::int::unary-}(), let final self::Class* #t101 = c in let final core::int* #t102 = 8.{core::int::unary-}() in let final void #t103 = self::Extension|set#setterWithClosure(#t101, #t102) in #t102);
-  self::expect(8, let final self::Class* #t104 = c in #t104.{core::Object::==}(null) ?{core::int*} null : #t104.{self::Class::field});
+  self::expect(7, let final self::Class* #t100 = c in #t100.{self::Class::==}(null) ?{core::int*} null : #t100.{self::Class::field});
+  self::expect(8.{core::int::unary-}(), let final self::Class* #t101 = c in let final core::int #t102 = 8.{core::int::unary-}() in let final void #t103 = self::Extension|set#setterWithClosure(#t101, #t102) in #t102);
+  self::expect(8, let final self::Class* #t104 = c in #t104.{self::Class::==}(null) ?{core::int*} null : #t104.{self::Class::field});
   c.{self::Class::field} = null;
   let final self::Class* #t105 = c in self::Extension|get#simpleSetter(#t105).{core::num::==}(null) ?{core::int*} self::Extension|set#simpleSetter(#t105, 1) : null;
   self::expect(1, c.{self::Class::field});
   self::expect(1, let final self::Class* #t106 = c in let final core::int* #t107 = self::Extension|get#simpleSetter(#t106) in #t107.{core::num::==}(null) ?{core::int*} let final core::int* #t108 = 2 in let final void #t109 = self::Extension|set#simpleSetter(#t106, #t108) in #t108 : #t107);
   c.{self::Class::field} = null;
   self::expect(2, let final self::Class* #t110 = c in let final core::int* #t111 = self::Extension|get#simpleSetter(#t110) in #t111.{core::num::==}(null) ?{core::int*} let final core::int* #t112 = 2 in let final void #t113 = self::Extension|set#simpleSetter(#t110, #t112) in #t112 : #t111);
-  let final self::Class* #t114 = c in #t114.{core::Object::==}(null) ?{core::Null?} null : #t114.{self::Class::field} = null;
-  let final self::Class* #t115 = c in #t115.{core::Object::==}(null) ?{core::int*} null : self::Extension|get#simpleSetter(#t115).{core::num::==}(null) ?{core::int*} self::Extension|set#simpleSetter(#t115, 1) : null;
-  self::expect(1, let final self::Class* #t116 = c in #t116.{core::Object::==}(null) ?{core::int*} null : #t116.{self::Class::field});
-  self::expect(1, let final self::Class* #t117 = c in #t117.{core::Object::==}(null) ?{core::int*} null : let final core::int* #t118 = self::Extension|get#simpleSetter(#t117) in #t118.{core::num::==}(null) ?{core::int*} let final core::int* #t119 = 2 in let final void #t120 = self::Extension|set#simpleSetter(#t117, #t119) in #t119 : #t118);
-  let final self::Class* #t121 = c in #t121.{core::Object::==}(null) ?{core::Null?} null : #t121.{self::Class::field} = null;
-  self::expect(2, let final self::Class* #t122 = c in #t122.{core::Object::==}(null) ?{core::int*} null : let final core::int* #t123 = self::Extension|get#simpleSetter(#t122) in #t123.{core::num::==}(null) ?{core::int*} let final core::int* #t124 = 2 in let final void #t125 = self::Extension|set#simpleSetter(#t122, #t124) in #t124 : #t123);
+  let final self::Class* #t114 = c in #t114.{self::Class::==}(null) ?{core::Null?} null : #t114.{self::Class::field} = null;
+  let final self::Class* #t115 = c in #t115.{self::Class::==}(null) ?{core::int*} null : self::Extension|get#simpleSetter(#t115).{core::num::==}(null) ?{core::int*} self::Extension|set#simpleSetter(#t115, 1) : null;
+  self::expect(1, let final self::Class* #t116 = c in #t116.{self::Class::==}(null) ?{core::int*} null : #t116.{self::Class::field});
+  self::expect(1, let final self::Class* #t117 = c in #t117.{self::Class::==}(null) ?{core::int*} null : let final core::int* #t118 = self::Extension|get#simpleSetter(#t117) in #t118.{core::num::==}(null) ?{core::int*} let final core::int* #t119 = 2 in let final void #t120 = self::Extension|set#simpleSetter(#t117, #t119) in #t119 : #t118);
+  let final self::Class* #t121 = c in #t121.{self::Class::==}(null) ?{core::Null?} null : #t121.{self::Class::field} = null;
+  self::expect(2, let final self::Class* #t122 = c in #t122.{self::Class::==}(null) ?{core::int*} null : let final core::int* #t123 = self::Extension|get#simpleSetter(#t122) in #t123.{core::num::==}(null) ?{core::int*} let final core::int* #t124 = 2 in let final void #t125 = self::Extension|set#simpleSetter(#t122, #t124) in #t124 : #t123);
   self::Extension|testInternal(new self::Class::•());
   self::GenericClass<core::int*>* genericClass = new self::GenericClass::•<core::int*>();
   self::expect(1, let final self::GenericClass<core::int*>* #t126 = genericClass in let final core::int* #t127 = 1 in let final void #t128 = self::GenericExtension|set#setter<core::int*>(#t126, #t127) in #t127);
diff --git a/pkg/front_end/testcases/extensions/extension_setter_error.dart.outline.expect b/pkg/front_end/testcases/extensions/extension_setter_error.dart.outline.expect
index bdf566f..9313c7e 100644
--- a/pkg/front_end/testcases/extensions/extension_setter_error.dart.outline.expect
+++ b/pkg/front_end/testcases/extensions/extension_setter_error.dart.outline.expect
@@ -5,6 +5,16 @@
 class GenericClass<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::GenericClass<self::GenericClass::T*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 extension GenericExtension<T extends core::Object* = dynamic> on self::GenericClass<T*>* {
   set setter = self::GenericExtension|set#setter;
diff --git a/pkg/front_end/testcases/extensions/extension_setter_error.dart.strong.expect b/pkg/front_end/testcases/extensions/extension_setter_error.dart.strong.expect
index 7711d44..2299c30 100644
--- a/pkg/front_end/testcases/extensions/extension_setter_error.dart.strong.expect
+++ b/pkg/front_end/testcases/extensions/extension_setter_error.dart.strong.expect
@@ -14,6 +14,16 @@
   synthetic constructor •() → self::GenericClass<self::GenericClass::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 extension GenericExtension<T extends core::Object* = dynamic> on self::GenericClass<T*>* {
   set setter = self::GenericExtension|set#setter;
diff --git a/pkg/front_end/testcases/extensions/generic_function_in_generic_extension.dart.outline.expect b/pkg/front_end/testcases/extensions/generic_function_in_generic_extension.dart.outline.expect
index a666b12..e004ecb 100644
--- a/pkg/front_end/testcases/extensions/generic_function_in_generic_extension.dart.outline.expect
+++ b/pkg/front_end/testcases/extensions/generic_function_in_generic_extension.dart.outline.expect
@@ -5,6 +5,16 @@
 class Class<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::Class<self::Class::T*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 extension Extension<T extends core::Object* = dynamic> on self::Class<T*>* {
   method method = self::Extension|method;
diff --git a/pkg/front_end/testcases/extensions/generic_function_in_generic_extension.dart.strong.expect b/pkg/front_end/testcases/extensions/generic_function_in_generic_extension.dart.strong.expect
index 5de03f0..9191e60 100644
--- a/pkg/front_end/testcases/extensions/generic_function_in_generic_extension.dart.strong.expect
+++ b/pkg/front_end/testcases/extensions/generic_function_in_generic_extension.dart.strong.expect
@@ -6,6 +6,16 @@
   synthetic constructor •() → self::Class<self::Class::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 extension Extension<T extends core::Object* = dynamic> on self::Class<T*>* {
   method method = self::Extension|method;
diff --git a/pkg/front_end/testcases/extensions/generic_function_in_generic_extension.dart.strong.transformed.expect b/pkg/front_end/testcases/extensions/generic_function_in_generic_extension.dart.strong.transformed.expect
index 5de03f0..9191e60 100644
--- a/pkg/front_end/testcases/extensions/generic_function_in_generic_extension.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/extensions/generic_function_in_generic_extension.dart.strong.transformed.expect
@@ -6,6 +6,16 @@
   synthetic constructor •() → self::Class<self::Class::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 extension Extension<T extends core::Object* = dynamic> on self::Class<T*>* {
   method method = self::Extension|method;
diff --git a/pkg/front_end/testcases/extensions/getter_setter_conflict.dart.outline.expect b/pkg/front_end/testcases/extensions/getter_setter_conflict.dart.outline.expect
index ed922f8..de280bb 100644
--- a/pkg/front_end/testcases/extensions/getter_setter_conflict.dart.outline.expect
+++ b/pkg/front_end/testcases/extensions/getter_setter_conflict.dart.outline.expect
@@ -9,6 +9,16 @@
     ;
   set m2(core::int* x) → void
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 extension Extension0 on self::Class* {
   get m2 = self::Extension0|get#m2;
diff --git a/pkg/front_end/testcases/extensions/getter_setter_conflict.dart.strong.expect b/pkg/front_end/testcases/extensions/getter_setter_conflict.dart.strong.expect
index f5de7af..8bba03b 100644
--- a/pkg/front_end/testcases/extensions/getter_setter_conflict.dart.strong.expect
+++ b/pkg/front_end/testcases/extensions/getter_setter_conflict.dart.strong.expect
@@ -72,6 +72,16 @@
   get m1() → core::int*
     return 0;
   set m2(core::int* x) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 extension Extension0 on self::Class* {
   get m2 = self::Extension0|get#m2;
diff --git a/pkg/front_end/testcases/extensions/getter_setter_conflict.dart.strong.transformed.expect b/pkg/front_end/testcases/extensions/getter_setter_conflict.dart.strong.transformed.expect
index f5de7af..8bba03b 100644
--- a/pkg/front_end/testcases/extensions/getter_setter_conflict.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/extensions/getter_setter_conflict.dart.strong.transformed.expect
@@ -72,6 +72,16 @@
   get m1() → core::int*
     return 0;
   set m2(core::int* x) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 extension Extension0 on self::Class* {
   get m2 = self::Extension0|get#m2;
diff --git a/pkg/front_end/testcases/extensions/if_null.dart.outline.expect b/pkg/front_end/testcases/extensions/if_null.dart.outline.expect
index 17223f2..20fed04 100644
--- a/pkg/front_end/testcases/extensions/if_null.dart.outline.expect
+++ b/pkg/front_end/testcases/extensions/if_null.dart.outline.expect
@@ -6,6 +6,16 @@
   field core::int* field;
   synthetic constructor •() → self::Class*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 extension Extension on self::Class* {
   get property = self::Extension|get#property;
diff --git a/pkg/front_end/testcases/extensions/if_null.dart.strong.expect b/pkg/front_end/testcases/extensions/if_null.dart.strong.expect
index 76f0f9b..61adac4 100644
--- a/pkg/front_end/testcases/extensions/if_null.dart.strong.expect
+++ b/pkg/front_end/testcases/extensions/if_null.dart.strong.expect
@@ -7,6 +7,16 @@
   synthetic constructor •() → self::Class*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 extension Extension on self::Class* {
   get property = self::Extension|get#property;
@@ -25,14 +35,14 @@
   return () → core::int* => self::Extension|method(#this);
 static method main() → dynamic {
   self::Class* c;
-  let final core::int* #t1 = let final self::Class* #t2 = c in #t2.{core::Object::==}(null) ?{core::int*} null : self::Extension|get#property(#t2) in #t1.{core::num::==}(null) ?{core::int*} 0 : #t1;
-  let final core::int* #t3 = let final self::Class* #t4 = c in #t4.{core::Object::==}(null) ?{core::int*} null : self::Extension|get#property(#t4) in #t3.{core::num::==}(null) ?{core::int*} 0 : #t3;
-  let final self::Class* #t5 = c in #t5.{core::Object::==}(null) ?{core::int*} null : self::Extension|set#property(#t5, let final core::int* #t6 = 42 in #t6.{core::num::==}(null) ?{core::int*} 0 : #t6);
-  let final self::Class* #t7 = c in #t7.{core::Object::==}(null) ?{core::int*} null : self::Extension|set#property(#t7, let final core::int* #t8 = 42 in #t8.{core::num::==}(null) ?{core::int*} 0 : #t8);
-  let final core::int* #t9 = let final self::Class* #t10 = c in #t10.{core::Object::==}(null) ?{core::int*} null : let final core::int* #t11 = 42 in let final void #t12 = self::Extension|set#property(#t10, #t11) in #t11 in #t9.{core::num::==}(null) ?{core::int*} 0 : #t9;
-  let final core::int* #t13 = let final self::Class* #t14 = c in #t14.{core::Object::==}(null) ?{core::int*} null : let final core::int* #t15 = 42 in let final void #t16 = self::Extension|set#property(#t14, #t15) in #t15 in #t13.{core::num::==}(null) ?{core::int*} 0 : #t13;
-  let final core::int* #t17 = let final self::Class* #t18 = c in #t18.{core::Object::==}(null) ?{core::int*} null : self::Extension|method(#t18) in #t17.{core::num::==}(null) ?{core::int*} 0 : #t17;
-  let final core::int* #t19 = let final self::Class* #t20 = c in #t20.{core::Object::==}(null) ?{core::int*} null : self::Extension|method(#t20) in #t19.{core::num::==}(null) ?{core::int*} 0 : #t19;
+  let final core::int* #t1 = let final self::Class* #t2 = c in #t2.{self::Class::==}(null) ?{core::int*} null : self::Extension|get#property(#t2) in #t1.{core::num::==}(null) ?{core::int*} 0 : #t1;
+  let final core::int* #t3 = let final self::Class* #t4 = c in #t4.{self::Class::==}(null) ?{core::int*} null : self::Extension|get#property(#t4) in #t3.{core::num::==}(null) ?{core::int*} 0 : #t3;
+  let final self::Class* #t5 = c in #t5.{self::Class::==}(null) ?{core::int*} null : self::Extension|set#property(#t5, let final core::int* #t6 = 42 in #t6.{core::num::==}(null) ?{core::int*} 0 : #t6);
+  let final self::Class* #t7 = c in #t7.{self::Class::==}(null) ?{core::int*} null : self::Extension|set#property(#t7, let final core::int* #t8 = 42 in #t8.{core::num::==}(null) ?{core::int*} 0 : #t8);
+  let final core::int* #t9 = let final self::Class* #t10 = c in #t10.{self::Class::==}(null) ?{core::int*} null : let final core::int* #t11 = 42 in let final void #t12 = self::Extension|set#property(#t10, #t11) in #t11 in #t9.{core::num::==}(null) ?{core::int*} 0 : #t9;
+  let final core::int* #t13 = let final self::Class* #t14 = c in #t14.{self::Class::==}(null) ?{core::int*} null : let final core::int* #t15 = 42 in let final void #t16 = self::Extension|set#property(#t14, #t15) in #t15 in #t13.{core::num::==}(null) ?{core::int*} 0 : #t13;
+  let final core::int* #t17 = let final self::Class* #t18 = c in #t18.{self::Class::==}(null) ?{core::int*} null : self::Extension|method(#t18) in #t17.{core::num::==}(null) ?{core::int*} 0 : #t17;
+  let final core::int* #t19 = let final self::Class* #t20 = c in #t20.{self::Class::==}(null) ?{core::int*} null : self::Extension|method(#t20) in #t19.{core::num::==}(null) ?{core::int*} 0 : #t19;
   c = new self::Class::•();
   let final core::int* #t21 = self::Extension|get#property(c) in #t21.{core::num::==}(null) ?{core::int*} 0 : #t21;
   let final core::int* #t22 = self::Extension|get#property(c) in #t22.{core::num::==}(null) ?{core::int*} 0 : #t22;
diff --git a/pkg/front_end/testcases/extensions/if_null.dart.strong.transformed.expect b/pkg/front_end/testcases/extensions/if_null.dart.strong.transformed.expect
index 76f0f9b..61adac4 100644
--- a/pkg/front_end/testcases/extensions/if_null.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/extensions/if_null.dart.strong.transformed.expect
@@ -7,6 +7,16 @@
   synthetic constructor •() → self::Class*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 extension Extension on self::Class* {
   get property = self::Extension|get#property;
@@ -25,14 +35,14 @@
   return () → core::int* => self::Extension|method(#this);
 static method main() → dynamic {
   self::Class* c;
-  let final core::int* #t1 = let final self::Class* #t2 = c in #t2.{core::Object::==}(null) ?{core::int*} null : self::Extension|get#property(#t2) in #t1.{core::num::==}(null) ?{core::int*} 0 : #t1;
-  let final core::int* #t3 = let final self::Class* #t4 = c in #t4.{core::Object::==}(null) ?{core::int*} null : self::Extension|get#property(#t4) in #t3.{core::num::==}(null) ?{core::int*} 0 : #t3;
-  let final self::Class* #t5 = c in #t5.{core::Object::==}(null) ?{core::int*} null : self::Extension|set#property(#t5, let final core::int* #t6 = 42 in #t6.{core::num::==}(null) ?{core::int*} 0 : #t6);
-  let final self::Class* #t7 = c in #t7.{core::Object::==}(null) ?{core::int*} null : self::Extension|set#property(#t7, let final core::int* #t8 = 42 in #t8.{core::num::==}(null) ?{core::int*} 0 : #t8);
-  let final core::int* #t9 = let final self::Class* #t10 = c in #t10.{core::Object::==}(null) ?{core::int*} null : let final core::int* #t11 = 42 in let final void #t12 = self::Extension|set#property(#t10, #t11) in #t11 in #t9.{core::num::==}(null) ?{core::int*} 0 : #t9;
-  let final core::int* #t13 = let final self::Class* #t14 = c in #t14.{core::Object::==}(null) ?{core::int*} null : let final core::int* #t15 = 42 in let final void #t16 = self::Extension|set#property(#t14, #t15) in #t15 in #t13.{core::num::==}(null) ?{core::int*} 0 : #t13;
-  let final core::int* #t17 = let final self::Class* #t18 = c in #t18.{core::Object::==}(null) ?{core::int*} null : self::Extension|method(#t18) in #t17.{core::num::==}(null) ?{core::int*} 0 : #t17;
-  let final core::int* #t19 = let final self::Class* #t20 = c in #t20.{core::Object::==}(null) ?{core::int*} null : self::Extension|method(#t20) in #t19.{core::num::==}(null) ?{core::int*} 0 : #t19;
+  let final core::int* #t1 = let final self::Class* #t2 = c in #t2.{self::Class::==}(null) ?{core::int*} null : self::Extension|get#property(#t2) in #t1.{core::num::==}(null) ?{core::int*} 0 : #t1;
+  let final core::int* #t3 = let final self::Class* #t4 = c in #t4.{self::Class::==}(null) ?{core::int*} null : self::Extension|get#property(#t4) in #t3.{core::num::==}(null) ?{core::int*} 0 : #t3;
+  let final self::Class* #t5 = c in #t5.{self::Class::==}(null) ?{core::int*} null : self::Extension|set#property(#t5, let final core::int* #t6 = 42 in #t6.{core::num::==}(null) ?{core::int*} 0 : #t6);
+  let final self::Class* #t7 = c in #t7.{self::Class::==}(null) ?{core::int*} null : self::Extension|set#property(#t7, let final core::int* #t8 = 42 in #t8.{core::num::==}(null) ?{core::int*} 0 : #t8);
+  let final core::int* #t9 = let final self::Class* #t10 = c in #t10.{self::Class::==}(null) ?{core::int*} null : let final core::int* #t11 = 42 in let final void #t12 = self::Extension|set#property(#t10, #t11) in #t11 in #t9.{core::num::==}(null) ?{core::int*} 0 : #t9;
+  let final core::int* #t13 = let final self::Class* #t14 = c in #t14.{self::Class::==}(null) ?{core::int*} null : let final core::int* #t15 = 42 in let final void #t16 = self::Extension|set#property(#t14, #t15) in #t15 in #t13.{core::num::==}(null) ?{core::int*} 0 : #t13;
+  let final core::int* #t17 = let final self::Class* #t18 = c in #t18.{self::Class::==}(null) ?{core::int*} null : self::Extension|method(#t18) in #t17.{core::num::==}(null) ?{core::int*} 0 : #t17;
+  let final core::int* #t19 = let final self::Class* #t20 = c in #t20.{self::Class::==}(null) ?{core::int*} null : self::Extension|method(#t20) in #t19.{core::num::==}(null) ?{core::int*} 0 : #t19;
   c = new self::Class::•();
   let final core::int* #t21 = self::Extension|get#property(c) in #t21.{core::num::==}(null) ?{core::int*} 0 : #t21;
   let final core::int* #t22 = self::Extension|get#property(c) in #t22.{core::num::==}(null) ?{core::int*} 0 : #t22;
diff --git a/pkg/front_end/testcases/extensions/implicit_extension_inference.dart.outline.expect b/pkg/front_end/testcases/extensions/implicit_extension_inference.dart.outline.expect
index b09bea2..81bab87 100644
--- a/pkg/front_end/testcases/extensions/implicit_extension_inference.dart.outline.expect
+++ b/pkg/front_end/testcases/extensions/implicit_extension_inference.dart.outline.expect
@@ -5,6 +5,16 @@
 class A extends core::Object {
   synthetic constructor •() → self::A*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A {
   synthetic constructor •() → self::B*
@@ -17,6 +27,16 @@
 class GenericClass<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::GenericClass<self::GenericClass::T*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 extension GenericExtension<T extends core::Object* = dynamic> on self::GenericClass<T*>* {
   get property = self::GenericExtension|get#property;
diff --git a/pkg/front_end/testcases/extensions/implicit_extension_inference.dart.strong.expect b/pkg/front_end/testcases/extensions/implicit_extension_inference.dart.strong.expect
index 1bf8085..525798d 100644
--- a/pkg/front_end/testcases/extensions/implicit_extension_inference.dart.strong.expect
+++ b/pkg/front_end/testcases/extensions/implicit_extension_inference.dart.strong.expect
@@ -6,6 +6,16 @@
   synthetic constructor •() → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A {
   synthetic constructor •() → self::B*
@@ -21,6 +31,16 @@
   synthetic constructor •() → self::GenericClass<self::GenericClass::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 extension GenericExtension<T extends core::Object* = dynamic> on self::GenericClass<T*>* {
   get property = self::GenericExtension|get#property;
diff --git a/pkg/front_end/testcases/extensions/implicit_extension_inference.dart.strong.transformed.expect b/pkg/front_end/testcases/extensions/implicit_extension_inference.dart.strong.transformed.expect
index 1bf8085..525798d 100644
--- a/pkg/front_end/testcases/extensions/implicit_extension_inference.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/extensions/implicit_extension_inference.dart.strong.transformed.expect
@@ -6,6 +6,16 @@
   synthetic constructor •() → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A {
   synthetic constructor •() → self::B*
@@ -21,6 +31,16 @@
   synthetic constructor •() → self::GenericClass<self::GenericClass::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 extension GenericExtension<T extends core::Object* = dynamic> on self::GenericClass<T*>* {
   get property = self::GenericExtension|get#property;
diff --git a/pkg/front_end/testcases/extensions/implicit_this.dart.outline.expect b/pkg/front_end/testcases/extensions/implicit_this.dart.outline.expect
index ccf3c26..8f3339f 100644
--- a/pkg/front_end/testcases/extensions/implicit_this.dart.outline.expect
+++ b/pkg/front_end/testcases/extensions/implicit_this.dart.outline.expect
@@ -8,6 +8,16 @@
     ;
   method method1() → void
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 extension A2 on self::A1* {
   method method2 = self::A2|method2;
diff --git a/pkg/front_end/testcases/extensions/implicit_this.dart.strong.expect b/pkg/front_end/testcases/extensions/implicit_this.dart.strong.expect
index b1249bd..73653fe 100644
--- a/pkg/front_end/testcases/extensions/implicit_this.dart.strong.expect
+++ b/pkg/front_end/testcases/extensions/implicit_this.dart.strong.expect
@@ -8,6 +8,16 @@
     : super core::Object::•()
     ;
   method method1() → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 extension A2 on self::A1* {
   method method2 = self::A2|method2;
diff --git a/pkg/front_end/testcases/extensions/implicit_this.dart.strong.transformed.expect b/pkg/front_end/testcases/extensions/implicit_this.dart.strong.transformed.expect
index b1249bd..73653fe 100644
--- a/pkg/front_end/testcases/extensions/implicit_this.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/extensions/implicit_this.dart.strong.transformed.expect
@@ -8,6 +8,16 @@
     : super core::Object::•()
     ;
   method method1() → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 extension A2 on self::A1* {
   method method2 = self::A2|method2;
diff --git a/pkg/front_end/testcases/extensions/index.dart.outline.expect b/pkg/front_end/testcases/extensions/index.dart.outline.expect
index f94d2d2..726f676 100644
--- a/pkg/front_end/testcases/extensions/index.dart.outline.expect
+++ b/pkg/front_end/testcases/extensions/index.dart.outline.expect
@@ -10,6 +10,16 @@
     ;
   method put(generic-covariant-impl self::MapLike::K* key, generic-covariant-impl self::MapLike::V* value) → self::MapLike::V*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 extension Extension<K extends core::Object* = dynamic, V extends core::Object* = dynamic> on self::MapLike<K*, V*>* {
   operator [] = self::Extension|[];
diff --git a/pkg/front_end/testcases/extensions/index.dart.strong.expect b/pkg/front_end/testcases/extensions/index.dart.strong.expect
index 52fbaa5..9509280 100644
--- a/pkg/front_end/testcases/extensions/index.dart.strong.expect
+++ b/pkg/front_end/testcases/extensions/index.dart.strong.expect
@@ -11,6 +11,16 @@
     return this.{self::MapLike::_map}.{core::Map::[]}(key);
   method put(generic-covariant-impl self::MapLike::K* key, generic-covariant-impl self::MapLike::V* value) → self::MapLike::V*
     return let final core::Map<self::MapLike::K*, self::MapLike::V*>* #t1 = this.{self::MapLike::_map} in let final self::MapLike::K* #t2 = key in let final self::MapLike::V* #t3 = value in let final void #t4 = #t1.{core::Map::[]=}(#t2, #t3) in #t3;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 extension Extension<K extends core::Object* = dynamic, V extends core::Object* = dynamic> on self::MapLike<K*, V*>* {
   operator [] = self::Extension|[];
diff --git a/pkg/front_end/testcases/extensions/index.dart.strong.transformed.expect b/pkg/front_end/testcases/extensions/index.dart.strong.transformed.expect
index 52fbaa5..9509280 100644
--- a/pkg/front_end/testcases/extensions/index.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/extensions/index.dart.strong.transformed.expect
@@ -11,6 +11,16 @@
     return this.{self::MapLike::_map}.{core::Map::[]}(key);
   method put(generic-covariant-impl self::MapLike::K* key, generic-covariant-impl self::MapLike::V* value) → self::MapLike::V*
     return let final core::Map<self::MapLike::K*, self::MapLike::V*>* #t1 = this.{self::MapLike::_map} in let final self::MapLike::K* #t2 = key in let final self::MapLike::V* #t3 = value in let final void #t4 = #t1.{core::Map::[]=}(#t2, #t3) in #t3;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 extension Extension<K extends core::Object* = dynamic, V extends core::Object* = dynamic> on self::MapLike<K*, V*>* {
   operator [] = self::Extension|[];
diff --git a/pkg/front_end/testcases/extensions/instance_access.dart.outline.expect b/pkg/front_end/testcases/extensions/instance_access.dart.outline.expect
index c0d9552..16fa742 100644
--- a/pkg/front_end/testcases/extensions/instance_access.dart.outline.expect
+++ b/pkg/front_end/testcases/extensions/instance_access.dart.outline.expect
@@ -8,6 +8,15 @@
     ;
   method toString() → core::String*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Class2 extends core::Object {
   field core::int* field;
@@ -15,6 +24,15 @@
     ;
   method toString() → core::String*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 extension Extension1 on self::Class1* {
   method method = self::Extension1|method;
diff --git a/pkg/front_end/testcases/extensions/instance_access.dart.strong.expect b/pkg/front_end/testcases/extensions/instance_access.dart.strong.expect
index afdb95d..999ffa3 100644
--- a/pkg/front_end/testcases/extensions/instance_access.dart.strong.expect
+++ b/pkg/front_end/testcases/extensions/instance_access.dart.strong.expect
@@ -9,6 +9,15 @@
     ;
   method toString() → core::String*
     return "Class1(${this.{self::Class1::field}})";
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Class2 extends core::Object {
   field core::int* field;
@@ -17,6 +26,15 @@
     ;
   method toString() → core::String*
     return "Class2(${this.{self::Class2::field}})";
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 extension Extension1 on self::Class1* {
   method method = self::Extension1|method;
@@ -85,13 +103,13 @@
   self::Class1* c1 = new self::Class1::•(1);
   self::expect(0, self::Extension1|method(c0));
   self::expect(1, self::Extension1|method(c1));
-  self::expect(1, let final self::Class1* #t1 = c1 in #t1.{core::Object::==}(null) ?{core::int*} null : self::Extension1|method(#t1));
+  self::expect(1, let final self::Class1* #t1 = c1 in #t1.{self::Class1::==}(null) ?{core::int*} null : self::Extension1|method(#t1));
   self::expect(42, self::Extension1|genericMethod<core::int*>(c0, 42));
   self::expect(43, self::Extension1|genericMethod<core::num*>(c0, 43));
   self::expect(88, self::Extension1|genericMethod<core::int*>(c1, 87));
   self::expect(89, self::Extension1|genericMethod<core::num*>(c1, 88));
   self::expect(0, self::Extension1|get#property(c0));
-  self::expect(0, let final self::Class1* #t2 = c0 in #t2.{core::Object::==}(null) ?{core::int*} null : self::Extension1|get#property(#t2));
+  self::expect(0, let final self::Class1* #t2 = c0 in #t2.{self::Class1::==}(null) ?{core::int*} null : self::Extension1|get#property(#t2));
   self::expect(42, let final core::int* #t3 = 42 in let final void #t4 = self::Extension1|set#property(c0, #t3) in #t3);
   self::expect(1, self::Extension1|get#property(c1));
   self::expect(87, let final core::int* #t5 = 87 in let final void #t6 = self::Extension1|set#property(c0, #t5) in #t5);
@@ -104,14 +122,14 @@
   self::Class2* c0 = new self::Class2::•(0);
   self::Class2* c1 = new self::Class2::•(1);
   self::expect(3, self::Extension2|method(c0));
-  self::expect(3, let final self::Class2* #t27 = c0 in #t27.{core::Object::==}(null) ?{core::int*} null : self::Extension2|method(#t27));
+  self::expect(3, let final self::Class2* #t27 = c0 in #t27.{self::Class2::==}(null) ?{core::int*} null : self::Extension2|method(#t27));
   self::expect(4, self::Extension2|method(c1));
   self::expect(46, self::Extension2|genericMethod<core::int*>(c0, 42));
   self::expect(47, self::Extension2|genericMethod<core::num*>(c0, 43));
   self::expect(92, self::Extension2|genericMethod<core::int*>(c1, 87));
   self::expect(93, self::Extension2|genericMethod<core::num*>(c1, 88));
   self::expect(5, self::Extension2|get#property(c0));
-  self::expect(5, let final self::Class2* #t28 = c0 in #t28.{core::Object::==}(null) ?{core::int*} null : self::Extension2|get#property(#t28));
+  self::expect(5, let final self::Class2* #t28 = c0 in #t28.{self::Class2::==}(null) ?{core::int*} null : self::Extension2|get#property(#t28));
   self::expect(42, let final core::int* #t29 = 42 in let final void #t30 = self::Extension2|set#property(c0, #t29) in #t29);
   self::expect(48, self::Extension2|get#property(c0));
   self::expect(6, self::Extension2|get#property(c1));
diff --git a/pkg/front_end/testcases/extensions/instance_access.dart.strong.transformed.expect b/pkg/front_end/testcases/extensions/instance_access.dart.strong.transformed.expect
index afdb95d..999ffa3 100644
--- a/pkg/front_end/testcases/extensions/instance_access.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/extensions/instance_access.dart.strong.transformed.expect
@@ -9,6 +9,15 @@
     ;
   method toString() → core::String*
     return "Class1(${this.{self::Class1::field}})";
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Class2 extends core::Object {
   field core::int* field;
@@ -17,6 +26,15 @@
     ;
   method toString() → core::String*
     return "Class2(${this.{self::Class2::field}})";
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 extension Extension1 on self::Class1* {
   method method = self::Extension1|method;
@@ -85,13 +103,13 @@
   self::Class1* c1 = new self::Class1::•(1);
   self::expect(0, self::Extension1|method(c0));
   self::expect(1, self::Extension1|method(c1));
-  self::expect(1, let final self::Class1* #t1 = c1 in #t1.{core::Object::==}(null) ?{core::int*} null : self::Extension1|method(#t1));
+  self::expect(1, let final self::Class1* #t1 = c1 in #t1.{self::Class1::==}(null) ?{core::int*} null : self::Extension1|method(#t1));
   self::expect(42, self::Extension1|genericMethod<core::int*>(c0, 42));
   self::expect(43, self::Extension1|genericMethod<core::num*>(c0, 43));
   self::expect(88, self::Extension1|genericMethod<core::int*>(c1, 87));
   self::expect(89, self::Extension1|genericMethod<core::num*>(c1, 88));
   self::expect(0, self::Extension1|get#property(c0));
-  self::expect(0, let final self::Class1* #t2 = c0 in #t2.{core::Object::==}(null) ?{core::int*} null : self::Extension1|get#property(#t2));
+  self::expect(0, let final self::Class1* #t2 = c0 in #t2.{self::Class1::==}(null) ?{core::int*} null : self::Extension1|get#property(#t2));
   self::expect(42, let final core::int* #t3 = 42 in let final void #t4 = self::Extension1|set#property(c0, #t3) in #t3);
   self::expect(1, self::Extension1|get#property(c1));
   self::expect(87, let final core::int* #t5 = 87 in let final void #t6 = self::Extension1|set#property(c0, #t5) in #t5);
@@ -104,14 +122,14 @@
   self::Class2* c0 = new self::Class2::•(0);
   self::Class2* c1 = new self::Class2::•(1);
   self::expect(3, self::Extension2|method(c0));
-  self::expect(3, let final self::Class2* #t27 = c0 in #t27.{core::Object::==}(null) ?{core::int*} null : self::Extension2|method(#t27));
+  self::expect(3, let final self::Class2* #t27 = c0 in #t27.{self::Class2::==}(null) ?{core::int*} null : self::Extension2|method(#t27));
   self::expect(4, self::Extension2|method(c1));
   self::expect(46, self::Extension2|genericMethod<core::int*>(c0, 42));
   self::expect(47, self::Extension2|genericMethod<core::num*>(c0, 43));
   self::expect(92, self::Extension2|genericMethod<core::int*>(c1, 87));
   self::expect(93, self::Extension2|genericMethod<core::num*>(c1, 88));
   self::expect(5, self::Extension2|get#property(c0));
-  self::expect(5, let final self::Class2* #t28 = c0 in #t28.{core::Object::==}(null) ?{core::int*} null : self::Extension2|get#property(#t28));
+  self::expect(5, let final self::Class2* #t28 = c0 in #t28.{self::Class2::==}(null) ?{core::int*} null : self::Extension2|get#property(#t28));
   self::expect(42, let final core::int* #t29 = 42 in let final void #t30 = self::Extension2|set#property(c0, #t29) in #t29);
   self::expect(48, self::Extension2|get#property(c0));
   self::expect(6, self::Extension2|get#property(c1));
diff --git a/pkg/front_end/testcases/extensions/instance_access_of_static.dart.outline.expect b/pkg/front_end/testcases/extensions/instance_access_of_static.dart.outline.expect
index 731aa09..e126191 100644
--- a/pkg/front_end/testcases/extensions/instance_access_of_static.dart.outline.expect
+++ b/pkg/front_end/testcases/extensions/instance_access_of_static.dart.outline.expect
@@ -5,6 +5,16 @@
 class Class1 extends core::Object {
   synthetic constructor •() → self::Class1*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 extension Extension1 on self::Class1* {
   static method staticMethod = self::Extension1|staticMethod;
diff --git a/pkg/front_end/testcases/extensions/instance_access_of_static.dart.strong.expect b/pkg/front_end/testcases/extensions/instance_access_of_static.dart.strong.expect
index 75191b4..f11e443 100644
--- a/pkg/front_end/testcases/extensions/instance_access_of_static.dart.strong.expect
+++ b/pkg/front_end/testcases/extensions/instance_access_of_static.dart.strong.expect
@@ -45,6 +45,16 @@
   synthetic constructor •() → self::Class1*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 extension Extension1 on self::Class1* {
   static method staticMethod = self::Extension1|staticMethod;
diff --git a/pkg/front_end/testcases/extensions/instance_access_of_static.dart.strong.transformed.expect b/pkg/front_end/testcases/extensions/instance_access_of_static.dart.strong.transformed.expect
index 75191b4..f11e443 100644
--- a/pkg/front_end/testcases/extensions/instance_access_of_static.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/extensions/instance_access_of_static.dart.strong.transformed.expect
@@ -45,6 +45,16 @@
   synthetic constructor •() → self::Class1*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 extension Extension1 on self::Class1* {
   static method staticMethod = self::Extension1|staticMethod;
diff --git a/pkg/front_end/testcases/extensions/instance_members.dart.outline.expect b/pkg/front_end/testcases/extensions/instance_members.dart.outline.expect
index 09050c7..b4c223e 100644
--- a/pkg/front_end/testcases/extensions/instance_members.dart.outline.expect
+++ b/pkg/front_end/testcases/extensions/instance_members.dart.outline.expect
@@ -5,10 +5,30 @@
 class A1 extends core::Object {
   synthetic constructor •() → self::A1*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B1<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::B1<self::B1::T*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 extension A2 on self::A1* {
   method method1 = self::A2|method1;
diff --git a/pkg/front_end/testcases/extensions/instance_members.dart.strong.expect b/pkg/front_end/testcases/extensions/instance_members.dart.strong.expect
index 5b79a6b..76d165b 100644
--- a/pkg/front_end/testcases/extensions/instance_members.dart.strong.expect
+++ b/pkg/front_end/testcases/extensions/instance_members.dart.strong.expect
@@ -6,11 +6,31 @@
   synthetic constructor •() → self::A1*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B1<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::B1<self::B1::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 extension A2 on self::A1* {
   method method1 = self::A2|method1;
diff --git a/pkg/front_end/testcases/extensions/instance_members.dart.strong.transformed.expect b/pkg/front_end/testcases/extensions/instance_members.dart.strong.transformed.expect
index 5b79a6b..76d165b 100644
--- a/pkg/front_end/testcases/extensions/instance_members.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/extensions/instance_members.dart.strong.transformed.expect
@@ -6,11 +6,31 @@
   synthetic constructor •() → self::A1*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B1<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::B1<self::B1::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 extension A2 on self::A1* {
   method method1 = self::A2|method1;
diff --git a/pkg/front_end/testcases/extensions/instance_tearoff.dart.outline.expect b/pkg/front_end/testcases/extensions/instance_tearoff.dart.outline.expect
index d50804e..f11c3bd 100644
--- a/pkg/front_end/testcases/extensions/instance_tearoff.dart.outline.expect
+++ b/pkg/front_end/testcases/extensions/instance_tearoff.dart.outline.expect
@@ -8,6 +8,15 @@
     ;
   method toString() → core::String*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Class2 extends core::Object {
   field core::int* field;
@@ -15,6 +24,15 @@
     ;
   method toString() → core::String*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 extension Extension1 on self::Class1* {
   method method = self::Extension1|method;
diff --git a/pkg/front_end/testcases/extensions/instance_tearoff.dart.strong.expect b/pkg/front_end/testcases/extensions/instance_tearoff.dart.strong.expect
index 4ba1b5e..4529443 100644
--- a/pkg/front_end/testcases/extensions/instance_tearoff.dart.strong.expect
+++ b/pkg/front_end/testcases/extensions/instance_tearoff.dart.strong.expect
@@ -9,6 +9,15 @@
     ;
   method toString() → core::String*
     return "Class1(${this.{self::Class1::field}})";
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Class2 extends core::Object {
   field core::int* field;
@@ -17,6 +26,15 @@
     ;
   method toString() → core::String*
     return "Class2(${this.{self::Class2::field}})";
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 extension Extension1 on self::Class1* {
   method method = self::Extension1|method;
diff --git a/pkg/front_end/testcases/extensions/instance_tearoff.dart.strong.transformed.expect b/pkg/front_end/testcases/extensions/instance_tearoff.dart.strong.transformed.expect
index 4ba1b5e..4529443 100644
--- a/pkg/front_end/testcases/extensions/instance_tearoff.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/extensions/instance_tearoff.dart.strong.transformed.expect
@@ -9,6 +9,15 @@
     ;
   method toString() → core::String*
     return "Class1(${this.{self::Class1::field}})";
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Class2 extends core::Object {
   field core::int* field;
@@ -17,6 +26,15 @@
     ;
   method toString() → core::String*
     return "Class2(${this.{self::Class2::field}})";
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 extension Extension1 on self::Class1* {
   method method = self::Extension1|method;
diff --git a/pkg/front_end/testcases/extensions/internal_resolution.dart.outline.expect b/pkg/front_end/testcases/extensions/internal_resolution.dart.outline.expect
index 5c9540a..d502f74 100644
--- a/pkg/front_end/testcases/extensions/internal_resolution.dart.outline.expect
+++ b/pkg/front_end/testcases/extensions/internal_resolution.dart.outline.expect
@@ -6,6 +6,16 @@
   field core::int* field;
   synthetic constructor •() → self::Class*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 extension _extension#0 on self::Class* {
   get property1 = self::_extension#0|get#property1;
diff --git a/pkg/front_end/testcases/extensions/internal_resolution.dart.strong.expect b/pkg/front_end/testcases/extensions/internal_resolution.dart.strong.expect
index 46d8f5f..30f7031 100644
--- a/pkg/front_end/testcases/extensions/internal_resolution.dart.strong.expect
+++ b/pkg/front_end/testcases/extensions/internal_resolution.dart.strong.expect
@@ -7,6 +7,16 @@
   synthetic constructor •() → self::Class*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 extension _extension#0 on self::Class* {
   get property1 = self::_extension#0|get#property1;
diff --git a/pkg/front_end/testcases/extensions/internal_resolution.dart.strong.transformed.expect b/pkg/front_end/testcases/extensions/internal_resolution.dart.strong.transformed.expect
index 46d8f5f..30f7031 100644
--- a/pkg/front_end/testcases/extensions/internal_resolution.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/extensions/internal_resolution.dart.strong.transformed.expect
@@ -7,6 +7,16 @@
   synthetic constructor •() → self::Class*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 extension _extension#0 on self::Class* {
   get property1 = self::_extension#0|get#property1;
diff --git a/pkg/front_end/testcases/extensions/invalid_explicit_access.dart.outline.expect b/pkg/front_end/testcases/extensions/invalid_explicit_access.dart.outline.expect
index ff612da..3231d02 100644
--- a/pkg/front_end/testcases/extensions/invalid_explicit_access.dart.outline.expect
+++ b/pkg/front_end/testcases/extensions/invalid_explicit_access.dart.outline.expect
@@ -5,10 +5,30 @@
 class Class extends core::Object {
   synthetic constructor •() → self::Class*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class GenericClass<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::GenericClass<self::GenericClass::T*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 extension Extension on self::Class* {
   method method = self::Extension|method;
diff --git a/pkg/front_end/testcases/extensions/invalid_explicit_access.dart.strong.expect b/pkg/front_end/testcases/extensions/invalid_explicit_access.dart.strong.expect
index ab40325..cece349 100644
--- a/pkg/front_end/testcases/extensions/invalid_explicit_access.dart.strong.expect
+++ b/pkg/front_end/testcases/extensions/invalid_explicit_access.dart.strong.expect
@@ -128,11 +128,31 @@
   synthetic constructor •() → self::Class*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class GenericClass<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::GenericClass<self::GenericClass::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 extension Extension on self::Class* {
   method method = self::Extension|method;
diff --git a/pkg/front_end/testcases/extensions/invalid_explicit_access.dart.strong.transformed.expect b/pkg/front_end/testcases/extensions/invalid_explicit_access.dart.strong.transformed.expect
index ab40325..cece349 100644
--- a/pkg/front_end/testcases/extensions/invalid_explicit_access.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/extensions/invalid_explicit_access.dart.strong.transformed.expect
@@ -128,11 +128,31 @@
   synthetic constructor •() → self::Class*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class GenericClass<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::GenericClass<self::GenericClass::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 extension Extension on self::Class* {
   method method = self::Extension|method;
diff --git a/pkg/front_end/testcases/extensions/issue38600.dart.outline.expect b/pkg/front_end/testcases/extensions/issue38600.dart.outline.expect
index f633a2a..690e2f7 100644
--- a/pkg/front_end/testcases/extensions/issue38600.dart.outline.expect
+++ b/pkg/front_end/testcases/extensions/issue38600.dart.outline.expect
@@ -50,6 +50,16 @@
 class Class<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::Class<self::Class::T*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 extension _extension#0 on invalid-type {
 }
diff --git a/pkg/front_end/testcases/extensions/issue38600.dart.strong.expect b/pkg/front_end/testcases/extensions/issue38600.dart.strong.expect
index 8101879..246925e 100644
--- a/pkg/front_end/testcases/extensions/issue38600.dart.strong.expect
+++ b/pkg/front_end/testcases/extensions/issue38600.dart.strong.expect
@@ -51,6 +51,16 @@
   synthetic constructor •() → self::Class<self::Class::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 extension _extension#0 on invalid-type {
 }
diff --git a/pkg/front_end/testcases/extensions/issue38600.dart.strong.transformed.expect b/pkg/front_end/testcases/extensions/issue38600.dart.strong.transformed.expect
index 8101879..246925e 100644
--- a/pkg/front_end/testcases/extensions/issue38600.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/extensions/issue38600.dart.strong.transformed.expect
@@ -51,6 +51,16 @@
   synthetic constructor •() → self::Class<self::Class::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 extension _extension#0 on invalid-type {
 }
diff --git a/pkg/front_end/testcases/extensions/issue38600.dart.textual_outline.expect b/pkg/front_end/testcases/extensions/issue38600.dart.textual_outline.expect
index 166eb7d..e5a913c 100644
--- a/pkg/front_end/testcases/extensions/issue38600.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/extensions/issue38600.dart.textual_outline.expect
@@ -1,6 +1,5 @@
 class Class<T> {
 }
-extension ;
-try<T> ( ){ }
+extension try<T> ( ){ }
 on Class<T> (){ }
 main() { }
diff --git a/pkg/front_end/testcases/extensions/issue38745.dart.outline.expect b/pkg/front_end/testcases/extensions/issue38745.dart.outline.expect
index 0e1178c..897a23f 100644
--- a/pkg/front_end/testcases/extensions/issue38745.dart.outline.expect
+++ b/pkg/front_end/testcases/extensions/issue38745.dart.outline.expect
@@ -31,6 +31,16 @@
 class C<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::C<self::C::T*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 extension ext<T extends core::Object* = dynamic> on self::C<T*>* {
   field field = self::ext|field;
diff --git a/pkg/front_end/testcases/extensions/issue38745.dart.strong.expect b/pkg/front_end/testcases/extensions/issue38745.dart.strong.expect
index 289a70d..a5a9409 100644
--- a/pkg/front_end/testcases/extensions/issue38745.dart.strong.expect
+++ b/pkg/front_end/testcases/extensions/issue38745.dart.strong.expect
@@ -102,6 +102,16 @@
   synthetic constructor •() → self::C<self::C::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 extension ext<T extends core::Object* = dynamic> on self::C<T*>* {
   field field = self::ext|field;
diff --git a/pkg/front_end/testcases/extensions/issue38745.dart.strong.transformed.expect b/pkg/front_end/testcases/extensions/issue38745.dart.strong.transformed.expect
index 289a70d..a5a9409 100644
--- a/pkg/front_end/testcases/extensions/issue38745.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/extensions/issue38745.dart.strong.transformed.expect
@@ -102,6 +102,16 @@
   synthetic constructor •() → self::C<self::C::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 extension ext<T extends core::Object* = dynamic> on self::C<T*>* {
   field field = self::ext|field;
diff --git a/pkg/front_end/testcases/extensions/issue38750.dart.outline.expect b/pkg/front_end/testcases/extensions/issue38750.dart.outline.expect
index 3852560..b9511ba 100644
--- a/pkg/front_end/testcases/extensions/issue38750.dart.outline.expect
+++ b/pkg/front_end/testcases/extensions/issue38750.dart.outline.expect
@@ -24,6 +24,16 @@
     ;
   static method staticFoo() → dynamic
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 extension ext on self2::C* {
   method _bar = self2::ext|_bar;
diff --git a/pkg/front_end/testcases/extensions/issue38750.dart.strong.expect b/pkg/front_end/testcases/extensions/issue38750.dart.strong.expect
index 6b017ad..5b544f3 100644
--- a/pkg/front_end/testcases/extensions/issue38750.dart.strong.expect
+++ b/pkg/front_end/testcases/extensions/issue38750.dart.strong.expect
@@ -67,6 +67,16 @@
   }
   static method staticFoo() → dynamic
     return iss::C::_staticFoo();
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 extension ext on iss::C* {
   method _bar = iss::ext|_bar;
diff --git a/pkg/front_end/testcases/extensions/issue38750.dart.strong.transformed.expect b/pkg/front_end/testcases/extensions/issue38750.dart.strong.transformed.expect
index 6b017ad..5b544f3 100644
--- a/pkg/front_end/testcases/extensions/issue38750.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/extensions/issue38750.dart.strong.transformed.expect
@@ -67,6 +67,16 @@
   }
   static method staticFoo() → dynamic
     return iss::C::_staticFoo();
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 extension ext on iss::C* {
   method _bar = iss::ext|_bar;
diff --git a/pkg/front_end/testcases/extensions/issue38915.dart.outline.expect b/pkg/front_end/testcases/extensions/issue38915.dart.outline.expect
index 56b644e..87e426c 100644
--- a/pkg/front_end/testcases/extensions/issue38915.dart.outline.expect
+++ b/pkg/front_end/testcases/extensions/issue38915.dart.outline.expect
@@ -5,6 +5,16 @@
 class Class extends core::Object {
   synthetic constructor •() → self::Class*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 extension Extension on self::Class* {
   method method1 = self::Extension|method1;
diff --git a/pkg/front_end/testcases/extensions/issue38915.dart.strong.expect b/pkg/front_end/testcases/extensions/issue38915.dart.strong.expect
index fdc8d05..c706e92 100644
--- a/pkg/front_end/testcases/extensions/issue38915.dart.strong.expect
+++ b/pkg/front_end/testcases/extensions/issue38915.dart.strong.expect
@@ -6,6 +6,16 @@
   synthetic constructor •() → self::Class*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 extension Extension on self::Class* {
   method method1 = self::Extension|method1;
diff --git a/pkg/front_end/testcases/extensions/issue38915.dart.strong.transformed.expect b/pkg/front_end/testcases/extensions/issue38915.dart.strong.transformed.expect
index fdc8d05..c706e92 100644
--- a/pkg/front_end/testcases/extensions/issue38915.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/extensions/issue38915.dart.strong.transformed.expect
@@ -6,6 +6,16 @@
   synthetic constructor •() → self::Class*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 extension Extension on self::Class* {
   method method1 = self::Extension|method1;
diff --git a/pkg/front_end/testcases/extensions/issue39527.dart.outline.expect b/pkg/front_end/testcases/extensions/issue39527.dart.outline.expect
index a9e1f18..c84b82b 100644
--- a/pkg/front_end/testcases/extensions/issue39527.dart.outline.expect
+++ b/pkg/front_end/testcases/extensions/issue39527.dart.outline.expect
@@ -6,6 +6,16 @@
   field core::int* value;
   synthetic constructor •() → self::C*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 extension Extension1 on self::C* {
   operator [] = self::Extension1|[];
diff --git a/pkg/front_end/testcases/extensions/issue39527.dart.strong.expect b/pkg/front_end/testcases/extensions/issue39527.dart.strong.expect
index 56f3831..6e5d2e6 100644
--- a/pkg/front_end/testcases/extensions/issue39527.dart.strong.expect
+++ b/pkg/front_end/testcases/extensions/issue39527.dart.strong.expect
@@ -7,6 +7,16 @@
   synthetic constructor •() → self::C*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 extension Extension1 on self::C* {
   operator [] = self::Extension1|[];
diff --git a/pkg/front_end/testcases/extensions/issue39527.dart.strong.transformed.expect b/pkg/front_end/testcases/extensions/issue39527.dart.strong.transformed.expect
index 56f3831..6e5d2e6 100644
--- a/pkg/front_end/testcases/extensions/issue39527.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/extensions/issue39527.dart.strong.transformed.expect
@@ -7,6 +7,16 @@
   synthetic constructor •() → self::C*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 extension Extension1 on self::C* {
   operator [] = self::Extension1|[];
diff --git a/pkg/front_end/testcases/extensions/issue39889.dart.outline.expect b/pkg/front_end/testcases/extensions/issue39889.dart.outline.expect
index 630c471..4b7aad3 100644
--- a/pkg/front_end/testcases/extensions/issue39889.dart.outline.expect
+++ b/pkg/front_end/testcases/extensions/issue39889.dart.outline.expect
@@ -5,6 +5,16 @@
 class C extends core::Object {
   synthetic constructor •() → self::C*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 extension E on self::C* {
   method f = self::E|f;
diff --git a/pkg/front_end/testcases/extensions/issue39889.dart.strong.expect b/pkg/front_end/testcases/extensions/issue39889.dart.strong.expect
index 1a949ac..668067b 100644
--- a/pkg/front_end/testcases/extensions/issue39889.dart.strong.expect
+++ b/pkg/front_end/testcases/extensions/issue39889.dart.strong.expect
@@ -6,6 +6,16 @@
   synthetic constructor •() → self::C*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 extension E on self::C* {
   method f = self::E|f;
diff --git a/pkg/front_end/testcases/extensions/issue39889.dart.strong.transformed.expect b/pkg/front_end/testcases/extensions/issue39889.dart.strong.transformed.expect
index 1a949ac..668067b 100644
--- a/pkg/front_end/testcases/extensions/issue39889.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/extensions/issue39889.dart.strong.transformed.expect
@@ -6,6 +6,16 @@
   synthetic constructor •() → self::C*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 extension E on self::C* {
   method f = self::E|f;
diff --git a/pkg/front_end/testcases/extensions/issue40816.dart.outline.expect b/pkg/front_end/testcases/extensions/issue40816.dart.outline.expect
index 934efa0..bdd0e1f 100644
--- a/pkg/front_end/testcases/extensions/issue40816.dart.outline.expect
+++ b/pkg/front_end/testcases/extensions/issue40816.dart.outline.expect
@@ -5,10 +5,30 @@
 class A extends core::Object {
   synthetic constructor •() → self::A*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends core::Object {
   synthetic constructor •() → self::B*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 extension _extension#0 on self::A* {
   method foo = self::_extension#0|foo;
diff --git a/pkg/front_end/testcases/extensions/issue40816.dart.strong.expect b/pkg/front_end/testcases/extensions/issue40816.dart.strong.expect
index b69ff84..5485f4b 100644
--- a/pkg/front_end/testcases/extensions/issue40816.dart.strong.expect
+++ b/pkg/front_end/testcases/extensions/issue40816.dart.strong.expect
@@ -6,11 +6,31 @@
   synthetic constructor •() → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends core::Object {
   synthetic constructor •() → self::B*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 extension _extension#0 on self::A* {
   method foo = self::_extension#0|foo;
diff --git a/pkg/front_end/testcases/extensions/issue40816.dart.strong.transformed.expect b/pkg/front_end/testcases/extensions/issue40816.dart.strong.transformed.expect
index b69ff84..5485f4b 100644
--- a/pkg/front_end/testcases/extensions/issue40816.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/extensions/issue40816.dart.strong.transformed.expect
@@ -6,11 +6,31 @@
   synthetic constructor •() → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends core::Object {
   synthetic constructor •() → self::B*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 extension _extension#0 on self::A* {
   method foo = self::_extension#0|foo;
diff --git a/pkg/front_end/testcases/extensions/missing_toplevel.dart.outline.expect b/pkg/front_end/testcases/extensions/missing_toplevel.dart.outline.expect
index f11fb72..bca616d 100644
--- a/pkg/front_end/testcases/extensions/missing_toplevel.dart.outline.expect
+++ b/pkg/front_end/testcases/extensions/missing_toplevel.dart.outline.expect
@@ -5,6 +5,16 @@
 class Class extends core::Object {
   synthetic constructor •() → self::Class*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 extension Extension on self::Class* {
   set setter = self::Extension|set#setter;
diff --git a/pkg/front_end/testcases/extensions/missing_toplevel.dart.strong.expect b/pkg/front_end/testcases/extensions/missing_toplevel.dart.strong.expect
index b9ec15a..04b3d68 100644
--- a/pkg/front_end/testcases/extensions/missing_toplevel.dart.strong.expect
+++ b/pkg/front_end/testcases/extensions/missing_toplevel.dart.strong.expect
@@ -15,6 +15,16 @@
   synthetic constructor •() → self::Class*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 extension Extension on self::Class* {
   set setter = self::Extension|set#setter;
diff --git a/pkg/front_end/testcases/extensions/missing_toplevel.dart.strong.transformed.expect b/pkg/front_end/testcases/extensions/missing_toplevel.dart.strong.transformed.expect
index 355e22c..4084b28 100644
--- a/pkg/front_end/testcases/extensions/missing_toplevel.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/extensions/missing_toplevel.dart.strong.transformed.expect
@@ -15,6 +15,16 @@
   synthetic constructor •() → self::Class*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 extension Extension on self::Class* {
   set setter = self::Extension|set#setter;
diff --git a/pkg/front_end/testcases/extensions/nested_on_types.dart.outline.expect b/pkg/front_end/testcases/extensions/nested_on_types.dart.outline.expect
index dae6f4a..46c4dcf 100644
--- a/pkg/front_end/testcases/extensions/nested_on_types.dart.outline.expect
+++ b/pkg/front_end/testcases/extensions/nested_on_types.dart.outline.expect
@@ -5,6 +5,16 @@
 class A<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::A<self::A::T*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 extension Extension<T extends core::Object* = dynamic> on self::A<self::A<T*>*>* {
   method method1 = self::Extension|method1;
diff --git a/pkg/front_end/testcases/extensions/nested_on_types.dart.strong.expect b/pkg/front_end/testcases/extensions/nested_on_types.dart.strong.expect
index 6a8c1f4..4d7862d 100644
--- a/pkg/front_end/testcases/extensions/nested_on_types.dart.strong.expect
+++ b/pkg/front_end/testcases/extensions/nested_on_types.dart.strong.expect
@@ -6,6 +6,16 @@
   synthetic constructor •() → self::A<self::A::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 extension Extension<T extends core::Object* = dynamic> on self::A<self::A<T*>*>* {
   method method1 = self::Extension|method1;
diff --git a/pkg/front_end/testcases/extensions/nested_on_types.dart.strong.transformed.expect b/pkg/front_end/testcases/extensions/nested_on_types.dart.strong.transformed.expect
index 6a8c1f4..4d7862d 100644
--- a/pkg/front_end/testcases/extensions/nested_on_types.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/extensions/nested_on_types.dart.strong.transformed.expect
@@ -6,6 +6,16 @@
   synthetic constructor •() → self::A<self::A::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 extension Extension<T extends core::Object* = dynamic> on self::A<self::A<T*>*>* {
   method method1 = self::Extension|method1;
diff --git a/pkg/front_end/testcases/extensions/null_aware.dart.outline.expect b/pkg/front_end/testcases/extensions/null_aware.dart.outline.expect
index 3e892cf..78addb5 100644
--- a/pkg/front_end/testcases/extensions/null_aware.dart.outline.expect
+++ b/pkg/front_end/testcases/extensions/null_aware.dart.outline.expect
@@ -6,6 +6,16 @@
   field core::int* field;
   synthetic constructor •() → self::Class*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 extension Extension on self::Class* {
   get property = self::Extension|get#property;
diff --git a/pkg/front_end/testcases/extensions/null_aware.dart.strong.expect b/pkg/front_end/testcases/extensions/null_aware.dart.strong.expect
index c5a31af..482980c 100644
--- a/pkg/front_end/testcases/extensions/null_aware.dart.strong.expect
+++ b/pkg/front_end/testcases/extensions/null_aware.dart.strong.expect
@@ -7,6 +7,16 @@
   synthetic constructor •() → self::Class*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 extension Extension on self::Class* {
   get property = self::Extension|get#property;
@@ -34,40 +44,40 @@
   return () → dynamic => self::Extension|testImplicitThis(#this);
 static method main() → dynamic {
   self::Class* c;
-  self::expect(null, let final self::Class* #t7 = c in #t7.{core::Object::==}(null) ?{core::int*} null : self::Extension|get#property(#t7));
-  self::expect(null, let final self::Class* #t8 = c in #t8.{core::Object::==}(null) ?{() →* core::int*} null : self::Extension|get#method(#t8));
-  self::expect(null, let final self::Class* #t9 = c in #t9.{core::Object::==}(null) ?{core::int*} null : self::Extension|method(#t9));
-  self::expect(null, let final self::Class* #t10 = c in #t10.{core::Object::==}(null) ?{core::int*} null : let final core::int* #t11 = 42 in let final void #t12 = self::Extension|set#property(#t10, #t11) in #t11);
-  self::expect(null, let final self::Class* #t13 = c in #t13.{core::Object::==}(null) ?{core::int*} null : let final core::int* #t14 = self::Extension|get#property(#t13) in #t14.{core::num::==}(null) ?{core::int*} let final core::int* #t15 = 42 in let final void #t16 = self::Extension|set#property(#t13, #t15) in #t15 : #t14);
+  self::expect(null, let final self::Class* #t7 = c in #t7.{self::Class::==}(null) ?{core::int*} null : self::Extension|get#property(#t7));
+  self::expect(null, let final self::Class* #t8 = c in #t8.{self::Class::==}(null) ?{() →* core::int*} null : self::Extension|get#method(#t8));
+  self::expect(null, let final self::Class* #t9 = c in #t9.{self::Class::==}(null) ?{core::int*} null : self::Extension|method(#t9));
+  self::expect(null, let final self::Class* #t10 = c in #t10.{self::Class::==}(null) ?{core::int*} null : let final core::int* #t11 = 42 in let final void #t12 = self::Extension|set#property(#t10, #t11) in #t11);
+  self::expect(null, let final self::Class* #t13 = c in #t13.{self::Class::==}(null) ?{core::int*} null : let final core::int* #t14 = self::Extension|get#property(#t13) in #t14.{core::num::==}(null) ?{core::int*} let final core::int* #t15 = 42 in let final void #t16 = self::Extension|set#property(#t13, #t15) in #t15 : #t14);
   c = new self::Class::•();
-  self::expect(null, let final self::Class* #t17 = c in #t17.{core::Object::==}(null) ?{core::int*} null : self::Extension|get#property(#t17));
-  self::expect(null, let final self::Class* #t18 = c in #t18.{core::Object::==}(null) ?{core::int*} null : self::Extension|method(#t18));
-  () →* core::int* tearOff = let final self::Class* #t19 = c in #t19.{core::Object::==}(null) ?{() →* core::int*} null : self::Extension|get#method(#t19);
+  self::expect(null, let final self::Class* #t17 = c in #t17.{self::Class::==}(null) ?{core::int*} null : self::Extension|get#property(#t17));
+  self::expect(null, let final self::Class* #t18 = c in #t18.{self::Class::==}(null) ?{core::int*} null : self::Extension|method(#t18));
+  () →* core::int* tearOff = let final self::Class* #t19 = c in #t19.{self::Class::==}(null) ?{() →* core::int*} null : self::Extension|get#method(#t19);
   self::expect(null, tearOff.call());
-  self::expect(42, let final self::Class* #t20 = c in #t20.{core::Object::==}(null) ?{core::int*} null : let final core::int* #t21 = 42 in let final void #t22 = self::Extension|set#property(#t20, #t21) in #t21);
+  self::expect(42, let final self::Class* #t20 = c in #t20.{self::Class::==}(null) ?{core::int*} null : let final core::int* #t21 = 42 in let final void #t22 = self::Extension|set#property(#t20, #t21) in #t21);
   self::expect(42, tearOff.call());
-  self::expect(null, let final self::Class* #t23 = c in #t23.{core::Object::==}(null) ?{core::Null?} null : let final core::Null? #t24 = null in let final void #t25 = self::Extension|set#property(#t23, #t24) in #t24);
-  self::expect(42, let final self::Class* #t26 = c in #t26.{core::Object::==}(null) ?{core::int*} null : let final core::int* #t27 = 42 in let final void #t28 = self::Extension|set#property(#t26, #t27) in #t27);
-  let final self::Class* #t29 = c in #t29.{core::Object::==}(null) ?{core::Null?} null : self::Extension|set#property(#t29, null);
-  self::expect(null, let final self::Class* #t30 = c in #t30.{core::Object::==}(null) ?{core::int*} null : self::Extension|get#property(#t30));
+  self::expect(null, let final self::Class* #t23 = c in #t23.{self::Class::==}(null) ?{core::Null?} null : let final core::Null? #t24 = null in let final void #t25 = self::Extension|set#property(#t23, #t24) in #t24);
+  self::expect(42, let final self::Class* #t26 = c in #t26.{self::Class::==}(null) ?{core::int*} null : let final core::int* #t27 = 42 in let final void #t28 = self::Extension|set#property(#t26, #t27) in #t27);
+  let final self::Class* #t29 = c in #t29.{self::Class::==}(null) ?{core::Null?} null : self::Extension|set#property(#t29, null);
+  self::expect(null, let final self::Class* #t30 = c in #t30.{self::Class::==}(null) ?{core::int*} null : self::Extension|get#property(#t30));
   self::expect(42, let final self::Class* #t31 = c in let final core::int* #t32 = self::Extension|get#property(#t31) in #t32.{core::num::==}(null) ?{core::int*} let final core::int* #t33 = 42 in let final void #t34 = self::Extension|set#property(#t31, #t33) in #t33 : #t32);
   self::expect(42, let final self::Class* #t35 = c in let final core::int* #t36 = self::Extension|get#property(#t35) in #t36.{core::num::==}(null) ?{core::int*} let final core::int* #t37 = 87 in let final void #t38 = self::Extension|set#property(#t35, #t37) in #t37 : #t36);
-  self::expect(null, let final self::Class* #t39 = c in #t39.{core::Object::==}(null) ?{core::Null?} null : let final core::Null? #t40 = null in let final void #t41 = self::Extension|set#property(#t39, #t40) in #t40);
+  self::expect(null, let final self::Class* #t39 = c in #t39.{self::Class::==}(null) ?{core::Null?} null : let final core::Null? #t40 = null in let final void #t41 = self::Extension|set#property(#t39, #t40) in #t40);
   let final self::Class* #t42 = c in self::Extension|get#property(#t42).{core::num::==}(null) ?{core::int*} self::Extension|set#property(#t42, 42) : null;
-  self::expect(42, let final self::Class* #t43 = c in #t43.{core::Object::==}(null) ?{core::int*} null : self::Extension|get#property(#t43));
+  self::expect(42, let final self::Class* #t43 = c in #t43.{self::Class::==}(null) ?{core::int*} null : self::Extension|get#property(#t43));
   let final self::Class* #t44 = c in self::Extension|get#property(#t44).{core::num::==}(null) ?{core::int*} self::Extension|set#property(#t44, 87) : null;
-  self::expect(42, let final self::Class* #t45 = c in #t45.{core::Object::==}(null) ?{core::int*} null : self::Extension|get#property(#t45));
-  let final self::Class* #t46 = c in #t46.{core::Object::==}(null) ?{core::Null?} null : self::Extension|set#property(#t46, null);
-  self::expect(null, let final self::Class* #t47 = c in #t47.{core::Object::==}(null) ?{core::int*} null : self::Extension|get#property(#t47));
+  self::expect(42, let final self::Class* #t45 = c in #t45.{self::Class::==}(null) ?{core::int*} null : self::Extension|get#property(#t45));
+  let final self::Class* #t46 = c in #t46.{self::Class::==}(null) ?{core::Null?} null : self::Extension|set#property(#t46, null);
+  self::expect(null, let final self::Class* #t47 = c in #t47.{self::Class::==}(null) ?{core::int*} null : self::Extension|get#property(#t47));
   self::expect(42, let final self::Class* #t48 = c in let final core::int* #t49 = self::Extension|get#property(#t48) in #t49.{core::num::==}(null) ?{core::int*} let final core::int* #t50 = 42 in let final void #t51 = self::Extension|set#property(#t48, #t50) in #t50 : #t49);
   self::expect(42, let final self::Class* #t52 = c in let final core::int* #t53 = self::Extension|get#property(#t52) in #t53.{core::num::==}(null) ?{core::int*} let final core::int* #t54 = 87 in let final void #t55 = self::Extension|set#property(#t52, #t54) in #t54 : #t53);
-  let final self::Class* #t56 = c in #t56.{core::Object::==}(null) ?{core::Null?} null : self::Extension|set#property(#t56, null);
-  self::expect(null, let final self::Class* #t57 = c in #t57.{core::Object::==}(null) ?{core::int*} null : self::Extension|get#property(#t57));
+  let final self::Class* #t56 = c in #t56.{self::Class::==}(null) ?{core::Null?} null : self::Extension|set#property(#t56, null);
+  self::expect(null, let final self::Class* #t57 = c in #t57.{self::Class::==}(null) ?{core::int*} null : self::Extension|get#property(#t57));
   let final self::Class* #t58 = c in self::Extension|get#property(#t58).{core::num::==}(null) ?{core::int*} self::Extension|set#property(#t58, 42) : null;
-  self::expect(42, let final self::Class* #t59 = c in #t59.{core::Object::==}(null) ?{core::int*} null : self::Extension|get#property(#t59));
+  self::expect(42, let final self::Class* #t59 = c in #t59.{self::Class::==}(null) ?{core::int*} null : self::Extension|get#property(#t59));
   let final self::Class* #t60 = c in self::Extension|get#property(#t60).{core::num::==}(null) ?{core::int*} self::Extension|set#property(#t60, 87) : null;
-  self::expect(42, let final self::Class* #t61 = c in #t61.{core::Object::==}(null) ?{core::int*} null : self::Extension|get#property(#t61));
-  let final self::Class* #t62 = c in #t62.{core::Object::==}(null) ?{core::Null?} null : self::Extension|set#property(#t62, null);
+  self::expect(42, let final self::Class* #t61 = c in #t61.{self::Class::==}(null) ?{core::int*} null : self::Extension|get#property(#t61));
+  let final self::Class* #t62 = c in #t62.{self::Class::==}(null) ?{core::Null?} null : self::Extension|set#property(#t62, null);
   self::Extension|testImplicitThis(c);
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
diff --git a/pkg/front_end/testcases/extensions/null_aware.dart.strong.transformed.expect b/pkg/front_end/testcases/extensions/null_aware.dart.strong.transformed.expect
index c5a31af..482980c 100644
--- a/pkg/front_end/testcases/extensions/null_aware.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/extensions/null_aware.dart.strong.transformed.expect
@@ -7,6 +7,16 @@
   synthetic constructor •() → self::Class*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 extension Extension on self::Class* {
   get property = self::Extension|get#property;
@@ -34,40 +44,40 @@
   return () → dynamic => self::Extension|testImplicitThis(#this);
 static method main() → dynamic {
   self::Class* c;
-  self::expect(null, let final self::Class* #t7 = c in #t7.{core::Object::==}(null) ?{core::int*} null : self::Extension|get#property(#t7));
-  self::expect(null, let final self::Class* #t8 = c in #t8.{core::Object::==}(null) ?{() →* core::int*} null : self::Extension|get#method(#t8));
-  self::expect(null, let final self::Class* #t9 = c in #t9.{core::Object::==}(null) ?{core::int*} null : self::Extension|method(#t9));
-  self::expect(null, let final self::Class* #t10 = c in #t10.{core::Object::==}(null) ?{core::int*} null : let final core::int* #t11 = 42 in let final void #t12 = self::Extension|set#property(#t10, #t11) in #t11);
-  self::expect(null, let final self::Class* #t13 = c in #t13.{core::Object::==}(null) ?{core::int*} null : let final core::int* #t14 = self::Extension|get#property(#t13) in #t14.{core::num::==}(null) ?{core::int*} let final core::int* #t15 = 42 in let final void #t16 = self::Extension|set#property(#t13, #t15) in #t15 : #t14);
+  self::expect(null, let final self::Class* #t7 = c in #t7.{self::Class::==}(null) ?{core::int*} null : self::Extension|get#property(#t7));
+  self::expect(null, let final self::Class* #t8 = c in #t8.{self::Class::==}(null) ?{() →* core::int*} null : self::Extension|get#method(#t8));
+  self::expect(null, let final self::Class* #t9 = c in #t9.{self::Class::==}(null) ?{core::int*} null : self::Extension|method(#t9));
+  self::expect(null, let final self::Class* #t10 = c in #t10.{self::Class::==}(null) ?{core::int*} null : let final core::int* #t11 = 42 in let final void #t12 = self::Extension|set#property(#t10, #t11) in #t11);
+  self::expect(null, let final self::Class* #t13 = c in #t13.{self::Class::==}(null) ?{core::int*} null : let final core::int* #t14 = self::Extension|get#property(#t13) in #t14.{core::num::==}(null) ?{core::int*} let final core::int* #t15 = 42 in let final void #t16 = self::Extension|set#property(#t13, #t15) in #t15 : #t14);
   c = new self::Class::•();
-  self::expect(null, let final self::Class* #t17 = c in #t17.{core::Object::==}(null) ?{core::int*} null : self::Extension|get#property(#t17));
-  self::expect(null, let final self::Class* #t18 = c in #t18.{core::Object::==}(null) ?{core::int*} null : self::Extension|method(#t18));
-  () →* core::int* tearOff = let final self::Class* #t19 = c in #t19.{core::Object::==}(null) ?{() →* core::int*} null : self::Extension|get#method(#t19);
+  self::expect(null, let final self::Class* #t17 = c in #t17.{self::Class::==}(null) ?{core::int*} null : self::Extension|get#property(#t17));
+  self::expect(null, let final self::Class* #t18 = c in #t18.{self::Class::==}(null) ?{core::int*} null : self::Extension|method(#t18));
+  () →* core::int* tearOff = let final self::Class* #t19 = c in #t19.{self::Class::==}(null) ?{() →* core::int*} null : self::Extension|get#method(#t19);
   self::expect(null, tearOff.call());
-  self::expect(42, let final self::Class* #t20 = c in #t20.{core::Object::==}(null) ?{core::int*} null : let final core::int* #t21 = 42 in let final void #t22 = self::Extension|set#property(#t20, #t21) in #t21);
+  self::expect(42, let final self::Class* #t20 = c in #t20.{self::Class::==}(null) ?{core::int*} null : let final core::int* #t21 = 42 in let final void #t22 = self::Extension|set#property(#t20, #t21) in #t21);
   self::expect(42, tearOff.call());
-  self::expect(null, let final self::Class* #t23 = c in #t23.{core::Object::==}(null) ?{core::Null?} null : let final core::Null? #t24 = null in let final void #t25 = self::Extension|set#property(#t23, #t24) in #t24);
-  self::expect(42, let final self::Class* #t26 = c in #t26.{core::Object::==}(null) ?{core::int*} null : let final core::int* #t27 = 42 in let final void #t28 = self::Extension|set#property(#t26, #t27) in #t27);
-  let final self::Class* #t29 = c in #t29.{core::Object::==}(null) ?{core::Null?} null : self::Extension|set#property(#t29, null);
-  self::expect(null, let final self::Class* #t30 = c in #t30.{core::Object::==}(null) ?{core::int*} null : self::Extension|get#property(#t30));
+  self::expect(null, let final self::Class* #t23 = c in #t23.{self::Class::==}(null) ?{core::Null?} null : let final core::Null? #t24 = null in let final void #t25 = self::Extension|set#property(#t23, #t24) in #t24);
+  self::expect(42, let final self::Class* #t26 = c in #t26.{self::Class::==}(null) ?{core::int*} null : let final core::int* #t27 = 42 in let final void #t28 = self::Extension|set#property(#t26, #t27) in #t27);
+  let final self::Class* #t29 = c in #t29.{self::Class::==}(null) ?{core::Null?} null : self::Extension|set#property(#t29, null);
+  self::expect(null, let final self::Class* #t30 = c in #t30.{self::Class::==}(null) ?{core::int*} null : self::Extension|get#property(#t30));
   self::expect(42, let final self::Class* #t31 = c in let final core::int* #t32 = self::Extension|get#property(#t31) in #t32.{core::num::==}(null) ?{core::int*} let final core::int* #t33 = 42 in let final void #t34 = self::Extension|set#property(#t31, #t33) in #t33 : #t32);
   self::expect(42, let final self::Class* #t35 = c in let final core::int* #t36 = self::Extension|get#property(#t35) in #t36.{core::num::==}(null) ?{core::int*} let final core::int* #t37 = 87 in let final void #t38 = self::Extension|set#property(#t35, #t37) in #t37 : #t36);
-  self::expect(null, let final self::Class* #t39 = c in #t39.{core::Object::==}(null) ?{core::Null?} null : let final core::Null? #t40 = null in let final void #t41 = self::Extension|set#property(#t39, #t40) in #t40);
+  self::expect(null, let final self::Class* #t39 = c in #t39.{self::Class::==}(null) ?{core::Null?} null : let final core::Null? #t40 = null in let final void #t41 = self::Extension|set#property(#t39, #t40) in #t40);
   let final self::Class* #t42 = c in self::Extension|get#property(#t42).{core::num::==}(null) ?{core::int*} self::Extension|set#property(#t42, 42) : null;
-  self::expect(42, let final self::Class* #t43 = c in #t43.{core::Object::==}(null) ?{core::int*} null : self::Extension|get#property(#t43));
+  self::expect(42, let final self::Class* #t43 = c in #t43.{self::Class::==}(null) ?{core::int*} null : self::Extension|get#property(#t43));
   let final self::Class* #t44 = c in self::Extension|get#property(#t44).{core::num::==}(null) ?{core::int*} self::Extension|set#property(#t44, 87) : null;
-  self::expect(42, let final self::Class* #t45 = c in #t45.{core::Object::==}(null) ?{core::int*} null : self::Extension|get#property(#t45));
-  let final self::Class* #t46 = c in #t46.{core::Object::==}(null) ?{core::Null?} null : self::Extension|set#property(#t46, null);
-  self::expect(null, let final self::Class* #t47 = c in #t47.{core::Object::==}(null) ?{core::int*} null : self::Extension|get#property(#t47));
+  self::expect(42, let final self::Class* #t45 = c in #t45.{self::Class::==}(null) ?{core::int*} null : self::Extension|get#property(#t45));
+  let final self::Class* #t46 = c in #t46.{self::Class::==}(null) ?{core::Null?} null : self::Extension|set#property(#t46, null);
+  self::expect(null, let final self::Class* #t47 = c in #t47.{self::Class::==}(null) ?{core::int*} null : self::Extension|get#property(#t47));
   self::expect(42, let final self::Class* #t48 = c in let final core::int* #t49 = self::Extension|get#property(#t48) in #t49.{core::num::==}(null) ?{core::int*} let final core::int* #t50 = 42 in let final void #t51 = self::Extension|set#property(#t48, #t50) in #t50 : #t49);
   self::expect(42, let final self::Class* #t52 = c in let final core::int* #t53 = self::Extension|get#property(#t52) in #t53.{core::num::==}(null) ?{core::int*} let final core::int* #t54 = 87 in let final void #t55 = self::Extension|set#property(#t52, #t54) in #t54 : #t53);
-  let final self::Class* #t56 = c in #t56.{core::Object::==}(null) ?{core::Null?} null : self::Extension|set#property(#t56, null);
-  self::expect(null, let final self::Class* #t57 = c in #t57.{core::Object::==}(null) ?{core::int*} null : self::Extension|get#property(#t57));
+  let final self::Class* #t56 = c in #t56.{self::Class::==}(null) ?{core::Null?} null : self::Extension|set#property(#t56, null);
+  self::expect(null, let final self::Class* #t57 = c in #t57.{self::Class::==}(null) ?{core::int*} null : self::Extension|get#property(#t57));
   let final self::Class* #t58 = c in self::Extension|get#property(#t58).{core::num::==}(null) ?{core::int*} self::Extension|set#property(#t58, 42) : null;
-  self::expect(42, let final self::Class* #t59 = c in #t59.{core::Object::==}(null) ?{core::int*} null : self::Extension|get#property(#t59));
+  self::expect(42, let final self::Class* #t59 = c in #t59.{self::Class::==}(null) ?{core::int*} null : self::Extension|get#property(#t59));
   let final self::Class* #t60 = c in self::Extension|get#property(#t60).{core::num::==}(null) ?{core::int*} self::Extension|set#property(#t60, 87) : null;
-  self::expect(42, let final self::Class* #t61 = c in #t61.{core::Object::==}(null) ?{core::int*} null : self::Extension|get#property(#t61));
-  let final self::Class* #t62 = c in #t62.{core::Object::==}(null) ?{core::Null?} null : self::Extension|set#property(#t62, null);
+  self::expect(42, let final self::Class* #t61 = c in #t61.{self::Class::==}(null) ?{core::int*} null : self::Extension|get#property(#t61));
+  let final self::Class* #t62 = c in #t62.{self::Class::==}(null) ?{core::Null?} null : self::Extension|set#property(#t62, null);
   self::Extension|testImplicitThis(c);
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
diff --git a/pkg/front_end/testcases/extensions/on_function_type.dart.outline.expect b/pkg/front_end/testcases/extensions/on_function_type.dart.outline.expect
index b83d5f5..48b365a 100644
--- a/pkg/front_end/testcases/extensions/on_function_type.dart.outline.expect
+++ b/pkg/front_end/testcases/extensions/on_function_type.dart.outline.expect
@@ -5,6 +5,16 @@
 class Class<T extends self::Class<self::Class::T*>* = self::Class<dynamic>*> extends core::Object {
   synthetic constructor •() → self::Class<self::Class::T*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Subclass extends self::Class<self::Subclass*> {
   synthetic constructor •() → self::Subclass*
diff --git a/pkg/front_end/testcases/extensions/on_function_type.dart.strong.expect b/pkg/front_end/testcases/extensions/on_function_type.dart.strong.expect
index c4d4880..c80edf8 100644
--- a/pkg/front_end/testcases/extensions/on_function_type.dart.strong.expect
+++ b/pkg/front_end/testcases/extensions/on_function_type.dart.strong.expect
@@ -6,6 +6,16 @@
   synthetic constructor •() → self::Class<self::Class::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Subclass extends self::Class<self::Subclass*> {
   synthetic constructor •() → self::Subclass*
diff --git a/pkg/front_end/testcases/extensions/on_function_type.dart.strong.transformed.expect b/pkg/front_end/testcases/extensions/on_function_type.dart.strong.transformed.expect
index c4d4880..c80edf8 100644
--- a/pkg/front_end/testcases/extensions/on_function_type.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/extensions/on_function_type.dart.strong.transformed.expect
@@ -6,6 +6,16 @@
   synthetic constructor •() → self::Class<self::Class::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Subclass extends self::Class<self::Subclass*> {
   synthetic constructor •() → self::Subclass*
diff --git a/pkg/front_end/testcases/extensions/on_type_variable_inference.dart.outline.expect b/pkg/front_end/testcases/extensions/on_type_variable_inference.dart.outline.expect
index 2cb9786..76f7c7e 100644
--- a/pkg/front_end/testcases/extensions/on_type_variable_inference.dart.outline.expect
+++ b/pkg/front_end/testcases/extensions/on_type_variable_inference.dart.outline.expect
@@ -5,6 +5,16 @@
 class Struct extends core::Object {
   synthetic constructor •() → self::Struct*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class StructA extends self::Struct {
   synthetic constructor •() → self::StructA*
@@ -17,6 +27,16 @@
 class NonStruct extends core::Object {
   synthetic constructor •() → self::NonStruct*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 extension Extension<T extends self::Struct* = dynamic> on T* {
   method method = self::Extension|method;
diff --git a/pkg/front_end/testcases/extensions/on_type_variable_inference.dart.strong.expect b/pkg/front_end/testcases/extensions/on_type_variable_inference.dart.strong.expect
index 86383f9..c187a14 100644
--- a/pkg/front_end/testcases/extensions/on_type_variable_inference.dart.strong.expect
+++ b/pkg/front_end/testcases/extensions/on_type_variable_inference.dart.strong.expect
@@ -45,6 +45,16 @@
   synthetic constructor •() → self::Struct*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class StructA extends self::Struct {
   synthetic constructor •() → self::StructA*
@@ -60,6 +70,16 @@
   synthetic constructor •() → self::NonStruct*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 extension Extension<T extends self::Struct* = dynamic> on T* {
   method method = self::Extension|method;
diff --git a/pkg/front_end/testcases/extensions/on_type_variable_inference.dart.strong.transformed.expect b/pkg/front_end/testcases/extensions/on_type_variable_inference.dart.strong.transformed.expect
index 86383f9..c187a14 100644
--- a/pkg/front_end/testcases/extensions/on_type_variable_inference.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/extensions/on_type_variable_inference.dart.strong.transformed.expect
@@ -45,6 +45,16 @@
   synthetic constructor •() → self::Struct*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class StructA extends self::Struct {
   synthetic constructor •() → self::StructA*
@@ -60,6 +70,16 @@
   synthetic constructor •() → self::NonStruct*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 extension Extension<T extends self::Struct* = dynamic> on T* {
   method method = self::Extension|method;
diff --git a/pkg/front_end/testcases/extensions/operators.dart.outline.expect b/pkg/front_end/testcases/extensions/operators.dart.outline.expect
index 2d2d9be..e4728d2 100644
--- a/pkg/front_end/testcases/extensions/operators.dart.outline.expect
+++ b/pkg/front_end/testcases/extensions/operators.dart.outline.expect
@@ -20,6 +20,13 @@
     ;
   method toString() → core::String*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 extension Operators on self::Complex* {
   operator + = self::Operators|+;
diff --git a/pkg/front_end/testcases/extensions/operators.dart.strong.expect b/pkg/front_end/testcases/extensions/operators.dart.strong.expect
index 0371050..fd87ce2 100644
--- a/pkg/front_end/testcases/extensions/operators.dart.strong.expect
+++ b/pkg/front_end/testcases/extensions/operators.dart.strong.expect
@@ -37,6 +37,13 @@
   }
   method toString() → core::String*
     return "Complex(${this.{self::Complex::real}},${this.{self::Complex::imaginary}})";
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 extension Operators on self::Complex* {
   operator + = self::Operators|+;
diff --git a/pkg/front_end/testcases/extensions/operators.dart.strong.transformed.expect b/pkg/front_end/testcases/extensions/operators.dart.strong.transformed.expect
index 0371050..fd87ce2 100644
--- a/pkg/front_end/testcases/extensions/operators.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/extensions/operators.dart.strong.transformed.expect
@@ -37,6 +37,13 @@
   }
   method toString() → core::String*
     return "Complex(${this.{self::Complex::real}},${this.{self::Complex::imaginary}})";
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 extension Operators on self::Complex* {
   operator + = self::Operators|+;
diff --git a/pkg/front_end/testcases/extensions/other_kinds.dart.outline.expect b/pkg/front_end/testcases/extensions/other_kinds.dart.outline.expect
index 964d48f..a68544b 100644
--- a/pkg/front_end/testcases/extensions/other_kinds.dart.outline.expect
+++ b/pkg/front_end/testcases/extensions/other_kinds.dart.outline.expect
@@ -15,6 +15,16 @@
     ;
   static method setStaticField(core::int* value) → void
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 extension A2 on self::A1* {
   get instanceProperty = self::A2|get#instanceProperty;
diff --git a/pkg/front_end/testcases/extensions/other_kinds.dart.strong.expect b/pkg/front_end/testcases/extensions/other_kinds.dart.strong.expect
index b4b386a..2c70cef 100644
--- a/pkg/front_end/testcases/extensions/other_kinds.dart.strong.expect
+++ b/pkg/front_end/testcases/extensions/other_kinds.dart.strong.expect
@@ -18,6 +18,16 @@
   static method setStaticField(core::int* value) → void {
     self::A1::_staticField = value;
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 extension A2 on self::A1* {
   get instanceProperty = self::A2|get#instanceProperty;
diff --git a/pkg/front_end/testcases/extensions/other_kinds.dart.strong.transformed.expect b/pkg/front_end/testcases/extensions/other_kinds.dart.strong.transformed.expect
index b4b386a..2c70cef 100644
--- a/pkg/front_end/testcases/extensions/other_kinds.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/extensions/other_kinds.dart.strong.transformed.expect
@@ -18,6 +18,16 @@
   static method setStaticField(core::int* value) → void {
     self::A1::_staticField = value;
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 extension A2 on self::A1* {
   get instanceProperty = self::A2|get#instanceProperty;
diff --git a/pkg/front_end/testcases/extensions/static_access.dart.outline.expect b/pkg/front_end/testcases/extensions/static_access.dart.outline.expect
index 840ecf2..d496aa3 100644
--- a/pkg/front_end/testcases/extensions/static_access.dart.outline.expect
+++ b/pkg/front_end/testcases/extensions/static_access.dart.outline.expect
@@ -5,6 +5,16 @@
 class Class extends core::Object {
   synthetic constructor •() → self::Class*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 extension Extension on self::Class* {
   static method method = self::Extension|method;
diff --git a/pkg/front_end/testcases/extensions/static_access.dart.strong.expect b/pkg/front_end/testcases/extensions/static_access.dart.strong.expect
index b5659e5..3fe5ca3 100644
--- a/pkg/front_end/testcases/extensions/static_access.dart.strong.expect
+++ b/pkg/front_end/testcases/extensions/static_access.dart.strong.expect
@@ -6,6 +6,16 @@
   synthetic constructor •() → self::Class*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 extension Extension on self::Class* {
   static method method = self::Extension|method;
diff --git a/pkg/front_end/testcases/extensions/static_access.dart.strong.transformed.expect b/pkg/front_end/testcases/extensions/static_access.dart.strong.transformed.expect
index b5659e5..3fe5ca3 100644
--- a/pkg/front_end/testcases/extensions/static_access.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/extensions/static_access.dart.strong.transformed.expect
@@ -6,6 +6,16 @@
   synthetic constructor •() → self::Class*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 extension Extension on self::Class* {
   static method method = self::Extension|method;
diff --git a/pkg/front_end/testcases/extensions/static_access_of_instance.dart.outline.expect b/pkg/front_end/testcases/extensions/static_access_of_instance.dart.outline.expect
index 0578511..a827f48 100644
--- a/pkg/front_end/testcases/extensions/static_access_of_instance.dart.outline.expect
+++ b/pkg/front_end/testcases/extensions/static_access_of_instance.dart.outline.expect
@@ -5,6 +5,16 @@
 class Class extends core::Object {
   synthetic constructor •() → self::Class*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 extension Extension on self::Class* {
   method instanceMethod = self::Extension|instanceMethod;
diff --git a/pkg/front_end/testcases/extensions/static_access_of_instance.dart.strong.expect b/pkg/front_end/testcases/extensions/static_access_of_instance.dart.strong.expect
index 5ad2d40..458ab6f 100644
--- a/pkg/front_end/testcases/extensions/static_access_of_instance.dart.strong.expect
+++ b/pkg/front_end/testcases/extensions/static_access_of_instance.dart.strong.expect
@@ -25,6 +25,16 @@
   synthetic constructor •() → self::Class*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 extension Extension on self::Class* {
   method instanceMethod = self::Extension|instanceMethod;
diff --git a/pkg/front_end/testcases/extensions/static_access_of_instance.dart.strong.transformed.expect b/pkg/front_end/testcases/extensions/static_access_of_instance.dart.strong.transformed.expect
index 5ad2d40..458ab6f 100644
--- a/pkg/front_end/testcases/extensions/static_access_of_instance.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/extensions/static_access_of_instance.dart.strong.transformed.expect
@@ -25,6 +25,16 @@
   synthetic constructor •() → self::Class*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 extension Extension on self::Class* {
   method instanceMethod = self::Extension|instanceMethod;
diff --git a/pkg/front_end/testcases/extensions/tear_offs.dart.outline.expect b/pkg/front_end/testcases/extensions/tear_offs.dart.outline.expect
index 7ad8711..69b8e9a 100644
--- a/pkg/front_end/testcases/extensions/tear_offs.dart.outline.expect
+++ b/pkg/front_end/testcases/extensions/tear_offs.dart.outline.expect
@@ -5,6 +5,16 @@
 class Class extends core::Object {
   synthetic constructor •() → self::Class*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 extension Extension on self::Class* {
   method id = self::Extension|id;
diff --git a/pkg/front_end/testcases/extensions/tear_offs.dart.strong.expect b/pkg/front_end/testcases/extensions/tear_offs.dart.strong.expect
index 826d872..7b084c8 100644
--- a/pkg/front_end/testcases/extensions/tear_offs.dart.strong.expect
+++ b/pkg/front_end/testcases/extensions/tear_offs.dart.strong.expect
@@ -21,6 +21,16 @@
   synthetic constructor •() → self::Class*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 extension Extension on self::Class* {
   method id = self::Extension|id;
diff --git a/pkg/front_end/testcases/extensions/tear_offs.dart.strong.transformed.expect b/pkg/front_end/testcases/extensions/tear_offs.dart.strong.transformed.expect
index 826d872..7b084c8 100644
--- a/pkg/front_end/testcases/extensions/tear_offs.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/extensions/tear_offs.dart.strong.transformed.expect
@@ -21,6 +21,16 @@
   synthetic constructor •() → self::Class*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 extension Extension on self::Class* {
   method id = self::Extension|id;
diff --git a/pkg/front_end/testcases/extensions/type_variables.dart.outline.expect b/pkg/front_end/testcases/extensions/type_variables.dart.outline.expect
index 862daf8..ad60a1f 100644
--- a/pkg/front_end/testcases/extensions/type_variables.dart.outline.expect
+++ b/pkg/front_end/testcases/extensions/type_variables.dart.outline.expect
@@ -5,6 +5,16 @@
 class A1<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::A1<self::A1::T*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 extension A2<T extends core::Object* = dynamic> on self::A1<T*>* {
   method method1 = self::A2|method1;
diff --git a/pkg/front_end/testcases/extensions/type_variables.dart.strong.expect b/pkg/front_end/testcases/extensions/type_variables.dart.strong.expect
index 27f3e58..37ca8c4 100644
--- a/pkg/front_end/testcases/extensions/type_variables.dart.strong.expect
+++ b/pkg/front_end/testcases/extensions/type_variables.dart.strong.expect
@@ -6,6 +6,16 @@
   synthetic constructor •() → self::A1<self::A1::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 extension A2<T extends core::Object* = dynamic> on self::A1<T*>* {
   method method1 = self::A2|method1;
diff --git a/pkg/front_end/testcases/extensions/type_variables.dart.strong.transformed.expect b/pkg/front_end/testcases/extensions/type_variables.dart.strong.transformed.expect
index 27f3e58..37ca8c4 100644
--- a/pkg/front_end/testcases/extensions/type_variables.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/extensions/type_variables.dart.strong.transformed.expect
@@ -6,6 +6,16 @@
   synthetic constructor •() → self::A1<self::A1::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 extension A2<T extends core::Object* = dynamic> on self::A1<T*>* {
   method method1 = self::A2|method1;
diff --git a/pkg/front_end/testcases/extensions/unnamed_extensions.dart.outline.expect b/pkg/front_end/testcases/extensions/unnamed_extensions.dart.outline.expect
index cc9bdfa..255ce5a 100644
--- a/pkg/front_end/testcases/extensions/unnamed_extensions.dart.outline.expect
+++ b/pkg/front_end/testcases/extensions/unnamed_extensions.dart.outline.expect
@@ -8,6 +8,15 @@
     ;
   method toString() → core::String*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Class2 extends core::Object {
   field core::int* field;
@@ -15,6 +24,15 @@
     ;
   method toString() → core::String*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 extension _extension#0 on self::Class1* {
   method method = self::_extension#0|method;
diff --git a/pkg/front_end/testcases/extensions/unnamed_extensions.dart.strong.expect b/pkg/front_end/testcases/extensions/unnamed_extensions.dart.strong.expect
index 2e08d1f..1fe7e58 100644
--- a/pkg/front_end/testcases/extensions/unnamed_extensions.dart.strong.expect
+++ b/pkg/front_end/testcases/extensions/unnamed_extensions.dart.strong.expect
@@ -9,6 +9,15 @@
     ;
   method toString() → core::String*
     return "Class1(${this.{self::Class1::field}})";
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Class2 extends core::Object {
   field core::int* field;
@@ -17,6 +26,15 @@
     ;
   method toString() → core::String*
     return "Class2(${this.{self::Class2::field}})";
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 extension _extension#0 on self::Class1* {
   method method = self::_extension#0|method;
@@ -85,13 +103,13 @@
   self::Class1* c1 = new self::Class1::•(1);
   self::expect(0, self::_extension#0|method(c0));
   self::expect(1, self::_extension#0|method(c1));
-  self::expect(1, let final self::Class1* #t1 = c1 in #t1.{core::Object::==}(null) ?{core::int*} null : self::_extension#0|method(#t1));
+  self::expect(1, let final self::Class1* #t1 = c1 in #t1.{self::Class1::==}(null) ?{core::int*} null : self::_extension#0|method(#t1));
   self::expect(42, self::_extension#0|genericMethod<core::int*>(c0, 42));
   self::expect(43, self::_extension#0|genericMethod<core::num*>(c0, 43));
   self::expect(88, self::_extension#0|genericMethod<core::int*>(c1, 87));
   self::expect(89, self::_extension#0|genericMethod<core::num*>(c1, 88));
   self::expect(0, self::_extension#0|get#property(c0));
-  self::expect(0, let final self::Class1* #t2 = c0 in #t2.{core::Object::==}(null) ?{core::int*} null : self::_extension#0|get#property(#t2));
+  self::expect(0, let final self::Class1* #t2 = c0 in #t2.{self::Class1::==}(null) ?{core::int*} null : self::_extension#0|get#property(#t2));
   self::expect(42, let final core::int* #t3 = 42 in let final void #t4 = self::_extension#0|set#property(c0, #t3) in #t3);
   self::expect(1, self::_extension#0|get#property(c1));
   self::expect(87, let final core::int* #t5 = 87 in let final void #t6 = self::_extension#0|set#property(c0, #t5) in #t5);
@@ -104,14 +122,14 @@
   self::Class2* c0 = new self::Class2::•(0);
   self::Class2* c1 = new self::Class2::•(1);
   self::expect(3, self::_extension#1|method(c0));
-  self::expect(3, let final self::Class2* #t27 = c0 in #t27.{core::Object::==}(null) ?{core::int*} null : self::_extension#1|method(#t27));
+  self::expect(3, let final self::Class2* #t27 = c0 in #t27.{self::Class2::==}(null) ?{core::int*} null : self::_extension#1|method(#t27));
   self::expect(4, self::_extension#1|method(c1));
   self::expect(46, self::_extension#1|genericMethod<core::int*>(c0, 42));
   self::expect(47, self::_extension#1|genericMethod<core::num*>(c0, 43));
   self::expect(92, self::_extension#1|genericMethod<core::int*>(c1, 87));
   self::expect(93, self::_extension#1|genericMethod<core::num*>(c1, 88));
   self::expect(5, self::_extension#1|get#property(c0));
-  self::expect(5, let final self::Class2* #t28 = c0 in #t28.{core::Object::==}(null) ?{core::int*} null : self::_extension#1|get#property(#t28));
+  self::expect(5, let final self::Class2* #t28 = c0 in #t28.{self::Class2::==}(null) ?{core::int*} null : self::_extension#1|get#property(#t28));
   self::expect(42, let final core::int* #t29 = 42 in let final void #t30 = self::_extension#1|set#property(c0, #t29) in #t29);
   self::expect(48, self::_extension#1|get#property(c0));
   self::expect(6, self::_extension#1|get#property(c1));
diff --git a/pkg/front_end/testcases/extensions/unnamed_extensions.dart.strong.transformed.expect b/pkg/front_end/testcases/extensions/unnamed_extensions.dart.strong.transformed.expect
index 2e08d1f..1fe7e58 100644
--- a/pkg/front_end/testcases/extensions/unnamed_extensions.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/extensions/unnamed_extensions.dart.strong.transformed.expect
@@ -9,6 +9,15 @@
     ;
   method toString() → core::String*
     return "Class1(${this.{self::Class1::field}})";
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Class2 extends core::Object {
   field core::int* field;
@@ -17,6 +26,15 @@
     ;
   method toString() → core::String*
     return "Class2(${this.{self::Class2::field}})";
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 extension _extension#0 on self::Class1* {
   method method = self::_extension#0|method;
@@ -85,13 +103,13 @@
   self::Class1* c1 = new self::Class1::•(1);
   self::expect(0, self::_extension#0|method(c0));
   self::expect(1, self::_extension#0|method(c1));
-  self::expect(1, let final self::Class1* #t1 = c1 in #t1.{core::Object::==}(null) ?{core::int*} null : self::_extension#0|method(#t1));
+  self::expect(1, let final self::Class1* #t1 = c1 in #t1.{self::Class1::==}(null) ?{core::int*} null : self::_extension#0|method(#t1));
   self::expect(42, self::_extension#0|genericMethod<core::int*>(c0, 42));
   self::expect(43, self::_extension#0|genericMethod<core::num*>(c0, 43));
   self::expect(88, self::_extension#0|genericMethod<core::int*>(c1, 87));
   self::expect(89, self::_extension#0|genericMethod<core::num*>(c1, 88));
   self::expect(0, self::_extension#0|get#property(c0));
-  self::expect(0, let final self::Class1* #t2 = c0 in #t2.{core::Object::==}(null) ?{core::int*} null : self::_extension#0|get#property(#t2));
+  self::expect(0, let final self::Class1* #t2 = c0 in #t2.{self::Class1::==}(null) ?{core::int*} null : self::_extension#0|get#property(#t2));
   self::expect(42, let final core::int* #t3 = 42 in let final void #t4 = self::_extension#0|set#property(c0, #t3) in #t3);
   self::expect(1, self::_extension#0|get#property(c1));
   self::expect(87, let final core::int* #t5 = 87 in let final void #t6 = self::_extension#0|set#property(c0, #t5) in #t5);
@@ -104,14 +122,14 @@
   self::Class2* c0 = new self::Class2::•(0);
   self::Class2* c1 = new self::Class2::•(1);
   self::expect(3, self::_extension#1|method(c0));
-  self::expect(3, let final self::Class2* #t27 = c0 in #t27.{core::Object::==}(null) ?{core::int*} null : self::_extension#1|method(#t27));
+  self::expect(3, let final self::Class2* #t27 = c0 in #t27.{self::Class2::==}(null) ?{core::int*} null : self::_extension#1|method(#t27));
   self::expect(4, self::_extension#1|method(c1));
   self::expect(46, self::_extension#1|genericMethod<core::int*>(c0, 42));
   self::expect(47, self::_extension#1|genericMethod<core::num*>(c0, 43));
   self::expect(92, self::_extension#1|genericMethod<core::int*>(c1, 87));
   self::expect(93, self::_extension#1|genericMethod<core::num*>(c1, 88));
   self::expect(5, self::_extension#1|get#property(c0));
-  self::expect(5, let final self::Class2* #t28 = c0 in #t28.{core::Object::==}(null) ?{core::int*} null : self::_extension#1|get#property(#t28));
+  self::expect(5, let final self::Class2* #t28 = c0 in #t28.{self::Class2::==}(null) ?{core::int*} null : self::_extension#1|get#property(#t28));
   self::expect(42, let final core::int* #t29 = 42 in let final void #t30 = self::_extension#1|set#property(c0, #t29) in #t29);
   self::expect(48, self::_extension#1|get#property(c0));
   self::expect(6, self::_extension#1|get#property(c1));
diff --git a/pkg/front_end/testcases/extensions/use_this.dart.outline.expect b/pkg/front_end/testcases/extensions/use_this.dart.outline.expect
index 76a98246..0cce2cc 100644
--- a/pkg/front_end/testcases/extensions/use_this.dart.outline.expect
+++ b/pkg/front_end/testcases/extensions/use_this.dart.outline.expect
@@ -5,10 +5,30 @@
 class A1 extends core::Object {
   synthetic constructor •() → self::A1*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B1<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::B1<self::B1::T*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 extension A2 on self::A1* {
   method method1 = self::A2|method1;
diff --git a/pkg/front_end/testcases/extensions/use_this.dart.strong.expect b/pkg/front_end/testcases/extensions/use_this.dart.strong.expect
index 31c3f25..9640d73 100644
--- a/pkg/front_end/testcases/extensions/use_this.dart.strong.expect
+++ b/pkg/front_end/testcases/extensions/use_this.dart.strong.expect
@@ -6,11 +6,31 @@
   synthetic constructor •() → self::A1*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B1<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::B1<self::B1::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 extension A2 on self::A1* {
   method method1 = self::A2|method1;
diff --git a/pkg/front_end/testcases/extensions/use_this.dart.strong.transformed.expect b/pkg/front_end/testcases/extensions/use_this.dart.strong.transformed.expect
index 31c3f25..9640d73 100644
--- a/pkg/front_end/testcases/extensions/use_this.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/extensions/use_this.dart.strong.transformed.expect
@@ -6,11 +6,31 @@
   synthetic constructor •() → self::A1*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B1<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::B1<self::B1::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 extension A2 on self::A1* {
   method method1 = self::A2|method1;
diff --git a/pkg/front_end/testcases/general/DeltaBlue.dart.outline.expect b/pkg/front_end/testcases/general/DeltaBlue.dart.outline.expect
index 5d802a5..acbb4c1 100644
--- a/pkg/front_end/testcases/general/DeltaBlue.dart.outline.expect
+++ b/pkg/front_end/testcases/general/DeltaBlue.dart.outline.expect
@@ -7,6 +7,16 @@
     ;
   method run() → void
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Strength extends core::Object /*hasConstConstructor*/  {
   final field core::int* value;
@@ -24,6 +34,16 @@
     ;
   static method strongest(self::Strength* s1, self::Strength* s2) → self::Strength*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class Constraint extends core::Object /*hasConstConstructor*/  {
   final field self::Strength* strength;
@@ -48,6 +68,16 @@
     ;
   method isInput() → core::bool*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class UnaryConstraint extends self::Constraint {
   final field self::Variable* myOutput;
@@ -150,6 +180,16 @@
     ;
   method removeConstraint(self::Constraint* c) → void
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Planner extends core::Object {
   field core::int* currentMark;
@@ -171,6 +211,16 @@
     ;
   method addConstraintsConsumingTo(self::Variable* v, core::List<self::Constraint*>* coll) → void
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Plan extends core::Object {
   field core::List<self::Constraint*>* list;
@@ -182,6 +232,16 @@
     ;
   method execute() → void
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static const field self::Strength* REQUIRED = const self::Strength::•(0, "required");
 static const field self::Strength* STRONG_PREFERRED = const self::Strength::•(1, "strongPreferred");
diff --git a/pkg/front_end/testcases/general/DeltaBlue.dart.strong.expect b/pkg/front_end/testcases/general/DeltaBlue.dart.strong.expect
index 2b67a8a..2a474d9 100644
--- a/pkg/front_end/testcases/general/DeltaBlue.dart.strong.expect
+++ b/pkg/front_end/testcases/general/DeltaBlue.dart.strong.expect
@@ -10,6 +10,16 @@
     self::chainTest(100);
     self::projectionTest(100);
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Strength extends core::Object /*hasConstConstructor*/  {
   final field core::int* value;
@@ -31,6 +41,16 @@
   static method strongest(self::Strength* s1, self::Strength* s2) → self::Strength* {
     return self::Strength::stronger(s1, s2) ?{self::Strength*} s1 : s2;
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class Constraint extends core::Object /*hasConstConstructor*/  {
   final field self::Strength* strength;
@@ -54,7 +74,7 @@
   method satisfy(dynamic mark) → self::Constraint* {
     this.{self::Constraint::chooseMethod}(mark as{TypeError,ForDynamic} core::int*);
     if(!this.{self::Constraint::isSatisfied}()) {
-      if(this.{self::Constraint::strength}.{core::Object::==}(#C22)) {
+      if(this.{self::Constraint::strength}.{self::Strength::==}(#C22)) {
         core::print("Could not satisfy a required constraint!");
       }
       return null;
@@ -62,7 +82,7 @@
     this.{self::Constraint::markInputs}(mark as{TypeError,ForDynamic} core::int*);
     self::Variable* out = this.{self::Constraint::output}();
     self::Constraint* overridden = out.{self::Variable::determinedBy};
-    if(!overridden.{core::Object::==}(null))
+    if(!overridden.{self::Constraint::==}(null))
       overridden.{self::Constraint::markUnsatisfied}();
     out.{self::Variable::determinedBy} = this;
     if(!self::planner.{self::Planner::addPropagate}(this, mark as{TypeError,ForDynamic} core::int*))
@@ -77,6 +97,16 @@
   }
   method isInput() → core::bool*
     return false;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class UnaryConstraint extends self::Constraint {
   final field self::Variable* myOutput;
@@ -109,7 +139,7 @@
   method inputsKnown(core::int* mark) → core::bool*
     return true;
   method removeFromGraph() → void {
-    if(!this.{self::UnaryConstraint::myOutput}.{core::Object::==}(null))
+    if(!this.{self::UnaryConstraint::myOutput}.{self::Variable::==}(null))
       this.{self::UnaryConstraint::myOutput}.{self::Variable::removeConstraint}(this);
     this.{self::UnaryConstraint::satisfied} = false;
   }
@@ -177,12 +207,12 @@
   }
   method inputsKnown(core::int* mark) → core::bool* {
     self::Variable* i = this.{self::BinaryConstraint::input}();
-    return i.{self::Variable::mark}.{core::num::==}(mark) || i.{self::Variable::stay} || i.{self::Variable::determinedBy}.{core::Object::==}(null);
+    return i.{self::Variable::mark}.{core::num::==}(mark) || i.{self::Variable::stay} || i.{self::Variable::determinedBy}.{self::Constraint::==}(null);
   }
   method removeFromGraph() → void {
-    if(!this.{self::BinaryConstraint::v1}.{core::Object::==}(null))
+    if(!this.{self::BinaryConstraint::v1}.{self::Variable::==}(null))
       this.{self::BinaryConstraint::v1}.{self::Variable::removeConstraint}(this);
-    if(!this.{self::BinaryConstraint::v2}.{core::Object::==}(null))
+    if(!this.{self::BinaryConstraint::v2}.{self::Variable::==}(null))
       this.{self::BinaryConstraint::v2}.{self::Variable::removeConstraint}(this);
     this.{self::BinaryConstraint::direction} = #C1;
   }
@@ -200,9 +230,9 @@
   }
   method removeFromGraph() → void {
     super.{self::BinaryConstraint::removeFromGraph}();
-    if(!this.{self::ScaleConstraint::scale}.{core::Object::==}(null))
+    if(!this.{self::ScaleConstraint::scale}.{self::Variable::==}(null))
       this.{self::ScaleConstraint::scale}.{self::Variable::removeConstraint}(this);
-    if(!this.{self::ScaleConstraint::offset}.{core::Object::==}(null))
+    if(!this.{self::ScaleConstraint::offset}.{self::Variable::==}(null))
       this.{self::ScaleConstraint::offset}.{self::Variable::removeConstraint}(this);
   }
   method markInputs(core::int* mark) → void {
@@ -250,9 +280,19 @@
   }
   method removeConstraint(self::Constraint* c) → void {
     this.{self::Variable::constraints}.{core::List::remove}(c);
-    if(this.{self::Variable::determinedBy}.{core::Object::==}(c))
+    if(this.{self::Variable::determinedBy}.{self::Constraint::==}(c))
       this.{self::Variable::determinedBy} = null;
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Planner extends core::Object {
   field core::int* currentMark = 0;
@@ -261,7 +301,7 @@
     ;
   method incrementalAdd(self::Constraint* c) → void {
     core::int* mark = this.{self::Planner::newMark}();
-    for (self::Constraint* overridden = c.{self::Constraint::satisfy}(mark); !overridden.{core::Object::==}(null); overridden = overridden.{self::Constraint::satisfy}(mark))
+    for (self::Constraint* overridden = c.{self::Constraint::satisfy}(mark); !overridden.{self::Constraint::==}(null); overridden = overridden.{self::Constraint::satisfy}(mark))
       ;
   }
   method incrementalRemove(self::Constraint* c) → void {
@@ -273,12 +313,12 @@
     do {
       for (core::int* i = 0; i.{core::num::<}(unsatisfied.{core::List::length}); i = i.{core::num::+}(1)) {
         self::Constraint* u = unsatisfied.{core::List::[]}(i);
-        if(u.{self::Constraint::strength}.{core::Object::==}(strength))
+        if(u.{self::Constraint::strength}.{self::Strength::==}(strength))
           this.{self::Planner::incrementalAdd}(u);
       }
       strength = strength.{self::Strength::nextWeaker}();
     }
-    while (!strength.{core::Object::==}(#C18))
+    while (!strength.{self::Strength::==}(#C18))
   }
   method newMark() → core::int*
     return this.{self::Planner::currentMark} = this.{self::Planner::currentMark}.{core::num::+}(1);
@@ -334,7 +374,7 @@
       self::Constraint* determining = v.{self::Variable::determinedBy};
       for (core::int* i = 0; i.{core::num::<}(v.{self::Variable::constraints}.{core::List::length}); i = i.{core::num::+}(1)) {
         self::Constraint* next = v.{self::Variable::constraints}.{core::List::[]}(i);
-        if(!next.{core::Object::==}(determining) && next.{self::Constraint::isSatisfied}()) {
+        if(!next.{self::Constraint::==}(determining) && next.{self::Constraint::isSatisfied}()) {
           next.{self::Constraint::recalculate}();
           todo.{core::List::add}(next.{self::Constraint::output}());
         }
@@ -346,10 +386,20 @@
     self::Constraint* determining = v.{self::Variable::determinedBy};
     for (core::int* i = 0; i.{core::num::<}(v.{self::Variable::constraints}.{core::List::length}); i = i.{core::num::+}(1)) {
       self::Constraint* c = v.{self::Variable::constraints}.{core::List::[]}(i);
-      if(!c.{core::Object::==}(determining) && c.{self::Constraint::isSatisfied}())
+      if(!c.{self::Constraint::==}(determining) && c.{self::Constraint::isSatisfied}())
         coll.{core::List::add}(c);
     }
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Plan extends core::Object {
   field core::List<self::Constraint*>* list = <self::Constraint*>[];
@@ -366,6 +416,16 @@
       this.{self::Plan::list}.{core::List::[]}(i).{self::Constraint::execute}();
     }
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static const field self::Strength* REQUIRED = #C22;
 static const field self::Strength* STRONG_PREFERRED = #C3;
@@ -388,7 +448,7 @@
   self::Variable* last = null;
   for (core::int* i = 0; i.{core::num::<=}(n); i = i.{core::num::+}(1)) {
     self::Variable* v = new self::Variable::•("v${i}", 0);
-    if(!prev.{core::Object::==}(null))
+    if(!prev.{self::Variable::==}(null))
       new self::EqualityConstraint::•(prev, v, #C22);
     if(i.{core::num::==}(0))
       first = v;
diff --git a/pkg/front_end/testcases/general/DeltaBlue.dart.strong.transformed.expect b/pkg/front_end/testcases/general/DeltaBlue.dart.strong.transformed.expect
index 2b67a8a..2a474d9 100644
--- a/pkg/front_end/testcases/general/DeltaBlue.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general/DeltaBlue.dart.strong.transformed.expect
@@ -10,6 +10,16 @@
     self::chainTest(100);
     self::projectionTest(100);
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Strength extends core::Object /*hasConstConstructor*/  {
   final field core::int* value;
@@ -31,6 +41,16 @@
   static method strongest(self::Strength* s1, self::Strength* s2) → self::Strength* {
     return self::Strength::stronger(s1, s2) ?{self::Strength*} s1 : s2;
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class Constraint extends core::Object /*hasConstConstructor*/  {
   final field self::Strength* strength;
@@ -54,7 +74,7 @@
   method satisfy(dynamic mark) → self::Constraint* {
     this.{self::Constraint::chooseMethod}(mark as{TypeError,ForDynamic} core::int*);
     if(!this.{self::Constraint::isSatisfied}()) {
-      if(this.{self::Constraint::strength}.{core::Object::==}(#C22)) {
+      if(this.{self::Constraint::strength}.{self::Strength::==}(#C22)) {
         core::print("Could not satisfy a required constraint!");
       }
       return null;
@@ -62,7 +82,7 @@
     this.{self::Constraint::markInputs}(mark as{TypeError,ForDynamic} core::int*);
     self::Variable* out = this.{self::Constraint::output}();
     self::Constraint* overridden = out.{self::Variable::determinedBy};
-    if(!overridden.{core::Object::==}(null))
+    if(!overridden.{self::Constraint::==}(null))
       overridden.{self::Constraint::markUnsatisfied}();
     out.{self::Variable::determinedBy} = this;
     if(!self::planner.{self::Planner::addPropagate}(this, mark as{TypeError,ForDynamic} core::int*))
@@ -77,6 +97,16 @@
   }
   method isInput() → core::bool*
     return false;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class UnaryConstraint extends self::Constraint {
   final field self::Variable* myOutput;
@@ -109,7 +139,7 @@
   method inputsKnown(core::int* mark) → core::bool*
     return true;
   method removeFromGraph() → void {
-    if(!this.{self::UnaryConstraint::myOutput}.{core::Object::==}(null))
+    if(!this.{self::UnaryConstraint::myOutput}.{self::Variable::==}(null))
       this.{self::UnaryConstraint::myOutput}.{self::Variable::removeConstraint}(this);
     this.{self::UnaryConstraint::satisfied} = false;
   }
@@ -177,12 +207,12 @@
   }
   method inputsKnown(core::int* mark) → core::bool* {
     self::Variable* i = this.{self::BinaryConstraint::input}();
-    return i.{self::Variable::mark}.{core::num::==}(mark) || i.{self::Variable::stay} || i.{self::Variable::determinedBy}.{core::Object::==}(null);
+    return i.{self::Variable::mark}.{core::num::==}(mark) || i.{self::Variable::stay} || i.{self::Variable::determinedBy}.{self::Constraint::==}(null);
   }
   method removeFromGraph() → void {
-    if(!this.{self::BinaryConstraint::v1}.{core::Object::==}(null))
+    if(!this.{self::BinaryConstraint::v1}.{self::Variable::==}(null))
       this.{self::BinaryConstraint::v1}.{self::Variable::removeConstraint}(this);
-    if(!this.{self::BinaryConstraint::v2}.{core::Object::==}(null))
+    if(!this.{self::BinaryConstraint::v2}.{self::Variable::==}(null))
       this.{self::BinaryConstraint::v2}.{self::Variable::removeConstraint}(this);
     this.{self::BinaryConstraint::direction} = #C1;
   }
@@ -200,9 +230,9 @@
   }
   method removeFromGraph() → void {
     super.{self::BinaryConstraint::removeFromGraph}();
-    if(!this.{self::ScaleConstraint::scale}.{core::Object::==}(null))
+    if(!this.{self::ScaleConstraint::scale}.{self::Variable::==}(null))
       this.{self::ScaleConstraint::scale}.{self::Variable::removeConstraint}(this);
-    if(!this.{self::ScaleConstraint::offset}.{core::Object::==}(null))
+    if(!this.{self::ScaleConstraint::offset}.{self::Variable::==}(null))
       this.{self::ScaleConstraint::offset}.{self::Variable::removeConstraint}(this);
   }
   method markInputs(core::int* mark) → void {
@@ -250,9 +280,19 @@
   }
   method removeConstraint(self::Constraint* c) → void {
     this.{self::Variable::constraints}.{core::List::remove}(c);
-    if(this.{self::Variable::determinedBy}.{core::Object::==}(c))
+    if(this.{self::Variable::determinedBy}.{self::Constraint::==}(c))
       this.{self::Variable::determinedBy} = null;
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Planner extends core::Object {
   field core::int* currentMark = 0;
@@ -261,7 +301,7 @@
     ;
   method incrementalAdd(self::Constraint* c) → void {
     core::int* mark = this.{self::Planner::newMark}();
-    for (self::Constraint* overridden = c.{self::Constraint::satisfy}(mark); !overridden.{core::Object::==}(null); overridden = overridden.{self::Constraint::satisfy}(mark))
+    for (self::Constraint* overridden = c.{self::Constraint::satisfy}(mark); !overridden.{self::Constraint::==}(null); overridden = overridden.{self::Constraint::satisfy}(mark))
       ;
   }
   method incrementalRemove(self::Constraint* c) → void {
@@ -273,12 +313,12 @@
     do {
       for (core::int* i = 0; i.{core::num::<}(unsatisfied.{core::List::length}); i = i.{core::num::+}(1)) {
         self::Constraint* u = unsatisfied.{core::List::[]}(i);
-        if(u.{self::Constraint::strength}.{core::Object::==}(strength))
+        if(u.{self::Constraint::strength}.{self::Strength::==}(strength))
           this.{self::Planner::incrementalAdd}(u);
       }
       strength = strength.{self::Strength::nextWeaker}();
     }
-    while (!strength.{core::Object::==}(#C18))
+    while (!strength.{self::Strength::==}(#C18))
   }
   method newMark() → core::int*
     return this.{self::Planner::currentMark} = this.{self::Planner::currentMark}.{core::num::+}(1);
@@ -334,7 +374,7 @@
       self::Constraint* determining = v.{self::Variable::determinedBy};
       for (core::int* i = 0; i.{core::num::<}(v.{self::Variable::constraints}.{core::List::length}); i = i.{core::num::+}(1)) {
         self::Constraint* next = v.{self::Variable::constraints}.{core::List::[]}(i);
-        if(!next.{core::Object::==}(determining) && next.{self::Constraint::isSatisfied}()) {
+        if(!next.{self::Constraint::==}(determining) && next.{self::Constraint::isSatisfied}()) {
           next.{self::Constraint::recalculate}();
           todo.{core::List::add}(next.{self::Constraint::output}());
         }
@@ -346,10 +386,20 @@
     self::Constraint* determining = v.{self::Variable::determinedBy};
     for (core::int* i = 0; i.{core::num::<}(v.{self::Variable::constraints}.{core::List::length}); i = i.{core::num::+}(1)) {
       self::Constraint* c = v.{self::Variable::constraints}.{core::List::[]}(i);
-      if(!c.{core::Object::==}(determining) && c.{self::Constraint::isSatisfied}())
+      if(!c.{self::Constraint::==}(determining) && c.{self::Constraint::isSatisfied}())
         coll.{core::List::add}(c);
     }
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Plan extends core::Object {
   field core::List<self::Constraint*>* list = <self::Constraint*>[];
@@ -366,6 +416,16 @@
       this.{self::Plan::list}.{core::List::[]}(i).{self::Constraint::execute}();
     }
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static const field self::Strength* REQUIRED = #C22;
 static const field self::Strength* STRONG_PREFERRED = #C3;
@@ -388,7 +448,7 @@
   self::Variable* last = null;
   for (core::int* i = 0; i.{core::num::<=}(n); i = i.{core::num::+}(1)) {
     self::Variable* v = new self::Variable::•("v${i}", 0);
-    if(!prev.{core::Object::==}(null))
+    if(!prev.{self::Variable::==}(null))
       new self::EqualityConstraint::•(prev, v, #C22);
     if(i.{core::num::==}(0))
       first = v;
diff --git a/pkg/front_end/testcases/general/abstract_members.dart.outline.expect b/pkg/front_end/testcases/general/abstract_members.dart.outline.expect
index 3500568..6c0c586 100644
--- a/pkg/front_end/testcases/general/abstract_members.dart.outline.expect
+++ b/pkg/front_end/testcases/general/abstract_members.dart.outline.expect
@@ -140,6 +140,16 @@
     ;
   method interfaceMethod1() → void
     ;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Interface2 extends core::Object {
   field dynamic interfaceMethod1;
@@ -147,12 +157,32 @@
     ;
   method interfaceMethod2() → void
     ;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Interface3 extends core::Object {
   synthetic constructor •() → self::Interface3*
     ;
   method interfaceMethod3() → void
     ;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class A extends core::Object implements self::Interface1, self::Interface2, self::Interface3 {
   synthetic constructor •() → self::A*
@@ -163,6 +193,16 @@
   abstract set property1(dynamic _) → void;
   abstract set property2(dynamic _) → void;
   abstract set property3(dynamic _) → void;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class B extends self::A {
   final field dynamic property1;
@@ -223,6 +263,16 @@
     ;
   method interfaceMethod1(dynamic _) → void
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class D extends self::C implements self::Interface2 {
   synthetic constructor •() → self::D*
@@ -233,6 +283,16 @@
     ;
   set interfaceMethod1(dynamic _) → void
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class F extends self::E implements self::Interface1 {
   synthetic constructor •() → self::F*
@@ -243,12 +303,32 @@
     ;
   method foo() → void
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class G extends core::Object {
   synthetic constructor •() → self::G*
     ;
   get foo() → core::Object*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class H extends self::G implements self::Foo {
   synthetic constructor •() → self::H*
@@ -259,12 +339,32 @@
     ;
   get foo() → core::Object*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class I extends core::Object {
   synthetic constructor •() → self::I*
     ;
   method foo() → core::Object*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class J extends self::I implements self::Bar {
   synthetic constructor •() → self::J*
diff --git a/pkg/front_end/testcases/general/abstract_members.dart.strong.expect b/pkg/front_end/testcases/general/abstract_members.dart.strong.expect
index 333da0b..f17f0bf 100644
--- a/pkg/front_end/testcases/general/abstract_members.dart.strong.expect
+++ b/pkg/front_end/testcases/general/abstract_members.dart.strong.expect
@@ -140,6 +140,16 @@
     : super core::Object::•()
     ;
   method interfaceMethod1() → void {}
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Interface2 extends core::Object {
   field dynamic interfaceMethod1 = null;
@@ -147,12 +157,32 @@
     : super core::Object::•()
     ;
   method interfaceMethod2() → void {}
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Interface3 extends core::Object {
   synthetic constructor •() → self::Interface3*
     : super core::Object::•()
     ;
   method interfaceMethod3() → void {}
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class A extends core::Object implements self::Interface1, self::Interface2, self::Interface3 {
   synthetic constructor •() → self::A*
@@ -163,6 +193,16 @@
   abstract set property1(dynamic _) → void;
   abstract set property2(dynamic _) → void;
   abstract set property3(dynamic _) → void;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class B extends self::A {
   final field dynamic property1 = null;
@@ -222,6 +262,16 @@
     : super core::Object::•()
     ;
   method interfaceMethod1(dynamic _) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class D extends self::C implements self::Interface2 {
   synthetic constructor •() → self::D*
@@ -233,6 +283,16 @@
     : super core::Object::•()
     ;
   set interfaceMethod1(dynamic _) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class F extends self::E implements self::Interface1 {
   synthetic constructor •() → self::F*
@@ -244,6 +304,16 @@
     : super core::Object::•()
     ;
   method foo() → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class G extends core::Object {
   synthetic constructor •() → self::G*
@@ -251,6 +321,16 @@
     ;
   get foo() → core::Object*
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class H extends self::G implements self::Foo {
   synthetic constructor •() → self::H*
@@ -263,12 +343,32 @@
     ;
   get foo() → core::Object*
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class I extends core::Object {
   synthetic constructor •() → self::I*
     : super core::Object::•()
     ;
   method foo() → core::Object* {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class J extends self::I implements self::Bar {
   synthetic constructor •() → self::J*
diff --git a/pkg/front_end/testcases/general/abstract_overrides_concrete_with_no_such_method.dart.outline.expect b/pkg/front_end/testcases/general/abstract_overrides_concrete_with_no_such_method.dart.outline.expect
index f027a20..3e41108 100644
--- a/pkg/front_end/testcases/general/abstract_overrides_concrete_with_no_such_method.dart.outline.expect
+++ b/pkg/front_end/testcases/general/abstract_overrides_concrete_with_no_such_method.dart.outline.expect
@@ -7,6 +7,16 @@
     ;
   method foo() → self::A*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class B extends self::A {
   synthetic constructor •() → self::B*
@@ -18,6 +28,15 @@
     ;
   method noSuchMethod(core::Invocation* _) → dynamic
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D extends self::C implements self::B {
   synthetic constructor •() → self::D*
diff --git a/pkg/front_end/testcases/general/abstract_overrides_concrete_with_no_such_method.dart.strong.expect b/pkg/front_end/testcases/general/abstract_overrides_concrete_with_no_such_method.dart.strong.expect
index df623b2..9556be5 100644
--- a/pkg/front_end/testcases/general/abstract_overrides_concrete_with_no_such_method.dart.strong.expect
+++ b/pkg/front_end/testcases/general/abstract_overrides_concrete_with_no_such_method.dart.strong.expect
@@ -8,6 +8,16 @@
     ;
   method foo() → self::A*
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class B extends self::A {
   synthetic constructor •() → self::B*
@@ -21,6 +31,15 @@
     ;
   method noSuchMethod(core::Invocation* _) → dynamic
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D extends self::C implements self::B {
   synthetic constructor •() → self::D*
diff --git a/pkg/front_end/testcases/general/abstract_overrides_concrete_with_no_such_method.dart.strong.transformed.expect b/pkg/front_end/testcases/general/abstract_overrides_concrete_with_no_such_method.dart.strong.transformed.expect
index df623b2..9556be5 100644
--- a/pkg/front_end/testcases/general/abstract_overrides_concrete_with_no_such_method.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general/abstract_overrides_concrete_with_no_such_method.dart.strong.transformed.expect
@@ -8,6 +8,16 @@
     ;
   method foo() → self::A*
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class B extends self::A {
   synthetic constructor •() → self::B*
@@ -21,6 +31,15 @@
     ;
   method noSuchMethod(core::Invocation* _) → dynamic
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D extends self::C implements self::B {
   synthetic constructor •() → self::D*
diff --git a/pkg/front_end/testcases/general/accessors.dart.outline.expect b/pkg/front_end/testcases/general/accessors.dart.outline.expect
index f5283f3..5216778 100644
--- a/pkg/front_end/testcases/general/accessors.dart.outline.expect
+++ b/pkg/front_end/testcases/general/accessors.dart.outline.expect
@@ -11,6 +11,16 @@
     ;
   method testD() → dynamic
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D extends self::C {
   synthetic constructor •() → self::D*
diff --git a/pkg/front_end/testcases/general/accessors.dart.strong.expect b/pkg/front_end/testcases/general/accessors.dart.strong.expect
index 1265410..6b17036 100644
--- a/pkg/front_end/testcases/general/accessors.dart.strong.expect
+++ b/pkg/front_end/testcases/general/accessors.dart.strong.expect
@@ -50,6 +50,16 @@
           ^^^^^^^^^^");
     this.{self::C::onlySetter} = "hest";
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D extends self::C {
   synthetic constructor •() → self::D*
diff --git a/pkg/front_end/testcases/general/accessors.dart.strong.transformed.expect b/pkg/front_end/testcases/general/accessors.dart.strong.transformed.expect
index 1265410..6b17036 100644
--- a/pkg/front_end/testcases/general/accessors.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general/accessors.dart.strong.transformed.expect
@@ -50,6 +50,16 @@
           ^^^^^^^^^^");
     this.{self::C::onlySetter} = "hest";
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D extends self::C {
   synthetic constructor •() → self::D*
diff --git a/pkg/front_end/testcases/general/annotation_on_enum_values.dart.outline.expect b/pkg/front_end/testcases/general/annotation_on_enum_values.dart.outline.expect
index 3a9691a..c71bb7a 100644
--- a/pkg/front_end/testcases/general/annotation_on_enum_values.dart.outline.expect
+++ b/pkg/front_end/testcases/general/annotation_on_enum_values.dart.outline.expect
@@ -7,6 +7,16 @@
   const constructor fisk(self::Fisk::T* x) → self::Fisk<self::Fisk::T*>*
     : self::Fisk::x = x, super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Foo extends core::Object /*isEnum*/  {
   final field core::int* index;
@@ -22,6 +32,15 @@
     ;
   method toString() → core::String*
     return this.{=self::Foo::_name};
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static const field core::int* hest = 42;
 static method main() → dynamic
diff --git a/pkg/front_end/testcases/general/annotation_on_enum_values.dart.strong.expect b/pkg/front_end/testcases/general/annotation_on_enum_values.dart.strong.expect
index ad232a9..f51aa86 100644
--- a/pkg/front_end/testcases/general/annotation_on_enum_values.dart.strong.expect
+++ b/pkg/front_end/testcases/general/annotation_on_enum_values.dart.strong.expect
@@ -7,6 +7,16 @@
   const constructor fisk(self::Fisk::T* x) → self::Fisk<self::Fisk::T*>*
     : self::Fisk::x = x, super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Foo extends core::Object /*isEnum*/  {
   final field core::int* index;
@@ -22,6 +32,15 @@
     ;
   method toString() → core::String*
     return this.{=self::Foo::_name};
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static const field core::int* hest = #C11;
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general/annotation_on_enum_values.dart.strong.transformed.expect b/pkg/front_end/testcases/general/annotation_on_enum_values.dart.strong.transformed.expect
index ad232a9..f51aa86 100644
--- a/pkg/front_end/testcases/general/annotation_on_enum_values.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general/annotation_on_enum_values.dart.strong.transformed.expect
@@ -7,6 +7,16 @@
   const constructor fisk(self::Fisk::T* x) → self::Fisk<self::Fisk::T*>*
     : self::Fisk::x = x, super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Foo extends core::Object /*isEnum*/  {
   final field core::int* index;
@@ -22,6 +32,15 @@
     ;
   method toString() → core::String*
     return this.{=self::Foo::_name};
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static const field core::int* hest = #C11;
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general/annotation_top.dart.outline.expect b/pkg/front_end/testcases/general/annotation_top.dart.outline.expect
index 62a6a88..bb4145a 100644
--- a/pkg/front_end/testcases/general/annotation_top.dart.outline.expect
+++ b/pkg/front_end/testcases/general/annotation_top.dart.outline.expect
@@ -10,12 +10,32 @@
   const constructor •(core::int* value) → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 @self::a
 @self::A::•(2)
 class C extends core::Object {
   synthetic constructor •() → self::C*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static const field core::Object* a = const core::Object::•();
 @self::a
diff --git a/pkg/front_end/testcases/general/annotation_top.dart.strong.expect b/pkg/front_end/testcases/general/annotation_top.dart.strong.expect
index 29c9cb7..be64079 100644
--- a/pkg/front_end/testcases/general/annotation_top.dart.strong.expect
+++ b/pkg/front_end/testcases/general/annotation_top.dart.strong.expect
@@ -14,6 +14,16 @@
   const constructor •(core::int* value) → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 @#C1
 @#C2
@@ -21,6 +31,16 @@
   synthetic constructor •() → self::C*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static const field core::Object* a = #C1;
 @#C1
diff --git a/pkg/front_end/testcases/general/annotation_top.dart.strong.transformed.expect b/pkg/front_end/testcases/general/annotation_top.dart.strong.transformed.expect
index 29c9cb7..be64079 100644
--- a/pkg/front_end/testcases/general/annotation_top.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general/annotation_top.dart.strong.transformed.expect
@@ -14,6 +14,16 @@
   const constructor •(core::int* value) → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 @#C1
 @#C2
@@ -21,6 +31,16 @@
   synthetic constructor •() → self::C*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static const field core::Object* a = #C1;
 @#C1
diff --git a/pkg/front_end/testcases/general/annotation_variable_declaration.dart.outline.expect b/pkg/front_end/testcases/general/annotation_variable_declaration.dart.outline.expect
index 86cd7ac..9a54fb8 100644
--- a/pkg/front_end/testcases/general/annotation_variable_declaration.dart.outline.expect
+++ b/pkg/front_end/testcases/general/annotation_variable_declaration.dart.outline.expect
@@ -10,6 +10,16 @@
   const constructor named(dynamic x) → self::Bar*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Baz extends core::Object {
   constructor •(dynamic constructorFormal) → self::Baz*
@@ -20,6 +30,16 @@
     ;
   method hest({dynamic named}) → dynamic
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static const field core::int* foo = 42;
 static method main() → dynamic
diff --git a/pkg/front_end/testcases/general/annotation_variable_declaration.dart.strong.expect b/pkg/front_end/testcases/general/annotation_variable_declaration.dart.strong.expect
index 7a689b8..b2dcd1b 100644
--- a/pkg/front_end/testcases/general/annotation_variable_declaration.dart.strong.expect
+++ b/pkg/front_end/testcases/general/annotation_variable_declaration.dart.strong.expect
@@ -10,6 +10,16 @@
   const constructor named(dynamic x) → self::Bar*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Baz extends core::Object {
   constructor •(@#C1 dynamic constructorFormal) → self::Baz*
@@ -31,6 +41,16 @@
   }
   method hest({@#C1 dynamic named = #C3}) → dynamic
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static const field core::int* foo = #C1;
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general/annotation_variable_declaration.dart.strong.transformed.expect b/pkg/front_end/testcases/general/annotation_variable_declaration.dart.strong.transformed.expect
index 7a689b8..b2dcd1b 100644
--- a/pkg/front_end/testcases/general/annotation_variable_declaration.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general/annotation_variable_declaration.dart.strong.transformed.expect
@@ -10,6 +10,16 @@
   const constructor named(dynamic x) → self::Bar*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Baz extends core::Object {
   constructor •(@#C1 dynamic constructorFormal) → self::Baz*
@@ -31,6 +41,16 @@
   }
   method hest({@#C1 dynamic named = #C3}) → dynamic
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static const field core::int* foo = #C1;
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general/argument.dart.outline.expect b/pkg/front_end/testcases/general/argument.dart.outline.expect
index bf52159..0c9b4a0 100644
--- a/pkg/front_end/testcases/general/argument.dart.outline.expect
+++ b/pkg/front_end/testcases/general/argument.dart.outline.expect
@@ -5,6 +5,16 @@
 abstract class Base extends core::Object {
   synthetic constructor •() → self::Base*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Foo extends self::Base {
   synthetic constructor •() → self::Foo*
diff --git a/pkg/front_end/testcases/general/argument.dart.strong.expect b/pkg/front_end/testcases/general/argument.dart.strong.expect
index dc04225a..e1c5f67 100644
--- a/pkg/front_end/testcases/general/argument.dart.strong.expect
+++ b/pkg/front_end/testcases/general/argument.dart.strong.expect
@@ -6,6 +6,16 @@
   synthetic constructor •() → self::Base*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Foo extends self::Base {
   synthetic constructor •() → self::Foo*
diff --git a/pkg/front_end/testcases/general/argument.dart.strong.transformed.expect b/pkg/front_end/testcases/general/argument.dart.strong.transformed.expect
index dc04225a..e1c5f67 100644
--- a/pkg/front_end/testcases/general/argument.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general/argument.dart.strong.transformed.expect
@@ -6,6 +6,16 @@
   synthetic constructor •() → self::Base*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Foo extends self::Base {
   synthetic constructor •() → self::Foo*
diff --git a/pkg/front_end/testcases/general/assign_to_initializing_formal.dart.outline.expect b/pkg/front_end/testcases/general/assign_to_initializing_formal.dart.outline.expect
index 5834746..0c51a8a 100644
--- a/pkg/front_end/testcases/general/assign_to_initializing_formal.dart.outline.expect
+++ b/pkg/front_end/testcases/general/assign_to_initializing_formal.dart.outline.expect
@@ -9,6 +9,16 @@
   field dynamic y;
   constructor •(dynamic x) → self::A*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/general/assign_to_initializing_formal.dart.strong.expect b/pkg/front_end/testcases/general/assign_to_initializing_formal.dart.strong.expect
index bc6bd68..09fcb03 100644
--- a/pkg/front_end/testcases/general/assign_to_initializing_formal.dart.strong.expect
+++ b/pkg/front_end/testcases/general/assign_to_initializing_formal.dart.strong.expect
@@ -21,5 +21,15 @@
           ^";
     }, super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general/assign_to_initializing_formal.dart.strong.transformed.expect b/pkg/front_end/testcases/general/assign_to_initializing_formal.dart.strong.transformed.expect
index bc6bd68..09fcb03 100644
--- a/pkg/front_end/testcases/general/assign_to_initializing_formal.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general/assign_to_initializing_formal.dart.strong.transformed.expect
@@ -21,5 +21,15 @@
           ^";
     }, super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general/async_function.dart.strong.transformed.expect b/pkg/front_end/testcases/general/async_function.dart.strong.transformed.expect
index c86613d..c8cb04c 100644
--- a/pkg/front_end/testcases/general/async_function.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general/async_function.dart.strong.transformed.expect
@@ -25,8 +25,8 @@
       asy::_completeOnAsyncReturn(:async_completer, :return_value);
       return;
     }
-    on dynamic catch(dynamic :exception, core::StackTrace* :stack_trace) {
-      :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+    on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
+      :async_completer.{asy::Completer::completeError}(exception, stack_trace);
     }
   :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
@@ -52,8 +52,8 @@
       asy::_completeOnAsyncReturn(:async_completer, :return_value);
       return;
     }
-    on dynamic catch(dynamic :exception, core::StackTrace* :stack_trace) {
-      :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+    on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
+      :async_completer.{asy::Completer::completeError}(exception, stack_trace);
     }
   :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
@@ -62,40 +62,44 @@
   return :async_completer.{asy::Completer::future};
 }
 static method syncStarString() → core::Iterable<core::String*>* /* originally sync* */ {
-  core::int* :await_jump_var = 0;
-  dynamic :await_ctx_var;
-  function :sync_op(core::_SyncIterator<core::String*>* :iterator) → core::bool* yielding {
-    {
+  function :sync_op_gen() → (core::_SyncIterator<core::String*>*) →* core::bool* {
+    core::int* :await_jump_var = 0;
+    dynamic :await_ctx_var;
+    return (core::_SyncIterator<core::String*>* :iterator) → core::bool* yielding {
       {
-        :iterator.{core::_SyncIterator::_current} = "foo";
-        [yield] true;
+        {
+          :iterator.{core::_SyncIterator::_current} = "foo";
+          [yield] true;
+        }
+        {
+          :iterator.{core::_SyncIterator::_yieldEachIterable} = self::syncStarString2();
+          [yield] true;
+        }
+        {
+          :iterator.{core::_SyncIterator::_yieldEachIterable} = self::stringList;
+          [yield] true;
+        }
       }
-      {
-        :iterator.{core::_SyncIterator::_yieldEachIterable} = self::syncStarString2();
-        [yield] true;
-      }
-      {
-        :iterator.{core::_SyncIterator::_yieldEachIterable} = self::stringList;
-        [yield] true;
-      }
-    }
-    return false;
+      return false;
+    };
   }
-  return new core::_SyncIterable::•<core::String*>(:sync_op);
+  return new core::_SyncIterable::•<core::String*>(:sync_op_gen);
 }
 static method syncStarString2() → core::Iterable<core::String*>* /* originally sync* */ {
-  core::int* :await_jump_var = 0;
-  dynamic :await_ctx_var;
-  function :sync_op(core::_SyncIterator<core::String*>* :iterator) → core::bool* yielding {
-    {
+  function :sync_op_gen() → (core::_SyncIterator<core::String*>*) →* core::bool* {
+    core::int* :await_jump_var = 0;
+    dynamic :await_ctx_var;
+    return (core::_SyncIterator<core::String*>* :iterator) → core::bool* yielding {
       {
-        :iterator.{core::_SyncIterator::_current} = "foo";
-        [yield] true;
+        {
+          :iterator.{core::_SyncIterator::_current} = "foo";
+          [yield] true;
+        }
       }
-    }
-    return false;
+      return false;
+    };
   }
-  return new core::_SyncIterable::•<core::String*>(:sync_op);
+  return new core::_SyncIterable::•<core::String*>(:sync_op_gen);
 }
 static method asyncStarString() → asy::Stream<core::String*>* /* originally async* */ {
   asy::_AsyncStarStreamController<core::String*>* :controller;
@@ -128,8 +132,8 @@
         }
         return;
       }
-      on dynamic catch(dynamic :exception, core::StackTrace* :stack_trace) {
-        :controller.{asy::_AsyncStarStreamController::addError}(:exception, :stack_trace);
+      on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
+        :controller.{asy::_AsyncStarStreamController::addError}(exception, stack_trace);
       }
     finally {
       :controller.{asy::_AsyncStarStreamController::close}();
@@ -163,8 +167,8 @@
         }
         return;
       }
-      on dynamic catch(dynamic :exception, core::StackTrace* :stack_trace) {
-        :controller.{asy::_AsyncStarStreamController::addError}(:exception, :stack_trace);
+      on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
+        :controller.{asy::_AsyncStarStreamController::addError}(exception, stack_trace);
       }
     finally {
       :controller.{asy::_AsyncStarStreamController::close}();
@@ -195,8 +199,8 @@
       asy::_completeOnAsyncReturn(:async_completer, :return_value);
       return;
     }
-    on dynamic catch(dynamic :exception, core::StackTrace* :stack_trace) {
-      :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+    on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
+      :async_completer.{asy::Completer::completeError}(exception, stack_trace);
     }
   :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
diff --git a/pkg/front_end/testcases/general/async_method_with_invalid_type.dart b/pkg/front_end/testcases/general/async_method_with_invalid_type.dart
new file mode 100644
index 0000000..b5d5980
--- /dev/null
+++ b/pkg/front_end/testcases/general/async_method_with_invalid_type.dart
@@ -0,0 +1,8 @@
+// Copyright (c) 2020, the Dart project authors. Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE.md file.
+
+foo() async {
+  Bar x;
+  for (dynamic y in x.z) {}
+}
\ No newline at end of file
diff --git a/pkg/front_end/testcases/general/async_method_with_invalid_type.dart.outline.expect b/pkg/front_end/testcases/general/async_method_with_invalid_type.dart.outline.expect
new file mode 100644
index 0000000..ea22af7
--- /dev/null
+++ b/pkg/front_end/testcases/general/async_method_with_invalid_type.dart.outline.expect
@@ -0,0 +1,5 @@
+library;
+import self as self;
+
+static method foo() → dynamic
+  ;
diff --git a/pkg/front_end/testcases/general/async_method_with_invalid_type.dart.strong.expect b/pkg/front_end/testcases/general/async_method_with_invalid_type.dart.strong.expect
new file mode 100644
index 0000000..1309bf1
--- /dev/null
+++ b/pkg/front_end/testcases/general/async_method_with_invalid_type.dart.strong.expect
@@ -0,0 +1,15 @@
+library;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/general/async_method_with_invalid_type.dart:6:3: Error: 'Bar' isn't a type.
+//   Bar x;
+//   ^^^
+//
+import self as self;
+
+static method foo() → dynamic async {
+  invalid-type x;
+  for (dynamic y in x.z) {
+  }
+}
diff --git a/pkg/front_end/testcases/general/async_method_with_invalid_type.dart.textual_outline.expect b/pkg/front_end/testcases/general/async_method_with_invalid_type.dart.textual_outline.expect
new file mode 100644
index 0000000..88505fd
--- /dev/null
+++ b/pkg/front_end/testcases/general/async_method_with_invalid_type.dart.textual_outline.expect
@@ -0,0 +1 @@
+foo() async {}
diff --git a/pkg/front_end/testcases/general/async_method_with_invalid_type.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/general/async_method_with_invalid_type.dart.textual_outline_modelled.expect
new file mode 100644
index 0000000..88505fd
--- /dev/null
+++ b/pkg/front_end/testcases/general/async_method_with_invalid_type.dart.textual_outline_modelled.expect
@@ -0,0 +1 @@
+foo() async {}
diff --git a/pkg/front_end/testcases/general/async_nested.dart.outline.expect b/pkg/front_end/testcases/general/async_nested.dart.outline.expect
index 0f6f92e..7d1bc82 100644
--- a/pkg/front_end/testcases/general/async_nested.dart.outline.expect
+++ b/pkg/front_end/testcases/general/async_nested.dart.outline.expect
@@ -13,6 +13,15 @@
     ;
   method toSimpleString() → dynamic
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → void
   ;
diff --git a/pkg/front_end/testcases/general/async_nested.dart.strong.expect b/pkg/front_end/testcases/general/async_nested.dart.strong.expect
index 6916565..24bc63a 100644
--- a/pkg/front_end/testcases/general/async_nested.dart.strong.expect
+++ b/pkg/front_end/testcases/general/async_nested.dart.strong.expect
@@ -16,6 +16,15 @@
     core::Iterable<dynamic>* tmp = let final core::List<self::Node*>* #t2 = this.{self::Node::nested} in #t2.{core::List::==}(null) ?{core::Iterable<dynamic>*} null : #t2.{core::Iterable::map}<dynamic>((self::Node* child) → dynamic => child.{self::Node::toSimpleString}());
     return "${this.{self::Node::name}} ${let final core::Iterable<dynamic>* #t3 = tmp in #t3.{core::Object::==}(null) ?{core::String*} null : #t3.{core::Iterable::join}(" ")}".{core::String::trim}();
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → void async {
   core::String* expected = "1 2 3 4 5 6 7 8 9 10";
diff --git a/pkg/front_end/testcases/general/async_nested.dart.strong.transformed.expect b/pkg/front_end/testcases/general/async_nested.dart.strong.transformed.expect
index bdf5176..ee2359b 100644
--- a/pkg/front_end/testcases/general/async_nested.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general/async_nested.dart.strong.transformed.expect
@@ -17,6 +17,15 @@
     core::Iterable<dynamic>* tmp = let final core::List<self::Node*>* #t2 = this.{self::Node::nested} in #t2.{core::List::==}(null) ?{core::Iterable<dynamic>*} null : #t2.{core::Iterable::map}<dynamic>((self::Node* child) → dynamic => child.{self::Node::toSimpleString}());
     return "${this.{self::Node::name}} ${let final core::Iterable<dynamic>* #t3 = tmp in #t3.{core::Object::==}(null) ?{core::String*} null : #t3.{core::Iterable::join}(" ")}".{core::String::trim}();
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → void /* originally async */ {
   final asy::_AsyncAwaitCompleter<dynamic>* :async_completer = new asy::_AsyncAwaitCompleter::•<dynamic>();
@@ -56,8 +65,8 @@
       asy::_completeOnAsyncReturn(:async_completer, :return_value);
       return;
     }
-    on dynamic catch(dynamic :exception, core::StackTrace* :stack_trace) {
-      :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+    on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
+      :async_completer.{asy::Completer::completeError}(exception, stack_trace);
     }
   :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
diff --git a/pkg/front_end/testcases/general/await.dart.strong.transformed.expect b/pkg/front_end/testcases/general/await.dart.strong.transformed.expect
index 8c66908..e8481b7 100644
--- a/pkg/front_end/testcases/general/await.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general/await.dart.strong.transformed.expect
@@ -23,8 +23,8 @@
       asy::_completeOnAsyncReturn(:async_completer, :return_value);
       return;
     }
-    on dynamic catch(dynamic :exception, core::StackTrace* :stack_trace) {
-      :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+    on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
+      :async_completer.{asy::Completer::completeError}(exception, stack_trace);
     }
   :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
diff --git a/pkg/front_end/testcases/general/await_complex.dart.outline.expect b/pkg/front_end/testcases/general/await_complex.dart.outline.expect
index 7d5cecc..b470953 100644
--- a/pkg/front_end/testcases/general/await_complex.dart.outline.expect
+++ b/pkg/front_end/testcases/general/await_complex.dart.outline.expect
@@ -22,6 +22,16 @@
     ;
   method foo(core::int* param) → core::int*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field core::int* globalVariable;
 static final field core::bool* assertStatementsEnabled;
diff --git a/pkg/front_end/testcases/general/await_complex.dart.strong.expect b/pkg/front_end/testcases/general/await_complex.dart.strong.expect
index a0b6fdd..4d830b1 100644
--- a/pkg/front_end/testcases/general/await_complex.dart.strong.expect
+++ b/pkg/front_end/testcases/general/await_complex.dart.strong.expect
@@ -25,6 +25,16 @@
   }
   method foo(core::int* param) → core::int*
     return param;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field core::int* globalVariable = 1;
 static final field core::bool* assertStatementsEnabled = (() → core::bool* {
@@ -46,54 +56,54 @@
 static method dummy() → dynamic
   return 1;
 static method staticMembers() → dynamic async {
-  core::num* a = self::C::staticField.{core::num::+}(await self::dummy() as{TypeError,ForDynamic} core::num*);
+  core::num* a = self::C::staticField.{core::num::+}(await self::dummy() as{TypeError,ForDynamic} core::num);
   self::expect(2, a);
-  core::num* f = (self::C::staticField = 1).{core::num::+}(await self::dummy() as{TypeError,ForDynamic} core::num*);
+  core::num* f = (self::C::staticField = 1).{core::num::+}(await self::dummy() as{TypeError,ForDynamic} core::num);
   self::expect(2, f);
-  core::num* b = self::C::staticGetter.{core::num::+}(await self::dummy() as{TypeError,ForDynamic} core::num*);
+  core::num* b = self::C::staticGetter.{core::num::+}(await self::dummy() as{TypeError,ForDynamic} core::num);
   self::expect(2, b);
-  core::num* c = (self::C::staticSetter = 1).{core::num::+}(await self::dummy() as{TypeError,ForDynamic} core::num*);
+  core::num* c = (self::C::staticSetter = 1).{core::num::+}(await self::dummy() as{TypeError,ForDynamic} core::num);
   self::expect(2, c);
-  core::num* d = self::C::staticFoo(2).{core::num::+}(await self::dummy() as{TypeError,ForDynamic} core::num*);
+  core::num* d = self::C::staticFoo(2).{core::num::+}(await self::dummy() as{TypeError,ForDynamic} core::num);
   self::expect(3, d);
-  core::num* e = self::C::staticField.{core::num::+}(self::C::staticGetter).{core::num::+}(self::C::staticSetter = 1).{core::num::+}(self::C::staticFoo(1)).{core::num::+}(await self::dummy() as{TypeError,ForDynamic} core::num*);
+  core::num* e = self::C::staticField.{core::num::+}(self::C::staticGetter).{core::num::+}(self::C::staticSetter = 1).{core::num::+}(self::C::staticFoo(1)).{core::num::+}(await self::dummy() as{TypeError,ForDynamic} core::num);
   self::expect(5, e);
 }
 static method topLevelMembers() → dynamic async {
-  core::num* a = self::globalVariable.{core::num::+}(await self::dummy() as{TypeError,ForDynamic} core::num*);
+  core::num* a = self::globalVariable.{core::num::+}(await self::dummy() as{TypeError,ForDynamic} core::num);
   self::expect(2, a);
-  core::num* b = self::topLevelGetter.{core::num::+}(await self::dummy() as{TypeError,ForDynamic} core::num*);
+  core::num* b = self::topLevelGetter.{core::num::+}(await self::dummy() as{TypeError,ForDynamic} core::num);
   self::expect(2, b);
-  core::num* c = (self::topLevelSetter = 1).{core::num::+}(await self::dummy() as{TypeError,ForDynamic} core::num*);
+  core::num* c = (self::topLevelSetter = 1).{core::num::+}(await self::dummy() as{TypeError,ForDynamic} core::num);
   self::expect(2, c);
-  core::num* d = self::topLevelFoo(1).{core::num::+}(await self::dummy() as{TypeError,ForDynamic} core::num*);
+  core::num* d = self::topLevelFoo(1).{core::num::+}(await self::dummy() as{TypeError,ForDynamic} core::num);
   self::expect(2, d);
-  core::num* e = self::globalVariable.{core::num::+}(self::topLevelGetter).{core::num::+}(self::topLevelSetter = 1).{core::num::+}(self::topLevelFoo(1)).{core::num::+}(await self::dummy() as{TypeError,ForDynamic} core::num*);
+  core::num* e = self::globalVariable.{core::num::+}(self::topLevelGetter).{core::num::+}(self::topLevelSetter = 1).{core::num::+}(self::topLevelFoo(1)).{core::num::+}(await self::dummy() as{TypeError,ForDynamic} core::num);
   self::expect(5, e);
 }
 static method instanceMembers() → dynamic async {
   self::C* inst = new self::C::•();
-  core::num* a = inst.{self::C::field}.{core::num::+}(await self::dummy() as{TypeError,ForDynamic} core::num*);
+  core::num* a = inst.{self::C::field}.{core::num::+}(await self::dummy() as{TypeError,ForDynamic} core::num);
   self::expect(2, a);
-  core::num* b = inst.{self::C::getter}.{core::num::+}(await self::dummy() as{TypeError,ForDynamic} core::num*);
+  core::num* b = inst.{self::C::getter}.{core::num::+}(await self::dummy() as{TypeError,ForDynamic} core::num);
   self::expect(2, b);
-  core::num* c = (inst.{self::C::setter} = 1).{core::num::+}(await self::dummy() as{TypeError,ForDynamic} core::num*);
+  core::num* c = (inst.{self::C::setter} = 1).{core::num::+}(await self::dummy() as{TypeError,ForDynamic} core::num);
   self::expect(2, c);
-  core::num* d = inst.{self::C::foo}(1).{core::num::+}(await self::dummy() as{TypeError,ForDynamic} core::num*);
+  core::num* d = inst.{self::C::foo}(1).{core::num::+}(await self::dummy() as{TypeError,ForDynamic} core::num);
   self::expect(2, d);
-  core::num* e = inst.{self::C::field}.{core::num::+}(inst.{self::C::getter}).{core::num::+}(inst.{self::C::setter} = 1).{core::num::+}(inst.{self::C::foo}(1)).{core::num::+}(await self::dummy() as{TypeError,ForDynamic} core::num*);
+  core::num* e = inst.{self::C::field}.{core::num::+}(inst.{self::C::getter}).{core::num::+}(inst.{self::C::setter} = 1).{core::num::+}(inst.{self::C::foo}(1)).{core::num::+}(await self::dummy() as{TypeError,ForDynamic} core::num);
   self::expect(5, e);
 }
 static method others() → dynamic async {
   core::String* a = "${self::globalVariable} ${await self::dummy()} ".{core::String::+}(await "someString");
   self::expect("1 1 someString", a);
   self::C* c = new self::C::•();
-  core::num* d = c.{self::C::field}.{core::num::+}(await self::dummy() as{TypeError,ForDynamic} core::num*);
+  core::num* d = c.{self::C::field}.{core::num::+}(await self::dummy() as{TypeError,ForDynamic} core::num);
   core::int* cnt = 2;
   core::List<core::int*>* b = <core::int*>[1, 2, 3];
   b.{core::List::[]=}(cnt, await self::dummy() as{TypeError,ForDynamic} core::int*);
   self::expect(1, b.{core::List::[]}(cnt));
-  core::num* e = b.{core::List::[]}(0).{core::num::+}(await self::dummy() as{TypeError,ForDynamic} core::num*);
+  core::num* e = b.{core::List::[]}(0).{core::num::+}(await self::dummy() as{TypeError,ForDynamic} core::num);
   self::expect(2, e);
 }
 static method conditionals() → dynamic async {
diff --git a/pkg/front_end/testcases/general/await_complex.dart.strong.transformed.expect b/pkg/front_end/testcases/general/await_complex.dart.strong.transformed.expect
index dfafacd..72a8cdc 100644
--- a/pkg/front_end/testcases/general/await_complex.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general/await_complex.dart.strong.transformed.expect
@@ -26,6 +26,16 @@
   }
   method foo(core::int* param) → core::int*
     return param;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field core::int* globalVariable = 1;
 static final field core::bool* assertStatementsEnabled = (() → core::bool* {
@@ -67,34 +77,34 @@
       {
         :async_temporary_0 = self::C::staticField;
         [yield] let dynamic #t1 = asy::_awaitHelper(self::dummy(), :async_op_then, :async_op_error, :async_op) in null;
-        core::num* a = _in::unsafeCast<core::int*>(:async_temporary_0).{core::num::+}(:result as{TypeError,ForDynamic} core::num*);
+        core::num* a = _in::unsafeCast<core::int*>(:async_temporary_0).{core::num::+}(:result as{TypeError,ForDynamic} core::num);
         self::expect(2, a);
         :async_temporary_1 = self::C::staticField = 1;
         [yield] let dynamic #t2 = asy::_awaitHelper(self::dummy(), :async_op_then, :async_op_error, :async_op) in null;
-        core::num* f = _in::unsafeCast<core::int*>(:async_temporary_1).{core::num::+}(:result as{TypeError,ForDynamic} core::num*);
+        core::num* f = _in::unsafeCast<core::int*>(:async_temporary_1).{core::num::+}(:result as{TypeError,ForDynamic} core::num);
         self::expect(2, f);
         :async_temporary_2 = self::C::staticGetter;
         [yield] let dynamic #t3 = asy::_awaitHelper(self::dummy(), :async_op_then, :async_op_error, :async_op) in null;
-        core::num* b = _in::unsafeCast<core::int*>(:async_temporary_2).{core::num::+}(:result as{TypeError,ForDynamic} core::num*);
+        core::num* b = _in::unsafeCast<core::int*>(:async_temporary_2).{core::num::+}(:result as{TypeError,ForDynamic} core::num);
         self::expect(2, b);
         :async_temporary_3 = self::C::staticSetter = 1;
         [yield] let dynamic #t4 = asy::_awaitHelper(self::dummy(), :async_op_then, :async_op_error, :async_op) in null;
-        core::num* c = _in::unsafeCast<core::int*>(:async_temporary_3).{core::num::+}(:result as{TypeError,ForDynamic} core::num*);
+        core::num* c = _in::unsafeCast<core::int*>(:async_temporary_3).{core::num::+}(:result as{TypeError,ForDynamic} core::num);
         self::expect(2, c);
         :async_temporary_4 = self::C::staticFoo(2);
         [yield] let dynamic #t5 = asy::_awaitHelper(self::dummy(), :async_op_then, :async_op_error, :async_op) in null;
-        core::num* d = _in::unsafeCast<core::int*>(:async_temporary_4).{core::num::+}(:result as{TypeError,ForDynamic} core::num*);
+        core::num* d = _in::unsafeCast<core::int*>(:async_temporary_4).{core::num::+}(:result as{TypeError,ForDynamic} core::num);
         self::expect(3, d);
         :async_temporary_5 = self::C::staticField.{core::num::+}(self::C::staticGetter).{core::num::+}(self::C::staticSetter = 1).{core::num::+}(self::C::staticFoo(1));
         [yield] let dynamic #t6 = asy::_awaitHelper(self::dummy(), :async_op_then, :async_op_error, :async_op) in null;
-        core::num* e = _in::unsafeCast<core::int*>(:async_temporary_5).{core::num::+}(:result as{TypeError,ForDynamic} core::num*);
+        core::num* e = _in::unsafeCast<core::int*>(:async_temporary_5).{core::num::+}(:result as{TypeError,ForDynamic} core::num);
         self::expect(5, e);
       }
       asy::_completeOnAsyncReturn(:async_completer, :return_value);
       return;
     }
-    on dynamic catch(dynamic :exception, core::StackTrace* :stack_trace) {
-      :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+    on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
+      :async_completer.{asy::Completer::completeError}(exception, stack_trace);
     }
   :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
@@ -122,30 +132,30 @@
       {
         :async_temporary_0 = self::globalVariable;
         [yield] let dynamic #t7 = asy::_awaitHelper(self::dummy(), :async_op_then, :async_op_error, :async_op) in null;
-        core::num* a = _in::unsafeCast<core::int*>(:async_temporary_0).{core::num::+}(:result as{TypeError,ForDynamic} core::num*);
+        core::num* a = _in::unsafeCast<core::int*>(:async_temporary_0).{core::num::+}(:result as{TypeError,ForDynamic} core::num);
         self::expect(2, a);
         :async_temporary_1 = self::topLevelGetter;
         [yield] let dynamic #t8 = asy::_awaitHelper(self::dummy(), :async_op_then, :async_op_error, :async_op) in null;
-        core::num* b = _in::unsafeCast<core::int*>(:async_temporary_1).{core::num::+}(:result as{TypeError,ForDynamic} core::num*);
+        core::num* b = _in::unsafeCast<core::int*>(:async_temporary_1).{core::num::+}(:result as{TypeError,ForDynamic} core::num);
         self::expect(2, b);
         :async_temporary_2 = self::topLevelSetter = 1;
         [yield] let dynamic #t9 = asy::_awaitHelper(self::dummy(), :async_op_then, :async_op_error, :async_op) in null;
-        core::num* c = _in::unsafeCast<core::int*>(:async_temporary_2).{core::num::+}(:result as{TypeError,ForDynamic} core::num*);
+        core::num* c = _in::unsafeCast<core::int*>(:async_temporary_2).{core::num::+}(:result as{TypeError,ForDynamic} core::num);
         self::expect(2, c);
         :async_temporary_3 = self::topLevelFoo(1);
         [yield] let dynamic #t10 = asy::_awaitHelper(self::dummy(), :async_op_then, :async_op_error, :async_op) in null;
-        core::num* d = _in::unsafeCast<core::int*>(:async_temporary_3).{core::num::+}(:result as{TypeError,ForDynamic} core::num*);
+        core::num* d = _in::unsafeCast<core::int*>(:async_temporary_3).{core::num::+}(:result as{TypeError,ForDynamic} core::num);
         self::expect(2, d);
         :async_temporary_4 = self::globalVariable.{core::num::+}(self::topLevelGetter).{core::num::+}(self::topLevelSetter = 1).{core::num::+}(self::topLevelFoo(1));
         [yield] let dynamic #t11 = asy::_awaitHelper(self::dummy(), :async_op_then, :async_op_error, :async_op) in null;
-        core::num* e = _in::unsafeCast<core::int*>(:async_temporary_4).{core::num::+}(:result as{TypeError,ForDynamic} core::num*);
+        core::num* e = _in::unsafeCast<core::int*>(:async_temporary_4).{core::num::+}(:result as{TypeError,ForDynamic} core::num);
         self::expect(5, e);
       }
       asy::_completeOnAsyncReturn(:async_completer, :return_value);
       return;
     }
-    on dynamic catch(dynamic :exception, core::StackTrace* :stack_trace) {
-      :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+    on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
+      :async_completer.{asy::Completer::completeError}(exception, stack_trace);
     }
   :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
@@ -174,30 +184,30 @@
         self::C* inst = new self::C::•();
         :async_temporary_0 = inst.{self::C::field};
         [yield] let dynamic #t12 = asy::_awaitHelper(self::dummy(), :async_op_then, :async_op_error, :async_op) in null;
-        core::num* a = _in::unsafeCast<core::int*>(:async_temporary_0).{core::num::+}(:result as{TypeError,ForDynamic} core::num*);
+        core::num* a = _in::unsafeCast<core::int*>(:async_temporary_0).{core::num::+}(:result as{TypeError,ForDynamic} core::num);
         self::expect(2, a);
         :async_temporary_1 = inst.{self::C::getter};
         [yield] let dynamic #t13 = asy::_awaitHelper(self::dummy(), :async_op_then, :async_op_error, :async_op) in null;
-        core::num* b = _in::unsafeCast<core::int*>(:async_temporary_1).{core::num::+}(:result as{TypeError,ForDynamic} core::num*);
+        core::num* b = _in::unsafeCast<core::int*>(:async_temporary_1).{core::num::+}(:result as{TypeError,ForDynamic} core::num);
         self::expect(2, b);
         :async_temporary_2 = inst.{self::C::setter} = 1;
         [yield] let dynamic #t14 = asy::_awaitHelper(self::dummy(), :async_op_then, :async_op_error, :async_op) in null;
-        core::num* c = _in::unsafeCast<core::int*>(:async_temporary_2).{core::num::+}(:result as{TypeError,ForDynamic} core::num*);
+        core::num* c = _in::unsafeCast<core::int*>(:async_temporary_2).{core::num::+}(:result as{TypeError,ForDynamic} core::num);
         self::expect(2, c);
         :async_temporary_3 = inst.{self::C::foo}(1);
         [yield] let dynamic #t15 = asy::_awaitHelper(self::dummy(), :async_op_then, :async_op_error, :async_op) in null;
-        core::num* d = _in::unsafeCast<core::int*>(:async_temporary_3).{core::num::+}(:result as{TypeError,ForDynamic} core::num*);
+        core::num* d = _in::unsafeCast<core::int*>(:async_temporary_3).{core::num::+}(:result as{TypeError,ForDynamic} core::num);
         self::expect(2, d);
         :async_temporary_4 = inst.{self::C::field}.{core::num::+}(inst.{self::C::getter}).{core::num::+}(inst.{self::C::setter} = 1).{core::num::+}(inst.{self::C::foo}(1));
         [yield] let dynamic #t16 = asy::_awaitHelper(self::dummy(), :async_op_then, :async_op_error, :async_op) in null;
-        core::num* e = _in::unsafeCast<core::int*>(:async_temporary_4).{core::num::+}(:result as{TypeError,ForDynamic} core::num*);
+        core::num* e = _in::unsafeCast<core::int*>(:async_temporary_4).{core::num::+}(:result as{TypeError,ForDynamic} core::num);
         self::expect(5, e);
       }
       asy::_completeOnAsyncReturn(:async_completer, :return_value);
       return;
     }
-    on dynamic catch(dynamic :exception, core::StackTrace* :stack_trace) {
-      :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+    on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
+      :async_completer.{asy::Completer::completeError}(exception, stack_trace);
     }
   :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
@@ -232,7 +242,7 @@
         self::C* c = new self::C::•();
         :async_temporary_1 = c.{self::C::field};
         [yield] let dynamic #t19 = asy::_awaitHelper(self::dummy(), :async_op_then, :async_op_error, :async_op) in null;
-        core::num* d = _in::unsafeCast<core::int*>(:async_temporary_1).{core::num::+}(:result as{TypeError,ForDynamic} core::num*);
+        core::num* d = _in::unsafeCast<core::int*>(:async_temporary_1).{core::num::+}(:result as{TypeError,ForDynamic} core::num);
         core::int* cnt = 2;
         core::List<core::int*>* b = <core::int*>[1, 2, 3];
         :async_temporary_3 = b;
@@ -242,14 +252,14 @@
         self::expect(1, b.{core::List::[]}(cnt));
         :async_temporary_4 = b.{core::List::[]}(0);
         [yield] let dynamic #t21 = asy::_awaitHelper(self::dummy(), :async_op_then, :async_op_error, :async_op) in null;
-        core::num* e = _in::unsafeCast<core::int*>(:async_temporary_4).{core::num::+}(:result as{TypeError,ForDynamic} core::num*);
+        core::num* e = _in::unsafeCast<core::int*>(:async_temporary_4).{core::num::+}(:result as{TypeError,ForDynamic} core::num);
         self::expect(2, e);
       }
       asy::_completeOnAsyncReturn(:async_completer, :return_value);
       return;
     }
-    on dynamic catch(dynamic :exception, core::StackTrace* :stack_trace) {
-      :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+    on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
+      :async_completer.{asy::Completer::completeError}(exception, stack_trace);
     }
   :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
@@ -320,8 +330,8 @@
       asy::_completeOnAsyncReturn(:async_completer, :return_value);
       return;
     }
-    on dynamic catch(dynamic :exception, core::StackTrace* :stack_trace) {
-      :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+    on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
+      :async_completer.{asy::Completer::completeError}(exception, stack_trace);
     }
   :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
@@ -393,8 +403,8 @@
       asy::_completeOnAsyncReturn(:async_completer, :return_value);
       return;
     }
-    on dynamic catch(dynamic :exception, core::StackTrace* :stack_trace) {
-      :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+    on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
+      :async_completer.{asy::Completer::completeError}(exception, stack_trace);
     }
   :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
@@ -555,8 +565,8 @@
                     asy::_completeOnAsyncReturn(:async_completer, :return_value);
                     return;
                   }
-                  on dynamic catch(dynamic :exception, core::StackTrace* :stack_trace) {
-                    :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+                  on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
+                    :async_completer.{asy::Completer::completeError}(exception, stack_trace);
                   }
                 :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
                 :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
@@ -583,8 +593,8 @@
                     asy::_completeOnAsyncReturn(:async_completer, :return_value);
                     return;
                   }
-                  on dynamic catch(dynamic :exception, core::StackTrace* :stack_trace) {
-                    :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+                  on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
+                    :async_completer.{asy::Completer::completeError}(exception, stack_trace);
                   }
                 :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
                 :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
@@ -616,8 +626,8 @@
                       }
                       return;
                     }
-                    on dynamic catch(dynamic :exception, core::StackTrace* :stack_trace) {
-                      :controller.{asy::_AsyncStarStreamController::addError}(:exception, :stack_trace);
+                    on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
+                      :controller.{asy::_AsyncStarStreamController::addError}(exception, stack_trace);
                     }
                   finally {
                     :controller.{asy::_AsyncStarStreamController::close}();
@@ -631,7 +641,7 @@
               }
               :async_temporary_0 = <dynamic>[42];
               [yield] let dynamic #t55 = asy::_awaitHelper(testStream1.call().{asy::Stream::toList}(), :async_op_then, :async_op_error, :async_op) in null;
-              self::expectList(_in::unsafeCast<core::List<dynamic>*>(:async_temporary_0), _in::unsafeCast<core::List<core::int*>*>(:result));
+              self::expectList(_in::unsafeCast<core::List<dynamic>*>(:async_temporary_0), _in::unsafeCast<core::List<core::int*>>(:result));
               function testStream2() → asy::Stream<core::int*>* /* originally async* */ {
                 asy::_AsyncStarStreamController<core::int*>* :controller;
                 dynamic :controller_stream;
@@ -655,8 +665,8 @@
                       }
                       return;
                     }
-                    on dynamic catch(dynamic :exception, core::StackTrace* :stack_trace) {
-                      :controller.{asy::_AsyncStarStreamController::addError}(:exception, :stack_trace);
+                    on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
+                      :controller.{asy::_AsyncStarStreamController::addError}(exception, stack_trace);
                     }
                   finally {
                     :controller.{asy::_AsyncStarStreamController::close}();
@@ -670,7 +680,7 @@
               }
               :async_temporary_1 = <dynamic>[42];
               [yield] let dynamic #t57 = asy::_awaitHelper(testStream2.call().{asy::Stream::toList}(), :async_op_then, :async_op_error, :async_op) in null;
-              self::expectList(_in::unsafeCast<core::List<dynamic>*>(:async_temporary_1), _in::unsafeCast<core::List<core::int*>*>(:result));
+              self::expectList(_in::unsafeCast<core::List<dynamic>*>(:async_temporary_1), _in::unsafeCast<core::List<core::int*>>(:result));
             }
           }
         }
@@ -678,8 +688,8 @@
       asy::_completeOnAsyncReturn(:async_completer, :return_value);
       return;
     }
-    on dynamic catch(dynamic :exception, core::StackTrace* :stack_trace) {
-      :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+    on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
+      :async_completer.{asy::Completer::completeError}(exception, stack_trace);
     }
   :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
@@ -705,8 +715,8 @@
       asy::_completeOnAsyncReturn(:async_completer, :return_value);
       return;
     }
-    on dynamic catch(dynamic :exception, core::StackTrace* :stack_trace) {
-      :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+    on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
+      :async_completer.{asy::Completer::completeError}(exception, stack_trace);
     }
   :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
@@ -738,8 +748,8 @@
         }
         return;
       }
-      on dynamic catch(dynamic :exception, core::StackTrace* :stack_trace) {
-        :controller.{asy::_AsyncStarStreamController::addError}(:exception, :stack_trace);
+      on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
+        :controller.{asy::_AsyncStarStreamController::addError}(exception, stack_trace);
       }
     finally {
       :controller.{asy::_AsyncStarStreamController::close}();
@@ -784,8 +794,8 @@
       asy::_completeOnAsyncReturn(:async_completer, :return_value);
       return;
     }
-    on dynamic catch(dynamic :exception, core::StackTrace* :stack_trace) {
-      :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+    on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
+      :async_completer.{asy::Completer::completeError}(exception, stack_trace);
     }
   :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
diff --git a/pkg/front_end/testcases/general/await_in_cascade.dart.outline.expect b/pkg/front_end/testcases/general/await_in_cascade.dart.outline.expect
index c59c111..1d8e5fd 100644
--- a/pkg/front_end/testcases/general/await_in_cascade.dart.outline.expect
+++ b/pkg/front_end/testcases/general/await_in_cascade.dart.outline.expect
@@ -12,6 +12,16 @@
     ;
   method _m() → asy::Future<core::int*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/general/await_in_cascade.dart.strong.expect b/pkg/front_end/testcases/general/await_in_cascade.dart.strong.expect
index 4db7c74..ee50ed9 100644
--- a/pkg/front_end/testcases/general/await_in_cascade.dart.strong.expect
+++ b/pkg/front_end/testcases/general/await_in_cascade.dart.strong.expect
@@ -13,6 +13,16 @@
     return let final core::List<core::int*>* #t1 = <core::int*>[] in let final void #t2 = #t1.{core::List::add}(await this.{self::C::_m}()) in #t1;
   method _m() → asy::Future<core::int*>* async 
     return 42;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic async {
   self::expect(42, (await new self::C::•().{self::C::m}()).{core::Iterable::first});
diff --git a/pkg/front_end/testcases/general/await_in_cascade.dart.strong.transformed.expect b/pkg/front_end/testcases/general/await_in_cascade.dart.strong.transformed.expect
index 72c6420..da55c50 100644
--- a/pkg/front_end/testcases/general/await_in_cascade.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general/await_in_cascade.dart.strong.transformed.expect
@@ -31,8 +31,8 @@
         asy::_completeOnAsyncReturn(:async_completer, :return_value);
         return;
       }
-      on dynamic catch(dynamic :exception, core::StackTrace* :stack_trace) {
-        :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+      on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
+        :async_completer.{asy::Completer::completeError}(exception, stack_trace);
       }
     :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
     :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
@@ -58,8 +58,8 @@
         asy::_completeOnAsyncReturn(:async_completer, :return_value);
         return;
       }
-      on dynamic catch(dynamic :exception, core::StackTrace* :stack_trace) {
-        :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+      on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
+        :async_completer.{asy::Completer::completeError}(exception, stack_trace);
       }
     :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
     :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
@@ -67,6 +67,16 @@
     :async_completer.{asy::_AsyncAwaitCompleter::start}(:async_op);
     return :async_completer.{asy::Completer::future};
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic /* originally async */ {
   final asy::_AsyncAwaitCompleter<dynamic>* :async_completer = new asy::_AsyncAwaitCompleter::•<dynamic>();
@@ -87,8 +97,8 @@
       asy::_completeOnAsyncReturn(:async_completer, :return_value);
       return;
     }
-    on dynamic catch(dynamic :exception, core::StackTrace* :stack_trace) {
-      :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+    on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
+      :async_completer.{asy::Completer::completeError}(exception, stack_trace);
     }
   :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
diff --git a/pkg/front_end/testcases/general/bad_setter_abstract.dart.outline.expect b/pkg/front_end/testcases/general/bad_setter_abstract.dart.outline.expect
index ce6d915..a973e04 100644
--- a/pkg/front_end/testcases/general/bad_setter_abstract.dart.outline.expect
+++ b/pkg/front_end/testcases/general/bad_setter_abstract.dart.outline.expect
@@ -22,6 +22,16 @@
     ;
   set d(dynamic #synthetic) → void
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class B extends core::Object {
   synthetic constructor •() → self::B*
@@ -30,6 +40,16 @@
     ;
   set d(dynamic #synthetic) → void
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static set b(dynamic #synthetic) → void
   ;
diff --git a/pkg/front_end/testcases/general/bad_setter_abstract.dart.strong.expect b/pkg/front_end/testcases/general/bad_setter_abstract.dart.strong.expect
index d027435..2d44c8e 100644
--- a/pkg/front_end/testcases/general/bad_setter_abstract.dart.strong.expect
+++ b/pkg/front_end/testcases/general/bad_setter_abstract.dart.strong.expect
@@ -63,6 +63,16 @@
       ;
     }
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class B extends core::Object {
   synthetic constructor •() → self::B*
@@ -84,6 +94,16 @@
       ;
     }
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static set b(dynamic #synthetic) → void {
   invalid-expression "pkg/front_end/testcases/general/bad_setter_abstract.dart:5:6: Error: A setter should have exactly one formal parameter.
diff --git a/pkg/front_end/testcases/general/bad_setter_abstract.dart.strong.transformed.expect b/pkg/front_end/testcases/general/bad_setter_abstract.dart.strong.transformed.expect
index d027435..2d44c8e 100644
--- a/pkg/front_end/testcases/general/bad_setter_abstract.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general/bad_setter_abstract.dart.strong.transformed.expect
@@ -63,6 +63,16 @@
       ;
     }
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class B extends core::Object {
   synthetic constructor •() → self::B*
@@ -84,6 +94,16 @@
       ;
     }
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static set b(dynamic #synthetic) → void {
   invalid-expression "pkg/front_end/testcases/general/bad_setter_abstract.dart:5:6: Error: A setter should have exactly one formal parameter.
diff --git a/pkg/front_end/testcases/general/bad_store.dart.outline.expect b/pkg/front_end/testcases/general/bad_store.dart.outline.expect
index fb4d3f9..8cb7506 100644
--- a/pkg/front_end/testcases/general/bad_store.dart.outline.expect
+++ b/pkg/front_end/testcases/general/bad_store.dart.outline.expect
@@ -6,6 +6,16 @@
   field dynamic field;
   synthetic constructor •() → self::Foo*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method identity(dynamic x) → dynamic
   ;
diff --git a/pkg/front_end/testcases/general/bad_store.dart.strong.expect b/pkg/front_end/testcases/general/bad_store.dart.strong.expect
index 2882852..83a70b5 100644
--- a/pkg/front_end/testcases/general/bad_store.dart.strong.expect
+++ b/pkg/front_end/testcases/general/bad_store.dart.strong.expect
@@ -7,6 +7,16 @@
   synthetic constructor •() → self::Foo*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method identity(dynamic x) → dynamic
   return x;
diff --git a/pkg/front_end/testcases/general/bad_store.dart.strong.transformed.expect b/pkg/front_end/testcases/general/bad_store.dart.strong.transformed.expect
index 2882852..83a70b5 100644
--- a/pkg/front_end/testcases/general/bad_store.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general/bad_store.dart.strong.transformed.expect
@@ -7,6 +7,16 @@
   synthetic constructor •() → self::Foo*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method identity(dynamic x) → dynamic
   return x;
diff --git a/pkg/front_end/testcases/general/bad_type_variable_uses_in_supertypes.dart.outline.expect b/pkg/front_end/testcases/general/bad_type_variable_uses_in_supertypes.dart.outline.expect
index a0e237c..c4b7eba 100644
--- a/pkg/front_end/testcases/general/bad_type_variable_uses_in_supertypes.dart.outline.expect
+++ b/pkg/front_end/testcases/general/bad_type_variable_uses_in_supertypes.dart.outline.expect
@@ -118,66 +118,216 @@
 class Empty extends core::Object {
   synthetic constructor •() → self::Empty*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class A<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::A<self::A::T*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::B<self::B::T*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Bc<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::Bc<self::Bc::T*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Bi<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::Bi<self::Bi::T*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::C<self::C::T*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Cc<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::Cc<self::Cc::T*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Ci<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::Ci<self::Ci::T*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D<T extends core::Object* = dynamic> extends core::Object /*hasConstConstructor*/  {
   const synthetic constructor •() → self::D<self::D::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Dc<T extends core::Object* = dynamic> extends core::Object /*hasConstConstructor*/  {
   const synthetic constructor •() → self::Dc<self::Dc::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Di<T extends core::Object* = dynamic> extends core::Object /*hasConstConstructor*/  {
   const synthetic constructor •() → self::Di<self::Di::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class E<T extends core::Object* = dynamic> = core::Object with self::Empty {
   synthetic constructor •() → self::E<self::E::T*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Ec<T extends core::Object* = dynamic> = core::Object with self::Empty {
   synthetic constructor •() → self::Ec<self::Ec::T*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Ei<T extends core::Object* = dynamic> = core::Object with self::Empty {
   synthetic constructor •() → self::Ei<self::Ei::T*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class _F&Object&A<T extends core::Object* = dynamic> extends core::Object /*isAnonymousMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::_F&Object&A<self::_F&Object&A::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class F<T extends core::Object* = dynamic> extends self::_F&Object&A<self::F::T*> {
   synthetic constructor •() → self::F<self::F::T*>*
@@ -187,6 +337,16 @@
   const synthetic constructor •() → self::_Fc&Object&A<self::_Fc&Object&A::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Fc<T extends core::Object* = dynamic> extends self::_Fc&Object&A<self::Fc::T*> {
   synthetic constructor •() → self::Fc<self::Fc::T*>*
@@ -196,6 +356,16 @@
   const synthetic constructor •() → self::_Fi&Object&A<self::_Fi&Object&A::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Fi<T extends core::Object* = dynamic> extends self::_Fi&Object&A<self::Fi::T*> {
   synthetic constructor •() → self::Fi<self::Fi::T*>*
@@ -204,6 +374,16 @@
 abstract class _G&A&Empty<T extends core::Object* = dynamic> = core::Object with self::Empty /*isAnonymousMixin*/  {
   synthetic constructor •() → self::_G&A&Empty<self::_G&A&Empty::T*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class G<T extends core::Object* = dynamic> extends self::_G&A&Empty<self::G::T*> {
   synthetic constructor •() → self::G<self::G::T*>*
@@ -212,6 +392,16 @@
 abstract class _Gc&A&Empty<T extends core::Object* = dynamic> = core::Object with self::Empty /*isAnonymousMixin*/  {
   synthetic constructor •() → self::_Gc&A&Empty<self::_Gc&A&Empty::T*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Gc<T extends core::Object* = dynamic> extends self::_Gc&A&Empty<self::Gc::T*> {
   synthetic constructor •() → self::Gc<self::Gc::T*>*
@@ -220,6 +410,16 @@
 abstract class _Gi&A&Empty<T extends core::Object* = dynamic> = core::Object with self::Empty /*isAnonymousMixin*/  {
   synthetic constructor •() → self::_Gi&A&Empty<self::_Gi&A&Empty::T*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Gi<T extends core::Object* = dynamic> extends self::_Gi&A&Empty<self::Gi::T*> {
   synthetic constructor •() → self::Gi<self::Gi::T*>*
@@ -244,6 +444,16 @@
 class Hii<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::Hii<self::Hii::T*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Iafc<T extends core::Object* = dynamic> extends self::A<self::A<((self::Iafc::T*) →* dynamic) →* dynamic>*> {
   synthetic constructor •() → self::Iafc<self::Iafc::T*>*
@@ -272,34 +482,114 @@
 class Jfff<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::Jfff<self::Jfff::T*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Jffc<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::Jffc<self::Jffc::T*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Jfcf<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::Jfcf<self::Jfcf::T*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Jfcc<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::Jfcc<self::Jfcc::T*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Jcff<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::Jcff<self::Jcff::T*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Jcfc<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::Jcfc<self::Jcfc::T*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Jccf<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::Jccf<self::Jccf::T*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Jccc<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::Jccc<self::Jccc::T*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/general/bad_type_variable_uses_in_supertypes.dart.strong.expect b/pkg/front_end/testcases/general/bad_type_variable_uses_in_supertypes.dart.strong.expect
index 8ec61d3..8414754 100644
--- a/pkg/front_end/testcases/general/bad_type_variable_uses_in_supertypes.dart.strong.expect
+++ b/pkg/front_end/testcases/general/bad_type_variable_uses_in_supertypes.dart.strong.expect
@@ -119,76 +119,226 @@
   synthetic constructor •() → self::Empty*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class A<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::A<self::A::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::B<self::B::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Bc<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::Bc<self::Bc::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Bi<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::Bi<self::Bi::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::C<self::C::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Cc<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::Cc<self::Cc::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Ci<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::Ci<self::Ci::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D<T extends core::Object* = dynamic> extends core::Object /*hasConstConstructor*/  {
   const synthetic constructor •() → self::D<self::D::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Dc<T extends core::Object* = dynamic> extends core::Object /*hasConstConstructor*/  {
   const synthetic constructor •() → self::Dc<self::Dc::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Di<T extends core::Object* = dynamic> extends core::Object /*hasConstConstructor*/  {
   const synthetic constructor •() → self::Di<self::Di::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class E<T extends core::Object* = dynamic> = core::Object with self::Empty {
   synthetic constructor •() → self::E<self::E::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Ec<T extends core::Object* = dynamic> = core::Object with self::Empty {
   synthetic constructor •() → self::Ec<self::Ec::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Ei<T extends core::Object* = dynamic> = core::Object with self::Empty {
   synthetic constructor •() → self::Ei<self::Ei::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class _F&Object&A<T extends core::Object* = dynamic> extends core::Object /*isAnonymousMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::_F&Object&A<self::_F&Object&A::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class F<T extends core::Object* = dynamic> extends self::_F&Object&A<self::F::T*> {
   synthetic constructor •() → self::F<self::F::T*>*
@@ -199,6 +349,16 @@
   const synthetic constructor •() → self::_Fc&Object&A<self::_Fc&Object&A::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Fc<T extends core::Object* = dynamic> extends self::_Fc&Object&A<self::Fc::T*> {
   synthetic constructor •() → self::Fc<self::Fc::T*>*
@@ -209,6 +369,16 @@
   const synthetic constructor •() → self::_Fi&Object&A<self::_Fi&Object&A::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Fi<T extends core::Object* = dynamic> extends self::_Fi&Object&A<self::Fi::T*> {
   synthetic constructor •() → self::Fi<self::Fi::T*>*
@@ -219,6 +389,16 @@
   synthetic constructor •() → self::_G&A&Empty<self::_G&A&Empty::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class G<T extends core::Object* = dynamic> extends self::_G&A&Empty<self::G::T*> {
   synthetic constructor •() → self::G<self::G::T*>*
@@ -229,6 +409,16 @@
   synthetic constructor •() → self::_Gc&A&Empty<self::_Gc&A&Empty::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Gc<T extends core::Object* = dynamic> extends self::_Gc&A&Empty<self::Gc::T*> {
   synthetic constructor •() → self::Gc<self::Gc::T*>*
@@ -239,6 +429,16 @@
   synthetic constructor •() → self::_Gi&A&Empty<self::_Gi&A&Empty::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Gi<T extends core::Object* = dynamic> extends self::_Gi&A&Empty<self::Gi::T*> {
   synthetic constructor •() → self::Gi<self::Gi::T*>*
@@ -269,6 +469,16 @@
   synthetic constructor •() → self::Hii<self::Hii::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Iafc<T extends core::Object* = dynamic> extends self::A<self::A<((self::Iafc::T*) →* dynamic) →* dynamic>*> {
   synthetic constructor •() → self::Iafc<self::Iafc::T*>*
@@ -304,40 +514,120 @@
   synthetic constructor •() → self::Jfff<self::Jfff::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Jffc<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::Jffc<self::Jffc::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Jfcf<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::Jfcf<self::Jfcf::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Jfcc<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::Jfcc<self::Jfcc::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Jcff<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::Jcff<self::Jcff::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Jcfc<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::Jcfc<self::Jcfc::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Jccf<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::Jccf<self::Jccf::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Jccc<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::Jccc<self::Jccc::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general/bad_type_variable_uses_in_supertypes.dart.strong.transformed.expect b/pkg/front_end/testcases/general/bad_type_variable_uses_in_supertypes.dart.strong.transformed.expect
index 397b6e06d..3d6cdbc 100644
--- a/pkg/front_end/testcases/general/bad_type_variable_uses_in_supertypes.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general/bad_type_variable_uses_in_supertypes.dart.strong.transformed.expect
@@ -119,76 +119,226 @@
   synthetic constructor •() → self::Empty*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class A<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::A<self::A::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::B<self::B::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Bc<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::Bc<self::Bc::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Bi<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::Bi<self::Bi::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::C<self::C::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Cc<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::Cc<self::Cc::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Ci<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::Ci<self::Ci::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D<T extends core::Object* = dynamic> extends core::Object /*hasConstConstructor*/  {
   const synthetic constructor •() → self::D<self::D::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Dc<T extends core::Object* = dynamic> extends core::Object /*hasConstConstructor*/  {
   const synthetic constructor •() → self::Dc<self::Dc::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Di<T extends core::Object* = dynamic> extends core::Object /*hasConstConstructor*/  {
   const synthetic constructor •() → self::Di<self::Di::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class E<T extends core::Object* = dynamic> extends core::Object implements self::Empty /*isEliminatedMixin*/  {
   synthetic constructor •() → self::E<self::E::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Ec<T extends core::Object* = dynamic> extends core::Object implements self::Empty /*isEliminatedMixin*/  {
   synthetic constructor •() → self::Ec<self::Ec::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Ei<T extends core::Object* = dynamic> extends core::Object implements self::Empty /*isEliminatedMixin*/  {
   synthetic constructor •() → self::Ei<self::Ei::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class _F&Object&A<T extends core::Object* = dynamic> extends core::Object /*isAnonymousMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::_F&Object&A<self::_F&Object&A::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class F<T extends core::Object* = dynamic> extends self::_F&Object&A<self::F::T*> {
   synthetic constructor •() → self::F<self::F::T*>*
@@ -199,6 +349,16 @@
   const synthetic constructor •() → self::_Fc&Object&A<self::_Fc&Object&A::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Fc<T extends core::Object* = dynamic> extends self::_Fc&Object&A<self::Fc::T*> {
   synthetic constructor •() → self::Fc<self::Fc::T*>*
@@ -209,6 +369,16 @@
   const synthetic constructor •() → self::_Fi&Object&A<self::_Fi&Object&A::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Fi<T extends core::Object* = dynamic> extends self::_Fi&Object&A<self::Fi::T*> {
   synthetic constructor •() → self::Fi<self::Fi::T*>*
@@ -219,6 +389,16 @@
   synthetic constructor •() → self::_G&A&Empty<self::_G&A&Empty::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class G<T extends core::Object* = dynamic> extends self::_G&A&Empty<self::G::T*> {
   synthetic constructor •() → self::G<self::G::T*>*
@@ -229,6 +409,16 @@
   synthetic constructor •() → self::_Gc&A&Empty<self::_Gc&A&Empty::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Gc<T extends core::Object* = dynamic> extends self::_Gc&A&Empty<self::Gc::T*> {
   synthetic constructor •() → self::Gc<self::Gc::T*>*
@@ -239,6 +429,16 @@
   synthetic constructor •() → self::_Gi&A&Empty<self::_Gi&A&Empty::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Gi<T extends core::Object* = dynamic> extends self::_Gi&A&Empty<self::Gi::T*> {
   synthetic constructor •() → self::Gi<self::Gi::T*>*
@@ -269,6 +469,16 @@
   synthetic constructor •() → self::Hii<self::Hii::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Iafc<T extends core::Object* = dynamic> extends self::A<self::A<((self::Iafc::T*) →* dynamic) →* dynamic>*> {
   synthetic constructor •() → self::Iafc<self::Iafc::T*>*
@@ -304,40 +514,120 @@
   synthetic constructor •() → self::Jfff<self::Jfff::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Jffc<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::Jffc<self::Jffc::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Jfcf<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::Jfcf<self::Jfcf::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Jfcc<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::Jfcc<self::Jfcc::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Jcff<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::Jcff<self::Jcff::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Jcfc<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::Jcfc<self::Jcfc::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Jccf<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::Jccf<self::Jccf::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Jccc<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::Jccc<self::Jccc::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general/bounds_check_depends_on_inference.dart.outline.expect b/pkg/front_end/testcases/general/bounds_check_depends_on_inference.dart.outline.expect
index 750b872..9f4647b 100644
--- a/pkg/front_end/testcases/general/bounds_check_depends_on_inference.dart.outline.expect
+++ b/pkg/front_end/testcases/general/bounds_check_depends_on_inference.dart.outline.expect
@@ -7,12 +7,32 @@
     ;
   method bar<generic-covariant-impl Y extends self::A::X* = self::A::X*>() → dynamic
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends core::Object {
   synthetic constructor •() → self::B*
     ;
   static method foo<Y extends core::Object* = core::Object*>() → self::A<self::B::foo::Y*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method baz() → dynamic
   ;
diff --git a/pkg/front_end/testcases/general/bounds_check_depends_on_inference.dart.strong.expect b/pkg/front_end/testcases/general/bounds_check_depends_on_inference.dart.strong.expect
index b534194..1f0308b 100644
--- a/pkg/front_end/testcases/general/bounds_check_depends_on_inference.dart.strong.expect
+++ b/pkg/front_end/testcases/general/bounds_check_depends_on_inference.dart.strong.expect
@@ -8,6 +8,16 @@
     ;
   method bar<generic-covariant-impl Y extends self::A::X* = self::A::X*>() → dynamic
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends core::Object {
   synthetic constructor •() → self::B*
@@ -15,6 +25,16 @@
     ;
   static method foo<Y extends core::Object* = core::Object*>() → self::A<self::B::foo::Y*>*
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method baz() → dynamic {
   self::B::foo<core::Object*>().{self::A::bar}<core::String*>();
diff --git a/pkg/front_end/testcases/general/bounds_check_depends_on_inference.dart.strong.transformed.expect b/pkg/front_end/testcases/general/bounds_check_depends_on_inference.dart.strong.transformed.expect
index b534194..1f0308b 100644
--- a/pkg/front_end/testcases/general/bounds_check_depends_on_inference.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general/bounds_check_depends_on_inference.dart.strong.transformed.expect
@@ -8,6 +8,16 @@
     ;
   method bar<generic-covariant-impl Y extends self::A::X* = self::A::X*>() → dynamic
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends core::Object {
   synthetic constructor •() → self::B*
@@ -15,6 +25,16 @@
     ;
   static method foo<Y extends core::Object* = core::Object*>() → self::A<self::B::foo::Y*>*
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method baz() → dynamic {
   self::B::foo<core::Object*>().{self::A::bar}<core::String*>();
diff --git a/pkg/front_end/testcases/general/bug30695.dart.outline.expect b/pkg/front_end/testcases/general/bug30695.dart.outline.expect
index 8ab1586..cee5c6d 100644
--- a/pkg/front_end/testcases/general/bug30695.dart.outline.expect
+++ b/pkg/front_end/testcases/general/bug30695.dart.outline.expect
@@ -16,6 +16,16 @@
   field core::int* foo;
   synthetic constructor •() → self::A*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A {
   synthetic constructor •() → self::B*
diff --git a/pkg/front_end/testcases/general/bug30695.dart.strong.expect b/pkg/front_end/testcases/general/bug30695.dart.strong.expect
index 6036c4c..09187e5 100644
--- a/pkg/front_end/testcases/general/bug30695.dart.strong.expect
+++ b/pkg/front_end/testcases/general/bug30695.dart.strong.expect
@@ -17,6 +17,16 @@
   synthetic constructor •() → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A {
   synthetic constructor •() → self::B*
diff --git a/pkg/front_end/testcases/general/bug32426.dart.outline.expect b/pkg/front_end/testcases/general/bug32426.dart.outline.expect
index 87f6d25..f98f561 100644
--- a/pkg/front_end/testcases/general/bug32426.dart.outline.expect
+++ b/pkg/front_end/testcases/general/bug32426.dart.outline.expect
@@ -6,12 +6,32 @@
   synthetic constructor •() → self::I*
     ;
   abstract method call() → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C extends core::Object implements self::I {
   synthetic constructor •() → self::C*
     ;
   method call([core::int* x]) → void
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/general/bug32426.dart.strong.expect b/pkg/front_end/testcases/general/bug32426.dart.strong.expect
index d97a705..ce31ea4 100644
--- a/pkg/front_end/testcases/general/bug32426.dart.strong.expect
+++ b/pkg/front_end/testcases/general/bug32426.dart.strong.expect
@@ -7,12 +7,32 @@
     : super core::Object::•()
     ;
   abstract method call() → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C extends core::Object implements self::I {
   synthetic constructor •() → self::C*
     : super core::Object::•()
     ;
   method call([core::int* x = #C1]) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   self::I* i = new self::C::•();
diff --git a/pkg/front_end/testcases/general/bug32426.dart.strong.transformed.expect b/pkg/front_end/testcases/general/bug32426.dart.strong.transformed.expect
index d97a705..ce31ea4 100644
--- a/pkg/front_end/testcases/general/bug32426.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general/bug32426.dart.strong.transformed.expect
@@ -7,12 +7,32 @@
     : super core::Object::•()
     ;
   abstract method call() → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C extends core::Object implements self::I {
   synthetic constructor •() → self::C*
     : super core::Object::•()
     ;
   method call([core::int* x = #C1]) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   self::I* i = new self::C::•();
diff --git a/pkg/front_end/testcases/general/bug32629.dart.outline.expect b/pkg/front_end/testcases/general/bug32629.dart.outline.expect
index 8c3ca39..90cc551 100644
--- a/pkg/front_end/testcases/general/bug32629.dart.outline.expect
+++ b/pkg/front_end/testcases/general/bug32629.dart.outline.expect
@@ -8,6 +8,16 @@
     ;
   method call(dynamic a, dynamic b) → dynamic
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method foo<S extends core::Object* = dynamic>((self::foo::S*, dynamic) →* self::foo::S* v) → void
   ;
diff --git a/pkg/front_end/testcases/general/bug32629.dart.strong.expect b/pkg/front_end/testcases/general/bug32629.dart.strong.expect
index f258183..19b45fd 100644
--- a/pkg/front_end/testcases/general/bug32629.dart.strong.expect
+++ b/pkg/front_end/testcases/general/bug32629.dart.strong.expect
@@ -17,6 +17,16 @@
   method call(dynamic a, dynamic b) → dynamic {
     return a;
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method foo<S extends core::Object* = dynamic>((self::foo::S*, dynamic) →* self::foo::S* v) → void {}
 static method test() → void {
diff --git a/pkg/front_end/testcases/general/bug32629.dart.strong.transformed.expect b/pkg/front_end/testcases/general/bug32629.dart.strong.transformed.expect
index f258183..19b45fd 100644
--- a/pkg/front_end/testcases/general/bug32629.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general/bug32629.dart.strong.transformed.expect
@@ -17,6 +17,16 @@
   method call(dynamic a, dynamic b) → dynamic {
     return a;
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method foo<S extends core::Object* = dynamic>((self::foo::S*, dynamic) →* self::foo::S* v) → void {}
 static method test() → void {
diff --git a/pkg/front_end/testcases/general/bug32866.dart.outline.expect b/pkg/front_end/testcases/general/bug32866.dart.outline.expect
index 6857612..2b46f66 100644
--- a/pkg/front_end/testcases/general/bug32866.dart.outline.expect
+++ b/pkg/front_end/testcases/general/bug32866.dart.outline.expect
@@ -6,11 +6,31 @@
   synthetic constructor •() → self::B*
     ;
   abstract get f() → core::String*;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class A extends core::Object implements self::B {
   final field core::String* f;
   constructor •(core::String* f) → self::A*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field self::A* a;
 static method main() → dynamic
diff --git a/pkg/front_end/testcases/general/bug32866.dart.strong.expect b/pkg/front_end/testcases/general/bug32866.dart.strong.expect
index 03cb6b9..c70022d 100644
--- a/pkg/front_end/testcases/general/bug32866.dart.strong.expect
+++ b/pkg/front_end/testcases/general/bug32866.dart.strong.expect
@@ -7,12 +7,32 @@
     : super core::Object::•()
     ;
   abstract get f() → core::String*;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class A extends core::Object implements self::B {
   final field core::String* f;
   constructor •(core::String* f) → self::A*
     : self::A::f = f, super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field self::A* a = new self::A::•("foo");
 static method main() → dynamic
diff --git a/pkg/front_end/testcases/general/bug32866.dart.strong.transformed.expect b/pkg/front_end/testcases/general/bug32866.dart.strong.transformed.expect
index 03cb6b9..c70022d 100644
--- a/pkg/front_end/testcases/general/bug32866.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general/bug32866.dart.strong.transformed.expect
@@ -7,12 +7,32 @@
     : super core::Object::•()
     ;
   abstract get f() → core::String*;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class A extends core::Object implements self::B {
   final field core::String* f;
   constructor •(core::String* f) → self::A*
     : self::A::f = f, super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field self::A* a = new self::A::•("foo");
 static method main() → dynamic
diff --git a/pkg/front_end/testcases/general/bug33099.dart.outline.expect b/pkg/front_end/testcases/general/bug33099.dart.outline.expect
index 48337e0..854ab83 100644
--- a/pkg/front_end/testcases/general/bug33099.dart.outline.expect
+++ b/pkg/front_end/testcases/general/bug33099.dart.outline.expect
@@ -9,6 +9,16 @@
   const constructor •() → self::_FailingTest*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class MyTest extends core::Object {
   synthetic constructor •() → self::MyTest*
@@ -16,11 +26,31 @@
   @self::failingTest
   method foo() → void
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class _MyTest2&Object&MyTest = core::Object with self::MyTest /*isAnonymousMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::_MyTest2&Object&MyTest*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class MyTest2 extends self::_MyTest2&Object&MyTest {
   synthetic constructor •() → self::MyTest2*
diff --git a/pkg/front_end/testcases/general/bug33099.dart.strong.expect b/pkg/front_end/testcases/general/bug33099.dart.strong.expect
index fa1959d..ef40ee1 100644
--- a/pkg/front_end/testcases/general/bug33099.dart.strong.expect
+++ b/pkg/front_end/testcases/general/bug33099.dart.strong.expect
@@ -9,6 +9,16 @@
   const constructor •() → self::_FailingTest*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class MyTest extends core::Object {
   synthetic constructor •() → self::MyTest*
@@ -16,11 +26,31 @@
     ;
   @#C1
   method foo() → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class _MyTest2&Object&MyTest = core::Object with self::MyTest /*isAnonymousMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::_MyTest2&Object&MyTest*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class MyTest2 extends self::_MyTest2&Object&MyTest {
   synthetic constructor •() → self::MyTest2*
diff --git a/pkg/front_end/testcases/general/bug33099.dart.strong.transformed.expect b/pkg/front_end/testcases/general/bug33099.dart.strong.transformed.expect
index 7c8800f..c847d06 100644
--- a/pkg/front_end/testcases/general/bug33099.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general/bug33099.dart.strong.transformed.expect
@@ -9,6 +9,16 @@
   const constructor •() → self::_FailingTest*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class MyTest extends core::Object {
   synthetic constructor •() → self::MyTest*
@@ -16,11 +26,31 @@
     ;
   @#C1
   method foo() → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class _MyTest2&Object&MyTest extends core::Object implements self::MyTest /*isAnonymousMixin,isEliminatedMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::_MyTest2&Object&MyTest*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
   @#C1
   method foo() → void {}
 }
diff --git a/pkg/front_end/testcases/general/bug33196.dart.strong.transformed.expect b/pkg/front_end/testcases/general/bug33196.dart.strong.transformed.expect
index 895484d..75b721f 100644
--- a/pkg/front_end/testcases/general/bug33196.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general/bug33196.dart.strong.transformed.expect
@@ -27,8 +27,8 @@
       asy::_completeOnAsyncReturn(:async_completer, :return_value);
       return;
     }
-    on dynamic catch(dynamic :exception, core::StackTrace* :stack_trace) {
-      :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+    on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
+      :async_completer.{asy::Completer::completeError}(exception, stack_trace);
     }
   :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
diff --git a/pkg/front_end/testcases/general/bug33206.dart.outline.expect b/pkg/front_end/testcases/general/bug33206.dart.outline.expect
index e3de83d..b2e9eba 100644
--- a/pkg/front_end/testcases/general/bug33206.dart.outline.expect
+++ b/pkg/front_end/testcases/general/bug33206.dart.outline.expect
@@ -12,12 +12,31 @@
     ;
   method toString() → core::String*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Y extends core::Object {
   synthetic constructor •() → self::Y*
     ;
   method f(dynamic _) → dynamic
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method f1() → asy::Future<core::List<core::Object*>*>*
   ;
diff --git a/pkg/front_end/testcases/general/bug33206.dart.strong.expect b/pkg/front_end/testcases/general/bug33206.dart.strong.expect
index 89809db..8653700 100644
--- a/pkg/front_end/testcases/general/bug33206.dart.strong.expect
+++ b/pkg/front_end/testcases/general/bug33206.dart.strong.expect
@@ -13,12 +13,31 @@
     ;
   method toString() → core::String*
     return "X(${this.{self::X::x}}, ${this.{self::X::y}})";
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Y extends core::Object {
   synthetic constructor •() → self::Y*
     : super core::Object::•()
     ;
   method f(dynamic _) → dynamic {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method f1() → asy::Future<core::List<core::Object*>*>* async {
   return <core::Object*>[1];
diff --git a/pkg/front_end/testcases/general/bug33206.dart.strong.transformed.expect b/pkg/front_end/testcases/general/bug33206.dart.strong.transformed.expect
index fa92a38..dfedd80 100644
--- a/pkg/front_end/testcases/general/bug33206.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general/bug33206.dart.strong.transformed.expect
@@ -14,12 +14,31 @@
     ;
   method toString() → core::String*
     return "X(${this.{self::X::x}}, ${this.{self::X::y}})";
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Y extends core::Object {
   synthetic constructor •() → self::Y*
     : super core::Object::•()
     ;
   method f(dynamic _) → dynamic {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method f1() → asy::Future<core::List<core::Object*>*>* /* originally async */ {
   final asy::_AsyncAwaitCompleter<core::List<core::Object*>*>* :async_completer = new asy::_AsyncAwaitCompleter::•<core::List<core::Object*>*>();
@@ -39,8 +58,8 @@
       asy::_completeOnAsyncReturn(:async_completer, :return_value);
       return;
     }
-    on dynamic catch(dynamic :exception, core::StackTrace* :stack_trace) {
-      :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+    on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
+      :async_completer.{asy::Completer::completeError}(exception, stack_trace);
     }
   :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
@@ -68,8 +87,8 @@
       asy::_completeOnAsyncReturn(:async_completer, :return_value);
       return;
     }
-    on dynamic catch(dynamic :exception, core::StackTrace* :stack_trace) {
-      :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+    on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
+      :async_completer.{asy::Completer::completeError}(exception, stack_trace);
     }
   :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
@@ -101,8 +120,8 @@
       asy::_completeOnAsyncReturn(:async_completer, :return_value);
       return;
     }
-    on dynamic catch(dynamic :exception, core::StackTrace* :stack_trace) {
-      :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+    on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
+      :async_completer.{asy::Completer::completeError}(exception, stack_trace);
     }
   :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
@@ -129,8 +148,8 @@
       asy::_completeOnAsyncReturn(:async_completer, :return_value);
       return;
     }
-    on dynamic catch(dynamic :exception, core::StackTrace* :stack_trace) {
-      :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+    on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
+      :async_completer.{asy::Completer::completeError}(exception, stack_trace);
     }
   :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
diff --git a/pkg/front_end/testcases/general/bug33298.dart.outline.expect b/pkg/front_end/testcases/general/bug33298.dart.outline.expect
index 751cd8d..936d7a1 100644
--- a/pkg/front_end/testcases/general/bug33298.dart.outline.expect
+++ b/pkg/front_end/testcases/general/bug33298.dart.outline.expect
@@ -7,18 +7,48 @@
     ;
   method call(core::String* s) → core::String*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::B<self::B::T*>*
     ;
   method call(generic-covariant-impl self::B::T* t) → self::B::T*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C extends core::Object {
   synthetic constructor •() → self::C*
     ;
   method call<T extends core::Object* = dynamic>(self::C::call::T* t) → self::C::call::T*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method test() → dynamic
   ;
diff --git a/pkg/front_end/testcases/general/bug33298.dart.strong.expect b/pkg/front_end/testcases/general/bug33298.dart.strong.expect
index 9f48c8a..e34cd38 100644
--- a/pkg/front_end/testcases/general/bug33298.dart.strong.expect
+++ b/pkg/front_end/testcases/general/bug33298.dart.strong.expect
@@ -15,6 +15,16 @@
     ;
   method call(core::String* s) → core::String*
     return "${s}${s}";
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::B<self::B::T*>*
@@ -22,6 +32,16 @@
     ;
   method call(generic-covariant-impl self::B::T* t) → self::B::T*
     return t;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C extends core::Object {
   synthetic constructor •() → self::C*
@@ -29,6 +49,16 @@
     ;
   method call<T extends core::Object* = dynamic>(self::C::call::T* t) → self::C::call::T*
     return t;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method test() → dynamic {
   self::A* a = new self::A::•();
@@ -41,6 +71,6 @@
   core::List<core::String*>* list5 = <core::String*>["a", "b", "c"].{core::Iterable::map}<core::String*>(c.{self::C::call}<core::String*>).{core::Iterable::toList}();
   core::List<core::String*>* list6 = <core::String*>["a", "b", "c"].{core::Iterable::map}<dynamic>(let final<BottomType> #t3 = invalid-expression "pkg/front_end/testcases/general/bug33298.dart:28:44: Error: The argument type 'T Function<T>(T)' can't be assigned to the parameter type 'dynamic Function(String)'.
   List<String> list6 = ['a', 'b', 'c'].map(c).toList();
-                                           ^" in (let final self::C* #t4 = c in #t4.==(null) ?{<T extends core::Object* = dynamic>(T*) →* T*} null : #t4.{self::C::call}) as{TypeError} (core::String*) →* dynamic).{core::Iterable::toList}() as{TypeError} core::List<core::String*>*;
+                                           ^" in (let final self::C* #t4 = c in #t4.==(null) ?{<T extends core::Object* = dynamic>(T*) →* T*} null : #t4.{self::C::call}) as{TypeError} (core::String*) → dynamic).{core::Iterable::toList}() as{TypeError} core::List<core::String*>*;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general/bug33298.dart.strong.transformed.expect b/pkg/front_end/testcases/general/bug33298.dart.strong.transformed.expect
index 9f48c8a..e34cd38 100644
--- a/pkg/front_end/testcases/general/bug33298.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general/bug33298.dart.strong.transformed.expect
@@ -15,6 +15,16 @@
     ;
   method call(core::String* s) → core::String*
     return "${s}${s}";
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::B<self::B::T*>*
@@ -22,6 +32,16 @@
     ;
   method call(generic-covariant-impl self::B::T* t) → self::B::T*
     return t;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C extends core::Object {
   synthetic constructor •() → self::C*
@@ -29,6 +49,16 @@
     ;
   method call<T extends core::Object* = dynamic>(self::C::call::T* t) → self::C::call::T*
     return t;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method test() → dynamic {
   self::A* a = new self::A::•();
@@ -41,6 +71,6 @@
   core::List<core::String*>* list5 = <core::String*>["a", "b", "c"].{core::Iterable::map}<core::String*>(c.{self::C::call}<core::String*>).{core::Iterable::toList}();
   core::List<core::String*>* list6 = <core::String*>["a", "b", "c"].{core::Iterable::map}<dynamic>(let final<BottomType> #t3 = invalid-expression "pkg/front_end/testcases/general/bug33298.dart:28:44: Error: The argument type 'T Function<T>(T)' can't be assigned to the parameter type 'dynamic Function(String)'.
   List<String> list6 = ['a', 'b', 'c'].map(c).toList();
-                                           ^" in (let final self::C* #t4 = c in #t4.==(null) ?{<T extends core::Object* = dynamic>(T*) →* T*} null : #t4.{self::C::call}) as{TypeError} (core::String*) →* dynamic).{core::Iterable::toList}() as{TypeError} core::List<core::String*>*;
+                                           ^" in (let final self::C* #t4 = c in #t4.==(null) ?{<T extends core::Object* = dynamic>(T*) →* T*} null : #t4.{self::C::call}) as{TypeError} (core::String*) → dynamic).{core::Iterable::toList}() as{TypeError} core::List<core::String*>*;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general/bug34511.dart.outline.expect b/pkg/front_end/testcases/general/bug34511.dart.outline.expect
index 678e133..7cd48e7 100644
--- a/pkg/front_end/testcases/general/bug34511.dart.outline.expect
+++ b/pkg/front_end/testcases/general/bug34511.dart.outline.expect
@@ -5,11 +5,31 @@
 class A<X extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::A<self::A::X*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class _B&Object&A<Z extends core::Object* = dynamic> = core::Object with self::A<() →* self::_B&Object&A::Z*> /*isAnonymousMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::_B&Object&A<self::_B&Object&A::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B<Z extends core::Object* = dynamic> extends self::_B&Object&A<self::B::Z*> {
   synthetic constructor •() → self::B<self::B::Z*>*
diff --git a/pkg/front_end/testcases/general/bug34511.dart.strong.expect b/pkg/front_end/testcases/general/bug34511.dart.strong.expect
index 5e3f196..23fa2c2 100644
--- a/pkg/front_end/testcases/general/bug34511.dart.strong.expect
+++ b/pkg/front_end/testcases/general/bug34511.dart.strong.expect
@@ -6,11 +6,31 @@
   synthetic constructor •() → self::A<self::A::X*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class _B&Object&A<Z extends core::Object* = dynamic> = core::Object with self::A<() →* self::_B&Object&A::Z*> /*isAnonymousMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::_B&Object&A<self::_B&Object&A::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B<Z extends core::Object* = dynamic> extends self::_B&Object&A<self::B::Z*> {
   synthetic constructor •() → self::B<self::B::Z*>*
diff --git a/pkg/front_end/testcases/general/bug34511.dart.strong.transformed.expect b/pkg/front_end/testcases/general/bug34511.dart.strong.transformed.expect
index 8fb87ff..7ad4cf3 100644
--- a/pkg/front_end/testcases/general/bug34511.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general/bug34511.dart.strong.transformed.expect
@@ -6,11 +6,31 @@
   synthetic constructor •() → self::A<self::A::X*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class _B&Object&A<Z extends core::Object* = dynamic> extends core::Object implements self::A<() →* self::_B&Object&A::Z*> /*isAnonymousMixin,isEliminatedMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::_B&Object&A<self::_B&Object&A::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B<Z extends core::Object* = dynamic> extends self::_B&Object&A<self::B::Z*> {
   synthetic constructor •() → self::B<self::B::Z*>*
diff --git a/pkg/front_end/testcases/general/bug35470.dart.outline.expect b/pkg/front_end/testcases/general/bug35470.dart.outline.expect
index c18a369..457def3 100644
--- a/pkg/front_end/testcases/general/bug35470.dart.outline.expect
+++ b/pkg/front_end/testcases/general/bug35470.dart.outline.expect
@@ -7,6 +7,16 @@
     ;
   method foo<generic-covariant-impl Y extends self::A::X* = self::A::X*>() → dynamic
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A<dynamic> {
   synthetic constructor •() → self::B*
diff --git a/pkg/front_end/testcases/general/bug35470.dart.strong.expect b/pkg/front_end/testcases/general/bug35470.dart.strong.expect
index dd00a9d..6f7c9bb 100644
--- a/pkg/front_end/testcases/general/bug35470.dart.strong.expect
+++ b/pkg/front_end/testcases/general/bug35470.dart.strong.expect
@@ -7,6 +7,16 @@
     : super core::Object::•()
     ;
   method foo<generic-covariant-impl Y extends self::A::X* = self::A::X*>() → dynamic {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A<dynamic> {
   synthetic constructor •() → self::B*
diff --git a/pkg/front_end/testcases/general/bug35470.dart.strong.transformed.expect b/pkg/front_end/testcases/general/bug35470.dart.strong.transformed.expect
index dd00a9d..6f7c9bb 100644
--- a/pkg/front_end/testcases/general/bug35470.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general/bug35470.dart.strong.transformed.expect
@@ -7,6 +7,16 @@
     : super core::Object::•()
     ;
   method foo<generic-covariant-impl Y extends self::A::X* = self::A::X*>() → dynamic {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A<dynamic> {
   synthetic constructor •() → self::B*
diff --git a/pkg/front_end/testcases/general/bug37476.dart.outline.expect b/pkg/front_end/testcases/general/bug37476.dart.outline.expect
index 50be2c0..bce42c7 100644
--- a/pkg/front_end/testcases/general/bug37476.dart.outline.expect
+++ b/pkg/front_end/testcases/general/bug37476.dart.outline.expect
@@ -7,12 +7,32 @@
     ;
   method foo() → <S extends self::A::T* = dynamic>(S*) →* void
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B<T extends core::num* = core::num*> extends core::Object {
   synthetic constructor •() → self::B<self::B::T*>*
     ;
   method foo() → (self::B::T*) →* void
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field self::A<core::num*>* a;
 static field self::B<core::num*>* b;
diff --git a/pkg/front_end/testcases/general/bug37476.dart.strong.expect b/pkg/front_end/testcases/general/bug37476.dart.strong.expect
index 657464a..c3ee6c0 100644
--- a/pkg/front_end/testcases/general/bug37476.dart.strong.expect
+++ b/pkg/front_end/testcases/general/bug37476.dart.strong.expect
@@ -10,6 +10,16 @@
     core::print("foo: T = ${self::A::T*}");
     return <S extends self::A::T* = self::A::T*>(S* a) → core::Null? {};
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B<T extends core::num* = core::num*> extends core::Object {
   synthetic constructor •() → self::B<self::B::T*>*
@@ -19,6 +29,16 @@
     core::print("foo: T = ${self::B::T*}");
     return (self::B::T* a) → core::Null? {};
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field self::A<core::num*>* a = new self::A::•<core::int*>();
 static field self::B<core::num*>* b = new self::B::•<core::int*>();
diff --git a/pkg/front_end/testcases/general/bug37476.dart.strong.transformed.expect b/pkg/front_end/testcases/general/bug37476.dart.strong.transformed.expect
index 657464a..c3ee6c0 100644
--- a/pkg/front_end/testcases/general/bug37476.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general/bug37476.dart.strong.transformed.expect
@@ -10,6 +10,16 @@
     core::print("foo: T = ${self::A::T*}");
     return <S extends self::A::T* = self::A::T*>(S* a) → core::Null? {};
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B<T extends core::num* = core::num*> extends core::Object {
   synthetic constructor •() → self::B<self::B::T*>*
@@ -19,6 +29,16 @@
     core::print("foo: T = ${self::B::T*}");
     return (self::B::T* a) → core::Null? {};
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field self::A<core::num*>* a = new self::A::•<core::int*>();
 static field self::B<core::num*>* b = new self::B::•<core::int*>();
diff --git a/pkg/front_end/testcases/general/call.dart.outline.expect b/pkg/front_end/testcases/general/call.dart.outline.expect
index 93fbf2a..013f8f5 100644
--- a/pkg/front_end/testcases/general/call.dart.outline.expect
+++ b/pkg/front_end/testcases/general/call.dart.outline.expect
@@ -7,12 +7,32 @@
     ;
   method call(dynamic x) → dynamic
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class CallableGetter extends core::Object {
   synthetic constructor •() → self::CallableGetter*
     ;
   get call() → dynamic
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field (dynamic) →* dynamic closure;
 static field dynamic int1;
diff --git a/pkg/front_end/testcases/general/call.dart.strong.expect b/pkg/front_end/testcases/general/call.dart.strong.expect
index 9bbc04c..6ecd4d7 100644
--- a/pkg/front_end/testcases/general/call.dart.strong.expect
+++ b/pkg/front_end/testcases/general/call.dart.strong.expect
@@ -100,6 +100,16 @@
   method call(dynamic x) → dynamic {
     return "string";
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class CallableGetter extends core::Object {
   synthetic constructor •() → self::CallableGetter*
@@ -107,6 +117,16 @@
     ;
   get call() → dynamic
     return new self::Callable::•();
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field (dynamic) →* dynamic closure = (dynamic x) → dynamic => x;
 static field dynamic int1 = self::closure.call(1);
diff --git a/pkg/front_end/testcases/general/callable_type_variable.dart b/pkg/front_end/testcases/general/callable_type_variable.dart
new file mode 100644
index 0000000..3fda2e4
--- /dev/null
+++ b/pkg/front_end/testcases/general/callable_type_variable.dart
@@ -0,0 +1,33 @@
+// Copyright (c) 2020, the Dart project authors.  Please see the AUTHORS file
+// 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.
+
+class Class1<T extends Function> {
+  T field;
+
+  Class1(this.field);
+
+  method() {
+    var v1 = field(); // ok
+    var v2 = field(0); // ok
+    var v3 = field.call; // ok
+    var v4 = field.call(); // ok
+    var v5 = field.call(0); // ok
+  }
+}
+
+class Class2<T extends String Function(int)> {
+  T field;
+
+  Class2(this.field);
+
+  method() {
+    var v1 = field(); // error
+    var v2 = field(0); // ok
+    var v3 = field.call; // ok
+    var v4 = field.call(); // error
+    var v5 = field.call(0); // ok
+  }
+}
+
+main() {}
diff --git a/pkg/front_end/testcases/general/callable_type_variable.dart.outline.expect b/pkg/front_end/testcases/general/callable_type_variable.dart.outline.expect
new file mode 100644
index 0000000..91491d8
--- /dev/null
+++ b/pkg/front_end/testcases/general/callable_type_variable.dart.outline.expect
@@ -0,0 +1,40 @@
+library;
+import self as self;
+import "dart:core" as core;
+
+class Class1<T extends core::Function* = core::Function*> extends core::Object {
+  generic-covariant-impl field self::Class1::T* field;
+  constructor •(self::Class1::T* field) → self::Class1<self::Class1::T*>*
+    ;
+  method method() → dynamic
+    ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
+}
+class Class2<T extends (core::int*) →* core::String* = (core::int*) →* core::String*> extends core::Object {
+  generic-covariant-impl field self::Class2::T* field;
+  constructor •(self::Class2::T* field) → self::Class2<self::Class2::T*>*
+    ;
+  method method() → dynamic
+    ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
+}
+static method main() → dynamic
+  ;
diff --git a/pkg/front_end/testcases/general/callable_type_variable.dart.strong.expect b/pkg/front_end/testcases/general/callable_type_variable.dart.strong.expect
new file mode 100644
index 0000000..eac8264
--- /dev/null
+++ b/pkg/front_end/testcases/general/callable_type_variable.dart.strong.expect
@@ -0,0 +1,66 @@
+library;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/general/callable_type_variable.dart:25:19: Error: Too few positional arguments: 1 required, 0 given.
+//     var v1 = field(); // error
+//                   ^
+//
+// pkg/front_end/testcases/general/callable_type_variable.dart:28:24: Error: Too few positional arguments: 1 required, 0 given.
+//     var v4 = field.call(); // error
+//                        ^
+//
+import self as self;
+import "dart:core" as core;
+
+class Class1<T extends core::Function* = core::Function*> extends core::Object {
+  generic-covariant-impl field self::Class1::T* field;
+  constructor •(self::Class1::T* field) → self::Class1<self::Class1::T*>*
+    : self::Class1::field = field, super core::Object::•()
+    ;
+  method method() → dynamic {
+    dynamic v1 = this.{self::Class1::field}.call();
+    dynamic v2 = let final core::int* #t1 = 0 in this.{self::Class1::field}.call(#t1);
+    self::Class1::T* v3 = this.{self::Class1::field}.call;
+    dynamic v4 = this.{self::Class1::field}.call();
+    dynamic v5 = this.{self::Class1::field}.call(0);
+  }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
+}
+class Class2<T extends (core::int*) →* core::String* = (core::int*) →* core::String*> extends core::Object {
+  generic-covariant-impl field self::Class2::T* field;
+  constructor •(self::Class2::T* field) → self::Class2<self::Class2::T*>*
+    : self::Class2::field = field, super core::Object::•()
+    ;
+  method method() → dynamic {
+    invalid-type v1 = let final<BottomType> #t2 = invalid-expression "pkg/front_end/testcases/general/callable_type_variable.dart:25:19: Error: Too few positional arguments: 1 required, 0 given.
+    var v1 = field(); // error
+                  ^" in this.{self::Class2::field}.call();
+    core::String* v2 = let final core::int* #t3 = 0 in this.{self::Class2::field}.call(#t3);
+    self::Class2::T* v3 = this.{self::Class2::field}.call;
+    invalid-type v4 = let final<BottomType> #t4 = invalid-expression "pkg/front_end/testcases/general/callable_type_variable.dart:28:24: Error: Too few positional arguments: 1 required, 0 given.
+    var v4 = field.call(); // error
+                       ^" in this.{self::Class2::field}.call();
+    core::String* v5 = this.{self::Class2::field}.call(0);
+  }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
+}
+static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general/candidate_found.dart.outline.expect b/pkg/front_end/testcases/general/candidate_found.dart.outline.expect
index 5378db0..7d0338f 100644
--- a/pkg/front_end/testcases/general/candidate_found.dart.outline.expect
+++ b/pkg/front_end/testcases/general/candidate_found.dart.outline.expect
@@ -11,6 +11,16 @@
     ;
   static method staticMethod(core::int* x) → void
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method test() → dynamic
   ;
diff --git a/pkg/front_end/testcases/general/candidate_found.dart.strong.expect b/pkg/front_end/testcases/general/candidate_found.dart.strong.expect
index 978eca5..72363b1 100644
--- a/pkg/front_end/testcases/general/candidate_found.dart.strong.expect
+++ b/pkg/front_end/testcases/general/candidate_found.dart.strong.expect
@@ -51,6 +51,16 @@
     : super core::Object::•() {}
   method method(core::int* x) → void {}
   static method staticMethod(core::int* x) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method test() → dynamic {
   invalid-expression "pkg/front_end/testcases/general/candidate_found.dart:16:11: Error: Too few positional arguments: 1 required, 0 given.
diff --git a/pkg/front_end/testcases/general/check_deferred_allocation.dart.outline.expect b/pkg/front_end/testcases/general/check_deferred_allocation.dart.outline.expect
index 37e88f3..bb7f296 100644
--- a/pkg/front_end/testcases/general/check_deferred_allocation.dart.outline.expect
+++ b/pkg/front_end/testcases/general/check_deferred_allocation.dart.outline.expect
@@ -18,6 +18,16 @@
     ;
   static method m() → core::int*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field core::int* x;
 static method m(dynamic x) → dynamic
diff --git a/pkg/front_end/testcases/general/check_deferred_allocation.dart.strong.expect b/pkg/front_end/testcases/general/check_deferred_allocation.dart.strong.expect
index c938f4c..1623b38 100644
--- a/pkg/front_end/testcases/general/check_deferred_allocation.dart.strong.expect
+++ b/pkg/front_end/testcases/general/check_deferred_allocation.dart.strong.expect
@@ -21,6 +21,16 @@
     ;
   static method m() → core::int*
     return 2;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field core::int* x = 0;
 static method m(dynamic x) → dynamic
diff --git a/pkg/front_end/testcases/general/check_deferred_allocation.dart.strong.transformed.expect b/pkg/front_end/testcases/general/check_deferred_allocation.dart.strong.transformed.expect
index c29f5c2..c231f36 100644
--- a/pkg/front_end/testcases/general/check_deferred_allocation.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general/check_deferred_allocation.dart.strong.transformed.expect
@@ -21,6 +21,16 @@
     ;
   static method m() → core::int*
     return 2;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field core::int* x = 0;
 static method m(dynamic x) → dynamic
diff --git a/pkg/front_end/testcases/general/check_deferred_as_check.dart.outline.expect b/pkg/front_end/testcases/general/check_deferred_as_check.dart.outline.expect
index efd56f1..0bd20d3 100644
--- a/pkg/front_end/testcases/general/check_deferred_as_check.dart.outline.expect
+++ b/pkg/front_end/testcases/general/check_deferred_as_check.dart.outline.expect
@@ -18,6 +18,16 @@
     ;
   static method m() → core::int*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field core::int* x;
 static method m(dynamic x) → dynamic
diff --git a/pkg/front_end/testcases/general/check_deferred_as_check.dart.strong.expect b/pkg/front_end/testcases/general/check_deferred_as_check.dart.strong.expect
index c5c5b9a..bd535aa 100644
--- a/pkg/front_end/testcases/general/check_deferred_as_check.dart.strong.expect
+++ b/pkg/front_end/testcases/general/check_deferred_as_check.dart.strong.expect
@@ -28,6 +28,16 @@
     ;
   static method m() → core::int*
     return 2;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field core::int* x = 0;
 static method m(dynamic x) → dynamic
diff --git a/pkg/front_end/testcases/general/check_deferred_as_check.dart.strong.transformed.expect b/pkg/front_end/testcases/general/check_deferred_as_check.dart.strong.transformed.expect
index c5c5b9a..bd535aa 100644
--- a/pkg/front_end/testcases/general/check_deferred_as_check.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general/check_deferred_as_check.dart.strong.transformed.expect
@@ -28,6 +28,16 @@
     ;
   static method m() → core::int*
     return 2;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field core::int* x = 0;
 static method m(dynamic x) → dynamic
diff --git a/pkg/front_end/testcases/general/check_deferred_before_args.dart.outline.expect b/pkg/front_end/testcases/general/check_deferred_before_args.dart.outline.expect
index 9871382..fd7e375 100644
--- a/pkg/front_end/testcases/general/check_deferred_before_args.dart.outline.expect
+++ b/pkg/front_end/testcases/general/check_deferred_before_args.dart.outline.expect
@@ -20,6 +20,16 @@
     ;
   static method m() → core::int*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field core::int* x;
 static method m(dynamic x) → dynamic
diff --git a/pkg/front_end/testcases/general/check_deferred_before_args.dart.strong.expect b/pkg/front_end/testcases/general/check_deferred_before_args.dart.strong.expect
index 5c59c15..8717020 100644
--- a/pkg/front_end/testcases/general/check_deferred_before_args.dart.strong.expect
+++ b/pkg/front_end/testcases/general/check_deferred_before_args.dart.strong.expect
@@ -24,6 +24,16 @@
     ;
   static method m() → core::int*
     return 2;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field core::int* x = 0;
 static method m(dynamic x) → dynamic
diff --git a/pkg/front_end/testcases/general/check_deferred_before_args.dart.strong.transformed.expect b/pkg/front_end/testcases/general/check_deferred_before_args.dart.strong.transformed.expect
index 441b505..b26fb17 100644
--- a/pkg/front_end/testcases/general/check_deferred_before_args.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general/check_deferred_before_args.dart.strong.transformed.expect
@@ -24,6 +24,16 @@
     ;
   static method m() → core::int*
     return 2;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field core::int* x = 0;
 static method m(dynamic x) → dynamic
diff --git a/pkg/front_end/testcases/general/check_deferred_before_args2.dart.outline.expect b/pkg/front_end/testcases/general/check_deferred_before_args2.dart.outline.expect
index 37e88f3..bb7f296 100644
--- a/pkg/front_end/testcases/general/check_deferred_before_args2.dart.outline.expect
+++ b/pkg/front_end/testcases/general/check_deferred_before_args2.dart.outline.expect
@@ -18,6 +18,16 @@
     ;
   static method m() → core::int*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field core::int* x;
 static method m(dynamic x) → dynamic
diff --git a/pkg/front_end/testcases/general/check_deferred_before_args2.dart.strong.expect b/pkg/front_end/testcases/general/check_deferred_before_args2.dart.strong.expect
index 4c5305e..930ad9b 100644
--- a/pkg/front_end/testcases/general/check_deferred_before_args2.dart.strong.expect
+++ b/pkg/front_end/testcases/general/check_deferred_before_args2.dart.strong.expect
@@ -20,6 +20,16 @@
     ;
   static method m() → core::int*
     return 2;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field core::int* x = 0;
 static method m(dynamic x) → dynamic
diff --git a/pkg/front_end/testcases/general/check_deferred_before_args2.dart.strong.transformed.expect b/pkg/front_end/testcases/general/check_deferred_before_args2.dart.strong.transformed.expect
index 1164433..8f401c4 100644
--- a/pkg/front_end/testcases/general/check_deferred_before_args2.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general/check_deferred_before_args2.dart.strong.transformed.expect
@@ -27,8 +27,8 @@
       asy::_completeOnAsyncReturn(:async_completer, :return_value);
       return;
     }
-    on dynamic catch(dynamic :exception, core::StackTrace* :stack_trace) {
-      :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+    on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
+      :async_completer.{asy::Completer::completeError}(exception, stack_trace);
     }
   :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
@@ -48,6 +48,16 @@
     ;
   static method m() → core::int*
     return 2;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field core::int* x = 0;
 static method m(dynamic x) → dynamic
diff --git a/pkg/front_end/testcases/general/check_deferred_before_call.dart.outline.expect b/pkg/front_end/testcases/general/check_deferred_before_call.dart.outline.expect
index 37e88f3..bb7f296 100644
--- a/pkg/front_end/testcases/general/check_deferred_before_call.dart.outline.expect
+++ b/pkg/front_end/testcases/general/check_deferred_before_call.dart.outline.expect
@@ -18,6 +18,16 @@
     ;
   static method m() → core::int*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field core::int* x;
 static method m(dynamic x) → dynamic
diff --git a/pkg/front_end/testcases/general/check_deferred_before_call.dart.strong.expect b/pkg/front_end/testcases/general/check_deferred_before_call.dart.strong.expect
index 8f1f75e..240df3b 100644
--- a/pkg/front_end/testcases/general/check_deferred_before_call.dart.strong.expect
+++ b/pkg/front_end/testcases/general/check_deferred_before_call.dart.strong.expect
@@ -20,6 +20,16 @@
     ;
   static method m() → core::int*
     return 2;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field core::int* x = 0;
 static method m(dynamic x) → dynamic
diff --git a/pkg/front_end/testcases/general/check_deferred_before_call.dart.strong.transformed.expect b/pkg/front_end/testcases/general/check_deferred_before_call.dart.strong.transformed.expect
index 6654a78..bf6a74c 100644
--- a/pkg/front_end/testcases/general/check_deferred_before_call.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general/check_deferred_before_call.dart.strong.transformed.expect
@@ -21,6 +21,16 @@
     ;
   static method m() → core::int*
     return 2;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field core::int* x = 0;
 static method m(dynamic x) → dynamic
diff --git a/pkg/front_end/testcases/general/check_deferred_before_write.dart.outline.expect b/pkg/front_end/testcases/general/check_deferred_before_write.dart.outline.expect
index 37e88f3..bb7f296 100644
--- a/pkg/front_end/testcases/general/check_deferred_before_write.dart.outline.expect
+++ b/pkg/front_end/testcases/general/check_deferred_before_write.dart.outline.expect
@@ -18,6 +18,16 @@
     ;
   static method m() → core::int*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field core::int* x;
 static method m(dynamic x) → dynamic
diff --git a/pkg/front_end/testcases/general/check_deferred_before_write.dart.strong.expect b/pkg/front_end/testcases/general/check_deferred_before_write.dart.strong.expect
index 1c262ca..ebdadf68 100644
--- a/pkg/front_end/testcases/general/check_deferred_before_write.dart.strong.expect
+++ b/pkg/front_end/testcases/general/check_deferred_before_write.dart.strong.expect
@@ -20,6 +20,16 @@
     ;
   static method m() → core::int*
     return 2;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field core::int* x = 0;
 static method m(dynamic x) → dynamic
diff --git a/pkg/front_end/testcases/general/check_deferred_before_write.dart.strong.transformed.expect b/pkg/front_end/testcases/general/check_deferred_before_write.dart.strong.transformed.expect
index 7696eb8..66884b6 100644
--- a/pkg/front_end/testcases/general/check_deferred_before_write.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general/check_deferred_before_write.dart.strong.transformed.expect
@@ -21,6 +21,16 @@
     ;
   static method m() → core::int*
     return 2;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field core::int* x = 0;
 static method m(dynamic x) → dynamic
diff --git a/pkg/front_end/testcases/general/check_deferred_is_check.dart.outline.expect b/pkg/front_end/testcases/general/check_deferred_is_check.dart.outline.expect
index efd56f1..0bd20d3 100644
--- a/pkg/front_end/testcases/general/check_deferred_is_check.dart.outline.expect
+++ b/pkg/front_end/testcases/general/check_deferred_is_check.dart.outline.expect
@@ -18,6 +18,16 @@
     ;
   static method m() → core::int*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field core::int* x;
 static method m(dynamic x) → dynamic
diff --git a/pkg/front_end/testcases/general/check_deferred_is_check.dart.strong.expect b/pkg/front_end/testcases/general/check_deferred_is_check.dart.strong.expect
index f778917..98c88c9 100644
--- a/pkg/front_end/testcases/general/check_deferred_is_check.dart.strong.expect
+++ b/pkg/front_end/testcases/general/check_deferred_is_check.dart.strong.expect
@@ -29,6 +29,16 @@
     ;
   static method m() → core::int*
     return 2;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field core::int* x = 0;
 static method m(dynamic x) → dynamic
diff --git a/pkg/front_end/testcases/general/check_deferred_is_check.dart.strong.transformed.expect b/pkg/front_end/testcases/general/check_deferred_is_check.dart.strong.transformed.expect
index f778917..98c88c9 100644
--- a/pkg/front_end/testcases/general/check_deferred_is_check.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general/check_deferred_is_check.dart.strong.transformed.expect
@@ -29,6 +29,16 @@
     ;
   static method m() → core::int*
     return 2;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field core::int* x = 0;
 static method m(dynamic x) → dynamic
diff --git a/pkg/front_end/testcases/general/check_deferred_read.dart.outline.expect b/pkg/front_end/testcases/general/check_deferred_read.dart.outline.expect
index 37e88f3..bb7f296 100644
--- a/pkg/front_end/testcases/general/check_deferred_read.dart.outline.expect
+++ b/pkg/front_end/testcases/general/check_deferred_read.dart.outline.expect
@@ -18,6 +18,16 @@
     ;
   static method m() → core::int*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field core::int* x;
 static method m(dynamic x) → dynamic
diff --git a/pkg/front_end/testcases/general/check_deferred_read.dart.strong.expect b/pkg/front_end/testcases/general/check_deferred_read.dart.strong.expect
index ad29577..dfad17b 100644
--- a/pkg/front_end/testcases/general/check_deferred_read.dart.strong.expect
+++ b/pkg/front_end/testcases/general/check_deferred_read.dart.strong.expect
@@ -21,6 +21,16 @@
     ;
   static method m() → core::int*
     return 2;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field core::int* x = 0;
 static method m(dynamic x) → dynamic
diff --git a/pkg/front_end/testcases/general/check_deferred_read.dart.strong.transformed.expect b/pkg/front_end/testcases/general/check_deferred_read.dart.strong.transformed.expect
index 0168dc7..9abc8e4 100644
--- a/pkg/front_end/testcases/general/check_deferred_read.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general/check_deferred_read.dart.strong.transformed.expect
@@ -21,6 +21,16 @@
     ;
   static method m() → core::int*
     return 2;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field core::int* x = 0;
 static method m(dynamic x) → dynamic
diff --git a/pkg/front_end/testcases/general/check_deferred_read_static_field.dart.outline.expect b/pkg/front_end/testcases/general/check_deferred_read_static_field.dart.outline.expect
index 37e88f3..bb7f296 100644
--- a/pkg/front_end/testcases/general/check_deferred_read_static_field.dart.outline.expect
+++ b/pkg/front_end/testcases/general/check_deferred_read_static_field.dart.outline.expect
@@ -18,6 +18,16 @@
     ;
   static method m() → core::int*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field core::int* x;
 static method m(dynamic x) → dynamic
diff --git a/pkg/front_end/testcases/general/check_deferred_read_static_field.dart.strong.expect b/pkg/front_end/testcases/general/check_deferred_read_static_field.dart.strong.expect
index 6a6523a..5bee81c 100644
--- a/pkg/front_end/testcases/general/check_deferred_read_static_field.dart.strong.expect
+++ b/pkg/front_end/testcases/general/check_deferred_read_static_field.dart.strong.expect
@@ -21,6 +21,16 @@
     ;
   static method m() → core::int*
     return 2;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field core::int* x = 0;
 static method m(dynamic x) → dynamic
diff --git a/pkg/front_end/testcases/general/check_deferred_read_static_field.dart.strong.transformed.expect b/pkg/front_end/testcases/general/check_deferred_read_static_field.dart.strong.transformed.expect
index 3e431f4..82f8478 100644
--- a/pkg/front_end/testcases/general/check_deferred_read_static_field.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general/check_deferred_read_static_field.dart.strong.transformed.expect
@@ -21,6 +21,16 @@
     ;
   static method m() → core::int*
     return 2;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field core::int* x = 0;
 static method m(dynamic x) → dynamic
diff --git a/pkg/front_end/testcases/general/check_deferred_read_type.dart.outline.expect b/pkg/front_end/testcases/general/check_deferred_read_type.dart.outline.expect
index 37e88f3..bb7f296 100644
--- a/pkg/front_end/testcases/general/check_deferred_read_type.dart.outline.expect
+++ b/pkg/front_end/testcases/general/check_deferred_read_type.dart.outline.expect
@@ -18,6 +18,16 @@
     ;
   static method m() → core::int*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field core::int* x;
 static method m(dynamic x) → dynamic
diff --git a/pkg/front_end/testcases/general/check_deferred_read_type.dart.strong.expect b/pkg/front_end/testcases/general/check_deferred_read_type.dart.strong.expect
index 24e9309..c906808 100644
--- a/pkg/front_end/testcases/general/check_deferred_read_type.dart.strong.expect
+++ b/pkg/front_end/testcases/general/check_deferred_read_type.dart.strong.expect
@@ -21,6 +21,16 @@
     ;
   static method m() → core::int*
     return 2;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field core::int* x = 0;
 static method m(dynamic x) → dynamic
diff --git a/pkg/front_end/testcases/general/check_deferred_read_type.dart.strong.transformed.expect b/pkg/front_end/testcases/general/check_deferred_read_type.dart.strong.transformed.expect
index d95a89a..37be2fa 100644
--- a/pkg/front_end/testcases/general/check_deferred_read_type.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general/check_deferred_read_type.dart.strong.transformed.expect
@@ -21,6 +21,16 @@
     ;
   static method m() → core::int*
     return 2;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field core::int* x = 0;
 static method m(dynamic x) → dynamic
diff --git a/pkg/front_end/testcases/general/check_deferred_static_method_call.dart.outline.expect b/pkg/front_end/testcases/general/check_deferred_static_method_call.dart.outline.expect
index 37e88f3..bb7f296 100644
--- a/pkg/front_end/testcases/general/check_deferred_static_method_call.dart.outline.expect
+++ b/pkg/front_end/testcases/general/check_deferred_static_method_call.dart.outline.expect
@@ -18,6 +18,16 @@
     ;
   static method m() → core::int*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field core::int* x;
 static method m(dynamic x) → dynamic
diff --git a/pkg/front_end/testcases/general/check_deferred_static_method_call.dart.strong.expect b/pkg/front_end/testcases/general/check_deferred_static_method_call.dart.strong.expect
index 0bf2205..ce7698a 100644
--- a/pkg/front_end/testcases/general/check_deferred_static_method_call.dart.strong.expect
+++ b/pkg/front_end/testcases/general/check_deferred_static_method_call.dart.strong.expect
@@ -21,6 +21,16 @@
     ;
   static method m() → core::int*
     return 2;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field core::int* x = 0;
 static method m(dynamic x) → dynamic
diff --git a/pkg/front_end/testcases/general/check_deferred_static_method_call.dart.strong.transformed.expect b/pkg/front_end/testcases/general/check_deferred_static_method_call.dart.strong.transformed.expect
index db62ffd..f4f863b 100644
--- a/pkg/front_end/testcases/general/check_deferred_static_method_call.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general/check_deferred_static_method_call.dart.strong.transformed.expect
@@ -21,6 +21,16 @@
     ;
   static method m() → core::int*
     return 2;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field core::int* x = 0;
 static method m(dynamic x) → dynamic
diff --git a/pkg/front_end/testcases/general/check_deferred_type_declaration.dart.outline.expect b/pkg/front_end/testcases/general/check_deferred_type_declaration.dart.outline.expect
index 37e88f3..bb7f296 100644
--- a/pkg/front_end/testcases/general/check_deferred_type_declaration.dart.outline.expect
+++ b/pkg/front_end/testcases/general/check_deferred_type_declaration.dart.outline.expect
@@ -18,6 +18,16 @@
     ;
   static method m() → core::int*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field core::int* x;
 static method m(dynamic x) → dynamic
diff --git a/pkg/front_end/testcases/general/check_deferred_type_declaration.dart.strong.expect b/pkg/front_end/testcases/general/check_deferred_type_declaration.dart.strong.expect
index 5c85c13..e6cbaab 100644
--- a/pkg/front_end/testcases/general/check_deferred_type_declaration.dart.strong.expect
+++ b/pkg/front_end/testcases/general/check_deferred_type_declaration.dart.strong.expect
@@ -29,6 +29,16 @@
     ;
   static method m() → core::int*
     return 2;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field core::int* x = 0;
 static method m(dynamic x) → dynamic
diff --git a/pkg/front_end/testcases/general/check_deferred_type_declaration.dart.strong.transformed.expect b/pkg/front_end/testcases/general/check_deferred_type_declaration.dart.strong.transformed.expect
index 5c85c13..e6cbaab 100644
--- a/pkg/front_end/testcases/general/check_deferred_type_declaration.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general/check_deferred_type_declaration.dart.strong.transformed.expect
@@ -29,6 +29,16 @@
     ;
   static method m() → core::int*
     return 2;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field core::int* x = 0;
 static method m(dynamic x) → dynamic
diff --git a/pkg/front_end/testcases/general/circularity-via-initializing-formal.dart.outline.expect b/pkg/front_end/testcases/general/circularity-via-initializing-formal.dart.outline.expect
index fb0387c..5f63c6d 100644
--- a/pkg/front_end/testcases/general/circularity-via-initializing-formal.dart.outline.expect
+++ b/pkg/front_end/testcases/general/circularity-via-initializing-formal.dart.outline.expect
@@ -14,6 +14,16 @@
   field self::C* f;
   constructor _circular(self::C* f) → self::C*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field self::C* x;
 static method main() → dynamic
diff --git a/pkg/front_end/testcases/general/circularity-via-initializing-formal.dart.strong.expect b/pkg/front_end/testcases/general/circularity-via-initializing-formal.dart.strong.expect
index 03b754b..ddd9e57 100644
--- a/pkg/front_end/testcases/general/circularity-via-initializing-formal.dart.strong.expect
+++ b/pkg/front_end/testcases/general/circularity-via-initializing-formal.dart.strong.expect
@@ -15,6 +15,16 @@
   constructor _circular(self::C* f) → self::C*
     : self::C::f = f, super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field self::C* x = new self::C::_circular(null);
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general/circularity-via-initializing-formal.dart.strong.transformed.expect b/pkg/front_end/testcases/general/circularity-via-initializing-formal.dart.strong.transformed.expect
index 03b754b..ddd9e57 100644
--- a/pkg/front_end/testcases/general/circularity-via-initializing-formal.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general/circularity-via-initializing-formal.dart.strong.transformed.expect
@@ -15,6 +15,16 @@
   constructor _circular(self::C* f) → self::C*
     : self::C::f = f, super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field self::C* x = new self::C::_circular(null);
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general/classes.dart.outline.expect b/pkg/front_end/testcases/general/classes.dart.outline.expect
index c216ad8..09929fa 100644
--- a/pkg/front_end/testcases/general/classes.dart.outline.expect
+++ b/pkg/front_end/testcases/general/classes.dart.outline.expect
@@ -9,6 +9,16 @@
     ;
   method method() → dynamic
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A {
   constructor •(dynamic x) → self::B*
diff --git a/pkg/front_end/testcases/general/classes.dart.strong.expect b/pkg/front_end/testcases/general/classes.dart.strong.expect
index 5e9a421..7f771eb 100644
--- a/pkg/front_end/testcases/general/classes.dart.strong.expect
+++ b/pkg/front_end/testcases/general/classes.dart.strong.expect
@@ -11,8 +11,18 @@
   method method() → dynamic {
     core::print("A.method x: ${this.{self::A::x}} y: ${this.{self::A::y}}");
     core::print(this);
-    core::print(this.{core::Object::runtimeType});
+    core::print(this.{self::A::runtimeType});
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A {
   constructor •(dynamic x) → self::B*
diff --git a/pkg/front_end/testcases/general/classes.dart.strong.transformed.expect b/pkg/front_end/testcases/general/classes.dart.strong.transformed.expect
index 5e9a421..7f771eb 100644
--- a/pkg/front_end/testcases/general/classes.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general/classes.dart.strong.transformed.expect
@@ -11,8 +11,18 @@
   method method() → dynamic {
     core::print("A.method x: ${this.{self::A::x}} y: ${this.{self::A::y}}");
     core::print(this);
-    core::print(this.{core::Object::runtimeType});
+    core::print(this.{self::A::runtimeType});
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A {
   constructor •(dynamic x) → self::B*
diff --git a/pkg/front_end/testcases/general/clone_function_type.dart.outline.expect b/pkg/front_end/testcases/general/clone_function_type.dart.outline.expect
index 62ce381..465103e 100644
--- a/pkg/front_end/testcases/general/clone_function_type.dart.outline.expect
+++ b/pkg/front_end/testcases/general/clone_function_type.dart.outline.expect
@@ -110,11 +110,31 @@
 class Am1<X extends core::Object* = dynamic, Y extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::Am1<self::Am1::X*, self::Am1::Y*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class _Bm1&Object&Am1<Z extends core::Object* = dynamic> = core::Object with self::Am1<(core::int*) →* dynamic, self::_Bm1&Object&Am1::Z*> /*isAnonymousMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::_Bm1&Object&Am1<self::_Bm1&Object&Am1::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Bm1<Z extends core::Object* = dynamic> extends self::_Bm1&Object&Am1<self::Bm1::Z*> {
   synthetic constructor •() → self::Bm1<self::Bm1::Z*>*
@@ -124,6 +144,16 @@
   const synthetic constructor •() → self::_Cm1&Object&Am1<self::_Cm1&Object&Am1::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Cm1<Z extends core::Object* = dynamic> extends self::_Cm1&Object&Am1<self::Cm1::Z*> {
   synthetic constructor •() → self::Cm1<self::Cm1::Z*>*
@@ -133,6 +163,16 @@
   const synthetic constructor •() → self::_Dm1&Object&Am1<self::_Dm1&Object&Am1::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Dm1<Z extends core::Object* = dynamic> extends self::_Dm1&Object&Am1<self::Dm1::Z*> {
   synthetic constructor •() → self::Dm1<self::Dm1::Z*>*
@@ -142,6 +182,16 @@
   const synthetic constructor •() → self::_Em1&Object&Am1<self::_Em1&Object&Am1::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Em1<Z extends core::Object* = dynamic> extends self::_Em1&Object&Am1<self::Em1::Z*> {
   synthetic constructor •() → self::Em1<self::Em1::Z*>*
@@ -151,6 +201,16 @@
   const synthetic constructor •() → self::_Fm1&Object&Am1<self::_Fm1&Object&Am1::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Fm1<Z extends core::Object* = dynamic> extends self::_Fm1&Object&Am1<self::Fm1::Z*> {
   synthetic constructor •() → self::Fm1<self::Fm1::Z*>*
@@ -160,6 +220,16 @@
   const synthetic constructor •() → self::_Gm1&Object&Am1<self::_Gm1&Object&Am1::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Gm1<Z extends core::Object* = dynamic> extends self::_Gm1&Object&Am1<self::Gm1::Z*> {
   synthetic constructor •() → self::Gm1<self::Gm1::Z*>*
@@ -169,6 +239,16 @@
   const synthetic constructor •() → self::_Hm1&Object&Am1<self::_Hm1&Object&Am1::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Hm1<Z extends core::Object* = dynamic> extends self::_Hm1&Object&Am1<self::Hm1::Z*> {
   synthetic constructor •() → self::Hm1<self::Hm1::Z*>*
@@ -178,6 +258,16 @@
   const synthetic constructor •() → self::_Im1&Object&Am1<self::_Im1&Object&Am1::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Im1<Z extends core::Object* = dynamic> extends self::_Im1&Object&Am1<self::Im1::Z*> {
   synthetic constructor •() → self::Im1<self::Im1::Z*>*
@@ -187,6 +277,16 @@
   const synthetic constructor •() → self::_Jm1&Object&Am1<self::_Jm1&Object&Am1::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Jm1<Z extends core::Object* = dynamic> extends self::_Jm1&Object&Am1<self::Jm1::Z*> {
   synthetic constructor •() → self::Jm1<self::Jm1::Z*>*
@@ -196,6 +296,16 @@
   const synthetic constructor •() → self::_Km1&Object&Am1<self::_Km1&Object&Am1::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Km1<Z extends core::Object* = dynamic> extends self::_Km1&Object&Am1<self::Km1::Z*> {
   synthetic constructor •() → self::Km1<self::Km1::Z*>*
@@ -205,6 +315,16 @@
   const synthetic constructor •() → self::_Lm1&Object&Am1<self::_Lm1&Object&Am1::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Lm1<Z extends core::Object* = dynamic> extends self::_Lm1&Object&Am1<self::Lm1::Z*> {
   synthetic constructor •() → self::Lm1<self::Lm1::Z*>*
@@ -214,65 +334,195 @@
   const synthetic constructor •() → self::Mm1<self::Mm1::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Nm1<Z extends core::Object* = dynamic> = core::Object with self::Am1<(core::int*) →* dynamic, self::Nm1::Z*> /*hasConstConstructor*/  {
   const synthetic constructor •() → self::Nm1<self::Nm1::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Om1<Z extends core::Object* = dynamic> = core::Object with self::Am1<() →* core::int*, self::Om1::Z*> /*hasConstConstructor*/  {
   const synthetic constructor •() → self::Om1<self::Om1::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Pm1<Z extends core::Object* = dynamic> = core::Object with self::Am1<() →* dynamic, self::Pm1::Z*> /*hasConstConstructor*/  {
   const synthetic constructor •() → self::Pm1<self::Pm1::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Qm1<Z extends core::Object* = dynamic> = core::Object with self::Am1<() →* dynamic, self::Qm1::Z*> /*hasConstConstructor*/  {
   const synthetic constructor •() → self::Qm1<self::Qm1::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Rm1<Z extends core::Object* = dynamic> = core::Object with self::Am1<({x: core::int*}) →* dynamic, self::Rm1::Z*> /*hasConstConstructor*/  {
   const synthetic constructor •() → self::Rm1<self::Rm1::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Sm1<Z extends core::Object* = dynamic> = core::Object with self::Am1<([core::int*]) →* dynamic, self::Sm1::Z*> /*hasConstConstructor*/  {
   const synthetic constructor •() → self::Sm1<self::Sm1::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Tm1<Z extends core::Object* = dynamic> = core::Object with self::Am1<([core::int*]) →* dynamic, self::Tm1::Z*> /*hasConstConstructor*/  {
   const synthetic constructor •() → self::Tm1<self::Tm1::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Um1<Z extends core::Object* = dynamic> = core::Object with self::Am1<core::Function*, self::Um1::Z*> /*hasConstConstructor*/  {
   const synthetic constructor •() → self::Um1<self::Um1::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Vm1<Z extends core::Object* = dynamic> = core::Object with self::Am1<(core::Function*) →* dynamic, self::Vm1::Z*> /*hasConstConstructor*/  {
   const synthetic constructor •() → self::Vm1<self::Vm1::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Wm1<Z extends core::Object* = dynamic> = core::Object with self::Am1<() →* (() →* core::Function*) →* dynamic, self::Wm1::Z*> /*hasConstConstructor*/  {
   const synthetic constructor •() → self::Wm1<self::Wm1::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Am2<X extends () →* dynamic = () →* dynamic, Y extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::Am2<self::Am2::X*, self::Am2::Y*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class _Bm2&Object&Am2<Z extends core::Object* = dynamic> = core::Object with self::Am2<(core::int*) →* dynamic, self::_Bm2&Object&Am2::Z*> /*isAnonymousMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::_Bm2&Object&Am2<self::_Bm2&Object&Am2::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Bm2<Z extends core::Object* = dynamic> extends self::_Bm2&Object&Am2<self::Bm2::Z*> {
   synthetic constructor •() → self::Bm2<self::Bm2::Z*>*
@@ -282,6 +532,16 @@
   const synthetic constructor •() → self::_Cm2&Object&Am2<self::_Cm2&Object&Am2::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Cm2<Z extends core::Object* = dynamic> extends self::_Cm2&Object&Am2<self::Cm2::Z*> {
   synthetic constructor •() → self::Cm2<self::Cm2::Z*>*
@@ -291,6 +551,16 @@
   const synthetic constructor •() → self::_Dm2&Object&Am2<self::_Dm2&Object&Am2::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Dm2<Z extends core::Object* = dynamic> extends self::_Dm2&Object&Am2<self::Dm2::Z*> {
   synthetic constructor •() → self::Dm2<self::Dm2::Z*>*
@@ -300,6 +570,16 @@
   const synthetic constructor •() → self::_Em2&Object&Am2<self::_Em2&Object&Am2::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Em2<Z extends core::Object* = dynamic> extends self::_Em2&Object&Am2<self::Em2::Z*> {
   synthetic constructor •() → self::Em2<self::Em2::Z*>*
@@ -309,6 +589,16 @@
   const synthetic constructor •() → self::_Fm2&Object&Am2<self::_Fm2&Object&Am2::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Fm2<Z extends core::Object* = dynamic> extends self::_Fm2&Object&Am2<self::Fm2::Z*> {
   synthetic constructor •() → self::Fm2<self::Fm2::Z*>*
@@ -318,6 +608,16 @@
   const synthetic constructor •() → self::_Gm2&Object&Am2<self::_Gm2&Object&Am2::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Gm2<Z extends core::Object* = dynamic> extends self::_Gm2&Object&Am2<self::Gm2::Z*> {
   synthetic constructor •() → self::Gm2<self::Gm2::Z*>*
@@ -327,6 +627,16 @@
   const synthetic constructor •() → self::_Hm2&Object&Am2<self::_Hm2&Object&Am2::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Hm2<Z extends core::Object* = dynamic> extends self::_Hm2&Object&Am2<self::Hm2::Z*> {
   synthetic constructor •() → self::Hm2<self::Hm2::Z*>*
@@ -336,6 +646,16 @@
   const synthetic constructor •() → self::_Im2&Object&Am2<self::_Im2&Object&Am2::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Im2<Z extends core::Object* = dynamic> extends self::_Im2&Object&Am2<self::Im2::Z*> {
   synthetic constructor •() → self::Im2<self::Im2::Z*>*
@@ -345,6 +665,16 @@
   const synthetic constructor •() → self::_Jm2&Object&Am2<self::_Jm2&Object&Am2::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Jm2<Z extends core::Object* = dynamic> extends self::_Jm2&Object&Am2<self::Jm2::Z*> {
   synthetic constructor •() → self::Jm2<self::Jm2::Z*>*
@@ -354,6 +684,16 @@
   const synthetic constructor •() → self::_Km2&Object&Am2<self::_Km2&Object&Am2::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Km2<Z extends core::Object* = dynamic> extends self::_Km2&Object&Am2<self::Km2::Z*> {
   synthetic constructor •() → self::Km2<self::Km2::Z*>*
@@ -363,6 +703,16 @@
   const synthetic constructor •() → self::_Lm2&Object&Am2<self::_Lm2&Object&Am2::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Lm2<Z extends core::Object* = dynamic> extends self::_Lm2&Object&Am2<self::Lm2::Z*> {
   synthetic constructor •() → self::Lm2<self::Lm2::Z*>*
@@ -372,65 +722,195 @@
   const synthetic constructor •() → self::Mm2<self::Mm2::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Nm2<Z extends core::Object* = dynamic> = core::Object with self::Am2<(core::int*) →* dynamic, self::Nm2::Z*> /*hasConstConstructor*/  {
   const synthetic constructor •() → self::Nm2<self::Nm2::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Om2<Z extends core::Object* = dynamic> = core::Object with self::Am2<() →* core::int*, self::Om2::Z*> /*hasConstConstructor*/  {
   const synthetic constructor •() → self::Om2<self::Om2::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Pm2<Z extends core::Object* = dynamic> = core::Object with self::Am2<() →* dynamic, self::Pm2::Z*> /*hasConstConstructor*/  {
   const synthetic constructor •() → self::Pm2<self::Pm2::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Qm2<Z extends core::Object* = dynamic> = core::Object with self::Am2<() →* dynamic, self::Qm2::Z*> /*hasConstConstructor*/  {
   const synthetic constructor •() → self::Qm2<self::Qm2::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Rm2<Z extends core::Object* = dynamic> = core::Object with self::Am2<({x: core::int*}) →* dynamic, self::Rm2::Z*> /*hasConstConstructor*/  {
   const synthetic constructor •() → self::Rm2<self::Rm2::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Sm2<Z extends core::Object* = dynamic> = core::Object with self::Am2<([core::int*]) →* dynamic, self::Sm2::Z*> /*hasConstConstructor*/  {
   const synthetic constructor •() → self::Sm2<self::Sm2::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Tm2<Z extends core::Object* = dynamic> = core::Object with self::Am2<([core::int*]) →* dynamic, self::Tm2::Z*> /*hasConstConstructor*/  {
   const synthetic constructor •() → self::Tm2<self::Tm2::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Um2<Z extends core::Object* = dynamic> = core::Object with self::Am2<core::Function*, self::Um2::Z*> /*hasConstConstructor*/  {
   const synthetic constructor •() → self::Um2<self::Um2::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Vm2<Z extends core::Object* = dynamic> = core::Object with self::Am2<(core::Function*) →* dynamic, self::Vm2::Z*> /*hasConstConstructor*/  {
   const synthetic constructor •() → self::Vm2<self::Vm2::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Wm2<Z extends core::Object* = dynamic> = core::Object with self::Am2<() →* (() →* core::Function*) →* dynamic, self::Wm2::Z*> /*hasConstConstructor*/  {
   const synthetic constructor •() → self::Wm2<self::Wm2::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Am3<L extends core::Object* = dynamic, Y extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::Am3<self::Am3::L*, self::Am3::Y*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class _Bm3&Object&Am3<Z extends core::Object* = dynamic> = core::Object with self::Am3<(core::int*) →* dynamic, self::_Bm3&Object&Am3::Z*> /*isAnonymousMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::_Bm3&Object&Am3<self::_Bm3&Object&Am3::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Bm3<Z extends core::Object* = dynamic> extends self::_Bm3&Object&Am3<self::Bm3::Z*> {
   synthetic constructor •() → self::Bm3<self::Bm3::Z*>*
@@ -440,6 +920,16 @@
   const synthetic constructor •() → self::_Cm3&Object&Am3<self::_Cm3&Object&Am3::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Cm3<Z extends core::Object* = dynamic> extends self::_Cm3&Object&Am3<self::Cm3::Z*> {
   synthetic constructor •() → self::Cm3<self::Cm3::Z*>*
@@ -449,6 +939,16 @@
   const synthetic constructor •() → self::_Dm3&Object&Am3<self::_Dm3&Object&Am3::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Dm3<Z extends core::Object* = dynamic> extends self::_Dm3&Object&Am3<self::Dm3::Z*> {
   synthetic constructor •() → self::Dm3<self::Dm3::Z*>*
@@ -458,6 +958,16 @@
   const synthetic constructor •() → self::_Em3&Object&Am3<self::_Em3&Object&Am3::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Em3<Z extends core::Object* = dynamic> extends self::_Em3&Object&Am3<self::Em3::Z*> {
   synthetic constructor •() → self::Em3<self::Em3::Z*>*
@@ -467,6 +977,16 @@
   const synthetic constructor •() → self::_Fm3&Object&Am3<self::_Fm3&Object&Am3::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Fm3<Z extends core::Object* = dynamic> extends self::_Fm3&Object&Am3<self::Fm3::Z*> {
   synthetic constructor •() → self::Fm3<self::Fm3::Z*>*
@@ -476,6 +996,16 @@
   const synthetic constructor •() → self::_Gm3&Object&Am3<self::_Gm3&Object&Am3::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Gm3<Z extends core::Object* = dynamic> extends self::_Gm3&Object&Am3<self::Gm3::Z*> {
   synthetic constructor •() → self::Gm3<self::Gm3::Z*>*
@@ -485,6 +1015,16 @@
   const synthetic constructor •() → self::_Hm3&Object&Am3<self::_Hm3&Object&Am3::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Hm3<Z extends core::Object* = dynamic> extends self::_Hm3&Object&Am3<self::Hm3::Z*> {
   synthetic constructor •() → self::Hm3<self::Hm3::Z*>*
@@ -494,6 +1034,16 @@
   const synthetic constructor •() → self::_Im3&Object&Am3<self::_Im3&Object&Am3::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Im3<Z extends core::Object* = dynamic> extends self::_Im3&Object&Am3<self::Im3::Z*> {
   synthetic constructor •() → self::Im3<self::Im3::Z*>*
@@ -503,6 +1053,16 @@
   const synthetic constructor •() → self::_Jm3&Object&Am3<self::_Jm3&Object&Am3::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Jm3<Z extends core::Object* = dynamic> extends self::_Jm3&Object&Am3<self::Jm3::Z*> {
   synthetic constructor •() → self::Jm3<self::Jm3::Z*>*
@@ -512,6 +1072,16 @@
   const synthetic constructor •() → self::_Km3&Object&Am3<self::_Km3&Object&Am3::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Km3<Z extends core::Object* = dynamic> extends self::_Km3&Object&Am3<self::Km3::Z*> {
   synthetic constructor •() → self::Km3<self::Km3::Z*>*
@@ -520,86 +1090,296 @@
 class Af1<X extends (core::int*) →* dynamic = (core::int*) →* dynamic> extends core::Object {
   static factory foo<X extends (core::int*) →* dynamic = dynamic>() → self::Af1<self::Af1::foo::X*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Bf1<X extends (core::int*) →* dynamic = (core::int*) →* dynamic> extends core::Object {
   static factory foo<X extends (core::int*) →* dynamic = dynamic>() → self::Bf1<self::Bf1::foo::X*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Cf1<X extends () →* core::int* = () →* core::int*> extends core::Object {
   static factory foo<X extends () →* core::int* = dynamic>() → self::Cf1<self::Cf1::foo::X*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Df1<X extends () →* dynamic = () →* dynamic> extends core::Object {
   static factory foo<X extends () →* dynamic = dynamic>() → self::Df1<self::Df1::foo::X*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Ef1<X extends () →* dynamic = () →* dynamic> extends core::Object {
   static factory foo<X extends () →* dynamic = dynamic>() → self::Ef1<self::Ef1::foo::X*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Ff1<X extends ({x: core::int*}) →* dynamic = ({x: core::int*}) →* dynamic> extends core::Object {
   static factory foo<X extends ({x: core::int*}) →* dynamic = dynamic>() → self::Ff1<self::Ff1::foo::X*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Gf1<X extends ([core::int*]) →* dynamic = ([core::int*]) →* dynamic> extends core::Object {
   static factory foo<X extends ([core::int*]) →* dynamic = dynamic>() → self::Gf1<self::Gf1::foo::X*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Hf1<X extends ([core::int*]) →* dynamic = ([core::int*]) →* dynamic> extends core::Object {
   static factory foo<X extends ([core::int*]) →* dynamic = dynamic>() → self::Hf1<self::Hf1::foo::X*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class If1<X extends core::Function* = core::Function*> extends core::Object {
   static factory foo<X extends core::Function* = dynamic>() → self::If1<self::If1::foo::X*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Jf1<X extends (core::Function*) →* dynamic = (core::Function*) →* dynamic> extends core::Object {
   static factory foo<X extends (core::Function*) →* dynamic = dynamic>() → self::Jf1<self::Jf1::foo::X*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Kf1<X extends () →* (() →* core::Function*) →* dynamic = () →* (() →* core::Function*) →* dynamic> extends core::Object {
   static factory foo<X extends () →* (() →* core::Function*) →* dynamic = dynamic>() → self::Kf1<self::Kf1::foo::X*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Bf2<X extends (core::int*) →* dynamic = (core::int*) →* dynamic> extends core::Object {
   static factory foo<X extends (core::int*) →* dynamic = dynamic>() → self::Bf2<self::Bf2::foo::X*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Cf2<X extends (core::int*) →* dynamic = (core::int*) →* dynamic> extends core::Object {
   static factory foo<X extends (core::int*) →* dynamic = dynamic>() → self::Cf2<self::Cf2::foo::X*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Df2<X extends () →* core::int* = () →* core::int*> extends core::Object {
   static factory foo<X extends () →* core::int* = dynamic>() → self::Df2<self::Df2::foo::X*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Ef2<X extends () →* dynamic = () →* dynamic> extends core::Object {
   static factory foo<X extends () →* dynamic = dynamic>() → self::Ef2<self::Ef2::foo::X*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Ff2<X extends () →* dynamic = () →* dynamic> extends core::Object {
   static factory foo<X extends () →* dynamic = dynamic>() → self::Ff2<self::Ff2::foo::X*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Gf2<X extends ({x: core::int*}) →* dynamic = ({x: core::int*}) →* dynamic> extends core::Object {
   static factory foo<X extends ({x: core::int*}) →* dynamic = dynamic>() → self::Gf2<self::Gf2::foo::X*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Hf2<X extends ([core::int*]) →* dynamic = ([core::int*]) →* dynamic> extends core::Object {
   static factory foo<X extends ([core::int*]) →* dynamic = dynamic>() → self::Hf2<self::Hf2::foo::X*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class If2<X extends ([core::int*]) →* dynamic = ([core::int*]) →* dynamic> extends core::Object {
   static factory foo<X extends ([core::int*]) →* dynamic = dynamic>() → self::If2<self::If2::foo::X*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Jf2<X extends (core::Function*) →* dynamic = (core::Function*) →* dynamic> extends core::Object {
   static factory foo<X extends (core::Function*) →* dynamic = dynamic>() → self::Jf2<self::Jf2::foo::X*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Kf2<X extends () →* (() →* core::Function*) →* dynamic = () →* (() →* core::Function*) →* dynamic> extends core::Object {
   static factory foo<X extends () →* (() →* core::Function*) →* dynamic = dynamic>() → self::Kf2<self::Kf2::foo::X*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/general/clone_function_type.dart.strong.expect b/pkg/front_end/testcases/general/clone_function_type.dart.strong.expect
index 5ebcc5d..c0bffb8 100644
--- a/pkg/front_end/testcases/general/clone_function_type.dart.strong.expect
+++ b/pkg/front_end/testcases/general/clone_function_type.dart.strong.expect
@@ -111,11 +111,31 @@
   synthetic constructor •() → self::Am1<self::Am1::X*, self::Am1::Y*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class _Bm1&Object&Am1<Z extends core::Object* = dynamic> = core::Object with self::Am1<(core::int*) →* dynamic, self::_Bm1&Object&Am1::Z*> /*isAnonymousMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::_Bm1&Object&Am1<self::_Bm1&Object&Am1::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Bm1<Z extends core::Object* = dynamic> extends self::_Bm1&Object&Am1<self::Bm1::Z*> {
   synthetic constructor •() → self::Bm1<self::Bm1::Z*>*
@@ -126,6 +146,16 @@
   const synthetic constructor •() → self::_Cm1&Object&Am1<self::_Cm1&Object&Am1::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Cm1<Z extends core::Object* = dynamic> extends self::_Cm1&Object&Am1<self::Cm1::Z*> {
   synthetic constructor •() → self::Cm1<self::Cm1::Z*>*
@@ -136,6 +166,16 @@
   const synthetic constructor •() → self::_Dm1&Object&Am1<self::_Dm1&Object&Am1::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Dm1<Z extends core::Object* = dynamic> extends self::_Dm1&Object&Am1<self::Dm1::Z*> {
   synthetic constructor •() → self::Dm1<self::Dm1::Z*>*
@@ -146,6 +186,16 @@
   const synthetic constructor •() → self::_Em1&Object&Am1<self::_Em1&Object&Am1::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Em1<Z extends core::Object* = dynamic> extends self::_Em1&Object&Am1<self::Em1::Z*> {
   synthetic constructor •() → self::Em1<self::Em1::Z*>*
@@ -156,6 +206,16 @@
   const synthetic constructor •() → self::_Fm1&Object&Am1<self::_Fm1&Object&Am1::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Fm1<Z extends core::Object* = dynamic> extends self::_Fm1&Object&Am1<self::Fm1::Z*> {
   synthetic constructor •() → self::Fm1<self::Fm1::Z*>*
@@ -166,6 +226,16 @@
   const synthetic constructor •() → self::_Gm1&Object&Am1<self::_Gm1&Object&Am1::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Gm1<Z extends core::Object* = dynamic> extends self::_Gm1&Object&Am1<self::Gm1::Z*> {
   synthetic constructor •() → self::Gm1<self::Gm1::Z*>*
@@ -176,6 +246,16 @@
   const synthetic constructor •() → self::_Hm1&Object&Am1<self::_Hm1&Object&Am1::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Hm1<Z extends core::Object* = dynamic> extends self::_Hm1&Object&Am1<self::Hm1::Z*> {
   synthetic constructor •() → self::Hm1<self::Hm1::Z*>*
@@ -186,6 +266,16 @@
   const synthetic constructor •() → self::_Im1&Object&Am1<self::_Im1&Object&Am1::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Im1<Z extends core::Object* = dynamic> extends self::_Im1&Object&Am1<self::Im1::Z*> {
   synthetic constructor •() → self::Im1<self::Im1::Z*>*
@@ -196,6 +286,16 @@
   const synthetic constructor •() → self::_Jm1&Object&Am1<self::_Jm1&Object&Am1::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Jm1<Z extends core::Object* = dynamic> extends self::_Jm1&Object&Am1<self::Jm1::Z*> {
   synthetic constructor •() → self::Jm1<self::Jm1::Z*>*
@@ -206,6 +306,16 @@
   const synthetic constructor •() → self::_Km1&Object&Am1<self::_Km1&Object&Am1::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Km1<Z extends core::Object* = dynamic> extends self::_Km1&Object&Am1<self::Km1::Z*> {
   synthetic constructor •() → self::Km1<self::Km1::Z*>*
@@ -216,6 +326,16 @@
   const synthetic constructor •() → self::_Lm1&Object&Am1<self::_Lm1&Object&Am1::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Lm1<Z extends core::Object* = dynamic> extends self::_Lm1&Object&Am1<self::Lm1::Z*> {
   synthetic constructor •() → self::Lm1<self::Lm1::Z*>*
@@ -226,66 +346,196 @@
   const synthetic constructor •() → self::Mm1<self::Mm1::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Nm1<Z extends core::Object* = dynamic> = core::Object with self::Am1<(core::int*) →* dynamic, self::Nm1::Z*> /*hasConstConstructor*/  {
   const synthetic constructor •() → self::Nm1<self::Nm1::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Om1<Z extends core::Object* = dynamic> = core::Object with self::Am1<() →* core::int*, self::Om1::Z*> /*hasConstConstructor*/  {
   const synthetic constructor •() → self::Om1<self::Om1::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Pm1<Z extends core::Object* = dynamic> = core::Object with self::Am1<() →* dynamic, self::Pm1::Z*> /*hasConstConstructor*/  {
   const synthetic constructor •() → self::Pm1<self::Pm1::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Qm1<Z extends core::Object* = dynamic> = core::Object with self::Am1<() →* dynamic, self::Qm1::Z*> /*hasConstConstructor*/  {
   const synthetic constructor •() → self::Qm1<self::Qm1::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Rm1<Z extends core::Object* = dynamic> = core::Object with self::Am1<({x: core::int*}) →* dynamic, self::Rm1::Z*> /*hasConstConstructor*/  {
   const synthetic constructor •() → self::Rm1<self::Rm1::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Sm1<Z extends core::Object* = dynamic> = core::Object with self::Am1<([core::int*]) →* dynamic, self::Sm1::Z*> /*hasConstConstructor*/  {
   const synthetic constructor •() → self::Sm1<self::Sm1::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Tm1<Z extends core::Object* = dynamic> = core::Object with self::Am1<([core::int*]) →* dynamic, self::Tm1::Z*> /*hasConstConstructor*/  {
   const synthetic constructor •() → self::Tm1<self::Tm1::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Um1<Z extends core::Object* = dynamic> = core::Object with self::Am1<core::Function*, self::Um1::Z*> /*hasConstConstructor*/  {
   const synthetic constructor •() → self::Um1<self::Um1::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Vm1<Z extends core::Object* = dynamic> = core::Object with self::Am1<(core::Function*) →* dynamic, self::Vm1::Z*> /*hasConstConstructor*/  {
   const synthetic constructor •() → self::Vm1<self::Vm1::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Wm1<Z extends core::Object* = dynamic> = core::Object with self::Am1<() →* (() →* core::Function*) →* dynamic, self::Wm1::Z*> /*hasConstConstructor*/  {
   const synthetic constructor •() → self::Wm1<self::Wm1::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Am2<X extends () →* dynamic = () →* dynamic, Y extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::Am2<self::Am2::X*, self::Am2::Y*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class _Bm2&Object&Am2<Z extends core::Object* = dynamic> = core::Object with self::Am2<(core::int*) →* dynamic, self::_Bm2&Object&Am2::Z*> /*isAnonymousMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::_Bm2&Object&Am2<self::_Bm2&Object&Am2::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Bm2<Z extends core::Object* = dynamic> extends self::_Bm2&Object&Am2<self::Bm2::Z*> {
   synthetic constructor •() → self::Bm2<self::Bm2::Z*>*
@@ -296,6 +546,16 @@
   const synthetic constructor •() → self::_Cm2&Object&Am2<self::_Cm2&Object&Am2::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Cm2<Z extends core::Object* = dynamic> extends self::_Cm2&Object&Am2<self::Cm2::Z*> {
   synthetic constructor •() → self::Cm2<self::Cm2::Z*>*
@@ -306,6 +566,16 @@
   const synthetic constructor •() → self::_Dm2&Object&Am2<self::_Dm2&Object&Am2::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Dm2<Z extends core::Object* = dynamic> extends self::_Dm2&Object&Am2<self::Dm2::Z*> {
   synthetic constructor •() → self::Dm2<self::Dm2::Z*>*
@@ -316,6 +586,16 @@
   const synthetic constructor •() → self::_Em2&Object&Am2<self::_Em2&Object&Am2::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Em2<Z extends core::Object* = dynamic> extends self::_Em2&Object&Am2<self::Em2::Z*> {
   synthetic constructor •() → self::Em2<self::Em2::Z*>*
@@ -326,6 +606,16 @@
   const synthetic constructor •() → self::_Fm2&Object&Am2<self::_Fm2&Object&Am2::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Fm2<Z extends core::Object* = dynamic> extends self::_Fm2&Object&Am2<self::Fm2::Z*> {
   synthetic constructor •() → self::Fm2<self::Fm2::Z*>*
@@ -336,6 +626,16 @@
   const synthetic constructor •() → self::_Gm2&Object&Am2<self::_Gm2&Object&Am2::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Gm2<Z extends core::Object* = dynamic> extends self::_Gm2&Object&Am2<self::Gm2::Z*> {
   synthetic constructor •() → self::Gm2<self::Gm2::Z*>*
@@ -346,6 +646,16 @@
   const synthetic constructor •() → self::_Hm2&Object&Am2<self::_Hm2&Object&Am2::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Hm2<Z extends core::Object* = dynamic> extends self::_Hm2&Object&Am2<self::Hm2::Z*> {
   synthetic constructor •() → self::Hm2<self::Hm2::Z*>*
@@ -356,6 +666,16 @@
   const synthetic constructor •() → self::_Im2&Object&Am2<self::_Im2&Object&Am2::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Im2<Z extends core::Object* = dynamic> extends self::_Im2&Object&Am2<self::Im2::Z*> {
   synthetic constructor •() → self::Im2<self::Im2::Z*>*
@@ -366,6 +686,16 @@
   const synthetic constructor •() → self::_Jm2&Object&Am2<self::_Jm2&Object&Am2::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Jm2<Z extends core::Object* = dynamic> extends self::_Jm2&Object&Am2<self::Jm2::Z*> {
   synthetic constructor •() → self::Jm2<self::Jm2::Z*>*
@@ -376,6 +706,16 @@
   const synthetic constructor •() → self::_Km2&Object&Am2<self::_Km2&Object&Am2::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Km2<Z extends core::Object* = dynamic> extends self::_Km2&Object&Am2<self::Km2::Z*> {
   synthetic constructor •() → self::Km2<self::Km2::Z*>*
@@ -386,6 +726,16 @@
   const synthetic constructor •() → self::_Lm2&Object&Am2<self::_Lm2&Object&Am2::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Lm2<Z extends core::Object* = dynamic> extends self::_Lm2&Object&Am2<self::Lm2::Z*> {
   synthetic constructor •() → self::Lm2<self::Lm2::Z*>*
@@ -396,66 +746,196 @@
   const synthetic constructor •() → self::Mm2<self::Mm2::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Nm2<Z extends core::Object* = dynamic> = core::Object with self::Am2<(core::int*) →* dynamic, self::Nm2::Z*> /*hasConstConstructor*/  {
   const synthetic constructor •() → self::Nm2<self::Nm2::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Om2<Z extends core::Object* = dynamic> = core::Object with self::Am2<() →* core::int*, self::Om2::Z*> /*hasConstConstructor*/  {
   const synthetic constructor •() → self::Om2<self::Om2::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Pm2<Z extends core::Object* = dynamic> = core::Object with self::Am2<() →* dynamic, self::Pm2::Z*> /*hasConstConstructor*/  {
   const synthetic constructor •() → self::Pm2<self::Pm2::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Qm2<Z extends core::Object* = dynamic> = core::Object with self::Am2<() →* dynamic, self::Qm2::Z*> /*hasConstConstructor*/  {
   const synthetic constructor •() → self::Qm2<self::Qm2::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Rm2<Z extends core::Object* = dynamic> = core::Object with self::Am2<({x: core::int*}) →* dynamic, self::Rm2::Z*> /*hasConstConstructor*/  {
   const synthetic constructor •() → self::Rm2<self::Rm2::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Sm2<Z extends core::Object* = dynamic> = core::Object with self::Am2<([core::int*]) →* dynamic, self::Sm2::Z*> /*hasConstConstructor*/  {
   const synthetic constructor •() → self::Sm2<self::Sm2::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Tm2<Z extends core::Object* = dynamic> = core::Object with self::Am2<([core::int*]) →* dynamic, self::Tm2::Z*> /*hasConstConstructor*/  {
   const synthetic constructor •() → self::Tm2<self::Tm2::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Um2<Z extends core::Object* = dynamic> = core::Object with self::Am2<core::Function*, self::Um2::Z*> /*hasConstConstructor*/  {
   const synthetic constructor •() → self::Um2<self::Um2::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Vm2<Z extends core::Object* = dynamic> = core::Object with self::Am2<(core::Function*) →* dynamic, self::Vm2::Z*> /*hasConstConstructor*/  {
   const synthetic constructor •() → self::Vm2<self::Vm2::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Wm2<Z extends core::Object* = dynamic> = core::Object with self::Am2<() →* (() →* core::Function*) →* dynamic, self::Wm2::Z*> /*hasConstConstructor*/  {
   const synthetic constructor •() → self::Wm2<self::Wm2::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Am3<L extends core::Object* = dynamic, Y extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::Am3<self::Am3::L*, self::Am3::Y*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class _Bm3&Object&Am3<Z extends core::Object* = dynamic> = core::Object with self::Am3<(core::int*) →* dynamic, self::_Bm3&Object&Am3::Z*> /*isAnonymousMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::_Bm3&Object&Am3<self::_Bm3&Object&Am3::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Bm3<Z extends core::Object* = dynamic> extends self::_Bm3&Object&Am3<self::Bm3::Z*> {
   synthetic constructor •() → self::Bm3<self::Bm3::Z*>*
@@ -466,6 +946,16 @@
   const synthetic constructor •() → self::_Cm3&Object&Am3<self::_Cm3&Object&Am3::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Cm3<Z extends core::Object* = dynamic> extends self::_Cm3&Object&Am3<self::Cm3::Z*> {
   synthetic constructor •() → self::Cm3<self::Cm3::Z*>*
@@ -476,6 +966,16 @@
   const synthetic constructor •() → self::_Dm3&Object&Am3<self::_Dm3&Object&Am3::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Dm3<Z extends core::Object* = dynamic> extends self::_Dm3&Object&Am3<self::Dm3::Z*> {
   synthetic constructor •() → self::Dm3<self::Dm3::Z*>*
@@ -486,6 +986,16 @@
   const synthetic constructor •() → self::_Em3&Object&Am3<self::_Em3&Object&Am3::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Em3<Z extends core::Object* = dynamic> extends self::_Em3&Object&Am3<self::Em3::Z*> {
   synthetic constructor •() → self::Em3<self::Em3::Z*>*
@@ -496,6 +1006,16 @@
   const synthetic constructor •() → self::_Fm3&Object&Am3<self::_Fm3&Object&Am3::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Fm3<Z extends core::Object* = dynamic> extends self::_Fm3&Object&Am3<self::Fm3::Z*> {
   synthetic constructor •() → self::Fm3<self::Fm3::Z*>*
@@ -506,6 +1026,16 @@
   const synthetic constructor •() → self::_Gm3&Object&Am3<self::_Gm3&Object&Am3::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Gm3<Z extends core::Object* = dynamic> extends self::_Gm3&Object&Am3<self::Gm3::Z*> {
   synthetic constructor •() → self::Gm3<self::Gm3::Z*>*
@@ -516,6 +1046,16 @@
   const synthetic constructor •() → self::_Hm3&Object&Am3<self::_Hm3&Object&Am3::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Hm3<Z extends core::Object* = dynamic> extends self::_Hm3&Object&Am3<self::Hm3::Z*> {
   synthetic constructor •() → self::Hm3<self::Hm3::Z*>*
@@ -526,6 +1066,16 @@
   const synthetic constructor •() → self::_Im3&Object&Am3<self::_Im3&Object&Am3::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Im3<Z extends core::Object* = dynamic> extends self::_Im3&Object&Am3<self::Im3::Z*> {
   synthetic constructor •() → self::Im3<self::Im3::Z*>*
@@ -536,6 +1086,16 @@
   const synthetic constructor •() → self::_Jm3&Object&Am3<self::_Jm3&Object&Am3::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Jm3<Z extends core::Object* = dynamic> extends self::_Jm3&Object&Am3<self::Jm3::Z*> {
   synthetic constructor •() → self::Jm3<self::Jm3::Z*>*
@@ -546,6 +1106,16 @@
   const synthetic constructor •() → self::_Km3&Object&Am3<self::_Km3&Object&Am3::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Km3<Z extends core::Object* = dynamic> extends self::_Km3&Object&Am3<self::Km3::Z*> {
   synthetic constructor •() → self::Km3<self::Km3::Z*>*
@@ -555,85 +1125,295 @@
 class Af1<X extends (core::int*) →* dynamic = (core::int*) →* dynamic> extends core::Object {
   static factory foo<X extends (core::int*) →* dynamic = dynamic>() → self::Af1<self::Af1::foo::X*>*
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Bf1<X extends (core::int*) →* dynamic = (core::int*) →* dynamic> extends core::Object {
   static factory foo<X extends (core::int*) →* dynamic = dynamic>() → self::Bf1<self::Bf1::foo::X*>*
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Cf1<X extends () →* core::int* = () →* core::int*> extends core::Object {
   static factory foo<X extends () →* core::int* = dynamic>() → self::Cf1<self::Cf1::foo::X*>*
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Df1<X extends () →* dynamic = () →* dynamic> extends core::Object {
   static factory foo<X extends () →* dynamic = dynamic>() → self::Df1<self::Df1::foo::X*>*
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Ef1<X extends () →* dynamic = () →* dynamic> extends core::Object {
   static factory foo<X extends () →* dynamic = dynamic>() → self::Ef1<self::Ef1::foo::X*>*
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Ff1<X extends ({x: core::int*}) →* dynamic = ({x: core::int*}) →* dynamic> extends core::Object {
   static factory foo<X extends ({x: core::int*}) →* dynamic = dynamic>() → self::Ff1<self::Ff1::foo::X*>*
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Gf1<X extends ([core::int*]) →* dynamic = ([core::int*]) →* dynamic> extends core::Object {
   static factory foo<X extends ([core::int*]) →* dynamic = dynamic>() → self::Gf1<self::Gf1::foo::X*>*
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Hf1<X extends ([core::int*]) →* dynamic = ([core::int*]) →* dynamic> extends core::Object {
   static factory foo<X extends ([core::int*]) →* dynamic = dynamic>() → self::Hf1<self::Hf1::foo::X*>*
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class If1<X extends core::Function* = core::Function*> extends core::Object {
   static factory foo<X extends core::Function* = dynamic>() → self::If1<self::If1::foo::X*>*
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Jf1<X extends (core::Function*) →* dynamic = (core::Function*) →* dynamic> extends core::Object {
   static factory foo<X extends (core::Function*) →* dynamic = dynamic>() → self::Jf1<self::Jf1::foo::X*>*
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Kf1<X extends () →* (() →* core::Function*) →* dynamic = () →* (() →* core::Function*) →* dynamic> extends core::Object {
   static factory foo<X extends () →* (() →* core::Function*) →* dynamic = dynamic>() → self::Kf1<self::Kf1::foo::X*>*
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Bf2<X extends (core::int*) →* dynamic = (core::int*) →* dynamic> extends core::Object {
   static factory foo<X extends (core::int*) →* dynamic = dynamic>() → self::Bf2<self::Bf2::foo::X*>*
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Cf2<X extends (core::int*) →* dynamic = (core::int*) →* dynamic> extends core::Object {
   static factory foo<X extends (core::int*) →* dynamic = dynamic>() → self::Cf2<self::Cf2::foo::X*>*
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Df2<X extends () →* core::int* = () →* core::int*> extends core::Object {
   static factory foo<X extends () →* core::int* = dynamic>() → self::Df2<self::Df2::foo::X*>*
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Ef2<X extends () →* dynamic = () →* dynamic> extends core::Object {
   static factory foo<X extends () →* dynamic = dynamic>() → self::Ef2<self::Ef2::foo::X*>*
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Ff2<X extends () →* dynamic = () →* dynamic> extends core::Object {
   static factory foo<X extends () →* dynamic = dynamic>() → self::Ff2<self::Ff2::foo::X*>*
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Gf2<X extends ({x: core::int*}) →* dynamic = ({x: core::int*}) →* dynamic> extends core::Object {
   static factory foo<X extends ({x: core::int*}) →* dynamic = dynamic>() → self::Gf2<self::Gf2::foo::X*>*
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Hf2<X extends ([core::int*]) →* dynamic = ([core::int*]) →* dynamic> extends core::Object {
   static factory foo<X extends ([core::int*]) →* dynamic = dynamic>() → self::Hf2<self::Hf2::foo::X*>*
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class If2<X extends ([core::int*]) →* dynamic = ([core::int*]) →* dynamic> extends core::Object {
   static factory foo<X extends ([core::int*]) →* dynamic = dynamic>() → self::If2<self::If2::foo::X*>*
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Jf2<X extends (core::Function*) →* dynamic = (core::Function*) →* dynamic> extends core::Object {
   static factory foo<X extends (core::Function*) →* dynamic = dynamic>() → self::Jf2<self::Jf2::foo::X*>*
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Kf2<X extends () →* (() →* core::Function*) →* dynamic = () →* (() →* core::Function*) →* dynamic> extends core::Object {
   static factory foo<X extends () →* (() →* core::Function*) →* dynamic = dynamic>() → self::Kf2<self::Kf2::foo::X*>*
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general/clone_function_type.dart.strong.transformed.expect b/pkg/front_end/testcases/general/clone_function_type.dart.strong.transformed.expect
index 486e5ad..acd1506 100644
--- a/pkg/front_end/testcases/general/clone_function_type.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general/clone_function_type.dart.strong.transformed.expect
@@ -111,11 +111,31 @@
   synthetic constructor •() → self::Am1<self::Am1::X*, self::Am1::Y*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class _Bm1&Object&Am1<Z extends core::Object* = dynamic> extends core::Object implements self::Am1<(core::int*) →* dynamic, self::_Bm1&Object&Am1::Z*> /*isAnonymousMixin,isEliminatedMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::_Bm1&Object&Am1<self::_Bm1&Object&Am1::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Bm1<Z extends core::Object* = dynamic> extends self::_Bm1&Object&Am1<self::Bm1::Z*> {
   synthetic constructor •() → self::Bm1<self::Bm1::Z*>*
@@ -126,6 +146,16 @@
   const synthetic constructor •() → self::_Cm1&Object&Am1<self::_Cm1&Object&Am1::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Cm1<Z extends core::Object* = dynamic> extends self::_Cm1&Object&Am1<self::Cm1::Z*> {
   synthetic constructor •() → self::Cm1<self::Cm1::Z*>*
@@ -136,6 +166,16 @@
   const synthetic constructor •() → self::_Dm1&Object&Am1<self::_Dm1&Object&Am1::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Dm1<Z extends core::Object* = dynamic> extends self::_Dm1&Object&Am1<self::Dm1::Z*> {
   synthetic constructor •() → self::Dm1<self::Dm1::Z*>*
@@ -146,6 +186,16 @@
   const synthetic constructor •() → self::_Em1&Object&Am1<self::_Em1&Object&Am1::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Em1<Z extends core::Object* = dynamic> extends self::_Em1&Object&Am1<self::Em1::Z*> {
   synthetic constructor •() → self::Em1<self::Em1::Z*>*
@@ -156,6 +206,16 @@
   const synthetic constructor •() → self::_Fm1&Object&Am1<self::_Fm1&Object&Am1::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Fm1<Z extends core::Object* = dynamic> extends self::_Fm1&Object&Am1<self::Fm1::Z*> {
   synthetic constructor •() → self::Fm1<self::Fm1::Z*>*
@@ -166,6 +226,16 @@
   const synthetic constructor •() → self::_Gm1&Object&Am1<self::_Gm1&Object&Am1::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Gm1<Z extends core::Object* = dynamic> extends self::_Gm1&Object&Am1<self::Gm1::Z*> {
   synthetic constructor •() → self::Gm1<self::Gm1::Z*>*
@@ -176,6 +246,16 @@
   const synthetic constructor •() → self::_Hm1&Object&Am1<self::_Hm1&Object&Am1::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Hm1<Z extends core::Object* = dynamic> extends self::_Hm1&Object&Am1<self::Hm1::Z*> {
   synthetic constructor •() → self::Hm1<self::Hm1::Z*>*
@@ -186,6 +266,16 @@
   const synthetic constructor •() → self::_Im1&Object&Am1<self::_Im1&Object&Am1::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Im1<Z extends core::Object* = dynamic> extends self::_Im1&Object&Am1<self::Im1::Z*> {
   synthetic constructor •() → self::Im1<self::Im1::Z*>*
@@ -196,6 +286,16 @@
   const synthetic constructor •() → self::_Jm1&Object&Am1<self::_Jm1&Object&Am1::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Jm1<Z extends core::Object* = dynamic> extends self::_Jm1&Object&Am1<self::Jm1::Z*> {
   synthetic constructor •() → self::Jm1<self::Jm1::Z*>*
@@ -206,6 +306,16 @@
   const synthetic constructor •() → self::_Km1&Object&Am1<self::_Km1&Object&Am1::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Km1<Z extends core::Object* = dynamic> extends self::_Km1&Object&Am1<self::Km1::Z*> {
   synthetic constructor •() → self::Km1<self::Km1::Z*>*
@@ -216,6 +326,16 @@
   const synthetic constructor •() → self::_Lm1&Object&Am1<self::_Lm1&Object&Am1::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Lm1<Z extends core::Object* = dynamic> extends self::_Lm1&Object&Am1<self::Lm1::Z*> {
   synthetic constructor •() → self::Lm1<self::Lm1::Z*>*
@@ -226,66 +346,196 @@
   const synthetic constructor •() → self::Mm1<self::Mm1::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Nm1<Z extends core::Object* = dynamic> extends core::Object implements self::Am1<(core::int*) →* dynamic, self::Nm1::Z*> /*isEliminatedMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::Nm1<self::Nm1::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Om1<Z extends core::Object* = dynamic> extends core::Object implements self::Am1<() →* core::int*, self::Om1::Z*> /*isEliminatedMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::Om1<self::Om1::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Pm1<Z extends core::Object* = dynamic> extends core::Object implements self::Am1<() →* dynamic, self::Pm1::Z*> /*isEliminatedMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::Pm1<self::Pm1::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Qm1<Z extends core::Object* = dynamic> extends core::Object implements self::Am1<() →* dynamic, self::Qm1::Z*> /*isEliminatedMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::Qm1<self::Qm1::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Rm1<Z extends core::Object* = dynamic> extends core::Object implements self::Am1<({x: core::int*}) →* dynamic, self::Rm1::Z*> /*isEliminatedMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::Rm1<self::Rm1::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Sm1<Z extends core::Object* = dynamic> extends core::Object implements self::Am1<([core::int*]) →* dynamic, self::Sm1::Z*> /*isEliminatedMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::Sm1<self::Sm1::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Tm1<Z extends core::Object* = dynamic> extends core::Object implements self::Am1<([core::int*]) →* dynamic, self::Tm1::Z*> /*isEliminatedMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::Tm1<self::Tm1::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Um1<Z extends core::Object* = dynamic> extends core::Object implements self::Am1<core::Function*, self::Um1::Z*> /*isEliminatedMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::Um1<self::Um1::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Vm1<Z extends core::Object* = dynamic> extends core::Object implements self::Am1<(core::Function*) →* dynamic, self::Vm1::Z*> /*isEliminatedMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::Vm1<self::Vm1::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Wm1<Z extends core::Object* = dynamic> extends core::Object implements self::Am1<() →* (() →* core::Function*) →* dynamic, self::Wm1::Z*> /*isEliminatedMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::Wm1<self::Wm1::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Am2<X extends () →* dynamic = () →* dynamic, Y extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::Am2<self::Am2::X*, self::Am2::Y*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class _Bm2&Object&Am2<Z extends core::Object* = dynamic> extends core::Object implements self::Am2<(core::int*) →* dynamic, self::_Bm2&Object&Am2::Z*> /*isAnonymousMixin,isEliminatedMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::_Bm2&Object&Am2<self::_Bm2&Object&Am2::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Bm2<Z extends core::Object* = dynamic> extends self::_Bm2&Object&Am2<self::Bm2::Z*> {
   synthetic constructor •() → self::Bm2<self::Bm2::Z*>*
@@ -296,6 +546,16 @@
   const synthetic constructor •() → self::_Cm2&Object&Am2<self::_Cm2&Object&Am2::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Cm2<Z extends core::Object* = dynamic> extends self::_Cm2&Object&Am2<self::Cm2::Z*> {
   synthetic constructor •() → self::Cm2<self::Cm2::Z*>*
@@ -306,6 +566,16 @@
   const synthetic constructor •() → self::_Dm2&Object&Am2<self::_Dm2&Object&Am2::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Dm2<Z extends core::Object* = dynamic> extends self::_Dm2&Object&Am2<self::Dm2::Z*> {
   synthetic constructor •() → self::Dm2<self::Dm2::Z*>*
@@ -316,6 +586,16 @@
   const synthetic constructor •() → self::_Em2&Object&Am2<self::_Em2&Object&Am2::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Em2<Z extends core::Object* = dynamic> extends self::_Em2&Object&Am2<self::Em2::Z*> {
   synthetic constructor •() → self::Em2<self::Em2::Z*>*
@@ -326,6 +606,16 @@
   const synthetic constructor •() → self::_Fm2&Object&Am2<self::_Fm2&Object&Am2::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Fm2<Z extends core::Object* = dynamic> extends self::_Fm2&Object&Am2<self::Fm2::Z*> {
   synthetic constructor •() → self::Fm2<self::Fm2::Z*>*
@@ -336,6 +626,16 @@
   const synthetic constructor •() → self::_Gm2&Object&Am2<self::_Gm2&Object&Am2::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Gm2<Z extends core::Object* = dynamic> extends self::_Gm2&Object&Am2<self::Gm2::Z*> {
   synthetic constructor •() → self::Gm2<self::Gm2::Z*>*
@@ -346,6 +646,16 @@
   const synthetic constructor •() → self::_Hm2&Object&Am2<self::_Hm2&Object&Am2::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Hm2<Z extends core::Object* = dynamic> extends self::_Hm2&Object&Am2<self::Hm2::Z*> {
   synthetic constructor •() → self::Hm2<self::Hm2::Z*>*
@@ -356,6 +666,16 @@
   const synthetic constructor •() → self::_Im2&Object&Am2<self::_Im2&Object&Am2::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Im2<Z extends core::Object* = dynamic> extends self::_Im2&Object&Am2<self::Im2::Z*> {
   synthetic constructor •() → self::Im2<self::Im2::Z*>*
@@ -366,6 +686,16 @@
   const synthetic constructor •() → self::_Jm2&Object&Am2<self::_Jm2&Object&Am2::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Jm2<Z extends core::Object* = dynamic> extends self::_Jm2&Object&Am2<self::Jm2::Z*> {
   synthetic constructor •() → self::Jm2<self::Jm2::Z*>*
@@ -376,6 +706,16 @@
   const synthetic constructor •() → self::_Km2&Object&Am2<self::_Km2&Object&Am2::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Km2<Z extends core::Object* = dynamic> extends self::_Km2&Object&Am2<self::Km2::Z*> {
   synthetic constructor •() → self::Km2<self::Km2::Z*>*
@@ -386,6 +726,16 @@
   const synthetic constructor •() → self::_Lm2&Object&Am2<self::_Lm2&Object&Am2::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Lm2<Z extends core::Object* = dynamic> extends self::_Lm2&Object&Am2<self::Lm2::Z*> {
   synthetic constructor •() → self::Lm2<self::Lm2::Z*>*
@@ -396,66 +746,196 @@
   const synthetic constructor •() → self::Mm2<self::Mm2::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Nm2<Z extends core::Object* = dynamic> extends core::Object implements self::Am2<(core::int*) →* dynamic, self::Nm2::Z*> /*isEliminatedMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::Nm2<self::Nm2::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Om2<Z extends core::Object* = dynamic> extends core::Object implements self::Am2<() →* core::int*, self::Om2::Z*> /*isEliminatedMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::Om2<self::Om2::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Pm2<Z extends core::Object* = dynamic> extends core::Object implements self::Am2<() →* dynamic, self::Pm2::Z*> /*isEliminatedMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::Pm2<self::Pm2::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Qm2<Z extends core::Object* = dynamic> extends core::Object implements self::Am2<() →* dynamic, self::Qm2::Z*> /*isEliminatedMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::Qm2<self::Qm2::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Rm2<Z extends core::Object* = dynamic> extends core::Object implements self::Am2<({x: core::int*}) →* dynamic, self::Rm2::Z*> /*isEliminatedMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::Rm2<self::Rm2::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Sm2<Z extends core::Object* = dynamic> extends core::Object implements self::Am2<([core::int*]) →* dynamic, self::Sm2::Z*> /*isEliminatedMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::Sm2<self::Sm2::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Tm2<Z extends core::Object* = dynamic> extends core::Object implements self::Am2<([core::int*]) →* dynamic, self::Tm2::Z*> /*isEliminatedMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::Tm2<self::Tm2::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Um2<Z extends core::Object* = dynamic> extends core::Object implements self::Am2<core::Function*, self::Um2::Z*> /*isEliminatedMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::Um2<self::Um2::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Vm2<Z extends core::Object* = dynamic> extends core::Object implements self::Am2<(core::Function*) →* dynamic, self::Vm2::Z*> /*isEliminatedMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::Vm2<self::Vm2::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Wm2<Z extends core::Object* = dynamic> extends core::Object implements self::Am2<() →* (() →* core::Function*) →* dynamic, self::Wm2::Z*> /*isEliminatedMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::Wm2<self::Wm2::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Am3<L extends core::Object* = dynamic, Y extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::Am3<self::Am3::L*, self::Am3::Y*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class _Bm3&Object&Am3<Z extends core::Object* = dynamic> extends core::Object implements self::Am3<(core::int*) →* dynamic, self::_Bm3&Object&Am3::Z*> /*isAnonymousMixin,isEliminatedMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::_Bm3&Object&Am3<self::_Bm3&Object&Am3::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Bm3<Z extends core::Object* = dynamic> extends self::_Bm3&Object&Am3<self::Bm3::Z*> {
   synthetic constructor •() → self::Bm3<self::Bm3::Z*>*
@@ -466,6 +946,16 @@
   const synthetic constructor •() → self::_Cm3&Object&Am3<self::_Cm3&Object&Am3::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Cm3<Z extends core::Object* = dynamic> extends self::_Cm3&Object&Am3<self::Cm3::Z*> {
   synthetic constructor •() → self::Cm3<self::Cm3::Z*>*
@@ -476,6 +966,16 @@
   const synthetic constructor •() → self::_Dm3&Object&Am3<self::_Dm3&Object&Am3::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Dm3<Z extends core::Object* = dynamic> extends self::_Dm3&Object&Am3<self::Dm3::Z*> {
   synthetic constructor •() → self::Dm3<self::Dm3::Z*>*
@@ -486,6 +986,16 @@
   const synthetic constructor •() → self::_Em3&Object&Am3<self::_Em3&Object&Am3::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Em3<Z extends core::Object* = dynamic> extends self::_Em3&Object&Am3<self::Em3::Z*> {
   synthetic constructor •() → self::Em3<self::Em3::Z*>*
@@ -496,6 +1006,16 @@
   const synthetic constructor •() → self::_Fm3&Object&Am3<self::_Fm3&Object&Am3::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Fm3<Z extends core::Object* = dynamic> extends self::_Fm3&Object&Am3<self::Fm3::Z*> {
   synthetic constructor •() → self::Fm3<self::Fm3::Z*>*
@@ -506,6 +1026,16 @@
   const synthetic constructor •() → self::_Gm3&Object&Am3<self::_Gm3&Object&Am3::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Gm3<Z extends core::Object* = dynamic> extends self::_Gm3&Object&Am3<self::Gm3::Z*> {
   synthetic constructor •() → self::Gm3<self::Gm3::Z*>*
@@ -516,6 +1046,16 @@
   const synthetic constructor •() → self::_Hm3&Object&Am3<self::_Hm3&Object&Am3::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Hm3<Z extends core::Object* = dynamic> extends self::_Hm3&Object&Am3<self::Hm3::Z*> {
   synthetic constructor •() → self::Hm3<self::Hm3::Z*>*
@@ -526,6 +1066,16 @@
   const synthetic constructor •() → self::_Im3&Object&Am3<self::_Im3&Object&Am3::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Im3<Z extends core::Object* = dynamic> extends self::_Im3&Object&Am3<self::Im3::Z*> {
   synthetic constructor •() → self::Im3<self::Im3::Z*>*
@@ -536,6 +1086,16 @@
   const synthetic constructor •() → self::_Jm3&Object&Am3<self::_Jm3&Object&Am3::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Jm3<Z extends core::Object* = dynamic> extends self::_Jm3&Object&Am3<self::Jm3::Z*> {
   synthetic constructor •() → self::Jm3<self::Jm3::Z*>*
@@ -546,6 +1106,16 @@
   const synthetic constructor •() → self::_Km3&Object&Am3<self::_Km3&Object&Am3::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Km3<Z extends core::Object* = dynamic> extends self::_Km3&Object&Am3<self::Km3::Z*> {
   synthetic constructor •() → self::Km3<self::Km3::Z*>*
@@ -555,85 +1125,295 @@
 class Af1<X extends (core::int*) →* dynamic = (core::int*) →* dynamic> extends core::Object {
   static factory foo<X extends (core::int*) →* dynamic = dynamic>() → self::Af1<self::Af1::foo::X*>*
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Bf1<X extends (core::int*) →* dynamic = (core::int*) →* dynamic> extends core::Object {
   static factory foo<X extends (core::int*) →* dynamic = dynamic>() → self::Bf1<self::Bf1::foo::X*>*
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Cf1<X extends () →* core::int* = () →* core::int*> extends core::Object {
   static factory foo<X extends () →* core::int* = dynamic>() → self::Cf1<self::Cf1::foo::X*>*
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Df1<X extends () →* dynamic = () →* dynamic> extends core::Object {
   static factory foo<X extends () →* dynamic = dynamic>() → self::Df1<self::Df1::foo::X*>*
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Ef1<X extends () →* dynamic = () →* dynamic> extends core::Object {
   static factory foo<X extends () →* dynamic = dynamic>() → self::Ef1<self::Ef1::foo::X*>*
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Ff1<X extends ({x: core::int*}) →* dynamic = ({x: core::int*}) →* dynamic> extends core::Object {
   static factory foo<X extends ({x: core::int*}) →* dynamic = dynamic>() → self::Ff1<self::Ff1::foo::X*>*
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Gf1<X extends ([core::int*]) →* dynamic = ([core::int*]) →* dynamic> extends core::Object {
   static factory foo<X extends ([core::int*]) →* dynamic = dynamic>() → self::Gf1<self::Gf1::foo::X*>*
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Hf1<X extends ([core::int*]) →* dynamic = ([core::int*]) →* dynamic> extends core::Object {
   static factory foo<X extends ([core::int*]) →* dynamic = dynamic>() → self::Hf1<self::Hf1::foo::X*>*
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class If1<X extends core::Function* = core::Function*> extends core::Object {
   static factory foo<X extends core::Function* = dynamic>() → self::If1<self::If1::foo::X*>*
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Jf1<X extends (core::Function*) →* dynamic = (core::Function*) →* dynamic> extends core::Object {
   static factory foo<X extends (core::Function*) →* dynamic = dynamic>() → self::Jf1<self::Jf1::foo::X*>*
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Kf1<X extends () →* (() →* core::Function*) →* dynamic = () →* (() →* core::Function*) →* dynamic> extends core::Object {
   static factory foo<X extends () →* (() →* core::Function*) →* dynamic = dynamic>() → self::Kf1<self::Kf1::foo::X*>*
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Bf2<X extends (core::int*) →* dynamic = (core::int*) →* dynamic> extends core::Object {
   static factory foo<X extends (core::int*) →* dynamic = dynamic>() → self::Bf2<self::Bf2::foo::X*>*
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Cf2<X extends (core::int*) →* dynamic = (core::int*) →* dynamic> extends core::Object {
   static factory foo<X extends (core::int*) →* dynamic = dynamic>() → self::Cf2<self::Cf2::foo::X*>*
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Df2<X extends () →* core::int* = () →* core::int*> extends core::Object {
   static factory foo<X extends () →* core::int* = dynamic>() → self::Df2<self::Df2::foo::X*>*
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Ef2<X extends () →* dynamic = () →* dynamic> extends core::Object {
   static factory foo<X extends () →* dynamic = dynamic>() → self::Ef2<self::Ef2::foo::X*>*
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Ff2<X extends () →* dynamic = () →* dynamic> extends core::Object {
   static factory foo<X extends () →* dynamic = dynamic>() → self::Ff2<self::Ff2::foo::X*>*
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Gf2<X extends ({x: core::int*}) →* dynamic = ({x: core::int*}) →* dynamic> extends core::Object {
   static factory foo<X extends ({x: core::int*}) →* dynamic = dynamic>() → self::Gf2<self::Gf2::foo::X*>*
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Hf2<X extends ([core::int*]) →* dynamic = ([core::int*]) →* dynamic> extends core::Object {
   static factory foo<X extends ([core::int*]) →* dynamic = dynamic>() → self::Hf2<self::Hf2::foo::X*>*
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class If2<X extends ([core::int*]) →* dynamic = ([core::int*]) →* dynamic> extends core::Object {
   static factory foo<X extends ([core::int*]) →* dynamic = dynamic>() → self::If2<self::If2::foo::X*>*
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Jf2<X extends (core::Function*) →* dynamic = (core::Function*) →* dynamic> extends core::Object {
   static factory foo<X extends (core::Function*) →* dynamic = dynamic>() → self::Jf2<self::Jf2::foo::X*>*
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Kf2<X extends () →* (() →* core::Function*) →* dynamic = () →* (() →* core::Function*) →* dynamic> extends core::Object {
   static factory foo<X extends () →* (() →* core::Function*) →* dynamic = dynamic>() → self::Kf2<self::Kf2::foo::X*>*
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general/closure.dart.outline.expect b/pkg/front_end/testcases/general/closure.dart.outline.expect
index 4f62ce2..3d14bb8 100644
--- a/pkg/front_end/testcases/general/closure.dart.outline.expect
+++ b/pkg/front_end/testcases/general/closure.dart.outline.expect
@@ -6,10 +6,30 @@
   field self::Bar* _field;
   synthetic constructor •() → self::Foo*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Bar extends core::Object {
   synthetic constructor •() → self::Bar*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method useCallback(dynamic callback) → dynamic
   ;
diff --git a/pkg/front_end/testcases/general/closure.dart.strong.expect b/pkg/front_end/testcases/general/closure.dart.strong.expect
index bb83955..9362964 100644
--- a/pkg/front_end/testcases/general/closure.dart.strong.expect
+++ b/pkg/front_end/testcases/general/closure.dart.strong.expect
@@ -7,11 +7,31 @@
   synthetic constructor •() → self::Foo*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Bar extends core::Object {
   synthetic constructor •() → self::Bar*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method useCallback(dynamic callback) → dynamic {
   dynamic _ = callback.call();
diff --git a/pkg/front_end/testcases/general/closure.dart.strong.transformed.expect b/pkg/front_end/testcases/general/closure.dart.strong.transformed.expect
index bb83955..9362964 100644
--- a/pkg/front_end/testcases/general/closure.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general/closure.dart.strong.transformed.expect
@@ -7,11 +7,31 @@
   synthetic constructor •() → self::Foo*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Bar extends core::Object {
   synthetic constructor •() → self::Bar*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method useCallback(dynamic callback) → dynamic {
   dynamic _ = callback.call();
diff --git a/pkg/front_end/testcases/general/co19_language_metadata_syntax_t04.dart.outline.expect b/pkg/front_end/testcases/general/co19_language_metadata_syntax_t04.dart.outline.expect
index a68c8ab..134485a 100644
--- a/pkg/front_end/testcases/general/co19_language_metadata_syntax_t04.dart.outline.expect
+++ b/pkg/front_end/testcases/general/co19_language_metadata_syntax_t04.dart.outline.expect
@@ -20,10 +20,30 @@
   const constructor •() → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends core::Object {
   synthetic constructor •() → self::B*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/general/co19_language_metadata_syntax_t04.dart.strong.expect b/pkg/front_end/testcases/general/co19_language_metadata_syntax_t04.dart.strong.expect
index 1b41001..37896d9 100644
--- a/pkg/front_end/testcases/general/co19_language_metadata_syntax_t04.dart.strong.expect
+++ b/pkg/front_end/testcases/general/co19_language_metadata_syntax_t04.dart.strong.expect
@@ -20,10 +20,30 @@
   const constructor •() → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends core::Object {
   synthetic constructor •() → self::B*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general/co19_language_metadata_syntax_t04.dart.strong.transformed.expect b/pkg/front_end/testcases/general/co19_language_metadata_syntax_t04.dart.strong.transformed.expect
index 1b41001..37896d9 100644
--- a/pkg/front_end/testcases/general/co19_language_metadata_syntax_t04.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general/co19_language_metadata_syntax_t04.dart.strong.transformed.expect
@@ -20,10 +20,30 @@
   const constructor •() → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends core::Object {
   synthetic constructor •() → self::B*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general/complex_class_hierarchy.dart.outline.expect b/pkg/front_end/testcases/general/complex_class_hierarchy.dart.outline.expect
index 73716f7..bccf614 100644
--- a/pkg/front_end/testcases/general/complex_class_hierarchy.dart.outline.expect
+++ b/pkg/front_end/testcases/general/complex_class_hierarchy.dart.outline.expect
@@ -5,6 +5,16 @@
 class A extends core::Object {
   synthetic constructor •() → self::A*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A {
   synthetic constructor •() → self::B*
@@ -21,6 +31,16 @@
 class G<T extends self::A* = self::A*> extends core::Object {
   synthetic constructor •() → self::G<self::G::T*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class GB extends self::G<self::B*> {
   synthetic constructor •() → self::GB*
@@ -37,6 +57,16 @@
 class X extends core::Object implements self::A {
   synthetic constructor •() → self::X*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Y extends self::X {
   synthetic constructor •() → self::Y*
@@ -45,14 +75,44 @@
 class Z extends core::Object implements self::Y {
   synthetic constructor •() → self::Z*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class W extends core::Object implements self::Z {
   synthetic constructor •() → self::W*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class GX extends core::Object implements self::G<self::A*> {
   synthetic constructor •() → self::GX*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class GY extends self::X implements self::GB {
   synthetic constructor •() → self::GY*
@@ -61,10 +121,30 @@
 class GZ extends core::Object implements self::Y, self::GC {
   synthetic constructor •() → self::GZ*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class GW extends core::Object implements self::Z, self::GD {
   synthetic constructor •() → self::GW*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class GU extends self::GW {
   synthetic constructor •() → self::GU*
@@ -77,10 +157,30 @@
 class ARO<S extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::ARO<self::ARO::S*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class ARQ<T extends core::Object* = dynamic> extends core::Object implements self::ARO<self::ARQ::T*> {
   synthetic constructor •() → self::ARQ<self::ARQ::T*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class ARN extends self::ARQ<self::A*> {
   synthetic constructor •() → self::ARN*
diff --git a/pkg/front_end/testcases/general/complex_class_hierarchy.dart.strong.expect b/pkg/front_end/testcases/general/complex_class_hierarchy.dart.strong.expect
index def07a7..83cec9b 100644
--- a/pkg/front_end/testcases/general/complex_class_hierarchy.dart.strong.expect
+++ b/pkg/front_end/testcases/general/complex_class_hierarchy.dart.strong.expect
@@ -6,6 +6,16 @@
   synthetic constructor •() → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A {
   synthetic constructor •() → self::B*
@@ -26,6 +36,16 @@
   synthetic constructor •() → self::G<self::G::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class GB extends self::G<self::B*> {
   synthetic constructor •() → self::GB*
@@ -46,6 +66,16 @@
   synthetic constructor •() → self::X*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Y extends self::X {
   synthetic constructor •() → self::Y*
@@ -56,16 +86,46 @@
   synthetic constructor •() → self::Z*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class W extends core::Object implements self::Z {
   synthetic constructor •() → self::W*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class GX extends core::Object implements self::G<self::A*> {
   synthetic constructor •() → self::GX*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class GY extends self::X implements self::GB {
   synthetic constructor •() → self::GY*
@@ -76,11 +136,31 @@
   synthetic constructor •() → self::GZ*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class GW extends core::Object implements self::Z, self::GD {
   synthetic constructor •() → self::GW*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class GU extends self::GW {
   synthetic constructor •() → self::GU*
@@ -96,11 +176,31 @@
   synthetic constructor •() → self::ARO<self::ARO::S*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class ARQ<T extends core::Object* = dynamic> extends core::Object implements self::ARO<self::ARQ::T*> {
   synthetic constructor •() → self::ARQ<self::ARQ::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class ARN extends self::ARQ<self::A*> {
   synthetic constructor •() → self::ARN*
diff --git a/pkg/front_end/testcases/general/complex_class_hierarchy.dart.strong.transformed.expect b/pkg/front_end/testcases/general/complex_class_hierarchy.dart.strong.transformed.expect
index def07a7..83cec9b 100644
--- a/pkg/front_end/testcases/general/complex_class_hierarchy.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general/complex_class_hierarchy.dart.strong.transformed.expect
@@ -6,6 +6,16 @@
   synthetic constructor •() → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A {
   synthetic constructor •() → self::B*
@@ -26,6 +36,16 @@
   synthetic constructor •() → self::G<self::G::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class GB extends self::G<self::B*> {
   synthetic constructor •() → self::GB*
@@ -46,6 +66,16 @@
   synthetic constructor •() → self::X*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Y extends self::X {
   synthetic constructor •() → self::Y*
@@ -56,16 +86,46 @@
   synthetic constructor •() → self::Z*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class W extends core::Object implements self::Z {
   synthetic constructor •() → self::W*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class GX extends core::Object implements self::G<self::A*> {
   synthetic constructor •() → self::GX*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class GY extends self::X implements self::GB {
   synthetic constructor •() → self::GY*
@@ -76,11 +136,31 @@
   synthetic constructor •() → self::GZ*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class GW extends core::Object implements self::Z, self::GD {
   synthetic constructor •() → self::GW*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class GU extends self::GW {
   synthetic constructor •() → self::GU*
@@ -96,11 +176,31 @@
   synthetic constructor •() → self::ARO<self::ARO::S*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class ARQ<T extends core::Object* = dynamic> extends core::Object implements self::ARO<self::ARQ::T*> {
   synthetic constructor •() → self::ARQ<self::ARQ::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class ARN extends self::ARQ<self::A*> {
   synthetic constructor •() → self::ARN*
diff --git a/pkg/front_end/testcases/general/compound_binary_implicit_as.dart.outline.expect b/pkg/front_end/testcases/general/compound_binary_implicit_as.dart.outline.expect
index 36ce691..d8fd738 100644
--- a/pkg/front_end/testcases/general/compound_binary_implicit_as.dart.outline.expect
+++ b/pkg/front_end/testcases/general/compound_binary_implicit_as.dart.outline.expect
@@ -5,6 +5,16 @@
 class A extends core::Object {
   synthetic constructor •() → self::A*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A {
   synthetic constructor •() → self::B*
diff --git a/pkg/front_end/testcases/general/compound_binary_implicit_as.dart.strong.expect b/pkg/front_end/testcases/general/compound_binary_implicit_as.dart.strong.expect
index 3781401..bd2219f 100644
--- a/pkg/front_end/testcases/general/compound_binary_implicit_as.dart.strong.expect
+++ b/pkg/front_end/testcases/general/compound_binary_implicit_as.dart.strong.expect
@@ -6,6 +6,16 @@
   synthetic constructor •() → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A {
   synthetic constructor •() → self::B*
diff --git a/pkg/front_end/testcases/general/compound_binary_implicit_as.dart.strong.transformed.expect b/pkg/front_end/testcases/general/compound_binary_implicit_as.dart.strong.transformed.expect
index 3781401..bd2219f 100644
--- a/pkg/front_end/testcases/general/compound_binary_implicit_as.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general/compound_binary_implicit_as.dart.strong.transformed.expect
@@ -6,6 +6,16 @@
   synthetic constructor •() → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A {
   synthetic constructor •() → self::B*
diff --git a/pkg/front_end/testcases/general/const_redirect_to_nonconst.dart.outline.expect b/pkg/front_end/testcases/general/const_redirect_to_nonconst.dart.outline.expect
index d28ec62..53d910d 100644
--- a/pkg/front_end/testcases/general/const_redirect_to_nonconst.dart.outline.expect
+++ b/pkg/front_end/testcases/general/const_redirect_to_nonconst.dart.outline.expect
@@ -15,6 +15,16 @@
     ;
   constructor bad() → self::A*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A /*hasConstConstructor*/  {
   const constructor •() → self::B*
diff --git a/pkg/front_end/testcases/general/const_redirect_to_nonconst.dart.strong.expect b/pkg/front_end/testcases/general/const_redirect_to_nonconst.dart.strong.expect
index 12ac432..a934b2d 100644
--- a/pkg/front_end/testcases/general/const_redirect_to_nonconst.dart.strong.expect
+++ b/pkg/front_end/testcases/general/const_redirect_to_nonconst.dart.strong.expect
@@ -19,6 +19,16 @@
     ;
   constructor bad() → self::A*
     : super core::Object::•() {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A /*hasConstConstructor*/  {
   const constructor •() → self::B*
diff --git a/pkg/front_end/testcases/general/const_redirect_to_nonconst.dart.strong.transformed.expect b/pkg/front_end/testcases/general/const_redirect_to_nonconst.dart.strong.transformed.expect
index 12ac432..a934b2d 100644
--- a/pkg/front_end/testcases/general/const_redirect_to_nonconst.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general/const_redirect_to_nonconst.dart.strong.transformed.expect
@@ -19,6 +19,16 @@
     ;
   constructor bad() → self::A*
     : super core::Object::•() {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A /*hasConstConstructor*/  {
   const constructor •() → self::B*
diff --git a/pkg/front_end/testcases/general/constructor_const_inference.dart.outline.expect b/pkg/front_end/testcases/general/constructor_const_inference.dart.outline.expect
index 934d099..bbe0bc2 100644
--- a/pkg/front_end/testcases/general/constructor_const_inference.dart.outline.expect
+++ b/pkg/front_end/testcases/general/constructor_const_inference.dart.outline.expect
@@ -6,11 +6,31 @@
   const constructor •() → self::_Y<self::_Y::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class A<T extends core::Object* = dynamic> extends core::Object {
   generic-covariant-impl field self::_Y<self::A::T*>* x;
   constructor •(self::_Y<self::A::T*>* x) → self::A<self::A::T*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B<T extends core::Object* = dynamic> extends self::A<self::B::T*> {
   constructor •() → self::B<self::B::T*>*
diff --git a/pkg/front_end/testcases/general/constructor_const_inference.dart.strong.expect b/pkg/front_end/testcases/general/constructor_const_inference.dart.strong.expect
index 1179768..b21f585 100644
--- a/pkg/front_end/testcases/general/constructor_const_inference.dart.strong.expect
+++ b/pkg/front_end/testcases/general/constructor_const_inference.dart.strong.expect
@@ -6,12 +6,32 @@
   const constructor •() → self::_Y<self::_Y::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class A<T extends core::Object* = dynamic> extends core::Object {
   generic-covariant-impl field self::_Y<self::A::T*>* x;
   constructor •(self::_Y<self::A::T*>* x) → self::A<self::A::T*>*
     : self::A::x = x, super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B<T extends core::Object* = dynamic> extends self::A<self::B::T*> {
   constructor •() → self::B<self::B::T*>*
diff --git a/pkg/front_end/testcases/general/constructor_const_inference.dart.strong.transformed.expect b/pkg/front_end/testcases/general/constructor_const_inference.dart.strong.transformed.expect
index 1179768..b21f585 100644
--- a/pkg/front_end/testcases/general/constructor_const_inference.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general/constructor_const_inference.dart.strong.transformed.expect
@@ -6,12 +6,32 @@
   const constructor •() → self::_Y<self::_Y::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class A<T extends core::Object* = dynamic> extends core::Object {
   generic-covariant-impl field self::_Y<self::A::T*>* x;
   constructor •(self::_Y<self::A::T*>* x) → self::A<self::A::T*>*
     : self::A::x = x, super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B<T extends core::Object* = dynamic> extends self::A<self::B::T*> {
   constructor •() → self::B<self::B::T*>*
diff --git a/pkg/front_end/testcases/general/constructor_cycle.dart.outline.expect b/pkg/front_end/testcases/general/constructor_cycle.dart.outline.expect
index 0f4bd7a..1d73f78 100644
--- a/pkg/front_end/testcases/general/constructor_cycle.dart.outline.expect
+++ b/pkg/front_end/testcases/general/constructor_cycle.dart.outline.expect
@@ -11,6 +11,16 @@
     ;
   constructor •() → self::A*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/general/constructor_cycle.dart.strong.expect b/pkg/front_end/testcases/general/constructor_cycle.dart.strong.expect
index d27a472..429dbb9 100644
--- a/pkg/front_end/testcases/general/constructor_cycle.dart.strong.expect
+++ b/pkg/front_end/testcases/general/constructor_cycle.dart.strong.expect
@@ -28,5 +28,15 @@
   constructor •() → self::A*
     : this self::A::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general/constructor_cycle.dart.strong.transformed.expect b/pkg/front_end/testcases/general/constructor_cycle.dart.strong.transformed.expect
index d27a472..429dbb9 100644
--- a/pkg/front_end/testcases/general/constructor_cycle.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general/constructor_cycle.dart.strong.transformed.expect
@@ -28,5 +28,15 @@
   constructor •() → self::A*
     : this self::A::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general/constructor_function_types.dart.outline.expect b/pkg/front_end/testcases/general/constructor_function_types.dart.outline.expect
index cdb1d5b..e6e46e9 100644
--- a/pkg/front_end/testcases/general/constructor_function_types.dart.outline.expect
+++ b/pkg/front_end/testcases/general/constructor_function_types.dart.outline.expect
@@ -5,18 +5,58 @@
 class A extends core::Object {
   constructor •() → self::A*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends core::Object {
   constructor •(core::int* x, core::double* y, core::String* s) → self::B*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C<T extends core::Object* = dynamic> extends core::Object {
   constructor •() → self::C<self::C::T*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D<T extends core::Object* = dynamic, S extends core::Object* = dynamic> extends core::Object {
   constructor •(self::D::T* x, self::D::S* y) → self::D<self::D::T*, self::D::S*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → void
   ;
diff --git a/pkg/front_end/testcases/general/constructor_function_types.dart.strong.expect b/pkg/front_end/testcases/general/constructor_function_types.dart.strong.expect
index dfca6ce..5a5ea65 100644
--- a/pkg/front_end/testcases/general/constructor_function_types.dart.strong.expect
+++ b/pkg/front_end/testcases/general/constructor_function_types.dart.strong.expect
@@ -6,21 +6,61 @@
   constructor •() → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends core::Object {
   constructor •(core::int* x, core::double* y, core::String* s) → self::B*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C<T extends core::Object* = dynamic> extends core::Object {
   constructor •() → self::C<self::C::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D<T extends core::Object* = dynamic, S extends core::Object* = dynamic> extends core::Object {
   constructor •(self::D::T* x, self::D::S* y) → self::D<self::D::T*, self::D::S*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → void {
   new self::A::•();
diff --git a/pkg/front_end/testcases/general/constructor_function_types.dart.strong.transformed.expect b/pkg/front_end/testcases/general/constructor_function_types.dart.strong.transformed.expect
index dfca6ce..5a5ea65 100644
--- a/pkg/front_end/testcases/general/constructor_function_types.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general/constructor_function_types.dart.strong.transformed.expect
@@ -6,21 +6,61 @@
   constructor •() → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends core::Object {
   constructor •(core::int* x, core::double* y, core::String* s) → self::B*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C<T extends core::Object* = dynamic> extends core::Object {
   constructor •() → self::C<self::C::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D<T extends core::Object* = dynamic, S extends core::Object* = dynamic> extends core::Object {
   constructor •(self::D::T* x, self::D::S* y) → self::D<self::D::T*, self::D::S*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → void {
   new self::A::•();
diff --git a/pkg/front_end/testcases/general/constructor_initializer_invalid.dart.outline.expect b/pkg/front_end/testcases/general/constructor_initializer_invalid.dart.outline.expect
index bd5723a..2d3a719 100644
--- a/pkg/front_end/testcases/general/constructor_initializer_invalid.dart.outline.expect
+++ b/pkg/front_end/testcases/general/constructor_initializer_invalid.dart.outline.expect
@@ -23,16 +23,46 @@
   field core::int* f;
   constructor •() → self::C1*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C2 extends core::Object {
   field core::int* f;
   constructor •() → self::C2*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C3 extends core::Object {
   field core::int* f;
   constructor •() → self::C3*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/general/constructor_initializer_invalid.dart.strong.expect b/pkg/front_end/testcases/general/constructor_initializer_invalid.dart.strong.expect
index 62aa508..29ca0a2 100644
--- a/pkg/front_end/testcases/general/constructor_initializer_invalid.dart.strong.expect
+++ b/pkg/front_end/testcases/general/constructor_initializer_invalid.dart.strong.expect
@@ -30,6 +30,16 @@
 class C1 { int f; C1() : ; }
                          ^"
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C2 extends core::Object {
   field core::int* f;
@@ -38,6 +48,16 @@
 class C2 { int f; C2() : f; }
                           ^" as{TypeError,ForDynamic} core::int*, super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C3 extends core::Object {
   field core::int* f = null;
@@ -46,12 +66,22 @@
 class C3 { int f; C3() : f++; }
                          ^"
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   self::C1* c1 = new self::C1::•();
-  c1.{core::Object::toString}();
+  c1.{self::C1::toString}();
   self::C2* c2 = new self::C2::•();
-  c2.{core::Object::toString}();
+  c2.{self::C2::toString}();
   self::C3* c3 = new self::C3::•();
-  c3.{core::Object::toString}();
+  c3.{self::C3::toString}();
 }
diff --git a/pkg/front_end/testcases/general/constructor_initializer_invalid.dart.strong.transformed.expect b/pkg/front_end/testcases/general/constructor_initializer_invalid.dart.strong.transformed.expect
index 62aa508..29ca0a2 100644
--- a/pkg/front_end/testcases/general/constructor_initializer_invalid.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general/constructor_initializer_invalid.dart.strong.transformed.expect
@@ -30,6 +30,16 @@
 class C1 { int f; C1() : ; }
                          ^"
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C2 extends core::Object {
   field core::int* f;
@@ -38,6 +48,16 @@
 class C2 { int f; C2() : f; }
                           ^" as{TypeError,ForDynamic} core::int*, super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C3 extends core::Object {
   field core::int* f = null;
@@ -46,12 +66,22 @@
 class C3 { int f; C3() : f++; }
                          ^"
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   self::C1* c1 = new self::C1::•();
-  c1.{core::Object::toString}();
+  c1.{self::C1::toString}();
   self::C2* c2 = new self::C2::•();
-  c2.{core::Object::toString}();
+  c2.{self::C2::toString}();
   self::C3* c3 = new self::C3::•();
-  c3.{core::Object::toString}();
+  c3.{self::C3::toString}();
 }
diff --git a/pkg/front_end/testcases/general/continue_inference_after_error.dart.outline.expect b/pkg/front_end/testcases/general/continue_inference_after_error.dart.outline.expect
index d71903c..eaabbf1 100644
--- a/pkg/front_end/testcases/general/continue_inference_after_error.dart.outline.expect
+++ b/pkg/front_end/testcases/general/continue_inference_after_error.dart.outline.expect
@@ -7,6 +7,16 @@
 class C extends core::Object {
   synthetic constructor •() → self::C*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method test() → dynamic
   ;
diff --git a/pkg/front_end/testcases/general/continue_inference_after_error.dart.strong.expect b/pkg/front_end/testcases/general/continue_inference_after_error.dart.strong.expect
index 7976271..5885acf 100644
--- a/pkg/front_end/testcases/general/continue_inference_after_error.dart.strong.expect
+++ b/pkg/front_end/testcases/general/continue_inference_after_error.dart.strong.expect
@@ -21,6 +21,16 @@
   synthetic constructor •() → self::C*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method test() → dynamic {
   let final<BottomType> #t1 = invalid-expression "pkg/front_end/testcases/general/continue_inference_after_error.dart:10:3: Error: A prefix can't be used as an expression.
diff --git a/pkg/front_end/testcases/general/continue_inference_after_error.dart.strong.transformed.expect b/pkg/front_end/testcases/general/continue_inference_after_error.dart.strong.transformed.expect
index 7976271..5885acf 100644
--- a/pkg/front_end/testcases/general/continue_inference_after_error.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general/continue_inference_after_error.dart.strong.transformed.expect
@@ -21,6 +21,16 @@
   synthetic constructor •() → self::C*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method test() → dynamic {
   let final<BottomType> #t1 = invalid-expression "pkg/front_end/testcases/general/continue_inference_after_error.dart:10:3: Error: A prefix can't be used as an expression.
diff --git a/pkg/front_end/testcases/general/control_flow_collection_inference.dart.outline.expect b/pkg/front_end/testcases/general/control_flow_collection_inference.dart.outline.expect
index baa3e6d..50ae146 100644
--- a/pkg/front_end/testcases/general/control_flow_collection_inference.dart.outline.expect
+++ b/pkg/front_end/testcases/general/control_flow_collection_inference.dart.outline.expect
@@ -6,6 +6,16 @@
 class A extends core::Object {
   synthetic constructor •() → self::A*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A {
   synthetic constructor •() → self::B*
diff --git a/pkg/front_end/testcases/general/control_flow_collection_inference.dart.strong.expect b/pkg/front_end/testcases/general/control_flow_collection_inference.dart.strong.expect
index 20225c7..93f1a5d 100644
--- a/pkg/front_end/testcases/general/control_flow_collection_inference.dart.strong.expect
+++ b/pkg/front_end/testcases/general/control_flow_collection_inference.dart.strong.expect
@@ -430,6 +430,16 @@
   synthetic constructor •() → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A {
   synthetic constructor •() → self::B*
diff --git a/pkg/front_end/testcases/general/control_flow_collection_inference.dart.strong.transformed.expect b/pkg/front_end/testcases/general/control_flow_collection_inference.dart.strong.transformed.expect
index 0057f19..178b13f 100644
--- a/pkg/front_end/testcases/general/control_flow_collection_inference.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general/control_flow_collection_inference.dart.strong.transformed.expect
@@ -431,6 +431,16 @@
   synthetic constructor •() → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A {
   synthetic constructor •() → self::B*
@@ -517,7 +527,7 @@
   core::Map<core::String*, core::int*>* map20 = block {
     final core::Map<core::String*, core::int*>* #t14 = <core::String*, core::int*>{};
     if(self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*) {
-      core::Iterator<core::MapEntry<core::String*, core::int*>*>* :sync-for-iterator = <core::String*, core::int*>{"bar": 42}.{core::Map::entries}.{core::Iterable::iterator};
+      core::Iterator<core::MapEntry<core::String*, core::int*>>* :sync-for-iterator = <core::String*, core::int*>{"bar": 42}.{core::Map::entries}.{core::Iterable::iterator};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         final core::MapEntry<core::String*, core::int*>* #t15 = :sync-for-iterator.{core::Iterator::current};
         #t14.{core::Map::[]=}(#t15.{core::MapEntry::key}, #t15.{core::MapEntry::value});
@@ -549,7 +559,7 @@
   core::Map<core::String*, dynamic>* map21 = block {
     final core::Map<core::String*, dynamic>* #t20 = <core::String*, dynamic>{};
     if(self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*) {
-      core::Iterator<core::MapEntry<core::String*, dynamic>*>* :sync-for-iterator = <core::String*, dynamic>{"bar": dynVar}.{core::Map::entries}.{core::Iterable::iterator};
+      core::Iterator<core::MapEntry<core::String*, dynamic>>* :sync-for-iterator = <core::String*, dynamic>{"bar": dynVar}.{core::Map::entries}.{core::Iterable::iterator};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         final core::MapEntry<core::String*, dynamic>* #t21 = :sync-for-iterator.{core::Iterator::current};
         #t20.{core::Map::[]=}(#t21.{core::MapEntry::key}, #t21.{core::MapEntry::value});
@@ -581,7 +591,7 @@
   core::Map<core::String*, core::List<core::int*>*>* map22 = block {
     final core::Map<core::String*, core::List<core::int*>*>* #t26 = <core::String*, core::List<core::int*>*>{};
     if(self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*) {
-      core::Iterator<core::MapEntry<core::String*, core::List<core::int*>*>*>* :sync-for-iterator = <core::String*, core::List<core::int*>*>{"bar": <core::int*>[42]}.{core::Map::entries}.{core::Iterable::iterator};
+      core::Iterator<core::MapEntry<core::String*, core::List<core::int*>*>>* :sync-for-iterator = <core::String*, core::List<core::int*>*>{"bar": <core::int*>[42]}.{core::Map::entries}.{core::Iterable::iterator};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         final core::MapEntry<core::String*, core::List<core::int*>*>* #t27 = :sync-for-iterator.{core::Iterator::current};
         #t26.{core::Map::[]=}(#t27.{core::MapEntry::key}, #t27.{core::MapEntry::value});
@@ -616,7 +626,7 @@
     final core::Map<core::String*, core::int*>* #t32 = <core::String*, core::int*>{};
     if(self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*)
       if(self::oracle<dynamic>() as{TypeError,ForDynamic} core::bool*) {
-        core::Iterator<core::MapEntry<core::String*, core::int*>*>* :sync-for-iterator = <core::String*, core::int*>{"bar": 42}.{core::Map::entries}.{core::Iterable::iterator};
+        core::Iterator<core::MapEntry<core::String*, core::int*>>* :sync-for-iterator = <core::String*, core::int*>{"bar": 42}.{core::Map::entries}.{core::Iterable::iterator};
         for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
           final core::MapEntry<core::String*, core::int*>* #t33 = :sync-for-iterator.{core::Iterator::current};
           #t32.{core::Map::[]=}(#t33.{core::MapEntry::key}, #t33.{core::MapEntry::value});
@@ -651,7 +661,7 @@
     final core::Map<core::String*, dynamic>* #t38 = <core::String*, dynamic>{};
     if(self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*)
       if(self::oracle<dynamic>() as{TypeError,ForDynamic} core::bool*) {
-        core::Iterator<core::MapEntry<core::String*, dynamic>*>* :sync-for-iterator = <core::String*, dynamic>{"bar": dynVar}.{core::Map::entries}.{core::Iterable::iterator};
+        core::Iterator<core::MapEntry<core::String*, dynamic>>* :sync-for-iterator = <core::String*, dynamic>{"bar": dynVar}.{core::Map::entries}.{core::Iterable::iterator};
         for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
           final core::MapEntry<core::String*, dynamic>* #t39 = :sync-for-iterator.{core::Iterator::current};
           #t38.{core::Map::[]=}(#t39.{core::MapEntry::key}, #t39.{core::MapEntry::value});
@@ -686,7 +696,7 @@
     final core::Map<core::String*, core::List<core::int*>*>* #t44 = <core::String*, core::List<core::int*>*>{};
     if(self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*)
       if(self::oracle<dynamic>() as{TypeError,ForDynamic} core::bool*) {
-        core::Iterator<core::MapEntry<core::String*, core::List<core::int*>*>*>* :sync-for-iterator = <core::String*, core::List<core::int*>*>{"bar": <core::int*>[42]}.{core::Map::entries}.{core::Iterable::iterator};
+        core::Iterator<core::MapEntry<core::String*, core::List<core::int*>*>>* :sync-for-iterator = <core::String*, core::List<core::int*>*>{"bar": <core::int*>[42]}.{core::Map::entries}.{core::Iterable::iterator};
         for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
           final core::MapEntry<core::String*, core::List<core::int*>*>* #t45 = :sync-for-iterator.{core::Iterator::current};
           #t44.{core::Map::[]=}(#t45.{core::MapEntry::key}, #t45.{core::MapEntry::value});
@@ -721,7 +731,7 @@
   core::List<core::List<core::int*>*>* list41 = block {
     final core::List<core::List<core::int*>*>* #t50 = <core::List<core::int*>*>[];
     if(self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*) {
-      core::Iterator<core::List<core::int*>*>* :sync-for-iterator = (let final core::Set<core::List<core::int*>*>* #t51 = col::LinkedHashSet::•<core::List<core::int*>*>() in let final core::bool* #t52 = #t51.{core::Set::add}(<core::int*>[]) in #t51).{core::Iterable::iterator};
+      core::Iterator<core::List<core::int*>*>* :sync-for-iterator = (let final core::Set<core::List<core::int*>*>* #t51 = col::LinkedHashSet::•<core::List<core::int*>*>() in let final core::bool #t52 = #t51.{core::Set::add}(<core::int*>[]) in #t51).{core::Iterable::iterator};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         final core::List<core::int*>* #t53 = :sync-for-iterator.{core::Iterator::current};
         #t50.{core::List::add}(#t53);
@@ -731,7 +741,7 @@
   core::Set<core::List<core::int*>*>* set41 = block {
     final core::Set<core::List<core::int*>*>* #t54 = col::LinkedHashSet::•<core::List<core::int*>*>();
     if(self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*) {
-      core::Iterator<core::List<core::int*>*>* :sync-for-iterator = (let final core::Set<core::List<core::int*>*>* #t55 = col::LinkedHashSet::•<core::List<core::int*>*>() in let final core::bool* #t56 = #t55.{core::Set::add}(<core::int*>[]) in #t55).{core::Iterable::iterator};
+      core::Iterator<core::List<core::int*>*>* :sync-for-iterator = (let final core::Set<core::List<core::int*>*>* #t55 = col::LinkedHashSet::•<core::List<core::int*>*>() in let final core::bool #t56 = #t55.{core::Set::add}(<core::int*>[]) in #t55).{core::Iterable::iterator};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         final core::List<core::int*>* #t57 = :sync-for-iterator.{core::Iterator::current};
         #t54.{core::Set::add}(#t57);
@@ -766,7 +776,7 @@
     final core::Map<core::String*, core::List<core::int*>*>* #t62 = <core::String*, core::List<core::int*>*>{};
     if(self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*)
       if(self::oracle<dynamic>() as{TypeError,ForDynamic} core::bool*) {
-        core::Iterator<core::MapEntry<core::String*, core::List<core::int*>*>*>* :sync-for-iterator = <core::String*, core::List<core::int*>*>{"bar": <core::int*>[]}.{core::Map::entries}.{core::Iterable::iterator};
+        core::Iterator<core::MapEntry<core::String*, core::List<core::int*>*>>* :sync-for-iterator = <core::String*, core::List<core::int*>*>{"bar": <core::int*>[]}.{core::Map::entries}.{core::Iterable::iterator};
         for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
           final core::MapEntry<core::String*, core::List<core::int*>*>* #t63 = :sync-for-iterator.{core::Iterator::current};
           #t62.{core::Map::[]=}(#t63.{core::MapEntry::key}, #t63.{core::MapEntry::value});
@@ -798,7 +808,7 @@
   core::Map<core::String*, core::int*>* map50 = block {
     final core::Map<core::String*, core::int*>* #t68 = <core::String*, core::int*>{};
     if(self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*) {
-      core::Iterator<core::MapEntry<core::String*, core::int*>*>* :sync-for-iterator = <core::String*, core::int*>{}.{core::Map::entries}.{core::Iterable::iterator};
+      core::Iterator<core::MapEntry<core::String*, core::int*>>* :sync-for-iterator = <core::String*, core::int*>{}.{core::Map::entries}.{core::Iterable::iterator};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         final core::MapEntry<core::String*, core::int*>* #t69 = :sync-for-iterator.{core::Iterator::current};
         #t68.{core::Map::[]=}(#t69.{core::MapEntry::key}, #t69.{core::MapEntry::value});
@@ -854,7 +864,7 @@
     final core::Map<core::String*, core::int*>* #t80 = <core::String*, core::int*>{};
     if(self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*)
       if(self::oracle<dynamic>() as{TypeError,ForDynamic} core::bool*) {
-        core::Iterator<core::MapEntry<core::String*, core::int*>*>* :sync-for-iterator = <core::String*, core::int*>{}.{core::Map::entries}.{core::Iterable::iterator};
+        core::Iterator<core::MapEntry<core::String*, core::int*>>* :sync-for-iterator = <core::String*, core::int*>{}.{core::Map::entries}.{core::Iterable::iterator};
         for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
           final core::MapEntry<core::String*, core::int*>* #t81 = :sync-for-iterator.{core::Iterator::current};
           #t80.{core::Map::[]=}(#t81.{core::MapEntry::key}, #t81.{core::MapEntry::value});
@@ -886,7 +896,7 @@
   core::Map<core::String*, core::List<core::int*>*>* map60 = block {
     final core::Map<core::String*, core::List<core::int*>*>* #t86 = <core::String*, core::List<core::int*>*>{};
     if(self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*) {
-      core::Iterator<core::MapEntry<core::String*, core::List<core::int*>*>*>* :sync-for-iterator = <core::String*, core::List<core::int*>*>{"bar": <core::int*>[]}.{core::Map::entries}.{core::Iterable::iterator};
+      core::Iterator<core::MapEntry<core::String*, core::List<core::int*>*>>* :sync-for-iterator = <core::String*, core::List<core::int*>*>{"bar": <core::int*>[]}.{core::Map::entries}.{core::Iterable::iterator};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         final core::MapEntry<core::String*, core::List<core::int*>*>* #t87 = :sync-for-iterator.{core::Iterator::current};
         #t86.{core::Map::[]=}(#t87.{core::MapEntry::key}, #t87.{core::MapEntry::value});
@@ -921,7 +931,7 @@
     final core::Map<core::String*, core::List<core::int*>*>* #t92 = <core::String*, core::List<core::int*>*>{};
     if(self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*)
       if(self::oracle<dynamic>() as{TypeError,ForDynamic} core::bool*) {
-        core::Iterator<core::MapEntry<core::String*, core::List<core::int*>*>*>* :sync-for-iterator = <core::String*, core::List<core::int*>*>{"bar": <core::int*>[]}.{core::Map::entries}.{core::Iterable::iterator};
+        core::Iterator<core::MapEntry<core::String*, core::List<core::int*>*>>* :sync-for-iterator = <core::String*, core::List<core::int*>*>{"bar": <core::int*>[]}.{core::Map::entries}.{core::Iterable::iterator};
         for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
           final core::MapEntry<core::String*, core::List<core::int*>*>* #t93 = :sync-for-iterator.{core::Iterator::current};
           #t92.{core::Map::[]=}(#t93.{core::MapEntry::key}, #t93.{core::MapEntry::value});
@@ -1014,14 +1024,14 @@
   core::Map<core::String*, core::num*>* map81 = block {
     final core::Map<core::String*, core::num*>* #t107 = <core::String*, core::num*>{};
     if(self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*) {
-      core::Iterator<core::MapEntry<core::String*, core::int*>*>* :sync-for-iterator = mapToInt.{core::Map::entries}.{core::Iterable::iterator};
+      core::Iterator<core::MapEntry<core::String*, core::int*>>* :sync-for-iterator = mapToInt.{core::Map::entries}.{core::Iterable::iterator};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         final core::MapEntry<core::String*, core::num*>* #t108 = :sync-for-iterator.{core::Iterator::current};
         #t107.{core::Map::[]=}(#t108.{core::MapEntry::key}, #t108.{core::MapEntry::value});
       }
     }
     else {
-      core::Iterator<core::MapEntry<core::String*, core::double*>*>* :sync-for-iterator = mapToDouble.{core::Map::entries}.{core::Iterable::iterator};
+      core::Iterator<core::MapEntry<core::String*, core::double*>>* :sync-for-iterator = mapToDouble.{core::Map::entries}.{core::Iterable::iterator};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         final core::MapEntry<core::String*, core::num*>* #t109 = :sync-for-iterator.{core::Iterator::current};
         #t107.{core::Map::[]=}(#t109.{core::MapEntry::key}, #t109.{core::MapEntry::value});
@@ -1108,7 +1118,7 @@
   core::Map<core::String*, core::num*>* map83 = block {
     final core::Map<core::String*, core::num*>* #t122 = <core::String*, core::num*>{};
     if(self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*) {
-      core::Iterator<core::MapEntry<core::String*, core::int*>*>* :sync-for-iterator = mapToInt.{core::Map::entries}.{core::Iterable::iterator};
+      core::Iterator<core::MapEntry<core::String*, core::int*>>* :sync-for-iterator = mapToInt.{core::Map::entries}.{core::Iterable::iterator};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         final core::MapEntry<core::String*, core::num*>* #t123 = :sync-for-iterator.{core::Iterator::current};
         #t122.{core::Map::[]=}(#t123.{core::MapEntry::key}, #t123.{core::MapEntry::value});
@@ -1165,7 +1175,7 @@
   core::Map<core::String*, core::int*>* map91 = block {
     final core::Map<core::String*, core::int*>* #t133 = <core::String*, core::int*>{};
     if(self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*) {
-      core::Iterator<core::MapEntry<dynamic, dynamic>*>* :sync-for-iterator = (dynVar as{TypeError,ForDynamic} core::Map<dynamic, dynamic>*).{core::Map::entries}.{core::Iterable::iterator};
+      core::Iterator<core::MapEntry<dynamic, dynamic>>* :sync-for-iterator = (dynVar as{TypeError,ForDynamic} core::Map<dynamic, dynamic>*).{core::Map::entries}.{core::Iterable::iterator};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         final core::MapEntry<dynamic, dynamic>* #t134 = :sync-for-iterator.{core::Iterator::current};
         {
@@ -1245,7 +1255,7 @@
   block {
     final core::Map<core::String*, core::int*>* #t152 = <core::String*, core::int*>{};
     if(self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*) {
-      core::Iterator<core::MapEntry<core::String*, core::int*>*>* :sync-for-iterator = <core::String*, core::int*>{"bar": let final<BottomType> #t153 = invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:92:47: Error: A value of type 'String' can't be assigned to a variable of type 'int'.
+      core::Iterator<core::MapEntry<core::String*, core::int*>>* :sync-for-iterator = <core::String*, core::int*>{"bar": let final<BottomType> #t153 = invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:92:47: Error: A value of type 'String' can't be assigned to a variable of type 'int'.
   <String, int>{if (oracle(\"foo\")) ...{\"bar\": \"bar\"}, \"baz\": null};
                                               ^" in "bar" as{TypeError} core::int*}.{core::Map::entries}.{core::Iterable::iterator};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
@@ -1530,7 +1540,7 @@
   core::Map<core::String*, core::int*>* map20 = block {
     final core::Map<core::String*, core::int*>* #t201 = <core::String*, core::int*>{};
     for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1)) {
-      core::Iterator<core::MapEntry<core::String*, core::int*>*>* :sync-for-iterator = <core::String*, core::int*>{"bar": 42}.{core::Map::entries}.{core::Iterable::iterator};
+      core::Iterator<core::MapEntry<core::String*, core::int*>>* :sync-for-iterator = <core::String*, core::int*>{"bar": 42}.{core::Map::entries}.{core::Iterable::iterator};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         final core::MapEntry<core::String*, core::int*>* #t202 = :sync-for-iterator.{core::Iterator::current};
         #t201.{core::Map::[]=}(#t202.{core::MapEntry::key}, #t202.{core::MapEntry::value});
@@ -1562,7 +1572,7 @@
   core::Map<core::String*, dynamic>* map21 = block {
     final core::Map<core::String*, dynamic>* #t207 = <core::String*, dynamic>{};
     for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1)) {
-      core::Iterator<core::MapEntry<core::String*, dynamic>*>* :sync-for-iterator = <core::String*, dynamic>{"bar": dynVar}.{core::Map::entries}.{core::Iterable::iterator};
+      core::Iterator<core::MapEntry<core::String*, dynamic>>* :sync-for-iterator = <core::String*, dynamic>{"bar": dynVar}.{core::Map::entries}.{core::Iterable::iterator};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         final core::MapEntry<core::String*, dynamic>* #t208 = :sync-for-iterator.{core::Iterator::current};
         #t207.{core::Map::[]=}(#t208.{core::MapEntry::key}, #t208.{core::MapEntry::value});
@@ -1594,7 +1604,7 @@
   core::Map<core::String*, core::List<core::int*>*>* map22 = block {
     final core::Map<core::String*, core::List<core::int*>*>* #t213 = <core::String*, core::List<core::int*>*>{};
     for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1)) {
-      core::Iterator<core::MapEntry<core::String*, core::List<core::int*>*>*>* :sync-for-iterator = <core::String*, core::List<core::int*>*>{"bar": <core::int*>[42]}.{core::Map::entries}.{core::Iterable::iterator};
+      core::Iterator<core::MapEntry<core::String*, core::List<core::int*>*>>* :sync-for-iterator = <core::String*, core::List<core::int*>*>{"bar": <core::int*>[42]}.{core::Map::entries}.{core::Iterable::iterator};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         final core::MapEntry<core::String*, core::List<core::int*>*>* #t214 = :sync-for-iterator.{core::Iterator::current};
         #t213.{core::Map::[]=}(#t214.{core::MapEntry::key}, #t214.{core::MapEntry::value});
@@ -1629,7 +1639,7 @@
     final core::Map<core::String*, core::int*>* #t219 = <core::String*, core::int*>{};
     for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1))
       if(self::oracle<dynamic>() as{TypeError,ForDynamic} core::bool*) {
-        core::Iterator<core::MapEntry<core::String*, core::int*>*>* :sync-for-iterator = <core::String*, core::int*>{"bar": 42}.{core::Map::entries}.{core::Iterable::iterator};
+        core::Iterator<core::MapEntry<core::String*, core::int*>>* :sync-for-iterator = <core::String*, core::int*>{"bar": 42}.{core::Map::entries}.{core::Iterable::iterator};
         for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
           final core::MapEntry<core::String*, core::int*>* #t220 = :sync-for-iterator.{core::Iterator::current};
           #t219.{core::Map::[]=}(#t220.{core::MapEntry::key}, #t220.{core::MapEntry::value});
@@ -1664,7 +1674,7 @@
     final core::Map<core::String*, dynamic>* #t225 = <core::String*, dynamic>{};
     for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1))
       if(self::oracle<dynamic>() as{TypeError,ForDynamic} core::bool*) {
-        core::Iterator<core::MapEntry<core::String*, dynamic>*>* :sync-for-iterator = <core::String*, dynamic>{"bar": dynVar}.{core::Map::entries}.{core::Iterable::iterator};
+        core::Iterator<core::MapEntry<core::String*, dynamic>>* :sync-for-iterator = <core::String*, dynamic>{"bar": dynVar}.{core::Map::entries}.{core::Iterable::iterator};
         for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
           final core::MapEntry<core::String*, dynamic>* #t226 = :sync-for-iterator.{core::Iterator::current};
           #t225.{core::Map::[]=}(#t226.{core::MapEntry::key}, #t226.{core::MapEntry::value});
@@ -1699,7 +1709,7 @@
     final core::Map<core::String*, core::List<core::int*>*>* #t231 = <core::String*, core::List<core::int*>*>{};
     for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1))
       if(self::oracle<dynamic>() as{TypeError,ForDynamic} core::bool*) {
-        core::Iterator<core::MapEntry<core::String*, core::List<core::int*>*>*>* :sync-for-iterator = <core::String*, core::List<core::int*>*>{"bar": <core::int*>[42]}.{core::Map::entries}.{core::Iterable::iterator};
+        core::Iterator<core::MapEntry<core::String*, core::List<core::int*>*>>* :sync-for-iterator = <core::String*, core::List<core::int*>*>{"bar": <core::int*>[42]}.{core::Map::entries}.{core::Iterable::iterator};
         for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
           final core::MapEntry<core::String*, core::List<core::int*>*>* #t232 = :sync-for-iterator.{core::Iterator::current};
           #t231.{core::Map::[]=}(#t232.{core::MapEntry::key}, #t232.{core::MapEntry::value});
@@ -1731,7 +1741,7 @@
   core::Map<core::String*, core::List<core::int*>*>* map40 = block {
     final core::Map<core::String*, core::List<core::int*>*>* #t237 = <core::String*, core::List<core::int*>*>{};
     for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1)) {
-      core::Iterator<core::MapEntry<core::String*, core::List<core::int*>*>*>* :sync-for-iterator = <core::String*, core::List<core::int*>*>{"bar": <core::int*>[]}.{core::Map::entries}.{core::Iterable::iterator};
+      core::Iterator<core::MapEntry<core::String*, core::List<core::int*>*>>* :sync-for-iterator = <core::String*, core::List<core::int*>*>{"bar": <core::int*>[]}.{core::Map::entries}.{core::Iterable::iterator};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         final core::MapEntry<core::String*, core::List<core::int*>*>* #t238 = :sync-for-iterator.{core::Iterator::current};
         #t237.{core::Map::[]=}(#t238.{core::MapEntry::key}, #t238.{core::MapEntry::value});
@@ -1742,7 +1752,7 @@
   core::List<core::List<core::int*>*>* list41 = block {
     final core::List<core::List<core::int*>*>* #t239 = <core::List<core::int*>*>[];
     for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1)) {
-      core::Iterator<core::List<core::int*>*>* :sync-for-iterator = (let final core::Set<core::List<core::int*>*>* #t240 = col::LinkedHashSet::•<core::List<core::int*>*>() in let final core::bool* #t241 = #t240.{core::Set::add}(<core::int*>[]) in #t240).{core::Iterable::iterator};
+      core::Iterator<core::List<core::int*>*>* :sync-for-iterator = (let final core::Set<core::List<core::int*>*>* #t240 = col::LinkedHashSet::•<core::List<core::int*>*>() in let final core::bool #t241 = #t240.{core::Set::add}(<core::int*>[]) in #t240).{core::Iterable::iterator};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         final core::List<core::int*>* #t242 = :sync-for-iterator.{core::Iterator::current};
         #t239.{core::List::add}(#t242);
@@ -1752,7 +1762,7 @@
   core::Set<core::List<core::int*>*>* set41 = block {
     final core::Set<core::List<core::int*>*>* #t243 = col::LinkedHashSet::•<core::List<core::int*>*>();
     for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1)) {
-      core::Iterator<core::List<core::int*>*>* :sync-for-iterator = (let final core::Set<core::List<core::int*>*>* #t244 = col::LinkedHashSet::•<core::List<core::int*>*>() in let final core::bool* #t245 = #t244.{core::Set::add}(<core::int*>[]) in #t244).{core::Iterable::iterator};
+      core::Iterator<core::List<core::int*>*>* :sync-for-iterator = (let final core::Set<core::List<core::int*>*>* #t244 = col::LinkedHashSet::•<core::List<core::int*>*>() in let final core::bool #t245 = #t244.{core::Set::add}(<core::int*>[]) in #t244).{core::Iterable::iterator};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         final core::List<core::int*>* #t246 = :sync-for-iterator.{core::Iterator::current};
         #t243.{core::Set::add}(#t246);
@@ -1787,7 +1797,7 @@
     final core::Map<core::String*, core::List<core::int*>*>* #t251 = <core::String*, core::List<core::int*>*>{};
     for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1))
       if(self::oracle<dynamic>() as{TypeError,ForDynamic} core::bool*) {
-        core::Iterator<core::MapEntry<core::String*, core::List<core::int*>*>*>* :sync-for-iterator = <core::String*, core::List<core::int*>*>{"bar": <core::int*>[]}.{core::Map::entries}.{core::Iterable::iterator};
+        core::Iterator<core::MapEntry<core::String*, core::List<core::int*>*>>* :sync-for-iterator = <core::String*, core::List<core::int*>*>{"bar": <core::int*>[]}.{core::Map::entries}.{core::Iterable::iterator};
         for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
           final core::MapEntry<core::String*, core::List<core::int*>*>* #t252 = :sync-for-iterator.{core::Iterator::current};
           #t251.{core::Map::[]=}(#t252.{core::MapEntry::key}, #t252.{core::MapEntry::value});
@@ -1819,7 +1829,7 @@
   core::Map<core::String*, core::int*>* map50 = block {
     final core::Map<core::String*, core::int*>* #t257 = <core::String*, core::int*>{};
     for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1)) {
-      core::Iterator<core::MapEntry<core::String*, core::int*>*>* :sync-for-iterator = <core::String*, core::int*>{}.{core::Map::entries}.{core::Iterable::iterator};
+      core::Iterator<core::MapEntry<core::String*, core::int*>>* :sync-for-iterator = <core::String*, core::int*>{}.{core::Map::entries}.{core::Iterable::iterator};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         final core::MapEntry<core::String*, core::int*>* #t258 = :sync-for-iterator.{core::Iterator::current};
         #t257.{core::Map::[]=}(#t258.{core::MapEntry::key}, #t258.{core::MapEntry::value});
@@ -1895,7 +1905,7 @@
   core::Map<core::String*, core::List<core::int*>*>* map60 = block {
     final core::Map<core::String*, core::List<core::int*>*>* #t273 = <core::String*, core::List<core::int*>*>{};
     for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1)) {
-      core::Iterator<core::MapEntry<core::String*, core::List<core::int*>*>*>* :sync-for-iterator = <core::String*, core::List<core::int*>*>{"bar": <core::int*>[]}.{core::Map::entries}.{core::Iterable::iterator};
+      core::Iterator<core::MapEntry<core::String*, core::List<core::int*>*>>* :sync-for-iterator = <core::String*, core::List<core::int*>*>{"bar": <core::int*>[]}.{core::Map::entries}.{core::Iterable::iterator};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         final core::MapEntry<core::String*, core::List<core::int*>*>* #t274 = :sync-for-iterator.{core::Iterator::current};
         #t273.{core::Map::[]=}(#t274.{core::MapEntry::key}, #t274.{core::MapEntry::value});
@@ -1930,7 +1940,7 @@
     final core::Map<core::String*, core::List<core::int*>*>* #t279 = <core::String*, core::List<core::int*>*>{};
     for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1))
       if(self::oracle<dynamic>() as{TypeError,ForDynamic} core::bool*) {
-        core::Iterator<core::MapEntry<core::String*, core::List<core::int*>*>*>* :sync-for-iterator = <core::String*, core::List<core::int*>*>{"bar": <core::int*>[]}.{core::Map::entries}.{core::Iterable::iterator};
+        core::Iterator<core::MapEntry<core::String*, core::List<core::int*>*>>* :sync-for-iterator = <core::String*, core::List<core::int*>*>{"bar": <core::int*>[]}.{core::Map::entries}.{core::Iterable::iterator};
         for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
           final core::MapEntry<core::String*, core::List<core::int*>*>* #t280 = :sync-for-iterator.{core::Iterator::current};
           #t279.{core::Map::[]=}(#t280.{core::MapEntry::key}, #t280.{core::MapEntry::value});
@@ -2042,14 +2052,14 @@
     final core::Map<core::String*, core::num*>* #t296 = <core::String*, core::num*>{};
     for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1))
       if(self::oracle<dynamic>() as{TypeError,ForDynamic} core::bool*) {
-        core::Iterator<core::MapEntry<core::String*, core::int*>*>* :sync-for-iterator = mapStringInt.{core::Map::entries}.{core::Iterable::iterator};
+        core::Iterator<core::MapEntry<core::String*, core::int*>>* :sync-for-iterator = mapStringInt.{core::Map::entries}.{core::Iterable::iterator};
         for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
           final core::MapEntry<core::String*, core::num*>* #t297 = :sync-for-iterator.{core::Iterator::current};
           #t296.{core::Map::[]=}(#t297.{core::MapEntry::key}, #t297.{core::MapEntry::value});
         }
       }
       else {
-        core::Iterator<core::MapEntry<core::String*, core::double*>*>* :sync-for-iterator = mapStringDouble.{core::Map::entries}.{core::Iterable::iterator};
+        core::Iterator<core::MapEntry<core::String*, core::double*>>* :sync-for-iterator = mapStringDouble.{core::Map::entries}.{core::Iterable::iterator};
         for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
           final core::MapEntry<core::String*, core::num*>* #t298 = :sync-for-iterator.{core::Iterator::current};
           #t296.{core::Map::[]=}(#t298.{core::MapEntry::key}, #t298.{core::MapEntry::value});
@@ -2098,14 +2108,14 @@
     final core::Map<dynamic, dynamic>* #t305 = <dynamic, dynamic>{};
     for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1))
       if(self::oracle<dynamic>() as{TypeError,ForDynamic} core::bool*) {
-        core::Iterator<core::MapEntry<core::String*, core::int*>*>* :sync-for-iterator = mapStringInt.{core::Map::entries}.{core::Iterable::iterator};
+        core::Iterator<core::MapEntry<core::String*, core::int*>>* :sync-for-iterator = mapStringInt.{core::Map::entries}.{core::Iterable::iterator};
         for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
           final core::MapEntry<dynamic, dynamic>* #t306 = :sync-for-iterator.{core::Iterator::current};
           #t305.{core::Map::[]=}(#t306.{core::MapEntry::key}, #t306.{core::MapEntry::value});
         }
       }
       else {
-        core::Iterator<core::MapEntry<dynamic, dynamic>*>* :sync-for-iterator = (dynVar as{TypeError,ForDynamic} core::Map<dynamic, dynamic>*).{core::Map::entries}.{core::Iterable::iterator};
+        core::Iterator<core::MapEntry<dynamic, dynamic>>* :sync-for-iterator = (dynVar as{TypeError,ForDynamic} core::Map<dynamic, dynamic>*).{core::Map::entries}.{core::Iterable::iterator};
         for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
           final core::MapEntry<dynamic, dynamic>* #t307 = :sync-for-iterator.{core::Iterator::current};
           #t305.{core::Map::[]=}(#t307.{core::MapEntry::key}, #t307.{core::MapEntry::value});
@@ -2144,7 +2154,7 @@
     final core::Map<core::String*, core::num*>* #t312 = <core::String*, core::num*>{};
     for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1))
       if(self::oracle<dynamic>() as{TypeError,ForDynamic} core::bool*) {
-        core::Iterator<core::MapEntry<core::String*, core::int*>*>* :sync-for-iterator = mapStringInt.{core::Map::entries}.{core::Iterable::iterator};
+        core::Iterator<core::MapEntry<core::String*, core::int*>>* :sync-for-iterator = mapStringInt.{core::Map::entries}.{core::Iterable::iterator};
         for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
           final core::MapEntry<core::String*, core::num*>* #t313 = :sync-for-iterator.{core::Iterator::current};
           #t312.{core::Map::[]=}(#t313.{core::MapEntry::key}, #t313.{core::MapEntry::value});
@@ -2201,7 +2211,7 @@
   core::Map<core::String*, core::int*>* map91 = block {
     final core::Map<core::String*, core::int*>* #t323 = <core::String*, core::int*>{};
     for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1)) {
-      core::Iterator<core::MapEntry<dynamic, dynamic>*>* :sync-for-iterator = (dynVar as{TypeError,ForDynamic} core::Map<dynamic, dynamic>*).{core::Map::entries}.{core::Iterable::iterator};
+      core::Iterator<core::MapEntry<dynamic, dynamic>>* :sync-for-iterator = (dynVar as{TypeError,ForDynamic} core::Map<dynamic, dynamic>*).{core::Map::entries}.{core::Iterable::iterator};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         final core::MapEntry<dynamic, dynamic>* #t324 = :sync-for-iterator.{core::Iterator::current};
         {
@@ -2379,7 +2389,7 @@
         block {
           final core::Map<core::int*, core::int*>* #t356 = <core::int*, core::int*>{};
           for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1)) {
-            core::Iterator<core::MapEntry<core::int*, core::int*>*>* :sync-for-iterator = <core::int*, core::int*>{let final<BottomType> #t357 = invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:215:54: Error: A value of type 'String' can't be assigned to a variable of type 'int'.
+            core::Iterator<core::MapEntry<core::int*, core::int*>>* :sync-for-iterator = <core::int*, core::int*>{let final<BottomType> #t357 = invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:215:54: Error: A value of type 'String' can't be assigned to a variable of type 'int'.
   <int, int>{for (int i = 0; oracle(\"foo\"); i++) ...{\"bar\": \"bar\"}, \"baz\": null};
                                                      ^" in "bar" as{TypeError} core::int*: let final<BottomType> #t358 = invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:215:61: Error: A value of type 'String' can't be assigned to a variable of type 'int'.
   <int, int>{for (int i = 0; oracle(\"foo\"); i++) ...{\"bar\": \"bar\"}, \"baz\": null};
@@ -2661,7 +2671,7 @@
             while (true) {
               dynamic #t399 = asy::_asyncStarMoveNextHelper(:stream);
               [yield] let dynamic #t400 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::moveNext}(), :async_op_then, :async_op_error, :async_op) in null;
-              if(_in::unsafeCast<core::bool*>(:result)) {
+              if(_in::unsafeCast<core::bool>(:result)) {
                 dynamic i = :for-iterator.{asy::_StreamIterator::current};
                 #t397.{core::List::add}(i);
               }
@@ -2688,7 +2698,7 @@
             while (true) {
               dynamic #t404 = asy::_asyncStarMoveNextHelper(:stream);
               [yield] let dynamic #t405 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::moveNext}(), :async_op_then, :async_op_error, :async_op) in null;
-              if(_in::unsafeCast<core::bool*>(:result)) {
+              if(_in::unsafeCast<core::bool>(:result)) {
                 dynamic i = :for-iterator.{asy::_StreamIterator::current};
                 #t402.{core::Set::add}(i);
               }
@@ -2717,7 +2727,7 @@
             while (true) {
               dynamic #t409 = asy::_asyncStarMoveNextHelper(:stream);
               [yield] let dynamic #t410 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::moveNext}(), :async_op_then, :async_op_error, :async_op) in null;
-              if(_in::unsafeCast<core::bool*>(:result)) {
+              if(_in::unsafeCast<core::bool>(:result)) {
                 dynamic i = :for-iterator.{asy::_StreamIterator::current};
                 #t407.{core::Map::[]=}("bar", i);
               }
@@ -2735,7 +2745,7 @@
         } =>#t407;
         final core::List<core::int*>* #t412 = <core::int*>[];
         {
-          asy::Stream<core::int*>* :stream = asy::Stream::fromIterable<core::int*>(<core::int*>[let final<BottomType> #t413 = invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:243:58: Error: A value of type 'String' can't be assigned to a variable of type 'int'.
+          asy::Stream<core::int*> :stream = asy::Stream::fromIterable<core::int*>(<core::int*>[let final<BottomType> #t413 = invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:243:58: Error: A value of type 'String' can't be assigned to a variable of type 'int'.
   var list40 = [await for (int i in Stream.fromIterable([\"not\", \"int\"])) i];
                                                          ^" in "not" as{TypeError} core::int*, let final<BottomType> #t414 = invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:243:65: Error: A value of type 'String' can't be assigned to a variable of type 'int'.
   var list40 = [await for (int i in Stream.fromIterable([\"not\", \"int\"])) i];
@@ -2747,7 +2757,7 @@
             while (true) {
               dynamic #t415 = asy::_asyncStarMoveNextHelper(:stream);
               [yield] let dynamic #t416 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::moveNext}(), :async_op_then, :async_op_error, :async_op) in null;
-              if(_in::unsafeCast<core::bool*>(:result)) {
+              if(_in::unsafeCast<core::bool>(:result)) {
                 core::int* i = :for-iterator.{asy::_StreamIterator::current};
                 #t412.{core::List::add}(i);
               }
@@ -2763,7 +2773,7 @@
         core::List<core::int*>* list40 = block {} =>#t412;
         final core::Set<core::int*>* #t418 = col::LinkedHashSet::•<core::int*>();
         {
-          asy::Stream<core::int*>* :stream = asy::Stream::fromIterable<core::int*>(<core::int*>[let final<BottomType> #t419 = invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:244:57: Error: A value of type 'String' can't be assigned to a variable of type 'int'.
+          asy::Stream<core::int*> :stream = asy::Stream::fromIterable<core::int*>(<core::int*>[let final<BottomType> #t419 = invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:244:57: Error: A value of type 'String' can't be assigned to a variable of type 'int'.
   var set40 = {await for (int i in Stream.fromIterable([\"not\", \"int\"])) i, null};
                                                         ^" in "not" as{TypeError} core::int*, let final<BottomType> #t420 = invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:244:64: Error: A value of type 'String' can't be assigned to a variable of type 'int'.
   var set40 = {await for (int i in Stream.fromIterable([\"not\", \"int\"])) i, null};
@@ -2775,7 +2785,7 @@
             while (true) {
               dynamic #t421 = asy::_asyncStarMoveNextHelper(:stream);
               [yield] let dynamic #t422 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::moveNext}(), :async_op_then, :async_op_error, :async_op) in null;
-              if(_in::unsafeCast<core::bool*>(:result)) {
+              if(_in::unsafeCast<core::bool>(:result)) {
                 core::int* i = :for-iterator.{asy::_StreamIterator::current};
                 #t418.{core::Set::add}(i);
               }
@@ -2793,7 +2803,7 @@
         } =>#t418;
         final core::Map<core::String*, core::int*>* #t424 = <core::String*, core::int*>{};
         {
-          asy::Stream<core::int*>* :stream = asy::Stream::fromIterable<core::int*>(<core::int*>[let final<BottomType> #t425 = invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:245:57: Error: A value of type 'String' can't be assigned to a variable of type 'int'.
+          asy::Stream<core::int*> :stream = asy::Stream::fromIterable<core::int*>(<core::int*>[let final<BottomType> #t425 = invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:245:57: Error: A value of type 'String' can't be assigned to a variable of type 'int'.
   var map40 = {await for (int i in Stream.fromIterable([\"not\", \"int\"])) \"bar\": i, \"baz\": null};
                                                         ^" in "not" as{TypeError} core::int*, let final<BottomType> #t426 = invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:245:64: Error: A value of type 'String' can't be assigned to a variable of type 'int'.
   var map40 = {await for (int i in Stream.fromIterable([\"not\", \"int\"])) \"bar\": i, \"baz\": null};
@@ -2805,7 +2815,7 @@
             while (true) {
               dynamic #t427 = asy::_asyncStarMoveNextHelper(:stream);
               [yield] let dynamic #t428 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::moveNext}(), :async_op_then, :async_op_error, :async_op) in null;
-              if(_in::unsafeCast<core::bool*>(:result)) {
+              if(_in::unsafeCast<core::bool>(:result)) {
                 core::int* i = :for-iterator.{asy::_StreamIterator::current};
                 #t424.{core::Map::[]=}("bar", i);
               }
@@ -2865,8 +2875,8 @@
       asy::_completeOnAsyncReturn(:async_completer, :return_value);
       return;
     }
-    on dynamic catch(dynamic :exception, core::StackTrace* :stack_trace) {
-      :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+    on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
+      :async_completer.{asy::Completer::completeError}(exception, stack_trace);
     }
   :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
diff --git a/pkg/front_end/testcases/general/covariant_equals.dart.outline.expect b/pkg/front_end/testcases/general/covariant_equals.dart.outline.expect
index d521bc4..84e0d15 100644
--- a/pkg/front_end/testcases/general/covariant_equals.dart.outline.expect
+++ b/pkg/front_end/testcases/general/covariant_equals.dart.outline.expect
@@ -7,6 +7,15 @@
     ;
   operator ==(covariant self::A* other) → core::bool*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A {
   synthetic constructor •() → self::B*
@@ -19,6 +28,15 @@
     ;
   operator ==(covariant generic-covariant-impl self::C<self::C::T*>* other) → core::bool*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D extends self::C<core::int*> {
   synthetic constructor •() → self::D*
diff --git a/pkg/front_end/testcases/general/covariant_equals.dart.strong.expect b/pkg/front_end/testcases/general/covariant_equals.dart.strong.expect
index aa641a4..6c33824 100644
--- a/pkg/front_end/testcases/general/covariant_equals.dart.strong.expect
+++ b/pkg/front_end/testcases/general/covariant_equals.dart.strong.expect
@@ -128,6 +128,15 @@
     ;
   operator ==(covariant self::A* other) → core::bool*
     return true;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A {
   synthetic constructor •() → self::B*
@@ -142,6 +151,15 @@
     ;
   operator ==(covariant generic-covariant-impl self::C<self::C::T*>* other) → core::bool*
     return true;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D extends self::C<core::int*> {
   synthetic constructor •() → self::D*
diff --git a/pkg/front_end/testcases/general/covariant_equals.dart.strong.transformed.expect b/pkg/front_end/testcases/general/covariant_equals.dart.strong.transformed.expect
index aa641a4..6c33824 100644
--- a/pkg/front_end/testcases/general/covariant_equals.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general/covariant_equals.dart.strong.transformed.expect
@@ -128,6 +128,15 @@
     ;
   operator ==(covariant self::A* other) → core::bool*
     return true;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A {
   synthetic constructor •() → self::B*
@@ -142,6 +151,15 @@
     ;
   operator ==(covariant generic-covariant-impl self::C<self::C::T*>* other) → core::bool*
     return true;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D extends self::C<core::int*> {
   synthetic constructor •() → self::D*
diff --git a/pkg/front_end/testcases/general/covariant_generic.dart.outline.expect b/pkg/front_end/testcases/general/covariant_generic.dart.outline.expect
index 830c5bd..5c2b5c2 100644
--- a/pkg/front_end/testcases/general/covariant_generic.dart.outline.expect
+++ b/pkg/front_end/testcases/general/covariant_generic.dart.outline.expect
@@ -16,6 +16,16 @@
     ;
   method withCallback((self::Foo::T*) →* void callback) → void
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/general/covariant_generic.dart.strong.expect b/pkg/front_end/testcases/general/covariant_generic.dart.strong.expect
index e9d608a..7a05af3 100644
--- a/pkg/front_end/testcases/general/covariant_generic.dart.strong.expect
+++ b/pkg/front_end/testcases/general/covariant_generic.dart.strong.expect
@@ -16,6 +16,16 @@
   method withCallback((self::Foo::T*) →* void callback) → void {
     callback.call(this.{self::Foo::finalField});
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   self::Foo<core::int*>* fooInt = new self::Foo::•<core::int*>(1, (core::int* x) → core::Null? {});
diff --git a/pkg/front_end/testcases/general/covariant_generic.dart.strong.transformed.expect b/pkg/front_end/testcases/general/covariant_generic.dart.strong.transformed.expect
index e9d608a..7a05af3 100644
--- a/pkg/front_end/testcases/general/covariant_generic.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general/covariant_generic.dart.strong.transformed.expect
@@ -16,6 +16,16 @@
   method withCallback((self::Foo::T*) →* void callback) → void {
     callback.call(this.{self::Foo::finalField});
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   self::Foo<core::int*>* fooInt = new self::Foo::•<core::int*>(1, (core::int* x) → core::Null? {});
diff --git a/pkg/front_end/testcases/general/covariant_parameter_in_superclass_of_mixin_application.dart.outline.expect b/pkg/front_end/testcases/general/covariant_parameter_in_superclass_of_mixin_application.dart.outline.expect
index f2001a3..d787aba 100644
--- a/pkg/front_end/testcases/general/covariant_parameter_in_superclass_of_mixin_application.dart.outline.expect
+++ b/pkg/front_end/testcases/general/covariant_parameter_in_superclass_of_mixin_application.dart.outline.expect
@@ -7,18 +7,48 @@
     ;
   method foo(covariant core::num* x) → void
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends core::Object {
   synthetic constructor •() → self::B*
     ;
   method foo(core::num* x) → void
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C extends core::Object {
   synthetic constructor •() → self::C*
     ;
   method foo(core::num* x) → void
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class _D&A&B = self::A with self::B /*isAnonymousMixin*/  {
   synthetic constructor •() → self::_D&A&B*
diff --git a/pkg/front_end/testcases/general/covariant_parameter_in_superclass_of_mixin_application.dart.strong.expect b/pkg/front_end/testcases/general/covariant_parameter_in_superclass_of_mixin_application.dart.strong.expect
index 03d861d..74659ae 100644
--- a/pkg/front_end/testcases/general/covariant_parameter_in_superclass_of_mixin_application.dart.strong.expect
+++ b/pkg/front_end/testcases/general/covariant_parameter_in_superclass_of_mixin_application.dart.strong.expect
@@ -7,18 +7,48 @@
     : super core::Object::•()
     ;
   method foo(covariant core::num* x) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends core::Object {
   synthetic constructor •() → self::B*
     : super core::Object::•()
     ;
   method foo(core::num* x) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C extends core::Object {
   synthetic constructor •() → self::C*
     : super core::Object::•()
     ;
   method foo(core::num* x) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class _D&A&B = self::A with self::B /*isAnonymousMixin*/  {
   synthetic constructor •() → self::_D&A&B*
diff --git a/pkg/front_end/testcases/general/covariant_parameter_in_superclass_of_mixin_application.dart.strong.transformed.expect b/pkg/front_end/testcases/general/covariant_parameter_in_superclass_of_mixin_application.dart.strong.transformed.expect
index b35ef09..5d4675b 100644
--- a/pkg/front_end/testcases/general/covariant_parameter_in_superclass_of_mixin_application.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general/covariant_parameter_in_superclass_of_mixin_application.dart.strong.transformed.expect
@@ -7,24 +7,64 @@
     : super core::Object::•()
     ;
   method foo(covariant core::num* x) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends core::Object {
   synthetic constructor •() → self::B*
     : super core::Object::•()
     ;
   method foo(core::num* x) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C extends core::Object {
   synthetic constructor •() → self::C*
     : super core::Object::•()
     ;
   method foo(core::num* x) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class _D&A&B extends self::A implements self::B /*isAnonymousMixin,isEliminatedMixin*/  {
   synthetic constructor •() → self::_D&A&B*
     : super self::A::•()
     ;
   method foo(covariant core::num* x) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D extends self::_D&A&B implements self::C {
   synthetic constructor •() → self::D*
diff --git a/pkg/front_end/testcases/general/cycles.dart.outline.expect b/pkg/front_end/testcases/general/cycles.dart.outline.expect
index e72a576..2dfce50 100644
--- a/pkg/front_end/testcases/general/cycles.dart.outline.expect
+++ b/pkg/front_end/testcases/general/cycles.dart.outline.expect
@@ -20,18 +20,58 @@
 class A extends core::Object {
   synthetic constructor •() → self::A*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends core::Object {
   synthetic constructor •() → self::B*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C extends core::Object {
   synthetic constructor •() → self::C*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D extends core::Object {
   synthetic constructor •() → self::D*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/general/cycles.dart.strong.expect b/pkg/front_end/testcases/general/cycles.dart.strong.expect
index 5552472..907d375 100644
--- a/pkg/front_end/testcases/general/cycles.dart.strong.expect
+++ b/pkg/front_end/testcases/general/cycles.dart.strong.expect
@@ -21,21 +21,61 @@
   synthetic constructor •() → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends core::Object {
   synthetic constructor •() → self::B*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C extends core::Object {
   synthetic constructor •() → self::C*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D extends core::Object {
   synthetic constructor •() → self::D*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   core::print(new self::A::•());
diff --git a/pkg/front_end/testcases/general/cycles.dart.strong.transformed.expect b/pkg/front_end/testcases/general/cycles.dart.strong.transformed.expect
index 5552472..907d375 100644
--- a/pkg/front_end/testcases/general/cycles.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general/cycles.dart.strong.transformed.expect
@@ -21,21 +21,61 @@
   synthetic constructor •() → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends core::Object {
   synthetic constructor •() → self::B*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C extends core::Object {
   synthetic constructor •() → self::C*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D extends core::Object {
   synthetic constructor •() → self::D*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   core::print(new self::A::•());
diff --git a/pkg/front_end/testcases/general/deferred_type_annotation.dart.outline.expect b/pkg/front_end/testcases/general/deferred_type_annotation.dart.outline.expect
index 1446703..5ae77c0 100644
--- a/pkg/front_end/testcases/general/deferred_type_annotation.dart.outline.expect
+++ b/pkg/front_end/testcases/general/deferred_type_annotation.dart.outline.expect
@@ -19,6 +19,16 @@
     ;
   static method m() → core::int*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field core::int* x;
 static method m(dynamic x) → dynamic
diff --git a/pkg/front_end/testcases/general/deferred_type_annotation.dart.strong.expect b/pkg/front_end/testcases/general/deferred_type_annotation.dart.strong.expect
index 4079b46..d066fb4a 100644
--- a/pkg/front_end/testcases/general/deferred_type_annotation.dart.strong.expect
+++ b/pkg/front_end/testcases/general/deferred_type_annotation.dart.strong.expect
@@ -27,6 +27,16 @@
     ;
   static method m() → core::int*
     return 2;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field core::int* x = 0;
 static method m(dynamic x) → dynamic
diff --git a/pkg/front_end/testcases/general/deferred_type_annotation.dart.strong.transformed.expect b/pkg/front_end/testcases/general/deferred_type_annotation.dart.strong.transformed.expect
index 4079b46..d066fb4a 100644
--- a/pkg/front_end/testcases/general/deferred_type_annotation.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general/deferred_type_annotation.dart.strong.transformed.expect
@@ -27,6 +27,16 @@
     ;
   static method m() → core::int*
     return 2;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field core::int* x = 0;
 static method m(dynamic x) → dynamic
diff --git a/pkg/front_end/testcases/general/duplicated_bad_prefix.dart.outline.expect b/pkg/front_end/testcases/general/duplicated_bad_prefix.dart.outline.expect
index 42a79f3..2b1a4eb 100644
--- a/pkg/front_end/testcases/general/duplicated_bad_prefix.dart.outline.expect
+++ b/pkg/front_end/testcases/general/duplicated_bad_prefix.dart.outline.expect
@@ -26,16 +26,46 @@
 class Dupe#1 extends core::Object {
   synthetic constructor •() → self::Dupe#1*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Dupe extends core::Object {
   synthetic constructor •() → self::Dupe*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C extends core::Object {
   field invalid-type b;
   field invalid-type d;
   synthetic constructor •() → self::C*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
@@ -47,6 +77,16 @@
 class C extends core::Object {
   synthetic constructor •() → self2::C*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 
 library;
@@ -56,4 +96,14 @@
 class C extends core::Object {
   synthetic constructor •() → self3::C*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
diff --git a/pkg/front_end/testcases/general/duplicated_bad_prefix.dart.strong.expect b/pkg/front_end/testcases/general/duplicated_bad_prefix.dart.strong.expect
index e78ff84..c6a905a 100644
--- a/pkg/front_end/testcases/general/duplicated_bad_prefix.dart.strong.expect
+++ b/pkg/front_end/testcases/general/duplicated_bad_prefix.dart.strong.expect
@@ -31,11 +31,31 @@
   synthetic constructor •() → self::Dupe#1*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Dupe extends core::Object {
   synthetic constructor •() → self::Dupe*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C extends core::Object {
   field invalid-type b = null;
@@ -43,6 +63,16 @@
   synthetic constructor •() → self::C*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
 
@@ -54,6 +84,16 @@
   synthetic constructor •() → self2::C*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 
 library;
@@ -64,4 +104,14 @@
   synthetic constructor •() → self3::C*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
diff --git a/pkg/front_end/testcases/general/duplicated_bad_prefix.dart.strong.transformed.expect b/pkg/front_end/testcases/general/duplicated_bad_prefix.dart.strong.transformed.expect
index e78ff84..c6a905a 100644
--- a/pkg/front_end/testcases/general/duplicated_bad_prefix.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general/duplicated_bad_prefix.dart.strong.transformed.expect
@@ -31,11 +31,31 @@
   synthetic constructor •() → self::Dupe#1*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Dupe extends core::Object {
   synthetic constructor •() → self::Dupe*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C extends core::Object {
   field invalid-type b = null;
@@ -43,6 +63,16 @@
   synthetic constructor •() → self::C*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
 
@@ -54,6 +84,16 @@
   synthetic constructor •() → self2::C*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 
 library;
@@ -64,4 +104,14 @@
   synthetic constructor •() → self3::C*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
diff --git a/pkg/front_end/testcases/general/duplicated_declarations.dart.outline.expect b/pkg/front_end/testcases/general/duplicated_declarations.dart.outline.expect
index 70afe00..40e9d73 100644
--- a/pkg/front_end/testcases/general/duplicated_declarations.dart.outline.expect
+++ b/pkg/front_end/testcases/general/duplicated_declarations.dart.outline.expect
@@ -322,10 +322,30 @@
 class C#4 extends core::Object { // from org-dartlang-testcase:///duplicated_declarations_part.dart
   constructor _() → self::C#4*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C#3 extends core::Object { // from org-dartlang-testcase:///duplicated_declarations_part.dart
   constructor _() → self::C#3*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C#2 extends core::Object { // from org-dartlang-testcase:///duplicated_declarations_part.dart
   field core::String* field;
@@ -337,10 +357,30 @@
     ;
   static method f() → dynamic
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C#1 extends core::Object {
   constructor _() → self::C#1*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C extends core::Object {
   field core::String* field;
@@ -352,12 +392,32 @@
     ;
   static method f() → dynamic
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Sub extends core::Object {
   constructor •() → self::Sub*
     ;
   method m() → dynamic
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Enum#4 extends core::Object /*isEnum*/  { // from org-dartlang-testcase:///duplicated_declarations_part.dart
   final field core::int* index;
@@ -369,6 +429,15 @@
     ;
   method toString() → core::String*
     return this.{=self::Enum#4::_name};
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Enum#3 extends core::Object /*isEnum*/  { // from org-dartlang-testcase:///duplicated_declarations_part.dart
   final field core::int* index;
@@ -382,6 +451,15 @@
     ;
   method toString() → core::String*
     return this.{=self::Enum#3::_name};
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Enum#2 extends core::Object /*isEnum*/  { // from org-dartlang-testcase:///duplicated_declarations_part.dart
   final field core::int* index;
@@ -395,6 +473,15 @@
     ;
   method toString() → core::String*
     return this.{=self::Enum#2::_name};
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Enum#1 extends core::Object /*isEnum*/  {
   final field core::int* index;
@@ -408,6 +495,15 @@
     ;
   method toString() → core::String*
     return this.{=self::Enum#1::_name};
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Enum extends core::Object /*isEnum*/  {
   final field core::int* index;
@@ -421,6 +517,15 @@
     ;
   method toString() → core::String*
     return this.{=self::Enum::_name};
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class AnotherEnum extends core::Object /*isEnum*/  {
   final field core::int* index;
@@ -434,6 +539,15 @@
     ;
   method toString() → core::String*
     return this.{=self::AnotherEnum::_name};
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field core::String* field;
 static method main() → dynamic
diff --git a/pkg/front_end/testcases/general/duplicated_declarations.dart.strong.expect b/pkg/front_end/testcases/general/duplicated_declarations.dart.strong.expect
index 888b9d8..76fb4cf 100644
--- a/pkg/front_end/testcases/general/duplicated_declarations.dart.strong.expect
+++ b/pkg/front_end/testcases/general/duplicated_declarations.dart.strong.expect
@@ -368,11 +368,31 @@
   constructor _() → self::C#4*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C#3 extends core::Object { // from org-dartlang-testcase:///duplicated_declarations_part.dart
   constructor _() → self::C#3*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C#2 extends core::Object { // from org-dartlang-testcase:///duplicated_declarations_part.dart
   field core::String* field = null;
@@ -389,11 +409,31 @@
     return invalid-expression "pkg/front_end/testcases/general/duplicated_declarations_part.dart:62:17: Error: Can't use 's' because it is declared more than once.
   static f() => s;
                 ^";
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C#1 extends core::Object {
   constructor _() → self::C#1*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C extends core::Object {
   field core::String* field = null;
@@ -410,6 +450,16 @@
     return invalid-expression "pkg/front_end/testcases/general/duplicated_declarations.dart:62:17: Error: Can't use 's' because it is declared more than once.
   static f() => s;
                 ^";
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Sub extends core::Object {
   constructor •() → self::Sub*
@@ -420,6 +470,16 @@
     ;
   method m() → dynamic
     return super.m();
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Enum#4 extends core::Object /*isEnum*/  { // from org-dartlang-testcase:///duplicated_declarations_part.dart
   final field core::int* index;
@@ -431,6 +491,15 @@
     ;
   method toString() → core::String*
     return this.{=self::Enum#4::_name};
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Enum#3 extends core::Object /*isEnum*/  { // from org-dartlang-testcase:///duplicated_declarations_part.dart
   final field core::int* index;
@@ -444,6 +513,15 @@
     ;
   method toString() → core::String*
     return this.{=self::Enum#3::_name};
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Enum#2 extends core::Object /*isEnum*/  { // from org-dartlang-testcase:///duplicated_declarations_part.dart
   final field core::int* index;
@@ -457,6 +535,15 @@
     ;
   method toString() → core::String*
     return this.{=self::Enum#2::_name};
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Enum#1 extends core::Object /*isEnum*/  {
   final field core::int* index;
@@ -470,6 +557,15 @@
     ;
   method toString() → core::String*
     return this.{=self::Enum#1::_name};
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Enum extends core::Object /*isEnum*/  {
   final field core::int* index;
@@ -483,6 +579,15 @@
     ;
   method toString() → core::String*
     return this.{=self::Enum::_name};
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class AnotherEnum extends core::Object /*isEnum*/  {
   final field core::int* index;
@@ -496,6 +601,15 @@
     ;
   method toString() → core::String*
     return this.{=self::AnotherEnum::_name};
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field core::String* field;
 static method main() → dynamic {
diff --git a/pkg/front_end/testcases/general/duplicated_field_initializer.dart.outline.expect b/pkg/front_end/testcases/general/duplicated_field_initializer.dart.outline.expect
index 96aece8..125765a 100644
--- a/pkg/front_end/testcases/general/duplicated_field_initializer.dart.outline.expect
+++ b/pkg/front_end/testcases/general/duplicated_field_initializer.dart.outline.expect
@@ -16,6 +16,16 @@
   field core::int* a;
   constructor •(core::int* a) → self::A*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → void
   ;
diff --git a/pkg/front_end/testcases/general/duplicated_field_initializer.dart.strong.expect b/pkg/front_end/testcases/general/duplicated_field_initializer.dart.strong.expect
index 5b798a1..aaf5a04 100644
--- a/pkg/front_end/testcases/general/duplicated_field_initializer.dart.strong.expect
+++ b/pkg/front_end/testcases/general/duplicated_field_initializer.dart.strong.expect
@@ -23,6 +23,16 @@
   A(this.a);
          ^", super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → void {
   new self::A::•(1);
diff --git a/pkg/front_end/testcases/general/duplicated_field_initializer.dart.strong.transformed.expect b/pkg/front_end/testcases/general/duplicated_field_initializer.dart.strong.transformed.expect
index 5b798a1..aaf5a04 100644
--- a/pkg/front_end/testcases/general/duplicated_field_initializer.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general/duplicated_field_initializer.dart.strong.transformed.expect
@@ -23,6 +23,16 @@
   A(this.a);
          ^", super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → void {
   new self::A::•(1);
diff --git a/pkg/front_end/testcases/general/duplicated_named_args_3.dart.outline.expect b/pkg/front_end/testcases/general/duplicated_named_args_3.dart.outline.expect
index e03d03a5..e7f9733 100644
--- a/pkg/front_end/testcases/general/duplicated_named_args_3.dart.outline.expect
+++ b/pkg/front_end/testcases/general/duplicated_named_args_3.dart.outline.expect
@@ -7,6 +7,16 @@
     ;
   static method m({core::int* a}) → dynamic
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method test() → void
   ;
diff --git a/pkg/front_end/testcases/general/duplicated_named_args_3.dart.strong.expect b/pkg/front_end/testcases/general/duplicated_named_args_3.dart.strong.expect
index 301e301..591dda7 100644
--- a/pkg/front_end/testcases/general/duplicated_named_args_3.dart.strong.expect
+++ b/pkg/front_end/testcases/general/duplicated_named_args_3.dart.strong.expect
@@ -18,6 +18,16 @@
     : super core::Object::•()
     ;
   static method m({core::int* a = #C1}) → dynamic {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method test() → void {
   self::C::m(a: invalid-expression "pkg/front_end/testcases/general/duplicated_named_args_3.dart:13:19: Error: Duplicated named argument 'a'.
diff --git a/pkg/front_end/testcases/general/duplicated_named_args_3.dart.strong.transformed.expect b/pkg/front_end/testcases/general/duplicated_named_args_3.dart.strong.transformed.expect
index 301e301..591dda7 100644
--- a/pkg/front_end/testcases/general/duplicated_named_args_3.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general/duplicated_named_args_3.dart.strong.transformed.expect
@@ -18,6 +18,16 @@
     : super core::Object::•()
     ;
   static method m({core::int* a = #C1}) → dynamic {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method test() → void {
   self::C::m(a: invalid-expression "pkg/front_end/testcases/general/duplicated_named_args_3.dart:13:19: Error: Duplicated named argument 'a'.
diff --git a/pkg/front_end/testcases/general/error_locations/error_location_01.dart.outline.expect b/pkg/front_end/testcases/general/error_locations/error_location_01.dart.outline.expect
index 1e369ae..72f723d 100644
--- a/pkg/front_end/testcases/general/error_locations/error_location_01.dart.outline.expect
+++ b/pkg/front_end/testcases/general/error_locations/error_location_01.dart.outline.expect
@@ -15,6 +15,16 @@
   const constructor •(core::int* i) → self2::Foo*
     : assert(i.{core::num::>}(0)), super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method foo() → dynamic
   ;
diff --git a/pkg/front_end/testcases/general/error_locations/error_location_01.dart.strong.expect b/pkg/front_end/testcases/general/error_locations/error_location_01.dart.strong.expect
index 082c2d4..4fe26c4 100644
--- a/pkg/front_end/testcases/general/error_locations/error_location_01.dart.strong.expect
+++ b/pkg/front_end/testcases/general/error_locations/error_location_01.dart.strong.expect
@@ -29,6 +29,16 @@
   const constructor •(core::int* i) → err::Foo*
     : assert(i.{core::num::>}(0)), super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method foo() → dynamic {
   new err::Foo::•(0);
diff --git a/pkg/front_end/testcases/general/error_locations/error_location_01.dart.strong.transformed.expect b/pkg/front_end/testcases/general/error_locations/error_location_01.dart.strong.transformed.expect
index 082c2d4..4fe26c4 100644
--- a/pkg/front_end/testcases/general/error_locations/error_location_01.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general/error_locations/error_location_01.dart.strong.transformed.expect
@@ -29,6 +29,16 @@
   const constructor •(core::int* i) → err::Foo*
     : assert(i.{core::num::>}(0)), super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method foo() → dynamic {
   new err::Foo::•(0);
diff --git a/pkg/front_end/testcases/general/error_locations/error_location_02.dart.outline.expect b/pkg/front_end/testcases/general/error_locations/error_location_02.dart.outline.expect
index 15ae178..5022580 100644
--- a/pkg/front_end/testcases/general/error_locations/error_location_02.dart.outline.expect
+++ b/pkg/front_end/testcases/general/error_locations/error_location_02.dart.outline.expect
@@ -16,6 +16,16 @@
   const constructor •(core::int* i) → self2::Foo*
     : assert(i.{core::num::>}(0)), super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method foo() → dynamic
   ;
diff --git a/pkg/front_end/testcases/general/error_locations/error_location_02.dart.strong.expect b/pkg/front_end/testcases/general/error_locations/error_location_02.dart.strong.expect
index f617628..cfda405 100644
--- a/pkg/front_end/testcases/general/error_locations/error_location_02.dart.strong.expect
+++ b/pkg/front_end/testcases/general/error_locations/error_location_02.dart.strong.expect
@@ -43,6 +43,16 @@
   const constructor •(core::int* i) → err::Foo*
     : assert(i.{core::num::>}(0)), super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method foo() → dynamic {
   new err::Foo::•(0);
diff --git a/pkg/front_end/testcases/general/error_locations/error_location_02.dart.strong.transformed.expect b/pkg/front_end/testcases/general/error_locations/error_location_02.dart.strong.transformed.expect
index f617628..cfda405 100644
--- a/pkg/front_end/testcases/general/error_locations/error_location_02.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general/error_locations/error_location_02.dart.strong.transformed.expect
@@ -43,6 +43,16 @@
   const constructor •(core::int* i) → err::Foo*
     : assert(i.{core::num::>}(0)), super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method foo() → dynamic {
   new err::Foo::•(0);
diff --git a/pkg/front_end/testcases/general/error_locations/error_location_03.dart.outline.expect b/pkg/front_end/testcases/general/error_locations/error_location_03.dart.outline.expect
index 8e00ee1..51c5f85 100644
--- a/pkg/front_end/testcases/general/error_locations/error_location_03.dart.outline.expect
+++ b/pkg/front_end/testcases/general/error_locations/error_location_03.dart.outline.expect
@@ -16,6 +16,16 @@
   const constructor •(core::int* i) → self2::Foo*
     : assert(i.{core::num::>}(0)), super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method foo() → dynamic
   ;
diff --git a/pkg/front_end/testcases/general/error_locations/error_location_03.dart.strong.expect b/pkg/front_end/testcases/general/error_locations/error_location_03.dart.strong.expect
index a926453..eb50c7b 100644
--- a/pkg/front_end/testcases/general/error_locations/error_location_03.dart.strong.expect
+++ b/pkg/front_end/testcases/general/error_locations/error_location_03.dart.strong.expect
@@ -44,6 +44,16 @@
   const constructor •(core::int* i) → err::Foo*
     : assert(i.{core::num::>}(0)), super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method foo() → dynamic {
   new err::Foo::•(0);
diff --git a/pkg/front_end/testcases/general/error_locations/error_location_03.dart.strong.transformed.expect b/pkg/front_end/testcases/general/error_locations/error_location_03.dart.strong.transformed.expect
index a926453..eb50c7b 100644
--- a/pkg/front_end/testcases/general/error_locations/error_location_03.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general/error_locations/error_location_03.dart.strong.transformed.expect
@@ -44,6 +44,16 @@
   const constructor •(core::int* i) → err::Foo*
     : assert(i.{core::num::>}(0)), super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method foo() → dynamic {
   new err::Foo::•(0);
diff --git a/pkg/front_end/testcases/general/error_locations/error_location_04.dart.outline.expect b/pkg/front_end/testcases/general/error_locations/error_location_04.dart.outline.expect
index 8406a72..be99d90 100644
--- a/pkg/front_end/testcases/general/error_locations/error_location_04.dart.outline.expect
+++ b/pkg/front_end/testcases/general/error_locations/error_location_04.dart.outline.expect
@@ -15,6 +15,16 @@
   const constructor •(core::int* i) → self2::Foo*
     : assert(i.{core::num::>}(0)), super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method foo() → dynamic
   ;
@@ -31,6 +41,16 @@
   const constructor •() → self3::Bar*
     : self3::Bar::x = const self2::Foo::•(0), super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method bar() → dynamic
   ;
diff --git a/pkg/front_end/testcases/general/error_locations/error_location_04.dart.strong.expect b/pkg/front_end/testcases/general/error_locations/error_location_04.dart.strong.expect
index 0b9da71..29a4ccc 100644
--- a/pkg/front_end/testcases/general/error_locations/error_location_04.dart.strong.expect
+++ b/pkg/front_end/testcases/general/error_locations/error_location_04.dart.strong.expect
@@ -29,6 +29,16 @@
   const constructor •(core::int* i) → err::Foo*
     : assert(i.{core::num::>}(0)), super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method foo() → dynamic {
   new err::Foo::•(0);
@@ -46,5 +56,15 @@
   const constructor •() → err2::Bar*
     : err2::Bar::x = invalid-expression "This assertion failed.", super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method bar() → dynamic {}
diff --git a/pkg/front_end/testcases/general/error_locations/error_location_04.dart.strong.transformed.expect b/pkg/front_end/testcases/general/error_locations/error_location_04.dart.strong.transformed.expect
index 0b9da71..29a4ccc 100644
--- a/pkg/front_end/testcases/general/error_locations/error_location_04.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general/error_locations/error_location_04.dart.strong.transformed.expect
@@ -29,6 +29,16 @@
   const constructor •(core::int* i) → err::Foo*
     : assert(i.{core::num::>}(0)), super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method foo() → dynamic {
   new err::Foo::•(0);
@@ -46,5 +56,15 @@
   const constructor •() → err2::Bar*
     : err2::Bar::x = invalid-expression "This assertion failed.", super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method bar() → dynamic {}
diff --git a/pkg/front_end/testcases/general/error_recovery/constructor_recovery_bad_name_general.crash_dart.outline.expect b/pkg/front_end/testcases/general/error_recovery/constructor_recovery_bad_name_general.crash_dart.outline.expect
index 19f76f8..e34e2c6 100644
--- a/pkg/front_end/testcases/general/error_recovery/constructor_recovery_bad_name_general.crash_dart.outline.expect
+++ b/pkg/front_end/testcases/general/error_recovery/constructor_recovery_bad_name_general.crash_dart.outline.expect
@@ -263,4 +263,14 @@
     ;
   set Foo(dynamic #synthetic) → void
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
diff --git a/pkg/front_end/testcases/general/error_recovery/constructor_recovery_bad_name_general.crash_dart.strong.expect b/pkg/front_end/testcases/general/error_recovery/constructor_recovery_bad_name_general.crash_dart.strong.expect
index ed0fc2e..77dae9c 100644
--- a/pkg/front_end/testcases/general/error_recovery/constructor_recovery_bad_name_general.crash_dart.strong.expect
+++ b/pkg/front_end/testcases/general/error_recovery/constructor_recovery_bad_name_general.crash_dart.strong.expect
@@ -360,4 +360,14 @@
           ^";
     return 0;
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
diff --git a/pkg/front_end/testcases/general/error_recovery/constructor_recovery_bad_name_general.crash_dart.strong.transformed.expect b/pkg/front_end/testcases/general/error_recovery/constructor_recovery_bad_name_general.crash_dart.strong.transformed.expect
index ed0fc2e..77dae9c 100644
--- a/pkg/front_end/testcases/general/error_recovery/constructor_recovery_bad_name_general.crash_dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general/error_recovery/constructor_recovery_bad_name_general.crash_dart.strong.transformed.expect
@@ -360,4 +360,14 @@
           ^";
     return 0;
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
diff --git a/pkg/front_end/testcases/general/error_recovery/constructor_recovery_bad_name_get.crash_dart.outline.expect b/pkg/front_end/testcases/general/error_recovery/constructor_recovery_bad_name_get.crash_dart.outline.expect
index fe0b497..66d90df 100644
--- a/pkg/front_end/testcases/general/error_recovery/constructor_recovery_bad_name_get.crash_dart.outline.expect
+++ b/pkg/front_end/testcases/general/error_recovery/constructor_recovery_bad_name_get.crash_dart.outline.expect
@@ -49,4 +49,14 @@
     ;
   constructor foo() → self::Foo*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
diff --git a/pkg/front_end/testcases/general/error_recovery/constructor_recovery_bad_name_get.crash_dart.strong.expect b/pkg/front_end/testcases/general/error_recovery/constructor_recovery_bad_name_get.crash_dart.strong.expect
index 869b1d2..c18b438 100644
--- a/pkg/front_end/testcases/general/error_recovery/constructor_recovery_bad_name_get.crash_dart.strong.expect
+++ b/pkg/front_end/testcases/general/error_recovery/constructor_recovery_bad_name_get.crash_dart.strong.expect
@@ -59,4 +59,14 @@
     : final dynamic #t1 = invalid-expression "pkg/front_end/testcases/general/error_recovery/constructor_recovery_bad_name_get.crash_dart:8:15: Error: 'initializer' isn't an instance field of this class.
   get foo() : initializer = true {
               ^^^^^^^^^^^" {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
diff --git a/pkg/front_end/testcases/general/error_recovery/constructor_recovery_bad_name_get.crash_dart.strong.transformed.expect b/pkg/front_end/testcases/general/error_recovery/constructor_recovery_bad_name_get.crash_dart.strong.transformed.expect
index 869b1d2..c18b438 100644
--- a/pkg/front_end/testcases/general/error_recovery/constructor_recovery_bad_name_get.crash_dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general/error_recovery/constructor_recovery_bad_name_get.crash_dart.strong.transformed.expect
@@ -59,4 +59,14 @@
     : final dynamic #t1 = invalid-expression "pkg/front_end/testcases/general/error_recovery/constructor_recovery_bad_name_get.crash_dart:8:15: Error: 'initializer' isn't an instance field of this class.
   get foo() : initializer = true {
               ^^^^^^^^^^^" {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
diff --git a/pkg/front_end/testcases/general/error_recovery/constructor_recovery_bad_name_return_type.crash_dart.outline.expect b/pkg/front_end/testcases/general/error_recovery/constructor_recovery_bad_name_return_type.crash_dart.outline.expect
index 38d4897..f9c9a8e 100644
--- a/pkg/front_end/testcases/general/error_recovery/constructor_recovery_bad_name_return_type.crash_dart.outline.expect
+++ b/pkg/front_end/testcases/general/error_recovery/constructor_recovery_bad_name_return_type.crash_dart.outline.expect
@@ -44,4 +44,14 @@
     ;
   constructor foo() → self::Foo*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
diff --git a/pkg/front_end/testcases/general/error_recovery/constructor_recovery_bad_name_return_type.crash_dart.strong.expect b/pkg/front_end/testcases/general/error_recovery/constructor_recovery_bad_name_return_type.crash_dart.strong.expect
index 3864448..2d57f50 100644
--- a/pkg/front_end/testcases/general/error_recovery/constructor_recovery_bad_name_return_type.crash_dart.strong.expect
+++ b/pkg/front_end/testcases/general/error_recovery/constructor_recovery_bad_name_return_type.crash_dart.strong.expect
@@ -54,4 +54,14 @@
     : final dynamic #t1 = invalid-expression "pkg/front_end/testcases/general/error_recovery/constructor_recovery_bad_name_return_type.crash_dart:8:16: Error: 'initializer' isn't an instance field of this class.
   void foo() : initializer = true {
                ^^^^^^^^^^^" {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
diff --git a/pkg/front_end/testcases/general/error_recovery/constructor_recovery_bad_name_return_type.crash_dart.strong.transformed.expect b/pkg/front_end/testcases/general/error_recovery/constructor_recovery_bad_name_return_type.crash_dart.strong.transformed.expect
index 3864448..2d57f50 100644
--- a/pkg/front_end/testcases/general/error_recovery/constructor_recovery_bad_name_return_type.crash_dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general/error_recovery/constructor_recovery_bad_name_return_type.crash_dart.strong.transformed.expect
@@ -54,4 +54,14 @@
     : final dynamic #t1 = invalid-expression "pkg/front_end/testcases/general/error_recovery/constructor_recovery_bad_name_return_type.crash_dart:8:16: Error: 'initializer' isn't an instance field of this class.
   void foo() : initializer = true {
                ^^^^^^^^^^^" {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
diff --git a/pkg/front_end/testcases/general/error_recovery/constructor_recovery_bad_name_set.crash_dart.outline.expect b/pkg/front_end/testcases/general/error_recovery/constructor_recovery_bad_name_set.crash_dart.outline.expect
index 7fc2664..4755ce0 100644
--- a/pkg/front_end/testcases/general/error_recovery/constructor_recovery_bad_name_set.crash_dart.outline.expect
+++ b/pkg/front_end/testcases/general/error_recovery/constructor_recovery_bad_name_set.crash_dart.outline.expect
@@ -44,4 +44,14 @@
     ;
   constructor foo() → self::Foo*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
diff --git a/pkg/front_end/testcases/general/error_recovery/constructor_recovery_bad_name_set.crash_dart.strong.expect b/pkg/front_end/testcases/general/error_recovery/constructor_recovery_bad_name_set.crash_dart.strong.expect
index 2a38c47..08a4fb7 100644
--- a/pkg/front_end/testcases/general/error_recovery/constructor_recovery_bad_name_set.crash_dart.strong.expect
+++ b/pkg/front_end/testcases/general/error_recovery/constructor_recovery_bad_name_set.crash_dart.strong.expect
@@ -54,4 +54,14 @@
     : final dynamic #t1 = invalid-expression "pkg/front_end/testcases/general/error_recovery/constructor_recovery_bad_name_set.crash_dart:8:15: Error: 'initializer' isn't an instance field of this class.
   set foo() : initializer = true {
               ^^^^^^^^^^^" {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
diff --git a/pkg/front_end/testcases/general/error_recovery/constructor_recovery_bad_name_set.crash_dart.strong.transformed.expect b/pkg/front_end/testcases/general/error_recovery/constructor_recovery_bad_name_set.crash_dart.strong.transformed.expect
index 2a38c47..08a4fb7 100644
--- a/pkg/front_end/testcases/general/error_recovery/constructor_recovery_bad_name_set.crash_dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general/error_recovery/constructor_recovery_bad_name_set.crash_dart.strong.transformed.expect
@@ -54,4 +54,14 @@
     : final dynamic #t1 = invalid-expression "pkg/front_end/testcases/general/error_recovery/constructor_recovery_bad_name_set.crash_dart:8:15: Error: 'initializer' isn't an instance field of this class.
   set foo() : initializer = true {
               ^^^^^^^^^^^" {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
diff --git a/pkg/front_end/testcases/general/error_recovery/constructor_recovery_get.dart.outline.expect b/pkg/front_end/testcases/general/error_recovery/constructor_recovery_get.dart.outline.expect
index edb2408..f1b8b02 100644
--- a/pkg/front_end/testcases/general/error_recovery/constructor_recovery_get.dart.outline.expect
+++ b/pkg/front_end/testcases/general/error_recovery/constructor_recovery_get.dart.outline.expect
@@ -49,4 +49,14 @@
     ;
   get Foo() → dynamic
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
diff --git a/pkg/front_end/testcases/general/error_recovery/constructor_recovery_get.dart.strong.expect b/pkg/front_end/testcases/general/error_recovery/constructor_recovery_get.dart.strong.expect
index 5abfca6..79ad1fb 100644
--- a/pkg/front_end/testcases/general/error_recovery/constructor_recovery_get.dart.strong.expect
+++ b/pkg/front_end/testcases/general/error_recovery/constructor_recovery_get.dart.strong.expect
@@ -58,4 +58,14 @@
   constructor x() → self::Foo*
     : super core::Object::•() {}
   get Foo() → dynamic {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
diff --git a/pkg/front_end/testcases/general/error_recovery/constructor_recovery_get.dart.strong.transformed.expect b/pkg/front_end/testcases/general/error_recovery/constructor_recovery_get.dart.strong.transformed.expect
index 5abfca6..79ad1fb 100644
--- a/pkg/front_end/testcases/general/error_recovery/constructor_recovery_get.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general/error_recovery/constructor_recovery_get.dart.strong.transformed.expect
@@ -58,4 +58,14 @@
   constructor x() → self::Foo*
     : super core::Object::•() {}
   get Foo() → dynamic {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
diff --git a/pkg/front_end/testcases/general/error_recovery/constructor_recovery_ok.dart.outline.expect b/pkg/front_end/testcases/general/error_recovery/constructor_recovery_ok.dart.outline.expect
index 8613684..7bc1653 100644
--- a/pkg/front_end/testcases/general/error_recovery/constructor_recovery_ok.dart.outline.expect
+++ b/pkg/front_end/testcases/general/error_recovery/constructor_recovery_ok.dart.outline.expect
@@ -24,4 +24,14 @@
     ;
   constructor x() → self::Foo*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
diff --git a/pkg/front_end/testcases/general/error_recovery/constructor_recovery_ok.dart.strong.expect b/pkg/front_end/testcases/general/error_recovery/constructor_recovery_ok.dart.strong.expect
index 3544a52..0415410 100644
--- a/pkg/front_end/testcases/general/error_recovery/constructor_recovery_ok.dart.strong.expect
+++ b/pkg/front_end/testcases/general/error_recovery/constructor_recovery_ok.dart.strong.expect
@@ -32,4 +32,14 @@
     : super core::Object::•() {}
   constructor x() → self::Foo*
     : super core::Object::•() {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
diff --git a/pkg/front_end/testcases/general/error_recovery/constructor_recovery_ok.dart.strong.transformed.expect b/pkg/front_end/testcases/general/error_recovery/constructor_recovery_ok.dart.strong.transformed.expect
index 3544a52..0415410 100644
--- a/pkg/front_end/testcases/general/error_recovery/constructor_recovery_ok.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general/error_recovery/constructor_recovery_ok.dart.strong.transformed.expect
@@ -32,4 +32,14 @@
     : super core::Object::•() {}
   constructor x() → self::Foo*
     : super core::Object::•() {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
diff --git a/pkg/front_end/testcases/general/error_recovery/constructor_recovery_operator.crash_dart.outline.expect b/pkg/front_end/testcases/general/error_recovery/constructor_recovery_operator.crash_dart.outline.expect
index e8c9145..8936d22 100644
--- a/pkg/front_end/testcases/general/error_recovery/constructor_recovery_operator.crash_dart.outline.expect
+++ b/pkg/front_end/testcases/general/error_recovery/constructor_recovery_operator.crash_dart.outline.expect
@@ -143,4 +143,14 @@
     ;
   method foo() → dynamic
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
diff --git a/pkg/front_end/testcases/general/error_recovery/constructor_recovery_operator.crash_dart.strong.expect b/pkg/front_end/testcases/general/error_recovery/constructor_recovery_operator.crash_dart.strong.expect
index c7113bf..d378b59 100644
--- a/pkg/front_end/testcases/general/error_recovery/constructor_recovery_operator.crash_dart.strong.expect
+++ b/pkg/front_end/testcases/general/error_recovery/constructor_recovery_operator.crash_dart.strong.expect
@@ -142,4 +142,14 @@
   constructor /() → self::Foo*
     : super core::Object::•() {}
   method foo() → dynamic {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
diff --git a/pkg/front_end/testcases/general/error_recovery/constructor_recovery_operator.crash_dart.strong.transformed.expect b/pkg/front_end/testcases/general/error_recovery/constructor_recovery_operator.crash_dart.strong.transformed.expect
index c7113bf..d378b59 100644
--- a/pkg/front_end/testcases/general/error_recovery/constructor_recovery_operator.crash_dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general/error_recovery/constructor_recovery_operator.crash_dart.strong.transformed.expect
@@ -142,4 +142,14 @@
   constructor /() → self::Foo*
     : super core::Object::•() {}
   method foo() → dynamic {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
diff --git a/pkg/front_end/testcases/general/error_recovery/constructor_recovery_return_type.dart.outline.expect b/pkg/front_end/testcases/general/error_recovery/constructor_recovery_return_type.dart.outline.expect
index ff6c7df..c386109 100644
--- a/pkg/front_end/testcases/general/error_recovery/constructor_recovery_return_type.dart.outline.expect
+++ b/pkg/front_end/testcases/general/error_recovery/constructor_recovery_return_type.dart.outline.expect
@@ -44,4 +44,14 @@
     ;
   constructor x() → self::Foo*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
diff --git a/pkg/front_end/testcases/general/error_recovery/constructor_recovery_return_type.dart.strong.expect b/pkg/front_end/testcases/general/error_recovery/constructor_recovery_return_type.dart.strong.expect
index 20c0062..e3eecb9 100644
--- a/pkg/front_end/testcases/general/error_recovery/constructor_recovery_return_type.dart.strong.expect
+++ b/pkg/front_end/testcases/general/error_recovery/constructor_recovery_return_type.dart.strong.expect
@@ -52,4 +52,14 @@
     : super core::Object::•() {}
   constructor x() → self::Foo*
     : super core::Object::•() {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
diff --git a/pkg/front_end/testcases/general/error_recovery/constructor_recovery_return_type.dart.strong.transformed.expect b/pkg/front_end/testcases/general/error_recovery/constructor_recovery_return_type.dart.strong.transformed.expect
index 20c0062..e3eecb9 100644
--- a/pkg/front_end/testcases/general/error_recovery/constructor_recovery_return_type.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general/error_recovery/constructor_recovery_return_type.dart.strong.transformed.expect
@@ -52,4 +52,14 @@
     : super core::Object::•() {}
   constructor x() → self::Foo*
     : super core::Object::•() {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
diff --git a/pkg/front_end/testcases/general/error_recovery/constructor_recovery_set.dart.outline.expect b/pkg/front_end/testcases/general/error_recovery/constructor_recovery_set.dart.outline.expect
index 59ce93c..95bfd8f 100644
--- a/pkg/front_end/testcases/general/error_recovery/constructor_recovery_set.dart.outline.expect
+++ b/pkg/front_end/testcases/general/error_recovery/constructor_recovery_set.dart.outline.expect
@@ -39,4 +39,14 @@
     ;
   set Foo(dynamic #synthetic) → void
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
diff --git a/pkg/front_end/testcases/general/error_recovery/constructor_recovery_set.dart.strong.expect b/pkg/front_end/testcases/general/error_recovery/constructor_recovery_set.dart.strong.expect
index 5995c47..8fccae6 100644
--- a/pkg/front_end/testcases/general/error_recovery/constructor_recovery_set.dart.strong.expect
+++ b/pkg/front_end/testcases/general/error_recovery/constructor_recovery_set.dart.strong.expect
@@ -57,4 +57,14 @@
          ^";
     {}
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
diff --git a/pkg/front_end/testcases/general/error_recovery/constructor_recovery_set.dart.strong.transformed.expect b/pkg/front_end/testcases/general/error_recovery/constructor_recovery_set.dart.strong.transformed.expect
index 5995c47..8fccae6 100644
--- a/pkg/front_end/testcases/general/error_recovery/constructor_recovery_set.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general/error_recovery/constructor_recovery_set.dart.strong.transformed.expect
@@ -57,4 +57,14 @@
          ^";
     {}
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
diff --git a/pkg/front_end/testcases/general/error_recovery/empty_await_for.dart.strong.transformed.expect b/pkg/front_end/testcases/general/error_recovery/empty_await_for.dart.strong.transformed.expect
index a9a80da..1d1f3af 100644
--- a/pkg/front_end/testcases/general/error_recovery/empty_await_for.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general/error_recovery/empty_await_for.dart.strong.transformed.expect
@@ -42,7 +42,7 @@
             while (true) {
               dynamic #t1 = asy::_asyncStarMoveNextHelper(:stream);
               [yield] let dynamic #t2 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::moveNext}(), :async_op_then, :async_op_error, :async_op) in null;
-              if(_in::unsafeCast<core::bool*>(:result)) {
+              if(_in::unsafeCast<core::bool>(:result)) {
                 final dynamic #t3 = :for-iterator.{asy::_StreamIterator::current};
                 {
                   invalid-expression "pkg/front_end/testcases/general/error_recovery/empty_await_for.dart:2:14: Error: This couldn't be parsed.
@@ -63,8 +63,8 @@
       asy::_completeOnAsyncReturn(:async_completer, :return_value);
       return;
     }
-    on dynamic catch(dynamic :exception, core::StackTrace* :stack_trace) {
-      :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+    on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
+      :async_completer.{asy::Completer::completeError}(exception, stack_trace);
     }
   :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
diff --git a/pkg/front_end/testcases/general/error_recovery/issue_39026.crash_dart.outline.expect b/pkg/front_end/testcases/general/error_recovery/issue_39026.crash_dart.outline.expect
index 295fe3d..c78f5e1 100644
--- a/pkg/front_end/testcases/general/error_recovery/issue_39026.crash_dart.outline.expect
+++ b/pkg/front_end/testcases/general/error_recovery/issue_39026.crash_dart.outline.expect
@@ -28,4 +28,14 @@
     ;
   operator <() → invalid-type
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
diff --git a/pkg/front_end/testcases/general/error_recovery/issue_39026.crash_dart.strong.expect b/pkg/front_end/testcases/general/error_recovery/issue_39026.crash_dart.strong.expect
index b4527e1..ac72fc0 100644
--- a/pkg/front_end/testcases/general/error_recovery/issue_39026.crash_dart.strong.expect
+++ b/pkg/front_end/testcases/general/error_recovery/issue_39026.crash_dart.strong.expect
@@ -28,4 +28,14 @@
     : super core::Object::•()
     ;
   operator <() → invalid-type {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
diff --git a/pkg/front_end/testcases/general/error_recovery/issue_39026.crash_dart.strong.transformed.expect b/pkg/front_end/testcases/general/error_recovery/issue_39026.crash_dart.strong.transformed.expect
index b4527e1..ac72fc0 100644
--- a/pkg/front_end/testcases/general/error_recovery/issue_39026.crash_dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general/error_recovery/issue_39026.crash_dart.strong.transformed.expect
@@ -28,4 +28,14 @@
     : super core::Object::•()
     ;
   operator <() → invalid-type {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
diff --git a/pkg/front_end/testcases/general/error_recovery/issue_39026_prime.crash_dart.outline.expect b/pkg/front_end/testcases/general/error_recovery/issue_39026_prime.crash_dart.outline.expect
index ae9916b..1a20c14 100644
--- a/pkg/front_end/testcases/general/error_recovery/issue_39026_prime.crash_dart.outline.expect
+++ b/pkg/front_end/testcases/general/error_recovery/issue_39026_prime.crash_dart.outline.expect
@@ -23,4 +23,14 @@
     ;
   operator <() → invalid-type
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
diff --git a/pkg/front_end/testcases/general/error_recovery/issue_39026_prime.crash_dart.strong.expect b/pkg/front_end/testcases/general/error_recovery/issue_39026_prime.crash_dart.strong.expect
index 8d68a65..4db3bbc 100644
--- a/pkg/front_end/testcases/general/error_recovery/issue_39026_prime.crash_dart.strong.expect
+++ b/pkg/front_end/testcases/general/error_recovery/issue_39026_prime.crash_dart.strong.expect
@@ -23,4 +23,14 @@
     : super core::Object::•()
     ;
   operator <() → invalid-type {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
diff --git a/pkg/front_end/testcases/general/error_recovery/issue_39026_prime.crash_dart.strong.transformed.expect b/pkg/front_end/testcases/general/error_recovery/issue_39026_prime.crash_dart.strong.transformed.expect
index 8d68a65..4db3bbc 100644
--- a/pkg/front_end/testcases/general/error_recovery/issue_39026_prime.crash_dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general/error_recovery/issue_39026_prime.crash_dart.strong.transformed.expect
@@ -23,4 +23,14 @@
     : super core::Object::•()
     ;
   operator <() → invalid-type {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
diff --git a/pkg/front_end/testcases/general/error_recovery/issue_39230.crash_dart.outline.expect b/pkg/front_end/testcases/general/error_recovery/issue_39230.crash_dart.outline.expect
index 46d7222..9d71fd5 100644
--- a/pkg/front_end/testcases/general/error_recovery/issue_39230.crash_dart.outline.expect
+++ b/pkg/front_end/testcases/general/error_recovery/issue_39230.crash_dart.outline.expect
@@ -32,4 +32,14 @@
     ;
   constructor /() → self::C*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
diff --git a/pkg/front_end/testcases/general/error_recovery/issue_39230.crash_dart.strong.expect b/pkg/front_end/testcases/general/error_recovery/issue_39230.crash_dart.strong.expect
index 3af922c..00c690b 100644
--- a/pkg/front_end/testcases/general/error_recovery/issue_39230.crash_dart.strong.expect
+++ b/pkg/front_end/testcases/general/error_recovery/issue_39230.crash_dart.strong.expect
@@ -33,4 +33,14 @@
   constructor /() → self::C*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
diff --git a/pkg/front_end/testcases/general/error_recovery/issue_39230.crash_dart.strong.transformed.expect b/pkg/front_end/testcases/general/error_recovery/issue_39230.crash_dart.strong.transformed.expect
index 3af922c..00c690b 100644
--- a/pkg/front_end/testcases/general/error_recovery/issue_39230.crash_dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general/error_recovery/issue_39230.crash_dart.strong.transformed.expect
@@ -33,4 +33,14 @@
   constructor /() → self::C*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
diff --git a/pkg/front_end/testcases/general/escape.dart.outline.expect b/pkg/front_end/testcases/general/escape.dart.outline.expect
index e198e42..63f26c8 100644
--- a/pkg/front_end/testcases/general/escape.dart.outline.expect
+++ b/pkg/front_end/testcases/general/escape.dart.outline.expect
@@ -6,22 +6,61 @@
   field dynamic field;
   synthetic constructor •() → self::A*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends core::Object {
   field dynamic field;
   synthetic constructor •() → self::B*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C extends core::Object {
   synthetic constructor •() → self::C*
     ;
   operator ==(dynamic x) → core::bool*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class X extends core::Object implements self::A, self::B {
   field dynamic field;
   synthetic constructor •() → self::X*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method useAsA(self::A* object) → void
   ;
diff --git a/pkg/front_end/testcases/general/escape.dart.strong.expect b/pkg/front_end/testcases/general/escape.dart.strong.expect
index 9a86227..c1db545 100644
--- a/pkg/front_end/testcases/general/escape.dart.strong.expect
+++ b/pkg/front_end/testcases/general/escape.dart.strong.expect
@@ -7,12 +7,32 @@
   synthetic constructor •() → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends core::Object {
   field dynamic field = null;
   synthetic constructor •() → self::B*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C extends core::Object {
   synthetic constructor •() → self::C*
@@ -20,12 +40,31 @@
     ;
   operator ==(dynamic x) → core::bool*
     return false;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class X extends core::Object implements self::A, self::B {
   field dynamic field = null;
   synthetic constructor •() → self::X*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method useAsA(self::A* object) → void {
   dynamic _ = object.{self::A::field};
diff --git a/pkg/front_end/testcases/general/escape.dart.strong.transformed.expect b/pkg/front_end/testcases/general/escape.dart.strong.transformed.expect
index 9a86227..c1db545 100644
--- a/pkg/front_end/testcases/general/escape.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general/escape.dart.strong.transformed.expect
@@ -7,12 +7,32 @@
   synthetic constructor •() → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends core::Object {
   field dynamic field = null;
   synthetic constructor •() → self::B*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C extends core::Object {
   synthetic constructor •() → self::C*
@@ -20,12 +40,31 @@
     ;
   operator ==(dynamic x) → core::bool*
     return false;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class X extends core::Object implements self::A, self::B {
   field dynamic field = null;
   synthetic constructor •() → self::X*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method useAsA(self::A* object) → void {
   dynamic _ = object.{self::A::field};
diff --git a/pkg/front_end/testcases/general/extend_with_type_variable.dart.outline.expect b/pkg/front_end/testcases/general/extend_with_type_variable.dart.outline.expect
index ac516b1..c3c5e6e 100644
--- a/pkg/front_end/testcases/general/extend_with_type_variable.dart.outline.expect
+++ b/pkg/front_end/testcases/general/extend_with_type_variable.dart.outline.expect
@@ -20,12 +20,42 @@
 class SuperClass extends core::Object {
   synthetic constructor •() → self::SuperClass*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class Mixin<T extends core::Object* = dynamic> extends core::Object /*isMixinDeclaration*/  {
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class _Class1&S&Mixin<T extends core::Object* = dynamic, S extends self::SuperClass* = self::SuperClass*> = core::Object with self::Mixin<self::_Class1&S&Mixin::T*> /*isAnonymousMixin*/  {
   synthetic constructor •() → self::_Class1&S&Mixin<self::_Class1&S&Mixin::T*, self::_Class1&S&Mixin::S*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Class1<T extends core::Object* = dynamic, S extends self::SuperClass* = self::SuperClass*> extends self::_Class1&S&Mixin<self::Class1::T*, self::Class1::S*> {
   synthetic constructor •() → self::Class1<self::Class1::T*, self::Class1::S*>*
diff --git a/pkg/front_end/testcases/general/extend_with_type_variable.dart.strong.expect b/pkg/front_end/testcases/general/extend_with_type_variable.dart.strong.expect
index fc89e52..454df26 100644
--- a/pkg/front_end/testcases/general/extend_with_type_variable.dart.strong.expect
+++ b/pkg/front_end/testcases/general/extend_with_type_variable.dart.strong.expect
@@ -21,13 +21,43 @@
   synthetic constructor •() → self::SuperClass*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class Mixin<T extends core::Object* = dynamic> extends core::Object /*isMixinDeclaration*/  {
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class _Class1&S&Mixin<T extends core::Object* = dynamic, S extends self::SuperClass* = self::SuperClass*> = core::Object with self::Mixin<self::_Class1&S&Mixin::T*> /*isAnonymousMixin*/  {
   synthetic constructor •() → self::_Class1&S&Mixin<self::_Class1&S&Mixin::T*, self::_Class1&S&Mixin::S*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Class1<T extends core::Object* = dynamic, S extends self::SuperClass* = self::SuperClass*> extends self::_Class1&S&Mixin<self::Class1::T*, self::Class1::S*> {
   synthetic constructor •() → self::Class1<self::Class1::T*, self::Class1::S*>*
diff --git a/pkg/front_end/testcases/general/extend_with_type_variable.dart.strong.transformed.expect b/pkg/front_end/testcases/general/extend_with_type_variable.dart.strong.transformed.expect
index c3f0a09..76e4a4d 100644
--- a/pkg/front_end/testcases/general/extend_with_type_variable.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general/extend_with_type_variable.dart.strong.transformed.expect
@@ -21,13 +21,43 @@
   synthetic constructor •() → self::SuperClass*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class Mixin<T extends core::Object* = dynamic> extends core::Object /*isMixinDeclaration*/  {
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class _Class1&S&Mixin<T extends core::Object* = dynamic, S extends self::SuperClass* = self::SuperClass*> extends core::Object implements self::Mixin<self::_Class1&S&Mixin::T*> /*isAnonymousMixin,isEliminatedMixin*/  {
   synthetic constructor •() → self::_Class1&S&Mixin<self::_Class1&S&Mixin::T*, self::_Class1&S&Mixin::S*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Class1<T extends core::Object* = dynamic, S extends self::SuperClass* = self::SuperClass*> extends self::_Class1&S&Mixin<self::Class1::T*, self::Class1::S*> {
   synthetic constructor •() → self::Class1<self::Class1::T*, self::Class1::S*>*
diff --git a/pkg/front_end/testcases/general/ffi_sample.dart.outline.expect b/pkg/front_end/testcases/general/ffi_sample.dart.outline.expect
index 37826b4..aa2dbcb 100644
--- a/pkg/front_end/testcases/general/ffi_sample.dart.outline.expect
+++ b/pkg/front_end/testcases/general/ffi_sample.dart.outline.expect
@@ -14,6 +14,17 @@
   field ffi::Pointer<self::Coordinate*>* next;
   static factory allocate(core::double* x, core::double* y, ffi::Pointer<self::Coordinate*>* next) → self::Coordinate*
     ;
+  abstract member-signature get _addressOf() → ffi::Pointer<ffi::Struct*>*;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/general/ffi_sample.dart.strong.expect b/pkg/front_end/testcases/general/ffi_sample.dart.strong.expect
index acbd85c..4205663 100644
--- a/pkg/front_end/testcases/general/ffi_sample.dart.strong.expect
+++ b/pkg/front_end/testcases/general/ffi_sample.dart.strong.expect
@@ -16,6 +16,17 @@
   static factory allocate(core::double* x, core::double* y, ffi::Pointer<self::Coordinate*>* next) → self::Coordinate* {
     return let final self::Coordinate* #t1 = ffi::StructPointer|get#ref<self::Coordinate*>(all::allocate<self::Coordinate*>()) in let final void #t2 = #t1.{self::Coordinate::x} = x in let final void #t3 = #t1.{self::Coordinate::y} = y in let final void #t4 = #t1.{self::Coordinate::next} = next in #t1;
   }
+  abstract member-signature get _addressOf() → ffi::Pointer<ffi::Struct*>*;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
 
diff --git a/pkg/front_end/testcases/general/ffi_sample.dart.strong.transformed.expect b/pkg/front_end/testcases/general/ffi_sample.dart.strong.transformed.expect
index bcf2699..241578e 100644
--- a/pkg/front_end/testcases/general/ffi_sample.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general/ffi_sample.dart.strong.transformed.expect
@@ -18,6 +18,17 @@
   static factory allocate(core::double* x, core::double* y, ffi::Pointer<self::Coordinate*>* next) → self::Coordinate* {
     return let final self::Coordinate* #t1 = ffi::StructPointer|get#ref<self::Coordinate*>(all::allocate<self::Coordinate*>()) in let final void #t2 = #t1.{self::Coordinate::x} = x in let final void #t3 = #t1.{self::Coordinate::y} = y in let final void #t4 = #t1.{self::Coordinate::next} = next in #t1;
   }
+  abstract member-signature get _addressOf() → ffi::Pointer<ffi::Struct*>*;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
   get x() → core::double*
     return ffi::_loadDouble(this.{ffi::Struct::_addressOf}, (#C8).{core::List::[]}(ffi::_abi()));
   set x(core::double* #v) → void
diff --git a/pkg/front_end/testcases/general/for_in_without_declaration.dart.outline.expect b/pkg/front_end/testcases/general/for_in_without_declaration.dart.outline.expect
index 7778ba0..da38f9a 100644
--- a/pkg/front_end/testcases/general/for_in_without_declaration.dart.outline.expect
+++ b/pkg/front_end/testcases/general/for_in_without_declaration.dart.outline.expect
@@ -7,6 +7,16 @@
   field dynamic untypedSuperInstanceField;
   synthetic constructor •() → self::Super*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C extends self::Super {
   field core::int* instanceField;
diff --git a/pkg/front_end/testcases/general/for_in_without_declaration.dart.strong.expect b/pkg/front_end/testcases/general/for_in_without_declaration.dart.strong.expect
index 2f15de1..8f47d6e 100644
--- a/pkg/front_end/testcases/general/for_in_without_declaration.dart.strong.expect
+++ b/pkg/front_end/testcases/general/for_in_without_declaration.dart.strong.expect
@@ -73,6 +73,16 @@
   synthetic constructor •() → self::Super*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C extends self::Super {
   field core::int* instanceField = null;
diff --git a/pkg/front_end/testcases/general/for_in_without_declaration.dart.strong.transformed.expect b/pkg/front_end/testcases/general/for_in_without_declaration.dart.strong.transformed.expect
index 6065d16..f551d69 100644
--- a/pkg/front_end/testcases/general/for_in_without_declaration.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general/for_in_without_declaration.dart.strong.transformed.expect
@@ -73,6 +73,16 @@
   synthetic constructor •() → self::Super*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C extends self::Super {
   field core::int* instanceField = null;
diff --git a/pkg/front_end/testcases/general/forwarding_stub_for_operator.dart.outline.expect b/pkg/front_end/testcases/general/forwarding_stub_for_operator.dart.outline.expect
index ccb8208..60ea4c6 100644
--- a/pkg/front_end/testcases/general/forwarding_stub_for_operator.dart.outline.expect
+++ b/pkg/front_end/testcases/general/forwarding_stub_for_operator.dart.outline.expect
@@ -7,16 +7,46 @@
     ;
   operator +(covariant core::int* a) → dynamic
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends core::Object {
   synthetic constructor •() → self::B*
     ;
   operator +(dynamic b) → dynamic
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class C extends core::Object implements self::A, self::B {
   synthetic constructor •() → self::C*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
   abstract forwarding-stub operator +(covariant dynamic b) → dynamic;
 }
 class D extends core::Object {
@@ -24,6 +54,16 @@
     ;
   operator +(dynamic d) → dynamic
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class E extends self::D {
   synthetic constructor •() → self::E*
diff --git a/pkg/front_end/testcases/general/forwarding_stub_for_operator.dart.strong.expect b/pkg/front_end/testcases/general/forwarding_stub_for_operator.dart.strong.expect
index 4f87d1b..f343031 100644
--- a/pkg/front_end/testcases/general/forwarding_stub_for_operator.dart.strong.expect
+++ b/pkg/front_end/testcases/general/forwarding_stub_for_operator.dart.strong.expect
@@ -8,6 +8,16 @@
     ;
   operator +(covariant core::int* a) → dynamic
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends core::Object {
   synthetic constructor •() → self::B*
@@ -15,11 +25,31 @@
     ;
   operator +(dynamic b) → dynamic
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class C extends core::Object implements self::A, self::B {
   synthetic constructor •() → self::C*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
   abstract forwarding-stub operator +(covariant dynamic b) → dynamic;
 }
 class D extends core::Object {
@@ -28,6 +58,16 @@
     ;
   operator +(dynamic d) → dynamic
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class E extends self::D {
   synthetic constructor •() → self::E*
diff --git a/pkg/front_end/testcases/general/forwarding_stub_for_operator.dart.strong.transformed.expect b/pkg/front_end/testcases/general/forwarding_stub_for_operator.dart.strong.transformed.expect
index 4f87d1b..f343031 100644
--- a/pkg/front_end/testcases/general/forwarding_stub_for_operator.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general/forwarding_stub_for_operator.dart.strong.transformed.expect
@@ -8,6 +8,16 @@
     ;
   operator +(covariant core::int* a) → dynamic
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends core::Object {
   synthetic constructor •() → self::B*
@@ -15,11 +25,31 @@
     ;
   operator +(dynamic b) → dynamic
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class C extends core::Object implements self::A, self::B {
   synthetic constructor •() → self::C*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
   abstract forwarding-stub operator +(covariant dynamic b) → dynamic;
 }
 class D extends core::Object {
@@ -28,6 +58,16 @@
     ;
   operator +(dynamic d) → dynamic
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class E extends self::D {
   synthetic constructor •() → self::E*
diff --git a/pkg/front_end/testcases/general/future_or_test.dart.outline.expect b/pkg/front_end/testcases/general/future_or_test.dart.outline.expect
index 3f972a0..9a4dfad 100644
--- a/pkg/front_end/testcases/general/future_or_test.dart.outline.expect
+++ b/pkg/front_end/testcases/general/future_or_test.dart.outline.expect
@@ -10,6 +10,16 @@
     ;
   method foo() → dynamic
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends core::Object {
   field self::A* a;
@@ -17,6 +27,16 @@
     ;
   method bar() → asy::Future<dynamic>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C extends core::Object {
   field self::B* b;
@@ -24,6 +44,16 @@
     ;
   method baz() → asy::Future<core::int*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/general/future_or_test.dart.strong.expect b/pkg/front_end/testcases/general/future_or_test.dart.strong.expect
index cb66dac..c0976ca 100644
--- a/pkg/front_end/testcases/general/future_or_test.dart.strong.expect
+++ b/pkg/front_end/testcases/general/future_or_test.dart.strong.expect
@@ -11,6 +11,16 @@
     ;
   method foo() → dynamic
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends core::Object {
   field self::A* a = null;
@@ -19,6 +29,16 @@
     ;
   method bar() → asy::Future<dynamic>* async 
     return this.{self::B::a}.{self::A::foo}();
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C extends core::Object {
   field self::B* b = new self::B::•();
@@ -27,5 +47,15 @@
     ;
   method baz() → asy::Future<core::int*>* async 
     return this.{self::C::b}.{self::B::bar}() as{TypeError} asy::FutureOr<core::int*>*;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general/future_or_test.dart.strong.transformed.expect b/pkg/front_end/testcases/general/future_or_test.dart.strong.transformed.expect
index 206c905..efdff61 100644
--- a/pkg/front_end/testcases/general/future_or_test.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general/future_or_test.dart.strong.transformed.expect
@@ -11,6 +11,16 @@
     ;
   method foo() → dynamic
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends core::Object {
   field self::A* a = null;
@@ -35,8 +45,8 @@
         asy::_completeOnAsyncReturn(:async_completer, :return_value);
         return;
       }
-      on dynamic catch(dynamic :exception, core::StackTrace* :stack_trace) {
-        :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+      on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
+        :async_completer.{asy::Completer::completeError}(exception, stack_trace);
       }
     :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
     :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
@@ -44,6 +54,16 @@
     :async_completer.{asy::_AsyncAwaitCompleter::start}(:async_op);
     return :async_completer.{asy::Completer::future};
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C extends core::Object {
   field self::B* b = new self::B::•();
@@ -68,8 +88,8 @@
         asy::_completeOnAsyncReturn(:async_completer, :return_value);
         return;
       }
-      on dynamic catch(dynamic :exception, core::StackTrace* :stack_trace) {
-        :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+      on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
+        :async_completer.{asy::Completer::completeError}(exception, stack_trace);
       }
     :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
     :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
@@ -77,5 +97,15 @@
     :async_completer.{asy::_AsyncAwaitCompleter::start}(:async_op);
     return :async_completer.{asy::Completer::future};
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general/getter_call.dart.outline.expect b/pkg/front_end/testcases/general/getter_call.dart.outline.expect
index ea68a16..69097f7 100644
--- a/pkg/front_end/testcases/general/getter_call.dart.outline.expect
+++ b/pkg/front_end/testcases/general/getter_call.dart.outline.expect
@@ -29,6 +29,16 @@
     ;
   get getter7() → ({a: core::int*, b: core::int*}) →* core::int*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Subclass extends self::Class {
   synthetic constructor •() → self::Subclass*
diff --git a/pkg/front_end/testcases/general/getter_call.dart.strong.expect b/pkg/front_end/testcases/general/getter_call.dart.strong.expect
index 532f76b..47dcd2c 100644
--- a/pkg/front_end/testcases/general/getter_call.dart.strong.expect
+++ b/pkg/front_end/testcases/general/getter_call.dart.strong.expect
@@ -30,6 +30,16 @@
     return #C6;
   get getter7() → ({a: core::int*, b: core::int*}) →* core::int*
     return #C7;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Subclass extends self::Class {
   synthetic constructor •() → self::Subclass*
diff --git a/pkg/front_end/testcases/general/getter_call.dart.strong.transformed.expect b/pkg/front_end/testcases/general/getter_call.dart.strong.transformed.expect
index 532f76b..47dcd2c 100644
--- a/pkg/front_end/testcases/general/getter_call.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general/getter_call.dart.strong.transformed.expect
@@ -30,6 +30,16 @@
     return #C6;
   get getter7() → ({a: core::int*, b: core::int*}) →* core::int*
     return #C7;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Subclass extends self::Class {
   synthetic constructor •() → self::Subclass*
diff --git a/pkg/front_end/testcases/general/if_null_in_cascade.dart.outline.expect b/pkg/front_end/testcases/general/if_null_in_cascade.dart.outline.expect
index 4d61e58..807c210 100644
--- a/pkg/front_end/testcases/general/if_null_in_cascade.dart.outline.expect
+++ b/pkg/front_end/testcases/general/if_null_in_cascade.dart.outline.expect
@@ -7,6 +7,16 @@
     ;
   method method() → dynamic
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/general/if_null_in_cascade.dart.strong.expect b/pkg/front_end/testcases/general/if_null_in_cascade.dart.strong.expect
index 09f340a..e93b141 100644
--- a/pkg/front_end/testcases/general/if_null_in_cascade.dart.strong.expect
+++ b/pkg/front_end/testcases/general/if_null_in_cascade.dart.strong.expect
@@ -7,9 +7,19 @@
     : super core::Object::•()
     ;
   method method() → dynamic {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   self::Class* a;
   self::Class* b = new self::Class::•();
-  let final self::Class* #t1 = let final self::Class* #t2 = a in #t2.{core::Object::==}(null) ?{self::Class*} b : #t2 in let final void #t3 = #t1.{self::Class::method}() in #t1;
+  let final self::Class* #t1 = let final self::Class* #t2 = a in #t2.{self::Class::==}(null) ?{self::Class*} b : #t2 in let final void #t3 = #t1.{self::Class::method}() in #t1;
 }
diff --git a/pkg/front_end/testcases/general/if_null_in_cascade.dart.strong.transformed.expect b/pkg/front_end/testcases/general/if_null_in_cascade.dart.strong.transformed.expect
index 09f340a..e93b141 100644
--- a/pkg/front_end/testcases/general/if_null_in_cascade.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general/if_null_in_cascade.dart.strong.transformed.expect
@@ -7,9 +7,19 @@
     : super core::Object::•()
     ;
   method method() → dynamic {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   self::Class* a;
   self::Class* b = new self::Class::•();
-  let final self::Class* #t1 = let final self::Class* #t2 = a in #t2.{core::Object::==}(null) ?{self::Class*} b : #t2 in let final void #t3 = #t1.{self::Class::method}() in #t1;
+  let final self::Class* #t1 = let final self::Class* #t2 = a in #t2.{self::Class::==}(null) ?{self::Class*} b : #t2 in let final void #t3 = #t1.{self::Class::method}() in #t1;
 }
diff --git a/pkg/front_end/testcases/general/if_null_in_set_literal.dart.strong.transformed.expect b/pkg/front_end/testcases/general/if_null_in_set_literal.dart.strong.transformed.expect
index 9468fbe..5cba724 100644
--- a/pkg/front_end/testcases/general/if_null_in_set_literal.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general/if_null_in_set_literal.dart.strong.transformed.expect
@@ -6,5 +6,5 @@
 static method main() → dynamic {
   core::Object* a;
   core::Object* b;
-  return let final core::Set<core::Object*>* #t1 = col::LinkedHashSet::•<core::Object*>() in let final core::bool* #t2 = #t1.{core::Set::add}(let final core::Object* #t3 = a in #t3.{core::Object::==}(null) ?{core::Object*} b : #t3) in #t1;
+  return let final core::Set<core::Object*>* #t1 = col::LinkedHashSet::•<core::Object*>() in let final core::bool #t2 = #t1.{core::Set::add}(let final core::Object* #t3 = a in #t3.{core::Object::==}(null) ?{core::Object*} b : #t3) in #t1;
 }
diff --git a/pkg/front_end/testcases/general/ignore_function.dart.outline.expect b/pkg/front_end/testcases/general/ignore_function.dart.outline.expect
index 6172453..4759fc7 100644
--- a/pkg/front_end/testcases/general/ignore_function.dart.outline.expect
+++ b/pkg/front_end/testcases/general/ignore_function.dart.outline.expect
@@ -9,18 +9,45 @@
     ;
   operator ==(dynamic other) → core::bool*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends core::Object implements self::Function {
   synthetic constructor •() → self::B*
     ;
   operator ==(dynamic other) → core::bool*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Function extends core::Object {
   synthetic constructor •() → self::Function*
     ;
   operator ==(core::Object* other) → core::bool*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/general/ignore_function.dart.strong.expect b/pkg/front_end/testcases/general/ignore_function.dart.strong.expect
index b28a177..a4febea 100644
--- a/pkg/front_end/testcases/general/ignore_function.dart.strong.expect
+++ b/pkg/front_end/testcases/general/ignore_function.dart.strong.expect
@@ -10,6 +10,15 @@
     ;
   operator ==(dynamic other) → core::bool*
     return false;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends core::Object implements self::Function {
   synthetic constructor •() → self::B*
@@ -17,6 +26,15 @@
     ;
   operator ==(dynamic other) → core::bool*
     return false;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Function extends core::Object {
   synthetic constructor •() → self::Function*
@@ -24,5 +42,14 @@
     ;
   operator ==(core::Object* other) → core::bool*
     return false;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general/ignore_function.dart.strong.transformed.expect b/pkg/front_end/testcases/general/ignore_function.dart.strong.transformed.expect
index b28a177..a4febea 100644
--- a/pkg/front_end/testcases/general/ignore_function.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general/ignore_function.dart.strong.transformed.expect
@@ -10,6 +10,15 @@
     ;
   operator ==(dynamic other) → core::bool*
     return false;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends core::Object implements self::Function {
   synthetic constructor •() → self::B*
@@ -17,6 +26,15 @@
     ;
   operator ==(dynamic other) → core::bool*
     return false;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Function extends core::Object {
   synthetic constructor •() → self::Function*
@@ -24,5 +42,14 @@
     ;
   operator ==(core::Object* other) → core::bool*
     return false;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general/implicit_const_with_static_fields.dart.outline.expect b/pkg/front_end/testcases/general/implicit_const_with_static_fields.dart.outline.expect
index 503d2ef..c376031 100644
--- a/pkg/front_end/testcases/general/implicit_const_with_static_fields.dart.outline.expect
+++ b/pkg/front_end/testcases/general/implicit_const_with_static_fields.dart.outline.expect
@@ -7,6 +7,16 @@
   const constructor •(dynamic x) → self::C*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static const field core::int* constTopLevelField = 42;
 static method main() → dynamic
diff --git a/pkg/front_end/testcases/general/implicit_const_with_static_fields.dart.strong.expect b/pkg/front_end/testcases/general/implicit_const_with_static_fields.dart.strong.expect
index 0c80488..2164cb2 100644
--- a/pkg/front_end/testcases/general/implicit_const_with_static_fields.dart.strong.expect
+++ b/pkg/front_end/testcases/general/implicit_const_with_static_fields.dart.strong.expect
@@ -7,6 +7,16 @@
   const constructor •(dynamic x) → self::C*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static const field core::int* constTopLevelField = #C2;
 static method main() → dynamic {
diff --git a/pkg/front_end/testcases/general/implicit_const_with_static_fields.dart.strong.transformed.expect b/pkg/front_end/testcases/general/implicit_const_with_static_fields.dart.strong.transformed.expect
index 0c80488..2164cb2 100644
--- a/pkg/front_end/testcases/general/implicit_const_with_static_fields.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general/implicit_const_with_static_fields.dart.strong.transformed.expect
@@ -7,6 +7,16 @@
   const constructor •(dynamic x) → self::C*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static const field core::int* constTopLevelField = #C2;
 static method main() → dynamic {
diff --git a/pkg/front_end/testcases/general/implicit_new.dart.outline.expect b/pkg/front_end/testcases/general/implicit_new.dart.outline.expect
index 8cc8392..0ed09c5 100644
--- a/pkg/front_end/testcases/general/implicit_new.dart.outline.expect
+++ b/pkg/front_end/testcases/general/implicit_new.dart.outline.expect
@@ -9,12 +9,32 @@
     ;
   operator +(dynamic other) → dynamic
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Bar extends core::Object {
   constructor named() → self::Bar*
     ;
   operator +(dynamic other) → dynamic
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class IndexTester extends core::Object {
   synthetic constructor •() → self::IndexTester*
@@ -23,6 +43,16 @@
     ;
   operator []=(dynamic _a, dynamic _b) → void
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method testNSM() → dynamic
   ;
diff --git a/pkg/front_end/testcases/general/implicit_new.dart.strong.expect b/pkg/front_end/testcases/general/implicit_new.dart.strong.expect
index add1ae8..36b8d2b 100644
--- a/pkg/front_end/testcases/general/implicit_new.dart.strong.expect
+++ b/pkg/front_end/testcases/general/implicit_new.dart.strong.expect
@@ -21,6 +21,16 @@
     ;
   operator +(dynamic other) → dynamic
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Bar extends core::Object {
   constructor named() → self::Bar*
@@ -28,6 +38,16 @@
     ;
   operator +(dynamic other) → dynamic
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class IndexTester extends core::Object {
   synthetic constructor •() → self::IndexTester*
@@ -36,6 +56,16 @@
   operator [](dynamic _) → dynamic
     return null;
   operator []=(dynamic _a, dynamic _b) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method testNSM() → dynamic {
   dynamic y = invalid-expression "pkg/front_end/testcases/general/implicit_new.dart:18:18: Error: Method not found: 'Bar'.
diff --git a/pkg/front_end/testcases/general/implicit_new.dart.strong.transformed.expect b/pkg/front_end/testcases/general/implicit_new.dart.strong.transformed.expect
index add1ae8..36b8d2b 100644
--- a/pkg/front_end/testcases/general/implicit_new.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general/implicit_new.dart.strong.transformed.expect
@@ -21,6 +21,16 @@
     ;
   operator +(dynamic other) → dynamic
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Bar extends core::Object {
   constructor named() → self::Bar*
@@ -28,6 +38,16 @@
     ;
   operator +(dynamic other) → dynamic
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class IndexTester extends core::Object {
   synthetic constructor •() → self::IndexTester*
@@ -36,6 +56,16 @@
   operator [](dynamic _) → dynamic
     return null;
   operator []=(dynamic _a, dynamic _b) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method testNSM() → dynamic {
   dynamic y = invalid-expression "pkg/front_end/testcases/general/implicit_new.dart:18:18: Error: Method not found: 'Bar'.
diff --git a/pkg/front_end/testcases/general/implicit_scope_test.dart.outline.expect b/pkg/front_end/testcases/general/implicit_scope_test.dart.outline.expect
index 8a823ce..4b756eb 100644
--- a/pkg/front_end/testcases/general/implicit_scope_test.dart.outline.expect
+++ b/pkg/front_end/testcases/general/implicit_scope_test.dart.outline.expect
@@ -11,6 +11,16 @@
     ;
   static method testMain() → dynamic
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/general/implicit_scope_test.dart.strong.expect b/pkg/front_end/testcases/general/implicit_scope_test.dart.strong.expect
index 86e1607..a850ce5 100644
--- a/pkg/front_end/testcases/general/implicit_scope_test.dart.strong.expect
+++ b/pkg/front_end/testcases/general/implicit_scope_test.dart.strong.expect
@@ -43,6 +43,16 @@
     exp::Expect::equals("foo", a);
     exp::Expect::equals(null, b);
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   self::ImplicitScopeTest::testMain();
diff --git a/pkg/front_end/testcases/general/implicit_scope_test.dart.strong.transformed.expect b/pkg/front_end/testcases/general/implicit_scope_test.dart.strong.transformed.expect
index 86e1607..a850ce5 100644
--- a/pkg/front_end/testcases/general/implicit_scope_test.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general/implicit_scope_test.dart.strong.transformed.expect
@@ -43,6 +43,16 @@
     exp::Expect::equals("foo", a);
     exp::Expect::equals(null, b);
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   self::ImplicitScopeTest::testMain();
diff --git a/pkg/front_end/testcases/general/implicit_this.dart.outline.expect b/pkg/front_end/testcases/general/implicit_this.dart.outline.expect
index 76b8764..a2e0632 100644
--- a/pkg/front_end/testcases/general/implicit_this.dart.outline.expect
+++ b/pkg/front_end/testcases/general/implicit_this.dart.outline.expect
@@ -9,6 +9,16 @@
     ;
   method testC() → dynamic
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D extends self::C {
   synthetic constructor •() → self::D*
diff --git a/pkg/front_end/testcases/general/implicit_this.dart.strong.expect b/pkg/front_end/testcases/general/implicit_this.dart.strong.expect
index 25539c8..c7a22c5 100644
--- a/pkg/front_end/testcases/general/implicit_this.dart.strong.expect
+++ b/pkg/front_end/testcases/general/implicit_this.dart.strong.expect
@@ -12,6 +12,16 @@
   method testC() → dynamic {
     this.{self::C::m}();
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D extends self::C {
   synthetic constructor •() → self::D*
diff --git a/pkg/front_end/testcases/general/implicit_this.dart.strong.transformed.expect b/pkg/front_end/testcases/general/implicit_this.dart.strong.transformed.expect
index 25539c8..c7a22c5 100644
--- a/pkg/front_end/testcases/general/implicit_this.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general/implicit_this.dart.strong.transformed.expect
@@ -12,6 +12,16 @@
   method testC() → dynamic {
     this.{self::C::m}();
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D extends self::C {
   synthetic constructor •() → self::D*
diff --git a/pkg/front_end/testcases/general/import_conflicting_type_member.dart.outline.expect b/pkg/front_end/testcases/general/import_conflicting_type_member.dart.outline.expect
index db1d42f..b088274 100644
--- a/pkg/front_end/testcases/general/import_conflicting_type_member.dart.outline.expect
+++ b/pkg/front_end/testcases/general/import_conflicting_type_member.dart.outline.expect
@@ -16,6 +16,16 @@
 class Foo extends core::Object {
   synthetic constructor •() → self2::Foo*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 
 library;
diff --git a/pkg/front_end/testcases/general/import_conflicting_type_member.dart.strong.expect b/pkg/front_end/testcases/general/import_conflicting_type_member.dart.strong.expect
index 60eaf37..328e5f8 100644
--- a/pkg/front_end/testcases/general/import_conflicting_type_member.dart.strong.expect
+++ b/pkg/front_end/testcases/general/import_conflicting_type_member.dart.strong.expect
@@ -31,6 +31,16 @@
   synthetic constructor •() → self2::Foo*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 
 library;
diff --git a/pkg/front_end/testcases/general/import_conflicting_type_member.dart.strong.transformed.expect b/pkg/front_end/testcases/general/import_conflicting_type_member.dart.strong.transformed.expect
index 60eaf37..328e5f8 100644
--- a/pkg/front_end/testcases/general/import_conflicting_type_member.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general/import_conflicting_type_member.dart.strong.transformed.expect
@@ -31,6 +31,16 @@
   synthetic constructor •() → self2::Foo*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 
 library;
diff --git a/pkg/front_end/testcases/general/import_conflicting_types.dart.outline.expect b/pkg/front_end/testcases/general/import_conflicting_types.dart.outline.expect
index 5ddea75..2a8cbaf 100644
--- a/pkg/front_end/testcases/general/import_conflicting_types.dart.outline.expect
+++ b/pkg/front_end/testcases/general/import_conflicting_types.dart.outline.expect
@@ -16,6 +16,16 @@
 class Foo extends core::Object {
   synthetic constructor •() → self2::Foo*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 
 library;
@@ -25,4 +35,14 @@
 class Foo extends core::Object {
   synthetic constructor •() → self3::Foo*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
diff --git a/pkg/front_end/testcases/general/import_conflicting_types.dart.strong.expect b/pkg/front_end/testcases/general/import_conflicting_types.dart.strong.expect
index 57ae9e06..60bb77a 100644
--- a/pkg/front_end/testcases/general/import_conflicting_types.dart.strong.expect
+++ b/pkg/front_end/testcases/general/import_conflicting_types.dart.strong.expect
@@ -24,6 +24,16 @@
   synthetic constructor •() → self2::Foo*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 
 library;
@@ -34,4 +44,14 @@
   synthetic constructor •() → self3::Foo*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
diff --git a/pkg/front_end/testcases/general/import_conflicting_types.dart.strong.transformed.expect b/pkg/front_end/testcases/general/import_conflicting_types.dart.strong.transformed.expect
index 57ae9e06..60bb77a 100644
--- a/pkg/front_end/testcases/general/import_conflicting_types.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general/import_conflicting_types.dart.strong.transformed.expect
@@ -24,6 +24,16 @@
   synthetic constructor •() → self2::Foo*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 
 library;
@@ -34,4 +44,14 @@
   synthetic constructor •() → self3::Foo*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
diff --git a/pkg/front_end/testcases/general/incomplete_field_formal_parameter.dart.outline.expect b/pkg/front_end/testcases/general/incomplete_field_formal_parameter.dart.outline.expect
index 5494096..25d137c 100644
--- a/pkg/front_end/testcases/general/incomplete_field_formal_parameter.dart.outline.expect
+++ b/pkg/front_end/testcases/general/incomplete_field_formal_parameter.dart.outline.expect
@@ -38,4 +38,14 @@
     ;
   constructor d() → self::C*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
diff --git a/pkg/front_end/testcases/general/incomplete_field_formal_parameter.dart.strong.expect b/pkg/front_end/testcases/general/incomplete_field_formal_parameter.dart.strong.expect
index 6e84730..91ce648 100644
--- a/pkg/front_end/testcases/general/incomplete_field_formal_parameter.dart.strong.expect
+++ b/pkg/front_end/testcases/general/incomplete_field_formal_parameter.dart.strong.expect
@@ -42,4 +42,14 @@
   constructor d() → self::C*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
diff --git a/pkg/front_end/testcases/general/incomplete_field_formal_parameter.dart.strong.transformed.expect b/pkg/front_end/testcases/general/incomplete_field_formal_parameter.dart.strong.transformed.expect
index 6e84730..91ce648 100644
--- a/pkg/front_end/testcases/general/incomplete_field_formal_parameter.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general/incomplete_field_formal_parameter.dart.strong.transformed.expect
@@ -42,4 +42,14 @@
   constructor d() → self::C*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
diff --git a/pkg/front_end/testcases/general/infer_field_from_multiple.dart.outline.expect b/pkg/front_end/testcases/general/infer_field_from_multiple.dart.outline.expect
index 8738863..9632717 100644
--- a/pkg/front_end/testcases/general/infer_field_from_multiple.dart.outline.expect
+++ b/pkg/front_end/testcases/general/infer_field_from_multiple.dart.outline.expect
@@ -184,6 +184,16 @@
   field core::int* field18;
   synthetic constructor •() → self::A<self::A::T*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B<T extends core::Object* = dynamic, S extends core::Object* = dynamic> extends core::Object {
   field core::int* field1;
@@ -206,6 +216,16 @@
   field core::String* field18;
   synthetic constructor •() → self::B<self::B::T*, self::B::S*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C extends core::Object implements self::A<core::int*>, self::B<core::int*, core::String*> {
   field core::int* field1;
@@ -228,6 +248,16 @@
   field invalid-type field18;
   constructor •(core::int* field1, invalid-type field2, core::int* field3, invalid-type field4, core::int* field5, invalid-type field6, core::int* field7, invalid-type field8, dynamic field9, core::int* field10, invalid-type field11, core::int* field12, core::int* field13, core::int* field14, core::int* field15, core::int* field16, invalid-type field17, invalid-type field18) → self::C*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D<T extends core::Object* = dynamic> extends core::Object implements self::A<self::D::T*>, self::B<self::D::T*, self::D::T*> {
   field core::int* field1;
@@ -250,4 +280,14 @@
   field invalid-type field18;
   constructor •(core::int* field1, invalid-type field2, core::int* field3, invalid-type field4, core::int* field5, invalid-type field6, core::int* field7, invalid-type field8, dynamic field9, self::D::T* field10, self::D::T* field11, self::D::T* field12, self::D::T* field13, self::D::T* field14, core::int* field15, core::int* field16, invalid-type field17, invalid-type field18) → self::D<self::D::T*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
diff --git a/pkg/front_end/testcases/general/infer_field_from_multiple.dart.strong.expect b/pkg/front_end/testcases/general/infer_field_from_multiple.dart.strong.expect
index 9281410..93279ab 100644
--- a/pkg/front_end/testcases/general/infer_field_from_multiple.dart.strong.expect
+++ b/pkg/front_end/testcases/general/infer_field_from_multiple.dart.strong.expect
@@ -185,6 +185,16 @@
   synthetic constructor •() → self::A<self::A::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B<T extends core::Object* = dynamic, S extends core::Object* = dynamic> extends core::Object {
   field core::int* field1 = 1;
@@ -208,6 +218,16 @@
   synthetic constructor •() → self::B<self::B::T*, self::B::S*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C extends core::Object implements self::A<core::int*>, self::B<core::int*, core::String*> {
   field core::int* field1;
@@ -231,6 +251,16 @@
   constructor •(core::int* field1, invalid-type field2, core::int* field3, invalid-type field4, core::int* field5, invalid-type field6, core::int* field7, invalid-type field8, dynamic field9, core::int* field10, invalid-type field11, core::int* field12, core::int* field13, core::int* field14, core::int* field15, core::int* field16, invalid-type field17, invalid-type field18) → self::C*
     : self::C::field1 = field1, self::C::field2 = field2, self::C::field3 = field3, self::C::field4 = field4, self::C::field5 = field5, self::C::field6 = field6, self::C::field7 = field7, self::C::field8 = field8, self::C::field9 = field9, self::C::field10 = field10, self::C::field11 = field11, self::C::field12 = field12, self::C::field13 = field13, self::C::field14 = field14, self::C::field15 = field15, self::C::field16 = field16, self::C::field17 = field17, self::C::field18 = field18, super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D<T extends core::Object* = dynamic> extends core::Object implements self::A<self::D::T*>, self::B<self::D::T*, self::D::T*> {
   field core::int* field1;
@@ -254,4 +284,14 @@
   constructor •(core::int* field1, invalid-type field2, core::int* field3, invalid-type field4, core::int* field5, invalid-type field6, core::int* field7, invalid-type field8, dynamic field9, self::D::T* field10, self::D::T* field11, self::D::T* field12, self::D::T* field13, self::D::T* field14, core::int* field15, core::int* field16, invalid-type field17, invalid-type field18) → self::D<self::D::T*>*
     : self::D::field1 = field1, self::D::field2 = field2, self::D::field3 = field3, self::D::field4 = field4, self::D::field5 = field5, self::D::field6 = field6, self::D::field7 = field7, self::D::field8 = field8, self::D::field9 = field9, self::D::field10 = field10, self::D::field11 = field11, self::D::field12 = field12, self::D::field13 = field13, self::D::field14 = field14, self::D::field15 = field15, self::D::field16 = field16, self::D::field17 = field17, self::D::field18 = field18, super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
diff --git a/pkg/front_end/testcases/general/infer_field_type.dart.outline.expect b/pkg/front_end/testcases/general/infer_field_type.dart.outline.expect
index f824624..0489f20 100644
--- a/pkg/front_end/testcases/general/infer_field_type.dart.outline.expect
+++ b/pkg/front_end/testcases/general/infer_field_type.dart.outline.expect
@@ -19,6 +19,16 @@
   field core::int* field;
   synthetic constructor •() → self::A*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field core::int* topLevelFieldFromA;
 static field core::int* topLevelFieldFromB;
diff --git a/pkg/front_end/testcases/general/infer_field_type.dart.strong.expect b/pkg/front_end/testcases/general/infer_field_type.dart.strong.expect
index 39a2a5d..f5b47bc 100644
--- a/pkg/front_end/testcases/general/infer_field_type.dart.strong.expect
+++ b/pkg/front_end/testcases/general/infer_field_type.dart.strong.expect
@@ -21,6 +21,16 @@
   synthetic constructor •() → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field core::int* topLevelFieldFromA = new self::A::•().{self::A::field};
 static field core::int* topLevelFieldFromB = new self::B::•().{self::B::field};
diff --git a/pkg/front_end/testcases/general/infer_field_type.dart.strong.transformed.expect b/pkg/front_end/testcases/general/infer_field_type.dart.strong.transformed.expect
index 39a2a5d..f5b47bc 100644
--- a/pkg/front_end/testcases/general/infer_field_type.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general/infer_field_type.dart.strong.transformed.expect
@@ -21,6 +21,16 @@
   synthetic constructor •() → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field core::int* topLevelFieldFromA = new self::A::•().{self::A::field};
 static field core::int* topLevelFieldFromB = new self::B::•().{self::B::field};
diff --git a/pkg/front_end/testcases/general/infer_fixed_generic_return_type.dart.outline.expect b/pkg/front_end/testcases/general/infer_fixed_generic_return_type.dart.outline.expect
index 62e1775..76aa028 100644
--- a/pkg/front_end/testcases/general/infer_fixed_generic_return_type.dart.outline.expect
+++ b/pkg/front_end/testcases/general/infer_fixed_generic_return_type.dart.outline.expect
@@ -5,11 +5,31 @@
 abstract class Base extends core::Object {
   synthetic constructor •() → self::Base*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class MixinA<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::MixinA<self::MixinA::T*>*
     ;
   abstract method method(core::Object* t) → self::MixinA::T*;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class _Class&Base&MixinA = self::Base with self::MixinA<dynamic> /*isAnonymousMixin*/  {
   synthetic constructor •() → self::_Class&Base&MixinA*
@@ -25,20 +45,60 @@
 abstract class YamlNode extends core::Object {
   synthetic constructor •() → self::YamlNode*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class Map<K extends core::Object* = dynamic, V extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::Map<self::Map::K*, self::Map::V*>*
     ;
   abstract operator [](core::Object* key) → self::Map::V*;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class MapMixin<K extends core::Object* = dynamic, V extends core::Object* = dynamic> extends core::Object implements self::Map<self::MapMixin::K*, self::MapMixin::V*> {
   synthetic constructor •() → self::MapMixin<self::MapMixin::K*, self::MapMixin::V*>*
     ;
   abstract operator [](core::Object* key) → self::MapMixin::V*;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class UnmodifiableMapMixin<K extends core::Object* = dynamic, V extends core::Object* = dynamic> extends core::Object implements self::Map<self::UnmodifiableMapMixin::K*, self::UnmodifiableMapMixin::V*> {
   synthetic constructor •() → self::UnmodifiableMapMixin<self::UnmodifiableMapMixin::K*, self::UnmodifiableMapMixin::V*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class _YamlMap&YamlNode&MapMixin = self::YamlNode with self::MapMixin<dynamic, dynamic> /*isAnonymousMixin*/  {
   synthetic constructor •() → self::_YamlMap&YamlNode&MapMixin*
diff --git a/pkg/front_end/testcases/general/infer_fixed_generic_return_type.dart.strong.expect b/pkg/front_end/testcases/general/infer_fixed_generic_return_type.dart.strong.expect
index 8a3d100..85e2fa1 100644
--- a/pkg/front_end/testcases/general/infer_fixed_generic_return_type.dart.strong.expect
+++ b/pkg/front_end/testcases/general/infer_fixed_generic_return_type.dart.strong.expect
@@ -6,12 +6,32 @@
   synthetic constructor •() → self::Base*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class MixinA<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::MixinA<self::MixinA::T*>*
     : super core::Object::•()
     ;
   abstract method method(core::Object* t) → self::MixinA::T*;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class _Class&Base&MixinA = self::Base with self::MixinA<dynamic> /*isAnonymousMixin*/  {
   synthetic constructor •() → self::_Class&Base&MixinA*
@@ -28,23 +48,63 @@
   synthetic constructor •() → self::YamlNode*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class Map<K extends core::Object* = dynamic, V extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::Map<self::Map::K*, self::Map::V*>*
     : super core::Object::•()
     ;
   abstract operator [](core::Object* key) → self::Map::V*;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class MapMixin<K extends core::Object* = dynamic, V extends core::Object* = dynamic> extends core::Object implements self::Map<self::MapMixin::K*, self::MapMixin::V*> {
   synthetic constructor •() → self::MapMixin<self::MapMixin::K*, self::MapMixin::V*>*
     : super core::Object::•()
     ;
   abstract operator [](core::Object* key) → self::MapMixin::V*;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class UnmodifiableMapMixin<K extends core::Object* = dynamic, V extends core::Object* = dynamic> extends core::Object implements self::Map<self::UnmodifiableMapMixin::K*, self::UnmodifiableMapMixin::V*> {
   synthetic constructor •() → self::UnmodifiableMapMixin<self::UnmodifiableMapMixin::K*, self::UnmodifiableMapMixin::V*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class _YamlMap&YamlNode&MapMixin = self::YamlNode with self::MapMixin<dynamic, dynamic> /*isAnonymousMixin*/  {
   synthetic constructor •() → self::_YamlMap&YamlNode&MapMixin*
diff --git a/pkg/front_end/testcases/general/infer_fixed_generic_return_type.dart.strong.transformed.expect b/pkg/front_end/testcases/general/infer_fixed_generic_return_type.dart.strong.transformed.expect
index 6e58968..1780981ec 100644
--- a/pkg/front_end/testcases/general/infer_fixed_generic_return_type.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general/infer_fixed_generic_return_type.dart.strong.transformed.expect
@@ -6,18 +6,48 @@
   synthetic constructor •() → self::Base*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class MixinA<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::MixinA<self::MixinA::T*>*
     : super core::Object::•()
     ;
   abstract method method(core::Object* t) → self::MixinA::T*;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class _Class&Base&MixinA extends self::Base implements self::MixinA<dynamic> /*isAnonymousMixin,isEliminatedMixin*/  {
   synthetic constructor •() → self::_Class&Base&MixinA*
     : super self::Base::•()
     ;
   abstract method method(core::Object* t) → dynamic;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class Class extends self::_Class&Base&MixinA {
   synthetic constructor •() → self::Class*
@@ -29,34 +59,94 @@
   synthetic constructor •() → self::YamlNode*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class Map<K extends core::Object* = dynamic, V extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::Map<self::Map::K*, self::Map::V*>*
     : super core::Object::•()
     ;
   abstract operator [](core::Object* key) → self::Map::V*;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class MapMixin<K extends core::Object* = dynamic, V extends core::Object* = dynamic> extends core::Object implements self::Map<self::MapMixin::K*, self::MapMixin::V*> {
   synthetic constructor •() → self::MapMixin<self::MapMixin::K*, self::MapMixin::V*>*
     : super core::Object::•()
     ;
   abstract operator [](core::Object* key) → self::MapMixin::V*;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class UnmodifiableMapMixin<K extends core::Object* = dynamic, V extends core::Object* = dynamic> extends core::Object implements self::Map<self::UnmodifiableMapMixin::K*, self::UnmodifiableMapMixin::V*> {
   synthetic constructor •() → self::UnmodifiableMapMixin<self::UnmodifiableMapMixin::K*, self::UnmodifiableMapMixin::V*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class _YamlMap&YamlNode&MapMixin extends self::YamlNode implements self::MapMixin<dynamic, dynamic> /*isAnonymousMixin,isEliminatedMixin*/  {
   synthetic constructor •() → self::_YamlMap&YamlNode&MapMixin*
     : super self::YamlNode::•()
     ;
   abstract operator [](core::Object* key) → dynamic;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class _YamlMap&YamlNode&MapMixin&UnmodifiableMapMixin extends self::_YamlMap&YamlNode&MapMixin implements self::UnmodifiableMapMixin<dynamic, dynamic> /*isAnonymousMixin,isEliminatedMixin*/  {
   synthetic constructor •() → self::_YamlMap&YamlNode&MapMixin&UnmodifiableMapMixin*
     : super self::_YamlMap&YamlNode&MapMixin::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class YamlMap extends self::_YamlMap&YamlNode&MapMixin&UnmodifiableMapMixin {
   synthetic constructor •() → self::YamlMap*
diff --git a/pkg/front_end/testcases/general/infer_map_literal_with_closure.dart.outline.expect b/pkg/front_end/testcases/general/infer_map_literal_with_closure.dart.outline.expect
index c1ce2b9..f91dd13 100644
--- a/pkg/front_end/testcases/general/infer_map_literal_with_closure.dart.outline.expect
+++ b/pkg/front_end/testcases/general/infer_map_literal_with_closure.dart.outline.expect
@@ -6,6 +6,16 @@
   field core::Map<core::String*, (core::String*) →* core::Null?>* map;
   synthetic constructor •() → self::Class*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/general/infer_map_literal_with_closure.dart.strong.expect b/pkg/front_end/testcases/general/infer_map_literal_with_closure.dart.strong.expect
index 50d7daf..b1fada0 100644
--- a/pkg/front_end/testcases/general/infer_map_literal_with_closure.dart.strong.expect
+++ b/pkg/front_end/testcases/general/infer_map_literal_with_closure.dart.strong.expect
@@ -9,5 +9,15 @@
   synthetic constructor •() → self::Class*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general/infer_map_literal_with_closure.dart.strong.transformed.expect b/pkg/front_end/testcases/general/infer_map_literal_with_closure.dart.strong.transformed.expect
index 50d7daf..b1fada0 100644
--- a/pkg/front_end/testcases/general/infer_map_literal_with_closure.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general/infer_map_literal_with_closure.dart.strong.transformed.expect
@@ -9,5 +9,15 @@
   synthetic constructor •() → self::Class*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general/inherit_function.dart.outline.expect b/pkg/front_end/testcases/general/inherit_function.dart.outline.expect
index 76b247c..77e6b6b 100644
--- a/pkg/front_end/testcases/general/inherit_function.dart.outline.expect
+++ b/pkg/front_end/testcases/general/inherit_function.dart.outline.expect
@@ -5,14 +5,44 @@
 class A extends core::Object {
   synthetic constructor •() → self::A*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends core::Object {
   synthetic constructor •() → self::B*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class _C&Object&Function extends core::Object {
   synthetic constructor •() → self::_C&Object&Function*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C extends self::_C&Object&Function {
   synthetic constructor •() → self::C*
@@ -21,6 +51,16 @@
 class D extends core::Object {
   synthetic constructor •() → self::D*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/general/inherit_function.dart.strong.expect b/pkg/front_end/testcases/general/inherit_function.dart.strong.expect
index 3167f12..9de04be 100644
--- a/pkg/front_end/testcases/general/inherit_function.dart.strong.expect
+++ b/pkg/front_end/testcases/general/inherit_function.dart.strong.expect
@@ -6,16 +6,46 @@
   synthetic constructor •() → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends core::Object {
   synthetic constructor •() → self::B*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class _C&Object&Function extends core::Object {
   synthetic constructor •() → self::_C&Object&Function*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C extends self::_C&Object&Function {
   synthetic constructor •() → self::C*
@@ -26,5 +56,15 @@
   synthetic constructor •() → self::D*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general/inherit_function.dart.strong.transformed.expect b/pkg/front_end/testcases/general/inherit_function.dart.strong.transformed.expect
index 3167f12..9de04be 100644
--- a/pkg/front_end/testcases/general/inherit_function.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general/inherit_function.dart.strong.transformed.expect
@@ -6,16 +6,46 @@
   synthetic constructor •() → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends core::Object {
   synthetic constructor •() → self::B*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class _C&Object&Function extends core::Object {
   synthetic constructor •() → self::_C&Object&Function*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C extends self::_C&Object&Function {
   synthetic constructor •() → self::C*
@@ -26,5 +56,15 @@
   synthetic constructor •() → self::D*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general/interface_conflict.dart.outline.expect b/pkg/front_end/testcases/general/interface_conflict.dart.outline.expect
index 4c1f615..c79ef5d 100644
--- a/pkg/front_end/testcases/general/interface_conflict.dart.outline.expect
+++ b/pkg/front_end/testcases/general/interface_conflict.dart.outline.expect
@@ -21,20 +21,60 @@
     ;
   get n() → core::int*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends core::Object {
   synthetic constructor •() → self::B*
     ;
   get n() → core::double*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class C extends core::Object implements self::A, self::B {
   synthetic constructor •() → self::C*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class D extends core::Object implements self::C {
   synthetic constructor •() → self::D*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/general/interface_conflict.dart.strong.expect b/pkg/front_end/testcases/general/interface_conflict.dart.strong.expect
index 12165b4..68e0d80 100644
--- a/pkg/front_end/testcases/general/interface_conflict.dart.strong.expect
+++ b/pkg/front_end/testcases/general/interface_conflict.dart.strong.expect
@@ -22,6 +22,16 @@
     ;
   get n() → core::int*
     return 1;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends core::Object {
   synthetic constructor •() → self::B*
@@ -29,15 +39,45 @@
     ;
   get n() → core::double*
     return 2.0;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class C extends core::Object implements self::A, self::B {
   synthetic constructor •() → self::C*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class D extends core::Object implements self::C {
   synthetic constructor •() → self::D*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general/interface_conflict.dart.strong.transformed.expect b/pkg/front_end/testcases/general/interface_conflict.dart.strong.transformed.expect
index 12165b4..68e0d80 100644
--- a/pkg/front_end/testcases/general/interface_conflict.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general/interface_conflict.dart.strong.transformed.expect
@@ -22,6 +22,16 @@
     ;
   get n() → core::int*
     return 1;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends core::Object {
   synthetic constructor •() → self::B*
@@ -29,15 +39,45 @@
     ;
   get n() → core::double*
     return 2.0;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class C extends core::Object implements self::A, self::B {
   synthetic constructor •() → self::C*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class D extends core::Object implements self::C {
   synthetic constructor •() → self::D*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general/interface_contravariant_from_class.dart.outline.expect b/pkg/front_end/testcases/general/interface_contravariant_from_class.dart.outline.expect
index 2847dab..cbfd15a 100644
--- a/pkg/front_end/testcases/general/interface_contravariant_from_class.dart.outline.expect
+++ b/pkg/front_end/testcases/general/interface_contravariant_from_class.dart.outline.expect
@@ -19,15 +19,45 @@
     ;
   method f(core::int* x) → self::B::T*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class I<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::I<self::I::T*>*
     ;
   abstract method f(core::Object* x) → self::I::T*;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class C<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::C<self::C::T*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → void
   ;
diff --git a/pkg/front_end/testcases/general/interface_contravariant_from_class.dart.strong.expect b/pkg/front_end/testcases/general/interface_contravariant_from_class.dart.strong.expect
index a20af80..7a29b36 100644
--- a/pkg/front_end/testcases/general/interface_contravariant_from_class.dart.strong.expect
+++ b/pkg/front_end/testcases/general/interface_contravariant_from_class.dart.strong.expect
@@ -19,16 +19,46 @@
     : super core::Object::•()
     ;
   method f(core::int* x) → self::B::T* {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class I<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::I<self::I::T*>*
     : super core::Object::•()
     ;
   abstract method f(core::Object* x) → self::I::T*;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class C<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::C<self::C::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → void {}
diff --git a/pkg/front_end/testcases/general/interface_contravariant_from_class.dart.strong.transformed.expect b/pkg/front_end/testcases/general/interface_contravariant_from_class.dart.strong.transformed.expect
index a20af80..7a29b36 100644
--- a/pkg/front_end/testcases/general/interface_contravariant_from_class.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general/interface_contravariant_from_class.dart.strong.transformed.expect
@@ -19,16 +19,46 @@
     : super core::Object::•()
     ;
   method f(core::int* x) → self::B::T* {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class I<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::I<self::I::T*>*
     : super core::Object::•()
     ;
   abstract method f(core::Object* x) → self::I::T*;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class C<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::C<self::C::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → void {}
diff --git a/pkg/front_end/testcases/general/interface_covariantImpl_from_class.dart.outline.expect b/pkg/front_end/testcases/general/interface_covariantImpl_from_class.dart.outline.expect
index f95aad1..7046ee1 100644
--- a/pkg/front_end/testcases/general/interface_covariantImpl_from_class.dart.outline.expect
+++ b/pkg/front_end/testcases/general/interface_covariantImpl_from_class.dart.outline.expect
@@ -19,15 +19,45 @@
     ;
   method f((self::B::T*) →* void x, core::int* y) → void
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class I<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::I<self::I::T*>*
     ;
   abstract method f((self::I::T*) →* void x, core::Object* y) → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class C<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::C<self::C::T*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → void
   ;
diff --git a/pkg/front_end/testcases/general/interface_covariantImpl_from_class.dart.strong.expect b/pkg/front_end/testcases/general/interface_covariantImpl_from_class.dart.strong.expect
index 416ac77..768b3ec 100644
--- a/pkg/front_end/testcases/general/interface_covariantImpl_from_class.dart.strong.expect
+++ b/pkg/front_end/testcases/general/interface_covariantImpl_from_class.dart.strong.expect
@@ -19,16 +19,46 @@
     : super core::Object::•()
     ;
   method f((self::B::T*) →* void x, core::int* y) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class I<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::I<self::I::T*>*
     : super core::Object::•()
     ;
   abstract method f((self::I::T*) →* void x, core::Object* y) → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class C<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::C<self::C::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → void {}
diff --git a/pkg/front_end/testcases/general/interface_covariantImpl_from_class.dart.strong.transformed.expect b/pkg/front_end/testcases/general/interface_covariantImpl_from_class.dart.strong.transformed.expect
index 416ac77..768b3ec 100644
--- a/pkg/front_end/testcases/general/interface_covariantImpl_from_class.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general/interface_covariantImpl_from_class.dart.strong.transformed.expect
@@ -19,16 +19,46 @@
     : super core::Object::•()
     ;
   method f((self::B::T*) →* void x, core::int* y) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class I<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::I<self::I::T*>*
     : super core::Object::•()
     ;
   abstract method f((self::I::T*) →* void x, core::Object* y) → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class C<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::C<self::C::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → void {}
diff --git a/pkg/front_end/testcases/general/interface_covariantInterface_from_class.dart.outline.expect b/pkg/front_end/testcases/general/interface_covariantInterface_from_class.dart.outline.expect
index 6b0a4c2..1473326 100644
--- a/pkg/front_end/testcases/general/interface_covariantInterface_from_class.dart.outline.expect
+++ b/pkg/front_end/testcases/general/interface_covariantInterface_from_class.dart.outline.expect
@@ -26,21 +26,61 @@
   synthetic constructor •() → self::A<self::A::T*>*
     ;
   abstract method f(generic-covariant-impl self::A::T* x, core::int* y) → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::B<self::B::T*>*
     ;
   method f((self::B::T*) →* void x, core::int* y) → void
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class I<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::I<self::I::T*>*
     ;
   abstract method f((self::I::T*) →* void x, core::Object* y) → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class C<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::C<self::C::T*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → void
   ;
diff --git a/pkg/front_end/testcases/general/interface_covariantInterface_from_class.dart.strong.expect b/pkg/front_end/testcases/general/interface_covariantInterface_from_class.dart.strong.expect
index d247e10..4931007 100644
--- a/pkg/front_end/testcases/general/interface_covariantInterface_from_class.dart.strong.expect
+++ b/pkg/front_end/testcases/general/interface_covariantInterface_from_class.dart.strong.expect
@@ -27,22 +27,62 @@
     : super core::Object::•()
     ;
   abstract method f(generic-covariant-impl self::A::T* x, core::int* y) → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::B<self::B::T*>*
     : super core::Object::•()
     ;
   method f((self::B::T*) →* void x, core::int* y) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class I<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::I<self::I::T*>*
     : super core::Object::•()
     ;
   abstract method f((self::I::T*) →* void x, core::Object* y) → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class C<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::C<self::C::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → void {}
diff --git a/pkg/front_end/testcases/general/interface_covariantInterface_from_class.dart.strong.transformed.expect b/pkg/front_end/testcases/general/interface_covariantInterface_from_class.dart.strong.transformed.expect
index d247e10..4931007 100644
--- a/pkg/front_end/testcases/general/interface_covariantInterface_from_class.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general/interface_covariantInterface_from_class.dart.strong.transformed.expect
@@ -27,22 +27,62 @@
     : super core::Object::•()
     ;
   abstract method f(generic-covariant-impl self::A::T* x, core::int* y) → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::B<self::B::T*>*
     : super core::Object::•()
     ;
   method f((self::B::T*) →* void x, core::int* y) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class I<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::I<self::I::T*>*
     : super core::Object::•()
     ;
   abstract method f((self::I::T*) →* void x, core::Object* y) → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class C<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::C<self::C::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → void {}
diff --git a/pkg/front_end/testcases/general/invalid_assignment.dart.outline.expect b/pkg/front_end/testcases/general/invalid_assignment.dart.outline.expect
index d31a4b0..fda4f9c 100644
--- a/pkg/front_end/testcases/general/invalid_assignment.dart.outline.expect
+++ b/pkg/front_end/testcases/general/invalid_assignment.dart.outline.expect
@@ -7,6 +7,16 @@
     ;
   operator +(core::int* i) → core::String*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method test(core::int* i, core::String* s, self::A* a) → dynamic
   ;
diff --git a/pkg/front_end/testcases/general/invalid_assignment.dart.strong.expect b/pkg/front_end/testcases/general/invalid_assignment.dart.strong.expect
index b5ac381..f3caecf 100644
--- a/pkg/front_end/testcases/general/invalid_assignment.dart.strong.expect
+++ b/pkg/front_end/testcases/general/invalid_assignment.dart.strong.expect
@@ -24,6 +24,16 @@
     ;
   operator +(core::int* i) → core::String*
     return "";
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method test(core::int* i, core::String* s, self::A* a) → dynamic {
   i = 1;
diff --git a/pkg/front_end/testcases/general/invalid_assignment.dart.strong.transformed.expect b/pkg/front_end/testcases/general/invalid_assignment.dart.strong.transformed.expect
index b5ac381..f3caecf 100644
--- a/pkg/front_end/testcases/general/invalid_assignment.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general/invalid_assignment.dart.strong.transformed.expect
@@ -24,6 +24,16 @@
     ;
   operator +(core::int* i) → core::String*
     return "";
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method test(core::int* i, core::String* s, self::A* a) → dynamic {
   i = 1;
diff --git a/pkg/front_end/testcases/general/invalid_cast.dart.outline.expect b/pkg/front_end/testcases/general/invalid_cast.dart.outline.expect
index e56195b..a26b4b7 100644
--- a/pkg/front_end/testcases/general/invalid_cast.dart.outline.expect
+++ b/pkg/front_end/testcases/general/invalid_cast.dart.outline.expect
@@ -16,6 +16,16 @@
     let dynamic #redirecting_factory = self::D::• in invalid-expression;
   static method staticFunction(core::int* i) → void
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D extends self::C {
   synthetic constructor •() → self::D*
diff --git a/pkg/front_end/testcases/general/invalid_cast.dart.strong.expect b/pkg/front_end/testcases/general/invalid_cast.dart.strong.expect
index 6c10c2c..31860c3 100644
--- a/pkg/front_end/testcases/general/invalid_cast.dart.strong.expect
+++ b/pkg/front_end/testcases/general/invalid_cast.dart.strong.expect
@@ -80,6 +80,16 @@
   static factory fact2() → self::C*
     let dynamic #redirecting_factory = self::D::• in invalid-expression;
   static method staticFunction(core::int* i) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D extends self::C {
   synthetic constructor •() → self::D*
diff --git a/pkg/front_end/testcases/general/invalid_cast.dart.strong.transformed.expect b/pkg/front_end/testcases/general/invalid_cast.dart.strong.transformed.expect
index abeb432..56a7924 100644
--- a/pkg/front_end/testcases/general/invalid_cast.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general/invalid_cast.dart.strong.transformed.expect
@@ -80,6 +80,16 @@
   static factory fact2() → self::C*
     let<BottomType> #redirecting_factory = self::D::• in invalid-expression;
   static method staticFunction(core::int* i) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D extends self::C {
   synthetic constructor •() → self::D*
diff --git a/pkg/front_end/testcases/general/invalid_operator.dart.outline.expect b/pkg/front_end/testcases/general/invalid_operator.dart.outline.expect
index eeef39a..d4cd135 100644
--- a/pkg/front_end/testcases/general/invalid_operator.dart.outline.expect
+++ b/pkg/front_end/testcases/general/invalid_operator.dart.outline.expect
@@ -602,6 +602,15 @@
     ;
   operator ~(dynamic a) → dynamic
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Operators2 extends core::Object {
   synthetic constructor •() → self::Operators2*
@@ -644,6 +653,15 @@
     ;
   operator ~(dynamic a, dynamic b) → dynamic
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Operators3 extends core::Object {
   synthetic constructor •() → self::Operators3*
@@ -686,6 +704,15 @@
     ;
   operator ~([dynamic a]) → dynamic
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Operators4 extends core::Object {
   synthetic constructor •() → self::Operators4*
@@ -728,6 +755,15 @@
     ;
   operator ~({dynamic a}) → dynamic
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Operators5 extends core::Object {
   synthetic constructor •() → self::Operators5*
@@ -770,6 +806,15 @@
     ;
   operator ~(dynamic a, [dynamic b]) → dynamic
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Operators6 extends core::Object {
   synthetic constructor •() → self::Operators6*
@@ -812,6 +857,15 @@
     ;
   operator ~(dynamic a, {dynamic b}) → dynamic
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Operators7 extends core::Object {
   synthetic constructor •() → self::Operators7*
@@ -854,6 +908,15 @@
     ;
   operator ~<T extends core::Object* = dynamic>() → dynamic
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/general/invalid_operator.dart.strong.expect b/pkg/front_end/testcases/general/invalid_operator.dart.strong.expect
index 9580fe8..2dac239 100644
--- a/pkg/front_end/testcases/general/invalid_operator.dart.strong.expect
+++ b/pkg/front_end/testcases/general/invalid_operator.dart.strong.expect
@@ -603,6 +603,15 @@
     return true;
   operator ~(dynamic a) → dynamic
     return true;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Operators2 extends core::Object {
   synthetic constructor •() → self::Operators2*
@@ -646,6 +655,15 @@
     return true;
   operator ~(dynamic a, dynamic b) → dynamic
     return true;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Operators3 extends core::Object {
   synthetic constructor •() → self::Operators3*
@@ -689,6 +707,15 @@
     return true;
   operator ~([dynamic a = #C1]) → dynamic
     return true;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Operators4 extends core::Object {
   synthetic constructor •() → self::Operators4*
@@ -732,6 +759,15 @@
     return true;
   operator ~({dynamic a = #C1}) → dynamic
     return true;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Operators5 extends core::Object {
   synthetic constructor •() → self::Operators5*
@@ -775,6 +811,15 @@
     return true;
   operator ~(dynamic a, [dynamic b = #C1]) → dynamic
     return true;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Operators6 extends core::Object {
   synthetic constructor •() → self::Operators6*
@@ -818,6 +863,15 @@
     return true;
   operator ~(dynamic a, {dynamic b = #C1}) → dynamic
     return true;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Operators7 extends core::Object {
   synthetic constructor •() → self::Operators7*
@@ -861,6 +915,15 @@
     return true;
   operator ~<T extends core::Object* = dynamic>() → dynamic
     return true;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
 
diff --git a/pkg/front_end/testcases/general/invalid_operator2.dart.outline.expect b/pkg/front_end/testcases/general/invalid_operator2.dart.outline.expect
index 59cdc77..54cb415 100644
--- a/pkg/front_end/testcases/general/invalid_operator2.dart.outline.expect
+++ b/pkg/front_end/testcases/general/invalid_operator2.dart.outline.expect
@@ -34,6 +34,16 @@
     ;
   operator >(dynamic a) → invalid-type
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/general/invalid_operator2.dart.strong.expect b/pkg/front_end/testcases/general/invalid_operator2.dart.strong.expect
index 26fc9ec..20a7a0c 100644
--- a/pkg/front_end/testcases/general/invalid_operator2.dart.strong.expect
+++ b/pkg/front_end/testcases/general/invalid_operator2.dart.strong.expect
@@ -34,5 +34,15 @@
   operator <<() → dynamic {}
   operator >(dynamic a) → invalid-type
     return true;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general/invalid_operator2.dart.strong.transformed.expect b/pkg/front_end/testcases/general/invalid_operator2.dart.strong.transformed.expect
index 26fc9ec..20a7a0c 100644
--- a/pkg/front_end/testcases/general/invalid_operator2.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general/invalid_operator2.dart.strong.transformed.expect
@@ -34,5 +34,15 @@
   operator <<() → dynamic {}
   operator >(dynamic a) → invalid-type
     return true;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general/invalid_type.dart.outline.expect b/pkg/front_end/testcases/general/invalid_type.dart.outline.expect
index 4ea9e6f..d94e4b3 100644
--- a/pkg/front_end/testcases/general/invalid_type.dart.outline.expect
+++ b/pkg/front_end/testcases/general/invalid_type.dart.outline.expect
@@ -7,6 +7,16 @@
     ;
   static method foo() → dynamic
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method test() → dynamic
   ;
diff --git a/pkg/front_end/testcases/general/invalid_type.dart.strong.expect b/pkg/front_end/testcases/general/invalid_type.dart.strong.expect
index b405807..f8f5cd7 100644
--- a/pkg/front_end/testcases/general/invalid_type.dart.strong.expect
+++ b/pkg/front_end/testcases/general/invalid_type.dart.strong.expect
@@ -27,6 +27,16 @@
     this.bar();
     ^^^^".bar();
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method test() → dynamic {
   (null as invalid-type).bar();
diff --git a/pkg/front_end/testcases/general/invalid_type.dart.strong.transformed.expect b/pkg/front_end/testcases/general/invalid_type.dart.strong.transformed.expect
index b405807..f8f5cd7 100644
--- a/pkg/front_end/testcases/general/invalid_type.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general/invalid_type.dart.strong.transformed.expect
@@ -27,6 +27,16 @@
     this.bar();
     ^^^^".bar();
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method test() → dynamic {
   (null as invalid-type).bar();
diff --git a/pkg/front_end/testcases/general/invocations.dart.strong.expect b/pkg/front_end/testcases/general/invocations.dart.strong.expect
index 2e5cbcb..4be4068 100644
--- a/pkg/front_end/testcases/general/invocations.dart.strong.expect
+++ b/pkg/front_end/testcases/general/invocations.dart.strong.expect
@@ -59,11 +59,11 @@
       print(\"Hello, World!\") +
       ^" in core::print("Hello, World!")).{core::num::+}(invalid-expression "pkg/front_end/testcases/general/invocations.dart:14:7: Error: Method not found: 'z'.
       z(\"Hello, World!\") +
-      ^" as{TypeError,ForDynamic} core::num*).{core::num::+}(invalid-expression "pkg/front_end/testcases/general/invocations.dart:15:7: Error: Getter not found: 'z'.
+      ^" as{TypeError,ForDynamic} core::num).{core::num::+}(invalid-expression "pkg/front_end/testcases/general/invocations.dart:15:7: Error: Getter not found: 'z'.
       z.print(\"Hello, World!\") +
-      ^".print("Hello, World!") as{TypeError,ForDynamic} core::num*).{core::num::+}(invalid-expression "pkg/front_end/testcases/general/invocations.dart:16:7: Error: Getter not found: 'y'.
+      ^".print("Hello, World!") as{TypeError,ForDynamic} core::num).{core::num::+}(invalid-expression "pkg/front_end/testcases/general/invocations.dart:16:7: Error: Getter not found: 'y'.
       y.z.print(\"Hello, World!\") +
-      ^".z.print("Hello, World!") as{TypeError,ForDynamic} core::num*).{core::num::+}(invalid-expression "pkg/front_end/testcases/general/invocations.dart:17:7: Error: Getter not found: 'x'.
+      ^".z.print("Hello, World!") as{TypeError,ForDynamic} core::num).{core::num::+}(invalid-expression "pkg/front_end/testcases/general/invocations.dart:17:7: Error: Getter not found: 'x'.
       x.y.z.print(\"Hello, World!\");
-      ^".y.z.print("Hello, World!") as{TypeError,ForDynamic} core::num*);
+      ^".y.z.print("Hello, World!") as{TypeError,ForDynamic} core::num);
 }
diff --git a/pkg/front_end/testcases/general/invocations.dart.strong.transformed.expect b/pkg/front_end/testcases/general/invocations.dart.strong.transformed.expect
index 2e5cbcb..4be4068 100644
--- a/pkg/front_end/testcases/general/invocations.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general/invocations.dart.strong.transformed.expect
@@ -59,11 +59,11 @@
       print(\"Hello, World!\") +
       ^" in core::print("Hello, World!")).{core::num::+}(invalid-expression "pkg/front_end/testcases/general/invocations.dart:14:7: Error: Method not found: 'z'.
       z(\"Hello, World!\") +
-      ^" as{TypeError,ForDynamic} core::num*).{core::num::+}(invalid-expression "pkg/front_end/testcases/general/invocations.dart:15:7: Error: Getter not found: 'z'.
+      ^" as{TypeError,ForDynamic} core::num).{core::num::+}(invalid-expression "pkg/front_end/testcases/general/invocations.dart:15:7: Error: Getter not found: 'z'.
       z.print(\"Hello, World!\") +
-      ^".print("Hello, World!") as{TypeError,ForDynamic} core::num*).{core::num::+}(invalid-expression "pkg/front_end/testcases/general/invocations.dart:16:7: Error: Getter not found: 'y'.
+      ^".print("Hello, World!") as{TypeError,ForDynamic} core::num).{core::num::+}(invalid-expression "pkg/front_end/testcases/general/invocations.dart:16:7: Error: Getter not found: 'y'.
       y.z.print(\"Hello, World!\") +
-      ^".z.print("Hello, World!") as{TypeError,ForDynamic} core::num*).{core::num::+}(invalid-expression "pkg/front_end/testcases/general/invocations.dart:17:7: Error: Getter not found: 'x'.
+      ^".z.print("Hello, World!") as{TypeError,ForDynamic} core::num).{core::num::+}(invalid-expression "pkg/front_end/testcases/general/invocations.dart:17:7: Error: Getter not found: 'x'.
       x.y.z.print(\"Hello, World!\");
-      ^".y.z.print("Hello, World!") as{TypeError,ForDynamic} core::num*);
+      ^".y.z.print("Hello, World!") as{TypeError,ForDynamic} core::num);
 }
diff --git a/pkg/front_end/testcases/general/issue129167943.dart.outline.expect b/pkg/front_end/testcases/general/issue129167943.dart.outline.expect
index f8aec80..2e7bfcc 100644
--- a/pkg/front_end/testcases/general/issue129167943.dart.outline.expect
+++ b/pkg/front_end/testcases/general/issue129167943.dart.outline.expect
@@ -5,78 +5,228 @@
 abstract class A extends core::Object {
   synthetic constructor •() → self::A*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class B extends core::Object {
   synthetic constructor •() → self::B*
     ;
   abstract method foo(core::num* x) → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class C extends core::Object implements self::B {
   synthetic constructor •() → self::C*
     ;
   abstract method foo(covariant core::int* x) → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class D1 extends core::Object implements self::A, self::C, self::B {
   synthetic constructor •() → self::D1*
     ;
   abstract method foo(covariant core::int* x) → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D2 extends core::Object implements self::A, self::C, self::B {
   synthetic constructor •() → self::D2*
     ;
   method foo(covariant core::int* x) → void
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class D3 extends core::Object implements self::A, self::C, self::B {
   synthetic constructor •() → self::D3*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
   abstract forwarding-stub method foo(covariant core::num* x) → void;
 }
 abstract class D4 extends core::Object implements self::A, self::C, self::B {
   synthetic constructor •() → self::D4*
     ;
   abstract method foo(covariant core::int* x) → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class D5 extends core::Object implements self::A, self::C, self::B {
   synthetic constructor •() → self::D5*
     ;
   abstract method foo(covariant core::num* x) → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class E extends core::Object {
   synthetic constructor •() → self::E*
     ;
   abstract set foo(core::num* x) → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class G extends core::Object implements self::E {
   synthetic constructor •() → self::G*
     ;
   abstract set foo(covariant core::int* x) → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class H1 extends core::Object implements self::A, self::E, self::G {
   synthetic constructor •() → self::H1*
     ;
   abstract set foo(covariant core::int* x) → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class H2 extends core::Object implements self::A, self::E, self::G {
   synthetic constructor •() → self::H2*
     ;
   set foo(covariant core::int* x) → void
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class H3 extends core::Object implements self::A, self::E, self::G {
   synthetic constructor •() → self::H3*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
   abstract forwarding-stub set foo(covariant core::num* x) → void;
 }
 abstract class H4 extends core::Object implements self::A, self::E, self::G {
   synthetic constructor •() → self::H4*
     ;
   abstract set foo(covariant core::int* x) → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class H5 extends core::Object implements self::A, self::E, self::G {
   synthetic constructor •() → self::H5*
     ;
   abstract set foo(covariant core::num* x) → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/general/issue129167943.dart.strong.expect b/pkg/front_end/testcases/general/issue129167943.dart.strong.expect
index e6ff2a3..40d8856 100644
--- a/pkg/front_end/testcases/general/issue129167943.dart.strong.expect
+++ b/pkg/front_end/testcases/general/issue129167943.dart.strong.expect
@@ -6,35 +6,95 @@
   synthetic constructor •() → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class B extends core::Object {
   synthetic constructor •() → self::B*
     : super core::Object::•()
     ;
   abstract method foo(core::num* x) → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class C extends core::Object implements self::B {
   synthetic constructor •() → self::C*
     : super core::Object::•()
     ;
   abstract method foo(covariant core::int* x) → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class D1 extends core::Object implements self::A, self::C, self::B {
   synthetic constructor •() → self::D1*
     : super core::Object::•()
     ;
   abstract method foo(covariant core::int* x) → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D2 extends core::Object implements self::A, self::C, self::B {
   synthetic constructor •() → self::D2*
     : super core::Object::•()
     ;
   method foo(covariant core::int* x) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class D3 extends core::Object implements self::A, self::C, self::B {
   synthetic constructor •() → self::D3*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
   abstract forwarding-stub method foo(covariant core::num* x) → void;
 }
 abstract class D4 extends core::Object implements self::A, self::C, self::B {
@@ -42,41 +102,111 @@
     : super core::Object::•()
     ;
   abstract method foo(covariant core::int* x) → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class D5 extends core::Object implements self::A, self::C, self::B {
   synthetic constructor •() → self::D5*
     : super core::Object::•()
     ;
   abstract method foo(covariant core::num* x) → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class E extends core::Object {
   synthetic constructor •() → self::E*
     : super core::Object::•()
     ;
   abstract set foo(core::num* x) → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class G extends core::Object implements self::E {
   synthetic constructor •() → self::G*
     : super core::Object::•()
     ;
   abstract set foo(covariant core::int* x) → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class H1 extends core::Object implements self::A, self::E, self::G {
   synthetic constructor •() → self::H1*
     : super core::Object::•()
     ;
   abstract set foo(covariant core::int* x) → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class H2 extends core::Object implements self::A, self::E, self::G {
   synthetic constructor •() → self::H2*
     : super core::Object::•()
     ;
   set foo(covariant core::int* x) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class H3 extends core::Object implements self::A, self::E, self::G {
   synthetic constructor •() → self::H3*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
   abstract forwarding-stub set foo(covariant core::num* x) → void;
 }
 abstract class H4 extends core::Object implements self::A, self::E, self::G {
@@ -84,11 +214,31 @@
     : super core::Object::•()
     ;
   abstract set foo(covariant core::int* x) → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class H5 extends core::Object implements self::A, self::E, self::G {
   synthetic constructor •() → self::H5*
     : super core::Object::•()
     ;
   abstract set foo(covariant core::num* x) → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general/issue129167943.dart.strong.transformed.expect b/pkg/front_end/testcases/general/issue129167943.dart.strong.transformed.expect
index e6ff2a3..40d8856 100644
--- a/pkg/front_end/testcases/general/issue129167943.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general/issue129167943.dart.strong.transformed.expect
@@ -6,35 +6,95 @@
   synthetic constructor •() → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class B extends core::Object {
   synthetic constructor •() → self::B*
     : super core::Object::•()
     ;
   abstract method foo(core::num* x) → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class C extends core::Object implements self::B {
   synthetic constructor •() → self::C*
     : super core::Object::•()
     ;
   abstract method foo(covariant core::int* x) → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class D1 extends core::Object implements self::A, self::C, self::B {
   synthetic constructor •() → self::D1*
     : super core::Object::•()
     ;
   abstract method foo(covariant core::int* x) → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D2 extends core::Object implements self::A, self::C, self::B {
   synthetic constructor •() → self::D2*
     : super core::Object::•()
     ;
   method foo(covariant core::int* x) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class D3 extends core::Object implements self::A, self::C, self::B {
   synthetic constructor •() → self::D3*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
   abstract forwarding-stub method foo(covariant core::num* x) → void;
 }
 abstract class D4 extends core::Object implements self::A, self::C, self::B {
@@ -42,41 +102,111 @@
     : super core::Object::•()
     ;
   abstract method foo(covariant core::int* x) → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class D5 extends core::Object implements self::A, self::C, self::B {
   synthetic constructor •() → self::D5*
     : super core::Object::•()
     ;
   abstract method foo(covariant core::num* x) → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class E extends core::Object {
   synthetic constructor •() → self::E*
     : super core::Object::•()
     ;
   abstract set foo(core::num* x) → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class G extends core::Object implements self::E {
   synthetic constructor •() → self::G*
     : super core::Object::•()
     ;
   abstract set foo(covariant core::int* x) → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class H1 extends core::Object implements self::A, self::E, self::G {
   synthetic constructor •() → self::H1*
     : super core::Object::•()
     ;
   abstract set foo(covariant core::int* x) → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class H2 extends core::Object implements self::A, self::E, self::G {
   synthetic constructor •() → self::H2*
     : super core::Object::•()
     ;
   set foo(covariant core::int* x) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class H3 extends core::Object implements self::A, self::E, self::G {
   synthetic constructor •() → self::H3*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
   abstract forwarding-stub set foo(covariant core::num* x) → void;
 }
 abstract class H4 extends core::Object implements self::A, self::E, self::G {
@@ -84,11 +214,31 @@
     : super core::Object::•()
     ;
   abstract set foo(covariant core::int* x) → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class H5 extends core::Object implements self::A, self::E, self::G {
   synthetic constructor •() → self::H5*
     : super core::Object::•()
     ;
   abstract set foo(covariant core::num* x) → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general/issue34515.dart.outline.expect b/pkg/front_end/testcases/general/issue34515.dart.outline.expect
index be30f41..80f2491 100644
--- a/pkg/front_end/testcases/general/issue34515.dart.outline.expect
+++ b/pkg/front_end/testcases/general/issue34515.dart.outline.expect
@@ -16,6 +16,16 @@
 class ImportedClass extends core::Object {
   constructor •(core::int* a) → self2::ImportedClass*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 
 library;
@@ -25,4 +35,14 @@
 class ImportedClass extends core::Object {
   constructor •(core::String* a) → self3::ImportedClass*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
diff --git a/pkg/front_end/testcases/general/issue34515.dart.strong.expect b/pkg/front_end/testcases/general/issue34515.dart.strong.expect
index 712a170..9b23b69 100644
--- a/pkg/front_end/testcases/general/issue34515.dart.strong.expect
+++ b/pkg/front_end/testcases/general/issue34515.dart.strong.expect
@@ -34,6 +34,16 @@
   constructor •(core::int* a) → self2::ImportedClass*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 
 library;
@@ -44,4 +54,14 @@
   constructor •(core::String* a) → self3::ImportedClass*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
diff --git a/pkg/front_end/testcases/general/issue34515.dart.strong.transformed.expect b/pkg/front_end/testcases/general/issue34515.dart.strong.transformed.expect
index 712a170..9b23b69 100644
--- a/pkg/front_end/testcases/general/issue34515.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general/issue34515.dart.strong.transformed.expect
@@ -34,6 +34,16 @@
   constructor •(core::int* a) → self2::ImportedClass*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 
 library;
@@ -44,4 +54,14 @@
   constructor •(core::String* a) → self3::ImportedClass*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
diff --git a/pkg/front_end/testcases/general/issue34899.dart.outline.expect b/pkg/front_end/testcases/general/issue34899.dart.outline.expect
index be475a6..b7a3e15 100644
--- a/pkg/front_end/testcases/general/issue34899.dart.outline.expect
+++ b/pkg/front_end/testcases/general/issue34899.dart.outline.expect
@@ -10,6 +10,16 @@
     ;
   method call() → asy::Future<self::Foo::T*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Bar extends core::Object {
   field self::Foo<self::Baz*>* qux;
@@ -21,14 +31,44 @@
     ;
   method garply(self::Grault* grault) → void
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Baz extends core::Object {
   synthetic constructor •() → self::Baz*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Grault extends core::Object {
   synthetic constructor •() → self::Grault*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/general/issue34899.dart.strong.expect b/pkg/front_end/testcases/general/issue34899.dart.strong.expect
index 7cc9e09..a2f1518 100644
--- a/pkg/front_end/testcases/general/issue34899.dart.strong.expect
+++ b/pkg/front_end/testcases/general/issue34899.dart.strong.expect
@@ -11,6 +11,16 @@
     ;
   method call() → asy::Future<self::Foo::T*>*
     return this.{self::Foo::quux}.call().{asy::Future::then}<self::Foo::T*>((dynamic _) → self::Foo::T* => this.{self::Foo::t});
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Bar extends core::Object {
   field self::Foo<self::Baz*>* qux = null;
@@ -22,15 +32,45 @@
   method corge(self::Baz* baz) → self::Grault*
     return null;
   method garply(self::Grault* grault) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Baz extends core::Object {
   synthetic constructor •() → self::Baz*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Grault extends core::Object {
   synthetic constructor •() → self::Grault*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general/issue34899.dart.strong.transformed.expect b/pkg/front_end/testcases/general/issue34899.dart.strong.transformed.expect
index 7cc9e09..a2f1518 100644
--- a/pkg/front_end/testcases/general/issue34899.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general/issue34899.dart.strong.transformed.expect
@@ -11,6 +11,16 @@
     ;
   method call() → asy::Future<self::Foo::T*>*
     return this.{self::Foo::quux}.call().{asy::Future::then}<self::Foo::T*>((dynamic _) → self::Foo::T* => this.{self::Foo::t});
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Bar extends core::Object {
   field self::Foo<self::Baz*>* qux = null;
@@ -22,15 +32,45 @@
   method corge(self::Baz* baz) → self::Grault*
     return null;
   method garply(self::Grault* grault) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Baz extends core::Object {
   synthetic constructor •() → self::Baz*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Grault extends core::Object {
   synthetic constructor •() → self::Grault*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general/issue35875.dart.outline.expect b/pkg/front_end/testcases/general/issue35875.dart.outline.expect
index 224a7b4..ec8d853 100644
--- a/pkg/front_end/testcases/general/issue35875.dart.outline.expect
+++ b/pkg/front_end/testcases/general/issue35875.dart.outline.expect
@@ -6,6 +6,16 @@
   field core::int* a;
   constructor •(core::int* a) → self::A*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/general/issue35875.dart.strong.expect b/pkg/front_end/testcases/general/issue35875.dart.strong.expect
index 5d3fe2e..334e022 100644
--- a/pkg/front_end/testcases/general/issue35875.dart.strong.expect
+++ b/pkg/front_end/testcases/general/issue35875.dart.strong.expect
@@ -8,5 +8,15 @@
     : super core::Object::•() {
     this.{self::A::a} = a;
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general/issue35875.dart.strong.transformed.expect b/pkg/front_end/testcases/general/issue35875.dart.strong.transformed.expect
index 5d3fe2e..334e022 100644
--- a/pkg/front_end/testcases/general/issue35875.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general/issue35875.dart.strong.transformed.expect
@@ -8,5 +8,15 @@
     : super core::Object::•() {
     this.{self::A::a} = a;
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general/issue37027.dart.outline.expect b/pkg/front_end/testcases/general/issue37027.dart.outline.expect
index 27ec492..1885c8b 100644
--- a/pkg/front_end/testcases/general/issue37027.dart.outline.expect
+++ b/pkg/front_end/testcases/general/issue37027.dart.outline.expect
@@ -6,6 +6,16 @@
   final field core::Set<core::int*>* s;
   constructor •(core::List<core::int*>* ell) → self::C*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/general/issue37027.dart.strong.expect b/pkg/front_end/testcases/general/issue37027.dart.strong.expect
index 4789444..75ead33 100644
--- a/pkg/front_end/testcases/general/issue37027.dart.strong.expect
+++ b/pkg/front_end/testcases/general/issue37027.dart.strong.expect
@@ -13,5 +13,15 @@
           #t1.{core::Set::add}(2.{core::num::*}(e));
     } =>#t1, super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general/issue37027.dart.strong.transformed.expect b/pkg/front_end/testcases/general/issue37027.dart.strong.transformed.expect
index 342575d..9c0061a 100644
--- a/pkg/front_end/testcases/general/issue37027.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general/issue37027.dart.strong.transformed.expect
@@ -18,5 +18,15 @@
       }
     } =>#t1, super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general/issue37381.dart.outline.expect b/pkg/front_end/testcases/general/issue37381.dart.outline.expect
index e0704ac..9b4f25f 100644
--- a/pkg/front_end/testcases/general/issue37381.dart.outline.expect
+++ b/pkg/front_end/testcases/general/issue37381.dart.outline.expect
@@ -7,6 +7,16 @@
     ;
   method f<R extends core::Object* = dynamic>(<X extends core::Object* = dynamic>(self::A<X*>*) →* self::A::f::R* f) → self::A::f::R*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/general/issue37381.dart.strong.expect b/pkg/front_end/testcases/general/issue37381.dart.strong.expect
index b5d19ed..a3150b8 100644
--- a/pkg/front_end/testcases/general/issue37381.dart.strong.expect
+++ b/pkg/front_end/testcases/general/issue37381.dart.strong.expect
@@ -8,6 +8,16 @@
     ;
   method f<R extends core::Object* = dynamic>(<X extends core::Object* = dynamic>(self::A<X*>*) →* self::A::f::R* f) → self::A::f::R*
     return f.call<self::A::X*>(this);
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   self::A<core::num*>* a = new self::A::•<core::int*>();
diff --git a/pkg/front_end/testcases/general/issue37381.dart.strong.transformed.expect b/pkg/front_end/testcases/general/issue37381.dart.strong.transformed.expect
index b5d19ed..a3150b8 100644
--- a/pkg/front_end/testcases/general/issue37381.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general/issue37381.dart.strong.transformed.expect
@@ -8,6 +8,16 @@
     ;
   method f<R extends core::Object* = dynamic>(<X extends core::Object* = dynamic>(self::A<X*>*) →* self::A::f::R* f) → self::A::f::R*
     return f.call<self::A::X*>(this);
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   self::A<core::num*>* a = new self::A::•<core::int*>();
diff --git a/pkg/front_end/testcases/general/issue37776.dart.outline.expect b/pkg/front_end/testcases/general/issue37776.dart.outline.expect
index a055aeb..a19aa38 100644
--- a/pkg/front_end/testcases/general/issue37776.dart.outline.expect
+++ b/pkg/front_end/testcases/general/issue37776.dart.outline.expect
@@ -16,11 +16,31 @@
   const constructor foo() → self::X#1*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class X extends core::Object /*hasConstConstructor*/  {
   const constructor foo() → self::X*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → void
   ;
diff --git a/pkg/front_end/testcases/general/issue37776.dart.strong.expect b/pkg/front_end/testcases/general/issue37776.dart.strong.expect
index f0888c6..5ae67d7 100644
--- a/pkg/front_end/testcases/general/issue37776.dart.strong.expect
+++ b/pkg/front_end/testcases/general/issue37776.dart.strong.expect
@@ -20,11 +20,31 @@
   const constructor foo() → self::X#1*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class X extends core::Object /*hasConstConstructor*/  {
   const constructor foo() → self::X*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → void {
   invalid-expression "pkg/front_end/testcases/general/issue37776.dart:16:9: Error: Method not found: 'X.foo'.
diff --git a/pkg/front_end/testcases/general/issue37776.dart.strong.transformed.expect b/pkg/front_end/testcases/general/issue37776.dart.strong.transformed.expect
index f0888c6..5ae67d7 100644
--- a/pkg/front_end/testcases/general/issue37776.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general/issue37776.dart.strong.transformed.expect
@@ -20,11 +20,31 @@
   const constructor foo() → self::X#1*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class X extends core::Object /*hasConstConstructor*/  {
   const constructor foo() → self::X*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → void {
   invalid-expression "pkg/front_end/testcases/general/issue37776.dart:16:9: Error: Method not found: 'X.foo'.
diff --git a/pkg/front_end/testcases/general/issue38812.dart.outline.expect b/pkg/front_end/testcases/general/issue38812.dart.outline.expect
index e3d6405..6e90626 100644
--- a/pkg/front_end/testcases/general/issue38812.dart.outline.expect
+++ b/pkg/front_end/testcases/general/issue38812.dart.outline.expect
@@ -6,6 +6,16 @@
 class A<X extends () →* void = () →* void, Y extends () →* void = () →* void> extends core::Object {
   synthetic constructor •() → self::A<self::A::X*, self::A::Y*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/general/issue38812.dart.strong.expect b/pkg/front_end/testcases/general/issue38812.dart.strong.expect
index 638ba06..5d189a1 100644
--- a/pkg/front_end/testcases/general/issue38812.dart.strong.expect
+++ b/pkg/front_end/testcases/general/issue38812.dart.strong.expect
@@ -7,6 +7,16 @@
   synthetic constructor •() → self::A<self::A::X*, self::A::Y*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   new self::A::•<() →* void, () →* void>();
diff --git a/pkg/front_end/testcases/general/issue38812.dart.strong.transformed.expect b/pkg/front_end/testcases/general/issue38812.dart.strong.transformed.expect
index 638ba06..5d189a1 100644
--- a/pkg/front_end/testcases/general/issue38812.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general/issue38812.dart.strong.transformed.expect
@@ -7,6 +7,16 @@
   synthetic constructor •() → self::A<self::A::X*, self::A::Y*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   new self::A::•<() →* void, () →* void>();
diff --git a/pkg/front_end/testcases/general/issue38938.dart.outline.expect b/pkg/front_end/testcases/general/issue38938.dart.outline.expect
index e00e6f6..a3153dd 100644
--- a/pkg/front_end/testcases/general/issue38938.dart.outline.expect
+++ b/pkg/front_end/testcases/general/issue38938.dart.outline.expect
@@ -18,4 +18,14 @@
     ;
   constructor second() → self::A*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
diff --git a/pkg/front_end/testcases/general/issue38938.dart.strong.expect b/pkg/front_end/testcases/general/issue38938.dart.strong.expect
index 908eef1..1bcb739 100644
--- a/pkg/front_end/testcases/general/issue38938.dart.strong.expect
+++ b/pkg/front_end/testcases/general/issue38938.dart.strong.expect
@@ -26,4 +26,14 @@
   constructor second() → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
diff --git a/pkg/front_end/testcases/general/issue38938.dart.strong.transformed.expect b/pkg/front_end/testcases/general/issue38938.dart.strong.transformed.expect
index 908eef1..1bcb739 100644
--- a/pkg/front_end/testcases/general/issue38938.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general/issue38938.dart.strong.transformed.expect
@@ -26,4 +26,14 @@
   constructor second() → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
diff --git a/pkg/front_end/testcases/general/issue38943.dart.outline.expect b/pkg/front_end/testcases/general/issue38943.dart.outline.expect
index c625b56..992b0b5 100644
--- a/pkg/front_end/testcases/general/issue38943.dart.outline.expect
+++ b/pkg/front_end/testcases/general/issue38943.dart.outline.expect
@@ -7,6 +7,16 @@
     ;
   static factory foo<X extends () →* void = dynamic>() → self::D<self::D::foo::X*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/general/issue38943.dart.strong.expect b/pkg/front_end/testcases/general/issue38943.dart.strong.expect
index 94d489d..db4b5e2 100644
--- a/pkg/front_end/testcases/general/issue38943.dart.strong.expect
+++ b/pkg/front_end/testcases/general/issue38943.dart.strong.expect
@@ -7,6 +7,16 @@
     : super core::Object::•() {}
   static factory foo<X extends () →* void = dynamic>() → self::D<self::D::foo::X*>*
     return new self::D::_<self::D::foo::X*>();
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   core::print(self::D::foo<() →* void>());
diff --git a/pkg/front_end/testcases/general/issue38943.dart.strong.transformed.expect b/pkg/front_end/testcases/general/issue38943.dart.strong.transformed.expect
index 94d489d..db4b5e2 100644
--- a/pkg/front_end/testcases/general/issue38943.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general/issue38943.dart.strong.transformed.expect
@@ -7,6 +7,16 @@
     : super core::Object::•() {}
   static factory foo<X extends () →* void = dynamic>() → self::D<self::D::foo::X*>*
     return new self::D::_<self::D::foo::X*>();
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   core::print(self::D::foo<() →* void>());
diff --git a/pkg/front_end/testcases/general/issue38944.dart.outline.expect b/pkg/front_end/testcases/general/issue38944.dart.outline.expect
index 2919730..b01cf70 100644
--- a/pkg/front_end/testcases/general/issue38944.dart.outline.expect
+++ b/pkg/front_end/testcases/general/issue38944.dart.outline.expect
@@ -12,11 +12,31 @@
 class A<Q extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::A<self::A::Q*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class _B&Object&A<X extends core::Object* = dynamic> extends core::Object /*isAnonymousMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::_B&Object&A<self::_B&Object&A::X*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B<X extends core::Object* = dynamic> extends self::_B&Object&A<self::B::X*> {
   synthetic constructor •() → self::B<self::B::X*>*
diff --git a/pkg/front_end/testcases/general/issue38944.dart.strong.expect b/pkg/front_end/testcases/general/issue38944.dart.strong.expect
index 5180b5d..1579b23 100644
--- a/pkg/front_end/testcases/general/issue38944.dart.strong.expect
+++ b/pkg/front_end/testcases/general/issue38944.dart.strong.expect
@@ -13,11 +13,31 @@
   synthetic constructor •() → self::A<self::A::Q*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class _B&Object&A<X extends core::Object* = dynamic> extends core::Object /*isAnonymousMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::_B&Object&A<self::_B&Object&A::X*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B<X extends core::Object* = dynamic> extends self::_B&Object&A<self::B::X*> {
   synthetic constructor •() → self::B<self::B::X*>*
diff --git a/pkg/front_end/testcases/general/issue38944.dart.strong.transformed.expect b/pkg/front_end/testcases/general/issue38944.dart.strong.transformed.expect
index 5180b5d..1579b23 100644
--- a/pkg/front_end/testcases/general/issue38944.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general/issue38944.dart.strong.transformed.expect
@@ -13,11 +13,31 @@
   synthetic constructor •() → self::A<self::A::Q*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class _B&Object&A<X extends core::Object* = dynamic> extends core::Object /*isAnonymousMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::_B&Object&A<self::_B&Object&A::X*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B<X extends core::Object* = dynamic> extends self::_B&Object&A<self::B::X*> {
   synthetic constructor •() → self::B<self::B::X*>*
diff --git a/pkg/front_end/testcases/general/issue38961.dart.outline.expect b/pkg/front_end/testcases/general/issue38961.dart.outline.expect
index 63d2ac1..ba95948 100644
--- a/pkg/front_end/testcases/general/issue38961.dart.outline.expect
+++ b/pkg/front_end/testcases/general/issue38961.dart.outline.expect
@@ -16,4 +16,14 @@
   field dynamic x;
   synthetic constructor •() → self::C*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
diff --git a/pkg/front_end/testcases/general/issue38961.dart.strong.expect b/pkg/front_end/testcases/general/issue38961.dart.strong.expect
index 88a38b2..ca7cd46 100644
--- a/pkg/front_end/testcases/general/issue38961.dart.strong.expect
+++ b/pkg/front_end/testcases/general/issue38961.dart.strong.expect
@@ -25,4 +25,14 @@
   synthetic constructor •() → self::C*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
diff --git a/pkg/front_end/testcases/general/issue38961.dart.strong.transformed.expect b/pkg/front_end/testcases/general/issue38961.dart.strong.transformed.expect
index 88a38b2..ca7cd46 100644
--- a/pkg/front_end/testcases/general/issue38961.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general/issue38961.dart.strong.transformed.expect
@@ -25,4 +25,14 @@
   synthetic constructor •() → self::C*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
diff --git a/pkg/front_end/testcases/general/issue39344.dart.outline.expect b/pkg/front_end/testcases/general/issue39344.dart.outline.expect
index 18fa4de..c4d269c 100644
--- a/pkg/front_end/testcases/general/issue39344.dart.outline.expect
+++ b/pkg/front_end/testcases/general/issue39344.dart.outline.expect
@@ -5,6 +5,16 @@
 class A extends core::Object {
   synthetic constructor •() → self::A*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A {
   synthetic constructor •() → self::B*
@@ -21,6 +31,16 @@
     ;
   method method2b(generic-covariant-impl self::Class::T* t) → void
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field core::List<self::B*>* xs;
 static field core::List<core::List<self::B*>*>* xss;
diff --git a/pkg/front_end/testcases/general/issue39344.dart.strong.expect b/pkg/front_end/testcases/general/issue39344.dart.strong.expect
index bca8a50..64cb27f 100644
--- a/pkg/front_end/testcases/general/issue39344.dart.strong.expect
+++ b/pkg/front_end/testcases/general/issue39344.dart.strong.expect
@@ -21,6 +21,16 @@
   synthetic constructor •() → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A {
   synthetic constructor •() → self::B*
@@ -67,6 +77,16 @@
       self::xss = alias as{TypeError,ForDynamic} core::List<core::List<self::B*>*>*;
     }
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field core::List<self::B*>* xs;
 static field core::List<core::List<self::B*>*>* xss;
diff --git a/pkg/front_end/testcases/general/issue39344.dart.strong.transformed.expect b/pkg/front_end/testcases/general/issue39344.dart.strong.transformed.expect
index bca8a50..64cb27f 100644
--- a/pkg/front_end/testcases/general/issue39344.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general/issue39344.dart.strong.transformed.expect
@@ -21,6 +21,16 @@
   synthetic constructor •() → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A {
   synthetic constructor •() → self::B*
@@ -67,6 +77,16 @@
       self::xss = alias as{TypeError,ForDynamic} core::List<core::List<self::B*>*>*;
     }
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field core::List<self::B*>* xs;
 static field core::List<core::List<self::B*>*>* xss;
diff --git a/pkg/front_end/testcases/general/issue39421.dart.outline.expect b/pkg/front_end/testcases/general/issue39421.dart.outline.expect
index 1ca93fb..a400681 100644
--- a/pkg/front_end/testcases/general/issue39421.dart.outline.expect
+++ b/pkg/front_end/testcases/general/issue39421.dart.outline.expect
@@ -22,16 +22,46 @@
 class A#1 extends core::Object {
   synthetic constructor •() → self::A#1*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class A extends core::Object {
   synthetic constructor •() → self::A*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends core::Object {
   synthetic constructor •() → self::B*
     ;
   method foo(core::List<core::Null?>* a) → dynamic
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C extends self::B {
   synthetic constructor •() → self::C*
diff --git a/pkg/front_end/testcases/general/issue39421.dart.strong.expect b/pkg/front_end/testcases/general/issue39421.dart.strong.expect
index 5bdde44..fd3f9cc 100644
--- a/pkg/front_end/testcases/general/issue39421.dart.strong.expect
+++ b/pkg/front_end/testcases/general/issue39421.dart.strong.expect
@@ -27,17 +27,47 @@
   synthetic constructor •() → self::A#1*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class A extends core::Object {
   synthetic constructor •() → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends core::Object {
   synthetic constructor •() → self::B*
     : super core::Object::•()
     ;
   method foo(core::List<core::Null?>* a) → dynamic {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C extends self::B {
   synthetic constructor •() → self::C*
diff --git a/pkg/front_end/testcases/general/issue39421.dart.strong.transformed.expect b/pkg/front_end/testcases/general/issue39421.dart.strong.transformed.expect
index 5bdde44..fd3f9cc 100644
--- a/pkg/front_end/testcases/general/issue39421.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general/issue39421.dart.strong.transformed.expect
@@ -27,17 +27,47 @@
   synthetic constructor •() → self::A#1*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class A extends core::Object {
   synthetic constructor •() → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends core::Object {
   synthetic constructor •() → self::B*
     : super core::Object::•()
     ;
   method foo(core::List<core::Null?>* a) → dynamic {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C extends self::B {
   synthetic constructor •() → self::C*
diff --git a/pkg/front_end/testcases/general/issue40242.dart.outline.expect b/pkg/front_end/testcases/general/issue40242.dart.outline.expect
index 8ca29ac..25a50ec 100644
--- a/pkg/front_end/testcases/general/issue40242.dart.outline.expect
+++ b/pkg/front_end/testcases/general/issue40242.dart.outline.expect
@@ -5,6 +5,16 @@
 class C extends core::Object {
   synthetic constructor •() → self::C*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 extension E on self::C* {
   method errors = self::E|errors;
diff --git a/pkg/front_end/testcases/general/issue40242.dart.strong.expect b/pkg/front_end/testcases/general/issue40242.dart.strong.expect
index 3fb02b3..539d42e 100644
--- a/pkg/front_end/testcases/general/issue40242.dart.strong.expect
+++ b/pkg/front_end/testcases/general/issue40242.dart.strong.expect
@@ -29,6 +29,16 @@
   synthetic constructor •() → self::C*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 extension E on self::C* {
   method errors = self::E|errors;
diff --git a/pkg/front_end/testcases/general/issue40242.dart.strong.transformed.expect b/pkg/front_end/testcases/general/issue40242.dart.strong.transformed.expect
index 3fb02b3..539d42e 100644
--- a/pkg/front_end/testcases/general/issue40242.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general/issue40242.dart.strong.transformed.expect
@@ -29,6 +29,16 @@
   synthetic constructor •() → self::C*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 extension E on self::C* {
   method errors = self::E|errors;
diff --git a/pkg/front_end/testcases/general/issue40428.dart.outline.expect b/pkg/front_end/testcases/general/issue40428.dart.outline.expect
index e371403..fc80293 100644
--- a/pkg/front_end/testcases/general/issue40428.dart.outline.expect
+++ b/pkg/front_end/testcases/general/issue40428.dart.outline.expect
@@ -6,15 +6,45 @@
   final field core::String* value;
   constructor •(core::String* value) → self::SuperClass1*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class SuperClass2 extends core::Object {
   final field core::String* value;
   constructor •(core::String* i) → self::SuperClass2*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Mixin extends core::Object {
   synthetic constructor •() → self::Mixin*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class NamedMixin1 = self::SuperClass1 with self::Mixin {
   synthetic constructor •(core::String* value) → self::NamedMixin1*
diff --git a/pkg/front_end/testcases/general/issue40428.dart.strong.expect b/pkg/front_end/testcases/general/issue40428.dart.strong.expect
index ce0aa76..33eb02d 100644
--- a/pkg/front_end/testcases/general/issue40428.dart.strong.expect
+++ b/pkg/front_end/testcases/general/issue40428.dart.strong.expect
@@ -18,17 +18,47 @@
   constructor •(core::String* value) → self::SuperClass1*
     : self::SuperClass1::value = value, super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class SuperClass2 extends core::Object {
   final field core::String* value;
   constructor •(core::String* i) → self::SuperClass2*
     : self::SuperClass2::value = i, super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Mixin extends core::Object {
   synthetic constructor •() → self::Mixin*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class NamedMixin1 = self::SuperClass1 with self::Mixin {
   synthetic constructor •(core::String* value) → self::NamedMixin1*
diff --git a/pkg/front_end/testcases/general/issue40428.dart.strong.transformed.expect b/pkg/front_end/testcases/general/issue40428.dart.strong.transformed.expect
index bbfe989..4d44df0 100644
--- a/pkg/front_end/testcases/general/issue40428.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general/issue40428.dart.strong.transformed.expect
@@ -18,27 +18,77 @@
   constructor •(core::String* value) → self::SuperClass1*
     : self::SuperClass1::value = value, super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class SuperClass2 extends core::Object {
   final field core::String* value;
   constructor •(core::String* i) → self::SuperClass2*
     : self::SuperClass2::value = i, super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Mixin extends core::Object {
   synthetic constructor •() → self::Mixin*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class NamedMixin1 extends self::SuperClass1 implements self::Mixin /*isEliminatedMixin*/  {
   synthetic constructor •(core::String* value) → self::NamedMixin1*
     : super self::SuperClass1::•(value)
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class NamedMixin2 extends self::SuperClass2 implements self::Mixin /*isEliminatedMixin*/  {
   synthetic constructor •(core::String* i) → self::NamedMixin2*
     : super self::SuperClass2::•(i)
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → void {
   new self::NamedMixin1::•("");
diff --git a/pkg/front_end/testcases/general/issue40662.dart.strong.transformed.expect b/pkg/front_end/testcases/general/issue40662.dart.strong.transformed.expect
index b69d96b..b0b7fca 100644
--- a/pkg/front_end/testcases/general/issue40662.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general/issue40662.dart.strong.transformed.expect
@@ -41,8 +41,8 @@
       asy::_completeOnAsyncReturn(:async_completer, :return_value);
       return;
     }
-    on dynamic catch(dynamic :exception, core::StackTrace* :stack_trace) {
-      :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+    on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
+      :async_completer.{asy::Completer::completeError}(exception, stack_trace);
     }
   :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
@@ -70,8 +70,8 @@
       asy::_completeOnAsyncReturn(:async_completer, :return_value);
       return;
     }
-    on dynamic catch(dynamic :exception, core::StackTrace* :stack_trace) {
-      :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+    on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
+      :async_completer.{asy::Completer::completeError}(exception, stack_trace);
     }
   :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
diff --git a/pkg/front_end/testcases/general/issue41070.dart.outline.expect b/pkg/front_end/testcases/general/issue41070.dart.outline.expect
index 903a7cb..3bf240e 100644
--- a/pkg/front_end/testcases/general/issue41070.dart.outline.expect
+++ b/pkg/front_end/testcases/general/issue41070.dart.outline.expect
@@ -5,12 +5,32 @@
 abstract class Mixin extends core::Object {
   synthetic constructor •() → self::Mixin*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Base extends core::Object /*hasConstConstructor*/  {
   final field core::int* x;
   const constructor •(core::int* x) → self::Base*
     : self::Base::x = x, super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Application = self::Base with self::Mixin /*hasConstConstructor*/  {
   const synthetic constructor •(core::int* x) → self::Application*
diff --git a/pkg/front_end/testcases/general/issue41070.dart.strong.expect b/pkg/front_end/testcases/general/issue41070.dart.strong.expect
index 1d250f6..a5f8458 100644
--- a/pkg/front_end/testcases/general/issue41070.dart.strong.expect
+++ b/pkg/front_end/testcases/general/issue41070.dart.strong.expect
@@ -6,12 +6,32 @@
   synthetic constructor •() → self::Mixin*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Base extends core::Object /*hasConstConstructor*/  {
   final field core::int* x;
   const constructor •(core::int* x) → self::Base*
     : self::Base::x = x, super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Application = self::Base with self::Mixin /*hasConstConstructor*/  {
   const synthetic constructor •(core::int* x) → self::Application*
diff --git a/pkg/front_end/testcases/general/issue41070.dart.strong.transformed.expect b/pkg/front_end/testcases/general/issue41070.dart.strong.transformed.expect
index 5087726..9a02058 100644
--- a/pkg/front_end/testcases/general/issue41070.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general/issue41070.dart.strong.transformed.expect
@@ -6,17 +6,47 @@
   synthetic constructor •() → self::Mixin*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Base extends core::Object /*hasConstConstructor*/  {
   final field core::int* x;
   const constructor •(core::int* x) → self::Base*
     : self::Base::x = x, super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Application extends self::Base implements self::Mixin /*isEliminatedMixin,hasConstConstructor*/  {
   const synthetic constructor •(core::int* x) → self::Application*
     : super self::Base::•(x)
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   self::expect(42, (#C2).{self::Base::x});
diff --git a/pkg/front_end/testcases/general/issue41210a.dart.outline.expect b/pkg/front_end/testcases/general/issue41210a.dart.outline.expect
index aee4934..bd1ec3c 100644
--- a/pkg/front_end/testcases/general/issue41210a.dart.outline.expect
+++ b/pkg/front_end/testcases/general/issue41210a.dart.outline.expect
@@ -19,25 +19,75 @@
   synthetic constructor •() → self::Interface*
     ;
   abstract method method(core::num* i) → core::String*;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class Interface2 extends core::Object {
   synthetic constructor •() → self::Interface2*
     ;
   abstract method method(covariant core::int* i) → core::String*;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class A extends core::Object implements self::Interface /*isMixinDeclaration*/  {
   method method(core::num* i, {core::String* s = "hello"}) → core::String*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class B extends core::Object implements self::Interface {
   synthetic constructor •() → self::B*
     ;
   abstract method method(core::num* i) → core::String*;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class _C&Object&A = core::Object with self::A /*isAnonymousMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::_C&Object&A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class _C&Object&A&B = self::_C&Object&A with self::B /*isAnonymousMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::_C&Object&A&B*
@@ -53,12 +103,32 @@
 abstract class D extends core::Object implements self::Interface, self::Interface2 {
   synthetic constructor •() → self::D*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
   abstract forwarding-stub method method(covariant core::num* i) → core::String*;
 }
 abstract class _E&Object&A = core::Object with self::A /*isAnonymousMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::_E&Object&A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class _E&Object&A&D = self::_E&Object&A with self::D /*isAnonymousMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::_E&Object&A&D*
diff --git a/pkg/front_end/testcases/general/issue41210a.dart.strong.expect b/pkg/front_end/testcases/general/issue41210a.dart.strong.expect
index c8758f4..14eb392 100644
--- a/pkg/front_end/testcases/general/issue41210a.dart.strong.expect
+++ b/pkg/front_end/testcases/general/issue41210a.dart.strong.expect
@@ -20,27 +20,77 @@
     : super core::Object::•()
     ;
   abstract method method(core::num* i) → core::String*;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class Interface2 extends core::Object {
   synthetic constructor •() → self::Interface2*
     : super core::Object::•()
     ;
   abstract method method(covariant core::int* i) → core::String*;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class A extends core::Object implements self::Interface /*isMixinDeclaration*/  {
   method method(core::num* i, {core::String* s = #C1}) → core::String*
     return s;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class B extends core::Object implements self::Interface {
   synthetic constructor •() → self::B*
     : super core::Object::•()
     ;
   abstract method method(core::num* i) → core::String*;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class _C&Object&A = core::Object with self::A /*isAnonymousMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::_C&Object&A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class _C&Object&A&B = self::_C&Object&A with self::B /*isAnonymousMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::_C&Object&A&B*
@@ -58,12 +108,32 @@
   synthetic constructor •() → self::D*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
   abstract forwarding-stub method method(covariant core::num* i) → core::String*;
 }
 abstract class _E&Object&A = core::Object with self::A /*isAnonymousMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::_E&Object&A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class _E&Object&A&D = self::_E&Object&A with self::D /*isAnonymousMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::_E&Object&A&D*
diff --git a/pkg/front_end/testcases/general/issue41210b/issue41210_lib.dart.outline.expect b/pkg/front_end/testcases/general/issue41210b/issue41210_lib.dart.outline.expect
index c7a2391..d371a15 100644
--- a/pkg/front_end/testcases/general/issue41210b/issue41210_lib.dart.outline.expect
+++ b/pkg/front_end/testcases/general/issue41210b/issue41210_lib.dart.outline.expect
@@ -61,23 +61,73 @@
   synthetic constructor •() → iss::Interface*
     ;
   abstract method method(core::num* i) → core::String*;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class Interface2 extends core::Object {
   synthetic constructor •() → iss::Interface2*
     ;
   abstract method method(covariant core::int* i) → core::String*;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class A extends core::Object implements iss::Interface /*isMixinDeclaration*/  {
   method method(core::num* i, {core::String* s = "hello"}) → core::String*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class B extends core::Object implements iss::Interface {
   synthetic constructor •() → iss::B*
     ;
   abstract method method(core::num* i) → core::String*;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class D extends core::Object implements iss::Interface, iss::Interface2 {
   synthetic constructor •() → iss::D*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
   abstract forwarding-stub method method(covariant core::num* i) → core::String*;
 }
diff --git a/pkg/front_end/testcases/general/issue41210b/issue41210_lib.dart.strong.expect b/pkg/front_end/testcases/general/issue41210b/issue41210_lib.dart.strong.expect
index 2bd5392..67d665c 100644
--- a/pkg/front_end/testcases/general/issue41210b/issue41210_lib.dart.strong.expect
+++ b/pkg/front_end/testcases/general/issue41210b/issue41210_lib.dart.strong.expect
@@ -65,27 +65,77 @@
     : super core::Object::•()
     ;
   abstract method method(core::num* i) → core::String*;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class Interface2 extends core::Object {
   synthetic constructor •() → iss::Interface2*
     : super core::Object::•()
     ;
   abstract method method(covariant core::int* i) → core::String*;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class A extends core::Object implements iss::Interface /*isMixinDeclaration*/  {
   method method(core::num* i, {core::String* s = #C1}) → core::String*
     return s;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class B extends core::Object implements iss::Interface {
   synthetic constructor •() → iss::B*
     : super core::Object::•()
     ;
   abstract method method(core::num* i) → core::String*;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class D extends core::Object implements iss::Interface, iss::Interface2 {
   synthetic constructor •() → iss::D*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
   abstract forwarding-stub method method(covariant core::num* i) → core::String*;
 }
 
diff --git a/pkg/front_end/testcases/general/magic_const.dart.outline.expect b/pkg/front_end/testcases/general/magic_const.dart.outline.expect
index 9eab40c..d464a17 100644
--- a/pkg/front_end/testcases/general/magic_const.dart.outline.expect
+++ b/pkg/front_end/testcases/general/magic_const.dart.outline.expect
@@ -6,10 +6,30 @@
   const constructor •() → self::Constant*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class NotConstant extends core::Object {
   synthetic constructor •() → self::NotConstant*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method foo({dynamic a, dynamic b, dynamic c}) → dynamic
   ;
diff --git a/pkg/front_end/testcases/general/magic_const.dart.strong.expect b/pkg/front_end/testcases/general/magic_const.dart.strong.expect
index d37f679..c2cd85b 100644
--- a/pkg/front_end/testcases/general/magic_const.dart.strong.expect
+++ b/pkg/front_end/testcases/general/magic_const.dart.strong.expect
@@ -29,11 +29,31 @@
   const constructor •() → self::Constant*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class NotConstant extends core::Object {
   synthetic constructor •() → self::NotConstant*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method foo({dynamic a = #C1, dynamic b = #C1, dynamic c = invalid-expression "Non-constant list literal"}) → dynamic {}
 static method test() → dynamic {
diff --git a/pkg/front_end/testcases/general/magic_const.dart.strong.transformed.expect b/pkg/front_end/testcases/general/magic_const.dart.strong.transformed.expect
index d37f679..c2cd85b 100644
--- a/pkg/front_end/testcases/general/magic_const.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general/magic_const.dart.strong.transformed.expect
@@ -29,11 +29,31 @@
   const constructor •() → self::Constant*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class NotConstant extends core::Object {
   synthetic constructor •() → self::NotConstant*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method foo({dynamic a = #C1, dynamic b = #C1, dynamic c = invalid-expression "Non-constant list literal"}) → dynamic {}
 static method test() → dynamic {
diff --git a/pkg/front_end/testcases/general/many_errors.dart.outline.expect b/pkg/front_end/testcases/general/many_errors.dart.outline.expect
index 09f5a30..1e7728b 100644
--- a/pkg/front_end/testcases/general/many_errors.dart.outline.expect
+++ b/pkg/front_end/testcases/general/many_errors.dart.outline.expect
@@ -40,20 +40,60 @@
   const A.named2() : x = new Object();
                        ^", super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends core::Object {
   synthetic constructor •() → self::B*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C extends core::Object {
   field self::B* b;
   synthetic constructor •() → self::C*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class AbstractClass extends core::Object /*hasConstConstructor*/  {
   const constructor id() → self::AbstractClass*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 external static method foo(core::String* x) → dynamic;
 static method m() → dynamic
diff --git a/pkg/front_end/testcases/general/many_errors.dart.strong.expect b/pkg/front_end/testcases/general/many_errors.dart.strong.expect
index 7dd3401..3186d6d 100644
--- a/pkg/front_end/testcases/general/many_errors.dart.strong.expect
+++ b/pkg/front_end/testcases/general/many_errors.dart.strong.expect
@@ -65,22 +65,62 @@
   const A.named2() : x = new Object();
                        ^", super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends core::Object {
   synthetic constructor •() → self::B*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C extends core::Object {
   field self::B* b = null;
   synthetic constructor •() → self::C*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class AbstractClass extends core::Object /*hasConstConstructor*/  {
   const constructor id() → self::AbstractClass*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 external static method foo(core::String* x) → dynamic {
   invalid-expression "pkg/front_end/testcases/general/many_errors.dart:13:24: Error: An external or native method can't have a body.
diff --git a/pkg/front_end/testcases/general/many_errors.dart.strong.transformed.expect b/pkg/front_end/testcases/general/many_errors.dart.strong.transformed.expect
index 7dd3401..3186d6d 100644
--- a/pkg/front_end/testcases/general/many_errors.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general/many_errors.dart.strong.transformed.expect
@@ -65,22 +65,62 @@
   const A.named2() : x = new Object();
                        ^", super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends core::Object {
   synthetic constructor •() → self::B*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C extends core::Object {
   field self::B* b = null;
   synthetic constructor •() → self::C*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class AbstractClass extends core::Object /*hasConstConstructor*/  {
   const constructor id() → self::AbstractClass*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 external static method foo(core::String* x) → dynamic {
   invalid-expression "pkg/front_end/testcases/general/many_errors.dart:13:24: Error: An external or native method can't have a body.
diff --git a/pkg/front_end/testcases/general/metadata_enum.dart.outline.expect b/pkg/front_end/testcases/general/metadata_enum.dart.outline.expect
index 8944460..f17a1fd 100644
--- a/pkg/front_end/testcases/general/metadata_enum.dart.outline.expect
+++ b/pkg/front_end/testcases/general/metadata_enum.dart.outline.expect
@@ -15,6 +15,15 @@
     ;
   method toString() → core::String*
     return this.{=self::E::_name};
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static const field dynamic a = null;
 static method main() → dynamic
diff --git a/pkg/front_end/testcases/general/metadata_enum.dart.strong.expect b/pkg/front_end/testcases/general/metadata_enum.dart.strong.expect
index 623dc08..c5b219cb 100644
--- a/pkg/front_end/testcases/general/metadata_enum.dart.strong.expect
+++ b/pkg/front_end/testcases/general/metadata_enum.dart.strong.expect
@@ -15,6 +15,15 @@
     ;
   method toString() → core::String*
     return this.{=self::E::_name};
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static const field dynamic a = #C1;
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general/metadata_enum.dart.strong.transformed.expect b/pkg/front_end/testcases/general/metadata_enum.dart.strong.transformed.expect
index 623dc08..c5b219cb 100644
--- a/pkg/front_end/testcases/general/metadata_enum.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general/metadata_enum.dart.strong.transformed.expect
@@ -15,6 +15,15 @@
     ;
   method toString() → core::String*
     return this.{=self::E::_name};
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static const field dynamic a = #C1;
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general/metadata_named_mixin_application.dart.outline.expect b/pkg/front_end/testcases/general/metadata_named_mixin_application.dart.outline.expect
index a8ac55c..beaa284 100644
--- a/pkg/front_end/testcases/general/metadata_named_mixin_application.dart.outline.expect
+++ b/pkg/front_end/testcases/general/metadata_named_mixin_application.dart.outline.expect
@@ -11,10 +11,30 @@
 class D extends core::Object {
   synthetic constructor •() → self::D*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class E extends core::Object {
   synthetic constructor •() → self::E*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static const field dynamic a = null;
 static method main() → dynamic
diff --git a/pkg/front_end/testcases/general/metadata_named_mixin_application.dart.strong.expect b/pkg/front_end/testcases/general/metadata_named_mixin_application.dart.strong.expect
index 2e68abd..1a6eedc 100644
--- a/pkg/front_end/testcases/general/metadata_named_mixin_application.dart.strong.expect
+++ b/pkg/front_end/testcases/general/metadata_named_mixin_application.dart.strong.expect
@@ -12,11 +12,31 @@
   synthetic constructor •() → self::D*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class E extends core::Object {
   synthetic constructor •() → self::E*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static const field dynamic a = #C1;
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general/metadata_named_mixin_application.dart.strong.transformed.expect b/pkg/front_end/testcases/general/metadata_named_mixin_application.dart.strong.transformed.expect
index 1b24fb6..8a2258c 100644
--- a/pkg/front_end/testcases/general/metadata_named_mixin_application.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general/metadata_named_mixin_application.dart.strong.transformed.expect
@@ -7,16 +7,46 @@
   synthetic constructor •() → self::C*
     : super self::D::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D extends core::Object {
   synthetic constructor •() → self::D*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class E extends core::Object {
   synthetic constructor •() → self::E*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static const field dynamic a = #C1;
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general/micro.dart.outline.expect b/pkg/front_end/testcases/general/micro.dart.outline.expect
index 25eccc4..110be54 100644
--- a/pkg/front_end/testcases/general/micro.dart.outline.expect
+++ b/pkg/front_end/testcases/general/micro.dart.outline.expect
@@ -7,25 +7,75 @@
     ;
   method instanceMethod() → dynamic
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class ExternalValue extends core::Object {
   synthetic constructor •() → self::ExternalValue*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class Bar extends core::Object {
   synthetic constructor •() → self::Bar*
     ;
   abstract method externalInstanceMethod() → self::ExternalValue*;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Box extends core::Object {
   field dynamic field;
   synthetic constructor •() → self::Box*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class FinalBox extends core::Object {
   final field dynamic finalField;
   constructor •(dynamic finalField) → self::FinalBox*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class SubFinalBox extends self::FinalBox {
   constructor •(dynamic value) → self::SubFinalBox*
@@ -36,12 +86,32 @@
     ;
   method dynamicallyCalled(dynamic x) → dynamic
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class DynamicReceiver2 extends core::Object {
   synthetic constructor •() → self::DynamicReceiver2*
     ;
   method dynamicallyCalled(dynamic x) → dynamic
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method staticMethod() → dynamic
   ;
diff --git a/pkg/front_end/testcases/general/micro.dart.strong.expect b/pkg/front_end/testcases/general/micro.dart.strong.expect
index 8ee6936..5170680 100644
--- a/pkg/front_end/testcases/general/micro.dart.strong.expect
+++ b/pkg/front_end/testcases/general/micro.dart.strong.expect
@@ -9,29 +9,79 @@
   method instanceMethod() → dynamic {
     return 123;
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class ExternalValue extends core::Object {
   synthetic constructor •() → self::ExternalValue*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class Bar extends core::Object {
   synthetic constructor •() → self::Bar*
     : super core::Object::•()
     ;
   abstract method externalInstanceMethod() → self::ExternalValue*;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Box extends core::Object {
   field dynamic field = null;
   synthetic constructor •() → self::Box*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class FinalBox extends core::Object {
   final field dynamic finalField;
   constructor •(dynamic finalField) → self::FinalBox*
     : self::FinalBox::finalField = finalField, super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class SubFinalBox extends self::FinalBox {
   constructor •(dynamic value) → self::SubFinalBox*
@@ -43,12 +93,32 @@
     : super core::Object::•()
     ;
   method dynamicallyCalled(dynamic x) → dynamic {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class DynamicReceiver2 extends core::Object {
   synthetic constructor •() → self::DynamicReceiver2*
     : super core::Object::•()
     ;
   method dynamicallyCalled(dynamic x) → dynamic {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method staticMethod() → dynamic {
   return "sdfg";
diff --git a/pkg/front_end/testcases/general/micro.dart.strong.transformed.expect b/pkg/front_end/testcases/general/micro.dart.strong.transformed.expect
index 8ee6936..5170680 100644
--- a/pkg/front_end/testcases/general/micro.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general/micro.dart.strong.transformed.expect
@@ -9,29 +9,79 @@
   method instanceMethod() → dynamic {
     return 123;
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class ExternalValue extends core::Object {
   synthetic constructor •() → self::ExternalValue*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class Bar extends core::Object {
   synthetic constructor •() → self::Bar*
     : super core::Object::•()
     ;
   abstract method externalInstanceMethod() → self::ExternalValue*;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Box extends core::Object {
   field dynamic field = null;
   synthetic constructor •() → self::Box*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class FinalBox extends core::Object {
   final field dynamic finalField;
   constructor •(dynamic finalField) → self::FinalBox*
     : self::FinalBox::finalField = finalField, super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class SubFinalBox extends self::FinalBox {
   constructor •(dynamic value) → self::SubFinalBox*
@@ -43,12 +93,32 @@
     : super core::Object::•()
     ;
   method dynamicallyCalled(dynamic x) → dynamic {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class DynamicReceiver2 extends core::Object {
   synthetic constructor •() → self::DynamicReceiver2*
     : super core::Object::•()
     ;
   method dynamicallyCalled(dynamic x) → dynamic {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method staticMethod() → dynamic {
   return "sdfg";
diff --git a/pkg/front_end/testcases/general/missing_constructor.dart.outline.expect b/pkg/front_end/testcases/general/missing_constructor.dart.outline.expect
index a50e142..49560da 100644
--- a/pkg/front_end/testcases/general/missing_constructor.dart.outline.expect
+++ b/pkg/front_end/testcases/general/missing_constructor.dart.outline.expect
@@ -5,6 +5,16 @@
 class Super extends core::Object {
   constructor _() → self::Super*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Sub extends self::Super {
   constructor •() → self::Sub*
@@ -17,10 +27,30 @@
     ;
   constructor bar() → self::Bad*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class M extends core::Object {
   synthetic constructor •() → self::M*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class _MixinApplication&Super&M = self::Super with self::M /*isAnonymousMixin*/  {
   synthetic constructor _() → self::_MixinApplication&Super&M*
diff --git a/pkg/front_end/testcases/general/missing_constructor.dart.strong.expect b/pkg/front_end/testcases/general/missing_constructor.dart.strong.expect
index 1cadfea..275d993 100644
--- a/pkg/front_end/testcases/general/missing_constructor.dart.strong.expect
+++ b/pkg/front_end/testcases/general/missing_constructor.dart.strong.expect
@@ -33,6 +33,16 @@
   constructor _() → self::Super*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Sub extends self::Super {
   constructor •() → self::Sub*
@@ -57,11 +67,31 @@
   Bad.bar() : this.baz();
               ^^^^"
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class M extends core::Object {
   synthetic constructor •() → self::M*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class _MixinApplication&Super&M = self::Super with self::M /*isAnonymousMixin*/  {
   synthetic constructor _() → self::_MixinApplication&Super&M*
diff --git a/pkg/front_end/testcases/general/missing_constructor.dart.strong.transformed.expect b/pkg/front_end/testcases/general/missing_constructor.dart.strong.transformed.expect
index b77e9a0..6fecd40 100644
--- a/pkg/front_end/testcases/general/missing_constructor.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general/missing_constructor.dart.strong.transformed.expect
@@ -33,6 +33,16 @@
   constructor _() → self::Super*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Sub extends self::Super {
   constructor •() → self::Sub*
@@ -57,16 +67,46 @@
   Bad.bar() : this.baz();
               ^^^^"
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class M extends core::Object {
   synthetic constructor •() → self::M*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class _MixinApplication&Super&M extends self::Super implements self::M /*isAnonymousMixin,isEliminatedMixin*/  {
   synthetic constructor _() → self::_MixinApplication&Super&M*
     : super self::Super::_()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class MixinApplication extends self::_MixinApplication&Super&M {
   constructor •() → self::MixinApplication*
diff --git a/pkg/front_end/testcases/general/missing_toplevel.dart.outline.expect b/pkg/front_end/testcases/general/missing_toplevel.dart.outline.expect
index cd82bd6..9c2b5d6 100644
--- a/pkg/front_end/testcases/general/missing_toplevel.dart.outline.expect
+++ b/pkg/front_end/testcases/general/missing_toplevel.dart.outline.expect
@@ -5,23 +5,63 @@
 class EmptyClass extends core::Object {
   synthetic constructor •() → self::EmptyClass*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class ClassWithProperty extends core::Object {
   field self::EmptyClass* property;
   synthetic constructor •() → self::ClassWithProperty*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class ClassWithIndexSet extends core::Object {
   synthetic constructor •() → self::ClassWithIndexSet*
     ;
   operator []=(core::int* index, core::int* value) → void
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class ClassWithIndexGet extends core::Object {
   synthetic constructor •() → self::ClassWithIndexGet*
     ;
   operator [](core::int* index) → core::int*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field self::EmptyClass* emptyClass;
 static field self::ClassWithProperty* classWithProperty;
diff --git a/pkg/front_end/testcases/general/missing_toplevel.dart.strong.expect b/pkg/front_end/testcases/general/missing_toplevel.dart.strong.expect
index 921e9cd..ab8e70e 100644
--- a/pkg/front_end/testcases/general/missing_toplevel.dart.strong.expect
+++ b/pkg/front_end/testcases/general/missing_toplevel.dart.strong.expect
@@ -39,18 +39,48 @@
   synthetic constructor •() → self::EmptyClass*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class ClassWithProperty extends core::Object {
   field self::EmptyClass* property = null;
   synthetic constructor •() → self::ClassWithProperty*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class ClassWithIndexSet extends core::Object {
   synthetic constructor •() → self::ClassWithIndexSet*
     : super core::Object::•()
     ;
   operator []=(core::int* index, core::int* value) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class ClassWithIndexGet extends core::Object {
   synthetic constructor •() → self::ClassWithIndexGet*
@@ -58,6 +88,16 @@
     ;
   operator [](core::int* index) → core::int*
     return 42;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field self::EmptyClass* emptyClass = new self::EmptyClass::•();
 static field self::ClassWithProperty* classWithProperty = new self::ClassWithProperty::•();
diff --git a/pkg/front_end/testcases/general/missing_toplevel.dart.strong.transformed.expect b/pkg/front_end/testcases/general/missing_toplevel.dart.strong.transformed.expect
index 921e9cd..ab8e70e 100644
--- a/pkg/front_end/testcases/general/missing_toplevel.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general/missing_toplevel.dart.strong.transformed.expect
@@ -39,18 +39,48 @@
   synthetic constructor •() → self::EmptyClass*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class ClassWithProperty extends core::Object {
   field self::EmptyClass* property = null;
   synthetic constructor •() → self::ClassWithProperty*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class ClassWithIndexSet extends core::Object {
   synthetic constructor •() → self::ClassWithIndexSet*
     : super core::Object::•()
     ;
   operator []=(core::int* index, core::int* value) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class ClassWithIndexGet extends core::Object {
   synthetic constructor •() → self::ClassWithIndexGet*
@@ -58,6 +88,16 @@
     ;
   operator [](core::int* index) → core::int*
     return 42;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field self::EmptyClass* emptyClass = new self::EmptyClass::•();
 static field self::ClassWithProperty* classWithProperty = new self::ClassWithProperty::•();
diff --git a/pkg/front_end/testcases/general/mixin.dart.outline.expect b/pkg/front_end/testcases/general/mixin.dart.outline.expect
index d4a20e6..9b626ca 100644
--- a/pkg/front_end/testcases/general/mixin.dart.outline.expect
+++ b/pkg/front_end/testcases/general/mixin.dart.outline.expect
@@ -6,6 +6,16 @@
   const synthetic constructor •() → self::_B&Object&M1*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class _B&Object&M1&M2 = self::_B&Object&M1 with self::M2 /*isAnonymousMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::_B&Object&M1&M2*
@@ -21,17 +31,47 @@
     ;
   method m() → dynamic
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class M2 extends core::Object {
   synthetic constructor •() → self::M2*
     ;
   method m() → dynamic
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class _C&Object&M1 = core::Object with self::M1 /*isAnonymousMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::_C&Object&M1*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class _C&Object&M1&M2 = self::_C&Object&M1 with self::M2 /*isAnonymousMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::_C&Object&M1&M2*
@@ -47,11 +87,31 @@
     ;
   method m() → dynamic
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class _D&Object&G1<S extends core::Object* = dynamic> = core::Object with self::G1<self::_D&Object&G1::S*> /*isAnonymousMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::_D&Object&G1<self::_D&Object&G1::S*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D<S extends core::Object* = dynamic> extends self::_D&Object&G1<self::D::S*> {
   synthetic constructor •() → self::D<self::D::S*>*
diff --git a/pkg/front_end/testcases/general/mixin.dart.strong.expect b/pkg/front_end/testcases/general/mixin.dart.strong.expect
index 5e30f41..1b94412 100644
--- a/pkg/front_end/testcases/general/mixin.dart.strong.expect
+++ b/pkg/front_end/testcases/general/mixin.dart.strong.expect
@@ -6,6 +6,16 @@
   const synthetic constructor •() → self::_B&Object&M1*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class _B&Object&M1&M2 = self::_B&Object&M1 with self::M2 /*isAnonymousMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::_B&Object&M1&M2*
@@ -23,6 +33,16 @@
     ;
   method m() → dynamic
     return core::print("M1");
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class M2 extends core::Object {
   synthetic constructor •() → self::M2*
@@ -30,11 +50,31 @@
     ;
   method m() → dynamic
     return core::print("M2");
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class _C&Object&M1 = core::Object with self::M1 /*isAnonymousMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::_C&Object&M1*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class _C&Object&M1&M2 = self::_C&Object&M1 with self::M2 /*isAnonymousMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::_C&Object&M1&M2*
@@ -52,11 +92,31 @@
     ;
   method m() → dynamic
     return core::print(self::G1::T*);
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class _D&Object&G1<S extends core::Object* = dynamic> = core::Object with self::G1<self::_D&Object&G1::S*> /*isAnonymousMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::_D&Object&G1<self::_D&Object&G1::S*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D<S extends core::Object* = dynamic> extends self::_D&Object&G1<self::D::S*> {
   synthetic constructor •() → self::D<self::D::S*>*
diff --git a/pkg/front_end/testcases/general/mixin.dart.strong.transformed.expect b/pkg/front_end/testcases/general/mixin.dart.strong.transformed.expect
index 903d96c..d1bb8f5 100644
--- a/pkg/front_end/testcases/general/mixin.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general/mixin.dart.strong.transformed.expect
@@ -6,6 +6,16 @@
   const synthetic constructor •() → self::_B&Object&M1*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
   method m() → dynamic
     return core::print("M1");
 }
@@ -15,6 +25,16 @@
     ;
   method m() → dynamic
     return core::print("M2");
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::_B&Object&M1&M2 {
   constructor •(dynamic value) → self::B*
@@ -27,6 +47,16 @@
     ;
   method m() → dynamic
     return core::print("M1");
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class M2 extends core::Object {
   synthetic constructor •() → self::M2*
@@ -34,11 +64,31 @@
     ;
   method m() → dynamic
     return core::print("M2");
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class _C&Object&M1 extends core::Object implements self::M1 /*isAnonymousMixin,isEliminatedMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::_C&Object&M1*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
   method m() → dynamic
     return core::print("M1");
 }
@@ -48,6 +98,16 @@
     ;
   method m() → dynamic
     return core::print("M2");
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C extends self::_C&Object&M1&M2 {
   constructor •(dynamic value) → self::C*
@@ -60,11 +120,31 @@
     ;
   method m() → dynamic
     return core::print(self::G1::T*);
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class _D&Object&G1<S extends core::Object* = dynamic> extends core::Object implements self::G1<self::_D&Object&G1::S*> /*isAnonymousMixin,isEliminatedMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::_D&Object&G1<self::_D&Object&G1::S*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
   method m() → dynamic
     return core::print(self::_D&Object&G1::S*);
 }
diff --git a/pkg/front_end/testcases/general/mixin_application_inferred_parameter_type.dart.outline.expect b/pkg/front_end/testcases/general/mixin_application_inferred_parameter_type.dart.outline.expect
index eb95af0..7463383d 100644
--- a/pkg/front_end/testcases/general/mixin_application_inferred_parameter_type.dart.outline.expect
+++ b/pkg/front_end/testcases/general/mixin_application_inferred_parameter_type.dart.outline.expect
@@ -5,11 +5,31 @@
 class Mixin extends core::Object {
   synthetic constructor •() → self::Mixin*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Super extends core::Object {
   field core::int* field;
   constructor •(core::int* field) → self::Super*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Class = self::Super with self::Mixin {
   synthetic constructor •(core::int* field) → self::Class*
diff --git a/pkg/front_end/testcases/general/mixin_application_inferred_parameter_type.dart.strong.expect b/pkg/front_end/testcases/general/mixin_application_inferred_parameter_type.dart.strong.expect
index 577e4e4..83198cd 100644
--- a/pkg/front_end/testcases/general/mixin_application_inferred_parameter_type.dart.strong.expect
+++ b/pkg/front_end/testcases/general/mixin_application_inferred_parameter_type.dart.strong.expect
@@ -13,12 +13,32 @@
   synthetic constructor •() → self::Mixin*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Super extends core::Object {
   field core::int* field = 42;
   constructor •(core::int* field) → self::Super*
     : self::Super::field = field, super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Class = self::Super with self::Mixin {
   synthetic constructor •(core::int* field) → self::Class*
diff --git a/pkg/front_end/testcases/general/mixin_application_inferred_parameter_type.dart.strong.transformed.expect b/pkg/front_end/testcases/general/mixin_application_inferred_parameter_type.dart.strong.transformed.expect
index baf01a7..29f6c3e 100644
--- a/pkg/front_end/testcases/general/mixin_application_inferred_parameter_type.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general/mixin_application_inferred_parameter_type.dart.strong.transformed.expect
@@ -13,17 +13,47 @@
   synthetic constructor •() → self::Mixin*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Super extends core::Object {
   field core::int* field = 42;
   constructor •(core::int* field) → self::Super*
     : self::Super::field = field, super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Class extends self::Super implements self::Mixin /*isEliminatedMixin*/  {
   synthetic constructor •(core::int* field) → self::Class*
     : super self::Super::•(field)
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   new self::Class::•(0);
diff --git a/pkg/front_end/testcases/general/mixin_application_override.dart.outline.expect b/pkg/front_end/testcases/general/mixin_application_override.dart.outline.expect
index 00b6b5b..41a7ec6 100644
--- a/pkg/front_end/testcases/general/mixin_application_override.dart.outline.expect
+++ b/pkg/front_end/testcases/general/mixin_application_override.dart.outline.expect
@@ -130,24 +130,74 @@
     ;
   method foo([dynamic x]) → dynamic
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class M extends core::Object {
   synthetic constructor •() → self::M*
     ;
   method foo() → dynamic
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class M1 extends core::Object {
   synthetic constructor •() → self::M1*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class M2 extends core::Object {
   synthetic constructor •() → self::M2*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class MX extends core::Object {
   synthetic constructor •() → self::MX*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class A0 = self::S with self::M {
   synthetic constructor •() → self::A0*
diff --git a/pkg/front_end/testcases/general/mixin_application_override.dart.strong.expect b/pkg/front_end/testcases/general/mixin_application_override.dart.strong.expect
index fca000ef..9ff51c9 100644
--- a/pkg/front_end/testcases/general/mixin_application_override.dart.strong.expect
+++ b/pkg/front_end/testcases/general/mixin_application_override.dart.strong.expect
@@ -130,27 +130,77 @@
     : super core::Object::•()
     ;
   method foo([dynamic x = #C1]) → dynamic {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class M extends core::Object {
   synthetic constructor •() → self::M*
     : super core::Object::•()
     ;
   method foo() → dynamic {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class M1 extends core::Object {
   synthetic constructor •() → self::M1*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class M2 extends core::Object {
   synthetic constructor •() → self::M2*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class MX extends core::Object {
   synthetic constructor •() → self::MX*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class A0 = self::S with self::M {
   synthetic constructor •() → self::A0*
diff --git a/pkg/front_end/testcases/general/mixin_conflicts.dart.outline.expect b/pkg/front_end/testcases/general/mixin_conflicts.dart.outline.expect
index df81fd0a..d19f7fd 100644
--- a/pkg/front_end/testcases/general/mixin_conflicts.dart.outline.expect
+++ b/pkg/front_end/testcases/general/mixin_conflicts.dart.outline.expect
@@ -38,16 +38,46 @@
     ;
   method foo() → dynamic
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class N = core::Object with self::M /*hasConstConstructor*/  {
   const synthetic constructor •() → self::N*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class _C&Object&N = core::Object with self::N /*isAnonymousMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::_C&Object&N*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C extends self::_C&Object&N {
   synthetic constructor •() → self::C*
@@ -58,21 +88,61 @@
     ;
   method bar() → dynamic
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class N2 = core::Object with self::M2 /*hasConstConstructor*/  {
   const synthetic constructor •() → self::N2*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class N3 = core::Object with self::M2 /*hasConstConstructor*/  {
   const synthetic constructor •() → self::N3*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class _C2&Object&M2 = core::Object with self::M2 /*isAnonymousMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::_C2&Object&M2*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C2 extends self::_C2&Object&M2 {
   synthetic constructor •() → self::C2*
@@ -82,6 +152,16 @@
   const synthetic constructor •() → self::_C3&Object&M2*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class C3 extends self::_C3&Object&M2 {
   synthetic constructor •() → self::C3*
diff --git a/pkg/front_end/testcases/general/mixin_conflicts.dart.strong.expect b/pkg/front_end/testcases/general/mixin_conflicts.dart.strong.expect
index 676600e..8d2286f 100644
--- a/pkg/front_end/testcases/general/mixin_conflicts.dart.strong.expect
+++ b/pkg/front_end/testcases/general/mixin_conflicts.dart.strong.expect
@@ -38,16 +38,46 @@
     : super core::Object::•()
     ;
   method foo() → dynamic {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class N = core::Object with self::M /*hasConstConstructor*/  {
   const synthetic constructor •() → self::N*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class _C&Object&N = core::Object with self::N /*isAnonymousMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::_C&Object&N*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C extends self::_C&Object&N {
   synthetic constructor •() → self::C*
@@ -59,21 +89,61 @@
     : super core::Object::•()
     ;
   method bar() → dynamic {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class N2 = core::Object with self::M2 /*hasConstConstructor*/  {
   const synthetic constructor •() → self::N2*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class N3 = core::Object with self::M2 /*hasConstConstructor*/  {
   const synthetic constructor •() → self::N3*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class _C2&Object&M2 = core::Object with self::M2 /*isAnonymousMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::_C2&Object&M2*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C2 extends self::_C2&Object&M2 {
   synthetic constructor •() → self::C2*
@@ -84,6 +154,16 @@
   const synthetic constructor •() → self::_C3&Object&M2*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class C3 extends self::_C3&Object&M2 {
   synthetic constructor •() → self::C3*
diff --git a/pkg/front_end/testcases/general/mixin_conflicts.dart.strong.transformed.expect b/pkg/front_end/testcases/general/mixin_conflicts.dart.strong.transformed.expect
index 32bacea..a2e9fd4 100644
--- a/pkg/front_end/testcases/general/mixin_conflicts.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general/mixin_conflicts.dart.strong.transformed.expect
@@ -38,17 +38,47 @@
     : super core::Object::•()
     ;
   method foo() → dynamic {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class N extends core::Object implements self::M /*isEliminatedMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::N*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
   method foo() → dynamic {}
 }
 abstract class _C&Object&N extends core::Object implements self::N /*isAnonymousMixin,isEliminatedMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::_C&Object&N*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
   method foo() → dynamic {}
 }
 class C extends self::_C&Object&N {
@@ -61,23 +91,63 @@
     : super core::Object::•()
     ;
   method bar() → dynamic {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class N2 extends core::Object implements self::M2 /*isEliminatedMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::N2*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
   method bar() → dynamic {}
 }
 abstract class N3 extends core::Object implements self::M2 /*isEliminatedMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::N3*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
   method bar() → dynamic {}
 }
 abstract class _C2&Object&M2 extends core::Object implements self::M2 /*isAnonymousMixin,isEliminatedMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::_C2&Object&M2*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
   method bar() → dynamic {}
 }
 class C2 extends self::_C2&Object&M2 {
@@ -89,6 +159,16 @@
   const synthetic constructor •() → self::_C3&Object&M2*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
   method bar() → dynamic {}
 }
 abstract class C3 extends self::_C3&Object&M2 {
diff --git a/pkg/front_end/testcases/general/mixin_constructors_with_default_values.dart.outline.expect b/pkg/front_end/testcases/general/mixin_constructors_with_default_values.dart.outline.expect
index 9c0a4ed..6e2b4d4 100644
--- a/pkg/front_end/testcases/general/mixin_constructors_with_default_values.dart.outline.expect
+++ b/pkg/front_end/testcases/general/mixin_constructors_with_default_values.dart.outline.expect
@@ -8,10 +8,30 @@
   field core::String* trace;
   constructor •({dynamic a, dynamic b}) → self::C<self::C::T*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class M extends core::Object {
   synthetic constructor •() → self::M*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D = self::C<core::String*> with self::M {
   synthetic constructor •({dynamic a, dynamic b}) → self::D*
diff --git a/pkg/front_end/testcases/general/mixin_constructors_with_default_values.dart.strong.expect b/pkg/front_end/testcases/general/mixin_constructors_with_default_values.dart.strong.expect
index 483d84d..607c5bf 100644
--- a/pkg/front_end/testcases/general/mixin_constructors_with_default_values.dart.strong.expect
+++ b/pkg/front_end/testcases/general/mixin_constructors_with_default_values.dart.strong.expect
@@ -23,11 +23,31 @@
   constructor •({dynamic a = #C1, dynamic b = invalid-expression "The type 'T' is not a constant because it depends on a type parameter, only instantiated types are allowed."}) → self::C<self::C::T*>*
     : self::C::trace = "a: ${a}, b: ${b}", super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class M extends core::Object {
   synthetic constructor •() → self::M*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D = self::C<core::String*> with self::M {
   synthetic constructor •({dynamic a = #C1, dynamic b = #C2}) → self::D*
diff --git a/pkg/front_end/testcases/general/mixin_constructors_with_default_values.dart.strong.transformed.expect b/pkg/front_end/testcases/general/mixin_constructors_with_default_values.dart.strong.transformed.expect
index fe66274..db11d04 100644
--- a/pkg/front_end/testcases/general/mixin_constructors_with_default_values.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general/mixin_constructors_with_default_values.dart.strong.transformed.expect
@@ -23,16 +23,46 @@
   constructor •({dynamic a = #C1, dynamic b = invalid-expression "The type 'T' is not a constant because it depends on a type parameter, only instantiated types are allowed."}) → self::C<self::C::T*>*
     : self::C::trace = "a: ${a}, b: ${b}", super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class M extends core::Object {
   synthetic constructor •() → self::M*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D extends self::C<core::String*> implements self::M /*isEliminatedMixin*/  {
   synthetic constructor •({dynamic a = #C1, dynamic b = #C2}) → self::D*
     : super self::C::•(a: a, b: b)
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class E extends self::D {
   synthetic constructor •() → self::E*
@@ -43,6 +73,16 @@
   synthetic constructor •({dynamic a = #C1, dynamic b = #C3}) → self::_F&C&M*
     : super self::C::•(a: a, b: b)
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class F extends self::_F&C&M {
   synthetic constructor •() → self::F*
diff --git a/pkg/front_end/testcases/general/mixin_covariant.dart.outline.expect b/pkg/front_end/testcases/general/mixin_covariant.dart.outline.expect
index 926cb3e..e6641c6 100644
--- a/pkg/front_end/testcases/general/mixin_covariant.dart.outline.expect
+++ b/pkg/front_end/testcases/general/mixin_covariant.dart.outline.expect
@@ -14,17 +14,47 @@
     ;
   method method(covariant core::int* a, core::int* b) → dynamic
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class M2 extends core::Object {
   synthetic constructor •() → self::M2*
     ;
   method method(core::int* a, covariant core::int* b) → dynamic
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class _C&Object&M1 = core::Object with self::M1 /*isAnonymousMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::_C&Object&M1*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class _C&Object&M1&M2 = self::_C&Object&M1 with self::M2 /*isAnonymousMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::_C&Object&M1&M2*
@@ -46,6 +76,16 @@
     ;
   method named({covariant core::int* a, core::int* b, covariant core::int* c, core::int* d}) → void
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Inherited extends self::Direct {
   synthetic constructor •() → self::Inherited*
@@ -56,6 +96,16 @@
     ;
   method method(covariant core::int* a, core::int* b, core::int* c, core::int* d, core::int* e) → void
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Override2 extends self::Override1 {
   synthetic constructor •() → self::Override2*
@@ -74,60 +124,160 @@
     ;
   method method(covariant core::int* a, core::int* b, core::int* c, core::int* d, core::int* e) → void
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Implement2 extends core::Object {
   synthetic constructor •() → self::Implement2*
     ;
   method method(core::int* a, covariant core::int* b, core::int* c, core::int* d, core::int* e) → void
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Implement3 extends core::Object {
   synthetic constructor •() → self::Implement3*
     ;
   method method(core::int* a, core::int* b, covariant core::int* c, core::int* d, core::int* e) → void
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Implement4 extends core::Object implements self::Implement3 {
   synthetic constructor •() → self::Implement4*
     ;
   method method(core::int* a, core::int* b, covariant core::int* c, covariant core::int* d, core::int* e) → void
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Implement5 extends core::Object implements self::Implement1, self::Implement2, self::Implement4 {
   synthetic constructor •() → self::Implement5*
     ;
   method method(covariant core::int* a, covariant core::int* b, covariant core::int* c, covariant core::int* d, covariant core::int* e) → void
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Interface1 extends core::Object {
   synthetic constructor •() → self::Interface1*
     ;
   method method(covariant core::int* a, core::int* b, core::int* c, core::int* d, core::int* e) → void
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Interface2 extends core::Object {
   synthetic constructor •() → self::Interface2*
     ;
   method method(core::int* a, covariant core::int* b, core::int* c, core::int* d, core::int* e) → void
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Mixin1 extends core::Object {
   synthetic constructor •() → self::Mixin1*
     ;
   method method(core::int* a, core::int* b, covariant core::int* c, core::int* d, core::int* e) → void
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Mixin2 extends core::Object {
   synthetic constructor •() → self::Mixin2*
     ;
   method method(core::int* a, core::int* b, core::int* c, covariant core::int* d, core::int* e) → void
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Superclass extends core::Object {
   synthetic constructor •() → self::Superclass*
     ;
   method method(core::int* a, core::int* b, core::int* c, core::int* d, covariant core::int* e) → void
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class _Mixed&Superclass&Mixin1 = self::Superclass with self::Mixin1 /*isAnonymousMixin*/  {
   synthetic constructor •() → self::_Mixed&Superclass&Mixin1*
diff --git a/pkg/front_end/testcases/general/mixin_covariant.dart.strong.expect b/pkg/front_end/testcases/general/mixin_covariant.dart.strong.expect
index 903302c..10bb785 100644
--- a/pkg/front_end/testcases/general/mixin_covariant.dart.strong.expect
+++ b/pkg/front_end/testcases/general/mixin_covariant.dart.strong.expect
@@ -14,17 +14,47 @@
     : super core::Object::•()
     ;
   method method(covariant core::int* a, core::int* b) → dynamic {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class M2 extends core::Object {
   synthetic constructor •() → self::M2*
     : super core::Object::•()
     ;
   method method(core::int* a, covariant core::int* b) → dynamic {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class _C&Object&M1 = core::Object with self::M1 /*isAnonymousMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::_C&Object&M1*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class _C&Object&M1&M2 = self::_C&Object&M1 with self::M2 /*isAnonymousMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::_C&Object&M1&M2*
@@ -45,6 +75,16 @@
   method positional(covariant core::int* a, core::int* b, covariant core::int* c, core::int* d, core::int* e) → void {}
   method optional([covariant core::int* a = #C1, core::int* b = #C1, covariant core::int* c = #C1, core::int* d = #C1]) → void {}
   method named({covariant core::int* a = #C1, core::int* b = #C1, covariant core::int* c = #C1, core::int* d = #C1}) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Inherited extends self::Direct {
   synthetic constructor •() → self::Inherited*
@@ -56,6 +96,16 @@
     : super core::Object::•()
     ;
   method method(covariant core::int* a, core::int* b, core::int* c, core::int* d, core::int* e) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Override2 extends self::Override1 {
   synthetic constructor •() → self::Override2*
@@ -74,60 +124,160 @@
     : super core::Object::•()
     ;
   method method(covariant core::int* a, core::int* b, core::int* c, core::int* d, core::int* e) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Implement2 extends core::Object {
   synthetic constructor •() → self::Implement2*
     : super core::Object::•()
     ;
   method method(core::int* a, covariant core::int* b, core::int* c, core::int* d, core::int* e) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Implement3 extends core::Object {
   synthetic constructor •() → self::Implement3*
     : super core::Object::•()
     ;
   method method(core::int* a, core::int* b, covariant core::int* c, core::int* d, core::int* e) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Implement4 extends core::Object implements self::Implement3 {
   synthetic constructor •() → self::Implement4*
     : super core::Object::•()
     ;
   method method(core::int* a, core::int* b, covariant core::int* c, covariant core::int* d, core::int* e) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Implement5 extends core::Object implements self::Implement1, self::Implement2, self::Implement4 {
   synthetic constructor •() → self::Implement5*
     : super core::Object::•()
     ;
   method method(covariant core::int* a, covariant core::int* b, covariant core::int* c, covariant core::int* d, covariant core::int* e) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Interface1 extends core::Object {
   synthetic constructor •() → self::Interface1*
     : super core::Object::•()
     ;
   method method(covariant core::int* a, core::int* b, core::int* c, core::int* d, core::int* e) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Interface2 extends core::Object {
   synthetic constructor •() → self::Interface2*
     : super core::Object::•()
     ;
   method method(core::int* a, covariant core::int* b, core::int* c, core::int* d, core::int* e) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Mixin1 extends core::Object {
   synthetic constructor •() → self::Mixin1*
     : super core::Object::•()
     ;
   method method(core::int* a, core::int* b, covariant core::int* c, core::int* d, core::int* e) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Mixin2 extends core::Object {
   synthetic constructor •() → self::Mixin2*
     : super core::Object::•()
     ;
   method method(core::int* a, core::int* b, core::int* c, covariant core::int* d, core::int* e) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Superclass extends core::Object {
   synthetic constructor •() → self::Superclass*
     : super core::Object::•()
     ;
   method method(core::int* a, core::int* b, core::int* c, core::int* d, covariant core::int* e) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class _Mixed&Superclass&Mixin1 = self::Superclass with self::Mixin1 /*isAnonymousMixin*/  {
   synthetic constructor •() → self::_Mixed&Superclass&Mixin1*
diff --git a/pkg/front_end/testcases/general/mixin_covariant.dart.strong.transformed.expect b/pkg/front_end/testcases/general/mixin_covariant.dart.strong.transformed.expect
index baacb5a..88d8f1d 100644
--- a/pkg/front_end/testcases/general/mixin_covariant.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general/mixin_covariant.dart.strong.transformed.expect
@@ -14,17 +14,47 @@
     : super core::Object::•()
     ;
   method method(covariant core::int* a, core::int* b) → dynamic {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class M2 extends core::Object {
   synthetic constructor •() → self::M2*
     : super core::Object::•()
     ;
   method method(core::int* a, covariant core::int* b) → dynamic {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class _C&Object&M1 extends core::Object implements self::M1 /*isAnonymousMixin,isEliminatedMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::_C&Object&M1*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
   method method(covariant core::int* a, core::int* b) → dynamic {}
 }
 abstract class _C&Object&M1&M2 extends self::_C&Object&M1 implements self::M2 /*isAnonymousMixin,isEliminatedMixin,hasConstConstructor*/  {
@@ -32,6 +62,16 @@
     : super self::_C&Object&M1::•()
     ;
   method method(covariant core::int* a, covariant core::int* b) → dynamic {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C extends self::_C&Object&M1&M2 {
   synthetic constructor •() → self::C*
@@ -45,6 +85,16 @@
   method positional(covariant core::int* a, core::int* b, covariant core::int* c, core::int* d, core::int* e) → void {}
   method optional([covariant core::int* a = #C1, core::int* b = #C1, covariant core::int* c = #C1, core::int* d = #C1]) → void {}
   method named({covariant core::int* a = #C1, core::int* b = #C1, covariant core::int* c = #C1, core::int* d = #C1}) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Inherited extends self::Direct {
   synthetic constructor •() → self::Inherited*
@@ -56,6 +106,16 @@
     : super core::Object::•()
     ;
   method method(covariant core::int* a, core::int* b, core::int* c, core::int* d, core::int* e) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Override2 extends self::Override1 {
   synthetic constructor •() → self::Override2*
@@ -74,72 +134,192 @@
     : super core::Object::•()
     ;
   method method(covariant core::int* a, core::int* b, core::int* c, core::int* d, core::int* e) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Implement2 extends core::Object {
   synthetic constructor •() → self::Implement2*
     : super core::Object::•()
     ;
   method method(core::int* a, covariant core::int* b, core::int* c, core::int* d, core::int* e) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Implement3 extends core::Object {
   synthetic constructor •() → self::Implement3*
     : super core::Object::•()
     ;
   method method(core::int* a, core::int* b, covariant core::int* c, core::int* d, core::int* e) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Implement4 extends core::Object implements self::Implement3 {
   synthetic constructor •() → self::Implement4*
     : super core::Object::•()
     ;
   method method(core::int* a, core::int* b, covariant core::int* c, covariant core::int* d, core::int* e) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Implement5 extends core::Object implements self::Implement1, self::Implement2, self::Implement4 {
   synthetic constructor •() → self::Implement5*
     : super core::Object::•()
     ;
   method method(covariant core::int* a, covariant core::int* b, covariant core::int* c, covariant core::int* d, covariant core::int* e) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Interface1 extends core::Object {
   synthetic constructor •() → self::Interface1*
     : super core::Object::•()
     ;
   method method(covariant core::int* a, core::int* b, core::int* c, core::int* d, core::int* e) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Interface2 extends core::Object {
   synthetic constructor •() → self::Interface2*
     : super core::Object::•()
     ;
   method method(core::int* a, covariant core::int* b, core::int* c, core::int* d, core::int* e) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Mixin1 extends core::Object {
   synthetic constructor •() → self::Mixin1*
     : super core::Object::•()
     ;
   method method(core::int* a, core::int* b, covariant core::int* c, core::int* d, core::int* e) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Mixin2 extends core::Object {
   synthetic constructor •() → self::Mixin2*
     : super core::Object::•()
     ;
   method method(core::int* a, core::int* b, core::int* c, covariant core::int* d, core::int* e) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Superclass extends core::Object {
   synthetic constructor •() → self::Superclass*
     : super core::Object::•()
     ;
   method method(core::int* a, core::int* b, core::int* c, core::int* d, covariant core::int* e) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class _Mixed&Superclass&Mixin1 extends self::Superclass implements self::Mixin1 /*isAnonymousMixin,isEliminatedMixin*/  {
   synthetic constructor •() → self::_Mixed&Superclass&Mixin1*
     : super self::Superclass::•()
     ;
   method method(core::int* a, core::int* b, covariant core::int* c, core::int* d, covariant core::int* e) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class _Mixed&Superclass&Mixin1&Mixin2 extends self::_Mixed&Superclass&Mixin1 implements self::Mixin2 /*isAnonymousMixin,isEliminatedMixin*/  {
   synthetic constructor •() → self::_Mixed&Superclass&Mixin1&Mixin2*
     : super self::_Mixed&Superclass&Mixin1::•()
     ;
   method method(core::int* a, core::int* b, covariant core::int* c, covariant core::int* d, covariant core::int* e) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Mixed extends self::_Mixed&Superclass&Mixin1&Mixin2 implements self::Interface1, self::Interface2 {
   synthetic constructor •() → self::Mixed*
diff --git a/pkg/front_end/testcases/general/mixin_inherited_setter_for_mixed_in_field.dart.outline.expect b/pkg/front_end/testcases/general/mixin_inherited_setter_for_mixed_in_field.dart.outline.expect
index 3b41508..c3808a7 100644
--- a/pkg/front_end/testcases/general/mixin_inherited_setter_for_mixed_in_field.dart.outline.expect
+++ b/pkg/front_end/testcases/general/mixin_inherited_setter_for_mixed_in_field.dart.outline.expect
@@ -5,6 +5,16 @@
 class A extends core::Object {
   synthetic constructor •() → self::A*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C<T extends self::A* = self::A*> extends core::Object {
   generic-covariant-impl field self::C::T* _field;
@@ -12,6 +22,16 @@
     ;
   method foo(generic-covariant-impl self::C::T* x) → dynamic
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D extends self::C<self::B*> {
   synthetic constructor •() → self::D*
@@ -21,6 +41,16 @@
   synthetic constructor •() → self::_Foo&Object&C*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Foo extends self::_Foo&Object&C {
   synthetic constructor •() → self::Foo*
diff --git a/pkg/front_end/testcases/general/mixin_inherited_setter_for_mixed_in_field.dart.strong.expect b/pkg/front_end/testcases/general/mixin_inherited_setter_for_mixed_in_field.dart.strong.expect
index 467b3b5..53096f6 100644
--- a/pkg/front_end/testcases/general/mixin_inherited_setter_for_mixed_in_field.dart.strong.expect
+++ b/pkg/front_end/testcases/general/mixin_inherited_setter_for_mixed_in_field.dart.strong.expect
@@ -6,6 +6,16 @@
   synthetic constructor •() → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C<T extends self::A* = self::A*> extends core::Object {
   generic-covariant-impl field self::C::T* _field = null;
@@ -15,6 +25,16 @@
   method foo(generic-covariant-impl self::C::T* x) → dynamic {
     this.{self::C::_field} = x;
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D extends self::C<self::B*> {
   synthetic constructor •() → self::D*
@@ -25,6 +45,16 @@
   synthetic constructor •() → self::_Foo&Object&C*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Foo extends self::_Foo&Object&C {
   synthetic constructor •() → self::Foo*
diff --git a/pkg/front_end/testcases/general/mixin_inherited_setter_for_mixed_in_field.dart.strong.transformed.expect b/pkg/front_end/testcases/general/mixin_inherited_setter_for_mixed_in_field.dart.strong.transformed.expect
index 6b9150f..9dd9137 100644
--- a/pkg/front_end/testcases/general/mixin_inherited_setter_for_mixed_in_field.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general/mixin_inherited_setter_for_mixed_in_field.dart.strong.transformed.expect
@@ -6,6 +6,16 @@
   synthetic constructor •() → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C<T extends self::A* = self::A*> extends core::Object {
   generic-covariant-impl field self::C::T* _field = null;
@@ -15,6 +25,16 @@
   method foo(generic-covariant-impl self::C::T* x) → dynamic {
     this.{self::C::_field} = x;
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D extends self::C<self::B*> {
   synthetic constructor •() → self::D*
@@ -26,6 +46,16 @@
   synthetic constructor •() → self::_Foo&Object&C*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
   method foo(generic-covariant-impl self::B* x) → dynamic {
     this.{self::C::_field} = x;
   }
diff --git a/pkg/front_end/testcases/general/mixin_interface_conflict.dart.outline.expect b/pkg/front_end/testcases/general/mixin_interface_conflict.dart.outline.expect
index c48e36c..4e7782e 100644
--- a/pkg/front_end/testcases/general/mixin_interface_conflict.dart.outline.expect
+++ b/pkg/front_end/testcases/general/mixin_interface_conflict.dart.outline.expect
@@ -21,16 +21,46 @@
     ;
   get n() → core::int*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C extends core::Object {
   synthetic constructor •() → self::C*
     ;
   get n() → core::double*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class _M&B&C extends core::Object implements self::B, self::C /*isAnonymousMixin*/  {
   synthetic constructor •() → self::_M&B&C*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class M extends self::_M&B&C /*isMixinDeclaration*/  {
 }
diff --git a/pkg/front_end/testcases/general/mixin_interface_conflict.dart.strong.expect b/pkg/front_end/testcases/general/mixin_interface_conflict.dart.strong.expect
index 57da879..8ea014f 100644
--- a/pkg/front_end/testcases/general/mixin_interface_conflict.dart.strong.expect
+++ b/pkg/front_end/testcases/general/mixin_interface_conflict.dart.strong.expect
@@ -22,6 +22,16 @@
     ;
   get n() → core::int*
     return 1;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C extends core::Object {
   synthetic constructor •() → self::C*
@@ -29,11 +39,31 @@
     ;
   get n() → core::double*
     return 2.0;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class _M&B&C extends core::Object implements self::B, self::C /*isAnonymousMixin*/  {
   synthetic constructor •() → self::_M&B&C*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class M extends self::_M&B&C /*isMixinDeclaration*/  {
 }
diff --git a/pkg/front_end/testcases/general/mixin_interface_conflict.dart.strong.transformed.expect b/pkg/front_end/testcases/general/mixin_interface_conflict.dart.strong.transformed.expect
index 57da879..8ea014f 100644
--- a/pkg/front_end/testcases/general/mixin_interface_conflict.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general/mixin_interface_conflict.dart.strong.transformed.expect
@@ -22,6 +22,16 @@
     ;
   get n() → core::int*
     return 1;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C extends core::Object {
   synthetic constructor •() → self::C*
@@ -29,11 +39,31 @@
     ;
   get n() → core::double*
     return 2.0;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class _M&B&C extends core::Object implements self::B, self::C /*isAnonymousMixin*/  {
   synthetic constructor •() → self::_M&B&C*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class M extends self::_M&B&C /*isMixinDeclaration*/  {
 }
diff --git a/pkg/front_end/testcases/general/mixin_super_repeated.dart.outline.expect b/pkg/front_end/testcases/general/mixin_super_repeated.dart.outline.expect
index 13e9d25..b4b8487 100644
--- a/pkg/front_end/testcases/general/mixin_super_repeated.dart.outline.expect
+++ b/pkg/front_end/testcases/general/mixin_super_repeated.dart.outline.expect
@@ -6,6 +6,16 @@
   field dynamic m;
   synthetic constructor •() → self::M*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class N extends self::M {
   synthetic constructor •() → self::N*
@@ -18,6 +28,16 @@
 class S extends core::Object {
   synthetic constructor •() → self::S*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class _Named&S&M = self::S with self::M /*isAnonymousMixin*/  {
   synthetic constructor •() → self::_Named&S&M*
diff --git a/pkg/front_end/testcases/general/mixin_super_repeated.dart.strong.expect b/pkg/front_end/testcases/general/mixin_super_repeated.dart.strong.expect
index 085e258..074e61a 100644
--- a/pkg/front_end/testcases/general/mixin_super_repeated.dart.strong.expect
+++ b/pkg/front_end/testcases/general/mixin_super_repeated.dart.strong.expect
@@ -7,6 +7,16 @@
   synthetic constructor •() → self::M*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class N extends self::M {
   synthetic constructor •() → self::N*
@@ -22,6 +32,16 @@
   synthetic constructor •() → self::S*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class _Named&S&M = self::S with self::M /*isAnonymousMixin*/  {
   synthetic constructor •() → self::_Named&S&M*
diff --git a/pkg/front_end/testcases/general/mixin_super_repeated.dart.strong.transformed.expect b/pkg/front_end/testcases/general/mixin_super_repeated.dart.strong.transformed.expect
index ad78013..7190023 100644
--- a/pkg/front_end/testcases/general/mixin_super_repeated.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general/mixin_super_repeated.dart.strong.transformed.expect
@@ -7,6 +7,16 @@
   synthetic constructor •() → self::M*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class N extends self::M {
   synthetic constructor •() → self::N*
@@ -22,12 +32,32 @@
   synthetic constructor •() → self::S*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class _Named&S&M extends self::S implements self::M /*isAnonymousMixin,isEliminatedMixin*/  {
   field dynamic m = null;
   synthetic constructor •() → self::_Named&S&M*
     : super self::S::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class _Named&S&M&N extends self::_Named&S&M implements self::N /*isAnonymousMixin,isEliminatedMixin*/  {
   synthetic constructor •() → self::_Named&S&M&N*
@@ -44,6 +74,16 @@
   synthetic constructor •() → self::Named*
     : super self::_Named&S&M&N::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   self::Named* named = new self::Named::•();
diff --git a/pkg/front_end/testcases/general/mixin_with_static_member.dart.outline.expect b/pkg/front_end/testcases/general/mixin_with_static_member.dart.outline.expect
index f982247..2676d25 100644
--- a/pkg/front_end/testcases/general/mixin_with_static_member.dart.outline.expect
+++ b/pkg/front_end/testcases/general/mixin_with_static_member.dart.outline.expect
@@ -15,12 +15,32 @@
   final field core::Object* m;
   synthetic constructor •() → self::B*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class M extends core::Object {
   synthetic constructor •() → self::M*
     ;
   static method m() → core::Object*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/general/mixin_with_static_member.dart.strong.expect b/pkg/front_end/testcases/general/mixin_with_static_member.dart.strong.expect
index 85e498d..5429ab0 100644
--- a/pkg/front_end/testcases/general/mixin_with_static_member.dart.strong.expect
+++ b/pkg/front_end/testcases/general/mixin_with_static_member.dart.strong.expect
@@ -17,6 +17,16 @@
   synthetic constructor •() → self::B*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class M extends core::Object {
   synthetic constructor •() → self::M*
@@ -24,6 +34,16 @@
     ;
   static method m() → core::Object*
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   new self::A::•();
diff --git a/pkg/front_end/testcases/general/mixin_with_static_member.dart.strong.transformed.expect b/pkg/front_end/testcases/general/mixin_with_static_member.dart.strong.transformed.expect
index b9faaa3..6c86cce 100644
--- a/pkg/front_end/testcases/general/mixin_with_static_member.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general/mixin_with_static_member.dart.strong.transformed.expect
@@ -8,6 +8,16 @@
     ;
   static method m() → core::Object*
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class A extends self::_A&B&M {
   synthetic constructor •() → self::A*
@@ -19,6 +29,16 @@
   synthetic constructor •() → self::B*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class M extends core::Object {
   synthetic constructor •() → self::M*
@@ -26,6 +46,16 @@
     ;
   static method m() → core::Object*
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   new self::A::•();
diff --git a/pkg/front_end/testcases/general/named_function_scope.dart.outline.expect b/pkg/front_end/testcases/general/named_function_scope.dart.outline.expect
index c5ead68..8eb9d2e 100644
--- a/pkg/front_end/testcases/general/named_function_scope.dart.outline.expect
+++ b/pkg/front_end/testcases/general/named_function_scope.dart.outline.expect
@@ -5,10 +5,30 @@
 class T extends core::Object {
   synthetic constructor •() → self::T*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class V extends core::Object {
   synthetic constructor •() → self::V*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method test() → dynamic
   ;
diff --git a/pkg/front_end/testcases/general/named_function_scope.dart.strong.expect b/pkg/front_end/testcases/general/named_function_scope.dart.strong.expect
index f5c5171..8af7971 100644
--- a/pkg/front_end/testcases/general/named_function_scope.dart.strong.expect
+++ b/pkg/front_end/testcases/general/named_function_scope.dart.strong.expect
@@ -88,11 +88,31 @@
   synthetic constructor •() → self::T*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class V extends core::Object {
   synthetic constructor •() → self::V*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method test() → dynamic {
   self::T* t;
diff --git a/pkg/front_end/testcases/general/named_function_scope.dart.strong.transformed.expect b/pkg/front_end/testcases/general/named_function_scope.dart.strong.transformed.expect
index f5c5171..8af7971 100644
--- a/pkg/front_end/testcases/general/named_function_scope.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general/named_function_scope.dart.strong.transformed.expect
@@ -88,11 +88,31 @@
   synthetic constructor •() → self::T*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class V extends core::Object {
   synthetic constructor •() → self::V*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method test() → dynamic {
   self::T* t;
diff --git a/pkg/front_end/testcases/general/named_parameters.dart.outline.expect b/pkg/front_end/testcases/general/named_parameters.dart.outline.expect
index a4a710f..45f4586 100644
--- a/pkg/front_end/testcases/general/named_parameters.dart.outline.expect
+++ b/pkg/front_end/testcases/general/named_parameters.dart.outline.expect
@@ -11,6 +11,16 @@
     ;
   method namedCallback(({alpha: core::String*, beta: core::int*}) →* dynamic callback) → dynamic
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Subclass extends self::Superclass {
   synthetic constructor •() → self::Subclass*
diff --git a/pkg/front_end/testcases/general/named_parameters.dart.strong.expect b/pkg/front_end/testcases/general/named_parameters.dart.strong.expect
index 3219f16..449da78 100644
--- a/pkg/front_end/testcases/general/named_parameters.dart.strong.expect
+++ b/pkg/front_end/testcases/general/named_parameters.dart.strong.expect
@@ -12,6 +12,16 @@
     callback.call(alpha: "one", beta: 2);
     callback.call(beta: 1, alpha: "two");
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Subclass extends self::Superclass {
   synthetic constructor •() → self::Subclass*
diff --git a/pkg/front_end/testcases/general/named_parameters.dart.strong.transformed.expect b/pkg/front_end/testcases/general/named_parameters.dart.strong.transformed.expect
index 3219f16..449da78 100644
--- a/pkg/front_end/testcases/general/named_parameters.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general/named_parameters.dart.strong.transformed.expect
@@ -12,6 +12,16 @@
     callback.call(alpha: "one", beta: 2);
     callback.call(beta: 1, alpha: "two");
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Subclass extends self::Superclass {
   synthetic constructor •() → self::Subclass*
diff --git a/pkg/front_end/testcases/general/native_as_name.dart.outline.expect b/pkg/front_end/testcases/general/native_as_name.dart.outline.expect
index b3af038..875bd02 100644
--- a/pkg/front_end/testcases/general/native_as_name.dart.outline.expect
+++ b/pkg/front_end/testcases/general/native_as_name.dart.outline.expect
@@ -6,17 +6,47 @@
   field core::String* native;
   constructor •() → self::W*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class X extends core::Object {
   synthetic constructor •() → self::X*
     ;
   method native() → core::String*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class Y1 extends core::Object {
   synthetic constructor •() → self::Y1*
     ;
   abstract get native() → core::String*;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Y2 extends self::Y1 {
   synthetic constructor •() → self::Y2*
@@ -31,6 +61,16 @@
     ;
   set native(core::String* s) → void
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/general/native_as_name.dart.strong.expect b/pkg/front_end/testcases/general/native_as_name.dart.strong.expect
index 9e20099..67f9f49 100644
--- a/pkg/front_end/testcases/general/native_as_name.dart.strong.expect
+++ b/pkg/front_end/testcases/general/native_as_name.dart.strong.expect
@@ -7,6 +7,16 @@
   constructor •() → self::W*
     : self::W::native = "field", super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class X extends core::Object {
   synthetic constructor •() → self::X*
@@ -14,12 +24,32 @@
     ;
   method native() → core::String*
     return "method";
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class Y1 extends core::Object {
   synthetic constructor •() → self::Y1*
     : super core::Object::•()
     ;
   abstract get native() → core::String*;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Y2 extends self::Y1 {
   synthetic constructor •() → self::Y2*
@@ -36,6 +66,16 @@
     ;
   set native(core::String* s) → void
     return this.{self::Z::f} = s;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   core::print(new self::W::•().{self::W::native});
diff --git a/pkg/front_end/testcases/general/native_as_name.dart.strong.transformed.expect b/pkg/front_end/testcases/general/native_as_name.dart.strong.transformed.expect
index 9e20099..67f9f49 100644
--- a/pkg/front_end/testcases/general/native_as_name.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general/native_as_name.dart.strong.transformed.expect
@@ -7,6 +7,16 @@
   constructor •() → self::W*
     : self::W::native = "field", super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class X extends core::Object {
   synthetic constructor •() → self::X*
@@ -14,12 +24,32 @@
     ;
   method native() → core::String*
     return "method";
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class Y1 extends core::Object {
   synthetic constructor •() → self::Y1*
     : super core::Object::•()
     ;
   abstract get native() → core::String*;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Y2 extends self::Y1 {
   synthetic constructor •() → self::Y2*
@@ -36,6 +66,16 @@
     ;
   set native(core::String* s) → void
     return this.{self::Z::f} = s;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   core::print(new self::W::•().{self::W::native});
diff --git a/pkg/front_end/testcases/general/nested_implicit_const_with_env_var.dart.outline.expect b/pkg/front_end/testcases/general/nested_implicit_const_with_env_var.dart.outline.expect
index f42f11f..9084f6d 100644
--- a/pkg/front_end/testcases/general/nested_implicit_const_with_env_var.dart.outline.expect
+++ b/pkg/front_end/testcases/general/nested_implicit_const_with_env_var.dart.outline.expect
@@ -7,18 +7,48 @@
   const constructor •(core::int* bar) → self::A*
     : self::A::bar = bar, super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends core::Object /*hasConstConstructor*/  {
   final field self::A* baz;
   const constructor •(self::A* baz) → self::B*
     : self::B::baz = baz, super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C extends core::Object {
   synthetic constructor •() → self::C*
     ;
   method fun() → dynamic
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static const field core::int* foo = const core::int::fromEnvironment("fisk");
 static method main() → dynamic
diff --git a/pkg/front_end/testcases/general/nested_implicit_const_with_env_var.dart.strong.expect b/pkg/front_end/testcases/general/nested_implicit_const_with_env_var.dart.strong.expect
index 5ebdcbd..529b7ad 100644
--- a/pkg/front_end/testcases/general/nested_implicit_const_with_env_var.dart.strong.expect
+++ b/pkg/front_end/testcases/general/nested_implicit_const_with_env_var.dart.strong.expect
@@ -7,12 +7,32 @@
   const constructor •(core::int* bar) → self::A*
     : self::A::bar = bar, super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends core::Object /*hasConstConstructor*/  {
   final field self::A* baz;
   const constructor •(self::A* baz) → self::B*
     : self::B::baz = baz, super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C extends core::Object {
   synthetic constructor •() → self::C*
@@ -21,6 +41,16 @@
   method fun() → dynamic {
     new self::B::•(new self::A::•(#C1));
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static const field core::int* foo = #C1;
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general/nested_implicit_const_with_env_var.dart.strong.transformed.expect b/pkg/front_end/testcases/general/nested_implicit_const_with_env_var.dart.strong.transformed.expect
index 5ebdcbd..529b7ad 100644
--- a/pkg/front_end/testcases/general/nested_implicit_const_with_env_var.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general/nested_implicit_const_with_env_var.dart.strong.transformed.expect
@@ -7,12 +7,32 @@
   const constructor •(core::int* bar) → self::A*
     : self::A::bar = bar, super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends core::Object /*hasConstConstructor*/  {
   final field self::A* baz;
   const constructor •(self::A* baz) → self::B*
     : self::B::baz = baz, super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C extends core::Object {
   synthetic constructor •() → self::C*
@@ -21,6 +41,16 @@
   method fun() → dynamic {
     new self::B::•(new self::A::•(#C1));
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static const field core::int* foo = #C1;
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general/nested_property_set.dart.outline.expect b/pkg/front_end/testcases/general/nested_property_set.dart.outline.expect
index 3417b90..de1db9d 100644
--- a/pkg/front_end/testcases/general/nested_property_set.dart.outline.expect
+++ b/pkg/front_end/testcases/general/nested_property_set.dart.outline.expect
@@ -6,16 +6,46 @@
   field core::num* field;
   synthetic constructor •() → self::NumField*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class IntField extends core::Object {
   field core::int* field;
   synthetic constructor •() → self::IntField*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class DoubleField extends core::Object {
   field core::double* field;
   synthetic constructor •() → self::DoubleField*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/general/nested_property_set.dart.strong.expect b/pkg/front_end/testcases/general/nested_property_set.dart.strong.expect
index 1660b62..7fb3f49 100644
--- a/pkg/front_end/testcases/general/nested_property_set.dart.strong.expect
+++ b/pkg/front_end/testcases/general/nested_property_set.dart.strong.expect
@@ -7,18 +7,48 @@
   synthetic constructor •() → self::NumField*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class IntField extends core::Object {
   field core::int* field = null;
   synthetic constructor •() → self::IntField*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class DoubleField extends core::Object {
   field core::double* field = null;
   synthetic constructor •() → self::DoubleField*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   self::IntField* intField1 = new self::IntField::•();
diff --git a/pkg/front_end/testcases/general/nested_property_set.dart.strong.transformed.expect b/pkg/front_end/testcases/general/nested_property_set.dart.strong.transformed.expect
index 1660b62..7fb3f49 100644
--- a/pkg/front_end/testcases/general/nested_property_set.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general/nested_property_set.dart.strong.transformed.expect
@@ -7,18 +7,48 @@
   synthetic constructor •() → self::NumField*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class IntField extends core::Object {
   field core::int* field = null;
   synthetic constructor •() → self::IntField*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class DoubleField extends core::Object {
   field core::double* field = null;
   synthetic constructor •() → self::DoubleField*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   self::IntField* intField1 = new self::IntField::•();
diff --git a/pkg/front_end/testcases/general/nested_variance.dart.outline.expect b/pkg/front_end/testcases/general/nested_variance.dart.outline.expect
index 5bfe24d..8dcbc62 100644
--- a/pkg/front_end/testcases/general/nested_variance.dart.outline.expect
+++ b/pkg/front_end/testcases/general/nested_variance.dart.outline.expect
@@ -18,58 +18,198 @@
 class Acov<X extends () →* self::Acov::Y* = () →* dynamic, Y extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::Acov<self::Acov::X*, self::Acov::Y*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Acon<X extends (self::Acon::Y*) →* dynamic = (core::Null?) →* dynamic, Y extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::Acon<self::Acon::X*, self::Acon::Y*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Ainv<X extends (self::Ainv::Y*) →* self::Ainv::Y* = (dynamic) →* dynamic, Y extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::Ainv<self::Ainv::X*, self::Ainv::Y*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class AcovBound<X extends () →* self::AcovBound::Y* = () →* core::num*, Y extends core::num* = core::num*> extends core::Object {
   synthetic constructor •() → self::AcovBound<self::AcovBound::X*, self::AcovBound::Y*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class AconBound<X extends (self::AconBound::Y*) →* dynamic = (core::Null?) →* dynamic, Y extends core::num* = core::num*> extends core::Object {
   synthetic constructor •() → self::AconBound<self::AconBound::X*, self::AconBound::Y*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class AinvBound<X extends (self::AinvBound::Y*) →* self::AinvBound::Y* = (core::num*) →* core::num*, Y extends core::num* = core::num*> extends core::Object {
   synthetic constructor •() → self::AinvBound<self::AinvBound::X*, self::AinvBound::Y*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class A<X extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::A<self::A::X*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class AcovCyclicBound<X extends () →* self::AcovCyclicBound::Y* = () →* self::A<dynamic>*, Y extends self::A<self::AcovCyclicBound::Y*>* = self::A<dynamic>*> extends core::Object {
   synthetic constructor •() → self::AcovCyclicBound<self::AcovCyclicBound::X*, self::AcovCyclicBound::Y*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class AconCyclicBound<X extends (self::AconCyclicBound::Y*) →* dynamic = (core::Null?) →* dynamic, Y extends self::A<self::AconCyclicBound::Y*>* = self::A<dynamic>*> extends core::Object {
   synthetic constructor •() → self::AconCyclicBound<self::AconCyclicBound::X*, self::AconCyclicBound::Y*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class AinvCyclicBound<X extends (self::AinvCyclicBound::Y*) →* self::AinvCyclicBound::Y* = (self::A<dynamic>*) →* self::A<dynamic>*, Y extends self::A<self::AinvCyclicBound::Y*>* = self::A<dynamic>*> extends core::Object {
   synthetic constructor •() → self::AinvCyclicBound<self::AinvCyclicBound::X*, self::AinvCyclicBound::Y*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class AcovCyclicCoBound<X extends () →* self::AcovCyclicCoBound::Y* = () →* (core::Null?) →* dynamic, Y extends (self::AcovCyclicCoBound::Y*) →* dynamic = (core::Null?) →* dynamic> extends core::Object {
   synthetic constructor •() → self::AcovCyclicCoBound<self::AcovCyclicCoBound::X*, self::AcovCyclicCoBound::Y*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class AconCyclicCoBound<X extends (self::AconCyclicCoBound::Y*) →* dynamic = (core::Null?) →* dynamic, Y extends (self::AconCyclicCoBound::Y*) →* dynamic = (core::Null?) →* dynamic> extends core::Object {
   synthetic constructor •() → self::AconCyclicCoBound<self::AconCyclicCoBound::X*, self::AconCyclicCoBound::Y*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class AinvCyclicCoBound<X extends (self::AinvCyclicCoBound::Y*) →* self::AinvCyclicCoBound::Y* = ((core::Null?) →* dynamic) →* (core::Null?) →* dynamic, Y extends (self::AinvCyclicCoBound::Y*) →* dynamic = (core::Null?) →* dynamic> extends core::Object {
   synthetic constructor •() → self::AinvCyclicCoBound<self::AinvCyclicCoBound::X*, self::AinvCyclicCoBound::Y*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B<X extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::B<self::B::X*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method toF<X extends core::Object* = dynamic>(self::toF::X* x) → <Y extends self::toF::X* = dynamic>() →* void
   ;
diff --git a/pkg/front_end/testcases/general/nested_variance.dart.strong.expect b/pkg/front_end/testcases/general/nested_variance.dart.strong.expect
index 8d2d71d..3f883c6 100644
--- a/pkg/front_end/testcases/general/nested_variance.dart.strong.expect
+++ b/pkg/front_end/testcases/general/nested_variance.dart.strong.expect
@@ -19,71 +19,211 @@
   synthetic constructor •() → self::Acov<self::Acov::X*, self::Acov::Y*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Acon<X extends (self::Acon::Y*) →* dynamic = (core::Null?) →* dynamic, Y extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::Acon<self::Acon::X*, self::Acon::Y*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Ainv<X extends (self::Ainv::Y*) →* self::Ainv::Y* = (dynamic) →* dynamic, Y extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::Ainv<self::Ainv::X*, self::Ainv::Y*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class AcovBound<X extends () →* self::AcovBound::Y* = () →* core::num*, Y extends core::num* = core::num*> extends core::Object {
   synthetic constructor •() → self::AcovBound<self::AcovBound::X*, self::AcovBound::Y*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class AconBound<X extends (self::AconBound::Y*) →* dynamic = (core::Null?) →* dynamic, Y extends core::num* = core::num*> extends core::Object {
   synthetic constructor •() → self::AconBound<self::AconBound::X*, self::AconBound::Y*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class AinvBound<X extends (self::AinvBound::Y*) →* self::AinvBound::Y* = (core::num*) →* core::num*, Y extends core::num* = core::num*> extends core::Object {
   synthetic constructor •() → self::AinvBound<self::AinvBound::X*, self::AinvBound::Y*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class A<X extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::A<self::A::X*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class AcovCyclicBound<X extends () →* self::AcovCyclicBound::Y* = () →* self::A<dynamic>*, Y extends self::A<self::AcovCyclicBound::Y*>* = self::A<dynamic>*> extends core::Object {
   synthetic constructor •() → self::AcovCyclicBound<self::AcovCyclicBound::X*, self::AcovCyclicBound::Y*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class AconCyclicBound<X extends (self::AconCyclicBound::Y*) →* dynamic = (core::Null?) →* dynamic, Y extends self::A<self::AconCyclicBound::Y*>* = self::A<dynamic>*> extends core::Object {
   synthetic constructor •() → self::AconCyclicBound<self::AconCyclicBound::X*, self::AconCyclicBound::Y*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class AinvCyclicBound<X extends (self::AinvCyclicBound::Y*) →* self::AinvCyclicBound::Y* = (self::A<dynamic>*) →* self::A<dynamic>*, Y extends self::A<self::AinvCyclicBound::Y*>* = self::A<dynamic>*> extends core::Object {
   synthetic constructor •() → self::AinvCyclicBound<self::AinvCyclicBound::X*, self::AinvCyclicBound::Y*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class AcovCyclicCoBound<X extends () →* self::AcovCyclicCoBound::Y* = () →* (core::Null?) →* dynamic, Y extends (self::AcovCyclicCoBound::Y*) →* dynamic = (core::Null?) →* dynamic> extends core::Object {
   synthetic constructor •() → self::AcovCyclicCoBound<self::AcovCyclicCoBound::X*, self::AcovCyclicCoBound::Y*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class AconCyclicCoBound<X extends (self::AconCyclicCoBound::Y*) →* dynamic = (core::Null?) →* dynamic, Y extends (self::AconCyclicCoBound::Y*) →* dynamic = (core::Null?) →* dynamic> extends core::Object {
   synthetic constructor •() → self::AconCyclicCoBound<self::AconCyclicCoBound::X*, self::AconCyclicCoBound::Y*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class AinvCyclicCoBound<X extends (self::AinvCyclicCoBound::Y*) →* self::AinvCyclicCoBound::Y* = ((core::Null?) →* dynamic) →* (core::Null?) →* dynamic, Y extends (self::AinvCyclicCoBound::Y*) →* dynamic = (core::Null?) →* dynamic> extends core::Object {
   synthetic constructor •() → self::AinvCyclicCoBound<self::AinvCyclicCoBound::X*, self::AinvCyclicCoBound::Y*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B<X extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::B<self::B::X*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method toF<X extends core::Object* = dynamic>(self::toF::X* x) → <Y extends self::toF::X* = dynamic>() →* void
   return null;
diff --git a/pkg/front_end/testcases/general/nested_variance.dart.strong.transformed.expect b/pkg/front_end/testcases/general/nested_variance.dart.strong.transformed.expect
index 8d2d71d..3f883c6 100644
--- a/pkg/front_end/testcases/general/nested_variance.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general/nested_variance.dart.strong.transformed.expect
@@ -19,71 +19,211 @@
   synthetic constructor •() → self::Acov<self::Acov::X*, self::Acov::Y*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Acon<X extends (self::Acon::Y*) →* dynamic = (core::Null?) →* dynamic, Y extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::Acon<self::Acon::X*, self::Acon::Y*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Ainv<X extends (self::Ainv::Y*) →* self::Ainv::Y* = (dynamic) →* dynamic, Y extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::Ainv<self::Ainv::X*, self::Ainv::Y*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class AcovBound<X extends () →* self::AcovBound::Y* = () →* core::num*, Y extends core::num* = core::num*> extends core::Object {
   synthetic constructor •() → self::AcovBound<self::AcovBound::X*, self::AcovBound::Y*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class AconBound<X extends (self::AconBound::Y*) →* dynamic = (core::Null?) →* dynamic, Y extends core::num* = core::num*> extends core::Object {
   synthetic constructor •() → self::AconBound<self::AconBound::X*, self::AconBound::Y*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class AinvBound<X extends (self::AinvBound::Y*) →* self::AinvBound::Y* = (core::num*) →* core::num*, Y extends core::num* = core::num*> extends core::Object {
   synthetic constructor •() → self::AinvBound<self::AinvBound::X*, self::AinvBound::Y*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class A<X extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::A<self::A::X*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class AcovCyclicBound<X extends () →* self::AcovCyclicBound::Y* = () →* self::A<dynamic>*, Y extends self::A<self::AcovCyclicBound::Y*>* = self::A<dynamic>*> extends core::Object {
   synthetic constructor •() → self::AcovCyclicBound<self::AcovCyclicBound::X*, self::AcovCyclicBound::Y*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class AconCyclicBound<X extends (self::AconCyclicBound::Y*) →* dynamic = (core::Null?) →* dynamic, Y extends self::A<self::AconCyclicBound::Y*>* = self::A<dynamic>*> extends core::Object {
   synthetic constructor •() → self::AconCyclicBound<self::AconCyclicBound::X*, self::AconCyclicBound::Y*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class AinvCyclicBound<X extends (self::AinvCyclicBound::Y*) →* self::AinvCyclicBound::Y* = (self::A<dynamic>*) →* self::A<dynamic>*, Y extends self::A<self::AinvCyclicBound::Y*>* = self::A<dynamic>*> extends core::Object {
   synthetic constructor •() → self::AinvCyclicBound<self::AinvCyclicBound::X*, self::AinvCyclicBound::Y*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class AcovCyclicCoBound<X extends () →* self::AcovCyclicCoBound::Y* = () →* (core::Null?) →* dynamic, Y extends (self::AcovCyclicCoBound::Y*) →* dynamic = (core::Null?) →* dynamic> extends core::Object {
   synthetic constructor •() → self::AcovCyclicCoBound<self::AcovCyclicCoBound::X*, self::AcovCyclicCoBound::Y*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class AconCyclicCoBound<X extends (self::AconCyclicCoBound::Y*) →* dynamic = (core::Null?) →* dynamic, Y extends (self::AconCyclicCoBound::Y*) →* dynamic = (core::Null?) →* dynamic> extends core::Object {
   synthetic constructor •() → self::AconCyclicCoBound<self::AconCyclicCoBound::X*, self::AconCyclicCoBound::Y*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class AinvCyclicCoBound<X extends (self::AinvCyclicCoBound::Y*) →* self::AinvCyclicCoBound::Y* = ((core::Null?) →* dynamic) →* (core::Null?) →* dynamic, Y extends (self::AinvCyclicCoBound::Y*) →* dynamic = (core::Null?) →* dynamic> extends core::Object {
   synthetic constructor •() → self::AinvCyclicCoBound<self::AinvCyclicCoBound::X*, self::AinvCyclicCoBound::Y*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B<X extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::B<self::B::X*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method toF<X extends core::Object* = dynamic>(self::toF::X* x) → <Y extends self::toF::X* = dynamic>() →* void
   return null;
diff --git a/pkg/front_end/testcases/general/no_such_method_private_setter.dart.outline.expect b/pkg/front_end/testcases/general/no_such_method_private_setter.dart.outline.expect
index fa9a400..492341c 100644
--- a/pkg/front_end/testcases/general/no_such_method_private_setter.dart.outline.expect
+++ b/pkg/front_end/testcases/general/no_such_method_private_setter.dart.outline.expect
@@ -8,10 +8,20 @@
 class Foo extends core::Object implements no_::Bar {
   synthetic constructor •() → self::Foo*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
   no-such-method-forwarder get /* from org-dartlang-testcase:///no_such_method_private_setter_lib.dart */ _x() → core::int*
-    return this.{core::Object::noSuchMethod}(new core::_InvocationMirror::_withType(#_x, 1, const <core::Type*>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{}))) as{TypeError,ForDynamic} core::int*;
+    return this.{self::Foo::noSuchMethod}(new core::_InvocationMirror::_withType(#_x, 1, const <core::Type*>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{}))) as{TypeError,ForDynamic} core::int*;
   no-such-method-forwarder set /* from org-dartlang-testcase:///no_such_method_private_setter_lib.dart */ _x(core::int* value) → void
-    return this.{core::Object::noSuchMethod}(new core::_InvocationMirror::_withType(#_x=, 2, const <core::Type*>[], core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{})));
+    return this.{self::Foo::noSuchMethod}(new core::_InvocationMirror::_withType(#_x=, 2, const <core::Type*>[], core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{})));
 }
 static method main() → dynamic
   ;
@@ -24,6 +34,16 @@
   field core::int* _x;
   synthetic constructor •() → no_::Bar*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method baz(no_::Bar* bar) → void
   ;
diff --git a/pkg/front_end/testcases/general/no_such_method_private_setter.dart.strong.expect b/pkg/front_end/testcases/general/no_such_method_private_setter.dart.strong.expect
index b80b9e5..5c53040 100644
--- a/pkg/front_end/testcases/general/no_such_method_private_setter.dart.strong.expect
+++ b/pkg/front_end/testcases/general/no_such_method_private_setter.dart.strong.expect
@@ -9,10 +9,20 @@
   synthetic constructor •() → self::Foo*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
   no-such-method-forwarder get /* from org-dartlang-testcase:///no_such_method_private_setter_lib.dart */ _x() → core::int*
-    return this.{core::Object::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 1, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))) as{TypeError,ForDynamic} core::int*;
+    return this.{self::Foo::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 1, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))) as{TypeError,ForDynamic} core::int*;
   no-such-method-forwarder set /* from org-dartlang-testcase:///no_such_method_private_setter_lib.dart */ _x(core::int* value) → void
-    return this.{core::Object::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 2, #C2, core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
+    return this.{self::Foo::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 2, #C2, core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
 }
 static method main() → dynamic {
   no_::baz(new self::Foo::•());
@@ -27,6 +37,16 @@
   synthetic constructor •() → no_::Bar*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method baz(no_::Bar* bar) → void {
   return;
diff --git a/pkg/front_end/testcases/general/no_such_method_private_setter.dart.strong.transformed.expect b/pkg/front_end/testcases/general/no_such_method_private_setter.dart.strong.transformed.expect
index b80b9e5..5c53040 100644
--- a/pkg/front_end/testcases/general/no_such_method_private_setter.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general/no_such_method_private_setter.dart.strong.transformed.expect
@@ -9,10 +9,20 @@
   synthetic constructor •() → self::Foo*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
   no-such-method-forwarder get /* from org-dartlang-testcase:///no_such_method_private_setter_lib.dart */ _x() → core::int*
-    return this.{core::Object::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 1, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))) as{TypeError,ForDynamic} core::int*;
+    return this.{self::Foo::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 1, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))) as{TypeError,ForDynamic} core::int*;
   no-such-method-forwarder set /* from org-dartlang-testcase:///no_such_method_private_setter_lib.dart */ _x(core::int* value) → void
-    return this.{core::Object::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 2, #C2, core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
+    return this.{self::Foo::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 2, #C2, core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
 }
 static method main() → dynamic {
   no_::baz(new self::Foo::•());
@@ -27,6 +37,16 @@
   synthetic constructor •() → no_::Bar*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method baz(no_::Bar* bar) → void {
   return;
diff --git a/pkg/front_end/testcases/general/non_covariant_checks.dart.outline.expect b/pkg/front_end/testcases/general/non_covariant_checks.dart.outline.expect
index c8bde3f..c0b99d7 100644
--- a/pkg/front_end/testcases/general/non_covariant_checks.dart.outline.expect
+++ b/pkg/front_end/testcases/general/non_covariant_checks.dart.outline.expect
@@ -110,6 +110,16 @@
     ;
   method method15(generic-covariant-impl (<S extends self::C::T* = dynamic>() →* S*) →* void value) → void
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/general/non_covariant_checks.dart.strong.expect b/pkg/front_end/testcases/general/non_covariant_checks.dart.strong.expect
index 6116ad1..05af068 100644
--- a/pkg/front_end/testcases/general/non_covariant_checks.dart.strong.expect
+++ b/pkg/front_end/testcases/general/non_covariant_checks.dart.strong.expect
@@ -141,6 +141,16 @@
   method method15(generic-covariant-impl (<S extends self::C::T* = dynamic>() →* S*) →* void value) → void {
     this.{self::C::field15} = value;
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   self::C<core::num*>* c = new self::C::•<core::int*>(0);
diff --git a/pkg/front_end/testcases/general/non_covariant_checks.dart.strong.transformed.expect b/pkg/front_end/testcases/general/non_covariant_checks.dart.strong.transformed.expect
index 6116ad1..05af068 100644
--- a/pkg/front_end/testcases/general/non_covariant_checks.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general/non_covariant_checks.dart.strong.transformed.expect
@@ -141,6 +141,16 @@
   method method15(generic-covariant-impl (<S extends self::C::T* = dynamic>() →* S*) →* void value) → void {
     this.{self::C::field15} = value;
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   self::C<core::num*>* c = new self::C::•<core::int*>(0);
diff --git a/pkg/front_end/testcases/general/null_aware.dart.outline.expect b/pkg/front_end/testcases/general/null_aware.dart.outline.expect
index e7c162d..15c528d 100644
--- a/pkg/front_end/testcases/general/null_aware.dart.outline.expect
+++ b/pkg/front_end/testcases/general/null_aware.dart.outline.expect
@@ -7,6 +7,16 @@
   static field core::int* staticField;
   synthetic constructor •() → self::Foo*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/general/null_aware.dart.strong.expect b/pkg/front_end/testcases/general/null_aware.dart.strong.expect
index d2551c7..9d1625e 100644
--- a/pkg/front_end/testcases/general/null_aware.dart.strong.expect
+++ b/pkg/front_end/testcases/general/null_aware.dart.strong.expect
@@ -8,14 +8,24 @@
   synthetic constructor •() → self::Foo*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   self::Foo* foo = new self::Foo::•();
-  let final self::Foo* #t1 = foo in #t1.{core::Object::==}(null) ?{core::int*} null : #t1.{self::Foo::field} = 5;
+  let final self::Foo* #t1 = foo in #t1.{self::Foo::==}(null) ?{core::int*} null : #t1.{self::Foo::field} = 5;
   self::Foo::staticField = 5;
   let final self::Foo* #t2 = foo in #t2.{self::Foo::field}.{core::num::==}(null) ?{core::int*} #t2.{self::Foo::field} = 5 : null;
   self::Foo::staticField.{core::num::==}(null) ?{core::int*} self::Foo::staticField = 5 : null;
-  let final self::Foo* #t3 = foo in #t3.{core::Object::==}(null) ?{core::int*} null : #t3.{self::Foo::field}.{core::num::==}(null) ?{core::int*} #t3.{self::Foo::field} = 5 : null;
+  let final self::Foo* #t3 = foo in #t3.{self::Foo::==}(null) ?{core::int*} null : #t3.{self::Foo::field}.{core::num::==}(null) ?{core::int*} #t3.{self::Foo::field} = 5 : null;
   self::Foo::staticField.{core::num::==}(null) ?{core::int*} self::Foo::staticField = 5 : null;
   core::int* intValue = let final core::int* #t4 = foo.{self::Foo::field} in #t4.{core::num::==}(null) ?{core::int*} 6 : #t4;
   core::num* numValue = let final core::int* #t5 = foo.{self::Foo::field} in #t5.{core::num::==}(null) ?{core::num*} 4.5 : #t5;
diff --git a/pkg/front_end/testcases/general/null_aware.dart.strong.transformed.expect b/pkg/front_end/testcases/general/null_aware.dart.strong.transformed.expect
index d2551c7..9d1625e 100644
--- a/pkg/front_end/testcases/general/null_aware.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general/null_aware.dart.strong.transformed.expect
@@ -8,14 +8,24 @@
   synthetic constructor •() → self::Foo*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   self::Foo* foo = new self::Foo::•();
-  let final self::Foo* #t1 = foo in #t1.{core::Object::==}(null) ?{core::int*} null : #t1.{self::Foo::field} = 5;
+  let final self::Foo* #t1 = foo in #t1.{self::Foo::==}(null) ?{core::int*} null : #t1.{self::Foo::field} = 5;
   self::Foo::staticField = 5;
   let final self::Foo* #t2 = foo in #t2.{self::Foo::field}.{core::num::==}(null) ?{core::int*} #t2.{self::Foo::field} = 5 : null;
   self::Foo::staticField.{core::num::==}(null) ?{core::int*} self::Foo::staticField = 5 : null;
-  let final self::Foo* #t3 = foo in #t3.{core::Object::==}(null) ?{core::int*} null : #t3.{self::Foo::field}.{core::num::==}(null) ?{core::int*} #t3.{self::Foo::field} = 5 : null;
+  let final self::Foo* #t3 = foo in #t3.{self::Foo::==}(null) ?{core::int*} null : #t3.{self::Foo::field}.{core::num::==}(null) ?{core::int*} #t3.{self::Foo::field} = 5 : null;
   self::Foo::staticField.{core::num::==}(null) ?{core::int*} self::Foo::staticField = 5 : null;
   core::int* intValue = let final core::int* #t4 = foo.{self::Foo::field} in #t4.{core::num::==}(null) ?{core::int*} 6 : #t4;
   core::num* numValue = let final core::int* #t5 = foo.{self::Foo::field} in #t5.{core::num::==}(null) ?{core::num*} 4.5 : #t5;
diff --git a/pkg/front_end/testcases/general/null_aware_for_in.dart.outline.expect b/pkg/front_end/testcases/general/null_aware_for_in.dart.outline.expect
index b23757d..a4a4c82 100644
--- a/pkg/front_end/testcases/general/null_aware_for_in.dart.outline.expect
+++ b/pkg/front_end/testcases/general/null_aware_for_in.dart.outline.expect
@@ -5,6 +5,16 @@
 class Class extends core::Object {
   synthetic constructor •() → self::Class*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/general/null_aware_for_in.dart.strong.expect b/pkg/front_end/testcases/general/null_aware_for_in.dart.strong.expect
index 5d3f769..2c53a57 100644
--- a/pkg/front_end/testcases/general/null_aware_for_in.dart.strong.expect
+++ b/pkg/front_end/testcases/general/null_aware_for_in.dart.strong.expect
@@ -6,6 +6,16 @@
   synthetic constructor •() → self::Class*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   dynamic o;
diff --git a/pkg/front_end/testcases/general/null_aware_for_in.dart.strong.transformed.expect b/pkg/front_end/testcases/general/null_aware_for_in.dart.strong.transformed.expect
index 10d831b..41bcd81 100644
--- a/pkg/front_end/testcases/general/null_aware_for_in.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general/null_aware_for_in.dart.strong.transformed.expect
@@ -6,6 +6,16 @@
   synthetic constructor •() → self::Class*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   dynamic o;
diff --git a/pkg/front_end/testcases/general/null_aware_postfix.dart.outline.expect b/pkg/front_end/testcases/general/null_aware_postfix.dart.outline.expect
index 89edf56..5d90cb1 100644
--- a/pkg/front_end/testcases/general/null_aware_postfix.dart.outline.expect
+++ b/pkg/front_end/testcases/general/null_aware_postfix.dart.outline.expect
@@ -6,12 +6,32 @@
   field self::B* b;
   synthetic constructor •() → self::A*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends core::Object {
   synthetic constructor •() → self::B*
     ;
   operator +(core::int* i) → self::C*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C extends self::B {
   synthetic constructor •() → self::C*
diff --git a/pkg/front_end/testcases/general/null_aware_postfix.dart.strong.expect b/pkg/front_end/testcases/general/null_aware_postfix.dart.strong.expect
index 594d81b..4163d6a 100644
--- a/pkg/front_end/testcases/general/null_aware_postfix.dart.strong.expect
+++ b/pkg/front_end/testcases/general/null_aware_postfix.dart.strong.expect
@@ -7,6 +7,16 @@
   synthetic constructor •() → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends core::Object {
   synthetic constructor •() → self::B*
@@ -14,6 +24,16 @@
     ;
   operator +(core::int* i) → self::C*
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C extends self::B {
   synthetic constructor •() → self::C*
@@ -22,6 +42,6 @@
 }
 static method main() → dynamic {
   self::A* a;
-  let final self::A* #t1 = a in #t1.{core::Object::==}(null) ?{self::B*} null : #t1.{self::A::b} = #t1.{self::A::b}.{self::B::+}(1);
-  self::C* c = (let final self::A* #t2 = a in #t2.{core::Object::==}(null) ?{self::B*} null : let final self::B* #t3 = #t2.{self::A::b} in let final void #t4 = #t2.{self::A::b} = #t3.{self::B::+}(1) in #t3) as{TypeError} self::C*;
+  let final self::A* #t1 = a in #t1.{self::A::==}(null) ?{self::B*} null : #t1.{self::A::b} = #t1.{self::A::b}.{self::B::+}(1);
+  self::C* c = (let final self::A* #t2 = a in #t2.{self::A::==}(null) ?{self::B*} null : let final self::B* #t3 = #t2.{self::A::b} in let final void #t4 = #t2.{self::A::b} = #t3.{self::B::+}(1) in #t3) as{TypeError} self::C*;
 }
diff --git a/pkg/front_end/testcases/general/null_aware_postfix.dart.strong.transformed.expect b/pkg/front_end/testcases/general/null_aware_postfix.dart.strong.transformed.expect
index 594d81b..4163d6a 100644
--- a/pkg/front_end/testcases/general/null_aware_postfix.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general/null_aware_postfix.dart.strong.transformed.expect
@@ -7,6 +7,16 @@
   synthetic constructor •() → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends core::Object {
   synthetic constructor •() → self::B*
@@ -14,6 +24,16 @@
     ;
   operator +(core::int* i) → self::C*
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C extends self::B {
   synthetic constructor •() → self::C*
@@ -22,6 +42,6 @@
 }
 static method main() → dynamic {
   self::A* a;
-  let final self::A* #t1 = a in #t1.{core::Object::==}(null) ?{self::B*} null : #t1.{self::A::b} = #t1.{self::A::b}.{self::B::+}(1);
-  self::C* c = (let final self::A* #t2 = a in #t2.{core::Object::==}(null) ?{self::B*} null : let final self::B* #t3 = #t2.{self::A::b} in let final void #t4 = #t2.{self::A::b} = #t3.{self::B::+}(1) in #t3) as{TypeError} self::C*;
+  let final self::A* #t1 = a in #t1.{self::A::==}(null) ?{self::B*} null : #t1.{self::A::b} = #t1.{self::A::b}.{self::B::+}(1);
+  self::C* c = (let final self::A* #t2 = a in #t2.{self::A::==}(null) ?{self::B*} null : let final self::B* #t3 = #t2.{self::A::b} in let final void #t4 = #t2.{self::A::b} = #t3.{self::B::+}(1) in #t3) as{TypeError} self::C*;
 }
diff --git a/pkg/front_end/testcases/general/null_aware_spread.dart.strong.transformed.expect b/pkg/front_end/testcases/general/null_aware_spread.dart.strong.transformed.expect
index c75c586..d895697 100644
--- a/pkg/front_end/testcases/general/null_aware_spread.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general/null_aware_spread.dart.strong.transformed.expect
@@ -37,7 +37,7 @@
     #t7.{core::Map::[]=}(0, "foo");
     final core::Map<core::int*, core::String*>* #t8 = map;
     if(!#t8.{core::Object::==}(null)) {
-      core::Iterator<core::MapEntry<core::int*, core::String*>*>* :sync-for-iterator = #t8.{core::Map::entries}.{core::Iterable::iterator};
+      core::Iterator<core::MapEntry<core::int*, core::String*>>* :sync-for-iterator = #t8.{core::Map::entries}.{core::Iterable::iterator};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         final core::MapEntry<core::int*, core::String*>* #t9 = :sync-for-iterator.{core::Iterator::current};
         #t7.{core::Map::[]=}(#t9.{core::MapEntry::key}, #t9.{core::MapEntry::value});
diff --git a/pkg/front_end/testcases/general/operator_method_not_found.dart.outline.expect b/pkg/front_end/testcases/general/operator_method_not_found.dart.outline.expect
index 85e8d34..db94753 100644
--- a/pkg/front_end/testcases/general/operator_method_not_found.dart.outline.expect
+++ b/pkg/front_end/testcases/general/operator_method_not_found.dart.outline.expect
@@ -5,6 +5,16 @@
 class Foo extends core::Object {
   synthetic constructor •() → self::Foo*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/general/operator_method_not_found.dart.strong.expect b/pkg/front_end/testcases/general/operator_method_not_found.dart.strong.expect
index be431dd..610ba2a 100644
--- a/pkg/front_end/testcases/general/operator_method_not_found.dart.strong.expect
+++ b/pkg/front_end/testcases/general/operator_method_not_found.dart.strong.expect
@@ -196,6 +196,16 @@
   synthetic constructor •() → self::Foo*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   self::Foo* foo = new self::Foo::•();
@@ -219,7 +229,7 @@
 Try correcting the operator to an existing operator, or defining a '>=' operator.
   print(foo >= 2);
             ^^");
-  core::print(foo.{core::Object::==}(2));
+  core::print(foo.{self::Foo::==}(2));
   core::print(invalid-expression "pkg/front_end/testcases/general/operator_method_not_found.dart:17:13: Error: The operator '-' isn't defined for the class 'Foo'.
  - 'Foo' is from 'pkg/front_end/testcases/general/operator_method_not_found.dart'.
 Try correcting the operator to an existing operator, or defining a '-' operator.
diff --git a/pkg/front_end/testcases/general/operator_method_not_found.dart.strong.transformed.expect b/pkg/front_end/testcases/general/operator_method_not_found.dart.strong.transformed.expect
index be431dd..610ba2a 100644
--- a/pkg/front_end/testcases/general/operator_method_not_found.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general/operator_method_not_found.dart.strong.transformed.expect
@@ -196,6 +196,16 @@
   synthetic constructor •() → self::Foo*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   self::Foo* foo = new self::Foo::•();
@@ -219,7 +229,7 @@
 Try correcting the operator to an existing operator, or defining a '>=' operator.
   print(foo >= 2);
             ^^");
-  core::print(foo.{core::Object::==}(2));
+  core::print(foo.{self::Foo::==}(2));
   core::print(invalid-expression "pkg/front_end/testcases/general/operator_method_not_found.dart:17:13: Error: The operator '-' isn't defined for the class 'Foo'.
  - 'Foo' is from 'pkg/front_end/testcases/general/operator_method_not_found.dart'.
 Try correcting the operator to an existing operator, or defining a '-' operator.
diff --git a/pkg/front_end/testcases/general/operators.dart.outline.expect b/pkg/front_end/testcases/general/operators.dart.outline.expect
index 5f34aeb..5f1f6f7 100644
--- a/pkg/front_end/testcases/general/operators.dart.outline.expect
+++ b/pkg/front_end/testcases/general/operators.dart.outline.expect
@@ -45,6 +45,15 @@
     ;
   operator unary-() → dynamic
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main(dynamic arguments) → dynamic
   ;
diff --git a/pkg/front_end/testcases/general/operators.dart.strong.expect b/pkg/front_end/testcases/general/operators.dart.strong.expect
index 79ceba2..e3c3482 100644
--- a/pkg/front_end/testcases/general/operators.dart.strong.expect
+++ b/pkg/front_end/testcases/general/operators.dart.strong.expect
@@ -45,6 +45,15 @@
     return null;
   operator unary-() → dynamic
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main(dynamic arguments) → dynamic {
   self::Operators* a = new self::Operators::•();
diff --git a/pkg/front_end/testcases/general/operators.dart.strong.transformed.expect b/pkg/front_end/testcases/general/operators.dart.strong.transformed.expect
index 79ceba2..e3c3482 100644
--- a/pkg/front_end/testcases/general/operators.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general/operators.dart.strong.transformed.expect
@@ -45,6 +45,15 @@
     return null;
   operator unary-() → dynamic
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main(dynamic arguments) → dynamic {
   self::Operators* a = new self::Operators::•();
diff --git a/pkg/front_end/testcases/general/optional.dart.outline.expect b/pkg/front_end/testcases/general/optional.dart.outline.expect
index 5bfe7d5..fc765ff 100644
--- a/pkg/front_end/testcases/general/optional.dart.outline.expect
+++ b/pkg/front_end/testcases/general/optional.dart.outline.expect
@@ -7,17 +7,47 @@
     ;
   method method(dynamic x, [dynamic y, dynamic z]) → dynamic
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class External extends core::Object {
   synthetic constructor •() → self::External*
     ;
   abstract method externalMethod(core::int* x, [core::int* y, core::int* z]) → core::String*;
   abstract method listen(self::Listener* listener) → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class Listener extends core::Object {
   synthetic constructor •() → self::Listener*
     ;
   abstract method event(core::String* input, [core::int* x, core::int* y]) → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class TestListener extends self::Listener {
   synthetic constructor •() → self::TestListener*
@@ -36,6 +66,16 @@
     ;
   method event(dynamic input, [dynamic x]) → void
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 external static abstract method createExternal() → self::External*;
 static method main() → dynamic
diff --git a/pkg/front_end/testcases/general/optional.dart.strong.expect b/pkg/front_end/testcases/general/optional.dart.strong.expect
index b6d1e02..699fb55 100644
--- a/pkg/front_end/testcases/general/optional.dart.strong.expect
+++ b/pkg/front_end/testcases/general/optional.dart.strong.expect
@@ -36,6 +36,16 @@
   method method(dynamic x, [dynamic y = #C1, dynamic z = #C1]) → dynamic {
     return "string";
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class External extends core::Object {
   synthetic constructor •() → self::External*
@@ -43,12 +53,32 @@
     ;
   abstract method externalMethod(core::int* x, [core::int* y = #C1, core::int* z = #C1]) → core::String*;
   abstract method listen(self::Listener* listener) → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class Listener extends core::Object {
   synthetic constructor •() → self::Listener*
     : super core::Object::•()
     ;
   abstract method event(core::String* input, [core::int* x = #C1, core::int* y = #C1]) → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class TestListener extends self::Listener {
   synthetic constructor •() → self::TestListener*
@@ -67,6 +97,16 @@
     : super core::Object::•()
     ;
   method event(dynamic input, [dynamic x = #C1]) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 external static abstract method createExternal() → self::External*;
 static method main() → dynamic {
diff --git a/pkg/front_end/testcases/general/override.dart.outline.expect b/pkg/front_end/testcases/general/override.dart.outline.expect
index a60858d..b07a2bd 100644
--- a/pkg/front_end/testcases/general/override.dart.outline.expect
+++ b/pkg/front_end/testcases/general/override.dart.outline.expect
@@ -5,6 +5,16 @@
 class Foo extends core::Object {
   synthetic constructor •() → self::Foo*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Bar extends self::Foo {
   synthetic constructor •() → self::Bar*
@@ -15,6 +25,16 @@
     ;
   method method() → self::Foo*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Sub extends self::Base {
   synthetic constructor •() → self::Sub*
diff --git a/pkg/front_end/testcases/general/override.dart.strong.expect b/pkg/front_end/testcases/general/override.dart.strong.expect
index f6ea171..ad702b5 100644
--- a/pkg/front_end/testcases/general/override.dart.strong.expect
+++ b/pkg/front_end/testcases/general/override.dart.strong.expect
@@ -6,6 +6,16 @@
   synthetic constructor •() → self::Foo*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Bar extends self::Foo {
   synthetic constructor •() → self::Bar*
@@ -19,6 +29,16 @@
   method method() → self::Foo* {
     return new self::Foo::•();
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Sub extends self::Base {
   synthetic constructor •() → self::Sub*
diff --git a/pkg/front_end/testcases/general/override.dart.strong.transformed.expect b/pkg/front_end/testcases/general/override.dart.strong.transformed.expect
index f6ea171..ad702b5 100644
--- a/pkg/front_end/testcases/general/override.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general/override.dart.strong.transformed.expect
@@ -6,6 +6,16 @@
   synthetic constructor •() → self::Foo*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Bar extends self::Foo {
   synthetic constructor •() → self::Bar*
@@ -19,6 +29,16 @@
   method method() → self::Foo* {
     return new self::Foo::•();
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Sub extends self::Base {
   synthetic constructor •() → self::Sub*
diff --git a/pkg/front_end/testcases/general/override_check_accessor_after_inference.dart.outline.expect b/pkg/front_end/testcases/general/override_check_accessor_after_inference.dart.outline.expect
index 2da0b47..8f7ef08 100644
--- a/pkg/front_end/testcases/general/override_check_accessor_after_inference.dart.outline.expect
+++ b/pkg/front_end/testcases/general/override_check_accessor_after_inference.dart.outline.expect
@@ -28,6 +28,16 @@
 class A extends core::Object {
   synthetic constructor •() → self::A*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A {
   synthetic constructor •() → self::B*
@@ -40,6 +50,16 @@
     ;
   get y() → self::B*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D extends self::C {
   synthetic constructor •() → self::D*
diff --git a/pkg/front_end/testcases/general/override_check_accessor_after_inference.dart.strong.expect b/pkg/front_end/testcases/general/override_check_accessor_after_inference.dart.strong.expect
index 11ba780..e176fa4 100644
--- a/pkg/front_end/testcases/general/override_check_accessor_after_inference.dart.strong.expect
+++ b/pkg/front_end/testcases/general/override_check_accessor_after_inference.dart.strong.expect
@@ -29,6 +29,16 @@
   synthetic constructor •() → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A {
   synthetic constructor •() → self::B*
@@ -42,6 +52,16 @@
   set x(self::A* value) → void {}
   get y() → self::B*
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D extends self::C {
   synthetic constructor •() → self::D*
diff --git a/pkg/front_end/testcases/general/override_check_accessor_basic.dart.outline.expect b/pkg/front_end/testcases/general/override_check_accessor_basic.dart.outline.expect
index 5e1469f..a5a904e 100644
--- a/pkg/front_end/testcases/general/override_check_accessor_basic.dart.outline.expect
+++ b/pkg/front_end/testcases/general/override_check_accessor_basic.dart.outline.expect
@@ -28,6 +28,16 @@
 class A extends core::Object {
   synthetic constructor •() → self::A*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A {
   synthetic constructor •() → self::B*
@@ -40,6 +50,16 @@
     ;
   get y() → self::A*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D extends self::C {
   synthetic constructor •() → self::D*
diff --git a/pkg/front_end/testcases/general/override_check_accessor_basic.dart.strong.expect b/pkg/front_end/testcases/general/override_check_accessor_basic.dart.strong.expect
index 1e508c5..2af3198 100644
--- a/pkg/front_end/testcases/general/override_check_accessor_basic.dart.strong.expect
+++ b/pkg/front_end/testcases/general/override_check_accessor_basic.dart.strong.expect
@@ -29,6 +29,16 @@
   synthetic constructor •() → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A {
   synthetic constructor •() → self::B*
@@ -42,6 +52,16 @@
   set x(self::A* value) → void {}
   get y() → self::A*
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D extends self::C {
   synthetic constructor •() → self::D*
diff --git a/pkg/front_end/testcases/general/override_check_accessor_with_covariant_modifier.dart.outline.expect b/pkg/front_end/testcases/general/override_check_accessor_with_covariant_modifier.dart.outline.expect
index c042245..420616c 100644
--- a/pkg/front_end/testcases/general/override_check_accessor_with_covariant_modifier.dart.outline.expect
+++ b/pkg/front_end/testcases/general/override_check_accessor_with_covariant_modifier.dart.outline.expect
@@ -27,6 +27,16 @@
 class A extends core::Object {
   synthetic constructor •() → self::A*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A {
   synthetic constructor •() → self::B*
@@ -47,6 +57,16 @@
     ;
   set x6(covariant self::B* value) → void
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D extends self::C {
   synthetic constructor •() → self::D*
diff --git a/pkg/front_end/testcases/general/override_check_accessor_with_covariant_modifier.dart.strong.expect b/pkg/front_end/testcases/general/override_check_accessor_with_covariant_modifier.dart.strong.expect
index bf65db5..5339115 100644
--- a/pkg/front_end/testcases/general/override_check_accessor_with_covariant_modifier.dart.strong.expect
+++ b/pkg/front_end/testcases/general/override_check_accessor_with_covariant_modifier.dart.strong.expect
@@ -28,6 +28,16 @@
   synthetic constructor •() → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A {
   synthetic constructor •() → self::B*
@@ -44,6 +54,16 @@
   set x4(self::A* value) → void {}
   set x5(covariant self::A* value) → void {}
   set x6(covariant self::B* value) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D extends self::C {
   synthetic constructor •() → self::D*
diff --git a/pkg/front_end/testcases/general/override_check_after_inference.dart.outline.expect b/pkg/front_end/testcases/general/override_check_after_inference.dart.outline.expect
index a04839a..0eef3ad 100644
--- a/pkg/front_end/testcases/general/override_check_after_inference.dart.outline.expect
+++ b/pkg/front_end/testcases/general/override_check_after_inference.dart.outline.expect
@@ -18,6 +18,16 @@
 class A extends core::Object {
   synthetic constructor •() → self::A*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A {
   synthetic constructor •() → self::B*
@@ -28,6 +38,16 @@
     ;
   method f(self::A* x) → void
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D extends self::C {
   synthetic constructor •() → self::D*
diff --git a/pkg/front_end/testcases/general/override_check_after_inference.dart.strong.expect b/pkg/front_end/testcases/general/override_check_after_inference.dart.strong.expect
index 531e808..49a0681 100644
--- a/pkg/front_end/testcases/general/override_check_after_inference.dart.strong.expect
+++ b/pkg/front_end/testcases/general/override_check_after_inference.dart.strong.expect
@@ -19,6 +19,16 @@
   synthetic constructor •() → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A {
   synthetic constructor •() → self::B*
@@ -30,6 +40,16 @@
     : super core::Object::•()
     ;
   method f(self::A* x) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D extends self::C {
   synthetic constructor •() → self::D*
diff --git a/pkg/front_end/testcases/general/override_check_basic.dart.outline.expect b/pkg/front_end/testcases/general/override_check_basic.dart.outline.expect
index b8edb06..c512c2a 100644
--- a/pkg/front_end/testcases/general/override_check_basic.dart.outline.expect
+++ b/pkg/front_end/testcases/general/override_check_basic.dart.outline.expect
@@ -48,6 +48,16 @@
 class A extends core::Object {
   synthetic constructor •() → self::A*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A {
   synthetic constructor •() → self::B*
@@ -64,6 +74,16 @@
     ;
   method f4() → self::A*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D extends self::C {
   synthetic constructor •() → self::D*
diff --git a/pkg/front_end/testcases/general/override_check_basic.dart.strong.expect b/pkg/front_end/testcases/general/override_check_basic.dart.strong.expect
index a53d9df..4548de2 100644
--- a/pkg/front_end/testcases/general/override_check_basic.dart.strong.expect
+++ b/pkg/front_end/testcases/general/override_check_basic.dart.strong.expect
@@ -49,6 +49,16 @@
   synthetic constructor •() → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A {
   synthetic constructor •() → self::B*
@@ -63,6 +73,16 @@
   method f2([self::A* x = #C1]) → void {}
   method f3({self::A* x = #C1}) → void {}
   method f4() → self::A* {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D extends self::C {
   synthetic constructor •() → self::D*
diff --git a/pkg/front_end/testcases/general/override_check_generic_method_f_bounded.dart.outline.expect b/pkg/front_end/testcases/general/override_check_generic_method_f_bounded.dart.outline.expect
index 09d8a3c..1f089e9 100644
--- a/pkg/front_end/testcases/general/override_check_generic_method_f_bounded.dart.outline.expect
+++ b/pkg/front_end/testcases/general/override_check_generic_method_f_bounded.dart.outline.expect
@@ -5,11 +5,31 @@
 class Foo<T extends self::Foo<self::Foo::T*>* = self::Foo<dynamic>*> extends core::Object {
   synthetic constructor •() → self::Foo<self::Foo::T*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class Bar extends core::Object {
   synthetic constructor •() → self::Bar*
     ;
   abstract method fisk<S extends self::Foo<self::Bar::fisk::S*>* = self::Foo<dynamic>*>() → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Hest extends core::Object implements self::Bar {
   synthetic constructor •() → self::Hest*
@@ -17,6 +37,16 @@
   @core::override
   method fisk<U extends self::Foo<self::Hest::fisk::U*>* = self::Foo<dynamic>*>() → void
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → void
   ;
diff --git a/pkg/front_end/testcases/general/override_check_generic_method_f_bounded.dart.strong.expect b/pkg/front_end/testcases/general/override_check_generic_method_f_bounded.dart.strong.expect
index 5b088fe..e856790 100644
--- a/pkg/front_end/testcases/general/override_check_generic_method_f_bounded.dart.strong.expect
+++ b/pkg/front_end/testcases/general/override_check_generic_method_f_bounded.dart.strong.expect
@@ -6,12 +6,32 @@
   synthetic constructor •() → self::Foo<self::Foo::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class Bar extends core::Object {
   synthetic constructor •() → self::Bar*
     : super core::Object::•()
     ;
   abstract method fisk<S extends self::Foo<self::Bar::fisk::S*>* = self::Foo<dynamic>*>() → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Hest extends core::Object implements self::Bar {
   synthetic constructor •() → self::Hest*
@@ -19,6 +39,16 @@
     ;
   @#C1
   method fisk<U extends self::Foo<self::Hest::fisk::U*>* = self::Foo<dynamic>*>() → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → void {}
 
diff --git a/pkg/front_end/testcases/general/override_check_generic_method_f_bounded.dart.strong.transformed.expect b/pkg/front_end/testcases/general/override_check_generic_method_f_bounded.dart.strong.transformed.expect
index 5b088fe..e856790 100644
--- a/pkg/front_end/testcases/general/override_check_generic_method_f_bounded.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general/override_check_generic_method_f_bounded.dart.strong.transformed.expect
@@ -6,12 +6,32 @@
   synthetic constructor •() → self::Foo<self::Foo::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class Bar extends core::Object {
   synthetic constructor •() → self::Bar*
     : super core::Object::•()
     ;
   abstract method fisk<S extends self::Foo<self::Bar::fisk::S*>* = self::Foo<dynamic>*>() → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Hest extends core::Object implements self::Bar {
   synthetic constructor •() → self::Hest*
@@ -19,6 +39,16 @@
     ;
   @#C1
   method fisk<U extends self::Foo<self::Hest::fisk::U*>* = self::Foo<dynamic>*>() → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → void {}
 
diff --git a/pkg/front_end/testcases/general/override_check_two_substitutions.dart.outline.expect b/pkg/front_end/testcases/general/override_check_two_substitutions.dart.outline.expect
index 3cc6944..7889af0 100644
--- a/pkg/front_end/testcases/general/override_check_two_substitutions.dart.outline.expect
+++ b/pkg/front_end/testcases/general/override_check_two_substitutions.dart.outline.expect
@@ -7,6 +7,16 @@
     ;
   method f<U extends core::Object* = dynamic>(generic-covariant-impl core::Map<self::A::T*, self::A::f::U*>* m) → void
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A<core::String*> {
   synthetic constructor •() → self::B*
diff --git a/pkg/front_end/testcases/general/override_check_two_substitutions.dart.strong.expect b/pkg/front_end/testcases/general/override_check_two_substitutions.dart.strong.expect
index ac75a46..5175275 100644
--- a/pkg/front_end/testcases/general/override_check_two_substitutions.dart.strong.expect
+++ b/pkg/front_end/testcases/general/override_check_two_substitutions.dart.strong.expect
@@ -7,6 +7,16 @@
     : super core::Object::•()
     ;
   method f<U extends core::Object* = dynamic>(generic-covariant-impl core::Map<self::A::T*, self::A::f::U*>* m) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A<core::String*> {
   synthetic constructor •() → self::B*
diff --git a/pkg/front_end/testcases/general/override_check_two_substitutions.dart.strong.transformed.expect b/pkg/front_end/testcases/general/override_check_two_substitutions.dart.strong.transformed.expect
index ac75a46..5175275 100644
--- a/pkg/front_end/testcases/general/override_check_two_substitutions.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general/override_check_two_substitutions.dart.strong.transformed.expect
@@ -7,6 +7,16 @@
     : super core::Object::•()
     ;
   method f<U extends core::Object* = dynamic>(generic-covariant-impl core::Map<self::A::T*, self::A::f::U*>* m) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A<core::String*> {
   synthetic constructor •() → self::B*
diff --git a/pkg/front_end/testcases/general/override_check_with_covariant_modifier.dart.outline.expect b/pkg/front_end/testcases/general/override_check_with_covariant_modifier.dart.outline.expect
index 73c8fd7..b74ea3a 100644
--- a/pkg/front_end/testcases/general/override_check_with_covariant_modifier.dart.outline.expect
+++ b/pkg/front_end/testcases/general/override_check_with_covariant_modifier.dart.outline.expect
@@ -27,6 +27,16 @@
 class A extends core::Object {
   synthetic constructor •() → self::A*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A {
   synthetic constructor •() → self::B*
@@ -47,6 +57,16 @@
     ;
   method f6(covariant self::B* x) → void
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D extends self::C {
   synthetic constructor •() → self::D*
diff --git a/pkg/front_end/testcases/general/override_check_with_covariant_modifier.dart.strong.expect b/pkg/front_end/testcases/general/override_check_with_covariant_modifier.dart.strong.expect
index 8dc7035..600156c 100644
--- a/pkg/front_end/testcases/general/override_check_with_covariant_modifier.dart.strong.expect
+++ b/pkg/front_end/testcases/general/override_check_with_covariant_modifier.dart.strong.expect
@@ -28,6 +28,16 @@
   synthetic constructor •() → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A {
   synthetic constructor •() → self::B*
@@ -44,6 +54,16 @@
   method f4(self::A* x) → void {}
   method f5(covariant self::A* x) → void {}
   method f6(covariant self::B* x) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D extends self::C {
   synthetic constructor •() → self::D*
diff --git a/pkg/front_end/testcases/general/override_inference_for_getters_and_setters.dart.outline.expect b/pkg/front_end/testcases/general/override_inference_for_getters_and_setters.dart.outline.expect
index e8ff6d1..e9df4b6 100644
--- a/pkg/front_end/testcases/general/override_inference_for_getters_and_setters.dart.outline.expect
+++ b/pkg/front_end/testcases/general/override_inference_for_getters_and_setters.dart.outline.expect
@@ -60,6 +60,16 @@
   abstract set getterFromGetterWithSetterConflict(dynamic num) → void;
   abstract get setterFromSetterWithGetterConflict() → core::num*;
   abstract set setterFromSetterWithGetterConflict(dynamic num) → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class B extends core::Object {
   synthetic constructor •() → self::B*
@@ -70,6 +80,16 @@
   abstract get setterFromSetterWithGetterConflict() → core::int*;
   abstract set getterFromGetterWithSetterConflict(core::int* value) → void;
   abstract set getterFromSetter(core::int* value) → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class C extends self::A {
   synthetic constructor •() → self::C*
@@ -102,6 +122,16 @@
   abstract set setterFromGetter(core::num* value) → void;
   abstract get getterFromGetterWithSetterConflict() → core::num*;
   abstract set setterFromSetterWithGetterConflict(dynamic value) → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class F extends core::Object implements self::A, self::B {
   synthetic constructor •() → self::F*
@@ -114,6 +144,16 @@
   abstract set setterFromSetterWithGetterConflict(dynamic value) → void;
   abstract forwarding-stub get setterFromGetter() → core::int*;
   abstract forwarding-stub get setterFromSetterWithGetterConflict() → core::int*;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/general/override_inference_for_getters_and_setters.dart.strong.expect b/pkg/front_end/testcases/general/override_inference_for_getters_and_setters.dart.strong.expect
index 4c57e56..b2fc0a0 100644
--- a/pkg/front_end/testcases/general/override_inference_for_getters_and_setters.dart.strong.expect
+++ b/pkg/front_end/testcases/general/override_inference_for_getters_and_setters.dart.strong.expect
@@ -61,6 +61,16 @@
   abstract set getterFromGetterWithSetterConflict(dynamic num) → void;
   abstract get setterFromSetterWithGetterConflict() → core::num*;
   abstract set setterFromSetterWithGetterConflict(dynamic num) → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class B extends core::Object {
   synthetic constructor •() → self::B*
@@ -72,6 +82,16 @@
   abstract get setterFromSetterWithGetterConflict() → core::int*;
   abstract set getterFromGetterWithSetterConflict(core::int* value) → void;
   abstract set getterFromSetter(core::int* value) → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class C extends self::A {
   synthetic constructor •() → self::C*
@@ -107,6 +127,16 @@
   abstract set setterFromGetter(core::num* value) → void;
   abstract get getterFromGetterWithSetterConflict() → core::num*;
   abstract set setterFromSetterWithGetterConflict(dynamic value) → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class F extends core::Object implements self::A, self::B {
   synthetic constructor •() → self::F*
@@ -120,5 +150,15 @@
   abstract set setterFromSetterWithGetterConflict(dynamic value) → void;
   abstract forwarding-stub get setterFromGetter() → core::int*;
   abstract forwarding-stub get setterFromSetterWithGetterConflict() → core::int*;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general/override_inference_for_getters_and_setters.dart.strong.transformed.expect b/pkg/front_end/testcases/general/override_inference_for_getters_and_setters.dart.strong.transformed.expect
index 4c57e56..b2fc0a0 100644
--- a/pkg/front_end/testcases/general/override_inference_for_getters_and_setters.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general/override_inference_for_getters_and_setters.dart.strong.transformed.expect
@@ -61,6 +61,16 @@
   abstract set getterFromGetterWithSetterConflict(dynamic num) → void;
   abstract get setterFromSetterWithGetterConflict() → core::num*;
   abstract set setterFromSetterWithGetterConflict(dynamic num) → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class B extends core::Object {
   synthetic constructor •() → self::B*
@@ -72,6 +82,16 @@
   abstract get setterFromSetterWithGetterConflict() → core::int*;
   abstract set getterFromGetterWithSetterConflict(core::int* value) → void;
   abstract set getterFromSetter(core::int* value) → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class C extends self::A {
   synthetic constructor •() → self::C*
@@ -107,6 +127,16 @@
   abstract set setterFromGetter(core::num* value) → void;
   abstract get getterFromGetterWithSetterConflict() → core::num*;
   abstract set setterFromSetterWithGetterConflict(dynamic value) → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class F extends core::Object implements self::A, self::B {
   synthetic constructor •() → self::F*
@@ -120,5 +150,15 @@
   abstract set setterFromSetterWithGetterConflict(dynamic value) → void;
   abstract forwarding-stub get setterFromGetter() → core::int*;
   abstract forwarding-stub get setterFromSetterWithGetterConflict() → core::int*;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general/override_inference_for_setters.dart.outline.expect b/pkg/front_end/testcases/general/override_inference_for_setters.dart.outline.expect
index 88d2cc3..0e42fd6 100644
--- a/pkg/front_end/testcases/general/override_inference_for_setters.dart.outline.expect
+++ b/pkg/front_end/testcases/general/override_inference_for_setters.dart.outline.expect
@@ -9,6 +9,16 @@
     ;
   set foo(dynamic newFoo) → void
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class A extends self::B {
   synthetic constructor •() → self::A*
diff --git a/pkg/front_end/testcases/general/override_inference_for_setters.dart.strong.expect b/pkg/front_end/testcases/general/override_inference_for_setters.dart.strong.expect
index 648154f..a029b39 100644
--- a/pkg/front_end/testcases/general/override_inference_for_setters.dart.strong.expect
+++ b/pkg/front_end/testcases/general/override_inference_for_setters.dart.strong.expect
@@ -9,6 +9,16 @@
   get foo() → core::num*
     return null;
   set foo(dynamic newFoo) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class A extends self::B {
   synthetic constructor •() → self::A*
diff --git a/pkg/front_end/testcases/general/override_inference_for_setters.dart.strong.transformed.expect b/pkg/front_end/testcases/general/override_inference_for_setters.dart.strong.transformed.expect
index 648154f..a029b39 100644
--- a/pkg/front_end/testcases/general/override_inference_for_setters.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general/override_inference_for_setters.dart.strong.transformed.expect
@@ -9,6 +9,16 @@
   get foo() → core::num*
     return null;
   set foo(dynamic newFoo) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class A extends self::B {
   synthetic constructor •() → self::A*
diff --git a/pkg/front_end/testcases/general/override_inference_named_parameters_ordering.dart.outline.expect b/pkg/front_end/testcases/general/override_inference_named_parameters_ordering.dart.outline.expect
index bdf6a97..6633e9b 100644
--- a/pkg/front_end/testcases/general/override_inference_named_parameters_ordering.dart.outline.expect
+++ b/pkg/front_end/testcases/general/override_inference_named_parameters_ordering.dart.outline.expect
@@ -7,6 +7,16 @@
     ;
   method foo({core::bool* c = true, core::bool* a}) → dynamic
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A {
   synthetic constructor •() → self::B*
@@ -25,6 +35,16 @@
     ;
   method foo({core::bool* a = true, core::bool* c}) → dynamic
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B1 extends self::A1 {
   synthetic constructor •() → self::B1*
diff --git a/pkg/front_end/testcases/general/override_inference_named_parameters_ordering.dart.strong.expect b/pkg/front_end/testcases/general/override_inference_named_parameters_ordering.dart.strong.expect
index 635d689..eaa0ca6 100644
--- a/pkg/front_end/testcases/general/override_inference_named_parameters_ordering.dart.strong.expect
+++ b/pkg/front_end/testcases/general/override_inference_named_parameters_ordering.dart.strong.expect
@@ -7,6 +7,16 @@
     : super core::Object::•()
     ;
   method foo({core::bool* c = #C1, core::bool* a = #C2}) → dynamic {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A {
   synthetic constructor •() → self::B*
@@ -25,6 +35,16 @@
     : super core::Object::•()
     ;
   method foo({core::bool* a = #C1, core::bool* c = #C2}) → dynamic {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B1 extends self::A1 {
   synthetic constructor •() → self::B1*
diff --git a/pkg/front_end/testcases/general/override_inference_named_parameters_ordering.dart.strong.transformed.expect b/pkg/front_end/testcases/general/override_inference_named_parameters_ordering.dart.strong.transformed.expect
index 635d689..eaa0ca6 100644
--- a/pkg/front_end/testcases/general/override_inference_named_parameters_ordering.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general/override_inference_named_parameters_ordering.dart.strong.transformed.expect
@@ -7,6 +7,16 @@
     : super core::Object::•()
     ;
   method foo({core::bool* c = #C1, core::bool* a = #C2}) → dynamic {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A {
   synthetic constructor •() → self::B*
@@ -25,6 +35,16 @@
     : super core::Object::•()
     ;
   method foo({core::bool* a = #C1, core::bool* c = #C2}) → dynamic {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B1 extends self::A1 {
   synthetic constructor •() → self::B1*
diff --git a/pkg/front_end/testcases/general/override_setter_with_field.dart.outline.expect b/pkg/front_end/testcases/general/override_setter_with_field.dart.outline.expect
index f54d02a..b9b9bb5 100644
--- a/pkg/front_end/testcases/general/override_setter_with_field.dart.outline.expect
+++ b/pkg/front_end/testcases/general/override_setter_with_field.dart.outline.expect
@@ -17,11 +17,31 @@
   synthetic constructor •() → self::A*
     ;
   abstract set x(core::Object* y) → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends core::Object implements self::A {
   field core::int* x;
   synthetic constructor •() → self::B*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/general/override_setter_with_field.dart.strong.expect b/pkg/front_end/testcases/general/override_setter_with_field.dart.strong.expect
index 58904b1..e20a929 100644
--- a/pkg/front_end/testcases/general/override_setter_with_field.dart.strong.expect
+++ b/pkg/front_end/testcases/general/override_setter_with_field.dart.strong.expect
@@ -18,12 +18,32 @@
     : super core::Object::•()
     ;
   abstract set x(core::Object* y) → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends core::Object implements self::A {
   field core::int* x = null;
   synthetic constructor •() → self::B*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   new self::B::•().{self::B::x} = 5;
diff --git a/pkg/front_end/testcases/general/platform_invalid_uris/main.dart.outline.expect b/pkg/front_end/testcases/general/platform_invalid_uris/main.dart.outline.expect
index 5212d00..7c1741c 100644
--- a/pkg/front_end/testcases/general/platform_invalid_uris/main.dart.outline.expect
+++ b/pkg/front_end/testcases/general/platform_invalid_uris/main.dart.outline.expect
@@ -44,6 +44,16 @@
 class Class extends core::Object {
   synthetic constructor •() → self2::Class*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 
 library;
diff --git a/pkg/front_end/testcases/general/platform_invalid_uris/main.dart.strong.expect b/pkg/front_end/testcases/general/platform_invalid_uris/main.dart.strong.expect
index 3bb4f07..d2a861e 100644
--- a/pkg/front_end/testcases/general/platform_invalid_uris/main.dart.strong.expect
+++ b/pkg/front_end/testcases/general/platform_invalid_uris/main.dart.strong.expect
@@ -47,6 +47,16 @@
   synthetic constructor •() → test::Class*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 
 library;
diff --git a/pkg/front_end/testcases/general/platform_invalid_uris/main.dart.strong.transformed.expect b/pkg/front_end/testcases/general/platform_invalid_uris/main.dart.strong.transformed.expect
index 3bb4f07..d2a861e 100644
--- a/pkg/front_end/testcases/general/platform_invalid_uris/main.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general/platform_invalid_uris/main.dart.strong.transformed.expect
@@ -47,6 +47,16 @@
   synthetic constructor •() → test::Class*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 
 library;
diff --git a/pkg/front_end/testcases/general/prefer_baseclass.dart.outline.expect b/pkg/front_end/testcases/general/prefer_baseclass.dart.outline.expect
index c337c34..ffbffbc 100644
--- a/pkg/front_end/testcases/general/prefer_baseclass.dart.outline.expect
+++ b/pkg/front_end/testcases/general/prefer_baseclass.dart.outline.expect
@@ -5,10 +5,30 @@
 class A extends core::Object {
   synthetic constructor •() → self::A*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends core::Object {
   synthetic constructor •() → self::B*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class AB1 extends self::A implements self::B {
   synthetic constructor •() → self::AB1*
diff --git a/pkg/front_end/testcases/general/prefer_baseclass.dart.strong.expect b/pkg/front_end/testcases/general/prefer_baseclass.dart.strong.expect
index d3d9325..bdb5c91 100644
--- a/pkg/front_end/testcases/general/prefer_baseclass.dart.strong.expect
+++ b/pkg/front_end/testcases/general/prefer_baseclass.dart.strong.expect
@@ -6,11 +6,31 @@
   synthetic constructor •() → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends core::Object {
   synthetic constructor •() → self::B*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class AB1 extends self::A implements self::B {
   synthetic constructor •() → self::AB1*
diff --git a/pkg/front_end/testcases/general/prefer_baseclass.dart.strong.transformed.expect b/pkg/front_end/testcases/general/prefer_baseclass.dart.strong.transformed.expect
index d3d9325..bdb5c91 100644
--- a/pkg/front_end/testcases/general/prefer_baseclass.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general/prefer_baseclass.dart.strong.transformed.expect
@@ -6,11 +6,31 @@
   synthetic constructor •() → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends core::Object {
   synthetic constructor •() → self::B*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class AB1 extends self::A implements self::B {
   synthetic constructor •() → self::AB1*
diff --git a/pkg/front_end/testcases/general/private_method_tearoff.dart.outline.expect b/pkg/front_end/testcases/general/private_method_tearoff.dart.outline.expect
index 90d37ed..5f23e62 100644
--- a/pkg/front_end/testcases/general/private_method_tearoff.dart.outline.expect
+++ b/pkg/front_end/testcases/general/private_method_tearoff.dart.outline.expect
@@ -8,8 +8,18 @@
 class Foo extends core::Object implements pri::Bar {
   synthetic constructor •() → self::Foo*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
   no-such-method-forwarder method /* from org-dartlang-testcase:///private_method_tearoff_lib.dart */ _f() → void
-    return this.{core::Object::noSuchMethod}(new core::_InvocationMirror::_withType(#_f, 0, const <core::Type*>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{})));
+    return this.{self::Foo::noSuchMethod}(new core::_InvocationMirror::_withType(#_f, 0, const <core::Type*>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{})));
 }
 class Baz extends self::Foo {
   synthetic constructor •() → self::Baz*
@@ -27,6 +37,16 @@
     ;
   method _f() → void
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method baz(pri::Bar* bar) → void
   ;
diff --git a/pkg/front_end/testcases/general/private_method_tearoff.dart.strong.expect b/pkg/front_end/testcases/general/private_method_tearoff.dart.strong.expect
index 7289dfe..44d44f9 100644
--- a/pkg/front_end/testcases/general/private_method_tearoff.dart.strong.expect
+++ b/pkg/front_end/testcases/general/private_method_tearoff.dart.strong.expect
@@ -9,8 +9,18 @@
   synthetic constructor •() → self::Foo*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
   no-such-method-forwarder method /* from org-dartlang-testcase:///private_method_tearoff_lib.dart */ _f() → void
-    return this.{core::Object::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
+    return this.{self::Foo::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
 }
 class Baz extends self::Foo {
   synthetic constructor •() → self::Baz*
@@ -30,6 +40,16 @@
     : super core::Object::•()
     ;
   method _f() → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method baz(pri::Bar* bar) → void {
   core::print("${bar.{pri::Bar::_f}.{core::Object::runtimeType}}");
diff --git a/pkg/front_end/testcases/general/private_method_tearoff.dart.strong.transformed.expect b/pkg/front_end/testcases/general/private_method_tearoff.dart.strong.transformed.expect
index 7289dfe..44d44f9 100644
--- a/pkg/front_end/testcases/general/private_method_tearoff.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general/private_method_tearoff.dart.strong.transformed.expect
@@ -9,8 +9,18 @@
   synthetic constructor •() → self::Foo*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
   no-such-method-forwarder method /* from org-dartlang-testcase:///private_method_tearoff_lib.dart */ _f() → void
-    return this.{core::Object::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
+    return this.{self::Foo::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
 }
 class Baz extends self::Foo {
   synthetic constructor •() → self::Baz*
@@ -30,6 +40,16 @@
     : super core::Object::•()
     ;
   method _f() → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method baz(pri::Bar* bar) → void {
   core::print("${bar.{pri::Bar::_f}.{core::Object::runtimeType}}");
diff --git a/pkg/front_end/testcases/general/promoted_access.dart.outline.expect b/pkg/front_end/testcases/general/promoted_access.dart.outline.expect
index 255851a..6a09285 100644
--- a/pkg/front_end/testcases/general/promoted_access.dart.outline.expect
+++ b/pkg/front_end/testcases/general/promoted_access.dart.outline.expect
@@ -7,6 +7,16 @@
     ;
   method method(generic-covariant-impl self::Class::T* o) → dynamic
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method method<T extends core::Object* = dynamic>(self::method::T* o) → dynamic
   ;
diff --git a/pkg/front_end/testcases/general/promoted_access.dart.strong.expect b/pkg/front_end/testcases/general/promoted_access.dart.strong.expect
index a16b916..d3f9a16 100644
--- a/pkg/front_end/testcases/general/promoted_access.dart.strong.expect
+++ b/pkg/front_end/testcases/general/promoted_access.dart.strong.expect
@@ -11,6 +11,16 @@
       o{self::Class::T* & self::Class<dynamic>* /* '*' & '*' = '*' */}.{self::Class::method}(null);
     }
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method method<T extends core::Object* = dynamic>(self::method::T* o) → dynamic {
   if(o is self::Class<dynamic>*) {
diff --git a/pkg/front_end/testcases/general/promoted_access.dart.strong.transformed.expect b/pkg/front_end/testcases/general/promoted_access.dart.strong.transformed.expect
index a16b916..d3f9a16 100644
--- a/pkg/front_end/testcases/general/promoted_access.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general/promoted_access.dart.strong.transformed.expect
@@ -11,6 +11,16 @@
       o{self::Class::T* & self::Class<dynamic>* /* '*' & '*' = '*' */}.{self::Class::method}(null);
     }
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method method<T extends core::Object* = dynamic>(self::method::T* o) → dynamic {
   if(o is self::Class<dynamic>*) {
diff --git a/pkg/front_end/testcases/general/public_method_tearoff.dart.outline.expect b/pkg/front_end/testcases/general/public_method_tearoff.dart.outline.expect
index 9053c8b..1199c7d 100644
--- a/pkg/front_end/testcases/general/public_method_tearoff.dart.outline.expect
+++ b/pkg/front_end/testcases/general/public_method_tearoff.dart.outline.expect
@@ -20,6 +20,16 @@
     ;
   method f() → void
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method baz(pub::Bar* bar) → void
   ;
diff --git a/pkg/front_end/testcases/general/public_method_tearoff.dart.strong.expect b/pkg/front_end/testcases/general/public_method_tearoff.dart.strong.expect
index a5772cd..888c514 100644
--- a/pkg/front_end/testcases/general/public_method_tearoff.dart.strong.expect
+++ b/pkg/front_end/testcases/general/public_method_tearoff.dart.strong.expect
@@ -22,6 +22,16 @@
     : super core::Object::•()
     ;
   method f() → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method baz(pub::Bar* bar) → void {
   core::print("${bar.{pub::Bar::f}.{core::Object::runtimeType}}");
diff --git a/pkg/front_end/testcases/general/public_method_tearoff.dart.strong.transformed.expect b/pkg/front_end/testcases/general/public_method_tearoff.dart.strong.transformed.expect
index a5772cd..888c514 100644
--- a/pkg/front_end/testcases/general/public_method_tearoff.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general/public_method_tearoff.dart.strong.transformed.expect
@@ -22,6 +22,16 @@
     : super core::Object::•()
     ;
   method f() → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method baz(pub::Bar* bar) → void {
   core::print("${bar.{pub::Bar::f}.{core::Object::runtimeType}}");
diff --git a/pkg/front_end/testcases/general/qualified.dart.outline.expect b/pkg/front_end/testcases/general/qualified.dart.outline.expect
index 8e9513f..f120e5c 100644
--- a/pkg/front_end/testcases/general/qualified.dart.outline.expect
+++ b/pkg/front_end/testcases/general/qualified.dart.outline.expect
@@ -20,6 +20,9 @@
 // pkg/front_end/testcases/general/qualified.dart:18:7: Error: The type 'lib.VoidFunction' can't be used as supertype.
 // class IllegalSupertype extends lib.VoidFunction {}
 //       ^
+// pkg/front_end/testcases/general/qualified_lib.dart:27:9: Context: The issue arises via this type alias.
+// typedef VoidFunction = void Function();
+//         ^
 //
 import self as self;
 import "dart:core" as core;
@@ -33,6 +36,16 @@
     ;
   static factory WrongName() → self::Bad*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class _WithMixin&Supertype&Mixin = lib::Supertype with lib::Mixin /*isAnonymousMixin*/  {
   synthetic constructor •() → self::_WithMixin&Supertype&Mixin*
@@ -46,6 +59,16 @@
 class IllegalSupertype extends core::Object {
   synthetic constructor •() → self::IllegalSupertype*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C<T extends core::Object* = dynamic> extends core::Object { // from org-dartlang-testcase:///qualified_part.dart
   static field dynamic _redirecting# = <dynamic>[self::C::b];
@@ -55,6 +78,16 @@
     ;
   static factory b<T extends core::Object* = dynamic>() → self::C<self::C::b::T*>*
     let dynamic #redirecting_factory = lib::C::b in let self::C::b::T* #typeArg0 = null in invalid-expression;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
@@ -81,10 +114,30 @@
     ;
   method supertypeMethod() → dynamic
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class Mixin extends core::Object {
   synthetic constructor •() → lib::Mixin*
     ;
   method foo() → dynamic
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
diff --git a/pkg/front_end/testcases/general/qualified.dart.strong.expect b/pkg/front_end/testcases/general/qualified.dart.strong.expect
index d55988f..c425d620 100644
--- a/pkg/front_end/testcases/general/qualified.dart.strong.expect
+++ b/pkg/front_end/testcases/general/qualified.dart.strong.expect
@@ -20,6 +20,9 @@
 // pkg/front_end/testcases/general/qualified.dart:18:7: Error: The type 'lib.VoidFunction' can't be used as supertype.
 // class IllegalSupertype extends lib.VoidFunction {}
 //       ^
+// pkg/front_end/testcases/general/qualified_lib.dart:27:9: Context: The issue arises via this type alias.
+// typedef VoidFunction = void Function();
+//         ^
 //
 import self as self;
 import "dart:core" as core;
@@ -31,6 +34,16 @@
 class Bad extends core::Object {
   method method() → invalid-type {}
   static factory WrongName() → self::Bad* {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class _WithMixin&Supertype&Mixin = lib::Supertype with lib::Mixin /*isAnonymousMixin*/  {
   synthetic constructor •() → self::_WithMixin&Supertype&Mixin*
@@ -46,6 +59,16 @@
   synthetic constructor •() → self::IllegalSupertype*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C<T extends core::Object* = dynamic> extends core::Object { // from org-dartlang-testcase:///qualified_part.dart
   static field dynamic _redirecting# = <dynamic>[self::C::b];
@@ -57,6 +80,16 @@
     ;
   static factory b<T extends core::Object* = dynamic>() → self::C<self::C::b::T*>*
     let dynamic #redirecting_factory = lib::C::b in let self::C::b::T* #typeArg0 = null in invalid-expression;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   new self::C::•<core::String*>();
@@ -96,6 +129,16 @@
   method supertypeMethod() → dynamic {
     core::print("I'm supertypeMethod form lib.Supertype");
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class Mixin extends core::Object {
   synthetic constructor •() → lib::Mixin*
@@ -104,4 +147,14 @@
   method foo() → dynamic {
     core::print("I'm Mixin.foo");
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
diff --git a/pkg/front_end/testcases/general/qualified.dart.strong.transformed.expect b/pkg/front_end/testcases/general/qualified.dart.strong.transformed.expect
index 21eaf08..9478fa3 100644
--- a/pkg/front_end/testcases/general/qualified.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general/qualified.dart.strong.transformed.expect
@@ -20,6 +20,9 @@
 // pkg/front_end/testcases/general/qualified.dart:18:7: Error: The type 'lib.VoidFunction' can't be used as supertype.
 // class IllegalSupertype extends lib.VoidFunction {}
 //       ^
+// pkg/front_end/testcases/general/qualified_lib.dart:27:9: Context: The issue arises via this type alias.
+// typedef VoidFunction = void Function();
+//         ^
 //
 import self as self;
 import "dart:core" as core;
@@ -31,6 +34,16 @@
 class Bad extends core::Object {
   method method() → invalid-type {}
   static factory WrongName() → self::Bad* {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class _WithMixin&Supertype&Mixin extends lib::Supertype implements lib::Mixin /*isAnonymousMixin,isEliminatedMixin*/  {
   synthetic constructor •() → self::_WithMixin&Supertype&Mixin*
@@ -39,6 +52,16 @@
   method /* from org-dartlang-testcase:///qualified_lib.dart */ foo() → dynamic {
     core::print("I'm Mixin.foo");
   }
+  abstract member-signature get /* from org-dartlang-testcase:///qualified_lib.dart */ _identityHashCode() → core::int*;
+  abstract member-signature method /* from org-dartlang-testcase:///qualified_lib.dart */ _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method /* from org-dartlang-testcase:///qualified_lib.dart */ _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method /* from org-dartlang-testcase:///qualified_lib.dart */ _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method /* from org-dartlang-testcase:///qualified_lib.dart */ _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator /* from org-dartlang-testcase:///qualified_lib.dart */ ==(dynamic other) → core::bool*;
+  abstract member-signature get /* from org-dartlang-testcase:///qualified_lib.dart */ hashCode() → core::int*;
+  abstract member-signature method /* from org-dartlang-testcase:///qualified_lib.dart */ toString() → core::String*;
+  abstract member-signature method /* from org-dartlang-testcase:///qualified_lib.dart */ noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get /* from org-dartlang-testcase:///qualified_lib.dart */ runtimeType() → core::Type*;
 }
 class WithMixin extends self::_WithMixin&Supertype&Mixin {
   synthetic constructor •() → self::WithMixin*
@@ -49,6 +72,16 @@
   synthetic constructor •() → self::IllegalSupertype*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C<T extends core::Object* = dynamic> extends core::Object { // from org-dartlang-testcase:///qualified_part.dart
   static field dynamic _redirecting# = <dynamic>[self::C::b];
@@ -60,6 +93,16 @@
     ;
   static factory b<T extends core::Object* = dynamic>() → self::C<self::C::b::T*>*
     let <T extends core::Object* = dynamic>() →* lib::C<T*>* #redirecting_factory = lib::C::b in let self::C::b::T* #typeArg0 = null in invalid-expression;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   new self::C::•<core::String*>();
@@ -99,6 +142,16 @@
   method supertypeMethod() → dynamic {
     core::print("I'm supertypeMethod form lib.Supertype");
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class Mixin extends core::Object {
   synthetic constructor •() → lib::Mixin*
@@ -107,4 +160,14 @@
   method foo() → dynamic {
     core::print("I'm Mixin.foo");
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
diff --git a/pkg/front_end/testcases/general/redirecting_constructor.dart.outline.expect b/pkg/front_end/testcases/general/redirecting_constructor.dart.outline.expect
index 9914c1b..27a58f0 100644
--- a/pkg/front_end/testcases/general/redirecting_constructor.dart.outline.expect
+++ b/pkg/front_end/testcases/general/redirecting_constructor.dart.outline.expect
@@ -8,6 +8,16 @@
     ;
   static factory fisk() → self::A*
     let dynamic #redirecting_factory = self::B::• in invalid-expression;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A {
   synthetic constructor •() → self::B*
diff --git a/pkg/front_end/testcases/general/redirecting_constructor.dart.strong.expect b/pkg/front_end/testcases/general/redirecting_constructor.dart.strong.expect
index 64d4160..9319f4c 100644
--- a/pkg/front_end/testcases/general/redirecting_constructor.dart.strong.expect
+++ b/pkg/front_end/testcases/general/redirecting_constructor.dart.strong.expect
@@ -9,6 +9,16 @@
     ;
   static factory fisk() → self::A*
     let dynamic #redirecting_factory = self::B::• in invalid-expression;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A {
   synthetic constructor •() → self::B*
diff --git a/pkg/front_end/testcases/general/redirecting_constructor.dart.strong.transformed.expect b/pkg/front_end/testcases/general/redirecting_constructor.dart.strong.transformed.expect
index aa1e6b1..e1616fd 100644
--- a/pkg/front_end/testcases/general/redirecting_constructor.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general/redirecting_constructor.dart.strong.transformed.expect
@@ -9,6 +9,16 @@
     ;
   static factory fisk() → self::A*
     let<BottomType> #redirecting_factory = self::B::• in invalid-expression;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A {
   synthetic constructor •() → self::B*
diff --git a/pkg/front_end/testcases/general/redirecting_factory.dart.outline.expect b/pkg/front_end/testcases/general/redirecting_factory.dart.outline.expect
index ba037f1..b2aa58c 100644
--- a/pkg/front_end/testcases/general/redirecting_factory.dart.outline.expect
+++ b/pkg/front_end/testcases/general/redirecting_factory.dart.outline.expect
@@ -16,44 +16,134 @@
   abstract get x() → core::int*;
   static factory •<Tf extends core::Object* = dynamic>(core::int* x) → self::FooBase<self::FooBase::•::Tf*>*
     let dynamic #redirecting_factory = self::Foo::• in let self::FooBase::•::Tf* #typeArg0 = null in invalid-expression;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class Foo<T extends core::Object* = dynamic> extends core::Object implements self::FooBase<dynamic> {
   static field dynamic _redirecting# = <dynamic>[self::Foo::•];
   static factory •<T extends core::Object* = dynamic>(core::int* x) → self::Foo<self::Foo::•::T*>*
     let dynamic #redirecting_factory = self::Bar::• in let core::String* #typeArg0 = null in let self::Foo::•::T* #typeArg1 = null in invalid-expression;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Bar<Sb extends core::Object* = dynamic, Tb extends core::Object* = dynamic> extends core::Object implements self::Foo<self::Bar::Tb*> {
   field core::int* x;
   constructor •(core::int* x) → self::Bar<self::Bar::Sb*, self::Bar::Tb*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Builder<X extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::Builder<self::Builder::X*>*
     ;
   method method() → dynamic
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class SimpleCase<A extends core::Object* = dynamic, B extends core::Object* = dynamic> extends core::Object {
   static field dynamic _redirecting# = <dynamic>[self::SimpleCase::•];
   static factory •<A extends core::Object* = dynamic, B extends core::Object* = dynamic>() → self::SimpleCase<self::SimpleCase::•::A*, self::SimpleCase::•::B*>*
     let dynamic #redirecting_factory = self::SimpleCaseImpl::• in let self::SimpleCase::•::A* #typeArg0 = null in let self::SimpleCase::•::B* #typeArg1 = null in invalid-expression;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class SimpleCaseImpl<Ai extends core::Object* = dynamic, Bi extends core::Object* = dynamic> extends core::Object implements self::SimpleCase<self::SimpleCaseImpl::Ai*, self::SimpleCaseImpl::Bi*> {
   static field dynamic _redirecting# = <dynamic>[self::SimpleCaseImpl::•];
   static factory •<Ai extends core::Object* = dynamic, Bi extends core::Object* = dynamic>() → self::SimpleCaseImpl<self::SimpleCaseImpl::•::Ai*, self::SimpleCaseImpl::•::Bi*>*
     let dynamic #redirecting_factory = self::SimpleCaseImpl2::• in let self::SimpleCaseImpl::•::Ai* #typeArg0 = null in let self::SimpleCaseImpl::•::Bi* #typeArg1 = null in invalid-expression;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class SimpleCaseImpl2<Ai2 extends core::Object* = dynamic, Bi2 extends core::Object* = dynamic> extends core::Object implements self::SimpleCaseImpl<self::SimpleCaseImpl2::Ai2*, self::SimpleCaseImpl2::Bi2*> {
   synthetic constructor •() → self::SimpleCaseImpl2<self::SimpleCaseImpl2::Ai2*, self::SimpleCaseImpl2::Bi2*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Base<M extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::Base<self::Base::M*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Mixin<M extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::Mixin<self::Mixin::M*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Mix<M extends core::Object* = dynamic> = self::Base<self::Mix::M*> with self::Mixin<self::Mix::M*> {
   synthetic constructor •() → self::Mix<self::Mix::M*>*
diff --git a/pkg/front_end/testcases/general/redirecting_factory.dart.strong.expect b/pkg/front_end/testcases/general/redirecting_factory.dart.strong.expect
index 4de86d6..f2313d0 100644
--- a/pkg/front_end/testcases/general/redirecting_factory.dart.strong.expect
+++ b/pkg/front_end/testcases/general/redirecting_factory.dart.strong.expect
@@ -16,11 +16,31 @@
   abstract get x() → core::int*;
   static factory •<Tf extends core::Object* = dynamic>(core::int* x) → self::FooBase<self::FooBase::•::Tf*>*
     let dynamic #redirecting_factory = self::Foo::• in let self::FooBase::•::Tf* #typeArg0 = null in invalid-expression;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class Foo<T extends core::Object* = dynamic> extends core::Object implements self::FooBase<dynamic> {
   static field dynamic _redirecting# = <dynamic>[self::Foo::•];
   static factory •<T extends core::Object* = dynamic>(core::int* x) → self::Foo<self::Foo::•::T*>*
     let dynamic #redirecting_factory = self::Bar::• in let core::String* #typeArg0 = null in let self::Foo::•::T* #typeArg1 = null in invalid-expression;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Bar<Sb extends core::Object* = dynamic, Tb extends core::Object* = dynamic> extends core::Object implements self::Foo<self::Bar::Tb*> {
   field core::int* x;
@@ -28,6 +48,16 @@
     : self::Bar::x = x, super core::Object::•() {
     core::print("Bar<${self::Bar::Sb*},${self::Bar::Tb*}>");
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Builder<X extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::Builder<self::Builder::X*>*
@@ -36,31 +66,91 @@
   method method() → dynamic {
     return new self::Bar::•<core::String*, self::Builder::X*>(4);
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class SimpleCase<A extends core::Object* = dynamic, B extends core::Object* = dynamic> extends core::Object {
   static field dynamic _redirecting# = <dynamic>[self::SimpleCase::•];
   static factory •<A extends core::Object* = dynamic, B extends core::Object* = dynamic>() → self::SimpleCase<self::SimpleCase::•::A*, self::SimpleCase::•::B*>*
     let dynamic #redirecting_factory = self::SimpleCaseImpl::• in let self::SimpleCase::•::A* #typeArg0 = null in let self::SimpleCase::•::B* #typeArg1 = null in invalid-expression;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class SimpleCaseImpl<Ai extends core::Object* = dynamic, Bi extends core::Object* = dynamic> extends core::Object implements self::SimpleCase<self::SimpleCaseImpl::Ai*, self::SimpleCaseImpl::Bi*> {
   static field dynamic _redirecting# = <dynamic>[self::SimpleCaseImpl::•];
   static factory •<Ai extends core::Object* = dynamic, Bi extends core::Object* = dynamic>() → self::SimpleCaseImpl<self::SimpleCaseImpl::•::Ai*, self::SimpleCaseImpl::•::Bi*>*
     let dynamic #redirecting_factory = self::SimpleCaseImpl2::• in let self::SimpleCaseImpl::•::Ai* #typeArg0 = null in let self::SimpleCaseImpl::•::Bi* #typeArg1 = null in invalid-expression;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class SimpleCaseImpl2<Ai2 extends core::Object* = dynamic, Bi2 extends core::Object* = dynamic> extends core::Object implements self::SimpleCaseImpl<self::SimpleCaseImpl2::Ai2*, self::SimpleCaseImpl2::Bi2*> {
   synthetic constructor •() → self::SimpleCaseImpl2<self::SimpleCaseImpl2::Ai2*, self::SimpleCaseImpl2::Bi2*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Base<M extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::Base<self::Base::M*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Mixin<M extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::Mixin<self::Mixin::M*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Mix<M extends core::Object* = dynamic> = self::Base<self::Mix::M*> with self::Mixin<self::Mix::M*> {
   synthetic constructor •() → self::Mix<self::Mix::M*>*
diff --git a/pkg/front_end/testcases/general/redirecting_factory.dart.strong.transformed.expect b/pkg/front_end/testcases/general/redirecting_factory.dart.strong.transformed.expect
index f5c4fb6..0b6bd8b 100644
--- a/pkg/front_end/testcases/general/redirecting_factory.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general/redirecting_factory.dart.strong.transformed.expect
@@ -16,11 +16,31 @@
   abstract get x() → core::int*;
   static factory •<Tf extends core::Object* = dynamic>(core::int* x) → self::FooBase<self::FooBase::•::Tf*>*
     let <T extends core::Object* = dynamic>(core::int*) →* self::Foo<T*>* #redirecting_factory = self::Foo::• in let self::FooBase::•::Tf* #typeArg0 = null in invalid-expression;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class Foo<T extends core::Object* = dynamic> extends core::Object implements self::FooBase<dynamic> {
   static field dynamic _redirecting# = <dynamic>[self::Foo::•];
   static factory •<T extends core::Object* = dynamic>(core::int* x) → self::Foo<self::Foo::•::T*>*
     let<BottomType> #redirecting_factory = self::Bar::• in let core::String* #typeArg0 = null in let self::Foo::•::T* #typeArg1 = null in invalid-expression;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Bar<Sb extends core::Object* = dynamic, Tb extends core::Object* = dynamic> extends core::Object implements self::Foo<self::Bar::Tb*> {
   field core::int* x;
@@ -28,6 +48,16 @@
     : self::Bar::x = x, super core::Object::•() {
     core::print("Bar<${self::Bar::Sb*},${self::Bar::Tb*}>");
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Builder<X extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::Builder<self::Builder::X*>*
@@ -36,36 +66,106 @@
   method method() → dynamic {
     return new self::Bar::•<core::String*, self::Builder::X*>(4);
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class SimpleCase<A extends core::Object* = dynamic, B extends core::Object* = dynamic> extends core::Object {
   static field dynamic _redirecting# = <dynamic>[self::SimpleCase::•];
   static factory •<A extends core::Object* = dynamic, B extends core::Object* = dynamic>() → self::SimpleCase<self::SimpleCase::•::A*, self::SimpleCase::•::B*>*
     let <Ai extends core::Object* = dynamic, Bi extends core::Object* = dynamic>() →* self::SimpleCaseImpl<Ai*, Bi*>* #redirecting_factory = self::SimpleCaseImpl::• in let self::SimpleCase::•::A* #typeArg0 = null in let self::SimpleCase::•::B* #typeArg1 = null in invalid-expression;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class SimpleCaseImpl<Ai extends core::Object* = dynamic, Bi extends core::Object* = dynamic> extends core::Object implements self::SimpleCase<self::SimpleCaseImpl::Ai*, self::SimpleCaseImpl::Bi*> {
   static field dynamic _redirecting# = <dynamic>[self::SimpleCaseImpl::•];
   static factory •<Ai extends core::Object* = dynamic, Bi extends core::Object* = dynamic>() → self::SimpleCaseImpl<self::SimpleCaseImpl::•::Ai*, self::SimpleCaseImpl::•::Bi*>*
     let<BottomType> #redirecting_factory = self::SimpleCaseImpl2::• in let self::SimpleCaseImpl::•::Ai* #typeArg0 = null in let self::SimpleCaseImpl::•::Bi* #typeArg1 = null in invalid-expression;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class SimpleCaseImpl2<Ai2 extends core::Object* = dynamic, Bi2 extends core::Object* = dynamic> extends core::Object implements self::SimpleCaseImpl<self::SimpleCaseImpl2::Ai2*, self::SimpleCaseImpl2::Bi2*> {
   synthetic constructor •() → self::SimpleCaseImpl2<self::SimpleCaseImpl2::Ai2*, self::SimpleCaseImpl2::Bi2*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Base<M extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::Base<self::Base::M*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Mixin<M extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::Mixin<self::Mixin::M*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Mix<M extends core::Object* = dynamic> extends self::Base<self::Mix::M*> implements self::Mixin<self::Mix::M*> /*isEliminatedMixin*/  {
   synthetic constructor •() → self::Mix<self::Mix::M*>*
     : super self::Base::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   core::print(new self::Bar::•<core::String*, core::double*>(4).{self::FooBase::x});
diff --git a/pkg/front_end/testcases/general/redirecting_factory_chain_test.dart.outline.expect b/pkg/front_end/testcases/general/redirecting_factory_chain_test.dart.outline.expect
index b81eb59..06c7106 100644
--- a/pkg/front_end/testcases/general/redirecting_factory_chain_test.dart.outline.expect
+++ b/pkg/front_end/testcases/general/redirecting_factory_chain_test.dart.outline.expect
@@ -10,6 +10,16 @@
     let dynamic #redirecting_factory = self::A::• in invalid-expression;
   static factory second() → self::A*
     let dynamic #redirecting_factory = self::A::first in invalid-expression;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/general/redirecting_factory_chain_test.dart.strong.expect b/pkg/front_end/testcases/general/redirecting_factory_chain_test.dart.strong.expect
index 0acfd3a..b9fa521 100644
--- a/pkg/front_end/testcases/general/redirecting_factory_chain_test.dart.strong.expect
+++ b/pkg/front_end/testcases/general/redirecting_factory_chain_test.dart.strong.expect
@@ -11,6 +11,16 @@
     let dynamic #redirecting_factory = self::A::• in invalid-expression;
   static factory second() → self::A*
     let dynamic #redirecting_factory = self::A::first in invalid-expression;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   new self::A::•();
diff --git a/pkg/front_end/testcases/general/redirecting_factory_chain_test.dart.strong.transformed.expect b/pkg/front_end/testcases/general/redirecting_factory_chain_test.dart.strong.transformed.expect
index 147eb39..3a03a47 100644
--- a/pkg/front_end/testcases/general/redirecting_factory_chain_test.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general/redirecting_factory_chain_test.dart.strong.transformed.expect
@@ -11,6 +11,16 @@
     let<BottomType> #redirecting_factory = self::A::• in invalid-expression;
   static factory second() → self::A*
     let () →* self::A* #redirecting_factory = self::A::first in invalid-expression;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   new self::A::•();
diff --git a/pkg/front_end/testcases/general/redirecting_factory_const_inference.dart.outline.expect b/pkg/front_end/testcases/general/redirecting_factory_const_inference.dart.outline.expect
index 3ed80bf..87048b9 100644
--- a/pkg/front_end/testcases/general/redirecting_factory_const_inference.dart.outline.expect
+++ b/pkg/front_end/testcases/general/redirecting_factory_const_inference.dart.outline.expect
@@ -6,16 +6,46 @@
   static field dynamic _redirecting# = <dynamic>[self::_X::•];
   static factory •<T extends core::Object* = dynamic>() → self::_X<self::_X::•::T*>*
     let dynamic #redirecting_factory = self::_Y::• in let self::_X::•::T* #typeArg0 = null in invalid-expression;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class _Y<T extends core::Object* = dynamic> extends core::Object implements self::_X<self::_Y::T*> /*hasConstConstructor*/  {
   const constructor •() → self::_Y<self::_Y::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class A<T extends core::Object* = dynamic> extends core::Object {
   generic-covariant-impl field self::_X<self::A::T*>* x;
   constructor •(self::_X<self::A::T*>* x) → self::A<self::A::T*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B<T extends core::Object* = dynamic> extends self::A<self::B::T*> {
   constructor •() → self::B<self::B::T*>*
diff --git a/pkg/front_end/testcases/general/redirecting_factory_const_inference.dart.strong.expect b/pkg/front_end/testcases/general/redirecting_factory_const_inference.dart.strong.expect
index 397a76d..9a92943 100644
--- a/pkg/front_end/testcases/general/redirecting_factory_const_inference.dart.strong.expect
+++ b/pkg/front_end/testcases/general/redirecting_factory_const_inference.dart.strong.expect
@@ -6,17 +6,47 @@
   static field dynamic _redirecting# = <dynamic>[self::_X::•];
   static factory •<T extends core::Object* = dynamic>() → self::_X<self::_X::•::T*>*
     let dynamic #redirecting_factory = self::_Y::• in let self::_X::•::T* #typeArg0 = null in invalid-expression;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class _Y<T extends core::Object* = dynamic> extends core::Object implements self::_X<self::_Y::T*> /*hasConstConstructor*/  {
   const constructor •() → self::_Y<self::_Y::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class A<T extends core::Object* = dynamic> extends core::Object {
   generic-covariant-impl field self::_X<self::A::T*>* x;
   constructor •(self::_X<self::A::T*>* x) → self::A<self::A::T*>*
     : self::A::x = x, super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B<T extends core::Object* = dynamic> extends self::A<self::B::T*> {
   constructor •() → self::B<self::B::T*>*
diff --git a/pkg/front_end/testcases/general/redirecting_factory_const_inference.dart.strong.transformed.expect b/pkg/front_end/testcases/general/redirecting_factory_const_inference.dart.strong.transformed.expect
index 2b04ded..cff025b 100644
--- a/pkg/front_end/testcases/general/redirecting_factory_const_inference.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general/redirecting_factory_const_inference.dart.strong.transformed.expect
@@ -6,17 +6,47 @@
   static field dynamic _redirecting# = <dynamic>[self::_X::•];
   static factory •<T extends core::Object* = dynamic>() → self::_X<self::_X::•::T*>*
     let<BottomType> #redirecting_factory = self::_Y::• in let self::_X::•::T* #typeArg0 = null in invalid-expression;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class _Y<T extends core::Object* = dynamic> extends core::Object implements self::_X<self::_Y::T*> /*hasConstConstructor*/  {
   const constructor •() → self::_Y<self::_Y::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class A<T extends core::Object* = dynamic> extends core::Object {
   generic-covariant-impl field self::_X<self::A::T*>* x;
   constructor •(self::_X<self::A::T*>* x) → self::A<self::A::T*>*
     : self::A::x = x, super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B<T extends core::Object* = dynamic> extends self::A<self::B::T*> {
   constructor •() → self::B<self::B::T*>*
diff --git a/pkg/front_end/testcases/general/redirecting_factory_metadata.dart.outline.expect b/pkg/front_end/testcases/general/redirecting_factory_metadata.dart.outline.expect
index 636af62..9ff54fb 100644
--- a/pkg/front_end/testcases/general/redirecting_factory_metadata.dart.outline.expect
+++ b/pkg/front_end/testcases/general/redirecting_factory_metadata.dart.outline.expect
@@ -9,6 +9,16 @@
   @self::forFactoryItself
   static factory •(dynamic p) → self::Foo*
     let dynamic #redirecting_factory = self::Foo::named in invalid-expression;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static const field core::int* forParameter = 1;
 static const field core::int* forFactoryItself = 2;
diff --git a/pkg/front_end/testcases/general/redirecting_factory_metadata.dart.strong.expect b/pkg/front_end/testcases/general/redirecting_factory_metadata.dart.strong.expect
index c3ccb98..660313d 100644
--- a/pkg/front_end/testcases/general/redirecting_factory_metadata.dart.strong.expect
+++ b/pkg/front_end/testcases/general/redirecting_factory_metadata.dart.strong.expect
@@ -10,6 +10,16 @@
   @#C1
   static factory •(@#C2 @#C3 dynamic p) → self::Foo*
     let dynamic #redirecting_factory = self::Foo::named in invalid-expression;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static const field core::int* forParameter = #C2;
 static const field core::int* forFactoryItself = #C1;
diff --git a/pkg/front_end/testcases/general/redirecting_factory_metadata.dart.strong.transformed.expect b/pkg/front_end/testcases/general/redirecting_factory_metadata.dart.strong.transformed.expect
index b80664b..7f43aad 100644
--- a/pkg/front_end/testcases/general/redirecting_factory_metadata.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general/redirecting_factory_metadata.dart.strong.transformed.expect
@@ -10,6 +10,16 @@
   @#C1
   static factory •(@#C2 @#C3 dynamic p) → self::Foo*
     let<BottomType> #redirecting_factory = self::Foo::named in invalid-expression;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static const field core::int* forParameter = #C2;
 static const field core::int* forFactoryItself = #C1;
diff --git a/pkg/front_end/testcases/general/redirecting_factory_simple_test.dart.outline.expect b/pkg/front_end/testcases/general/redirecting_factory_simple_test.dart.outline.expect
index fc62503..6445538 100644
--- a/pkg/front_end/testcases/general/redirecting_factory_simple_test.dart.outline.expect
+++ b/pkg/front_end/testcases/general/redirecting_factory_simple_test.dart.outline.expect
@@ -8,6 +8,16 @@
     ;
   static factory redir() → self::A*
     let dynamic #redirecting_factory = self::A::• in invalid-expression;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/general/redirecting_factory_simple_test.dart.strong.expect b/pkg/front_end/testcases/general/redirecting_factory_simple_test.dart.strong.expect
index c2b0440..47ea2ec 100644
--- a/pkg/front_end/testcases/general/redirecting_factory_simple_test.dart.strong.expect
+++ b/pkg/front_end/testcases/general/redirecting_factory_simple_test.dart.strong.expect
@@ -9,6 +9,16 @@
     ;
   static factory redir() → self::A*
     let dynamic #redirecting_factory = self::A::• in invalid-expression;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   new self::A::•();
diff --git a/pkg/front_end/testcases/general/redirecting_factory_simple_test.dart.strong.transformed.expect b/pkg/front_end/testcases/general/redirecting_factory_simple_test.dart.strong.transformed.expect
index 1f0102f..b9b688e 100644
--- a/pkg/front_end/testcases/general/redirecting_factory_simple_test.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general/redirecting_factory_simple_test.dart.strong.transformed.expect
@@ -9,6 +9,16 @@
     ;
   static factory redir() → self::A*
     let<BottomType> #redirecting_factory = self::A::• in invalid-expression;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   new self::A::•();
diff --git a/pkg/front_end/testcases/general/redirecting_factory_typeargs_test.dart.outline.expect b/pkg/front_end/testcases/general/redirecting_factory_typeargs_test.dart.outline.expect
index caf6826..fee78a6a 100644
--- a/pkg/front_end/testcases/general/redirecting_factory_typeargs_test.dart.outline.expect
+++ b/pkg/front_end/testcases/general/redirecting_factory_typeargs_test.dart.outline.expect
@@ -5,6 +5,16 @@
 class X extends core::Object {
   synthetic constructor •() → self::X*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Y extends self::X {
   synthetic constructor •() → self::Y*
@@ -16,6 +26,16 @@
     ;
   static factory redir() → self::A*
     let dynamic #redirecting_factory = self::B::• in let self::Y* #typeArg0 = null in invalid-expression;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B<T extends self::X* = self::X*> extends self::A {
   constructor •() → self::B<self::B::T*>*
diff --git a/pkg/front_end/testcases/general/redirecting_factory_typeargs_test.dart.strong.expect b/pkg/front_end/testcases/general/redirecting_factory_typeargs_test.dart.strong.expect
index 4c77d36..938fe3f 100644
--- a/pkg/front_end/testcases/general/redirecting_factory_typeargs_test.dart.strong.expect
+++ b/pkg/front_end/testcases/general/redirecting_factory_typeargs_test.dart.strong.expect
@@ -6,6 +6,16 @@
   synthetic constructor •() → self::X*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Y extends self::X {
   synthetic constructor •() → self::Y*
@@ -19,6 +29,16 @@
     ;
   static factory redir() → self::A*
     let dynamic #redirecting_factory = self::B::• in let self::Y* #typeArg0 = null in invalid-expression;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B<T extends self::X* = self::X*> extends self::A {
   constructor •() → self::B<self::B::T*>*
diff --git a/pkg/front_end/testcases/general/redirecting_factory_typeargs_test.dart.strong.transformed.expect b/pkg/front_end/testcases/general/redirecting_factory_typeargs_test.dart.strong.transformed.expect
index fa75003..e95fb8e 100644
--- a/pkg/front_end/testcases/general/redirecting_factory_typeargs_test.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general/redirecting_factory_typeargs_test.dart.strong.transformed.expect
@@ -6,6 +6,16 @@
   synthetic constructor •() → self::X*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Y extends self::X {
   synthetic constructor •() → self::Y*
@@ -19,6 +29,16 @@
     ;
   static factory redir() → self::A*
     let<BottomType> #redirecting_factory = self::B::• in let self::Y* #typeArg0 = null in invalid-expression;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B<T extends self::X* = self::X*> extends self::A {
   constructor •() → self::B<self::B::T*>*
diff --git a/pkg/front_end/testcases/general/redirecting_factory_typeparam_test.dart.outline.expect b/pkg/front_end/testcases/general/redirecting_factory_typeparam_test.dart.outline.expect
index 4526c6e..fd30dea 100644
--- a/pkg/front_end/testcases/general/redirecting_factory_typeparam_test.dart.outline.expect
+++ b/pkg/front_end/testcases/general/redirecting_factory_typeparam_test.dart.outline.expect
@@ -8,6 +8,16 @@
     ;
   static factory redir<T extends core::Object* = dynamic, S extends core::Object* = dynamic>(self::A::redir::T* t, self::A::redir::S* s) → self::A<self::A::redir::T*, self::A::redir::S*>*
     let dynamic #redirecting_factory = self::A::• in let self::A::redir::T* #typeArg0 = null in let self::A::redir::S* #typeArg1 = null in invalid-expression;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/general/redirecting_factory_typeparam_test.dart.strong.expect b/pkg/front_end/testcases/general/redirecting_factory_typeparam_test.dart.strong.expect
index 55767fb..14b3db5 100644
--- a/pkg/front_end/testcases/general/redirecting_factory_typeparam_test.dart.strong.expect
+++ b/pkg/front_end/testcases/general/redirecting_factory_typeparam_test.dart.strong.expect
@@ -9,6 +9,16 @@
     ;
   static factory redir<T extends core::Object* = dynamic, S extends core::Object* = dynamic>(self::A::redir::T* t, self::A::redir::S* s) → self::A<self::A::redir::T*, self::A::redir::S*>*
     let dynamic #redirecting_factory = self::A::• in let self::A::redir::T* #typeArg0 = null in let self::A::redir::S* #typeArg1 = null in invalid-expression;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   new self::A::•<core::int*, core::String*>(42, "foobar");
diff --git a/pkg/front_end/testcases/general/redirecting_factory_typeparam_test.dart.strong.transformed.expect b/pkg/front_end/testcases/general/redirecting_factory_typeparam_test.dart.strong.transformed.expect
index 60f8cfb..0acb2f6 100644
--- a/pkg/front_end/testcases/general/redirecting_factory_typeparam_test.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general/redirecting_factory_typeparam_test.dart.strong.transformed.expect
@@ -9,6 +9,16 @@
     ;
   static factory redir<T extends core::Object* = dynamic, S extends core::Object* = dynamic>(self::A::redir::T* t, self::A::redir::S* s) → self::A<self::A::redir::T*, self::A::redir::S*>*
     let<BottomType> #redirecting_factory = self::A::• in let self::A::redir::T* #typeArg0 = null in let self::A::redir::S* #typeArg1 = null in invalid-expression;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   new self::A::•<core::int*, core::String*>(42, "foobar");
diff --git a/pkg/front_end/testcases/general/redirecting_factory_typeparambounds_test.dart.outline.expect b/pkg/front_end/testcases/general/redirecting_factory_typeparambounds_test.dart.outline.expect
index 5c26d8c..88b225e 100644
--- a/pkg/front_end/testcases/general/redirecting_factory_typeparambounds_test.dart.outline.expect
+++ b/pkg/front_end/testcases/general/redirecting_factory_typeparambounds_test.dart.outline.expect
@@ -5,6 +5,16 @@
 class X extends core::Object {
   synthetic constructor •() → self::X*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Y extends self::X {
   synthetic constructor •() → self::Y*
@@ -16,6 +26,16 @@
     ;
   static factory redir<T extends core::Object* = dynamic, S extends self::A::redir::T* = dynamic>(self::A::redir::T* t, self::A::redir::S* s) → self::A<self::A::redir::T*, self::A::redir::S*>*
     let dynamic #redirecting_factory = self::A::• in let self::A::redir::T* #typeArg0 = null in let self::A::redir::S* #typeArg1 = null in invalid-expression;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/general/redirecting_factory_typeparambounds_test.dart.strong.expect b/pkg/front_end/testcases/general/redirecting_factory_typeparambounds_test.dart.strong.expect
index 3d46949..b8c30d1 100644
--- a/pkg/front_end/testcases/general/redirecting_factory_typeparambounds_test.dart.strong.expect
+++ b/pkg/front_end/testcases/general/redirecting_factory_typeparambounds_test.dart.strong.expect
@@ -6,6 +6,16 @@
   synthetic constructor •() → self::X*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Y extends self::X {
   synthetic constructor •() → self::Y*
@@ -19,6 +29,16 @@
     ;
   static factory redir<T extends core::Object* = dynamic, S extends self::A::redir::T* = dynamic>(self::A::redir::T* t, self::A::redir::S* s) → self::A<self::A::redir::T*, self::A::redir::S*>*
     let dynamic #redirecting_factory = self::A::• in let self::A::redir::T* #typeArg0 = null in let self::A::redir::S* #typeArg1 = null in invalid-expression;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   new self::A::•<self::X*, self::Y*>(new self::X::•(), new self::Y::•());
diff --git a/pkg/front_end/testcases/general/redirecting_factory_typeparambounds_test.dart.strong.transformed.expect b/pkg/front_end/testcases/general/redirecting_factory_typeparambounds_test.dart.strong.transformed.expect
index bafad0a..0b7c4a9 100644
--- a/pkg/front_end/testcases/general/redirecting_factory_typeparambounds_test.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general/redirecting_factory_typeparambounds_test.dart.strong.transformed.expect
@@ -6,6 +6,16 @@
   synthetic constructor •() → self::X*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Y extends self::X {
   synthetic constructor •() → self::Y*
@@ -19,6 +29,16 @@
     ;
   static factory redir<T extends core::Object* = dynamic, S extends self::A::redir::T* = dynamic>(self::A::redir::T* t, self::A::redir::S* s) → self::A<self::A::redir::T*, self::A::redir::S*>*
     let<BottomType> #redirecting_factory = self::A::• in let self::A::redir::T* #typeArg0 = null in let self::A::redir::S* #typeArg1 = null in invalid-expression;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   new self::A::•<self::X*, self::Y*>(new self::X::•(), new self::Y::•());
diff --git a/pkg/front_end/testcases/general/redirecting_initializer_arguments_assignable_test.dart.outline.expect b/pkg/front_end/testcases/general/redirecting_initializer_arguments_assignable_test.dart.outline.expect
index 0974ead..fefbdf2 100644
--- a/pkg/front_end/testcases/general/redirecting_initializer_arguments_assignable_test.dart.outline.expect
+++ b/pkg/front_end/testcases/general/redirecting_initializer_arguments_assignable_test.dart.outline.expect
@@ -5,6 +5,16 @@
 class X extends core::Object {
   synthetic constructor •() → self::X*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Foo<T extends self::X* = self::X*> extends core::Object {
   generic-covariant-impl field self::Foo::T* x;
@@ -14,6 +24,16 @@
     ;
   constructor _internal({self::Foo::T* x}) → self::Foo<self::Foo::T*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → void
   ;
diff --git a/pkg/front_end/testcases/general/redirecting_initializer_arguments_assignable_test.dart.strong.expect b/pkg/front_end/testcases/general/redirecting_initializer_arguments_assignable_test.dart.strong.expect
index 261b231..b172e13 100644
--- a/pkg/front_end/testcases/general/redirecting_initializer_arguments_assignable_test.dart.strong.expect
+++ b/pkg/front_end/testcases/general/redirecting_initializer_arguments_assignable_test.dart.strong.expect
@@ -6,6 +6,16 @@
   synthetic constructor •() → self::X*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Foo<T extends self::X* = self::X*> extends core::Object {
   generic-covariant-impl field self::Foo::T* x;
@@ -18,6 +28,16 @@
   constructor _internal({self::Foo::T* x = #C1}) → self::Foo<self::Foo::T*>*
     : self::Foo::x = x, super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → void {}
 
diff --git a/pkg/front_end/testcases/general/redirecting_initializer_arguments_assignable_test.dart.strong.transformed.expect b/pkg/front_end/testcases/general/redirecting_initializer_arguments_assignable_test.dart.strong.transformed.expect
index 261b231..b172e13 100644
--- a/pkg/front_end/testcases/general/redirecting_initializer_arguments_assignable_test.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general/redirecting_initializer_arguments_assignable_test.dart.strong.transformed.expect
@@ -6,6 +6,16 @@
   synthetic constructor •() → self::X*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Foo<T extends self::X* = self::X*> extends core::Object {
   generic-covariant-impl field self::Foo::T* x;
@@ -18,6 +28,16 @@
   constructor _internal({self::Foo::T* x = #C1}) → self::Foo<self::Foo::T*>*
     : self::Foo::x = x, super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → void {}
 
diff --git a/pkg/front_end/testcases/general/redirecting_initializer_arguments_test.dart.outline.expect b/pkg/front_end/testcases/general/redirecting_initializer_arguments_test.dart.outline.expect
index 1a2189e..ef37759 100644
--- a/pkg/front_end/testcases/general/redirecting_initializer_arguments_test.dart.outline.expect
+++ b/pkg/front_end/testcases/general/redirecting_initializer_arguments_test.dart.outline.expect
@@ -8,6 +8,16 @@
     ;
   constructor _internal({self::Foo::T* x}) → self::Foo<self::Foo::T*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → void
   ;
diff --git a/pkg/front_end/testcases/general/redirecting_initializer_arguments_test.dart.strong.expect b/pkg/front_end/testcases/general/redirecting_initializer_arguments_test.dart.strong.expect
index 1a27647..6ef1c4f 100644
--- a/pkg/front_end/testcases/general/redirecting_initializer_arguments_test.dart.strong.expect
+++ b/pkg/front_end/testcases/general/redirecting_initializer_arguments_test.dart.strong.expect
@@ -19,6 +19,16 @@
   constructor _internal({self::Foo::T* x = #C1}) → self::Foo<self::Foo::T*>*
     : self::Foo::x = x, super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → void {}
 
diff --git a/pkg/front_end/testcases/general/redirecting_initializer_arguments_test.dart.strong.transformed.expect b/pkg/front_end/testcases/general/redirecting_initializer_arguments_test.dart.strong.transformed.expect
index 1a27647..6ef1c4f 100644
--- a/pkg/front_end/testcases/general/redirecting_initializer_arguments_test.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general/redirecting_initializer_arguments_test.dart.strong.transformed.expect
@@ -19,6 +19,16 @@
   constructor _internal({self::Foo::T* x = #C1}) → self::Foo<self::Foo::T*>*
     : self::Foo::x = x, super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → void {}
 
diff --git a/pkg/front_end/testcases/general/redirection_chain_type_arguments.dart.outline.expect b/pkg/front_end/testcases/general/redirection_chain_type_arguments.dart.outline.expect
index 1f95ad0..4f9c017 100644
--- a/pkg/front_end/testcases/general/redirection_chain_type_arguments.dart.outline.expect
+++ b/pkg/front_end/testcases/general/redirection_chain_type_arguments.dart.outline.expect
@@ -10,6 +10,16 @@
     ;
   static factory •<T extends core::Object* = dynamic>() → self::A<self::A::•::T*>*
     let dynamic #redirecting_factory = self::B::• in let self::A::•::T* #typeArg0 = null in let core::num* #typeArg1 = null in invalid-expression;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B<U extends core::Object* = dynamic, W extends core::Object* = dynamic> extends self::A<self::B::U*> {
   static field dynamic _redirecting# = <dynamic>[self::B::•];
diff --git a/pkg/front_end/testcases/general/redirection_chain_type_arguments.dart.strong.expect b/pkg/front_end/testcases/general/redirection_chain_type_arguments.dart.strong.expect
index cbfe339..f6ee22f 100644
--- a/pkg/front_end/testcases/general/redirection_chain_type_arguments.dart.strong.expect
+++ b/pkg/front_end/testcases/general/redirection_chain_type_arguments.dart.strong.expect
@@ -12,6 +12,16 @@
     ;
   static factory •<T extends core::Object* = dynamic>() → self::A<self::A::•::T*>*
     let dynamic #redirecting_factory = self::B::• in let self::A::•::T* #typeArg0 = null in let core::num* #typeArg1 = null in invalid-expression;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B<U extends core::Object* = dynamic, W extends core::Object* = dynamic> extends self::A<self::B::U*> {
   static field dynamic _redirecting# = <dynamic>[self::B::•];
diff --git a/pkg/front_end/testcases/general/redirection_chain_type_arguments.dart.strong.transformed.expect b/pkg/front_end/testcases/general/redirection_chain_type_arguments.dart.strong.transformed.expect
index f3111be..16d295b 100644
--- a/pkg/front_end/testcases/general/redirection_chain_type_arguments.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general/redirection_chain_type_arguments.dart.strong.transformed.expect
@@ -12,6 +12,16 @@
     ;
   static factory •<T extends core::Object* = dynamic>() → self::A<self::A::•::T*>*
     let <U extends core::Object* = dynamic, W extends core::Object* = dynamic>() →* self::B<U*, W*>* #redirecting_factory = self::B::• in let self::A::•::T* #typeArg0 = null in let core::num* #typeArg1 = null in invalid-expression;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B<U extends core::Object* = dynamic, W extends core::Object* = dynamic> extends self::A<self::B::U*> {
   static field dynamic _redirecting# = <dynamic>[self::B::•];
diff --git a/pkg/front_end/testcases/general/redirection_chain_type_arguments_subst.dart.outline.expect b/pkg/front_end/testcases/general/redirection_chain_type_arguments_subst.dart.outline.expect
index 4985b32..2f1e5b9 100644
--- a/pkg/front_end/testcases/general/redirection_chain_type_arguments_subst.dart.outline.expect
+++ b/pkg/front_end/testcases/general/redirection_chain_type_arguments_subst.dart.outline.expect
@@ -10,6 +10,16 @@
     ;
   static factory •<T extends core::Object* = dynamic>() → self::A<self::A::•::T*>*
     let dynamic #redirecting_factory = self::B::• in let self::A::•::T* #typeArg0 = null in let core::List<self::A::•::T*>* #typeArg1 = null in invalid-expression;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class B<U extends core::Object* = dynamic, W extends core::Object* = dynamic> extends self::A<self::B::U*> {
   static field dynamic _redirecting# = <dynamic>[self::B::•];
diff --git a/pkg/front_end/testcases/general/redirection_chain_type_arguments_subst.dart.strong.expect b/pkg/front_end/testcases/general/redirection_chain_type_arguments_subst.dart.strong.expect
index 4009f40..bfeacaa 100644
--- a/pkg/front_end/testcases/general/redirection_chain_type_arguments_subst.dart.strong.expect
+++ b/pkg/front_end/testcases/general/redirection_chain_type_arguments_subst.dart.strong.expect
@@ -12,6 +12,16 @@
     ;
   static factory •<T extends core::Object* = dynamic>() → self::A<self::A::•::T*>*
     let dynamic #redirecting_factory = self::B::• in let self::A::•::T* #typeArg0 = null in let core::List<self::A::•::T*>* #typeArg1 = null in invalid-expression;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class B<U extends core::Object* = dynamic, W extends core::Object* = dynamic> extends self::A<self::B::U*> {
   static field dynamic _redirecting# = <dynamic>[self::B::•];
diff --git a/pkg/front_end/testcases/general/redirection_chain_type_arguments_subst.dart.strong.transformed.expect b/pkg/front_end/testcases/general/redirection_chain_type_arguments_subst.dart.strong.transformed.expect
index 6aa25a9..28c420e 100644
--- a/pkg/front_end/testcases/general/redirection_chain_type_arguments_subst.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general/redirection_chain_type_arguments_subst.dart.strong.transformed.expect
@@ -12,6 +12,16 @@
     ;
   static factory •<T extends core::Object* = dynamic>() → self::A<self::A::•::T*>*
     let <U extends core::Object* = dynamic, W extends core::Object* = dynamic>() →* self::B<U*, W*>* #redirecting_factory = self::B::• in let self::A::•::T* #typeArg0 = null in let core::List<self::A::•::T*>* #typeArg1 = null in invalid-expression;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class B<U extends core::Object* = dynamic, W extends core::Object* = dynamic> extends self::A<self::B::U*> {
   static field dynamic _redirecting# = <dynamic>[self::B::•];
diff --git a/pkg/front_end/testcases/general/redirection_type_arguments.dart.outline.expect b/pkg/front_end/testcases/general/redirection_type_arguments.dart.outline.expect
index b15ac8d..d2404b5 100644
--- a/pkg/front_end/testcases/general/redirection_type_arguments.dart.outline.expect
+++ b/pkg/front_end/testcases/general/redirection_type_arguments.dart.outline.expect
@@ -11,6 +11,16 @@
     ;
   static factory •() → self::A*
     let dynamic #redirecting_factory = self::B::• in let core::String* #typeArg0 = null in invalid-expression;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B<T extends core::Object* = dynamic> extends self::A /*hasConstConstructor*/  {
   const constructor •() → self::B<self::B::T*>*
diff --git a/pkg/front_end/testcases/general/redirection_type_arguments.dart.strong.expect b/pkg/front_end/testcases/general/redirection_type_arguments.dart.strong.expect
index 81c22f9..f7ce759 100644
--- a/pkg/front_end/testcases/general/redirection_type_arguments.dart.strong.expect
+++ b/pkg/front_end/testcases/general/redirection_type_arguments.dart.strong.expect
@@ -12,6 +12,16 @@
     ;
   static factory •() → self::A*
     let dynamic #redirecting_factory = self::B::• in let core::String* #typeArg0 = null in invalid-expression;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B<T extends core::Object* = dynamic> extends self::A /*hasConstConstructor*/  {
   const constructor •() → self::B<self::B::T*>*
diff --git a/pkg/front_end/testcases/general/redirection_type_arguments.dart.strong.transformed.expect b/pkg/front_end/testcases/general/redirection_type_arguments.dart.strong.transformed.expect
index 8c2291d..9ab42b4 100644
--- a/pkg/front_end/testcases/general/redirection_type_arguments.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general/redirection_type_arguments.dart.strong.transformed.expect
@@ -12,6 +12,16 @@
     ;
   static factory •() → self::A*
     let<BottomType> #redirecting_factory = self::B::• in let core::String* #typeArg0 = null in invalid-expression;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B<T extends core::Object* = dynamic> extends self::A /*hasConstConstructor*/  {
   const constructor •() → self::B<self::B::T*>*
diff --git a/pkg/front_end/testcases/general/reject_generic_function_types_in_bounds.dart.outline.expect b/pkg/front_end/testcases/general/reject_generic_function_types_in_bounds.dart.outline.expect
index fa3f49e..69308fb 100644
--- a/pkg/front_end/testcases/general/reject_generic_function_types_in_bounds.dart.outline.expect
+++ b/pkg/front_end/testcases/general/reject_generic_function_types_in_bounds.dart.outline.expect
@@ -12,6 +12,16 @@
 class Hest<TypeX extends <TypeY extends core::Object* = dynamic>(TypeY*) →* TypeY* = dynamic> extends core::Object {
   synthetic constructor •() → self::Hest<self::Hest::TypeX*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/general/reject_generic_function_types_in_bounds.dart.strong.expect b/pkg/front_end/testcases/general/reject_generic_function_types_in_bounds.dart.strong.expect
index f5eae0d..929b08a 100644
--- a/pkg/front_end/testcases/general/reject_generic_function_types_in_bounds.dart.strong.expect
+++ b/pkg/front_end/testcases/general/reject_generic_function_types_in_bounds.dart.strong.expect
@@ -13,5 +13,15 @@
   synthetic constructor •() → self::Hest<self::Hest::TypeX*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general/reject_generic_function_types_in_bounds.dart.strong.transformed.expect b/pkg/front_end/testcases/general/reject_generic_function_types_in_bounds.dart.strong.transformed.expect
index f5eae0d..929b08a 100644
--- a/pkg/front_end/testcases/general/reject_generic_function_types_in_bounds.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general/reject_generic_function_types_in_bounds.dart.strong.transformed.expect
@@ -13,5 +13,15 @@
   synthetic constructor •() → self::Hest<self::Hest::TypeX*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general/sdk_diagnostic.dart.outline.expect b/pkg/front_end/testcases/general/sdk_diagnostic.dart.outline.expect
index 3f5874b..5e3f107 100644
--- a/pkg/front_end/testcases/general/sdk_diagnostic.dart.outline.expect
+++ b/pkg/front_end/testcases/general/sdk_diagnostic.dart.outline.expect
@@ -12,7 +12,7 @@
 //
 // class C extends Iterable<Object> {
 //       ^
-// sdk/lib/core/iterable.dart:156:19: Context: 'Iterable.iterator' is defined here.
+// org-dartlang-sdk:///sdk_nnbd/lib/core/iterable.dart:158:19: Context: 'Iterable.iterator' is defined here.
 //   Iterator<E> get iterator;
 //                   ^^^^^^^^
 //
@@ -22,6 +22,43 @@
 class C extends core::Iterable<core::Object*> {
   synthetic constructor •() → self::C*
     ;
+  abstract member-signature get iterator() → core::Iterator<core::Object*>*;
+  abstract member-signature method cast<R extends core::Object* = dynamic>() → core::Iterable<self::C::cast::R*>*;
+  abstract member-signature method followedBy(generic-covariant-impl core::Iterable<core::Object*>* other) → core::Iterable<core::Object*>*;
+  abstract member-signature method map<T extends core::Object* = dynamic>((core::Object*) →* self::C::map::T* f) → core::Iterable<self::C::map::T*>*;
+  abstract member-signature method where((core::Object*) →* core::bool* test) → core::Iterable<core::Object*>*;
+  abstract member-signature method whereType<T extends core::Object* = dynamic>() → core::Iterable<self::C::whereType::T*>*;
+  abstract member-signature method expand<T extends core::Object* = dynamic>((core::Object*) →* core::Iterable<self::C::expand::T*>* f) → core::Iterable<self::C::expand::T*>*;
+  abstract member-signature method contains(core::Object* element) → core::bool*;
+  abstract member-signature method forEach((core::Object*) →* void f) → void;
+  abstract member-signature method reduce(generic-covariant-impl (core::Object*, core::Object*) →* core::Object* combine) → core::Object*;
+  abstract member-signature method fold<T extends core::Object* = dynamic>(self::C::fold::T* initialValue, (self::C::fold::T*, core::Object*) →* self::C::fold::T* combine) → self::C::fold::T*;
+  abstract member-signature method every((core::Object*) →* core::bool* test) → core::bool*;
+  abstract member-signature method join([core::String* separator]) → core::String*;
+  abstract member-signature method any((core::Object*) →* core::bool* test) → core::bool*;
+  abstract member-signature method toList({core::bool* growable}) → core::List<core::Object*>*;
+  abstract member-signature method toSet() → core::Set<core::Object*>*;
+  abstract member-signature get length() → core::int*;
+  abstract member-signature get isEmpty() → core::bool*;
+  abstract member-signature get isNotEmpty() → core::bool*;
+  abstract member-signature method take(core::int* count) → core::Iterable<core::Object*>*;
+  abstract member-signature method takeWhile((core::Object*) →* core::bool* test) → core::Iterable<core::Object*>*;
+  abstract member-signature method skip(core::int* count) → core::Iterable<core::Object*>*;
+  abstract member-signature method skipWhile((core::Object*) →* core::bool* test) → core::Iterable<core::Object*>*;
+  abstract member-signature method firstWhere((core::Object*) →* core::bool* test, {generic-covariant-impl () →* core::Object* orElse}) → core::Object*;
+  abstract member-signature method lastWhere((core::Object*) →* core::bool* test, {generic-covariant-impl () →* core::Object* orElse}) → core::Object*;
+  abstract member-signature method singleWhere((core::Object*) →* core::bool* test, {generic-covariant-impl () →* core::Object* orElse}) → core::Object*;
+  abstract member-signature method elementAt(core::int* index) → core::Object*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method test() → dynamic
   ;
diff --git a/pkg/front_end/testcases/general/sdk_diagnostic.dart.strong.expect b/pkg/front_end/testcases/general/sdk_diagnostic.dart.strong.expect
index 80fbfff..f857339 100644
--- a/pkg/front_end/testcases/general/sdk_diagnostic.dart.strong.expect
+++ b/pkg/front_end/testcases/general/sdk_diagnostic.dart.strong.expect
@@ -12,15 +12,15 @@
 //
 // class C extends Iterable<Object> {
 //       ^
-// sdk/lib/core/iterable.dart:156:19: Context: 'Iterable.iterator' is defined here.
+// org-dartlang-sdk:///sdk_nnbd/lib/core/iterable.dart:158:19: Context: 'Iterable.iterator' is defined here.
 //   Iterator<E> get iterator;
 //                   ^^^^^^^^
 //
 // pkg/front_end/testcases/general/sdk_diagnostic.dart:12:8: Error: Too few positional arguments: 1 required, 0 given.
 //   print(incorrectArgument: "fisk");
 //        ^
-// sdk/lib/core/print.dart:10:6: Context: Found this candidate, but the arguments don't match.
-// void print(Object object) {
+// org-dartlang-sdk:///sdk_nnbd/lib/core/print.dart:8:6: Context: Found this candidate, but the arguments don't match.
+// void print(Object? object) {
 //      ^^^^^
 //
 import self as self;
@@ -30,6 +30,43 @@
   synthetic constructor •() → self::C*
     : super core::Iterable::•()
     ;
+  abstract member-signature get iterator() → core::Iterator<core::Object*>*;
+  abstract member-signature method cast<R extends core::Object* = dynamic>() → core::Iterable<self::C::cast::R*>*;
+  abstract member-signature method followedBy(generic-covariant-impl core::Iterable<core::Object*>* other) → core::Iterable<core::Object*>*;
+  abstract member-signature method map<T extends core::Object* = dynamic>((core::Object*) →* self::C::map::T* f) → core::Iterable<self::C::map::T*>*;
+  abstract member-signature method where((core::Object*) →* core::bool* test) → core::Iterable<core::Object*>*;
+  abstract member-signature method whereType<T extends core::Object* = dynamic>() → core::Iterable<self::C::whereType::T*>*;
+  abstract member-signature method expand<T extends core::Object* = dynamic>((core::Object*) →* core::Iterable<self::C::expand::T*>* f) → core::Iterable<self::C::expand::T*>*;
+  abstract member-signature method contains(core::Object* element) → core::bool*;
+  abstract member-signature method forEach((core::Object*) →* void f) → void;
+  abstract member-signature method reduce(generic-covariant-impl (core::Object*, core::Object*) →* core::Object* combine) → core::Object*;
+  abstract member-signature method fold<T extends core::Object* = dynamic>(self::C::fold::T* initialValue, (self::C::fold::T*, core::Object*) →* self::C::fold::T* combine) → self::C::fold::T*;
+  abstract member-signature method every((core::Object*) →* core::bool* test) → core::bool*;
+  abstract member-signature method join([core::String* separator = #C1]) → core::String*;
+  abstract member-signature method any((core::Object*) →* core::bool* test) → core::bool*;
+  abstract member-signature method toList({core::bool* growable = #C2}) → core::List<core::Object*>*;
+  abstract member-signature method toSet() → core::Set<core::Object*>*;
+  abstract member-signature get length() → core::int*;
+  abstract member-signature get isEmpty() → core::bool*;
+  abstract member-signature get isNotEmpty() → core::bool*;
+  abstract member-signature method take(core::int* count) → core::Iterable<core::Object*>*;
+  abstract member-signature method takeWhile((core::Object*) →* core::bool* test) → core::Iterable<core::Object*>*;
+  abstract member-signature method skip(core::int* count) → core::Iterable<core::Object*>*;
+  abstract member-signature method skipWhile((core::Object*) →* core::bool* test) → core::Iterable<core::Object*>*;
+  abstract member-signature method firstWhere((core::Object*) →* core::bool* test, {generic-covariant-impl () →* core::Object* orElse = #C3}) → core::Object*;
+  abstract member-signature method lastWhere((core::Object*) →* core::bool* test, {generic-covariant-impl () →* core::Object* orElse = #C3}) → core::Object*;
+  abstract member-signature method singleWhere((core::Object*) →* core::bool* test, {generic-covariant-impl () →* core::Object* orElse = #C3}) → core::Object*;
+  abstract member-signature method elementAt(core::int* index) → core::Object*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method test() → dynamic {
   invalid-expression "pkg/front_end/testcases/general/sdk_diagnostic.dart:12:8: Error: Too few positional arguments: 1 required, 0 given.
@@ -37,3 +74,9 @@
        ^";
 }
 static method main() → dynamic {}
+
+constants  {
+  #C1 = ""
+  #C2 = true
+  #C3 = null
+}
diff --git a/pkg/front_end/testcases/general/sdk_diagnostic.dart.strong.transformed.expect b/pkg/front_end/testcases/general/sdk_diagnostic.dart.strong.transformed.expect
index 80fbfff..f857339 100644
--- a/pkg/front_end/testcases/general/sdk_diagnostic.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general/sdk_diagnostic.dart.strong.transformed.expect
@@ -12,15 +12,15 @@
 //
 // class C extends Iterable<Object> {
 //       ^
-// sdk/lib/core/iterable.dart:156:19: Context: 'Iterable.iterator' is defined here.
+// org-dartlang-sdk:///sdk_nnbd/lib/core/iterable.dart:158:19: Context: 'Iterable.iterator' is defined here.
 //   Iterator<E> get iterator;
 //                   ^^^^^^^^
 //
 // pkg/front_end/testcases/general/sdk_diagnostic.dart:12:8: Error: Too few positional arguments: 1 required, 0 given.
 //   print(incorrectArgument: "fisk");
 //        ^
-// sdk/lib/core/print.dart:10:6: Context: Found this candidate, but the arguments don't match.
-// void print(Object object) {
+// org-dartlang-sdk:///sdk_nnbd/lib/core/print.dart:8:6: Context: Found this candidate, but the arguments don't match.
+// void print(Object? object) {
 //      ^^^^^
 //
 import self as self;
@@ -30,6 +30,43 @@
   synthetic constructor •() → self::C*
     : super core::Iterable::•()
     ;
+  abstract member-signature get iterator() → core::Iterator<core::Object*>*;
+  abstract member-signature method cast<R extends core::Object* = dynamic>() → core::Iterable<self::C::cast::R*>*;
+  abstract member-signature method followedBy(generic-covariant-impl core::Iterable<core::Object*>* other) → core::Iterable<core::Object*>*;
+  abstract member-signature method map<T extends core::Object* = dynamic>((core::Object*) →* self::C::map::T* f) → core::Iterable<self::C::map::T*>*;
+  abstract member-signature method where((core::Object*) →* core::bool* test) → core::Iterable<core::Object*>*;
+  abstract member-signature method whereType<T extends core::Object* = dynamic>() → core::Iterable<self::C::whereType::T*>*;
+  abstract member-signature method expand<T extends core::Object* = dynamic>((core::Object*) →* core::Iterable<self::C::expand::T*>* f) → core::Iterable<self::C::expand::T*>*;
+  abstract member-signature method contains(core::Object* element) → core::bool*;
+  abstract member-signature method forEach((core::Object*) →* void f) → void;
+  abstract member-signature method reduce(generic-covariant-impl (core::Object*, core::Object*) →* core::Object* combine) → core::Object*;
+  abstract member-signature method fold<T extends core::Object* = dynamic>(self::C::fold::T* initialValue, (self::C::fold::T*, core::Object*) →* self::C::fold::T* combine) → self::C::fold::T*;
+  abstract member-signature method every((core::Object*) →* core::bool* test) → core::bool*;
+  abstract member-signature method join([core::String* separator = #C1]) → core::String*;
+  abstract member-signature method any((core::Object*) →* core::bool* test) → core::bool*;
+  abstract member-signature method toList({core::bool* growable = #C2}) → core::List<core::Object*>*;
+  abstract member-signature method toSet() → core::Set<core::Object*>*;
+  abstract member-signature get length() → core::int*;
+  abstract member-signature get isEmpty() → core::bool*;
+  abstract member-signature get isNotEmpty() → core::bool*;
+  abstract member-signature method take(core::int* count) → core::Iterable<core::Object*>*;
+  abstract member-signature method takeWhile((core::Object*) →* core::bool* test) → core::Iterable<core::Object*>*;
+  abstract member-signature method skip(core::int* count) → core::Iterable<core::Object*>*;
+  abstract member-signature method skipWhile((core::Object*) →* core::bool* test) → core::Iterable<core::Object*>*;
+  abstract member-signature method firstWhere((core::Object*) →* core::bool* test, {generic-covariant-impl () →* core::Object* orElse = #C3}) → core::Object*;
+  abstract member-signature method lastWhere((core::Object*) →* core::bool* test, {generic-covariant-impl () →* core::Object* orElse = #C3}) → core::Object*;
+  abstract member-signature method singleWhere((core::Object*) →* core::bool* test, {generic-covariant-impl () →* core::Object* orElse = #C3}) → core::Object*;
+  abstract member-signature method elementAt(core::int* index) → core::Object*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method test() → dynamic {
   invalid-expression "pkg/front_end/testcases/general/sdk_diagnostic.dart:12:8: Error: Too few positional arguments: 1 required, 0 given.
@@ -37,3 +74,9 @@
        ^";
 }
 static method main() → dynamic {}
+
+constants  {
+  #C1 = ""
+  #C2 = true
+  #C3 = null
+}
diff --git a/pkg/front_end/testcases/general/spread_collection.dart.strong.transformed.expect b/pkg/front_end/testcases/general/spread_collection.dart.strong.transformed.expect
index 19e0ff1..fdbefbc 100644
--- a/pkg/front_end/testcases/general/spread_collection.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general/spread_collection.dart.strong.transformed.expect
@@ -35,7 +35,7 @@
     final core::Map<core::int*, core::int*>* #t5 = <core::int*, core::int*>{};
     #t5.{core::Map::[]=}(1, 1);
     {
-      core::Iterator<core::MapEntry<core::int*, core::int*>*>* :sync-for-iterator = <core::int*, core::int*>{2: 2}.{core::Map::entries}.{core::Iterable::iterator};
+      core::Iterator<core::MapEntry<core::int*, core::int*>>* :sync-for-iterator = <core::int*, core::int*>{2: 2}.{core::Map::entries}.{core::Iterable::iterator};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         final core::MapEntry<core::int*, core::int*>* #t6 = :sync-for-iterator.{core::Iterator::current};
         #t5.{core::Map::[]=}(#t6.{core::MapEntry::key}, #t6.{core::MapEntry::value});
@@ -43,7 +43,7 @@
     }
     final core::Map<core::int*, core::int*>* #t7 = <core::int*, core::int*>{3: 3};
     if(!#t7.{core::Object::==}(null)) {
-      core::Iterator<core::MapEntry<core::int*, core::int*>*>* :sync-for-iterator = #t7.{core::Map::entries}.{core::Iterable::iterator};
+      core::Iterator<core::MapEntry<core::int*, core::int*>>* :sync-for-iterator = #t7.{core::Map::entries}.{core::Iterable::iterator};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         final core::MapEntry<core::int*, core::int*>* #t8 = :sync-for-iterator.{core::Iterator::current};
         #t5.{core::Map::[]=}(#t8.{core::MapEntry::key}, #t8.{core::MapEntry::value});
diff --git a/pkg/front_end/testcases/general/spread_collection_inference.dart.strong.transformed.expect b/pkg/front_end/testcases/general/spread_collection_inference.dart.strong.transformed.expect
index 3215846..91386ae 100644
--- a/pkg/front_end/testcases/general/spread_collection_inference.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general/spread_collection_inference.dart.strong.transformed.expect
@@ -132,7 +132,7 @@
   core::Map<dynamic, dynamic>* map10 = block {
     final core::Map<dynamic, dynamic>* #t5 = <dynamic, dynamic>{};
     {
-      core::Iterator<core::MapEntry<dynamic, dynamic>*>* :sync-for-iterator = <dynamic, dynamic>{}.{core::Map::entries}.{core::Iterable::iterator};
+      core::Iterator<core::MapEntry<dynamic, dynamic>>* :sync-for-iterator = <dynamic, dynamic>{}.{core::Map::entries}.{core::Iterable::iterator};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         final core::MapEntry<dynamic, dynamic>* #t6 = :sync-for-iterator.{core::Iterator::current};
         #t5.{core::Map::[]=}(#t6.{core::MapEntry::key}, #t6.{core::MapEntry::value});
@@ -142,7 +142,7 @@
   core::Map<dynamic, dynamic>* map10ambiguous = block {
     final core::Map<dynamic, dynamic>* #t7 = <dynamic, dynamic>{};
     {
-      core::Iterator<core::MapEntry<dynamic, dynamic>*>* :sync-for-iterator = <dynamic, dynamic>{}.{core::Map::entries}.{core::Iterable::iterator};
+      core::Iterator<core::MapEntry<dynamic, dynamic>>* :sync-for-iterator = <dynamic, dynamic>{}.{core::Map::entries}.{core::Iterable::iterator};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         final core::MapEntry<dynamic, dynamic>* #t8 = :sync-for-iterator.{core::Iterator::current};
         #t7.{core::Map::[]=}(#t8.{core::MapEntry::key}, #t8.{core::MapEntry::value});
@@ -186,7 +186,7 @@
   core::Map<core::String*, core::int*>* map20 = block {
     final core::Map<core::String*, core::int*>* #t16 = <core::String*, core::int*>{};
     {
-      core::Iterator<core::MapEntry<core::String*, core::int*>*>* :sync-for-iterator = mapSpread.{core::Map::entries}.{core::Iterable::iterator};
+      core::Iterator<core::MapEntry<core::String*, core::int*>>* :sync-for-iterator = mapSpread.{core::Map::entries}.{core::Iterable::iterator};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         final core::MapEntry<core::String*, core::int*>* #t17 = :sync-for-iterator.{core::Iterator::current};
         #t16.{core::Map::[]=}(#t17.{core::MapEntry::key}, #t17.{core::MapEntry::value});
@@ -197,7 +197,7 @@
   core::Map<core::String*, core::int*>* map20ambiguous = block {
     final core::Map<core::String*, core::int*>* #t18 = <core::String*, core::int*>{};
     {
-      core::Iterator<core::MapEntry<core::String*, core::int*>*>* :sync-for-iterator = mapSpread.{core::Map::entries}.{core::Iterable::iterator};
+      core::Iterator<core::MapEntry<core::String*, core::int*>>* :sync-for-iterator = mapSpread.{core::Map::entries}.{core::Iterable::iterator};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         final core::MapEntry<core::String*, core::int*>* #t19 = :sync-for-iterator.{core::Iterator::current};
         #t18.{core::Map::[]=}(#t19.{core::MapEntry::key}, #t19.{core::MapEntry::value});
@@ -228,7 +228,7 @@
   core::Map<dynamic, dynamic>* map21 = block {
     final core::Map<dynamic, dynamic>* #t24 = <dynamic, dynamic>{};
     {
-      core::Iterator<core::MapEntry<dynamic, dynamic>*>* :sync-for-iterator = ((mapSpread as dynamic) as{TypeError,ForDynamic} core::Map<dynamic, dynamic>*).{core::Map::entries}.{core::Iterable::iterator};
+      core::Iterator<core::MapEntry<dynamic, dynamic>>* :sync-for-iterator = ((mapSpread as dynamic) as{TypeError,ForDynamic} core::Map<dynamic, dynamic>*).{core::Map::entries}.{core::Iterable::iterator};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         final core::MapEntry<dynamic, dynamic>* #t25 = :sync-for-iterator.{core::Iterator::current};
         #t24.{core::Map::[]=}(#t25.{core::MapEntry::key}, #t25.{core::MapEntry::value});
@@ -277,7 +277,7 @@
   core::Map<core::String*, core::int*>* map22 = block {
     final core::Map<core::String*, core::int*>* #t33 = <core::String*, core::int*>{};
     {
-      core::Iterator<core::MapEntry<core::String*, core::int*>*>* :sync-for-iterator = <core::String*, core::int*>{}.{core::Map::entries}.{core::Iterable::iterator};
+      core::Iterator<core::MapEntry<core::String*, core::int*>>* :sync-for-iterator = <core::String*, core::int*>{}.{core::Map::entries}.{core::Iterable::iterator};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         final core::MapEntry<core::String*, core::int*>* #t34 = :sync-for-iterator.{core::Iterator::current};
         #t33.{core::Map::[]=}(#t34.{core::MapEntry::key}, #t34.{core::MapEntry::value});
@@ -321,7 +321,7 @@
   core::Map<core::String*, core::List<core::int*>*>* map23 = block {
     final core::Map<core::String*, core::List<core::int*>*>* #t42 = <core::String*, core::List<core::int*>*>{};
     {
-      core::Iterator<core::MapEntry<core::String*, core::List<core::int*>*>*>* :sync-for-iterator = <core::String*, core::List<core::int*>*>{"baz": <core::int*>[]}.{core::Map::entries}.{core::Iterable::iterator};
+      core::Iterator<core::MapEntry<core::String*, core::List<core::int*>*>>* :sync-for-iterator = <core::String*, core::List<core::int*>*>{"baz": <core::int*>[]}.{core::Map::entries}.{core::Iterable::iterator};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         final core::MapEntry<core::String*, core::List<core::int*>*>* #t43 = :sync-for-iterator.{core::Iterator::current};
         #t42.{core::Map::[]=}(#t43.{core::MapEntry::key}, #t43.{core::MapEntry::value});
@@ -380,7 +380,7 @@
       ^" in ( block {
     final core::Map<core::String*, core::int*>* #t55 = <core::String*, core::int*>{};
     {
-      core::Iterator<core::MapEntry<core::String*, core::int*>*>* :sync-for-iterator = mapSpread.{core::Map::entries}.{core::Iterable::iterator};
+      core::Iterator<core::MapEntry<core::String*, core::int*>>* :sync-for-iterator = mapSpread.{core::Map::entries}.{core::Iterable::iterator};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         final core::MapEntry<core::String*, core::int*>* #t56 = :sync-for-iterator.{core::Iterator::current};
         #t55.{core::Map::[]=}(#t56.{core::MapEntry::key}, #t56.{core::MapEntry::value});
@@ -394,7 +394,7 @@
       ^" in ( block {
     final core::Map<core::String*, core::int*>* #t58 = <core::String*, core::int*>{};
     {
-      core::Iterator<core::MapEntry<core::String*, core::int*>*>* :sync-for-iterator = mapSpread.{core::Map::entries}.{core::Iterable::iterator};
+      core::Iterator<core::MapEntry<core::String*, core::int*>>* :sync-for-iterator = mapSpread.{core::Map::entries}.{core::Iterable::iterator};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         final core::MapEntry<core::String*, core::int*>* #t59 = :sync-for-iterator.{core::Iterator::current};
         #t58.{core::Map::[]=}(#t59.{core::MapEntry::key}, #t59.{core::MapEntry::value});
@@ -404,7 +404,7 @@
   core::List<dynamic>* lhs40 = <dynamic>[invalid-expression "pkg/front_end/testcases/general/spread_collection_inference.dart:111:38: Error: Unexpected type 'int' of a spread.  Expected 'dynamic' or an Iterable.
   List<dynamic> lhs40 = <dynamic>[...notSpreadInt];
                                      ^"];
-  core::Set<dynamic>* set40 = let final core::Set<dynamic>* #t60 = col::LinkedHashSet::•<dynamic>() in let final core::bool* #t61 = #t60.{core::Set::add}(invalid-expression "pkg/front_end/testcases/general/spread_collection_inference.dart:113:37: Error: Unexpected type 'int' of a spread.  Expected 'dynamic' or an Iterable.
+  core::Set<dynamic>* set40 = let final core::Set<dynamic>* #t60 = col::LinkedHashSet::•<dynamic>() in let final core::bool #t61 = #t60.{core::Set::add}(invalid-expression "pkg/front_end/testcases/general/spread_collection_inference.dart:113:37: Error: Unexpected type 'int' of a spread.  Expected 'dynamic' or an Iterable.
   Set<dynamic> set40 = <dynamic>{...notSpreadInt};
                                     ^") in #t60;
   core::Map<dynamic, dynamic>* map40 = <dynamic, dynamic>{invalid-expression "pkg/front_end/testcases/general/spread_collection_inference.dart:115:55: Error: Unexpected type 'int' of a map spread entry.  Expected 'dynamic' or a Map.
@@ -413,7 +413,7 @@
   core::List<dynamic>* lhs50 = <dynamic>[invalid-expression "pkg/front_end/testcases/general/spread_collection_inference.dart:117:38: Error: Unexpected type 'int Function()' of a spread.  Expected 'dynamic' or an Iterable.
   List<dynamic> lhs50 = <dynamic>[...notSpreadFunction];
                                      ^"];
-  core::Set<dynamic>* set50 = let final core::Set<dynamic>* #t62 = col::LinkedHashSet::•<dynamic>() in let final core::bool* #t63 = #t62.{core::Set::add}(invalid-expression "pkg/front_end/testcases/general/spread_collection_inference.dart:119:37: Error: Unexpected type 'int Function()' of a spread.  Expected 'dynamic' or an Iterable.
+  core::Set<dynamic>* set50 = let final core::Set<dynamic>* #t62 = col::LinkedHashSet::•<dynamic>() in let final core::bool #t63 = #t62.{core::Set::add}(invalid-expression "pkg/front_end/testcases/general/spread_collection_inference.dart:119:37: Error: Unexpected type 'int Function()' of a spread.  Expected 'dynamic' or an Iterable.
   Set<dynamic> set50 = <dynamic>{...notSpreadFunction};
                                     ^") in #t62;
   core::Map<dynamic, dynamic>* map50 = <dynamic, dynamic>{invalid-expression "pkg/front_end/testcases/general/spread_collection_inference.dart:121:55: Error: Unexpected type 'int Function()' of a map spread entry.  Expected 'dynamic' or a Map.
@@ -422,7 +422,7 @@
   core::List<core::String*>* lhs60 = <core::String*>[invalid-expression "pkg/front_end/testcases/general/spread_collection_inference.dart:123:36: Error: Can't assign spread elements of type 'int' to collection elements of type 'String'.
   List<String> lhs60 = <String>[...spread];
                                    ^"];
-  core::Set<core::String*>* set60 = let final core::Set<core::String*>* #t64 = col::LinkedHashSet::•<core::String*>() in let final core::bool* #t65 = #t64.{core::Set::add}(invalid-expression "pkg/front_end/testcases/general/spread_collection_inference.dart:125:35: Error: Can't assign spread elements of type 'int' to collection elements of type 'String'.
+  core::Set<core::String*>* set60 = let final core::Set<core::String*>* #t64 = col::LinkedHashSet::•<core::String*>() in let final core::bool #t65 = #t64.{core::Set::add}(invalid-expression "pkg/front_end/testcases/general/spread_collection_inference.dart:125:35: Error: Can't assign spread elements of type 'int' to collection elements of type 'String'.
   Set<String> set60 = <String>{...spread};
                                   ^") in #t64;
   core::Map<core::int*, core::int*>* map60 = <core::int*, core::int*>{invalid-expression "pkg/front_end/testcases/general/spread_collection_inference.dart:127:39: Error: Can't assign spread entry keys of type 'String' to map entry keys of type 'int'.
@@ -434,7 +434,7 @@
   core::List<core::int*>* lhs70 = <core::int*>[invalid-expression "pkg/front_end/testcases/general/spread_collection_inference.dart:131:30: Error: Can't spread a value with static type Null.
   List<int> lhs70 = <int>[...null];
                              ^"];
-  core::Set<core::int*>* set70 = let final core::Set<core::int*>* #t66 = col::LinkedHashSet::•<core::int*>() in let final core::bool* #t67 = #t66.{core::Set::add}(invalid-expression "pkg/front_end/testcases/general/spread_collection_inference.dart:133:29: Error: Can't spread a value with static type Null.
+  core::Set<core::int*>* set70 = let final core::Set<core::int*>* #t66 = col::LinkedHashSet::•<core::int*>() in let final core::bool #t67 = #t66.{core::Set::add}(invalid-expression "pkg/front_end/testcases/general/spread_collection_inference.dart:133:29: Error: Can't spread a value with static type Null.
   Set<int> set70 = <int>{...null};
                             ^") in #t66;
   core::Set<dynamic>* set71ambiguous = block {
@@ -506,7 +506,7 @@
     final core::Map<core::String*, core::int*>* #t83 = <core::String*, core::int*>{};
     final core::Map<core::String*, core::int*>* #t84 = null;
     if(!#t84.{core::Object::==}(null)) {
-      core::Iterator<core::MapEntry<core::String*, core::int*>*>* :sync-for-iterator = #t84.{core::Map::entries}.{core::Iterable::iterator};
+      core::Iterator<core::MapEntry<core::String*, core::int*>>* :sync-for-iterator = #t84.{core::Map::entries}.{core::Iterable::iterator};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         final core::MapEntry<core::String*, core::int*>* #t85 = :sync-for-iterator.{core::Iterator::current};
         #t83.{core::Map::[]=}(#t85.{core::MapEntry::key}, #t85.{core::MapEntry::value});
@@ -516,7 +516,7 @@
   core::Map<core::String*, core::int*>* map90 = block {
     final core::Map<core::String*, core::int*>* #t86 = <core::String*, core::int*>{};
     {
-      core::Iterator<core::MapEntry<core::String*, core::int*>*>* :sync-for-iterator = self::bar<core::String*, core::int*>().{core::Map::entries}.{core::Iterable::iterator};
+      core::Iterator<core::MapEntry<core::String*, core::int*>>* :sync-for-iterator = self::bar<core::String*, core::int*>().{core::Map::entries}.{core::Iterable::iterator};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         final core::MapEntry<core::String*, core::int*>* #t87 = :sync-for-iterator.{core::Iterator::current};
         #t86.{core::Map::[]=}(#t87.{core::MapEntry::key}, #t87.{core::MapEntry::value});
@@ -539,7 +539,7 @@
   core::Map<core::num*, core::int*>* map100 = block {
     final core::Map<core::num*, core::int*>* #t91 = <core::num*, core::int*>{};
     {
-      core::Iterator<core::MapEntry<core::int*, core::num*>*>* :sync-for-iterator = mapIntNum.{core::Map::entries}.{core::Iterable::iterator};
+      core::Iterator<core::MapEntry<core::int*, core::num*>>* :sync-for-iterator = mapIntNum.{core::Map::entries}.{core::Iterable::iterator};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         final core::MapEntry<dynamic, dynamic>* #t92 = :sync-for-iterator.{core::Iterator::current};
         {
@@ -566,7 +566,7 @@
   core::Map<core::num*, core::int*>* map110 = block {
     final core::Map<core::num*, core::int*>* #t98 = <core::num*, core::int*>{};
     {
-      core::Iterator<core::MapEntry<dynamic, dynamic>*>* :sync-for-iterator = (dynVar as{TypeError,ForDynamic} core::Map<dynamic, dynamic>*).{core::Map::entries}.{core::Iterable::iterator};
+      core::Iterator<core::MapEntry<dynamic, dynamic>>* :sync-for-iterator = (dynVar as{TypeError,ForDynamic} core::Map<dynamic, dynamic>*).{core::Map::entries}.{core::Iterable::iterator};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         final core::MapEntry<dynamic, dynamic>* #t99 = :sync-for-iterator.{core::Iterator::current};
         {
diff --git a/pkg/front_end/testcases/general/static_setter.dart.outline.expect b/pkg/front_end/testcases/general/static_setter.dart.outline.expect
index 46a8e6d..3eb0df6 100644
--- a/pkg/front_end/testcases/general/static_setter.dart.outline.expect
+++ b/pkg/front_end/testcases/general/static_setter.dart.outline.expect
@@ -5,6 +5,16 @@
 class Foo extends core::Object {
   synthetic constructor •() → self::Foo*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static set foo(dynamic x) → void
   ;
diff --git a/pkg/front_end/testcases/general/static_setter.dart.strong.expect b/pkg/front_end/testcases/general/static_setter.dart.strong.expect
index 7b5a72c..bff2255 100644
--- a/pkg/front_end/testcases/general/static_setter.dart.strong.expect
+++ b/pkg/front_end/testcases/general/static_setter.dart.strong.expect
@@ -6,6 +6,16 @@
   synthetic constructor •() → self::Foo*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static set foo(dynamic x) → void {}
 static method main() → dynamic {
diff --git a/pkg/front_end/testcases/general/static_setter.dart.strong.transformed.expect b/pkg/front_end/testcases/general/static_setter.dart.strong.transformed.expect
index 7b5a72c..bff2255 100644
--- a/pkg/front_end/testcases/general/static_setter.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general/static_setter.dart.strong.transformed.expect
@@ -6,6 +6,16 @@
   synthetic constructor •() → self::Foo*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static set foo(dynamic x) → void {}
 static method main() → dynamic {
diff --git a/pkg/front_end/testcases/general/store_load.dart.outline.expect b/pkg/front_end/testcases/general/store_load.dart.outline.expect
index 7098d1b..93c15a8 100644
--- a/pkg/front_end/testcases/general/store_load.dart.outline.expect
+++ b/pkg/front_end/testcases/general/store_load.dart.outline.expect
@@ -6,19 +6,59 @@
   field dynamic _field;
   synthetic constructor •() → self::Foo*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class FooValue extends core::Object {
   synthetic constructor •() → self::FooValue*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Bar extends core::Object {
   field dynamic _field;
   synthetic constructor •() → self::Bar*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class BarValue extends core::Object {
   synthetic constructor •() → self::BarValue*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/general/store_load.dart.strong.expect b/pkg/front_end/testcases/general/store_load.dart.strong.expect
index 13e718e..f4803c6 100644
--- a/pkg/front_end/testcases/general/store_load.dart.strong.expect
+++ b/pkg/front_end/testcases/general/store_load.dart.strong.expect
@@ -7,22 +7,62 @@
   synthetic constructor •() → self::Foo*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class FooValue extends core::Object {
   synthetic constructor •() → self::FooValue*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Bar extends core::Object {
   field dynamic _field = null;
   synthetic constructor •() → self::Bar*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class BarValue extends core::Object {
   synthetic constructor •() → self::BarValue*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   self::Foo* foo = new self::Foo::•();
diff --git a/pkg/front_end/testcases/general/store_load.dart.strong.transformed.expect b/pkg/front_end/testcases/general/store_load.dart.strong.transformed.expect
index 13e718e..f4803c6 100644
--- a/pkg/front_end/testcases/general/store_load.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general/store_load.dart.strong.transformed.expect
@@ -7,22 +7,62 @@
   synthetic constructor •() → self::Foo*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class FooValue extends core::Object {
   synthetic constructor •() → self::FooValue*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Bar extends core::Object {
   field dynamic _field = null;
   synthetic constructor •() → self::Bar*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class BarValue extends core::Object {
   synthetic constructor •() → self::BarValue*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   self::Foo* foo = new self::Foo::•();
diff --git a/pkg/front_end/testcases/general/super_call.dart.outline.expect b/pkg/front_end/testcases/general/super_call.dart.outline.expect
index bf952e5..29fbb1a 100644
--- a/pkg/front_end/testcases/general/super_call.dart.outline.expect
+++ b/pkg/front_end/testcases/general/super_call.dart.outline.expect
@@ -7,6 +7,16 @@
     ;
   method call(core::int* x) → core::int*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A {
   synthetic constructor •() → self::B*
diff --git a/pkg/front_end/testcases/general/super_call.dart.strong.expect b/pkg/front_end/testcases/general/super_call.dart.strong.expect
index 7ef570e..19f23ea 100644
--- a/pkg/front_end/testcases/general/super_call.dart.strong.expect
+++ b/pkg/front_end/testcases/general/super_call.dart.strong.expect
@@ -16,6 +16,16 @@
     ;
   method call(core::int* x) → core::int*
     return x.{core::num::*}(2);
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A {
   synthetic constructor •() → self::B*
diff --git a/pkg/front_end/testcases/general/super_call.dart.strong.transformed.expect b/pkg/front_end/testcases/general/super_call.dart.strong.transformed.expect
index 7ef570e..19f23ea 100644
--- a/pkg/front_end/testcases/general/super_call.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general/super_call.dart.strong.transformed.expect
@@ -16,6 +16,16 @@
     ;
   method call(core::int* x) → core::int*
     return x.{core::num::*}(2);
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A {
   synthetic constructor •() → self::B*
diff --git a/pkg/front_end/testcases/general/super_nsm.dart.outline.expect b/pkg/front_end/testcases/general/super_nsm.dart.outline.expect
index 4f2eabf..c2110a8 100644
--- a/pkg/front_end/testcases/general/super_nsm.dart.outline.expect
+++ b/pkg/front_end/testcases/general/super_nsm.dart.outline.expect
@@ -6,12 +6,31 @@
   synthetic constructor •() → self::I*
     ;
   abstract method interfaceMethod() → dynamic;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C extends core::Object implements self::I {
   synthetic constructor •() → self::C*
     ;
   method noSuchMethod(core::Invocation* _) → dynamic
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
   no-such-method-forwarder method interfaceMethod() → dynamic
     return this.{self::C::noSuchMethod}(new core::_InvocationMirror::_withType(#interfaceMethod, 0, const <core::Type*>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{}))) as{TypeError,ForDynamic} dynamic;
 }
diff --git a/pkg/front_end/testcases/general/super_nsm.dart.strong.expect b/pkg/front_end/testcases/general/super_nsm.dart.strong.expect
index f804c1f..bae178b 100644
--- a/pkg/front_end/testcases/general/super_nsm.dart.strong.expect
+++ b/pkg/front_end/testcases/general/super_nsm.dart.strong.expect
@@ -7,6 +7,16 @@
     : super core::Object::•()
     ;
   abstract method interfaceMethod() → dynamic;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C extends core::Object implements self::I {
   synthetic constructor •() → self::C*
@@ -14,6 +24,15 @@
     ;
   method noSuchMethod(core::Invocation* _) → dynamic
     return "C";
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
   no-such-method-forwarder method interfaceMethod() → dynamic
     return this.{self::C::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))) as{TypeError,ForDynamic} dynamic;
 }
diff --git a/pkg/front_end/testcases/general/super_nsm.dart.strong.transformed.expect b/pkg/front_end/testcases/general/super_nsm.dart.strong.transformed.expect
index f804c1f..bae178b 100644
--- a/pkg/front_end/testcases/general/super_nsm.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general/super_nsm.dart.strong.transformed.expect
@@ -7,6 +7,16 @@
     : super core::Object::•()
     ;
   abstract method interfaceMethod() → dynamic;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C extends core::Object implements self::I {
   synthetic constructor •() → self::C*
@@ -14,6 +24,15 @@
     ;
   method noSuchMethod(core::Invocation* _) → dynamic
     return "C";
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
   no-such-method-forwarder method interfaceMethod() → dynamic
     return this.{self::C::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))) as{TypeError,ForDynamic} dynamic;
 }
diff --git a/pkg/front_end/testcases/general/this_field_call.dart.outline.expect b/pkg/front_end/testcases/general/this_field_call.dart.outline.expect
index c8308d1..e0c31c1 100644
--- a/pkg/front_end/testcases/general/this_field_call.dart.outline.expect
+++ b/pkg/front_end/testcases/general/this_field_call.dart.outline.expect
@@ -8,6 +8,16 @@
     ;
   method foo(generic-covariant-impl self::A::T* x) → dynamic
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/general/this_field_call.dart.strong.expect b/pkg/front_end/testcases/general/this_field_call.dart.strong.expect
index d241d8b..1a8c0b4 100644
--- a/pkg/front_end/testcases/general/this_field_call.dart.strong.expect
+++ b/pkg/front_end/testcases/general/this_field_call.dart.strong.expect
@@ -9,6 +9,16 @@
     ;
   method foo(generic-covariant-impl self::A::T* x) → dynamic
     return let final self::A::T* #t1 = x in this.{self::A::f}.call(#t1);
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   new self::A::•<core::int*>((core::int* x) → core::Null? {}).{self::A::foo}(3);
diff --git a/pkg/front_end/testcases/general/this_field_call.dart.strong.transformed.expect b/pkg/front_end/testcases/general/this_field_call.dart.strong.transformed.expect
index d241d8b..1a8c0b4 100644
--- a/pkg/front_end/testcases/general/this_field_call.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general/this_field_call.dart.strong.transformed.expect
@@ -9,6 +9,16 @@
     ;
   method foo(generic-covariant-impl self::A::T* x) → dynamic
     return let final self::A::T* #t1 = x in this.{self::A::f}.call(#t1);
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   new self::A::•<core::int*>((core::int* x) → core::Null? {}).{self::A::foo}(3);
diff --git a/pkg/front_end/testcases/general/type_literal_as_metadata.dart.outline.expect b/pkg/front_end/testcases/general/type_literal_as_metadata.dart.outline.expect
index 9c617a6..37bb636 100644
--- a/pkg/front_end/testcases/general/type_literal_as_metadata.dart.outline.expect
+++ b/pkg/front_end/testcases/general/type_literal_as_metadata.dart.outline.expect
@@ -13,6 +13,16 @@
   const constructor •() → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 @let final<BottomType> #t1 = invalid-expression "pkg/front_end/testcases/general/type_literal_as_metadata.dart:9:2: Error: This can't be used as metadata; metadata should be a reference to a compile-time constant variable, or a call to a constant constructor.
 @A
@@ -20,6 +30,16 @@
 class B extends core::Object {
   synthetic constructor •() → self::B*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/general/type_literal_as_metadata.dart.strong.expect b/pkg/front_end/testcases/general/type_literal_as_metadata.dart.strong.expect
index 545b639..e6d28a0 100644
--- a/pkg/front_end/testcases/general/type_literal_as_metadata.dart.strong.expect
+++ b/pkg/front_end/testcases/general/type_literal_as_metadata.dart.strong.expect
@@ -13,6 +13,16 @@
   const constructor •() → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 @invalid-expression "pkg/front_end/testcases/general/type_literal_as_metadata.dart:9:2: Error: This can't be used as metadata; metadata should be a reference to a compile-time constant variable, or a call to a constant constructor.
 @A
@@ -21,5 +31,15 @@
   synthetic constructor •() → self::B*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general/type_literal_as_metadata.dart.strong.transformed.expect b/pkg/front_end/testcases/general/type_literal_as_metadata.dart.strong.transformed.expect
index 545b639..e6d28a0 100644
--- a/pkg/front_end/testcases/general/type_literal_as_metadata.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general/type_literal_as_metadata.dart.strong.transformed.expect
@@ -13,6 +13,16 @@
   const constructor •() → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 @invalid-expression "pkg/front_end/testcases/general/type_literal_as_metadata.dart:9:2: Error: This can't be used as metadata; metadata should be a reference to a compile-time constant variable, or a call to a constant constructor.
 @A
@@ -21,5 +31,15 @@
   synthetic constructor •() → self::B*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general/type_parameter_type_named_int.dart.outline.expect b/pkg/front_end/testcases/general/type_parameter_type_named_int.dart.outline.expect
index e298634..cde62f9 100644
--- a/pkg/front_end/testcases/general/type_parameter_type_named_int.dart.outline.expect
+++ b/pkg/front_end/testcases/general/type_parameter_type_named_int.dart.outline.expect
@@ -7,6 +7,16 @@
     ;
   abstract get list() → core::List<self::Foo::T*>*;
   abstract method setList<T extends core::Object* = dynamic>(core::List<self::Foo::setList::T*>* value) → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Bar extends core::Object implements self::Foo<core::int*> {
   field core::List<core::int*>* list;
@@ -14,4 +24,14 @@
     ;
   method setList<int extends core::Object* = dynamic>(core::List<self::Bar::setList::int*>* value) → void
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
diff --git a/pkg/front_end/testcases/general/type_parameter_type_named_int.dart.strong.expect b/pkg/front_end/testcases/general/type_parameter_type_named_int.dart.strong.expect
index ee44e8f..0cc238d 100644
--- a/pkg/front_end/testcases/general/type_parameter_type_named_int.dart.strong.expect
+++ b/pkg/front_end/testcases/general/type_parameter_type_named_int.dart.strong.expect
@@ -18,6 +18,16 @@
     ;
   abstract get list() → core::List<self::Foo::T*>*;
   abstract method setList<T extends core::Object* = dynamic>(core::List<self::Foo::setList::T*>* value) → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Bar extends core::Object implements self::Foo<core::int*> {
   field core::List<core::int*>* list = null;
@@ -32,4 +42,14 @@
     list = value;
            ^" in value as{TypeError} core::List<core::int*>*;
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
diff --git a/pkg/front_end/testcases/general/type_parameter_type_named_int.dart.strong.transformed.expect b/pkg/front_end/testcases/general/type_parameter_type_named_int.dart.strong.transformed.expect
index ee44e8f..0cc238d 100644
--- a/pkg/front_end/testcases/general/type_parameter_type_named_int.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general/type_parameter_type_named_int.dart.strong.transformed.expect
@@ -18,6 +18,16 @@
     ;
   abstract get list() → core::List<self::Foo::T*>*;
   abstract method setList<T extends core::Object* = dynamic>(core::List<self::Foo::setList::T*>* value) → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Bar extends core::Object implements self::Foo<core::int*> {
   field core::List<core::int*>* list = null;
@@ -32,4 +42,14 @@
     list = value;
            ^" in value as{TypeError} core::List<core::int*>*;
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
diff --git a/pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_class.dart.outline.expect b/pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_class.dart.outline.expect
index f003356..7081909 100644
--- a/pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_class.dart.outline.expect
+++ b/pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_class.dart.outline.expect
@@ -124,6 +124,16 @@
     ;
   static method foo13Prime((core::List<invalid-type>*) →* void Function) → void
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_class.dart.strong.expect b/pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_class.dart.strong.expect
index 7cd4aec..76bfa19 100644
--- a/pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_class.dart.strong.expect
+++ b/pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_class.dart.strong.expect
@@ -192,5 +192,15 @@
   static method foo13Prime((core::List<invalid-type>*) →* void Function) → void {
     return null;
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_class.dart.strong.transformed.expect b/pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_class.dart.strong.transformed.expect
index 7cd4aec..76bfa19 100644
--- a/pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_class.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_class.dart.strong.transformed.expect
@@ -192,5 +192,15 @@
   static method foo13Prime((core::List<invalid-type>*) →* void Function) → void {
     return null;
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general/type_variable_as_super.dart.outline.expect b/pkg/front_end/testcases/general/type_variable_as_super.dart.outline.expect
index 96ee46b..5b237bc 100644
--- a/pkg/front_end/testcases/general/type_variable_as_super.dart.outline.expect
+++ b/pkg/front_end/testcases/general/type_variable_as_super.dart.outline.expect
@@ -20,14 +20,44 @@
 abstract class A<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::A<self::A::T*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class B<T extends core::Object* = dynamic> extends core::Object {
   constructor •() → self::B<self::B::T*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::C<self::C::T*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/general/type_variable_as_super.dart.strong.expect b/pkg/front_end/testcases/general/type_variable_as_super.dart.strong.expect
index 43c75b3..08f6942 100644
--- a/pkg/front_end/testcases/general/type_variable_as_super.dart.strong.expect
+++ b/pkg/front_end/testcases/general/type_variable_as_super.dart.strong.expect
@@ -29,16 +29,46 @@
   synthetic constructor •() → self::A<self::A::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class B<T extends core::Object* = dynamic> extends core::Object {
   constructor •() → self::B<self::B::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::C<self::C::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   throw new core::AbstractClassInstantiationError::•("A");
diff --git a/pkg/front_end/testcases/general/type_variable_as_super.dart.strong.transformed.expect b/pkg/front_end/testcases/general/type_variable_as_super.dart.strong.transformed.expect
index 43c75b3..08f6942 100644
--- a/pkg/front_end/testcases/general/type_variable_as_super.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general/type_variable_as_super.dart.strong.transformed.expect
@@ -29,16 +29,46 @@
   synthetic constructor •() → self::A<self::A::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class B<T extends core::Object* = dynamic> extends core::Object {
   constructor •() → self::B<self::B::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::C<self::C::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   throw new core::AbstractClassInstantiationError::•("A");
diff --git a/pkg/front_end/testcases/general/type_variable_bound_access.dart.outline.expect b/pkg/front_end/testcases/general/type_variable_bound_access.dart.outline.expect
index 11781a4..6638397 100644
--- a/pkg/front_end/testcases/general/type_variable_bound_access.dart.outline.expect
+++ b/pkg/front_end/testcases/general/type_variable_bound_access.dart.outline.expect
@@ -9,6 +9,16 @@
     ;
   method method() → dynamic
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class NumClass<T extends core::num* = core::num*, S extends self::NumClass::T* = core::num*> extends core::Object {
   generic-covariant-impl field self::NumClass::T* field1;
@@ -19,6 +29,16 @@
     ;
   method method2() → core::num*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/general/type_variable_bound_access.dart.strong.expect b/pkg/front_end/testcases/general/type_variable_bound_access.dart.strong.expect
index 09551dc..b39193d 100644
--- a/pkg/front_end/testcases/general/type_variable_bound_access.dart.strong.expect
+++ b/pkg/front_end/testcases/general/type_variable_bound_access.dart.strong.expect
@@ -18,6 +18,16 @@
     ;
   method method() → dynamic
     return this.{self::DynamicClass::field1}.*(this.{self::DynamicClass::field2});
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class NumClass<T extends core::num* = core::num*, S extends self::NumClass::T* = core::num*> extends core::Object {
   generic-covariant-impl field self::NumClass::T* field1;
@@ -31,7 +41,17 @@
     return this.{self::NumClass::field1}.{core::num::+}(invalid-expression "pkg/front_end/testcases/general/type_variable_bound_access.dart:22:36: Error: The getter 'length' isn't defined for the class 'num'.
 Try correcting the name to the name of an existing getter, or defining a getter or field named 'length'.
   num method2() => field1 + field2.length;
-                                   ^^^^^^" as{TypeError,ForDynamic} core::num*);
+                                   ^^^^^^" as{TypeError,ForDynamic} core::num);
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   new self::DynamicClass::•<core::num*, core::int*>(0.5, 2).{self::DynamicClass::method}();
diff --git a/pkg/front_end/testcases/general/type_variable_prefix.dart.outline.expect b/pkg/front_end/testcases/general/type_variable_prefix.dart.outline.expect
index 519578a..cc5156f 100644
--- a/pkg/front_end/testcases/general/type_variable_prefix.dart.outline.expect
+++ b/pkg/front_end/testcases/general/type_variable_prefix.dart.outline.expect
@@ -16,6 +16,16 @@
     ;
   method method() → invalid-type
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/general/type_variable_prefix.dart.strong.expect b/pkg/front_end/testcases/general/type_variable_prefix.dart.strong.expect
index 8056cc0..0c528c3 100644
--- a/pkg/front_end/testcases/general/type_variable_prefix.dart.strong.expect
+++ b/pkg/front_end/testcases/general/type_variable_prefix.dart.strong.expect
@@ -17,6 +17,16 @@
     ;
   method method() → invalid-type
     return "Hello, World!";
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   core::String* s = new self::C::•<dynamic>().{self::C::method}();
diff --git a/pkg/front_end/testcases/general/type_variable_prefix.dart.strong.transformed.expect b/pkg/front_end/testcases/general/type_variable_prefix.dart.strong.transformed.expect
index 8056cc0..0c528c3 100644
--- a/pkg/front_end/testcases/general/type_variable_prefix.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general/type_variable_prefix.dart.strong.transformed.expect
@@ -17,6 +17,16 @@
     ;
   method method() → invalid-type
     return "Hello, World!";
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   core::String* s = new self::C::•<dynamic>().{self::C::method}();
diff --git a/pkg/front_end/testcases/general/type_variable_uses.dart.outline.expect b/pkg/front_end/testcases/general/type_variable_uses.dart.outline.expect
index 4f01970..9a12700 100644
--- a/pkg/front_end/testcases/general/type_variable_uses.dart.outline.expect
+++ b/pkg/front_end/testcases/general/type_variable_uses.dart.outline.expect
@@ -17,6 +17,16 @@
     ;
   method instanceMethod() → self::C<self::C::T*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/general/type_variable_uses.dart.strong.expect b/pkg/front_end/testcases/general/type_variable_uses.dart.strong.expect
index 8b71195..fdb8a1c 100644
--- a/pkg/front_end/testcases/general/type_variable_uses.dart.strong.expect
+++ b/pkg/front_end/testcases/general/type_variable_uses.dart.strong.expect
@@ -91,6 +91,16 @@
     #C5;
     #C6;
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
 
diff --git a/pkg/front_end/testcases/general/type_variable_uses.dart.strong.transformed.expect b/pkg/front_end/testcases/general/type_variable_uses.dart.strong.transformed.expect
index 8b71195..fdb8a1c 100644
--- a/pkg/front_end/testcases/general/type_variable_uses.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general/type_variable_uses.dart.strong.transformed.expect
@@ -91,6 +91,16 @@
     #C5;
     #C6;
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
 
diff --git a/pkg/front_end/testcases/general/undefined.dart.outline.expect b/pkg/front_end/testcases/general/undefined.dart.outline.expect
index 26c18bd..aa9583d 100644
--- a/pkg/front_end/testcases/general/undefined.dart.outline.expect
+++ b/pkg/front_end/testcases/general/undefined.dart.outline.expect
@@ -8,6 +8,16 @@
     ;
   method f() → void
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method test(self::C* c) → void
   ;
diff --git a/pkg/front_end/testcases/general/undefined.dart.strong.expect b/pkg/front_end/testcases/general/undefined.dart.strong.expect
index 6f35bb1..8813e9b 100644
--- a/pkg/front_end/testcases/general/undefined.dart.strong.expect
+++ b/pkg/front_end/testcases/general/undefined.dart.strong.expect
@@ -29,6 +29,16 @@
     : super core::Object::•()
     ;
   method f() → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method test(self::C* c) → void {
   c.{self::C::x};
diff --git a/pkg/front_end/testcases/general/undefined.dart.strong.transformed.expect b/pkg/front_end/testcases/general/undefined.dart.strong.transformed.expect
index 6f35bb1..8813e9b 100644
--- a/pkg/front_end/testcases/general/undefined.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general/undefined.dart.strong.transformed.expect
@@ -29,6 +29,16 @@
     : super core::Object::•()
     ;
   method f() → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method test(self::C* c) → void {
   c.{self::C::x};
diff --git a/pkg/front_end/testcases/general/undefined_getter_in_compound_assignment.dart.outline.expect b/pkg/front_end/testcases/general/undefined_getter_in_compound_assignment.dart.outline.expect
index d3b88d7..33db27d 100644
--- a/pkg/front_end/testcases/general/undefined_getter_in_compound_assignment.dart.outline.expect
+++ b/pkg/front_end/testcases/general/undefined_getter_in_compound_assignment.dart.outline.expect
@@ -7,6 +7,16 @@
     ;
   set x(dynamic value) → void
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method test(self::C* c) → void
   ;
diff --git a/pkg/front_end/testcases/general/undefined_getter_in_compound_assignment.dart.strong.expect b/pkg/front_end/testcases/general/undefined_getter_in_compound_assignment.dart.strong.expect
index b2c33d9..f2e8579d 100644
--- a/pkg/front_end/testcases/general/undefined_getter_in_compound_assignment.dart.strong.expect
+++ b/pkg/front_end/testcases/general/undefined_getter_in_compound_assignment.dart.strong.expect
@@ -22,6 +22,16 @@
     : super core::Object::•()
     ;
   set x(dynamic value) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method test(self::C* c) → void {
   c.{self::C::x} = 1;
diff --git a/pkg/front_end/testcases/general/undefined_getter_in_compound_assignment.dart.strong.transformed.expect b/pkg/front_end/testcases/general/undefined_getter_in_compound_assignment.dart.strong.transformed.expect
index b2c33d9..f2e8579d 100644
--- a/pkg/front_end/testcases/general/undefined_getter_in_compound_assignment.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general/undefined_getter_in_compound_assignment.dart.strong.transformed.expect
@@ -22,6 +22,16 @@
     : super core::Object::•()
     ;
   set x(dynamic value) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method test(self::C* c) → void {
   c.{self::C::x} = 1;
diff --git a/pkg/front_end/testcases/general/uninitialized_fields.dart.outline.expect b/pkg/front_end/testcases/general/uninitialized_fields.dart.outline.expect
index 204bee2..c8c5042 100644
--- a/pkg/front_end/testcases/general/uninitialized_fields.dart.outline.expect
+++ b/pkg/front_end/testcases/general/uninitialized_fields.dart.outline.expect
@@ -6,6 +6,16 @@
   field core::int* x;
   synthetic constructor •() → self::Uninitialized*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class PartiallyInitialized extends core::Object {
   field core::int* x;
@@ -13,11 +23,31 @@
     ;
   constructor noInitializer() → self::PartiallyInitialized*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Initialized extends core::Object {
   field core::int* x;
   constructor •(core::int* x) → self::Initialized*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Forwarding extends core::Object {
   field core::int* x;
@@ -25,6 +55,16 @@
     ;
   constructor •(core::int* arg) → self::Forwarding*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field core::int* uninitializedTopLevel;
 static field core::int* initializedTopLevel;
diff --git a/pkg/front_end/testcases/general/uninitialized_fields.dart.strong.expect b/pkg/front_end/testcases/general/uninitialized_fields.dart.strong.expect
index 2585d9a..a5af346 100644
--- a/pkg/front_end/testcases/general/uninitialized_fields.dart.strong.expect
+++ b/pkg/front_end/testcases/general/uninitialized_fields.dart.strong.expect
@@ -7,6 +7,16 @@
   synthetic constructor •() → self::Uninitialized*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class PartiallyInitialized extends core::Object {
   field core::int* x;
@@ -16,12 +26,32 @@
   constructor noInitializer() → self::PartiallyInitialized*
     : self::PartiallyInitialized::x = null, super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Initialized extends core::Object {
   field core::int* x;
   constructor •(core::int* x) → self::Initialized*
     : self::Initialized::x = x, super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Forwarding extends core::Object {
   field core::int* x;
@@ -31,6 +61,16 @@
   constructor •(core::int* arg) → self::Forwarding*
     : this self::Forwarding::initialize(arg)
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field core::int* uninitializedTopLevel;
 static field core::int* initializedTopLevel = 4;
diff --git a/pkg/front_end/testcases/general/uninitialized_fields.dart.strong.transformed.expect b/pkg/front_end/testcases/general/uninitialized_fields.dart.strong.transformed.expect
index 2585d9a..a5af346 100644
--- a/pkg/front_end/testcases/general/uninitialized_fields.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general/uninitialized_fields.dart.strong.transformed.expect
@@ -7,6 +7,16 @@
   synthetic constructor •() → self::Uninitialized*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class PartiallyInitialized extends core::Object {
   field core::int* x;
@@ -16,12 +26,32 @@
   constructor noInitializer() → self::PartiallyInitialized*
     : self::PartiallyInitialized::x = null, super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Initialized extends core::Object {
   field core::int* x;
   constructor •(core::int* x) → self::Initialized*
     : self::Initialized::x = x, super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Forwarding extends core::Object {
   field core::int* x;
@@ -31,6 +61,16 @@
   constructor •(core::int* arg) → self::Forwarding*
     : this self::Forwarding::initialize(arg)
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field core::int* uninitializedTopLevel;
 static field core::int* initializedTopLevel = 4;
diff --git a/pkg/front_end/testcases/general/unsound_promotion.dart.outline.expect b/pkg/front_end/testcases/general/unsound_promotion.dart.outline.expect
index 9a8c9d9..f7ad850 100644
--- a/pkg/front_end/testcases/general/unsound_promotion.dart.outline.expect
+++ b/pkg/front_end/testcases/general/unsound_promotion.dart.outline.expect
@@ -5,10 +5,30 @@
 class A extends core::Object {
   synthetic constructor •() → self::A*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends core::Object {
   synthetic constructor •() → self::B*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C extends self::B implements self::A {
   synthetic constructor •() → self::C*
diff --git a/pkg/front_end/testcases/general/unsound_promotion.dart.strong.expect b/pkg/front_end/testcases/general/unsound_promotion.dart.strong.expect
index cb3e61b..9ea0a78 100644
--- a/pkg/front_end/testcases/general/unsound_promotion.dart.strong.expect
+++ b/pkg/front_end/testcases/general/unsound_promotion.dart.strong.expect
@@ -18,11 +18,31 @@
   synthetic constructor •() → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends core::Object {
   synthetic constructor •() → self::B*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C extends self::B implements self::A {
   synthetic constructor •() → self::C*
diff --git a/pkg/front_end/testcases/general/unused_methods.dart.outline.expect b/pkg/front_end/testcases/general/unused_methods.dart.outline.expect
index 0717113..8bbd487 100644
--- a/pkg/front_end/testcases/general/unused_methods.dart.outline.expect
+++ b/pkg/front_end/testcases/general/unused_methods.dart.outline.expect
@@ -5,6 +5,16 @@
 class UnusedClass extends core::Object {
   constructor •() → self::UnusedClass*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class UsedAsBaseClass extends core::Object {
   synthetic constructor •() → self::UsedAsBaseClass*
@@ -15,18 +25,48 @@
     ;
   method calledFromSubclass() → void
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class UsedAsInterface extends core::Object {
   synthetic constructor •() → self::UsedAsInterface*
     ;
   method usedInSubclass() → void
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class InstantiatedButMethodsUnused extends core::Object {
   synthetic constructor •() → self::InstantiatedButMethodsUnused*
     ;
   method usedInSubclass() → void
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class ClassA extends self::UsedAsBaseClass implements self::UsedAsInterface, self::InstantiatedButMethodsUnused {
   synthetic constructor •() → self::ClassA*
diff --git a/pkg/front_end/testcases/general/unused_methods.dart.strong.expect b/pkg/front_end/testcases/general/unused_methods.dart.strong.expect
index e2c09cd..609b92c 100644
--- a/pkg/front_end/testcases/general/unused_methods.dart.strong.expect
+++ b/pkg/front_end/testcases/general/unused_methods.dart.strong.expect
@@ -7,6 +7,16 @@
     : super core::Object::•() {
     core::print("Unused");
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class UsedAsBaseClass extends core::Object {
   synthetic constructor •() → self::UsedAsBaseClass*
@@ -21,6 +31,16 @@
   method calledFromSubclass() → void {
     core::print("Unused");
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class UsedAsInterface extends core::Object {
   synthetic constructor •() → self::UsedAsInterface*
@@ -29,6 +49,16 @@
   method usedInSubclass() → void {
     core::print("Unused");
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class InstantiatedButMethodsUnused extends core::Object {
   synthetic constructor •() → self::InstantiatedButMethodsUnused*
@@ -37,6 +67,16 @@
   method usedInSubclass() → void {
     core::print("Unused");
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class ClassA extends self::UsedAsBaseClass implements self::UsedAsInterface, self::InstantiatedButMethodsUnused {
   synthetic constructor •() → self::ClassA*
diff --git a/pkg/front_end/testcases/general/unused_methods.dart.strong.transformed.expect b/pkg/front_end/testcases/general/unused_methods.dart.strong.transformed.expect
index e2c09cd..609b92c 100644
--- a/pkg/front_end/testcases/general/unused_methods.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general/unused_methods.dart.strong.transformed.expect
@@ -7,6 +7,16 @@
     : super core::Object::•() {
     core::print("Unused");
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class UsedAsBaseClass extends core::Object {
   synthetic constructor •() → self::UsedAsBaseClass*
@@ -21,6 +31,16 @@
   method calledFromSubclass() → void {
     core::print("Unused");
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class UsedAsInterface extends core::Object {
   synthetic constructor •() → self::UsedAsInterface*
@@ -29,6 +49,16 @@
   method usedInSubclass() → void {
     core::print("Unused");
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class InstantiatedButMethodsUnused extends core::Object {
   synthetic constructor •() → self::InstantiatedButMethodsUnused*
@@ -37,6 +67,16 @@
   method usedInSubclass() → void {
     core::print("Unused");
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class ClassA extends self::UsedAsBaseClass implements self::UsedAsInterface, self::InstantiatedButMethodsUnused {
   synthetic constructor •() → self::ClassA*
diff --git a/pkg/front_end/testcases/general/var_as_type_name.dart.outline.expect b/pkg/front_end/testcases/general/var_as_type_name.dart.outline.expect
index 6da5c74..7078080 100644
--- a/pkg/front_end/testcases/general/var_as_type_name.dart.outline.expect
+++ b/pkg/front_end/testcases/general/var_as_type_name.dart.outline.expect
@@ -17,6 +17,16 @@
   field core::Map<core::String*, invalid-type>* m;
   synthetic constructor •() → self::A*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/general/var_as_type_name.dart.strong.expect b/pkg/front_end/testcases/general/var_as_type_name.dart.strong.expect
index 4ac4fef..99c95cb 100644
--- a/pkg/front_end/testcases/general/var_as_type_name.dart.strong.expect
+++ b/pkg/front_end/testcases/general/var_as_type_name.dart.strong.expect
@@ -22,6 +22,16 @@
   synthetic constructor •() → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   self::A* a = new self::A::•();
diff --git a/pkg/front_end/testcases/general/var_as_type_name.dart.strong.transformed.expect b/pkg/front_end/testcases/general/var_as_type_name.dart.strong.transformed.expect
index 4ac4fef..99c95cb 100644
--- a/pkg/front_end/testcases/general/var_as_type_name.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general/var_as_type_name.dart.strong.transformed.expect
@@ -22,6 +22,16 @@
   synthetic constructor •() → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   self::A* a = new self::A::•();
diff --git a/pkg/front_end/testcases/general/vm_type_ops.dart.outline.expect b/pkg/front_end/testcases/general/vm_type_ops.dart.outline.expect
index 441c807..620909d 100644
--- a/pkg/front_end/testcases/general/vm_type_ops.dart.outline.expect
+++ b/pkg/front_end/testcases/general/vm_type_ops.dart.outline.expect
@@ -5,6 +5,16 @@
 class A<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::A<self::A::T*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A<core::String*> {
   synthetic constructor •() → self::B*
@@ -30,18 +40,48 @@
     ;
   method foo6<generic-covariant-impl T extends self::E::P* = self::E::P*, U extends core::List<self::E::foo6::T*>* = core::List<self::E::P*>*>(core::Map<self::E::foo6::T*, self::E::foo6::U*>* map) → void
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class F<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::F<self::F::T*>*
     ;
   abstract method foo7<generic-covariant-impl Q extends self::F::T* = self::F::T*>(self::F::foo7::Q* a, covariant core::num* b, generic-covariant-impl self::F::T* c) → void;
   abstract method foo8<generic-covariant-impl Q extends self::F::T* = self::F::T*>(self::F::foo8::Q* a, covariant core::num* b, generic-covariant-impl self::F::T* c) → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class G<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::G<self::G::T*>*
     ;
   method foo7<generic-covariant-impl Q extends self::G::T* = self::G::T*>(self::G::foo7::Q* a, core::int* b, generic-covariant-impl self::G::T* c) → void
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class H<T extends core::Object* = dynamic> extends self::G<self::H::T*> implements self::F<self::H::T*> {
   synthetic constructor •() → self::H<self::H::T*>*
diff --git a/pkg/front_end/testcases/general/vm_type_ops.dart.strong.expect b/pkg/front_end/testcases/general/vm_type_ops.dart.strong.expect
index 1418ee2..16bbd4b 100644
--- a/pkg/front_end/testcases/general/vm_type_ops.dart.strong.expect
+++ b/pkg/front_end/testcases/general/vm_type_ops.dart.strong.expect
@@ -6,6 +6,16 @@
   synthetic constructor •() → self::A<self::A::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A<core::String*> {
   synthetic constructor •() → self::B*
@@ -49,6 +59,16 @@
   static factory •<P extends core::String* = dynamic>() → self::E<self::E::•::P*>*
     return null;
   method foo6<generic-covariant-impl T extends self::E::P* = self::E::P*, U extends core::List<self::E::foo6::T*>* = core::List<self::E::P*>*>(core::Map<self::E::foo6::T*, self::E::foo6::U*>* map) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class F<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::F<self::F::T*>*
@@ -56,12 +76,32 @@
     ;
   abstract method foo7<generic-covariant-impl Q extends self::F::T* = self::F::T*>(self::F::foo7::Q* a, covariant core::num* b, generic-covariant-impl self::F::T* c) → void;
   abstract method foo8<generic-covariant-impl Q extends self::F::T* = self::F::T*>(self::F::foo8::Q* a, covariant core::num* b, generic-covariant-impl self::F::T* c) → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class G<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::G<self::G::T*>*
     : super core::Object::•()
     ;
   method foo7<generic-covariant-impl Q extends self::G::T* = self::G::T*>(self::G::foo7::Q* a, core::int* b, generic-covariant-impl self::G::T* c) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class H<T extends core::Object* = dynamic> extends self::G<self::H::T*> implements self::F<self::H::T*> {
   synthetic constructor •() → self::H<self::H::T*>*
diff --git a/pkg/front_end/testcases/general/vm_type_ops.dart.strong.transformed.expect b/pkg/front_end/testcases/general/vm_type_ops.dart.strong.transformed.expect
index 1418ee2..16bbd4b 100644
--- a/pkg/front_end/testcases/general/vm_type_ops.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general/vm_type_ops.dart.strong.transformed.expect
@@ -6,6 +6,16 @@
   synthetic constructor •() → self::A<self::A::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A<core::String*> {
   synthetic constructor •() → self::B*
@@ -49,6 +59,16 @@
   static factory •<P extends core::String* = dynamic>() → self::E<self::E::•::P*>*
     return null;
   method foo6<generic-covariant-impl T extends self::E::P* = self::E::P*, U extends core::List<self::E::foo6::T*>* = core::List<self::E::P*>*>(core::Map<self::E::foo6::T*, self::E::foo6::U*>* map) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class F<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::F<self::F::T*>*
@@ -56,12 +76,32 @@
     ;
   abstract method foo7<generic-covariant-impl Q extends self::F::T* = self::F::T*>(self::F::foo7::Q* a, covariant core::num* b, generic-covariant-impl self::F::T* c) → void;
   abstract method foo8<generic-covariant-impl Q extends self::F::T* = self::F::T*>(self::F::foo8::Q* a, covariant core::num* b, generic-covariant-impl self::F::T* c) → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class G<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::G<self::G::T*>*
     : super core::Object::•()
     ;
   method foo7<generic-covariant-impl Q extends self::G::T* = self::G::T*>(self::G::foo7::Q* a, core::int* b, generic-covariant-impl self::G::T* c) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class H<T extends core::Object* = dynamic> extends self::G<self::H::T*> implements self::F<self::H::T*> {
   synthetic constructor •() → self::H<self::H::T*>*
diff --git a/pkg/front_end/testcases/general/void_methods.dart.outline.expect b/pkg/front_end/testcases/general/void_methods.dart.outline.expect
index cfecfd9..910ea9e 100644
--- a/pkg/front_end/testcases/general/void_methods.dart.outline.expect
+++ b/pkg/front_end/testcases/general/void_methods.dart.outline.expect
@@ -12,6 +12,16 @@
     ;
   method clear() → void
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/general/void_methods.dart.strong.expect b/pkg/front_end/testcases/general/void_methods.dart.strong.expect
index c503392..b57b62c 100644
--- a/pkg/front_end/testcases/general/void_methods.dart.strong.expect
+++ b/pkg/front_end/testcases/general/void_methods.dart.strong.expect
@@ -10,9 +10,19 @@
   set first(dynamic x) → void
     return let final core::List<dynamic>* #t1 = this.{self::Foo::list} in let final core::int* #t2 = 0 in let final dynamic #t3 = x in let final void #t4 = #t1.{core::List::[]=}(#t2, #t3) in #t3;
   operator []=(dynamic x, dynamic y) → void
-    return let final core::List<dynamic>* #t5 = this.{self::Foo::list} in let final dynamic #t6 = x as{TypeError,ForDynamic} core::int* in let final dynamic #t7 = y in let final void #t8 = #t5.{core::List::[]=}(#t6, #t7) in #t7;
+    return let final core::List<dynamic>* #t5 = this.{self::Foo::list} in let final dynamic #t6 = x as{TypeError,ForDynamic} core::int in let final dynamic #t7 = y in let final void #t8 = #t5.{core::List::[]=}(#t6, #t7) in #t7;
   method clear() → void
     return this.{self::Foo::list}.{core::List::clear}();
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   new self::Foo::•().{self::Foo::first} = 4;
diff --git a/pkg/front_end/testcases/general/void_methods.dart.strong.transformed.expect b/pkg/front_end/testcases/general/void_methods.dart.strong.transformed.expect
index 739251d..88ae60a 100644
--- a/pkg/front_end/testcases/general/void_methods.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general/void_methods.dart.strong.transformed.expect
@@ -10,9 +10,19 @@
   set first(dynamic x) → void
     return let final core::List<dynamic>* #t1 = this.{self::Foo::list} in let final core::int* #t2 = 0 in let final dynamic #t3 = x in let final void #t4 = #t1.{core::List::[]=}(#t2, #t3) in #t3;
   operator []=(dynamic x, dynamic y) → void
-    return let final core::List<dynamic>* #t5 = this.{self::Foo::list} in let final core::int* #t6 = x as{TypeError,ForDynamic} core::int* in let final dynamic #t7 = y in let final void #t8 = #t5.{core::List::[]=}(#t6, #t7) in #t7;
+    return let final core::List<dynamic>* #t5 = this.{self::Foo::list} in let final core::int #t6 = x as{TypeError,ForDynamic} core::int in let final dynamic #t7 = y in let final void #t8 = #t5.{core::List::[]=}(#t6, #t7) in #t7;
   method clear() → void
     return this.{self::Foo::list}.{core::List::clear}();
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   new self::Foo::•().{self::Foo::first} = 4;
diff --git a/pkg/front_end/testcases/general/warn_unresolved_sends.dart.outline.expect b/pkg/front_end/testcases/general/warn_unresolved_sends.dart.outline.expect
index 72e387d..43ced28 100644
--- a/pkg/front_end/testcases/general/warn_unresolved_sends.dart.outline.expect
+++ b/pkg/front_end/testcases/general/warn_unresolved_sends.dart.outline.expect
@@ -16,6 +16,16 @@
     ;
   set getterOnly(dynamic _) → void
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D extends self::C {
   field dynamic field;
diff --git a/pkg/front_end/testcases/general/warn_unresolved_sends.dart.strong.expect b/pkg/front_end/testcases/general/warn_unresolved_sends.dart.strong.expect
index a61ca7f..182b166 100644
--- a/pkg/front_end/testcases/general/warn_unresolved_sends.dart.strong.expect
+++ b/pkg/front_end/testcases/general/warn_unresolved_sends.dart.strong.expect
@@ -53,6 +53,16 @@
   get getterOnly() → dynamic
     return null;
   set getterOnly(dynamic _) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D extends self::C {
   field dynamic field = null;
diff --git a/pkg/front_end/testcases/general/warn_unresolved_sends.dart.strong.transformed.expect b/pkg/front_end/testcases/general/warn_unresolved_sends.dart.strong.transformed.expect
index a61ca7f..182b166 100644
--- a/pkg/front_end/testcases/general/warn_unresolved_sends.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general/warn_unresolved_sends.dart.strong.transformed.expect
@@ -53,6 +53,16 @@
   get getterOnly() → dynamic
     return null;
   set getterOnly(dynamic _) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D extends self::C {
   field dynamic field = null;
diff --git a/pkg/front_end/testcases/general/well_boundness_checks_in_outline.dart.outline.expect b/pkg/front_end/testcases/general/well_boundness_checks_in_outline.dart.outline.expect
index b2736df..c534582 100644
--- a/pkg/front_end/testcases/general/well_boundness_checks_in_outline.dart.outline.expect
+++ b/pkg/front_end/testcases/general/well_boundness_checks_in_outline.dart.outline.expect
@@ -24,12 +24,32 @@
 class A<X extends core::int* = core::int*> extends core::Object {
   synthetic constructor •() → self::A<self::A::X*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends core::Object {
   field self::A<core::num*>* fieldOfA;
   static field self::A<core::num*>* staticFieldOfA;
   synthetic constructor •() → self::B*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 extension E<X extends self::A<core::num*>* = dynamic> on self::A<core::int*>* {
   static field fieldOfE = self::E|fieldOfE;
diff --git a/pkg/front_end/testcases/general/well_boundness_checks_in_outline.dart.strong.expect b/pkg/front_end/testcases/general/well_boundness_checks_in_outline.dart.strong.expect
index 7929082..d9dbd6b 100644
--- a/pkg/front_end/testcases/general/well_boundness_checks_in_outline.dart.strong.expect
+++ b/pkg/front_end/testcases/general/well_boundness_checks_in_outline.dart.strong.expect
@@ -25,6 +25,16 @@
   synthetic constructor •() → self::A<self::A::X*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends core::Object {
   field self::A<core::num*>* fieldOfA = null;
@@ -32,6 +42,16 @@
   synthetic constructor •() → self::B*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 extension E<X extends self::A<core::num*>* = dynamic> on self::A<core::int*>* {
   static field fieldOfE = self::E|fieldOfE;
diff --git a/pkg/front_end/testcases/general/well_boundness_checks_in_outline.dart.strong.transformed.expect b/pkg/front_end/testcases/general/well_boundness_checks_in_outline.dart.strong.transformed.expect
index 7929082..d9dbd6b 100644
--- a/pkg/front_end/testcases/general/well_boundness_checks_in_outline.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general/well_boundness_checks_in_outline.dart.strong.transformed.expect
@@ -25,6 +25,16 @@
   synthetic constructor •() → self::A<self::A::X*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends core::Object {
   field self::A<core::num*>* fieldOfA = null;
@@ -32,6 +42,16 @@
   synthetic constructor •() → self::B*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 extension E<X extends self::A<core::num*>* = dynamic> on self::A<core::int*>* {
   static field fieldOfE = self::E|fieldOfE;
diff --git a/pkg/front_end/testcases/general/with_dependencies/abstract_members_from_dill/main_lib.dart.outline.expect b/pkg/front_end/testcases/general/with_dependencies/abstract_members_from_dill/main_lib.dart.outline.expect
index 0246d55..ab86f3d 100644
--- a/pkg/front_end/testcases/general/with_dependencies/abstract_members_from_dill/main_lib.dart.outline.expect
+++ b/pkg/front_end/testcases/general/with_dependencies/abstract_members_from_dill/main_lib.dart.outline.expect
@@ -20,4 +20,13 @@
     ;
   @core::override
   abstract method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
 }
diff --git a/pkg/front_end/testcases/general/with_dependencies/abstract_members_from_dill/main_lib.dart.strong.expect b/pkg/front_end/testcases/general/with_dependencies/abstract_members_from_dill/main_lib.dart.strong.expect
index b926781..53cc3ce 100644
--- a/pkg/front_end/testcases/general/with_dependencies/abstract_members_from_dill/main_lib.dart.strong.expect
+++ b/pkg/front_end/testcases/general/with_dependencies/abstract_members_from_dill/main_lib.dart.strong.expect
@@ -21,6 +21,15 @@
     ;
   @#C1
   abstract method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 
 constants  {
diff --git a/pkg/front_end/testcases/general/with_dependencies/abstract_members_from_dill/main_lib.dart.strong.transformed.expect b/pkg/front_end/testcases/general/with_dependencies/abstract_members_from_dill/main_lib.dart.strong.transformed.expect
index b926781..53cc3ce 100644
--- a/pkg/front_end/testcases/general/with_dependencies/abstract_members_from_dill/main_lib.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general/with_dependencies/abstract_members_from_dill/main_lib.dart.strong.transformed.expect
@@ -21,6 +21,15 @@
     ;
   @#C1
   abstract method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 
 constants  {
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/DeltaBlue.dart.outline.expect b/pkg/front_end/testcases/general_nnbd_opt_out/DeltaBlue.dart.outline.expect
index 5d802a5..acbb4c1 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/DeltaBlue.dart.outline.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/DeltaBlue.dart.outline.expect
@@ -7,6 +7,16 @@
     ;
   method run() → void
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Strength extends core::Object /*hasConstConstructor*/  {
   final field core::int* value;
@@ -24,6 +34,16 @@
     ;
   static method strongest(self::Strength* s1, self::Strength* s2) → self::Strength*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class Constraint extends core::Object /*hasConstConstructor*/  {
   final field self::Strength* strength;
@@ -48,6 +68,16 @@
     ;
   method isInput() → core::bool*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class UnaryConstraint extends self::Constraint {
   final field self::Variable* myOutput;
@@ -150,6 +180,16 @@
     ;
   method removeConstraint(self::Constraint* c) → void
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Planner extends core::Object {
   field core::int* currentMark;
@@ -171,6 +211,16 @@
     ;
   method addConstraintsConsumingTo(self::Variable* v, core::List<self::Constraint*>* coll) → void
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Plan extends core::Object {
   field core::List<self::Constraint*>* list;
@@ -182,6 +232,16 @@
     ;
   method execute() → void
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static const field self::Strength* REQUIRED = const self::Strength::•(0, "required");
 static const field self::Strength* STRONG_PREFERRED = const self::Strength::•(1, "strongPreferred");
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/DeltaBlue.dart.strong.expect b/pkg/front_end/testcases/general_nnbd_opt_out/DeltaBlue.dart.strong.expect
index 2b67a8a..2a474d9 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/DeltaBlue.dart.strong.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/DeltaBlue.dart.strong.expect
@@ -10,6 +10,16 @@
     self::chainTest(100);
     self::projectionTest(100);
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Strength extends core::Object /*hasConstConstructor*/  {
   final field core::int* value;
@@ -31,6 +41,16 @@
   static method strongest(self::Strength* s1, self::Strength* s2) → self::Strength* {
     return self::Strength::stronger(s1, s2) ?{self::Strength*} s1 : s2;
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class Constraint extends core::Object /*hasConstConstructor*/  {
   final field self::Strength* strength;
@@ -54,7 +74,7 @@
   method satisfy(dynamic mark) → self::Constraint* {
     this.{self::Constraint::chooseMethod}(mark as{TypeError,ForDynamic} core::int*);
     if(!this.{self::Constraint::isSatisfied}()) {
-      if(this.{self::Constraint::strength}.{core::Object::==}(#C22)) {
+      if(this.{self::Constraint::strength}.{self::Strength::==}(#C22)) {
         core::print("Could not satisfy a required constraint!");
       }
       return null;
@@ -62,7 +82,7 @@
     this.{self::Constraint::markInputs}(mark as{TypeError,ForDynamic} core::int*);
     self::Variable* out = this.{self::Constraint::output}();
     self::Constraint* overridden = out.{self::Variable::determinedBy};
-    if(!overridden.{core::Object::==}(null))
+    if(!overridden.{self::Constraint::==}(null))
       overridden.{self::Constraint::markUnsatisfied}();
     out.{self::Variable::determinedBy} = this;
     if(!self::planner.{self::Planner::addPropagate}(this, mark as{TypeError,ForDynamic} core::int*))
@@ -77,6 +97,16 @@
   }
   method isInput() → core::bool*
     return false;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class UnaryConstraint extends self::Constraint {
   final field self::Variable* myOutput;
@@ -109,7 +139,7 @@
   method inputsKnown(core::int* mark) → core::bool*
     return true;
   method removeFromGraph() → void {
-    if(!this.{self::UnaryConstraint::myOutput}.{core::Object::==}(null))
+    if(!this.{self::UnaryConstraint::myOutput}.{self::Variable::==}(null))
       this.{self::UnaryConstraint::myOutput}.{self::Variable::removeConstraint}(this);
     this.{self::UnaryConstraint::satisfied} = false;
   }
@@ -177,12 +207,12 @@
   }
   method inputsKnown(core::int* mark) → core::bool* {
     self::Variable* i = this.{self::BinaryConstraint::input}();
-    return i.{self::Variable::mark}.{core::num::==}(mark) || i.{self::Variable::stay} || i.{self::Variable::determinedBy}.{core::Object::==}(null);
+    return i.{self::Variable::mark}.{core::num::==}(mark) || i.{self::Variable::stay} || i.{self::Variable::determinedBy}.{self::Constraint::==}(null);
   }
   method removeFromGraph() → void {
-    if(!this.{self::BinaryConstraint::v1}.{core::Object::==}(null))
+    if(!this.{self::BinaryConstraint::v1}.{self::Variable::==}(null))
       this.{self::BinaryConstraint::v1}.{self::Variable::removeConstraint}(this);
-    if(!this.{self::BinaryConstraint::v2}.{core::Object::==}(null))
+    if(!this.{self::BinaryConstraint::v2}.{self::Variable::==}(null))
       this.{self::BinaryConstraint::v2}.{self::Variable::removeConstraint}(this);
     this.{self::BinaryConstraint::direction} = #C1;
   }
@@ -200,9 +230,9 @@
   }
   method removeFromGraph() → void {
     super.{self::BinaryConstraint::removeFromGraph}();
-    if(!this.{self::ScaleConstraint::scale}.{core::Object::==}(null))
+    if(!this.{self::ScaleConstraint::scale}.{self::Variable::==}(null))
       this.{self::ScaleConstraint::scale}.{self::Variable::removeConstraint}(this);
-    if(!this.{self::ScaleConstraint::offset}.{core::Object::==}(null))
+    if(!this.{self::ScaleConstraint::offset}.{self::Variable::==}(null))
       this.{self::ScaleConstraint::offset}.{self::Variable::removeConstraint}(this);
   }
   method markInputs(core::int* mark) → void {
@@ -250,9 +280,19 @@
   }
   method removeConstraint(self::Constraint* c) → void {
     this.{self::Variable::constraints}.{core::List::remove}(c);
-    if(this.{self::Variable::determinedBy}.{core::Object::==}(c))
+    if(this.{self::Variable::determinedBy}.{self::Constraint::==}(c))
       this.{self::Variable::determinedBy} = null;
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Planner extends core::Object {
   field core::int* currentMark = 0;
@@ -261,7 +301,7 @@
     ;
   method incrementalAdd(self::Constraint* c) → void {
     core::int* mark = this.{self::Planner::newMark}();
-    for (self::Constraint* overridden = c.{self::Constraint::satisfy}(mark); !overridden.{core::Object::==}(null); overridden = overridden.{self::Constraint::satisfy}(mark))
+    for (self::Constraint* overridden = c.{self::Constraint::satisfy}(mark); !overridden.{self::Constraint::==}(null); overridden = overridden.{self::Constraint::satisfy}(mark))
       ;
   }
   method incrementalRemove(self::Constraint* c) → void {
@@ -273,12 +313,12 @@
     do {
       for (core::int* i = 0; i.{core::num::<}(unsatisfied.{core::List::length}); i = i.{core::num::+}(1)) {
         self::Constraint* u = unsatisfied.{core::List::[]}(i);
-        if(u.{self::Constraint::strength}.{core::Object::==}(strength))
+        if(u.{self::Constraint::strength}.{self::Strength::==}(strength))
           this.{self::Planner::incrementalAdd}(u);
       }
       strength = strength.{self::Strength::nextWeaker}();
     }
-    while (!strength.{core::Object::==}(#C18))
+    while (!strength.{self::Strength::==}(#C18))
   }
   method newMark() → core::int*
     return this.{self::Planner::currentMark} = this.{self::Planner::currentMark}.{core::num::+}(1);
@@ -334,7 +374,7 @@
       self::Constraint* determining = v.{self::Variable::determinedBy};
       for (core::int* i = 0; i.{core::num::<}(v.{self::Variable::constraints}.{core::List::length}); i = i.{core::num::+}(1)) {
         self::Constraint* next = v.{self::Variable::constraints}.{core::List::[]}(i);
-        if(!next.{core::Object::==}(determining) && next.{self::Constraint::isSatisfied}()) {
+        if(!next.{self::Constraint::==}(determining) && next.{self::Constraint::isSatisfied}()) {
           next.{self::Constraint::recalculate}();
           todo.{core::List::add}(next.{self::Constraint::output}());
         }
@@ -346,10 +386,20 @@
     self::Constraint* determining = v.{self::Variable::determinedBy};
     for (core::int* i = 0; i.{core::num::<}(v.{self::Variable::constraints}.{core::List::length}); i = i.{core::num::+}(1)) {
       self::Constraint* c = v.{self::Variable::constraints}.{core::List::[]}(i);
-      if(!c.{core::Object::==}(determining) && c.{self::Constraint::isSatisfied}())
+      if(!c.{self::Constraint::==}(determining) && c.{self::Constraint::isSatisfied}())
         coll.{core::List::add}(c);
     }
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Plan extends core::Object {
   field core::List<self::Constraint*>* list = <self::Constraint*>[];
@@ -366,6 +416,16 @@
       this.{self::Plan::list}.{core::List::[]}(i).{self::Constraint::execute}();
     }
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static const field self::Strength* REQUIRED = #C22;
 static const field self::Strength* STRONG_PREFERRED = #C3;
@@ -388,7 +448,7 @@
   self::Variable* last = null;
   for (core::int* i = 0; i.{core::num::<=}(n); i = i.{core::num::+}(1)) {
     self::Variable* v = new self::Variable::•("v${i}", 0);
-    if(!prev.{core::Object::==}(null))
+    if(!prev.{self::Variable::==}(null))
       new self::EqualityConstraint::•(prev, v, #C22);
     if(i.{core::num::==}(0))
       first = v;
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/DeltaBlue.dart.strong.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/DeltaBlue.dart.strong.transformed.expect
index 2b67a8a..2a474d9 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/DeltaBlue.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/DeltaBlue.dart.strong.transformed.expect
@@ -10,6 +10,16 @@
     self::chainTest(100);
     self::projectionTest(100);
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Strength extends core::Object /*hasConstConstructor*/  {
   final field core::int* value;
@@ -31,6 +41,16 @@
   static method strongest(self::Strength* s1, self::Strength* s2) → self::Strength* {
     return self::Strength::stronger(s1, s2) ?{self::Strength*} s1 : s2;
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class Constraint extends core::Object /*hasConstConstructor*/  {
   final field self::Strength* strength;
@@ -54,7 +74,7 @@
   method satisfy(dynamic mark) → self::Constraint* {
     this.{self::Constraint::chooseMethod}(mark as{TypeError,ForDynamic} core::int*);
     if(!this.{self::Constraint::isSatisfied}()) {
-      if(this.{self::Constraint::strength}.{core::Object::==}(#C22)) {
+      if(this.{self::Constraint::strength}.{self::Strength::==}(#C22)) {
         core::print("Could not satisfy a required constraint!");
       }
       return null;
@@ -62,7 +82,7 @@
     this.{self::Constraint::markInputs}(mark as{TypeError,ForDynamic} core::int*);
     self::Variable* out = this.{self::Constraint::output}();
     self::Constraint* overridden = out.{self::Variable::determinedBy};
-    if(!overridden.{core::Object::==}(null))
+    if(!overridden.{self::Constraint::==}(null))
       overridden.{self::Constraint::markUnsatisfied}();
     out.{self::Variable::determinedBy} = this;
     if(!self::planner.{self::Planner::addPropagate}(this, mark as{TypeError,ForDynamic} core::int*))
@@ -77,6 +97,16 @@
   }
   method isInput() → core::bool*
     return false;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class UnaryConstraint extends self::Constraint {
   final field self::Variable* myOutput;
@@ -109,7 +139,7 @@
   method inputsKnown(core::int* mark) → core::bool*
     return true;
   method removeFromGraph() → void {
-    if(!this.{self::UnaryConstraint::myOutput}.{core::Object::==}(null))
+    if(!this.{self::UnaryConstraint::myOutput}.{self::Variable::==}(null))
       this.{self::UnaryConstraint::myOutput}.{self::Variable::removeConstraint}(this);
     this.{self::UnaryConstraint::satisfied} = false;
   }
@@ -177,12 +207,12 @@
   }
   method inputsKnown(core::int* mark) → core::bool* {
     self::Variable* i = this.{self::BinaryConstraint::input}();
-    return i.{self::Variable::mark}.{core::num::==}(mark) || i.{self::Variable::stay} || i.{self::Variable::determinedBy}.{core::Object::==}(null);
+    return i.{self::Variable::mark}.{core::num::==}(mark) || i.{self::Variable::stay} || i.{self::Variable::determinedBy}.{self::Constraint::==}(null);
   }
   method removeFromGraph() → void {
-    if(!this.{self::BinaryConstraint::v1}.{core::Object::==}(null))
+    if(!this.{self::BinaryConstraint::v1}.{self::Variable::==}(null))
       this.{self::BinaryConstraint::v1}.{self::Variable::removeConstraint}(this);
-    if(!this.{self::BinaryConstraint::v2}.{core::Object::==}(null))
+    if(!this.{self::BinaryConstraint::v2}.{self::Variable::==}(null))
       this.{self::BinaryConstraint::v2}.{self::Variable::removeConstraint}(this);
     this.{self::BinaryConstraint::direction} = #C1;
   }
@@ -200,9 +230,9 @@
   }
   method removeFromGraph() → void {
     super.{self::BinaryConstraint::removeFromGraph}();
-    if(!this.{self::ScaleConstraint::scale}.{core::Object::==}(null))
+    if(!this.{self::ScaleConstraint::scale}.{self::Variable::==}(null))
       this.{self::ScaleConstraint::scale}.{self::Variable::removeConstraint}(this);
-    if(!this.{self::ScaleConstraint::offset}.{core::Object::==}(null))
+    if(!this.{self::ScaleConstraint::offset}.{self::Variable::==}(null))
       this.{self::ScaleConstraint::offset}.{self::Variable::removeConstraint}(this);
   }
   method markInputs(core::int* mark) → void {
@@ -250,9 +280,19 @@
   }
   method removeConstraint(self::Constraint* c) → void {
     this.{self::Variable::constraints}.{core::List::remove}(c);
-    if(this.{self::Variable::determinedBy}.{core::Object::==}(c))
+    if(this.{self::Variable::determinedBy}.{self::Constraint::==}(c))
       this.{self::Variable::determinedBy} = null;
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Planner extends core::Object {
   field core::int* currentMark = 0;
@@ -261,7 +301,7 @@
     ;
   method incrementalAdd(self::Constraint* c) → void {
     core::int* mark = this.{self::Planner::newMark}();
-    for (self::Constraint* overridden = c.{self::Constraint::satisfy}(mark); !overridden.{core::Object::==}(null); overridden = overridden.{self::Constraint::satisfy}(mark))
+    for (self::Constraint* overridden = c.{self::Constraint::satisfy}(mark); !overridden.{self::Constraint::==}(null); overridden = overridden.{self::Constraint::satisfy}(mark))
       ;
   }
   method incrementalRemove(self::Constraint* c) → void {
@@ -273,12 +313,12 @@
     do {
       for (core::int* i = 0; i.{core::num::<}(unsatisfied.{core::List::length}); i = i.{core::num::+}(1)) {
         self::Constraint* u = unsatisfied.{core::List::[]}(i);
-        if(u.{self::Constraint::strength}.{core::Object::==}(strength))
+        if(u.{self::Constraint::strength}.{self::Strength::==}(strength))
           this.{self::Planner::incrementalAdd}(u);
       }
       strength = strength.{self::Strength::nextWeaker}();
     }
-    while (!strength.{core::Object::==}(#C18))
+    while (!strength.{self::Strength::==}(#C18))
   }
   method newMark() → core::int*
     return this.{self::Planner::currentMark} = this.{self::Planner::currentMark}.{core::num::+}(1);
@@ -334,7 +374,7 @@
       self::Constraint* determining = v.{self::Variable::determinedBy};
       for (core::int* i = 0; i.{core::num::<}(v.{self::Variable::constraints}.{core::List::length}); i = i.{core::num::+}(1)) {
         self::Constraint* next = v.{self::Variable::constraints}.{core::List::[]}(i);
-        if(!next.{core::Object::==}(determining) && next.{self::Constraint::isSatisfied}()) {
+        if(!next.{self::Constraint::==}(determining) && next.{self::Constraint::isSatisfied}()) {
           next.{self::Constraint::recalculate}();
           todo.{core::List::add}(next.{self::Constraint::output}());
         }
@@ -346,10 +386,20 @@
     self::Constraint* determining = v.{self::Variable::determinedBy};
     for (core::int* i = 0; i.{core::num::<}(v.{self::Variable::constraints}.{core::List::length}); i = i.{core::num::+}(1)) {
       self::Constraint* c = v.{self::Variable::constraints}.{core::List::[]}(i);
-      if(!c.{core::Object::==}(determining) && c.{self::Constraint::isSatisfied}())
+      if(!c.{self::Constraint::==}(determining) && c.{self::Constraint::isSatisfied}())
         coll.{core::List::add}(c);
     }
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Plan extends core::Object {
   field core::List<self::Constraint*>* list = <self::Constraint*>[];
@@ -366,6 +416,16 @@
       this.{self::Plan::list}.{core::List::[]}(i).{self::Constraint::execute}();
     }
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static const field self::Strength* REQUIRED = #C22;
 static const field self::Strength* STRONG_PREFERRED = #C3;
@@ -388,7 +448,7 @@
   self::Variable* last = null;
   for (core::int* i = 0; i.{core::num::<=}(n); i = i.{core::num::+}(1)) {
     self::Variable* v = new self::Variable::•("v${i}", 0);
-    if(!prev.{core::Object::==}(null))
+    if(!prev.{self::Variable::==}(null))
       new self::EqualityConstraint::•(prev, v, #C22);
     if(i.{core::num::==}(0))
       first = v;
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/DeltaBlue.dart.weak.expect b/pkg/front_end/testcases/general_nnbd_opt_out/DeltaBlue.dart.weak.expect
index 2b67a8a..2a474d9 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/DeltaBlue.dart.weak.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/DeltaBlue.dart.weak.expect
@@ -10,6 +10,16 @@
     self::chainTest(100);
     self::projectionTest(100);
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Strength extends core::Object /*hasConstConstructor*/  {
   final field core::int* value;
@@ -31,6 +41,16 @@
   static method strongest(self::Strength* s1, self::Strength* s2) → self::Strength* {
     return self::Strength::stronger(s1, s2) ?{self::Strength*} s1 : s2;
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class Constraint extends core::Object /*hasConstConstructor*/  {
   final field self::Strength* strength;
@@ -54,7 +74,7 @@
   method satisfy(dynamic mark) → self::Constraint* {
     this.{self::Constraint::chooseMethod}(mark as{TypeError,ForDynamic} core::int*);
     if(!this.{self::Constraint::isSatisfied}()) {
-      if(this.{self::Constraint::strength}.{core::Object::==}(#C22)) {
+      if(this.{self::Constraint::strength}.{self::Strength::==}(#C22)) {
         core::print("Could not satisfy a required constraint!");
       }
       return null;
@@ -62,7 +82,7 @@
     this.{self::Constraint::markInputs}(mark as{TypeError,ForDynamic} core::int*);
     self::Variable* out = this.{self::Constraint::output}();
     self::Constraint* overridden = out.{self::Variable::determinedBy};
-    if(!overridden.{core::Object::==}(null))
+    if(!overridden.{self::Constraint::==}(null))
       overridden.{self::Constraint::markUnsatisfied}();
     out.{self::Variable::determinedBy} = this;
     if(!self::planner.{self::Planner::addPropagate}(this, mark as{TypeError,ForDynamic} core::int*))
@@ -77,6 +97,16 @@
   }
   method isInput() → core::bool*
     return false;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class UnaryConstraint extends self::Constraint {
   final field self::Variable* myOutput;
@@ -109,7 +139,7 @@
   method inputsKnown(core::int* mark) → core::bool*
     return true;
   method removeFromGraph() → void {
-    if(!this.{self::UnaryConstraint::myOutput}.{core::Object::==}(null))
+    if(!this.{self::UnaryConstraint::myOutput}.{self::Variable::==}(null))
       this.{self::UnaryConstraint::myOutput}.{self::Variable::removeConstraint}(this);
     this.{self::UnaryConstraint::satisfied} = false;
   }
@@ -177,12 +207,12 @@
   }
   method inputsKnown(core::int* mark) → core::bool* {
     self::Variable* i = this.{self::BinaryConstraint::input}();
-    return i.{self::Variable::mark}.{core::num::==}(mark) || i.{self::Variable::stay} || i.{self::Variable::determinedBy}.{core::Object::==}(null);
+    return i.{self::Variable::mark}.{core::num::==}(mark) || i.{self::Variable::stay} || i.{self::Variable::determinedBy}.{self::Constraint::==}(null);
   }
   method removeFromGraph() → void {
-    if(!this.{self::BinaryConstraint::v1}.{core::Object::==}(null))
+    if(!this.{self::BinaryConstraint::v1}.{self::Variable::==}(null))
       this.{self::BinaryConstraint::v1}.{self::Variable::removeConstraint}(this);
-    if(!this.{self::BinaryConstraint::v2}.{core::Object::==}(null))
+    if(!this.{self::BinaryConstraint::v2}.{self::Variable::==}(null))
       this.{self::BinaryConstraint::v2}.{self::Variable::removeConstraint}(this);
     this.{self::BinaryConstraint::direction} = #C1;
   }
@@ -200,9 +230,9 @@
   }
   method removeFromGraph() → void {
     super.{self::BinaryConstraint::removeFromGraph}();
-    if(!this.{self::ScaleConstraint::scale}.{core::Object::==}(null))
+    if(!this.{self::ScaleConstraint::scale}.{self::Variable::==}(null))
       this.{self::ScaleConstraint::scale}.{self::Variable::removeConstraint}(this);
-    if(!this.{self::ScaleConstraint::offset}.{core::Object::==}(null))
+    if(!this.{self::ScaleConstraint::offset}.{self::Variable::==}(null))
       this.{self::ScaleConstraint::offset}.{self::Variable::removeConstraint}(this);
   }
   method markInputs(core::int* mark) → void {
@@ -250,9 +280,19 @@
   }
   method removeConstraint(self::Constraint* c) → void {
     this.{self::Variable::constraints}.{core::List::remove}(c);
-    if(this.{self::Variable::determinedBy}.{core::Object::==}(c))
+    if(this.{self::Variable::determinedBy}.{self::Constraint::==}(c))
       this.{self::Variable::determinedBy} = null;
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Planner extends core::Object {
   field core::int* currentMark = 0;
@@ -261,7 +301,7 @@
     ;
   method incrementalAdd(self::Constraint* c) → void {
     core::int* mark = this.{self::Planner::newMark}();
-    for (self::Constraint* overridden = c.{self::Constraint::satisfy}(mark); !overridden.{core::Object::==}(null); overridden = overridden.{self::Constraint::satisfy}(mark))
+    for (self::Constraint* overridden = c.{self::Constraint::satisfy}(mark); !overridden.{self::Constraint::==}(null); overridden = overridden.{self::Constraint::satisfy}(mark))
       ;
   }
   method incrementalRemove(self::Constraint* c) → void {
@@ -273,12 +313,12 @@
     do {
       for (core::int* i = 0; i.{core::num::<}(unsatisfied.{core::List::length}); i = i.{core::num::+}(1)) {
         self::Constraint* u = unsatisfied.{core::List::[]}(i);
-        if(u.{self::Constraint::strength}.{core::Object::==}(strength))
+        if(u.{self::Constraint::strength}.{self::Strength::==}(strength))
           this.{self::Planner::incrementalAdd}(u);
       }
       strength = strength.{self::Strength::nextWeaker}();
     }
-    while (!strength.{core::Object::==}(#C18))
+    while (!strength.{self::Strength::==}(#C18))
   }
   method newMark() → core::int*
     return this.{self::Planner::currentMark} = this.{self::Planner::currentMark}.{core::num::+}(1);
@@ -334,7 +374,7 @@
       self::Constraint* determining = v.{self::Variable::determinedBy};
       for (core::int* i = 0; i.{core::num::<}(v.{self::Variable::constraints}.{core::List::length}); i = i.{core::num::+}(1)) {
         self::Constraint* next = v.{self::Variable::constraints}.{core::List::[]}(i);
-        if(!next.{core::Object::==}(determining) && next.{self::Constraint::isSatisfied}()) {
+        if(!next.{self::Constraint::==}(determining) && next.{self::Constraint::isSatisfied}()) {
           next.{self::Constraint::recalculate}();
           todo.{core::List::add}(next.{self::Constraint::output}());
         }
@@ -346,10 +386,20 @@
     self::Constraint* determining = v.{self::Variable::determinedBy};
     for (core::int* i = 0; i.{core::num::<}(v.{self::Variable::constraints}.{core::List::length}); i = i.{core::num::+}(1)) {
       self::Constraint* c = v.{self::Variable::constraints}.{core::List::[]}(i);
-      if(!c.{core::Object::==}(determining) && c.{self::Constraint::isSatisfied}())
+      if(!c.{self::Constraint::==}(determining) && c.{self::Constraint::isSatisfied}())
         coll.{core::List::add}(c);
     }
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Plan extends core::Object {
   field core::List<self::Constraint*>* list = <self::Constraint*>[];
@@ -366,6 +416,16 @@
       this.{self::Plan::list}.{core::List::[]}(i).{self::Constraint::execute}();
     }
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static const field self::Strength* REQUIRED = #C22;
 static const field self::Strength* STRONG_PREFERRED = #C3;
@@ -388,7 +448,7 @@
   self::Variable* last = null;
   for (core::int* i = 0; i.{core::num::<=}(n); i = i.{core::num::+}(1)) {
     self::Variable* v = new self::Variable::•("v${i}", 0);
-    if(!prev.{core::Object::==}(null))
+    if(!prev.{self::Variable::==}(null))
       new self::EqualityConstraint::•(prev, v, #C22);
     if(i.{core::num::==}(0))
       first = v;
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/DeltaBlue.dart.weak.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/DeltaBlue.dart.weak.transformed.expect
index 2b67a8a..2a474d9 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/DeltaBlue.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/DeltaBlue.dart.weak.transformed.expect
@@ -10,6 +10,16 @@
     self::chainTest(100);
     self::projectionTest(100);
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Strength extends core::Object /*hasConstConstructor*/  {
   final field core::int* value;
@@ -31,6 +41,16 @@
   static method strongest(self::Strength* s1, self::Strength* s2) → self::Strength* {
     return self::Strength::stronger(s1, s2) ?{self::Strength*} s1 : s2;
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class Constraint extends core::Object /*hasConstConstructor*/  {
   final field self::Strength* strength;
@@ -54,7 +74,7 @@
   method satisfy(dynamic mark) → self::Constraint* {
     this.{self::Constraint::chooseMethod}(mark as{TypeError,ForDynamic} core::int*);
     if(!this.{self::Constraint::isSatisfied}()) {
-      if(this.{self::Constraint::strength}.{core::Object::==}(#C22)) {
+      if(this.{self::Constraint::strength}.{self::Strength::==}(#C22)) {
         core::print("Could not satisfy a required constraint!");
       }
       return null;
@@ -62,7 +82,7 @@
     this.{self::Constraint::markInputs}(mark as{TypeError,ForDynamic} core::int*);
     self::Variable* out = this.{self::Constraint::output}();
     self::Constraint* overridden = out.{self::Variable::determinedBy};
-    if(!overridden.{core::Object::==}(null))
+    if(!overridden.{self::Constraint::==}(null))
       overridden.{self::Constraint::markUnsatisfied}();
     out.{self::Variable::determinedBy} = this;
     if(!self::planner.{self::Planner::addPropagate}(this, mark as{TypeError,ForDynamic} core::int*))
@@ -77,6 +97,16 @@
   }
   method isInput() → core::bool*
     return false;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class UnaryConstraint extends self::Constraint {
   final field self::Variable* myOutput;
@@ -109,7 +139,7 @@
   method inputsKnown(core::int* mark) → core::bool*
     return true;
   method removeFromGraph() → void {
-    if(!this.{self::UnaryConstraint::myOutput}.{core::Object::==}(null))
+    if(!this.{self::UnaryConstraint::myOutput}.{self::Variable::==}(null))
       this.{self::UnaryConstraint::myOutput}.{self::Variable::removeConstraint}(this);
     this.{self::UnaryConstraint::satisfied} = false;
   }
@@ -177,12 +207,12 @@
   }
   method inputsKnown(core::int* mark) → core::bool* {
     self::Variable* i = this.{self::BinaryConstraint::input}();
-    return i.{self::Variable::mark}.{core::num::==}(mark) || i.{self::Variable::stay} || i.{self::Variable::determinedBy}.{core::Object::==}(null);
+    return i.{self::Variable::mark}.{core::num::==}(mark) || i.{self::Variable::stay} || i.{self::Variable::determinedBy}.{self::Constraint::==}(null);
   }
   method removeFromGraph() → void {
-    if(!this.{self::BinaryConstraint::v1}.{core::Object::==}(null))
+    if(!this.{self::BinaryConstraint::v1}.{self::Variable::==}(null))
       this.{self::BinaryConstraint::v1}.{self::Variable::removeConstraint}(this);
-    if(!this.{self::BinaryConstraint::v2}.{core::Object::==}(null))
+    if(!this.{self::BinaryConstraint::v2}.{self::Variable::==}(null))
       this.{self::BinaryConstraint::v2}.{self::Variable::removeConstraint}(this);
     this.{self::BinaryConstraint::direction} = #C1;
   }
@@ -200,9 +230,9 @@
   }
   method removeFromGraph() → void {
     super.{self::BinaryConstraint::removeFromGraph}();
-    if(!this.{self::ScaleConstraint::scale}.{core::Object::==}(null))
+    if(!this.{self::ScaleConstraint::scale}.{self::Variable::==}(null))
       this.{self::ScaleConstraint::scale}.{self::Variable::removeConstraint}(this);
-    if(!this.{self::ScaleConstraint::offset}.{core::Object::==}(null))
+    if(!this.{self::ScaleConstraint::offset}.{self::Variable::==}(null))
       this.{self::ScaleConstraint::offset}.{self::Variable::removeConstraint}(this);
   }
   method markInputs(core::int* mark) → void {
@@ -250,9 +280,19 @@
   }
   method removeConstraint(self::Constraint* c) → void {
     this.{self::Variable::constraints}.{core::List::remove}(c);
-    if(this.{self::Variable::determinedBy}.{core::Object::==}(c))
+    if(this.{self::Variable::determinedBy}.{self::Constraint::==}(c))
       this.{self::Variable::determinedBy} = null;
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Planner extends core::Object {
   field core::int* currentMark = 0;
@@ -261,7 +301,7 @@
     ;
   method incrementalAdd(self::Constraint* c) → void {
     core::int* mark = this.{self::Planner::newMark}();
-    for (self::Constraint* overridden = c.{self::Constraint::satisfy}(mark); !overridden.{core::Object::==}(null); overridden = overridden.{self::Constraint::satisfy}(mark))
+    for (self::Constraint* overridden = c.{self::Constraint::satisfy}(mark); !overridden.{self::Constraint::==}(null); overridden = overridden.{self::Constraint::satisfy}(mark))
       ;
   }
   method incrementalRemove(self::Constraint* c) → void {
@@ -273,12 +313,12 @@
     do {
       for (core::int* i = 0; i.{core::num::<}(unsatisfied.{core::List::length}); i = i.{core::num::+}(1)) {
         self::Constraint* u = unsatisfied.{core::List::[]}(i);
-        if(u.{self::Constraint::strength}.{core::Object::==}(strength))
+        if(u.{self::Constraint::strength}.{self::Strength::==}(strength))
           this.{self::Planner::incrementalAdd}(u);
       }
       strength = strength.{self::Strength::nextWeaker}();
     }
-    while (!strength.{core::Object::==}(#C18))
+    while (!strength.{self::Strength::==}(#C18))
   }
   method newMark() → core::int*
     return this.{self::Planner::currentMark} = this.{self::Planner::currentMark}.{core::num::+}(1);
@@ -334,7 +374,7 @@
       self::Constraint* determining = v.{self::Variable::determinedBy};
       for (core::int* i = 0; i.{core::num::<}(v.{self::Variable::constraints}.{core::List::length}); i = i.{core::num::+}(1)) {
         self::Constraint* next = v.{self::Variable::constraints}.{core::List::[]}(i);
-        if(!next.{core::Object::==}(determining) && next.{self::Constraint::isSatisfied}()) {
+        if(!next.{self::Constraint::==}(determining) && next.{self::Constraint::isSatisfied}()) {
           next.{self::Constraint::recalculate}();
           todo.{core::List::add}(next.{self::Constraint::output}());
         }
@@ -346,10 +386,20 @@
     self::Constraint* determining = v.{self::Variable::determinedBy};
     for (core::int* i = 0; i.{core::num::<}(v.{self::Variable::constraints}.{core::List::length}); i = i.{core::num::+}(1)) {
       self::Constraint* c = v.{self::Variable::constraints}.{core::List::[]}(i);
-      if(!c.{core::Object::==}(determining) && c.{self::Constraint::isSatisfied}())
+      if(!c.{self::Constraint::==}(determining) && c.{self::Constraint::isSatisfied}())
         coll.{core::List::add}(c);
     }
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Plan extends core::Object {
   field core::List<self::Constraint*>* list = <self::Constraint*>[];
@@ -366,6 +416,16 @@
       this.{self::Plan::list}.{core::List::[]}(i).{self::Constraint::execute}();
     }
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static const field self::Strength* REQUIRED = #C22;
 static const field self::Strength* STRONG_PREFERRED = #C3;
@@ -388,7 +448,7 @@
   self::Variable* last = null;
   for (core::int* i = 0; i.{core::num::<=}(n); i = i.{core::num::+}(1)) {
     self::Variable* v = new self::Variable::•("v${i}", 0);
-    if(!prev.{core::Object::==}(null))
+    if(!prev.{self::Variable::==}(null))
       new self::EqualityConstraint::•(prev, v, #C22);
     if(i.{core::num::==}(0))
       first = v;
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/abstract_members.dart.outline.expect b/pkg/front_end/testcases/general_nnbd_opt_out/abstract_members.dart.outline.expect
index 046136a..76a1188 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/abstract_members.dart.outline.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/abstract_members.dart.outline.expect
@@ -140,6 +140,16 @@
     ;
   method interfaceMethod1() → void
     ;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Interface2 extends core::Object {
   field dynamic interfaceMethod1;
@@ -147,12 +157,32 @@
     ;
   method interfaceMethod2() → void
     ;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Interface3 extends core::Object {
   synthetic constructor •() → self::Interface3*
     ;
   method interfaceMethod3() → void
     ;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class A extends core::Object implements self::Interface1, self::Interface2, self::Interface3 {
   synthetic constructor •() → self::A*
@@ -163,6 +193,16 @@
   abstract set property1(dynamic _) → void;
   abstract set property2(dynamic _) → void;
   abstract set property3(dynamic _) → void;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class B extends self::A {
   final field dynamic property1;
@@ -223,6 +263,16 @@
     ;
   method interfaceMethod1(dynamic _) → void
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class D extends self::C implements self::Interface2 {
   synthetic constructor •() → self::D*
@@ -233,6 +283,16 @@
     ;
   set interfaceMethod1(dynamic _) → void
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class F extends self::E implements self::Interface1 {
   synthetic constructor •() → self::F*
@@ -243,12 +303,32 @@
     ;
   method foo() → void
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class G extends core::Object {
   synthetic constructor •() → self::G*
     ;
   get foo() → core::Object*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class H extends self::G implements self::Foo {
   synthetic constructor •() → self::H*
@@ -259,12 +339,32 @@
     ;
   get foo() → core::Object*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class I extends core::Object {
   synthetic constructor •() → self::I*
     ;
   method foo() → core::Object*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class J extends self::I implements self::Bar {
   synthetic constructor •() → self::J*
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/abstract_members.dart.strong.expect b/pkg/front_end/testcases/general_nnbd_opt_out/abstract_members.dart.strong.expect
index b43d627..42326ef 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/abstract_members.dart.strong.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/abstract_members.dart.strong.expect
@@ -140,6 +140,16 @@
     : super core::Object::•()
     ;
   method interfaceMethod1() → void {}
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Interface2 extends core::Object {
   field dynamic interfaceMethod1 = null;
@@ -147,12 +157,32 @@
     : super core::Object::•()
     ;
   method interfaceMethod2() → void {}
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Interface3 extends core::Object {
   synthetic constructor •() → self::Interface3*
     : super core::Object::•()
     ;
   method interfaceMethod3() → void {}
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class A extends core::Object implements self::Interface1, self::Interface2, self::Interface3 {
   synthetic constructor •() → self::A*
@@ -163,6 +193,16 @@
   abstract set property1(dynamic _) → void;
   abstract set property2(dynamic _) → void;
   abstract set property3(dynamic _) → void;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class B extends self::A {
   final field dynamic property1 = null;
@@ -222,6 +262,16 @@
     : super core::Object::•()
     ;
   method interfaceMethod1(dynamic _) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class D extends self::C implements self::Interface2 {
   synthetic constructor •() → self::D*
@@ -233,6 +283,16 @@
     : super core::Object::•()
     ;
   set interfaceMethod1(dynamic _) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class F extends self::E implements self::Interface1 {
   synthetic constructor •() → self::F*
@@ -244,6 +304,16 @@
     : super core::Object::•()
     ;
   method foo() → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class G extends core::Object {
   synthetic constructor •() → self::G*
@@ -251,6 +321,16 @@
     ;
   get foo() → core::Object*
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class H extends self::G implements self::Foo {
   synthetic constructor •() → self::H*
@@ -263,12 +343,32 @@
     ;
   get foo() → core::Object*
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class I extends core::Object {
   synthetic constructor •() → self::I*
     : super core::Object::•()
     ;
   method foo() → core::Object* {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class J extends self::I implements self::Bar {
   synthetic constructor •() → self::J*
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/abstract_members.dart.weak.expect b/pkg/front_end/testcases/general_nnbd_opt_out/abstract_members.dart.weak.expect
index b43d627..42326ef 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/abstract_members.dart.weak.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/abstract_members.dart.weak.expect
@@ -140,6 +140,16 @@
     : super core::Object::•()
     ;
   method interfaceMethod1() → void {}
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Interface2 extends core::Object {
   field dynamic interfaceMethod1 = null;
@@ -147,12 +157,32 @@
     : super core::Object::•()
     ;
   method interfaceMethod2() → void {}
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Interface3 extends core::Object {
   synthetic constructor •() → self::Interface3*
     : super core::Object::•()
     ;
   method interfaceMethod3() → void {}
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class A extends core::Object implements self::Interface1, self::Interface2, self::Interface3 {
   synthetic constructor •() → self::A*
@@ -163,6 +193,16 @@
   abstract set property1(dynamic _) → void;
   abstract set property2(dynamic _) → void;
   abstract set property3(dynamic _) → void;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class B extends self::A {
   final field dynamic property1 = null;
@@ -222,6 +262,16 @@
     : super core::Object::•()
     ;
   method interfaceMethod1(dynamic _) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class D extends self::C implements self::Interface2 {
   synthetic constructor •() → self::D*
@@ -233,6 +283,16 @@
     : super core::Object::•()
     ;
   set interfaceMethod1(dynamic _) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class F extends self::E implements self::Interface1 {
   synthetic constructor •() → self::F*
@@ -244,6 +304,16 @@
     : super core::Object::•()
     ;
   method foo() → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class G extends core::Object {
   synthetic constructor •() → self::G*
@@ -251,6 +321,16 @@
     ;
   get foo() → core::Object*
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class H extends self::G implements self::Foo {
   synthetic constructor •() → self::H*
@@ -263,12 +343,32 @@
     ;
   get foo() → core::Object*
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class I extends core::Object {
   synthetic constructor •() → self::I*
     : super core::Object::•()
     ;
   method foo() → core::Object* {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class J extends self::I implements self::Bar {
   synthetic constructor •() → self::J*
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/abstract_overrides_concrete_with_no_such_method.dart.outline.expect b/pkg/front_end/testcases/general_nnbd_opt_out/abstract_overrides_concrete_with_no_such_method.dart.outline.expect
index f027a20..3e41108 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/abstract_overrides_concrete_with_no_such_method.dart.outline.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/abstract_overrides_concrete_with_no_such_method.dart.outline.expect
@@ -7,6 +7,16 @@
     ;
   method foo() → self::A*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class B extends self::A {
   synthetic constructor •() → self::B*
@@ -18,6 +28,15 @@
     ;
   method noSuchMethod(core::Invocation* _) → dynamic
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D extends self::C implements self::B {
   synthetic constructor •() → self::D*
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/abstract_overrides_concrete_with_no_such_method.dart.strong.expect b/pkg/front_end/testcases/general_nnbd_opt_out/abstract_overrides_concrete_with_no_such_method.dart.strong.expect
index df623b2..9556be5 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/abstract_overrides_concrete_with_no_such_method.dart.strong.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/abstract_overrides_concrete_with_no_such_method.dart.strong.expect
@@ -8,6 +8,16 @@
     ;
   method foo() → self::A*
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class B extends self::A {
   synthetic constructor •() → self::B*
@@ -21,6 +31,15 @@
     ;
   method noSuchMethod(core::Invocation* _) → dynamic
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D extends self::C implements self::B {
   synthetic constructor •() → self::D*
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/abstract_overrides_concrete_with_no_such_method.dart.strong.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/abstract_overrides_concrete_with_no_such_method.dart.strong.transformed.expect
index df623b2..9556be5 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/abstract_overrides_concrete_with_no_such_method.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/abstract_overrides_concrete_with_no_such_method.dart.strong.transformed.expect
@@ -8,6 +8,16 @@
     ;
   method foo() → self::A*
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class B extends self::A {
   synthetic constructor •() → self::B*
@@ -21,6 +31,15 @@
     ;
   method noSuchMethod(core::Invocation* _) → dynamic
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D extends self::C implements self::B {
   synthetic constructor •() → self::D*
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/abstract_overrides_concrete_with_no_such_method.dart.weak.expect b/pkg/front_end/testcases/general_nnbd_opt_out/abstract_overrides_concrete_with_no_such_method.dart.weak.expect
index df623b2..9556be5 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/abstract_overrides_concrete_with_no_such_method.dart.weak.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/abstract_overrides_concrete_with_no_such_method.dart.weak.expect
@@ -8,6 +8,16 @@
     ;
   method foo() → self::A*
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class B extends self::A {
   synthetic constructor •() → self::B*
@@ -21,6 +31,15 @@
     ;
   method noSuchMethod(core::Invocation* _) → dynamic
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D extends self::C implements self::B {
   synthetic constructor •() → self::D*
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/abstract_overrides_concrete_with_no_such_method.dart.weak.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/abstract_overrides_concrete_with_no_such_method.dart.weak.transformed.expect
index df623b2..9556be5 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/abstract_overrides_concrete_with_no_such_method.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/abstract_overrides_concrete_with_no_such_method.dart.weak.transformed.expect
@@ -8,6 +8,16 @@
     ;
   method foo() → self::A*
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class B extends self::A {
   synthetic constructor •() → self::B*
@@ -21,6 +31,15 @@
     ;
   method noSuchMethod(core::Invocation* _) → dynamic
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D extends self::C implements self::B {
   synthetic constructor •() → self::D*
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/accessors.dart.outline.expect b/pkg/front_end/testcases/general_nnbd_opt_out/accessors.dart.outline.expect
index f5283f3..5216778 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/accessors.dart.outline.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/accessors.dart.outline.expect
@@ -11,6 +11,16 @@
     ;
   method testD() → dynamic
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D extends self::C {
   synthetic constructor •() → self::D*
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/accessors.dart.strong.expect b/pkg/front_end/testcases/general_nnbd_opt_out/accessors.dart.strong.expect
index 4f9ff84..073c934 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/accessors.dart.strong.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/accessors.dart.strong.expect
@@ -50,6 +50,16 @@
           ^^^^^^^^^^");
     this.{self::C::onlySetter} = "hest";
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D extends self::C {
   synthetic constructor •() → self::D*
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/accessors.dart.strong.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/accessors.dart.strong.transformed.expect
index 4f9ff84..073c934 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/accessors.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/accessors.dart.strong.transformed.expect
@@ -50,6 +50,16 @@
           ^^^^^^^^^^");
     this.{self::C::onlySetter} = "hest";
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D extends self::C {
   synthetic constructor •() → self::D*
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/accessors.dart.weak.expect b/pkg/front_end/testcases/general_nnbd_opt_out/accessors.dart.weak.expect
index 4f9ff84..073c934 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/accessors.dart.weak.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/accessors.dart.weak.expect
@@ -50,6 +50,16 @@
           ^^^^^^^^^^");
     this.{self::C::onlySetter} = "hest";
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D extends self::C {
   synthetic constructor •() → self::D*
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/accessors.dart.weak.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/accessors.dart.weak.transformed.expect
index 4f9ff84..073c934 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/accessors.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/accessors.dart.weak.transformed.expect
@@ -50,6 +50,16 @@
           ^^^^^^^^^^");
     this.{self::C::onlySetter} = "hest";
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D extends self::C {
   synthetic constructor •() → self::D*
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/annotation_on_enum_values.dart.outline.expect b/pkg/front_end/testcases/general_nnbd_opt_out/annotation_on_enum_values.dart.outline.expect
index 3a9691a..c71bb7a 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/annotation_on_enum_values.dart.outline.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/annotation_on_enum_values.dart.outline.expect
@@ -7,6 +7,16 @@
   const constructor fisk(self::Fisk::T* x) → self::Fisk<self::Fisk::T*>*
     : self::Fisk::x = x, super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Foo extends core::Object /*isEnum*/  {
   final field core::int* index;
@@ -22,6 +32,15 @@
     ;
   method toString() → core::String*
     return this.{=self::Foo::_name};
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static const field core::int* hest = 42;
 static method main() → dynamic
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/annotation_on_enum_values.dart.strong.expect b/pkg/front_end/testcases/general_nnbd_opt_out/annotation_on_enum_values.dart.strong.expect
index ad232a9..f51aa86 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/annotation_on_enum_values.dart.strong.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/annotation_on_enum_values.dart.strong.expect
@@ -7,6 +7,16 @@
   const constructor fisk(self::Fisk::T* x) → self::Fisk<self::Fisk::T*>*
     : self::Fisk::x = x, super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Foo extends core::Object /*isEnum*/  {
   final field core::int* index;
@@ -22,6 +32,15 @@
     ;
   method toString() → core::String*
     return this.{=self::Foo::_name};
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static const field core::int* hest = #C11;
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/annotation_on_enum_values.dart.strong.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/annotation_on_enum_values.dart.strong.transformed.expect
index ad232a9..f51aa86 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/annotation_on_enum_values.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/annotation_on_enum_values.dart.strong.transformed.expect
@@ -7,6 +7,16 @@
   const constructor fisk(self::Fisk::T* x) → self::Fisk<self::Fisk::T*>*
     : self::Fisk::x = x, super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Foo extends core::Object /*isEnum*/  {
   final field core::int* index;
@@ -22,6 +32,15 @@
     ;
   method toString() → core::String*
     return this.{=self::Foo::_name};
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static const field core::int* hest = #C11;
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/annotation_on_enum_values.dart.weak.expect b/pkg/front_end/testcases/general_nnbd_opt_out/annotation_on_enum_values.dart.weak.expect
index ad232a9..f51aa86 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/annotation_on_enum_values.dart.weak.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/annotation_on_enum_values.dart.weak.expect
@@ -7,6 +7,16 @@
   const constructor fisk(self::Fisk::T* x) → self::Fisk<self::Fisk::T*>*
     : self::Fisk::x = x, super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Foo extends core::Object /*isEnum*/  {
   final field core::int* index;
@@ -22,6 +32,15 @@
     ;
   method toString() → core::String*
     return this.{=self::Foo::_name};
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static const field core::int* hest = #C11;
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/annotation_on_enum_values.dart.weak.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/annotation_on_enum_values.dart.weak.transformed.expect
index ad232a9..f51aa86 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/annotation_on_enum_values.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/annotation_on_enum_values.dart.weak.transformed.expect
@@ -7,6 +7,16 @@
   const constructor fisk(self::Fisk::T* x) → self::Fisk<self::Fisk::T*>*
     : self::Fisk::x = x, super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Foo extends core::Object /*isEnum*/  {
   final field core::int* index;
@@ -22,6 +32,15 @@
     ;
   method toString() → core::String*
     return this.{=self::Foo::_name};
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static const field core::int* hest = #C11;
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/annotation_top.dart.outline.expect b/pkg/front_end/testcases/general_nnbd_opt_out/annotation_top.dart.outline.expect
index 62a6a88..bb4145a 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/annotation_top.dart.outline.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/annotation_top.dart.outline.expect
@@ -10,12 +10,32 @@
   const constructor •(core::int* value) → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 @self::a
 @self::A::•(2)
 class C extends core::Object {
   synthetic constructor •() → self::C*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static const field core::Object* a = const core::Object::•();
 @self::a
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/annotation_top.dart.strong.expect b/pkg/front_end/testcases/general_nnbd_opt_out/annotation_top.dart.strong.expect
index 29c9cb7..be64079 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/annotation_top.dart.strong.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/annotation_top.dart.strong.expect
@@ -14,6 +14,16 @@
   const constructor •(core::int* value) → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 @#C1
 @#C2
@@ -21,6 +31,16 @@
   synthetic constructor •() → self::C*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static const field core::Object* a = #C1;
 @#C1
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/annotation_top.dart.strong.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/annotation_top.dart.strong.transformed.expect
index 29c9cb7..be64079 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/annotation_top.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/annotation_top.dart.strong.transformed.expect
@@ -14,6 +14,16 @@
   const constructor •(core::int* value) → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 @#C1
 @#C2
@@ -21,6 +31,16 @@
   synthetic constructor •() → self::C*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static const field core::Object* a = #C1;
 @#C1
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/annotation_top.dart.weak.expect b/pkg/front_end/testcases/general_nnbd_opt_out/annotation_top.dart.weak.expect
index 29c9cb7..be64079 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/annotation_top.dart.weak.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/annotation_top.dart.weak.expect
@@ -14,6 +14,16 @@
   const constructor •(core::int* value) → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 @#C1
 @#C2
@@ -21,6 +31,16 @@
   synthetic constructor •() → self::C*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static const field core::Object* a = #C1;
 @#C1
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/annotation_top.dart.weak.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/annotation_top.dart.weak.transformed.expect
index 29c9cb7..be64079 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/annotation_top.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/annotation_top.dart.weak.transformed.expect
@@ -14,6 +14,16 @@
   const constructor •(core::int* value) → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 @#C1
 @#C2
@@ -21,6 +31,16 @@
   synthetic constructor •() → self::C*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static const field core::Object* a = #C1;
 @#C1
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/annotation_variable_declaration.dart.outline.expect b/pkg/front_end/testcases/general_nnbd_opt_out/annotation_variable_declaration.dart.outline.expect
index 86cd7ac..9a54fb8 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/annotation_variable_declaration.dart.outline.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/annotation_variable_declaration.dart.outline.expect
@@ -10,6 +10,16 @@
   const constructor named(dynamic x) → self::Bar*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Baz extends core::Object {
   constructor •(dynamic constructorFormal) → self::Baz*
@@ -20,6 +30,16 @@
     ;
   method hest({dynamic named}) → dynamic
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static const field core::int* foo = 42;
 static method main() → dynamic
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/annotation_variable_declaration.dart.strong.expect b/pkg/front_end/testcases/general_nnbd_opt_out/annotation_variable_declaration.dart.strong.expect
index 7a689b8..b2dcd1b 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/annotation_variable_declaration.dart.strong.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/annotation_variable_declaration.dart.strong.expect
@@ -10,6 +10,16 @@
   const constructor named(dynamic x) → self::Bar*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Baz extends core::Object {
   constructor •(@#C1 dynamic constructorFormal) → self::Baz*
@@ -31,6 +41,16 @@
   }
   method hest({@#C1 dynamic named = #C3}) → dynamic
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static const field core::int* foo = #C1;
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/annotation_variable_declaration.dart.strong.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/annotation_variable_declaration.dart.strong.transformed.expect
index 7a689b8..b2dcd1b 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/annotation_variable_declaration.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/annotation_variable_declaration.dart.strong.transformed.expect
@@ -10,6 +10,16 @@
   const constructor named(dynamic x) → self::Bar*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Baz extends core::Object {
   constructor •(@#C1 dynamic constructorFormal) → self::Baz*
@@ -31,6 +41,16 @@
   }
   method hest({@#C1 dynamic named = #C3}) → dynamic
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static const field core::int* foo = #C1;
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/annotation_variable_declaration.dart.weak.expect b/pkg/front_end/testcases/general_nnbd_opt_out/annotation_variable_declaration.dart.weak.expect
index 7a689b8..b2dcd1b 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/annotation_variable_declaration.dart.weak.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/annotation_variable_declaration.dart.weak.expect
@@ -10,6 +10,16 @@
   const constructor named(dynamic x) → self::Bar*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Baz extends core::Object {
   constructor •(@#C1 dynamic constructorFormal) → self::Baz*
@@ -31,6 +41,16 @@
   }
   method hest({@#C1 dynamic named = #C3}) → dynamic
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static const field core::int* foo = #C1;
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/annotation_variable_declaration.dart.weak.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/annotation_variable_declaration.dart.weak.transformed.expect
index 7a689b8..b2dcd1b 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/annotation_variable_declaration.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/annotation_variable_declaration.dart.weak.transformed.expect
@@ -10,6 +10,16 @@
   const constructor named(dynamic x) → self::Bar*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Baz extends core::Object {
   constructor •(@#C1 dynamic constructorFormal) → self::Baz*
@@ -31,6 +41,16 @@
   }
   method hest({@#C1 dynamic named = #C3}) → dynamic
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static const field core::int* foo = #C1;
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/argument.dart.outline.expect b/pkg/front_end/testcases/general_nnbd_opt_out/argument.dart.outline.expect
index bf52159..0c9b4a0 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/argument.dart.outline.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/argument.dart.outline.expect
@@ -5,6 +5,16 @@
 abstract class Base extends core::Object {
   synthetic constructor •() → self::Base*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Foo extends self::Base {
   synthetic constructor •() → self::Foo*
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/argument.dart.strong.expect b/pkg/front_end/testcases/general_nnbd_opt_out/argument.dart.strong.expect
index dc04225a..e1c5f67 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/argument.dart.strong.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/argument.dart.strong.expect
@@ -6,6 +6,16 @@
   synthetic constructor •() → self::Base*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Foo extends self::Base {
   synthetic constructor •() → self::Foo*
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/argument.dart.strong.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/argument.dart.strong.transformed.expect
index dc04225a..e1c5f67 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/argument.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/argument.dart.strong.transformed.expect
@@ -6,6 +6,16 @@
   synthetic constructor •() → self::Base*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Foo extends self::Base {
   synthetic constructor •() → self::Foo*
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/argument.dart.weak.expect b/pkg/front_end/testcases/general_nnbd_opt_out/argument.dart.weak.expect
index dc04225a..e1c5f67 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/argument.dart.weak.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/argument.dart.weak.expect
@@ -6,6 +6,16 @@
   synthetic constructor •() → self::Base*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Foo extends self::Base {
   synthetic constructor •() → self::Foo*
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/argument.dart.weak.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/argument.dart.weak.transformed.expect
index dc04225a..e1c5f67 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/argument.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/argument.dart.weak.transformed.expect
@@ -6,6 +6,16 @@
   synthetic constructor •() → self::Base*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Foo extends self::Base {
   synthetic constructor •() → self::Foo*
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/assign_to_initializing_formal.dart.outline.expect b/pkg/front_end/testcases/general_nnbd_opt_out/assign_to_initializing_formal.dart.outline.expect
index 5834746..0c51a8a 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/assign_to_initializing_formal.dart.outline.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/assign_to_initializing_formal.dart.outline.expect
@@ -9,6 +9,16 @@
   field dynamic y;
   constructor •(dynamic x) → self::A*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/assign_to_initializing_formal.dart.strong.expect b/pkg/front_end/testcases/general_nnbd_opt_out/assign_to_initializing_formal.dart.strong.expect
index 9f6e9be..4cc0285 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/assign_to_initializing_formal.dart.strong.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/assign_to_initializing_formal.dart.strong.expect
@@ -21,5 +21,15 @@
           ^";
     }, super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/assign_to_initializing_formal.dart.strong.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/assign_to_initializing_formal.dart.strong.transformed.expect
index 9f6e9be..4cc0285 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/assign_to_initializing_formal.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/assign_to_initializing_formal.dart.strong.transformed.expect
@@ -21,5 +21,15 @@
           ^";
     }, super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/assign_to_initializing_formal.dart.weak.expect b/pkg/front_end/testcases/general_nnbd_opt_out/assign_to_initializing_formal.dart.weak.expect
index 9f6e9be..4cc0285 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/assign_to_initializing_formal.dart.weak.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/assign_to_initializing_formal.dart.weak.expect
@@ -21,5 +21,15 @@
           ^";
     }, super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/assign_to_initializing_formal.dart.weak.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/assign_to_initializing_formal.dart.weak.transformed.expect
index 9f6e9be..4cc0285 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/assign_to_initializing_formal.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/assign_to_initializing_formal.dart.weak.transformed.expect
@@ -21,5 +21,15 @@
           ^";
     }, super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/async_function.dart.strong.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/async_function.dart.strong.transformed.expect
index c86613d..c8cb04c 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/async_function.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/async_function.dart.strong.transformed.expect
@@ -25,8 +25,8 @@
       asy::_completeOnAsyncReturn(:async_completer, :return_value);
       return;
     }
-    on dynamic catch(dynamic :exception, core::StackTrace* :stack_trace) {
-      :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+    on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
+      :async_completer.{asy::Completer::completeError}(exception, stack_trace);
     }
   :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
@@ -52,8 +52,8 @@
       asy::_completeOnAsyncReturn(:async_completer, :return_value);
       return;
     }
-    on dynamic catch(dynamic :exception, core::StackTrace* :stack_trace) {
-      :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+    on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
+      :async_completer.{asy::Completer::completeError}(exception, stack_trace);
     }
   :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
@@ -62,40 +62,44 @@
   return :async_completer.{asy::Completer::future};
 }
 static method syncStarString() → core::Iterable<core::String*>* /* originally sync* */ {
-  core::int* :await_jump_var = 0;
-  dynamic :await_ctx_var;
-  function :sync_op(core::_SyncIterator<core::String*>* :iterator) → core::bool* yielding {
-    {
+  function :sync_op_gen() → (core::_SyncIterator<core::String*>*) →* core::bool* {
+    core::int* :await_jump_var = 0;
+    dynamic :await_ctx_var;
+    return (core::_SyncIterator<core::String*>* :iterator) → core::bool* yielding {
       {
-        :iterator.{core::_SyncIterator::_current} = "foo";
-        [yield] true;
+        {
+          :iterator.{core::_SyncIterator::_current} = "foo";
+          [yield] true;
+        }
+        {
+          :iterator.{core::_SyncIterator::_yieldEachIterable} = self::syncStarString2();
+          [yield] true;
+        }
+        {
+          :iterator.{core::_SyncIterator::_yieldEachIterable} = self::stringList;
+          [yield] true;
+        }
       }
-      {
-        :iterator.{core::_SyncIterator::_yieldEachIterable} = self::syncStarString2();
-        [yield] true;
-      }
-      {
-        :iterator.{core::_SyncIterator::_yieldEachIterable} = self::stringList;
-        [yield] true;
-      }
-    }
-    return false;
+      return false;
+    };
   }
-  return new core::_SyncIterable::•<core::String*>(:sync_op);
+  return new core::_SyncIterable::•<core::String*>(:sync_op_gen);
 }
 static method syncStarString2() → core::Iterable<core::String*>* /* originally sync* */ {
-  core::int* :await_jump_var = 0;
-  dynamic :await_ctx_var;
-  function :sync_op(core::_SyncIterator<core::String*>* :iterator) → core::bool* yielding {
-    {
+  function :sync_op_gen() → (core::_SyncIterator<core::String*>*) →* core::bool* {
+    core::int* :await_jump_var = 0;
+    dynamic :await_ctx_var;
+    return (core::_SyncIterator<core::String*>* :iterator) → core::bool* yielding {
       {
-        :iterator.{core::_SyncIterator::_current} = "foo";
-        [yield] true;
+        {
+          :iterator.{core::_SyncIterator::_current} = "foo";
+          [yield] true;
+        }
       }
-    }
-    return false;
+      return false;
+    };
   }
-  return new core::_SyncIterable::•<core::String*>(:sync_op);
+  return new core::_SyncIterable::•<core::String*>(:sync_op_gen);
 }
 static method asyncStarString() → asy::Stream<core::String*>* /* originally async* */ {
   asy::_AsyncStarStreamController<core::String*>* :controller;
@@ -128,8 +132,8 @@
         }
         return;
       }
-      on dynamic catch(dynamic :exception, core::StackTrace* :stack_trace) {
-        :controller.{asy::_AsyncStarStreamController::addError}(:exception, :stack_trace);
+      on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
+        :controller.{asy::_AsyncStarStreamController::addError}(exception, stack_trace);
       }
     finally {
       :controller.{asy::_AsyncStarStreamController::close}();
@@ -163,8 +167,8 @@
         }
         return;
       }
-      on dynamic catch(dynamic :exception, core::StackTrace* :stack_trace) {
-        :controller.{asy::_AsyncStarStreamController::addError}(:exception, :stack_trace);
+      on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
+        :controller.{asy::_AsyncStarStreamController::addError}(exception, stack_trace);
       }
     finally {
       :controller.{asy::_AsyncStarStreamController::close}();
@@ -195,8 +199,8 @@
       asy::_completeOnAsyncReturn(:async_completer, :return_value);
       return;
     }
-    on dynamic catch(dynamic :exception, core::StackTrace* :stack_trace) {
-      :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+    on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
+      :async_completer.{asy::Completer::completeError}(exception, stack_trace);
     }
   :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/async_function.dart.weak.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/async_function.dart.weak.transformed.expect
index c86613d..c8cb04c 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/async_function.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/async_function.dart.weak.transformed.expect
@@ -25,8 +25,8 @@
       asy::_completeOnAsyncReturn(:async_completer, :return_value);
       return;
     }
-    on dynamic catch(dynamic :exception, core::StackTrace* :stack_trace) {
-      :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+    on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
+      :async_completer.{asy::Completer::completeError}(exception, stack_trace);
     }
   :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
@@ -52,8 +52,8 @@
       asy::_completeOnAsyncReturn(:async_completer, :return_value);
       return;
     }
-    on dynamic catch(dynamic :exception, core::StackTrace* :stack_trace) {
-      :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+    on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
+      :async_completer.{asy::Completer::completeError}(exception, stack_trace);
     }
   :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
@@ -62,40 +62,44 @@
   return :async_completer.{asy::Completer::future};
 }
 static method syncStarString() → core::Iterable<core::String*>* /* originally sync* */ {
-  core::int* :await_jump_var = 0;
-  dynamic :await_ctx_var;
-  function :sync_op(core::_SyncIterator<core::String*>* :iterator) → core::bool* yielding {
-    {
+  function :sync_op_gen() → (core::_SyncIterator<core::String*>*) →* core::bool* {
+    core::int* :await_jump_var = 0;
+    dynamic :await_ctx_var;
+    return (core::_SyncIterator<core::String*>* :iterator) → core::bool* yielding {
       {
-        :iterator.{core::_SyncIterator::_current} = "foo";
-        [yield] true;
+        {
+          :iterator.{core::_SyncIterator::_current} = "foo";
+          [yield] true;
+        }
+        {
+          :iterator.{core::_SyncIterator::_yieldEachIterable} = self::syncStarString2();
+          [yield] true;
+        }
+        {
+          :iterator.{core::_SyncIterator::_yieldEachIterable} = self::stringList;
+          [yield] true;
+        }
       }
-      {
-        :iterator.{core::_SyncIterator::_yieldEachIterable} = self::syncStarString2();
-        [yield] true;
-      }
-      {
-        :iterator.{core::_SyncIterator::_yieldEachIterable} = self::stringList;
-        [yield] true;
-      }
-    }
-    return false;
+      return false;
+    };
   }
-  return new core::_SyncIterable::•<core::String*>(:sync_op);
+  return new core::_SyncIterable::•<core::String*>(:sync_op_gen);
 }
 static method syncStarString2() → core::Iterable<core::String*>* /* originally sync* */ {
-  core::int* :await_jump_var = 0;
-  dynamic :await_ctx_var;
-  function :sync_op(core::_SyncIterator<core::String*>* :iterator) → core::bool* yielding {
-    {
+  function :sync_op_gen() → (core::_SyncIterator<core::String*>*) →* core::bool* {
+    core::int* :await_jump_var = 0;
+    dynamic :await_ctx_var;
+    return (core::_SyncIterator<core::String*>* :iterator) → core::bool* yielding {
       {
-        :iterator.{core::_SyncIterator::_current} = "foo";
-        [yield] true;
+        {
+          :iterator.{core::_SyncIterator::_current} = "foo";
+          [yield] true;
+        }
       }
-    }
-    return false;
+      return false;
+    };
   }
-  return new core::_SyncIterable::•<core::String*>(:sync_op);
+  return new core::_SyncIterable::•<core::String*>(:sync_op_gen);
 }
 static method asyncStarString() → asy::Stream<core::String*>* /* originally async* */ {
   asy::_AsyncStarStreamController<core::String*>* :controller;
@@ -128,8 +132,8 @@
         }
         return;
       }
-      on dynamic catch(dynamic :exception, core::StackTrace* :stack_trace) {
-        :controller.{asy::_AsyncStarStreamController::addError}(:exception, :stack_trace);
+      on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
+        :controller.{asy::_AsyncStarStreamController::addError}(exception, stack_trace);
       }
     finally {
       :controller.{asy::_AsyncStarStreamController::close}();
@@ -163,8 +167,8 @@
         }
         return;
       }
-      on dynamic catch(dynamic :exception, core::StackTrace* :stack_trace) {
-        :controller.{asy::_AsyncStarStreamController::addError}(:exception, :stack_trace);
+      on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
+        :controller.{asy::_AsyncStarStreamController::addError}(exception, stack_trace);
       }
     finally {
       :controller.{asy::_AsyncStarStreamController::close}();
@@ -195,8 +199,8 @@
       asy::_completeOnAsyncReturn(:async_completer, :return_value);
       return;
     }
-    on dynamic catch(dynamic :exception, core::StackTrace* :stack_trace) {
-      :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+    on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
+      :async_completer.{asy::Completer::completeError}(exception, stack_trace);
     }
   :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/async_nested.dart.outline.expect b/pkg/front_end/testcases/general_nnbd_opt_out/async_nested.dart.outline.expect
index 0f6f92e..7d1bc82 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/async_nested.dart.outline.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/async_nested.dart.outline.expect
@@ -13,6 +13,15 @@
     ;
   method toSimpleString() → dynamic
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → void
   ;
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/async_nested.dart.strong.expect b/pkg/front_end/testcases/general_nnbd_opt_out/async_nested.dart.strong.expect
index 6916565..24bc63a 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/async_nested.dart.strong.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/async_nested.dart.strong.expect
@@ -16,6 +16,15 @@
     core::Iterable<dynamic>* tmp = let final core::List<self::Node*>* #t2 = this.{self::Node::nested} in #t2.{core::List::==}(null) ?{core::Iterable<dynamic>*} null : #t2.{core::Iterable::map}<dynamic>((self::Node* child) → dynamic => child.{self::Node::toSimpleString}());
     return "${this.{self::Node::name}} ${let final core::Iterable<dynamic>* #t3 = tmp in #t3.{core::Object::==}(null) ?{core::String*} null : #t3.{core::Iterable::join}(" ")}".{core::String::trim}();
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → void async {
   core::String* expected = "1 2 3 4 5 6 7 8 9 10";
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/async_nested.dart.strong.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/async_nested.dart.strong.transformed.expect
index bdf5176..ee2359b 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/async_nested.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/async_nested.dart.strong.transformed.expect
@@ -17,6 +17,15 @@
     core::Iterable<dynamic>* tmp = let final core::List<self::Node*>* #t2 = this.{self::Node::nested} in #t2.{core::List::==}(null) ?{core::Iterable<dynamic>*} null : #t2.{core::Iterable::map}<dynamic>((self::Node* child) → dynamic => child.{self::Node::toSimpleString}());
     return "${this.{self::Node::name}} ${let final core::Iterable<dynamic>* #t3 = tmp in #t3.{core::Object::==}(null) ?{core::String*} null : #t3.{core::Iterable::join}(" ")}".{core::String::trim}();
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → void /* originally async */ {
   final asy::_AsyncAwaitCompleter<dynamic>* :async_completer = new asy::_AsyncAwaitCompleter::•<dynamic>();
@@ -56,8 +65,8 @@
       asy::_completeOnAsyncReturn(:async_completer, :return_value);
       return;
     }
-    on dynamic catch(dynamic :exception, core::StackTrace* :stack_trace) {
-      :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+    on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
+      :async_completer.{asy::Completer::completeError}(exception, stack_trace);
     }
   :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/async_nested.dart.weak.expect b/pkg/front_end/testcases/general_nnbd_opt_out/async_nested.dart.weak.expect
index 6916565..24bc63a 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/async_nested.dart.weak.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/async_nested.dart.weak.expect
@@ -16,6 +16,15 @@
     core::Iterable<dynamic>* tmp = let final core::List<self::Node*>* #t2 = this.{self::Node::nested} in #t2.{core::List::==}(null) ?{core::Iterable<dynamic>*} null : #t2.{core::Iterable::map}<dynamic>((self::Node* child) → dynamic => child.{self::Node::toSimpleString}());
     return "${this.{self::Node::name}} ${let final core::Iterable<dynamic>* #t3 = tmp in #t3.{core::Object::==}(null) ?{core::String*} null : #t3.{core::Iterable::join}(" ")}".{core::String::trim}();
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → void async {
   core::String* expected = "1 2 3 4 5 6 7 8 9 10";
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/async_nested.dart.weak.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/async_nested.dart.weak.transformed.expect
index bdf5176..ee2359b 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/async_nested.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/async_nested.dart.weak.transformed.expect
@@ -17,6 +17,15 @@
     core::Iterable<dynamic>* tmp = let final core::List<self::Node*>* #t2 = this.{self::Node::nested} in #t2.{core::List::==}(null) ?{core::Iterable<dynamic>*} null : #t2.{core::Iterable::map}<dynamic>((self::Node* child) → dynamic => child.{self::Node::toSimpleString}());
     return "${this.{self::Node::name}} ${let final core::Iterable<dynamic>* #t3 = tmp in #t3.{core::Object::==}(null) ?{core::String*} null : #t3.{core::Iterable::join}(" ")}".{core::String::trim}();
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → void /* originally async */ {
   final asy::_AsyncAwaitCompleter<dynamic>* :async_completer = new asy::_AsyncAwaitCompleter::•<dynamic>();
@@ -56,8 +65,8 @@
       asy::_completeOnAsyncReturn(:async_completer, :return_value);
       return;
     }
-    on dynamic catch(dynamic :exception, core::StackTrace* :stack_trace) {
-      :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+    on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
+      :async_completer.{asy::Completer::completeError}(exception, stack_trace);
     }
   :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/await.dart.strong.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/await.dart.strong.transformed.expect
index 8c66908..e8481b7 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/await.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/await.dart.strong.transformed.expect
@@ -23,8 +23,8 @@
       asy::_completeOnAsyncReturn(:async_completer, :return_value);
       return;
     }
-    on dynamic catch(dynamic :exception, core::StackTrace* :stack_trace) {
-      :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+    on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
+      :async_completer.{asy::Completer::completeError}(exception, stack_trace);
     }
   :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/await.dart.weak.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/await.dart.weak.transformed.expect
index 8c66908..e8481b7 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/await.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/await.dart.weak.transformed.expect
@@ -23,8 +23,8 @@
       asy::_completeOnAsyncReturn(:async_completer, :return_value);
       return;
     }
-    on dynamic catch(dynamic :exception, core::StackTrace* :stack_trace) {
-      :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+    on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
+      :async_completer.{asy::Completer::completeError}(exception, stack_trace);
     }
   :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/await_complex.dart.outline.expect b/pkg/front_end/testcases/general_nnbd_opt_out/await_complex.dart.outline.expect
index 7d5cecc..b470953 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/await_complex.dart.outline.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/await_complex.dart.outline.expect
@@ -22,6 +22,16 @@
     ;
   method foo(core::int* param) → core::int*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field core::int* globalVariable;
 static final field core::bool* assertStatementsEnabled;
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/await_complex.dart.strong.expect b/pkg/front_end/testcases/general_nnbd_opt_out/await_complex.dart.strong.expect
index a0b6fdd..4d830b1 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/await_complex.dart.strong.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/await_complex.dart.strong.expect
@@ -25,6 +25,16 @@
   }
   method foo(core::int* param) → core::int*
     return param;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field core::int* globalVariable = 1;
 static final field core::bool* assertStatementsEnabled = (() → core::bool* {
@@ -46,54 +56,54 @@
 static method dummy() → dynamic
   return 1;
 static method staticMembers() → dynamic async {
-  core::num* a = self::C::staticField.{core::num::+}(await self::dummy() as{TypeError,ForDynamic} core::num*);
+  core::num* a = self::C::staticField.{core::num::+}(await self::dummy() as{TypeError,ForDynamic} core::num);
   self::expect(2, a);
-  core::num* f = (self::C::staticField = 1).{core::num::+}(await self::dummy() as{TypeError,ForDynamic} core::num*);
+  core::num* f = (self::C::staticField = 1).{core::num::+}(await self::dummy() as{TypeError,ForDynamic} core::num);
   self::expect(2, f);
-  core::num* b = self::C::staticGetter.{core::num::+}(await self::dummy() as{TypeError,ForDynamic} core::num*);
+  core::num* b = self::C::staticGetter.{core::num::+}(await self::dummy() as{TypeError,ForDynamic} core::num);
   self::expect(2, b);
-  core::num* c = (self::C::staticSetter = 1).{core::num::+}(await self::dummy() as{TypeError,ForDynamic} core::num*);
+  core::num* c = (self::C::staticSetter = 1).{core::num::+}(await self::dummy() as{TypeError,ForDynamic} core::num);
   self::expect(2, c);
-  core::num* d = self::C::staticFoo(2).{core::num::+}(await self::dummy() as{TypeError,ForDynamic} core::num*);
+  core::num* d = self::C::staticFoo(2).{core::num::+}(await self::dummy() as{TypeError,ForDynamic} core::num);
   self::expect(3, d);
-  core::num* e = self::C::staticField.{core::num::+}(self::C::staticGetter).{core::num::+}(self::C::staticSetter = 1).{core::num::+}(self::C::staticFoo(1)).{core::num::+}(await self::dummy() as{TypeError,ForDynamic} core::num*);
+  core::num* e = self::C::staticField.{core::num::+}(self::C::staticGetter).{core::num::+}(self::C::staticSetter = 1).{core::num::+}(self::C::staticFoo(1)).{core::num::+}(await self::dummy() as{TypeError,ForDynamic} core::num);
   self::expect(5, e);
 }
 static method topLevelMembers() → dynamic async {
-  core::num* a = self::globalVariable.{core::num::+}(await self::dummy() as{TypeError,ForDynamic} core::num*);
+  core::num* a = self::globalVariable.{core::num::+}(await self::dummy() as{TypeError,ForDynamic} core::num);
   self::expect(2, a);
-  core::num* b = self::topLevelGetter.{core::num::+}(await self::dummy() as{TypeError,ForDynamic} core::num*);
+  core::num* b = self::topLevelGetter.{core::num::+}(await self::dummy() as{TypeError,ForDynamic} core::num);
   self::expect(2, b);
-  core::num* c = (self::topLevelSetter = 1).{core::num::+}(await self::dummy() as{TypeError,ForDynamic} core::num*);
+  core::num* c = (self::topLevelSetter = 1).{core::num::+}(await self::dummy() as{TypeError,ForDynamic} core::num);
   self::expect(2, c);
-  core::num* d = self::topLevelFoo(1).{core::num::+}(await self::dummy() as{TypeError,ForDynamic} core::num*);
+  core::num* d = self::topLevelFoo(1).{core::num::+}(await self::dummy() as{TypeError,ForDynamic} core::num);
   self::expect(2, d);
-  core::num* e = self::globalVariable.{core::num::+}(self::topLevelGetter).{core::num::+}(self::topLevelSetter = 1).{core::num::+}(self::topLevelFoo(1)).{core::num::+}(await self::dummy() as{TypeError,ForDynamic} core::num*);
+  core::num* e = self::globalVariable.{core::num::+}(self::topLevelGetter).{core::num::+}(self::topLevelSetter = 1).{core::num::+}(self::topLevelFoo(1)).{core::num::+}(await self::dummy() as{TypeError,ForDynamic} core::num);
   self::expect(5, e);
 }
 static method instanceMembers() → dynamic async {
   self::C* inst = new self::C::•();
-  core::num* a = inst.{self::C::field}.{core::num::+}(await self::dummy() as{TypeError,ForDynamic} core::num*);
+  core::num* a = inst.{self::C::field}.{core::num::+}(await self::dummy() as{TypeError,ForDynamic} core::num);
   self::expect(2, a);
-  core::num* b = inst.{self::C::getter}.{core::num::+}(await self::dummy() as{TypeError,ForDynamic} core::num*);
+  core::num* b = inst.{self::C::getter}.{core::num::+}(await self::dummy() as{TypeError,ForDynamic} core::num);
   self::expect(2, b);
-  core::num* c = (inst.{self::C::setter} = 1).{core::num::+}(await self::dummy() as{TypeError,ForDynamic} core::num*);
+  core::num* c = (inst.{self::C::setter} = 1).{core::num::+}(await self::dummy() as{TypeError,ForDynamic} core::num);
   self::expect(2, c);
-  core::num* d = inst.{self::C::foo}(1).{core::num::+}(await self::dummy() as{TypeError,ForDynamic} core::num*);
+  core::num* d = inst.{self::C::foo}(1).{core::num::+}(await self::dummy() as{TypeError,ForDynamic} core::num);
   self::expect(2, d);
-  core::num* e = inst.{self::C::field}.{core::num::+}(inst.{self::C::getter}).{core::num::+}(inst.{self::C::setter} = 1).{core::num::+}(inst.{self::C::foo}(1)).{core::num::+}(await self::dummy() as{TypeError,ForDynamic} core::num*);
+  core::num* e = inst.{self::C::field}.{core::num::+}(inst.{self::C::getter}).{core::num::+}(inst.{self::C::setter} = 1).{core::num::+}(inst.{self::C::foo}(1)).{core::num::+}(await self::dummy() as{TypeError,ForDynamic} core::num);
   self::expect(5, e);
 }
 static method others() → dynamic async {
   core::String* a = "${self::globalVariable} ${await self::dummy()} ".{core::String::+}(await "someString");
   self::expect("1 1 someString", a);
   self::C* c = new self::C::•();
-  core::num* d = c.{self::C::field}.{core::num::+}(await self::dummy() as{TypeError,ForDynamic} core::num*);
+  core::num* d = c.{self::C::field}.{core::num::+}(await self::dummy() as{TypeError,ForDynamic} core::num);
   core::int* cnt = 2;
   core::List<core::int*>* b = <core::int*>[1, 2, 3];
   b.{core::List::[]=}(cnt, await self::dummy() as{TypeError,ForDynamic} core::int*);
   self::expect(1, b.{core::List::[]}(cnt));
-  core::num* e = b.{core::List::[]}(0).{core::num::+}(await self::dummy() as{TypeError,ForDynamic} core::num*);
+  core::num* e = b.{core::List::[]}(0).{core::num::+}(await self::dummy() as{TypeError,ForDynamic} core::num);
   self::expect(2, e);
 }
 static method conditionals() → dynamic async {
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/await_complex.dart.strong.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/await_complex.dart.strong.transformed.expect
index dfafacd..72a8cdc 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/await_complex.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/await_complex.dart.strong.transformed.expect
@@ -26,6 +26,16 @@
   }
   method foo(core::int* param) → core::int*
     return param;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field core::int* globalVariable = 1;
 static final field core::bool* assertStatementsEnabled = (() → core::bool* {
@@ -67,34 +77,34 @@
       {
         :async_temporary_0 = self::C::staticField;
         [yield] let dynamic #t1 = asy::_awaitHelper(self::dummy(), :async_op_then, :async_op_error, :async_op) in null;
-        core::num* a = _in::unsafeCast<core::int*>(:async_temporary_0).{core::num::+}(:result as{TypeError,ForDynamic} core::num*);
+        core::num* a = _in::unsafeCast<core::int*>(:async_temporary_0).{core::num::+}(:result as{TypeError,ForDynamic} core::num);
         self::expect(2, a);
         :async_temporary_1 = self::C::staticField = 1;
         [yield] let dynamic #t2 = asy::_awaitHelper(self::dummy(), :async_op_then, :async_op_error, :async_op) in null;
-        core::num* f = _in::unsafeCast<core::int*>(:async_temporary_1).{core::num::+}(:result as{TypeError,ForDynamic} core::num*);
+        core::num* f = _in::unsafeCast<core::int*>(:async_temporary_1).{core::num::+}(:result as{TypeError,ForDynamic} core::num);
         self::expect(2, f);
         :async_temporary_2 = self::C::staticGetter;
         [yield] let dynamic #t3 = asy::_awaitHelper(self::dummy(), :async_op_then, :async_op_error, :async_op) in null;
-        core::num* b = _in::unsafeCast<core::int*>(:async_temporary_2).{core::num::+}(:result as{TypeError,ForDynamic} core::num*);
+        core::num* b = _in::unsafeCast<core::int*>(:async_temporary_2).{core::num::+}(:result as{TypeError,ForDynamic} core::num);
         self::expect(2, b);
         :async_temporary_3 = self::C::staticSetter = 1;
         [yield] let dynamic #t4 = asy::_awaitHelper(self::dummy(), :async_op_then, :async_op_error, :async_op) in null;
-        core::num* c = _in::unsafeCast<core::int*>(:async_temporary_3).{core::num::+}(:result as{TypeError,ForDynamic} core::num*);
+        core::num* c = _in::unsafeCast<core::int*>(:async_temporary_3).{core::num::+}(:result as{TypeError,ForDynamic} core::num);
         self::expect(2, c);
         :async_temporary_4 = self::C::staticFoo(2);
         [yield] let dynamic #t5 = asy::_awaitHelper(self::dummy(), :async_op_then, :async_op_error, :async_op) in null;
-        core::num* d = _in::unsafeCast<core::int*>(:async_temporary_4).{core::num::+}(:result as{TypeError,ForDynamic} core::num*);
+        core::num* d = _in::unsafeCast<core::int*>(:async_temporary_4).{core::num::+}(:result as{TypeError,ForDynamic} core::num);
         self::expect(3, d);
         :async_temporary_5 = self::C::staticField.{core::num::+}(self::C::staticGetter).{core::num::+}(self::C::staticSetter = 1).{core::num::+}(self::C::staticFoo(1));
         [yield] let dynamic #t6 = asy::_awaitHelper(self::dummy(), :async_op_then, :async_op_error, :async_op) in null;
-        core::num* e = _in::unsafeCast<core::int*>(:async_temporary_5).{core::num::+}(:result as{TypeError,ForDynamic} core::num*);
+        core::num* e = _in::unsafeCast<core::int*>(:async_temporary_5).{core::num::+}(:result as{TypeError,ForDynamic} core::num);
         self::expect(5, e);
       }
       asy::_completeOnAsyncReturn(:async_completer, :return_value);
       return;
     }
-    on dynamic catch(dynamic :exception, core::StackTrace* :stack_trace) {
-      :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+    on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
+      :async_completer.{asy::Completer::completeError}(exception, stack_trace);
     }
   :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
@@ -122,30 +132,30 @@
       {
         :async_temporary_0 = self::globalVariable;
         [yield] let dynamic #t7 = asy::_awaitHelper(self::dummy(), :async_op_then, :async_op_error, :async_op) in null;
-        core::num* a = _in::unsafeCast<core::int*>(:async_temporary_0).{core::num::+}(:result as{TypeError,ForDynamic} core::num*);
+        core::num* a = _in::unsafeCast<core::int*>(:async_temporary_0).{core::num::+}(:result as{TypeError,ForDynamic} core::num);
         self::expect(2, a);
         :async_temporary_1 = self::topLevelGetter;
         [yield] let dynamic #t8 = asy::_awaitHelper(self::dummy(), :async_op_then, :async_op_error, :async_op) in null;
-        core::num* b = _in::unsafeCast<core::int*>(:async_temporary_1).{core::num::+}(:result as{TypeError,ForDynamic} core::num*);
+        core::num* b = _in::unsafeCast<core::int*>(:async_temporary_1).{core::num::+}(:result as{TypeError,ForDynamic} core::num);
         self::expect(2, b);
         :async_temporary_2 = self::topLevelSetter = 1;
         [yield] let dynamic #t9 = asy::_awaitHelper(self::dummy(), :async_op_then, :async_op_error, :async_op) in null;
-        core::num* c = _in::unsafeCast<core::int*>(:async_temporary_2).{core::num::+}(:result as{TypeError,ForDynamic} core::num*);
+        core::num* c = _in::unsafeCast<core::int*>(:async_temporary_2).{core::num::+}(:result as{TypeError,ForDynamic} core::num);
         self::expect(2, c);
         :async_temporary_3 = self::topLevelFoo(1);
         [yield] let dynamic #t10 = asy::_awaitHelper(self::dummy(), :async_op_then, :async_op_error, :async_op) in null;
-        core::num* d = _in::unsafeCast<core::int*>(:async_temporary_3).{core::num::+}(:result as{TypeError,ForDynamic} core::num*);
+        core::num* d = _in::unsafeCast<core::int*>(:async_temporary_3).{core::num::+}(:result as{TypeError,ForDynamic} core::num);
         self::expect(2, d);
         :async_temporary_4 = self::globalVariable.{core::num::+}(self::topLevelGetter).{core::num::+}(self::topLevelSetter = 1).{core::num::+}(self::topLevelFoo(1));
         [yield] let dynamic #t11 = asy::_awaitHelper(self::dummy(), :async_op_then, :async_op_error, :async_op) in null;
-        core::num* e = _in::unsafeCast<core::int*>(:async_temporary_4).{core::num::+}(:result as{TypeError,ForDynamic} core::num*);
+        core::num* e = _in::unsafeCast<core::int*>(:async_temporary_4).{core::num::+}(:result as{TypeError,ForDynamic} core::num);
         self::expect(5, e);
       }
       asy::_completeOnAsyncReturn(:async_completer, :return_value);
       return;
     }
-    on dynamic catch(dynamic :exception, core::StackTrace* :stack_trace) {
-      :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+    on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
+      :async_completer.{asy::Completer::completeError}(exception, stack_trace);
     }
   :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
@@ -174,30 +184,30 @@
         self::C* inst = new self::C::•();
         :async_temporary_0 = inst.{self::C::field};
         [yield] let dynamic #t12 = asy::_awaitHelper(self::dummy(), :async_op_then, :async_op_error, :async_op) in null;
-        core::num* a = _in::unsafeCast<core::int*>(:async_temporary_0).{core::num::+}(:result as{TypeError,ForDynamic} core::num*);
+        core::num* a = _in::unsafeCast<core::int*>(:async_temporary_0).{core::num::+}(:result as{TypeError,ForDynamic} core::num);
         self::expect(2, a);
         :async_temporary_1 = inst.{self::C::getter};
         [yield] let dynamic #t13 = asy::_awaitHelper(self::dummy(), :async_op_then, :async_op_error, :async_op) in null;
-        core::num* b = _in::unsafeCast<core::int*>(:async_temporary_1).{core::num::+}(:result as{TypeError,ForDynamic} core::num*);
+        core::num* b = _in::unsafeCast<core::int*>(:async_temporary_1).{core::num::+}(:result as{TypeError,ForDynamic} core::num);
         self::expect(2, b);
         :async_temporary_2 = inst.{self::C::setter} = 1;
         [yield] let dynamic #t14 = asy::_awaitHelper(self::dummy(), :async_op_then, :async_op_error, :async_op) in null;
-        core::num* c = _in::unsafeCast<core::int*>(:async_temporary_2).{core::num::+}(:result as{TypeError,ForDynamic} core::num*);
+        core::num* c = _in::unsafeCast<core::int*>(:async_temporary_2).{core::num::+}(:result as{TypeError,ForDynamic} core::num);
         self::expect(2, c);
         :async_temporary_3 = inst.{self::C::foo}(1);
         [yield] let dynamic #t15 = asy::_awaitHelper(self::dummy(), :async_op_then, :async_op_error, :async_op) in null;
-        core::num* d = _in::unsafeCast<core::int*>(:async_temporary_3).{core::num::+}(:result as{TypeError,ForDynamic} core::num*);
+        core::num* d = _in::unsafeCast<core::int*>(:async_temporary_3).{core::num::+}(:result as{TypeError,ForDynamic} core::num);
         self::expect(2, d);
         :async_temporary_4 = inst.{self::C::field}.{core::num::+}(inst.{self::C::getter}).{core::num::+}(inst.{self::C::setter} = 1).{core::num::+}(inst.{self::C::foo}(1));
         [yield] let dynamic #t16 = asy::_awaitHelper(self::dummy(), :async_op_then, :async_op_error, :async_op) in null;
-        core::num* e = _in::unsafeCast<core::int*>(:async_temporary_4).{core::num::+}(:result as{TypeError,ForDynamic} core::num*);
+        core::num* e = _in::unsafeCast<core::int*>(:async_temporary_4).{core::num::+}(:result as{TypeError,ForDynamic} core::num);
         self::expect(5, e);
       }
       asy::_completeOnAsyncReturn(:async_completer, :return_value);
       return;
     }
-    on dynamic catch(dynamic :exception, core::StackTrace* :stack_trace) {
-      :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+    on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
+      :async_completer.{asy::Completer::completeError}(exception, stack_trace);
     }
   :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
@@ -232,7 +242,7 @@
         self::C* c = new self::C::•();
         :async_temporary_1 = c.{self::C::field};
         [yield] let dynamic #t19 = asy::_awaitHelper(self::dummy(), :async_op_then, :async_op_error, :async_op) in null;
-        core::num* d = _in::unsafeCast<core::int*>(:async_temporary_1).{core::num::+}(:result as{TypeError,ForDynamic} core::num*);
+        core::num* d = _in::unsafeCast<core::int*>(:async_temporary_1).{core::num::+}(:result as{TypeError,ForDynamic} core::num);
         core::int* cnt = 2;
         core::List<core::int*>* b = <core::int*>[1, 2, 3];
         :async_temporary_3 = b;
@@ -242,14 +252,14 @@
         self::expect(1, b.{core::List::[]}(cnt));
         :async_temporary_4 = b.{core::List::[]}(0);
         [yield] let dynamic #t21 = asy::_awaitHelper(self::dummy(), :async_op_then, :async_op_error, :async_op) in null;
-        core::num* e = _in::unsafeCast<core::int*>(:async_temporary_4).{core::num::+}(:result as{TypeError,ForDynamic} core::num*);
+        core::num* e = _in::unsafeCast<core::int*>(:async_temporary_4).{core::num::+}(:result as{TypeError,ForDynamic} core::num);
         self::expect(2, e);
       }
       asy::_completeOnAsyncReturn(:async_completer, :return_value);
       return;
     }
-    on dynamic catch(dynamic :exception, core::StackTrace* :stack_trace) {
-      :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+    on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
+      :async_completer.{asy::Completer::completeError}(exception, stack_trace);
     }
   :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
@@ -320,8 +330,8 @@
       asy::_completeOnAsyncReturn(:async_completer, :return_value);
       return;
     }
-    on dynamic catch(dynamic :exception, core::StackTrace* :stack_trace) {
-      :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+    on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
+      :async_completer.{asy::Completer::completeError}(exception, stack_trace);
     }
   :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
@@ -393,8 +403,8 @@
       asy::_completeOnAsyncReturn(:async_completer, :return_value);
       return;
     }
-    on dynamic catch(dynamic :exception, core::StackTrace* :stack_trace) {
-      :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+    on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
+      :async_completer.{asy::Completer::completeError}(exception, stack_trace);
     }
   :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
@@ -555,8 +565,8 @@
                     asy::_completeOnAsyncReturn(:async_completer, :return_value);
                     return;
                   }
-                  on dynamic catch(dynamic :exception, core::StackTrace* :stack_trace) {
-                    :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+                  on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
+                    :async_completer.{asy::Completer::completeError}(exception, stack_trace);
                   }
                 :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
                 :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
@@ -583,8 +593,8 @@
                     asy::_completeOnAsyncReturn(:async_completer, :return_value);
                     return;
                   }
-                  on dynamic catch(dynamic :exception, core::StackTrace* :stack_trace) {
-                    :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+                  on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
+                    :async_completer.{asy::Completer::completeError}(exception, stack_trace);
                   }
                 :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
                 :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
@@ -616,8 +626,8 @@
                       }
                       return;
                     }
-                    on dynamic catch(dynamic :exception, core::StackTrace* :stack_trace) {
-                      :controller.{asy::_AsyncStarStreamController::addError}(:exception, :stack_trace);
+                    on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
+                      :controller.{asy::_AsyncStarStreamController::addError}(exception, stack_trace);
                     }
                   finally {
                     :controller.{asy::_AsyncStarStreamController::close}();
@@ -631,7 +641,7 @@
               }
               :async_temporary_0 = <dynamic>[42];
               [yield] let dynamic #t55 = asy::_awaitHelper(testStream1.call().{asy::Stream::toList}(), :async_op_then, :async_op_error, :async_op) in null;
-              self::expectList(_in::unsafeCast<core::List<dynamic>*>(:async_temporary_0), _in::unsafeCast<core::List<core::int*>*>(:result));
+              self::expectList(_in::unsafeCast<core::List<dynamic>*>(:async_temporary_0), _in::unsafeCast<core::List<core::int*>>(:result));
               function testStream2() → asy::Stream<core::int*>* /* originally async* */ {
                 asy::_AsyncStarStreamController<core::int*>* :controller;
                 dynamic :controller_stream;
@@ -655,8 +665,8 @@
                       }
                       return;
                     }
-                    on dynamic catch(dynamic :exception, core::StackTrace* :stack_trace) {
-                      :controller.{asy::_AsyncStarStreamController::addError}(:exception, :stack_trace);
+                    on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
+                      :controller.{asy::_AsyncStarStreamController::addError}(exception, stack_trace);
                     }
                   finally {
                     :controller.{asy::_AsyncStarStreamController::close}();
@@ -670,7 +680,7 @@
               }
               :async_temporary_1 = <dynamic>[42];
               [yield] let dynamic #t57 = asy::_awaitHelper(testStream2.call().{asy::Stream::toList}(), :async_op_then, :async_op_error, :async_op) in null;
-              self::expectList(_in::unsafeCast<core::List<dynamic>*>(:async_temporary_1), _in::unsafeCast<core::List<core::int*>*>(:result));
+              self::expectList(_in::unsafeCast<core::List<dynamic>*>(:async_temporary_1), _in::unsafeCast<core::List<core::int*>>(:result));
             }
           }
         }
@@ -678,8 +688,8 @@
       asy::_completeOnAsyncReturn(:async_completer, :return_value);
       return;
     }
-    on dynamic catch(dynamic :exception, core::StackTrace* :stack_trace) {
-      :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+    on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
+      :async_completer.{asy::Completer::completeError}(exception, stack_trace);
     }
   :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
@@ -705,8 +715,8 @@
       asy::_completeOnAsyncReturn(:async_completer, :return_value);
       return;
     }
-    on dynamic catch(dynamic :exception, core::StackTrace* :stack_trace) {
-      :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+    on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
+      :async_completer.{asy::Completer::completeError}(exception, stack_trace);
     }
   :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
@@ -738,8 +748,8 @@
         }
         return;
       }
-      on dynamic catch(dynamic :exception, core::StackTrace* :stack_trace) {
-        :controller.{asy::_AsyncStarStreamController::addError}(:exception, :stack_trace);
+      on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
+        :controller.{asy::_AsyncStarStreamController::addError}(exception, stack_trace);
       }
     finally {
       :controller.{asy::_AsyncStarStreamController::close}();
@@ -784,8 +794,8 @@
       asy::_completeOnAsyncReturn(:async_completer, :return_value);
       return;
     }
-    on dynamic catch(dynamic :exception, core::StackTrace* :stack_trace) {
-      :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+    on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
+      :async_completer.{asy::Completer::completeError}(exception, stack_trace);
     }
   :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/await_complex.dart.weak.expect b/pkg/front_end/testcases/general_nnbd_opt_out/await_complex.dart.weak.expect
index a0b6fdd..4d830b1 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/await_complex.dart.weak.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/await_complex.dart.weak.expect
@@ -25,6 +25,16 @@
   }
   method foo(core::int* param) → core::int*
     return param;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field core::int* globalVariable = 1;
 static final field core::bool* assertStatementsEnabled = (() → core::bool* {
@@ -46,54 +56,54 @@
 static method dummy() → dynamic
   return 1;
 static method staticMembers() → dynamic async {
-  core::num* a = self::C::staticField.{core::num::+}(await self::dummy() as{TypeError,ForDynamic} core::num*);
+  core::num* a = self::C::staticField.{core::num::+}(await self::dummy() as{TypeError,ForDynamic} core::num);
   self::expect(2, a);
-  core::num* f = (self::C::staticField = 1).{core::num::+}(await self::dummy() as{TypeError,ForDynamic} core::num*);
+  core::num* f = (self::C::staticField = 1).{core::num::+}(await self::dummy() as{TypeError,ForDynamic} core::num);
   self::expect(2, f);
-  core::num* b = self::C::staticGetter.{core::num::+}(await self::dummy() as{TypeError,ForDynamic} core::num*);
+  core::num* b = self::C::staticGetter.{core::num::+}(await self::dummy() as{TypeError,ForDynamic} core::num);
   self::expect(2, b);
-  core::num* c = (self::C::staticSetter = 1).{core::num::+}(await self::dummy() as{TypeError,ForDynamic} core::num*);
+  core::num* c = (self::C::staticSetter = 1).{core::num::+}(await self::dummy() as{TypeError,ForDynamic} core::num);
   self::expect(2, c);
-  core::num* d = self::C::staticFoo(2).{core::num::+}(await self::dummy() as{TypeError,ForDynamic} core::num*);
+  core::num* d = self::C::staticFoo(2).{core::num::+}(await self::dummy() as{TypeError,ForDynamic} core::num);
   self::expect(3, d);
-  core::num* e = self::C::staticField.{core::num::+}(self::C::staticGetter).{core::num::+}(self::C::staticSetter = 1).{core::num::+}(self::C::staticFoo(1)).{core::num::+}(await self::dummy() as{TypeError,ForDynamic} core::num*);
+  core::num* e = self::C::staticField.{core::num::+}(self::C::staticGetter).{core::num::+}(self::C::staticSetter = 1).{core::num::+}(self::C::staticFoo(1)).{core::num::+}(await self::dummy() as{TypeError,ForDynamic} core::num);
   self::expect(5, e);
 }
 static method topLevelMembers() → dynamic async {
-  core::num* a = self::globalVariable.{core::num::+}(await self::dummy() as{TypeError,ForDynamic} core::num*);
+  core::num* a = self::globalVariable.{core::num::+}(await self::dummy() as{TypeError,ForDynamic} core::num);
   self::expect(2, a);
-  core::num* b = self::topLevelGetter.{core::num::+}(await self::dummy() as{TypeError,ForDynamic} core::num*);
+  core::num* b = self::topLevelGetter.{core::num::+}(await self::dummy() as{TypeError,ForDynamic} core::num);
   self::expect(2, b);
-  core::num* c = (self::topLevelSetter = 1).{core::num::+}(await self::dummy() as{TypeError,ForDynamic} core::num*);
+  core::num* c = (self::topLevelSetter = 1).{core::num::+}(await self::dummy() as{TypeError,ForDynamic} core::num);
   self::expect(2, c);
-  core::num* d = self::topLevelFoo(1).{core::num::+}(await self::dummy() as{TypeError,ForDynamic} core::num*);
+  core::num* d = self::topLevelFoo(1).{core::num::+}(await self::dummy() as{TypeError,ForDynamic} core::num);
   self::expect(2, d);
-  core::num* e = self::globalVariable.{core::num::+}(self::topLevelGetter).{core::num::+}(self::topLevelSetter = 1).{core::num::+}(self::topLevelFoo(1)).{core::num::+}(await self::dummy() as{TypeError,ForDynamic} core::num*);
+  core::num* e = self::globalVariable.{core::num::+}(self::topLevelGetter).{core::num::+}(self::topLevelSetter = 1).{core::num::+}(self::topLevelFoo(1)).{core::num::+}(await self::dummy() as{TypeError,ForDynamic} core::num);
   self::expect(5, e);
 }
 static method instanceMembers() → dynamic async {
   self::C* inst = new self::C::•();
-  core::num* a = inst.{self::C::field}.{core::num::+}(await self::dummy() as{TypeError,ForDynamic} core::num*);
+  core::num* a = inst.{self::C::field}.{core::num::+}(await self::dummy() as{TypeError,ForDynamic} core::num);
   self::expect(2, a);
-  core::num* b = inst.{self::C::getter}.{core::num::+}(await self::dummy() as{TypeError,ForDynamic} core::num*);
+  core::num* b = inst.{self::C::getter}.{core::num::+}(await self::dummy() as{TypeError,ForDynamic} core::num);
   self::expect(2, b);
-  core::num* c = (inst.{self::C::setter} = 1).{core::num::+}(await self::dummy() as{TypeError,ForDynamic} core::num*);
+  core::num* c = (inst.{self::C::setter} = 1).{core::num::+}(await self::dummy() as{TypeError,ForDynamic} core::num);
   self::expect(2, c);
-  core::num* d = inst.{self::C::foo}(1).{core::num::+}(await self::dummy() as{TypeError,ForDynamic} core::num*);
+  core::num* d = inst.{self::C::foo}(1).{core::num::+}(await self::dummy() as{TypeError,ForDynamic} core::num);
   self::expect(2, d);
-  core::num* e = inst.{self::C::field}.{core::num::+}(inst.{self::C::getter}).{core::num::+}(inst.{self::C::setter} = 1).{core::num::+}(inst.{self::C::foo}(1)).{core::num::+}(await self::dummy() as{TypeError,ForDynamic} core::num*);
+  core::num* e = inst.{self::C::field}.{core::num::+}(inst.{self::C::getter}).{core::num::+}(inst.{self::C::setter} = 1).{core::num::+}(inst.{self::C::foo}(1)).{core::num::+}(await self::dummy() as{TypeError,ForDynamic} core::num);
   self::expect(5, e);
 }
 static method others() → dynamic async {
   core::String* a = "${self::globalVariable} ${await self::dummy()} ".{core::String::+}(await "someString");
   self::expect("1 1 someString", a);
   self::C* c = new self::C::•();
-  core::num* d = c.{self::C::field}.{core::num::+}(await self::dummy() as{TypeError,ForDynamic} core::num*);
+  core::num* d = c.{self::C::field}.{core::num::+}(await self::dummy() as{TypeError,ForDynamic} core::num);
   core::int* cnt = 2;
   core::List<core::int*>* b = <core::int*>[1, 2, 3];
   b.{core::List::[]=}(cnt, await self::dummy() as{TypeError,ForDynamic} core::int*);
   self::expect(1, b.{core::List::[]}(cnt));
-  core::num* e = b.{core::List::[]}(0).{core::num::+}(await self::dummy() as{TypeError,ForDynamic} core::num*);
+  core::num* e = b.{core::List::[]}(0).{core::num::+}(await self::dummy() as{TypeError,ForDynamic} core::num);
   self::expect(2, e);
 }
 static method conditionals() → dynamic async {
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/await_complex.dart.weak.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/await_complex.dart.weak.transformed.expect
index dfafacd..72a8cdc 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/await_complex.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/await_complex.dart.weak.transformed.expect
@@ -26,6 +26,16 @@
   }
   method foo(core::int* param) → core::int*
     return param;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field core::int* globalVariable = 1;
 static final field core::bool* assertStatementsEnabled = (() → core::bool* {
@@ -67,34 +77,34 @@
       {
         :async_temporary_0 = self::C::staticField;
         [yield] let dynamic #t1 = asy::_awaitHelper(self::dummy(), :async_op_then, :async_op_error, :async_op) in null;
-        core::num* a = _in::unsafeCast<core::int*>(:async_temporary_0).{core::num::+}(:result as{TypeError,ForDynamic} core::num*);
+        core::num* a = _in::unsafeCast<core::int*>(:async_temporary_0).{core::num::+}(:result as{TypeError,ForDynamic} core::num);
         self::expect(2, a);
         :async_temporary_1 = self::C::staticField = 1;
         [yield] let dynamic #t2 = asy::_awaitHelper(self::dummy(), :async_op_then, :async_op_error, :async_op) in null;
-        core::num* f = _in::unsafeCast<core::int*>(:async_temporary_1).{core::num::+}(:result as{TypeError,ForDynamic} core::num*);
+        core::num* f = _in::unsafeCast<core::int*>(:async_temporary_1).{core::num::+}(:result as{TypeError,ForDynamic} core::num);
         self::expect(2, f);
         :async_temporary_2 = self::C::staticGetter;
         [yield] let dynamic #t3 = asy::_awaitHelper(self::dummy(), :async_op_then, :async_op_error, :async_op) in null;
-        core::num* b = _in::unsafeCast<core::int*>(:async_temporary_2).{core::num::+}(:result as{TypeError,ForDynamic} core::num*);
+        core::num* b = _in::unsafeCast<core::int*>(:async_temporary_2).{core::num::+}(:result as{TypeError,ForDynamic} core::num);
         self::expect(2, b);
         :async_temporary_3 = self::C::staticSetter = 1;
         [yield] let dynamic #t4 = asy::_awaitHelper(self::dummy(), :async_op_then, :async_op_error, :async_op) in null;
-        core::num* c = _in::unsafeCast<core::int*>(:async_temporary_3).{core::num::+}(:result as{TypeError,ForDynamic} core::num*);
+        core::num* c = _in::unsafeCast<core::int*>(:async_temporary_3).{core::num::+}(:result as{TypeError,ForDynamic} core::num);
         self::expect(2, c);
         :async_temporary_4 = self::C::staticFoo(2);
         [yield] let dynamic #t5 = asy::_awaitHelper(self::dummy(), :async_op_then, :async_op_error, :async_op) in null;
-        core::num* d = _in::unsafeCast<core::int*>(:async_temporary_4).{core::num::+}(:result as{TypeError,ForDynamic} core::num*);
+        core::num* d = _in::unsafeCast<core::int*>(:async_temporary_4).{core::num::+}(:result as{TypeError,ForDynamic} core::num);
         self::expect(3, d);
         :async_temporary_5 = self::C::staticField.{core::num::+}(self::C::staticGetter).{core::num::+}(self::C::staticSetter = 1).{core::num::+}(self::C::staticFoo(1));
         [yield] let dynamic #t6 = asy::_awaitHelper(self::dummy(), :async_op_then, :async_op_error, :async_op) in null;
-        core::num* e = _in::unsafeCast<core::int*>(:async_temporary_5).{core::num::+}(:result as{TypeError,ForDynamic} core::num*);
+        core::num* e = _in::unsafeCast<core::int*>(:async_temporary_5).{core::num::+}(:result as{TypeError,ForDynamic} core::num);
         self::expect(5, e);
       }
       asy::_completeOnAsyncReturn(:async_completer, :return_value);
       return;
     }
-    on dynamic catch(dynamic :exception, core::StackTrace* :stack_trace) {
-      :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+    on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
+      :async_completer.{asy::Completer::completeError}(exception, stack_trace);
     }
   :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
@@ -122,30 +132,30 @@
       {
         :async_temporary_0 = self::globalVariable;
         [yield] let dynamic #t7 = asy::_awaitHelper(self::dummy(), :async_op_then, :async_op_error, :async_op) in null;
-        core::num* a = _in::unsafeCast<core::int*>(:async_temporary_0).{core::num::+}(:result as{TypeError,ForDynamic} core::num*);
+        core::num* a = _in::unsafeCast<core::int*>(:async_temporary_0).{core::num::+}(:result as{TypeError,ForDynamic} core::num);
         self::expect(2, a);
         :async_temporary_1 = self::topLevelGetter;
         [yield] let dynamic #t8 = asy::_awaitHelper(self::dummy(), :async_op_then, :async_op_error, :async_op) in null;
-        core::num* b = _in::unsafeCast<core::int*>(:async_temporary_1).{core::num::+}(:result as{TypeError,ForDynamic} core::num*);
+        core::num* b = _in::unsafeCast<core::int*>(:async_temporary_1).{core::num::+}(:result as{TypeError,ForDynamic} core::num);
         self::expect(2, b);
         :async_temporary_2 = self::topLevelSetter = 1;
         [yield] let dynamic #t9 = asy::_awaitHelper(self::dummy(), :async_op_then, :async_op_error, :async_op) in null;
-        core::num* c = _in::unsafeCast<core::int*>(:async_temporary_2).{core::num::+}(:result as{TypeError,ForDynamic} core::num*);
+        core::num* c = _in::unsafeCast<core::int*>(:async_temporary_2).{core::num::+}(:result as{TypeError,ForDynamic} core::num);
         self::expect(2, c);
         :async_temporary_3 = self::topLevelFoo(1);
         [yield] let dynamic #t10 = asy::_awaitHelper(self::dummy(), :async_op_then, :async_op_error, :async_op) in null;
-        core::num* d = _in::unsafeCast<core::int*>(:async_temporary_3).{core::num::+}(:result as{TypeError,ForDynamic} core::num*);
+        core::num* d = _in::unsafeCast<core::int*>(:async_temporary_3).{core::num::+}(:result as{TypeError,ForDynamic} core::num);
         self::expect(2, d);
         :async_temporary_4 = self::globalVariable.{core::num::+}(self::topLevelGetter).{core::num::+}(self::topLevelSetter = 1).{core::num::+}(self::topLevelFoo(1));
         [yield] let dynamic #t11 = asy::_awaitHelper(self::dummy(), :async_op_then, :async_op_error, :async_op) in null;
-        core::num* e = _in::unsafeCast<core::int*>(:async_temporary_4).{core::num::+}(:result as{TypeError,ForDynamic} core::num*);
+        core::num* e = _in::unsafeCast<core::int*>(:async_temporary_4).{core::num::+}(:result as{TypeError,ForDynamic} core::num);
         self::expect(5, e);
       }
       asy::_completeOnAsyncReturn(:async_completer, :return_value);
       return;
     }
-    on dynamic catch(dynamic :exception, core::StackTrace* :stack_trace) {
-      :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+    on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
+      :async_completer.{asy::Completer::completeError}(exception, stack_trace);
     }
   :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
@@ -174,30 +184,30 @@
         self::C* inst = new self::C::•();
         :async_temporary_0 = inst.{self::C::field};
         [yield] let dynamic #t12 = asy::_awaitHelper(self::dummy(), :async_op_then, :async_op_error, :async_op) in null;
-        core::num* a = _in::unsafeCast<core::int*>(:async_temporary_0).{core::num::+}(:result as{TypeError,ForDynamic} core::num*);
+        core::num* a = _in::unsafeCast<core::int*>(:async_temporary_0).{core::num::+}(:result as{TypeError,ForDynamic} core::num);
         self::expect(2, a);
         :async_temporary_1 = inst.{self::C::getter};
         [yield] let dynamic #t13 = asy::_awaitHelper(self::dummy(), :async_op_then, :async_op_error, :async_op) in null;
-        core::num* b = _in::unsafeCast<core::int*>(:async_temporary_1).{core::num::+}(:result as{TypeError,ForDynamic} core::num*);
+        core::num* b = _in::unsafeCast<core::int*>(:async_temporary_1).{core::num::+}(:result as{TypeError,ForDynamic} core::num);
         self::expect(2, b);
         :async_temporary_2 = inst.{self::C::setter} = 1;
         [yield] let dynamic #t14 = asy::_awaitHelper(self::dummy(), :async_op_then, :async_op_error, :async_op) in null;
-        core::num* c = _in::unsafeCast<core::int*>(:async_temporary_2).{core::num::+}(:result as{TypeError,ForDynamic} core::num*);
+        core::num* c = _in::unsafeCast<core::int*>(:async_temporary_2).{core::num::+}(:result as{TypeError,ForDynamic} core::num);
         self::expect(2, c);
         :async_temporary_3 = inst.{self::C::foo}(1);
         [yield] let dynamic #t15 = asy::_awaitHelper(self::dummy(), :async_op_then, :async_op_error, :async_op) in null;
-        core::num* d = _in::unsafeCast<core::int*>(:async_temporary_3).{core::num::+}(:result as{TypeError,ForDynamic} core::num*);
+        core::num* d = _in::unsafeCast<core::int*>(:async_temporary_3).{core::num::+}(:result as{TypeError,ForDynamic} core::num);
         self::expect(2, d);
         :async_temporary_4 = inst.{self::C::field}.{core::num::+}(inst.{self::C::getter}).{core::num::+}(inst.{self::C::setter} = 1).{core::num::+}(inst.{self::C::foo}(1));
         [yield] let dynamic #t16 = asy::_awaitHelper(self::dummy(), :async_op_then, :async_op_error, :async_op) in null;
-        core::num* e = _in::unsafeCast<core::int*>(:async_temporary_4).{core::num::+}(:result as{TypeError,ForDynamic} core::num*);
+        core::num* e = _in::unsafeCast<core::int*>(:async_temporary_4).{core::num::+}(:result as{TypeError,ForDynamic} core::num);
         self::expect(5, e);
       }
       asy::_completeOnAsyncReturn(:async_completer, :return_value);
       return;
     }
-    on dynamic catch(dynamic :exception, core::StackTrace* :stack_trace) {
-      :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+    on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
+      :async_completer.{asy::Completer::completeError}(exception, stack_trace);
     }
   :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
@@ -232,7 +242,7 @@
         self::C* c = new self::C::•();
         :async_temporary_1 = c.{self::C::field};
         [yield] let dynamic #t19 = asy::_awaitHelper(self::dummy(), :async_op_then, :async_op_error, :async_op) in null;
-        core::num* d = _in::unsafeCast<core::int*>(:async_temporary_1).{core::num::+}(:result as{TypeError,ForDynamic} core::num*);
+        core::num* d = _in::unsafeCast<core::int*>(:async_temporary_1).{core::num::+}(:result as{TypeError,ForDynamic} core::num);
         core::int* cnt = 2;
         core::List<core::int*>* b = <core::int*>[1, 2, 3];
         :async_temporary_3 = b;
@@ -242,14 +252,14 @@
         self::expect(1, b.{core::List::[]}(cnt));
         :async_temporary_4 = b.{core::List::[]}(0);
         [yield] let dynamic #t21 = asy::_awaitHelper(self::dummy(), :async_op_then, :async_op_error, :async_op) in null;
-        core::num* e = _in::unsafeCast<core::int*>(:async_temporary_4).{core::num::+}(:result as{TypeError,ForDynamic} core::num*);
+        core::num* e = _in::unsafeCast<core::int*>(:async_temporary_4).{core::num::+}(:result as{TypeError,ForDynamic} core::num);
         self::expect(2, e);
       }
       asy::_completeOnAsyncReturn(:async_completer, :return_value);
       return;
     }
-    on dynamic catch(dynamic :exception, core::StackTrace* :stack_trace) {
-      :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+    on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
+      :async_completer.{asy::Completer::completeError}(exception, stack_trace);
     }
   :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
@@ -320,8 +330,8 @@
       asy::_completeOnAsyncReturn(:async_completer, :return_value);
       return;
     }
-    on dynamic catch(dynamic :exception, core::StackTrace* :stack_trace) {
-      :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+    on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
+      :async_completer.{asy::Completer::completeError}(exception, stack_trace);
     }
   :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
@@ -393,8 +403,8 @@
       asy::_completeOnAsyncReturn(:async_completer, :return_value);
       return;
     }
-    on dynamic catch(dynamic :exception, core::StackTrace* :stack_trace) {
-      :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+    on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
+      :async_completer.{asy::Completer::completeError}(exception, stack_trace);
     }
   :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
@@ -555,8 +565,8 @@
                     asy::_completeOnAsyncReturn(:async_completer, :return_value);
                     return;
                   }
-                  on dynamic catch(dynamic :exception, core::StackTrace* :stack_trace) {
-                    :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+                  on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
+                    :async_completer.{asy::Completer::completeError}(exception, stack_trace);
                   }
                 :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
                 :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
@@ -583,8 +593,8 @@
                     asy::_completeOnAsyncReturn(:async_completer, :return_value);
                     return;
                   }
-                  on dynamic catch(dynamic :exception, core::StackTrace* :stack_trace) {
-                    :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+                  on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
+                    :async_completer.{asy::Completer::completeError}(exception, stack_trace);
                   }
                 :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
                 :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
@@ -616,8 +626,8 @@
                       }
                       return;
                     }
-                    on dynamic catch(dynamic :exception, core::StackTrace* :stack_trace) {
-                      :controller.{asy::_AsyncStarStreamController::addError}(:exception, :stack_trace);
+                    on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
+                      :controller.{asy::_AsyncStarStreamController::addError}(exception, stack_trace);
                     }
                   finally {
                     :controller.{asy::_AsyncStarStreamController::close}();
@@ -631,7 +641,7 @@
               }
               :async_temporary_0 = <dynamic>[42];
               [yield] let dynamic #t55 = asy::_awaitHelper(testStream1.call().{asy::Stream::toList}(), :async_op_then, :async_op_error, :async_op) in null;
-              self::expectList(_in::unsafeCast<core::List<dynamic>*>(:async_temporary_0), _in::unsafeCast<core::List<core::int*>*>(:result));
+              self::expectList(_in::unsafeCast<core::List<dynamic>*>(:async_temporary_0), _in::unsafeCast<core::List<core::int*>>(:result));
               function testStream2() → asy::Stream<core::int*>* /* originally async* */ {
                 asy::_AsyncStarStreamController<core::int*>* :controller;
                 dynamic :controller_stream;
@@ -655,8 +665,8 @@
                       }
                       return;
                     }
-                    on dynamic catch(dynamic :exception, core::StackTrace* :stack_trace) {
-                      :controller.{asy::_AsyncStarStreamController::addError}(:exception, :stack_trace);
+                    on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
+                      :controller.{asy::_AsyncStarStreamController::addError}(exception, stack_trace);
                     }
                   finally {
                     :controller.{asy::_AsyncStarStreamController::close}();
@@ -670,7 +680,7 @@
               }
               :async_temporary_1 = <dynamic>[42];
               [yield] let dynamic #t57 = asy::_awaitHelper(testStream2.call().{asy::Stream::toList}(), :async_op_then, :async_op_error, :async_op) in null;
-              self::expectList(_in::unsafeCast<core::List<dynamic>*>(:async_temporary_1), _in::unsafeCast<core::List<core::int*>*>(:result));
+              self::expectList(_in::unsafeCast<core::List<dynamic>*>(:async_temporary_1), _in::unsafeCast<core::List<core::int*>>(:result));
             }
           }
         }
@@ -678,8 +688,8 @@
       asy::_completeOnAsyncReturn(:async_completer, :return_value);
       return;
     }
-    on dynamic catch(dynamic :exception, core::StackTrace* :stack_trace) {
-      :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+    on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
+      :async_completer.{asy::Completer::completeError}(exception, stack_trace);
     }
   :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
@@ -705,8 +715,8 @@
       asy::_completeOnAsyncReturn(:async_completer, :return_value);
       return;
     }
-    on dynamic catch(dynamic :exception, core::StackTrace* :stack_trace) {
-      :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+    on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
+      :async_completer.{asy::Completer::completeError}(exception, stack_trace);
     }
   :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
@@ -738,8 +748,8 @@
         }
         return;
       }
-      on dynamic catch(dynamic :exception, core::StackTrace* :stack_trace) {
-        :controller.{asy::_AsyncStarStreamController::addError}(:exception, :stack_trace);
+      on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
+        :controller.{asy::_AsyncStarStreamController::addError}(exception, stack_trace);
       }
     finally {
       :controller.{asy::_AsyncStarStreamController::close}();
@@ -784,8 +794,8 @@
       asy::_completeOnAsyncReturn(:async_completer, :return_value);
       return;
     }
-    on dynamic catch(dynamic :exception, core::StackTrace* :stack_trace) {
-      :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+    on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
+      :async_completer.{asy::Completer::completeError}(exception, stack_trace);
     }
   :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/await_in_cascade.dart.outline.expect b/pkg/front_end/testcases/general_nnbd_opt_out/await_in_cascade.dart.outline.expect
index c59c111..1d8e5fd 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/await_in_cascade.dart.outline.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/await_in_cascade.dart.outline.expect
@@ -12,6 +12,16 @@
     ;
   method _m() → asy::Future<core::int*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/await_in_cascade.dart.strong.expect b/pkg/front_end/testcases/general_nnbd_opt_out/await_in_cascade.dart.strong.expect
index 4db7c74..ee50ed9 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/await_in_cascade.dart.strong.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/await_in_cascade.dart.strong.expect
@@ -13,6 +13,16 @@
     return let final core::List<core::int*>* #t1 = <core::int*>[] in let final void #t2 = #t1.{core::List::add}(await this.{self::C::_m}()) in #t1;
   method _m() → asy::Future<core::int*>* async 
     return 42;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic async {
   self::expect(42, (await new self::C::•().{self::C::m}()).{core::Iterable::first});
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/await_in_cascade.dart.strong.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/await_in_cascade.dart.strong.transformed.expect
index 72c6420..da55c50 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/await_in_cascade.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/await_in_cascade.dart.strong.transformed.expect
@@ -31,8 +31,8 @@
         asy::_completeOnAsyncReturn(:async_completer, :return_value);
         return;
       }
-      on dynamic catch(dynamic :exception, core::StackTrace* :stack_trace) {
-        :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+      on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
+        :async_completer.{asy::Completer::completeError}(exception, stack_trace);
       }
     :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
     :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
@@ -58,8 +58,8 @@
         asy::_completeOnAsyncReturn(:async_completer, :return_value);
         return;
       }
-      on dynamic catch(dynamic :exception, core::StackTrace* :stack_trace) {
-        :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+      on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
+        :async_completer.{asy::Completer::completeError}(exception, stack_trace);
       }
     :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
     :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
@@ -67,6 +67,16 @@
     :async_completer.{asy::_AsyncAwaitCompleter::start}(:async_op);
     return :async_completer.{asy::Completer::future};
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic /* originally async */ {
   final asy::_AsyncAwaitCompleter<dynamic>* :async_completer = new asy::_AsyncAwaitCompleter::•<dynamic>();
@@ -87,8 +97,8 @@
       asy::_completeOnAsyncReturn(:async_completer, :return_value);
       return;
     }
-    on dynamic catch(dynamic :exception, core::StackTrace* :stack_trace) {
-      :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+    on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
+      :async_completer.{asy::Completer::completeError}(exception, stack_trace);
     }
   :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/await_in_cascade.dart.weak.expect b/pkg/front_end/testcases/general_nnbd_opt_out/await_in_cascade.dart.weak.expect
index 4db7c74..ee50ed9 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/await_in_cascade.dart.weak.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/await_in_cascade.dart.weak.expect
@@ -13,6 +13,16 @@
     return let final core::List<core::int*>* #t1 = <core::int*>[] in let final void #t2 = #t1.{core::List::add}(await this.{self::C::_m}()) in #t1;
   method _m() → asy::Future<core::int*>* async 
     return 42;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic async {
   self::expect(42, (await new self::C::•().{self::C::m}()).{core::Iterable::first});
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/await_in_cascade.dart.weak.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/await_in_cascade.dart.weak.transformed.expect
index 72c6420..da55c50 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/await_in_cascade.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/await_in_cascade.dart.weak.transformed.expect
@@ -31,8 +31,8 @@
         asy::_completeOnAsyncReturn(:async_completer, :return_value);
         return;
       }
-      on dynamic catch(dynamic :exception, core::StackTrace* :stack_trace) {
-        :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+      on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
+        :async_completer.{asy::Completer::completeError}(exception, stack_trace);
       }
     :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
     :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
@@ -58,8 +58,8 @@
         asy::_completeOnAsyncReturn(:async_completer, :return_value);
         return;
       }
-      on dynamic catch(dynamic :exception, core::StackTrace* :stack_trace) {
-        :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+      on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
+        :async_completer.{asy::Completer::completeError}(exception, stack_trace);
       }
     :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
     :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
@@ -67,6 +67,16 @@
     :async_completer.{asy::_AsyncAwaitCompleter::start}(:async_op);
     return :async_completer.{asy::Completer::future};
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic /* originally async */ {
   final asy::_AsyncAwaitCompleter<dynamic>* :async_completer = new asy::_AsyncAwaitCompleter::•<dynamic>();
@@ -87,8 +97,8 @@
       asy::_completeOnAsyncReturn(:async_completer, :return_value);
       return;
     }
-    on dynamic catch(dynamic :exception, core::StackTrace* :stack_trace) {
-      :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+    on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
+      :async_completer.{asy::Completer::completeError}(exception, stack_trace);
     }
   :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/bad_setter_abstract.dart.outline.expect b/pkg/front_end/testcases/general_nnbd_opt_out/bad_setter_abstract.dart.outline.expect
index 5f2c9ac..fcc59b4 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/bad_setter_abstract.dart.outline.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/bad_setter_abstract.dart.outline.expect
@@ -22,6 +22,16 @@
     ;
   set d(dynamic #synthetic) → void
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class B extends core::Object {
   synthetic constructor •() → self::B*
@@ -30,6 +40,16 @@
     ;
   set d(dynamic #synthetic) → void
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static set b(dynamic #synthetic) → void
   ;
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/bad_setter_abstract.dart.strong.expect b/pkg/front_end/testcases/general_nnbd_opt_out/bad_setter_abstract.dart.strong.expect
index c4a1ace..fe95341 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/bad_setter_abstract.dart.strong.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/bad_setter_abstract.dart.strong.expect
@@ -63,6 +63,16 @@
       ;
     }
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class B extends core::Object {
   synthetic constructor •() → self::B*
@@ -84,6 +94,16 @@
       ;
     }
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static set b(dynamic #synthetic) → void {
   invalid-expression "pkg/front_end/testcases/general_nnbd_opt_out/bad_setter_abstract.dart:7:6: Error: A setter should have exactly one formal parameter.
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/bad_setter_abstract.dart.strong.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/bad_setter_abstract.dart.strong.transformed.expect
index c4a1ace..fe95341 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/bad_setter_abstract.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/bad_setter_abstract.dart.strong.transformed.expect
@@ -63,6 +63,16 @@
       ;
     }
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class B extends core::Object {
   synthetic constructor •() → self::B*
@@ -84,6 +94,16 @@
       ;
     }
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static set b(dynamic #synthetic) → void {
   invalid-expression "pkg/front_end/testcases/general_nnbd_opt_out/bad_setter_abstract.dart:7:6: Error: A setter should have exactly one formal parameter.
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/bad_setter_abstract.dart.weak.expect b/pkg/front_end/testcases/general_nnbd_opt_out/bad_setter_abstract.dart.weak.expect
index c4a1ace..fe95341 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/bad_setter_abstract.dart.weak.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/bad_setter_abstract.dart.weak.expect
@@ -63,6 +63,16 @@
       ;
     }
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class B extends core::Object {
   synthetic constructor •() → self::B*
@@ -84,6 +94,16 @@
       ;
     }
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static set b(dynamic #synthetic) → void {
   invalid-expression "pkg/front_end/testcases/general_nnbd_opt_out/bad_setter_abstract.dart:7:6: Error: A setter should have exactly one formal parameter.
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/bad_setter_abstract.dart.weak.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/bad_setter_abstract.dart.weak.transformed.expect
index c4a1ace..fe95341 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/bad_setter_abstract.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/bad_setter_abstract.dart.weak.transformed.expect
@@ -63,6 +63,16 @@
       ;
     }
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class B extends core::Object {
   synthetic constructor •() → self::B*
@@ -84,6 +94,16 @@
       ;
     }
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static set b(dynamic #synthetic) → void {
   invalid-expression "pkg/front_end/testcases/general_nnbd_opt_out/bad_setter_abstract.dart:7:6: Error: A setter should have exactly one formal parameter.
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/bad_store.dart.outline.expect b/pkg/front_end/testcases/general_nnbd_opt_out/bad_store.dart.outline.expect
index fb4d3f9..8cb7506 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/bad_store.dart.outline.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/bad_store.dart.outline.expect
@@ -6,6 +6,16 @@
   field dynamic field;
   synthetic constructor •() → self::Foo*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method identity(dynamic x) → dynamic
   ;
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/bad_store.dart.strong.expect b/pkg/front_end/testcases/general_nnbd_opt_out/bad_store.dart.strong.expect
index 2882852..83a70b5 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/bad_store.dart.strong.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/bad_store.dart.strong.expect
@@ -7,6 +7,16 @@
   synthetic constructor •() → self::Foo*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method identity(dynamic x) → dynamic
   return x;
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/bad_store.dart.strong.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/bad_store.dart.strong.transformed.expect
index 2882852..83a70b5 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/bad_store.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/bad_store.dart.strong.transformed.expect
@@ -7,6 +7,16 @@
   synthetic constructor •() → self::Foo*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method identity(dynamic x) → dynamic
   return x;
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/bad_store.dart.weak.expect b/pkg/front_end/testcases/general_nnbd_opt_out/bad_store.dart.weak.expect
index 2882852..83a70b5 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/bad_store.dart.weak.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/bad_store.dart.weak.expect
@@ -7,6 +7,16 @@
   synthetic constructor •() → self::Foo*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method identity(dynamic x) → dynamic
   return x;
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/bad_store.dart.weak.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/bad_store.dart.weak.transformed.expect
index 2882852..83a70b5 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/bad_store.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/bad_store.dart.weak.transformed.expect
@@ -7,6 +7,16 @@
   synthetic constructor •() → self::Foo*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method identity(dynamic x) → dynamic
   return x;
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/bad_type_variable_uses_in_supertypes.dart.outline.expect b/pkg/front_end/testcases/general_nnbd_opt_out/bad_type_variable_uses_in_supertypes.dart.outline.expect
index 1b0f87b..da88efa 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/bad_type_variable_uses_in_supertypes.dart.outline.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/bad_type_variable_uses_in_supertypes.dart.outline.expect
@@ -118,66 +118,216 @@
 class Empty extends core::Object {
   synthetic constructor •() → self::Empty*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class A<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::A<self::A::T*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::B<self::B::T*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Bc<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::Bc<self::Bc::T*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Bi<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::Bi<self::Bi::T*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::C<self::C::T*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Cc<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::Cc<self::Cc::T*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Ci<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::Ci<self::Ci::T*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D<T extends core::Object* = dynamic> extends core::Object /*hasConstConstructor*/  {
   const synthetic constructor •() → self::D<self::D::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Dc<T extends core::Object* = dynamic> extends core::Object /*hasConstConstructor*/  {
   const synthetic constructor •() → self::Dc<self::Dc::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Di<T extends core::Object* = dynamic> extends core::Object /*hasConstConstructor*/  {
   const synthetic constructor •() → self::Di<self::Di::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class E<T extends core::Object* = dynamic> = core::Object with self::Empty {
   synthetic constructor •() → self::E<self::E::T*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Ec<T extends core::Object* = dynamic> = core::Object with self::Empty {
   synthetic constructor •() → self::Ec<self::Ec::T*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Ei<T extends core::Object* = dynamic> = core::Object with self::Empty {
   synthetic constructor •() → self::Ei<self::Ei::T*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class _F&Object&A<T extends core::Object* = dynamic> extends core::Object /*isAnonymousMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::_F&Object&A<self::_F&Object&A::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class F<T extends core::Object* = dynamic> extends self::_F&Object&A<self::F::T*> {
   synthetic constructor •() → self::F<self::F::T*>*
@@ -187,6 +337,16 @@
   const synthetic constructor •() → self::_Fc&Object&A<self::_Fc&Object&A::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Fc<T extends core::Object* = dynamic> extends self::_Fc&Object&A<self::Fc::T*> {
   synthetic constructor •() → self::Fc<self::Fc::T*>*
@@ -196,6 +356,16 @@
   const synthetic constructor •() → self::_Fi&Object&A<self::_Fi&Object&A::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Fi<T extends core::Object* = dynamic> extends self::_Fi&Object&A<self::Fi::T*> {
   synthetic constructor •() → self::Fi<self::Fi::T*>*
@@ -204,6 +374,16 @@
 abstract class _G&A&Empty<T extends core::Object* = dynamic> = core::Object with self::Empty /*isAnonymousMixin*/  {
   synthetic constructor •() → self::_G&A&Empty<self::_G&A&Empty::T*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class G<T extends core::Object* = dynamic> extends self::_G&A&Empty<self::G::T*> {
   synthetic constructor •() → self::G<self::G::T*>*
@@ -212,6 +392,16 @@
 abstract class _Gc&A&Empty<T extends core::Object* = dynamic> = core::Object with self::Empty /*isAnonymousMixin*/  {
   synthetic constructor •() → self::_Gc&A&Empty<self::_Gc&A&Empty::T*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Gc<T extends core::Object* = dynamic> extends self::_Gc&A&Empty<self::Gc::T*> {
   synthetic constructor •() → self::Gc<self::Gc::T*>*
@@ -220,6 +410,16 @@
 abstract class _Gi&A&Empty<T extends core::Object* = dynamic> = core::Object with self::Empty /*isAnonymousMixin*/  {
   synthetic constructor •() → self::_Gi&A&Empty<self::_Gi&A&Empty::T*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Gi<T extends core::Object* = dynamic> extends self::_Gi&A&Empty<self::Gi::T*> {
   synthetic constructor •() → self::Gi<self::Gi::T*>*
@@ -244,6 +444,16 @@
 class Hii<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::Hii<self::Hii::T*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Iafc<T extends core::Object* = dynamic> extends self::A<self::A<((self::Iafc::T*) →* dynamic) →* dynamic>*> {
   synthetic constructor •() → self::Iafc<self::Iafc::T*>*
@@ -272,34 +482,114 @@
 class Jfff<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::Jfff<self::Jfff::T*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Jffc<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::Jffc<self::Jffc::T*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Jfcf<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::Jfcf<self::Jfcf::T*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Jfcc<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::Jfcc<self::Jfcc::T*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Jcff<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::Jcff<self::Jcff::T*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Jcfc<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::Jcfc<self::Jcfc::T*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Jccf<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::Jccf<self::Jccf::T*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Jccc<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::Jccc<self::Jccc::T*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/bad_type_variable_uses_in_supertypes.dart.strong.expect b/pkg/front_end/testcases/general_nnbd_opt_out/bad_type_variable_uses_in_supertypes.dart.strong.expect
index bab8503..7c6594d 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/bad_type_variable_uses_in_supertypes.dart.strong.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/bad_type_variable_uses_in_supertypes.dart.strong.expect
@@ -119,76 +119,226 @@
   synthetic constructor •() → self::Empty*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class A<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::A<self::A::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::B<self::B::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Bc<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::Bc<self::Bc::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Bi<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::Bi<self::Bi::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::C<self::C::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Cc<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::Cc<self::Cc::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Ci<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::Ci<self::Ci::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D<T extends core::Object* = dynamic> extends core::Object /*hasConstConstructor*/  {
   const synthetic constructor •() → self::D<self::D::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Dc<T extends core::Object* = dynamic> extends core::Object /*hasConstConstructor*/  {
   const synthetic constructor •() → self::Dc<self::Dc::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Di<T extends core::Object* = dynamic> extends core::Object /*hasConstConstructor*/  {
   const synthetic constructor •() → self::Di<self::Di::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class E<T extends core::Object* = dynamic> = core::Object with self::Empty {
   synthetic constructor •() → self::E<self::E::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Ec<T extends core::Object* = dynamic> = core::Object with self::Empty {
   synthetic constructor •() → self::Ec<self::Ec::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Ei<T extends core::Object* = dynamic> = core::Object with self::Empty {
   synthetic constructor •() → self::Ei<self::Ei::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class _F&Object&A<T extends core::Object* = dynamic> extends core::Object /*isAnonymousMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::_F&Object&A<self::_F&Object&A::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class F<T extends core::Object* = dynamic> extends self::_F&Object&A<self::F::T*> {
   synthetic constructor •() → self::F<self::F::T*>*
@@ -199,6 +349,16 @@
   const synthetic constructor •() → self::_Fc&Object&A<self::_Fc&Object&A::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Fc<T extends core::Object* = dynamic> extends self::_Fc&Object&A<self::Fc::T*> {
   synthetic constructor •() → self::Fc<self::Fc::T*>*
@@ -209,6 +369,16 @@
   const synthetic constructor •() → self::_Fi&Object&A<self::_Fi&Object&A::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Fi<T extends core::Object* = dynamic> extends self::_Fi&Object&A<self::Fi::T*> {
   synthetic constructor •() → self::Fi<self::Fi::T*>*
@@ -219,6 +389,16 @@
   synthetic constructor •() → self::_G&A&Empty<self::_G&A&Empty::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class G<T extends core::Object* = dynamic> extends self::_G&A&Empty<self::G::T*> {
   synthetic constructor •() → self::G<self::G::T*>*
@@ -229,6 +409,16 @@
   synthetic constructor •() → self::_Gc&A&Empty<self::_Gc&A&Empty::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Gc<T extends core::Object* = dynamic> extends self::_Gc&A&Empty<self::Gc::T*> {
   synthetic constructor •() → self::Gc<self::Gc::T*>*
@@ -239,6 +429,16 @@
   synthetic constructor •() → self::_Gi&A&Empty<self::_Gi&A&Empty::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Gi<T extends core::Object* = dynamic> extends self::_Gi&A&Empty<self::Gi::T*> {
   synthetic constructor •() → self::Gi<self::Gi::T*>*
@@ -269,6 +469,16 @@
   synthetic constructor •() → self::Hii<self::Hii::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Iafc<T extends core::Object* = dynamic> extends self::A<self::A<((self::Iafc::T*) →* dynamic) →* dynamic>*> {
   synthetic constructor •() → self::Iafc<self::Iafc::T*>*
@@ -304,40 +514,120 @@
   synthetic constructor •() → self::Jfff<self::Jfff::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Jffc<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::Jffc<self::Jffc::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Jfcf<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::Jfcf<self::Jfcf::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Jfcc<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::Jfcc<self::Jfcc::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Jcff<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::Jcff<self::Jcff::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Jcfc<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::Jcfc<self::Jcfc::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Jccf<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::Jccf<self::Jccf::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Jccc<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::Jccc<self::Jccc::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/bad_type_variable_uses_in_supertypes.dart.strong.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/bad_type_variable_uses_in_supertypes.dart.strong.transformed.expect
index a873098..eaff9da 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/bad_type_variable_uses_in_supertypes.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/bad_type_variable_uses_in_supertypes.dart.strong.transformed.expect
@@ -119,76 +119,226 @@
   synthetic constructor •() → self::Empty*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class A<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::A<self::A::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::B<self::B::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Bc<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::Bc<self::Bc::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Bi<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::Bi<self::Bi::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::C<self::C::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Cc<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::Cc<self::Cc::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Ci<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::Ci<self::Ci::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D<T extends core::Object* = dynamic> extends core::Object /*hasConstConstructor*/  {
   const synthetic constructor •() → self::D<self::D::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Dc<T extends core::Object* = dynamic> extends core::Object /*hasConstConstructor*/  {
   const synthetic constructor •() → self::Dc<self::Dc::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Di<T extends core::Object* = dynamic> extends core::Object /*hasConstConstructor*/  {
   const synthetic constructor •() → self::Di<self::Di::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class E<T extends core::Object* = dynamic> extends core::Object implements self::Empty /*isEliminatedMixin*/  {
   synthetic constructor •() → self::E<self::E::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Ec<T extends core::Object* = dynamic> extends core::Object implements self::Empty /*isEliminatedMixin*/  {
   synthetic constructor •() → self::Ec<self::Ec::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Ei<T extends core::Object* = dynamic> extends core::Object implements self::Empty /*isEliminatedMixin*/  {
   synthetic constructor •() → self::Ei<self::Ei::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class _F&Object&A<T extends core::Object* = dynamic> extends core::Object /*isAnonymousMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::_F&Object&A<self::_F&Object&A::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class F<T extends core::Object* = dynamic> extends self::_F&Object&A<self::F::T*> {
   synthetic constructor •() → self::F<self::F::T*>*
@@ -199,6 +349,16 @@
   const synthetic constructor •() → self::_Fc&Object&A<self::_Fc&Object&A::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Fc<T extends core::Object* = dynamic> extends self::_Fc&Object&A<self::Fc::T*> {
   synthetic constructor •() → self::Fc<self::Fc::T*>*
@@ -209,6 +369,16 @@
   const synthetic constructor •() → self::_Fi&Object&A<self::_Fi&Object&A::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Fi<T extends core::Object* = dynamic> extends self::_Fi&Object&A<self::Fi::T*> {
   synthetic constructor •() → self::Fi<self::Fi::T*>*
@@ -219,6 +389,16 @@
   synthetic constructor •() → self::_G&A&Empty<self::_G&A&Empty::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class G<T extends core::Object* = dynamic> extends self::_G&A&Empty<self::G::T*> {
   synthetic constructor •() → self::G<self::G::T*>*
@@ -229,6 +409,16 @@
   synthetic constructor •() → self::_Gc&A&Empty<self::_Gc&A&Empty::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Gc<T extends core::Object* = dynamic> extends self::_Gc&A&Empty<self::Gc::T*> {
   synthetic constructor •() → self::Gc<self::Gc::T*>*
@@ -239,6 +429,16 @@
   synthetic constructor •() → self::_Gi&A&Empty<self::_Gi&A&Empty::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Gi<T extends core::Object* = dynamic> extends self::_Gi&A&Empty<self::Gi::T*> {
   synthetic constructor •() → self::Gi<self::Gi::T*>*
@@ -269,6 +469,16 @@
   synthetic constructor •() → self::Hii<self::Hii::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Iafc<T extends core::Object* = dynamic> extends self::A<self::A<((self::Iafc::T*) →* dynamic) →* dynamic>*> {
   synthetic constructor •() → self::Iafc<self::Iafc::T*>*
@@ -304,40 +514,120 @@
   synthetic constructor •() → self::Jfff<self::Jfff::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Jffc<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::Jffc<self::Jffc::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Jfcf<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::Jfcf<self::Jfcf::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Jfcc<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::Jfcc<self::Jfcc::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Jcff<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::Jcff<self::Jcff::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Jcfc<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::Jcfc<self::Jcfc::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Jccf<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::Jccf<self::Jccf::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Jccc<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::Jccc<self::Jccc::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/bad_type_variable_uses_in_supertypes.dart.weak.expect b/pkg/front_end/testcases/general_nnbd_opt_out/bad_type_variable_uses_in_supertypes.dart.weak.expect
index bab8503..7c6594d 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/bad_type_variable_uses_in_supertypes.dart.weak.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/bad_type_variable_uses_in_supertypes.dart.weak.expect
@@ -119,76 +119,226 @@
   synthetic constructor •() → self::Empty*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class A<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::A<self::A::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::B<self::B::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Bc<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::Bc<self::Bc::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Bi<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::Bi<self::Bi::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::C<self::C::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Cc<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::Cc<self::Cc::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Ci<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::Ci<self::Ci::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D<T extends core::Object* = dynamic> extends core::Object /*hasConstConstructor*/  {
   const synthetic constructor •() → self::D<self::D::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Dc<T extends core::Object* = dynamic> extends core::Object /*hasConstConstructor*/  {
   const synthetic constructor •() → self::Dc<self::Dc::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Di<T extends core::Object* = dynamic> extends core::Object /*hasConstConstructor*/  {
   const synthetic constructor •() → self::Di<self::Di::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class E<T extends core::Object* = dynamic> = core::Object with self::Empty {
   synthetic constructor •() → self::E<self::E::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Ec<T extends core::Object* = dynamic> = core::Object with self::Empty {
   synthetic constructor •() → self::Ec<self::Ec::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Ei<T extends core::Object* = dynamic> = core::Object with self::Empty {
   synthetic constructor •() → self::Ei<self::Ei::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class _F&Object&A<T extends core::Object* = dynamic> extends core::Object /*isAnonymousMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::_F&Object&A<self::_F&Object&A::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class F<T extends core::Object* = dynamic> extends self::_F&Object&A<self::F::T*> {
   synthetic constructor •() → self::F<self::F::T*>*
@@ -199,6 +349,16 @@
   const synthetic constructor •() → self::_Fc&Object&A<self::_Fc&Object&A::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Fc<T extends core::Object* = dynamic> extends self::_Fc&Object&A<self::Fc::T*> {
   synthetic constructor •() → self::Fc<self::Fc::T*>*
@@ -209,6 +369,16 @@
   const synthetic constructor •() → self::_Fi&Object&A<self::_Fi&Object&A::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Fi<T extends core::Object* = dynamic> extends self::_Fi&Object&A<self::Fi::T*> {
   synthetic constructor •() → self::Fi<self::Fi::T*>*
@@ -219,6 +389,16 @@
   synthetic constructor •() → self::_G&A&Empty<self::_G&A&Empty::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class G<T extends core::Object* = dynamic> extends self::_G&A&Empty<self::G::T*> {
   synthetic constructor •() → self::G<self::G::T*>*
@@ -229,6 +409,16 @@
   synthetic constructor •() → self::_Gc&A&Empty<self::_Gc&A&Empty::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Gc<T extends core::Object* = dynamic> extends self::_Gc&A&Empty<self::Gc::T*> {
   synthetic constructor •() → self::Gc<self::Gc::T*>*
@@ -239,6 +429,16 @@
   synthetic constructor •() → self::_Gi&A&Empty<self::_Gi&A&Empty::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Gi<T extends core::Object* = dynamic> extends self::_Gi&A&Empty<self::Gi::T*> {
   synthetic constructor •() → self::Gi<self::Gi::T*>*
@@ -269,6 +469,16 @@
   synthetic constructor •() → self::Hii<self::Hii::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Iafc<T extends core::Object* = dynamic> extends self::A<self::A<((self::Iafc::T*) →* dynamic) →* dynamic>*> {
   synthetic constructor •() → self::Iafc<self::Iafc::T*>*
@@ -304,40 +514,120 @@
   synthetic constructor •() → self::Jfff<self::Jfff::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Jffc<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::Jffc<self::Jffc::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Jfcf<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::Jfcf<self::Jfcf::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Jfcc<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::Jfcc<self::Jfcc::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Jcff<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::Jcff<self::Jcff::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Jcfc<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::Jcfc<self::Jcfc::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Jccf<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::Jccf<self::Jccf::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Jccc<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::Jccc<self::Jccc::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/bad_type_variable_uses_in_supertypes.dart.weak.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/bad_type_variable_uses_in_supertypes.dart.weak.transformed.expect
index a873098..eaff9da 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/bad_type_variable_uses_in_supertypes.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/bad_type_variable_uses_in_supertypes.dart.weak.transformed.expect
@@ -119,76 +119,226 @@
   synthetic constructor •() → self::Empty*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class A<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::A<self::A::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::B<self::B::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Bc<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::Bc<self::Bc::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Bi<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::Bi<self::Bi::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::C<self::C::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Cc<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::Cc<self::Cc::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Ci<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::Ci<self::Ci::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D<T extends core::Object* = dynamic> extends core::Object /*hasConstConstructor*/  {
   const synthetic constructor •() → self::D<self::D::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Dc<T extends core::Object* = dynamic> extends core::Object /*hasConstConstructor*/  {
   const synthetic constructor •() → self::Dc<self::Dc::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Di<T extends core::Object* = dynamic> extends core::Object /*hasConstConstructor*/  {
   const synthetic constructor •() → self::Di<self::Di::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class E<T extends core::Object* = dynamic> extends core::Object implements self::Empty /*isEliminatedMixin*/  {
   synthetic constructor •() → self::E<self::E::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Ec<T extends core::Object* = dynamic> extends core::Object implements self::Empty /*isEliminatedMixin*/  {
   synthetic constructor •() → self::Ec<self::Ec::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Ei<T extends core::Object* = dynamic> extends core::Object implements self::Empty /*isEliminatedMixin*/  {
   synthetic constructor •() → self::Ei<self::Ei::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class _F&Object&A<T extends core::Object* = dynamic> extends core::Object /*isAnonymousMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::_F&Object&A<self::_F&Object&A::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class F<T extends core::Object* = dynamic> extends self::_F&Object&A<self::F::T*> {
   synthetic constructor •() → self::F<self::F::T*>*
@@ -199,6 +349,16 @@
   const synthetic constructor •() → self::_Fc&Object&A<self::_Fc&Object&A::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Fc<T extends core::Object* = dynamic> extends self::_Fc&Object&A<self::Fc::T*> {
   synthetic constructor •() → self::Fc<self::Fc::T*>*
@@ -209,6 +369,16 @@
   const synthetic constructor •() → self::_Fi&Object&A<self::_Fi&Object&A::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Fi<T extends core::Object* = dynamic> extends self::_Fi&Object&A<self::Fi::T*> {
   synthetic constructor •() → self::Fi<self::Fi::T*>*
@@ -219,6 +389,16 @@
   synthetic constructor •() → self::_G&A&Empty<self::_G&A&Empty::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class G<T extends core::Object* = dynamic> extends self::_G&A&Empty<self::G::T*> {
   synthetic constructor •() → self::G<self::G::T*>*
@@ -229,6 +409,16 @@
   synthetic constructor •() → self::_Gc&A&Empty<self::_Gc&A&Empty::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Gc<T extends core::Object* = dynamic> extends self::_Gc&A&Empty<self::Gc::T*> {
   synthetic constructor •() → self::Gc<self::Gc::T*>*
@@ -239,6 +429,16 @@
   synthetic constructor •() → self::_Gi&A&Empty<self::_Gi&A&Empty::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Gi<T extends core::Object* = dynamic> extends self::_Gi&A&Empty<self::Gi::T*> {
   synthetic constructor •() → self::Gi<self::Gi::T*>*
@@ -269,6 +469,16 @@
   synthetic constructor •() → self::Hii<self::Hii::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Iafc<T extends core::Object* = dynamic> extends self::A<self::A<((self::Iafc::T*) →* dynamic) →* dynamic>*> {
   synthetic constructor •() → self::Iafc<self::Iafc::T*>*
@@ -304,40 +514,120 @@
   synthetic constructor •() → self::Jfff<self::Jfff::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Jffc<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::Jffc<self::Jffc::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Jfcf<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::Jfcf<self::Jfcf::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Jfcc<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::Jfcc<self::Jfcc::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Jcff<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::Jcff<self::Jcff::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Jcfc<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::Jcfc<self::Jcfc::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Jccf<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::Jccf<self::Jccf::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Jccc<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::Jccc<self::Jccc::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/bounds_check_depends_on_inference.dart.outline.expect b/pkg/front_end/testcases/general_nnbd_opt_out/bounds_check_depends_on_inference.dart.outline.expect
index 750b872..9f4647b 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/bounds_check_depends_on_inference.dart.outline.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/bounds_check_depends_on_inference.dart.outline.expect
@@ -7,12 +7,32 @@
     ;
   method bar<generic-covariant-impl Y extends self::A::X* = self::A::X*>() → dynamic
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends core::Object {
   synthetic constructor •() → self::B*
     ;
   static method foo<Y extends core::Object* = core::Object*>() → self::A<self::B::foo::Y*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method baz() → dynamic
   ;
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/bounds_check_depends_on_inference.dart.strong.expect b/pkg/front_end/testcases/general_nnbd_opt_out/bounds_check_depends_on_inference.dart.strong.expect
index b534194..1f0308b 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/bounds_check_depends_on_inference.dart.strong.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/bounds_check_depends_on_inference.dart.strong.expect
@@ -8,6 +8,16 @@
     ;
   method bar<generic-covariant-impl Y extends self::A::X* = self::A::X*>() → dynamic
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends core::Object {
   synthetic constructor •() → self::B*
@@ -15,6 +25,16 @@
     ;
   static method foo<Y extends core::Object* = core::Object*>() → self::A<self::B::foo::Y*>*
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method baz() → dynamic {
   self::B::foo<core::Object*>().{self::A::bar}<core::String*>();
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/bounds_check_depends_on_inference.dart.strong.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/bounds_check_depends_on_inference.dart.strong.transformed.expect
index b534194..1f0308b 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/bounds_check_depends_on_inference.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/bounds_check_depends_on_inference.dart.strong.transformed.expect
@@ -8,6 +8,16 @@
     ;
   method bar<generic-covariant-impl Y extends self::A::X* = self::A::X*>() → dynamic
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends core::Object {
   synthetic constructor •() → self::B*
@@ -15,6 +25,16 @@
     ;
   static method foo<Y extends core::Object* = core::Object*>() → self::A<self::B::foo::Y*>*
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method baz() → dynamic {
   self::B::foo<core::Object*>().{self::A::bar}<core::String*>();
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/bounds_check_depends_on_inference.dart.weak.expect b/pkg/front_end/testcases/general_nnbd_opt_out/bounds_check_depends_on_inference.dart.weak.expect
index b534194..1f0308b 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/bounds_check_depends_on_inference.dart.weak.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/bounds_check_depends_on_inference.dart.weak.expect
@@ -8,6 +8,16 @@
     ;
   method bar<generic-covariant-impl Y extends self::A::X* = self::A::X*>() → dynamic
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends core::Object {
   synthetic constructor •() → self::B*
@@ -15,6 +25,16 @@
     ;
   static method foo<Y extends core::Object* = core::Object*>() → self::A<self::B::foo::Y*>*
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method baz() → dynamic {
   self::B::foo<core::Object*>().{self::A::bar}<core::String*>();
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/bounds_check_depends_on_inference.dart.weak.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/bounds_check_depends_on_inference.dart.weak.transformed.expect
index b534194..1f0308b 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/bounds_check_depends_on_inference.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/bounds_check_depends_on_inference.dart.weak.transformed.expect
@@ -8,6 +8,16 @@
     ;
   method bar<generic-covariant-impl Y extends self::A::X* = self::A::X*>() → dynamic
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends core::Object {
   synthetic constructor •() → self::B*
@@ -15,6 +25,16 @@
     ;
   static method foo<Y extends core::Object* = core::Object*>() → self::A<self::B::foo::Y*>*
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method baz() → dynamic {
   self::B::foo<core::Object*>().{self::A::bar}<core::String*>();
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/bug30695.dart.outline.expect b/pkg/front_end/testcases/general_nnbd_opt_out/bug30695.dart.outline.expect
index 2ba0668..25a590f 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/bug30695.dart.outline.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/bug30695.dart.outline.expect
@@ -16,6 +16,16 @@
   field core::int* foo;
   synthetic constructor •() → self::A*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A {
   synthetic constructor •() → self::B*
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/bug30695.dart.strong.expect b/pkg/front_end/testcases/general_nnbd_opt_out/bug30695.dart.strong.expect
index 6264645..a35cc92 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/bug30695.dart.strong.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/bug30695.dart.strong.expect
@@ -17,6 +17,16 @@
   synthetic constructor •() → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A {
   synthetic constructor •() → self::B*
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/bug30695.dart.weak.expect b/pkg/front_end/testcases/general_nnbd_opt_out/bug30695.dart.weak.expect
index 6264645..a35cc92 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/bug30695.dart.weak.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/bug30695.dart.weak.expect
@@ -17,6 +17,16 @@
   synthetic constructor •() → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A {
   synthetic constructor •() → self::B*
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/bug32426.dart.outline.expect b/pkg/front_end/testcases/general_nnbd_opt_out/bug32426.dart.outline.expect
index 87f6d25..f98f561 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/bug32426.dart.outline.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/bug32426.dart.outline.expect
@@ -6,12 +6,32 @@
   synthetic constructor •() → self::I*
     ;
   abstract method call() → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C extends core::Object implements self::I {
   synthetic constructor •() → self::C*
     ;
   method call([core::int* x]) → void
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/bug32426.dart.strong.expect b/pkg/front_end/testcases/general_nnbd_opt_out/bug32426.dart.strong.expect
index d97a705..ce31ea4 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/bug32426.dart.strong.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/bug32426.dart.strong.expect
@@ -7,12 +7,32 @@
     : super core::Object::•()
     ;
   abstract method call() → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C extends core::Object implements self::I {
   synthetic constructor •() → self::C*
     : super core::Object::•()
     ;
   method call([core::int* x = #C1]) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   self::I* i = new self::C::•();
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/bug32426.dart.strong.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/bug32426.dart.strong.transformed.expect
index d97a705..ce31ea4 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/bug32426.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/bug32426.dart.strong.transformed.expect
@@ -7,12 +7,32 @@
     : super core::Object::•()
     ;
   abstract method call() → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C extends core::Object implements self::I {
   synthetic constructor •() → self::C*
     : super core::Object::•()
     ;
   method call([core::int* x = #C1]) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   self::I* i = new self::C::•();
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/bug32426.dart.weak.expect b/pkg/front_end/testcases/general_nnbd_opt_out/bug32426.dart.weak.expect
index d97a705..ce31ea4 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/bug32426.dart.weak.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/bug32426.dart.weak.expect
@@ -7,12 +7,32 @@
     : super core::Object::•()
     ;
   abstract method call() → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C extends core::Object implements self::I {
   synthetic constructor •() → self::C*
     : super core::Object::•()
     ;
   method call([core::int* x = #C1]) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   self::I* i = new self::C::•();
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/bug32426.dart.weak.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/bug32426.dart.weak.transformed.expect
index d97a705..ce31ea4 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/bug32426.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/bug32426.dart.weak.transformed.expect
@@ -7,12 +7,32 @@
     : super core::Object::•()
     ;
   abstract method call() → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C extends core::Object implements self::I {
   synthetic constructor •() → self::C*
     : super core::Object::•()
     ;
   method call([core::int* x = #C1]) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   self::I* i = new self::C::•();
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/bug32629.dart.outline.expect b/pkg/front_end/testcases/general_nnbd_opt_out/bug32629.dart.outline.expect
index 8c3ca39..90cc551 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/bug32629.dart.outline.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/bug32629.dart.outline.expect
@@ -8,6 +8,16 @@
     ;
   method call(dynamic a, dynamic b) → dynamic
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method foo<S extends core::Object* = dynamic>((self::foo::S*, dynamic) →* self::foo::S* v) → void
   ;
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/bug32629.dart.strong.expect b/pkg/front_end/testcases/general_nnbd_opt_out/bug32629.dart.strong.expect
index c7e55b8..482a616 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/bug32629.dart.strong.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/bug32629.dart.strong.expect
@@ -17,6 +17,16 @@
   method call(dynamic a, dynamic b) → dynamic {
     return a;
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method foo<S extends core::Object* = dynamic>((self::foo::S*, dynamic) →* self::foo::S* v) → void {}
 static method test() → void {
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/bug32629.dart.strong.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/bug32629.dart.strong.transformed.expect
index c7e55b8..482a616 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/bug32629.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/bug32629.dart.strong.transformed.expect
@@ -17,6 +17,16 @@
   method call(dynamic a, dynamic b) → dynamic {
     return a;
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method foo<S extends core::Object* = dynamic>((self::foo::S*, dynamic) →* self::foo::S* v) → void {}
 static method test() → void {
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/bug32629.dart.weak.expect b/pkg/front_end/testcases/general_nnbd_opt_out/bug32629.dart.weak.expect
index c7e55b8..482a616 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/bug32629.dart.weak.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/bug32629.dart.weak.expect
@@ -17,6 +17,16 @@
   method call(dynamic a, dynamic b) → dynamic {
     return a;
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method foo<S extends core::Object* = dynamic>((self::foo::S*, dynamic) →* self::foo::S* v) → void {}
 static method test() → void {
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/bug32629.dart.weak.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/bug32629.dart.weak.transformed.expect
index c7e55b8..482a616 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/bug32629.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/bug32629.dart.weak.transformed.expect
@@ -17,6 +17,16 @@
   method call(dynamic a, dynamic b) → dynamic {
     return a;
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method foo<S extends core::Object* = dynamic>((self::foo::S*, dynamic) →* self::foo::S* v) → void {}
 static method test() → void {
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/bug32866.dart.outline.expect b/pkg/front_end/testcases/general_nnbd_opt_out/bug32866.dart.outline.expect
index 6857612..2b46f66 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/bug32866.dart.outline.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/bug32866.dart.outline.expect
@@ -6,11 +6,31 @@
   synthetic constructor •() → self::B*
     ;
   abstract get f() → core::String*;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class A extends core::Object implements self::B {
   final field core::String* f;
   constructor •(core::String* f) → self::A*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field self::A* a;
 static method main() → dynamic
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/bug32866.dart.strong.expect b/pkg/front_end/testcases/general_nnbd_opt_out/bug32866.dart.strong.expect
index 03cb6b9..c70022d 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/bug32866.dart.strong.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/bug32866.dart.strong.expect
@@ -7,12 +7,32 @@
     : super core::Object::•()
     ;
   abstract get f() → core::String*;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class A extends core::Object implements self::B {
   final field core::String* f;
   constructor •(core::String* f) → self::A*
     : self::A::f = f, super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field self::A* a = new self::A::•("foo");
 static method main() → dynamic
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/bug32866.dart.strong.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/bug32866.dart.strong.transformed.expect
index 03cb6b9..c70022d 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/bug32866.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/bug32866.dart.strong.transformed.expect
@@ -7,12 +7,32 @@
     : super core::Object::•()
     ;
   abstract get f() → core::String*;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class A extends core::Object implements self::B {
   final field core::String* f;
   constructor •(core::String* f) → self::A*
     : self::A::f = f, super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field self::A* a = new self::A::•("foo");
 static method main() → dynamic
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/bug32866.dart.weak.expect b/pkg/front_end/testcases/general_nnbd_opt_out/bug32866.dart.weak.expect
index 03cb6b9..c70022d 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/bug32866.dart.weak.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/bug32866.dart.weak.expect
@@ -7,12 +7,32 @@
     : super core::Object::•()
     ;
   abstract get f() → core::String*;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class A extends core::Object implements self::B {
   final field core::String* f;
   constructor •(core::String* f) → self::A*
     : self::A::f = f, super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field self::A* a = new self::A::•("foo");
 static method main() → dynamic
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/bug32866.dart.weak.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/bug32866.dart.weak.transformed.expect
index 03cb6b9..c70022d 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/bug32866.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/bug32866.dart.weak.transformed.expect
@@ -7,12 +7,32 @@
     : super core::Object::•()
     ;
   abstract get f() → core::String*;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class A extends core::Object implements self::B {
   final field core::String* f;
   constructor •(core::String* f) → self::A*
     : self::A::f = f, super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field self::A* a = new self::A::•("foo");
 static method main() → dynamic
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/bug33099.dart.outline.expect b/pkg/front_end/testcases/general_nnbd_opt_out/bug33099.dart.outline.expect
index 48337e0..854ab83 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/bug33099.dart.outline.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/bug33099.dart.outline.expect
@@ -9,6 +9,16 @@
   const constructor •() → self::_FailingTest*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class MyTest extends core::Object {
   synthetic constructor •() → self::MyTest*
@@ -16,11 +26,31 @@
   @self::failingTest
   method foo() → void
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class _MyTest2&Object&MyTest = core::Object with self::MyTest /*isAnonymousMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::_MyTest2&Object&MyTest*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class MyTest2 extends self::_MyTest2&Object&MyTest {
   synthetic constructor •() → self::MyTest2*
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/bug33099.dart.strong.expect b/pkg/front_end/testcases/general_nnbd_opt_out/bug33099.dart.strong.expect
index fa1959d..ef40ee1 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/bug33099.dart.strong.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/bug33099.dart.strong.expect
@@ -9,6 +9,16 @@
   const constructor •() → self::_FailingTest*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class MyTest extends core::Object {
   synthetic constructor •() → self::MyTest*
@@ -16,11 +26,31 @@
     ;
   @#C1
   method foo() → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class _MyTest2&Object&MyTest = core::Object with self::MyTest /*isAnonymousMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::_MyTest2&Object&MyTest*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class MyTest2 extends self::_MyTest2&Object&MyTest {
   synthetic constructor •() → self::MyTest2*
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/bug33099.dart.strong.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/bug33099.dart.strong.transformed.expect
index 7c8800f..c847d06 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/bug33099.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/bug33099.dart.strong.transformed.expect
@@ -9,6 +9,16 @@
   const constructor •() → self::_FailingTest*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class MyTest extends core::Object {
   synthetic constructor •() → self::MyTest*
@@ -16,11 +26,31 @@
     ;
   @#C1
   method foo() → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class _MyTest2&Object&MyTest extends core::Object implements self::MyTest /*isAnonymousMixin,isEliminatedMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::_MyTest2&Object&MyTest*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
   @#C1
   method foo() → void {}
 }
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/bug33099.dart.weak.expect b/pkg/front_end/testcases/general_nnbd_opt_out/bug33099.dart.weak.expect
index fa1959d..ef40ee1 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/bug33099.dart.weak.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/bug33099.dart.weak.expect
@@ -9,6 +9,16 @@
   const constructor •() → self::_FailingTest*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class MyTest extends core::Object {
   synthetic constructor •() → self::MyTest*
@@ -16,11 +26,31 @@
     ;
   @#C1
   method foo() → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class _MyTest2&Object&MyTest = core::Object with self::MyTest /*isAnonymousMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::_MyTest2&Object&MyTest*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class MyTest2 extends self::_MyTest2&Object&MyTest {
   synthetic constructor •() → self::MyTest2*
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/bug33099.dart.weak.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/bug33099.dart.weak.transformed.expect
index 7c8800f..c847d06 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/bug33099.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/bug33099.dart.weak.transformed.expect
@@ -9,6 +9,16 @@
   const constructor •() → self::_FailingTest*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class MyTest extends core::Object {
   synthetic constructor •() → self::MyTest*
@@ -16,11 +26,31 @@
     ;
   @#C1
   method foo() → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class _MyTest2&Object&MyTest extends core::Object implements self::MyTest /*isAnonymousMixin,isEliminatedMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::_MyTest2&Object&MyTest*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
   @#C1
   method foo() → void {}
 }
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/bug33196.dart.strong.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/bug33196.dart.strong.transformed.expect
index 895484d..75b721f 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/bug33196.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/bug33196.dart.strong.transformed.expect
@@ -27,8 +27,8 @@
       asy::_completeOnAsyncReturn(:async_completer, :return_value);
       return;
     }
-    on dynamic catch(dynamic :exception, core::StackTrace* :stack_trace) {
-      :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+    on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
+      :async_completer.{asy::Completer::completeError}(exception, stack_trace);
     }
   :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/bug33196.dart.weak.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/bug33196.dart.weak.transformed.expect
index 895484d..75b721f 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/bug33196.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/bug33196.dart.weak.transformed.expect
@@ -27,8 +27,8 @@
       asy::_completeOnAsyncReturn(:async_completer, :return_value);
       return;
     }
-    on dynamic catch(dynamic :exception, core::StackTrace* :stack_trace) {
-      :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+    on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
+      :async_completer.{asy::Completer::completeError}(exception, stack_trace);
     }
   :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/bug33206.dart.outline.expect b/pkg/front_end/testcases/general_nnbd_opt_out/bug33206.dart.outline.expect
index e3de83d..b2e9eba 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/bug33206.dart.outline.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/bug33206.dart.outline.expect
@@ -12,12 +12,31 @@
     ;
   method toString() → core::String*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Y extends core::Object {
   synthetic constructor •() → self::Y*
     ;
   method f(dynamic _) → dynamic
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method f1() → asy::Future<core::List<core::Object*>*>*
   ;
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/bug33206.dart.strong.expect b/pkg/front_end/testcases/general_nnbd_opt_out/bug33206.dart.strong.expect
index 89809db..8653700 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/bug33206.dart.strong.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/bug33206.dart.strong.expect
@@ -13,12 +13,31 @@
     ;
   method toString() → core::String*
     return "X(${this.{self::X::x}}, ${this.{self::X::y}})";
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Y extends core::Object {
   synthetic constructor •() → self::Y*
     : super core::Object::•()
     ;
   method f(dynamic _) → dynamic {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method f1() → asy::Future<core::List<core::Object*>*>* async {
   return <core::Object*>[1];
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/bug33206.dart.strong.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/bug33206.dart.strong.transformed.expect
index fa92a38..dfedd80 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/bug33206.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/bug33206.dart.strong.transformed.expect
@@ -14,12 +14,31 @@
     ;
   method toString() → core::String*
     return "X(${this.{self::X::x}}, ${this.{self::X::y}})";
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Y extends core::Object {
   synthetic constructor •() → self::Y*
     : super core::Object::•()
     ;
   method f(dynamic _) → dynamic {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method f1() → asy::Future<core::List<core::Object*>*>* /* originally async */ {
   final asy::_AsyncAwaitCompleter<core::List<core::Object*>*>* :async_completer = new asy::_AsyncAwaitCompleter::•<core::List<core::Object*>*>();
@@ -39,8 +58,8 @@
       asy::_completeOnAsyncReturn(:async_completer, :return_value);
       return;
     }
-    on dynamic catch(dynamic :exception, core::StackTrace* :stack_trace) {
-      :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+    on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
+      :async_completer.{asy::Completer::completeError}(exception, stack_trace);
     }
   :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
@@ -68,8 +87,8 @@
       asy::_completeOnAsyncReturn(:async_completer, :return_value);
       return;
     }
-    on dynamic catch(dynamic :exception, core::StackTrace* :stack_trace) {
-      :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+    on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
+      :async_completer.{asy::Completer::completeError}(exception, stack_trace);
     }
   :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
@@ -101,8 +120,8 @@
       asy::_completeOnAsyncReturn(:async_completer, :return_value);
       return;
     }
-    on dynamic catch(dynamic :exception, core::StackTrace* :stack_trace) {
-      :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+    on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
+      :async_completer.{asy::Completer::completeError}(exception, stack_trace);
     }
   :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
@@ -129,8 +148,8 @@
       asy::_completeOnAsyncReturn(:async_completer, :return_value);
       return;
     }
-    on dynamic catch(dynamic :exception, core::StackTrace* :stack_trace) {
-      :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+    on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
+      :async_completer.{asy::Completer::completeError}(exception, stack_trace);
     }
   :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/bug33206.dart.weak.expect b/pkg/front_end/testcases/general_nnbd_opt_out/bug33206.dart.weak.expect
index 89809db..8653700 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/bug33206.dart.weak.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/bug33206.dart.weak.expect
@@ -13,12 +13,31 @@
     ;
   method toString() → core::String*
     return "X(${this.{self::X::x}}, ${this.{self::X::y}})";
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Y extends core::Object {
   synthetic constructor •() → self::Y*
     : super core::Object::•()
     ;
   method f(dynamic _) → dynamic {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method f1() → asy::Future<core::List<core::Object*>*>* async {
   return <core::Object*>[1];
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/bug33206.dart.weak.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/bug33206.dart.weak.transformed.expect
index fa92a38..dfedd80 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/bug33206.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/bug33206.dart.weak.transformed.expect
@@ -14,12 +14,31 @@
     ;
   method toString() → core::String*
     return "X(${this.{self::X::x}}, ${this.{self::X::y}})";
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Y extends core::Object {
   synthetic constructor •() → self::Y*
     : super core::Object::•()
     ;
   method f(dynamic _) → dynamic {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method f1() → asy::Future<core::List<core::Object*>*>* /* originally async */ {
   final asy::_AsyncAwaitCompleter<core::List<core::Object*>*>* :async_completer = new asy::_AsyncAwaitCompleter::•<core::List<core::Object*>*>();
@@ -39,8 +58,8 @@
       asy::_completeOnAsyncReturn(:async_completer, :return_value);
       return;
     }
-    on dynamic catch(dynamic :exception, core::StackTrace* :stack_trace) {
-      :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+    on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
+      :async_completer.{asy::Completer::completeError}(exception, stack_trace);
     }
   :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
@@ -68,8 +87,8 @@
       asy::_completeOnAsyncReturn(:async_completer, :return_value);
       return;
     }
-    on dynamic catch(dynamic :exception, core::StackTrace* :stack_trace) {
-      :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+    on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
+      :async_completer.{asy::Completer::completeError}(exception, stack_trace);
     }
   :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
@@ -101,8 +120,8 @@
       asy::_completeOnAsyncReturn(:async_completer, :return_value);
       return;
     }
-    on dynamic catch(dynamic :exception, core::StackTrace* :stack_trace) {
-      :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+    on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
+      :async_completer.{asy::Completer::completeError}(exception, stack_trace);
     }
   :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
@@ -129,8 +148,8 @@
       asy::_completeOnAsyncReturn(:async_completer, :return_value);
       return;
     }
-    on dynamic catch(dynamic :exception, core::StackTrace* :stack_trace) {
-      :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+    on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
+      :async_completer.{asy::Completer::completeError}(exception, stack_trace);
     }
   :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/bug33298.dart.outline.expect b/pkg/front_end/testcases/general_nnbd_opt_out/bug33298.dart.outline.expect
index 751cd8d..936d7a1 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/bug33298.dart.outline.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/bug33298.dart.outline.expect
@@ -7,18 +7,48 @@
     ;
   method call(core::String* s) → core::String*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::B<self::B::T*>*
     ;
   method call(generic-covariant-impl self::B::T* t) → self::B::T*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C extends core::Object {
   synthetic constructor •() → self::C*
     ;
   method call<T extends core::Object* = dynamic>(self::C::call::T* t) → self::C::call::T*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method test() → dynamic
   ;
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/bug33298.dart.strong.expect b/pkg/front_end/testcases/general_nnbd_opt_out/bug33298.dart.strong.expect
index 83deb33..477789a 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/bug33298.dart.strong.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/bug33298.dart.strong.expect
@@ -15,6 +15,16 @@
     ;
   method call(core::String* s) → core::String*
     return "${s}${s}";
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::B<self::B::T*>*
@@ -22,6 +32,16 @@
     ;
   method call(generic-covariant-impl self::B::T* t) → self::B::T*
     return t;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C extends core::Object {
   synthetic constructor •() → self::C*
@@ -29,6 +49,16 @@
     ;
   method call<T extends core::Object* = dynamic>(self::C::call::T* t) → self::C::call::T*
     return t;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method test() → dynamic {
   self::A* a = new self::A::•();
@@ -41,6 +71,6 @@
   core::List<core::String*>* list5 = <core::String*>["a", "b", "c"].{core::Iterable::map}<core::String*>(c.{self::C::call}<core::String*>).{core::Iterable::toList}();
   core::List<core::String*>* list6 = <core::String*>["a", "b", "c"].{core::Iterable::map}<dynamic>(let final<BottomType> #t3 = invalid-expression "pkg/front_end/testcases/general_nnbd_opt_out/bug33298.dart:30:44: Error: The argument type 'T Function<T>(T)' can't be assigned to the parameter type 'dynamic Function(String)'.
   List<String> list6 = ['a', 'b', 'c'].map(c).toList();
-                                           ^" in (let final self::C* #t4 = c in #t4.==(null) ?{<T extends core::Object* = dynamic>(T*) →* T*} null : #t4.{self::C::call}) as{TypeError} (core::String*) →* dynamic).{core::Iterable::toList}() as{TypeError} core::List<core::String*>*;
+                                           ^" in (let final self::C* #t4 = c in #t4.==(null) ?{<T extends core::Object* = dynamic>(T*) →* T*} null : #t4.{self::C::call}) as{TypeError} (core::String*) → dynamic).{core::Iterable::toList}() as{TypeError} core::List<core::String*>*;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/bug33298.dart.strong.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/bug33298.dart.strong.transformed.expect
index 83deb33..477789a 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/bug33298.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/bug33298.dart.strong.transformed.expect
@@ -15,6 +15,16 @@
     ;
   method call(core::String* s) → core::String*
     return "${s}${s}";
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::B<self::B::T*>*
@@ -22,6 +32,16 @@
     ;
   method call(generic-covariant-impl self::B::T* t) → self::B::T*
     return t;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C extends core::Object {
   synthetic constructor •() → self::C*
@@ -29,6 +49,16 @@
     ;
   method call<T extends core::Object* = dynamic>(self::C::call::T* t) → self::C::call::T*
     return t;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method test() → dynamic {
   self::A* a = new self::A::•();
@@ -41,6 +71,6 @@
   core::List<core::String*>* list5 = <core::String*>["a", "b", "c"].{core::Iterable::map}<core::String*>(c.{self::C::call}<core::String*>).{core::Iterable::toList}();
   core::List<core::String*>* list6 = <core::String*>["a", "b", "c"].{core::Iterable::map}<dynamic>(let final<BottomType> #t3 = invalid-expression "pkg/front_end/testcases/general_nnbd_opt_out/bug33298.dart:30:44: Error: The argument type 'T Function<T>(T)' can't be assigned to the parameter type 'dynamic Function(String)'.
   List<String> list6 = ['a', 'b', 'c'].map(c).toList();
-                                           ^" in (let final self::C* #t4 = c in #t4.==(null) ?{<T extends core::Object* = dynamic>(T*) →* T*} null : #t4.{self::C::call}) as{TypeError} (core::String*) →* dynamic).{core::Iterable::toList}() as{TypeError} core::List<core::String*>*;
+                                           ^" in (let final self::C* #t4 = c in #t4.==(null) ?{<T extends core::Object* = dynamic>(T*) →* T*} null : #t4.{self::C::call}) as{TypeError} (core::String*) → dynamic).{core::Iterable::toList}() as{TypeError} core::List<core::String*>*;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/bug33298.dart.weak.expect b/pkg/front_end/testcases/general_nnbd_opt_out/bug33298.dart.weak.expect
index 83deb33..477789a 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/bug33298.dart.weak.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/bug33298.dart.weak.expect
@@ -15,6 +15,16 @@
     ;
   method call(core::String* s) → core::String*
     return "${s}${s}";
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::B<self::B::T*>*
@@ -22,6 +32,16 @@
     ;
   method call(generic-covariant-impl self::B::T* t) → self::B::T*
     return t;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C extends core::Object {
   synthetic constructor •() → self::C*
@@ -29,6 +49,16 @@
     ;
   method call<T extends core::Object* = dynamic>(self::C::call::T* t) → self::C::call::T*
     return t;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method test() → dynamic {
   self::A* a = new self::A::•();
@@ -41,6 +71,6 @@
   core::List<core::String*>* list5 = <core::String*>["a", "b", "c"].{core::Iterable::map}<core::String*>(c.{self::C::call}<core::String*>).{core::Iterable::toList}();
   core::List<core::String*>* list6 = <core::String*>["a", "b", "c"].{core::Iterable::map}<dynamic>(let final<BottomType> #t3 = invalid-expression "pkg/front_end/testcases/general_nnbd_opt_out/bug33298.dart:30:44: Error: The argument type 'T Function<T>(T)' can't be assigned to the parameter type 'dynamic Function(String)'.
   List<String> list6 = ['a', 'b', 'c'].map(c).toList();
-                                           ^" in (let final self::C* #t4 = c in #t4.==(null) ?{<T extends core::Object* = dynamic>(T*) →* T*} null : #t4.{self::C::call}) as{TypeError} (core::String*) →* dynamic).{core::Iterable::toList}() as{TypeError} core::List<core::String*>*;
+                                           ^" in (let final self::C* #t4 = c in #t4.==(null) ?{<T extends core::Object* = dynamic>(T*) →* T*} null : #t4.{self::C::call}) as{TypeError} (core::String*) → dynamic).{core::Iterable::toList}() as{TypeError} core::List<core::String*>*;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/bug33298.dart.weak.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/bug33298.dart.weak.transformed.expect
index 83deb33..477789a 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/bug33298.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/bug33298.dart.weak.transformed.expect
@@ -15,6 +15,16 @@
     ;
   method call(core::String* s) → core::String*
     return "${s}${s}";
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::B<self::B::T*>*
@@ -22,6 +32,16 @@
     ;
   method call(generic-covariant-impl self::B::T* t) → self::B::T*
     return t;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C extends core::Object {
   synthetic constructor •() → self::C*
@@ -29,6 +49,16 @@
     ;
   method call<T extends core::Object* = dynamic>(self::C::call::T* t) → self::C::call::T*
     return t;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method test() → dynamic {
   self::A* a = new self::A::•();
@@ -41,6 +71,6 @@
   core::List<core::String*>* list5 = <core::String*>["a", "b", "c"].{core::Iterable::map}<core::String*>(c.{self::C::call}<core::String*>).{core::Iterable::toList}();
   core::List<core::String*>* list6 = <core::String*>["a", "b", "c"].{core::Iterable::map}<dynamic>(let final<BottomType> #t3 = invalid-expression "pkg/front_end/testcases/general_nnbd_opt_out/bug33298.dart:30:44: Error: The argument type 'T Function<T>(T)' can't be assigned to the parameter type 'dynamic Function(String)'.
   List<String> list6 = ['a', 'b', 'c'].map(c).toList();
-                                           ^" in (let final self::C* #t4 = c in #t4.==(null) ?{<T extends core::Object* = dynamic>(T*) →* T*} null : #t4.{self::C::call}) as{TypeError} (core::String*) →* dynamic).{core::Iterable::toList}() as{TypeError} core::List<core::String*>*;
+                                           ^" in (let final self::C* #t4 = c in #t4.==(null) ?{<T extends core::Object* = dynamic>(T*) →* T*} null : #t4.{self::C::call}) as{TypeError} (core::String*) → dynamic).{core::Iterable::toList}() as{TypeError} core::List<core::String*>*;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/bug34511.dart.outline.expect b/pkg/front_end/testcases/general_nnbd_opt_out/bug34511.dart.outline.expect
index 678e133..7cd48e7 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/bug34511.dart.outline.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/bug34511.dart.outline.expect
@@ -5,11 +5,31 @@
 class A<X extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::A<self::A::X*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class _B&Object&A<Z extends core::Object* = dynamic> = core::Object with self::A<() →* self::_B&Object&A::Z*> /*isAnonymousMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::_B&Object&A<self::_B&Object&A::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B<Z extends core::Object* = dynamic> extends self::_B&Object&A<self::B::Z*> {
   synthetic constructor •() → self::B<self::B::Z*>*
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/bug34511.dart.strong.expect b/pkg/front_end/testcases/general_nnbd_opt_out/bug34511.dart.strong.expect
index 5e3f196..23fa2c2 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/bug34511.dart.strong.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/bug34511.dart.strong.expect
@@ -6,11 +6,31 @@
   synthetic constructor •() → self::A<self::A::X*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class _B&Object&A<Z extends core::Object* = dynamic> = core::Object with self::A<() →* self::_B&Object&A::Z*> /*isAnonymousMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::_B&Object&A<self::_B&Object&A::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B<Z extends core::Object* = dynamic> extends self::_B&Object&A<self::B::Z*> {
   synthetic constructor •() → self::B<self::B::Z*>*
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/bug34511.dart.strong.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/bug34511.dart.strong.transformed.expect
index 8fb87ff..7ad4cf3 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/bug34511.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/bug34511.dart.strong.transformed.expect
@@ -6,11 +6,31 @@
   synthetic constructor •() → self::A<self::A::X*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class _B&Object&A<Z extends core::Object* = dynamic> extends core::Object implements self::A<() →* self::_B&Object&A::Z*> /*isAnonymousMixin,isEliminatedMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::_B&Object&A<self::_B&Object&A::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B<Z extends core::Object* = dynamic> extends self::_B&Object&A<self::B::Z*> {
   synthetic constructor •() → self::B<self::B::Z*>*
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/bug34511.dart.weak.expect b/pkg/front_end/testcases/general_nnbd_opt_out/bug34511.dart.weak.expect
index 5e3f196..23fa2c2 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/bug34511.dart.weak.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/bug34511.dart.weak.expect
@@ -6,11 +6,31 @@
   synthetic constructor •() → self::A<self::A::X*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class _B&Object&A<Z extends core::Object* = dynamic> = core::Object with self::A<() →* self::_B&Object&A::Z*> /*isAnonymousMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::_B&Object&A<self::_B&Object&A::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B<Z extends core::Object* = dynamic> extends self::_B&Object&A<self::B::Z*> {
   synthetic constructor •() → self::B<self::B::Z*>*
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/bug34511.dart.weak.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/bug34511.dart.weak.transformed.expect
index 8fb87ff..7ad4cf3 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/bug34511.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/bug34511.dart.weak.transformed.expect
@@ -6,11 +6,31 @@
   synthetic constructor •() → self::A<self::A::X*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class _B&Object&A<Z extends core::Object* = dynamic> extends core::Object implements self::A<() →* self::_B&Object&A::Z*> /*isAnonymousMixin,isEliminatedMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::_B&Object&A<self::_B&Object&A::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B<Z extends core::Object* = dynamic> extends self::_B&Object&A<self::B::Z*> {
   synthetic constructor •() → self::B<self::B::Z*>*
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/bug35470.dart.outline.expect b/pkg/front_end/testcases/general_nnbd_opt_out/bug35470.dart.outline.expect
index c18a369..457def3 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/bug35470.dart.outline.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/bug35470.dart.outline.expect
@@ -7,6 +7,16 @@
     ;
   method foo<generic-covariant-impl Y extends self::A::X* = self::A::X*>() → dynamic
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A<dynamic> {
   synthetic constructor •() → self::B*
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/bug35470.dart.strong.expect b/pkg/front_end/testcases/general_nnbd_opt_out/bug35470.dart.strong.expect
index dd00a9d..6f7c9bb 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/bug35470.dart.strong.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/bug35470.dart.strong.expect
@@ -7,6 +7,16 @@
     : super core::Object::•()
     ;
   method foo<generic-covariant-impl Y extends self::A::X* = self::A::X*>() → dynamic {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A<dynamic> {
   synthetic constructor •() → self::B*
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/bug35470.dart.strong.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/bug35470.dart.strong.transformed.expect
index dd00a9d..6f7c9bb 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/bug35470.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/bug35470.dart.strong.transformed.expect
@@ -7,6 +7,16 @@
     : super core::Object::•()
     ;
   method foo<generic-covariant-impl Y extends self::A::X* = self::A::X*>() → dynamic {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A<dynamic> {
   synthetic constructor •() → self::B*
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/bug35470.dart.weak.expect b/pkg/front_end/testcases/general_nnbd_opt_out/bug35470.dart.weak.expect
index dd00a9d..6f7c9bb 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/bug35470.dart.weak.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/bug35470.dart.weak.expect
@@ -7,6 +7,16 @@
     : super core::Object::•()
     ;
   method foo<generic-covariant-impl Y extends self::A::X* = self::A::X*>() → dynamic {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A<dynamic> {
   synthetic constructor •() → self::B*
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/bug35470.dart.weak.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/bug35470.dart.weak.transformed.expect
index dd00a9d..6f7c9bb 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/bug35470.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/bug35470.dart.weak.transformed.expect
@@ -7,6 +7,16 @@
     : super core::Object::•()
     ;
   method foo<generic-covariant-impl Y extends self::A::X* = self::A::X*>() → dynamic {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A<dynamic> {
   synthetic constructor •() → self::B*
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/bug37476.dart.outline.expect b/pkg/front_end/testcases/general_nnbd_opt_out/bug37476.dart.outline.expect
index 50be2c0..bce42c7 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/bug37476.dart.outline.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/bug37476.dart.outline.expect
@@ -7,12 +7,32 @@
     ;
   method foo() → <S extends self::A::T* = dynamic>(S*) →* void
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B<T extends core::num* = core::num*> extends core::Object {
   synthetic constructor •() → self::B<self::B::T*>*
     ;
   method foo() → (self::B::T*) →* void
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field self::A<core::num*>* a;
 static field self::B<core::num*>* b;
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/bug37476.dart.strong.expect b/pkg/front_end/testcases/general_nnbd_opt_out/bug37476.dart.strong.expect
index 657464a..c3ee6c0 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/bug37476.dart.strong.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/bug37476.dart.strong.expect
@@ -10,6 +10,16 @@
     core::print("foo: T = ${self::A::T*}");
     return <S extends self::A::T* = self::A::T*>(S* a) → core::Null? {};
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B<T extends core::num* = core::num*> extends core::Object {
   synthetic constructor •() → self::B<self::B::T*>*
@@ -19,6 +29,16 @@
     core::print("foo: T = ${self::B::T*}");
     return (self::B::T* a) → core::Null? {};
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field self::A<core::num*>* a = new self::A::•<core::int*>();
 static field self::B<core::num*>* b = new self::B::•<core::int*>();
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/bug37476.dart.strong.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/bug37476.dart.strong.transformed.expect
index 657464a..c3ee6c0 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/bug37476.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/bug37476.dart.strong.transformed.expect
@@ -10,6 +10,16 @@
     core::print("foo: T = ${self::A::T*}");
     return <S extends self::A::T* = self::A::T*>(S* a) → core::Null? {};
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B<T extends core::num* = core::num*> extends core::Object {
   synthetic constructor •() → self::B<self::B::T*>*
@@ -19,6 +29,16 @@
     core::print("foo: T = ${self::B::T*}");
     return (self::B::T* a) → core::Null? {};
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field self::A<core::num*>* a = new self::A::•<core::int*>();
 static field self::B<core::num*>* b = new self::B::•<core::int*>();
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/bug37476.dart.weak.expect b/pkg/front_end/testcases/general_nnbd_opt_out/bug37476.dart.weak.expect
index 657464a..c3ee6c0 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/bug37476.dart.weak.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/bug37476.dart.weak.expect
@@ -10,6 +10,16 @@
     core::print("foo: T = ${self::A::T*}");
     return <S extends self::A::T* = self::A::T*>(S* a) → core::Null? {};
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B<T extends core::num* = core::num*> extends core::Object {
   synthetic constructor •() → self::B<self::B::T*>*
@@ -19,6 +29,16 @@
     core::print("foo: T = ${self::B::T*}");
     return (self::B::T* a) → core::Null? {};
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field self::A<core::num*>* a = new self::A::•<core::int*>();
 static field self::B<core::num*>* b = new self::B::•<core::int*>();
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/bug37476.dart.weak.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/bug37476.dart.weak.transformed.expect
index 657464a..c3ee6c0 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/bug37476.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/bug37476.dart.weak.transformed.expect
@@ -10,6 +10,16 @@
     core::print("foo: T = ${self::A::T*}");
     return <S extends self::A::T* = self::A::T*>(S* a) → core::Null? {};
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B<T extends core::num* = core::num*> extends core::Object {
   synthetic constructor •() → self::B<self::B::T*>*
@@ -19,6 +29,16 @@
     core::print("foo: T = ${self::B::T*}");
     return (self::B::T* a) → core::Null? {};
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field self::A<core::num*>* a = new self::A::•<core::int*>();
 static field self::B<core::num*>* b = new self::B::•<core::int*>();
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/call.dart.outline.expect b/pkg/front_end/testcases/general_nnbd_opt_out/call.dart.outline.expect
index 5aba50d..3fcf480 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/call.dart.outline.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/call.dart.outline.expect
@@ -7,12 +7,32 @@
     ;
   method call(dynamic x) → dynamic
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class CallableGetter extends core::Object {
   synthetic constructor •() → self::CallableGetter*
     ;
   get call() → dynamic
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/call.dart.strong.expect b/pkg/front_end/testcases/general_nnbd_opt_out/call.dart.strong.expect
index 675a501..84b871a 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/call.dart.strong.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/call.dart.strong.expect
@@ -56,6 +56,16 @@
   method call(dynamic x) → dynamic {
     return "string";
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class CallableGetter extends core::Object {
   synthetic constructor •() → self::CallableGetter*
@@ -63,6 +73,16 @@
     ;
   get call() → dynamic
     return new self::Callable::•();
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   (dynamic) →* dynamic closure = (dynamic x) → dynamic => x;
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/call.dart.weak.expect b/pkg/front_end/testcases/general_nnbd_opt_out/call.dart.weak.expect
index 675a501..84b871a 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/call.dart.weak.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/call.dart.weak.expect
@@ -56,6 +56,16 @@
   method call(dynamic x) → dynamic {
     return "string";
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class CallableGetter extends core::Object {
   synthetic constructor •() → self::CallableGetter*
@@ -63,6 +73,16 @@
     ;
   get call() → dynamic
     return new self::Callable::•();
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   (dynamic) →* dynamic closure = (dynamic x) → dynamic => x;
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/candidate_found.dart.outline.expect b/pkg/front_end/testcases/general_nnbd_opt_out/candidate_found.dart.outline.expect
index 5378db0..7d0338f 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/candidate_found.dart.outline.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/candidate_found.dart.outline.expect
@@ -11,6 +11,16 @@
     ;
   static method staticMethod(core::int* x) → void
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method test() → dynamic
   ;
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/candidate_found.dart.strong.expect b/pkg/front_end/testcases/general_nnbd_opt_out/candidate_found.dart.strong.expect
index f2a599d..2861009 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/candidate_found.dart.strong.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/candidate_found.dart.strong.expect
@@ -51,6 +51,16 @@
     : super core::Object::•() {}
   method method(core::int* x) → void {}
   static method staticMethod(core::int* x) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method test() → dynamic {
   invalid-expression "pkg/front_end/testcases/general_nnbd_opt_out/candidate_found.dart:18:11: Error: Too few positional arguments: 1 required, 0 given.
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/candidate_found.dart.weak.expect b/pkg/front_end/testcases/general_nnbd_opt_out/candidate_found.dart.weak.expect
index f2a599d..2861009 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/candidate_found.dart.weak.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/candidate_found.dart.weak.expect
@@ -51,6 +51,16 @@
     : super core::Object::•() {}
   method method(core::int* x) → void {}
   static method staticMethod(core::int* x) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method test() → dynamic {
   invalid-expression "pkg/front_end/testcases/general_nnbd_opt_out/candidate_found.dart:18:11: Error: Too few positional arguments: 1 required, 0 given.
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/check_deferred_allocation.dart.outline.expect b/pkg/front_end/testcases/general_nnbd_opt_out/check_deferred_allocation.dart.outline.expect
index 37e88f3..bb7f296 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/check_deferred_allocation.dart.outline.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/check_deferred_allocation.dart.outline.expect
@@ -18,6 +18,16 @@
     ;
   static method m() → core::int*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field core::int* x;
 static method m(dynamic x) → dynamic
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/check_deferred_allocation.dart.strong.expect b/pkg/front_end/testcases/general_nnbd_opt_out/check_deferred_allocation.dart.strong.expect
index c938f4c..1623b38 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/check_deferred_allocation.dart.strong.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/check_deferred_allocation.dart.strong.expect
@@ -21,6 +21,16 @@
     ;
   static method m() → core::int*
     return 2;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field core::int* x = 0;
 static method m(dynamic x) → dynamic
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/check_deferred_allocation.dart.strong.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/check_deferred_allocation.dart.strong.transformed.expect
index c29f5c2..c231f36 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/check_deferred_allocation.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/check_deferred_allocation.dart.strong.transformed.expect
@@ -21,6 +21,16 @@
     ;
   static method m() → core::int*
     return 2;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field core::int* x = 0;
 static method m(dynamic x) → dynamic
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/check_deferred_allocation.dart.weak.expect b/pkg/front_end/testcases/general_nnbd_opt_out/check_deferred_allocation.dart.weak.expect
index c938f4c..1623b38 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/check_deferred_allocation.dart.weak.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/check_deferred_allocation.dart.weak.expect
@@ -21,6 +21,16 @@
     ;
   static method m() → core::int*
     return 2;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field core::int* x = 0;
 static method m(dynamic x) → dynamic
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/check_deferred_allocation.dart.weak.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/check_deferred_allocation.dart.weak.transformed.expect
index c29f5c2..c231f36 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/check_deferred_allocation.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/check_deferred_allocation.dart.weak.transformed.expect
@@ -21,6 +21,16 @@
     ;
   static method m() → core::int*
     return 2;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field core::int* x = 0;
 static method m(dynamic x) → dynamic
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/check_deferred_as_check.dart.outline.expect b/pkg/front_end/testcases/general_nnbd_opt_out/check_deferred_as_check.dart.outline.expect
index efd56f1..0bd20d3 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/check_deferred_as_check.dart.outline.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/check_deferred_as_check.dart.outline.expect
@@ -18,6 +18,16 @@
     ;
   static method m() → core::int*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field core::int* x;
 static method m(dynamic x) → dynamic
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/check_deferred_as_check.dart.strong.expect b/pkg/front_end/testcases/general_nnbd_opt_out/check_deferred_as_check.dart.strong.expect
index cf59c90..ab29058 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/check_deferred_as_check.dart.strong.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/check_deferred_as_check.dart.strong.expect
@@ -28,6 +28,16 @@
     ;
   static method m() → core::int*
     return 2;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field core::int* x = 0;
 static method m(dynamic x) → dynamic
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/check_deferred_as_check.dart.strong.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/check_deferred_as_check.dart.strong.transformed.expect
index cf59c90..ab29058 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/check_deferred_as_check.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/check_deferred_as_check.dart.strong.transformed.expect
@@ -28,6 +28,16 @@
     ;
   static method m() → core::int*
     return 2;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field core::int* x = 0;
 static method m(dynamic x) → dynamic
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/check_deferred_as_check.dart.weak.expect b/pkg/front_end/testcases/general_nnbd_opt_out/check_deferred_as_check.dart.weak.expect
index cf59c90..ab29058 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/check_deferred_as_check.dart.weak.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/check_deferred_as_check.dart.weak.expect
@@ -28,6 +28,16 @@
     ;
   static method m() → core::int*
     return 2;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field core::int* x = 0;
 static method m(dynamic x) → dynamic
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/check_deferred_as_check.dart.weak.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/check_deferred_as_check.dart.weak.transformed.expect
index cf59c90..ab29058 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/check_deferred_as_check.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/check_deferred_as_check.dart.weak.transformed.expect
@@ -28,6 +28,16 @@
     ;
   static method m() → core::int*
     return 2;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field core::int* x = 0;
 static method m(dynamic x) → dynamic
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/check_deferred_before_args.dart.outline.expect b/pkg/front_end/testcases/general_nnbd_opt_out/check_deferred_before_args.dart.outline.expect
index 9871382..fd7e375 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/check_deferred_before_args.dart.outline.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/check_deferred_before_args.dart.outline.expect
@@ -20,6 +20,16 @@
     ;
   static method m() → core::int*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field core::int* x;
 static method m(dynamic x) → dynamic
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/check_deferred_before_args.dart.strong.expect b/pkg/front_end/testcases/general_nnbd_opt_out/check_deferred_before_args.dart.strong.expect
index 5c59c15..8717020 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/check_deferred_before_args.dart.strong.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/check_deferred_before_args.dart.strong.expect
@@ -24,6 +24,16 @@
     ;
   static method m() → core::int*
     return 2;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field core::int* x = 0;
 static method m(dynamic x) → dynamic
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/check_deferred_before_args.dart.strong.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/check_deferred_before_args.dart.strong.transformed.expect
index 441b505..b26fb17 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/check_deferred_before_args.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/check_deferred_before_args.dart.strong.transformed.expect
@@ -24,6 +24,16 @@
     ;
   static method m() → core::int*
     return 2;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field core::int* x = 0;
 static method m(dynamic x) → dynamic
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/check_deferred_before_args.dart.weak.expect b/pkg/front_end/testcases/general_nnbd_opt_out/check_deferred_before_args.dart.weak.expect
index 5c59c15..8717020 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/check_deferred_before_args.dart.weak.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/check_deferred_before_args.dart.weak.expect
@@ -24,6 +24,16 @@
     ;
   static method m() → core::int*
     return 2;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field core::int* x = 0;
 static method m(dynamic x) → dynamic
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/check_deferred_before_args.dart.weak.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/check_deferred_before_args.dart.weak.transformed.expect
index 441b505..b26fb17 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/check_deferred_before_args.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/check_deferred_before_args.dart.weak.transformed.expect
@@ -24,6 +24,16 @@
     ;
   static method m() → core::int*
     return 2;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field core::int* x = 0;
 static method m(dynamic x) → dynamic
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/check_deferred_before_args2.dart.outline.expect b/pkg/front_end/testcases/general_nnbd_opt_out/check_deferred_before_args2.dart.outline.expect
index 37e88f3..bb7f296 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/check_deferred_before_args2.dart.outline.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/check_deferred_before_args2.dart.outline.expect
@@ -18,6 +18,16 @@
     ;
   static method m() → core::int*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field core::int* x;
 static method m(dynamic x) → dynamic
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/check_deferred_before_args2.dart.strong.expect b/pkg/front_end/testcases/general_nnbd_opt_out/check_deferred_before_args2.dart.strong.expect
index 4c5305e..930ad9b 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/check_deferred_before_args2.dart.strong.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/check_deferred_before_args2.dart.strong.expect
@@ -20,6 +20,16 @@
     ;
   static method m() → core::int*
     return 2;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field core::int* x = 0;
 static method m(dynamic x) → dynamic
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/check_deferred_before_args2.dart.strong.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/check_deferred_before_args2.dart.strong.transformed.expect
index 1164433..8f401c4 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/check_deferred_before_args2.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/check_deferred_before_args2.dart.strong.transformed.expect
@@ -27,8 +27,8 @@
       asy::_completeOnAsyncReturn(:async_completer, :return_value);
       return;
     }
-    on dynamic catch(dynamic :exception, core::StackTrace* :stack_trace) {
-      :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+    on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
+      :async_completer.{asy::Completer::completeError}(exception, stack_trace);
     }
   :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
@@ -48,6 +48,16 @@
     ;
   static method m() → core::int*
     return 2;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field core::int* x = 0;
 static method m(dynamic x) → dynamic
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/check_deferred_before_args2.dart.weak.expect b/pkg/front_end/testcases/general_nnbd_opt_out/check_deferred_before_args2.dart.weak.expect
index 4c5305e..930ad9b 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/check_deferred_before_args2.dart.weak.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/check_deferred_before_args2.dart.weak.expect
@@ -20,6 +20,16 @@
     ;
   static method m() → core::int*
     return 2;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field core::int* x = 0;
 static method m(dynamic x) → dynamic
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/check_deferred_before_args2.dart.weak.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/check_deferred_before_args2.dart.weak.transformed.expect
index 1164433..8f401c4 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/check_deferred_before_args2.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/check_deferred_before_args2.dart.weak.transformed.expect
@@ -27,8 +27,8 @@
       asy::_completeOnAsyncReturn(:async_completer, :return_value);
       return;
     }
-    on dynamic catch(dynamic :exception, core::StackTrace* :stack_trace) {
-      :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+    on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
+      :async_completer.{asy::Completer::completeError}(exception, stack_trace);
     }
   :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
@@ -48,6 +48,16 @@
     ;
   static method m() → core::int*
     return 2;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field core::int* x = 0;
 static method m(dynamic x) → dynamic
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/check_deferred_before_call.dart.outline.expect b/pkg/front_end/testcases/general_nnbd_opt_out/check_deferred_before_call.dart.outline.expect
index 37e88f3..bb7f296 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/check_deferred_before_call.dart.outline.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/check_deferred_before_call.dart.outline.expect
@@ -18,6 +18,16 @@
     ;
   static method m() → core::int*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field core::int* x;
 static method m(dynamic x) → dynamic
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/check_deferred_before_call.dart.strong.expect b/pkg/front_end/testcases/general_nnbd_opt_out/check_deferred_before_call.dart.strong.expect
index 8f1f75e..240df3b 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/check_deferred_before_call.dart.strong.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/check_deferred_before_call.dart.strong.expect
@@ -20,6 +20,16 @@
     ;
   static method m() → core::int*
     return 2;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field core::int* x = 0;
 static method m(dynamic x) → dynamic
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/check_deferred_before_call.dart.strong.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/check_deferred_before_call.dart.strong.transformed.expect
index 6654a78..bf6a74c 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/check_deferred_before_call.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/check_deferred_before_call.dart.strong.transformed.expect
@@ -21,6 +21,16 @@
     ;
   static method m() → core::int*
     return 2;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field core::int* x = 0;
 static method m(dynamic x) → dynamic
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/check_deferred_before_call.dart.weak.expect b/pkg/front_end/testcases/general_nnbd_opt_out/check_deferred_before_call.dart.weak.expect
index 8f1f75e..240df3b 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/check_deferred_before_call.dart.weak.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/check_deferred_before_call.dart.weak.expect
@@ -20,6 +20,16 @@
     ;
   static method m() → core::int*
     return 2;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field core::int* x = 0;
 static method m(dynamic x) → dynamic
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/check_deferred_before_call.dart.weak.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/check_deferred_before_call.dart.weak.transformed.expect
index 6654a78..bf6a74c 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/check_deferred_before_call.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/check_deferred_before_call.dart.weak.transformed.expect
@@ -21,6 +21,16 @@
     ;
   static method m() → core::int*
     return 2;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field core::int* x = 0;
 static method m(dynamic x) → dynamic
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/check_deferred_before_write.dart.outline.expect b/pkg/front_end/testcases/general_nnbd_opt_out/check_deferred_before_write.dart.outline.expect
index 37e88f3..bb7f296 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/check_deferred_before_write.dart.outline.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/check_deferred_before_write.dart.outline.expect
@@ -18,6 +18,16 @@
     ;
   static method m() → core::int*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field core::int* x;
 static method m(dynamic x) → dynamic
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/check_deferred_before_write.dart.strong.expect b/pkg/front_end/testcases/general_nnbd_opt_out/check_deferred_before_write.dart.strong.expect
index 1c262ca..ebdadf68 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/check_deferred_before_write.dart.strong.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/check_deferred_before_write.dart.strong.expect
@@ -20,6 +20,16 @@
     ;
   static method m() → core::int*
     return 2;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field core::int* x = 0;
 static method m(dynamic x) → dynamic
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/check_deferred_before_write.dart.strong.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/check_deferred_before_write.dart.strong.transformed.expect
index 7696eb8..66884b6 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/check_deferred_before_write.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/check_deferred_before_write.dart.strong.transformed.expect
@@ -21,6 +21,16 @@
     ;
   static method m() → core::int*
     return 2;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field core::int* x = 0;
 static method m(dynamic x) → dynamic
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/check_deferred_before_write.dart.weak.expect b/pkg/front_end/testcases/general_nnbd_opt_out/check_deferred_before_write.dart.weak.expect
index 1c262ca..ebdadf68 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/check_deferred_before_write.dart.weak.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/check_deferred_before_write.dart.weak.expect
@@ -20,6 +20,16 @@
     ;
   static method m() → core::int*
     return 2;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field core::int* x = 0;
 static method m(dynamic x) → dynamic
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/check_deferred_before_write.dart.weak.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/check_deferred_before_write.dart.weak.transformed.expect
index 7696eb8..66884b6 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/check_deferred_before_write.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/check_deferred_before_write.dart.weak.transformed.expect
@@ -21,6 +21,16 @@
     ;
   static method m() → core::int*
     return 2;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field core::int* x = 0;
 static method m(dynamic x) → dynamic
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/check_deferred_is_check.dart.outline.expect b/pkg/front_end/testcases/general_nnbd_opt_out/check_deferred_is_check.dart.outline.expect
index efd56f1..0bd20d3 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/check_deferred_is_check.dart.outline.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/check_deferred_is_check.dart.outline.expect
@@ -18,6 +18,16 @@
     ;
   static method m() → core::int*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field core::int* x;
 static method m(dynamic x) → dynamic
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/check_deferred_is_check.dart.strong.expect b/pkg/front_end/testcases/general_nnbd_opt_out/check_deferred_is_check.dart.strong.expect
index de00ed1..b7ad748 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/check_deferred_is_check.dart.strong.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/check_deferred_is_check.dart.strong.expect
@@ -29,6 +29,16 @@
     ;
   static method m() → core::int*
     return 2;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field core::int* x = 0;
 static method m(dynamic x) → dynamic
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/check_deferred_is_check.dart.strong.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/check_deferred_is_check.dart.strong.transformed.expect
index de00ed1..b7ad748 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/check_deferred_is_check.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/check_deferred_is_check.dart.strong.transformed.expect
@@ -29,6 +29,16 @@
     ;
   static method m() → core::int*
     return 2;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field core::int* x = 0;
 static method m(dynamic x) → dynamic
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/check_deferred_is_check.dart.weak.expect b/pkg/front_end/testcases/general_nnbd_opt_out/check_deferred_is_check.dart.weak.expect
index de00ed1..b7ad748 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/check_deferred_is_check.dart.weak.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/check_deferred_is_check.dart.weak.expect
@@ -29,6 +29,16 @@
     ;
   static method m() → core::int*
     return 2;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field core::int* x = 0;
 static method m(dynamic x) → dynamic
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/check_deferred_is_check.dart.weak.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/check_deferred_is_check.dart.weak.transformed.expect
index de00ed1..b7ad748 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/check_deferred_is_check.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/check_deferred_is_check.dart.weak.transformed.expect
@@ -29,6 +29,16 @@
     ;
   static method m() → core::int*
     return 2;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field core::int* x = 0;
 static method m(dynamic x) → dynamic
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/check_deferred_read.dart.outline.expect b/pkg/front_end/testcases/general_nnbd_opt_out/check_deferred_read.dart.outline.expect
index 37e88f3..bb7f296 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/check_deferred_read.dart.outline.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/check_deferred_read.dart.outline.expect
@@ -18,6 +18,16 @@
     ;
   static method m() → core::int*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field core::int* x;
 static method m(dynamic x) → dynamic
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/check_deferred_read.dart.strong.expect b/pkg/front_end/testcases/general_nnbd_opt_out/check_deferred_read.dart.strong.expect
index ad29577..dfad17b 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/check_deferred_read.dart.strong.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/check_deferred_read.dart.strong.expect
@@ -21,6 +21,16 @@
     ;
   static method m() → core::int*
     return 2;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field core::int* x = 0;
 static method m(dynamic x) → dynamic
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/check_deferred_read.dart.strong.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/check_deferred_read.dart.strong.transformed.expect
index 0168dc7..9abc8e4 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/check_deferred_read.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/check_deferred_read.dart.strong.transformed.expect
@@ -21,6 +21,16 @@
     ;
   static method m() → core::int*
     return 2;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field core::int* x = 0;
 static method m(dynamic x) → dynamic
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/check_deferred_read.dart.weak.expect b/pkg/front_end/testcases/general_nnbd_opt_out/check_deferred_read.dart.weak.expect
index ad29577..dfad17b 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/check_deferred_read.dart.weak.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/check_deferred_read.dart.weak.expect
@@ -21,6 +21,16 @@
     ;
   static method m() → core::int*
     return 2;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field core::int* x = 0;
 static method m(dynamic x) → dynamic
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/check_deferred_read.dart.weak.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/check_deferred_read.dart.weak.transformed.expect
index 0168dc7..9abc8e4 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/check_deferred_read.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/check_deferred_read.dart.weak.transformed.expect
@@ -21,6 +21,16 @@
     ;
   static method m() → core::int*
     return 2;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field core::int* x = 0;
 static method m(dynamic x) → dynamic
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/check_deferred_read_static_field.dart.outline.expect b/pkg/front_end/testcases/general_nnbd_opt_out/check_deferred_read_static_field.dart.outline.expect
index 37e88f3..bb7f296 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/check_deferred_read_static_field.dart.outline.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/check_deferred_read_static_field.dart.outline.expect
@@ -18,6 +18,16 @@
     ;
   static method m() → core::int*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field core::int* x;
 static method m(dynamic x) → dynamic
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/check_deferred_read_static_field.dart.strong.expect b/pkg/front_end/testcases/general_nnbd_opt_out/check_deferred_read_static_field.dart.strong.expect
index 6a6523a..5bee81c 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/check_deferred_read_static_field.dart.strong.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/check_deferred_read_static_field.dart.strong.expect
@@ -21,6 +21,16 @@
     ;
   static method m() → core::int*
     return 2;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field core::int* x = 0;
 static method m(dynamic x) → dynamic
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/check_deferred_read_static_field.dart.strong.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/check_deferred_read_static_field.dart.strong.transformed.expect
index 3e431f4..82f8478 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/check_deferred_read_static_field.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/check_deferred_read_static_field.dart.strong.transformed.expect
@@ -21,6 +21,16 @@
     ;
   static method m() → core::int*
     return 2;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field core::int* x = 0;
 static method m(dynamic x) → dynamic
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/check_deferred_read_static_field.dart.weak.expect b/pkg/front_end/testcases/general_nnbd_opt_out/check_deferred_read_static_field.dart.weak.expect
index 6a6523a..5bee81c 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/check_deferred_read_static_field.dart.weak.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/check_deferred_read_static_field.dart.weak.expect
@@ -21,6 +21,16 @@
     ;
   static method m() → core::int*
     return 2;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field core::int* x = 0;
 static method m(dynamic x) → dynamic
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/check_deferred_read_static_field.dart.weak.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/check_deferred_read_static_field.dart.weak.transformed.expect
index 3e431f4..82f8478 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/check_deferred_read_static_field.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/check_deferred_read_static_field.dart.weak.transformed.expect
@@ -21,6 +21,16 @@
     ;
   static method m() → core::int*
     return 2;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field core::int* x = 0;
 static method m(dynamic x) → dynamic
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/check_deferred_read_type.dart.outline.expect b/pkg/front_end/testcases/general_nnbd_opt_out/check_deferred_read_type.dart.outline.expect
index 37e88f3..bb7f296 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/check_deferred_read_type.dart.outline.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/check_deferred_read_type.dart.outline.expect
@@ -18,6 +18,16 @@
     ;
   static method m() → core::int*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field core::int* x;
 static method m(dynamic x) → dynamic
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/check_deferred_read_type.dart.strong.expect b/pkg/front_end/testcases/general_nnbd_opt_out/check_deferred_read_type.dart.strong.expect
index 24e9309..c906808 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/check_deferred_read_type.dart.strong.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/check_deferred_read_type.dart.strong.expect
@@ -21,6 +21,16 @@
     ;
   static method m() → core::int*
     return 2;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field core::int* x = 0;
 static method m(dynamic x) → dynamic
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/check_deferred_read_type.dart.strong.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/check_deferred_read_type.dart.strong.transformed.expect
index d95a89a..37be2fa 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/check_deferred_read_type.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/check_deferred_read_type.dart.strong.transformed.expect
@@ -21,6 +21,16 @@
     ;
   static method m() → core::int*
     return 2;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field core::int* x = 0;
 static method m(dynamic x) → dynamic
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/check_deferred_read_type.dart.weak.expect b/pkg/front_end/testcases/general_nnbd_opt_out/check_deferred_read_type.dart.weak.expect
index 24e9309..c906808 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/check_deferred_read_type.dart.weak.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/check_deferred_read_type.dart.weak.expect
@@ -21,6 +21,16 @@
     ;
   static method m() → core::int*
     return 2;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field core::int* x = 0;
 static method m(dynamic x) → dynamic
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/check_deferred_read_type.dart.weak.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/check_deferred_read_type.dart.weak.transformed.expect
index d95a89a..37be2fa 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/check_deferred_read_type.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/check_deferred_read_type.dart.weak.transformed.expect
@@ -21,6 +21,16 @@
     ;
   static method m() → core::int*
     return 2;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field core::int* x = 0;
 static method m(dynamic x) → dynamic
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/check_deferred_static_method_call.dart.outline.expect b/pkg/front_end/testcases/general_nnbd_opt_out/check_deferred_static_method_call.dart.outline.expect
index 37e88f3..bb7f296 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/check_deferred_static_method_call.dart.outline.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/check_deferred_static_method_call.dart.outline.expect
@@ -18,6 +18,16 @@
     ;
   static method m() → core::int*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field core::int* x;
 static method m(dynamic x) → dynamic
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/check_deferred_static_method_call.dart.strong.expect b/pkg/front_end/testcases/general_nnbd_opt_out/check_deferred_static_method_call.dart.strong.expect
index 0bf2205..ce7698a 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/check_deferred_static_method_call.dart.strong.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/check_deferred_static_method_call.dart.strong.expect
@@ -21,6 +21,16 @@
     ;
   static method m() → core::int*
     return 2;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field core::int* x = 0;
 static method m(dynamic x) → dynamic
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/check_deferred_static_method_call.dart.strong.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/check_deferred_static_method_call.dart.strong.transformed.expect
index db62ffd..f4f863b 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/check_deferred_static_method_call.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/check_deferred_static_method_call.dart.strong.transformed.expect
@@ -21,6 +21,16 @@
     ;
   static method m() → core::int*
     return 2;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field core::int* x = 0;
 static method m(dynamic x) → dynamic
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/check_deferred_static_method_call.dart.weak.expect b/pkg/front_end/testcases/general_nnbd_opt_out/check_deferred_static_method_call.dart.weak.expect
index 0bf2205..ce7698a 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/check_deferred_static_method_call.dart.weak.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/check_deferred_static_method_call.dart.weak.expect
@@ -21,6 +21,16 @@
     ;
   static method m() → core::int*
     return 2;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field core::int* x = 0;
 static method m(dynamic x) → dynamic
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/check_deferred_static_method_call.dart.weak.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/check_deferred_static_method_call.dart.weak.transformed.expect
index db62ffd..f4f863b 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/check_deferred_static_method_call.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/check_deferred_static_method_call.dart.weak.transformed.expect
@@ -21,6 +21,16 @@
     ;
   static method m() → core::int*
     return 2;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field core::int* x = 0;
 static method m(dynamic x) → dynamic
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/check_deferred_type_declaration.dart.outline.expect b/pkg/front_end/testcases/general_nnbd_opt_out/check_deferred_type_declaration.dart.outline.expect
index 37e88f3..bb7f296 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/check_deferred_type_declaration.dart.outline.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/check_deferred_type_declaration.dart.outline.expect
@@ -18,6 +18,16 @@
     ;
   static method m() → core::int*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field core::int* x;
 static method m(dynamic x) → dynamic
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/check_deferred_type_declaration.dart.strong.expect b/pkg/front_end/testcases/general_nnbd_opt_out/check_deferred_type_declaration.dart.strong.expect
index 154da57..6ef5beb 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/check_deferred_type_declaration.dart.strong.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/check_deferred_type_declaration.dart.strong.expect
@@ -29,6 +29,16 @@
     ;
   static method m() → core::int*
     return 2;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field core::int* x = 0;
 static method m(dynamic x) → dynamic
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/check_deferred_type_declaration.dart.strong.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/check_deferred_type_declaration.dart.strong.transformed.expect
index 154da57..6ef5beb 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/check_deferred_type_declaration.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/check_deferred_type_declaration.dart.strong.transformed.expect
@@ -29,6 +29,16 @@
     ;
   static method m() → core::int*
     return 2;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field core::int* x = 0;
 static method m(dynamic x) → dynamic
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/check_deferred_type_declaration.dart.weak.expect b/pkg/front_end/testcases/general_nnbd_opt_out/check_deferred_type_declaration.dart.weak.expect
index 154da57..6ef5beb 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/check_deferred_type_declaration.dart.weak.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/check_deferred_type_declaration.dart.weak.expect
@@ -29,6 +29,16 @@
     ;
   static method m() → core::int*
     return 2;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field core::int* x = 0;
 static method m(dynamic x) → dynamic
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/check_deferred_type_declaration.dart.weak.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/check_deferred_type_declaration.dart.weak.transformed.expect
index 154da57..6ef5beb 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/check_deferred_type_declaration.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/check_deferred_type_declaration.dart.weak.transformed.expect
@@ -29,6 +29,16 @@
     ;
   static method m() → core::int*
     return 2;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field core::int* x = 0;
 static method m(dynamic x) → dynamic
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/circularity-via-initializing-formal.dart.outline.expect b/pkg/front_end/testcases/general_nnbd_opt_out/circularity-via-initializing-formal.dart.outline.expect
index ad2ead5..8bc0ae6 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/circularity-via-initializing-formal.dart.outline.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/circularity-via-initializing-formal.dart.outline.expect
@@ -14,6 +14,16 @@
   field self::C* f;
   constructor _circular(self::C* f) → self::C*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field self::C* x;
 static method main() → dynamic
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/circularity-via-initializing-formal.dart.strong.expect b/pkg/front_end/testcases/general_nnbd_opt_out/circularity-via-initializing-formal.dart.strong.expect
index d46c246..eac62fc 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/circularity-via-initializing-formal.dart.strong.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/circularity-via-initializing-formal.dart.strong.expect
@@ -15,6 +15,16 @@
   constructor _circular(self::C* f) → self::C*
     : self::C::f = f, super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field self::C* x = new self::C::_circular(null);
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/circularity-via-initializing-formal.dart.strong.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/circularity-via-initializing-formal.dart.strong.transformed.expect
index d46c246..eac62fc 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/circularity-via-initializing-formal.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/circularity-via-initializing-formal.dart.strong.transformed.expect
@@ -15,6 +15,16 @@
   constructor _circular(self::C* f) → self::C*
     : self::C::f = f, super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field self::C* x = new self::C::_circular(null);
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/circularity-via-initializing-formal.dart.weak.expect b/pkg/front_end/testcases/general_nnbd_opt_out/circularity-via-initializing-formal.dart.weak.expect
index d46c246..eac62fc 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/circularity-via-initializing-formal.dart.weak.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/circularity-via-initializing-formal.dart.weak.expect
@@ -15,6 +15,16 @@
   constructor _circular(self::C* f) → self::C*
     : self::C::f = f, super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field self::C* x = new self::C::_circular(null);
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/circularity-via-initializing-formal.dart.weak.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/circularity-via-initializing-formal.dart.weak.transformed.expect
index d46c246..eac62fc 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/circularity-via-initializing-formal.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/circularity-via-initializing-formal.dart.weak.transformed.expect
@@ -15,6 +15,16 @@
   constructor _circular(self::C* f) → self::C*
     : self::C::f = f, super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field self::C* x = new self::C::_circular(null);
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/classes.dart.outline.expect b/pkg/front_end/testcases/general_nnbd_opt_out/classes.dart.outline.expect
index c216ad8..09929fa 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/classes.dart.outline.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/classes.dart.outline.expect
@@ -9,6 +9,16 @@
     ;
   method method() → dynamic
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A {
   constructor •(dynamic x) → self::B*
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/classes.dart.strong.expect b/pkg/front_end/testcases/general_nnbd_opt_out/classes.dart.strong.expect
index 5e9a421..7f771eb 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/classes.dart.strong.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/classes.dart.strong.expect
@@ -11,8 +11,18 @@
   method method() → dynamic {
     core::print("A.method x: ${this.{self::A::x}} y: ${this.{self::A::y}}");
     core::print(this);
-    core::print(this.{core::Object::runtimeType});
+    core::print(this.{self::A::runtimeType});
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A {
   constructor •(dynamic x) → self::B*
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/classes.dart.strong.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/classes.dart.strong.transformed.expect
index 5e9a421..7f771eb 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/classes.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/classes.dart.strong.transformed.expect
@@ -11,8 +11,18 @@
   method method() → dynamic {
     core::print("A.method x: ${this.{self::A::x}} y: ${this.{self::A::y}}");
     core::print(this);
-    core::print(this.{core::Object::runtimeType});
+    core::print(this.{self::A::runtimeType});
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A {
   constructor •(dynamic x) → self::B*
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/classes.dart.weak.expect b/pkg/front_end/testcases/general_nnbd_opt_out/classes.dart.weak.expect
index 5e9a421..7f771eb 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/classes.dart.weak.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/classes.dart.weak.expect
@@ -11,8 +11,18 @@
   method method() → dynamic {
     core::print("A.method x: ${this.{self::A::x}} y: ${this.{self::A::y}}");
     core::print(this);
-    core::print(this.{core::Object::runtimeType});
+    core::print(this.{self::A::runtimeType});
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A {
   constructor •(dynamic x) → self::B*
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/classes.dart.weak.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/classes.dart.weak.transformed.expect
index 5e9a421..7f771eb 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/classes.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/classes.dart.weak.transformed.expect
@@ -11,8 +11,18 @@
   method method() → dynamic {
     core::print("A.method x: ${this.{self::A::x}} y: ${this.{self::A::y}}");
     core::print(this);
-    core::print(this.{core::Object::runtimeType});
+    core::print(this.{self::A::runtimeType});
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A {
   constructor •(dynamic x) → self::B*
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/clone_function_type.dart.outline.expect b/pkg/front_end/testcases/general_nnbd_opt_out/clone_function_type.dart.outline.expect
index f515adc..9d488ac 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/clone_function_type.dart.outline.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/clone_function_type.dart.outline.expect
@@ -110,11 +110,31 @@
 class Am1<X extends core::Object* = dynamic, Y extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::Am1<self::Am1::X*, self::Am1::Y*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class _Bm1&Object&Am1<Z extends core::Object* = dynamic> = core::Object with self::Am1<(core::int*) →* dynamic, self::_Bm1&Object&Am1::Z*> /*isAnonymousMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::_Bm1&Object&Am1<self::_Bm1&Object&Am1::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Bm1<Z extends core::Object* = dynamic> extends self::_Bm1&Object&Am1<self::Bm1::Z*> {
   synthetic constructor •() → self::Bm1<self::Bm1::Z*>*
@@ -124,6 +144,16 @@
   const synthetic constructor •() → self::_Cm1&Object&Am1<self::_Cm1&Object&Am1::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Cm1<Z extends core::Object* = dynamic> extends self::_Cm1&Object&Am1<self::Cm1::Z*> {
   synthetic constructor •() → self::Cm1<self::Cm1::Z*>*
@@ -133,6 +163,16 @@
   const synthetic constructor •() → self::_Dm1&Object&Am1<self::_Dm1&Object&Am1::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Dm1<Z extends core::Object* = dynamic> extends self::_Dm1&Object&Am1<self::Dm1::Z*> {
   synthetic constructor •() → self::Dm1<self::Dm1::Z*>*
@@ -142,6 +182,16 @@
   const synthetic constructor •() → self::_Em1&Object&Am1<self::_Em1&Object&Am1::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Em1<Z extends core::Object* = dynamic> extends self::_Em1&Object&Am1<self::Em1::Z*> {
   synthetic constructor •() → self::Em1<self::Em1::Z*>*
@@ -151,6 +201,16 @@
   const synthetic constructor •() → self::_Fm1&Object&Am1<self::_Fm1&Object&Am1::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Fm1<Z extends core::Object* = dynamic> extends self::_Fm1&Object&Am1<self::Fm1::Z*> {
   synthetic constructor •() → self::Fm1<self::Fm1::Z*>*
@@ -160,6 +220,16 @@
   const synthetic constructor •() → self::_Gm1&Object&Am1<self::_Gm1&Object&Am1::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Gm1<Z extends core::Object* = dynamic> extends self::_Gm1&Object&Am1<self::Gm1::Z*> {
   synthetic constructor •() → self::Gm1<self::Gm1::Z*>*
@@ -169,6 +239,16 @@
   const synthetic constructor •() → self::_Hm1&Object&Am1<self::_Hm1&Object&Am1::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Hm1<Z extends core::Object* = dynamic> extends self::_Hm1&Object&Am1<self::Hm1::Z*> {
   synthetic constructor •() → self::Hm1<self::Hm1::Z*>*
@@ -178,6 +258,16 @@
   const synthetic constructor •() → self::_Im1&Object&Am1<self::_Im1&Object&Am1::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Im1<Z extends core::Object* = dynamic> extends self::_Im1&Object&Am1<self::Im1::Z*> {
   synthetic constructor •() → self::Im1<self::Im1::Z*>*
@@ -187,6 +277,16 @@
   const synthetic constructor •() → self::_Jm1&Object&Am1<self::_Jm1&Object&Am1::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Jm1<Z extends core::Object* = dynamic> extends self::_Jm1&Object&Am1<self::Jm1::Z*> {
   synthetic constructor •() → self::Jm1<self::Jm1::Z*>*
@@ -196,6 +296,16 @@
   const synthetic constructor •() → self::_Km1&Object&Am1<self::_Km1&Object&Am1::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Km1<Z extends core::Object* = dynamic> extends self::_Km1&Object&Am1<self::Km1::Z*> {
   synthetic constructor •() → self::Km1<self::Km1::Z*>*
@@ -205,6 +315,16 @@
   const synthetic constructor •() → self::_Lm1&Object&Am1<self::_Lm1&Object&Am1::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Lm1<Z extends core::Object* = dynamic> extends self::_Lm1&Object&Am1<self::Lm1::Z*> {
   synthetic constructor •() → self::Lm1<self::Lm1::Z*>*
@@ -214,65 +334,195 @@
   const synthetic constructor •() → self::Mm1<self::Mm1::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Nm1<Z extends core::Object* = dynamic> = core::Object with self::Am1<(core::int*) →* dynamic, self::Nm1::Z*> /*hasConstConstructor*/  {
   const synthetic constructor •() → self::Nm1<self::Nm1::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Om1<Z extends core::Object* = dynamic> = core::Object with self::Am1<() →* core::int*, self::Om1::Z*> /*hasConstConstructor*/  {
   const synthetic constructor •() → self::Om1<self::Om1::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Pm1<Z extends core::Object* = dynamic> = core::Object with self::Am1<() →* dynamic, self::Pm1::Z*> /*hasConstConstructor*/  {
   const synthetic constructor •() → self::Pm1<self::Pm1::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Qm1<Z extends core::Object* = dynamic> = core::Object with self::Am1<() →* dynamic, self::Qm1::Z*> /*hasConstConstructor*/  {
   const synthetic constructor •() → self::Qm1<self::Qm1::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Rm1<Z extends core::Object* = dynamic> = core::Object with self::Am1<({x: core::int*}) →* dynamic, self::Rm1::Z*> /*hasConstConstructor*/  {
   const synthetic constructor •() → self::Rm1<self::Rm1::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Sm1<Z extends core::Object* = dynamic> = core::Object with self::Am1<([core::int*]) →* dynamic, self::Sm1::Z*> /*hasConstConstructor*/  {
   const synthetic constructor •() → self::Sm1<self::Sm1::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Tm1<Z extends core::Object* = dynamic> = core::Object with self::Am1<([core::int*]) →* dynamic, self::Tm1::Z*> /*hasConstConstructor*/  {
   const synthetic constructor •() → self::Tm1<self::Tm1::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Um1<Z extends core::Object* = dynamic> = core::Object with self::Am1<core::Function*, self::Um1::Z*> /*hasConstConstructor*/  {
   const synthetic constructor •() → self::Um1<self::Um1::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Vm1<Z extends core::Object* = dynamic> = core::Object with self::Am1<(core::Function*) →* dynamic, self::Vm1::Z*> /*hasConstConstructor*/  {
   const synthetic constructor •() → self::Vm1<self::Vm1::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Wm1<Z extends core::Object* = dynamic> = core::Object with self::Am1<() →* (() →* core::Function*) →* dynamic, self::Wm1::Z*> /*hasConstConstructor*/  {
   const synthetic constructor •() → self::Wm1<self::Wm1::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Am2<X extends () →* dynamic = () →* dynamic, Y extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::Am2<self::Am2::X*, self::Am2::Y*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class _Bm2&Object&Am2<Z extends core::Object* = dynamic> = core::Object with self::Am2<(core::int*) →* dynamic, self::_Bm2&Object&Am2::Z*> /*isAnonymousMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::_Bm2&Object&Am2<self::_Bm2&Object&Am2::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Bm2<Z extends core::Object* = dynamic> extends self::_Bm2&Object&Am2<self::Bm2::Z*> {
   synthetic constructor •() → self::Bm2<self::Bm2::Z*>*
@@ -282,6 +532,16 @@
   const synthetic constructor •() → self::_Cm2&Object&Am2<self::_Cm2&Object&Am2::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Cm2<Z extends core::Object* = dynamic> extends self::_Cm2&Object&Am2<self::Cm2::Z*> {
   synthetic constructor •() → self::Cm2<self::Cm2::Z*>*
@@ -291,6 +551,16 @@
   const synthetic constructor •() → self::_Dm2&Object&Am2<self::_Dm2&Object&Am2::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Dm2<Z extends core::Object* = dynamic> extends self::_Dm2&Object&Am2<self::Dm2::Z*> {
   synthetic constructor •() → self::Dm2<self::Dm2::Z*>*
@@ -300,6 +570,16 @@
   const synthetic constructor •() → self::_Em2&Object&Am2<self::_Em2&Object&Am2::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Em2<Z extends core::Object* = dynamic> extends self::_Em2&Object&Am2<self::Em2::Z*> {
   synthetic constructor •() → self::Em2<self::Em2::Z*>*
@@ -309,6 +589,16 @@
   const synthetic constructor •() → self::_Fm2&Object&Am2<self::_Fm2&Object&Am2::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Fm2<Z extends core::Object* = dynamic> extends self::_Fm2&Object&Am2<self::Fm2::Z*> {
   synthetic constructor •() → self::Fm2<self::Fm2::Z*>*
@@ -318,6 +608,16 @@
   const synthetic constructor •() → self::_Gm2&Object&Am2<self::_Gm2&Object&Am2::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Gm2<Z extends core::Object* = dynamic> extends self::_Gm2&Object&Am2<self::Gm2::Z*> {
   synthetic constructor •() → self::Gm2<self::Gm2::Z*>*
@@ -327,6 +627,16 @@
   const synthetic constructor •() → self::_Hm2&Object&Am2<self::_Hm2&Object&Am2::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Hm2<Z extends core::Object* = dynamic> extends self::_Hm2&Object&Am2<self::Hm2::Z*> {
   synthetic constructor •() → self::Hm2<self::Hm2::Z*>*
@@ -336,6 +646,16 @@
   const synthetic constructor •() → self::_Im2&Object&Am2<self::_Im2&Object&Am2::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Im2<Z extends core::Object* = dynamic> extends self::_Im2&Object&Am2<self::Im2::Z*> {
   synthetic constructor •() → self::Im2<self::Im2::Z*>*
@@ -345,6 +665,16 @@
   const synthetic constructor •() → self::_Jm2&Object&Am2<self::_Jm2&Object&Am2::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Jm2<Z extends core::Object* = dynamic> extends self::_Jm2&Object&Am2<self::Jm2::Z*> {
   synthetic constructor •() → self::Jm2<self::Jm2::Z*>*
@@ -354,6 +684,16 @@
   const synthetic constructor •() → self::_Km2&Object&Am2<self::_Km2&Object&Am2::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Km2<Z extends core::Object* = dynamic> extends self::_Km2&Object&Am2<self::Km2::Z*> {
   synthetic constructor •() → self::Km2<self::Km2::Z*>*
@@ -363,6 +703,16 @@
   const synthetic constructor •() → self::_Lm2&Object&Am2<self::_Lm2&Object&Am2::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Lm2<Z extends core::Object* = dynamic> extends self::_Lm2&Object&Am2<self::Lm2::Z*> {
   synthetic constructor •() → self::Lm2<self::Lm2::Z*>*
@@ -372,65 +722,195 @@
   const synthetic constructor •() → self::Mm2<self::Mm2::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Nm2<Z extends core::Object* = dynamic> = core::Object with self::Am2<(core::int*) →* dynamic, self::Nm2::Z*> /*hasConstConstructor*/  {
   const synthetic constructor •() → self::Nm2<self::Nm2::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Om2<Z extends core::Object* = dynamic> = core::Object with self::Am2<() →* core::int*, self::Om2::Z*> /*hasConstConstructor*/  {
   const synthetic constructor •() → self::Om2<self::Om2::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Pm2<Z extends core::Object* = dynamic> = core::Object with self::Am2<() →* dynamic, self::Pm2::Z*> /*hasConstConstructor*/  {
   const synthetic constructor •() → self::Pm2<self::Pm2::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Qm2<Z extends core::Object* = dynamic> = core::Object with self::Am2<() →* dynamic, self::Qm2::Z*> /*hasConstConstructor*/  {
   const synthetic constructor •() → self::Qm2<self::Qm2::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Rm2<Z extends core::Object* = dynamic> = core::Object with self::Am2<({x: core::int*}) →* dynamic, self::Rm2::Z*> /*hasConstConstructor*/  {
   const synthetic constructor •() → self::Rm2<self::Rm2::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Sm2<Z extends core::Object* = dynamic> = core::Object with self::Am2<([core::int*]) →* dynamic, self::Sm2::Z*> /*hasConstConstructor*/  {
   const synthetic constructor •() → self::Sm2<self::Sm2::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Tm2<Z extends core::Object* = dynamic> = core::Object with self::Am2<([core::int*]) →* dynamic, self::Tm2::Z*> /*hasConstConstructor*/  {
   const synthetic constructor •() → self::Tm2<self::Tm2::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Um2<Z extends core::Object* = dynamic> = core::Object with self::Am2<core::Function*, self::Um2::Z*> /*hasConstConstructor*/  {
   const synthetic constructor •() → self::Um2<self::Um2::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Vm2<Z extends core::Object* = dynamic> = core::Object with self::Am2<(core::Function*) →* dynamic, self::Vm2::Z*> /*hasConstConstructor*/  {
   const synthetic constructor •() → self::Vm2<self::Vm2::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Wm2<Z extends core::Object* = dynamic> = core::Object with self::Am2<() →* (() →* core::Function*) →* dynamic, self::Wm2::Z*> /*hasConstConstructor*/  {
   const synthetic constructor •() → self::Wm2<self::Wm2::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Am3<L extends core::Object* = dynamic, Y extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::Am3<self::Am3::L*, self::Am3::Y*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class _Bm3&Object&Am3<Z extends core::Object* = dynamic> = core::Object with self::Am3<(core::int*) →* dynamic, self::_Bm3&Object&Am3::Z*> /*isAnonymousMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::_Bm3&Object&Am3<self::_Bm3&Object&Am3::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Bm3<Z extends core::Object* = dynamic> extends self::_Bm3&Object&Am3<self::Bm3::Z*> {
   synthetic constructor •() → self::Bm3<self::Bm3::Z*>*
@@ -440,6 +920,16 @@
   const synthetic constructor •() → self::_Cm3&Object&Am3<self::_Cm3&Object&Am3::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Cm3<Z extends core::Object* = dynamic> extends self::_Cm3&Object&Am3<self::Cm3::Z*> {
   synthetic constructor •() → self::Cm3<self::Cm3::Z*>*
@@ -449,6 +939,16 @@
   const synthetic constructor •() → self::_Dm3&Object&Am3<self::_Dm3&Object&Am3::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Dm3<Z extends core::Object* = dynamic> extends self::_Dm3&Object&Am3<self::Dm3::Z*> {
   synthetic constructor •() → self::Dm3<self::Dm3::Z*>*
@@ -458,6 +958,16 @@
   const synthetic constructor •() → self::_Em3&Object&Am3<self::_Em3&Object&Am3::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Em3<Z extends core::Object* = dynamic> extends self::_Em3&Object&Am3<self::Em3::Z*> {
   synthetic constructor •() → self::Em3<self::Em3::Z*>*
@@ -467,6 +977,16 @@
   const synthetic constructor •() → self::_Fm3&Object&Am3<self::_Fm3&Object&Am3::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Fm3<Z extends core::Object* = dynamic> extends self::_Fm3&Object&Am3<self::Fm3::Z*> {
   synthetic constructor •() → self::Fm3<self::Fm3::Z*>*
@@ -476,6 +996,16 @@
   const synthetic constructor •() → self::_Gm3&Object&Am3<self::_Gm3&Object&Am3::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Gm3<Z extends core::Object* = dynamic> extends self::_Gm3&Object&Am3<self::Gm3::Z*> {
   synthetic constructor •() → self::Gm3<self::Gm3::Z*>*
@@ -485,6 +1015,16 @@
   const synthetic constructor •() → self::_Hm3&Object&Am3<self::_Hm3&Object&Am3::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Hm3<Z extends core::Object* = dynamic> extends self::_Hm3&Object&Am3<self::Hm3::Z*> {
   synthetic constructor •() → self::Hm3<self::Hm3::Z*>*
@@ -494,6 +1034,16 @@
   const synthetic constructor •() → self::_Im3&Object&Am3<self::_Im3&Object&Am3::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Im3<Z extends core::Object* = dynamic> extends self::_Im3&Object&Am3<self::Im3::Z*> {
   synthetic constructor •() → self::Im3<self::Im3::Z*>*
@@ -503,6 +1053,16 @@
   const synthetic constructor •() → self::_Jm3&Object&Am3<self::_Jm3&Object&Am3::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Jm3<Z extends core::Object* = dynamic> extends self::_Jm3&Object&Am3<self::Jm3::Z*> {
   synthetic constructor •() → self::Jm3<self::Jm3::Z*>*
@@ -512,6 +1072,16 @@
   const synthetic constructor •() → self::_Km3&Object&Am3<self::_Km3&Object&Am3::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Km3<Z extends core::Object* = dynamic> extends self::_Km3&Object&Am3<self::Km3::Z*> {
   synthetic constructor •() → self::Km3<self::Km3::Z*>*
@@ -520,86 +1090,296 @@
 class Af1<X extends (core::int*) →* dynamic = (core::int*) →* dynamic> extends core::Object {
   static factory foo<X extends (core::int*) →* dynamic = dynamic>() → self::Af1<self::Af1::foo::X*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Bf1<X extends (core::int*) →* dynamic = (core::int*) →* dynamic> extends core::Object {
   static factory foo<X extends (core::int*) →* dynamic = dynamic>() → self::Bf1<self::Bf1::foo::X*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Cf1<X extends () →* core::int* = () →* core::int*> extends core::Object {
   static factory foo<X extends () →* core::int* = dynamic>() → self::Cf1<self::Cf1::foo::X*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Df1<X extends () →* dynamic = () →* dynamic> extends core::Object {
   static factory foo<X extends () →* dynamic = dynamic>() → self::Df1<self::Df1::foo::X*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Ef1<X extends () →* dynamic = () →* dynamic> extends core::Object {
   static factory foo<X extends () →* dynamic = dynamic>() → self::Ef1<self::Ef1::foo::X*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Ff1<X extends ({x: core::int*}) →* dynamic = ({x: core::int*}) →* dynamic> extends core::Object {
   static factory foo<X extends ({x: core::int*}) →* dynamic = dynamic>() → self::Ff1<self::Ff1::foo::X*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Gf1<X extends ([core::int*]) →* dynamic = ([core::int*]) →* dynamic> extends core::Object {
   static factory foo<X extends ([core::int*]) →* dynamic = dynamic>() → self::Gf1<self::Gf1::foo::X*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Hf1<X extends ([core::int*]) →* dynamic = ([core::int*]) →* dynamic> extends core::Object {
   static factory foo<X extends ([core::int*]) →* dynamic = dynamic>() → self::Hf1<self::Hf1::foo::X*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class If1<X extends core::Function* = core::Function*> extends core::Object {
   static factory foo<X extends core::Function* = dynamic>() → self::If1<self::If1::foo::X*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Jf1<X extends (core::Function*) →* dynamic = (core::Function*) →* dynamic> extends core::Object {
   static factory foo<X extends (core::Function*) →* dynamic = dynamic>() → self::Jf1<self::Jf1::foo::X*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Kf1<X extends () →* (() →* core::Function*) →* dynamic = () →* (() →* core::Function*) →* dynamic> extends core::Object {
   static factory foo<X extends () →* (() →* core::Function*) →* dynamic = dynamic>() → self::Kf1<self::Kf1::foo::X*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Bf2<X extends (core::int*) →* dynamic = (core::int*) →* dynamic> extends core::Object {
   static factory foo<X extends (core::int*) →* dynamic = dynamic>() → self::Bf2<self::Bf2::foo::X*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Cf2<X extends (core::int*) →* dynamic = (core::int*) →* dynamic> extends core::Object {
   static factory foo<X extends (core::int*) →* dynamic = dynamic>() → self::Cf2<self::Cf2::foo::X*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Df2<X extends () →* core::int* = () →* core::int*> extends core::Object {
   static factory foo<X extends () →* core::int* = dynamic>() → self::Df2<self::Df2::foo::X*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Ef2<X extends () →* dynamic = () →* dynamic> extends core::Object {
   static factory foo<X extends () →* dynamic = dynamic>() → self::Ef2<self::Ef2::foo::X*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Ff2<X extends () →* dynamic = () →* dynamic> extends core::Object {
   static factory foo<X extends () →* dynamic = dynamic>() → self::Ff2<self::Ff2::foo::X*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Gf2<X extends ({x: core::int*}) →* dynamic = ({x: core::int*}) →* dynamic> extends core::Object {
   static factory foo<X extends ({x: core::int*}) →* dynamic = dynamic>() → self::Gf2<self::Gf2::foo::X*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Hf2<X extends ([core::int*]) →* dynamic = ([core::int*]) →* dynamic> extends core::Object {
   static factory foo<X extends ([core::int*]) →* dynamic = dynamic>() → self::Hf2<self::Hf2::foo::X*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class If2<X extends ([core::int*]) →* dynamic = ([core::int*]) →* dynamic> extends core::Object {
   static factory foo<X extends ([core::int*]) →* dynamic = dynamic>() → self::If2<self::If2::foo::X*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Jf2<X extends (core::Function*) →* dynamic = (core::Function*) →* dynamic> extends core::Object {
   static factory foo<X extends (core::Function*) →* dynamic = dynamic>() → self::Jf2<self::Jf2::foo::X*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Kf2<X extends () →* (() →* core::Function*) →* dynamic = () →* (() →* core::Function*) →* dynamic> extends core::Object {
   static factory foo<X extends () →* (() →* core::Function*) →* dynamic = dynamic>() → self::Kf2<self::Kf2::foo::X*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/clone_function_type.dart.strong.expect b/pkg/front_end/testcases/general_nnbd_opt_out/clone_function_type.dart.strong.expect
index 0fec093..feccdac 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/clone_function_type.dart.strong.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/clone_function_type.dart.strong.expect
@@ -111,11 +111,31 @@
   synthetic constructor •() → self::Am1<self::Am1::X*, self::Am1::Y*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class _Bm1&Object&Am1<Z extends core::Object* = dynamic> = core::Object with self::Am1<(core::int*) →* dynamic, self::_Bm1&Object&Am1::Z*> /*isAnonymousMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::_Bm1&Object&Am1<self::_Bm1&Object&Am1::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Bm1<Z extends core::Object* = dynamic> extends self::_Bm1&Object&Am1<self::Bm1::Z*> {
   synthetic constructor •() → self::Bm1<self::Bm1::Z*>*
@@ -126,6 +146,16 @@
   const synthetic constructor •() → self::_Cm1&Object&Am1<self::_Cm1&Object&Am1::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Cm1<Z extends core::Object* = dynamic> extends self::_Cm1&Object&Am1<self::Cm1::Z*> {
   synthetic constructor •() → self::Cm1<self::Cm1::Z*>*
@@ -136,6 +166,16 @@
   const synthetic constructor •() → self::_Dm1&Object&Am1<self::_Dm1&Object&Am1::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Dm1<Z extends core::Object* = dynamic> extends self::_Dm1&Object&Am1<self::Dm1::Z*> {
   synthetic constructor •() → self::Dm1<self::Dm1::Z*>*
@@ -146,6 +186,16 @@
   const synthetic constructor •() → self::_Em1&Object&Am1<self::_Em1&Object&Am1::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Em1<Z extends core::Object* = dynamic> extends self::_Em1&Object&Am1<self::Em1::Z*> {
   synthetic constructor •() → self::Em1<self::Em1::Z*>*
@@ -156,6 +206,16 @@
   const synthetic constructor •() → self::_Fm1&Object&Am1<self::_Fm1&Object&Am1::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Fm1<Z extends core::Object* = dynamic> extends self::_Fm1&Object&Am1<self::Fm1::Z*> {
   synthetic constructor •() → self::Fm1<self::Fm1::Z*>*
@@ -166,6 +226,16 @@
   const synthetic constructor •() → self::_Gm1&Object&Am1<self::_Gm1&Object&Am1::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Gm1<Z extends core::Object* = dynamic> extends self::_Gm1&Object&Am1<self::Gm1::Z*> {
   synthetic constructor •() → self::Gm1<self::Gm1::Z*>*
@@ -176,6 +246,16 @@
   const synthetic constructor •() → self::_Hm1&Object&Am1<self::_Hm1&Object&Am1::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Hm1<Z extends core::Object* = dynamic> extends self::_Hm1&Object&Am1<self::Hm1::Z*> {
   synthetic constructor •() → self::Hm1<self::Hm1::Z*>*
@@ -186,6 +266,16 @@
   const synthetic constructor •() → self::_Im1&Object&Am1<self::_Im1&Object&Am1::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Im1<Z extends core::Object* = dynamic> extends self::_Im1&Object&Am1<self::Im1::Z*> {
   synthetic constructor •() → self::Im1<self::Im1::Z*>*
@@ -196,6 +286,16 @@
   const synthetic constructor •() → self::_Jm1&Object&Am1<self::_Jm1&Object&Am1::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Jm1<Z extends core::Object* = dynamic> extends self::_Jm1&Object&Am1<self::Jm1::Z*> {
   synthetic constructor •() → self::Jm1<self::Jm1::Z*>*
@@ -206,6 +306,16 @@
   const synthetic constructor •() → self::_Km1&Object&Am1<self::_Km1&Object&Am1::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Km1<Z extends core::Object* = dynamic> extends self::_Km1&Object&Am1<self::Km1::Z*> {
   synthetic constructor •() → self::Km1<self::Km1::Z*>*
@@ -216,6 +326,16 @@
   const synthetic constructor •() → self::_Lm1&Object&Am1<self::_Lm1&Object&Am1::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Lm1<Z extends core::Object* = dynamic> extends self::_Lm1&Object&Am1<self::Lm1::Z*> {
   synthetic constructor •() → self::Lm1<self::Lm1::Z*>*
@@ -226,66 +346,196 @@
   const synthetic constructor •() → self::Mm1<self::Mm1::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Nm1<Z extends core::Object* = dynamic> = core::Object with self::Am1<(core::int*) →* dynamic, self::Nm1::Z*> /*hasConstConstructor*/  {
   const synthetic constructor •() → self::Nm1<self::Nm1::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Om1<Z extends core::Object* = dynamic> = core::Object with self::Am1<() →* core::int*, self::Om1::Z*> /*hasConstConstructor*/  {
   const synthetic constructor •() → self::Om1<self::Om1::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Pm1<Z extends core::Object* = dynamic> = core::Object with self::Am1<() →* dynamic, self::Pm1::Z*> /*hasConstConstructor*/  {
   const synthetic constructor •() → self::Pm1<self::Pm1::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Qm1<Z extends core::Object* = dynamic> = core::Object with self::Am1<() →* dynamic, self::Qm1::Z*> /*hasConstConstructor*/  {
   const synthetic constructor •() → self::Qm1<self::Qm1::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Rm1<Z extends core::Object* = dynamic> = core::Object with self::Am1<({x: core::int*}) →* dynamic, self::Rm1::Z*> /*hasConstConstructor*/  {
   const synthetic constructor •() → self::Rm1<self::Rm1::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Sm1<Z extends core::Object* = dynamic> = core::Object with self::Am1<([core::int*]) →* dynamic, self::Sm1::Z*> /*hasConstConstructor*/  {
   const synthetic constructor •() → self::Sm1<self::Sm1::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Tm1<Z extends core::Object* = dynamic> = core::Object with self::Am1<([core::int*]) →* dynamic, self::Tm1::Z*> /*hasConstConstructor*/  {
   const synthetic constructor •() → self::Tm1<self::Tm1::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Um1<Z extends core::Object* = dynamic> = core::Object with self::Am1<core::Function*, self::Um1::Z*> /*hasConstConstructor*/  {
   const synthetic constructor •() → self::Um1<self::Um1::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Vm1<Z extends core::Object* = dynamic> = core::Object with self::Am1<(core::Function*) →* dynamic, self::Vm1::Z*> /*hasConstConstructor*/  {
   const synthetic constructor •() → self::Vm1<self::Vm1::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Wm1<Z extends core::Object* = dynamic> = core::Object with self::Am1<() →* (() →* core::Function*) →* dynamic, self::Wm1::Z*> /*hasConstConstructor*/  {
   const synthetic constructor •() → self::Wm1<self::Wm1::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Am2<X extends () →* dynamic = () →* dynamic, Y extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::Am2<self::Am2::X*, self::Am2::Y*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class _Bm2&Object&Am2<Z extends core::Object* = dynamic> = core::Object with self::Am2<(core::int*) →* dynamic, self::_Bm2&Object&Am2::Z*> /*isAnonymousMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::_Bm2&Object&Am2<self::_Bm2&Object&Am2::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Bm2<Z extends core::Object* = dynamic> extends self::_Bm2&Object&Am2<self::Bm2::Z*> {
   synthetic constructor •() → self::Bm2<self::Bm2::Z*>*
@@ -296,6 +546,16 @@
   const synthetic constructor •() → self::_Cm2&Object&Am2<self::_Cm2&Object&Am2::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Cm2<Z extends core::Object* = dynamic> extends self::_Cm2&Object&Am2<self::Cm2::Z*> {
   synthetic constructor •() → self::Cm2<self::Cm2::Z*>*
@@ -306,6 +566,16 @@
   const synthetic constructor •() → self::_Dm2&Object&Am2<self::_Dm2&Object&Am2::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Dm2<Z extends core::Object* = dynamic> extends self::_Dm2&Object&Am2<self::Dm2::Z*> {
   synthetic constructor •() → self::Dm2<self::Dm2::Z*>*
@@ -316,6 +586,16 @@
   const synthetic constructor •() → self::_Em2&Object&Am2<self::_Em2&Object&Am2::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Em2<Z extends core::Object* = dynamic> extends self::_Em2&Object&Am2<self::Em2::Z*> {
   synthetic constructor •() → self::Em2<self::Em2::Z*>*
@@ -326,6 +606,16 @@
   const synthetic constructor •() → self::_Fm2&Object&Am2<self::_Fm2&Object&Am2::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Fm2<Z extends core::Object* = dynamic> extends self::_Fm2&Object&Am2<self::Fm2::Z*> {
   synthetic constructor •() → self::Fm2<self::Fm2::Z*>*
@@ -336,6 +626,16 @@
   const synthetic constructor •() → self::_Gm2&Object&Am2<self::_Gm2&Object&Am2::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Gm2<Z extends core::Object* = dynamic> extends self::_Gm2&Object&Am2<self::Gm2::Z*> {
   synthetic constructor •() → self::Gm2<self::Gm2::Z*>*
@@ -346,6 +646,16 @@
   const synthetic constructor •() → self::_Hm2&Object&Am2<self::_Hm2&Object&Am2::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Hm2<Z extends core::Object* = dynamic> extends self::_Hm2&Object&Am2<self::Hm2::Z*> {
   synthetic constructor •() → self::Hm2<self::Hm2::Z*>*
@@ -356,6 +666,16 @@
   const synthetic constructor •() → self::_Im2&Object&Am2<self::_Im2&Object&Am2::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Im2<Z extends core::Object* = dynamic> extends self::_Im2&Object&Am2<self::Im2::Z*> {
   synthetic constructor •() → self::Im2<self::Im2::Z*>*
@@ -366,6 +686,16 @@
   const synthetic constructor •() → self::_Jm2&Object&Am2<self::_Jm2&Object&Am2::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Jm2<Z extends core::Object* = dynamic> extends self::_Jm2&Object&Am2<self::Jm2::Z*> {
   synthetic constructor •() → self::Jm2<self::Jm2::Z*>*
@@ -376,6 +706,16 @@
   const synthetic constructor •() → self::_Km2&Object&Am2<self::_Km2&Object&Am2::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Km2<Z extends core::Object* = dynamic> extends self::_Km2&Object&Am2<self::Km2::Z*> {
   synthetic constructor •() → self::Km2<self::Km2::Z*>*
@@ -386,6 +726,16 @@
   const synthetic constructor •() → self::_Lm2&Object&Am2<self::_Lm2&Object&Am2::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Lm2<Z extends core::Object* = dynamic> extends self::_Lm2&Object&Am2<self::Lm2::Z*> {
   synthetic constructor •() → self::Lm2<self::Lm2::Z*>*
@@ -396,66 +746,196 @@
   const synthetic constructor •() → self::Mm2<self::Mm2::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Nm2<Z extends core::Object* = dynamic> = core::Object with self::Am2<(core::int*) →* dynamic, self::Nm2::Z*> /*hasConstConstructor*/  {
   const synthetic constructor •() → self::Nm2<self::Nm2::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Om2<Z extends core::Object* = dynamic> = core::Object with self::Am2<() →* core::int*, self::Om2::Z*> /*hasConstConstructor*/  {
   const synthetic constructor •() → self::Om2<self::Om2::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Pm2<Z extends core::Object* = dynamic> = core::Object with self::Am2<() →* dynamic, self::Pm2::Z*> /*hasConstConstructor*/  {
   const synthetic constructor •() → self::Pm2<self::Pm2::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Qm2<Z extends core::Object* = dynamic> = core::Object with self::Am2<() →* dynamic, self::Qm2::Z*> /*hasConstConstructor*/  {
   const synthetic constructor •() → self::Qm2<self::Qm2::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Rm2<Z extends core::Object* = dynamic> = core::Object with self::Am2<({x: core::int*}) →* dynamic, self::Rm2::Z*> /*hasConstConstructor*/  {
   const synthetic constructor •() → self::Rm2<self::Rm2::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Sm2<Z extends core::Object* = dynamic> = core::Object with self::Am2<([core::int*]) →* dynamic, self::Sm2::Z*> /*hasConstConstructor*/  {
   const synthetic constructor •() → self::Sm2<self::Sm2::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Tm2<Z extends core::Object* = dynamic> = core::Object with self::Am2<([core::int*]) →* dynamic, self::Tm2::Z*> /*hasConstConstructor*/  {
   const synthetic constructor •() → self::Tm2<self::Tm2::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Um2<Z extends core::Object* = dynamic> = core::Object with self::Am2<core::Function*, self::Um2::Z*> /*hasConstConstructor*/  {
   const synthetic constructor •() → self::Um2<self::Um2::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Vm2<Z extends core::Object* = dynamic> = core::Object with self::Am2<(core::Function*) →* dynamic, self::Vm2::Z*> /*hasConstConstructor*/  {
   const synthetic constructor •() → self::Vm2<self::Vm2::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Wm2<Z extends core::Object* = dynamic> = core::Object with self::Am2<() →* (() →* core::Function*) →* dynamic, self::Wm2::Z*> /*hasConstConstructor*/  {
   const synthetic constructor •() → self::Wm2<self::Wm2::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Am3<L extends core::Object* = dynamic, Y extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::Am3<self::Am3::L*, self::Am3::Y*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class _Bm3&Object&Am3<Z extends core::Object* = dynamic> = core::Object with self::Am3<(core::int*) →* dynamic, self::_Bm3&Object&Am3::Z*> /*isAnonymousMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::_Bm3&Object&Am3<self::_Bm3&Object&Am3::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Bm3<Z extends core::Object* = dynamic> extends self::_Bm3&Object&Am3<self::Bm3::Z*> {
   synthetic constructor •() → self::Bm3<self::Bm3::Z*>*
@@ -466,6 +946,16 @@
   const synthetic constructor •() → self::_Cm3&Object&Am3<self::_Cm3&Object&Am3::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Cm3<Z extends core::Object* = dynamic> extends self::_Cm3&Object&Am3<self::Cm3::Z*> {
   synthetic constructor •() → self::Cm3<self::Cm3::Z*>*
@@ -476,6 +966,16 @@
   const synthetic constructor •() → self::_Dm3&Object&Am3<self::_Dm3&Object&Am3::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Dm3<Z extends core::Object* = dynamic> extends self::_Dm3&Object&Am3<self::Dm3::Z*> {
   synthetic constructor •() → self::Dm3<self::Dm3::Z*>*
@@ -486,6 +986,16 @@
   const synthetic constructor •() → self::_Em3&Object&Am3<self::_Em3&Object&Am3::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Em3<Z extends core::Object* = dynamic> extends self::_Em3&Object&Am3<self::Em3::Z*> {
   synthetic constructor •() → self::Em3<self::Em3::Z*>*
@@ -496,6 +1006,16 @@
   const synthetic constructor •() → self::_Fm3&Object&Am3<self::_Fm3&Object&Am3::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Fm3<Z extends core::Object* = dynamic> extends self::_Fm3&Object&Am3<self::Fm3::Z*> {
   synthetic constructor •() → self::Fm3<self::Fm3::Z*>*
@@ -506,6 +1026,16 @@
   const synthetic constructor •() → self::_Gm3&Object&Am3<self::_Gm3&Object&Am3::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Gm3<Z extends core::Object* = dynamic> extends self::_Gm3&Object&Am3<self::Gm3::Z*> {
   synthetic constructor •() → self::Gm3<self::Gm3::Z*>*
@@ -516,6 +1046,16 @@
   const synthetic constructor •() → self::_Hm3&Object&Am3<self::_Hm3&Object&Am3::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Hm3<Z extends core::Object* = dynamic> extends self::_Hm3&Object&Am3<self::Hm3::Z*> {
   synthetic constructor •() → self::Hm3<self::Hm3::Z*>*
@@ -526,6 +1066,16 @@
   const synthetic constructor •() → self::_Im3&Object&Am3<self::_Im3&Object&Am3::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Im3<Z extends core::Object* = dynamic> extends self::_Im3&Object&Am3<self::Im3::Z*> {
   synthetic constructor •() → self::Im3<self::Im3::Z*>*
@@ -536,6 +1086,16 @@
   const synthetic constructor •() → self::_Jm3&Object&Am3<self::_Jm3&Object&Am3::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Jm3<Z extends core::Object* = dynamic> extends self::_Jm3&Object&Am3<self::Jm3::Z*> {
   synthetic constructor •() → self::Jm3<self::Jm3::Z*>*
@@ -546,6 +1106,16 @@
   const synthetic constructor •() → self::_Km3&Object&Am3<self::_Km3&Object&Am3::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Km3<Z extends core::Object* = dynamic> extends self::_Km3&Object&Am3<self::Km3::Z*> {
   synthetic constructor •() → self::Km3<self::Km3::Z*>*
@@ -555,85 +1125,295 @@
 class Af1<X extends (core::int*) →* dynamic = (core::int*) →* dynamic> extends core::Object {
   static factory foo<X extends (core::int*) →* dynamic = dynamic>() → self::Af1<self::Af1::foo::X*>*
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Bf1<X extends (core::int*) →* dynamic = (core::int*) →* dynamic> extends core::Object {
   static factory foo<X extends (core::int*) →* dynamic = dynamic>() → self::Bf1<self::Bf1::foo::X*>*
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Cf1<X extends () →* core::int* = () →* core::int*> extends core::Object {
   static factory foo<X extends () →* core::int* = dynamic>() → self::Cf1<self::Cf1::foo::X*>*
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Df1<X extends () →* dynamic = () →* dynamic> extends core::Object {
   static factory foo<X extends () →* dynamic = dynamic>() → self::Df1<self::Df1::foo::X*>*
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Ef1<X extends () →* dynamic = () →* dynamic> extends core::Object {
   static factory foo<X extends () →* dynamic = dynamic>() → self::Ef1<self::Ef1::foo::X*>*
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Ff1<X extends ({x: core::int*}) →* dynamic = ({x: core::int*}) →* dynamic> extends core::Object {
   static factory foo<X extends ({x: core::int*}) →* dynamic = dynamic>() → self::Ff1<self::Ff1::foo::X*>*
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Gf1<X extends ([core::int*]) →* dynamic = ([core::int*]) →* dynamic> extends core::Object {
   static factory foo<X extends ([core::int*]) →* dynamic = dynamic>() → self::Gf1<self::Gf1::foo::X*>*
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Hf1<X extends ([core::int*]) →* dynamic = ([core::int*]) →* dynamic> extends core::Object {
   static factory foo<X extends ([core::int*]) →* dynamic = dynamic>() → self::Hf1<self::Hf1::foo::X*>*
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class If1<X extends core::Function* = core::Function*> extends core::Object {
   static factory foo<X extends core::Function* = dynamic>() → self::If1<self::If1::foo::X*>*
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Jf1<X extends (core::Function*) →* dynamic = (core::Function*) →* dynamic> extends core::Object {
   static factory foo<X extends (core::Function*) →* dynamic = dynamic>() → self::Jf1<self::Jf1::foo::X*>*
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Kf1<X extends () →* (() →* core::Function*) →* dynamic = () →* (() →* core::Function*) →* dynamic> extends core::Object {
   static factory foo<X extends () →* (() →* core::Function*) →* dynamic = dynamic>() → self::Kf1<self::Kf1::foo::X*>*
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Bf2<X extends (core::int*) →* dynamic = (core::int*) →* dynamic> extends core::Object {
   static factory foo<X extends (core::int*) →* dynamic = dynamic>() → self::Bf2<self::Bf2::foo::X*>*
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Cf2<X extends (core::int*) →* dynamic = (core::int*) →* dynamic> extends core::Object {
   static factory foo<X extends (core::int*) →* dynamic = dynamic>() → self::Cf2<self::Cf2::foo::X*>*
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Df2<X extends () →* core::int* = () →* core::int*> extends core::Object {
   static factory foo<X extends () →* core::int* = dynamic>() → self::Df2<self::Df2::foo::X*>*
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Ef2<X extends () →* dynamic = () →* dynamic> extends core::Object {
   static factory foo<X extends () →* dynamic = dynamic>() → self::Ef2<self::Ef2::foo::X*>*
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Ff2<X extends () →* dynamic = () →* dynamic> extends core::Object {
   static factory foo<X extends () →* dynamic = dynamic>() → self::Ff2<self::Ff2::foo::X*>*
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Gf2<X extends ({x: core::int*}) →* dynamic = ({x: core::int*}) →* dynamic> extends core::Object {
   static factory foo<X extends ({x: core::int*}) →* dynamic = dynamic>() → self::Gf2<self::Gf2::foo::X*>*
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Hf2<X extends ([core::int*]) →* dynamic = ([core::int*]) →* dynamic> extends core::Object {
   static factory foo<X extends ([core::int*]) →* dynamic = dynamic>() → self::Hf2<self::Hf2::foo::X*>*
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class If2<X extends ([core::int*]) →* dynamic = ([core::int*]) →* dynamic> extends core::Object {
   static factory foo<X extends ([core::int*]) →* dynamic = dynamic>() → self::If2<self::If2::foo::X*>*
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Jf2<X extends (core::Function*) →* dynamic = (core::Function*) →* dynamic> extends core::Object {
   static factory foo<X extends (core::Function*) →* dynamic = dynamic>() → self::Jf2<self::Jf2::foo::X*>*
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Kf2<X extends () →* (() →* core::Function*) →* dynamic = () →* (() →* core::Function*) →* dynamic> extends core::Object {
   static factory foo<X extends () →* (() →* core::Function*) →* dynamic = dynamic>() → self::Kf2<self::Kf2::foo::X*>*
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/clone_function_type.dart.strong.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/clone_function_type.dart.strong.transformed.expect
index ab334c7..92f2c53 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/clone_function_type.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/clone_function_type.dart.strong.transformed.expect
@@ -111,11 +111,31 @@
   synthetic constructor •() → self::Am1<self::Am1::X*, self::Am1::Y*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class _Bm1&Object&Am1<Z extends core::Object* = dynamic> extends core::Object implements self::Am1<(core::int*) →* dynamic, self::_Bm1&Object&Am1::Z*> /*isAnonymousMixin,isEliminatedMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::_Bm1&Object&Am1<self::_Bm1&Object&Am1::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Bm1<Z extends core::Object* = dynamic> extends self::_Bm1&Object&Am1<self::Bm1::Z*> {
   synthetic constructor •() → self::Bm1<self::Bm1::Z*>*
@@ -126,6 +146,16 @@
   const synthetic constructor •() → self::_Cm1&Object&Am1<self::_Cm1&Object&Am1::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Cm1<Z extends core::Object* = dynamic> extends self::_Cm1&Object&Am1<self::Cm1::Z*> {
   synthetic constructor •() → self::Cm1<self::Cm1::Z*>*
@@ -136,6 +166,16 @@
   const synthetic constructor •() → self::_Dm1&Object&Am1<self::_Dm1&Object&Am1::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Dm1<Z extends core::Object* = dynamic> extends self::_Dm1&Object&Am1<self::Dm1::Z*> {
   synthetic constructor •() → self::Dm1<self::Dm1::Z*>*
@@ -146,6 +186,16 @@
   const synthetic constructor •() → self::_Em1&Object&Am1<self::_Em1&Object&Am1::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Em1<Z extends core::Object* = dynamic> extends self::_Em1&Object&Am1<self::Em1::Z*> {
   synthetic constructor •() → self::Em1<self::Em1::Z*>*
@@ -156,6 +206,16 @@
   const synthetic constructor •() → self::_Fm1&Object&Am1<self::_Fm1&Object&Am1::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Fm1<Z extends core::Object* = dynamic> extends self::_Fm1&Object&Am1<self::Fm1::Z*> {
   synthetic constructor •() → self::Fm1<self::Fm1::Z*>*
@@ -166,6 +226,16 @@
   const synthetic constructor •() → self::_Gm1&Object&Am1<self::_Gm1&Object&Am1::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Gm1<Z extends core::Object* = dynamic> extends self::_Gm1&Object&Am1<self::Gm1::Z*> {
   synthetic constructor •() → self::Gm1<self::Gm1::Z*>*
@@ -176,6 +246,16 @@
   const synthetic constructor •() → self::_Hm1&Object&Am1<self::_Hm1&Object&Am1::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Hm1<Z extends core::Object* = dynamic> extends self::_Hm1&Object&Am1<self::Hm1::Z*> {
   synthetic constructor •() → self::Hm1<self::Hm1::Z*>*
@@ -186,6 +266,16 @@
   const synthetic constructor •() → self::_Im1&Object&Am1<self::_Im1&Object&Am1::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Im1<Z extends core::Object* = dynamic> extends self::_Im1&Object&Am1<self::Im1::Z*> {
   synthetic constructor •() → self::Im1<self::Im1::Z*>*
@@ -196,6 +286,16 @@
   const synthetic constructor •() → self::_Jm1&Object&Am1<self::_Jm1&Object&Am1::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Jm1<Z extends core::Object* = dynamic> extends self::_Jm1&Object&Am1<self::Jm1::Z*> {
   synthetic constructor •() → self::Jm1<self::Jm1::Z*>*
@@ -206,6 +306,16 @@
   const synthetic constructor •() → self::_Km1&Object&Am1<self::_Km1&Object&Am1::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Km1<Z extends core::Object* = dynamic> extends self::_Km1&Object&Am1<self::Km1::Z*> {
   synthetic constructor •() → self::Km1<self::Km1::Z*>*
@@ -216,6 +326,16 @@
   const synthetic constructor •() → self::_Lm1&Object&Am1<self::_Lm1&Object&Am1::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Lm1<Z extends core::Object* = dynamic> extends self::_Lm1&Object&Am1<self::Lm1::Z*> {
   synthetic constructor •() → self::Lm1<self::Lm1::Z*>*
@@ -226,66 +346,196 @@
   const synthetic constructor •() → self::Mm1<self::Mm1::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Nm1<Z extends core::Object* = dynamic> extends core::Object implements self::Am1<(core::int*) →* dynamic, self::Nm1::Z*> /*isEliminatedMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::Nm1<self::Nm1::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Om1<Z extends core::Object* = dynamic> extends core::Object implements self::Am1<() →* core::int*, self::Om1::Z*> /*isEliminatedMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::Om1<self::Om1::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Pm1<Z extends core::Object* = dynamic> extends core::Object implements self::Am1<() →* dynamic, self::Pm1::Z*> /*isEliminatedMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::Pm1<self::Pm1::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Qm1<Z extends core::Object* = dynamic> extends core::Object implements self::Am1<() →* dynamic, self::Qm1::Z*> /*isEliminatedMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::Qm1<self::Qm1::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Rm1<Z extends core::Object* = dynamic> extends core::Object implements self::Am1<({x: core::int*}) →* dynamic, self::Rm1::Z*> /*isEliminatedMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::Rm1<self::Rm1::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Sm1<Z extends core::Object* = dynamic> extends core::Object implements self::Am1<([core::int*]) →* dynamic, self::Sm1::Z*> /*isEliminatedMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::Sm1<self::Sm1::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Tm1<Z extends core::Object* = dynamic> extends core::Object implements self::Am1<([core::int*]) →* dynamic, self::Tm1::Z*> /*isEliminatedMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::Tm1<self::Tm1::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Um1<Z extends core::Object* = dynamic> extends core::Object implements self::Am1<core::Function*, self::Um1::Z*> /*isEliminatedMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::Um1<self::Um1::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Vm1<Z extends core::Object* = dynamic> extends core::Object implements self::Am1<(core::Function*) →* dynamic, self::Vm1::Z*> /*isEliminatedMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::Vm1<self::Vm1::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Wm1<Z extends core::Object* = dynamic> extends core::Object implements self::Am1<() →* (() →* core::Function*) →* dynamic, self::Wm1::Z*> /*isEliminatedMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::Wm1<self::Wm1::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Am2<X extends () →* dynamic = () →* dynamic, Y extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::Am2<self::Am2::X*, self::Am2::Y*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class _Bm2&Object&Am2<Z extends core::Object* = dynamic> extends core::Object implements self::Am2<(core::int*) →* dynamic, self::_Bm2&Object&Am2::Z*> /*isAnonymousMixin,isEliminatedMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::_Bm2&Object&Am2<self::_Bm2&Object&Am2::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Bm2<Z extends core::Object* = dynamic> extends self::_Bm2&Object&Am2<self::Bm2::Z*> {
   synthetic constructor •() → self::Bm2<self::Bm2::Z*>*
@@ -296,6 +546,16 @@
   const synthetic constructor •() → self::_Cm2&Object&Am2<self::_Cm2&Object&Am2::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Cm2<Z extends core::Object* = dynamic> extends self::_Cm2&Object&Am2<self::Cm2::Z*> {
   synthetic constructor •() → self::Cm2<self::Cm2::Z*>*
@@ -306,6 +566,16 @@
   const synthetic constructor •() → self::_Dm2&Object&Am2<self::_Dm2&Object&Am2::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Dm2<Z extends core::Object* = dynamic> extends self::_Dm2&Object&Am2<self::Dm2::Z*> {
   synthetic constructor •() → self::Dm2<self::Dm2::Z*>*
@@ -316,6 +586,16 @@
   const synthetic constructor •() → self::_Em2&Object&Am2<self::_Em2&Object&Am2::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Em2<Z extends core::Object* = dynamic> extends self::_Em2&Object&Am2<self::Em2::Z*> {
   synthetic constructor •() → self::Em2<self::Em2::Z*>*
@@ -326,6 +606,16 @@
   const synthetic constructor •() → self::_Fm2&Object&Am2<self::_Fm2&Object&Am2::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Fm2<Z extends core::Object* = dynamic> extends self::_Fm2&Object&Am2<self::Fm2::Z*> {
   synthetic constructor •() → self::Fm2<self::Fm2::Z*>*
@@ -336,6 +626,16 @@
   const synthetic constructor •() → self::_Gm2&Object&Am2<self::_Gm2&Object&Am2::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Gm2<Z extends core::Object* = dynamic> extends self::_Gm2&Object&Am2<self::Gm2::Z*> {
   synthetic constructor •() → self::Gm2<self::Gm2::Z*>*
@@ -346,6 +646,16 @@
   const synthetic constructor •() → self::_Hm2&Object&Am2<self::_Hm2&Object&Am2::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Hm2<Z extends core::Object* = dynamic> extends self::_Hm2&Object&Am2<self::Hm2::Z*> {
   synthetic constructor •() → self::Hm2<self::Hm2::Z*>*
@@ -356,6 +666,16 @@
   const synthetic constructor •() → self::_Im2&Object&Am2<self::_Im2&Object&Am2::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Im2<Z extends core::Object* = dynamic> extends self::_Im2&Object&Am2<self::Im2::Z*> {
   synthetic constructor •() → self::Im2<self::Im2::Z*>*
@@ -366,6 +686,16 @@
   const synthetic constructor •() → self::_Jm2&Object&Am2<self::_Jm2&Object&Am2::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Jm2<Z extends core::Object* = dynamic> extends self::_Jm2&Object&Am2<self::Jm2::Z*> {
   synthetic constructor •() → self::Jm2<self::Jm2::Z*>*
@@ -376,6 +706,16 @@
   const synthetic constructor •() → self::_Km2&Object&Am2<self::_Km2&Object&Am2::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Km2<Z extends core::Object* = dynamic> extends self::_Km2&Object&Am2<self::Km2::Z*> {
   synthetic constructor •() → self::Km2<self::Km2::Z*>*
@@ -386,6 +726,16 @@
   const synthetic constructor •() → self::_Lm2&Object&Am2<self::_Lm2&Object&Am2::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Lm2<Z extends core::Object* = dynamic> extends self::_Lm2&Object&Am2<self::Lm2::Z*> {
   synthetic constructor •() → self::Lm2<self::Lm2::Z*>*
@@ -396,66 +746,196 @@
   const synthetic constructor •() → self::Mm2<self::Mm2::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Nm2<Z extends core::Object* = dynamic> extends core::Object implements self::Am2<(core::int*) →* dynamic, self::Nm2::Z*> /*isEliminatedMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::Nm2<self::Nm2::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Om2<Z extends core::Object* = dynamic> extends core::Object implements self::Am2<() →* core::int*, self::Om2::Z*> /*isEliminatedMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::Om2<self::Om2::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Pm2<Z extends core::Object* = dynamic> extends core::Object implements self::Am2<() →* dynamic, self::Pm2::Z*> /*isEliminatedMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::Pm2<self::Pm2::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Qm2<Z extends core::Object* = dynamic> extends core::Object implements self::Am2<() →* dynamic, self::Qm2::Z*> /*isEliminatedMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::Qm2<self::Qm2::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Rm2<Z extends core::Object* = dynamic> extends core::Object implements self::Am2<({x: core::int*}) →* dynamic, self::Rm2::Z*> /*isEliminatedMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::Rm2<self::Rm2::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Sm2<Z extends core::Object* = dynamic> extends core::Object implements self::Am2<([core::int*]) →* dynamic, self::Sm2::Z*> /*isEliminatedMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::Sm2<self::Sm2::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Tm2<Z extends core::Object* = dynamic> extends core::Object implements self::Am2<([core::int*]) →* dynamic, self::Tm2::Z*> /*isEliminatedMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::Tm2<self::Tm2::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Um2<Z extends core::Object* = dynamic> extends core::Object implements self::Am2<core::Function*, self::Um2::Z*> /*isEliminatedMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::Um2<self::Um2::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Vm2<Z extends core::Object* = dynamic> extends core::Object implements self::Am2<(core::Function*) →* dynamic, self::Vm2::Z*> /*isEliminatedMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::Vm2<self::Vm2::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Wm2<Z extends core::Object* = dynamic> extends core::Object implements self::Am2<() →* (() →* core::Function*) →* dynamic, self::Wm2::Z*> /*isEliminatedMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::Wm2<self::Wm2::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Am3<L extends core::Object* = dynamic, Y extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::Am3<self::Am3::L*, self::Am3::Y*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class _Bm3&Object&Am3<Z extends core::Object* = dynamic> extends core::Object implements self::Am3<(core::int*) →* dynamic, self::_Bm3&Object&Am3::Z*> /*isAnonymousMixin,isEliminatedMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::_Bm3&Object&Am3<self::_Bm3&Object&Am3::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Bm3<Z extends core::Object* = dynamic> extends self::_Bm3&Object&Am3<self::Bm3::Z*> {
   synthetic constructor •() → self::Bm3<self::Bm3::Z*>*
@@ -466,6 +946,16 @@
   const synthetic constructor •() → self::_Cm3&Object&Am3<self::_Cm3&Object&Am3::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Cm3<Z extends core::Object* = dynamic> extends self::_Cm3&Object&Am3<self::Cm3::Z*> {
   synthetic constructor •() → self::Cm3<self::Cm3::Z*>*
@@ -476,6 +966,16 @@
   const synthetic constructor •() → self::_Dm3&Object&Am3<self::_Dm3&Object&Am3::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Dm3<Z extends core::Object* = dynamic> extends self::_Dm3&Object&Am3<self::Dm3::Z*> {
   synthetic constructor •() → self::Dm3<self::Dm3::Z*>*
@@ -486,6 +986,16 @@
   const synthetic constructor •() → self::_Em3&Object&Am3<self::_Em3&Object&Am3::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Em3<Z extends core::Object* = dynamic> extends self::_Em3&Object&Am3<self::Em3::Z*> {
   synthetic constructor •() → self::Em3<self::Em3::Z*>*
@@ -496,6 +1006,16 @@
   const synthetic constructor •() → self::_Fm3&Object&Am3<self::_Fm3&Object&Am3::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Fm3<Z extends core::Object* = dynamic> extends self::_Fm3&Object&Am3<self::Fm3::Z*> {
   synthetic constructor •() → self::Fm3<self::Fm3::Z*>*
@@ -506,6 +1026,16 @@
   const synthetic constructor •() → self::_Gm3&Object&Am3<self::_Gm3&Object&Am3::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Gm3<Z extends core::Object* = dynamic> extends self::_Gm3&Object&Am3<self::Gm3::Z*> {
   synthetic constructor •() → self::Gm3<self::Gm3::Z*>*
@@ -516,6 +1046,16 @@
   const synthetic constructor •() → self::_Hm3&Object&Am3<self::_Hm3&Object&Am3::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Hm3<Z extends core::Object* = dynamic> extends self::_Hm3&Object&Am3<self::Hm3::Z*> {
   synthetic constructor •() → self::Hm3<self::Hm3::Z*>*
@@ -526,6 +1066,16 @@
   const synthetic constructor •() → self::_Im3&Object&Am3<self::_Im3&Object&Am3::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Im3<Z extends core::Object* = dynamic> extends self::_Im3&Object&Am3<self::Im3::Z*> {
   synthetic constructor •() → self::Im3<self::Im3::Z*>*
@@ -536,6 +1086,16 @@
   const synthetic constructor •() → self::_Jm3&Object&Am3<self::_Jm3&Object&Am3::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Jm3<Z extends core::Object* = dynamic> extends self::_Jm3&Object&Am3<self::Jm3::Z*> {
   synthetic constructor •() → self::Jm3<self::Jm3::Z*>*
@@ -546,6 +1106,16 @@
   const synthetic constructor •() → self::_Km3&Object&Am3<self::_Km3&Object&Am3::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Km3<Z extends core::Object* = dynamic> extends self::_Km3&Object&Am3<self::Km3::Z*> {
   synthetic constructor •() → self::Km3<self::Km3::Z*>*
@@ -555,85 +1125,295 @@
 class Af1<X extends (core::int*) →* dynamic = (core::int*) →* dynamic> extends core::Object {
   static factory foo<X extends (core::int*) →* dynamic = dynamic>() → self::Af1<self::Af1::foo::X*>*
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Bf1<X extends (core::int*) →* dynamic = (core::int*) →* dynamic> extends core::Object {
   static factory foo<X extends (core::int*) →* dynamic = dynamic>() → self::Bf1<self::Bf1::foo::X*>*
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Cf1<X extends () →* core::int* = () →* core::int*> extends core::Object {
   static factory foo<X extends () →* core::int* = dynamic>() → self::Cf1<self::Cf1::foo::X*>*
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Df1<X extends () →* dynamic = () →* dynamic> extends core::Object {
   static factory foo<X extends () →* dynamic = dynamic>() → self::Df1<self::Df1::foo::X*>*
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Ef1<X extends () →* dynamic = () →* dynamic> extends core::Object {
   static factory foo<X extends () →* dynamic = dynamic>() → self::Ef1<self::Ef1::foo::X*>*
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Ff1<X extends ({x: core::int*}) →* dynamic = ({x: core::int*}) →* dynamic> extends core::Object {
   static factory foo<X extends ({x: core::int*}) →* dynamic = dynamic>() → self::Ff1<self::Ff1::foo::X*>*
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Gf1<X extends ([core::int*]) →* dynamic = ([core::int*]) →* dynamic> extends core::Object {
   static factory foo<X extends ([core::int*]) →* dynamic = dynamic>() → self::Gf1<self::Gf1::foo::X*>*
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Hf1<X extends ([core::int*]) →* dynamic = ([core::int*]) →* dynamic> extends core::Object {
   static factory foo<X extends ([core::int*]) →* dynamic = dynamic>() → self::Hf1<self::Hf1::foo::X*>*
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class If1<X extends core::Function* = core::Function*> extends core::Object {
   static factory foo<X extends core::Function* = dynamic>() → self::If1<self::If1::foo::X*>*
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Jf1<X extends (core::Function*) →* dynamic = (core::Function*) →* dynamic> extends core::Object {
   static factory foo<X extends (core::Function*) →* dynamic = dynamic>() → self::Jf1<self::Jf1::foo::X*>*
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Kf1<X extends () →* (() →* core::Function*) →* dynamic = () →* (() →* core::Function*) →* dynamic> extends core::Object {
   static factory foo<X extends () →* (() →* core::Function*) →* dynamic = dynamic>() → self::Kf1<self::Kf1::foo::X*>*
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Bf2<X extends (core::int*) →* dynamic = (core::int*) →* dynamic> extends core::Object {
   static factory foo<X extends (core::int*) →* dynamic = dynamic>() → self::Bf2<self::Bf2::foo::X*>*
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Cf2<X extends (core::int*) →* dynamic = (core::int*) →* dynamic> extends core::Object {
   static factory foo<X extends (core::int*) →* dynamic = dynamic>() → self::Cf2<self::Cf2::foo::X*>*
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Df2<X extends () →* core::int* = () →* core::int*> extends core::Object {
   static factory foo<X extends () →* core::int* = dynamic>() → self::Df2<self::Df2::foo::X*>*
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Ef2<X extends () →* dynamic = () →* dynamic> extends core::Object {
   static factory foo<X extends () →* dynamic = dynamic>() → self::Ef2<self::Ef2::foo::X*>*
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Ff2<X extends () →* dynamic = () →* dynamic> extends core::Object {
   static factory foo<X extends () →* dynamic = dynamic>() → self::Ff2<self::Ff2::foo::X*>*
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Gf2<X extends ({x: core::int*}) →* dynamic = ({x: core::int*}) →* dynamic> extends core::Object {
   static factory foo<X extends ({x: core::int*}) →* dynamic = dynamic>() → self::Gf2<self::Gf2::foo::X*>*
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Hf2<X extends ([core::int*]) →* dynamic = ([core::int*]) →* dynamic> extends core::Object {
   static factory foo<X extends ([core::int*]) →* dynamic = dynamic>() → self::Hf2<self::Hf2::foo::X*>*
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class If2<X extends ([core::int*]) →* dynamic = ([core::int*]) →* dynamic> extends core::Object {
   static factory foo<X extends ([core::int*]) →* dynamic = dynamic>() → self::If2<self::If2::foo::X*>*
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Jf2<X extends (core::Function*) →* dynamic = (core::Function*) →* dynamic> extends core::Object {
   static factory foo<X extends (core::Function*) →* dynamic = dynamic>() → self::Jf2<self::Jf2::foo::X*>*
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Kf2<X extends () →* (() →* core::Function*) →* dynamic = () →* (() →* core::Function*) →* dynamic> extends core::Object {
   static factory foo<X extends () →* (() →* core::Function*) →* dynamic = dynamic>() → self::Kf2<self::Kf2::foo::X*>*
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/clone_function_type.dart.weak.expect b/pkg/front_end/testcases/general_nnbd_opt_out/clone_function_type.dart.weak.expect
index 0fec093..feccdac 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/clone_function_type.dart.weak.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/clone_function_type.dart.weak.expect
@@ -111,11 +111,31 @@
   synthetic constructor •() → self::Am1<self::Am1::X*, self::Am1::Y*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class _Bm1&Object&Am1<Z extends core::Object* = dynamic> = core::Object with self::Am1<(core::int*) →* dynamic, self::_Bm1&Object&Am1::Z*> /*isAnonymousMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::_Bm1&Object&Am1<self::_Bm1&Object&Am1::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Bm1<Z extends core::Object* = dynamic> extends self::_Bm1&Object&Am1<self::Bm1::Z*> {
   synthetic constructor •() → self::Bm1<self::Bm1::Z*>*
@@ -126,6 +146,16 @@
   const synthetic constructor •() → self::_Cm1&Object&Am1<self::_Cm1&Object&Am1::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Cm1<Z extends core::Object* = dynamic> extends self::_Cm1&Object&Am1<self::Cm1::Z*> {
   synthetic constructor •() → self::Cm1<self::Cm1::Z*>*
@@ -136,6 +166,16 @@
   const synthetic constructor •() → self::_Dm1&Object&Am1<self::_Dm1&Object&Am1::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Dm1<Z extends core::Object* = dynamic> extends self::_Dm1&Object&Am1<self::Dm1::Z*> {
   synthetic constructor •() → self::Dm1<self::Dm1::Z*>*
@@ -146,6 +186,16 @@
   const synthetic constructor •() → self::_Em1&Object&Am1<self::_Em1&Object&Am1::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Em1<Z extends core::Object* = dynamic> extends self::_Em1&Object&Am1<self::Em1::Z*> {
   synthetic constructor •() → self::Em1<self::Em1::Z*>*
@@ -156,6 +206,16 @@
   const synthetic constructor •() → self::_Fm1&Object&Am1<self::_Fm1&Object&Am1::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Fm1<Z extends core::Object* = dynamic> extends self::_Fm1&Object&Am1<self::Fm1::Z*> {
   synthetic constructor •() → self::Fm1<self::Fm1::Z*>*
@@ -166,6 +226,16 @@
   const synthetic constructor •() → self::_Gm1&Object&Am1<self::_Gm1&Object&Am1::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Gm1<Z extends core::Object* = dynamic> extends self::_Gm1&Object&Am1<self::Gm1::Z*> {
   synthetic constructor •() → self::Gm1<self::Gm1::Z*>*
@@ -176,6 +246,16 @@
   const synthetic constructor •() → self::_Hm1&Object&Am1<self::_Hm1&Object&Am1::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Hm1<Z extends core::Object* = dynamic> extends self::_Hm1&Object&Am1<self::Hm1::Z*> {
   synthetic constructor •() → self::Hm1<self::Hm1::Z*>*
@@ -186,6 +266,16 @@
   const synthetic constructor •() → self::_Im1&Object&Am1<self::_Im1&Object&Am1::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Im1<Z extends core::Object* = dynamic> extends self::_Im1&Object&Am1<self::Im1::Z*> {
   synthetic constructor •() → self::Im1<self::Im1::Z*>*
@@ -196,6 +286,16 @@
   const synthetic constructor •() → self::_Jm1&Object&Am1<self::_Jm1&Object&Am1::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Jm1<Z extends core::Object* = dynamic> extends self::_Jm1&Object&Am1<self::Jm1::Z*> {
   synthetic constructor •() → self::Jm1<self::Jm1::Z*>*
@@ -206,6 +306,16 @@
   const synthetic constructor •() → self::_Km1&Object&Am1<self::_Km1&Object&Am1::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Km1<Z extends core::Object* = dynamic> extends self::_Km1&Object&Am1<self::Km1::Z*> {
   synthetic constructor •() → self::Km1<self::Km1::Z*>*
@@ -216,6 +326,16 @@
   const synthetic constructor •() → self::_Lm1&Object&Am1<self::_Lm1&Object&Am1::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Lm1<Z extends core::Object* = dynamic> extends self::_Lm1&Object&Am1<self::Lm1::Z*> {
   synthetic constructor •() → self::Lm1<self::Lm1::Z*>*
@@ -226,66 +346,196 @@
   const synthetic constructor •() → self::Mm1<self::Mm1::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Nm1<Z extends core::Object* = dynamic> = core::Object with self::Am1<(core::int*) →* dynamic, self::Nm1::Z*> /*hasConstConstructor*/  {
   const synthetic constructor •() → self::Nm1<self::Nm1::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Om1<Z extends core::Object* = dynamic> = core::Object with self::Am1<() →* core::int*, self::Om1::Z*> /*hasConstConstructor*/  {
   const synthetic constructor •() → self::Om1<self::Om1::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Pm1<Z extends core::Object* = dynamic> = core::Object with self::Am1<() →* dynamic, self::Pm1::Z*> /*hasConstConstructor*/  {
   const synthetic constructor •() → self::Pm1<self::Pm1::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Qm1<Z extends core::Object* = dynamic> = core::Object with self::Am1<() →* dynamic, self::Qm1::Z*> /*hasConstConstructor*/  {
   const synthetic constructor •() → self::Qm1<self::Qm1::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Rm1<Z extends core::Object* = dynamic> = core::Object with self::Am1<({x: core::int*}) →* dynamic, self::Rm1::Z*> /*hasConstConstructor*/  {
   const synthetic constructor •() → self::Rm1<self::Rm1::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Sm1<Z extends core::Object* = dynamic> = core::Object with self::Am1<([core::int*]) →* dynamic, self::Sm1::Z*> /*hasConstConstructor*/  {
   const synthetic constructor •() → self::Sm1<self::Sm1::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Tm1<Z extends core::Object* = dynamic> = core::Object with self::Am1<([core::int*]) →* dynamic, self::Tm1::Z*> /*hasConstConstructor*/  {
   const synthetic constructor •() → self::Tm1<self::Tm1::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Um1<Z extends core::Object* = dynamic> = core::Object with self::Am1<core::Function*, self::Um1::Z*> /*hasConstConstructor*/  {
   const synthetic constructor •() → self::Um1<self::Um1::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Vm1<Z extends core::Object* = dynamic> = core::Object with self::Am1<(core::Function*) →* dynamic, self::Vm1::Z*> /*hasConstConstructor*/  {
   const synthetic constructor •() → self::Vm1<self::Vm1::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Wm1<Z extends core::Object* = dynamic> = core::Object with self::Am1<() →* (() →* core::Function*) →* dynamic, self::Wm1::Z*> /*hasConstConstructor*/  {
   const synthetic constructor •() → self::Wm1<self::Wm1::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Am2<X extends () →* dynamic = () →* dynamic, Y extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::Am2<self::Am2::X*, self::Am2::Y*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class _Bm2&Object&Am2<Z extends core::Object* = dynamic> = core::Object with self::Am2<(core::int*) →* dynamic, self::_Bm2&Object&Am2::Z*> /*isAnonymousMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::_Bm2&Object&Am2<self::_Bm2&Object&Am2::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Bm2<Z extends core::Object* = dynamic> extends self::_Bm2&Object&Am2<self::Bm2::Z*> {
   synthetic constructor •() → self::Bm2<self::Bm2::Z*>*
@@ -296,6 +546,16 @@
   const synthetic constructor •() → self::_Cm2&Object&Am2<self::_Cm2&Object&Am2::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Cm2<Z extends core::Object* = dynamic> extends self::_Cm2&Object&Am2<self::Cm2::Z*> {
   synthetic constructor •() → self::Cm2<self::Cm2::Z*>*
@@ -306,6 +566,16 @@
   const synthetic constructor •() → self::_Dm2&Object&Am2<self::_Dm2&Object&Am2::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Dm2<Z extends core::Object* = dynamic> extends self::_Dm2&Object&Am2<self::Dm2::Z*> {
   synthetic constructor •() → self::Dm2<self::Dm2::Z*>*
@@ -316,6 +586,16 @@
   const synthetic constructor •() → self::_Em2&Object&Am2<self::_Em2&Object&Am2::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Em2<Z extends core::Object* = dynamic> extends self::_Em2&Object&Am2<self::Em2::Z*> {
   synthetic constructor •() → self::Em2<self::Em2::Z*>*
@@ -326,6 +606,16 @@
   const synthetic constructor •() → self::_Fm2&Object&Am2<self::_Fm2&Object&Am2::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Fm2<Z extends core::Object* = dynamic> extends self::_Fm2&Object&Am2<self::Fm2::Z*> {
   synthetic constructor •() → self::Fm2<self::Fm2::Z*>*
@@ -336,6 +626,16 @@
   const synthetic constructor •() → self::_Gm2&Object&Am2<self::_Gm2&Object&Am2::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Gm2<Z extends core::Object* = dynamic> extends self::_Gm2&Object&Am2<self::Gm2::Z*> {
   synthetic constructor •() → self::Gm2<self::Gm2::Z*>*
@@ -346,6 +646,16 @@
   const synthetic constructor •() → self::_Hm2&Object&Am2<self::_Hm2&Object&Am2::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Hm2<Z extends core::Object* = dynamic> extends self::_Hm2&Object&Am2<self::Hm2::Z*> {
   synthetic constructor •() → self::Hm2<self::Hm2::Z*>*
@@ -356,6 +666,16 @@
   const synthetic constructor •() → self::_Im2&Object&Am2<self::_Im2&Object&Am2::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Im2<Z extends core::Object* = dynamic> extends self::_Im2&Object&Am2<self::Im2::Z*> {
   synthetic constructor •() → self::Im2<self::Im2::Z*>*
@@ -366,6 +686,16 @@
   const synthetic constructor •() → self::_Jm2&Object&Am2<self::_Jm2&Object&Am2::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Jm2<Z extends core::Object* = dynamic> extends self::_Jm2&Object&Am2<self::Jm2::Z*> {
   synthetic constructor •() → self::Jm2<self::Jm2::Z*>*
@@ -376,6 +706,16 @@
   const synthetic constructor •() → self::_Km2&Object&Am2<self::_Km2&Object&Am2::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Km2<Z extends core::Object* = dynamic> extends self::_Km2&Object&Am2<self::Km2::Z*> {
   synthetic constructor •() → self::Km2<self::Km2::Z*>*
@@ -386,6 +726,16 @@
   const synthetic constructor •() → self::_Lm2&Object&Am2<self::_Lm2&Object&Am2::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Lm2<Z extends core::Object* = dynamic> extends self::_Lm2&Object&Am2<self::Lm2::Z*> {
   synthetic constructor •() → self::Lm2<self::Lm2::Z*>*
@@ -396,66 +746,196 @@
   const synthetic constructor •() → self::Mm2<self::Mm2::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Nm2<Z extends core::Object* = dynamic> = core::Object with self::Am2<(core::int*) →* dynamic, self::Nm2::Z*> /*hasConstConstructor*/  {
   const synthetic constructor •() → self::Nm2<self::Nm2::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Om2<Z extends core::Object* = dynamic> = core::Object with self::Am2<() →* core::int*, self::Om2::Z*> /*hasConstConstructor*/  {
   const synthetic constructor •() → self::Om2<self::Om2::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Pm2<Z extends core::Object* = dynamic> = core::Object with self::Am2<() →* dynamic, self::Pm2::Z*> /*hasConstConstructor*/  {
   const synthetic constructor •() → self::Pm2<self::Pm2::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Qm2<Z extends core::Object* = dynamic> = core::Object with self::Am2<() →* dynamic, self::Qm2::Z*> /*hasConstConstructor*/  {
   const synthetic constructor •() → self::Qm2<self::Qm2::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Rm2<Z extends core::Object* = dynamic> = core::Object with self::Am2<({x: core::int*}) →* dynamic, self::Rm2::Z*> /*hasConstConstructor*/  {
   const synthetic constructor •() → self::Rm2<self::Rm2::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Sm2<Z extends core::Object* = dynamic> = core::Object with self::Am2<([core::int*]) →* dynamic, self::Sm2::Z*> /*hasConstConstructor*/  {
   const synthetic constructor •() → self::Sm2<self::Sm2::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Tm2<Z extends core::Object* = dynamic> = core::Object with self::Am2<([core::int*]) →* dynamic, self::Tm2::Z*> /*hasConstConstructor*/  {
   const synthetic constructor •() → self::Tm2<self::Tm2::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Um2<Z extends core::Object* = dynamic> = core::Object with self::Am2<core::Function*, self::Um2::Z*> /*hasConstConstructor*/  {
   const synthetic constructor •() → self::Um2<self::Um2::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Vm2<Z extends core::Object* = dynamic> = core::Object with self::Am2<(core::Function*) →* dynamic, self::Vm2::Z*> /*hasConstConstructor*/  {
   const synthetic constructor •() → self::Vm2<self::Vm2::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Wm2<Z extends core::Object* = dynamic> = core::Object with self::Am2<() →* (() →* core::Function*) →* dynamic, self::Wm2::Z*> /*hasConstConstructor*/  {
   const synthetic constructor •() → self::Wm2<self::Wm2::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Am3<L extends core::Object* = dynamic, Y extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::Am3<self::Am3::L*, self::Am3::Y*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class _Bm3&Object&Am3<Z extends core::Object* = dynamic> = core::Object with self::Am3<(core::int*) →* dynamic, self::_Bm3&Object&Am3::Z*> /*isAnonymousMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::_Bm3&Object&Am3<self::_Bm3&Object&Am3::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Bm3<Z extends core::Object* = dynamic> extends self::_Bm3&Object&Am3<self::Bm3::Z*> {
   synthetic constructor •() → self::Bm3<self::Bm3::Z*>*
@@ -466,6 +946,16 @@
   const synthetic constructor •() → self::_Cm3&Object&Am3<self::_Cm3&Object&Am3::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Cm3<Z extends core::Object* = dynamic> extends self::_Cm3&Object&Am3<self::Cm3::Z*> {
   synthetic constructor •() → self::Cm3<self::Cm3::Z*>*
@@ -476,6 +966,16 @@
   const synthetic constructor •() → self::_Dm3&Object&Am3<self::_Dm3&Object&Am3::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Dm3<Z extends core::Object* = dynamic> extends self::_Dm3&Object&Am3<self::Dm3::Z*> {
   synthetic constructor •() → self::Dm3<self::Dm3::Z*>*
@@ -486,6 +986,16 @@
   const synthetic constructor •() → self::_Em3&Object&Am3<self::_Em3&Object&Am3::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Em3<Z extends core::Object* = dynamic> extends self::_Em3&Object&Am3<self::Em3::Z*> {
   synthetic constructor •() → self::Em3<self::Em3::Z*>*
@@ -496,6 +1006,16 @@
   const synthetic constructor •() → self::_Fm3&Object&Am3<self::_Fm3&Object&Am3::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Fm3<Z extends core::Object* = dynamic> extends self::_Fm3&Object&Am3<self::Fm3::Z*> {
   synthetic constructor •() → self::Fm3<self::Fm3::Z*>*
@@ -506,6 +1026,16 @@
   const synthetic constructor •() → self::_Gm3&Object&Am3<self::_Gm3&Object&Am3::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Gm3<Z extends core::Object* = dynamic> extends self::_Gm3&Object&Am3<self::Gm3::Z*> {
   synthetic constructor •() → self::Gm3<self::Gm3::Z*>*
@@ -516,6 +1046,16 @@
   const synthetic constructor •() → self::_Hm3&Object&Am3<self::_Hm3&Object&Am3::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Hm3<Z extends core::Object* = dynamic> extends self::_Hm3&Object&Am3<self::Hm3::Z*> {
   synthetic constructor •() → self::Hm3<self::Hm3::Z*>*
@@ -526,6 +1066,16 @@
   const synthetic constructor •() → self::_Im3&Object&Am3<self::_Im3&Object&Am3::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Im3<Z extends core::Object* = dynamic> extends self::_Im3&Object&Am3<self::Im3::Z*> {
   synthetic constructor •() → self::Im3<self::Im3::Z*>*
@@ -536,6 +1086,16 @@
   const synthetic constructor •() → self::_Jm3&Object&Am3<self::_Jm3&Object&Am3::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Jm3<Z extends core::Object* = dynamic> extends self::_Jm3&Object&Am3<self::Jm3::Z*> {
   synthetic constructor •() → self::Jm3<self::Jm3::Z*>*
@@ -546,6 +1106,16 @@
   const synthetic constructor •() → self::_Km3&Object&Am3<self::_Km3&Object&Am3::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Km3<Z extends core::Object* = dynamic> extends self::_Km3&Object&Am3<self::Km3::Z*> {
   synthetic constructor •() → self::Km3<self::Km3::Z*>*
@@ -555,85 +1125,295 @@
 class Af1<X extends (core::int*) →* dynamic = (core::int*) →* dynamic> extends core::Object {
   static factory foo<X extends (core::int*) →* dynamic = dynamic>() → self::Af1<self::Af1::foo::X*>*
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Bf1<X extends (core::int*) →* dynamic = (core::int*) →* dynamic> extends core::Object {
   static factory foo<X extends (core::int*) →* dynamic = dynamic>() → self::Bf1<self::Bf1::foo::X*>*
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Cf1<X extends () →* core::int* = () →* core::int*> extends core::Object {
   static factory foo<X extends () →* core::int* = dynamic>() → self::Cf1<self::Cf1::foo::X*>*
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Df1<X extends () →* dynamic = () →* dynamic> extends core::Object {
   static factory foo<X extends () →* dynamic = dynamic>() → self::Df1<self::Df1::foo::X*>*
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Ef1<X extends () →* dynamic = () →* dynamic> extends core::Object {
   static factory foo<X extends () →* dynamic = dynamic>() → self::Ef1<self::Ef1::foo::X*>*
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Ff1<X extends ({x: core::int*}) →* dynamic = ({x: core::int*}) →* dynamic> extends core::Object {
   static factory foo<X extends ({x: core::int*}) →* dynamic = dynamic>() → self::Ff1<self::Ff1::foo::X*>*
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Gf1<X extends ([core::int*]) →* dynamic = ([core::int*]) →* dynamic> extends core::Object {
   static factory foo<X extends ([core::int*]) →* dynamic = dynamic>() → self::Gf1<self::Gf1::foo::X*>*
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Hf1<X extends ([core::int*]) →* dynamic = ([core::int*]) →* dynamic> extends core::Object {
   static factory foo<X extends ([core::int*]) →* dynamic = dynamic>() → self::Hf1<self::Hf1::foo::X*>*
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class If1<X extends core::Function* = core::Function*> extends core::Object {
   static factory foo<X extends core::Function* = dynamic>() → self::If1<self::If1::foo::X*>*
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Jf1<X extends (core::Function*) →* dynamic = (core::Function*) →* dynamic> extends core::Object {
   static factory foo<X extends (core::Function*) →* dynamic = dynamic>() → self::Jf1<self::Jf1::foo::X*>*
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Kf1<X extends () →* (() →* core::Function*) →* dynamic = () →* (() →* core::Function*) →* dynamic> extends core::Object {
   static factory foo<X extends () →* (() →* core::Function*) →* dynamic = dynamic>() → self::Kf1<self::Kf1::foo::X*>*
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Bf2<X extends (core::int*) →* dynamic = (core::int*) →* dynamic> extends core::Object {
   static factory foo<X extends (core::int*) →* dynamic = dynamic>() → self::Bf2<self::Bf2::foo::X*>*
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Cf2<X extends (core::int*) →* dynamic = (core::int*) →* dynamic> extends core::Object {
   static factory foo<X extends (core::int*) →* dynamic = dynamic>() → self::Cf2<self::Cf2::foo::X*>*
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Df2<X extends () →* core::int* = () →* core::int*> extends core::Object {
   static factory foo<X extends () →* core::int* = dynamic>() → self::Df2<self::Df2::foo::X*>*
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Ef2<X extends () →* dynamic = () →* dynamic> extends core::Object {
   static factory foo<X extends () →* dynamic = dynamic>() → self::Ef2<self::Ef2::foo::X*>*
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Ff2<X extends () →* dynamic = () →* dynamic> extends core::Object {
   static factory foo<X extends () →* dynamic = dynamic>() → self::Ff2<self::Ff2::foo::X*>*
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Gf2<X extends ({x: core::int*}) →* dynamic = ({x: core::int*}) →* dynamic> extends core::Object {
   static factory foo<X extends ({x: core::int*}) →* dynamic = dynamic>() → self::Gf2<self::Gf2::foo::X*>*
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Hf2<X extends ([core::int*]) →* dynamic = ([core::int*]) →* dynamic> extends core::Object {
   static factory foo<X extends ([core::int*]) →* dynamic = dynamic>() → self::Hf2<self::Hf2::foo::X*>*
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class If2<X extends ([core::int*]) →* dynamic = ([core::int*]) →* dynamic> extends core::Object {
   static factory foo<X extends ([core::int*]) →* dynamic = dynamic>() → self::If2<self::If2::foo::X*>*
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Jf2<X extends (core::Function*) →* dynamic = (core::Function*) →* dynamic> extends core::Object {
   static factory foo<X extends (core::Function*) →* dynamic = dynamic>() → self::Jf2<self::Jf2::foo::X*>*
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Kf2<X extends () →* (() →* core::Function*) →* dynamic = () →* (() →* core::Function*) →* dynamic> extends core::Object {
   static factory foo<X extends () →* (() →* core::Function*) →* dynamic = dynamic>() → self::Kf2<self::Kf2::foo::X*>*
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/clone_function_type.dart.weak.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/clone_function_type.dart.weak.transformed.expect
index ab334c7..92f2c53 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/clone_function_type.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/clone_function_type.dart.weak.transformed.expect
@@ -111,11 +111,31 @@
   synthetic constructor •() → self::Am1<self::Am1::X*, self::Am1::Y*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class _Bm1&Object&Am1<Z extends core::Object* = dynamic> extends core::Object implements self::Am1<(core::int*) →* dynamic, self::_Bm1&Object&Am1::Z*> /*isAnonymousMixin,isEliminatedMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::_Bm1&Object&Am1<self::_Bm1&Object&Am1::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Bm1<Z extends core::Object* = dynamic> extends self::_Bm1&Object&Am1<self::Bm1::Z*> {
   synthetic constructor •() → self::Bm1<self::Bm1::Z*>*
@@ -126,6 +146,16 @@
   const synthetic constructor •() → self::_Cm1&Object&Am1<self::_Cm1&Object&Am1::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Cm1<Z extends core::Object* = dynamic> extends self::_Cm1&Object&Am1<self::Cm1::Z*> {
   synthetic constructor •() → self::Cm1<self::Cm1::Z*>*
@@ -136,6 +166,16 @@
   const synthetic constructor •() → self::_Dm1&Object&Am1<self::_Dm1&Object&Am1::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Dm1<Z extends core::Object* = dynamic> extends self::_Dm1&Object&Am1<self::Dm1::Z*> {
   synthetic constructor •() → self::Dm1<self::Dm1::Z*>*
@@ -146,6 +186,16 @@
   const synthetic constructor •() → self::_Em1&Object&Am1<self::_Em1&Object&Am1::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Em1<Z extends core::Object* = dynamic> extends self::_Em1&Object&Am1<self::Em1::Z*> {
   synthetic constructor •() → self::Em1<self::Em1::Z*>*
@@ -156,6 +206,16 @@
   const synthetic constructor •() → self::_Fm1&Object&Am1<self::_Fm1&Object&Am1::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Fm1<Z extends core::Object* = dynamic> extends self::_Fm1&Object&Am1<self::Fm1::Z*> {
   synthetic constructor •() → self::Fm1<self::Fm1::Z*>*
@@ -166,6 +226,16 @@
   const synthetic constructor •() → self::_Gm1&Object&Am1<self::_Gm1&Object&Am1::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Gm1<Z extends core::Object* = dynamic> extends self::_Gm1&Object&Am1<self::Gm1::Z*> {
   synthetic constructor •() → self::Gm1<self::Gm1::Z*>*
@@ -176,6 +246,16 @@
   const synthetic constructor •() → self::_Hm1&Object&Am1<self::_Hm1&Object&Am1::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Hm1<Z extends core::Object* = dynamic> extends self::_Hm1&Object&Am1<self::Hm1::Z*> {
   synthetic constructor •() → self::Hm1<self::Hm1::Z*>*
@@ -186,6 +266,16 @@
   const synthetic constructor •() → self::_Im1&Object&Am1<self::_Im1&Object&Am1::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Im1<Z extends core::Object* = dynamic> extends self::_Im1&Object&Am1<self::Im1::Z*> {
   synthetic constructor •() → self::Im1<self::Im1::Z*>*
@@ -196,6 +286,16 @@
   const synthetic constructor •() → self::_Jm1&Object&Am1<self::_Jm1&Object&Am1::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Jm1<Z extends core::Object* = dynamic> extends self::_Jm1&Object&Am1<self::Jm1::Z*> {
   synthetic constructor •() → self::Jm1<self::Jm1::Z*>*
@@ -206,6 +306,16 @@
   const synthetic constructor •() → self::_Km1&Object&Am1<self::_Km1&Object&Am1::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Km1<Z extends core::Object* = dynamic> extends self::_Km1&Object&Am1<self::Km1::Z*> {
   synthetic constructor •() → self::Km1<self::Km1::Z*>*
@@ -216,6 +326,16 @@
   const synthetic constructor •() → self::_Lm1&Object&Am1<self::_Lm1&Object&Am1::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Lm1<Z extends core::Object* = dynamic> extends self::_Lm1&Object&Am1<self::Lm1::Z*> {
   synthetic constructor •() → self::Lm1<self::Lm1::Z*>*
@@ -226,66 +346,196 @@
   const synthetic constructor •() → self::Mm1<self::Mm1::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Nm1<Z extends core::Object* = dynamic> extends core::Object implements self::Am1<(core::int*) →* dynamic, self::Nm1::Z*> /*isEliminatedMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::Nm1<self::Nm1::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Om1<Z extends core::Object* = dynamic> extends core::Object implements self::Am1<() →* core::int*, self::Om1::Z*> /*isEliminatedMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::Om1<self::Om1::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Pm1<Z extends core::Object* = dynamic> extends core::Object implements self::Am1<() →* dynamic, self::Pm1::Z*> /*isEliminatedMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::Pm1<self::Pm1::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Qm1<Z extends core::Object* = dynamic> extends core::Object implements self::Am1<() →* dynamic, self::Qm1::Z*> /*isEliminatedMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::Qm1<self::Qm1::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Rm1<Z extends core::Object* = dynamic> extends core::Object implements self::Am1<({x: core::int*}) →* dynamic, self::Rm1::Z*> /*isEliminatedMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::Rm1<self::Rm1::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Sm1<Z extends core::Object* = dynamic> extends core::Object implements self::Am1<([core::int*]) →* dynamic, self::Sm1::Z*> /*isEliminatedMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::Sm1<self::Sm1::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Tm1<Z extends core::Object* = dynamic> extends core::Object implements self::Am1<([core::int*]) →* dynamic, self::Tm1::Z*> /*isEliminatedMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::Tm1<self::Tm1::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Um1<Z extends core::Object* = dynamic> extends core::Object implements self::Am1<core::Function*, self::Um1::Z*> /*isEliminatedMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::Um1<self::Um1::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Vm1<Z extends core::Object* = dynamic> extends core::Object implements self::Am1<(core::Function*) →* dynamic, self::Vm1::Z*> /*isEliminatedMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::Vm1<self::Vm1::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Wm1<Z extends core::Object* = dynamic> extends core::Object implements self::Am1<() →* (() →* core::Function*) →* dynamic, self::Wm1::Z*> /*isEliminatedMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::Wm1<self::Wm1::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Am2<X extends () →* dynamic = () →* dynamic, Y extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::Am2<self::Am2::X*, self::Am2::Y*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class _Bm2&Object&Am2<Z extends core::Object* = dynamic> extends core::Object implements self::Am2<(core::int*) →* dynamic, self::_Bm2&Object&Am2::Z*> /*isAnonymousMixin,isEliminatedMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::_Bm2&Object&Am2<self::_Bm2&Object&Am2::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Bm2<Z extends core::Object* = dynamic> extends self::_Bm2&Object&Am2<self::Bm2::Z*> {
   synthetic constructor •() → self::Bm2<self::Bm2::Z*>*
@@ -296,6 +546,16 @@
   const synthetic constructor •() → self::_Cm2&Object&Am2<self::_Cm2&Object&Am2::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Cm2<Z extends core::Object* = dynamic> extends self::_Cm2&Object&Am2<self::Cm2::Z*> {
   synthetic constructor •() → self::Cm2<self::Cm2::Z*>*
@@ -306,6 +566,16 @@
   const synthetic constructor •() → self::_Dm2&Object&Am2<self::_Dm2&Object&Am2::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Dm2<Z extends core::Object* = dynamic> extends self::_Dm2&Object&Am2<self::Dm2::Z*> {
   synthetic constructor •() → self::Dm2<self::Dm2::Z*>*
@@ -316,6 +586,16 @@
   const synthetic constructor •() → self::_Em2&Object&Am2<self::_Em2&Object&Am2::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Em2<Z extends core::Object* = dynamic> extends self::_Em2&Object&Am2<self::Em2::Z*> {
   synthetic constructor •() → self::Em2<self::Em2::Z*>*
@@ -326,6 +606,16 @@
   const synthetic constructor •() → self::_Fm2&Object&Am2<self::_Fm2&Object&Am2::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Fm2<Z extends core::Object* = dynamic> extends self::_Fm2&Object&Am2<self::Fm2::Z*> {
   synthetic constructor •() → self::Fm2<self::Fm2::Z*>*
@@ -336,6 +626,16 @@
   const synthetic constructor •() → self::_Gm2&Object&Am2<self::_Gm2&Object&Am2::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Gm2<Z extends core::Object* = dynamic> extends self::_Gm2&Object&Am2<self::Gm2::Z*> {
   synthetic constructor •() → self::Gm2<self::Gm2::Z*>*
@@ -346,6 +646,16 @@
   const synthetic constructor •() → self::_Hm2&Object&Am2<self::_Hm2&Object&Am2::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Hm2<Z extends core::Object* = dynamic> extends self::_Hm2&Object&Am2<self::Hm2::Z*> {
   synthetic constructor •() → self::Hm2<self::Hm2::Z*>*
@@ -356,6 +666,16 @@
   const synthetic constructor •() → self::_Im2&Object&Am2<self::_Im2&Object&Am2::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Im2<Z extends core::Object* = dynamic> extends self::_Im2&Object&Am2<self::Im2::Z*> {
   synthetic constructor •() → self::Im2<self::Im2::Z*>*
@@ -366,6 +686,16 @@
   const synthetic constructor •() → self::_Jm2&Object&Am2<self::_Jm2&Object&Am2::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Jm2<Z extends core::Object* = dynamic> extends self::_Jm2&Object&Am2<self::Jm2::Z*> {
   synthetic constructor •() → self::Jm2<self::Jm2::Z*>*
@@ -376,6 +706,16 @@
   const synthetic constructor •() → self::_Km2&Object&Am2<self::_Km2&Object&Am2::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Km2<Z extends core::Object* = dynamic> extends self::_Km2&Object&Am2<self::Km2::Z*> {
   synthetic constructor •() → self::Km2<self::Km2::Z*>*
@@ -386,6 +726,16 @@
   const synthetic constructor •() → self::_Lm2&Object&Am2<self::_Lm2&Object&Am2::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Lm2<Z extends core::Object* = dynamic> extends self::_Lm2&Object&Am2<self::Lm2::Z*> {
   synthetic constructor •() → self::Lm2<self::Lm2::Z*>*
@@ -396,66 +746,196 @@
   const synthetic constructor •() → self::Mm2<self::Mm2::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Nm2<Z extends core::Object* = dynamic> extends core::Object implements self::Am2<(core::int*) →* dynamic, self::Nm2::Z*> /*isEliminatedMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::Nm2<self::Nm2::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Om2<Z extends core::Object* = dynamic> extends core::Object implements self::Am2<() →* core::int*, self::Om2::Z*> /*isEliminatedMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::Om2<self::Om2::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Pm2<Z extends core::Object* = dynamic> extends core::Object implements self::Am2<() →* dynamic, self::Pm2::Z*> /*isEliminatedMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::Pm2<self::Pm2::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Qm2<Z extends core::Object* = dynamic> extends core::Object implements self::Am2<() →* dynamic, self::Qm2::Z*> /*isEliminatedMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::Qm2<self::Qm2::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Rm2<Z extends core::Object* = dynamic> extends core::Object implements self::Am2<({x: core::int*}) →* dynamic, self::Rm2::Z*> /*isEliminatedMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::Rm2<self::Rm2::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Sm2<Z extends core::Object* = dynamic> extends core::Object implements self::Am2<([core::int*]) →* dynamic, self::Sm2::Z*> /*isEliminatedMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::Sm2<self::Sm2::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Tm2<Z extends core::Object* = dynamic> extends core::Object implements self::Am2<([core::int*]) →* dynamic, self::Tm2::Z*> /*isEliminatedMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::Tm2<self::Tm2::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Um2<Z extends core::Object* = dynamic> extends core::Object implements self::Am2<core::Function*, self::Um2::Z*> /*isEliminatedMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::Um2<self::Um2::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Vm2<Z extends core::Object* = dynamic> extends core::Object implements self::Am2<(core::Function*) →* dynamic, self::Vm2::Z*> /*isEliminatedMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::Vm2<self::Vm2::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Wm2<Z extends core::Object* = dynamic> extends core::Object implements self::Am2<() →* (() →* core::Function*) →* dynamic, self::Wm2::Z*> /*isEliminatedMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::Wm2<self::Wm2::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Am3<L extends core::Object* = dynamic, Y extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::Am3<self::Am3::L*, self::Am3::Y*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class _Bm3&Object&Am3<Z extends core::Object* = dynamic> extends core::Object implements self::Am3<(core::int*) →* dynamic, self::_Bm3&Object&Am3::Z*> /*isAnonymousMixin,isEliminatedMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::_Bm3&Object&Am3<self::_Bm3&Object&Am3::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Bm3<Z extends core::Object* = dynamic> extends self::_Bm3&Object&Am3<self::Bm3::Z*> {
   synthetic constructor •() → self::Bm3<self::Bm3::Z*>*
@@ -466,6 +946,16 @@
   const synthetic constructor •() → self::_Cm3&Object&Am3<self::_Cm3&Object&Am3::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Cm3<Z extends core::Object* = dynamic> extends self::_Cm3&Object&Am3<self::Cm3::Z*> {
   synthetic constructor •() → self::Cm3<self::Cm3::Z*>*
@@ -476,6 +966,16 @@
   const synthetic constructor •() → self::_Dm3&Object&Am3<self::_Dm3&Object&Am3::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Dm3<Z extends core::Object* = dynamic> extends self::_Dm3&Object&Am3<self::Dm3::Z*> {
   synthetic constructor •() → self::Dm3<self::Dm3::Z*>*
@@ -486,6 +986,16 @@
   const synthetic constructor •() → self::_Em3&Object&Am3<self::_Em3&Object&Am3::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Em3<Z extends core::Object* = dynamic> extends self::_Em3&Object&Am3<self::Em3::Z*> {
   synthetic constructor •() → self::Em3<self::Em3::Z*>*
@@ -496,6 +1006,16 @@
   const synthetic constructor •() → self::_Fm3&Object&Am3<self::_Fm3&Object&Am3::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Fm3<Z extends core::Object* = dynamic> extends self::_Fm3&Object&Am3<self::Fm3::Z*> {
   synthetic constructor •() → self::Fm3<self::Fm3::Z*>*
@@ -506,6 +1026,16 @@
   const synthetic constructor •() → self::_Gm3&Object&Am3<self::_Gm3&Object&Am3::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Gm3<Z extends core::Object* = dynamic> extends self::_Gm3&Object&Am3<self::Gm3::Z*> {
   synthetic constructor •() → self::Gm3<self::Gm3::Z*>*
@@ -516,6 +1046,16 @@
   const synthetic constructor •() → self::_Hm3&Object&Am3<self::_Hm3&Object&Am3::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Hm3<Z extends core::Object* = dynamic> extends self::_Hm3&Object&Am3<self::Hm3::Z*> {
   synthetic constructor •() → self::Hm3<self::Hm3::Z*>*
@@ -526,6 +1066,16 @@
   const synthetic constructor •() → self::_Im3&Object&Am3<self::_Im3&Object&Am3::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Im3<Z extends core::Object* = dynamic> extends self::_Im3&Object&Am3<self::Im3::Z*> {
   synthetic constructor •() → self::Im3<self::Im3::Z*>*
@@ -536,6 +1086,16 @@
   const synthetic constructor •() → self::_Jm3&Object&Am3<self::_Jm3&Object&Am3::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Jm3<Z extends core::Object* = dynamic> extends self::_Jm3&Object&Am3<self::Jm3::Z*> {
   synthetic constructor •() → self::Jm3<self::Jm3::Z*>*
@@ -546,6 +1106,16 @@
   const synthetic constructor •() → self::_Km3&Object&Am3<self::_Km3&Object&Am3::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Km3<Z extends core::Object* = dynamic> extends self::_Km3&Object&Am3<self::Km3::Z*> {
   synthetic constructor •() → self::Km3<self::Km3::Z*>*
@@ -555,85 +1125,295 @@
 class Af1<X extends (core::int*) →* dynamic = (core::int*) →* dynamic> extends core::Object {
   static factory foo<X extends (core::int*) →* dynamic = dynamic>() → self::Af1<self::Af1::foo::X*>*
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Bf1<X extends (core::int*) →* dynamic = (core::int*) →* dynamic> extends core::Object {
   static factory foo<X extends (core::int*) →* dynamic = dynamic>() → self::Bf1<self::Bf1::foo::X*>*
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Cf1<X extends () →* core::int* = () →* core::int*> extends core::Object {
   static factory foo<X extends () →* core::int* = dynamic>() → self::Cf1<self::Cf1::foo::X*>*
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Df1<X extends () →* dynamic = () →* dynamic> extends core::Object {
   static factory foo<X extends () →* dynamic = dynamic>() → self::Df1<self::Df1::foo::X*>*
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Ef1<X extends () →* dynamic = () →* dynamic> extends core::Object {
   static factory foo<X extends () →* dynamic = dynamic>() → self::Ef1<self::Ef1::foo::X*>*
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Ff1<X extends ({x: core::int*}) →* dynamic = ({x: core::int*}) →* dynamic> extends core::Object {
   static factory foo<X extends ({x: core::int*}) →* dynamic = dynamic>() → self::Ff1<self::Ff1::foo::X*>*
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Gf1<X extends ([core::int*]) →* dynamic = ([core::int*]) →* dynamic> extends core::Object {
   static factory foo<X extends ([core::int*]) →* dynamic = dynamic>() → self::Gf1<self::Gf1::foo::X*>*
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Hf1<X extends ([core::int*]) →* dynamic = ([core::int*]) →* dynamic> extends core::Object {
   static factory foo<X extends ([core::int*]) →* dynamic = dynamic>() → self::Hf1<self::Hf1::foo::X*>*
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class If1<X extends core::Function* = core::Function*> extends core::Object {
   static factory foo<X extends core::Function* = dynamic>() → self::If1<self::If1::foo::X*>*
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Jf1<X extends (core::Function*) →* dynamic = (core::Function*) →* dynamic> extends core::Object {
   static factory foo<X extends (core::Function*) →* dynamic = dynamic>() → self::Jf1<self::Jf1::foo::X*>*
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Kf1<X extends () →* (() →* core::Function*) →* dynamic = () →* (() →* core::Function*) →* dynamic> extends core::Object {
   static factory foo<X extends () →* (() →* core::Function*) →* dynamic = dynamic>() → self::Kf1<self::Kf1::foo::X*>*
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Bf2<X extends (core::int*) →* dynamic = (core::int*) →* dynamic> extends core::Object {
   static factory foo<X extends (core::int*) →* dynamic = dynamic>() → self::Bf2<self::Bf2::foo::X*>*
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Cf2<X extends (core::int*) →* dynamic = (core::int*) →* dynamic> extends core::Object {
   static factory foo<X extends (core::int*) →* dynamic = dynamic>() → self::Cf2<self::Cf2::foo::X*>*
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Df2<X extends () →* core::int* = () →* core::int*> extends core::Object {
   static factory foo<X extends () →* core::int* = dynamic>() → self::Df2<self::Df2::foo::X*>*
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Ef2<X extends () →* dynamic = () →* dynamic> extends core::Object {
   static factory foo<X extends () →* dynamic = dynamic>() → self::Ef2<self::Ef2::foo::X*>*
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Ff2<X extends () →* dynamic = () →* dynamic> extends core::Object {
   static factory foo<X extends () →* dynamic = dynamic>() → self::Ff2<self::Ff2::foo::X*>*
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Gf2<X extends ({x: core::int*}) →* dynamic = ({x: core::int*}) →* dynamic> extends core::Object {
   static factory foo<X extends ({x: core::int*}) →* dynamic = dynamic>() → self::Gf2<self::Gf2::foo::X*>*
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Hf2<X extends ([core::int*]) →* dynamic = ([core::int*]) →* dynamic> extends core::Object {
   static factory foo<X extends ([core::int*]) →* dynamic = dynamic>() → self::Hf2<self::Hf2::foo::X*>*
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class If2<X extends ([core::int*]) →* dynamic = ([core::int*]) →* dynamic> extends core::Object {
   static factory foo<X extends ([core::int*]) →* dynamic = dynamic>() → self::If2<self::If2::foo::X*>*
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Jf2<X extends (core::Function*) →* dynamic = (core::Function*) →* dynamic> extends core::Object {
   static factory foo<X extends (core::Function*) →* dynamic = dynamic>() → self::Jf2<self::Jf2::foo::X*>*
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Kf2<X extends () →* (() →* core::Function*) →* dynamic = () →* (() →* core::Function*) →* dynamic> extends core::Object {
   static factory foo<X extends () →* (() →* core::Function*) →* dynamic = dynamic>() → self::Kf2<self::Kf2::foo::X*>*
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/closure.dart.outline.expect b/pkg/front_end/testcases/general_nnbd_opt_out/closure.dart.outline.expect
index 4f62ce2..3d14bb8 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/closure.dart.outline.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/closure.dart.outline.expect
@@ -6,10 +6,30 @@
   field self::Bar* _field;
   synthetic constructor •() → self::Foo*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Bar extends core::Object {
   synthetic constructor •() → self::Bar*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method useCallback(dynamic callback) → dynamic
   ;
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/closure.dart.strong.expect b/pkg/front_end/testcases/general_nnbd_opt_out/closure.dart.strong.expect
index bb83955..9362964 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/closure.dart.strong.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/closure.dart.strong.expect
@@ -7,11 +7,31 @@
   synthetic constructor •() → self::Foo*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Bar extends core::Object {
   synthetic constructor •() → self::Bar*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method useCallback(dynamic callback) → dynamic {
   dynamic _ = callback.call();
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/closure.dart.strong.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/closure.dart.strong.transformed.expect
index bb83955..9362964 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/closure.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/closure.dart.strong.transformed.expect
@@ -7,11 +7,31 @@
   synthetic constructor •() → self::Foo*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Bar extends core::Object {
   synthetic constructor •() → self::Bar*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method useCallback(dynamic callback) → dynamic {
   dynamic _ = callback.call();
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/closure.dart.weak.expect b/pkg/front_end/testcases/general_nnbd_opt_out/closure.dart.weak.expect
index bb83955..9362964 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/closure.dart.weak.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/closure.dart.weak.expect
@@ -7,11 +7,31 @@
   synthetic constructor •() → self::Foo*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Bar extends core::Object {
   synthetic constructor •() → self::Bar*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method useCallback(dynamic callback) → dynamic {
   dynamic _ = callback.call();
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/closure.dart.weak.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/closure.dart.weak.transformed.expect
index bb83955..9362964 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/closure.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/closure.dart.weak.transformed.expect
@@ -7,11 +7,31 @@
   synthetic constructor •() → self::Foo*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Bar extends core::Object {
   synthetic constructor •() → self::Bar*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method useCallback(dynamic callback) → dynamic {
   dynamic _ = callback.call();
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/co19_language_metadata_syntax_t04.dart.outline.expect b/pkg/front_end/testcases/general_nnbd_opt_out/co19_language_metadata_syntax_t04.dart.outline.expect
index 464c765..0ddfd27 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/co19_language_metadata_syntax_t04.dart.outline.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/co19_language_metadata_syntax_t04.dart.outline.expect
@@ -20,10 +20,30 @@
   const constructor •() → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends core::Object {
   synthetic constructor •() → self::B*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/co19_language_metadata_syntax_t04.dart.strong.expect b/pkg/front_end/testcases/general_nnbd_opt_out/co19_language_metadata_syntax_t04.dart.strong.expect
index 04ddb74..e54e63a 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/co19_language_metadata_syntax_t04.dart.strong.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/co19_language_metadata_syntax_t04.dart.strong.expect
@@ -20,10 +20,30 @@
   const constructor •() → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends core::Object {
   synthetic constructor •() → self::B*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/co19_language_metadata_syntax_t04.dart.strong.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/co19_language_metadata_syntax_t04.dart.strong.transformed.expect
index 04ddb74..e54e63a 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/co19_language_metadata_syntax_t04.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/co19_language_metadata_syntax_t04.dart.strong.transformed.expect
@@ -20,10 +20,30 @@
   const constructor •() → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends core::Object {
   synthetic constructor •() → self::B*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/co19_language_metadata_syntax_t04.dart.weak.expect b/pkg/front_end/testcases/general_nnbd_opt_out/co19_language_metadata_syntax_t04.dart.weak.expect
index 04ddb74..e54e63a 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/co19_language_metadata_syntax_t04.dart.weak.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/co19_language_metadata_syntax_t04.dart.weak.expect
@@ -20,10 +20,30 @@
   const constructor •() → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends core::Object {
   synthetic constructor •() → self::B*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/co19_language_metadata_syntax_t04.dart.weak.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/co19_language_metadata_syntax_t04.dart.weak.transformed.expect
index 04ddb74..e54e63a 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/co19_language_metadata_syntax_t04.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/co19_language_metadata_syntax_t04.dart.weak.transformed.expect
@@ -20,10 +20,30 @@
   const constructor •() → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends core::Object {
   synthetic constructor •() → self::B*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/complex_class_hierarchy.dart.outline.expect b/pkg/front_end/testcases/general_nnbd_opt_out/complex_class_hierarchy.dart.outline.expect
index 73716f7..bccf614 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/complex_class_hierarchy.dart.outline.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/complex_class_hierarchy.dart.outline.expect
@@ -5,6 +5,16 @@
 class A extends core::Object {
   synthetic constructor •() → self::A*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A {
   synthetic constructor •() → self::B*
@@ -21,6 +31,16 @@
 class G<T extends self::A* = self::A*> extends core::Object {
   synthetic constructor •() → self::G<self::G::T*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class GB extends self::G<self::B*> {
   synthetic constructor •() → self::GB*
@@ -37,6 +57,16 @@
 class X extends core::Object implements self::A {
   synthetic constructor •() → self::X*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Y extends self::X {
   synthetic constructor •() → self::Y*
@@ -45,14 +75,44 @@
 class Z extends core::Object implements self::Y {
   synthetic constructor •() → self::Z*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class W extends core::Object implements self::Z {
   synthetic constructor •() → self::W*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class GX extends core::Object implements self::G<self::A*> {
   synthetic constructor •() → self::GX*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class GY extends self::X implements self::GB {
   synthetic constructor •() → self::GY*
@@ -61,10 +121,30 @@
 class GZ extends core::Object implements self::Y, self::GC {
   synthetic constructor •() → self::GZ*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class GW extends core::Object implements self::Z, self::GD {
   synthetic constructor •() → self::GW*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class GU extends self::GW {
   synthetic constructor •() → self::GU*
@@ -77,10 +157,30 @@
 class ARO<S extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::ARO<self::ARO::S*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class ARQ<T extends core::Object* = dynamic> extends core::Object implements self::ARO<self::ARQ::T*> {
   synthetic constructor •() → self::ARQ<self::ARQ::T*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class ARN extends self::ARQ<self::A*> {
   synthetic constructor •() → self::ARN*
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/complex_class_hierarchy.dart.strong.expect b/pkg/front_end/testcases/general_nnbd_opt_out/complex_class_hierarchy.dart.strong.expect
index def07a7..83cec9b 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/complex_class_hierarchy.dart.strong.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/complex_class_hierarchy.dart.strong.expect
@@ -6,6 +6,16 @@
   synthetic constructor •() → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A {
   synthetic constructor •() → self::B*
@@ -26,6 +36,16 @@
   synthetic constructor •() → self::G<self::G::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class GB extends self::G<self::B*> {
   synthetic constructor •() → self::GB*
@@ -46,6 +66,16 @@
   synthetic constructor •() → self::X*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Y extends self::X {
   synthetic constructor •() → self::Y*
@@ -56,16 +86,46 @@
   synthetic constructor •() → self::Z*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class W extends core::Object implements self::Z {
   synthetic constructor •() → self::W*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class GX extends core::Object implements self::G<self::A*> {
   synthetic constructor •() → self::GX*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class GY extends self::X implements self::GB {
   synthetic constructor •() → self::GY*
@@ -76,11 +136,31 @@
   synthetic constructor •() → self::GZ*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class GW extends core::Object implements self::Z, self::GD {
   synthetic constructor •() → self::GW*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class GU extends self::GW {
   synthetic constructor •() → self::GU*
@@ -96,11 +176,31 @@
   synthetic constructor •() → self::ARO<self::ARO::S*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class ARQ<T extends core::Object* = dynamic> extends core::Object implements self::ARO<self::ARQ::T*> {
   synthetic constructor •() → self::ARQ<self::ARQ::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class ARN extends self::ARQ<self::A*> {
   synthetic constructor •() → self::ARN*
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/complex_class_hierarchy.dart.strong.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/complex_class_hierarchy.dart.strong.transformed.expect
index def07a7..83cec9b 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/complex_class_hierarchy.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/complex_class_hierarchy.dart.strong.transformed.expect
@@ -6,6 +6,16 @@
   synthetic constructor •() → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A {
   synthetic constructor •() → self::B*
@@ -26,6 +36,16 @@
   synthetic constructor •() → self::G<self::G::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class GB extends self::G<self::B*> {
   synthetic constructor •() → self::GB*
@@ -46,6 +66,16 @@
   synthetic constructor •() → self::X*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Y extends self::X {
   synthetic constructor •() → self::Y*
@@ -56,16 +86,46 @@
   synthetic constructor •() → self::Z*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class W extends core::Object implements self::Z {
   synthetic constructor •() → self::W*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class GX extends core::Object implements self::G<self::A*> {
   synthetic constructor •() → self::GX*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class GY extends self::X implements self::GB {
   synthetic constructor •() → self::GY*
@@ -76,11 +136,31 @@
   synthetic constructor •() → self::GZ*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class GW extends core::Object implements self::Z, self::GD {
   synthetic constructor •() → self::GW*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class GU extends self::GW {
   synthetic constructor •() → self::GU*
@@ -96,11 +176,31 @@
   synthetic constructor •() → self::ARO<self::ARO::S*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class ARQ<T extends core::Object* = dynamic> extends core::Object implements self::ARO<self::ARQ::T*> {
   synthetic constructor •() → self::ARQ<self::ARQ::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class ARN extends self::ARQ<self::A*> {
   synthetic constructor •() → self::ARN*
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/complex_class_hierarchy.dart.weak.expect b/pkg/front_end/testcases/general_nnbd_opt_out/complex_class_hierarchy.dart.weak.expect
index def07a7..83cec9b 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/complex_class_hierarchy.dart.weak.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/complex_class_hierarchy.dart.weak.expect
@@ -6,6 +6,16 @@
   synthetic constructor •() → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A {
   synthetic constructor •() → self::B*
@@ -26,6 +36,16 @@
   synthetic constructor •() → self::G<self::G::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class GB extends self::G<self::B*> {
   synthetic constructor •() → self::GB*
@@ -46,6 +66,16 @@
   synthetic constructor •() → self::X*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Y extends self::X {
   synthetic constructor •() → self::Y*
@@ -56,16 +86,46 @@
   synthetic constructor •() → self::Z*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class W extends core::Object implements self::Z {
   synthetic constructor •() → self::W*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class GX extends core::Object implements self::G<self::A*> {
   synthetic constructor •() → self::GX*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class GY extends self::X implements self::GB {
   synthetic constructor •() → self::GY*
@@ -76,11 +136,31 @@
   synthetic constructor •() → self::GZ*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class GW extends core::Object implements self::Z, self::GD {
   synthetic constructor •() → self::GW*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class GU extends self::GW {
   synthetic constructor •() → self::GU*
@@ -96,11 +176,31 @@
   synthetic constructor •() → self::ARO<self::ARO::S*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class ARQ<T extends core::Object* = dynamic> extends core::Object implements self::ARO<self::ARQ::T*> {
   synthetic constructor •() → self::ARQ<self::ARQ::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class ARN extends self::ARQ<self::A*> {
   synthetic constructor •() → self::ARN*
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/complex_class_hierarchy.dart.weak.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/complex_class_hierarchy.dart.weak.transformed.expect
index def07a7..83cec9b 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/complex_class_hierarchy.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/complex_class_hierarchy.dart.weak.transformed.expect
@@ -6,6 +6,16 @@
   synthetic constructor •() → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A {
   synthetic constructor •() → self::B*
@@ -26,6 +36,16 @@
   synthetic constructor •() → self::G<self::G::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class GB extends self::G<self::B*> {
   synthetic constructor •() → self::GB*
@@ -46,6 +66,16 @@
   synthetic constructor •() → self::X*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Y extends self::X {
   synthetic constructor •() → self::Y*
@@ -56,16 +86,46 @@
   synthetic constructor •() → self::Z*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class W extends core::Object implements self::Z {
   synthetic constructor •() → self::W*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class GX extends core::Object implements self::G<self::A*> {
   synthetic constructor •() → self::GX*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class GY extends self::X implements self::GB {
   synthetic constructor •() → self::GY*
@@ -76,11 +136,31 @@
   synthetic constructor •() → self::GZ*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class GW extends core::Object implements self::Z, self::GD {
   synthetic constructor •() → self::GW*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class GU extends self::GW {
   synthetic constructor •() → self::GU*
@@ -96,11 +176,31 @@
   synthetic constructor •() → self::ARO<self::ARO::S*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class ARQ<T extends core::Object* = dynamic> extends core::Object implements self::ARO<self::ARQ::T*> {
   synthetic constructor •() → self::ARQ<self::ARQ::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class ARN extends self::ARQ<self::A*> {
   synthetic constructor •() → self::ARN*
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/compound_binary_implicit_as.dart.outline.expect b/pkg/front_end/testcases/general_nnbd_opt_out/compound_binary_implicit_as.dart.outline.expect
index 36ce691..d8fd738 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/compound_binary_implicit_as.dart.outline.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/compound_binary_implicit_as.dart.outline.expect
@@ -5,6 +5,16 @@
 class A extends core::Object {
   synthetic constructor •() → self::A*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A {
   synthetic constructor •() → self::B*
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/compound_binary_implicit_as.dart.strong.expect b/pkg/front_end/testcases/general_nnbd_opt_out/compound_binary_implicit_as.dart.strong.expect
index 3781401..bd2219f 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/compound_binary_implicit_as.dart.strong.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/compound_binary_implicit_as.dart.strong.expect
@@ -6,6 +6,16 @@
   synthetic constructor •() → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A {
   synthetic constructor •() → self::B*
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/compound_binary_implicit_as.dart.strong.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/compound_binary_implicit_as.dart.strong.transformed.expect
index 3781401..bd2219f 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/compound_binary_implicit_as.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/compound_binary_implicit_as.dart.strong.transformed.expect
@@ -6,6 +6,16 @@
   synthetic constructor •() → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A {
   synthetic constructor •() → self::B*
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/compound_binary_implicit_as.dart.weak.expect b/pkg/front_end/testcases/general_nnbd_opt_out/compound_binary_implicit_as.dart.weak.expect
index 3781401..bd2219f 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/compound_binary_implicit_as.dart.weak.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/compound_binary_implicit_as.dart.weak.expect
@@ -6,6 +6,16 @@
   synthetic constructor •() → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A {
   synthetic constructor •() → self::B*
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/compound_binary_implicit_as.dart.weak.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/compound_binary_implicit_as.dart.weak.transformed.expect
index 3781401..bd2219f 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/compound_binary_implicit_as.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/compound_binary_implicit_as.dart.weak.transformed.expect
@@ -6,6 +6,16 @@
   synthetic constructor •() → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A {
   synthetic constructor •() → self::B*
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/const_redirect_to_nonconst.dart.outline.expect b/pkg/front_end/testcases/general_nnbd_opt_out/const_redirect_to_nonconst.dart.outline.expect
index aef74b2..8ec6984 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/const_redirect_to_nonconst.dart.outline.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/const_redirect_to_nonconst.dart.outline.expect
@@ -15,6 +15,16 @@
     ;
   constructor bad() → self::A*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A /*hasConstConstructor*/  {
   const constructor •() → self::B*
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/const_redirect_to_nonconst.dart.strong.expect b/pkg/front_end/testcases/general_nnbd_opt_out/const_redirect_to_nonconst.dart.strong.expect
index 13e8324..1945b51 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/const_redirect_to_nonconst.dart.strong.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/const_redirect_to_nonconst.dart.strong.expect
@@ -19,6 +19,16 @@
     ;
   constructor bad() → self::A*
     : super core::Object::•() {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A /*hasConstConstructor*/  {
   const constructor •() → self::B*
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/const_redirect_to_nonconst.dart.strong.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/const_redirect_to_nonconst.dart.strong.transformed.expect
index 13e8324..1945b51 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/const_redirect_to_nonconst.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/const_redirect_to_nonconst.dart.strong.transformed.expect
@@ -19,6 +19,16 @@
     ;
   constructor bad() → self::A*
     : super core::Object::•() {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A /*hasConstConstructor*/  {
   const constructor •() → self::B*
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/const_redirect_to_nonconst.dart.weak.expect b/pkg/front_end/testcases/general_nnbd_opt_out/const_redirect_to_nonconst.dart.weak.expect
index 13e8324..1945b51 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/const_redirect_to_nonconst.dart.weak.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/const_redirect_to_nonconst.dart.weak.expect
@@ -19,6 +19,16 @@
     ;
   constructor bad() → self::A*
     : super core::Object::•() {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A /*hasConstConstructor*/  {
   const constructor •() → self::B*
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/const_redirect_to_nonconst.dart.weak.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/const_redirect_to_nonconst.dart.weak.transformed.expect
index 13e8324..1945b51 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/const_redirect_to_nonconst.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/const_redirect_to_nonconst.dart.weak.transformed.expect
@@ -19,6 +19,16 @@
     ;
   constructor bad() → self::A*
     : super core::Object::•() {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A /*hasConstConstructor*/  {
   const constructor •() → self::B*
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/constructor_const_inference.dart.outline.expect b/pkg/front_end/testcases/general_nnbd_opt_out/constructor_const_inference.dart.outline.expect
index 934d099..bbe0bc2 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/constructor_const_inference.dart.outline.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/constructor_const_inference.dart.outline.expect
@@ -6,11 +6,31 @@
   const constructor •() → self::_Y<self::_Y::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class A<T extends core::Object* = dynamic> extends core::Object {
   generic-covariant-impl field self::_Y<self::A::T*>* x;
   constructor •(self::_Y<self::A::T*>* x) → self::A<self::A::T*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B<T extends core::Object* = dynamic> extends self::A<self::B::T*> {
   constructor •() → self::B<self::B::T*>*
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/constructor_const_inference.dart.strong.expect b/pkg/front_end/testcases/general_nnbd_opt_out/constructor_const_inference.dart.strong.expect
index 1179768..b21f585 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/constructor_const_inference.dart.strong.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/constructor_const_inference.dart.strong.expect
@@ -6,12 +6,32 @@
   const constructor •() → self::_Y<self::_Y::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class A<T extends core::Object* = dynamic> extends core::Object {
   generic-covariant-impl field self::_Y<self::A::T*>* x;
   constructor •(self::_Y<self::A::T*>* x) → self::A<self::A::T*>*
     : self::A::x = x, super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B<T extends core::Object* = dynamic> extends self::A<self::B::T*> {
   constructor •() → self::B<self::B::T*>*
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/constructor_const_inference.dart.strong.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/constructor_const_inference.dart.strong.transformed.expect
index 1179768..b21f585 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/constructor_const_inference.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/constructor_const_inference.dart.strong.transformed.expect
@@ -6,12 +6,32 @@
   const constructor •() → self::_Y<self::_Y::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class A<T extends core::Object* = dynamic> extends core::Object {
   generic-covariant-impl field self::_Y<self::A::T*>* x;
   constructor •(self::_Y<self::A::T*>* x) → self::A<self::A::T*>*
     : self::A::x = x, super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B<T extends core::Object* = dynamic> extends self::A<self::B::T*> {
   constructor •() → self::B<self::B::T*>*
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/constructor_const_inference.dart.weak.expect b/pkg/front_end/testcases/general_nnbd_opt_out/constructor_const_inference.dart.weak.expect
index 1179768..b21f585 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/constructor_const_inference.dart.weak.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/constructor_const_inference.dart.weak.expect
@@ -6,12 +6,32 @@
   const constructor •() → self::_Y<self::_Y::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class A<T extends core::Object* = dynamic> extends core::Object {
   generic-covariant-impl field self::_Y<self::A::T*>* x;
   constructor •(self::_Y<self::A::T*>* x) → self::A<self::A::T*>*
     : self::A::x = x, super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B<T extends core::Object* = dynamic> extends self::A<self::B::T*> {
   constructor •() → self::B<self::B::T*>*
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/constructor_const_inference.dart.weak.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/constructor_const_inference.dart.weak.transformed.expect
index 1179768..b21f585 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/constructor_const_inference.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/constructor_const_inference.dart.weak.transformed.expect
@@ -6,12 +6,32 @@
   const constructor •() → self::_Y<self::_Y::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class A<T extends core::Object* = dynamic> extends core::Object {
   generic-covariant-impl field self::_Y<self::A::T*>* x;
   constructor •(self::_Y<self::A::T*>* x) → self::A<self::A::T*>*
     : self::A::x = x, super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B<T extends core::Object* = dynamic> extends self::A<self::B::T*> {
   constructor •() → self::B<self::B::T*>*
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/constructor_cycle.dart.outline.expect b/pkg/front_end/testcases/general_nnbd_opt_out/constructor_cycle.dart.outline.expect
index 0f4bd7a..1d73f78 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/constructor_cycle.dart.outline.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/constructor_cycle.dart.outline.expect
@@ -11,6 +11,16 @@
     ;
   constructor •() → self::A*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/constructor_cycle.dart.strong.expect b/pkg/front_end/testcases/general_nnbd_opt_out/constructor_cycle.dart.strong.expect
index 4423621..c7dcf49 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/constructor_cycle.dart.strong.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/constructor_cycle.dart.strong.expect
@@ -28,5 +28,15 @@
   constructor •() → self::A*
     : this self::A::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/constructor_cycle.dart.strong.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/constructor_cycle.dart.strong.transformed.expect
index 4423621..c7dcf49 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/constructor_cycle.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/constructor_cycle.dart.strong.transformed.expect
@@ -28,5 +28,15 @@
   constructor •() → self::A*
     : this self::A::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/constructor_cycle.dart.weak.expect b/pkg/front_end/testcases/general_nnbd_opt_out/constructor_cycle.dart.weak.expect
index 4423621..c7dcf49 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/constructor_cycle.dart.weak.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/constructor_cycle.dart.weak.expect
@@ -28,5 +28,15 @@
   constructor •() → self::A*
     : this self::A::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/constructor_cycle.dart.weak.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/constructor_cycle.dart.weak.transformed.expect
index 4423621..c7dcf49 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/constructor_cycle.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/constructor_cycle.dart.weak.transformed.expect
@@ -28,5 +28,15 @@
   constructor •() → self::A*
     : this self::A::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/constructor_function_types.dart.outline.expect b/pkg/front_end/testcases/general_nnbd_opt_out/constructor_function_types.dart.outline.expect
index cdb1d5b..e6e46e9 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/constructor_function_types.dart.outline.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/constructor_function_types.dart.outline.expect
@@ -5,18 +5,58 @@
 class A extends core::Object {
   constructor •() → self::A*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends core::Object {
   constructor •(core::int* x, core::double* y, core::String* s) → self::B*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C<T extends core::Object* = dynamic> extends core::Object {
   constructor •() → self::C<self::C::T*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D<T extends core::Object* = dynamic, S extends core::Object* = dynamic> extends core::Object {
   constructor •(self::D::T* x, self::D::S* y) → self::D<self::D::T*, self::D::S*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → void
   ;
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/constructor_function_types.dart.strong.expect b/pkg/front_end/testcases/general_nnbd_opt_out/constructor_function_types.dart.strong.expect
index dfca6ce..5a5ea65 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/constructor_function_types.dart.strong.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/constructor_function_types.dart.strong.expect
@@ -6,21 +6,61 @@
   constructor •() → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends core::Object {
   constructor •(core::int* x, core::double* y, core::String* s) → self::B*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C<T extends core::Object* = dynamic> extends core::Object {
   constructor •() → self::C<self::C::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D<T extends core::Object* = dynamic, S extends core::Object* = dynamic> extends core::Object {
   constructor •(self::D::T* x, self::D::S* y) → self::D<self::D::T*, self::D::S*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → void {
   new self::A::•();
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/constructor_function_types.dart.strong.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/constructor_function_types.dart.strong.transformed.expect
index dfca6ce..5a5ea65 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/constructor_function_types.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/constructor_function_types.dart.strong.transformed.expect
@@ -6,21 +6,61 @@
   constructor •() → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends core::Object {
   constructor •(core::int* x, core::double* y, core::String* s) → self::B*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C<T extends core::Object* = dynamic> extends core::Object {
   constructor •() → self::C<self::C::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D<T extends core::Object* = dynamic, S extends core::Object* = dynamic> extends core::Object {
   constructor •(self::D::T* x, self::D::S* y) → self::D<self::D::T*, self::D::S*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → void {
   new self::A::•();
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/constructor_function_types.dart.weak.expect b/pkg/front_end/testcases/general_nnbd_opt_out/constructor_function_types.dart.weak.expect
index dfca6ce..5a5ea65 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/constructor_function_types.dart.weak.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/constructor_function_types.dart.weak.expect
@@ -6,21 +6,61 @@
   constructor •() → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends core::Object {
   constructor •(core::int* x, core::double* y, core::String* s) → self::B*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C<T extends core::Object* = dynamic> extends core::Object {
   constructor •() → self::C<self::C::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D<T extends core::Object* = dynamic, S extends core::Object* = dynamic> extends core::Object {
   constructor •(self::D::T* x, self::D::S* y) → self::D<self::D::T*, self::D::S*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → void {
   new self::A::•();
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/constructor_function_types.dart.weak.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/constructor_function_types.dart.weak.transformed.expect
index dfca6ce..5a5ea65 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/constructor_function_types.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/constructor_function_types.dart.weak.transformed.expect
@@ -6,21 +6,61 @@
   constructor •() → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends core::Object {
   constructor •(core::int* x, core::double* y, core::String* s) → self::B*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C<T extends core::Object* = dynamic> extends core::Object {
   constructor •() → self::C<self::C::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D<T extends core::Object* = dynamic, S extends core::Object* = dynamic> extends core::Object {
   constructor •(self::D::T* x, self::D::S* y) → self::D<self::D::T*, self::D::S*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → void {
   new self::A::•();
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/constructor_initializer_invalid.dart.outline.expect b/pkg/front_end/testcases/general_nnbd_opt_out/constructor_initializer_invalid.dart.outline.expect
index c8053a4..0a5dd83 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/constructor_initializer_invalid.dart.outline.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/constructor_initializer_invalid.dart.outline.expect
@@ -23,16 +23,46 @@
   field core::int* f;
   constructor •() → self::C1*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C2 extends core::Object {
   field core::int* f;
   constructor •() → self::C2*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C3 extends core::Object {
   field core::int* f;
   constructor •() → self::C3*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/constructor_initializer_invalid.dart.strong.expect b/pkg/front_end/testcases/general_nnbd_opt_out/constructor_initializer_invalid.dart.strong.expect
index 34fc7a1..2b933e4 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/constructor_initializer_invalid.dart.strong.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/constructor_initializer_invalid.dart.strong.expect
@@ -30,6 +30,16 @@
 class C1 { int f; C1() : ; }
                          ^"
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C2 extends core::Object {
   field core::int* f;
@@ -38,6 +48,16 @@
 class C2 { int f; C2() : f; }
                           ^" as{TypeError,ForDynamic} core::int*, super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C3 extends core::Object {
   field core::int* f = null;
@@ -46,12 +66,22 @@
 class C3 { int f; C3() : f++; }
                          ^"
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   self::C1* c1 = new self::C1::•();
-  c1.{core::Object::toString}();
+  c1.{self::C1::toString}();
   self::C2* c2 = new self::C2::•();
-  c2.{core::Object::toString}();
+  c2.{self::C2::toString}();
   self::C3* c3 = new self::C3::•();
-  c3.{core::Object::toString}();
+  c3.{self::C3::toString}();
 }
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/constructor_initializer_invalid.dart.strong.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/constructor_initializer_invalid.dart.strong.transformed.expect
index 34fc7a1..2b933e4 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/constructor_initializer_invalid.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/constructor_initializer_invalid.dart.strong.transformed.expect
@@ -30,6 +30,16 @@
 class C1 { int f; C1() : ; }
                          ^"
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C2 extends core::Object {
   field core::int* f;
@@ -38,6 +48,16 @@
 class C2 { int f; C2() : f; }
                           ^" as{TypeError,ForDynamic} core::int*, super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C3 extends core::Object {
   field core::int* f = null;
@@ -46,12 +66,22 @@
 class C3 { int f; C3() : f++; }
                          ^"
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   self::C1* c1 = new self::C1::•();
-  c1.{core::Object::toString}();
+  c1.{self::C1::toString}();
   self::C2* c2 = new self::C2::•();
-  c2.{core::Object::toString}();
+  c2.{self::C2::toString}();
   self::C3* c3 = new self::C3::•();
-  c3.{core::Object::toString}();
+  c3.{self::C3::toString}();
 }
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/constructor_initializer_invalid.dart.weak.expect b/pkg/front_end/testcases/general_nnbd_opt_out/constructor_initializer_invalid.dart.weak.expect
index 34fc7a1..2b933e4 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/constructor_initializer_invalid.dart.weak.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/constructor_initializer_invalid.dart.weak.expect
@@ -30,6 +30,16 @@
 class C1 { int f; C1() : ; }
                          ^"
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C2 extends core::Object {
   field core::int* f;
@@ -38,6 +48,16 @@
 class C2 { int f; C2() : f; }
                           ^" as{TypeError,ForDynamic} core::int*, super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C3 extends core::Object {
   field core::int* f = null;
@@ -46,12 +66,22 @@
 class C3 { int f; C3() : f++; }
                          ^"
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   self::C1* c1 = new self::C1::•();
-  c1.{core::Object::toString}();
+  c1.{self::C1::toString}();
   self::C2* c2 = new self::C2::•();
-  c2.{core::Object::toString}();
+  c2.{self::C2::toString}();
   self::C3* c3 = new self::C3::•();
-  c3.{core::Object::toString}();
+  c3.{self::C3::toString}();
 }
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/constructor_initializer_invalid.dart.weak.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/constructor_initializer_invalid.dart.weak.transformed.expect
index 34fc7a1..2b933e4 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/constructor_initializer_invalid.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/constructor_initializer_invalid.dart.weak.transformed.expect
@@ -30,6 +30,16 @@
 class C1 { int f; C1() : ; }
                          ^"
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C2 extends core::Object {
   field core::int* f;
@@ -38,6 +48,16 @@
 class C2 { int f; C2() : f; }
                           ^" as{TypeError,ForDynamic} core::int*, super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C3 extends core::Object {
   field core::int* f = null;
@@ -46,12 +66,22 @@
 class C3 { int f; C3() : f++; }
                          ^"
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   self::C1* c1 = new self::C1::•();
-  c1.{core::Object::toString}();
+  c1.{self::C1::toString}();
   self::C2* c2 = new self::C2::•();
-  c2.{core::Object::toString}();
+  c2.{self::C2::toString}();
   self::C3* c3 = new self::C3::•();
-  c3.{core::Object::toString}();
+  c3.{self::C3::toString}();
 }
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/continue_inference_after_error.dart.outline.expect b/pkg/front_end/testcases/general_nnbd_opt_out/continue_inference_after_error.dart.outline.expect
index a5ac2794..2b2f2a5 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/continue_inference_after_error.dart.outline.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/continue_inference_after_error.dart.outline.expect
@@ -7,6 +7,16 @@
 class C extends core::Object {
   synthetic constructor •() → self::C*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method test() → dynamic
   ;
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/continue_inference_after_error.dart.strong.expect b/pkg/front_end/testcases/general_nnbd_opt_out/continue_inference_after_error.dart.strong.expect
index 554df33..35d026c 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/continue_inference_after_error.dart.strong.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/continue_inference_after_error.dart.strong.expect
@@ -21,6 +21,16 @@
   synthetic constructor •() → self::C*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method test() → dynamic {
   let final<BottomType> #t1 = invalid-expression "pkg/front_end/testcases/general_nnbd_opt_out/continue_inference_after_error.dart:12:3: Error: A prefix can't be used as an expression.
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/continue_inference_after_error.dart.strong.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/continue_inference_after_error.dart.strong.transformed.expect
index 554df33..35d026c 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/continue_inference_after_error.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/continue_inference_after_error.dart.strong.transformed.expect
@@ -21,6 +21,16 @@
   synthetic constructor •() → self::C*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method test() → dynamic {
   let final<BottomType> #t1 = invalid-expression "pkg/front_end/testcases/general_nnbd_opt_out/continue_inference_after_error.dart:12:3: Error: A prefix can't be used as an expression.
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/continue_inference_after_error.dart.weak.expect b/pkg/front_end/testcases/general_nnbd_opt_out/continue_inference_after_error.dart.weak.expect
index 554df33..35d026c 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/continue_inference_after_error.dart.weak.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/continue_inference_after_error.dart.weak.expect
@@ -21,6 +21,16 @@
   synthetic constructor •() → self::C*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method test() → dynamic {
   let final<BottomType> #t1 = invalid-expression "pkg/front_end/testcases/general_nnbd_opt_out/continue_inference_after_error.dart:12:3: Error: A prefix can't be used as an expression.
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/continue_inference_after_error.dart.weak.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/continue_inference_after_error.dart.weak.transformed.expect
index 554df33..35d026c 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/continue_inference_after_error.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/continue_inference_after_error.dart.weak.transformed.expect
@@ -21,6 +21,16 @@
   synthetic constructor •() → self::C*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method test() → dynamic {
   let final<BottomType> #t1 = invalid-expression "pkg/front_end/testcases/general_nnbd_opt_out/continue_inference_after_error.dart:12:3: Error: A prefix can't be used as an expression.
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/control_flow_collection_inference.dart.outline.expect b/pkg/front_end/testcases/general_nnbd_opt_out/control_flow_collection_inference.dart.outline.expect
index baa3e6d..50ae146 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/control_flow_collection_inference.dart.outline.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/control_flow_collection_inference.dart.outline.expect
@@ -6,6 +6,16 @@
 class A extends core::Object {
   synthetic constructor •() → self::A*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A {
   synthetic constructor •() → self::B*
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/control_flow_collection_inference.dart.strong.expect b/pkg/front_end/testcases/general_nnbd_opt_out/control_flow_collection_inference.dart.strong.expect
index 741f33f..adddf26 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/control_flow_collection_inference.dart.strong.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/control_flow_collection_inference.dart.strong.expect
@@ -430,6 +430,16 @@
   synthetic constructor •() → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A {
   synthetic constructor •() → self::B*
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/control_flow_collection_inference.dart.strong.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/control_flow_collection_inference.dart.strong.transformed.expect
index 5964136..68516e9 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/control_flow_collection_inference.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/control_flow_collection_inference.dart.strong.transformed.expect
@@ -431,6 +431,16 @@
   synthetic constructor •() → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A {
   synthetic constructor •() → self::B*
@@ -517,7 +527,7 @@
   core::Map<core::String*, core::int*>* map20 = block {
     final core::Map<core::String*, core::int*>* #t14 = <core::String*, core::int*>{};
     if(self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*) {
-      core::Iterator<core::MapEntry<core::String*, core::int*>*>* :sync-for-iterator = <core::String*, core::int*>{"bar": 42}.{core::Map::entries}.{core::Iterable::iterator};
+      core::Iterator<core::MapEntry<core::String*, core::int*>>* :sync-for-iterator = <core::String*, core::int*>{"bar": 42}.{core::Map::entries}.{core::Iterable::iterator};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         final core::MapEntry<core::String*, core::int*>* #t15 = :sync-for-iterator.{core::Iterator::current};
         #t14.{core::Map::[]=}(#t15.{core::MapEntry::key}, #t15.{core::MapEntry::value});
@@ -549,7 +559,7 @@
   core::Map<core::String*, dynamic>* map21 = block {
     final core::Map<core::String*, dynamic>* #t20 = <core::String*, dynamic>{};
     if(self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*) {
-      core::Iterator<core::MapEntry<core::String*, dynamic>*>* :sync-for-iterator = <core::String*, dynamic>{"bar": dynVar}.{core::Map::entries}.{core::Iterable::iterator};
+      core::Iterator<core::MapEntry<core::String*, dynamic>>* :sync-for-iterator = <core::String*, dynamic>{"bar": dynVar}.{core::Map::entries}.{core::Iterable::iterator};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         final core::MapEntry<core::String*, dynamic>* #t21 = :sync-for-iterator.{core::Iterator::current};
         #t20.{core::Map::[]=}(#t21.{core::MapEntry::key}, #t21.{core::MapEntry::value});
@@ -581,7 +591,7 @@
   core::Map<core::String*, core::List<core::int*>*>* map22 = block {
     final core::Map<core::String*, core::List<core::int*>*>* #t26 = <core::String*, core::List<core::int*>*>{};
     if(self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*) {
-      core::Iterator<core::MapEntry<core::String*, core::List<core::int*>*>*>* :sync-for-iterator = <core::String*, core::List<core::int*>*>{"bar": <core::int*>[42]}.{core::Map::entries}.{core::Iterable::iterator};
+      core::Iterator<core::MapEntry<core::String*, core::List<core::int*>*>>* :sync-for-iterator = <core::String*, core::List<core::int*>*>{"bar": <core::int*>[42]}.{core::Map::entries}.{core::Iterable::iterator};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         final core::MapEntry<core::String*, core::List<core::int*>*>* #t27 = :sync-for-iterator.{core::Iterator::current};
         #t26.{core::Map::[]=}(#t27.{core::MapEntry::key}, #t27.{core::MapEntry::value});
@@ -616,7 +626,7 @@
     final core::Map<core::String*, core::int*>* #t32 = <core::String*, core::int*>{};
     if(self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*)
       if(self::oracle<dynamic>() as{TypeError,ForDynamic} core::bool*) {
-        core::Iterator<core::MapEntry<core::String*, core::int*>*>* :sync-for-iterator = <core::String*, core::int*>{"bar": 42}.{core::Map::entries}.{core::Iterable::iterator};
+        core::Iterator<core::MapEntry<core::String*, core::int*>>* :sync-for-iterator = <core::String*, core::int*>{"bar": 42}.{core::Map::entries}.{core::Iterable::iterator};
         for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
           final core::MapEntry<core::String*, core::int*>* #t33 = :sync-for-iterator.{core::Iterator::current};
           #t32.{core::Map::[]=}(#t33.{core::MapEntry::key}, #t33.{core::MapEntry::value});
@@ -651,7 +661,7 @@
     final core::Map<core::String*, dynamic>* #t38 = <core::String*, dynamic>{};
     if(self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*)
       if(self::oracle<dynamic>() as{TypeError,ForDynamic} core::bool*) {
-        core::Iterator<core::MapEntry<core::String*, dynamic>*>* :sync-for-iterator = <core::String*, dynamic>{"bar": dynVar}.{core::Map::entries}.{core::Iterable::iterator};
+        core::Iterator<core::MapEntry<core::String*, dynamic>>* :sync-for-iterator = <core::String*, dynamic>{"bar": dynVar}.{core::Map::entries}.{core::Iterable::iterator};
         for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
           final core::MapEntry<core::String*, dynamic>* #t39 = :sync-for-iterator.{core::Iterator::current};
           #t38.{core::Map::[]=}(#t39.{core::MapEntry::key}, #t39.{core::MapEntry::value});
@@ -686,7 +696,7 @@
     final core::Map<core::String*, core::List<core::int*>*>* #t44 = <core::String*, core::List<core::int*>*>{};
     if(self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*)
       if(self::oracle<dynamic>() as{TypeError,ForDynamic} core::bool*) {
-        core::Iterator<core::MapEntry<core::String*, core::List<core::int*>*>*>* :sync-for-iterator = <core::String*, core::List<core::int*>*>{"bar": <core::int*>[42]}.{core::Map::entries}.{core::Iterable::iterator};
+        core::Iterator<core::MapEntry<core::String*, core::List<core::int*>*>>* :sync-for-iterator = <core::String*, core::List<core::int*>*>{"bar": <core::int*>[42]}.{core::Map::entries}.{core::Iterable::iterator};
         for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
           final core::MapEntry<core::String*, core::List<core::int*>*>* #t45 = :sync-for-iterator.{core::Iterator::current};
           #t44.{core::Map::[]=}(#t45.{core::MapEntry::key}, #t45.{core::MapEntry::value});
@@ -721,7 +731,7 @@
   core::List<core::List<core::int*>*>* list41 = block {
     final core::List<core::List<core::int*>*>* #t50 = <core::List<core::int*>*>[];
     if(self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*) {
-      core::Iterator<core::List<core::int*>*>* :sync-for-iterator = (let final core::Set<core::List<core::int*>*>* #t51 = col::LinkedHashSet::•<core::List<core::int*>*>() in let final core::bool* #t52 = #t51.{core::Set::add}(<core::int*>[]) in #t51).{core::Iterable::iterator};
+      core::Iterator<core::List<core::int*>*>* :sync-for-iterator = (let final core::Set<core::List<core::int*>*>* #t51 = col::LinkedHashSet::•<core::List<core::int*>*>() in let final core::bool #t52 = #t51.{core::Set::add}(<core::int*>[]) in #t51).{core::Iterable::iterator};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         final core::List<core::int*>* #t53 = :sync-for-iterator.{core::Iterator::current};
         #t50.{core::List::add}(#t53);
@@ -731,7 +741,7 @@
   core::Set<core::List<core::int*>*>* set41 = block {
     final core::Set<core::List<core::int*>*>* #t54 = col::LinkedHashSet::•<core::List<core::int*>*>();
     if(self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*) {
-      core::Iterator<core::List<core::int*>*>* :sync-for-iterator = (let final core::Set<core::List<core::int*>*>* #t55 = col::LinkedHashSet::•<core::List<core::int*>*>() in let final core::bool* #t56 = #t55.{core::Set::add}(<core::int*>[]) in #t55).{core::Iterable::iterator};
+      core::Iterator<core::List<core::int*>*>* :sync-for-iterator = (let final core::Set<core::List<core::int*>*>* #t55 = col::LinkedHashSet::•<core::List<core::int*>*>() in let final core::bool #t56 = #t55.{core::Set::add}(<core::int*>[]) in #t55).{core::Iterable::iterator};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         final core::List<core::int*>* #t57 = :sync-for-iterator.{core::Iterator::current};
         #t54.{core::Set::add}(#t57);
@@ -766,7 +776,7 @@
     final core::Map<core::String*, core::List<core::int*>*>* #t62 = <core::String*, core::List<core::int*>*>{};
     if(self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*)
       if(self::oracle<dynamic>() as{TypeError,ForDynamic} core::bool*) {
-        core::Iterator<core::MapEntry<core::String*, core::List<core::int*>*>*>* :sync-for-iterator = <core::String*, core::List<core::int*>*>{"bar": <core::int*>[]}.{core::Map::entries}.{core::Iterable::iterator};
+        core::Iterator<core::MapEntry<core::String*, core::List<core::int*>*>>* :sync-for-iterator = <core::String*, core::List<core::int*>*>{"bar": <core::int*>[]}.{core::Map::entries}.{core::Iterable::iterator};
         for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
           final core::MapEntry<core::String*, core::List<core::int*>*>* #t63 = :sync-for-iterator.{core::Iterator::current};
           #t62.{core::Map::[]=}(#t63.{core::MapEntry::key}, #t63.{core::MapEntry::value});
@@ -798,7 +808,7 @@
   core::Map<core::String*, core::int*>* map50 = block {
     final core::Map<core::String*, core::int*>* #t68 = <core::String*, core::int*>{};
     if(self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*) {
-      core::Iterator<core::MapEntry<core::String*, core::int*>*>* :sync-for-iterator = <core::String*, core::int*>{}.{core::Map::entries}.{core::Iterable::iterator};
+      core::Iterator<core::MapEntry<core::String*, core::int*>>* :sync-for-iterator = <core::String*, core::int*>{}.{core::Map::entries}.{core::Iterable::iterator};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         final core::MapEntry<core::String*, core::int*>* #t69 = :sync-for-iterator.{core::Iterator::current};
         #t68.{core::Map::[]=}(#t69.{core::MapEntry::key}, #t69.{core::MapEntry::value});
@@ -854,7 +864,7 @@
     final core::Map<core::String*, core::int*>* #t80 = <core::String*, core::int*>{};
     if(self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*)
       if(self::oracle<dynamic>() as{TypeError,ForDynamic} core::bool*) {
-        core::Iterator<core::MapEntry<core::String*, core::int*>*>* :sync-for-iterator = <core::String*, core::int*>{}.{core::Map::entries}.{core::Iterable::iterator};
+        core::Iterator<core::MapEntry<core::String*, core::int*>>* :sync-for-iterator = <core::String*, core::int*>{}.{core::Map::entries}.{core::Iterable::iterator};
         for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
           final core::MapEntry<core::String*, core::int*>* #t81 = :sync-for-iterator.{core::Iterator::current};
           #t80.{core::Map::[]=}(#t81.{core::MapEntry::key}, #t81.{core::MapEntry::value});
@@ -886,7 +896,7 @@
   core::Map<core::String*, core::List<core::int*>*>* map60 = block {
     final core::Map<core::String*, core::List<core::int*>*>* #t86 = <core::String*, core::List<core::int*>*>{};
     if(self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*) {
-      core::Iterator<core::MapEntry<core::String*, core::List<core::int*>*>*>* :sync-for-iterator = <core::String*, core::List<core::int*>*>{"bar": <core::int*>[]}.{core::Map::entries}.{core::Iterable::iterator};
+      core::Iterator<core::MapEntry<core::String*, core::List<core::int*>*>>* :sync-for-iterator = <core::String*, core::List<core::int*>*>{"bar": <core::int*>[]}.{core::Map::entries}.{core::Iterable::iterator};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         final core::MapEntry<core::String*, core::List<core::int*>*>* #t87 = :sync-for-iterator.{core::Iterator::current};
         #t86.{core::Map::[]=}(#t87.{core::MapEntry::key}, #t87.{core::MapEntry::value});
@@ -921,7 +931,7 @@
     final core::Map<core::String*, core::List<core::int*>*>* #t92 = <core::String*, core::List<core::int*>*>{};
     if(self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*)
       if(self::oracle<dynamic>() as{TypeError,ForDynamic} core::bool*) {
-        core::Iterator<core::MapEntry<core::String*, core::List<core::int*>*>*>* :sync-for-iterator = <core::String*, core::List<core::int*>*>{"bar": <core::int*>[]}.{core::Map::entries}.{core::Iterable::iterator};
+        core::Iterator<core::MapEntry<core::String*, core::List<core::int*>*>>* :sync-for-iterator = <core::String*, core::List<core::int*>*>{"bar": <core::int*>[]}.{core::Map::entries}.{core::Iterable::iterator};
         for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
           final core::MapEntry<core::String*, core::List<core::int*>*>* #t93 = :sync-for-iterator.{core::Iterator::current};
           #t92.{core::Map::[]=}(#t93.{core::MapEntry::key}, #t93.{core::MapEntry::value});
@@ -1014,14 +1024,14 @@
   core::Map<core::String*, core::num*>* map81 = block {
     final core::Map<core::String*, core::num*>* #t107 = <core::String*, core::num*>{};
     if(self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*) {
-      core::Iterator<core::MapEntry<core::String*, core::int*>*>* :sync-for-iterator = mapToInt.{core::Map::entries}.{core::Iterable::iterator};
+      core::Iterator<core::MapEntry<core::String*, core::int*>>* :sync-for-iterator = mapToInt.{core::Map::entries}.{core::Iterable::iterator};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         final core::MapEntry<core::String*, core::num*>* #t108 = :sync-for-iterator.{core::Iterator::current};
         #t107.{core::Map::[]=}(#t108.{core::MapEntry::key}, #t108.{core::MapEntry::value});
       }
     }
     else {
-      core::Iterator<core::MapEntry<core::String*, core::double*>*>* :sync-for-iterator = mapToDouble.{core::Map::entries}.{core::Iterable::iterator};
+      core::Iterator<core::MapEntry<core::String*, core::double*>>* :sync-for-iterator = mapToDouble.{core::Map::entries}.{core::Iterable::iterator};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         final core::MapEntry<core::String*, core::num*>* #t109 = :sync-for-iterator.{core::Iterator::current};
         #t107.{core::Map::[]=}(#t109.{core::MapEntry::key}, #t109.{core::MapEntry::value});
@@ -1108,7 +1118,7 @@
   core::Map<core::String*, core::num*>* map83 = block {
     final core::Map<core::String*, core::num*>* #t122 = <core::String*, core::num*>{};
     if(self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*) {
-      core::Iterator<core::MapEntry<core::String*, core::int*>*>* :sync-for-iterator = mapToInt.{core::Map::entries}.{core::Iterable::iterator};
+      core::Iterator<core::MapEntry<core::String*, core::int*>>* :sync-for-iterator = mapToInt.{core::Map::entries}.{core::Iterable::iterator};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         final core::MapEntry<core::String*, core::num*>* #t123 = :sync-for-iterator.{core::Iterator::current};
         #t122.{core::Map::[]=}(#t123.{core::MapEntry::key}, #t123.{core::MapEntry::value});
@@ -1165,7 +1175,7 @@
   core::Map<core::String*, core::int*>* map91 = block {
     final core::Map<core::String*, core::int*>* #t133 = <core::String*, core::int*>{};
     if(self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*) {
-      core::Iterator<core::MapEntry<dynamic, dynamic>*>* :sync-for-iterator = (dynVar as{TypeError,ForDynamic} core::Map<dynamic, dynamic>*).{core::Map::entries}.{core::Iterable::iterator};
+      core::Iterator<core::MapEntry<dynamic, dynamic>>* :sync-for-iterator = (dynVar as{TypeError,ForDynamic} core::Map<dynamic, dynamic>*).{core::Map::entries}.{core::Iterable::iterator};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         final core::MapEntry<dynamic, dynamic>* #t134 = :sync-for-iterator.{core::Iterator::current};
         {
@@ -1245,7 +1255,7 @@
   block {
     final core::Map<core::String*, core::int*>* #t152 = <core::String*, core::int*>{};
     if(self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*) {
-      core::Iterator<core::MapEntry<core::String*, core::int*>*>* :sync-for-iterator = <core::String*, core::int*>{"bar": let final<BottomType> #t153 = invalid-expression "pkg/front_end/testcases/general_nnbd_opt_out/control_flow_collection_inference.dart:94:47: Error: A value of type 'String' can't be assigned to a variable of type 'int'.
+      core::Iterator<core::MapEntry<core::String*, core::int*>>* :sync-for-iterator = <core::String*, core::int*>{"bar": let final<BottomType> #t153 = invalid-expression "pkg/front_end/testcases/general_nnbd_opt_out/control_flow_collection_inference.dart:94:47: Error: A value of type 'String' can't be assigned to a variable of type 'int'.
   <String, int>{if (oracle(\"foo\")) ...{\"bar\": \"bar\"}, \"baz\": null};
                                               ^" in "bar" as{TypeError} core::int*}.{core::Map::entries}.{core::Iterable::iterator};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
@@ -1530,7 +1540,7 @@
   core::Map<core::String*, core::int*>* map20 = block {
     final core::Map<core::String*, core::int*>* #t201 = <core::String*, core::int*>{};
     for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1)) {
-      core::Iterator<core::MapEntry<core::String*, core::int*>*>* :sync-for-iterator = <core::String*, core::int*>{"bar": 42}.{core::Map::entries}.{core::Iterable::iterator};
+      core::Iterator<core::MapEntry<core::String*, core::int*>>* :sync-for-iterator = <core::String*, core::int*>{"bar": 42}.{core::Map::entries}.{core::Iterable::iterator};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         final core::MapEntry<core::String*, core::int*>* #t202 = :sync-for-iterator.{core::Iterator::current};
         #t201.{core::Map::[]=}(#t202.{core::MapEntry::key}, #t202.{core::MapEntry::value});
@@ -1562,7 +1572,7 @@
   core::Map<core::String*, dynamic>* map21 = block {
     final core::Map<core::String*, dynamic>* #t207 = <core::String*, dynamic>{};
     for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1)) {
-      core::Iterator<core::MapEntry<core::String*, dynamic>*>* :sync-for-iterator = <core::String*, dynamic>{"bar": dynVar}.{core::Map::entries}.{core::Iterable::iterator};
+      core::Iterator<core::MapEntry<core::String*, dynamic>>* :sync-for-iterator = <core::String*, dynamic>{"bar": dynVar}.{core::Map::entries}.{core::Iterable::iterator};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         final core::MapEntry<core::String*, dynamic>* #t208 = :sync-for-iterator.{core::Iterator::current};
         #t207.{core::Map::[]=}(#t208.{core::MapEntry::key}, #t208.{core::MapEntry::value});
@@ -1594,7 +1604,7 @@
   core::Map<core::String*, core::List<core::int*>*>* map22 = block {
     final core::Map<core::String*, core::List<core::int*>*>* #t213 = <core::String*, core::List<core::int*>*>{};
     for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1)) {
-      core::Iterator<core::MapEntry<core::String*, core::List<core::int*>*>*>* :sync-for-iterator = <core::String*, core::List<core::int*>*>{"bar": <core::int*>[42]}.{core::Map::entries}.{core::Iterable::iterator};
+      core::Iterator<core::MapEntry<core::String*, core::List<core::int*>*>>* :sync-for-iterator = <core::String*, core::List<core::int*>*>{"bar": <core::int*>[42]}.{core::Map::entries}.{core::Iterable::iterator};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         final core::MapEntry<core::String*, core::List<core::int*>*>* #t214 = :sync-for-iterator.{core::Iterator::current};
         #t213.{core::Map::[]=}(#t214.{core::MapEntry::key}, #t214.{core::MapEntry::value});
@@ -1629,7 +1639,7 @@
     final core::Map<core::String*, core::int*>* #t219 = <core::String*, core::int*>{};
     for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1))
       if(self::oracle<dynamic>() as{TypeError,ForDynamic} core::bool*) {
-        core::Iterator<core::MapEntry<core::String*, core::int*>*>* :sync-for-iterator = <core::String*, core::int*>{"bar": 42}.{core::Map::entries}.{core::Iterable::iterator};
+        core::Iterator<core::MapEntry<core::String*, core::int*>>* :sync-for-iterator = <core::String*, core::int*>{"bar": 42}.{core::Map::entries}.{core::Iterable::iterator};
         for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
           final core::MapEntry<core::String*, core::int*>* #t220 = :sync-for-iterator.{core::Iterator::current};
           #t219.{core::Map::[]=}(#t220.{core::MapEntry::key}, #t220.{core::MapEntry::value});
@@ -1664,7 +1674,7 @@
     final core::Map<core::String*, dynamic>* #t225 = <core::String*, dynamic>{};
     for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1))
       if(self::oracle<dynamic>() as{TypeError,ForDynamic} core::bool*) {
-        core::Iterator<core::MapEntry<core::String*, dynamic>*>* :sync-for-iterator = <core::String*, dynamic>{"bar": dynVar}.{core::Map::entries}.{core::Iterable::iterator};
+        core::Iterator<core::MapEntry<core::String*, dynamic>>* :sync-for-iterator = <core::String*, dynamic>{"bar": dynVar}.{core::Map::entries}.{core::Iterable::iterator};
         for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
           final core::MapEntry<core::String*, dynamic>* #t226 = :sync-for-iterator.{core::Iterator::current};
           #t225.{core::Map::[]=}(#t226.{core::MapEntry::key}, #t226.{core::MapEntry::value});
@@ -1699,7 +1709,7 @@
     final core::Map<core::String*, core::List<core::int*>*>* #t231 = <core::String*, core::List<core::int*>*>{};
     for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1))
       if(self::oracle<dynamic>() as{TypeError,ForDynamic} core::bool*) {
-        core::Iterator<core::MapEntry<core::String*, core::List<core::int*>*>*>* :sync-for-iterator = <core::String*, core::List<core::int*>*>{"bar": <core::int*>[42]}.{core::Map::entries}.{core::Iterable::iterator};
+        core::Iterator<core::MapEntry<core::String*, core::List<core::int*>*>>* :sync-for-iterator = <core::String*, core::List<core::int*>*>{"bar": <core::int*>[42]}.{core::Map::entries}.{core::Iterable::iterator};
         for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
           final core::MapEntry<core::String*, core::List<core::int*>*>* #t232 = :sync-for-iterator.{core::Iterator::current};
           #t231.{core::Map::[]=}(#t232.{core::MapEntry::key}, #t232.{core::MapEntry::value});
@@ -1731,7 +1741,7 @@
   core::Map<core::String*, core::List<core::int*>*>* map40 = block {
     final core::Map<core::String*, core::List<core::int*>*>* #t237 = <core::String*, core::List<core::int*>*>{};
     for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1)) {
-      core::Iterator<core::MapEntry<core::String*, core::List<core::int*>*>*>* :sync-for-iterator = <core::String*, core::List<core::int*>*>{"bar": <core::int*>[]}.{core::Map::entries}.{core::Iterable::iterator};
+      core::Iterator<core::MapEntry<core::String*, core::List<core::int*>*>>* :sync-for-iterator = <core::String*, core::List<core::int*>*>{"bar": <core::int*>[]}.{core::Map::entries}.{core::Iterable::iterator};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         final core::MapEntry<core::String*, core::List<core::int*>*>* #t238 = :sync-for-iterator.{core::Iterator::current};
         #t237.{core::Map::[]=}(#t238.{core::MapEntry::key}, #t238.{core::MapEntry::value});
@@ -1742,7 +1752,7 @@
   core::List<core::List<core::int*>*>* list41 = block {
     final core::List<core::List<core::int*>*>* #t239 = <core::List<core::int*>*>[];
     for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1)) {
-      core::Iterator<core::List<core::int*>*>* :sync-for-iterator = (let final core::Set<core::List<core::int*>*>* #t240 = col::LinkedHashSet::•<core::List<core::int*>*>() in let final core::bool* #t241 = #t240.{core::Set::add}(<core::int*>[]) in #t240).{core::Iterable::iterator};
+      core::Iterator<core::List<core::int*>*>* :sync-for-iterator = (let final core::Set<core::List<core::int*>*>* #t240 = col::LinkedHashSet::•<core::List<core::int*>*>() in let final core::bool #t241 = #t240.{core::Set::add}(<core::int*>[]) in #t240).{core::Iterable::iterator};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         final core::List<core::int*>* #t242 = :sync-for-iterator.{core::Iterator::current};
         #t239.{core::List::add}(#t242);
@@ -1752,7 +1762,7 @@
   core::Set<core::List<core::int*>*>* set41 = block {
     final core::Set<core::List<core::int*>*>* #t243 = col::LinkedHashSet::•<core::List<core::int*>*>();
     for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1)) {
-      core::Iterator<core::List<core::int*>*>* :sync-for-iterator = (let final core::Set<core::List<core::int*>*>* #t244 = col::LinkedHashSet::•<core::List<core::int*>*>() in let final core::bool* #t245 = #t244.{core::Set::add}(<core::int*>[]) in #t244).{core::Iterable::iterator};
+      core::Iterator<core::List<core::int*>*>* :sync-for-iterator = (let final core::Set<core::List<core::int*>*>* #t244 = col::LinkedHashSet::•<core::List<core::int*>*>() in let final core::bool #t245 = #t244.{core::Set::add}(<core::int*>[]) in #t244).{core::Iterable::iterator};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         final core::List<core::int*>* #t246 = :sync-for-iterator.{core::Iterator::current};
         #t243.{core::Set::add}(#t246);
@@ -1787,7 +1797,7 @@
     final core::Map<core::String*, core::List<core::int*>*>* #t251 = <core::String*, core::List<core::int*>*>{};
     for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1))
       if(self::oracle<dynamic>() as{TypeError,ForDynamic} core::bool*) {
-        core::Iterator<core::MapEntry<core::String*, core::List<core::int*>*>*>* :sync-for-iterator = <core::String*, core::List<core::int*>*>{"bar": <core::int*>[]}.{core::Map::entries}.{core::Iterable::iterator};
+        core::Iterator<core::MapEntry<core::String*, core::List<core::int*>*>>* :sync-for-iterator = <core::String*, core::List<core::int*>*>{"bar": <core::int*>[]}.{core::Map::entries}.{core::Iterable::iterator};
         for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
           final core::MapEntry<core::String*, core::List<core::int*>*>* #t252 = :sync-for-iterator.{core::Iterator::current};
           #t251.{core::Map::[]=}(#t252.{core::MapEntry::key}, #t252.{core::MapEntry::value});
@@ -1819,7 +1829,7 @@
   core::Map<core::String*, core::int*>* map50 = block {
     final core::Map<core::String*, core::int*>* #t257 = <core::String*, core::int*>{};
     for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1)) {
-      core::Iterator<core::MapEntry<core::String*, core::int*>*>* :sync-for-iterator = <core::String*, core::int*>{}.{core::Map::entries}.{core::Iterable::iterator};
+      core::Iterator<core::MapEntry<core::String*, core::int*>>* :sync-for-iterator = <core::String*, core::int*>{}.{core::Map::entries}.{core::Iterable::iterator};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         final core::MapEntry<core::String*, core::int*>* #t258 = :sync-for-iterator.{core::Iterator::current};
         #t257.{core::Map::[]=}(#t258.{core::MapEntry::key}, #t258.{core::MapEntry::value});
@@ -1895,7 +1905,7 @@
   core::Map<core::String*, core::List<core::int*>*>* map60 = block {
     final core::Map<core::String*, core::List<core::int*>*>* #t273 = <core::String*, core::List<core::int*>*>{};
     for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1)) {
-      core::Iterator<core::MapEntry<core::String*, core::List<core::int*>*>*>* :sync-for-iterator = <core::String*, core::List<core::int*>*>{"bar": <core::int*>[]}.{core::Map::entries}.{core::Iterable::iterator};
+      core::Iterator<core::MapEntry<core::String*, core::List<core::int*>*>>* :sync-for-iterator = <core::String*, core::List<core::int*>*>{"bar": <core::int*>[]}.{core::Map::entries}.{core::Iterable::iterator};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         final core::MapEntry<core::String*, core::List<core::int*>*>* #t274 = :sync-for-iterator.{core::Iterator::current};
         #t273.{core::Map::[]=}(#t274.{core::MapEntry::key}, #t274.{core::MapEntry::value});
@@ -1930,7 +1940,7 @@
     final core::Map<core::String*, core::List<core::int*>*>* #t279 = <core::String*, core::List<core::int*>*>{};
     for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1))
       if(self::oracle<dynamic>() as{TypeError,ForDynamic} core::bool*) {
-        core::Iterator<core::MapEntry<core::String*, core::List<core::int*>*>*>* :sync-for-iterator = <core::String*, core::List<core::int*>*>{"bar": <core::int*>[]}.{core::Map::entries}.{core::Iterable::iterator};
+        core::Iterator<core::MapEntry<core::String*, core::List<core::int*>*>>* :sync-for-iterator = <core::String*, core::List<core::int*>*>{"bar": <core::int*>[]}.{core::Map::entries}.{core::Iterable::iterator};
         for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
           final core::MapEntry<core::String*, core::List<core::int*>*>* #t280 = :sync-for-iterator.{core::Iterator::current};
           #t279.{core::Map::[]=}(#t280.{core::MapEntry::key}, #t280.{core::MapEntry::value});
@@ -2042,14 +2052,14 @@
     final core::Map<core::String*, core::num*>* #t296 = <core::String*, core::num*>{};
     for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1))
       if(self::oracle<dynamic>() as{TypeError,ForDynamic} core::bool*) {
-        core::Iterator<core::MapEntry<core::String*, core::int*>*>* :sync-for-iterator = mapStringInt.{core::Map::entries}.{core::Iterable::iterator};
+        core::Iterator<core::MapEntry<core::String*, core::int*>>* :sync-for-iterator = mapStringInt.{core::Map::entries}.{core::Iterable::iterator};
         for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
           final core::MapEntry<core::String*, core::num*>* #t297 = :sync-for-iterator.{core::Iterator::current};
           #t296.{core::Map::[]=}(#t297.{core::MapEntry::key}, #t297.{core::MapEntry::value});
         }
       }
       else {
-        core::Iterator<core::MapEntry<core::String*, core::double*>*>* :sync-for-iterator = mapStringDouble.{core::Map::entries}.{core::Iterable::iterator};
+        core::Iterator<core::MapEntry<core::String*, core::double*>>* :sync-for-iterator = mapStringDouble.{core::Map::entries}.{core::Iterable::iterator};
         for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
           final core::MapEntry<core::String*, core::num*>* #t298 = :sync-for-iterator.{core::Iterator::current};
           #t296.{core::Map::[]=}(#t298.{core::MapEntry::key}, #t298.{core::MapEntry::value});
@@ -2098,14 +2108,14 @@
     final core::Map<dynamic, dynamic>* #t305 = <dynamic, dynamic>{};
     for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1))
       if(self::oracle<dynamic>() as{TypeError,ForDynamic} core::bool*) {
-        core::Iterator<core::MapEntry<core::String*, core::int*>*>* :sync-for-iterator = mapStringInt.{core::Map::entries}.{core::Iterable::iterator};
+        core::Iterator<core::MapEntry<core::String*, core::int*>>* :sync-for-iterator = mapStringInt.{core::Map::entries}.{core::Iterable::iterator};
         for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
           final core::MapEntry<dynamic, dynamic>* #t306 = :sync-for-iterator.{core::Iterator::current};
           #t305.{core::Map::[]=}(#t306.{core::MapEntry::key}, #t306.{core::MapEntry::value});
         }
       }
       else {
-        core::Iterator<core::MapEntry<dynamic, dynamic>*>* :sync-for-iterator = (dynVar as{TypeError,ForDynamic} core::Map<dynamic, dynamic>*).{core::Map::entries}.{core::Iterable::iterator};
+        core::Iterator<core::MapEntry<dynamic, dynamic>>* :sync-for-iterator = (dynVar as{TypeError,ForDynamic} core::Map<dynamic, dynamic>*).{core::Map::entries}.{core::Iterable::iterator};
         for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
           final core::MapEntry<dynamic, dynamic>* #t307 = :sync-for-iterator.{core::Iterator::current};
           #t305.{core::Map::[]=}(#t307.{core::MapEntry::key}, #t307.{core::MapEntry::value});
@@ -2144,7 +2154,7 @@
     final core::Map<core::String*, core::num*>* #t312 = <core::String*, core::num*>{};
     for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1))
       if(self::oracle<dynamic>() as{TypeError,ForDynamic} core::bool*) {
-        core::Iterator<core::MapEntry<core::String*, core::int*>*>* :sync-for-iterator = mapStringInt.{core::Map::entries}.{core::Iterable::iterator};
+        core::Iterator<core::MapEntry<core::String*, core::int*>>* :sync-for-iterator = mapStringInt.{core::Map::entries}.{core::Iterable::iterator};
         for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
           final core::MapEntry<core::String*, core::num*>* #t313 = :sync-for-iterator.{core::Iterator::current};
           #t312.{core::Map::[]=}(#t313.{core::MapEntry::key}, #t313.{core::MapEntry::value});
@@ -2201,7 +2211,7 @@
   core::Map<core::String*, core::int*>* map91 = block {
     final core::Map<core::String*, core::int*>* #t323 = <core::String*, core::int*>{};
     for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1)) {
-      core::Iterator<core::MapEntry<dynamic, dynamic>*>* :sync-for-iterator = (dynVar as{TypeError,ForDynamic} core::Map<dynamic, dynamic>*).{core::Map::entries}.{core::Iterable::iterator};
+      core::Iterator<core::MapEntry<dynamic, dynamic>>* :sync-for-iterator = (dynVar as{TypeError,ForDynamic} core::Map<dynamic, dynamic>*).{core::Map::entries}.{core::Iterable::iterator};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         final core::MapEntry<dynamic, dynamic>* #t324 = :sync-for-iterator.{core::Iterator::current};
         {
@@ -2379,7 +2389,7 @@
         block {
           final core::Map<core::int*, core::int*>* #t356 = <core::int*, core::int*>{};
           for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1)) {
-            core::Iterator<core::MapEntry<core::int*, core::int*>*>* :sync-for-iterator = <core::int*, core::int*>{let final<BottomType> #t357 = invalid-expression "pkg/front_end/testcases/general_nnbd_opt_out/control_flow_collection_inference.dart:217:54: Error: A value of type 'String' can't be assigned to a variable of type 'int'.
+            core::Iterator<core::MapEntry<core::int*, core::int*>>* :sync-for-iterator = <core::int*, core::int*>{let final<BottomType> #t357 = invalid-expression "pkg/front_end/testcases/general_nnbd_opt_out/control_flow_collection_inference.dart:217:54: Error: A value of type 'String' can't be assigned to a variable of type 'int'.
   <int, int>{for (int i = 0; oracle(\"foo\"); i++) ...{\"bar\": \"bar\"}, \"baz\": null};
                                                      ^" in "bar" as{TypeError} core::int*: let final<BottomType> #t358 = invalid-expression "pkg/front_end/testcases/general_nnbd_opt_out/control_flow_collection_inference.dart:217:61: Error: A value of type 'String' can't be assigned to a variable of type 'int'.
   <int, int>{for (int i = 0; oracle(\"foo\"); i++) ...{\"bar\": \"bar\"}, \"baz\": null};
@@ -2661,7 +2671,7 @@
             while (true) {
               dynamic #t399 = asy::_asyncStarMoveNextHelper(:stream);
               [yield] let dynamic #t400 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::moveNext}(), :async_op_then, :async_op_error, :async_op) in null;
-              if(_in::unsafeCast<core::bool*>(:result)) {
+              if(_in::unsafeCast<core::bool>(:result)) {
                 dynamic i = :for-iterator.{asy::_StreamIterator::current};
                 #t397.{core::List::add}(i);
               }
@@ -2688,7 +2698,7 @@
             while (true) {
               dynamic #t404 = asy::_asyncStarMoveNextHelper(:stream);
               [yield] let dynamic #t405 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::moveNext}(), :async_op_then, :async_op_error, :async_op) in null;
-              if(_in::unsafeCast<core::bool*>(:result)) {
+              if(_in::unsafeCast<core::bool>(:result)) {
                 dynamic i = :for-iterator.{asy::_StreamIterator::current};
                 #t402.{core::Set::add}(i);
               }
@@ -2717,7 +2727,7 @@
             while (true) {
               dynamic #t409 = asy::_asyncStarMoveNextHelper(:stream);
               [yield] let dynamic #t410 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::moveNext}(), :async_op_then, :async_op_error, :async_op) in null;
-              if(_in::unsafeCast<core::bool*>(:result)) {
+              if(_in::unsafeCast<core::bool>(:result)) {
                 dynamic i = :for-iterator.{asy::_StreamIterator::current};
                 #t407.{core::Map::[]=}("bar", i);
               }
@@ -2735,7 +2745,7 @@
         } =>#t407;
         final core::List<core::int*>* #t412 = <core::int*>[];
         {
-          asy::Stream<core::int*>* :stream = asy::Stream::fromIterable<core::int*>(<core::int*>[let final<BottomType> #t413 = invalid-expression "pkg/front_end/testcases/general_nnbd_opt_out/control_flow_collection_inference.dart:245:58: Error: A value of type 'String' can't be assigned to a variable of type 'int'.
+          asy::Stream<core::int*> :stream = asy::Stream::fromIterable<core::int*>(<core::int*>[let final<BottomType> #t413 = invalid-expression "pkg/front_end/testcases/general_nnbd_opt_out/control_flow_collection_inference.dart:245:58: Error: A value of type 'String' can't be assigned to a variable of type 'int'.
   var list40 = [await for (int i in Stream.fromIterable([\"not\", \"int\"])) i];
                                                          ^" in "not" as{TypeError} core::int*, let final<BottomType> #t414 = invalid-expression "pkg/front_end/testcases/general_nnbd_opt_out/control_flow_collection_inference.dart:245:65: Error: A value of type 'String' can't be assigned to a variable of type 'int'.
   var list40 = [await for (int i in Stream.fromIterable([\"not\", \"int\"])) i];
@@ -2747,7 +2757,7 @@
             while (true) {
               dynamic #t415 = asy::_asyncStarMoveNextHelper(:stream);
               [yield] let dynamic #t416 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::moveNext}(), :async_op_then, :async_op_error, :async_op) in null;
-              if(_in::unsafeCast<core::bool*>(:result)) {
+              if(_in::unsafeCast<core::bool>(:result)) {
                 core::int* i = :for-iterator.{asy::_StreamIterator::current};
                 #t412.{core::List::add}(i);
               }
@@ -2763,7 +2773,7 @@
         core::List<core::int*>* list40 = block {} =>#t412;
         final core::Set<core::int*>* #t418 = col::LinkedHashSet::•<core::int*>();
         {
-          asy::Stream<core::int*>* :stream = asy::Stream::fromIterable<core::int*>(<core::int*>[let final<BottomType> #t419 = invalid-expression "pkg/front_end/testcases/general_nnbd_opt_out/control_flow_collection_inference.dart:246:57: Error: A value of type 'String' can't be assigned to a variable of type 'int'.
+          asy::Stream<core::int*> :stream = asy::Stream::fromIterable<core::int*>(<core::int*>[let final<BottomType> #t419 = invalid-expression "pkg/front_end/testcases/general_nnbd_opt_out/control_flow_collection_inference.dart:246:57: Error: A value of type 'String' can't be assigned to a variable of type 'int'.
   var set40 = {await for (int i in Stream.fromIterable([\"not\", \"int\"])) i, null};
                                                         ^" in "not" as{TypeError} core::int*, let final<BottomType> #t420 = invalid-expression "pkg/front_end/testcases/general_nnbd_opt_out/control_flow_collection_inference.dart:246:64: Error: A value of type 'String' can't be assigned to a variable of type 'int'.
   var set40 = {await for (int i in Stream.fromIterable([\"not\", \"int\"])) i, null};
@@ -2775,7 +2785,7 @@
             while (true) {
               dynamic #t421 = asy::_asyncStarMoveNextHelper(:stream);
               [yield] let dynamic #t422 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::moveNext}(), :async_op_then, :async_op_error, :async_op) in null;
-              if(_in::unsafeCast<core::bool*>(:result)) {
+              if(_in::unsafeCast<core::bool>(:result)) {
                 core::int* i = :for-iterator.{asy::_StreamIterator::current};
                 #t418.{core::Set::add}(i);
               }
@@ -2793,7 +2803,7 @@
         } =>#t418;
         final core::Map<core::String*, core::int*>* #t424 = <core::String*, core::int*>{};
         {
-          asy::Stream<core::int*>* :stream = asy::Stream::fromIterable<core::int*>(<core::int*>[let final<BottomType> #t425 = invalid-expression "pkg/front_end/testcases/general_nnbd_opt_out/control_flow_collection_inference.dart:247:57: Error: A value of type 'String' can't be assigned to a variable of type 'int'.
+          asy::Stream<core::int*> :stream = asy::Stream::fromIterable<core::int*>(<core::int*>[let final<BottomType> #t425 = invalid-expression "pkg/front_end/testcases/general_nnbd_opt_out/control_flow_collection_inference.dart:247:57: Error: A value of type 'String' can't be assigned to a variable of type 'int'.
   var map40 = {await for (int i in Stream.fromIterable([\"not\", \"int\"])) \"bar\": i, \"baz\": null};
                                                         ^" in "not" as{TypeError} core::int*, let final<BottomType> #t426 = invalid-expression "pkg/front_end/testcases/general_nnbd_opt_out/control_flow_collection_inference.dart:247:64: Error: A value of type 'String' can't be assigned to a variable of type 'int'.
   var map40 = {await for (int i in Stream.fromIterable([\"not\", \"int\"])) \"bar\": i, \"baz\": null};
@@ -2805,7 +2815,7 @@
             while (true) {
               dynamic #t427 = asy::_asyncStarMoveNextHelper(:stream);
               [yield] let dynamic #t428 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::moveNext}(), :async_op_then, :async_op_error, :async_op) in null;
-              if(_in::unsafeCast<core::bool*>(:result)) {
+              if(_in::unsafeCast<core::bool>(:result)) {
                 core::int* i = :for-iterator.{asy::_StreamIterator::current};
                 #t424.{core::Map::[]=}("bar", i);
               }
@@ -2865,8 +2875,8 @@
       asy::_completeOnAsyncReturn(:async_completer, :return_value);
       return;
     }
-    on dynamic catch(dynamic :exception, core::StackTrace* :stack_trace) {
-      :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+    on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
+      :async_completer.{asy::Completer::completeError}(exception, stack_trace);
     }
   :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/control_flow_collection_inference.dart.weak.expect b/pkg/front_end/testcases/general_nnbd_opt_out/control_flow_collection_inference.dart.weak.expect
index 741f33f..adddf26 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/control_flow_collection_inference.dart.weak.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/control_flow_collection_inference.dart.weak.expect
@@ -430,6 +430,16 @@
   synthetic constructor •() → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A {
   synthetic constructor •() → self::B*
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/control_flow_collection_inference.dart.weak.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/control_flow_collection_inference.dart.weak.transformed.expect
index 5964136..68516e9 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/control_flow_collection_inference.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/control_flow_collection_inference.dart.weak.transformed.expect
@@ -431,6 +431,16 @@
   synthetic constructor •() → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A {
   synthetic constructor •() → self::B*
@@ -517,7 +527,7 @@
   core::Map<core::String*, core::int*>* map20 = block {
     final core::Map<core::String*, core::int*>* #t14 = <core::String*, core::int*>{};
     if(self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*) {
-      core::Iterator<core::MapEntry<core::String*, core::int*>*>* :sync-for-iterator = <core::String*, core::int*>{"bar": 42}.{core::Map::entries}.{core::Iterable::iterator};
+      core::Iterator<core::MapEntry<core::String*, core::int*>>* :sync-for-iterator = <core::String*, core::int*>{"bar": 42}.{core::Map::entries}.{core::Iterable::iterator};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         final core::MapEntry<core::String*, core::int*>* #t15 = :sync-for-iterator.{core::Iterator::current};
         #t14.{core::Map::[]=}(#t15.{core::MapEntry::key}, #t15.{core::MapEntry::value});
@@ -549,7 +559,7 @@
   core::Map<core::String*, dynamic>* map21 = block {
     final core::Map<core::String*, dynamic>* #t20 = <core::String*, dynamic>{};
     if(self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*) {
-      core::Iterator<core::MapEntry<core::String*, dynamic>*>* :sync-for-iterator = <core::String*, dynamic>{"bar": dynVar}.{core::Map::entries}.{core::Iterable::iterator};
+      core::Iterator<core::MapEntry<core::String*, dynamic>>* :sync-for-iterator = <core::String*, dynamic>{"bar": dynVar}.{core::Map::entries}.{core::Iterable::iterator};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         final core::MapEntry<core::String*, dynamic>* #t21 = :sync-for-iterator.{core::Iterator::current};
         #t20.{core::Map::[]=}(#t21.{core::MapEntry::key}, #t21.{core::MapEntry::value});
@@ -581,7 +591,7 @@
   core::Map<core::String*, core::List<core::int*>*>* map22 = block {
     final core::Map<core::String*, core::List<core::int*>*>* #t26 = <core::String*, core::List<core::int*>*>{};
     if(self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*) {
-      core::Iterator<core::MapEntry<core::String*, core::List<core::int*>*>*>* :sync-for-iterator = <core::String*, core::List<core::int*>*>{"bar": <core::int*>[42]}.{core::Map::entries}.{core::Iterable::iterator};
+      core::Iterator<core::MapEntry<core::String*, core::List<core::int*>*>>* :sync-for-iterator = <core::String*, core::List<core::int*>*>{"bar": <core::int*>[42]}.{core::Map::entries}.{core::Iterable::iterator};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         final core::MapEntry<core::String*, core::List<core::int*>*>* #t27 = :sync-for-iterator.{core::Iterator::current};
         #t26.{core::Map::[]=}(#t27.{core::MapEntry::key}, #t27.{core::MapEntry::value});
@@ -616,7 +626,7 @@
     final core::Map<core::String*, core::int*>* #t32 = <core::String*, core::int*>{};
     if(self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*)
       if(self::oracle<dynamic>() as{TypeError,ForDynamic} core::bool*) {
-        core::Iterator<core::MapEntry<core::String*, core::int*>*>* :sync-for-iterator = <core::String*, core::int*>{"bar": 42}.{core::Map::entries}.{core::Iterable::iterator};
+        core::Iterator<core::MapEntry<core::String*, core::int*>>* :sync-for-iterator = <core::String*, core::int*>{"bar": 42}.{core::Map::entries}.{core::Iterable::iterator};
         for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
           final core::MapEntry<core::String*, core::int*>* #t33 = :sync-for-iterator.{core::Iterator::current};
           #t32.{core::Map::[]=}(#t33.{core::MapEntry::key}, #t33.{core::MapEntry::value});
@@ -651,7 +661,7 @@
     final core::Map<core::String*, dynamic>* #t38 = <core::String*, dynamic>{};
     if(self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*)
       if(self::oracle<dynamic>() as{TypeError,ForDynamic} core::bool*) {
-        core::Iterator<core::MapEntry<core::String*, dynamic>*>* :sync-for-iterator = <core::String*, dynamic>{"bar": dynVar}.{core::Map::entries}.{core::Iterable::iterator};
+        core::Iterator<core::MapEntry<core::String*, dynamic>>* :sync-for-iterator = <core::String*, dynamic>{"bar": dynVar}.{core::Map::entries}.{core::Iterable::iterator};
         for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
           final core::MapEntry<core::String*, dynamic>* #t39 = :sync-for-iterator.{core::Iterator::current};
           #t38.{core::Map::[]=}(#t39.{core::MapEntry::key}, #t39.{core::MapEntry::value});
@@ -686,7 +696,7 @@
     final core::Map<core::String*, core::List<core::int*>*>* #t44 = <core::String*, core::List<core::int*>*>{};
     if(self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*)
       if(self::oracle<dynamic>() as{TypeError,ForDynamic} core::bool*) {
-        core::Iterator<core::MapEntry<core::String*, core::List<core::int*>*>*>* :sync-for-iterator = <core::String*, core::List<core::int*>*>{"bar": <core::int*>[42]}.{core::Map::entries}.{core::Iterable::iterator};
+        core::Iterator<core::MapEntry<core::String*, core::List<core::int*>*>>* :sync-for-iterator = <core::String*, core::List<core::int*>*>{"bar": <core::int*>[42]}.{core::Map::entries}.{core::Iterable::iterator};
         for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
           final core::MapEntry<core::String*, core::List<core::int*>*>* #t45 = :sync-for-iterator.{core::Iterator::current};
           #t44.{core::Map::[]=}(#t45.{core::MapEntry::key}, #t45.{core::MapEntry::value});
@@ -721,7 +731,7 @@
   core::List<core::List<core::int*>*>* list41 = block {
     final core::List<core::List<core::int*>*>* #t50 = <core::List<core::int*>*>[];
     if(self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*) {
-      core::Iterator<core::List<core::int*>*>* :sync-for-iterator = (let final core::Set<core::List<core::int*>*>* #t51 = col::LinkedHashSet::•<core::List<core::int*>*>() in let final core::bool* #t52 = #t51.{core::Set::add}(<core::int*>[]) in #t51).{core::Iterable::iterator};
+      core::Iterator<core::List<core::int*>*>* :sync-for-iterator = (let final core::Set<core::List<core::int*>*>* #t51 = col::LinkedHashSet::•<core::List<core::int*>*>() in let final core::bool #t52 = #t51.{core::Set::add}(<core::int*>[]) in #t51).{core::Iterable::iterator};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         final core::List<core::int*>* #t53 = :sync-for-iterator.{core::Iterator::current};
         #t50.{core::List::add}(#t53);
@@ -731,7 +741,7 @@
   core::Set<core::List<core::int*>*>* set41 = block {
     final core::Set<core::List<core::int*>*>* #t54 = col::LinkedHashSet::•<core::List<core::int*>*>();
     if(self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*) {
-      core::Iterator<core::List<core::int*>*>* :sync-for-iterator = (let final core::Set<core::List<core::int*>*>* #t55 = col::LinkedHashSet::•<core::List<core::int*>*>() in let final core::bool* #t56 = #t55.{core::Set::add}(<core::int*>[]) in #t55).{core::Iterable::iterator};
+      core::Iterator<core::List<core::int*>*>* :sync-for-iterator = (let final core::Set<core::List<core::int*>*>* #t55 = col::LinkedHashSet::•<core::List<core::int*>*>() in let final core::bool #t56 = #t55.{core::Set::add}(<core::int*>[]) in #t55).{core::Iterable::iterator};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         final core::List<core::int*>* #t57 = :sync-for-iterator.{core::Iterator::current};
         #t54.{core::Set::add}(#t57);
@@ -766,7 +776,7 @@
     final core::Map<core::String*, core::List<core::int*>*>* #t62 = <core::String*, core::List<core::int*>*>{};
     if(self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*)
       if(self::oracle<dynamic>() as{TypeError,ForDynamic} core::bool*) {
-        core::Iterator<core::MapEntry<core::String*, core::List<core::int*>*>*>* :sync-for-iterator = <core::String*, core::List<core::int*>*>{"bar": <core::int*>[]}.{core::Map::entries}.{core::Iterable::iterator};
+        core::Iterator<core::MapEntry<core::String*, core::List<core::int*>*>>* :sync-for-iterator = <core::String*, core::List<core::int*>*>{"bar": <core::int*>[]}.{core::Map::entries}.{core::Iterable::iterator};
         for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
           final core::MapEntry<core::String*, core::List<core::int*>*>* #t63 = :sync-for-iterator.{core::Iterator::current};
           #t62.{core::Map::[]=}(#t63.{core::MapEntry::key}, #t63.{core::MapEntry::value});
@@ -798,7 +808,7 @@
   core::Map<core::String*, core::int*>* map50 = block {
     final core::Map<core::String*, core::int*>* #t68 = <core::String*, core::int*>{};
     if(self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*) {
-      core::Iterator<core::MapEntry<core::String*, core::int*>*>* :sync-for-iterator = <core::String*, core::int*>{}.{core::Map::entries}.{core::Iterable::iterator};
+      core::Iterator<core::MapEntry<core::String*, core::int*>>* :sync-for-iterator = <core::String*, core::int*>{}.{core::Map::entries}.{core::Iterable::iterator};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         final core::MapEntry<core::String*, core::int*>* #t69 = :sync-for-iterator.{core::Iterator::current};
         #t68.{core::Map::[]=}(#t69.{core::MapEntry::key}, #t69.{core::MapEntry::value});
@@ -854,7 +864,7 @@
     final core::Map<core::String*, core::int*>* #t80 = <core::String*, core::int*>{};
     if(self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*)
       if(self::oracle<dynamic>() as{TypeError,ForDynamic} core::bool*) {
-        core::Iterator<core::MapEntry<core::String*, core::int*>*>* :sync-for-iterator = <core::String*, core::int*>{}.{core::Map::entries}.{core::Iterable::iterator};
+        core::Iterator<core::MapEntry<core::String*, core::int*>>* :sync-for-iterator = <core::String*, core::int*>{}.{core::Map::entries}.{core::Iterable::iterator};
         for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
           final core::MapEntry<core::String*, core::int*>* #t81 = :sync-for-iterator.{core::Iterator::current};
           #t80.{core::Map::[]=}(#t81.{core::MapEntry::key}, #t81.{core::MapEntry::value});
@@ -886,7 +896,7 @@
   core::Map<core::String*, core::List<core::int*>*>* map60 = block {
     final core::Map<core::String*, core::List<core::int*>*>* #t86 = <core::String*, core::List<core::int*>*>{};
     if(self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*) {
-      core::Iterator<core::MapEntry<core::String*, core::List<core::int*>*>*>* :sync-for-iterator = <core::String*, core::List<core::int*>*>{"bar": <core::int*>[]}.{core::Map::entries}.{core::Iterable::iterator};
+      core::Iterator<core::MapEntry<core::String*, core::List<core::int*>*>>* :sync-for-iterator = <core::String*, core::List<core::int*>*>{"bar": <core::int*>[]}.{core::Map::entries}.{core::Iterable::iterator};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         final core::MapEntry<core::String*, core::List<core::int*>*>* #t87 = :sync-for-iterator.{core::Iterator::current};
         #t86.{core::Map::[]=}(#t87.{core::MapEntry::key}, #t87.{core::MapEntry::value});
@@ -921,7 +931,7 @@
     final core::Map<core::String*, core::List<core::int*>*>* #t92 = <core::String*, core::List<core::int*>*>{};
     if(self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*)
       if(self::oracle<dynamic>() as{TypeError,ForDynamic} core::bool*) {
-        core::Iterator<core::MapEntry<core::String*, core::List<core::int*>*>*>* :sync-for-iterator = <core::String*, core::List<core::int*>*>{"bar": <core::int*>[]}.{core::Map::entries}.{core::Iterable::iterator};
+        core::Iterator<core::MapEntry<core::String*, core::List<core::int*>*>>* :sync-for-iterator = <core::String*, core::List<core::int*>*>{"bar": <core::int*>[]}.{core::Map::entries}.{core::Iterable::iterator};
         for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
           final core::MapEntry<core::String*, core::List<core::int*>*>* #t93 = :sync-for-iterator.{core::Iterator::current};
           #t92.{core::Map::[]=}(#t93.{core::MapEntry::key}, #t93.{core::MapEntry::value});
@@ -1014,14 +1024,14 @@
   core::Map<core::String*, core::num*>* map81 = block {
     final core::Map<core::String*, core::num*>* #t107 = <core::String*, core::num*>{};
     if(self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*) {
-      core::Iterator<core::MapEntry<core::String*, core::int*>*>* :sync-for-iterator = mapToInt.{core::Map::entries}.{core::Iterable::iterator};
+      core::Iterator<core::MapEntry<core::String*, core::int*>>* :sync-for-iterator = mapToInt.{core::Map::entries}.{core::Iterable::iterator};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         final core::MapEntry<core::String*, core::num*>* #t108 = :sync-for-iterator.{core::Iterator::current};
         #t107.{core::Map::[]=}(#t108.{core::MapEntry::key}, #t108.{core::MapEntry::value});
       }
     }
     else {
-      core::Iterator<core::MapEntry<core::String*, core::double*>*>* :sync-for-iterator = mapToDouble.{core::Map::entries}.{core::Iterable::iterator};
+      core::Iterator<core::MapEntry<core::String*, core::double*>>* :sync-for-iterator = mapToDouble.{core::Map::entries}.{core::Iterable::iterator};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         final core::MapEntry<core::String*, core::num*>* #t109 = :sync-for-iterator.{core::Iterator::current};
         #t107.{core::Map::[]=}(#t109.{core::MapEntry::key}, #t109.{core::MapEntry::value});
@@ -1108,7 +1118,7 @@
   core::Map<core::String*, core::num*>* map83 = block {
     final core::Map<core::String*, core::num*>* #t122 = <core::String*, core::num*>{};
     if(self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*) {
-      core::Iterator<core::MapEntry<core::String*, core::int*>*>* :sync-for-iterator = mapToInt.{core::Map::entries}.{core::Iterable::iterator};
+      core::Iterator<core::MapEntry<core::String*, core::int*>>* :sync-for-iterator = mapToInt.{core::Map::entries}.{core::Iterable::iterator};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         final core::MapEntry<core::String*, core::num*>* #t123 = :sync-for-iterator.{core::Iterator::current};
         #t122.{core::Map::[]=}(#t123.{core::MapEntry::key}, #t123.{core::MapEntry::value});
@@ -1165,7 +1175,7 @@
   core::Map<core::String*, core::int*>* map91 = block {
     final core::Map<core::String*, core::int*>* #t133 = <core::String*, core::int*>{};
     if(self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*) {
-      core::Iterator<core::MapEntry<dynamic, dynamic>*>* :sync-for-iterator = (dynVar as{TypeError,ForDynamic} core::Map<dynamic, dynamic>*).{core::Map::entries}.{core::Iterable::iterator};
+      core::Iterator<core::MapEntry<dynamic, dynamic>>* :sync-for-iterator = (dynVar as{TypeError,ForDynamic} core::Map<dynamic, dynamic>*).{core::Map::entries}.{core::Iterable::iterator};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         final core::MapEntry<dynamic, dynamic>* #t134 = :sync-for-iterator.{core::Iterator::current};
         {
@@ -1245,7 +1255,7 @@
   block {
     final core::Map<core::String*, core::int*>* #t152 = <core::String*, core::int*>{};
     if(self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*) {
-      core::Iterator<core::MapEntry<core::String*, core::int*>*>* :sync-for-iterator = <core::String*, core::int*>{"bar": let final<BottomType> #t153 = invalid-expression "pkg/front_end/testcases/general_nnbd_opt_out/control_flow_collection_inference.dart:94:47: Error: A value of type 'String' can't be assigned to a variable of type 'int'.
+      core::Iterator<core::MapEntry<core::String*, core::int*>>* :sync-for-iterator = <core::String*, core::int*>{"bar": let final<BottomType> #t153 = invalid-expression "pkg/front_end/testcases/general_nnbd_opt_out/control_flow_collection_inference.dart:94:47: Error: A value of type 'String' can't be assigned to a variable of type 'int'.
   <String, int>{if (oracle(\"foo\")) ...{\"bar\": \"bar\"}, \"baz\": null};
                                               ^" in "bar" as{TypeError} core::int*}.{core::Map::entries}.{core::Iterable::iterator};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
@@ -1530,7 +1540,7 @@
   core::Map<core::String*, core::int*>* map20 = block {
     final core::Map<core::String*, core::int*>* #t201 = <core::String*, core::int*>{};
     for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1)) {
-      core::Iterator<core::MapEntry<core::String*, core::int*>*>* :sync-for-iterator = <core::String*, core::int*>{"bar": 42}.{core::Map::entries}.{core::Iterable::iterator};
+      core::Iterator<core::MapEntry<core::String*, core::int*>>* :sync-for-iterator = <core::String*, core::int*>{"bar": 42}.{core::Map::entries}.{core::Iterable::iterator};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         final core::MapEntry<core::String*, core::int*>* #t202 = :sync-for-iterator.{core::Iterator::current};
         #t201.{core::Map::[]=}(#t202.{core::MapEntry::key}, #t202.{core::MapEntry::value});
@@ -1562,7 +1572,7 @@
   core::Map<core::String*, dynamic>* map21 = block {
     final core::Map<core::String*, dynamic>* #t207 = <core::String*, dynamic>{};
     for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1)) {
-      core::Iterator<core::MapEntry<core::String*, dynamic>*>* :sync-for-iterator = <core::String*, dynamic>{"bar": dynVar}.{core::Map::entries}.{core::Iterable::iterator};
+      core::Iterator<core::MapEntry<core::String*, dynamic>>* :sync-for-iterator = <core::String*, dynamic>{"bar": dynVar}.{core::Map::entries}.{core::Iterable::iterator};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         final core::MapEntry<core::String*, dynamic>* #t208 = :sync-for-iterator.{core::Iterator::current};
         #t207.{core::Map::[]=}(#t208.{core::MapEntry::key}, #t208.{core::MapEntry::value});
@@ -1594,7 +1604,7 @@
   core::Map<core::String*, core::List<core::int*>*>* map22 = block {
     final core::Map<core::String*, core::List<core::int*>*>* #t213 = <core::String*, core::List<core::int*>*>{};
     for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1)) {
-      core::Iterator<core::MapEntry<core::String*, core::List<core::int*>*>*>* :sync-for-iterator = <core::String*, core::List<core::int*>*>{"bar": <core::int*>[42]}.{core::Map::entries}.{core::Iterable::iterator};
+      core::Iterator<core::MapEntry<core::String*, core::List<core::int*>*>>* :sync-for-iterator = <core::String*, core::List<core::int*>*>{"bar": <core::int*>[42]}.{core::Map::entries}.{core::Iterable::iterator};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         final core::MapEntry<core::String*, core::List<core::int*>*>* #t214 = :sync-for-iterator.{core::Iterator::current};
         #t213.{core::Map::[]=}(#t214.{core::MapEntry::key}, #t214.{core::MapEntry::value});
@@ -1629,7 +1639,7 @@
     final core::Map<core::String*, core::int*>* #t219 = <core::String*, core::int*>{};
     for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1))
       if(self::oracle<dynamic>() as{TypeError,ForDynamic} core::bool*) {
-        core::Iterator<core::MapEntry<core::String*, core::int*>*>* :sync-for-iterator = <core::String*, core::int*>{"bar": 42}.{core::Map::entries}.{core::Iterable::iterator};
+        core::Iterator<core::MapEntry<core::String*, core::int*>>* :sync-for-iterator = <core::String*, core::int*>{"bar": 42}.{core::Map::entries}.{core::Iterable::iterator};
         for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
           final core::MapEntry<core::String*, core::int*>* #t220 = :sync-for-iterator.{core::Iterator::current};
           #t219.{core::Map::[]=}(#t220.{core::MapEntry::key}, #t220.{core::MapEntry::value});
@@ -1664,7 +1674,7 @@
     final core::Map<core::String*, dynamic>* #t225 = <core::String*, dynamic>{};
     for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1))
       if(self::oracle<dynamic>() as{TypeError,ForDynamic} core::bool*) {
-        core::Iterator<core::MapEntry<core::String*, dynamic>*>* :sync-for-iterator = <core::String*, dynamic>{"bar": dynVar}.{core::Map::entries}.{core::Iterable::iterator};
+        core::Iterator<core::MapEntry<core::String*, dynamic>>* :sync-for-iterator = <core::String*, dynamic>{"bar": dynVar}.{core::Map::entries}.{core::Iterable::iterator};
         for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
           final core::MapEntry<core::String*, dynamic>* #t226 = :sync-for-iterator.{core::Iterator::current};
           #t225.{core::Map::[]=}(#t226.{core::MapEntry::key}, #t226.{core::MapEntry::value});
@@ -1699,7 +1709,7 @@
     final core::Map<core::String*, core::List<core::int*>*>* #t231 = <core::String*, core::List<core::int*>*>{};
     for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1))
       if(self::oracle<dynamic>() as{TypeError,ForDynamic} core::bool*) {
-        core::Iterator<core::MapEntry<core::String*, core::List<core::int*>*>*>* :sync-for-iterator = <core::String*, core::List<core::int*>*>{"bar": <core::int*>[42]}.{core::Map::entries}.{core::Iterable::iterator};
+        core::Iterator<core::MapEntry<core::String*, core::List<core::int*>*>>* :sync-for-iterator = <core::String*, core::List<core::int*>*>{"bar": <core::int*>[42]}.{core::Map::entries}.{core::Iterable::iterator};
         for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
           final core::MapEntry<core::String*, core::List<core::int*>*>* #t232 = :sync-for-iterator.{core::Iterator::current};
           #t231.{core::Map::[]=}(#t232.{core::MapEntry::key}, #t232.{core::MapEntry::value});
@@ -1731,7 +1741,7 @@
   core::Map<core::String*, core::List<core::int*>*>* map40 = block {
     final core::Map<core::String*, core::List<core::int*>*>* #t237 = <core::String*, core::List<core::int*>*>{};
     for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1)) {
-      core::Iterator<core::MapEntry<core::String*, core::List<core::int*>*>*>* :sync-for-iterator = <core::String*, core::List<core::int*>*>{"bar": <core::int*>[]}.{core::Map::entries}.{core::Iterable::iterator};
+      core::Iterator<core::MapEntry<core::String*, core::List<core::int*>*>>* :sync-for-iterator = <core::String*, core::List<core::int*>*>{"bar": <core::int*>[]}.{core::Map::entries}.{core::Iterable::iterator};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         final core::MapEntry<core::String*, core::List<core::int*>*>* #t238 = :sync-for-iterator.{core::Iterator::current};
         #t237.{core::Map::[]=}(#t238.{core::MapEntry::key}, #t238.{core::MapEntry::value});
@@ -1742,7 +1752,7 @@
   core::List<core::List<core::int*>*>* list41 = block {
     final core::List<core::List<core::int*>*>* #t239 = <core::List<core::int*>*>[];
     for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1)) {
-      core::Iterator<core::List<core::int*>*>* :sync-for-iterator = (let final core::Set<core::List<core::int*>*>* #t240 = col::LinkedHashSet::•<core::List<core::int*>*>() in let final core::bool* #t241 = #t240.{core::Set::add}(<core::int*>[]) in #t240).{core::Iterable::iterator};
+      core::Iterator<core::List<core::int*>*>* :sync-for-iterator = (let final core::Set<core::List<core::int*>*>* #t240 = col::LinkedHashSet::•<core::List<core::int*>*>() in let final core::bool #t241 = #t240.{core::Set::add}(<core::int*>[]) in #t240).{core::Iterable::iterator};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         final core::List<core::int*>* #t242 = :sync-for-iterator.{core::Iterator::current};
         #t239.{core::List::add}(#t242);
@@ -1752,7 +1762,7 @@
   core::Set<core::List<core::int*>*>* set41 = block {
     final core::Set<core::List<core::int*>*>* #t243 = col::LinkedHashSet::•<core::List<core::int*>*>();
     for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1)) {
-      core::Iterator<core::List<core::int*>*>* :sync-for-iterator = (let final core::Set<core::List<core::int*>*>* #t244 = col::LinkedHashSet::•<core::List<core::int*>*>() in let final core::bool* #t245 = #t244.{core::Set::add}(<core::int*>[]) in #t244).{core::Iterable::iterator};
+      core::Iterator<core::List<core::int*>*>* :sync-for-iterator = (let final core::Set<core::List<core::int*>*>* #t244 = col::LinkedHashSet::•<core::List<core::int*>*>() in let final core::bool #t245 = #t244.{core::Set::add}(<core::int*>[]) in #t244).{core::Iterable::iterator};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         final core::List<core::int*>* #t246 = :sync-for-iterator.{core::Iterator::current};
         #t243.{core::Set::add}(#t246);
@@ -1787,7 +1797,7 @@
     final core::Map<core::String*, core::List<core::int*>*>* #t251 = <core::String*, core::List<core::int*>*>{};
     for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1))
       if(self::oracle<dynamic>() as{TypeError,ForDynamic} core::bool*) {
-        core::Iterator<core::MapEntry<core::String*, core::List<core::int*>*>*>* :sync-for-iterator = <core::String*, core::List<core::int*>*>{"bar": <core::int*>[]}.{core::Map::entries}.{core::Iterable::iterator};
+        core::Iterator<core::MapEntry<core::String*, core::List<core::int*>*>>* :sync-for-iterator = <core::String*, core::List<core::int*>*>{"bar": <core::int*>[]}.{core::Map::entries}.{core::Iterable::iterator};
         for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
           final core::MapEntry<core::String*, core::List<core::int*>*>* #t252 = :sync-for-iterator.{core::Iterator::current};
           #t251.{core::Map::[]=}(#t252.{core::MapEntry::key}, #t252.{core::MapEntry::value});
@@ -1819,7 +1829,7 @@
   core::Map<core::String*, core::int*>* map50 = block {
     final core::Map<core::String*, core::int*>* #t257 = <core::String*, core::int*>{};
     for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1)) {
-      core::Iterator<core::MapEntry<core::String*, core::int*>*>* :sync-for-iterator = <core::String*, core::int*>{}.{core::Map::entries}.{core::Iterable::iterator};
+      core::Iterator<core::MapEntry<core::String*, core::int*>>* :sync-for-iterator = <core::String*, core::int*>{}.{core::Map::entries}.{core::Iterable::iterator};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         final core::MapEntry<core::String*, core::int*>* #t258 = :sync-for-iterator.{core::Iterator::current};
         #t257.{core::Map::[]=}(#t258.{core::MapEntry::key}, #t258.{core::MapEntry::value});
@@ -1895,7 +1905,7 @@
   core::Map<core::String*, core::List<core::int*>*>* map60 = block {
     final core::Map<core::String*, core::List<core::int*>*>* #t273 = <core::String*, core::List<core::int*>*>{};
     for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1)) {
-      core::Iterator<core::MapEntry<core::String*, core::List<core::int*>*>*>* :sync-for-iterator = <core::String*, core::List<core::int*>*>{"bar": <core::int*>[]}.{core::Map::entries}.{core::Iterable::iterator};
+      core::Iterator<core::MapEntry<core::String*, core::List<core::int*>*>>* :sync-for-iterator = <core::String*, core::List<core::int*>*>{"bar": <core::int*>[]}.{core::Map::entries}.{core::Iterable::iterator};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         final core::MapEntry<core::String*, core::List<core::int*>*>* #t274 = :sync-for-iterator.{core::Iterator::current};
         #t273.{core::Map::[]=}(#t274.{core::MapEntry::key}, #t274.{core::MapEntry::value});
@@ -1930,7 +1940,7 @@
     final core::Map<core::String*, core::List<core::int*>*>* #t279 = <core::String*, core::List<core::int*>*>{};
     for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1))
       if(self::oracle<dynamic>() as{TypeError,ForDynamic} core::bool*) {
-        core::Iterator<core::MapEntry<core::String*, core::List<core::int*>*>*>* :sync-for-iterator = <core::String*, core::List<core::int*>*>{"bar": <core::int*>[]}.{core::Map::entries}.{core::Iterable::iterator};
+        core::Iterator<core::MapEntry<core::String*, core::List<core::int*>*>>* :sync-for-iterator = <core::String*, core::List<core::int*>*>{"bar": <core::int*>[]}.{core::Map::entries}.{core::Iterable::iterator};
         for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
           final core::MapEntry<core::String*, core::List<core::int*>*>* #t280 = :sync-for-iterator.{core::Iterator::current};
           #t279.{core::Map::[]=}(#t280.{core::MapEntry::key}, #t280.{core::MapEntry::value});
@@ -2042,14 +2052,14 @@
     final core::Map<core::String*, core::num*>* #t296 = <core::String*, core::num*>{};
     for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1))
       if(self::oracle<dynamic>() as{TypeError,ForDynamic} core::bool*) {
-        core::Iterator<core::MapEntry<core::String*, core::int*>*>* :sync-for-iterator = mapStringInt.{core::Map::entries}.{core::Iterable::iterator};
+        core::Iterator<core::MapEntry<core::String*, core::int*>>* :sync-for-iterator = mapStringInt.{core::Map::entries}.{core::Iterable::iterator};
         for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
           final core::MapEntry<core::String*, core::num*>* #t297 = :sync-for-iterator.{core::Iterator::current};
           #t296.{core::Map::[]=}(#t297.{core::MapEntry::key}, #t297.{core::MapEntry::value});
         }
       }
       else {
-        core::Iterator<core::MapEntry<core::String*, core::double*>*>* :sync-for-iterator = mapStringDouble.{core::Map::entries}.{core::Iterable::iterator};
+        core::Iterator<core::MapEntry<core::String*, core::double*>>* :sync-for-iterator = mapStringDouble.{core::Map::entries}.{core::Iterable::iterator};
         for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
           final core::MapEntry<core::String*, core::num*>* #t298 = :sync-for-iterator.{core::Iterator::current};
           #t296.{core::Map::[]=}(#t298.{core::MapEntry::key}, #t298.{core::MapEntry::value});
@@ -2098,14 +2108,14 @@
     final core::Map<dynamic, dynamic>* #t305 = <dynamic, dynamic>{};
     for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1))
       if(self::oracle<dynamic>() as{TypeError,ForDynamic} core::bool*) {
-        core::Iterator<core::MapEntry<core::String*, core::int*>*>* :sync-for-iterator = mapStringInt.{core::Map::entries}.{core::Iterable::iterator};
+        core::Iterator<core::MapEntry<core::String*, core::int*>>* :sync-for-iterator = mapStringInt.{core::Map::entries}.{core::Iterable::iterator};
         for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
           final core::MapEntry<dynamic, dynamic>* #t306 = :sync-for-iterator.{core::Iterator::current};
           #t305.{core::Map::[]=}(#t306.{core::MapEntry::key}, #t306.{core::MapEntry::value});
         }
       }
       else {
-        core::Iterator<core::MapEntry<dynamic, dynamic>*>* :sync-for-iterator = (dynVar as{TypeError,ForDynamic} core::Map<dynamic, dynamic>*).{core::Map::entries}.{core::Iterable::iterator};
+        core::Iterator<core::MapEntry<dynamic, dynamic>>* :sync-for-iterator = (dynVar as{TypeError,ForDynamic} core::Map<dynamic, dynamic>*).{core::Map::entries}.{core::Iterable::iterator};
         for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
           final core::MapEntry<dynamic, dynamic>* #t307 = :sync-for-iterator.{core::Iterator::current};
           #t305.{core::Map::[]=}(#t307.{core::MapEntry::key}, #t307.{core::MapEntry::value});
@@ -2144,7 +2154,7 @@
     final core::Map<core::String*, core::num*>* #t312 = <core::String*, core::num*>{};
     for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1))
       if(self::oracle<dynamic>() as{TypeError,ForDynamic} core::bool*) {
-        core::Iterator<core::MapEntry<core::String*, core::int*>*>* :sync-for-iterator = mapStringInt.{core::Map::entries}.{core::Iterable::iterator};
+        core::Iterator<core::MapEntry<core::String*, core::int*>>* :sync-for-iterator = mapStringInt.{core::Map::entries}.{core::Iterable::iterator};
         for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
           final core::MapEntry<core::String*, core::num*>* #t313 = :sync-for-iterator.{core::Iterator::current};
           #t312.{core::Map::[]=}(#t313.{core::MapEntry::key}, #t313.{core::MapEntry::value});
@@ -2201,7 +2211,7 @@
   core::Map<core::String*, core::int*>* map91 = block {
     final core::Map<core::String*, core::int*>* #t323 = <core::String*, core::int*>{};
     for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1)) {
-      core::Iterator<core::MapEntry<dynamic, dynamic>*>* :sync-for-iterator = (dynVar as{TypeError,ForDynamic} core::Map<dynamic, dynamic>*).{core::Map::entries}.{core::Iterable::iterator};
+      core::Iterator<core::MapEntry<dynamic, dynamic>>* :sync-for-iterator = (dynVar as{TypeError,ForDynamic} core::Map<dynamic, dynamic>*).{core::Map::entries}.{core::Iterable::iterator};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         final core::MapEntry<dynamic, dynamic>* #t324 = :sync-for-iterator.{core::Iterator::current};
         {
@@ -2379,7 +2389,7 @@
         block {
           final core::Map<core::int*, core::int*>* #t356 = <core::int*, core::int*>{};
           for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1)) {
-            core::Iterator<core::MapEntry<core::int*, core::int*>*>* :sync-for-iterator = <core::int*, core::int*>{let final<BottomType> #t357 = invalid-expression "pkg/front_end/testcases/general_nnbd_opt_out/control_flow_collection_inference.dart:217:54: Error: A value of type 'String' can't be assigned to a variable of type 'int'.
+            core::Iterator<core::MapEntry<core::int*, core::int*>>* :sync-for-iterator = <core::int*, core::int*>{let final<BottomType> #t357 = invalid-expression "pkg/front_end/testcases/general_nnbd_opt_out/control_flow_collection_inference.dart:217:54: Error: A value of type 'String' can't be assigned to a variable of type 'int'.
   <int, int>{for (int i = 0; oracle(\"foo\"); i++) ...{\"bar\": \"bar\"}, \"baz\": null};
                                                      ^" in "bar" as{TypeError} core::int*: let final<BottomType> #t358 = invalid-expression "pkg/front_end/testcases/general_nnbd_opt_out/control_flow_collection_inference.dart:217:61: Error: A value of type 'String' can't be assigned to a variable of type 'int'.
   <int, int>{for (int i = 0; oracle(\"foo\"); i++) ...{\"bar\": \"bar\"}, \"baz\": null};
@@ -2661,7 +2671,7 @@
             while (true) {
               dynamic #t399 = asy::_asyncStarMoveNextHelper(:stream);
               [yield] let dynamic #t400 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::moveNext}(), :async_op_then, :async_op_error, :async_op) in null;
-              if(_in::unsafeCast<core::bool*>(:result)) {
+              if(_in::unsafeCast<core::bool>(:result)) {
                 dynamic i = :for-iterator.{asy::_StreamIterator::current};
                 #t397.{core::List::add}(i);
               }
@@ -2688,7 +2698,7 @@
             while (true) {
               dynamic #t404 = asy::_asyncStarMoveNextHelper(:stream);
               [yield] let dynamic #t405 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::moveNext}(), :async_op_then, :async_op_error, :async_op) in null;
-              if(_in::unsafeCast<core::bool*>(:result)) {
+              if(_in::unsafeCast<core::bool>(:result)) {
                 dynamic i = :for-iterator.{asy::_StreamIterator::current};
                 #t402.{core::Set::add}(i);
               }
@@ -2717,7 +2727,7 @@
             while (true) {
               dynamic #t409 = asy::_asyncStarMoveNextHelper(:stream);
               [yield] let dynamic #t410 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::moveNext}(), :async_op_then, :async_op_error, :async_op) in null;
-              if(_in::unsafeCast<core::bool*>(:result)) {
+              if(_in::unsafeCast<core::bool>(:result)) {
                 dynamic i = :for-iterator.{asy::_StreamIterator::current};
                 #t407.{core::Map::[]=}("bar", i);
               }
@@ -2735,7 +2745,7 @@
         } =>#t407;
         final core::List<core::int*>* #t412 = <core::int*>[];
         {
-          asy::Stream<core::int*>* :stream = asy::Stream::fromIterable<core::int*>(<core::int*>[let final<BottomType> #t413 = invalid-expression "pkg/front_end/testcases/general_nnbd_opt_out/control_flow_collection_inference.dart:245:58: Error: A value of type 'String' can't be assigned to a variable of type 'int'.
+          asy::Stream<core::int*> :stream = asy::Stream::fromIterable<core::int*>(<core::int*>[let final<BottomType> #t413 = invalid-expression "pkg/front_end/testcases/general_nnbd_opt_out/control_flow_collection_inference.dart:245:58: Error: A value of type 'String' can't be assigned to a variable of type 'int'.
   var list40 = [await for (int i in Stream.fromIterable([\"not\", \"int\"])) i];
                                                          ^" in "not" as{TypeError} core::int*, let final<BottomType> #t414 = invalid-expression "pkg/front_end/testcases/general_nnbd_opt_out/control_flow_collection_inference.dart:245:65: Error: A value of type 'String' can't be assigned to a variable of type 'int'.
   var list40 = [await for (int i in Stream.fromIterable([\"not\", \"int\"])) i];
@@ -2747,7 +2757,7 @@
             while (true) {
               dynamic #t415 = asy::_asyncStarMoveNextHelper(:stream);
               [yield] let dynamic #t416 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::moveNext}(), :async_op_then, :async_op_error, :async_op) in null;
-              if(_in::unsafeCast<core::bool*>(:result)) {
+              if(_in::unsafeCast<core::bool>(:result)) {
                 core::int* i = :for-iterator.{asy::_StreamIterator::current};
                 #t412.{core::List::add}(i);
               }
@@ -2763,7 +2773,7 @@
         core::List<core::int*>* list40 = block {} =>#t412;
         final core::Set<core::int*>* #t418 = col::LinkedHashSet::•<core::int*>();
         {
-          asy::Stream<core::int*>* :stream = asy::Stream::fromIterable<core::int*>(<core::int*>[let final<BottomType> #t419 = invalid-expression "pkg/front_end/testcases/general_nnbd_opt_out/control_flow_collection_inference.dart:246:57: Error: A value of type 'String' can't be assigned to a variable of type 'int'.
+          asy::Stream<core::int*> :stream = asy::Stream::fromIterable<core::int*>(<core::int*>[let final<BottomType> #t419 = invalid-expression "pkg/front_end/testcases/general_nnbd_opt_out/control_flow_collection_inference.dart:246:57: Error: A value of type 'String' can't be assigned to a variable of type 'int'.
   var set40 = {await for (int i in Stream.fromIterable([\"not\", \"int\"])) i, null};
                                                         ^" in "not" as{TypeError} core::int*, let final<BottomType> #t420 = invalid-expression "pkg/front_end/testcases/general_nnbd_opt_out/control_flow_collection_inference.dart:246:64: Error: A value of type 'String' can't be assigned to a variable of type 'int'.
   var set40 = {await for (int i in Stream.fromIterable([\"not\", \"int\"])) i, null};
@@ -2775,7 +2785,7 @@
             while (true) {
               dynamic #t421 = asy::_asyncStarMoveNextHelper(:stream);
               [yield] let dynamic #t422 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::moveNext}(), :async_op_then, :async_op_error, :async_op) in null;
-              if(_in::unsafeCast<core::bool*>(:result)) {
+              if(_in::unsafeCast<core::bool>(:result)) {
                 core::int* i = :for-iterator.{asy::_StreamIterator::current};
                 #t418.{core::Set::add}(i);
               }
@@ -2793,7 +2803,7 @@
         } =>#t418;
         final core::Map<core::String*, core::int*>* #t424 = <core::String*, core::int*>{};
         {
-          asy::Stream<core::int*>* :stream = asy::Stream::fromIterable<core::int*>(<core::int*>[let final<BottomType> #t425 = invalid-expression "pkg/front_end/testcases/general_nnbd_opt_out/control_flow_collection_inference.dart:247:57: Error: A value of type 'String' can't be assigned to a variable of type 'int'.
+          asy::Stream<core::int*> :stream = asy::Stream::fromIterable<core::int*>(<core::int*>[let final<BottomType> #t425 = invalid-expression "pkg/front_end/testcases/general_nnbd_opt_out/control_flow_collection_inference.dart:247:57: Error: A value of type 'String' can't be assigned to a variable of type 'int'.
   var map40 = {await for (int i in Stream.fromIterable([\"not\", \"int\"])) \"bar\": i, \"baz\": null};
                                                         ^" in "not" as{TypeError} core::int*, let final<BottomType> #t426 = invalid-expression "pkg/front_end/testcases/general_nnbd_opt_out/control_flow_collection_inference.dart:247:64: Error: A value of type 'String' can't be assigned to a variable of type 'int'.
   var map40 = {await for (int i in Stream.fromIterable([\"not\", \"int\"])) \"bar\": i, \"baz\": null};
@@ -2805,7 +2815,7 @@
             while (true) {
               dynamic #t427 = asy::_asyncStarMoveNextHelper(:stream);
               [yield] let dynamic #t428 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::moveNext}(), :async_op_then, :async_op_error, :async_op) in null;
-              if(_in::unsafeCast<core::bool*>(:result)) {
+              if(_in::unsafeCast<core::bool>(:result)) {
                 core::int* i = :for-iterator.{asy::_StreamIterator::current};
                 #t424.{core::Map::[]=}("bar", i);
               }
@@ -2865,8 +2875,8 @@
       asy::_completeOnAsyncReturn(:async_completer, :return_value);
       return;
     }
-    on dynamic catch(dynamic :exception, core::StackTrace* :stack_trace) {
-      :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+    on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
+      :async_completer.{asy::Completer::completeError}(exception, stack_trace);
     }
   :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/covariant_equals.dart.outline.expect b/pkg/front_end/testcases/general_nnbd_opt_out/covariant_equals.dart.outline.expect
index d521bc4..84e0d15 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/covariant_equals.dart.outline.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/covariant_equals.dart.outline.expect
@@ -7,6 +7,15 @@
     ;
   operator ==(covariant self::A* other) → core::bool*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A {
   synthetic constructor •() → self::B*
@@ -19,6 +28,15 @@
     ;
   operator ==(covariant generic-covariant-impl self::C<self::C::T*>* other) → core::bool*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D extends self::C<core::int*> {
   synthetic constructor •() → self::D*
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/covariant_equals.dart.strong.expect b/pkg/front_end/testcases/general_nnbd_opt_out/covariant_equals.dart.strong.expect
index f58c540..8b477b1 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/covariant_equals.dart.strong.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/covariant_equals.dart.strong.expect
@@ -128,6 +128,15 @@
     ;
   operator ==(covariant self::A* other) → core::bool*
     return true;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A {
   synthetic constructor •() → self::B*
@@ -142,6 +151,15 @@
     ;
   operator ==(covariant generic-covariant-impl self::C<self::C::T*>* other) → core::bool*
     return true;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D extends self::C<core::int*> {
   synthetic constructor •() → self::D*
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/covariant_equals.dart.strong.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/covariant_equals.dart.strong.transformed.expect
index f58c540..8b477b1 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/covariant_equals.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/covariant_equals.dart.strong.transformed.expect
@@ -128,6 +128,15 @@
     ;
   operator ==(covariant self::A* other) → core::bool*
     return true;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A {
   synthetic constructor •() → self::B*
@@ -142,6 +151,15 @@
     ;
   operator ==(covariant generic-covariant-impl self::C<self::C::T*>* other) → core::bool*
     return true;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D extends self::C<core::int*> {
   synthetic constructor •() → self::D*
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/covariant_equals.dart.weak.expect b/pkg/front_end/testcases/general_nnbd_opt_out/covariant_equals.dart.weak.expect
index f58c540..8b477b1 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/covariant_equals.dart.weak.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/covariant_equals.dart.weak.expect
@@ -128,6 +128,15 @@
     ;
   operator ==(covariant self::A* other) → core::bool*
     return true;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A {
   synthetic constructor •() → self::B*
@@ -142,6 +151,15 @@
     ;
   operator ==(covariant generic-covariant-impl self::C<self::C::T*>* other) → core::bool*
     return true;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D extends self::C<core::int*> {
   synthetic constructor •() → self::D*
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/covariant_equals.dart.weak.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/covariant_equals.dart.weak.transformed.expect
index f58c540..8b477b1 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/covariant_equals.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/covariant_equals.dart.weak.transformed.expect
@@ -128,6 +128,15 @@
     ;
   operator ==(covariant self::A* other) → core::bool*
     return true;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A {
   synthetic constructor •() → self::B*
@@ -142,6 +151,15 @@
     ;
   operator ==(covariant generic-covariant-impl self::C<self::C::T*>* other) → core::bool*
     return true;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D extends self::C<core::int*> {
   synthetic constructor •() → self::D*
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/covariant_generic.dart.outline.expect b/pkg/front_end/testcases/general_nnbd_opt_out/covariant_generic.dart.outline.expect
index 830c5bd..5c2b5c2 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/covariant_generic.dart.outline.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/covariant_generic.dart.outline.expect
@@ -16,6 +16,16 @@
     ;
   method withCallback((self::Foo::T*) →* void callback) → void
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/covariant_generic.dart.strong.expect b/pkg/front_end/testcases/general_nnbd_opt_out/covariant_generic.dart.strong.expect
index e9d608a..7a05af3 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/covariant_generic.dart.strong.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/covariant_generic.dart.strong.expect
@@ -16,6 +16,16 @@
   method withCallback((self::Foo::T*) →* void callback) → void {
     callback.call(this.{self::Foo::finalField});
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   self::Foo<core::int*>* fooInt = new self::Foo::•<core::int*>(1, (core::int* x) → core::Null? {});
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/covariant_generic.dart.strong.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/covariant_generic.dart.strong.transformed.expect
index e9d608a..7a05af3 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/covariant_generic.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/covariant_generic.dart.strong.transformed.expect
@@ -16,6 +16,16 @@
   method withCallback((self::Foo::T*) →* void callback) → void {
     callback.call(this.{self::Foo::finalField});
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   self::Foo<core::int*>* fooInt = new self::Foo::•<core::int*>(1, (core::int* x) → core::Null? {});
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/covariant_generic.dart.weak.expect b/pkg/front_end/testcases/general_nnbd_opt_out/covariant_generic.dart.weak.expect
index e9d608a..7a05af3 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/covariant_generic.dart.weak.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/covariant_generic.dart.weak.expect
@@ -16,6 +16,16 @@
   method withCallback((self::Foo::T*) →* void callback) → void {
     callback.call(this.{self::Foo::finalField});
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   self::Foo<core::int*>* fooInt = new self::Foo::•<core::int*>(1, (core::int* x) → core::Null? {});
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/covariant_generic.dart.weak.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/covariant_generic.dart.weak.transformed.expect
index e9d608a..7a05af3 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/covariant_generic.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/covariant_generic.dart.weak.transformed.expect
@@ -16,6 +16,16 @@
   method withCallback((self::Foo::T*) →* void callback) → void {
     callback.call(this.{self::Foo::finalField});
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   self::Foo<core::int*>* fooInt = new self::Foo::•<core::int*>(1, (core::int* x) → core::Null? {});
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/covariant_parameter_in_superclass_of_mixin_application.dart.outline.expect b/pkg/front_end/testcases/general_nnbd_opt_out/covariant_parameter_in_superclass_of_mixin_application.dart.outline.expect
index f2001a3..d787aba 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/covariant_parameter_in_superclass_of_mixin_application.dart.outline.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/covariant_parameter_in_superclass_of_mixin_application.dart.outline.expect
@@ -7,18 +7,48 @@
     ;
   method foo(covariant core::num* x) → void
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends core::Object {
   synthetic constructor •() → self::B*
     ;
   method foo(core::num* x) → void
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C extends core::Object {
   synthetic constructor •() → self::C*
     ;
   method foo(core::num* x) → void
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class _D&A&B = self::A with self::B /*isAnonymousMixin*/  {
   synthetic constructor •() → self::_D&A&B*
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/covariant_parameter_in_superclass_of_mixin_application.dart.strong.expect b/pkg/front_end/testcases/general_nnbd_opt_out/covariant_parameter_in_superclass_of_mixin_application.dart.strong.expect
index 03d861d..74659ae 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/covariant_parameter_in_superclass_of_mixin_application.dart.strong.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/covariant_parameter_in_superclass_of_mixin_application.dart.strong.expect
@@ -7,18 +7,48 @@
     : super core::Object::•()
     ;
   method foo(covariant core::num* x) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends core::Object {
   synthetic constructor •() → self::B*
     : super core::Object::•()
     ;
   method foo(core::num* x) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C extends core::Object {
   synthetic constructor •() → self::C*
     : super core::Object::•()
     ;
   method foo(core::num* x) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class _D&A&B = self::A with self::B /*isAnonymousMixin*/  {
   synthetic constructor •() → self::_D&A&B*
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/covariant_parameter_in_superclass_of_mixin_application.dart.strong.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/covariant_parameter_in_superclass_of_mixin_application.dart.strong.transformed.expect
index b35ef09..5d4675b 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/covariant_parameter_in_superclass_of_mixin_application.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/covariant_parameter_in_superclass_of_mixin_application.dart.strong.transformed.expect
@@ -7,24 +7,64 @@
     : super core::Object::•()
     ;
   method foo(covariant core::num* x) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends core::Object {
   synthetic constructor •() → self::B*
     : super core::Object::•()
     ;
   method foo(core::num* x) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C extends core::Object {
   synthetic constructor •() → self::C*
     : super core::Object::•()
     ;
   method foo(core::num* x) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class _D&A&B extends self::A implements self::B /*isAnonymousMixin,isEliminatedMixin*/  {
   synthetic constructor •() → self::_D&A&B*
     : super self::A::•()
     ;
   method foo(covariant core::num* x) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D extends self::_D&A&B implements self::C {
   synthetic constructor •() → self::D*
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/covariant_parameter_in_superclass_of_mixin_application.dart.weak.expect b/pkg/front_end/testcases/general_nnbd_opt_out/covariant_parameter_in_superclass_of_mixin_application.dart.weak.expect
index 03d861d..74659ae 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/covariant_parameter_in_superclass_of_mixin_application.dart.weak.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/covariant_parameter_in_superclass_of_mixin_application.dart.weak.expect
@@ -7,18 +7,48 @@
     : super core::Object::•()
     ;
   method foo(covariant core::num* x) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends core::Object {
   synthetic constructor •() → self::B*
     : super core::Object::•()
     ;
   method foo(core::num* x) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C extends core::Object {
   synthetic constructor •() → self::C*
     : super core::Object::•()
     ;
   method foo(core::num* x) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class _D&A&B = self::A with self::B /*isAnonymousMixin*/  {
   synthetic constructor •() → self::_D&A&B*
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/covariant_parameter_in_superclass_of_mixin_application.dart.weak.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/covariant_parameter_in_superclass_of_mixin_application.dart.weak.transformed.expect
index b35ef09..5d4675b 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/covariant_parameter_in_superclass_of_mixin_application.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/covariant_parameter_in_superclass_of_mixin_application.dart.weak.transformed.expect
@@ -7,24 +7,64 @@
     : super core::Object::•()
     ;
   method foo(covariant core::num* x) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends core::Object {
   synthetic constructor •() → self::B*
     : super core::Object::•()
     ;
   method foo(core::num* x) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C extends core::Object {
   synthetic constructor •() → self::C*
     : super core::Object::•()
     ;
   method foo(core::num* x) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class _D&A&B extends self::A implements self::B /*isAnonymousMixin,isEliminatedMixin*/  {
   synthetic constructor •() → self::_D&A&B*
     : super self::A::•()
     ;
   method foo(covariant core::num* x) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D extends self::_D&A&B implements self::C {
   synthetic constructor •() → self::D*
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/cycles.dart.outline.expect b/pkg/front_end/testcases/general_nnbd_opt_out/cycles.dart.outline.expect
index 0c9ee5b..e73a743 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/cycles.dart.outline.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/cycles.dart.outline.expect
@@ -20,18 +20,58 @@
 class A extends core::Object {
   synthetic constructor •() → self::A*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends core::Object {
   synthetic constructor •() → self::B*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C extends core::Object {
   synthetic constructor •() → self::C*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D extends core::Object {
   synthetic constructor •() → self::D*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/cycles.dart.strong.expect b/pkg/front_end/testcases/general_nnbd_opt_out/cycles.dart.strong.expect
index c3d7641..62530c5 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/cycles.dart.strong.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/cycles.dart.strong.expect
@@ -21,21 +21,61 @@
   synthetic constructor •() → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends core::Object {
   synthetic constructor •() → self::B*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C extends core::Object {
   synthetic constructor •() → self::C*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D extends core::Object {
   synthetic constructor •() → self::D*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   core::print(new self::A::•());
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/cycles.dart.strong.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/cycles.dart.strong.transformed.expect
index c3d7641..62530c5 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/cycles.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/cycles.dart.strong.transformed.expect
@@ -21,21 +21,61 @@
   synthetic constructor •() → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends core::Object {
   synthetic constructor •() → self::B*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C extends core::Object {
   synthetic constructor •() → self::C*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D extends core::Object {
   synthetic constructor •() → self::D*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   core::print(new self::A::•());
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/cycles.dart.weak.expect b/pkg/front_end/testcases/general_nnbd_opt_out/cycles.dart.weak.expect
index c3d7641..62530c5 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/cycles.dart.weak.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/cycles.dart.weak.expect
@@ -21,21 +21,61 @@
   synthetic constructor •() → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends core::Object {
   synthetic constructor •() → self::B*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C extends core::Object {
   synthetic constructor •() → self::C*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D extends core::Object {
   synthetic constructor •() → self::D*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   core::print(new self::A::•());
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/cycles.dart.weak.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/cycles.dart.weak.transformed.expect
index c3d7641..62530c5 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/cycles.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/cycles.dart.weak.transformed.expect
@@ -21,21 +21,61 @@
   synthetic constructor •() → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends core::Object {
   synthetic constructor •() → self::B*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C extends core::Object {
   synthetic constructor •() → self::C*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D extends core::Object {
   synthetic constructor •() → self::D*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   core::print(new self::A::•());
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/deferred_type_annotation.dart.outline.expect b/pkg/front_end/testcases/general_nnbd_opt_out/deferred_type_annotation.dart.outline.expect
index 1446703..5ae77c0 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/deferred_type_annotation.dart.outline.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/deferred_type_annotation.dart.outline.expect
@@ -19,6 +19,16 @@
     ;
   static method m() → core::int*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field core::int* x;
 static method m(dynamic x) → dynamic
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/deferred_type_annotation.dart.strong.expect b/pkg/front_end/testcases/general_nnbd_opt_out/deferred_type_annotation.dart.strong.expect
index 34e69e6d..805e3ff 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/deferred_type_annotation.dart.strong.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/deferred_type_annotation.dart.strong.expect
@@ -27,6 +27,16 @@
     ;
   static method m() → core::int*
     return 2;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field core::int* x = 0;
 static method m(dynamic x) → dynamic
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/deferred_type_annotation.dart.strong.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/deferred_type_annotation.dart.strong.transformed.expect
index 34e69e6d..805e3ff 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/deferred_type_annotation.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/deferred_type_annotation.dart.strong.transformed.expect
@@ -27,6 +27,16 @@
     ;
   static method m() → core::int*
     return 2;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field core::int* x = 0;
 static method m(dynamic x) → dynamic
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/deferred_type_annotation.dart.weak.expect b/pkg/front_end/testcases/general_nnbd_opt_out/deferred_type_annotation.dart.weak.expect
index 34e69e6d..805e3ff 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/deferred_type_annotation.dart.weak.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/deferred_type_annotation.dart.weak.expect
@@ -27,6 +27,16 @@
     ;
   static method m() → core::int*
     return 2;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field core::int* x = 0;
 static method m(dynamic x) → dynamic
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/deferred_type_annotation.dart.weak.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/deferred_type_annotation.dart.weak.transformed.expect
index 34e69e6d..805e3ff 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/deferred_type_annotation.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/deferred_type_annotation.dart.weak.transformed.expect
@@ -27,6 +27,16 @@
     ;
   static method m() → core::int*
     return 2;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field core::int* x = 0;
 static method m(dynamic x) → dynamic
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/duplicated_bad_prefix.dart.outline.expect b/pkg/front_end/testcases/general_nnbd_opt_out/duplicated_bad_prefix.dart.outline.expect
index f817377..48e273f 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/duplicated_bad_prefix.dart.outline.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/duplicated_bad_prefix.dart.outline.expect
@@ -26,16 +26,46 @@
 class Dupe#1 extends core::Object {
   synthetic constructor •() → self::Dupe#1*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Dupe extends core::Object {
   synthetic constructor •() → self::Dupe*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C extends core::Object {
   field invalid-type b;
   field invalid-type d;
   synthetic constructor •() → self::C*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
@@ -47,6 +77,16 @@
 class C extends core::Object {
   synthetic constructor •() → self2::C*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 
 library;
@@ -56,4 +96,14 @@
 class C extends core::Object {
   synthetic constructor •() → self3::C*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/duplicated_bad_prefix.dart.strong.expect b/pkg/front_end/testcases/general_nnbd_opt_out/duplicated_bad_prefix.dart.strong.expect
index 0117388..2ed7afd 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/duplicated_bad_prefix.dart.strong.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/duplicated_bad_prefix.dart.strong.expect
@@ -31,11 +31,31 @@
   synthetic constructor •() → self::Dupe#1*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Dupe extends core::Object {
   synthetic constructor •() → self::Dupe*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C extends core::Object {
   field invalid-type b = null;
@@ -43,6 +63,16 @@
   synthetic constructor •() → self::C*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
 
@@ -54,6 +84,16 @@
   synthetic constructor •() → self2::C*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 
 library;
@@ -64,4 +104,14 @@
   synthetic constructor •() → self3::C*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/duplicated_bad_prefix.dart.strong.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/duplicated_bad_prefix.dart.strong.transformed.expect
index 0117388..2ed7afd 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/duplicated_bad_prefix.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/duplicated_bad_prefix.dart.strong.transformed.expect
@@ -31,11 +31,31 @@
   synthetic constructor •() → self::Dupe#1*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Dupe extends core::Object {
   synthetic constructor •() → self::Dupe*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C extends core::Object {
   field invalid-type b = null;
@@ -43,6 +63,16 @@
   synthetic constructor •() → self::C*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
 
@@ -54,6 +84,16 @@
   synthetic constructor •() → self2::C*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 
 library;
@@ -64,4 +104,14 @@
   synthetic constructor •() → self3::C*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/duplicated_bad_prefix.dart.weak.expect b/pkg/front_end/testcases/general_nnbd_opt_out/duplicated_bad_prefix.dart.weak.expect
index 0117388..2ed7afd 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/duplicated_bad_prefix.dart.weak.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/duplicated_bad_prefix.dart.weak.expect
@@ -31,11 +31,31 @@
   synthetic constructor •() → self::Dupe#1*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Dupe extends core::Object {
   synthetic constructor •() → self::Dupe*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C extends core::Object {
   field invalid-type b = null;
@@ -43,6 +63,16 @@
   synthetic constructor •() → self::C*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
 
@@ -54,6 +84,16 @@
   synthetic constructor •() → self2::C*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 
 library;
@@ -64,4 +104,14 @@
   synthetic constructor •() → self3::C*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/duplicated_bad_prefix.dart.weak.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/duplicated_bad_prefix.dart.weak.transformed.expect
index 0117388..2ed7afd 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/duplicated_bad_prefix.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/duplicated_bad_prefix.dart.weak.transformed.expect
@@ -31,11 +31,31 @@
   synthetic constructor •() → self::Dupe#1*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Dupe extends core::Object {
   synthetic constructor •() → self::Dupe*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C extends core::Object {
   field invalid-type b = null;
@@ -43,6 +63,16 @@
   synthetic constructor •() → self::C*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
 
@@ -54,6 +84,16 @@
   synthetic constructor •() → self2::C*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 
 library;
@@ -64,4 +104,14 @@
   synthetic constructor •() → self3::C*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/duplicated_declarations.dart.outline.expect b/pkg/front_end/testcases/general_nnbd_opt_out/duplicated_declarations.dart.outline.expect
index 7865d47..0c889c7 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/duplicated_declarations.dart.outline.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/duplicated_declarations.dart.outline.expect
@@ -322,10 +322,30 @@
 class C#4 extends core::Object { // from org-dartlang-testcase:///duplicated_declarations_part.dart
   constructor _() → self::C#4*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C#3 extends core::Object { // from org-dartlang-testcase:///duplicated_declarations_part.dart
   constructor _() → self::C#3*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C#2 extends core::Object { // from org-dartlang-testcase:///duplicated_declarations_part.dart
   field core::String* field;
@@ -337,10 +357,30 @@
     ;
   static method f() → dynamic
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C#1 extends core::Object {
   constructor _() → self::C#1*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C extends core::Object {
   field core::String* field;
@@ -352,12 +392,32 @@
     ;
   static method f() → dynamic
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Sub extends core::Object {
   constructor •() → self::Sub*
     ;
   method m() → dynamic
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Enum#4 extends core::Object /*isEnum*/  { // from org-dartlang-testcase:///duplicated_declarations_part.dart
   final field core::int* index;
@@ -369,6 +429,15 @@
     ;
   method toString() → core::String*
     return this.{=self::Enum#4::_name};
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Enum#3 extends core::Object /*isEnum*/  { // from org-dartlang-testcase:///duplicated_declarations_part.dart
   final field core::int* index;
@@ -382,6 +451,15 @@
     ;
   method toString() → core::String*
     return this.{=self::Enum#3::_name};
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Enum#2 extends core::Object /*isEnum*/  { // from org-dartlang-testcase:///duplicated_declarations_part.dart
   final field core::int* index;
@@ -395,6 +473,15 @@
     ;
   method toString() → core::String*
     return this.{=self::Enum#2::_name};
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Enum#1 extends core::Object /*isEnum*/  {
   final field core::int* index;
@@ -408,6 +495,15 @@
     ;
   method toString() → core::String*
     return this.{=self::Enum#1::_name};
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Enum extends core::Object /*isEnum*/  {
   final field core::int* index;
@@ -421,6 +517,15 @@
     ;
   method toString() → core::String*
     return this.{=self::Enum::_name};
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class AnotherEnum extends core::Object /*isEnum*/  {
   final field core::int* index;
@@ -434,6 +539,15 @@
     ;
   method toString() → core::String*
     return this.{=self::AnotherEnum::_name};
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field core::String* field;
 static method main() → dynamic
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/duplicated_declarations.dart.strong.expect b/pkg/front_end/testcases/general_nnbd_opt_out/duplicated_declarations.dart.strong.expect
index 9156586..014e7e09 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/duplicated_declarations.dart.strong.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/duplicated_declarations.dart.strong.expect
@@ -368,11 +368,31 @@
   constructor _() → self::C#4*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C#3 extends core::Object { // from org-dartlang-testcase:///duplicated_declarations_part.dart
   constructor _() → self::C#3*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C#2 extends core::Object { // from org-dartlang-testcase:///duplicated_declarations_part.dart
   field core::String* field = null;
@@ -389,11 +409,31 @@
     return invalid-expression "pkg/front_end/testcases/general_nnbd_opt_out/duplicated_declarations_part.dart:64:17: Error: Can't use 's' because it is declared more than once.
   static f() => s;
                 ^";
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C#1 extends core::Object {
   constructor _() → self::C#1*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C extends core::Object {
   field core::String* field = null;
@@ -410,6 +450,16 @@
     return invalid-expression "pkg/front_end/testcases/general_nnbd_opt_out/duplicated_declarations.dart:64:17: Error: Can't use 's' because it is declared more than once.
   static f() => s;
                 ^";
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Sub extends core::Object {
   constructor •() → self::Sub*
@@ -420,6 +470,16 @@
     ;
   method m() → dynamic
     return super.m();
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Enum#4 extends core::Object /*isEnum*/  { // from org-dartlang-testcase:///duplicated_declarations_part.dart
   final field core::int* index;
@@ -431,6 +491,15 @@
     ;
   method toString() → core::String*
     return this.{=self::Enum#4::_name};
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Enum#3 extends core::Object /*isEnum*/  { // from org-dartlang-testcase:///duplicated_declarations_part.dart
   final field core::int* index;
@@ -444,6 +513,15 @@
     ;
   method toString() → core::String*
     return this.{=self::Enum#3::_name};
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Enum#2 extends core::Object /*isEnum*/  { // from org-dartlang-testcase:///duplicated_declarations_part.dart
   final field core::int* index;
@@ -457,6 +535,15 @@
     ;
   method toString() → core::String*
     return this.{=self::Enum#2::_name};
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Enum#1 extends core::Object /*isEnum*/  {
   final field core::int* index;
@@ -470,6 +557,15 @@
     ;
   method toString() → core::String*
     return this.{=self::Enum#1::_name};
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Enum extends core::Object /*isEnum*/  {
   final field core::int* index;
@@ -483,6 +579,15 @@
     ;
   method toString() → core::String*
     return this.{=self::Enum::_name};
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class AnotherEnum extends core::Object /*isEnum*/  {
   final field core::int* index;
@@ -496,6 +601,15 @@
     ;
   method toString() → core::String*
     return this.{=self::AnotherEnum::_name};
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field core::String* field;
 static method main() → dynamic {
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/duplicated_declarations.dart.weak.expect b/pkg/front_end/testcases/general_nnbd_opt_out/duplicated_declarations.dart.weak.expect
index 9156586..014e7e09 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/duplicated_declarations.dart.weak.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/duplicated_declarations.dart.weak.expect
@@ -368,11 +368,31 @@
   constructor _() → self::C#4*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C#3 extends core::Object { // from org-dartlang-testcase:///duplicated_declarations_part.dart
   constructor _() → self::C#3*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C#2 extends core::Object { // from org-dartlang-testcase:///duplicated_declarations_part.dart
   field core::String* field = null;
@@ -389,11 +409,31 @@
     return invalid-expression "pkg/front_end/testcases/general_nnbd_opt_out/duplicated_declarations_part.dart:64:17: Error: Can't use 's' because it is declared more than once.
   static f() => s;
                 ^";
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C#1 extends core::Object {
   constructor _() → self::C#1*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C extends core::Object {
   field core::String* field = null;
@@ -410,6 +450,16 @@
     return invalid-expression "pkg/front_end/testcases/general_nnbd_opt_out/duplicated_declarations.dart:64:17: Error: Can't use 's' because it is declared more than once.
   static f() => s;
                 ^";
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Sub extends core::Object {
   constructor •() → self::Sub*
@@ -420,6 +470,16 @@
     ;
   method m() → dynamic
     return super.m();
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Enum#4 extends core::Object /*isEnum*/  { // from org-dartlang-testcase:///duplicated_declarations_part.dart
   final field core::int* index;
@@ -431,6 +491,15 @@
     ;
   method toString() → core::String*
     return this.{=self::Enum#4::_name};
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Enum#3 extends core::Object /*isEnum*/  { // from org-dartlang-testcase:///duplicated_declarations_part.dart
   final field core::int* index;
@@ -444,6 +513,15 @@
     ;
   method toString() → core::String*
     return this.{=self::Enum#3::_name};
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Enum#2 extends core::Object /*isEnum*/  { // from org-dartlang-testcase:///duplicated_declarations_part.dart
   final field core::int* index;
@@ -457,6 +535,15 @@
     ;
   method toString() → core::String*
     return this.{=self::Enum#2::_name};
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Enum#1 extends core::Object /*isEnum*/  {
   final field core::int* index;
@@ -470,6 +557,15 @@
     ;
   method toString() → core::String*
     return this.{=self::Enum#1::_name};
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Enum extends core::Object /*isEnum*/  {
   final field core::int* index;
@@ -483,6 +579,15 @@
     ;
   method toString() → core::String*
     return this.{=self::Enum::_name};
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class AnotherEnum extends core::Object /*isEnum*/  {
   final field core::int* index;
@@ -496,6 +601,15 @@
     ;
   method toString() → core::String*
     return this.{=self::AnotherEnum::_name};
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field core::String* field;
 static method main() → dynamic {
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/duplicated_field_initializer.dart.outline.expect b/pkg/front_end/testcases/general_nnbd_opt_out/duplicated_field_initializer.dart.outline.expect
index 32438e2..0d5f584 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/duplicated_field_initializer.dart.outline.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/duplicated_field_initializer.dart.outline.expect
@@ -16,6 +16,16 @@
   field core::int* a;
   constructor •(core::int* a) → self::A*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → void
   ;
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/duplicated_field_initializer.dart.strong.expect b/pkg/front_end/testcases/general_nnbd_opt_out/duplicated_field_initializer.dart.strong.expect
index e5e9b6f..e965598 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/duplicated_field_initializer.dart.strong.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/duplicated_field_initializer.dart.strong.expect
@@ -23,6 +23,16 @@
   A(this.a);
          ^", super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → void {
   new self::A::•(1);
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/duplicated_field_initializer.dart.strong.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/duplicated_field_initializer.dart.strong.transformed.expect
index e5e9b6f..e965598 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/duplicated_field_initializer.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/duplicated_field_initializer.dart.strong.transformed.expect
@@ -23,6 +23,16 @@
   A(this.a);
          ^", super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → void {
   new self::A::•(1);
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/duplicated_field_initializer.dart.weak.expect b/pkg/front_end/testcases/general_nnbd_opt_out/duplicated_field_initializer.dart.weak.expect
index e5e9b6f..e965598 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/duplicated_field_initializer.dart.weak.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/duplicated_field_initializer.dart.weak.expect
@@ -23,6 +23,16 @@
   A(this.a);
          ^", super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → void {
   new self::A::•(1);
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/duplicated_field_initializer.dart.weak.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/duplicated_field_initializer.dart.weak.transformed.expect
index e5e9b6f..e965598 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/duplicated_field_initializer.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/duplicated_field_initializer.dart.weak.transformed.expect
@@ -23,6 +23,16 @@
   A(this.a);
          ^", super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → void {
   new self::A::•(1);
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/duplicated_named_args_3.dart.outline.expect b/pkg/front_end/testcases/general_nnbd_opt_out/duplicated_named_args_3.dart.outline.expect
index e03d03a5..e7f9733 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/duplicated_named_args_3.dart.outline.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/duplicated_named_args_3.dart.outline.expect
@@ -7,6 +7,16 @@
     ;
   static method m({core::int* a}) → dynamic
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method test() → void
   ;
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/duplicated_named_args_3.dart.strong.expect b/pkg/front_end/testcases/general_nnbd_opt_out/duplicated_named_args_3.dart.strong.expect
index 4298c02..501bac4 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/duplicated_named_args_3.dart.strong.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/duplicated_named_args_3.dart.strong.expect
@@ -18,6 +18,16 @@
     : super core::Object::•()
     ;
   static method m({core::int* a = #C1}) → dynamic {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method test() → void {
   self::C::m(a: invalid-expression "pkg/front_end/testcases/general_nnbd_opt_out/duplicated_named_args_3.dart:15:19: Error: Duplicated named argument 'a'.
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/duplicated_named_args_3.dart.strong.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/duplicated_named_args_3.dart.strong.transformed.expect
index 4298c02..501bac4 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/duplicated_named_args_3.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/duplicated_named_args_3.dart.strong.transformed.expect
@@ -18,6 +18,16 @@
     : super core::Object::•()
     ;
   static method m({core::int* a = #C1}) → dynamic {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method test() → void {
   self::C::m(a: invalid-expression "pkg/front_end/testcases/general_nnbd_opt_out/duplicated_named_args_3.dart:15:19: Error: Duplicated named argument 'a'.
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/duplicated_named_args_3.dart.weak.expect b/pkg/front_end/testcases/general_nnbd_opt_out/duplicated_named_args_3.dart.weak.expect
index 4298c02..501bac4 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/duplicated_named_args_3.dart.weak.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/duplicated_named_args_3.dart.weak.expect
@@ -18,6 +18,16 @@
     : super core::Object::•()
     ;
   static method m({core::int* a = #C1}) → dynamic {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method test() → void {
   self::C::m(a: invalid-expression "pkg/front_end/testcases/general_nnbd_opt_out/duplicated_named_args_3.dart:15:19: Error: Duplicated named argument 'a'.
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/duplicated_named_args_3.dart.weak.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/duplicated_named_args_3.dart.weak.transformed.expect
index 4298c02..501bac4 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/duplicated_named_args_3.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/duplicated_named_args_3.dart.weak.transformed.expect
@@ -18,6 +18,16 @@
     : super core::Object::•()
     ;
   static method m({core::int* a = #C1}) → dynamic {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method test() → void {
   self::C::m(a: invalid-expression "pkg/front_end/testcases/general_nnbd_opt_out/duplicated_named_args_3.dart:15:19: Error: Duplicated named argument 'a'.
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/error_locations/error_location_01.dart.outline.expect b/pkg/front_end/testcases/general_nnbd_opt_out/error_locations/error_location_01.dart.outline.expect
index 1e369ae..72f723d 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/error_locations/error_location_01.dart.outline.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/error_locations/error_location_01.dart.outline.expect
@@ -15,6 +15,16 @@
   const constructor •(core::int* i) → self2::Foo*
     : assert(i.{core::num::>}(0)), super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method foo() → dynamic
   ;
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/error_locations/error_location_01.dart.strong.expect b/pkg/front_end/testcases/general_nnbd_opt_out/error_locations/error_location_01.dart.strong.expect
index 96b9063..3007bfa 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/error_locations/error_location_01.dart.strong.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/error_locations/error_location_01.dart.strong.expect
@@ -29,6 +29,16 @@
   const constructor •(core::int* i) → err::Foo*
     : assert(i.{core::num::>}(0)), super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method foo() → dynamic {
   new err::Foo::•(0);
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/error_locations/error_location_01.dart.strong.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/error_locations/error_location_01.dart.strong.transformed.expect
index 96b9063..3007bfa 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/error_locations/error_location_01.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/error_locations/error_location_01.dart.strong.transformed.expect
@@ -29,6 +29,16 @@
   const constructor •(core::int* i) → err::Foo*
     : assert(i.{core::num::>}(0)), super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method foo() → dynamic {
   new err::Foo::•(0);
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/error_locations/error_location_01.dart.weak.expect b/pkg/front_end/testcases/general_nnbd_opt_out/error_locations/error_location_01.dart.weak.expect
index 96b9063..3007bfa 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/error_locations/error_location_01.dart.weak.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/error_locations/error_location_01.dart.weak.expect
@@ -29,6 +29,16 @@
   const constructor •(core::int* i) → err::Foo*
     : assert(i.{core::num::>}(0)), super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method foo() → dynamic {
   new err::Foo::•(0);
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/error_locations/error_location_01.dart.weak.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/error_locations/error_location_01.dart.weak.transformed.expect
index 96b9063..3007bfa 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/error_locations/error_location_01.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/error_locations/error_location_01.dart.weak.transformed.expect
@@ -29,6 +29,16 @@
   const constructor •(core::int* i) → err::Foo*
     : assert(i.{core::num::>}(0)), super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method foo() → dynamic {
   new err::Foo::•(0);
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/error_locations/error_location_02.dart.outline.expect b/pkg/front_end/testcases/general_nnbd_opt_out/error_locations/error_location_02.dart.outline.expect
index 15ae178..5022580 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/error_locations/error_location_02.dart.outline.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/error_locations/error_location_02.dart.outline.expect
@@ -16,6 +16,16 @@
   const constructor •(core::int* i) → self2::Foo*
     : assert(i.{core::num::>}(0)), super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method foo() → dynamic
   ;
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/error_locations/error_location_02.dart.strong.expect b/pkg/front_end/testcases/general_nnbd_opt_out/error_locations/error_location_02.dart.strong.expect
index 20a4147..df8b630 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/error_locations/error_location_02.dart.strong.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/error_locations/error_location_02.dart.strong.expect
@@ -43,6 +43,16 @@
   const constructor •(core::int* i) → err::Foo*
     : assert(i.{core::num::>}(0)), super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method foo() → dynamic {
   new err::Foo::•(0);
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/error_locations/error_location_02.dart.strong.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/error_locations/error_location_02.dart.strong.transformed.expect
index 20a4147..df8b630 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/error_locations/error_location_02.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/error_locations/error_location_02.dart.strong.transformed.expect
@@ -43,6 +43,16 @@
   const constructor •(core::int* i) → err::Foo*
     : assert(i.{core::num::>}(0)), super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method foo() → dynamic {
   new err::Foo::•(0);
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/error_locations/error_location_02.dart.weak.expect b/pkg/front_end/testcases/general_nnbd_opt_out/error_locations/error_location_02.dart.weak.expect
index 20a4147..df8b630 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/error_locations/error_location_02.dart.weak.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/error_locations/error_location_02.dart.weak.expect
@@ -43,6 +43,16 @@
   const constructor •(core::int* i) → err::Foo*
     : assert(i.{core::num::>}(0)), super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method foo() → dynamic {
   new err::Foo::•(0);
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/error_locations/error_location_02.dart.weak.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/error_locations/error_location_02.dart.weak.transformed.expect
index 20a4147..df8b630 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/error_locations/error_location_02.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/error_locations/error_location_02.dart.weak.transformed.expect
@@ -43,6 +43,16 @@
   const constructor •(core::int* i) → err::Foo*
     : assert(i.{core::num::>}(0)), super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method foo() → dynamic {
   new err::Foo::•(0);
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/error_locations/error_location_03.dart.outline.expect b/pkg/front_end/testcases/general_nnbd_opt_out/error_locations/error_location_03.dart.outline.expect
index 8e00ee1..51c5f85 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/error_locations/error_location_03.dart.outline.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/error_locations/error_location_03.dart.outline.expect
@@ -16,6 +16,16 @@
   const constructor •(core::int* i) → self2::Foo*
     : assert(i.{core::num::>}(0)), super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method foo() → dynamic
   ;
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/error_locations/error_location_03.dart.strong.expect b/pkg/front_end/testcases/general_nnbd_opt_out/error_locations/error_location_03.dart.strong.expect
index 442f52e..f68056f 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/error_locations/error_location_03.dart.strong.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/error_locations/error_location_03.dart.strong.expect
@@ -44,6 +44,16 @@
   const constructor •(core::int* i) → err::Foo*
     : assert(i.{core::num::>}(0)), super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method foo() → dynamic {
   new err::Foo::•(0);
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/error_locations/error_location_03.dart.strong.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/error_locations/error_location_03.dart.strong.transformed.expect
index 442f52e..f68056f 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/error_locations/error_location_03.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/error_locations/error_location_03.dart.strong.transformed.expect
@@ -44,6 +44,16 @@
   const constructor •(core::int* i) → err::Foo*
     : assert(i.{core::num::>}(0)), super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method foo() → dynamic {
   new err::Foo::•(0);
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/error_locations/error_location_03.dart.weak.expect b/pkg/front_end/testcases/general_nnbd_opt_out/error_locations/error_location_03.dart.weak.expect
index 442f52e..f68056f 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/error_locations/error_location_03.dart.weak.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/error_locations/error_location_03.dart.weak.expect
@@ -44,6 +44,16 @@
   const constructor •(core::int* i) → err::Foo*
     : assert(i.{core::num::>}(0)), super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method foo() → dynamic {
   new err::Foo::•(0);
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/error_locations/error_location_03.dart.weak.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/error_locations/error_location_03.dart.weak.transformed.expect
index 442f52e..f68056f 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/error_locations/error_location_03.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/error_locations/error_location_03.dart.weak.transformed.expect
@@ -44,6 +44,16 @@
   const constructor •(core::int* i) → err::Foo*
     : assert(i.{core::num::>}(0)), super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method foo() → dynamic {
   new err::Foo::•(0);
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/error_locations/error_location_04.dart.outline.expect b/pkg/front_end/testcases/general_nnbd_opt_out/error_locations/error_location_04.dart.outline.expect
index 8406a72..be99d90 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/error_locations/error_location_04.dart.outline.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/error_locations/error_location_04.dart.outline.expect
@@ -15,6 +15,16 @@
   const constructor •(core::int* i) → self2::Foo*
     : assert(i.{core::num::>}(0)), super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method foo() → dynamic
   ;
@@ -31,6 +41,16 @@
   const constructor •() → self3::Bar*
     : self3::Bar::x = const self2::Foo::•(0), super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method bar() → dynamic
   ;
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/error_locations/error_location_04.dart.strong.expect b/pkg/front_end/testcases/general_nnbd_opt_out/error_locations/error_location_04.dart.strong.expect
index 298d70d..4d155f1 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/error_locations/error_location_04.dart.strong.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/error_locations/error_location_04.dart.strong.expect
@@ -29,6 +29,16 @@
   const constructor •(core::int* i) → err::Foo*
     : assert(i.{core::num::>}(0)), super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method foo() → dynamic {
   new err::Foo::•(0);
@@ -46,5 +56,15 @@
   const constructor •() → err2::Bar*
     : err2::Bar::x = invalid-expression "This assertion failed.", super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method bar() → dynamic {}
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/error_locations/error_location_04.dart.strong.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/error_locations/error_location_04.dart.strong.transformed.expect
index 298d70d..4d155f1 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/error_locations/error_location_04.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/error_locations/error_location_04.dart.strong.transformed.expect
@@ -29,6 +29,16 @@
   const constructor •(core::int* i) → err::Foo*
     : assert(i.{core::num::>}(0)), super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method foo() → dynamic {
   new err::Foo::•(0);
@@ -46,5 +56,15 @@
   const constructor •() → err2::Bar*
     : err2::Bar::x = invalid-expression "This assertion failed.", super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method bar() → dynamic {}
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/error_locations/error_location_04.dart.weak.expect b/pkg/front_end/testcases/general_nnbd_opt_out/error_locations/error_location_04.dart.weak.expect
index 298d70d..4d155f1 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/error_locations/error_location_04.dart.weak.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/error_locations/error_location_04.dart.weak.expect
@@ -29,6 +29,16 @@
   const constructor •(core::int* i) → err::Foo*
     : assert(i.{core::num::>}(0)), super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method foo() → dynamic {
   new err::Foo::•(0);
@@ -46,5 +56,15 @@
   const constructor •() → err2::Bar*
     : err2::Bar::x = invalid-expression "This assertion failed.", super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method bar() → dynamic {}
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/error_locations/error_location_04.dart.weak.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/error_locations/error_location_04.dart.weak.transformed.expect
index 298d70d..4d155f1 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/error_locations/error_location_04.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/error_locations/error_location_04.dart.weak.transformed.expect
@@ -29,6 +29,16 @@
   const constructor •(core::int* i) → err::Foo*
     : assert(i.{core::num::>}(0)), super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method foo() → dynamic {
   new err::Foo::•(0);
@@ -46,5 +56,15 @@
   const constructor •() → err2::Bar*
     : err2::Bar::x = invalid-expression "This assertion failed.", super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method bar() → dynamic {}
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/escape.dart.outline.expect b/pkg/front_end/testcases/general_nnbd_opt_out/escape.dart.outline.expect
index e198e42..63f26c8 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/escape.dart.outline.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/escape.dart.outline.expect
@@ -6,22 +6,61 @@
   field dynamic field;
   synthetic constructor •() → self::A*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends core::Object {
   field dynamic field;
   synthetic constructor •() → self::B*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C extends core::Object {
   synthetic constructor •() → self::C*
     ;
   operator ==(dynamic x) → core::bool*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class X extends core::Object implements self::A, self::B {
   field dynamic field;
   synthetic constructor •() → self::X*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method useAsA(self::A* object) → void
   ;
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/escape.dart.strong.expect b/pkg/front_end/testcases/general_nnbd_opt_out/escape.dart.strong.expect
index 9a86227..c1db545 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/escape.dart.strong.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/escape.dart.strong.expect
@@ -7,12 +7,32 @@
   synthetic constructor •() → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends core::Object {
   field dynamic field = null;
   synthetic constructor •() → self::B*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C extends core::Object {
   synthetic constructor •() → self::C*
@@ -20,12 +40,31 @@
     ;
   operator ==(dynamic x) → core::bool*
     return false;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class X extends core::Object implements self::A, self::B {
   field dynamic field = null;
   synthetic constructor •() → self::X*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method useAsA(self::A* object) → void {
   dynamic _ = object.{self::A::field};
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/escape.dart.strong.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/escape.dart.strong.transformed.expect
index 9a86227..c1db545 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/escape.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/escape.dart.strong.transformed.expect
@@ -7,12 +7,32 @@
   synthetic constructor •() → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends core::Object {
   field dynamic field = null;
   synthetic constructor •() → self::B*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C extends core::Object {
   synthetic constructor •() → self::C*
@@ -20,12 +40,31 @@
     ;
   operator ==(dynamic x) → core::bool*
     return false;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class X extends core::Object implements self::A, self::B {
   field dynamic field = null;
   synthetic constructor •() → self::X*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method useAsA(self::A* object) → void {
   dynamic _ = object.{self::A::field};
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/escape.dart.weak.expect b/pkg/front_end/testcases/general_nnbd_opt_out/escape.dart.weak.expect
index 9a86227..c1db545 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/escape.dart.weak.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/escape.dart.weak.expect
@@ -7,12 +7,32 @@
   synthetic constructor •() → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends core::Object {
   field dynamic field = null;
   synthetic constructor •() → self::B*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C extends core::Object {
   synthetic constructor •() → self::C*
@@ -20,12 +40,31 @@
     ;
   operator ==(dynamic x) → core::bool*
     return false;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class X extends core::Object implements self::A, self::B {
   field dynamic field = null;
   synthetic constructor •() → self::X*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method useAsA(self::A* object) → void {
   dynamic _ = object.{self::A::field};
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/escape.dart.weak.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/escape.dart.weak.transformed.expect
index 9a86227..c1db545 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/escape.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/escape.dart.weak.transformed.expect
@@ -7,12 +7,32 @@
   synthetic constructor •() → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends core::Object {
   field dynamic field = null;
   synthetic constructor •() → self::B*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C extends core::Object {
   synthetic constructor •() → self::C*
@@ -20,12 +40,31 @@
     ;
   operator ==(dynamic x) → core::bool*
     return false;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class X extends core::Object implements self::A, self::B {
   field dynamic field = null;
   synthetic constructor •() → self::X*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method useAsA(self::A* object) → void {
   dynamic _ = object.{self::A::field};
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/extend_with_type_variable.dart.outline.expect b/pkg/front_end/testcases/general_nnbd_opt_out/extend_with_type_variable.dart.outline.expect
index 239f404..9518380 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/extend_with_type_variable.dart.outline.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/extend_with_type_variable.dart.outline.expect
@@ -20,12 +20,42 @@
 class SuperClass extends core::Object {
   synthetic constructor •() → self::SuperClass*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class Mixin<T extends core::Object* = dynamic> extends core::Object /*isMixinDeclaration*/  {
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class _Class1&S&Mixin<T extends core::Object* = dynamic, S extends self::SuperClass* = self::SuperClass*> = core::Object with self::Mixin<self::_Class1&S&Mixin::T*> /*isAnonymousMixin*/  {
   synthetic constructor •() → self::_Class1&S&Mixin<self::_Class1&S&Mixin::T*, self::_Class1&S&Mixin::S*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Class1<T extends core::Object* = dynamic, S extends self::SuperClass* = self::SuperClass*> extends self::_Class1&S&Mixin<self::Class1::T*, self::Class1::S*> {
   synthetic constructor •() → self::Class1<self::Class1::T*, self::Class1::S*>*
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/extend_with_type_variable.dart.strong.expect b/pkg/front_end/testcases/general_nnbd_opt_out/extend_with_type_variable.dart.strong.expect
index 2f4e9b7..6f99cb6 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/extend_with_type_variable.dart.strong.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/extend_with_type_variable.dart.strong.expect
@@ -21,13 +21,43 @@
   synthetic constructor •() → self::SuperClass*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class Mixin<T extends core::Object* = dynamic> extends core::Object /*isMixinDeclaration*/  {
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class _Class1&S&Mixin<T extends core::Object* = dynamic, S extends self::SuperClass* = self::SuperClass*> = core::Object with self::Mixin<self::_Class1&S&Mixin::T*> /*isAnonymousMixin*/  {
   synthetic constructor •() → self::_Class1&S&Mixin<self::_Class1&S&Mixin::T*, self::_Class1&S&Mixin::S*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Class1<T extends core::Object* = dynamic, S extends self::SuperClass* = self::SuperClass*> extends self::_Class1&S&Mixin<self::Class1::T*, self::Class1::S*> {
   synthetic constructor •() → self::Class1<self::Class1::T*, self::Class1::S*>*
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/extend_with_type_variable.dart.strong.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/extend_with_type_variable.dart.strong.transformed.expect
index 5e78586..e2d0c4f 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/extend_with_type_variable.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/extend_with_type_variable.dart.strong.transformed.expect
@@ -21,13 +21,43 @@
   synthetic constructor •() → self::SuperClass*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class Mixin<T extends core::Object* = dynamic> extends core::Object /*isMixinDeclaration*/  {
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class _Class1&S&Mixin<T extends core::Object* = dynamic, S extends self::SuperClass* = self::SuperClass*> extends core::Object implements self::Mixin<self::_Class1&S&Mixin::T*> /*isAnonymousMixin,isEliminatedMixin*/  {
   synthetic constructor •() → self::_Class1&S&Mixin<self::_Class1&S&Mixin::T*, self::_Class1&S&Mixin::S*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Class1<T extends core::Object* = dynamic, S extends self::SuperClass* = self::SuperClass*> extends self::_Class1&S&Mixin<self::Class1::T*, self::Class1::S*> {
   synthetic constructor •() → self::Class1<self::Class1::T*, self::Class1::S*>*
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/extend_with_type_variable.dart.weak.expect b/pkg/front_end/testcases/general_nnbd_opt_out/extend_with_type_variable.dart.weak.expect
index 2f4e9b7..6f99cb6 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/extend_with_type_variable.dart.weak.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/extend_with_type_variable.dart.weak.expect
@@ -21,13 +21,43 @@
   synthetic constructor •() → self::SuperClass*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class Mixin<T extends core::Object* = dynamic> extends core::Object /*isMixinDeclaration*/  {
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class _Class1&S&Mixin<T extends core::Object* = dynamic, S extends self::SuperClass* = self::SuperClass*> = core::Object with self::Mixin<self::_Class1&S&Mixin::T*> /*isAnonymousMixin*/  {
   synthetic constructor •() → self::_Class1&S&Mixin<self::_Class1&S&Mixin::T*, self::_Class1&S&Mixin::S*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Class1<T extends core::Object* = dynamic, S extends self::SuperClass* = self::SuperClass*> extends self::_Class1&S&Mixin<self::Class1::T*, self::Class1::S*> {
   synthetic constructor •() → self::Class1<self::Class1::T*, self::Class1::S*>*
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/extend_with_type_variable.dart.weak.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/extend_with_type_variable.dart.weak.transformed.expect
index 5e78586..e2d0c4f 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/extend_with_type_variable.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/extend_with_type_variable.dart.weak.transformed.expect
@@ -21,13 +21,43 @@
   synthetic constructor •() → self::SuperClass*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class Mixin<T extends core::Object* = dynamic> extends core::Object /*isMixinDeclaration*/  {
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class _Class1&S&Mixin<T extends core::Object* = dynamic, S extends self::SuperClass* = self::SuperClass*> extends core::Object implements self::Mixin<self::_Class1&S&Mixin::T*> /*isAnonymousMixin,isEliminatedMixin*/  {
   synthetic constructor •() → self::_Class1&S&Mixin<self::_Class1&S&Mixin::T*, self::_Class1&S&Mixin::S*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Class1<T extends core::Object* = dynamic, S extends self::SuperClass* = self::SuperClass*> extends self::_Class1&S&Mixin<self::Class1::T*, self::Class1::S*> {
   synthetic constructor •() → self::Class1<self::Class1::T*, self::Class1::S*>*
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/ffi_sample.dart.outline.expect b/pkg/front_end/testcases/general_nnbd_opt_out/ffi_sample.dart.outline.expect
index 37826b4..aa2dbcb 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/ffi_sample.dart.outline.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/ffi_sample.dart.outline.expect
@@ -14,6 +14,17 @@
   field ffi::Pointer<self::Coordinate*>* next;
   static factory allocate(core::double* x, core::double* y, ffi::Pointer<self::Coordinate*>* next) → self::Coordinate*
     ;
+  abstract member-signature get _addressOf() → ffi::Pointer<ffi::Struct*>*;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/ffi_sample.dart.strong.expect b/pkg/front_end/testcases/general_nnbd_opt_out/ffi_sample.dart.strong.expect
index acbd85c..4205663 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/ffi_sample.dart.strong.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/ffi_sample.dart.strong.expect
@@ -16,6 +16,17 @@
   static factory allocate(core::double* x, core::double* y, ffi::Pointer<self::Coordinate*>* next) → self::Coordinate* {
     return let final self::Coordinate* #t1 = ffi::StructPointer|get#ref<self::Coordinate*>(all::allocate<self::Coordinate*>()) in let final void #t2 = #t1.{self::Coordinate::x} = x in let final void #t3 = #t1.{self::Coordinate::y} = y in let final void #t4 = #t1.{self::Coordinate::next} = next in #t1;
   }
+  abstract member-signature get _addressOf() → ffi::Pointer<ffi::Struct*>*;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
 
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/ffi_sample.dart.strong.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/ffi_sample.dart.strong.transformed.expect
index bcf2699..241578e 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/ffi_sample.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/ffi_sample.dart.strong.transformed.expect
@@ -18,6 +18,17 @@
   static factory allocate(core::double* x, core::double* y, ffi::Pointer<self::Coordinate*>* next) → self::Coordinate* {
     return let final self::Coordinate* #t1 = ffi::StructPointer|get#ref<self::Coordinate*>(all::allocate<self::Coordinate*>()) in let final void #t2 = #t1.{self::Coordinate::x} = x in let final void #t3 = #t1.{self::Coordinate::y} = y in let final void #t4 = #t1.{self::Coordinate::next} = next in #t1;
   }
+  abstract member-signature get _addressOf() → ffi::Pointer<ffi::Struct*>*;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
   get x() → core::double*
     return ffi::_loadDouble(this.{ffi::Struct::_addressOf}, (#C8).{core::List::[]}(ffi::_abi()));
   set x(core::double* #v) → void
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/ffi_sample.dart.weak.expect b/pkg/front_end/testcases/general_nnbd_opt_out/ffi_sample.dart.weak.expect
index acbd85c..4205663 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/ffi_sample.dart.weak.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/ffi_sample.dart.weak.expect
@@ -16,6 +16,17 @@
   static factory allocate(core::double* x, core::double* y, ffi::Pointer<self::Coordinate*>* next) → self::Coordinate* {
     return let final self::Coordinate* #t1 = ffi::StructPointer|get#ref<self::Coordinate*>(all::allocate<self::Coordinate*>()) in let final void #t2 = #t1.{self::Coordinate::x} = x in let final void #t3 = #t1.{self::Coordinate::y} = y in let final void #t4 = #t1.{self::Coordinate::next} = next in #t1;
   }
+  abstract member-signature get _addressOf() → ffi::Pointer<ffi::Struct*>*;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
 
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/ffi_sample.dart.weak.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/ffi_sample.dart.weak.transformed.expect
index bcf2699..241578e 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/ffi_sample.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/ffi_sample.dart.weak.transformed.expect
@@ -18,6 +18,17 @@
   static factory allocate(core::double* x, core::double* y, ffi::Pointer<self::Coordinate*>* next) → self::Coordinate* {
     return let final self::Coordinate* #t1 = ffi::StructPointer|get#ref<self::Coordinate*>(all::allocate<self::Coordinate*>()) in let final void #t2 = #t1.{self::Coordinate::x} = x in let final void #t3 = #t1.{self::Coordinate::y} = y in let final void #t4 = #t1.{self::Coordinate::next} = next in #t1;
   }
+  abstract member-signature get _addressOf() → ffi::Pointer<ffi::Struct*>*;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
   get x() → core::double*
     return ffi::_loadDouble(this.{ffi::Struct::_addressOf}, (#C8).{core::List::[]}(ffi::_abi()));
   set x(core::double* #v) → void
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/for_in_without_declaration.dart.outline.expect b/pkg/front_end/testcases/general_nnbd_opt_out/for_in_without_declaration.dart.outline.expect
index 7778ba0..da38f9a 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/for_in_without_declaration.dart.outline.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/for_in_without_declaration.dart.outline.expect
@@ -7,6 +7,16 @@
   field dynamic untypedSuperInstanceField;
   synthetic constructor •() → self::Super*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C extends self::Super {
   field core::int* instanceField;
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/for_in_without_declaration.dart.strong.expect b/pkg/front_end/testcases/general_nnbd_opt_out/for_in_without_declaration.dart.strong.expect
index 4ae3cff..c0dcfbe 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/for_in_without_declaration.dart.strong.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/for_in_without_declaration.dart.strong.expect
@@ -73,6 +73,16 @@
   synthetic constructor •() → self::Super*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C extends self::Super {
   field core::int* instanceField = null;
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/for_in_without_declaration.dart.strong.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/for_in_without_declaration.dart.strong.transformed.expect
index 99eaa37..8dc52fb 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/for_in_without_declaration.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/for_in_without_declaration.dart.strong.transformed.expect
@@ -73,6 +73,16 @@
   synthetic constructor •() → self::Super*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C extends self::Super {
   field core::int* instanceField = null;
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/for_in_without_declaration.dart.weak.expect b/pkg/front_end/testcases/general_nnbd_opt_out/for_in_without_declaration.dart.weak.expect
index 4ae3cff..c0dcfbe 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/for_in_without_declaration.dart.weak.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/for_in_without_declaration.dart.weak.expect
@@ -73,6 +73,16 @@
   synthetic constructor •() → self::Super*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C extends self::Super {
   field core::int* instanceField = null;
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/for_in_without_declaration.dart.weak.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/for_in_without_declaration.dart.weak.transformed.expect
index 99eaa37..8dc52fb 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/for_in_without_declaration.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/for_in_without_declaration.dart.weak.transformed.expect
@@ -73,6 +73,16 @@
   synthetic constructor •() → self::Super*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C extends self::Super {
   field core::int* instanceField = null;
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/forwarding_stub_for_operator.dart.outline.expect b/pkg/front_end/testcases/general_nnbd_opt_out/forwarding_stub_for_operator.dart.outline.expect
index ccb8208..60ea4c6 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/forwarding_stub_for_operator.dart.outline.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/forwarding_stub_for_operator.dart.outline.expect
@@ -7,16 +7,46 @@
     ;
   operator +(covariant core::int* a) → dynamic
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends core::Object {
   synthetic constructor •() → self::B*
     ;
   operator +(dynamic b) → dynamic
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class C extends core::Object implements self::A, self::B {
   synthetic constructor •() → self::C*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
   abstract forwarding-stub operator +(covariant dynamic b) → dynamic;
 }
 class D extends core::Object {
@@ -24,6 +54,16 @@
     ;
   operator +(dynamic d) → dynamic
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class E extends self::D {
   synthetic constructor •() → self::E*
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/forwarding_stub_for_operator.dart.strong.expect b/pkg/front_end/testcases/general_nnbd_opt_out/forwarding_stub_for_operator.dart.strong.expect
index 4f87d1b..f343031 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/forwarding_stub_for_operator.dart.strong.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/forwarding_stub_for_operator.dart.strong.expect
@@ -8,6 +8,16 @@
     ;
   operator +(covariant core::int* a) → dynamic
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends core::Object {
   synthetic constructor •() → self::B*
@@ -15,11 +25,31 @@
     ;
   operator +(dynamic b) → dynamic
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class C extends core::Object implements self::A, self::B {
   synthetic constructor •() → self::C*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
   abstract forwarding-stub operator +(covariant dynamic b) → dynamic;
 }
 class D extends core::Object {
@@ -28,6 +58,16 @@
     ;
   operator +(dynamic d) → dynamic
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class E extends self::D {
   synthetic constructor •() → self::E*
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/forwarding_stub_for_operator.dart.strong.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/forwarding_stub_for_operator.dart.strong.transformed.expect
index 4f87d1b..f343031 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/forwarding_stub_for_operator.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/forwarding_stub_for_operator.dart.strong.transformed.expect
@@ -8,6 +8,16 @@
     ;
   operator +(covariant core::int* a) → dynamic
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends core::Object {
   synthetic constructor •() → self::B*
@@ -15,11 +25,31 @@
     ;
   operator +(dynamic b) → dynamic
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class C extends core::Object implements self::A, self::B {
   synthetic constructor •() → self::C*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
   abstract forwarding-stub operator +(covariant dynamic b) → dynamic;
 }
 class D extends core::Object {
@@ -28,6 +58,16 @@
     ;
   operator +(dynamic d) → dynamic
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class E extends self::D {
   synthetic constructor •() → self::E*
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/forwarding_stub_for_operator.dart.weak.expect b/pkg/front_end/testcases/general_nnbd_opt_out/forwarding_stub_for_operator.dart.weak.expect
index 4f87d1b..f343031 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/forwarding_stub_for_operator.dart.weak.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/forwarding_stub_for_operator.dart.weak.expect
@@ -8,6 +8,16 @@
     ;
   operator +(covariant core::int* a) → dynamic
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends core::Object {
   synthetic constructor •() → self::B*
@@ -15,11 +25,31 @@
     ;
   operator +(dynamic b) → dynamic
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class C extends core::Object implements self::A, self::B {
   synthetic constructor •() → self::C*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
   abstract forwarding-stub operator +(covariant dynamic b) → dynamic;
 }
 class D extends core::Object {
@@ -28,6 +58,16 @@
     ;
   operator +(dynamic d) → dynamic
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class E extends self::D {
   synthetic constructor •() → self::E*
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/forwarding_stub_for_operator.dart.weak.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/forwarding_stub_for_operator.dart.weak.transformed.expect
index 4f87d1b..f343031 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/forwarding_stub_for_operator.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/forwarding_stub_for_operator.dart.weak.transformed.expect
@@ -8,6 +8,16 @@
     ;
   operator +(covariant core::int* a) → dynamic
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends core::Object {
   synthetic constructor •() → self::B*
@@ -15,11 +25,31 @@
     ;
   operator +(dynamic b) → dynamic
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class C extends core::Object implements self::A, self::B {
   synthetic constructor •() → self::C*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
   abstract forwarding-stub operator +(covariant dynamic b) → dynamic;
 }
 class D extends core::Object {
@@ -28,6 +58,16 @@
     ;
   operator +(dynamic d) → dynamic
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class E extends self::D {
   synthetic constructor •() → self::E*
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/future_or_test.dart.outline.expect b/pkg/front_end/testcases/general_nnbd_opt_out/future_or_test.dart.outline.expect
index 3f972a0..9a4dfad 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/future_or_test.dart.outline.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/future_or_test.dart.outline.expect
@@ -10,6 +10,16 @@
     ;
   method foo() → dynamic
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends core::Object {
   field self::A* a;
@@ -17,6 +27,16 @@
     ;
   method bar() → asy::Future<dynamic>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C extends core::Object {
   field self::B* b;
@@ -24,6 +44,16 @@
     ;
   method baz() → asy::Future<core::int*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/future_or_test.dart.strong.expect b/pkg/front_end/testcases/general_nnbd_opt_out/future_or_test.dart.strong.expect
index cb66dac..c0976ca 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/future_or_test.dart.strong.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/future_or_test.dart.strong.expect
@@ -11,6 +11,16 @@
     ;
   method foo() → dynamic
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends core::Object {
   field self::A* a = null;
@@ -19,6 +29,16 @@
     ;
   method bar() → asy::Future<dynamic>* async 
     return this.{self::B::a}.{self::A::foo}();
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C extends core::Object {
   field self::B* b = new self::B::•();
@@ -27,5 +47,15 @@
     ;
   method baz() → asy::Future<core::int*>* async 
     return this.{self::C::b}.{self::B::bar}() as{TypeError} asy::FutureOr<core::int*>*;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/future_or_test.dart.strong.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/future_or_test.dart.strong.transformed.expect
index 206c905..efdff61 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/future_or_test.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/future_or_test.dart.strong.transformed.expect
@@ -11,6 +11,16 @@
     ;
   method foo() → dynamic
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends core::Object {
   field self::A* a = null;
@@ -35,8 +45,8 @@
         asy::_completeOnAsyncReturn(:async_completer, :return_value);
         return;
       }
-      on dynamic catch(dynamic :exception, core::StackTrace* :stack_trace) {
-        :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+      on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
+        :async_completer.{asy::Completer::completeError}(exception, stack_trace);
       }
     :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
     :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
@@ -44,6 +54,16 @@
     :async_completer.{asy::_AsyncAwaitCompleter::start}(:async_op);
     return :async_completer.{asy::Completer::future};
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C extends core::Object {
   field self::B* b = new self::B::•();
@@ -68,8 +88,8 @@
         asy::_completeOnAsyncReturn(:async_completer, :return_value);
         return;
       }
-      on dynamic catch(dynamic :exception, core::StackTrace* :stack_trace) {
-        :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+      on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
+        :async_completer.{asy::Completer::completeError}(exception, stack_trace);
       }
     :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
     :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
@@ -77,5 +97,15 @@
     :async_completer.{asy::_AsyncAwaitCompleter::start}(:async_op);
     return :async_completer.{asy::Completer::future};
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/future_or_test.dart.weak.expect b/pkg/front_end/testcases/general_nnbd_opt_out/future_or_test.dart.weak.expect
index cb66dac..c0976ca 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/future_or_test.dart.weak.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/future_or_test.dart.weak.expect
@@ -11,6 +11,16 @@
     ;
   method foo() → dynamic
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends core::Object {
   field self::A* a = null;
@@ -19,6 +29,16 @@
     ;
   method bar() → asy::Future<dynamic>* async 
     return this.{self::B::a}.{self::A::foo}();
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C extends core::Object {
   field self::B* b = new self::B::•();
@@ -27,5 +47,15 @@
     ;
   method baz() → asy::Future<core::int*>* async 
     return this.{self::C::b}.{self::B::bar}() as{TypeError} asy::FutureOr<core::int*>*;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/future_or_test.dart.weak.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/future_or_test.dart.weak.transformed.expect
index 206c905..efdff61 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/future_or_test.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/future_or_test.dart.weak.transformed.expect
@@ -11,6 +11,16 @@
     ;
   method foo() → dynamic
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends core::Object {
   field self::A* a = null;
@@ -35,8 +45,8 @@
         asy::_completeOnAsyncReturn(:async_completer, :return_value);
         return;
       }
-      on dynamic catch(dynamic :exception, core::StackTrace* :stack_trace) {
-        :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+      on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
+        :async_completer.{asy::Completer::completeError}(exception, stack_trace);
       }
     :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
     :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
@@ -44,6 +54,16 @@
     :async_completer.{asy::_AsyncAwaitCompleter::start}(:async_op);
     return :async_completer.{asy::Completer::future};
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C extends core::Object {
   field self::B* b = new self::B::•();
@@ -68,8 +88,8 @@
         asy::_completeOnAsyncReturn(:async_completer, :return_value);
         return;
       }
-      on dynamic catch(dynamic :exception, core::StackTrace* :stack_trace) {
-        :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+      on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
+        :async_completer.{asy::Completer::completeError}(exception, stack_trace);
       }
     :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
     :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
@@ -77,5 +97,15 @@
     :async_completer.{asy::_AsyncAwaitCompleter::start}(:async_op);
     return :async_completer.{asy::Completer::future};
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/if_null_in_cascade.dart.outline.expect b/pkg/front_end/testcases/general_nnbd_opt_out/if_null_in_cascade.dart.outline.expect
index 4d61e58..807c210 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/if_null_in_cascade.dart.outline.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/if_null_in_cascade.dart.outline.expect
@@ -7,6 +7,16 @@
     ;
   method method() → dynamic
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/if_null_in_cascade.dart.strong.expect b/pkg/front_end/testcases/general_nnbd_opt_out/if_null_in_cascade.dart.strong.expect
index 09f340a..e93b141 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/if_null_in_cascade.dart.strong.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/if_null_in_cascade.dart.strong.expect
@@ -7,9 +7,19 @@
     : super core::Object::•()
     ;
   method method() → dynamic {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   self::Class* a;
   self::Class* b = new self::Class::•();
-  let final self::Class* #t1 = let final self::Class* #t2 = a in #t2.{core::Object::==}(null) ?{self::Class*} b : #t2 in let final void #t3 = #t1.{self::Class::method}() in #t1;
+  let final self::Class* #t1 = let final self::Class* #t2 = a in #t2.{self::Class::==}(null) ?{self::Class*} b : #t2 in let final void #t3 = #t1.{self::Class::method}() in #t1;
 }
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/if_null_in_cascade.dart.strong.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/if_null_in_cascade.dart.strong.transformed.expect
index 09f340a..e93b141 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/if_null_in_cascade.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/if_null_in_cascade.dart.strong.transformed.expect
@@ -7,9 +7,19 @@
     : super core::Object::•()
     ;
   method method() → dynamic {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   self::Class* a;
   self::Class* b = new self::Class::•();
-  let final self::Class* #t1 = let final self::Class* #t2 = a in #t2.{core::Object::==}(null) ?{self::Class*} b : #t2 in let final void #t3 = #t1.{self::Class::method}() in #t1;
+  let final self::Class* #t1 = let final self::Class* #t2 = a in #t2.{self::Class::==}(null) ?{self::Class*} b : #t2 in let final void #t3 = #t1.{self::Class::method}() in #t1;
 }
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/if_null_in_cascade.dart.weak.expect b/pkg/front_end/testcases/general_nnbd_opt_out/if_null_in_cascade.dart.weak.expect
index 09f340a..e93b141 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/if_null_in_cascade.dart.weak.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/if_null_in_cascade.dart.weak.expect
@@ -7,9 +7,19 @@
     : super core::Object::•()
     ;
   method method() → dynamic {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   self::Class* a;
   self::Class* b = new self::Class::•();
-  let final self::Class* #t1 = let final self::Class* #t2 = a in #t2.{core::Object::==}(null) ?{self::Class*} b : #t2 in let final void #t3 = #t1.{self::Class::method}() in #t1;
+  let final self::Class* #t1 = let final self::Class* #t2 = a in #t2.{self::Class::==}(null) ?{self::Class*} b : #t2 in let final void #t3 = #t1.{self::Class::method}() in #t1;
 }
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/if_null_in_cascade.dart.weak.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/if_null_in_cascade.dart.weak.transformed.expect
index 09f340a..e93b141 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/if_null_in_cascade.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/if_null_in_cascade.dart.weak.transformed.expect
@@ -7,9 +7,19 @@
     : super core::Object::•()
     ;
   method method() → dynamic {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   self::Class* a;
   self::Class* b = new self::Class::•();
-  let final self::Class* #t1 = let final self::Class* #t2 = a in #t2.{core::Object::==}(null) ?{self::Class*} b : #t2 in let final void #t3 = #t1.{self::Class::method}() in #t1;
+  let final self::Class* #t1 = let final self::Class* #t2 = a in #t2.{self::Class::==}(null) ?{self::Class*} b : #t2 in let final void #t3 = #t1.{self::Class::method}() in #t1;
 }
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/if_null_in_set_literal.dart.strong.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/if_null_in_set_literal.dart.strong.transformed.expect
index 9468fbe..5cba724 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/if_null_in_set_literal.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/if_null_in_set_literal.dart.strong.transformed.expect
@@ -6,5 +6,5 @@
 static method main() → dynamic {
   core::Object* a;
   core::Object* b;
-  return let final core::Set<core::Object*>* #t1 = col::LinkedHashSet::•<core::Object*>() in let final core::bool* #t2 = #t1.{core::Set::add}(let final core::Object* #t3 = a in #t3.{core::Object::==}(null) ?{core::Object*} b : #t3) in #t1;
+  return let final core::Set<core::Object*>* #t1 = col::LinkedHashSet::•<core::Object*>() in let final core::bool #t2 = #t1.{core::Set::add}(let final core::Object* #t3 = a in #t3.{core::Object::==}(null) ?{core::Object*} b : #t3) in #t1;
 }
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/if_null_in_set_literal.dart.weak.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/if_null_in_set_literal.dart.weak.transformed.expect
index 9468fbe..5cba724 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/if_null_in_set_literal.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/if_null_in_set_literal.dart.weak.transformed.expect
@@ -6,5 +6,5 @@
 static method main() → dynamic {
   core::Object* a;
   core::Object* b;
-  return let final core::Set<core::Object*>* #t1 = col::LinkedHashSet::•<core::Object*>() in let final core::bool* #t2 = #t1.{core::Set::add}(let final core::Object* #t3 = a in #t3.{core::Object::==}(null) ?{core::Object*} b : #t3) in #t1;
+  return let final core::Set<core::Object*>* #t1 = col::LinkedHashSet::•<core::Object*>() in let final core::bool #t2 = #t1.{core::Set::add}(let final core::Object* #t3 = a in #t3.{core::Object::==}(null) ?{core::Object*} b : #t3) in #t1;
 }
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/ignore_function.dart.outline.expect b/pkg/front_end/testcases/general_nnbd_opt_out/ignore_function.dart.outline.expect
index 6172453..4759fc7 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/ignore_function.dart.outline.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/ignore_function.dart.outline.expect
@@ -9,18 +9,45 @@
     ;
   operator ==(dynamic other) → core::bool*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends core::Object implements self::Function {
   synthetic constructor •() → self::B*
     ;
   operator ==(dynamic other) → core::bool*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Function extends core::Object {
   synthetic constructor •() → self::Function*
     ;
   operator ==(core::Object* other) → core::bool*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/ignore_function.dart.strong.expect b/pkg/front_end/testcases/general_nnbd_opt_out/ignore_function.dart.strong.expect
index b28a177..a4febea 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/ignore_function.dart.strong.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/ignore_function.dart.strong.expect
@@ -10,6 +10,15 @@
     ;
   operator ==(dynamic other) → core::bool*
     return false;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends core::Object implements self::Function {
   synthetic constructor •() → self::B*
@@ -17,6 +26,15 @@
     ;
   operator ==(dynamic other) → core::bool*
     return false;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Function extends core::Object {
   synthetic constructor •() → self::Function*
@@ -24,5 +42,14 @@
     ;
   operator ==(core::Object* other) → core::bool*
     return false;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/ignore_function.dart.strong.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/ignore_function.dart.strong.transformed.expect
index b28a177..a4febea 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/ignore_function.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/ignore_function.dart.strong.transformed.expect
@@ -10,6 +10,15 @@
     ;
   operator ==(dynamic other) → core::bool*
     return false;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends core::Object implements self::Function {
   synthetic constructor •() → self::B*
@@ -17,6 +26,15 @@
     ;
   operator ==(dynamic other) → core::bool*
     return false;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Function extends core::Object {
   synthetic constructor •() → self::Function*
@@ -24,5 +42,14 @@
     ;
   operator ==(core::Object* other) → core::bool*
     return false;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/ignore_function.dart.weak.expect b/pkg/front_end/testcases/general_nnbd_opt_out/ignore_function.dart.weak.expect
index b28a177..a4febea 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/ignore_function.dart.weak.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/ignore_function.dart.weak.expect
@@ -10,6 +10,15 @@
     ;
   operator ==(dynamic other) → core::bool*
     return false;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends core::Object implements self::Function {
   synthetic constructor •() → self::B*
@@ -17,6 +26,15 @@
     ;
   operator ==(dynamic other) → core::bool*
     return false;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Function extends core::Object {
   synthetic constructor •() → self::Function*
@@ -24,5 +42,14 @@
     ;
   operator ==(core::Object* other) → core::bool*
     return false;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/ignore_function.dart.weak.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/ignore_function.dart.weak.transformed.expect
index b28a177..a4febea 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/ignore_function.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/ignore_function.dart.weak.transformed.expect
@@ -10,6 +10,15 @@
     ;
   operator ==(dynamic other) → core::bool*
     return false;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends core::Object implements self::Function {
   synthetic constructor •() → self::B*
@@ -17,6 +26,15 @@
     ;
   operator ==(dynamic other) → core::bool*
     return false;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Function extends core::Object {
   synthetic constructor •() → self::Function*
@@ -24,5 +42,14 @@
     ;
   operator ==(core::Object* other) → core::bool*
     return false;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/implicit_const_with_static_fields.dart.outline.expect b/pkg/front_end/testcases/general_nnbd_opt_out/implicit_const_with_static_fields.dart.outline.expect
index 503d2ef..c376031 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/implicit_const_with_static_fields.dart.outline.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/implicit_const_with_static_fields.dart.outline.expect
@@ -7,6 +7,16 @@
   const constructor •(dynamic x) → self::C*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static const field core::int* constTopLevelField = 42;
 static method main() → dynamic
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/implicit_const_with_static_fields.dart.strong.expect b/pkg/front_end/testcases/general_nnbd_opt_out/implicit_const_with_static_fields.dart.strong.expect
index 0c80488..2164cb2 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/implicit_const_with_static_fields.dart.strong.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/implicit_const_with_static_fields.dart.strong.expect
@@ -7,6 +7,16 @@
   const constructor •(dynamic x) → self::C*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static const field core::int* constTopLevelField = #C2;
 static method main() → dynamic {
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/implicit_const_with_static_fields.dart.strong.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/implicit_const_with_static_fields.dart.strong.transformed.expect
index 0c80488..2164cb2 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/implicit_const_with_static_fields.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/implicit_const_with_static_fields.dart.strong.transformed.expect
@@ -7,6 +7,16 @@
   const constructor •(dynamic x) → self::C*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static const field core::int* constTopLevelField = #C2;
 static method main() → dynamic {
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/implicit_const_with_static_fields.dart.weak.expect b/pkg/front_end/testcases/general_nnbd_opt_out/implicit_const_with_static_fields.dart.weak.expect
index 0c80488..2164cb2 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/implicit_const_with_static_fields.dart.weak.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/implicit_const_with_static_fields.dart.weak.expect
@@ -7,6 +7,16 @@
   const constructor •(dynamic x) → self::C*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static const field core::int* constTopLevelField = #C2;
 static method main() → dynamic {
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/implicit_const_with_static_fields.dart.weak.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/implicit_const_with_static_fields.dart.weak.transformed.expect
index 0c80488..2164cb2 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/implicit_const_with_static_fields.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/implicit_const_with_static_fields.dart.weak.transformed.expect
@@ -7,6 +7,16 @@
   const constructor •(dynamic x) → self::C*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static const field core::int* constTopLevelField = #C2;
 static method main() → dynamic {
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/implicit_new.dart.outline.expect b/pkg/front_end/testcases/general_nnbd_opt_out/implicit_new.dart.outline.expect
index 8cc8392..0ed09c5 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/implicit_new.dart.outline.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/implicit_new.dart.outline.expect
@@ -9,12 +9,32 @@
     ;
   operator +(dynamic other) → dynamic
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Bar extends core::Object {
   constructor named() → self::Bar*
     ;
   operator +(dynamic other) → dynamic
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class IndexTester extends core::Object {
   synthetic constructor •() → self::IndexTester*
@@ -23,6 +43,16 @@
     ;
   operator []=(dynamic _a, dynamic _b) → void
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method testNSM() → dynamic
   ;
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/implicit_new.dart.strong.expect b/pkg/front_end/testcases/general_nnbd_opt_out/implicit_new.dart.strong.expect
index 5d0cbf8..84274ed 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/implicit_new.dart.strong.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/implicit_new.dart.strong.expect
@@ -21,6 +21,16 @@
     ;
   operator +(dynamic other) → dynamic
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Bar extends core::Object {
   constructor named() → self::Bar*
@@ -28,6 +38,16 @@
     ;
   operator +(dynamic other) → dynamic
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class IndexTester extends core::Object {
   synthetic constructor •() → self::IndexTester*
@@ -36,6 +56,16 @@
   operator [](dynamic _) → dynamic
     return null;
   operator []=(dynamic _a, dynamic _b) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method testNSM() → dynamic {
   dynamic y = invalid-expression "pkg/front_end/testcases/general_nnbd_opt_out/implicit_new.dart:20:18: Error: Method not found: 'Bar'.
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/implicit_new.dart.strong.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/implicit_new.dart.strong.transformed.expect
index 5d0cbf8..84274ed 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/implicit_new.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/implicit_new.dart.strong.transformed.expect
@@ -21,6 +21,16 @@
     ;
   operator +(dynamic other) → dynamic
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Bar extends core::Object {
   constructor named() → self::Bar*
@@ -28,6 +38,16 @@
     ;
   operator +(dynamic other) → dynamic
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class IndexTester extends core::Object {
   synthetic constructor •() → self::IndexTester*
@@ -36,6 +56,16 @@
   operator [](dynamic _) → dynamic
     return null;
   operator []=(dynamic _a, dynamic _b) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method testNSM() → dynamic {
   dynamic y = invalid-expression "pkg/front_end/testcases/general_nnbd_opt_out/implicit_new.dart:20:18: Error: Method not found: 'Bar'.
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/implicit_new.dart.weak.expect b/pkg/front_end/testcases/general_nnbd_opt_out/implicit_new.dart.weak.expect
index 5d0cbf8..84274ed 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/implicit_new.dart.weak.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/implicit_new.dart.weak.expect
@@ -21,6 +21,16 @@
     ;
   operator +(dynamic other) → dynamic
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Bar extends core::Object {
   constructor named() → self::Bar*
@@ -28,6 +38,16 @@
     ;
   operator +(dynamic other) → dynamic
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class IndexTester extends core::Object {
   synthetic constructor •() → self::IndexTester*
@@ -36,6 +56,16 @@
   operator [](dynamic _) → dynamic
     return null;
   operator []=(dynamic _a, dynamic _b) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method testNSM() → dynamic {
   dynamic y = invalid-expression "pkg/front_end/testcases/general_nnbd_opt_out/implicit_new.dart:20:18: Error: Method not found: 'Bar'.
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/implicit_new.dart.weak.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/implicit_new.dart.weak.transformed.expect
index 5d0cbf8..84274ed 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/implicit_new.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/implicit_new.dart.weak.transformed.expect
@@ -21,6 +21,16 @@
     ;
   operator +(dynamic other) → dynamic
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Bar extends core::Object {
   constructor named() → self::Bar*
@@ -28,6 +38,16 @@
     ;
   operator +(dynamic other) → dynamic
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class IndexTester extends core::Object {
   synthetic constructor •() → self::IndexTester*
@@ -36,6 +56,16 @@
   operator [](dynamic _) → dynamic
     return null;
   operator []=(dynamic _a, dynamic _b) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method testNSM() → dynamic {
   dynamic y = invalid-expression "pkg/front_end/testcases/general_nnbd_opt_out/implicit_new.dart:20:18: Error: Method not found: 'Bar'.
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/implicit_scope_test.dart.outline.expect b/pkg/front_end/testcases/general_nnbd_opt_out/implicit_scope_test.dart.outline.expect
index 8a823ce..4b756eb 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/implicit_scope_test.dart.outline.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/implicit_scope_test.dart.outline.expect
@@ -11,6 +11,16 @@
     ;
   static method testMain() → dynamic
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/implicit_scope_test.dart.strong.expect b/pkg/front_end/testcases/general_nnbd_opt_out/implicit_scope_test.dart.strong.expect
index 86e1607..a850ce5 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/implicit_scope_test.dart.strong.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/implicit_scope_test.dart.strong.expect
@@ -43,6 +43,16 @@
     exp::Expect::equals("foo", a);
     exp::Expect::equals(null, b);
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   self::ImplicitScopeTest::testMain();
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/implicit_scope_test.dart.strong.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/implicit_scope_test.dart.strong.transformed.expect
index 86e1607..a850ce5 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/implicit_scope_test.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/implicit_scope_test.dart.strong.transformed.expect
@@ -43,6 +43,16 @@
     exp::Expect::equals("foo", a);
     exp::Expect::equals(null, b);
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   self::ImplicitScopeTest::testMain();
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/implicit_scope_test.dart.weak.expect b/pkg/front_end/testcases/general_nnbd_opt_out/implicit_scope_test.dart.weak.expect
index 86e1607..a850ce5 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/implicit_scope_test.dart.weak.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/implicit_scope_test.dart.weak.expect
@@ -43,6 +43,16 @@
     exp::Expect::equals("foo", a);
     exp::Expect::equals(null, b);
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   self::ImplicitScopeTest::testMain();
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/implicit_scope_test.dart.weak.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/implicit_scope_test.dart.weak.transformed.expect
index 86e1607..a850ce5 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/implicit_scope_test.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/implicit_scope_test.dart.weak.transformed.expect
@@ -43,6 +43,16 @@
     exp::Expect::equals("foo", a);
     exp::Expect::equals(null, b);
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   self::ImplicitScopeTest::testMain();
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/implicit_this.dart.outline.expect b/pkg/front_end/testcases/general_nnbd_opt_out/implicit_this.dart.outline.expect
index 76b8764..a2e0632 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/implicit_this.dart.outline.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/implicit_this.dart.outline.expect
@@ -9,6 +9,16 @@
     ;
   method testC() → dynamic
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D extends self::C {
   synthetic constructor •() → self::D*
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/implicit_this.dart.strong.expect b/pkg/front_end/testcases/general_nnbd_opt_out/implicit_this.dart.strong.expect
index 25539c8..c7a22c5 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/implicit_this.dart.strong.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/implicit_this.dart.strong.expect
@@ -12,6 +12,16 @@
   method testC() → dynamic {
     this.{self::C::m}();
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D extends self::C {
   synthetic constructor •() → self::D*
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/implicit_this.dart.strong.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/implicit_this.dart.strong.transformed.expect
index 25539c8..c7a22c5 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/implicit_this.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/implicit_this.dart.strong.transformed.expect
@@ -12,6 +12,16 @@
   method testC() → dynamic {
     this.{self::C::m}();
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D extends self::C {
   synthetic constructor •() → self::D*
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/implicit_this.dart.weak.expect b/pkg/front_end/testcases/general_nnbd_opt_out/implicit_this.dart.weak.expect
index 25539c8..c7a22c5 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/implicit_this.dart.weak.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/implicit_this.dart.weak.expect
@@ -12,6 +12,16 @@
   method testC() → dynamic {
     this.{self::C::m}();
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D extends self::C {
   synthetic constructor •() → self::D*
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/implicit_this.dart.weak.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/implicit_this.dart.weak.transformed.expect
index 25539c8..c7a22c5 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/implicit_this.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/implicit_this.dart.weak.transformed.expect
@@ -12,6 +12,16 @@
   method testC() → dynamic {
     this.{self::C::m}();
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D extends self::C {
   synthetic constructor •() → self::D*
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/import_conflicting_type_member.dart.outline.expect b/pkg/front_end/testcases/general_nnbd_opt_out/import_conflicting_type_member.dart.outline.expect
index db1d42f..b088274 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/import_conflicting_type_member.dart.outline.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/import_conflicting_type_member.dart.outline.expect
@@ -16,6 +16,16 @@
 class Foo extends core::Object {
   synthetic constructor •() → self2::Foo*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 
 library;
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/import_conflicting_type_member.dart.strong.expect b/pkg/front_end/testcases/general_nnbd_opt_out/import_conflicting_type_member.dart.strong.expect
index d866134..3cfde874 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/import_conflicting_type_member.dart.strong.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/import_conflicting_type_member.dart.strong.expect
@@ -31,6 +31,16 @@
   synthetic constructor •() → self2::Foo*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 
 library;
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/import_conflicting_type_member.dart.strong.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/import_conflicting_type_member.dart.strong.transformed.expect
index d866134..3cfde874 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/import_conflicting_type_member.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/import_conflicting_type_member.dart.strong.transformed.expect
@@ -31,6 +31,16 @@
   synthetic constructor •() → self2::Foo*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 
 library;
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/import_conflicting_type_member.dart.weak.expect b/pkg/front_end/testcases/general_nnbd_opt_out/import_conflicting_type_member.dart.weak.expect
index d866134..3cfde874 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/import_conflicting_type_member.dart.weak.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/import_conflicting_type_member.dart.weak.expect
@@ -31,6 +31,16 @@
   synthetic constructor •() → self2::Foo*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 
 library;
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/import_conflicting_type_member.dart.weak.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/import_conflicting_type_member.dart.weak.transformed.expect
index d866134..3cfde874 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/import_conflicting_type_member.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/import_conflicting_type_member.dart.weak.transformed.expect
@@ -31,6 +31,16 @@
   synthetic constructor •() → self2::Foo*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 
 library;
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/import_conflicting_types.dart.outline.expect b/pkg/front_end/testcases/general_nnbd_opt_out/import_conflicting_types.dart.outline.expect
index 5ddea75..2a8cbaf 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/import_conflicting_types.dart.outline.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/import_conflicting_types.dart.outline.expect
@@ -16,6 +16,16 @@
 class Foo extends core::Object {
   synthetic constructor •() → self2::Foo*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 
 library;
@@ -25,4 +35,14 @@
 class Foo extends core::Object {
   synthetic constructor •() → self3::Foo*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/import_conflicting_types.dart.strong.expect b/pkg/front_end/testcases/general_nnbd_opt_out/import_conflicting_types.dart.strong.expect
index 328886a..5d88004 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/import_conflicting_types.dart.strong.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/import_conflicting_types.dart.strong.expect
@@ -24,6 +24,16 @@
   synthetic constructor •() → self2::Foo*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 
 library;
@@ -34,4 +44,14 @@
   synthetic constructor •() → self3::Foo*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/import_conflicting_types.dart.strong.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/import_conflicting_types.dart.strong.transformed.expect
index 328886a..5d88004 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/import_conflicting_types.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/import_conflicting_types.dart.strong.transformed.expect
@@ -24,6 +24,16 @@
   synthetic constructor •() → self2::Foo*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 
 library;
@@ -34,4 +44,14 @@
   synthetic constructor •() → self3::Foo*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/import_conflicting_types.dart.weak.expect b/pkg/front_end/testcases/general_nnbd_opt_out/import_conflicting_types.dart.weak.expect
index 328886a..5d88004 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/import_conflicting_types.dart.weak.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/import_conflicting_types.dart.weak.expect
@@ -24,6 +24,16 @@
   synthetic constructor •() → self2::Foo*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 
 library;
@@ -34,4 +44,14 @@
   synthetic constructor •() → self3::Foo*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/import_conflicting_types.dart.weak.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/import_conflicting_types.dart.weak.transformed.expect
index 328886a..5d88004 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/import_conflicting_types.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/import_conflicting_types.dart.weak.transformed.expect
@@ -24,6 +24,16 @@
   synthetic constructor •() → self2::Foo*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 
 library;
@@ -34,4 +44,14 @@
   synthetic constructor •() → self3::Foo*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/incomplete_field_formal_parameter.dart.outline.expect b/pkg/front_end/testcases/general_nnbd_opt_out/incomplete_field_formal_parameter.dart.outline.expect
index ec40ae7..9173788 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/incomplete_field_formal_parameter.dart.outline.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/incomplete_field_formal_parameter.dart.outline.expect
@@ -38,4 +38,14 @@
     ;
   constructor d() → self::C*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/incomplete_field_formal_parameter.dart.strong.expect b/pkg/front_end/testcases/general_nnbd_opt_out/incomplete_field_formal_parameter.dart.strong.expect
index 30c0ea4..61fb05a 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/incomplete_field_formal_parameter.dart.strong.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/incomplete_field_formal_parameter.dart.strong.expect
@@ -42,4 +42,14 @@
   constructor d() → self::C*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/incomplete_field_formal_parameter.dart.strong.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/incomplete_field_formal_parameter.dart.strong.transformed.expect
index 30c0ea4..61fb05a 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/incomplete_field_formal_parameter.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/incomplete_field_formal_parameter.dart.strong.transformed.expect
@@ -42,4 +42,14 @@
   constructor d() → self::C*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/incomplete_field_formal_parameter.dart.weak.expect b/pkg/front_end/testcases/general_nnbd_opt_out/incomplete_field_formal_parameter.dart.weak.expect
index 30c0ea4..61fb05a 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/incomplete_field_formal_parameter.dart.weak.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/incomplete_field_formal_parameter.dart.weak.expect
@@ -42,4 +42,14 @@
   constructor d() → self::C*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/incomplete_field_formal_parameter.dart.weak.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/incomplete_field_formal_parameter.dart.weak.transformed.expect
index 30c0ea4..61fb05a 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/incomplete_field_formal_parameter.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/incomplete_field_formal_parameter.dart.weak.transformed.expect
@@ -42,4 +42,14 @@
   constructor d() → self::C*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/interface_contravariant_from_class.dart.outline.expect b/pkg/front_end/testcases/general_nnbd_opt_out/interface_contravariant_from_class.dart.outline.expect
index 758e8a6..36824b3 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/interface_contravariant_from_class.dart.outline.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/interface_contravariant_from_class.dart.outline.expect
@@ -19,15 +19,45 @@
     ;
   method f(core::int* x) → self::B::T*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class I<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::I<self::I::T*>*
     ;
   abstract method f(core::Object* x) → self::I::T*;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class C<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::C<self::C::T*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → void
   ;
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/interface_contravariant_from_class.dart.strong.expect b/pkg/front_end/testcases/general_nnbd_opt_out/interface_contravariant_from_class.dart.strong.expect
index eab6cf3..fc859ba 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/interface_contravariant_from_class.dart.strong.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/interface_contravariant_from_class.dart.strong.expect
@@ -19,16 +19,46 @@
     : super core::Object::•()
     ;
   method f(core::int* x) → self::B::T* {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class I<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::I<self::I::T*>*
     : super core::Object::•()
     ;
   abstract method f(core::Object* x) → self::I::T*;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class C<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::C<self::C::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → void {}
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/interface_contravariant_from_class.dart.strong.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/interface_contravariant_from_class.dart.strong.transformed.expect
index eab6cf3..fc859ba 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/interface_contravariant_from_class.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/interface_contravariant_from_class.dart.strong.transformed.expect
@@ -19,16 +19,46 @@
     : super core::Object::•()
     ;
   method f(core::int* x) → self::B::T* {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class I<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::I<self::I::T*>*
     : super core::Object::•()
     ;
   abstract method f(core::Object* x) → self::I::T*;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class C<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::C<self::C::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → void {}
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/interface_contravariant_from_class.dart.weak.expect b/pkg/front_end/testcases/general_nnbd_opt_out/interface_contravariant_from_class.dart.weak.expect
index eab6cf3..fc859ba 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/interface_contravariant_from_class.dart.weak.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/interface_contravariant_from_class.dart.weak.expect
@@ -19,16 +19,46 @@
     : super core::Object::•()
     ;
   method f(core::int* x) → self::B::T* {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class I<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::I<self::I::T*>*
     : super core::Object::•()
     ;
   abstract method f(core::Object* x) → self::I::T*;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class C<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::C<self::C::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → void {}
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/interface_contravariant_from_class.dart.weak.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/interface_contravariant_from_class.dart.weak.transformed.expect
index eab6cf3..fc859ba 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/interface_contravariant_from_class.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/interface_contravariant_from_class.dart.weak.transformed.expect
@@ -19,16 +19,46 @@
     : super core::Object::•()
     ;
   method f(core::int* x) → self::B::T* {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class I<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::I<self::I::T*>*
     : super core::Object::•()
     ;
   abstract method f(core::Object* x) → self::I::T*;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class C<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::C<self::C::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → void {}
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/interface_covariantImpl_from_class.dart.outline.expect b/pkg/front_end/testcases/general_nnbd_opt_out/interface_covariantImpl_from_class.dart.outline.expect
index 7f42c61..3c6c4a2 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/interface_covariantImpl_from_class.dart.outline.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/interface_covariantImpl_from_class.dart.outline.expect
@@ -19,15 +19,45 @@
     ;
   method f((self::B::T*) →* void x, core::int* y) → void
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class I<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::I<self::I::T*>*
     ;
   abstract method f((self::I::T*) →* void x, core::Object* y) → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class C<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::C<self::C::T*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → void
   ;
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/interface_covariantImpl_from_class.dart.strong.expect b/pkg/front_end/testcases/general_nnbd_opt_out/interface_covariantImpl_from_class.dart.strong.expect
index 4988e90..2371c7c 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/interface_covariantImpl_from_class.dart.strong.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/interface_covariantImpl_from_class.dart.strong.expect
@@ -19,16 +19,46 @@
     : super core::Object::•()
     ;
   method f((self::B::T*) →* void x, core::int* y) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class I<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::I<self::I::T*>*
     : super core::Object::•()
     ;
   abstract method f((self::I::T*) →* void x, core::Object* y) → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class C<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::C<self::C::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → void {}
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/interface_covariantImpl_from_class.dart.strong.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/interface_covariantImpl_from_class.dart.strong.transformed.expect
index 4988e90..2371c7c 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/interface_covariantImpl_from_class.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/interface_covariantImpl_from_class.dart.strong.transformed.expect
@@ -19,16 +19,46 @@
     : super core::Object::•()
     ;
   method f((self::B::T*) →* void x, core::int* y) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class I<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::I<self::I::T*>*
     : super core::Object::•()
     ;
   abstract method f((self::I::T*) →* void x, core::Object* y) → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class C<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::C<self::C::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → void {}
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/interface_covariantImpl_from_class.dart.weak.expect b/pkg/front_end/testcases/general_nnbd_opt_out/interface_covariantImpl_from_class.dart.weak.expect
index 4988e90..2371c7c 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/interface_covariantImpl_from_class.dart.weak.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/interface_covariantImpl_from_class.dart.weak.expect
@@ -19,16 +19,46 @@
     : super core::Object::•()
     ;
   method f((self::B::T*) →* void x, core::int* y) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class I<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::I<self::I::T*>*
     : super core::Object::•()
     ;
   abstract method f((self::I::T*) →* void x, core::Object* y) → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class C<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::C<self::C::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → void {}
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/interface_covariantImpl_from_class.dart.weak.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/interface_covariantImpl_from_class.dart.weak.transformed.expect
index 4988e90..2371c7c 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/interface_covariantImpl_from_class.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/interface_covariantImpl_from_class.dart.weak.transformed.expect
@@ -19,16 +19,46 @@
     : super core::Object::•()
     ;
   method f((self::B::T*) →* void x, core::int* y) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class I<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::I<self::I::T*>*
     : super core::Object::•()
     ;
   abstract method f((self::I::T*) →* void x, core::Object* y) → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class C<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::C<self::C::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → void {}
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/interface_covariantInterface_from_class.dart.outline.expect b/pkg/front_end/testcases/general_nnbd_opt_out/interface_covariantInterface_from_class.dart.outline.expect
index 7488545..a54b481 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/interface_covariantInterface_from_class.dart.outline.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/interface_covariantInterface_from_class.dart.outline.expect
@@ -26,21 +26,61 @@
   synthetic constructor •() → self::A<self::A::T*>*
     ;
   abstract method f(generic-covariant-impl self::A::T* x, core::int* y) → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::B<self::B::T*>*
     ;
   method f((self::B::T*) →* void x, core::int* y) → void
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class I<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::I<self::I::T*>*
     ;
   abstract method f((self::I::T*) →* void x, core::Object* y) → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class C<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::C<self::C::T*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → void
   ;
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/interface_covariantInterface_from_class.dart.strong.expect b/pkg/front_end/testcases/general_nnbd_opt_out/interface_covariantInterface_from_class.dart.strong.expect
index 2ffb27b..12ce928 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/interface_covariantInterface_from_class.dart.strong.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/interface_covariantInterface_from_class.dart.strong.expect
@@ -27,22 +27,62 @@
     : super core::Object::•()
     ;
   abstract method f(generic-covariant-impl self::A::T* x, core::int* y) → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::B<self::B::T*>*
     : super core::Object::•()
     ;
   method f((self::B::T*) →* void x, core::int* y) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class I<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::I<self::I::T*>*
     : super core::Object::•()
     ;
   abstract method f((self::I::T*) →* void x, core::Object* y) → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class C<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::C<self::C::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → void {}
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/interface_covariantInterface_from_class.dart.strong.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/interface_covariantInterface_from_class.dart.strong.transformed.expect
index 2ffb27b..12ce928 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/interface_covariantInterface_from_class.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/interface_covariantInterface_from_class.dart.strong.transformed.expect
@@ -27,22 +27,62 @@
     : super core::Object::•()
     ;
   abstract method f(generic-covariant-impl self::A::T* x, core::int* y) → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::B<self::B::T*>*
     : super core::Object::•()
     ;
   method f((self::B::T*) →* void x, core::int* y) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class I<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::I<self::I::T*>*
     : super core::Object::•()
     ;
   abstract method f((self::I::T*) →* void x, core::Object* y) → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class C<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::C<self::C::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → void {}
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/interface_covariantInterface_from_class.dart.weak.expect b/pkg/front_end/testcases/general_nnbd_opt_out/interface_covariantInterface_from_class.dart.weak.expect
index 2ffb27b..12ce928 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/interface_covariantInterface_from_class.dart.weak.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/interface_covariantInterface_from_class.dart.weak.expect
@@ -27,22 +27,62 @@
     : super core::Object::•()
     ;
   abstract method f(generic-covariant-impl self::A::T* x, core::int* y) → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::B<self::B::T*>*
     : super core::Object::•()
     ;
   method f((self::B::T*) →* void x, core::int* y) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class I<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::I<self::I::T*>*
     : super core::Object::•()
     ;
   abstract method f((self::I::T*) →* void x, core::Object* y) → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class C<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::C<self::C::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → void {}
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/interface_covariantInterface_from_class.dart.weak.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/interface_covariantInterface_from_class.dart.weak.transformed.expect
index 2ffb27b..12ce928 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/interface_covariantInterface_from_class.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/interface_covariantInterface_from_class.dart.weak.transformed.expect
@@ -27,22 +27,62 @@
     : super core::Object::•()
     ;
   abstract method f(generic-covariant-impl self::A::T* x, core::int* y) → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::B<self::B::T*>*
     : super core::Object::•()
     ;
   method f((self::B::T*) →* void x, core::int* y) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class I<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::I<self::I::T*>*
     : super core::Object::•()
     ;
   abstract method f((self::I::T*) →* void x, core::Object* y) → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class C<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::C<self::C::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → void {}
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/invalid_assignment.dart.outline.expect b/pkg/front_end/testcases/general_nnbd_opt_out/invalid_assignment.dart.outline.expect
index d31a4b0..fda4f9c 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/invalid_assignment.dart.outline.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/invalid_assignment.dart.outline.expect
@@ -7,6 +7,16 @@
     ;
   operator +(core::int* i) → core::String*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method test(core::int* i, core::String* s, self::A* a) → dynamic
   ;
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/invalid_assignment.dart.strong.expect b/pkg/front_end/testcases/general_nnbd_opt_out/invalid_assignment.dart.strong.expect
index 3796867..2970f2b 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/invalid_assignment.dart.strong.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/invalid_assignment.dart.strong.expect
@@ -24,6 +24,16 @@
     ;
   operator +(core::int* i) → core::String*
     return "";
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method test(core::int* i, core::String* s, self::A* a) → dynamic {
   i = 1;
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/invalid_assignment.dart.strong.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/invalid_assignment.dart.strong.transformed.expect
index 3796867..2970f2b 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/invalid_assignment.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/invalid_assignment.dart.strong.transformed.expect
@@ -24,6 +24,16 @@
     ;
   operator +(core::int* i) → core::String*
     return "";
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method test(core::int* i, core::String* s, self::A* a) → dynamic {
   i = 1;
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/invalid_assignment.dart.weak.expect b/pkg/front_end/testcases/general_nnbd_opt_out/invalid_assignment.dart.weak.expect
index 3796867..2970f2b 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/invalid_assignment.dart.weak.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/invalid_assignment.dart.weak.expect
@@ -24,6 +24,16 @@
     ;
   operator +(core::int* i) → core::String*
     return "";
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method test(core::int* i, core::String* s, self::A* a) → dynamic {
   i = 1;
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/invalid_assignment.dart.weak.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/invalid_assignment.dart.weak.transformed.expect
index 3796867..2970f2b 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/invalid_assignment.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/invalid_assignment.dart.weak.transformed.expect
@@ -24,6 +24,16 @@
     ;
   operator +(core::int* i) → core::String*
     return "";
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method test(core::int* i, core::String* s, self::A* a) → dynamic {
   i = 1;
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/invalid_cast.dart.outline.expect b/pkg/front_end/testcases/general_nnbd_opt_out/invalid_cast.dart.outline.expect
index e56195b..a26b4b7 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/invalid_cast.dart.outline.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/invalid_cast.dart.outline.expect
@@ -16,6 +16,16 @@
     let dynamic #redirecting_factory = self::D::• in invalid-expression;
   static method staticFunction(core::int* i) → void
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D extends self::C {
   synthetic constructor •() → self::D*
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/invalid_cast.dart.strong.expect b/pkg/front_end/testcases/general_nnbd_opt_out/invalid_cast.dart.strong.expect
index cc53dd3..04889c7 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/invalid_cast.dart.strong.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/invalid_cast.dart.strong.expect
@@ -80,6 +80,16 @@
   static factory fact2() → self::C*
     let dynamic #redirecting_factory = self::D::• in invalid-expression;
   static method staticFunction(core::int* i) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D extends self::C {
   synthetic constructor •() → self::D*
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/invalid_cast.dart.strong.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/invalid_cast.dart.strong.transformed.expect
index df56cc3..f38cde5 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/invalid_cast.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/invalid_cast.dart.strong.transformed.expect
@@ -80,6 +80,16 @@
   static factory fact2() → self::C*
     let<BottomType> #redirecting_factory = self::D::• in invalid-expression;
   static method staticFunction(core::int* i) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D extends self::C {
   synthetic constructor •() → self::D*
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/invalid_cast.dart.weak.expect b/pkg/front_end/testcases/general_nnbd_opt_out/invalid_cast.dart.weak.expect
index cc53dd3..04889c7 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/invalid_cast.dart.weak.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/invalid_cast.dart.weak.expect
@@ -80,6 +80,16 @@
   static factory fact2() → self::C*
     let dynamic #redirecting_factory = self::D::• in invalid-expression;
   static method staticFunction(core::int* i) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D extends self::C {
   synthetic constructor •() → self::D*
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/invalid_cast.dart.weak.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/invalid_cast.dart.weak.transformed.expect
index df56cc3..f38cde5 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/invalid_cast.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/invalid_cast.dart.weak.transformed.expect
@@ -80,6 +80,16 @@
   static factory fact2() → self::C*
     let<BottomType> #redirecting_factory = self::D::• in invalid-expression;
   static method staticFunction(core::int* i) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D extends self::C {
   synthetic constructor •() → self::D*
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/invalid_type.dart.outline.expect b/pkg/front_end/testcases/general_nnbd_opt_out/invalid_type.dart.outline.expect
index 4ea9e6f..d94e4b3 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/invalid_type.dart.outline.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/invalid_type.dart.outline.expect
@@ -7,6 +7,16 @@
     ;
   static method foo() → dynamic
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method test() → dynamic
   ;
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/invalid_type.dart.strong.expect b/pkg/front_end/testcases/general_nnbd_opt_out/invalid_type.dart.strong.expect
index 3be894f..bff2bc4 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/invalid_type.dart.strong.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/invalid_type.dart.strong.expect
@@ -27,6 +27,16 @@
     this.bar();
     ^^^^".bar();
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method test() → dynamic {
   (null as invalid-type).bar();
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/invalid_type.dart.strong.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/invalid_type.dart.strong.transformed.expect
index 3be894f..bff2bc4 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/invalid_type.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/invalid_type.dart.strong.transformed.expect
@@ -27,6 +27,16 @@
     this.bar();
     ^^^^".bar();
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method test() → dynamic {
   (null as invalid-type).bar();
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/invalid_type.dart.weak.expect b/pkg/front_end/testcases/general_nnbd_opt_out/invalid_type.dart.weak.expect
index 3be894f..bff2bc4 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/invalid_type.dart.weak.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/invalid_type.dart.weak.expect
@@ -27,6 +27,16 @@
     this.bar();
     ^^^^".bar();
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method test() → dynamic {
   (null as invalid-type).bar();
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/invalid_type.dart.weak.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/invalid_type.dart.weak.transformed.expect
index 3be894f..bff2bc4 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/invalid_type.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/invalid_type.dart.weak.transformed.expect
@@ -27,6 +27,16 @@
     this.bar();
     ^^^^".bar();
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method test() → dynamic {
   (null as invalid-type).bar();
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/invocations.dart.strong.expect b/pkg/front_end/testcases/general_nnbd_opt_out/invocations.dart.strong.expect
index 6c22e73..3566c3d 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/invocations.dart.strong.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/invocations.dart.strong.expect
@@ -59,11 +59,11 @@
       print(\"Hello, World!\") +
       ^" in core::print("Hello, World!")).{core::num::+}(invalid-expression "pkg/front_end/testcases/general_nnbd_opt_out/invocations.dart:16:7: Error: Method not found: 'z'.
       z(\"Hello, World!\") +
-      ^" as{TypeError,ForDynamic} core::num*).{core::num::+}(invalid-expression "pkg/front_end/testcases/general_nnbd_opt_out/invocations.dart:17:7: Error: Getter not found: 'z'.
+      ^" as{TypeError,ForDynamic} core::num).{core::num::+}(invalid-expression "pkg/front_end/testcases/general_nnbd_opt_out/invocations.dart:17:7: Error: Getter not found: 'z'.
       z.print(\"Hello, World!\") +
-      ^".print("Hello, World!") as{TypeError,ForDynamic} core::num*).{core::num::+}(invalid-expression "pkg/front_end/testcases/general_nnbd_opt_out/invocations.dart:18:7: Error: Getter not found: 'y'.
+      ^".print("Hello, World!") as{TypeError,ForDynamic} core::num).{core::num::+}(invalid-expression "pkg/front_end/testcases/general_nnbd_opt_out/invocations.dart:18:7: Error: Getter not found: 'y'.
       y.z.print(\"Hello, World!\") +
-      ^".z.print("Hello, World!") as{TypeError,ForDynamic} core::num*).{core::num::+}(invalid-expression "pkg/front_end/testcases/general_nnbd_opt_out/invocations.dart:19:7: Error: Getter not found: 'x'.
+      ^".z.print("Hello, World!") as{TypeError,ForDynamic} core::num).{core::num::+}(invalid-expression "pkg/front_end/testcases/general_nnbd_opt_out/invocations.dart:19:7: Error: Getter not found: 'x'.
       x.y.z.print(\"Hello, World!\");
-      ^".y.z.print("Hello, World!") as{TypeError,ForDynamic} core::num*);
+      ^".y.z.print("Hello, World!") as{TypeError,ForDynamic} core::num);
 }
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/invocations.dart.strong.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/invocations.dart.strong.transformed.expect
index 6c22e73..3566c3d 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/invocations.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/invocations.dart.strong.transformed.expect
@@ -59,11 +59,11 @@
       print(\"Hello, World!\") +
       ^" in core::print("Hello, World!")).{core::num::+}(invalid-expression "pkg/front_end/testcases/general_nnbd_opt_out/invocations.dart:16:7: Error: Method not found: 'z'.
       z(\"Hello, World!\") +
-      ^" as{TypeError,ForDynamic} core::num*).{core::num::+}(invalid-expression "pkg/front_end/testcases/general_nnbd_opt_out/invocations.dart:17:7: Error: Getter not found: 'z'.
+      ^" as{TypeError,ForDynamic} core::num).{core::num::+}(invalid-expression "pkg/front_end/testcases/general_nnbd_opt_out/invocations.dart:17:7: Error: Getter not found: 'z'.
       z.print(\"Hello, World!\") +
-      ^".print("Hello, World!") as{TypeError,ForDynamic} core::num*).{core::num::+}(invalid-expression "pkg/front_end/testcases/general_nnbd_opt_out/invocations.dart:18:7: Error: Getter not found: 'y'.
+      ^".print("Hello, World!") as{TypeError,ForDynamic} core::num).{core::num::+}(invalid-expression "pkg/front_end/testcases/general_nnbd_opt_out/invocations.dart:18:7: Error: Getter not found: 'y'.
       y.z.print(\"Hello, World!\") +
-      ^".z.print("Hello, World!") as{TypeError,ForDynamic} core::num*).{core::num::+}(invalid-expression "pkg/front_end/testcases/general_nnbd_opt_out/invocations.dart:19:7: Error: Getter not found: 'x'.
+      ^".z.print("Hello, World!") as{TypeError,ForDynamic} core::num).{core::num::+}(invalid-expression "pkg/front_end/testcases/general_nnbd_opt_out/invocations.dart:19:7: Error: Getter not found: 'x'.
       x.y.z.print(\"Hello, World!\");
-      ^".y.z.print("Hello, World!") as{TypeError,ForDynamic} core::num*);
+      ^".y.z.print("Hello, World!") as{TypeError,ForDynamic} core::num);
 }
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/invocations.dart.weak.expect b/pkg/front_end/testcases/general_nnbd_opt_out/invocations.dart.weak.expect
index 6c22e73..3566c3d 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/invocations.dart.weak.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/invocations.dart.weak.expect
@@ -59,11 +59,11 @@
       print(\"Hello, World!\") +
       ^" in core::print("Hello, World!")).{core::num::+}(invalid-expression "pkg/front_end/testcases/general_nnbd_opt_out/invocations.dart:16:7: Error: Method not found: 'z'.
       z(\"Hello, World!\") +
-      ^" as{TypeError,ForDynamic} core::num*).{core::num::+}(invalid-expression "pkg/front_end/testcases/general_nnbd_opt_out/invocations.dart:17:7: Error: Getter not found: 'z'.
+      ^" as{TypeError,ForDynamic} core::num).{core::num::+}(invalid-expression "pkg/front_end/testcases/general_nnbd_opt_out/invocations.dart:17:7: Error: Getter not found: 'z'.
       z.print(\"Hello, World!\") +
-      ^".print("Hello, World!") as{TypeError,ForDynamic} core::num*).{core::num::+}(invalid-expression "pkg/front_end/testcases/general_nnbd_opt_out/invocations.dart:18:7: Error: Getter not found: 'y'.
+      ^".print("Hello, World!") as{TypeError,ForDynamic} core::num).{core::num::+}(invalid-expression "pkg/front_end/testcases/general_nnbd_opt_out/invocations.dart:18:7: Error: Getter not found: 'y'.
       y.z.print(\"Hello, World!\") +
-      ^".z.print("Hello, World!") as{TypeError,ForDynamic} core::num*).{core::num::+}(invalid-expression "pkg/front_end/testcases/general_nnbd_opt_out/invocations.dart:19:7: Error: Getter not found: 'x'.
+      ^".z.print("Hello, World!") as{TypeError,ForDynamic} core::num).{core::num::+}(invalid-expression "pkg/front_end/testcases/general_nnbd_opt_out/invocations.dart:19:7: Error: Getter not found: 'x'.
       x.y.z.print(\"Hello, World!\");
-      ^".y.z.print("Hello, World!") as{TypeError,ForDynamic} core::num*);
+      ^".y.z.print("Hello, World!") as{TypeError,ForDynamic} core::num);
 }
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/invocations.dart.weak.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/invocations.dart.weak.transformed.expect
index 6c22e73..3566c3d 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/invocations.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/invocations.dart.weak.transformed.expect
@@ -59,11 +59,11 @@
       print(\"Hello, World!\") +
       ^" in core::print("Hello, World!")).{core::num::+}(invalid-expression "pkg/front_end/testcases/general_nnbd_opt_out/invocations.dart:16:7: Error: Method not found: 'z'.
       z(\"Hello, World!\") +
-      ^" as{TypeError,ForDynamic} core::num*).{core::num::+}(invalid-expression "pkg/front_end/testcases/general_nnbd_opt_out/invocations.dart:17:7: Error: Getter not found: 'z'.
+      ^" as{TypeError,ForDynamic} core::num).{core::num::+}(invalid-expression "pkg/front_end/testcases/general_nnbd_opt_out/invocations.dart:17:7: Error: Getter not found: 'z'.
       z.print(\"Hello, World!\") +
-      ^".print("Hello, World!") as{TypeError,ForDynamic} core::num*).{core::num::+}(invalid-expression "pkg/front_end/testcases/general_nnbd_opt_out/invocations.dart:18:7: Error: Getter not found: 'y'.
+      ^".print("Hello, World!") as{TypeError,ForDynamic} core::num).{core::num::+}(invalid-expression "pkg/front_end/testcases/general_nnbd_opt_out/invocations.dart:18:7: Error: Getter not found: 'y'.
       y.z.print(\"Hello, World!\") +
-      ^".z.print("Hello, World!") as{TypeError,ForDynamic} core::num*).{core::num::+}(invalid-expression "pkg/front_end/testcases/general_nnbd_opt_out/invocations.dart:19:7: Error: Getter not found: 'x'.
+      ^".z.print("Hello, World!") as{TypeError,ForDynamic} core::num).{core::num::+}(invalid-expression "pkg/front_end/testcases/general_nnbd_opt_out/invocations.dart:19:7: Error: Getter not found: 'x'.
       x.y.z.print(\"Hello, World!\");
-      ^".y.z.print("Hello, World!") as{TypeError,ForDynamic} core::num*);
+      ^".y.z.print("Hello, World!") as{TypeError,ForDynamic} core::num);
 }
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/issue129167943.dart.outline.expect b/pkg/front_end/testcases/general_nnbd_opt_out/issue129167943.dart.outline.expect
index f8aec80..2e7bfcc 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/issue129167943.dart.outline.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/issue129167943.dart.outline.expect
@@ -5,78 +5,228 @@
 abstract class A extends core::Object {
   synthetic constructor •() → self::A*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class B extends core::Object {
   synthetic constructor •() → self::B*
     ;
   abstract method foo(core::num* x) → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class C extends core::Object implements self::B {
   synthetic constructor •() → self::C*
     ;
   abstract method foo(covariant core::int* x) → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class D1 extends core::Object implements self::A, self::C, self::B {
   synthetic constructor •() → self::D1*
     ;
   abstract method foo(covariant core::int* x) → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D2 extends core::Object implements self::A, self::C, self::B {
   synthetic constructor •() → self::D2*
     ;
   method foo(covariant core::int* x) → void
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class D3 extends core::Object implements self::A, self::C, self::B {
   synthetic constructor •() → self::D3*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
   abstract forwarding-stub method foo(covariant core::num* x) → void;
 }
 abstract class D4 extends core::Object implements self::A, self::C, self::B {
   synthetic constructor •() → self::D4*
     ;
   abstract method foo(covariant core::int* x) → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class D5 extends core::Object implements self::A, self::C, self::B {
   synthetic constructor •() → self::D5*
     ;
   abstract method foo(covariant core::num* x) → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class E extends core::Object {
   synthetic constructor •() → self::E*
     ;
   abstract set foo(core::num* x) → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class G extends core::Object implements self::E {
   synthetic constructor •() → self::G*
     ;
   abstract set foo(covariant core::int* x) → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class H1 extends core::Object implements self::A, self::E, self::G {
   synthetic constructor •() → self::H1*
     ;
   abstract set foo(covariant core::int* x) → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class H2 extends core::Object implements self::A, self::E, self::G {
   synthetic constructor •() → self::H2*
     ;
   set foo(covariant core::int* x) → void
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class H3 extends core::Object implements self::A, self::E, self::G {
   synthetic constructor •() → self::H3*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
   abstract forwarding-stub set foo(covariant core::num* x) → void;
 }
 abstract class H4 extends core::Object implements self::A, self::E, self::G {
   synthetic constructor •() → self::H4*
     ;
   abstract set foo(covariant core::int* x) → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class H5 extends core::Object implements self::A, self::E, self::G {
   synthetic constructor •() → self::H5*
     ;
   abstract set foo(covariant core::num* x) → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/issue129167943.dart.strong.expect b/pkg/front_end/testcases/general_nnbd_opt_out/issue129167943.dart.strong.expect
index e6ff2a3..40d8856 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/issue129167943.dart.strong.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/issue129167943.dart.strong.expect
@@ -6,35 +6,95 @@
   synthetic constructor •() → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class B extends core::Object {
   synthetic constructor •() → self::B*
     : super core::Object::•()
     ;
   abstract method foo(core::num* x) → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class C extends core::Object implements self::B {
   synthetic constructor •() → self::C*
     : super core::Object::•()
     ;
   abstract method foo(covariant core::int* x) → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class D1 extends core::Object implements self::A, self::C, self::B {
   synthetic constructor •() → self::D1*
     : super core::Object::•()
     ;
   abstract method foo(covariant core::int* x) → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D2 extends core::Object implements self::A, self::C, self::B {
   synthetic constructor •() → self::D2*
     : super core::Object::•()
     ;
   method foo(covariant core::int* x) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class D3 extends core::Object implements self::A, self::C, self::B {
   synthetic constructor •() → self::D3*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
   abstract forwarding-stub method foo(covariant core::num* x) → void;
 }
 abstract class D4 extends core::Object implements self::A, self::C, self::B {
@@ -42,41 +102,111 @@
     : super core::Object::•()
     ;
   abstract method foo(covariant core::int* x) → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class D5 extends core::Object implements self::A, self::C, self::B {
   synthetic constructor •() → self::D5*
     : super core::Object::•()
     ;
   abstract method foo(covariant core::num* x) → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class E extends core::Object {
   synthetic constructor •() → self::E*
     : super core::Object::•()
     ;
   abstract set foo(core::num* x) → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class G extends core::Object implements self::E {
   synthetic constructor •() → self::G*
     : super core::Object::•()
     ;
   abstract set foo(covariant core::int* x) → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class H1 extends core::Object implements self::A, self::E, self::G {
   synthetic constructor •() → self::H1*
     : super core::Object::•()
     ;
   abstract set foo(covariant core::int* x) → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class H2 extends core::Object implements self::A, self::E, self::G {
   synthetic constructor •() → self::H2*
     : super core::Object::•()
     ;
   set foo(covariant core::int* x) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class H3 extends core::Object implements self::A, self::E, self::G {
   synthetic constructor •() → self::H3*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
   abstract forwarding-stub set foo(covariant core::num* x) → void;
 }
 abstract class H4 extends core::Object implements self::A, self::E, self::G {
@@ -84,11 +214,31 @@
     : super core::Object::•()
     ;
   abstract set foo(covariant core::int* x) → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class H5 extends core::Object implements self::A, self::E, self::G {
   synthetic constructor •() → self::H5*
     : super core::Object::•()
     ;
   abstract set foo(covariant core::num* x) → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/issue129167943.dart.strong.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/issue129167943.dart.strong.transformed.expect
index e6ff2a3..40d8856 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/issue129167943.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/issue129167943.dart.strong.transformed.expect
@@ -6,35 +6,95 @@
   synthetic constructor •() → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class B extends core::Object {
   synthetic constructor •() → self::B*
     : super core::Object::•()
     ;
   abstract method foo(core::num* x) → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class C extends core::Object implements self::B {
   synthetic constructor •() → self::C*
     : super core::Object::•()
     ;
   abstract method foo(covariant core::int* x) → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class D1 extends core::Object implements self::A, self::C, self::B {
   synthetic constructor •() → self::D1*
     : super core::Object::•()
     ;
   abstract method foo(covariant core::int* x) → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D2 extends core::Object implements self::A, self::C, self::B {
   synthetic constructor •() → self::D2*
     : super core::Object::•()
     ;
   method foo(covariant core::int* x) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class D3 extends core::Object implements self::A, self::C, self::B {
   synthetic constructor •() → self::D3*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
   abstract forwarding-stub method foo(covariant core::num* x) → void;
 }
 abstract class D4 extends core::Object implements self::A, self::C, self::B {
@@ -42,41 +102,111 @@
     : super core::Object::•()
     ;
   abstract method foo(covariant core::int* x) → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class D5 extends core::Object implements self::A, self::C, self::B {
   synthetic constructor •() → self::D5*
     : super core::Object::•()
     ;
   abstract method foo(covariant core::num* x) → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class E extends core::Object {
   synthetic constructor •() → self::E*
     : super core::Object::•()
     ;
   abstract set foo(core::num* x) → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class G extends core::Object implements self::E {
   synthetic constructor •() → self::G*
     : super core::Object::•()
     ;
   abstract set foo(covariant core::int* x) → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class H1 extends core::Object implements self::A, self::E, self::G {
   synthetic constructor •() → self::H1*
     : super core::Object::•()
     ;
   abstract set foo(covariant core::int* x) → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class H2 extends core::Object implements self::A, self::E, self::G {
   synthetic constructor •() → self::H2*
     : super core::Object::•()
     ;
   set foo(covariant core::int* x) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class H3 extends core::Object implements self::A, self::E, self::G {
   synthetic constructor •() → self::H3*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
   abstract forwarding-stub set foo(covariant core::num* x) → void;
 }
 abstract class H4 extends core::Object implements self::A, self::E, self::G {
@@ -84,11 +214,31 @@
     : super core::Object::•()
     ;
   abstract set foo(covariant core::int* x) → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class H5 extends core::Object implements self::A, self::E, self::G {
   synthetic constructor •() → self::H5*
     : super core::Object::•()
     ;
   abstract set foo(covariant core::num* x) → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/issue129167943.dart.weak.expect b/pkg/front_end/testcases/general_nnbd_opt_out/issue129167943.dart.weak.expect
index e6ff2a3..40d8856 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/issue129167943.dart.weak.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/issue129167943.dart.weak.expect
@@ -6,35 +6,95 @@
   synthetic constructor •() → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class B extends core::Object {
   synthetic constructor •() → self::B*
     : super core::Object::•()
     ;
   abstract method foo(core::num* x) → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class C extends core::Object implements self::B {
   synthetic constructor •() → self::C*
     : super core::Object::•()
     ;
   abstract method foo(covariant core::int* x) → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class D1 extends core::Object implements self::A, self::C, self::B {
   synthetic constructor •() → self::D1*
     : super core::Object::•()
     ;
   abstract method foo(covariant core::int* x) → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D2 extends core::Object implements self::A, self::C, self::B {
   synthetic constructor •() → self::D2*
     : super core::Object::•()
     ;
   method foo(covariant core::int* x) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class D3 extends core::Object implements self::A, self::C, self::B {
   synthetic constructor •() → self::D3*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
   abstract forwarding-stub method foo(covariant core::num* x) → void;
 }
 abstract class D4 extends core::Object implements self::A, self::C, self::B {
@@ -42,41 +102,111 @@
     : super core::Object::•()
     ;
   abstract method foo(covariant core::int* x) → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class D5 extends core::Object implements self::A, self::C, self::B {
   synthetic constructor •() → self::D5*
     : super core::Object::•()
     ;
   abstract method foo(covariant core::num* x) → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class E extends core::Object {
   synthetic constructor •() → self::E*
     : super core::Object::•()
     ;
   abstract set foo(core::num* x) → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class G extends core::Object implements self::E {
   synthetic constructor •() → self::G*
     : super core::Object::•()
     ;
   abstract set foo(covariant core::int* x) → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class H1 extends core::Object implements self::A, self::E, self::G {
   synthetic constructor •() → self::H1*
     : super core::Object::•()
     ;
   abstract set foo(covariant core::int* x) → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class H2 extends core::Object implements self::A, self::E, self::G {
   synthetic constructor •() → self::H2*
     : super core::Object::•()
     ;
   set foo(covariant core::int* x) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class H3 extends core::Object implements self::A, self::E, self::G {
   synthetic constructor •() → self::H3*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
   abstract forwarding-stub set foo(covariant core::num* x) → void;
 }
 abstract class H4 extends core::Object implements self::A, self::E, self::G {
@@ -84,11 +214,31 @@
     : super core::Object::•()
     ;
   abstract set foo(covariant core::int* x) → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class H5 extends core::Object implements self::A, self::E, self::G {
   synthetic constructor •() → self::H5*
     : super core::Object::•()
     ;
   abstract set foo(covariant core::num* x) → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/issue129167943.dart.weak.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/issue129167943.dart.weak.transformed.expect
index e6ff2a3..40d8856 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/issue129167943.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/issue129167943.dart.weak.transformed.expect
@@ -6,35 +6,95 @@
   synthetic constructor •() → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class B extends core::Object {
   synthetic constructor •() → self::B*
     : super core::Object::•()
     ;
   abstract method foo(core::num* x) → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class C extends core::Object implements self::B {
   synthetic constructor •() → self::C*
     : super core::Object::•()
     ;
   abstract method foo(covariant core::int* x) → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class D1 extends core::Object implements self::A, self::C, self::B {
   synthetic constructor •() → self::D1*
     : super core::Object::•()
     ;
   abstract method foo(covariant core::int* x) → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D2 extends core::Object implements self::A, self::C, self::B {
   synthetic constructor •() → self::D2*
     : super core::Object::•()
     ;
   method foo(covariant core::int* x) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class D3 extends core::Object implements self::A, self::C, self::B {
   synthetic constructor •() → self::D3*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
   abstract forwarding-stub method foo(covariant core::num* x) → void;
 }
 abstract class D4 extends core::Object implements self::A, self::C, self::B {
@@ -42,41 +102,111 @@
     : super core::Object::•()
     ;
   abstract method foo(covariant core::int* x) → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class D5 extends core::Object implements self::A, self::C, self::B {
   synthetic constructor •() → self::D5*
     : super core::Object::•()
     ;
   abstract method foo(covariant core::num* x) → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class E extends core::Object {
   synthetic constructor •() → self::E*
     : super core::Object::•()
     ;
   abstract set foo(core::num* x) → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class G extends core::Object implements self::E {
   synthetic constructor •() → self::G*
     : super core::Object::•()
     ;
   abstract set foo(covariant core::int* x) → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class H1 extends core::Object implements self::A, self::E, self::G {
   synthetic constructor •() → self::H1*
     : super core::Object::•()
     ;
   abstract set foo(covariant core::int* x) → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class H2 extends core::Object implements self::A, self::E, self::G {
   synthetic constructor •() → self::H2*
     : super core::Object::•()
     ;
   set foo(covariant core::int* x) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class H3 extends core::Object implements self::A, self::E, self::G {
   synthetic constructor •() → self::H3*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
   abstract forwarding-stub set foo(covariant core::num* x) → void;
 }
 abstract class H4 extends core::Object implements self::A, self::E, self::G {
@@ -84,11 +214,31 @@
     : super core::Object::•()
     ;
   abstract set foo(covariant core::int* x) → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class H5 extends core::Object implements self::A, self::E, self::G {
   synthetic constructor •() → self::H5*
     : super core::Object::•()
     ;
   abstract set foo(covariant core::num* x) → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/issue34515.dart.outline.expect b/pkg/front_end/testcases/general_nnbd_opt_out/issue34515.dart.outline.expect
index be30f41..80f2491 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/issue34515.dart.outline.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/issue34515.dart.outline.expect
@@ -16,6 +16,16 @@
 class ImportedClass extends core::Object {
   constructor •(core::int* a) → self2::ImportedClass*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 
 library;
@@ -25,4 +35,14 @@
 class ImportedClass extends core::Object {
   constructor •(core::String* a) → self3::ImportedClass*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/issue34515.dart.strong.expect b/pkg/front_end/testcases/general_nnbd_opt_out/issue34515.dart.strong.expect
index 036c832..ae54320 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/issue34515.dart.strong.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/issue34515.dart.strong.expect
@@ -34,6 +34,16 @@
   constructor •(core::int* a) → self2::ImportedClass*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 
 library;
@@ -44,4 +54,14 @@
   constructor •(core::String* a) → self3::ImportedClass*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/issue34515.dart.strong.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/issue34515.dart.strong.transformed.expect
index 036c832..ae54320 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/issue34515.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/issue34515.dart.strong.transformed.expect
@@ -34,6 +34,16 @@
   constructor •(core::int* a) → self2::ImportedClass*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 
 library;
@@ -44,4 +54,14 @@
   constructor •(core::String* a) → self3::ImportedClass*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/issue34515.dart.weak.expect b/pkg/front_end/testcases/general_nnbd_opt_out/issue34515.dart.weak.expect
index 036c832..ae54320 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/issue34515.dart.weak.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/issue34515.dart.weak.expect
@@ -34,6 +34,16 @@
   constructor •(core::int* a) → self2::ImportedClass*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 
 library;
@@ -44,4 +54,14 @@
   constructor •(core::String* a) → self3::ImportedClass*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/issue34515.dart.weak.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/issue34515.dart.weak.transformed.expect
index 036c832..ae54320 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/issue34515.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/issue34515.dart.weak.transformed.expect
@@ -34,6 +34,16 @@
   constructor •(core::int* a) → self2::ImportedClass*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 
 library;
@@ -44,4 +54,14 @@
   constructor •(core::String* a) → self3::ImportedClass*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/issue34899.dart.outline.expect b/pkg/front_end/testcases/general_nnbd_opt_out/issue34899.dart.outline.expect
index be475a6..b7a3e15 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/issue34899.dart.outline.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/issue34899.dart.outline.expect
@@ -10,6 +10,16 @@
     ;
   method call() → asy::Future<self::Foo::T*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Bar extends core::Object {
   field self::Foo<self::Baz*>* qux;
@@ -21,14 +31,44 @@
     ;
   method garply(self::Grault* grault) → void
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Baz extends core::Object {
   synthetic constructor •() → self::Baz*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Grault extends core::Object {
   synthetic constructor •() → self::Grault*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/issue34899.dart.strong.expect b/pkg/front_end/testcases/general_nnbd_opt_out/issue34899.dart.strong.expect
index 7cc9e09..a2f1518 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/issue34899.dart.strong.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/issue34899.dart.strong.expect
@@ -11,6 +11,16 @@
     ;
   method call() → asy::Future<self::Foo::T*>*
     return this.{self::Foo::quux}.call().{asy::Future::then}<self::Foo::T*>((dynamic _) → self::Foo::T* => this.{self::Foo::t});
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Bar extends core::Object {
   field self::Foo<self::Baz*>* qux = null;
@@ -22,15 +32,45 @@
   method corge(self::Baz* baz) → self::Grault*
     return null;
   method garply(self::Grault* grault) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Baz extends core::Object {
   synthetic constructor •() → self::Baz*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Grault extends core::Object {
   synthetic constructor •() → self::Grault*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/issue34899.dart.strong.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/issue34899.dart.strong.transformed.expect
index 7cc9e09..a2f1518 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/issue34899.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/issue34899.dart.strong.transformed.expect
@@ -11,6 +11,16 @@
     ;
   method call() → asy::Future<self::Foo::T*>*
     return this.{self::Foo::quux}.call().{asy::Future::then}<self::Foo::T*>((dynamic _) → self::Foo::T* => this.{self::Foo::t});
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Bar extends core::Object {
   field self::Foo<self::Baz*>* qux = null;
@@ -22,15 +32,45 @@
   method corge(self::Baz* baz) → self::Grault*
     return null;
   method garply(self::Grault* grault) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Baz extends core::Object {
   synthetic constructor •() → self::Baz*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Grault extends core::Object {
   synthetic constructor •() → self::Grault*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/issue34899.dart.weak.expect b/pkg/front_end/testcases/general_nnbd_opt_out/issue34899.dart.weak.expect
index 7cc9e09..a2f1518 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/issue34899.dart.weak.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/issue34899.dart.weak.expect
@@ -11,6 +11,16 @@
     ;
   method call() → asy::Future<self::Foo::T*>*
     return this.{self::Foo::quux}.call().{asy::Future::then}<self::Foo::T*>((dynamic _) → self::Foo::T* => this.{self::Foo::t});
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Bar extends core::Object {
   field self::Foo<self::Baz*>* qux = null;
@@ -22,15 +32,45 @@
   method corge(self::Baz* baz) → self::Grault*
     return null;
   method garply(self::Grault* grault) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Baz extends core::Object {
   synthetic constructor •() → self::Baz*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Grault extends core::Object {
   synthetic constructor •() → self::Grault*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/issue34899.dart.weak.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/issue34899.dart.weak.transformed.expect
index 7cc9e09..a2f1518 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/issue34899.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/issue34899.dart.weak.transformed.expect
@@ -11,6 +11,16 @@
     ;
   method call() → asy::Future<self::Foo::T*>*
     return this.{self::Foo::quux}.call().{asy::Future::then}<self::Foo::T*>((dynamic _) → self::Foo::T* => this.{self::Foo::t});
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Bar extends core::Object {
   field self::Foo<self::Baz*>* qux = null;
@@ -22,15 +32,45 @@
   method corge(self::Baz* baz) → self::Grault*
     return null;
   method garply(self::Grault* grault) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Baz extends core::Object {
   synthetic constructor •() → self::Baz*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Grault extends core::Object {
   synthetic constructor •() → self::Grault*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/issue35875.dart.outline.expect b/pkg/front_end/testcases/general_nnbd_opt_out/issue35875.dart.outline.expect
index 224a7b4..ec8d853 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/issue35875.dart.outline.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/issue35875.dart.outline.expect
@@ -6,6 +6,16 @@
   field core::int* a;
   constructor •(core::int* a) → self::A*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/issue35875.dart.strong.expect b/pkg/front_end/testcases/general_nnbd_opt_out/issue35875.dart.strong.expect
index 5d3fe2e..334e022 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/issue35875.dart.strong.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/issue35875.dart.strong.expect
@@ -8,5 +8,15 @@
     : super core::Object::•() {
     this.{self::A::a} = a;
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/issue35875.dart.strong.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/issue35875.dart.strong.transformed.expect
index 5d3fe2e..334e022 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/issue35875.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/issue35875.dart.strong.transformed.expect
@@ -8,5 +8,15 @@
     : super core::Object::•() {
     this.{self::A::a} = a;
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/issue35875.dart.weak.expect b/pkg/front_end/testcases/general_nnbd_opt_out/issue35875.dart.weak.expect
index 5d3fe2e..334e022 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/issue35875.dart.weak.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/issue35875.dart.weak.expect
@@ -8,5 +8,15 @@
     : super core::Object::•() {
     this.{self::A::a} = a;
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/issue35875.dart.weak.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/issue35875.dart.weak.transformed.expect
index 5d3fe2e..334e022 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/issue35875.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/issue35875.dart.weak.transformed.expect
@@ -8,5 +8,15 @@
     : super core::Object::•() {
     this.{self::A::a} = a;
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/issue37027.dart.outline.expect b/pkg/front_end/testcases/general_nnbd_opt_out/issue37027.dart.outline.expect
index 27ec492..1885c8b 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/issue37027.dart.outline.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/issue37027.dart.outline.expect
@@ -6,6 +6,16 @@
   final field core::Set<core::int*>* s;
   constructor •(core::List<core::int*>* ell) → self::C*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/issue37027.dart.strong.expect b/pkg/front_end/testcases/general_nnbd_opt_out/issue37027.dart.strong.expect
index 4789444..75ead33 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/issue37027.dart.strong.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/issue37027.dart.strong.expect
@@ -13,5 +13,15 @@
           #t1.{core::Set::add}(2.{core::num::*}(e));
     } =>#t1, super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/issue37027.dart.strong.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/issue37027.dart.strong.transformed.expect
index 342575d..9c0061a 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/issue37027.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/issue37027.dart.strong.transformed.expect
@@ -18,5 +18,15 @@
       }
     } =>#t1, super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/issue37027.dart.weak.expect b/pkg/front_end/testcases/general_nnbd_opt_out/issue37027.dart.weak.expect
index 4789444..75ead33 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/issue37027.dart.weak.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/issue37027.dart.weak.expect
@@ -13,5 +13,15 @@
           #t1.{core::Set::add}(2.{core::num::*}(e));
     } =>#t1, super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/issue37027.dart.weak.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/issue37027.dart.weak.transformed.expect
index 342575d..9c0061a 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/issue37027.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/issue37027.dart.weak.transformed.expect
@@ -18,5 +18,15 @@
       }
     } =>#t1, super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/issue37381.dart.outline.expect b/pkg/front_end/testcases/general_nnbd_opt_out/issue37381.dart.outline.expect
index e0704ac..9b4f25f 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/issue37381.dart.outline.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/issue37381.dart.outline.expect
@@ -7,6 +7,16 @@
     ;
   method f<R extends core::Object* = dynamic>(<X extends core::Object* = dynamic>(self::A<X*>*) →* self::A::f::R* f) → self::A::f::R*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/issue37381.dart.strong.expect b/pkg/front_end/testcases/general_nnbd_opt_out/issue37381.dart.strong.expect
index b5d19ed..a3150b8 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/issue37381.dart.strong.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/issue37381.dart.strong.expect
@@ -8,6 +8,16 @@
     ;
   method f<R extends core::Object* = dynamic>(<X extends core::Object* = dynamic>(self::A<X*>*) →* self::A::f::R* f) → self::A::f::R*
     return f.call<self::A::X*>(this);
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   self::A<core::num*>* a = new self::A::•<core::int*>();
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/issue37381.dart.strong.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/issue37381.dart.strong.transformed.expect
index b5d19ed..a3150b8 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/issue37381.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/issue37381.dart.strong.transformed.expect
@@ -8,6 +8,16 @@
     ;
   method f<R extends core::Object* = dynamic>(<X extends core::Object* = dynamic>(self::A<X*>*) →* self::A::f::R* f) → self::A::f::R*
     return f.call<self::A::X*>(this);
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   self::A<core::num*>* a = new self::A::•<core::int*>();
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/issue37381.dart.weak.expect b/pkg/front_end/testcases/general_nnbd_opt_out/issue37381.dart.weak.expect
index b5d19ed..a3150b8 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/issue37381.dart.weak.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/issue37381.dart.weak.expect
@@ -8,6 +8,16 @@
     ;
   method f<R extends core::Object* = dynamic>(<X extends core::Object* = dynamic>(self::A<X*>*) →* self::A::f::R* f) → self::A::f::R*
     return f.call<self::A::X*>(this);
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   self::A<core::num*>* a = new self::A::•<core::int*>();
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/issue37381.dart.weak.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/issue37381.dart.weak.transformed.expect
index b5d19ed..a3150b8 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/issue37381.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/issue37381.dart.weak.transformed.expect
@@ -8,6 +8,16 @@
     ;
   method f<R extends core::Object* = dynamic>(<X extends core::Object* = dynamic>(self::A<X*>*) →* self::A::f::R* f) → self::A::f::R*
     return f.call<self::A::X*>(this);
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   self::A<core::num*>* a = new self::A::•<core::int*>();
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/issue37776.dart.outline.expect b/pkg/front_end/testcases/general_nnbd_opt_out/issue37776.dart.outline.expect
index 458f1a0..546aa3c 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/issue37776.dart.outline.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/issue37776.dart.outline.expect
@@ -16,11 +16,31 @@
   const constructor foo() → self::X#1*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class X extends core::Object /*hasConstConstructor*/  {
   const constructor foo() → self::X*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → void
   ;
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/issue37776.dart.strong.expect b/pkg/front_end/testcases/general_nnbd_opt_out/issue37776.dart.strong.expect
index ed380d1..7d8af2c 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/issue37776.dart.strong.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/issue37776.dart.strong.expect
@@ -20,11 +20,31 @@
   const constructor foo() → self::X#1*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class X extends core::Object /*hasConstConstructor*/  {
   const constructor foo() → self::X*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → void {
   invalid-expression "pkg/front_end/testcases/general_nnbd_opt_out/issue37776.dart:18:9: Error: Method not found: 'X.foo'.
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/issue37776.dart.strong.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/issue37776.dart.strong.transformed.expect
index ed380d1..7d8af2c 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/issue37776.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/issue37776.dart.strong.transformed.expect
@@ -20,11 +20,31 @@
   const constructor foo() → self::X#1*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class X extends core::Object /*hasConstConstructor*/  {
   const constructor foo() → self::X*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → void {
   invalid-expression "pkg/front_end/testcases/general_nnbd_opt_out/issue37776.dart:18:9: Error: Method not found: 'X.foo'.
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/issue37776.dart.weak.expect b/pkg/front_end/testcases/general_nnbd_opt_out/issue37776.dart.weak.expect
index ed380d1..7d8af2c 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/issue37776.dart.weak.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/issue37776.dart.weak.expect
@@ -20,11 +20,31 @@
   const constructor foo() → self::X#1*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class X extends core::Object /*hasConstConstructor*/  {
   const constructor foo() → self::X*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → void {
   invalid-expression "pkg/front_end/testcases/general_nnbd_opt_out/issue37776.dart:18:9: Error: Method not found: 'X.foo'.
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/issue37776.dart.weak.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/issue37776.dart.weak.transformed.expect
index ed380d1..7d8af2c 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/issue37776.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/issue37776.dart.weak.transformed.expect
@@ -20,11 +20,31 @@
   const constructor foo() → self::X#1*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class X extends core::Object /*hasConstConstructor*/  {
   const constructor foo() → self::X*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → void {
   invalid-expression "pkg/front_end/testcases/general_nnbd_opt_out/issue37776.dart:18:9: Error: Method not found: 'X.foo'.
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/issue38812.dart.outline.expect b/pkg/front_end/testcases/general_nnbd_opt_out/issue38812.dart.outline.expect
index e3d6405..6e90626 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/issue38812.dart.outline.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/issue38812.dart.outline.expect
@@ -6,6 +6,16 @@
 class A<X extends () →* void = () →* void, Y extends () →* void = () →* void> extends core::Object {
   synthetic constructor •() → self::A<self::A::X*, self::A::Y*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/issue38812.dart.strong.expect b/pkg/front_end/testcases/general_nnbd_opt_out/issue38812.dart.strong.expect
index 638ba06..5d189a1 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/issue38812.dart.strong.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/issue38812.dart.strong.expect
@@ -7,6 +7,16 @@
   synthetic constructor •() → self::A<self::A::X*, self::A::Y*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   new self::A::•<() →* void, () →* void>();
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/issue38812.dart.strong.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/issue38812.dart.strong.transformed.expect
index 638ba06..5d189a1 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/issue38812.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/issue38812.dart.strong.transformed.expect
@@ -7,6 +7,16 @@
   synthetic constructor •() → self::A<self::A::X*, self::A::Y*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   new self::A::•<() →* void, () →* void>();
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/issue38812.dart.weak.expect b/pkg/front_end/testcases/general_nnbd_opt_out/issue38812.dart.weak.expect
index 638ba06..5d189a1 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/issue38812.dart.weak.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/issue38812.dart.weak.expect
@@ -7,6 +7,16 @@
   synthetic constructor •() → self::A<self::A::X*, self::A::Y*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   new self::A::•<() →* void, () →* void>();
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/issue38812.dart.weak.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/issue38812.dart.weak.transformed.expect
index 638ba06..5d189a1 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/issue38812.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/issue38812.dart.weak.transformed.expect
@@ -7,6 +7,16 @@
   synthetic constructor •() → self::A<self::A::X*, self::A::Y*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   new self::A::•<() →* void, () →* void>();
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/issue38938.dart.outline.expect b/pkg/front_end/testcases/general_nnbd_opt_out/issue38938.dart.outline.expect
index ee81cc9..b4d8987 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/issue38938.dart.outline.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/issue38938.dart.outline.expect
@@ -18,4 +18,14 @@
     ;
   constructor second() → self::A*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/issue38938.dart.strong.expect b/pkg/front_end/testcases/general_nnbd_opt_out/issue38938.dart.strong.expect
index a14df7d..14431ab 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/issue38938.dart.strong.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/issue38938.dart.strong.expect
@@ -26,4 +26,14 @@
   constructor second() → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/issue38938.dart.strong.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/issue38938.dart.strong.transformed.expect
index a14df7d..14431ab 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/issue38938.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/issue38938.dart.strong.transformed.expect
@@ -26,4 +26,14 @@
   constructor second() → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/issue38938.dart.weak.expect b/pkg/front_end/testcases/general_nnbd_opt_out/issue38938.dart.weak.expect
index a14df7d..14431ab 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/issue38938.dart.weak.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/issue38938.dart.weak.expect
@@ -26,4 +26,14 @@
   constructor second() → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/issue38938.dart.weak.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/issue38938.dart.weak.transformed.expect
index a14df7d..14431ab 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/issue38938.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/issue38938.dart.weak.transformed.expect
@@ -26,4 +26,14 @@
   constructor second() → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/issue38943.dart.outline.expect b/pkg/front_end/testcases/general_nnbd_opt_out/issue38943.dart.outline.expect
index c625b56..992b0b5 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/issue38943.dart.outline.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/issue38943.dart.outline.expect
@@ -7,6 +7,16 @@
     ;
   static factory foo<X extends () →* void = dynamic>() → self::D<self::D::foo::X*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/issue38943.dart.strong.expect b/pkg/front_end/testcases/general_nnbd_opt_out/issue38943.dart.strong.expect
index 94d489d..db4b5e2 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/issue38943.dart.strong.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/issue38943.dart.strong.expect
@@ -7,6 +7,16 @@
     : super core::Object::•() {}
   static factory foo<X extends () →* void = dynamic>() → self::D<self::D::foo::X*>*
     return new self::D::_<self::D::foo::X*>();
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   core::print(self::D::foo<() →* void>());
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/issue38943.dart.strong.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/issue38943.dart.strong.transformed.expect
index 94d489d..db4b5e2 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/issue38943.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/issue38943.dart.strong.transformed.expect
@@ -7,6 +7,16 @@
     : super core::Object::•() {}
   static factory foo<X extends () →* void = dynamic>() → self::D<self::D::foo::X*>*
     return new self::D::_<self::D::foo::X*>();
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   core::print(self::D::foo<() →* void>());
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/issue38943.dart.weak.expect b/pkg/front_end/testcases/general_nnbd_opt_out/issue38943.dart.weak.expect
index 94d489d..db4b5e2 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/issue38943.dart.weak.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/issue38943.dart.weak.expect
@@ -7,6 +7,16 @@
     : super core::Object::•() {}
   static factory foo<X extends () →* void = dynamic>() → self::D<self::D::foo::X*>*
     return new self::D::_<self::D::foo::X*>();
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   core::print(self::D::foo<() →* void>());
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/issue38943.dart.weak.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/issue38943.dart.weak.transformed.expect
index 94d489d..db4b5e2 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/issue38943.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/issue38943.dart.weak.transformed.expect
@@ -7,6 +7,16 @@
     : super core::Object::•() {}
   static factory foo<X extends () →* void = dynamic>() → self::D<self::D::foo::X*>*
     return new self::D::_<self::D::foo::X*>();
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   core::print(self::D::foo<() →* void>());
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/issue38944.dart.outline.expect b/pkg/front_end/testcases/general_nnbd_opt_out/issue38944.dart.outline.expect
index bb1a2fb..df82a23 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/issue38944.dart.outline.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/issue38944.dart.outline.expect
@@ -12,11 +12,31 @@
 class A<Q extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::A<self::A::Q*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class _B&Object&A<X extends core::Object* = dynamic> extends core::Object /*isAnonymousMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::_B&Object&A<self::_B&Object&A::X*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B<X extends core::Object* = dynamic> extends self::_B&Object&A<self::B::X*> {
   synthetic constructor •() → self::B<self::B::X*>*
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/issue38944.dart.strong.expect b/pkg/front_end/testcases/general_nnbd_opt_out/issue38944.dart.strong.expect
index 8098e01..f1734d9 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/issue38944.dart.strong.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/issue38944.dart.strong.expect
@@ -13,11 +13,31 @@
   synthetic constructor •() → self::A<self::A::Q*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class _B&Object&A<X extends core::Object* = dynamic> extends core::Object /*isAnonymousMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::_B&Object&A<self::_B&Object&A::X*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B<X extends core::Object* = dynamic> extends self::_B&Object&A<self::B::X*> {
   synthetic constructor •() → self::B<self::B::X*>*
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/issue38944.dart.strong.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/issue38944.dart.strong.transformed.expect
index 8098e01..f1734d9 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/issue38944.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/issue38944.dart.strong.transformed.expect
@@ -13,11 +13,31 @@
   synthetic constructor •() → self::A<self::A::Q*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class _B&Object&A<X extends core::Object* = dynamic> extends core::Object /*isAnonymousMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::_B&Object&A<self::_B&Object&A::X*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B<X extends core::Object* = dynamic> extends self::_B&Object&A<self::B::X*> {
   synthetic constructor •() → self::B<self::B::X*>*
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/issue38944.dart.weak.expect b/pkg/front_end/testcases/general_nnbd_opt_out/issue38944.dart.weak.expect
index 8098e01..f1734d9 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/issue38944.dart.weak.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/issue38944.dart.weak.expect
@@ -13,11 +13,31 @@
   synthetic constructor •() → self::A<self::A::Q*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class _B&Object&A<X extends core::Object* = dynamic> extends core::Object /*isAnonymousMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::_B&Object&A<self::_B&Object&A::X*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B<X extends core::Object* = dynamic> extends self::_B&Object&A<self::B::X*> {
   synthetic constructor •() → self::B<self::B::X*>*
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/issue38944.dart.weak.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/issue38944.dart.weak.transformed.expect
index 8098e01..f1734d9 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/issue38944.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/issue38944.dart.weak.transformed.expect
@@ -13,11 +13,31 @@
   synthetic constructor •() → self::A<self::A::Q*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class _B&Object&A<X extends core::Object* = dynamic> extends core::Object /*isAnonymousMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::_B&Object&A<self::_B&Object&A::X*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B<X extends core::Object* = dynamic> extends self::_B&Object&A<self::B::X*> {
   synthetic constructor •() → self::B<self::B::X*>*
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/issue38961.dart.outline.expect b/pkg/front_end/testcases/general_nnbd_opt_out/issue38961.dart.outline.expect
index aac2207..eccd368 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/issue38961.dart.outline.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/issue38961.dart.outline.expect
@@ -16,4 +16,14 @@
   field dynamic x;
   synthetic constructor •() → self::C*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/issue38961.dart.strong.expect b/pkg/front_end/testcases/general_nnbd_opt_out/issue38961.dart.strong.expect
index 7dff72a..75a4e05 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/issue38961.dart.strong.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/issue38961.dart.strong.expect
@@ -25,4 +25,14 @@
   synthetic constructor •() → self::C*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/issue38961.dart.strong.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/issue38961.dart.strong.transformed.expect
index 7dff72a..75a4e05 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/issue38961.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/issue38961.dart.strong.transformed.expect
@@ -25,4 +25,14 @@
   synthetic constructor •() → self::C*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/issue38961.dart.weak.expect b/pkg/front_end/testcases/general_nnbd_opt_out/issue38961.dart.weak.expect
index 7dff72a..75a4e05 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/issue38961.dart.weak.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/issue38961.dart.weak.expect
@@ -25,4 +25,14 @@
   synthetic constructor •() → self::C*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/issue38961.dart.weak.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/issue38961.dart.weak.transformed.expect
index 7dff72a..75a4e05 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/issue38961.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/issue38961.dart.weak.transformed.expect
@@ -25,4 +25,14 @@
   synthetic constructor •() → self::C*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/issue39344.dart.outline.expect b/pkg/front_end/testcases/general_nnbd_opt_out/issue39344.dart.outline.expect
index 18fa4de..c4d269c 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/issue39344.dart.outline.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/issue39344.dart.outline.expect
@@ -5,6 +5,16 @@
 class A extends core::Object {
   synthetic constructor •() → self::A*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A {
   synthetic constructor •() → self::B*
@@ -21,6 +31,16 @@
     ;
   method method2b(generic-covariant-impl self::Class::T* t) → void
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field core::List<self::B*>* xs;
 static field core::List<core::List<self::B*>*>* xss;
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/issue39344.dart.strong.expect b/pkg/front_end/testcases/general_nnbd_opt_out/issue39344.dart.strong.expect
index d362108..086bc34 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/issue39344.dart.strong.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/issue39344.dart.strong.expect
@@ -21,6 +21,16 @@
   synthetic constructor •() → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A {
   synthetic constructor •() → self::B*
@@ -67,6 +77,16 @@
       self::xss = alias as{TypeError,ForDynamic} core::List<core::List<self::B*>*>*;
     }
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field core::List<self::B*>* xs;
 static field core::List<core::List<self::B*>*>* xss;
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/issue39344.dart.strong.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/issue39344.dart.strong.transformed.expect
index d362108..086bc34 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/issue39344.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/issue39344.dart.strong.transformed.expect
@@ -21,6 +21,16 @@
   synthetic constructor •() → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A {
   synthetic constructor •() → self::B*
@@ -67,6 +77,16 @@
       self::xss = alias as{TypeError,ForDynamic} core::List<core::List<self::B*>*>*;
     }
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field core::List<self::B*>* xs;
 static field core::List<core::List<self::B*>*>* xss;
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/issue39344.dart.weak.expect b/pkg/front_end/testcases/general_nnbd_opt_out/issue39344.dart.weak.expect
index d362108..086bc34 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/issue39344.dart.weak.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/issue39344.dart.weak.expect
@@ -21,6 +21,16 @@
   synthetic constructor •() → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A {
   synthetic constructor •() → self::B*
@@ -67,6 +77,16 @@
       self::xss = alias as{TypeError,ForDynamic} core::List<core::List<self::B*>*>*;
     }
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field core::List<self::B*>* xs;
 static field core::List<core::List<self::B*>*>* xss;
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/issue39344.dart.weak.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/issue39344.dart.weak.transformed.expect
index d362108..086bc34 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/issue39344.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/issue39344.dart.weak.transformed.expect
@@ -21,6 +21,16 @@
   synthetic constructor •() → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A {
   synthetic constructor •() → self::B*
@@ -67,6 +77,16 @@
       self::xss = alias as{TypeError,ForDynamic} core::List<core::List<self::B*>*>*;
     }
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field core::List<self::B*>* xs;
 static field core::List<core::List<self::B*>*>* xss;
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/issue39421.dart.outline.expect b/pkg/front_end/testcases/general_nnbd_opt_out/issue39421.dart.outline.expect
index 4a7ea21..961b90b 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/issue39421.dart.outline.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/issue39421.dart.outline.expect
@@ -22,16 +22,46 @@
 class A#1 extends core::Object {
   synthetic constructor •() → self::A#1*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class A extends core::Object {
   synthetic constructor •() → self::A*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends core::Object {
   synthetic constructor •() → self::B*
     ;
   method foo(core::List<core::Null?>* a) → dynamic
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C extends self::B {
   synthetic constructor •() → self::C*
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/issue39421.dart.strong.expect b/pkg/front_end/testcases/general_nnbd_opt_out/issue39421.dart.strong.expect
index 687b222..35ef5c3 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/issue39421.dart.strong.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/issue39421.dart.strong.expect
@@ -27,17 +27,47 @@
   synthetic constructor •() → self::A#1*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class A extends core::Object {
   synthetic constructor •() → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends core::Object {
   synthetic constructor •() → self::B*
     : super core::Object::•()
     ;
   method foo(core::List<core::Null?>* a) → dynamic {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C extends self::B {
   synthetic constructor •() → self::C*
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/issue39421.dart.strong.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/issue39421.dart.strong.transformed.expect
index 687b222..35ef5c3 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/issue39421.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/issue39421.dart.strong.transformed.expect
@@ -27,17 +27,47 @@
   synthetic constructor •() → self::A#1*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class A extends core::Object {
   synthetic constructor •() → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends core::Object {
   synthetic constructor •() → self::B*
     : super core::Object::•()
     ;
   method foo(core::List<core::Null?>* a) → dynamic {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C extends self::B {
   synthetic constructor •() → self::C*
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/issue39421.dart.weak.expect b/pkg/front_end/testcases/general_nnbd_opt_out/issue39421.dart.weak.expect
index 687b222..35ef5c3 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/issue39421.dart.weak.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/issue39421.dart.weak.expect
@@ -27,17 +27,47 @@
   synthetic constructor •() → self::A#1*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class A extends core::Object {
   synthetic constructor •() → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends core::Object {
   synthetic constructor •() → self::B*
     : super core::Object::•()
     ;
   method foo(core::List<core::Null?>* a) → dynamic {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C extends self::B {
   synthetic constructor •() → self::C*
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/issue39421.dart.weak.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/issue39421.dart.weak.transformed.expect
index 687b222..35ef5c3 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/issue39421.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/issue39421.dart.weak.transformed.expect
@@ -27,17 +27,47 @@
   synthetic constructor •() → self::A#1*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class A extends core::Object {
   synthetic constructor •() → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends core::Object {
   synthetic constructor •() → self::B*
     : super core::Object::•()
     ;
   method foo(core::List<core::Null?>* a) → dynamic {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C extends self::B {
   synthetic constructor •() → self::C*
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/magic_const.dart.outline.expect b/pkg/front_end/testcases/general_nnbd_opt_out/magic_const.dart.outline.expect
index 9eab40c..d464a17 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/magic_const.dart.outline.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/magic_const.dart.outline.expect
@@ -6,10 +6,30 @@
   const constructor •() → self::Constant*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class NotConstant extends core::Object {
   synthetic constructor •() → self::NotConstant*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method foo({dynamic a, dynamic b, dynamic c}) → dynamic
   ;
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/magic_const.dart.strong.expect b/pkg/front_end/testcases/general_nnbd_opt_out/magic_const.dart.strong.expect
index 5ded87e..a964179 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/magic_const.dart.strong.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/magic_const.dart.strong.expect
@@ -29,11 +29,31 @@
   const constructor •() → self::Constant*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class NotConstant extends core::Object {
   synthetic constructor •() → self::NotConstant*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method foo({dynamic a = #C1, dynamic b = #C1, dynamic c = invalid-expression "Non-constant list literal"}) → dynamic {}
 static method test() → dynamic {
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/magic_const.dart.strong.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/magic_const.dart.strong.transformed.expect
index 5ded87e..a964179 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/magic_const.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/magic_const.dart.strong.transformed.expect
@@ -29,11 +29,31 @@
   const constructor •() → self::Constant*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class NotConstant extends core::Object {
   synthetic constructor •() → self::NotConstant*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method foo({dynamic a = #C1, dynamic b = #C1, dynamic c = invalid-expression "Non-constant list literal"}) → dynamic {}
 static method test() → dynamic {
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/magic_const.dart.weak.expect b/pkg/front_end/testcases/general_nnbd_opt_out/magic_const.dart.weak.expect
index 5ded87e..a964179 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/magic_const.dart.weak.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/magic_const.dart.weak.expect
@@ -29,11 +29,31 @@
   const constructor •() → self::Constant*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class NotConstant extends core::Object {
   synthetic constructor •() → self::NotConstant*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method foo({dynamic a = #C1, dynamic b = #C1, dynamic c = invalid-expression "Non-constant list literal"}) → dynamic {}
 static method test() → dynamic {
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/magic_const.dart.weak.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/magic_const.dart.weak.transformed.expect
index 5ded87e..a964179 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/magic_const.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/magic_const.dart.weak.transformed.expect
@@ -29,11 +29,31 @@
   const constructor •() → self::Constant*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class NotConstant extends core::Object {
   synthetic constructor •() → self::NotConstant*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method foo({dynamic a = #C1, dynamic b = #C1, dynamic c = invalid-expression "Non-constant list literal"}) → dynamic {}
 static method test() → dynamic {
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/many_errors.dart.outline.expect b/pkg/front_end/testcases/general_nnbd_opt_out/many_errors.dart.outline.expect
index 6d4eac1..c0244ca 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/many_errors.dart.outline.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/many_errors.dart.outline.expect
@@ -40,20 +40,60 @@
   const A.named2() : x = new Object();
                        ^", super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends core::Object {
   synthetic constructor •() → self::B*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C extends core::Object {
   field self::B* b;
   synthetic constructor •() → self::C*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class AbstractClass extends core::Object /*hasConstConstructor*/  {
   const constructor id() → self::AbstractClass*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 external static method foo(core::String* x) → dynamic;
 static method m() → dynamic
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/many_errors.dart.strong.expect b/pkg/front_end/testcases/general_nnbd_opt_out/many_errors.dart.strong.expect
index 39a61d2..0d132af 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/many_errors.dart.strong.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/many_errors.dart.strong.expect
@@ -65,22 +65,62 @@
   const A.named2() : x = new Object();
                        ^", super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends core::Object {
   synthetic constructor •() → self::B*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C extends core::Object {
   field self::B* b = null;
   synthetic constructor •() → self::C*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class AbstractClass extends core::Object /*hasConstConstructor*/  {
   const constructor id() → self::AbstractClass*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 external static method foo(core::String* x) → dynamic {
   invalid-expression "pkg/front_end/testcases/general_nnbd_opt_out/many_errors.dart:15:24: Error: An external or native method can't have a body.
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/many_errors.dart.strong.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/many_errors.dart.strong.transformed.expect
index 39a61d2..0d132af 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/many_errors.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/many_errors.dart.strong.transformed.expect
@@ -65,22 +65,62 @@
   const A.named2() : x = new Object();
                        ^", super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends core::Object {
   synthetic constructor •() → self::B*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C extends core::Object {
   field self::B* b = null;
   synthetic constructor •() → self::C*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class AbstractClass extends core::Object /*hasConstConstructor*/  {
   const constructor id() → self::AbstractClass*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 external static method foo(core::String* x) → dynamic {
   invalid-expression "pkg/front_end/testcases/general_nnbd_opt_out/many_errors.dart:15:24: Error: An external or native method can't have a body.
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/many_errors.dart.weak.expect b/pkg/front_end/testcases/general_nnbd_opt_out/many_errors.dart.weak.expect
index 39a61d2..0d132af 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/many_errors.dart.weak.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/many_errors.dart.weak.expect
@@ -65,22 +65,62 @@
   const A.named2() : x = new Object();
                        ^", super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends core::Object {
   synthetic constructor •() → self::B*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C extends core::Object {
   field self::B* b = null;
   synthetic constructor •() → self::C*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class AbstractClass extends core::Object /*hasConstConstructor*/  {
   const constructor id() → self::AbstractClass*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 external static method foo(core::String* x) → dynamic {
   invalid-expression "pkg/front_end/testcases/general_nnbd_opt_out/many_errors.dart:15:24: Error: An external or native method can't have a body.
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/many_errors.dart.weak.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/many_errors.dart.weak.transformed.expect
index 39a61d2..0d132af 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/many_errors.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/many_errors.dart.weak.transformed.expect
@@ -65,22 +65,62 @@
   const A.named2() : x = new Object();
                        ^", super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends core::Object {
   synthetic constructor •() → self::B*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C extends core::Object {
   field self::B* b = null;
   synthetic constructor •() → self::C*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class AbstractClass extends core::Object /*hasConstConstructor*/  {
   const constructor id() → self::AbstractClass*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 external static method foo(core::String* x) → dynamic {
   invalid-expression "pkg/front_end/testcases/general_nnbd_opt_out/many_errors.dart:15:24: Error: An external or native method can't have a body.
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/metadata_enum.dart.outline.expect b/pkg/front_end/testcases/general_nnbd_opt_out/metadata_enum.dart.outline.expect
index 8944460..f17a1fd 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/metadata_enum.dart.outline.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/metadata_enum.dart.outline.expect
@@ -15,6 +15,15 @@
     ;
   method toString() → core::String*
     return this.{=self::E::_name};
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static const field dynamic a = null;
 static method main() → dynamic
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/metadata_enum.dart.strong.expect b/pkg/front_end/testcases/general_nnbd_opt_out/metadata_enum.dart.strong.expect
index 623dc08..c5b219cb 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/metadata_enum.dart.strong.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/metadata_enum.dart.strong.expect
@@ -15,6 +15,15 @@
     ;
   method toString() → core::String*
     return this.{=self::E::_name};
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static const field dynamic a = #C1;
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/metadata_enum.dart.strong.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/metadata_enum.dart.strong.transformed.expect
index 623dc08..c5b219cb 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/metadata_enum.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/metadata_enum.dart.strong.transformed.expect
@@ -15,6 +15,15 @@
     ;
   method toString() → core::String*
     return this.{=self::E::_name};
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static const field dynamic a = #C1;
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/metadata_enum.dart.weak.expect b/pkg/front_end/testcases/general_nnbd_opt_out/metadata_enum.dart.weak.expect
index 623dc08..c5b219cb 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/metadata_enum.dart.weak.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/metadata_enum.dart.weak.expect
@@ -15,6 +15,15 @@
     ;
   method toString() → core::String*
     return this.{=self::E::_name};
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static const field dynamic a = #C1;
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/metadata_enum.dart.weak.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/metadata_enum.dart.weak.transformed.expect
index 623dc08..c5b219cb 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/metadata_enum.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/metadata_enum.dart.weak.transformed.expect
@@ -15,6 +15,15 @@
     ;
   method toString() → core::String*
     return this.{=self::E::_name};
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static const field dynamic a = #C1;
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/metadata_named_mixin_application.dart.outline.expect b/pkg/front_end/testcases/general_nnbd_opt_out/metadata_named_mixin_application.dart.outline.expect
index a8ac55c..beaa284 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/metadata_named_mixin_application.dart.outline.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/metadata_named_mixin_application.dart.outline.expect
@@ -11,10 +11,30 @@
 class D extends core::Object {
   synthetic constructor •() → self::D*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class E extends core::Object {
   synthetic constructor •() → self::E*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static const field dynamic a = null;
 static method main() → dynamic
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/metadata_named_mixin_application.dart.strong.expect b/pkg/front_end/testcases/general_nnbd_opt_out/metadata_named_mixin_application.dart.strong.expect
index 2e68abd..1a6eedc 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/metadata_named_mixin_application.dart.strong.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/metadata_named_mixin_application.dart.strong.expect
@@ -12,11 +12,31 @@
   synthetic constructor •() → self::D*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class E extends core::Object {
   synthetic constructor •() → self::E*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static const field dynamic a = #C1;
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/metadata_named_mixin_application.dart.strong.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/metadata_named_mixin_application.dart.strong.transformed.expect
index 1b24fb6..8a2258c 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/metadata_named_mixin_application.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/metadata_named_mixin_application.dart.strong.transformed.expect
@@ -7,16 +7,46 @@
   synthetic constructor •() → self::C*
     : super self::D::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D extends core::Object {
   synthetic constructor •() → self::D*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class E extends core::Object {
   synthetic constructor •() → self::E*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static const field dynamic a = #C1;
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/metadata_named_mixin_application.dart.weak.expect b/pkg/front_end/testcases/general_nnbd_opt_out/metadata_named_mixin_application.dart.weak.expect
index 2e68abd..1a6eedc 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/metadata_named_mixin_application.dart.weak.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/metadata_named_mixin_application.dart.weak.expect
@@ -12,11 +12,31 @@
   synthetic constructor •() → self::D*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class E extends core::Object {
   synthetic constructor •() → self::E*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static const field dynamic a = #C1;
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/metadata_named_mixin_application.dart.weak.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/metadata_named_mixin_application.dart.weak.transformed.expect
index 1b24fb6..8a2258c 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/metadata_named_mixin_application.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/metadata_named_mixin_application.dart.weak.transformed.expect
@@ -7,16 +7,46 @@
   synthetic constructor •() → self::C*
     : super self::D::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D extends core::Object {
   synthetic constructor •() → self::D*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class E extends core::Object {
   synthetic constructor •() → self::E*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static const field dynamic a = #C1;
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/micro.dart.outline.expect b/pkg/front_end/testcases/general_nnbd_opt_out/micro.dart.outline.expect
index 25eccc4..110be54 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/micro.dart.outline.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/micro.dart.outline.expect
@@ -7,25 +7,75 @@
     ;
   method instanceMethod() → dynamic
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class ExternalValue extends core::Object {
   synthetic constructor •() → self::ExternalValue*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class Bar extends core::Object {
   synthetic constructor •() → self::Bar*
     ;
   abstract method externalInstanceMethod() → self::ExternalValue*;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Box extends core::Object {
   field dynamic field;
   synthetic constructor •() → self::Box*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class FinalBox extends core::Object {
   final field dynamic finalField;
   constructor •(dynamic finalField) → self::FinalBox*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class SubFinalBox extends self::FinalBox {
   constructor •(dynamic value) → self::SubFinalBox*
@@ -36,12 +86,32 @@
     ;
   method dynamicallyCalled(dynamic x) → dynamic
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class DynamicReceiver2 extends core::Object {
   synthetic constructor •() → self::DynamicReceiver2*
     ;
   method dynamicallyCalled(dynamic x) → dynamic
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method staticMethod() → dynamic
   ;
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/micro.dart.strong.expect b/pkg/front_end/testcases/general_nnbd_opt_out/micro.dart.strong.expect
index 8ee6936..5170680 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/micro.dart.strong.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/micro.dart.strong.expect
@@ -9,29 +9,79 @@
   method instanceMethod() → dynamic {
     return 123;
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class ExternalValue extends core::Object {
   synthetic constructor •() → self::ExternalValue*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class Bar extends core::Object {
   synthetic constructor •() → self::Bar*
     : super core::Object::•()
     ;
   abstract method externalInstanceMethod() → self::ExternalValue*;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Box extends core::Object {
   field dynamic field = null;
   synthetic constructor •() → self::Box*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class FinalBox extends core::Object {
   final field dynamic finalField;
   constructor •(dynamic finalField) → self::FinalBox*
     : self::FinalBox::finalField = finalField, super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class SubFinalBox extends self::FinalBox {
   constructor •(dynamic value) → self::SubFinalBox*
@@ -43,12 +93,32 @@
     : super core::Object::•()
     ;
   method dynamicallyCalled(dynamic x) → dynamic {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class DynamicReceiver2 extends core::Object {
   synthetic constructor •() → self::DynamicReceiver2*
     : super core::Object::•()
     ;
   method dynamicallyCalled(dynamic x) → dynamic {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method staticMethod() → dynamic {
   return "sdfg";
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/micro.dart.strong.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/micro.dart.strong.transformed.expect
index 8ee6936..5170680 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/micro.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/micro.dart.strong.transformed.expect
@@ -9,29 +9,79 @@
   method instanceMethod() → dynamic {
     return 123;
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class ExternalValue extends core::Object {
   synthetic constructor •() → self::ExternalValue*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class Bar extends core::Object {
   synthetic constructor •() → self::Bar*
     : super core::Object::•()
     ;
   abstract method externalInstanceMethod() → self::ExternalValue*;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Box extends core::Object {
   field dynamic field = null;
   synthetic constructor •() → self::Box*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class FinalBox extends core::Object {
   final field dynamic finalField;
   constructor •(dynamic finalField) → self::FinalBox*
     : self::FinalBox::finalField = finalField, super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class SubFinalBox extends self::FinalBox {
   constructor •(dynamic value) → self::SubFinalBox*
@@ -43,12 +93,32 @@
     : super core::Object::•()
     ;
   method dynamicallyCalled(dynamic x) → dynamic {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class DynamicReceiver2 extends core::Object {
   synthetic constructor •() → self::DynamicReceiver2*
     : super core::Object::•()
     ;
   method dynamicallyCalled(dynamic x) → dynamic {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method staticMethod() → dynamic {
   return "sdfg";
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/micro.dart.weak.expect b/pkg/front_end/testcases/general_nnbd_opt_out/micro.dart.weak.expect
index 8ee6936..5170680 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/micro.dart.weak.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/micro.dart.weak.expect
@@ -9,29 +9,79 @@
   method instanceMethod() → dynamic {
     return 123;
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class ExternalValue extends core::Object {
   synthetic constructor •() → self::ExternalValue*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class Bar extends core::Object {
   synthetic constructor •() → self::Bar*
     : super core::Object::•()
     ;
   abstract method externalInstanceMethod() → self::ExternalValue*;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Box extends core::Object {
   field dynamic field = null;
   synthetic constructor •() → self::Box*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class FinalBox extends core::Object {
   final field dynamic finalField;
   constructor •(dynamic finalField) → self::FinalBox*
     : self::FinalBox::finalField = finalField, super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class SubFinalBox extends self::FinalBox {
   constructor •(dynamic value) → self::SubFinalBox*
@@ -43,12 +93,32 @@
     : super core::Object::•()
     ;
   method dynamicallyCalled(dynamic x) → dynamic {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class DynamicReceiver2 extends core::Object {
   synthetic constructor •() → self::DynamicReceiver2*
     : super core::Object::•()
     ;
   method dynamicallyCalled(dynamic x) → dynamic {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method staticMethod() → dynamic {
   return "sdfg";
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/micro.dart.weak.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/micro.dart.weak.transformed.expect
index 8ee6936..5170680 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/micro.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/micro.dart.weak.transformed.expect
@@ -9,29 +9,79 @@
   method instanceMethod() → dynamic {
     return 123;
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class ExternalValue extends core::Object {
   synthetic constructor •() → self::ExternalValue*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class Bar extends core::Object {
   synthetic constructor •() → self::Bar*
     : super core::Object::•()
     ;
   abstract method externalInstanceMethod() → self::ExternalValue*;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Box extends core::Object {
   field dynamic field = null;
   synthetic constructor •() → self::Box*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class FinalBox extends core::Object {
   final field dynamic finalField;
   constructor •(dynamic finalField) → self::FinalBox*
     : self::FinalBox::finalField = finalField, super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class SubFinalBox extends self::FinalBox {
   constructor •(dynamic value) → self::SubFinalBox*
@@ -43,12 +93,32 @@
     : super core::Object::•()
     ;
   method dynamicallyCalled(dynamic x) → dynamic {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class DynamicReceiver2 extends core::Object {
   synthetic constructor •() → self::DynamicReceiver2*
     : super core::Object::•()
     ;
   method dynamicallyCalled(dynamic x) → dynamic {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method staticMethod() → dynamic {
   return "sdfg";
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/missing_constructor.dart.outline.expect b/pkg/front_end/testcases/general_nnbd_opt_out/missing_constructor.dart.outline.expect
index a50e142..49560da 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/missing_constructor.dart.outline.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/missing_constructor.dart.outline.expect
@@ -5,6 +5,16 @@
 class Super extends core::Object {
   constructor _() → self::Super*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Sub extends self::Super {
   constructor •() → self::Sub*
@@ -17,10 +27,30 @@
     ;
   constructor bar() → self::Bad*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class M extends core::Object {
   synthetic constructor •() → self::M*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class _MixinApplication&Super&M = self::Super with self::M /*isAnonymousMixin*/  {
   synthetic constructor _() → self::_MixinApplication&Super&M*
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/missing_constructor.dart.strong.expect b/pkg/front_end/testcases/general_nnbd_opt_out/missing_constructor.dart.strong.expect
index b8ba75b..77e9db9 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/missing_constructor.dart.strong.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/missing_constructor.dart.strong.expect
@@ -33,6 +33,16 @@
   constructor _() → self::Super*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Sub extends self::Super {
   constructor •() → self::Sub*
@@ -57,11 +67,31 @@
   Bad.bar() : this.baz();
               ^^^^"
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class M extends core::Object {
   synthetic constructor •() → self::M*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class _MixinApplication&Super&M = self::Super with self::M /*isAnonymousMixin*/  {
   synthetic constructor _() → self::_MixinApplication&Super&M*
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/missing_constructor.dart.strong.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/missing_constructor.dart.strong.transformed.expect
index f7f4881..6121a14 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/missing_constructor.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/missing_constructor.dart.strong.transformed.expect
@@ -33,6 +33,16 @@
   constructor _() → self::Super*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Sub extends self::Super {
   constructor •() → self::Sub*
@@ -57,16 +67,46 @@
   Bad.bar() : this.baz();
               ^^^^"
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class M extends core::Object {
   synthetic constructor •() → self::M*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class _MixinApplication&Super&M extends self::Super implements self::M /*isAnonymousMixin,isEliminatedMixin*/  {
   synthetic constructor _() → self::_MixinApplication&Super&M*
     : super self::Super::_()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class MixinApplication extends self::_MixinApplication&Super&M {
   constructor •() → self::MixinApplication*
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/missing_constructor.dart.weak.expect b/pkg/front_end/testcases/general_nnbd_opt_out/missing_constructor.dart.weak.expect
index b8ba75b..77e9db9 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/missing_constructor.dart.weak.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/missing_constructor.dart.weak.expect
@@ -33,6 +33,16 @@
   constructor _() → self::Super*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Sub extends self::Super {
   constructor •() → self::Sub*
@@ -57,11 +67,31 @@
   Bad.bar() : this.baz();
               ^^^^"
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class M extends core::Object {
   synthetic constructor •() → self::M*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class _MixinApplication&Super&M = self::Super with self::M /*isAnonymousMixin*/  {
   synthetic constructor _() → self::_MixinApplication&Super&M*
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/missing_constructor.dart.weak.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/missing_constructor.dart.weak.transformed.expect
index f7f4881..6121a14 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/missing_constructor.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/missing_constructor.dart.weak.transformed.expect
@@ -33,6 +33,16 @@
   constructor _() → self::Super*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Sub extends self::Super {
   constructor •() → self::Sub*
@@ -57,16 +67,46 @@
   Bad.bar() : this.baz();
               ^^^^"
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class M extends core::Object {
   synthetic constructor •() → self::M*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class _MixinApplication&Super&M extends self::Super implements self::M /*isAnonymousMixin,isEliminatedMixin*/  {
   synthetic constructor _() → self::_MixinApplication&Super&M*
     : super self::Super::_()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class MixinApplication extends self::_MixinApplication&Super&M {
   constructor •() → self::MixinApplication*
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/missing_toplevel.dart.outline.expect b/pkg/front_end/testcases/general_nnbd_opt_out/missing_toplevel.dart.outline.expect
index cd82bd6..9c2b5d6 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/missing_toplevel.dart.outline.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/missing_toplevel.dart.outline.expect
@@ -5,23 +5,63 @@
 class EmptyClass extends core::Object {
   synthetic constructor •() → self::EmptyClass*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class ClassWithProperty extends core::Object {
   field self::EmptyClass* property;
   synthetic constructor •() → self::ClassWithProperty*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class ClassWithIndexSet extends core::Object {
   synthetic constructor •() → self::ClassWithIndexSet*
     ;
   operator []=(core::int* index, core::int* value) → void
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class ClassWithIndexGet extends core::Object {
   synthetic constructor •() → self::ClassWithIndexGet*
     ;
   operator [](core::int* index) → core::int*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field self::EmptyClass* emptyClass;
 static field self::ClassWithProperty* classWithProperty;
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/missing_toplevel.dart.strong.expect b/pkg/front_end/testcases/general_nnbd_opt_out/missing_toplevel.dart.strong.expect
index fec45f5..1bb64ab 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/missing_toplevel.dart.strong.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/missing_toplevel.dart.strong.expect
@@ -39,18 +39,48 @@
   synthetic constructor •() → self::EmptyClass*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class ClassWithProperty extends core::Object {
   field self::EmptyClass* property = null;
   synthetic constructor •() → self::ClassWithProperty*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class ClassWithIndexSet extends core::Object {
   synthetic constructor •() → self::ClassWithIndexSet*
     : super core::Object::•()
     ;
   operator []=(core::int* index, core::int* value) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class ClassWithIndexGet extends core::Object {
   synthetic constructor •() → self::ClassWithIndexGet*
@@ -58,6 +88,16 @@
     ;
   operator [](core::int* index) → core::int*
     return 42;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field self::EmptyClass* emptyClass = new self::EmptyClass::•();
 static field self::ClassWithProperty* classWithProperty = new self::ClassWithProperty::•();
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/missing_toplevel.dart.strong.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/missing_toplevel.dart.strong.transformed.expect
index fec45f5..1bb64ab 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/missing_toplevel.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/missing_toplevel.dart.strong.transformed.expect
@@ -39,18 +39,48 @@
   synthetic constructor •() → self::EmptyClass*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class ClassWithProperty extends core::Object {
   field self::EmptyClass* property = null;
   synthetic constructor •() → self::ClassWithProperty*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class ClassWithIndexSet extends core::Object {
   synthetic constructor •() → self::ClassWithIndexSet*
     : super core::Object::•()
     ;
   operator []=(core::int* index, core::int* value) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class ClassWithIndexGet extends core::Object {
   synthetic constructor •() → self::ClassWithIndexGet*
@@ -58,6 +88,16 @@
     ;
   operator [](core::int* index) → core::int*
     return 42;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field self::EmptyClass* emptyClass = new self::EmptyClass::•();
 static field self::ClassWithProperty* classWithProperty = new self::ClassWithProperty::•();
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/missing_toplevel.dart.weak.expect b/pkg/front_end/testcases/general_nnbd_opt_out/missing_toplevel.dart.weak.expect
index fec45f5..1bb64ab 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/missing_toplevel.dart.weak.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/missing_toplevel.dart.weak.expect
@@ -39,18 +39,48 @@
   synthetic constructor •() → self::EmptyClass*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class ClassWithProperty extends core::Object {
   field self::EmptyClass* property = null;
   synthetic constructor •() → self::ClassWithProperty*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class ClassWithIndexSet extends core::Object {
   synthetic constructor •() → self::ClassWithIndexSet*
     : super core::Object::•()
     ;
   operator []=(core::int* index, core::int* value) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class ClassWithIndexGet extends core::Object {
   synthetic constructor •() → self::ClassWithIndexGet*
@@ -58,6 +88,16 @@
     ;
   operator [](core::int* index) → core::int*
     return 42;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field self::EmptyClass* emptyClass = new self::EmptyClass::•();
 static field self::ClassWithProperty* classWithProperty = new self::ClassWithProperty::•();
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/missing_toplevel.dart.weak.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/missing_toplevel.dart.weak.transformed.expect
index fec45f5..1bb64ab 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/missing_toplevel.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/missing_toplevel.dart.weak.transformed.expect
@@ -39,18 +39,48 @@
   synthetic constructor •() → self::EmptyClass*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class ClassWithProperty extends core::Object {
   field self::EmptyClass* property = null;
   synthetic constructor •() → self::ClassWithProperty*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class ClassWithIndexSet extends core::Object {
   synthetic constructor •() → self::ClassWithIndexSet*
     : super core::Object::•()
     ;
   operator []=(core::int* index, core::int* value) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class ClassWithIndexGet extends core::Object {
   synthetic constructor •() → self::ClassWithIndexGet*
@@ -58,6 +88,16 @@
     ;
   operator [](core::int* index) → core::int*
     return 42;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field self::EmptyClass* emptyClass = new self::EmptyClass::•();
 static field self::ClassWithProperty* classWithProperty = new self::ClassWithProperty::•();
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/mixin.dart.outline.expect b/pkg/front_end/testcases/general_nnbd_opt_out/mixin.dart.outline.expect
index d4a20e6..9b626ca 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/mixin.dart.outline.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/mixin.dart.outline.expect
@@ -6,6 +6,16 @@
   const synthetic constructor •() → self::_B&Object&M1*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class _B&Object&M1&M2 = self::_B&Object&M1 with self::M2 /*isAnonymousMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::_B&Object&M1&M2*
@@ -21,17 +31,47 @@
     ;
   method m() → dynamic
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class M2 extends core::Object {
   synthetic constructor •() → self::M2*
     ;
   method m() → dynamic
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class _C&Object&M1 = core::Object with self::M1 /*isAnonymousMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::_C&Object&M1*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class _C&Object&M1&M2 = self::_C&Object&M1 with self::M2 /*isAnonymousMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::_C&Object&M1&M2*
@@ -47,11 +87,31 @@
     ;
   method m() → dynamic
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class _D&Object&G1<S extends core::Object* = dynamic> = core::Object with self::G1<self::_D&Object&G1::S*> /*isAnonymousMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::_D&Object&G1<self::_D&Object&G1::S*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D<S extends core::Object* = dynamic> extends self::_D&Object&G1<self::D::S*> {
   synthetic constructor •() → self::D<self::D::S*>*
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/mixin.dart.strong.expect b/pkg/front_end/testcases/general_nnbd_opt_out/mixin.dart.strong.expect
index 5e30f41..1b94412 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/mixin.dart.strong.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/mixin.dart.strong.expect
@@ -6,6 +6,16 @@
   const synthetic constructor •() → self::_B&Object&M1*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class _B&Object&M1&M2 = self::_B&Object&M1 with self::M2 /*isAnonymousMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::_B&Object&M1&M2*
@@ -23,6 +33,16 @@
     ;
   method m() → dynamic
     return core::print("M1");
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class M2 extends core::Object {
   synthetic constructor •() → self::M2*
@@ -30,11 +50,31 @@
     ;
   method m() → dynamic
     return core::print("M2");
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class _C&Object&M1 = core::Object with self::M1 /*isAnonymousMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::_C&Object&M1*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class _C&Object&M1&M2 = self::_C&Object&M1 with self::M2 /*isAnonymousMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::_C&Object&M1&M2*
@@ -52,11 +92,31 @@
     ;
   method m() → dynamic
     return core::print(self::G1::T*);
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class _D&Object&G1<S extends core::Object* = dynamic> = core::Object with self::G1<self::_D&Object&G1::S*> /*isAnonymousMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::_D&Object&G1<self::_D&Object&G1::S*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D<S extends core::Object* = dynamic> extends self::_D&Object&G1<self::D::S*> {
   synthetic constructor •() → self::D<self::D::S*>*
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/mixin.dart.strong.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/mixin.dart.strong.transformed.expect
index 903d96c..d1bb8f5 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/mixin.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/mixin.dart.strong.transformed.expect
@@ -6,6 +6,16 @@
   const synthetic constructor •() → self::_B&Object&M1*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
   method m() → dynamic
     return core::print("M1");
 }
@@ -15,6 +25,16 @@
     ;
   method m() → dynamic
     return core::print("M2");
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::_B&Object&M1&M2 {
   constructor •(dynamic value) → self::B*
@@ -27,6 +47,16 @@
     ;
   method m() → dynamic
     return core::print("M1");
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class M2 extends core::Object {
   synthetic constructor •() → self::M2*
@@ -34,11 +64,31 @@
     ;
   method m() → dynamic
     return core::print("M2");
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class _C&Object&M1 extends core::Object implements self::M1 /*isAnonymousMixin,isEliminatedMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::_C&Object&M1*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
   method m() → dynamic
     return core::print("M1");
 }
@@ -48,6 +98,16 @@
     ;
   method m() → dynamic
     return core::print("M2");
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C extends self::_C&Object&M1&M2 {
   constructor •(dynamic value) → self::C*
@@ -60,11 +120,31 @@
     ;
   method m() → dynamic
     return core::print(self::G1::T*);
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class _D&Object&G1<S extends core::Object* = dynamic> extends core::Object implements self::G1<self::_D&Object&G1::S*> /*isAnonymousMixin,isEliminatedMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::_D&Object&G1<self::_D&Object&G1::S*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
   method m() → dynamic
     return core::print(self::_D&Object&G1::S*);
 }
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/mixin.dart.weak.expect b/pkg/front_end/testcases/general_nnbd_opt_out/mixin.dart.weak.expect
index 5e30f41..1b94412 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/mixin.dart.weak.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/mixin.dart.weak.expect
@@ -6,6 +6,16 @@
   const synthetic constructor •() → self::_B&Object&M1*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class _B&Object&M1&M2 = self::_B&Object&M1 with self::M2 /*isAnonymousMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::_B&Object&M1&M2*
@@ -23,6 +33,16 @@
     ;
   method m() → dynamic
     return core::print("M1");
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class M2 extends core::Object {
   synthetic constructor •() → self::M2*
@@ -30,11 +50,31 @@
     ;
   method m() → dynamic
     return core::print("M2");
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class _C&Object&M1 = core::Object with self::M1 /*isAnonymousMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::_C&Object&M1*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class _C&Object&M1&M2 = self::_C&Object&M1 with self::M2 /*isAnonymousMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::_C&Object&M1&M2*
@@ -52,11 +92,31 @@
     ;
   method m() → dynamic
     return core::print(self::G1::T*);
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class _D&Object&G1<S extends core::Object* = dynamic> = core::Object with self::G1<self::_D&Object&G1::S*> /*isAnonymousMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::_D&Object&G1<self::_D&Object&G1::S*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D<S extends core::Object* = dynamic> extends self::_D&Object&G1<self::D::S*> {
   synthetic constructor •() → self::D<self::D::S*>*
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/mixin.dart.weak.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/mixin.dart.weak.transformed.expect
index 903d96c..d1bb8f5 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/mixin.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/mixin.dart.weak.transformed.expect
@@ -6,6 +6,16 @@
   const synthetic constructor •() → self::_B&Object&M1*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
   method m() → dynamic
     return core::print("M1");
 }
@@ -15,6 +25,16 @@
     ;
   method m() → dynamic
     return core::print("M2");
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::_B&Object&M1&M2 {
   constructor •(dynamic value) → self::B*
@@ -27,6 +47,16 @@
     ;
   method m() → dynamic
     return core::print("M1");
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class M2 extends core::Object {
   synthetic constructor •() → self::M2*
@@ -34,11 +64,31 @@
     ;
   method m() → dynamic
     return core::print("M2");
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class _C&Object&M1 extends core::Object implements self::M1 /*isAnonymousMixin,isEliminatedMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::_C&Object&M1*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
   method m() → dynamic
     return core::print("M1");
 }
@@ -48,6 +98,16 @@
     ;
   method m() → dynamic
     return core::print("M2");
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C extends self::_C&Object&M1&M2 {
   constructor •(dynamic value) → self::C*
@@ -60,11 +120,31 @@
     ;
   method m() → dynamic
     return core::print(self::G1::T*);
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class _D&Object&G1<S extends core::Object* = dynamic> extends core::Object implements self::G1<self::_D&Object&G1::S*> /*isAnonymousMixin,isEliminatedMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::_D&Object&G1<self::_D&Object&G1::S*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
   method m() → dynamic
     return core::print(self::_D&Object&G1::S*);
 }
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/mixin_application_inferred_parameter_type.dart.outline.expect b/pkg/front_end/testcases/general_nnbd_opt_out/mixin_application_inferred_parameter_type.dart.outline.expect
index eb95af0..7463383d 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/mixin_application_inferred_parameter_type.dart.outline.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/mixin_application_inferred_parameter_type.dart.outline.expect
@@ -5,11 +5,31 @@
 class Mixin extends core::Object {
   synthetic constructor •() → self::Mixin*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Super extends core::Object {
   field core::int* field;
   constructor •(core::int* field) → self::Super*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Class = self::Super with self::Mixin {
   synthetic constructor •(core::int* field) → self::Class*
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/mixin_application_inferred_parameter_type.dart.strong.expect b/pkg/front_end/testcases/general_nnbd_opt_out/mixin_application_inferred_parameter_type.dart.strong.expect
index 5f066ca..97cbe30 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/mixin_application_inferred_parameter_type.dart.strong.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/mixin_application_inferred_parameter_type.dart.strong.expect
@@ -13,12 +13,32 @@
   synthetic constructor •() → self::Mixin*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Super extends core::Object {
   field core::int* field = 42;
   constructor •(core::int* field) → self::Super*
     : self::Super::field = field, super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Class = self::Super with self::Mixin {
   synthetic constructor •(core::int* field) → self::Class*
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/mixin_application_inferred_parameter_type.dart.strong.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/mixin_application_inferred_parameter_type.dart.strong.transformed.expect
index b80758f..db08def 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/mixin_application_inferred_parameter_type.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/mixin_application_inferred_parameter_type.dart.strong.transformed.expect
@@ -13,17 +13,47 @@
   synthetic constructor •() → self::Mixin*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Super extends core::Object {
   field core::int* field = 42;
   constructor •(core::int* field) → self::Super*
     : self::Super::field = field, super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Class extends self::Super implements self::Mixin /*isEliminatedMixin*/  {
   synthetic constructor •(core::int* field) → self::Class*
     : super self::Super::•(field)
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   new self::Class::•(0);
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/mixin_application_inferred_parameter_type.dart.weak.expect b/pkg/front_end/testcases/general_nnbd_opt_out/mixin_application_inferred_parameter_type.dart.weak.expect
index 5f066ca..97cbe30 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/mixin_application_inferred_parameter_type.dart.weak.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/mixin_application_inferred_parameter_type.dart.weak.expect
@@ -13,12 +13,32 @@
   synthetic constructor •() → self::Mixin*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Super extends core::Object {
   field core::int* field = 42;
   constructor •(core::int* field) → self::Super*
     : self::Super::field = field, super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Class = self::Super with self::Mixin {
   synthetic constructor •(core::int* field) → self::Class*
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/mixin_application_inferred_parameter_type.dart.weak.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/mixin_application_inferred_parameter_type.dart.weak.transformed.expect
index b80758f..db08def 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/mixin_application_inferred_parameter_type.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/mixin_application_inferred_parameter_type.dart.weak.transformed.expect
@@ -13,17 +13,47 @@
   synthetic constructor •() → self::Mixin*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Super extends core::Object {
   field core::int* field = 42;
   constructor •(core::int* field) → self::Super*
     : self::Super::field = field, super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Class extends self::Super implements self::Mixin /*isEliminatedMixin*/  {
   synthetic constructor •(core::int* field) → self::Class*
     : super self::Super::•(field)
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   new self::Class::•(0);
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/mixin_application_override.dart.outline.expect b/pkg/front_end/testcases/general_nnbd_opt_out/mixin_application_override.dart.outline.expect
index 50c040a..bf6aef5 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/mixin_application_override.dart.outline.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/mixin_application_override.dart.outline.expect
@@ -130,24 +130,74 @@
     ;
   method foo([dynamic x]) → dynamic
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class M extends core::Object {
   synthetic constructor •() → self::M*
     ;
   method foo() → dynamic
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class M1 extends core::Object {
   synthetic constructor •() → self::M1*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class M2 extends core::Object {
   synthetic constructor •() → self::M2*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class MX extends core::Object {
   synthetic constructor •() → self::MX*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class A0 = self::S with self::M {
   synthetic constructor •() → self::A0*
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/mixin_application_override.dart.strong.expect b/pkg/front_end/testcases/general_nnbd_opt_out/mixin_application_override.dart.strong.expect
index 5ccca35..0d8aa6d 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/mixin_application_override.dart.strong.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/mixin_application_override.dart.strong.expect
@@ -130,27 +130,77 @@
     : super core::Object::•()
     ;
   method foo([dynamic x = #C1]) → dynamic {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class M extends core::Object {
   synthetic constructor •() → self::M*
     : super core::Object::•()
     ;
   method foo() → dynamic {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class M1 extends core::Object {
   synthetic constructor •() → self::M1*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class M2 extends core::Object {
   synthetic constructor •() → self::M2*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class MX extends core::Object {
   synthetic constructor •() → self::MX*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class A0 = self::S with self::M {
   synthetic constructor •() → self::A0*
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/mixin_application_override.dart.weak.expect b/pkg/front_end/testcases/general_nnbd_opt_out/mixin_application_override.dart.weak.expect
index 5ccca35..0d8aa6d 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/mixin_application_override.dart.weak.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/mixin_application_override.dart.weak.expect
@@ -130,27 +130,77 @@
     : super core::Object::•()
     ;
   method foo([dynamic x = #C1]) → dynamic {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class M extends core::Object {
   synthetic constructor •() → self::M*
     : super core::Object::•()
     ;
   method foo() → dynamic {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class M1 extends core::Object {
   synthetic constructor •() → self::M1*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class M2 extends core::Object {
   synthetic constructor •() → self::M2*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class MX extends core::Object {
   synthetic constructor •() → self::MX*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class A0 = self::S with self::M {
   synthetic constructor •() → self::A0*
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/mixin_conflicts.dart.outline.expect b/pkg/front_end/testcases/general_nnbd_opt_out/mixin_conflicts.dart.outline.expect
index 2295e57..dbfbae9 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/mixin_conflicts.dart.outline.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/mixin_conflicts.dart.outline.expect
@@ -38,16 +38,46 @@
     ;
   method foo() → dynamic
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class N = core::Object with self::M /*hasConstConstructor*/  {
   const synthetic constructor •() → self::N*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class _C&Object&N = core::Object with self::N /*isAnonymousMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::_C&Object&N*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C extends self::_C&Object&N {
   synthetic constructor •() → self::C*
@@ -58,21 +88,61 @@
     ;
   method bar() → dynamic
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class N2 = core::Object with self::M2 /*hasConstConstructor*/  {
   const synthetic constructor •() → self::N2*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class N3 = core::Object with self::M2 /*hasConstConstructor*/  {
   const synthetic constructor •() → self::N3*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class _C2&Object&M2 = core::Object with self::M2 /*isAnonymousMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::_C2&Object&M2*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C2 extends self::_C2&Object&M2 {
   synthetic constructor •() → self::C2*
@@ -82,6 +152,16 @@
   const synthetic constructor •() → self::_C3&Object&M2*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class C3 extends self::_C3&Object&M2 {
   synthetic constructor •() → self::C3*
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/mixin_conflicts.dart.strong.expect b/pkg/front_end/testcases/general_nnbd_opt_out/mixin_conflicts.dart.strong.expect
index 85c5aad..c8e15f1 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/mixin_conflicts.dart.strong.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/mixin_conflicts.dart.strong.expect
@@ -38,16 +38,46 @@
     : super core::Object::•()
     ;
   method foo() → dynamic {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class N = core::Object with self::M /*hasConstConstructor*/  {
   const synthetic constructor •() → self::N*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class _C&Object&N = core::Object with self::N /*isAnonymousMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::_C&Object&N*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C extends self::_C&Object&N {
   synthetic constructor •() → self::C*
@@ -59,21 +89,61 @@
     : super core::Object::•()
     ;
   method bar() → dynamic {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class N2 = core::Object with self::M2 /*hasConstConstructor*/  {
   const synthetic constructor •() → self::N2*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class N3 = core::Object with self::M2 /*hasConstConstructor*/  {
   const synthetic constructor •() → self::N3*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class _C2&Object&M2 = core::Object with self::M2 /*isAnonymousMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::_C2&Object&M2*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C2 extends self::_C2&Object&M2 {
   synthetic constructor •() → self::C2*
@@ -84,6 +154,16 @@
   const synthetic constructor •() → self::_C3&Object&M2*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class C3 extends self::_C3&Object&M2 {
   synthetic constructor •() → self::C3*
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/mixin_conflicts.dart.strong.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/mixin_conflicts.dart.strong.transformed.expect
index 1162018..5120b52 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/mixin_conflicts.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/mixin_conflicts.dart.strong.transformed.expect
@@ -38,17 +38,47 @@
     : super core::Object::•()
     ;
   method foo() → dynamic {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class N extends core::Object implements self::M /*isEliminatedMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::N*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
   method foo() → dynamic {}
 }
 abstract class _C&Object&N extends core::Object implements self::N /*isAnonymousMixin,isEliminatedMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::_C&Object&N*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
   method foo() → dynamic {}
 }
 class C extends self::_C&Object&N {
@@ -61,23 +91,63 @@
     : super core::Object::•()
     ;
   method bar() → dynamic {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class N2 extends core::Object implements self::M2 /*isEliminatedMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::N2*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
   method bar() → dynamic {}
 }
 abstract class N3 extends core::Object implements self::M2 /*isEliminatedMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::N3*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
   method bar() → dynamic {}
 }
 abstract class _C2&Object&M2 extends core::Object implements self::M2 /*isAnonymousMixin,isEliminatedMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::_C2&Object&M2*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
   method bar() → dynamic {}
 }
 class C2 extends self::_C2&Object&M2 {
@@ -89,6 +159,16 @@
   const synthetic constructor •() → self::_C3&Object&M2*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
   method bar() → dynamic {}
 }
 abstract class C3 extends self::_C3&Object&M2 {
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/mixin_conflicts.dart.weak.expect b/pkg/front_end/testcases/general_nnbd_opt_out/mixin_conflicts.dart.weak.expect
index 85c5aad..c8e15f1 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/mixin_conflicts.dart.weak.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/mixin_conflicts.dart.weak.expect
@@ -38,16 +38,46 @@
     : super core::Object::•()
     ;
   method foo() → dynamic {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class N = core::Object with self::M /*hasConstConstructor*/  {
   const synthetic constructor •() → self::N*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class _C&Object&N = core::Object with self::N /*isAnonymousMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::_C&Object&N*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C extends self::_C&Object&N {
   synthetic constructor •() → self::C*
@@ -59,21 +89,61 @@
     : super core::Object::•()
     ;
   method bar() → dynamic {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class N2 = core::Object with self::M2 /*hasConstConstructor*/  {
   const synthetic constructor •() → self::N2*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class N3 = core::Object with self::M2 /*hasConstConstructor*/  {
   const synthetic constructor •() → self::N3*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class _C2&Object&M2 = core::Object with self::M2 /*isAnonymousMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::_C2&Object&M2*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C2 extends self::_C2&Object&M2 {
   synthetic constructor •() → self::C2*
@@ -84,6 +154,16 @@
   const synthetic constructor •() → self::_C3&Object&M2*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class C3 extends self::_C3&Object&M2 {
   synthetic constructor •() → self::C3*
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/mixin_conflicts.dart.weak.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/mixin_conflicts.dart.weak.transformed.expect
index 1162018..5120b52 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/mixin_conflicts.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/mixin_conflicts.dart.weak.transformed.expect
@@ -38,17 +38,47 @@
     : super core::Object::•()
     ;
   method foo() → dynamic {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class N extends core::Object implements self::M /*isEliminatedMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::N*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
   method foo() → dynamic {}
 }
 abstract class _C&Object&N extends core::Object implements self::N /*isAnonymousMixin,isEliminatedMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::_C&Object&N*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
   method foo() → dynamic {}
 }
 class C extends self::_C&Object&N {
@@ -61,23 +91,63 @@
     : super core::Object::•()
     ;
   method bar() → dynamic {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class N2 extends core::Object implements self::M2 /*isEliminatedMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::N2*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
   method bar() → dynamic {}
 }
 abstract class N3 extends core::Object implements self::M2 /*isEliminatedMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::N3*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
   method bar() → dynamic {}
 }
 abstract class _C2&Object&M2 extends core::Object implements self::M2 /*isAnonymousMixin,isEliminatedMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::_C2&Object&M2*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
   method bar() → dynamic {}
 }
 class C2 extends self::_C2&Object&M2 {
@@ -89,6 +159,16 @@
   const synthetic constructor •() → self::_C3&Object&M2*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
   method bar() → dynamic {}
 }
 abstract class C3 extends self::_C3&Object&M2 {
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/mixin_constructors_with_default_values.dart.outline.expect b/pkg/front_end/testcases/general_nnbd_opt_out/mixin_constructors_with_default_values.dart.outline.expect
index 9c0a4ed..6e2b4d4 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/mixin_constructors_with_default_values.dart.outline.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/mixin_constructors_with_default_values.dart.outline.expect
@@ -8,10 +8,30 @@
   field core::String* trace;
   constructor •({dynamic a, dynamic b}) → self::C<self::C::T*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class M extends core::Object {
   synthetic constructor •() → self::M*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D = self::C<core::String*> with self::M {
   synthetic constructor •({dynamic a, dynamic b}) → self::D*
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/mixin_constructors_with_default_values.dart.strong.expect b/pkg/front_end/testcases/general_nnbd_opt_out/mixin_constructors_with_default_values.dart.strong.expect
index 37d2479..15372d8 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/mixin_constructors_with_default_values.dart.strong.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/mixin_constructors_with_default_values.dart.strong.expect
@@ -23,11 +23,31 @@
   constructor •({dynamic a = #C1, dynamic b = invalid-expression "The type 'T' is not a constant because it depends on a type parameter, only instantiated types are allowed."}) → self::C<self::C::T*>*
     : self::C::trace = "a: ${a}, b: ${b}", super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class M extends core::Object {
   synthetic constructor •() → self::M*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D = self::C<core::String*> with self::M {
   synthetic constructor •({dynamic a = #C1, dynamic b = #C2}) → self::D*
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/mixin_constructors_with_default_values.dart.strong.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/mixin_constructors_with_default_values.dart.strong.transformed.expect
index a3cedca..9e3888b 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/mixin_constructors_with_default_values.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/mixin_constructors_with_default_values.dart.strong.transformed.expect
@@ -23,16 +23,46 @@
   constructor •({dynamic a = #C1, dynamic b = invalid-expression "The type 'T' is not a constant because it depends on a type parameter, only instantiated types are allowed."}) → self::C<self::C::T*>*
     : self::C::trace = "a: ${a}, b: ${b}", super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class M extends core::Object {
   synthetic constructor •() → self::M*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D extends self::C<core::String*> implements self::M /*isEliminatedMixin*/  {
   synthetic constructor •({dynamic a = #C1, dynamic b = #C2}) → self::D*
     : super self::C::•(a: a, b: b)
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class E extends self::D {
   synthetic constructor •() → self::E*
@@ -43,6 +73,16 @@
   synthetic constructor •({dynamic a = #C1, dynamic b = #C3}) → self::_F&C&M*
     : super self::C::•(a: a, b: b)
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class F extends self::_F&C&M {
   synthetic constructor •() → self::F*
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/mixin_constructors_with_default_values.dart.weak.expect b/pkg/front_end/testcases/general_nnbd_opt_out/mixin_constructors_with_default_values.dart.weak.expect
index 37d2479..15372d8 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/mixin_constructors_with_default_values.dart.weak.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/mixin_constructors_with_default_values.dart.weak.expect
@@ -23,11 +23,31 @@
   constructor •({dynamic a = #C1, dynamic b = invalid-expression "The type 'T' is not a constant because it depends on a type parameter, only instantiated types are allowed."}) → self::C<self::C::T*>*
     : self::C::trace = "a: ${a}, b: ${b}", super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class M extends core::Object {
   synthetic constructor •() → self::M*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D = self::C<core::String*> with self::M {
   synthetic constructor •({dynamic a = #C1, dynamic b = #C2}) → self::D*
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/mixin_constructors_with_default_values.dart.weak.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/mixin_constructors_with_default_values.dart.weak.transformed.expect
index a3cedca..9e3888b 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/mixin_constructors_with_default_values.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/mixin_constructors_with_default_values.dart.weak.transformed.expect
@@ -23,16 +23,46 @@
   constructor •({dynamic a = #C1, dynamic b = invalid-expression "The type 'T' is not a constant because it depends on a type parameter, only instantiated types are allowed."}) → self::C<self::C::T*>*
     : self::C::trace = "a: ${a}, b: ${b}", super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class M extends core::Object {
   synthetic constructor •() → self::M*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D extends self::C<core::String*> implements self::M /*isEliminatedMixin*/  {
   synthetic constructor •({dynamic a = #C1, dynamic b = #C2}) → self::D*
     : super self::C::•(a: a, b: b)
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class E extends self::D {
   synthetic constructor •() → self::E*
@@ -43,6 +73,16 @@
   synthetic constructor •({dynamic a = #C1, dynamic b = #C3}) → self::_F&C&M*
     : super self::C::•(a: a, b: b)
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class F extends self::_F&C&M {
   synthetic constructor •() → self::F*
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/mixin_inherited_setter_for_mixed_in_field.dart.outline.expect b/pkg/front_end/testcases/general_nnbd_opt_out/mixin_inherited_setter_for_mixed_in_field.dart.outline.expect
index 3b41508..c3808a7 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/mixin_inherited_setter_for_mixed_in_field.dart.outline.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/mixin_inherited_setter_for_mixed_in_field.dart.outline.expect
@@ -5,6 +5,16 @@
 class A extends core::Object {
   synthetic constructor •() → self::A*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C<T extends self::A* = self::A*> extends core::Object {
   generic-covariant-impl field self::C::T* _field;
@@ -12,6 +22,16 @@
     ;
   method foo(generic-covariant-impl self::C::T* x) → dynamic
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D extends self::C<self::B*> {
   synthetic constructor •() → self::D*
@@ -21,6 +41,16 @@
   synthetic constructor •() → self::_Foo&Object&C*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Foo extends self::_Foo&Object&C {
   synthetic constructor •() → self::Foo*
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/mixin_inherited_setter_for_mixed_in_field.dart.strong.expect b/pkg/front_end/testcases/general_nnbd_opt_out/mixin_inherited_setter_for_mixed_in_field.dart.strong.expect
index 467b3b5..53096f6 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/mixin_inherited_setter_for_mixed_in_field.dart.strong.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/mixin_inherited_setter_for_mixed_in_field.dart.strong.expect
@@ -6,6 +6,16 @@
   synthetic constructor •() → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C<T extends self::A* = self::A*> extends core::Object {
   generic-covariant-impl field self::C::T* _field = null;
@@ -15,6 +25,16 @@
   method foo(generic-covariant-impl self::C::T* x) → dynamic {
     this.{self::C::_field} = x;
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D extends self::C<self::B*> {
   synthetic constructor •() → self::D*
@@ -25,6 +45,16 @@
   synthetic constructor •() → self::_Foo&Object&C*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Foo extends self::_Foo&Object&C {
   synthetic constructor •() → self::Foo*
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/mixin_inherited_setter_for_mixed_in_field.dart.strong.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/mixin_inherited_setter_for_mixed_in_field.dart.strong.transformed.expect
index 6b9150f..9dd9137 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/mixin_inherited_setter_for_mixed_in_field.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/mixin_inherited_setter_for_mixed_in_field.dart.strong.transformed.expect
@@ -6,6 +6,16 @@
   synthetic constructor •() → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C<T extends self::A* = self::A*> extends core::Object {
   generic-covariant-impl field self::C::T* _field = null;
@@ -15,6 +25,16 @@
   method foo(generic-covariant-impl self::C::T* x) → dynamic {
     this.{self::C::_field} = x;
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D extends self::C<self::B*> {
   synthetic constructor •() → self::D*
@@ -26,6 +46,16 @@
   synthetic constructor •() → self::_Foo&Object&C*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
   method foo(generic-covariant-impl self::B* x) → dynamic {
     this.{self::C::_field} = x;
   }
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/mixin_inherited_setter_for_mixed_in_field.dart.weak.expect b/pkg/front_end/testcases/general_nnbd_opt_out/mixin_inherited_setter_for_mixed_in_field.dart.weak.expect
index 467b3b5..53096f6 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/mixin_inherited_setter_for_mixed_in_field.dart.weak.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/mixin_inherited_setter_for_mixed_in_field.dart.weak.expect
@@ -6,6 +6,16 @@
   synthetic constructor •() → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C<T extends self::A* = self::A*> extends core::Object {
   generic-covariant-impl field self::C::T* _field = null;
@@ -15,6 +25,16 @@
   method foo(generic-covariant-impl self::C::T* x) → dynamic {
     this.{self::C::_field} = x;
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D extends self::C<self::B*> {
   synthetic constructor •() → self::D*
@@ -25,6 +45,16 @@
   synthetic constructor •() → self::_Foo&Object&C*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Foo extends self::_Foo&Object&C {
   synthetic constructor •() → self::Foo*
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/mixin_inherited_setter_for_mixed_in_field.dart.weak.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/mixin_inherited_setter_for_mixed_in_field.dart.weak.transformed.expect
index 6b9150f..9dd9137 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/mixin_inherited_setter_for_mixed_in_field.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/mixin_inherited_setter_for_mixed_in_field.dart.weak.transformed.expect
@@ -6,6 +6,16 @@
   synthetic constructor •() → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C<T extends self::A* = self::A*> extends core::Object {
   generic-covariant-impl field self::C::T* _field = null;
@@ -15,6 +25,16 @@
   method foo(generic-covariant-impl self::C::T* x) → dynamic {
     this.{self::C::_field} = x;
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D extends self::C<self::B*> {
   synthetic constructor •() → self::D*
@@ -26,6 +46,16 @@
   synthetic constructor •() → self::_Foo&Object&C*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
   method foo(generic-covariant-impl self::B* x) → dynamic {
     this.{self::C::_field} = x;
   }
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/mixin_super_repeated.dart.outline.expect b/pkg/front_end/testcases/general_nnbd_opt_out/mixin_super_repeated.dart.outline.expect
index 13e9d25..b4b8487 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/mixin_super_repeated.dart.outline.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/mixin_super_repeated.dart.outline.expect
@@ -6,6 +6,16 @@
   field dynamic m;
   synthetic constructor •() → self::M*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class N extends self::M {
   synthetic constructor •() → self::N*
@@ -18,6 +28,16 @@
 class S extends core::Object {
   synthetic constructor •() → self::S*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class _Named&S&M = self::S with self::M /*isAnonymousMixin*/  {
   synthetic constructor •() → self::_Named&S&M*
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/mixin_super_repeated.dart.strong.expect b/pkg/front_end/testcases/general_nnbd_opt_out/mixin_super_repeated.dart.strong.expect
index 085e258..074e61a 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/mixin_super_repeated.dart.strong.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/mixin_super_repeated.dart.strong.expect
@@ -7,6 +7,16 @@
   synthetic constructor •() → self::M*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class N extends self::M {
   synthetic constructor •() → self::N*
@@ -22,6 +32,16 @@
   synthetic constructor •() → self::S*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class _Named&S&M = self::S with self::M /*isAnonymousMixin*/  {
   synthetic constructor •() → self::_Named&S&M*
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/mixin_super_repeated.dart.strong.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/mixin_super_repeated.dart.strong.transformed.expect
index ad78013..7190023 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/mixin_super_repeated.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/mixin_super_repeated.dart.strong.transformed.expect
@@ -7,6 +7,16 @@
   synthetic constructor •() → self::M*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class N extends self::M {
   synthetic constructor •() → self::N*
@@ -22,12 +32,32 @@
   synthetic constructor •() → self::S*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class _Named&S&M extends self::S implements self::M /*isAnonymousMixin,isEliminatedMixin*/  {
   field dynamic m = null;
   synthetic constructor •() → self::_Named&S&M*
     : super self::S::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class _Named&S&M&N extends self::_Named&S&M implements self::N /*isAnonymousMixin,isEliminatedMixin*/  {
   synthetic constructor •() → self::_Named&S&M&N*
@@ -44,6 +74,16 @@
   synthetic constructor •() → self::Named*
     : super self::_Named&S&M&N::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   self::Named* named = new self::Named::•();
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/mixin_super_repeated.dart.weak.expect b/pkg/front_end/testcases/general_nnbd_opt_out/mixin_super_repeated.dart.weak.expect
index 085e258..074e61a 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/mixin_super_repeated.dart.weak.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/mixin_super_repeated.dart.weak.expect
@@ -7,6 +7,16 @@
   synthetic constructor •() → self::M*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class N extends self::M {
   synthetic constructor •() → self::N*
@@ -22,6 +32,16 @@
   synthetic constructor •() → self::S*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class _Named&S&M = self::S with self::M /*isAnonymousMixin*/  {
   synthetic constructor •() → self::_Named&S&M*
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/mixin_super_repeated.dart.weak.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/mixin_super_repeated.dart.weak.transformed.expect
index ad78013..7190023 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/mixin_super_repeated.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/mixin_super_repeated.dart.weak.transformed.expect
@@ -7,6 +7,16 @@
   synthetic constructor •() → self::M*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class N extends self::M {
   synthetic constructor •() → self::N*
@@ -22,12 +32,32 @@
   synthetic constructor •() → self::S*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class _Named&S&M extends self::S implements self::M /*isAnonymousMixin,isEliminatedMixin*/  {
   field dynamic m = null;
   synthetic constructor •() → self::_Named&S&M*
     : super self::S::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class _Named&S&M&N extends self::_Named&S&M implements self::N /*isAnonymousMixin,isEliminatedMixin*/  {
   synthetic constructor •() → self::_Named&S&M&N*
@@ -44,6 +74,16 @@
   synthetic constructor •() → self::Named*
     : super self::_Named&S&M&N::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   self::Named* named = new self::Named::•();
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/mixin_with_static_member.dart.outline.expect b/pkg/front_end/testcases/general_nnbd_opt_out/mixin_with_static_member.dart.outline.expect
index f982247..2676d25 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/mixin_with_static_member.dart.outline.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/mixin_with_static_member.dart.outline.expect
@@ -15,12 +15,32 @@
   final field core::Object* m;
   synthetic constructor •() → self::B*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class M extends core::Object {
   synthetic constructor •() → self::M*
     ;
   static method m() → core::Object*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/mixin_with_static_member.dart.strong.expect b/pkg/front_end/testcases/general_nnbd_opt_out/mixin_with_static_member.dart.strong.expect
index 85e498d..5429ab0 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/mixin_with_static_member.dart.strong.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/mixin_with_static_member.dart.strong.expect
@@ -17,6 +17,16 @@
   synthetic constructor •() → self::B*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class M extends core::Object {
   synthetic constructor •() → self::M*
@@ -24,6 +34,16 @@
     ;
   static method m() → core::Object*
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   new self::A::•();
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/mixin_with_static_member.dart.strong.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/mixin_with_static_member.dart.strong.transformed.expect
index b9faaa3..6c86cce 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/mixin_with_static_member.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/mixin_with_static_member.dart.strong.transformed.expect
@@ -8,6 +8,16 @@
     ;
   static method m() → core::Object*
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class A extends self::_A&B&M {
   synthetic constructor •() → self::A*
@@ -19,6 +29,16 @@
   synthetic constructor •() → self::B*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class M extends core::Object {
   synthetic constructor •() → self::M*
@@ -26,6 +46,16 @@
     ;
   static method m() → core::Object*
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   new self::A::•();
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/mixin_with_static_member.dart.weak.expect b/pkg/front_end/testcases/general_nnbd_opt_out/mixin_with_static_member.dart.weak.expect
index 85e498d..5429ab0 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/mixin_with_static_member.dart.weak.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/mixin_with_static_member.dart.weak.expect
@@ -17,6 +17,16 @@
   synthetic constructor •() → self::B*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class M extends core::Object {
   synthetic constructor •() → self::M*
@@ -24,6 +34,16 @@
     ;
   static method m() → core::Object*
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   new self::A::•();
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/mixin_with_static_member.dart.weak.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/mixin_with_static_member.dart.weak.transformed.expect
index b9faaa3..6c86cce 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/mixin_with_static_member.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/mixin_with_static_member.dart.weak.transformed.expect
@@ -8,6 +8,16 @@
     ;
   static method m() → core::Object*
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class A extends self::_A&B&M {
   synthetic constructor •() → self::A*
@@ -19,6 +29,16 @@
   synthetic constructor •() → self::B*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class M extends core::Object {
   synthetic constructor •() → self::M*
@@ -26,6 +46,16 @@
     ;
   static method m() → core::Object*
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   new self::A::•();
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/named_function_scope.dart.outline.expect b/pkg/front_end/testcases/general_nnbd_opt_out/named_function_scope.dart.outline.expect
index c5ead68..8eb9d2e 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/named_function_scope.dart.outline.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/named_function_scope.dart.outline.expect
@@ -5,10 +5,30 @@
 class T extends core::Object {
   synthetic constructor •() → self::T*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class V extends core::Object {
   synthetic constructor •() → self::V*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method test() → dynamic
   ;
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/named_function_scope.dart.strong.expect b/pkg/front_end/testcases/general_nnbd_opt_out/named_function_scope.dart.strong.expect
index ea78a78..153f961 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/named_function_scope.dart.strong.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/named_function_scope.dart.strong.expect
@@ -88,11 +88,31 @@
   synthetic constructor •() → self::T*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class V extends core::Object {
   synthetic constructor •() → self::V*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method test() → dynamic {
   self::T* t;
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/named_function_scope.dart.strong.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/named_function_scope.dart.strong.transformed.expect
index ea78a78..153f961 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/named_function_scope.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/named_function_scope.dart.strong.transformed.expect
@@ -88,11 +88,31 @@
   synthetic constructor •() → self::T*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class V extends core::Object {
   synthetic constructor •() → self::V*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method test() → dynamic {
   self::T* t;
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/named_function_scope.dart.weak.expect b/pkg/front_end/testcases/general_nnbd_opt_out/named_function_scope.dart.weak.expect
index ea78a78..153f961 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/named_function_scope.dart.weak.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/named_function_scope.dart.weak.expect
@@ -88,11 +88,31 @@
   synthetic constructor •() → self::T*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class V extends core::Object {
   synthetic constructor •() → self::V*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method test() → dynamic {
   self::T* t;
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/named_function_scope.dart.weak.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/named_function_scope.dart.weak.transformed.expect
index ea78a78..153f961 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/named_function_scope.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/named_function_scope.dart.weak.transformed.expect
@@ -88,11 +88,31 @@
   synthetic constructor •() → self::T*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class V extends core::Object {
   synthetic constructor •() → self::V*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method test() → dynamic {
   self::T* t;
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/named_parameters.dart.outline.expect b/pkg/front_end/testcases/general_nnbd_opt_out/named_parameters.dart.outline.expect
index a4a710f..45f4586 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/named_parameters.dart.outline.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/named_parameters.dart.outline.expect
@@ -11,6 +11,16 @@
     ;
   method namedCallback(({alpha: core::String*, beta: core::int*}) →* dynamic callback) → dynamic
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Subclass extends self::Superclass {
   synthetic constructor •() → self::Subclass*
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/named_parameters.dart.strong.expect b/pkg/front_end/testcases/general_nnbd_opt_out/named_parameters.dart.strong.expect
index 3219f16..449da78 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/named_parameters.dart.strong.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/named_parameters.dart.strong.expect
@@ -12,6 +12,16 @@
     callback.call(alpha: "one", beta: 2);
     callback.call(beta: 1, alpha: "two");
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Subclass extends self::Superclass {
   synthetic constructor •() → self::Subclass*
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/named_parameters.dart.strong.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/named_parameters.dart.strong.transformed.expect
index 3219f16..449da78 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/named_parameters.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/named_parameters.dart.strong.transformed.expect
@@ -12,6 +12,16 @@
     callback.call(alpha: "one", beta: 2);
     callback.call(beta: 1, alpha: "two");
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Subclass extends self::Superclass {
   synthetic constructor •() → self::Subclass*
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/named_parameters.dart.weak.expect b/pkg/front_end/testcases/general_nnbd_opt_out/named_parameters.dart.weak.expect
index 3219f16..449da78 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/named_parameters.dart.weak.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/named_parameters.dart.weak.expect
@@ -12,6 +12,16 @@
     callback.call(alpha: "one", beta: 2);
     callback.call(beta: 1, alpha: "two");
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Subclass extends self::Superclass {
   synthetic constructor •() → self::Subclass*
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/named_parameters.dart.weak.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/named_parameters.dart.weak.transformed.expect
index 3219f16..449da78 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/named_parameters.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/named_parameters.dart.weak.transformed.expect
@@ -12,6 +12,16 @@
     callback.call(alpha: "one", beta: 2);
     callback.call(beta: 1, alpha: "two");
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Subclass extends self::Superclass {
   synthetic constructor •() → self::Subclass*
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/native_as_name.dart.outline.expect b/pkg/front_end/testcases/general_nnbd_opt_out/native_as_name.dart.outline.expect
index b3af038..875bd02 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/native_as_name.dart.outline.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/native_as_name.dart.outline.expect
@@ -6,17 +6,47 @@
   field core::String* native;
   constructor •() → self::W*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class X extends core::Object {
   synthetic constructor •() → self::X*
     ;
   method native() → core::String*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class Y1 extends core::Object {
   synthetic constructor •() → self::Y1*
     ;
   abstract get native() → core::String*;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Y2 extends self::Y1 {
   synthetic constructor •() → self::Y2*
@@ -31,6 +61,16 @@
     ;
   set native(core::String* s) → void
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/native_as_name.dart.strong.expect b/pkg/front_end/testcases/general_nnbd_opt_out/native_as_name.dart.strong.expect
index 9e20099..67f9f49 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/native_as_name.dart.strong.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/native_as_name.dart.strong.expect
@@ -7,6 +7,16 @@
   constructor •() → self::W*
     : self::W::native = "field", super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class X extends core::Object {
   synthetic constructor •() → self::X*
@@ -14,12 +24,32 @@
     ;
   method native() → core::String*
     return "method";
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class Y1 extends core::Object {
   synthetic constructor •() → self::Y1*
     : super core::Object::•()
     ;
   abstract get native() → core::String*;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Y2 extends self::Y1 {
   synthetic constructor •() → self::Y2*
@@ -36,6 +66,16 @@
     ;
   set native(core::String* s) → void
     return this.{self::Z::f} = s;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   core::print(new self::W::•().{self::W::native});
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/native_as_name.dart.strong.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/native_as_name.dart.strong.transformed.expect
index 9e20099..67f9f49 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/native_as_name.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/native_as_name.dart.strong.transformed.expect
@@ -7,6 +7,16 @@
   constructor •() → self::W*
     : self::W::native = "field", super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class X extends core::Object {
   synthetic constructor •() → self::X*
@@ -14,12 +24,32 @@
     ;
   method native() → core::String*
     return "method";
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class Y1 extends core::Object {
   synthetic constructor •() → self::Y1*
     : super core::Object::•()
     ;
   abstract get native() → core::String*;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Y2 extends self::Y1 {
   synthetic constructor •() → self::Y2*
@@ -36,6 +66,16 @@
     ;
   set native(core::String* s) → void
     return this.{self::Z::f} = s;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   core::print(new self::W::•().{self::W::native});
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/native_as_name.dart.weak.expect b/pkg/front_end/testcases/general_nnbd_opt_out/native_as_name.dart.weak.expect
index 9e20099..67f9f49 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/native_as_name.dart.weak.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/native_as_name.dart.weak.expect
@@ -7,6 +7,16 @@
   constructor •() → self::W*
     : self::W::native = "field", super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class X extends core::Object {
   synthetic constructor •() → self::X*
@@ -14,12 +24,32 @@
     ;
   method native() → core::String*
     return "method";
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class Y1 extends core::Object {
   synthetic constructor •() → self::Y1*
     : super core::Object::•()
     ;
   abstract get native() → core::String*;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Y2 extends self::Y1 {
   synthetic constructor •() → self::Y2*
@@ -36,6 +66,16 @@
     ;
   set native(core::String* s) → void
     return this.{self::Z::f} = s;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   core::print(new self::W::•().{self::W::native});
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/native_as_name.dart.weak.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/native_as_name.dart.weak.transformed.expect
index 9e20099..67f9f49 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/native_as_name.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/native_as_name.dart.weak.transformed.expect
@@ -7,6 +7,16 @@
   constructor •() → self::W*
     : self::W::native = "field", super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class X extends core::Object {
   synthetic constructor •() → self::X*
@@ -14,12 +24,32 @@
     ;
   method native() → core::String*
     return "method";
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class Y1 extends core::Object {
   synthetic constructor •() → self::Y1*
     : super core::Object::•()
     ;
   abstract get native() → core::String*;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Y2 extends self::Y1 {
   synthetic constructor •() → self::Y2*
@@ -36,6 +66,16 @@
     ;
   set native(core::String* s) → void
     return this.{self::Z::f} = s;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   core::print(new self::W::•().{self::W::native});
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/nested_implicit_const_with_env_var.dart.outline.expect b/pkg/front_end/testcases/general_nnbd_opt_out/nested_implicit_const_with_env_var.dart.outline.expect
index f42f11f..9084f6d 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/nested_implicit_const_with_env_var.dart.outline.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/nested_implicit_const_with_env_var.dart.outline.expect
@@ -7,18 +7,48 @@
   const constructor •(core::int* bar) → self::A*
     : self::A::bar = bar, super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends core::Object /*hasConstConstructor*/  {
   final field self::A* baz;
   const constructor •(self::A* baz) → self::B*
     : self::B::baz = baz, super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C extends core::Object {
   synthetic constructor •() → self::C*
     ;
   method fun() → dynamic
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static const field core::int* foo = const core::int::fromEnvironment("fisk");
 static method main() → dynamic
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/nested_implicit_const_with_env_var.dart.strong.expect b/pkg/front_end/testcases/general_nnbd_opt_out/nested_implicit_const_with_env_var.dart.strong.expect
index 5ebdcbd..529b7ad 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/nested_implicit_const_with_env_var.dart.strong.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/nested_implicit_const_with_env_var.dart.strong.expect
@@ -7,12 +7,32 @@
   const constructor •(core::int* bar) → self::A*
     : self::A::bar = bar, super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends core::Object /*hasConstConstructor*/  {
   final field self::A* baz;
   const constructor •(self::A* baz) → self::B*
     : self::B::baz = baz, super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C extends core::Object {
   synthetic constructor •() → self::C*
@@ -21,6 +41,16 @@
   method fun() → dynamic {
     new self::B::•(new self::A::•(#C1));
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static const field core::int* foo = #C1;
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/nested_implicit_const_with_env_var.dart.strong.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/nested_implicit_const_with_env_var.dart.strong.transformed.expect
index 5ebdcbd..529b7ad 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/nested_implicit_const_with_env_var.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/nested_implicit_const_with_env_var.dart.strong.transformed.expect
@@ -7,12 +7,32 @@
   const constructor •(core::int* bar) → self::A*
     : self::A::bar = bar, super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends core::Object /*hasConstConstructor*/  {
   final field self::A* baz;
   const constructor •(self::A* baz) → self::B*
     : self::B::baz = baz, super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C extends core::Object {
   synthetic constructor •() → self::C*
@@ -21,6 +41,16 @@
   method fun() → dynamic {
     new self::B::•(new self::A::•(#C1));
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static const field core::int* foo = #C1;
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/nested_implicit_const_with_env_var.dart.weak.expect b/pkg/front_end/testcases/general_nnbd_opt_out/nested_implicit_const_with_env_var.dart.weak.expect
index 5ebdcbd..529b7ad 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/nested_implicit_const_with_env_var.dart.weak.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/nested_implicit_const_with_env_var.dart.weak.expect
@@ -7,12 +7,32 @@
   const constructor •(core::int* bar) → self::A*
     : self::A::bar = bar, super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends core::Object /*hasConstConstructor*/  {
   final field self::A* baz;
   const constructor •(self::A* baz) → self::B*
     : self::B::baz = baz, super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C extends core::Object {
   synthetic constructor •() → self::C*
@@ -21,6 +41,16 @@
   method fun() → dynamic {
     new self::B::•(new self::A::•(#C1));
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static const field core::int* foo = #C1;
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/nested_implicit_const_with_env_var.dart.weak.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/nested_implicit_const_with_env_var.dart.weak.transformed.expect
index 5ebdcbd..529b7ad 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/nested_implicit_const_with_env_var.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/nested_implicit_const_with_env_var.dart.weak.transformed.expect
@@ -7,12 +7,32 @@
   const constructor •(core::int* bar) → self::A*
     : self::A::bar = bar, super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends core::Object /*hasConstConstructor*/  {
   final field self::A* baz;
   const constructor •(self::A* baz) → self::B*
     : self::B::baz = baz, super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C extends core::Object {
   synthetic constructor •() → self::C*
@@ -21,6 +41,16 @@
   method fun() → dynamic {
     new self::B::•(new self::A::•(#C1));
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static const field core::int* foo = #C1;
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/nested_property_set.dart.outline.expect b/pkg/front_end/testcases/general_nnbd_opt_out/nested_property_set.dart.outline.expect
index 3417b90..de1db9d 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/nested_property_set.dart.outline.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/nested_property_set.dart.outline.expect
@@ -6,16 +6,46 @@
   field core::num* field;
   synthetic constructor •() → self::NumField*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class IntField extends core::Object {
   field core::int* field;
   synthetic constructor •() → self::IntField*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class DoubleField extends core::Object {
   field core::double* field;
   synthetic constructor •() → self::DoubleField*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/nested_property_set.dart.strong.expect b/pkg/front_end/testcases/general_nnbd_opt_out/nested_property_set.dart.strong.expect
index 1660b62..7fb3f49 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/nested_property_set.dart.strong.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/nested_property_set.dart.strong.expect
@@ -7,18 +7,48 @@
   synthetic constructor •() → self::NumField*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class IntField extends core::Object {
   field core::int* field = null;
   synthetic constructor •() → self::IntField*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class DoubleField extends core::Object {
   field core::double* field = null;
   synthetic constructor •() → self::DoubleField*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   self::IntField* intField1 = new self::IntField::•();
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/nested_property_set.dart.strong.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/nested_property_set.dart.strong.transformed.expect
index 1660b62..7fb3f49 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/nested_property_set.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/nested_property_set.dart.strong.transformed.expect
@@ -7,18 +7,48 @@
   synthetic constructor •() → self::NumField*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class IntField extends core::Object {
   field core::int* field = null;
   synthetic constructor •() → self::IntField*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class DoubleField extends core::Object {
   field core::double* field = null;
   synthetic constructor •() → self::DoubleField*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   self::IntField* intField1 = new self::IntField::•();
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/nested_property_set.dart.weak.expect b/pkg/front_end/testcases/general_nnbd_opt_out/nested_property_set.dart.weak.expect
index 1660b62..7fb3f49 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/nested_property_set.dart.weak.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/nested_property_set.dart.weak.expect
@@ -7,18 +7,48 @@
   synthetic constructor •() → self::NumField*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class IntField extends core::Object {
   field core::int* field = null;
   synthetic constructor •() → self::IntField*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class DoubleField extends core::Object {
   field core::double* field = null;
   synthetic constructor •() → self::DoubleField*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   self::IntField* intField1 = new self::IntField::•();
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/nested_property_set.dart.weak.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/nested_property_set.dart.weak.transformed.expect
index 1660b62..7fb3f49 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/nested_property_set.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/nested_property_set.dart.weak.transformed.expect
@@ -7,18 +7,48 @@
   synthetic constructor •() → self::NumField*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class IntField extends core::Object {
   field core::int* field = null;
   synthetic constructor •() → self::IntField*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class DoubleField extends core::Object {
   field core::double* field = null;
   synthetic constructor •() → self::DoubleField*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   self::IntField* intField1 = new self::IntField::•();
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/nested_variance.dart.outline.expect b/pkg/front_end/testcases/general_nnbd_opt_out/nested_variance.dart.outline.expect
index 5bfe24d..8dcbc62 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/nested_variance.dart.outline.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/nested_variance.dart.outline.expect
@@ -18,58 +18,198 @@
 class Acov<X extends () →* self::Acov::Y* = () →* dynamic, Y extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::Acov<self::Acov::X*, self::Acov::Y*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Acon<X extends (self::Acon::Y*) →* dynamic = (core::Null?) →* dynamic, Y extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::Acon<self::Acon::X*, self::Acon::Y*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Ainv<X extends (self::Ainv::Y*) →* self::Ainv::Y* = (dynamic) →* dynamic, Y extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::Ainv<self::Ainv::X*, self::Ainv::Y*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class AcovBound<X extends () →* self::AcovBound::Y* = () →* core::num*, Y extends core::num* = core::num*> extends core::Object {
   synthetic constructor •() → self::AcovBound<self::AcovBound::X*, self::AcovBound::Y*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class AconBound<X extends (self::AconBound::Y*) →* dynamic = (core::Null?) →* dynamic, Y extends core::num* = core::num*> extends core::Object {
   synthetic constructor •() → self::AconBound<self::AconBound::X*, self::AconBound::Y*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class AinvBound<X extends (self::AinvBound::Y*) →* self::AinvBound::Y* = (core::num*) →* core::num*, Y extends core::num* = core::num*> extends core::Object {
   synthetic constructor •() → self::AinvBound<self::AinvBound::X*, self::AinvBound::Y*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class A<X extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::A<self::A::X*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class AcovCyclicBound<X extends () →* self::AcovCyclicBound::Y* = () →* self::A<dynamic>*, Y extends self::A<self::AcovCyclicBound::Y*>* = self::A<dynamic>*> extends core::Object {
   synthetic constructor •() → self::AcovCyclicBound<self::AcovCyclicBound::X*, self::AcovCyclicBound::Y*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class AconCyclicBound<X extends (self::AconCyclicBound::Y*) →* dynamic = (core::Null?) →* dynamic, Y extends self::A<self::AconCyclicBound::Y*>* = self::A<dynamic>*> extends core::Object {
   synthetic constructor •() → self::AconCyclicBound<self::AconCyclicBound::X*, self::AconCyclicBound::Y*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class AinvCyclicBound<X extends (self::AinvCyclicBound::Y*) →* self::AinvCyclicBound::Y* = (self::A<dynamic>*) →* self::A<dynamic>*, Y extends self::A<self::AinvCyclicBound::Y*>* = self::A<dynamic>*> extends core::Object {
   synthetic constructor •() → self::AinvCyclicBound<self::AinvCyclicBound::X*, self::AinvCyclicBound::Y*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class AcovCyclicCoBound<X extends () →* self::AcovCyclicCoBound::Y* = () →* (core::Null?) →* dynamic, Y extends (self::AcovCyclicCoBound::Y*) →* dynamic = (core::Null?) →* dynamic> extends core::Object {
   synthetic constructor •() → self::AcovCyclicCoBound<self::AcovCyclicCoBound::X*, self::AcovCyclicCoBound::Y*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class AconCyclicCoBound<X extends (self::AconCyclicCoBound::Y*) →* dynamic = (core::Null?) →* dynamic, Y extends (self::AconCyclicCoBound::Y*) →* dynamic = (core::Null?) →* dynamic> extends core::Object {
   synthetic constructor •() → self::AconCyclicCoBound<self::AconCyclicCoBound::X*, self::AconCyclicCoBound::Y*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class AinvCyclicCoBound<X extends (self::AinvCyclicCoBound::Y*) →* self::AinvCyclicCoBound::Y* = ((core::Null?) →* dynamic) →* (core::Null?) →* dynamic, Y extends (self::AinvCyclicCoBound::Y*) →* dynamic = (core::Null?) →* dynamic> extends core::Object {
   synthetic constructor •() → self::AinvCyclicCoBound<self::AinvCyclicCoBound::X*, self::AinvCyclicCoBound::Y*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B<X extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::B<self::B::X*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method toF<X extends core::Object* = dynamic>(self::toF::X* x) → <Y extends self::toF::X* = dynamic>() →* void
   ;
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/nested_variance.dart.strong.expect b/pkg/front_end/testcases/general_nnbd_opt_out/nested_variance.dart.strong.expect
index 8d2d71d..3f883c6 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/nested_variance.dart.strong.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/nested_variance.dart.strong.expect
@@ -19,71 +19,211 @@
   synthetic constructor •() → self::Acov<self::Acov::X*, self::Acov::Y*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Acon<X extends (self::Acon::Y*) →* dynamic = (core::Null?) →* dynamic, Y extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::Acon<self::Acon::X*, self::Acon::Y*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Ainv<X extends (self::Ainv::Y*) →* self::Ainv::Y* = (dynamic) →* dynamic, Y extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::Ainv<self::Ainv::X*, self::Ainv::Y*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class AcovBound<X extends () →* self::AcovBound::Y* = () →* core::num*, Y extends core::num* = core::num*> extends core::Object {
   synthetic constructor •() → self::AcovBound<self::AcovBound::X*, self::AcovBound::Y*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class AconBound<X extends (self::AconBound::Y*) →* dynamic = (core::Null?) →* dynamic, Y extends core::num* = core::num*> extends core::Object {
   synthetic constructor •() → self::AconBound<self::AconBound::X*, self::AconBound::Y*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class AinvBound<X extends (self::AinvBound::Y*) →* self::AinvBound::Y* = (core::num*) →* core::num*, Y extends core::num* = core::num*> extends core::Object {
   synthetic constructor •() → self::AinvBound<self::AinvBound::X*, self::AinvBound::Y*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class A<X extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::A<self::A::X*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class AcovCyclicBound<X extends () →* self::AcovCyclicBound::Y* = () →* self::A<dynamic>*, Y extends self::A<self::AcovCyclicBound::Y*>* = self::A<dynamic>*> extends core::Object {
   synthetic constructor •() → self::AcovCyclicBound<self::AcovCyclicBound::X*, self::AcovCyclicBound::Y*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class AconCyclicBound<X extends (self::AconCyclicBound::Y*) →* dynamic = (core::Null?) →* dynamic, Y extends self::A<self::AconCyclicBound::Y*>* = self::A<dynamic>*> extends core::Object {
   synthetic constructor •() → self::AconCyclicBound<self::AconCyclicBound::X*, self::AconCyclicBound::Y*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class AinvCyclicBound<X extends (self::AinvCyclicBound::Y*) →* self::AinvCyclicBound::Y* = (self::A<dynamic>*) →* self::A<dynamic>*, Y extends self::A<self::AinvCyclicBound::Y*>* = self::A<dynamic>*> extends core::Object {
   synthetic constructor •() → self::AinvCyclicBound<self::AinvCyclicBound::X*, self::AinvCyclicBound::Y*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class AcovCyclicCoBound<X extends () →* self::AcovCyclicCoBound::Y* = () →* (core::Null?) →* dynamic, Y extends (self::AcovCyclicCoBound::Y*) →* dynamic = (core::Null?) →* dynamic> extends core::Object {
   synthetic constructor •() → self::AcovCyclicCoBound<self::AcovCyclicCoBound::X*, self::AcovCyclicCoBound::Y*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class AconCyclicCoBound<X extends (self::AconCyclicCoBound::Y*) →* dynamic = (core::Null?) →* dynamic, Y extends (self::AconCyclicCoBound::Y*) →* dynamic = (core::Null?) →* dynamic> extends core::Object {
   synthetic constructor •() → self::AconCyclicCoBound<self::AconCyclicCoBound::X*, self::AconCyclicCoBound::Y*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class AinvCyclicCoBound<X extends (self::AinvCyclicCoBound::Y*) →* self::AinvCyclicCoBound::Y* = ((core::Null?) →* dynamic) →* (core::Null?) →* dynamic, Y extends (self::AinvCyclicCoBound::Y*) →* dynamic = (core::Null?) →* dynamic> extends core::Object {
   synthetic constructor •() → self::AinvCyclicCoBound<self::AinvCyclicCoBound::X*, self::AinvCyclicCoBound::Y*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B<X extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::B<self::B::X*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method toF<X extends core::Object* = dynamic>(self::toF::X* x) → <Y extends self::toF::X* = dynamic>() →* void
   return null;
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/nested_variance.dart.strong.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/nested_variance.dart.strong.transformed.expect
index 8d2d71d..3f883c6 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/nested_variance.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/nested_variance.dart.strong.transformed.expect
@@ -19,71 +19,211 @@
   synthetic constructor •() → self::Acov<self::Acov::X*, self::Acov::Y*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Acon<X extends (self::Acon::Y*) →* dynamic = (core::Null?) →* dynamic, Y extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::Acon<self::Acon::X*, self::Acon::Y*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Ainv<X extends (self::Ainv::Y*) →* self::Ainv::Y* = (dynamic) →* dynamic, Y extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::Ainv<self::Ainv::X*, self::Ainv::Y*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class AcovBound<X extends () →* self::AcovBound::Y* = () →* core::num*, Y extends core::num* = core::num*> extends core::Object {
   synthetic constructor •() → self::AcovBound<self::AcovBound::X*, self::AcovBound::Y*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class AconBound<X extends (self::AconBound::Y*) →* dynamic = (core::Null?) →* dynamic, Y extends core::num* = core::num*> extends core::Object {
   synthetic constructor •() → self::AconBound<self::AconBound::X*, self::AconBound::Y*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class AinvBound<X extends (self::AinvBound::Y*) →* self::AinvBound::Y* = (core::num*) →* core::num*, Y extends core::num* = core::num*> extends core::Object {
   synthetic constructor •() → self::AinvBound<self::AinvBound::X*, self::AinvBound::Y*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class A<X extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::A<self::A::X*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class AcovCyclicBound<X extends () →* self::AcovCyclicBound::Y* = () →* self::A<dynamic>*, Y extends self::A<self::AcovCyclicBound::Y*>* = self::A<dynamic>*> extends core::Object {
   synthetic constructor •() → self::AcovCyclicBound<self::AcovCyclicBound::X*, self::AcovCyclicBound::Y*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class AconCyclicBound<X extends (self::AconCyclicBound::Y*) →* dynamic = (core::Null?) →* dynamic, Y extends self::A<self::AconCyclicBound::Y*>* = self::A<dynamic>*> extends core::Object {
   synthetic constructor •() → self::AconCyclicBound<self::AconCyclicBound::X*, self::AconCyclicBound::Y*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class AinvCyclicBound<X extends (self::AinvCyclicBound::Y*) →* self::AinvCyclicBound::Y* = (self::A<dynamic>*) →* self::A<dynamic>*, Y extends self::A<self::AinvCyclicBound::Y*>* = self::A<dynamic>*> extends core::Object {
   synthetic constructor •() → self::AinvCyclicBound<self::AinvCyclicBound::X*, self::AinvCyclicBound::Y*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class AcovCyclicCoBound<X extends () →* self::AcovCyclicCoBound::Y* = () →* (core::Null?) →* dynamic, Y extends (self::AcovCyclicCoBound::Y*) →* dynamic = (core::Null?) →* dynamic> extends core::Object {
   synthetic constructor •() → self::AcovCyclicCoBound<self::AcovCyclicCoBound::X*, self::AcovCyclicCoBound::Y*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class AconCyclicCoBound<X extends (self::AconCyclicCoBound::Y*) →* dynamic = (core::Null?) →* dynamic, Y extends (self::AconCyclicCoBound::Y*) →* dynamic = (core::Null?) →* dynamic> extends core::Object {
   synthetic constructor •() → self::AconCyclicCoBound<self::AconCyclicCoBound::X*, self::AconCyclicCoBound::Y*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class AinvCyclicCoBound<X extends (self::AinvCyclicCoBound::Y*) →* self::AinvCyclicCoBound::Y* = ((core::Null?) →* dynamic) →* (core::Null?) →* dynamic, Y extends (self::AinvCyclicCoBound::Y*) →* dynamic = (core::Null?) →* dynamic> extends core::Object {
   synthetic constructor •() → self::AinvCyclicCoBound<self::AinvCyclicCoBound::X*, self::AinvCyclicCoBound::Y*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B<X extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::B<self::B::X*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method toF<X extends core::Object* = dynamic>(self::toF::X* x) → <Y extends self::toF::X* = dynamic>() →* void
   return null;
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/nested_variance.dart.weak.expect b/pkg/front_end/testcases/general_nnbd_opt_out/nested_variance.dart.weak.expect
index 8d2d71d..3f883c6 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/nested_variance.dart.weak.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/nested_variance.dart.weak.expect
@@ -19,71 +19,211 @@
   synthetic constructor •() → self::Acov<self::Acov::X*, self::Acov::Y*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Acon<X extends (self::Acon::Y*) →* dynamic = (core::Null?) →* dynamic, Y extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::Acon<self::Acon::X*, self::Acon::Y*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Ainv<X extends (self::Ainv::Y*) →* self::Ainv::Y* = (dynamic) →* dynamic, Y extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::Ainv<self::Ainv::X*, self::Ainv::Y*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class AcovBound<X extends () →* self::AcovBound::Y* = () →* core::num*, Y extends core::num* = core::num*> extends core::Object {
   synthetic constructor •() → self::AcovBound<self::AcovBound::X*, self::AcovBound::Y*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class AconBound<X extends (self::AconBound::Y*) →* dynamic = (core::Null?) →* dynamic, Y extends core::num* = core::num*> extends core::Object {
   synthetic constructor •() → self::AconBound<self::AconBound::X*, self::AconBound::Y*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class AinvBound<X extends (self::AinvBound::Y*) →* self::AinvBound::Y* = (core::num*) →* core::num*, Y extends core::num* = core::num*> extends core::Object {
   synthetic constructor •() → self::AinvBound<self::AinvBound::X*, self::AinvBound::Y*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class A<X extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::A<self::A::X*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class AcovCyclicBound<X extends () →* self::AcovCyclicBound::Y* = () →* self::A<dynamic>*, Y extends self::A<self::AcovCyclicBound::Y*>* = self::A<dynamic>*> extends core::Object {
   synthetic constructor •() → self::AcovCyclicBound<self::AcovCyclicBound::X*, self::AcovCyclicBound::Y*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class AconCyclicBound<X extends (self::AconCyclicBound::Y*) →* dynamic = (core::Null?) →* dynamic, Y extends self::A<self::AconCyclicBound::Y*>* = self::A<dynamic>*> extends core::Object {
   synthetic constructor •() → self::AconCyclicBound<self::AconCyclicBound::X*, self::AconCyclicBound::Y*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class AinvCyclicBound<X extends (self::AinvCyclicBound::Y*) →* self::AinvCyclicBound::Y* = (self::A<dynamic>*) →* self::A<dynamic>*, Y extends self::A<self::AinvCyclicBound::Y*>* = self::A<dynamic>*> extends core::Object {
   synthetic constructor •() → self::AinvCyclicBound<self::AinvCyclicBound::X*, self::AinvCyclicBound::Y*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class AcovCyclicCoBound<X extends () →* self::AcovCyclicCoBound::Y* = () →* (core::Null?) →* dynamic, Y extends (self::AcovCyclicCoBound::Y*) →* dynamic = (core::Null?) →* dynamic> extends core::Object {
   synthetic constructor •() → self::AcovCyclicCoBound<self::AcovCyclicCoBound::X*, self::AcovCyclicCoBound::Y*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class AconCyclicCoBound<X extends (self::AconCyclicCoBound::Y*) →* dynamic = (core::Null?) →* dynamic, Y extends (self::AconCyclicCoBound::Y*) →* dynamic = (core::Null?) →* dynamic> extends core::Object {
   synthetic constructor •() → self::AconCyclicCoBound<self::AconCyclicCoBound::X*, self::AconCyclicCoBound::Y*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class AinvCyclicCoBound<X extends (self::AinvCyclicCoBound::Y*) →* self::AinvCyclicCoBound::Y* = ((core::Null?) →* dynamic) →* (core::Null?) →* dynamic, Y extends (self::AinvCyclicCoBound::Y*) →* dynamic = (core::Null?) →* dynamic> extends core::Object {
   synthetic constructor •() → self::AinvCyclicCoBound<self::AinvCyclicCoBound::X*, self::AinvCyclicCoBound::Y*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B<X extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::B<self::B::X*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method toF<X extends core::Object* = dynamic>(self::toF::X* x) → <Y extends self::toF::X* = dynamic>() →* void
   return null;
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/nested_variance.dart.weak.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/nested_variance.dart.weak.transformed.expect
index 8d2d71d..3f883c6 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/nested_variance.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/nested_variance.dart.weak.transformed.expect
@@ -19,71 +19,211 @@
   synthetic constructor •() → self::Acov<self::Acov::X*, self::Acov::Y*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Acon<X extends (self::Acon::Y*) →* dynamic = (core::Null?) →* dynamic, Y extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::Acon<self::Acon::X*, self::Acon::Y*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Ainv<X extends (self::Ainv::Y*) →* self::Ainv::Y* = (dynamic) →* dynamic, Y extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::Ainv<self::Ainv::X*, self::Ainv::Y*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class AcovBound<X extends () →* self::AcovBound::Y* = () →* core::num*, Y extends core::num* = core::num*> extends core::Object {
   synthetic constructor •() → self::AcovBound<self::AcovBound::X*, self::AcovBound::Y*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class AconBound<X extends (self::AconBound::Y*) →* dynamic = (core::Null?) →* dynamic, Y extends core::num* = core::num*> extends core::Object {
   synthetic constructor •() → self::AconBound<self::AconBound::X*, self::AconBound::Y*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class AinvBound<X extends (self::AinvBound::Y*) →* self::AinvBound::Y* = (core::num*) →* core::num*, Y extends core::num* = core::num*> extends core::Object {
   synthetic constructor •() → self::AinvBound<self::AinvBound::X*, self::AinvBound::Y*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class A<X extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::A<self::A::X*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class AcovCyclicBound<X extends () →* self::AcovCyclicBound::Y* = () →* self::A<dynamic>*, Y extends self::A<self::AcovCyclicBound::Y*>* = self::A<dynamic>*> extends core::Object {
   synthetic constructor •() → self::AcovCyclicBound<self::AcovCyclicBound::X*, self::AcovCyclicBound::Y*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class AconCyclicBound<X extends (self::AconCyclicBound::Y*) →* dynamic = (core::Null?) →* dynamic, Y extends self::A<self::AconCyclicBound::Y*>* = self::A<dynamic>*> extends core::Object {
   synthetic constructor •() → self::AconCyclicBound<self::AconCyclicBound::X*, self::AconCyclicBound::Y*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class AinvCyclicBound<X extends (self::AinvCyclicBound::Y*) →* self::AinvCyclicBound::Y* = (self::A<dynamic>*) →* self::A<dynamic>*, Y extends self::A<self::AinvCyclicBound::Y*>* = self::A<dynamic>*> extends core::Object {
   synthetic constructor •() → self::AinvCyclicBound<self::AinvCyclicBound::X*, self::AinvCyclicBound::Y*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class AcovCyclicCoBound<X extends () →* self::AcovCyclicCoBound::Y* = () →* (core::Null?) →* dynamic, Y extends (self::AcovCyclicCoBound::Y*) →* dynamic = (core::Null?) →* dynamic> extends core::Object {
   synthetic constructor •() → self::AcovCyclicCoBound<self::AcovCyclicCoBound::X*, self::AcovCyclicCoBound::Y*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class AconCyclicCoBound<X extends (self::AconCyclicCoBound::Y*) →* dynamic = (core::Null?) →* dynamic, Y extends (self::AconCyclicCoBound::Y*) →* dynamic = (core::Null?) →* dynamic> extends core::Object {
   synthetic constructor •() → self::AconCyclicCoBound<self::AconCyclicCoBound::X*, self::AconCyclicCoBound::Y*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class AinvCyclicCoBound<X extends (self::AinvCyclicCoBound::Y*) →* self::AinvCyclicCoBound::Y* = ((core::Null?) →* dynamic) →* (core::Null?) →* dynamic, Y extends (self::AinvCyclicCoBound::Y*) →* dynamic = (core::Null?) →* dynamic> extends core::Object {
   synthetic constructor •() → self::AinvCyclicCoBound<self::AinvCyclicCoBound::X*, self::AinvCyclicCoBound::Y*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B<X extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::B<self::B::X*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method toF<X extends core::Object* = dynamic>(self::toF::X* x) → <Y extends self::toF::X* = dynamic>() →* void
   return null;
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/no_such_method_private_setter.dart.outline.expect b/pkg/front_end/testcases/general_nnbd_opt_out/no_such_method_private_setter.dart.outline.expect
index fa9a400..492341c 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/no_such_method_private_setter.dart.outline.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/no_such_method_private_setter.dart.outline.expect
@@ -8,10 +8,20 @@
 class Foo extends core::Object implements no_::Bar {
   synthetic constructor •() → self::Foo*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
   no-such-method-forwarder get /* from org-dartlang-testcase:///no_such_method_private_setter_lib.dart */ _x() → core::int*
-    return this.{core::Object::noSuchMethod}(new core::_InvocationMirror::_withType(#_x, 1, const <core::Type*>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{}))) as{TypeError,ForDynamic} core::int*;
+    return this.{self::Foo::noSuchMethod}(new core::_InvocationMirror::_withType(#_x, 1, const <core::Type*>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{}))) as{TypeError,ForDynamic} core::int*;
   no-such-method-forwarder set /* from org-dartlang-testcase:///no_such_method_private_setter_lib.dart */ _x(core::int* value) → void
-    return this.{core::Object::noSuchMethod}(new core::_InvocationMirror::_withType(#_x=, 2, const <core::Type*>[], core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{})));
+    return this.{self::Foo::noSuchMethod}(new core::_InvocationMirror::_withType(#_x=, 2, const <core::Type*>[], core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{})));
 }
 static method main() → dynamic
   ;
@@ -24,6 +34,16 @@
   field core::int* _x;
   synthetic constructor •() → no_::Bar*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method baz(no_::Bar* bar) → void
   ;
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/no_such_method_private_setter.dart.strong.expect b/pkg/front_end/testcases/general_nnbd_opt_out/no_such_method_private_setter.dart.strong.expect
index b80b9e5..5c53040 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/no_such_method_private_setter.dart.strong.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/no_such_method_private_setter.dart.strong.expect
@@ -9,10 +9,20 @@
   synthetic constructor •() → self::Foo*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
   no-such-method-forwarder get /* from org-dartlang-testcase:///no_such_method_private_setter_lib.dart */ _x() → core::int*
-    return this.{core::Object::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 1, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))) as{TypeError,ForDynamic} core::int*;
+    return this.{self::Foo::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 1, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))) as{TypeError,ForDynamic} core::int*;
   no-such-method-forwarder set /* from org-dartlang-testcase:///no_such_method_private_setter_lib.dart */ _x(core::int* value) → void
-    return this.{core::Object::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 2, #C2, core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
+    return this.{self::Foo::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 2, #C2, core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
 }
 static method main() → dynamic {
   no_::baz(new self::Foo::•());
@@ -27,6 +37,16 @@
   synthetic constructor •() → no_::Bar*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method baz(no_::Bar* bar) → void {
   return;
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/no_such_method_private_setter.dart.strong.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/no_such_method_private_setter.dart.strong.transformed.expect
index b80b9e5..5c53040 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/no_such_method_private_setter.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/no_such_method_private_setter.dart.strong.transformed.expect
@@ -9,10 +9,20 @@
   synthetic constructor •() → self::Foo*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
   no-such-method-forwarder get /* from org-dartlang-testcase:///no_such_method_private_setter_lib.dart */ _x() → core::int*
-    return this.{core::Object::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 1, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))) as{TypeError,ForDynamic} core::int*;
+    return this.{self::Foo::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 1, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))) as{TypeError,ForDynamic} core::int*;
   no-such-method-forwarder set /* from org-dartlang-testcase:///no_such_method_private_setter_lib.dart */ _x(core::int* value) → void
-    return this.{core::Object::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 2, #C2, core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
+    return this.{self::Foo::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 2, #C2, core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
 }
 static method main() → dynamic {
   no_::baz(new self::Foo::•());
@@ -27,6 +37,16 @@
   synthetic constructor •() → no_::Bar*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method baz(no_::Bar* bar) → void {
   return;
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/no_such_method_private_setter.dart.weak.expect b/pkg/front_end/testcases/general_nnbd_opt_out/no_such_method_private_setter.dart.weak.expect
index b80b9e5..5c53040 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/no_such_method_private_setter.dart.weak.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/no_such_method_private_setter.dart.weak.expect
@@ -9,10 +9,20 @@
   synthetic constructor •() → self::Foo*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
   no-such-method-forwarder get /* from org-dartlang-testcase:///no_such_method_private_setter_lib.dart */ _x() → core::int*
-    return this.{core::Object::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 1, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))) as{TypeError,ForDynamic} core::int*;
+    return this.{self::Foo::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 1, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))) as{TypeError,ForDynamic} core::int*;
   no-such-method-forwarder set /* from org-dartlang-testcase:///no_such_method_private_setter_lib.dart */ _x(core::int* value) → void
-    return this.{core::Object::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 2, #C2, core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
+    return this.{self::Foo::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 2, #C2, core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
 }
 static method main() → dynamic {
   no_::baz(new self::Foo::•());
@@ -27,6 +37,16 @@
   synthetic constructor •() → no_::Bar*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method baz(no_::Bar* bar) → void {
   return;
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/no_such_method_private_setter.dart.weak.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/no_such_method_private_setter.dart.weak.transformed.expect
index b80b9e5..5c53040 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/no_such_method_private_setter.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/no_such_method_private_setter.dart.weak.transformed.expect
@@ -9,10 +9,20 @@
   synthetic constructor •() → self::Foo*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
   no-such-method-forwarder get /* from org-dartlang-testcase:///no_such_method_private_setter_lib.dart */ _x() → core::int*
-    return this.{core::Object::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 1, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))) as{TypeError,ForDynamic} core::int*;
+    return this.{self::Foo::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 1, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))) as{TypeError,ForDynamic} core::int*;
   no-such-method-forwarder set /* from org-dartlang-testcase:///no_such_method_private_setter_lib.dart */ _x(core::int* value) → void
-    return this.{core::Object::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 2, #C2, core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
+    return this.{self::Foo::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 2, #C2, core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
 }
 static method main() → dynamic {
   no_::baz(new self::Foo::•());
@@ -27,6 +37,16 @@
   synthetic constructor •() → no_::Bar*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method baz(no_::Bar* bar) → void {
   return;
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/non_covariant_checks.dart.outline.expect b/pkg/front_end/testcases/general_nnbd_opt_out/non_covariant_checks.dart.outline.expect
index c8bde3f..c0b99d7 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/non_covariant_checks.dart.outline.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/non_covariant_checks.dart.outline.expect
@@ -110,6 +110,16 @@
     ;
   method method15(generic-covariant-impl (<S extends self::C::T* = dynamic>() →* S*) →* void value) → void
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/non_covariant_checks.dart.strong.expect b/pkg/front_end/testcases/general_nnbd_opt_out/non_covariant_checks.dart.strong.expect
index 6116ad1..05af068 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/non_covariant_checks.dart.strong.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/non_covariant_checks.dart.strong.expect
@@ -141,6 +141,16 @@
   method method15(generic-covariant-impl (<S extends self::C::T* = dynamic>() →* S*) →* void value) → void {
     this.{self::C::field15} = value;
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   self::C<core::num*>* c = new self::C::•<core::int*>(0);
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/non_covariant_checks.dart.strong.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/non_covariant_checks.dart.strong.transformed.expect
index 6116ad1..05af068 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/non_covariant_checks.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/non_covariant_checks.dart.strong.transformed.expect
@@ -141,6 +141,16 @@
   method method15(generic-covariant-impl (<S extends self::C::T* = dynamic>() →* S*) →* void value) → void {
     this.{self::C::field15} = value;
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   self::C<core::num*>* c = new self::C::•<core::int*>(0);
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/non_covariant_checks.dart.weak.expect b/pkg/front_end/testcases/general_nnbd_opt_out/non_covariant_checks.dart.weak.expect
index 6116ad1..05af068 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/non_covariant_checks.dart.weak.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/non_covariant_checks.dart.weak.expect
@@ -141,6 +141,16 @@
   method method15(generic-covariant-impl (<S extends self::C::T* = dynamic>() →* S*) →* void value) → void {
     this.{self::C::field15} = value;
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   self::C<core::num*>* c = new self::C::•<core::int*>(0);
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/non_covariant_checks.dart.weak.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/non_covariant_checks.dart.weak.transformed.expect
index 6116ad1..05af068 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/non_covariant_checks.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/non_covariant_checks.dart.weak.transformed.expect
@@ -141,6 +141,16 @@
   method method15(generic-covariant-impl (<S extends self::C::T* = dynamic>() →* S*) →* void value) → void {
     this.{self::C::field15} = value;
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   self::C<core::num*>* c = new self::C::•<core::int*>(0);
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/null_aware.dart.outline.expect b/pkg/front_end/testcases/general_nnbd_opt_out/null_aware.dart.outline.expect
index e7c162d..15c528d 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/null_aware.dart.outline.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/null_aware.dart.outline.expect
@@ -7,6 +7,16 @@
   static field core::int* staticField;
   synthetic constructor •() → self::Foo*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/null_aware.dart.strong.expect b/pkg/front_end/testcases/general_nnbd_opt_out/null_aware.dart.strong.expect
index d2551c7..9d1625e 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/null_aware.dart.strong.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/null_aware.dart.strong.expect
@@ -8,14 +8,24 @@
   synthetic constructor •() → self::Foo*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   self::Foo* foo = new self::Foo::•();
-  let final self::Foo* #t1 = foo in #t1.{core::Object::==}(null) ?{core::int*} null : #t1.{self::Foo::field} = 5;
+  let final self::Foo* #t1 = foo in #t1.{self::Foo::==}(null) ?{core::int*} null : #t1.{self::Foo::field} = 5;
   self::Foo::staticField = 5;
   let final self::Foo* #t2 = foo in #t2.{self::Foo::field}.{core::num::==}(null) ?{core::int*} #t2.{self::Foo::field} = 5 : null;
   self::Foo::staticField.{core::num::==}(null) ?{core::int*} self::Foo::staticField = 5 : null;
-  let final self::Foo* #t3 = foo in #t3.{core::Object::==}(null) ?{core::int*} null : #t3.{self::Foo::field}.{core::num::==}(null) ?{core::int*} #t3.{self::Foo::field} = 5 : null;
+  let final self::Foo* #t3 = foo in #t3.{self::Foo::==}(null) ?{core::int*} null : #t3.{self::Foo::field}.{core::num::==}(null) ?{core::int*} #t3.{self::Foo::field} = 5 : null;
   self::Foo::staticField.{core::num::==}(null) ?{core::int*} self::Foo::staticField = 5 : null;
   core::int* intValue = let final core::int* #t4 = foo.{self::Foo::field} in #t4.{core::num::==}(null) ?{core::int*} 6 : #t4;
   core::num* numValue = let final core::int* #t5 = foo.{self::Foo::field} in #t5.{core::num::==}(null) ?{core::num*} 4.5 : #t5;
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/null_aware.dart.strong.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/null_aware.dart.strong.transformed.expect
index d2551c7..9d1625e 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/null_aware.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/null_aware.dart.strong.transformed.expect
@@ -8,14 +8,24 @@
   synthetic constructor •() → self::Foo*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   self::Foo* foo = new self::Foo::•();
-  let final self::Foo* #t1 = foo in #t1.{core::Object::==}(null) ?{core::int*} null : #t1.{self::Foo::field} = 5;
+  let final self::Foo* #t1 = foo in #t1.{self::Foo::==}(null) ?{core::int*} null : #t1.{self::Foo::field} = 5;
   self::Foo::staticField = 5;
   let final self::Foo* #t2 = foo in #t2.{self::Foo::field}.{core::num::==}(null) ?{core::int*} #t2.{self::Foo::field} = 5 : null;
   self::Foo::staticField.{core::num::==}(null) ?{core::int*} self::Foo::staticField = 5 : null;
-  let final self::Foo* #t3 = foo in #t3.{core::Object::==}(null) ?{core::int*} null : #t3.{self::Foo::field}.{core::num::==}(null) ?{core::int*} #t3.{self::Foo::field} = 5 : null;
+  let final self::Foo* #t3 = foo in #t3.{self::Foo::==}(null) ?{core::int*} null : #t3.{self::Foo::field}.{core::num::==}(null) ?{core::int*} #t3.{self::Foo::field} = 5 : null;
   self::Foo::staticField.{core::num::==}(null) ?{core::int*} self::Foo::staticField = 5 : null;
   core::int* intValue = let final core::int* #t4 = foo.{self::Foo::field} in #t4.{core::num::==}(null) ?{core::int*} 6 : #t4;
   core::num* numValue = let final core::int* #t5 = foo.{self::Foo::field} in #t5.{core::num::==}(null) ?{core::num*} 4.5 : #t5;
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/null_aware.dart.weak.expect b/pkg/front_end/testcases/general_nnbd_opt_out/null_aware.dart.weak.expect
index d2551c7..9d1625e 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/null_aware.dart.weak.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/null_aware.dart.weak.expect
@@ -8,14 +8,24 @@
   synthetic constructor •() → self::Foo*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   self::Foo* foo = new self::Foo::•();
-  let final self::Foo* #t1 = foo in #t1.{core::Object::==}(null) ?{core::int*} null : #t1.{self::Foo::field} = 5;
+  let final self::Foo* #t1 = foo in #t1.{self::Foo::==}(null) ?{core::int*} null : #t1.{self::Foo::field} = 5;
   self::Foo::staticField = 5;
   let final self::Foo* #t2 = foo in #t2.{self::Foo::field}.{core::num::==}(null) ?{core::int*} #t2.{self::Foo::field} = 5 : null;
   self::Foo::staticField.{core::num::==}(null) ?{core::int*} self::Foo::staticField = 5 : null;
-  let final self::Foo* #t3 = foo in #t3.{core::Object::==}(null) ?{core::int*} null : #t3.{self::Foo::field}.{core::num::==}(null) ?{core::int*} #t3.{self::Foo::field} = 5 : null;
+  let final self::Foo* #t3 = foo in #t3.{self::Foo::==}(null) ?{core::int*} null : #t3.{self::Foo::field}.{core::num::==}(null) ?{core::int*} #t3.{self::Foo::field} = 5 : null;
   self::Foo::staticField.{core::num::==}(null) ?{core::int*} self::Foo::staticField = 5 : null;
   core::int* intValue = let final core::int* #t4 = foo.{self::Foo::field} in #t4.{core::num::==}(null) ?{core::int*} 6 : #t4;
   core::num* numValue = let final core::int* #t5 = foo.{self::Foo::field} in #t5.{core::num::==}(null) ?{core::num*} 4.5 : #t5;
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/null_aware.dart.weak.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/null_aware.dart.weak.transformed.expect
index d2551c7..9d1625e 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/null_aware.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/null_aware.dart.weak.transformed.expect
@@ -8,14 +8,24 @@
   synthetic constructor •() → self::Foo*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   self::Foo* foo = new self::Foo::•();
-  let final self::Foo* #t1 = foo in #t1.{core::Object::==}(null) ?{core::int*} null : #t1.{self::Foo::field} = 5;
+  let final self::Foo* #t1 = foo in #t1.{self::Foo::==}(null) ?{core::int*} null : #t1.{self::Foo::field} = 5;
   self::Foo::staticField = 5;
   let final self::Foo* #t2 = foo in #t2.{self::Foo::field}.{core::num::==}(null) ?{core::int*} #t2.{self::Foo::field} = 5 : null;
   self::Foo::staticField.{core::num::==}(null) ?{core::int*} self::Foo::staticField = 5 : null;
-  let final self::Foo* #t3 = foo in #t3.{core::Object::==}(null) ?{core::int*} null : #t3.{self::Foo::field}.{core::num::==}(null) ?{core::int*} #t3.{self::Foo::field} = 5 : null;
+  let final self::Foo* #t3 = foo in #t3.{self::Foo::==}(null) ?{core::int*} null : #t3.{self::Foo::field}.{core::num::==}(null) ?{core::int*} #t3.{self::Foo::field} = 5 : null;
   self::Foo::staticField.{core::num::==}(null) ?{core::int*} self::Foo::staticField = 5 : null;
   core::int* intValue = let final core::int* #t4 = foo.{self::Foo::field} in #t4.{core::num::==}(null) ?{core::int*} 6 : #t4;
   core::num* numValue = let final core::int* #t5 = foo.{self::Foo::field} in #t5.{core::num::==}(null) ?{core::num*} 4.5 : #t5;
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/null_aware_for_in.dart.outline.expect b/pkg/front_end/testcases/general_nnbd_opt_out/null_aware_for_in.dart.outline.expect
index b23757d..a4a4c82 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/null_aware_for_in.dart.outline.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/null_aware_for_in.dart.outline.expect
@@ -5,6 +5,16 @@
 class Class extends core::Object {
   synthetic constructor •() → self::Class*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/null_aware_for_in.dart.strong.expect b/pkg/front_end/testcases/general_nnbd_opt_out/null_aware_for_in.dart.strong.expect
index 5d3f769..2c53a57 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/null_aware_for_in.dart.strong.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/null_aware_for_in.dart.strong.expect
@@ -6,6 +6,16 @@
   synthetic constructor •() → self::Class*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   dynamic o;
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/null_aware_for_in.dart.strong.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/null_aware_for_in.dart.strong.transformed.expect
index 10d831b..41bcd81 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/null_aware_for_in.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/null_aware_for_in.dart.strong.transformed.expect
@@ -6,6 +6,16 @@
   synthetic constructor •() → self::Class*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   dynamic o;
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/null_aware_for_in.dart.weak.expect b/pkg/front_end/testcases/general_nnbd_opt_out/null_aware_for_in.dart.weak.expect
index 5d3f769..2c53a57 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/null_aware_for_in.dart.weak.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/null_aware_for_in.dart.weak.expect
@@ -6,6 +6,16 @@
   synthetic constructor •() → self::Class*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   dynamic o;
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/null_aware_for_in.dart.weak.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/null_aware_for_in.dart.weak.transformed.expect
index 10d831b..41bcd81 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/null_aware_for_in.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/null_aware_for_in.dart.weak.transformed.expect
@@ -6,6 +6,16 @@
   synthetic constructor •() → self::Class*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   dynamic o;
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/null_aware_postfix.dart.outline.expect b/pkg/front_end/testcases/general_nnbd_opt_out/null_aware_postfix.dart.outline.expect
index 89edf56..5d90cb1 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/null_aware_postfix.dart.outline.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/null_aware_postfix.dart.outline.expect
@@ -6,12 +6,32 @@
   field self::B* b;
   synthetic constructor •() → self::A*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends core::Object {
   synthetic constructor •() → self::B*
     ;
   operator +(core::int* i) → self::C*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C extends self::B {
   synthetic constructor •() → self::C*
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/null_aware_postfix.dart.strong.expect b/pkg/front_end/testcases/general_nnbd_opt_out/null_aware_postfix.dart.strong.expect
index 594d81b..4163d6a 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/null_aware_postfix.dart.strong.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/null_aware_postfix.dart.strong.expect
@@ -7,6 +7,16 @@
   synthetic constructor •() → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends core::Object {
   synthetic constructor •() → self::B*
@@ -14,6 +24,16 @@
     ;
   operator +(core::int* i) → self::C*
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C extends self::B {
   synthetic constructor •() → self::C*
@@ -22,6 +42,6 @@
 }
 static method main() → dynamic {
   self::A* a;
-  let final self::A* #t1 = a in #t1.{core::Object::==}(null) ?{self::B*} null : #t1.{self::A::b} = #t1.{self::A::b}.{self::B::+}(1);
-  self::C* c = (let final self::A* #t2 = a in #t2.{core::Object::==}(null) ?{self::B*} null : let final self::B* #t3 = #t2.{self::A::b} in let final void #t4 = #t2.{self::A::b} = #t3.{self::B::+}(1) in #t3) as{TypeError} self::C*;
+  let final self::A* #t1 = a in #t1.{self::A::==}(null) ?{self::B*} null : #t1.{self::A::b} = #t1.{self::A::b}.{self::B::+}(1);
+  self::C* c = (let final self::A* #t2 = a in #t2.{self::A::==}(null) ?{self::B*} null : let final self::B* #t3 = #t2.{self::A::b} in let final void #t4 = #t2.{self::A::b} = #t3.{self::B::+}(1) in #t3) as{TypeError} self::C*;
 }
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/null_aware_postfix.dart.strong.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/null_aware_postfix.dart.strong.transformed.expect
index 594d81b..4163d6a 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/null_aware_postfix.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/null_aware_postfix.dart.strong.transformed.expect
@@ -7,6 +7,16 @@
   synthetic constructor •() → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends core::Object {
   synthetic constructor •() → self::B*
@@ -14,6 +24,16 @@
     ;
   operator +(core::int* i) → self::C*
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C extends self::B {
   synthetic constructor •() → self::C*
@@ -22,6 +42,6 @@
 }
 static method main() → dynamic {
   self::A* a;
-  let final self::A* #t1 = a in #t1.{core::Object::==}(null) ?{self::B*} null : #t1.{self::A::b} = #t1.{self::A::b}.{self::B::+}(1);
-  self::C* c = (let final self::A* #t2 = a in #t2.{core::Object::==}(null) ?{self::B*} null : let final self::B* #t3 = #t2.{self::A::b} in let final void #t4 = #t2.{self::A::b} = #t3.{self::B::+}(1) in #t3) as{TypeError} self::C*;
+  let final self::A* #t1 = a in #t1.{self::A::==}(null) ?{self::B*} null : #t1.{self::A::b} = #t1.{self::A::b}.{self::B::+}(1);
+  self::C* c = (let final self::A* #t2 = a in #t2.{self::A::==}(null) ?{self::B*} null : let final self::B* #t3 = #t2.{self::A::b} in let final void #t4 = #t2.{self::A::b} = #t3.{self::B::+}(1) in #t3) as{TypeError} self::C*;
 }
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/null_aware_postfix.dart.weak.expect b/pkg/front_end/testcases/general_nnbd_opt_out/null_aware_postfix.dart.weak.expect
index 594d81b..4163d6a 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/null_aware_postfix.dart.weak.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/null_aware_postfix.dart.weak.expect
@@ -7,6 +7,16 @@
   synthetic constructor •() → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends core::Object {
   synthetic constructor •() → self::B*
@@ -14,6 +24,16 @@
     ;
   operator +(core::int* i) → self::C*
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C extends self::B {
   synthetic constructor •() → self::C*
@@ -22,6 +42,6 @@
 }
 static method main() → dynamic {
   self::A* a;
-  let final self::A* #t1 = a in #t1.{core::Object::==}(null) ?{self::B*} null : #t1.{self::A::b} = #t1.{self::A::b}.{self::B::+}(1);
-  self::C* c = (let final self::A* #t2 = a in #t2.{core::Object::==}(null) ?{self::B*} null : let final self::B* #t3 = #t2.{self::A::b} in let final void #t4 = #t2.{self::A::b} = #t3.{self::B::+}(1) in #t3) as{TypeError} self::C*;
+  let final self::A* #t1 = a in #t1.{self::A::==}(null) ?{self::B*} null : #t1.{self::A::b} = #t1.{self::A::b}.{self::B::+}(1);
+  self::C* c = (let final self::A* #t2 = a in #t2.{self::A::==}(null) ?{self::B*} null : let final self::B* #t3 = #t2.{self::A::b} in let final void #t4 = #t2.{self::A::b} = #t3.{self::B::+}(1) in #t3) as{TypeError} self::C*;
 }
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/null_aware_postfix.dart.weak.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/null_aware_postfix.dart.weak.transformed.expect
index 594d81b..4163d6a 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/null_aware_postfix.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/null_aware_postfix.dart.weak.transformed.expect
@@ -7,6 +7,16 @@
   synthetic constructor •() → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends core::Object {
   synthetic constructor •() → self::B*
@@ -14,6 +24,16 @@
     ;
   operator +(core::int* i) → self::C*
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C extends self::B {
   synthetic constructor •() → self::C*
@@ -22,6 +42,6 @@
 }
 static method main() → dynamic {
   self::A* a;
-  let final self::A* #t1 = a in #t1.{core::Object::==}(null) ?{self::B*} null : #t1.{self::A::b} = #t1.{self::A::b}.{self::B::+}(1);
-  self::C* c = (let final self::A* #t2 = a in #t2.{core::Object::==}(null) ?{self::B*} null : let final self::B* #t3 = #t2.{self::A::b} in let final void #t4 = #t2.{self::A::b} = #t3.{self::B::+}(1) in #t3) as{TypeError} self::C*;
+  let final self::A* #t1 = a in #t1.{self::A::==}(null) ?{self::B*} null : #t1.{self::A::b} = #t1.{self::A::b}.{self::B::+}(1);
+  self::C* c = (let final self::A* #t2 = a in #t2.{self::A::==}(null) ?{self::B*} null : let final self::B* #t3 = #t2.{self::A::b} in let final void #t4 = #t2.{self::A::b} = #t3.{self::B::+}(1) in #t3) as{TypeError} self::C*;
 }
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/null_aware_spread.dart.strong.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/null_aware_spread.dart.strong.transformed.expect
index c75c586..d895697 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/null_aware_spread.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/null_aware_spread.dart.strong.transformed.expect
@@ -37,7 +37,7 @@
     #t7.{core::Map::[]=}(0, "foo");
     final core::Map<core::int*, core::String*>* #t8 = map;
     if(!#t8.{core::Object::==}(null)) {
-      core::Iterator<core::MapEntry<core::int*, core::String*>*>* :sync-for-iterator = #t8.{core::Map::entries}.{core::Iterable::iterator};
+      core::Iterator<core::MapEntry<core::int*, core::String*>>* :sync-for-iterator = #t8.{core::Map::entries}.{core::Iterable::iterator};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         final core::MapEntry<core::int*, core::String*>* #t9 = :sync-for-iterator.{core::Iterator::current};
         #t7.{core::Map::[]=}(#t9.{core::MapEntry::key}, #t9.{core::MapEntry::value});
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/null_aware_spread.dart.weak.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/null_aware_spread.dart.weak.transformed.expect
index c75c586..d895697 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/null_aware_spread.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/null_aware_spread.dart.weak.transformed.expect
@@ -37,7 +37,7 @@
     #t7.{core::Map::[]=}(0, "foo");
     final core::Map<core::int*, core::String*>* #t8 = map;
     if(!#t8.{core::Object::==}(null)) {
-      core::Iterator<core::MapEntry<core::int*, core::String*>*>* :sync-for-iterator = #t8.{core::Map::entries}.{core::Iterable::iterator};
+      core::Iterator<core::MapEntry<core::int*, core::String*>>* :sync-for-iterator = #t8.{core::Map::entries}.{core::Iterable::iterator};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         final core::MapEntry<core::int*, core::String*>* #t9 = :sync-for-iterator.{core::Iterator::current};
         #t7.{core::Map::[]=}(#t9.{core::MapEntry::key}, #t9.{core::MapEntry::value});
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/operator_method_not_found.dart.outline.expect b/pkg/front_end/testcases/general_nnbd_opt_out/operator_method_not_found.dart.outline.expect
index 85e8d34..db94753 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/operator_method_not_found.dart.outline.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/operator_method_not_found.dart.outline.expect
@@ -5,6 +5,16 @@
 class Foo extends core::Object {
   synthetic constructor •() → self::Foo*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/operator_method_not_found.dart.strong.expect b/pkg/front_end/testcases/general_nnbd_opt_out/operator_method_not_found.dart.strong.expect
index e25cec2..bc4da0a 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/operator_method_not_found.dart.strong.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/operator_method_not_found.dart.strong.expect
@@ -196,6 +196,16 @@
   synthetic constructor •() → self::Foo*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   self::Foo* foo = new self::Foo::•();
@@ -219,7 +229,7 @@
 Try correcting the operator to an existing operator, or defining a '>=' operator.
   print(foo >= 2);
             ^^");
-  core::print(foo.{core::Object::==}(2));
+  core::print(foo.{self::Foo::==}(2));
   core::print(invalid-expression "pkg/front_end/testcases/general_nnbd_opt_out/operator_method_not_found.dart:19:13: Error: The operator '-' isn't defined for the class 'Foo'.
  - 'Foo' is from 'pkg/front_end/testcases/general_nnbd_opt_out/operator_method_not_found.dart'.
 Try correcting the operator to an existing operator, or defining a '-' operator.
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/operator_method_not_found.dart.strong.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/operator_method_not_found.dart.strong.transformed.expect
index e25cec2..bc4da0a 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/operator_method_not_found.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/operator_method_not_found.dart.strong.transformed.expect
@@ -196,6 +196,16 @@
   synthetic constructor •() → self::Foo*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   self::Foo* foo = new self::Foo::•();
@@ -219,7 +229,7 @@
 Try correcting the operator to an existing operator, or defining a '>=' operator.
   print(foo >= 2);
             ^^");
-  core::print(foo.{core::Object::==}(2));
+  core::print(foo.{self::Foo::==}(2));
   core::print(invalid-expression "pkg/front_end/testcases/general_nnbd_opt_out/operator_method_not_found.dart:19:13: Error: The operator '-' isn't defined for the class 'Foo'.
  - 'Foo' is from 'pkg/front_end/testcases/general_nnbd_opt_out/operator_method_not_found.dart'.
 Try correcting the operator to an existing operator, or defining a '-' operator.
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/operator_method_not_found.dart.weak.expect b/pkg/front_end/testcases/general_nnbd_opt_out/operator_method_not_found.dart.weak.expect
index e25cec2..bc4da0a 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/operator_method_not_found.dart.weak.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/operator_method_not_found.dart.weak.expect
@@ -196,6 +196,16 @@
   synthetic constructor •() → self::Foo*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   self::Foo* foo = new self::Foo::•();
@@ -219,7 +229,7 @@
 Try correcting the operator to an existing operator, or defining a '>=' operator.
   print(foo >= 2);
             ^^");
-  core::print(foo.{core::Object::==}(2));
+  core::print(foo.{self::Foo::==}(2));
   core::print(invalid-expression "pkg/front_end/testcases/general_nnbd_opt_out/operator_method_not_found.dart:19:13: Error: The operator '-' isn't defined for the class 'Foo'.
  - 'Foo' is from 'pkg/front_end/testcases/general_nnbd_opt_out/operator_method_not_found.dart'.
 Try correcting the operator to an existing operator, or defining a '-' operator.
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/operator_method_not_found.dart.weak.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/operator_method_not_found.dart.weak.transformed.expect
index e25cec2..bc4da0a 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/operator_method_not_found.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/operator_method_not_found.dart.weak.transformed.expect
@@ -196,6 +196,16 @@
   synthetic constructor •() → self::Foo*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   self::Foo* foo = new self::Foo::•();
@@ -219,7 +229,7 @@
 Try correcting the operator to an existing operator, or defining a '>=' operator.
   print(foo >= 2);
             ^^");
-  core::print(foo.{core::Object::==}(2));
+  core::print(foo.{self::Foo::==}(2));
   core::print(invalid-expression "pkg/front_end/testcases/general_nnbd_opt_out/operator_method_not_found.dart:19:13: Error: The operator '-' isn't defined for the class 'Foo'.
  - 'Foo' is from 'pkg/front_end/testcases/general_nnbd_opt_out/operator_method_not_found.dart'.
 Try correcting the operator to an existing operator, or defining a '-' operator.
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/operators.dart.outline.expect b/pkg/front_end/testcases/general_nnbd_opt_out/operators.dart.outline.expect
index 5f34aeb..5f1f6f7 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/operators.dart.outline.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/operators.dart.outline.expect
@@ -45,6 +45,15 @@
     ;
   operator unary-() → dynamic
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main(dynamic arguments) → dynamic
   ;
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/operators.dart.strong.expect b/pkg/front_end/testcases/general_nnbd_opt_out/operators.dart.strong.expect
index 79ceba2..e3c3482 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/operators.dart.strong.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/operators.dart.strong.expect
@@ -45,6 +45,15 @@
     return null;
   operator unary-() → dynamic
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main(dynamic arguments) → dynamic {
   self::Operators* a = new self::Operators::•();
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/operators.dart.strong.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/operators.dart.strong.transformed.expect
index 79ceba2..e3c3482 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/operators.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/operators.dart.strong.transformed.expect
@@ -45,6 +45,15 @@
     return null;
   operator unary-() → dynamic
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main(dynamic arguments) → dynamic {
   self::Operators* a = new self::Operators::•();
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/operators.dart.weak.expect b/pkg/front_end/testcases/general_nnbd_opt_out/operators.dart.weak.expect
index 79ceba2..e3c3482 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/operators.dart.weak.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/operators.dart.weak.expect
@@ -45,6 +45,15 @@
     return null;
   operator unary-() → dynamic
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main(dynamic arguments) → dynamic {
   self::Operators* a = new self::Operators::•();
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/operators.dart.weak.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/operators.dart.weak.transformed.expect
index 79ceba2..e3c3482 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/operators.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/operators.dart.weak.transformed.expect
@@ -45,6 +45,15 @@
     return null;
   operator unary-() → dynamic
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main(dynamic arguments) → dynamic {
   self::Operators* a = new self::Operators::•();
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/optional.dart.outline.expect b/pkg/front_end/testcases/general_nnbd_opt_out/optional.dart.outline.expect
index 5bfe7d5..fc765ff 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/optional.dart.outline.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/optional.dart.outline.expect
@@ -7,17 +7,47 @@
     ;
   method method(dynamic x, [dynamic y, dynamic z]) → dynamic
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class External extends core::Object {
   synthetic constructor •() → self::External*
     ;
   abstract method externalMethod(core::int* x, [core::int* y, core::int* z]) → core::String*;
   abstract method listen(self::Listener* listener) → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class Listener extends core::Object {
   synthetic constructor •() → self::Listener*
     ;
   abstract method event(core::String* input, [core::int* x, core::int* y]) → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class TestListener extends self::Listener {
   synthetic constructor •() → self::TestListener*
@@ -36,6 +66,16 @@
     ;
   method event(dynamic input, [dynamic x]) → void
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 external static abstract method createExternal() → self::External*;
 static method main() → dynamic
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/optional.dart.strong.expect b/pkg/front_end/testcases/general_nnbd_opt_out/optional.dart.strong.expect
index d5b76c7..6e7a5a8 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/optional.dart.strong.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/optional.dart.strong.expect
@@ -36,6 +36,16 @@
   method method(dynamic x, [dynamic y = #C1, dynamic z = #C1]) → dynamic {
     return "string";
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class External extends core::Object {
   synthetic constructor •() → self::External*
@@ -43,12 +53,32 @@
     ;
   abstract method externalMethod(core::int* x, [core::int* y = #C1, core::int* z = #C1]) → core::String*;
   abstract method listen(self::Listener* listener) → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class Listener extends core::Object {
   synthetic constructor •() → self::Listener*
     : super core::Object::•()
     ;
   abstract method event(core::String* input, [core::int* x = #C1, core::int* y = #C1]) → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class TestListener extends self::Listener {
   synthetic constructor •() → self::TestListener*
@@ -67,6 +97,16 @@
     : super core::Object::•()
     ;
   method event(dynamic input, [dynamic x = #C1]) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 external static abstract method createExternal() → self::External*;
 static method main() → dynamic {
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/optional.dart.weak.expect b/pkg/front_end/testcases/general_nnbd_opt_out/optional.dart.weak.expect
index d5b76c7..6e7a5a8 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/optional.dart.weak.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/optional.dart.weak.expect
@@ -36,6 +36,16 @@
   method method(dynamic x, [dynamic y = #C1, dynamic z = #C1]) → dynamic {
     return "string";
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class External extends core::Object {
   synthetic constructor •() → self::External*
@@ -43,12 +53,32 @@
     ;
   abstract method externalMethod(core::int* x, [core::int* y = #C1, core::int* z = #C1]) → core::String*;
   abstract method listen(self::Listener* listener) → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class Listener extends core::Object {
   synthetic constructor •() → self::Listener*
     : super core::Object::•()
     ;
   abstract method event(core::String* input, [core::int* x = #C1, core::int* y = #C1]) → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class TestListener extends self::Listener {
   synthetic constructor •() → self::TestListener*
@@ -67,6 +97,16 @@
     : super core::Object::•()
     ;
   method event(dynamic input, [dynamic x = #C1]) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 external static abstract method createExternal() → self::External*;
 static method main() → dynamic {
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/override.dart.outline.expect b/pkg/front_end/testcases/general_nnbd_opt_out/override.dart.outline.expect
index a60858d..b07a2bd 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/override.dart.outline.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/override.dart.outline.expect
@@ -5,6 +5,16 @@
 class Foo extends core::Object {
   synthetic constructor •() → self::Foo*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Bar extends self::Foo {
   synthetic constructor •() → self::Bar*
@@ -15,6 +25,16 @@
     ;
   method method() → self::Foo*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Sub extends self::Base {
   synthetic constructor •() → self::Sub*
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/override.dart.strong.expect b/pkg/front_end/testcases/general_nnbd_opt_out/override.dart.strong.expect
index f6ea171..ad702b5 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/override.dart.strong.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/override.dart.strong.expect
@@ -6,6 +6,16 @@
   synthetic constructor •() → self::Foo*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Bar extends self::Foo {
   synthetic constructor •() → self::Bar*
@@ -19,6 +29,16 @@
   method method() → self::Foo* {
     return new self::Foo::•();
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Sub extends self::Base {
   synthetic constructor •() → self::Sub*
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/override.dart.strong.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/override.dart.strong.transformed.expect
index f6ea171..ad702b5 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/override.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/override.dart.strong.transformed.expect
@@ -6,6 +6,16 @@
   synthetic constructor •() → self::Foo*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Bar extends self::Foo {
   synthetic constructor •() → self::Bar*
@@ -19,6 +29,16 @@
   method method() → self::Foo* {
     return new self::Foo::•();
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Sub extends self::Base {
   synthetic constructor •() → self::Sub*
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/override.dart.weak.expect b/pkg/front_end/testcases/general_nnbd_opt_out/override.dart.weak.expect
index f6ea171..ad702b5 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/override.dart.weak.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/override.dart.weak.expect
@@ -6,6 +6,16 @@
   synthetic constructor •() → self::Foo*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Bar extends self::Foo {
   synthetic constructor •() → self::Bar*
@@ -19,6 +29,16 @@
   method method() → self::Foo* {
     return new self::Foo::•();
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Sub extends self::Base {
   synthetic constructor •() → self::Sub*
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/override.dart.weak.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/override.dart.weak.transformed.expect
index f6ea171..ad702b5 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/override.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/override.dart.weak.transformed.expect
@@ -6,6 +6,16 @@
   synthetic constructor •() → self::Foo*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Bar extends self::Foo {
   synthetic constructor •() → self::Bar*
@@ -19,6 +29,16 @@
   method method() → self::Foo* {
     return new self::Foo::•();
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Sub extends self::Base {
   synthetic constructor •() → self::Sub*
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/override_check_accessor_after_inference.dart.outline.expect b/pkg/front_end/testcases/general_nnbd_opt_out/override_check_accessor_after_inference.dart.outline.expect
index 71a3e64..88bc141 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/override_check_accessor_after_inference.dart.outline.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/override_check_accessor_after_inference.dart.outline.expect
@@ -28,6 +28,16 @@
 class A extends core::Object {
   synthetic constructor •() → self::A*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A {
   synthetic constructor •() → self::B*
@@ -40,6 +50,16 @@
     ;
   get y() → self::B*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D extends self::C {
   synthetic constructor •() → self::D*
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/override_check_accessor_after_inference.dart.strong.expect b/pkg/front_end/testcases/general_nnbd_opt_out/override_check_accessor_after_inference.dart.strong.expect
index 8187a45..a60dabf 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/override_check_accessor_after_inference.dart.strong.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/override_check_accessor_after_inference.dart.strong.expect
@@ -29,6 +29,16 @@
   synthetic constructor •() → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A {
   synthetic constructor •() → self::B*
@@ -42,6 +52,16 @@
   set x(self::A* value) → void {}
   get y() → self::B*
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D extends self::C {
   synthetic constructor •() → self::D*
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/override_check_accessor_after_inference.dart.weak.expect b/pkg/front_end/testcases/general_nnbd_opt_out/override_check_accessor_after_inference.dart.weak.expect
index 8187a45..a60dabf 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/override_check_accessor_after_inference.dart.weak.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/override_check_accessor_after_inference.dart.weak.expect
@@ -29,6 +29,16 @@
   synthetic constructor •() → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A {
   synthetic constructor •() → self::B*
@@ -42,6 +52,16 @@
   set x(self::A* value) → void {}
   get y() → self::B*
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D extends self::C {
   synthetic constructor •() → self::D*
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/override_check_accessor_basic.dart.outline.expect b/pkg/front_end/testcases/general_nnbd_opt_out/override_check_accessor_basic.dart.outline.expect
index 908dd9f..68803c3 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/override_check_accessor_basic.dart.outline.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/override_check_accessor_basic.dart.outline.expect
@@ -28,6 +28,16 @@
 class A extends core::Object {
   synthetic constructor •() → self::A*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A {
   synthetic constructor •() → self::B*
@@ -40,6 +50,16 @@
     ;
   get y() → self::A*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D extends self::C {
   synthetic constructor •() → self::D*
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/override_check_accessor_basic.dart.strong.expect b/pkg/front_end/testcases/general_nnbd_opt_out/override_check_accessor_basic.dart.strong.expect
index baa81dc..fed52f1 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/override_check_accessor_basic.dart.strong.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/override_check_accessor_basic.dart.strong.expect
@@ -29,6 +29,16 @@
   synthetic constructor •() → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A {
   synthetic constructor •() → self::B*
@@ -42,6 +52,16 @@
   set x(self::A* value) → void {}
   get y() → self::A*
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D extends self::C {
   synthetic constructor •() → self::D*
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/override_check_accessor_basic.dart.weak.expect b/pkg/front_end/testcases/general_nnbd_opt_out/override_check_accessor_basic.dart.weak.expect
index baa81dc..fed52f1 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/override_check_accessor_basic.dart.weak.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/override_check_accessor_basic.dart.weak.expect
@@ -29,6 +29,16 @@
   synthetic constructor •() → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A {
   synthetic constructor •() → self::B*
@@ -42,6 +52,16 @@
   set x(self::A* value) → void {}
   get y() → self::A*
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D extends self::C {
   synthetic constructor •() → self::D*
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/override_check_accessor_with_covariant_modifier.dart.outline.expect b/pkg/front_end/testcases/general_nnbd_opt_out/override_check_accessor_with_covariant_modifier.dart.outline.expect
index 7fc5365..1f8ca47 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/override_check_accessor_with_covariant_modifier.dart.outline.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/override_check_accessor_with_covariant_modifier.dart.outline.expect
@@ -27,6 +27,16 @@
 class A extends core::Object {
   synthetic constructor •() → self::A*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A {
   synthetic constructor •() → self::B*
@@ -47,6 +57,16 @@
     ;
   set x6(covariant self::B* value) → void
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D extends self::C {
   synthetic constructor •() → self::D*
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/override_check_accessor_with_covariant_modifier.dart.strong.expect b/pkg/front_end/testcases/general_nnbd_opt_out/override_check_accessor_with_covariant_modifier.dart.strong.expect
index 7ab6615..a71240c 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/override_check_accessor_with_covariant_modifier.dart.strong.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/override_check_accessor_with_covariant_modifier.dart.strong.expect
@@ -28,6 +28,16 @@
   synthetic constructor •() → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A {
   synthetic constructor •() → self::B*
@@ -44,6 +54,16 @@
   set x4(self::A* value) → void {}
   set x5(covariant self::A* value) → void {}
   set x6(covariant self::B* value) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D extends self::C {
   synthetic constructor •() → self::D*
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/override_check_accessor_with_covariant_modifier.dart.weak.expect b/pkg/front_end/testcases/general_nnbd_opt_out/override_check_accessor_with_covariant_modifier.dart.weak.expect
index 7ab6615..a71240c 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/override_check_accessor_with_covariant_modifier.dart.weak.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/override_check_accessor_with_covariant_modifier.dart.weak.expect
@@ -28,6 +28,16 @@
   synthetic constructor •() → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A {
   synthetic constructor •() → self::B*
@@ -44,6 +54,16 @@
   set x4(self::A* value) → void {}
   set x5(covariant self::A* value) → void {}
   set x6(covariant self::B* value) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D extends self::C {
   synthetic constructor •() → self::D*
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/override_check_after_inference.dart.outline.expect b/pkg/front_end/testcases/general_nnbd_opt_out/override_check_after_inference.dart.outline.expect
index e1f16b0..caa3480 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/override_check_after_inference.dart.outline.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/override_check_after_inference.dart.outline.expect
@@ -18,6 +18,16 @@
 class A extends core::Object {
   synthetic constructor •() → self::A*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A {
   synthetic constructor •() → self::B*
@@ -28,6 +38,16 @@
     ;
   method f(self::A* x) → void
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D extends self::C {
   synthetic constructor •() → self::D*
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/override_check_after_inference.dart.strong.expect b/pkg/front_end/testcases/general_nnbd_opt_out/override_check_after_inference.dart.strong.expect
index caacac4..0164382 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/override_check_after_inference.dart.strong.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/override_check_after_inference.dart.strong.expect
@@ -19,6 +19,16 @@
   synthetic constructor •() → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A {
   synthetic constructor •() → self::B*
@@ -30,6 +40,16 @@
     : super core::Object::•()
     ;
   method f(self::A* x) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D extends self::C {
   synthetic constructor •() → self::D*
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/override_check_after_inference.dart.weak.expect b/pkg/front_end/testcases/general_nnbd_opt_out/override_check_after_inference.dart.weak.expect
index caacac4..0164382 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/override_check_after_inference.dart.weak.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/override_check_after_inference.dart.weak.expect
@@ -19,6 +19,16 @@
   synthetic constructor •() → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A {
   synthetic constructor •() → self::B*
@@ -30,6 +40,16 @@
     : super core::Object::•()
     ;
   method f(self::A* x) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D extends self::C {
   synthetic constructor •() → self::D*
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/override_check_basic.dart.outline.expect b/pkg/front_end/testcases/general_nnbd_opt_out/override_check_basic.dart.outline.expect
index f59135a..b574041 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/override_check_basic.dart.outline.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/override_check_basic.dart.outline.expect
@@ -48,6 +48,16 @@
 class A extends core::Object {
   synthetic constructor •() → self::A*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A {
   synthetic constructor •() → self::B*
@@ -64,6 +74,16 @@
     ;
   method f4() → self::A*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D extends self::C {
   synthetic constructor •() → self::D*
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/override_check_basic.dart.strong.expect b/pkg/front_end/testcases/general_nnbd_opt_out/override_check_basic.dart.strong.expect
index 68684e3..1ff4008 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/override_check_basic.dart.strong.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/override_check_basic.dart.strong.expect
@@ -49,6 +49,16 @@
   synthetic constructor •() → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A {
   synthetic constructor •() → self::B*
@@ -63,6 +73,16 @@
   method f2([self::A* x = #C1]) → void {}
   method f3({self::A* x = #C1}) → void {}
   method f4() → self::A* {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D extends self::C {
   synthetic constructor •() → self::D*
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/override_check_basic.dart.weak.expect b/pkg/front_end/testcases/general_nnbd_opt_out/override_check_basic.dart.weak.expect
index 68684e3..1ff4008 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/override_check_basic.dart.weak.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/override_check_basic.dart.weak.expect
@@ -49,6 +49,16 @@
   synthetic constructor •() → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A {
   synthetic constructor •() → self::B*
@@ -63,6 +73,16 @@
   method f2([self::A* x = #C1]) → void {}
   method f3({self::A* x = #C1}) → void {}
   method f4() → self::A* {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D extends self::C {
   synthetic constructor •() → self::D*
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/override_check_generic_method_f_bounded.dart.outline.expect b/pkg/front_end/testcases/general_nnbd_opt_out/override_check_generic_method_f_bounded.dart.outline.expect
index 09d8a3c..1f089e9 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/override_check_generic_method_f_bounded.dart.outline.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/override_check_generic_method_f_bounded.dart.outline.expect
@@ -5,11 +5,31 @@
 class Foo<T extends self::Foo<self::Foo::T*>* = self::Foo<dynamic>*> extends core::Object {
   synthetic constructor •() → self::Foo<self::Foo::T*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class Bar extends core::Object {
   synthetic constructor •() → self::Bar*
     ;
   abstract method fisk<S extends self::Foo<self::Bar::fisk::S*>* = self::Foo<dynamic>*>() → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Hest extends core::Object implements self::Bar {
   synthetic constructor •() → self::Hest*
@@ -17,6 +37,16 @@
   @core::override
   method fisk<U extends self::Foo<self::Hest::fisk::U*>* = self::Foo<dynamic>*>() → void
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → void
   ;
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/override_check_generic_method_f_bounded.dart.strong.expect b/pkg/front_end/testcases/general_nnbd_opt_out/override_check_generic_method_f_bounded.dart.strong.expect
index 5b088fe..e856790 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/override_check_generic_method_f_bounded.dart.strong.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/override_check_generic_method_f_bounded.dart.strong.expect
@@ -6,12 +6,32 @@
   synthetic constructor •() → self::Foo<self::Foo::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class Bar extends core::Object {
   synthetic constructor •() → self::Bar*
     : super core::Object::•()
     ;
   abstract method fisk<S extends self::Foo<self::Bar::fisk::S*>* = self::Foo<dynamic>*>() → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Hest extends core::Object implements self::Bar {
   synthetic constructor •() → self::Hest*
@@ -19,6 +39,16 @@
     ;
   @#C1
   method fisk<U extends self::Foo<self::Hest::fisk::U*>* = self::Foo<dynamic>*>() → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → void {}
 
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/override_check_generic_method_f_bounded.dart.strong.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/override_check_generic_method_f_bounded.dart.strong.transformed.expect
index 5b088fe..e856790 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/override_check_generic_method_f_bounded.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/override_check_generic_method_f_bounded.dart.strong.transformed.expect
@@ -6,12 +6,32 @@
   synthetic constructor •() → self::Foo<self::Foo::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class Bar extends core::Object {
   synthetic constructor •() → self::Bar*
     : super core::Object::•()
     ;
   abstract method fisk<S extends self::Foo<self::Bar::fisk::S*>* = self::Foo<dynamic>*>() → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Hest extends core::Object implements self::Bar {
   synthetic constructor •() → self::Hest*
@@ -19,6 +39,16 @@
     ;
   @#C1
   method fisk<U extends self::Foo<self::Hest::fisk::U*>* = self::Foo<dynamic>*>() → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → void {}
 
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/override_check_generic_method_f_bounded.dart.weak.expect b/pkg/front_end/testcases/general_nnbd_opt_out/override_check_generic_method_f_bounded.dart.weak.expect
index 5b088fe..e856790 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/override_check_generic_method_f_bounded.dart.weak.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/override_check_generic_method_f_bounded.dart.weak.expect
@@ -6,12 +6,32 @@
   synthetic constructor •() → self::Foo<self::Foo::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class Bar extends core::Object {
   synthetic constructor •() → self::Bar*
     : super core::Object::•()
     ;
   abstract method fisk<S extends self::Foo<self::Bar::fisk::S*>* = self::Foo<dynamic>*>() → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Hest extends core::Object implements self::Bar {
   synthetic constructor •() → self::Hest*
@@ -19,6 +39,16 @@
     ;
   @#C1
   method fisk<U extends self::Foo<self::Hest::fisk::U*>* = self::Foo<dynamic>*>() → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → void {}
 
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/override_check_generic_method_f_bounded.dart.weak.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/override_check_generic_method_f_bounded.dart.weak.transformed.expect
index 5b088fe..e856790 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/override_check_generic_method_f_bounded.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/override_check_generic_method_f_bounded.dart.weak.transformed.expect
@@ -6,12 +6,32 @@
   synthetic constructor •() → self::Foo<self::Foo::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class Bar extends core::Object {
   synthetic constructor •() → self::Bar*
     : super core::Object::•()
     ;
   abstract method fisk<S extends self::Foo<self::Bar::fisk::S*>* = self::Foo<dynamic>*>() → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Hest extends core::Object implements self::Bar {
   synthetic constructor •() → self::Hest*
@@ -19,6 +39,16 @@
     ;
   @#C1
   method fisk<U extends self::Foo<self::Hest::fisk::U*>* = self::Foo<dynamic>*>() → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → void {}
 
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/override_check_two_substitutions.dart.outline.expect b/pkg/front_end/testcases/general_nnbd_opt_out/override_check_two_substitutions.dart.outline.expect
index 3cc6944..7889af0 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/override_check_two_substitutions.dart.outline.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/override_check_two_substitutions.dart.outline.expect
@@ -7,6 +7,16 @@
     ;
   method f<U extends core::Object* = dynamic>(generic-covariant-impl core::Map<self::A::T*, self::A::f::U*>* m) → void
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A<core::String*> {
   synthetic constructor •() → self::B*
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/override_check_two_substitutions.dart.strong.expect b/pkg/front_end/testcases/general_nnbd_opt_out/override_check_two_substitutions.dart.strong.expect
index ac75a46..5175275 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/override_check_two_substitutions.dart.strong.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/override_check_two_substitutions.dart.strong.expect
@@ -7,6 +7,16 @@
     : super core::Object::•()
     ;
   method f<U extends core::Object* = dynamic>(generic-covariant-impl core::Map<self::A::T*, self::A::f::U*>* m) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A<core::String*> {
   synthetic constructor •() → self::B*
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/override_check_two_substitutions.dart.strong.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/override_check_two_substitutions.dart.strong.transformed.expect
index ac75a46..5175275 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/override_check_two_substitutions.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/override_check_two_substitutions.dart.strong.transformed.expect
@@ -7,6 +7,16 @@
     : super core::Object::•()
     ;
   method f<U extends core::Object* = dynamic>(generic-covariant-impl core::Map<self::A::T*, self::A::f::U*>* m) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A<core::String*> {
   synthetic constructor •() → self::B*
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/override_check_two_substitutions.dart.weak.expect b/pkg/front_end/testcases/general_nnbd_opt_out/override_check_two_substitutions.dart.weak.expect
index ac75a46..5175275 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/override_check_two_substitutions.dart.weak.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/override_check_two_substitutions.dart.weak.expect
@@ -7,6 +7,16 @@
     : super core::Object::•()
     ;
   method f<U extends core::Object* = dynamic>(generic-covariant-impl core::Map<self::A::T*, self::A::f::U*>* m) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A<core::String*> {
   synthetic constructor •() → self::B*
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/override_check_two_substitutions.dart.weak.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/override_check_two_substitutions.dart.weak.transformed.expect
index ac75a46..5175275 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/override_check_two_substitutions.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/override_check_two_substitutions.dart.weak.transformed.expect
@@ -7,6 +7,16 @@
     : super core::Object::•()
     ;
   method f<U extends core::Object* = dynamic>(generic-covariant-impl core::Map<self::A::T*, self::A::f::U*>* m) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A<core::String*> {
   synthetic constructor •() → self::B*
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/override_check_with_covariant_modifier.dart.outline.expect b/pkg/front_end/testcases/general_nnbd_opt_out/override_check_with_covariant_modifier.dart.outline.expect
index 34dec1e..c11a6db 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/override_check_with_covariant_modifier.dart.outline.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/override_check_with_covariant_modifier.dart.outline.expect
@@ -27,6 +27,16 @@
 class A extends core::Object {
   synthetic constructor •() → self::A*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A {
   synthetic constructor •() → self::B*
@@ -47,6 +57,16 @@
     ;
   method f6(covariant self::B* x) → void
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D extends self::C {
   synthetic constructor •() → self::D*
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/override_check_with_covariant_modifier.dart.strong.expect b/pkg/front_end/testcases/general_nnbd_opt_out/override_check_with_covariant_modifier.dart.strong.expect
index 695cb19..a699a83 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/override_check_with_covariant_modifier.dart.strong.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/override_check_with_covariant_modifier.dart.strong.expect
@@ -28,6 +28,16 @@
   synthetic constructor •() → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A {
   synthetic constructor •() → self::B*
@@ -44,6 +54,16 @@
   method f4(self::A* x) → void {}
   method f5(covariant self::A* x) → void {}
   method f6(covariant self::B* x) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D extends self::C {
   synthetic constructor •() → self::D*
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/override_check_with_covariant_modifier.dart.weak.expect b/pkg/front_end/testcases/general_nnbd_opt_out/override_check_with_covariant_modifier.dart.weak.expect
index 695cb19..a699a83 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/override_check_with_covariant_modifier.dart.weak.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/override_check_with_covariant_modifier.dart.weak.expect
@@ -28,6 +28,16 @@
   synthetic constructor •() → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A {
   synthetic constructor •() → self::B*
@@ -44,6 +54,16 @@
   method f4(self::A* x) → void {}
   method f5(covariant self::A* x) → void {}
   method f6(covariant self::B* x) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D extends self::C {
   synthetic constructor •() → self::D*
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/override_inference_for_setters.dart.outline.expect b/pkg/front_end/testcases/general_nnbd_opt_out/override_inference_for_setters.dart.outline.expect
index 88d2cc3..0e42fd6 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/override_inference_for_setters.dart.outline.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/override_inference_for_setters.dart.outline.expect
@@ -9,6 +9,16 @@
     ;
   set foo(dynamic newFoo) → void
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class A extends self::B {
   synthetic constructor •() → self::A*
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/override_inference_for_setters.dart.strong.expect b/pkg/front_end/testcases/general_nnbd_opt_out/override_inference_for_setters.dart.strong.expect
index 648154f..a029b39 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/override_inference_for_setters.dart.strong.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/override_inference_for_setters.dart.strong.expect
@@ -9,6 +9,16 @@
   get foo() → core::num*
     return null;
   set foo(dynamic newFoo) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class A extends self::B {
   synthetic constructor •() → self::A*
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/override_inference_for_setters.dart.strong.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/override_inference_for_setters.dart.strong.transformed.expect
index 648154f..a029b39 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/override_inference_for_setters.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/override_inference_for_setters.dart.strong.transformed.expect
@@ -9,6 +9,16 @@
   get foo() → core::num*
     return null;
   set foo(dynamic newFoo) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class A extends self::B {
   synthetic constructor •() → self::A*
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/override_inference_for_setters.dart.weak.expect b/pkg/front_end/testcases/general_nnbd_opt_out/override_inference_for_setters.dart.weak.expect
index 648154f..a029b39 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/override_inference_for_setters.dart.weak.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/override_inference_for_setters.dart.weak.expect
@@ -9,6 +9,16 @@
   get foo() → core::num*
     return null;
   set foo(dynamic newFoo) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class A extends self::B {
   synthetic constructor •() → self::A*
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/override_inference_for_setters.dart.weak.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/override_inference_for_setters.dart.weak.transformed.expect
index 648154f..a029b39 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/override_inference_for_setters.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/override_inference_for_setters.dart.weak.transformed.expect
@@ -9,6 +9,16 @@
   get foo() → core::num*
     return null;
   set foo(dynamic newFoo) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class A extends self::B {
   synthetic constructor •() → self::A*
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/override_inference_named_parameters_ordering.dart.outline.expect b/pkg/front_end/testcases/general_nnbd_opt_out/override_inference_named_parameters_ordering.dart.outline.expect
index bdf6a97..6633e9b 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/override_inference_named_parameters_ordering.dart.outline.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/override_inference_named_parameters_ordering.dart.outline.expect
@@ -7,6 +7,16 @@
     ;
   method foo({core::bool* c = true, core::bool* a}) → dynamic
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A {
   synthetic constructor •() → self::B*
@@ -25,6 +35,16 @@
     ;
   method foo({core::bool* a = true, core::bool* c}) → dynamic
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B1 extends self::A1 {
   synthetic constructor •() → self::B1*
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/override_inference_named_parameters_ordering.dart.strong.expect b/pkg/front_end/testcases/general_nnbd_opt_out/override_inference_named_parameters_ordering.dart.strong.expect
index 635d689..eaa0ca6 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/override_inference_named_parameters_ordering.dart.strong.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/override_inference_named_parameters_ordering.dart.strong.expect
@@ -7,6 +7,16 @@
     : super core::Object::•()
     ;
   method foo({core::bool* c = #C1, core::bool* a = #C2}) → dynamic {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A {
   synthetic constructor •() → self::B*
@@ -25,6 +35,16 @@
     : super core::Object::•()
     ;
   method foo({core::bool* a = #C1, core::bool* c = #C2}) → dynamic {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B1 extends self::A1 {
   synthetic constructor •() → self::B1*
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/override_inference_named_parameters_ordering.dart.strong.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/override_inference_named_parameters_ordering.dart.strong.transformed.expect
index 635d689..eaa0ca6 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/override_inference_named_parameters_ordering.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/override_inference_named_parameters_ordering.dart.strong.transformed.expect
@@ -7,6 +7,16 @@
     : super core::Object::•()
     ;
   method foo({core::bool* c = #C1, core::bool* a = #C2}) → dynamic {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A {
   synthetic constructor •() → self::B*
@@ -25,6 +35,16 @@
     : super core::Object::•()
     ;
   method foo({core::bool* a = #C1, core::bool* c = #C2}) → dynamic {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B1 extends self::A1 {
   synthetic constructor •() → self::B1*
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/override_inference_named_parameters_ordering.dart.weak.expect b/pkg/front_end/testcases/general_nnbd_opt_out/override_inference_named_parameters_ordering.dart.weak.expect
index 635d689..eaa0ca6 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/override_inference_named_parameters_ordering.dart.weak.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/override_inference_named_parameters_ordering.dart.weak.expect
@@ -7,6 +7,16 @@
     : super core::Object::•()
     ;
   method foo({core::bool* c = #C1, core::bool* a = #C2}) → dynamic {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A {
   synthetic constructor •() → self::B*
@@ -25,6 +35,16 @@
     : super core::Object::•()
     ;
   method foo({core::bool* a = #C1, core::bool* c = #C2}) → dynamic {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B1 extends self::A1 {
   synthetic constructor •() → self::B1*
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/override_inference_named_parameters_ordering.dart.weak.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/override_inference_named_parameters_ordering.dart.weak.transformed.expect
index 635d689..eaa0ca6 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/override_inference_named_parameters_ordering.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/override_inference_named_parameters_ordering.dart.weak.transformed.expect
@@ -7,6 +7,16 @@
     : super core::Object::•()
     ;
   method foo({core::bool* c = #C1, core::bool* a = #C2}) → dynamic {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A {
   synthetic constructor •() → self::B*
@@ -25,6 +35,16 @@
     : super core::Object::•()
     ;
   method foo({core::bool* a = #C1, core::bool* c = #C2}) → dynamic {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B1 extends self::A1 {
   synthetic constructor •() → self::B1*
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/override_setter_with_field.dart.outline.expect b/pkg/front_end/testcases/general_nnbd_opt_out/override_setter_with_field.dart.outline.expect
index 547a357..5381f96 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/override_setter_with_field.dart.outline.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/override_setter_with_field.dart.outline.expect
@@ -17,11 +17,31 @@
   synthetic constructor •() → self::A*
     ;
   abstract set x(core::Object* y) → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends core::Object implements self::A {
   field core::int* x;
   synthetic constructor •() → self::B*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/override_setter_with_field.dart.strong.expect b/pkg/front_end/testcases/general_nnbd_opt_out/override_setter_with_field.dart.strong.expect
index 4467958..e40a4db 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/override_setter_with_field.dart.strong.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/override_setter_with_field.dart.strong.expect
@@ -18,12 +18,32 @@
     : super core::Object::•()
     ;
   abstract set x(core::Object* y) → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends core::Object implements self::A {
   field core::int* x = null;
   synthetic constructor •() → self::B*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   new self::B::•().{self::B::x} = 5;
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/override_setter_with_field.dart.weak.expect b/pkg/front_end/testcases/general_nnbd_opt_out/override_setter_with_field.dart.weak.expect
index 4467958..e40a4db 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/override_setter_with_field.dart.weak.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/override_setter_with_field.dart.weak.expect
@@ -18,12 +18,32 @@
     : super core::Object::•()
     ;
   abstract set x(core::Object* y) → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends core::Object implements self::A {
   field core::int* x = null;
   synthetic constructor •() → self::B*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   new self::B::•().{self::B::x} = 5;
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/prefer_baseclass.dart.outline.expect b/pkg/front_end/testcases/general_nnbd_opt_out/prefer_baseclass.dart.outline.expect
index c337c34..ffbffbc 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/prefer_baseclass.dart.outline.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/prefer_baseclass.dart.outline.expect
@@ -5,10 +5,30 @@
 class A extends core::Object {
   synthetic constructor •() → self::A*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends core::Object {
   synthetic constructor •() → self::B*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class AB1 extends self::A implements self::B {
   synthetic constructor •() → self::AB1*
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/prefer_baseclass.dart.strong.expect b/pkg/front_end/testcases/general_nnbd_opt_out/prefer_baseclass.dart.strong.expect
index d3d9325..bdb5c91 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/prefer_baseclass.dart.strong.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/prefer_baseclass.dart.strong.expect
@@ -6,11 +6,31 @@
   synthetic constructor •() → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends core::Object {
   synthetic constructor •() → self::B*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class AB1 extends self::A implements self::B {
   synthetic constructor •() → self::AB1*
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/prefer_baseclass.dart.strong.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/prefer_baseclass.dart.strong.transformed.expect
index d3d9325..bdb5c91 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/prefer_baseclass.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/prefer_baseclass.dart.strong.transformed.expect
@@ -6,11 +6,31 @@
   synthetic constructor •() → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends core::Object {
   synthetic constructor •() → self::B*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class AB1 extends self::A implements self::B {
   synthetic constructor •() → self::AB1*
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/prefer_baseclass.dart.weak.expect b/pkg/front_end/testcases/general_nnbd_opt_out/prefer_baseclass.dart.weak.expect
index d3d9325..bdb5c91 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/prefer_baseclass.dart.weak.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/prefer_baseclass.dart.weak.expect
@@ -6,11 +6,31 @@
   synthetic constructor •() → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends core::Object {
   synthetic constructor •() → self::B*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class AB1 extends self::A implements self::B {
   synthetic constructor •() → self::AB1*
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/prefer_baseclass.dart.weak.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/prefer_baseclass.dart.weak.transformed.expect
index d3d9325..bdb5c91 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/prefer_baseclass.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/prefer_baseclass.dart.weak.transformed.expect
@@ -6,11 +6,31 @@
   synthetic constructor •() → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends core::Object {
   synthetic constructor •() → self::B*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class AB1 extends self::A implements self::B {
   synthetic constructor •() → self::AB1*
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/private_method_tearoff.dart.outline.expect b/pkg/front_end/testcases/general_nnbd_opt_out/private_method_tearoff.dart.outline.expect
index 90d37ed..5f23e62 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/private_method_tearoff.dart.outline.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/private_method_tearoff.dart.outline.expect
@@ -8,8 +8,18 @@
 class Foo extends core::Object implements pri::Bar {
   synthetic constructor •() → self::Foo*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
   no-such-method-forwarder method /* from org-dartlang-testcase:///private_method_tearoff_lib.dart */ _f() → void
-    return this.{core::Object::noSuchMethod}(new core::_InvocationMirror::_withType(#_f, 0, const <core::Type*>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{})));
+    return this.{self::Foo::noSuchMethod}(new core::_InvocationMirror::_withType(#_f, 0, const <core::Type*>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{})));
 }
 class Baz extends self::Foo {
   synthetic constructor •() → self::Baz*
@@ -27,6 +37,16 @@
     ;
   method _f() → void
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method baz(pri::Bar* bar) → void
   ;
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/private_method_tearoff.dart.strong.expect b/pkg/front_end/testcases/general_nnbd_opt_out/private_method_tearoff.dart.strong.expect
index 7289dfe..44d44f9 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/private_method_tearoff.dart.strong.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/private_method_tearoff.dart.strong.expect
@@ -9,8 +9,18 @@
   synthetic constructor •() → self::Foo*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
   no-such-method-forwarder method /* from org-dartlang-testcase:///private_method_tearoff_lib.dart */ _f() → void
-    return this.{core::Object::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
+    return this.{self::Foo::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
 }
 class Baz extends self::Foo {
   synthetic constructor •() → self::Baz*
@@ -30,6 +40,16 @@
     : super core::Object::•()
     ;
   method _f() → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method baz(pri::Bar* bar) → void {
   core::print("${bar.{pri::Bar::_f}.{core::Object::runtimeType}}");
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/private_method_tearoff.dart.strong.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/private_method_tearoff.dart.strong.transformed.expect
index 7289dfe..44d44f9 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/private_method_tearoff.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/private_method_tearoff.dart.strong.transformed.expect
@@ -9,8 +9,18 @@
   synthetic constructor •() → self::Foo*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
   no-such-method-forwarder method /* from org-dartlang-testcase:///private_method_tearoff_lib.dart */ _f() → void
-    return this.{core::Object::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
+    return this.{self::Foo::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
 }
 class Baz extends self::Foo {
   synthetic constructor •() → self::Baz*
@@ -30,6 +40,16 @@
     : super core::Object::•()
     ;
   method _f() → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method baz(pri::Bar* bar) → void {
   core::print("${bar.{pri::Bar::_f}.{core::Object::runtimeType}}");
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/private_method_tearoff.dart.weak.expect b/pkg/front_end/testcases/general_nnbd_opt_out/private_method_tearoff.dart.weak.expect
index 7289dfe..44d44f9 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/private_method_tearoff.dart.weak.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/private_method_tearoff.dart.weak.expect
@@ -9,8 +9,18 @@
   synthetic constructor •() → self::Foo*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
   no-such-method-forwarder method /* from org-dartlang-testcase:///private_method_tearoff_lib.dart */ _f() → void
-    return this.{core::Object::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
+    return this.{self::Foo::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
 }
 class Baz extends self::Foo {
   synthetic constructor •() → self::Baz*
@@ -30,6 +40,16 @@
     : super core::Object::•()
     ;
   method _f() → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method baz(pri::Bar* bar) → void {
   core::print("${bar.{pri::Bar::_f}.{core::Object::runtimeType}}");
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/private_method_tearoff.dart.weak.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/private_method_tearoff.dart.weak.transformed.expect
index 7289dfe..44d44f9 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/private_method_tearoff.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/private_method_tearoff.dart.weak.transformed.expect
@@ -9,8 +9,18 @@
   synthetic constructor •() → self::Foo*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
   no-such-method-forwarder method /* from org-dartlang-testcase:///private_method_tearoff_lib.dart */ _f() → void
-    return this.{core::Object::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
+    return this.{self::Foo::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
 }
 class Baz extends self::Foo {
   synthetic constructor •() → self::Baz*
@@ -30,6 +40,16 @@
     : super core::Object::•()
     ;
   method _f() → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method baz(pri::Bar* bar) → void {
   core::print("${bar.{pri::Bar::_f}.{core::Object::runtimeType}}");
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/promoted_access.dart.outline.expect b/pkg/front_end/testcases/general_nnbd_opt_out/promoted_access.dart.outline.expect
index 255851a..6a09285 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/promoted_access.dart.outline.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/promoted_access.dart.outline.expect
@@ -7,6 +7,16 @@
     ;
   method method(generic-covariant-impl self::Class::T* o) → dynamic
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method method<T extends core::Object* = dynamic>(self::method::T* o) → dynamic
   ;
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/promoted_access.dart.strong.expect b/pkg/front_end/testcases/general_nnbd_opt_out/promoted_access.dart.strong.expect
index a16b916..d3f9a16 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/promoted_access.dart.strong.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/promoted_access.dart.strong.expect
@@ -11,6 +11,16 @@
       o{self::Class::T* & self::Class<dynamic>* /* '*' & '*' = '*' */}.{self::Class::method}(null);
     }
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method method<T extends core::Object* = dynamic>(self::method::T* o) → dynamic {
   if(o is self::Class<dynamic>*) {
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/promoted_access.dart.strong.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/promoted_access.dart.strong.transformed.expect
index a16b916..d3f9a16 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/promoted_access.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/promoted_access.dart.strong.transformed.expect
@@ -11,6 +11,16 @@
       o{self::Class::T* & self::Class<dynamic>* /* '*' & '*' = '*' */}.{self::Class::method}(null);
     }
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method method<T extends core::Object* = dynamic>(self::method::T* o) → dynamic {
   if(o is self::Class<dynamic>*) {
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/promoted_access.dart.weak.expect b/pkg/front_end/testcases/general_nnbd_opt_out/promoted_access.dart.weak.expect
index a16b916..d3f9a16 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/promoted_access.dart.weak.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/promoted_access.dart.weak.expect
@@ -11,6 +11,16 @@
       o{self::Class::T* & self::Class<dynamic>* /* '*' & '*' = '*' */}.{self::Class::method}(null);
     }
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method method<T extends core::Object* = dynamic>(self::method::T* o) → dynamic {
   if(o is self::Class<dynamic>*) {
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/promoted_access.dart.weak.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/promoted_access.dart.weak.transformed.expect
index a16b916..d3f9a16 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/promoted_access.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/promoted_access.dart.weak.transformed.expect
@@ -11,6 +11,16 @@
       o{self::Class::T* & self::Class<dynamic>* /* '*' & '*' = '*' */}.{self::Class::method}(null);
     }
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method method<T extends core::Object* = dynamic>(self::method::T* o) → dynamic {
   if(o is self::Class<dynamic>*) {
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/public_method_tearoff.dart.outline.expect b/pkg/front_end/testcases/general_nnbd_opt_out/public_method_tearoff.dart.outline.expect
index 9053c8b..1199c7d 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/public_method_tearoff.dart.outline.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/public_method_tearoff.dart.outline.expect
@@ -20,6 +20,16 @@
     ;
   method f() → void
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method baz(pub::Bar* bar) → void
   ;
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/public_method_tearoff.dart.strong.expect b/pkg/front_end/testcases/general_nnbd_opt_out/public_method_tearoff.dart.strong.expect
index a5772cd..888c514 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/public_method_tearoff.dart.strong.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/public_method_tearoff.dart.strong.expect
@@ -22,6 +22,16 @@
     : super core::Object::•()
     ;
   method f() → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method baz(pub::Bar* bar) → void {
   core::print("${bar.{pub::Bar::f}.{core::Object::runtimeType}}");
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/public_method_tearoff.dart.strong.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/public_method_tearoff.dart.strong.transformed.expect
index a5772cd..888c514 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/public_method_tearoff.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/public_method_tearoff.dart.strong.transformed.expect
@@ -22,6 +22,16 @@
     : super core::Object::•()
     ;
   method f() → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method baz(pub::Bar* bar) → void {
   core::print("${bar.{pub::Bar::f}.{core::Object::runtimeType}}");
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/public_method_tearoff.dart.weak.expect b/pkg/front_end/testcases/general_nnbd_opt_out/public_method_tearoff.dart.weak.expect
index a5772cd..888c514 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/public_method_tearoff.dart.weak.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/public_method_tearoff.dart.weak.expect
@@ -22,6 +22,16 @@
     : super core::Object::•()
     ;
   method f() → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method baz(pub::Bar* bar) → void {
   core::print("${bar.{pub::Bar::f}.{core::Object::runtimeType}}");
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/public_method_tearoff.dart.weak.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/public_method_tearoff.dart.weak.transformed.expect
index a5772cd..888c514 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/public_method_tearoff.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/public_method_tearoff.dart.weak.transformed.expect
@@ -22,6 +22,16 @@
     : super core::Object::•()
     ;
   method f() → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method baz(pub::Bar* bar) → void {
   core::print("${bar.{pub::Bar::f}.{core::Object::runtimeType}}");
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/qualified.dart.outline.expect b/pkg/front_end/testcases/general_nnbd_opt_out/qualified.dart.outline.expect
index 5d86d97..5d79dea 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/qualified.dart.outline.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/qualified.dart.outline.expect
@@ -20,6 +20,9 @@
 // pkg/front_end/testcases/general_nnbd_opt_out/qualified.dart:20:7: Error: The type 'lib.VoidFunction' can't be used as supertype.
 // class IllegalSupertype extends lib.VoidFunction {}
 //       ^
+// pkg/front_end/testcases/general_nnbd_opt_out/qualified_lib.dart:29:9: Context: The issue arises via this type alias.
+// typedef VoidFunction = void Function();
+//         ^
 //
 import self as self;
 import "dart:core" as core;
@@ -33,6 +36,16 @@
     ;
   static factory WrongName() → self::Bad*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class _WithMixin&Supertype&Mixin = lib::Supertype with lib::Mixin /*isAnonymousMixin*/  {
   synthetic constructor •() → self::_WithMixin&Supertype&Mixin*
@@ -46,6 +59,16 @@
 class IllegalSupertype extends core::Object {
   synthetic constructor •() → self::IllegalSupertype*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C<T extends core::Object* = dynamic> extends core::Object { // from org-dartlang-testcase:///qualified_part.dart
   static field dynamic _redirecting# = <dynamic>[self::C::b];
@@ -55,6 +78,16 @@
     ;
   static factory b<T extends core::Object* = dynamic>() → self::C<self::C::b::T*>*
     let dynamic #redirecting_factory = lib::C::b in let self::C::b::T* #typeArg0 = null in invalid-expression;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
@@ -81,10 +114,30 @@
     ;
   method supertypeMethod() → dynamic
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class Mixin extends core::Object {
   synthetic constructor •() → lib::Mixin*
     ;
   method foo() → dynamic
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/qualified.dart.strong.expect b/pkg/front_end/testcases/general_nnbd_opt_out/qualified.dart.strong.expect
index 466b5c2..610fabb 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/qualified.dart.strong.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/qualified.dart.strong.expect
@@ -20,6 +20,9 @@
 // pkg/front_end/testcases/general_nnbd_opt_out/qualified.dart:20:7: Error: The type 'lib.VoidFunction' can't be used as supertype.
 // class IllegalSupertype extends lib.VoidFunction {}
 //       ^
+// pkg/front_end/testcases/general_nnbd_opt_out/qualified_lib.dart:29:9: Context: The issue arises via this type alias.
+// typedef VoidFunction = void Function();
+//         ^
 //
 import self as self;
 import "dart:core" as core;
@@ -31,6 +34,16 @@
 class Bad extends core::Object {
   method method() → invalid-type {}
   static factory WrongName() → self::Bad* {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class _WithMixin&Supertype&Mixin = lib::Supertype with lib::Mixin /*isAnonymousMixin*/  {
   synthetic constructor •() → self::_WithMixin&Supertype&Mixin*
@@ -46,6 +59,16 @@
   synthetic constructor •() → self::IllegalSupertype*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C<T extends core::Object* = dynamic> extends core::Object { // from org-dartlang-testcase:///qualified_part.dart
   static field dynamic _redirecting# = <dynamic>[self::C::b];
@@ -57,6 +80,16 @@
     ;
   static factory b<T extends core::Object* = dynamic>() → self::C<self::C::b::T*>*
     let dynamic #redirecting_factory = lib::C::b in let self::C::b::T* #typeArg0 = null in invalid-expression;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   new self::C::•<core::String*>();
@@ -96,6 +129,16 @@
   method supertypeMethod() → dynamic {
     core::print("I'm supertypeMethod form lib.Supertype");
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class Mixin extends core::Object {
   synthetic constructor •() → lib::Mixin*
@@ -104,4 +147,14 @@
   method foo() → dynamic {
     core::print("I'm Mixin.foo");
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/qualified.dart.strong.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/qualified.dart.strong.transformed.expect
index 8266865..a6f1ca3 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/qualified.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/qualified.dart.strong.transformed.expect
@@ -20,6 +20,9 @@
 // pkg/front_end/testcases/general_nnbd_opt_out/qualified.dart:20:7: Error: The type 'lib.VoidFunction' can't be used as supertype.
 // class IllegalSupertype extends lib.VoidFunction {}
 //       ^
+// pkg/front_end/testcases/general_nnbd_opt_out/qualified_lib.dart:29:9: Context: The issue arises via this type alias.
+// typedef VoidFunction = void Function();
+//         ^
 //
 import self as self;
 import "dart:core" as core;
@@ -31,6 +34,16 @@
 class Bad extends core::Object {
   method method() → invalid-type {}
   static factory WrongName() → self::Bad* {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class _WithMixin&Supertype&Mixin extends lib::Supertype implements lib::Mixin /*isAnonymousMixin,isEliminatedMixin*/  {
   synthetic constructor •() → self::_WithMixin&Supertype&Mixin*
@@ -39,6 +52,16 @@
   method /* from org-dartlang-testcase:///qualified_lib.dart */ foo() → dynamic {
     core::print("I'm Mixin.foo");
   }
+  abstract member-signature get /* from org-dartlang-testcase:///qualified_lib.dart */ _identityHashCode() → core::int*;
+  abstract member-signature method /* from org-dartlang-testcase:///qualified_lib.dart */ _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method /* from org-dartlang-testcase:///qualified_lib.dart */ _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method /* from org-dartlang-testcase:///qualified_lib.dart */ _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method /* from org-dartlang-testcase:///qualified_lib.dart */ _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator /* from org-dartlang-testcase:///qualified_lib.dart */ ==(dynamic other) → core::bool*;
+  abstract member-signature get /* from org-dartlang-testcase:///qualified_lib.dart */ hashCode() → core::int*;
+  abstract member-signature method /* from org-dartlang-testcase:///qualified_lib.dart */ toString() → core::String*;
+  abstract member-signature method /* from org-dartlang-testcase:///qualified_lib.dart */ noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get /* from org-dartlang-testcase:///qualified_lib.dart */ runtimeType() → core::Type*;
 }
 class WithMixin extends self::_WithMixin&Supertype&Mixin {
   synthetic constructor •() → self::WithMixin*
@@ -49,6 +72,16 @@
   synthetic constructor •() → self::IllegalSupertype*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C<T extends core::Object* = dynamic> extends core::Object { // from org-dartlang-testcase:///qualified_part.dart
   static field dynamic _redirecting# = <dynamic>[self::C::b];
@@ -60,6 +93,16 @@
     ;
   static factory b<T extends core::Object* = dynamic>() → self::C<self::C::b::T*>*
     let <T extends core::Object* = dynamic>() →* lib::C<T*>* #redirecting_factory = lib::C::b in let self::C::b::T* #typeArg0 = null in invalid-expression;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   new self::C::•<core::String*>();
@@ -99,6 +142,16 @@
   method supertypeMethod() → dynamic {
     core::print("I'm supertypeMethod form lib.Supertype");
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class Mixin extends core::Object {
   synthetic constructor •() → lib::Mixin*
@@ -107,4 +160,14 @@
   method foo() → dynamic {
     core::print("I'm Mixin.foo");
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/qualified.dart.weak.expect b/pkg/front_end/testcases/general_nnbd_opt_out/qualified.dart.weak.expect
index 466b5c2..610fabb 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/qualified.dart.weak.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/qualified.dart.weak.expect
@@ -20,6 +20,9 @@
 // pkg/front_end/testcases/general_nnbd_opt_out/qualified.dart:20:7: Error: The type 'lib.VoidFunction' can't be used as supertype.
 // class IllegalSupertype extends lib.VoidFunction {}
 //       ^
+// pkg/front_end/testcases/general_nnbd_opt_out/qualified_lib.dart:29:9: Context: The issue arises via this type alias.
+// typedef VoidFunction = void Function();
+//         ^
 //
 import self as self;
 import "dart:core" as core;
@@ -31,6 +34,16 @@
 class Bad extends core::Object {
   method method() → invalid-type {}
   static factory WrongName() → self::Bad* {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class _WithMixin&Supertype&Mixin = lib::Supertype with lib::Mixin /*isAnonymousMixin*/  {
   synthetic constructor •() → self::_WithMixin&Supertype&Mixin*
@@ -46,6 +59,16 @@
   synthetic constructor •() → self::IllegalSupertype*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C<T extends core::Object* = dynamic> extends core::Object { // from org-dartlang-testcase:///qualified_part.dart
   static field dynamic _redirecting# = <dynamic>[self::C::b];
@@ -57,6 +80,16 @@
     ;
   static factory b<T extends core::Object* = dynamic>() → self::C<self::C::b::T*>*
     let dynamic #redirecting_factory = lib::C::b in let self::C::b::T* #typeArg0 = null in invalid-expression;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   new self::C::•<core::String*>();
@@ -96,6 +129,16 @@
   method supertypeMethod() → dynamic {
     core::print("I'm supertypeMethod form lib.Supertype");
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class Mixin extends core::Object {
   synthetic constructor •() → lib::Mixin*
@@ -104,4 +147,14 @@
   method foo() → dynamic {
     core::print("I'm Mixin.foo");
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/qualified.dart.weak.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/qualified.dart.weak.transformed.expect
index 8266865..a6f1ca3 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/qualified.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/qualified.dart.weak.transformed.expect
@@ -20,6 +20,9 @@
 // pkg/front_end/testcases/general_nnbd_opt_out/qualified.dart:20:7: Error: The type 'lib.VoidFunction' can't be used as supertype.
 // class IllegalSupertype extends lib.VoidFunction {}
 //       ^
+// pkg/front_end/testcases/general_nnbd_opt_out/qualified_lib.dart:29:9: Context: The issue arises via this type alias.
+// typedef VoidFunction = void Function();
+//         ^
 //
 import self as self;
 import "dart:core" as core;
@@ -31,6 +34,16 @@
 class Bad extends core::Object {
   method method() → invalid-type {}
   static factory WrongName() → self::Bad* {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class _WithMixin&Supertype&Mixin extends lib::Supertype implements lib::Mixin /*isAnonymousMixin,isEliminatedMixin*/  {
   synthetic constructor •() → self::_WithMixin&Supertype&Mixin*
@@ -39,6 +52,16 @@
   method /* from org-dartlang-testcase:///qualified_lib.dart */ foo() → dynamic {
     core::print("I'm Mixin.foo");
   }
+  abstract member-signature get /* from org-dartlang-testcase:///qualified_lib.dart */ _identityHashCode() → core::int*;
+  abstract member-signature method /* from org-dartlang-testcase:///qualified_lib.dart */ _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method /* from org-dartlang-testcase:///qualified_lib.dart */ _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method /* from org-dartlang-testcase:///qualified_lib.dart */ _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method /* from org-dartlang-testcase:///qualified_lib.dart */ _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator /* from org-dartlang-testcase:///qualified_lib.dart */ ==(dynamic other) → core::bool*;
+  abstract member-signature get /* from org-dartlang-testcase:///qualified_lib.dart */ hashCode() → core::int*;
+  abstract member-signature method /* from org-dartlang-testcase:///qualified_lib.dart */ toString() → core::String*;
+  abstract member-signature method /* from org-dartlang-testcase:///qualified_lib.dart */ noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get /* from org-dartlang-testcase:///qualified_lib.dart */ runtimeType() → core::Type*;
 }
 class WithMixin extends self::_WithMixin&Supertype&Mixin {
   synthetic constructor •() → self::WithMixin*
@@ -49,6 +72,16 @@
   synthetic constructor •() → self::IllegalSupertype*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C<T extends core::Object* = dynamic> extends core::Object { // from org-dartlang-testcase:///qualified_part.dart
   static field dynamic _redirecting# = <dynamic>[self::C::b];
@@ -60,6 +93,16 @@
     ;
   static factory b<T extends core::Object* = dynamic>() → self::C<self::C::b::T*>*
     let <T extends core::Object* = dynamic>() →* lib::C<T*>* #redirecting_factory = lib::C::b in let self::C::b::T* #typeArg0 = null in invalid-expression;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   new self::C::•<core::String*>();
@@ -99,6 +142,16 @@
   method supertypeMethod() → dynamic {
     core::print("I'm supertypeMethod form lib.Supertype");
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class Mixin extends core::Object {
   synthetic constructor •() → lib::Mixin*
@@ -107,4 +160,14 @@
   method foo() → dynamic {
     core::print("I'm Mixin.foo");
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_constructor.dart.outline.expect b/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_constructor.dart.outline.expect
index 9914c1b..27a58f0 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_constructor.dart.outline.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_constructor.dart.outline.expect
@@ -8,6 +8,16 @@
     ;
   static factory fisk() → self::A*
     let dynamic #redirecting_factory = self::B::• in invalid-expression;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A {
   synthetic constructor •() → self::B*
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_constructor.dart.strong.expect b/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_constructor.dart.strong.expect
index 64d4160..9319f4c 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_constructor.dart.strong.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_constructor.dart.strong.expect
@@ -9,6 +9,16 @@
     ;
   static factory fisk() → self::A*
     let dynamic #redirecting_factory = self::B::• in invalid-expression;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A {
   synthetic constructor •() → self::B*
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_constructor.dart.strong.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_constructor.dart.strong.transformed.expect
index aa1e6b1..e1616fd 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_constructor.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_constructor.dart.strong.transformed.expect
@@ -9,6 +9,16 @@
     ;
   static factory fisk() → self::A*
     let<BottomType> #redirecting_factory = self::B::• in invalid-expression;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A {
   synthetic constructor •() → self::B*
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_constructor.dart.weak.expect b/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_constructor.dart.weak.expect
index 64d4160..9319f4c 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_constructor.dart.weak.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_constructor.dart.weak.expect
@@ -9,6 +9,16 @@
     ;
   static factory fisk() → self::A*
     let dynamic #redirecting_factory = self::B::• in invalid-expression;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A {
   synthetic constructor •() → self::B*
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_constructor.dart.weak.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_constructor.dart.weak.transformed.expect
index aa1e6b1..e1616fd 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_constructor.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_constructor.dart.weak.transformed.expect
@@ -9,6 +9,16 @@
     ;
   static factory fisk() → self::A*
     let<BottomType> #redirecting_factory = self::B::• in invalid-expression;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A {
   synthetic constructor •() → self::B*
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_factory.dart.outline.expect b/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_factory.dart.outline.expect
index eea0493..79ceb14 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_factory.dart.outline.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_factory.dart.outline.expect
@@ -16,44 +16,134 @@
   abstract get x() → core::int*;
   static factory •<Tf extends core::Object* = dynamic>(core::int* x) → self::FooBase<self::FooBase::•::Tf*>*
     let dynamic #redirecting_factory = self::Foo::• in let self::FooBase::•::Tf* #typeArg0 = null in invalid-expression;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class Foo<T extends core::Object* = dynamic> extends core::Object implements self::FooBase<dynamic> {
   static field dynamic _redirecting# = <dynamic>[self::Foo::•];
   static factory •<T extends core::Object* = dynamic>(core::int* x) → self::Foo<self::Foo::•::T*>*
     let dynamic #redirecting_factory = self::Bar::• in let core::String* #typeArg0 = null in let self::Foo::•::T* #typeArg1 = null in invalid-expression;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Bar<Sb extends core::Object* = dynamic, Tb extends core::Object* = dynamic> extends core::Object implements self::Foo<self::Bar::Tb*> {
   field core::int* x;
   constructor •(core::int* x) → self::Bar<self::Bar::Sb*, self::Bar::Tb*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Builder<X extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::Builder<self::Builder::X*>*
     ;
   method method() → dynamic
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class SimpleCase<A extends core::Object* = dynamic, B extends core::Object* = dynamic> extends core::Object {
   static field dynamic _redirecting# = <dynamic>[self::SimpleCase::•];
   static factory •<A extends core::Object* = dynamic, B extends core::Object* = dynamic>() → self::SimpleCase<self::SimpleCase::•::A*, self::SimpleCase::•::B*>*
     let dynamic #redirecting_factory = self::SimpleCaseImpl::• in let self::SimpleCase::•::A* #typeArg0 = null in let self::SimpleCase::•::B* #typeArg1 = null in invalid-expression;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class SimpleCaseImpl<Ai extends core::Object* = dynamic, Bi extends core::Object* = dynamic> extends core::Object implements self::SimpleCase<self::SimpleCaseImpl::Ai*, self::SimpleCaseImpl::Bi*> {
   static field dynamic _redirecting# = <dynamic>[self::SimpleCaseImpl::•];
   static factory •<Ai extends core::Object* = dynamic, Bi extends core::Object* = dynamic>() → self::SimpleCaseImpl<self::SimpleCaseImpl::•::Ai*, self::SimpleCaseImpl::•::Bi*>*
     let dynamic #redirecting_factory = self::SimpleCaseImpl2::• in let self::SimpleCaseImpl::•::Ai* #typeArg0 = null in let self::SimpleCaseImpl::•::Bi* #typeArg1 = null in invalid-expression;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class SimpleCaseImpl2<Ai2 extends core::Object* = dynamic, Bi2 extends core::Object* = dynamic> extends core::Object implements self::SimpleCaseImpl<self::SimpleCaseImpl2::Ai2*, self::SimpleCaseImpl2::Bi2*> {
   synthetic constructor •() → self::SimpleCaseImpl2<self::SimpleCaseImpl2::Ai2*, self::SimpleCaseImpl2::Bi2*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Base<M extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::Base<self::Base::M*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Mixin<M extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::Mixin<self::Mixin::M*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Mix<M extends core::Object* = dynamic> = self::Base<self::Mix::M*> with self::Mixin<self::Mix::M*> {
   synthetic constructor •() → self::Mix<self::Mix::M*>*
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_factory.dart.strong.expect b/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_factory.dart.strong.expect
index b06ffdc..bf48159 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_factory.dart.strong.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_factory.dart.strong.expect
@@ -16,11 +16,31 @@
   abstract get x() → core::int*;
   static factory •<Tf extends core::Object* = dynamic>(core::int* x) → self::FooBase<self::FooBase::•::Tf*>*
     let dynamic #redirecting_factory = self::Foo::• in let self::FooBase::•::Tf* #typeArg0 = null in invalid-expression;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class Foo<T extends core::Object* = dynamic> extends core::Object implements self::FooBase<dynamic> {
   static field dynamic _redirecting# = <dynamic>[self::Foo::•];
   static factory •<T extends core::Object* = dynamic>(core::int* x) → self::Foo<self::Foo::•::T*>*
     let dynamic #redirecting_factory = self::Bar::• in let core::String* #typeArg0 = null in let self::Foo::•::T* #typeArg1 = null in invalid-expression;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Bar<Sb extends core::Object* = dynamic, Tb extends core::Object* = dynamic> extends core::Object implements self::Foo<self::Bar::Tb*> {
   field core::int* x;
@@ -28,6 +48,16 @@
     : self::Bar::x = x, super core::Object::•() {
     core::print("Bar<${self::Bar::Sb*},${self::Bar::Tb*}>");
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Builder<X extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::Builder<self::Builder::X*>*
@@ -36,31 +66,91 @@
   method method() → dynamic {
     return new self::Bar::•<core::String*, self::Builder::X*>(4);
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class SimpleCase<A extends core::Object* = dynamic, B extends core::Object* = dynamic> extends core::Object {
   static field dynamic _redirecting# = <dynamic>[self::SimpleCase::•];
   static factory •<A extends core::Object* = dynamic, B extends core::Object* = dynamic>() → self::SimpleCase<self::SimpleCase::•::A*, self::SimpleCase::•::B*>*
     let dynamic #redirecting_factory = self::SimpleCaseImpl::• in let self::SimpleCase::•::A* #typeArg0 = null in let self::SimpleCase::•::B* #typeArg1 = null in invalid-expression;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class SimpleCaseImpl<Ai extends core::Object* = dynamic, Bi extends core::Object* = dynamic> extends core::Object implements self::SimpleCase<self::SimpleCaseImpl::Ai*, self::SimpleCaseImpl::Bi*> {
   static field dynamic _redirecting# = <dynamic>[self::SimpleCaseImpl::•];
   static factory •<Ai extends core::Object* = dynamic, Bi extends core::Object* = dynamic>() → self::SimpleCaseImpl<self::SimpleCaseImpl::•::Ai*, self::SimpleCaseImpl::•::Bi*>*
     let dynamic #redirecting_factory = self::SimpleCaseImpl2::• in let self::SimpleCaseImpl::•::Ai* #typeArg0 = null in let self::SimpleCaseImpl::•::Bi* #typeArg1 = null in invalid-expression;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class SimpleCaseImpl2<Ai2 extends core::Object* = dynamic, Bi2 extends core::Object* = dynamic> extends core::Object implements self::SimpleCaseImpl<self::SimpleCaseImpl2::Ai2*, self::SimpleCaseImpl2::Bi2*> {
   synthetic constructor •() → self::SimpleCaseImpl2<self::SimpleCaseImpl2::Ai2*, self::SimpleCaseImpl2::Bi2*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Base<M extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::Base<self::Base::M*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Mixin<M extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::Mixin<self::Mixin::M*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Mix<M extends core::Object* = dynamic> = self::Base<self::Mix::M*> with self::Mixin<self::Mix::M*> {
   synthetic constructor •() → self::Mix<self::Mix::M*>*
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_factory.dart.strong.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_factory.dart.strong.transformed.expect
index c2e98d0..48da0ad 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_factory.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_factory.dart.strong.transformed.expect
@@ -16,11 +16,31 @@
   abstract get x() → core::int*;
   static factory •<Tf extends core::Object* = dynamic>(core::int* x) → self::FooBase<self::FooBase::•::Tf*>*
     let <T extends core::Object* = dynamic>(core::int*) →* self::Foo<T*>* #redirecting_factory = self::Foo::• in let self::FooBase::•::Tf* #typeArg0 = null in invalid-expression;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class Foo<T extends core::Object* = dynamic> extends core::Object implements self::FooBase<dynamic> {
   static field dynamic _redirecting# = <dynamic>[self::Foo::•];
   static factory •<T extends core::Object* = dynamic>(core::int* x) → self::Foo<self::Foo::•::T*>*
     let<BottomType> #redirecting_factory = self::Bar::• in let core::String* #typeArg0 = null in let self::Foo::•::T* #typeArg1 = null in invalid-expression;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Bar<Sb extends core::Object* = dynamic, Tb extends core::Object* = dynamic> extends core::Object implements self::Foo<self::Bar::Tb*> {
   field core::int* x;
@@ -28,6 +48,16 @@
     : self::Bar::x = x, super core::Object::•() {
     core::print("Bar<${self::Bar::Sb*},${self::Bar::Tb*}>");
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Builder<X extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::Builder<self::Builder::X*>*
@@ -36,36 +66,106 @@
   method method() → dynamic {
     return new self::Bar::•<core::String*, self::Builder::X*>(4);
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class SimpleCase<A extends core::Object* = dynamic, B extends core::Object* = dynamic> extends core::Object {
   static field dynamic _redirecting# = <dynamic>[self::SimpleCase::•];
   static factory •<A extends core::Object* = dynamic, B extends core::Object* = dynamic>() → self::SimpleCase<self::SimpleCase::•::A*, self::SimpleCase::•::B*>*
     let <Ai extends core::Object* = dynamic, Bi extends core::Object* = dynamic>() →* self::SimpleCaseImpl<Ai*, Bi*>* #redirecting_factory = self::SimpleCaseImpl::• in let self::SimpleCase::•::A* #typeArg0 = null in let self::SimpleCase::•::B* #typeArg1 = null in invalid-expression;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class SimpleCaseImpl<Ai extends core::Object* = dynamic, Bi extends core::Object* = dynamic> extends core::Object implements self::SimpleCase<self::SimpleCaseImpl::Ai*, self::SimpleCaseImpl::Bi*> {
   static field dynamic _redirecting# = <dynamic>[self::SimpleCaseImpl::•];
   static factory •<Ai extends core::Object* = dynamic, Bi extends core::Object* = dynamic>() → self::SimpleCaseImpl<self::SimpleCaseImpl::•::Ai*, self::SimpleCaseImpl::•::Bi*>*
     let<BottomType> #redirecting_factory = self::SimpleCaseImpl2::• in let self::SimpleCaseImpl::•::Ai* #typeArg0 = null in let self::SimpleCaseImpl::•::Bi* #typeArg1 = null in invalid-expression;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class SimpleCaseImpl2<Ai2 extends core::Object* = dynamic, Bi2 extends core::Object* = dynamic> extends core::Object implements self::SimpleCaseImpl<self::SimpleCaseImpl2::Ai2*, self::SimpleCaseImpl2::Bi2*> {
   synthetic constructor •() → self::SimpleCaseImpl2<self::SimpleCaseImpl2::Ai2*, self::SimpleCaseImpl2::Bi2*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Base<M extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::Base<self::Base::M*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Mixin<M extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::Mixin<self::Mixin::M*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Mix<M extends core::Object* = dynamic> extends self::Base<self::Mix::M*> implements self::Mixin<self::Mix::M*> /*isEliminatedMixin*/  {
   synthetic constructor •() → self::Mix<self::Mix::M*>*
     : super self::Base::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   core::print(new self::Bar::•<core::String*, core::double*>(4).{self::FooBase::x});
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_factory.dart.weak.expect b/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_factory.dart.weak.expect
index b06ffdc..bf48159 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_factory.dart.weak.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_factory.dart.weak.expect
@@ -16,11 +16,31 @@
   abstract get x() → core::int*;
   static factory •<Tf extends core::Object* = dynamic>(core::int* x) → self::FooBase<self::FooBase::•::Tf*>*
     let dynamic #redirecting_factory = self::Foo::• in let self::FooBase::•::Tf* #typeArg0 = null in invalid-expression;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class Foo<T extends core::Object* = dynamic> extends core::Object implements self::FooBase<dynamic> {
   static field dynamic _redirecting# = <dynamic>[self::Foo::•];
   static factory •<T extends core::Object* = dynamic>(core::int* x) → self::Foo<self::Foo::•::T*>*
     let dynamic #redirecting_factory = self::Bar::• in let core::String* #typeArg0 = null in let self::Foo::•::T* #typeArg1 = null in invalid-expression;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Bar<Sb extends core::Object* = dynamic, Tb extends core::Object* = dynamic> extends core::Object implements self::Foo<self::Bar::Tb*> {
   field core::int* x;
@@ -28,6 +48,16 @@
     : self::Bar::x = x, super core::Object::•() {
     core::print("Bar<${self::Bar::Sb*},${self::Bar::Tb*}>");
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Builder<X extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::Builder<self::Builder::X*>*
@@ -36,31 +66,91 @@
   method method() → dynamic {
     return new self::Bar::•<core::String*, self::Builder::X*>(4);
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class SimpleCase<A extends core::Object* = dynamic, B extends core::Object* = dynamic> extends core::Object {
   static field dynamic _redirecting# = <dynamic>[self::SimpleCase::•];
   static factory •<A extends core::Object* = dynamic, B extends core::Object* = dynamic>() → self::SimpleCase<self::SimpleCase::•::A*, self::SimpleCase::•::B*>*
     let dynamic #redirecting_factory = self::SimpleCaseImpl::• in let self::SimpleCase::•::A* #typeArg0 = null in let self::SimpleCase::•::B* #typeArg1 = null in invalid-expression;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class SimpleCaseImpl<Ai extends core::Object* = dynamic, Bi extends core::Object* = dynamic> extends core::Object implements self::SimpleCase<self::SimpleCaseImpl::Ai*, self::SimpleCaseImpl::Bi*> {
   static field dynamic _redirecting# = <dynamic>[self::SimpleCaseImpl::•];
   static factory •<Ai extends core::Object* = dynamic, Bi extends core::Object* = dynamic>() → self::SimpleCaseImpl<self::SimpleCaseImpl::•::Ai*, self::SimpleCaseImpl::•::Bi*>*
     let dynamic #redirecting_factory = self::SimpleCaseImpl2::• in let self::SimpleCaseImpl::•::Ai* #typeArg0 = null in let self::SimpleCaseImpl::•::Bi* #typeArg1 = null in invalid-expression;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class SimpleCaseImpl2<Ai2 extends core::Object* = dynamic, Bi2 extends core::Object* = dynamic> extends core::Object implements self::SimpleCaseImpl<self::SimpleCaseImpl2::Ai2*, self::SimpleCaseImpl2::Bi2*> {
   synthetic constructor •() → self::SimpleCaseImpl2<self::SimpleCaseImpl2::Ai2*, self::SimpleCaseImpl2::Bi2*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Base<M extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::Base<self::Base::M*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Mixin<M extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::Mixin<self::Mixin::M*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Mix<M extends core::Object* = dynamic> = self::Base<self::Mix::M*> with self::Mixin<self::Mix::M*> {
   synthetic constructor •() → self::Mix<self::Mix::M*>*
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_factory.dart.weak.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_factory.dart.weak.transformed.expect
index c2e98d0..48da0ad 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_factory.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_factory.dart.weak.transformed.expect
@@ -16,11 +16,31 @@
   abstract get x() → core::int*;
   static factory •<Tf extends core::Object* = dynamic>(core::int* x) → self::FooBase<self::FooBase::•::Tf*>*
     let <T extends core::Object* = dynamic>(core::int*) →* self::Foo<T*>* #redirecting_factory = self::Foo::• in let self::FooBase::•::Tf* #typeArg0 = null in invalid-expression;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class Foo<T extends core::Object* = dynamic> extends core::Object implements self::FooBase<dynamic> {
   static field dynamic _redirecting# = <dynamic>[self::Foo::•];
   static factory •<T extends core::Object* = dynamic>(core::int* x) → self::Foo<self::Foo::•::T*>*
     let<BottomType> #redirecting_factory = self::Bar::• in let core::String* #typeArg0 = null in let self::Foo::•::T* #typeArg1 = null in invalid-expression;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Bar<Sb extends core::Object* = dynamic, Tb extends core::Object* = dynamic> extends core::Object implements self::Foo<self::Bar::Tb*> {
   field core::int* x;
@@ -28,6 +48,16 @@
     : self::Bar::x = x, super core::Object::•() {
     core::print("Bar<${self::Bar::Sb*},${self::Bar::Tb*}>");
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Builder<X extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::Builder<self::Builder::X*>*
@@ -36,36 +66,106 @@
   method method() → dynamic {
     return new self::Bar::•<core::String*, self::Builder::X*>(4);
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class SimpleCase<A extends core::Object* = dynamic, B extends core::Object* = dynamic> extends core::Object {
   static field dynamic _redirecting# = <dynamic>[self::SimpleCase::•];
   static factory •<A extends core::Object* = dynamic, B extends core::Object* = dynamic>() → self::SimpleCase<self::SimpleCase::•::A*, self::SimpleCase::•::B*>*
     let <Ai extends core::Object* = dynamic, Bi extends core::Object* = dynamic>() →* self::SimpleCaseImpl<Ai*, Bi*>* #redirecting_factory = self::SimpleCaseImpl::• in let self::SimpleCase::•::A* #typeArg0 = null in let self::SimpleCase::•::B* #typeArg1 = null in invalid-expression;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class SimpleCaseImpl<Ai extends core::Object* = dynamic, Bi extends core::Object* = dynamic> extends core::Object implements self::SimpleCase<self::SimpleCaseImpl::Ai*, self::SimpleCaseImpl::Bi*> {
   static field dynamic _redirecting# = <dynamic>[self::SimpleCaseImpl::•];
   static factory •<Ai extends core::Object* = dynamic, Bi extends core::Object* = dynamic>() → self::SimpleCaseImpl<self::SimpleCaseImpl::•::Ai*, self::SimpleCaseImpl::•::Bi*>*
     let<BottomType> #redirecting_factory = self::SimpleCaseImpl2::• in let self::SimpleCaseImpl::•::Ai* #typeArg0 = null in let self::SimpleCaseImpl::•::Bi* #typeArg1 = null in invalid-expression;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class SimpleCaseImpl2<Ai2 extends core::Object* = dynamic, Bi2 extends core::Object* = dynamic> extends core::Object implements self::SimpleCaseImpl<self::SimpleCaseImpl2::Ai2*, self::SimpleCaseImpl2::Bi2*> {
   synthetic constructor •() → self::SimpleCaseImpl2<self::SimpleCaseImpl2::Ai2*, self::SimpleCaseImpl2::Bi2*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Base<M extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::Base<self::Base::M*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Mixin<M extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::Mixin<self::Mixin::M*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Mix<M extends core::Object* = dynamic> extends self::Base<self::Mix::M*> implements self::Mixin<self::Mix::M*> /*isEliminatedMixin*/  {
   synthetic constructor •() → self::Mix<self::Mix::M*>*
     : super self::Base::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   core::print(new self::Bar::•<core::String*, core::double*>(4).{self::FooBase::x});
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_factory_chain_test.dart.outline.expect b/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_factory_chain_test.dart.outline.expect
index b81eb59..06c7106 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_factory_chain_test.dart.outline.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_factory_chain_test.dart.outline.expect
@@ -10,6 +10,16 @@
     let dynamic #redirecting_factory = self::A::• in invalid-expression;
   static factory second() → self::A*
     let dynamic #redirecting_factory = self::A::first in invalid-expression;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_factory_chain_test.dart.strong.expect b/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_factory_chain_test.dart.strong.expect
index 0acfd3a..b9fa521 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_factory_chain_test.dart.strong.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_factory_chain_test.dart.strong.expect
@@ -11,6 +11,16 @@
     let dynamic #redirecting_factory = self::A::• in invalid-expression;
   static factory second() → self::A*
     let dynamic #redirecting_factory = self::A::first in invalid-expression;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   new self::A::•();
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_factory_chain_test.dart.strong.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_factory_chain_test.dart.strong.transformed.expect
index 147eb39..3a03a47 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_factory_chain_test.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_factory_chain_test.dart.strong.transformed.expect
@@ -11,6 +11,16 @@
     let<BottomType> #redirecting_factory = self::A::• in invalid-expression;
   static factory second() → self::A*
     let () →* self::A* #redirecting_factory = self::A::first in invalid-expression;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   new self::A::•();
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_factory_chain_test.dart.weak.expect b/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_factory_chain_test.dart.weak.expect
index 0acfd3a..b9fa521 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_factory_chain_test.dart.weak.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_factory_chain_test.dart.weak.expect
@@ -11,6 +11,16 @@
     let dynamic #redirecting_factory = self::A::• in invalid-expression;
   static factory second() → self::A*
     let dynamic #redirecting_factory = self::A::first in invalid-expression;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   new self::A::•();
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_factory_chain_test.dart.weak.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_factory_chain_test.dart.weak.transformed.expect
index 147eb39..3a03a47 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_factory_chain_test.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_factory_chain_test.dart.weak.transformed.expect
@@ -11,6 +11,16 @@
     let<BottomType> #redirecting_factory = self::A::• in invalid-expression;
   static factory second() → self::A*
     let () →* self::A* #redirecting_factory = self::A::first in invalid-expression;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   new self::A::•();
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_factory_const_inference.dart.outline.expect b/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_factory_const_inference.dart.outline.expect
index 3ed80bf..87048b9 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_factory_const_inference.dart.outline.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_factory_const_inference.dart.outline.expect
@@ -6,16 +6,46 @@
   static field dynamic _redirecting# = <dynamic>[self::_X::•];
   static factory •<T extends core::Object* = dynamic>() → self::_X<self::_X::•::T*>*
     let dynamic #redirecting_factory = self::_Y::• in let self::_X::•::T* #typeArg0 = null in invalid-expression;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class _Y<T extends core::Object* = dynamic> extends core::Object implements self::_X<self::_Y::T*> /*hasConstConstructor*/  {
   const constructor •() → self::_Y<self::_Y::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class A<T extends core::Object* = dynamic> extends core::Object {
   generic-covariant-impl field self::_X<self::A::T*>* x;
   constructor •(self::_X<self::A::T*>* x) → self::A<self::A::T*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B<T extends core::Object* = dynamic> extends self::A<self::B::T*> {
   constructor •() → self::B<self::B::T*>*
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_factory_const_inference.dart.strong.expect b/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_factory_const_inference.dart.strong.expect
index 397a76d..9a92943 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_factory_const_inference.dart.strong.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_factory_const_inference.dart.strong.expect
@@ -6,17 +6,47 @@
   static field dynamic _redirecting# = <dynamic>[self::_X::•];
   static factory •<T extends core::Object* = dynamic>() → self::_X<self::_X::•::T*>*
     let dynamic #redirecting_factory = self::_Y::• in let self::_X::•::T* #typeArg0 = null in invalid-expression;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class _Y<T extends core::Object* = dynamic> extends core::Object implements self::_X<self::_Y::T*> /*hasConstConstructor*/  {
   const constructor •() → self::_Y<self::_Y::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class A<T extends core::Object* = dynamic> extends core::Object {
   generic-covariant-impl field self::_X<self::A::T*>* x;
   constructor •(self::_X<self::A::T*>* x) → self::A<self::A::T*>*
     : self::A::x = x, super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B<T extends core::Object* = dynamic> extends self::A<self::B::T*> {
   constructor •() → self::B<self::B::T*>*
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_factory_const_inference.dart.strong.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_factory_const_inference.dart.strong.transformed.expect
index 2b04ded..cff025b 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_factory_const_inference.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_factory_const_inference.dart.strong.transformed.expect
@@ -6,17 +6,47 @@
   static field dynamic _redirecting# = <dynamic>[self::_X::•];
   static factory •<T extends core::Object* = dynamic>() → self::_X<self::_X::•::T*>*
     let<BottomType> #redirecting_factory = self::_Y::• in let self::_X::•::T* #typeArg0 = null in invalid-expression;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class _Y<T extends core::Object* = dynamic> extends core::Object implements self::_X<self::_Y::T*> /*hasConstConstructor*/  {
   const constructor •() → self::_Y<self::_Y::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class A<T extends core::Object* = dynamic> extends core::Object {
   generic-covariant-impl field self::_X<self::A::T*>* x;
   constructor •(self::_X<self::A::T*>* x) → self::A<self::A::T*>*
     : self::A::x = x, super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B<T extends core::Object* = dynamic> extends self::A<self::B::T*> {
   constructor •() → self::B<self::B::T*>*
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_factory_const_inference.dart.weak.expect b/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_factory_const_inference.dart.weak.expect
index 397a76d..9a92943 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_factory_const_inference.dart.weak.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_factory_const_inference.dart.weak.expect
@@ -6,17 +6,47 @@
   static field dynamic _redirecting# = <dynamic>[self::_X::•];
   static factory •<T extends core::Object* = dynamic>() → self::_X<self::_X::•::T*>*
     let dynamic #redirecting_factory = self::_Y::• in let self::_X::•::T* #typeArg0 = null in invalid-expression;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class _Y<T extends core::Object* = dynamic> extends core::Object implements self::_X<self::_Y::T*> /*hasConstConstructor*/  {
   const constructor •() → self::_Y<self::_Y::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class A<T extends core::Object* = dynamic> extends core::Object {
   generic-covariant-impl field self::_X<self::A::T*>* x;
   constructor •(self::_X<self::A::T*>* x) → self::A<self::A::T*>*
     : self::A::x = x, super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B<T extends core::Object* = dynamic> extends self::A<self::B::T*> {
   constructor •() → self::B<self::B::T*>*
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_factory_const_inference.dart.weak.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_factory_const_inference.dart.weak.transformed.expect
index 2b04ded..cff025b 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_factory_const_inference.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_factory_const_inference.dart.weak.transformed.expect
@@ -6,17 +6,47 @@
   static field dynamic _redirecting# = <dynamic>[self::_X::•];
   static factory •<T extends core::Object* = dynamic>() → self::_X<self::_X::•::T*>*
     let<BottomType> #redirecting_factory = self::_Y::• in let self::_X::•::T* #typeArg0 = null in invalid-expression;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class _Y<T extends core::Object* = dynamic> extends core::Object implements self::_X<self::_Y::T*> /*hasConstConstructor*/  {
   const constructor •() → self::_Y<self::_Y::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class A<T extends core::Object* = dynamic> extends core::Object {
   generic-covariant-impl field self::_X<self::A::T*>* x;
   constructor •(self::_X<self::A::T*>* x) → self::A<self::A::T*>*
     : self::A::x = x, super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B<T extends core::Object* = dynamic> extends self::A<self::B::T*> {
   constructor •() → self::B<self::B::T*>*
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_factory_metadata.dart.outline.expect b/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_factory_metadata.dart.outline.expect
index 636af62..9ff54fb 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_factory_metadata.dart.outline.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_factory_metadata.dart.outline.expect
@@ -9,6 +9,16 @@
   @self::forFactoryItself
   static factory •(dynamic p) → self::Foo*
     let dynamic #redirecting_factory = self::Foo::named in invalid-expression;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static const field core::int* forParameter = 1;
 static const field core::int* forFactoryItself = 2;
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_factory_metadata.dart.strong.expect b/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_factory_metadata.dart.strong.expect
index c3ccb98..660313d 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_factory_metadata.dart.strong.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_factory_metadata.dart.strong.expect
@@ -10,6 +10,16 @@
   @#C1
   static factory •(@#C2 @#C3 dynamic p) → self::Foo*
     let dynamic #redirecting_factory = self::Foo::named in invalid-expression;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static const field core::int* forParameter = #C2;
 static const field core::int* forFactoryItself = #C1;
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_factory_metadata.dart.strong.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_factory_metadata.dart.strong.transformed.expect
index b80664b..7f43aad 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_factory_metadata.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_factory_metadata.dart.strong.transformed.expect
@@ -10,6 +10,16 @@
   @#C1
   static factory •(@#C2 @#C3 dynamic p) → self::Foo*
     let<BottomType> #redirecting_factory = self::Foo::named in invalid-expression;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static const field core::int* forParameter = #C2;
 static const field core::int* forFactoryItself = #C1;
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_factory_metadata.dart.weak.expect b/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_factory_metadata.dart.weak.expect
index c3ccb98..660313d 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_factory_metadata.dart.weak.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_factory_metadata.dart.weak.expect
@@ -10,6 +10,16 @@
   @#C1
   static factory •(@#C2 @#C3 dynamic p) → self::Foo*
     let dynamic #redirecting_factory = self::Foo::named in invalid-expression;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static const field core::int* forParameter = #C2;
 static const field core::int* forFactoryItself = #C1;
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_factory_metadata.dart.weak.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_factory_metadata.dart.weak.transformed.expect
index b80664b..7f43aad 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_factory_metadata.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_factory_metadata.dart.weak.transformed.expect
@@ -10,6 +10,16 @@
   @#C1
   static factory •(@#C2 @#C3 dynamic p) → self::Foo*
     let<BottomType> #redirecting_factory = self::Foo::named in invalid-expression;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static const field core::int* forParameter = #C2;
 static const field core::int* forFactoryItself = #C1;
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_factory_simple_test.dart.outline.expect b/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_factory_simple_test.dart.outline.expect
index fc62503..6445538 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_factory_simple_test.dart.outline.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_factory_simple_test.dart.outline.expect
@@ -8,6 +8,16 @@
     ;
   static factory redir() → self::A*
     let dynamic #redirecting_factory = self::A::• in invalid-expression;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_factory_simple_test.dart.strong.expect b/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_factory_simple_test.dart.strong.expect
index c2b0440..47ea2ec 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_factory_simple_test.dart.strong.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_factory_simple_test.dart.strong.expect
@@ -9,6 +9,16 @@
     ;
   static factory redir() → self::A*
     let dynamic #redirecting_factory = self::A::• in invalid-expression;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   new self::A::•();
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_factory_simple_test.dart.strong.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_factory_simple_test.dart.strong.transformed.expect
index 1f0102f..b9b688e 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_factory_simple_test.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_factory_simple_test.dart.strong.transformed.expect
@@ -9,6 +9,16 @@
     ;
   static factory redir() → self::A*
     let<BottomType> #redirecting_factory = self::A::• in invalid-expression;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   new self::A::•();
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_factory_simple_test.dart.weak.expect b/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_factory_simple_test.dart.weak.expect
index c2b0440..47ea2ec 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_factory_simple_test.dart.weak.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_factory_simple_test.dart.weak.expect
@@ -9,6 +9,16 @@
     ;
   static factory redir() → self::A*
     let dynamic #redirecting_factory = self::A::• in invalid-expression;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   new self::A::•();
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_factory_simple_test.dart.weak.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_factory_simple_test.dart.weak.transformed.expect
index 1f0102f..b9b688e 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_factory_simple_test.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_factory_simple_test.dart.weak.transformed.expect
@@ -9,6 +9,16 @@
     ;
   static factory redir() → self::A*
     let<BottomType> #redirecting_factory = self::A::• in invalid-expression;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   new self::A::•();
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_factory_typeargs_test.dart.outline.expect b/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_factory_typeargs_test.dart.outline.expect
index caf6826..fee78a6a 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_factory_typeargs_test.dart.outline.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_factory_typeargs_test.dart.outline.expect
@@ -5,6 +5,16 @@
 class X extends core::Object {
   synthetic constructor •() → self::X*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Y extends self::X {
   synthetic constructor •() → self::Y*
@@ -16,6 +26,16 @@
     ;
   static factory redir() → self::A*
     let dynamic #redirecting_factory = self::B::• in let self::Y* #typeArg0 = null in invalid-expression;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B<T extends self::X* = self::X*> extends self::A {
   constructor •() → self::B<self::B::T*>*
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_factory_typeargs_test.dart.strong.expect b/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_factory_typeargs_test.dart.strong.expect
index 4c77d36..938fe3f 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_factory_typeargs_test.dart.strong.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_factory_typeargs_test.dart.strong.expect
@@ -6,6 +6,16 @@
   synthetic constructor •() → self::X*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Y extends self::X {
   synthetic constructor •() → self::Y*
@@ -19,6 +29,16 @@
     ;
   static factory redir() → self::A*
     let dynamic #redirecting_factory = self::B::• in let self::Y* #typeArg0 = null in invalid-expression;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B<T extends self::X* = self::X*> extends self::A {
   constructor •() → self::B<self::B::T*>*
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_factory_typeargs_test.dart.strong.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_factory_typeargs_test.dart.strong.transformed.expect
index fa75003..e95fb8e 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_factory_typeargs_test.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_factory_typeargs_test.dart.strong.transformed.expect
@@ -6,6 +6,16 @@
   synthetic constructor •() → self::X*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Y extends self::X {
   synthetic constructor •() → self::Y*
@@ -19,6 +29,16 @@
     ;
   static factory redir() → self::A*
     let<BottomType> #redirecting_factory = self::B::• in let self::Y* #typeArg0 = null in invalid-expression;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B<T extends self::X* = self::X*> extends self::A {
   constructor •() → self::B<self::B::T*>*
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_factory_typeargs_test.dart.weak.expect b/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_factory_typeargs_test.dart.weak.expect
index 4c77d36..938fe3f 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_factory_typeargs_test.dart.weak.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_factory_typeargs_test.dart.weak.expect
@@ -6,6 +6,16 @@
   synthetic constructor •() → self::X*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Y extends self::X {
   synthetic constructor •() → self::Y*
@@ -19,6 +29,16 @@
     ;
   static factory redir() → self::A*
     let dynamic #redirecting_factory = self::B::• in let self::Y* #typeArg0 = null in invalid-expression;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B<T extends self::X* = self::X*> extends self::A {
   constructor •() → self::B<self::B::T*>*
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_factory_typeargs_test.dart.weak.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_factory_typeargs_test.dart.weak.transformed.expect
index fa75003..e95fb8e 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_factory_typeargs_test.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_factory_typeargs_test.dart.weak.transformed.expect
@@ -6,6 +6,16 @@
   synthetic constructor •() → self::X*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Y extends self::X {
   synthetic constructor •() → self::Y*
@@ -19,6 +29,16 @@
     ;
   static factory redir() → self::A*
     let<BottomType> #redirecting_factory = self::B::• in let self::Y* #typeArg0 = null in invalid-expression;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B<T extends self::X* = self::X*> extends self::A {
   constructor •() → self::B<self::B::T*>*
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_factory_typeparam_test.dart.outline.expect b/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_factory_typeparam_test.dart.outline.expect
index 4526c6e..fd30dea 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_factory_typeparam_test.dart.outline.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_factory_typeparam_test.dart.outline.expect
@@ -8,6 +8,16 @@
     ;
   static factory redir<T extends core::Object* = dynamic, S extends core::Object* = dynamic>(self::A::redir::T* t, self::A::redir::S* s) → self::A<self::A::redir::T*, self::A::redir::S*>*
     let dynamic #redirecting_factory = self::A::• in let self::A::redir::T* #typeArg0 = null in let self::A::redir::S* #typeArg1 = null in invalid-expression;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_factory_typeparam_test.dart.strong.expect b/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_factory_typeparam_test.dart.strong.expect
index 55767fb..14b3db5 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_factory_typeparam_test.dart.strong.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_factory_typeparam_test.dart.strong.expect
@@ -9,6 +9,16 @@
     ;
   static factory redir<T extends core::Object* = dynamic, S extends core::Object* = dynamic>(self::A::redir::T* t, self::A::redir::S* s) → self::A<self::A::redir::T*, self::A::redir::S*>*
     let dynamic #redirecting_factory = self::A::• in let self::A::redir::T* #typeArg0 = null in let self::A::redir::S* #typeArg1 = null in invalid-expression;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   new self::A::•<core::int*, core::String*>(42, "foobar");
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_factory_typeparam_test.dart.strong.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_factory_typeparam_test.dart.strong.transformed.expect
index 60f8cfb..0acb2f6 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_factory_typeparam_test.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_factory_typeparam_test.dart.strong.transformed.expect
@@ -9,6 +9,16 @@
     ;
   static factory redir<T extends core::Object* = dynamic, S extends core::Object* = dynamic>(self::A::redir::T* t, self::A::redir::S* s) → self::A<self::A::redir::T*, self::A::redir::S*>*
     let<BottomType> #redirecting_factory = self::A::• in let self::A::redir::T* #typeArg0 = null in let self::A::redir::S* #typeArg1 = null in invalid-expression;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   new self::A::•<core::int*, core::String*>(42, "foobar");
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_factory_typeparam_test.dart.weak.expect b/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_factory_typeparam_test.dart.weak.expect
index 55767fb..14b3db5 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_factory_typeparam_test.dart.weak.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_factory_typeparam_test.dart.weak.expect
@@ -9,6 +9,16 @@
     ;
   static factory redir<T extends core::Object* = dynamic, S extends core::Object* = dynamic>(self::A::redir::T* t, self::A::redir::S* s) → self::A<self::A::redir::T*, self::A::redir::S*>*
     let dynamic #redirecting_factory = self::A::• in let self::A::redir::T* #typeArg0 = null in let self::A::redir::S* #typeArg1 = null in invalid-expression;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   new self::A::•<core::int*, core::String*>(42, "foobar");
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_factory_typeparam_test.dart.weak.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_factory_typeparam_test.dart.weak.transformed.expect
index 60f8cfb..0acb2f6 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_factory_typeparam_test.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_factory_typeparam_test.dart.weak.transformed.expect
@@ -9,6 +9,16 @@
     ;
   static factory redir<T extends core::Object* = dynamic, S extends core::Object* = dynamic>(self::A::redir::T* t, self::A::redir::S* s) → self::A<self::A::redir::T*, self::A::redir::S*>*
     let<BottomType> #redirecting_factory = self::A::• in let self::A::redir::T* #typeArg0 = null in let self::A::redir::S* #typeArg1 = null in invalid-expression;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   new self::A::•<core::int*, core::String*>(42, "foobar");
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_factory_typeparambounds_test.dart.outline.expect b/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_factory_typeparambounds_test.dart.outline.expect
index 5c26d8c..88b225e 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_factory_typeparambounds_test.dart.outline.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_factory_typeparambounds_test.dart.outline.expect
@@ -5,6 +5,16 @@
 class X extends core::Object {
   synthetic constructor •() → self::X*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Y extends self::X {
   synthetic constructor •() → self::Y*
@@ -16,6 +26,16 @@
     ;
   static factory redir<T extends core::Object* = dynamic, S extends self::A::redir::T* = dynamic>(self::A::redir::T* t, self::A::redir::S* s) → self::A<self::A::redir::T*, self::A::redir::S*>*
     let dynamic #redirecting_factory = self::A::• in let self::A::redir::T* #typeArg0 = null in let self::A::redir::S* #typeArg1 = null in invalid-expression;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_factory_typeparambounds_test.dart.strong.expect b/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_factory_typeparambounds_test.dart.strong.expect
index 3d46949..b8c30d1 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_factory_typeparambounds_test.dart.strong.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_factory_typeparambounds_test.dart.strong.expect
@@ -6,6 +6,16 @@
   synthetic constructor •() → self::X*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Y extends self::X {
   synthetic constructor •() → self::Y*
@@ -19,6 +29,16 @@
     ;
   static factory redir<T extends core::Object* = dynamic, S extends self::A::redir::T* = dynamic>(self::A::redir::T* t, self::A::redir::S* s) → self::A<self::A::redir::T*, self::A::redir::S*>*
     let dynamic #redirecting_factory = self::A::• in let self::A::redir::T* #typeArg0 = null in let self::A::redir::S* #typeArg1 = null in invalid-expression;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   new self::A::•<self::X*, self::Y*>(new self::X::•(), new self::Y::•());
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_factory_typeparambounds_test.dart.strong.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_factory_typeparambounds_test.dart.strong.transformed.expect
index bafad0a..0b7c4a9 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_factory_typeparambounds_test.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_factory_typeparambounds_test.dart.strong.transformed.expect
@@ -6,6 +6,16 @@
   synthetic constructor •() → self::X*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Y extends self::X {
   synthetic constructor •() → self::Y*
@@ -19,6 +29,16 @@
     ;
   static factory redir<T extends core::Object* = dynamic, S extends self::A::redir::T* = dynamic>(self::A::redir::T* t, self::A::redir::S* s) → self::A<self::A::redir::T*, self::A::redir::S*>*
     let<BottomType> #redirecting_factory = self::A::• in let self::A::redir::T* #typeArg0 = null in let self::A::redir::S* #typeArg1 = null in invalid-expression;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   new self::A::•<self::X*, self::Y*>(new self::X::•(), new self::Y::•());
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_factory_typeparambounds_test.dart.weak.expect b/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_factory_typeparambounds_test.dart.weak.expect
index 3d46949..b8c30d1 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_factory_typeparambounds_test.dart.weak.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_factory_typeparambounds_test.dart.weak.expect
@@ -6,6 +6,16 @@
   synthetic constructor •() → self::X*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Y extends self::X {
   synthetic constructor •() → self::Y*
@@ -19,6 +29,16 @@
     ;
   static factory redir<T extends core::Object* = dynamic, S extends self::A::redir::T* = dynamic>(self::A::redir::T* t, self::A::redir::S* s) → self::A<self::A::redir::T*, self::A::redir::S*>*
     let dynamic #redirecting_factory = self::A::• in let self::A::redir::T* #typeArg0 = null in let self::A::redir::S* #typeArg1 = null in invalid-expression;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   new self::A::•<self::X*, self::Y*>(new self::X::•(), new self::Y::•());
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_factory_typeparambounds_test.dart.weak.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_factory_typeparambounds_test.dart.weak.transformed.expect
index bafad0a..0b7c4a9 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_factory_typeparambounds_test.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_factory_typeparambounds_test.dart.weak.transformed.expect
@@ -6,6 +6,16 @@
   synthetic constructor •() → self::X*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Y extends self::X {
   synthetic constructor •() → self::Y*
@@ -19,6 +29,16 @@
     ;
   static factory redir<T extends core::Object* = dynamic, S extends self::A::redir::T* = dynamic>(self::A::redir::T* t, self::A::redir::S* s) → self::A<self::A::redir::T*, self::A::redir::S*>*
     let<BottomType> #redirecting_factory = self::A::• in let self::A::redir::T* #typeArg0 = null in let self::A::redir::S* #typeArg1 = null in invalid-expression;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   new self::A::•<self::X*, self::Y*>(new self::X::•(), new self::Y::•());
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_initializer_arguments_assignable_test.dart.outline.expect b/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_initializer_arguments_assignable_test.dart.outline.expect
index 0974ead..fefbdf2 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_initializer_arguments_assignable_test.dart.outline.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_initializer_arguments_assignable_test.dart.outline.expect
@@ -5,6 +5,16 @@
 class X extends core::Object {
   synthetic constructor •() → self::X*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Foo<T extends self::X* = self::X*> extends core::Object {
   generic-covariant-impl field self::Foo::T* x;
@@ -14,6 +24,16 @@
     ;
   constructor _internal({self::Foo::T* x}) → self::Foo<self::Foo::T*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → void
   ;
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_initializer_arguments_assignable_test.dart.strong.expect b/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_initializer_arguments_assignable_test.dart.strong.expect
index 261b231..b172e13 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_initializer_arguments_assignable_test.dart.strong.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_initializer_arguments_assignable_test.dart.strong.expect
@@ -6,6 +6,16 @@
   synthetic constructor •() → self::X*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Foo<T extends self::X* = self::X*> extends core::Object {
   generic-covariant-impl field self::Foo::T* x;
@@ -18,6 +28,16 @@
   constructor _internal({self::Foo::T* x = #C1}) → self::Foo<self::Foo::T*>*
     : self::Foo::x = x, super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → void {}
 
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_initializer_arguments_assignable_test.dart.strong.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_initializer_arguments_assignable_test.dart.strong.transformed.expect
index 261b231..b172e13 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_initializer_arguments_assignable_test.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_initializer_arguments_assignable_test.dart.strong.transformed.expect
@@ -6,6 +6,16 @@
   synthetic constructor •() → self::X*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Foo<T extends self::X* = self::X*> extends core::Object {
   generic-covariant-impl field self::Foo::T* x;
@@ -18,6 +28,16 @@
   constructor _internal({self::Foo::T* x = #C1}) → self::Foo<self::Foo::T*>*
     : self::Foo::x = x, super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → void {}
 
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_initializer_arguments_assignable_test.dart.weak.expect b/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_initializer_arguments_assignable_test.dart.weak.expect
index 261b231..b172e13 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_initializer_arguments_assignable_test.dart.weak.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_initializer_arguments_assignable_test.dart.weak.expect
@@ -6,6 +6,16 @@
   synthetic constructor •() → self::X*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Foo<T extends self::X* = self::X*> extends core::Object {
   generic-covariant-impl field self::Foo::T* x;
@@ -18,6 +28,16 @@
   constructor _internal({self::Foo::T* x = #C1}) → self::Foo<self::Foo::T*>*
     : self::Foo::x = x, super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → void {}
 
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_initializer_arguments_assignable_test.dart.weak.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_initializer_arguments_assignable_test.dart.weak.transformed.expect
index 261b231..b172e13 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_initializer_arguments_assignable_test.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_initializer_arguments_assignable_test.dart.weak.transformed.expect
@@ -6,6 +6,16 @@
   synthetic constructor •() → self::X*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Foo<T extends self::X* = self::X*> extends core::Object {
   generic-covariant-impl field self::Foo::T* x;
@@ -18,6 +28,16 @@
   constructor _internal({self::Foo::T* x = #C1}) → self::Foo<self::Foo::T*>*
     : self::Foo::x = x, super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → void {}
 
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_initializer_arguments_test.dart.outline.expect b/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_initializer_arguments_test.dart.outline.expect
index 1a2189e..ef37759 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_initializer_arguments_test.dart.outline.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_initializer_arguments_test.dart.outline.expect
@@ -8,6 +8,16 @@
     ;
   constructor _internal({self::Foo::T* x}) → self::Foo<self::Foo::T*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → void
   ;
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_initializer_arguments_test.dart.strong.expect b/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_initializer_arguments_test.dart.strong.expect
index dac0c41..a602958 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_initializer_arguments_test.dart.strong.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_initializer_arguments_test.dart.strong.expect
@@ -19,6 +19,16 @@
   constructor _internal({self::Foo::T* x = #C1}) → self::Foo<self::Foo::T*>*
     : self::Foo::x = x, super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → void {}
 
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_initializer_arguments_test.dart.strong.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_initializer_arguments_test.dart.strong.transformed.expect
index dac0c41..a602958 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_initializer_arguments_test.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_initializer_arguments_test.dart.strong.transformed.expect
@@ -19,6 +19,16 @@
   constructor _internal({self::Foo::T* x = #C1}) → self::Foo<self::Foo::T*>*
     : self::Foo::x = x, super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → void {}
 
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_initializer_arguments_test.dart.weak.expect b/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_initializer_arguments_test.dart.weak.expect
index dac0c41..a602958 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_initializer_arguments_test.dart.weak.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_initializer_arguments_test.dart.weak.expect
@@ -19,6 +19,16 @@
   constructor _internal({self::Foo::T* x = #C1}) → self::Foo<self::Foo::T*>*
     : self::Foo::x = x, super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → void {}
 
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_initializer_arguments_test.dart.weak.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_initializer_arguments_test.dart.weak.transformed.expect
index dac0c41..a602958 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_initializer_arguments_test.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/redirecting_initializer_arguments_test.dart.weak.transformed.expect
@@ -19,6 +19,16 @@
   constructor _internal({self::Foo::T* x = #C1}) → self::Foo<self::Foo::T*>*
     : self::Foo::x = x, super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → void {}
 
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/redirection_chain_type_arguments.dart.outline.expect b/pkg/front_end/testcases/general_nnbd_opt_out/redirection_chain_type_arguments.dart.outline.expect
index 1f95ad0..4f9c017 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/redirection_chain_type_arguments.dart.outline.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/redirection_chain_type_arguments.dart.outline.expect
@@ -10,6 +10,16 @@
     ;
   static factory •<T extends core::Object* = dynamic>() → self::A<self::A::•::T*>*
     let dynamic #redirecting_factory = self::B::• in let self::A::•::T* #typeArg0 = null in let core::num* #typeArg1 = null in invalid-expression;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B<U extends core::Object* = dynamic, W extends core::Object* = dynamic> extends self::A<self::B::U*> {
   static field dynamic _redirecting# = <dynamic>[self::B::•];
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/redirection_chain_type_arguments.dart.strong.expect b/pkg/front_end/testcases/general_nnbd_opt_out/redirection_chain_type_arguments.dart.strong.expect
index cbfe339..f6ee22f 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/redirection_chain_type_arguments.dart.strong.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/redirection_chain_type_arguments.dart.strong.expect
@@ -12,6 +12,16 @@
     ;
   static factory •<T extends core::Object* = dynamic>() → self::A<self::A::•::T*>*
     let dynamic #redirecting_factory = self::B::• in let self::A::•::T* #typeArg0 = null in let core::num* #typeArg1 = null in invalid-expression;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B<U extends core::Object* = dynamic, W extends core::Object* = dynamic> extends self::A<self::B::U*> {
   static field dynamic _redirecting# = <dynamic>[self::B::•];
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/redirection_chain_type_arguments.dart.strong.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/redirection_chain_type_arguments.dart.strong.transformed.expect
index f3111be..16d295b 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/redirection_chain_type_arguments.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/redirection_chain_type_arguments.dart.strong.transformed.expect
@@ -12,6 +12,16 @@
     ;
   static factory •<T extends core::Object* = dynamic>() → self::A<self::A::•::T*>*
     let <U extends core::Object* = dynamic, W extends core::Object* = dynamic>() →* self::B<U*, W*>* #redirecting_factory = self::B::• in let self::A::•::T* #typeArg0 = null in let core::num* #typeArg1 = null in invalid-expression;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B<U extends core::Object* = dynamic, W extends core::Object* = dynamic> extends self::A<self::B::U*> {
   static field dynamic _redirecting# = <dynamic>[self::B::•];
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/redirection_chain_type_arguments.dart.weak.expect b/pkg/front_end/testcases/general_nnbd_opt_out/redirection_chain_type_arguments.dart.weak.expect
index cbfe339..f6ee22f 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/redirection_chain_type_arguments.dart.weak.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/redirection_chain_type_arguments.dart.weak.expect
@@ -12,6 +12,16 @@
     ;
   static factory •<T extends core::Object* = dynamic>() → self::A<self::A::•::T*>*
     let dynamic #redirecting_factory = self::B::• in let self::A::•::T* #typeArg0 = null in let core::num* #typeArg1 = null in invalid-expression;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B<U extends core::Object* = dynamic, W extends core::Object* = dynamic> extends self::A<self::B::U*> {
   static field dynamic _redirecting# = <dynamic>[self::B::•];
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/redirection_chain_type_arguments.dart.weak.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/redirection_chain_type_arguments.dart.weak.transformed.expect
index f3111be..16d295b 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/redirection_chain_type_arguments.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/redirection_chain_type_arguments.dart.weak.transformed.expect
@@ -12,6 +12,16 @@
     ;
   static factory •<T extends core::Object* = dynamic>() → self::A<self::A::•::T*>*
     let <U extends core::Object* = dynamic, W extends core::Object* = dynamic>() →* self::B<U*, W*>* #redirecting_factory = self::B::• in let self::A::•::T* #typeArg0 = null in let core::num* #typeArg1 = null in invalid-expression;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B<U extends core::Object* = dynamic, W extends core::Object* = dynamic> extends self::A<self::B::U*> {
   static field dynamic _redirecting# = <dynamic>[self::B::•];
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/redirection_chain_type_arguments_subst.dart.outline.expect b/pkg/front_end/testcases/general_nnbd_opt_out/redirection_chain_type_arguments_subst.dart.outline.expect
index 4985b32..2f1e5b9 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/redirection_chain_type_arguments_subst.dart.outline.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/redirection_chain_type_arguments_subst.dart.outline.expect
@@ -10,6 +10,16 @@
     ;
   static factory •<T extends core::Object* = dynamic>() → self::A<self::A::•::T*>*
     let dynamic #redirecting_factory = self::B::• in let self::A::•::T* #typeArg0 = null in let core::List<self::A::•::T*>* #typeArg1 = null in invalid-expression;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class B<U extends core::Object* = dynamic, W extends core::Object* = dynamic> extends self::A<self::B::U*> {
   static field dynamic _redirecting# = <dynamic>[self::B::•];
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/redirection_chain_type_arguments_subst.dart.strong.expect b/pkg/front_end/testcases/general_nnbd_opt_out/redirection_chain_type_arguments_subst.dart.strong.expect
index 4009f40..bfeacaa 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/redirection_chain_type_arguments_subst.dart.strong.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/redirection_chain_type_arguments_subst.dart.strong.expect
@@ -12,6 +12,16 @@
     ;
   static factory •<T extends core::Object* = dynamic>() → self::A<self::A::•::T*>*
     let dynamic #redirecting_factory = self::B::• in let self::A::•::T* #typeArg0 = null in let core::List<self::A::•::T*>* #typeArg1 = null in invalid-expression;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class B<U extends core::Object* = dynamic, W extends core::Object* = dynamic> extends self::A<self::B::U*> {
   static field dynamic _redirecting# = <dynamic>[self::B::•];
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/redirection_chain_type_arguments_subst.dart.strong.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/redirection_chain_type_arguments_subst.dart.strong.transformed.expect
index 6aa25a9..28c420e 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/redirection_chain_type_arguments_subst.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/redirection_chain_type_arguments_subst.dart.strong.transformed.expect
@@ -12,6 +12,16 @@
     ;
   static factory •<T extends core::Object* = dynamic>() → self::A<self::A::•::T*>*
     let <U extends core::Object* = dynamic, W extends core::Object* = dynamic>() →* self::B<U*, W*>* #redirecting_factory = self::B::• in let self::A::•::T* #typeArg0 = null in let core::List<self::A::•::T*>* #typeArg1 = null in invalid-expression;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class B<U extends core::Object* = dynamic, W extends core::Object* = dynamic> extends self::A<self::B::U*> {
   static field dynamic _redirecting# = <dynamic>[self::B::•];
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/redirection_chain_type_arguments_subst.dart.weak.expect b/pkg/front_end/testcases/general_nnbd_opt_out/redirection_chain_type_arguments_subst.dart.weak.expect
index 4009f40..bfeacaa 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/redirection_chain_type_arguments_subst.dart.weak.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/redirection_chain_type_arguments_subst.dart.weak.expect
@@ -12,6 +12,16 @@
     ;
   static factory •<T extends core::Object* = dynamic>() → self::A<self::A::•::T*>*
     let dynamic #redirecting_factory = self::B::• in let self::A::•::T* #typeArg0 = null in let core::List<self::A::•::T*>* #typeArg1 = null in invalid-expression;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class B<U extends core::Object* = dynamic, W extends core::Object* = dynamic> extends self::A<self::B::U*> {
   static field dynamic _redirecting# = <dynamic>[self::B::•];
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/redirection_chain_type_arguments_subst.dart.weak.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/redirection_chain_type_arguments_subst.dart.weak.transformed.expect
index 6aa25a9..28c420e 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/redirection_chain_type_arguments_subst.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/redirection_chain_type_arguments_subst.dart.weak.transformed.expect
@@ -12,6 +12,16 @@
     ;
   static factory •<T extends core::Object* = dynamic>() → self::A<self::A::•::T*>*
     let <U extends core::Object* = dynamic, W extends core::Object* = dynamic>() →* self::B<U*, W*>* #redirecting_factory = self::B::• in let self::A::•::T* #typeArg0 = null in let core::List<self::A::•::T*>* #typeArg1 = null in invalid-expression;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class B<U extends core::Object* = dynamic, W extends core::Object* = dynamic> extends self::A<self::B::U*> {
   static field dynamic _redirecting# = <dynamic>[self::B::•];
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/redirection_type_arguments.dart.outline.expect b/pkg/front_end/testcases/general_nnbd_opt_out/redirection_type_arguments.dart.outline.expect
index b15ac8d..d2404b5 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/redirection_type_arguments.dart.outline.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/redirection_type_arguments.dart.outline.expect
@@ -11,6 +11,16 @@
     ;
   static factory •() → self::A*
     let dynamic #redirecting_factory = self::B::• in let core::String* #typeArg0 = null in invalid-expression;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B<T extends core::Object* = dynamic> extends self::A /*hasConstConstructor*/  {
   const constructor •() → self::B<self::B::T*>*
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/redirection_type_arguments.dart.strong.expect b/pkg/front_end/testcases/general_nnbd_opt_out/redirection_type_arguments.dart.strong.expect
index 81c22f9..f7ce759 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/redirection_type_arguments.dart.strong.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/redirection_type_arguments.dart.strong.expect
@@ -12,6 +12,16 @@
     ;
   static factory •() → self::A*
     let dynamic #redirecting_factory = self::B::• in let core::String* #typeArg0 = null in invalid-expression;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B<T extends core::Object* = dynamic> extends self::A /*hasConstConstructor*/  {
   const constructor •() → self::B<self::B::T*>*
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/redirection_type_arguments.dart.strong.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/redirection_type_arguments.dart.strong.transformed.expect
index 8c2291d..9ab42b4 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/redirection_type_arguments.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/redirection_type_arguments.dart.strong.transformed.expect
@@ -12,6 +12,16 @@
     ;
   static factory •() → self::A*
     let<BottomType> #redirecting_factory = self::B::• in let core::String* #typeArg0 = null in invalid-expression;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B<T extends core::Object* = dynamic> extends self::A /*hasConstConstructor*/  {
   const constructor •() → self::B<self::B::T*>*
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/redirection_type_arguments.dart.weak.expect b/pkg/front_end/testcases/general_nnbd_opt_out/redirection_type_arguments.dart.weak.expect
index 81c22f9..f7ce759 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/redirection_type_arguments.dart.weak.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/redirection_type_arguments.dart.weak.expect
@@ -12,6 +12,16 @@
     ;
   static factory •() → self::A*
     let dynamic #redirecting_factory = self::B::• in let core::String* #typeArg0 = null in invalid-expression;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B<T extends core::Object* = dynamic> extends self::A /*hasConstConstructor*/  {
   const constructor •() → self::B<self::B::T*>*
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/redirection_type_arguments.dart.weak.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/redirection_type_arguments.dart.weak.transformed.expect
index 8c2291d..9ab42b4 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/redirection_type_arguments.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/redirection_type_arguments.dart.weak.transformed.expect
@@ -12,6 +12,16 @@
     ;
   static factory •() → self::A*
     let<BottomType> #redirecting_factory = self::B::• in let core::String* #typeArg0 = null in invalid-expression;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B<T extends core::Object* = dynamic> extends self::A /*hasConstConstructor*/  {
   const constructor •() → self::B<self::B::T*>*
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/reject_generic_function_types_in_bounds.dart.outline.expect b/pkg/front_end/testcases/general_nnbd_opt_out/reject_generic_function_types_in_bounds.dart.outline.expect
index 492f70a..9484a68 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/reject_generic_function_types_in_bounds.dart.outline.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/reject_generic_function_types_in_bounds.dart.outline.expect
@@ -12,6 +12,16 @@
 class Hest<TypeX extends <TypeY extends core::Object* = dynamic>(TypeY*) →* TypeY* = dynamic> extends core::Object {
   synthetic constructor •() → self::Hest<self::Hest::TypeX*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/reject_generic_function_types_in_bounds.dart.strong.expect b/pkg/front_end/testcases/general_nnbd_opt_out/reject_generic_function_types_in_bounds.dart.strong.expect
index 9ff41d2..33a5ce2 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/reject_generic_function_types_in_bounds.dart.strong.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/reject_generic_function_types_in_bounds.dart.strong.expect
@@ -13,5 +13,15 @@
   synthetic constructor •() → self::Hest<self::Hest::TypeX*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/reject_generic_function_types_in_bounds.dart.strong.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/reject_generic_function_types_in_bounds.dart.strong.transformed.expect
index 9ff41d2..33a5ce2 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/reject_generic_function_types_in_bounds.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/reject_generic_function_types_in_bounds.dart.strong.transformed.expect
@@ -13,5 +13,15 @@
   synthetic constructor •() → self::Hest<self::Hest::TypeX*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/reject_generic_function_types_in_bounds.dart.weak.expect b/pkg/front_end/testcases/general_nnbd_opt_out/reject_generic_function_types_in_bounds.dart.weak.expect
index 9ff41d2..33a5ce2 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/reject_generic_function_types_in_bounds.dart.weak.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/reject_generic_function_types_in_bounds.dart.weak.expect
@@ -13,5 +13,15 @@
   synthetic constructor •() → self::Hest<self::Hest::TypeX*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/reject_generic_function_types_in_bounds.dart.weak.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/reject_generic_function_types_in_bounds.dart.weak.transformed.expect
index 9ff41d2..33a5ce2 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/reject_generic_function_types_in_bounds.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/reject_generic_function_types_in_bounds.dart.weak.transformed.expect
@@ -13,5 +13,15 @@
   synthetic constructor •() → self::Hest<self::Hest::TypeX*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/sdk_diagnostic.dart.outline.expect b/pkg/front_end/testcases/general_nnbd_opt_out/sdk_diagnostic.dart.outline.expect
index dda49ef..99ede4e 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/sdk_diagnostic.dart.outline.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/sdk_diagnostic.dart.outline.expect
@@ -12,7 +12,7 @@
 //
 // class C extends Iterable<Object> {
 //       ^
-// sdk/lib/core/iterable.dart:156:19: Context: 'Iterable.iterator' is defined here.
+// org-dartlang-sdk:///sdk_nnbd/lib/core/iterable.dart:158:19: Context: 'Iterable.iterator' is defined here.
 //   Iterator<E> get iterator;
 //                   ^^^^^^^^
 //
@@ -22,6 +22,43 @@
 class C extends core::Iterable<core::Object*> {
   synthetic constructor •() → self::C*
     ;
+  abstract member-signature get iterator() → core::Iterator<core::Object*>*;
+  abstract member-signature method cast<R extends core::Object* = dynamic>() → core::Iterable<self::C::cast::R*>*;
+  abstract member-signature method followedBy(generic-covariant-impl core::Iterable<core::Object*>* other) → core::Iterable<core::Object*>*;
+  abstract member-signature method map<T extends core::Object* = dynamic>((core::Object*) →* self::C::map::T* f) → core::Iterable<self::C::map::T*>*;
+  abstract member-signature method where((core::Object*) →* core::bool* test) → core::Iterable<core::Object*>*;
+  abstract member-signature method whereType<T extends core::Object* = dynamic>() → core::Iterable<self::C::whereType::T*>*;
+  abstract member-signature method expand<T extends core::Object* = dynamic>((core::Object*) →* core::Iterable<self::C::expand::T*>* f) → core::Iterable<self::C::expand::T*>*;
+  abstract member-signature method contains(core::Object* element) → core::bool*;
+  abstract member-signature method forEach((core::Object*) →* void f) → void;
+  abstract member-signature method reduce(generic-covariant-impl (core::Object*, core::Object*) →* core::Object* combine) → core::Object*;
+  abstract member-signature method fold<T extends core::Object* = dynamic>(self::C::fold::T* initialValue, (self::C::fold::T*, core::Object*) →* self::C::fold::T* combine) → self::C::fold::T*;
+  abstract member-signature method every((core::Object*) →* core::bool* test) → core::bool*;
+  abstract member-signature method join([core::String* separator]) → core::String*;
+  abstract member-signature method any((core::Object*) →* core::bool* test) → core::bool*;
+  abstract member-signature method toList({core::bool* growable}) → core::List<core::Object*>*;
+  abstract member-signature method toSet() → core::Set<core::Object*>*;
+  abstract member-signature get length() → core::int*;
+  abstract member-signature get isEmpty() → core::bool*;
+  abstract member-signature get isNotEmpty() → core::bool*;
+  abstract member-signature method take(core::int* count) → core::Iterable<core::Object*>*;
+  abstract member-signature method takeWhile((core::Object*) →* core::bool* test) → core::Iterable<core::Object*>*;
+  abstract member-signature method skip(core::int* count) → core::Iterable<core::Object*>*;
+  abstract member-signature method skipWhile((core::Object*) →* core::bool* test) → core::Iterable<core::Object*>*;
+  abstract member-signature method firstWhere((core::Object*) →* core::bool* test, {generic-covariant-impl () →* core::Object* orElse}) → core::Object*;
+  abstract member-signature method lastWhere((core::Object*) →* core::bool* test, {generic-covariant-impl () →* core::Object* orElse}) → core::Object*;
+  abstract member-signature method singleWhere((core::Object*) →* core::bool* test, {generic-covariant-impl () →* core::Object* orElse}) → core::Object*;
+  abstract member-signature method elementAt(core::int* index) → core::Object*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method test() → dynamic
   ;
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/sdk_diagnostic.dart.strong.expect b/pkg/front_end/testcases/general_nnbd_opt_out/sdk_diagnostic.dart.strong.expect
index d264300..38cadb6 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/sdk_diagnostic.dart.strong.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/sdk_diagnostic.dart.strong.expect
@@ -12,15 +12,15 @@
 //
 // class C extends Iterable<Object> {
 //       ^
-// sdk/lib/core/iterable.dart:156:19: Context: 'Iterable.iterator' is defined here.
+// org-dartlang-sdk:///sdk_nnbd/lib/core/iterable.dart:158:19: Context: 'Iterable.iterator' is defined here.
 //   Iterator<E> get iterator;
 //                   ^^^^^^^^
 //
 // pkg/front_end/testcases/general_nnbd_opt_out/sdk_diagnostic.dart:14:8: Error: Too few positional arguments: 1 required, 0 given.
 //   print(incorrectArgument: "fisk");
 //        ^
-// sdk/lib/core/print.dart:10:6: Context: Found this candidate, but the arguments don't match.
-// void print(Object object) {
+// org-dartlang-sdk:///sdk_nnbd/lib/core/print.dart:8:6: Context: Found this candidate, but the arguments don't match.
+// void print(Object? object) {
 //      ^^^^^
 //
 import self as self;
@@ -30,6 +30,43 @@
   synthetic constructor •() → self::C*
     : super core::Iterable::•()
     ;
+  abstract member-signature get iterator() → core::Iterator<core::Object*>*;
+  abstract member-signature method cast<R extends core::Object* = dynamic>() → core::Iterable<self::C::cast::R*>*;
+  abstract member-signature method followedBy(generic-covariant-impl core::Iterable<core::Object*>* other) → core::Iterable<core::Object*>*;
+  abstract member-signature method map<T extends core::Object* = dynamic>((core::Object*) →* self::C::map::T* f) → core::Iterable<self::C::map::T*>*;
+  abstract member-signature method where((core::Object*) →* core::bool* test) → core::Iterable<core::Object*>*;
+  abstract member-signature method whereType<T extends core::Object* = dynamic>() → core::Iterable<self::C::whereType::T*>*;
+  abstract member-signature method expand<T extends core::Object* = dynamic>((core::Object*) →* core::Iterable<self::C::expand::T*>* f) → core::Iterable<self::C::expand::T*>*;
+  abstract member-signature method contains(core::Object* element) → core::bool*;
+  abstract member-signature method forEach((core::Object*) →* void f) → void;
+  abstract member-signature method reduce(generic-covariant-impl (core::Object*, core::Object*) →* core::Object* combine) → core::Object*;
+  abstract member-signature method fold<T extends core::Object* = dynamic>(self::C::fold::T* initialValue, (self::C::fold::T*, core::Object*) →* self::C::fold::T* combine) → self::C::fold::T*;
+  abstract member-signature method every((core::Object*) →* core::bool* test) → core::bool*;
+  abstract member-signature method join([core::String* separator = #C1]) → core::String*;
+  abstract member-signature method any((core::Object*) →* core::bool* test) → core::bool*;
+  abstract member-signature method toList({core::bool* growable = #C2}) → core::List<core::Object*>*;
+  abstract member-signature method toSet() → core::Set<core::Object*>*;
+  abstract member-signature get length() → core::int*;
+  abstract member-signature get isEmpty() → core::bool*;
+  abstract member-signature get isNotEmpty() → core::bool*;
+  abstract member-signature method take(core::int* count) → core::Iterable<core::Object*>*;
+  abstract member-signature method takeWhile((core::Object*) →* core::bool* test) → core::Iterable<core::Object*>*;
+  abstract member-signature method skip(core::int* count) → core::Iterable<core::Object*>*;
+  abstract member-signature method skipWhile((core::Object*) →* core::bool* test) → core::Iterable<core::Object*>*;
+  abstract member-signature method firstWhere((core::Object*) →* core::bool* test, {generic-covariant-impl () →* core::Object* orElse = #C3}) → core::Object*;
+  abstract member-signature method lastWhere((core::Object*) →* core::bool* test, {generic-covariant-impl () →* core::Object* orElse = #C3}) → core::Object*;
+  abstract member-signature method singleWhere((core::Object*) →* core::bool* test, {generic-covariant-impl () →* core::Object* orElse = #C3}) → core::Object*;
+  abstract member-signature method elementAt(core::int* index) → core::Object*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method test() → dynamic {
   invalid-expression "pkg/front_end/testcases/general_nnbd_opt_out/sdk_diagnostic.dart:14:8: Error: Too few positional arguments: 1 required, 0 given.
@@ -37,3 +74,9 @@
        ^";
 }
 static method main() → dynamic {}
+
+constants  {
+  #C1 = ""
+  #C2 = true
+  #C3 = null
+}
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/sdk_diagnostic.dart.strong.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/sdk_diagnostic.dart.strong.transformed.expect
index d264300..38cadb6 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/sdk_diagnostic.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/sdk_diagnostic.dart.strong.transformed.expect
@@ -12,15 +12,15 @@
 //
 // class C extends Iterable<Object> {
 //       ^
-// sdk/lib/core/iterable.dart:156:19: Context: 'Iterable.iterator' is defined here.
+// org-dartlang-sdk:///sdk_nnbd/lib/core/iterable.dart:158:19: Context: 'Iterable.iterator' is defined here.
 //   Iterator<E> get iterator;
 //                   ^^^^^^^^
 //
 // pkg/front_end/testcases/general_nnbd_opt_out/sdk_diagnostic.dart:14:8: Error: Too few positional arguments: 1 required, 0 given.
 //   print(incorrectArgument: "fisk");
 //        ^
-// sdk/lib/core/print.dart:10:6: Context: Found this candidate, but the arguments don't match.
-// void print(Object object) {
+// org-dartlang-sdk:///sdk_nnbd/lib/core/print.dart:8:6: Context: Found this candidate, but the arguments don't match.
+// void print(Object? object) {
 //      ^^^^^
 //
 import self as self;
@@ -30,6 +30,43 @@
   synthetic constructor •() → self::C*
     : super core::Iterable::•()
     ;
+  abstract member-signature get iterator() → core::Iterator<core::Object*>*;
+  abstract member-signature method cast<R extends core::Object* = dynamic>() → core::Iterable<self::C::cast::R*>*;
+  abstract member-signature method followedBy(generic-covariant-impl core::Iterable<core::Object*>* other) → core::Iterable<core::Object*>*;
+  abstract member-signature method map<T extends core::Object* = dynamic>((core::Object*) →* self::C::map::T* f) → core::Iterable<self::C::map::T*>*;
+  abstract member-signature method where((core::Object*) →* core::bool* test) → core::Iterable<core::Object*>*;
+  abstract member-signature method whereType<T extends core::Object* = dynamic>() → core::Iterable<self::C::whereType::T*>*;
+  abstract member-signature method expand<T extends core::Object* = dynamic>((core::Object*) →* core::Iterable<self::C::expand::T*>* f) → core::Iterable<self::C::expand::T*>*;
+  abstract member-signature method contains(core::Object* element) → core::bool*;
+  abstract member-signature method forEach((core::Object*) →* void f) → void;
+  abstract member-signature method reduce(generic-covariant-impl (core::Object*, core::Object*) →* core::Object* combine) → core::Object*;
+  abstract member-signature method fold<T extends core::Object* = dynamic>(self::C::fold::T* initialValue, (self::C::fold::T*, core::Object*) →* self::C::fold::T* combine) → self::C::fold::T*;
+  abstract member-signature method every((core::Object*) →* core::bool* test) → core::bool*;
+  abstract member-signature method join([core::String* separator = #C1]) → core::String*;
+  abstract member-signature method any((core::Object*) →* core::bool* test) → core::bool*;
+  abstract member-signature method toList({core::bool* growable = #C2}) → core::List<core::Object*>*;
+  abstract member-signature method toSet() → core::Set<core::Object*>*;
+  abstract member-signature get length() → core::int*;
+  abstract member-signature get isEmpty() → core::bool*;
+  abstract member-signature get isNotEmpty() → core::bool*;
+  abstract member-signature method take(core::int* count) → core::Iterable<core::Object*>*;
+  abstract member-signature method takeWhile((core::Object*) →* core::bool* test) → core::Iterable<core::Object*>*;
+  abstract member-signature method skip(core::int* count) → core::Iterable<core::Object*>*;
+  abstract member-signature method skipWhile((core::Object*) →* core::bool* test) → core::Iterable<core::Object*>*;
+  abstract member-signature method firstWhere((core::Object*) →* core::bool* test, {generic-covariant-impl () →* core::Object* orElse = #C3}) → core::Object*;
+  abstract member-signature method lastWhere((core::Object*) →* core::bool* test, {generic-covariant-impl () →* core::Object* orElse = #C3}) → core::Object*;
+  abstract member-signature method singleWhere((core::Object*) →* core::bool* test, {generic-covariant-impl () →* core::Object* orElse = #C3}) → core::Object*;
+  abstract member-signature method elementAt(core::int* index) → core::Object*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method test() → dynamic {
   invalid-expression "pkg/front_end/testcases/general_nnbd_opt_out/sdk_diagnostic.dart:14:8: Error: Too few positional arguments: 1 required, 0 given.
@@ -37,3 +74,9 @@
        ^";
 }
 static method main() → dynamic {}
+
+constants  {
+  #C1 = ""
+  #C2 = true
+  #C3 = null
+}
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/sdk_diagnostic.dart.weak.expect b/pkg/front_end/testcases/general_nnbd_opt_out/sdk_diagnostic.dart.weak.expect
index d264300..38cadb6 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/sdk_diagnostic.dart.weak.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/sdk_diagnostic.dart.weak.expect
@@ -12,15 +12,15 @@
 //
 // class C extends Iterable<Object> {
 //       ^
-// sdk/lib/core/iterable.dart:156:19: Context: 'Iterable.iterator' is defined here.
+// org-dartlang-sdk:///sdk_nnbd/lib/core/iterable.dart:158:19: Context: 'Iterable.iterator' is defined here.
 //   Iterator<E> get iterator;
 //                   ^^^^^^^^
 //
 // pkg/front_end/testcases/general_nnbd_opt_out/sdk_diagnostic.dart:14:8: Error: Too few positional arguments: 1 required, 0 given.
 //   print(incorrectArgument: "fisk");
 //        ^
-// sdk/lib/core/print.dart:10:6: Context: Found this candidate, but the arguments don't match.
-// void print(Object object) {
+// org-dartlang-sdk:///sdk_nnbd/lib/core/print.dart:8:6: Context: Found this candidate, but the arguments don't match.
+// void print(Object? object) {
 //      ^^^^^
 //
 import self as self;
@@ -30,6 +30,43 @@
   synthetic constructor •() → self::C*
     : super core::Iterable::•()
     ;
+  abstract member-signature get iterator() → core::Iterator<core::Object*>*;
+  abstract member-signature method cast<R extends core::Object* = dynamic>() → core::Iterable<self::C::cast::R*>*;
+  abstract member-signature method followedBy(generic-covariant-impl core::Iterable<core::Object*>* other) → core::Iterable<core::Object*>*;
+  abstract member-signature method map<T extends core::Object* = dynamic>((core::Object*) →* self::C::map::T* f) → core::Iterable<self::C::map::T*>*;
+  abstract member-signature method where((core::Object*) →* core::bool* test) → core::Iterable<core::Object*>*;
+  abstract member-signature method whereType<T extends core::Object* = dynamic>() → core::Iterable<self::C::whereType::T*>*;
+  abstract member-signature method expand<T extends core::Object* = dynamic>((core::Object*) →* core::Iterable<self::C::expand::T*>* f) → core::Iterable<self::C::expand::T*>*;
+  abstract member-signature method contains(core::Object* element) → core::bool*;
+  abstract member-signature method forEach((core::Object*) →* void f) → void;
+  abstract member-signature method reduce(generic-covariant-impl (core::Object*, core::Object*) →* core::Object* combine) → core::Object*;
+  abstract member-signature method fold<T extends core::Object* = dynamic>(self::C::fold::T* initialValue, (self::C::fold::T*, core::Object*) →* self::C::fold::T* combine) → self::C::fold::T*;
+  abstract member-signature method every((core::Object*) →* core::bool* test) → core::bool*;
+  abstract member-signature method join([core::String* separator = #C1]) → core::String*;
+  abstract member-signature method any((core::Object*) →* core::bool* test) → core::bool*;
+  abstract member-signature method toList({core::bool* growable = #C2}) → core::List<core::Object*>*;
+  abstract member-signature method toSet() → core::Set<core::Object*>*;
+  abstract member-signature get length() → core::int*;
+  abstract member-signature get isEmpty() → core::bool*;
+  abstract member-signature get isNotEmpty() → core::bool*;
+  abstract member-signature method take(core::int* count) → core::Iterable<core::Object*>*;
+  abstract member-signature method takeWhile((core::Object*) →* core::bool* test) → core::Iterable<core::Object*>*;
+  abstract member-signature method skip(core::int* count) → core::Iterable<core::Object*>*;
+  abstract member-signature method skipWhile((core::Object*) →* core::bool* test) → core::Iterable<core::Object*>*;
+  abstract member-signature method firstWhere((core::Object*) →* core::bool* test, {generic-covariant-impl () →* core::Object* orElse = #C3}) → core::Object*;
+  abstract member-signature method lastWhere((core::Object*) →* core::bool* test, {generic-covariant-impl () →* core::Object* orElse = #C3}) → core::Object*;
+  abstract member-signature method singleWhere((core::Object*) →* core::bool* test, {generic-covariant-impl () →* core::Object* orElse = #C3}) → core::Object*;
+  abstract member-signature method elementAt(core::int* index) → core::Object*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method test() → dynamic {
   invalid-expression "pkg/front_end/testcases/general_nnbd_opt_out/sdk_diagnostic.dart:14:8: Error: Too few positional arguments: 1 required, 0 given.
@@ -37,3 +74,9 @@
        ^";
 }
 static method main() → dynamic {}
+
+constants  {
+  #C1 = ""
+  #C2 = true
+  #C3 = null
+}
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/sdk_diagnostic.dart.weak.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/sdk_diagnostic.dart.weak.transformed.expect
index d264300..38cadb6 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/sdk_diagnostic.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/sdk_diagnostic.dart.weak.transformed.expect
@@ -12,15 +12,15 @@
 //
 // class C extends Iterable<Object> {
 //       ^
-// sdk/lib/core/iterable.dart:156:19: Context: 'Iterable.iterator' is defined here.
+// org-dartlang-sdk:///sdk_nnbd/lib/core/iterable.dart:158:19: Context: 'Iterable.iterator' is defined here.
 //   Iterator<E> get iterator;
 //                   ^^^^^^^^
 //
 // pkg/front_end/testcases/general_nnbd_opt_out/sdk_diagnostic.dart:14:8: Error: Too few positional arguments: 1 required, 0 given.
 //   print(incorrectArgument: "fisk");
 //        ^
-// sdk/lib/core/print.dart:10:6: Context: Found this candidate, but the arguments don't match.
-// void print(Object object) {
+// org-dartlang-sdk:///sdk_nnbd/lib/core/print.dart:8:6: Context: Found this candidate, but the arguments don't match.
+// void print(Object? object) {
 //      ^^^^^
 //
 import self as self;
@@ -30,6 +30,43 @@
   synthetic constructor •() → self::C*
     : super core::Iterable::•()
     ;
+  abstract member-signature get iterator() → core::Iterator<core::Object*>*;
+  abstract member-signature method cast<R extends core::Object* = dynamic>() → core::Iterable<self::C::cast::R*>*;
+  abstract member-signature method followedBy(generic-covariant-impl core::Iterable<core::Object*>* other) → core::Iterable<core::Object*>*;
+  abstract member-signature method map<T extends core::Object* = dynamic>((core::Object*) →* self::C::map::T* f) → core::Iterable<self::C::map::T*>*;
+  abstract member-signature method where((core::Object*) →* core::bool* test) → core::Iterable<core::Object*>*;
+  abstract member-signature method whereType<T extends core::Object* = dynamic>() → core::Iterable<self::C::whereType::T*>*;
+  abstract member-signature method expand<T extends core::Object* = dynamic>((core::Object*) →* core::Iterable<self::C::expand::T*>* f) → core::Iterable<self::C::expand::T*>*;
+  abstract member-signature method contains(core::Object* element) → core::bool*;
+  abstract member-signature method forEach((core::Object*) →* void f) → void;
+  abstract member-signature method reduce(generic-covariant-impl (core::Object*, core::Object*) →* core::Object* combine) → core::Object*;
+  abstract member-signature method fold<T extends core::Object* = dynamic>(self::C::fold::T* initialValue, (self::C::fold::T*, core::Object*) →* self::C::fold::T* combine) → self::C::fold::T*;
+  abstract member-signature method every((core::Object*) →* core::bool* test) → core::bool*;
+  abstract member-signature method join([core::String* separator = #C1]) → core::String*;
+  abstract member-signature method any((core::Object*) →* core::bool* test) → core::bool*;
+  abstract member-signature method toList({core::bool* growable = #C2}) → core::List<core::Object*>*;
+  abstract member-signature method toSet() → core::Set<core::Object*>*;
+  abstract member-signature get length() → core::int*;
+  abstract member-signature get isEmpty() → core::bool*;
+  abstract member-signature get isNotEmpty() → core::bool*;
+  abstract member-signature method take(core::int* count) → core::Iterable<core::Object*>*;
+  abstract member-signature method takeWhile((core::Object*) →* core::bool* test) → core::Iterable<core::Object*>*;
+  abstract member-signature method skip(core::int* count) → core::Iterable<core::Object*>*;
+  abstract member-signature method skipWhile((core::Object*) →* core::bool* test) → core::Iterable<core::Object*>*;
+  abstract member-signature method firstWhere((core::Object*) →* core::bool* test, {generic-covariant-impl () →* core::Object* orElse = #C3}) → core::Object*;
+  abstract member-signature method lastWhere((core::Object*) →* core::bool* test, {generic-covariant-impl () →* core::Object* orElse = #C3}) → core::Object*;
+  abstract member-signature method singleWhere((core::Object*) →* core::bool* test, {generic-covariant-impl () →* core::Object* orElse = #C3}) → core::Object*;
+  abstract member-signature method elementAt(core::int* index) → core::Object*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method test() → dynamic {
   invalid-expression "pkg/front_end/testcases/general_nnbd_opt_out/sdk_diagnostic.dart:14:8: Error: Too few positional arguments: 1 required, 0 given.
@@ -37,3 +74,9 @@
        ^";
 }
 static method main() → dynamic {}
+
+constants  {
+  #C1 = ""
+  #C2 = true
+  #C3 = null
+}
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/spread_collection.dart.strong.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/spread_collection.dart.strong.transformed.expect
index ab00273..d860998 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/spread_collection.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/spread_collection.dart.strong.transformed.expect
@@ -35,7 +35,7 @@
     final core::Map<core::int*, core::int*>* #t5 = <core::int*, core::int*>{};
     #t5.{core::Map::[]=}(1, 1);
     {
-      core::Iterator<core::MapEntry<core::int*, core::int*>*>* :sync-for-iterator = <core::int*, core::int*>{2: 2}.{core::Map::entries}.{core::Iterable::iterator};
+      core::Iterator<core::MapEntry<core::int*, core::int*>>* :sync-for-iterator = <core::int*, core::int*>{2: 2}.{core::Map::entries}.{core::Iterable::iterator};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         final core::MapEntry<core::int*, core::int*>* #t6 = :sync-for-iterator.{core::Iterator::current};
         #t5.{core::Map::[]=}(#t6.{core::MapEntry::key}, #t6.{core::MapEntry::value});
@@ -43,7 +43,7 @@
     }
     final core::Map<core::int*, core::int*>* #t7 = <core::int*, core::int*>{3: 3};
     if(!#t7.{core::Object::==}(null)) {
-      core::Iterator<core::MapEntry<core::int*, core::int*>*>* :sync-for-iterator = #t7.{core::Map::entries}.{core::Iterable::iterator};
+      core::Iterator<core::MapEntry<core::int*, core::int*>>* :sync-for-iterator = #t7.{core::Map::entries}.{core::Iterable::iterator};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         final core::MapEntry<core::int*, core::int*>* #t8 = :sync-for-iterator.{core::Iterator::current};
         #t5.{core::Map::[]=}(#t8.{core::MapEntry::key}, #t8.{core::MapEntry::value});
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/spread_collection.dart.weak.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/spread_collection.dart.weak.transformed.expect
index ab00273..d860998 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/spread_collection.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/spread_collection.dart.weak.transformed.expect
@@ -35,7 +35,7 @@
     final core::Map<core::int*, core::int*>* #t5 = <core::int*, core::int*>{};
     #t5.{core::Map::[]=}(1, 1);
     {
-      core::Iterator<core::MapEntry<core::int*, core::int*>*>* :sync-for-iterator = <core::int*, core::int*>{2: 2}.{core::Map::entries}.{core::Iterable::iterator};
+      core::Iterator<core::MapEntry<core::int*, core::int*>>* :sync-for-iterator = <core::int*, core::int*>{2: 2}.{core::Map::entries}.{core::Iterable::iterator};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         final core::MapEntry<core::int*, core::int*>* #t6 = :sync-for-iterator.{core::Iterator::current};
         #t5.{core::Map::[]=}(#t6.{core::MapEntry::key}, #t6.{core::MapEntry::value});
@@ -43,7 +43,7 @@
     }
     final core::Map<core::int*, core::int*>* #t7 = <core::int*, core::int*>{3: 3};
     if(!#t7.{core::Object::==}(null)) {
-      core::Iterator<core::MapEntry<core::int*, core::int*>*>* :sync-for-iterator = #t7.{core::Map::entries}.{core::Iterable::iterator};
+      core::Iterator<core::MapEntry<core::int*, core::int*>>* :sync-for-iterator = #t7.{core::Map::entries}.{core::Iterable::iterator};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         final core::MapEntry<core::int*, core::int*>* #t8 = :sync-for-iterator.{core::Iterator::current};
         #t5.{core::Map::[]=}(#t8.{core::MapEntry::key}, #t8.{core::MapEntry::value});
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/spread_collection_inference.dart.strong.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/spread_collection_inference.dart.strong.transformed.expect
index 8eb50fc..69e0bad 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/spread_collection_inference.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/spread_collection_inference.dart.strong.transformed.expect
@@ -132,7 +132,7 @@
   core::Map<dynamic, dynamic>* map10 = block {
     final core::Map<dynamic, dynamic>* #t5 = <dynamic, dynamic>{};
     {
-      core::Iterator<core::MapEntry<dynamic, dynamic>*>* :sync-for-iterator = <dynamic, dynamic>{}.{core::Map::entries}.{core::Iterable::iterator};
+      core::Iterator<core::MapEntry<dynamic, dynamic>>* :sync-for-iterator = <dynamic, dynamic>{}.{core::Map::entries}.{core::Iterable::iterator};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         final core::MapEntry<dynamic, dynamic>* #t6 = :sync-for-iterator.{core::Iterator::current};
         #t5.{core::Map::[]=}(#t6.{core::MapEntry::key}, #t6.{core::MapEntry::value});
@@ -142,7 +142,7 @@
   core::Map<dynamic, dynamic>* map10ambiguous = block {
     final core::Map<dynamic, dynamic>* #t7 = <dynamic, dynamic>{};
     {
-      core::Iterator<core::MapEntry<dynamic, dynamic>*>* :sync-for-iterator = <dynamic, dynamic>{}.{core::Map::entries}.{core::Iterable::iterator};
+      core::Iterator<core::MapEntry<dynamic, dynamic>>* :sync-for-iterator = <dynamic, dynamic>{}.{core::Map::entries}.{core::Iterable::iterator};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         final core::MapEntry<dynamic, dynamic>* #t8 = :sync-for-iterator.{core::Iterator::current};
         #t7.{core::Map::[]=}(#t8.{core::MapEntry::key}, #t8.{core::MapEntry::value});
@@ -186,7 +186,7 @@
   core::Map<core::String*, core::int*>* map20 = block {
     final core::Map<core::String*, core::int*>* #t16 = <core::String*, core::int*>{};
     {
-      core::Iterator<core::MapEntry<core::String*, core::int*>*>* :sync-for-iterator = mapSpread.{core::Map::entries}.{core::Iterable::iterator};
+      core::Iterator<core::MapEntry<core::String*, core::int*>>* :sync-for-iterator = mapSpread.{core::Map::entries}.{core::Iterable::iterator};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         final core::MapEntry<core::String*, core::int*>* #t17 = :sync-for-iterator.{core::Iterator::current};
         #t16.{core::Map::[]=}(#t17.{core::MapEntry::key}, #t17.{core::MapEntry::value});
@@ -197,7 +197,7 @@
   core::Map<core::String*, core::int*>* map20ambiguous = block {
     final core::Map<core::String*, core::int*>* #t18 = <core::String*, core::int*>{};
     {
-      core::Iterator<core::MapEntry<core::String*, core::int*>*>* :sync-for-iterator = mapSpread.{core::Map::entries}.{core::Iterable::iterator};
+      core::Iterator<core::MapEntry<core::String*, core::int*>>* :sync-for-iterator = mapSpread.{core::Map::entries}.{core::Iterable::iterator};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         final core::MapEntry<core::String*, core::int*>* #t19 = :sync-for-iterator.{core::Iterator::current};
         #t18.{core::Map::[]=}(#t19.{core::MapEntry::key}, #t19.{core::MapEntry::value});
@@ -228,7 +228,7 @@
   core::Map<dynamic, dynamic>* map21 = block {
     final core::Map<dynamic, dynamic>* #t24 = <dynamic, dynamic>{};
     {
-      core::Iterator<core::MapEntry<dynamic, dynamic>*>* :sync-for-iterator = ((mapSpread as dynamic) as{TypeError,ForDynamic} core::Map<dynamic, dynamic>*).{core::Map::entries}.{core::Iterable::iterator};
+      core::Iterator<core::MapEntry<dynamic, dynamic>>* :sync-for-iterator = ((mapSpread as dynamic) as{TypeError,ForDynamic} core::Map<dynamic, dynamic>*).{core::Map::entries}.{core::Iterable::iterator};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         final core::MapEntry<dynamic, dynamic>* #t25 = :sync-for-iterator.{core::Iterator::current};
         #t24.{core::Map::[]=}(#t25.{core::MapEntry::key}, #t25.{core::MapEntry::value});
@@ -277,7 +277,7 @@
   core::Map<core::String*, core::int*>* map22 = block {
     final core::Map<core::String*, core::int*>* #t33 = <core::String*, core::int*>{};
     {
-      core::Iterator<core::MapEntry<core::String*, core::int*>*>* :sync-for-iterator = <core::String*, core::int*>{}.{core::Map::entries}.{core::Iterable::iterator};
+      core::Iterator<core::MapEntry<core::String*, core::int*>>* :sync-for-iterator = <core::String*, core::int*>{}.{core::Map::entries}.{core::Iterable::iterator};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         final core::MapEntry<core::String*, core::int*>* #t34 = :sync-for-iterator.{core::Iterator::current};
         #t33.{core::Map::[]=}(#t34.{core::MapEntry::key}, #t34.{core::MapEntry::value});
@@ -321,7 +321,7 @@
   core::Map<core::String*, core::List<core::int*>*>* map23 = block {
     final core::Map<core::String*, core::List<core::int*>*>* #t42 = <core::String*, core::List<core::int*>*>{};
     {
-      core::Iterator<core::MapEntry<core::String*, core::List<core::int*>*>*>* :sync-for-iterator = <core::String*, core::List<core::int*>*>{"baz": <core::int*>[]}.{core::Map::entries}.{core::Iterable::iterator};
+      core::Iterator<core::MapEntry<core::String*, core::List<core::int*>*>>* :sync-for-iterator = <core::String*, core::List<core::int*>*>{"baz": <core::int*>[]}.{core::Map::entries}.{core::Iterable::iterator};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         final core::MapEntry<core::String*, core::List<core::int*>*>* #t43 = :sync-for-iterator.{core::Iterator::current};
         #t42.{core::Map::[]=}(#t43.{core::MapEntry::key}, #t43.{core::MapEntry::value});
@@ -380,7 +380,7 @@
       ^" in ( block {
     final core::Map<core::String*, core::int*>* #t55 = <core::String*, core::int*>{};
     {
-      core::Iterator<core::MapEntry<core::String*, core::int*>*>* :sync-for-iterator = mapSpread.{core::Map::entries}.{core::Iterable::iterator};
+      core::Iterator<core::MapEntry<core::String*, core::int*>>* :sync-for-iterator = mapSpread.{core::Map::entries}.{core::Iterable::iterator};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         final core::MapEntry<core::String*, core::int*>* #t56 = :sync-for-iterator.{core::Iterator::current};
         #t55.{core::Map::[]=}(#t56.{core::MapEntry::key}, #t56.{core::MapEntry::value});
@@ -394,7 +394,7 @@
       ^" in ( block {
     final core::Map<core::String*, core::int*>* #t58 = <core::String*, core::int*>{};
     {
-      core::Iterator<core::MapEntry<core::String*, core::int*>*>* :sync-for-iterator = mapSpread.{core::Map::entries}.{core::Iterable::iterator};
+      core::Iterator<core::MapEntry<core::String*, core::int*>>* :sync-for-iterator = mapSpread.{core::Map::entries}.{core::Iterable::iterator};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         final core::MapEntry<core::String*, core::int*>* #t59 = :sync-for-iterator.{core::Iterator::current};
         #t58.{core::Map::[]=}(#t59.{core::MapEntry::key}, #t59.{core::MapEntry::value});
@@ -404,7 +404,7 @@
   core::List<dynamic>* lhs40 = <dynamic>[invalid-expression "pkg/front_end/testcases/general_nnbd_opt_out/spread_collection_inference.dart:113:38: Error: Unexpected type 'int' of a spread.  Expected 'dynamic' or an Iterable.
   List<dynamic> lhs40 = <dynamic>[...notSpreadInt];
                                      ^"];
-  core::Set<dynamic>* set40 = let final core::Set<dynamic>* #t60 = col::LinkedHashSet::•<dynamic>() in let final core::bool* #t61 = #t60.{core::Set::add}(invalid-expression "pkg/front_end/testcases/general_nnbd_opt_out/spread_collection_inference.dart:115:37: Error: Unexpected type 'int' of a spread.  Expected 'dynamic' or an Iterable.
+  core::Set<dynamic>* set40 = let final core::Set<dynamic>* #t60 = col::LinkedHashSet::•<dynamic>() in let final core::bool #t61 = #t60.{core::Set::add}(invalid-expression "pkg/front_end/testcases/general_nnbd_opt_out/spread_collection_inference.dart:115:37: Error: Unexpected type 'int' of a spread.  Expected 'dynamic' or an Iterable.
   Set<dynamic> set40 = <dynamic>{...notSpreadInt};
                                     ^") in #t60;
   core::Map<dynamic, dynamic>* map40 = <dynamic, dynamic>{invalid-expression "pkg/front_end/testcases/general_nnbd_opt_out/spread_collection_inference.dart:117:55: Error: Unexpected type 'int' of a map spread entry.  Expected 'dynamic' or a Map.
@@ -413,7 +413,7 @@
   core::List<dynamic>* lhs50 = <dynamic>[invalid-expression "pkg/front_end/testcases/general_nnbd_opt_out/spread_collection_inference.dart:119:38: Error: Unexpected type 'int Function()' of a spread.  Expected 'dynamic' or an Iterable.
   List<dynamic> lhs50 = <dynamic>[...notSpreadFunction];
                                      ^"];
-  core::Set<dynamic>* set50 = let final core::Set<dynamic>* #t62 = col::LinkedHashSet::•<dynamic>() in let final core::bool* #t63 = #t62.{core::Set::add}(invalid-expression "pkg/front_end/testcases/general_nnbd_opt_out/spread_collection_inference.dart:121:37: Error: Unexpected type 'int Function()' of a spread.  Expected 'dynamic' or an Iterable.
+  core::Set<dynamic>* set50 = let final core::Set<dynamic>* #t62 = col::LinkedHashSet::•<dynamic>() in let final core::bool #t63 = #t62.{core::Set::add}(invalid-expression "pkg/front_end/testcases/general_nnbd_opt_out/spread_collection_inference.dart:121:37: Error: Unexpected type 'int Function()' of a spread.  Expected 'dynamic' or an Iterable.
   Set<dynamic> set50 = <dynamic>{...notSpreadFunction};
                                     ^") in #t62;
   core::Map<dynamic, dynamic>* map50 = <dynamic, dynamic>{invalid-expression "pkg/front_end/testcases/general_nnbd_opt_out/spread_collection_inference.dart:123:55: Error: Unexpected type 'int Function()' of a map spread entry.  Expected 'dynamic' or a Map.
@@ -422,7 +422,7 @@
   core::List<core::String*>* lhs60 = <core::String*>[invalid-expression "pkg/front_end/testcases/general_nnbd_opt_out/spread_collection_inference.dart:125:36: Error: Can't assign spread elements of type 'int' to collection elements of type 'String'.
   List<String> lhs60 = <String>[...spread];
                                    ^"];
-  core::Set<core::String*>* set60 = let final core::Set<core::String*>* #t64 = col::LinkedHashSet::•<core::String*>() in let final core::bool* #t65 = #t64.{core::Set::add}(invalid-expression "pkg/front_end/testcases/general_nnbd_opt_out/spread_collection_inference.dart:127:35: Error: Can't assign spread elements of type 'int' to collection elements of type 'String'.
+  core::Set<core::String*>* set60 = let final core::Set<core::String*>* #t64 = col::LinkedHashSet::•<core::String*>() in let final core::bool #t65 = #t64.{core::Set::add}(invalid-expression "pkg/front_end/testcases/general_nnbd_opt_out/spread_collection_inference.dart:127:35: Error: Can't assign spread elements of type 'int' to collection elements of type 'String'.
   Set<String> set60 = <String>{...spread};
                                   ^") in #t64;
   core::Map<core::int*, core::int*>* map60 = <core::int*, core::int*>{invalid-expression "pkg/front_end/testcases/general_nnbd_opt_out/spread_collection_inference.dart:129:39: Error: Can't assign spread entry keys of type 'String' to map entry keys of type 'int'.
@@ -434,7 +434,7 @@
   core::List<core::int*>* lhs70 = <core::int*>[invalid-expression "pkg/front_end/testcases/general_nnbd_opt_out/spread_collection_inference.dart:133:30: Error: Can't spread a value with static type Null.
   List<int> lhs70 = <int>[...null];
                              ^"];
-  core::Set<core::int*>* set70 = let final core::Set<core::int*>* #t66 = col::LinkedHashSet::•<core::int*>() in let final core::bool* #t67 = #t66.{core::Set::add}(invalid-expression "pkg/front_end/testcases/general_nnbd_opt_out/spread_collection_inference.dart:135:29: Error: Can't spread a value with static type Null.
+  core::Set<core::int*>* set70 = let final core::Set<core::int*>* #t66 = col::LinkedHashSet::•<core::int*>() in let final core::bool #t67 = #t66.{core::Set::add}(invalid-expression "pkg/front_end/testcases/general_nnbd_opt_out/spread_collection_inference.dart:135:29: Error: Can't spread a value with static type Null.
   Set<int> set70 = <int>{...null};
                             ^") in #t66;
   core::Set<dynamic>* set71ambiguous = block {
@@ -506,7 +506,7 @@
     final core::Map<core::String*, core::int*>* #t83 = <core::String*, core::int*>{};
     final core::Map<core::String*, core::int*>* #t84 = null;
     if(!#t84.{core::Object::==}(null)) {
-      core::Iterator<core::MapEntry<core::String*, core::int*>*>* :sync-for-iterator = #t84.{core::Map::entries}.{core::Iterable::iterator};
+      core::Iterator<core::MapEntry<core::String*, core::int*>>* :sync-for-iterator = #t84.{core::Map::entries}.{core::Iterable::iterator};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         final core::MapEntry<core::String*, core::int*>* #t85 = :sync-for-iterator.{core::Iterator::current};
         #t83.{core::Map::[]=}(#t85.{core::MapEntry::key}, #t85.{core::MapEntry::value});
@@ -516,7 +516,7 @@
   core::Map<core::String*, core::int*>* map90 = block {
     final core::Map<core::String*, core::int*>* #t86 = <core::String*, core::int*>{};
     {
-      core::Iterator<core::MapEntry<core::String*, core::int*>*>* :sync-for-iterator = self::bar<core::String*, core::int*>().{core::Map::entries}.{core::Iterable::iterator};
+      core::Iterator<core::MapEntry<core::String*, core::int*>>* :sync-for-iterator = self::bar<core::String*, core::int*>().{core::Map::entries}.{core::Iterable::iterator};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         final core::MapEntry<core::String*, core::int*>* #t87 = :sync-for-iterator.{core::Iterator::current};
         #t86.{core::Map::[]=}(#t87.{core::MapEntry::key}, #t87.{core::MapEntry::value});
@@ -539,7 +539,7 @@
   core::Map<core::num*, core::int*>* map100 = block {
     final core::Map<core::num*, core::int*>* #t91 = <core::num*, core::int*>{};
     {
-      core::Iterator<core::MapEntry<core::int*, core::num*>*>* :sync-for-iterator = mapIntNum.{core::Map::entries}.{core::Iterable::iterator};
+      core::Iterator<core::MapEntry<core::int*, core::num*>>* :sync-for-iterator = mapIntNum.{core::Map::entries}.{core::Iterable::iterator};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         final core::MapEntry<dynamic, dynamic>* #t92 = :sync-for-iterator.{core::Iterator::current};
         {
@@ -566,7 +566,7 @@
   core::Map<core::num*, core::int*>* map110 = block {
     final core::Map<core::num*, core::int*>* #t98 = <core::num*, core::int*>{};
     {
-      core::Iterator<core::MapEntry<dynamic, dynamic>*>* :sync-for-iterator = (dynVar as{TypeError,ForDynamic} core::Map<dynamic, dynamic>*).{core::Map::entries}.{core::Iterable::iterator};
+      core::Iterator<core::MapEntry<dynamic, dynamic>>* :sync-for-iterator = (dynVar as{TypeError,ForDynamic} core::Map<dynamic, dynamic>*).{core::Map::entries}.{core::Iterable::iterator};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         final core::MapEntry<dynamic, dynamic>* #t99 = :sync-for-iterator.{core::Iterator::current};
         {
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/spread_collection_inference.dart.weak.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/spread_collection_inference.dart.weak.transformed.expect
index 8eb50fc..69e0bad 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/spread_collection_inference.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/spread_collection_inference.dart.weak.transformed.expect
@@ -132,7 +132,7 @@
   core::Map<dynamic, dynamic>* map10 = block {
     final core::Map<dynamic, dynamic>* #t5 = <dynamic, dynamic>{};
     {
-      core::Iterator<core::MapEntry<dynamic, dynamic>*>* :sync-for-iterator = <dynamic, dynamic>{}.{core::Map::entries}.{core::Iterable::iterator};
+      core::Iterator<core::MapEntry<dynamic, dynamic>>* :sync-for-iterator = <dynamic, dynamic>{}.{core::Map::entries}.{core::Iterable::iterator};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         final core::MapEntry<dynamic, dynamic>* #t6 = :sync-for-iterator.{core::Iterator::current};
         #t5.{core::Map::[]=}(#t6.{core::MapEntry::key}, #t6.{core::MapEntry::value});
@@ -142,7 +142,7 @@
   core::Map<dynamic, dynamic>* map10ambiguous = block {
     final core::Map<dynamic, dynamic>* #t7 = <dynamic, dynamic>{};
     {
-      core::Iterator<core::MapEntry<dynamic, dynamic>*>* :sync-for-iterator = <dynamic, dynamic>{}.{core::Map::entries}.{core::Iterable::iterator};
+      core::Iterator<core::MapEntry<dynamic, dynamic>>* :sync-for-iterator = <dynamic, dynamic>{}.{core::Map::entries}.{core::Iterable::iterator};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         final core::MapEntry<dynamic, dynamic>* #t8 = :sync-for-iterator.{core::Iterator::current};
         #t7.{core::Map::[]=}(#t8.{core::MapEntry::key}, #t8.{core::MapEntry::value});
@@ -186,7 +186,7 @@
   core::Map<core::String*, core::int*>* map20 = block {
     final core::Map<core::String*, core::int*>* #t16 = <core::String*, core::int*>{};
     {
-      core::Iterator<core::MapEntry<core::String*, core::int*>*>* :sync-for-iterator = mapSpread.{core::Map::entries}.{core::Iterable::iterator};
+      core::Iterator<core::MapEntry<core::String*, core::int*>>* :sync-for-iterator = mapSpread.{core::Map::entries}.{core::Iterable::iterator};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         final core::MapEntry<core::String*, core::int*>* #t17 = :sync-for-iterator.{core::Iterator::current};
         #t16.{core::Map::[]=}(#t17.{core::MapEntry::key}, #t17.{core::MapEntry::value});
@@ -197,7 +197,7 @@
   core::Map<core::String*, core::int*>* map20ambiguous = block {
     final core::Map<core::String*, core::int*>* #t18 = <core::String*, core::int*>{};
     {
-      core::Iterator<core::MapEntry<core::String*, core::int*>*>* :sync-for-iterator = mapSpread.{core::Map::entries}.{core::Iterable::iterator};
+      core::Iterator<core::MapEntry<core::String*, core::int*>>* :sync-for-iterator = mapSpread.{core::Map::entries}.{core::Iterable::iterator};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         final core::MapEntry<core::String*, core::int*>* #t19 = :sync-for-iterator.{core::Iterator::current};
         #t18.{core::Map::[]=}(#t19.{core::MapEntry::key}, #t19.{core::MapEntry::value});
@@ -228,7 +228,7 @@
   core::Map<dynamic, dynamic>* map21 = block {
     final core::Map<dynamic, dynamic>* #t24 = <dynamic, dynamic>{};
     {
-      core::Iterator<core::MapEntry<dynamic, dynamic>*>* :sync-for-iterator = ((mapSpread as dynamic) as{TypeError,ForDynamic} core::Map<dynamic, dynamic>*).{core::Map::entries}.{core::Iterable::iterator};
+      core::Iterator<core::MapEntry<dynamic, dynamic>>* :sync-for-iterator = ((mapSpread as dynamic) as{TypeError,ForDynamic} core::Map<dynamic, dynamic>*).{core::Map::entries}.{core::Iterable::iterator};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         final core::MapEntry<dynamic, dynamic>* #t25 = :sync-for-iterator.{core::Iterator::current};
         #t24.{core::Map::[]=}(#t25.{core::MapEntry::key}, #t25.{core::MapEntry::value});
@@ -277,7 +277,7 @@
   core::Map<core::String*, core::int*>* map22 = block {
     final core::Map<core::String*, core::int*>* #t33 = <core::String*, core::int*>{};
     {
-      core::Iterator<core::MapEntry<core::String*, core::int*>*>* :sync-for-iterator = <core::String*, core::int*>{}.{core::Map::entries}.{core::Iterable::iterator};
+      core::Iterator<core::MapEntry<core::String*, core::int*>>* :sync-for-iterator = <core::String*, core::int*>{}.{core::Map::entries}.{core::Iterable::iterator};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         final core::MapEntry<core::String*, core::int*>* #t34 = :sync-for-iterator.{core::Iterator::current};
         #t33.{core::Map::[]=}(#t34.{core::MapEntry::key}, #t34.{core::MapEntry::value});
@@ -321,7 +321,7 @@
   core::Map<core::String*, core::List<core::int*>*>* map23 = block {
     final core::Map<core::String*, core::List<core::int*>*>* #t42 = <core::String*, core::List<core::int*>*>{};
     {
-      core::Iterator<core::MapEntry<core::String*, core::List<core::int*>*>*>* :sync-for-iterator = <core::String*, core::List<core::int*>*>{"baz": <core::int*>[]}.{core::Map::entries}.{core::Iterable::iterator};
+      core::Iterator<core::MapEntry<core::String*, core::List<core::int*>*>>* :sync-for-iterator = <core::String*, core::List<core::int*>*>{"baz": <core::int*>[]}.{core::Map::entries}.{core::Iterable::iterator};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         final core::MapEntry<core::String*, core::List<core::int*>*>* #t43 = :sync-for-iterator.{core::Iterator::current};
         #t42.{core::Map::[]=}(#t43.{core::MapEntry::key}, #t43.{core::MapEntry::value});
@@ -380,7 +380,7 @@
       ^" in ( block {
     final core::Map<core::String*, core::int*>* #t55 = <core::String*, core::int*>{};
     {
-      core::Iterator<core::MapEntry<core::String*, core::int*>*>* :sync-for-iterator = mapSpread.{core::Map::entries}.{core::Iterable::iterator};
+      core::Iterator<core::MapEntry<core::String*, core::int*>>* :sync-for-iterator = mapSpread.{core::Map::entries}.{core::Iterable::iterator};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         final core::MapEntry<core::String*, core::int*>* #t56 = :sync-for-iterator.{core::Iterator::current};
         #t55.{core::Map::[]=}(#t56.{core::MapEntry::key}, #t56.{core::MapEntry::value});
@@ -394,7 +394,7 @@
       ^" in ( block {
     final core::Map<core::String*, core::int*>* #t58 = <core::String*, core::int*>{};
     {
-      core::Iterator<core::MapEntry<core::String*, core::int*>*>* :sync-for-iterator = mapSpread.{core::Map::entries}.{core::Iterable::iterator};
+      core::Iterator<core::MapEntry<core::String*, core::int*>>* :sync-for-iterator = mapSpread.{core::Map::entries}.{core::Iterable::iterator};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         final core::MapEntry<core::String*, core::int*>* #t59 = :sync-for-iterator.{core::Iterator::current};
         #t58.{core::Map::[]=}(#t59.{core::MapEntry::key}, #t59.{core::MapEntry::value});
@@ -404,7 +404,7 @@
   core::List<dynamic>* lhs40 = <dynamic>[invalid-expression "pkg/front_end/testcases/general_nnbd_opt_out/spread_collection_inference.dart:113:38: Error: Unexpected type 'int' of a spread.  Expected 'dynamic' or an Iterable.
   List<dynamic> lhs40 = <dynamic>[...notSpreadInt];
                                      ^"];
-  core::Set<dynamic>* set40 = let final core::Set<dynamic>* #t60 = col::LinkedHashSet::•<dynamic>() in let final core::bool* #t61 = #t60.{core::Set::add}(invalid-expression "pkg/front_end/testcases/general_nnbd_opt_out/spread_collection_inference.dart:115:37: Error: Unexpected type 'int' of a spread.  Expected 'dynamic' or an Iterable.
+  core::Set<dynamic>* set40 = let final core::Set<dynamic>* #t60 = col::LinkedHashSet::•<dynamic>() in let final core::bool #t61 = #t60.{core::Set::add}(invalid-expression "pkg/front_end/testcases/general_nnbd_opt_out/spread_collection_inference.dart:115:37: Error: Unexpected type 'int' of a spread.  Expected 'dynamic' or an Iterable.
   Set<dynamic> set40 = <dynamic>{...notSpreadInt};
                                     ^") in #t60;
   core::Map<dynamic, dynamic>* map40 = <dynamic, dynamic>{invalid-expression "pkg/front_end/testcases/general_nnbd_opt_out/spread_collection_inference.dart:117:55: Error: Unexpected type 'int' of a map spread entry.  Expected 'dynamic' or a Map.
@@ -413,7 +413,7 @@
   core::List<dynamic>* lhs50 = <dynamic>[invalid-expression "pkg/front_end/testcases/general_nnbd_opt_out/spread_collection_inference.dart:119:38: Error: Unexpected type 'int Function()' of a spread.  Expected 'dynamic' or an Iterable.
   List<dynamic> lhs50 = <dynamic>[...notSpreadFunction];
                                      ^"];
-  core::Set<dynamic>* set50 = let final core::Set<dynamic>* #t62 = col::LinkedHashSet::•<dynamic>() in let final core::bool* #t63 = #t62.{core::Set::add}(invalid-expression "pkg/front_end/testcases/general_nnbd_opt_out/spread_collection_inference.dart:121:37: Error: Unexpected type 'int Function()' of a spread.  Expected 'dynamic' or an Iterable.
+  core::Set<dynamic>* set50 = let final core::Set<dynamic>* #t62 = col::LinkedHashSet::•<dynamic>() in let final core::bool #t63 = #t62.{core::Set::add}(invalid-expression "pkg/front_end/testcases/general_nnbd_opt_out/spread_collection_inference.dart:121:37: Error: Unexpected type 'int Function()' of a spread.  Expected 'dynamic' or an Iterable.
   Set<dynamic> set50 = <dynamic>{...notSpreadFunction};
                                     ^") in #t62;
   core::Map<dynamic, dynamic>* map50 = <dynamic, dynamic>{invalid-expression "pkg/front_end/testcases/general_nnbd_opt_out/spread_collection_inference.dart:123:55: Error: Unexpected type 'int Function()' of a map spread entry.  Expected 'dynamic' or a Map.
@@ -422,7 +422,7 @@
   core::List<core::String*>* lhs60 = <core::String*>[invalid-expression "pkg/front_end/testcases/general_nnbd_opt_out/spread_collection_inference.dart:125:36: Error: Can't assign spread elements of type 'int' to collection elements of type 'String'.
   List<String> lhs60 = <String>[...spread];
                                    ^"];
-  core::Set<core::String*>* set60 = let final core::Set<core::String*>* #t64 = col::LinkedHashSet::•<core::String*>() in let final core::bool* #t65 = #t64.{core::Set::add}(invalid-expression "pkg/front_end/testcases/general_nnbd_opt_out/spread_collection_inference.dart:127:35: Error: Can't assign spread elements of type 'int' to collection elements of type 'String'.
+  core::Set<core::String*>* set60 = let final core::Set<core::String*>* #t64 = col::LinkedHashSet::•<core::String*>() in let final core::bool #t65 = #t64.{core::Set::add}(invalid-expression "pkg/front_end/testcases/general_nnbd_opt_out/spread_collection_inference.dart:127:35: Error: Can't assign spread elements of type 'int' to collection elements of type 'String'.
   Set<String> set60 = <String>{...spread};
                                   ^") in #t64;
   core::Map<core::int*, core::int*>* map60 = <core::int*, core::int*>{invalid-expression "pkg/front_end/testcases/general_nnbd_opt_out/spread_collection_inference.dart:129:39: Error: Can't assign spread entry keys of type 'String' to map entry keys of type 'int'.
@@ -434,7 +434,7 @@
   core::List<core::int*>* lhs70 = <core::int*>[invalid-expression "pkg/front_end/testcases/general_nnbd_opt_out/spread_collection_inference.dart:133:30: Error: Can't spread a value with static type Null.
   List<int> lhs70 = <int>[...null];
                              ^"];
-  core::Set<core::int*>* set70 = let final core::Set<core::int*>* #t66 = col::LinkedHashSet::•<core::int*>() in let final core::bool* #t67 = #t66.{core::Set::add}(invalid-expression "pkg/front_end/testcases/general_nnbd_opt_out/spread_collection_inference.dart:135:29: Error: Can't spread a value with static type Null.
+  core::Set<core::int*>* set70 = let final core::Set<core::int*>* #t66 = col::LinkedHashSet::•<core::int*>() in let final core::bool #t67 = #t66.{core::Set::add}(invalid-expression "pkg/front_end/testcases/general_nnbd_opt_out/spread_collection_inference.dart:135:29: Error: Can't spread a value with static type Null.
   Set<int> set70 = <int>{...null};
                             ^") in #t66;
   core::Set<dynamic>* set71ambiguous = block {
@@ -506,7 +506,7 @@
     final core::Map<core::String*, core::int*>* #t83 = <core::String*, core::int*>{};
     final core::Map<core::String*, core::int*>* #t84 = null;
     if(!#t84.{core::Object::==}(null)) {
-      core::Iterator<core::MapEntry<core::String*, core::int*>*>* :sync-for-iterator = #t84.{core::Map::entries}.{core::Iterable::iterator};
+      core::Iterator<core::MapEntry<core::String*, core::int*>>* :sync-for-iterator = #t84.{core::Map::entries}.{core::Iterable::iterator};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         final core::MapEntry<core::String*, core::int*>* #t85 = :sync-for-iterator.{core::Iterator::current};
         #t83.{core::Map::[]=}(#t85.{core::MapEntry::key}, #t85.{core::MapEntry::value});
@@ -516,7 +516,7 @@
   core::Map<core::String*, core::int*>* map90 = block {
     final core::Map<core::String*, core::int*>* #t86 = <core::String*, core::int*>{};
     {
-      core::Iterator<core::MapEntry<core::String*, core::int*>*>* :sync-for-iterator = self::bar<core::String*, core::int*>().{core::Map::entries}.{core::Iterable::iterator};
+      core::Iterator<core::MapEntry<core::String*, core::int*>>* :sync-for-iterator = self::bar<core::String*, core::int*>().{core::Map::entries}.{core::Iterable::iterator};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         final core::MapEntry<core::String*, core::int*>* #t87 = :sync-for-iterator.{core::Iterator::current};
         #t86.{core::Map::[]=}(#t87.{core::MapEntry::key}, #t87.{core::MapEntry::value});
@@ -539,7 +539,7 @@
   core::Map<core::num*, core::int*>* map100 = block {
     final core::Map<core::num*, core::int*>* #t91 = <core::num*, core::int*>{};
     {
-      core::Iterator<core::MapEntry<core::int*, core::num*>*>* :sync-for-iterator = mapIntNum.{core::Map::entries}.{core::Iterable::iterator};
+      core::Iterator<core::MapEntry<core::int*, core::num*>>* :sync-for-iterator = mapIntNum.{core::Map::entries}.{core::Iterable::iterator};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         final core::MapEntry<dynamic, dynamic>* #t92 = :sync-for-iterator.{core::Iterator::current};
         {
@@ -566,7 +566,7 @@
   core::Map<core::num*, core::int*>* map110 = block {
     final core::Map<core::num*, core::int*>* #t98 = <core::num*, core::int*>{};
     {
-      core::Iterator<core::MapEntry<dynamic, dynamic>*>* :sync-for-iterator = (dynVar as{TypeError,ForDynamic} core::Map<dynamic, dynamic>*).{core::Map::entries}.{core::Iterable::iterator};
+      core::Iterator<core::MapEntry<dynamic, dynamic>>* :sync-for-iterator = (dynVar as{TypeError,ForDynamic} core::Map<dynamic, dynamic>*).{core::Map::entries}.{core::Iterable::iterator};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         final core::MapEntry<dynamic, dynamic>* #t99 = :sync-for-iterator.{core::Iterator::current};
         {
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/static_setter.dart.outline.expect b/pkg/front_end/testcases/general_nnbd_opt_out/static_setter.dart.outline.expect
index 46a8e6d..3eb0df6 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/static_setter.dart.outline.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/static_setter.dart.outline.expect
@@ -5,6 +5,16 @@
 class Foo extends core::Object {
   synthetic constructor •() → self::Foo*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static set foo(dynamic x) → void
   ;
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/static_setter.dart.strong.expect b/pkg/front_end/testcases/general_nnbd_opt_out/static_setter.dart.strong.expect
index 7b5a72c..bff2255 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/static_setter.dart.strong.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/static_setter.dart.strong.expect
@@ -6,6 +6,16 @@
   synthetic constructor •() → self::Foo*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static set foo(dynamic x) → void {}
 static method main() → dynamic {
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/static_setter.dart.strong.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/static_setter.dart.strong.transformed.expect
index 7b5a72c..bff2255 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/static_setter.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/static_setter.dart.strong.transformed.expect
@@ -6,6 +6,16 @@
   synthetic constructor •() → self::Foo*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static set foo(dynamic x) → void {}
 static method main() → dynamic {
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/static_setter.dart.weak.expect b/pkg/front_end/testcases/general_nnbd_opt_out/static_setter.dart.weak.expect
index 7b5a72c..bff2255 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/static_setter.dart.weak.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/static_setter.dart.weak.expect
@@ -6,6 +6,16 @@
   synthetic constructor •() → self::Foo*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static set foo(dynamic x) → void {}
 static method main() → dynamic {
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/static_setter.dart.weak.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/static_setter.dart.weak.transformed.expect
index 7b5a72c..bff2255 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/static_setter.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/static_setter.dart.weak.transformed.expect
@@ -6,6 +6,16 @@
   synthetic constructor •() → self::Foo*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static set foo(dynamic x) → void {}
 static method main() → dynamic {
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/store_load.dart.outline.expect b/pkg/front_end/testcases/general_nnbd_opt_out/store_load.dart.outline.expect
index 7098d1b..93c15a8 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/store_load.dart.outline.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/store_load.dart.outline.expect
@@ -6,19 +6,59 @@
   field dynamic _field;
   synthetic constructor •() → self::Foo*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class FooValue extends core::Object {
   synthetic constructor •() → self::FooValue*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Bar extends core::Object {
   field dynamic _field;
   synthetic constructor •() → self::Bar*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class BarValue extends core::Object {
   synthetic constructor •() → self::BarValue*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/store_load.dart.strong.expect b/pkg/front_end/testcases/general_nnbd_opt_out/store_load.dart.strong.expect
index 13e718e..f4803c6 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/store_load.dart.strong.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/store_load.dart.strong.expect
@@ -7,22 +7,62 @@
   synthetic constructor •() → self::Foo*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class FooValue extends core::Object {
   synthetic constructor •() → self::FooValue*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Bar extends core::Object {
   field dynamic _field = null;
   synthetic constructor •() → self::Bar*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class BarValue extends core::Object {
   synthetic constructor •() → self::BarValue*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   self::Foo* foo = new self::Foo::•();
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/store_load.dart.strong.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/store_load.dart.strong.transformed.expect
index 13e718e..f4803c6 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/store_load.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/store_load.dart.strong.transformed.expect
@@ -7,22 +7,62 @@
   synthetic constructor •() → self::Foo*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class FooValue extends core::Object {
   synthetic constructor •() → self::FooValue*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Bar extends core::Object {
   field dynamic _field = null;
   synthetic constructor •() → self::Bar*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class BarValue extends core::Object {
   synthetic constructor •() → self::BarValue*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   self::Foo* foo = new self::Foo::•();
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/store_load.dart.weak.expect b/pkg/front_end/testcases/general_nnbd_opt_out/store_load.dart.weak.expect
index 13e718e..f4803c6 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/store_load.dart.weak.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/store_load.dart.weak.expect
@@ -7,22 +7,62 @@
   synthetic constructor •() → self::Foo*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class FooValue extends core::Object {
   synthetic constructor •() → self::FooValue*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Bar extends core::Object {
   field dynamic _field = null;
   synthetic constructor •() → self::Bar*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class BarValue extends core::Object {
   synthetic constructor •() → self::BarValue*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   self::Foo* foo = new self::Foo::•();
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/store_load.dart.weak.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/store_load.dart.weak.transformed.expect
index 13e718e..f4803c6 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/store_load.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/store_load.dart.weak.transformed.expect
@@ -7,22 +7,62 @@
   synthetic constructor •() → self::Foo*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class FooValue extends core::Object {
   synthetic constructor •() → self::FooValue*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Bar extends core::Object {
   field dynamic _field = null;
   synthetic constructor •() → self::Bar*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class BarValue extends core::Object {
   synthetic constructor •() → self::BarValue*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   self::Foo* foo = new self::Foo::•();
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/super_call.dart.outline.expect b/pkg/front_end/testcases/general_nnbd_opt_out/super_call.dart.outline.expect
index bf952e5..29fbb1a 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/super_call.dart.outline.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/super_call.dart.outline.expect
@@ -7,6 +7,16 @@
     ;
   method call(core::int* x) → core::int*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A {
   synthetic constructor •() → self::B*
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/super_call.dart.strong.expect b/pkg/front_end/testcases/general_nnbd_opt_out/super_call.dart.strong.expect
index 688bc83..f0e8e8a 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/super_call.dart.strong.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/super_call.dart.strong.expect
@@ -16,6 +16,16 @@
     ;
   method call(core::int* x) → core::int*
     return x.{core::num::*}(2);
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A {
   synthetic constructor •() → self::B*
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/super_call.dart.strong.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/super_call.dart.strong.transformed.expect
index 688bc83..f0e8e8a 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/super_call.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/super_call.dart.strong.transformed.expect
@@ -16,6 +16,16 @@
     ;
   method call(core::int* x) → core::int*
     return x.{core::num::*}(2);
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A {
   synthetic constructor •() → self::B*
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/super_call.dart.weak.expect b/pkg/front_end/testcases/general_nnbd_opt_out/super_call.dart.weak.expect
index 688bc83..f0e8e8a 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/super_call.dart.weak.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/super_call.dart.weak.expect
@@ -16,6 +16,16 @@
     ;
   method call(core::int* x) → core::int*
     return x.{core::num::*}(2);
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A {
   synthetic constructor •() → self::B*
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/super_call.dart.weak.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/super_call.dart.weak.transformed.expect
index 688bc83..f0e8e8a 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/super_call.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/super_call.dart.weak.transformed.expect
@@ -16,6 +16,16 @@
     ;
   method call(core::int* x) → core::int*
     return x.{core::num::*}(2);
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A {
   synthetic constructor •() → self::B*
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/super_nsm.dart.outline.expect b/pkg/front_end/testcases/general_nnbd_opt_out/super_nsm.dart.outline.expect
index 4f2eabf..c2110a8 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/super_nsm.dart.outline.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/super_nsm.dart.outline.expect
@@ -6,12 +6,31 @@
   synthetic constructor •() → self::I*
     ;
   abstract method interfaceMethod() → dynamic;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C extends core::Object implements self::I {
   synthetic constructor •() → self::C*
     ;
   method noSuchMethod(core::Invocation* _) → dynamic
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
   no-such-method-forwarder method interfaceMethod() → dynamic
     return this.{self::C::noSuchMethod}(new core::_InvocationMirror::_withType(#interfaceMethod, 0, const <core::Type*>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{}))) as{TypeError,ForDynamic} dynamic;
 }
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/super_nsm.dart.strong.expect b/pkg/front_end/testcases/general_nnbd_opt_out/super_nsm.dart.strong.expect
index f804c1f..bae178b 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/super_nsm.dart.strong.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/super_nsm.dart.strong.expect
@@ -7,6 +7,16 @@
     : super core::Object::•()
     ;
   abstract method interfaceMethod() → dynamic;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C extends core::Object implements self::I {
   synthetic constructor •() → self::C*
@@ -14,6 +24,15 @@
     ;
   method noSuchMethod(core::Invocation* _) → dynamic
     return "C";
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
   no-such-method-forwarder method interfaceMethod() → dynamic
     return this.{self::C::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))) as{TypeError,ForDynamic} dynamic;
 }
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/super_nsm.dart.strong.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/super_nsm.dart.strong.transformed.expect
index f804c1f..bae178b 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/super_nsm.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/super_nsm.dart.strong.transformed.expect
@@ -7,6 +7,16 @@
     : super core::Object::•()
     ;
   abstract method interfaceMethod() → dynamic;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C extends core::Object implements self::I {
   synthetic constructor •() → self::C*
@@ -14,6 +24,15 @@
     ;
   method noSuchMethod(core::Invocation* _) → dynamic
     return "C";
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
   no-such-method-forwarder method interfaceMethod() → dynamic
     return this.{self::C::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))) as{TypeError,ForDynamic} dynamic;
 }
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/super_nsm.dart.weak.expect b/pkg/front_end/testcases/general_nnbd_opt_out/super_nsm.dart.weak.expect
index f804c1f..bae178b 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/super_nsm.dart.weak.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/super_nsm.dart.weak.expect
@@ -7,6 +7,16 @@
     : super core::Object::•()
     ;
   abstract method interfaceMethod() → dynamic;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C extends core::Object implements self::I {
   synthetic constructor •() → self::C*
@@ -14,6 +24,15 @@
     ;
   method noSuchMethod(core::Invocation* _) → dynamic
     return "C";
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
   no-such-method-forwarder method interfaceMethod() → dynamic
     return this.{self::C::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))) as{TypeError,ForDynamic} dynamic;
 }
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/super_nsm.dart.weak.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/super_nsm.dart.weak.transformed.expect
index f804c1f..bae178b 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/super_nsm.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/super_nsm.dart.weak.transformed.expect
@@ -7,6 +7,16 @@
     : super core::Object::•()
     ;
   abstract method interfaceMethod() → dynamic;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C extends core::Object implements self::I {
   synthetic constructor •() → self::C*
@@ -14,6 +24,15 @@
     ;
   method noSuchMethod(core::Invocation* _) → dynamic
     return "C";
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
   no-such-method-forwarder method interfaceMethod() → dynamic
     return this.{self::C::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))) as{TypeError,ForDynamic} dynamic;
 }
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/type_literal_as_metadata.dart.outline.expect b/pkg/front_end/testcases/general_nnbd_opt_out/type_literal_as_metadata.dart.outline.expect
index c570402..fad25ab 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/type_literal_as_metadata.dart.outline.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/type_literal_as_metadata.dart.outline.expect
@@ -13,6 +13,16 @@
   const constructor •() → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 @let final<BottomType> #t1 = invalid-expression "pkg/front_end/testcases/general_nnbd_opt_out/type_literal_as_metadata.dart:11:2: Error: This can't be used as metadata; metadata should be a reference to a compile-time constant variable, or a call to a constant constructor.
 @A
@@ -20,6 +30,16 @@
 class B extends core::Object {
   synthetic constructor •() → self::B*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/type_literal_as_metadata.dart.strong.expect b/pkg/front_end/testcases/general_nnbd_opt_out/type_literal_as_metadata.dart.strong.expect
index 3c479e0..1f1942a 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/type_literal_as_metadata.dart.strong.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/type_literal_as_metadata.dart.strong.expect
@@ -13,6 +13,16 @@
   const constructor •() → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 @invalid-expression "pkg/front_end/testcases/general_nnbd_opt_out/type_literal_as_metadata.dart:11:2: Error: This can't be used as metadata; metadata should be a reference to a compile-time constant variable, or a call to a constant constructor.
 @A
@@ -21,5 +31,15 @@
   synthetic constructor •() → self::B*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/type_literal_as_metadata.dart.strong.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/type_literal_as_metadata.dart.strong.transformed.expect
index 3c479e0..1f1942a 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/type_literal_as_metadata.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/type_literal_as_metadata.dart.strong.transformed.expect
@@ -13,6 +13,16 @@
   const constructor •() → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 @invalid-expression "pkg/front_end/testcases/general_nnbd_opt_out/type_literal_as_metadata.dart:11:2: Error: This can't be used as metadata; metadata should be a reference to a compile-time constant variable, or a call to a constant constructor.
 @A
@@ -21,5 +31,15 @@
   synthetic constructor •() → self::B*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/type_literal_as_metadata.dart.weak.expect b/pkg/front_end/testcases/general_nnbd_opt_out/type_literal_as_metadata.dart.weak.expect
index 3c479e0..1f1942a 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/type_literal_as_metadata.dart.weak.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/type_literal_as_metadata.dart.weak.expect
@@ -13,6 +13,16 @@
   const constructor •() → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 @invalid-expression "pkg/front_end/testcases/general_nnbd_opt_out/type_literal_as_metadata.dart:11:2: Error: This can't be used as metadata; metadata should be a reference to a compile-time constant variable, or a call to a constant constructor.
 @A
@@ -21,5 +31,15 @@
   synthetic constructor •() → self::B*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/type_literal_as_metadata.dart.weak.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/type_literal_as_metadata.dart.weak.transformed.expect
index 3c479e0..1f1942a 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/type_literal_as_metadata.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/type_literal_as_metadata.dart.weak.transformed.expect
@@ -13,6 +13,16 @@
   const constructor •() → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 @invalid-expression "pkg/front_end/testcases/general_nnbd_opt_out/type_literal_as_metadata.dart:11:2: Error: This can't be used as metadata; metadata should be a reference to a compile-time constant variable, or a call to a constant constructor.
 @A
@@ -21,5 +31,15 @@
   synthetic constructor •() → self::B*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/type_parameter_type_named_int.dart.outline.expect b/pkg/front_end/testcases/general_nnbd_opt_out/type_parameter_type_named_int.dart.outline.expect
index e298634..cde62f9 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/type_parameter_type_named_int.dart.outline.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/type_parameter_type_named_int.dart.outline.expect
@@ -7,6 +7,16 @@
     ;
   abstract get list() → core::List<self::Foo::T*>*;
   abstract method setList<T extends core::Object* = dynamic>(core::List<self::Foo::setList::T*>* value) → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Bar extends core::Object implements self::Foo<core::int*> {
   field core::List<core::int*>* list;
@@ -14,4 +24,14 @@
     ;
   method setList<int extends core::Object* = dynamic>(core::List<self::Bar::setList::int*>* value) → void
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/type_parameter_type_named_int.dart.strong.expect b/pkg/front_end/testcases/general_nnbd_opt_out/type_parameter_type_named_int.dart.strong.expect
index 5f5858c..8c65bf8 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/type_parameter_type_named_int.dart.strong.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/type_parameter_type_named_int.dart.strong.expect
@@ -18,6 +18,16 @@
     ;
   abstract get list() → core::List<self::Foo::T*>*;
   abstract method setList<T extends core::Object* = dynamic>(core::List<self::Foo::setList::T*>* value) → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Bar extends core::Object implements self::Foo<core::int*> {
   field core::List<core::int*>* list = null;
@@ -32,4 +42,14 @@
     list = value;
            ^" in value as{TypeError} core::List<core::int*>*;
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/type_parameter_type_named_int.dart.strong.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/type_parameter_type_named_int.dart.strong.transformed.expect
index 5f5858c..8c65bf8 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/type_parameter_type_named_int.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/type_parameter_type_named_int.dart.strong.transformed.expect
@@ -18,6 +18,16 @@
     ;
   abstract get list() → core::List<self::Foo::T*>*;
   abstract method setList<T extends core::Object* = dynamic>(core::List<self::Foo::setList::T*>* value) → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Bar extends core::Object implements self::Foo<core::int*> {
   field core::List<core::int*>* list = null;
@@ -32,4 +42,14 @@
     list = value;
            ^" in value as{TypeError} core::List<core::int*>*;
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/type_parameter_type_named_int.dart.weak.expect b/pkg/front_end/testcases/general_nnbd_opt_out/type_parameter_type_named_int.dart.weak.expect
index 5f5858c..8c65bf8 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/type_parameter_type_named_int.dart.weak.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/type_parameter_type_named_int.dart.weak.expect
@@ -18,6 +18,16 @@
     ;
   abstract get list() → core::List<self::Foo::T*>*;
   abstract method setList<T extends core::Object* = dynamic>(core::List<self::Foo::setList::T*>* value) → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Bar extends core::Object implements self::Foo<core::int*> {
   field core::List<core::int*>* list = null;
@@ -32,4 +42,14 @@
     list = value;
            ^" in value as{TypeError} core::List<core::int*>*;
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/type_parameter_type_named_int.dart.weak.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/type_parameter_type_named_int.dart.weak.transformed.expect
index 5f5858c..8c65bf8 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/type_parameter_type_named_int.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/type_parameter_type_named_int.dart.weak.transformed.expect
@@ -18,6 +18,16 @@
     ;
   abstract get list() → core::List<self::Foo::T*>*;
   abstract method setList<T extends core::Object* = dynamic>(core::List<self::Foo::setList::T*>* value) → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Bar extends core::Object implements self::Foo<core::int*> {
   field core::List<core::int*>* list = null;
@@ -32,4 +42,14 @@
     list = value;
            ^" in value as{TypeError} core::List<core::int*>*;
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/type_variable_as_super.dart.outline.expect b/pkg/front_end/testcases/general_nnbd_opt_out/type_variable_as_super.dart.outline.expect
index 9fd371e..2733810 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/type_variable_as_super.dart.outline.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/type_variable_as_super.dart.outline.expect
@@ -20,14 +20,44 @@
 abstract class A<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::A<self::A::T*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class B<T extends core::Object* = dynamic> extends core::Object {
   constructor •() → self::B<self::B::T*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::C<self::C::T*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/type_variable_as_super.dart.strong.expect b/pkg/front_end/testcases/general_nnbd_opt_out/type_variable_as_super.dart.strong.expect
index 1d02a2f..1e175f4 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/type_variable_as_super.dart.strong.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/type_variable_as_super.dart.strong.expect
@@ -29,16 +29,46 @@
   synthetic constructor •() → self::A<self::A::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class B<T extends core::Object* = dynamic> extends core::Object {
   constructor •() → self::B<self::B::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::C<self::C::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   throw new core::AbstractClassInstantiationError::•("A");
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/type_variable_as_super.dart.strong.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/type_variable_as_super.dart.strong.transformed.expect
index 1d02a2f..1e175f4 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/type_variable_as_super.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/type_variable_as_super.dart.strong.transformed.expect
@@ -29,16 +29,46 @@
   synthetic constructor •() → self::A<self::A::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class B<T extends core::Object* = dynamic> extends core::Object {
   constructor •() → self::B<self::B::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::C<self::C::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   throw new core::AbstractClassInstantiationError::•("A");
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/type_variable_as_super.dart.weak.expect b/pkg/front_end/testcases/general_nnbd_opt_out/type_variable_as_super.dart.weak.expect
index 1d02a2f..1e175f4 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/type_variable_as_super.dart.weak.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/type_variable_as_super.dart.weak.expect
@@ -29,16 +29,46 @@
   synthetic constructor •() → self::A<self::A::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class B<T extends core::Object* = dynamic> extends core::Object {
   constructor •() → self::B<self::B::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::C<self::C::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   throw new core::AbstractClassInstantiationError::•("A");
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/type_variable_as_super.dart.weak.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/type_variable_as_super.dart.weak.transformed.expect
index 1d02a2f..1e175f4 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/type_variable_as_super.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/type_variable_as_super.dart.weak.transformed.expect
@@ -29,16 +29,46 @@
   synthetic constructor •() → self::A<self::A::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class B<T extends core::Object* = dynamic> extends core::Object {
   constructor •() → self::B<self::B::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::C<self::C::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   throw new core::AbstractClassInstantiationError::•("A");
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/type_variable_bound_access.dart.outline.expect b/pkg/front_end/testcases/general_nnbd_opt_out/type_variable_bound_access.dart.outline.expect
index 9f12ff5..806e6c4 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/type_variable_bound_access.dart.outline.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/type_variable_bound_access.dart.outline.expect
@@ -9,6 +9,16 @@
     ;
   method method() → dynamic
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class NumClass<T extends core::num* = core::num*, S extends self::NumClass::T* = core::num*> extends core::Object {
   generic-covariant-impl field self::NumClass::T* field1;
@@ -19,6 +29,16 @@
     ;
   method method2() → core::num*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/type_variable_bound_access.dart.strong.expect b/pkg/front_end/testcases/general_nnbd_opt_out/type_variable_bound_access.dart.strong.expect
index ae89f63..3bf3de8 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/type_variable_bound_access.dart.strong.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/type_variable_bound_access.dart.strong.expect
@@ -18,6 +18,16 @@
     ;
   method method() → dynamic
     return this.{self::DynamicClass::field1}.*(this.{self::DynamicClass::field2});
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class NumClass<T extends core::num* = core::num*, S extends self::NumClass::T* = core::num*> extends core::Object {
   generic-covariant-impl field self::NumClass::T* field1;
@@ -31,7 +41,17 @@
     return this.{self::NumClass::field1}.{core::num::+}(invalid-expression "pkg/front_end/testcases/general_nnbd_opt_out/type_variable_bound_access.dart:24:36: Error: The getter 'length' isn't defined for the class 'num'.
 Try correcting the name to the name of an existing getter, or defining a getter or field named 'length'.
   num method2() => field1 + field2.length;
-                                   ^^^^^^" as{TypeError,ForDynamic} core::num*);
+                                   ^^^^^^" as{TypeError,ForDynamic} core::num);
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   new self::DynamicClass::•<core::num*, core::int*>(0.5, 2).{self::DynamicClass::method}();
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/type_variable_bound_access.dart.weak.expect b/pkg/front_end/testcases/general_nnbd_opt_out/type_variable_bound_access.dart.weak.expect
index ae89f63..3bf3de8 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/type_variable_bound_access.dart.weak.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/type_variable_bound_access.dart.weak.expect
@@ -18,6 +18,16 @@
     ;
   method method() → dynamic
     return this.{self::DynamicClass::field1}.*(this.{self::DynamicClass::field2});
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class NumClass<T extends core::num* = core::num*, S extends self::NumClass::T* = core::num*> extends core::Object {
   generic-covariant-impl field self::NumClass::T* field1;
@@ -31,7 +41,17 @@
     return this.{self::NumClass::field1}.{core::num::+}(invalid-expression "pkg/front_end/testcases/general_nnbd_opt_out/type_variable_bound_access.dart:24:36: Error: The getter 'length' isn't defined for the class 'num'.
 Try correcting the name to the name of an existing getter, or defining a getter or field named 'length'.
   num method2() => field1 + field2.length;
-                                   ^^^^^^" as{TypeError,ForDynamic} core::num*);
+                                   ^^^^^^" as{TypeError,ForDynamic} core::num);
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   new self::DynamicClass::•<core::num*, core::int*>(0.5, 2).{self::DynamicClass::method}();
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/type_variable_prefix.dart.outline.expect b/pkg/front_end/testcases/general_nnbd_opt_out/type_variable_prefix.dart.outline.expect
index 905f38f..90e9112 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/type_variable_prefix.dart.outline.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/type_variable_prefix.dart.outline.expect
@@ -16,6 +16,16 @@
     ;
   method method() → invalid-type
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/type_variable_prefix.dart.strong.expect b/pkg/front_end/testcases/general_nnbd_opt_out/type_variable_prefix.dart.strong.expect
index 62bc2c5..d051f8c 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/type_variable_prefix.dart.strong.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/type_variable_prefix.dart.strong.expect
@@ -17,6 +17,16 @@
     ;
   method method() → invalid-type
     return "Hello, World!";
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   core::String* s = new self::C::•<dynamic>().{self::C::method}();
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/type_variable_prefix.dart.strong.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/type_variable_prefix.dart.strong.transformed.expect
index 62bc2c5..d051f8c 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/type_variable_prefix.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/type_variable_prefix.dart.strong.transformed.expect
@@ -17,6 +17,16 @@
     ;
   method method() → invalid-type
     return "Hello, World!";
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   core::String* s = new self::C::•<dynamic>().{self::C::method}();
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/type_variable_prefix.dart.weak.expect b/pkg/front_end/testcases/general_nnbd_opt_out/type_variable_prefix.dart.weak.expect
index 62bc2c5..d051f8c 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/type_variable_prefix.dart.weak.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/type_variable_prefix.dart.weak.expect
@@ -17,6 +17,16 @@
     ;
   method method() → invalid-type
     return "Hello, World!";
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   core::String* s = new self::C::•<dynamic>().{self::C::method}();
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/type_variable_prefix.dart.weak.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/type_variable_prefix.dart.weak.transformed.expect
index 62bc2c5..d051f8c 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/type_variable_prefix.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/type_variable_prefix.dart.weak.transformed.expect
@@ -17,6 +17,16 @@
     ;
   method method() → invalid-type
     return "Hello, World!";
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   core::String* s = new self::C::•<dynamic>().{self::C::method}();
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/type_variable_uses.dart.outline.expect b/pkg/front_end/testcases/general_nnbd_opt_out/type_variable_uses.dart.outline.expect
index d05b2f5..92ae782 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/type_variable_uses.dart.outline.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/type_variable_uses.dart.outline.expect
@@ -17,6 +17,16 @@
     ;
   method instanceMethod() → self::C<self::C::T*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/type_variable_uses.dart.strong.expect b/pkg/front_end/testcases/general_nnbd_opt_out/type_variable_uses.dart.strong.expect
index 3d8ba36..e611028 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/type_variable_uses.dart.strong.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/type_variable_uses.dart.strong.expect
@@ -91,6 +91,16 @@
     #C5;
     #C6;
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
 
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/type_variable_uses.dart.strong.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/type_variable_uses.dart.strong.transformed.expect
index 3d8ba36..e611028 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/type_variable_uses.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/type_variable_uses.dart.strong.transformed.expect
@@ -91,6 +91,16 @@
     #C5;
     #C6;
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
 
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/type_variable_uses.dart.weak.expect b/pkg/front_end/testcases/general_nnbd_opt_out/type_variable_uses.dart.weak.expect
index 3d8ba36..e611028 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/type_variable_uses.dart.weak.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/type_variable_uses.dart.weak.expect
@@ -91,6 +91,16 @@
     #C5;
     #C6;
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
 
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/type_variable_uses.dart.weak.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/type_variable_uses.dart.weak.transformed.expect
index 3d8ba36..e611028 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/type_variable_uses.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/type_variable_uses.dart.weak.transformed.expect
@@ -91,6 +91,16 @@
     #C5;
     #C6;
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
 
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/undefined.dart.outline.expect b/pkg/front_end/testcases/general_nnbd_opt_out/undefined.dart.outline.expect
index 26c18bd..aa9583d 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/undefined.dart.outline.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/undefined.dart.outline.expect
@@ -8,6 +8,16 @@
     ;
   method f() → void
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method test(self::C* c) → void
   ;
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/undefined.dart.strong.expect b/pkg/front_end/testcases/general_nnbd_opt_out/undefined.dart.strong.expect
index 50ae679..ca6ae99 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/undefined.dart.strong.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/undefined.dart.strong.expect
@@ -29,6 +29,16 @@
     : super core::Object::•()
     ;
   method f() → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method test(self::C* c) → void {
   c.{self::C::x};
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/undefined.dart.strong.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/undefined.dart.strong.transformed.expect
index 50ae679..ca6ae99 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/undefined.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/undefined.dart.strong.transformed.expect
@@ -29,6 +29,16 @@
     : super core::Object::•()
     ;
   method f() → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method test(self::C* c) → void {
   c.{self::C::x};
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/undefined.dart.weak.expect b/pkg/front_end/testcases/general_nnbd_opt_out/undefined.dart.weak.expect
index 50ae679..ca6ae99 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/undefined.dart.weak.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/undefined.dart.weak.expect
@@ -29,6 +29,16 @@
     : super core::Object::•()
     ;
   method f() → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method test(self::C* c) → void {
   c.{self::C::x};
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/undefined.dart.weak.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/undefined.dart.weak.transformed.expect
index 50ae679..ca6ae99 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/undefined.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/undefined.dart.weak.transformed.expect
@@ -29,6 +29,16 @@
     : super core::Object::•()
     ;
   method f() → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method test(self::C* c) → void {
   c.{self::C::x};
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/undefined_getter_in_compound_assignment.dart.outline.expect b/pkg/front_end/testcases/general_nnbd_opt_out/undefined_getter_in_compound_assignment.dart.outline.expect
index d3b88d7..33db27d 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/undefined_getter_in_compound_assignment.dart.outline.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/undefined_getter_in_compound_assignment.dart.outline.expect
@@ -7,6 +7,16 @@
     ;
   set x(dynamic value) → void
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method test(self::C* c) → void
   ;
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/undefined_getter_in_compound_assignment.dart.strong.expect b/pkg/front_end/testcases/general_nnbd_opt_out/undefined_getter_in_compound_assignment.dart.strong.expect
index 62c417b..6d3899b 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/undefined_getter_in_compound_assignment.dart.strong.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/undefined_getter_in_compound_assignment.dart.strong.expect
@@ -22,6 +22,16 @@
     : super core::Object::•()
     ;
   set x(dynamic value) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method test(self::C* c) → void {
   c.{self::C::x} = 1;
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/undefined_getter_in_compound_assignment.dart.strong.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/undefined_getter_in_compound_assignment.dart.strong.transformed.expect
index 62c417b..6d3899b 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/undefined_getter_in_compound_assignment.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/undefined_getter_in_compound_assignment.dart.strong.transformed.expect
@@ -22,6 +22,16 @@
     : super core::Object::•()
     ;
   set x(dynamic value) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method test(self::C* c) → void {
   c.{self::C::x} = 1;
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/undefined_getter_in_compound_assignment.dart.weak.expect b/pkg/front_end/testcases/general_nnbd_opt_out/undefined_getter_in_compound_assignment.dart.weak.expect
index 62c417b..6d3899b 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/undefined_getter_in_compound_assignment.dart.weak.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/undefined_getter_in_compound_assignment.dart.weak.expect
@@ -22,6 +22,16 @@
     : super core::Object::•()
     ;
   set x(dynamic value) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method test(self::C* c) → void {
   c.{self::C::x} = 1;
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/undefined_getter_in_compound_assignment.dart.weak.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/undefined_getter_in_compound_assignment.dart.weak.transformed.expect
index 62c417b..6d3899b 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/undefined_getter_in_compound_assignment.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/undefined_getter_in_compound_assignment.dart.weak.transformed.expect
@@ -22,6 +22,16 @@
     : super core::Object::•()
     ;
   set x(dynamic value) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method test(self::C* c) → void {
   c.{self::C::x} = 1;
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/uninitialized_fields.dart.outline.expect b/pkg/front_end/testcases/general_nnbd_opt_out/uninitialized_fields.dart.outline.expect
index 204bee2..c8c5042 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/uninitialized_fields.dart.outline.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/uninitialized_fields.dart.outline.expect
@@ -6,6 +6,16 @@
   field core::int* x;
   synthetic constructor •() → self::Uninitialized*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class PartiallyInitialized extends core::Object {
   field core::int* x;
@@ -13,11 +23,31 @@
     ;
   constructor noInitializer() → self::PartiallyInitialized*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Initialized extends core::Object {
   field core::int* x;
   constructor •(core::int* x) → self::Initialized*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Forwarding extends core::Object {
   field core::int* x;
@@ -25,6 +55,16 @@
     ;
   constructor •(core::int* arg) → self::Forwarding*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field core::int* uninitializedTopLevel;
 static field core::int* initializedTopLevel;
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/uninitialized_fields.dart.strong.expect b/pkg/front_end/testcases/general_nnbd_opt_out/uninitialized_fields.dart.strong.expect
index 2585d9a..a5af346 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/uninitialized_fields.dart.strong.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/uninitialized_fields.dart.strong.expect
@@ -7,6 +7,16 @@
   synthetic constructor •() → self::Uninitialized*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class PartiallyInitialized extends core::Object {
   field core::int* x;
@@ -16,12 +26,32 @@
   constructor noInitializer() → self::PartiallyInitialized*
     : self::PartiallyInitialized::x = null, super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Initialized extends core::Object {
   field core::int* x;
   constructor •(core::int* x) → self::Initialized*
     : self::Initialized::x = x, super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Forwarding extends core::Object {
   field core::int* x;
@@ -31,6 +61,16 @@
   constructor •(core::int* arg) → self::Forwarding*
     : this self::Forwarding::initialize(arg)
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field core::int* uninitializedTopLevel;
 static field core::int* initializedTopLevel = 4;
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/uninitialized_fields.dart.strong.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/uninitialized_fields.dart.strong.transformed.expect
index 2585d9a..a5af346 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/uninitialized_fields.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/uninitialized_fields.dart.strong.transformed.expect
@@ -7,6 +7,16 @@
   synthetic constructor •() → self::Uninitialized*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class PartiallyInitialized extends core::Object {
   field core::int* x;
@@ -16,12 +26,32 @@
   constructor noInitializer() → self::PartiallyInitialized*
     : self::PartiallyInitialized::x = null, super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Initialized extends core::Object {
   field core::int* x;
   constructor •(core::int* x) → self::Initialized*
     : self::Initialized::x = x, super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Forwarding extends core::Object {
   field core::int* x;
@@ -31,6 +61,16 @@
   constructor •(core::int* arg) → self::Forwarding*
     : this self::Forwarding::initialize(arg)
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field core::int* uninitializedTopLevel;
 static field core::int* initializedTopLevel = 4;
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/uninitialized_fields.dart.weak.expect b/pkg/front_end/testcases/general_nnbd_opt_out/uninitialized_fields.dart.weak.expect
index 2585d9a..a5af346 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/uninitialized_fields.dart.weak.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/uninitialized_fields.dart.weak.expect
@@ -7,6 +7,16 @@
   synthetic constructor •() → self::Uninitialized*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class PartiallyInitialized extends core::Object {
   field core::int* x;
@@ -16,12 +26,32 @@
   constructor noInitializer() → self::PartiallyInitialized*
     : self::PartiallyInitialized::x = null, super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Initialized extends core::Object {
   field core::int* x;
   constructor •(core::int* x) → self::Initialized*
     : self::Initialized::x = x, super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Forwarding extends core::Object {
   field core::int* x;
@@ -31,6 +61,16 @@
   constructor •(core::int* arg) → self::Forwarding*
     : this self::Forwarding::initialize(arg)
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field core::int* uninitializedTopLevel;
 static field core::int* initializedTopLevel = 4;
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/uninitialized_fields.dart.weak.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/uninitialized_fields.dart.weak.transformed.expect
index 2585d9a..a5af346 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/uninitialized_fields.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/uninitialized_fields.dart.weak.transformed.expect
@@ -7,6 +7,16 @@
   synthetic constructor •() → self::Uninitialized*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class PartiallyInitialized extends core::Object {
   field core::int* x;
@@ -16,12 +26,32 @@
   constructor noInitializer() → self::PartiallyInitialized*
     : self::PartiallyInitialized::x = null, super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Initialized extends core::Object {
   field core::int* x;
   constructor •(core::int* x) → self::Initialized*
     : self::Initialized::x = x, super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Forwarding extends core::Object {
   field core::int* x;
@@ -31,6 +61,16 @@
   constructor •(core::int* arg) → self::Forwarding*
     : this self::Forwarding::initialize(arg)
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field core::int* uninitializedTopLevel;
 static field core::int* initializedTopLevel = 4;
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/unsound_promotion.dart.outline.expect b/pkg/front_end/testcases/general_nnbd_opt_out/unsound_promotion.dart.outline.expect
index 9a8c9d9..f7ad850 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/unsound_promotion.dart.outline.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/unsound_promotion.dart.outline.expect
@@ -5,10 +5,30 @@
 class A extends core::Object {
   synthetic constructor •() → self::A*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends core::Object {
   synthetic constructor •() → self::B*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C extends self::B implements self::A {
   synthetic constructor •() → self::C*
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/unsound_promotion.dart.strong.expect b/pkg/front_end/testcases/general_nnbd_opt_out/unsound_promotion.dart.strong.expect
index 264e7c8..591732a 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/unsound_promotion.dart.strong.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/unsound_promotion.dart.strong.expect
@@ -18,11 +18,31 @@
   synthetic constructor •() → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends core::Object {
   synthetic constructor •() → self::B*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C extends self::B implements self::A {
   synthetic constructor •() → self::C*
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/unsound_promotion.dart.weak.expect b/pkg/front_end/testcases/general_nnbd_opt_out/unsound_promotion.dart.weak.expect
index 264e7c8..591732a 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/unsound_promotion.dart.weak.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/unsound_promotion.dart.weak.expect
@@ -18,11 +18,31 @@
   synthetic constructor •() → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends core::Object {
   synthetic constructor •() → self::B*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C extends self::B implements self::A {
   synthetic constructor •() → self::C*
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/unused_methods.dart.outline.expect b/pkg/front_end/testcases/general_nnbd_opt_out/unused_methods.dart.outline.expect
index 0717113..8bbd487 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/unused_methods.dart.outline.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/unused_methods.dart.outline.expect
@@ -5,6 +5,16 @@
 class UnusedClass extends core::Object {
   constructor •() → self::UnusedClass*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class UsedAsBaseClass extends core::Object {
   synthetic constructor •() → self::UsedAsBaseClass*
@@ -15,18 +25,48 @@
     ;
   method calledFromSubclass() → void
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class UsedAsInterface extends core::Object {
   synthetic constructor •() → self::UsedAsInterface*
     ;
   method usedInSubclass() → void
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class InstantiatedButMethodsUnused extends core::Object {
   synthetic constructor •() → self::InstantiatedButMethodsUnused*
     ;
   method usedInSubclass() → void
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class ClassA extends self::UsedAsBaseClass implements self::UsedAsInterface, self::InstantiatedButMethodsUnused {
   synthetic constructor •() → self::ClassA*
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/unused_methods.dart.strong.expect b/pkg/front_end/testcases/general_nnbd_opt_out/unused_methods.dart.strong.expect
index e2c09cd..609b92c 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/unused_methods.dart.strong.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/unused_methods.dart.strong.expect
@@ -7,6 +7,16 @@
     : super core::Object::•() {
     core::print("Unused");
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class UsedAsBaseClass extends core::Object {
   synthetic constructor •() → self::UsedAsBaseClass*
@@ -21,6 +31,16 @@
   method calledFromSubclass() → void {
     core::print("Unused");
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class UsedAsInterface extends core::Object {
   synthetic constructor •() → self::UsedAsInterface*
@@ -29,6 +49,16 @@
   method usedInSubclass() → void {
     core::print("Unused");
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class InstantiatedButMethodsUnused extends core::Object {
   synthetic constructor •() → self::InstantiatedButMethodsUnused*
@@ -37,6 +67,16 @@
   method usedInSubclass() → void {
     core::print("Unused");
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class ClassA extends self::UsedAsBaseClass implements self::UsedAsInterface, self::InstantiatedButMethodsUnused {
   synthetic constructor •() → self::ClassA*
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/unused_methods.dart.strong.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/unused_methods.dart.strong.transformed.expect
index e2c09cd..609b92c 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/unused_methods.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/unused_methods.dart.strong.transformed.expect
@@ -7,6 +7,16 @@
     : super core::Object::•() {
     core::print("Unused");
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class UsedAsBaseClass extends core::Object {
   synthetic constructor •() → self::UsedAsBaseClass*
@@ -21,6 +31,16 @@
   method calledFromSubclass() → void {
     core::print("Unused");
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class UsedAsInterface extends core::Object {
   synthetic constructor •() → self::UsedAsInterface*
@@ -29,6 +49,16 @@
   method usedInSubclass() → void {
     core::print("Unused");
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class InstantiatedButMethodsUnused extends core::Object {
   synthetic constructor •() → self::InstantiatedButMethodsUnused*
@@ -37,6 +67,16 @@
   method usedInSubclass() → void {
     core::print("Unused");
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class ClassA extends self::UsedAsBaseClass implements self::UsedAsInterface, self::InstantiatedButMethodsUnused {
   synthetic constructor •() → self::ClassA*
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/unused_methods.dart.weak.expect b/pkg/front_end/testcases/general_nnbd_opt_out/unused_methods.dart.weak.expect
index e2c09cd..609b92c 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/unused_methods.dart.weak.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/unused_methods.dart.weak.expect
@@ -7,6 +7,16 @@
     : super core::Object::•() {
     core::print("Unused");
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class UsedAsBaseClass extends core::Object {
   synthetic constructor •() → self::UsedAsBaseClass*
@@ -21,6 +31,16 @@
   method calledFromSubclass() → void {
     core::print("Unused");
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class UsedAsInterface extends core::Object {
   synthetic constructor •() → self::UsedAsInterface*
@@ -29,6 +49,16 @@
   method usedInSubclass() → void {
     core::print("Unused");
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class InstantiatedButMethodsUnused extends core::Object {
   synthetic constructor •() → self::InstantiatedButMethodsUnused*
@@ -37,6 +67,16 @@
   method usedInSubclass() → void {
     core::print("Unused");
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class ClassA extends self::UsedAsBaseClass implements self::UsedAsInterface, self::InstantiatedButMethodsUnused {
   synthetic constructor •() → self::ClassA*
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/unused_methods.dart.weak.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/unused_methods.dart.weak.transformed.expect
index e2c09cd..609b92c 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/unused_methods.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/unused_methods.dart.weak.transformed.expect
@@ -7,6 +7,16 @@
     : super core::Object::•() {
     core::print("Unused");
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class UsedAsBaseClass extends core::Object {
   synthetic constructor •() → self::UsedAsBaseClass*
@@ -21,6 +31,16 @@
   method calledFromSubclass() → void {
     core::print("Unused");
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class UsedAsInterface extends core::Object {
   synthetic constructor •() → self::UsedAsInterface*
@@ -29,6 +49,16 @@
   method usedInSubclass() → void {
     core::print("Unused");
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class InstantiatedButMethodsUnused extends core::Object {
   synthetic constructor •() → self::InstantiatedButMethodsUnused*
@@ -37,6 +67,16 @@
   method usedInSubclass() → void {
     core::print("Unused");
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class ClassA extends self::UsedAsBaseClass implements self::UsedAsInterface, self::InstantiatedButMethodsUnused {
   synthetic constructor •() → self::ClassA*
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/var_as_type_name.dart.outline.expect b/pkg/front_end/testcases/general_nnbd_opt_out/var_as_type_name.dart.outline.expect
index 1e4ad65..8f76fa2 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/var_as_type_name.dart.outline.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/var_as_type_name.dart.outline.expect
@@ -17,6 +17,16 @@
   field core::Map<core::String*, invalid-type>* m;
   synthetic constructor •() → self::A*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/var_as_type_name.dart.strong.expect b/pkg/front_end/testcases/general_nnbd_opt_out/var_as_type_name.dart.strong.expect
index fe38069..4afb322 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/var_as_type_name.dart.strong.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/var_as_type_name.dart.strong.expect
@@ -22,6 +22,16 @@
   synthetic constructor •() → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   self::A* a = new self::A::•();
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/var_as_type_name.dart.strong.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/var_as_type_name.dart.strong.transformed.expect
index fe38069..4afb322 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/var_as_type_name.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/var_as_type_name.dart.strong.transformed.expect
@@ -22,6 +22,16 @@
   synthetic constructor •() → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   self::A* a = new self::A::•();
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/var_as_type_name.dart.weak.expect b/pkg/front_end/testcases/general_nnbd_opt_out/var_as_type_name.dart.weak.expect
index fe38069..4afb322 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/var_as_type_name.dart.weak.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/var_as_type_name.dart.weak.expect
@@ -22,6 +22,16 @@
   synthetic constructor •() → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   self::A* a = new self::A::•();
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/var_as_type_name.dart.weak.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/var_as_type_name.dart.weak.transformed.expect
index fe38069..4afb322 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/var_as_type_name.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/var_as_type_name.dart.weak.transformed.expect
@@ -22,6 +22,16 @@
   synthetic constructor •() → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   self::A* a = new self::A::•();
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/void_methods.dart.outline.expect b/pkg/front_end/testcases/general_nnbd_opt_out/void_methods.dart.outline.expect
index cfecfd9..910ea9e 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/void_methods.dart.outline.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/void_methods.dart.outline.expect
@@ -12,6 +12,16 @@
     ;
   method clear() → void
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/void_methods.dart.strong.expect b/pkg/front_end/testcases/general_nnbd_opt_out/void_methods.dart.strong.expect
index c503392..b57b62c 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/void_methods.dart.strong.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/void_methods.dart.strong.expect
@@ -10,9 +10,19 @@
   set first(dynamic x) → void
     return let final core::List<dynamic>* #t1 = this.{self::Foo::list} in let final core::int* #t2 = 0 in let final dynamic #t3 = x in let final void #t4 = #t1.{core::List::[]=}(#t2, #t3) in #t3;
   operator []=(dynamic x, dynamic y) → void
-    return let final core::List<dynamic>* #t5 = this.{self::Foo::list} in let final dynamic #t6 = x as{TypeError,ForDynamic} core::int* in let final dynamic #t7 = y in let final void #t8 = #t5.{core::List::[]=}(#t6, #t7) in #t7;
+    return let final core::List<dynamic>* #t5 = this.{self::Foo::list} in let final dynamic #t6 = x as{TypeError,ForDynamic} core::int in let final dynamic #t7 = y in let final void #t8 = #t5.{core::List::[]=}(#t6, #t7) in #t7;
   method clear() → void
     return this.{self::Foo::list}.{core::List::clear}();
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   new self::Foo::•().{self::Foo::first} = 4;
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/void_methods.dart.strong.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/void_methods.dart.strong.transformed.expect
index 739251d..88ae60a 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/void_methods.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/void_methods.dart.strong.transformed.expect
@@ -10,9 +10,19 @@
   set first(dynamic x) → void
     return let final core::List<dynamic>* #t1 = this.{self::Foo::list} in let final core::int* #t2 = 0 in let final dynamic #t3 = x in let final void #t4 = #t1.{core::List::[]=}(#t2, #t3) in #t3;
   operator []=(dynamic x, dynamic y) → void
-    return let final core::List<dynamic>* #t5 = this.{self::Foo::list} in let final core::int* #t6 = x as{TypeError,ForDynamic} core::int* in let final dynamic #t7 = y in let final void #t8 = #t5.{core::List::[]=}(#t6, #t7) in #t7;
+    return let final core::List<dynamic>* #t5 = this.{self::Foo::list} in let final core::int #t6 = x as{TypeError,ForDynamic} core::int in let final dynamic #t7 = y in let final void #t8 = #t5.{core::List::[]=}(#t6, #t7) in #t7;
   method clear() → void
     return this.{self::Foo::list}.{core::List::clear}();
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   new self::Foo::•().{self::Foo::first} = 4;
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/void_methods.dart.weak.expect b/pkg/front_end/testcases/general_nnbd_opt_out/void_methods.dart.weak.expect
index c503392..b57b62c 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/void_methods.dart.weak.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/void_methods.dart.weak.expect
@@ -10,9 +10,19 @@
   set first(dynamic x) → void
     return let final core::List<dynamic>* #t1 = this.{self::Foo::list} in let final core::int* #t2 = 0 in let final dynamic #t3 = x in let final void #t4 = #t1.{core::List::[]=}(#t2, #t3) in #t3;
   operator []=(dynamic x, dynamic y) → void
-    return let final core::List<dynamic>* #t5 = this.{self::Foo::list} in let final dynamic #t6 = x as{TypeError,ForDynamic} core::int* in let final dynamic #t7 = y in let final void #t8 = #t5.{core::List::[]=}(#t6, #t7) in #t7;
+    return let final core::List<dynamic>* #t5 = this.{self::Foo::list} in let final dynamic #t6 = x as{TypeError,ForDynamic} core::int in let final dynamic #t7 = y in let final void #t8 = #t5.{core::List::[]=}(#t6, #t7) in #t7;
   method clear() → void
     return this.{self::Foo::list}.{core::List::clear}();
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   new self::Foo::•().{self::Foo::first} = 4;
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/void_methods.dart.weak.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/void_methods.dart.weak.transformed.expect
index 739251d..88ae60a 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/void_methods.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/void_methods.dart.weak.transformed.expect
@@ -10,9 +10,19 @@
   set first(dynamic x) → void
     return let final core::List<dynamic>* #t1 = this.{self::Foo::list} in let final core::int* #t2 = 0 in let final dynamic #t3 = x in let final void #t4 = #t1.{core::List::[]=}(#t2, #t3) in #t3;
   operator []=(dynamic x, dynamic y) → void
-    return let final core::List<dynamic>* #t5 = this.{self::Foo::list} in let final core::int* #t6 = x as{TypeError,ForDynamic} core::int* in let final dynamic #t7 = y in let final void #t8 = #t5.{core::List::[]=}(#t6, #t7) in #t7;
+    return let final core::List<dynamic>* #t5 = this.{self::Foo::list} in let final core::int #t6 = x as{TypeError,ForDynamic} core::int in let final dynamic #t7 = y in let final void #t8 = #t5.{core::List::[]=}(#t6, #t7) in #t7;
   method clear() → void
     return this.{self::Foo::list}.{core::List::clear}();
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   new self::Foo::•().{self::Foo::first} = 4;
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/warn_unresolved_sends.dart.outline.expect b/pkg/front_end/testcases/general_nnbd_opt_out/warn_unresolved_sends.dart.outline.expect
index 72e387d..43ced28 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/warn_unresolved_sends.dart.outline.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/warn_unresolved_sends.dart.outline.expect
@@ -16,6 +16,16 @@
     ;
   set getterOnly(dynamic _) → void
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D extends self::C {
   field dynamic field;
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/warn_unresolved_sends.dart.strong.expect b/pkg/front_end/testcases/general_nnbd_opt_out/warn_unresolved_sends.dart.strong.expect
index cf6e6d4..73f742b 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/warn_unresolved_sends.dart.strong.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/warn_unresolved_sends.dart.strong.expect
@@ -53,6 +53,16 @@
   get getterOnly() → dynamic
     return null;
   set getterOnly(dynamic _) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D extends self::C {
   field dynamic field = null;
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/warn_unresolved_sends.dart.strong.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/warn_unresolved_sends.dart.strong.transformed.expect
index cf6e6d4..73f742b 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/warn_unresolved_sends.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/warn_unresolved_sends.dart.strong.transformed.expect
@@ -53,6 +53,16 @@
   get getterOnly() → dynamic
     return null;
   set getterOnly(dynamic _) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D extends self::C {
   field dynamic field = null;
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/warn_unresolved_sends.dart.weak.expect b/pkg/front_end/testcases/general_nnbd_opt_out/warn_unresolved_sends.dart.weak.expect
index cf6e6d4..73f742b 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/warn_unresolved_sends.dart.weak.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/warn_unresolved_sends.dart.weak.expect
@@ -53,6 +53,16 @@
   get getterOnly() → dynamic
     return null;
   set getterOnly(dynamic _) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D extends self::C {
   field dynamic field = null;
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/warn_unresolved_sends.dart.weak.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/warn_unresolved_sends.dart.weak.transformed.expect
index cf6e6d4..73f742b 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/warn_unresolved_sends.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/warn_unresolved_sends.dart.weak.transformed.expect
@@ -53,6 +53,16 @@
   get getterOnly() → dynamic
     return null;
   set getterOnly(dynamic _) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D extends self::C {
   field dynamic field = null;
diff --git a/pkg/front_end/testcases/implicit_getter_calls/getter_call.dart.outline.expect b/pkg/front_end/testcases/implicit_getter_calls/getter_call.dart.outline.expect
index ea68a16..69097f7 100644
--- a/pkg/front_end/testcases/implicit_getter_calls/getter_call.dart.outline.expect
+++ b/pkg/front_end/testcases/implicit_getter_calls/getter_call.dart.outline.expect
@@ -29,6 +29,16 @@
     ;
   get getter7() → ({a: core::int*, b: core::int*}) →* core::int*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Subclass extends self::Class {
   synthetic constructor •() → self::Subclass*
diff --git a/pkg/front_end/testcases/implicit_getter_calls/getter_call.dart.strong.expect b/pkg/front_end/testcases/implicit_getter_calls/getter_call.dart.strong.expect
index 4140b14..d19cb68 100644
--- a/pkg/front_end/testcases/implicit_getter_calls/getter_call.dart.strong.expect
+++ b/pkg/front_end/testcases/implicit_getter_calls/getter_call.dart.strong.expect
@@ -30,6 +30,16 @@
     return #C6;
   get getter7() → ({a: core::int*, b: core::int*}) →* core::int*
     return #C7;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Subclass extends self::Class {
   synthetic constructor •() → self::Subclass*
diff --git a/pkg/front_end/testcases/implicit_getter_calls/getter_call.dart.strong.transformed.expect b/pkg/front_end/testcases/implicit_getter_calls/getter_call.dart.strong.transformed.expect
index 4140b14..d19cb68 100644
--- a/pkg/front_end/testcases/implicit_getter_calls/getter_call.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/implicit_getter_calls/getter_call.dart.strong.transformed.expect
@@ -30,6 +30,16 @@
     return #C6;
   get getter7() → ({a: core::int*, b: core::int*}) →* core::int*
     return #C7;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Subclass extends self::Class {
   synthetic constructor •() → self::Subclass*
diff --git a/pkg/front_end/testcases/implicit_getter_calls/this_field_call.dart.outline.expect b/pkg/front_end/testcases/implicit_getter_calls/this_field_call.dart.outline.expect
index c8308d1..e0c31c1 100644
--- a/pkg/front_end/testcases/implicit_getter_calls/this_field_call.dart.outline.expect
+++ b/pkg/front_end/testcases/implicit_getter_calls/this_field_call.dart.outline.expect
@@ -8,6 +8,16 @@
     ;
   method foo(generic-covariant-impl self::A::T* x) → dynamic
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/implicit_getter_calls/this_field_call.dart.strong.expect b/pkg/front_end/testcases/implicit_getter_calls/this_field_call.dart.strong.expect
index cb6d3ea..aa755c9 100644
--- a/pkg/front_end/testcases/implicit_getter_calls/this_field_call.dart.strong.expect
+++ b/pkg/front_end/testcases/implicit_getter_calls/this_field_call.dart.strong.expect
@@ -9,6 +9,16 @@
     ;
   method foo(generic-covariant-impl self::A::T* x) → dynamic
     return let final self::A::T* #t1 = x in this.{self::A::f}(#t1);
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   new self::A::•<core::int*>((core::int* x) → core::Null? {}).{self::A::foo}(3);
diff --git a/pkg/front_end/testcases/implicit_getter_calls/this_field_call.dart.strong.transformed.expect b/pkg/front_end/testcases/implicit_getter_calls/this_field_call.dart.strong.transformed.expect
index cb6d3ea..aa755c9 100644
--- a/pkg/front_end/testcases/implicit_getter_calls/this_field_call.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/implicit_getter_calls/this_field_call.dart.strong.transformed.expect
@@ -9,6 +9,16 @@
     ;
   method foo(generic-covariant-impl self::A::T* x) → dynamic
     return let final self::A::T* #t1 = x in this.{self::A::f}(#t1);
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   new self::A::•<core::int*>((core::int* x) → core::Null? {}).{self::A::foo}(3);
diff --git a/pkg/front_end/testcases/incremental_initialize_from_dill/changing_modules_10.yaml.world.1.expect b/pkg/front_end/testcases/incremental_initialize_from_dill/changing_modules_10.yaml.world.1.expect
index d0e1860..f29333b 100644
--- a/pkg/front_end/testcases/incremental_initialize_from_dill/changing_modules_10.yaml.world.1.expect
+++ b/pkg/front_end/testcases/incremental_initialize_from_dill/changing_modules_10.yaml.world.1.expect
@@ -22,6 +22,16 @@
     synthetic constructor •() → a::A2<a::A2::T*>*
       : super dart.core::Object::•()
       ;
+    abstract member-signature get _identityHashCode() → dart.core::int*;
+    abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfTrue(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfFalse(dynamic type) → dart.core::bool*;
+    abstract member-signature operator ==(dynamic other) → dart.core::bool*;
+    abstract member-signature get hashCode() → dart.core::int*;
+    abstract member-signature method toString() → dart.core::String*;
+    abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic;
+    abstract member-signature get runtimeType() → dart.core::Type*;
   }
 }
 library from "package:module/b.dart" as b {
@@ -30,5 +40,15 @@
     synthetic constructor •() → b::B*
       : super dart.core::Object::•()
       ;
+    abstract member-signature get _identityHashCode() → dart.core::int*;
+    abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfTrue(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfFalse(dynamic type) → dart.core::bool*;
+    abstract member-signature operator ==(dynamic other) → dart.core::bool*;
+    abstract member-signature get hashCode() → dart.core::int*;
+    abstract member-signature method toString() → dart.core::String*;
+    abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic;
+    abstract member-signature get runtimeType() → dart.core::Type*;
   }
 }
diff --git a/pkg/front_end/testcases/incremental_initialize_from_dill/changing_modules_10.yaml.world.2.expect b/pkg/front_end/testcases/incremental_initialize_from_dill/changing_modules_10.yaml.world.2.expect
index d0e1860..f29333b 100644
--- a/pkg/front_end/testcases/incremental_initialize_from_dill/changing_modules_10.yaml.world.2.expect
+++ b/pkg/front_end/testcases/incremental_initialize_from_dill/changing_modules_10.yaml.world.2.expect
@@ -22,6 +22,16 @@
     synthetic constructor •() → a::A2<a::A2::T*>*
       : super dart.core::Object::•()
       ;
+    abstract member-signature get _identityHashCode() → dart.core::int*;
+    abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfTrue(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfFalse(dynamic type) → dart.core::bool*;
+    abstract member-signature operator ==(dynamic other) → dart.core::bool*;
+    abstract member-signature get hashCode() → dart.core::int*;
+    abstract member-signature method toString() → dart.core::String*;
+    abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic;
+    abstract member-signature get runtimeType() → dart.core::Type*;
   }
 }
 library from "package:module/b.dart" as b {
@@ -30,5 +40,15 @@
     synthetic constructor •() → b::B*
       : super dart.core::Object::•()
       ;
+    abstract member-signature get _identityHashCode() → dart.core::int*;
+    abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfTrue(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfFalse(dynamic type) → dart.core::bool*;
+    abstract member-signature operator ==(dynamic other) → dart.core::bool*;
+    abstract member-signature get hashCode() → dart.core::int*;
+    abstract member-signature method toString() → dart.core::String*;
+    abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic;
+    abstract member-signature get runtimeType() → dart.core::Type*;
   }
 }
diff --git a/pkg/front_end/testcases/incremental_initialize_from_dill/changing_modules_11.yaml.world.1.expect b/pkg/front_end/testcases/incremental_initialize_from_dill/changing_modules_11.yaml.world.1.expect
index 946f8db..82a9683 100644
--- a/pkg/front_end/testcases/incremental_initialize_from_dill/changing_modules_11.yaml.world.1.expect
+++ b/pkg/front_end/testcases/incremental_initialize_from_dill/changing_modules_11.yaml.world.1.expect
@@ -17,11 +17,31 @@
     synthetic constructor •() → a::A*
       : super dart.core::Object::•()
       ;
+    abstract member-signature get _identityHashCode() → dart.core::int*;
+    abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfTrue(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfFalse(dynamic type) → dart.core::bool*;
+    abstract member-signature operator ==(dynamic other) → dart.core::bool*;
+    abstract member-signature get hashCode() → dart.core::int*;
+    abstract member-signature method toString() → dart.core::String*;
+    abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic;
+    abstract member-signature get runtimeType() → dart.core::Type*;
   }
   class A2<T extends dart.core::Object* = dynamic> extends dart.core::Object {
     synthetic constructor •() → a::A2<a::A2::T*>*
       : super dart.core::Object::•()
       ;
+    abstract member-signature get _identityHashCode() → dart.core::int*;
+    abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfTrue(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfFalse(dynamic type) → dart.core::bool*;
+    abstract member-signature operator ==(dynamic other) → dart.core::bool*;
+    abstract member-signature get hashCode() → dart.core::int*;
+    abstract member-signature method toString() → dart.core::String*;
+    abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic;
+    abstract member-signature get runtimeType() → dart.core::Type*;
   }
 }
 library from "package:module/b.dart" as b {
@@ -30,5 +50,15 @@
     synthetic constructor •() → b::B*
       : super dart.core::Object::•()
       ;
+    abstract member-signature get _identityHashCode() → dart.core::int*;
+    abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfTrue(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfFalse(dynamic type) → dart.core::bool*;
+    abstract member-signature operator ==(dynamic other) → dart.core::bool*;
+    abstract member-signature get hashCode() → dart.core::int*;
+    abstract member-signature method toString() → dart.core::String*;
+    abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic;
+    abstract member-signature get runtimeType() → dart.core::Type*;
   }
 }
diff --git a/pkg/front_end/testcases/incremental_initialize_from_dill/changing_modules_11.yaml.world.2.expect b/pkg/front_end/testcases/incremental_initialize_from_dill/changing_modules_11.yaml.world.2.expect
index 946f8db..82a9683 100644
--- a/pkg/front_end/testcases/incremental_initialize_from_dill/changing_modules_11.yaml.world.2.expect
+++ b/pkg/front_end/testcases/incremental_initialize_from_dill/changing_modules_11.yaml.world.2.expect
@@ -17,11 +17,31 @@
     synthetic constructor •() → a::A*
       : super dart.core::Object::•()
       ;
+    abstract member-signature get _identityHashCode() → dart.core::int*;
+    abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfTrue(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfFalse(dynamic type) → dart.core::bool*;
+    abstract member-signature operator ==(dynamic other) → dart.core::bool*;
+    abstract member-signature get hashCode() → dart.core::int*;
+    abstract member-signature method toString() → dart.core::String*;
+    abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic;
+    abstract member-signature get runtimeType() → dart.core::Type*;
   }
   class A2<T extends dart.core::Object* = dynamic> extends dart.core::Object {
     synthetic constructor •() → a::A2<a::A2::T*>*
       : super dart.core::Object::•()
       ;
+    abstract member-signature get _identityHashCode() → dart.core::int*;
+    abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfTrue(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfFalse(dynamic type) → dart.core::bool*;
+    abstract member-signature operator ==(dynamic other) → dart.core::bool*;
+    abstract member-signature get hashCode() → dart.core::int*;
+    abstract member-signature method toString() → dart.core::String*;
+    abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic;
+    abstract member-signature get runtimeType() → dart.core::Type*;
   }
 }
 library from "package:module/b.dart" as b {
@@ -30,5 +50,15 @@
     synthetic constructor •() → b::B*
       : super dart.core::Object::•()
       ;
+    abstract member-signature get _identityHashCode() → dart.core::int*;
+    abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfTrue(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfFalse(dynamic type) → dart.core::bool*;
+    abstract member-signature operator ==(dynamic other) → dart.core::bool*;
+    abstract member-signature get hashCode() → dart.core::int*;
+    abstract member-signature method toString() → dart.core::String*;
+    abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic;
+    abstract member-signature get runtimeType() → dart.core::Type*;
   }
 }
diff --git a/pkg/front_end/testcases/incremental_initialize_from_dill/changing_modules_12.yaml.world.1.expect b/pkg/front_end/testcases/incremental_initialize_from_dill/changing_modules_12.yaml.world.1.expect
index c1f1b5c..df7eecd 100644
--- a/pkg/front_end/testcases/incremental_initialize_from_dill/changing_modules_12.yaml.world.1.expect
+++ b/pkg/front_end/testcases/incremental_initialize_from_dill/changing_modules_12.yaml.world.1.expect
@@ -5,5 +5,15 @@
     synthetic constructor •() → main::Foo*
       : super dart.core::Object::•()
       ;
+    abstract member-signature get _identityHashCode() → dart.core::int*;
+    abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfTrue(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfFalse(dynamic type) → dart.core::bool*;
+    abstract member-signature operator ==(dynamic other) → dart.core::bool*;
+    abstract member-signature get hashCode() → dart.core::int*;
+    abstract member-signature method toString() → dart.core::String*;
+    abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic;
+    abstract member-signature get runtimeType() → dart.core::Type*;
   }
 }
diff --git a/pkg/front_end/testcases/incremental_initialize_from_dill/changing_modules_13.yaml.world.1.expect b/pkg/front_end/testcases/incremental_initialize_from_dill/changing_modules_13.yaml.world.1.expect
index f66a0d5..408b06d 100644
--- a/pkg/front_end/testcases/incremental_initialize_from_dill/changing_modules_13.yaml.world.1.expect
+++ b/pkg/front_end/testcases/incremental_initialize_from_dill/changing_modules_13.yaml.world.1.expect
@@ -15,16 +15,46 @@
     synthetic constructor •() → a::A*
       : super dart.core::Object::•()
       ;
+    abstract member-signature get _identityHashCode() → dart.core::int*;
+    abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfTrue(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfFalse(dynamic type) → dart.core::bool*;
+    abstract member-signature operator ==(dynamic other) → dart.core::bool*;
+    abstract member-signature get hashCode() → dart.core::int*;
+    abstract member-signature method toString() → dart.core::String*;
+    abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic;
+    abstract member-signature get runtimeType() → dart.core::Type*;
   }
   class B extends dart.core::Object {
     synthetic constructor •() → a::B*
       : super dart.core::Object::•()
       ;
+    abstract member-signature get _identityHashCode() → dart.core::int*;
+    abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfTrue(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfFalse(dynamic type) → dart.core::bool*;
+    abstract member-signature operator ==(dynamic other) → dart.core::bool*;
+    abstract member-signature get hashCode() → dart.core::int*;
+    abstract member-signature method toString() → dart.core::String*;
+    abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic;
+    abstract member-signature get runtimeType() → dart.core::Type*;
   }
   class C extends dart.core::Object {
     synthetic constructor •() → a::C*
       : super dart.core::Object::•()
       ;
+    abstract member-signature get _identityHashCode() → dart.core::int*;
+    abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfTrue(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfFalse(dynamic type) → dart.core::bool*;
+    abstract member-signature operator ==(dynamic other) → dart.core::bool*;
+    abstract member-signature get hashCode() → dart.core::int*;
+    abstract member-signature method toString() → dart.core::String*;
+    abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic;
+    abstract member-signature get runtimeType() → dart.core::Type*;
   }
   class AB = a::A with a::B {
     synthetic constructor •() → a::AB*
diff --git a/pkg/front_end/testcases/incremental_initialize_from_dill/changing_modules_4.yaml.world.1.expect b/pkg/front_end/testcases/incremental_initialize_from_dill/changing_modules_4.yaml.world.1.expect
index 864ab07..3a8a2e9 100644
--- a/pkg/front_end/testcases/incremental_initialize_from_dill/changing_modules_4.yaml.world.1.expect
+++ b/pkg/front_end/testcases/incremental_initialize_from_dill/changing_modules_4.yaml.world.1.expect
@@ -29,6 +29,16 @@
     synthetic constructor •() → c::A3*
       : super dart.core::Object::•()
       ;
+    abstract member-signature get _identityHashCode() → dart.core::int*;
+    abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfTrue(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfFalse(dynamic type) → dart.core::bool*;
+    abstract member-signature operator ==(dynamic other) → dart.core::bool*;
+    abstract member-signature get hashCode() → dart.core::int*;
+    abstract member-signature method toString() → dart.core::String*;
+    abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic;
+    abstract member-signature get runtimeType() → dart.core::Type*;
   }
   static field dart.core::String* baz = "42";
   static field dart.core::String* baz2 = d::baz3;
diff --git a/pkg/front_end/testcases/incremental_initialize_from_dill/changing_modules_5.yaml.world.1.expect b/pkg/front_end/testcases/incremental_initialize_from_dill/changing_modules_5.yaml.world.1.expect
index f3a7ae9..2575cef 100644
--- a/pkg/front_end/testcases/incremental_initialize_from_dill/changing_modules_5.yaml.world.1.expect
+++ b/pkg/front_end/testcases/incremental_initialize_from_dill/changing_modules_5.yaml.world.1.expect
@@ -29,6 +29,16 @@
     synthetic constructor •() → c::A3*
       : super dart.core::Object::•()
       ;
+    abstract member-signature get _identityHashCode() → dart.core::int*;
+    abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfTrue(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfFalse(dynamic type) → dart.core::bool*;
+    abstract member-signature operator ==(dynamic other) → dart.core::bool*;
+    abstract member-signature get hashCode() → dart.core::int*;
+    abstract member-signature method toString() → dart.core::String*;
+    abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic;
+    abstract member-signature get runtimeType() → dart.core::Type*;
   }
   static field dart.core::String* baz = "42";
   static field dart.core::String* baz2 = d::baz3;
diff --git a/pkg/front_end/testcases/incremental_initialize_from_dill/changing_modules_6.yaml.world.1.expect b/pkg/front_end/testcases/incremental_initialize_from_dill/changing_modules_6.yaml.world.1.expect
index 64c3715..1c7aac7 100644
--- a/pkg/front_end/testcases/incremental_initialize_from_dill/changing_modules_6.yaml.world.1.expect
+++ b/pkg/front_end/testcases/incremental_initialize_from_dill/changing_modules_6.yaml.world.1.expect
@@ -36,6 +36,16 @@
     synthetic constructor •() → c::A3*
       : super dart.core::Object::•()
       ;
+    abstract member-signature get _identityHashCode() → dart.core::int*;
+    abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfTrue(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfFalse(dynamic type) → dart.core::bool*;
+    abstract member-signature operator ==(dynamic other) → dart.core::bool*;
+    abstract member-signature get hashCode() → dart.core::int*;
+    abstract member-signature method toString() → dart.core::String*;
+    abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic;
+    abstract member-signature get runtimeType() → dart.core::Type*;
   }
   static field dart.core::String* baz = "42";
   static field dart.core::String* baz2 = d::baz3;
diff --git a/pkg/front_end/testcases/incremental_initialize_from_dill/changing_modules_7.yaml.world.1.expect b/pkg/front_end/testcases/incremental_initialize_from_dill/changing_modules_7.yaml.world.1.expect
index d997be9..feacaef 100644
--- a/pkg/front_end/testcases/incremental_initialize_from_dill/changing_modules_7.yaml.world.1.expect
+++ b/pkg/front_end/testcases/incremental_initialize_from_dill/changing_modules_7.yaml.world.1.expect
@@ -13,6 +13,16 @@
       class1.{lib1::Class1::c3a}.{lib3::Class3a::c3b}.{lib3::Class3b::str}();
       return class1;
     }
+    abstract member-signature get _identityHashCode() → dart.core::int*;
+    abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfTrue(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfFalse(dynamic type) → dart.core::bool*;
+    abstract member-signature operator ==(dynamic other) → dart.core::bool*;
+    abstract member-signature get hashCode() → dart.core::int*;
+    abstract member-signature method toString() → dart.core::String*;
+    abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic;
+    abstract member-signature get runtimeType() → dart.core::Type*;
   }
   static method main() → dynamic {
     lib2::Class2* class2 = new lib2::Class2::•();
@@ -28,6 +38,16 @@
       : super dart.core::Object::•()
       ;
     get c3a() → lib3::Class3a* {}
+    abstract member-signature get _identityHashCode() → dart.core::int*;
+    abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfTrue(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfFalse(dynamic type) → dart.core::bool*;
+    abstract member-signature operator ==(dynamic other) → dart.core::bool*;
+    abstract member-signature get hashCode() → dart.core::int*;
+    abstract member-signature method toString() → dart.core::String*;
+    abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic;
+    abstract member-signature get runtimeType() → dart.core::Type*;
   }
 }
 library from "package:module/lib2.dart" as lib2 {
@@ -42,6 +62,16 @@
       lib4::Class4* class4 = new lib4::Class4::•();
       dart.core::print(class4);
     }
+    abstract member-signature get _identityHashCode() → dart.core::int*;
+    abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfTrue(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfFalse(dynamic type) → dart.core::bool*;
+    abstract member-signature operator ==(dynamic other) → dart.core::bool*;
+    abstract member-signature get hashCode() → dart.core::int*;
+    abstract member-signature method toString() → dart.core::String*;
+    abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic;
+    abstract member-signature get runtimeType() → dart.core::Type*;
   }
 }
 library from "package:module/lib3.dart" as lib3 {
@@ -51,12 +81,32 @@
       : super dart.core::Object::•()
       ;
     get c3b() → lib3::Class3b* {}
+    abstract member-signature get _identityHashCode() → dart.core::int*;
+    abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfTrue(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfFalse(dynamic type) → dart.core::bool*;
+    abstract member-signature operator ==(dynamic other) → dart.core::bool*;
+    abstract member-signature get hashCode() → dart.core::int*;
+    abstract member-signature method toString() → dart.core::String*;
+    abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic;
+    abstract member-signature get runtimeType() → dart.core::Type*;
   }
   class Class3b extends dart.core::Object {
     synthetic constructor •() → lib3::Class3b*
       : super dart.core::Object::•()
       ;
     method str() → dart.core::String* {}
+    abstract member-signature get _identityHashCode() → dart.core::int*;
+    abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfTrue(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfFalse(dynamic type) → dart.core::bool*;
+    abstract member-signature operator ==(dynamic other) → dart.core::bool*;
+    abstract member-signature get hashCode() → dart.core::int*;
+    abstract member-signature method toString() → dart.core::String*;
+    abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic;
+    abstract member-signature get runtimeType() → dart.core::Type*;
   }
 }
 library from "package:module/lib4.dart" as lib4 {
@@ -65,5 +115,15 @@
     synthetic constructor •() → lib4::Class4*
       : super dart.core::Object::•()
       ;
+    abstract member-signature get _identityHashCode() → dart.core::int*;
+    abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfTrue(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfFalse(dynamic type) → dart.core::bool*;
+    abstract member-signature operator ==(dynamic other) → dart.core::bool*;
+    abstract member-signature get hashCode() → dart.core::int*;
+    abstract member-signature method toString() → dart.core::String*;
+    abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic;
+    abstract member-signature get runtimeType() → dart.core::Type*;
   }
 }
diff --git a/pkg/front_end/testcases/incremental_initialize_from_dill/changing_modules_7.yaml.world.2.expect b/pkg/front_end/testcases/incremental_initialize_from_dill/changing_modules_7.yaml.world.2.expect
index 1ac4a6f..53fa96a 100644
--- a/pkg/front_end/testcases/incremental_initialize_from_dill/changing_modules_7.yaml.world.2.expect
+++ b/pkg/front_end/testcases/incremental_initialize_from_dill/changing_modules_7.yaml.world.2.expect
@@ -9,6 +9,16 @@
       ;
     method class1() → lib1::Class1*
       ;
+    abstract member-signature get _identityHashCode() → dart.core::int*;
+    abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfTrue(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfFalse(dynamic type) → dart.core::bool*;
+    abstract member-signature operator ==(dynamic other) → dart.core::bool*;
+    abstract member-signature get hashCode() → dart.core::int*;
+    abstract member-signature method toString() → dart.core::String*;
+    abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic;
+    abstract member-signature get runtimeType() → dart.core::Type*;
   }
   static method main() → dynamic
     ;
@@ -22,6 +32,16 @@
       : super dart.core::Object::•()
       ;
     get c3a() → lib3::Class3a* {}
+    abstract member-signature get _identityHashCode() → dart.core::int*;
+    abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfTrue(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfFalse(dynamic type) → dart.core::bool*;
+    abstract member-signature operator ==(dynamic other) → dart.core::bool*;
+    abstract member-signature get hashCode() → dart.core::int*;
+    abstract member-signature method toString() → dart.core::String*;
+    abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic;
+    abstract member-signature get runtimeType() → dart.core::Type*;
   }
 }
 library from "package:module/lib2.dart" as lib2 {
@@ -36,6 +56,16 @@
       lib4::Class4* class4 = new lib4::Class4::•();
       dart.core::print(class4);
     }
+    abstract member-signature get _identityHashCode() → dart.core::int*;
+    abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfTrue(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfFalse(dynamic type) → dart.core::bool*;
+    abstract member-signature operator ==(dynamic other) → dart.core::bool*;
+    abstract member-signature get hashCode() → dart.core::int*;
+    abstract member-signature method toString() → dart.core::String*;
+    abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic;
+    abstract member-signature get runtimeType() → dart.core::Type*;
   }
 }
 library from "package:module/lib3.dart" as lib3 {
@@ -45,12 +75,32 @@
       : super dart.core::Object::•()
       ;
     get c3b() → lib3::Class3b* {}
+    abstract member-signature get _identityHashCode() → dart.core::int*;
+    abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfTrue(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfFalse(dynamic type) → dart.core::bool*;
+    abstract member-signature operator ==(dynamic other) → dart.core::bool*;
+    abstract member-signature get hashCode() → dart.core::int*;
+    abstract member-signature method toString() → dart.core::String*;
+    abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic;
+    abstract member-signature get runtimeType() → dart.core::Type*;
   }
   class Class3b extends dart.core::Object {
     synthetic constructor •() → lib3::Class3b*
       : super dart.core::Object::•()
       ;
     method str() → dart.core::String* {}
+    abstract member-signature get _identityHashCode() → dart.core::int*;
+    abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfTrue(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfFalse(dynamic type) → dart.core::bool*;
+    abstract member-signature operator ==(dynamic other) → dart.core::bool*;
+    abstract member-signature get hashCode() → dart.core::int*;
+    abstract member-signature method toString() → dart.core::String*;
+    abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic;
+    abstract member-signature get runtimeType() → dart.core::Type*;
   }
 }
 library from "package:module/lib4.dart" as lib4 {
@@ -59,5 +109,15 @@
     synthetic constructor •() → lib4::Class4*
       : super dart.core::Object::•()
       ;
+    abstract member-signature get _identityHashCode() → dart.core::int*;
+    abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfTrue(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfFalse(dynamic type) → dart.core::bool*;
+    abstract member-signature operator ==(dynamic other) → dart.core::bool*;
+    abstract member-signature get hashCode() → dart.core::int*;
+    abstract member-signature method toString() → dart.core::String*;
+    abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic;
+    abstract member-signature get runtimeType() → dart.core::Type*;
   }
 }
diff --git a/pkg/front_end/testcases/incremental_initialize_from_dill/changing_modules_8.yaml.world.1.expect b/pkg/front_end/testcases/incremental_initialize_from_dill/changing_modules_8.yaml.world.1.expect
index 5680e46..7928997 100644
--- a/pkg/front_end/testcases/incremental_initialize_from_dill/changing_modules_8.yaml.world.1.expect
+++ b/pkg/front_end/testcases/incremental_initialize_from_dill/changing_modules_8.yaml.world.1.expect
@@ -15,6 +15,16 @@
     static field dynamic _redirecting# = <dynamic>[lib1::XSet::identity];
     static factory identity() → lib1::XSet*
       let dynamic #redirecting_factory = lib2::XLinkedHashSet::identity in invalid-expression;
+    abstract member-signature get _identityHashCode() → dart.core::int*;
+    abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfTrue(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfFalse(dynamic type) → dart.core::bool*;
+    abstract member-signature operator ==(dynamic other) → dart.core::bool*;
+    abstract member-signature get hashCode() → dart.core::int*;
+    abstract member-signature method toString() → dart.core::String*;
+    abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic;
+    abstract member-signature get runtimeType() → dart.core::Type*;
   }
 }
 library from "package:module/lib2.dart" as lib2 {
@@ -26,6 +36,16 @@
     static field dynamic _redirecting# = <dynamic>[lib2::XLinkedHashSet::identity];
     static factory identity() → lib2::XLinkedHashSet*
       let dynamic #redirecting_factory = lib3::XIdentityHashSet::• in invalid-expression;
+    abstract member-signature get _identityHashCode() → dart.core::int*;
+    abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfTrue(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfFalse(dynamic type) → dart.core::bool*;
+    abstract member-signature operator ==(dynamic other) → dart.core::bool*;
+    abstract member-signature get hashCode() → dart.core::int*;
+    abstract member-signature method toString() → dart.core::String*;
+    abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic;
+    abstract member-signature get runtimeType() → dart.core::Type*;
   }
 }
 library from "package:module/lib3.dart" as lib3 {
@@ -36,5 +56,15 @@
     constructor •() → lib3::XIdentityHashSet*
       : super dart.core::Object::•()
       ;
+    abstract member-signature get _identityHashCode() → dart.core::int*;
+    abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfTrue(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfFalse(dynamic type) → dart.core::bool*;
+    abstract member-signature operator ==(dynamic other) → dart.core::bool*;
+    abstract member-signature get hashCode() → dart.core::int*;
+    abstract member-signature method toString() → dart.core::String*;
+    abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic;
+    abstract member-signature get runtimeType() → dart.core::Type*;
   }
 }
diff --git a/pkg/front_end/testcases/incremental_initialize_from_dill/changing_modules_9.yaml.world.1.expect b/pkg/front_end/testcases/incremental_initialize_from_dill/changing_modules_9.yaml.world.1.expect
index e8e1f54..135481e 100644
--- a/pkg/front_end/testcases/incremental_initialize_from_dill/changing_modules_9.yaml.world.1.expect
+++ b/pkg/front_end/testcases/incremental_initialize_from_dill/changing_modules_9.yaml.world.1.expect
@@ -16,6 +16,16 @@
     synthetic constructor •() → a::A*
       : super dart.core::Object::•()
       ;
+    abstract member-signature get _identityHashCode() → dart.core::int*;
+    abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfTrue(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfFalse(dynamic type) → dart.core::bool*;
+    abstract member-signature operator ==(dynamic other) → dart.core::bool*;
+    abstract member-signature get hashCode() → dart.core::int*;
+    abstract member-signature method toString() → dart.core::String*;
+    abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic;
+    abstract member-signature get runtimeType() → dart.core::Type*;
   }
 }
 library from "package:moduleB/b.dart" as b {
@@ -25,5 +35,15 @@
     synthetic constructor •() → b::B*
       : super dart.core::Object::•()
       ;
+    abstract member-signature get _identityHashCode() → dart.core::int*;
+    abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfTrue(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfFalse(dynamic type) → dart.core::bool*;
+    abstract member-signature operator ==(dynamic other) → dart.core::bool*;
+    abstract member-signature get hashCode() → dart.core::int*;
+    abstract member-signature method toString() → dart.core::String*;
+    abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic;
+    abstract member-signature get runtimeType() → dart.core::Type*;
   }
 }
diff --git a/pkg/front_end/testcases/incremental_initialize_from_dill/changing_modules_9.yaml.world.2.expect b/pkg/front_end/testcases/incremental_initialize_from_dill/changing_modules_9.yaml.world.2.expect
index e8e1f54..135481e 100644
--- a/pkg/front_end/testcases/incremental_initialize_from_dill/changing_modules_9.yaml.world.2.expect
+++ b/pkg/front_end/testcases/incremental_initialize_from_dill/changing_modules_9.yaml.world.2.expect
@@ -16,6 +16,16 @@
     synthetic constructor •() → a::A*
       : super dart.core::Object::•()
       ;
+    abstract member-signature get _identityHashCode() → dart.core::int*;
+    abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfTrue(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfFalse(dynamic type) → dart.core::bool*;
+    abstract member-signature operator ==(dynamic other) → dart.core::bool*;
+    abstract member-signature get hashCode() → dart.core::int*;
+    abstract member-signature method toString() → dart.core::String*;
+    abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic;
+    abstract member-signature get runtimeType() → dart.core::Type*;
   }
 }
 library from "package:moduleB/b.dart" as b {
@@ -25,5 +35,15 @@
     synthetic constructor •() → b::B*
       : super dart.core::Object::•()
       ;
+    abstract member-signature get _identityHashCode() → dart.core::int*;
+    abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfTrue(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfFalse(dynamic type) → dart.core::bool*;
+    abstract member-signature operator ==(dynamic other) → dart.core::bool*;
+    abstract member-signature get hashCode() → dart.core::int*;
+    abstract member-signature method toString() → dart.core::String*;
+    abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic;
+    abstract member-signature get runtimeType() → dart.core::Type*;
   }
 }
diff --git a/pkg/front_end/testcases/incremental_initialize_from_dill/crash_test_1.yaml.world.1.expect b/pkg/front_end/testcases/incremental_initialize_from_dill/crash_test_1.yaml.world.1.expect
index bd5a25a..4dfe9b5 100644
--- a/pkg/front_end/testcases/incremental_initialize_from_dill/crash_test_1.yaml.world.1.expect
+++ b/pkg/front_end/testcases/incremental_initialize_from_dill/crash_test_1.yaml.world.1.expect
@@ -15,6 +15,16 @@
       ;
     static factory e4() → lib::C*
       let dynamic #redirecting_factory = lib::C::• in invalid-expression;
+    abstract member-signature get _identityHashCode() → dart.core::int*;
+    abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfTrue(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfFalse(dynamic type) → dart.core::bool*;
+    abstract member-signature operator ==(dynamic other) → dart.core::bool*;
+    abstract member-signature get hashCode() → dart.core::int*;
+    abstract member-signature method toString() → dart.core::String*;
+    abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic;
+    abstract member-signature get runtimeType() → dart.core::Type*;
   }
 }
 library from "org-dartlang-test:///main.dart" as main {
diff --git a/pkg/front_end/testcases/incremental_initialize_from_dill/crash_test_1.yaml.world.2.expect b/pkg/front_end/testcases/incremental_initialize_from_dill/crash_test_1.yaml.world.2.expect
index 8ef39f6..674f1f1 100644
--- a/pkg/front_end/testcases/incremental_initialize_from_dill/crash_test_1.yaml.world.2.expect
+++ b/pkg/front_end/testcases/incremental_initialize_from_dill/crash_test_1.yaml.world.2.expect
@@ -15,6 +15,16 @@
       ;
     static factory e4() → lib::C*
       let dynamic #redirecting_factory = lib::C::• in invalid-expression;
+    abstract member-signature get _identityHashCode() → dart.core::int*;
+    abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfTrue(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfFalse(dynamic type) → dart.core::bool*;
+    abstract member-signature operator ==(dynamic other) → dart.core::bool*;
+    abstract member-signature get hashCode() → dart.core::int*;
+    abstract member-signature method toString() → dart.core::String*;
+    abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic;
+    abstract member-signature get runtimeType() → dart.core::Type*;
   }
 }
 library from "org-dartlang-test:///main.dart" as main {
diff --git a/pkg/front_end/testcases/incremental_initialize_from_dill/ffi_01.yaml.world.1.expect b/pkg/front_end/testcases/incremental_initialize_from_dill/ffi_01.yaml.world.1.expect
index 78fb060..59e4288 100644
--- a/pkg/front_end/testcases/incremental_initialize_from_dill/ffi_01.yaml.world.1.expect
+++ b/pkg/front_end/testcases/incremental_initialize_from_dill/ffi_01.yaml.world.1.expect
@@ -14,6 +14,17 @@
     static factory allocate(dart.core::double* x, dart.core::double* y, dart.ffi::Pointer<lib::Coordinate*>* next) → lib::Coordinate* {
       return null;
     }
+    abstract member-signature get _addressOf() → dart.ffi::Pointer<dart.ffi::Struct*>*;
+    abstract member-signature get _identityHashCode() → dart.core::int*;
+    abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfTrue(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfFalse(dynamic type) → dart.core::bool*;
+    abstract member-signature operator ==(dynamic other) → dart.core::bool*;
+    abstract member-signature get hashCode() → dart.core::int*;
+    abstract member-signature method toString() → dart.core::String*;
+    abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic;
+    abstract member-signature get runtimeType() → dart.core::Type*;
     get x() → dart.core::double*
       return dart.ffi::_loadDouble(this.{dart.ffi::Struct::_addressOf}, (#C8).{dart.core::List::[]}(dart.ffi::_abi()));
     set x(dart.core::double* #v) → void
diff --git a/pkg/front_end/testcases/incremental_initialize_from_dill/ffi_01.yaml.world.2.expect b/pkg/front_end/testcases/incremental_initialize_from_dill/ffi_01.yaml.world.2.expect
index d24f770..327659a 100644
--- a/pkg/front_end/testcases/incremental_initialize_from_dill/ffi_01.yaml.world.2.expect
+++ b/pkg/front_end/testcases/incremental_initialize_from_dill/ffi_01.yaml.world.2.expect
@@ -14,6 +14,17 @@
     static factory allocate(dart.core::double* x, dart.core::double* y, dart.ffi::Pointer<lib::Coordinate*>* next) → lib::Coordinate* {
       return null;
     }
+    abstract member-signature get _addressOf() → dart.ffi::Pointer<dart.ffi::Struct*>*;
+    abstract member-signature get _identityHashCode() → dart.core::int*;
+    abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfTrue(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfFalse(dynamic type) → dart.core::bool*;
+    abstract member-signature operator ==(dynamic other) → dart.core::bool*;
+    abstract member-signature get hashCode() → dart.core::int*;
+    abstract member-signature method toString() → dart.core::String*;
+    abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic;
+    abstract member-signature get runtimeType() → dart.core::Type*;
     get x() → dart.core::double*
       return dart.ffi::_loadDouble(this.{dart.ffi::Struct::_addressOf}, (#C8).{dart.core::List::[]}(dart.ffi::_abi()));
     set x(dart.core::double* #v) → void
diff --git a/pkg/front_end/testcases/incremental_initialize_from_dill/ffi_02.yaml.world.1.expect b/pkg/front_end/testcases/incremental_initialize_from_dill/ffi_02.yaml.world.1.expect
index faed25b..80e814e 100644
--- a/pkg/front_end/testcases/incremental_initialize_from_dill/ffi_02.yaml.world.1.expect
+++ b/pkg/front_end/testcases/incremental_initialize_from_dill/ffi_02.yaml.world.1.expect
@@ -14,6 +14,17 @@
     static factory allocate(dart.core::double* x, dart.core::double* y, dart.ffi::Pointer<lib::Coordinate*>* next) → lib::Coordinate* {
       return null;
     }
+    abstract member-signature get _addressOf() → dart.ffi::Pointer<dart.ffi::Struct*>*;
+    abstract member-signature get _identityHashCode() → dart.core::int*;
+    abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfTrue(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfFalse(dynamic type) → dart.core::bool*;
+    abstract member-signature operator ==(dynamic other) → dart.core::bool*;
+    abstract member-signature get hashCode() → dart.core::int*;
+    abstract member-signature method toString() → dart.core::String*;
+    abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic;
+    abstract member-signature get runtimeType() → dart.core::Type*;
     get x() → dart.core::double*
       return dart.ffi::_loadDouble(this.{dart.ffi::Struct::_addressOf}, (#C8).{dart.core::List::[]}(dart.ffi::_abi()));
     set x(dart.core::double* #v) → void
diff --git a/pkg/front_end/testcases/incremental_initialize_from_dill/flutter_mixin_failure_1.yaml.world.1.expect b/pkg/front_end/testcases/incremental_initialize_from_dill/flutter_mixin_failure_1.yaml.world.1.expect
index acc9d65..6ff4557 100644
--- a/pkg/front_end/testcases/incremental_initialize_from_dill/flutter_mixin_failure_1.yaml.world.1.expect
+++ b/pkg/front_end/testcases/incremental_initialize_from_dill/flutter_mixin_failure_1.yaml.world.1.expect
@@ -5,6 +5,16 @@
     synthetic constructor •() → lib::FooEntry*
       : super dart.core::Object::•()
       ;
+    abstract member-signature get _identityHashCode() → dart.core::int*;
+    abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfTrue(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfFalse(dynamic type) → dart.core::bool*;
+    abstract member-signature operator ==(dynamic other) → dart.core::bool*;
+    abstract member-signature get hashCode() → dart.core::int*;
+    abstract member-signature method toString() → dart.core::String*;
+    abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic;
+    abstract member-signature get runtimeType() → dart.core::Type*;
   }
   class BarEntry extends lib::FooEntry {
     synthetic constructor •() → lib::BarEntry*
@@ -16,12 +26,32 @@
       : super dart.core::Object::•()
       ;
     abstract method hello(lib::FooEntry* entry) → void;
+    abstract member-signature get _identityHashCode() → dart.core::int*;
+    abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfTrue(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfFalse(dynamic type) → dart.core::bool*;
+    abstract member-signature operator ==(dynamic other) → dart.core::bool*;
+    abstract member-signature get hashCode() → dart.core::int*;
+    abstract member-signature method toString() → dart.core::String*;
+    abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic;
+    abstract member-signature get runtimeType() → dart.core::Type*;
   }
   abstract class Baz extends dart.core::Object implements lib::FooTarget {
     synthetic constructor •() → lib::Baz*
       : super dart.core::Object::•()
       ;
     method hello(covariant lib::FooEntry* entry) → void {}
+    abstract member-signature get _identityHashCode() → dart.core::int*;
+    abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfTrue(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfFalse(dynamic type) → dart.core::bool*;
+    abstract member-signature operator ==(dynamic other) → dart.core::bool*;
+    abstract member-signature get hashCode() → dart.core::int*;
+    abstract member-signature method toString() → dart.core::String*;
+    abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic;
+    abstract member-signature get runtimeType() → dart.core::Type*;
   }
   abstract class MyMixin extends lib::Baz /*isMixinDeclaration*/  {
   }
@@ -60,5 +90,15 @@
       : super dart.core::Object::•()
       ;
     abstract method world() → lib::Baz*;
+    abstract member-signature get _identityHashCode() → dart.core::int*;
+    abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfTrue(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfFalse(dynamic type) → dart.core::bool*;
+    abstract member-signature operator ==(dynamic other) → dart.core::bool*;
+    abstract member-signature get hashCode() → dart.core::int*;
+    abstract member-signature method toString() → dart.core::String*;
+    abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic;
+    abstract member-signature get runtimeType() → dart.core::Type*;
   }
 }
diff --git a/pkg/front_end/testcases/incremental_initialize_from_dill/flutter_mixin_failure_1.yaml.world.2.expect b/pkg/front_end/testcases/incremental_initialize_from_dill/flutter_mixin_failure_1.yaml.world.2.expect
index c05c801..f0860a0 100644
--- a/pkg/front_end/testcases/incremental_initialize_from_dill/flutter_mixin_failure_1.yaml.world.2.expect
+++ b/pkg/front_end/testcases/incremental_initialize_from_dill/flutter_mixin_failure_1.yaml.world.2.expect
@@ -5,6 +5,16 @@
     synthetic constructor •() → lib::FooEntry*
       : super dart.core::Object::•()
       ;
+    abstract member-signature get _identityHashCode() → dart.core::int*;
+    abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfTrue(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfFalse(dynamic type) → dart.core::bool*;
+    abstract member-signature operator ==(dynamic other) → dart.core::bool*;
+    abstract member-signature get hashCode() → dart.core::int*;
+    abstract member-signature method toString() → dart.core::String*;
+    abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic;
+    abstract member-signature get runtimeType() → dart.core::Type*;
   }
   class BarEntry extends lib::FooEntry {
     synthetic constructor •() → lib::BarEntry*
@@ -16,12 +26,32 @@
       : super dart.core::Object::•()
       ;
     abstract method hello(lib::FooEntry* entry) → void;
+    abstract member-signature get _identityHashCode() → dart.core::int*;
+    abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfTrue(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfFalse(dynamic type) → dart.core::bool*;
+    abstract member-signature operator ==(dynamic other) → dart.core::bool*;
+    abstract member-signature get hashCode() → dart.core::int*;
+    abstract member-signature method toString() → dart.core::String*;
+    abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic;
+    abstract member-signature get runtimeType() → dart.core::Type*;
   }
   abstract class Baz extends dart.core::Object implements lib::FooTarget {
     synthetic constructor •() → lib::Baz*
       : super dart.core::Object::•()
       ;
     method hello(covariant lib::FooEntry* entry) → void {}
+    abstract member-signature get _identityHashCode() → dart.core::int*;
+    abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfTrue(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfFalse(dynamic type) → dart.core::bool*;
+    abstract member-signature operator ==(dynamic other) → dart.core::bool*;
+    abstract member-signature get hashCode() → dart.core::int*;
+    abstract member-signature method toString() → dart.core::String*;
+    abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic;
+    abstract member-signature get runtimeType() → dart.core::Type*;
   }
   abstract class MyMixin extends lib::Baz /*isMixinDeclaration*/  {
   }
@@ -60,6 +90,16 @@
       : super dart.core::Object::•()
       ;
     abstract method world() → lib::Baz*;
+    abstract member-signature get _identityHashCode() → dart.core::int*;
+    abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfTrue(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfFalse(dynamic type) → dart.core::bool*;
+    abstract member-signature operator ==(dynamic other) → dart.core::bool*;
+    abstract member-signature get hashCode() → dart.core::int*;
+    abstract member-signature method toString() → dart.core::String*;
+    abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic;
+    abstract member-signature get runtimeType() → dart.core::Type*;
   }
   static method main() → dynamic {
     dart.core::print(new main::Test::•());
diff --git a/pkg/front_end/testcases/incremental_initialize_from_dill/flutter_widget_transform.yaml.world.1.expect b/pkg/front_end/testcases/incremental_initialize_from_dill/flutter_widget_transform.yaml.world.1.expect
index 95a88d7..157c52f 100644
--- a/pkg/front_end/testcases/incremental_initialize_from_dill/flutter_widget_transform.yaml.world.1.expect
+++ b/pkg/front_end/testcases/incremental_initialize_from_dill/flutter_widget_transform.yaml.world.1.expect
@@ -5,6 +5,11 @@
     synthetic constructor •() → fra::Bar*
       : super dart.core::Object::•()
       ;
+    abstract member-signature operator ==(dynamic other) → dart.core::bool*;
+    abstract member-signature get hashCode() → dart.core::int*;
+    abstract member-signature method toString() → dart.core::String*;
+    abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic;
+    abstract member-signature get runtimeType() → dart.core::Type*;
   }
   abstract class Widget extends fra::Bar implements wid::_HasCreationLocation {
     final field wid::_Location* _location /* from null */;
@@ -20,6 +25,11 @@
       : super dart.core::Object::•()
       ;
     abstract get _location() → wid::_Location*;
+    abstract member-signature operator ==(dynamic other) → dart.core::bool*;
+    abstract member-signature get hashCode() → dart.core::int*;
+    abstract member-signature method toString() → dart.core::String*;
+    abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic;
+    abstract member-signature get runtimeType() → dart.core::Type*;
   }
   class _Location extends dart.core::Object /*hasConstConstructor*/  {
     final field dart.core::String* file;
@@ -30,6 +40,11 @@
     const constructor •({dart.core::String* file = #C1, dart.core::int* line = #C1, dart.core::int* column = #C1, dart.core::String* name = #C1, dart.core::List<wid::_Location*>* parameterLocations = #C1}) → wid::_Location*
       : wid::_Location::file = file, wid::_Location::line = line, wid::_Location::column = column, wid::_Location::name = name, wid::_Location::parameterLocations = parameterLocations, super dart.core::Object::•()
       ;
+    abstract member-signature operator ==(dynamic other) → dart.core::bool*;
+    abstract member-signature get hashCode() → dart.core::int*;
+    abstract member-signature method toString() → dart.core::String*;
+    abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic;
+    abstract member-signature get runtimeType() → dart.core::Type*;
   }
 }
 library from "org-dartlang-test:///main.dart" as main {
diff --git a/pkg/front_end/testcases/incremental_initialize_from_dill/flutter_widget_transform.yaml.world.2.expect b/pkg/front_end/testcases/incremental_initialize_from_dill/flutter_widget_transform.yaml.world.2.expect
index 95a88d7..157c52f 100644
--- a/pkg/front_end/testcases/incremental_initialize_from_dill/flutter_widget_transform.yaml.world.2.expect
+++ b/pkg/front_end/testcases/incremental_initialize_from_dill/flutter_widget_transform.yaml.world.2.expect
@@ -5,6 +5,11 @@
     synthetic constructor •() → fra::Bar*
       : super dart.core::Object::•()
       ;
+    abstract member-signature operator ==(dynamic other) → dart.core::bool*;
+    abstract member-signature get hashCode() → dart.core::int*;
+    abstract member-signature method toString() → dart.core::String*;
+    abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic;
+    abstract member-signature get runtimeType() → dart.core::Type*;
   }
   abstract class Widget extends fra::Bar implements wid::_HasCreationLocation {
     final field wid::_Location* _location /* from null */;
@@ -20,6 +25,11 @@
       : super dart.core::Object::•()
       ;
     abstract get _location() → wid::_Location*;
+    abstract member-signature operator ==(dynamic other) → dart.core::bool*;
+    abstract member-signature get hashCode() → dart.core::int*;
+    abstract member-signature method toString() → dart.core::String*;
+    abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic;
+    abstract member-signature get runtimeType() → dart.core::Type*;
   }
   class _Location extends dart.core::Object /*hasConstConstructor*/  {
     final field dart.core::String* file;
@@ -30,6 +40,11 @@
     const constructor •({dart.core::String* file = #C1, dart.core::int* line = #C1, dart.core::int* column = #C1, dart.core::String* name = #C1, dart.core::List<wid::_Location*>* parameterLocations = #C1}) → wid::_Location*
       : wid::_Location::file = file, wid::_Location::line = line, wid::_Location::column = column, wid::_Location::name = name, wid::_Location::parameterLocations = parameterLocations, super dart.core::Object::•()
       ;
+    abstract member-signature operator ==(dynamic other) → dart.core::bool*;
+    abstract member-signature get hashCode() → dart.core::int*;
+    abstract member-signature method toString() → dart.core::String*;
+    abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic;
+    abstract member-signature get runtimeType() → dart.core::Type*;
   }
 }
 library from "org-dartlang-test:///main.dart" as main {
diff --git a/pkg/front_end/testcases/incremental_initialize_from_dill/incremental_serialization_3.yaml.world.1.expect b/pkg/front_end/testcases/incremental_initialize_from_dill/incremental_serialization_3.yaml.world.1.expect
index 91c88a8..1323e12 100644
--- a/pkg/front_end/testcases/incremental_initialize_from_dill/incremental_serialization_3.yaml.world.1.expect
+++ b/pkg/front_end/testcases/incremental_initialize_from_dill/incremental_serialization_3.yaml.world.1.expect
@@ -37,6 +37,16 @@
     synthetic constructor •() → lib22::Foo*
       : super dart.core::Object::•()
       ;
+    abstract member-signature get _identityHashCode() → dart.core::int*;
+    abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfTrue(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfFalse(dynamic type) → dart.core::bool*;
+    abstract member-signature operator ==(dynamic other) → dart.core::bool*;
+    abstract member-signature get hashCode() → dart.core::int*;
+    abstract member-signature method toString() → dart.core::String*;
+    abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic;
+    abstract member-signature get runtimeType() → dart.core::Type*;
   }
   static field dart.core::int* f = 42;
 }
diff --git a/pkg/front_end/testcases/incremental_initialize_from_dill/incremental_serialization_3.yaml.world.2.expect b/pkg/front_end/testcases/incremental_initialize_from_dill/incremental_serialization_3.yaml.world.2.expect
index 91c88a8..1323e12 100644
--- a/pkg/front_end/testcases/incremental_initialize_from_dill/incremental_serialization_3.yaml.world.2.expect
+++ b/pkg/front_end/testcases/incremental_initialize_from_dill/incremental_serialization_3.yaml.world.2.expect
@@ -37,6 +37,16 @@
     synthetic constructor •() → lib22::Foo*
       : super dart.core::Object::•()
       ;
+    abstract member-signature get _identityHashCode() → dart.core::int*;
+    abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfTrue(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfFalse(dynamic type) → dart.core::bool*;
+    abstract member-signature operator ==(dynamic other) → dart.core::bool*;
+    abstract member-signature get hashCode() → dart.core::int*;
+    abstract member-signature method toString() → dart.core::String*;
+    abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic;
+    abstract member-signature get runtimeType() → dart.core::Type*;
   }
   static field dart.core::int* f = 42;
 }
diff --git a/pkg/front_end/testcases/incremental_initialize_from_dill/initialize_with_file_then_use_type.yaml.world.1.expect b/pkg/front_end/testcases/incremental_initialize_from_dill/initialize_with_file_then_use_type.yaml.world.1.expect
index 9d2d146..f299c1a 100644
--- a/pkg/front_end/testcases/incremental_initialize_from_dill/initialize_with_file_then_use_type.yaml.world.1.expect
+++ b/pkg/front_end/testcases/incremental_initialize_from_dill/initialize_with_file_then_use_type.yaml.world.1.expect
@@ -8,6 +8,16 @@
     method foo() → dynamic {
       dart.core::print("Foo!");
     }
+    abstract member-signature get _identityHashCode() → dart.core::int*;
+    abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfTrue(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfFalse(dynamic type) → dart.core::bool*;
+    abstract member-signature operator ==(dynamic other) → dart.core::bool*;
+    abstract member-signature get hashCode() → dart.core::int*;
+    abstract member-signature method toString() → dart.core::String*;
+    abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic;
+    abstract member-signature get runtimeType() → dart.core::Type*;
   }
 }
 library from "org-dartlang-test:///main.dart" as main {
diff --git a/pkg/front_end/testcases/incremental_initialize_from_dill/initialize_with_file_then_use_type.yaml.world.3.expect b/pkg/front_end/testcases/incremental_initialize_from_dill/initialize_with_file_then_use_type.yaml.world.3.expect
index 9d2d146..f299c1a 100644
--- a/pkg/front_end/testcases/incremental_initialize_from_dill/initialize_with_file_then_use_type.yaml.world.3.expect
+++ b/pkg/front_end/testcases/incremental_initialize_from_dill/initialize_with_file_then_use_type.yaml.world.3.expect
@@ -8,6 +8,16 @@
     method foo() → dynamic {
       dart.core::print("Foo!");
     }
+    abstract member-signature get _identityHashCode() → dart.core::int*;
+    abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfTrue(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfFalse(dynamic type) → dart.core::bool*;
+    abstract member-signature operator ==(dynamic other) → dart.core::bool*;
+    abstract member-signature get hashCode() → dart.core::int*;
+    abstract member-signature method toString() → dart.core::String*;
+    abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic;
+    abstract member-signature get runtimeType() → dart.core::Type*;
   }
 }
 library from "org-dartlang-test:///main.dart" as main {
diff --git a/pkg/front_end/testcases/incremental_initialize_from_dill/initialize_with_unused_package_then_use_type.yaml.world.1.expect b/pkg/front_end/testcases/incremental_initialize_from_dill/initialize_with_unused_package_then_use_type.yaml.world.1.expect
index 19ebb12..7e51255 100644
--- a/pkg/front_end/testcases/incremental_initialize_from_dill/initialize_with_unused_package_then_use_type.yaml.world.1.expect
+++ b/pkg/front_end/testcases/incremental_initialize_from_dill/initialize_with_unused_package_then_use_type.yaml.world.1.expect
@@ -17,5 +17,15 @@
     method foo() → dynamic {
       dart.core::print("Foo!");
     }
+    abstract member-signature get _identityHashCode() → dart.core::int*;
+    abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfTrue(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfFalse(dynamic type) → dart.core::bool*;
+    abstract member-signature operator ==(dynamic other) → dart.core::bool*;
+    abstract member-signature get hashCode() → dart.core::int*;
+    abstract member-signature method toString() → dart.core::String*;
+    abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic;
+    abstract member-signature get runtimeType() → dart.core::Type*;
   }
 }
diff --git a/pkg/front_end/testcases/incremental_initialize_from_dill/initialize_with_unused_package_then_use_type.yaml.world.3.expect b/pkg/front_end/testcases/incremental_initialize_from_dill/initialize_with_unused_package_then_use_type.yaml.world.3.expect
index 19ebb12..7e51255 100644
--- a/pkg/front_end/testcases/incremental_initialize_from_dill/initialize_with_unused_package_then_use_type.yaml.world.3.expect
+++ b/pkg/front_end/testcases/incremental_initialize_from_dill/initialize_with_unused_package_then_use_type.yaml.world.3.expect
@@ -17,5 +17,15 @@
     method foo() → dynamic {
       dart.core::print("Foo!");
     }
+    abstract member-signature get _identityHashCode() → dart.core::int*;
+    abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfTrue(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfFalse(dynamic type) → dart.core::bool*;
+    abstract member-signature operator ==(dynamic other) → dart.core::bool*;
+    abstract member-signature get hashCode() → dart.core::int*;
+    abstract member-signature method toString() → dart.core::String*;
+    abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic;
+    abstract member-signature get runtimeType() → dart.core::Type*;
   }
 }
diff --git a/pkg/front_end/testcases/incremental_initialize_from_dill/mixin_inferrer_error.yaml.world.1.expect b/pkg/front_end/testcases/incremental_initialize_from_dill/mixin_inferrer_error.yaml.world.1.expect
index a00b651..de8ec79 100644
--- a/pkg/front_end/testcases/incremental_initialize_from_dill/mixin_inferrer_error.yaml.world.1.expect
+++ b/pkg/front_end/testcases/incremental_initialize_from_dill/mixin_inferrer_error.yaml.world.1.expect
@@ -20,6 +20,16 @@
     synthetic constructor •() → main::A<main::A::T*>*
       : super dart.core::Object::•()
       ;
+    abstract member-signature get _identityHashCode() → dart.core::int*;
+    abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfTrue(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfFalse(dynamic type) → dart.core::bool*;
+    abstract member-signature operator ==(dynamic other) → dart.core::bool*;
+    abstract member-signature get hashCode() → dart.core::int*;
+    abstract member-signature method toString() → dart.core::String*;
+    abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic;
+    abstract member-signature get runtimeType() → dart.core::Type*;
   }
   abstract class M<T extends dart.core::Object* = dynamic> extends main::A<main::M::T*> /*isMixinDeclaration*/  {
   }
@@ -27,6 +37,16 @@
     const synthetic constructor •() → main::_C&Object&M*
       : super dart.core::Object::•()
       ;
+    abstract member-signature get _identityHashCode() → dart.core::int*;
+    abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfTrue(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfFalse(dynamic type) → dart.core::bool*;
+    abstract member-signature operator ==(dynamic other) → dart.core::bool*;
+    abstract member-signature get hashCode() → dart.core::int*;
+    abstract member-signature method toString() → dart.core::String*;
+    abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic;
+    abstract member-signature get runtimeType() → dart.core::Type*;
   }
   class C extends main::_C&Object&M {
     synthetic constructor •() → main::C*
diff --git a/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_1.yaml.world.1.expect b/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_1.yaml.world.1.expect
index 9a15e2a..b51ffb9 100644
--- a/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_1.yaml.world.1.expect
+++ b/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_1.yaml.world.1.expect
@@ -16,6 +16,16 @@
     synthetic constructor •() → libA::Foo*
       : super dart.core::Object::•()
       ;
+    abstract member-signature get _identityHashCode() → dart.core::int*;
+    abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfTrue(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfFalse(dynamic type) → dart.core::bool*;
+    abstract member-signature operator ==(dynamic other) → dart.core::bool*;
+    abstract member-signature get hashCode() → dart.core::int*;
+    abstract member-signature method toString() → dart.core::String*;
+    abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic;
+    abstract member-signature get runtimeType() → dart.core::Type*;
   }
   static method whatever() → dynamic {
     libB::Bar* bar = new libB::Bar::•(new libA::Foo::•());
@@ -31,6 +41,16 @@
     constructor •(libA::Foo* foo) → libB::Bar*
       : libB::Bar::foo = foo, super dart.core::Object::•()
       ;
+    abstract member-signature get _identityHashCode() → dart.core::int*;
+    abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfTrue(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfFalse(dynamic type) → dart.core::bool*;
+    abstract member-signature operator ==(dynamic other) → dart.core::bool*;
+    abstract member-signature get hashCode() → dart.core::int*;
+    abstract member-signature method toString() → dart.core::String*;
+    abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic;
+    abstract member-signature get runtimeType() → dart.core::Type*;
   }
 }
 library from "org-dartlang-test:///main.dart" as main {
diff --git a/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_1.yaml.world.2.expect b/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_1.yaml.world.2.expect
index dbacc07..1624c1b 100644
--- a/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_1.yaml.world.2.expect
+++ b/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_1.yaml.world.2.expect
@@ -16,6 +16,16 @@
     synthetic constructor •() → libA::Foo*
       : super dart.core::Object::•()
       ;
+    abstract member-signature get _identityHashCode() → dart.core::int*;
+    abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfTrue(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfFalse(dynamic type) → dart.core::bool*;
+    abstract member-signature operator ==(dynamic other) → dart.core::bool*;
+    abstract member-signature get hashCode() → dart.core::int*;
+    abstract member-signature method toString() → dart.core::String*;
+    abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic;
+    abstract member-signature get runtimeType() → dart.core::Type*;
   }
   static method whatever() → dynamic {
     libB::Bar* bar = new libB::Bar::•(new libA::Foo::•());
@@ -31,6 +41,16 @@
     constructor •(libA::Foo* foo) → libB::Bar*
       : libB::Bar::foo = foo, super dart.core::Object::•()
       ;
+    abstract member-signature get _identityHashCode() → dart.core::int*;
+    abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfTrue(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfFalse(dynamic type) → dart.core::bool*;
+    abstract member-signature operator ==(dynamic other) → dart.core::bool*;
+    abstract member-signature get hashCode() → dart.core::int*;
+    abstract member-signature method toString() → dart.core::String*;
+    abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic;
+    abstract member-signature get runtimeType() → dart.core::Type*;
   }
 }
 library from "org-dartlang-test:///main.dart" as main {
diff --git a/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_10.yaml.world.1.expect b/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_10.yaml.world.1.expect
index 2969361..9d20145 100644
--- a/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_10.yaml.world.1.expect
+++ b/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_10.yaml.world.1.expect
@@ -6,6 +6,16 @@
       : super dart.core::Object::•()
       ;
     method fooMethod() → void {}
+    abstract member-signature get _identityHashCode() → dart.core::int*;
+    abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfTrue(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfFalse(dynamic type) → dart.core::bool*;
+    abstract member-signature operator ==(dynamic other) → dart.core::bool*;
+    abstract member-signature get hashCode() → dart.core::int*;
+    abstract member-signature method toString() → dart.core::String*;
+    abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic;
+    abstract member-signature get runtimeType() → dart.core::Type*;
   }
 }
 library from "org-dartlang-test:///lib2.dart" as lib2 {
@@ -26,7 +36,7 @@
 
   static method lib3Method(lib1::Foo* foo) → void {
     lib1::Foo* bar = new lib2::Bar::•();
-    dart.core::bool* equal = foo.{dart.core::Object::==}(bar);
+    dart.core::bool* equal = foo.{lib1::Foo::==}(bar);
     dart.core::print("foo == bar = ${equal}");
   }
 }
diff --git a/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_10.yaml.world.2.expect b/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_10.yaml.world.2.expect
index 384e622..c67a311 100644
--- a/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_10.yaml.world.2.expect
+++ b/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_10.yaml.world.2.expect
@@ -8,6 +8,16 @@
     method fooMethod() → void {
       dart.core::print("fooMethod");
     }
+    abstract member-signature get _identityHashCode() → dart.core::int*;
+    abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfTrue(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfFalse(dynamic type) → dart.core::bool*;
+    abstract member-signature operator ==(dynamic other) → dart.core::bool*;
+    abstract member-signature get hashCode() → dart.core::int*;
+    abstract member-signature method toString() → dart.core::String*;
+    abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic;
+    abstract member-signature get runtimeType() → dart.core::Type*;
   }
 }
 library from "org-dartlang-test:///lib2.dart" as lib2 {
@@ -28,7 +38,7 @@
 
   static method lib3Method(lib1::Foo* foo) → void {
     lib1::Foo* bar = new lib2::Bar::•();
-    dart.core::bool* equal = foo.{dart.core::Object::==}(bar);
+    dart.core::bool* equal = foo.{lib1::Foo::==}(bar);
     dart.core::print("foo == bar = ${equal}");
   }
 }
diff --git a/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_10.yaml.world.3.expect b/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_10.yaml.world.3.expect
index 4314eb7..ee0c24b 100644
--- a/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_10.yaml.world.3.expect
+++ b/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_10.yaml.world.3.expect
@@ -8,6 +8,16 @@
     method fooMethod() → void {
       dart.core::print("fooMethod");
     }
+    abstract member-signature get _identityHashCode() → dart.core::int*;
+    abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfTrue(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfFalse(dynamic type) → dart.core::bool*;
+    abstract member-signature operator ==(dynamic other) → dart.core::bool*;
+    abstract member-signature get hashCode() → dart.core::int*;
+    abstract member-signature method toString() → dart.core::String*;
+    abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic;
+    abstract member-signature get runtimeType() → dart.core::Type*;
   }
 }
 library from "org-dartlang-test:///lib2.dart" as lib2 {
@@ -28,7 +38,7 @@
 
   static method lib3Method(lib1::Foo* foo) → void {
     lib1::Foo* bar = new lib2::Bar::•();
-    dart.core::bool* equal = foo.{dart.core::Object::==}(bar);
+    dart.core::bool* equal = foo.{lib1::Foo::==}(bar);
     dart.core::print("foo == bar = ${equal}");
     dart.core::print("Done!");
   }
diff --git a/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_11.yaml.world.1.expect b/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_11.yaml.world.1.expect
index 5500ee1..e787b25 100644
--- a/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_11.yaml.world.1.expect
+++ b/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_11.yaml.world.1.expect
@@ -7,6 +7,16 @@
     static field dynamic _redirecting# = <dynamic>[lib1::Foo::•];
     static factory •() → lib1::Foo*
       let dynamic #redirecting_factory = lib2::Bar::• in invalid-expression;
+    abstract member-signature get _identityHashCode() → dart.core::int*;
+    abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfTrue(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfFalse(dynamic type) → dart.core::bool*;
+    abstract member-signature operator ==(dynamic other) → dart.core::bool*;
+    abstract member-signature get hashCode() → dart.core::int*;
+    abstract member-signature method toString() → dart.core::String*;
+    abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic;
+    abstract member-signature get runtimeType() → dart.core::Type*;
   }
   static method libMethod() → void {
     lib1::Foo* foo = new lib2::Bar::•();
@@ -21,6 +31,16 @@
     constructor •() → lib2::Bar*
       : super dart.core::Object::•()
       ;
+    abstract member-signature get _identityHashCode() → dart.core::int*;
+    abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfTrue(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfFalse(dynamic type) → dart.core::bool*;
+    abstract member-signature operator ==(dynamic other) → dart.core::bool*;
+    abstract member-signature get hashCode() → dart.core::int*;
+    abstract member-signature method toString() → dart.core::String*;
+    abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic;
+    abstract member-signature get runtimeType() → dart.core::Type*;
   }
 }
 library from "org-dartlang-test:///main.dart" as main {
diff --git a/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_11.yaml.world.2.expect b/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_11.yaml.world.2.expect
index f2d895d..451f243 100644
--- a/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_11.yaml.world.2.expect
+++ b/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_11.yaml.world.2.expect
@@ -7,11 +7,21 @@
     static field dynamic _redirecting# = <dynamic>[lib1::Foo::•];
     static factory •() → lib1::Foo*
       let dynamic #redirecting_factory = lib2::Bar::• in invalid-expression;
+    abstract member-signature get _identityHashCode() → dart.core::int*;
+    abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfTrue(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfFalse(dynamic type) → dart.core::bool*;
+    abstract member-signature operator ==(dynamic other) → dart.core::bool*;
+    abstract member-signature get hashCode() → dart.core::int*;
+    abstract member-signature method toString() → dart.core::String*;
+    abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic;
+    abstract member-signature get runtimeType() → dart.core::Type*;
   }
   static method libMethod() → void {
     lib1::Foo* foo = new lib2::Bar::•();
     lib2::Bar* bar = new lib2::Bar::•();
-    dart.core::print(foo.{dart.core::Object::==}(bar));
+    dart.core::print(foo.{lib1::Foo::==}(bar));
   }
 }
 library from "org-dartlang-test:///lib2.dart" as lib2 {
@@ -22,6 +32,16 @@
     constructor •() → lib2::Bar*
       : super dart.core::Object::•()
       ;
+    abstract member-signature get _identityHashCode() → dart.core::int*;
+    abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfTrue(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfFalse(dynamic type) → dart.core::bool*;
+    abstract member-signature operator ==(dynamic other) → dart.core::bool*;
+    abstract member-signature get hashCode() → dart.core::int*;
+    abstract member-signature method toString() → dart.core::String*;
+    abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic;
+    abstract member-signature get runtimeType() → dart.core::Type*;
   }
 }
 library from "org-dartlang-test:///main.dart" as main {
diff --git a/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_12.yaml.world.1.expect b/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_12.yaml.world.1.expect
index 6a427a8..c59d2ea 100644
--- a/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_12.yaml.world.1.expect
+++ b/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_12.yaml.world.1.expect
@@ -7,6 +7,16 @@
   class Foo extends dart.core::Object {
     constructor •() → lib1::Foo*
       : super dart.core::Object::•() {}
+    abstract member-signature get _identityHashCode() → dart.core::int*;
+    abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfTrue(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfFalse(dynamic type) → dart.core::bool*;
+    abstract member-signature operator ==(dynamic other) → dart.core::bool*;
+    abstract member-signature get hashCode() → dart.core::int*;
+    abstract member-signature method toString() → dart.core::String*;
+    abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic;
+    abstract member-signature get runtimeType() → dart.core::Type*;
   }
 }
 library from "org-dartlang-test:///lib2.dart" as lib2 {
@@ -14,6 +24,16 @@
   class Bar extends dart.core::Object {
     constructor •() → lib2::Bar*
       : super dart.core::Object::•() {}
+    abstract member-signature get _identityHashCode() → dart.core::int*;
+    abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfTrue(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfFalse(dynamic type) → dart.core::bool*;
+    abstract member-signature operator ==(dynamic other) → dart.core::bool*;
+    abstract member-signature get hashCode() → dart.core::int*;
+    abstract member-signature method toString() → dart.core::String*;
+    abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic;
+    abstract member-signature get runtimeType() → dart.core::Type*;
   }
 }
 library from "org-dartlang-test:///main.dart" as main {
diff --git a/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_12.yaml.world.2.expect b/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_12.yaml.world.2.expect
index 34e5701..1cc82f8 100644
--- a/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_12.yaml.world.2.expect
+++ b/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_12.yaml.world.2.expect
@@ -9,6 +9,16 @@
       : super dart.core::Object::•() {
       dart.core::print("Foo!");
     }
+    abstract member-signature get _identityHashCode() → dart.core::int*;
+    abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfTrue(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfFalse(dynamic type) → dart.core::bool*;
+    abstract member-signature operator ==(dynamic other) → dart.core::bool*;
+    abstract member-signature get hashCode() → dart.core::int*;
+    abstract member-signature method toString() → dart.core::String*;
+    abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic;
+    abstract member-signature get runtimeType() → dart.core::Type*;
   }
 }
 library from "org-dartlang-test:///lib2.dart" as lib2 {
@@ -16,6 +26,16 @@
   class Bar extends dart.core::Object {
     constructor •() → lib2::Bar*
       : super dart.core::Object::•() {}
+    abstract member-signature get _identityHashCode() → dart.core::int*;
+    abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfTrue(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfFalse(dynamic type) → dart.core::bool*;
+    abstract member-signature operator ==(dynamic other) → dart.core::bool*;
+    abstract member-signature get hashCode() → dart.core::int*;
+    abstract member-signature method toString() → dart.core::String*;
+    abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic;
+    abstract member-signature get runtimeType() → dart.core::Type*;
   }
 }
 library from "org-dartlang-test:///main.dart" as main {
diff --git a/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_12.yaml.world.3.expect b/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_12.yaml.world.3.expect
index 4d6eddd..201538e 100644
--- a/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_12.yaml.world.3.expect
+++ b/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_12.yaml.world.3.expect
@@ -9,6 +9,16 @@
       : super dart.core::Object::•() {
       dart.core::print("Foo!");
     }
+    abstract member-signature get _identityHashCode() → dart.core::int*;
+    abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfTrue(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfFalse(dynamic type) → dart.core::bool*;
+    abstract member-signature operator ==(dynamic other) → dart.core::bool*;
+    abstract member-signature get hashCode() → dart.core::int*;
+    abstract member-signature method toString() → dart.core::String*;
+    abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic;
+    abstract member-signature get runtimeType() → dart.core::Type*;
   }
 }
 library from "org-dartlang-test:///lib2.dart" as lib2 {
@@ -18,6 +28,16 @@
       : super dart.core::Object::•() {
       dart.core::print("Bar!");
     }
+    abstract member-signature get _identityHashCode() → dart.core::int*;
+    abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfTrue(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfFalse(dynamic type) → dart.core::bool*;
+    abstract member-signature operator ==(dynamic other) → dart.core::bool*;
+    abstract member-signature get hashCode() → dart.core::int*;
+    abstract member-signature method toString() → dart.core::String*;
+    abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic;
+    abstract member-signature get runtimeType() → dart.core::Type*;
   }
 }
 library from "org-dartlang-test:///main.dart" as main {
diff --git a/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_12.yaml.world.4.expect b/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_12.yaml.world.4.expect
index 00d6dab..8ec86d2 100644
--- a/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_12.yaml.world.4.expect
+++ b/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_12.yaml.world.4.expect
@@ -9,6 +9,16 @@
       : super dart.core::Object::•() {
       dart.core::print("Foo!");
     }
+    abstract member-signature get _identityHashCode() → dart.core::int*;
+    abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfTrue(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfFalse(dynamic type) → dart.core::bool*;
+    abstract member-signature operator ==(dynamic other) → dart.core::bool*;
+    abstract member-signature get hashCode() → dart.core::int*;
+    abstract member-signature method toString() → dart.core::String*;
+    abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic;
+    abstract member-signature get runtimeType() → dart.core::Type*;
   }
 }
 library from "org-dartlang-test:///lib2.dart" as lib2 {
@@ -18,6 +28,16 @@
       : super dart.core::Object::•() {
       dart.core::print("Bar!");
     }
+    abstract member-signature get _identityHashCode() → dart.core::int*;
+    abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfTrue(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfFalse(dynamic type) → dart.core::bool*;
+    abstract member-signature operator ==(dynamic other) → dart.core::bool*;
+    abstract member-signature get hashCode() → dart.core::int*;
+    abstract member-signature method toString() → dart.core::String*;
+    abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic;
+    abstract member-signature get runtimeType() → dart.core::Type*;
   }
 }
 library from "org-dartlang-test:///main.dart" as main {
diff --git a/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_13.yaml.world.1.expect b/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_13.yaml.world.1.expect
index ca91b00..8b517ed 100644
--- a/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_13.yaml.world.1.expect
+++ b/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_13.yaml.world.1.expect
@@ -13,6 +13,16 @@
     const constructor •(dart.core::String* x) → lib2::Foo*
       : super dart.core::Object::•()
       ;
+    abstract member-signature get _identityHashCode() → dart.core::int*;
+    abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfTrue(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfFalse(dynamic type) → dart.core::bool*;
+    abstract member-signature operator ==(dynamic other) → dart.core::bool*;
+    abstract member-signature get hashCode() → dart.core::int*;
+    abstract member-signature method toString() → dart.core::String*;
+    abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic;
+    abstract member-signature get runtimeType() → dart.core::Type*;
   }
 }
 library from "org-dartlang-test:///main.dart" as main {
diff --git a/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_13.yaml.world.2.expect b/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_13.yaml.world.2.expect
index 5a4ab88..807d387 100644
--- a/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_13.yaml.world.2.expect
+++ b/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_13.yaml.world.2.expect
@@ -13,6 +13,16 @@
     const constructor •(dart.core::String* x) → lib2::Foo*
       : super dart.core::Object::•()
       ;
+    abstract member-signature get _identityHashCode() → dart.core::int*;
+    abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfTrue(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfFalse(dynamic type) → dart.core::bool*;
+    abstract member-signature operator ==(dynamic other) → dart.core::bool*;
+    abstract member-signature get hashCode() → dart.core::int*;
+    abstract member-signature method toString() → dart.core::String*;
+    abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic;
+    abstract member-signature get runtimeType() → dart.core::Type*;
   }
 }
 library from "org-dartlang-test:///main.dart" as main {
diff --git a/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_14.yaml.world.1.expect b/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_14.yaml.world.1.expect
index ee84c42..c553348 100644
--- a/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_14.yaml.world.1.expect
+++ b/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_14.yaml.world.1.expect
@@ -7,6 +7,16 @@
     synthetic constructor •() → lib1::Bar*
       : super dart.core::Object::•()
       ;
+    abstract member-signature get _identityHashCode() → dart.core::int*;
+    abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfTrue(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfFalse(dynamic type) → dart.core::bool*;
+    abstract member-signature operator ==(dynamic other) → dart.core::bool*;
+    abstract member-signature get hashCode() → dart.core::int*;
+    abstract member-signature method toString() → dart.core::String*;
+    abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic;
+    abstract member-signature get runtimeType() → dart.core::Type*;
   }
 }
 library from "org-dartlang-test:///lib2.dart" as lib2 {
@@ -16,6 +26,16 @@
       : super dart.core::Object::•()
       ;
     abstract get x() → lib2::Baz*;
+    abstract member-signature get _identityHashCode() → dart.core::int*;
+    abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfTrue(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfFalse(dynamic type) → dart.core::bool*;
+    abstract member-signature operator ==(dynamic other) → dart.core::bool*;
+    abstract member-signature get hashCode() → dart.core::int*;
+    abstract member-signature method toString() → dart.core::String*;
+    abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic;
+    abstract member-signature get runtimeType() → dart.core::Type*;
   }
 }
 library from "org-dartlang-test:///main.dart" as main {
@@ -28,6 +48,16 @@
       ;
     @#C1
     abstract get x() → main::Foo*;
+    abstract member-signature get _identityHashCode() → dart.core::int*;
+    abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfTrue(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfFalse(dynamic type) → dart.core::bool*;
+    abstract member-signature operator ==(dynamic other) → dart.core::bool*;
+    abstract member-signature get hashCode() → dart.core::int*;
+    abstract member-signature method toString() → dart.core::String*;
+    abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic;
+    abstract member-signature get runtimeType() → dart.core::Type*;
   }
 }
 constants  {
diff --git a/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_14.yaml.world.2.expect b/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_14.yaml.world.2.expect
index ee84c42..c553348 100644
--- a/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_14.yaml.world.2.expect
+++ b/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_14.yaml.world.2.expect
@@ -7,6 +7,16 @@
     synthetic constructor •() → lib1::Bar*
       : super dart.core::Object::•()
       ;
+    abstract member-signature get _identityHashCode() → dart.core::int*;
+    abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfTrue(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfFalse(dynamic type) → dart.core::bool*;
+    abstract member-signature operator ==(dynamic other) → dart.core::bool*;
+    abstract member-signature get hashCode() → dart.core::int*;
+    abstract member-signature method toString() → dart.core::String*;
+    abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic;
+    abstract member-signature get runtimeType() → dart.core::Type*;
   }
 }
 library from "org-dartlang-test:///lib2.dart" as lib2 {
@@ -16,6 +26,16 @@
       : super dart.core::Object::•()
       ;
     abstract get x() → lib2::Baz*;
+    abstract member-signature get _identityHashCode() → dart.core::int*;
+    abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfTrue(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfFalse(dynamic type) → dart.core::bool*;
+    abstract member-signature operator ==(dynamic other) → dart.core::bool*;
+    abstract member-signature get hashCode() → dart.core::int*;
+    abstract member-signature method toString() → dart.core::String*;
+    abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic;
+    abstract member-signature get runtimeType() → dart.core::Type*;
   }
 }
 library from "org-dartlang-test:///main.dart" as main {
@@ -28,6 +48,16 @@
       ;
     @#C1
     abstract get x() → main::Foo*;
+    abstract member-signature get _identityHashCode() → dart.core::int*;
+    abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfTrue(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfFalse(dynamic type) → dart.core::bool*;
+    abstract member-signature operator ==(dynamic other) → dart.core::bool*;
+    abstract member-signature get hashCode() → dart.core::int*;
+    abstract member-signature method toString() → dart.core::String*;
+    abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic;
+    abstract member-signature get runtimeType() → dart.core::Type*;
   }
 }
 constants  {
diff --git a/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_14.yaml.world.3.expect b/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_14.yaml.world.3.expect
index ee84c42..c553348 100644
--- a/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_14.yaml.world.3.expect
+++ b/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_14.yaml.world.3.expect
@@ -7,6 +7,16 @@
     synthetic constructor •() → lib1::Bar*
       : super dart.core::Object::•()
       ;
+    abstract member-signature get _identityHashCode() → dart.core::int*;
+    abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfTrue(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfFalse(dynamic type) → dart.core::bool*;
+    abstract member-signature operator ==(dynamic other) → dart.core::bool*;
+    abstract member-signature get hashCode() → dart.core::int*;
+    abstract member-signature method toString() → dart.core::String*;
+    abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic;
+    abstract member-signature get runtimeType() → dart.core::Type*;
   }
 }
 library from "org-dartlang-test:///lib2.dart" as lib2 {
@@ -16,6 +26,16 @@
       : super dart.core::Object::•()
       ;
     abstract get x() → lib2::Baz*;
+    abstract member-signature get _identityHashCode() → dart.core::int*;
+    abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfTrue(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfFalse(dynamic type) → dart.core::bool*;
+    abstract member-signature operator ==(dynamic other) → dart.core::bool*;
+    abstract member-signature get hashCode() → dart.core::int*;
+    abstract member-signature method toString() → dart.core::String*;
+    abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic;
+    abstract member-signature get runtimeType() → dart.core::Type*;
   }
 }
 library from "org-dartlang-test:///main.dart" as main {
@@ -28,6 +48,16 @@
       ;
     @#C1
     abstract get x() → main::Foo*;
+    abstract member-signature get _identityHashCode() → dart.core::int*;
+    abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfTrue(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfFalse(dynamic type) → dart.core::bool*;
+    abstract member-signature operator ==(dynamic other) → dart.core::bool*;
+    abstract member-signature get hashCode() → dart.core::int*;
+    abstract member-signature method toString() → dart.core::String*;
+    abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic;
+    abstract member-signature get runtimeType() → dart.core::Type*;
   }
 }
 constants  {
diff --git a/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_15.yaml.world.1.expect b/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_15.yaml.world.1.expect
index b682af2..b4e28cd 100644
--- a/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_15.yaml.world.1.expect
+++ b/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_15.yaml.world.1.expect
@@ -8,6 +8,16 @@
     method foo(generic-covariant-impl lib1::A::T* t) → dynamic {
       dart.core::print("foo T ${t}");
     }
+    abstract member-signature get _identityHashCode() → dart.core::int*;
+    abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfTrue(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfFalse(dynamic type) → dart.core::bool*;
+    abstract member-signature operator ==(dynamic other) → dart.core::bool*;
+    abstract member-signature get hashCode() → dart.core::int*;
+    abstract member-signature method toString() → dart.core::String*;
+    abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic;
+    abstract member-signature get runtimeType() → dart.core::Type*;
   }
   class B extends dart.core::Object {
     synthetic constructor •() → lib1::B*
@@ -16,6 +26,16 @@
     method foo(dart.core::int* t) → dynamic {
       dart.core::print("foo int ${t}");
     }
+    abstract member-signature get _identityHashCode() → dart.core::int*;
+    abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfTrue(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfFalse(dynamic type) → dart.core::bool*;
+    abstract member-signature operator ==(dynamic other) → dart.core::bool*;
+    abstract member-signature get hashCode() → dart.core::int*;
+    abstract member-signature method toString() → dart.core::String*;
+    abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic;
+    abstract member-signature get runtimeType() → dart.core::Type*;
   }
 }
 library from "org-dartlang-test:///main.dart" as main {
diff --git a/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_15.yaml.world.2.expect b/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_15.yaml.world.2.expect
index 813c750..eea36df 100644
--- a/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_15.yaml.world.2.expect
+++ b/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_15.yaml.world.2.expect
@@ -8,6 +8,16 @@
     method foo(generic-covariant-impl lib1::A::T* t) → dynamic {
       dart.core::print("foo T ${t}");
     }
+    abstract member-signature get _identityHashCode() → dart.core::int*;
+    abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfTrue(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfFalse(dynamic type) → dart.core::bool*;
+    abstract member-signature operator ==(dynamic other) → dart.core::bool*;
+    abstract member-signature get hashCode() → dart.core::int*;
+    abstract member-signature method toString() → dart.core::String*;
+    abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic;
+    abstract member-signature get runtimeType() → dart.core::Type*;
   }
   class B extends dart.core::Object {
     synthetic constructor •() → lib1::B*
@@ -16,6 +26,16 @@
     method foo(dart.core::int* t) → dynamic {
       dart.core::print("foo int ${t}");
     }
+    abstract member-signature get _identityHashCode() → dart.core::int*;
+    abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfTrue(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfFalse(dynamic type) → dart.core::bool*;
+    abstract member-signature operator ==(dynamic other) → dart.core::bool*;
+    abstract member-signature get hashCode() → dart.core::int*;
+    abstract member-signature method toString() → dart.core::String*;
+    abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic;
+    abstract member-signature get runtimeType() → dart.core::Type*;
   }
 }
 library from "org-dartlang-test:///main.dart" as main {
diff --git a/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_16.yaml.world.1.expect b/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_16.yaml.world.1.expect
index e1e5ded..f1bed28 100644
--- a/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_16.yaml.world.1.expect
+++ b/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_16.yaml.world.1.expect
@@ -9,6 +9,16 @@
     abstract method method() → void;
     abstract get getter() → dart.core::bool*;
     abstract set setter(dart.core::bool* b) → void;
+    abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic;
+    abstract member-signature get _identityHashCode() → dart.core::int*;
+    abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfTrue(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfFalse(dynamic type) → dart.core::bool*;
+    abstract member-signature operator ==(dynamic other) → dart.core::bool*;
+    abstract member-signature get hashCode() → dart.core::int*;
+    abstract member-signature method toString() → dart.core::String*;
+    abstract member-signature get runtimeType() → dart.core::Type*;
   }
 }
 library from "org-dartlang-test:///main.dart" as main {
@@ -36,6 +46,15 @@
     method noSuchMethod(dart.core::Invocation* msg) → dynamic {
       dart.core::print("noSouchMethod!");
     }
+    abstract member-signature get _identityHashCode() → dart.core::int*;
+    abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfTrue(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfFalse(dynamic type) → dart.core::bool*;
+    abstract member-signature operator ==(dynamic other) → dart.core::bool*;
+    abstract member-signature get hashCode() → dart.core::int*;
+    abstract member-signature method toString() → dart.core::String*;
+    abstract member-signature get runtimeType() → dart.core::Type*;
     no-such-method-forwarder get /* from org-dartlang-test:///lib1.dart */ getter() → dart.core::bool*
       return this.{main::Foo2::noSuchMethod}(new dart.core::_InvocationMirror::_withType(#C1, 1, #C2, #C3, dart.core::Map::unmodifiable<dart.core::Symbol*, dynamic>(#C4))) as{TypeError,ForDynamic} dart.core::bool*;
     no-such-method-forwarder get /* from org-dartlang-test:///lib1.dart */ field() → dart.core::bool*
diff --git a/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_16.yaml.world.2.expect b/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_16.yaml.world.2.expect
index 1b65ff5..280d3dc 100644
--- a/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_16.yaml.world.2.expect
+++ b/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_16.yaml.world.2.expect
@@ -9,6 +9,16 @@
     abstract method method() → void;
     abstract get getter() → dart.core::bool*;
     abstract set setter(dart.core::bool* b) → void;
+    abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic;
+    abstract member-signature get _identityHashCode() → dart.core::int*;
+    abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfTrue(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfFalse(dynamic type) → dart.core::bool*;
+    abstract member-signature operator ==(dynamic other) → dart.core::bool*;
+    abstract member-signature get hashCode() → dart.core::int*;
+    abstract member-signature method toString() → dart.core::String*;
+    abstract member-signature get runtimeType() → dart.core::Type*;
   }
 }
 library from "org-dartlang-test:///main.dart" as main {
@@ -36,6 +46,15 @@
     method noSuchMethod(dart.core::Invocation* msg) → dynamic {
       dart.core::print("noSouchMethod!!");
     }
+    abstract member-signature get _identityHashCode() → dart.core::int*;
+    abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfTrue(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfFalse(dynamic type) → dart.core::bool*;
+    abstract member-signature operator ==(dynamic other) → dart.core::bool*;
+    abstract member-signature get hashCode() → dart.core::int*;
+    abstract member-signature method toString() → dart.core::String*;
+    abstract member-signature get runtimeType() → dart.core::Type*;
     no-such-method-forwarder get /* from org-dartlang-test:///lib1.dart */ getter() → dart.core::bool*
       return this.{main::Foo2::noSuchMethod}(new dart.core::_InvocationMirror::_withType(#C1, 1, #C2, #C3, dart.core::Map::unmodifiable<dart.core::Symbol*, dynamic>(#C4))) as{TypeError,ForDynamic} dart.core::bool*;
     no-such-method-forwarder get /* from org-dartlang-test:///lib1.dart */ field() → dart.core::bool*
diff --git a/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_19.yaml.world.1.expect b/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_19.yaml.world.1.expect
index 6c4e6ea..6feee5b 100644
--- a/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_19.yaml.world.1.expect
+++ b/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_19.yaml.world.1.expect
@@ -5,6 +5,16 @@
     synthetic constructor •() → main::A1*
       : super dart.core::Object::•()
       ;
+    abstract member-signature get _identityHashCode() → dart.core::int*;
+    abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfTrue(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfFalse(dynamic type) → dart.core::bool*;
+    abstract member-signature operator ==(dynamic other) → dart.core::bool*;
+    abstract member-signature get hashCode() → dart.core::int*;
+    abstract member-signature method toString() → dart.core::String*;
+    abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic;
+    abstract member-signature get runtimeType() → dart.core::Type*;
   }
   extension A2 on main::A1* {
     method method1 = main::A2|method1;
diff --git a/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_19.yaml.world.2.expect b/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_19.yaml.world.2.expect
index 6c4e6ea..6feee5b 100644
--- a/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_19.yaml.world.2.expect
+++ b/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_19.yaml.world.2.expect
@@ -5,6 +5,16 @@
     synthetic constructor •() → main::A1*
       : super dart.core::Object::•()
       ;
+    abstract member-signature get _identityHashCode() → dart.core::int*;
+    abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfTrue(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfFalse(dynamic type) → dart.core::bool*;
+    abstract member-signature operator ==(dynamic other) → dart.core::bool*;
+    abstract member-signature get hashCode() → dart.core::int*;
+    abstract member-signature method toString() → dart.core::String*;
+    abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic;
+    abstract member-signature get runtimeType() → dart.core::Type*;
   }
   extension A2 on main::A1* {
     method method1 = main::A2|method1;
diff --git a/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_2.yaml.world.1.expect b/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_2.yaml.world.1.expect
index 321e0eb..5553f25 100644
--- a/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_2.yaml.world.1.expect
+++ b/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_2.yaml.world.1.expect
@@ -20,6 +20,15 @@
     method toString() → dart.core::String* {
       return "${this.{main::Foo::message}}";
     }
+    abstract member-signature get _identityHashCode() → dart.core::int*;
+    abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfTrue(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfFalse(dynamic type) → dart.core::bool*;
+    abstract member-signature operator ==(dynamic other) → dart.core::bool*;
+    abstract member-signature get hashCode() → dart.core::int*;
+    abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic;
+    abstract member-signature get runtimeType() → dart.core::Type*;
   }
   class CompilationStrategy extends dart.core::Object /*isEnum*/  {
     final field dart.core::int* index;
@@ -34,6 +43,15 @@
       ;
     method toString() → dart.core::String*
       return this.{=main::CompilationStrategy::_name};
+    abstract member-signature get _identityHashCode() → dart.core::int*;
+    abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfTrue(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfFalse(dynamic type) → dart.core::bool*;
+    abstract member-signature operator ==(dynamic other) → dart.core::bool*;
+    abstract member-signature get hashCode() → dart.core::int*;
+    abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic;
+    abstract member-signature get runtimeType() → dart.core::Type*;
   }
   static method main() → dynamic {
     main::Foo* foo = new main::Foo::•("hello");
diff --git a/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_2.yaml.world.2.expect b/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_2.yaml.world.2.expect
index ad72d9d..1d37ca5 100644
--- a/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_2.yaml.world.2.expect
+++ b/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_2.yaml.world.2.expect
@@ -20,6 +20,15 @@
     method toString() → dart.core::String* {
       return "${this.{main::Foo::message}}!";
     }
+    abstract member-signature get _identityHashCode() → dart.core::int*;
+    abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfTrue(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfFalse(dynamic type) → dart.core::bool*;
+    abstract member-signature operator ==(dynamic other) → dart.core::bool*;
+    abstract member-signature get hashCode() → dart.core::int*;
+    abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic;
+    abstract member-signature get runtimeType() → dart.core::Type*;
   }
   class CompilationStrategy extends dart.core::Object /*isEnum*/  {
     final field dart.core::int* index;
@@ -34,6 +43,15 @@
       ;
     method toString() → dart.core::String*
       return this.{=main::CompilationStrategy::_name};
+    abstract member-signature get _identityHashCode() → dart.core::int*;
+    abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfTrue(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfFalse(dynamic type) → dart.core::bool*;
+    abstract member-signature operator ==(dynamic other) → dart.core::bool*;
+    abstract member-signature get hashCode() → dart.core::int*;
+    abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic;
+    abstract member-signature get runtimeType() → dart.core::Type*;
   }
   static method main() → dynamic {
     main::Foo* foo = new main::Foo::•("hello");
diff --git a/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_20.yaml.world.1.expect b/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_20.yaml.world.1.expect
index 5cf9e99..65bb3c8 100644
--- a/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_20.yaml.world.1.expect
+++ b/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_20.yaml.world.1.expect
@@ -5,6 +5,16 @@
     synthetic constructor •() → main::A1*
       : super dart.core::Object::•()
       ;
+    abstract member-signature get _identityHashCode() → dart.core::int*;
+    abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfTrue(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfFalse(dynamic type) → dart.core::bool*;
+    abstract member-signature operator ==(dynamic other) → dart.core::bool*;
+    abstract member-signature get hashCode() → dart.core::int*;
+    abstract member-signature method toString() → dart.core::String*;
+    abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic;
+    abstract member-signature get runtimeType() → dart.core::Type*;
   }
   extension _extension#0 on main::A1* {
     method method1 = main::_extension#0|method1;
diff --git a/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_20.yaml.world.2.expect b/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_20.yaml.world.2.expect
index 5cf9e99..65bb3c8 100644
--- a/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_20.yaml.world.2.expect
+++ b/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_20.yaml.world.2.expect
@@ -5,6 +5,16 @@
     synthetic constructor •() → main::A1*
       : super dart.core::Object::•()
       ;
+    abstract member-signature get _identityHashCode() → dart.core::int*;
+    abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfTrue(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfFalse(dynamic type) → dart.core::bool*;
+    abstract member-signature operator ==(dynamic other) → dart.core::bool*;
+    abstract member-signature get hashCode() → dart.core::int*;
+    abstract member-signature method toString() → dart.core::String*;
+    abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic;
+    abstract member-signature get runtimeType() → dart.core::Type*;
   }
   extension _extension#0 on main::A1* {
     method method1 = main::_extension#0|method1;
diff --git a/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_21.yaml.world.1.expect b/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_21.yaml.world.1.expect
index 54a6359..5de4695 100644
--- a/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_21.yaml.world.1.expect
+++ b/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_21.yaml.world.1.expect
@@ -28,9 +28,29 @@
   class A1#1 extends dart.core::Object {
     constructor foo2() → main::A1#1*
       : super dart.core::Object::•() {}
+    abstract member-signature get _identityHashCode() → dart.core::int*;
+    abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfTrue(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfFalse(dynamic type) → dart.core::bool*;
+    abstract member-signature operator ==(dynamic other) → dart.core::bool*;
+    abstract member-signature get hashCode() → dart.core::int*;
+    abstract member-signature method toString() → dart.core::String*;
+    abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic;
+    abstract member-signature get runtimeType() → dart.core::Type*;
   }
   class A1 extends dart.core::Object {
     constructor foo1() → main::A1*
       : super dart.core::Object::•() {}
+    abstract member-signature get _identityHashCode() → dart.core::int*;
+    abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfTrue(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfFalse(dynamic type) → dart.core::bool*;
+    abstract member-signature operator ==(dynamic other) → dart.core::bool*;
+    abstract member-signature get hashCode() → dart.core::int*;
+    abstract member-signature method toString() → dart.core::String*;
+    abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic;
+    abstract member-signature get runtimeType() → dart.core::Type*;
   }
 }
diff --git a/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_21.yaml.world.2.expect b/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_21.yaml.world.2.expect
index 54a6359..5de4695 100644
--- a/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_21.yaml.world.2.expect
+++ b/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_21.yaml.world.2.expect
@@ -28,9 +28,29 @@
   class A1#1 extends dart.core::Object {
     constructor foo2() → main::A1#1*
       : super dart.core::Object::•() {}
+    abstract member-signature get _identityHashCode() → dart.core::int*;
+    abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfTrue(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfFalse(dynamic type) → dart.core::bool*;
+    abstract member-signature operator ==(dynamic other) → dart.core::bool*;
+    abstract member-signature get hashCode() → dart.core::int*;
+    abstract member-signature method toString() → dart.core::String*;
+    abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic;
+    abstract member-signature get runtimeType() → dart.core::Type*;
   }
   class A1 extends dart.core::Object {
     constructor foo1() → main::A1*
       : super dart.core::Object::•() {}
+    abstract member-signature get _identityHashCode() → dart.core::int*;
+    abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfTrue(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfFalse(dynamic type) → dart.core::bool*;
+    abstract member-signature operator ==(dynamic other) → dart.core::bool*;
+    abstract member-signature get hashCode() → dart.core::int*;
+    abstract member-signature method toString() → dart.core::String*;
+    abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic;
+    abstract member-signature get runtimeType() → dart.core::Type*;
   }
 }
diff --git a/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_22.yaml.world.1.expect b/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_22.yaml.world.1.expect
index 4da97d9..664d638 100644
--- a/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_22.yaml.world.1.expect
+++ b/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_22.yaml.world.1.expect
@@ -7,15 +7,18 @@
     const synthetic constructor •() → main::_WithListMixin&Object&ListMixin*
       : super dart.core::Object::•()
       ;
-    get /* from org-dartlang-sdk:///sdk/lib/collection/list.dart */ iterator() → dart.core::Iterator<dart.core::int*>*
+    abstract member-signature get length() → dart.core::int*;
+    abstract member-signature operator [](dart.core::int* index) → dart.core::int*;
+    abstract member-signature operator []=(dart.core::int* index, generic-covariant-impl dart.core::int* value) → void;
+    get /*isNonNullableByDefault, from org-dartlang-sdk:///sdk_nnbd/lib/collection/list.dart */ iterator() → dart.core::Iterator<dart.core::int*>
       return new dart._internal::ListIterator::•<dart.core::int*>(this);
-    method /* from org-dartlang-sdk:///sdk/lib/collection/list.dart */ elementAt(dart.core::int* index) → dart.core::int*
+    method /*isNonNullableByDefault, from org-dartlang-sdk:///sdk_nnbd/lib/collection/list.dart */ elementAt(dart.core::int index) → dart.core::int*
       return this.{dart.core::List::[]}(index);
-    method /* from org-dartlang-sdk:///sdk/lib/collection/list.dart */ followedBy(generic-covariant-impl dart.core::Iterable<dart.core::int*>* other) → dart.core::Iterable<dart.core::int*>*
+    method /*isNonNullableByDefault, from org-dartlang-sdk:///sdk_nnbd/lib/collection/list.dart */ followedBy(generic-covariant-impl dart.core::Iterable<dart.core::int*> other) → dart.core::Iterable<dart.core::int*>
       return dart._internal::FollowedByIterable::firstEfficient<dart.core::int*>(this, other);
-    method /* from org-dartlang-sdk:///sdk/lib/collection/list.dart */ forEach((dart.core::int*) →* void action) → void {
-      dart.core::int* length = this.{dart.core::List::length};
-      for (dart.core::int* i = 0; i.{dart.core::num::<}(length); i = i.{dart.core::num::+}(1)) {
+    method /*isNonNullableByDefault, from org-dartlang-sdk:///sdk_nnbd/lib/collection/list.dart */ forEach((dart.core::int*) → void action) → void {
+      dart.core::int length = this.{dart.core::List::length};
+      for (dart.core::int i = 0; i.{dart.core::num::<}(length); i = i.{dart.core::num::+}(1)) {
         action.call(this.{dart.core::List::[]}(i));
         if(!length.{dart.core::num::==}(this.{dart.core::List::length})) {
           throw new dart.core::ConcurrentModificationError::•(this);
@@ -23,40 +26,13 @@
       }
     }
     @#C3
-    get /* from org-dartlang-sdk:///sdk/lib/collection/list.dart */ isEmpty() → dart.core::bool*
+    get /*isNonNullableByDefault, from org-dartlang-sdk:///sdk_nnbd/lib/collection/list.dart */ isEmpty() → dart.core::bool
       return this.{dart.core::List::length}.{dart.core::num::==}(0);
-    get /* from org-dartlang-sdk:///sdk/lib/collection/list.dart */ isNotEmpty() → dart.core::bool*
+    get /*isNonNullableByDefault, from org-dartlang-sdk:///sdk_nnbd/lib/collection/list.dart */ isNotEmpty() → dart.core::bool
       return !this.{dart.collection::ListMixin::isEmpty};
-    get /* from org-dartlang-sdk:///sdk/lib/collection/list.dart */ first() → dart.core::int* {
-      if(this.{dart.core::List::length}.{dart.core::num::==}(0))
-        throw dart._internal::IterableElementError::noElement();
-      return this.{dart.core::List::[]}(0);
-    }
-    set /* from org-dartlang-sdk:///sdk/lib/collection/list.dart */ first(generic-covariant-impl dart.core::int* value) → void {
-      if(this.{dart.core::List::length}.{dart.core::num::==}(0))
-        throw dart._internal::IterableElementError::noElement();
-      this.{dart.core::List::[]=}(0, value);
-    }
-    get /* from org-dartlang-sdk:///sdk/lib/collection/list.dart */ last() → dart.core::int* {
-      if(this.{dart.core::List::length}.{dart.core::num::==}(0))
-        throw dart._internal::IterableElementError::noElement();
-      return this.{dart.core::List::[]}(this.{dart.core::List::length}.{dart.core::num::-}(1));
-    }
-    set /* from org-dartlang-sdk:///sdk/lib/collection/list.dart */ last(generic-covariant-impl dart.core::int* value) → void {
-      if(this.{dart.core::List::length}.{dart.core::num::==}(0))
-        throw dart._internal::IterableElementError::noElement();
-      this.{dart.core::List::[]=}(this.{dart.core::List::length}.{dart.core::num::-}(1), value);
-    }
-    get /* from org-dartlang-sdk:///sdk/lib/collection/list.dart */ single() → dart.core::int* {
-      if(this.{dart.core::List::length}.{dart.core::num::==}(0))
-        throw dart._internal::IterableElementError::noElement();
-      if(this.{dart.core::List::length}.{dart.core::num::>}(1))
-        throw dart._internal::IterableElementError::tooMany();
-      return this.{dart.core::List::[]}(0);
-    }
-    method /* from org-dartlang-sdk:///sdk/lib/collection/list.dart */ contains(dart.core::Object* element) → dart.core::bool* {
-      dart.core::int* length = this.{dart.core::List::length};
-      for (dart.core::int* i = 0; i.{dart.core::num::<}(length); i = i.{dart.core::num::+}(1)) {
+    method /*isNonNullableByDefault, from org-dartlang-sdk:///sdk_nnbd/lib/collection/list.dart */ contains(dart.core::Object? element) → dart.core::bool {
+      dart.core::int length = this.{dart.core::List::length};
+      for (dart.core::int i = 0; i.{dart.core::num::<}(length); i = i.{dart.core::num::+}(1)) {
         if(this.{dart.core::List::[]}(i).{dart.core::Object::==}(element))
           return true;
         if(!length.{dart.core::num::==}(this.{dart.core::List::length})) {
@@ -65,9 +41,9 @@
       }
       return false;
     }
-    method /* from org-dartlang-sdk:///sdk/lib/collection/list.dart */ every((dart.core::int*) →* dart.core::bool* test) → dart.core::bool* {
-      dart.core::int* length = this.{dart.core::List::length};
-      for (dart.core::int* i = 0; i.{dart.core::num::<}(length); i = i.{dart.core::num::+}(1)) {
+    method /*isNonNullableByDefault, from org-dartlang-sdk:///sdk_nnbd/lib/collection/list.dart */ every((dart.core::int*) → dart.core::bool test) → dart.core::bool {
+      dart.core::int length = this.{dart.core::List::length};
+      for (dart.core::int i = 0; i.{dart.core::num::<}(length); i = i.{dart.core::num::+}(1)) {
         if(!test.call(this.{dart.core::List::[]}(i)))
           return false;
         if(!length.{dart.core::num::==}(this.{dart.core::List::length})) {
@@ -76,9 +52,9 @@
       }
       return true;
     }
-    method /* from org-dartlang-sdk:///sdk/lib/collection/list.dart */ any((dart.core::int*) →* dart.core::bool* test) → dart.core::bool* {
-      dart.core::int* length = this.{dart.core::List::length};
-      for (dart.core::int* i = 0; i.{dart.core::num::<}(length); i = i.{dart.core::num::+}(1)) {
+    method /*isNonNullableByDefault, from org-dartlang-sdk:///sdk_nnbd/lib/collection/list.dart */ any((dart.core::int*) → dart.core::bool test) → dart.core::bool {
+      dart.core::int length = this.{dart.core::List::length};
+      for (dart.core::int i = 0; i.{dart.core::num::<}(length); i = i.{dart.core::num::+}(1)) {
         if(test.call(this.{dart.core::List::[]}(i)))
           return true;
         if(!length.{dart.core::num::==}(this.{dart.core::List::length})) {
@@ -87,9 +63,9 @@
       }
       return false;
     }
-    method /* from org-dartlang-sdk:///sdk/lib/collection/list.dart */ firstWhere((dart.core::int*) →* dart.core::bool* test, {generic-covariant-impl () →* dart.core::int* orElse = #C2}) → dart.core::int* {
-      dart.core::int* length = this.{dart.core::List::length};
-      for (dart.core::int* i = 0; i.{dart.core::num::<}(length); i = i.{dart.core::num::+}(1)) {
+    method /*isNonNullableByDefault, from org-dartlang-sdk:///sdk_nnbd/lib/collection/list.dart */ firstWhere((dart.core::int*) → dart.core::bool test, {generic-covariant-impl () →? dart.core::int* orElse = #C2}) → dart.core::int* {
+      dart.core::int length = this.{dart.core::List::length};
+      for (dart.core::int i = 0; i.{dart.core::num::<}(length); i = i.{dart.core::num::+}(1)) {
         dart.core::int* element = this.{dart.core::List::[]}(i);
         if(test.call(element))
           return element;
@@ -98,12 +74,12 @@
         }
       }
       if(!orElse.{dart.core::Object::==}(null))
-        return orElse.call();
+        return orElse{() → dart.core::int*}.call();
       throw dart._internal::IterableElementError::noElement();
     }
-    method /* from org-dartlang-sdk:///sdk/lib/collection/list.dart */ lastWhere((dart.core::int*) →* dart.core::bool* test, {generic-covariant-impl () →* dart.core::int* orElse = #C2}) → dart.core::int* {
-      dart.core::int* length = this.{dart.core::List::length};
-      for (dart.core::int* i = length.{dart.core::num::-}(1); i.{dart.core::num::>=}(0); i = i.{dart.core::num::-}(1)) {
+    method /*isNonNullableByDefault, from org-dartlang-sdk:///sdk_nnbd/lib/collection/list.dart */ lastWhere((dart.core::int*) → dart.core::bool test, {generic-covariant-impl () →? dart.core::int* orElse = #C2}) → dart.core::int* {
+      dart.core::int length = this.{dart.core::List::length};
+      for (dart.core::int i = length.{dart.core::num::-}(1); i.{dart.core::num::>=}(0); i = i.{dart.core::num::-}(1)) {
         dart.core::int* element = this.{dart.core::List::[]}(i);
         if(test.call(element))
           return element;
@@ -112,14 +88,14 @@
         }
       }
       if(!orElse.{dart.core::Object::==}(null))
-        return orElse.call();
+        return orElse{() → dart.core::int*}.call();
       throw dart._internal::IterableElementError::noElement();
     }
-    method /* from org-dartlang-sdk:///sdk/lib/collection/list.dart */ singleWhere((dart.core::int*) →* dart.core::bool* test, {generic-covariant-impl () →* dart.core::int* orElse = #C2}) → dart.core::int* {
-      dart.core::int* length = this.{dart.core::List::length};
-      dart.core::int* match;
-      dart.core::bool* matchFound = false;
-      for (dart.core::int* i = 0; i.{dart.core::num::<}(length); i = i.{dart.core::num::+}(1)) {
+    method /*isNonNullableByDefault, from org-dartlang-sdk:///sdk_nnbd/lib/collection/list.dart */ singleWhere((dart.core::int*) → dart.core::bool test, {generic-covariant-impl () →? dart.core::int* orElse = #C2}) → dart.core::int* {
+      dart.core::int length = this.{dart.core::List::length};
+      late dart.core::int* match;
+      dart.core::bool matchFound = false;
+      for (dart.core::int i = 0; i.{dart.core::num::<}(length); i = i.{dart.core::num::+}(1)) {
         dart.core::int* element = this.{dart.core::List::[]}(i);
         if(test.call(element)) {
           if(matchFound) {
@@ -135,29 +111,29 @@
       if(matchFound)
         return match;
       if(!orElse.{dart.core::Object::==}(null))
-        return orElse.call();
+        return orElse{() → dart.core::int*}.call();
       throw dart._internal::IterableElementError::noElement();
     }
-    method /* from org-dartlang-sdk:///sdk/lib/collection/list.dart */ join([dart.core::String* separator = #C4]) → dart.core::String* {
+    method /*isNonNullableByDefault, from org-dartlang-sdk:///sdk_nnbd/lib/collection/list.dart */ join([dart.core::String separator = #C4]) → dart.core::String {
       if(this.{dart.core::List::length}.{dart.core::num::==}(0))
         return "";
-      dart.core::StringBuffer* buffer = let final dart.core::StringBuffer* #t1 = new dart.core::StringBuffer::•() in let final void #t2 = #t1.{dart.core::StringBuffer::writeAll}(this, separator) in #t1;
+      dart.core::StringBuffer buffer = let final dart.core::StringBuffer #t1 = new dart.core::StringBuffer::•() in let final void #t2 = #t1.{dart.core::StringBuffer::writeAll}(this, separator) in #t1;
       return buffer.{dart.core::StringBuffer::toString}();
     }
-    method /* from org-dartlang-sdk:///sdk/lib/collection/list.dart */ where((dart.core::int*) →* dart.core::bool* test) → dart.core::Iterable<dart.core::int*>*
+    method /*isNonNullableByDefault, from org-dartlang-sdk:///sdk_nnbd/lib/collection/list.dart */ where((dart.core::int*) → dart.core::bool test) → dart.core::Iterable<dart.core::int*>
       return new dart._internal::WhereIterable::•<dart.core::int*>(this, test);
-    method /* from org-dartlang-sdk:///sdk/lib/collection/list.dart */ whereType<T extends dart.core::Object* = dynamic>() → dart.core::Iterable<main::_WithListMixin&Object&ListMixin::whereType::T*>*
-      return new dart._internal::WhereTypeIterable::•<main::_WithListMixin&Object&ListMixin::whereType::T*>(this);
-    method /* from org-dartlang-sdk:///sdk/lib/collection/list.dart */ map<T extends dart.core::Object* = dynamic>((dart.core::int*) →* main::_WithListMixin&Object&ListMixin::map::T* f) → dart.core::Iterable<main::_WithListMixin&Object&ListMixin::map::T*>*
-      return new dart._internal::MappedListIterable::•<dart.core::int*, main::_WithListMixin&Object&ListMixin::map::T*>(this, f);
-    method /* from org-dartlang-sdk:///sdk/lib/collection/list.dart */ expand<T extends dart.core::Object* = dynamic>((dart.core::int*) →* dart.core::Iterable<main::_WithListMixin&Object&ListMixin::expand::T*>* f) → dart.core::Iterable<main::_WithListMixin&Object&ListMixin::expand::T*>*
-      return new dart._internal::ExpandIterable::•<dart.core::int*, main::_WithListMixin&Object&ListMixin::expand::T*>(this, f);
-    method /* from org-dartlang-sdk:///sdk/lib/collection/list.dart */ reduce(generic-covariant-impl (dart.core::int*, dart.core::int*) →* dart.core::int* combine) → dart.core::int* {
-      dart.core::int* length = this.{dart.core::List::length};
+    method /*isNonNullableByDefault, from org-dartlang-sdk:///sdk_nnbd/lib/collection/list.dart */ whereType<T extends dart.core::Object? = dynamic>() → dart.core::Iterable<main::_WithListMixin&Object&ListMixin::whereType::T%>
+      return new dart._internal::WhereTypeIterable::•<main::_WithListMixin&Object&ListMixin::whereType::T%>(this);
+    method /*isNonNullableByDefault, from org-dartlang-sdk:///sdk_nnbd/lib/collection/list.dart */ map<T extends dart.core::Object? = dynamic>((dart.core::int*) → main::_WithListMixin&Object&ListMixin::map::T% f) → dart.core::Iterable<main::_WithListMixin&Object&ListMixin::map::T%>
+      return new dart._internal::MappedListIterable::•<dart.core::int*, main::_WithListMixin&Object&ListMixin::map::T%>(this, f);
+    method /*isNonNullableByDefault, from org-dartlang-sdk:///sdk_nnbd/lib/collection/list.dart */ expand<T extends dart.core::Object? = dynamic>((dart.core::int*) → dart.core::Iterable<main::_WithListMixin&Object&ListMixin::expand::T%> f) → dart.core::Iterable<main::_WithListMixin&Object&ListMixin::expand::T%>
+      return new dart._internal::ExpandIterable::•<dart.core::int*, main::_WithListMixin&Object&ListMixin::expand::T%>(this, f);
+    method /*isNonNullableByDefault, from org-dartlang-sdk:///sdk_nnbd/lib/collection/list.dart */ reduce(generic-covariant-impl (dart.core::int*, dart.core::int*) → dart.core::int* combine) → dart.core::int* {
+      dart.core::int length = this.{dart.core::List::length};
       if(length.{dart.core::num::==}(0))
         throw dart._internal::IterableElementError::noElement();
       dart.core::int* value = this.{dart.core::List::[]}(0);
-      for (dart.core::int* i = 1; i.{dart.core::num::<}(length); i = i.{dart.core::num::+}(1)) {
+      for (dart.core::int i = 1; i.{dart.core::num::<}(length); i = i.{dart.core::num::+}(1)) {
         value = combine.call(value, this.{dart.core::List::[]}(i));
         if(!length.{dart.core::num::==}(this.{dart.core::List::length})) {
           throw new dart.core::ConcurrentModificationError::•(this);
@@ -165,10 +141,10 @@
       }
       return value;
     }
-    method /* from org-dartlang-sdk:///sdk/lib/collection/list.dart */ fold<T extends dart.core::Object* = dynamic>(main::_WithListMixin&Object&ListMixin::fold::T* initialValue, (main::_WithListMixin&Object&ListMixin::fold::T*, dart.core::int*) →* main::_WithListMixin&Object&ListMixin::fold::T* combine) → main::_WithListMixin&Object&ListMixin::fold::T* {
-      main::_WithListMixin&Object&ListMixin::fold::T* value = initialValue;
-      dart.core::int* length = this.{dart.core::List::length};
-      for (dart.core::int* i = 0; i.{dart.core::num::<}(length); i = i.{dart.core::num::+}(1)) {
+    method /*isNonNullableByDefault, from org-dartlang-sdk:///sdk_nnbd/lib/collection/list.dart */ fold<T extends dart.core::Object? = dynamic>(main::_WithListMixin&Object&ListMixin::fold::T% initialValue, (main::_WithListMixin&Object&ListMixin::fold::T%, dart.core::int*) → main::_WithListMixin&Object&ListMixin::fold::T% combine) → main::_WithListMixin&Object&ListMixin::fold::T% {
+      main::_WithListMixin&Object&ListMixin::fold::T% value = initialValue;
+      dart.core::int length = this.{dart.core::List::length};
+      for (dart.core::int i = 0; i.{dart.core::num::<}(length); i = i.{dart.core::num::+}(1)) {
         value = combine.call(value, this.{dart.core::List::[]}(i));
         if(!length.{dart.core::num::==}(this.{dart.core::List::length})) {
           throw new dart.core::ConcurrentModificationError::•(this);
@@ -176,56 +152,49 @@
       }
       return value;
     }
-    method /* from org-dartlang-sdk:///sdk/lib/collection/list.dart */ skip(dart.core::int* count) → dart.core::Iterable<dart.core::int*>*
+    method /*isNonNullableByDefault, from org-dartlang-sdk:///sdk_nnbd/lib/collection/list.dart */ skip(dart.core::int count) → dart.core::Iterable<dart.core::int*>
       return new dart._internal::SubListIterable::•<dart.core::int*>(this, count, null);
-    method /* from org-dartlang-sdk:///sdk/lib/collection/list.dart */ skipWhile((dart.core::int*) →* dart.core::bool* test) → dart.core::Iterable<dart.core::int*>* {
+    method /*isNonNullableByDefault, from org-dartlang-sdk:///sdk_nnbd/lib/collection/list.dart */ skipWhile((dart.core::int*) → dart.core::bool test) → dart.core::Iterable<dart.core::int*> {
       return new dart._internal::SkipWhileIterable::•<dart.core::int*>(this, test);
     }
-    method /* from org-dartlang-sdk:///sdk/lib/collection/list.dart */ take(dart.core::int* count) → dart.core::Iterable<dart.core::int*>*
+    method /*isNonNullableByDefault, from org-dartlang-sdk:///sdk_nnbd/lib/collection/list.dart */ take(dart.core::int count) → dart.core::Iterable<dart.core::int*>
       return new dart._internal::SubListIterable::•<dart.core::int*>(this, 0, count);
-    method /* from org-dartlang-sdk:///sdk/lib/collection/list.dart */ takeWhile((dart.core::int*) →* dart.core::bool* test) → dart.core::Iterable<dart.core::int*>* {
+    method /*isNonNullableByDefault, from org-dartlang-sdk:///sdk_nnbd/lib/collection/list.dart */ takeWhile((dart.core::int*) → dart.core::bool test) → dart.core::Iterable<dart.core::int*> {
       return new dart._internal::TakeWhileIterable::•<dart.core::int*>(this, test);
     }
-    method /* from org-dartlang-sdk:///sdk/lib/collection/list.dart */ toList({dart.core::bool* growable = #C5}) → dart.core::List<dart.core::int*>* {
-      dart.core::List<dart.core::int*>* result;
-      if(growable) {
-        result = let final dart.core::List<dart.core::int*>* #t3 = <dart.core::int*>[] in let final void #t4 = #t3.{dart.core::List::length} = this.{dart.core::List::length} in #t3;
-      }
-      else {
-        result = dart.core::_List::•<dart.core::int*>(this.{dart.core::List::length});
-      }
-      for (dart.core::int* i = 0; i.{dart.core::num::<}(this.{dart.core::List::length}); i = i.{dart.core::num::+}(1)) {
+    method /*isNonNullableByDefault, from org-dartlang-sdk:///sdk_nnbd/lib/collection/list.dart */ toList({dart.core::bool growable = #C5}) → dart.core::List<dart.core::int*> {
+      if(this.{dart.collection::ListMixin::isEmpty})
+        return dart.core::List::empty<dart.core::int*>(growable: growable);
+      dart.core::int* first = this.{dart.core::List::[]}(0);
+      dart.core::List<dart.core::int*> result = dart.core::List::filled<dart.core::int*>(this.{dart.core::List::length}, first, growable: growable);
+      for (dart.core::int i = 1; i.{dart.core::num::<}(this.{dart.core::List::length}); i = i.{dart.core::num::+}(1)) {
         result.{dart.core::List::[]=}(i, this.{dart.core::List::[]}(i));
       }
       return result;
     }
-    method /* from org-dartlang-sdk:///sdk/lib/collection/list.dart */ toSet() → dart.core::Set<dart.core::int*>* {
-      dart.core::Set<dart.core::int*>* result = dart.collection::LinkedHashSet::•<dart.core::int*>();
-      for (dart.core::int* i = 0; i.{dart.core::num::<}(this.{dart.core::List::length}); i = i.{dart.core::num::+}(1)) {
+    method /*isNonNullableByDefault, from org-dartlang-sdk:///sdk_nnbd/lib/collection/list.dart */ toSet() → dart.core::Set<dart.core::int*> {
+      dart.core::Set<dart.core::int*> result = dart.collection::LinkedHashSet::•<dart.core::int*>();
+      for (dart.core::int i = 0; i.{dart.core::num::<}(this.{dart.core::List::length}); i = i.{dart.core::num::+}(1)) {
         result.{dart.core::Set::add}(this.{dart.core::List::[]}(i));
       }
       return result;
     }
-    method /* from org-dartlang-sdk:///sdk/lib/collection/list.dart */ add(generic-covariant-impl dart.core::int* element) → void {
-      this.{dart.core::List::[]=}(let final dart.core::int* #t5 = this.{dart.core::List::length} in let final dart.core::int* #t6 = this.{dart.core::List::length} = #t5.{dart.core::num::+}(1) in #t5, element);
-    }
-    method /* from org-dartlang-sdk:///sdk/lib/collection/list.dart */ addAll(generic-covariant-impl dart.core::Iterable<dart.core::int*>* iterable) → void {
-      dart.core::int* i = this.{dart.core::List::length};
+    method /*isNonNullableByDefault, from org-dartlang-sdk:///sdk_nnbd/lib/collection/list.dart */ addAll(generic-covariant-impl dart.core::Iterable<dart.core::int*> iterable) → void {
+      dart.core::int i = this.{dart.core::List::length};
       {
-        dart.core::Iterator<dart.core::int*>* :sync-for-iterator = iterable.{dart.core::Iterable::iterator};
+        dart.core::Iterator<dart.core::int*> :sync-for-iterator = iterable.{dart.core::Iterable::iterator};
         for (; :sync-for-iterator.{dart.core::Iterator::moveNext}(); ) {
           dart.core::int* element = :sync-for-iterator.{dart.core::Iterator::current};
           {
             assert(this.{dart.core::List::length}.{dart.core::num::==}(i) || (throw new dart.core::ConcurrentModificationError::•(this)));
-            this.{dart.core::List::length} = i.{dart.core::num::+}(1);
-            this.{dart.core::List::[]=}(i, element);
+            this.{dart.collection::ListMixin::add}(element);
             i = i.{dart.core::num::+}(1);
           }
         }
       }
     }
-    method /* from org-dartlang-sdk:///sdk/lib/collection/list.dart */ remove(dart.core::Object* element) → dart.core::bool* {
-      for (dart.core::int* i = 0; i.{dart.core::num::<}(this.{dart.core::List::length}); i = i.{dart.core::num::+}(1)) {
+    method /*isNonNullableByDefault, from org-dartlang-sdk:///sdk_nnbd/lib/collection/list.dart */ remove(dart.core::Object? element) → dart.core::bool {
+      for (dart.core::int i = 0; i.{dart.core::num::<}(this.{dart.core::List::length}); i = i.{dart.core::num::+}(1)) {
         if(this.{dart.core::List::[]}(i).{dart.core::Object::==}(element)) {
           this.{dart.collection::ListMixin::_closeGap}(i, i.{dart.core::num::+}(1));
           return true;
@@ -233,27 +202,27 @@
       }
       return false;
     }
-    method /* from org-dartlang-sdk:///sdk/lib/collection/list.dart */ _closeGap(dart.core::int* start, dart.core::int* end) → void {
-      dart.core::int* length = this.{dart.core::List::length};
+    method /*isNonNullableByDefault, from org-dartlang-sdk:///sdk_nnbd/lib/collection/list.dart */ _closeGap(dart.core::int start, dart.core::int end) → void {
+      dart.core::int length = this.{dart.core::List::length};
       assert(0.{dart.core::num::<=}(start));
       assert(start.{dart.core::num::<}(end));
       assert(end.{dart.core::num::<=}(length));
-      dart.core::int* size = end.{dart.core::num::-}(start);
-      for (dart.core::int* i = end; i.{dart.core::num::<}(length); i = i.{dart.core::num::+}(1)) {
+      dart.core::int size = end.{dart.core::num::-}(start);
+      for (dart.core::int i = end; i.{dart.core::num::<}(length); i = i.{dart.core::num::+}(1)) {
         this.{dart.core::List::[]=}(i.{dart.core::num::-}(size), this.{dart.core::List::[]}(i));
       }
       this.{dart.core::List::length} = length.{dart.core::num::-}(size);
     }
-    method /* from org-dartlang-sdk:///sdk/lib/collection/list.dart */ removeWhere((dart.core::int*) →* dart.core::bool* test) → void {
+    method /*isNonNullableByDefault, from org-dartlang-sdk:///sdk_nnbd/lib/collection/list.dart */ removeWhere((dart.core::int*) → dart.core::bool test) → void {
       this.{dart.collection::ListMixin::_filter}(test, false);
     }
-    method /* from org-dartlang-sdk:///sdk/lib/collection/list.dart */ retainWhere((dart.core::int*) →* dart.core::bool* test) → void {
+    method /*isNonNullableByDefault, from org-dartlang-sdk:///sdk_nnbd/lib/collection/list.dart */ retainWhere((dart.core::int*) → dart.core::bool test) → void {
       this.{dart.collection::ListMixin::_filter}(test, true);
     }
-    method /* from org-dartlang-sdk:///sdk/lib/collection/list.dart */ _filter((dart.core::int*) →* dart.core::bool* test, dart.core::bool* retainMatching) → void {
-      dart.core::List<dart.core::int*>* retained = <dart.core::int*>[];
-      dart.core::int* length = this.{dart.core::List::length};
-      for (dart.core::int* i = 0; i.{dart.core::num::<}(length); i = i.{dart.core::num::+}(1)) {
+    method /*isNonNullableByDefault, from org-dartlang-sdk:///sdk_nnbd/lib/collection/list.dart */ _filter((dart.core::int*) → dart.core::bool test, dart.core::bool retainMatching) → void {
+      dart.core::List<dart.core::int*> retained = <dart.core::int*>[];
+      dart.core::int length = this.{dart.core::List::length};
+      for (dart.core::int i = 0; i.{dart.core::num::<}(length); i = i.{dart.core::num::+}(1)) {
         dart.core::int* element = this.{dart.core::List::[]}(i);
         if(test.call(element).{dart.core::Object::==}(retainMatching)) {
           retained.{dart.core::List::add}(element);
@@ -267,82 +236,80 @@
         this.{dart.core::List::length} = retained.{dart.core::List::length};
       }
     }
-    method /* from org-dartlang-sdk:///sdk/lib/collection/list.dart */ clear() → void {
-      this.{dart.core::List::length} = 0;
+    method /*isNonNullableByDefault, from org-dartlang-sdk:///sdk_nnbd/lib/collection/list.dart */ cast<R extends dart.core::Object? = dynamic>() → dart.core::List<main::_WithListMixin&Object&ListMixin::cast::R%>
+      return dart.core::List::castFrom<dart.core::int*, main::_WithListMixin&Object&ListMixin::cast::R%>(this);
+    method /*isNonNullableByDefault, from org-dartlang-sdk:///sdk_nnbd/lib/collection/list.dart */ sort([(dart.core::int*, dart.core::int*) →? dart.core::int compare = #C2]) → void {
+      dart._internal::Sort::sort<dart.core::int*>(this, let final (dart.core::int*, dart.core::int*) →? dart.core::int #t3 = compare in #t3.{dart.core::Object::==}(null) ?{(dart.core::int*, dart.core::int*) → dart.core::int} #C6 : #t3{(dart.core::int*, dart.core::int*) → dart.core::int});
     }
-    method /* from org-dartlang-sdk:///sdk/lib/collection/list.dart */ cast<R extends dart.core::Object* = dynamic>() → dart.core::List<main::_WithListMixin&Object&ListMixin::cast::R*>*
-      return dart.core::List::castFrom<dart.core::int*, main::_WithListMixin&Object&ListMixin::cast::R*>(this);
-    method /* from org-dartlang-sdk:///sdk/lib/collection/list.dart */ removeLast() → dart.core::int* {
-      if(this.{dart.core::List::length}.{dart.core::num::==}(0)) {
-        throw dart._internal::IterableElementError::noElement();
-      }
-      dart.core::int* result = this.{dart.core::List::[]}(this.{dart.core::List::length}.{dart.core::num::-}(1));
-      this.{dart.core::List::length} = this.{dart.core::List::length}.{dart.core::num::-}(1);
-      return result;
-    }
-    method /* from org-dartlang-sdk:///sdk/lib/collection/list.dart */ sort([(dart.core::int*, dart.core::int*) →* dart.core::int* compare = #C2]) → void {
-      dart._internal::Sort::sort<dart.core::int*>(this, let final (dart.core::int*, dart.core::int*) →* dart.core::int* #t7 = compare in #t7.{dart.core::Object::==}(null) ?{(dart.core::int*, dart.core::int*) →* dart.core::int*} #C6 : #t7);
-    }
-    static method /* from org-dartlang-sdk:///sdk/lib/collection/list.dart */ _compareAny(dynamic a, dynamic b) → dart.core::int* {
-      return dart.core::Comparable::compare(a as{TypeError,ForDynamic} dart.core::Comparable<dynamic>*, b as{TypeError,ForDynamic} dart.core::Comparable<dynamic>*);
-    }
-    method /* from org-dartlang-sdk:///sdk/lib/collection/list.dart */ shuffle([dart.math::Random* random = #C2]) → void {
-      random.{dart.core::Object::==}(null) ?{dart.math::Random*} random = dart.math::Random::•() : null;
-      dart.core::int* length = this.{dart.core::List::length};
+    method /*isNonNullableByDefault, from org-dartlang-sdk:///sdk_nnbd/lib/collection/list.dart */ shuffle([dart.math::Random? random = #C2]) → void {
+      random.{dart.core::Object::==}(null) ?{dart.math::Random} random = dart.math::Random::•() : null;
+      if(random{dart.math::Random}.{dart.core::Object::==}(null))
+        throw "!";
+      dart.core::int length = this.{dart.core::List::length};
       while (length.{dart.core::num::>}(1)) {
-        dart.core::int* pos = random.{dart.math::Random::nextInt}(length);
+        dart.core::int pos = random{dart.math::Random}.{dart.math::Random::nextInt}(length);
         length = length.{dart.core::num::-}(1);
         dart.core::int* tmp = this.{dart.core::List::[]}(length);
         this.{dart.core::List::[]=}(length, this.{dart.core::List::[]}(pos));
         this.{dart.core::List::[]=}(pos, tmp);
       }
     }
-    method /* from org-dartlang-sdk:///sdk/lib/collection/list.dart */ asMap() → dart.core::Map<dart.core::int*, dart.core::int*>* {
+    method /*isNonNullableByDefault, from org-dartlang-sdk:///sdk_nnbd/lib/collection/list.dart */ asMap() → dart.core::Map<dart.core::int, dart.core::int*> {
       return new dart._internal::ListMapView::•<dart.core::int*>(this);
     }
-    operator /* from org-dartlang-sdk:///sdk/lib/collection/list.dart */ +(generic-covariant-impl dart.core::List<dart.core::int*>* other) → dart.core::List<dart.core::int*>* {
-      dart.core::List<dart.core::int*>* result = let final dart.core::List<dart.core::int*>* #t8 = <dart.core::int*>[] in let final void #t9 = #t8.{dart.core::List::length} = this.{dart.core::List::length}.{dart.core::num::+}(other.{dart.core::List::length}) in #t8;
-      result.{dart.core::List::setRange}(0, this.{dart.core::List::length}, this);
-      result.{dart.core::List::setRange}(this.{dart.core::List::length}, result.{dart.core::List::length}, other);
-      return result;
+    operator /*isNonNullableByDefault, from org-dartlang-sdk:///sdk_nnbd/lib/collection/list.dart */ +(generic-covariant-impl dart.core::List<dart.core::int*> other) → dart.core::List<dart.core::int*>
+      return block {
+        final dart.core::List<dart.core::int*> #t4 = <dart.core::int*>[];
+        {
+          dart.core::Iterator<dart.core::int*> :sync-for-iterator = this.{dart.core::Iterable::iterator};
+          for (; :sync-for-iterator.{dart.core::Iterator::moveNext}(); ) {
+            final dart.core::int* #t5 = :sync-for-iterator.{dart.core::Iterator::current};
+            #t4.{dart.core::List::add}(#t5);
+          }
+        }
+        {
+          dart.core::Iterator<dart.core::int*> :sync-for-iterator = other.{dart.core::Iterable::iterator};
+          for (; :sync-for-iterator.{dart.core::Iterator::moveNext}(); ) {
+            final dart.core::int* #t6 = :sync-for-iterator.{dart.core::Iterator::current};
+            #t4.{dart.core::List::add}(#t6);
+          }
+        }
+      } =>#t4;
+    method /*isNonNullableByDefault, from org-dartlang-sdk:///sdk_nnbd/lib/collection/list.dart */ sublist(dart.core::int start, [dart.core::int? end = #C2]) → dart.core::List<dart.core::int*> {
+      dart.core::int listLength = this.{dart.core::List::length};
+      end.{dart.core::num::==}(null) ?{dart.core::int} end = listLength : null;
+      if(end{dart.core::int}.{dart.core::num::==}(null))
+        throw "!";
+      dart.core::RangeError::checkValidRange(start, end{dart.core::int}, listLength);
+      return dart.core::List::from<dart.core::int*>(this.{dart.collection::ListMixin::getRange}(start, end{dart.core::int}));
     }
-    method /* from org-dartlang-sdk:///sdk/lib/collection/list.dart */ sublist(dart.core::int* start, [dart.core::int* end = #C2]) → dart.core::List<dart.core::int*>* {
-      dart.core::int* listLength = this.{dart.core::List::length};
-      end.{dart.core::num::==}(null) ?{dart.core::int*} end = listLength : null;
-      dart.core::RangeError::checkValidRange(start, end, listLength);
-      dart.core::int* length = end.{dart.core::num::-}(start);
-      dart.core::List<dart.core::int*>* result = let final dart.core::List<dart.core::int*>* #t10 = <dart.core::int*>[] in let final void #t11 = #t10.{dart.core::List::length} = length in #t10;
-      for (dart.core::int* i = 0; i.{dart.core::num::<}(length); i = i.{dart.core::num::+}(1)) {
-        result.{dart.core::List::[]=}(i, this.{dart.core::List::[]}(start.{dart.core::num::+}(i)));
-      }
-      return result;
-    }
-    method /* from org-dartlang-sdk:///sdk/lib/collection/list.dart */ getRange(dart.core::int* start, dart.core::int* end) → dart.core::Iterable<dart.core::int*>* {
+    method /*isNonNullableByDefault, from org-dartlang-sdk:///sdk_nnbd/lib/collection/list.dart */ getRange(dart.core::int start, dart.core::int end) → dart.core::Iterable<dart.core::int*> {
       dart.core::RangeError::checkValidRange(start, end, this.{dart.core::List::length});
       return new dart._internal::SubListIterable::•<dart.core::int*>(this, start, end);
     }
-    method /* from org-dartlang-sdk:///sdk/lib/collection/list.dart */ removeRange(dart.core::int* start, dart.core::int* end) → void {
+    method /*isNonNullableByDefault, from org-dartlang-sdk:///sdk_nnbd/lib/collection/list.dart */ removeRange(dart.core::int start, dart.core::int end) → void {
       dart.core::RangeError::checkValidRange(start, end, this.{dart.core::List::length});
       if(end.{dart.core::num::>}(start)) {
         this.{dart.collection::ListMixin::_closeGap}(start, end);
       }
     }
-    method /* from org-dartlang-sdk:///sdk/lib/collection/list.dart */ fillRange(dart.core::int* start, dart.core::int* end, [generic-covariant-impl dart.core::int* fill = #C2]) → void {
+    method /*isNonNullableByDefault, from org-dartlang-sdk:///sdk_nnbd/lib/collection/list.dart */ fillRange(dart.core::int start, dart.core::int end, [generic-covariant-impl dart.core::int? fill = #C2]) → void {
+      dart.core::int* value = fill as{ForNonNullableByDefault} dart.core::int*;
       dart.core::RangeError::checkValidRange(start, end, this.{dart.core::List::length});
-      for (dart.core::int* i = start; i.{dart.core::num::<}(end); i = i.{dart.core::num::+}(1)) {
-        this.{dart.core::List::[]=}(i, fill);
+      for (dart.core::int i = start; i.{dart.core::num::<}(end); i = i.{dart.core::num::+}(1)) {
+        this.{dart.core::List::[]=}(i, value);
       }
     }
-    method /* from org-dartlang-sdk:///sdk/lib/collection/list.dart */ setRange(dart.core::int* start, dart.core::int* end, generic-covariant-impl dart.core::Iterable<dart.core::int*>* iterable, [dart.core::int* skipCount = #C7]) → void {
+    method /*isNonNullableByDefault, from org-dartlang-sdk:///sdk_nnbd/lib/collection/list.dart */ setRange(dart.core::int start, dart.core::int end, generic-covariant-impl dart.core::Iterable<dart.core::int*> iterable, [dart.core::int skipCount = #C7]) → void {
       dart.core::RangeError::checkValidRange(start, end, this.{dart.core::List::length});
-      dart.core::int* length = end.{dart.core::num::-}(start);
+      dart.core::int length = end.{dart.core::num::-}(start);
       if(length.{dart.core::num::==}(0))
         return;
       dart.core::RangeError::checkNotNegative(skipCount, "skipCount");
-      dart.core::List<dart.core::int*>* otherList;
-      dart.core::int* otherStart;
-      if(iterable is dart.core::List<dart.core::int*>*) {
-        otherList = iterable{dart.core::List<dart.core::int*>*};
+      dart.core::List<dart.core::int*> otherList;
+      dart.core::int otherStart;
+      if(iterable is{ForNonNullableByDefault} dart.core::List<dart.core::int*>) {
+        otherList = iterable{dart.core::List<dart.core::int*>};
         otherStart = skipCount;
       }
       else {
@@ -353,77 +320,108 @@
         throw dart._internal::IterableElementError::tooFew();
       }
       if(otherStart.{dart.core::num::<}(start)) {
-        for (dart.core::int* i = length.{dart.core::num::-}(1); i.{dart.core::num::>=}(0); i = i.{dart.core::num::-}(1)) {
+        for (dart.core::int i = length.{dart.core::num::-}(1); i.{dart.core::num::>=}(0); i = i.{dart.core::num::-}(1)) {
           this.{dart.core::List::[]=}(start.{dart.core::num::+}(i), otherList.{dart.core::List::[]}(otherStart.{dart.core::num::+}(i)));
         }
       }
       else {
-        for (dart.core::int* i = 0; i.{dart.core::num::<}(length); i = i.{dart.core::num::+}(1)) {
+        for (dart.core::int i = 0; i.{dart.core::num::<}(length); i = i.{dart.core::num::+}(1)) {
           this.{dart.core::List::[]=}(start.{dart.core::num::+}(i), otherList.{dart.core::List::[]}(otherStart.{dart.core::num::+}(i)));
         }
       }
     }
-    method /* from org-dartlang-sdk:///sdk/lib/collection/list.dart */ replaceRange(dart.core::int* start, dart.core::int* end, generic-covariant-impl dart.core::Iterable<dart.core::int*>* newContents) → void {
+    method /*isNonNullableByDefault, from org-dartlang-sdk:///sdk_nnbd/lib/collection/list.dart */ replaceRange(dart.core::int start, dart.core::int end, generic-covariant-impl dart.core::Iterable<dart.core::int*> newContents) → void {
       dart.core::RangeError::checkValidRange(start, end, this.{dart.core::List::length});
-      if(!(newContents is dart._internal::EfficientLengthIterable<dynamic>*)) {
+      if(start.{dart.core::num::==}(this.{dart.core::List::length})) {
+        this.{dart.collection::ListMixin::addAll}(newContents);
+        return;
+      }
+      if(!(newContents is{ForNonNullableByDefault} dart._internal::EfficientLengthIterable<dynamic>)) {
         newContents = newContents.{dart.core::Iterable::toList}();
       }
-      dart.core::int* removeLength = end.{dart.core::num::-}(start);
-      dart.core::int* insertLength = newContents.{dart.core::Iterable::length};
+      dart.core::int removeLength = end.{dart.core::num::-}(start);
+      dart.core::int insertLength = newContents.{dart.core::Iterable::length};
       if(removeLength.{dart.core::num::>=}(insertLength)) {
-        dart.core::int* insertEnd = start.{dart.core::num::+}(insertLength);
+        dart.core::int insertEnd = start.{dart.core::num::+}(insertLength);
         this.{dart.collection::ListMixin::setRange}(start, insertEnd, newContents);
         if(removeLength.{dart.core::num::>}(insertLength)) {
           this.{dart.collection::ListMixin::_closeGap}(insertEnd, end);
         }
       }
-      else {
-        dart.core::int* delta = insertLength.{dart.core::num::-}(removeLength);
-        dart.core::int* newLength = this.{dart.core::List::length}.{dart.core::num::+}(delta);
-        dart.core::int* insertEnd = start.{dart.core::num::+}(insertLength);
-        this.{dart.core::List::length} = newLength;
-        this.{dart.collection::ListMixin::setRange}(insertEnd, newLength, this, end);
-        this.{dart.collection::ListMixin::setRange}(start, insertEnd, newContents);
-      }
+      else
+        if(end.{dart.core::num::==}(this.{dart.core::List::length})) {
+          dart.core::int i = start;
+          {
+            dart.core::Iterator<dart.core::int*> :sync-for-iterator = newContents.{dart.core::Iterable::iterator};
+            for (; :sync-for-iterator.{dart.core::Iterator::moveNext}(); ) {
+              dart.core::int* element = :sync-for-iterator.{dart.core::Iterator::current};
+              {
+                if(i.{dart.core::num::<}(end)) {
+                  this.{dart.core::List::[]=}(i, element);
+                }
+                else {
+                  this.{dart.collection::ListMixin::add}(element);
+                }
+                i = i.{dart.core::num::+}(1);
+              }
+            }
+          }
+        }
+        else {
+          dart.core::int delta = insertLength.{dart.core::num::-}(removeLength);
+          dart.core::int oldLength = this.{dart.core::List::length};
+          dart.core::int insertEnd = start.{dart.core::num::+}(insertLength);
+          for (dart.core::int i = oldLength.{dart.core::num::-}(delta); i.{dart.core::num::<}(oldLength); i = i.{dart.core::num::+}(1)) {
+            this.{dart.collection::ListMixin::add}(this.{dart.core::List::[]}(i.{dart.core::num::>}(0) ?{dart.core::int} i : 0));
+          }
+          if(insertEnd.{dart.core::num::<}(oldLength)) {
+            this.{dart.collection::ListMixin::setRange}(insertEnd, oldLength, this, end);
+          }
+          this.{dart.collection::ListMixin::setRange}(start, insertEnd, newContents);
+        }
     }
-    method /* from org-dartlang-sdk:///sdk/lib/collection/list.dart */ indexOf(generic-covariant-impl dart.core::Object* element, [dart.core::int* start = #C7]) → dart.core::int* {
+    method /*isNonNullableByDefault, from org-dartlang-sdk:///sdk_nnbd/lib/collection/list.dart */ indexOf(generic-covariant-impl dart.core::Object? element, [dart.core::int start = #C7]) → dart.core::int {
       if(start.{dart.core::num::<}(0))
         start = 0;
-      for (dart.core::int* i = start; i.{dart.core::num::<}(this.{dart.core::List::length}); i = i.{dart.core::num::+}(1)) {
+      for (dart.core::int i = start; i.{dart.core::num::<}(this.{dart.core::List::length}); i = i.{dart.core::num::+}(1)) {
         if(this.{dart.core::List::[]}(i).{dart.core::Object::==}(element))
           return i;
       }
       return 1.{dart.core::int::unary-}();
     }
-    method /* from org-dartlang-sdk:///sdk/lib/collection/list.dart */ indexWhere((dart.core::int*) →* dart.core::bool* test, [dart.core::int* start = #C7]) → dart.core::int* {
+    method /*isNonNullableByDefault, from org-dartlang-sdk:///sdk_nnbd/lib/collection/list.dart */ indexWhere((dart.core::int*) → dart.core::bool test, [dart.core::int start = #C7]) → dart.core::int {
       if(start.{dart.core::num::<}(0))
         start = 0;
-      for (dart.core::int* i = start; i.{dart.core::num::<}(this.{dart.core::List::length}); i = i.{dart.core::num::+}(1)) {
+      for (dart.core::int i = start; i.{dart.core::num::<}(this.{dart.core::List::length}); i = i.{dart.core::num::+}(1)) {
         if(test.call(this.{dart.core::List::[]}(i)))
           return i;
       }
       return 1.{dart.core::int::unary-}();
     }
-    method /* from org-dartlang-sdk:///sdk/lib/collection/list.dart */ lastIndexOf(generic-covariant-impl dart.core::Object* element, [dart.core::int* start = #C2]) → dart.core::int* {
-      if(start.{dart.core::num::==}(null) || start.{dart.core::num::>=}(this.{dart.core::List::length}))
+    method /*isNonNullableByDefault, from org-dartlang-sdk:///sdk_nnbd/lib/collection/list.dart */ lastIndexOf(generic-covariant-impl dart.core::Object? element, [dart.core::int? start = #C2]) → dart.core::int {
+      if(start.{dart.core::num::==}(null) || start{dart.core::int}.{dart.core::num::>=}(this.{dart.core::List::length}))
         start = this.{dart.core::List::length}.{dart.core::num::-}(1);
-      for (dart.core::int* i = start; i.{dart.core::num::>=}(0); i = i.{dart.core::num::-}(1)) {
+      if(start{dart.core::int}.{dart.core::num::==}(null))
+        throw "!";
+      for (dart.core::int i = start{dart.core::int}; i.{dart.core::num::>=}(0); i = i.{dart.core::num::-}(1)) {
         if(this.{dart.core::List::[]}(i).{dart.core::Object::==}(element))
           return i;
       }
       return 1.{dart.core::int::unary-}();
     }
-    method /* from org-dartlang-sdk:///sdk/lib/collection/list.dart */ lastIndexWhere((dart.core::int*) →* dart.core::bool* test, [dart.core::int* start = #C2]) → dart.core::int* {
-      if(start.{dart.core::num::==}(null) || start.{dart.core::num::>=}(this.{dart.core::List::length}))
+    method /*isNonNullableByDefault, from org-dartlang-sdk:///sdk_nnbd/lib/collection/list.dart */ lastIndexWhere((dart.core::int*) → dart.core::bool test, [dart.core::int? start = #C2]) → dart.core::int {
+      if(start.{dart.core::num::==}(null) || start{dart.core::int}.{dart.core::num::>=}(this.{dart.core::List::length}))
         start = this.{dart.core::List::length}.{dart.core::num::-}(1);
-      for (dart.core::int* i = start; i.{dart.core::num::>=}(0); i = i.{dart.core::num::-}(1)) {
+      if(start{dart.core::int}.{dart.core::num::==}(null))
+        throw "!";
+      for (dart.core::int i = start{dart.core::int}; i.{dart.core::num::>=}(0); i = i.{dart.core::num::-}(1)) {
         if(test.call(this.{dart.core::List::[]}(i)))
           return i;
       }
       return 1.{dart.core::int::unary-}();
     }
-    method /* from org-dartlang-sdk:///sdk/lib/collection/list.dart */ insert(dart.core::int* index, generic-covariant-impl dart.core::int* element) → void {
-      dart.core::ArgumentError::checkNotNull<dart.core::int*>(index, "index");
+    method /*isNonNullableByDefault, from org-dartlang-sdk:///sdk_nnbd/lib/collection/list.dart */ insert(dart.core::int index, generic-covariant-impl dart.core::int* element) → void {
+      dart.core::ArgumentError::checkNotNull<dart.core::int>(index, "index");
       dart.core::RangeError::checkValueInInterval(index, 0, this.{dart.core::List::length}, "index");
       if(index.{dart.core::num::==}(this.{dart.core::List::length})) {
         this.{dart.collection::ListMixin::add}(element);
@@ -433,45 +431,112 @@
       this.{dart.collection::ListMixin::setRange}(index.{dart.core::num::+}(1), this.{dart.core::List::length}, this, index);
       this.{dart.core::List::[]=}(index, element);
     }
-    method /* from org-dartlang-sdk:///sdk/lib/collection/list.dart */ removeAt(dart.core::int* index) → dart.core::int* {
+    method /*isNonNullableByDefault, from org-dartlang-sdk:///sdk_nnbd/lib/collection/list.dart */ removeAt(dart.core::int index) → dart.core::int* {
       dart.core::int* result = this.{dart.core::List::[]}(index);
       this.{dart.collection::ListMixin::_closeGap}(index, index.{dart.core::num::+}(1));
       return result;
     }
-    method /* from org-dartlang-sdk:///sdk/lib/collection/list.dart */ insertAll(dart.core::int* index, generic-covariant-impl dart.core::Iterable<dart.core::int*>* iterable) → void {
+    method /*isNonNullableByDefault, from org-dartlang-sdk:///sdk_nnbd/lib/collection/list.dart */ insertAll(dart.core::int index, generic-covariant-impl dart.core::Iterable<dart.core::int*> iterable) → void {
       dart.core::RangeError::checkValueInInterval(index, 0, this.{dart.core::List::length}, "index");
-      if(!(iterable is dart._internal::EfficientLengthIterable<dynamic>*) || dart.core::identical(iterable, this)) {
+      if(index.{dart.core::num::==}(this.{dart.core::List::length})) {
+        this.{dart.collection::ListMixin::addAll}(iterable);
+        return;
+      }
+      if(!(iterable is{ForNonNullableByDefault} dart._internal::EfficientLengthIterable<dynamic>) || dart.core::identical(iterable, this)) {
         iterable = iterable.{dart.core::Iterable::toList}();
       }
-      dart.core::int* insertionLength = iterable.{dart.core::Iterable::length};
-      this.{dart.core::List::length} = this.{dart.core::List::length}.{dart.core::num::+}(insertionLength);
+      dart.core::int insertionLength = iterable.{dart.core::Iterable::length};
+      if(insertionLength.{dart.core::num::==}(0)) {
+        return;
+      }
+      dart.core::int oldLength = this.{dart.core::List::length};
+      for (dart.core::int i = oldLength.{dart.core::num::-}(insertionLength); i.{dart.core::num::<}(oldLength); i = i.{dart.core::num::+}(1)) {
+        this.{dart.collection::ListMixin::add}(this.{dart.core::List::[]}(i.{dart.core::num::>}(0) ?{dart.core::int} i : 0));
+      }
       if(!iterable.{dart.core::Iterable::length}.{dart.core::num::==}(insertionLength)) {
         this.{dart.core::List::length} = this.{dart.core::List::length}.{dart.core::num::-}(insertionLength);
         throw new dart.core::ConcurrentModificationError::•(iterable);
       }
-      this.{dart.collection::ListMixin::setRange}(index.{dart.core::num::+}(insertionLength), this.{dart.core::List::length}, this, index);
+      dart.core::int oldCopyStart = index.{dart.core::num::+}(insertionLength);
+      if(oldCopyStart.{dart.core::num::<}(oldLength)) {
+        this.{dart.collection::ListMixin::setRange}(oldCopyStart, oldLength, this, index);
+      }
       this.{dart.collection::ListMixin::setAll}(index, iterable);
     }
-    method /* from org-dartlang-sdk:///sdk/lib/collection/list.dart */ setAll(dart.core::int* index, generic-covariant-impl dart.core::Iterable<dart.core::int*>* iterable) → void {
-      if(iterable is dart.core::List<dynamic>*) {
+    method /*isNonNullableByDefault, from org-dartlang-sdk:///sdk_nnbd/lib/collection/list.dart */ setAll(dart.core::int index, generic-covariant-impl dart.core::Iterable<dart.core::int*> iterable) → void {
+      if(iterable is{ForNonNullableByDefault} dart.core::List<dynamic>) {
         this.{dart.collection::ListMixin::setRange}(index, index.{dart.core::num::+}(iterable.{dart.core::Iterable::length}), iterable);
       }
       else {
         {
-          dart.core::Iterator<dart.core::int*>* :sync-for-iterator = iterable.{dart.core::Iterable::iterator};
+          dart.core::Iterator<dart.core::int*> :sync-for-iterator = iterable.{dart.core::Iterable::iterator};
           for (; :sync-for-iterator.{dart.core::Iterator::moveNext}(); ) {
             dart.core::int* element = :sync-for-iterator.{dart.core::Iterator::current};
             {
-              this.{dart.core::List::[]=}(let final dart.core::int* #t12 = index in let final dart.core::int* #t13 = index = #t12.{dart.core::num::+}(1) in #t12, element);
+              this.{dart.core::List::[]=}(let final dart.core::int #t7 = index in let final dart.core::int #t8 = index = #t7.{dart.core::num::+}(1) in #t7, element);
             }
           }
         }
       }
     }
-    get /* from org-dartlang-sdk:///sdk/lib/collection/list.dart */ reversed() → dart.core::Iterable<dart.core::int*>*
+    get /*isNonNullableByDefault, from org-dartlang-sdk:///sdk_nnbd/lib/collection/list.dart */ reversed() → dart.core::Iterable<dart.core::int*>
       return new dart._internal::ReversedListIterable::•<dart.core::int*>(this);
-    method /* from org-dartlang-sdk:///sdk/lib/collection/list.dart */ toString() → dart.core::String*
+    method /*isNonNullableByDefault, from org-dartlang-sdk:///sdk_nnbd/lib/collection/list.dart */ toString() → dart.core::String
       return dart.collection::IterableBase::iterableToFullString(this, "[", "]");
+    abstract member-signature get _identityHashCode() → dart.core::int*;
+    abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfTrue(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfFalse(dynamic type) → dart.core::bool*;
+    abstract member-signature operator ==(dynamic other) → dart.core::bool*;
+    abstract member-signature get hashCode() → dart.core::int*;
+    abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic;
+    abstract member-signature get runtimeType() → dart.core::Type*;
+    abstract member-signature set length(dart.core::int* newLength) → void;
+    get /*isNonNullableByDefault, from org-dartlang-sdk:///sdk_nnbd/lib/collection/list.dart */ first() → dart.core::int* {
+      if(this.{dart.core::List::length}.{dart.core::num::==}(0))
+        throw dart._internal::IterableElementError::noElement();
+      return this.{dart.core::List::[]}(0);
+    }
+    set /*isNonNullableByDefault, from org-dartlang-sdk:///sdk_nnbd/lib/collection/list.dart */ first(generic-covariant-impl dart.core::int* value) → void {
+      if(this.{dart.core::List::length}.{dart.core::num::==}(0))
+        throw dart._internal::IterableElementError::noElement();
+      this.{dart.core::List::[]=}(0, value);
+    }
+    get /*isNonNullableByDefault, from org-dartlang-sdk:///sdk_nnbd/lib/collection/list.dart */ last() → dart.core::int* {
+      if(this.{dart.core::List::length}.{dart.core::num::==}(0))
+        throw dart._internal::IterableElementError::noElement();
+      return this.{dart.core::List::[]}(this.{dart.core::List::length}.{dart.core::num::-}(1));
+    }
+    set /*isNonNullableByDefault, from org-dartlang-sdk:///sdk_nnbd/lib/collection/list.dart */ last(generic-covariant-impl dart.core::int* value) → void {
+      if(this.{dart.core::List::length}.{dart.core::num::==}(0))
+        throw dart._internal::IterableElementError::noElement();
+      this.{dart.core::List::[]=}(this.{dart.core::List::length}.{dart.core::num::-}(1), value);
+    }
+    get /*isNonNullableByDefault, from org-dartlang-sdk:///sdk_nnbd/lib/collection/list.dart */ single() → dart.core::int* {
+      if(this.{dart.core::List::length}.{dart.core::num::==}(0))
+        throw dart._internal::IterableElementError::noElement();
+      if(this.{dart.core::List::length}.{dart.core::num::>}(1))
+        throw dart._internal::IterableElementError::tooMany();
+      return this.{dart.core::List::[]}(0);
+    }
+    method /*isNonNullableByDefault, from org-dartlang-sdk:///sdk_nnbd/lib/collection/list.dart */ add(generic-covariant-impl dart.core::int* element) → void {
+      this.{dart.core::List::[]=}(let final dart.core::int #t9 = this.{dart.core::List::length} in let final dart.core::int #t10 = this.{dart.core::List::length} = #t9.{dart.core::num::+}(1) in #t9, element);
+    }
+    method /*isNonNullableByDefault, from org-dartlang-sdk:///sdk_nnbd/lib/collection/list.dart */ clear() → void {
+      this.{dart.core::List::length} = 0;
+    }
+    method /*isNonNullableByDefault, from org-dartlang-sdk:///sdk_nnbd/lib/collection/list.dart */ removeLast() → dart.core::int* {
+      if(this.{dart.core::List::length}.{dart.core::num::==}(0)) {
+        throw dart._internal::IterableElementError::noElement();
+      }
+      dart.core::int* result = this.{dart.core::List::[]}(this.{dart.core::List::length}.{dart.core::num::-}(1));
+      this.{dart.core::List::length} = this.{dart.core::List::length}.{dart.core::num::-}(1);
+      return result;
+    }
+    static method /*isNonNullableByDefault, from org-dartlang-sdk:///sdk_nnbd/lib/collection/list.dart */ _compareAny(dynamic a, dynamic b) → dart.core::int {
+      return dart.core::Comparable::compare(a as{ForNonNullableByDefault} dart.core::Comparable<dynamic>, b as{ForNonNullableByDefault} dart.core::Comparable<dynamic>);
+    }
   }
   class WithListMixin extends main::_WithListMixin&Object&ListMixin {
     field dart.core::int* length = 2;
@@ -482,6 +547,57 @@
       return index;
     operator []=(dart.core::int* index, generic-covariant-impl dart.core::int* value) → void
       return null;
+    abstract member-signature get iterator() → dart.core::Iterator<dart.core::int*>*;
+    abstract member-signature method elementAt(dart.core::int* index) → dart.core::int*;
+    abstract member-signature method followedBy(generic-covariant-impl dart.core::Iterable<dart.core::int*>* other) → dart.core::Iterable<dart.core::int*>*;
+    abstract member-signature method forEach((dart.core::int*) →* void action) → void;
+    abstract member-signature get isEmpty() → dart.core::bool*;
+    abstract member-signature get isNotEmpty() → dart.core::bool*;
+    abstract member-signature method contains(dart.core::Object* element) → dart.core::bool*;
+    abstract member-signature method every((dart.core::int*) →* dart.core::bool* test) → dart.core::bool*;
+    abstract member-signature method any((dart.core::int*) →* dart.core::bool* test) → dart.core::bool*;
+    abstract member-signature method firstWhere((dart.core::int*) →* dart.core::bool* test, {generic-covariant-impl () →* dart.core::int* orElse = #C2}) → dart.core::int*;
+    abstract member-signature method lastWhere((dart.core::int*) →* dart.core::bool* test, {generic-covariant-impl () →* dart.core::int* orElse = #C2}) → dart.core::int*;
+    abstract member-signature method singleWhere((dart.core::int*) →* dart.core::bool* test, {generic-covariant-impl () →* dart.core::int* orElse = #C2}) → dart.core::int*;
+    abstract member-signature method join([dart.core::String* separator = #C4]) → dart.core::String*;
+    abstract member-signature method where((dart.core::int*) →* dart.core::bool* test) → dart.core::Iterable<dart.core::int*>*;
+    abstract member-signature method whereType<T extends dart.core::Object* = dynamic>() → dart.core::Iterable<main::WithListMixin::whereType::T*>*;
+    abstract member-signature method map<T extends dart.core::Object* = dynamic>((dart.core::int*) →* main::WithListMixin::map::T* f) → dart.core::Iterable<main::WithListMixin::map::T*>*;
+    abstract member-signature method expand<T extends dart.core::Object* = dynamic>((dart.core::int*) →* dart.core::Iterable<main::WithListMixin::expand::T*>* f) → dart.core::Iterable<main::WithListMixin::expand::T*>*;
+    abstract member-signature method reduce(generic-covariant-impl (dart.core::int*, dart.core::int*) →* dart.core::int* combine) → dart.core::int*;
+    abstract member-signature method fold<T extends dart.core::Object* = dynamic>(main::WithListMixin::fold::T* initialValue, (main::WithListMixin::fold::T*, dart.core::int*) →* main::WithListMixin::fold::T* combine) → main::WithListMixin::fold::T*;
+    abstract member-signature method skip(dart.core::int* count) → dart.core::Iterable<dart.core::int*>*;
+    abstract member-signature method skipWhile((dart.core::int*) →* dart.core::bool* test) → dart.core::Iterable<dart.core::int*>*;
+    abstract member-signature method take(dart.core::int* count) → dart.core::Iterable<dart.core::int*>*;
+    abstract member-signature method takeWhile((dart.core::int*) →* dart.core::bool* test) → dart.core::Iterable<dart.core::int*>*;
+    abstract member-signature method toList({dart.core::bool* growable = #C5}) → dart.core::List<dart.core::int*>*;
+    abstract member-signature method toSet() → dart.core::Set<dart.core::int*>*;
+    abstract member-signature method addAll(generic-covariant-impl dart.core::Iterable<dart.core::int*>* iterable) → void;
+    abstract member-signature method remove(dart.core::Object* element) → dart.core::bool*;
+    abstract member-signature method _closeGap(dart.core::int* start, dart.core::int* end) → void;
+    abstract member-signature method removeWhere((dart.core::int*) →* dart.core::bool* test) → void;
+    abstract member-signature method retainWhere((dart.core::int*) →* dart.core::bool* test) → void;
+    abstract member-signature method _filter((dart.core::int*) →* dart.core::bool* test, dart.core::bool* retainMatching) → void;
+    abstract member-signature method cast<R extends dart.core::Object* = dynamic>() → dart.core::List<main::WithListMixin::cast::R*>*;
+    abstract member-signature method sort([(dart.core::int*, dart.core::int*) →* dart.core::int* compare = #C2]) → void;
+    abstract member-signature method shuffle([dart.math::Random* random = #C2]) → void;
+    abstract member-signature method asMap() → dart.core::Map<dart.core::int*, dart.core::int*>*;
+    abstract member-signature operator +(generic-covariant-impl dart.core::List<dart.core::int*>* other) → dart.core::List<dart.core::int*>*;
+    abstract member-signature method sublist(dart.core::int* start, [dart.core::int* end = #C2]) → dart.core::List<dart.core::int*>*;
+    abstract member-signature method getRange(dart.core::int* start, dart.core::int* end) → dart.core::Iterable<dart.core::int*>*;
+    abstract member-signature method removeRange(dart.core::int* start, dart.core::int* end) → void;
+    abstract member-signature method fillRange(dart.core::int* start, dart.core::int* end, [generic-covariant-impl dart.core::int* fill = #C2]) → void;
+    abstract member-signature method setRange(dart.core::int* start, dart.core::int* end, generic-covariant-impl dart.core::Iterable<dart.core::int*>* iterable, [dart.core::int* skipCount = #C7]) → void;
+    abstract member-signature method replaceRange(dart.core::int* start, dart.core::int* end, generic-covariant-impl dart.core::Iterable<dart.core::int*>* newContents) → void;
+    abstract member-signature method indexOf(generic-covariant-impl dart.core::Object* element, [dart.core::int* start = #C7]) → dart.core::int*;
+    abstract member-signature method indexWhere((dart.core::int*) →* dart.core::bool* test, [dart.core::int* start = #C7]) → dart.core::int*;
+    abstract member-signature method lastIndexOf(generic-covariant-impl dart.core::Object* element, [dart.core::int* start = #C2]) → dart.core::int*;
+    abstract member-signature method lastIndexWhere((dart.core::int*) →* dart.core::bool* test, [dart.core::int* start = #C2]) → dart.core::int*;
+    abstract member-signature method insert(dart.core::int* index, generic-covariant-impl dart.core::int* element) → void;
+    abstract member-signature method removeAt(dart.core::int* index) → dart.core::int*;
+    abstract member-signature method insertAll(dart.core::int* index, generic-covariant-impl dart.core::Iterable<dart.core::int*>* iterable) → void;
+    abstract member-signature method setAll(dart.core::int* index, generic-covariant-impl dart.core::Iterable<dart.core::int*>* iterable) → void;
+    abstract member-signature get reversed() → dart.core::Iterable<dart.core::int*>*;
   }
 }
 constants  {
diff --git a/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_22.yaml.world.2.expect b/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_22.yaml.world.2.expect
index 4da97d9..664d638 100644
--- a/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_22.yaml.world.2.expect
+++ b/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_22.yaml.world.2.expect
@@ -7,15 +7,18 @@
     const synthetic constructor •() → main::_WithListMixin&Object&ListMixin*
       : super dart.core::Object::•()
       ;
-    get /* from org-dartlang-sdk:///sdk/lib/collection/list.dart */ iterator() → dart.core::Iterator<dart.core::int*>*
+    abstract member-signature get length() → dart.core::int*;
+    abstract member-signature operator [](dart.core::int* index) → dart.core::int*;
+    abstract member-signature operator []=(dart.core::int* index, generic-covariant-impl dart.core::int* value) → void;
+    get /*isNonNullableByDefault, from org-dartlang-sdk:///sdk_nnbd/lib/collection/list.dart */ iterator() → dart.core::Iterator<dart.core::int*>
       return new dart._internal::ListIterator::•<dart.core::int*>(this);
-    method /* from org-dartlang-sdk:///sdk/lib/collection/list.dart */ elementAt(dart.core::int* index) → dart.core::int*
+    method /*isNonNullableByDefault, from org-dartlang-sdk:///sdk_nnbd/lib/collection/list.dart */ elementAt(dart.core::int index) → dart.core::int*
       return this.{dart.core::List::[]}(index);
-    method /* from org-dartlang-sdk:///sdk/lib/collection/list.dart */ followedBy(generic-covariant-impl dart.core::Iterable<dart.core::int*>* other) → dart.core::Iterable<dart.core::int*>*
+    method /*isNonNullableByDefault, from org-dartlang-sdk:///sdk_nnbd/lib/collection/list.dart */ followedBy(generic-covariant-impl dart.core::Iterable<dart.core::int*> other) → dart.core::Iterable<dart.core::int*>
       return dart._internal::FollowedByIterable::firstEfficient<dart.core::int*>(this, other);
-    method /* from org-dartlang-sdk:///sdk/lib/collection/list.dart */ forEach((dart.core::int*) →* void action) → void {
-      dart.core::int* length = this.{dart.core::List::length};
-      for (dart.core::int* i = 0; i.{dart.core::num::<}(length); i = i.{dart.core::num::+}(1)) {
+    method /*isNonNullableByDefault, from org-dartlang-sdk:///sdk_nnbd/lib/collection/list.dart */ forEach((dart.core::int*) → void action) → void {
+      dart.core::int length = this.{dart.core::List::length};
+      for (dart.core::int i = 0; i.{dart.core::num::<}(length); i = i.{dart.core::num::+}(1)) {
         action.call(this.{dart.core::List::[]}(i));
         if(!length.{dart.core::num::==}(this.{dart.core::List::length})) {
           throw new dart.core::ConcurrentModificationError::•(this);
@@ -23,40 +26,13 @@
       }
     }
     @#C3
-    get /* from org-dartlang-sdk:///sdk/lib/collection/list.dart */ isEmpty() → dart.core::bool*
+    get /*isNonNullableByDefault, from org-dartlang-sdk:///sdk_nnbd/lib/collection/list.dart */ isEmpty() → dart.core::bool
       return this.{dart.core::List::length}.{dart.core::num::==}(0);
-    get /* from org-dartlang-sdk:///sdk/lib/collection/list.dart */ isNotEmpty() → dart.core::bool*
+    get /*isNonNullableByDefault, from org-dartlang-sdk:///sdk_nnbd/lib/collection/list.dart */ isNotEmpty() → dart.core::bool
       return !this.{dart.collection::ListMixin::isEmpty};
-    get /* from org-dartlang-sdk:///sdk/lib/collection/list.dart */ first() → dart.core::int* {
-      if(this.{dart.core::List::length}.{dart.core::num::==}(0))
-        throw dart._internal::IterableElementError::noElement();
-      return this.{dart.core::List::[]}(0);
-    }
-    set /* from org-dartlang-sdk:///sdk/lib/collection/list.dart */ first(generic-covariant-impl dart.core::int* value) → void {
-      if(this.{dart.core::List::length}.{dart.core::num::==}(0))
-        throw dart._internal::IterableElementError::noElement();
-      this.{dart.core::List::[]=}(0, value);
-    }
-    get /* from org-dartlang-sdk:///sdk/lib/collection/list.dart */ last() → dart.core::int* {
-      if(this.{dart.core::List::length}.{dart.core::num::==}(0))
-        throw dart._internal::IterableElementError::noElement();
-      return this.{dart.core::List::[]}(this.{dart.core::List::length}.{dart.core::num::-}(1));
-    }
-    set /* from org-dartlang-sdk:///sdk/lib/collection/list.dart */ last(generic-covariant-impl dart.core::int* value) → void {
-      if(this.{dart.core::List::length}.{dart.core::num::==}(0))
-        throw dart._internal::IterableElementError::noElement();
-      this.{dart.core::List::[]=}(this.{dart.core::List::length}.{dart.core::num::-}(1), value);
-    }
-    get /* from org-dartlang-sdk:///sdk/lib/collection/list.dart */ single() → dart.core::int* {
-      if(this.{dart.core::List::length}.{dart.core::num::==}(0))
-        throw dart._internal::IterableElementError::noElement();
-      if(this.{dart.core::List::length}.{dart.core::num::>}(1))
-        throw dart._internal::IterableElementError::tooMany();
-      return this.{dart.core::List::[]}(0);
-    }
-    method /* from org-dartlang-sdk:///sdk/lib/collection/list.dart */ contains(dart.core::Object* element) → dart.core::bool* {
-      dart.core::int* length = this.{dart.core::List::length};
-      for (dart.core::int* i = 0; i.{dart.core::num::<}(length); i = i.{dart.core::num::+}(1)) {
+    method /*isNonNullableByDefault, from org-dartlang-sdk:///sdk_nnbd/lib/collection/list.dart */ contains(dart.core::Object? element) → dart.core::bool {
+      dart.core::int length = this.{dart.core::List::length};
+      for (dart.core::int i = 0; i.{dart.core::num::<}(length); i = i.{dart.core::num::+}(1)) {
         if(this.{dart.core::List::[]}(i).{dart.core::Object::==}(element))
           return true;
         if(!length.{dart.core::num::==}(this.{dart.core::List::length})) {
@@ -65,9 +41,9 @@
       }
       return false;
     }
-    method /* from org-dartlang-sdk:///sdk/lib/collection/list.dart */ every((dart.core::int*) →* dart.core::bool* test) → dart.core::bool* {
-      dart.core::int* length = this.{dart.core::List::length};
-      for (dart.core::int* i = 0; i.{dart.core::num::<}(length); i = i.{dart.core::num::+}(1)) {
+    method /*isNonNullableByDefault, from org-dartlang-sdk:///sdk_nnbd/lib/collection/list.dart */ every((dart.core::int*) → dart.core::bool test) → dart.core::bool {
+      dart.core::int length = this.{dart.core::List::length};
+      for (dart.core::int i = 0; i.{dart.core::num::<}(length); i = i.{dart.core::num::+}(1)) {
         if(!test.call(this.{dart.core::List::[]}(i)))
           return false;
         if(!length.{dart.core::num::==}(this.{dart.core::List::length})) {
@@ -76,9 +52,9 @@
       }
       return true;
     }
-    method /* from org-dartlang-sdk:///sdk/lib/collection/list.dart */ any((dart.core::int*) →* dart.core::bool* test) → dart.core::bool* {
-      dart.core::int* length = this.{dart.core::List::length};
-      for (dart.core::int* i = 0; i.{dart.core::num::<}(length); i = i.{dart.core::num::+}(1)) {
+    method /*isNonNullableByDefault, from org-dartlang-sdk:///sdk_nnbd/lib/collection/list.dart */ any((dart.core::int*) → dart.core::bool test) → dart.core::bool {
+      dart.core::int length = this.{dart.core::List::length};
+      for (dart.core::int i = 0; i.{dart.core::num::<}(length); i = i.{dart.core::num::+}(1)) {
         if(test.call(this.{dart.core::List::[]}(i)))
           return true;
         if(!length.{dart.core::num::==}(this.{dart.core::List::length})) {
@@ -87,9 +63,9 @@
       }
       return false;
     }
-    method /* from org-dartlang-sdk:///sdk/lib/collection/list.dart */ firstWhere((dart.core::int*) →* dart.core::bool* test, {generic-covariant-impl () →* dart.core::int* orElse = #C2}) → dart.core::int* {
-      dart.core::int* length = this.{dart.core::List::length};
-      for (dart.core::int* i = 0; i.{dart.core::num::<}(length); i = i.{dart.core::num::+}(1)) {
+    method /*isNonNullableByDefault, from org-dartlang-sdk:///sdk_nnbd/lib/collection/list.dart */ firstWhere((dart.core::int*) → dart.core::bool test, {generic-covariant-impl () →? dart.core::int* orElse = #C2}) → dart.core::int* {
+      dart.core::int length = this.{dart.core::List::length};
+      for (dart.core::int i = 0; i.{dart.core::num::<}(length); i = i.{dart.core::num::+}(1)) {
         dart.core::int* element = this.{dart.core::List::[]}(i);
         if(test.call(element))
           return element;
@@ -98,12 +74,12 @@
         }
       }
       if(!orElse.{dart.core::Object::==}(null))
-        return orElse.call();
+        return orElse{() → dart.core::int*}.call();
       throw dart._internal::IterableElementError::noElement();
     }
-    method /* from org-dartlang-sdk:///sdk/lib/collection/list.dart */ lastWhere((dart.core::int*) →* dart.core::bool* test, {generic-covariant-impl () →* dart.core::int* orElse = #C2}) → dart.core::int* {
-      dart.core::int* length = this.{dart.core::List::length};
-      for (dart.core::int* i = length.{dart.core::num::-}(1); i.{dart.core::num::>=}(0); i = i.{dart.core::num::-}(1)) {
+    method /*isNonNullableByDefault, from org-dartlang-sdk:///sdk_nnbd/lib/collection/list.dart */ lastWhere((dart.core::int*) → dart.core::bool test, {generic-covariant-impl () →? dart.core::int* orElse = #C2}) → dart.core::int* {
+      dart.core::int length = this.{dart.core::List::length};
+      for (dart.core::int i = length.{dart.core::num::-}(1); i.{dart.core::num::>=}(0); i = i.{dart.core::num::-}(1)) {
         dart.core::int* element = this.{dart.core::List::[]}(i);
         if(test.call(element))
           return element;
@@ -112,14 +88,14 @@
         }
       }
       if(!orElse.{dart.core::Object::==}(null))
-        return orElse.call();
+        return orElse{() → dart.core::int*}.call();
       throw dart._internal::IterableElementError::noElement();
     }
-    method /* from org-dartlang-sdk:///sdk/lib/collection/list.dart */ singleWhere((dart.core::int*) →* dart.core::bool* test, {generic-covariant-impl () →* dart.core::int* orElse = #C2}) → dart.core::int* {
-      dart.core::int* length = this.{dart.core::List::length};
-      dart.core::int* match;
-      dart.core::bool* matchFound = false;
-      for (dart.core::int* i = 0; i.{dart.core::num::<}(length); i = i.{dart.core::num::+}(1)) {
+    method /*isNonNullableByDefault, from org-dartlang-sdk:///sdk_nnbd/lib/collection/list.dart */ singleWhere((dart.core::int*) → dart.core::bool test, {generic-covariant-impl () →? dart.core::int* orElse = #C2}) → dart.core::int* {
+      dart.core::int length = this.{dart.core::List::length};
+      late dart.core::int* match;
+      dart.core::bool matchFound = false;
+      for (dart.core::int i = 0; i.{dart.core::num::<}(length); i = i.{dart.core::num::+}(1)) {
         dart.core::int* element = this.{dart.core::List::[]}(i);
         if(test.call(element)) {
           if(matchFound) {
@@ -135,29 +111,29 @@
       if(matchFound)
         return match;
       if(!orElse.{dart.core::Object::==}(null))
-        return orElse.call();
+        return orElse{() → dart.core::int*}.call();
       throw dart._internal::IterableElementError::noElement();
     }
-    method /* from org-dartlang-sdk:///sdk/lib/collection/list.dart */ join([dart.core::String* separator = #C4]) → dart.core::String* {
+    method /*isNonNullableByDefault, from org-dartlang-sdk:///sdk_nnbd/lib/collection/list.dart */ join([dart.core::String separator = #C4]) → dart.core::String {
       if(this.{dart.core::List::length}.{dart.core::num::==}(0))
         return "";
-      dart.core::StringBuffer* buffer = let final dart.core::StringBuffer* #t1 = new dart.core::StringBuffer::•() in let final void #t2 = #t1.{dart.core::StringBuffer::writeAll}(this, separator) in #t1;
+      dart.core::StringBuffer buffer = let final dart.core::StringBuffer #t1 = new dart.core::StringBuffer::•() in let final void #t2 = #t1.{dart.core::StringBuffer::writeAll}(this, separator) in #t1;
       return buffer.{dart.core::StringBuffer::toString}();
     }
-    method /* from org-dartlang-sdk:///sdk/lib/collection/list.dart */ where((dart.core::int*) →* dart.core::bool* test) → dart.core::Iterable<dart.core::int*>*
+    method /*isNonNullableByDefault, from org-dartlang-sdk:///sdk_nnbd/lib/collection/list.dart */ where((dart.core::int*) → dart.core::bool test) → dart.core::Iterable<dart.core::int*>
       return new dart._internal::WhereIterable::•<dart.core::int*>(this, test);
-    method /* from org-dartlang-sdk:///sdk/lib/collection/list.dart */ whereType<T extends dart.core::Object* = dynamic>() → dart.core::Iterable<main::_WithListMixin&Object&ListMixin::whereType::T*>*
-      return new dart._internal::WhereTypeIterable::•<main::_WithListMixin&Object&ListMixin::whereType::T*>(this);
-    method /* from org-dartlang-sdk:///sdk/lib/collection/list.dart */ map<T extends dart.core::Object* = dynamic>((dart.core::int*) →* main::_WithListMixin&Object&ListMixin::map::T* f) → dart.core::Iterable<main::_WithListMixin&Object&ListMixin::map::T*>*
-      return new dart._internal::MappedListIterable::•<dart.core::int*, main::_WithListMixin&Object&ListMixin::map::T*>(this, f);
-    method /* from org-dartlang-sdk:///sdk/lib/collection/list.dart */ expand<T extends dart.core::Object* = dynamic>((dart.core::int*) →* dart.core::Iterable<main::_WithListMixin&Object&ListMixin::expand::T*>* f) → dart.core::Iterable<main::_WithListMixin&Object&ListMixin::expand::T*>*
-      return new dart._internal::ExpandIterable::•<dart.core::int*, main::_WithListMixin&Object&ListMixin::expand::T*>(this, f);
-    method /* from org-dartlang-sdk:///sdk/lib/collection/list.dart */ reduce(generic-covariant-impl (dart.core::int*, dart.core::int*) →* dart.core::int* combine) → dart.core::int* {
-      dart.core::int* length = this.{dart.core::List::length};
+    method /*isNonNullableByDefault, from org-dartlang-sdk:///sdk_nnbd/lib/collection/list.dart */ whereType<T extends dart.core::Object? = dynamic>() → dart.core::Iterable<main::_WithListMixin&Object&ListMixin::whereType::T%>
+      return new dart._internal::WhereTypeIterable::•<main::_WithListMixin&Object&ListMixin::whereType::T%>(this);
+    method /*isNonNullableByDefault, from org-dartlang-sdk:///sdk_nnbd/lib/collection/list.dart */ map<T extends dart.core::Object? = dynamic>((dart.core::int*) → main::_WithListMixin&Object&ListMixin::map::T% f) → dart.core::Iterable<main::_WithListMixin&Object&ListMixin::map::T%>
+      return new dart._internal::MappedListIterable::•<dart.core::int*, main::_WithListMixin&Object&ListMixin::map::T%>(this, f);
+    method /*isNonNullableByDefault, from org-dartlang-sdk:///sdk_nnbd/lib/collection/list.dart */ expand<T extends dart.core::Object? = dynamic>((dart.core::int*) → dart.core::Iterable<main::_WithListMixin&Object&ListMixin::expand::T%> f) → dart.core::Iterable<main::_WithListMixin&Object&ListMixin::expand::T%>
+      return new dart._internal::ExpandIterable::•<dart.core::int*, main::_WithListMixin&Object&ListMixin::expand::T%>(this, f);
+    method /*isNonNullableByDefault, from org-dartlang-sdk:///sdk_nnbd/lib/collection/list.dart */ reduce(generic-covariant-impl (dart.core::int*, dart.core::int*) → dart.core::int* combine) → dart.core::int* {
+      dart.core::int length = this.{dart.core::List::length};
       if(length.{dart.core::num::==}(0))
         throw dart._internal::IterableElementError::noElement();
       dart.core::int* value = this.{dart.core::List::[]}(0);
-      for (dart.core::int* i = 1; i.{dart.core::num::<}(length); i = i.{dart.core::num::+}(1)) {
+      for (dart.core::int i = 1; i.{dart.core::num::<}(length); i = i.{dart.core::num::+}(1)) {
         value = combine.call(value, this.{dart.core::List::[]}(i));
         if(!length.{dart.core::num::==}(this.{dart.core::List::length})) {
           throw new dart.core::ConcurrentModificationError::•(this);
@@ -165,10 +141,10 @@
       }
       return value;
     }
-    method /* from org-dartlang-sdk:///sdk/lib/collection/list.dart */ fold<T extends dart.core::Object* = dynamic>(main::_WithListMixin&Object&ListMixin::fold::T* initialValue, (main::_WithListMixin&Object&ListMixin::fold::T*, dart.core::int*) →* main::_WithListMixin&Object&ListMixin::fold::T* combine) → main::_WithListMixin&Object&ListMixin::fold::T* {
-      main::_WithListMixin&Object&ListMixin::fold::T* value = initialValue;
-      dart.core::int* length = this.{dart.core::List::length};
-      for (dart.core::int* i = 0; i.{dart.core::num::<}(length); i = i.{dart.core::num::+}(1)) {
+    method /*isNonNullableByDefault, from org-dartlang-sdk:///sdk_nnbd/lib/collection/list.dart */ fold<T extends dart.core::Object? = dynamic>(main::_WithListMixin&Object&ListMixin::fold::T% initialValue, (main::_WithListMixin&Object&ListMixin::fold::T%, dart.core::int*) → main::_WithListMixin&Object&ListMixin::fold::T% combine) → main::_WithListMixin&Object&ListMixin::fold::T% {
+      main::_WithListMixin&Object&ListMixin::fold::T% value = initialValue;
+      dart.core::int length = this.{dart.core::List::length};
+      for (dart.core::int i = 0; i.{dart.core::num::<}(length); i = i.{dart.core::num::+}(1)) {
         value = combine.call(value, this.{dart.core::List::[]}(i));
         if(!length.{dart.core::num::==}(this.{dart.core::List::length})) {
           throw new dart.core::ConcurrentModificationError::•(this);
@@ -176,56 +152,49 @@
       }
       return value;
     }
-    method /* from org-dartlang-sdk:///sdk/lib/collection/list.dart */ skip(dart.core::int* count) → dart.core::Iterable<dart.core::int*>*
+    method /*isNonNullableByDefault, from org-dartlang-sdk:///sdk_nnbd/lib/collection/list.dart */ skip(dart.core::int count) → dart.core::Iterable<dart.core::int*>
       return new dart._internal::SubListIterable::•<dart.core::int*>(this, count, null);
-    method /* from org-dartlang-sdk:///sdk/lib/collection/list.dart */ skipWhile((dart.core::int*) →* dart.core::bool* test) → dart.core::Iterable<dart.core::int*>* {
+    method /*isNonNullableByDefault, from org-dartlang-sdk:///sdk_nnbd/lib/collection/list.dart */ skipWhile((dart.core::int*) → dart.core::bool test) → dart.core::Iterable<dart.core::int*> {
       return new dart._internal::SkipWhileIterable::•<dart.core::int*>(this, test);
     }
-    method /* from org-dartlang-sdk:///sdk/lib/collection/list.dart */ take(dart.core::int* count) → dart.core::Iterable<dart.core::int*>*
+    method /*isNonNullableByDefault, from org-dartlang-sdk:///sdk_nnbd/lib/collection/list.dart */ take(dart.core::int count) → dart.core::Iterable<dart.core::int*>
       return new dart._internal::SubListIterable::•<dart.core::int*>(this, 0, count);
-    method /* from org-dartlang-sdk:///sdk/lib/collection/list.dart */ takeWhile((dart.core::int*) →* dart.core::bool* test) → dart.core::Iterable<dart.core::int*>* {
+    method /*isNonNullableByDefault, from org-dartlang-sdk:///sdk_nnbd/lib/collection/list.dart */ takeWhile((dart.core::int*) → dart.core::bool test) → dart.core::Iterable<dart.core::int*> {
       return new dart._internal::TakeWhileIterable::•<dart.core::int*>(this, test);
     }
-    method /* from org-dartlang-sdk:///sdk/lib/collection/list.dart */ toList({dart.core::bool* growable = #C5}) → dart.core::List<dart.core::int*>* {
-      dart.core::List<dart.core::int*>* result;
-      if(growable) {
-        result = let final dart.core::List<dart.core::int*>* #t3 = <dart.core::int*>[] in let final void #t4 = #t3.{dart.core::List::length} = this.{dart.core::List::length} in #t3;
-      }
-      else {
-        result = dart.core::_List::•<dart.core::int*>(this.{dart.core::List::length});
-      }
-      for (dart.core::int* i = 0; i.{dart.core::num::<}(this.{dart.core::List::length}); i = i.{dart.core::num::+}(1)) {
+    method /*isNonNullableByDefault, from org-dartlang-sdk:///sdk_nnbd/lib/collection/list.dart */ toList({dart.core::bool growable = #C5}) → dart.core::List<dart.core::int*> {
+      if(this.{dart.collection::ListMixin::isEmpty})
+        return dart.core::List::empty<dart.core::int*>(growable: growable);
+      dart.core::int* first = this.{dart.core::List::[]}(0);
+      dart.core::List<dart.core::int*> result = dart.core::List::filled<dart.core::int*>(this.{dart.core::List::length}, first, growable: growable);
+      for (dart.core::int i = 1; i.{dart.core::num::<}(this.{dart.core::List::length}); i = i.{dart.core::num::+}(1)) {
         result.{dart.core::List::[]=}(i, this.{dart.core::List::[]}(i));
       }
       return result;
     }
-    method /* from org-dartlang-sdk:///sdk/lib/collection/list.dart */ toSet() → dart.core::Set<dart.core::int*>* {
-      dart.core::Set<dart.core::int*>* result = dart.collection::LinkedHashSet::•<dart.core::int*>();
-      for (dart.core::int* i = 0; i.{dart.core::num::<}(this.{dart.core::List::length}); i = i.{dart.core::num::+}(1)) {
+    method /*isNonNullableByDefault, from org-dartlang-sdk:///sdk_nnbd/lib/collection/list.dart */ toSet() → dart.core::Set<dart.core::int*> {
+      dart.core::Set<dart.core::int*> result = dart.collection::LinkedHashSet::•<dart.core::int*>();
+      for (dart.core::int i = 0; i.{dart.core::num::<}(this.{dart.core::List::length}); i = i.{dart.core::num::+}(1)) {
         result.{dart.core::Set::add}(this.{dart.core::List::[]}(i));
       }
       return result;
     }
-    method /* from org-dartlang-sdk:///sdk/lib/collection/list.dart */ add(generic-covariant-impl dart.core::int* element) → void {
-      this.{dart.core::List::[]=}(let final dart.core::int* #t5 = this.{dart.core::List::length} in let final dart.core::int* #t6 = this.{dart.core::List::length} = #t5.{dart.core::num::+}(1) in #t5, element);
-    }
-    method /* from org-dartlang-sdk:///sdk/lib/collection/list.dart */ addAll(generic-covariant-impl dart.core::Iterable<dart.core::int*>* iterable) → void {
-      dart.core::int* i = this.{dart.core::List::length};
+    method /*isNonNullableByDefault, from org-dartlang-sdk:///sdk_nnbd/lib/collection/list.dart */ addAll(generic-covariant-impl dart.core::Iterable<dart.core::int*> iterable) → void {
+      dart.core::int i = this.{dart.core::List::length};
       {
-        dart.core::Iterator<dart.core::int*>* :sync-for-iterator = iterable.{dart.core::Iterable::iterator};
+        dart.core::Iterator<dart.core::int*> :sync-for-iterator = iterable.{dart.core::Iterable::iterator};
         for (; :sync-for-iterator.{dart.core::Iterator::moveNext}(); ) {
           dart.core::int* element = :sync-for-iterator.{dart.core::Iterator::current};
           {
             assert(this.{dart.core::List::length}.{dart.core::num::==}(i) || (throw new dart.core::ConcurrentModificationError::•(this)));
-            this.{dart.core::List::length} = i.{dart.core::num::+}(1);
-            this.{dart.core::List::[]=}(i, element);
+            this.{dart.collection::ListMixin::add}(element);
             i = i.{dart.core::num::+}(1);
           }
         }
       }
     }
-    method /* from org-dartlang-sdk:///sdk/lib/collection/list.dart */ remove(dart.core::Object* element) → dart.core::bool* {
-      for (dart.core::int* i = 0; i.{dart.core::num::<}(this.{dart.core::List::length}); i = i.{dart.core::num::+}(1)) {
+    method /*isNonNullableByDefault, from org-dartlang-sdk:///sdk_nnbd/lib/collection/list.dart */ remove(dart.core::Object? element) → dart.core::bool {
+      for (dart.core::int i = 0; i.{dart.core::num::<}(this.{dart.core::List::length}); i = i.{dart.core::num::+}(1)) {
         if(this.{dart.core::List::[]}(i).{dart.core::Object::==}(element)) {
           this.{dart.collection::ListMixin::_closeGap}(i, i.{dart.core::num::+}(1));
           return true;
@@ -233,27 +202,27 @@
       }
       return false;
     }
-    method /* from org-dartlang-sdk:///sdk/lib/collection/list.dart */ _closeGap(dart.core::int* start, dart.core::int* end) → void {
-      dart.core::int* length = this.{dart.core::List::length};
+    method /*isNonNullableByDefault, from org-dartlang-sdk:///sdk_nnbd/lib/collection/list.dart */ _closeGap(dart.core::int start, dart.core::int end) → void {
+      dart.core::int length = this.{dart.core::List::length};
       assert(0.{dart.core::num::<=}(start));
       assert(start.{dart.core::num::<}(end));
       assert(end.{dart.core::num::<=}(length));
-      dart.core::int* size = end.{dart.core::num::-}(start);
-      for (dart.core::int* i = end; i.{dart.core::num::<}(length); i = i.{dart.core::num::+}(1)) {
+      dart.core::int size = end.{dart.core::num::-}(start);
+      for (dart.core::int i = end; i.{dart.core::num::<}(length); i = i.{dart.core::num::+}(1)) {
         this.{dart.core::List::[]=}(i.{dart.core::num::-}(size), this.{dart.core::List::[]}(i));
       }
       this.{dart.core::List::length} = length.{dart.core::num::-}(size);
     }
-    method /* from org-dartlang-sdk:///sdk/lib/collection/list.dart */ removeWhere((dart.core::int*) →* dart.core::bool* test) → void {
+    method /*isNonNullableByDefault, from org-dartlang-sdk:///sdk_nnbd/lib/collection/list.dart */ removeWhere((dart.core::int*) → dart.core::bool test) → void {
       this.{dart.collection::ListMixin::_filter}(test, false);
     }
-    method /* from org-dartlang-sdk:///sdk/lib/collection/list.dart */ retainWhere((dart.core::int*) →* dart.core::bool* test) → void {
+    method /*isNonNullableByDefault, from org-dartlang-sdk:///sdk_nnbd/lib/collection/list.dart */ retainWhere((dart.core::int*) → dart.core::bool test) → void {
       this.{dart.collection::ListMixin::_filter}(test, true);
     }
-    method /* from org-dartlang-sdk:///sdk/lib/collection/list.dart */ _filter((dart.core::int*) →* dart.core::bool* test, dart.core::bool* retainMatching) → void {
-      dart.core::List<dart.core::int*>* retained = <dart.core::int*>[];
-      dart.core::int* length = this.{dart.core::List::length};
-      for (dart.core::int* i = 0; i.{dart.core::num::<}(length); i = i.{dart.core::num::+}(1)) {
+    method /*isNonNullableByDefault, from org-dartlang-sdk:///sdk_nnbd/lib/collection/list.dart */ _filter((dart.core::int*) → dart.core::bool test, dart.core::bool retainMatching) → void {
+      dart.core::List<dart.core::int*> retained = <dart.core::int*>[];
+      dart.core::int length = this.{dart.core::List::length};
+      for (dart.core::int i = 0; i.{dart.core::num::<}(length); i = i.{dart.core::num::+}(1)) {
         dart.core::int* element = this.{dart.core::List::[]}(i);
         if(test.call(element).{dart.core::Object::==}(retainMatching)) {
           retained.{dart.core::List::add}(element);
@@ -267,82 +236,80 @@
         this.{dart.core::List::length} = retained.{dart.core::List::length};
       }
     }
-    method /* from org-dartlang-sdk:///sdk/lib/collection/list.dart */ clear() → void {
-      this.{dart.core::List::length} = 0;
+    method /*isNonNullableByDefault, from org-dartlang-sdk:///sdk_nnbd/lib/collection/list.dart */ cast<R extends dart.core::Object? = dynamic>() → dart.core::List<main::_WithListMixin&Object&ListMixin::cast::R%>
+      return dart.core::List::castFrom<dart.core::int*, main::_WithListMixin&Object&ListMixin::cast::R%>(this);
+    method /*isNonNullableByDefault, from org-dartlang-sdk:///sdk_nnbd/lib/collection/list.dart */ sort([(dart.core::int*, dart.core::int*) →? dart.core::int compare = #C2]) → void {
+      dart._internal::Sort::sort<dart.core::int*>(this, let final (dart.core::int*, dart.core::int*) →? dart.core::int #t3 = compare in #t3.{dart.core::Object::==}(null) ?{(dart.core::int*, dart.core::int*) → dart.core::int} #C6 : #t3{(dart.core::int*, dart.core::int*) → dart.core::int});
     }
-    method /* from org-dartlang-sdk:///sdk/lib/collection/list.dart */ cast<R extends dart.core::Object* = dynamic>() → dart.core::List<main::_WithListMixin&Object&ListMixin::cast::R*>*
-      return dart.core::List::castFrom<dart.core::int*, main::_WithListMixin&Object&ListMixin::cast::R*>(this);
-    method /* from org-dartlang-sdk:///sdk/lib/collection/list.dart */ removeLast() → dart.core::int* {
-      if(this.{dart.core::List::length}.{dart.core::num::==}(0)) {
-        throw dart._internal::IterableElementError::noElement();
-      }
-      dart.core::int* result = this.{dart.core::List::[]}(this.{dart.core::List::length}.{dart.core::num::-}(1));
-      this.{dart.core::List::length} = this.{dart.core::List::length}.{dart.core::num::-}(1);
-      return result;
-    }
-    method /* from org-dartlang-sdk:///sdk/lib/collection/list.dart */ sort([(dart.core::int*, dart.core::int*) →* dart.core::int* compare = #C2]) → void {
-      dart._internal::Sort::sort<dart.core::int*>(this, let final (dart.core::int*, dart.core::int*) →* dart.core::int* #t7 = compare in #t7.{dart.core::Object::==}(null) ?{(dart.core::int*, dart.core::int*) →* dart.core::int*} #C6 : #t7);
-    }
-    static method /* from org-dartlang-sdk:///sdk/lib/collection/list.dart */ _compareAny(dynamic a, dynamic b) → dart.core::int* {
-      return dart.core::Comparable::compare(a as{TypeError,ForDynamic} dart.core::Comparable<dynamic>*, b as{TypeError,ForDynamic} dart.core::Comparable<dynamic>*);
-    }
-    method /* from org-dartlang-sdk:///sdk/lib/collection/list.dart */ shuffle([dart.math::Random* random = #C2]) → void {
-      random.{dart.core::Object::==}(null) ?{dart.math::Random*} random = dart.math::Random::•() : null;
-      dart.core::int* length = this.{dart.core::List::length};
+    method /*isNonNullableByDefault, from org-dartlang-sdk:///sdk_nnbd/lib/collection/list.dart */ shuffle([dart.math::Random? random = #C2]) → void {
+      random.{dart.core::Object::==}(null) ?{dart.math::Random} random = dart.math::Random::•() : null;
+      if(random{dart.math::Random}.{dart.core::Object::==}(null))
+        throw "!";
+      dart.core::int length = this.{dart.core::List::length};
       while (length.{dart.core::num::>}(1)) {
-        dart.core::int* pos = random.{dart.math::Random::nextInt}(length);
+        dart.core::int pos = random{dart.math::Random}.{dart.math::Random::nextInt}(length);
         length = length.{dart.core::num::-}(1);
         dart.core::int* tmp = this.{dart.core::List::[]}(length);
         this.{dart.core::List::[]=}(length, this.{dart.core::List::[]}(pos));
         this.{dart.core::List::[]=}(pos, tmp);
       }
     }
-    method /* from org-dartlang-sdk:///sdk/lib/collection/list.dart */ asMap() → dart.core::Map<dart.core::int*, dart.core::int*>* {
+    method /*isNonNullableByDefault, from org-dartlang-sdk:///sdk_nnbd/lib/collection/list.dart */ asMap() → dart.core::Map<dart.core::int, dart.core::int*> {
       return new dart._internal::ListMapView::•<dart.core::int*>(this);
     }
-    operator /* from org-dartlang-sdk:///sdk/lib/collection/list.dart */ +(generic-covariant-impl dart.core::List<dart.core::int*>* other) → dart.core::List<dart.core::int*>* {
-      dart.core::List<dart.core::int*>* result = let final dart.core::List<dart.core::int*>* #t8 = <dart.core::int*>[] in let final void #t9 = #t8.{dart.core::List::length} = this.{dart.core::List::length}.{dart.core::num::+}(other.{dart.core::List::length}) in #t8;
-      result.{dart.core::List::setRange}(0, this.{dart.core::List::length}, this);
-      result.{dart.core::List::setRange}(this.{dart.core::List::length}, result.{dart.core::List::length}, other);
-      return result;
+    operator /*isNonNullableByDefault, from org-dartlang-sdk:///sdk_nnbd/lib/collection/list.dart */ +(generic-covariant-impl dart.core::List<dart.core::int*> other) → dart.core::List<dart.core::int*>
+      return block {
+        final dart.core::List<dart.core::int*> #t4 = <dart.core::int*>[];
+        {
+          dart.core::Iterator<dart.core::int*> :sync-for-iterator = this.{dart.core::Iterable::iterator};
+          for (; :sync-for-iterator.{dart.core::Iterator::moveNext}(); ) {
+            final dart.core::int* #t5 = :sync-for-iterator.{dart.core::Iterator::current};
+            #t4.{dart.core::List::add}(#t5);
+          }
+        }
+        {
+          dart.core::Iterator<dart.core::int*> :sync-for-iterator = other.{dart.core::Iterable::iterator};
+          for (; :sync-for-iterator.{dart.core::Iterator::moveNext}(); ) {
+            final dart.core::int* #t6 = :sync-for-iterator.{dart.core::Iterator::current};
+            #t4.{dart.core::List::add}(#t6);
+          }
+        }
+      } =>#t4;
+    method /*isNonNullableByDefault, from org-dartlang-sdk:///sdk_nnbd/lib/collection/list.dart */ sublist(dart.core::int start, [dart.core::int? end = #C2]) → dart.core::List<dart.core::int*> {
+      dart.core::int listLength = this.{dart.core::List::length};
+      end.{dart.core::num::==}(null) ?{dart.core::int} end = listLength : null;
+      if(end{dart.core::int}.{dart.core::num::==}(null))
+        throw "!";
+      dart.core::RangeError::checkValidRange(start, end{dart.core::int}, listLength);
+      return dart.core::List::from<dart.core::int*>(this.{dart.collection::ListMixin::getRange}(start, end{dart.core::int}));
     }
-    method /* from org-dartlang-sdk:///sdk/lib/collection/list.dart */ sublist(dart.core::int* start, [dart.core::int* end = #C2]) → dart.core::List<dart.core::int*>* {
-      dart.core::int* listLength = this.{dart.core::List::length};
-      end.{dart.core::num::==}(null) ?{dart.core::int*} end = listLength : null;
-      dart.core::RangeError::checkValidRange(start, end, listLength);
-      dart.core::int* length = end.{dart.core::num::-}(start);
-      dart.core::List<dart.core::int*>* result = let final dart.core::List<dart.core::int*>* #t10 = <dart.core::int*>[] in let final void #t11 = #t10.{dart.core::List::length} = length in #t10;
-      for (dart.core::int* i = 0; i.{dart.core::num::<}(length); i = i.{dart.core::num::+}(1)) {
-        result.{dart.core::List::[]=}(i, this.{dart.core::List::[]}(start.{dart.core::num::+}(i)));
-      }
-      return result;
-    }
-    method /* from org-dartlang-sdk:///sdk/lib/collection/list.dart */ getRange(dart.core::int* start, dart.core::int* end) → dart.core::Iterable<dart.core::int*>* {
+    method /*isNonNullableByDefault, from org-dartlang-sdk:///sdk_nnbd/lib/collection/list.dart */ getRange(dart.core::int start, dart.core::int end) → dart.core::Iterable<dart.core::int*> {
       dart.core::RangeError::checkValidRange(start, end, this.{dart.core::List::length});
       return new dart._internal::SubListIterable::•<dart.core::int*>(this, start, end);
     }
-    method /* from org-dartlang-sdk:///sdk/lib/collection/list.dart */ removeRange(dart.core::int* start, dart.core::int* end) → void {
+    method /*isNonNullableByDefault, from org-dartlang-sdk:///sdk_nnbd/lib/collection/list.dart */ removeRange(dart.core::int start, dart.core::int end) → void {
       dart.core::RangeError::checkValidRange(start, end, this.{dart.core::List::length});
       if(end.{dart.core::num::>}(start)) {
         this.{dart.collection::ListMixin::_closeGap}(start, end);
       }
     }
-    method /* from org-dartlang-sdk:///sdk/lib/collection/list.dart */ fillRange(dart.core::int* start, dart.core::int* end, [generic-covariant-impl dart.core::int* fill = #C2]) → void {
+    method /*isNonNullableByDefault, from org-dartlang-sdk:///sdk_nnbd/lib/collection/list.dart */ fillRange(dart.core::int start, dart.core::int end, [generic-covariant-impl dart.core::int? fill = #C2]) → void {
+      dart.core::int* value = fill as{ForNonNullableByDefault} dart.core::int*;
       dart.core::RangeError::checkValidRange(start, end, this.{dart.core::List::length});
-      for (dart.core::int* i = start; i.{dart.core::num::<}(end); i = i.{dart.core::num::+}(1)) {
-        this.{dart.core::List::[]=}(i, fill);
+      for (dart.core::int i = start; i.{dart.core::num::<}(end); i = i.{dart.core::num::+}(1)) {
+        this.{dart.core::List::[]=}(i, value);
       }
     }
-    method /* from org-dartlang-sdk:///sdk/lib/collection/list.dart */ setRange(dart.core::int* start, dart.core::int* end, generic-covariant-impl dart.core::Iterable<dart.core::int*>* iterable, [dart.core::int* skipCount = #C7]) → void {
+    method /*isNonNullableByDefault, from org-dartlang-sdk:///sdk_nnbd/lib/collection/list.dart */ setRange(dart.core::int start, dart.core::int end, generic-covariant-impl dart.core::Iterable<dart.core::int*> iterable, [dart.core::int skipCount = #C7]) → void {
       dart.core::RangeError::checkValidRange(start, end, this.{dart.core::List::length});
-      dart.core::int* length = end.{dart.core::num::-}(start);
+      dart.core::int length = end.{dart.core::num::-}(start);
       if(length.{dart.core::num::==}(0))
         return;
       dart.core::RangeError::checkNotNegative(skipCount, "skipCount");
-      dart.core::List<dart.core::int*>* otherList;
-      dart.core::int* otherStart;
-      if(iterable is dart.core::List<dart.core::int*>*) {
-        otherList = iterable{dart.core::List<dart.core::int*>*};
+      dart.core::List<dart.core::int*> otherList;
+      dart.core::int otherStart;
+      if(iterable is{ForNonNullableByDefault} dart.core::List<dart.core::int*>) {
+        otherList = iterable{dart.core::List<dart.core::int*>};
         otherStart = skipCount;
       }
       else {
@@ -353,77 +320,108 @@
         throw dart._internal::IterableElementError::tooFew();
       }
       if(otherStart.{dart.core::num::<}(start)) {
-        for (dart.core::int* i = length.{dart.core::num::-}(1); i.{dart.core::num::>=}(0); i = i.{dart.core::num::-}(1)) {
+        for (dart.core::int i = length.{dart.core::num::-}(1); i.{dart.core::num::>=}(0); i = i.{dart.core::num::-}(1)) {
           this.{dart.core::List::[]=}(start.{dart.core::num::+}(i), otherList.{dart.core::List::[]}(otherStart.{dart.core::num::+}(i)));
         }
       }
       else {
-        for (dart.core::int* i = 0; i.{dart.core::num::<}(length); i = i.{dart.core::num::+}(1)) {
+        for (dart.core::int i = 0; i.{dart.core::num::<}(length); i = i.{dart.core::num::+}(1)) {
           this.{dart.core::List::[]=}(start.{dart.core::num::+}(i), otherList.{dart.core::List::[]}(otherStart.{dart.core::num::+}(i)));
         }
       }
     }
-    method /* from org-dartlang-sdk:///sdk/lib/collection/list.dart */ replaceRange(dart.core::int* start, dart.core::int* end, generic-covariant-impl dart.core::Iterable<dart.core::int*>* newContents) → void {
+    method /*isNonNullableByDefault, from org-dartlang-sdk:///sdk_nnbd/lib/collection/list.dart */ replaceRange(dart.core::int start, dart.core::int end, generic-covariant-impl dart.core::Iterable<dart.core::int*> newContents) → void {
       dart.core::RangeError::checkValidRange(start, end, this.{dart.core::List::length});
-      if(!(newContents is dart._internal::EfficientLengthIterable<dynamic>*)) {
+      if(start.{dart.core::num::==}(this.{dart.core::List::length})) {
+        this.{dart.collection::ListMixin::addAll}(newContents);
+        return;
+      }
+      if(!(newContents is{ForNonNullableByDefault} dart._internal::EfficientLengthIterable<dynamic>)) {
         newContents = newContents.{dart.core::Iterable::toList}();
       }
-      dart.core::int* removeLength = end.{dart.core::num::-}(start);
-      dart.core::int* insertLength = newContents.{dart.core::Iterable::length};
+      dart.core::int removeLength = end.{dart.core::num::-}(start);
+      dart.core::int insertLength = newContents.{dart.core::Iterable::length};
       if(removeLength.{dart.core::num::>=}(insertLength)) {
-        dart.core::int* insertEnd = start.{dart.core::num::+}(insertLength);
+        dart.core::int insertEnd = start.{dart.core::num::+}(insertLength);
         this.{dart.collection::ListMixin::setRange}(start, insertEnd, newContents);
         if(removeLength.{dart.core::num::>}(insertLength)) {
           this.{dart.collection::ListMixin::_closeGap}(insertEnd, end);
         }
       }
-      else {
-        dart.core::int* delta = insertLength.{dart.core::num::-}(removeLength);
-        dart.core::int* newLength = this.{dart.core::List::length}.{dart.core::num::+}(delta);
-        dart.core::int* insertEnd = start.{dart.core::num::+}(insertLength);
-        this.{dart.core::List::length} = newLength;
-        this.{dart.collection::ListMixin::setRange}(insertEnd, newLength, this, end);
-        this.{dart.collection::ListMixin::setRange}(start, insertEnd, newContents);
-      }
+      else
+        if(end.{dart.core::num::==}(this.{dart.core::List::length})) {
+          dart.core::int i = start;
+          {
+            dart.core::Iterator<dart.core::int*> :sync-for-iterator = newContents.{dart.core::Iterable::iterator};
+            for (; :sync-for-iterator.{dart.core::Iterator::moveNext}(); ) {
+              dart.core::int* element = :sync-for-iterator.{dart.core::Iterator::current};
+              {
+                if(i.{dart.core::num::<}(end)) {
+                  this.{dart.core::List::[]=}(i, element);
+                }
+                else {
+                  this.{dart.collection::ListMixin::add}(element);
+                }
+                i = i.{dart.core::num::+}(1);
+              }
+            }
+          }
+        }
+        else {
+          dart.core::int delta = insertLength.{dart.core::num::-}(removeLength);
+          dart.core::int oldLength = this.{dart.core::List::length};
+          dart.core::int insertEnd = start.{dart.core::num::+}(insertLength);
+          for (dart.core::int i = oldLength.{dart.core::num::-}(delta); i.{dart.core::num::<}(oldLength); i = i.{dart.core::num::+}(1)) {
+            this.{dart.collection::ListMixin::add}(this.{dart.core::List::[]}(i.{dart.core::num::>}(0) ?{dart.core::int} i : 0));
+          }
+          if(insertEnd.{dart.core::num::<}(oldLength)) {
+            this.{dart.collection::ListMixin::setRange}(insertEnd, oldLength, this, end);
+          }
+          this.{dart.collection::ListMixin::setRange}(start, insertEnd, newContents);
+        }
     }
-    method /* from org-dartlang-sdk:///sdk/lib/collection/list.dart */ indexOf(generic-covariant-impl dart.core::Object* element, [dart.core::int* start = #C7]) → dart.core::int* {
+    method /*isNonNullableByDefault, from org-dartlang-sdk:///sdk_nnbd/lib/collection/list.dart */ indexOf(generic-covariant-impl dart.core::Object? element, [dart.core::int start = #C7]) → dart.core::int {
       if(start.{dart.core::num::<}(0))
         start = 0;
-      for (dart.core::int* i = start; i.{dart.core::num::<}(this.{dart.core::List::length}); i = i.{dart.core::num::+}(1)) {
+      for (dart.core::int i = start; i.{dart.core::num::<}(this.{dart.core::List::length}); i = i.{dart.core::num::+}(1)) {
         if(this.{dart.core::List::[]}(i).{dart.core::Object::==}(element))
           return i;
       }
       return 1.{dart.core::int::unary-}();
     }
-    method /* from org-dartlang-sdk:///sdk/lib/collection/list.dart */ indexWhere((dart.core::int*) →* dart.core::bool* test, [dart.core::int* start = #C7]) → dart.core::int* {
+    method /*isNonNullableByDefault, from org-dartlang-sdk:///sdk_nnbd/lib/collection/list.dart */ indexWhere((dart.core::int*) → dart.core::bool test, [dart.core::int start = #C7]) → dart.core::int {
       if(start.{dart.core::num::<}(0))
         start = 0;
-      for (dart.core::int* i = start; i.{dart.core::num::<}(this.{dart.core::List::length}); i = i.{dart.core::num::+}(1)) {
+      for (dart.core::int i = start; i.{dart.core::num::<}(this.{dart.core::List::length}); i = i.{dart.core::num::+}(1)) {
         if(test.call(this.{dart.core::List::[]}(i)))
           return i;
       }
       return 1.{dart.core::int::unary-}();
     }
-    method /* from org-dartlang-sdk:///sdk/lib/collection/list.dart */ lastIndexOf(generic-covariant-impl dart.core::Object* element, [dart.core::int* start = #C2]) → dart.core::int* {
-      if(start.{dart.core::num::==}(null) || start.{dart.core::num::>=}(this.{dart.core::List::length}))
+    method /*isNonNullableByDefault, from org-dartlang-sdk:///sdk_nnbd/lib/collection/list.dart */ lastIndexOf(generic-covariant-impl dart.core::Object? element, [dart.core::int? start = #C2]) → dart.core::int {
+      if(start.{dart.core::num::==}(null) || start{dart.core::int}.{dart.core::num::>=}(this.{dart.core::List::length}))
         start = this.{dart.core::List::length}.{dart.core::num::-}(1);
-      for (dart.core::int* i = start; i.{dart.core::num::>=}(0); i = i.{dart.core::num::-}(1)) {
+      if(start{dart.core::int}.{dart.core::num::==}(null))
+        throw "!";
+      for (dart.core::int i = start{dart.core::int}; i.{dart.core::num::>=}(0); i = i.{dart.core::num::-}(1)) {
         if(this.{dart.core::List::[]}(i).{dart.core::Object::==}(element))
           return i;
       }
       return 1.{dart.core::int::unary-}();
     }
-    method /* from org-dartlang-sdk:///sdk/lib/collection/list.dart */ lastIndexWhere((dart.core::int*) →* dart.core::bool* test, [dart.core::int* start = #C2]) → dart.core::int* {
-      if(start.{dart.core::num::==}(null) || start.{dart.core::num::>=}(this.{dart.core::List::length}))
+    method /*isNonNullableByDefault, from org-dartlang-sdk:///sdk_nnbd/lib/collection/list.dart */ lastIndexWhere((dart.core::int*) → dart.core::bool test, [dart.core::int? start = #C2]) → dart.core::int {
+      if(start.{dart.core::num::==}(null) || start{dart.core::int}.{dart.core::num::>=}(this.{dart.core::List::length}))
         start = this.{dart.core::List::length}.{dart.core::num::-}(1);
-      for (dart.core::int* i = start; i.{dart.core::num::>=}(0); i = i.{dart.core::num::-}(1)) {
+      if(start{dart.core::int}.{dart.core::num::==}(null))
+        throw "!";
+      for (dart.core::int i = start{dart.core::int}; i.{dart.core::num::>=}(0); i = i.{dart.core::num::-}(1)) {
         if(test.call(this.{dart.core::List::[]}(i)))
           return i;
       }
       return 1.{dart.core::int::unary-}();
     }
-    method /* from org-dartlang-sdk:///sdk/lib/collection/list.dart */ insert(dart.core::int* index, generic-covariant-impl dart.core::int* element) → void {
-      dart.core::ArgumentError::checkNotNull<dart.core::int*>(index, "index");
+    method /*isNonNullableByDefault, from org-dartlang-sdk:///sdk_nnbd/lib/collection/list.dart */ insert(dart.core::int index, generic-covariant-impl dart.core::int* element) → void {
+      dart.core::ArgumentError::checkNotNull<dart.core::int>(index, "index");
       dart.core::RangeError::checkValueInInterval(index, 0, this.{dart.core::List::length}, "index");
       if(index.{dart.core::num::==}(this.{dart.core::List::length})) {
         this.{dart.collection::ListMixin::add}(element);
@@ -433,45 +431,112 @@
       this.{dart.collection::ListMixin::setRange}(index.{dart.core::num::+}(1), this.{dart.core::List::length}, this, index);
       this.{dart.core::List::[]=}(index, element);
     }
-    method /* from org-dartlang-sdk:///sdk/lib/collection/list.dart */ removeAt(dart.core::int* index) → dart.core::int* {
+    method /*isNonNullableByDefault, from org-dartlang-sdk:///sdk_nnbd/lib/collection/list.dart */ removeAt(dart.core::int index) → dart.core::int* {
       dart.core::int* result = this.{dart.core::List::[]}(index);
       this.{dart.collection::ListMixin::_closeGap}(index, index.{dart.core::num::+}(1));
       return result;
     }
-    method /* from org-dartlang-sdk:///sdk/lib/collection/list.dart */ insertAll(dart.core::int* index, generic-covariant-impl dart.core::Iterable<dart.core::int*>* iterable) → void {
+    method /*isNonNullableByDefault, from org-dartlang-sdk:///sdk_nnbd/lib/collection/list.dart */ insertAll(dart.core::int index, generic-covariant-impl dart.core::Iterable<dart.core::int*> iterable) → void {
       dart.core::RangeError::checkValueInInterval(index, 0, this.{dart.core::List::length}, "index");
-      if(!(iterable is dart._internal::EfficientLengthIterable<dynamic>*) || dart.core::identical(iterable, this)) {
+      if(index.{dart.core::num::==}(this.{dart.core::List::length})) {
+        this.{dart.collection::ListMixin::addAll}(iterable);
+        return;
+      }
+      if(!(iterable is{ForNonNullableByDefault} dart._internal::EfficientLengthIterable<dynamic>) || dart.core::identical(iterable, this)) {
         iterable = iterable.{dart.core::Iterable::toList}();
       }
-      dart.core::int* insertionLength = iterable.{dart.core::Iterable::length};
-      this.{dart.core::List::length} = this.{dart.core::List::length}.{dart.core::num::+}(insertionLength);
+      dart.core::int insertionLength = iterable.{dart.core::Iterable::length};
+      if(insertionLength.{dart.core::num::==}(0)) {
+        return;
+      }
+      dart.core::int oldLength = this.{dart.core::List::length};
+      for (dart.core::int i = oldLength.{dart.core::num::-}(insertionLength); i.{dart.core::num::<}(oldLength); i = i.{dart.core::num::+}(1)) {
+        this.{dart.collection::ListMixin::add}(this.{dart.core::List::[]}(i.{dart.core::num::>}(0) ?{dart.core::int} i : 0));
+      }
       if(!iterable.{dart.core::Iterable::length}.{dart.core::num::==}(insertionLength)) {
         this.{dart.core::List::length} = this.{dart.core::List::length}.{dart.core::num::-}(insertionLength);
         throw new dart.core::ConcurrentModificationError::•(iterable);
       }
-      this.{dart.collection::ListMixin::setRange}(index.{dart.core::num::+}(insertionLength), this.{dart.core::List::length}, this, index);
+      dart.core::int oldCopyStart = index.{dart.core::num::+}(insertionLength);
+      if(oldCopyStart.{dart.core::num::<}(oldLength)) {
+        this.{dart.collection::ListMixin::setRange}(oldCopyStart, oldLength, this, index);
+      }
       this.{dart.collection::ListMixin::setAll}(index, iterable);
     }
-    method /* from org-dartlang-sdk:///sdk/lib/collection/list.dart */ setAll(dart.core::int* index, generic-covariant-impl dart.core::Iterable<dart.core::int*>* iterable) → void {
-      if(iterable is dart.core::List<dynamic>*) {
+    method /*isNonNullableByDefault, from org-dartlang-sdk:///sdk_nnbd/lib/collection/list.dart */ setAll(dart.core::int index, generic-covariant-impl dart.core::Iterable<dart.core::int*> iterable) → void {
+      if(iterable is{ForNonNullableByDefault} dart.core::List<dynamic>) {
         this.{dart.collection::ListMixin::setRange}(index, index.{dart.core::num::+}(iterable.{dart.core::Iterable::length}), iterable);
       }
       else {
         {
-          dart.core::Iterator<dart.core::int*>* :sync-for-iterator = iterable.{dart.core::Iterable::iterator};
+          dart.core::Iterator<dart.core::int*> :sync-for-iterator = iterable.{dart.core::Iterable::iterator};
           for (; :sync-for-iterator.{dart.core::Iterator::moveNext}(); ) {
             dart.core::int* element = :sync-for-iterator.{dart.core::Iterator::current};
             {
-              this.{dart.core::List::[]=}(let final dart.core::int* #t12 = index in let final dart.core::int* #t13 = index = #t12.{dart.core::num::+}(1) in #t12, element);
+              this.{dart.core::List::[]=}(let final dart.core::int #t7 = index in let final dart.core::int #t8 = index = #t7.{dart.core::num::+}(1) in #t7, element);
             }
           }
         }
       }
     }
-    get /* from org-dartlang-sdk:///sdk/lib/collection/list.dart */ reversed() → dart.core::Iterable<dart.core::int*>*
+    get /*isNonNullableByDefault, from org-dartlang-sdk:///sdk_nnbd/lib/collection/list.dart */ reversed() → dart.core::Iterable<dart.core::int*>
       return new dart._internal::ReversedListIterable::•<dart.core::int*>(this);
-    method /* from org-dartlang-sdk:///sdk/lib/collection/list.dart */ toString() → dart.core::String*
+    method /*isNonNullableByDefault, from org-dartlang-sdk:///sdk_nnbd/lib/collection/list.dart */ toString() → dart.core::String
       return dart.collection::IterableBase::iterableToFullString(this, "[", "]");
+    abstract member-signature get _identityHashCode() → dart.core::int*;
+    abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfTrue(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfFalse(dynamic type) → dart.core::bool*;
+    abstract member-signature operator ==(dynamic other) → dart.core::bool*;
+    abstract member-signature get hashCode() → dart.core::int*;
+    abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic;
+    abstract member-signature get runtimeType() → dart.core::Type*;
+    abstract member-signature set length(dart.core::int* newLength) → void;
+    get /*isNonNullableByDefault, from org-dartlang-sdk:///sdk_nnbd/lib/collection/list.dart */ first() → dart.core::int* {
+      if(this.{dart.core::List::length}.{dart.core::num::==}(0))
+        throw dart._internal::IterableElementError::noElement();
+      return this.{dart.core::List::[]}(0);
+    }
+    set /*isNonNullableByDefault, from org-dartlang-sdk:///sdk_nnbd/lib/collection/list.dart */ first(generic-covariant-impl dart.core::int* value) → void {
+      if(this.{dart.core::List::length}.{dart.core::num::==}(0))
+        throw dart._internal::IterableElementError::noElement();
+      this.{dart.core::List::[]=}(0, value);
+    }
+    get /*isNonNullableByDefault, from org-dartlang-sdk:///sdk_nnbd/lib/collection/list.dart */ last() → dart.core::int* {
+      if(this.{dart.core::List::length}.{dart.core::num::==}(0))
+        throw dart._internal::IterableElementError::noElement();
+      return this.{dart.core::List::[]}(this.{dart.core::List::length}.{dart.core::num::-}(1));
+    }
+    set /*isNonNullableByDefault, from org-dartlang-sdk:///sdk_nnbd/lib/collection/list.dart */ last(generic-covariant-impl dart.core::int* value) → void {
+      if(this.{dart.core::List::length}.{dart.core::num::==}(0))
+        throw dart._internal::IterableElementError::noElement();
+      this.{dart.core::List::[]=}(this.{dart.core::List::length}.{dart.core::num::-}(1), value);
+    }
+    get /*isNonNullableByDefault, from org-dartlang-sdk:///sdk_nnbd/lib/collection/list.dart */ single() → dart.core::int* {
+      if(this.{dart.core::List::length}.{dart.core::num::==}(0))
+        throw dart._internal::IterableElementError::noElement();
+      if(this.{dart.core::List::length}.{dart.core::num::>}(1))
+        throw dart._internal::IterableElementError::tooMany();
+      return this.{dart.core::List::[]}(0);
+    }
+    method /*isNonNullableByDefault, from org-dartlang-sdk:///sdk_nnbd/lib/collection/list.dart */ add(generic-covariant-impl dart.core::int* element) → void {
+      this.{dart.core::List::[]=}(let final dart.core::int #t9 = this.{dart.core::List::length} in let final dart.core::int #t10 = this.{dart.core::List::length} = #t9.{dart.core::num::+}(1) in #t9, element);
+    }
+    method /*isNonNullableByDefault, from org-dartlang-sdk:///sdk_nnbd/lib/collection/list.dart */ clear() → void {
+      this.{dart.core::List::length} = 0;
+    }
+    method /*isNonNullableByDefault, from org-dartlang-sdk:///sdk_nnbd/lib/collection/list.dart */ removeLast() → dart.core::int* {
+      if(this.{dart.core::List::length}.{dart.core::num::==}(0)) {
+        throw dart._internal::IterableElementError::noElement();
+      }
+      dart.core::int* result = this.{dart.core::List::[]}(this.{dart.core::List::length}.{dart.core::num::-}(1));
+      this.{dart.core::List::length} = this.{dart.core::List::length}.{dart.core::num::-}(1);
+      return result;
+    }
+    static method /*isNonNullableByDefault, from org-dartlang-sdk:///sdk_nnbd/lib/collection/list.dart */ _compareAny(dynamic a, dynamic b) → dart.core::int {
+      return dart.core::Comparable::compare(a as{ForNonNullableByDefault} dart.core::Comparable<dynamic>, b as{ForNonNullableByDefault} dart.core::Comparable<dynamic>);
+    }
   }
   class WithListMixin extends main::_WithListMixin&Object&ListMixin {
     field dart.core::int* length = 2;
@@ -482,6 +547,57 @@
       return index;
     operator []=(dart.core::int* index, generic-covariant-impl dart.core::int* value) → void
       return null;
+    abstract member-signature get iterator() → dart.core::Iterator<dart.core::int*>*;
+    abstract member-signature method elementAt(dart.core::int* index) → dart.core::int*;
+    abstract member-signature method followedBy(generic-covariant-impl dart.core::Iterable<dart.core::int*>* other) → dart.core::Iterable<dart.core::int*>*;
+    abstract member-signature method forEach((dart.core::int*) →* void action) → void;
+    abstract member-signature get isEmpty() → dart.core::bool*;
+    abstract member-signature get isNotEmpty() → dart.core::bool*;
+    abstract member-signature method contains(dart.core::Object* element) → dart.core::bool*;
+    abstract member-signature method every((dart.core::int*) →* dart.core::bool* test) → dart.core::bool*;
+    abstract member-signature method any((dart.core::int*) →* dart.core::bool* test) → dart.core::bool*;
+    abstract member-signature method firstWhere((dart.core::int*) →* dart.core::bool* test, {generic-covariant-impl () →* dart.core::int* orElse = #C2}) → dart.core::int*;
+    abstract member-signature method lastWhere((dart.core::int*) →* dart.core::bool* test, {generic-covariant-impl () →* dart.core::int* orElse = #C2}) → dart.core::int*;
+    abstract member-signature method singleWhere((dart.core::int*) →* dart.core::bool* test, {generic-covariant-impl () →* dart.core::int* orElse = #C2}) → dart.core::int*;
+    abstract member-signature method join([dart.core::String* separator = #C4]) → dart.core::String*;
+    abstract member-signature method where((dart.core::int*) →* dart.core::bool* test) → dart.core::Iterable<dart.core::int*>*;
+    abstract member-signature method whereType<T extends dart.core::Object* = dynamic>() → dart.core::Iterable<main::WithListMixin::whereType::T*>*;
+    abstract member-signature method map<T extends dart.core::Object* = dynamic>((dart.core::int*) →* main::WithListMixin::map::T* f) → dart.core::Iterable<main::WithListMixin::map::T*>*;
+    abstract member-signature method expand<T extends dart.core::Object* = dynamic>((dart.core::int*) →* dart.core::Iterable<main::WithListMixin::expand::T*>* f) → dart.core::Iterable<main::WithListMixin::expand::T*>*;
+    abstract member-signature method reduce(generic-covariant-impl (dart.core::int*, dart.core::int*) →* dart.core::int* combine) → dart.core::int*;
+    abstract member-signature method fold<T extends dart.core::Object* = dynamic>(main::WithListMixin::fold::T* initialValue, (main::WithListMixin::fold::T*, dart.core::int*) →* main::WithListMixin::fold::T* combine) → main::WithListMixin::fold::T*;
+    abstract member-signature method skip(dart.core::int* count) → dart.core::Iterable<dart.core::int*>*;
+    abstract member-signature method skipWhile((dart.core::int*) →* dart.core::bool* test) → dart.core::Iterable<dart.core::int*>*;
+    abstract member-signature method take(dart.core::int* count) → dart.core::Iterable<dart.core::int*>*;
+    abstract member-signature method takeWhile((dart.core::int*) →* dart.core::bool* test) → dart.core::Iterable<dart.core::int*>*;
+    abstract member-signature method toList({dart.core::bool* growable = #C5}) → dart.core::List<dart.core::int*>*;
+    abstract member-signature method toSet() → dart.core::Set<dart.core::int*>*;
+    abstract member-signature method addAll(generic-covariant-impl dart.core::Iterable<dart.core::int*>* iterable) → void;
+    abstract member-signature method remove(dart.core::Object* element) → dart.core::bool*;
+    abstract member-signature method _closeGap(dart.core::int* start, dart.core::int* end) → void;
+    abstract member-signature method removeWhere((dart.core::int*) →* dart.core::bool* test) → void;
+    abstract member-signature method retainWhere((dart.core::int*) →* dart.core::bool* test) → void;
+    abstract member-signature method _filter((dart.core::int*) →* dart.core::bool* test, dart.core::bool* retainMatching) → void;
+    abstract member-signature method cast<R extends dart.core::Object* = dynamic>() → dart.core::List<main::WithListMixin::cast::R*>*;
+    abstract member-signature method sort([(dart.core::int*, dart.core::int*) →* dart.core::int* compare = #C2]) → void;
+    abstract member-signature method shuffle([dart.math::Random* random = #C2]) → void;
+    abstract member-signature method asMap() → dart.core::Map<dart.core::int*, dart.core::int*>*;
+    abstract member-signature operator +(generic-covariant-impl dart.core::List<dart.core::int*>* other) → dart.core::List<dart.core::int*>*;
+    abstract member-signature method sublist(dart.core::int* start, [dart.core::int* end = #C2]) → dart.core::List<dart.core::int*>*;
+    abstract member-signature method getRange(dart.core::int* start, dart.core::int* end) → dart.core::Iterable<dart.core::int*>*;
+    abstract member-signature method removeRange(dart.core::int* start, dart.core::int* end) → void;
+    abstract member-signature method fillRange(dart.core::int* start, dart.core::int* end, [generic-covariant-impl dart.core::int* fill = #C2]) → void;
+    abstract member-signature method setRange(dart.core::int* start, dart.core::int* end, generic-covariant-impl dart.core::Iterable<dart.core::int*>* iterable, [dart.core::int* skipCount = #C7]) → void;
+    abstract member-signature method replaceRange(dart.core::int* start, dart.core::int* end, generic-covariant-impl dart.core::Iterable<dart.core::int*>* newContents) → void;
+    abstract member-signature method indexOf(generic-covariant-impl dart.core::Object* element, [dart.core::int* start = #C7]) → dart.core::int*;
+    abstract member-signature method indexWhere((dart.core::int*) →* dart.core::bool* test, [dart.core::int* start = #C7]) → dart.core::int*;
+    abstract member-signature method lastIndexOf(generic-covariant-impl dart.core::Object* element, [dart.core::int* start = #C2]) → dart.core::int*;
+    abstract member-signature method lastIndexWhere((dart.core::int*) →* dart.core::bool* test, [dart.core::int* start = #C2]) → dart.core::int*;
+    abstract member-signature method insert(dart.core::int* index, generic-covariant-impl dart.core::int* element) → void;
+    abstract member-signature method removeAt(dart.core::int* index) → dart.core::int*;
+    abstract member-signature method insertAll(dart.core::int* index, generic-covariant-impl dart.core::Iterable<dart.core::int*>* iterable) → void;
+    abstract member-signature method setAll(dart.core::int* index, generic-covariant-impl dart.core::Iterable<dart.core::int*>* iterable) → void;
+    abstract member-signature get reversed() → dart.core::Iterable<dart.core::int*>*;
   }
 }
 constants  {
diff --git a/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_23.yaml.world.1.expect b/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_23.yaml.world.1.expect
index 414582b..d51343a 100644
--- a/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_23.yaml.world.1.expect
+++ b/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_23.yaml.world.1.expect
@@ -5,6 +5,16 @@
     const synthetic constructor •() → main::_A&Object&B*
       : super dart.core::Object::•()
       ;
+    abstract member-signature get _identityHashCode() → dart.core::int*;
+    abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfTrue(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfFalse(dynamic type) → dart.core::bool*;
+    abstract member-signature operator ==(dynamic other) → dart.core::bool*;
+    abstract member-signature get hashCode() → dart.core::int*;
+    abstract member-signature method toString() → dart.core::String*;
+    abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic;
+    abstract member-signature get runtimeType() → dart.core::Type*;
     method bar() → dynamic {}
   }
   class A extends main::_A&Object&B {
@@ -18,5 +28,15 @@
       : super dart.core::Object::•()
       ;
     method bar() → dynamic {}
+    abstract member-signature get _identityHashCode() → dart.core::int*;
+    abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfTrue(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfFalse(dynamic type) → dart.core::bool*;
+    abstract member-signature operator ==(dynamic other) → dart.core::bool*;
+    abstract member-signature get hashCode() → dart.core::int*;
+    abstract member-signature method toString() → dart.core::String*;
+    abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic;
+    abstract member-signature get runtimeType() → dart.core::Type*;
   }
 }
diff --git a/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_23.yaml.world.2.expect b/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_23.yaml.world.2.expect
index 414582b..d51343a 100644
--- a/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_23.yaml.world.2.expect
+++ b/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_23.yaml.world.2.expect
@@ -5,6 +5,16 @@
     const synthetic constructor •() → main::_A&Object&B*
       : super dart.core::Object::•()
       ;
+    abstract member-signature get _identityHashCode() → dart.core::int*;
+    abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfTrue(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfFalse(dynamic type) → dart.core::bool*;
+    abstract member-signature operator ==(dynamic other) → dart.core::bool*;
+    abstract member-signature get hashCode() → dart.core::int*;
+    abstract member-signature method toString() → dart.core::String*;
+    abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic;
+    abstract member-signature get runtimeType() → dart.core::Type*;
     method bar() → dynamic {}
   }
   class A extends main::_A&Object&B {
@@ -18,5 +28,15 @@
       : super dart.core::Object::•()
       ;
     method bar() → dynamic {}
+    abstract member-signature get _identityHashCode() → dart.core::int*;
+    abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfTrue(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfFalse(dynamic type) → dart.core::bool*;
+    abstract member-signature operator ==(dynamic other) → dart.core::bool*;
+    abstract member-signature get hashCode() → dart.core::int*;
+    abstract member-signature method toString() → dart.core::String*;
+    abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic;
+    abstract member-signature get runtimeType() → dart.core::Type*;
   }
 }
diff --git a/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_25.yaml.world.1.expect b/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_25.yaml.world.1.expect
index 0f4a4f3..9d5bc78 100644
--- a/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_25.yaml.world.1.expect
+++ b/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_25.yaml.world.1.expect
@@ -25,5 +25,15 @@
     method callBar() → void {
       invalid-expression "org-dartlang-test:///main.dart:9:5: Error: Can't use 'bar' because it is declared more than once.\n    bar();\n    ^".call();
     }
+    abstract member-signature get _identityHashCode() → dart.core::int*;
+    abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfTrue(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfFalse(dynamic type) → dart.core::bool*;
+    abstract member-signature operator ==(dynamic other) → dart.core::bool*;
+    abstract member-signature get hashCode() → dart.core::int*;
+    abstract member-signature method toString() → dart.core::String*;
+    abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic;
+    abstract member-signature get runtimeType() → dart.core::Type*;
   }
 }
diff --git a/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_25.yaml.world.2.expect b/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_25.yaml.world.2.expect
index 0f4a4f3..9d5bc78 100644
--- a/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_25.yaml.world.2.expect
+++ b/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_25.yaml.world.2.expect
@@ -25,5 +25,15 @@
     method callBar() → void {
       invalid-expression "org-dartlang-test:///main.dart:9:5: Error: Can't use 'bar' because it is declared more than once.\n    bar();\n    ^".call();
     }
+    abstract member-signature get _identityHashCode() → dart.core::int*;
+    abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfTrue(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfFalse(dynamic type) → dart.core::bool*;
+    abstract member-signature operator ==(dynamic other) → dart.core::bool*;
+    abstract member-signature get hashCode() → dart.core::int*;
+    abstract member-signature method toString() → dart.core::String*;
+    abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic;
+    abstract member-signature get runtimeType() → dart.core::Type*;
   }
 }
diff --git a/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_26.yaml.world.1.expect b/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_26.yaml.world.1.expect
index 65bd1da1..24f71b0 100644
--- a/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_26.yaml.world.1.expect
+++ b/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_26.yaml.world.1.expect
@@ -18,6 +18,16 @@
   class A1 extends dart.core::Object {
     constructor foo() → main::A1*
       : super dart.core::Object::•() {}
+    abstract member-signature get _identityHashCode() → dart.core::int*;
+    abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfTrue(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfFalse(dynamic type) → dart.core::bool*;
+    abstract member-signature operator ==(dynamic other) → dart.core::bool*;
+    abstract member-signature get hashCode() → dart.core::int*;
+    abstract member-signature method toString() → dart.core::String*;
+    abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic;
+    abstract member-signature get runtimeType() → dart.core::Type*;
   }
   static method main() → dynamic {
     invalid-expression "org-dartlang-test:///main.dart:6:7: Error: Can't use 'foo' because it is declared more than once.\n  new A1.foo();\n      ^";
diff --git a/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_26.yaml.world.2.expect b/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_26.yaml.world.2.expect
index 65bd1da1..24f71b0 100644
--- a/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_26.yaml.world.2.expect
+++ b/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_26.yaml.world.2.expect
@@ -18,6 +18,16 @@
   class A1 extends dart.core::Object {
     constructor foo() → main::A1*
       : super dart.core::Object::•() {}
+    abstract member-signature get _identityHashCode() → dart.core::int*;
+    abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfTrue(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfFalse(dynamic type) → dart.core::bool*;
+    abstract member-signature operator ==(dynamic other) → dart.core::bool*;
+    abstract member-signature get hashCode() → dart.core::int*;
+    abstract member-signature method toString() → dart.core::String*;
+    abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic;
+    abstract member-signature get runtimeType() → dart.core::Type*;
   }
   static method main() → dynamic {
     invalid-expression "org-dartlang-test:///main.dart:6:7: Error: Can't use 'foo' because it is declared more than once.\n  new A1.foo();\n      ^";
diff --git a/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_28.yaml.world.1.expect b/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_28.yaml.world.1.expect
index 7bc33641..42d2053 100644
--- a/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_28.yaml.world.1.expect
+++ b/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_28.yaml.world.1.expect
@@ -8,6 +8,16 @@
     method a() → dynamic {
       dart.core::print("Class A method a");
     }
+    abstract member-signature get _identityHashCode() → dart.core::int*;
+    abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfTrue(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfFalse(dynamic type) → dart.core::bool*;
+    abstract member-signature operator ==(dynamic other) → dart.core::bool*;
+    abstract member-signature get hashCode() → dart.core::int*;
+    abstract member-signature method toString() → dart.core::String*;
+    abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic;
+    abstract member-signature get runtimeType() → dart.core::Type*;
   }
   abstract class B extends main::A /*isMixinDeclaration*/  {
     method b() → dynamic {
@@ -18,6 +28,16 @@
     synthetic constructor •() → main::_C&A&B*
       : super dart.core::Object::•()
       ;
+    abstract member-signature get _identityHashCode() → dart.core::int*;
+    abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfTrue(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfFalse(dynamic type) → dart.core::bool*;
+    abstract member-signature operator ==(dynamic other) → dart.core::bool*;
+    abstract member-signature get hashCode() → dart.core::int*;
+    abstract member-signature method toString() → dart.core::String*;
+    abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic;
+    abstract member-signature get runtimeType() → dart.core::Type*;
   }
   abstract class C extends main::_C&A&B /*isMixinDeclaration*/  {
     method c() → dynamic {
diff --git a/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_28.yaml.world.2.expect b/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_28.yaml.world.2.expect
index e243222..1b7c9b8 100644
--- a/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_28.yaml.world.2.expect
+++ b/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_28.yaml.world.2.expect
@@ -8,6 +8,16 @@
     method a() → dynamic {
       dart.core::print("Class A method a!");
     }
+    abstract member-signature get _identityHashCode() → dart.core::int*;
+    abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfTrue(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfFalse(dynamic type) → dart.core::bool*;
+    abstract member-signature operator ==(dynamic other) → dart.core::bool*;
+    abstract member-signature get hashCode() → dart.core::int*;
+    abstract member-signature method toString() → dart.core::String*;
+    abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic;
+    abstract member-signature get runtimeType() → dart.core::Type*;
   }
   abstract class B extends main::A /*isMixinDeclaration*/  {
     method b() → dynamic {
@@ -18,6 +28,16 @@
     synthetic constructor •() → main::_C&A&B*
       : super dart.core::Object::•()
       ;
+    abstract member-signature get _identityHashCode() → dart.core::int*;
+    abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfTrue(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfFalse(dynamic type) → dart.core::bool*;
+    abstract member-signature operator ==(dynamic other) → dart.core::bool*;
+    abstract member-signature get hashCode() → dart.core::int*;
+    abstract member-signature method toString() → dart.core::String*;
+    abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic;
+    abstract member-signature get runtimeType() → dart.core::Type*;
   }
   abstract class C extends main::_C&A&B /*isMixinDeclaration*/  {
     method c() → dynamic {
diff --git a/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_3.yaml.world.1.expect b/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_3.yaml.world.1.expect
index c3e26f0..670cd63 100644
--- a/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_3.yaml.world.1.expect
+++ b/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_3.yaml.world.1.expect
@@ -22,8 +22,8 @@
         dart.async::_completeOnAsyncReturn(:async_completer, :return_value);
         return;
       }
-      on dynamic catch(dynamic :exception, dart.core::StackTrace* :stack_trace) {
-        :async_completer.{dart.async::Completer::completeError}(:exception, :stack_trace);
+      on dynamic catch(dynamic exception, dart.core::StackTrace* stack_trace) {
+        :async_completer.{dart.async::Completer::completeError}(exception, stack_trace);
       }
     :async_stack_trace = dart.async::_asyncStackTraceHelper(:async_op);
     :async_op_then = dart.async::_asyncThenWrapperHelper(:async_op);
@@ -43,6 +43,15 @@
     @#C1
     method toString() → dart.core::String*
       return "Foo!";
+    abstract member-signature get _identityHashCode() → dart.core::int*;
+    abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfTrue(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfFalse(dynamic type) → dart.core::bool*;
+    abstract member-signature operator ==(dynamic other) → dart.core::bool*;
+    abstract member-signature get hashCode() → dart.core::int*;
+    abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic;
+    abstract member-signature get runtimeType() → dart.core::Type*;
   }
   static method main() → dynamic /* originally async */ {
     final dart.async::_AsyncAwaitCompleter<dynamic>* :async_completer = new dart.async::_AsyncAwaitCompleter::•<dynamic>();
@@ -64,8 +73,8 @@
         dart.async::_completeOnAsyncReturn(:async_completer, :return_value);
         return;
       }
-      on dynamic catch(dynamic :exception, dart.core::StackTrace* :stack_trace) {
-        :async_completer.{dart.async::Completer::completeError}(:exception, :stack_trace);
+      on dynamic catch(dynamic exception, dart.core::StackTrace* stack_trace) {
+        :async_completer.{dart.async::Completer::completeError}(exception, stack_trace);
       }
     :async_stack_trace = dart.async::_asyncStackTraceHelper(:async_op);
     :async_op_then = dart.async::_asyncThenWrapperHelper(:async_op);
diff --git a/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_3.yaml.world.2.expect b/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_3.yaml.world.2.expect
index e864fa8..c7f7622 100644
--- a/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_3.yaml.world.2.expect
+++ b/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_3.yaml.world.2.expect
@@ -22,8 +22,8 @@
         dart.async::_completeOnAsyncReturn(:async_completer, :return_value);
         return;
       }
-      on dynamic catch(dynamic :exception, dart.core::StackTrace* :stack_trace) {
-        :async_completer.{dart.async::Completer::completeError}(:exception, :stack_trace);
+      on dynamic catch(dynamic exception, dart.core::StackTrace* stack_trace) {
+        :async_completer.{dart.async::Completer::completeError}(exception, stack_trace);
       }
     :async_stack_trace = dart.async::_asyncStackTraceHelper(:async_op);
     :async_op_then = dart.async::_asyncThenWrapperHelper(:async_op);
@@ -43,6 +43,15 @@
     @#C1
     method toString() → dart.core::String*
       return "Foo!";
+    abstract member-signature get _identityHashCode() → dart.core::int*;
+    abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfTrue(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfFalse(dynamic type) → dart.core::bool*;
+    abstract member-signature operator ==(dynamic other) → dart.core::bool*;
+    abstract member-signature get hashCode() → dart.core::int*;
+    abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic;
+    abstract member-signature get runtimeType() → dart.core::Type*;
   }
   static method main() → dynamic /* originally async */ {
     final dart.async::_AsyncAwaitCompleter<dynamic>* :async_completer = new dart.async::_AsyncAwaitCompleter::•<dynamic>();
@@ -65,8 +74,8 @@
         dart.async::_completeOnAsyncReturn(:async_completer, :return_value);
         return;
       }
-      on dynamic catch(dynamic :exception, dart.core::StackTrace* :stack_trace) {
-        :async_completer.{dart.async::Completer::completeError}(:exception, :stack_trace);
+      on dynamic catch(dynamic exception, dart.core::StackTrace* stack_trace) {
+        :async_completer.{dart.async::Completer::completeError}(exception, stack_trace);
       }
     :async_stack_trace = dart.async::_asyncStackTraceHelper(:async_op);
     :async_op_then = dart.async::_asyncThenWrapperHelper(:async_op);
diff --git a/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_33.yaml.world.1.expect b/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_33.yaml.world.1.expect
index 656680e..3d9211f 100644
--- a/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_33.yaml.world.1.expect
+++ b/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_33.yaml.world.1.expect
@@ -10,6 +10,16 @@
   class Foo extends dart.core::Object {
     constructor •() → lib1::Foo*
       : super dart.core::Object::•() {}
+    abstract member-signature get _identityHashCode() → dart.core::int*;
+    abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfTrue(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfFalse(dynamic type) → dart.core::bool*;
+    abstract member-signature operator ==(dynamic other) → dart.core::bool*;
+    abstract member-signature get hashCode() → dart.core::int*;
+    abstract member-signature method toString() → dart.core::String*;
+    abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic;
+    abstract member-signature get runtimeType() → dart.core::Type*;
   }
 }
 library from "org-dartlang-test:///lib2.dart" as lib2 {
@@ -17,6 +27,16 @@
   class Bar extends dart.core::Object {
     constructor •() → lib2::Bar*
       : super dart.core::Object::•() {}
+    abstract member-signature get _identityHashCode() → dart.core::int*;
+    abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfTrue(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfFalse(dynamic type) → dart.core::bool*;
+    abstract member-signature operator ==(dynamic other) → dart.core::bool*;
+    abstract member-signature get hashCode() → dart.core::int*;
+    abstract member-signature method toString() → dart.core::String*;
+    abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic;
+    abstract member-signature get runtimeType() → dart.core::Type*;
   }
   static get getter() → dart.core::String*
     return "hello";
diff --git a/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_33.yaml.world.2.expect b/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_33.yaml.world.2.expect
index b59b78e..3d573e2 100644
--- a/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_33.yaml.world.2.expect
+++ b/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_33.yaml.world.2.expect
@@ -12,6 +12,16 @@
       : super dart.core::Object::•() {
       dart.core::print("Foo!");
     }
+    abstract member-signature get _identityHashCode() → dart.core::int*;
+    abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfTrue(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfFalse(dynamic type) → dart.core::bool*;
+    abstract member-signature operator ==(dynamic other) → dart.core::bool*;
+    abstract member-signature get hashCode() → dart.core::int*;
+    abstract member-signature method toString() → dart.core::String*;
+    abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic;
+    abstract member-signature get runtimeType() → dart.core::Type*;
   }
 }
 library from "org-dartlang-test:///lib2.dart" as lib2 {
@@ -19,6 +29,16 @@
   class Bar extends dart.core::Object {
     constructor •() → lib2::Bar*
       : super dart.core::Object::•() {}
+    abstract member-signature get _identityHashCode() → dart.core::int*;
+    abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfTrue(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfFalse(dynamic type) → dart.core::bool*;
+    abstract member-signature operator ==(dynamic other) → dart.core::bool*;
+    abstract member-signature get hashCode() → dart.core::int*;
+    abstract member-signature method toString() → dart.core::String*;
+    abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic;
+    abstract member-signature get runtimeType() → dart.core::Type*;
   }
   static get getter() → dart.core::String*
     return "hello";
diff --git a/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_33.yaml.world.3.expect b/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_33.yaml.world.3.expect
index 8beb757..28872b5 100644
--- a/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_33.yaml.world.3.expect
+++ b/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_33.yaml.world.3.expect
@@ -12,6 +12,16 @@
       : super dart.core::Object::•() {
       dart.core::print("Foo!");
     }
+    abstract member-signature get _identityHashCode() → dart.core::int*;
+    abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfTrue(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfFalse(dynamic type) → dart.core::bool*;
+    abstract member-signature operator ==(dynamic other) → dart.core::bool*;
+    abstract member-signature get hashCode() → dart.core::int*;
+    abstract member-signature method toString() → dart.core::String*;
+    abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic;
+    abstract member-signature get runtimeType() → dart.core::Type*;
   }
 }
 library from "org-dartlang-test:///lib2.dart" as lib2 {
@@ -21,6 +31,16 @@
       : super dart.core::Object::•() {
       dart.core::print("hello!");
     }
+    abstract member-signature get _identityHashCode() → dart.core::int*;
+    abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfTrue(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfFalse(dynamic type) → dart.core::bool*;
+    abstract member-signature operator ==(dynamic other) → dart.core::bool*;
+    abstract member-signature get hashCode() → dart.core::int*;
+    abstract member-signature method toString() → dart.core::String*;
+    abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic;
+    abstract member-signature get runtimeType() → dart.core::Type*;
   }
   static get getter() → dart.core::String*
     return "hello";
diff --git a/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_33.yaml.world.4.expect b/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_33.yaml.world.4.expect
index b2427c0..64f4146 100644
--- a/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_33.yaml.world.4.expect
+++ b/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_33.yaml.world.4.expect
@@ -12,6 +12,16 @@
       : super dart.core::Object::•() {
       dart.core::print("Foo!");
     }
+    abstract member-signature get _identityHashCode() → dart.core::int*;
+    abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfTrue(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfFalse(dynamic type) → dart.core::bool*;
+    abstract member-signature operator ==(dynamic other) → dart.core::bool*;
+    abstract member-signature get hashCode() → dart.core::int*;
+    abstract member-signature method toString() → dart.core::String*;
+    abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic;
+    abstract member-signature get runtimeType() → dart.core::Type*;
   }
 }
 library from "org-dartlang-test:///lib2.dart" as lib2 {
@@ -21,6 +31,16 @@
       : super dart.core::Object::•() {
       dart.core::print("hello!");
     }
+    abstract member-signature get _identityHashCode() → dart.core::int*;
+    abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfTrue(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfFalse(dynamic type) → dart.core::bool*;
+    abstract member-signature operator ==(dynamic other) → dart.core::bool*;
+    abstract member-signature get hashCode() → dart.core::int*;
+    abstract member-signature method toString() → dart.core::String*;
+    abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic;
+    abstract member-signature get runtimeType() → dart.core::Type*;
   }
   static get getter() → dart.core::String*
     return "hello";
diff --git a/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_34.yaml.world.1.expect b/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_34.yaml.world.1.expect
index 032c469..b082f1d 100644
--- a/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_34.yaml.world.1.expect
+++ b/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_34.yaml.world.1.expect
@@ -50,6 +50,16 @@
     synthetic constructor •() → main::Class*
       : super dart.core::Object::•()
       ;
+    abstract member-signature get _identityHashCode() → dart.core::int*;
+    abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfTrue(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfFalse(dynamic type) → dart.core::bool*;
+    abstract member-signature operator ==(dynamic other) → dart.core::bool*;
+    abstract member-signature get hashCode() → dart.core::int*;
+    abstract member-signature method toString() → dart.core::String*;
+    abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic;
+    abstract member-signature get runtimeType() → dart.core::Type*;
   }
   extension Extension on main::Class* {
     method method = main::Extension|method;
diff --git a/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_34.yaml.world.2.expect b/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_34.yaml.world.2.expect
index 818dfc2..b60c00b 100644
--- a/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_34.yaml.world.2.expect
+++ b/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_34.yaml.world.2.expect
@@ -50,6 +50,16 @@
     synthetic constructor •() → main::Class*
       : super dart.core::Object::•()
       ;
+    abstract member-signature get _identityHashCode() → dart.core::int*;
+    abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfTrue(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfFalse(dynamic type) → dart.core::bool*;
+    abstract member-signature operator ==(dynamic other) → dart.core::bool*;
+    abstract member-signature get hashCode() → dart.core::int*;
+    abstract member-signature method toString() → dart.core::String*;
+    abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic;
+    abstract member-signature get runtimeType() → dart.core::Type*;
   }
   extension Extension on main::Class* {
     method method = main::Extension|method;
diff --git a/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_34.yaml.world.3.expect b/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_34.yaml.world.3.expect
index 90777cc..aeaac2d 100644
--- a/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_34.yaml.world.3.expect
+++ b/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_34.yaml.world.3.expect
@@ -51,6 +51,16 @@
     synthetic constructor •() → main::Class*
       : super dart.core::Object::•()
       ;
+    abstract member-signature get _identityHashCode() → dart.core::int*;
+    abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfTrue(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfFalse(dynamic type) → dart.core::bool*;
+    abstract member-signature operator ==(dynamic other) → dart.core::bool*;
+    abstract member-signature get hashCode() → dart.core::int*;
+    abstract member-signature method toString() → dart.core::String*;
+    abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic;
+    abstract member-signature get runtimeType() → dart.core::Type*;
   }
   extension Extension on main::Class* {
     method method = main::Extension|method;
diff --git a/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_34.yaml.world.4.expect b/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_34.yaml.world.4.expect
index 366f447..62b3d84 100644
--- a/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_34.yaml.world.4.expect
+++ b/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_34.yaml.world.4.expect
@@ -54,6 +54,16 @@
     synthetic constructor •() → main::Class*
       : super dart.core::Object::•()
       ;
+    abstract member-signature get _identityHashCode() → dart.core::int*;
+    abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfTrue(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfFalse(dynamic type) → dart.core::bool*;
+    abstract member-signature operator ==(dynamic other) → dart.core::bool*;
+    abstract member-signature get hashCode() → dart.core::int*;
+    abstract member-signature method toString() → dart.core::String*;
+    abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic;
+    abstract member-signature get runtimeType() → dart.core::Type*;
   }
   extension Extension on main::Class* {
     method method = main::Extension|method;
diff --git a/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_35.yaml.world.1.expect b/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_35.yaml.world.1.expect
index 78fb060..59e4288 100644
--- a/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_35.yaml.world.1.expect
+++ b/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_35.yaml.world.1.expect
@@ -14,6 +14,17 @@
     static factory allocate(dart.core::double* x, dart.core::double* y, dart.ffi::Pointer<lib::Coordinate*>* next) → lib::Coordinate* {
       return null;
     }
+    abstract member-signature get _addressOf() → dart.ffi::Pointer<dart.ffi::Struct*>*;
+    abstract member-signature get _identityHashCode() → dart.core::int*;
+    abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfTrue(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfFalse(dynamic type) → dart.core::bool*;
+    abstract member-signature operator ==(dynamic other) → dart.core::bool*;
+    abstract member-signature get hashCode() → dart.core::int*;
+    abstract member-signature method toString() → dart.core::String*;
+    abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic;
+    abstract member-signature get runtimeType() → dart.core::Type*;
     get x() → dart.core::double*
       return dart.ffi::_loadDouble(this.{dart.ffi::Struct::_addressOf}, (#C8).{dart.core::List::[]}(dart.ffi::_abi()));
     set x(dart.core::double* #v) → void
diff --git a/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_35.yaml.world.2.expect b/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_35.yaml.world.2.expect
index a90ca05..28973d8 100644
--- a/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_35.yaml.world.2.expect
+++ b/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_35.yaml.world.2.expect
@@ -14,6 +14,17 @@
     static factory allocate(dart.core::double* x, dart.core::double* y, dart.ffi::Pointer<lib::Coordinate*>* next) → lib::Coordinate* {
       return null;
     }
+    abstract member-signature get _addressOf() → dart.ffi::Pointer<dart.ffi::Struct*>*;
+    abstract member-signature get _identityHashCode() → dart.core::int*;
+    abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfTrue(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfFalse(dynamic type) → dart.core::bool*;
+    abstract member-signature operator ==(dynamic other) → dart.core::bool*;
+    abstract member-signature get hashCode() → dart.core::int*;
+    abstract member-signature method toString() → dart.core::String*;
+    abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic;
+    abstract member-signature get runtimeType() → dart.core::Type*;
     get x() → dart.core::double*
       return dart.ffi::_loadDouble(this.{dart.ffi::Struct::_addressOf}, (#C8).{dart.core::List::[]}(dart.ffi::_abi()));
     set x(dart.core::double* #v) → void
diff --git a/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_35.yaml.world.3.expect b/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_35.yaml.world.3.expect
index 72a0cac..fe834c9 100644
--- a/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_35.yaml.world.3.expect
+++ b/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_35.yaml.world.3.expect
@@ -15,6 +15,17 @@
       dart.core::print("hello");
       return null;
     }
+    abstract member-signature get _addressOf() → dart.ffi::Pointer<dart.ffi::Struct*>*;
+    abstract member-signature get _identityHashCode() → dart.core::int*;
+    abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfTrue(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfFalse(dynamic type) → dart.core::bool*;
+    abstract member-signature operator ==(dynamic other) → dart.core::bool*;
+    abstract member-signature get hashCode() → dart.core::int*;
+    abstract member-signature method toString() → dart.core::String*;
+    abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic;
+    abstract member-signature get runtimeType() → dart.core::Type*;
     get x() → dart.core::double*
       return dart.ffi::_loadDouble(this.{dart.ffi::Struct::_addressOf}, (#C8).{dart.core::List::[]}(dart.ffi::_abi()));
     set x(dart.core::double* #v) → void
diff --git a/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_36.yaml.world.1.expect b/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_36.yaml.world.1.expect
index f1a33bd..b3672cb 100644
--- a/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_36.yaml.world.1.expect
+++ b/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_36.yaml.world.1.expect
@@ -17,6 +17,16 @@
     synthetic constructor •() → fil2::Class3*
       : super dart.core::Object::•()
       ;
+    abstract member-signature get _identityHashCode() → dart.core::int*;
+    abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfTrue(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfFalse(dynamic type) → dart.core::bool*;
+    abstract member-signature operator ==(dynamic other) → dart.core::bool*;
+    abstract member-signature get hashCode() → dart.core::int*;
+    abstract member-signature method toString() → dart.core::String*;
+    abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic;
+    abstract member-signature get runtimeType() → dart.core::Type*;
   }
 }
 library from "org-dartlang-test:///main.dart" as main {
diff --git a/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_36.yaml.world.2.expect b/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_36.yaml.world.2.expect
index f1a33bd..b3672cb 100644
--- a/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_36.yaml.world.2.expect
+++ b/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_36.yaml.world.2.expect
@@ -17,6 +17,16 @@
     synthetic constructor •() → fil2::Class3*
       : super dart.core::Object::•()
       ;
+    abstract member-signature get _identityHashCode() → dart.core::int*;
+    abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfTrue(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfFalse(dynamic type) → dart.core::bool*;
+    abstract member-signature operator ==(dynamic other) → dart.core::bool*;
+    abstract member-signature get hashCode() → dart.core::int*;
+    abstract member-signature method toString() → dart.core::String*;
+    abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic;
+    abstract member-signature get runtimeType() → dart.core::Type*;
   }
 }
 library from "org-dartlang-test:///main.dart" as main {
diff --git a/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_36.yaml.world.3.expect b/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_36.yaml.world.3.expect
index f1a33bd..b3672cb 100644
--- a/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_36.yaml.world.3.expect
+++ b/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_36.yaml.world.3.expect
@@ -17,6 +17,16 @@
     synthetic constructor •() → fil2::Class3*
       : super dart.core::Object::•()
       ;
+    abstract member-signature get _identityHashCode() → dart.core::int*;
+    abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfTrue(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfFalse(dynamic type) → dart.core::bool*;
+    abstract member-signature operator ==(dynamic other) → dart.core::bool*;
+    abstract member-signature get hashCode() → dart.core::int*;
+    abstract member-signature method toString() → dart.core::String*;
+    abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic;
+    abstract member-signature get runtimeType() → dart.core::Type*;
   }
 }
 library from "org-dartlang-test:///main.dart" as main {
diff --git a/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_36.yaml.world.4.expect b/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_36.yaml.world.4.expect
index f1a33bd..b3672cb 100644
--- a/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_36.yaml.world.4.expect
+++ b/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_36.yaml.world.4.expect
@@ -17,6 +17,16 @@
     synthetic constructor •() → fil2::Class3*
       : super dart.core::Object::•()
       ;
+    abstract member-signature get _identityHashCode() → dart.core::int*;
+    abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfTrue(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfFalse(dynamic type) → dart.core::bool*;
+    abstract member-signature operator ==(dynamic other) → dart.core::bool*;
+    abstract member-signature get hashCode() → dart.core::int*;
+    abstract member-signature method toString() → dart.core::String*;
+    abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic;
+    abstract member-signature get runtimeType() → dart.core::Type*;
   }
 }
 library from "org-dartlang-test:///main.dart" as main {
diff --git a/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_37.yaml.world.1.expect b/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_37.yaml.world.1.expect
index 24f144f..3709052 100644
--- a/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_37.yaml.world.1.expect
+++ b/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_37.yaml.world.1.expect
@@ -6,6 +6,16 @@
     synthetic constructor •() → fil::D*
       : super dart.core::Object::•()
       ;
+    abstract member-signature get _identityHashCode() → dart.core::int*;
+    abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfTrue(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfFalse(dynamic type) → dart.core::bool*;
+    abstract member-signature operator ==(dynamic other) → dart.core::bool*;
+    abstract member-signature get hashCode() → dart.core::int*;
+    abstract member-signature method toString() → dart.core::String*;
+    abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic;
+    abstract member-signature get runtimeType() → dart.core::Type*;
   }
 }
 library from "org-dartlang-test:///file2.dart" as fil2 {
@@ -16,6 +26,16 @@
     synthetic constructor •() → fil2::C*
       : super dart.core::Object::•()
       ;
+    abstract member-signature get _identityHashCode() → dart.core::int*;
+    abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfTrue(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfFalse(dynamic type) → dart.core::bool*;
+    abstract member-signature operator ==(dynamic other) → dart.core::bool*;
+    abstract member-signature get hashCode() → dart.core::int*;
+    abstract member-signature method toString() → dart.core::String*;
+    abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic;
+    abstract member-signature get runtimeType() → dart.core::Type*;
   }
   class B extends fil::D {
     field fil::D* parent = null;
diff --git a/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_37.yaml.world.2.expect b/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_37.yaml.world.2.expect
index 24f144f..3709052 100644
--- a/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_37.yaml.world.2.expect
+++ b/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_37.yaml.world.2.expect
@@ -6,6 +6,16 @@
     synthetic constructor •() → fil::D*
       : super dart.core::Object::•()
       ;
+    abstract member-signature get _identityHashCode() → dart.core::int*;
+    abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfTrue(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfFalse(dynamic type) → dart.core::bool*;
+    abstract member-signature operator ==(dynamic other) → dart.core::bool*;
+    abstract member-signature get hashCode() → dart.core::int*;
+    abstract member-signature method toString() → dart.core::String*;
+    abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic;
+    abstract member-signature get runtimeType() → dart.core::Type*;
   }
 }
 library from "org-dartlang-test:///file2.dart" as fil2 {
@@ -16,6 +26,16 @@
     synthetic constructor •() → fil2::C*
       : super dart.core::Object::•()
       ;
+    abstract member-signature get _identityHashCode() → dart.core::int*;
+    abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfTrue(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfFalse(dynamic type) → dart.core::bool*;
+    abstract member-signature operator ==(dynamic other) → dart.core::bool*;
+    abstract member-signature get hashCode() → dart.core::int*;
+    abstract member-signature method toString() → dart.core::String*;
+    abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic;
+    abstract member-signature get runtimeType() → dart.core::Type*;
   }
   class B extends fil::D {
     field fil::D* parent = null;
diff --git a/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_37.yaml.world.3.expect b/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_37.yaml.world.3.expect
index 24f144f..3709052 100644
--- a/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_37.yaml.world.3.expect
+++ b/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_37.yaml.world.3.expect
@@ -6,6 +6,16 @@
     synthetic constructor •() → fil::D*
       : super dart.core::Object::•()
       ;
+    abstract member-signature get _identityHashCode() → dart.core::int*;
+    abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfTrue(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfFalse(dynamic type) → dart.core::bool*;
+    abstract member-signature operator ==(dynamic other) → dart.core::bool*;
+    abstract member-signature get hashCode() → dart.core::int*;
+    abstract member-signature method toString() → dart.core::String*;
+    abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic;
+    abstract member-signature get runtimeType() → dart.core::Type*;
   }
 }
 library from "org-dartlang-test:///file2.dart" as fil2 {
@@ -16,6 +26,16 @@
     synthetic constructor •() → fil2::C*
       : super dart.core::Object::•()
       ;
+    abstract member-signature get _identityHashCode() → dart.core::int*;
+    abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfTrue(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfFalse(dynamic type) → dart.core::bool*;
+    abstract member-signature operator ==(dynamic other) → dart.core::bool*;
+    abstract member-signature get hashCode() → dart.core::int*;
+    abstract member-signature method toString() → dart.core::String*;
+    abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic;
+    abstract member-signature get runtimeType() → dart.core::Type*;
   }
   class B extends fil::D {
     field fil::D* parent = null;
diff --git a/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_37.yaml.world.4.expect b/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_37.yaml.world.4.expect
index 24f144f..3709052 100644
--- a/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_37.yaml.world.4.expect
+++ b/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_37.yaml.world.4.expect
@@ -6,6 +6,16 @@
     synthetic constructor •() → fil::D*
       : super dart.core::Object::•()
       ;
+    abstract member-signature get _identityHashCode() → dart.core::int*;
+    abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfTrue(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfFalse(dynamic type) → dart.core::bool*;
+    abstract member-signature operator ==(dynamic other) → dart.core::bool*;
+    abstract member-signature get hashCode() → dart.core::int*;
+    abstract member-signature method toString() → dart.core::String*;
+    abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic;
+    abstract member-signature get runtimeType() → dart.core::Type*;
   }
 }
 library from "org-dartlang-test:///file2.dart" as fil2 {
@@ -16,6 +26,16 @@
     synthetic constructor •() → fil2::C*
       : super dart.core::Object::•()
       ;
+    abstract member-signature get _identityHashCode() → dart.core::int*;
+    abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfTrue(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfFalse(dynamic type) → dart.core::bool*;
+    abstract member-signature operator ==(dynamic other) → dart.core::bool*;
+    abstract member-signature get hashCode() → dart.core::int*;
+    abstract member-signature method toString() → dart.core::String*;
+    abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic;
+    abstract member-signature get runtimeType() → dart.core::Type*;
   }
   class B extends fil::D {
     field fil::D* parent = null;
diff --git a/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_38.yaml.world.1.expect b/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_38.yaml.world.1.expect
index dac9f11..5b4a833 100644
--- a/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_38.yaml.world.1.expect
+++ b/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_38.yaml.world.1.expect
@@ -9,6 +9,16 @@
       ;
     get foo() → dart.core::int*
       return 42;
+    abstract member-signature get _identityHashCode() → dart.core::int*;
+    abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfTrue(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfFalse(dynamic type) → dart.core::bool*;
+    abstract member-signature operator ==(dynamic other) → dart.core::bool*;
+    abstract member-signature get hashCode() → dart.core::int*;
+    abstract member-signature method toString() → dart.core::String*;
+    abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic;
+    abstract member-signature get runtimeType() → dart.core::Type*;
   }
 }
 library from "org-dartlang-test:///main.dart" as main {
@@ -19,6 +29,16 @@
     synthetic constructor •() → main::X*
       : super dart.core::Object::•()
       ;
+    abstract member-signature get _identityHashCode() → dart.core::int*;
+    abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfTrue(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfFalse(dynamic type) → dart.core::bool*;
+    abstract member-signature operator ==(dynamic other) → dart.core::bool*;
+    abstract member-signature get hashCode() → dart.core::int*;
+    abstract member-signature method toString() → dart.core::String*;
+    abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic;
+    abstract member-signature get runtimeType() → dart.core::Type*;
   }
   static method foo(main::X* x) → dart.core::int* {
     return x is lib::Y* ?{dart.core::int*} x{lib::Y*}.{lib::Y::foo} : null;
diff --git a/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_38.yaml.world.2.expect b/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_38.yaml.world.2.expect
index dac9f11..5b4a833 100644
--- a/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_38.yaml.world.2.expect
+++ b/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_38.yaml.world.2.expect
@@ -9,6 +9,16 @@
       ;
     get foo() → dart.core::int*
       return 42;
+    abstract member-signature get _identityHashCode() → dart.core::int*;
+    abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfTrue(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfFalse(dynamic type) → dart.core::bool*;
+    abstract member-signature operator ==(dynamic other) → dart.core::bool*;
+    abstract member-signature get hashCode() → dart.core::int*;
+    abstract member-signature method toString() → dart.core::String*;
+    abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic;
+    abstract member-signature get runtimeType() → dart.core::Type*;
   }
 }
 library from "org-dartlang-test:///main.dart" as main {
@@ -19,6 +29,16 @@
     synthetic constructor •() → main::X*
       : super dart.core::Object::•()
       ;
+    abstract member-signature get _identityHashCode() → dart.core::int*;
+    abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfTrue(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfFalse(dynamic type) → dart.core::bool*;
+    abstract member-signature operator ==(dynamic other) → dart.core::bool*;
+    abstract member-signature get hashCode() → dart.core::int*;
+    abstract member-signature method toString() → dart.core::String*;
+    abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic;
+    abstract member-signature get runtimeType() → dart.core::Type*;
   }
   static method foo(main::X* x) → dart.core::int* {
     return x is lib::Y* ?{dart.core::int*} x{lib::Y*}.{lib::Y::foo} : null;
diff --git a/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_38.yaml.world.3.expect b/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_38.yaml.world.3.expect
index dac9f11..5b4a833 100644
--- a/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_38.yaml.world.3.expect
+++ b/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_38.yaml.world.3.expect
@@ -9,6 +9,16 @@
       ;
     get foo() → dart.core::int*
       return 42;
+    abstract member-signature get _identityHashCode() → dart.core::int*;
+    abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfTrue(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfFalse(dynamic type) → dart.core::bool*;
+    abstract member-signature operator ==(dynamic other) → dart.core::bool*;
+    abstract member-signature get hashCode() → dart.core::int*;
+    abstract member-signature method toString() → dart.core::String*;
+    abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic;
+    abstract member-signature get runtimeType() → dart.core::Type*;
   }
 }
 library from "org-dartlang-test:///main.dart" as main {
@@ -19,6 +29,16 @@
     synthetic constructor •() → main::X*
       : super dart.core::Object::•()
       ;
+    abstract member-signature get _identityHashCode() → dart.core::int*;
+    abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfTrue(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfFalse(dynamic type) → dart.core::bool*;
+    abstract member-signature operator ==(dynamic other) → dart.core::bool*;
+    abstract member-signature get hashCode() → dart.core::int*;
+    abstract member-signature method toString() → dart.core::String*;
+    abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic;
+    abstract member-signature get runtimeType() → dart.core::Type*;
   }
   static method foo(main::X* x) → dart.core::int* {
     return x is lib::Y* ?{dart.core::int*} x{lib::Y*}.{lib::Y::foo} : null;
diff --git a/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_4.yaml.world.1.expect b/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_4.yaml.world.1.expect
index c3e9c3f..df2d81e 100644
--- a/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_4.yaml.world.1.expect
+++ b/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_4.yaml.world.1.expect
@@ -7,6 +7,16 @@
     const synthetic constructor •() → libA::_Bar&Object&Foo*
       : super dart.core::Object::•()
       ;
+    abstract member-signature get /* from org-dartlang-test:///main.dart */ _identityHashCode() → dart.core::int*;
+    abstract member-signature method /* from org-dartlang-test:///main.dart */ _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*;
+    abstract member-signature method /* from org-dartlang-test:///main.dart */ _simpleInstanceOf(dynamic type) → dart.core::bool*;
+    abstract member-signature method /* from org-dartlang-test:///main.dart */ _simpleInstanceOfTrue(dynamic type) → dart.core::bool*;
+    abstract member-signature method /* from org-dartlang-test:///main.dart */ _simpleInstanceOfFalse(dynamic type) → dart.core::bool*;
+    abstract member-signature operator /* from org-dartlang-test:///main.dart */ ==(dynamic other) → dart.core::bool*;
+    abstract member-signature get /* from org-dartlang-test:///main.dart */ hashCode() → dart.core::int*;
+    abstract member-signature method /* from org-dartlang-test:///main.dart */ toString() → dart.core::String*;
+    abstract member-signature method /* from org-dartlang-test:///main.dart */ noSuchMethod(dart.core::Invocation* invocation) → dynamic;
+    abstract member-signature get /* from org-dartlang-test:///main.dart */ runtimeType() → dart.core::Type*;
     method /* from org-dartlang-test:///main.dart */ method() → dynamic {
       dart.core::print("A");
     }
@@ -31,5 +41,15 @@
     method method() → dynamic {
       dart.core::print("A");
     }
+    abstract member-signature get _identityHashCode() → dart.core::int*;
+    abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfTrue(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfFalse(dynamic type) → dart.core::bool*;
+    abstract member-signature operator ==(dynamic other) → dart.core::bool*;
+    abstract member-signature get hashCode() → dart.core::int*;
+    abstract member-signature method toString() → dart.core::String*;
+    abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic;
+    abstract member-signature get runtimeType() → dart.core::Type*;
   }
 }
diff --git a/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_4.yaml.world.2.expect b/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_4.yaml.world.2.expect
index 7ce591c..dc4975e 100644
--- a/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_4.yaml.world.2.expect
+++ b/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_4.yaml.world.2.expect
@@ -7,6 +7,16 @@
     const synthetic constructor •() → libA::_Bar&Object&Foo*
       : super dart.core::Object::•()
       ;
+    abstract member-signature get /* from org-dartlang-test:///main.dart */ _identityHashCode() → dart.core::int*;
+    abstract member-signature method /* from org-dartlang-test:///main.dart */ _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*;
+    abstract member-signature method /* from org-dartlang-test:///main.dart */ _simpleInstanceOf(dynamic type) → dart.core::bool*;
+    abstract member-signature method /* from org-dartlang-test:///main.dart */ _simpleInstanceOfTrue(dynamic type) → dart.core::bool*;
+    abstract member-signature method /* from org-dartlang-test:///main.dart */ _simpleInstanceOfFalse(dynamic type) → dart.core::bool*;
+    abstract member-signature operator /* from org-dartlang-test:///main.dart */ ==(dynamic other) → dart.core::bool*;
+    abstract member-signature get /* from org-dartlang-test:///main.dart */ hashCode() → dart.core::int*;
+    abstract member-signature method /* from org-dartlang-test:///main.dart */ toString() → dart.core::String*;
+    abstract member-signature method /* from org-dartlang-test:///main.dart */ noSuchMethod(dart.core::Invocation* invocation) → dynamic;
+    abstract member-signature get /* from org-dartlang-test:///main.dart */ runtimeType() → dart.core::Type*;
     method /* from org-dartlang-test:///main.dart */ method() → dynamic {
       dart.core::print("B");
     }
@@ -31,5 +41,15 @@
     method method() → dynamic {
       dart.core::print("B");
     }
+    abstract member-signature get _identityHashCode() → dart.core::int*;
+    abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfTrue(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfFalse(dynamic type) → dart.core::bool*;
+    abstract member-signature operator ==(dynamic other) → dart.core::bool*;
+    abstract member-signature get hashCode() → dart.core::int*;
+    abstract member-signature method toString() → dart.core::String*;
+    abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic;
+    abstract member-signature get runtimeType() → dart.core::Type*;
   }
 }
diff --git a/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_5.yaml.world.1.expect b/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_5.yaml.world.1.expect
index 373b5c9..2b435c3 100644
--- a/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_5.yaml.world.1.expect
+++ b/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_5.yaml.world.1.expect
@@ -9,6 +9,15 @@
     @#C1
     method toString() → dart.core::String*
       return "Foo!";
+    abstract member-signature get _identityHashCode() → dart.core::int*;
+    abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfTrue(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfFalse(dynamic type) → dart.core::bool*;
+    abstract member-signature operator ==(dynamic other) → dart.core::bool*;
+    abstract member-signature get hashCode() → dart.core::int*;
+    abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic;
+    abstract member-signature get runtimeType() → dart.core::Type*;
   }
   static method main() → dynamic /* originally async */ {
     final dart.async::_AsyncAwaitCompleter<dynamic>* :async_completer = new dart.async::_AsyncAwaitCompleter::•<dynamic>();
@@ -30,8 +39,8 @@
         dart.async::_completeOnAsyncReturn(:async_completer, :return_value);
         return;
       }
-      on dynamic catch(dynamic :exception, dart.core::StackTrace* :stack_trace) {
-        :async_completer.{dart.async::Completer::completeError}(:exception, :stack_trace);
+      on dynamic catch(dynamic exception, dart.core::StackTrace* stack_trace) {
+        :async_completer.{dart.async::Completer::completeError}(exception, stack_trace);
       }
     :async_stack_trace = dart.async::_asyncStackTraceHelper(:async_op);
     :async_op_then = dart.async::_asyncThenWrapperHelper(:async_op);
@@ -60,8 +69,8 @@
         dart.async::_completeOnAsyncReturn(:async_completer, :return_value);
         return;
       }
-      on dynamic catch(dynamic :exception, dart.core::StackTrace* :stack_trace) {
-        :async_completer.{dart.async::Completer::completeError}(:exception, :stack_trace);
+      on dynamic catch(dynamic exception, dart.core::StackTrace* stack_trace) {
+        :async_completer.{dart.async::Completer::completeError}(exception, stack_trace);
       }
     :async_stack_trace = dart.async::_asyncStackTraceHelper(:async_op);
     :async_op_then = dart.async::_asyncThenWrapperHelper(:async_op);
diff --git a/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_5.yaml.world.2.expect b/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_5.yaml.world.2.expect
index b65715d..5244396 100644
--- a/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_5.yaml.world.2.expect
+++ b/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_5.yaml.world.2.expect
@@ -9,6 +9,15 @@
     @#C1
     method toString() → dart.core::String*
       return "Foo!";
+    abstract member-signature get _identityHashCode() → dart.core::int*;
+    abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfTrue(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfFalse(dynamic type) → dart.core::bool*;
+    abstract member-signature operator ==(dynamic other) → dart.core::bool*;
+    abstract member-signature get hashCode() → dart.core::int*;
+    abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic;
+    abstract member-signature get runtimeType() → dart.core::Type*;
   }
   static method main() → dynamic /* originally async */ {
     final dart.async::_AsyncAwaitCompleter<dynamic>* :async_completer = new dart.async::_AsyncAwaitCompleter::•<dynamic>();
@@ -30,8 +39,8 @@
         dart.async::_completeOnAsyncReturn(:async_completer, :return_value);
         return;
       }
-      on dynamic catch(dynamic :exception, dart.core::StackTrace* :stack_trace) {
-        :async_completer.{dart.async::Completer::completeError}(:exception, :stack_trace);
+      on dynamic catch(dynamic exception, dart.core::StackTrace* stack_trace) {
+        :async_completer.{dart.async::Completer::completeError}(exception, stack_trace);
       }
     :async_stack_trace = dart.async::_asyncStackTraceHelper(:async_op);
     :async_op_then = dart.async::_asyncThenWrapperHelper(:async_op);
@@ -60,8 +69,8 @@
         dart.async::_completeOnAsyncReturn(:async_completer, :return_value);
         return;
       }
-      on dynamic catch(dynamic :exception, dart.core::StackTrace* :stack_trace) {
-        :async_completer.{dart.async::Completer::completeError}(:exception, :stack_trace);
+      on dynamic catch(dynamic exception, dart.core::StackTrace* stack_trace) {
+        :async_completer.{dart.async::Completer::completeError}(exception, stack_trace);
       }
     :async_stack_trace = dart.async::_asyncStackTraceHelper(:async_op);
     :async_op_then = dart.async::_asyncThenWrapperHelper(:async_op);
diff --git a/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_5.yaml.world.3.expect b/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_5.yaml.world.3.expect
index 306cc91..0f63e01 100644
--- a/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_5.yaml.world.3.expect
+++ b/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_5.yaml.world.3.expect
@@ -9,6 +9,15 @@
     @#C1
     method toString() → dart.core::String*
       return "Foo!";
+    abstract member-signature get _identityHashCode() → dart.core::int*;
+    abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfTrue(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfFalse(dynamic type) → dart.core::bool*;
+    abstract member-signature operator ==(dynamic other) → dart.core::bool*;
+    abstract member-signature get hashCode() → dart.core::int*;
+    abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic;
+    abstract member-signature get runtimeType() → dart.core::Type*;
   }
   static method main() → dynamic /* originally async */ {
     final dart.async::_AsyncAwaitCompleter<dynamic>* :async_completer = new dart.async::_AsyncAwaitCompleter::•<dynamic>();
@@ -31,8 +40,8 @@
         dart.async::_completeOnAsyncReturn(:async_completer, :return_value);
         return;
       }
-      on dynamic catch(dynamic :exception, dart.core::StackTrace* :stack_trace) {
-        :async_completer.{dart.async::Completer::completeError}(:exception, :stack_trace);
+      on dynamic catch(dynamic exception, dart.core::StackTrace* stack_trace) {
+        :async_completer.{dart.async::Completer::completeError}(exception, stack_trace);
       }
     :async_stack_trace = dart.async::_asyncStackTraceHelper(:async_op);
     :async_op_then = dart.async::_asyncThenWrapperHelper(:async_op);
@@ -61,8 +70,8 @@
         dart.async::_completeOnAsyncReturn(:async_completer, :return_value);
         return;
       }
-      on dynamic catch(dynamic :exception, dart.core::StackTrace* :stack_trace) {
-        :async_completer.{dart.async::Completer::completeError}(:exception, :stack_trace);
+      on dynamic catch(dynamic exception, dart.core::StackTrace* stack_trace) {
+        :async_completer.{dart.async::Completer::completeError}(exception, stack_trace);
       }
     :async_stack_trace = dart.async::_asyncStackTraceHelper(:async_op);
     :async_op_then = dart.async::_asyncThenWrapperHelper(:async_op);
diff --git a/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_6.yaml.world.1.expect b/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_6.yaml.world.1.expect
index eff9cc3..e0ca398 100644
--- a/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_6.yaml.world.1.expect
+++ b/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_6.yaml.world.1.expect
@@ -27,6 +27,15 @@
     method toString() → dart.core::String* {
       return "${this.{main::Foo::message}}";
     }
+    abstract member-signature get _identityHashCode() → dart.core::int*;
+    abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfTrue(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfFalse(dynamic type) → dart.core::bool*;
+    abstract member-signature operator ==(dynamic other) → dart.core::bool*;
+    abstract member-signature get hashCode() → dart.core::int*;
+    abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic;
+    abstract member-signature get runtimeType() → dart.core::Type*;
   }
   class CompilationStrategy extends dart.core::Object /*isEnum*/  {
     final field dart.core::int* index;
@@ -41,6 +50,15 @@
       ;
     method toString() → dart.core::String*
       return this.{=main::CompilationStrategy::_name};
+    abstract member-signature get _identityHashCode() → dart.core::int*;
+    abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfTrue(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfFalse(dynamic type) → dart.core::bool*;
+    abstract member-signature operator ==(dynamic other) → dart.core::bool*;
+    abstract member-signature get hashCode() → dart.core::int*;
+    abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic;
+    abstract member-signature get runtimeType() → dart.core::Type*;
   }
   static method main() → dynamic {
     main::Foo* foo = new main::Foo::•("hello");
diff --git a/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_6.yaml.world.2.expect b/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_6.yaml.world.2.expect
index 61e0b68..0948b92 100644
--- a/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_6.yaml.world.2.expect
+++ b/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_6.yaml.world.2.expect
@@ -27,6 +27,15 @@
     method toString() → dart.core::String* {
       return "${this.{main::Foo::message}}!!!";
     }
+    abstract member-signature get _identityHashCode() → dart.core::int*;
+    abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfTrue(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfFalse(dynamic type) → dart.core::bool*;
+    abstract member-signature operator ==(dynamic other) → dart.core::bool*;
+    abstract member-signature get hashCode() → dart.core::int*;
+    abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic;
+    abstract member-signature get runtimeType() → dart.core::Type*;
   }
   class CompilationStrategy extends dart.core::Object /*isEnum*/  {
     final field dart.core::int* index;
@@ -41,6 +50,15 @@
       ;
     method toString() → dart.core::String*
       return this.{=main::CompilationStrategy::_name};
+    abstract member-signature get _identityHashCode() → dart.core::int*;
+    abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfTrue(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfFalse(dynamic type) → dart.core::bool*;
+    abstract member-signature operator ==(dynamic other) → dart.core::bool*;
+    abstract member-signature get hashCode() → dart.core::int*;
+    abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic;
+    abstract member-signature get runtimeType() → dart.core::Type*;
   }
   static method main() → dynamic {
     main::Foo* foo = new main::Foo::•("hello");
diff --git a/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_6.yaml.world.3.expect b/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_6.yaml.world.3.expect
index a601b28..2bc2da1 100644
--- a/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_6.yaml.world.3.expect
+++ b/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_6.yaml.world.3.expect
@@ -20,6 +20,15 @@
     method toString() → dart.core::String* {
       return "${this.{main::Foo::message}}?!?";
     }
+    abstract member-signature get _identityHashCode() → dart.core::int*;
+    abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfTrue(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfFalse(dynamic type) → dart.core::bool*;
+    abstract member-signature operator ==(dynamic other) → dart.core::bool*;
+    abstract member-signature get hashCode() → dart.core::int*;
+    abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic;
+    abstract member-signature get runtimeType() → dart.core::Type*;
   }
   class CompilationStrategy extends dart.core::Object /*isEnum*/  {
     final field dart.core::int* index;
@@ -34,6 +43,15 @@
       ;
     method toString() → dart.core::String*
       return this.{=main::CompilationStrategy::_name};
+    abstract member-signature get _identityHashCode() → dart.core::int*;
+    abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfTrue(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfFalse(dynamic type) → dart.core::bool*;
+    abstract member-signature operator ==(dynamic other) → dart.core::bool*;
+    abstract member-signature get hashCode() → dart.core::int*;
+    abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic;
+    abstract member-signature get runtimeType() → dart.core::Type*;
   }
   static method main() → dynamic {
     main::Foo* foo = new main::Foo::•("hello");
diff --git a/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_7.yaml.world.1.expect b/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_7.yaml.world.1.expect
index a766d58..8006e75 100644
--- a/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_7.yaml.world.1.expect
+++ b/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_7.yaml.world.1.expect
@@ -17,6 +17,16 @@
     @#C1
     constructor •(@#C1 dart.core::int* x) → main::Bar*
       : super dart.core::Object::•() {}
+    abstract member-signature method toString() → dart.core::String*;
+    abstract member-signature get _identityHashCode() → dart.core::int*;
+    abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfTrue(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfFalse(dynamic type) → dart.core::bool*;
+    abstract member-signature operator ==(dynamic other) → dart.core::bool*;
+    abstract member-signature get hashCode() → dart.core::int*;
+    abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic;
+    abstract member-signature get runtimeType() → dart.core::Type*;
   }
   @#C1
   class Foo extends main::Bar {
@@ -49,6 +59,15 @@
       ;
     method toString() → dart.core::String*
       return this.{=main::CompilationStrategy::_name};
+    abstract member-signature get _identityHashCode() → dart.core::int*;
+    abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfTrue(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfFalse(dynamic type) → dart.core::bool*;
+    abstract member-signature operator ==(dynamic other) → dart.core::bool*;
+    abstract member-signature get hashCode() → dart.core::int*;
+    abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic;
+    abstract member-signature get runtimeType() → dart.core::Type*;
   }
   static const field dart.core::String* useMeAsAnnotation = #C1;
   @#C1
diff --git a/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_7.yaml.world.2.expect b/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_7.yaml.world.2.expect
index a766d58..8006e75 100644
--- a/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_7.yaml.world.2.expect
+++ b/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_7.yaml.world.2.expect
@@ -17,6 +17,16 @@
     @#C1
     constructor •(@#C1 dart.core::int* x) → main::Bar*
       : super dart.core::Object::•() {}
+    abstract member-signature method toString() → dart.core::String*;
+    abstract member-signature get _identityHashCode() → dart.core::int*;
+    abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfTrue(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfFalse(dynamic type) → dart.core::bool*;
+    abstract member-signature operator ==(dynamic other) → dart.core::bool*;
+    abstract member-signature get hashCode() → dart.core::int*;
+    abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic;
+    abstract member-signature get runtimeType() → dart.core::Type*;
   }
   @#C1
   class Foo extends main::Bar {
@@ -49,6 +59,15 @@
       ;
     method toString() → dart.core::String*
       return this.{=main::CompilationStrategy::_name};
+    abstract member-signature get _identityHashCode() → dart.core::int*;
+    abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfTrue(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfFalse(dynamic type) → dart.core::bool*;
+    abstract member-signature operator ==(dynamic other) → dart.core::bool*;
+    abstract member-signature get hashCode() → dart.core::int*;
+    abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic;
+    abstract member-signature get runtimeType() → dart.core::Type*;
   }
   static const field dart.core::String* useMeAsAnnotation = #C1;
   @#C1
diff --git a/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_8.yaml.world.1.expect b/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_8.yaml.world.1.expect
index 86f941c..60dc023 100644
--- a/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_8.yaml.world.1.expect
+++ b/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_8.yaml.world.1.expect
@@ -9,6 +9,16 @@
       return "x #1";
     }
     set x(dart.core::String* x) → void {}
+    abstract member-signature get _identityHashCode() → dart.core::int*;
+    abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfTrue(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfFalse(dynamic type) → dart.core::bool*;
+    abstract member-signature operator ==(dynamic other) → dart.core::bool*;
+    abstract member-signature get hashCode() → dart.core::int*;
+    abstract member-signature method toString() → dart.core::String*;
+    abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic;
+    abstract member-signature get runtimeType() → dart.core::Type*;
   }
   static method main() → dynamic {
     main::Foo* foo = new main::Foo::•();
diff --git a/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_8.yaml.world.2.expect b/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_8.yaml.world.2.expect
index 075904d..e274d04 100644
--- a/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_8.yaml.world.2.expect
+++ b/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_8.yaml.world.2.expect
@@ -9,6 +9,16 @@
       return "x #2";
     }
     set x(dart.core::String* x) → void {}
+    abstract member-signature get _identityHashCode() → dart.core::int*;
+    abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfTrue(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfFalse(dynamic type) → dart.core::bool*;
+    abstract member-signature operator ==(dynamic other) → dart.core::bool*;
+    abstract member-signature get hashCode() → dart.core::int*;
+    abstract member-signature method toString() → dart.core::String*;
+    abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic;
+    abstract member-signature get runtimeType() → dart.core::Type*;
   }
   static method main() → dynamic {
     main::Foo* foo = new main::Foo::•();
diff --git a/pkg/front_end/testcases/incremental_initialize_from_dill/outline_only_2.yaml.world.1.expect b/pkg/front_end/testcases/incremental_initialize_from_dill/outline_only_2.yaml.world.1.expect
index 2858e1c..d901090 100644
--- a/pkg/front_end/testcases/incremental_initialize_from_dill/outline_only_2.yaml.world.1.expect
+++ b/pkg/front_end/testcases/incremental_initialize_from_dill/outline_only_2.yaml.world.1.expect
@@ -5,11 +5,31 @@
     synthetic constructor •() → main::Foo*
       ;
     abstract get foo() → dart.core::int*;
+    abstract member-signature get _identityHashCode() → dart.core::int*;
+    abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfTrue(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfFalse(dynamic type) → dart.core::bool*;
+    abstract member-signature operator ==(dynamic other) → dart.core::bool*;
+    abstract member-signature get hashCode() → dart.core::int*;
+    abstract member-signature method toString() → dart.core::String*;
+    abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic;
+    abstract member-signature get runtimeType() → dart.core::Type*;
   }
   class Bar extends dart.core::Object implements main::Foo {
     static field dart.core::int* _foo;
     final field dart.core::int* foo;
     synthetic constructor •() → main::Bar*
       ;
+    abstract member-signature get _identityHashCode() → dart.core::int*;
+    abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfTrue(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfFalse(dynamic type) → dart.core::bool*;
+    abstract member-signature operator ==(dynamic other) → dart.core::bool*;
+    abstract member-signature get hashCode() → dart.core::int*;
+    abstract member-signature method toString() → dart.core::String*;
+    abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic;
+    abstract member-signature get runtimeType() → dart.core::Type*;
   }
 }
diff --git a/pkg/front_end/testcases/incremental_initialize_from_dill/reissue_errors_10.yaml.world.1.expect b/pkg/front_end/testcases/incremental_initialize_from_dill/reissue_errors_10.yaml.world.1.expect
index c3488019..5f2df0a 100644
--- a/pkg/front_end/testcases/incremental_initialize_from_dill/reissue_errors_10.yaml.world.1.expect
+++ b/pkg/front_end/testcases/incremental_initialize_from_dill/reissue_errors_10.yaml.world.1.expect
@@ -5,6 +5,16 @@
     const constructor •(dart.core::int* i) → lib::Foo*
       : assert(i.{dart.core::num::>}(0)), super dart.core::Object::•()
       ;
+    abstract member-signature get _identityHashCode() → dart.core::int*;
+    abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfTrue(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfFalse(dynamic type) → dart.core::bool*;
+    abstract member-signature operator ==(dynamic other) → dart.core::bool*;
+    abstract member-signature get hashCode() → dart.core::int*;
+    abstract member-signature method toString() → dart.core::String*;
+    abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic;
+    abstract member-signature get runtimeType() → dart.core::Type*;
   }
   static method foo() → dynamic {
     new lib::Foo::•(0);
diff --git a/pkg/front_end/testcases/incremental_initialize_from_dill/reissue_errors_10.yaml.world.2.expect b/pkg/front_end/testcases/incremental_initialize_from_dill/reissue_errors_10.yaml.world.2.expect
index 330e86a..c36262f 100644
--- a/pkg/front_end/testcases/incremental_initialize_from_dill/reissue_errors_10.yaml.world.2.expect
+++ b/pkg/front_end/testcases/incremental_initialize_from_dill/reissue_errors_10.yaml.world.2.expect
@@ -5,6 +5,16 @@
     const constructor •(dart.core::int* i) → lib::Foo*
       : assert(i.{dart.core::num::>}(0)), super dart.core::Object::•()
       ;
+    abstract member-signature get _identityHashCode() → dart.core::int*;
+    abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfTrue(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfFalse(dynamic type) → dart.core::bool*;
+    abstract member-signature operator ==(dynamic other) → dart.core::bool*;
+    abstract member-signature get hashCode() → dart.core::int*;
+    abstract member-signature method toString() → dart.core::String*;
+    abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic;
+    abstract member-signature get runtimeType() → dart.core::Type*;
   }
   static method foo() → dynamic {
     new lib::Foo::•(0);
diff --git a/pkg/front_end/testcases/incremental_initialize_from_dill/reissue_errors_10.yaml.world.3.expect b/pkg/front_end/testcases/incremental_initialize_from_dill/reissue_errors_10.yaml.world.3.expect
index d94840c..ef555ec 100644
--- a/pkg/front_end/testcases/incremental_initialize_from_dill/reissue_errors_10.yaml.world.3.expect
+++ b/pkg/front_end/testcases/incremental_initialize_from_dill/reissue_errors_10.yaml.world.3.expect
@@ -5,6 +5,16 @@
     const constructor •(dart.core::int* i) → lib::Foo*
       : assert(i.{dart.core::num::>}(0)), super dart.core::Object::•()
       ;
+    abstract member-signature get _identityHashCode() → dart.core::int*;
+    abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfTrue(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfFalse(dynamic type) → dart.core::bool*;
+    abstract member-signature operator ==(dynamic other) → dart.core::bool*;
+    abstract member-signature get hashCode() → dart.core::int*;
+    abstract member-signature method toString() → dart.core::String*;
+    abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic;
+    abstract member-signature get runtimeType() → dart.core::Type*;
   }
   static method foo() → dynamic {
     new lib::Foo::•(0);
diff --git a/pkg/front_end/testcases/incremental_initialize_from_dill/reissue_errors_10.yaml.world.4.expect b/pkg/front_end/testcases/incremental_initialize_from_dill/reissue_errors_10.yaml.world.4.expect
index 4448e20..15a389b 100644
--- a/pkg/front_end/testcases/incremental_initialize_from_dill/reissue_errors_10.yaml.world.4.expect
+++ b/pkg/front_end/testcases/incremental_initialize_from_dill/reissue_errors_10.yaml.world.4.expect
@@ -5,6 +5,16 @@
     const constructor •(dart.core::int* i) → lib::Foo*
       : assert(i.{dart.core::num::>}(0)), super dart.core::Object::•()
       ;
+    abstract member-signature get _identityHashCode() → dart.core::int*;
+    abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfTrue(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfFalse(dynamic type) → dart.core::bool*;
+    abstract member-signature operator ==(dynamic other) → dart.core::bool*;
+    abstract member-signature get hashCode() → dart.core::int*;
+    abstract member-signature method toString() → dart.core::String*;
+    abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic;
+    abstract member-signature get runtimeType() → dart.core::Type*;
   }
   static method foo() → dynamic {
     new lib::Foo::•(0);
diff --git a/pkg/front_end/testcases/incremental_initialize_from_dill/reissue_errors_10.yaml.world.5.expect b/pkg/front_end/testcases/incremental_initialize_from_dill/reissue_errors_10.yaml.world.5.expect
index 0a98dfb..f6ceeb2 100644
--- a/pkg/front_end/testcases/incremental_initialize_from_dill/reissue_errors_10.yaml.world.5.expect
+++ b/pkg/front_end/testcases/incremental_initialize_from_dill/reissue_errors_10.yaml.world.5.expect
@@ -5,6 +5,16 @@
     const constructor •(dart.core::int* i) → lib::Foo*
       : assert(i.{dart.core::num::>}(0)), super dart.core::Object::•()
       ;
+    abstract member-signature get _identityHashCode() → dart.core::int*;
+    abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfTrue(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfFalse(dynamic type) → dart.core::bool*;
+    abstract member-signature operator ==(dynamic other) → dart.core::bool*;
+    abstract member-signature get hashCode() → dart.core::int*;
+    abstract member-signature method toString() → dart.core::String*;
+    abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic;
+    abstract member-signature get runtimeType() → dart.core::Type*;
   }
   static method foo() → dynamic {
     new lib::Foo::•(0);
diff --git a/pkg/front_end/testcases/incremental_initialize_from_dill/reissue_errors_11.yaml.world.1.expect b/pkg/front_end/testcases/incremental_initialize_from_dill/reissue_errors_11.yaml.world.1.expect
index c3488019..5f2df0a 100644
--- a/pkg/front_end/testcases/incremental_initialize_from_dill/reissue_errors_11.yaml.world.1.expect
+++ b/pkg/front_end/testcases/incremental_initialize_from_dill/reissue_errors_11.yaml.world.1.expect
@@ -5,6 +5,16 @@
     const constructor •(dart.core::int* i) → lib::Foo*
       : assert(i.{dart.core::num::>}(0)), super dart.core::Object::•()
       ;
+    abstract member-signature get _identityHashCode() → dart.core::int*;
+    abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfTrue(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfFalse(dynamic type) → dart.core::bool*;
+    abstract member-signature operator ==(dynamic other) → dart.core::bool*;
+    abstract member-signature get hashCode() → dart.core::int*;
+    abstract member-signature method toString() → dart.core::String*;
+    abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic;
+    abstract member-signature get runtimeType() → dart.core::Type*;
   }
   static method foo() → dynamic {
     new lib::Foo::•(0);
diff --git a/pkg/front_end/testcases/incremental_initialize_from_dill/reissue_errors_11.yaml.world.2.expect b/pkg/front_end/testcases/incremental_initialize_from_dill/reissue_errors_11.yaml.world.2.expect
index d55ef0b..5a0207f 100644
--- a/pkg/front_end/testcases/incremental_initialize_from_dill/reissue_errors_11.yaml.world.2.expect
+++ b/pkg/front_end/testcases/incremental_initialize_from_dill/reissue_errors_11.yaml.world.2.expect
@@ -5,6 +5,16 @@
     const constructor •(dart.core::int* i) → lib::Foo*
       : assert(i.{dart.core::num::>}(0)), super dart.core::Object::•()
       ;
+    abstract member-signature get _identityHashCode() → dart.core::int*;
+    abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfTrue(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfFalse(dynamic type) → dart.core::bool*;
+    abstract member-signature operator ==(dynamic other) → dart.core::bool*;
+    abstract member-signature get hashCode() → dart.core::int*;
+    abstract member-signature method toString() → dart.core::String*;
+    abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic;
+    abstract member-signature get runtimeType() → dart.core::Type*;
   }
   static method foo() → dynamic {
     new lib::Foo::•(0);
@@ -19,6 +29,16 @@
     const constructor •() → lib2::Bar*
       : lib2::Bar::x = invalid-expression "This assertion failed.", super dart.core::Object::•()
       ;
+    abstract member-signature get _identityHashCode() → dart.core::int*;
+    abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfTrue(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfFalse(dynamic type) → dart.core::bool*;
+    abstract member-signature operator ==(dynamic other) → dart.core::bool*;
+    abstract member-signature get hashCode() → dart.core::int*;
+    abstract member-signature method toString() → dart.core::String*;
+    abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic;
+    abstract member-signature get runtimeType() → dart.core::Type*;
   }
   static method bar() → dynamic {}
 }
diff --git a/pkg/front_end/testcases/incremental_initialize_from_dill/reissue_errors_11.yaml.world.3.expect b/pkg/front_end/testcases/incremental_initialize_from_dill/reissue_errors_11.yaml.world.3.expect
index ea9b7e7..da29e13 100644
--- a/pkg/front_end/testcases/incremental_initialize_from_dill/reissue_errors_11.yaml.world.3.expect
+++ b/pkg/front_end/testcases/incremental_initialize_from_dill/reissue_errors_11.yaml.world.3.expect
@@ -5,6 +5,16 @@
     const constructor •(dart.core::int* i) → lib::Foo*
       : assert(i.{dart.core::num::>}(0)), super dart.core::Object::•()
       ;
+    abstract member-signature get _identityHashCode() → dart.core::int*;
+    abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfTrue(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfFalse(dynamic type) → dart.core::bool*;
+    abstract member-signature operator ==(dynamic other) → dart.core::bool*;
+    abstract member-signature get hashCode() → dart.core::int*;
+    abstract member-signature method toString() → dart.core::String*;
+    abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic;
+    abstract member-signature get runtimeType() → dart.core::Type*;
   }
   static method foo() → dynamic {
     new lib::Foo::•(0);
@@ -19,6 +29,16 @@
     const constructor •() → lib2::Bar*
       : lib2::Bar::x = #C1, super dart.core::Object::•()
       ;
+    abstract member-signature get _identityHashCode() → dart.core::int*;
+    abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfTrue(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfFalse(dynamic type) → dart.core::bool*;
+    abstract member-signature operator ==(dynamic other) → dart.core::bool*;
+    abstract member-signature get hashCode() → dart.core::int*;
+    abstract member-signature method toString() → dart.core::String*;
+    abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic;
+    abstract member-signature get runtimeType() → dart.core::Type*;
   }
   static method bar() → dynamic {}
 }
diff --git a/pkg/front_end/testcases/incremental_initialize_from_dill/reissue_errors_2.yaml.world.1.expect b/pkg/front_end/testcases/incremental_initialize_from_dill/reissue_errors_2.yaml.world.1.expect
index 62af8dd..9963c6c 100644
--- a/pkg/front_end/testcases/incremental_initialize_from_dill/reissue_errors_2.yaml.world.1.expect
+++ b/pkg/front_end/testcases/incremental_initialize_from_dill/reissue_errors_2.yaml.world.1.expect
@@ -14,6 +14,16 @@
     synthetic constructor •() → b::B*
       : super dart.core::Object::•()
       ;
+    abstract member-signature get _identityHashCode() → dart.core::int*;
+    abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfTrue(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfFalse(dynamic type) → dart.core::bool*;
+    abstract member-signature operator ==(dynamic other) → dart.core::bool*;
+    abstract member-signature get hashCode() → dart.core::int*;
+    abstract member-signature method toString() → dart.core::String*;
+    abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic;
+    abstract member-signature get runtimeType() → dart.core::Type*;
   }
 }
 library from "org-dartlang-test:///main.dart" as main {
diff --git a/pkg/front_end/testcases/incremental_initialize_from_dill/reissue_errors_2.yaml.world.2.expect b/pkg/front_end/testcases/incremental_initialize_from_dill/reissue_errors_2.yaml.world.2.expect
index 62af8dd..9963c6c 100644
--- a/pkg/front_end/testcases/incremental_initialize_from_dill/reissue_errors_2.yaml.world.2.expect
+++ b/pkg/front_end/testcases/incremental_initialize_from_dill/reissue_errors_2.yaml.world.2.expect
@@ -14,6 +14,16 @@
     synthetic constructor •() → b::B*
       : super dart.core::Object::•()
       ;
+    abstract member-signature get _identityHashCode() → dart.core::int*;
+    abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfTrue(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfFalse(dynamic type) → dart.core::bool*;
+    abstract member-signature operator ==(dynamic other) → dart.core::bool*;
+    abstract member-signature get hashCode() → dart.core::int*;
+    abstract member-signature method toString() → dart.core::String*;
+    abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic;
+    abstract member-signature get runtimeType() → dart.core::Type*;
   }
 }
 library from "org-dartlang-test:///main.dart" as main {
diff --git a/pkg/front_end/testcases/incremental_initialize_from_dill/reissue_errors_2.yaml.world.3.expect b/pkg/front_end/testcases/incremental_initialize_from_dill/reissue_errors_2.yaml.world.3.expect
index 62af8dd..9963c6c 100644
--- a/pkg/front_end/testcases/incremental_initialize_from_dill/reissue_errors_2.yaml.world.3.expect
+++ b/pkg/front_end/testcases/incremental_initialize_from_dill/reissue_errors_2.yaml.world.3.expect
@@ -14,6 +14,16 @@
     synthetic constructor •() → b::B*
       : super dart.core::Object::•()
       ;
+    abstract member-signature get _identityHashCode() → dart.core::int*;
+    abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfTrue(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfFalse(dynamic type) → dart.core::bool*;
+    abstract member-signature operator ==(dynamic other) → dart.core::bool*;
+    abstract member-signature get hashCode() → dart.core::int*;
+    abstract member-signature method toString() → dart.core::String*;
+    abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic;
+    abstract member-signature get runtimeType() → dart.core::Type*;
   }
 }
 library from "org-dartlang-test:///main.dart" as main {
diff --git a/pkg/front_end/testcases/incremental_initialize_from_dill/reissue_errors_2.yaml.world.4.expect b/pkg/front_end/testcases/incremental_initialize_from_dill/reissue_errors_2.yaml.world.4.expect
index 62af8dd..9963c6c 100644
--- a/pkg/front_end/testcases/incremental_initialize_from_dill/reissue_errors_2.yaml.world.4.expect
+++ b/pkg/front_end/testcases/incremental_initialize_from_dill/reissue_errors_2.yaml.world.4.expect
@@ -14,6 +14,16 @@
     synthetic constructor •() → b::B*
       : super dart.core::Object::•()
       ;
+    abstract member-signature get _identityHashCode() → dart.core::int*;
+    abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfTrue(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfFalse(dynamic type) → dart.core::bool*;
+    abstract member-signature operator ==(dynamic other) → dart.core::bool*;
+    abstract member-signature get hashCode() → dart.core::int*;
+    abstract member-signature method toString() → dart.core::String*;
+    abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic;
+    abstract member-signature get runtimeType() → dart.core::Type*;
   }
 }
 library from "org-dartlang-test:///main.dart" as main {
diff --git a/pkg/front_end/testcases/incremental_initialize_from_dill/reissue_errors_2.yaml.world.5.expect b/pkg/front_end/testcases/incremental_initialize_from_dill/reissue_errors_2.yaml.world.5.expect
index a8630dc..b5128db 100644
--- a/pkg/front_end/testcases/incremental_initialize_from_dill/reissue_errors_2.yaml.world.5.expect
+++ b/pkg/front_end/testcases/incremental_initialize_from_dill/reissue_errors_2.yaml.world.5.expect
@@ -14,6 +14,16 @@
     synthetic constructor •() → b::B*
       : super dart.core::Object::•()
       ;
+    abstract member-signature get _identityHashCode() → dart.core::int*;
+    abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfTrue(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfFalse(dynamic type) → dart.core::bool*;
+    abstract member-signature operator ==(dynamic other) → dart.core::bool*;
+    abstract member-signature get hashCode() → dart.core::int*;
+    abstract member-signature method toString() → dart.core::String*;
+    abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic;
+    abstract member-signature get runtimeType() → dart.core::Type*;
   }
 }
 library from "org-dartlang-test:///main.dart" as main {
@@ -31,5 +41,15 @@
     synthetic constructor •() → main::A*
       : super dart.core::Object::•()
       ;
+    abstract member-signature get _identityHashCode() → dart.core::int*;
+    abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfTrue(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfFalse(dynamic type) → dart.core::bool*;
+    abstract member-signature operator ==(dynamic other) → dart.core::bool*;
+    abstract member-signature get hashCode() → dart.core::int*;
+    abstract member-signature method toString() → dart.core::String*;
+    abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic;
+    abstract member-signature get runtimeType() → dart.core::Type*;
   }
 }
diff --git a/pkg/front_end/testcases/incremental_initialize_from_dill/reissue_errors_2.yaml.world.6.expect b/pkg/front_end/testcases/incremental_initialize_from_dill/reissue_errors_2.yaml.world.6.expect
index 3ae163a..d6cb344 100644
--- a/pkg/front_end/testcases/incremental_initialize_from_dill/reissue_errors_2.yaml.world.6.expect
+++ b/pkg/front_end/testcases/incremental_initialize_from_dill/reissue_errors_2.yaml.world.6.expect
@@ -5,6 +5,16 @@
     synthetic constructor •() → b::B*
       : super dart.core::Object::•()
       ;
+    abstract member-signature get _identityHashCode() → dart.core::int*;
+    abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfTrue(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfFalse(dynamic type) → dart.core::bool*;
+    abstract member-signature operator ==(dynamic other) → dart.core::bool*;
+    abstract member-signature get hashCode() → dart.core::int*;
+    abstract member-signature method toString() → dart.core::String*;
+    abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic;
+    abstract member-signature get runtimeType() → dart.core::Type*;
   }
 }
 library from "org-dartlang-test:///main.dart" as main {
diff --git a/pkg/front_end/testcases/incremental_initialize_from_dill/reissue_errors_3.yaml.world.1.expect b/pkg/front_end/testcases/incremental_initialize_from_dill/reissue_errors_3.yaml.world.1.expect
index 560b3dd..5878d95 100644
--- a/pkg/front_end/testcases/incremental_initialize_from_dill/reissue_errors_3.yaml.world.1.expect
+++ b/pkg/front_end/testcases/incremental_initialize_from_dill/reissue_errors_3.yaml.world.1.expect
@@ -12,6 +12,16 @@
     synthetic constructor •() → a::Foo<a::Foo::T*>*
       : super dart.core::Object::•()
       ;
+    abstract member-signature get _identityHashCode() → dart.core::int*;
+    abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfTrue(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfFalse(dynamic type) → dart.core::bool*;
+    abstract member-signature operator ==(dynamic other) → dart.core::bool*;
+    abstract member-signature get hashCode() → dart.core::int*;
+    abstract member-signature method toString() → dart.core::String*;
+    abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic;
+    abstract member-signature get runtimeType() → dart.core::Type*;
   }
   class Bar<T extends dart.core::Object* = dynamic> extends a::Foo<a::Bar::T*> {
     synthetic constructor •() → a::Bar<a::Bar::T*>*
diff --git a/pkg/front_end/testcases/incremental_initialize_from_dill/reissue_errors_3.yaml.world.2.expect b/pkg/front_end/testcases/incremental_initialize_from_dill/reissue_errors_3.yaml.world.2.expect
index 560b3dd..5878d95 100644
--- a/pkg/front_end/testcases/incremental_initialize_from_dill/reissue_errors_3.yaml.world.2.expect
+++ b/pkg/front_end/testcases/incremental_initialize_from_dill/reissue_errors_3.yaml.world.2.expect
@@ -12,6 +12,16 @@
     synthetic constructor •() → a::Foo<a::Foo::T*>*
       : super dart.core::Object::•()
       ;
+    abstract member-signature get _identityHashCode() → dart.core::int*;
+    abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfTrue(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfFalse(dynamic type) → dart.core::bool*;
+    abstract member-signature operator ==(dynamic other) → dart.core::bool*;
+    abstract member-signature get hashCode() → dart.core::int*;
+    abstract member-signature method toString() → dart.core::String*;
+    abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic;
+    abstract member-signature get runtimeType() → dart.core::Type*;
   }
   class Bar<T extends dart.core::Object* = dynamic> extends a::Foo<a::Bar::T*> {
     synthetic constructor •() → a::Bar<a::Bar::T*>*
diff --git a/pkg/front_end/testcases/incremental_initialize_from_dill/reissue_errors_3.yaml.world.3.expect b/pkg/front_end/testcases/incremental_initialize_from_dill/reissue_errors_3.yaml.world.3.expect
index 560b3dd..5878d95 100644
--- a/pkg/front_end/testcases/incremental_initialize_from_dill/reissue_errors_3.yaml.world.3.expect
+++ b/pkg/front_end/testcases/incremental_initialize_from_dill/reissue_errors_3.yaml.world.3.expect
@@ -12,6 +12,16 @@
     synthetic constructor •() → a::Foo<a::Foo::T*>*
       : super dart.core::Object::•()
       ;
+    abstract member-signature get _identityHashCode() → dart.core::int*;
+    abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfTrue(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfFalse(dynamic type) → dart.core::bool*;
+    abstract member-signature operator ==(dynamic other) → dart.core::bool*;
+    abstract member-signature get hashCode() → dart.core::int*;
+    abstract member-signature method toString() → dart.core::String*;
+    abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic;
+    abstract member-signature get runtimeType() → dart.core::Type*;
   }
   class Bar<T extends dart.core::Object* = dynamic> extends a::Foo<a::Bar::T*> {
     synthetic constructor •() → a::Bar<a::Bar::T*>*
diff --git a/pkg/front_end/testcases/incremental_initialize_from_dill/reissue_errors_3.yaml.world.4.expect b/pkg/front_end/testcases/incremental_initialize_from_dill/reissue_errors_3.yaml.world.4.expect
index 560b3dd..5878d95 100644
--- a/pkg/front_end/testcases/incremental_initialize_from_dill/reissue_errors_3.yaml.world.4.expect
+++ b/pkg/front_end/testcases/incremental_initialize_from_dill/reissue_errors_3.yaml.world.4.expect
@@ -12,6 +12,16 @@
     synthetic constructor •() → a::Foo<a::Foo::T*>*
       : super dart.core::Object::•()
       ;
+    abstract member-signature get _identityHashCode() → dart.core::int*;
+    abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfTrue(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfFalse(dynamic type) → dart.core::bool*;
+    abstract member-signature operator ==(dynamic other) → dart.core::bool*;
+    abstract member-signature get hashCode() → dart.core::int*;
+    abstract member-signature method toString() → dart.core::String*;
+    abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic;
+    abstract member-signature get runtimeType() → dart.core::Type*;
   }
   class Bar<T extends dart.core::Object* = dynamic> extends a::Foo<a::Bar::T*> {
     synthetic constructor •() → a::Bar<a::Bar::T*>*
diff --git a/pkg/front_end/testcases/incremental_initialize_from_dill/reissue_errors_3.yaml.world.5.expect b/pkg/front_end/testcases/incremental_initialize_from_dill/reissue_errors_3.yaml.world.5.expect
index bfe5392..b642a94 100644
--- a/pkg/front_end/testcases/incremental_initialize_from_dill/reissue_errors_3.yaml.world.5.expect
+++ b/pkg/front_end/testcases/incremental_initialize_from_dill/reissue_errors_3.yaml.world.5.expect
@@ -12,6 +12,16 @@
     synthetic constructor •() → a::Foo<a::Foo::T*>*
       : super dart.core::Object::•()
       ;
+    abstract member-signature get _identityHashCode() → dart.core::int*;
+    abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfTrue(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfFalse(dynamic type) → dart.core::bool*;
+    abstract member-signature operator ==(dynamic other) → dart.core::bool*;
+    abstract member-signature get hashCode() → dart.core::int*;
+    abstract member-signature method toString() → dart.core::String*;
+    abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic;
+    abstract member-signature get runtimeType() → dart.core::Type*;
   }
   class Bar<T extends dart.core::Object* = dynamic> extends a::Foo<a::Bar::T*> {
     synthetic constructor •() → a::Bar<a::Bar::T*>*
diff --git a/pkg/front_end/testcases/incremental_initialize_from_dill/reissue_errors_4.yaml.world.1.expect b/pkg/front_end/testcases/incremental_initialize_from_dill/reissue_errors_4.yaml.world.1.expect
index 999851d..f8b7c2f 100644
--- a/pkg/front_end/testcases/incremental_initialize_from_dill/reissue_errors_4.yaml.world.1.expect
+++ b/pkg/front_end/testcases/incremental_initialize_from_dill/reissue_errors_4.yaml.world.1.expect
@@ -12,6 +12,16 @@
     synthetic constructor •() → a::Foo<a::Foo::T*>*
       : super dart.core::Object::•()
       ;
+    abstract member-signature get _identityHashCode() → dart.core::int*;
+    abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfTrue(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfFalse(dynamic type) → dart.core::bool*;
+    abstract member-signature operator ==(dynamic other) → dart.core::bool*;
+    abstract member-signature get hashCode() → dart.core::int*;
+    abstract member-signature method toString() → dart.core::String*;
+    abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic;
+    abstract member-signature get runtimeType() → dart.core::Type*;
   }
   class Bar<T extends dart.core::Object* = dynamic> extends a::Foo<a::Bar::T*> {
     synthetic constructor •() → a::Bar<a::Bar::T*>*
diff --git a/pkg/front_end/testcases/incremental_initialize_from_dill/reissue_errors_4.yaml.world.2.expect b/pkg/front_end/testcases/incremental_initialize_from_dill/reissue_errors_4.yaml.world.2.expect
index 999851d..f8b7c2f 100644
--- a/pkg/front_end/testcases/incremental_initialize_from_dill/reissue_errors_4.yaml.world.2.expect
+++ b/pkg/front_end/testcases/incremental_initialize_from_dill/reissue_errors_4.yaml.world.2.expect
@@ -12,6 +12,16 @@
     synthetic constructor •() → a::Foo<a::Foo::T*>*
       : super dart.core::Object::•()
       ;
+    abstract member-signature get _identityHashCode() → dart.core::int*;
+    abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfTrue(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfFalse(dynamic type) → dart.core::bool*;
+    abstract member-signature operator ==(dynamic other) → dart.core::bool*;
+    abstract member-signature get hashCode() → dart.core::int*;
+    abstract member-signature method toString() → dart.core::String*;
+    abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic;
+    abstract member-signature get runtimeType() → dart.core::Type*;
   }
   class Bar<T extends dart.core::Object* = dynamic> extends a::Foo<a::Bar::T*> {
     synthetic constructor •() → a::Bar<a::Bar::T*>*
diff --git a/pkg/front_end/testcases/incremental_initialize_from_dill/reissue_errors_4.yaml.world.3.expect b/pkg/front_end/testcases/incremental_initialize_from_dill/reissue_errors_4.yaml.world.3.expect
index 999851d..f8b7c2f 100644
--- a/pkg/front_end/testcases/incremental_initialize_from_dill/reissue_errors_4.yaml.world.3.expect
+++ b/pkg/front_end/testcases/incremental_initialize_from_dill/reissue_errors_4.yaml.world.3.expect
@@ -12,6 +12,16 @@
     synthetic constructor •() → a::Foo<a::Foo::T*>*
       : super dart.core::Object::•()
       ;
+    abstract member-signature get _identityHashCode() → dart.core::int*;
+    abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfTrue(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfFalse(dynamic type) → dart.core::bool*;
+    abstract member-signature operator ==(dynamic other) → dart.core::bool*;
+    abstract member-signature get hashCode() → dart.core::int*;
+    abstract member-signature method toString() → dart.core::String*;
+    abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic;
+    abstract member-signature get runtimeType() → dart.core::Type*;
   }
   class Bar<T extends dart.core::Object* = dynamic> extends a::Foo<a::Bar::T*> {
     synthetic constructor •() → a::Bar<a::Bar::T*>*
diff --git a/pkg/front_end/testcases/incremental_initialize_from_dill/reissue_errors_4.yaml.world.4.expect b/pkg/front_end/testcases/incremental_initialize_from_dill/reissue_errors_4.yaml.world.4.expect
index 999851d..f8b7c2f 100644
--- a/pkg/front_end/testcases/incremental_initialize_from_dill/reissue_errors_4.yaml.world.4.expect
+++ b/pkg/front_end/testcases/incremental_initialize_from_dill/reissue_errors_4.yaml.world.4.expect
@@ -12,6 +12,16 @@
     synthetic constructor •() → a::Foo<a::Foo::T*>*
       : super dart.core::Object::•()
       ;
+    abstract member-signature get _identityHashCode() → dart.core::int*;
+    abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfTrue(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfFalse(dynamic type) → dart.core::bool*;
+    abstract member-signature operator ==(dynamic other) → dart.core::bool*;
+    abstract member-signature get hashCode() → dart.core::int*;
+    abstract member-signature method toString() → dart.core::String*;
+    abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic;
+    abstract member-signature get runtimeType() → dart.core::Type*;
   }
   class Bar<T extends dart.core::Object* = dynamic> extends a::Foo<a::Bar::T*> {
     synthetic constructor •() → a::Bar<a::Bar::T*>*
diff --git a/pkg/front_end/testcases/incremental_initialize_from_dill/reissue_errors_4.yaml.world.5.expect b/pkg/front_end/testcases/incremental_initialize_from_dill/reissue_errors_4.yaml.world.5.expect
index d34698f..949ed33 100644
--- a/pkg/front_end/testcases/incremental_initialize_from_dill/reissue_errors_4.yaml.world.5.expect
+++ b/pkg/front_end/testcases/incremental_initialize_from_dill/reissue_errors_4.yaml.world.5.expect
@@ -12,6 +12,16 @@
     synthetic constructor •() → a::Foo<a::Foo::T*>*
       : super dart.core::Object::•()
       ;
+    abstract member-signature get _identityHashCode() → dart.core::int*;
+    abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfTrue(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfFalse(dynamic type) → dart.core::bool*;
+    abstract member-signature operator ==(dynamic other) → dart.core::bool*;
+    abstract member-signature get hashCode() → dart.core::int*;
+    abstract member-signature method toString() → dart.core::String*;
+    abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic;
+    abstract member-signature get runtimeType() → dart.core::Type*;
   }
   class Bar<T extends dart.core::Object* = dynamic> extends a::Foo<a::Bar::T*> {
     synthetic constructor •() → a::Bar<a::Bar::T*>*
diff --git a/pkg/front_end/testcases/incremental_initialize_from_dill/reissue_errors_6.yaml.world.1.expect b/pkg/front_end/testcases/incremental_initialize_from_dill/reissue_errors_6.yaml.world.1.expect
index 287e451..4e51d96 100644
--- a/pkg/front_end/testcases/incremental_initialize_from_dill/reissue_errors_6.yaml.world.1.expect
+++ b/pkg/front_end/testcases/incremental_initialize_from_dill/reissue_errors_6.yaml.world.1.expect
@@ -16,6 +16,16 @@
     synthetic constructor •() → lib::Bar<lib::Bar::X*>*
       : super dart.core::Object::•()
       ;
+    abstract member-signature get _identityHashCode() → dart.core::int*;
+    abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfTrue(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfFalse(dynamic type) → dart.core::bool*;
+    abstract member-signature operator ==(dynamic other) → dart.core::bool*;
+    abstract member-signature get hashCode() → dart.core::int*;
+    abstract member-signature method toString() → dart.core::String*;
+    abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic;
+    abstract member-signature get runtimeType() → dart.core::Type*;
   }
 }
 library from "org-dartlang-test:///main.dart" as main {
@@ -26,5 +36,15 @@
     synthetic constructor •() → main::Foo<main::Foo::X*>*
       : super dart.core::Object::•()
       ;
+    abstract member-signature get _identityHashCode() → dart.core::int*;
+    abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfTrue(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfFalse(dynamic type) → dart.core::bool*;
+    abstract member-signature operator ==(dynamic other) → dart.core::bool*;
+    abstract member-signature get hashCode() → dart.core::int*;
+    abstract member-signature method toString() → dart.core::String*;
+    abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic;
+    abstract member-signature get runtimeType() → dart.core::Type*;
   }
 }
diff --git a/pkg/front_end/testcases/incremental_initialize_from_dill/reissue_errors_6.yaml.world.2.expect b/pkg/front_end/testcases/incremental_initialize_from_dill/reissue_errors_6.yaml.world.2.expect
index 4c8930d..a671a04 100644
--- a/pkg/front_end/testcases/incremental_initialize_from_dill/reissue_errors_6.yaml.world.2.expect
+++ b/pkg/front_end/testcases/incremental_initialize_from_dill/reissue_errors_6.yaml.world.2.expect
@@ -16,6 +16,16 @@
     synthetic constructor •() → lib::Bar<lib::Bar::X*>*
       : super dart.core::Object::•()
       ;
+    abstract member-signature get _identityHashCode() → dart.core::int*;
+    abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfTrue(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfFalse(dynamic type) → dart.core::bool*;
+    abstract member-signature operator ==(dynamic other) → dart.core::bool*;
+    abstract member-signature get hashCode() → dart.core::int*;
+    abstract member-signature method toString() → dart.core::String*;
+    abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic;
+    abstract member-signature get runtimeType() → dart.core::Type*;
   }
 }
 library from "org-dartlang-test:///main.dart" as main {
@@ -26,5 +36,15 @@
     synthetic constructor •() → main::Foo*
       : super dart.core::Object::•()
       ;
+    abstract member-signature get _identityHashCode() → dart.core::int*;
+    abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfTrue(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfFalse(dynamic type) → dart.core::bool*;
+    abstract member-signature operator ==(dynamic other) → dart.core::bool*;
+    abstract member-signature get hashCode() → dart.core::int*;
+    abstract member-signature method toString() → dart.core::String*;
+    abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic;
+    abstract member-signature get runtimeType() → dart.core::Type*;
   }
 }
diff --git a/pkg/front_end/testcases/incremental_initialize_from_dill/reissue_errors_6.yaml.world.3.expect b/pkg/front_end/testcases/incremental_initialize_from_dill/reissue_errors_6.yaml.world.3.expect
index f05ee7f..52b128c 100644
--- a/pkg/front_end/testcases/incremental_initialize_from_dill/reissue_errors_6.yaml.world.3.expect
+++ b/pkg/front_end/testcases/incremental_initialize_from_dill/reissue_errors_6.yaml.world.3.expect
@@ -7,6 +7,16 @@
     synthetic constructor •() → lib::Bar<lib::Bar::X*>*
       : super dart.core::Object::•()
       ;
+    abstract member-signature get _identityHashCode() → dart.core::int*;
+    abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfTrue(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfFalse(dynamic type) → dart.core::bool*;
+    abstract member-signature operator ==(dynamic other) → dart.core::bool*;
+    abstract member-signature get hashCode() → dart.core::int*;
+    abstract member-signature method toString() → dart.core::String*;
+    abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic;
+    abstract member-signature get runtimeType() → dart.core::Type*;
   }
 }
 library from "org-dartlang-test:///main.dart" as main {
@@ -17,5 +27,15 @@
     synthetic constructor •() → main::Foo<main::Foo::X*>*
       : super dart.core::Object::•()
       ;
+    abstract member-signature get _identityHashCode() → dart.core::int*;
+    abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfTrue(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfFalse(dynamic type) → dart.core::bool*;
+    abstract member-signature operator ==(dynamic other) → dart.core::bool*;
+    abstract member-signature get hashCode() → dart.core::int*;
+    abstract member-signature method toString() → dart.core::String*;
+    abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic;
+    abstract member-signature get runtimeType() → dart.core::Type*;
   }
 }
diff --git a/pkg/front_end/testcases/incremental_initialize_from_dill/reissue_errors_8.yaml.world.1.expect b/pkg/front_end/testcases/incremental_initialize_from_dill/reissue_errors_8.yaml.world.1.expect
index c3488019..5f2df0a 100644
--- a/pkg/front_end/testcases/incremental_initialize_from_dill/reissue_errors_8.yaml.world.1.expect
+++ b/pkg/front_end/testcases/incremental_initialize_from_dill/reissue_errors_8.yaml.world.1.expect
@@ -5,6 +5,16 @@
     const constructor •(dart.core::int* i) → lib::Foo*
       : assert(i.{dart.core::num::>}(0)), super dart.core::Object::•()
       ;
+    abstract member-signature get _identityHashCode() → dart.core::int*;
+    abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfTrue(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfFalse(dynamic type) → dart.core::bool*;
+    abstract member-signature operator ==(dynamic other) → dart.core::bool*;
+    abstract member-signature get hashCode() → dart.core::int*;
+    abstract member-signature method toString() → dart.core::String*;
+    abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic;
+    abstract member-signature get runtimeType() → dart.core::Type*;
   }
   static method foo() → dynamic {
     new lib::Foo::•(0);
diff --git a/pkg/front_end/testcases/incremental_initialize_from_dill/reissue_errors_8.yaml.world.2.expect b/pkg/front_end/testcases/incremental_initialize_from_dill/reissue_errors_8.yaml.world.2.expect
index 6beddd6..dfa3ae9 100644
--- a/pkg/front_end/testcases/incremental_initialize_from_dill/reissue_errors_8.yaml.world.2.expect
+++ b/pkg/front_end/testcases/incremental_initialize_from_dill/reissue_errors_8.yaml.world.2.expect
@@ -5,6 +5,16 @@
     const constructor •(dart.core::int* i) → lib::Foo*
       : assert(i.{dart.core::num::>}(0)), super dart.core::Object::•()
       ;
+    abstract member-signature get _identityHashCode() → dart.core::int*;
+    abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfTrue(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfFalse(dynamic type) → dart.core::bool*;
+    abstract member-signature operator ==(dynamic other) → dart.core::bool*;
+    abstract member-signature get hashCode() → dart.core::int*;
+    abstract member-signature method toString() → dart.core::String*;
+    abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic;
+    abstract member-signature get runtimeType() → dart.core::Type*;
   }
   static method foo() → dynamic {
     new lib::Foo::•(0);
diff --git a/pkg/front_end/testcases/incremental_initialize_from_dill/reissue_errors_8.yaml.world.3.expect b/pkg/front_end/testcases/incremental_initialize_from_dill/reissue_errors_8.yaml.world.3.expect
index c3488019..5f2df0a 100644
--- a/pkg/front_end/testcases/incremental_initialize_from_dill/reissue_errors_8.yaml.world.3.expect
+++ b/pkg/front_end/testcases/incremental_initialize_from_dill/reissue_errors_8.yaml.world.3.expect
@@ -5,6 +5,16 @@
     const constructor •(dart.core::int* i) → lib::Foo*
       : assert(i.{dart.core::num::>}(0)), super dart.core::Object::•()
       ;
+    abstract member-signature get _identityHashCode() → dart.core::int*;
+    abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfTrue(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfFalse(dynamic type) → dart.core::bool*;
+    abstract member-signature operator ==(dynamic other) → dart.core::bool*;
+    abstract member-signature get hashCode() → dart.core::int*;
+    abstract member-signature method toString() → dart.core::String*;
+    abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic;
+    abstract member-signature get runtimeType() → dart.core::Type*;
   }
   static method foo() → dynamic {
     new lib::Foo::•(0);
diff --git a/pkg/front_end/testcases/incremental_initialize_from_dill/reissue_errors_9.yaml.world.1.expect b/pkg/front_end/testcases/incremental_initialize_from_dill/reissue_errors_9.yaml.world.1.expect
index c3488019..5f2df0a 100644
--- a/pkg/front_end/testcases/incremental_initialize_from_dill/reissue_errors_9.yaml.world.1.expect
+++ b/pkg/front_end/testcases/incremental_initialize_from_dill/reissue_errors_9.yaml.world.1.expect
@@ -5,6 +5,16 @@
     const constructor •(dart.core::int* i) → lib::Foo*
       : assert(i.{dart.core::num::>}(0)), super dart.core::Object::•()
       ;
+    abstract member-signature get _identityHashCode() → dart.core::int*;
+    abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfTrue(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfFalse(dynamic type) → dart.core::bool*;
+    abstract member-signature operator ==(dynamic other) → dart.core::bool*;
+    abstract member-signature get hashCode() → dart.core::int*;
+    abstract member-signature method toString() → dart.core::String*;
+    abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic;
+    abstract member-signature get runtimeType() → dart.core::Type*;
   }
   static method foo() → dynamic {
     new lib::Foo::•(0);
diff --git a/pkg/front_end/testcases/incremental_initialize_from_dill/reissue_errors_9.yaml.world.2.expect b/pkg/front_end/testcases/incremental_initialize_from_dill/reissue_errors_9.yaml.world.2.expect
index ec21fb4..103c7e0 100644
--- a/pkg/front_end/testcases/incremental_initialize_from_dill/reissue_errors_9.yaml.world.2.expect
+++ b/pkg/front_end/testcases/incremental_initialize_from_dill/reissue_errors_9.yaml.world.2.expect
@@ -5,6 +5,16 @@
     const constructor •(dart.core::int* i) → lib::Foo*
       : assert(i.{dart.core::num::>}(0)), super dart.core::Object::•()
       ;
+    abstract member-signature get _identityHashCode() → dart.core::int*;
+    abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfTrue(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfFalse(dynamic type) → dart.core::bool*;
+    abstract member-signature operator ==(dynamic other) → dart.core::bool*;
+    abstract member-signature get hashCode() → dart.core::int*;
+    abstract member-signature method toString() → dart.core::String*;
+    abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic;
+    abstract member-signature get runtimeType() → dart.core::Type*;
   }
   static method foo() → dynamic {
     new lib::Foo::•(0);
diff --git a/pkg/front_end/testcases/incremental_initialize_from_dill/reissue_errors_9.yaml.world.3.expect b/pkg/front_end/testcases/incremental_initialize_from_dill/reissue_errors_9.yaml.world.3.expect
index f105755..ba9decd 100644
--- a/pkg/front_end/testcases/incremental_initialize_from_dill/reissue_errors_9.yaml.world.3.expect
+++ b/pkg/front_end/testcases/incremental_initialize_from_dill/reissue_errors_9.yaml.world.3.expect
@@ -5,6 +5,16 @@
     const constructor •(dart.core::int* i) → lib::Foo*
       : assert(i.{dart.core::num::>}(0)), super dart.core::Object::•()
       ;
+    abstract member-signature get _identityHashCode() → dart.core::int*;
+    abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfTrue(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfFalse(dynamic type) → dart.core::bool*;
+    abstract member-signature operator ==(dynamic other) → dart.core::bool*;
+    abstract member-signature get hashCode() → dart.core::int*;
+    abstract member-signature method toString() → dart.core::String*;
+    abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic;
+    abstract member-signature get runtimeType() → dart.core::Type*;
   }
   static method foo() → dynamic {
     new lib::Foo::•(0);
diff --git a/pkg/front_end/testcases/incremental_initialize_from_dill/remove_import_with_error.yaml.world.1.expect b/pkg/front_end/testcases/incremental_initialize_from_dill/remove_import_with_error.yaml.world.1.expect
index 7d86835..5eb9100 100644
--- a/pkg/front_end/testcases/incremental_initialize_from_dill/remove_import_with_error.yaml.world.1.expect
+++ b/pkg/front_end/testcases/incremental_initialize_from_dill/remove_import_with_error.yaml.world.1.expect
@@ -5,16 +5,46 @@
     synthetic constructor •() → bLi::I<bLi::I::T*>*
       : super dart.core::Object::•()
       ;
+    abstract member-signature get _identityHashCode() → dart.core::int*;
+    abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfTrue(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfFalse(dynamic type) → dart.core::bool*;
+    abstract member-signature operator ==(dynamic other) → dart.core::bool*;
+    abstract member-signature get hashCode() → dart.core::int*;
+    abstract member-signature method toString() → dart.core::String*;
+    abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic;
+    abstract member-signature get runtimeType() → dart.core::Type*;
   }
   class A extends dart.core::Object implements bLi::I<dart.core::int*> {
     synthetic constructor •() → bLi::A*
       : super dart.core::Object::•()
       ;
+    abstract member-signature get _identityHashCode() → dart.core::int*;
+    abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfTrue(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfFalse(dynamic type) → dart.core::bool*;
+    abstract member-signature operator ==(dynamic other) → dart.core::bool*;
+    abstract member-signature get hashCode() → dart.core::int*;
+    abstract member-signature method toString() → dart.core::String*;
+    abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic;
+    abstract member-signature get runtimeType() → dart.core::Type*;
   }
   class B extends dart.core::Object implements bLi::I<dart.core::String*> {
     synthetic constructor •() → bLi::B*
       : super dart.core::Object::•()
       ;
+    abstract member-signature get _identityHashCode() → dart.core::int*;
+    abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfTrue(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfFalse(dynamic type) → dart.core::bool*;
+    abstract member-signature operator ==(dynamic other) → dart.core::bool*;
+    abstract member-signature get hashCode() → dart.core::int*;
+    abstract member-signature method toString() → dart.core::String*;
+    abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic;
+    abstract member-signature get runtimeType() → dart.core::Type*;
   }
   class C extends bLi::A implements bLi::B {
     synthetic constructor •() → bLi::C*
diff --git a/pkg/front_end/testcases/inference/abstract_class_instantiation.dart.outline.expect b/pkg/front_end/testcases/inference/abstract_class_instantiation.dart.outline.expect
index c8cd67d..41f9fc2 100644
--- a/pkg/front_end/testcases/inference/abstract_class_instantiation.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/abstract_class_instantiation.dart.outline.expect
@@ -5,10 +5,30 @@
 abstract class C extends core::Object {
   synthetic constructor •() → self::C*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class D<T extends core::Object* = dynamic> extends core::Object {
   constructor •(self::D::T* t) → self::D<self::D::T*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method test() → void
   ;
diff --git a/pkg/front_end/testcases/inference/abstract_class_instantiation.dart.strong.expect b/pkg/front_end/testcases/inference/abstract_class_instantiation.dart.strong.expect
index 2958eaf..e03b94a 100644
--- a/pkg/front_end/testcases/inference/abstract_class_instantiation.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/abstract_class_instantiation.dart.strong.expect
@@ -21,11 +21,31 @@
   synthetic constructor •() → self::C*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class D<T extends core::Object* = dynamic> extends core::Object {
   constructor •(self::D::T* t) → self::D<self::D::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method test() → void {
   dynamic x = throw new core::AbstractClassInstantiationError::•("C");
diff --git a/pkg/front_end/testcases/inference/abstract_class_instantiation.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/abstract_class_instantiation.dart.strong.transformed.expect
index 2958eaf..e03b94a 100644
--- a/pkg/front_end/testcases/inference/abstract_class_instantiation.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/abstract_class_instantiation.dart.strong.transformed.expect
@@ -21,11 +21,31 @@
   synthetic constructor •() → self::C*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class D<T extends core::Object* = dynamic> extends core::Object {
   constructor •(self::D::T* t) → self::D<self::D::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method test() → void {
   dynamic x = throw new core::AbstractClassInstantiationError::•("C");
diff --git a/pkg/front_end/testcases/inference/assert_initializer.dart.outline.expect b/pkg/front_end/testcases/inference/assert_initializer.dart.outline.expect
index 77b5673..8d0bf21 100644
--- a/pkg/front_end/testcases/inference/assert_initializer.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/assert_initializer.dart.outline.expect
@@ -7,6 +7,16 @@
     ;
   constructor expressionAndMessage() → self::C*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method f<T extends core::Object* = dynamic>() → self::f::T*
   ;
diff --git a/pkg/front_end/testcases/inference/assert_initializer.dart.strong.expect b/pkg/front_end/testcases/inference/assert_initializer.dart.strong.expect
index b50ee9e..dc6aa8b 100644
--- a/pkg/front_end/testcases/inference/assert_initializer.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/assert_initializer.dart.strong.expect
@@ -9,6 +9,16 @@
   constructor expressionAndMessage() → self::C*
     : assert(self::f<core::bool*>(), self::f<dynamic>()), super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method f<T extends core::Object* = dynamic>() → self::f::T*
   return null;
diff --git a/pkg/front_end/testcases/inference/assert_initializer.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/assert_initializer.dart.strong.transformed.expect
index b50ee9e..dc6aa8b 100644
--- a/pkg/front_end/testcases/inference/assert_initializer.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/assert_initializer.dart.strong.transformed.expect
@@ -9,6 +9,16 @@
   constructor expressionAndMessage() → self::C*
     : assert(self::f<core::bool*>(), self::f<dynamic>()), super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method f<T extends core::Object* = dynamic>() → self::f::T*
   return null;
diff --git a/pkg/front_end/testcases/inference/assign_local.dart.outline.expect b/pkg/front_end/testcases/inference/assign_local.dart.outline.expect
index 8b71a507..2d5a35f 100644
--- a/pkg/front_end/testcases/inference/assign_local.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/assign_local.dart.outline.expect
@@ -5,6 +5,16 @@
 class A<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::A<self::A::T*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B<T extends core::Object* = dynamic> extends self::A<self::B::T*> {
   synthetic constructor •() → self::B<self::B::T*>*
diff --git a/pkg/front_end/testcases/inference/assign_local.dart.strong.expect b/pkg/front_end/testcases/inference/assign_local.dart.strong.expect
index b7eecf7..3005ee3 100644
--- a/pkg/front_end/testcases/inference/assign_local.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/assign_local.dart.strong.expect
@@ -6,6 +6,16 @@
   synthetic constructor •() → self::A<self::A::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B<T extends core::Object* = dynamic> extends self::A<self::B::T*> {
   synthetic constructor •() → self::B<self::B::T*>*
diff --git a/pkg/front_end/testcases/inference/assign_local.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/assign_local.dart.strong.transformed.expect
index b7eecf7..3005ee3 100644
--- a/pkg/front_end/testcases/inference/assign_local.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/assign_local.dart.strong.transformed.expect
@@ -6,6 +6,16 @@
   synthetic constructor •() → self::A<self::A::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B<T extends core::Object* = dynamic> extends self::A<self::B::T*> {
   synthetic constructor •() → self::B<self::B::T*>*
diff --git a/pkg/front_end/testcases/inference/async_await.dart.outline.expect b/pkg/front_end/testcases/inference/async_await.dart.outline.expect
index acd5eb1..a45961c 100644
--- a/pkg/front_end/testcases/inference/async_await.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/async_await.dart.outline.expect
@@ -8,6 +8,21 @@
 abstract class MyFuture extends core::Object implements asy::Future<core::int*> {
   synthetic constructor •() → self::MyFuture*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
+  abstract member-signature method then<R extends core::Object* = dynamic>((core::int*) →* asy::FutureOr<self::MyFuture::then::R*>* onValue, {core::Function* onError}) → asy::Future<self::MyFuture::then::R*>*;
+  abstract member-signature method catchError(core::Function* onError, {(core::Object*) →* core::bool* test}) → asy::Future<core::int*>*;
+  abstract member-signature method whenComplete(() →* asy::FutureOr<void>* action) → asy::Future<core::int*>*;
+  abstract member-signature method asStream() → asy::Stream<core::int*>*;
+  abstract member-signature method timeout(core::Duration* timeLimit, {generic-covariant-impl () →* asy::FutureOr<core::int*>* onTimeout}) → asy::Future<core::int*>*;
 }
 static method test() → void
   ;
diff --git a/pkg/front_end/testcases/inference/async_await.dart.strong.expect b/pkg/front_end/testcases/inference/async_await.dart.strong.expect
index 7925362..0d56006 100644
--- a/pkg/front_end/testcases/inference/async_await.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/async_await.dart.strong.expect
@@ -9,6 +9,21 @@
   synthetic constructor •() → self::MyFuture*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
+  abstract member-signature method then<R extends core::Object* = dynamic>((core::int*) →* asy::FutureOr<self::MyFuture::then::R*>* onValue, {core::Function* onError = #C1}) → asy::Future<self::MyFuture::then::R*>*;
+  abstract member-signature method catchError(core::Function* onError, {(core::Object*) →* core::bool* test = #C1}) → asy::Future<core::int*>*;
+  abstract member-signature method whenComplete(() →* asy::FutureOr<void>* action) → asy::Future<core::int*>*;
+  abstract member-signature method asStream() → asy::Stream<core::int*>*;
+  abstract member-signature method timeout(core::Duration* timeLimit, {generic-covariant-impl () →* asy::FutureOr<core::int*>* onTimeout = #C1}) → asy::Future<core::int*>*;
 }
 static method test() → void async {
   core::int* x0;
@@ -53,3 +68,7 @@
   core::int* y9 = await x9;
 }
 static method main() → dynamic {}
+
+constants  {
+  #C1 = null
+}
diff --git a/pkg/front_end/testcases/inference/async_await.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/async_await.dart.strong.transformed.expect
index cd1110d..196321a 100644
--- a/pkg/front_end/testcases/inference/async_await.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/async_await.dart.strong.transformed.expect
@@ -10,6 +10,21 @@
   synthetic constructor •() → self::MyFuture*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
+  abstract member-signature method then<R extends core::Object* = dynamic>((core::int*) →* asy::FutureOr<self::MyFuture::then::R*>* onValue, {core::Function* onError = #C1}) → asy::Future<self::MyFuture::then::R*>*;
+  abstract member-signature method catchError(core::Function* onError, {(core::Object*) →* core::bool* test = #C1}) → asy::Future<core::int*>*;
+  abstract member-signature method whenComplete(() →* asy::FutureOr<void>* action) → asy::Future<core::int*>*;
+  abstract member-signature method asStream() → asy::Stream<core::int*>*;
+  abstract member-signature method timeout(core::Duration* timeLimit, {generic-covariant-impl () →* asy::FutureOr<core::int*>* onTimeout = #C1}) → asy::Future<core::int*>*;
 }
 static method test() → void /* originally async */ {
   final asy::_AsyncAwaitCompleter<dynamic>* :async_completer = new asy::_AsyncAwaitCompleter::•<dynamic>();
@@ -52,8 +67,8 @@
               asy::_completeOnAsyncReturn(:async_completer, :return_value);
               return;
             }
-            on dynamic catch(dynamic :exception, core::StackTrace* :stack_trace) {
-              :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+            on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
+              :async_completer.{asy::Completer::completeError}(exception, stack_trace);
             }
           :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
           :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
@@ -79,8 +94,8 @@
               asy::_completeOnAsyncReturn(:async_completer, :return_value);
               return;
             }
-            on dynamic catch(dynamic :exception, core::StackTrace* :stack_trace) {
-              :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+            on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
+              :async_completer.{asy::Completer::completeError}(exception, stack_trace);
             }
           :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
           :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
@@ -106,8 +121,8 @@
               asy::_completeOnAsyncReturn(:async_completer, :return_value);
               return;
             }
-            on dynamic catch(dynamic :exception, core::StackTrace* :stack_trace) {
-              :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+            on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
+              :async_completer.{asy::Completer::completeError}(exception, stack_trace);
             }
           :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
           :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
@@ -133,8 +148,8 @@
               asy::_completeOnAsyncReturn(:async_completer, :return_value);
               return;
             }
-            on dynamic catch(dynamic :exception, core::StackTrace* :stack_trace) {
-              :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+            on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
+              :async_completer.{asy::Completer::completeError}(exception, stack_trace);
             }
           :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
           :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
@@ -160,8 +175,8 @@
               asy::_completeOnAsyncReturn(:async_completer, :return_value);
               return;
             }
-            on dynamic catch(dynamic :exception, core::StackTrace* :stack_trace) {
-              :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+            on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
+              :async_completer.{asy::Completer::completeError}(exception, stack_trace);
             }
           :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
           :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
@@ -187,8 +202,8 @@
               asy::_completeOnAsyncReturn(:async_completer, :return_value);
               return;
             }
-            on dynamic catch(dynamic :exception, core::StackTrace* :stack_trace) {
-              :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+            on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
+              :async_completer.{asy::Completer::completeError}(exception, stack_trace);
             }
           :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
           :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
@@ -214,8 +229,8 @@
               asy::_completeOnAsyncReturn(:async_completer, :return_value);
               return;
             }
-            on dynamic catch(dynamic :exception, core::StackTrace* :stack_trace) {
-              :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+            on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
+              :async_completer.{asy::Completer::completeError}(exception, stack_trace);
             }
           :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
           :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
@@ -241,8 +256,8 @@
               asy::_completeOnAsyncReturn(:async_completer, :return_value);
               return;
             }
-            on dynamic catch(dynamic :exception, core::StackTrace* :stack_trace) {
-              :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+            on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
+              :async_completer.{asy::Completer::completeError}(exception, stack_trace);
             }
           :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
           :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
@@ -268,8 +283,8 @@
               asy::_completeOnAsyncReturn(:async_completer, :return_value);
               return;
             }
-            on dynamic catch(dynamic :exception, core::StackTrace* :stack_trace) {
-              :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+            on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
+              :async_completer.{asy::Completer::completeError}(exception, stack_trace);
             }
           :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
           :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
@@ -295,8 +310,8 @@
               asy::_completeOnAsyncReturn(:async_completer, :return_value);
               return;
             }
-            on dynamic catch(dynamic :exception, core::StackTrace* :stack_trace) {
-              :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+            on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
+              :async_completer.{asy::Completer::completeError}(exception, stack_trace);
             }
           :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
           :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
@@ -328,8 +343,8 @@
       asy::_completeOnAsyncReturn(:async_completer, :return_value);
       return;
     }
-    on dynamic catch(dynamic :exception, core::StackTrace* :stack_trace) {
-      :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+    on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
+      :async_completer.{asy::Completer::completeError}(exception, stack_trace);
     }
   :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
@@ -338,3 +353,7 @@
   return :async_completer.{asy::Completer::future};
 }
 static method main() → dynamic {}
+
+constants  {
+  #C1 = null
+}
diff --git a/pkg/front_end/testcases/inference/async_closure_return_type_flatten.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/async_closure_return_type_flatten.dart.strong.transformed.expect
index b9580fb..9e8bfe0 100644
--- a/pkg/front_end/testcases/inference/async_closure_return_type_flatten.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/async_closure_return_type_flatten.dart.strong.transformed.expect
@@ -25,8 +25,8 @@
       asy::_completeOnAsyncReturn(:async_completer, :return_value);
       return;
     }
-    on dynamic catch(dynamic :exception, core::StackTrace* :stack_trace) {
-      :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+    on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
+      :async_completer.{asy::Completer::completeError}(exception, stack_trace);
     }
   :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
diff --git a/pkg/front_end/testcases/inference/async_closure_return_type_future.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/async_closure_return_type_future.dart.strong.transformed.expect
index bd3ef80..a2f9251 100644
--- a/pkg/front_end/testcases/inference/async_closure_return_type_future.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/async_closure_return_type_future.dart.strong.transformed.expect
@@ -21,8 +21,8 @@
       asy::_completeOnAsyncReturn(:async_completer, :return_value);
       return;
     }
-    on dynamic catch(dynamic :exception, core::StackTrace* :stack_trace) {
-      :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+    on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
+      :async_completer.{asy::Completer::completeError}(exception, stack_trace);
     }
   :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
diff --git a/pkg/front_end/testcases/inference/async_closure_return_type_future_or.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/async_closure_return_type_future_or.dart.strong.transformed.expect
index 913d676..ced9ed5 100644
--- a/pkg/front_end/testcases/inference/async_closure_return_type_future_or.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/async_closure_return_type_future_or.dart.strong.transformed.expect
@@ -25,8 +25,8 @@
       asy::_completeOnAsyncReturn(:async_completer, :return_value);
       return;
     }
-    on dynamic catch(dynamic :exception, core::StackTrace* :stack_trace) {
-      :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+    on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
+      :async_completer.{asy::Completer::completeError}(exception, stack_trace);
     }
   :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
diff --git a/pkg/front_end/testcases/inference/block_bodied_lambdas_async_all_returns_are_futures.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/block_bodied_lambdas_async_all_returns_are_futures.dart.strong.transformed.expect
index d0e8788..fd7e37e 100644
--- a/pkg/front_end/testcases/inference/block_bodied_lambdas_async_all_returns_are_futures.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/block_bodied_lambdas_async_all_returns_are_futures.dart.strong.transformed.expect
@@ -32,8 +32,8 @@
         asy::_completeOnAsyncReturn(:async_completer, :return_value);
         return;
       }
-      on dynamic catch(dynamic :exception, core::StackTrace* :stack_trace) {
-        :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+      on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
+        :async_completer.{asy::Completer::completeError}(exception, stack_trace);
       }
     :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
     :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
diff --git a/pkg/front_end/testcases/inference/block_bodied_lambdas_async_all_returns_are_values.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/block_bodied_lambdas_async_all_returns_are_values.dart.strong.transformed.expect
index 30eabe7..162f7e1 100644
--- a/pkg/front_end/testcases/inference/block_bodied_lambdas_async_all_returns_are_values.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/block_bodied_lambdas_async_all_returns_are_values.dart.strong.transformed.expect
@@ -32,8 +32,8 @@
         asy::_completeOnAsyncReturn(:async_completer, :return_value);
         return;
       }
-      on dynamic catch(dynamic :exception, core::StackTrace* :stack_trace) {
-        :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+      on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
+        :async_completer.{asy::Completer::completeError}(exception, stack_trace);
       }
     :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
     :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
diff --git a/pkg/front_end/testcases/inference/block_bodied_lambdas_async_mix_of_values_and_futures.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/block_bodied_lambdas_async_mix_of_values_and_futures.dart.strong.transformed.expect
index cddac4a..96bc953 100644
--- a/pkg/front_end/testcases/inference/block_bodied_lambdas_async_mix_of_values_and_futures.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/block_bodied_lambdas_async_mix_of_values_and_futures.dart.strong.transformed.expect
@@ -32,8 +32,8 @@
         asy::_completeOnAsyncReturn(:async_completer, :return_value);
         return;
       }
-      on dynamic catch(dynamic :exception, core::StackTrace* :stack_trace) {
-        :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+      on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
+        :async_completer.{asy::Completer::completeError}(exception, stack_trace);
       }
     :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
     :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
diff --git a/pkg/front_end/testcases/inference/block_bodied_lambdas_async_star.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/block_bodied_lambdas_async_star.dart.strong.transformed.expect
index a0abb09..a13fe6a 100644
--- a/pkg/front_end/testcases/inference/block_bodied_lambdas_async_star.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/block_bodied_lambdas_async_star.dart.strong.transformed.expect
@@ -33,8 +33,8 @@
           }
           return;
         }
-        on dynamic catch(dynamic :exception, core::StackTrace* :stack_trace) {
-          :controller.{asy::_AsyncStarStreamController::addError}(:exception, :stack_trace);
+        on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
+          :controller.{asy::_AsyncStarStreamController::addError}(exception, stack_trace);
         }
       finally {
         :controller.{asy::_AsyncStarStreamController::close}();
diff --git a/pkg/front_end/testcases/inference/block_bodied_lambdas_infer_bottom_async.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/block_bodied_lambdas_infer_bottom_async.dart.strong.transformed.expect
index b6a939d..ddd3553 100644
--- a/pkg/front_end/testcases/inference/block_bodied_lambdas_infer_bottom_async.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/block_bodied_lambdas_infer_bottom_async.dart.strong.transformed.expect
@@ -37,8 +37,8 @@
               asy::_completeOnAsyncReturn(:async_completer, :return_value);
               return;
             }
-            on dynamic catch(dynamic :exception, core::StackTrace* :stack_trace) {
-              :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+            on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
+              :async_completer.{asy::Completer::completeError}(exception, stack_trace);
             }
           :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
           :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
@@ -54,8 +54,8 @@
       asy::_completeOnAsyncReturn(:async_completer, :return_value);
       return;
     }
-    on dynamic catch(dynamic :exception, core::StackTrace* :stack_trace) {
-      :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+    on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
+      :async_completer.{asy::Completer::completeError}(exception, stack_trace);
     }
   :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
diff --git a/pkg/front_end/testcases/inference/block_bodied_lambdas_infer_bottom_async_star.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/block_bodied_lambdas_infer_bottom_async_star.dart.strong.transformed.expect
index cd7251f..50305c2 100644
--- a/pkg/front_end/testcases/inference/block_bodied_lambdas_infer_bottom_async_star.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/block_bodied_lambdas_infer_bottom_async_star.dart.strong.transformed.expect
@@ -41,8 +41,8 @@
                 }
                 return;
               }
-              on dynamic catch(dynamic :exception, core::StackTrace* :stack_trace) {
-                :controller.{asy::_AsyncStarStreamController::addError}(:exception, :stack_trace);
+              on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
+                :controller.{asy::_AsyncStarStreamController::addError}(exception, stack_trace);
               }
             finally {
               :controller.{asy::_AsyncStarStreamController::close}();
@@ -62,8 +62,8 @@
       asy::_completeOnAsyncReturn(:async_completer, :return_value);
       return;
     }
-    on dynamic catch(dynamic :exception, core::StackTrace* :stack_trace) {
-      :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+    on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
+      :async_completer.{asy::Completer::completeError}(exception, stack_trace);
     }
   :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
diff --git a/pkg/front_end/testcases/inference/block_bodied_lambdas_infer_bottom_sync_star.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/block_bodied_lambdas_infer_bottom_sync_star.dart.strong.transformed.expect
index 9a2c1650..3ed4d9f 100644
--- a/pkg/front_end/testcases/inference/block_bodied_lambdas_infer_bottom_sync_star.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/block_bodied_lambdas_infer_bottom_sync_star.dart.strong.transformed.expect
@@ -4,18 +4,20 @@
 
 static method main() → dynamic {
   () →* core::Iterable<core::Null?>* f = () → core::Iterable<core::Null?>* /* originally sync* */ {
-    core::int* :await_jump_var = 0;
-    dynamic :await_ctx_var;
-    function :sync_op(core::_SyncIterator<core::Null?>* :iterator) → core::bool* yielding {
-      {
+    function :sync_op_gen() → (core::_SyncIterator<core::Null?>*) →* core::bool* {
+      core::int* :await_jump_var = 0;
+      dynamic :await_ctx_var;
+      return (core::_SyncIterator<core::Null?>* :iterator) → core::bool* yielding {
         {
-          :iterator.{core::_SyncIterator::_current} = null;
-          [yield] true;
+          {
+            :iterator.{core::_SyncIterator::_current} = null;
+            [yield] true;
+          }
         }
-      }
-      return false;
+        return false;
+      };
     }
-    return new core::_SyncIterable::•<core::Null?>(:sync_op);
+    return new core::_SyncIterable::•<core::Null?>(:sync_op_gen);
   };
   core::Iterable<dynamic>* y = f.call();
   core::Iterable<core::String*>* z = f.call();
diff --git a/pkg/front_end/testcases/inference/block_bodied_lambdas_sync_star.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/block_bodied_lambdas_sync_star.dart.strong.transformed.expect
index 90b9e1e..dcd483a 100644
--- a/pkg/front_end/testcases/inference/block_bodied_lambdas_sync_star.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/block_bodied_lambdas_sync_star.dart.strong.transformed.expect
@@ -4,22 +4,24 @@
 
 static method test() → dynamic {
   () →* core::Iterable<core::num*>* f = () → core::Iterable<core::num*>* /* originally sync* */ {
-    core::int* :await_jump_var = 0;
-    dynamic :await_ctx_var;
-    function :sync_op(core::_SyncIterator<core::num*>* :iterator) → core::bool* yielding {
-      {
+    function :sync_op_gen() → (core::_SyncIterator<core::num*>*) →* core::bool* {
+      core::int* :await_jump_var = 0;
+      dynamic :await_ctx_var;
+      return (core::_SyncIterator<core::num*>* :iterator) → core::bool* yielding {
         {
-          :iterator.{core::_SyncIterator::_current} = 1;
-          [yield] true;
+          {
+            :iterator.{core::_SyncIterator::_current} = 1;
+            [yield] true;
+          }
+          {
+            :iterator.{core::_SyncIterator::_yieldEachIterable} = <core::num*>[3, 4.0];
+            [yield] true;
+          }
         }
-        {
-          :iterator.{core::_SyncIterator::_yieldEachIterable} = <core::num*>[3, 4.0];
-          [yield] true;
-        }
-      }
-      return false;
+        return false;
+      };
     }
-    return new core::_SyncIterable::•<core::num*>(:sync_op);
+    return new core::_SyncIterable::•<core::num*>(:sync_op_gen);
   };
   core::Iterable<core::num*>* g = f.call();
   core::Iterable<core::int*>* h = f.call() as{TypeError} core::Iterable<core::int*>*;
diff --git a/pkg/front_end/testcases/inference/bug30251.dart.outline.expect b/pkg/front_end/testcases/inference/bug30251.dart.outline.expect
index 15e312c..9ffed45 100644
--- a/pkg/front_end/testcases/inference/bug30251.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/bug30251.dart.outline.expect
@@ -6,6 +6,16 @@
   final field dynamic x;
   constructor •(core::int* p) → self::C*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method f<T extends core::Object* = dynamic>(self::f::T* t) → self::f::T*
   ;
diff --git a/pkg/front_end/testcases/inference/bug30251.dart.strong.expect b/pkg/front_end/testcases/inference/bug30251.dart.strong.expect
index 93f838d..eedc9d6 100644
--- a/pkg/front_end/testcases/inference/bug30251.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/bug30251.dart.strong.expect
@@ -7,6 +7,16 @@
   constructor •(core::int* p) → self::C*
     : self::C::x = self::f<core::int*>(1.{core::num::+}(p)), super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method f<T extends core::Object* = dynamic>(self::f::T* t) → self::f::T*
   return t;
diff --git a/pkg/front_end/testcases/inference/bug30251.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/bug30251.dart.strong.transformed.expect
index 93f838d..eedc9d6 100644
--- a/pkg/front_end/testcases/inference/bug30251.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/bug30251.dart.strong.transformed.expect
@@ -7,6 +7,16 @@
   constructor •(core::int* p) → self::C*
     : self::C::x = self::f<core::int*>(1.{core::num::+}(p)), super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method f<T extends core::Object* = dynamic>(self::f::T* t) → self::f::T*
   return t;
diff --git a/pkg/front_end/testcases/inference/bug30620.dart.outline.expect b/pkg/front_end/testcases/inference/bug30620.dart.outline.expect
index 4c2c860..8e2e51c 100644
--- a/pkg/front_end/testcases/inference/bug30620.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/bug30620.dart.outline.expect
@@ -8,6 +8,15 @@
     ;
   operator ==(core::Object* other) → core::bool*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/inference/bug30620.dart.strong.expect b/pkg/front_end/testcases/inference/bug30620.dart.strong.expect
index 5d4c33b..ebd7666 100644
--- a/pkg/front_end/testcases/inference/bug30620.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/bug30620.dart.strong.expect
@@ -9,6 +9,15 @@
     ;
   operator ==(core::Object* other) → core::bool*
     return other is self::A* && other{self::A*}.{self::A::foo}.{core::String::==}(this.{self::A::foo});
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   core::print(new self::A::•("hello").{self::A::==}(new self::A::•("hello")));
diff --git a/pkg/front_end/testcases/inference/bug30620.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/bug30620.dart.strong.transformed.expect
index 5d4c33b..ebd7666 100644
--- a/pkg/front_end/testcases/inference/bug30620.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/bug30620.dart.strong.transformed.expect
@@ -9,6 +9,15 @@
     ;
   operator ==(core::Object* other) → core::bool*
     return other is self::A* && other{self::A*}.{self::A::foo}.{core::String::==}(this.{self::A::foo});
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   core::print(new self::A::•("hello").{self::A::==}(new self::A::•("hello")));
diff --git a/pkg/front_end/testcases/inference/bug30620_b.dart.outline.expect b/pkg/front_end/testcases/inference/bug30620_b.dart.outline.expect
index 4c2c860..8e2e51c 100644
--- a/pkg/front_end/testcases/inference/bug30620_b.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/bug30620_b.dart.outline.expect
@@ -8,6 +8,15 @@
     ;
   operator ==(core::Object* other) → core::bool*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/inference/bug30620_b.dart.strong.expect b/pkg/front_end/testcases/inference/bug30620_b.dart.strong.expect
index b2fff72..a905d5d 100644
--- a/pkg/front_end/testcases/inference/bug30620_b.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/bug30620_b.dart.strong.expect
@@ -9,6 +9,15 @@
     ;
   operator ==(core::Object* other) → core::bool*
     return other is self::A* && other{self::A*}.{self::A::foo}.{core::String::==}(this.{self::A::foo}) && other{self::A*}.{self::A::foo}.{core::String::==}(this.{self::A::foo});
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   core::print(new self::A::•("hello").{self::A::==}(new self::A::•("hello")));
diff --git a/pkg/front_end/testcases/inference/bug30620_b.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/bug30620_b.dart.strong.transformed.expect
index b2fff72..a905d5d 100644
--- a/pkg/front_end/testcases/inference/bug30620_b.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/bug30620_b.dart.strong.transformed.expect
@@ -9,6 +9,15 @@
     ;
   operator ==(core::Object* other) → core::bool*
     return other is self::A* && other{self::A*}.{self::A::foo}.{core::String::==}(this.{self::A::foo}) && other{self::A*}.{self::A::foo}.{core::String::==}(this.{self::A::foo});
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   core::print(new self::A::•("hello").{self::A::==}(new self::A::•("hello")));
diff --git a/pkg/front_end/testcases/inference/bug30620_c.dart.outline.expect b/pkg/front_end/testcases/inference/bug30620_c.dart.outline.expect
index 4c2c860..8e2e51c 100644
--- a/pkg/front_end/testcases/inference/bug30620_c.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/bug30620_c.dart.outline.expect
@@ -8,6 +8,15 @@
     ;
   operator ==(core::Object* other) → core::bool*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/inference/bug30620_c.dart.strong.expect b/pkg/front_end/testcases/inference/bug30620_c.dart.strong.expect
index 37e2539..ba4fb41 100644
--- a/pkg/front_end/testcases/inference/bug30620_c.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/bug30620_c.dart.strong.expect
@@ -14,6 +14,15 @@
     }
     return true;
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   core::print(new self::A::•("hello").{self::A::==}(new self::A::•("hello")));
diff --git a/pkg/front_end/testcases/inference/bug30620_c.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/bug30620_c.dart.strong.transformed.expect
index 37e2539..ba4fb41 100644
--- a/pkg/front_end/testcases/inference/bug30620_c.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/bug30620_c.dart.strong.transformed.expect
@@ -14,6 +14,15 @@
     }
     return true;
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   core::print(new self::A::•("hello").{self::A::==}(new self::A::•("hello")));
diff --git a/pkg/front_end/testcases/inference/bug30624.dart.outline.expect b/pkg/front_end/testcases/inference/bug30624.dart.outline.expect
index 43831bf..7b83d65 100644
--- a/pkg/front_end/testcases/inference/bug30624.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/bug30624.dart.outline.expect
@@ -19,6 +19,16 @@
     ;
   static method _default(dynamic a, dynamic b) → core::int*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method foo<E extends core::Object* = dynamic>(self::C<self::foo::E*>* c, (self::foo::E*, self::foo::E*) →* core::int* cmp) → void
   ;
diff --git a/pkg/front_end/testcases/inference/bug30624.dart.strong.expect b/pkg/front_end/testcases/inference/bug30624.dart.strong.expect
index 825e93c..680cb24 100644
--- a/pkg/front_end/testcases/inference/bug30624.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/bug30624.dart.strong.expect
@@ -28,6 +28,16 @@
   static method _default(dynamic a, dynamic b) → core::int* {
     return 1.{core::int::unary-}();
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method foo<E extends core::Object* = dynamic>(self::C<self::foo::E*>* c, (self::foo::E*, self::foo::E*) →* core::int* cmp) → void {}
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/bug30624.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/bug30624.dart.strong.transformed.expect
index 825e93c..680cb24 100644
--- a/pkg/front_end/testcases/inference/bug30624.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/bug30624.dart.strong.transformed.expect
@@ -28,6 +28,16 @@
   static method _default(dynamic a, dynamic b) → core::int* {
     return 1.{core::int::unary-}();
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method foo<E extends core::Object* = dynamic>(self::C<self::foo::E*>* c, (self::foo::E*, self::foo::E*) →* core::int* cmp) → void {}
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/bug31132.dart.outline.expect b/pkg/front_end/testcases/inference/bug31132.dart.outline.expect
index efc84bf..576b43f 100644
--- a/pkg/front_end/testcases/inference/bug31132.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/bug31132.dart.outline.expect
@@ -5,6 +5,16 @@
 class B extends core::Object {
   synthetic constructor •() → self::B*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C extends self::B {
   field dynamic z;
diff --git a/pkg/front_end/testcases/inference/bug31132.dart.strong.expect b/pkg/front_end/testcases/inference/bug31132.dart.strong.expect
index 31674c4..d273ac8 100644
--- a/pkg/front_end/testcases/inference/bug31132.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/bug31132.dart.strong.expect
@@ -6,6 +6,16 @@
   synthetic constructor •() → self::B*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C extends self::B {
   field dynamic z = null;
diff --git a/pkg/front_end/testcases/inference/bug31132.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/bug31132.dart.strong.transformed.expect
index 31674c4..d273ac8 100644
--- a/pkg/front_end/testcases/inference/bug31132.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/bug31132.dart.strong.transformed.expect
@@ -6,6 +6,16 @@
   synthetic constructor •() → self::B*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C extends self::B {
   field dynamic z = null;
diff --git a/pkg/front_end/testcases/inference/bug33324.dart.strong.expect b/pkg/front_end/testcases/inference/bug33324.dart.strong.expect
index 74b0bb6..5f874e7 100644
--- a/pkg/front_end/testcases/inference/bug33324.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/bug33324.dart.strong.expect
@@ -4,7 +4,7 @@
 
 static method foo() → core::int* {
   core::Function* f = (dynamic x) → dynamic => x;
-  core::List<dynamic>* l = <core::String*>["bar"].{core::Iterable::map}<dynamic>(f as{TypeError} (core::String*) →* dynamic).{core::Iterable::toList}();
+  core::List<dynamic>* l = <core::String*>["bar"].{core::Iterable::map}<dynamic>(f as{TypeError} (core::String*) → dynamic).{core::Iterable::toList}();
   l.{core::List::add}(42);
   return l.{core::Iterable::first}.length as{TypeError,ForDynamic} core::int*;
 }
diff --git a/pkg/front_end/testcases/inference/bug33324.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/bug33324.dart.strong.transformed.expect
index 74b0bb6..5f874e7 100644
--- a/pkg/front_end/testcases/inference/bug33324.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/bug33324.dart.strong.transformed.expect
@@ -4,7 +4,7 @@
 
 static method foo() → core::int* {
   core::Function* f = (dynamic x) → dynamic => x;
-  core::List<dynamic>* l = <core::String*>["bar"].{core::Iterable::map}<dynamic>(f as{TypeError} (core::String*) →* dynamic).{core::Iterable::toList}();
+  core::List<dynamic>* l = <core::String*>["bar"].{core::Iterable::map}<dynamic>(f as{TypeError} (core::String*) → dynamic).{core::Iterable::toList}();
   l.{core::List::add}(42);
   return l.{core::Iterable::first}.length as{TypeError,ForDynamic} core::int*;
 }
diff --git a/pkg/front_end/testcases/inference/call_corner_cases.dart.outline.expect b/pkg/front_end/testcases/inference/call_corner_cases.dart.outline.expect
index 0f1865b..c0d9e5f 100644
--- a/pkg/front_end/testcases/inference/call_corner_cases.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/call_corner_cases.dart.outline.expect
@@ -7,12 +7,32 @@
     ;
   method call() → core::int*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends core::Object {
   synthetic constructor •() → self::B*
     ;
   get call() → self::A*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D extends core::Object {
   field self::A* fieldA;
@@ -23,6 +43,16 @@
     ;
   get getB() → self::B*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method test() → dynamic
   ;
diff --git a/pkg/front_end/testcases/inference/call_corner_cases.dart.strong.expect b/pkg/front_end/testcases/inference/call_corner_cases.dart.strong.expect
index bf2de7e..e6b2f41 100644
--- a/pkg/front_end/testcases/inference/call_corner_cases.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/call_corner_cases.dart.strong.expect
@@ -8,6 +8,16 @@
     ;
   method call() → core::int*
     return 0;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends core::Object {
   synthetic constructor •() → self::B*
@@ -15,6 +25,16 @@
     ;
   get call() → self::A*
     return new self::A::•();
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D extends core::Object {
   field self::A* fieldA = new self::A::•();
@@ -26,6 +46,16 @@
     return new self::A::•();
   get getB() → self::B*
     return new self::B::•();
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method test() → dynamic {
   core::int* callA = new self::A::•().{self::A::call}();
diff --git a/pkg/front_end/testcases/inference/call_corner_cases.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/call_corner_cases.dart.strong.transformed.expect
index bf2de7e..e6b2f41 100644
--- a/pkg/front_end/testcases/inference/call_corner_cases.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/call_corner_cases.dart.strong.transformed.expect
@@ -8,6 +8,16 @@
     ;
   method call() → core::int*
     return 0;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends core::Object {
   synthetic constructor •() → self::B*
@@ -15,6 +25,16 @@
     ;
   get call() → self::A*
     return new self::A::•();
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D extends core::Object {
   field self::A* fieldA = new self::A::•();
@@ -26,6 +46,16 @@
     return new self::A::•();
   get getB() → self::B*
     return new self::B::•();
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method test() → dynamic {
   core::int* callA = new self::A::•().{self::A::call}();
diff --git a/pkg/front_end/testcases/inference/callable_generic_class.dart.outline.expect b/pkg/front_end/testcases/inference/callable_generic_class.dart.outline.expect
index 0d2ffd0..5b25e3e 100644
--- a/pkg/front_end/testcases/inference/callable_generic_class.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/callable_generic_class.dart.outline.expect
@@ -7,16 +7,46 @@
     ;
   method call([generic-covariant-impl self::ActionDispatcher::P* value]) → void
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Bar extends core::Object {
   synthetic constructor •() → self::Bar*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class FooActions extends core::Object {
   synthetic constructor •() → self::FooActions*
     ;
   get foo() → self::ActionDispatcher<self::Bar*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → void
   ;
diff --git a/pkg/front_end/testcases/inference/callable_generic_class.dart.strong.expect b/pkg/front_end/testcases/inference/callable_generic_class.dart.strong.expect
index eebe1d2..43dc64a 100644
--- a/pkg/front_end/testcases/inference/callable_generic_class.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/callable_generic_class.dart.strong.expect
@@ -7,11 +7,31 @@
     : super core::Object::•()
     ;
   method call([generic-covariant-impl self::ActionDispatcher::P* value = #C1]) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Bar extends core::Object {
   synthetic constructor •() → self::Bar*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class FooActions extends core::Object {
   synthetic constructor •() → self::FooActions*
@@ -19,6 +39,16 @@
     ;
   get foo() → self::ActionDispatcher<self::Bar*>*
     return new self::ActionDispatcher::•<self::Bar*>();
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → void {
   let final self::FooActions* #t1 = new self::FooActions::•() in let final self::Bar* #t2 = new self::Bar::•() in #t1.{self::FooActions::foo}.{self::ActionDispatcher::call}(#t2);
diff --git a/pkg/front_end/testcases/inference/callable_generic_class.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/callable_generic_class.dart.strong.transformed.expect
index eebe1d2..43dc64a 100644
--- a/pkg/front_end/testcases/inference/callable_generic_class.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/callable_generic_class.dart.strong.transformed.expect
@@ -7,11 +7,31 @@
     : super core::Object::•()
     ;
   method call([generic-covariant-impl self::ActionDispatcher::P* value = #C1]) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Bar extends core::Object {
   synthetic constructor •() → self::Bar*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class FooActions extends core::Object {
   synthetic constructor •() → self::FooActions*
@@ -19,6 +39,16 @@
     ;
   get foo() → self::ActionDispatcher<self::Bar*>*
     return new self::ActionDispatcher::•<self::Bar*>();
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → void {
   let final self::FooActions* #t1 = new self::FooActions::•() in let final self::Bar* #t2 = new self::Bar::•() in #t1.{self::FooActions::foo}.{self::ActionDispatcher::call}(#t2);
diff --git a/pkg/front_end/testcases/inference/circular_method_inference.dart.outline.expect b/pkg/front_end/testcases/inference/circular_method_inference.dart.outline.expect
index 6b2e1ca..8e9e758 100644
--- a/pkg/front_end/testcases/inference/circular_method_inference.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/circular_method_inference.dart.outline.expect
@@ -17,11 +17,31 @@
   synthetic constructor •() → self::A*
     ;
   abstract method f(dynamic x) → dynamic;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class B extends core::Object {
   synthetic constructor •() → self::B*
     ;
   abstract method f(dynamic x) → dynamic;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/inference/circular_method_inference.dart.strong.expect b/pkg/front_end/testcases/inference/circular_method_inference.dart.strong.expect
index 2e54f4d..caec3a6 100644
--- a/pkg/front_end/testcases/inference/circular_method_inference.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/circular_method_inference.dart.strong.expect
@@ -18,11 +18,31 @@
     : super core::Object::•()
     ;
   abstract method f(dynamic x) → dynamic;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class B extends core::Object {
   synthetic constructor •() → self::B*
     : super core::Object::•()
     ;
   abstract method f(dynamic x) → dynamic;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/circular_method_inference.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/circular_method_inference.dart.strong.transformed.expect
index 2e54f4d..caec3a6 100644
--- a/pkg/front_end/testcases/inference/circular_method_inference.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/circular_method_inference.dart.strong.transformed.expect
@@ -18,11 +18,31 @@
     : super core::Object::•()
     ;
   abstract method f(dynamic x) → dynamic;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class B extends core::Object {
   synthetic constructor •() → self::B*
     : super core::Object::•()
     ;
   abstract method f(dynamic x) → dynamic;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/conditional_upwards_inference.dart.outline.expect b/pkg/front_end/testcases/inference/conditional_upwards_inference.dart.outline.expect
index 891ec7c..488685e 100644
--- a/pkg/front_end/testcases/inference/conditional_upwards_inference.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/conditional_upwards_inference.dart.outline.expect
@@ -5,6 +5,16 @@
 class C<T extends core::Object* = dynamic> extends core::Object {
   constructor •(core::List<self::C::T*>* x) → self::C<self::C::T*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/inference/conditional_upwards_inference.dart.strong.expect b/pkg/front_end/testcases/inference/conditional_upwards_inference.dart.strong.expect
index 5dbd497..8979072 100644
--- a/pkg/front_end/testcases/inference/conditional_upwards_inference.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/conditional_upwards_inference.dart.strong.expect
@@ -6,6 +6,16 @@
   constructor •(core::List<self::C::T*>* x) → self::C<self::C::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   core::bool* b = false;
diff --git a/pkg/front_end/testcases/inference/conditional_upwards_inference.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/conditional_upwards_inference.dart.strong.transformed.expect
index 5dbd497..8979072 100644
--- a/pkg/front_end/testcases/inference/conditional_upwards_inference.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/conditional_upwards_inference.dart.strong.transformed.expect
@@ -6,6 +6,16 @@
   constructor •(core::List<self::C::T*>* x) → self::C<self::C::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   core::bool* b = false;
diff --git a/pkg/front_end/testcases/inference/conflicting_fields.dart.outline.expect b/pkg/front_end/testcases/inference/conflicting_fields.dart.outline.expect
index ecc609d..a192b1d 100644
--- a/pkg/front_end/testcases/inference/conflicting_fields.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/conflicting_fields.dart.outline.expect
@@ -54,12 +54,32 @@
   field core::int* field2;
   synthetic constructor •() → self::A*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class I extends core::Object {
   field core::int* field1;
   field dynamic field2;
   synthetic constructor •() → self::I*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A implements self::I {
   synthetic constructor •() → self::B*
diff --git a/pkg/front_end/testcases/inference/conflicting_fields.dart.strong.expect b/pkg/front_end/testcases/inference/conflicting_fields.dart.strong.expect
index c539ecb..eb11668 100644
--- a/pkg/front_end/testcases/inference/conflicting_fields.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/conflicting_fields.dart.strong.expect
@@ -55,6 +55,16 @@
   synthetic constructor •() → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class I extends core::Object {
   field core::int* field1 = null;
@@ -62,6 +72,16 @@
   synthetic constructor •() → self::I*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A implements self::I {
   synthetic constructor •() → self::B*
diff --git a/pkg/front_end/testcases/inference/conflicting_fields.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/conflicting_fields.dart.strong.transformed.expect
index c539ecb..eb11668 100644
--- a/pkg/front_end/testcases/inference/conflicting_fields.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/conflicting_fields.dart.strong.transformed.expect
@@ -55,6 +55,16 @@
   synthetic constructor •() → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class I extends core::Object {
   field core::int* field1 = null;
@@ -62,6 +72,16 @@
   synthetic constructor •() → self::I*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A implements self::I {
   synthetic constructor •() → self::B*
diff --git a/pkg/front_end/testcases/inference/conflicts_can_happen.dart.outline.expect b/pkg/front_end/testcases/inference/conflicts_can_happen.dart.outline.expect
index 94b60b3..cca25488 100644
--- a/pkg/front_end/testcases/inference/conflicts_can_happen.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/conflicts_can_happen.dart.outline.expect
@@ -31,6 +31,16 @@
   field core::int* x;
   synthetic constructor •() → self::I1*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class I2 extends self::I1 {
   field core::int* y;
@@ -41,23 +51,63 @@
   final field self::I1* a;
   synthetic constructor •() → self::A*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends core::Object {
   final field self::I2* a;
   synthetic constructor •() → self::B*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C1 extends core::Object implements self::A, self::B {
   synthetic constructor •() → self::C1*
     ;
   get a() → invalid-type
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C2 extends core::Object implements self::B, self::A {
   synthetic constructor •() → self::C2*
     ;
   get a() → invalid-type
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/inference/conflicts_can_happen.dart.strong.expect b/pkg/front_end/testcases/inference/conflicts_can_happen.dart.strong.expect
index 2f9c0a9..b317453 100644
--- a/pkg/front_end/testcases/inference/conflicts_can_happen.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/conflicts_can_happen.dart.strong.expect
@@ -32,6 +32,16 @@
   synthetic constructor •() → self::I1*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class I2 extends self::I1 {
   field core::int* y = null;
@@ -44,12 +54,32 @@
   synthetic constructor •() → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends core::Object {
   final field self::I2* a = null;
   synthetic constructor •() → self::B*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C1 extends core::Object implements self::A, self::B {
   synthetic constructor •() → self::C1*
@@ -57,6 +87,16 @@
     ;
   get a() → invalid-type
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C2 extends core::Object implements self::B, self::A {
   synthetic constructor •() → self::C2*
@@ -64,5 +104,15 @@
     ;
   get a() → invalid-type
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/conflicts_can_happen.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/conflicts_can_happen.dart.strong.transformed.expect
index 2f9c0a9..b317453 100644
--- a/pkg/front_end/testcases/inference/conflicts_can_happen.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/conflicts_can_happen.dart.strong.transformed.expect
@@ -32,6 +32,16 @@
   synthetic constructor •() → self::I1*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class I2 extends self::I1 {
   field core::int* y = null;
@@ -44,12 +54,32 @@
   synthetic constructor •() → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends core::Object {
   final field self::I2* a = null;
   synthetic constructor •() → self::B*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C1 extends core::Object implements self::A, self::B {
   synthetic constructor •() → self::C1*
@@ -57,6 +87,16 @@
     ;
   get a() → invalid-type
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C2 extends core::Object implements self::B, self::A {
   synthetic constructor •() → self::C2*
@@ -64,5 +104,15 @@
     ;
   get a() → invalid-type
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/conflicts_can_happen2.dart.outline.expect b/pkg/front_end/testcases/inference/conflicts_can_happen2.dart.outline.expect
index 6dec14e..c7009c7 100644
--- a/pkg/front_end/testcases/inference/conflicts_can_happen2.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/conflicts_can_happen2.dart.outline.expect
@@ -20,39 +20,109 @@
   field core::int* x;
   synthetic constructor •() → self::I1*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class I2 extends core::Object {
   field core::int* y;
   synthetic constructor •() → self::I2*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class I3 extends core::Object implements self::I1, self::I2 {
   field core::int* x;
   field core::int* y;
   synthetic constructor •() → self::I3*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class A extends core::Object {
   final field self::I1* a;
   synthetic constructor •() → self::A*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends core::Object {
   final field self::I2* a;
   synthetic constructor •() → self::B*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C1 extends core::Object implements self::A, self::B {
   synthetic constructor •() → self::C1*
     ;
   get a() → self::I3*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C2 extends core::Object implements self::A, self::B {
   synthetic constructor •() → self::C2*
     ;
   get a() → invalid-type
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/inference/conflicts_can_happen2.dart.strong.expect b/pkg/front_end/testcases/inference/conflicts_can_happen2.dart.strong.expect
index 82780a7..21144c6 100644
--- a/pkg/front_end/testcases/inference/conflicts_can_happen2.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/conflicts_can_happen2.dart.strong.expect
@@ -21,12 +21,32 @@
   synthetic constructor •() → self::I1*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class I2 extends core::Object {
   field core::int* y = null;
   synthetic constructor •() → self::I2*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class I3 extends core::Object implements self::I1, self::I2 {
   field core::int* x = null;
@@ -34,18 +54,48 @@
   synthetic constructor •() → self::I3*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class A extends core::Object {
   final field self::I1* a = null;
   synthetic constructor •() → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends core::Object {
   final field self::I2* a = null;
   synthetic constructor •() → self::B*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C1 extends core::Object implements self::A, self::B {
   synthetic constructor •() → self::C1*
@@ -53,6 +103,16 @@
     ;
   get a() → self::I3*
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C2 extends core::Object implements self::A, self::B {
   synthetic constructor •() → self::C2*
@@ -60,5 +120,15 @@
     ;
   get a() → invalid-type
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/conflicts_can_happen2.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/conflicts_can_happen2.dart.strong.transformed.expect
index 82780a7..21144c6 100644
--- a/pkg/front_end/testcases/inference/conflicts_can_happen2.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/conflicts_can_happen2.dart.strong.transformed.expect
@@ -21,12 +21,32 @@
   synthetic constructor •() → self::I1*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class I2 extends core::Object {
   field core::int* y = null;
   synthetic constructor •() → self::I2*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class I3 extends core::Object implements self::I1, self::I2 {
   field core::int* x = null;
@@ -34,18 +54,48 @@
   synthetic constructor •() → self::I3*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class A extends core::Object {
   final field self::I1* a = null;
   synthetic constructor •() → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends core::Object {
   final field self::I2* a = null;
   synthetic constructor •() → self::B*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C1 extends core::Object implements self::A, self::B {
   synthetic constructor •() → self::C1*
@@ -53,6 +103,16 @@
     ;
   get a() → self::I3*
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C2 extends core::Object implements self::A, self::B {
   synthetic constructor •() → self::C2*
@@ -60,5 +120,15 @@
     ;
   get a() → invalid-type
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/constructors_downwards_with_constraint.dart.outline.expect b/pkg/front_end/testcases/inference/constructors_downwards_with_constraint.dart.outline.expect
index be7aa62..af2ed69 100644
--- a/pkg/front_end/testcases/inference/constructors_downwards_with_constraint.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/constructors_downwards_with_constraint.dart.outline.expect
@@ -5,6 +5,16 @@
 class A extends core::Object {
   synthetic constructor •() → self::A*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A {
   synthetic constructor •() → self::B*
@@ -13,6 +23,16 @@
 class Foo<T extends self::A* = self::A*> extends core::Object {
   synthetic constructor •() → self::Foo<self::Foo::T*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → void
   ;
diff --git a/pkg/front_end/testcases/inference/constructors_downwards_with_constraint.dart.strong.expect b/pkg/front_end/testcases/inference/constructors_downwards_with_constraint.dart.strong.expect
index 4427d9c..d0befb8 100644
--- a/pkg/front_end/testcases/inference/constructors_downwards_with_constraint.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/constructors_downwards_with_constraint.dart.strong.expect
@@ -6,6 +6,16 @@
   synthetic constructor •() → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A {
   synthetic constructor •() → self::B*
@@ -16,6 +26,16 @@
   synthetic constructor •() → self::Foo<self::Foo::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → void {
   self::Foo<self::B*>* foo = new self::Foo::•<self::B*>();
diff --git a/pkg/front_end/testcases/inference/constructors_downwards_with_constraint.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/constructors_downwards_with_constraint.dart.strong.transformed.expect
index 4427d9c..d0befb8 100644
--- a/pkg/front_end/testcases/inference/constructors_downwards_with_constraint.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/constructors_downwards_with_constraint.dart.strong.transformed.expect
@@ -6,6 +6,16 @@
   synthetic constructor •() → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A {
   synthetic constructor •() → self::B*
@@ -16,6 +26,16 @@
   synthetic constructor •() → self::Foo<self::Foo::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → void {
   self::Foo<self::B*>* foo = new self::Foo::•<self::B*>();
diff --git a/pkg/front_end/testcases/inference/constructors_infer_from_arguments.dart.outline.expect b/pkg/front_end/testcases/inference/constructors_infer_from_arguments.dart.outline.expect
index 704851c..09a024c 100644
--- a/pkg/front_end/testcases/inference/constructors_infer_from_arguments.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/constructors_infer_from_arguments.dart.outline.expect
@@ -6,6 +6,16 @@
   generic-covariant-impl field self::C::T* t;
   constructor •(self::C::T* t) → self::C<self::C::T*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method test() → dynamic
   ;
diff --git a/pkg/front_end/testcases/inference/constructors_infer_from_arguments.dart.strong.expect b/pkg/front_end/testcases/inference/constructors_infer_from_arguments.dart.strong.expect
index 303cc21..5a48902 100644
--- a/pkg/front_end/testcases/inference/constructors_infer_from_arguments.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/constructors_infer_from_arguments.dart.strong.expect
@@ -14,6 +14,16 @@
   constructor •(self::C::T* t) → self::C<self::C::T*>*
     : self::C::t = t, super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method test() → dynamic {
   self::C<core::int*>* x = new self::C::•<core::int*>(42);
diff --git a/pkg/front_end/testcases/inference/constructors_infer_from_arguments.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/constructors_infer_from_arguments.dart.strong.transformed.expect
index 303cc21..5a48902 100644
--- a/pkg/front_end/testcases/inference/constructors_infer_from_arguments.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/constructors_infer_from_arguments.dart.strong.transformed.expect
@@ -14,6 +14,16 @@
   constructor •(self::C::T* t) → self::C<self::C::T*>*
     : self::C::t = t, super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method test() → dynamic {
   self::C<core::int*>* x = new self::C::•<core::int*>(42);
diff --git a/pkg/front_end/testcases/inference/constructors_infer_from_arguments_argument_not_assignable.dart.outline.expect b/pkg/front_end/testcases/inference/constructors_infer_from_arguments_argument_not_assignable.dart.outline.expect
index 0a07ab4..2787eaa 100644
--- a/pkg/front_end/testcases/inference/constructors_infer_from_arguments_argument_not_assignable.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/constructors_infer_from_arguments_argument_not_assignable.dart.outline.expect
@@ -6,14 +6,44 @@
 class A extends core::Object {
   synthetic constructor •() → self::A*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C<T extends self::A* = self::A*> extends core::Object {
   constructor •(() →* self::C::T* f) → self::C<self::C::T*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class NotA extends core::Object {
   synthetic constructor •() → self::NotA*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method myF() → self::NotA*
   ;
diff --git a/pkg/front_end/testcases/inference/constructors_infer_from_arguments_argument_not_assignable.dart.strong.expect b/pkg/front_end/testcases/inference/constructors_infer_from_arguments_argument_not_assignable.dart.strong.expect
index 94baa11..a3a61b4 100644
--- a/pkg/front_end/testcases/inference/constructors_infer_from_arguments_argument_not_assignable.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/constructors_infer_from_arguments_argument_not_assignable.dart.strong.expect
@@ -30,16 +30,46 @@
   synthetic constructor •() → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C<T extends self::A* = self::A*> extends core::Object {
   constructor •(() →* self::C::T* f) → self::C<self::C::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class NotA extends core::Object {
   synthetic constructor •() → self::NotA*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method myF() → self::NotA*
   return null;
diff --git a/pkg/front_end/testcases/inference/constructors_infer_from_arguments_const.dart.outline.expect b/pkg/front_end/testcases/inference/constructors_infer_from_arguments_const.dart.outline.expect
index b4b1520..9fc6d33 100644
--- a/pkg/front_end/testcases/inference/constructors_infer_from_arguments_const.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/constructors_infer_from_arguments_const.dart.outline.expect
@@ -7,6 +7,16 @@
   const constructor •(self::C::T* t) → self::C<self::C::T*>*
     : self::C::t = t, super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/inference/constructors_infer_from_arguments_const.dart.strong.expect b/pkg/front_end/testcases/inference/constructors_infer_from_arguments_const.dart.strong.expect
index 508226b..7fee243 100644
--- a/pkg/front_end/testcases/inference/constructors_infer_from_arguments_const.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/constructors_infer_from_arguments_const.dart.strong.expect
@@ -7,6 +7,16 @@
   const constructor •(self::C::T* t) → self::C<self::C::T*>*
     : self::C::t = t, super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   self::C<core::int*>* x = #C2;
diff --git a/pkg/front_end/testcases/inference/constructors_infer_from_arguments_const.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/constructors_infer_from_arguments_const.dart.strong.transformed.expect
index 508226b..7fee243 100644
--- a/pkg/front_end/testcases/inference/constructors_infer_from_arguments_const.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/constructors_infer_from_arguments_const.dart.strong.transformed.expect
@@ -7,6 +7,16 @@
   const constructor •(self::C::T* t) → self::C<self::C::T*>*
     : self::C::t = t, super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   self::C<core::int*>* x = #C2;
diff --git a/pkg/front_end/testcases/inference/constructors_infer_from_arguments_const_with_upper_bound.dart.outline.expect b/pkg/front_end/testcases/inference/constructors_infer_from_arguments_const_with_upper_bound.dart.outline.expect
index 8622004..db731c5 100644
--- a/pkg/front_end/testcases/inference/constructors_infer_from_arguments_const_with_upper_bound.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/constructors_infer_from_arguments_const_with_upper_bound.dart.outline.expect
@@ -7,11 +7,31 @@
   const constructor •(self::C::T* x) → self::C<self::C::T*>*
     : self::C::x = x, super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D<T extends core::num* = core::num*> extends core::Object /*hasConstConstructor*/  {
   const constructor •() → self::D<self::D::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → void
   ;
diff --git a/pkg/front_end/testcases/inference/constructors_infer_from_arguments_const_with_upper_bound.dart.strong.expect b/pkg/front_end/testcases/inference/constructors_infer_from_arguments_const_with_upper_bound.dart.strong.expect
index b25e914..eea2352 100644
--- a/pkg/front_end/testcases/inference/constructors_infer_from_arguments_const_with_upper_bound.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/constructors_infer_from_arguments_const_with_upper_bound.dart.strong.expect
@@ -7,11 +7,31 @@
   const constructor •(self::C::T* x) → self::C<self::C::T*>*
     : self::C::x = x, super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D<T extends core::num* = core::num*> extends core::Object /*hasConstConstructor*/  {
   const constructor •() → self::D<self::D::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → void {
   self::C<core::int*>* c2 = #C2;
diff --git a/pkg/front_end/testcases/inference/constructors_infer_from_arguments_const_with_upper_bound.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/constructors_infer_from_arguments_const_with_upper_bound.dart.strong.transformed.expect
index b25e914..eea2352 100644
--- a/pkg/front_end/testcases/inference/constructors_infer_from_arguments_const_with_upper_bound.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/constructors_infer_from_arguments_const_with_upper_bound.dart.strong.transformed.expect
@@ -7,11 +7,31 @@
   const constructor •(self::C::T* x) → self::C<self::C::T*>*
     : self::C::x = x, super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D<T extends core::num* = core::num*> extends core::Object /*hasConstConstructor*/  {
   const constructor •() → self::D<self::D::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → void {
   self::C<core::int*>* c2 = #C2;
diff --git a/pkg/front_end/testcases/inference/constructors_infer_from_arguments_downwards_from_constructor.dart.outline.expect b/pkg/front_end/testcases/inference/constructors_infer_from_arguments_downwards_from_constructor.dart.outline.expect
index 1936950..8b791ad 100644
--- a/pkg/front_end/testcases/inference/constructors_infer_from_arguments_downwards_from_constructor.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/constructors_infer_from_arguments_downwards_from_constructor.dart.outline.expect
@@ -5,6 +5,16 @@
 class C<T extends core::Object* = dynamic> extends core::Object {
   constructor •(core::List<self::C::T*>* list) → self::C<self::C::T*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/inference/constructors_infer_from_arguments_downwards_from_constructor.dart.strong.expect b/pkg/front_end/testcases/inference/constructors_infer_from_arguments_downwards_from_constructor.dart.strong.expect
index 2bf286e..6cf5960 100644
--- a/pkg/front_end/testcases/inference/constructors_infer_from_arguments_downwards_from_constructor.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/constructors_infer_from_arguments_downwards_from_constructor.dart.strong.expect
@@ -6,6 +6,16 @@
   constructor •(core::List<self::C::T*>* list) → self::C<self::C::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   self::C<core::int*>* x = new self::C::•<core::int*>(<core::int*>[123]);
diff --git a/pkg/front_end/testcases/inference/constructors_infer_from_arguments_downwards_from_constructor.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/constructors_infer_from_arguments_downwards_from_constructor.dart.strong.transformed.expect
index 2bf286e..6cf5960 100644
--- a/pkg/front_end/testcases/inference/constructors_infer_from_arguments_downwards_from_constructor.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/constructors_infer_from_arguments_downwards_from_constructor.dart.strong.transformed.expect
@@ -6,6 +6,16 @@
   constructor •(core::List<self::C::T*>* list) → self::C<self::C::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   self::C<core::int*>* x = new self::C::•<core::int*>(<core::int*>[123]);
diff --git a/pkg/front_end/testcases/inference/constructors_infer_from_arguments_factory.dart.outline.expect b/pkg/front_end/testcases/inference/constructors_infer_from_arguments_factory.dart.outline.expect
index c33e3cc..78502db 100644
--- a/pkg/front_end/testcases/inference/constructors_infer_from_arguments_factory.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/constructors_infer_from_arguments_factory.dart.outline.expect
@@ -8,6 +8,16 @@
     ;
   static factory •<T extends core::Object* = dynamic>(self::C::•::T* t) → self::C<self::C::•::T*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method test() → dynamic
   ;
diff --git a/pkg/front_end/testcases/inference/constructors_infer_from_arguments_factory.dart.strong.expect b/pkg/front_end/testcases/inference/constructors_infer_from_arguments_factory.dart.strong.expect
index 860cc4e..c830c70 100644
--- a/pkg/front_end/testcases/inference/constructors_infer_from_arguments_factory.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/constructors_infer_from_arguments_factory.dart.strong.expect
@@ -19,6 +19,16 @@
     x.{self::C::t} = t;
     return x;
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method test() → dynamic {
   self::C<core::int*>* x = self::C::•<core::int*>(42);
diff --git a/pkg/front_end/testcases/inference/constructors_infer_from_arguments_factory.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/constructors_infer_from_arguments_factory.dart.strong.transformed.expect
index 860cc4e..c830c70 100644
--- a/pkg/front_end/testcases/inference/constructors_infer_from_arguments_factory.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/constructors_infer_from_arguments_factory.dart.strong.transformed.expect
@@ -19,6 +19,16 @@
     x.{self::C::t} = t;
     return x;
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method test() → dynamic {
   self::C<core::int*>* x = self::C::•<core::int*>(42);
diff --git a/pkg/front_end/testcases/inference/constructors_infer_from_arguments_factory_calls_constructor.dart.outline.expect b/pkg/front_end/testcases/inference/constructors_infer_from_arguments_factory_calls_constructor.dart.outline.expect
index 9bb0a3d..e7eb3ba 100644
--- a/pkg/front_end/testcases/inference/constructors_infer_from_arguments_factory_calls_constructor.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/constructors_infer_from_arguments_factory_calls_constructor.dart.outline.expect
@@ -10,6 +10,16 @@
     ;
   method m() → self::A<self::A::T*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/inference/constructors_infer_from_arguments_factory_calls_constructor.dart.strong.expect b/pkg/front_end/testcases/inference/constructors_infer_from_arguments_factory_calls_constructor.dart.strong.expect
index d93d08a..516cca2 100644
--- a/pkg/front_end/testcases/inference/constructors_infer_from_arguments_factory_calls_constructor.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/constructors_infer_from_arguments_factory_calls_constructor.dart.strong.expect
@@ -11,5 +11,15 @@
     return new self::A::•<self::A::factory::T*>();
   method m() → self::A<self::A::T*>*
     return new self::A::•<self::A::T*>();
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/constructors_infer_from_arguments_factory_calls_constructor.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/constructors_infer_from_arguments_factory_calls_constructor.dart.strong.transformed.expect
index d93d08a..516cca2 100644
--- a/pkg/front_end/testcases/inference/constructors_infer_from_arguments_factory_calls_constructor.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/constructors_infer_from_arguments_factory_calls_constructor.dart.strong.transformed.expect
@@ -11,5 +11,15 @@
     return new self::A::•<self::A::factory::T*>();
   method m() → self::A<self::A::T*>*
     return new self::A::•<self::A::T*>();
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/constructors_infer_from_arguments_named.dart.outline.expect b/pkg/front_end/testcases/inference/constructors_infer_from_arguments_named.dart.outline.expect
index ba86a01..2bfa6bb 100644
--- a/pkg/front_end/testcases/inference/constructors_infer_from_arguments_named.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/constructors_infer_from_arguments_named.dart.outline.expect
@@ -6,6 +6,16 @@
   generic-covariant-impl field self::C::T* t;
   constructor named(core::List<self::C::T*>* t) → self::C<self::C::T*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/inference/constructors_infer_from_arguments_named.dart.strong.expect b/pkg/front_end/testcases/inference/constructors_infer_from_arguments_named.dart.strong.expect
index 59dd1ce..e0eb205 100644
--- a/pkg/front_end/testcases/inference/constructors_infer_from_arguments_named.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/constructors_infer_from_arguments_named.dart.strong.expect
@@ -7,6 +7,16 @@
   constructor named(core::List<self::C::T*>* t) → self::C<self::C::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   self::C<core::int*>* x = new self::C::named<core::int*>(<core::int*>[]);
diff --git a/pkg/front_end/testcases/inference/constructors_infer_from_arguments_named.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/constructors_infer_from_arguments_named.dart.strong.transformed.expect
index 59dd1ce..e0eb205 100644
--- a/pkg/front_end/testcases/inference/constructors_infer_from_arguments_named.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/constructors_infer_from_arguments_named.dart.strong.transformed.expect
@@ -7,6 +7,16 @@
   constructor named(core::List<self::C::T*>* t) → self::C<self::C::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   self::C<core::int*>* x = new self::C::named<core::int*>(<core::int*>[]);
diff --git a/pkg/front_end/testcases/inference/constructors_infer_from_arguments_named_factory.dart.outline.expect b/pkg/front_end/testcases/inference/constructors_infer_from_arguments_named_factory.dart.outline.expect
index 28ffdec..43cac2e 100644
--- a/pkg/front_end/testcases/inference/constructors_infer_from_arguments_named_factory.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/constructors_infer_from_arguments_named_factory.dart.outline.expect
@@ -8,6 +8,16 @@
     ;
   static factory named<T extends core::Object* = dynamic>(self::C::named::T* t) → self::C<self::C::named::T*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/inference/constructors_infer_from_arguments_named_factory.dart.strong.expect b/pkg/front_end/testcases/inference/constructors_infer_from_arguments_named_factory.dart.strong.expect
index d428352..32ef2de 100644
--- a/pkg/front_end/testcases/inference/constructors_infer_from_arguments_named_factory.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/constructors_infer_from_arguments_named_factory.dart.strong.expect
@@ -12,6 +12,16 @@
     x.{self::C::t} = t;
     return x;
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   self::C<core::int*>* x = self::C::named<core::int*>(42);
diff --git a/pkg/front_end/testcases/inference/constructors_infer_from_arguments_named_factory.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/constructors_infer_from_arguments_named_factory.dart.strong.transformed.expect
index d428352..32ef2de 100644
--- a/pkg/front_end/testcases/inference/constructors_infer_from_arguments_named_factory.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/constructors_infer_from_arguments_named_factory.dart.strong.transformed.expect
@@ -12,6 +12,16 @@
     x.{self::C::t} = t;
     return x;
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   self::C<core::int*>* x = self::C::named<core::int*>(42);
diff --git a/pkg/front_end/testcases/inference/constructors_infer_from_arguments_redirecting.dart.outline.expect b/pkg/front_end/testcases/inference/constructors_infer_from_arguments_redirecting.dart.outline.expect
index 306987f..609f097 100644
--- a/pkg/front_end/testcases/inference/constructors_infer_from_arguments_redirecting.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/constructors_infer_from_arguments_redirecting.dart.outline.expect
@@ -8,6 +8,16 @@
     ;
   constructor named(core::List<self::C::T*>* t) → self::C<self::C::T*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/inference/constructors_infer_from_arguments_redirecting.dart.strong.expect b/pkg/front_end/testcases/inference/constructors_infer_from_arguments_redirecting.dart.strong.expect
index 1969e2b..5b49404 100644
--- a/pkg/front_end/testcases/inference/constructors_infer_from_arguments_redirecting.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/constructors_infer_from_arguments_redirecting.dart.strong.expect
@@ -10,6 +10,16 @@
   constructor named(core::List<self::C::T*>* t) → self::C<self::C::T*>*
     : this self::C::•(t.{core::List::[]}(0))
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   self::C<core::int*>* x = new self::C::named<core::int*>(<core::int*>[42]);
diff --git a/pkg/front_end/testcases/inference/constructors_infer_from_arguments_redirecting.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/constructors_infer_from_arguments_redirecting.dart.strong.transformed.expect
index 1969e2b..5b49404 100644
--- a/pkg/front_end/testcases/inference/constructors_infer_from_arguments_redirecting.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/constructors_infer_from_arguments_redirecting.dart.strong.transformed.expect
@@ -10,6 +10,16 @@
   constructor named(core::List<self::C::T*>* t) → self::C<self::C::T*>*
     : this self::C::•(t.{core::List::[]}(0))
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   self::C<core::int*>* x = new self::C::named<core::int*>(<core::int*>[42]);
diff --git a/pkg/front_end/testcases/inference/constructors_infer_from_arguments_redirecting_factory.dart.outline.expect b/pkg/front_end/testcases/inference/constructors_infer_from_arguments_redirecting_factory.dart.outline.expect
index b66d0d6..e27a105 100644
--- a/pkg/front_end/testcases/inference/constructors_infer_from_arguments_redirecting_factory.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/constructors_infer_from_arguments_redirecting_factory.dart.outline.expect
@@ -8,11 +8,31 @@
   abstract set t(generic-covariant-impl self::C::T* x) → void;
   static factory •<T extends core::Object* = dynamic>(self::C::•::T* t) → self::C<self::C::•::T*>*
     let dynamic #redirecting_factory = self::CImpl::• in let self::C::•::T* #typeArg0 = null in invalid-expression;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class CImpl<T extends core::Object* = dynamic> extends core::Object implements self::C<self::CImpl::T*> {
   generic-covariant-impl field self::CImpl::T* t;
   constructor •(self::CImpl::T* t) → self::CImpl<self::CImpl::T*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/inference/constructors_infer_from_arguments_redirecting_factory.dart.strong.expect b/pkg/front_end/testcases/inference/constructors_infer_from_arguments_redirecting_factory.dart.strong.expect
index a4c13fe..830ea6f 100644
--- a/pkg/front_end/testcases/inference/constructors_infer_from_arguments_redirecting_factory.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/constructors_infer_from_arguments_redirecting_factory.dart.strong.expect
@@ -8,12 +8,32 @@
   abstract set t(generic-covariant-impl self::C::T* x) → void;
   static factory •<T extends core::Object* = dynamic>(self::C::•::T* t) → self::C<self::C::•::T*>*
     let dynamic #redirecting_factory = self::CImpl::• in let self::C::•::T* #typeArg0 = null in invalid-expression;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class CImpl<T extends core::Object* = dynamic> extends core::Object implements self::C<self::CImpl::T*> {
   generic-covariant-impl field self::CImpl::T* t;
   constructor •(self::CImpl::T* t) → self::CImpl<self::CImpl::T*>*
     : self::CImpl::t = t, super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   self::C<core::int*>* x = new self::CImpl::•<core::int*>(42);
diff --git a/pkg/front_end/testcases/inference/constructors_infer_from_arguments_redirecting_factory.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/constructors_infer_from_arguments_redirecting_factory.dart.strong.transformed.expect
index abccfe3..df08b49 100644
--- a/pkg/front_end/testcases/inference/constructors_infer_from_arguments_redirecting_factory.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/constructors_infer_from_arguments_redirecting_factory.dart.strong.transformed.expect
@@ -8,12 +8,32 @@
   abstract set t(generic-covariant-impl self::C::T* x) → void;
   static factory •<T extends core::Object* = dynamic>(self::C::•::T* t) → self::C<self::C::•::T*>*
     let<BottomType> #redirecting_factory = self::CImpl::• in let self::C::•::T* #typeArg0 = null in invalid-expression;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class CImpl<T extends core::Object* = dynamic> extends core::Object implements self::C<self::CImpl::T*> {
   generic-covariant-impl field self::CImpl::T* t;
   constructor •(self::CImpl::T* t) → self::CImpl<self::CImpl::T*>*
     : self::CImpl::t = t, super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   self::C<core::int*>* x = new self::CImpl::•<core::int*>(42);
diff --git a/pkg/front_end/testcases/inference/constructors_infer_from_arguments_redirecting_factory_to_factory.dart.outline.expect b/pkg/front_end/testcases/inference/constructors_infer_from_arguments_redirecting_factory_to_factory.dart.outline.expect
index 2752751..5d5c3cf 100644
--- a/pkg/front_end/testcases/inference/constructors_infer_from_arguments_redirecting_factory_to_factory.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/constructors_infer_from_arguments_redirecting_factory_to_factory.dart.outline.expect
@@ -8,6 +8,16 @@
   abstract set t(generic-covariant-impl self::C::T* x) → void;
   static factory •<T extends core::Object* = dynamic>(self::C::•::T* t) → self::C<self::C::•::T*>*
     let dynamic #redirecting_factory = self::CImpl::• in let self::C::•::T* #typeArg0 = null in invalid-expression;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class CImpl<T extends core::Object* = dynamic> extends core::Object implements self::C<self::CImpl::T*> {
   generic-covariant-impl field self::CImpl::T* t;
@@ -15,6 +25,16 @@
     ;
   static factory •<T extends core::Object* = dynamic>(self::CImpl::•::T* t) → self::CImpl<self::CImpl::•::T*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/inference/constructors_infer_from_arguments_redirecting_factory_to_factory.dart.strong.expect b/pkg/front_end/testcases/inference/constructors_infer_from_arguments_redirecting_factory_to_factory.dart.strong.expect
index 083cee3..22fdcfc 100644
--- a/pkg/front_end/testcases/inference/constructors_infer_from_arguments_redirecting_factory_to_factory.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/constructors_infer_from_arguments_redirecting_factory_to_factory.dart.strong.expect
@@ -8,6 +8,16 @@
   abstract set t(generic-covariant-impl self::C::T* x) → void;
   static factory •<T extends core::Object* = dynamic>(self::C::•::T* t) → self::C<self::C::•::T*>*
     let dynamic #redirecting_factory = self::CImpl::• in let self::C::•::T* #typeArg0 = null in invalid-expression;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class CImpl<T extends core::Object* = dynamic> extends core::Object implements self::C<self::CImpl::T*> {
   generic-covariant-impl field self::CImpl::T* t;
@@ -16,6 +26,16 @@
     ;
   static factory •<T extends core::Object* = dynamic>(self::CImpl::•::T* t) → self::CImpl<self::CImpl::•::T*>*
     return new self::CImpl::_<self::CImpl::•::T*>(t);
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   self::C<core::int*>* x = self::CImpl::•<core::int*>(42);
diff --git a/pkg/front_end/testcases/inference/constructors_infer_from_arguments_redirecting_factory_to_factory.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/constructors_infer_from_arguments_redirecting_factory_to_factory.dart.strong.transformed.expect
index 0bd8d51..8b46d82 100644
--- a/pkg/front_end/testcases/inference/constructors_infer_from_arguments_redirecting_factory_to_factory.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/constructors_infer_from_arguments_redirecting_factory_to_factory.dart.strong.transformed.expect
@@ -8,6 +8,16 @@
   abstract set t(generic-covariant-impl self::C::T* x) → void;
   static factory •<T extends core::Object* = dynamic>(self::C::•::T* t) → self::C<self::C::•::T*>*
     let <T extends core::Object* = dynamic>(T*) →* self::CImpl<T*>* #redirecting_factory = self::CImpl::• in let self::C::•::T* #typeArg0 = null in invalid-expression;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class CImpl<T extends core::Object* = dynamic> extends core::Object implements self::C<self::CImpl::T*> {
   generic-covariant-impl field self::CImpl::T* t;
@@ -16,6 +26,16 @@
     ;
   static factory •<T extends core::Object* = dynamic>(self::CImpl::•::T* t) → self::CImpl<self::CImpl::•::T*>*
     return new self::CImpl::_<self::CImpl::•::T*>(t);
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   self::C<core::int*>* x = self::CImpl::•<core::int*>(42);
diff --git a/pkg/front_end/testcases/inference/constructors_inference_f_bounded.dart.outline.expect b/pkg/front_end/testcases/inference/constructors_inference_f_bounded.dart.outline.expect
index 408d7df..30f8e6b 100644
--- a/pkg/front_end/testcases/inference/constructors_inference_f_bounded.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/constructors_inference_f_bounded.dart.outline.expect
@@ -5,6 +5,16 @@
 class Cloneable<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::Cloneable<self::Cloneable::T*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Pair<T extends self::Cloneable<self::Pair::T*>* = self::Cloneable<dynamic>*, U extends self::Cloneable<self::Pair::U*>* = self::Cloneable<dynamic>*> extends core::Object {
   generic-covariant-impl field self::Pair::T* t;
@@ -15,6 +25,16 @@
     ;
   get reversed() → self::Pair<self::Pair::U*, self::Pair::T*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/inference/constructors_inference_f_bounded.dart.strong.expect b/pkg/front_end/testcases/inference/constructors_inference_f_bounded.dart.strong.expect
index c7e9952..7006617 100644
--- a/pkg/front_end/testcases/inference/constructors_inference_f_bounded.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/constructors_inference_f_bounded.dart.strong.expect
@@ -27,6 +27,16 @@
   synthetic constructor •() → self::Cloneable<self::Cloneable::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Pair<T extends self::Cloneable<self::Pair::T*>* = self::Cloneable<dynamic>*, U extends self::Cloneable<self::Pair::U*>* = self::Cloneable<dynamic>*> extends core::Object {
   generic-covariant-impl field self::Pair::T* t;
@@ -39,6 +49,16 @@
     ;
   get reversed() → self::Pair<self::Pair::U*, self::Pair::T*>*
     return new self::Pair::•<self::Pair::U*, self::Pair::T*>(this.{self::Pair::u}, this.{self::Pair::t});
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   final self::Pair<self::Cloneable<dynamic>*, self::Cloneable<dynamic>*>* x = new self::Pair::_<self::Cloneable<dynamic>*, self::Cloneable<dynamic>*>();
diff --git a/pkg/front_end/testcases/inference/constructors_inference_f_bounded.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/constructors_inference_f_bounded.dart.strong.transformed.expect
index c7e9952..7006617 100644
--- a/pkg/front_end/testcases/inference/constructors_inference_f_bounded.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/constructors_inference_f_bounded.dart.strong.transformed.expect
@@ -27,6 +27,16 @@
   synthetic constructor •() → self::Cloneable<self::Cloneable::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Pair<T extends self::Cloneable<self::Pair::T*>* = self::Cloneable<dynamic>*, U extends self::Cloneable<self::Pair::U*>* = self::Cloneable<dynamic>*> extends core::Object {
   generic-covariant-impl field self::Pair::T* t;
@@ -39,6 +49,16 @@
     ;
   get reversed() → self::Pair<self::Pair::U*, self::Pair::T*>*
     return new self::Pair::•<self::Pair::U*, self::Pair::T*>(this.{self::Pair::u}, this.{self::Pair::t});
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   final self::Pair<self::Cloneable<dynamic>*, self::Cloneable<dynamic>*>* x = new self::Pair::_<self::Cloneable<dynamic>*, self::Cloneable<dynamic>*>();
diff --git a/pkg/front_end/testcases/inference/constructors_reverse_type_parameters.dart.outline.expect b/pkg/front_end/testcases/inference/constructors_reverse_type_parameters.dart.outline.expect
index f1f5c5d..2499efe 100644
--- a/pkg/front_end/testcases/inference/constructors_reverse_type_parameters.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/constructors_reverse_type_parameters.dart.outline.expect
@@ -9,6 +9,16 @@
     ;
   get reversed() → self::Pair<self::Pair::U*, self::Pair::T*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/inference/constructors_reverse_type_parameters.dart.strong.expect b/pkg/front_end/testcases/inference/constructors_reverse_type_parameters.dart.strong.expect
index e403c03..8a1aeaa 100644
--- a/pkg/front_end/testcases/inference/constructors_reverse_type_parameters.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/constructors_reverse_type_parameters.dart.strong.expect
@@ -10,5 +10,15 @@
     ;
   get reversed() → self::Pair<self::Pair::U*, self::Pair::T*>*
     return new self::Pair::•<self::Pair::U*, self::Pair::T*>(this.{self::Pair::u}, this.{self::Pair::t});
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/constructors_reverse_type_parameters.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/constructors_reverse_type_parameters.dart.strong.transformed.expect
index e403c03..8a1aeaa 100644
--- a/pkg/front_end/testcases/inference/constructors_reverse_type_parameters.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/constructors_reverse_type_parameters.dart.strong.transformed.expect
@@ -10,5 +10,15 @@
     ;
   get reversed() → self::Pair<self::Pair::U*, self::Pair::T*>*
     return new self::Pair::•<self::Pair::U*, self::Pair::T*>(this.{self::Pair::u}, this.{self::Pair::t});
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/constructors_too_many_positional_arguments.dart.outline.expect b/pkg/front_end/testcases/inference/constructors_too_many_positional_arguments.dart.outline.expect
index 8ebfc73..e66c9a1 100644
--- a/pkg/front_end/testcases/inference/constructors_too_many_positional_arguments.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/constructors_too_many_positional_arguments.dart.outline.expect
@@ -5,6 +5,16 @@
 class A<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::A<self::A::T*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method test() → dynamic
   ;
diff --git a/pkg/front_end/testcases/inference/constructors_too_many_positional_arguments.dart.strong.expect b/pkg/front_end/testcases/inference/constructors_too_many_positional_arguments.dart.strong.expect
index 891a659..2c06107 100644
--- a/pkg/front_end/testcases/inference/constructors_too_many_positional_arguments.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/constructors_too_many_positional_arguments.dart.strong.expect
@@ -17,6 +17,16 @@
   synthetic constructor •() → self::A<self::A::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method test() → dynamic {
   dynamic a = invalid-expression "pkg/front_end/testcases/inference/constructors_too_many_positional_arguments.dart:11:72: Error: Too many positional arguments: 0 allowed, but 1 found.
diff --git a/pkg/front_end/testcases/inference/constructors_too_many_positional_arguments.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/constructors_too_many_positional_arguments.dart.strong.transformed.expect
index 891a659..2c06107 100644
--- a/pkg/front_end/testcases/inference/constructors_too_many_positional_arguments.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/constructors_too_many_positional_arguments.dart.strong.transformed.expect
@@ -17,6 +17,16 @@
   synthetic constructor •() → self::A<self::A::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method test() → dynamic {
   dynamic a = invalid-expression "pkg/front_end/testcases/inference/constructors_too_many_positional_arguments.dart:11:72: Error: Too many positional arguments: 0 allowed, but 1 found.
diff --git a/pkg/front_end/testcases/inference/do_not_infer_overridden_fields_that_explicitly_say_dynamic_infer.dart.outline.expect b/pkg/front_end/testcases/inference/do_not_infer_overridden_fields_that_explicitly_say_dynamic_infer.dart.outline.expect
index 908d36a..08e2b6f 100644
--- a/pkg/front_end/testcases/inference/do_not_infer_overridden_fields_that_explicitly_say_dynamic_infer.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/do_not_infer_overridden_fields_that_explicitly_say_dynamic_infer.dart.outline.expect
@@ -17,12 +17,32 @@
   final field core::int* x;
   synthetic constructor •() → self::A*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends core::Object implements self::A {
   synthetic constructor •() → self::B*
     ;
   get x() → dynamic
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method foo() → dynamic
   ;
diff --git a/pkg/front_end/testcases/inference/do_not_infer_overridden_fields_that_explicitly_say_dynamic_infer.dart.strong.expect b/pkg/front_end/testcases/inference/do_not_infer_overridden_fields_that_explicitly_say_dynamic_infer.dart.strong.expect
index e095535..9197caa 100644
--- a/pkg/front_end/testcases/inference/do_not_infer_overridden_fields_that_explicitly_say_dynamic_infer.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/do_not_infer_overridden_fields_that_explicitly_say_dynamic_infer.dart.strong.expect
@@ -18,6 +18,16 @@
   synthetic constructor •() → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends core::Object implements self::A {
   synthetic constructor •() → self::B*
@@ -25,6 +35,16 @@
     ;
   get x() → dynamic
     return 3;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method foo() → dynamic {
   core::String* y = new self::B::•().{self::B::x} as{TypeError,ForDynamic} core::String*;
diff --git a/pkg/front_end/testcases/inference/dont_infer_field_type_when_initializer_is_null.dart.outline.expect b/pkg/front_end/testcases/inference/dont_infer_field_type_when_initializer_is_null.dart.outline.expect
index 13d8894..340d0e6 100644
--- a/pkg/front_end/testcases/inference/dont_infer_field_type_when_initializer_is_null.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/dont_infer_field_type_when_initializer_is_null.dart.outline.expect
@@ -9,6 +9,16 @@
   field core::int* y2;
   synthetic constructor •() → self::A*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field dynamic x;
 static field core::int* y;
diff --git a/pkg/front_end/testcases/inference/dont_infer_field_type_when_initializer_is_null.dart.strong.expect b/pkg/front_end/testcases/inference/dont_infer_field_type_when_initializer_is_null.dart.strong.expect
index 28a93e1..a1b739f 100644
--- a/pkg/front_end/testcases/inference/dont_infer_field_type_when_initializer_is_null.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/dont_infer_field_type_when_initializer_is_null.dart.strong.expect
@@ -10,6 +10,16 @@
   synthetic constructor •() → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field dynamic x = null;
 static field core::int* y = 3;
diff --git a/pkg/front_end/testcases/inference/dont_infer_field_type_when_initializer_is_null.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/dont_infer_field_type_when_initializer_is_null.dart.strong.transformed.expect
index 28a93e1..a1b739f 100644
--- a/pkg/front_end/testcases/inference/dont_infer_field_type_when_initializer_is_null.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/dont_infer_field_type_when_initializer_is_null.dart.strong.transformed.expect
@@ -10,6 +10,16 @@
   synthetic constructor •() → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field dynamic x = null;
 static field core::int* y = 3;
diff --git a/pkg/front_end/testcases/inference/downward_inference_miscellaneous.dart.outline.expect b/pkg/front_end/testcases/inference/downward_inference_miscellaneous.dart.outline.expect
index 3801c07..554d101 100644
--- a/pkg/front_end/testcases/inference/downward_inference_miscellaneous.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/downward_inference_miscellaneous.dart.outline.expect
@@ -7,6 +7,16 @@
   generic-covariant-impl field (self::A::T*) →* self::A::T* x;
   constructor •((self::A::T*) →* self::A::T* x) → self::A<self::A::T*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → void
   ;
diff --git a/pkg/front_end/testcases/inference/downward_inference_miscellaneous.dart.strong.expect b/pkg/front_end/testcases/inference/downward_inference_miscellaneous.dart.strong.expect
index 7655fcc..5b9fc4c 100644
--- a/pkg/front_end/testcases/inference/downward_inference_miscellaneous.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/downward_inference_miscellaneous.dart.strong.expect
@@ -8,6 +8,16 @@
   constructor •((self::A::T*) →* self::A::T* x) → self::A<self::A::T*>*
     : self::A::x = x, super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → void {
   {
diff --git a/pkg/front_end/testcases/inference/downward_inference_miscellaneous.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/downward_inference_miscellaneous.dart.strong.transformed.expect
index 7655fcc..5b9fc4c 100644
--- a/pkg/front_end/testcases/inference/downward_inference_miscellaneous.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/downward_inference_miscellaneous.dart.strong.transformed.expect
@@ -8,6 +8,16 @@
   constructor •((self::A::T*) →* self::A::T* x) → self::A<self::A::T*>*
     : self::A::x = x, super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → void {
   {
diff --git a/pkg/front_end/testcases/inference/downwards_context_from_inferred_field_type.dart.outline.expect b/pkg/front_end/testcases/inference/downwards_context_from_inferred_field_type.dart.outline.expect
index 855790c..a5ba66a 100644
--- a/pkg/front_end/testcases/inference/downwards_context_from_inferred_field_type.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/downwards_context_from_inferred_field_type.dart.outline.expect
@@ -6,11 +6,31 @@
   synthetic constructor •() → self::A*
     ;
   abstract get foo() → core::Iterable<core::String*>*;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends core::Object implements self::A {
   final field core::Iterable<core::String*>* foo;
   synthetic constructor •() → self::B*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → void
   ;
diff --git a/pkg/front_end/testcases/inference/downwards_context_from_inferred_field_type.dart.strong.expect b/pkg/front_end/testcases/inference/downwards_context_from_inferred_field_type.dart.strong.expect
index 1d84a48..e4c4970 100644
--- a/pkg/front_end/testcases/inference/downwards_context_from_inferred_field_type.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/downwards_context_from_inferred_field_type.dart.strong.expect
@@ -7,12 +7,32 @@
     : super core::Object::•()
     ;
   abstract get foo() → core::Iterable<core::String*>*;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends core::Object implements self::A {
   final field core::Iterable<core::String*>* foo = #C1;
   synthetic constructor •() → self::B*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → void {}
 
diff --git a/pkg/front_end/testcases/inference/downwards_context_from_inferred_field_type.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/downwards_context_from_inferred_field_type.dart.strong.transformed.expect
index 1d84a48..e4c4970 100644
--- a/pkg/front_end/testcases/inference/downwards_context_from_inferred_field_type.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/downwards_context_from_inferred_field_type.dart.strong.transformed.expect
@@ -7,12 +7,32 @@
     : super core::Object::•()
     ;
   abstract get foo() → core::Iterable<core::String*>*;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends core::Object implements self::A {
   final field core::Iterable<core::String*>* foo = #C1;
   synthetic constructor •() → self::B*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → void {}
 
diff --git a/pkg/front_end/testcases/inference/downwards_inference_annotations.dart.outline.expect b/pkg/front_end/testcases/inference/downwards_inference_annotations.dart.outline.expect
index 7a7aebc..ea220ba 100644
--- a/pkg/front_end/testcases/inference/downwards_inference_annotations.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/downwards_inference_annotations.dart.outline.expect
@@ -9,16 +9,46 @@
   const constructor named(core::List<core::String*>* l) → self::Foo*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 @self::Foo::•(const <core::String*>[])
 class Bar extends core::Object {
   synthetic constructor •() → self::Bar*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 @self::Foo::named(const <core::String*>[])
 class Baz extends core::Object {
   synthetic constructor •() → self::Baz*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/inference/downwards_inference_annotations.dart.strong.expect b/pkg/front_end/testcases/inference/downwards_inference_annotations.dart.strong.expect
index 9abd5f3..d84a074 100644
--- a/pkg/front_end/testcases/inference/downwards_inference_annotations.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/downwards_inference_annotations.dart.strong.expect
@@ -9,18 +9,48 @@
   const constructor named(core::List<core::String*>* l) → self::Foo*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 @#C1
 class Bar extends core::Object {
   synthetic constructor •() → self::Bar*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 @#C1
 class Baz extends core::Object {
   synthetic constructor •() → self::Baz*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
 
diff --git a/pkg/front_end/testcases/inference/downwards_inference_annotations.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/downwards_inference_annotations.dart.strong.transformed.expect
index 9abd5f3..d84a074 100644
--- a/pkg/front_end/testcases/inference/downwards_inference_annotations.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/downwards_inference_annotations.dart.strong.transformed.expect
@@ -9,18 +9,48 @@
   const constructor named(core::List<core::String*>* l) → self::Foo*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 @#C1
 class Bar extends core::Object {
   synthetic constructor •() → self::Bar*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 @#C1
 class Baz extends core::Object {
   synthetic constructor •() → self::Baz*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
 
diff --git a/pkg/front_end/testcases/inference/downwards_inference_annotations_class_members.dart.outline.expect b/pkg/front_end/testcases/inference/downwards_inference_annotations_class_members.dart.outline.expect
index 88aeaca..015a63b 100644
--- a/pkg/front_end/testcases/inference/downwards_inference_annotations_class_members.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/downwards_inference_annotations_class_members.dart.outline.expect
@@ -6,6 +6,16 @@
   const constructor •(core::List<core::String*>* l) → self::Foo*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class Bar extends core::Object {
   @self::Foo::•(const <core::String*>[])
@@ -15,6 +25,16 @@
     ;
   @self::Foo::•(const <core::String*>[])
   abstract method f() → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/inference/downwards_inference_annotations_class_members.dart.strong.expect b/pkg/front_end/testcases/inference/downwards_inference_annotations_class_members.dart.strong.expect
index b83b8fe..bf593e5 100644
--- a/pkg/front_end/testcases/inference/downwards_inference_annotations_class_members.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/downwards_inference_annotations_class_members.dart.strong.expect
@@ -6,6 +6,16 @@
   const constructor •(core::List<core::String*>* l) → self::Foo*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class Bar extends core::Object {
   @#C1
@@ -16,6 +26,16 @@
     ;
   @#C1
   abstract method f() → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
 
diff --git a/pkg/front_end/testcases/inference/downwards_inference_annotations_class_members.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/downwards_inference_annotations_class_members.dart.strong.transformed.expect
index b83b8fe..bf593e5 100644
--- a/pkg/front_end/testcases/inference/downwards_inference_annotations_class_members.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/downwards_inference_annotations_class_members.dart.strong.transformed.expect
@@ -6,6 +6,16 @@
   const constructor •(core::List<core::String*>* l) → self::Foo*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class Bar extends core::Object {
   @#C1
@@ -16,6 +26,16 @@
     ;
   @#C1
   abstract method f() → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
 
diff --git a/pkg/front_end/testcases/inference/downwards_inference_annotations_for_loop_variable.dart.outline.expect b/pkg/front_end/testcases/inference/downwards_inference_annotations_for_loop_variable.dart.outline.expect
index dcbe03a..ce1b7e2 100644
--- a/pkg/front_end/testcases/inference/downwards_inference_annotations_for_loop_variable.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/downwards_inference_annotations_for_loop_variable.dart.outline.expect
@@ -6,6 +6,16 @@
   const constructor •(core::List<core::String*>* l) → self::Foo*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method test() → void
   ;
diff --git a/pkg/front_end/testcases/inference/downwards_inference_annotations_for_loop_variable.dart.strong.expect b/pkg/front_end/testcases/inference/downwards_inference_annotations_for_loop_variable.dart.strong.expect
index b9774d6..ce529f3 100644
--- a/pkg/front_end/testcases/inference/downwards_inference_annotations_for_loop_variable.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/downwards_inference_annotations_for_loop_variable.dart.strong.expect
@@ -6,6 +6,16 @@
   const constructor •(core::List<core::String*>* l) → self::Foo*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method test() → void {
   for (@#C1 core::int* i = 0; i.{core::num::<}(1); i = i.{core::num::+}(1)) {
diff --git a/pkg/front_end/testcases/inference/downwards_inference_annotations_for_loop_variable.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/downwards_inference_annotations_for_loop_variable.dart.strong.transformed.expect
index c81fe3a..eb866c7 100644
--- a/pkg/front_end/testcases/inference/downwards_inference_annotations_for_loop_variable.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/downwards_inference_annotations_for_loop_variable.dart.strong.transformed.expect
@@ -6,6 +6,16 @@
   const constructor •(core::List<core::String*>* l) → self::Foo*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method test() → void {
   for (@#C1 core::int* i = 0; i.{core::num::<}(1); i = i.{core::num::+}(1)) {
diff --git a/pkg/front_end/testcases/inference/downwards_inference_annotations_locals.dart.outline.expect b/pkg/front_end/testcases/inference/downwards_inference_annotations_locals.dart.outline.expect
index dcbe03a..ce1b7e2 100644
--- a/pkg/front_end/testcases/inference/downwards_inference_annotations_locals.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/downwards_inference_annotations_locals.dart.outline.expect
@@ -6,6 +6,16 @@
   const constructor •(core::List<core::String*>* l) → self::Foo*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method test() → void
   ;
diff --git a/pkg/front_end/testcases/inference/downwards_inference_annotations_locals.dart.strong.expect b/pkg/front_end/testcases/inference/downwards_inference_annotations_locals.dart.strong.expect
index bb1c4d6..e52edfc 100644
--- a/pkg/front_end/testcases/inference/downwards_inference_annotations_locals.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/downwards_inference_annotations_locals.dart.strong.expect
@@ -6,6 +6,16 @@
   const constructor •(core::List<core::String*>* l) → self::Foo*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method test() → void {
   @#C1 dynamic x;
diff --git a/pkg/front_end/testcases/inference/downwards_inference_annotations_locals.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/downwards_inference_annotations_locals.dart.strong.transformed.expect
index bb1c4d6..e52edfc 100644
--- a/pkg/front_end/testcases/inference/downwards_inference_annotations_locals.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/downwards_inference_annotations_locals.dart.strong.transformed.expect
@@ -6,6 +6,16 @@
   const constructor •(core::List<core::String*>* l) → self::Foo*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method test() → void {
   @#C1 dynamic x;
diff --git a/pkg/front_end/testcases/inference/downwards_inference_annotations_locals_referring_to_locals.dart.outline.expect b/pkg/front_end/testcases/inference/downwards_inference_annotations_locals_referring_to_locals.dart.outline.expect
index 6bf8275..4befb6f 100644
--- a/pkg/front_end/testcases/inference/downwards_inference_annotations_locals_referring_to_locals.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/downwards_inference_annotations_locals_referring_to_locals.dart.outline.expect
@@ -6,6 +6,16 @@
   const constructor •(dynamic l) → self::Foo*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method test() → void
   ;
diff --git a/pkg/front_end/testcases/inference/downwards_inference_annotations_locals_referring_to_locals.dart.strong.expect b/pkg/front_end/testcases/inference/downwards_inference_annotations_locals_referring_to_locals.dart.strong.expect
index ae2a9b6..26f5841 100644
--- a/pkg/front_end/testcases/inference/downwards_inference_annotations_locals_referring_to_locals.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/downwards_inference_annotations_locals_referring_to_locals.dart.strong.expect
@@ -6,6 +6,16 @@
   const constructor •(dynamic l) → self::Foo*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method test() → void {
   @#C1 dynamic y;
diff --git a/pkg/front_end/testcases/inference/downwards_inference_annotations_locals_referring_to_locals.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/downwards_inference_annotations_locals_referring_to_locals.dart.strong.transformed.expect
index ae2a9b6..26f5841 100644
--- a/pkg/front_end/testcases/inference/downwards_inference_annotations_locals_referring_to_locals.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/downwards_inference_annotations_locals_referring_to_locals.dart.strong.transformed.expect
@@ -6,6 +6,16 @@
   const constructor •(dynamic l) → self::Foo*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method test() → void {
   @#C1 dynamic y;
diff --git a/pkg/front_end/testcases/inference/downwards_inference_annotations_parameter.dart.outline.expect b/pkg/front_end/testcases/inference/downwards_inference_annotations_parameter.dart.outline.expect
index 0a774f4..7f5674f 100644
--- a/pkg/front_end/testcases/inference/downwards_inference_annotations_parameter.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/downwards_inference_annotations_parameter.dart.outline.expect
@@ -6,12 +6,32 @@
   const constructor •(core::List<core::String*>* l) → self::Foo*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C extends core::Object {
   synthetic constructor •() → self::C*
     ;
   method m(dynamic x) → void
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method f(dynamic x) → void
   ;
diff --git a/pkg/front_end/testcases/inference/downwards_inference_annotations_parameter.dart.strong.expect b/pkg/front_end/testcases/inference/downwards_inference_annotations_parameter.dart.strong.expect
index ecbef42..d04a09f 100644
--- a/pkg/front_end/testcases/inference/downwards_inference_annotations_parameter.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/downwards_inference_annotations_parameter.dart.strong.expect
@@ -6,12 +6,32 @@
   const constructor •(core::List<core::String*>* l) → self::Foo*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C extends core::Object {
   synthetic constructor •() → self::C*
     : super core::Object::•()
     ;
   method m(@#C1 dynamic x) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method f(@#C1 dynamic x) → void {}
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/downwards_inference_annotations_parameter.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/downwards_inference_annotations_parameter.dart.strong.transformed.expect
index ecbef42..d04a09f 100644
--- a/pkg/front_end/testcases/inference/downwards_inference_annotations_parameter.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/downwards_inference_annotations_parameter.dart.strong.transformed.expect
@@ -6,12 +6,32 @@
   const constructor •(core::List<core::String*>* l) → self::Foo*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C extends core::Object {
   synthetic constructor •() → self::C*
     : super core::Object::•()
     ;
   method m(@#C1 dynamic x) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method f(@#C1 dynamic x) → void {}
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/downwards_inference_annotations_parameter_local.dart.outline.expect b/pkg/front_end/testcases/inference/downwards_inference_annotations_parameter_local.dart.outline.expect
index dcbe03a..ce1b7e2 100644
--- a/pkg/front_end/testcases/inference/downwards_inference_annotations_parameter_local.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/downwards_inference_annotations_parameter_local.dart.outline.expect
@@ -6,6 +6,16 @@
   const constructor •(core::List<core::String*>* l) → self::Foo*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method test() → void
   ;
diff --git a/pkg/front_end/testcases/inference/downwards_inference_annotations_parameter_local.dart.strong.expect b/pkg/front_end/testcases/inference/downwards_inference_annotations_parameter_local.dart.strong.expect
index f2402c0..0fdf5fa 100644
--- a/pkg/front_end/testcases/inference/downwards_inference_annotations_parameter_local.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/downwards_inference_annotations_parameter_local.dart.strong.expect
@@ -6,6 +6,16 @@
   const constructor •(core::List<core::String*>* l) → self::Foo*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method test() → void {
   function f(@#C1 dynamic x) → void {}
diff --git a/pkg/front_end/testcases/inference/downwards_inference_annotations_parameter_local.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/downwards_inference_annotations_parameter_local.dart.strong.transformed.expect
index f2402c0..0fdf5fa 100644
--- a/pkg/front_end/testcases/inference/downwards_inference_annotations_parameter_local.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/downwards_inference_annotations_parameter_local.dart.strong.transformed.expect
@@ -6,6 +6,16 @@
   const constructor •(core::List<core::String*>* l) → self::Foo*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method test() → void {
   function f(@#C1 dynamic x) → void {}
diff --git a/pkg/front_end/testcases/inference/downwards_inference_annotations_type_variable.dart.outline.expect b/pkg/front_end/testcases/inference/downwards_inference_annotations_type_variable.dart.outline.expect
index ba15078..e4d0a67 100644
--- a/pkg/front_end/testcases/inference/downwards_inference_annotations_type_variable.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/downwards_inference_annotations_type_variable.dart.outline.expect
@@ -7,16 +7,46 @@
   const constructor •(core::List<core::String*>* l) → self::Foo*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::C<self::C::T*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D extends core::Object {
   synthetic constructor •() → self::D*
     ;
   method m<T extends core::Object* = dynamic>() → void
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method f<T extends core::Object* = dynamic>() → void
   ;
diff --git a/pkg/front_end/testcases/inference/downwards_inference_annotations_type_variable.dart.strong.expect b/pkg/front_end/testcases/inference/downwards_inference_annotations_type_variable.dart.strong.expect
index 11bef7d..e27aa98 100644
--- a/pkg/front_end/testcases/inference/downwards_inference_annotations_type_variable.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/downwards_inference_annotations_type_variable.dart.strong.expect
@@ -7,17 +7,47 @@
   const constructor •(core::List<core::String*>* l) → self::Foo*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::C<self::C::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D extends core::Object {
   synthetic constructor •() → self::D*
     : super core::Object::•()
     ;
   method m<T extends core::Object* = dynamic>() → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method f<T extends core::Object* = dynamic>() → void {}
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/downwards_inference_annotations_type_variable.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/downwards_inference_annotations_type_variable.dart.strong.transformed.expect
index 11bef7d..e27aa98 100644
--- a/pkg/front_end/testcases/inference/downwards_inference_annotations_type_variable.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/downwards_inference_annotations_type_variable.dart.strong.transformed.expect
@@ -7,17 +7,47 @@
   const constructor •(core::List<core::String*>* l) → self::Foo*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::C<self::C::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D extends core::Object {
   synthetic constructor •() → self::D*
     : super core::Object::•()
     ;
   method m<T extends core::Object* = dynamic>() → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method f<T extends core::Object* = dynamic>() → void {}
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/downwards_inference_annotations_type_variable_local.dart.outline.expect b/pkg/front_end/testcases/inference/downwards_inference_annotations_type_variable_local.dart.outline.expect
index dcbe03a..ce1b7e2 100644
--- a/pkg/front_end/testcases/inference/downwards_inference_annotations_type_variable_local.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/downwards_inference_annotations_type_variable_local.dart.outline.expect
@@ -6,6 +6,16 @@
   const constructor •(core::List<core::String*>* l) → self::Foo*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method test() → void
   ;
diff --git a/pkg/front_end/testcases/inference/downwards_inference_annotations_type_variable_local.dart.strong.expect b/pkg/front_end/testcases/inference/downwards_inference_annotations_type_variable_local.dart.strong.expect
index b618351..1c90907 100644
--- a/pkg/front_end/testcases/inference/downwards_inference_annotations_type_variable_local.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/downwards_inference_annotations_type_variable_local.dart.strong.expect
@@ -6,6 +6,16 @@
   const constructor •(core::List<core::String*>* l) → self::Foo*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method test() → void {
   function f<@#C1 T extends core::Object* = dynamic>() → void {}
diff --git a/pkg/front_end/testcases/inference/downwards_inference_annotations_type_variable_local.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/downwards_inference_annotations_type_variable_local.dart.strong.transformed.expect
index b618351..1c90907 100644
--- a/pkg/front_end/testcases/inference/downwards_inference_annotations_type_variable_local.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/downwards_inference_annotations_type_variable_local.dart.strong.transformed.expect
@@ -6,6 +6,16 @@
   const constructor •(core::List<core::String*>* l) → self::Foo*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method test() → void {
   function f<@#C1 T extends core::Object* = dynamic>() → void {}
diff --git a/pkg/front_end/testcases/inference/downwards_inference_annotations_typedef.dart.outline.expect b/pkg/front_end/testcases/inference/downwards_inference_annotations_typedef.dart.outline.expect
index 50ccca4..0546b51 100644
--- a/pkg/front_end/testcases/inference/downwards_inference_annotations_typedef.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/downwards_inference_annotations_typedef.dart.outline.expect
@@ -7,6 +7,16 @@
   const constructor •(core::List<core::String*>* l) → self::Foo*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/inference/downwards_inference_annotations_typedef.dart.strong.expect b/pkg/front_end/testcases/inference/downwards_inference_annotations_typedef.dart.strong.expect
index c31b27b..2826688 100644
--- a/pkg/front_end/testcases/inference/downwards_inference_annotations_typedef.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/downwards_inference_annotations_typedef.dart.strong.expect
@@ -8,6 +8,16 @@
   const constructor •(core::List<core::String*>* l) → self::Foo*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
 
diff --git a/pkg/front_end/testcases/inference/downwards_inference_annotations_typedef.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/downwards_inference_annotations_typedef.dart.strong.transformed.expect
index c31b27b..2826688 100644
--- a/pkg/front_end/testcases/inference/downwards_inference_annotations_typedef.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/downwards_inference_annotations_typedef.dart.strong.transformed.expect
@@ -8,6 +8,16 @@
   const constructor •(core::List<core::String*>* l) → self::Foo*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
 
diff --git a/pkg/front_end/testcases/inference/downwards_inference_async_await.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/downwards_inference_async_await.dart.strong.transformed.expect
index 1ab4c3c..23df51a 100644
--- a/pkg/front_end/testcases/inference/downwards_inference_async_await.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/downwards_inference_async_await.dart.strong.transformed.expect
@@ -28,8 +28,8 @@
       asy::_completeOnAsyncReturn(:async_completer, :return_value);
       return;
     }
-    on dynamic catch(dynamic :exception, core::StackTrace* :stack_trace) {
-      :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+    on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
+      :async_completer.{asy::Completer::completeError}(exception, stack_trace);
     }
   :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
diff --git a/pkg/front_end/testcases/inference/downwards_inference_for_each.dart.outline.expect b/pkg/front_end/testcases/inference/downwards_inference_for_each.dart.outline.expect
index 3d473dc..8ea5838 100644
--- a/pkg/front_end/testcases/inference/downwards_inference_for_each.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/downwards_inference_for_each.dart.outline.expect
@@ -8,6 +8,53 @@
 abstract class MyStream<T extends core::Object* = dynamic> extends asy::Stream<self::MyStream::T*> {
   static factory •<T extends core::Object* = dynamic>() → self::MyStream<self::MyStream::•::T*>*
     ;
+  abstract member-signature get isBroadcast() → core::bool*;
+  abstract member-signature method asBroadcastStream({(asy::StreamSubscription<self::MyStream::T*>*) →* void onListen, (asy::StreamSubscription<self::MyStream::T*>*) →* void onCancel}) → asy::Stream<self::MyStream::T*>*;
+  abstract member-signature method listen((self::MyStream::T*) →* void onData, {core::Function* onError, () →* void onDone, core::bool* cancelOnError}) → asy::StreamSubscription<self::MyStream::T*>*;
+  abstract member-signature method where((self::MyStream::T*) →* core::bool* test) → asy::Stream<self::MyStream::T*>*;
+  abstract member-signature method map<S extends core::Object* = dynamic>((self::MyStream::T*) →* self::MyStream::map::S* convert) → asy::Stream<self::MyStream::map::S*>*;
+  abstract member-signature method asyncMap<E extends core::Object* = dynamic>((self::MyStream::T*) →* asy::FutureOr<self::MyStream::asyncMap::E*>* convert) → asy::Stream<self::MyStream::asyncMap::E*>*;
+  abstract member-signature method asyncExpand<E extends core::Object* = dynamic>((self::MyStream::T*) →* asy::Stream<self::MyStream::asyncExpand::E*>* convert) → asy::Stream<self::MyStream::asyncExpand::E*>*;
+  abstract member-signature method handleError(core::Function* onError, {(dynamic) →* core::bool* test}) → asy::Stream<self::MyStream::T*>*;
+  abstract member-signature method expand<S extends core::Object* = dynamic>((self::MyStream::T*) →* core::Iterable<self::MyStream::expand::S*>* convert) → asy::Stream<self::MyStream::expand::S*>*;
+  abstract member-signature method pipe(generic-covariant-impl asy::StreamConsumer<self::MyStream::T*>* streamConsumer) → asy::Future<dynamic>*;
+  abstract member-signature method transform<S extends core::Object* = dynamic>(generic-covariant-impl asy::StreamTransformer<self::MyStream::T*, self::MyStream::transform::S*>* streamTransformer) → asy::Stream<self::MyStream::transform::S*>*;
+  abstract member-signature method reduce(generic-covariant-impl (self::MyStream::T*, self::MyStream::T*) →* self::MyStream::T* combine) → asy::Future<self::MyStream::T*>*;
+  abstract member-signature method fold<S extends core::Object* = dynamic>(self::MyStream::fold::S* initialValue, (self::MyStream::fold::S*, self::MyStream::T*) →* self::MyStream::fold::S* combine) → asy::Future<self::MyStream::fold::S*>*;
+  abstract member-signature method join([core::String* separator]) → asy::Future<core::String*>*;
+  abstract member-signature method contains(core::Object* needle) → asy::Future<core::bool*>*;
+  abstract member-signature method forEach((self::MyStream::T*) →* void action) → asy::Future<dynamic>*;
+  abstract member-signature method every((self::MyStream::T*) →* core::bool* test) → asy::Future<core::bool*>*;
+  abstract member-signature method any((self::MyStream::T*) →* core::bool* test) → asy::Future<core::bool*>*;
+  abstract member-signature get length() → asy::Future<core::int*>*;
+  abstract member-signature get isEmpty() → asy::Future<core::bool*>*;
+  abstract member-signature method cast<R extends core::Object* = dynamic>() → asy::Stream<self::MyStream::cast::R*>*;
+  abstract member-signature method toList() → asy::Future<core::List<self::MyStream::T*>*>*;
+  abstract member-signature method toSet() → asy::Future<core::Set<self::MyStream::T*>*>*;
+  abstract member-signature method drain<E extends core::Object* = dynamic>([self::MyStream::drain::E* futureValue]) → asy::Future<self::MyStream::drain::E*>*;
+  abstract member-signature method take(core::int* count) → asy::Stream<self::MyStream::T*>*;
+  abstract member-signature method takeWhile((self::MyStream::T*) →* core::bool* test) → asy::Stream<self::MyStream::T*>*;
+  abstract member-signature method skip(core::int* count) → asy::Stream<self::MyStream::T*>*;
+  abstract member-signature method skipWhile((self::MyStream::T*) →* core::bool* test) → asy::Stream<self::MyStream::T*>*;
+  abstract member-signature method distinct([(self::MyStream::T*, self::MyStream::T*) →* core::bool* equals]) → asy::Stream<self::MyStream::T*>*;
+  abstract member-signature get first() → asy::Future<self::MyStream::T*>*;
+  abstract member-signature get last() → asy::Future<self::MyStream::T*>*;
+  abstract member-signature get single() → asy::Future<self::MyStream::T*>*;
+  abstract member-signature method firstWhere((self::MyStream::T*) →* core::bool* test, {generic-covariant-impl () →* self::MyStream::T* orElse}) → asy::Future<self::MyStream::T*>*;
+  abstract member-signature method lastWhere((self::MyStream::T*) →* core::bool* test, {generic-covariant-impl () →* self::MyStream::T* orElse}) → asy::Future<self::MyStream::T*>*;
+  abstract member-signature method singleWhere((self::MyStream::T*) →* core::bool* test, {generic-covariant-impl () →* self::MyStream::T* orElse}) → asy::Future<self::MyStream::T*>*;
+  abstract member-signature method elementAt(core::int* index) → asy::Future<self::MyStream::T*>*;
+  abstract member-signature method timeout(core::Duration* timeLimit, {(asy::EventSink<self::MyStream::T*>*) →* void onTimeout}) → asy::Stream<self::MyStream::T*>*;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method F<T extends core::Object* = dynamic>() → self::F::T*
   ;
diff --git a/pkg/front_end/testcases/inference/downwards_inference_for_each.dart.strong.expect b/pkg/front_end/testcases/inference/downwards_inference_for_each.dart.strong.expect
index 7ed3ed3..38e3f97 100644
--- a/pkg/front_end/testcases/inference/downwards_inference_for_each.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/downwards_inference_for_each.dart.strong.expect
@@ -8,6 +8,53 @@
 abstract class MyStream<T extends core::Object* = dynamic> extends asy::Stream<self::MyStream::T*> {
   static factory •<T extends core::Object* = dynamic>() → self::MyStream<self::MyStream::•::T*>*
     return null;
+  abstract member-signature get isBroadcast() → core::bool*;
+  abstract member-signature method asBroadcastStream({(asy::StreamSubscription<self::MyStream::T*>*) →* void onListen = #C1, (asy::StreamSubscription<self::MyStream::T*>*) →* void onCancel = #C1}) → asy::Stream<self::MyStream::T*>*;
+  abstract member-signature method listen((self::MyStream::T*) →* void onData, {core::Function* onError = #C1, () →* void onDone = #C1, core::bool* cancelOnError = #C1}) → asy::StreamSubscription<self::MyStream::T*>*;
+  abstract member-signature method where((self::MyStream::T*) →* core::bool* test) → asy::Stream<self::MyStream::T*>*;
+  abstract member-signature method map<S extends core::Object* = dynamic>((self::MyStream::T*) →* self::MyStream::map::S* convert) → asy::Stream<self::MyStream::map::S*>*;
+  abstract member-signature method asyncMap<E extends core::Object* = dynamic>((self::MyStream::T*) →* asy::FutureOr<self::MyStream::asyncMap::E*>* convert) → asy::Stream<self::MyStream::asyncMap::E*>*;
+  abstract member-signature method asyncExpand<E extends core::Object* = dynamic>((self::MyStream::T*) →* asy::Stream<self::MyStream::asyncExpand::E*>* convert) → asy::Stream<self::MyStream::asyncExpand::E*>*;
+  abstract member-signature method handleError(core::Function* onError, {(dynamic) →* core::bool* test = #C1}) → asy::Stream<self::MyStream::T*>*;
+  abstract member-signature method expand<S extends core::Object* = dynamic>((self::MyStream::T*) →* core::Iterable<self::MyStream::expand::S*>* convert) → asy::Stream<self::MyStream::expand::S*>*;
+  abstract member-signature method pipe(generic-covariant-impl asy::StreamConsumer<self::MyStream::T*>* streamConsumer) → asy::Future<dynamic>*;
+  abstract member-signature method transform<S extends core::Object* = dynamic>(generic-covariant-impl asy::StreamTransformer<self::MyStream::T*, self::MyStream::transform::S*>* streamTransformer) → asy::Stream<self::MyStream::transform::S*>*;
+  abstract member-signature method reduce(generic-covariant-impl (self::MyStream::T*, self::MyStream::T*) →* self::MyStream::T* combine) → asy::Future<self::MyStream::T*>*;
+  abstract member-signature method fold<S extends core::Object* = dynamic>(self::MyStream::fold::S* initialValue, (self::MyStream::fold::S*, self::MyStream::T*) →* self::MyStream::fold::S* combine) → asy::Future<self::MyStream::fold::S*>*;
+  abstract member-signature method join([core::String* separator = #C2]) → asy::Future<core::String*>*;
+  abstract member-signature method contains(core::Object* needle) → asy::Future<core::bool*>*;
+  abstract member-signature method forEach((self::MyStream::T*) →* void action) → asy::Future<dynamic>*;
+  abstract member-signature method every((self::MyStream::T*) →* core::bool* test) → asy::Future<core::bool*>*;
+  abstract member-signature method any((self::MyStream::T*) →* core::bool* test) → asy::Future<core::bool*>*;
+  abstract member-signature get length() → asy::Future<core::int*>*;
+  abstract member-signature get isEmpty() → asy::Future<core::bool*>*;
+  abstract member-signature method cast<R extends core::Object* = dynamic>() → asy::Stream<self::MyStream::cast::R*>*;
+  abstract member-signature method toList() → asy::Future<core::List<self::MyStream::T*>*>*;
+  abstract member-signature method toSet() → asy::Future<core::Set<self::MyStream::T*>*>*;
+  abstract member-signature method drain<E extends core::Object* = dynamic>([self::MyStream::drain::E* futureValue = #C1]) → asy::Future<self::MyStream::drain::E*>*;
+  abstract member-signature method take(core::int* count) → asy::Stream<self::MyStream::T*>*;
+  abstract member-signature method takeWhile((self::MyStream::T*) →* core::bool* test) → asy::Stream<self::MyStream::T*>*;
+  abstract member-signature method skip(core::int* count) → asy::Stream<self::MyStream::T*>*;
+  abstract member-signature method skipWhile((self::MyStream::T*) →* core::bool* test) → asy::Stream<self::MyStream::T*>*;
+  abstract member-signature method distinct([(self::MyStream::T*, self::MyStream::T*) →* core::bool* equals = #C1]) → asy::Stream<self::MyStream::T*>*;
+  abstract member-signature get first() → asy::Future<self::MyStream::T*>*;
+  abstract member-signature get last() → asy::Future<self::MyStream::T*>*;
+  abstract member-signature get single() → asy::Future<self::MyStream::T*>*;
+  abstract member-signature method firstWhere((self::MyStream::T*) →* core::bool* test, {generic-covariant-impl () →* self::MyStream::T* orElse = #C1}) → asy::Future<self::MyStream::T*>*;
+  abstract member-signature method lastWhere((self::MyStream::T*) →* core::bool* test, {generic-covariant-impl () →* self::MyStream::T* orElse = #C1}) → asy::Future<self::MyStream::T*>*;
+  abstract member-signature method singleWhere((self::MyStream::T*) →* core::bool* test, {generic-covariant-impl () →* self::MyStream::T* orElse = #C1}) → asy::Future<self::MyStream::T*>*;
+  abstract member-signature method elementAt(core::int* index) → asy::Future<self::MyStream::T*>*;
+  abstract member-signature method timeout(core::Duration* timeLimit, {(asy::EventSink<self::MyStream::T*>*) →* void onTimeout = #C1}) → asy::Stream<self::MyStream::T*>*;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method F<T extends core::Object* = dynamic>() → self::F::T*
   return null;
@@ -51,3 +98,8 @@
   await for (core::int* x in self::MyStream::•<core::int*>()) {
   }
 }
+
+constants  {
+  #C1 = null
+  #C2 = ""
+}
diff --git a/pkg/front_end/testcases/inference/downwards_inference_for_each.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/downwards_inference_for_each.dart.strong.transformed.expect
index 99eb58d..d5efbac 100644
--- a/pkg/front_end/testcases/inference/downwards_inference_for_each.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/downwards_inference_for_each.dart.strong.transformed.expect
@@ -9,6 +9,53 @@
 abstract class MyStream<T extends core::Object* = dynamic> extends asy::Stream<self::MyStream::T*> {
   static factory •<T extends core::Object* = dynamic>() → self::MyStream<self::MyStream::•::T*>*
     return null;
+  abstract member-signature get isBroadcast() → core::bool*;
+  abstract member-signature method asBroadcastStream({(asy::StreamSubscription<self::MyStream::T*>*) →* void onListen = #C1, (asy::StreamSubscription<self::MyStream::T*>*) →* void onCancel = #C1}) → asy::Stream<self::MyStream::T*>*;
+  abstract member-signature method listen((self::MyStream::T*) →* void onData, {core::Function* onError = #C1, () →* void onDone = #C1, core::bool* cancelOnError = #C1}) → asy::StreamSubscription<self::MyStream::T*>*;
+  abstract member-signature method where((self::MyStream::T*) →* core::bool* test) → asy::Stream<self::MyStream::T*>*;
+  abstract member-signature method map<S extends core::Object* = dynamic>((self::MyStream::T*) →* self::MyStream::map::S* convert) → asy::Stream<self::MyStream::map::S*>*;
+  abstract member-signature method asyncMap<E extends core::Object* = dynamic>((self::MyStream::T*) →* asy::FutureOr<self::MyStream::asyncMap::E*>* convert) → asy::Stream<self::MyStream::asyncMap::E*>*;
+  abstract member-signature method asyncExpand<E extends core::Object* = dynamic>((self::MyStream::T*) →* asy::Stream<self::MyStream::asyncExpand::E*>* convert) → asy::Stream<self::MyStream::asyncExpand::E*>*;
+  abstract member-signature method handleError(core::Function* onError, {(dynamic) →* core::bool* test = #C1}) → asy::Stream<self::MyStream::T*>*;
+  abstract member-signature method expand<S extends core::Object* = dynamic>((self::MyStream::T*) →* core::Iterable<self::MyStream::expand::S*>* convert) → asy::Stream<self::MyStream::expand::S*>*;
+  abstract member-signature method pipe(generic-covariant-impl asy::StreamConsumer<self::MyStream::T*>* streamConsumer) → asy::Future<dynamic>*;
+  abstract member-signature method transform<S extends core::Object* = dynamic>(generic-covariant-impl asy::StreamTransformer<self::MyStream::T*, self::MyStream::transform::S*>* streamTransformer) → asy::Stream<self::MyStream::transform::S*>*;
+  abstract member-signature method reduce(generic-covariant-impl (self::MyStream::T*, self::MyStream::T*) →* self::MyStream::T* combine) → asy::Future<self::MyStream::T*>*;
+  abstract member-signature method fold<S extends core::Object* = dynamic>(self::MyStream::fold::S* initialValue, (self::MyStream::fold::S*, self::MyStream::T*) →* self::MyStream::fold::S* combine) → asy::Future<self::MyStream::fold::S*>*;
+  abstract member-signature method join([core::String* separator = #C2]) → asy::Future<core::String*>*;
+  abstract member-signature method contains(core::Object* needle) → asy::Future<core::bool*>*;
+  abstract member-signature method forEach((self::MyStream::T*) →* void action) → asy::Future<dynamic>*;
+  abstract member-signature method every((self::MyStream::T*) →* core::bool* test) → asy::Future<core::bool*>*;
+  abstract member-signature method any((self::MyStream::T*) →* core::bool* test) → asy::Future<core::bool*>*;
+  abstract member-signature get length() → asy::Future<core::int*>*;
+  abstract member-signature get isEmpty() → asy::Future<core::bool*>*;
+  abstract member-signature method cast<R extends core::Object* = dynamic>() → asy::Stream<self::MyStream::cast::R*>*;
+  abstract member-signature method toList() → asy::Future<core::List<self::MyStream::T*>*>*;
+  abstract member-signature method toSet() → asy::Future<core::Set<self::MyStream::T*>*>*;
+  abstract member-signature method drain<E extends core::Object* = dynamic>([self::MyStream::drain::E* futureValue = #C1]) → asy::Future<self::MyStream::drain::E*>*;
+  abstract member-signature method take(core::int* count) → asy::Stream<self::MyStream::T*>*;
+  abstract member-signature method takeWhile((self::MyStream::T*) →* core::bool* test) → asy::Stream<self::MyStream::T*>*;
+  abstract member-signature method skip(core::int* count) → asy::Stream<self::MyStream::T*>*;
+  abstract member-signature method skipWhile((self::MyStream::T*) →* core::bool* test) → asy::Stream<self::MyStream::T*>*;
+  abstract member-signature method distinct([(self::MyStream::T*, self::MyStream::T*) →* core::bool* equals = #C1]) → asy::Stream<self::MyStream::T*>*;
+  abstract member-signature get first() → asy::Future<self::MyStream::T*>*;
+  abstract member-signature get last() → asy::Future<self::MyStream::T*>*;
+  abstract member-signature get single() → asy::Future<self::MyStream::T*>*;
+  abstract member-signature method firstWhere((self::MyStream::T*) →* core::bool* test, {generic-covariant-impl () →* self::MyStream::T* orElse = #C1}) → asy::Future<self::MyStream::T*>*;
+  abstract member-signature method lastWhere((self::MyStream::T*) →* core::bool* test, {generic-covariant-impl () →* self::MyStream::T* orElse = #C1}) → asy::Future<self::MyStream::T*>*;
+  abstract member-signature method singleWhere((self::MyStream::T*) →* core::bool* test, {generic-covariant-impl () →* self::MyStream::T* orElse = #C1}) → asy::Future<self::MyStream::T*>*;
+  abstract member-signature method elementAt(core::int* index) → asy::Future<self::MyStream::T*>*;
+  abstract member-signature method timeout(core::Duration* timeLimit, {(asy::EventSink<self::MyStream::T*>*) →* void onTimeout = #C1}) → asy::Stream<self::MyStream::T*>*;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method F<T extends core::Object* = dynamic>() → self::F::T*
   return null;
@@ -78,7 +125,7 @@
             while (true) {
               dynamic #t3 = asy::_asyncStarMoveNextHelper(:stream);
               [yield] let dynamic #t4 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::moveNext}(), :async_op_then, :async_op_error, :async_op) in null;
-              if(_in::unsafeCast<core::bool*>(:result)) {
+              if(_in::unsafeCast<core::bool>(:result)) {
                 dynamic x = :for-iterator.{asy::_StreamIterator::current};
                 {}
               }
@@ -100,7 +147,7 @@
             while (true) {
               dynamic #t6 = asy::_asyncStarMoveNextHelper(:stream);
               [yield] let dynamic #t7 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::moveNext}(), :async_op_then, :async_op_error, :async_op) in null;
-              if(_in::unsafeCast<core::bool*>(:result)) {
+              if(_in::unsafeCast<core::bool>(:result)) {
                 dynamic x = :for-iterator.{asy::_StreamIterator::current};
                 {}
               }
@@ -122,7 +169,7 @@
             while (true) {
               dynamic #t9 = asy::_asyncStarMoveNextHelper(:stream);
               [yield] let dynamic #t10 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::moveNext}(), :async_op_then, :async_op_error, :async_op) in null;
-              if(_in::unsafeCast<core::bool*>(:result)) {
+              if(_in::unsafeCast<core::bool>(:result)) {
                 core::Object* x = :for-iterator.{asy::_StreamIterator::current};
                 {}
               }
@@ -144,7 +191,7 @@
             while (true) {
               dynamic #t12 = asy::_asyncStarMoveNextHelper(:stream);
               [yield] let dynamic #t13 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::moveNext}(), :async_op_then, :async_op_error, :async_op) in null;
-              if(_in::unsafeCast<core::bool*>(:result)) {
+              if(_in::unsafeCast<core::bool>(:result)) {
                 final dynamic #t14 = :for-iterator.{asy::_StreamIterator::current};
                 {
                   d = #t14;
@@ -168,7 +215,7 @@
             while (true) {
               dynamic #t16 = asy::_asyncStarMoveNextHelper(:stream);
               [yield] let dynamic #t17 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::moveNext}(), :async_op_then, :async_op_error, :async_op) in null;
-              if(_in::unsafeCast<core::bool*>(:result)) {
+              if(_in::unsafeCast<core::bool>(:result)) {
                 final core::Object* #t18 = :for-iterator.{asy::_StreamIterator::current};
                 {
                   o = #t18;
@@ -187,8 +234,8 @@
       asy::_completeOnAsyncReturn(:async_completer, :return_value);
       return;
     }
-    on dynamic catch(dynamic :exception, core::StackTrace* :stack_trace) {
-      :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+    on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
+      :async_completer.{asy::Completer::completeError}(exception, stack_trace);
     }
   :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
@@ -242,7 +289,7 @@
             while (true) {
               dynamic #t20 = asy::_asyncStarMoveNextHelper(:stream);
               [yield] let dynamic #t21 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::moveNext}(), :async_op_then, :async_op_error, :async_op) in null;
-              if(_in::unsafeCast<core::bool*>(:result)) {
+              if(_in::unsafeCast<core::bool>(:result)) {
                 core::int* x = :for-iterator.{asy::_StreamIterator::current};
                 {}
               }
@@ -264,7 +311,7 @@
             while (true) {
               dynamic #t23 = asy::_asyncStarMoveNextHelper(:stream);
               [yield] let dynamic #t24 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::moveNext}(), :async_op_then, :async_op_error, :async_op) in null;
-              if(_in::unsafeCast<core::bool*>(:result)) {
+              if(_in::unsafeCast<core::bool>(:result)) {
                 core::int* x = :for-iterator.{asy::_StreamIterator::current};
                 {}
               }
@@ -281,8 +328,8 @@
       asy::_completeOnAsyncReturn(:async_completer, :return_value);
       return;
     }
-    on dynamic catch(dynamic :exception, core::StackTrace* :stack_trace) {
-      :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+    on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
+      :async_completer.{asy::Completer::completeError}(exception, stack_trace);
     }
   :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
@@ -290,3 +337,8 @@
   :async_completer.{asy::_AsyncAwaitCompleter::start}(:async_op);
   return :async_completer.{asy::Completer::future};
 }
+
+constants  {
+  #C1 = null
+  #C2 = ""
+}
diff --git a/pkg/front_end/testcases/inference/downwards_inference_initializing_formal_default_formal.dart.outline.expect b/pkg/front_end/testcases/inference/downwards_inference_initializing_formal_default_formal.dart.outline.expect
index 2f4353d..b1120a4 100644
--- a/pkg/front_end/testcases/inference/downwards_inference_initializing_formal_default_formal.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/downwards_inference_initializing_formal_default_formal.dart.outline.expect
@@ -9,6 +9,16 @@
     ;
   constructor named([core::List<core::int*>* x]) → self::Foo*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field ([core::List<core::int*>*]) →* core::String* g;
 static method f([core::List<core::int*>* l]) → void
diff --git a/pkg/front_end/testcases/inference/downwards_inference_initializing_formal_default_formal.dart.strong.expect b/pkg/front_end/testcases/inference/downwards_inference_initializing_formal_default_formal.dart.strong.expect
index 2cfdda7..58e6e6d 100644
--- a/pkg/front_end/testcases/inference/downwards_inference_initializing_formal_default_formal.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/downwards_inference_initializing_formal_default_formal.dart.strong.expect
@@ -11,6 +11,16 @@
   constructor named([core::List<core::int*>* x = #C2]) → self::Foo*
     : self::Foo::x = null, super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field ([core::List<core::int*>*]) →* core::String* g = ([core::List<core::int*>* llll = #C2]) → core::String* => "hello";
 static method f([core::List<core::int*>* l = #C2]) → void {}
diff --git a/pkg/front_end/testcases/inference/downwards_inference_initializing_formal_default_formal.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/downwards_inference_initializing_formal_default_formal.dart.strong.transformed.expect
index 2cfdda7..58e6e6d 100644
--- a/pkg/front_end/testcases/inference/downwards_inference_initializing_formal_default_formal.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/downwards_inference_initializing_formal_default_formal.dart.strong.transformed.expect
@@ -11,6 +11,16 @@
   constructor named([core::List<core::int*>* x = #C2]) → self::Foo*
     : self::Foo::x = null, super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field ([core::List<core::int*>*]) →* core::String* g = ([core::List<core::int*>* llll = #C2]) → core::String* => "hello";
 static method f([core::List<core::int*>* l = #C2]) → void {}
diff --git a/pkg/front_end/testcases/inference/downwards_inference_inside_top_level.dart.outline.expect b/pkg/front_end/testcases/inference/downwards_inference_inside_top_level.dart.outline.expect
index 6794a5c..f6febb1 100644
--- a/pkg/front_end/testcases/inference/downwards_inference_inside_top_level.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/downwards_inference_inside_top_level.dart.outline.expect
@@ -6,10 +6,30 @@
   field self::B<core::int*>* b;
   synthetic constructor •() → self::A*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B<T extends core::Object* = dynamic> extends core::Object {
   constructor •(self::B::T* x) → self::B<self::B::T*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field self::A* t1;
 static field core::List<self::B<core::int*>*>* t2;
diff --git a/pkg/front_end/testcases/inference/downwards_inference_inside_top_level.dart.strong.expect b/pkg/front_end/testcases/inference/downwards_inference_inside_top_level.dart.strong.expect
index 2bf5f20..e656b2f 100644
--- a/pkg/front_end/testcases/inference/downwards_inference_inside_top_level.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/downwards_inference_inside_top_level.dart.strong.expect
@@ -7,11 +7,31 @@
   synthetic constructor •() → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B<T extends core::Object* = dynamic> extends core::Object {
   constructor •(self::B::T* x) → self::B<self::B::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field self::A* t1 = let final self::A* #t1 = new self::A::•() in let final void #t2 = #t1.{self::A::b} = new self::B::•<core::int*>(1) in #t1;
 static field core::List<self::B<core::int*>*>* t2 = <self::B<core::int*>*>[new self::B::•<core::int*>(2)];
diff --git a/pkg/front_end/testcases/inference/downwards_inference_inside_top_level.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/downwards_inference_inside_top_level.dart.strong.transformed.expect
index 2bf5f20..e656b2f 100644
--- a/pkg/front_end/testcases/inference/downwards_inference_inside_top_level.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/downwards_inference_inside_top_level.dart.strong.transformed.expect
@@ -7,11 +7,31 @@
   synthetic constructor •() → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B<T extends core::Object* = dynamic> extends core::Object {
   constructor •(self::B::T* x) → self::B<self::B::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field self::A* t1 = let final self::A* #t1 = new self::A::•() in let final void #t2 = #t1.{self::A::b} = new self::B::•<core::int*>(1) in #t1;
 static field core::List<self::B<core::int*>*>* t2 = <self::B<core::int*>*>[new self::B::•<core::int*>(2)];
diff --git a/pkg/front_end/testcases/inference/downwards_inference_inside_top_level_2.dart.outline.expect b/pkg/front_end/testcases/inference/downwards_inference_inside_top_level_2.dart.outline.expect
index 9d0ad6f..f0efa69 100644
--- a/pkg/front_end/testcases/inference/downwards_inference_inside_top_level_2.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/downwards_inference_inside_top_level_2.dart.outline.expect
@@ -5,6 +5,16 @@
 class A<T extends core::Object* = dynamic> extends core::Object {
   constructor •(self::A::T* x) → self::A<self::A::T*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field core::List<self::A<core::int*>*>* t1;
 static method main() → dynamic
diff --git a/pkg/front_end/testcases/inference/downwards_inference_inside_top_level_2.dart.strong.expect b/pkg/front_end/testcases/inference/downwards_inference_inside_top_level_2.dart.strong.expect
index 4a90807..21fdafd 100644
--- a/pkg/front_end/testcases/inference/downwards_inference_inside_top_level_2.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/downwards_inference_inside_top_level_2.dart.strong.expect
@@ -6,6 +6,16 @@
   constructor •(self::A::T* x) → self::A<self::A::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field core::List<self::A<core::int*>*>* t1 = <self::A<core::int*>*>[new self::A::•<core::int*>(1)];
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/downwards_inference_inside_top_level_2.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/downwards_inference_inside_top_level_2.dart.strong.transformed.expect
index 4a90807..21fdafd 100644
--- a/pkg/front_end/testcases/inference/downwards_inference_inside_top_level_2.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/downwards_inference_inside_top_level_2.dart.strong.transformed.expect
@@ -6,6 +6,16 @@
   constructor •(self::A::T* x) → self::A<self::A::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field core::List<self::A<core::int*>*>* t1 = <self::A<core::int*>*>[new self::A::•<core::int*>(1)];
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/downwards_inference_on_constructor_arguments_infer_downwards.dart.outline.expect b/pkg/front_end/testcases/inference/downwards_inference_on_constructor_arguments_infer_downwards.dart.outline.expect
index 3ec491b..b28ebc1 100644
--- a/pkg/front_end/testcases/inference/downwards_inference_on_constructor_arguments_infer_downwards.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/downwards_inference_on_constructor_arguments_infer_downwards.dart.outline.expect
@@ -5,22 +5,72 @@
 class F0 extends core::Object {
   constructor •(core::List<core::int*>* a) → self::F0*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class F1 extends core::Object {
   constructor •({core::List<core::int*>* a}) → self::F1*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class F2 extends core::Object {
   constructor •(core::Iterable<core::int*>* a) → self::F2*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class F3 extends core::Object {
   constructor •(core::Iterable<core::Iterable<core::int*>*>* a) → self::F3*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class F4 extends core::Object {
   constructor •({core::Iterable<core::Iterable<core::int*>*>* a}) → self::F4*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method test() → void
   ;
diff --git a/pkg/front_end/testcases/inference/downwards_inference_on_constructor_arguments_infer_downwards.dart.strong.expect b/pkg/front_end/testcases/inference/downwards_inference_on_constructor_arguments_infer_downwards.dart.strong.expect
index fb74527..ed55d23 100644
--- a/pkg/front_end/testcases/inference/downwards_inference_on_constructor_arguments_infer_downwards.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/downwards_inference_on_constructor_arguments_infer_downwards.dart.strong.expect
@@ -48,22 +48,72 @@
 class F0 extends core::Object {
   constructor •(core::List<core::int*>* a) → self::F0*
     : super core::Object::•() {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class F1 extends core::Object {
   constructor •({core::List<core::int*>* a = #C1}) → self::F1*
     : super core::Object::•() {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class F2 extends core::Object {
   constructor •(core::Iterable<core::int*>* a) → self::F2*
     : super core::Object::•() {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class F3 extends core::Object {
   constructor •(core::Iterable<core::Iterable<core::int*>*>* a) → self::F3*
     : super core::Object::•() {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class F4 extends core::Object {
   constructor •({core::Iterable<core::Iterable<core::int*>*>* a = #C1}) → self::F4*
     : super core::Object::•() {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method test() → void {
   new self::F0::•(<core::int*>[]);
diff --git a/pkg/front_end/testcases/inference/downwards_inference_on_constructor_arguments_infer_downwards.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/downwards_inference_on_constructor_arguments_infer_downwards.dart.strong.transformed.expect
index fb74527..ed55d23 100644
--- a/pkg/front_end/testcases/inference/downwards_inference_on_constructor_arguments_infer_downwards.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/downwards_inference_on_constructor_arguments_infer_downwards.dart.strong.transformed.expect
@@ -48,22 +48,72 @@
 class F0 extends core::Object {
   constructor •(core::List<core::int*>* a) → self::F0*
     : super core::Object::•() {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class F1 extends core::Object {
   constructor •({core::List<core::int*>* a = #C1}) → self::F1*
     : super core::Object::•() {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class F2 extends core::Object {
   constructor •(core::Iterable<core::int*>* a) → self::F2*
     : super core::Object::•() {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class F3 extends core::Object {
   constructor •(core::Iterable<core::Iterable<core::int*>*>* a) → self::F3*
     : super core::Object::•() {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class F4 extends core::Object {
   constructor •({core::Iterable<core::Iterable<core::int*>*>* a = #C1}) → self::F4*
     : super core::Object::•() {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method test() → void {
   new self::F0::•(<core::int*>[]);
diff --git a/pkg/front_end/testcases/inference/downwards_inference_on_generic_constructor_arguments_empty_list.dart.outline.expect b/pkg/front_end/testcases/inference/downwards_inference_on_generic_constructor_arguments_empty_list.dart.outline.expect
index ba76888..b96cea8 100644
--- a/pkg/front_end/testcases/inference/downwards_inference_on_generic_constructor_arguments_empty_list.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/downwards_inference_on_generic_constructor_arguments_empty_list.dart.outline.expect
@@ -5,10 +5,30 @@
 class F3<T extends core::Object* = dynamic> extends core::Object {
   constructor •(core::Iterable<core::Iterable<self::F3::T*>*>* a) → self::F3<self::F3::T*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class F4<T extends core::Object* = dynamic> extends core::Object {
   constructor •({core::Iterable<core::Iterable<self::F4::T*>*>* a}) → self::F4<self::F4::T*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → void
   ;
diff --git a/pkg/front_end/testcases/inference/downwards_inference_on_generic_constructor_arguments_empty_list.dart.strong.expect b/pkg/front_end/testcases/inference/downwards_inference_on_generic_constructor_arguments_empty_list.dart.strong.expect
index f2b4b0c..946d162 100644
--- a/pkg/front_end/testcases/inference/downwards_inference_on_generic_constructor_arguments_empty_list.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/downwards_inference_on_generic_constructor_arguments_empty_list.dart.strong.expect
@@ -5,10 +5,30 @@
 class F3<T extends core::Object* = dynamic> extends core::Object {
   constructor •(core::Iterable<core::Iterable<self::F3::T*>*>* a) → self::F3<self::F3::T*>*
     : super core::Object::•() {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class F4<T extends core::Object* = dynamic> extends core::Object {
   constructor •({core::Iterable<core::Iterable<self::F4::T*>*>* a = #C1}) → self::F4<self::F4::T*>*
     : super core::Object::•() {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → void {
   new self::F3::•<dynamic>(<core::Iterable<dynamic>*>[]);
diff --git a/pkg/front_end/testcases/inference/downwards_inference_on_generic_constructor_arguments_empty_list.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/downwards_inference_on_generic_constructor_arguments_empty_list.dart.strong.transformed.expect
index f2b4b0c..946d162 100644
--- a/pkg/front_end/testcases/inference/downwards_inference_on_generic_constructor_arguments_empty_list.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/downwards_inference_on_generic_constructor_arguments_empty_list.dart.strong.transformed.expect
@@ -5,10 +5,30 @@
 class F3<T extends core::Object* = dynamic> extends core::Object {
   constructor •(core::Iterable<core::Iterable<self::F3::T*>*>* a) → self::F3<self::F3::T*>*
     : super core::Object::•() {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class F4<T extends core::Object* = dynamic> extends core::Object {
   constructor •({core::Iterable<core::Iterable<self::F4::T*>*>* a = #C1}) → self::F4<self::F4::T*>*
     : super core::Object::•() {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → void {
   new self::F3::•<dynamic>(<core::Iterable<dynamic>*>[]);
diff --git a/pkg/front_end/testcases/inference/downwards_inference_on_generic_constructor_arguments_infer_downwards.dart.outline.expect b/pkg/front_end/testcases/inference/downwards_inference_on_generic_constructor_arguments_infer_downwards.dart.outline.expect
index c651d5f..63bb6bc 100644
--- a/pkg/front_end/testcases/inference/downwards_inference_on_generic_constructor_arguments_infer_downwards.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/downwards_inference_on_generic_constructor_arguments_infer_downwards.dart.outline.expect
@@ -5,22 +5,72 @@
 class F0<T extends core::Object* = dynamic> extends core::Object {
   constructor •(core::List<self::F0::T*>* a) → self::F0<self::F0::T*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class F1<T extends core::Object* = dynamic> extends core::Object {
   constructor •({core::List<self::F1::T*>* a}) → self::F1<self::F1::T*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class F2<T extends core::Object* = dynamic> extends core::Object {
   constructor •(core::Iterable<self::F2::T*>* a) → self::F2<self::F2::T*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class F3<T extends core::Object* = dynamic> extends core::Object {
   constructor •(core::Iterable<core::Iterable<self::F3::T*>*>* a) → self::F3<self::F3::T*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class F4<T extends core::Object* = dynamic> extends core::Object {
   constructor •({core::Iterable<core::Iterable<self::F4::T*>*>* a}) → self::F4<self::F4::T*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method test() → void
   ;
diff --git a/pkg/front_end/testcases/inference/downwards_inference_on_generic_constructor_arguments_infer_downwards.dart.strong.expect b/pkg/front_end/testcases/inference/downwards_inference_on_generic_constructor_arguments_infer_downwards.dart.strong.expect
index c46c3b5..c1d1dae 100644
--- a/pkg/front_end/testcases/inference/downwards_inference_on_generic_constructor_arguments_infer_downwards.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/downwards_inference_on_generic_constructor_arguments_infer_downwards.dart.strong.expect
@@ -48,22 +48,72 @@
 class F0<T extends core::Object* = dynamic> extends core::Object {
   constructor •(core::List<self::F0::T*>* a) → self::F0<self::F0::T*>*
     : super core::Object::•() {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class F1<T extends core::Object* = dynamic> extends core::Object {
   constructor •({core::List<self::F1::T*>* a = #C1}) → self::F1<self::F1::T*>*
     : super core::Object::•() {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class F2<T extends core::Object* = dynamic> extends core::Object {
   constructor •(core::Iterable<self::F2::T*>* a) → self::F2<self::F2::T*>*
     : super core::Object::•() {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class F3<T extends core::Object* = dynamic> extends core::Object {
   constructor •(core::Iterable<core::Iterable<self::F3::T*>*>* a) → self::F3<self::F3::T*>*
     : super core::Object::•() {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class F4<T extends core::Object* = dynamic> extends core::Object {
   constructor •({core::Iterable<core::Iterable<self::F4::T*>*>* a = #C1}) → self::F4<self::F4::T*>*
     : super core::Object::•() {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method test() → void {
   new self::F0::•<core::int*>(<core::int*>[]);
diff --git a/pkg/front_end/testcases/inference/downwards_inference_on_generic_constructor_arguments_infer_downwards.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/downwards_inference_on_generic_constructor_arguments_infer_downwards.dart.strong.transformed.expect
index c46c3b5..c1d1dae 100644
--- a/pkg/front_end/testcases/inference/downwards_inference_on_generic_constructor_arguments_infer_downwards.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/downwards_inference_on_generic_constructor_arguments_infer_downwards.dart.strong.transformed.expect
@@ -48,22 +48,72 @@
 class F0<T extends core::Object* = dynamic> extends core::Object {
   constructor •(core::List<self::F0::T*>* a) → self::F0<self::F0::T*>*
     : super core::Object::•() {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class F1<T extends core::Object* = dynamic> extends core::Object {
   constructor •({core::List<self::F1::T*>* a = #C1}) → self::F1<self::F1::T*>*
     : super core::Object::•() {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class F2<T extends core::Object* = dynamic> extends core::Object {
   constructor •(core::Iterable<self::F2::T*>* a) → self::F2<self::F2::T*>*
     : super core::Object::•() {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class F3<T extends core::Object* = dynamic> extends core::Object {
   constructor •(core::Iterable<core::Iterable<self::F3::T*>*>* a) → self::F3<self::F3::T*>*
     : super core::Object::•() {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class F4<T extends core::Object* = dynamic> extends core::Object {
   constructor •({core::Iterable<core::Iterable<self::F4::T*>*>* a = #C1}) → self::F4<self::F4::T*>*
     : super core::Object::•() {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method test() → void {
   new self::F0::•<core::int*>(<core::int*>[]);
diff --git a/pkg/front_end/testcases/inference/downwards_inference_on_instance_creations_infer_downwards.dart.outline.expect b/pkg/front_end/testcases/inference/downwards_inference_on_instance_creations_infer_downwards.dart.outline.expect
index 2bf3613..89e2b0f 100644
--- a/pkg/front_end/testcases/inference/downwards_inference_on_instance_creations_infer_downwards.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/downwards_inference_on_instance_creations_infer_downwards.dart.outline.expect
@@ -9,6 +9,16 @@
     ;
   constructor named(self::A::S* x, self::A::T* y) → self::A<self::A::S*, self::A::T*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B<S extends core::Object* = dynamic, T extends core::Object* = dynamic> extends self::A<self::B::T*, self::B::S*> {
   constructor •(self::B::S* y, self::B::T* x) → self::B<self::B::S*, self::B::T*>*
diff --git a/pkg/front_end/testcases/inference/downwards_inference_on_instance_creations_infer_downwards.dart.strong.expect b/pkg/front_end/testcases/inference/downwards_inference_on_instance_creations_infer_downwards.dart.strong.expect
index 7a22f09..0158338 100644
--- a/pkg/front_end/testcases/inference/downwards_inference_on_instance_creations_infer_downwards.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/downwards_inference_on_instance_creations_infer_downwards.dart.strong.expect
@@ -130,6 +130,16 @@
   constructor named(self::A::S* x, self::A::T* y) → self::A<self::A::S*, self::A::T*>*
     : self::A::x = x, self::A::y = y, super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B<S extends core::Object* = dynamic, T extends core::Object* = dynamic> extends self::A<self::B::T*, self::B::S*> {
   constructor •(self::B::S* y, self::B::T* x) → self::B<self::B::S*, self::B::T*>*
diff --git a/pkg/front_end/testcases/inference/downwards_inference_on_instance_creations_infer_downwards.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/downwards_inference_on_instance_creations_infer_downwards.dart.strong.transformed.expect
index 7a22f09..0158338 100644
--- a/pkg/front_end/testcases/inference/downwards_inference_on_instance_creations_infer_downwards.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/downwards_inference_on_instance_creations_infer_downwards.dart.strong.transformed.expect
@@ -130,6 +130,16 @@
   constructor named(self::A::S* x, self::A::T* y) → self::A<self::A::S*, self::A::T*>*
     : self::A::x = x, self::A::y = y, super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B<S extends core::Object* = dynamic, T extends core::Object* = dynamic> extends self::A<self::B::T*, self::B::S*> {
   constructor •(self::B::S* y, self::B::T* x) → self::B<self::B::S*, self::B::T*>*
diff --git a/pkg/front_end/testcases/inference/downwards_inference_on_list_literals_infer_if_value_types_match_context.dart.outline.expect b/pkg/front_end/testcases/inference/downwards_inference_on_list_literals_infer_if_value_types_match_context.dart.outline.expect
index ab7413c..90e0620 100644
--- a/pkg/front_end/testcases/inference/downwards_inference_on_list_literals_infer_if_value_types_match_context.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/downwards_inference_on_list_literals_infer_if_value_types_match_context.dart.outline.expect
@@ -7,6 +7,16 @@
 class DartType extends core::Object {
   synthetic constructor •() → self::DartType*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class C extends core::Object {
   static field (core::List<(self::DartType*) →* void>*) →* (self::DartType*) →* void assertBOf;
@@ -18,6 +28,16 @@
   abstract get assertDOf() → (core::List<(self::DartType*) →* void>*) →* (self::DartType*) →* void;
   method method((core::List<(self::DartType*) →* void>*) →* (self::DartType*) →* void assertEOf) → dynamic
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class G<T extends core::Object* = dynamic> extends core::Object {
   field (core::List<(self::DartType*) →* void>*) →* (self::DartType*) →* void assertAOf;
@@ -26,6 +46,16 @@
   abstract get assertDOf() → (core::List<(self::DartType*) →* void>*) →* (self::DartType*) →* void;
   method method((core::List<(self::DartType*) →* void>*) →* (self::DartType*) →* void assertEOf) → dynamic
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field (self::DartType*) →* void _isInt;
 static field (self::DartType*) →* void _isString;
diff --git a/pkg/front_end/testcases/inference/downwards_inference_on_list_literals_infer_if_value_types_match_context.dart.strong.expect b/pkg/front_end/testcases/inference/downwards_inference_on_list_literals_infer_if_value_types_match_context.dart.strong.expect
index 2fdde05..9152496 100644
--- a/pkg/front_end/testcases/inference/downwards_inference_on_list_literals_infer_if_value_types_match_context.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/downwards_inference_on_list_literals_infer_if_value_types_match_context.dart.strong.expect
@@ -8,6 +8,16 @@
   synthetic constructor •() → self::DartType*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class C extends core::Object {
   static field (core::List<(self::DartType*) →* void>*) →* (self::DartType*) →* void assertBOf = null;
@@ -25,6 +35,16 @@
     let final core::List<(self::DartType*) →* void>* #t2 = <(self::DartType*) →* void>[self::_isInt, self::_isString] in this.{self::C::assertDOf}.call(#t2);
     assertEOf.call(<(self::DartType*) →* void>[self::_isInt, self::_isString]);
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class G<T extends core::Object* = dynamic> extends core::Object {
   field (core::List<(self::DartType*) →* void>*) →* (self::DartType*) →* void assertAOf = null;
@@ -38,6 +58,16 @@
     let final core::List<(self::DartType*) →* void>* #t5 = <(self::DartType*) →* void>[self::_isInt, self::_isString] in this.{self::G::assertDOf}.call(#t5);
     assertEOf.call(<(self::DartType*) →* void>[self::_isInt, self::_isString]);
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field (self::DartType*) →* void _isInt;
 static field (self::DartType*) →* void _isString;
diff --git a/pkg/front_end/testcases/inference/downwards_inference_on_list_literals_infer_if_value_types_match_context.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/downwards_inference_on_list_literals_infer_if_value_types_match_context.dart.strong.transformed.expect
index 2fdde05..9152496 100644
--- a/pkg/front_end/testcases/inference/downwards_inference_on_list_literals_infer_if_value_types_match_context.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/downwards_inference_on_list_literals_infer_if_value_types_match_context.dart.strong.transformed.expect
@@ -8,6 +8,16 @@
   synthetic constructor •() → self::DartType*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class C extends core::Object {
   static field (core::List<(self::DartType*) →* void>*) →* (self::DartType*) →* void assertBOf = null;
@@ -25,6 +35,16 @@
     let final core::List<(self::DartType*) →* void>* #t2 = <(self::DartType*) →* void>[self::_isInt, self::_isString] in this.{self::C::assertDOf}.call(#t2);
     assertEOf.call(<(self::DartType*) →* void>[self::_isInt, self::_isString]);
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class G<T extends core::Object* = dynamic> extends core::Object {
   field (core::List<(self::DartType*) →* void>*) →* (self::DartType*) →* void assertAOf = null;
@@ -38,6 +58,16 @@
     let final core::List<(self::DartType*) →* void>* #t5 = <(self::DartType*) →* void>[self::_isInt, self::_isString] in this.{self::G::assertDOf}.call(#t5);
     assertEOf.call(<(self::DartType*) →* void>[self::_isInt, self::_isString]);
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field (self::DartType*) →* void _isInt;
 static field (self::DartType*) →* void _isString;
diff --git a/pkg/front_end/testcases/inference/downwards_inference_yield_yield_star.dart.outline.expect b/pkg/front_end/testcases/inference/downwards_inference_yield_yield_star.dart.outline.expect
index e1e83f3..4e930eb 100644
--- a/pkg/front_end/testcases/inference/downwards_inference_yield_yield_star.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/downwards_inference_yield_yield_star.dart.outline.expect
@@ -8,6 +8,53 @@
 abstract class MyStream<T extends core::Object* = dynamic> extends asy::Stream<self::MyStream::T*> {
   static factory •<T extends core::Object* = dynamic>() → self::MyStream<self::MyStream::•::T*>*
     ;
+  abstract member-signature get isBroadcast() → core::bool*;
+  abstract member-signature method asBroadcastStream({(asy::StreamSubscription<self::MyStream::T*>*) →* void onListen, (asy::StreamSubscription<self::MyStream::T*>*) →* void onCancel}) → asy::Stream<self::MyStream::T*>*;
+  abstract member-signature method listen((self::MyStream::T*) →* void onData, {core::Function* onError, () →* void onDone, core::bool* cancelOnError}) → asy::StreamSubscription<self::MyStream::T*>*;
+  abstract member-signature method where((self::MyStream::T*) →* core::bool* test) → asy::Stream<self::MyStream::T*>*;
+  abstract member-signature method map<S extends core::Object* = dynamic>((self::MyStream::T*) →* self::MyStream::map::S* convert) → asy::Stream<self::MyStream::map::S*>*;
+  abstract member-signature method asyncMap<E extends core::Object* = dynamic>((self::MyStream::T*) →* asy::FutureOr<self::MyStream::asyncMap::E*>* convert) → asy::Stream<self::MyStream::asyncMap::E*>*;
+  abstract member-signature method asyncExpand<E extends core::Object* = dynamic>((self::MyStream::T*) →* asy::Stream<self::MyStream::asyncExpand::E*>* convert) → asy::Stream<self::MyStream::asyncExpand::E*>*;
+  abstract member-signature method handleError(core::Function* onError, {(dynamic) →* core::bool* test}) → asy::Stream<self::MyStream::T*>*;
+  abstract member-signature method expand<S extends core::Object* = dynamic>((self::MyStream::T*) →* core::Iterable<self::MyStream::expand::S*>* convert) → asy::Stream<self::MyStream::expand::S*>*;
+  abstract member-signature method pipe(generic-covariant-impl asy::StreamConsumer<self::MyStream::T*>* streamConsumer) → asy::Future<dynamic>*;
+  abstract member-signature method transform<S extends core::Object* = dynamic>(generic-covariant-impl asy::StreamTransformer<self::MyStream::T*, self::MyStream::transform::S*>* streamTransformer) → asy::Stream<self::MyStream::transform::S*>*;
+  abstract member-signature method reduce(generic-covariant-impl (self::MyStream::T*, self::MyStream::T*) →* self::MyStream::T* combine) → asy::Future<self::MyStream::T*>*;
+  abstract member-signature method fold<S extends core::Object* = dynamic>(self::MyStream::fold::S* initialValue, (self::MyStream::fold::S*, self::MyStream::T*) →* self::MyStream::fold::S* combine) → asy::Future<self::MyStream::fold::S*>*;
+  abstract member-signature method join([core::String* separator]) → asy::Future<core::String*>*;
+  abstract member-signature method contains(core::Object* needle) → asy::Future<core::bool*>*;
+  abstract member-signature method forEach((self::MyStream::T*) →* void action) → asy::Future<dynamic>*;
+  abstract member-signature method every((self::MyStream::T*) →* core::bool* test) → asy::Future<core::bool*>*;
+  abstract member-signature method any((self::MyStream::T*) →* core::bool* test) → asy::Future<core::bool*>*;
+  abstract member-signature get length() → asy::Future<core::int*>*;
+  abstract member-signature get isEmpty() → asy::Future<core::bool*>*;
+  abstract member-signature method cast<R extends core::Object* = dynamic>() → asy::Stream<self::MyStream::cast::R*>*;
+  abstract member-signature method toList() → asy::Future<core::List<self::MyStream::T*>*>*;
+  abstract member-signature method toSet() → asy::Future<core::Set<self::MyStream::T*>*>*;
+  abstract member-signature method drain<E extends core::Object* = dynamic>([self::MyStream::drain::E* futureValue]) → asy::Future<self::MyStream::drain::E*>*;
+  abstract member-signature method take(core::int* count) → asy::Stream<self::MyStream::T*>*;
+  abstract member-signature method takeWhile((self::MyStream::T*) →* core::bool* test) → asy::Stream<self::MyStream::T*>*;
+  abstract member-signature method skip(core::int* count) → asy::Stream<self::MyStream::T*>*;
+  abstract member-signature method skipWhile((self::MyStream::T*) →* core::bool* test) → asy::Stream<self::MyStream::T*>*;
+  abstract member-signature method distinct([(self::MyStream::T*, self::MyStream::T*) →* core::bool* equals]) → asy::Stream<self::MyStream::T*>*;
+  abstract member-signature get first() → asy::Future<self::MyStream::T*>*;
+  abstract member-signature get last() → asy::Future<self::MyStream::T*>*;
+  abstract member-signature get single() → asy::Future<self::MyStream::T*>*;
+  abstract member-signature method firstWhere((self::MyStream::T*) →* core::bool* test, {generic-covariant-impl () →* self::MyStream::T* orElse}) → asy::Future<self::MyStream::T*>*;
+  abstract member-signature method lastWhere((self::MyStream::T*) →* core::bool* test, {generic-covariant-impl () →* self::MyStream::T* orElse}) → asy::Future<self::MyStream::T*>*;
+  abstract member-signature method singleWhere((self::MyStream::T*) →* core::bool* test, {generic-covariant-impl () →* self::MyStream::T* orElse}) → asy::Future<self::MyStream::T*>*;
+  abstract member-signature method elementAt(core::int* index) → asy::Future<self::MyStream::T*>*;
+  abstract member-signature method timeout(core::Duration* timeLimit, {(asy::EventSink<self::MyStream::T*>*) →* void onTimeout}) → asy::Stream<self::MyStream::T*>*;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method foo() → asy::Stream<core::List<core::int*>*>*
   ;
diff --git a/pkg/front_end/testcases/inference/downwards_inference_yield_yield_star.dart.strong.expect b/pkg/front_end/testcases/inference/downwards_inference_yield_yield_star.dart.strong.expect
index a07fb00..c107453 100644
--- a/pkg/front_end/testcases/inference/downwards_inference_yield_yield_star.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/downwards_inference_yield_yield_star.dart.strong.expect
@@ -35,6 +35,53 @@
 abstract class MyStream<T extends core::Object* = dynamic> extends asy::Stream<self::MyStream::T*> {
   static factory •<T extends core::Object* = dynamic>() → self::MyStream<self::MyStream::•::T*>*
     return null;
+  abstract member-signature get isBroadcast() → core::bool*;
+  abstract member-signature method asBroadcastStream({(asy::StreamSubscription<self::MyStream::T*>*) →* void onListen = #C1, (asy::StreamSubscription<self::MyStream::T*>*) →* void onCancel = #C1}) → asy::Stream<self::MyStream::T*>*;
+  abstract member-signature method listen((self::MyStream::T*) →* void onData, {core::Function* onError = #C1, () →* void onDone = #C1, core::bool* cancelOnError = #C1}) → asy::StreamSubscription<self::MyStream::T*>*;
+  abstract member-signature method where((self::MyStream::T*) →* core::bool* test) → asy::Stream<self::MyStream::T*>*;
+  abstract member-signature method map<S extends core::Object* = dynamic>((self::MyStream::T*) →* self::MyStream::map::S* convert) → asy::Stream<self::MyStream::map::S*>*;
+  abstract member-signature method asyncMap<E extends core::Object* = dynamic>((self::MyStream::T*) →* asy::FutureOr<self::MyStream::asyncMap::E*>* convert) → asy::Stream<self::MyStream::asyncMap::E*>*;
+  abstract member-signature method asyncExpand<E extends core::Object* = dynamic>((self::MyStream::T*) →* asy::Stream<self::MyStream::asyncExpand::E*>* convert) → asy::Stream<self::MyStream::asyncExpand::E*>*;
+  abstract member-signature method handleError(core::Function* onError, {(dynamic) →* core::bool* test = #C1}) → asy::Stream<self::MyStream::T*>*;
+  abstract member-signature method expand<S extends core::Object* = dynamic>((self::MyStream::T*) →* core::Iterable<self::MyStream::expand::S*>* convert) → asy::Stream<self::MyStream::expand::S*>*;
+  abstract member-signature method pipe(generic-covariant-impl asy::StreamConsumer<self::MyStream::T*>* streamConsumer) → asy::Future<dynamic>*;
+  abstract member-signature method transform<S extends core::Object* = dynamic>(generic-covariant-impl asy::StreamTransformer<self::MyStream::T*, self::MyStream::transform::S*>* streamTransformer) → asy::Stream<self::MyStream::transform::S*>*;
+  abstract member-signature method reduce(generic-covariant-impl (self::MyStream::T*, self::MyStream::T*) →* self::MyStream::T* combine) → asy::Future<self::MyStream::T*>*;
+  abstract member-signature method fold<S extends core::Object* = dynamic>(self::MyStream::fold::S* initialValue, (self::MyStream::fold::S*, self::MyStream::T*) →* self::MyStream::fold::S* combine) → asy::Future<self::MyStream::fold::S*>*;
+  abstract member-signature method join([core::String* separator = #C2]) → asy::Future<core::String*>*;
+  abstract member-signature method contains(core::Object* needle) → asy::Future<core::bool*>*;
+  abstract member-signature method forEach((self::MyStream::T*) →* void action) → asy::Future<dynamic>*;
+  abstract member-signature method every((self::MyStream::T*) →* core::bool* test) → asy::Future<core::bool*>*;
+  abstract member-signature method any((self::MyStream::T*) →* core::bool* test) → asy::Future<core::bool*>*;
+  abstract member-signature get length() → asy::Future<core::int*>*;
+  abstract member-signature get isEmpty() → asy::Future<core::bool*>*;
+  abstract member-signature method cast<R extends core::Object* = dynamic>() → asy::Stream<self::MyStream::cast::R*>*;
+  abstract member-signature method toList() → asy::Future<core::List<self::MyStream::T*>*>*;
+  abstract member-signature method toSet() → asy::Future<core::Set<self::MyStream::T*>*>*;
+  abstract member-signature method drain<E extends core::Object* = dynamic>([self::MyStream::drain::E* futureValue = #C1]) → asy::Future<self::MyStream::drain::E*>*;
+  abstract member-signature method take(core::int* count) → asy::Stream<self::MyStream::T*>*;
+  abstract member-signature method takeWhile((self::MyStream::T*) →* core::bool* test) → asy::Stream<self::MyStream::T*>*;
+  abstract member-signature method skip(core::int* count) → asy::Stream<self::MyStream::T*>*;
+  abstract member-signature method skipWhile((self::MyStream::T*) →* core::bool* test) → asy::Stream<self::MyStream::T*>*;
+  abstract member-signature method distinct([(self::MyStream::T*, self::MyStream::T*) →* core::bool* equals = #C1]) → asy::Stream<self::MyStream::T*>*;
+  abstract member-signature get first() → asy::Future<self::MyStream::T*>*;
+  abstract member-signature get last() → asy::Future<self::MyStream::T*>*;
+  abstract member-signature get single() → asy::Future<self::MyStream::T*>*;
+  abstract member-signature method firstWhere((self::MyStream::T*) →* core::bool* test, {generic-covariant-impl () →* self::MyStream::T* orElse = #C1}) → asy::Future<self::MyStream::T*>*;
+  abstract member-signature method lastWhere((self::MyStream::T*) →* core::bool* test, {generic-covariant-impl () →* self::MyStream::T* orElse = #C1}) → asy::Future<self::MyStream::T*>*;
+  abstract member-signature method singleWhere((self::MyStream::T*) →* core::bool* test, {generic-covariant-impl () →* self::MyStream::T* orElse = #C1}) → asy::Future<self::MyStream::T*>*;
+  abstract member-signature method elementAt(core::int* index) → asy::Future<self::MyStream::T*>*;
+  abstract member-signature method timeout(core::Duration* timeLimit, {(asy::EventSink<self::MyStream::T*>*) →* void onTimeout = #C1}) → asy::Stream<self::MyStream::T*>*;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method foo() → asy::Stream<core::List<core::int*>*>* async* {
   yield core::List::•<core::int*>();
@@ -65,3 +112,8 @@
   yield* core::List::•<core::Map<core::int*, core::int*>*>();
 }
 static method main() → dynamic {}
+
+constants  {
+  #C1 = null
+  #C2 = ""
+}
diff --git a/pkg/front_end/testcases/inference/downwards_inference_yield_yield_star.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/downwards_inference_yield_yield_star.dart.strong.transformed.expect
index 1dc5905..a13701f 100644
--- a/pkg/front_end/testcases/inference/downwards_inference_yield_yield_star.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/downwards_inference_yield_yield_star.dart.strong.transformed.expect
@@ -35,6 +35,53 @@
 abstract class MyStream<T extends core::Object* = dynamic> extends asy::Stream<self::MyStream::T*> {
   static factory •<T extends core::Object* = dynamic>() → self::MyStream<self::MyStream::•::T*>*
     return null;
+  abstract member-signature get isBroadcast() → core::bool*;
+  abstract member-signature method asBroadcastStream({(asy::StreamSubscription<self::MyStream::T*>*) →* void onListen = #C1, (asy::StreamSubscription<self::MyStream::T*>*) →* void onCancel = #C1}) → asy::Stream<self::MyStream::T*>*;
+  abstract member-signature method listen((self::MyStream::T*) →* void onData, {core::Function* onError = #C1, () →* void onDone = #C1, core::bool* cancelOnError = #C1}) → asy::StreamSubscription<self::MyStream::T*>*;
+  abstract member-signature method where((self::MyStream::T*) →* core::bool* test) → asy::Stream<self::MyStream::T*>*;
+  abstract member-signature method map<S extends core::Object* = dynamic>((self::MyStream::T*) →* self::MyStream::map::S* convert) → asy::Stream<self::MyStream::map::S*>*;
+  abstract member-signature method asyncMap<E extends core::Object* = dynamic>((self::MyStream::T*) →* asy::FutureOr<self::MyStream::asyncMap::E*>* convert) → asy::Stream<self::MyStream::asyncMap::E*>*;
+  abstract member-signature method asyncExpand<E extends core::Object* = dynamic>((self::MyStream::T*) →* asy::Stream<self::MyStream::asyncExpand::E*>* convert) → asy::Stream<self::MyStream::asyncExpand::E*>*;
+  abstract member-signature method handleError(core::Function* onError, {(dynamic) →* core::bool* test = #C1}) → asy::Stream<self::MyStream::T*>*;
+  abstract member-signature method expand<S extends core::Object* = dynamic>((self::MyStream::T*) →* core::Iterable<self::MyStream::expand::S*>* convert) → asy::Stream<self::MyStream::expand::S*>*;
+  abstract member-signature method pipe(generic-covariant-impl asy::StreamConsumer<self::MyStream::T*>* streamConsumer) → asy::Future<dynamic>*;
+  abstract member-signature method transform<S extends core::Object* = dynamic>(generic-covariant-impl asy::StreamTransformer<self::MyStream::T*, self::MyStream::transform::S*>* streamTransformer) → asy::Stream<self::MyStream::transform::S*>*;
+  abstract member-signature method reduce(generic-covariant-impl (self::MyStream::T*, self::MyStream::T*) →* self::MyStream::T* combine) → asy::Future<self::MyStream::T*>*;
+  abstract member-signature method fold<S extends core::Object* = dynamic>(self::MyStream::fold::S* initialValue, (self::MyStream::fold::S*, self::MyStream::T*) →* self::MyStream::fold::S* combine) → asy::Future<self::MyStream::fold::S*>*;
+  abstract member-signature method join([core::String* separator = #C2]) → asy::Future<core::String*>*;
+  abstract member-signature method contains(core::Object* needle) → asy::Future<core::bool*>*;
+  abstract member-signature method forEach((self::MyStream::T*) →* void action) → asy::Future<dynamic>*;
+  abstract member-signature method every((self::MyStream::T*) →* core::bool* test) → asy::Future<core::bool*>*;
+  abstract member-signature method any((self::MyStream::T*) →* core::bool* test) → asy::Future<core::bool*>*;
+  abstract member-signature get length() → asy::Future<core::int*>*;
+  abstract member-signature get isEmpty() → asy::Future<core::bool*>*;
+  abstract member-signature method cast<R extends core::Object* = dynamic>() → asy::Stream<self::MyStream::cast::R*>*;
+  abstract member-signature method toList() → asy::Future<core::List<self::MyStream::T*>*>*;
+  abstract member-signature method toSet() → asy::Future<core::Set<self::MyStream::T*>*>*;
+  abstract member-signature method drain<E extends core::Object* = dynamic>([self::MyStream::drain::E* futureValue = #C1]) → asy::Future<self::MyStream::drain::E*>*;
+  abstract member-signature method take(core::int* count) → asy::Stream<self::MyStream::T*>*;
+  abstract member-signature method takeWhile((self::MyStream::T*) →* core::bool* test) → asy::Stream<self::MyStream::T*>*;
+  abstract member-signature method skip(core::int* count) → asy::Stream<self::MyStream::T*>*;
+  abstract member-signature method skipWhile((self::MyStream::T*) →* core::bool* test) → asy::Stream<self::MyStream::T*>*;
+  abstract member-signature method distinct([(self::MyStream::T*, self::MyStream::T*) →* core::bool* equals = #C1]) → asy::Stream<self::MyStream::T*>*;
+  abstract member-signature get first() → asy::Future<self::MyStream::T*>*;
+  abstract member-signature get last() → asy::Future<self::MyStream::T*>*;
+  abstract member-signature get single() → asy::Future<self::MyStream::T*>*;
+  abstract member-signature method firstWhere((self::MyStream::T*) →* core::bool* test, {generic-covariant-impl () →* self::MyStream::T* orElse = #C1}) → asy::Future<self::MyStream::T*>*;
+  abstract member-signature method lastWhere((self::MyStream::T*) →* core::bool* test, {generic-covariant-impl () →* self::MyStream::T* orElse = #C1}) → asy::Future<self::MyStream::T*>*;
+  abstract member-signature method singleWhere((self::MyStream::T*) →* core::bool* test, {generic-covariant-impl () →* self::MyStream::T* orElse = #C1}) → asy::Future<self::MyStream::T*>*;
+  abstract member-signature method elementAt(core::int* index) → asy::Future<self::MyStream::T*>*;
+  abstract member-signature method timeout(core::Duration* timeLimit, {(asy::EventSink<self::MyStream::T*>*) →* void onTimeout = #C1}) → asy::Stream<self::MyStream::T*>*;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method foo() → asy::Stream<core::List<core::int*>*>* /* originally async* */ {
   asy::_AsyncStarStreamController<core::List<core::int*>*>* :controller;
@@ -78,8 +125,8 @@
         }
         return;
       }
-      on dynamic catch(dynamic :exception, core::StackTrace* :stack_trace) {
-        :controller.{asy::_AsyncStarStreamController::addError}(:exception, :stack_trace);
+      on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
+        :controller.{asy::_AsyncStarStreamController::addError}(exception, stack_trace);
       }
     finally {
       :controller.{asy::_AsyncStarStreamController::close}();
@@ -92,37 +139,44 @@
   return :controller_stream;
 }
 static method bar() → core::Iterable<core::Map<core::int*, core::int*>*>* /* originally sync* */ {
-  core::int* :await_jump_var = 0;
-  dynamic :await_ctx_var;
-  function :sync_op(core::_SyncIterator<core::Map<core::int*, core::int*>*>* :iterator) → core::bool* yielding {
-    {
+  function :sync_op_gen() → (core::_SyncIterator<core::Map<core::int*, core::int*>*>*) →* core::bool* {
+    core::int* :await_jump_var = 0;
+    dynamic :await_ctx_var;
+    return (core::_SyncIterator<core::Map<core::int*, core::int*>*>* :iterator) → core::bool* yielding {
       {
-        :iterator.{core::_SyncIterator::_current} = core::Map::•<core::int*, core::int*>();
-        [yield] true;
-      }
-      {
-        :iterator.{core::_SyncIterator::_current} = let final<BottomType> #t3 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_yield_yield_star.dart:23:69: Error: A value of type 'List<dynamic>' can't be assigned to a variable of type 'Map<int, int>'.
+        {
+          :iterator.{core::_SyncIterator::_current} = core::Map::•<core::int*, core::int*>();
+          [yield] true;
+        }
+        {
+          :iterator.{core::_SyncIterator::_current} = let final<BottomType> #t3 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_yield_yield_star.dart:23:69: Error: A value of type 'List<dynamic>' can't be assigned to a variable of type 'Map<int, int>'.
  - 'List' is from 'dart:core'.
  - 'Map' is from 'dart:core'.
   yield /*error:YIELD_OF_INVALID_TYPE*/ new /*@ typeArgs=dynamic */ List();
                                                                     ^" in core::_GrowableList::•<dynamic>(0) as{TypeError} core::Map<core::int*, core::int*>*;
-        [yield] true;
-      }
-      {
-        :iterator.{core::_SyncIterator::_yieldEachIterable} = let final<BottomType> #t4 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_yield_yield_star.dart:24:79: Error: A value of type 'Map<dynamic, dynamic>' can't be assigned to a variable of type 'Iterable<Map<int, int>>'.
+          [yield] true;
+        }
+        {
+          :iterator.{core::_SyncIterator::_yieldEachIterable} = let final<BottomType> #t4 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_yield_yield_star.dart:24:79: Error: A value of type 'Map<dynamic, dynamic>' can't be assigned to a variable of type 'Iterable<Map<int, int>>'.
  - 'Map' is from 'dart:core'.
  - 'Iterable' is from 'dart:core'.
   yield* /*error:YIELD_OF_INVALID_TYPE*/ new /*@ typeArgs=dynamic, dynamic */ Map();
                                                                               ^" in core::Map::•<dynamic, dynamic>() as{TypeError} core::Iterable<core::Map<core::int*, core::int*>*>*;
-        [yield] true;
+          [yield] true;
+        }
+        {
+          :iterator.{core::_SyncIterator::_yieldEachIterable} = core::_GrowableList::•<core::Map<core::int*, core::int*>*>(0);
+          [yield] true;
+        }
       }
-      {
-        :iterator.{core::_SyncIterator::_yieldEachIterable} = core::_GrowableList::•<core::Map<core::int*, core::int*>*>(0);
-        [yield] true;
-      }
-    }
-    return false;
+      return false;
+    };
   }
-  return new core::_SyncIterable::•<core::Map<core::int*, core::int*>*>(:sync_op);
+  return new core::_SyncIterable::•<core::Map<core::int*, core::int*>*>(:sync_op_gen);
 }
 static method main() → dynamic {}
+
+constants  {
+  #C1 = null
+  #C2 = ""
+}
diff --git a/pkg/front_end/testcases/inference/dynamic_methods.dart.outline.expect b/pkg/front_end/testcases/inference/dynamic_methods.dart.outline.expect
index 9e3bbc2..79b202d 100644
--- a/pkg/front_end/testcases/inference/dynamic_methods.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/dynamic_methods.dart.outline.expect
@@ -7,6 +7,16 @@
     ;
   method foo(core::int* x) → core::int*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method test() → dynamic
   ;
diff --git a/pkg/front_end/testcases/inference/dynamic_methods.dart.strong.expect b/pkg/front_end/testcases/inference/dynamic_methods.dart.strong.expect
index bab54ce..18d5c33 100644
--- a/pkg/front_end/testcases/inference/dynamic_methods.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/dynamic_methods.dart.strong.expect
@@ -15,6 +15,16 @@
     ;
   method foo(core::int* x) → core::int*
     return x;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method test() → dynamic {
   dynamic d = new self::Foo::•();
diff --git a/pkg/front_end/testcases/inference/dynamic_methods.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/dynamic_methods.dart.strong.transformed.expect
index bab54ce..18d5c33 100644
--- a/pkg/front_end/testcases/inference/dynamic_methods.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/dynamic_methods.dart.strong.transformed.expect
@@ -15,6 +15,16 @@
     ;
   method foo(core::int* x) → core::int*
     return x;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method test() → dynamic {
   dynamic d = new self::Foo::•();
diff --git a/pkg/front_end/testcases/inference/field_initializer_context_explicit.dart.outline.expect b/pkg/front_end/testcases/inference/field_initializer_context_explicit.dart.outline.expect
index 1af2f47..42f256f 100644
--- a/pkg/front_end/testcases/inference/field_initializer_context_explicit.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/field_initializer_context_explicit.dart.outline.expect
@@ -6,6 +6,16 @@
   final field core::int* x;
   constructor •() → self::C*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method f<T extends core::Object* = dynamic>() → self::f::T*
   ;
diff --git a/pkg/front_end/testcases/inference/field_initializer_context_explicit.dart.strong.expect b/pkg/front_end/testcases/inference/field_initializer_context_explicit.dart.strong.expect
index c6e5c99..a81d00d 100644
--- a/pkg/front_end/testcases/inference/field_initializer_context_explicit.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/field_initializer_context_explicit.dart.strong.expect
@@ -7,6 +7,16 @@
   constructor •() → self::C*
     : self::C::x = self::f<core::int*>(), super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method f<T extends core::Object* = dynamic>() → self::f::T*
   return null;
diff --git a/pkg/front_end/testcases/inference/field_initializer_context_explicit.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/field_initializer_context_explicit.dart.strong.transformed.expect
index c6e5c99..a81d00d 100644
--- a/pkg/front_end/testcases/inference/field_initializer_context_explicit.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/field_initializer_context_explicit.dart.strong.transformed.expect
@@ -7,6 +7,16 @@
   constructor •() → self::C*
     : self::C::x = self::f<core::int*>(), super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method f<T extends core::Object* = dynamic>() → self::f::T*
   return null;
diff --git a/pkg/front_end/testcases/inference/field_initializer_context_implicit.dart.outline.expect b/pkg/front_end/testcases/inference/field_initializer_context_implicit.dart.outline.expect
index c093159..c0872d4 100644
--- a/pkg/front_end/testcases/inference/field_initializer_context_implicit.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/field_initializer_context_implicit.dart.outline.expect
@@ -6,11 +6,31 @@
   final field core::int* x;
   constructor •() → self::C*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class B extends core::Object {
   synthetic constructor •() → self::B*
     ;
   abstract get x() → core::int*;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method f<T extends core::Object* = dynamic>() → self::f::T*
   ;
diff --git a/pkg/front_end/testcases/inference/field_initializer_context_implicit.dart.strong.expect b/pkg/front_end/testcases/inference/field_initializer_context_implicit.dart.strong.expect
index f1fc0d6..67f2f15 100644
--- a/pkg/front_end/testcases/inference/field_initializer_context_implicit.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/field_initializer_context_implicit.dart.strong.expect
@@ -7,12 +7,32 @@
   constructor •() → self::C*
     : self::C::x = self::f<core::int*>(), super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class B extends core::Object {
   synthetic constructor •() → self::B*
     : super core::Object::•()
     ;
   abstract get x() → core::int*;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method f<T extends core::Object* = dynamic>() → self::f::T*
   return null;
diff --git a/pkg/front_end/testcases/inference/field_initializer_context_implicit.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/field_initializer_context_implicit.dart.strong.transformed.expect
index f1fc0d6..67f2f15 100644
--- a/pkg/front_end/testcases/inference/field_initializer_context_implicit.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/field_initializer_context_implicit.dart.strong.transformed.expect
@@ -7,12 +7,32 @@
   constructor •() → self::C*
     : self::C::x = self::f<core::int*>(), super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class B extends core::Object {
   synthetic constructor •() → self::B*
     : super core::Object::•()
     ;
   abstract get x() → core::int*;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method f<T extends core::Object* = dynamic>() → self::f::T*
   return null;
diff --git a/pkg/front_end/testcases/inference/field_initializer_context_this.dart.outline.expect b/pkg/front_end/testcases/inference/field_initializer_context_this.dart.outline.expect
index 1af2f47..42f256f 100644
--- a/pkg/front_end/testcases/inference/field_initializer_context_this.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/field_initializer_context_this.dart.outline.expect
@@ -6,6 +6,16 @@
   final field core::int* x;
   constructor •() → self::C*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method f<T extends core::Object* = dynamic>() → self::f::T*
   ;
diff --git a/pkg/front_end/testcases/inference/field_initializer_context_this.dart.strong.expect b/pkg/front_end/testcases/inference/field_initializer_context_this.dart.strong.expect
index c6e5c99..a81d00d 100644
--- a/pkg/front_end/testcases/inference/field_initializer_context_this.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/field_initializer_context_this.dart.strong.expect
@@ -7,6 +7,16 @@
   constructor •() → self::C*
     : self::C::x = self::f<core::int*>(), super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method f<T extends core::Object* = dynamic>() → self::f::T*
   return null;
diff --git a/pkg/front_end/testcases/inference/field_initializer_context_this.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/field_initializer_context_this.dart.strong.transformed.expect
index c6e5c99..a81d00d 100644
--- a/pkg/front_end/testcases/inference/field_initializer_context_this.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/field_initializer_context_this.dart.strong.transformed.expect
@@ -7,6 +7,16 @@
   constructor •() → self::C*
     : self::C::x = self::f<core::int*>(), super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method f<T extends core::Object* = dynamic>() → self::f::T*
   return null;
diff --git a/pkg/front_end/testcases/inference/field_initializer_parameter.dart.outline.expect b/pkg/front_end/testcases/inference/field_initializer_parameter.dart.outline.expect
index 15e312c..9ffed45 100644
--- a/pkg/front_end/testcases/inference/field_initializer_parameter.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/field_initializer_parameter.dart.outline.expect
@@ -6,6 +6,16 @@
   final field dynamic x;
   constructor •(core::int* p) → self::C*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method f<T extends core::Object* = dynamic>(self::f::T* t) → self::f::T*
   ;
diff --git a/pkg/front_end/testcases/inference/field_initializer_parameter.dart.strong.expect b/pkg/front_end/testcases/inference/field_initializer_parameter.dart.strong.expect
index 3c7726b..bb5ec7b 100644
--- a/pkg/front_end/testcases/inference/field_initializer_parameter.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/field_initializer_parameter.dart.strong.expect
@@ -7,6 +7,16 @@
   constructor •(core::int* p) → self::C*
     : self::C::x = self::f<core::int*>(p), super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method f<T extends core::Object* = dynamic>(self::f::T* t) → self::f::T*
   return t;
diff --git a/pkg/front_end/testcases/inference/field_initializer_parameter.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/field_initializer_parameter.dart.strong.transformed.expect
index 3c7726b..bb5ec7b 100644
--- a/pkg/front_end/testcases/inference/field_initializer_parameter.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/field_initializer_parameter.dart.strong.transformed.expect
@@ -7,6 +7,16 @@
   constructor •(core::int* p) → self::C*
     : self::C::x = self::f<core::int*>(p), super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method f<T extends core::Object* = dynamic>(self::f::T* t) → self::f::T*
   return t;
diff --git a/pkg/front_end/testcases/inference/field_refers_to_static_getter.dart.outline.expect b/pkg/front_end/testcases/inference/field_refers_to_static_getter.dart.outline.expect
index 0ac31d4..30ff81f 100644
--- a/pkg/front_end/testcases/inference/field_refers_to_static_getter.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/field_refers_to_static_getter.dart.outline.expect
@@ -8,6 +8,16 @@
     ;
   static get _x() → core::int*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/inference/field_refers_to_static_getter.dart.strong.expect b/pkg/front_end/testcases/inference/field_refers_to_static_getter.dart.strong.expect
index 5a5cd25..0ad5673 100644
--- a/pkg/front_end/testcases/inference/field_refers_to_static_getter.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/field_refers_to_static_getter.dart.strong.expect
@@ -9,5 +9,15 @@
     ;
   static get _x() → core::int*
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/field_refers_to_static_getter.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/field_refers_to_static_getter.dart.strong.transformed.expect
index 5a5cd25..0ad5673 100644
--- a/pkg/front_end/testcases/inference/field_refers_to_static_getter.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/field_refers_to_static_getter.dart.strong.transformed.expect
@@ -9,5 +9,15 @@
     ;
   static get _x() → core::int*
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/field_refers_to_top_level_getter.dart.outline.expect b/pkg/front_end/testcases/inference/field_refers_to_top_level_getter.dart.outline.expect
index 2df00b8e..7b24a57 100644
--- a/pkg/front_end/testcases/inference/field_refers_to_top_level_getter.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/field_refers_to_top_level_getter.dart.outline.expect
@@ -6,6 +6,16 @@
   final field core::int* x;
   synthetic constructor •() → self::C*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static get y() → core::int*
   ;
diff --git a/pkg/front_end/testcases/inference/field_refers_to_top_level_getter.dart.strong.expect b/pkg/front_end/testcases/inference/field_refers_to_top_level_getter.dart.strong.expect
index d9f973a..ad7ee51 100644
--- a/pkg/front_end/testcases/inference/field_refers_to_top_level_getter.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/field_refers_to_top_level_getter.dart.strong.expect
@@ -7,6 +7,16 @@
   synthetic constructor •() → self::C*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static get y() → core::int*
   return null;
diff --git a/pkg/front_end/testcases/inference/field_refers_to_top_level_getter.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/field_refers_to_top_level_getter.dart.strong.transformed.expect
index d9f973a..ad7ee51 100644
--- a/pkg/front_end/testcases/inference/field_refers_to_top_level_getter.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/field_refers_to_top_level_getter.dart.strong.transformed.expect
@@ -7,6 +7,16 @@
   synthetic constructor •() → self::C*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static get y() → core::int*
   return null;
diff --git a/pkg/front_end/testcases/inference/for_each_downcast_iterable.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/for_each_downcast_iterable.dart.strong.transformed.expect
index 525b2c0..13fcd9e 100644
--- a/pkg/front_end/testcases/inference/for_each_downcast_iterable.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/for_each_downcast_iterable.dart.strong.transformed.expect
@@ -37,7 +37,7 @@
             while (true) {
               dynamic #t1 = asy::_asyncStarMoveNextHelper(:stream);
               [yield] let dynamic #t2 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::moveNext}(), :async_op_then, :async_op_error, :async_op) in null;
-              if(_in::unsafeCast<core::bool*>(:result)) {
+              if(_in::unsafeCast<core::bool>(:result)) {
                 dynamic x = :for-iterator.{asy::_StreamIterator::current};
                 {}
               }
@@ -69,7 +69,7 @@
             while (true) {
               dynamic #t5 = asy::_asyncStarMoveNextHelper(:stream);
               [yield] let dynamic #t6 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::moveNext}(), :async_op_then, :async_op_error, :async_op) in null;
-              if(_in::unsafeCast<core::bool*>(:result)) {
+              if(_in::unsafeCast<core::bool>(:result)) {
                 final dynamic #t7 = :for-iterator.{asy::_StreamIterator::current};
                 {
                   y = #t7 as{TypeError,ForDynamic} core::int*;
@@ -88,8 +88,8 @@
       asy::_completeOnAsyncReturn(:async_completer, :return_value);
       return;
     }
-    on dynamic catch(dynamic :exception, core::StackTrace* :stack_trace) {
-      :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+    on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
+      :async_completer.{asy::Completer::completeError}(exception, stack_trace);
     }
   :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
diff --git a/pkg/front_end/testcases/inference/future_then.dart.outline.expect b/pkg/front_end/testcases/inference/future_then.dart.outline.expect
index 723a215..609e27d 100644
--- a/pkg/front_end/testcases/inference/future_then.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/future_then.dart.outline.expect
@@ -14,20 +14,25 @@
     ;
   method then<S extends core::Object* = dynamic>((self::MyFuture::T*) →* asy::FutureOr<self::MyFuture::then::S*>* f, {core::Function* onError}) → self::MyFuture<self::MyFuture::then::S*>*
     ;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function* onError, {(core::Object*) →* core::bool* test = #C1}) → asy::Future<self::MyFuture::T*>*
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
+  member-signature no-such-method-forwarder method catchError(core::Function* onError, {(core::Object*) →* core::bool* test}) → asy::Future<self::MyFuture::T*>*
     return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#catchError, 0, const <core::Type*>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#test: test}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() →* asy::FutureOr<dynamic>* action) → asy::Future<self::MyFuture::T*>*
+  member-signature no-such-method-forwarder method whenComplete(() →* asy::FutureOr<void>* action) → asy::Future<self::MyFuture::T*>*
     return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#whenComplete, 0, const <core::Type*>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration* timeLimit, {generic-covariant-impl () →* asy::FutureOr<self::MyFuture::T*>* onTimeout = #C1}) → asy::Future<self::MyFuture::T*>*
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#timeout, 0, const <core::Type*>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#onTimeout: onTimeout}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T*>*
+  member-signature no-such-method-forwarder method asStream() → asy::Stream<self::MyFuture::T*>*
     return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#asStream, 0, const <core::Type*>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{}))) as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
+  member-signature no-such-method-forwarder method timeout(core::Duration* timeLimit, {generic-covariant-impl () →* asy::FutureOr<self::MyFuture::T*>* onTimeout}) → asy::Future<self::MyFuture::T*>*
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#timeout, 0, const <core::Type*>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#onTimeout: onTimeout}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
 }
 static method test() → void
   ;
 static method main() → dynamic
   ;
-
-constants  {
-  #C1 = null
-}
diff --git a/pkg/front_end/testcases/inference/future_then.dart.strong.expect b/pkg/front_end/testcases/inference/future_then.dart.strong.expect
index c72502ef..5377410 100644
--- a/pkg/front_end/testcases/inference/future_then.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/future_then.dart.strong.expect
@@ -14,14 +14,23 @@
     return null;
   method then<S extends core::Object* = dynamic>((self::MyFuture::T*) →* asy::FutureOr<self::MyFuture::then::S*>* f, {core::Function* onError = #C1}) → self::MyFuture<self::MyFuture::then::S*>*
     return null;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function* onError, {(core::Object*) →* core::bool* test = #C1}) → asy::Future<self::MyFuture::T*>*
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
+  member-signature no-such-method-forwarder method catchError(core::Function* onError, {(core::Object*) →* core::bool* test = #C1}) → asy::Future<self::MyFuture::T*>*
     return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C4: test}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() →* asy::FutureOr<dynamic>* action) → asy::Future<self::MyFuture::T*>*
+  member-signature no-such-method-forwarder method whenComplete(() →* asy::FutureOr<void>* action) → asy::Future<self::MyFuture::T*>*
     return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration* timeLimit, {generic-covariant-impl () →* asy::FutureOr<self::MyFuture::T*>* onTimeout = #C1}) → asy::Future<self::MyFuture::T*>*
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C9: onTimeout}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T*>*
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C10, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))) as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
+  member-signature no-such-method-forwarder method asStream() → asy::Stream<self::MyFuture::T*>*
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))) as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
+  member-signature no-such-method-forwarder method timeout(core::Duration* timeLimit, {generic-covariant-impl () →* asy::FutureOr<self::MyFuture::T*>* onTimeout = #C1}) → asy::Future<self::MyFuture::T*>*
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C10: onTimeout}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
 }
 static method test() → void {
   self::MyFuture<dynamic>* f;
@@ -52,7 +61,7 @@
   #C5 = #whenComplete
   #C6 = <dynamic>[]
   #C7 = core::_ImmutableMap<core::Symbol*, dynamic> {_kvPairs:#C6}
-  #C8 = #timeout
-  #C9 = #onTimeout
-  #C10 = #asStream
+  #C8 = #asStream
+  #C9 = #timeout
+  #C10 = #onTimeout
 }
diff --git a/pkg/front_end/testcases/inference/future_then.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/future_then.dart.strong.transformed.expect
index 1c08fc3..0eeff1d 100644
--- a/pkg/front_end/testcases/inference/future_then.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/future_then.dart.strong.transformed.expect
@@ -15,14 +15,23 @@
     return null;
   method then<S extends core::Object* = dynamic>((self::MyFuture::T*) →* asy::FutureOr<self::MyFuture::then::S*>* f, {core::Function* onError = #C1}) → self::MyFuture<self::MyFuture::then::S*>*
     return null;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function* onError, {(core::Object*) →* core::bool* test = #C1}) → asy::Future<self::MyFuture::T*>*
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
+  member-signature no-such-method-forwarder method catchError(core::Function* onError, {(core::Object*) →* core::bool* test = #C1}) → asy::Future<self::MyFuture::T*>*
     return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C4: test}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() →* asy::FutureOr<dynamic>* action) → asy::Future<self::MyFuture::T*>*
+  member-signature no-such-method-forwarder method whenComplete(() →* asy::FutureOr<void>* action) → asy::Future<self::MyFuture::T*>*
     return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration* timeLimit, {generic-covariant-impl () →* asy::FutureOr<self::MyFuture::T*>* onTimeout = #C1}) → asy::Future<self::MyFuture::T*>*
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C9: onTimeout}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T*>*
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C10, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))) as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
+  member-signature no-such-method-forwarder method asStream() → asy::Stream<self::MyFuture::T*>*
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))) as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
+  member-signature no-such-method-forwarder method timeout(core::Duration* timeLimit, {generic-covariant-impl () →* asy::FutureOr<self::MyFuture::T*>* onTimeout = #C1}) → asy::Future<self::MyFuture::T*>*
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C10: onTimeout}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
 }
 static method test() → void {
   self::MyFuture<dynamic>* f;
@@ -46,8 +55,8 @@
         asy::_completeOnAsyncReturn(:async_completer, :return_value);
         return;
       }
-      on dynamic catch(dynamic :exception, core::StackTrace* :stack_trace) {
-        :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+      on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
+        :async_completer.{asy::Completer::completeError}(exception, stack_trace);
       }
     :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
     :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
@@ -75,8 +84,8 @@
         asy::_completeOnAsyncReturn(:async_completer, :return_value);
         return;
       }
-      on dynamic catch(dynamic :exception, core::StackTrace* :stack_trace) {
-        :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+      on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
+        :async_completer.{asy::Completer::completeError}(exception, stack_trace);
       }
     :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
     :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
@@ -102,8 +111,8 @@
         asy::_completeOnAsyncReturn(:async_completer, :return_value);
         return;
       }
-      on dynamic catch(dynamic :exception, core::StackTrace* :stack_trace) {
-        :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+      on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
+        :async_completer.{asy::Completer::completeError}(exception, stack_trace);
       }
     :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
     :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
@@ -129,8 +138,8 @@
         asy::_completeOnAsyncReturn(:async_completer, :return_value);
         return;
       }
-      on dynamic catch(dynamic :exception, core::StackTrace* :stack_trace) {
-        :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+      on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
+        :async_completer.{asy::Completer::completeError}(exception, stack_trace);
       }
     :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
     :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
@@ -160,8 +169,8 @@
         asy::_completeOnAsyncReturn(:async_completer, :return_value);
         return;
       }
-      on dynamic catch(dynamic :exception, core::StackTrace* :stack_trace) {
-        :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+      on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
+        :async_completer.{asy::Completer::completeError}(exception, stack_trace);
       }
     :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
     :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
@@ -187,8 +196,8 @@
         asy::_completeOnAsyncReturn(:async_completer, :return_value);
         return;
       }
-      on dynamic catch(dynamic :exception, core::StackTrace* :stack_trace) {
-        :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+      on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
+        :async_completer.{asy::Completer::completeError}(exception, stack_trace);
       }
     :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
     :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
@@ -207,7 +216,7 @@
   #C5 = #whenComplete
   #C6 = <dynamic>[]
   #C7 = core::_ImmutableMap<core::Symbol*, dynamic> {_kvPairs:#C6}
-  #C8 = #timeout
-  #C9 = #onTimeout
-  #C10 = #asStream
+  #C8 = #asStream
+  #C9 = #timeout
+  #C10 = #onTimeout
 }
diff --git a/pkg/front_end/testcases/inference/future_then_2.dart.outline.expect b/pkg/front_end/testcases/inference/future_then_2.dart.outline.expect
index 723a215..609e27d 100644
--- a/pkg/front_end/testcases/inference/future_then_2.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/future_then_2.dart.outline.expect
@@ -14,20 +14,25 @@
     ;
   method then<S extends core::Object* = dynamic>((self::MyFuture::T*) →* asy::FutureOr<self::MyFuture::then::S*>* f, {core::Function* onError}) → self::MyFuture<self::MyFuture::then::S*>*
     ;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function* onError, {(core::Object*) →* core::bool* test = #C1}) → asy::Future<self::MyFuture::T*>*
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
+  member-signature no-such-method-forwarder method catchError(core::Function* onError, {(core::Object*) →* core::bool* test}) → asy::Future<self::MyFuture::T*>*
     return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#catchError, 0, const <core::Type*>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#test: test}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() →* asy::FutureOr<dynamic>* action) → asy::Future<self::MyFuture::T*>*
+  member-signature no-such-method-forwarder method whenComplete(() →* asy::FutureOr<void>* action) → asy::Future<self::MyFuture::T*>*
     return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#whenComplete, 0, const <core::Type*>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration* timeLimit, {generic-covariant-impl () →* asy::FutureOr<self::MyFuture::T*>* onTimeout = #C1}) → asy::Future<self::MyFuture::T*>*
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#timeout, 0, const <core::Type*>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#onTimeout: onTimeout}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T*>*
+  member-signature no-such-method-forwarder method asStream() → asy::Stream<self::MyFuture::T*>*
     return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#asStream, 0, const <core::Type*>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{}))) as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
+  member-signature no-such-method-forwarder method timeout(core::Duration* timeLimit, {generic-covariant-impl () →* asy::FutureOr<self::MyFuture::T*>* onTimeout}) → asy::Future<self::MyFuture::T*>*
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#timeout, 0, const <core::Type*>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#onTimeout: onTimeout}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
 }
 static method test() → void
   ;
 static method main() → dynamic
   ;
-
-constants  {
-  #C1 = null
-}
diff --git a/pkg/front_end/testcases/inference/future_then_2.dart.strong.expect b/pkg/front_end/testcases/inference/future_then_2.dart.strong.expect
index 7a95932..bfe642f 100644
--- a/pkg/front_end/testcases/inference/future_then_2.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/future_then_2.dart.strong.expect
@@ -14,14 +14,23 @@
     return null;
   method then<S extends core::Object* = dynamic>((self::MyFuture::T*) →* asy::FutureOr<self::MyFuture::then::S*>* f, {core::Function* onError = #C1}) → self::MyFuture<self::MyFuture::then::S*>*
     return null;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function* onError, {(core::Object*) →* core::bool* test = #C1}) → asy::Future<self::MyFuture::T*>*
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
+  member-signature no-such-method-forwarder method catchError(core::Function* onError, {(core::Object*) →* core::bool* test = #C1}) → asy::Future<self::MyFuture::T*>*
     return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C4: test}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() →* asy::FutureOr<dynamic>* action) → asy::Future<self::MyFuture::T*>*
+  member-signature no-such-method-forwarder method whenComplete(() →* asy::FutureOr<void>* action) → asy::Future<self::MyFuture::T*>*
     return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration* timeLimit, {generic-covariant-impl () →* asy::FutureOr<self::MyFuture::T*>* onTimeout = #C1}) → asy::Future<self::MyFuture::T*>*
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C9: onTimeout}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T*>*
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C10, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))) as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
+  member-signature no-such-method-forwarder method asStream() → asy::Stream<self::MyFuture::T*>*
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))) as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
+  member-signature no-such-method-forwarder method timeout(core::Duration* timeLimit, {generic-covariant-impl () →* asy::FutureOr<self::MyFuture::T*>* onTimeout = #C1}) → asy::Future<self::MyFuture::T*>*
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C10: onTimeout}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
 }
 static method test() → void {
   self::MyFuture<dynamic>* f;
@@ -52,7 +61,7 @@
   #C5 = #whenComplete
   #C6 = <dynamic>[]
   #C7 = core::_ImmutableMap<core::Symbol*, dynamic> {_kvPairs:#C6}
-  #C8 = #timeout
-  #C9 = #onTimeout
-  #C10 = #asStream
+  #C8 = #asStream
+  #C9 = #timeout
+  #C10 = #onTimeout
 }
diff --git a/pkg/front_end/testcases/inference/future_then_2.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/future_then_2.dart.strong.transformed.expect
index b4d284b..d64c01e 100644
--- a/pkg/front_end/testcases/inference/future_then_2.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/future_then_2.dart.strong.transformed.expect
@@ -15,14 +15,23 @@
     return null;
   method then<S extends core::Object* = dynamic>((self::MyFuture::T*) →* asy::FutureOr<self::MyFuture::then::S*>* f, {core::Function* onError = #C1}) → self::MyFuture<self::MyFuture::then::S*>*
     return null;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function* onError, {(core::Object*) →* core::bool* test = #C1}) → asy::Future<self::MyFuture::T*>*
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
+  member-signature no-such-method-forwarder method catchError(core::Function* onError, {(core::Object*) →* core::bool* test = #C1}) → asy::Future<self::MyFuture::T*>*
     return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C4: test}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() →* asy::FutureOr<dynamic>* action) → asy::Future<self::MyFuture::T*>*
+  member-signature no-such-method-forwarder method whenComplete(() →* asy::FutureOr<void>* action) → asy::Future<self::MyFuture::T*>*
     return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration* timeLimit, {generic-covariant-impl () →* asy::FutureOr<self::MyFuture::T*>* onTimeout = #C1}) → asy::Future<self::MyFuture::T*>*
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C9: onTimeout}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T*>*
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C10, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))) as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
+  member-signature no-such-method-forwarder method asStream() → asy::Stream<self::MyFuture::T*>*
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))) as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
+  member-signature no-such-method-forwarder method timeout(core::Duration* timeLimit, {generic-covariant-impl () →* asy::FutureOr<self::MyFuture::T*>* onTimeout = #C1}) → asy::Future<self::MyFuture::T*>*
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C10: onTimeout}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
 }
 static method test() → void {
   self::MyFuture<dynamic>* f;
@@ -46,8 +55,8 @@
         asy::_completeOnAsyncReturn(:async_completer, :return_value);
         return;
       }
-      on dynamic catch(dynamic :exception, core::StackTrace* :stack_trace) {
-        :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+      on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
+        :async_completer.{asy::Completer::completeError}(exception, stack_trace);
       }
     :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
     :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
@@ -75,8 +84,8 @@
         asy::_completeOnAsyncReturn(:async_completer, :return_value);
         return;
       }
-      on dynamic catch(dynamic :exception, core::StackTrace* :stack_trace) {
-        :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+      on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
+        :async_completer.{asy::Completer::completeError}(exception, stack_trace);
       }
     :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
     :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
@@ -102,8 +111,8 @@
         asy::_completeOnAsyncReturn(:async_completer, :return_value);
         return;
       }
-      on dynamic catch(dynamic :exception, core::StackTrace* :stack_trace) {
-        :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+      on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
+        :async_completer.{asy::Completer::completeError}(exception, stack_trace);
       }
     :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
     :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
@@ -129,8 +138,8 @@
         asy::_completeOnAsyncReturn(:async_completer, :return_value);
         return;
       }
-      on dynamic catch(dynamic :exception, core::StackTrace* :stack_trace) {
-        :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+      on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
+        :async_completer.{asy::Completer::completeError}(exception, stack_trace);
       }
     :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
     :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
@@ -160,8 +169,8 @@
         asy::_completeOnAsyncReturn(:async_completer, :return_value);
         return;
       }
-      on dynamic catch(dynamic :exception, core::StackTrace* :stack_trace) {
-        :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+      on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
+        :async_completer.{asy::Completer::completeError}(exception, stack_trace);
       }
     :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
     :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
@@ -187,8 +196,8 @@
         asy::_completeOnAsyncReturn(:async_completer, :return_value);
         return;
       }
-      on dynamic catch(dynamic :exception, core::StackTrace* :stack_trace) {
-        :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+      on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
+        :async_completer.{asy::Completer::completeError}(exception, stack_trace);
       }
     :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
     :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
@@ -207,7 +216,7 @@
   #C5 = #whenComplete
   #C6 = <dynamic>[]
   #C7 = core::_ImmutableMap<core::Symbol*, dynamic> {_kvPairs:#C6}
-  #C8 = #timeout
-  #C9 = #onTimeout
-  #C10 = #asStream
+  #C8 = #asStream
+  #C9 = #timeout
+  #C10 = #onTimeout
 }
diff --git a/pkg/front_end/testcases/inference/future_then_3.dart.outline.expect b/pkg/front_end/testcases/inference/future_then_3.dart.outline.expect
index 723a215..609e27d 100644
--- a/pkg/front_end/testcases/inference/future_then_3.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/future_then_3.dart.outline.expect
@@ -14,20 +14,25 @@
     ;
   method then<S extends core::Object* = dynamic>((self::MyFuture::T*) →* asy::FutureOr<self::MyFuture::then::S*>* f, {core::Function* onError}) → self::MyFuture<self::MyFuture::then::S*>*
     ;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function* onError, {(core::Object*) →* core::bool* test = #C1}) → asy::Future<self::MyFuture::T*>*
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
+  member-signature no-such-method-forwarder method catchError(core::Function* onError, {(core::Object*) →* core::bool* test}) → asy::Future<self::MyFuture::T*>*
     return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#catchError, 0, const <core::Type*>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#test: test}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() →* asy::FutureOr<dynamic>* action) → asy::Future<self::MyFuture::T*>*
+  member-signature no-such-method-forwarder method whenComplete(() →* asy::FutureOr<void>* action) → asy::Future<self::MyFuture::T*>*
     return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#whenComplete, 0, const <core::Type*>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration* timeLimit, {generic-covariant-impl () →* asy::FutureOr<self::MyFuture::T*>* onTimeout = #C1}) → asy::Future<self::MyFuture::T*>*
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#timeout, 0, const <core::Type*>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#onTimeout: onTimeout}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T*>*
+  member-signature no-such-method-forwarder method asStream() → asy::Stream<self::MyFuture::T*>*
     return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#asStream, 0, const <core::Type*>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{}))) as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
+  member-signature no-such-method-forwarder method timeout(core::Duration* timeLimit, {generic-covariant-impl () →* asy::FutureOr<self::MyFuture::T*>* onTimeout}) → asy::Future<self::MyFuture::T*>*
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#timeout, 0, const <core::Type*>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#onTimeout: onTimeout}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
 }
 static method test() → void
   ;
 static method main() → dynamic
   ;
-
-constants  {
-  #C1 = null
-}
diff --git a/pkg/front_end/testcases/inference/future_then_3.dart.strong.expect b/pkg/front_end/testcases/inference/future_then_3.dart.strong.expect
index 21c7bf4..0e11686 100644
--- a/pkg/front_end/testcases/inference/future_then_3.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/future_then_3.dart.strong.expect
@@ -14,14 +14,23 @@
     return null;
   method then<S extends core::Object* = dynamic>((self::MyFuture::T*) →* asy::FutureOr<self::MyFuture::then::S*>* f, {core::Function* onError = #C1}) → self::MyFuture<self::MyFuture::then::S*>*
     return null;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function* onError, {(core::Object*) →* core::bool* test = #C1}) → asy::Future<self::MyFuture::T*>*
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
+  member-signature no-such-method-forwarder method catchError(core::Function* onError, {(core::Object*) →* core::bool* test = #C1}) → asy::Future<self::MyFuture::T*>*
     return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C4: test}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() →* asy::FutureOr<dynamic>* action) → asy::Future<self::MyFuture::T*>*
+  member-signature no-such-method-forwarder method whenComplete(() →* asy::FutureOr<void>* action) → asy::Future<self::MyFuture::T*>*
     return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration* timeLimit, {generic-covariant-impl () →* asy::FutureOr<self::MyFuture::T*>* onTimeout = #C1}) → asy::Future<self::MyFuture::T*>*
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C9: onTimeout}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T*>*
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C10, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))) as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
+  member-signature no-such-method-forwarder method asStream() → asy::Stream<self::MyFuture::T*>*
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))) as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
+  member-signature no-such-method-forwarder method timeout(core::Duration* timeLimit, {generic-covariant-impl () →* asy::FutureOr<self::MyFuture::T*>* onTimeout = #C1}) → asy::Future<self::MyFuture::T*>*
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C10: onTimeout}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
 }
 static method test() → void {
   self::MyFuture<dynamic>* f;
@@ -52,7 +61,7 @@
   #C5 = #whenComplete
   #C6 = <dynamic>[]
   #C7 = core::_ImmutableMap<core::Symbol*, dynamic> {_kvPairs:#C6}
-  #C8 = #timeout
-  #C9 = #onTimeout
-  #C10 = #asStream
+  #C8 = #asStream
+  #C9 = #timeout
+  #C10 = #onTimeout
 }
diff --git a/pkg/front_end/testcases/inference/future_then_3.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/future_then_3.dart.strong.transformed.expect
index d3bd398..2859787 100644
--- a/pkg/front_end/testcases/inference/future_then_3.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/future_then_3.dart.strong.transformed.expect
@@ -15,14 +15,23 @@
     return null;
   method then<S extends core::Object* = dynamic>((self::MyFuture::T*) →* asy::FutureOr<self::MyFuture::then::S*>* f, {core::Function* onError = #C1}) → self::MyFuture<self::MyFuture::then::S*>*
     return null;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function* onError, {(core::Object*) →* core::bool* test = #C1}) → asy::Future<self::MyFuture::T*>*
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
+  member-signature no-such-method-forwarder method catchError(core::Function* onError, {(core::Object*) →* core::bool* test = #C1}) → asy::Future<self::MyFuture::T*>*
     return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C4: test}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() →* asy::FutureOr<dynamic>* action) → asy::Future<self::MyFuture::T*>*
+  member-signature no-such-method-forwarder method whenComplete(() →* asy::FutureOr<void>* action) → asy::Future<self::MyFuture::T*>*
     return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration* timeLimit, {generic-covariant-impl () →* asy::FutureOr<self::MyFuture::T*>* onTimeout = #C1}) → asy::Future<self::MyFuture::T*>*
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C9: onTimeout}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T*>*
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C10, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))) as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
+  member-signature no-such-method-forwarder method asStream() → asy::Stream<self::MyFuture::T*>*
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))) as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
+  member-signature no-such-method-forwarder method timeout(core::Duration* timeLimit, {generic-covariant-impl () →* asy::FutureOr<self::MyFuture::T*>* onTimeout = #C1}) → asy::Future<self::MyFuture::T*>*
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C10: onTimeout}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
 }
 static method test() → void {
   self::MyFuture<dynamic>* f;
@@ -46,8 +55,8 @@
         asy::_completeOnAsyncReturn(:async_completer, :return_value);
         return;
       }
-      on dynamic catch(dynamic :exception, core::StackTrace* :stack_trace) {
-        :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+      on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
+        :async_completer.{asy::Completer::completeError}(exception, stack_trace);
       }
     :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
     :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
@@ -75,8 +84,8 @@
         asy::_completeOnAsyncReturn(:async_completer, :return_value);
         return;
       }
-      on dynamic catch(dynamic :exception, core::StackTrace* :stack_trace) {
-        :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+      on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
+        :async_completer.{asy::Completer::completeError}(exception, stack_trace);
       }
     :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
     :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
@@ -102,8 +111,8 @@
         asy::_completeOnAsyncReturn(:async_completer, :return_value);
         return;
       }
-      on dynamic catch(dynamic :exception, core::StackTrace* :stack_trace) {
-        :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+      on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
+        :async_completer.{asy::Completer::completeError}(exception, stack_trace);
       }
     :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
     :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
@@ -129,8 +138,8 @@
         asy::_completeOnAsyncReturn(:async_completer, :return_value);
         return;
       }
-      on dynamic catch(dynamic :exception, core::StackTrace* :stack_trace) {
-        :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+      on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
+        :async_completer.{asy::Completer::completeError}(exception, stack_trace);
       }
     :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
     :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
@@ -160,8 +169,8 @@
         asy::_completeOnAsyncReturn(:async_completer, :return_value);
         return;
       }
-      on dynamic catch(dynamic :exception, core::StackTrace* :stack_trace) {
-        :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+      on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
+        :async_completer.{asy::Completer::completeError}(exception, stack_trace);
       }
     :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
     :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
@@ -187,8 +196,8 @@
         asy::_completeOnAsyncReturn(:async_completer, :return_value);
         return;
       }
-      on dynamic catch(dynamic :exception, core::StackTrace* :stack_trace) {
-        :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+      on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
+        :async_completer.{asy::Completer::completeError}(exception, stack_trace);
       }
     :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
     :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
@@ -207,7 +216,7 @@
   #C5 = #whenComplete
   #C6 = <dynamic>[]
   #C7 = core::_ImmutableMap<core::Symbol*, dynamic> {_kvPairs:#C6}
-  #C8 = #timeout
-  #C9 = #onTimeout
-  #C10 = #asStream
+  #C8 = #asStream
+  #C9 = #timeout
+  #C10 = #onTimeout
 }
diff --git a/pkg/front_end/testcases/inference/future_then_4.dart.outline.expect b/pkg/front_end/testcases/inference/future_then_4.dart.outline.expect
index 723a215..609e27d 100644
--- a/pkg/front_end/testcases/inference/future_then_4.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/future_then_4.dart.outline.expect
@@ -14,20 +14,25 @@
     ;
   method then<S extends core::Object* = dynamic>((self::MyFuture::T*) →* asy::FutureOr<self::MyFuture::then::S*>* f, {core::Function* onError}) → self::MyFuture<self::MyFuture::then::S*>*
     ;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function* onError, {(core::Object*) →* core::bool* test = #C1}) → asy::Future<self::MyFuture::T*>*
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
+  member-signature no-such-method-forwarder method catchError(core::Function* onError, {(core::Object*) →* core::bool* test}) → asy::Future<self::MyFuture::T*>*
     return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#catchError, 0, const <core::Type*>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#test: test}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() →* asy::FutureOr<dynamic>* action) → asy::Future<self::MyFuture::T*>*
+  member-signature no-such-method-forwarder method whenComplete(() →* asy::FutureOr<void>* action) → asy::Future<self::MyFuture::T*>*
     return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#whenComplete, 0, const <core::Type*>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration* timeLimit, {generic-covariant-impl () →* asy::FutureOr<self::MyFuture::T*>* onTimeout = #C1}) → asy::Future<self::MyFuture::T*>*
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#timeout, 0, const <core::Type*>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#onTimeout: onTimeout}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T*>*
+  member-signature no-such-method-forwarder method asStream() → asy::Stream<self::MyFuture::T*>*
     return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#asStream, 0, const <core::Type*>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{}))) as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
+  member-signature no-such-method-forwarder method timeout(core::Duration* timeLimit, {generic-covariant-impl () →* asy::FutureOr<self::MyFuture::T*>* onTimeout}) → asy::Future<self::MyFuture::T*>*
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#timeout, 0, const <core::Type*>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#onTimeout: onTimeout}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
 }
 static method test() → void
   ;
 static method main() → dynamic
   ;
-
-constants  {
-  #C1 = null
-}
diff --git a/pkg/front_end/testcases/inference/future_then_4.dart.strong.expect b/pkg/front_end/testcases/inference/future_then_4.dart.strong.expect
index f6f2fe5..718a135 100644
--- a/pkg/front_end/testcases/inference/future_then_4.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/future_then_4.dart.strong.expect
@@ -14,14 +14,23 @@
     return null;
   method then<S extends core::Object* = dynamic>((self::MyFuture::T*) →* asy::FutureOr<self::MyFuture::then::S*>* f, {core::Function* onError = #C1}) → self::MyFuture<self::MyFuture::then::S*>*
     return null;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function* onError, {(core::Object*) →* core::bool* test = #C1}) → asy::Future<self::MyFuture::T*>*
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
+  member-signature no-such-method-forwarder method catchError(core::Function* onError, {(core::Object*) →* core::bool* test = #C1}) → asy::Future<self::MyFuture::T*>*
     return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C4: test}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() →* asy::FutureOr<dynamic>* action) → asy::Future<self::MyFuture::T*>*
+  member-signature no-such-method-forwarder method whenComplete(() →* asy::FutureOr<void>* action) → asy::Future<self::MyFuture::T*>*
     return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration* timeLimit, {generic-covariant-impl () →* asy::FutureOr<self::MyFuture::T*>* onTimeout = #C1}) → asy::Future<self::MyFuture::T*>*
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C9: onTimeout}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T*>*
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C10, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))) as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
+  member-signature no-such-method-forwarder method asStream() → asy::Stream<self::MyFuture::T*>*
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))) as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
+  member-signature no-such-method-forwarder method timeout(core::Duration* timeLimit, {generic-covariant-impl () →* asy::FutureOr<self::MyFuture::T*>* onTimeout = #C1}) → asy::Future<self::MyFuture::T*>*
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C10: onTimeout}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
 }
 static method test() → void {
   self::MyFuture<dynamic>* f;
@@ -52,7 +61,7 @@
   #C5 = #whenComplete
   #C6 = <dynamic>[]
   #C7 = core::_ImmutableMap<core::Symbol*, dynamic> {_kvPairs:#C6}
-  #C8 = #timeout
-  #C9 = #onTimeout
-  #C10 = #asStream
+  #C8 = #asStream
+  #C9 = #timeout
+  #C10 = #onTimeout
 }
diff --git a/pkg/front_end/testcases/inference/future_then_4.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/future_then_4.dart.strong.transformed.expect
index 24a4359..9692dbf 100644
--- a/pkg/front_end/testcases/inference/future_then_4.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/future_then_4.dart.strong.transformed.expect
@@ -15,14 +15,23 @@
     return null;
   method then<S extends core::Object* = dynamic>((self::MyFuture::T*) →* asy::FutureOr<self::MyFuture::then::S*>* f, {core::Function* onError = #C1}) → self::MyFuture<self::MyFuture::then::S*>*
     return null;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function* onError, {(core::Object*) →* core::bool* test = #C1}) → asy::Future<self::MyFuture::T*>*
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
+  member-signature no-such-method-forwarder method catchError(core::Function* onError, {(core::Object*) →* core::bool* test = #C1}) → asy::Future<self::MyFuture::T*>*
     return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C4: test}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() →* asy::FutureOr<dynamic>* action) → asy::Future<self::MyFuture::T*>*
+  member-signature no-such-method-forwarder method whenComplete(() →* asy::FutureOr<void>* action) → asy::Future<self::MyFuture::T*>*
     return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration* timeLimit, {generic-covariant-impl () →* asy::FutureOr<self::MyFuture::T*>* onTimeout = #C1}) → asy::Future<self::MyFuture::T*>*
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C9: onTimeout}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T*>*
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C10, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))) as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
+  member-signature no-such-method-forwarder method asStream() → asy::Stream<self::MyFuture::T*>*
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))) as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
+  member-signature no-such-method-forwarder method timeout(core::Duration* timeLimit, {generic-covariant-impl () →* asy::FutureOr<self::MyFuture::T*>* onTimeout = #C1}) → asy::Future<self::MyFuture::T*>*
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C10: onTimeout}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
 }
 static method test() → void {
   self::MyFuture<dynamic>* f;
@@ -46,8 +55,8 @@
         asy::_completeOnAsyncReturn(:async_completer, :return_value);
         return;
       }
-      on dynamic catch(dynamic :exception, core::StackTrace* :stack_trace) {
-        :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+      on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
+        :async_completer.{asy::Completer::completeError}(exception, stack_trace);
       }
     :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
     :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
@@ -75,8 +84,8 @@
         asy::_completeOnAsyncReturn(:async_completer, :return_value);
         return;
       }
-      on dynamic catch(dynamic :exception, core::StackTrace* :stack_trace) {
-        :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+      on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
+        :async_completer.{asy::Completer::completeError}(exception, stack_trace);
       }
     :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
     :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
@@ -102,8 +111,8 @@
         asy::_completeOnAsyncReturn(:async_completer, :return_value);
         return;
       }
-      on dynamic catch(dynamic :exception, core::StackTrace* :stack_trace) {
-        :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+      on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
+        :async_completer.{asy::Completer::completeError}(exception, stack_trace);
       }
     :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
     :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
@@ -129,8 +138,8 @@
         asy::_completeOnAsyncReturn(:async_completer, :return_value);
         return;
       }
-      on dynamic catch(dynamic :exception, core::StackTrace* :stack_trace) {
-        :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+      on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
+        :async_completer.{asy::Completer::completeError}(exception, stack_trace);
       }
     :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
     :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
@@ -160,8 +169,8 @@
         asy::_completeOnAsyncReturn(:async_completer, :return_value);
         return;
       }
-      on dynamic catch(dynamic :exception, core::StackTrace* :stack_trace) {
-        :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+      on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
+        :async_completer.{asy::Completer::completeError}(exception, stack_trace);
       }
     :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
     :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
@@ -187,8 +196,8 @@
         asy::_completeOnAsyncReturn(:async_completer, :return_value);
         return;
       }
-      on dynamic catch(dynamic :exception, core::StackTrace* :stack_trace) {
-        :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+      on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
+        :async_completer.{asy::Completer::completeError}(exception, stack_trace);
       }
     :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
     :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
@@ -207,7 +216,7 @@
   #C5 = #whenComplete
   #C6 = <dynamic>[]
   #C7 = core::_ImmutableMap<core::Symbol*, dynamic> {_kvPairs:#C6}
-  #C8 = #timeout
-  #C9 = #onTimeout
-  #C10 = #asStream
+  #C8 = #asStream
+  #C9 = #timeout
+  #C10 = #onTimeout
 }
diff --git a/pkg/front_end/testcases/inference/future_then_5.dart.outline.expect b/pkg/front_end/testcases/inference/future_then_5.dart.outline.expect
index 723a215..609e27d 100644
--- a/pkg/front_end/testcases/inference/future_then_5.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/future_then_5.dart.outline.expect
@@ -14,20 +14,25 @@
     ;
   method then<S extends core::Object* = dynamic>((self::MyFuture::T*) →* asy::FutureOr<self::MyFuture::then::S*>* f, {core::Function* onError}) → self::MyFuture<self::MyFuture::then::S*>*
     ;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function* onError, {(core::Object*) →* core::bool* test = #C1}) → asy::Future<self::MyFuture::T*>*
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
+  member-signature no-such-method-forwarder method catchError(core::Function* onError, {(core::Object*) →* core::bool* test}) → asy::Future<self::MyFuture::T*>*
     return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#catchError, 0, const <core::Type*>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#test: test}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() →* asy::FutureOr<dynamic>* action) → asy::Future<self::MyFuture::T*>*
+  member-signature no-such-method-forwarder method whenComplete(() →* asy::FutureOr<void>* action) → asy::Future<self::MyFuture::T*>*
     return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#whenComplete, 0, const <core::Type*>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration* timeLimit, {generic-covariant-impl () →* asy::FutureOr<self::MyFuture::T*>* onTimeout = #C1}) → asy::Future<self::MyFuture::T*>*
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#timeout, 0, const <core::Type*>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#onTimeout: onTimeout}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T*>*
+  member-signature no-such-method-forwarder method asStream() → asy::Stream<self::MyFuture::T*>*
     return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#asStream, 0, const <core::Type*>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{}))) as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
+  member-signature no-such-method-forwarder method timeout(core::Duration* timeLimit, {generic-covariant-impl () →* asy::FutureOr<self::MyFuture::T*>* onTimeout}) → asy::Future<self::MyFuture::T*>*
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#timeout, 0, const <core::Type*>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#onTimeout: onTimeout}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
 }
 static method test() → void
   ;
 static method main() → dynamic
   ;
-
-constants  {
-  #C1 = null
-}
diff --git a/pkg/front_end/testcases/inference/future_then_5.dart.strong.expect b/pkg/front_end/testcases/inference/future_then_5.dart.strong.expect
index 41e6861..acbacf2 100644
--- a/pkg/front_end/testcases/inference/future_then_5.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/future_then_5.dart.strong.expect
@@ -14,14 +14,23 @@
     return null;
   method then<S extends core::Object* = dynamic>((self::MyFuture::T*) →* asy::FutureOr<self::MyFuture::then::S*>* f, {core::Function* onError = #C1}) → self::MyFuture<self::MyFuture::then::S*>*
     return null;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function* onError, {(core::Object*) →* core::bool* test = #C1}) → asy::Future<self::MyFuture::T*>*
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
+  member-signature no-such-method-forwarder method catchError(core::Function* onError, {(core::Object*) →* core::bool* test = #C1}) → asy::Future<self::MyFuture::T*>*
     return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C4: test}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() →* asy::FutureOr<dynamic>* action) → asy::Future<self::MyFuture::T*>*
+  member-signature no-such-method-forwarder method whenComplete(() →* asy::FutureOr<void>* action) → asy::Future<self::MyFuture::T*>*
     return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration* timeLimit, {generic-covariant-impl () →* asy::FutureOr<self::MyFuture::T*>* onTimeout = #C1}) → asy::Future<self::MyFuture::T*>*
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C9: onTimeout}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T*>*
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C10, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))) as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
+  member-signature no-such-method-forwarder method asStream() → asy::Stream<self::MyFuture::T*>*
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))) as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
+  member-signature no-such-method-forwarder method timeout(core::Duration* timeLimit, {generic-covariant-impl () →* asy::FutureOr<self::MyFuture::T*>* onTimeout = #C1}) → asy::Future<self::MyFuture::T*>*
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C10: onTimeout}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
 }
 static method test() → void {
   asy::Future<dynamic>* f;
@@ -52,7 +61,7 @@
   #C5 = #whenComplete
   #C6 = <dynamic>[]
   #C7 = core::_ImmutableMap<core::Symbol*, dynamic> {_kvPairs:#C6}
-  #C8 = #timeout
-  #C9 = #onTimeout
-  #C10 = #asStream
+  #C8 = #asStream
+  #C9 = #timeout
+  #C10 = #onTimeout
 }
diff --git a/pkg/front_end/testcases/inference/future_then_5.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/future_then_5.dart.strong.transformed.expect
index 282f036..f2070d2 100644
--- a/pkg/front_end/testcases/inference/future_then_5.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/future_then_5.dart.strong.transformed.expect
@@ -15,14 +15,23 @@
     return null;
   method then<S extends core::Object* = dynamic>((self::MyFuture::T*) →* asy::FutureOr<self::MyFuture::then::S*>* f, {core::Function* onError = #C1}) → self::MyFuture<self::MyFuture::then::S*>*
     return null;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function* onError, {(core::Object*) →* core::bool* test = #C1}) → asy::Future<self::MyFuture::T*>*
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
+  member-signature no-such-method-forwarder method catchError(core::Function* onError, {(core::Object*) →* core::bool* test = #C1}) → asy::Future<self::MyFuture::T*>*
     return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C4: test}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() →* asy::FutureOr<dynamic>* action) → asy::Future<self::MyFuture::T*>*
+  member-signature no-such-method-forwarder method whenComplete(() →* asy::FutureOr<void>* action) → asy::Future<self::MyFuture::T*>*
     return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration* timeLimit, {generic-covariant-impl () →* asy::FutureOr<self::MyFuture::T*>* onTimeout = #C1}) → asy::Future<self::MyFuture::T*>*
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C9: onTimeout}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T*>*
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C10, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))) as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
+  member-signature no-such-method-forwarder method asStream() → asy::Stream<self::MyFuture::T*>*
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))) as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
+  member-signature no-such-method-forwarder method timeout(core::Duration* timeLimit, {generic-covariant-impl () →* asy::FutureOr<self::MyFuture::T*>* onTimeout = #C1}) → asy::Future<self::MyFuture::T*>*
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C10: onTimeout}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
 }
 static method test() → void {
   asy::Future<dynamic>* f;
@@ -46,8 +55,8 @@
         asy::_completeOnAsyncReturn(:async_completer, :return_value);
         return;
       }
-      on dynamic catch(dynamic :exception, core::StackTrace* :stack_trace) {
-        :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+      on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
+        :async_completer.{asy::Completer::completeError}(exception, stack_trace);
       }
     :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
     :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
@@ -75,8 +84,8 @@
         asy::_completeOnAsyncReturn(:async_completer, :return_value);
         return;
       }
-      on dynamic catch(dynamic :exception, core::StackTrace* :stack_trace) {
-        :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+      on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
+        :async_completer.{asy::Completer::completeError}(exception, stack_trace);
       }
     :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
     :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
@@ -102,8 +111,8 @@
         asy::_completeOnAsyncReturn(:async_completer, :return_value);
         return;
       }
-      on dynamic catch(dynamic :exception, core::StackTrace* :stack_trace) {
-        :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+      on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
+        :async_completer.{asy::Completer::completeError}(exception, stack_trace);
       }
     :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
     :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
@@ -129,8 +138,8 @@
         asy::_completeOnAsyncReturn(:async_completer, :return_value);
         return;
       }
-      on dynamic catch(dynamic :exception, core::StackTrace* :stack_trace) {
-        :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+      on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
+        :async_completer.{asy::Completer::completeError}(exception, stack_trace);
       }
     :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
     :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
@@ -160,8 +169,8 @@
         asy::_completeOnAsyncReturn(:async_completer, :return_value);
         return;
       }
-      on dynamic catch(dynamic :exception, core::StackTrace* :stack_trace) {
-        :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+      on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
+        :async_completer.{asy::Completer::completeError}(exception, stack_trace);
       }
     :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
     :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
@@ -187,8 +196,8 @@
         asy::_completeOnAsyncReturn(:async_completer, :return_value);
         return;
       }
-      on dynamic catch(dynamic :exception, core::StackTrace* :stack_trace) {
-        :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+      on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
+        :async_completer.{asy::Completer::completeError}(exception, stack_trace);
       }
     :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
     :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
@@ -207,7 +216,7 @@
   #C5 = #whenComplete
   #C6 = <dynamic>[]
   #C7 = core::_ImmutableMap<core::Symbol*, dynamic> {_kvPairs:#C6}
-  #C8 = #timeout
-  #C9 = #onTimeout
-  #C10 = #asStream
+  #C8 = #asStream
+  #C9 = #timeout
+  #C10 = #onTimeout
 }
diff --git a/pkg/front_end/testcases/inference/future_then_6.dart.outline.expect b/pkg/front_end/testcases/inference/future_then_6.dart.outline.expect
index 723a215..609e27d 100644
--- a/pkg/front_end/testcases/inference/future_then_6.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/future_then_6.dart.outline.expect
@@ -14,20 +14,25 @@
     ;
   method then<S extends core::Object* = dynamic>((self::MyFuture::T*) →* asy::FutureOr<self::MyFuture::then::S*>* f, {core::Function* onError}) → self::MyFuture<self::MyFuture::then::S*>*
     ;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function* onError, {(core::Object*) →* core::bool* test = #C1}) → asy::Future<self::MyFuture::T*>*
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
+  member-signature no-such-method-forwarder method catchError(core::Function* onError, {(core::Object*) →* core::bool* test}) → asy::Future<self::MyFuture::T*>*
     return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#catchError, 0, const <core::Type*>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#test: test}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() →* asy::FutureOr<dynamic>* action) → asy::Future<self::MyFuture::T*>*
+  member-signature no-such-method-forwarder method whenComplete(() →* asy::FutureOr<void>* action) → asy::Future<self::MyFuture::T*>*
     return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#whenComplete, 0, const <core::Type*>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration* timeLimit, {generic-covariant-impl () →* asy::FutureOr<self::MyFuture::T*>* onTimeout = #C1}) → asy::Future<self::MyFuture::T*>*
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#timeout, 0, const <core::Type*>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#onTimeout: onTimeout}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T*>*
+  member-signature no-such-method-forwarder method asStream() → asy::Stream<self::MyFuture::T*>*
     return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#asStream, 0, const <core::Type*>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{}))) as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
+  member-signature no-such-method-forwarder method timeout(core::Duration* timeLimit, {generic-covariant-impl () →* asy::FutureOr<self::MyFuture::T*>* onTimeout}) → asy::Future<self::MyFuture::T*>*
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#timeout, 0, const <core::Type*>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#onTimeout: onTimeout}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
 }
 static method test() → void
   ;
 static method main() → dynamic
   ;
-
-constants  {
-  #C1 = null
-}
diff --git a/pkg/front_end/testcases/inference/future_then_6.dart.strong.expect b/pkg/front_end/testcases/inference/future_then_6.dart.strong.expect
index de57433..234a7ad 100644
--- a/pkg/front_end/testcases/inference/future_then_6.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/future_then_6.dart.strong.expect
@@ -14,14 +14,23 @@
     return null;
   method then<S extends core::Object* = dynamic>((self::MyFuture::T*) →* asy::FutureOr<self::MyFuture::then::S*>* f, {core::Function* onError = #C1}) → self::MyFuture<self::MyFuture::then::S*>*
     return null;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function* onError, {(core::Object*) →* core::bool* test = #C1}) → asy::Future<self::MyFuture::T*>*
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
+  member-signature no-such-method-forwarder method catchError(core::Function* onError, {(core::Object*) →* core::bool* test = #C1}) → asy::Future<self::MyFuture::T*>*
     return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C4: test}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() →* asy::FutureOr<dynamic>* action) → asy::Future<self::MyFuture::T*>*
+  member-signature no-such-method-forwarder method whenComplete(() →* asy::FutureOr<void>* action) → asy::Future<self::MyFuture::T*>*
     return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration* timeLimit, {generic-covariant-impl () →* asy::FutureOr<self::MyFuture::T*>* onTimeout = #C1}) → asy::Future<self::MyFuture::T*>*
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C9: onTimeout}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T*>*
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C10, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))) as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
+  member-signature no-such-method-forwarder method asStream() → asy::Stream<self::MyFuture::T*>*
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))) as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
+  member-signature no-such-method-forwarder method timeout(core::Duration* timeLimit, {generic-covariant-impl () →* asy::FutureOr<self::MyFuture::T*>* onTimeout = #C1}) → asy::Future<self::MyFuture::T*>*
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C10: onTimeout}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
 }
 static method test() → void {
   asy::Future<dynamic>* f;
@@ -52,7 +61,7 @@
   #C5 = #whenComplete
   #C6 = <dynamic>[]
   #C7 = core::_ImmutableMap<core::Symbol*, dynamic> {_kvPairs:#C6}
-  #C8 = #timeout
-  #C9 = #onTimeout
-  #C10 = #asStream
+  #C8 = #asStream
+  #C9 = #timeout
+  #C10 = #onTimeout
 }
diff --git a/pkg/front_end/testcases/inference/future_then_6.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/future_then_6.dart.strong.transformed.expect
index fd93688..69952d5 100644
--- a/pkg/front_end/testcases/inference/future_then_6.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/future_then_6.dart.strong.transformed.expect
@@ -15,14 +15,23 @@
     return null;
   method then<S extends core::Object* = dynamic>((self::MyFuture::T*) →* asy::FutureOr<self::MyFuture::then::S*>* f, {core::Function* onError = #C1}) → self::MyFuture<self::MyFuture::then::S*>*
     return null;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function* onError, {(core::Object*) →* core::bool* test = #C1}) → asy::Future<self::MyFuture::T*>*
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
+  member-signature no-such-method-forwarder method catchError(core::Function* onError, {(core::Object*) →* core::bool* test = #C1}) → asy::Future<self::MyFuture::T*>*
     return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C4: test}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() →* asy::FutureOr<dynamic>* action) → asy::Future<self::MyFuture::T*>*
+  member-signature no-such-method-forwarder method whenComplete(() →* asy::FutureOr<void>* action) → asy::Future<self::MyFuture::T*>*
     return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration* timeLimit, {generic-covariant-impl () →* asy::FutureOr<self::MyFuture::T*>* onTimeout = #C1}) → asy::Future<self::MyFuture::T*>*
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C9: onTimeout}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T*>*
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C10, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))) as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
+  member-signature no-such-method-forwarder method asStream() → asy::Stream<self::MyFuture::T*>*
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))) as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
+  member-signature no-such-method-forwarder method timeout(core::Duration* timeLimit, {generic-covariant-impl () →* asy::FutureOr<self::MyFuture::T*>* onTimeout = #C1}) → asy::Future<self::MyFuture::T*>*
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C10: onTimeout}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
 }
 static method test() → void {
   asy::Future<dynamic>* f;
@@ -46,8 +55,8 @@
         asy::_completeOnAsyncReturn(:async_completer, :return_value);
         return;
       }
-      on dynamic catch(dynamic :exception, core::StackTrace* :stack_trace) {
-        :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+      on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
+        :async_completer.{asy::Completer::completeError}(exception, stack_trace);
       }
     :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
     :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
@@ -75,8 +84,8 @@
         asy::_completeOnAsyncReturn(:async_completer, :return_value);
         return;
       }
-      on dynamic catch(dynamic :exception, core::StackTrace* :stack_trace) {
-        :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+      on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
+        :async_completer.{asy::Completer::completeError}(exception, stack_trace);
       }
     :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
     :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
@@ -102,8 +111,8 @@
         asy::_completeOnAsyncReturn(:async_completer, :return_value);
         return;
       }
-      on dynamic catch(dynamic :exception, core::StackTrace* :stack_trace) {
-        :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+      on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
+        :async_completer.{asy::Completer::completeError}(exception, stack_trace);
       }
     :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
     :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
@@ -129,8 +138,8 @@
         asy::_completeOnAsyncReturn(:async_completer, :return_value);
         return;
       }
-      on dynamic catch(dynamic :exception, core::StackTrace* :stack_trace) {
-        :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+      on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
+        :async_completer.{asy::Completer::completeError}(exception, stack_trace);
       }
     :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
     :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
@@ -160,8 +169,8 @@
         asy::_completeOnAsyncReturn(:async_completer, :return_value);
         return;
       }
-      on dynamic catch(dynamic :exception, core::StackTrace* :stack_trace) {
-        :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+      on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
+        :async_completer.{asy::Completer::completeError}(exception, stack_trace);
       }
     :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
     :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
@@ -187,8 +196,8 @@
         asy::_completeOnAsyncReturn(:async_completer, :return_value);
         return;
       }
-      on dynamic catch(dynamic :exception, core::StackTrace* :stack_trace) {
-        :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+      on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
+        :async_completer.{asy::Completer::completeError}(exception, stack_trace);
       }
     :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
     :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
@@ -207,7 +216,7 @@
   #C5 = #whenComplete
   #C6 = <dynamic>[]
   #C7 = core::_ImmutableMap<core::Symbol*, dynamic> {_kvPairs:#C6}
-  #C8 = #timeout
-  #C9 = #onTimeout
-  #C10 = #asStream
+  #C8 = #asStream
+  #C9 = #timeout
+  #C10 = #onTimeout
 }
diff --git a/pkg/front_end/testcases/inference/future_then_conditional.dart.outline.expect b/pkg/front_end/testcases/inference/future_then_conditional.dart.outline.expect
index 723a215..609e27d 100644
--- a/pkg/front_end/testcases/inference/future_then_conditional.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/future_then_conditional.dart.outline.expect
@@ -14,20 +14,25 @@
     ;
   method then<S extends core::Object* = dynamic>((self::MyFuture::T*) →* asy::FutureOr<self::MyFuture::then::S*>* f, {core::Function* onError}) → self::MyFuture<self::MyFuture::then::S*>*
     ;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function* onError, {(core::Object*) →* core::bool* test = #C1}) → asy::Future<self::MyFuture::T*>*
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
+  member-signature no-such-method-forwarder method catchError(core::Function* onError, {(core::Object*) →* core::bool* test}) → asy::Future<self::MyFuture::T*>*
     return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#catchError, 0, const <core::Type*>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#test: test}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() →* asy::FutureOr<dynamic>* action) → asy::Future<self::MyFuture::T*>*
+  member-signature no-such-method-forwarder method whenComplete(() →* asy::FutureOr<void>* action) → asy::Future<self::MyFuture::T*>*
     return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#whenComplete, 0, const <core::Type*>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration* timeLimit, {generic-covariant-impl () →* asy::FutureOr<self::MyFuture::T*>* onTimeout = #C1}) → asy::Future<self::MyFuture::T*>*
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#timeout, 0, const <core::Type*>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#onTimeout: onTimeout}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T*>*
+  member-signature no-such-method-forwarder method asStream() → asy::Stream<self::MyFuture::T*>*
     return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#asStream, 0, const <core::Type*>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{}))) as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
+  member-signature no-such-method-forwarder method timeout(core::Duration* timeLimit, {generic-covariant-impl () →* asy::FutureOr<self::MyFuture::T*>* onTimeout}) → asy::Future<self::MyFuture::T*>*
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#timeout, 0, const <core::Type*>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#onTimeout: onTimeout}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
 }
 static method test() → void
   ;
 static method main() → dynamic
   ;
-
-constants  {
-  #C1 = null
-}
diff --git a/pkg/front_end/testcases/inference/future_then_conditional.dart.strong.expect b/pkg/front_end/testcases/inference/future_then_conditional.dart.strong.expect
index 741316a..c68921b 100644
--- a/pkg/front_end/testcases/inference/future_then_conditional.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/future_then_conditional.dart.strong.expect
@@ -14,14 +14,23 @@
     return null;
   method then<S extends core::Object* = dynamic>((self::MyFuture::T*) →* asy::FutureOr<self::MyFuture::then::S*>* f, {core::Function* onError = #C1}) → self::MyFuture<self::MyFuture::then::S*>*
     return null;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function* onError, {(core::Object*) →* core::bool* test = #C1}) → asy::Future<self::MyFuture::T*>*
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
+  member-signature no-such-method-forwarder method catchError(core::Function* onError, {(core::Object*) →* core::bool* test = #C1}) → asy::Future<self::MyFuture::T*>*
     return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C4: test}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() →* asy::FutureOr<dynamic>* action) → asy::Future<self::MyFuture::T*>*
+  member-signature no-such-method-forwarder method whenComplete(() →* asy::FutureOr<void>* action) → asy::Future<self::MyFuture::T*>*
     return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration* timeLimit, {generic-covariant-impl () →* asy::FutureOr<self::MyFuture::T*>* onTimeout = #C1}) → asy::Future<self::MyFuture::T*>*
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C9: onTimeout}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T*>*
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C10, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))) as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
+  member-signature no-such-method-forwarder method asStream() → asy::Stream<self::MyFuture::T*>*
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))) as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
+  member-signature no-such-method-forwarder method timeout(core::Duration* timeLimit, {generic-covariant-impl () →* asy::FutureOr<self::MyFuture::T*>* onTimeout = #C1}) → asy::Future<self::MyFuture::T*>*
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C10: onTimeout}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
 }
 static method test() → void {
   self::MyFuture<core::bool*>* f;
@@ -44,7 +53,7 @@
   #C5 = #whenComplete
   #C6 = <dynamic>[]
   #C7 = core::_ImmutableMap<core::Symbol*, dynamic> {_kvPairs:#C6}
-  #C8 = #timeout
-  #C9 = #onTimeout
-  #C10 = #asStream
+  #C8 = #asStream
+  #C9 = #timeout
+  #C10 = #onTimeout
 }
diff --git a/pkg/front_end/testcases/inference/future_then_conditional.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/future_then_conditional.dart.strong.transformed.expect
index 0ec550c..960ec7b 100644
--- a/pkg/front_end/testcases/inference/future_then_conditional.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/future_then_conditional.dart.strong.transformed.expect
@@ -15,14 +15,23 @@
     return null;
   method then<S extends core::Object* = dynamic>((self::MyFuture::T*) →* asy::FutureOr<self::MyFuture::then::S*>* f, {core::Function* onError = #C1}) → self::MyFuture<self::MyFuture::then::S*>*
     return null;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function* onError, {(core::Object*) →* core::bool* test = #C1}) → asy::Future<self::MyFuture::T*>*
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
+  member-signature no-such-method-forwarder method catchError(core::Function* onError, {(core::Object*) →* core::bool* test = #C1}) → asy::Future<self::MyFuture::T*>*
     return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C4: test}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() →* asy::FutureOr<dynamic>* action) → asy::Future<self::MyFuture::T*>*
+  member-signature no-such-method-forwarder method whenComplete(() →* asy::FutureOr<void>* action) → asy::Future<self::MyFuture::T*>*
     return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration* timeLimit, {generic-covariant-impl () →* asy::FutureOr<self::MyFuture::T*>* onTimeout = #C1}) → asy::Future<self::MyFuture::T*>*
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C9: onTimeout}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T*>*
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C10, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))) as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
+  member-signature no-such-method-forwarder method asStream() → asy::Stream<self::MyFuture::T*>*
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))) as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
+  member-signature no-such-method-forwarder method timeout(core::Duration* timeLimit, {generic-covariant-impl () →* asy::FutureOr<self::MyFuture::T*>* onTimeout = #C1}) → asy::Future<self::MyFuture::T*>*
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C10: onTimeout}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
 }
 static method test() → void {
   self::MyFuture<core::bool*>* f;
@@ -53,8 +62,8 @@
         asy::_completeOnAsyncReturn(:async_completer, :return_value);
         return;
       }
-      on dynamic catch(dynamic :exception, core::StackTrace* :stack_trace) {
-        :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+      on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
+        :async_completer.{asy::Completer::completeError}(exception, stack_trace);
       }
     :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
     :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
@@ -82,8 +91,8 @@
         asy::_completeOnAsyncReturn(:async_completer, :return_value);
         return;
       }
-      on dynamic catch(dynamic :exception, core::StackTrace* :stack_trace) {
-        :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+      on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
+        :async_completer.{asy::Completer::completeError}(exception, stack_trace);
       }
     :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
     :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
@@ -106,7 +115,7 @@
   #C5 = #whenComplete
   #C6 = <dynamic>[]
   #C7 = core::_ImmutableMap<core::Symbol*, dynamic> {_kvPairs:#C6}
-  #C8 = #timeout
-  #C9 = #onTimeout
-  #C10 = #asStream
+  #C8 = #asStream
+  #C9 = #timeout
+  #C10 = #onTimeout
 }
diff --git a/pkg/front_end/testcases/inference/future_then_conditional_2.dart.outline.expect b/pkg/front_end/testcases/inference/future_then_conditional_2.dart.outline.expect
index 723a215..609e27d 100644
--- a/pkg/front_end/testcases/inference/future_then_conditional_2.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/future_then_conditional_2.dart.outline.expect
@@ -14,20 +14,25 @@
     ;
   method then<S extends core::Object* = dynamic>((self::MyFuture::T*) →* asy::FutureOr<self::MyFuture::then::S*>* f, {core::Function* onError}) → self::MyFuture<self::MyFuture::then::S*>*
     ;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function* onError, {(core::Object*) →* core::bool* test = #C1}) → asy::Future<self::MyFuture::T*>*
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
+  member-signature no-such-method-forwarder method catchError(core::Function* onError, {(core::Object*) →* core::bool* test}) → asy::Future<self::MyFuture::T*>*
     return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#catchError, 0, const <core::Type*>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#test: test}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() →* asy::FutureOr<dynamic>* action) → asy::Future<self::MyFuture::T*>*
+  member-signature no-such-method-forwarder method whenComplete(() →* asy::FutureOr<void>* action) → asy::Future<self::MyFuture::T*>*
     return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#whenComplete, 0, const <core::Type*>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration* timeLimit, {generic-covariant-impl () →* asy::FutureOr<self::MyFuture::T*>* onTimeout = #C1}) → asy::Future<self::MyFuture::T*>*
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#timeout, 0, const <core::Type*>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#onTimeout: onTimeout}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T*>*
+  member-signature no-such-method-forwarder method asStream() → asy::Stream<self::MyFuture::T*>*
     return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#asStream, 0, const <core::Type*>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{}))) as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
+  member-signature no-such-method-forwarder method timeout(core::Duration* timeLimit, {generic-covariant-impl () →* asy::FutureOr<self::MyFuture::T*>* onTimeout}) → asy::Future<self::MyFuture::T*>*
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#timeout, 0, const <core::Type*>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#onTimeout: onTimeout}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
 }
 static method test() → void
   ;
 static method main() → dynamic
   ;
-
-constants  {
-  #C1 = null
-}
diff --git a/pkg/front_end/testcases/inference/future_then_conditional_2.dart.strong.expect b/pkg/front_end/testcases/inference/future_then_conditional_2.dart.strong.expect
index c1241f0..80bb963 100644
--- a/pkg/front_end/testcases/inference/future_then_conditional_2.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/future_then_conditional_2.dart.strong.expect
@@ -14,14 +14,23 @@
     return null;
   method then<S extends core::Object* = dynamic>((self::MyFuture::T*) →* asy::FutureOr<self::MyFuture::then::S*>* f, {core::Function* onError = #C1}) → self::MyFuture<self::MyFuture::then::S*>*
     return null;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function* onError, {(core::Object*) →* core::bool* test = #C1}) → asy::Future<self::MyFuture::T*>*
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
+  member-signature no-such-method-forwarder method catchError(core::Function* onError, {(core::Object*) →* core::bool* test = #C1}) → asy::Future<self::MyFuture::T*>*
     return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C4: test}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() →* asy::FutureOr<dynamic>* action) → asy::Future<self::MyFuture::T*>*
+  member-signature no-such-method-forwarder method whenComplete(() →* asy::FutureOr<void>* action) → asy::Future<self::MyFuture::T*>*
     return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration* timeLimit, {generic-covariant-impl () →* asy::FutureOr<self::MyFuture::T*>* onTimeout = #C1}) → asy::Future<self::MyFuture::T*>*
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C9: onTimeout}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T*>*
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C10, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))) as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
+  member-signature no-such-method-forwarder method asStream() → asy::Stream<self::MyFuture::T*>*
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))) as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
+  member-signature no-such-method-forwarder method timeout(core::Duration* timeLimit, {generic-covariant-impl () →* asy::FutureOr<self::MyFuture::T*>* onTimeout = #C1}) → asy::Future<self::MyFuture::T*>*
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C10: onTimeout}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
 }
 static method test() → void {
   self::MyFuture<core::bool*>* f;
@@ -44,7 +53,7 @@
   #C5 = #whenComplete
   #C6 = <dynamic>[]
   #C7 = core::_ImmutableMap<core::Symbol*, dynamic> {_kvPairs:#C6}
-  #C8 = #timeout
-  #C9 = #onTimeout
-  #C10 = #asStream
+  #C8 = #asStream
+  #C9 = #timeout
+  #C10 = #onTimeout
 }
diff --git a/pkg/front_end/testcases/inference/future_then_conditional_2.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/future_then_conditional_2.dart.strong.transformed.expect
index e3e191c..7651455 100644
--- a/pkg/front_end/testcases/inference/future_then_conditional_2.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/future_then_conditional_2.dart.strong.transformed.expect
@@ -15,14 +15,23 @@
     return null;
   method then<S extends core::Object* = dynamic>((self::MyFuture::T*) →* asy::FutureOr<self::MyFuture::then::S*>* f, {core::Function* onError = #C1}) → self::MyFuture<self::MyFuture::then::S*>*
     return null;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function* onError, {(core::Object*) →* core::bool* test = #C1}) → asy::Future<self::MyFuture::T*>*
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
+  member-signature no-such-method-forwarder method catchError(core::Function* onError, {(core::Object*) →* core::bool* test = #C1}) → asy::Future<self::MyFuture::T*>*
     return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C4: test}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() →* asy::FutureOr<dynamic>* action) → asy::Future<self::MyFuture::T*>*
+  member-signature no-such-method-forwarder method whenComplete(() →* asy::FutureOr<void>* action) → asy::Future<self::MyFuture::T*>*
     return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration* timeLimit, {generic-covariant-impl () →* asy::FutureOr<self::MyFuture::T*>* onTimeout = #C1}) → asy::Future<self::MyFuture::T*>*
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C9: onTimeout}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T*>*
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C10, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))) as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
+  member-signature no-such-method-forwarder method asStream() → asy::Stream<self::MyFuture::T*>*
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))) as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
+  member-signature no-such-method-forwarder method timeout(core::Duration* timeLimit, {generic-covariant-impl () →* asy::FutureOr<self::MyFuture::T*>* onTimeout = #C1}) → asy::Future<self::MyFuture::T*>*
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C10: onTimeout}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
 }
 static method test() → void {
   self::MyFuture<core::bool*>* f;
@@ -53,8 +62,8 @@
         asy::_completeOnAsyncReturn(:async_completer, :return_value);
         return;
       }
-      on dynamic catch(dynamic :exception, core::StackTrace* :stack_trace) {
-        :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+      on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
+        :async_completer.{asy::Completer::completeError}(exception, stack_trace);
       }
     :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
     :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
@@ -82,8 +91,8 @@
         asy::_completeOnAsyncReturn(:async_completer, :return_value);
         return;
       }
-      on dynamic catch(dynamic :exception, core::StackTrace* :stack_trace) {
-        :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+      on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
+        :async_completer.{asy::Completer::completeError}(exception, stack_trace);
       }
     :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
     :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
@@ -106,7 +115,7 @@
   #C5 = #whenComplete
   #C6 = <dynamic>[]
   #C7 = core::_ImmutableMap<core::Symbol*, dynamic> {_kvPairs:#C6}
-  #C8 = #timeout
-  #C9 = #onTimeout
-  #C10 = #asStream
+  #C8 = #asStream
+  #C9 = #timeout
+  #C10 = #onTimeout
 }
diff --git a/pkg/front_end/testcases/inference/future_then_conditional_3.dart.outline.expect b/pkg/front_end/testcases/inference/future_then_conditional_3.dart.outline.expect
index 723a215..609e27d 100644
--- a/pkg/front_end/testcases/inference/future_then_conditional_3.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/future_then_conditional_3.dart.outline.expect
@@ -14,20 +14,25 @@
     ;
   method then<S extends core::Object* = dynamic>((self::MyFuture::T*) →* asy::FutureOr<self::MyFuture::then::S*>* f, {core::Function* onError}) → self::MyFuture<self::MyFuture::then::S*>*
     ;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function* onError, {(core::Object*) →* core::bool* test = #C1}) → asy::Future<self::MyFuture::T*>*
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
+  member-signature no-such-method-forwarder method catchError(core::Function* onError, {(core::Object*) →* core::bool* test}) → asy::Future<self::MyFuture::T*>*
     return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#catchError, 0, const <core::Type*>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#test: test}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() →* asy::FutureOr<dynamic>* action) → asy::Future<self::MyFuture::T*>*
+  member-signature no-such-method-forwarder method whenComplete(() →* asy::FutureOr<void>* action) → asy::Future<self::MyFuture::T*>*
     return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#whenComplete, 0, const <core::Type*>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration* timeLimit, {generic-covariant-impl () →* asy::FutureOr<self::MyFuture::T*>* onTimeout = #C1}) → asy::Future<self::MyFuture::T*>*
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#timeout, 0, const <core::Type*>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#onTimeout: onTimeout}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T*>*
+  member-signature no-such-method-forwarder method asStream() → asy::Stream<self::MyFuture::T*>*
     return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#asStream, 0, const <core::Type*>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{}))) as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
+  member-signature no-such-method-forwarder method timeout(core::Duration* timeLimit, {generic-covariant-impl () →* asy::FutureOr<self::MyFuture::T*>* onTimeout}) → asy::Future<self::MyFuture::T*>*
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#timeout, 0, const <core::Type*>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#onTimeout: onTimeout}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
 }
 static method test() → void
   ;
 static method main() → dynamic
   ;
-
-constants  {
-  #C1 = null
-}
diff --git a/pkg/front_end/testcases/inference/future_then_conditional_3.dart.strong.expect b/pkg/front_end/testcases/inference/future_then_conditional_3.dart.strong.expect
index e223058..7c4b09e 100644
--- a/pkg/front_end/testcases/inference/future_then_conditional_3.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/future_then_conditional_3.dart.strong.expect
@@ -14,14 +14,23 @@
     return null;
   method then<S extends core::Object* = dynamic>((self::MyFuture::T*) →* asy::FutureOr<self::MyFuture::then::S*>* f, {core::Function* onError = #C1}) → self::MyFuture<self::MyFuture::then::S*>*
     return null;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function* onError, {(core::Object*) →* core::bool* test = #C1}) → asy::Future<self::MyFuture::T*>*
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
+  member-signature no-such-method-forwarder method catchError(core::Function* onError, {(core::Object*) →* core::bool* test = #C1}) → asy::Future<self::MyFuture::T*>*
     return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C4: test}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() →* asy::FutureOr<dynamic>* action) → asy::Future<self::MyFuture::T*>*
+  member-signature no-such-method-forwarder method whenComplete(() →* asy::FutureOr<void>* action) → asy::Future<self::MyFuture::T*>*
     return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration* timeLimit, {generic-covariant-impl () →* asy::FutureOr<self::MyFuture::T*>* onTimeout = #C1}) → asy::Future<self::MyFuture::T*>*
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C9: onTimeout}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T*>*
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C10, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))) as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
+  member-signature no-such-method-forwarder method asStream() → asy::Stream<self::MyFuture::T*>*
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))) as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
+  member-signature no-such-method-forwarder method timeout(core::Duration* timeLimit, {generic-covariant-impl () →* asy::FutureOr<self::MyFuture::T*>* onTimeout = #C1}) → asy::Future<self::MyFuture::T*>*
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C10: onTimeout}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
 }
 static method test() → void {
   self::MyFuture<core::bool*>* f;
@@ -44,7 +53,7 @@
   #C5 = #whenComplete
   #C6 = <dynamic>[]
   #C7 = core::_ImmutableMap<core::Symbol*, dynamic> {_kvPairs:#C6}
-  #C8 = #timeout
-  #C9 = #onTimeout
-  #C10 = #asStream
+  #C8 = #asStream
+  #C9 = #timeout
+  #C10 = #onTimeout
 }
diff --git a/pkg/front_end/testcases/inference/future_then_conditional_3.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/future_then_conditional_3.dart.strong.transformed.expect
index aaf989c..95b376b 100644
--- a/pkg/front_end/testcases/inference/future_then_conditional_3.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/future_then_conditional_3.dart.strong.transformed.expect
@@ -15,14 +15,23 @@
     return null;
   method then<S extends core::Object* = dynamic>((self::MyFuture::T*) →* asy::FutureOr<self::MyFuture::then::S*>* f, {core::Function* onError = #C1}) → self::MyFuture<self::MyFuture::then::S*>*
     return null;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function* onError, {(core::Object*) →* core::bool* test = #C1}) → asy::Future<self::MyFuture::T*>*
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
+  member-signature no-such-method-forwarder method catchError(core::Function* onError, {(core::Object*) →* core::bool* test = #C1}) → asy::Future<self::MyFuture::T*>*
     return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C4: test}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() →* asy::FutureOr<dynamic>* action) → asy::Future<self::MyFuture::T*>*
+  member-signature no-such-method-forwarder method whenComplete(() →* asy::FutureOr<void>* action) → asy::Future<self::MyFuture::T*>*
     return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration* timeLimit, {generic-covariant-impl () →* asy::FutureOr<self::MyFuture::T*>* onTimeout = #C1}) → asy::Future<self::MyFuture::T*>*
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C9: onTimeout}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T*>*
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C10, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))) as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
+  member-signature no-such-method-forwarder method asStream() → asy::Stream<self::MyFuture::T*>*
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))) as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
+  member-signature no-such-method-forwarder method timeout(core::Duration* timeLimit, {generic-covariant-impl () →* asy::FutureOr<self::MyFuture::T*>* onTimeout = #C1}) → asy::Future<self::MyFuture::T*>*
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C10: onTimeout}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
 }
 static method test() → void {
   self::MyFuture<core::bool*>* f;
@@ -53,8 +62,8 @@
         asy::_completeOnAsyncReturn(:async_completer, :return_value);
         return;
       }
-      on dynamic catch(dynamic :exception, core::StackTrace* :stack_trace) {
-        :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+      on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
+        :async_completer.{asy::Completer::completeError}(exception, stack_trace);
       }
     :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
     :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
@@ -82,8 +91,8 @@
         asy::_completeOnAsyncReturn(:async_completer, :return_value);
         return;
       }
-      on dynamic catch(dynamic :exception, core::StackTrace* :stack_trace) {
-        :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+      on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
+        :async_completer.{asy::Completer::completeError}(exception, stack_trace);
       }
     :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
     :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
@@ -106,7 +115,7 @@
   #C5 = #whenComplete
   #C6 = <dynamic>[]
   #C7 = core::_ImmutableMap<core::Symbol*, dynamic> {_kvPairs:#C6}
-  #C8 = #timeout
-  #C9 = #onTimeout
-  #C10 = #asStream
+  #C8 = #asStream
+  #C9 = #timeout
+  #C10 = #onTimeout
 }
diff --git a/pkg/front_end/testcases/inference/future_then_conditional_4.dart.outline.expect b/pkg/front_end/testcases/inference/future_then_conditional_4.dart.outline.expect
index 723a215..609e27d 100644
--- a/pkg/front_end/testcases/inference/future_then_conditional_4.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/future_then_conditional_4.dart.outline.expect
@@ -14,20 +14,25 @@
     ;
   method then<S extends core::Object* = dynamic>((self::MyFuture::T*) →* asy::FutureOr<self::MyFuture::then::S*>* f, {core::Function* onError}) → self::MyFuture<self::MyFuture::then::S*>*
     ;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function* onError, {(core::Object*) →* core::bool* test = #C1}) → asy::Future<self::MyFuture::T*>*
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
+  member-signature no-such-method-forwarder method catchError(core::Function* onError, {(core::Object*) →* core::bool* test}) → asy::Future<self::MyFuture::T*>*
     return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#catchError, 0, const <core::Type*>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#test: test}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() →* asy::FutureOr<dynamic>* action) → asy::Future<self::MyFuture::T*>*
+  member-signature no-such-method-forwarder method whenComplete(() →* asy::FutureOr<void>* action) → asy::Future<self::MyFuture::T*>*
     return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#whenComplete, 0, const <core::Type*>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration* timeLimit, {generic-covariant-impl () →* asy::FutureOr<self::MyFuture::T*>* onTimeout = #C1}) → asy::Future<self::MyFuture::T*>*
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#timeout, 0, const <core::Type*>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#onTimeout: onTimeout}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T*>*
+  member-signature no-such-method-forwarder method asStream() → asy::Stream<self::MyFuture::T*>*
     return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#asStream, 0, const <core::Type*>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{}))) as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
+  member-signature no-such-method-forwarder method timeout(core::Duration* timeLimit, {generic-covariant-impl () →* asy::FutureOr<self::MyFuture::T*>* onTimeout}) → asy::Future<self::MyFuture::T*>*
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#timeout, 0, const <core::Type*>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#onTimeout: onTimeout}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
 }
 static method test() → void
   ;
 static method main() → dynamic
   ;
-
-constants  {
-  #C1 = null
-}
diff --git a/pkg/front_end/testcases/inference/future_then_conditional_4.dart.strong.expect b/pkg/front_end/testcases/inference/future_then_conditional_4.dart.strong.expect
index c8a5337..a90b064 100644
--- a/pkg/front_end/testcases/inference/future_then_conditional_4.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/future_then_conditional_4.dart.strong.expect
@@ -14,14 +14,23 @@
     return null;
   method then<S extends core::Object* = dynamic>((self::MyFuture::T*) →* asy::FutureOr<self::MyFuture::then::S*>* f, {core::Function* onError = #C1}) → self::MyFuture<self::MyFuture::then::S*>*
     return null;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function* onError, {(core::Object*) →* core::bool* test = #C1}) → asy::Future<self::MyFuture::T*>*
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
+  member-signature no-such-method-forwarder method catchError(core::Function* onError, {(core::Object*) →* core::bool* test = #C1}) → asy::Future<self::MyFuture::T*>*
     return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C4: test}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() →* asy::FutureOr<dynamic>* action) → asy::Future<self::MyFuture::T*>*
+  member-signature no-such-method-forwarder method whenComplete(() →* asy::FutureOr<void>* action) → asy::Future<self::MyFuture::T*>*
     return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration* timeLimit, {generic-covariant-impl () →* asy::FutureOr<self::MyFuture::T*>* onTimeout = #C1}) → asy::Future<self::MyFuture::T*>*
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C9: onTimeout}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T*>*
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C10, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))) as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
+  member-signature no-such-method-forwarder method asStream() → asy::Stream<self::MyFuture::T*>*
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))) as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
+  member-signature no-such-method-forwarder method timeout(core::Duration* timeLimit, {generic-covariant-impl () →* asy::FutureOr<self::MyFuture::T*>* onTimeout = #C1}) → asy::Future<self::MyFuture::T*>*
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C10: onTimeout}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
 }
 static method test() → void {
   self::MyFuture<core::bool*>* f;
@@ -44,7 +53,7 @@
   #C5 = #whenComplete
   #C6 = <dynamic>[]
   #C7 = core::_ImmutableMap<core::Symbol*, dynamic> {_kvPairs:#C6}
-  #C8 = #timeout
-  #C9 = #onTimeout
-  #C10 = #asStream
+  #C8 = #asStream
+  #C9 = #timeout
+  #C10 = #onTimeout
 }
diff --git a/pkg/front_end/testcases/inference/future_then_conditional_4.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/future_then_conditional_4.dart.strong.transformed.expect
index d767998..4c3c430 100644
--- a/pkg/front_end/testcases/inference/future_then_conditional_4.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/future_then_conditional_4.dart.strong.transformed.expect
@@ -15,14 +15,23 @@
     return null;
   method then<S extends core::Object* = dynamic>((self::MyFuture::T*) →* asy::FutureOr<self::MyFuture::then::S*>* f, {core::Function* onError = #C1}) → self::MyFuture<self::MyFuture::then::S*>*
     return null;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function* onError, {(core::Object*) →* core::bool* test = #C1}) → asy::Future<self::MyFuture::T*>*
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
+  member-signature no-such-method-forwarder method catchError(core::Function* onError, {(core::Object*) →* core::bool* test = #C1}) → asy::Future<self::MyFuture::T*>*
     return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C4: test}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() →* asy::FutureOr<dynamic>* action) → asy::Future<self::MyFuture::T*>*
+  member-signature no-such-method-forwarder method whenComplete(() →* asy::FutureOr<void>* action) → asy::Future<self::MyFuture::T*>*
     return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration* timeLimit, {generic-covariant-impl () →* asy::FutureOr<self::MyFuture::T*>* onTimeout = #C1}) → asy::Future<self::MyFuture::T*>*
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C9: onTimeout}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T*>*
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C10, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))) as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
+  member-signature no-such-method-forwarder method asStream() → asy::Stream<self::MyFuture::T*>*
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))) as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
+  member-signature no-such-method-forwarder method timeout(core::Duration* timeLimit, {generic-covariant-impl () →* asy::FutureOr<self::MyFuture::T*>* onTimeout = #C1}) → asy::Future<self::MyFuture::T*>*
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C10: onTimeout}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
 }
 static method test() → void {
   self::MyFuture<core::bool*>* f;
@@ -53,8 +62,8 @@
         asy::_completeOnAsyncReturn(:async_completer, :return_value);
         return;
       }
-      on dynamic catch(dynamic :exception, core::StackTrace* :stack_trace) {
-        :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+      on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
+        :async_completer.{asy::Completer::completeError}(exception, stack_trace);
       }
     :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
     :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
@@ -82,8 +91,8 @@
         asy::_completeOnAsyncReturn(:async_completer, :return_value);
         return;
       }
-      on dynamic catch(dynamic :exception, core::StackTrace* :stack_trace) {
-        :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+      on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
+        :async_completer.{asy::Completer::completeError}(exception, stack_trace);
       }
     :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
     :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
@@ -106,7 +115,7 @@
   #C5 = #whenComplete
   #C6 = <dynamic>[]
   #C7 = core::_ImmutableMap<core::Symbol*, dynamic> {_kvPairs:#C6}
-  #C8 = #timeout
-  #C9 = #onTimeout
-  #C10 = #asStream
+  #C8 = #asStream
+  #C9 = #timeout
+  #C10 = #onTimeout
 }
diff --git a/pkg/front_end/testcases/inference/future_then_conditional_5.dart.outline.expect b/pkg/front_end/testcases/inference/future_then_conditional_5.dart.outline.expect
index 723a215..609e27d 100644
--- a/pkg/front_end/testcases/inference/future_then_conditional_5.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/future_then_conditional_5.dart.outline.expect
@@ -14,20 +14,25 @@
     ;
   method then<S extends core::Object* = dynamic>((self::MyFuture::T*) →* asy::FutureOr<self::MyFuture::then::S*>* f, {core::Function* onError}) → self::MyFuture<self::MyFuture::then::S*>*
     ;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function* onError, {(core::Object*) →* core::bool* test = #C1}) → asy::Future<self::MyFuture::T*>*
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
+  member-signature no-such-method-forwarder method catchError(core::Function* onError, {(core::Object*) →* core::bool* test}) → asy::Future<self::MyFuture::T*>*
     return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#catchError, 0, const <core::Type*>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#test: test}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() →* asy::FutureOr<dynamic>* action) → asy::Future<self::MyFuture::T*>*
+  member-signature no-such-method-forwarder method whenComplete(() →* asy::FutureOr<void>* action) → asy::Future<self::MyFuture::T*>*
     return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#whenComplete, 0, const <core::Type*>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration* timeLimit, {generic-covariant-impl () →* asy::FutureOr<self::MyFuture::T*>* onTimeout = #C1}) → asy::Future<self::MyFuture::T*>*
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#timeout, 0, const <core::Type*>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#onTimeout: onTimeout}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T*>*
+  member-signature no-such-method-forwarder method asStream() → asy::Stream<self::MyFuture::T*>*
     return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#asStream, 0, const <core::Type*>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{}))) as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
+  member-signature no-such-method-forwarder method timeout(core::Duration* timeLimit, {generic-covariant-impl () →* asy::FutureOr<self::MyFuture::T*>* onTimeout}) → asy::Future<self::MyFuture::T*>*
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#timeout, 0, const <core::Type*>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#onTimeout: onTimeout}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
 }
 static method test() → void
   ;
 static method main() → dynamic
   ;
-
-constants  {
-  #C1 = null
-}
diff --git a/pkg/front_end/testcases/inference/future_then_conditional_5.dart.strong.expect b/pkg/front_end/testcases/inference/future_then_conditional_5.dart.strong.expect
index 4e1ca61..33d4ac3 100644
--- a/pkg/front_end/testcases/inference/future_then_conditional_5.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/future_then_conditional_5.dart.strong.expect
@@ -14,14 +14,23 @@
     return null;
   method then<S extends core::Object* = dynamic>((self::MyFuture::T*) →* asy::FutureOr<self::MyFuture::then::S*>* f, {core::Function* onError = #C1}) → self::MyFuture<self::MyFuture::then::S*>*
     return null;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function* onError, {(core::Object*) →* core::bool* test = #C1}) → asy::Future<self::MyFuture::T*>*
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
+  member-signature no-such-method-forwarder method catchError(core::Function* onError, {(core::Object*) →* core::bool* test = #C1}) → asy::Future<self::MyFuture::T*>*
     return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C4: test}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() →* asy::FutureOr<dynamic>* action) → asy::Future<self::MyFuture::T*>*
+  member-signature no-such-method-forwarder method whenComplete(() →* asy::FutureOr<void>* action) → asy::Future<self::MyFuture::T*>*
     return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration* timeLimit, {generic-covariant-impl () →* asy::FutureOr<self::MyFuture::T*>* onTimeout = #C1}) → asy::Future<self::MyFuture::T*>*
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C9: onTimeout}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T*>*
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C10, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))) as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
+  member-signature no-such-method-forwarder method asStream() → asy::Stream<self::MyFuture::T*>*
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))) as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
+  member-signature no-such-method-forwarder method timeout(core::Duration* timeLimit, {generic-covariant-impl () →* asy::FutureOr<self::MyFuture::T*>* onTimeout = #C1}) → asy::Future<self::MyFuture::T*>*
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C10: onTimeout}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
 }
 static method test() → void {
   asy::Future<core::bool*>* f;
@@ -44,7 +53,7 @@
   #C5 = #whenComplete
   #C6 = <dynamic>[]
   #C7 = core::_ImmutableMap<core::Symbol*, dynamic> {_kvPairs:#C6}
-  #C8 = #timeout
-  #C9 = #onTimeout
-  #C10 = #asStream
+  #C8 = #asStream
+  #C9 = #timeout
+  #C10 = #onTimeout
 }
diff --git a/pkg/front_end/testcases/inference/future_then_conditional_5.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/future_then_conditional_5.dart.strong.transformed.expect
index 0702c99..ab7955f 100644
--- a/pkg/front_end/testcases/inference/future_then_conditional_5.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/future_then_conditional_5.dart.strong.transformed.expect
@@ -15,14 +15,23 @@
     return null;
   method then<S extends core::Object* = dynamic>((self::MyFuture::T*) →* asy::FutureOr<self::MyFuture::then::S*>* f, {core::Function* onError = #C1}) → self::MyFuture<self::MyFuture::then::S*>*
     return null;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function* onError, {(core::Object*) →* core::bool* test = #C1}) → asy::Future<self::MyFuture::T*>*
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
+  member-signature no-such-method-forwarder method catchError(core::Function* onError, {(core::Object*) →* core::bool* test = #C1}) → asy::Future<self::MyFuture::T*>*
     return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C4: test}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() →* asy::FutureOr<dynamic>* action) → asy::Future<self::MyFuture::T*>*
+  member-signature no-such-method-forwarder method whenComplete(() →* asy::FutureOr<void>* action) → asy::Future<self::MyFuture::T*>*
     return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration* timeLimit, {generic-covariant-impl () →* asy::FutureOr<self::MyFuture::T*>* onTimeout = #C1}) → asy::Future<self::MyFuture::T*>*
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C9: onTimeout}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T*>*
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C10, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))) as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
+  member-signature no-such-method-forwarder method asStream() → asy::Stream<self::MyFuture::T*>*
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))) as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
+  member-signature no-such-method-forwarder method timeout(core::Duration* timeLimit, {generic-covariant-impl () →* asy::FutureOr<self::MyFuture::T*>* onTimeout = #C1}) → asy::Future<self::MyFuture::T*>*
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C10: onTimeout}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
 }
 static method test() → void {
   asy::Future<core::bool*>* f;
@@ -53,8 +62,8 @@
         asy::_completeOnAsyncReturn(:async_completer, :return_value);
         return;
       }
-      on dynamic catch(dynamic :exception, core::StackTrace* :stack_trace) {
-        :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+      on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
+        :async_completer.{asy::Completer::completeError}(exception, stack_trace);
       }
     :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
     :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
@@ -82,8 +91,8 @@
         asy::_completeOnAsyncReturn(:async_completer, :return_value);
         return;
       }
-      on dynamic catch(dynamic :exception, core::StackTrace* :stack_trace) {
-        :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+      on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
+        :async_completer.{asy::Completer::completeError}(exception, stack_trace);
       }
     :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
     :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
@@ -106,7 +115,7 @@
   #C5 = #whenComplete
   #C6 = <dynamic>[]
   #C7 = core::_ImmutableMap<core::Symbol*, dynamic> {_kvPairs:#C6}
-  #C8 = #timeout
-  #C9 = #onTimeout
-  #C10 = #asStream
+  #C8 = #asStream
+  #C9 = #timeout
+  #C10 = #onTimeout
 }
diff --git a/pkg/front_end/testcases/inference/future_then_conditional_6.dart.outline.expect b/pkg/front_end/testcases/inference/future_then_conditional_6.dart.outline.expect
index 723a215..609e27d 100644
--- a/pkg/front_end/testcases/inference/future_then_conditional_6.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/future_then_conditional_6.dart.outline.expect
@@ -14,20 +14,25 @@
     ;
   method then<S extends core::Object* = dynamic>((self::MyFuture::T*) →* asy::FutureOr<self::MyFuture::then::S*>* f, {core::Function* onError}) → self::MyFuture<self::MyFuture::then::S*>*
     ;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function* onError, {(core::Object*) →* core::bool* test = #C1}) → asy::Future<self::MyFuture::T*>*
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
+  member-signature no-such-method-forwarder method catchError(core::Function* onError, {(core::Object*) →* core::bool* test}) → asy::Future<self::MyFuture::T*>*
     return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#catchError, 0, const <core::Type*>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#test: test}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() →* asy::FutureOr<dynamic>* action) → asy::Future<self::MyFuture::T*>*
+  member-signature no-such-method-forwarder method whenComplete(() →* asy::FutureOr<void>* action) → asy::Future<self::MyFuture::T*>*
     return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#whenComplete, 0, const <core::Type*>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration* timeLimit, {generic-covariant-impl () →* asy::FutureOr<self::MyFuture::T*>* onTimeout = #C1}) → asy::Future<self::MyFuture::T*>*
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#timeout, 0, const <core::Type*>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#onTimeout: onTimeout}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T*>*
+  member-signature no-such-method-forwarder method asStream() → asy::Stream<self::MyFuture::T*>*
     return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#asStream, 0, const <core::Type*>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{}))) as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
+  member-signature no-such-method-forwarder method timeout(core::Duration* timeLimit, {generic-covariant-impl () →* asy::FutureOr<self::MyFuture::T*>* onTimeout}) → asy::Future<self::MyFuture::T*>*
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#timeout, 0, const <core::Type*>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#onTimeout: onTimeout}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
 }
 static method test() → void
   ;
 static method main() → dynamic
   ;
-
-constants  {
-  #C1 = null
-}
diff --git a/pkg/front_end/testcases/inference/future_then_conditional_6.dart.strong.expect b/pkg/front_end/testcases/inference/future_then_conditional_6.dart.strong.expect
index b54dfc2..9d0829f 100644
--- a/pkg/front_end/testcases/inference/future_then_conditional_6.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/future_then_conditional_6.dart.strong.expect
@@ -14,14 +14,23 @@
     return null;
   method then<S extends core::Object* = dynamic>((self::MyFuture::T*) →* asy::FutureOr<self::MyFuture::then::S*>* f, {core::Function* onError = #C1}) → self::MyFuture<self::MyFuture::then::S*>*
     return null;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function* onError, {(core::Object*) →* core::bool* test = #C1}) → asy::Future<self::MyFuture::T*>*
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
+  member-signature no-such-method-forwarder method catchError(core::Function* onError, {(core::Object*) →* core::bool* test = #C1}) → asy::Future<self::MyFuture::T*>*
     return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C4: test}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() →* asy::FutureOr<dynamic>* action) → asy::Future<self::MyFuture::T*>*
+  member-signature no-such-method-forwarder method whenComplete(() →* asy::FutureOr<void>* action) → asy::Future<self::MyFuture::T*>*
     return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration* timeLimit, {generic-covariant-impl () →* asy::FutureOr<self::MyFuture::T*>* onTimeout = #C1}) → asy::Future<self::MyFuture::T*>*
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C9: onTimeout}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T*>*
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C10, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))) as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
+  member-signature no-such-method-forwarder method asStream() → asy::Stream<self::MyFuture::T*>*
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))) as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
+  member-signature no-such-method-forwarder method timeout(core::Duration* timeLimit, {generic-covariant-impl () →* asy::FutureOr<self::MyFuture::T*>* onTimeout = #C1}) → asy::Future<self::MyFuture::T*>*
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C10: onTimeout}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
 }
 static method test() → void {
   asy::Future<core::bool*>* f;
@@ -44,7 +53,7 @@
   #C5 = #whenComplete
   #C6 = <dynamic>[]
   #C7 = core::_ImmutableMap<core::Symbol*, dynamic> {_kvPairs:#C6}
-  #C8 = #timeout
-  #C9 = #onTimeout
-  #C10 = #asStream
+  #C8 = #asStream
+  #C9 = #timeout
+  #C10 = #onTimeout
 }
diff --git a/pkg/front_end/testcases/inference/future_then_conditional_6.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/future_then_conditional_6.dart.strong.transformed.expect
index 7a8790e..c72af11 100644
--- a/pkg/front_end/testcases/inference/future_then_conditional_6.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/future_then_conditional_6.dart.strong.transformed.expect
@@ -15,14 +15,23 @@
     return null;
   method then<S extends core::Object* = dynamic>((self::MyFuture::T*) →* asy::FutureOr<self::MyFuture::then::S*>* f, {core::Function* onError = #C1}) → self::MyFuture<self::MyFuture::then::S*>*
     return null;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function* onError, {(core::Object*) →* core::bool* test = #C1}) → asy::Future<self::MyFuture::T*>*
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
+  member-signature no-such-method-forwarder method catchError(core::Function* onError, {(core::Object*) →* core::bool* test = #C1}) → asy::Future<self::MyFuture::T*>*
     return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C4: test}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() →* asy::FutureOr<dynamic>* action) → asy::Future<self::MyFuture::T*>*
+  member-signature no-such-method-forwarder method whenComplete(() →* asy::FutureOr<void>* action) → asy::Future<self::MyFuture::T*>*
     return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration* timeLimit, {generic-covariant-impl () →* asy::FutureOr<self::MyFuture::T*>* onTimeout = #C1}) → asy::Future<self::MyFuture::T*>*
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C9: onTimeout}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T*>*
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C10, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))) as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
+  member-signature no-such-method-forwarder method asStream() → asy::Stream<self::MyFuture::T*>*
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))) as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
+  member-signature no-such-method-forwarder method timeout(core::Duration* timeLimit, {generic-covariant-impl () →* asy::FutureOr<self::MyFuture::T*>* onTimeout = #C1}) → asy::Future<self::MyFuture::T*>*
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C10: onTimeout}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
 }
 static method test() → void {
   asy::Future<core::bool*>* f;
@@ -53,8 +62,8 @@
         asy::_completeOnAsyncReturn(:async_completer, :return_value);
         return;
       }
-      on dynamic catch(dynamic :exception, core::StackTrace* :stack_trace) {
-        :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+      on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
+        :async_completer.{asy::Completer::completeError}(exception, stack_trace);
       }
     :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
     :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
@@ -82,8 +91,8 @@
         asy::_completeOnAsyncReturn(:async_completer, :return_value);
         return;
       }
-      on dynamic catch(dynamic :exception, core::StackTrace* :stack_trace) {
-        :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+      on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
+        :async_completer.{asy::Completer::completeError}(exception, stack_trace);
       }
     :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
     :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
@@ -106,7 +115,7 @@
   #C5 = #whenComplete
   #C6 = <dynamic>[]
   #C7 = core::_ImmutableMap<core::Symbol*, dynamic> {_kvPairs:#C6}
-  #C8 = #timeout
-  #C9 = #onTimeout
-  #C10 = #asStream
+  #C8 = #asStream
+  #C9 = #timeout
+  #C10 = #onTimeout
 }
diff --git a/pkg/front_end/testcases/inference/future_then_ifNull.dart.outline.expect b/pkg/front_end/testcases/inference/future_then_ifNull.dart.outline.expect
index 723a215..609e27d 100644
--- a/pkg/front_end/testcases/inference/future_then_ifNull.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/future_then_ifNull.dart.outline.expect
@@ -14,20 +14,25 @@
     ;
   method then<S extends core::Object* = dynamic>((self::MyFuture::T*) →* asy::FutureOr<self::MyFuture::then::S*>* f, {core::Function* onError}) → self::MyFuture<self::MyFuture::then::S*>*
     ;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function* onError, {(core::Object*) →* core::bool* test = #C1}) → asy::Future<self::MyFuture::T*>*
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
+  member-signature no-such-method-forwarder method catchError(core::Function* onError, {(core::Object*) →* core::bool* test}) → asy::Future<self::MyFuture::T*>*
     return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#catchError, 0, const <core::Type*>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#test: test}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() →* asy::FutureOr<dynamic>* action) → asy::Future<self::MyFuture::T*>*
+  member-signature no-such-method-forwarder method whenComplete(() →* asy::FutureOr<void>* action) → asy::Future<self::MyFuture::T*>*
     return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#whenComplete, 0, const <core::Type*>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration* timeLimit, {generic-covariant-impl () →* asy::FutureOr<self::MyFuture::T*>* onTimeout = #C1}) → asy::Future<self::MyFuture::T*>*
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#timeout, 0, const <core::Type*>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#onTimeout: onTimeout}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T*>*
+  member-signature no-such-method-forwarder method asStream() → asy::Stream<self::MyFuture::T*>*
     return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#asStream, 0, const <core::Type*>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{}))) as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
+  member-signature no-such-method-forwarder method timeout(core::Duration* timeLimit, {generic-covariant-impl () →* asy::FutureOr<self::MyFuture::T*>* onTimeout}) → asy::Future<self::MyFuture::T*>*
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#timeout, 0, const <core::Type*>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#onTimeout: onTimeout}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
 }
 static method test() → void
   ;
 static method main() → dynamic
   ;
-
-constants  {
-  #C1 = null
-}
diff --git a/pkg/front_end/testcases/inference/future_then_ifNull.dart.strong.expect b/pkg/front_end/testcases/inference/future_then_ifNull.dart.strong.expect
index 87b52ee..6fe1ddc 100644
--- a/pkg/front_end/testcases/inference/future_then_ifNull.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/future_then_ifNull.dart.strong.expect
@@ -14,14 +14,23 @@
     return null;
   method then<S extends core::Object* = dynamic>((self::MyFuture::T*) →* asy::FutureOr<self::MyFuture::then::S*>* f, {core::Function* onError = #C1}) → self::MyFuture<self::MyFuture::then::S*>*
     return null;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function* onError, {(core::Object*) →* core::bool* test = #C1}) → asy::Future<self::MyFuture::T*>*
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
+  member-signature no-such-method-forwarder method catchError(core::Function* onError, {(core::Object*) →* core::bool* test = #C1}) → asy::Future<self::MyFuture::T*>*
     return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C4: test}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() →* asy::FutureOr<dynamic>* action) → asy::Future<self::MyFuture::T*>*
+  member-signature no-such-method-forwarder method whenComplete(() →* asy::FutureOr<void>* action) → asy::Future<self::MyFuture::T*>*
     return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration* timeLimit, {generic-covariant-impl () →* asy::FutureOr<self::MyFuture::T*>* onTimeout = #C1}) → asy::Future<self::MyFuture::T*>*
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C9: onTimeout}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T*>*
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C10, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))) as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
+  member-signature no-such-method-forwarder method asStream() → asy::Stream<self::MyFuture::T*>*
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))) as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
+  member-signature no-such-method-forwarder method timeout(core::Duration* timeLimit, {generic-covariant-impl () →* asy::FutureOr<self::MyFuture::T*>* onTimeout = #C1}) → asy::Future<self::MyFuture::T*>*
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C10: onTimeout}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
 }
 static method test() → void {
   self::MyFuture<core::int*>* f;
@@ -44,7 +53,7 @@
   #C5 = #whenComplete
   #C6 = <dynamic>[]
   #C7 = core::_ImmutableMap<core::Symbol*, dynamic> {_kvPairs:#C6}
-  #C8 = #timeout
-  #C9 = #onTimeout
-  #C10 = #asStream
+  #C8 = #asStream
+  #C9 = #timeout
+  #C10 = #onTimeout
 }
diff --git a/pkg/front_end/testcases/inference/future_then_ifNull.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/future_then_ifNull.dart.strong.transformed.expect
index 8f10629..cde2c2e 100644
--- a/pkg/front_end/testcases/inference/future_then_ifNull.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/future_then_ifNull.dart.strong.transformed.expect
@@ -15,14 +15,23 @@
     return null;
   method then<S extends core::Object* = dynamic>((self::MyFuture::T*) →* asy::FutureOr<self::MyFuture::then::S*>* f, {core::Function* onError = #C1}) → self::MyFuture<self::MyFuture::then::S*>*
     return null;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function* onError, {(core::Object*) →* core::bool* test = #C1}) → asy::Future<self::MyFuture::T*>*
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
+  member-signature no-such-method-forwarder method catchError(core::Function* onError, {(core::Object*) →* core::bool* test = #C1}) → asy::Future<self::MyFuture::T*>*
     return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C4: test}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() →* asy::FutureOr<dynamic>* action) → asy::Future<self::MyFuture::T*>*
+  member-signature no-such-method-forwarder method whenComplete(() →* asy::FutureOr<void>* action) → asy::Future<self::MyFuture::T*>*
     return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration* timeLimit, {generic-covariant-impl () →* asy::FutureOr<self::MyFuture::T*>* onTimeout = #C1}) → asy::Future<self::MyFuture::T*>*
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C9: onTimeout}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T*>*
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C10, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))) as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
+  member-signature no-such-method-forwarder method asStream() → asy::Stream<self::MyFuture::T*>*
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))) as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
+  member-signature no-such-method-forwarder method timeout(core::Duration* timeLimit, {generic-covariant-impl () →* asy::FutureOr<self::MyFuture::T*>* onTimeout = #C1}) → asy::Future<self::MyFuture::T*>*
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C10: onTimeout}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
 }
 static method test() → void {
   self::MyFuture<core::int*>* f;
@@ -54,8 +63,8 @@
         asy::_completeOnAsyncReturn(:async_completer, :return_value);
         return;
       }
-      on dynamic catch(dynamic :exception, core::StackTrace* :stack_trace) {
-        :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+      on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
+        :async_completer.{asy::Completer::completeError}(exception, stack_trace);
       }
     :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
     :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
@@ -83,8 +92,8 @@
         asy::_completeOnAsyncReturn(:async_completer, :return_value);
         return;
       }
-      on dynamic catch(dynamic :exception, core::StackTrace* :stack_trace) {
-        :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+      on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
+        :async_completer.{asy::Completer::completeError}(exception, stack_trace);
       }
     :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
     :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
@@ -107,7 +116,7 @@
   #C5 = #whenComplete
   #C6 = <dynamic>[]
   #C7 = core::_ImmutableMap<core::Symbol*, dynamic> {_kvPairs:#C6}
-  #C8 = #timeout
-  #C9 = #onTimeout
-  #C10 = #asStream
+  #C8 = #asStream
+  #C9 = #timeout
+  #C10 = #onTimeout
 }
diff --git a/pkg/front_end/testcases/inference/future_then_upwards.dart.outline.expect b/pkg/front_end/testcases/inference/future_then_upwards.dart.outline.expect
index d16cbdf..965a593 100644
--- a/pkg/front_end/testcases/inference/future_then_upwards.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/future_then_upwards.dart.outline.expect
@@ -14,20 +14,25 @@
     ;
   method then<S extends core::Object* = dynamic>((self::MyFuture::T*) →* asy::FutureOr<self::MyFuture::then::S*>* f, {core::Function* onError}) → self::MyFuture<self::MyFuture::then::S*>*
     ;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function* onError, {(core::Object*) →* core::bool* test = #C1}) → asy::Future<self::MyFuture::T*>*
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
+  member-signature no-such-method-forwarder method catchError(core::Function* onError, {(core::Object*) →* core::bool* test}) → asy::Future<self::MyFuture::T*>*
     return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#catchError, 0, const <core::Type*>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#test: test}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() →* asy::FutureOr<dynamic>* action) → asy::Future<self::MyFuture::T*>*
+  member-signature no-such-method-forwarder method whenComplete(() →* asy::FutureOr<void>* action) → asy::Future<self::MyFuture::T*>*
     return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#whenComplete, 0, const <core::Type*>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration* timeLimit, {generic-covariant-impl () →* asy::FutureOr<self::MyFuture::T*>* onTimeout = #C1}) → asy::Future<self::MyFuture::T*>*
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#timeout, 0, const <core::Type*>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#onTimeout: onTimeout}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T*>*
+  member-signature no-such-method-forwarder method asStream() → asy::Stream<self::MyFuture::T*>*
     return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#asStream, 0, const <core::Type*>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{}))) as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
+  member-signature no-such-method-forwarder method timeout(core::Duration* timeLimit, {generic-covariant-impl () →* asy::FutureOr<self::MyFuture::T*>* onTimeout}) → asy::Future<self::MyFuture::T*>*
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#timeout, 0, const <core::Type*>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#onTimeout: onTimeout}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
 }
 static method main() → void
   ;
 static method foo() → self::MyFuture<dynamic>*
   ;
-
-constants  {
-  #C1 = null
-}
diff --git a/pkg/front_end/testcases/inference/future_then_upwards.dart.strong.expect b/pkg/front_end/testcases/inference/future_then_upwards.dart.strong.expect
index 3766778..60fb617 100644
--- a/pkg/front_end/testcases/inference/future_then_upwards.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/future_then_upwards.dart.strong.expect
@@ -23,14 +23,23 @@
     return null;
   method then<S extends core::Object* = dynamic>((self::MyFuture::T*) →* asy::FutureOr<self::MyFuture::then::S*>* f, {core::Function* onError = #C1}) → self::MyFuture<self::MyFuture::then::S*>*
     return null;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function* onError, {(core::Object*) →* core::bool* test = #C1}) → asy::Future<self::MyFuture::T*>*
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
+  member-signature no-such-method-forwarder method catchError(core::Function* onError, {(core::Object*) →* core::bool* test = #C1}) → asy::Future<self::MyFuture::T*>*
     return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C4: test}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() →* asy::FutureOr<dynamic>* action) → asy::Future<self::MyFuture::T*>*
+  member-signature no-such-method-forwarder method whenComplete(() →* asy::FutureOr<void>* action) → asy::Future<self::MyFuture::T*>*
     return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration* timeLimit, {generic-covariant-impl () →* asy::FutureOr<self::MyFuture::T*>* onTimeout = #C1}) → asy::Future<self::MyFuture::T*>*
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C9: onTimeout}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T*>*
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C10, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))) as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
+  member-signature no-such-method-forwarder method asStream() → asy::Stream<self::MyFuture::T*>*
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))) as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
+  member-signature no-such-method-forwarder method timeout(core::Duration* timeLimit, {generic-covariant-impl () →* asy::FutureOr<self::MyFuture::T*>* onTimeout = #C1}) → asy::Future<self::MyFuture::T*>*
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C10: onTimeout}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
 }
 static method main() → void {
   self::MyFuture<core::double*>* f = self::foo().{self::MyFuture::then}<core::double*>((dynamic _) → core::double* => 2.3);
@@ -52,7 +61,7 @@
   #C5 = #whenComplete
   #C6 = <dynamic>[]
   #C7 = core::_ImmutableMap<core::Symbol*, dynamic> {_kvPairs:#C6}
-  #C8 = #timeout
-  #C9 = #onTimeout
-  #C10 = #asStream
+  #C8 = #asStream
+  #C9 = #timeout
+  #C10 = #onTimeout
 }
diff --git a/pkg/front_end/testcases/inference/future_then_upwards.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/future_then_upwards.dart.strong.transformed.expect
index 3766778..60fb617 100644
--- a/pkg/front_end/testcases/inference/future_then_upwards.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/future_then_upwards.dart.strong.transformed.expect
@@ -23,14 +23,23 @@
     return null;
   method then<S extends core::Object* = dynamic>((self::MyFuture::T*) →* asy::FutureOr<self::MyFuture::then::S*>* f, {core::Function* onError = #C1}) → self::MyFuture<self::MyFuture::then::S*>*
     return null;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function* onError, {(core::Object*) →* core::bool* test = #C1}) → asy::Future<self::MyFuture::T*>*
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
+  member-signature no-such-method-forwarder method catchError(core::Function* onError, {(core::Object*) →* core::bool* test = #C1}) → asy::Future<self::MyFuture::T*>*
     return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C4: test}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() →* asy::FutureOr<dynamic>* action) → asy::Future<self::MyFuture::T*>*
+  member-signature no-such-method-forwarder method whenComplete(() →* asy::FutureOr<void>* action) → asy::Future<self::MyFuture::T*>*
     return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration* timeLimit, {generic-covariant-impl () →* asy::FutureOr<self::MyFuture::T*>* onTimeout = #C1}) → asy::Future<self::MyFuture::T*>*
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C9: onTimeout}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T*>*
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C10, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))) as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
+  member-signature no-such-method-forwarder method asStream() → asy::Stream<self::MyFuture::T*>*
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))) as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
+  member-signature no-such-method-forwarder method timeout(core::Duration* timeLimit, {generic-covariant-impl () →* asy::FutureOr<self::MyFuture::T*>* onTimeout = #C1}) → asy::Future<self::MyFuture::T*>*
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C10: onTimeout}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
 }
 static method main() → void {
   self::MyFuture<core::double*>* f = self::foo().{self::MyFuture::then}<core::double*>((dynamic _) → core::double* => 2.3);
@@ -52,7 +61,7 @@
   #C5 = #whenComplete
   #C6 = <dynamic>[]
   #C7 = core::_ImmutableMap<core::Symbol*, dynamic> {_kvPairs:#C6}
-  #C8 = #timeout
-  #C9 = #onTimeout
-  #C10 = #asStream
+  #C8 = #asStream
+  #C9 = #timeout
+  #C10 = #onTimeout
 }
diff --git a/pkg/front_end/testcases/inference/future_then_upwards_2.dart.outline.expect b/pkg/front_end/testcases/inference/future_then_upwards_2.dart.outline.expect
index d16cbdf..965a593 100644
--- a/pkg/front_end/testcases/inference/future_then_upwards_2.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/future_then_upwards_2.dart.outline.expect
@@ -14,20 +14,25 @@
     ;
   method then<S extends core::Object* = dynamic>((self::MyFuture::T*) →* asy::FutureOr<self::MyFuture::then::S*>* f, {core::Function* onError}) → self::MyFuture<self::MyFuture::then::S*>*
     ;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function* onError, {(core::Object*) →* core::bool* test = #C1}) → asy::Future<self::MyFuture::T*>*
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
+  member-signature no-such-method-forwarder method catchError(core::Function* onError, {(core::Object*) →* core::bool* test}) → asy::Future<self::MyFuture::T*>*
     return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#catchError, 0, const <core::Type*>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#test: test}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() →* asy::FutureOr<dynamic>* action) → asy::Future<self::MyFuture::T*>*
+  member-signature no-such-method-forwarder method whenComplete(() →* asy::FutureOr<void>* action) → asy::Future<self::MyFuture::T*>*
     return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#whenComplete, 0, const <core::Type*>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration* timeLimit, {generic-covariant-impl () →* asy::FutureOr<self::MyFuture::T*>* onTimeout = #C1}) → asy::Future<self::MyFuture::T*>*
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#timeout, 0, const <core::Type*>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#onTimeout: onTimeout}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T*>*
+  member-signature no-such-method-forwarder method asStream() → asy::Stream<self::MyFuture::T*>*
     return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#asStream, 0, const <core::Type*>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{}))) as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
+  member-signature no-such-method-forwarder method timeout(core::Duration* timeLimit, {generic-covariant-impl () →* asy::FutureOr<self::MyFuture::T*>* onTimeout}) → asy::Future<self::MyFuture::T*>*
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#timeout, 0, const <core::Type*>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#onTimeout: onTimeout}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
 }
 static method main() → void
   ;
 static method foo() → self::MyFuture<dynamic>*
   ;
-
-constants  {
-  #C1 = null
-}
diff --git a/pkg/front_end/testcases/inference/future_then_upwards_2.dart.strong.expect b/pkg/front_end/testcases/inference/future_then_upwards_2.dart.strong.expect
index a855441..5851a4f 100644
--- a/pkg/front_end/testcases/inference/future_then_upwards_2.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/future_then_upwards_2.dart.strong.expect
@@ -22,14 +22,23 @@
     return null;
   method then<S extends core::Object* = dynamic>((self::MyFuture::T*) →* asy::FutureOr<self::MyFuture::then::S*>* f, {core::Function* onError = #C1}) → self::MyFuture<self::MyFuture::then::S*>*
     return null;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function* onError, {(core::Object*) →* core::bool* test = #C1}) → asy::Future<self::MyFuture::T*>*
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
+  member-signature no-such-method-forwarder method catchError(core::Function* onError, {(core::Object*) →* core::bool* test = #C1}) → asy::Future<self::MyFuture::T*>*
     return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C4: test}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() →* asy::FutureOr<dynamic>* action) → asy::Future<self::MyFuture::T*>*
+  member-signature no-such-method-forwarder method whenComplete(() →* asy::FutureOr<void>* action) → asy::Future<self::MyFuture::T*>*
     return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration* timeLimit, {generic-covariant-impl () →* asy::FutureOr<self::MyFuture::T*>* onTimeout = #C1}) → asy::Future<self::MyFuture::T*>*
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C9: onTimeout}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T*>*
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C10, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))) as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
+  member-signature no-such-method-forwarder method asStream() → asy::Stream<self::MyFuture::T*>*
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))) as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
+  member-signature no-such-method-forwarder method timeout(core::Duration* timeLimit, {generic-covariant-impl () →* asy::FutureOr<self::MyFuture::T*>* onTimeout = #C1}) → asy::Future<self::MyFuture::T*>*
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C10: onTimeout}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
 }
 static method main() → void {
   self::MyFuture<core::double*>* f = self::foo().{self::MyFuture::then}<core::double*>((dynamic _) → core::double* => 2.3);
@@ -50,7 +59,7 @@
   #C5 = #whenComplete
   #C6 = <dynamic>[]
   #C7 = core::_ImmutableMap<core::Symbol*, dynamic> {_kvPairs:#C6}
-  #C8 = #timeout
-  #C9 = #onTimeout
-  #C10 = #asStream
+  #C8 = #asStream
+  #C9 = #timeout
+  #C10 = #onTimeout
 }
diff --git a/pkg/front_end/testcases/inference/future_then_upwards_2.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/future_then_upwards_2.dart.strong.transformed.expect
index a855441..5851a4f 100644
--- a/pkg/front_end/testcases/inference/future_then_upwards_2.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/future_then_upwards_2.dart.strong.transformed.expect
@@ -22,14 +22,23 @@
     return null;
   method then<S extends core::Object* = dynamic>((self::MyFuture::T*) →* asy::FutureOr<self::MyFuture::then::S*>* f, {core::Function* onError = #C1}) → self::MyFuture<self::MyFuture::then::S*>*
     return null;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function* onError, {(core::Object*) →* core::bool* test = #C1}) → asy::Future<self::MyFuture::T*>*
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
+  member-signature no-such-method-forwarder method catchError(core::Function* onError, {(core::Object*) →* core::bool* test = #C1}) → asy::Future<self::MyFuture::T*>*
     return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C4: test}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() →* asy::FutureOr<dynamic>* action) → asy::Future<self::MyFuture::T*>*
+  member-signature no-such-method-forwarder method whenComplete(() →* asy::FutureOr<void>* action) → asy::Future<self::MyFuture::T*>*
     return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration* timeLimit, {generic-covariant-impl () →* asy::FutureOr<self::MyFuture::T*>* onTimeout = #C1}) → asy::Future<self::MyFuture::T*>*
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C9: onTimeout}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T*>*
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C10, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))) as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
+  member-signature no-such-method-forwarder method asStream() → asy::Stream<self::MyFuture::T*>*
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))) as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
+  member-signature no-such-method-forwarder method timeout(core::Duration* timeLimit, {generic-covariant-impl () →* asy::FutureOr<self::MyFuture::T*>* onTimeout = #C1}) → asy::Future<self::MyFuture::T*>*
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C10: onTimeout}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
 }
 static method main() → void {
   self::MyFuture<core::double*>* f = self::foo().{self::MyFuture::then}<core::double*>((dynamic _) → core::double* => 2.3);
@@ -50,7 +59,7 @@
   #C5 = #whenComplete
   #C6 = <dynamic>[]
   #C7 = core::_ImmutableMap<core::Symbol*, dynamic> {_kvPairs:#C6}
-  #C8 = #timeout
-  #C9 = #onTimeout
-  #C10 = #asStream
+  #C8 = #asStream
+  #C9 = #timeout
+  #C10 = #onTimeout
 }
diff --git a/pkg/front_end/testcases/inference/future_then_upwards_3.dart.outline.expect b/pkg/front_end/testcases/inference/future_then_upwards_3.dart.outline.expect
index f7cb495..21b5e7d 100644
--- a/pkg/front_end/testcases/inference/future_then_upwards_3.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/future_then_upwards_3.dart.outline.expect
@@ -14,14 +14,23 @@
     ;
   method then<S extends core::Object* = dynamic>((self::MyFuture::T*) →* asy::FutureOr<self::MyFuture::then::S*>* f, {core::Function* onError}) → self::MyFuture<self::MyFuture::then::S*>*
     ;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function* onError, {(core::Object*) →* core::bool* test = #C1}) → asy::Future<self::MyFuture::T*>*
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
+  member-signature no-such-method-forwarder method catchError(core::Function* onError, {(core::Object*) →* core::bool* test}) → asy::Future<self::MyFuture::T*>*
     return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#catchError, 0, const <core::Type*>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#test: test}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() →* asy::FutureOr<dynamic>* action) → asy::Future<self::MyFuture::T*>*
+  member-signature no-such-method-forwarder method whenComplete(() →* asy::FutureOr<void>* action) → asy::Future<self::MyFuture::T*>*
     return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#whenComplete, 0, const <core::Type*>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration* timeLimit, {generic-covariant-impl () →* asy::FutureOr<self::MyFuture::T*>* onTimeout = #C1}) → asy::Future<self::MyFuture::T*>*
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#timeout, 0, const <core::Type*>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#onTimeout: onTimeout}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T*>*
+  member-signature no-such-method-forwarder method asStream() → asy::Stream<self::MyFuture::T*>*
     return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#asStream, 0, const <core::Type*>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{}))) as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
+  member-signature no-such-method-forwarder method timeout(core::Duration* timeLimit, {generic-covariant-impl () →* asy::FutureOr<self::MyFuture::T*>* onTimeout}) → asy::Future<self::MyFuture::T*>*
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#timeout, 0, const <core::Type*>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#onTimeout: onTimeout}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
 }
 static method test() → void
   ;
@@ -29,7 +38,3 @@
   ;
 static method main() → dynamic
   ;
-
-constants  {
-  #C1 = null
-}
diff --git a/pkg/front_end/testcases/inference/future_then_upwards_3.dart.strong.expect b/pkg/front_end/testcases/inference/future_then_upwards_3.dart.strong.expect
index ddb7194..84101e4 100644
--- a/pkg/front_end/testcases/inference/future_then_upwards_3.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/future_then_upwards_3.dart.strong.expect
@@ -22,14 +22,23 @@
     return null;
   method then<S extends core::Object* = dynamic>((self::MyFuture::T*) →* asy::FutureOr<self::MyFuture::then::S*>* f, {core::Function* onError = #C1}) → self::MyFuture<self::MyFuture::then::S*>*
     return null;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function* onError, {(core::Object*) →* core::bool* test = #C1}) → asy::Future<self::MyFuture::T*>*
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
+  member-signature no-such-method-forwarder method catchError(core::Function* onError, {(core::Object*) →* core::bool* test = #C1}) → asy::Future<self::MyFuture::T*>*
     return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C4: test}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() →* asy::FutureOr<dynamic>* action) → asy::Future<self::MyFuture::T*>*
+  member-signature no-such-method-forwarder method whenComplete(() →* asy::FutureOr<void>* action) → asy::Future<self::MyFuture::T*>*
     return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration* timeLimit, {generic-covariant-impl () →* asy::FutureOr<self::MyFuture::T*>* onTimeout = #C1}) → asy::Future<self::MyFuture::T*>*
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C9: onTimeout}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T*>*
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C10, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))) as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
+  member-signature no-such-method-forwarder method asStream() → asy::Stream<self::MyFuture::T*>*
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))) as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
+  member-signature no-such-method-forwarder method timeout(core::Duration* timeLimit, {generic-covariant-impl () →* asy::FutureOr<self::MyFuture::T*>* onTimeout = #C1}) → asy::Future<self::MyFuture::T*>*
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C10: onTimeout}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
 }
 static method test() → void {
   asy::Future<core::double*>* f = self::foo().{asy::Future::then}<core::double*>((dynamic _) → core::double* => 2.3);
@@ -51,7 +60,7 @@
   #C5 = #whenComplete
   #C6 = <dynamic>[]
   #C7 = core::_ImmutableMap<core::Symbol*, dynamic> {_kvPairs:#C6}
-  #C8 = #timeout
-  #C9 = #onTimeout
-  #C10 = #asStream
+  #C8 = #asStream
+  #C9 = #timeout
+  #C10 = #onTimeout
 }
diff --git a/pkg/front_end/testcases/inference/future_then_upwards_3.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/future_then_upwards_3.dart.strong.transformed.expect
index ddb7194..84101e4 100644
--- a/pkg/front_end/testcases/inference/future_then_upwards_3.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/future_then_upwards_3.dart.strong.transformed.expect
@@ -22,14 +22,23 @@
     return null;
   method then<S extends core::Object* = dynamic>((self::MyFuture::T*) →* asy::FutureOr<self::MyFuture::then::S*>* f, {core::Function* onError = #C1}) → self::MyFuture<self::MyFuture::then::S*>*
     return null;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function* onError, {(core::Object*) →* core::bool* test = #C1}) → asy::Future<self::MyFuture::T*>*
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
+  member-signature no-such-method-forwarder method catchError(core::Function* onError, {(core::Object*) →* core::bool* test = #C1}) → asy::Future<self::MyFuture::T*>*
     return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C4: test}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() →* asy::FutureOr<dynamic>* action) → asy::Future<self::MyFuture::T*>*
+  member-signature no-such-method-forwarder method whenComplete(() →* asy::FutureOr<void>* action) → asy::Future<self::MyFuture::T*>*
     return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration* timeLimit, {generic-covariant-impl () →* asy::FutureOr<self::MyFuture::T*>* onTimeout = #C1}) → asy::Future<self::MyFuture::T*>*
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C9: onTimeout}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T*>*
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C10, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))) as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
+  member-signature no-such-method-forwarder method asStream() → asy::Stream<self::MyFuture::T*>*
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))) as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
+  member-signature no-such-method-forwarder method timeout(core::Duration* timeLimit, {generic-covariant-impl () →* asy::FutureOr<self::MyFuture::T*>* onTimeout = #C1}) → asy::Future<self::MyFuture::T*>*
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C10: onTimeout}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
 }
 static method test() → void {
   asy::Future<core::double*>* f = self::foo().{asy::Future::then}<core::double*>((dynamic _) → core::double* => 2.3);
@@ -51,7 +60,7 @@
   #C5 = #whenComplete
   #C6 = <dynamic>[]
   #C7 = core::_ImmutableMap<core::Symbol*, dynamic> {_kvPairs:#C6}
-  #C8 = #timeout
-  #C9 = #onTimeout
-  #C10 = #asStream
+  #C8 = #asStream
+  #C9 = #timeout
+  #C10 = #onTimeout
 }
diff --git a/pkg/front_end/testcases/inference/future_union_async_conditional.dart.outline.expect b/pkg/front_end/testcases/inference/future_union_async_conditional.dart.outline.expect
index ee3138c..40acc44 100644
--- a/pkg/front_end/testcases/inference/future_union_async_conditional.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/future_union_async_conditional.dart.outline.expect
@@ -14,14 +14,23 @@
     ;
   method then<S extends core::Object* = dynamic>((self::MyFuture::T*) →* asy::FutureOr<self::MyFuture::then::S*>* f, {core::Function* onError}) → self::MyFuture<self::MyFuture::then::S*>*
     ;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function* onError, {(core::Object*) →* core::bool* test = #C1}) → asy::Future<self::MyFuture::T*>*
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
+  member-signature no-such-method-forwarder method catchError(core::Function* onError, {(core::Object*) →* core::bool* test}) → asy::Future<self::MyFuture::T*>*
     return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#catchError, 0, const <core::Type*>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#test: test}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() →* asy::FutureOr<dynamic>* action) → asy::Future<self::MyFuture::T*>*
+  member-signature no-such-method-forwarder method whenComplete(() →* asy::FutureOr<void>* action) → asy::Future<self::MyFuture::T*>*
     return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#whenComplete, 0, const <core::Type*>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration* timeLimit, {generic-covariant-impl () →* asy::FutureOr<self::MyFuture::T*>* onTimeout = #C1}) → asy::Future<self::MyFuture::T*>*
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#timeout, 0, const <core::Type*>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#onTimeout: onTimeout}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T*>*
+  member-signature no-such-method-forwarder method asStream() → asy::Stream<self::MyFuture::T*>*
     return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#asStream, 0, const <core::Type*>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{}))) as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
+  member-signature no-such-method-forwarder method timeout(core::Duration* timeLimit, {generic-covariant-impl () →* asy::FutureOr<self::MyFuture::T*>* onTimeout}) → asy::Future<self::MyFuture::T*>*
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#timeout, 0, const <core::Type*>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#onTimeout: onTimeout}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
 }
 static method g1(core::bool* x) → asy::Future<core::int*>*
   ;
@@ -31,7 +40,3 @@
   ;
 static method main() → dynamic
   ;
-
-constants  {
-  #C1 = null
-}
diff --git a/pkg/front_end/testcases/inference/future_union_async_conditional.dart.strong.expect b/pkg/front_end/testcases/inference/future_union_async_conditional.dart.strong.expect
index 6f320ff..2fbacc6 100644
--- a/pkg/front_end/testcases/inference/future_union_async_conditional.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/future_union_async_conditional.dart.strong.expect
@@ -14,14 +14,23 @@
     return null;
   method then<S extends core::Object* = dynamic>((self::MyFuture::T*) →* asy::FutureOr<self::MyFuture::then::S*>* f, {core::Function* onError = #C1}) → self::MyFuture<self::MyFuture::then::S*>*
     return null;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function* onError, {(core::Object*) →* core::bool* test = #C1}) → asy::Future<self::MyFuture::T*>*
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
+  member-signature no-such-method-forwarder method catchError(core::Function* onError, {(core::Object*) →* core::bool* test = #C1}) → asy::Future<self::MyFuture::T*>*
     return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C4: test}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() →* asy::FutureOr<dynamic>* action) → asy::Future<self::MyFuture::T*>*
+  member-signature no-such-method-forwarder method whenComplete(() →* asy::FutureOr<void>* action) → asy::Future<self::MyFuture::T*>*
     return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration* timeLimit, {generic-covariant-impl () →* asy::FutureOr<self::MyFuture::T*>* onTimeout = #C1}) → asy::Future<self::MyFuture::T*>*
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C9: onTimeout}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T*>*
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C10, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))) as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
+  member-signature no-such-method-forwarder method asStream() → asy::Stream<self::MyFuture::T*>*
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))) as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
+  member-signature no-such-method-forwarder method timeout(core::Duration* timeLimit, {generic-covariant-impl () →* asy::FutureOr<self::MyFuture::T*>* onTimeout = #C1}) → asy::Future<self::MyFuture::T*>*
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C10: onTimeout}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
 }
 static method g1(core::bool* x) → asy::Future<core::int*>* async {
   return (x ?{core::Object*} 42 : asy::Future::value<core::int*>(42)) as{TypeError} asy::FutureOr<core::int*>*;
@@ -42,7 +51,7 @@
   #C5 = #whenComplete
   #C6 = <dynamic>[]
   #C7 = core::_ImmutableMap<core::Symbol*, dynamic> {_kvPairs:#C6}
-  #C8 = #timeout
-  #C9 = #onTimeout
-  #C10 = #asStream
+  #C8 = #asStream
+  #C9 = #timeout
+  #C10 = #onTimeout
 }
diff --git a/pkg/front_end/testcases/inference/future_union_async_conditional.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/future_union_async_conditional.dart.strong.transformed.expect
index e8d3a2b..6b1e090 100644
--- a/pkg/front_end/testcases/inference/future_union_async_conditional.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/future_union_async_conditional.dart.strong.transformed.expect
@@ -14,14 +14,23 @@
     return null;
   method then<S extends core::Object* = dynamic>((self::MyFuture::T*) →* asy::FutureOr<self::MyFuture::then::S*>* f, {core::Function* onError = #C1}) → self::MyFuture<self::MyFuture::then::S*>*
     return null;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function* onError, {(core::Object*) →* core::bool* test = #C1}) → asy::Future<self::MyFuture::T*>*
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
+  member-signature no-such-method-forwarder method catchError(core::Function* onError, {(core::Object*) →* core::bool* test = #C1}) → asy::Future<self::MyFuture::T*>*
     return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C4: test}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() →* asy::FutureOr<dynamic>* action) → asy::Future<self::MyFuture::T*>*
+  member-signature no-such-method-forwarder method whenComplete(() →* asy::FutureOr<void>* action) → asy::Future<self::MyFuture::T*>*
     return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration* timeLimit, {generic-covariant-impl () →* asy::FutureOr<self::MyFuture::T*>* onTimeout = #C1}) → asy::Future<self::MyFuture::T*>*
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C9: onTimeout}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T*>*
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C10, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))) as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
+  member-signature no-such-method-forwarder method asStream() → asy::Stream<self::MyFuture::T*>*
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))) as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
+  member-signature no-such-method-forwarder method timeout(core::Duration* timeLimit, {generic-covariant-impl () →* asy::FutureOr<self::MyFuture::T*>* onTimeout = #C1}) → asy::Future<self::MyFuture::T*>*
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C10: onTimeout}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
 }
 static method g1(core::bool* x) → asy::Future<core::int*>* /* originally async */ {
   final asy::_AsyncAwaitCompleter<core::int*>* :async_completer = new asy::_AsyncAwaitCompleter::•<core::int*>();
@@ -41,8 +50,8 @@
       asy::_completeOnAsyncReturn(:async_completer, :return_value);
       return;
     }
-    on dynamic catch(dynamic :exception, core::StackTrace* :stack_trace) {
-      :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+    on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
+      :async_completer.{asy::Completer::completeError}(exception, stack_trace);
     }
   :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
@@ -68,8 +77,8 @@
       asy::_completeOnAsyncReturn(:async_completer, :return_value);
       return;
     }
-    on dynamic catch(dynamic :exception, core::StackTrace* :stack_trace) {
-      :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+    on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
+      :async_completer.{asy::Completer::completeError}(exception, stack_trace);
     }
   :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
@@ -96,8 +105,8 @@
       asy::_completeOnAsyncReturn(:async_completer, :return_value);
       return;
     }
-    on dynamic catch(dynamic :exception, core::StackTrace* :stack_trace) {
-      :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+    on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
+      :async_completer.{asy::Completer::completeError}(exception, stack_trace);
     }
   :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
@@ -115,7 +124,7 @@
   #C5 = #whenComplete
   #C6 = <dynamic>[]
   #C7 = core::_ImmutableMap<core::Symbol*, dynamic> {_kvPairs:#C6}
-  #C8 = #timeout
-  #C9 = #onTimeout
-  #C10 = #asStream
+  #C8 = #asStream
+  #C9 = #timeout
+  #C10 = #onTimeout
 }
diff --git a/pkg/front_end/testcases/inference/future_union_async_conditional_2.dart.outline.expect b/pkg/front_end/testcases/inference/future_union_async_conditional_2.dart.outline.expect
index ee3138c..40acc44 100644
--- a/pkg/front_end/testcases/inference/future_union_async_conditional_2.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/future_union_async_conditional_2.dart.outline.expect
@@ -14,14 +14,23 @@
     ;
   method then<S extends core::Object* = dynamic>((self::MyFuture::T*) →* asy::FutureOr<self::MyFuture::then::S*>* f, {core::Function* onError}) → self::MyFuture<self::MyFuture::then::S*>*
     ;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function* onError, {(core::Object*) →* core::bool* test = #C1}) → asy::Future<self::MyFuture::T*>*
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
+  member-signature no-such-method-forwarder method catchError(core::Function* onError, {(core::Object*) →* core::bool* test}) → asy::Future<self::MyFuture::T*>*
     return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#catchError, 0, const <core::Type*>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#test: test}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() →* asy::FutureOr<dynamic>* action) → asy::Future<self::MyFuture::T*>*
+  member-signature no-such-method-forwarder method whenComplete(() →* asy::FutureOr<void>* action) → asy::Future<self::MyFuture::T*>*
     return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#whenComplete, 0, const <core::Type*>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration* timeLimit, {generic-covariant-impl () →* asy::FutureOr<self::MyFuture::T*>* onTimeout = #C1}) → asy::Future<self::MyFuture::T*>*
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#timeout, 0, const <core::Type*>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#onTimeout: onTimeout}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T*>*
+  member-signature no-such-method-forwarder method asStream() → asy::Stream<self::MyFuture::T*>*
     return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#asStream, 0, const <core::Type*>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{}))) as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
+  member-signature no-such-method-forwarder method timeout(core::Duration* timeLimit, {generic-covariant-impl () →* asy::FutureOr<self::MyFuture::T*>* onTimeout}) → asy::Future<self::MyFuture::T*>*
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#timeout, 0, const <core::Type*>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#onTimeout: onTimeout}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
 }
 static method g1(core::bool* x) → asy::Future<core::int*>*
   ;
@@ -31,7 +40,3 @@
   ;
 static method main() → dynamic
   ;
-
-constants  {
-  #C1 = null
-}
diff --git a/pkg/front_end/testcases/inference/future_union_async_conditional_2.dart.strong.expect b/pkg/front_end/testcases/inference/future_union_async_conditional_2.dart.strong.expect
index 3bcd4ca..155f1e3 100644
--- a/pkg/front_end/testcases/inference/future_union_async_conditional_2.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/future_union_async_conditional_2.dart.strong.expect
@@ -14,14 +14,23 @@
     return null;
   method then<S extends core::Object* = dynamic>((self::MyFuture::T*) →* asy::FutureOr<self::MyFuture::then::S*>* f, {core::Function* onError = #C1}) → self::MyFuture<self::MyFuture::then::S*>*
     return null;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function* onError, {(core::Object*) →* core::bool* test = #C1}) → asy::Future<self::MyFuture::T*>*
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
+  member-signature no-such-method-forwarder method catchError(core::Function* onError, {(core::Object*) →* core::bool* test = #C1}) → asy::Future<self::MyFuture::T*>*
     return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C4: test}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() →* asy::FutureOr<dynamic>* action) → asy::Future<self::MyFuture::T*>*
+  member-signature no-such-method-forwarder method whenComplete(() →* asy::FutureOr<void>* action) → asy::Future<self::MyFuture::T*>*
     return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration* timeLimit, {generic-covariant-impl () →* asy::FutureOr<self::MyFuture::T*>* onTimeout = #C1}) → asy::Future<self::MyFuture::T*>*
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C9: onTimeout}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T*>*
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C10, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))) as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
+  member-signature no-such-method-forwarder method asStream() → asy::Stream<self::MyFuture::T*>*
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))) as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
+  member-signature no-such-method-forwarder method timeout(core::Duration* timeLimit, {generic-covariant-impl () →* asy::FutureOr<self::MyFuture::T*>* onTimeout = #C1}) → asy::Future<self::MyFuture::T*>*
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C10: onTimeout}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
 }
 static method g1(core::bool* x) → asy::Future<core::int*>* async {
   return (x ?{core::Object*} 42 : new self::MyFuture::value<core::int*>(42)) as{TypeError} asy::FutureOr<core::int*>*;
@@ -42,7 +51,7 @@
   #C5 = #whenComplete
   #C6 = <dynamic>[]
   #C7 = core::_ImmutableMap<core::Symbol*, dynamic> {_kvPairs:#C6}
-  #C8 = #timeout
-  #C9 = #onTimeout
-  #C10 = #asStream
+  #C8 = #asStream
+  #C9 = #timeout
+  #C10 = #onTimeout
 }
diff --git a/pkg/front_end/testcases/inference/future_union_async_conditional_2.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/future_union_async_conditional_2.dart.strong.transformed.expect
index d51f046..f7c1ef7 100644
--- a/pkg/front_end/testcases/inference/future_union_async_conditional_2.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/future_union_async_conditional_2.dart.strong.transformed.expect
@@ -14,14 +14,23 @@
     return null;
   method then<S extends core::Object* = dynamic>((self::MyFuture::T*) →* asy::FutureOr<self::MyFuture::then::S*>* f, {core::Function* onError = #C1}) → self::MyFuture<self::MyFuture::then::S*>*
     return null;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function* onError, {(core::Object*) →* core::bool* test = #C1}) → asy::Future<self::MyFuture::T*>*
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
+  member-signature no-such-method-forwarder method catchError(core::Function* onError, {(core::Object*) →* core::bool* test = #C1}) → asy::Future<self::MyFuture::T*>*
     return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C4: test}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() →* asy::FutureOr<dynamic>* action) → asy::Future<self::MyFuture::T*>*
+  member-signature no-such-method-forwarder method whenComplete(() →* asy::FutureOr<void>* action) → asy::Future<self::MyFuture::T*>*
     return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration* timeLimit, {generic-covariant-impl () →* asy::FutureOr<self::MyFuture::T*>* onTimeout = #C1}) → asy::Future<self::MyFuture::T*>*
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C9: onTimeout}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T*>*
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C10, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))) as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
+  member-signature no-such-method-forwarder method asStream() → asy::Stream<self::MyFuture::T*>*
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))) as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
+  member-signature no-such-method-forwarder method timeout(core::Duration* timeLimit, {generic-covariant-impl () →* asy::FutureOr<self::MyFuture::T*>* onTimeout = #C1}) → asy::Future<self::MyFuture::T*>*
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C10: onTimeout}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
 }
 static method g1(core::bool* x) → asy::Future<core::int*>* /* originally async */ {
   final asy::_AsyncAwaitCompleter<core::int*>* :async_completer = new asy::_AsyncAwaitCompleter::•<core::int*>();
@@ -41,8 +50,8 @@
       asy::_completeOnAsyncReturn(:async_completer, :return_value);
       return;
     }
-    on dynamic catch(dynamic :exception, core::StackTrace* :stack_trace) {
-      :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+    on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
+      :async_completer.{asy::Completer::completeError}(exception, stack_trace);
     }
   :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
@@ -68,8 +77,8 @@
       asy::_completeOnAsyncReturn(:async_completer, :return_value);
       return;
     }
-    on dynamic catch(dynamic :exception, core::StackTrace* :stack_trace) {
-      :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+    on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
+      :async_completer.{asy::Completer::completeError}(exception, stack_trace);
     }
   :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
@@ -96,8 +105,8 @@
       asy::_completeOnAsyncReturn(:async_completer, :return_value);
       return;
     }
-    on dynamic catch(dynamic :exception, core::StackTrace* :stack_trace) {
-      :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+    on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
+      :async_completer.{asy::Completer::completeError}(exception, stack_trace);
     }
   :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
@@ -115,7 +124,7 @@
   #C5 = #whenComplete
   #C6 = <dynamic>[]
   #C7 = core::_ImmutableMap<core::Symbol*, dynamic> {_kvPairs:#C6}
-  #C8 = #timeout
-  #C9 = #onTimeout
-  #C10 = #asStream
+  #C8 = #asStream
+  #C9 = #timeout
+  #C10 = #onTimeout
 }
diff --git a/pkg/front_end/testcases/inference/future_union_downwards.dart.outline.expect b/pkg/front_end/testcases/inference/future_union_downwards.dart.outline.expect
index 9065bcf..e87f86e 100644
--- a/pkg/front_end/testcases/inference/future_union_downwards.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/future_union_downwards.dart.outline.expect
@@ -14,14 +14,23 @@
     ;
   method then<S extends core::Object* = dynamic>((self::MyFuture::T*) →* asy::FutureOr<self::MyFuture::then::S*>* f, {core::Function* onError}) → self::MyFuture<self::MyFuture::then::S*>*
     ;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function* onError, {(core::Object*) →* core::bool* test = #C1}) → asy::Future<self::MyFuture::T*>*
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
+  member-signature no-such-method-forwarder method catchError(core::Function* onError, {(core::Object*) →* core::bool* test}) → asy::Future<self::MyFuture::T*>*
     return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#catchError, 0, const <core::Type*>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#test: test}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() →* asy::FutureOr<dynamic>* action) → asy::Future<self::MyFuture::T*>*
+  member-signature no-such-method-forwarder method whenComplete(() →* asy::FutureOr<void>* action) → asy::Future<self::MyFuture::T*>*
     return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#whenComplete, 0, const <core::Type*>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration* timeLimit, {generic-covariant-impl () →* asy::FutureOr<self::MyFuture::T*>* onTimeout = #C1}) → asy::Future<self::MyFuture::T*>*
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#timeout, 0, const <core::Type*>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#onTimeout: onTimeout}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T*>*
+  member-signature no-such-method-forwarder method asStream() → asy::Stream<self::MyFuture::T*>*
     return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#asStream, 0, const <core::Type*>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{}))) as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
+  member-signature no-such-method-forwarder method timeout(core::Duration* timeLimit, {generic-covariant-impl () →* asy::FutureOr<self::MyFuture::T*>* onTimeout}) → asy::Future<self::MyFuture::T*>*
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#timeout, 0, const <core::Type*>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#onTimeout: onTimeout}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
 }
 static field self::MyFuture<dynamic>* f;
 static field asy::Future<core::int*>* t1;
@@ -32,7 +41,3 @@
   ;
 static method main() → dynamic
   ;
-
-constants  {
-  #C1 = null
-}
diff --git a/pkg/front_end/testcases/inference/future_union_downwards.dart.strong.expect b/pkg/front_end/testcases/inference/future_union_downwards.dart.strong.expect
index b1f9997..3e86661 100644
--- a/pkg/front_end/testcases/inference/future_union_downwards.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/future_union_downwards.dart.strong.expect
@@ -22,20 +22,29 @@
     return null;
   method then<S extends core::Object* = dynamic>((self::MyFuture::T*) →* asy::FutureOr<self::MyFuture::then::S*>* f, {core::Function* onError = #C1}) → self::MyFuture<self::MyFuture::then::S*>*
     return null;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function* onError, {(core::Object*) →* core::bool* test = #C1}) → asy::Future<self::MyFuture::T*>*
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
+  member-signature no-such-method-forwarder method catchError(core::Function* onError, {(core::Object*) →* core::bool* test = #C1}) → asy::Future<self::MyFuture::T*>*
     return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C4: test}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() →* asy::FutureOr<dynamic>* action) → asy::Future<self::MyFuture::T*>*
+  member-signature no-such-method-forwarder method whenComplete(() →* asy::FutureOr<void>* action) → asy::Future<self::MyFuture::T*>*
     return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration* timeLimit, {generic-covariant-impl () →* asy::FutureOr<self::MyFuture::T*>* onTimeout = #C1}) → asy::Future<self::MyFuture::T*>*
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C9: onTimeout}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T*>*
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C10, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))) as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
+  member-signature no-such-method-forwarder method asStream() → asy::Stream<self::MyFuture::T*>*
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))) as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
+  member-signature no-such-method-forwarder method timeout(core::Duration* timeLimit, {generic-covariant-impl () →* asy::FutureOr<self::MyFuture::T*>* onTimeout = #C1}) → asy::Future<self::MyFuture::T*>*
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C10: onTimeout}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
 }
 static field self::MyFuture<dynamic>* f;
 static field asy::Future<core::int*>* t1 = self::f.{self::MyFuture::then}<core::int*>((dynamic _) → asy::Future<core::int*>* => asy::Future::value<core::int*>(let final<BottomType> #t1 = invalid-expression "pkg/front_end/testcases/inference/future_union_downwards.dart:21:47: Error: The argument type 'String' can't be assigned to the parameter type 'FutureOr<int>'.
  - 'FutureOr' is from 'dart:async'.
         new /*@ typeArgs=int* */ Future.value('hi'));
-                                              ^" in "hi" as{TypeError} asy::FutureOr<core::int*>*));
+                                              ^" in "hi" as{TypeError} asy::FutureOr<core::int*>?));
 static field asy::Future<core::List<core::int*>*>* t2 = self::f.{self::MyFuture::then}<core::List<core::int*>*>((dynamic _) → core::List<core::int*>* => <core::int*>[3]);
 static method g2() → asy::Future<core::List<core::int*>*>* async {
   return <core::int*>[3];
@@ -53,7 +62,7 @@
   #C5 = #whenComplete
   #C6 = <dynamic>[]
   #C7 = core::_ImmutableMap<core::Symbol*, dynamic> {_kvPairs:#C6}
-  #C8 = #timeout
-  #C9 = #onTimeout
-  #C10 = #asStream
+  #C8 = #asStream
+  #C9 = #timeout
+  #C10 = #onTimeout
 }
diff --git a/pkg/front_end/testcases/inference/future_union_downwards.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/future_union_downwards.dart.strong.transformed.expect
index c45e377..d6315be 100644
--- a/pkg/front_end/testcases/inference/future_union_downwards.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/future_union_downwards.dart.strong.transformed.expect
@@ -22,20 +22,29 @@
     return null;
   method then<S extends core::Object* = dynamic>((self::MyFuture::T*) →* asy::FutureOr<self::MyFuture::then::S*>* f, {core::Function* onError = #C1}) → self::MyFuture<self::MyFuture::then::S*>*
     return null;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function* onError, {(core::Object*) →* core::bool* test = #C1}) → asy::Future<self::MyFuture::T*>*
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
+  member-signature no-such-method-forwarder method catchError(core::Function* onError, {(core::Object*) →* core::bool* test = #C1}) → asy::Future<self::MyFuture::T*>*
     return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C4: test}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() →* asy::FutureOr<dynamic>* action) → asy::Future<self::MyFuture::T*>*
+  member-signature no-such-method-forwarder method whenComplete(() →* asy::FutureOr<void>* action) → asy::Future<self::MyFuture::T*>*
     return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration* timeLimit, {generic-covariant-impl () →* asy::FutureOr<self::MyFuture::T*>* onTimeout = #C1}) → asy::Future<self::MyFuture::T*>*
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C9: onTimeout}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T*>*
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C10, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))) as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
+  member-signature no-such-method-forwarder method asStream() → asy::Stream<self::MyFuture::T*>*
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))) as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
+  member-signature no-such-method-forwarder method timeout(core::Duration* timeLimit, {generic-covariant-impl () →* asy::FutureOr<self::MyFuture::T*>* onTimeout = #C1}) → asy::Future<self::MyFuture::T*>*
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C10: onTimeout}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
 }
 static field self::MyFuture<dynamic>* f;
 static field asy::Future<core::int*>* t1 = self::f.{self::MyFuture::then}<core::int*>((dynamic _) → asy::Future<core::int*>* => asy::Future::value<core::int*>(let final<BottomType> #t1 = invalid-expression "pkg/front_end/testcases/inference/future_union_downwards.dart:21:47: Error: The argument type 'String' can't be assigned to the parameter type 'FutureOr<int>'.
  - 'FutureOr' is from 'dart:async'.
         new /*@ typeArgs=int* */ Future.value('hi'));
-                                              ^" in "hi" as{TypeError} asy::FutureOr<core::int*>*));
+                                              ^" in "hi" as{TypeError} asy::FutureOr<core::int*>?));
 static field asy::Future<core::List<core::int*>*>* t2 = self::f.{self::MyFuture::then}<core::List<core::int*>*>((dynamic _) → core::List<core::int*>* => <core::int*>[3]);
 static method g2() → asy::Future<core::List<core::int*>*>* /* originally async */ {
   final asy::_AsyncAwaitCompleter<core::List<core::int*>*>* :async_completer = new asy::_AsyncAwaitCompleter::•<core::List<core::int*>*>();
@@ -55,8 +64,8 @@
       asy::_completeOnAsyncReturn(:async_completer, :return_value);
       return;
     }
-    on dynamic catch(dynamic :exception, core::StackTrace* :stack_trace) {
-      :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+    on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
+      :async_completer.{asy::Completer::completeError}(exception, stack_trace);
     }
   :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
@@ -82,8 +91,8 @@
       asy::_completeOnAsyncReturn(:async_completer, :return_value);
       return;
     }
-    on dynamic catch(dynamic :exception, core::StackTrace* :stack_trace) {
-      :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+    on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
+      :async_completer.{asy::Completer::completeError}(exception, stack_trace);
     }
   :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
@@ -101,7 +110,7 @@
   #C5 = #whenComplete
   #C6 = <dynamic>[]
   #C7 = core::_ImmutableMap<core::Symbol*, dynamic> {_kvPairs:#C6}
-  #C8 = #timeout
-  #C9 = #onTimeout
-  #C10 = #asStream
+  #C8 = #asStream
+  #C9 = #timeout
+  #C10 = #onTimeout
 }
diff --git a/pkg/front_end/testcases/inference/future_union_downwards_2.dart.outline.expect b/pkg/front_end/testcases/inference/future_union_downwards_2.dart.outline.expect
index 9065bcf..e87f86e 100644
--- a/pkg/front_end/testcases/inference/future_union_downwards_2.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/future_union_downwards_2.dart.outline.expect
@@ -14,14 +14,23 @@
     ;
   method then<S extends core::Object* = dynamic>((self::MyFuture::T*) →* asy::FutureOr<self::MyFuture::then::S*>* f, {core::Function* onError}) → self::MyFuture<self::MyFuture::then::S*>*
     ;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function* onError, {(core::Object*) →* core::bool* test = #C1}) → asy::Future<self::MyFuture::T*>*
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
+  member-signature no-such-method-forwarder method catchError(core::Function* onError, {(core::Object*) →* core::bool* test}) → asy::Future<self::MyFuture::T*>*
     return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#catchError, 0, const <core::Type*>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#test: test}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() →* asy::FutureOr<dynamic>* action) → asy::Future<self::MyFuture::T*>*
+  member-signature no-such-method-forwarder method whenComplete(() →* asy::FutureOr<void>* action) → asy::Future<self::MyFuture::T*>*
     return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#whenComplete, 0, const <core::Type*>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration* timeLimit, {generic-covariant-impl () →* asy::FutureOr<self::MyFuture::T*>* onTimeout = #C1}) → asy::Future<self::MyFuture::T*>*
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#timeout, 0, const <core::Type*>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#onTimeout: onTimeout}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T*>*
+  member-signature no-such-method-forwarder method asStream() → asy::Stream<self::MyFuture::T*>*
     return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#asStream, 0, const <core::Type*>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{}))) as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
+  member-signature no-such-method-forwarder method timeout(core::Duration* timeLimit, {generic-covariant-impl () →* asy::FutureOr<self::MyFuture::T*>* onTimeout}) → asy::Future<self::MyFuture::T*>*
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#timeout, 0, const <core::Type*>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#onTimeout: onTimeout}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
 }
 static field self::MyFuture<dynamic>* f;
 static field asy::Future<core::int*>* t1;
@@ -32,7 +41,3 @@
   ;
 static method main() → dynamic
   ;
-
-constants  {
-  #C1 = null
-}
diff --git a/pkg/front_end/testcases/inference/future_union_downwards_2.dart.strong.expect b/pkg/front_end/testcases/inference/future_union_downwards_2.dart.strong.expect
index 2b84966..4986c0e 100644
--- a/pkg/front_end/testcases/inference/future_union_downwards_2.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/future_union_downwards_2.dart.strong.expect
@@ -14,14 +14,23 @@
     return null;
   method then<S extends core::Object* = dynamic>((self::MyFuture::T*) →* asy::FutureOr<self::MyFuture::then::S*>* f, {core::Function* onError = #C1}) → self::MyFuture<self::MyFuture::then::S*>*
     return null;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function* onError, {(core::Object*) →* core::bool* test = #C1}) → asy::Future<self::MyFuture::T*>*
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
+  member-signature no-such-method-forwarder method catchError(core::Function* onError, {(core::Object*) →* core::bool* test = #C1}) → asy::Future<self::MyFuture::T*>*
     return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C4: test}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() →* asy::FutureOr<dynamic>* action) → asy::Future<self::MyFuture::T*>*
+  member-signature no-such-method-forwarder method whenComplete(() →* asy::FutureOr<void>* action) → asy::Future<self::MyFuture::T*>*
     return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration* timeLimit, {generic-covariant-impl () →* asy::FutureOr<self::MyFuture::T*>* onTimeout = #C1}) → asy::Future<self::MyFuture::T*>*
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C9: onTimeout}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T*>*
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C10, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))) as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
+  member-signature no-such-method-forwarder method asStream() → asy::Stream<self::MyFuture::T*>*
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))) as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
+  member-signature no-such-method-forwarder method timeout(core::Duration* timeLimit, {generic-covariant-impl () →* asy::FutureOr<self::MyFuture::T*>* onTimeout = #C1}) → asy::Future<self::MyFuture::T*>*
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C10: onTimeout}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
 }
 static field self::MyFuture<dynamic>* f;
 static field asy::Future<core::int*>* t1 = self::f.{self::MyFuture::then}<core::int*>((dynamic _) → self::MyFuture<core::int*>* => new self::MyFuture::value<core::int*>("hi"));
@@ -42,7 +51,7 @@
   #C5 = #whenComplete
   #C6 = <dynamic>[]
   #C7 = core::_ImmutableMap<core::Symbol*, dynamic> {_kvPairs:#C6}
-  #C8 = #timeout
-  #C9 = #onTimeout
-  #C10 = #asStream
+  #C8 = #asStream
+  #C9 = #timeout
+  #C10 = #onTimeout
 }
diff --git a/pkg/front_end/testcases/inference/future_union_downwards_2.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/future_union_downwards_2.dart.strong.transformed.expect
index 90cc080..da8788c 100644
--- a/pkg/front_end/testcases/inference/future_union_downwards_2.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/future_union_downwards_2.dart.strong.transformed.expect
@@ -14,14 +14,23 @@
     return null;
   method then<S extends core::Object* = dynamic>((self::MyFuture::T*) →* asy::FutureOr<self::MyFuture::then::S*>* f, {core::Function* onError = #C1}) → self::MyFuture<self::MyFuture::then::S*>*
     return null;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function* onError, {(core::Object*) →* core::bool* test = #C1}) → asy::Future<self::MyFuture::T*>*
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
+  member-signature no-such-method-forwarder method catchError(core::Function* onError, {(core::Object*) →* core::bool* test = #C1}) → asy::Future<self::MyFuture::T*>*
     return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C4: test}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() →* asy::FutureOr<dynamic>* action) → asy::Future<self::MyFuture::T*>*
+  member-signature no-such-method-forwarder method whenComplete(() →* asy::FutureOr<void>* action) → asy::Future<self::MyFuture::T*>*
     return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration* timeLimit, {generic-covariant-impl () →* asy::FutureOr<self::MyFuture::T*>* onTimeout = #C1}) → asy::Future<self::MyFuture::T*>*
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C9: onTimeout}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T*>*
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C10, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))) as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
+  member-signature no-such-method-forwarder method asStream() → asy::Stream<self::MyFuture::T*>*
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))) as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
+  member-signature no-such-method-forwarder method timeout(core::Duration* timeLimit, {generic-covariant-impl () →* asy::FutureOr<self::MyFuture::T*>* onTimeout = #C1}) → asy::Future<self::MyFuture::T*>*
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C10: onTimeout}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
 }
 static field self::MyFuture<dynamic>* f;
 static field asy::Future<core::int*>* t1 = self::f.{self::MyFuture::then}<core::int*>((dynamic _) → self::MyFuture<core::int*>* => new self::MyFuture::value<core::int*>("hi"));
@@ -44,8 +53,8 @@
       asy::_completeOnAsyncReturn(:async_completer, :return_value);
       return;
     }
-    on dynamic catch(dynamic :exception, core::StackTrace* :stack_trace) {
-      :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+    on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
+      :async_completer.{asy::Completer::completeError}(exception, stack_trace);
     }
   :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
@@ -71,8 +80,8 @@
       asy::_completeOnAsyncReturn(:async_completer, :return_value);
       return;
     }
-    on dynamic catch(dynamic :exception, core::StackTrace* :stack_trace) {
-      :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+    on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
+      :async_completer.{asy::Completer::completeError}(exception, stack_trace);
     }
   :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
@@ -90,7 +99,7 @@
   #C5 = #whenComplete
   #C6 = <dynamic>[]
   #C7 = core::_ImmutableMap<core::Symbol*, dynamic> {_kvPairs:#C6}
-  #C8 = #timeout
-  #C9 = #onTimeout
-  #C10 = #asStream
+  #C8 = #asStream
+  #C9 = #timeout
+  #C10 = #onTimeout
 }
diff --git a/pkg/front_end/testcases/inference/future_union_downwards_3.dart.outline.expect b/pkg/front_end/testcases/inference/future_union_downwards_3.dart.outline.expect
index ff2fae926..bd74f36 100644
--- a/pkg/front_end/testcases/inference/future_union_downwards_3.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/future_union_downwards_3.dart.outline.expect
@@ -14,14 +14,23 @@
     ;
   method then<S extends core::Object* = dynamic>((self::MyFuture::T*) →* asy::FutureOr<self::MyFuture::then::S*>* f, {core::Function* onError}) → self::MyFuture<self::MyFuture::then::S*>*
     ;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function* onError, {(core::Object*) →* core::bool* test = #C1}) → asy::Future<self::MyFuture::T*>*
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
+  member-signature no-such-method-forwarder method catchError(core::Function* onError, {(core::Object*) →* core::bool* test}) → asy::Future<self::MyFuture::T*>*
     return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#catchError, 0, const <core::Type*>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#test: test}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() →* asy::FutureOr<dynamic>* action) → asy::Future<self::MyFuture::T*>*
+  member-signature no-such-method-forwarder method whenComplete(() →* asy::FutureOr<void>* action) → asy::Future<self::MyFuture::T*>*
     return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#whenComplete, 0, const <core::Type*>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration* timeLimit, {generic-covariant-impl () →* asy::FutureOr<self::MyFuture::T*>* onTimeout = #C1}) → asy::Future<self::MyFuture::T*>*
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#timeout, 0, const <core::Type*>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#onTimeout: onTimeout}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T*>*
+  member-signature no-such-method-forwarder method asStream() → asy::Stream<self::MyFuture::T*>*
     return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#asStream, 0, const <core::Type*>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{}))) as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
+  member-signature no-such-method-forwarder method timeout(core::Duration* timeLimit, {generic-covariant-impl () →* asy::FutureOr<self::MyFuture::T*>* onTimeout}) → asy::Future<self::MyFuture::T*>*
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#timeout, 0, const <core::Type*>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#onTimeout: onTimeout}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
 }
 static field asy::Future<dynamic>* f;
 static field asy::Future<core::int*>* t1;
@@ -32,7 +41,3 @@
   ;
 static method main() → dynamic
   ;
-
-constants  {
-  #C1 = null
-}
diff --git a/pkg/front_end/testcases/inference/future_union_downwards_3.dart.strong.expect b/pkg/front_end/testcases/inference/future_union_downwards_3.dart.strong.expect
index 125547e..e906a6b 100644
--- a/pkg/front_end/testcases/inference/future_union_downwards_3.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/future_union_downwards_3.dart.strong.expect
@@ -22,20 +22,29 @@
     return null;
   method then<S extends core::Object* = dynamic>((self::MyFuture::T*) →* asy::FutureOr<self::MyFuture::then::S*>* f, {core::Function* onError = #C1}) → self::MyFuture<self::MyFuture::then::S*>*
     return null;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function* onError, {(core::Object*) →* core::bool* test = #C1}) → asy::Future<self::MyFuture::T*>*
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
+  member-signature no-such-method-forwarder method catchError(core::Function* onError, {(core::Object*) →* core::bool* test = #C1}) → asy::Future<self::MyFuture::T*>*
     return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C4: test}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() →* asy::FutureOr<dynamic>* action) → asy::Future<self::MyFuture::T*>*
+  member-signature no-such-method-forwarder method whenComplete(() →* asy::FutureOr<void>* action) → asy::Future<self::MyFuture::T*>*
     return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration* timeLimit, {generic-covariant-impl () →* asy::FutureOr<self::MyFuture::T*>* onTimeout = #C1}) → asy::Future<self::MyFuture::T*>*
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C9: onTimeout}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T*>*
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C10, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))) as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
+  member-signature no-such-method-forwarder method asStream() → asy::Stream<self::MyFuture::T*>*
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))) as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
+  member-signature no-such-method-forwarder method timeout(core::Duration* timeLimit, {generic-covariant-impl () →* asy::FutureOr<self::MyFuture::T*>* onTimeout = #C1}) → asy::Future<self::MyFuture::T*>*
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C10: onTimeout}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
 }
 static field asy::Future<dynamic>* f;
 static field asy::Future<core::int*>* t1 = self::f.{asy::Future::then}<core::int*>((dynamic _) → asy::Future<core::int*>* => asy::Future::value<core::int*>(let final<BottomType> #t1 = invalid-expression "pkg/front_end/testcases/inference/future_union_downwards_3.dart:21:47: Error: The argument type 'String' can't be assigned to the parameter type 'FutureOr<int>'.
  - 'FutureOr' is from 'dart:async'.
         new /*@ typeArgs=int* */ Future.value('hi'));
-                                              ^" in "hi" as{TypeError} asy::FutureOr<core::int*>*));
+                                              ^" in "hi" as{TypeError} asy::FutureOr<core::int*>?));
 static field asy::Future<core::List<core::int*>*>* t2 = self::f.{asy::Future::then}<core::List<core::int*>*>((dynamic _) → core::List<core::int*>* => <core::int*>[3]);
 static method g2() → asy::Future<core::List<core::int*>*>* async {
   return <core::int*>[3];
@@ -53,7 +62,7 @@
   #C5 = #whenComplete
   #C6 = <dynamic>[]
   #C7 = core::_ImmutableMap<core::Symbol*, dynamic> {_kvPairs:#C6}
-  #C8 = #timeout
-  #C9 = #onTimeout
-  #C10 = #asStream
+  #C8 = #asStream
+  #C9 = #timeout
+  #C10 = #onTimeout
 }
diff --git a/pkg/front_end/testcases/inference/future_union_downwards_3.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/future_union_downwards_3.dart.strong.transformed.expect
index 4e9ddea..e8603e3 100644
--- a/pkg/front_end/testcases/inference/future_union_downwards_3.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/future_union_downwards_3.dart.strong.transformed.expect
@@ -22,20 +22,29 @@
     return null;
   method then<S extends core::Object* = dynamic>((self::MyFuture::T*) →* asy::FutureOr<self::MyFuture::then::S*>* f, {core::Function* onError = #C1}) → self::MyFuture<self::MyFuture::then::S*>*
     return null;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function* onError, {(core::Object*) →* core::bool* test = #C1}) → asy::Future<self::MyFuture::T*>*
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
+  member-signature no-such-method-forwarder method catchError(core::Function* onError, {(core::Object*) →* core::bool* test = #C1}) → asy::Future<self::MyFuture::T*>*
     return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C4: test}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() →* asy::FutureOr<dynamic>* action) → asy::Future<self::MyFuture::T*>*
+  member-signature no-such-method-forwarder method whenComplete(() →* asy::FutureOr<void>* action) → asy::Future<self::MyFuture::T*>*
     return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration* timeLimit, {generic-covariant-impl () →* asy::FutureOr<self::MyFuture::T*>* onTimeout = #C1}) → asy::Future<self::MyFuture::T*>*
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C9: onTimeout}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T*>*
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C10, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))) as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
+  member-signature no-such-method-forwarder method asStream() → asy::Stream<self::MyFuture::T*>*
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))) as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
+  member-signature no-such-method-forwarder method timeout(core::Duration* timeLimit, {generic-covariant-impl () →* asy::FutureOr<self::MyFuture::T*>* onTimeout = #C1}) → asy::Future<self::MyFuture::T*>*
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C10: onTimeout}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
 }
 static field asy::Future<dynamic>* f;
 static field asy::Future<core::int*>* t1 = self::f.{asy::Future::then}<core::int*>((dynamic _) → asy::Future<core::int*>* => asy::Future::value<core::int*>(let final<BottomType> #t1 = invalid-expression "pkg/front_end/testcases/inference/future_union_downwards_3.dart:21:47: Error: The argument type 'String' can't be assigned to the parameter type 'FutureOr<int>'.
  - 'FutureOr' is from 'dart:async'.
         new /*@ typeArgs=int* */ Future.value('hi'));
-                                              ^" in "hi" as{TypeError} asy::FutureOr<core::int*>*));
+                                              ^" in "hi" as{TypeError} asy::FutureOr<core::int*>?));
 static field asy::Future<core::List<core::int*>*>* t2 = self::f.{asy::Future::then}<core::List<core::int*>*>((dynamic _) → core::List<core::int*>* => <core::int*>[3]);
 static method g2() → asy::Future<core::List<core::int*>*>* /* originally async */ {
   final asy::_AsyncAwaitCompleter<core::List<core::int*>*>* :async_completer = new asy::_AsyncAwaitCompleter::•<core::List<core::int*>*>();
@@ -55,8 +64,8 @@
       asy::_completeOnAsyncReturn(:async_completer, :return_value);
       return;
     }
-    on dynamic catch(dynamic :exception, core::StackTrace* :stack_trace) {
-      :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+    on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
+      :async_completer.{asy::Completer::completeError}(exception, stack_trace);
     }
   :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
@@ -82,8 +91,8 @@
       asy::_completeOnAsyncReturn(:async_completer, :return_value);
       return;
     }
-    on dynamic catch(dynamic :exception, core::StackTrace* :stack_trace) {
-      :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+    on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
+      :async_completer.{asy::Completer::completeError}(exception, stack_trace);
     }
   :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
@@ -101,7 +110,7 @@
   #C5 = #whenComplete
   #C6 = <dynamic>[]
   #C7 = core::_ImmutableMap<core::Symbol*, dynamic> {_kvPairs:#C6}
-  #C8 = #timeout
-  #C9 = #onTimeout
-  #C10 = #asStream
+  #C8 = #asStream
+  #C9 = #timeout
+  #C10 = #onTimeout
 }
diff --git a/pkg/front_end/testcases/inference/future_union_downwards_4.dart.outline.expect b/pkg/front_end/testcases/inference/future_union_downwards_4.dart.outline.expect
index ff2fae926..bd74f36 100644
--- a/pkg/front_end/testcases/inference/future_union_downwards_4.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/future_union_downwards_4.dart.outline.expect
@@ -14,14 +14,23 @@
     ;
   method then<S extends core::Object* = dynamic>((self::MyFuture::T*) →* asy::FutureOr<self::MyFuture::then::S*>* f, {core::Function* onError}) → self::MyFuture<self::MyFuture::then::S*>*
     ;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function* onError, {(core::Object*) →* core::bool* test = #C1}) → asy::Future<self::MyFuture::T*>*
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
+  member-signature no-such-method-forwarder method catchError(core::Function* onError, {(core::Object*) →* core::bool* test}) → asy::Future<self::MyFuture::T*>*
     return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#catchError, 0, const <core::Type*>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#test: test}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() →* asy::FutureOr<dynamic>* action) → asy::Future<self::MyFuture::T*>*
+  member-signature no-such-method-forwarder method whenComplete(() →* asy::FutureOr<void>* action) → asy::Future<self::MyFuture::T*>*
     return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#whenComplete, 0, const <core::Type*>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration* timeLimit, {generic-covariant-impl () →* asy::FutureOr<self::MyFuture::T*>* onTimeout = #C1}) → asy::Future<self::MyFuture::T*>*
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#timeout, 0, const <core::Type*>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#onTimeout: onTimeout}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T*>*
+  member-signature no-such-method-forwarder method asStream() → asy::Stream<self::MyFuture::T*>*
     return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#asStream, 0, const <core::Type*>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{}))) as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
+  member-signature no-such-method-forwarder method timeout(core::Duration* timeLimit, {generic-covariant-impl () →* asy::FutureOr<self::MyFuture::T*>* onTimeout}) → asy::Future<self::MyFuture::T*>*
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#timeout, 0, const <core::Type*>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#onTimeout: onTimeout}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
 }
 static field asy::Future<dynamic>* f;
 static field asy::Future<core::int*>* t1;
@@ -32,7 +41,3 @@
   ;
 static method main() → dynamic
   ;
-
-constants  {
-  #C1 = null
-}
diff --git a/pkg/front_end/testcases/inference/future_union_downwards_4.dart.strong.expect b/pkg/front_end/testcases/inference/future_union_downwards_4.dart.strong.expect
index e4e496c..c3fde44 100644
--- a/pkg/front_end/testcases/inference/future_union_downwards_4.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/future_union_downwards_4.dart.strong.expect
@@ -14,14 +14,23 @@
     return null;
   method then<S extends core::Object* = dynamic>((self::MyFuture::T*) →* asy::FutureOr<self::MyFuture::then::S*>* f, {core::Function* onError = #C1}) → self::MyFuture<self::MyFuture::then::S*>*
     return null;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function* onError, {(core::Object*) →* core::bool* test = #C1}) → asy::Future<self::MyFuture::T*>*
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
+  member-signature no-such-method-forwarder method catchError(core::Function* onError, {(core::Object*) →* core::bool* test = #C1}) → asy::Future<self::MyFuture::T*>*
     return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C4: test}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() →* asy::FutureOr<dynamic>* action) → asy::Future<self::MyFuture::T*>*
+  member-signature no-such-method-forwarder method whenComplete(() →* asy::FutureOr<void>* action) → asy::Future<self::MyFuture::T*>*
     return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration* timeLimit, {generic-covariant-impl () →* asy::FutureOr<self::MyFuture::T*>* onTimeout = #C1}) → asy::Future<self::MyFuture::T*>*
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C9: onTimeout}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T*>*
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C10, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))) as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
+  member-signature no-such-method-forwarder method asStream() → asy::Stream<self::MyFuture::T*>*
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))) as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
+  member-signature no-such-method-forwarder method timeout(core::Duration* timeLimit, {generic-covariant-impl () →* asy::FutureOr<self::MyFuture::T*>* onTimeout = #C1}) → asy::Future<self::MyFuture::T*>*
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C10: onTimeout}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
 }
 static field asy::Future<dynamic>* f;
 static field asy::Future<core::int*>* t1 = self::f.{asy::Future::then}<core::int*>((dynamic _) → self::MyFuture<core::int*>* => new self::MyFuture::value<core::int*>("hi"));
@@ -42,7 +51,7 @@
   #C5 = #whenComplete
   #C6 = <dynamic>[]
   #C7 = core::_ImmutableMap<core::Symbol*, dynamic> {_kvPairs:#C6}
-  #C8 = #timeout
-  #C9 = #onTimeout
-  #C10 = #asStream
+  #C8 = #asStream
+  #C9 = #timeout
+  #C10 = #onTimeout
 }
diff --git a/pkg/front_end/testcases/inference/future_union_downwards_4.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/future_union_downwards_4.dart.strong.transformed.expect
index b54c92f..1926d67 100644
--- a/pkg/front_end/testcases/inference/future_union_downwards_4.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/future_union_downwards_4.dart.strong.transformed.expect
@@ -14,14 +14,23 @@
     return null;
   method then<S extends core::Object* = dynamic>((self::MyFuture::T*) →* asy::FutureOr<self::MyFuture::then::S*>* f, {core::Function* onError = #C1}) → self::MyFuture<self::MyFuture::then::S*>*
     return null;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function* onError, {(core::Object*) →* core::bool* test = #C1}) → asy::Future<self::MyFuture::T*>*
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
+  member-signature no-such-method-forwarder method catchError(core::Function* onError, {(core::Object*) →* core::bool* test = #C1}) → asy::Future<self::MyFuture::T*>*
     return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C4: test}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() →* asy::FutureOr<dynamic>* action) → asy::Future<self::MyFuture::T*>*
+  member-signature no-such-method-forwarder method whenComplete(() →* asy::FutureOr<void>* action) → asy::Future<self::MyFuture::T*>*
     return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration* timeLimit, {generic-covariant-impl () →* asy::FutureOr<self::MyFuture::T*>* onTimeout = #C1}) → asy::Future<self::MyFuture::T*>*
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C9: onTimeout}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T*>*
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C10, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))) as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
+  member-signature no-such-method-forwarder method asStream() → asy::Stream<self::MyFuture::T*>*
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))) as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
+  member-signature no-such-method-forwarder method timeout(core::Duration* timeLimit, {generic-covariant-impl () →* asy::FutureOr<self::MyFuture::T*>* onTimeout = #C1}) → asy::Future<self::MyFuture::T*>*
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C10: onTimeout}))) as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
 }
 static field asy::Future<dynamic>* f;
 static field asy::Future<core::int*>* t1 = self::f.{asy::Future::then}<core::int*>((dynamic _) → self::MyFuture<core::int*>* => new self::MyFuture::value<core::int*>("hi"));
@@ -44,8 +53,8 @@
       asy::_completeOnAsyncReturn(:async_completer, :return_value);
       return;
     }
-    on dynamic catch(dynamic :exception, core::StackTrace* :stack_trace) {
-      :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+    on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
+      :async_completer.{asy::Completer::completeError}(exception, stack_trace);
     }
   :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
@@ -71,8 +80,8 @@
       asy::_completeOnAsyncReturn(:async_completer, :return_value);
       return;
     }
-    on dynamic catch(dynamic :exception, core::StackTrace* :stack_trace) {
-      :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+    on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
+      :async_completer.{asy::Completer::completeError}(exception, stack_trace);
     }
   :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
@@ -90,7 +99,7 @@
   #C5 = #whenComplete
   #C6 = <dynamic>[]
   #C7 = core::_ImmutableMap<core::Symbol*, dynamic> {_kvPairs:#C6}
-  #C8 = #timeout
-  #C9 = #onTimeout
-  #C10 = #asStream
+  #C8 = #asStream
+  #C9 = #timeout
+  #C10 = #onTimeout
 }
diff --git a/pkg/front_end/testcases/inference/future_union_downwards_generic_method_with_future_return.dart.outline.expect b/pkg/front_end/testcases/inference/future_union_downwards_generic_method_with_future_return.dart.outline.expect
index c0805d9..fcbe2d9 100644
--- a/pkg/front_end/testcases/inference/future_union_downwards_generic_method_with_future_return.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/future_union_downwards_generic_method_with_future_return.dart.outline.expect
@@ -7,6 +7,16 @@
 class A extends core::Object {
   synthetic constructor •() → self::A*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method foo() → dynamic
   ;
diff --git a/pkg/front_end/testcases/inference/future_union_downwards_generic_method_with_future_return.dart.strong.expect b/pkg/front_end/testcases/inference/future_union_downwards_generic_method_with_future_return.dart.strong.expect
index 9e8da5a..4aff101 100644
--- a/pkg/front_end/testcases/inference/future_union_downwards_generic_method_with_future_return.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/future_union_downwards_generic_method_with_future_return.dart.strong.expect
@@ -9,6 +9,16 @@
   synthetic constructor •() → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method foo() → dynamic async {
   asy::Future<core::List<self::A*>*>* f1 = null;
diff --git a/pkg/front_end/testcases/inference/future_union_downwards_generic_method_with_future_return.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/future_union_downwards_generic_method_with_future_return.dart.strong.transformed.expect
index fad67c5..2ab55bf 100644
--- a/pkg/front_end/testcases/inference/future_union_downwards_generic_method_with_future_return.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/future_union_downwards_generic_method_with_future_return.dart.strong.transformed.expect
@@ -10,6 +10,16 @@
   synthetic constructor •() → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method foo() → dynamic /* originally async */ {
   final asy::_AsyncAwaitCompleter<dynamic>* :async_completer = new asy::_AsyncAwaitCompleter::•<dynamic>();
@@ -27,13 +37,13 @@
         asy::Future<core::List<self::A*>*>* f1 = null;
         asy::Future<core::List<self::A*>*>* f2 = null;
         [yield] let dynamic #t1 = asy::_awaitHelper(asy::Future::wait<core::List<self::A*>*>(<asy::Future<core::List<self::A*>*>*>[f1, f2]), :async_op_then, :async_op_error, :async_op) in null;
-        core::List<core::List<self::A*>*>* merged = _in::unsafeCast<core::List<core::List<self::A*>*>*>(:result);
+        core::List<core::List<self::A*>*>* merged = _in::unsafeCast<core::List<core::List<self::A*>*>>(:result);
       }
       asy::_completeOnAsyncReturn(:async_completer, :return_value);
       return;
     }
-    on dynamic catch(dynamic :exception, core::StackTrace* :stack_trace) {
-      :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+    on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
+      :async_completer.{asy::Completer::completeError}(exception, stack_trace);
     }
   :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
diff --git a/pkg/front_end/testcases/inference/future_union_downwards_generic_method_with_generic_return.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/future_union_downwards_generic_method_with_generic_return.dart.strong.transformed.expect
index fce1d5c..a653b4c 100644
--- a/pkg/front_end/testcases/inference/future_union_downwards_generic_method_with_generic_return.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/future_union_downwards_generic_method_with_generic_return.dart.strong.transformed.expect
@@ -28,8 +28,8 @@
       asy::_completeOnAsyncReturn(:async_completer, :return_value);
       return;
     }
-    on dynamic catch(dynamic :exception, core::StackTrace* :stack_trace) {
-      :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+    on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
+      :async_completer.{asy::Completer::completeError}(exception, stack_trace);
     }
   :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
diff --git a/pkg/front_end/testcases/inference/future_union_upwards_generic_methods.dart.outline.expect b/pkg/front_end/testcases/inference/future_union_upwards_generic_methods.dart.outline.expect
index 2dff872..3692109 100644
--- a/pkg/front_end/testcases/inference/future_union_upwards_generic_methods.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/future_union_upwards_generic_methods.dart.outline.expect
@@ -7,6 +7,16 @@
 class A extends core::Object {
   synthetic constructor •() → self::A*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A {
   synthetic constructor •() → self::B*
diff --git a/pkg/front_end/testcases/inference/future_union_upwards_generic_methods.dart.strong.expect b/pkg/front_end/testcases/inference/future_union_upwards_generic_methods.dart.strong.expect
index f38520e..92d2d03 100644
--- a/pkg/front_end/testcases/inference/future_union_upwards_generic_methods.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/future_union_upwards_generic_methods.dart.strong.expect
@@ -9,6 +9,16 @@
   synthetic constructor •() → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A {
   synthetic constructor •() → self::B*
diff --git a/pkg/front_end/testcases/inference/future_union_upwards_generic_methods.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/future_union_upwards_generic_methods.dart.strong.transformed.expect
index 6e13ec4..53d3ff0 100644
--- a/pkg/front_end/testcases/inference/future_union_upwards_generic_methods.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/future_union_upwards_generic_methods.dart.strong.transformed.expect
@@ -10,6 +10,16 @@
   synthetic constructor •() → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A {
   synthetic constructor •() → self::B*
@@ -38,17 +48,17 @@
         asy::Future<self::C*>* c = asy::Future::value<self::C*>(new self::C::•());
         core::List<asy::Future<self::A*>*>* lll = <asy::Future<self::A*>*>[b, c];
         [yield] let dynamic #t1 = asy::_awaitHelper(asy::Future::wait<self::A*>(lll), :async_op_then, :async_op_error, :async_op) in null;
-        core::List<self::A*>* result = _in::unsafeCast<core::List<self::A*>*>(:result);
+        core::List<self::A*>* result = _in::unsafeCast<core::List<self::A*>>(:result);
         [yield] let dynamic #t2 = asy::_awaitHelper(asy::Future::wait<self::A*>(<asy::Future<self::A*>*>[b, c]), :async_op_then, :async_op_error, :async_op) in null;
-        core::List<self::A*>* result2 = _in::unsafeCast<core::List<self::A*>*>(:result);
+        core::List<self::A*>* result2 = _in::unsafeCast<core::List<self::A*>>(:result);
         core::List<self::A*>* list = result;
         list = result2;
       }
       asy::_completeOnAsyncReturn(:async_completer, :return_value);
       return;
     }
-    on dynamic catch(dynamic :exception, core::StackTrace* :stack_trace) {
-      :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+    on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
+      :async_completer.{asy::Completer::completeError}(exception, stack_trace);
     }
   :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
diff --git a/pkg/front_end/testcases/inference/generator_closure.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/generator_closure.dart.strong.transformed.expect
index 6c34434..b1d5d53 100644
--- a/pkg/front_end/testcases/inference/generator_closure.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/generator_closure.dart.strong.transformed.expect
@@ -33,8 +33,8 @@
           }
           return;
         }
-        on dynamic catch(dynamic :exception, core::StackTrace* :stack_trace) {
-          :controller.{asy::_AsyncStarStreamController::addError}(:exception, :stack_trace);
+        on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
+          :controller.{asy::_AsyncStarStreamController::addError}(exception, stack_trace);
         }
       finally {
         :controller.{asy::_AsyncStarStreamController::close}();
diff --git a/pkg/front_end/testcases/inference/generic_methods_correctly_recognize_generic_upper_bound.dart.outline.expect b/pkg/front_end/testcases/inference/generic_methods_correctly_recognize_generic_upper_bound.dart.outline.expect
index 1a8b966..1dea7ff 100644
--- a/pkg/front_end/testcases/inference/generic_methods_correctly_recognize_generic_upper_bound.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/generic_methods_correctly_recognize_generic_upper_bound.dart.outline.expect
@@ -7,6 +7,16 @@
     ;
   method method<generic-covariant-impl U extends self::Foo::T* = self::Foo::T*>(self::Foo::method::U* u) → self::Foo::method::U*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/inference/generic_methods_correctly_recognize_generic_upper_bound.dart.strong.expect b/pkg/front_end/testcases/inference/generic_methods_correctly_recognize_generic_upper_bound.dart.strong.expect
index 96c5ec2..44273dd 100644
--- a/pkg/front_end/testcases/inference/generic_methods_correctly_recognize_generic_upper_bound.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/generic_methods_correctly_recognize_generic_upper_bound.dart.strong.expect
@@ -17,6 +17,16 @@
     ;
   method method<generic-covariant-impl U extends self::Foo::T* = self::Foo::T*>(self::Foo::method::U* u) → self::Foo::method::U*
     return u;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   new self::Foo::•<core::String*>().{self::Foo::method}<core::int*>(42);
diff --git a/pkg/front_end/testcases/inference/generic_methods_do_not_infer_invalid_override_of_generic_method.dart.outline.expect b/pkg/front_end/testcases/inference/generic_methods_do_not_infer_invalid_override_of_generic_method.dart.outline.expect
index 07bf679..1e8519c 100644
--- a/pkg/front_end/testcases/inference/generic_methods_do_not_infer_invalid_override_of_generic_method.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/generic_methods_do_not_infer_invalid_override_of_generic_method.dart.outline.expect
@@ -25,6 +25,16 @@
     ;
   method m<T extends core::Object* = dynamic>(self::C::m::T* x) → self::C::m::T*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D extends self::C {
   synthetic constructor •() → self::D*
diff --git a/pkg/front_end/testcases/inference/generic_methods_do_not_infer_invalid_override_of_generic_method.dart.strong.expect b/pkg/front_end/testcases/inference/generic_methods_do_not_infer_invalid_override_of_generic_method.dart.strong.expect
index a0717bb..27cdc82 100644
--- a/pkg/front_end/testcases/inference/generic_methods_do_not_infer_invalid_override_of_generic_method.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/generic_methods_do_not_infer_invalid_override_of_generic_method.dart.strong.expect
@@ -30,6 +30,16 @@
     ;
   method m<T extends core::Object* = dynamic>(self::C::m::T* x) → self::C::m::T*
     return x;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D extends self::C {
   synthetic constructor •() → self::D*
diff --git a/pkg/front_end/testcases/inference/generic_methods_handle_override_of_non_generic_with_generic.dart.outline.expect b/pkg/front_end/testcases/inference/generic_methods_handle_override_of_non_generic_with_generic.dart.outline.expect
index 9bbf070..5927e55 100644
--- a/pkg/front_end/testcases/inference/generic_methods_handle_override_of_non_generic_with_generic.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/generic_methods_handle_override_of_non_generic_with_generic.dart.outline.expect
@@ -42,6 +42,16 @@
     ;
   method g(core::int* x) → dynamic
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D extends self::C {
   synthetic constructor •() → self::D*
diff --git a/pkg/front_end/testcases/inference/generic_methods_handle_override_of_non_generic_with_generic.dart.strong.expect b/pkg/front_end/testcases/inference/generic_methods_handle_override_of_non_generic_with_generic.dart.strong.expect
index 1988b92..e5f62a7 100644
--- a/pkg/front_end/testcases/inference/generic_methods_handle_override_of_non_generic_with_generic.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/generic_methods_handle_override_of_non_generic_with_generic.dart.strong.expect
@@ -43,6 +43,16 @@
     return x;
   method g(core::int* x) → dynamic
     return x;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D extends self::C {
   synthetic constructor •() → self::D*
diff --git a/pkg/front_end/testcases/inference/generic_methods_infer_generic_function_parameter_type.dart.outline.expect b/pkg/front_end/testcases/inference/generic_methods_infer_generic_function_parameter_type.dart.outline.expect
index c2f4469..44815ce 100644
--- a/pkg/front_end/testcases/inference/generic_methods_infer_generic_function_parameter_type.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/generic_methods_infer_generic_function_parameter_type.dart.outline.expect
@@ -14,6 +14,16 @@
     ;
   method f<U extends core::Object* = dynamic>(self::D::f::U* u) → (self::D::f::U*) →* void
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/inference/generic_methods_infer_generic_function_parameter_type.dart.strong.expect b/pkg/front_end/testcases/inference/generic_methods_infer_generic_function_parameter_type.dart.strong.expect
index abcd1fc..d007c33 100644
--- a/pkg/front_end/testcases/inference/generic_methods_infer_generic_function_parameter_type.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/generic_methods_infer_generic_function_parameter_type.dart.strong.expect
@@ -15,5 +15,15 @@
     ;
   method f<U extends core::Object* = dynamic>(self::D::f::U* u) → (self::D::f::U*) →* void
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/generic_methods_infer_generic_function_parameter_type.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/generic_methods_infer_generic_function_parameter_type.dart.strong.transformed.expect
index abcd1fc..d007c33 100644
--- a/pkg/front_end/testcases/inference/generic_methods_infer_generic_function_parameter_type.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/generic_methods_infer_generic_function_parameter_type.dart.strong.transformed.expect
@@ -15,5 +15,15 @@
     ;
   method f<U extends core::Object* = dynamic>(self::D::f::U* u) → (self::D::f::U*) →* void
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/generic_methods_infer_generic_function_parameter_type2.dart.outline.expect b/pkg/front_end/testcases/inference/generic_methods_infer_generic_function_parameter_type2.dart.outline.expect
index cd56022..4562175 100644
--- a/pkg/front_end/testcases/inference/generic_methods_infer_generic_function_parameter_type2.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/generic_methods_infer_generic_function_parameter_type2.dart.outline.expect
@@ -13,6 +13,16 @@
   synthetic constructor •() → self::D<self::D::T*>*
     ;
   abstract method f<U extends core::Object* = dynamic>(() →* core::List<self::D::f::U*>* g) → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/inference/generic_methods_infer_generic_function_parameter_type2.dart.strong.expect b/pkg/front_end/testcases/inference/generic_methods_infer_generic_function_parameter_type2.dart.strong.expect
index bd37b92..dd0a5a2 100644
--- a/pkg/front_end/testcases/inference/generic_methods_infer_generic_function_parameter_type2.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/generic_methods_infer_generic_function_parameter_type2.dart.strong.expect
@@ -15,5 +15,15 @@
     : super core::Object::•()
     ;
   abstract method f<U extends core::Object* = dynamic>(() →* core::List<self::D::f::U*>* g) → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/generic_methods_infer_generic_function_parameter_type2.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/generic_methods_infer_generic_function_parameter_type2.dart.strong.transformed.expect
index bd37b92..dd0a5a2 100644
--- a/pkg/front_end/testcases/inference/generic_methods_infer_generic_function_parameter_type2.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/generic_methods_infer_generic_function_parameter_type2.dart.strong.transformed.expect
@@ -15,5 +15,15 @@
     : super core::Object::•()
     ;
   abstract method f<U extends core::Object* = dynamic>(() →* core::List<self::D::f::U*>* g) → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/generic_methods_infer_generic_function_return_type.dart.outline.expect b/pkg/front_end/testcases/inference/generic_methods_infer_generic_function_return_type.dart.outline.expect
index 0a73a00..ffdfdfc 100644
--- a/pkg/front_end/testcases/inference/generic_methods_infer_generic_function_return_type.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/generic_methods_infer_generic_function_return_type.dart.outline.expect
@@ -14,6 +14,16 @@
     ;
   method f<U extends core::Object* = dynamic>(self::D::f::U* u) → () →* self::D::f::U*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/inference/generic_methods_infer_generic_function_return_type.dart.strong.expect b/pkg/front_end/testcases/inference/generic_methods_infer_generic_function_return_type.dart.strong.expect
index 5696a03..19f7ab2 100644
--- a/pkg/front_end/testcases/inference/generic_methods_infer_generic_function_return_type.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/generic_methods_infer_generic_function_return_type.dart.strong.expect
@@ -15,5 +15,15 @@
     ;
   method f<U extends core::Object* = dynamic>(self::D::f::U* u) → () →* self::D::f::U*
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/generic_methods_infer_generic_function_return_type.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/generic_methods_infer_generic_function_return_type.dart.strong.transformed.expect
index 5696a03..19f7ab2 100644
--- a/pkg/front_end/testcases/inference/generic_methods_infer_generic_function_return_type.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/generic_methods_infer_generic_function_return_type.dart.strong.transformed.expect
@@ -15,5 +15,15 @@
     ;
   method f<U extends core::Object* = dynamic>(self::D::f::U* u) → () →* self::D::f::U*
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/generic_methods_infer_generic_instantiation.dart.outline.expect b/pkg/front_end/testcases/inference/generic_methods_infer_generic_instantiation.dart.outline.expect
index e19be4b..efea25f 100644
--- a/pkg/front_end/testcases/inference/generic_methods_infer_generic_instantiation.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/generic_methods_infer_generic_instantiation.dart.outline.expect
@@ -10,6 +10,16 @@
     ;
   method m<T extends core::num* = core::num*>(self::C::m::T* x, self::C::m::T* y) → self::C::m::T*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method test() → dynamic
   ;
diff --git a/pkg/front_end/testcases/inference/generic_methods_infer_generic_instantiation.dart.strong.expect b/pkg/front_end/testcases/inference/generic_methods_infer_generic_instantiation.dart.strong.expect
index 899b8b0..aaae63a 100644
--- a/pkg/front_end/testcases/inference/generic_methods_infer_generic_instantiation.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/generic_methods_infer_generic_instantiation.dart.strong.expect
@@ -38,6 +38,16 @@
     ;
   method m<T extends core::num* = core::num*>(self::C::m::T* x, self::C::m::T* y) → self::C::m::T*
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method test() → dynamic {
   self::takeIII(#C1<core::int*>);
diff --git a/pkg/front_end/testcases/inference/generic_methods_infer_generic_instantiation.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/generic_methods_infer_generic_instantiation.dart.strong.transformed.expect
index 899b8b0..aaae63a 100644
--- a/pkg/front_end/testcases/inference/generic_methods_infer_generic_instantiation.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/generic_methods_infer_generic_instantiation.dart.strong.transformed.expect
@@ -38,6 +38,16 @@
     ;
   method m<T extends core::num* = core::num*>(self::C::m::T* x, self::C::m::T* y) → self::C::m::T*
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method test() → dynamic {
   self::takeIII(#C1<core::int*>);
diff --git a/pkg/front_end/testcases/inference/generic_methods_infer_generic_method_type.dart.outline.expect b/pkg/front_end/testcases/inference/generic_methods_infer_generic_method_type.dart.outline.expect
index 45f2f2b..a639bbc 100644
--- a/pkg/front_end/testcases/inference/generic_methods_infer_generic_method_type.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/generic_methods_infer_generic_method_type.dart.outline.expect
@@ -7,6 +7,16 @@
     ;
   method m<T extends core::Object* = dynamic>(self::C::m::T* x) → self::C::m::T*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D extends self::C {
   synthetic constructor •() → self::D*
diff --git a/pkg/front_end/testcases/inference/generic_methods_infer_generic_method_type.dart.strong.expect b/pkg/front_end/testcases/inference/generic_methods_infer_generic_method_type.dart.strong.expect
index c47ff56..927c3e2 100644
--- a/pkg/front_end/testcases/inference/generic_methods_infer_generic_method_type.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/generic_methods_infer_generic_method_type.dart.strong.expect
@@ -8,6 +8,16 @@
     ;
   method m<T extends core::Object* = dynamic>(self::C::m::T* x) → self::C::m::T*
     return x;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D extends self::C {
   synthetic constructor •() → self::D*
diff --git a/pkg/front_end/testcases/inference/generic_methods_infer_generic_method_type.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/generic_methods_infer_generic_method_type.dart.strong.transformed.expect
index c47ff56..927c3e2 100644
--- a/pkg/front_end/testcases/inference/generic_methods_infer_generic_method_type.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/generic_methods_infer_generic_method_type.dart.strong.transformed.expect
@@ -8,6 +8,16 @@
     ;
   method m<T extends core::Object* = dynamic>(self::C::m::T* x) → self::C::m::T*
     return x;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D extends self::C {
   synthetic constructor •() → self::D*
diff --git a/pkg/front_end/testcases/inference/generic_methods_iterable_and_future.dart.strong.expect b/pkg/front_end/testcases/inference/generic_methods_iterable_and_future.dart.strong.expect
index 66a26bf..cdd5f42 100644
--- a/pkg/front_end/testcases/inference/generic_methods_iterable_and_future.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/generic_methods_iterable_and_future.dart.strong.expect
@@ -32,7 +32,7 @@
   asy::Future<core::String*>* results3 = results.{asy::Future::then}<core::String*>((core::List<core::int*>* list) → asy::FutureOr<core::String*>* => list.{core::Iterable::fold}<asy::FutureOr<core::String*>*>("", let final<BottomType> #t1 = invalid-expression "pkg/front_end/testcases/inference/generic_methods_iterable_and_future.dart:31:111: Error: The argument type 'String Function(String, int)' can't be assigned to the parameter type 'FutureOr<String> Function(FutureOr<String>, int)'.
  - 'FutureOr' is from 'dart:async'.
                   /*info:INFERRED_TYPE_CLOSURE,error:ARGUMENT_TYPE_NOT_ASSIGNABLE*/ /*@ returnType=String* */ (String
-                                                                                                              ^" in ((core::String* x, core::int* y) → core::String* => x.{core::String::+}(y.{core::int::toString}())) as{TypeError} (asy::FutureOr<core::String*>*, core::int*) →* asy::FutureOr<core::String*>*));
+                                                                                                              ^" in ((core::String* x, core::int* y) → core::String* => x.{core::String::+}(y.{core::int::toString}())) as{TypeError} (asy::FutureOr<core::String*>*, core::int*) → asy::FutureOr<core::String*>*));
   asy::Future<core::String*>* results4 = results.{asy::Future::then}<core::String*>((core::List<core::int*>* list) → core::String* => list.{core::Iterable::fold}<core::String*>("", (core::String* x, core::int* y) → core::String* => x.{core::String::+}(y.{core::int::toString}())));
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/generic_methods_iterable_and_future.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/generic_methods_iterable_and_future.dart.strong.transformed.expect
index 66a26bf..cdd5f42 100644
--- a/pkg/front_end/testcases/inference/generic_methods_iterable_and_future.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/generic_methods_iterable_and_future.dart.strong.transformed.expect
@@ -32,7 +32,7 @@
   asy::Future<core::String*>* results3 = results.{asy::Future::then}<core::String*>((core::List<core::int*>* list) → asy::FutureOr<core::String*>* => list.{core::Iterable::fold}<asy::FutureOr<core::String*>*>("", let final<BottomType> #t1 = invalid-expression "pkg/front_end/testcases/inference/generic_methods_iterable_and_future.dart:31:111: Error: The argument type 'String Function(String, int)' can't be assigned to the parameter type 'FutureOr<String> Function(FutureOr<String>, int)'.
  - 'FutureOr' is from 'dart:async'.
                   /*info:INFERRED_TYPE_CLOSURE,error:ARGUMENT_TYPE_NOT_ASSIGNABLE*/ /*@ returnType=String* */ (String
-                                                                                                              ^" in ((core::String* x, core::int* y) → core::String* => x.{core::String::+}(y.{core::int::toString}())) as{TypeError} (asy::FutureOr<core::String*>*, core::int*) →* asy::FutureOr<core::String*>*));
+                                                                                                              ^" in ((core::String* x, core::int* y) → core::String* => x.{core::String::+}(y.{core::int::toString}())) as{TypeError} (asy::FutureOr<core::String*>*, core::int*) → asy::FutureOr<core::String*>*));
   asy::Future<core::String*>* results4 = results.{asy::Future::then}<core::String*>((core::List<core::int*>* list) → core::String* => list.{core::Iterable::fold}<core::String*>("", (core::String* x, core::int* y) → core::String* => x.{core::String::+}(y.{core::int::toString}())));
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/generic_methods_nested_generic_instantiation.dart.outline.expect b/pkg/front_end/testcases/inference/generic_methods_nested_generic_instantiation.dart.outline.expect
index 41b11c5..80f626f 100644
--- a/pkg/front_end/testcases/inference/generic_methods_nested_generic_instantiation.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/generic_methods_nested_generic_instantiation.dart.outline.expect
@@ -8,11 +8,31 @@
   field core::List<self::Frame*>* frames;
   synthetic constructor •() → self::Trace*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Frame extends core::Object {
   field core::String* location;
   synthetic constructor •() → self::Frame*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/inference/generic_methods_nested_generic_instantiation.dart.strong.expect b/pkg/front_end/testcases/inference/generic_methods_nested_generic_instantiation.dart.strong.expect
index 8490078..cfa9e19 100644
--- a/pkg/front_end/testcases/inference/generic_methods_nested_generic_instantiation.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/generic_methods_nested_generic_instantiation.dart.strong.expect
@@ -9,12 +9,32 @@
   synthetic constructor •() → self::Trace*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Frame extends core::Object {
   field core::String* location = "";
   synthetic constructor •() → self::Frame*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   core::List<self::Trace*>* traces = <self::Trace*>[];
diff --git a/pkg/front_end/testcases/inference/generic_methods_nested_generic_instantiation.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/generic_methods_nested_generic_instantiation.dart.strong.transformed.expect
index 8490078..cfa9e19 100644
--- a/pkg/front_end/testcases/inference/generic_methods_nested_generic_instantiation.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/generic_methods_nested_generic_instantiation.dart.strong.transformed.expect
@@ -9,12 +9,32 @@
   synthetic constructor •() → self::Trace*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Frame extends core::Object {
   field core::String* location = "";
   synthetic constructor •() → self::Frame*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   core::List<self::Trace*>* traces = <self::Trace*>[];
diff --git a/pkg/front_end/testcases/inference/greatest_closure_multiple_params.dart.outline.expect b/pkg/front_end/testcases/inference/greatest_closure_multiple_params.dart.outline.expect
index 95e9a4e..269238b 100644
--- a/pkg/front_end/testcases/inference/greatest_closure_multiple_params.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/greatest_closure_multiple_params.dart.outline.expect
@@ -11,6 +11,16 @@
     ;
   static method sort2<E extends core::Object* = dynamic>(self::C<self::C::sort2::E*>* a, (self::C::sort2::E*, self::C::sort2::E*) →* core::int* compare) → void
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/inference/greatest_closure_multiple_params.dart.strong.expect b/pkg/front_end/testcases/inference/greatest_closure_multiple_params.dart.strong.expect
index c6a9ba8..12a4a7c 100644
--- a/pkg/front_end/testcases/inference/greatest_closure_multiple_params.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/greatest_closure_multiple_params.dart.strong.expect
@@ -15,6 +15,16 @@
   static method sort2<E extends core::Object* = dynamic>(self::C<self::C::sort2::E*>* a, (self::C::sort2::E*, self::C::sort2::E*) →* core::int* compare) → void {
     throw "unimplemented";
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
 
diff --git a/pkg/front_end/testcases/inference/greatest_closure_multiple_params.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/greatest_closure_multiple_params.dart.strong.transformed.expect
index c6a9ba8..12a4a7c 100644
--- a/pkg/front_end/testcases/inference/greatest_closure_multiple_params.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/greatest_closure_multiple_params.dart.strong.transformed.expect
@@ -15,6 +15,16 @@
   static method sort2<E extends core::Object* = dynamic>(self::C<self::C::sort2::E*>* a, (self::C::sort2::E*, self::C::sort2::E*) →* core::int* compare) → void {
     throw "unimplemented";
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
 
diff --git a/pkg/front_end/testcases/inference/inconsistent_overrides.dart.outline.expect b/pkg/front_end/testcases/inference/inconsistent_overrides.dart.outline.expect
index eaaeebe..6bd4a4c 100644
--- a/pkg/front_end/testcases/inference/inconsistent_overrides.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/inconsistent_overrides.dart.outline.expect
@@ -80,6 +80,16 @@
     ;
   method h(self::A* x, {self::A* y}) → self::A*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A implements self::I {
   synthetic constructor •() → self::B*
@@ -100,6 +110,16 @@
     ;
   method h(self::A* x, {self::I* y}) → self::A*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/inference/inconsistent_overrides.dart.strong.expect b/pkg/front_end/testcases/inference/inconsistent_overrides.dart.strong.expect
index 76b9569..ae99f7d 100644
--- a/pkg/front_end/testcases/inference/inconsistent_overrides.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/inconsistent_overrides.dart.strong.expect
@@ -78,6 +78,16 @@
   method f(self::A* x, {self::A* y = #C1}) → self::A* {}
   method g(self::A* x, {self::A* y = #C1}) → self::A* {}
   method h(self::A* x, {self::A* y = #C1}) → self::A* {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A implements self::I {
   synthetic constructor •() → self::B*
@@ -94,6 +104,16 @@
   method f(self::I* x, {self::I* y = #C1}) → self::I* {}
   method g(self::I* x, {self::I* y = #C1}) → self::A* {}
   method h(self::A* x, {self::I* y = #C1}) → self::A* {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
 
diff --git a/pkg/front_end/testcases/inference/inconsistent_overrides.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/inconsistent_overrides.dart.strong.transformed.expect
index 76b9569..ae99f7d 100644
--- a/pkg/front_end/testcases/inference/inconsistent_overrides.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/inconsistent_overrides.dart.strong.transformed.expect
@@ -78,6 +78,16 @@
   method f(self::A* x, {self::A* y = #C1}) → self::A* {}
   method g(self::A* x, {self::A* y = #C1}) → self::A* {}
   method h(self::A* x, {self::A* y = #C1}) → self::A* {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A implements self::I {
   synthetic constructor •() → self::B*
@@ -94,6 +104,16 @@
   method f(self::I* x, {self::I* y = #C1}) → self::I* {}
   method g(self::I* x, {self::I* y = #C1}) → self::A* {}
   method h(self::A* x, {self::I* y = #C1}) → self::A* {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
 
diff --git a/pkg/front_end/testcases/inference/index_assign_operator_return_type.dart.outline.expect b/pkg/front_end/testcases/inference/index_assign_operator_return_type.dart.outline.expect
index 8824dd4..ac4c85d 100644
--- a/pkg/front_end/testcases/inference/index_assign_operator_return_type.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/index_assign_operator_return_type.dart.outline.expect
@@ -7,12 +7,32 @@
     ;
   operator []=(dynamic index, dynamic value) → dynamic
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class I extends core::Object {
   synthetic constructor •() → self::I*
     ;
   operator []=(dynamic index, dynamic value) → void
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D extends self::C implements self::I {
   synthetic constructor •() → self::D*
diff --git a/pkg/front_end/testcases/inference/index_assign_operator_return_type.dart.strong.expect b/pkg/front_end/testcases/inference/index_assign_operator_return_type.dart.strong.expect
index d3d5c81..4092839 100644
--- a/pkg/front_end/testcases/inference/index_assign_operator_return_type.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/index_assign_operator_return_type.dart.strong.expect
@@ -7,12 +7,32 @@
     : super core::Object::•()
     ;
   operator []=(dynamic index, dynamic value) → dynamic {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class I extends core::Object {
   synthetic constructor •() → self::I*
     : super core::Object::•()
     ;
   operator []=(dynamic index, dynamic value) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D extends self::C implements self::I {
   synthetic constructor •() → self::D*
diff --git a/pkg/front_end/testcases/inference/index_assign_operator_return_type.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/index_assign_operator_return_type.dart.strong.transformed.expect
index d3d5c81..4092839 100644
--- a/pkg/front_end/testcases/inference/index_assign_operator_return_type.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/index_assign_operator_return_type.dart.strong.transformed.expect
@@ -7,12 +7,32 @@
     : super core::Object::•()
     ;
   operator []=(dynamic index, dynamic value) → dynamic {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class I extends core::Object {
   synthetic constructor •() → self::I*
     : super core::Object::•()
     ;
   operator []=(dynamic index, dynamic value) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D extends self::C implements self::I {
   synthetic constructor •() → self::D*
diff --git a/pkg/front_end/testcases/inference/index_assign_operator_return_type_2.dart.outline.expect b/pkg/front_end/testcases/inference/index_assign_operator_return_type_2.dart.outline.expect
index ae3281e..931d662 100644
--- a/pkg/front_end/testcases/inference/index_assign_operator_return_type_2.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/index_assign_operator_return_type_2.dart.outline.expect
@@ -7,12 +7,32 @@
     ;
   operator []=(core::int* index, dynamic value) → dynamic
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class I extends core::Object {
   synthetic constructor •() → self::I*
     ;
   operator []=(core::int* index, dynamic value) → void
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D extends self::C implements self::I {
   synthetic constructor •() → self::D*
diff --git a/pkg/front_end/testcases/inference/index_assign_operator_return_type_2.dart.strong.expect b/pkg/front_end/testcases/inference/index_assign_operator_return_type_2.dart.strong.expect
index ccbc46f..989300b 100644
--- a/pkg/front_end/testcases/inference/index_assign_operator_return_type_2.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/index_assign_operator_return_type_2.dart.strong.expect
@@ -7,12 +7,32 @@
     : super core::Object::•()
     ;
   operator []=(core::int* index, dynamic value) → dynamic {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class I extends core::Object {
   synthetic constructor •() → self::I*
     : super core::Object::•()
     ;
   operator []=(core::int* index, dynamic value) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D extends self::C implements self::I {
   synthetic constructor •() → self::D*
diff --git a/pkg/front_end/testcases/inference/index_assign_operator_return_type_2.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/index_assign_operator_return_type_2.dart.strong.transformed.expect
index ccbc46f..989300b 100644
--- a/pkg/front_end/testcases/inference/index_assign_operator_return_type_2.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/index_assign_operator_return_type_2.dart.strong.transformed.expect
@@ -7,12 +7,32 @@
     : super core::Object::•()
     ;
   operator []=(core::int* index, dynamic value) → dynamic {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class I extends core::Object {
   synthetic constructor •() → self::I*
     : super core::Object::•()
     ;
   operator []=(core::int* index, dynamic value) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D extends self::C implements self::I {
   synthetic constructor •() → self::D*
diff --git a/pkg/front_end/testcases/inference/infer_accessor_from_later_inferred_field.dart.outline.expect b/pkg/front_end/testcases/inference/infer_accessor_from_later_inferred_field.dart.outline.expect
index 1374798..e161f42 100644
--- a/pkg/front_end/testcases/inference/infer_accessor_from_later_inferred_field.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/infer_accessor_from_later_inferred_field.dart.outline.expect
@@ -9,11 +9,31 @@
     ;
   set x(core::int* value) → void
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends core::Object {
   field core::int* x;
   synthetic constructor •() → self::B*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method f() → dynamic
   ;
diff --git a/pkg/front_end/testcases/inference/infer_accessor_from_later_inferred_field.dart.strong.expect b/pkg/front_end/testcases/inference/infer_accessor_from_later_inferred_field.dart.strong.expect
index e2271dd..138fa7a 100644
--- a/pkg/front_end/testcases/inference/infer_accessor_from_later_inferred_field.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/infer_accessor_from_later_inferred_field.dart.strong.expect
@@ -9,12 +9,32 @@
   get x() → core::int*
     return self::f() as{TypeError,ForDynamic} core::int*;
   set x(core::int* value) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends core::Object {
   field core::int* x = 0;
   synthetic constructor •() → self::B*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method f() → dynamic
   return null;
diff --git a/pkg/front_end/testcases/inference/infer_accessor_from_later_inferred_field.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/infer_accessor_from_later_inferred_field.dart.strong.transformed.expect
index e2271dd..138fa7a 100644
--- a/pkg/front_end/testcases/inference/infer_accessor_from_later_inferred_field.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/infer_accessor_from_later_inferred_field.dart.strong.transformed.expect
@@ -9,12 +9,32 @@
   get x() → core::int*
     return self::f() as{TypeError,ForDynamic} core::int*;
   set x(core::int* value) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends core::Object {
   field core::int* x = 0;
   synthetic constructor •() → self::B*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method f() → dynamic
   return null;
diff --git a/pkg/front_end/testcases/inference/infer_assign_to_implicit_this.dart b/pkg/front_end/testcases/inference/infer_assign_to_implicit_this.dart
index 6b67ab5..b08798f 100644
--- a/pkg/front_end/testcases/inference/infer_assign_to_implicit_this.dart
+++ b/pkg/front_end/testcases/inference/infer_assign_to_implicit_this.dart
@@ -25,7 +25,7 @@
     /*@target=Test::member*/ member = /*@ typeArgs=B* */ f();
 
     /*@target=Test::member*/ /*@target=Test::member*/ member
-        /*@ target=Object::== */ ??= /*@ typeArgs=B* */ f();
+        /*@target=A::==*/ ??= /*@ typeArgs=B* */ f();
 
     /*@target=Test::member*/ /*@target=Test::member*/ member
         /*@ target=B::+ */ += /*@ typeArgs=C* */ f();
@@ -46,7 +46,7 @@
         /*@ typeArgs=B* */ f();
 
     var /*@ type=B* */ v2 = /*@target=Test::member*/ /*@target=Test::member*/
-        member /*@ target=Object::== */ ??= /*@ typeArgs=B* */ f();
+        member /*@target=A::==*/ ??= /*@ typeArgs=B* */ f();
 
     var /*@ type=A* */ v3 = /*@target=Test::member*/ /*@target=Test::member*/
         member /*@ target=B::+ */ +=
diff --git a/pkg/front_end/testcases/inference/infer_assign_to_implicit_this.dart.outline.expect b/pkg/front_end/testcases/inference/infer_assign_to_implicit_this.dart.outline.expect
index d784a67..8d2f037 100644
--- a/pkg/front_end/testcases/inference/infer_assign_to_implicit_this.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/infer_assign_to_implicit_this.dart.outline.expect
@@ -5,6 +5,16 @@
 class A extends core::Object {
   synthetic constructor •() → self::A*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A {
   synthetic constructor •() → self::B*
@@ -28,6 +38,16 @@
     ;
   method test() → void
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method f<T extends core::Object* = dynamic>() → self::f::T*
   ;
diff --git a/pkg/front_end/testcases/inference/infer_assign_to_implicit_this.dart.strong.expect b/pkg/front_end/testcases/inference/infer_assign_to_implicit_this.dart.strong.expect
index 043ccf2..0ef7ce3 100644
--- a/pkg/front_end/testcases/inference/infer_assign_to_implicit_this.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/infer_assign_to_implicit_this.dart.strong.expect
@@ -6,6 +6,16 @@
   synthetic constructor •() → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A {
   synthetic constructor •() → self::B*
@@ -32,20 +42,30 @@
     ;
   method test() → void {
     this.{self::Test::member} = self::f<self::B*>();
-    this.{self::Test::member}.{core::Object::==}(null) ?{self::B*} this.{self::Test::member} = self::f<self::B*>() : null;
+    this.{self::Test::member}.{self::A::==}(null) ?{self::B*} this.{self::Test::member} = self::f<self::B*>() : null;
     this.{self::Test::member} = this.{self::Test::member}.{self::B::+}(self::f<self::C*>()) as{TypeError} self::B*;
     this.{self::Test::member} = this.{self::Test::member}.{self::B::*}(self::f<self::B*>());
     this.{self::Test::member} = this.{self::Test::member}.{self::B::&}(self::f<self::A*>());
     this.{self::Test::member} = this.{self::Test::member}.{self::B::-}(1);
     this.{self::Test::member} = this.{self::Test::member}.{self::B::-}(1);
     self::B* v1 = this.{self::Test::member} = self::f<self::B*>();
-    self::B* v2 = let final self::B* #t1 = this.{self::Test::member} in #t1.{core::Object::==}(null) ?{self::B*} this.{self::Test::member} = self::f<self::B*>() : #t1;
+    self::B* v2 = let final self::B* #t1 = this.{self::Test::member} in #t1.{self::A::==}(null) ?{self::B*} this.{self::Test::member} = self::f<self::B*>() : #t1;
     self::A* v3 = this.{self::Test::member} = this.{self::Test::member}.{self::B::+}(self::f<self::C*>()) as{TypeError} self::B*;
     self::B* v4 = this.{self::Test::member} = this.{self::Test::member}.{self::B::*}(self::f<self::B*>());
     self::C* v5 = this.{self::Test::member} = this.{self::Test::member}.{self::B::&}(self::f<self::A*>());
     self::B* v6 = this.{self::Test::member} = this.{self::Test::member}.{self::B::-}(1);
     self::B* v7 = let final self::B* #t2 = this.{self::Test::member} in let final self::B* #t3 = this.{self::Test::member} = #t2.{self::B::-}(1) in #t2;
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method f<T extends core::Object* = dynamic>() → self::f::T*
   return null;
diff --git a/pkg/front_end/testcases/inference/infer_assign_to_implicit_this.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/infer_assign_to_implicit_this.dart.strong.transformed.expect
index 043ccf2..0ef7ce3 100644
--- a/pkg/front_end/testcases/inference/infer_assign_to_implicit_this.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/infer_assign_to_implicit_this.dart.strong.transformed.expect
@@ -6,6 +6,16 @@
   synthetic constructor •() → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A {
   synthetic constructor •() → self::B*
@@ -32,20 +42,30 @@
     ;
   method test() → void {
     this.{self::Test::member} = self::f<self::B*>();
-    this.{self::Test::member}.{core::Object::==}(null) ?{self::B*} this.{self::Test::member} = self::f<self::B*>() : null;
+    this.{self::Test::member}.{self::A::==}(null) ?{self::B*} this.{self::Test::member} = self::f<self::B*>() : null;
     this.{self::Test::member} = this.{self::Test::member}.{self::B::+}(self::f<self::C*>()) as{TypeError} self::B*;
     this.{self::Test::member} = this.{self::Test::member}.{self::B::*}(self::f<self::B*>());
     this.{self::Test::member} = this.{self::Test::member}.{self::B::&}(self::f<self::A*>());
     this.{self::Test::member} = this.{self::Test::member}.{self::B::-}(1);
     this.{self::Test::member} = this.{self::Test::member}.{self::B::-}(1);
     self::B* v1 = this.{self::Test::member} = self::f<self::B*>();
-    self::B* v2 = let final self::B* #t1 = this.{self::Test::member} in #t1.{core::Object::==}(null) ?{self::B*} this.{self::Test::member} = self::f<self::B*>() : #t1;
+    self::B* v2 = let final self::B* #t1 = this.{self::Test::member} in #t1.{self::A::==}(null) ?{self::B*} this.{self::Test::member} = self::f<self::B*>() : #t1;
     self::A* v3 = this.{self::Test::member} = this.{self::Test::member}.{self::B::+}(self::f<self::C*>()) as{TypeError} self::B*;
     self::B* v4 = this.{self::Test::member} = this.{self::Test::member}.{self::B::*}(self::f<self::B*>());
     self::C* v5 = this.{self::Test::member} = this.{self::Test::member}.{self::B::&}(self::f<self::A*>());
     self::B* v6 = this.{self::Test::member} = this.{self::Test::member}.{self::B::-}(1);
     self::B* v7 = let final self::B* #t2 = this.{self::Test::member} in let final self::B* #t3 = this.{self::Test::member} = #t2.{self::B::-}(1) in #t2;
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method f<T extends core::Object* = dynamic>() → self::f::T*
   return null;
diff --git a/pkg/front_end/testcases/inference/infer_assign_to_implicit_this_upwards.dart.outline.expect b/pkg/front_end/testcases/inference/infer_assign_to_implicit_this_upwards.dart.outline.expect
index 72b8d61..4e327fb 100644
--- a/pkg/front_end/testcases/inference/infer_assign_to_implicit_this_upwards.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/infer_assign_to_implicit_this_upwards.dart.outline.expect
@@ -8,6 +8,16 @@
     ;
   method test() → void
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Test2 extends core::Object {
   field core::num* t;
@@ -15,6 +25,16 @@
     ;
   method test() → void
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Test3 extends core::Object {
   field core::double* t;
@@ -22,6 +42,16 @@
     ;
   method test3() → void
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method getInt() → core::int*
   ;
diff --git a/pkg/front_end/testcases/inference/infer_assign_to_implicit_this_upwards.dart.strong.expect b/pkg/front_end/testcases/inference/infer_assign_to_implicit_this_upwards.dart.strong.expect
index 5f29204..a60ff42 100644
--- a/pkg/front_end/testcases/inference/infer_assign_to_implicit_this_upwards.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/infer_assign_to_implicit_this_upwards.dart.strong.expect
@@ -14,6 +14,16 @@
     core::int* v10 = this.{self::Test1::t} = this.{self::Test1::t}.{core::num::+}(1);
     core::int* v11 = let final core::int* #t2 = this.{self::Test1::t} in let final core::int* #t3 = this.{self::Test1::t} = #t2.{core::num::+}(1) in #t2;
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Test2 extends core::Object {
   field core::num* t = null;
@@ -33,6 +43,16 @@
     core::num* v10 = this.{self::Test2::t} = this.{self::Test2::t}.{core::num::+}(1);
     core::num* v11 = let final core::num* #t7 = this.{self::Test2::t} in let final core::num* #t8 = this.{self::Test2::t} = #t7.{core::num::+}(1) in #t7;
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Test3 extends core::Object {
   field core::double* t = null;
@@ -48,6 +68,16 @@
     core::double* v10 = this.{self::Test3::t} = this.{self::Test3::t}.{core::double::+}(1);
     core::double* v11 = let final core::double* #t10 = this.{self::Test3::t} in let final core::double* #t11 = this.{self::Test3::t} = #t10.{core::double::+}(1) in #t10;
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method getInt() → core::int*
   return 0;
diff --git a/pkg/front_end/testcases/inference/infer_assign_to_implicit_this_upwards.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/infer_assign_to_implicit_this_upwards.dart.strong.transformed.expect
index 5f29204..a60ff42 100644
--- a/pkg/front_end/testcases/inference/infer_assign_to_implicit_this_upwards.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/infer_assign_to_implicit_this_upwards.dart.strong.transformed.expect
@@ -14,6 +14,16 @@
     core::int* v10 = this.{self::Test1::t} = this.{self::Test1::t}.{core::num::+}(1);
     core::int* v11 = let final core::int* #t2 = this.{self::Test1::t} in let final core::int* #t3 = this.{self::Test1::t} = #t2.{core::num::+}(1) in #t2;
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Test2 extends core::Object {
   field core::num* t = null;
@@ -33,6 +43,16 @@
     core::num* v10 = this.{self::Test2::t} = this.{self::Test2::t}.{core::num::+}(1);
     core::num* v11 = let final core::num* #t7 = this.{self::Test2::t} in let final core::num* #t8 = this.{self::Test2::t} = #t7.{core::num::+}(1) in #t7;
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Test3 extends core::Object {
   field core::double* t = null;
@@ -48,6 +68,16 @@
     core::double* v10 = this.{self::Test3::t} = this.{self::Test3::t}.{core::double::+}(1);
     core::double* v11 = let final core::double* #t10 = this.{self::Test3::t} in let final core::double* #t11 = this.{self::Test3::t} = #t10.{core::double::+}(1) in #t10;
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method getInt() → core::int*
   return 0;
diff --git a/pkg/front_end/testcases/inference/infer_assign_to_index_full.dart b/pkg/front_end/testcases/inference/infer_assign_to_index_full.dart
index 5fb409e..8fe0a03 100644
--- a/pkg/front_end/testcases/inference/infer_assign_to_index_full.dart
+++ b/pkg/front_end/testcases/inference/infer_assign_to_index_full.dart
@@ -31,7 +31,7 @@
         /*@ typeArgs=Index* */ f()] = /*@ typeArgs=B* */ f();
 
     t /*@target=Test::[]*/ /*@ target=Test::[]= */ [/*@ typeArgs=Index* */ f()]
-        /*@ target=Object::== */
+        /*@target=A::==*/
         ??= /*@ typeArgs=B* */ f();
 
     t /*@target=Test::[]*/ /*@target=Test::[]=*/ [/*@ typeArgs=Index* */ f()]
@@ -56,7 +56,7 @@
 
     var /*@ type=B* */ v2 = t /*@target=Test::[]*/ /*@ target=Test::[]= */ [
             /*@ typeArgs=Index* */ f()]
-        /*@ target=Object::== */
+        /*@target=A::==*/
         ??= /*@ typeArgs=B* */ f();
 
     var /*@ type=B* */ v4 = t /*@target=Test::[]*/ /*@target=Test::[]=*/ [
diff --git a/pkg/front_end/testcases/inference/infer_assign_to_index_full.dart.outline.expect b/pkg/front_end/testcases/inference/infer_assign_to_index_full.dart.outline.expect
index 9f0fa38..6e27b00 100644
--- a/pkg/front_end/testcases/inference/infer_assign_to_index_full.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/infer_assign_to_index_full.dart.outline.expect
@@ -5,10 +5,30 @@
 class Index extends core::Object {
   synthetic constructor •() → self::Index*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class A extends core::Object {
   synthetic constructor •() → self::A*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A {
   synthetic constructor •() → self::B*
@@ -35,6 +55,16 @@
     ;
   method test() → void
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method f<T extends core::Object* = dynamic>() → self::f::T*
   ;
diff --git a/pkg/front_end/testcases/inference/infer_assign_to_index_full.dart.strong.expect b/pkg/front_end/testcases/inference/infer_assign_to_index_full.dart.strong.expect
index 4711ea5..0ac0710 100644
--- a/pkg/front_end/testcases/inference/infer_assign_to_index_full.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/infer_assign_to_index_full.dart.strong.expect
@@ -6,11 +6,31 @@
   synthetic constructor •() → self::Index*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class A extends core::Object {
   synthetic constructor •() → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A {
   synthetic constructor •() → self::B*
@@ -40,7 +60,7 @@
   method test() → void {
     self::Test* t = self::f<self::Test*>();
     t.{self::Test::[]=}(self::f<self::Index*>(), self::f<self::B*>());
-    let final self::Test* #t1 = t in let final self::Index* #t2 = self::f<self::Index*>() in #t1.{self::Test::[]}(#t2).{core::Object::==}(null) ?{self::B*} #t1.{self::Test::[]=}(#t2, self::f<self::B*>()) : null;
+    let final self::Test* #t1 = t in let final self::Index* #t2 = self::f<self::Index*>() in #t1.{self::Test::[]}(#t2).{self::A::==}(null) ?{self::B*} #t1.{self::Test::[]=}(#t2, self::f<self::B*>()) : null;
     let final self::Test* #t3 = t in let final self::Index* #t4 = self::f<self::Index*>() in #t3.{self::Test::[]=}(#t4, #t3.{self::Test::[]}(#t4).{self::B::+}(self::f<self::C*>()) as{TypeError} self::B*);
     let final self::Test* #t5 = t in let final self::Index* #t6 = self::f<self::Index*>() in #t5.{self::Test::[]=}(#t6, #t5.{self::Test::[]}(#t6).{self::B::*}(self::f<self::B*>()));
     let final self::Test* #t7 = t in let final self::Index* #t8 = self::f<self::Index*>() in #t7.{self::Test::[]=}(#t8, #t7.{self::Test::[]}(#t8).{self::B::&}(self::f<self::A*>()));
@@ -48,13 +68,23 @@
     let final self::Test* #t9 = t in let final self::Index* #t10 = self::f<self::Index*>() in let final self::B* #t11 = #t9.{self::Test::[]}(#t10).{self::B::-}(1) in let final void #t12 = #t9.{self::Test::[]=}(#t10, #t11) in #t11;
     let final self::Test* #t13 = t in let final self::Index* #t14 = self::f<self::Index*>() in #t13.{self::Test::[]=}(#t14, #t13.{self::Test::[]}(#t14).{self::B::-}(1));
     self::B* v1 = let final self::Test* #t15 = t in let final self::Index* #t16 = self::f<self::Index*>() in let final self::B* #t17 = self::f<self::B*>() in let final void #t18 = #t15.{self::Test::[]=}(#t16, #t17) in #t17;
-    self::B* v2 = let final self::Test* #t19 = t in let final self::Index* #t20 = self::f<self::Index*>() in let final self::B* #t21 = #t19.{self::Test::[]}(#t20) in #t21.{core::Object::==}(null) ?{self::B*} let final self::B* #t22 = self::f<self::B*>() in let final void #t23 = #t19.{self::Test::[]=}(#t20, #t22) in #t22 : #t21;
+    self::B* v2 = let final self::Test* #t19 = t in let final self::Index* #t20 = self::f<self::Index*>() in let final self::B* #t21 = #t19.{self::Test::[]}(#t20) in #t21.{self::A::==}(null) ?{self::B*} let final self::B* #t22 = self::f<self::B*>() in let final void #t23 = #t19.{self::Test::[]=}(#t20, #t22) in #t22 : #t21;
     self::B* v4 = let final self::Test* #t24 = t in let final self::Index* #t25 = self::f<self::Index*>() in let final self::B* #t26 = #t24.{self::Test::[]}(#t25).{self::B::*}(self::f<self::B*>()) in let final void #t27 = #t24.{self::Test::[]=}(#t25, #t26) in #t26;
     self::C* v5 = let final self::Test* #t28 = t in let final self::Index* #t29 = self::f<self::Index*>() in let final self::C* #t30 = #t28.{self::Test::[]}(#t29).{self::B::&}(self::f<self::A*>()) in let final void #t31 = #t28.{self::Test::[]=}(#t29, #t30) in #t30;
     self::B* v6 = t.{self::Test::[]}(self::f<self::Index*>());
     self::B* v7 = let final self::Test* #t32 = t in let final self::Index* #t33 = self::f<self::Index*>() in let final self::B* #t34 = #t32.{self::Test::[]}(#t33).{self::B::-}(1) in let final void #t35 = #t32.{self::Test::[]=}(#t33, #t34) in #t34;
     self::B* v8 = let final self::Test* #t36 = t in let final self::Index* #t37 = self::f<self::Index*>() in let final self::B* #t38 = #t36.{self::Test::[]}(#t37) in let final void #t39 = #t36.{self::Test::[]=}(#t37, #t38.{self::B::-}(1)) in #t38;
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method f<T extends core::Object* = dynamic>() → self::f::T*
   return null;
diff --git a/pkg/front_end/testcases/inference/infer_assign_to_index_full.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/infer_assign_to_index_full.dart.strong.transformed.expect
index 4711ea5..0ac0710 100644
--- a/pkg/front_end/testcases/inference/infer_assign_to_index_full.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/infer_assign_to_index_full.dart.strong.transformed.expect
@@ -6,11 +6,31 @@
   synthetic constructor •() → self::Index*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class A extends core::Object {
   synthetic constructor •() → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A {
   synthetic constructor •() → self::B*
@@ -40,7 +60,7 @@
   method test() → void {
     self::Test* t = self::f<self::Test*>();
     t.{self::Test::[]=}(self::f<self::Index*>(), self::f<self::B*>());
-    let final self::Test* #t1 = t in let final self::Index* #t2 = self::f<self::Index*>() in #t1.{self::Test::[]}(#t2).{core::Object::==}(null) ?{self::B*} #t1.{self::Test::[]=}(#t2, self::f<self::B*>()) : null;
+    let final self::Test* #t1 = t in let final self::Index* #t2 = self::f<self::Index*>() in #t1.{self::Test::[]}(#t2).{self::A::==}(null) ?{self::B*} #t1.{self::Test::[]=}(#t2, self::f<self::B*>()) : null;
     let final self::Test* #t3 = t in let final self::Index* #t4 = self::f<self::Index*>() in #t3.{self::Test::[]=}(#t4, #t3.{self::Test::[]}(#t4).{self::B::+}(self::f<self::C*>()) as{TypeError} self::B*);
     let final self::Test* #t5 = t in let final self::Index* #t6 = self::f<self::Index*>() in #t5.{self::Test::[]=}(#t6, #t5.{self::Test::[]}(#t6).{self::B::*}(self::f<self::B*>()));
     let final self::Test* #t7 = t in let final self::Index* #t8 = self::f<self::Index*>() in #t7.{self::Test::[]=}(#t8, #t7.{self::Test::[]}(#t8).{self::B::&}(self::f<self::A*>()));
@@ -48,13 +68,23 @@
     let final self::Test* #t9 = t in let final self::Index* #t10 = self::f<self::Index*>() in let final self::B* #t11 = #t9.{self::Test::[]}(#t10).{self::B::-}(1) in let final void #t12 = #t9.{self::Test::[]=}(#t10, #t11) in #t11;
     let final self::Test* #t13 = t in let final self::Index* #t14 = self::f<self::Index*>() in #t13.{self::Test::[]=}(#t14, #t13.{self::Test::[]}(#t14).{self::B::-}(1));
     self::B* v1 = let final self::Test* #t15 = t in let final self::Index* #t16 = self::f<self::Index*>() in let final self::B* #t17 = self::f<self::B*>() in let final void #t18 = #t15.{self::Test::[]=}(#t16, #t17) in #t17;
-    self::B* v2 = let final self::Test* #t19 = t in let final self::Index* #t20 = self::f<self::Index*>() in let final self::B* #t21 = #t19.{self::Test::[]}(#t20) in #t21.{core::Object::==}(null) ?{self::B*} let final self::B* #t22 = self::f<self::B*>() in let final void #t23 = #t19.{self::Test::[]=}(#t20, #t22) in #t22 : #t21;
+    self::B* v2 = let final self::Test* #t19 = t in let final self::Index* #t20 = self::f<self::Index*>() in let final self::B* #t21 = #t19.{self::Test::[]}(#t20) in #t21.{self::A::==}(null) ?{self::B*} let final self::B* #t22 = self::f<self::B*>() in let final void #t23 = #t19.{self::Test::[]=}(#t20, #t22) in #t22 : #t21;
     self::B* v4 = let final self::Test* #t24 = t in let final self::Index* #t25 = self::f<self::Index*>() in let final self::B* #t26 = #t24.{self::Test::[]}(#t25).{self::B::*}(self::f<self::B*>()) in let final void #t27 = #t24.{self::Test::[]=}(#t25, #t26) in #t26;
     self::C* v5 = let final self::Test* #t28 = t in let final self::Index* #t29 = self::f<self::Index*>() in let final self::C* #t30 = #t28.{self::Test::[]}(#t29).{self::B::&}(self::f<self::A*>()) in let final void #t31 = #t28.{self::Test::[]=}(#t29, #t30) in #t30;
     self::B* v6 = t.{self::Test::[]}(self::f<self::Index*>());
     self::B* v7 = let final self::Test* #t32 = t in let final self::Index* #t33 = self::f<self::Index*>() in let final self::B* #t34 = #t32.{self::Test::[]}(#t33).{self::B::-}(1) in let final void #t35 = #t32.{self::Test::[]=}(#t33, #t34) in #t34;
     self::B* v8 = let final self::Test* #t36 = t in let final self::Index* #t37 = self::f<self::Index*>() in let final self::B* #t38 = #t36.{self::Test::[]}(#t37) in let final void #t39 = #t36.{self::Test::[]=}(#t37, #t38.{self::B::-}(1)) in #t38;
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method f<T extends core::Object* = dynamic>() → self::f::T*
   return null;
diff --git a/pkg/front_end/testcases/inference/infer_assign_to_index_super.dart b/pkg/front_end/testcases/inference/infer_assign_to_index_super.dart
index 838656d..c7ed576 100644
--- a/pkg/front_end/testcases/inference/infer_assign_to_index_super.dart
+++ b/pkg/front_end/testcases/inference/infer_assign_to_index_super.dart
@@ -31,7 +31,7 @@
         /*@ typeArgs=Index* */ f()] = /*@ typeArgs=B* */ f();
 
     super /*@target=Base::[]*/ /*@target=Base::[]=*/ [
-            /*@ typeArgs=Index* */ f()] /*@ target=Object::== */
+            /*@ typeArgs=Index* */ f()] /*@target=A::==*/
         ??= /*@ typeArgs=B* */ f();
 
     super /*@target=Base::[]*/ /*@target=Base::[]=*/ [
@@ -56,7 +56,7 @@
         /*@ typeArgs=Index* */ f()] = /*@ typeArgs=B* */ f();
 
     var /*@ type=B* */ v2 = super /*@target=Base::[]*/ /*@target=Base::[]=*/ [
-            /*@ typeArgs=Index* */ f()] /*@ target=Object::== */
+            /*@ typeArgs=Index* */ f()] /*@target=A::==*/
         ??= /*@ typeArgs=B* */ f();
 
     var /*@ type=A* */ v3 = super /*@target=Base::[]*/ /*@target=Base::[]=*/ [
diff --git a/pkg/front_end/testcases/inference/infer_assign_to_index_super.dart.outline.expect b/pkg/front_end/testcases/inference/infer_assign_to_index_super.dart.outline.expect
index 918047c..3f81fb6 100644
--- a/pkg/front_end/testcases/inference/infer_assign_to_index_super.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/infer_assign_to_index_super.dart.outline.expect
@@ -5,10 +5,30 @@
 class Index extends core::Object {
   synthetic constructor •() → self::Index*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class A extends core::Object {
   synthetic constructor •() → self::A*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A {
   synthetic constructor •() → self::B*
@@ -33,6 +53,16 @@
     ;
   operator []=(self::Index* i, self::B* v) → void
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Test extends self::Base {
   synthetic constructor •() → self::Test*
diff --git a/pkg/front_end/testcases/inference/infer_assign_to_index_super.dart.strong.expect b/pkg/front_end/testcases/inference/infer_assign_to_index_super.dart.strong.expect
index 6386cbd..44a9e2f 100644
--- a/pkg/front_end/testcases/inference/infer_assign_to_index_super.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/infer_assign_to_index_super.dart.strong.expect
@@ -6,11 +6,31 @@
   synthetic constructor •() → self::Index*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class A extends core::Object {
   synthetic constructor •() → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A {
   synthetic constructor •() → self::B*
@@ -37,6 +57,16 @@
   operator [](self::Index* i) → self::B*
     return null;
   operator []=(self::Index* i, self::B* v) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Test extends self::Base {
   synthetic constructor •() → self::Test*
@@ -44,14 +74,14 @@
     ;
   method test() → void {
     super.{self::Base::[]=}(self::f<self::Index*>(), self::f<self::B*>());
-    let final self::Index* #t1 = self::f<self::Index*>() in super.{self::Base::[]}(#t1).{core::Object::==}(null) ?{self::B*} super.{self::Base::[]=}(#t1, self::f<self::B*>()) : null;
+    let final self::Index* #t1 = self::f<self::Index*>() in super.{self::Base::[]}(#t1).{self::A::==}(null) ?{self::B*} super.{self::Base::[]=}(#t1, self::f<self::B*>()) : null;
     let final self::Index* #t2 = self::f<self::Index*>() in super.{self::Base::[]=}(#t2, super.{self::Base::[]}(#t2).{self::B::+}(self::f<self::C*>()) as{TypeError} self::B*);
     let final self::Index* #t3 = self::f<self::Index*>() in super.{self::Base::[]=}(#t3, super.{self::Base::[]}(#t3).{self::B::*}(self::f<self::B*>()));
     let final self::Index* #t4 = self::f<self::Index*>() in super.{self::Base::[]=}(#t4, super.{self::Base::[]}(#t4).{self::B::&}(self::f<self::A*>()));
     let final self::Index* #t5 = self::f<self::Index*>() in let final self::B* #t6 = super.{self::Base::[]}(#t5).{self::B::-}(1) in let final void #t7 = super.{self::Base::[]=}(#t5, #t6) in #t6;
     let final self::Index* #t8 = self::f<self::Index*>() in super.{self::Base::[]=}(#t8, super.{self::Base::[]}(#t8).{self::B::-}(1));
     self::B* v1 = let final self::Index* #t9 = self::f<self::Index*>() in let final self::B* #t10 = self::f<self::B*>() in let final void #t11 = super.{self::Base::[]=}(#t9, #t10) in #t10;
-    self::B* v2 = let final self::Index* #t12 = self::f<self::Index*>() in let final self::B* #t13 = super.{self::Base::[]}(#t12) in #t13.{core::Object::==}(null) ?{self::B*} let final self::B* #t14 = self::f<self::B*>() in let final void #t15 = super.{self::Base::[]=}(#t12, #t14) in #t14 : #t13;
+    self::B* v2 = let final self::Index* #t12 = self::f<self::Index*>() in let final self::B* #t13 = super.{self::Base::[]}(#t12) in #t13.{self::A::==}(null) ?{self::B*} let final self::B* #t14 = self::f<self::B*>() in let final void #t15 = super.{self::Base::[]=}(#t12, #t14) in #t14 : #t13;
     self::A* v3 = let final self::Index* #t16 = self::f<self::Index*>() in let final self::A* #t17 = super.{self::Base::[]}(#t16).{self::B::+}(self::f<self::C*>()) as{TypeError} self::B* in let final void #t18 = super.{self::Base::[]=}(#t16, #t17) in #t17;
     self::B* v4 = let final self::Index* #t19 = self::f<self::Index*>() in let final self::B* #t20 = super.{self::Base::[]}(#t19).{self::B::*}(self::f<self::B*>()) in let final void #t21 = super.{self::Base::[]=}(#t19, #t20) in #t20;
     self::C* v5 = let final self::Index* #t22 = self::f<self::Index*>() in let final self::C* #t23 = super.{self::Base::[]}(#t22).{self::B::&}(self::f<self::A*>()) in let final void #t24 = super.{self::Base::[]=}(#t22, #t23) in #t23;
diff --git a/pkg/front_end/testcases/inference/infer_assign_to_index_super.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/infer_assign_to_index_super.dart.strong.transformed.expect
index 6386cbd..44a9e2f 100644
--- a/pkg/front_end/testcases/inference/infer_assign_to_index_super.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/infer_assign_to_index_super.dart.strong.transformed.expect
@@ -6,11 +6,31 @@
   synthetic constructor •() → self::Index*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class A extends core::Object {
   synthetic constructor •() → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A {
   synthetic constructor •() → self::B*
@@ -37,6 +57,16 @@
   operator [](self::Index* i) → self::B*
     return null;
   operator []=(self::Index* i, self::B* v) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Test extends self::Base {
   synthetic constructor •() → self::Test*
@@ -44,14 +74,14 @@
     ;
   method test() → void {
     super.{self::Base::[]=}(self::f<self::Index*>(), self::f<self::B*>());
-    let final self::Index* #t1 = self::f<self::Index*>() in super.{self::Base::[]}(#t1).{core::Object::==}(null) ?{self::B*} super.{self::Base::[]=}(#t1, self::f<self::B*>()) : null;
+    let final self::Index* #t1 = self::f<self::Index*>() in super.{self::Base::[]}(#t1).{self::A::==}(null) ?{self::B*} super.{self::Base::[]=}(#t1, self::f<self::B*>()) : null;
     let final self::Index* #t2 = self::f<self::Index*>() in super.{self::Base::[]=}(#t2, super.{self::Base::[]}(#t2).{self::B::+}(self::f<self::C*>()) as{TypeError} self::B*);
     let final self::Index* #t3 = self::f<self::Index*>() in super.{self::Base::[]=}(#t3, super.{self::Base::[]}(#t3).{self::B::*}(self::f<self::B*>()));
     let final self::Index* #t4 = self::f<self::Index*>() in super.{self::Base::[]=}(#t4, super.{self::Base::[]}(#t4).{self::B::&}(self::f<self::A*>()));
     let final self::Index* #t5 = self::f<self::Index*>() in let final self::B* #t6 = super.{self::Base::[]}(#t5).{self::B::-}(1) in let final void #t7 = super.{self::Base::[]=}(#t5, #t6) in #t6;
     let final self::Index* #t8 = self::f<self::Index*>() in super.{self::Base::[]=}(#t8, super.{self::Base::[]}(#t8).{self::B::-}(1));
     self::B* v1 = let final self::Index* #t9 = self::f<self::Index*>() in let final self::B* #t10 = self::f<self::B*>() in let final void #t11 = super.{self::Base::[]=}(#t9, #t10) in #t10;
-    self::B* v2 = let final self::Index* #t12 = self::f<self::Index*>() in let final self::B* #t13 = super.{self::Base::[]}(#t12) in #t13.{core::Object::==}(null) ?{self::B*} let final self::B* #t14 = self::f<self::B*>() in let final void #t15 = super.{self::Base::[]=}(#t12, #t14) in #t14 : #t13;
+    self::B* v2 = let final self::Index* #t12 = self::f<self::Index*>() in let final self::B* #t13 = super.{self::Base::[]}(#t12) in #t13.{self::A::==}(null) ?{self::B*} let final self::B* #t14 = self::f<self::B*>() in let final void #t15 = super.{self::Base::[]=}(#t12, #t14) in #t14 : #t13;
     self::A* v3 = let final self::Index* #t16 = self::f<self::Index*>() in let final self::A* #t17 = super.{self::Base::[]}(#t16).{self::B::+}(self::f<self::C*>()) as{TypeError} self::B* in let final void #t18 = super.{self::Base::[]=}(#t16, #t17) in #t17;
     self::B* v4 = let final self::Index* #t19 = self::f<self::Index*>() in let final self::B* #t20 = super.{self::Base::[]}(#t19).{self::B::*}(self::f<self::B*>()) in let final void #t21 = super.{self::Base::[]=}(#t19, #t20) in #t20;
     self::C* v5 = let final self::Index* #t22 = self::f<self::Index*>() in let final self::C* #t23 = super.{self::Base::[]}(#t22).{self::B::&}(self::f<self::A*>()) in let final void #t24 = super.{self::Base::[]=}(#t22, #t23) in #t23;
diff --git a/pkg/front_end/testcases/inference/infer_assign_to_index_this.dart b/pkg/front_end/testcases/inference/infer_assign_to_index_this.dart
index b2919a1..b69e68e 100644
--- a/pkg/front_end/testcases/inference/infer_assign_to_index_this.dart
+++ b/pkg/front_end/testcases/inference/infer_assign_to_index_this.dart
@@ -29,7 +29,7 @@
         /*@ typeArgs=Index* */ f()] = /*@ typeArgs=B* */ f();
 
     this /*@target=Test::[]*/ /*@target=Test::[]=*/ [
-            /*@ typeArgs=Index* */ f()] /*@ target=Object::== */
+            /*@ typeArgs=Index* */ f()] /*@target=A::==*/
         ??= /*@ typeArgs=B* */ f();
 
     this /*@target=Test::[]*/ /*@target=Test::[]=*/ [
@@ -54,7 +54,7 @@
         /*@ typeArgs=Index* */ f()] = /*@ typeArgs=B* */ f();
 
     var /*@ type=B* */ v2 = this /*@target=Test::[]*/ /*@target=Test::[]=*/ [
-            /*@ typeArgs=Index* */ f()] /*@ target=Object::== */
+            /*@ typeArgs=Index* */ f()] /*@target=A::==*/
         ??= /*@ typeArgs=B* */ f();
 
     var /*@ type=A* */ v4 = this /*@target=Test::[]*/ /*@target=Test::[]=*/ [
diff --git a/pkg/front_end/testcases/inference/infer_assign_to_index_this.dart.outline.expect b/pkg/front_end/testcases/inference/infer_assign_to_index_this.dart.outline.expect
index 9f0fa38..6e27b00 100644
--- a/pkg/front_end/testcases/inference/infer_assign_to_index_this.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/infer_assign_to_index_this.dart.outline.expect
@@ -5,10 +5,30 @@
 class Index extends core::Object {
   synthetic constructor •() → self::Index*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class A extends core::Object {
   synthetic constructor •() → self::A*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A {
   synthetic constructor •() → self::B*
@@ -35,6 +55,16 @@
     ;
   method test() → void
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method f<T extends core::Object* = dynamic>() → self::f::T*
   ;
diff --git a/pkg/front_end/testcases/inference/infer_assign_to_index_this.dart.strong.expect b/pkg/front_end/testcases/inference/infer_assign_to_index_this.dart.strong.expect
index 3f482e4..820e2c3 100644
--- a/pkg/front_end/testcases/inference/infer_assign_to_index_this.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/infer_assign_to_index_this.dart.strong.expect
@@ -6,11 +6,31 @@
   synthetic constructor •() → self::Index*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class A extends core::Object {
   synthetic constructor •() → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A {
   synthetic constructor •() → self::B*
@@ -39,20 +59,30 @@
   operator []=(self::Index* i, self::B* v) → void {}
   method test() → void {
     this.{self::Test::[]=}(self::f<self::Index*>(), self::f<self::B*>());
-    let final self::Index* #t1 = self::f<self::Index*>() in this.{self::Test::[]}(#t1).{core::Object::==}(null) ?{self::B*} this.{self::Test::[]=}(#t1, self::f<self::B*>()) : null;
+    let final self::Index* #t1 = self::f<self::Index*>() in this.{self::Test::[]}(#t1).{self::A::==}(null) ?{self::B*} this.{self::Test::[]=}(#t1, self::f<self::B*>()) : null;
     let final self::Index* #t2 = self::f<self::Index*>() in this.{self::Test::[]=}(#t2, this.{self::Test::[]}(#t2).{self::B::+}(self::f<self::C*>()) as{TypeError} self::B*);
     let final self::Index* #t3 = self::f<self::Index*>() in this.{self::Test::[]=}(#t3, this.{self::Test::[]}(#t3).{self::B::*}(self::f<self::B*>()));
     let final self::Index* #t4 = self::f<self::Index*>() in this.{self::Test::[]=}(#t4, this.{self::Test::[]}(#t4).{self::B::&}(self::f<self::A*>()));
     let final self::Index* #t5 = self::f<self::Index*>() in let final self::B* #t6 = this.{self::Test::[]}(#t5).{self::B::-}(1) in let final void #t7 = this.{self::Test::[]=}(#t5, #t6) in #t6;
     let final self::Index* #t8 = self::f<self::Index*>() in this.{self::Test::[]=}(#t8, this.{self::Test::[]}(#t8).{self::B::-}(1));
     self::B* v1 = let final self::Index* #t9 = self::f<self::Index*>() in let final self::B* #t10 = self::f<self::B*>() in let final void #t11 = this.{self::Test::[]=}(#t9, #t10) in #t10;
-    self::B* v2 = let final self::Index* #t12 = self::f<self::Index*>() in let final self::B* #t13 = this.{self::Test::[]}(#t12) in #t13.{core::Object::==}(null) ?{self::B*} let final self::B* #t14 = self::f<self::B*>() in let final void #t15 = this.{self::Test::[]=}(#t12, #t14) in #t14 : #t13;
+    self::B* v2 = let final self::Index* #t12 = self::f<self::Index*>() in let final self::B* #t13 = this.{self::Test::[]}(#t12) in #t13.{self::A::==}(null) ?{self::B*} let final self::B* #t14 = self::f<self::B*>() in let final void #t15 = this.{self::Test::[]=}(#t12, #t14) in #t14 : #t13;
     self::A* v4 = let final self::Index* #t16 = self::f<self::Index*>() in let final self::A* #t17 = this.{self::Test::[]}(#t16).{self::B::+}(self::f<self::C*>()) as{TypeError} self::B* in let final void #t18 = this.{self::Test::[]=}(#t16, #t17) in #t17;
     self::B* v3 = let final self::Index* #t19 = self::f<self::Index*>() in let final self::B* #t20 = this.{self::Test::[]}(#t19).{self::B::*}(self::f<self::B*>()) in let final void #t21 = this.{self::Test::[]=}(#t19, #t20) in #t20;
     self::C* v5 = let final self::Index* #t22 = self::f<self::Index*>() in let final self::C* #t23 = this.{self::Test::[]}(#t22).{self::B::&}(self::f<self::A*>()) in let final void #t24 = this.{self::Test::[]=}(#t22, #t23) in #t23;
     self::B* v6 = let final self::Index* #t25 = self::f<self::Index*>() in let final self::B* #t26 = this.{self::Test::[]}(#t25).{self::B::-}(1) in let final void #t27 = this.{self::Test::[]=}(#t25, #t26) in #t26;
     self::B* v7 = let final self::Index* #t28 = self::f<self::Index*>() in let final self::B* #t29 = this.{self::Test::[]}(#t28) in let final void #t30 = this.{self::Test::[]=}(#t28, #t29.{self::B::-}(1)) in #t29;
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method f<T extends core::Object* = dynamic>() → self::f::T*
   return null;
diff --git a/pkg/front_end/testcases/inference/infer_assign_to_index_this.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/infer_assign_to_index_this.dart.strong.transformed.expect
index 3f482e4..820e2c3 100644
--- a/pkg/front_end/testcases/inference/infer_assign_to_index_this.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/infer_assign_to_index_this.dart.strong.transformed.expect
@@ -6,11 +6,31 @@
   synthetic constructor •() → self::Index*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class A extends core::Object {
   synthetic constructor •() → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A {
   synthetic constructor •() → self::B*
@@ -39,20 +59,30 @@
   operator []=(self::Index* i, self::B* v) → void {}
   method test() → void {
     this.{self::Test::[]=}(self::f<self::Index*>(), self::f<self::B*>());
-    let final self::Index* #t1 = self::f<self::Index*>() in this.{self::Test::[]}(#t1).{core::Object::==}(null) ?{self::B*} this.{self::Test::[]=}(#t1, self::f<self::B*>()) : null;
+    let final self::Index* #t1 = self::f<self::Index*>() in this.{self::Test::[]}(#t1).{self::A::==}(null) ?{self::B*} this.{self::Test::[]=}(#t1, self::f<self::B*>()) : null;
     let final self::Index* #t2 = self::f<self::Index*>() in this.{self::Test::[]=}(#t2, this.{self::Test::[]}(#t2).{self::B::+}(self::f<self::C*>()) as{TypeError} self::B*);
     let final self::Index* #t3 = self::f<self::Index*>() in this.{self::Test::[]=}(#t3, this.{self::Test::[]}(#t3).{self::B::*}(self::f<self::B*>()));
     let final self::Index* #t4 = self::f<self::Index*>() in this.{self::Test::[]=}(#t4, this.{self::Test::[]}(#t4).{self::B::&}(self::f<self::A*>()));
     let final self::Index* #t5 = self::f<self::Index*>() in let final self::B* #t6 = this.{self::Test::[]}(#t5).{self::B::-}(1) in let final void #t7 = this.{self::Test::[]=}(#t5, #t6) in #t6;
     let final self::Index* #t8 = self::f<self::Index*>() in this.{self::Test::[]=}(#t8, this.{self::Test::[]}(#t8).{self::B::-}(1));
     self::B* v1 = let final self::Index* #t9 = self::f<self::Index*>() in let final self::B* #t10 = self::f<self::B*>() in let final void #t11 = this.{self::Test::[]=}(#t9, #t10) in #t10;
-    self::B* v2 = let final self::Index* #t12 = self::f<self::Index*>() in let final self::B* #t13 = this.{self::Test::[]}(#t12) in #t13.{core::Object::==}(null) ?{self::B*} let final self::B* #t14 = self::f<self::B*>() in let final void #t15 = this.{self::Test::[]=}(#t12, #t14) in #t14 : #t13;
+    self::B* v2 = let final self::Index* #t12 = self::f<self::Index*>() in let final self::B* #t13 = this.{self::Test::[]}(#t12) in #t13.{self::A::==}(null) ?{self::B*} let final self::B* #t14 = self::f<self::B*>() in let final void #t15 = this.{self::Test::[]=}(#t12, #t14) in #t14 : #t13;
     self::A* v4 = let final self::Index* #t16 = self::f<self::Index*>() in let final self::A* #t17 = this.{self::Test::[]}(#t16).{self::B::+}(self::f<self::C*>()) as{TypeError} self::B* in let final void #t18 = this.{self::Test::[]=}(#t16, #t17) in #t17;
     self::B* v3 = let final self::Index* #t19 = self::f<self::Index*>() in let final self::B* #t20 = this.{self::Test::[]}(#t19).{self::B::*}(self::f<self::B*>()) in let final void #t21 = this.{self::Test::[]=}(#t19, #t20) in #t20;
     self::C* v5 = let final self::Index* #t22 = self::f<self::Index*>() in let final self::C* #t23 = this.{self::Test::[]}(#t22).{self::B::&}(self::f<self::A*>()) in let final void #t24 = this.{self::Test::[]=}(#t22, #t23) in #t23;
     self::B* v6 = let final self::Index* #t25 = self::f<self::Index*>() in let final self::B* #t26 = this.{self::Test::[]}(#t25).{self::B::-}(1) in let final void #t27 = this.{self::Test::[]=}(#t25, #t26) in #t26;
     self::B* v7 = let final self::Index* #t28 = self::f<self::Index*>() in let final self::B* #t29 = this.{self::Test::[]}(#t28) in let final void #t30 = this.{self::Test::[]=}(#t28, #t29.{self::B::-}(1)) in #t29;
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method f<T extends core::Object* = dynamic>() → self::f::T*
   return null;
diff --git a/pkg/front_end/testcases/inference/infer_assign_to_local.dart b/pkg/front_end/testcases/inference/infer_assign_to_local.dart
index 16eb415..3fbf8b0 100644
--- a/pkg/front_end/testcases/inference/infer_assign_to_local.dart
+++ b/pkg/front_end/testcases/inference/infer_assign_to_local.dart
@@ -22,7 +22,7 @@
   B local;
   local = /*@ typeArgs=B* */ f();
 
-  local /*@ target=Object::== */ ??= /*@ typeArgs=B* */ f();
+  local /*@target=A::==*/ ??= /*@ typeArgs=B* */ f();
 
   local /*@ target=B::+ */ += /*@ typeArgs=C* */ f();
 
@@ -37,7 +37,7 @@
   var /*@ type=B* */ v1 = local = /*@ typeArgs=B* */ f();
 
   var /*@ type=B* */ v2 =
-      local /*@ target=Object::== */ ??= /*@ typeArgs=B* */ f();
+      local /*@target=A::==*/ ??= /*@ typeArgs=B* */ f();
 
   var /*@ type=A* */ v3 = local /*@ target=B::+ */ += /*@ typeArgs=C* */ f();
 
diff --git a/pkg/front_end/testcases/inference/infer_assign_to_local.dart.outline.expect b/pkg/front_end/testcases/inference/infer_assign_to_local.dart.outline.expect
index 228191e..7b504d4 100644
--- a/pkg/front_end/testcases/inference/infer_assign_to_local.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/infer_assign_to_local.dart.outline.expect
@@ -5,6 +5,16 @@
 class A extends core::Object {
   synthetic constructor •() → self::A*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A {
   synthetic constructor •() → self::B*
diff --git a/pkg/front_end/testcases/inference/infer_assign_to_local.dart.strong.expect b/pkg/front_end/testcases/inference/infer_assign_to_local.dart.strong.expect
index 35c6164..79f4142 100644
--- a/pkg/front_end/testcases/inference/infer_assign_to_local.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/infer_assign_to_local.dart.strong.expect
@@ -6,6 +6,16 @@
   synthetic constructor •() → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A {
   synthetic constructor •() → self::B*
@@ -30,14 +40,14 @@
 static method test() → void {
   self::B* local;
   local = self::f<self::B*>();
-  local.{core::Object::==}(null) ?{self::B*} local = self::f<self::B*>() : null;
+  local.{self::A::==}(null) ?{self::B*} local = self::f<self::B*>() : null;
   local = local.{self::B::+}(self::f<self::C*>()) as{TypeError} self::B*;
   local = local.{self::B::*}(self::f<self::B*>());
   local = local.{self::B::&}(self::f<self::A*>());
   local = local.{self::B::-}(1);
   local = local.{self::B::-}(1);
   self::B* v1 = local = self::f<self::B*>();
-  self::B* v2 = let final self::B* #t1 = local in #t1.{core::Object::==}(null) ?{self::B*} local = self::f<self::B*>() : #t1;
+  self::B* v2 = let final self::B* #t1 = local in #t1.{self::A::==}(null) ?{self::B*} local = self::f<self::B*>() : #t1;
   self::A* v3 = local = local.{self::B::+}(self::f<self::C*>()) as{TypeError} self::B*;
   self::B* v4 = local = local.{self::B::*}(self::f<self::B*>());
   self::C* v5 = local = local.{self::B::&}(self::f<self::A*>());
diff --git a/pkg/front_end/testcases/inference/infer_assign_to_local.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/infer_assign_to_local.dart.strong.transformed.expect
index 35c6164..79f4142 100644
--- a/pkg/front_end/testcases/inference/infer_assign_to_local.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/infer_assign_to_local.dart.strong.transformed.expect
@@ -6,6 +6,16 @@
   synthetic constructor •() → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A {
   synthetic constructor •() → self::B*
@@ -30,14 +40,14 @@
 static method test() → void {
   self::B* local;
   local = self::f<self::B*>();
-  local.{core::Object::==}(null) ?{self::B*} local = self::f<self::B*>() : null;
+  local.{self::A::==}(null) ?{self::B*} local = self::f<self::B*>() : null;
   local = local.{self::B::+}(self::f<self::C*>()) as{TypeError} self::B*;
   local = local.{self::B::*}(self::f<self::B*>());
   local = local.{self::B::&}(self::f<self::A*>());
   local = local.{self::B::-}(1);
   local = local.{self::B::-}(1);
   self::B* v1 = local = self::f<self::B*>();
-  self::B* v2 = let final self::B* #t1 = local in #t1.{core::Object::==}(null) ?{self::B*} local = self::f<self::B*>() : #t1;
+  self::B* v2 = let final self::B* #t1 = local in #t1.{self::A::==}(null) ?{self::B*} local = self::f<self::B*>() : #t1;
   self::A* v3 = local = local.{self::B::+}(self::f<self::C*>()) as{TypeError} self::B*;
   self::B* v4 = local = local.{self::B::*}(self::f<self::B*>());
   self::C* v5 = local = local.{self::B::&}(self::f<self::A*>());
diff --git a/pkg/front_end/testcases/inference/infer_assign_to_property_full.dart b/pkg/front_end/testcases/inference/infer_assign_to_property_full.dart
index 457ad54..f94a25c 100644
--- a/pkg/front_end/testcases/inference/infer_assign_to_property_full.dart
+++ b/pkg/front_end/testcases/inference/infer_assign_to_property_full.dart
@@ -25,7 +25,7 @@
     t. /*@target=Test::member*/ member = /*@ typeArgs=B* */ f();
     /*@ type=Test* */ t
             . /*@target=Test::member*/ /*@target=Test::member*/ member
-        /*@target=Object::==*/ ??= /*@ typeArgs=B* */ f();
+        /*@target=A::==*/ ??= /*@ typeArgs=B* */ f();
     /*@ type=Test* */ t
             . /*@target=Test::member*/ /*@target=Test::member*/ member
         /*@ target=B::+ */ += /*@ typeArgs=C* */ f();
@@ -45,7 +45,7 @@
     var /*@ type=B* */ v2 =
         /*@ type=Test* */ t
                 . /*@target=Test::member*/ /*@target=Test::member*/ member
-            /*@target=Object::==*/ ??= /*@ typeArgs=B* */ f();
+            /*@target=A::==*/ ??= /*@ typeArgs=B* */ f();
     var /*@ type=A* */ v3 =
         /*@ type=Test* */ t
                 . /*@target=Test::member*/ /*@target=Test::member*/ member
diff --git a/pkg/front_end/testcases/inference/infer_assign_to_property_full.dart.outline.expect b/pkg/front_end/testcases/inference/infer_assign_to_property_full.dart.outline.expect
index b4e3259..bd49fa0 100644
--- a/pkg/front_end/testcases/inference/infer_assign_to_property_full.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/infer_assign_to_property_full.dart.outline.expect
@@ -5,6 +5,16 @@
 class A extends core::Object {
   synthetic constructor •() → self::A*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A {
   synthetic constructor •() → self::B*
@@ -28,6 +38,16 @@
     ;
   static method test(self::Test* t) → void
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method f<T extends core::Object* = dynamic>() → self::f::T*
   ;
diff --git a/pkg/front_end/testcases/inference/infer_assign_to_property_full.dart.strong.expect b/pkg/front_end/testcases/inference/infer_assign_to_property_full.dart.strong.expect
index 5809936..3afdcb9 100644
--- a/pkg/front_end/testcases/inference/infer_assign_to_property_full.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/infer_assign_to_property_full.dart.strong.expect
@@ -6,6 +6,16 @@
   synthetic constructor •() → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A {
   synthetic constructor •() → self::B*
@@ -32,20 +42,30 @@
     ;
   static method test(self::Test* t) → void {
     t.{self::Test::member} = self::f<self::B*>();
-    let final self::Test* #t1 = t in #t1.{self::Test::member}.{core::Object::==}(null) ?{self::B*} #t1.{self::Test::member} = self::f<self::B*>() : null;
+    let final self::Test* #t1 = t in #t1.{self::Test::member}.{self::A::==}(null) ?{self::B*} #t1.{self::Test::member} = self::f<self::B*>() : null;
     let final self::Test* #t2 = t in #t2.{self::Test::member} = #t2.{self::Test::member}.{self::B::+}(self::f<self::C*>()) as{TypeError} self::B*;
     let final self::Test* #t3 = t in #t3.{self::Test::member} = #t3.{self::Test::member}.{self::B::*}(self::f<self::B*>());
     let final self::Test* #t4 = t in #t4.{self::Test::member} = #t4.{self::Test::member}.{self::B::&}(self::f<self::A*>());
     let final self::Test* #t5 = t in #t5.{self::Test::member} = #t5.{self::Test::member}.{self::B::-}(1);
     let final self::Test* #t6 = t in #t6.{self::Test::member} = #t6.{self::Test::member}.{self::B::-}(1);
     self::B* v1 = t.{self::Test::member} = self::f<self::B*>();
-    self::B* v2 = let final self::Test* #t7 = t in let final self::B* #t8 = #t7.{self::Test::member} in #t8.{core::Object::==}(null) ?{self::B*} #t7.{self::Test::member} = self::f<self::B*>() : #t8;
+    self::B* v2 = let final self::Test* #t7 = t in let final self::B* #t8 = #t7.{self::Test::member} in #t8.{self::A::==}(null) ?{self::B*} #t7.{self::Test::member} = self::f<self::B*>() : #t8;
     self::A* v3 = let final self::Test* #t9 = t in #t9.{self::Test::member} = #t9.{self::Test::member}.{self::B::+}(self::f<self::C*>()) as{TypeError} self::B*;
     self::B* v4 = let final self::Test* #t10 = t in #t10.{self::Test::member} = #t10.{self::Test::member}.{self::B::*}(self::f<self::B*>());
     self::C* v5 = let final self::Test* #t11 = t in #t11.{self::Test::member} = #t11.{self::Test::member}.{self::B::&}(self::f<self::A*>());
     self::B* v6 = let final self::Test* #t12 = t in #t12.{self::Test::member} = #t12.{self::Test::member}.{self::B::-}(1);
     self::B* v7 = let final self::Test* #t13 = t in let final self::B* #t14 = #t13.{self::Test::member} in let final self::B* #t15 = #t13.{self::Test::member} = #t14.{self::B::-}(1) in #t14;
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method f<T extends core::Object* = dynamic>() → self::f::T*
   return null;
diff --git a/pkg/front_end/testcases/inference/infer_assign_to_property_full.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/infer_assign_to_property_full.dart.strong.transformed.expect
index 5809936..3afdcb9 100644
--- a/pkg/front_end/testcases/inference/infer_assign_to_property_full.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/infer_assign_to_property_full.dart.strong.transformed.expect
@@ -6,6 +6,16 @@
   synthetic constructor •() → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A {
   synthetic constructor •() → self::B*
@@ -32,20 +42,30 @@
     ;
   static method test(self::Test* t) → void {
     t.{self::Test::member} = self::f<self::B*>();
-    let final self::Test* #t1 = t in #t1.{self::Test::member}.{core::Object::==}(null) ?{self::B*} #t1.{self::Test::member} = self::f<self::B*>() : null;
+    let final self::Test* #t1 = t in #t1.{self::Test::member}.{self::A::==}(null) ?{self::B*} #t1.{self::Test::member} = self::f<self::B*>() : null;
     let final self::Test* #t2 = t in #t2.{self::Test::member} = #t2.{self::Test::member}.{self::B::+}(self::f<self::C*>()) as{TypeError} self::B*;
     let final self::Test* #t3 = t in #t3.{self::Test::member} = #t3.{self::Test::member}.{self::B::*}(self::f<self::B*>());
     let final self::Test* #t4 = t in #t4.{self::Test::member} = #t4.{self::Test::member}.{self::B::&}(self::f<self::A*>());
     let final self::Test* #t5 = t in #t5.{self::Test::member} = #t5.{self::Test::member}.{self::B::-}(1);
     let final self::Test* #t6 = t in #t6.{self::Test::member} = #t6.{self::Test::member}.{self::B::-}(1);
     self::B* v1 = t.{self::Test::member} = self::f<self::B*>();
-    self::B* v2 = let final self::Test* #t7 = t in let final self::B* #t8 = #t7.{self::Test::member} in #t8.{core::Object::==}(null) ?{self::B*} #t7.{self::Test::member} = self::f<self::B*>() : #t8;
+    self::B* v2 = let final self::Test* #t7 = t in let final self::B* #t8 = #t7.{self::Test::member} in #t8.{self::A::==}(null) ?{self::B*} #t7.{self::Test::member} = self::f<self::B*>() : #t8;
     self::A* v3 = let final self::Test* #t9 = t in #t9.{self::Test::member} = #t9.{self::Test::member}.{self::B::+}(self::f<self::C*>()) as{TypeError} self::B*;
     self::B* v4 = let final self::Test* #t10 = t in #t10.{self::Test::member} = #t10.{self::Test::member}.{self::B::*}(self::f<self::B*>());
     self::C* v5 = let final self::Test* #t11 = t in #t11.{self::Test::member} = #t11.{self::Test::member}.{self::B::&}(self::f<self::A*>());
     self::B* v6 = let final self::Test* #t12 = t in #t12.{self::Test::member} = #t12.{self::Test::member}.{self::B::-}(1);
     self::B* v7 = let final self::Test* #t13 = t in let final self::B* #t14 = #t13.{self::Test::member} in let final self::B* #t15 = #t13.{self::Test::member} = #t14.{self::B::-}(1) in #t14;
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method f<T extends core::Object* = dynamic>() → self::f::T*
   return null;
diff --git a/pkg/front_end/testcases/inference/infer_assign_to_property_null_aware.dart b/pkg/front_end/testcases/inference/infer_assign_to_property_null_aware.dart
index e28b42c..51e7492 100644
--- a/pkg/front_end/testcases/inference/infer_assign_to_property_null_aware.dart
+++ b/pkg/front_end/testcases/inference/infer_assign_to_property_null_aware.dart
@@ -22,62 +22,62 @@
   B member;
 
   static void test(Test t) {
-    /*@ type=Test* */ /*@target=Object::==*/ t?. /*@target=Test::member*/
+    /*@ type=Test* */ /*@target=Test::==*/ t?. /*@target=Test::member*/
         member = /*@ typeArgs=B* */ f();
 
-    /*@ target=Object::== */ t
+    /*@target=Test::==*/ t
             ?. /*@target=Test::member*/ /*@target=Test::member*/ member
-        /*@ target=Object::== */ ??= /*@ typeArgs=B* */ f();
+        /*@target=A::==*/ ??= /*@ typeArgs=B* */ f();
 
-    /*@ target=Object::== */ t
+    /*@target=Test::==*/ t
             ?. /*@target=Test::member*/ /*@target=Test::member*/ member
         /*@ target=B::+ */ += /*@ typeArgs=C* */ f();
 
-    /*@ target=Object::== */ t
+    /*@target=Test::==*/ t
             ?. /*@target=Test::member*/ /*@target=Test::member*/ member
         /*@ target=B::* */ *= /*@ typeArgs=B* */ f();
 
-    /*@ target=Object::== */ t
+    /*@target=Test::==*/ t
             ?. /*@target=Test::member*/ /*@target=Test::member*/ member
         /*@ target=B::& */ &= /*@ typeArgs=A* */ f();
 
-    /*@ target=B::- */ -- /*@ target=Object::== */ t
+    /*@ target=B::- */ -- /*@target=Test::==*/ t
         ?. /*@target=Test::member*/ /*@target=Test::member*/ member;
 
-    /*@ target=Object::== */ t
+    /*@target=Test::==*/ t
             ?. /*@target=Test::member*/ /*@target=Test::member*/ member
         /*@ target=B::- */ --;
 
     var /*@ type=B* */ v1 =
-        /*@ type=Test* */ /*@target=Object::==*/ t?. /*@target=Test::member*/
+        /*@ type=Test* */ /*@target=Test::==*/ t?. /*@target=Test::member*/
             member = /*@ typeArgs=B* */ f();
 
     var /*@ type=B* */ v2 =
-        /*@ target=Object::== */ t
+        /*@target=Test::==*/ t
                 ?. /*@target=Test::member*/ /*@target=Test::member*/ member
-            /*@ target=Object::== */ ??= /*@ typeArgs=B* */ f();
+            /*@target=A::==*/ ??= /*@ typeArgs=B* */ f();
 
     var /*@ type=A* */ v3 =
-        /*@ target=Object::== */ t
+        /*@target=Test::==*/ t
                 ?. /*@target=Test::member*/ /*@target=Test::member*/ member
             /*@ target=B::+ */ += /*@ typeArgs=C* */ f();
 
     var /*@ type=B* */ v4 =
-        /*@ target=Object::== */ t
+        /*@target=Test::==*/ t
                 ?. /*@target=Test::member*/ /*@target=Test::member*/ member
             /*@ target=B::* */ *= /*@ typeArgs=B* */ f();
 
     var /*@ type=C* */ v5 =
-        /*@ target=Object::== */ t
+        /*@target=Test::==*/ t
                 ?. /*@target=Test::member*/ /*@target=Test::member*/ member
             /*@ target=B::& */ &= /*@ typeArgs=A* */ f();
 
     var /*@ type=B* */ v6 =
-        /*@ target=B::- */ -- /*@ target=Object::== */ t
+        /*@ target=B::- */ -- /*@target=Test::==*/ t
             ?. /*@target=Test::member*/ /*@target=Test::member*/ member;
 
     var /*@ type=B* */ v7 =
-        /*@ target=Object::== */ t
+        /*@target=Test::==*/ t
             ?. /*@target=Test::member*/ /*@target=Test::member*/ member
         /*@ target=B::- */ --;
   }
diff --git a/pkg/front_end/testcases/inference/infer_assign_to_property_null_aware.dart.outline.expect b/pkg/front_end/testcases/inference/infer_assign_to_property_null_aware.dart.outline.expect
index b4e3259..bd49fa0 100644
--- a/pkg/front_end/testcases/inference/infer_assign_to_property_null_aware.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/infer_assign_to_property_null_aware.dart.outline.expect
@@ -5,6 +5,16 @@
 class A extends core::Object {
   synthetic constructor •() → self::A*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A {
   synthetic constructor •() → self::B*
@@ -28,6 +38,16 @@
     ;
   static method test(self::Test* t) → void
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method f<T extends core::Object* = dynamic>() → self::f::T*
   ;
diff --git a/pkg/front_end/testcases/inference/infer_assign_to_property_null_aware.dart.strong.expect b/pkg/front_end/testcases/inference/infer_assign_to_property_null_aware.dart.strong.expect
index 60aa66d..3c60310 100644
--- a/pkg/front_end/testcases/inference/infer_assign_to_property_null_aware.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/infer_assign_to_property_null_aware.dart.strong.expect
@@ -6,6 +6,16 @@
   synthetic constructor •() → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A {
   synthetic constructor •() → self::B*
@@ -31,21 +41,31 @@
     : super core::Object::•()
     ;
   static method test(self::Test* t) → void {
-    let final self::Test* #t1 = t in #t1.{core::Object::==}(null) ?{self::B*} null : #t1.{self::Test::member} = self::f<self::B*>();
-    let final self::Test* #t2 = t in #t2.{core::Object::==}(null) ?{self::B*} null : #t2.{self::Test::member}.{core::Object::==}(null) ?{self::B*} #t2.{self::Test::member} = self::f<self::B*>() : null;
-    let final self::Test* #t3 = t in #t3.{core::Object::==}(null) ?{self::A*} null : #t3.{self::Test::member} = #t3.{self::Test::member}.{self::B::+}(self::f<self::C*>()) as{TypeError} self::B*;
-    let final self::Test* #t4 = t in #t4.{core::Object::==}(null) ?{self::B*} null : #t4.{self::Test::member} = #t4.{self::Test::member}.{self::B::*}(self::f<self::B*>());
-    let final self::Test* #t5 = t in #t5.{core::Object::==}(null) ?{self::C*} null : #t5.{self::Test::member} = #t5.{self::Test::member}.{self::B::&}(self::f<self::A*>());
-    let final self::Test* #t6 = t in #t6.{core::Object::==}(null) ?{self::B*} null : let final self::B* #t7 = #t6.{self::Test::member}.{self::B::-}(1) in let final void #t8 = #t6.{self::Test::member} = #t7 in #t7;
-    let final self::Test* #t9 = t in #t9.{core::Object::==}(null) ?{self::B*} null : #t9.{self::Test::member} = #t9.{self::Test::member}.{self::B::-}(1);
-    self::B* v1 = let final self::Test* #t10 = t in #t10.{core::Object::==}(null) ?{self::B*} null : #t10.{self::Test::member} = self::f<self::B*>();
-    self::B* v2 = let final self::Test* #t11 = t in #t11.{core::Object::==}(null) ?{self::B*} null : let final self::B* #t12 = #t11.{self::Test::member} in #t12.{core::Object::==}(null) ?{self::B*} #t11.{self::Test::member} = self::f<self::B*>() : #t12;
-    self::A* v3 = let final self::Test* #t13 = t in #t13.{core::Object::==}(null) ?{self::A*} null : let final self::A* #t14 = #t13.{self::Test::member}.{self::B::+}(self::f<self::C*>()) as{TypeError} self::B* in let final void #t15 = #t13.{self::Test::member} = #t14 in #t14;
-    self::B* v4 = let final self::Test* #t16 = t in #t16.{core::Object::==}(null) ?{self::B*} null : let final self::B* #t17 = #t16.{self::Test::member}.{self::B::*}(self::f<self::B*>()) in let final void #t18 = #t16.{self::Test::member} = #t17 in #t17;
-    self::C* v5 = let final self::Test* #t19 = t in #t19.{core::Object::==}(null) ?{self::C*} null : let final self::C* #t20 = #t19.{self::Test::member}.{self::B::&}(self::f<self::A*>()) in let final void #t21 = #t19.{self::Test::member} = #t20 in #t20;
-    self::B* v6 = let final self::Test* #t22 = t in #t22.{core::Object::==}(null) ?{self::B*} null : let final self::B* #t23 = #t22.{self::Test::member}.{self::B::-}(1) in let final void #t24 = #t22.{self::Test::member} = #t23 in #t23;
-    self::B* v7 = let final self::Test* #t25 = t in #t25.{core::Object::==}(null) ?{self::B*} null : let final self::B* #t26 = #t25.{self::Test::member} in let final void #t27 = #t25.{self::Test::member} = #t26.{self::B::-}(1) in #t26;
+    let final self::Test* #t1 = t in #t1.{self::Test::==}(null) ?{self::B*} null : #t1.{self::Test::member} = self::f<self::B*>();
+    let final self::Test* #t2 = t in #t2.{self::Test::==}(null) ?{self::B*} null : #t2.{self::Test::member}.{self::A::==}(null) ?{self::B*} #t2.{self::Test::member} = self::f<self::B*>() : null;
+    let final self::Test* #t3 = t in #t3.{self::Test::==}(null) ?{self::A*} null : #t3.{self::Test::member} = #t3.{self::Test::member}.{self::B::+}(self::f<self::C*>()) as{TypeError} self::B*;
+    let final self::Test* #t4 = t in #t4.{self::Test::==}(null) ?{self::B*} null : #t4.{self::Test::member} = #t4.{self::Test::member}.{self::B::*}(self::f<self::B*>());
+    let final self::Test* #t5 = t in #t5.{self::Test::==}(null) ?{self::C*} null : #t5.{self::Test::member} = #t5.{self::Test::member}.{self::B::&}(self::f<self::A*>());
+    let final self::Test* #t6 = t in #t6.{self::Test::==}(null) ?{self::B*} null : let final self::B* #t7 = #t6.{self::Test::member}.{self::B::-}(1) in let final void #t8 = #t6.{self::Test::member} = #t7 in #t7;
+    let final self::Test* #t9 = t in #t9.{self::Test::==}(null) ?{self::B*} null : #t9.{self::Test::member} = #t9.{self::Test::member}.{self::B::-}(1);
+    self::B* v1 = let final self::Test* #t10 = t in #t10.{self::Test::==}(null) ?{self::B*} null : #t10.{self::Test::member} = self::f<self::B*>();
+    self::B* v2 = let final self::Test* #t11 = t in #t11.{self::Test::==}(null) ?{self::B*} null : let final self::B* #t12 = #t11.{self::Test::member} in #t12.{self::A::==}(null) ?{self::B*} #t11.{self::Test::member} = self::f<self::B*>() : #t12;
+    self::A* v3 = let final self::Test* #t13 = t in #t13.{self::Test::==}(null) ?{self::A*} null : let final self::A* #t14 = #t13.{self::Test::member}.{self::B::+}(self::f<self::C*>()) as{TypeError} self::B* in let final void #t15 = #t13.{self::Test::member} = #t14 in #t14;
+    self::B* v4 = let final self::Test* #t16 = t in #t16.{self::Test::==}(null) ?{self::B*} null : let final self::B* #t17 = #t16.{self::Test::member}.{self::B::*}(self::f<self::B*>()) in let final void #t18 = #t16.{self::Test::member} = #t17 in #t17;
+    self::C* v5 = let final self::Test* #t19 = t in #t19.{self::Test::==}(null) ?{self::C*} null : let final self::C* #t20 = #t19.{self::Test::member}.{self::B::&}(self::f<self::A*>()) in let final void #t21 = #t19.{self::Test::member} = #t20 in #t20;
+    self::B* v6 = let final self::Test* #t22 = t in #t22.{self::Test::==}(null) ?{self::B*} null : let final self::B* #t23 = #t22.{self::Test::member}.{self::B::-}(1) in let final void #t24 = #t22.{self::Test::member} = #t23 in #t23;
+    self::B* v7 = let final self::Test* #t25 = t in #t25.{self::Test::==}(null) ?{self::B*} null : let final self::B* #t26 = #t25.{self::Test::member} in let final void #t27 = #t25.{self::Test::member} = #t26.{self::B::-}(1) in #t26;
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method f<T extends core::Object* = dynamic>() → self::f::T*
   return null;
diff --git a/pkg/front_end/testcases/inference/infer_assign_to_property_null_aware.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/infer_assign_to_property_null_aware.dart.strong.transformed.expect
index 60aa66d..3c60310 100644
--- a/pkg/front_end/testcases/inference/infer_assign_to_property_null_aware.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/infer_assign_to_property_null_aware.dart.strong.transformed.expect
@@ -6,6 +6,16 @@
   synthetic constructor •() → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A {
   synthetic constructor •() → self::B*
@@ -31,21 +41,31 @@
     : super core::Object::•()
     ;
   static method test(self::Test* t) → void {
-    let final self::Test* #t1 = t in #t1.{core::Object::==}(null) ?{self::B*} null : #t1.{self::Test::member} = self::f<self::B*>();
-    let final self::Test* #t2 = t in #t2.{core::Object::==}(null) ?{self::B*} null : #t2.{self::Test::member}.{core::Object::==}(null) ?{self::B*} #t2.{self::Test::member} = self::f<self::B*>() : null;
-    let final self::Test* #t3 = t in #t3.{core::Object::==}(null) ?{self::A*} null : #t3.{self::Test::member} = #t3.{self::Test::member}.{self::B::+}(self::f<self::C*>()) as{TypeError} self::B*;
-    let final self::Test* #t4 = t in #t4.{core::Object::==}(null) ?{self::B*} null : #t4.{self::Test::member} = #t4.{self::Test::member}.{self::B::*}(self::f<self::B*>());
-    let final self::Test* #t5 = t in #t5.{core::Object::==}(null) ?{self::C*} null : #t5.{self::Test::member} = #t5.{self::Test::member}.{self::B::&}(self::f<self::A*>());
-    let final self::Test* #t6 = t in #t6.{core::Object::==}(null) ?{self::B*} null : let final self::B* #t7 = #t6.{self::Test::member}.{self::B::-}(1) in let final void #t8 = #t6.{self::Test::member} = #t7 in #t7;
-    let final self::Test* #t9 = t in #t9.{core::Object::==}(null) ?{self::B*} null : #t9.{self::Test::member} = #t9.{self::Test::member}.{self::B::-}(1);
-    self::B* v1 = let final self::Test* #t10 = t in #t10.{core::Object::==}(null) ?{self::B*} null : #t10.{self::Test::member} = self::f<self::B*>();
-    self::B* v2 = let final self::Test* #t11 = t in #t11.{core::Object::==}(null) ?{self::B*} null : let final self::B* #t12 = #t11.{self::Test::member} in #t12.{core::Object::==}(null) ?{self::B*} #t11.{self::Test::member} = self::f<self::B*>() : #t12;
-    self::A* v3 = let final self::Test* #t13 = t in #t13.{core::Object::==}(null) ?{self::A*} null : let final self::A* #t14 = #t13.{self::Test::member}.{self::B::+}(self::f<self::C*>()) as{TypeError} self::B* in let final void #t15 = #t13.{self::Test::member} = #t14 in #t14;
-    self::B* v4 = let final self::Test* #t16 = t in #t16.{core::Object::==}(null) ?{self::B*} null : let final self::B* #t17 = #t16.{self::Test::member}.{self::B::*}(self::f<self::B*>()) in let final void #t18 = #t16.{self::Test::member} = #t17 in #t17;
-    self::C* v5 = let final self::Test* #t19 = t in #t19.{core::Object::==}(null) ?{self::C*} null : let final self::C* #t20 = #t19.{self::Test::member}.{self::B::&}(self::f<self::A*>()) in let final void #t21 = #t19.{self::Test::member} = #t20 in #t20;
-    self::B* v6 = let final self::Test* #t22 = t in #t22.{core::Object::==}(null) ?{self::B*} null : let final self::B* #t23 = #t22.{self::Test::member}.{self::B::-}(1) in let final void #t24 = #t22.{self::Test::member} = #t23 in #t23;
-    self::B* v7 = let final self::Test* #t25 = t in #t25.{core::Object::==}(null) ?{self::B*} null : let final self::B* #t26 = #t25.{self::Test::member} in let final void #t27 = #t25.{self::Test::member} = #t26.{self::B::-}(1) in #t26;
+    let final self::Test* #t1 = t in #t1.{self::Test::==}(null) ?{self::B*} null : #t1.{self::Test::member} = self::f<self::B*>();
+    let final self::Test* #t2 = t in #t2.{self::Test::==}(null) ?{self::B*} null : #t2.{self::Test::member}.{self::A::==}(null) ?{self::B*} #t2.{self::Test::member} = self::f<self::B*>() : null;
+    let final self::Test* #t3 = t in #t3.{self::Test::==}(null) ?{self::A*} null : #t3.{self::Test::member} = #t3.{self::Test::member}.{self::B::+}(self::f<self::C*>()) as{TypeError} self::B*;
+    let final self::Test* #t4 = t in #t4.{self::Test::==}(null) ?{self::B*} null : #t4.{self::Test::member} = #t4.{self::Test::member}.{self::B::*}(self::f<self::B*>());
+    let final self::Test* #t5 = t in #t5.{self::Test::==}(null) ?{self::C*} null : #t5.{self::Test::member} = #t5.{self::Test::member}.{self::B::&}(self::f<self::A*>());
+    let final self::Test* #t6 = t in #t6.{self::Test::==}(null) ?{self::B*} null : let final self::B* #t7 = #t6.{self::Test::member}.{self::B::-}(1) in let final void #t8 = #t6.{self::Test::member} = #t7 in #t7;
+    let final self::Test* #t9 = t in #t9.{self::Test::==}(null) ?{self::B*} null : #t9.{self::Test::member} = #t9.{self::Test::member}.{self::B::-}(1);
+    self::B* v1 = let final self::Test* #t10 = t in #t10.{self::Test::==}(null) ?{self::B*} null : #t10.{self::Test::member} = self::f<self::B*>();
+    self::B* v2 = let final self::Test* #t11 = t in #t11.{self::Test::==}(null) ?{self::B*} null : let final self::B* #t12 = #t11.{self::Test::member} in #t12.{self::A::==}(null) ?{self::B*} #t11.{self::Test::member} = self::f<self::B*>() : #t12;
+    self::A* v3 = let final self::Test* #t13 = t in #t13.{self::Test::==}(null) ?{self::A*} null : let final self::A* #t14 = #t13.{self::Test::member}.{self::B::+}(self::f<self::C*>()) as{TypeError} self::B* in let final void #t15 = #t13.{self::Test::member} = #t14 in #t14;
+    self::B* v4 = let final self::Test* #t16 = t in #t16.{self::Test::==}(null) ?{self::B*} null : let final self::B* #t17 = #t16.{self::Test::member}.{self::B::*}(self::f<self::B*>()) in let final void #t18 = #t16.{self::Test::member} = #t17 in #t17;
+    self::C* v5 = let final self::Test* #t19 = t in #t19.{self::Test::==}(null) ?{self::C*} null : let final self::C* #t20 = #t19.{self::Test::member}.{self::B::&}(self::f<self::A*>()) in let final void #t21 = #t19.{self::Test::member} = #t20 in #t20;
+    self::B* v6 = let final self::Test* #t22 = t in #t22.{self::Test::==}(null) ?{self::B*} null : let final self::B* #t23 = #t22.{self::Test::member}.{self::B::-}(1) in let final void #t24 = #t22.{self::Test::member} = #t23 in #t23;
+    self::B* v7 = let final self::Test* #t25 = t in #t25.{self::Test::==}(null) ?{self::B*} null : let final self::B* #t26 = #t25.{self::Test::member} in let final void #t27 = #t25.{self::Test::member} = #t26.{self::B::-}(1) in #t26;
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method f<T extends core::Object* = dynamic>() → self::f::T*
   return null;
diff --git a/pkg/front_end/testcases/inference/infer_assign_to_property_null_aware_upwards.dart b/pkg/front_end/testcases/inference/infer_assign_to_property_null_aware_upwards.dart
index 6b4a521..7532de9 100644
--- a/pkg/front_end/testcases/inference/infer_assign_to_property_null_aware_upwards.dart
+++ b/pkg/front_end/testcases/inference/infer_assign_to_property_null_aware_upwards.dart
@@ -13,24 +13,24 @@
   int prop;
 
   static void test(Test1 t) {
-    var /*@ type=int* */ v1 = /*@ type=Test1* */ /*@target=Object::==*/ t
+    var /*@ type=int* */ v1 = /*@ type=Test1* */ /*@target=Test1::==*/ t
         ?. /*@target=Test1::prop*/ prop = getInt();
 
     var /*@ type=int* */ v4 =
-        /*@target=Object::==*/ t
+        /*@target=Test1::==*/ t
                 ?. /*@target=Test1::prop*/ /*@target=Test1::prop*/ prop
             /*@target=num::==*/ ??= getInt();
 
     var /*@ type=int* */ v7 =
-        /*@target=Object::==*/ t
+        /*@target=Test1::==*/ t
                 ?. /*@target=Test1::prop*/ /*@target=Test1::prop*/ prop
             /*@target=num::+*/ += getInt();
 
-    var /*@ type=int* */ v10 = /*@target=num::+*/ ++ /*@target=Object::==*/ t
+    var /*@ type=int* */ v10 = /*@target=num::+*/ ++ /*@target=Test1::==*/ t
         ?. /*@target=Test1::prop*/ /*@target=Test1::prop*/ prop;
 
     var /*@ type=int* */ v11 =
-        /*@target=Object::==*/ t
+        /*@target=Test1::==*/ t
             ?. /*@target=Test1::prop*/ /*@target=Test1::prop*/ prop
         /*@target=num::+*/ ++;
   }
@@ -40,49 +40,49 @@
   num prop;
 
   static void test(Test2 t) {
-    var /*@ type=int* */ v1 = /*@ type=Test2* */ /*@target=Object::==*/ t
+    var /*@ type=int* */ v1 = /*@ type=Test2* */ /*@target=Test2::==*/ t
         ?. /*@target=Test2::prop*/ prop = getInt();
 
-    var /*@ type=num* */ v2 = /*@ type=Test2* */ /*@target=Object::==*/ t
+    var /*@ type=num* */ v2 = /*@ type=Test2* */ /*@target=Test2::==*/ t
         ?. /*@target=Test2::prop*/ prop = getNum();
 
-    var /*@ type=double* */ v3 = /*@ type=Test2* */ /*@target=Object::==*/ t
+    var /*@ type=double* */ v3 = /*@ type=Test2* */ /*@target=Test2::==*/ t
         ?. /*@target=Test2::prop*/ prop = getDouble();
 
     var /*@ type=num* */ v4 =
-        /*@target=Object::==*/ t
+        /*@target=Test2::==*/ t
                 ?. /*@target=Test2::prop*/ /*@target=Test2::prop*/ prop
             /*@target=num::==*/ ??= getInt();
 
     var /*@ type=num* */ v5 =
-        /*@target=Object::==*/ t
+        /*@target=Test2::==*/ t
                 ?. /*@target=Test2::prop*/ /*@target=Test2::prop*/ prop
             /*@target=num::==*/ ??= getNum();
 
-    var /*@ type=num* */ v6 = /*@target=Object::==*/ t
+    var /*@ type=num* */ v6 = /*@target=Test2::==*/ t
             ?. /*@target=Test2::prop*/ /*@target=Test2::prop*/ prop
         /*@target=num::==*/ ??= getDouble();
 
     var /*@ type=num* */ v7 =
-        /*@target=Object::==*/ t
+        /*@target=Test2::==*/ t
                 ?. /*@target=Test2::prop*/ /*@target=Test2::prop*/ prop
             /*@target=num::+*/ += getInt();
 
     var /*@ type=num* */ v8 =
-        /*@target=Object::==*/ t
+        /*@target=Test2::==*/ t
                 ?. /*@target=Test2::prop*/ /*@target=Test2::prop*/ prop
             /*@target=num::+*/ += getNum();
 
     var /*@ type=num* */ v9 =
-        /*@target=Object::==*/ t
+        /*@target=Test2::==*/ t
                 ?. /*@target=Test2::prop*/ /*@target=Test2::prop*/ prop
             /*@target=num::+*/ += getDouble();
 
-    var /*@ type=num* */ v10 = /*@target=num::+*/ ++ /*@target=Object::==*/ t
+    var /*@ type=num* */ v10 = /*@target=num::+*/ ++ /*@target=Test2::==*/ t
         ?. /*@target=Test2::prop*/ /*@target=Test2::prop*/ prop;
 
     var /*@ type=num* */ v11 =
-        /*@target=Object::==*/ t
+        /*@target=Test2::==*/ t
             ?. /*@target=Test2::prop*/ /*@target=Test2::prop*/ prop
         /*@target=num::+*/ ++;
   }
@@ -93,35 +93,35 @@
 
   static void test3(Test3 t) {
     var /*@ type=double* */ v3 =
-        /*@ type=Test3* */ /*@target=Object::==*/ t
+        /*@ type=Test3* */ /*@target=Test3::==*/ t
             ?. /*@target=Test3::prop*/ prop = getDouble();
 
     var /*@ type=double* */ v6 =
-        /*@target=Object::==*/ t?.
+        /*@target=Test3::==*/ t?.
                 /*@target=Test3::prop*/ /*@target=Test3::prop*/ prop
             /*@target=num::==*/ ??= getDouble();
 
     var /*@ type=double* */ v7 =
-        /*@target=Object::==*/ t
+        /*@target=Test3::==*/ t
                 ?. /*@target=Test3::prop*/ /*@target=Test3::prop*/ prop
             /*@target=double::+*/ += getInt();
 
     var /*@ type=double* */ v8 =
-        /*@target=Object::==*/ t
+        /*@target=Test3::==*/ t
                 ?. /*@target=Test3::prop*/ /*@target=Test3::prop*/ prop
             /*@target=double::+*/ += getNum();
 
     var /*@ type=double* */ v9 =
-        /*@target=Object::==*/ t?.
+        /*@target=Test3::==*/ t?.
                 /*@target=Test3::prop*/ /*@target=Test3::prop*/ prop
             /*@target=double::+*/ += getDouble();
 
     var /*@ type=double* */ v10 = /*@target=double::+*/ ++
-        /*@target=Object::==*/ t
+        /*@target=Test3::==*/ t
             ?. /*@target=Test3::prop*/ /*@target=Test3::prop*/ prop;
 
     var /*@ type=double* */ v11 =
-        /*@target=Object::==*/ t
+        /*@target=Test3::==*/ t
             ?. /*@target=Test3::prop*/ /*@target=Test3::prop*/ prop
         /*@target=double::+*/ ++;
   }
diff --git a/pkg/front_end/testcases/inference/infer_assign_to_property_null_aware_upwards.dart.outline.expect b/pkg/front_end/testcases/inference/infer_assign_to_property_null_aware_upwards.dart.outline.expect
index 2203088..98f4342 100644
--- a/pkg/front_end/testcases/inference/infer_assign_to_property_null_aware_upwards.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/infer_assign_to_property_null_aware_upwards.dart.outline.expect
@@ -8,6 +8,16 @@
     ;
   static method test(self::Test1* t) → void
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Test2 extends core::Object {
   field core::num* prop;
@@ -15,6 +25,16 @@
     ;
   static method test(self::Test2* t) → void
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Test3 extends core::Object {
   field core::double* prop;
@@ -22,6 +42,16 @@
     ;
   static method test3(self::Test3* t) → void
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method getInt() → core::int*
   ;
diff --git a/pkg/front_end/testcases/inference/infer_assign_to_property_null_aware_upwards.dart.strong.expect b/pkg/front_end/testcases/inference/infer_assign_to_property_null_aware_upwards.dart.strong.expect
index c7353f0..cea3286 100644
--- a/pkg/front_end/testcases/inference/infer_assign_to_property_null_aware_upwards.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/infer_assign_to_property_null_aware_upwards.dart.strong.expect
@@ -8,12 +8,22 @@
     : super core::Object::•()
     ;
   static method test(self::Test1* t) → void {
-    core::int* v1 = let final self::Test1* #t1 = t in #t1.{core::Object::==}(null) ?{core::int*} null : #t1.{self::Test1::prop} = self::getInt();
-    core::int* v4 = let final self::Test1* #t2 = t in #t2.{core::Object::==}(null) ?{core::int*} null : let final core::int* #t3 = #t2.{self::Test1::prop} in #t3.{core::num::==}(null) ?{core::int*} #t2.{self::Test1::prop} = self::getInt() : #t3;
-    core::int* v7 = let final self::Test1* #t4 = t in #t4.{core::Object::==}(null) ?{core::int*} null : let final core::int* #t5 = #t4.{self::Test1::prop}.{core::num::+}(self::getInt()) in let final void #t6 = #t4.{self::Test1::prop} = #t5 in #t5;
-    core::int* v10 = let final self::Test1* #t7 = t in #t7.{core::Object::==}(null) ?{core::int*} null : let final core::int* #t8 = #t7.{self::Test1::prop}.{core::num::+}(1) in let final void #t9 = #t7.{self::Test1::prop} = #t8 in #t8;
-    core::int* v11 = let final self::Test1* #t10 = t in #t10.{core::Object::==}(null) ?{core::int*} null : let final core::int* #t11 = #t10.{self::Test1::prop} in let final void #t12 = #t10.{self::Test1::prop} = #t11.{core::num::+}(1) in #t11;
+    core::int* v1 = let final self::Test1* #t1 = t in #t1.{self::Test1::==}(null) ?{core::int*} null : #t1.{self::Test1::prop} = self::getInt();
+    core::int* v4 = let final self::Test1* #t2 = t in #t2.{self::Test1::==}(null) ?{core::int*} null : let final core::int* #t3 = #t2.{self::Test1::prop} in #t3.{core::num::==}(null) ?{core::int*} #t2.{self::Test1::prop} = self::getInt() : #t3;
+    core::int* v7 = let final self::Test1* #t4 = t in #t4.{self::Test1::==}(null) ?{core::int*} null : let final core::int* #t5 = #t4.{self::Test1::prop}.{core::num::+}(self::getInt()) in let final void #t6 = #t4.{self::Test1::prop} = #t5 in #t5;
+    core::int* v10 = let final self::Test1* #t7 = t in #t7.{self::Test1::==}(null) ?{core::int*} null : let final core::int* #t8 = #t7.{self::Test1::prop}.{core::num::+}(1) in let final void #t9 = #t7.{self::Test1::prop} = #t8 in #t8;
+    core::int* v11 = let final self::Test1* #t10 = t in #t10.{self::Test1::==}(null) ?{core::int*} null : let final core::int* #t11 = #t10.{self::Test1::prop} in let final void #t12 = #t10.{self::Test1::prop} = #t11.{core::num::+}(1) in #t11;
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Test2 extends core::Object {
   field core::num* prop = null;
@@ -21,18 +31,28 @@
     : super core::Object::•()
     ;
   static method test(self::Test2* t) → void {
-    core::int* v1 = let final self::Test2* #t13 = t in #t13.{core::Object::==}(null) ?{core::int*} null : #t13.{self::Test2::prop} = self::getInt();
-    core::num* v2 = let final self::Test2* #t14 = t in #t14.{core::Object::==}(null) ?{core::num*} null : #t14.{self::Test2::prop} = self::getNum();
-    core::double* v3 = let final self::Test2* #t15 = t in #t15.{core::Object::==}(null) ?{core::double*} null : #t15.{self::Test2::prop} = self::getDouble();
-    core::num* v4 = let final self::Test2* #t16 = t in #t16.{core::Object::==}(null) ?{core::num*} null : let final core::num* #t17 = #t16.{self::Test2::prop} in #t17.{core::num::==}(null) ?{core::num*} #t16.{self::Test2::prop} = self::getInt() : #t17;
-    core::num* v5 = let final self::Test2* #t18 = t in #t18.{core::Object::==}(null) ?{core::num*} null : let final core::num* #t19 = #t18.{self::Test2::prop} in #t19.{core::num::==}(null) ?{core::num*} #t18.{self::Test2::prop} = self::getNum() : #t19;
-    core::num* v6 = let final self::Test2* #t20 = t in #t20.{core::Object::==}(null) ?{core::num*} null : let final core::num* #t21 = #t20.{self::Test2::prop} in #t21.{core::num::==}(null) ?{core::num*} #t20.{self::Test2::prop} = self::getDouble() : #t21;
-    core::num* v7 = let final self::Test2* #t22 = t in #t22.{core::Object::==}(null) ?{core::num*} null : let final core::num* #t23 = #t22.{self::Test2::prop}.{core::num::+}(self::getInt()) in let final void #t24 = #t22.{self::Test2::prop} = #t23 in #t23;
-    core::num* v8 = let final self::Test2* #t25 = t in #t25.{core::Object::==}(null) ?{core::num*} null : let final core::num* #t26 = #t25.{self::Test2::prop}.{core::num::+}(self::getNum()) in let final void #t27 = #t25.{self::Test2::prop} = #t26 in #t26;
-    core::num* v9 = let final self::Test2* #t28 = t in #t28.{core::Object::==}(null) ?{core::num*} null : let final core::num* #t29 = #t28.{self::Test2::prop}.{core::num::+}(self::getDouble()) in let final void #t30 = #t28.{self::Test2::prop} = #t29 in #t29;
-    core::num* v10 = let final self::Test2* #t31 = t in #t31.{core::Object::==}(null) ?{core::num*} null : let final core::num* #t32 = #t31.{self::Test2::prop}.{core::num::+}(1) in let final void #t33 = #t31.{self::Test2::prop} = #t32 in #t32;
-    core::num* v11 = let final self::Test2* #t34 = t in #t34.{core::Object::==}(null) ?{core::num*} null : let final core::num* #t35 = #t34.{self::Test2::prop} in let final void #t36 = #t34.{self::Test2::prop} = #t35.{core::num::+}(1) in #t35;
+    core::int* v1 = let final self::Test2* #t13 = t in #t13.{self::Test2::==}(null) ?{core::int*} null : #t13.{self::Test2::prop} = self::getInt();
+    core::num* v2 = let final self::Test2* #t14 = t in #t14.{self::Test2::==}(null) ?{core::num*} null : #t14.{self::Test2::prop} = self::getNum();
+    core::double* v3 = let final self::Test2* #t15 = t in #t15.{self::Test2::==}(null) ?{core::double*} null : #t15.{self::Test2::prop} = self::getDouble();
+    core::num* v4 = let final self::Test2* #t16 = t in #t16.{self::Test2::==}(null) ?{core::num*} null : let final core::num* #t17 = #t16.{self::Test2::prop} in #t17.{core::num::==}(null) ?{core::num*} #t16.{self::Test2::prop} = self::getInt() : #t17;
+    core::num* v5 = let final self::Test2* #t18 = t in #t18.{self::Test2::==}(null) ?{core::num*} null : let final core::num* #t19 = #t18.{self::Test2::prop} in #t19.{core::num::==}(null) ?{core::num*} #t18.{self::Test2::prop} = self::getNum() : #t19;
+    core::num* v6 = let final self::Test2* #t20 = t in #t20.{self::Test2::==}(null) ?{core::num*} null : let final core::num* #t21 = #t20.{self::Test2::prop} in #t21.{core::num::==}(null) ?{core::num*} #t20.{self::Test2::prop} = self::getDouble() : #t21;
+    core::num* v7 = let final self::Test2* #t22 = t in #t22.{self::Test2::==}(null) ?{core::num*} null : let final core::num #t23 = #t22.{self::Test2::prop}.{core::num::+}(self::getInt()) in let final void #t24 = #t22.{self::Test2::prop} = #t23 in #t23;
+    core::num* v8 = let final self::Test2* #t25 = t in #t25.{self::Test2::==}(null) ?{core::num*} null : let final core::num #t26 = #t25.{self::Test2::prop}.{core::num::+}(self::getNum()) in let final void #t27 = #t25.{self::Test2::prop} = #t26 in #t26;
+    core::num* v9 = let final self::Test2* #t28 = t in #t28.{self::Test2::==}(null) ?{core::num*} null : let final core::num #t29 = #t28.{self::Test2::prop}.{core::num::+}(self::getDouble()) in let final void #t30 = #t28.{self::Test2::prop} = #t29 in #t29;
+    core::num* v10 = let final self::Test2* #t31 = t in #t31.{self::Test2::==}(null) ?{core::num*} null : let final core::num #t32 = #t31.{self::Test2::prop}.{core::num::+}(1) in let final void #t33 = #t31.{self::Test2::prop} = #t32 in #t32;
+    core::num* v11 = let final self::Test2* #t34 = t in #t34.{self::Test2::==}(null) ?{core::num*} null : let final core::num* #t35 = #t34.{self::Test2::prop} in let final void #t36 = #t34.{self::Test2::prop} = #t35.{core::num::+}(1) in #t35;
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Test3 extends core::Object {
   field core::double* prop = null;
@@ -40,14 +60,24 @@
     : super core::Object::•()
     ;
   static method test3(self::Test3* t) → void {
-    core::double* v3 = let final self::Test3* #t37 = t in #t37.{core::Object::==}(null) ?{core::double*} null : #t37.{self::Test3::prop} = self::getDouble();
-    core::double* v6 = let final self::Test3* #t38 = t in #t38.{core::Object::==}(null) ?{core::double*} null : let final core::double* #t39 = #t38.{self::Test3::prop} in #t39.{core::num::==}(null) ?{core::double*} #t38.{self::Test3::prop} = self::getDouble() : #t39;
-    core::double* v7 = let final self::Test3* #t40 = t in #t40.{core::Object::==}(null) ?{core::double*} null : let final core::double* #t41 = #t40.{self::Test3::prop}.{core::double::+}(self::getInt()) in let final void #t42 = #t40.{self::Test3::prop} = #t41 in #t41;
-    core::double* v8 = let final self::Test3* #t43 = t in #t43.{core::Object::==}(null) ?{core::double*} null : let final core::double* #t44 = #t43.{self::Test3::prop}.{core::double::+}(self::getNum()) in let final void #t45 = #t43.{self::Test3::prop} = #t44 in #t44;
-    core::double* v9 = let final self::Test3* #t46 = t in #t46.{core::Object::==}(null) ?{core::double*} null : let final core::double* #t47 = #t46.{self::Test3::prop}.{core::double::+}(self::getDouble()) in let final void #t48 = #t46.{self::Test3::prop} = #t47 in #t47;
-    core::double* v10 = let final self::Test3* #t49 = t in #t49.{core::Object::==}(null) ?{core::double*} null : let final core::double* #t50 = #t49.{self::Test3::prop}.{core::double::+}(1) in let final void #t51 = #t49.{self::Test3::prop} = #t50 in #t50;
-    core::double* v11 = let final self::Test3* #t52 = t in #t52.{core::Object::==}(null) ?{core::double*} null : let final core::double* #t53 = #t52.{self::Test3::prop} in let final void #t54 = #t52.{self::Test3::prop} = #t53.{core::double::+}(1) in #t53;
+    core::double* v3 = let final self::Test3* #t37 = t in #t37.{self::Test3::==}(null) ?{core::double*} null : #t37.{self::Test3::prop} = self::getDouble();
+    core::double* v6 = let final self::Test3* #t38 = t in #t38.{self::Test3::==}(null) ?{core::double*} null : let final core::double* #t39 = #t38.{self::Test3::prop} in #t39.{core::num::==}(null) ?{core::double*} #t38.{self::Test3::prop} = self::getDouble() : #t39;
+    core::double* v7 = let final self::Test3* #t40 = t in #t40.{self::Test3::==}(null) ?{core::double*} null : let final core::double #t41 = #t40.{self::Test3::prop}.{core::double::+}(self::getInt()) in let final void #t42 = #t40.{self::Test3::prop} = #t41 in #t41;
+    core::double* v8 = let final self::Test3* #t43 = t in #t43.{self::Test3::==}(null) ?{core::double*} null : let final core::double #t44 = #t43.{self::Test3::prop}.{core::double::+}(self::getNum()) in let final void #t45 = #t43.{self::Test3::prop} = #t44 in #t44;
+    core::double* v9 = let final self::Test3* #t46 = t in #t46.{self::Test3::==}(null) ?{core::double*} null : let final core::double #t47 = #t46.{self::Test3::prop}.{core::double::+}(self::getDouble()) in let final void #t48 = #t46.{self::Test3::prop} = #t47 in #t47;
+    core::double* v10 = let final self::Test3* #t49 = t in #t49.{self::Test3::==}(null) ?{core::double*} null : let final core::double #t50 = #t49.{self::Test3::prop}.{core::double::+}(1) in let final void #t51 = #t49.{self::Test3::prop} = #t50 in #t50;
+    core::double* v11 = let final self::Test3* #t52 = t in #t52.{self::Test3::==}(null) ?{core::double*} null : let final core::double* #t53 = #t52.{self::Test3::prop} in let final void #t54 = #t52.{self::Test3::prop} = #t53.{core::double::+}(1) in #t53;
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method getInt() → core::int*
   return 0;
diff --git a/pkg/front_end/testcases/inference/infer_assign_to_property_null_aware_upwards.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/infer_assign_to_property_null_aware_upwards.dart.strong.transformed.expect
index c7353f0..cea3286 100644
--- a/pkg/front_end/testcases/inference/infer_assign_to_property_null_aware_upwards.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/infer_assign_to_property_null_aware_upwards.dart.strong.transformed.expect
@@ -8,12 +8,22 @@
     : super core::Object::•()
     ;
   static method test(self::Test1* t) → void {
-    core::int* v1 = let final self::Test1* #t1 = t in #t1.{core::Object::==}(null) ?{core::int*} null : #t1.{self::Test1::prop} = self::getInt();
-    core::int* v4 = let final self::Test1* #t2 = t in #t2.{core::Object::==}(null) ?{core::int*} null : let final core::int* #t3 = #t2.{self::Test1::prop} in #t3.{core::num::==}(null) ?{core::int*} #t2.{self::Test1::prop} = self::getInt() : #t3;
-    core::int* v7 = let final self::Test1* #t4 = t in #t4.{core::Object::==}(null) ?{core::int*} null : let final core::int* #t5 = #t4.{self::Test1::prop}.{core::num::+}(self::getInt()) in let final void #t6 = #t4.{self::Test1::prop} = #t5 in #t5;
-    core::int* v10 = let final self::Test1* #t7 = t in #t7.{core::Object::==}(null) ?{core::int*} null : let final core::int* #t8 = #t7.{self::Test1::prop}.{core::num::+}(1) in let final void #t9 = #t7.{self::Test1::prop} = #t8 in #t8;
-    core::int* v11 = let final self::Test1* #t10 = t in #t10.{core::Object::==}(null) ?{core::int*} null : let final core::int* #t11 = #t10.{self::Test1::prop} in let final void #t12 = #t10.{self::Test1::prop} = #t11.{core::num::+}(1) in #t11;
+    core::int* v1 = let final self::Test1* #t1 = t in #t1.{self::Test1::==}(null) ?{core::int*} null : #t1.{self::Test1::prop} = self::getInt();
+    core::int* v4 = let final self::Test1* #t2 = t in #t2.{self::Test1::==}(null) ?{core::int*} null : let final core::int* #t3 = #t2.{self::Test1::prop} in #t3.{core::num::==}(null) ?{core::int*} #t2.{self::Test1::prop} = self::getInt() : #t3;
+    core::int* v7 = let final self::Test1* #t4 = t in #t4.{self::Test1::==}(null) ?{core::int*} null : let final core::int* #t5 = #t4.{self::Test1::prop}.{core::num::+}(self::getInt()) in let final void #t6 = #t4.{self::Test1::prop} = #t5 in #t5;
+    core::int* v10 = let final self::Test1* #t7 = t in #t7.{self::Test1::==}(null) ?{core::int*} null : let final core::int* #t8 = #t7.{self::Test1::prop}.{core::num::+}(1) in let final void #t9 = #t7.{self::Test1::prop} = #t8 in #t8;
+    core::int* v11 = let final self::Test1* #t10 = t in #t10.{self::Test1::==}(null) ?{core::int*} null : let final core::int* #t11 = #t10.{self::Test1::prop} in let final void #t12 = #t10.{self::Test1::prop} = #t11.{core::num::+}(1) in #t11;
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Test2 extends core::Object {
   field core::num* prop = null;
@@ -21,18 +31,28 @@
     : super core::Object::•()
     ;
   static method test(self::Test2* t) → void {
-    core::int* v1 = let final self::Test2* #t13 = t in #t13.{core::Object::==}(null) ?{core::int*} null : #t13.{self::Test2::prop} = self::getInt();
-    core::num* v2 = let final self::Test2* #t14 = t in #t14.{core::Object::==}(null) ?{core::num*} null : #t14.{self::Test2::prop} = self::getNum();
-    core::double* v3 = let final self::Test2* #t15 = t in #t15.{core::Object::==}(null) ?{core::double*} null : #t15.{self::Test2::prop} = self::getDouble();
-    core::num* v4 = let final self::Test2* #t16 = t in #t16.{core::Object::==}(null) ?{core::num*} null : let final core::num* #t17 = #t16.{self::Test2::prop} in #t17.{core::num::==}(null) ?{core::num*} #t16.{self::Test2::prop} = self::getInt() : #t17;
-    core::num* v5 = let final self::Test2* #t18 = t in #t18.{core::Object::==}(null) ?{core::num*} null : let final core::num* #t19 = #t18.{self::Test2::prop} in #t19.{core::num::==}(null) ?{core::num*} #t18.{self::Test2::prop} = self::getNum() : #t19;
-    core::num* v6 = let final self::Test2* #t20 = t in #t20.{core::Object::==}(null) ?{core::num*} null : let final core::num* #t21 = #t20.{self::Test2::prop} in #t21.{core::num::==}(null) ?{core::num*} #t20.{self::Test2::prop} = self::getDouble() : #t21;
-    core::num* v7 = let final self::Test2* #t22 = t in #t22.{core::Object::==}(null) ?{core::num*} null : let final core::num* #t23 = #t22.{self::Test2::prop}.{core::num::+}(self::getInt()) in let final void #t24 = #t22.{self::Test2::prop} = #t23 in #t23;
-    core::num* v8 = let final self::Test2* #t25 = t in #t25.{core::Object::==}(null) ?{core::num*} null : let final core::num* #t26 = #t25.{self::Test2::prop}.{core::num::+}(self::getNum()) in let final void #t27 = #t25.{self::Test2::prop} = #t26 in #t26;
-    core::num* v9 = let final self::Test2* #t28 = t in #t28.{core::Object::==}(null) ?{core::num*} null : let final core::num* #t29 = #t28.{self::Test2::prop}.{core::num::+}(self::getDouble()) in let final void #t30 = #t28.{self::Test2::prop} = #t29 in #t29;
-    core::num* v10 = let final self::Test2* #t31 = t in #t31.{core::Object::==}(null) ?{core::num*} null : let final core::num* #t32 = #t31.{self::Test2::prop}.{core::num::+}(1) in let final void #t33 = #t31.{self::Test2::prop} = #t32 in #t32;
-    core::num* v11 = let final self::Test2* #t34 = t in #t34.{core::Object::==}(null) ?{core::num*} null : let final core::num* #t35 = #t34.{self::Test2::prop} in let final void #t36 = #t34.{self::Test2::prop} = #t35.{core::num::+}(1) in #t35;
+    core::int* v1 = let final self::Test2* #t13 = t in #t13.{self::Test2::==}(null) ?{core::int*} null : #t13.{self::Test2::prop} = self::getInt();
+    core::num* v2 = let final self::Test2* #t14 = t in #t14.{self::Test2::==}(null) ?{core::num*} null : #t14.{self::Test2::prop} = self::getNum();
+    core::double* v3 = let final self::Test2* #t15 = t in #t15.{self::Test2::==}(null) ?{core::double*} null : #t15.{self::Test2::prop} = self::getDouble();
+    core::num* v4 = let final self::Test2* #t16 = t in #t16.{self::Test2::==}(null) ?{core::num*} null : let final core::num* #t17 = #t16.{self::Test2::prop} in #t17.{core::num::==}(null) ?{core::num*} #t16.{self::Test2::prop} = self::getInt() : #t17;
+    core::num* v5 = let final self::Test2* #t18 = t in #t18.{self::Test2::==}(null) ?{core::num*} null : let final core::num* #t19 = #t18.{self::Test2::prop} in #t19.{core::num::==}(null) ?{core::num*} #t18.{self::Test2::prop} = self::getNum() : #t19;
+    core::num* v6 = let final self::Test2* #t20 = t in #t20.{self::Test2::==}(null) ?{core::num*} null : let final core::num* #t21 = #t20.{self::Test2::prop} in #t21.{core::num::==}(null) ?{core::num*} #t20.{self::Test2::prop} = self::getDouble() : #t21;
+    core::num* v7 = let final self::Test2* #t22 = t in #t22.{self::Test2::==}(null) ?{core::num*} null : let final core::num #t23 = #t22.{self::Test2::prop}.{core::num::+}(self::getInt()) in let final void #t24 = #t22.{self::Test2::prop} = #t23 in #t23;
+    core::num* v8 = let final self::Test2* #t25 = t in #t25.{self::Test2::==}(null) ?{core::num*} null : let final core::num #t26 = #t25.{self::Test2::prop}.{core::num::+}(self::getNum()) in let final void #t27 = #t25.{self::Test2::prop} = #t26 in #t26;
+    core::num* v9 = let final self::Test2* #t28 = t in #t28.{self::Test2::==}(null) ?{core::num*} null : let final core::num #t29 = #t28.{self::Test2::prop}.{core::num::+}(self::getDouble()) in let final void #t30 = #t28.{self::Test2::prop} = #t29 in #t29;
+    core::num* v10 = let final self::Test2* #t31 = t in #t31.{self::Test2::==}(null) ?{core::num*} null : let final core::num #t32 = #t31.{self::Test2::prop}.{core::num::+}(1) in let final void #t33 = #t31.{self::Test2::prop} = #t32 in #t32;
+    core::num* v11 = let final self::Test2* #t34 = t in #t34.{self::Test2::==}(null) ?{core::num*} null : let final core::num* #t35 = #t34.{self::Test2::prop} in let final void #t36 = #t34.{self::Test2::prop} = #t35.{core::num::+}(1) in #t35;
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Test3 extends core::Object {
   field core::double* prop = null;
@@ -40,14 +60,24 @@
     : super core::Object::•()
     ;
   static method test3(self::Test3* t) → void {
-    core::double* v3 = let final self::Test3* #t37 = t in #t37.{core::Object::==}(null) ?{core::double*} null : #t37.{self::Test3::prop} = self::getDouble();
-    core::double* v6 = let final self::Test3* #t38 = t in #t38.{core::Object::==}(null) ?{core::double*} null : let final core::double* #t39 = #t38.{self::Test3::prop} in #t39.{core::num::==}(null) ?{core::double*} #t38.{self::Test3::prop} = self::getDouble() : #t39;
-    core::double* v7 = let final self::Test3* #t40 = t in #t40.{core::Object::==}(null) ?{core::double*} null : let final core::double* #t41 = #t40.{self::Test3::prop}.{core::double::+}(self::getInt()) in let final void #t42 = #t40.{self::Test3::prop} = #t41 in #t41;
-    core::double* v8 = let final self::Test3* #t43 = t in #t43.{core::Object::==}(null) ?{core::double*} null : let final core::double* #t44 = #t43.{self::Test3::prop}.{core::double::+}(self::getNum()) in let final void #t45 = #t43.{self::Test3::prop} = #t44 in #t44;
-    core::double* v9 = let final self::Test3* #t46 = t in #t46.{core::Object::==}(null) ?{core::double*} null : let final core::double* #t47 = #t46.{self::Test3::prop}.{core::double::+}(self::getDouble()) in let final void #t48 = #t46.{self::Test3::prop} = #t47 in #t47;
-    core::double* v10 = let final self::Test3* #t49 = t in #t49.{core::Object::==}(null) ?{core::double*} null : let final core::double* #t50 = #t49.{self::Test3::prop}.{core::double::+}(1) in let final void #t51 = #t49.{self::Test3::prop} = #t50 in #t50;
-    core::double* v11 = let final self::Test3* #t52 = t in #t52.{core::Object::==}(null) ?{core::double*} null : let final core::double* #t53 = #t52.{self::Test3::prop} in let final void #t54 = #t52.{self::Test3::prop} = #t53.{core::double::+}(1) in #t53;
+    core::double* v3 = let final self::Test3* #t37 = t in #t37.{self::Test3::==}(null) ?{core::double*} null : #t37.{self::Test3::prop} = self::getDouble();
+    core::double* v6 = let final self::Test3* #t38 = t in #t38.{self::Test3::==}(null) ?{core::double*} null : let final core::double* #t39 = #t38.{self::Test3::prop} in #t39.{core::num::==}(null) ?{core::double*} #t38.{self::Test3::prop} = self::getDouble() : #t39;
+    core::double* v7 = let final self::Test3* #t40 = t in #t40.{self::Test3::==}(null) ?{core::double*} null : let final core::double #t41 = #t40.{self::Test3::prop}.{core::double::+}(self::getInt()) in let final void #t42 = #t40.{self::Test3::prop} = #t41 in #t41;
+    core::double* v8 = let final self::Test3* #t43 = t in #t43.{self::Test3::==}(null) ?{core::double*} null : let final core::double #t44 = #t43.{self::Test3::prop}.{core::double::+}(self::getNum()) in let final void #t45 = #t43.{self::Test3::prop} = #t44 in #t44;
+    core::double* v9 = let final self::Test3* #t46 = t in #t46.{self::Test3::==}(null) ?{core::double*} null : let final core::double #t47 = #t46.{self::Test3::prop}.{core::double::+}(self::getDouble()) in let final void #t48 = #t46.{self::Test3::prop} = #t47 in #t47;
+    core::double* v10 = let final self::Test3* #t49 = t in #t49.{self::Test3::==}(null) ?{core::double*} null : let final core::double #t50 = #t49.{self::Test3::prop}.{core::double::+}(1) in let final void #t51 = #t49.{self::Test3::prop} = #t50 in #t50;
+    core::double* v11 = let final self::Test3* #t52 = t in #t52.{self::Test3::==}(null) ?{core::double*} null : let final core::double* #t53 = #t52.{self::Test3::prop} in let final void #t54 = #t52.{self::Test3::prop} = #t53.{core::double::+}(1) in #t53;
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method getInt() → core::int*
   return 0;
diff --git a/pkg/front_end/testcases/inference/infer_assign_to_property_super.dart b/pkg/front_end/testcases/inference/infer_assign_to_property_super.dart
index 306a3c0..8e7eeb3 100644
--- a/pkg/front_end/testcases/inference/infer_assign_to_property_super.dart
+++ b/pkg/front_end/testcases/inference/infer_assign_to_property_super.dart
@@ -27,7 +27,7 @@
     super. /*@target=Base::member*/ member = /*@ typeArgs=B* */ f();
 
     super. /*@target=Base::member*/ /*@target=Base::member*/ member
-        /*@ target=Object::== */ ??= /*@ typeArgs=B* */ f();
+        /*@target=A::==*/ ??= /*@ typeArgs=B* */ f();
 
     super. /*@target=Base::member*/ /*@target=Base::member*/ member
         /*@ target=B::+ */ += /*@ typeArgs=C* */ f();
@@ -49,7 +49,7 @@
 
     var /*@ type=B* */ v2 =
         super. /*@target=Base::member*/ /*@target=Base::member*/ member
-            /*@ target=Object::== */ ??= /*@ typeArgs=B* */ f();
+            /*@target=A::==*/ ??= /*@ typeArgs=B* */ f();
 
     var /*@ type=A* */ v3 =
         super. /*@target=Base::member*/ /*@target=Base::member*/ member
diff --git a/pkg/front_end/testcases/inference/infer_assign_to_property_super.dart.outline.expect b/pkg/front_end/testcases/inference/infer_assign_to_property_super.dart.outline.expect
index 96af9b6..1073f30 100644
--- a/pkg/front_end/testcases/inference/infer_assign_to_property_super.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/infer_assign_to_property_super.dart.outline.expect
@@ -5,6 +5,16 @@
 class A extends core::Object {
   synthetic constructor •() → self::A*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A {
   synthetic constructor •() → self::B*
@@ -26,6 +36,16 @@
   field self::B* member;
   synthetic constructor •() → self::Base*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Test extends self::Base {
   synthetic constructor •() → self::Test*
diff --git a/pkg/front_end/testcases/inference/infer_assign_to_property_super.dart.strong.expect b/pkg/front_end/testcases/inference/infer_assign_to_property_super.dart.strong.expect
index eb317ce..f55419c 100644
--- a/pkg/front_end/testcases/inference/infer_assign_to_property_super.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/infer_assign_to_property_super.dart.strong.expect
@@ -6,6 +6,16 @@
   synthetic constructor •() → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A {
   synthetic constructor •() → self::B*
@@ -30,6 +40,16 @@
   synthetic constructor •() → self::Base*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Test extends self::Base {
   synthetic constructor •() → self::Test*
@@ -37,14 +57,14 @@
     ;
   method test() → void {
     super.{self::Base::member} = self::f<self::B*>();
-    super.{self::Base::member}.{core::Object::==}(null) ?{self::B*} super.{self::Base::member} = self::f<self::B*>() : null;
+    super.{self::Base::member}.{self::A::==}(null) ?{self::B*} super.{self::Base::member} = self::f<self::B*>() : null;
     super.{self::Base::member} = super.{self::Base::member}.{self::B::+}(self::f<self::C*>()) as{TypeError} self::B*;
     super.{self::Base::member} = super.{self::Base::member}.{self::B::*}(self::f<self::B*>());
     super.{self::Base::member} = super.{self::Base::member}.{self::B::&}(self::f<self::A*>());
     super.{self::Base::member} = super.{self::Base::member}.{self::B::-}(1);
     super.{self::Base::member} = super.{self::Base::member}.{self::B::-}(1);
     self::B* v1 = super.{self::Base::member} = self::f<self::B*>();
-    self::B* v2 = let final self::B* #t1 = super.{self::Base::member} in #t1.{core::Object::==}(null) ?{self::B*} super.{self::Base::member} = self::f<self::B*>() : #t1;
+    self::B* v2 = let final self::B* #t1 = super.{self::Base::member} in #t1.{self::A::==}(null) ?{self::B*} super.{self::Base::member} = self::f<self::B*>() : #t1;
     self::A* v3 = super.{self::Base::member} = super.{self::Base::member}.{self::B::+}(self::f<self::C*>()) as{TypeError} self::B*;
     self::B* v4 = super.{self::Base::member} = super.{self::Base::member}.{self::B::*}(self::f<self::B*>());
     self::C* v5 = super.{self::Base::member} = super.{self::Base::member}.{self::B::&}(self::f<self::A*>());
diff --git a/pkg/front_end/testcases/inference/infer_assign_to_property_super.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/infer_assign_to_property_super.dart.strong.transformed.expect
index eb317ce..f55419c 100644
--- a/pkg/front_end/testcases/inference/infer_assign_to_property_super.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/infer_assign_to_property_super.dart.strong.transformed.expect
@@ -6,6 +6,16 @@
   synthetic constructor •() → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A {
   synthetic constructor •() → self::B*
@@ -30,6 +40,16 @@
   synthetic constructor •() → self::Base*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Test extends self::Base {
   synthetic constructor •() → self::Test*
@@ -37,14 +57,14 @@
     ;
   method test() → void {
     super.{self::Base::member} = self::f<self::B*>();
-    super.{self::Base::member}.{core::Object::==}(null) ?{self::B*} super.{self::Base::member} = self::f<self::B*>() : null;
+    super.{self::Base::member}.{self::A::==}(null) ?{self::B*} super.{self::Base::member} = self::f<self::B*>() : null;
     super.{self::Base::member} = super.{self::Base::member}.{self::B::+}(self::f<self::C*>()) as{TypeError} self::B*;
     super.{self::Base::member} = super.{self::Base::member}.{self::B::*}(self::f<self::B*>());
     super.{self::Base::member} = super.{self::Base::member}.{self::B::&}(self::f<self::A*>());
     super.{self::Base::member} = super.{self::Base::member}.{self::B::-}(1);
     super.{self::Base::member} = super.{self::Base::member}.{self::B::-}(1);
     self::B* v1 = super.{self::Base::member} = self::f<self::B*>();
-    self::B* v2 = let final self::B* #t1 = super.{self::Base::member} in #t1.{core::Object::==}(null) ?{self::B*} super.{self::Base::member} = self::f<self::B*>() : #t1;
+    self::B* v2 = let final self::B* #t1 = super.{self::Base::member} in #t1.{self::A::==}(null) ?{self::B*} super.{self::Base::member} = self::f<self::B*>() : #t1;
     self::A* v3 = super.{self::Base::member} = super.{self::Base::member}.{self::B::+}(self::f<self::C*>()) as{TypeError} self::B*;
     self::B* v4 = super.{self::Base::member} = super.{self::Base::member}.{self::B::*}(self::f<self::B*>());
     self::C* v5 = super.{self::Base::member} = super.{self::Base::member}.{self::B::&}(self::f<self::A*>());
diff --git a/pkg/front_end/testcases/inference/infer_assign_to_property_super_upwards.dart.outline.expect b/pkg/front_end/testcases/inference/infer_assign_to_property_super_upwards.dart.outline.expect
index b019841..c71ba60 100644
--- a/pkg/front_end/testcases/inference/infer_assign_to_property_super_upwards.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/infer_assign_to_property_super_upwards.dart.outline.expect
@@ -8,6 +8,16 @@
   field core::double* doubleProp;
   synthetic constructor •() → self::Base*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Test1 extends self::Base {
   synthetic constructor •() → self::Test1*
diff --git a/pkg/front_end/testcases/inference/infer_assign_to_property_super_upwards.dart.strong.expect b/pkg/front_end/testcases/inference/infer_assign_to_property_super_upwards.dart.strong.expect
index 9641f0a..a562991 100644
--- a/pkg/front_end/testcases/inference/infer_assign_to_property_super_upwards.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/infer_assign_to_property_super_upwards.dart.strong.expect
@@ -9,6 +9,16 @@
   synthetic constructor •() → self::Base*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Test1 extends self::Base {
   synthetic constructor •() → self::Test1*
diff --git a/pkg/front_end/testcases/inference/infer_assign_to_property_super_upwards.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/infer_assign_to_property_super_upwards.dart.strong.transformed.expect
index 9641f0a..a562991 100644
--- a/pkg/front_end/testcases/inference/infer_assign_to_property_super_upwards.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/infer_assign_to_property_super_upwards.dart.strong.transformed.expect
@@ -9,6 +9,16 @@
   synthetic constructor •() → self::Base*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Test1 extends self::Base {
   synthetic constructor •() → self::Test1*
diff --git a/pkg/front_end/testcases/inference/infer_assign_to_property_upwards.dart.outline.expect b/pkg/front_end/testcases/inference/infer_assign_to_property_upwards.dart.outline.expect
index 2203088..98f4342 100644
--- a/pkg/front_end/testcases/inference/infer_assign_to_property_upwards.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/infer_assign_to_property_upwards.dart.outline.expect
@@ -8,6 +8,16 @@
     ;
   static method test(self::Test1* t) → void
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Test2 extends core::Object {
   field core::num* prop;
@@ -15,6 +25,16 @@
     ;
   static method test(self::Test2* t) → void
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Test3 extends core::Object {
   field core::double* prop;
@@ -22,6 +42,16 @@
     ;
   static method test3(self::Test3* t) → void
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method getInt() → core::int*
   ;
diff --git a/pkg/front_end/testcases/inference/infer_assign_to_property_upwards.dart.strong.expect b/pkg/front_end/testcases/inference/infer_assign_to_property_upwards.dart.strong.expect
index 6231f02..95d9232 100644
--- a/pkg/front_end/testcases/inference/infer_assign_to_property_upwards.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/infer_assign_to_property_upwards.dart.strong.expect
@@ -14,6 +14,16 @@
     core::int* v10 = let final self::Test1* #t4 = t in #t4.{self::Test1::prop} = #t4.{self::Test1::prop}.{core::num::+}(1);
     core::int* v11 = let final self::Test1* #t5 = t in let final core::int* #t6 = #t5.{self::Test1::prop} in let final core::int* #t7 = #t5.{self::Test1::prop} = #t6.{core::num::+}(1) in #t6;
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Test2 extends core::Object {
   field core::num* prop = null;
@@ -33,6 +43,16 @@
     core::num* v10 = let final self::Test2* #t17 = t in #t17.{self::Test2::prop} = #t17.{self::Test2::prop}.{core::num::+}(1);
     core::num* v11 = let final self::Test2* #t18 = t in let final core::num* #t19 = #t18.{self::Test2::prop} in let final core::num* #t20 = #t18.{self::Test2::prop} = #t19.{core::num::+}(1) in #t19;
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Test3 extends core::Object {
   field core::double* prop = null;
@@ -48,6 +68,16 @@
     core::double* v10 = let final self::Test3* #t26 = t in #t26.{self::Test3::prop} = #t26.{self::Test3::prop}.{core::double::+}(1);
     core::double* v11 = let final self::Test3* #t27 = t in let final core::double* #t28 = #t27.{self::Test3::prop} in let final core::double* #t29 = #t27.{self::Test3::prop} = #t28.{core::double::+}(1) in #t28;
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method getInt() → core::int*
   return 0;
diff --git a/pkg/front_end/testcases/inference/infer_assign_to_property_upwards.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/infer_assign_to_property_upwards.dart.strong.transformed.expect
index 6231f02..95d9232 100644
--- a/pkg/front_end/testcases/inference/infer_assign_to_property_upwards.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/infer_assign_to_property_upwards.dart.strong.transformed.expect
@@ -14,6 +14,16 @@
     core::int* v10 = let final self::Test1* #t4 = t in #t4.{self::Test1::prop} = #t4.{self::Test1::prop}.{core::num::+}(1);
     core::int* v11 = let final self::Test1* #t5 = t in let final core::int* #t6 = #t5.{self::Test1::prop} in let final core::int* #t7 = #t5.{self::Test1::prop} = #t6.{core::num::+}(1) in #t6;
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Test2 extends core::Object {
   field core::num* prop = null;
@@ -33,6 +43,16 @@
     core::num* v10 = let final self::Test2* #t17 = t in #t17.{self::Test2::prop} = #t17.{self::Test2::prop}.{core::num::+}(1);
     core::num* v11 = let final self::Test2* #t18 = t in let final core::num* #t19 = #t18.{self::Test2::prop} in let final core::num* #t20 = #t18.{self::Test2::prop} = #t19.{core::num::+}(1) in #t19;
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Test3 extends core::Object {
   field core::double* prop = null;
@@ -48,6 +68,16 @@
     core::double* v10 = let final self::Test3* #t26 = t in #t26.{self::Test3::prop} = #t26.{self::Test3::prop}.{core::double::+}(1);
     core::double* v11 = let final self::Test3* #t27 = t in let final core::double* #t28 = #t27.{self::Test3::prop} in let final core::double* #t29 = #t27.{self::Test3::prop} = #t28.{core::double::+}(1) in #t28;
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method getInt() → core::int*
   return 0;
diff --git a/pkg/front_end/testcases/inference/infer_assign_to_ref.dart.outline.expect b/pkg/front_end/testcases/inference/infer_assign_to_ref.dart.outline.expect
index 7971d4a..c88bc41 100644
--- a/pkg/front_end/testcases/inference/infer_assign_to_ref.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/infer_assign_to_ref.dart.outline.expect
@@ -6,6 +6,16 @@
   field core::int* f;
   synthetic constructor •() → self::A*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field self::A* a;
 static field core::int* c;
diff --git a/pkg/front_end/testcases/inference/infer_assign_to_ref.dart.strong.expect b/pkg/front_end/testcases/inference/infer_assign_to_ref.dart.strong.expect
index ffe5d5a..e86b901 100644
--- a/pkg/front_end/testcases/inference/infer_assign_to_ref.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/infer_assign_to_ref.dart.strong.expect
@@ -7,6 +7,16 @@
   synthetic constructor •() → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field self::A* a = new self::A::•();
 static field core::int* c = 0;
diff --git a/pkg/front_end/testcases/inference/infer_assign_to_ref.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/infer_assign_to_ref.dart.strong.transformed.expect
index ffe5d5a..e86b901 100644
--- a/pkg/front_end/testcases/inference/infer_assign_to_ref.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/infer_assign_to_ref.dart.strong.transformed.expect
@@ -7,6 +7,16 @@
   synthetic constructor •() → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field self::A* a = new self::A::•();
 static field core::int* c = 0;
diff --git a/pkg/front_end/testcases/inference/infer_assign_to_static.dart b/pkg/front_end/testcases/inference/infer_assign_to_static.dart
index 33bd5fe..9021f82 100644
--- a/pkg/front_end/testcases/inference/infer_assign_to_static.dart
+++ b/pkg/front_end/testcases/inference/infer_assign_to_static.dart
@@ -25,7 +25,7 @@
 void test_topLevelVariable() {
   topLevelVariable = /*@ typeArgs=B* */ f();
 
-  topLevelVariable /*@ target=Object::== */ ??= /*@ typeArgs=B* */ f();
+  topLevelVariable /*@target=A::==*/ ??= /*@ typeArgs=B* */ f();
 
   topLevelVariable /*@ target=B::+ */ += /*@ typeArgs=C* */ f();
 
@@ -40,7 +40,7 @@
   var /*@ type=B* */ v1 = topLevelVariable = /*@ typeArgs=B* */ f();
 
   var /*@ type=B* */ v2 =
-      topLevelVariable /*@ target=Object::== */ ??= /*@ typeArgs=B* */ f();
+      topLevelVariable /*@target=A::==*/ ??= /*@ typeArgs=B* */ f();
 
   var /*@ type=A* */ v3 =
       topLevelVariable /*@ target=B::+ */ += /*@ typeArgs=C* */ f();
@@ -60,7 +60,7 @@
 void test_staticVariable() {
   B.staticVariable = /*@ typeArgs=B* */ f();
 
-  B.staticVariable /*@ target=Object::== */ ??= /*@ typeArgs=B* */ f();
+  B.staticVariable /*@target=A::==*/ ??= /*@ typeArgs=B* */ f();
 
   B.staticVariable /*@ target=B::+ */ += /*@ typeArgs=C* */ f();
 
@@ -75,7 +75,7 @@
   var /*@ type=B* */ v1 = B.staticVariable = /*@ typeArgs=B* */ f();
 
   var /*@ type=B* */ v2 =
-      B.staticVariable /*@ target=Object::== */ ??= /*@ typeArgs=B* */ f();
+      B.staticVariable /*@target=A::==*/ ??= /*@ typeArgs=B* */ f();
 
   var /*@ type=A* */ v3 =
       B.staticVariable /*@ target=B::+ */ += /*@ typeArgs=C* */ f();
diff --git a/pkg/front_end/testcases/inference/infer_assign_to_static.dart.outline.expect b/pkg/front_end/testcases/inference/infer_assign_to_static.dart.outline.expect
index c89d459..d161336 100644
--- a/pkg/front_end/testcases/inference/infer_assign_to_static.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/infer_assign_to_static.dart.outline.expect
@@ -5,6 +5,16 @@
 class A extends core::Object {
   synthetic constructor •() → self::A*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A {
   static field self::B* staticVariable;
diff --git a/pkg/front_end/testcases/inference/infer_assign_to_static.dart.strong.expect b/pkg/front_end/testcases/inference/infer_assign_to_static.dart.strong.expect
index 2c07ffd..9128856 100644
--- a/pkg/front_end/testcases/inference/infer_assign_to_static.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/infer_assign_to_static.dart.strong.expect
@@ -6,6 +6,16 @@
   synthetic constructor •() → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A {
   static field self::B* staticVariable = null;
@@ -31,14 +41,14 @@
   return null;
 static method test_topLevelVariable() → void {
   self::topLevelVariable = self::f<self::B*>();
-  self::topLevelVariable.{core::Object::==}(null) ?{self::B*} self::topLevelVariable = self::f<self::B*>() : null;
+  self::topLevelVariable.{self::A::==}(null) ?{self::B*} self::topLevelVariable = self::f<self::B*>() : null;
   self::topLevelVariable = self::topLevelVariable.{self::B::+}(self::f<self::C*>()) as{TypeError} self::B*;
   self::topLevelVariable = self::topLevelVariable.{self::B::*}(self::f<self::B*>());
   self::topLevelVariable = self::topLevelVariable.{self::B::&}(self::f<self::A*>());
   self::topLevelVariable = self::topLevelVariable.{self::B::-}(1);
   self::topLevelVariable = self::topLevelVariable.{self::B::-}(1);
   self::B* v1 = self::topLevelVariable = self::f<self::B*>();
-  self::B* v2 = let final self::B* #t1 = self::topLevelVariable in #t1.{core::Object::==}(null) ?{self::B*} self::topLevelVariable = self::f<self::B*>() : #t1;
+  self::B* v2 = let final self::B* #t1 = self::topLevelVariable in #t1.{self::A::==}(null) ?{self::B*} self::topLevelVariable = self::f<self::B*>() : #t1;
   self::A* v3 = self::topLevelVariable = self::topLevelVariable.{self::B::+}(self::f<self::C*>()) as{TypeError} self::B*;
   self::B* v4 = self::topLevelVariable = self::topLevelVariable.{self::B::*}(self::f<self::B*>());
   self::C* v5 = self::topLevelVariable = self::topLevelVariable.{self::B::&}(self::f<self::A*>());
@@ -47,14 +57,14 @@
 }
 static method test_staticVariable() → void {
   self::B::staticVariable = self::f<self::B*>();
-  self::B::staticVariable.{core::Object::==}(null) ?{self::B*} self::B::staticVariable = self::f<self::B*>() : null;
+  self::B::staticVariable.{self::A::==}(null) ?{self::B*} self::B::staticVariable = self::f<self::B*>() : null;
   self::B::staticVariable = self::B::staticVariable.{self::B::+}(self::f<self::C*>()) as{TypeError} self::B*;
   self::B::staticVariable = self::B::staticVariable.{self::B::*}(self::f<self::B*>());
   self::B::staticVariable = self::B::staticVariable.{self::B::&}(self::f<self::A*>());
   self::B::staticVariable = self::B::staticVariable.{self::B::-}(1);
   self::B::staticVariable = self::B::staticVariable.{self::B::-}(1);
   self::B* v1 = self::B::staticVariable = self::f<self::B*>();
-  self::B* v2 = let final self::B* #t4 = self::B::staticVariable in #t4.{core::Object::==}(null) ?{self::B*} self::B::staticVariable = self::f<self::B*>() : #t4;
+  self::B* v2 = let final self::B* #t4 = self::B::staticVariable in #t4.{self::A::==}(null) ?{self::B*} self::B::staticVariable = self::f<self::B*>() : #t4;
   self::A* v3 = self::B::staticVariable = self::B::staticVariable.{self::B::+}(self::f<self::C*>()) as{TypeError} self::B*;
   self::B* v4 = self::B::staticVariable = self::B::staticVariable.{self::B::*}(self::f<self::B*>());
   self::C* v5 = self::B::staticVariable = self::B::staticVariable.{self::B::&}(self::f<self::A*>());
diff --git a/pkg/front_end/testcases/inference/infer_assign_to_static.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/infer_assign_to_static.dart.strong.transformed.expect
index 2c07ffd..9128856 100644
--- a/pkg/front_end/testcases/inference/infer_assign_to_static.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/infer_assign_to_static.dart.strong.transformed.expect
@@ -6,6 +6,16 @@
   synthetic constructor •() → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A {
   static field self::B* staticVariable = null;
@@ -31,14 +41,14 @@
   return null;
 static method test_topLevelVariable() → void {
   self::topLevelVariable = self::f<self::B*>();
-  self::topLevelVariable.{core::Object::==}(null) ?{self::B*} self::topLevelVariable = self::f<self::B*>() : null;
+  self::topLevelVariable.{self::A::==}(null) ?{self::B*} self::topLevelVariable = self::f<self::B*>() : null;
   self::topLevelVariable = self::topLevelVariable.{self::B::+}(self::f<self::C*>()) as{TypeError} self::B*;
   self::topLevelVariable = self::topLevelVariable.{self::B::*}(self::f<self::B*>());
   self::topLevelVariable = self::topLevelVariable.{self::B::&}(self::f<self::A*>());
   self::topLevelVariable = self::topLevelVariable.{self::B::-}(1);
   self::topLevelVariable = self::topLevelVariable.{self::B::-}(1);
   self::B* v1 = self::topLevelVariable = self::f<self::B*>();
-  self::B* v2 = let final self::B* #t1 = self::topLevelVariable in #t1.{core::Object::==}(null) ?{self::B*} self::topLevelVariable = self::f<self::B*>() : #t1;
+  self::B* v2 = let final self::B* #t1 = self::topLevelVariable in #t1.{self::A::==}(null) ?{self::B*} self::topLevelVariable = self::f<self::B*>() : #t1;
   self::A* v3 = self::topLevelVariable = self::topLevelVariable.{self::B::+}(self::f<self::C*>()) as{TypeError} self::B*;
   self::B* v4 = self::topLevelVariable = self::topLevelVariable.{self::B::*}(self::f<self::B*>());
   self::C* v5 = self::topLevelVariable = self::topLevelVariable.{self::B::&}(self::f<self::A*>());
@@ -47,14 +57,14 @@
 }
 static method test_staticVariable() → void {
   self::B::staticVariable = self::f<self::B*>();
-  self::B::staticVariable.{core::Object::==}(null) ?{self::B*} self::B::staticVariable = self::f<self::B*>() : null;
+  self::B::staticVariable.{self::A::==}(null) ?{self::B*} self::B::staticVariable = self::f<self::B*>() : null;
   self::B::staticVariable = self::B::staticVariable.{self::B::+}(self::f<self::C*>()) as{TypeError} self::B*;
   self::B::staticVariable = self::B::staticVariable.{self::B::*}(self::f<self::B*>());
   self::B::staticVariable = self::B::staticVariable.{self::B::&}(self::f<self::A*>());
   self::B::staticVariable = self::B::staticVariable.{self::B::-}(1);
   self::B::staticVariable = self::B::staticVariable.{self::B::-}(1);
   self::B* v1 = self::B::staticVariable = self::f<self::B*>();
-  self::B* v2 = let final self::B* #t4 = self::B::staticVariable in #t4.{core::Object::==}(null) ?{self::B*} self::B::staticVariable = self::f<self::B*>() : #t4;
+  self::B* v2 = let final self::B* #t4 = self::B::staticVariable in #t4.{self::A::==}(null) ?{self::B*} self::B::staticVariable = self::f<self::B*>() : #t4;
   self::A* v3 = self::B::staticVariable = self::B::staticVariable.{self::B::+}(self::f<self::C*>()) as{TypeError} self::B*;
   self::B* v4 = self::B::staticVariable = self::B::staticVariable.{self::B::*}(self::f<self::B*>());
   self::C* v5 = self::B::staticVariable = self::B::staticVariable.{self::B::&}(self::f<self::A*>());
diff --git a/pkg/front_end/testcases/inference/infer_binary_custom.dart.outline.expect b/pkg/front_end/testcases/inference/infer_binary_custom.dart.outline.expect
index f9000f4..874385c 100644
--- a/pkg/front_end/testcases/inference/infer_binary_custom.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/infer_binary_custom.dart.outline.expect
@@ -9,6 +9,16 @@
     ;
   operator -(dynamic other) → core::double*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field core::int* v_add;
 static field core::double* v_minus;
diff --git a/pkg/front_end/testcases/inference/infer_binary_custom.dart.strong.expect b/pkg/front_end/testcases/inference/infer_binary_custom.dart.strong.expect
index 2aa8013..6a5bea9 100644
--- a/pkg/front_end/testcases/inference/infer_binary_custom.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/infer_binary_custom.dart.strong.expect
@@ -10,6 +10,16 @@
     return 1;
   operator -(dynamic other) → core::double*
     return 2.0;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field core::int* v_add = new self::A::•().{self::A::+}("foo");
 static field core::double* v_minus = new self::A::•().{self::A::-}("bar");
diff --git a/pkg/front_end/testcases/inference/infer_binary_custom.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/infer_binary_custom.dart.strong.transformed.expect
index 2aa8013..6a5bea9 100644
--- a/pkg/front_end/testcases/inference/infer_binary_custom.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/infer_binary_custom.dart.strong.transformed.expect
@@ -10,6 +10,16 @@
     return 1;
   operator -(dynamic other) → core::double*
     return 2.0;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field core::int* v_add = new self::A::•().{self::A::+}("foo");
 static field core::double* v_minus = new self::A::•().{self::A::-}("bar");
diff --git a/pkg/front_end/testcases/inference/infer_correctly_on_multiple_variables_declared_together.dart.outline.expect b/pkg/front_end/testcases/inference/infer_correctly_on_multiple_variables_declared_together.dart.outline.expect
index dfad962..14ab0c5 100644
--- a/pkg/front_end/testcases/inference/infer_correctly_on_multiple_variables_declared_together.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/infer_correctly_on_multiple_variables_declared_together.dart.outline.expect
@@ -8,6 +8,16 @@
   field core::String* z;
   synthetic constructor •() → self::A*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends core::Object implements self::A {
   field dynamic x;
@@ -16,6 +26,16 @@
   field core::int* w;
   synthetic constructor •() → self::B*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method foo() → dynamic
   ;
diff --git a/pkg/front_end/testcases/inference/infer_correctly_on_multiple_variables_declared_together.dart.strong.expect b/pkg/front_end/testcases/inference/infer_correctly_on_multiple_variables_declared_together.dart.strong.expect
index 93b3edc..ffa41ac 100644
--- a/pkg/front_end/testcases/inference/infer_correctly_on_multiple_variables_declared_together.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/infer_correctly_on_multiple_variables_declared_together.dart.strong.expect
@@ -24,6 +24,16 @@
   synthetic constructor •() → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends core::Object implements self::A {
   field dynamic x = 2;
@@ -33,6 +43,16 @@
   synthetic constructor •() → self::B*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method foo() → dynamic {
   core::String* s;
diff --git a/pkg/front_end/testcases/inference/infer_correctly_on_multiple_variables_declared_together.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/infer_correctly_on_multiple_variables_declared_together.dart.strong.transformed.expect
index 93b3edc..ffa41ac 100644
--- a/pkg/front_end/testcases/inference/infer_correctly_on_multiple_variables_declared_together.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/infer_correctly_on_multiple_variables_declared_together.dart.strong.transformed.expect
@@ -24,6 +24,16 @@
   synthetic constructor •() → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends core::Object implements self::A {
   field dynamic x = 2;
@@ -33,6 +43,16 @@
   synthetic constructor •() → self::B*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method foo() → dynamic {
   core::String* s;
diff --git a/pkg/front_end/testcases/inference/infer_field_from_later_inferred_field.dart.outline.expect b/pkg/front_end/testcases/inference/infer_field_from_later_inferred_field.dart.outline.expect
index 4f999da..dcd7c51 100644
--- a/pkg/front_end/testcases/inference/infer_field_from_later_inferred_field.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/infer_field_from_later_inferred_field.dart.outline.expect
@@ -6,11 +6,31 @@
   field core::int* x;
   synthetic constructor •() → self::A*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends core::Object {
   field core::int* x;
   synthetic constructor •() → self::B*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/inference/infer_field_from_later_inferred_field.dart.strong.expect b/pkg/front_end/testcases/inference/infer_field_from_later_inferred_field.dart.strong.expect
index bb1e1ca..f07ec43 100644
--- a/pkg/front_end/testcases/inference/infer_field_from_later_inferred_field.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/infer_field_from_later_inferred_field.dart.strong.expect
@@ -7,11 +7,31 @@
   synthetic constructor •() → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends core::Object {
   field core::int* x = 0;
   synthetic constructor •() → self::B*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/infer_field_from_later_inferred_field.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/infer_field_from_later_inferred_field.dart.strong.transformed.expect
index bb1e1ca..f07ec43 100644
--- a/pkg/front_end/testcases/inference/infer_field_from_later_inferred_field.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/infer_field_from_later_inferred_field.dart.strong.transformed.expect
@@ -7,11 +7,31 @@
   synthetic constructor •() → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends core::Object {
   field core::int* x = 0;
   synthetic constructor •() → self::B*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/infer_field_from_later_inferred_getter.dart.outline.expect b/pkg/front_end/testcases/inference/infer_field_from_later_inferred_getter.dart.outline.expect
index 767f51f..9b6d93e 100644
--- a/pkg/front_end/testcases/inference/infer_field_from_later_inferred_getter.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/infer_field_from_later_inferred_getter.dart.outline.expect
@@ -6,16 +6,46 @@
   field core::int* x;
   synthetic constructor •() → self::A*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class B extends core::Object implements self::C {
   synthetic constructor •() → self::B*
     ;
   abstract get x() → core::int*;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class C extends core::Object {
   synthetic constructor •() → self::C*
     ;
   abstract get x() → core::int*;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/inference/infer_field_from_later_inferred_getter.dart.strong.expect b/pkg/front_end/testcases/inference/infer_field_from_later_inferred_getter.dart.strong.expect
index 98f6bb4..1f65112 100644
--- a/pkg/front_end/testcases/inference/infer_field_from_later_inferred_getter.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/infer_field_from_later_inferred_getter.dart.strong.expect
@@ -7,17 +7,47 @@
   synthetic constructor •() → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class B extends core::Object implements self::C {
   synthetic constructor •() → self::B*
     : super core::Object::•()
     ;
   abstract get x() → core::int*;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class C extends core::Object {
   synthetic constructor •() → self::C*
     : super core::Object::•()
     ;
   abstract get x() → core::int*;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/infer_field_from_later_inferred_getter.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/infer_field_from_later_inferred_getter.dart.strong.transformed.expect
index 98f6bb4..1f65112 100644
--- a/pkg/front_end/testcases/inference/infer_field_from_later_inferred_getter.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/infer_field_from_later_inferred_getter.dart.strong.transformed.expect
@@ -7,17 +7,47 @@
   synthetic constructor •() → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class B extends core::Object implements self::C {
   synthetic constructor •() → self::B*
     : super core::Object::•()
     ;
   abstract get x() → core::int*;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class C extends core::Object {
   synthetic constructor •() → self::C*
     : super core::Object::•()
     ;
   abstract get x() → core::int*;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/infer_field_from_later_inferred_setter.dart.outline.expect b/pkg/front_end/testcases/inference/infer_field_from_later_inferred_setter.dart.outline.expect
index 0ed58bc..c719cd9 100644
--- a/pkg/front_end/testcases/inference/infer_field_from_later_inferred_setter.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/infer_field_from_later_inferred_setter.dart.outline.expect
@@ -6,16 +6,46 @@
   field core::int* x;
   synthetic constructor •() → self::A*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class B extends core::Object implements self::C {
   synthetic constructor •() → self::B*
     ;
   abstract set x(core::int* value) → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class C extends core::Object {
   synthetic constructor •() → self::C*
     ;
   abstract set x(core::int* value) → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/inference/infer_field_from_later_inferred_setter.dart.strong.expect b/pkg/front_end/testcases/inference/infer_field_from_later_inferred_setter.dart.strong.expect
index f0ddfd0..13b728e 100644
--- a/pkg/front_end/testcases/inference/infer_field_from_later_inferred_setter.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/infer_field_from_later_inferred_setter.dart.strong.expect
@@ -7,17 +7,47 @@
   synthetic constructor •() → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class B extends core::Object implements self::C {
   synthetic constructor •() → self::B*
     : super core::Object::•()
     ;
   abstract set x(core::int* value) → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class C extends core::Object {
   synthetic constructor •() → self::C*
     : super core::Object::•()
     ;
   abstract set x(core::int* value) → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/infer_field_from_later_inferred_setter.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/infer_field_from_later_inferred_setter.dart.strong.transformed.expect
index f0ddfd0..13b728e 100644
--- a/pkg/front_end/testcases/inference/infer_field_from_later_inferred_setter.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/infer_field_from_later_inferred_setter.dart.strong.transformed.expect
@@ -7,17 +7,47 @@
   synthetic constructor •() → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class B extends core::Object implements self::C {
   synthetic constructor •() → self::B*
     : super core::Object::•()
     ;
   abstract set x(core::int* value) → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class C extends core::Object {
   synthetic constructor •() → self::C*
     : super core::Object::•()
     ;
   abstract set x(core::int* value) → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/infer_field_override_multiple.dart.outline.expect b/pkg/front_end/testcases/inference/infer_field_override_multiple.dart.outline.expect
index 483a945..a698cd5 100644
--- a/pkg/front_end/testcases/inference/infer_field_override_multiple.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/infer_field_override_multiple.dart.outline.expect
@@ -42,21 +42,61 @@
   synthetic constructor •() → self::A*
     ;
   abstract get x() → core::int*;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class B extends core::Object {
   synthetic constructor •() → self::B*
     ;
   abstract get x() → core::int*;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class C extends core::Object {
   synthetic constructor •() → self::C*
     ;
   abstract get x() → core::num*;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class D extends core::Object {
   synthetic constructor •() → self::D*
     ;
   abstract get x() → core::double*;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class E extends self::A implements self::B {
   field core::int* x;
diff --git a/pkg/front_end/testcases/inference/infer_field_override_multiple.dart.strong.expect b/pkg/front_end/testcases/inference/infer_field_override_multiple.dart.strong.expect
index 141243b..1cd7802 100644
--- a/pkg/front_end/testcases/inference/infer_field_override_multiple.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/infer_field_override_multiple.dart.strong.expect
@@ -43,24 +43,64 @@
     : super core::Object::•()
     ;
   abstract get x() → core::int*;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class B extends core::Object {
   synthetic constructor •() → self::B*
     : super core::Object::•()
     ;
   abstract get x() → core::int*;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class C extends core::Object {
   synthetic constructor •() → self::C*
     : super core::Object::•()
     ;
   abstract get x() → core::num*;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class D extends core::Object {
   synthetic constructor •() → self::D*
     : super core::Object::•()
     ;
   abstract get x() → core::double*;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class E extends self::A implements self::B {
   field core::int* x = null;
diff --git a/pkg/front_end/testcases/inference/infer_field_override_multiple.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/infer_field_override_multiple.dart.strong.transformed.expect
index 141243b..1cd7802 100644
--- a/pkg/front_end/testcases/inference/infer_field_override_multiple.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/infer_field_override_multiple.dart.strong.transformed.expect
@@ -43,24 +43,64 @@
     : super core::Object::•()
     ;
   abstract get x() → core::int*;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class B extends core::Object {
   synthetic constructor •() → self::B*
     : super core::Object::•()
     ;
   abstract get x() → core::int*;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class C extends core::Object {
   synthetic constructor •() → self::C*
     : super core::Object::•()
     ;
   abstract get x() → core::num*;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class D extends core::Object {
   synthetic constructor •() → self::D*
     : super core::Object::•()
     ;
   abstract get x() → core::double*;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class E extends self::A implements self::B {
   field core::int* x = null;
diff --git a/pkg/front_end/testcases/inference/infer_field_override_of_override.dart.outline.expect b/pkg/front_end/testcases/inference/infer_field_override_of_override.dart.outline.expect
index 5768045..fea14c8 100644
--- a/pkg/front_end/testcases/inference/infer_field_override_of_override.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/infer_field_override_of_override.dart.outline.expect
@@ -6,6 +6,16 @@
   synthetic constructor •() → self::A*
     ;
   abstract get x() → core::num*;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class B extends self::A {
   synthetic constructor •() → self::B*
diff --git a/pkg/front_end/testcases/inference/infer_field_override_of_override.dart.strong.expect b/pkg/front_end/testcases/inference/infer_field_override_of_override.dart.strong.expect
index f531a5f..2a70dac 100644
--- a/pkg/front_end/testcases/inference/infer_field_override_of_override.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/infer_field_override_of_override.dart.strong.expect
@@ -7,6 +7,16 @@
     : super core::Object::•()
     ;
   abstract get x() → core::num*;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class B extends self::A {
   synthetic constructor •() → self::B*
diff --git a/pkg/front_end/testcases/inference/infer_field_override_of_override.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/infer_field_override_of_override.dart.strong.transformed.expect
index f531a5f..2a70dac 100644
--- a/pkg/front_end/testcases/inference/infer_field_override_of_override.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/infer_field_override_of_override.dart.strong.transformed.expect
@@ -7,6 +7,16 @@
     : super core::Object::•()
     ;
   abstract get x() → core::num*;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class B extends self::A {
   synthetic constructor •() → self::B*
diff --git a/pkg/front_end/testcases/inference/infer_field_override_with_substitution.dart.outline.expect b/pkg/front_end/testcases/inference/infer_field_override_with_substitution.dart.outline.expect
index 7bacf95..42bf32d 100644
--- a/pkg/front_end/testcases/inference/infer_field_override_with_substitution.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/infer_field_override_with_substitution.dart.outline.expect
@@ -8,6 +8,16 @@
     ;
   abstract get x() → core::List<self::A::T*>*;
   abstract set y(generic-covariant-impl core::List<self::A::T*>* value) → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A<core::int*> {
   field core::List<core::int*>* x;
diff --git a/pkg/front_end/testcases/inference/infer_field_override_with_substitution.dart.strong.expect b/pkg/front_end/testcases/inference/infer_field_override_with_substitution.dart.strong.expect
index 96281e0..d44f89d 100644
--- a/pkg/front_end/testcases/inference/infer_field_override_with_substitution.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/infer_field_override_with_substitution.dart.strong.expect
@@ -9,6 +9,16 @@
     ;
   abstract get x() → core::List<self::A::T*>*;
   abstract set y(generic-covariant-impl core::List<self::A::T*>* value) → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A<core::int*> {
   field core::List<core::int*>* x = null;
diff --git a/pkg/front_end/testcases/inference/infer_field_override_with_substitution.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/infer_field_override_with_substitution.dart.strong.transformed.expect
index 96281e0..d44f89d 100644
--- a/pkg/front_end/testcases/inference/infer_field_override_with_substitution.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/infer_field_override_with_substitution.dart.strong.transformed.expect
@@ -9,6 +9,16 @@
     ;
   abstract get x() → core::List<self::A::T*>*;
   abstract set y(generic-covariant-impl core::List<self::A::T*>* value) → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A<core::int*> {
   field core::List<core::int*>* x = null;
diff --git a/pkg/front_end/testcases/inference/infer_field_overrides_getter.dart.outline.expect b/pkg/front_end/testcases/inference/infer_field_overrides_getter.dart.outline.expect
index aa99310..ffd36b0 100644
--- a/pkg/front_end/testcases/inference/infer_field_overrides_getter.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/infer_field_overrides_getter.dart.outline.expect
@@ -6,12 +6,32 @@
   synthetic constructor •() → self::A*
     ;
   abstract get x() → core::int*;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends core::Object {
   synthetic constructor •() → self::B*
     ;
   get x() → core::int*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C extends self::A {
   field core::int* x;
@@ -27,16 +47,46 @@
   field core::int* x;
   synthetic constructor •() → self::E*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class F extends core::Object implements self::B {
   field core::int* x;
   synthetic constructor •() → self::F*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class _G&Object&B = core::Object with self::B /*isAnonymousMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::_G&Object&B*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class G extends self::_G&Object&B {
   field core::int* x;
diff --git a/pkg/front_end/testcases/inference/infer_field_overrides_getter.dart.strong.expect b/pkg/front_end/testcases/inference/infer_field_overrides_getter.dart.strong.expect
index f4d57d7..64bb93e 100644
--- a/pkg/front_end/testcases/inference/infer_field_overrides_getter.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/infer_field_overrides_getter.dart.strong.expect
@@ -7,6 +7,16 @@
     : super core::Object::•()
     ;
   abstract get x() → core::int*;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends core::Object {
   synthetic constructor •() → self::B*
@@ -14,6 +24,16 @@
     ;
   get x() → core::int*
     return 0;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C extends self::A {
   field core::int* x = null;
@@ -32,17 +52,47 @@
   synthetic constructor •() → self::E*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class F extends core::Object implements self::B {
   field core::int* x = null;
   synthetic constructor •() → self::F*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class _G&Object&B = core::Object with self::B /*isAnonymousMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::_G&Object&B*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class G extends self::_G&Object&B {
   field core::int* x = null;
diff --git a/pkg/front_end/testcases/inference/infer_field_overrides_getter.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/infer_field_overrides_getter.dart.strong.transformed.expect
index 34832b2..70c88f5 100644
--- a/pkg/front_end/testcases/inference/infer_field_overrides_getter.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/infer_field_overrides_getter.dart.strong.transformed.expect
@@ -7,6 +7,16 @@
     : super core::Object::•()
     ;
   abstract get x() → core::int*;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends core::Object {
   synthetic constructor •() → self::B*
@@ -14,6 +24,16 @@
     ;
   get x() → core::int*
     return 0;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C extends self::A {
   field core::int* x = null;
@@ -32,17 +52,47 @@
   synthetic constructor •() → self::E*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class F extends core::Object implements self::B {
   field core::int* x = null;
   synthetic constructor •() → self::F*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class _G&Object&B extends core::Object implements self::B /*isAnonymousMixin,isEliminatedMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::_G&Object&B*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
   get x() → core::int*
     return 0;
 }
diff --git a/pkg/front_end/testcases/inference/infer_field_overrides_setter.dart.outline.expect b/pkg/front_end/testcases/inference/infer_field_overrides_setter.dart.outline.expect
index a74fb0d..eda27e4 100644
--- a/pkg/front_end/testcases/inference/infer_field_overrides_setter.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/infer_field_overrides_setter.dart.outline.expect
@@ -6,12 +6,32 @@
   synthetic constructor •() → self::A*
     ;
   abstract set x(core::int* value) → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends core::Object {
   synthetic constructor •() → self::B*
     ;
   set x(core::int* value) → void
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C extends self::A {
   field core::int* x;
@@ -27,16 +47,46 @@
   field core::int* x;
   synthetic constructor •() → self::E*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class F extends core::Object implements self::B {
   field core::int* x;
   synthetic constructor •() → self::F*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class _G&Object&B = core::Object with self::B /*isAnonymousMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::_G&Object&B*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class G extends self::_G&Object&B {
   field core::int* x;
diff --git a/pkg/front_end/testcases/inference/infer_field_overrides_setter.dart.strong.expect b/pkg/front_end/testcases/inference/infer_field_overrides_setter.dart.strong.expect
index b74a039..b82c10b 100644
--- a/pkg/front_end/testcases/inference/infer_field_overrides_setter.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/infer_field_overrides_setter.dart.strong.expect
@@ -7,12 +7,32 @@
     : super core::Object::•()
     ;
   abstract set x(core::int* value) → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends core::Object {
   synthetic constructor •() → self::B*
     : super core::Object::•()
     ;
   set x(core::int* value) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C extends self::A {
   field core::int* x = null;
@@ -31,17 +51,47 @@
   synthetic constructor •() → self::E*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class F extends core::Object implements self::B {
   field core::int* x = null;
   synthetic constructor •() → self::F*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class _G&Object&B = core::Object with self::B /*isAnonymousMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::_G&Object&B*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class G extends self::_G&Object&B {
   field core::int* x = null;
diff --git a/pkg/front_end/testcases/inference/infer_field_overrides_setter.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/infer_field_overrides_setter.dart.strong.transformed.expect
index e34d9aa..4cf094a 100644
--- a/pkg/front_end/testcases/inference/infer_field_overrides_setter.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/infer_field_overrides_setter.dart.strong.transformed.expect
@@ -7,12 +7,32 @@
     : super core::Object::•()
     ;
   abstract set x(core::int* value) → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends core::Object {
   synthetic constructor •() → self::B*
     : super core::Object::•()
     ;
   set x(core::int* value) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C extends self::A {
   field core::int* x = null;
@@ -31,17 +51,47 @@
   synthetic constructor •() → self::E*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class F extends core::Object implements self::B {
   field core::int* x = null;
   synthetic constructor •() → self::F*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class _G&Object&B extends core::Object implements self::B /*isAnonymousMixin,isEliminatedMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::_G&Object&B*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
   set x(core::int* value) → void {}
 }
 class G extends self::_G&Object&B {
diff --git a/pkg/front_end/testcases/inference/infer_field_static.dart.outline.expect b/pkg/front_end/testcases/inference/infer_field_static.dart.outline.expect
index 9fd64c9..b9c47b5 100644
--- a/pkg/front_end/testcases/inference/infer_field_static.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/infer_field_static.dart.outline.expect
@@ -7,6 +7,16 @@
     ;
   static get x() → core::int*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A {
   static field dynamic x;
diff --git a/pkg/front_end/testcases/inference/infer_field_static.dart.strong.expect b/pkg/front_end/testcases/inference/infer_field_static.dart.strong.expect
index 85fb413..3cbcb62 100644
--- a/pkg/front_end/testcases/inference/infer_field_static.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/infer_field_static.dart.strong.expect
@@ -8,6 +8,16 @@
     ;
   static get x() → core::int*
     return 0;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A {
   static field dynamic x = self::f();
diff --git a/pkg/front_end/testcases/inference/infer_field_static.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/infer_field_static.dart.strong.transformed.expect
index 85fb413..3cbcb62 100644
--- a/pkg/front_end/testcases/inference/infer_field_static.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/infer_field_static.dart.strong.transformed.expect
@@ -8,6 +8,16 @@
     ;
   static get x() → core::int*
     return 0;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A {
   static field dynamic x = self::f();
diff --git a/pkg/front_end/testcases/inference/infer_final_field_getter_and_setter.dart.outline.expect b/pkg/front_end/testcases/inference/infer_final_field_getter_and_setter.dart.outline.expect
index 915eb44..76ecc6f 100644
--- a/pkg/front_end/testcases/inference/infer_final_field_getter_and_setter.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/infer_final_field_getter_and_setter.dart.outline.expect
@@ -8,6 +8,16 @@
   abstract get x() → core::int*;
   set x(core::double* value) → void
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A {
   final field core::int* x;
diff --git a/pkg/front_end/testcases/inference/infer_final_field_getter_and_setter.dart.strong.expect b/pkg/front_end/testcases/inference/infer_final_field_getter_and_setter.dart.strong.expect
index af85fef..e64e442 100644
--- a/pkg/front_end/testcases/inference/infer_final_field_getter_and_setter.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/infer_final_field_getter_and_setter.dart.strong.expect
@@ -8,6 +8,16 @@
     ;
   abstract get x() → core::int*;
   set x(core::double* value) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A {
   final field core::int* x;
diff --git a/pkg/front_end/testcases/inference/infer_final_field_getter_and_setter.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/infer_final_field_getter_and_setter.dart.strong.transformed.expect
index af85fef..e64e442 100644
--- a/pkg/front_end/testcases/inference/infer_final_field_getter_and_setter.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/infer_final_field_getter_and_setter.dart.strong.transformed.expect
@@ -8,6 +8,16 @@
     ;
   abstract get x() → core::int*;
   set x(core::double* value) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A {
   final field core::int* x;
diff --git a/pkg/front_end/testcases/inference/infer_final_field_getter_only.dart.outline.expect b/pkg/front_end/testcases/inference/infer_final_field_getter_only.dart.outline.expect
index b79c1b0..36347e9 100644
--- a/pkg/front_end/testcases/inference/infer_final_field_getter_only.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/infer_final_field_getter_only.dart.outline.expect
@@ -6,6 +6,16 @@
   synthetic constructor •() → self::A*
     ;
   abstract get x() → core::int*;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A {
   final field core::int* x;
diff --git a/pkg/front_end/testcases/inference/infer_final_field_getter_only.dart.strong.expect b/pkg/front_end/testcases/inference/infer_final_field_getter_only.dart.strong.expect
index d0875bb..2e47b7e 100644
--- a/pkg/front_end/testcases/inference/infer_final_field_getter_only.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/infer_final_field_getter_only.dart.strong.expect
@@ -7,6 +7,16 @@
     : super core::Object::•()
     ;
   abstract get x() → core::int*;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A {
   final field core::int* x;
diff --git a/pkg/front_end/testcases/inference/infer_final_field_getter_only.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/infer_final_field_getter_only.dart.strong.transformed.expect
index d0875bb..2e47b7e 100644
--- a/pkg/front_end/testcases/inference/infer_final_field_getter_only.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/infer_final_field_getter_only.dart.strong.transformed.expect
@@ -7,6 +7,16 @@
     : super core::Object::•()
     ;
   abstract get x() → core::int*;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A {
   final field core::int* x;
diff --git a/pkg/front_end/testcases/inference/infer_final_field_setter_only.dart.outline.expect b/pkg/front_end/testcases/inference/infer_final_field_setter_only.dart.outline.expect
index 9e5258a..f01b604 100644
--- a/pkg/front_end/testcases/inference/infer_final_field_setter_only.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/infer_final_field_setter_only.dart.outline.expect
@@ -7,6 +7,16 @@
     ;
   set x(core::double* value) → void
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A {
   final field core::double* x;
diff --git a/pkg/front_end/testcases/inference/infer_final_field_setter_only.dart.strong.expect b/pkg/front_end/testcases/inference/infer_final_field_setter_only.dart.strong.expect
index 17c9bd8..ada45f8 100644
--- a/pkg/front_end/testcases/inference/infer_final_field_setter_only.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/infer_final_field_setter_only.dart.strong.expect
@@ -7,6 +7,16 @@
     : super core::Object::•()
     ;
   set x(core::double* value) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A {
   final field core::double* x;
diff --git a/pkg/front_end/testcases/inference/infer_final_field_setter_only.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/infer_final_field_setter_only.dart.strong.transformed.expect
index 17c9bd8..ada45f8 100644
--- a/pkg/front_end/testcases/inference/infer_final_field_setter_only.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/infer_final_field_setter_only.dart.strong.transformed.expect
@@ -7,6 +7,16 @@
     : super core::Object::•()
     ;
   set x(core::double* value) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A {
   final field core::double* x;
diff --git a/pkg/front_end/testcases/inference/infer_from_complex_expressions_if_outer_most_value_is_precise.dart.outline.expect b/pkg/front_end/testcases/inference/infer_from_complex_expressions_if_outer_most_value_is_precise.dart.outline.expect
index 1a5ccea..d10429b 100644
--- a/pkg/front_end/testcases/inference/infer_from_complex_expressions_if_outer_most_value_is_precise.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/infer_from_complex_expressions_if_outer_most_value_is_precise.dart.outline.expect
@@ -19,6 +19,16 @@
     ;
   operator +(dynamic other) → self::B*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A {
   constructor •(dynamic ignore) → self::B*
diff --git a/pkg/front_end/testcases/inference/infer_from_complex_expressions_if_outer_most_value_is_precise.dart.strong.expect b/pkg/front_end/testcases/inference/infer_from_complex_expressions_if_outer_most_value_is_precise.dart.strong.expect
index 3376c0d..e77093c 100644
--- a/pkg/front_end/testcases/inference/infer_from_complex_expressions_if_outer_most_value_is_precise.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/infer_from_complex_expressions_if_outer_most_value_is_precise.dart.strong.expect
@@ -84,6 +84,16 @@
     ;
   operator +(dynamic other) → self::B*
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A {
   constructor •(dynamic ignore) → self::B*
diff --git a/pkg/front_end/testcases/inference/infer_from_complex_expressions_if_outer_most_value_is_precise.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/infer_from_complex_expressions_if_outer_most_value_is_precise.dart.strong.transformed.expect
index 3376c0d..e77093c 100644
--- a/pkg/front_end/testcases/inference/infer_from_complex_expressions_if_outer_most_value_is_precise.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/infer_from_complex_expressions_if_outer_most_value_is_precise.dart.strong.transformed.expect
@@ -84,6 +84,16 @@
     ;
   operator +(dynamic other) → self::B*
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A {
   constructor •(dynamic ignore) → self::B*
diff --git a/pkg/front_end/testcases/inference/infer_from_rhs_only_if_it_wont_conflict_with_overridden_fields.dart.outline.expect b/pkg/front_end/testcases/inference/infer_from_rhs_only_if_it_wont_conflict_with_overridden_fields.dart.outline.expect
index c17611a..5ee75d4 100644
--- a/pkg/front_end/testcases/inference/infer_from_rhs_only_if_it_wont_conflict_with_overridden_fields.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/infer_from_rhs_only_if_it_wont_conflict_with_overridden_fields.dart.outline.expect
@@ -6,11 +6,31 @@
   field dynamic x;
   synthetic constructor •() → self::A*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends core::Object implements self::A {
   field dynamic x;
   synthetic constructor •() → self::B*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method foo() → dynamic
   ;
diff --git a/pkg/front_end/testcases/inference/infer_from_rhs_only_if_it_wont_conflict_with_overridden_fields.dart.strong.expect b/pkg/front_end/testcases/inference/infer_from_rhs_only_if_it_wont_conflict_with_overridden_fields.dart.strong.expect
index 0b8b396..6005ff3 100644
--- a/pkg/front_end/testcases/inference/infer_from_rhs_only_if_it_wont_conflict_with_overridden_fields.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/infer_from_rhs_only_if_it_wont_conflict_with_overridden_fields.dart.strong.expect
@@ -7,12 +7,32 @@
   synthetic constructor •() → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends core::Object implements self::A {
   field dynamic x = 2;
   synthetic constructor •() → self::B*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method foo() → dynamic {
   core::String* y = new self::B::•().{self::B::x} as{TypeError,ForDynamic} core::String*;
diff --git a/pkg/front_end/testcases/inference/infer_from_rhs_only_if_it_wont_conflict_with_overridden_fields.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/infer_from_rhs_only_if_it_wont_conflict_with_overridden_fields.dart.strong.transformed.expect
index 0b8b396..6005ff3 100644
--- a/pkg/front_end/testcases/inference/infer_from_rhs_only_if_it_wont_conflict_with_overridden_fields.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/infer_from_rhs_only_if_it_wont_conflict_with_overridden_fields.dart.strong.transformed.expect
@@ -7,12 +7,32 @@
   synthetic constructor •() → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends core::Object implements self::A {
   field dynamic x = 2;
   synthetic constructor •() → self::B*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method foo() → dynamic {
   core::String* y = new self::B::•().{self::B::x} as{TypeError,ForDynamic} core::String*;
diff --git a/pkg/front_end/testcases/inference/infer_from_rhs_only_if_it_wont_conflict_with_overridden_fields2.dart.outline.expect b/pkg/front_end/testcases/inference/infer_from_rhs_only_if_it_wont_conflict_with_overridden_fields2.dart.outline.expect
index 8b9dd44..dacf5a9 100644
--- a/pkg/front_end/testcases/inference/infer_from_rhs_only_if_it_wont_conflict_with_overridden_fields2.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/infer_from_rhs_only_if_it_wont_conflict_with_overridden_fields2.dart.outline.expect
@@ -6,11 +6,31 @@
   final field dynamic x;
   synthetic constructor •() → self::A*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends core::Object implements self::A {
   final field dynamic x;
   synthetic constructor •() → self::B*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method foo() → dynamic
   ;
diff --git a/pkg/front_end/testcases/inference/infer_from_rhs_only_if_it_wont_conflict_with_overridden_fields2.dart.strong.expect b/pkg/front_end/testcases/inference/infer_from_rhs_only_if_it_wont_conflict_with_overridden_fields2.dart.strong.expect
index 3a5f33d..5625ad1 100644
--- a/pkg/front_end/testcases/inference/infer_from_rhs_only_if_it_wont_conflict_with_overridden_fields2.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/infer_from_rhs_only_if_it_wont_conflict_with_overridden_fields2.dart.strong.expect
@@ -7,12 +7,32 @@
   synthetic constructor •() → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends core::Object implements self::A {
   final field dynamic x = 2;
   synthetic constructor •() → self::B*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method foo() → dynamic {
   core::String* y = new self::B::•().{self::B::x} as{TypeError,ForDynamic} core::String*;
diff --git a/pkg/front_end/testcases/inference/infer_from_rhs_only_if_it_wont_conflict_with_overridden_fields2.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/infer_from_rhs_only_if_it_wont_conflict_with_overridden_fields2.dart.strong.transformed.expect
index 3a5f33d..5625ad1 100644
--- a/pkg/front_end/testcases/inference/infer_from_rhs_only_if_it_wont_conflict_with_overridden_fields2.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/infer_from_rhs_only_if_it_wont_conflict_with_overridden_fields2.dart.strong.transformed.expect
@@ -7,12 +7,32 @@
   synthetic constructor •() → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends core::Object implements self::A {
   final field dynamic x = 2;
   synthetic constructor •() → self::B*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method foo() → dynamic {
   core::String* y = new self::B::•().{self::B::x} as{TypeError,ForDynamic} core::String*;
diff --git a/pkg/front_end/testcases/inference/infer_from_variables_in_cycle_libs_when_flag_is_on.dart.outline.expect b/pkg/front_end/testcases/inference/infer_from_variables_in_cycle_libs_when_flag_is_on.dart.outline.expect
index 6a7760a..c5d0ab0 100644
--- a/pkg/front_end/testcases/inference/infer_from_variables_in_cycle_libs_when_flag_is_on.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/infer_from_variables_in_cycle_libs_when_flag_is_on.dart.outline.expect
@@ -30,6 +30,16 @@
   static field core::int* y;
   synthetic constructor •() → self3::B*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method test1() → dynamic
   ;
@@ -46,6 +56,16 @@
   static field core::int* x;
   synthetic constructor •() → self4::A*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/inference/infer_from_variables_in_cycle_libs_when_flag_is_on.dart.strong.expect b/pkg/front_end/testcases/inference/infer_from_variables_in_cycle_libs_when_flag_is_on.dart.strong.expect
index 152d2d6..d407712 100644
--- a/pkg/front_end/testcases/inference/infer_from_variables_in_cycle_libs_when_flag_is_on.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/infer_from_variables_in_cycle_libs_when_flag_is_on.dart.strong.expect
@@ -34,6 +34,16 @@
   synthetic constructor •() → self2::B*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method test1() → dynamic {
   core::int* t = 3;
@@ -53,5 +63,15 @@
   synthetic constructor •() → inf2::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/infer_from_variables_in_cycle_libs_when_flag_is_on.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/infer_from_variables_in_cycle_libs_when_flag_is_on.dart.strong.transformed.expect
index 152d2d6..d407712 100644
--- a/pkg/front_end/testcases/inference/infer_from_variables_in_cycle_libs_when_flag_is_on.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/infer_from_variables_in_cycle_libs_when_flag_is_on.dart.strong.transformed.expect
@@ -34,6 +34,16 @@
   synthetic constructor •() → self2::B*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method test1() → dynamic {
   core::int* t = 3;
@@ -53,5 +63,15 @@
   synthetic constructor •() → inf2::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/infer_from_variables_in_cycle_libs_when_flag_is_on2.dart.outline.expect b/pkg/front_end/testcases/inference/infer_from_variables_in_cycle_libs_when_flag_is_on2.dart.outline.expect
index e70d202..383b23f 100644
--- a/pkg/front_end/testcases/inference/infer_from_variables_in_cycle_libs_when_flag_is_on2.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/infer_from_variables_in_cycle_libs_when_flag_is_on2.dart.outline.expect
@@ -8,6 +8,16 @@
   static field core::int* y;
   synthetic constructor •() → self::B*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method test1() → dynamic
   ;
@@ -24,6 +34,16 @@
   static field core::int* x;
   synthetic constructor •() → self2::A*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/inference/infer_from_variables_in_cycle_libs_when_flag_is_on2.dart.strong.expect b/pkg/front_end/testcases/inference/infer_from_variables_in_cycle_libs_when_flag_is_on2.dart.strong.expect
index 3880d6f..17cabae 100644
--- a/pkg/front_end/testcases/inference/infer_from_variables_in_cycle_libs_when_flag_is_on2.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/infer_from_variables_in_cycle_libs_when_flag_is_on2.dart.strong.expect
@@ -10,6 +10,16 @@
   synthetic constructor •() → self::B*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method test1() → dynamic {
   core::int* t = 3;
@@ -29,5 +39,15 @@
   synthetic constructor •() → inf::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/infer_from_variables_in_cycle_libs_when_flag_is_on2.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/infer_from_variables_in_cycle_libs_when_flag_is_on2.dart.strong.transformed.expect
index 3880d6f..17cabae 100644
--- a/pkg/front_end/testcases/inference/infer_from_variables_in_cycle_libs_when_flag_is_on2.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/infer_from_variables_in_cycle_libs_when_flag_is_on2.dart.strong.transformed.expect
@@ -10,6 +10,16 @@
   synthetic constructor •() → self::B*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method test1() → dynamic {
   core::int* t = 3;
@@ -29,5 +39,15 @@
   synthetic constructor •() → inf::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/infer_from_variables_in_cycle_libs_when_flag_is_on2_a.dart.outline.expect b/pkg/front_end/testcases/inference/infer_from_variables_in_cycle_libs_when_flag_is_on2_a.dart.outline.expect
index 6cdbef6..4494c94 100644
--- a/pkg/front_end/testcases/inference/infer_from_variables_in_cycle_libs_when_flag_is_on2_a.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/infer_from_variables_in_cycle_libs_when_flag_is_on2_a.dart.outline.expect
@@ -8,6 +8,16 @@
   static field core::int* x;
   synthetic constructor •() → self::A*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
@@ -22,6 +32,16 @@
   static field core::int* y;
   synthetic constructor •() → self2::B*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method test1() → dynamic
   ;
diff --git a/pkg/front_end/testcases/inference/infer_from_variables_in_cycle_libs_when_flag_is_on2_a.dart.strong.expect b/pkg/front_end/testcases/inference/infer_from_variables_in_cycle_libs_when_flag_is_on2_a.dart.strong.expect
index a2aba38..8e4ca91 100644
--- a/pkg/front_end/testcases/inference/infer_from_variables_in_cycle_libs_when_flag_is_on2_a.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/infer_from_variables_in_cycle_libs_when_flag_is_on2_a.dart.strong.expect
@@ -9,6 +9,16 @@
   synthetic constructor •() → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
 
@@ -24,6 +34,16 @@
   synthetic constructor •() → self2::B*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method test1() → dynamic {
   core::int* t = 3;
diff --git a/pkg/front_end/testcases/inference/infer_from_variables_in_cycle_libs_when_flag_is_on2_a.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/infer_from_variables_in_cycle_libs_when_flag_is_on2_a.dart.strong.transformed.expect
index a2aba38..8e4ca91 100644
--- a/pkg/front_end/testcases/inference/infer_from_variables_in_cycle_libs_when_flag_is_on2_a.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/infer_from_variables_in_cycle_libs_when_flag_is_on2_a.dart.strong.transformed.expect
@@ -9,6 +9,16 @@
   synthetic constructor •() → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
 
@@ -24,6 +34,16 @@
   synthetic constructor •() → self2::B*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method test1() → dynamic {
   core::int* t = 3;
diff --git a/pkg/front_end/testcases/inference/infer_from_variables_in_cycle_libs_when_flag_is_on_a.dart.outline.expect b/pkg/front_end/testcases/inference/infer_from_variables_in_cycle_libs_when_flag_is_on_a.dart.outline.expect
index 7a1dac1..a379566 100644
--- a/pkg/front_end/testcases/inference/infer_from_variables_in_cycle_libs_when_flag_is_on_a.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/infer_from_variables_in_cycle_libs_when_flag_is_on_a.dart.outline.expect
@@ -18,6 +18,16 @@
   static field core::int* y;
   synthetic constructor •() → self2::B*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method test1() → dynamic
   ;
@@ -34,6 +44,16 @@
   static field core::int* x;
   synthetic constructor •() → self3::A*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/inference/infer_from_variables_in_cycle_libs_when_flag_is_on_a.dart.strong.expect b/pkg/front_end/testcases/inference/infer_from_variables_in_cycle_libs_when_flag_is_on_a.dart.strong.expect
index 562b75c..46f94cc 100644
--- a/pkg/front_end/testcases/inference/infer_from_variables_in_cycle_libs_when_flag_is_on_a.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/infer_from_variables_in_cycle_libs_when_flag_is_on_a.dart.strong.expect
@@ -19,6 +19,16 @@
   synthetic constructor •() → self2::B*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method test1() → dynamic {
   core::int* t = 3;
@@ -38,5 +48,15 @@
   synthetic constructor •() → inf::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/infer_from_variables_in_cycle_libs_when_flag_is_on_a.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/infer_from_variables_in_cycle_libs_when_flag_is_on_a.dart.strong.transformed.expect
index 562b75c..46f94cc 100644
--- a/pkg/front_end/testcases/inference/infer_from_variables_in_cycle_libs_when_flag_is_on_a.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/infer_from_variables_in_cycle_libs_when_flag_is_on_a.dart.strong.transformed.expect
@@ -19,6 +19,16 @@
   synthetic constructor •() → self2::B*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method test1() → dynamic {
   core::int* t = 3;
@@ -38,5 +48,15 @@
   synthetic constructor •() → inf::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/infer_from_variables_in_non_cycle_imports_with_flag2.dart.outline.expect b/pkg/front_end/testcases/inference/infer_from_variables_in_non_cycle_imports_with_flag2.dart.outline.expect
index 07b69ed..1560411 100644
--- a/pkg/front_end/testcases/inference/infer_from_variables_in_non_cycle_imports_with_flag2.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/infer_from_variables_in_non_cycle_imports_with_flag2.dart.outline.expect
@@ -8,6 +8,16 @@
   static field core::int* y;
   synthetic constructor •() → self::B*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method test1() → dynamic
   ;
@@ -22,6 +32,16 @@
   static field core::int* x;
   synthetic constructor •() → self2::A*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/inference/infer_from_variables_in_non_cycle_imports_with_flag2.dart.strong.expect b/pkg/front_end/testcases/inference/infer_from_variables_in_non_cycle_imports_with_flag2.dart.strong.expect
index adb045f..38c5b08 100644
--- a/pkg/front_end/testcases/inference/infer_from_variables_in_non_cycle_imports_with_flag2.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/infer_from_variables_in_non_cycle_imports_with_flag2.dart.strong.expect
@@ -21,6 +21,16 @@
   synthetic constructor •() → self::B*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method test1() → dynamic {
   inf::A::x = let final<BottomType> #t1 = invalid-expression "pkg/front_end/testcases/inference/infer_from_variables_in_non_cycle_imports_with_flag2.dart:15:38: Error: A value of type 'String' can't be assigned to a variable of type 'int'.
@@ -41,5 +51,15 @@
   synthetic constructor •() → inf::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/infer_from_variables_in_non_cycle_imports_with_flag2.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/infer_from_variables_in_non_cycle_imports_with_flag2.dart.strong.transformed.expect
index adb045f..38c5b08 100644
--- a/pkg/front_end/testcases/inference/infer_from_variables_in_non_cycle_imports_with_flag2.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/infer_from_variables_in_non_cycle_imports_with_flag2.dart.strong.transformed.expect
@@ -21,6 +21,16 @@
   synthetic constructor •() → self::B*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method test1() → dynamic {
   inf::A::x = let final<BottomType> #t1 = invalid-expression "pkg/front_end/testcases/inference/infer_from_variables_in_non_cycle_imports_with_flag2.dart:15:38: Error: A value of type 'String' can't be assigned to a variable of type 'int'.
@@ -41,5 +51,15 @@
   synthetic constructor •() → inf::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/infer_from_variables_in_non_cycle_imports_with_flag2_a.dart.outline.expect b/pkg/front_end/testcases/inference/infer_from_variables_in_non_cycle_imports_with_flag2_a.dart.outline.expect
index 9aa0236..3065ed8 100644
--- a/pkg/front_end/testcases/inference/infer_from_variables_in_non_cycle_imports_with_flag2_a.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/infer_from_variables_in_non_cycle_imports_with_flag2_a.dart.outline.expect
@@ -6,6 +6,16 @@
   static field core::int* x;
   synthetic constructor •() → self::A*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/inference/infer_from_variables_in_non_cycle_imports_with_flag2_a.dart.strong.expect b/pkg/front_end/testcases/inference/infer_from_variables_in_non_cycle_imports_with_flag2_a.dart.strong.expect
index dbef2a0..b91404b 100644
--- a/pkg/front_end/testcases/inference/infer_from_variables_in_non_cycle_imports_with_flag2_a.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/infer_from_variables_in_non_cycle_imports_with_flag2_a.dart.strong.expect
@@ -7,5 +7,15 @@
   synthetic constructor •() → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/infer_from_variables_in_non_cycle_imports_with_flag2_a.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/infer_from_variables_in_non_cycle_imports_with_flag2_a.dart.strong.transformed.expect
index dbef2a0..b91404b 100644
--- a/pkg/front_end/testcases/inference/infer_from_variables_in_non_cycle_imports_with_flag2_a.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/infer_from_variables_in_non_cycle_imports_with_flag2_a.dart.strong.transformed.expect
@@ -7,5 +7,15 @@
   synthetic constructor •() → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/infer_generic_field_types.dart.outline.expect b/pkg/front_end/testcases/inference/infer_generic_field_types.dart.outline.expect
index 039ea05..2ac52db 100644
--- a/pkg/front_end/testcases/inference/infer_generic_field_types.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/infer_generic_field_types.dart.outline.expect
@@ -6,18 +6,48 @@
   generic-covariant-impl field self::A::X* field;
   synthetic constructor •() → self::A<self::A::X*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class B<Y extends core::Object* = dynamic> extends core::Object implements self::A<self::B::Y*> {
   synthetic constructor •() → self::B<self::B::Y*>*
     ;
   abstract get field() → self::B::Y*;
   abstract set field(generic-covariant-impl self::B::Y* value) → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class C extends core::Object implements self::A<core::int*> {
   synthetic constructor •() → self::C*
     ;
   abstract get field() → core::int*;
   abstract set field(generic-covariant-impl core::int* value) → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/inference/infer_generic_field_types.dart.strong.expect b/pkg/front_end/testcases/inference/infer_generic_field_types.dart.strong.expect
index 3f9ec81..be51267 100644
--- a/pkg/front_end/testcases/inference/infer_generic_field_types.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/infer_generic_field_types.dart.strong.expect
@@ -7,6 +7,16 @@
   synthetic constructor •() → self::A<self::A::X*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class B<Y extends core::Object* = dynamic> extends core::Object implements self::A<self::B::Y*> {
   synthetic constructor •() → self::B<self::B::Y*>*
@@ -14,6 +24,16 @@
     ;
   abstract get field() → self::B::Y*;
   abstract set field(generic-covariant-impl self::B::Y* value) → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class C extends core::Object implements self::A<core::int*> {
   synthetic constructor •() → self::C*
@@ -21,5 +41,15 @@
     ;
   abstract get field() → core::int*;
   abstract set field(generic-covariant-impl core::int* value) → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/infer_generic_field_types.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/infer_generic_field_types.dart.strong.transformed.expect
index 3f9ec81..be51267 100644
--- a/pkg/front_end/testcases/inference/infer_generic_field_types.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/infer_generic_field_types.dart.strong.transformed.expect
@@ -7,6 +7,16 @@
   synthetic constructor •() → self::A<self::A::X*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class B<Y extends core::Object* = dynamic> extends core::Object implements self::A<self::B::Y*> {
   synthetic constructor •() → self::B<self::B::Y*>*
@@ -14,6 +24,16 @@
     ;
   abstract get field() → self::B::Y*;
   abstract set field(generic-covariant-impl self::B::Y* value) → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class C extends core::Object implements self::A<core::int*> {
   synthetic constructor •() → self::C*
@@ -21,5 +41,15 @@
     ;
   abstract get field() → core::int*;
   abstract set field(generic-covariant-impl core::int* value) → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/infer_generic_method_type_named.dart.outline.expect b/pkg/front_end/testcases/inference/infer_generic_method_type_named.dart.outline.expect
index dc27164..7633af1 100644
--- a/pkg/front_end/testcases/inference/infer_generic_method_type_named.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/infer_generic_method_type_named.dart.outline.expect
@@ -7,6 +7,16 @@
     ;
   method m<T extends core::Object* = dynamic>(core::int* a, {core::String* b, self::C::m::T* c}) → self::C::m::T*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/inference/infer_generic_method_type_named.dart.strong.expect b/pkg/front_end/testcases/inference/infer_generic_method_type_named.dart.strong.expect
index 0f2c452..a00db87 100644
--- a/pkg/front_end/testcases/inference/infer_generic_method_type_named.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/infer_generic_method_type_named.dart.strong.expect
@@ -8,6 +8,16 @@
     ;
   method m<T extends core::Object* = dynamic>(core::int* a, {core::String* b = #C1, self::C::m::T* c = #C1}) → self::C::m::T*
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   core::double* y = new self::C::•().{self::C::m}<core::double*>(1, b: "bbb", c: 2.0);
diff --git a/pkg/front_end/testcases/inference/infer_generic_method_type_named.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/infer_generic_method_type_named.dart.strong.transformed.expect
index 0f2c452..a00db87 100644
--- a/pkg/front_end/testcases/inference/infer_generic_method_type_named.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/infer_generic_method_type_named.dart.strong.transformed.expect
@@ -8,6 +8,16 @@
     ;
   method m<T extends core::Object* = dynamic>(core::int* a, {core::String* b = #C1, self::C::m::T* c = #C1}) → self::C::m::T*
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   core::double* y = new self::C::•().{self::C::m}<core::double*>(1, b: "bbb", c: 2.0);
diff --git a/pkg/front_end/testcases/inference/infer_generic_method_type_positional.dart.outline.expect b/pkg/front_end/testcases/inference/infer_generic_method_type_positional.dart.outline.expect
index fab9845..25e97fb 100644
--- a/pkg/front_end/testcases/inference/infer_generic_method_type_positional.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/infer_generic_method_type_positional.dart.outline.expect
@@ -7,6 +7,16 @@
     ;
   method m<T extends core::Object* = dynamic>(core::int* a, [self::C::m::T* b]) → self::C::m::T*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/inference/infer_generic_method_type_positional.dart.strong.expect b/pkg/front_end/testcases/inference/infer_generic_method_type_positional.dart.strong.expect
index 97cc530..a9b7f94 100644
--- a/pkg/front_end/testcases/inference/infer_generic_method_type_positional.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/infer_generic_method_type_positional.dart.strong.expect
@@ -8,6 +8,16 @@
     ;
   method m<T extends core::Object* = dynamic>(core::int* a, [self::C::m::T* b = #C1]) → self::C::m::T*
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   core::double* y = new self::C::•().{self::C::m}<core::double*>(1, 2.0);
diff --git a/pkg/front_end/testcases/inference/infer_generic_method_type_positional.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/infer_generic_method_type_positional.dart.strong.transformed.expect
index 97cc530..a9b7f94 100644
--- a/pkg/front_end/testcases/inference/infer_generic_method_type_positional.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/infer_generic_method_type_positional.dart.strong.transformed.expect
@@ -8,6 +8,16 @@
     ;
   method m<T extends core::Object* = dynamic>(core::int* a, [self::C::m::T* b = #C1]) → self::C::m::T*
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   core::double* y = new self::C::•().{self::C::m}<core::double*>(1, 2.0);
diff --git a/pkg/front_end/testcases/inference/infer_generic_method_type_positional2.dart.outline.expect b/pkg/front_end/testcases/inference/infer_generic_method_type_positional2.dart.outline.expect
index da0aacf..79b4047 100644
--- a/pkg/front_end/testcases/inference/infer_generic_method_type_positional2.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/infer_generic_method_type_positional2.dart.outline.expect
@@ -7,6 +7,16 @@
     ;
   method m<T extends core::Object* = dynamic>(core::int* a, [core::String* b, self::C::m::T* c]) → self::C::m::T*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/inference/infer_generic_method_type_positional2.dart.strong.expect b/pkg/front_end/testcases/inference/infer_generic_method_type_positional2.dart.strong.expect
index 27515e2..7264106 100644
--- a/pkg/front_end/testcases/inference/infer_generic_method_type_positional2.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/infer_generic_method_type_positional2.dart.strong.expect
@@ -8,6 +8,16 @@
     ;
   method m<T extends core::Object* = dynamic>(core::int* a, [core::String* b = #C1, self::C::m::T* c = #C1]) → self::C::m::T*
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   core::double* y = new self::C::•().{self::C::m}<core::double*>(1, "bbb", 2.0);
diff --git a/pkg/front_end/testcases/inference/infer_generic_method_type_positional2.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/infer_generic_method_type_positional2.dart.strong.transformed.expect
index 27515e2..7264106 100644
--- a/pkg/front_end/testcases/inference/infer_generic_method_type_positional2.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/infer_generic_method_type_positional2.dart.strong.transformed.expect
@@ -8,6 +8,16 @@
     ;
   method m<T extends core::Object* = dynamic>(core::int* a, [core::String* b = #C1, self::C::m::T* c = #C1]) → self::C::m::T*
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   core::double* y = new self::C::•().{self::C::m}<core::double*>(1, "bbb", 2.0);
diff --git a/pkg/front_end/testcases/inference/infer_generic_method_type_required.dart.outline.expect b/pkg/front_end/testcases/inference/infer_generic_method_type_required.dart.outline.expect
index 2798d5a..c0568a4 100644
--- a/pkg/front_end/testcases/inference/infer_generic_method_type_required.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/infer_generic_method_type_required.dart.outline.expect
@@ -7,6 +7,16 @@
     ;
   method m<T extends core::Object* = dynamic>(self::C::m::T* x) → self::C::m::T*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/inference/infer_generic_method_type_required.dart.strong.expect b/pkg/front_end/testcases/inference/infer_generic_method_type_required.dart.strong.expect
index 10569dc..ac71c44 100644
--- a/pkg/front_end/testcases/inference/infer_generic_method_type_required.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/infer_generic_method_type_required.dart.strong.expect
@@ -8,6 +8,16 @@
     ;
   method m<T extends core::Object* = dynamic>(self::C::m::T* x) → self::C::m::T*
     return x;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   core::int* y = new self::C::•().{self::C::m}<core::int*>(42);
diff --git a/pkg/front_end/testcases/inference/infer_generic_method_type_required.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/infer_generic_method_type_required.dart.strong.transformed.expect
index 10569dc..ac71c44 100644
--- a/pkg/front_end/testcases/inference/infer_generic_method_type_required.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/infer_generic_method_type_required.dart.strong.transformed.expect
@@ -8,6 +8,16 @@
     ;
   method m<T extends core::Object* = dynamic>(self::C::m::T* x) → self::C::m::T*
     return x;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   core::int* y = new self::C::•().{self::C::m}<core::int*>(42);
diff --git a/pkg/front_end/testcases/inference/infer_getter_cross_to_setter.dart.outline.expect b/pkg/front_end/testcases/inference/infer_getter_cross_to_setter.dart.outline.expect
index 598bf6a..2606488 100644
--- a/pkg/front_end/testcases/inference/infer_getter_cross_to_setter.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/infer_getter_cross_to_setter.dart.outline.expect
@@ -6,6 +6,16 @@
   synthetic constructor •() → self::A*
     ;
   abstract set x(core::double* value) → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class B extends self::A {
   synthetic constructor •() → self::B*
diff --git a/pkg/front_end/testcases/inference/infer_getter_cross_to_setter.dart.strong.expect b/pkg/front_end/testcases/inference/infer_getter_cross_to_setter.dart.strong.expect
index 20911c3..06a6830 100644
--- a/pkg/front_end/testcases/inference/infer_getter_cross_to_setter.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/infer_getter_cross_to_setter.dart.strong.expect
@@ -7,6 +7,16 @@
     : super core::Object::•()
     ;
   abstract set x(core::double* value) → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class B extends self::A {
   synthetic constructor •() → self::B*
diff --git a/pkg/front_end/testcases/inference/infer_getter_cross_to_setter.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/infer_getter_cross_to_setter.dart.strong.transformed.expect
index 20911c3..06a6830 100644
--- a/pkg/front_end/testcases/inference/infer_getter_cross_to_setter.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/infer_getter_cross_to_setter.dart.strong.transformed.expect
@@ -7,6 +7,16 @@
     : super core::Object::•()
     ;
   abstract set x(core::double* value) → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class B extends self::A {
   synthetic constructor •() → self::B*
diff --git a/pkg/front_end/testcases/inference/infer_getter_from_later_inferred_getter.dart.outline.expect b/pkg/front_end/testcases/inference/infer_getter_from_later_inferred_getter.dart.outline.expect
index 51dfc60..77ecef8 100644
--- a/pkg/front_end/testcases/inference/infer_getter_from_later_inferred_getter.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/infer_getter_from_later_inferred_getter.dart.outline.expect
@@ -7,16 +7,46 @@
     ;
   get x() → core::int*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class B extends core::Object implements self::C {
   synthetic constructor •() → self::B*
     ;
   abstract get x() → core::int*;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class C extends core::Object {
   synthetic constructor •() → self::C*
     ;
   abstract get x() → core::int*;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method f() → dynamic
   ;
diff --git a/pkg/front_end/testcases/inference/infer_getter_from_later_inferred_getter.dart.strong.expect b/pkg/front_end/testcases/inference/infer_getter_from_later_inferred_getter.dart.strong.expect
index 1611ea4..f516db9 100644
--- a/pkg/front_end/testcases/inference/infer_getter_from_later_inferred_getter.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/infer_getter_from_later_inferred_getter.dart.strong.expect
@@ -8,18 +8,48 @@
     ;
   get x() → core::int*
     return self::f() as{TypeError,ForDynamic} core::int*;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class B extends core::Object implements self::C {
   synthetic constructor •() → self::B*
     : super core::Object::•()
     ;
   abstract get x() → core::int*;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class C extends core::Object {
   synthetic constructor •() → self::C*
     : super core::Object::•()
     ;
   abstract get x() → core::int*;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method f() → dynamic
   return null;
diff --git a/pkg/front_end/testcases/inference/infer_getter_from_later_inferred_getter.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/infer_getter_from_later_inferred_getter.dart.strong.transformed.expect
index 1611ea4..f516db9 100644
--- a/pkg/front_end/testcases/inference/infer_getter_from_later_inferred_getter.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/infer_getter_from_later_inferred_getter.dart.strong.transformed.expect
@@ -8,18 +8,48 @@
     ;
   get x() → core::int*
     return self::f() as{TypeError,ForDynamic} core::int*;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class B extends core::Object implements self::C {
   synthetic constructor •() → self::B*
     : super core::Object::•()
     ;
   abstract get x() → core::int*;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class C extends core::Object {
   synthetic constructor •() → self::C*
     : super core::Object::•()
     ;
   abstract get x() → core::int*;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method f() → dynamic
   return null;
diff --git a/pkg/front_end/testcases/inference/infer_list_literal_nested_in_map_literal.dart.outline.expect b/pkg/front_end/testcases/inference/infer_list_literal_nested_in_map_literal.dart.outline.expect
index 1421f70..283a262 100644
--- a/pkg/front_end/testcases/inference/infer_list_literal_nested_in_map_literal.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/infer_list_literal_nested_in_map_literal.dart.outline.expect
@@ -5,6 +5,16 @@
 class Resource extends core::Object {
   synthetic constructor •() → self::Resource*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Folder extends self::Resource {
   synthetic constructor •() → self::Folder*
@@ -13,6 +23,16 @@
 class Foo<T extends core::Object* = dynamic> extends core::Object {
   constructor •(self::Foo::T* t) → self::Foo<self::Foo::T*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method getResource(core::String* str) → self::Resource*
   ;
diff --git a/pkg/front_end/testcases/inference/infer_list_literal_nested_in_map_literal.dart.strong.expect b/pkg/front_end/testcases/inference/infer_list_literal_nested_in_map_literal.dart.strong.expect
index cb98aba..5bc5966 100644
--- a/pkg/front_end/testcases/inference/infer_list_literal_nested_in_map_literal.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/infer_list_literal_nested_in_map_literal.dart.strong.expect
@@ -6,6 +6,16 @@
   synthetic constructor •() → self::Resource*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Folder extends self::Resource {
   synthetic constructor •() → self::Folder*
@@ -16,6 +26,16 @@
   constructor •(self::Foo::T* t) → self::Foo<self::Foo::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method getResource(core::String* str) → self::Resource*
   return null;
diff --git a/pkg/front_end/testcases/inference/infer_list_literal_nested_in_map_literal.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/infer_list_literal_nested_in_map_literal.dart.strong.transformed.expect
index cb98aba..5bc5966 100644
--- a/pkg/front_end/testcases/inference/infer_list_literal_nested_in_map_literal.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/infer_list_literal_nested_in_map_literal.dart.strong.transformed.expect
@@ -6,6 +6,16 @@
   synthetic constructor •() → self::Resource*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Folder extends self::Resource {
   synthetic constructor •() → self::Folder*
@@ -16,6 +26,16 @@
   constructor •(self::Foo::T* t) → self::Foo<self::Foo::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method getResource(core::String* str) → self::Resource*
   return null;
diff --git a/pkg/front_end/testcases/inference/infer_local_function_return_type.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/infer_local_function_return_type.dart.strong.transformed.expect
index 8446ce803..86f1078 100644
--- a/pkg/front_end/testcases/inference/infer_local_function_return_type.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/infer_local_function_return_type.dart.strong.transformed.expect
@@ -24,8 +24,8 @@
         asy::_completeOnAsyncReturn(:async_completer, :return_value);
         return;
       }
-      on dynamic catch(dynamic :exception, core::StackTrace* :stack_trace) {
-        :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+      on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
+        :async_completer.{asy::Completer::completeError}(exception, stack_trace);
       }
     :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
     :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
@@ -54,8 +54,8 @@
         asy::_completeOnAsyncReturn(:async_completer, :return_value);
         return;
       }
-      on dynamic catch(dynamic :exception, core::StackTrace* :stack_trace) {
-        :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+      on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
+        :async_completer.{asy::Completer::completeError}(exception, stack_trace);
       }
     :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
     :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
@@ -64,18 +64,20 @@
     return :async_completer.{asy::Completer::future};
   }
   function f4() → core::Iterable<core::int*>* /* originally sync* */ {
-    core::int* :await_jump_var = 0;
-    dynamic :await_ctx_var;
-    function :sync_op(core::_SyncIterator<core::int*>* :iterator) → core::bool* yielding {
-      {
+    function :sync_op_gen() → (core::_SyncIterator<core::int*>*) →* core::bool* {
+      core::int* :await_jump_var = 0;
+      dynamic :await_ctx_var;
+      return (core::_SyncIterator<core::int*>* :iterator) → core::bool* yielding {
         {
-          :iterator.{core::_SyncIterator::_current} = 42;
-          [yield] true;
+          {
+            :iterator.{core::_SyncIterator::_current} = 42;
+            [yield] true;
+          }
         }
-      }
-      return false;
+        return false;
+      };
     }
-    return new core::_SyncIterable::•<core::int*>(:sync_op);
+    return new core::_SyncIterable::•<core::int*>(:sync_op_gen);
   }
   function f5() → asy::Stream<core::int*>* /* originally async* */ {
     asy::_AsyncStarStreamController<core::int*>* :controller;
@@ -99,8 +101,8 @@
           }
           return;
         }
-        on dynamic catch(dynamic :exception, core::StackTrace* :stack_trace) {
-          :controller.{asy::_AsyncStarStreamController::addError}(:exception, :stack_trace);
+        on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
+          :controller.{asy::_AsyncStarStreamController::addError}(exception, stack_trace);
         }
       finally {
         :controller.{asy::_AsyncStarStreamController::close}();
diff --git a/pkg/front_end/testcases/inference/infer_method_function_typed.dart.outline.expect b/pkg/front_end/testcases/inference/infer_method_function_typed.dart.outline.expect
index 339a237..ce7ecdf 100644
--- a/pkg/front_end/testcases/inference/infer_method_function_typed.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/infer_method_function_typed.dart.outline.expect
@@ -7,6 +7,16 @@
   synthetic constructor •() → self::A*
     ;
   abstract method x(() →* core::int* value) → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class B extends self::A {
   synthetic constructor •() → self::B*
diff --git a/pkg/front_end/testcases/inference/infer_method_function_typed.dart.strong.expect b/pkg/front_end/testcases/inference/infer_method_function_typed.dart.strong.expect
index 0a1ac45..6612d4f 100644
--- a/pkg/front_end/testcases/inference/infer_method_function_typed.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/infer_method_function_typed.dart.strong.expect
@@ -8,6 +8,16 @@
     : super core::Object::•()
     ;
   abstract method x(() →* core::int* value) → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class B extends self::A {
   synthetic constructor •() → self::B*
diff --git a/pkg/front_end/testcases/inference/infer_method_function_typed.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/infer_method_function_typed.dart.strong.transformed.expect
index 0a1ac45..6612d4f 100644
--- a/pkg/front_end/testcases/inference/infer_method_function_typed.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/infer_method_function_typed.dart.strong.transformed.expect
@@ -8,6 +8,16 @@
     : super core::Object::•()
     ;
   abstract method x(() →* core::int* value) → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class B extends self::A {
   synthetic constructor •() → self::B*
diff --git a/pkg/front_end/testcases/inference/infer_method_missing_params.dart.outline.expect b/pkg/front_end/testcases/inference/infer_method_missing_params.dart.outline.expect
index 9bb2b97..705abd4 100644
--- a/pkg/front_end/testcases/inference/infer_method_missing_params.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/infer_method_missing_params.dart.outline.expect
@@ -18,6 +18,16 @@
   abstract method f(core::int* x, core::int* y) → core::int*;
   abstract method g(core::int* x, [core::int* y]) → core::int*;
   abstract method h(core::int* x, {core::int* y}) → core::int*;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class B extends core::Object {
   synthetic constructor •() → self::B*
@@ -25,6 +35,16 @@
   abstract method f(core::int* x) → core::int*;
   abstract method g(core::int* x) → core::int*;
   abstract method h(core::int* x) → core::int*;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class C extends core::Object implements self::A, self::B {
   synthetic constructor •() → self::C*
@@ -32,6 +52,16 @@
   abstract method f(core::int* x, core::int* y) → core::int*;
   abstract method g(core::int* x, [core::int* y]) → core::int*;
   abstract method h(core::int* x, {core::int* y}) → core::int*;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/inference/infer_method_missing_params.dart.strong.expect b/pkg/front_end/testcases/inference/infer_method_missing_params.dart.strong.expect
index 106980ac..8b88749 100644
--- a/pkg/front_end/testcases/inference/infer_method_missing_params.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/infer_method_missing_params.dart.strong.expect
@@ -19,6 +19,16 @@
   abstract method f(core::int* x, core::int* y) → core::int*;
   abstract method g(core::int* x, [core::int* y = #C1]) → core::int*;
   abstract method h(core::int* x, {core::int* y = #C1}) → core::int*;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class B extends core::Object {
   synthetic constructor •() → self::B*
@@ -27,6 +37,16 @@
   abstract method f(core::int* x) → core::int*;
   abstract method g(core::int* x) → core::int*;
   abstract method h(core::int* x) → core::int*;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class C extends core::Object implements self::A, self::B {
   synthetic constructor •() → self::C*
@@ -35,6 +55,16 @@
   abstract method f(core::int* x, core::int* y) → core::int*;
   abstract method g(core::int* x, [core::int* y = #C1]) → core::int*;
   abstract method h(core::int* x, {core::int* y = #C1}) → core::int*;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
 
diff --git a/pkg/front_end/testcases/inference/infer_parameter_type_setter_from_field.dart.outline.expect b/pkg/front_end/testcases/inference/infer_parameter_type_setter_from_field.dart.outline.expect
index f87eb4f..70ddbbc 100644
--- a/pkg/front_end/testcases/inference/infer_parameter_type_setter_from_field.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/infer_parameter_type_setter_from_field.dart.outline.expect
@@ -12,6 +12,16 @@
   field core::int* foo;
   synthetic constructor •() → self::D*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/inference/infer_parameter_type_setter_from_field.dart.strong.expect b/pkg/front_end/testcases/inference/infer_parameter_type_setter_from_field.dart.strong.expect
index 450d23b..7a96e35 100644
--- a/pkg/front_end/testcases/inference/infer_parameter_type_setter_from_field.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/infer_parameter_type_setter_from_field.dart.strong.expect
@@ -13,5 +13,15 @@
   synthetic constructor •() → self::D*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/infer_parameter_type_setter_from_field.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/infer_parameter_type_setter_from_field.dart.strong.transformed.expect
index 450d23b..7a96e35 100644
--- a/pkg/front_end/testcases/inference/infer_parameter_type_setter_from_field.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/infer_parameter_type_setter_from_field.dart.strong.transformed.expect
@@ -13,5 +13,15 @@
   synthetic constructor •() → self::D*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/infer_parameter_type_setter_from_setter.dart.outline.expect b/pkg/front_end/testcases/inference/infer_parameter_type_setter_from_setter.dart.outline.expect
index 8d523c6..d04a88a 100644
--- a/pkg/front_end/testcases/inference/infer_parameter_type_setter_from_setter.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/infer_parameter_type_setter_from_setter.dart.outline.expect
@@ -13,6 +13,16 @@
     ;
   set foo(core::int* x) → void
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/inference/infer_parameter_type_setter_from_setter.dart.strong.expect b/pkg/front_end/testcases/inference/infer_parameter_type_setter_from_setter.dart.strong.expect
index bafdd43..b6f5989 100644
--- a/pkg/front_end/testcases/inference/infer_parameter_type_setter_from_setter.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/infer_parameter_type_setter_from_setter.dart.strong.expect
@@ -13,5 +13,15 @@
     : super core::Object::•()
     ;
   set foo(core::int* x) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/infer_parameter_type_setter_from_setter.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/infer_parameter_type_setter_from_setter.dart.strong.transformed.expect
index bafdd43..b6f5989 100644
--- a/pkg/front_end/testcases/inference/infer_parameter_type_setter_from_setter.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/infer_parameter_type_setter_from_setter.dart.strong.transformed.expect
@@ -13,5 +13,15 @@
     : super core::Object::•()
     ;
   set foo(core::int* x) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/infer_prefix_expression_custom.dart.outline.expect b/pkg/front_end/testcases/inference/infer_prefix_expression_custom.dart.outline.expect
index 264d18b..05958ae 100644
--- a/pkg/front_end/testcases/inference/infer_prefix_expression_custom.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/infer_prefix_expression_custom.dart.outline.expect
@@ -9,6 +9,16 @@
     ;
   operator unary-() → core::double*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field self::A* a;
 static field core::int* v_complement;
diff --git a/pkg/front_end/testcases/inference/infer_prefix_expression_custom.dart.strong.expect b/pkg/front_end/testcases/inference/infer_prefix_expression_custom.dart.strong.expect
index 6b92d46..5e4ab26 100644
--- a/pkg/front_end/testcases/inference/infer_prefix_expression_custom.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/infer_prefix_expression_custom.dart.strong.expect
@@ -10,6 +10,16 @@
     return 1;
   operator unary-() → core::double*
     return 2.0;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field self::A* a = new self::A::•();
 static field core::int* v_complement = self::a.{self::A::~}();
diff --git a/pkg/front_end/testcases/inference/infer_prefix_expression_custom.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/infer_prefix_expression_custom.dart.strong.transformed.expect
index 6b92d46..5e4ab26 100644
--- a/pkg/front_end/testcases/inference/infer_prefix_expression_custom.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/infer_prefix_expression_custom.dart.strong.transformed.expect
@@ -10,6 +10,16 @@
     return 1;
   operator unary-() → core::double*
     return 2.0;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field self::A* a = new self::A::•();
 static field core::int* v_complement = self::a.{self::A::~}();
diff --git a/pkg/front_end/testcases/inference/infer_return_type_for_static_setter.dart.outline.expect b/pkg/front_end/testcases/inference/infer_return_type_for_static_setter.dart.outline.expect
index ba34e92..c716897 100644
--- a/pkg/front_end/testcases/inference/infer_return_type_for_static_setter.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/infer_return_type_for_static_setter.dart.outline.expect
@@ -7,6 +7,16 @@
     ;
   static set foo(core::int* x) → void
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static set bar(core::int* x) → void
   ;
diff --git a/pkg/front_end/testcases/inference/infer_return_type_for_static_setter.dart.strong.expect b/pkg/front_end/testcases/inference/infer_return_type_for_static_setter.dart.strong.expect
index f6981f8..a102e3e 100644
--- a/pkg/front_end/testcases/inference/infer_return_type_for_static_setter.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/infer_return_type_for_static_setter.dart.strong.expect
@@ -7,6 +7,16 @@
     : super core::Object::•()
     ;
   static set foo(core::int* x) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static set bar(core::int* x) → void {}
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/infer_return_type_for_static_setter.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/infer_return_type_for_static_setter.dart.strong.transformed.expect
index f6981f8..a102e3e 100644
--- a/pkg/front_end/testcases/inference/infer_return_type_for_static_setter.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/infer_return_type_for_static_setter.dart.strong.transformed.expect
@@ -7,6 +7,16 @@
     : super core::Object::•()
     ;
   static set foo(core::int* x) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static set bar(core::int* x) → void {}
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/infer_setter_cross_to_getter.dart.outline.expect b/pkg/front_end/testcases/inference/infer_setter_cross_to_getter.dart.outline.expect
index d304686..341cbdc 100644
--- a/pkg/front_end/testcases/inference/infer_setter_cross_to_getter.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/infer_setter_cross_to_getter.dart.outline.expect
@@ -6,6 +6,16 @@
   synthetic constructor •() → self::A*
     ;
   abstract get x() → core::double*;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class B extends self::A {
   synthetic constructor •() → self::B*
diff --git a/pkg/front_end/testcases/inference/infer_setter_cross_to_getter.dart.strong.expect b/pkg/front_end/testcases/inference/infer_setter_cross_to_getter.dart.strong.expect
index c3c7f54..cefc6e1 100644
--- a/pkg/front_end/testcases/inference/infer_setter_cross_to_getter.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/infer_setter_cross_to_getter.dart.strong.expect
@@ -7,6 +7,16 @@
     : super core::Object::•()
     ;
   abstract get x() → core::double*;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class B extends self::A {
   synthetic constructor •() → self::B*
diff --git a/pkg/front_end/testcases/inference/infer_setter_cross_to_getter.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/infer_setter_cross_to_getter.dart.strong.transformed.expect
index c3c7f54..cefc6e1 100644
--- a/pkg/front_end/testcases/inference/infer_setter_cross_to_getter.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/infer_setter_cross_to_getter.dart.strong.transformed.expect
@@ -7,6 +7,16 @@
     : super core::Object::•()
     ;
   abstract get x() → core::double*;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class B extends self::A {
   synthetic constructor •() → self::B*
diff --git a/pkg/front_end/testcases/inference/infer_setter_from_later_inferred_setter.dart.outline.expect b/pkg/front_end/testcases/inference/infer_setter_from_later_inferred_setter.dart.outline.expect
index a3167ec..b2712ec 100644
--- a/pkg/front_end/testcases/inference/infer_setter_from_later_inferred_setter.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/infer_setter_from_later_inferred_setter.dart.outline.expect
@@ -7,16 +7,46 @@
     ;
   set x(core::int* value) → void
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class B extends core::Object implements self::C {
   synthetic constructor •() → self::B*
     ;
   abstract set x(core::int* value) → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class C extends core::Object {
   synthetic constructor •() → self::C*
     ;
   abstract set x(core::int* value) → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/inference/infer_setter_from_later_inferred_setter.dart.strong.expect b/pkg/front_end/testcases/inference/infer_setter_from_later_inferred_setter.dart.strong.expect
index b9b64b7..f3180c5 100644
--- a/pkg/front_end/testcases/inference/infer_setter_from_later_inferred_setter.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/infer_setter_from_later_inferred_setter.dart.strong.expect
@@ -7,17 +7,47 @@
     : super core::Object::•()
     ;
   set x(core::int* value) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class B extends core::Object implements self::C {
   synthetic constructor •() → self::B*
     : super core::Object::•()
     ;
   abstract set x(core::int* value) → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class C extends core::Object {
   synthetic constructor •() → self::C*
     : super core::Object::•()
     ;
   abstract set x(core::int* value) → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/infer_setter_from_later_inferred_setter.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/infer_setter_from_later_inferred_setter.dart.strong.transformed.expect
index b9b64b7..f3180c5 100644
--- a/pkg/front_end/testcases/inference/infer_setter_from_later_inferred_setter.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/infer_setter_from_later_inferred_setter.dart.strong.transformed.expect
@@ -7,17 +7,47 @@
     : super core::Object::•()
     ;
   set x(core::int* value) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class B extends core::Object implements self::C {
   synthetic constructor •() → self::B*
     : super core::Object::•()
     ;
   abstract set x(core::int* value) → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class C extends core::Object {
   synthetic constructor •() → self::C*
     : super core::Object::•()
     ;
   abstract set x(core::int* value) → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/infer_setter_function_typed.dart.outline.expect b/pkg/front_end/testcases/inference/infer_setter_function_typed.dart.outline.expect
index 0a5526a..30c9ce6 100644
--- a/pkg/front_end/testcases/inference/infer_setter_function_typed.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/infer_setter_function_typed.dart.outline.expect
@@ -7,6 +7,16 @@
   synthetic constructor •() → self::A*
     ;
   abstract set x(() →* core::int* value) → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class B extends self::A {
   synthetic constructor •() → self::B*
diff --git a/pkg/front_end/testcases/inference/infer_setter_function_typed.dart.strong.expect b/pkg/front_end/testcases/inference/infer_setter_function_typed.dart.strong.expect
index 1280f00..8d2d680 100644
--- a/pkg/front_end/testcases/inference/infer_setter_function_typed.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/infer_setter_function_typed.dart.strong.expect
@@ -8,6 +8,16 @@
     : super core::Object::•()
     ;
   abstract set x(() →* core::int* value) → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class B extends self::A {
   synthetic constructor •() → self::B*
diff --git a/pkg/front_end/testcases/inference/infer_setter_function_typed.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/infer_setter_function_typed.dart.strong.transformed.expect
index 1280f00..8d2d680 100644
--- a/pkg/front_end/testcases/inference/infer_setter_function_typed.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/infer_setter_function_typed.dart.strong.transformed.expect
@@ -8,6 +8,16 @@
     : super core::Object::•()
     ;
   abstract set x(() →* core::int* value) → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class B extends self::A {
   synthetic constructor •() → self::B*
diff --git a/pkg/front_end/testcases/inference/infer_setter_return_type_only.dart.outline.expect b/pkg/front_end/testcases/inference/infer_setter_return_type_only.dart.outline.expect
index f31bd04..859a987 100644
--- a/pkg/front_end/testcases/inference/infer_setter_return_type_only.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/infer_setter_return_type_only.dart.outline.expect
@@ -7,6 +7,16 @@
     ;
   set x(core::int* i) → void
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A {
   synthetic constructor •() → self::B*
diff --git a/pkg/front_end/testcases/inference/infer_setter_return_type_only.dart.strong.expect b/pkg/front_end/testcases/inference/infer_setter_return_type_only.dart.strong.expect
index 47a7891..a30dcc3 100644
--- a/pkg/front_end/testcases/inference/infer_setter_return_type_only.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/infer_setter_return_type_only.dart.strong.expect
@@ -7,6 +7,16 @@
     : super core::Object::•()
     ;
   set x(core::int* i) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A {
   synthetic constructor •() → self::B*
diff --git a/pkg/front_end/testcases/inference/infer_setter_return_type_only.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/infer_setter_return_type_only.dart.strong.transformed.expect
index 47a7891..a30dcc3 100644
--- a/pkg/front_end/testcases/inference/infer_setter_return_type_only.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/infer_setter_return_type_only.dart.strong.transformed.expect
@@ -7,6 +7,16 @@
     : super core::Object::•()
     ;
   set x(core::int* i) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A {
   synthetic constructor •() → self::B*
diff --git a/pkg/front_end/testcases/inference/infer_statics_transitively.dart.outline.expect b/pkg/front_end/testcases/inference/infer_statics_transitively.dart.outline.expect
index 531005e..aa3e6b54 100644
--- a/pkg/front_end/testcases/inference/infer_statics_transitively.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/infer_statics_transitively.dart.outline.expect
@@ -22,6 +22,16 @@
   static final field core::int* a2;
   synthetic constructor •() → self2::A*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static final field core::int* a1;
 static method main() → dynamic
diff --git a/pkg/front_end/testcases/inference/infer_statics_transitively.dart.strong.expect b/pkg/front_end/testcases/inference/infer_statics_transitively.dart.strong.expect
index fe34d91..2667c2d 100644
--- a/pkg/front_end/testcases/inference/infer_statics_transitively.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/infer_statics_transitively.dart.strong.expect
@@ -27,6 +27,16 @@
   synthetic constructor •() → inf::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static final field core::int* a1 = self::m2;
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/infer_statics_transitively.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/infer_statics_transitively.dart.strong.transformed.expect
index fe34d91..2667c2d 100644
--- a/pkg/front_end/testcases/inference/infer_statics_transitively.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/infer_statics_transitively.dart.strong.transformed.expect
@@ -27,6 +27,16 @@
   synthetic constructor •() → inf::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static final field core::int* a1 = self::m2;
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/infer_statics_transitively3.dart.outline.expect b/pkg/front_end/testcases/inference/infer_statics_transitively3.dart.outline.expect
index 992d62b..effca43 100644
--- a/pkg/front_end/testcases/inference/infer_statics_transitively3.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/infer_statics_transitively3.dart.outline.expect
@@ -25,6 +25,16 @@
   static const field dynamic a3 = null;
   synthetic constructor •() → inf::A*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static const field core::int* a1 = 3;
 static const field core::int* a2 = 4;
diff --git a/pkg/front_end/testcases/inference/infer_statics_transitively3.dart.strong.expect b/pkg/front_end/testcases/inference/infer_statics_transitively3.dart.strong.expect
index 1a44321..d1f21f1 100644
--- a/pkg/front_end/testcases/inference/infer_statics_transitively3.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/infer_statics_transitively3.dart.strong.expect
@@ -29,6 +29,16 @@
   synthetic constructor •() → self2::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static const field core::int* a1 = #C2;
 static const field core::int* a2 = #C3;
diff --git a/pkg/front_end/testcases/inference/infer_statics_transitively3.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/infer_statics_transitively3.dart.strong.transformed.expect
index 1a44321..d1f21f1 100644
--- a/pkg/front_end/testcases/inference/infer_statics_transitively3.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/infer_statics_transitively3.dart.strong.transformed.expect
@@ -29,6 +29,16 @@
   synthetic constructor •() → self2::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static const field core::int* a1 = #C2;
 static const field core::int* a2 = #C3;
diff --git a/pkg/front_end/testcases/inference/infer_statics_transitively3_a.dart.outline.expect b/pkg/front_end/testcases/inference/infer_statics_transitively3_a.dart.outline.expect
index 7eda95a..2aa11c6 100644
--- a/pkg/front_end/testcases/inference/infer_statics_transitively3_a.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/infer_statics_transitively3_a.dart.outline.expect
@@ -6,6 +6,16 @@
   static const field dynamic a3 = null;
   synthetic constructor •() → self::A*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static const field core::int* a1 = 3;
 static const field core::int* a2 = 4;
diff --git a/pkg/front_end/testcases/inference/infer_statics_transitively3_a.dart.strong.expect b/pkg/front_end/testcases/inference/infer_statics_transitively3_a.dart.strong.expect
index a72bc1b..a026473 100644
--- a/pkg/front_end/testcases/inference/infer_statics_transitively3_a.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/infer_statics_transitively3_a.dart.strong.expect
@@ -7,6 +7,16 @@
   synthetic constructor •() → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static const field core::int* a1 = #C2;
 static const field core::int* a2 = #C3;
diff --git a/pkg/front_end/testcases/inference/infer_statics_transitively3_a.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/infer_statics_transitively3_a.dart.strong.transformed.expect
index a72bc1b..a026473 100644
--- a/pkg/front_end/testcases/inference/infer_statics_transitively3_a.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/infer_statics_transitively3_a.dart.strong.transformed.expect
@@ -7,6 +7,16 @@
   synthetic constructor •() → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static const field core::int* a1 = #C2;
 static const field core::int* a2 = #C3;
diff --git a/pkg/front_end/testcases/inference/infer_statics_transitively_2_a.dart.outline.expect b/pkg/front_end/testcases/inference/infer_statics_transitively_2_a.dart.outline.expect
index b62ec89..da8e603 100644
--- a/pkg/front_end/testcases/inference/infer_statics_transitively_2_a.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/infer_statics_transitively_2_a.dart.outline.expect
@@ -9,6 +9,16 @@
   static final field core::int* a2;
   synthetic constructor •() → self::A*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static final field core::int* a1;
 static method main() → dynamic
@@ -46,6 +56,16 @@
   static final field core::int* a2;
   synthetic constructor •() → self4::A*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static final field core::int* a1;
 static method main() → dynamic
diff --git a/pkg/front_end/testcases/inference/infer_statics_transitively_2_a.dart.strong.expect b/pkg/front_end/testcases/inference/infer_statics_transitively_2_a.dart.strong.expect
index 3a33b33..436e2e7 100644
--- a/pkg/front_end/testcases/inference/infer_statics_transitively_2_a.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/infer_statics_transitively_2_a.dart.strong.expect
@@ -12,6 +12,16 @@
   synthetic constructor •() → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static final field core::int* a1 = test::m2;
 static method main() → dynamic {
@@ -56,6 +66,16 @@
   synthetic constructor •() → inf2::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static final field core::int* a1 = test::m2;
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/infer_statics_transitively_2_a.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/infer_statics_transitively_2_a.dart.strong.transformed.expect
index 3a33b33..436e2e7 100644
--- a/pkg/front_end/testcases/inference/infer_statics_transitively_2_a.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/infer_statics_transitively_2_a.dart.strong.transformed.expect
@@ -12,6 +12,16 @@
   synthetic constructor •() → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static final field core::int* a1 = test::m2;
 static method main() → dynamic {
@@ -56,6 +66,16 @@
   synthetic constructor •() → inf2::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static final field core::int* a1 = test::m2;
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/infer_statics_transitively_a.dart.outline.expect b/pkg/front_end/testcases/inference/infer_statics_transitively_a.dart.outline.expect
index 54f49cbb7..ffbff1c 100644
--- a/pkg/front_end/testcases/inference/infer_statics_transitively_a.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/infer_statics_transitively_a.dart.outline.expect
@@ -9,6 +9,16 @@
   static final field core::int* a2;
   synthetic constructor •() → self::A*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static final field core::int* a1;
 static method main() → dynamic
diff --git a/pkg/front_end/testcases/inference/infer_statics_transitively_a.dart.strong.expect b/pkg/front_end/testcases/inference/infer_statics_transitively_a.dart.strong.expect
index 1dbafbb..597ab3c 100644
--- a/pkg/front_end/testcases/inference/infer_statics_transitively_a.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/infer_statics_transitively_a.dart.strong.expect
@@ -12,6 +12,16 @@
   synthetic constructor •() → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static final field core::int* a1 = test::m2;
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/infer_statics_transitively_a.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/infer_statics_transitively_a.dart.strong.transformed.expect
index 1dbafbb..597ab3c 100644
--- a/pkg/front_end/testcases/inference/infer_statics_transitively_a.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/infer_statics_transitively_a.dart.strong.transformed.expect
@@ -12,6 +12,16 @@
   synthetic constructor •() → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static final field core::int* a1 = test::m2;
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/infer_statics_with_method_invocations.dart.outline.expect b/pkg/front_end/testcases/inference/infer_statics_with_method_invocations.dart.outline.expect
index 82eac85..c17d549 100644
--- a/pkg/front_end/testcases/inference/infer_statics_with_method_invocations.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/infer_statics_with_method_invocations.dart.outline.expect
@@ -12,6 +12,16 @@
     ;
   static method m2(dynamic e) → core::String*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/inference/infer_statics_with_method_invocations.dart.strong.expect b/pkg/front_end/testcases/inference/infer_statics_with_method_invocations.dart.strong.expect
index 575d442..664ab54 100644
--- a/pkg/front_end/testcases/inference/infer_statics_with_method_invocations.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/infer_statics_with_method_invocations.dart.strong.expect
@@ -16,6 +16,16 @@
   static method m2(dynamic e) → core::String* {
     return "";
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
 
diff --git a/pkg/front_end/testcases/inference/infer_statics_with_method_invocations.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/infer_statics_with_method_invocations.dart.strong.transformed.expect
index 575d442..664ab54 100644
--- a/pkg/front_end/testcases/inference/infer_statics_with_method_invocations.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/infer_statics_with_method_invocations.dart.strong.transformed.expect
@@ -16,6 +16,16 @@
   static method m2(dynamic e) → core::String* {
     return "";
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
 
diff --git a/pkg/front_end/testcases/inference/infer_type_on_overridden_fields2.dart.outline.expect b/pkg/front_end/testcases/inference/infer_type_on_overridden_fields2.dart.outline.expect
index fdad487..18045b3 100644
--- a/pkg/front_end/testcases/inference/infer_type_on_overridden_fields2.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/infer_type_on_overridden_fields2.dart.outline.expect
@@ -6,6 +6,16 @@
   field core::int* x;
   synthetic constructor •() → self::A*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A {
   synthetic constructor •() → self::B*
diff --git a/pkg/front_end/testcases/inference/infer_type_on_overridden_fields2.dart.strong.expect b/pkg/front_end/testcases/inference/infer_type_on_overridden_fields2.dart.strong.expect
index e2dd820..9d37d48 100644
--- a/pkg/front_end/testcases/inference/infer_type_on_overridden_fields2.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/infer_type_on_overridden_fields2.dart.strong.expect
@@ -14,6 +14,16 @@
   synthetic constructor •() → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A {
   synthetic constructor •() → self::B*
diff --git a/pkg/front_end/testcases/inference/infer_type_on_overridden_fields2.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/infer_type_on_overridden_fields2.dart.strong.transformed.expect
index e2dd820..9d37d48 100644
--- a/pkg/front_end/testcases/inference/infer_type_on_overridden_fields2.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/infer_type_on_overridden_fields2.dart.strong.transformed.expect
@@ -14,6 +14,16 @@
   synthetic constructor •() → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A {
   synthetic constructor •() → self::B*
diff --git a/pkg/front_end/testcases/inference/infer_type_on_overridden_fields4.dart.outline.expect b/pkg/front_end/testcases/inference/infer_type_on_overridden_fields4.dart.outline.expect
index 740163e..039c889 100644
--- a/pkg/front_end/testcases/inference/infer_type_on_overridden_fields4.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/infer_type_on_overridden_fields4.dart.outline.expect
@@ -6,12 +6,32 @@
   final field core::int* x;
   synthetic constructor •() → self::A*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends core::Object implements self::A {
   synthetic constructor •() → self::B*
     ;
   get x() → core::int*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method foo() → dynamic
   ;
diff --git a/pkg/front_end/testcases/inference/infer_type_on_overridden_fields4.dart.strong.expect b/pkg/front_end/testcases/inference/infer_type_on_overridden_fields4.dart.strong.expect
index 75a45d2..3b22291 100644
--- a/pkg/front_end/testcases/inference/infer_type_on_overridden_fields4.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/infer_type_on_overridden_fields4.dart.strong.expect
@@ -14,6 +14,16 @@
   synthetic constructor •() → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends core::Object implements self::A {
   synthetic constructor •() → self::B*
@@ -21,6 +31,16 @@
     ;
   get x() → core::int*
     return 3;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method foo() → dynamic {
   core::String* y = let final<BottomType> #t1 = invalid-expression "pkg/front_end/testcases/inference/infer_type_on_overridden_fields4.dart:17:69: Error: A value of type 'int' can't be assigned to a variable of type 'String'.
diff --git a/pkg/front_end/testcases/inference/infer_type_on_overridden_fields4.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/infer_type_on_overridden_fields4.dart.strong.transformed.expect
index 75a45d2..3b22291 100644
--- a/pkg/front_end/testcases/inference/infer_type_on_overridden_fields4.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/infer_type_on_overridden_fields4.dart.strong.transformed.expect
@@ -14,6 +14,16 @@
   synthetic constructor •() → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends core::Object implements self::A {
   synthetic constructor •() → self::B*
@@ -21,6 +31,16 @@
     ;
   get x() → core::int*
     return 3;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method foo() → dynamic {
   core::String* y = let final<BottomType> #t1 = invalid-expression "pkg/front_end/testcases/inference/infer_type_on_overridden_fields4.dart:17:69: Error: A value of type 'int' can't be assigned to a variable of type 'String'.
diff --git a/pkg/front_end/testcases/inference/infer_type_on_var_from_field.dart.outline.expect b/pkg/front_end/testcases/inference/infer_type_on_var_from_field.dart.outline.expect
index 556acab..87931ac 100644
--- a/pkg/front_end/testcases/inference/infer_type_on_var_from_field.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/infer_type_on_var_from_field.dart.outline.expect
@@ -10,6 +10,16 @@
     ;
   method test1() → dynamic
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/inference/infer_type_on_var_from_field.dart.strong.expect b/pkg/front_end/testcases/inference/infer_type_on_var_from_field.dart.strong.expect
index 3476cd7..822f2b8 100644
--- a/pkg/front_end/testcases/inference/infer_type_on_var_from_field.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/infer_type_on_var_from_field.dart.strong.expect
@@ -41,5 +41,15 @@
                                      ^" in "hi" as{TypeError} core::int*;
     c = 4;
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/infer_type_on_var_from_field.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/infer_type_on_var_from_field.dart.strong.transformed.expect
index 3476cd7..822f2b8 100644
--- a/pkg/front_end/testcases/inference/infer_type_on_var_from_field.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/infer_type_on_var_from_field.dart.strong.transformed.expect
@@ -41,5 +41,15 @@
                                      ^" in "hi" as{TypeError} core::int*;
     c = 4;
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/infer_type_regardless_of_declaration_order_or_cycles.dart.outline.expect b/pkg/front_end/testcases/inference/infer_type_regardless_of_declaration_order_or_cycles.dart.outline.expect
index 6e632b8..a7c3cf6 100644
--- a/pkg/front_end/testcases/inference/infer_type_regardless_of_declaration_order_or_cycles.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/infer_type_regardless_of_declaration_order_or_cycles.dart.outline.expect
@@ -16,6 +16,16 @@
     ;
   get x() → core::int*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method foo() → dynamic
   ;
diff --git a/pkg/front_end/testcases/inference/infer_type_regardless_of_declaration_order_or_cycles.dart.strong.expect b/pkg/front_end/testcases/inference/infer_type_regardless_of_declaration_order_or_cycles.dart.strong.expect
index eead399..5d0788c 100644
--- a/pkg/front_end/testcases/inference/infer_type_regardless_of_declaration_order_or_cycles.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/infer_type_regardless_of_declaration_order_or_cycles.dart.strong.expect
@@ -25,6 +25,16 @@
     ;
   get x() → core::int*
     return 0;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method foo() → dynamic {
   core::int* y = new self::C::•().{self::C::x};
diff --git a/pkg/front_end/testcases/inference/infer_type_regardless_of_declaration_order_or_cycles.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/infer_type_regardless_of_declaration_order_or_cycles.dart.strong.transformed.expect
index eead399..5d0788c 100644
--- a/pkg/front_end/testcases/inference/infer_type_regardless_of_declaration_order_or_cycles.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/infer_type_regardless_of_declaration_order_or_cycles.dart.strong.transformed.expect
@@ -25,6 +25,16 @@
     ;
   get x() → core::int*
     return 0;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method foo() → dynamic {
   core::int* y = new self::C::•().{self::C::x};
diff --git a/pkg/front_end/testcases/inference/infer_type_regardless_of_declaration_order_or_cycles_b.dart.outline.expect b/pkg/front_end/testcases/inference/infer_type_regardless_of_declaration_order_or_cycles_b.dart.outline.expect
index 3dc6858..d2ed4cd 100644
--- a/pkg/front_end/testcases/inference/infer_type_regardless_of_declaration_order_or_cycles_b.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/infer_type_regardless_of_declaration_order_or_cycles_b.dart.outline.expect
@@ -29,6 +29,16 @@
     ;
   get x() → core::int*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method foo() → dynamic
   ;
diff --git a/pkg/front_end/testcases/inference/infer_type_regardless_of_declaration_order_or_cycles_b.dart.strong.expect b/pkg/front_end/testcases/inference/infer_type_regardless_of_declaration_order_or_cycles_b.dart.strong.expect
index e011236..2089092 100644
--- a/pkg/front_end/testcases/inference/infer_type_regardless_of_declaration_order_or_cycles_b.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/infer_type_regardless_of_declaration_order_or_cycles_b.dart.strong.expect
@@ -38,6 +38,16 @@
     ;
   get x() → core::int*
     return 0;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method foo() → dynamic {
   core::int* y = new test::C::•().{test::C::x};
diff --git a/pkg/front_end/testcases/inference/infer_type_regardless_of_declaration_order_or_cycles_b.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/infer_type_regardless_of_declaration_order_or_cycles_b.dart.strong.transformed.expect
index e011236..2089092 100644
--- a/pkg/front_end/testcases/inference/infer_type_regardless_of_declaration_order_or_cycles_b.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/infer_type_regardless_of_declaration_order_or_cycles_b.dart.strong.transformed.expect
@@ -38,6 +38,16 @@
     ;
   get x() → core::int*
     return 0;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method foo() → dynamic {
   core::int* y = new test::C::•().{test::C::x};
diff --git a/pkg/front_end/testcases/inference/infer_types_on_generic_instantiations_3.dart.outline.expect b/pkg/front_end/testcases/inference/infer_types_on_generic_instantiations_3.dart.outline.expect
index fd0db16..001e3eb 100644
--- a/pkg/front_end/testcases/inference/infer_types_on_generic_instantiations_3.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/infer_types_on_generic_instantiations_3.dart.outline.expect
@@ -7,6 +7,16 @@
   final field self::A::T* w;
   synthetic constructor •() → self::A<self::A::T*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends core::Object implements self::A<core::int*> {
   synthetic constructor •() → self::B*
@@ -15,6 +25,16 @@
     ;
   get w() → core::int*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method foo() → dynamic
   ;
diff --git a/pkg/front_end/testcases/inference/infer_types_on_generic_instantiations_3.dart.strong.expect b/pkg/front_end/testcases/inference/infer_types_on_generic_instantiations_3.dart.strong.expect
index 9ba269b..91a6c7e 100644
--- a/pkg/front_end/testcases/inference/infer_types_on_generic_instantiations_3.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/infer_types_on_generic_instantiations_3.dart.strong.expect
@@ -19,6 +19,16 @@
   synthetic constructor •() → self::A<self::A::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends core::Object implements self::A<core::int*> {
   synthetic constructor •() → self::B*
@@ -30,6 +40,16 @@
     return let final<BottomType> #t1 = invalid-expression "pkg/front_end/testcases/inference/infer_types_on_generic_instantiations_3.dart:15:45: Error: A value of type 'String' can't be assigned to a variable of type 'int'.
   get w => /*error:RETURN_OF_INVALID_TYPE*/ \"hello\";
                                             ^" in "hello" as{TypeError} core::int*;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method foo() → dynamic {
   core::String* y = let final<BottomType> #t2 = invalid-expression "pkg/front_end/testcases/inference/infer_types_on_generic_instantiations_3.dart:19:69: Error: A value of type 'int' can't be assigned to a variable of type 'String'.
diff --git a/pkg/front_end/testcases/inference/infer_types_on_generic_instantiations_3.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/infer_types_on_generic_instantiations_3.dart.strong.transformed.expect
index 9ba269b..91a6c7e 100644
--- a/pkg/front_end/testcases/inference/infer_types_on_generic_instantiations_3.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/infer_types_on_generic_instantiations_3.dart.strong.transformed.expect
@@ -19,6 +19,16 @@
   synthetic constructor •() → self::A<self::A::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends core::Object implements self::A<core::int*> {
   synthetic constructor •() → self::B*
@@ -30,6 +40,16 @@
     return let final<BottomType> #t1 = invalid-expression "pkg/front_end/testcases/inference/infer_types_on_generic_instantiations_3.dart:15:45: Error: A value of type 'String' can't be assigned to a variable of type 'int'.
   get w => /*error:RETURN_OF_INVALID_TYPE*/ \"hello\";
                                             ^" in "hello" as{TypeError} core::int*;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method foo() → dynamic {
   core::String* y = let final<BottomType> #t2 = invalid-expression "pkg/front_end/testcases/inference/infer_types_on_generic_instantiations_3.dart:19:69: Error: A value of type 'int' can't be assigned to a variable of type 'String'.
diff --git a/pkg/front_end/testcases/inference/infer_types_on_generic_instantiations_4.dart.outline.expect b/pkg/front_end/testcases/inference/infer_types_on_generic_instantiations_4.dart.outline.expect
index 42d4b2e..d7289b3 100644
--- a/pkg/front_end/testcases/inference/infer_types_on_generic_instantiations_4.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/infer_types_on_generic_instantiations_4.dart.outline.expect
@@ -6,6 +6,16 @@
   generic-covariant-impl field self::A::T* x;
   synthetic constructor •() → self::A<self::A::T*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B<E extends core::Object* = dynamic> extends self::A<self::B::E*> {
   generic-covariant-impl field self::B::E* y;
diff --git a/pkg/front_end/testcases/inference/infer_types_on_generic_instantiations_4.dart.strong.expect b/pkg/front_end/testcases/inference/infer_types_on_generic_instantiations_4.dart.strong.expect
index 6bfd5ee..d16a82c 100644
--- a/pkg/front_end/testcases/inference/infer_types_on_generic_instantiations_4.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/infer_types_on_generic_instantiations_4.dart.strong.expect
@@ -14,6 +14,16 @@
   synthetic constructor •() → self::A<self::A::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B<E extends core::Object* = dynamic> extends self::A<self::B::E*> {
   generic-covariant-impl field self::B::E* y = null;
diff --git a/pkg/front_end/testcases/inference/infer_types_on_generic_instantiations_4.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/infer_types_on_generic_instantiations_4.dart.strong.transformed.expect
index 6bfd5ee..d16a82c 100644
--- a/pkg/front_end/testcases/inference/infer_types_on_generic_instantiations_4.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/infer_types_on_generic_instantiations_4.dart.strong.transformed.expect
@@ -14,6 +14,16 @@
   synthetic constructor •() → self::A<self::A::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B<E extends core::Object* = dynamic> extends self::A<self::B::E*> {
   generic-covariant-impl field self::B::E* y = null;
diff --git a/pkg/front_end/testcases/inference/infer_types_on_generic_instantiations_5.dart.outline.expect b/pkg/front_end/testcases/inference/infer_types_on_generic_instantiations_5.dart.outline.expect
index e528298..1edc42d 100644
--- a/pkg/front_end/testcases/inference/infer_types_on_generic_instantiations_5.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/infer_types_on_generic_instantiations_5.dart.outline.expect
@@ -6,17 +6,47 @@
   synthetic constructor •() → self::I<self::I::E*>*
     ;
   abstract method m(dynamic a, (dynamic, self::I::E*) →* core::String* f) → core::String*;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class A<E extends core::Object* = dynamic> extends core::Object implements self::I<self::A::E*> /*hasConstConstructor*/  {
   const constructor •() → self::A<self::A::E*>*
     : super core::Object::•()
     ;
   abstract method m(dynamic a, (dynamic, self::A::E*) →* core::String* f) → core::String*;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class M extends core::Object {
   final field core::int* y;
   synthetic constructor •() → self::M*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B<E extends core::Object* = dynamic> extends self::A<self::B::E*> implements self::M /*hasConstConstructor*/  {
   const constructor •() → self::B<self::B::E*>*
diff --git a/pkg/front_end/testcases/inference/infer_types_on_generic_instantiations_5.dart.strong.expect b/pkg/front_end/testcases/inference/infer_types_on_generic_instantiations_5.dart.strong.expect
index 235db8a..64cc79b 100644
--- a/pkg/front_end/testcases/inference/infer_types_on_generic_instantiations_5.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/infer_types_on_generic_instantiations_5.dart.strong.expect
@@ -14,18 +14,48 @@
     : super core::Object::•()
     ;
   abstract method m(dynamic a, (dynamic, self::I::E*) →* core::String* f) → core::String*;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class A<E extends core::Object* = dynamic> extends core::Object implements self::I<self::A::E*> /*hasConstConstructor*/  {
   const constructor •() → self::A<self::A::E*>*
     : super core::Object::•()
     ;
   abstract method m(dynamic a, (dynamic, self::A::E*) →* core::String* f) → core::String*;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class M extends core::Object {
   final field core::int* y = 0;
   synthetic constructor •() → self::M*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B<E extends core::Object* = dynamic> extends self::A<self::B::E*> implements self::M /*hasConstConstructor*/  {
   const constructor •() → self::B<self::B::E*>*
diff --git a/pkg/front_end/testcases/inference/infer_types_on_generic_instantiations_5.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/infer_types_on_generic_instantiations_5.dart.strong.transformed.expect
index 235db8a..64cc79b 100644
--- a/pkg/front_end/testcases/inference/infer_types_on_generic_instantiations_5.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/infer_types_on_generic_instantiations_5.dart.strong.transformed.expect
@@ -14,18 +14,48 @@
     : super core::Object::•()
     ;
   abstract method m(dynamic a, (dynamic, self::I::E*) →* core::String* f) → core::String*;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class A<E extends core::Object* = dynamic> extends core::Object implements self::I<self::A::E*> /*hasConstConstructor*/  {
   const constructor •() → self::A<self::A::E*>*
     : super core::Object::•()
     ;
   abstract method m(dynamic a, (dynamic, self::A::E*) →* core::String* f) → core::String*;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class M extends core::Object {
   final field core::int* y = 0;
   synthetic constructor •() → self::M*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B<E extends core::Object* = dynamic> extends self::A<self::B::E*> implements self::M /*hasConstConstructor*/  {
   const constructor •() → self::B<self::B::E*>*
diff --git a/pkg/front_end/testcases/inference/infer_types_on_generic_instantiations_in_library_cycle.dart.outline.expect b/pkg/front_end/testcases/inference/infer_types_on_generic_instantiations_in_library_cycle.dart.outline.expect
index ae2e3bd..e479ae8 100644
--- a/pkg/front_end/testcases/inference/infer_types_on_generic_instantiations_in_library_cycle.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/infer_types_on_generic_instantiations_in_library_cycle.dart.outline.expect
@@ -10,11 +10,31 @@
   const constructor •() → self::A<self::A::E*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class M extends core::Object {
   final field core::int* y;
   synthetic constructor •() → self::M*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B<E extends core::Object* = dynamic> extends self::A<self::B::E*> implements self::M /*hasConstConstructor*/  {
   const constructor •() → self::B<self::B::E*>*
@@ -41,6 +61,16 @@
   synthetic constructor •() → inf::I<inf::I::E*>*
     ;
   abstract method m(dynamic a, (dynamic, core::int*) →* core::String* f) → self::A<inf::I::E*>*;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/inference/infer_types_on_generic_instantiations_in_library_cycle.dart.strong.expect b/pkg/front_end/testcases/inference/infer_types_on_generic_instantiations_in_library_cycle.dart.strong.expect
index c6c1c34..58bf956 100644
--- a/pkg/front_end/testcases/inference/infer_types_on_generic_instantiations_in_library_cycle.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/infer_types_on_generic_instantiations_in_library_cycle.dart.strong.expect
@@ -17,12 +17,32 @@
   const constructor •() → self::A<self::A::E*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class M extends core::Object {
   final field core::int* y = 0;
   synthetic constructor •() → self::M*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B<E extends core::Object* = dynamic> extends self::A<self::B::E*> implements self::M /*hasConstConstructor*/  {
   const constructor •() → self::B<self::B::E*>*
@@ -52,5 +72,15 @@
     : super core::Object::•()
     ;
   abstract method m(dynamic a, (dynamic, core::int*) →* core::String* f) → self::A<inf::I::E*>*;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/infer_types_on_generic_instantiations_in_library_cycle.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/infer_types_on_generic_instantiations_in_library_cycle.dart.strong.transformed.expect
index c6c1c34..58bf956 100644
--- a/pkg/front_end/testcases/inference/infer_types_on_generic_instantiations_in_library_cycle.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/infer_types_on_generic_instantiations_in_library_cycle.dart.strong.transformed.expect
@@ -17,12 +17,32 @@
   const constructor •() → self::A<self::A::E*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class M extends core::Object {
   final field core::int* y = 0;
   synthetic constructor •() → self::M*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B<E extends core::Object* = dynamic> extends self::A<self::B::E*> implements self::M /*hasConstConstructor*/  {
   const constructor •() → self::B<self::B::E*>*
@@ -52,5 +72,15 @@
     : super core::Object::•()
     ;
   abstract method m(dynamic a, (dynamic, core::int*) →* core::String* f) → self::A<inf::I::E*>*;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/infer_types_on_generic_instantiations_in_library_cycle_a.dart.outline.expect b/pkg/front_end/testcases/inference/infer_types_on_generic_instantiations_in_library_cycle_a.dart.outline.expect
index deae9bd..094f8a9 100644
--- a/pkg/front_end/testcases/inference/infer_types_on_generic_instantiations_in_library_cycle_a.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/infer_types_on_generic_instantiations_in_library_cycle_a.dart.outline.expect
@@ -9,6 +9,16 @@
   synthetic constructor •() → self::I<self::I::E*>*
     ;
   abstract method m(dynamic a, (dynamic, core::int*) →* core::String* f) → test::A<self::I::E*>*;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
@@ -25,11 +35,31 @@
   const constructor •() → test::A<test::A::E*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class M extends core::Object {
   final field core::int* y;
   synthetic constructor •() → test::M*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B<E extends core::Object* = dynamic> extends test::A<test::B::E*> implements test::M /*hasConstConstructor*/  {
   const constructor •() → test::B<test::B::E*>*
diff --git a/pkg/front_end/testcases/inference/infer_types_on_generic_instantiations_in_library_cycle_a.dart.strong.expect b/pkg/front_end/testcases/inference/infer_types_on_generic_instantiations_in_library_cycle_a.dart.strong.expect
index 94b0561..685eb09 100644
--- a/pkg/front_end/testcases/inference/infer_types_on_generic_instantiations_in_library_cycle_a.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/infer_types_on_generic_instantiations_in_library_cycle_a.dart.strong.expect
@@ -10,6 +10,16 @@
     : super core::Object::•()
     ;
   abstract method m(dynamic a, (dynamic, core::int*) →* core::String* f) → test::A<self::I::E*>*;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
 
@@ -32,12 +42,32 @@
   const constructor •() → test::A<test::A::E*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class M extends core::Object {
   final field core::int* y = 0;
   synthetic constructor •() → test::M*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B<E extends core::Object* = dynamic> extends test::A<test::B::E*> implements test::M /*hasConstConstructor*/  {
   const constructor •() → test::B<test::B::E*>*
diff --git a/pkg/front_end/testcases/inference/infer_types_on_generic_instantiations_in_library_cycle_a.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/infer_types_on_generic_instantiations_in_library_cycle_a.dart.strong.transformed.expect
index 94b0561..685eb09 100644
--- a/pkg/front_end/testcases/inference/infer_types_on_generic_instantiations_in_library_cycle_a.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/infer_types_on_generic_instantiations_in_library_cycle_a.dart.strong.transformed.expect
@@ -10,6 +10,16 @@
     : super core::Object::•()
     ;
   abstract method m(dynamic a, (dynamic, core::int*) →* core::String* f) → test::A<self::I::E*>*;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
 
@@ -32,12 +42,32 @@
   const constructor •() → test::A<test::A::E*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class M extends core::Object {
   final field core::int* y = 0;
   synthetic constructor •() → test::M*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B<E extends core::Object* = dynamic> extends test::A<test::B::E*> implements test::M /*hasConstConstructor*/  {
   const constructor •() → test::B<test::B::E*>*
diff --git a/pkg/front_end/testcases/inference/infer_types_on_generic_instantiations_infer.dart.outline.expect b/pkg/front_end/testcases/inference/infer_types_on_generic_instantiations_infer.dart.outline.expect
index 6186c9d..251b979 100644
--- a/pkg/front_end/testcases/inference/infer_types_on_generic_instantiations_infer.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/infer_types_on_generic_instantiations_infer.dart.outline.expect
@@ -17,12 +17,32 @@
   final field self::A::T* x;
   synthetic constructor •() → self::A<self::A::T*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends core::Object implements self::A<core::int*> {
   synthetic constructor •() → self::B*
     ;
   get x() → dynamic
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method foo() → dynamic
   ;
diff --git a/pkg/front_end/testcases/inference/infer_types_on_generic_instantiations_infer.dart.strong.expect b/pkg/front_end/testcases/inference/infer_types_on_generic_instantiations_infer.dart.strong.expect
index dc05112..44202c7 100644
--- a/pkg/front_end/testcases/inference/infer_types_on_generic_instantiations_infer.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/infer_types_on_generic_instantiations_infer.dart.strong.expect
@@ -18,6 +18,16 @@
   synthetic constructor •() → self::A<self::A::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends core::Object implements self::A<core::int*> {
   synthetic constructor •() → self::B*
@@ -25,6 +35,16 @@
     ;
   get x() → dynamic
     return 3;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method foo() → dynamic {
   core::String* y = new self::B::•().{self::B::x} as{TypeError,ForDynamic} core::String*;
diff --git a/pkg/front_end/testcases/inference/infer_types_on_loop_indices_for_each_loop.dart.outline.expect b/pkg/front_end/testcases/inference/infer_types_on_loop_indices_for_each_loop.dart.outline.expect
index 2ecbacc..9ce9639 100644
--- a/pkg/front_end/testcases/inference/infer_types_on_loop_indices_for_each_loop.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/infer_types_on_loop_indices_for_each_loop.dart.outline.expect
@@ -6,18 +6,48 @@
   field core::int* bar;
   synthetic constructor •() → self::Foo*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Bar<T extends core::Iterable<core::String*>* = core::Iterable<core::String*>*> extends core::Object {
   synthetic constructor •() → self::Bar<self::Bar::T*>*
     ;
   method foo(generic-covariant-impl self::Bar::T* t) → void
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Baz<T extends core::Object* = dynamic, E extends core::Iterable<self::Baz::T*>* = core::Iterable<dynamic>*, S extends self::Baz::E* = core::Iterable<dynamic>*> extends core::Object {
   synthetic constructor •() → self::Baz<self::Baz::T*, self::Baz::E*, self::Baz::S*>*
     ;
   method foo(generic-covariant-impl self::Baz::S* t) → void
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method test() → dynamic
   ;
diff --git a/pkg/front_end/testcases/inference/infer_types_on_loop_indices_for_each_loop.dart.strong.expect b/pkg/front_end/testcases/inference/infer_types_on_loop_indices_for_each_loop.dart.strong.expect
index a073b10..4febb06 100644
--- a/pkg/front_end/testcases/inference/infer_types_on_loop_indices_for_each_loop.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/infer_types_on_loop_indices_for_each_loop.dart.strong.expect
@@ -36,6 +36,16 @@
   synthetic constructor •() → self::Foo*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Bar<T extends core::Iterable<core::String*>* = core::Iterable<core::String*>*> extends core::Object {
   synthetic constructor •() → self::Bar<self::Bar::T*>*
@@ -48,6 +58,16 @@
                                            ^" in i as{TypeError} core::int*;
     }
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Baz<T extends core::Object* = dynamic, E extends core::Iterable<self::Baz::T*>* = core::Iterable<dynamic>*, S extends self::Baz::E* = core::Iterable<dynamic>*> extends core::Object {
   synthetic constructor •() → self::Baz<self::Baz::T*, self::Baz::E*, self::Baz::S*>*
@@ -61,6 +81,16 @@
       self::Baz::T* y = i;
     }
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method test() → dynamic {
   core::List<self::Foo*>* list = <self::Foo*>[];
diff --git a/pkg/front_end/testcases/inference/infer_types_on_loop_indices_for_each_loop.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/infer_types_on_loop_indices_for_each_loop.dart.strong.transformed.expect
index c15b9d3..25572cc 100644
--- a/pkg/front_end/testcases/inference/infer_types_on_loop_indices_for_each_loop.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/infer_types_on_loop_indices_for_each_loop.dart.strong.transformed.expect
@@ -36,6 +36,16 @@
   synthetic constructor •() → self::Foo*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Bar<T extends core::Iterable<core::String*>* = core::Iterable<core::String*>*> extends core::Object {
   synthetic constructor •() → self::Bar<self::Bar::T*>*
@@ -54,6 +64,16 @@
       }
     }
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Baz<T extends core::Object* = dynamic, E extends core::Iterable<self::Baz::T*>* = core::Iterable<dynamic>*, S extends self::Baz::E* = core::Iterable<dynamic>*> extends core::Object {
   synthetic constructor •() → self::Baz<self::Baz::T*, self::Baz::E*, self::Baz::S*>*
@@ -73,6 +93,16 @@
       }
     }
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method test() → dynamic {
   core::List<self::Foo*>* list = <self::Foo*>[];
diff --git a/pkg/front_end/testcases/inference/infer_types_on_loop_indices_for_each_loop_async.dart.outline.expect b/pkg/front_end/testcases/inference/infer_types_on_loop_indices_for_each_loop_async.dart.outline.expect
index 43bc546..a35b11a 100644
--- a/pkg/front_end/testcases/inference/infer_types_on_loop_indices_for_each_loop_async.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/infer_types_on_loop_indices_for_each_loop_async.dart.outline.expect
@@ -9,22 +9,99 @@
   field core::int* bar;
   synthetic constructor •() → self::Foo*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Bar<T extends asy::Stream<core::String*>* = asy::Stream<core::String*>*> extends core::Object {
   synthetic constructor •() → self::Bar<self::Bar::T*>*
     ;
   method foo(generic-covariant-impl self::Bar::T* t) → dynamic
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Baz<T extends core::Object* = dynamic, E extends asy::Stream<self::Baz::T*>* = asy::Stream<dynamic>*, S extends self::Baz::E* = asy::Stream<dynamic>*> extends core::Object {
   synthetic constructor •() → self::Baz<self::Baz::T*, self::Baz::E*, self::Baz::S*>*
     ;
   method foo(generic-covariant-impl self::Baz::S* t) → dynamic
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class MyStream<T extends core::Object* = dynamic> extends asy::Stream<self::MyStream::T*> {
   static factory •<T extends core::Object* = dynamic>() → self::MyStream<self::MyStream::•::T*>*
     ;
+  abstract member-signature get isBroadcast() → core::bool*;
+  abstract member-signature method asBroadcastStream({(asy::StreamSubscription<self::MyStream::T*>*) →* void onListen, (asy::StreamSubscription<self::MyStream::T*>*) →* void onCancel}) → asy::Stream<self::MyStream::T*>*;
+  abstract member-signature method listen((self::MyStream::T*) →* void onData, {core::Function* onError, () →* void onDone, core::bool* cancelOnError}) → asy::StreamSubscription<self::MyStream::T*>*;
+  abstract member-signature method where((self::MyStream::T*) →* core::bool* test) → asy::Stream<self::MyStream::T*>*;
+  abstract member-signature method map<S extends core::Object* = dynamic>((self::MyStream::T*) →* self::MyStream::map::S* convert) → asy::Stream<self::MyStream::map::S*>*;
+  abstract member-signature method asyncMap<E extends core::Object* = dynamic>((self::MyStream::T*) →* asy::FutureOr<self::MyStream::asyncMap::E*>* convert) → asy::Stream<self::MyStream::asyncMap::E*>*;
+  abstract member-signature method asyncExpand<E extends core::Object* = dynamic>((self::MyStream::T*) →* asy::Stream<self::MyStream::asyncExpand::E*>* convert) → asy::Stream<self::MyStream::asyncExpand::E*>*;
+  abstract member-signature method handleError(core::Function* onError, {(dynamic) →* core::bool* test}) → asy::Stream<self::MyStream::T*>*;
+  abstract member-signature method expand<S extends core::Object* = dynamic>((self::MyStream::T*) →* core::Iterable<self::MyStream::expand::S*>* convert) → asy::Stream<self::MyStream::expand::S*>*;
+  abstract member-signature method pipe(generic-covariant-impl asy::StreamConsumer<self::MyStream::T*>* streamConsumer) → asy::Future<dynamic>*;
+  abstract member-signature method transform<S extends core::Object* = dynamic>(generic-covariant-impl asy::StreamTransformer<self::MyStream::T*, self::MyStream::transform::S*>* streamTransformer) → asy::Stream<self::MyStream::transform::S*>*;
+  abstract member-signature method reduce(generic-covariant-impl (self::MyStream::T*, self::MyStream::T*) →* self::MyStream::T* combine) → asy::Future<self::MyStream::T*>*;
+  abstract member-signature method fold<S extends core::Object* = dynamic>(self::MyStream::fold::S* initialValue, (self::MyStream::fold::S*, self::MyStream::T*) →* self::MyStream::fold::S* combine) → asy::Future<self::MyStream::fold::S*>*;
+  abstract member-signature method join([core::String* separator]) → asy::Future<core::String*>*;
+  abstract member-signature method contains(core::Object* needle) → asy::Future<core::bool*>*;
+  abstract member-signature method forEach((self::MyStream::T*) →* void action) → asy::Future<dynamic>*;
+  abstract member-signature method every((self::MyStream::T*) →* core::bool* test) → asy::Future<core::bool*>*;
+  abstract member-signature method any((self::MyStream::T*) →* core::bool* test) → asy::Future<core::bool*>*;
+  abstract member-signature get length() → asy::Future<core::int*>*;
+  abstract member-signature get isEmpty() → asy::Future<core::bool*>*;
+  abstract member-signature method cast<R extends core::Object* = dynamic>() → asy::Stream<self::MyStream::cast::R*>*;
+  abstract member-signature method toList() → asy::Future<core::List<self::MyStream::T*>*>*;
+  abstract member-signature method toSet() → asy::Future<core::Set<self::MyStream::T*>*>*;
+  abstract member-signature method drain<E extends core::Object* = dynamic>([self::MyStream::drain::E* futureValue]) → asy::Future<self::MyStream::drain::E*>*;
+  abstract member-signature method take(core::int* count) → asy::Stream<self::MyStream::T*>*;
+  abstract member-signature method takeWhile((self::MyStream::T*) →* core::bool* test) → asy::Stream<self::MyStream::T*>*;
+  abstract member-signature method skip(core::int* count) → asy::Stream<self::MyStream::T*>*;
+  abstract member-signature method skipWhile((self::MyStream::T*) →* core::bool* test) → asy::Stream<self::MyStream::T*>*;
+  abstract member-signature method distinct([(self::MyStream::T*, self::MyStream::T*) →* core::bool* equals]) → asy::Stream<self::MyStream::T*>*;
+  abstract member-signature get first() → asy::Future<self::MyStream::T*>*;
+  abstract member-signature get last() → asy::Future<self::MyStream::T*>*;
+  abstract member-signature get single() → asy::Future<self::MyStream::T*>*;
+  abstract member-signature method firstWhere((self::MyStream::T*) →* core::bool* test, {generic-covariant-impl () →* self::MyStream::T* orElse}) → asy::Future<self::MyStream::T*>*;
+  abstract member-signature method lastWhere((self::MyStream::T*) →* core::bool* test, {generic-covariant-impl () →* self::MyStream::T* orElse}) → asy::Future<self::MyStream::T*>*;
+  abstract member-signature method singleWhere((self::MyStream::T*) →* core::bool* test, {generic-covariant-impl () →* self::MyStream::T* orElse}) → asy::Future<self::MyStream::T*>*;
+  abstract member-signature method elementAt(core::int* index) → asy::Future<self::MyStream::T*>*;
+  abstract member-signature method timeout(core::Duration* timeLimit, {(asy::EventSink<self::MyStream::T*>*) →* void onTimeout}) → asy::Stream<self::MyStream::T*>*;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method test() → dynamic
   ;
diff --git a/pkg/front_end/testcases/inference/infer_types_on_loop_indices_for_each_loop_async.dart.strong.expect b/pkg/front_end/testcases/inference/infer_types_on_loop_indices_for_each_loop_async.dart.strong.expect
index ba99001..14c4b10 100644
--- a/pkg/front_end/testcases/inference/infer_types_on_loop_indices_for_each_loop_async.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/infer_types_on_loop_indices_for_each_loop_async.dart.strong.expect
@@ -39,6 +39,16 @@
   synthetic constructor •() → self::Foo*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Bar<T extends asy::Stream<core::String*>* = asy::Stream<core::String*>*> extends core::Object {
   synthetic constructor •() → self::Bar<self::Bar::T*>*
@@ -51,6 +61,16 @@
                                            ^" in i as{TypeError} core::int*;
     }
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Baz<T extends core::Object* = dynamic, E extends asy::Stream<self::Baz::T*>* = asy::Stream<dynamic>*, S extends self::Baz::E* = asy::Stream<dynamic>*> extends core::Object {
   synthetic constructor •() → self::Baz<self::Baz::T*, self::Baz::E*, self::Baz::S*>*
@@ -64,10 +84,67 @@
       self::Baz::T* y = i;
     }
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class MyStream<T extends core::Object* = dynamic> extends asy::Stream<self::MyStream::T*> {
   static factory •<T extends core::Object* = dynamic>() → self::MyStream<self::MyStream::•::T*>*
     return null;
+  abstract member-signature get isBroadcast() → core::bool*;
+  abstract member-signature method asBroadcastStream({(asy::StreamSubscription<self::MyStream::T*>*) →* void onListen = #C1, (asy::StreamSubscription<self::MyStream::T*>*) →* void onCancel = #C1}) → asy::Stream<self::MyStream::T*>*;
+  abstract member-signature method listen((self::MyStream::T*) →* void onData, {core::Function* onError = #C1, () →* void onDone = #C1, core::bool* cancelOnError = #C1}) → asy::StreamSubscription<self::MyStream::T*>*;
+  abstract member-signature method where((self::MyStream::T*) →* core::bool* test) → asy::Stream<self::MyStream::T*>*;
+  abstract member-signature method map<S extends core::Object* = dynamic>((self::MyStream::T*) →* self::MyStream::map::S* convert) → asy::Stream<self::MyStream::map::S*>*;
+  abstract member-signature method asyncMap<E extends core::Object* = dynamic>((self::MyStream::T*) →* asy::FutureOr<self::MyStream::asyncMap::E*>* convert) → asy::Stream<self::MyStream::asyncMap::E*>*;
+  abstract member-signature method asyncExpand<E extends core::Object* = dynamic>((self::MyStream::T*) →* asy::Stream<self::MyStream::asyncExpand::E*>* convert) → asy::Stream<self::MyStream::asyncExpand::E*>*;
+  abstract member-signature method handleError(core::Function* onError, {(dynamic) →* core::bool* test = #C1}) → asy::Stream<self::MyStream::T*>*;
+  abstract member-signature method expand<S extends core::Object* = dynamic>((self::MyStream::T*) →* core::Iterable<self::MyStream::expand::S*>* convert) → asy::Stream<self::MyStream::expand::S*>*;
+  abstract member-signature method pipe(generic-covariant-impl asy::StreamConsumer<self::MyStream::T*>* streamConsumer) → asy::Future<dynamic>*;
+  abstract member-signature method transform<S extends core::Object* = dynamic>(generic-covariant-impl asy::StreamTransformer<self::MyStream::T*, self::MyStream::transform::S*>* streamTransformer) → asy::Stream<self::MyStream::transform::S*>*;
+  abstract member-signature method reduce(generic-covariant-impl (self::MyStream::T*, self::MyStream::T*) →* self::MyStream::T* combine) → asy::Future<self::MyStream::T*>*;
+  abstract member-signature method fold<S extends core::Object* = dynamic>(self::MyStream::fold::S* initialValue, (self::MyStream::fold::S*, self::MyStream::T*) →* self::MyStream::fold::S* combine) → asy::Future<self::MyStream::fold::S*>*;
+  abstract member-signature method join([core::String* separator = #C2]) → asy::Future<core::String*>*;
+  abstract member-signature method contains(core::Object* needle) → asy::Future<core::bool*>*;
+  abstract member-signature method forEach((self::MyStream::T*) →* void action) → asy::Future<dynamic>*;
+  abstract member-signature method every((self::MyStream::T*) →* core::bool* test) → asy::Future<core::bool*>*;
+  abstract member-signature method any((self::MyStream::T*) →* core::bool* test) → asy::Future<core::bool*>*;
+  abstract member-signature get length() → asy::Future<core::int*>*;
+  abstract member-signature get isEmpty() → asy::Future<core::bool*>*;
+  abstract member-signature method cast<R extends core::Object* = dynamic>() → asy::Stream<self::MyStream::cast::R*>*;
+  abstract member-signature method toList() → asy::Future<core::List<self::MyStream::T*>*>*;
+  abstract member-signature method toSet() → asy::Future<core::Set<self::MyStream::T*>*>*;
+  abstract member-signature method drain<E extends core::Object* = dynamic>([self::MyStream::drain::E* futureValue = #C1]) → asy::Future<self::MyStream::drain::E*>*;
+  abstract member-signature method take(core::int* count) → asy::Stream<self::MyStream::T*>*;
+  abstract member-signature method takeWhile((self::MyStream::T*) →* core::bool* test) → asy::Stream<self::MyStream::T*>*;
+  abstract member-signature method skip(core::int* count) → asy::Stream<self::MyStream::T*>*;
+  abstract member-signature method skipWhile((self::MyStream::T*) →* core::bool* test) → asy::Stream<self::MyStream::T*>*;
+  abstract member-signature method distinct([(self::MyStream::T*, self::MyStream::T*) →* core::bool* equals = #C1]) → asy::Stream<self::MyStream::T*>*;
+  abstract member-signature get first() → asy::Future<self::MyStream::T*>*;
+  abstract member-signature get last() → asy::Future<self::MyStream::T*>*;
+  abstract member-signature get single() → asy::Future<self::MyStream::T*>*;
+  abstract member-signature method firstWhere((self::MyStream::T*) →* core::bool* test, {generic-covariant-impl () →* self::MyStream::T* orElse = #C1}) → asy::Future<self::MyStream::T*>*;
+  abstract member-signature method lastWhere((self::MyStream::T*) →* core::bool* test, {generic-covariant-impl () →* self::MyStream::T* orElse = #C1}) → asy::Future<self::MyStream::T*>*;
+  abstract member-signature method singleWhere((self::MyStream::T*) →* core::bool* test, {generic-covariant-impl () →* self::MyStream::T* orElse = #C1}) → asy::Future<self::MyStream::T*>*;
+  abstract member-signature method elementAt(core::int* index) → asy::Future<self::MyStream::T*>*;
+  abstract member-signature method timeout(core::Duration* timeLimit, {(asy::EventSink<self::MyStream::T*>*) →* void onTimeout = #C1}) → asy::Stream<self::MyStream::T*>*;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method test() → dynamic async {
   self::MyStream<self::Foo*>* myStream = self::MyStream::•<self::Foo*>();
@@ -114,3 +191,8 @@
   }
 }
 static method main() → dynamic {}
+
+constants  {
+  #C1 = null
+  #C2 = ""
+}
diff --git a/pkg/front_end/testcases/inference/infer_types_on_loop_indices_for_each_loop_async.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/infer_types_on_loop_indices_for_each_loop_async.dart.strong.transformed.expect
index 7959a66..f57d8a3 100644
--- a/pkg/front_end/testcases/inference/infer_types_on_loop_indices_for_each_loop_async.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/infer_types_on_loop_indices_for_each_loop_async.dart.strong.transformed.expect
@@ -40,6 +40,16 @@
   synthetic constructor •() → self::Foo*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Bar<T extends asy::Stream<core::String*>* = asy::Stream<core::String*>*> extends core::Object {
   synthetic constructor •() → self::Bar<self::Bar::T*>*
@@ -70,7 +80,7 @@
               while (true) {
                 dynamic #t1 = asy::_asyncStarMoveNextHelper(:stream);
                 [yield] let dynamic #t2 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::moveNext}(), :async_op_then, :async_op_error, :async_op) in null;
-                if(_in::unsafeCast<core::bool*>(:result)) {
+                if(_in::unsafeCast<core::bool>(:result)) {
                   core::String* i = :for-iterator.{asy::_StreamIterator::current};
                   {
                     core::int* x = let final<BottomType> #t3 = invalid-expression "pkg/front_end/testcases/inference/infer_types_on_loop_indices_for_each_loop_async.dart:17:44: Error: A value of type 'String' can't be assigned to a variable of type 'int'.
@@ -91,8 +101,8 @@
         asy::_completeOnAsyncReturn(:async_completer, :return_value);
         return;
       }
-      on dynamic catch(dynamic :exception, core::StackTrace* :stack_trace) {
-        :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+      on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
+        :async_completer.{asy::Completer::completeError}(exception, stack_trace);
       }
     :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
     :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
@@ -100,6 +110,16 @@
     :async_completer.{asy::_AsyncAwaitCompleter::start}(:async_op);
     return :async_completer.{asy::Completer::future};
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Baz<T extends core::Object* = dynamic, E extends asy::Stream<self::Baz::T*>* = asy::Stream<dynamic>*, S extends self::Baz::E* = asy::Stream<dynamic>*> extends core::Object {
   synthetic constructor •() → self::Baz<self::Baz::T*, self::Baz::E*, self::Baz::S*>*
@@ -130,7 +150,7 @@
               while (true) {
                 dynamic #t5 = asy::_asyncStarMoveNextHelper(:stream);
                 [yield] let dynamic #t6 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::moveNext}(), :async_op_then, :async_op_error, :async_op) in null;
-                if(_in::unsafeCast<core::bool*>(:result)) {
+                if(_in::unsafeCast<core::bool>(:result)) {
                   self::Baz::T* i = :for-iterator.{asy::_StreamIterator::current};
                   {
                     core::int* x = let final<BottomType> #t7 = invalid-expression "pkg/front_end/testcases/inference/infer_types_on_loop_indices_for_each_loop_async.dart:25:44: Error: A value of type 'T' can't be assigned to a variable of type 'int'.
@@ -152,8 +172,8 @@
         asy::_completeOnAsyncReturn(:async_completer, :return_value);
         return;
       }
-      on dynamic catch(dynamic :exception, core::StackTrace* :stack_trace) {
-        :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+      on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
+        :async_completer.{asy::Completer::completeError}(exception, stack_trace);
       }
     :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
     :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
@@ -161,10 +181,67 @@
     :async_completer.{asy::_AsyncAwaitCompleter::start}(:async_op);
     return :async_completer.{asy::Completer::future};
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class MyStream<T extends core::Object* = dynamic> extends asy::Stream<self::MyStream::T*> {
   static factory •<T extends core::Object* = dynamic>() → self::MyStream<self::MyStream::•::T*>*
     return null;
+  abstract member-signature get isBroadcast() → core::bool*;
+  abstract member-signature method asBroadcastStream({(asy::StreamSubscription<self::MyStream::T*>*) →* void onListen = #C1, (asy::StreamSubscription<self::MyStream::T*>*) →* void onCancel = #C1}) → asy::Stream<self::MyStream::T*>*;
+  abstract member-signature method listen((self::MyStream::T*) →* void onData, {core::Function* onError = #C1, () →* void onDone = #C1, core::bool* cancelOnError = #C1}) → asy::StreamSubscription<self::MyStream::T*>*;
+  abstract member-signature method where((self::MyStream::T*) →* core::bool* test) → asy::Stream<self::MyStream::T*>*;
+  abstract member-signature method map<S extends core::Object* = dynamic>((self::MyStream::T*) →* self::MyStream::map::S* convert) → asy::Stream<self::MyStream::map::S*>*;
+  abstract member-signature method asyncMap<E extends core::Object* = dynamic>((self::MyStream::T*) →* asy::FutureOr<self::MyStream::asyncMap::E*>* convert) → asy::Stream<self::MyStream::asyncMap::E*>*;
+  abstract member-signature method asyncExpand<E extends core::Object* = dynamic>((self::MyStream::T*) →* asy::Stream<self::MyStream::asyncExpand::E*>* convert) → asy::Stream<self::MyStream::asyncExpand::E*>*;
+  abstract member-signature method handleError(core::Function* onError, {(dynamic) →* core::bool* test = #C1}) → asy::Stream<self::MyStream::T*>*;
+  abstract member-signature method expand<S extends core::Object* = dynamic>((self::MyStream::T*) →* core::Iterable<self::MyStream::expand::S*>* convert) → asy::Stream<self::MyStream::expand::S*>*;
+  abstract member-signature method pipe(generic-covariant-impl asy::StreamConsumer<self::MyStream::T*>* streamConsumer) → asy::Future<dynamic>*;
+  abstract member-signature method transform<S extends core::Object* = dynamic>(generic-covariant-impl asy::StreamTransformer<self::MyStream::T*, self::MyStream::transform::S*>* streamTransformer) → asy::Stream<self::MyStream::transform::S*>*;
+  abstract member-signature method reduce(generic-covariant-impl (self::MyStream::T*, self::MyStream::T*) →* self::MyStream::T* combine) → asy::Future<self::MyStream::T*>*;
+  abstract member-signature method fold<S extends core::Object* = dynamic>(self::MyStream::fold::S* initialValue, (self::MyStream::fold::S*, self::MyStream::T*) →* self::MyStream::fold::S* combine) → asy::Future<self::MyStream::fold::S*>*;
+  abstract member-signature method join([core::String* separator = #C2]) → asy::Future<core::String*>*;
+  abstract member-signature method contains(core::Object* needle) → asy::Future<core::bool*>*;
+  abstract member-signature method forEach((self::MyStream::T*) →* void action) → asy::Future<dynamic>*;
+  abstract member-signature method every((self::MyStream::T*) →* core::bool* test) → asy::Future<core::bool*>*;
+  abstract member-signature method any((self::MyStream::T*) →* core::bool* test) → asy::Future<core::bool*>*;
+  abstract member-signature get length() → asy::Future<core::int*>*;
+  abstract member-signature get isEmpty() → asy::Future<core::bool*>*;
+  abstract member-signature method cast<R extends core::Object* = dynamic>() → asy::Stream<self::MyStream::cast::R*>*;
+  abstract member-signature method toList() → asy::Future<core::List<self::MyStream::T*>*>*;
+  abstract member-signature method toSet() → asy::Future<core::Set<self::MyStream::T*>*>*;
+  abstract member-signature method drain<E extends core::Object* = dynamic>([self::MyStream::drain::E* futureValue = #C1]) → asy::Future<self::MyStream::drain::E*>*;
+  abstract member-signature method take(core::int* count) → asy::Stream<self::MyStream::T*>*;
+  abstract member-signature method takeWhile((self::MyStream::T*) →* core::bool* test) → asy::Stream<self::MyStream::T*>*;
+  abstract member-signature method skip(core::int* count) → asy::Stream<self::MyStream::T*>*;
+  abstract member-signature method skipWhile((self::MyStream::T*) →* core::bool* test) → asy::Stream<self::MyStream::T*>*;
+  abstract member-signature method distinct([(self::MyStream::T*, self::MyStream::T*) →* core::bool* equals = #C1]) → asy::Stream<self::MyStream::T*>*;
+  abstract member-signature get first() → asy::Future<self::MyStream::T*>*;
+  abstract member-signature get last() → asy::Future<self::MyStream::T*>*;
+  abstract member-signature get single() → asy::Future<self::MyStream::T*>*;
+  abstract member-signature method firstWhere((self::MyStream::T*) →* core::bool* test, {generic-covariant-impl () →* self::MyStream::T* orElse = #C1}) → asy::Future<self::MyStream::T*>*;
+  abstract member-signature method lastWhere((self::MyStream::T*) →* core::bool* test, {generic-covariant-impl () →* self::MyStream::T* orElse = #C1}) → asy::Future<self::MyStream::T*>*;
+  abstract member-signature method singleWhere((self::MyStream::T*) →* core::bool* test, {generic-covariant-impl () →* self::MyStream::T* orElse = #C1}) → asy::Future<self::MyStream::T*>*;
+  abstract member-signature method elementAt(core::int* index) → asy::Future<self::MyStream::T*>*;
+  abstract member-signature method timeout(core::Duration* timeLimit, {(asy::EventSink<self::MyStream::T*>*) →* void onTimeout = #C1}) → asy::Stream<self::MyStream::T*>*;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method test() → dynamic /* originally async */ {
   final asy::_AsyncAwaitCompleter<dynamic>* :async_completer = new asy::_AsyncAwaitCompleter::•<dynamic>();
@@ -192,7 +269,7 @@
             while (true) {
               dynamic #t9 = asy::_asyncStarMoveNextHelper(:stream);
               [yield] let dynamic #t10 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::moveNext}(), :async_op_then, :async_op_error, :async_op) in null;
-              if(_in::unsafeCast<core::bool*>(:result)) {
+              if(_in::unsafeCast<core::bool>(:result)) {
                 self::Foo* x = :for-iterator.{asy::_StreamIterator::current};
                 {
                   core::String* y = let final<BottomType> #t11 = invalid-expression "pkg/front_end/testcases/inference/infer_types_on_loop_indices_for_each_loop_async.dart:38:45: Error: A value of type 'Foo' can't be assigned to a variable of type 'String'.
@@ -219,7 +296,7 @@
             while (true) {
               dynamic #t13 = asy::_asyncStarMoveNextHelper(:stream);
               [yield] let dynamic #t14 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::moveNext}(), :async_op_then, :async_op_error, :async_op) in null;
-              if(_in::unsafeCast<core::bool*>(:result)) {
+              if(_in::unsafeCast<core::bool>(:result)) {
                 dynamic x = :for-iterator.{asy::_StreamIterator::current};
                 {
                   core::String* y = x as{TypeError,ForDynamic} core::String*;
@@ -243,7 +320,7 @@
             while (true) {
               dynamic #t16 = asy::_asyncStarMoveNextHelper(:stream);
               [yield] let dynamic #t17 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::moveNext}(), :async_op_then, :async_op_error, :async_op) in null;
-              if(_in::unsafeCast<core::bool*>(:result)) {
+              if(_in::unsafeCast<core::bool>(:result)) {
                 final self::Foo* #t18 = :for-iterator.{asy::_StreamIterator::current};
                 {
                   core::String* x = let final<BottomType> #t19 = invalid-expression "pkg/front_end/testcases/inference/infer_types_on_loop_indices_for_each_loop_async.dart:45:21: Error: A value of type 'Foo' can't be assigned to a variable of type 'String'.
@@ -273,7 +350,7 @@
             while (true) {
               dynamic #t21 = asy::_asyncStarMoveNextHelper(:stream);
               [yield] let dynamic #t22 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::moveNext}(), :async_op_then, :async_op_error, :async_op) in null;
-              if(_in::unsafeCast<core::bool*>(:result)) {
+              if(_in::unsafeCast<core::bool>(:result)) {
                 final self::Foo* #t23 = :for-iterator.{asy::_StreamIterator::current};
                 {
                   z = #t23;
@@ -299,7 +376,7 @@
             while (true) {
               dynamic #t25 = asy::_asyncStarMoveNextHelper(:stream);
               [yield] let dynamic #t26 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::moveNext}(), :async_op_then, :async_op_error, :async_op) in null;
-              if(_in::unsafeCast<core::bool*>(:result)) {
+              if(_in::unsafeCast<core::bool>(:result)) {
                 final dynamic #t27 = :for-iterator.{asy::_StreamIterator::current};
                 {
                   self::Foo* x = #t27 as{TypeError,ForDynamic} self::Foo*;
@@ -325,7 +402,7 @@
             while (true) {
               dynamic #t29 = asy::_asyncStarMoveNextHelper(:stream);
               [yield] let dynamic #t30 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::moveNext}(), :async_op_then, :async_op_error, :async_op) in null;
-              if(_in::unsafeCast<core::bool*>(:result)) {
+              if(_in::unsafeCast<core::bool>(:result)) {
                 final dynamic #t31 = :for-iterator.{asy::_StreamIterator::current};
                 {
                   self::Foo* x = #t31 as{TypeError,ForDynamic} self::Foo*;
@@ -356,7 +433,7 @@
             while (true) {
               dynamic #t34 = asy::_asyncStarMoveNextHelper(:stream);
               [yield] let dynamic #t35 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::moveNext}(), :async_op_then, :async_op_error, :async_op) in null;
-              if(_in::unsafeCast<core::bool*>(:result)) {
+              if(_in::unsafeCast<core::bool>(:result)) {
                 dynamic x = :for-iterator.{asy::_StreamIterator::current};
                 {
                   core::String* y = x as{TypeError,ForDynamic} core::String*;
@@ -375,8 +452,8 @@
       asy::_completeOnAsyncReturn(:async_completer, :return_value);
       return;
     }
-    on dynamic catch(dynamic :exception, core::StackTrace* :stack_trace) {
-      :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+    on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
+      :async_completer.{asy::Completer::completeError}(exception, stack_trace);
     }
   :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
@@ -385,3 +462,8 @@
   return :async_completer.{asy::Completer::future};
 }
 static method main() → dynamic {}
+
+constants  {
+  #C1 = null
+  #C2 = ""
+}
diff --git a/pkg/front_end/testcases/inference/inferred_initializing_formal_checks_default_value.dart.outline.expect b/pkg/front_end/testcases/inference/inferred_initializing_formal_checks_default_value.dart.outline.expect
index e484bfb..1376aa1 100644
--- a/pkg/front_end/testcases/inference/inferred_initializing_formal_checks_default_value.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/inferred_initializing_formal_checks_default_value.dart.outline.expect
@@ -6,6 +6,16 @@
   field core::int* x;
   constructor •([core::int* x]) → self::Foo*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/inference/inferred_initializing_formal_checks_default_value.dart.strong.expect b/pkg/front_end/testcases/inference/inferred_initializing_formal_checks_default_value.dart.strong.expect
index 3caa837..70851b5 100644
--- a/pkg/front_end/testcases/inference/inferred_initializing_formal_checks_default_value.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/inferred_initializing_formal_checks_default_value.dart.strong.expect
@@ -16,5 +16,15 @@
                                              ^"]) → self::Foo*
     : self::Foo::x = x, super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/inferred_initializing_formal_checks_default_value.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/inferred_initializing_formal_checks_default_value.dart.strong.transformed.expect
index 3caa837..70851b5 100644
--- a/pkg/front_end/testcases/inference/inferred_initializing_formal_checks_default_value.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/inferred_initializing_formal_checks_default_value.dart.strong.transformed.expect
@@ -16,5 +16,15 @@
                                              ^"]) → self::Foo*
     : self::Foo::x = x, super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/inferred_nonstatic_field_depends_on_static_field_complex.dart.outline.expect b/pkg/front_end/testcases/inference/inferred_nonstatic_field_depends_on_static_field_complex.dart.outline.expect
index 10e00b4..ce99c8e 100644
--- a/pkg/front_end/testcases/inference/inferred_nonstatic_field_depends_on_static_field_complex.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/inferred_nonstatic_field_depends_on_static_field_complex.dart.outline.expect
@@ -7,6 +7,16 @@
   field core::Map<core::String*, core::Map<core::String*, core::String*>*>* y;
   synthetic constructor •() → self::C*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/inference/inferred_nonstatic_field_depends_on_static_field_complex.dart.strong.expect b/pkg/front_end/testcases/inference/inferred_nonstatic_field_depends_on_static_field_complex.dart.strong.expect
index 9560f0e..53809a9 100644
--- a/pkg/front_end/testcases/inference/inferred_nonstatic_field_depends_on_static_field_complex.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/inferred_nonstatic_field_depends_on_static_field_complex.dart.strong.expect
@@ -8,5 +8,15 @@
   synthetic constructor •() → self::C*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/inferred_nonstatic_field_depends_on_static_field_complex.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/inferred_nonstatic_field_depends_on_static_field_complex.dart.strong.transformed.expect
index 9560f0e..53809a9 100644
--- a/pkg/front_end/testcases/inference/inferred_nonstatic_field_depends_on_static_field_complex.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/inferred_nonstatic_field_depends_on_static_field_complex.dart.strong.transformed.expect
@@ -8,5 +8,15 @@
   synthetic constructor •() → self::C*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/inferred_nonstatic_field_depends_on_top_level_var_simple.dart.outline.expect b/pkg/front_end/testcases/inference/inferred_nonstatic_field_depends_on_top_level_var_simple.dart.outline.expect
index 546284f..d0cc521 100644
--- a/pkg/front_end/testcases/inference/inferred_nonstatic_field_depends_on_top_level_var_simple.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/inferred_nonstatic_field_depends_on_top_level_var_simple.dart.outline.expect
@@ -6,6 +6,16 @@
   field core::String* y;
   synthetic constructor •() → self::C*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field core::String* x;
 static method main() → dynamic
diff --git a/pkg/front_end/testcases/inference/inferred_nonstatic_field_depends_on_top_level_var_simple.dart.strong.expect b/pkg/front_end/testcases/inference/inferred_nonstatic_field_depends_on_top_level_var_simple.dart.strong.expect
index 909314e..913fac3 100644
--- a/pkg/front_end/testcases/inference/inferred_nonstatic_field_depends_on_top_level_var_simple.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/inferred_nonstatic_field_depends_on_top_level_var_simple.dart.strong.expect
@@ -7,6 +7,16 @@
   synthetic constructor •() → self::C*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field core::String* x = "x";
 static method main() → dynamic {
diff --git a/pkg/front_end/testcases/inference/inferred_nonstatic_field_depends_on_top_level_var_simple.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/inferred_nonstatic_field_depends_on_top_level_var_simple.dart.strong.transformed.expect
index 909314e..913fac3 100644
--- a/pkg/front_end/testcases/inference/inferred_nonstatic_field_depends_on_top_level_var_simple.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/inferred_nonstatic_field_depends_on_top_level_var_simple.dart.strong.transformed.expect
@@ -7,6 +7,16 @@
   synthetic constructor •() → self::C*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field core::String* x = "x";
 static method main() → dynamic {
diff --git a/pkg/front_end/testcases/inference/inferred_type_block_closure_no_args_no_return_void_context.dart.outline.expect b/pkg/front_end/testcases/inference/inferred_type_block_closure_no_args_no_return_void_context.dart.outline.expect
index 5de157e..4929ff6 100644
--- a/pkg/front_end/testcases/inference/inferred_type_block_closure_no_args_no_return_void_context.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/inferred_type_block_closure_no_args_no_return_void_context.dart.outline.expect
@@ -5,6 +5,16 @@
 class C extends core::Object {
   constructor •(() →* void func) → self::C*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/inference/inferred_type_block_closure_no_args_no_return_void_context.dart.strong.expect b/pkg/front_end/testcases/inference/inferred_type_block_closure_no_args_no_return_void_context.dart.strong.expect
index e20719a..1a63793 100644
--- a/pkg/front_end/testcases/inference/inferred_type_block_closure_no_args_no_return_void_context.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/inferred_type_block_closure_no_args_no_return_void_context.dart.strong.expect
@@ -5,6 +5,16 @@
 class C extends core::Object {
   constructor •(() →* void func) → self::C*
     : super core::Object::•() {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   self::C* c = new self::C::•(() → core::Null? {});
diff --git a/pkg/front_end/testcases/inference/inferred_type_block_closure_no_args_no_return_void_context.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/inferred_type_block_closure_no_args_no_return_void_context.dart.strong.transformed.expect
index e20719a..1a63793 100644
--- a/pkg/front_end/testcases/inference/inferred_type_block_closure_no_args_no_return_void_context.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/inferred_type_block_closure_no_args_no_return_void_context.dart.strong.transformed.expect
@@ -5,6 +5,16 @@
 class C extends core::Object {
   constructor •(() →* void func) → self::C*
     : super core::Object::•() {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   self::C* c = new self::C::•(() → core::Null? {});
diff --git a/pkg/front_end/testcases/inference/inferred_type_cascade.dart.outline.expect b/pkg/front_end/testcases/inference/inferred_type_cascade.dart.outline.expect
index 558a097..ddc2a2e 100644
--- a/pkg/front_end/testcases/inference/inferred_type_cascade.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/inferred_type_cascade.dart.outline.expect
@@ -9,6 +9,16 @@
     ;
   method m() → void
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field self::A* v;
 static method main() → dynamic
diff --git a/pkg/front_end/testcases/inference/inferred_type_cascade.dart.strong.expect b/pkg/front_end/testcases/inference/inferred_type_cascade.dart.strong.expect
index 91c3721..f1df00a 100644
--- a/pkg/front_end/testcases/inference/inferred_type_cascade.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/inferred_type_cascade.dart.strong.expect
@@ -9,6 +9,16 @@
     : super core::Object::•()
     ;
   method m() → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field self::A* v = let final self::A* #t1 = new self::A::•() in let final void #t2 = #t1.{self::A::a} = 1 in let final void #t3 = #t1.{self::A::b}.{core::List::add}(2) in let final void #t4 = #t1.{self::A::m}() in #t1;
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/inferred_type_cascade.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/inferred_type_cascade.dart.strong.transformed.expect
index 91c3721..f1df00a 100644
--- a/pkg/front_end/testcases/inference/inferred_type_cascade.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/inferred_type_cascade.dart.strong.transformed.expect
@@ -9,6 +9,16 @@
     : super core::Object::•()
     ;
   method m() → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field self::A* v = let final self::A* #t1 = new self::A::•() in let final void #t2 = #t1.{self::A::a} = 1 in let final void #t3 = #t1.{self::A::b}.{core::List::add}(2) in let final void #t4 = #t1.{self::A::m}() in #t1;
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/inferred_type_custom_binary_op.dart.outline.expect b/pkg/front_end/testcases/inference/inferred_type_custom_binary_op.dart.outline.expect
index 023351f..aa4421d 100644
--- a/pkg/front_end/testcases/inference/inferred_type_custom_binary_op.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/inferred_type_custom_binary_op.dart.outline.expect
@@ -7,6 +7,16 @@
     ;
   operator *(self::C* other) → core::bool*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field self::C* c;
 static field core::bool* x;
diff --git a/pkg/front_end/testcases/inference/inferred_type_custom_binary_op.dart.strong.expect b/pkg/front_end/testcases/inference/inferred_type_custom_binary_op.dart.strong.expect
index 5640154..70074cc 100644
--- a/pkg/front_end/testcases/inference/inferred_type_custom_binary_op.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/inferred_type_custom_binary_op.dart.strong.expect
@@ -8,6 +8,16 @@
     ;
   operator *(self::C* other) → core::bool*
     return true;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field self::C* c = new self::C::•();
 static field core::bool* x = self::c.{self::C::*}(self::c);
diff --git a/pkg/front_end/testcases/inference/inferred_type_custom_binary_op.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/inferred_type_custom_binary_op.dart.strong.transformed.expect
index 5640154..70074cc 100644
--- a/pkg/front_end/testcases/inference/inferred_type_custom_binary_op.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/inferred_type_custom_binary_op.dart.strong.transformed.expect
@@ -8,6 +8,16 @@
     ;
   operator *(self::C* other) → core::bool*
     return true;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field self::C* c = new self::C::•();
 static field core::bool* x = self::c.{self::C::*}(self::c);
diff --git a/pkg/front_end/testcases/inference/inferred_type_custom_binary_op_via_interface.dart.outline.expect b/pkg/front_end/testcases/inference/inferred_type_custom_binary_op_via_interface.dart.outline.expect
index e63cff7..218170d 100644
--- a/pkg/front_end/testcases/inference/inferred_type_custom_binary_op_via_interface.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/inferred_type_custom_binary_op_via_interface.dart.outline.expect
@@ -7,10 +7,30 @@
     ;
   operator *(self::C* other) → core::bool*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class C extends core::Object implements self::I {
   synthetic constructor •() → self::C*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field self::C* c;
 static field core::bool* x;
diff --git a/pkg/front_end/testcases/inference/inferred_type_custom_binary_op_via_interface.dart.strong.expect b/pkg/front_end/testcases/inference/inferred_type_custom_binary_op_via_interface.dart.strong.expect
index ef7e2fb..18772ea 100644
--- a/pkg/front_end/testcases/inference/inferred_type_custom_binary_op_via_interface.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/inferred_type_custom_binary_op_via_interface.dart.strong.expect
@@ -8,11 +8,31 @@
     ;
   operator *(self::C* other) → core::bool*
     return true;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class C extends core::Object implements self::I {
   synthetic constructor •() → self::C*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field self::C* c;
 static field core::bool* x = self::c.{self::I::*}(self::c);
diff --git a/pkg/front_end/testcases/inference/inferred_type_custom_binary_op_via_interface.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/inferred_type_custom_binary_op_via_interface.dart.strong.transformed.expect
index ef7e2fb..18772ea 100644
--- a/pkg/front_end/testcases/inference/inferred_type_custom_binary_op_via_interface.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/inferred_type_custom_binary_op_via_interface.dart.strong.transformed.expect
@@ -8,11 +8,31 @@
     ;
   operator *(self::C* other) → core::bool*
     return true;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class C extends core::Object implements self::I {
   synthetic constructor •() → self::C*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field self::C* c;
 static field core::bool* x = self::c.{self::I::*}(self::c);
diff --git a/pkg/front_end/testcases/inference/inferred_type_custom_index_op.dart.outline.expect b/pkg/front_end/testcases/inference/inferred_type_custom_index_op.dart.outline.expect
index 0bc720e..223072f 100644
--- a/pkg/front_end/testcases/inference/inferred_type_custom_index_op.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/inferred_type_custom_index_op.dart.outline.expect
@@ -7,6 +7,16 @@
     ;
   operator [](core::int* index) → core::bool*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/inference/inferred_type_custom_index_op.dart.strong.expect b/pkg/front_end/testcases/inference/inferred_type_custom_index_op.dart.strong.expect
index ac50c97..0425a7b 100644
--- a/pkg/front_end/testcases/inference/inferred_type_custom_index_op.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/inferred_type_custom_index_op.dart.strong.expect
@@ -8,6 +8,16 @@
     ;
   operator [](core::int* index) → core::bool*
     return true;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   self::C* c = new self::C::•();
diff --git a/pkg/front_end/testcases/inference/inferred_type_custom_index_op.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/inferred_type_custom_index_op.dart.strong.transformed.expect
index ac50c97..0425a7b 100644
--- a/pkg/front_end/testcases/inference/inferred_type_custom_index_op.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/inferred_type_custom_index_op.dart.strong.transformed.expect
@@ -8,6 +8,16 @@
     ;
   operator [](core::int* index) → core::bool*
     return true;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   self::C* c = new self::C::•();
diff --git a/pkg/front_end/testcases/inference/inferred_type_custom_index_op_via_interface.dart.outline.expect b/pkg/front_end/testcases/inference/inferred_type_custom_index_op_via_interface.dart.outline.expect
index 071abaa..650b9d3 100644
--- a/pkg/front_end/testcases/inference/inferred_type_custom_index_op_via_interface.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/inferred_type_custom_index_op_via_interface.dart.outline.expect
@@ -7,10 +7,30 @@
     ;
   operator [](core::int* index) → core::bool*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class C extends core::Object implements self::I {
   synthetic constructor •() → self::C*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method f() → dynamic
   ;
diff --git a/pkg/front_end/testcases/inference/inferred_type_custom_index_op_via_interface.dart.strong.expect b/pkg/front_end/testcases/inference/inferred_type_custom_index_op_via_interface.dart.strong.expect
index 7ab0f9c..5cf1a2a 100644
--- a/pkg/front_end/testcases/inference/inferred_type_custom_index_op_via_interface.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/inferred_type_custom_index_op_via_interface.dart.strong.expect
@@ -8,11 +8,31 @@
     ;
   operator [](core::int* index) → core::bool*
     return true;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class C extends core::Object implements self::I {
   synthetic constructor •() → self::C*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method f() → dynamic {
   self::C* c;
diff --git a/pkg/front_end/testcases/inference/inferred_type_custom_index_op_via_interface.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/inferred_type_custom_index_op_via_interface.dart.strong.transformed.expect
index 7ab0f9c..5cf1a2a 100644
--- a/pkg/front_end/testcases/inference/inferred_type_custom_index_op_via_interface.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/inferred_type_custom_index_op_via_interface.dart.strong.transformed.expect
@@ -8,11 +8,31 @@
     ;
   operator [](core::int* index) → core::bool*
     return true;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class C extends core::Object implements self::I {
   synthetic constructor •() → self::C*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method f() → dynamic {
   self::C* c;
diff --git a/pkg/front_end/testcases/inference/inferred_type_custom_unary_op.dart.outline.expect b/pkg/front_end/testcases/inference/inferred_type_custom_unary_op.dart.outline.expect
index 4c4ec52..32b6b8a 100644
--- a/pkg/front_end/testcases/inference/inferred_type_custom_unary_op.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/inferred_type_custom_unary_op.dart.outline.expect
@@ -7,6 +7,16 @@
     ;
   operator unary-() → core::bool*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field self::C* c;
 static field core::bool* x;
diff --git a/pkg/front_end/testcases/inference/inferred_type_custom_unary_op.dart.strong.expect b/pkg/front_end/testcases/inference/inferred_type_custom_unary_op.dart.strong.expect
index efb02c9..1e5105c 100644
--- a/pkg/front_end/testcases/inference/inferred_type_custom_unary_op.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/inferred_type_custom_unary_op.dart.strong.expect
@@ -8,6 +8,16 @@
     ;
   operator unary-() → core::bool*
     return true;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field self::C* c = new self::C::•();
 static field core::bool* x = self::c.{self::C::unary-}();
diff --git a/pkg/front_end/testcases/inference/inferred_type_custom_unary_op.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/inferred_type_custom_unary_op.dart.strong.transformed.expect
index efb02c9..1e5105c 100644
--- a/pkg/front_end/testcases/inference/inferred_type_custom_unary_op.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/inferred_type_custom_unary_op.dart.strong.transformed.expect
@@ -8,6 +8,16 @@
     ;
   operator unary-() → core::bool*
     return true;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field self::C* c = new self::C::•();
 static field core::bool* x = self::c.{self::C::unary-}();
diff --git a/pkg/front_end/testcases/inference/inferred_type_custom_unary_op_via_interface.dart.outline.expect b/pkg/front_end/testcases/inference/inferred_type_custom_unary_op_via_interface.dart.outline.expect
index 01d1040..d4df975 100644
--- a/pkg/front_end/testcases/inference/inferred_type_custom_unary_op_via_interface.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/inferred_type_custom_unary_op_via_interface.dart.outline.expect
@@ -7,10 +7,30 @@
     ;
   operator unary-() → core::bool*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class C extends core::Object implements self::I {
   synthetic constructor •() → self::C*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field self::C* c;
 static field core::bool* x;
diff --git a/pkg/front_end/testcases/inference/inferred_type_custom_unary_op_via_interface.dart.strong.expect b/pkg/front_end/testcases/inference/inferred_type_custom_unary_op_via_interface.dart.strong.expect
index 5c3dd4f..a2898ae 100644
--- a/pkg/front_end/testcases/inference/inferred_type_custom_unary_op_via_interface.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/inferred_type_custom_unary_op_via_interface.dart.strong.expect
@@ -8,11 +8,31 @@
     ;
   operator unary-() → core::bool*
     return true;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class C extends core::Object implements self::I {
   synthetic constructor •() → self::C*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field self::C* c;
 static field core::bool* x = self::c.{self::I::unary-}();
diff --git a/pkg/front_end/testcases/inference/inferred_type_custom_unary_op_via_interface.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/inferred_type_custom_unary_op_via_interface.dart.strong.transformed.expect
index 5c3dd4f..a2898ae 100644
--- a/pkg/front_end/testcases/inference/inferred_type_custom_unary_op_via_interface.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/inferred_type_custom_unary_op_via_interface.dart.strong.transformed.expect
@@ -8,11 +8,31 @@
     ;
   operator unary-() → core::bool*
     return true;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class C extends core::Object implements self::I {
   synthetic constructor •() → self::C*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field self::C* c;
 static field core::bool* x = self::c.{self::I::unary-}();
diff --git a/pkg/front_end/testcases/inference/inferred_type_extract_method_tear_off.dart.outline.expect b/pkg/front_end/testcases/inference/inferred_type_extract_method_tear_off.dart.outline.expect
index 7f7e2d3..d15de27 100644
--- a/pkg/front_end/testcases/inference/inferred_type_extract_method_tear_off.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/inferred_type_extract_method_tear_off.dart.outline.expect
@@ -7,6 +7,16 @@
     ;
   method g() → core::bool*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field () →* core::bool* x;
 static method f() → self::C*
diff --git a/pkg/front_end/testcases/inference/inferred_type_extract_method_tear_off.dart.strong.expect b/pkg/front_end/testcases/inference/inferred_type_extract_method_tear_off.dart.strong.expect
index 5f49749..8f9de2f 100644
--- a/pkg/front_end/testcases/inference/inferred_type_extract_method_tear_off.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/inferred_type_extract_method_tear_off.dart.strong.expect
@@ -8,6 +8,16 @@
     ;
   method g() → core::bool*
     return true;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field () →* core::bool* x = self::f().{self::C::g};
 static method f() → self::C*
diff --git a/pkg/front_end/testcases/inference/inferred_type_extract_method_tear_off.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/inferred_type_extract_method_tear_off.dart.strong.transformed.expect
index 5f49749..8f9de2f 100644
--- a/pkg/front_end/testcases/inference/inferred_type_extract_method_tear_off.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/inferred_type_extract_method_tear_off.dart.strong.transformed.expect
@@ -8,6 +8,16 @@
     ;
   method g() → core::bool*
     return true;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field () →* core::bool* x = self::f().{self::C::g};
 static method f() → self::C*
diff --git a/pkg/front_end/testcases/inference/inferred_type_extract_method_tear_off_via_interface.dart.outline.expect b/pkg/front_end/testcases/inference/inferred_type_extract_method_tear_off_via_interface.dart.outline.expect
index dd6d6c5..3d11bf0 100644
--- a/pkg/front_end/testcases/inference/inferred_type_extract_method_tear_off_via_interface.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/inferred_type_extract_method_tear_off_via_interface.dart.outline.expect
@@ -7,10 +7,30 @@
     ;
   method g() → core::bool*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class C extends core::Object implements self::I {
   synthetic constructor •() → self::C*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field () →* core::bool* x;
 static method f() → self::C*
diff --git a/pkg/front_end/testcases/inference/inferred_type_extract_method_tear_off_via_interface.dart.strong.expect b/pkg/front_end/testcases/inference/inferred_type_extract_method_tear_off_via_interface.dart.strong.expect
index 05ac91e..8727be8 100644
--- a/pkg/front_end/testcases/inference/inferred_type_extract_method_tear_off_via_interface.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/inferred_type_extract_method_tear_off_via_interface.dart.strong.expect
@@ -8,11 +8,31 @@
     ;
   method g() → core::bool*
     return true;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class C extends core::Object implements self::I {
   synthetic constructor •() → self::C*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field () →* core::bool* x = self::f().{self::I::g};
 static method f() → self::C*
diff --git a/pkg/front_end/testcases/inference/inferred_type_extract_method_tear_off_via_interface.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/inferred_type_extract_method_tear_off_via_interface.dart.strong.transformed.expect
index 05ac91e..8727be8 100644
--- a/pkg/front_end/testcases/inference/inferred_type_extract_method_tear_off_via_interface.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/inferred_type_extract_method_tear_off_via_interface.dart.strong.transformed.expect
@@ -8,11 +8,31 @@
     ;
   method g() → core::bool*
     return true;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class C extends core::Object implements self::I {
   synthetic constructor •() → self::C*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field () →* core::bool* x = self::f().{self::I::g};
 static method f() → self::C*
diff --git a/pkg/front_end/testcases/inference/inferred_type_invoke_method.dart.outline.expect b/pkg/front_end/testcases/inference/inferred_type_invoke_method.dart.outline.expect
index 64a0c83..3cb4d3f 100644
--- a/pkg/front_end/testcases/inference/inferred_type_invoke_method.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/inferred_type_invoke_method.dart.outline.expect
@@ -7,6 +7,16 @@
     ;
   method g() → core::bool*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field core::bool* x;
 static method f() → self::C*
diff --git a/pkg/front_end/testcases/inference/inferred_type_invoke_method.dart.strong.expect b/pkg/front_end/testcases/inference/inferred_type_invoke_method.dart.strong.expect
index 3326401..99d5761 100644
--- a/pkg/front_end/testcases/inference/inferred_type_invoke_method.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/inferred_type_invoke_method.dart.strong.expect
@@ -8,6 +8,16 @@
     ;
   method g() → core::bool*
     return true;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field core::bool* x = self::f().{self::C::g}();
 static method f() → self::C*
diff --git a/pkg/front_end/testcases/inference/inferred_type_invoke_method.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/inferred_type_invoke_method.dart.strong.transformed.expect
index 3326401..99d5761 100644
--- a/pkg/front_end/testcases/inference/inferred_type_invoke_method.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/inferred_type_invoke_method.dart.strong.transformed.expect
@@ -8,6 +8,16 @@
     ;
   method g() → core::bool*
     return true;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field core::bool* x = self::f().{self::C::g}();
 static method f() → self::C*
diff --git a/pkg/front_end/testcases/inference/inferred_type_invoke_method_via_interface.dart.outline.expect b/pkg/front_end/testcases/inference/inferred_type_invoke_method_via_interface.dart.outline.expect
index 1dc5beb..0a48734 100644
--- a/pkg/front_end/testcases/inference/inferred_type_invoke_method_via_interface.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/inferred_type_invoke_method_via_interface.dart.outline.expect
@@ -7,10 +7,30 @@
     ;
   method g() → core::bool*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class C extends core::Object implements self::I {
   synthetic constructor •() → self::C*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field core::bool* x;
 static method f() → self::C*
diff --git a/pkg/front_end/testcases/inference/inferred_type_invoke_method_via_interface.dart.strong.expect b/pkg/front_end/testcases/inference/inferred_type_invoke_method_via_interface.dart.strong.expect
index ef25ea2..eacdb7c 100644
--- a/pkg/front_end/testcases/inference/inferred_type_invoke_method_via_interface.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/inferred_type_invoke_method_via_interface.dart.strong.expect
@@ -8,11 +8,31 @@
     ;
   method g() → core::bool*
     return true;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class C extends core::Object implements self::I {
   synthetic constructor •() → self::C*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field core::bool* x = self::f().{self::I::g}();
 static method f() → self::C*
diff --git a/pkg/front_end/testcases/inference/inferred_type_invoke_method_via_interface.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/inferred_type_invoke_method_via_interface.dart.strong.transformed.expect
index ef25ea2..eacdb7c 100644
--- a/pkg/front_end/testcases/inference/inferred_type_invoke_method_via_interface.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/inferred_type_invoke_method_via_interface.dart.strong.transformed.expect
@@ -8,11 +8,31 @@
     ;
   method g() → core::bool*
     return true;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class C extends core::Object implements self::I {
   synthetic constructor •() → self::C*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field core::bool* x = self::f().{self::I::g}();
 static method f() → self::C*
diff --git a/pkg/front_end/testcases/inference/inferred_type_is_enum.dart.outline.expect b/pkg/front_end/testcases/inference/inferred_type_is_enum.dart.outline.expect
index b62af69..45165a0 100644
--- a/pkg/front_end/testcases/inference/inferred_type_is_enum.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/inferred_type_is_enum.dart.outline.expect
@@ -12,6 +12,15 @@
     ;
   method toString() → core::String*
     return this.{=self::E::_name};
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static final field self::E* x;
 static method main() → dynamic
diff --git a/pkg/front_end/testcases/inference/inferred_type_is_enum.dart.strong.expect b/pkg/front_end/testcases/inference/inferred_type_is_enum.dart.strong.expect
index 0ea8ae2..68aef71 100644
--- a/pkg/front_end/testcases/inference/inferred_type_is_enum.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/inferred_type_is_enum.dart.strong.expect
@@ -12,6 +12,15 @@
     ;
   method toString() → core::String*
     return this.{=self::E::_name};
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static final field self::E* x = #C3;
 static method main() → dynamic {
diff --git a/pkg/front_end/testcases/inference/inferred_type_is_enum.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/inferred_type_is_enum.dart.strong.transformed.expect
index 0ea8ae2..68aef71 100644
--- a/pkg/front_end/testcases/inference/inferred_type_is_enum.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/inferred_type_is_enum.dart.strong.transformed.expect
@@ -12,6 +12,15 @@
     ;
   method toString() → core::String*
     return this.{=self::E::_name};
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static final field self::E* x = #C3;
 static method main() → dynamic {
diff --git a/pkg/front_end/testcases/inference/inferred_type_is_enum_values.dart.outline.expect b/pkg/front_end/testcases/inference/inferred_type_is_enum_values.dart.outline.expect
index 21b7146..a40e8cc 100644
--- a/pkg/front_end/testcases/inference/inferred_type_is_enum_values.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/inferred_type_is_enum_values.dart.outline.expect
@@ -12,6 +12,15 @@
     ;
   method toString() → core::String*
     return this.{=self::E::_name};
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static final field core::List<self::E*>* x;
 static method main() → dynamic
diff --git a/pkg/front_end/testcases/inference/inferred_type_is_enum_values.dart.strong.expect b/pkg/front_end/testcases/inference/inferred_type_is_enum_values.dart.strong.expect
index 908dd56..00c48f09 100644
--- a/pkg/front_end/testcases/inference/inferred_type_is_enum_values.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/inferred_type_is_enum_values.dart.strong.expect
@@ -12,6 +12,15 @@
     ;
   method toString() → core::String*
     return this.{=self::E::_name};
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static final field core::List<self::E*>* x = #C4;
 static method main() → dynamic {
diff --git a/pkg/front_end/testcases/inference/inferred_type_is_enum_values.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/inferred_type_is_enum_values.dart.strong.transformed.expect
index 908dd56..00c48f09 100644
--- a/pkg/front_end/testcases/inference/inferred_type_is_enum_values.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/inferred_type_is_enum_values.dart.strong.transformed.expect
@@ -12,6 +12,15 @@
     ;
   method toString() → core::String*
     return this.{=self::E::_name};
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static final field core::List<self::E*>* x = #C4;
 static method main() → dynamic {
diff --git a/pkg/front_end/testcases/inference/inferred_type_via_closure_multiple_levels_of_nesting.dart.outline.expect b/pkg/front_end/testcases/inference/inferred_type_via_closure_multiple_levels_of_nesting.dart.outline.expect
index 4673ba3..6f060b2 100644
--- a/pkg/front_end/testcases/inference/inferred_type_via_closure_multiple_levels_of_nesting.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/inferred_type_via_closure_multiple_levels_of_nesting.dart.outline.expect
@@ -6,6 +6,16 @@
   static final field (core::bool*) →* (core::int*) →* core::Map<core::int*, core::bool*>* f;
   synthetic constructor •() → self::C*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/inference/inferred_type_via_closure_multiple_levels_of_nesting.dart.strong.expect b/pkg/front_end/testcases/inference/inferred_type_via_closure_multiple_levels_of_nesting.dart.strong.expect
index f1e5153..0e26676 100644
--- a/pkg/front_end/testcases/inference/inferred_type_via_closure_multiple_levels_of_nesting.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/inferred_type_via_closure_multiple_levels_of_nesting.dart.strong.expect
@@ -7,5 +7,15 @@
   synthetic constructor •() → self::C*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/inferred_type_via_closure_multiple_levels_of_nesting.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/inferred_type_via_closure_multiple_levels_of_nesting.dart.strong.transformed.expect
index f1e5153..0e26676 100644
--- a/pkg/front_end/testcases/inference/inferred_type_via_closure_multiple_levels_of_nesting.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/inferred_type_via_closure_multiple_levels_of_nesting.dart.strong.transformed.expect
@@ -7,5 +7,15 @@
   synthetic constructor •() → self::C*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/inferred_type_via_closure_type_depends_on_args.dart.outline.expect b/pkg/front_end/testcases/inference/inferred_type_via_closure_type_depends_on_args.dart.outline.expect
index a4ec082..0455627 100644
--- a/pkg/front_end/testcases/inference/inferred_type_via_closure_type_depends_on_args.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/inferred_type_via_closure_type_depends_on_args.dart.outline.expect
@@ -6,6 +6,16 @@
   static final field (core::bool*) →* core::bool* f;
   synthetic constructor •() → self::C*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/inference/inferred_type_via_closure_type_depends_on_args.dart.strong.expect b/pkg/front_end/testcases/inference/inferred_type_via_closure_type_depends_on_args.dart.strong.expect
index f5dad69..4194571 100644
--- a/pkg/front_end/testcases/inference/inferred_type_via_closure_type_depends_on_args.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/inferred_type_via_closure_type_depends_on_args.dart.strong.expect
@@ -7,5 +7,15 @@
   synthetic constructor •() → self::C*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/inferred_type_via_closure_type_depends_on_args.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/inferred_type_via_closure_type_depends_on_args.dart.strong.transformed.expect
index f5dad69..4194571 100644
--- a/pkg/front_end/testcases/inference/inferred_type_via_closure_type_depends_on_args.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/inferred_type_via_closure_type_depends_on_args.dart.strong.transformed.expect
@@ -7,5 +7,15 @@
   synthetic constructor •() → self::C*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/inferred_type_via_closure_type_independent_of_args_field.dart.outline.expect b/pkg/front_end/testcases/inference/inferred_type_via_closure_type_independent_of_args_field.dart.outline.expect
index 40aeb8e..4a4cfb5 100644
--- a/pkg/front_end/testcases/inference/inferred_type_via_closure_type_independent_of_args_field.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/inferred_type_via_closure_type_independent_of_args_field.dart.outline.expect
@@ -6,6 +6,16 @@
   static final field (core::bool*) →* core::int* f;
   synthetic constructor •() → self::C*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/inference/inferred_type_via_closure_type_independent_of_args_field.dart.strong.expect b/pkg/front_end/testcases/inference/inferred_type_via_closure_type_independent_of_args_field.dart.strong.expect
index 4596fad..54abbb7 100644
--- a/pkg/front_end/testcases/inference/inferred_type_via_closure_type_independent_of_args_field.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/inferred_type_via_closure_type_independent_of_args_field.dart.strong.expect
@@ -7,5 +7,15 @@
   synthetic constructor •() → self::C*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/inferred_type_via_closure_type_independent_of_args_field.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/inferred_type_via_closure_type_independent_of_args_field.dart.strong.transformed.expect
index 4596fad..54abbb7 100644
--- a/pkg/front_end/testcases/inference/inferred_type_via_closure_type_independent_of_args_field.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/inferred_type_via_closure_type_independent_of_args_field.dart.strong.transformed.expect
@@ -7,5 +7,15 @@
   synthetic constructor •() → self::C*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/inheritance_does_not_imply_circularity.dart.outline.expect b/pkg/front_end/testcases/inference/inheritance_does_not_imply_circularity.dart.outline.expect
index d0bd559..830d7fb 100644
--- a/pkg/front_end/testcases/inference/inheritance_does_not_imply_circularity.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/inheritance_does_not_imply_circularity.dart.outline.expect
@@ -6,17 +6,47 @@
   final field core::int* x;
   synthetic constructor •() → self::I1*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class I2 extends core::Object {
   synthetic constructor •() → self::I2*
     ;
   abstract get x() → core::num*;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C extends core::Object implements self::I1, self::I2 {
   synthetic constructor •() → self::C*
     ;
   get x() → core::int*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field core::int* y;
 static method main() → dynamic
diff --git a/pkg/front_end/testcases/inference/inheritance_does_not_imply_circularity.dart.strong.expect b/pkg/front_end/testcases/inference/inheritance_does_not_imply_circularity.dart.strong.expect
index e00b94d..d853a58 100644
--- a/pkg/front_end/testcases/inference/inheritance_does_not_imply_circularity.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/inheritance_does_not_imply_circularity.dart.strong.expect
@@ -7,12 +7,32 @@
   synthetic constructor •() → self::I1*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class I2 extends core::Object {
   synthetic constructor •() → self::I2*
     : super core::Object::•()
     ;
   abstract get x() → core::num*;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C extends core::Object implements self::I1, self::I2 {
   synthetic constructor •() → self::C*
@@ -20,6 +40,16 @@
     ;
   get x() → core::int*
     return 0;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field core::int* y = new self::C::•().{self::C::x};
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/inheritance_does_not_imply_circularity.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/inheritance_does_not_imply_circularity.dart.strong.transformed.expect
index e00b94d..d853a58 100644
--- a/pkg/front_end/testcases/inference/inheritance_does_not_imply_circularity.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/inheritance_does_not_imply_circularity.dart.strong.transformed.expect
@@ -7,12 +7,32 @@
   synthetic constructor •() → self::I1*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class I2 extends core::Object {
   synthetic constructor •() → self::I2*
     : super core::Object::•()
     ;
   abstract get x() → core::num*;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C extends core::Object implements self::I1, self::I2 {
   synthetic constructor •() → self::C*
@@ -20,6 +40,16 @@
     ;
   get x() → core::int*
     return 0;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field core::int* y = new self::C::•().{self::C::x};
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/instance_creation_downwards.dart.outline.expect b/pkg/front_end/testcases/inference/instance_creation_downwards.dart.outline.expect
index de9b6b5..76a95fa 100644
--- a/pkg/front_end/testcases/inference/instance_creation_downwards.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/instance_creation_downwards.dart.outline.expect
@@ -5,10 +5,30 @@
 class A<T extends core::Object* = dynamic> extends core::Object {
   constructor •(self::B<core::List<self::A::T*>*>* b) → self::A<self::A::T*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::B<self::B::T*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/inference/instance_creation_downwards.dart.strong.expect b/pkg/front_end/testcases/inference/instance_creation_downwards.dart.strong.expect
index d0f7b9e..df9ce15 100644
--- a/pkg/front_end/testcases/inference/instance_creation_downwards.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/instance_creation_downwards.dart.strong.expect
@@ -6,11 +6,31 @@
   constructor •(self::B<core::List<self::A::T*>*>* b) → self::A<self::A::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::B<self::B::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   self::A<dynamic>* x = new self::A::•<dynamic>(new self::B::•<core::List<dynamic>*>());
diff --git a/pkg/front_end/testcases/inference/instance_creation_downwards.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/instance_creation_downwards.dart.strong.transformed.expect
index d0f7b9e..df9ce15 100644
--- a/pkg/front_end/testcases/inference/instance_creation_downwards.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/instance_creation_downwards.dart.strong.transformed.expect
@@ -6,11 +6,31 @@
   constructor •(self::B<core::List<self::A::T*>*>* b) → self::A<self::A::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::B<self::B::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   self::A<dynamic>* x = new self::A::•<dynamic>(new self::B::•<core::List<dynamic>*>());
diff --git a/pkg/front_end/testcases/inference/instantiate_tearoff.dart.outline.expect b/pkg/front_end/testcases/inference/instantiate_tearoff.dart.outline.expect
index 656e375..8a72ab8 100644
--- a/pkg/front_end/testcases/inference/instantiate_tearoff.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/instantiate_tearoff.dart.outline.expect
@@ -9,6 +9,16 @@
     ;
   static method g<T extends core::Object* = dynamic>(self::C::g::T* x) → self::C::g::T*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D extends self::C {
   synthetic constructor •() → self::D*
diff --git a/pkg/front_end/testcases/inference/instantiate_tearoff.dart.strong.expect b/pkg/front_end/testcases/inference/instantiate_tearoff.dart.strong.expect
index 44ea980..93633f1 100644
--- a/pkg/front_end/testcases/inference/instantiate_tearoff.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/instantiate_tearoff.dart.strong.expect
@@ -10,6 +10,16 @@
     return x;
   static method g<T extends core::Object* = dynamic>(self::C::g::T* x) → self::C::g::T*
     return x;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D extends self::C {
   synthetic constructor •() → self::D*
diff --git a/pkg/front_end/testcases/inference/instantiate_tearoff.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/instantiate_tearoff.dart.strong.transformed.expect
index 44ea980..93633f1 100644
--- a/pkg/front_end/testcases/inference/instantiate_tearoff.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/instantiate_tearoff.dart.strong.transformed.expect
@@ -10,6 +10,16 @@
     return x;
   static method g<T extends core::Object* = dynamic>(self::C::g::T* x) → self::C::g::T*
     return x;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D extends self::C {
   synthetic constructor •() → self::D*
diff --git a/pkg/front_end/testcases/inference/instantiate_tearoff_after_contravariance_check.dart.outline.expect b/pkg/front_end/testcases/inference/instantiate_tearoff_after_contravariance_check.dart.outline.expect
index d44736b..239b935 100644
--- a/pkg/front_end/testcases/inference/instantiate_tearoff_after_contravariance_check.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/instantiate_tearoff_after_contravariance_check.dart.outline.expect
@@ -7,6 +7,16 @@
     ;
   method f<U extends core::Object* = dynamic>(self::C::f::U* x) → (self::C::T*) →* void
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method test(self::C<core::String*>* c) → void
   ;
diff --git a/pkg/front_end/testcases/inference/instantiate_tearoff_after_contravariance_check.dart.strong.expect b/pkg/front_end/testcases/inference/instantiate_tearoff_after_contravariance_check.dart.strong.expect
index 82851a6..39bf419 100644
--- a/pkg/front_end/testcases/inference/instantiate_tearoff_after_contravariance_check.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/instantiate_tearoff_after_contravariance_check.dart.strong.expect
@@ -8,6 +8,16 @@
     ;
   method f<U extends core::Object* = dynamic>(self::C::f::U* x) → (self::C::T*) →* void
     return (self::C::T* y) → core::Null? {};
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method test(self::C<core::String*>* c) → void {
   (core::int*) →* (core::String*) →* void tearoff = c.{self::C::f} as{TypeError,CovarianceCheck} <U extends core::Object* = dynamic>(U*) →* (core::String*) →* void<core::int*>;
diff --git a/pkg/front_end/testcases/inference/instantiate_tearoff_after_contravariance_check.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/instantiate_tearoff_after_contravariance_check.dart.strong.transformed.expect
index 82851a6..39bf419 100644
--- a/pkg/front_end/testcases/inference/instantiate_tearoff_after_contravariance_check.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/instantiate_tearoff_after_contravariance_check.dart.strong.transformed.expect
@@ -8,6 +8,16 @@
     ;
   method f<U extends core::Object* = dynamic>(self::C::f::U* x) → (self::C::T*) →* void
     return (self::C::T* y) → core::Null? {};
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method test(self::C<core::String*>* c) → void {
   (core::int*) →* (core::String*) →* void tearoff = c.{self::C::f} as{TypeError,CovarianceCheck} <U extends core::Object* = dynamic>(U*) →* (core::String*) →* void<core::int*>;
diff --git a/pkg/front_end/testcases/inference/instantiate_to_bounds_generic2_has_bound_defined_after.dart.outline.expect b/pkg/front_end/testcases/inference/instantiate_to_bounds_generic2_has_bound_defined_after.dart.outline.expect
index 6aa475b..f8f84af 100644
--- a/pkg/front_end/testcases/inference/instantiate_to_bounds_generic2_has_bound_defined_after.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/instantiate_to_bounds_generic2_has_bound_defined_after.dart.outline.expect
@@ -5,10 +5,30 @@
 class B<T extends self::A<core::int*>* = self::A<core::int*>*> extends core::Object {
   synthetic constructor •() → self::B<self::B::T*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class A<T extends core::int* = core::int*> extends core::Object {
   synthetic constructor •() → self::A<self::A::T*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field self::B<self::A<core::int*>*>* v;
 static method main() → dynamic
diff --git a/pkg/front_end/testcases/inference/instantiate_to_bounds_generic2_has_bound_defined_after.dart.strong.expect b/pkg/front_end/testcases/inference/instantiate_to_bounds_generic2_has_bound_defined_after.dart.strong.expect
index e09cbd1..c05cc2c 100644
--- a/pkg/front_end/testcases/inference/instantiate_to_bounds_generic2_has_bound_defined_after.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/instantiate_to_bounds_generic2_has_bound_defined_after.dart.strong.expect
@@ -6,11 +6,31 @@
   synthetic constructor •() → self::B<self::B::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class A<T extends core::int* = core::int*> extends core::Object {
   synthetic constructor •() → self::A<self::A::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field self::B<self::A<core::int*>*>* v = null;
 static method main() → dynamic {
diff --git a/pkg/front_end/testcases/inference/instantiate_to_bounds_generic2_has_bound_defined_after.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/instantiate_to_bounds_generic2_has_bound_defined_after.dart.strong.transformed.expect
index e09cbd1..c05cc2c 100644
--- a/pkg/front_end/testcases/inference/instantiate_to_bounds_generic2_has_bound_defined_after.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/instantiate_to_bounds_generic2_has_bound_defined_after.dart.strong.transformed.expect
@@ -6,11 +6,31 @@
   synthetic constructor •() → self::B<self::B::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class A<T extends core::int* = core::int*> extends core::Object {
   synthetic constructor •() → self::A<self::A::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field self::B<self::A<core::int*>*>* v = null;
 static method main() → dynamic {
diff --git a/pkg/front_end/testcases/inference/instantiate_to_bounds_generic2_has_bound_defined_before.dart.outline.expect b/pkg/front_end/testcases/inference/instantiate_to_bounds_generic2_has_bound_defined_before.dart.outline.expect
index 90698fa..d0fc66f 100644
--- a/pkg/front_end/testcases/inference/instantiate_to_bounds_generic2_has_bound_defined_before.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/instantiate_to_bounds_generic2_has_bound_defined_before.dart.outline.expect
@@ -5,10 +5,30 @@
 class A<T extends core::int* = core::int*> extends core::Object {
   synthetic constructor •() → self::A<self::A::T*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B<T extends self::A<core::int*>* = self::A<core::int*>*> extends core::Object {
   synthetic constructor •() → self::B<self::B::T*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field self::B<self::A<core::int*>*>* v;
 static method main() → dynamic
diff --git a/pkg/front_end/testcases/inference/instantiate_to_bounds_generic2_has_bound_defined_before.dart.strong.expect b/pkg/front_end/testcases/inference/instantiate_to_bounds_generic2_has_bound_defined_before.dart.strong.expect
index 094a36d..b989e22 100644
--- a/pkg/front_end/testcases/inference/instantiate_to_bounds_generic2_has_bound_defined_before.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/instantiate_to_bounds_generic2_has_bound_defined_before.dart.strong.expect
@@ -6,11 +6,31 @@
   synthetic constructor •() → self::A<self::A::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B<T extends self::A<core::int*>* = self::A<core::int*>*> extends core::Object {
   synthetic constructor •() → self::B<self::B::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field self::B<self::A<core::int*>*>* v = null;
 static method main() → dynamic {
diff --git a/pkg/front_end/testcases/inference/instantiate_to_bounds_generic2_has_bound_defined_before.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/instantiate_to_bounds_generic2_has_bound_defined_before.dart.strong.transformed.expect
index 094a36d..b989e22 100644
--- a/pkg/front_end/testcases/inference/instantiate_to_bounds_generic2_has_bound_defined_before.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/instantiate_to_bounds_generic2_has_bound_defined_before.dart.strong.transformed.expect
@@ -6,11 +6,31 @@
   synthetic constructor •() → self::A<self::A::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B<T extends self::A<core::int*>* = self::A<core::int*>*> extends core::Object {
   synthetic constructor •() → self::B<self::B::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field self::B<self::A<core::int*>*>* v = null;
 static method main() → dynamic {
diff --git a/pkg/front_end/testcases/inference/instantiate_to_bounds_generic2_no_bound.dart.outline.expect b/pkg/front_end/testcases/inference/instantiate_to_bounds_generic2_no_bound.dart.outline.expect
index 0a2734e..6c7226c 100644
--- a/pkg/front_end/testcases/inference/instantiate_to_bounds_generic2_no_bound.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/instantiate_to_bounds_generic2_no_bound.dart.outline.expect
@@ -5,10 +5,30 @@
 class A<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::A<self::A::T*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B<T extends self::A<dynamic>* = self::A<dynamic>*> extends core::Object {
   synthetic constructor •() → self::B<self::B::T*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field self::B<self::A<dynamic>*>* v;
 static method main() → dynamic
diff --git a/pkg/front_end/testcases/inference/instantiate_to_bounds_generic2_no_bound.dart.strong.expect b/pkg/front_end/testcases/inference/instantiate_to_bounds_generic2_no_bound.dart.strong.expect
index 37a2d2c..ad73c05 100644
--- a/pkg/front_end/testcases/inference/instantiate_to_bounds_generic2_no_bound.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/instantiate_to_bounds_generic2_no_bound.dart.strong.expect
@@ -6,11 +6,31 @@
   synthetic constructor •() → self::A<self::A::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B<T extends self::A<dynamic>* = self::A<dynamic>*> extends core::Object {
   synthetic constructor •() → self::B<self::B::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field self::B<self::A<dynamic>*>* v = null;
 static method main() → dynamic {
diff --git a/pkg/front_end/testcases/inference/instantiate_to_bounds_generic2_no_bound.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/instantiate_to_bounds_generic2_no_bound.dart.strong.transformed.expect
index 37a2d2c..ad73c05 100644
--- a/pkg/front_end/testcases/inference/instantiate_to_bounds_generic2_no_bound.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/instantiate_to_bounds_generic2_no_bound.dart.strong.transformed.expect
@@ -6,11 +6,31 @@
   synthetic constructor •() → self::A<self::A::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B<T extends self::A<dynamic>* = self::A<dynamic>*> extends core::Object {
   synthetic constructor •() → self::B<self::B::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field self::B<self::A<dynamic>*>* v = null;
 static method main() → dynamic {
diff --git a/pkg/front_end/testcases/inference/instantiate_to_bounds_generic_has_bound_defined_after.dart.outline.expect b/pkg/front_end/testcases/inference/instantiate_to_bounds_generic_has_bound_defined_after.dart.outline.expect
index 34b5179..087128d 100644
--- a/pkg/front_end/testcases/inference/instantiate_to_bounds_generic_has_bound_defined_after.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/instantiate_to_bounds_generic_has_bound_defined_after.dart.outline.expect
@@ -5,6 +5,16 @@
 class A<T extends core::int* = core::int*> extends core::Object {
   synthetic constructor •() → self::A<self::A::T*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field self::A<core::int*>* v;
 static method main() → dynamic
diff --git a/pkg/front_end/testcases/inference/instantiate_to_bounds_generic_has_bound_defined_after.dart.strong.expect b/pkg/front_end/testcases/inference/instantiate_to_bounds_generic_has_bound_defined_after.dart.strong.expect
index 0df6200..05094a3 100644
--- a/pkg/front_end/testcases/inference/instantiate_to_bounds_generic_has_bound_defined_after.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/instantiate_to_bounds_generic_has_bound_defined_after.dart.strong.expect
@@ -6,6 +6,16 @@
   synthetic constructor •() → self::A<self::A::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field self::A<core::int*>* v = null;
 static method main() → dynamic {
diff --git a/pkg/front_end/testcases/inference/instantiate_to_bounds_generic_has_bound_defined_after.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/instantiate_to_bounds_generic_has_bound_defined_after.dart.strong.transformed.expect
index 0df6200..05094a3 100644
--- a/pkg/front_end/testcases/inference/instantiate_to_bounds_generic_has_bound_defined_after.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/instantiate_to_bounds_generic_has_bound_defined_after.dart.strong.transformed.expect
@@ -6,6 +6,16 @@
   synthetic constructor •() → self::A<self::A::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field self::A<core::int*>* v = null;
 static method main() → dynamic {
diff --git a/pkg/front_end/testcases/inference/instantiate_to_bounds_generic_has_bound_defined_before.dart.outline.expect b/pkg/front_end/testcases/inference/instantiate_to_bounds_generic_has_bound_defined_before.dart.outline.expect
index 34b5179..087128d 100644
--- a/pkg/front_end/testcases/inference/instantiate_to_bounds_generic_has_bound_defined_before.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/instantiate_to_bounds_generic_has_bound_defined_before.dart.outline.expect
@@ -5,6 +5,16 @@
 class A<T extends core::int* = core::int*> extends core::Object {
   synthetic constructor •() → self::A<self::A::T*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field self::A<core::int*>* v;
 static method main() → dynamic
diff --git a/pkg/front_end/testcases/inference/instantiate_to_bounds_generic_has_bound_defined_before.dart.strong.expect b/pkg/front_end/testcases/inference/instantiate_to_bounds_generic_has_bound_defined_before.dart.strong.expect
index 0df6200..05094a3 100644
--- a/pkg/front_end/testcases/inference/instantiate_to_bounds_generic_has_bound_defined_before.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/instantiate_to_bounds_generic_has_bound_defined_before.dart.strong.expect
@@ -6,6 +6,16 @@
   synthetic constructor •() → self::A<self::A::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field self::A<core::int*>* v = null;
 static method main() → dynamic {
diff --git a/pkg/front_end/testcases/inference/instantiate_to_bounds_generic_has_bound_defined_before.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/instantiate_to_bounds_generic_has_bound_defined_before.dart.strong.transformed.expect
index 0df6200..05094a3 100644
--- a/pkg/front_end/testcases/inference/instantiate_to_bounds_generic_has_bound_defined_before.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/instantiate_to_bounds_generic_has_bound_defined_before.dart.strong.transformed.expect
@@ -6,6 +6,16 @@
   synthetic constructor •() → self::A<self::A::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field self::A<core::int*>* v = null;
 static method main() → dynamic {
diff --git a/pkg/front_end/testcases/inference/instantiate_to_bounds_invoke_constructor_no_bound.dart.outline.expect b/pkg/front_end/testcases/inference/instantiate_to_bounds_invoke_constructor_no_bound.dart.outline.expect
index fc54b7b..942ebac 100644
--- a/pkg/front_end/testcases/inference/instantiate_to_bounds_invoke_constructor_no_bound.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/instantiate_to_bounds_invoke_constructor_no_bound.dart.outline.expect
@@ -5,6 +5,16 @@
 class C<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::C<self::C::T*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/inference/instantiate_to_bounds_invoke_constructor_no_bound.dart.strong.expect b/pkg/front_end/testcases/inference/instantiate_to_bounds_invoke_constructor_no_bound.dart.strong.expect
index 69e37b3..ffea14f 100644
--- a/pkg/front_end/testcases/inference/instantiate_to_bounds_invoke_constructor_no_bound.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/instantiate_to_bounds_invoke_constructor_no_bound.dart.strong.expect
@@ -6,6 +6,16 @@
   synthetic constructor •() → self::C<self::C::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   self::C<dynamic>* v = new self::C::•<dynamic>();
diff --git a/pkg/front_end/testcases/inference/instantiate_to_bounds_invoke_constructor_no_bound.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/instantiate_to_bounds_invoke_constructor_no_bound.dart.strong.transformed.expect
index 69e37b3..ffea14f 100644
--- a/pkg/front_end/testcases/inference/instantiate_to_bounds_invoke_constructor_no_bound.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/instantiate_to_bounds_invoke_constructor_no_bound.dart.strong.transformed.expect
@@ -6,6 +6,16 @@
   synthetic constructor •() → self::C<self::C::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   self::C<dynamic>* v = new self::C::•<dynamic>();
diff --git a/pkg/front_end/testcases/inference/instantiate_to_bounds_invoke_constructor_type_args_exact.dart.outline.expect b/pkg/front_end/testcases/inference/instantiate_to_bounds_invoke_constructor_type_args_exact.dart.outline.expect
index 2d88b5d..386d351 100644
--- a/pkg/front_end/testcases/inference/instantiate_to_bounds_invoke_constructor_type_args_exact.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/instantiate_to_bounds_invoke_constructor_type_args_exact.dart.outline.expect
@@ -5,6 +5,16 @@
 class C<T extends core::num* = core::num*> extends core::Object {
   synthetic constructor •() → self::C<self::C::T*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field self::C<core::int*>* x;
 static method main() → dynamic
diff --git a/pkg/front_end/testcases/inference/instantiate_to_bounds_invoke_constructor_type_args_exact.dart.strong.expect b/pkg/front_end/testcases/inference/instantiate_to_bounds_invoke_constructor_type_args_exact.dart.strong.expect
index 2b5cf0e..2b16370 100644
--- a/pkg/front_end/testcases/inference/instantiate_to_bounds_invoke_constructor_type_args_exact.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/instantiate_to_bounds_invoke_constructor_type_args_exact.dart.strong.expect
@@ -6,6 +6,16 @@
   synthetic constructor •() → self::C<self::C::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field self::C<core::int*>* x = new self::C::•<core::int*>();
 static method main() → dynamic {
diff --git a/pkg/front_end/testcases/inference/instantiate_to_bounds_invoke_constructor_type_args_exact.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/instantiate_to_bounds_invoke_constructor_type_args_exact.dart.strong.transformed.expect
index 2b5cf0e..2b16370 100644
--- a/pkg/front_end/testcases/inference/instantiate_to_bounds_invoke_constructor_type_args_exact.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/instantiate_to_bounds_invoke_constructor_type_args_exact.dart.strong.transformed.expect
@@ -6,6 +6,16 @@
   synthetic constructor •() → self::C<self::C::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field self::C<core::int*>* x = new self::C::•<core::int*>();
 static method main() → dynamic {
diff --git a/pkg/front_end/testcases/inference/instantiate_to_bounds_not_generic.dart.outline.expect b/pkg/front_end/testcases/inference/instantiate_to_bounds_not_generic.dart.outline.expect
index 8f0c87e..5b503c3 100644
--- a/pkg/front_end/testcases/inference/instantiate_to_bounds_not_generic.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/instantiate_to_bounds_not_generic.dart.outline.expect
@@ -5,10 +5,30 @@
 class A extends core::Object {
   synthetic constructor •() → self::A*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B<T extends self::A* = self::A*> extends core::Object {
   synthetic constructor •() → self::B<self::B::T*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field self::B<self::A*>* v;
 static method main() → dynamic
diff --git a/pkg/front_end/testcases/inference/instantiate_to_bounds_not_generic.dart.strong.expect b/pkg/front_end/testcases/inference/instantiate_to_bounds_not_generic.dart.strong.expect
index 0b00114..9667985 100644
--- a/pkg/front_end/testcases/inference/instantiate_to_bounds_not_generic.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/instantiate_to_bounds_not_generic.dart.strong.expect
@@ -6,11 +6,31 @@
   synthetic constructor •() → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B<T extends self::A* = self::A*> extends core::Object {
   synthetic constructor •() → self::B<self::B::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field self::B<self::A*>* v = null;
 static method main() → dynamic {
diff --git a/pkg/front_end/testcases/inference/instantiate_to_bounds_not_generic.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/instantiate_to_bounds_not_generic.dart.strong.transformed.expect
index 0b00114..9667985 100644
--- a/pkg/front_end/testcases/inference/instantiate_to_bounds_not_generic.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/instantiate_to_bounds_not_generic.dart.strong.transformed.expect
@@ -6,11 +6,31 @@
   synthetic constructor •() → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B<T extends self::A* = self::A*> extends core::Object {
   synthetic constructor •() → self::B<self::B::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field self::B<self::A*>* v = null;
 static method main() → dynamic {
diff --git a/pkg/front_end/testcases/inference/local_constructor_from_arguments.dart.outline.expect b/pkg/front_end/testcases/inference/local_constructor_from_arguments.dart.outline.expect
index 9917a90d..bf28933 100644
--- a/pkg/front_end/testcases/inference/local_constructor_from_arguments.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/local_constructor_from_arguments.dart.outline.expect
@@ -6,6 +6,16 @@
   generic-covariant-impl field self::C::T* t;
   constructor •(self::C::T* t) → self::C<self::C::T*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/inference/local_constructor_from_arguments.dart.strong.expect b/pkg/front_end/testcases/inference/local_constructor_from_arguments.dart.strong.expect
index b807530..bcbf2a0 100644
--- a/pkg/front_end/testcases/inference/local_constructor_from_arguments.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/local_constructor_from_arguments.dart.strong.expect
@@ -7,6 +7,16 @@
   constructor •(self::C::T* t) → self::C<self::C::T*>*
     : self::C::t = t, super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   self::C<core::int*>* x = new self::C::•<core::int*>(42);
diff --git a/pkg/front_end/testcases/inference/local_constructor_from_arguments.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/local_constructor_from_arguments.dart.strong.transformed.expect
index b807530..bcbf2a0 100644
--- a/pkg/front_end/testcases/inference/local_constructor_from_arguments.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/local_constructor_from_arguments.dart.strong.transformed.expect
@@ -7,6 +7,16 @@
   constructor •(self::C::T* t) → self::C<self::C::T*>*
     : self::C::t = t, super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   self::C<core::int*>* x = new self::C::•<core::int*>(42);
diff --git a/pkg/front_end/testcases/inference/local_return_and_yield.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/local_return_and_yield.dart.strong.transformed.expect
index 7d91b21..a58b854 100644
--- a/pkg/front_end/testcases/inference/local_return_and_yield.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/local_return_and_yield.dart.strong.transformed.expect
@@ -41,8 +41,8 @@
         asy::_completeOnAsyncReturn(:async_completer, :return_value);
         return;
       }
-      on dynamic catch(dynamic :exception, core::StackTrace* :stack_trace) {
-        :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+      on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
+        :async_completer.{asy::Completer::completeError}(exception, stack_trace);
       }
     :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
     :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
@@ -51,32 +51,36 @@
     return :async_completer.{asy::Completer::future};
   }
   function c() → core::Iterable<(core::int*) →* core::int*>* /* originally sync* */ {
-    core::int* :await_jump_var = 0;
-    dynamic :await_ctx_var;
-    function :sync_op(core::_SyncIterator<(core::int*) →* core::int*>* :iterator) → core::bool* yielding {
-      {
+    function :sync_op_gen() → (core::_SyncIterator<(core::int*) →* core::int*>*) →* core::bool* {
+      core::int* :await_jump_var = 0;
+      dynamic :await_ctx_var;
+      return (core::_SyncIterator<(core::int*) →* core::int*>* :iterator) → core::bool* yielding {
         {
-          :iterator.{core::_SyncIterator::_current} = (core::int* x) → core::int* => x;
-          [yield] true;
+          {
+            :iterator.{core::_SyncIterator::_current} = (core::int* x) → core::int* => x;
+            [yield] true;
+          }
         }
-      }
-      return false;
+        return false;
+      };
     }
-    return new core::_SyncIterable::•<(core::int*) →* core::int*>(:sync_op);
+    return new core::_SyncIterable::•<(core::int*) →* core::int*>(:sync_op_gen);
   }
   function d() → core::Iterable<(core::int*) →* core::int*>* /* originally sync* */ {
-    core::int* :await_jump_var = 0;
-    dynamic :await_ctx_var;
-    function :sync_op(core::_SyncIterator<(core::int*) →* core::int*>* :iterator) → core::bool* yielding {
-      {
+    function :sync_op_gen() → (core::_SyncIterator<(core::int*) →* core::int*>*) →* core::bool* {
+      core::int* :await_jump_var = 0;
+      dynamic :await_ctx_var;
+      return (core::_SyncIterator<(core::int*) →* core::int*>* :iterator) → core::bool* yielding {
         {
-          :iterator.{core::_SyncIterator::_yieldEachIterable} = <(core::int*) →* core::int*>[(core::int* x) → core::int* => x];
-          [yield] true;
+          {
+            :iterator.{core::_SyncIterator::_yieldEachIterable} = <(core::int*) →* core::int*>[(core::int* x) → core::int* => x];
+            [yield] true;
+          }
         }
-      }
-      return false;
+        return false;
+      };
     }
-    return new core::_SyncIterable::•<(core::int*) →* core::int*>(:sync_op);
+    return new core::_SyncIterable::•<(core::int*) →* core::int*>(:sync_op_gen);
   }
   function e() → asy::Stream<(core::int*) →* core::int*>* /* originally async* */ {
     asy::_AsyncStarStreamController<(core::int*) →* core::int*>* :controller;
@@ -100,8 +104,8 @@
           }
           return;
         }
-        on dynamic catch(dynamic :exception, core::StackTrace* :stack_trace) {
-          :controller.{asy::_AsyncStarStreamController::addError}(:exception, :stack_trace);
+        on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
+          :controller.{asy::_AsyncStarStreamController::addError}(exception, stack_trace);
         }
       finally {
         :controller.{asy::_AsyncStarStreamController::close}();
@@ -135,8 +139,8 @@
           }
           return;
         }
-        on dynamic catch(dynamic :exception, core::StackTrace* :stack_trace) {
-          :controller.{asy::_AsyncStarStreamController::addError}(:exception, :stack_trace);
+        on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
+          :controller.{asy::_AsyncStarStreamController::addError}(exception, stack_trace);
         }
       finally {
         :controller.{asy::_AsyncStarStreamController::close}();
diff --git a/pkg/front_end/testcases/inference/logical_or_promotion.dart.outline.expect b/pkg/front_end/testcases/inference/logical_or_promotion.dart.outline.expect
index 5593d53..e171649 100644
--- a/pkg/front_end/testcases/inference/logical_or_promotion.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/logical_or_promotion.dart.outline.expect
@@ -5,10 +5,30 @@
 abstract class A extends core::Object {
   synthetic constructor •() → self::A*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class B extends core::Object {
   synthetic constructor •() → self::B*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C extends core::Object {
   field self::A* a;
@@ -16,6 +36,16 @@
     ;
   method f(core::Object* o) → void
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/inference/logical_or_promotion.dart.strong.expect b/pkg/front_end/testcases/inference/logical_or_promotion.dart.strong.expect
index db81842..d0374d0 100644
--- a/pkg/front_end/testcases/inference/logical_or_promotion.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/logical_or_promotion.dart.strong.expect
@@ -6,11 +6,31 @@
   synthetic constructor •() → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class B extends core::Object {
   synthetic constructor •() → self::B*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C extends core::Object {
   field self::A* a = null;
@@ -24,5 +44,15 @@
       }
     }
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/logical_or_promotion.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/logical_or_promotion.dart.strong.transformed.expect
index db81842..d0374d0 100644
--- a/pkg/front_end/testcases/inference/logical_or_promotion.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/logical_or_promotion.dart.strong.transformed.expect
@@ -6,11 +6,31 @@
   synthetic constructor •() → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class B extends core::Object {
   synthetic constructor •() → self::B*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C extends core::Object {
   field self::A* a = null;
@@ -24,5 +44,15 @@
       }
     }
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/method_call_with_type_arguments_instance_method.dart.outline.expect b/pkg/front_end/testcases/inference/method_call_with_type_arguments_instance_method.dart.outline.expect
index 9bfb5d5..18b5c71 100644
--- a/pkg/front_end/testcases/inference/method_call_with_type_arguments_instance_method.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/method_call_with_type_arguments_instance_method.dart.outline.expect
@@ -7,10 +7,30 @@
     ;
   method f<T extends core::Object* = dynamic>() → self::D<self::C::f::T*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::D<self::D::T*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field self::D<core::int*>* f;
 static method main() → dynamic
diff --git a/pkg/front_end/testcases/inference/method_call_with_type_arguments_instance_method.dart.strong.expect b/pkg/front_end/testcases/inference/method_call_with_type_arguments_instance_method.dart.strong.expect
index f39bd10..62b4b6f 100644
--- a/pkg/front_end/testcases/inference/method_call_with_type_arguments_instance_method.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/method_call_with_type_arguments_instance_method.dart.strong.expect
@@ -8,11 +8,31 @@
     ;
   method f<T extends core::Object* = dynamic>() → self::D<self::C::f::T*>*
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::D<self::D::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field self::D<core::int*>* f = new self::C::•().{self::C::f}<core::int*>();
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/method_call_with_type_arguments_instance_method.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/method_call_with_type_arguments_instance_method.dart.strong.transformed.expect
index f39bd10..62b4b6f 100644
--- a/pkg/front_end/testcases/inference/method_call_with_type_arguments_instance_method.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/method_call_with_type_arguments_instance_method.dart.strong.transformed.expect
@@ -8,11 +8,31 @@
     ;
   method f<T extends core::Object* = dynamic>() → self::D<self::C::f::T*>*
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::D<self::D::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field self::D<core::int*>* f = new self::C::•().{self::C::f}<core::int*>();
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/method_call_with_type_arguments_instance_method_identifier_sequence.dart.outline.expect b/pkg/front_end/testcases/inference/method_call_with_type_arguments_instance_method_identifier_sequence.dart.outline.expect
index 26e19b2..574bfe4 100644
--- a/pkg/front_end/testcases/inference/method_call_with_type_arguments_instance_method_identifier_sequence.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/method_call_with_type_arguments_instance_method_identifier_sequence.dart.outline.expect
@@ -7,10 +7,30 @@
     ;
   method f<T extends core::Object* = dynamic>() → self::D<self::C::f::T*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::D<self::D::T*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field self::C* c;
 static field self::D<core::int*>* f;
diff --git a/pkg/front_end/testcases/inference/method_call_with_type_arguments_instance_method_identifier_sequence.dart.strong.expect b/pkg/front_end/testcases/inference/method_call_with_type_arguments_instance_method_identifier_sequence.dart.strong.expect
index 6245ce0..c87f83e 100644
--- a/pkg/front_end/testcases/inference/method_call_with_type_arguments_instance_method_identifier_sequence.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/method_call_with_type_arguments_instance_method_identifier_sequence.dart.strong.expect
@@ -8,11 +8,31 @@
     ;
   method f<T extends core::Object* = dynamic>() → self::D<self::C::f::T*>*
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::D<self::D::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field self::C* c;
 static field self::D<core::int*>* f = self::c.{self::C::f}<core::int*>();
diff --git a/pkg/front_end/testcases/inference/method_call_with_type_arguments_instance_method_identifier_sequence.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/method_call_with_type_arguments_instance_method_identifier_sequence.dart.strong.transformed.expect
index 6245ce0..c87f83e 100644
--- a/pkg/front_end/testcases/inference/method_call_with_type_arguments_instance_method_identifier_sequence.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/method_call_with_type_arguments_instance_method_identifier_sequence.dart.strong.transformed.expect
@@ -8,11 +8,31 @@
     ;
   method f<T extends core::Object* = dynamic>() → self::D<self::C::f::T*>*
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::D<self::D::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field self::C* c;
 static field self::D<core::int*>* f = self::c.{self::C::f}<core::int*>();
diff --git a/pkg/front_end/testcases/inference/method_call_with_type_arguments_static_method.dart.outline.expect b/pkg/front_end/testcases/inference/method_call_with_type_arguments_static_method.dart.outline.expect
index ee571a5..bd542bd 100644
--- a/pkg/front_end/testcases/inference/method_call_with_type_arguments_static_method.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/method_call_with_type_arguments_static_method.dart.outline.expect
@@ -7,10 +7,30 @@
     ;
   static method f<T extends core::Object* = dynamic>() → self::D<self::C::f::T*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::D<self::D::T*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field self::D<core::int*>* f;
 static method main() → dynamic
diff --git a/pkg/front_end/testcases/inference/method_call_with_type_arguments_static_method.dart.strong.expect b/pkg/front_end/testcases/inference/method_call_with_type_arguments_static_method.dart.strong.expect
index 1f46bb0..ef2fccf 100644
--- a/pkg/front_end/testcases/inference/method_call_with_type_arguments_static_method.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/method_call_with_type_arguments_static_method.dart.strong.expect
@@ -8,11 +8,31 @@
     ;
   static method f<T extends core::Object* = dynamic>() → self::D<self::C::f::T*>*
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::D<self::D::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field self::D<core::int*>* f = self::C::f<core::int*>();
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/method_call_with_type_arguments_static_method.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/method_call_with_type_arguments_static_method.dart.strong.transformed.expect
index 1f46bb0..ef2fccf 100644
--- a/pkg/front_end/testcases/inference/method_call_with_type_arguments_static_method.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/method_call_with_type_arguments_static_method.dart.strong.transformed.expect
@@ -8,11 +8,31 @@
     ;
   static method f<T extends core::Object* = dynamic>() → self::D<self::C::f::T*>*
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::D<self::D::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field self::D<core::int*>* f = self::C::f<core::int*>();
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/method_call_with_type_arguments_top_level_function.dart.outline.expect b/pkg/front_end/testcases/inference/method_call_with_type_arguments_top_level_function.dart.outline.expect
index 5edbaf7..3605ebc 100644
--- a/pkg/front_end/testcases/inference/method_call_with_type_arguments_top_level_function.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/method_call_with_type_arguments_top_level_function.dart.outline.expect
@@ -5,6 +5,16 @@
 class D<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::D<self::D::T*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field self::D<core::int*>* g;
 static method f<T extends core::Object* = dynamic>() → self::D<self::f::T*>*
diff --git a/pkg/front_end/testcases/inference/method_call_with_type_arguments_top_level_function.dart.strong.expect b/pkg/front_end/testcases/inference/method_call_with_type_arguments_top_level_function.dart.strong.expect
index 01a8d5e..25cb772 100644
--- a/pkg/front_end/testcases/inference/method_call_with_type_arguments_top_level_function.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/method_call_with_type_arguments_top_level_function.dart.strong.expect
@@ -6,6 +6,16 @@
   synthetic constructor •() → self::D<self::D::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field self::D<core::int*>* g = self::f<core::int*>();
 static method f<T extends core::Object* = dynamic>() → self::D<self::f::T*>*
diff --git a/pkg/front_end/testcases/inference/method_call_with_type_arguments_top_level_function.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/method_call_with_type_arguments_top_level_function.dart.strong.transformed.expect
index 01a8d5e..25cb772 100644
--- a/pkg/front_end/testcases/inference/method_call_with_type_arguments_top_level_function.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/method_call_with_type_arguments_top_level_function.dart.strong.transformed.expect
@@ -6,6 +6,16 @@
   synthetic constructor •() → self::D<self::D::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field self::D<core::int*>* g = self::f<core::int*>();
 static method f<T extends core::Object* = dynamic>() → self::D<self::f::T*>*
diff --git a/pkg/front_end/testcases/inference/mixin_inference_instantiate_to_bounds_1.dart.outline.expect b/pkg/front_end/testcases/inference/mixin_inference_instantiate_to_bounds_1.dart.outline.expect
index 4c1c933..01d0355 100644
--- a/pkg/front_end/testcases/inference/mixin_inference_instantiate_to_bounds_1.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/mixin_inference_instantiate_to_bounds_1.dart.outline.expect
@@ -5,6 +5,16 @@
 class I<X extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::I<self::I::X*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class M0<X extends core::Object* = dynamic, Y extends core::String* = core::String*> extends self::I<self::M0::X*> {
   synthetic constructor •() → self::M0<self::M0::X*, self::M0::Y*>*
@@ -13,6 +23,16 @@
 class M1 extends core::Object implements self::I<core::int*> {
   synthetic constructor •() → self::M1*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class _A&M1&M0 = self::M1 with self::M0<core::int*, core::String*> /*isAnonymousMixin*/  {
   synthetic constructor •() → self::_A&M1&M0*
diff --git a/pkg/front_end/testcases/inference/mixin_inference_instantiate_to_bounds_1.dart.strong.expect b/pkg/front_end/testcases/inference/mixin_inference_instantiate_to_bounds_1.dart.strong.expect
index 4047181..c7e16a3 100644
--- a/pkg/front_end/testcases/inference/mixin_inference_instantiate_to_bounds_1.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/mixin_inference_instantiate_to_bounds_1.dart.strong.expect
@@ -6,6 +6,16 @@
   synthetic constructor •() → self::I<self::I::X*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class M0<X extends core::Object* = dynamic, Y extends core::String* = core::String*> extends self::I<self::M0::X*> {
   synthetic constructor •() → self::M0<self::M0::X*, self::M0::Y*>*
@@ -16,6 +26,16 @@
   synthetic constructor •() → self::M1*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class _A&M1&M0 = self::M1 with self::M0<core::int*, core::String*> /*isAnonymousMixin*/  {
   synthetic constructor •() → self::_A&M1&M0*
diff --git a/pkg/front_end/testcases/inference/mixin_inference_instantiate_to_bounds_1.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/mixin_inference_instantiate_to_bounds_1.dart.strong.transformed.expect
index 93f81ed..affef14 100644
--- a/pkg/front_end/testcases/inference/mixin_inference_instantiate_to_bounds_1.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/mixin_inference_instantiate_to_bounds_1.dart.strong.transformed.expect
@@ -6,6 +6,16 @@
   synthetic constructor •() → self::I<self::I::X*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class M0<X extends core::Object* = dynamic, Y extends core::String* = core::String*> extends self::I<self::M0::X*> {
   synthetic constructor •() → self::M0<self::M0::X*, self::M0::Y*>*
@@ -16,6 +26,16 @@
   synthetic constructor •() → self::M1*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class _A&M1&M0 extends self::M1 implements self::M0<core::int*, core::String*> /*isAnonymousMixin,isEliminatedMixin*/  {
   synthetic constructor •() → self::_A&M1&M0*
diff --git a/pkg/front_end/testcases/inference/mixin_inference_instantiate_to_bounds_2.dart.outline.expect b/pkg/front_end/testcases/inference/mixin_inference_instantiate_to_bounds_2.dart.outline.expect
index eea31bf..c3227de 100644
--- a/pkg/front_end/testcases/inference/mixin_inference_instantiate_to_bounds_2.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/mixin_inference_instantiate_to_bounds_2.dart.outline.expect
@@ -5,6 +5,16 @@
 class I<X extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::I<self::I::X*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class M0<X extends core::Object* = dynamic, Y extends self::M0::X* = dynamic> extends self::I<self::M0::X*> {
   synthetic constructor •() → self::M0<self::M0::X*, self::M0::Y*>*
@@ -13,6 +23,16 @@
 class M1 extends core::Object implements self::I<core::int*> {
   synthetic constructor •() → self::M1*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class _A&M1&M0 = self::M1 with self::M0<core::int*, core::int*> /*isAnonymousMixin*/  {
   synthetic constructor •() → self::_A&M1&M0*
diff --git a/pkg/front_end/testcases/inference/mixin_inference_instantiate_to_bounds_2.dart.strong.expect b/pkg/front_end/testcases/inference/mixin_inference_instantiate_to_bounds_2.dart.strong.expect
index 80e9549..f3dc41f 100644
--- a/pkg/front_end/testcases/inference/mixin_inference_instantiate_to_bounds_2.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/mixin_inference_instantiate_to_bounds_2.dart.strong.expect
@@ -6,6 +6,16 @@
   synthetic constructor •() → self::I<self::I::X*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class M0<X extends core::Object* = dynamic, Y extends self::M0::X* = dynamic> extends self::I<self::M0::X*> {
   synthetic constructor •() → self::M0<self::M0::X*, self::M0::Y*>*
@@ -16,6 +26,16 @@
   synthetic constructor •() → self::M1*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class _A&M1&M0 = self::M1 with self::M0<core::int*, core::int*> /*isAnonymousMixin*/  {
   synthetic constructor •() → self::_A&M1&M0*
diff --git a/pkg/front_end/testcases/inference/mixin_inference_instantiate_to_bounds_2.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/mixin_inference_instantiate_to_bounds_2.dart.strong.transformed.expect
index af9251c..ed02267 100644
--- a/pkg/front_end/testcases/inference/mixin_inference_instantiate_to_bounds_2.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/mixin_inference_instantiate_to_bounds_2.dart.strong.transformed.expect
@@ -6,6 +6,16 @@
   synthetic constructor •() → self::I<self::I::X*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class M0<X extends core::Object* = dynamic, Y extends self::M0::X* = dynamic> extends self::I<self::M0::X*> {
   synthetic constructor •() → self::M0<self::M0::X*, self::M0::Y*>*
@@ -16,6 +26,16 @@
   synthetic constructor •() → self::M1*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class _A&M1&M0 extends self::M1 implements self::M0<core::int*, core::int*> /*isAnonymousMixin,isEliminatedMixin*/  {
   synthetic constructor •() → self::_A&M1&M0*
diff --git a/pkg/front_end/testcases/inference/mixin_inference_instantiate_to_bounds_3.dart.outline.expect b/pkg/front_end/testcases/inference/mixin_inference_instantiate_to_bounds_3.dart.outline.expect
index 66697a5..f8fa20e 100644
--- a/pkg/front_end/testcases/inference/mixin_inference_instantiate_to_bounds_3.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/mixin_inference_instantiate_to_bounds_3.dart.outline.expect
@@ -17,6 +17,16 @@
 class I<X extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::I<self::I::X*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class M0<X extends core::Object* = dynamic, Y extends core::Comparable<self::M0::Y*>* = core::Comparable<dynamic>*> extends self::I<self::M0::X*> {
   synthetic constructor •() → self::M0<self::M0::X*, self::M0::Y*>*
@@ -25,6 +35,16 @@
 class M1 extends core::Object implements self::I<core::int*> {
   synthetic constructor •() → self::M1*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class _A&M1&M0 = self::M1 with self::M0<core::int*, core::Comparable<dynamic>*> /*isAnonymousMixin*/  {
   synthetic constructor •() → self::_A&M1&M0*
diff --git a/pkg/front_end/testcases/inference/mixin_inference_instantiate_to_bounds_3.dart.strong.expect b/pkg/front_end/testcases/inference/mixin_inference_instantiate_to_bounds_3.dart.strong.expect
index 7206b5a..b4f852f 100644
--- a/pkg/front_end/testcases/inference/mixin_inference_instantiate_to_bounds_3.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/mixin_inference_instantiate_to_bounds_3.dart.strong.expect
@@ -18,6 +18,16 @@
   synthetic constructor •() → self::I<self::I::X*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class M0<X extends core::Object* = dynamic, Y extends core::Comparable<self::M0::Y*>* = core::Comparable<dynamic>*> extends self::I<self::M0::X*> {
   synthetic constructor •() → self::M0<self::M0::X*, self::M0::Y*>*
@@ -28,6 +38,16 @@
   synthetic constructor •() → self::M1*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class _A&M1&M0 = self::M1 with self::M0<core::int*, core::Comparable<dynamic>*> /*isAnonymousMixin*/  {
   synthetic constructor •() → self::_A&M1&M0*
diff --git a/pkg/front_end/testcases/inference/mixin_inference_instantiate_to_bounds_3.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/mixin_inference_instantiate_to_bounds_3.dart.strong.transformed.expect
index b4286e8..71e4d5f 100644
--- a/pkg/front_end/testcases/inference/mixin_inference_instantiate_to_bounds_3.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/mixin_inference_instantiate_to_bounds_3.dart.strong.transformed.expect
@@ -18,6 +18,16 @@
   synthetic constructor •() → self::I<self::I::X*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class M0<X extends core::Object* = dynamic, Y extends core::Comparable<self::M0::Y*>* = core::Comparable<dynamic>*> extends self::I<self::M0::X*> {
   synthetic constructor •() → self::M0<self::M0::X*, self::M0::Y*>*
@@ -28,6 +38,16 @@
   synthetic constructor •() → self::M1*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class _A&M1&M0 extends self::M1 implements self::M0<core::int*, core::Comparable<dynamic>*> /*isAnonymousMixin,isEliminatedMixin*/  {
   synthetic constructor •() → self::_A&M1&M0*
diff --git a/pkg/front_end/testcases/inference/mixin_inference_multiple_constraints.dart.outline.expect b/pkg/front_end/testcases/inference/mixin_inference_multiple_constraints.dart.outline.expect
index 7bcc04e..7d74f72 100644
--- a/pkg/front_end/testcases/inference/mixin_inference_multiple_constraints.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/mixin_inference_multiple_constraints.dart.outline.expect
@@ -5,10 +5,30 @@
 class I<X extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::I<self::I::X*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class J<X extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::J<self::J::X*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class _M0&I&J<X extends core::Object* = dynamic, Y extends core::Object* = dynamic> = self::I<self::_M0&I&J::X*> with self::J<self::_M0&I&J::Y*> /*isAnonymousMixin*/  {
   synthetic constructor •() → self::_M0&I&J<self::_M0&I&J::X*, self::_M0&I&J::Y*>*
@@ -22,6 +42,16 @@
 class M1 extends core::Object implements self::I<core::int*> {
   synthetic constructor •() → self::M1*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class M2 extends self::M1 implements self::J<core::double*> {
   synthetic constructor •() → self::M2*
diff --git a/pkg/front_end/testcases/inference/mixin_inference_multiple_constraints.dart.strong.expect b/pkg/front_end/testcases/inference/mixin_inference_multiple_constraints.dart.strong.expect
index a700290..b43e1cf 100644
--- a/pkg/front_end/testcases/inference/mixin_inference_multiple_constraints.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/mixin_inference_multiple_constraints.dart.strong.expect
@@ -6,11 +6,31 @@
   synthetic constructor •() → self::I<self::I::X*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class J<X extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::J<self::J::X*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class _M0&I&J<X extends core::Object* = dynamic, Y extends core::Object* = dynamic> = self::I<self::_M0&I&J::X*> with self::J<self::_M0&I&J::Y*> /*isAnonymousMixin*/  {
   synthetic constructor •() → self::_M0&I&J<self::_M0&I&J::X*, self::_M0&I&J::Y*>*
@@ -26,6 +46,16 @@
   synthetic constructor •() → self::M1*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class M2 extends self::M1 implements self::J<core::double*> {
   synthetic constructor •() → self::M2*
diff --git a/pkg/front_end/testcases/inference/mixin_inference_multiple_constraints.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/mixin_inference_multiple_constraints.dart.strong.transformed.expect
index 847459d..6b694ae 100644
--- a/pkg/front_end/testcases/inference/mixin_inference_multiple_constraints.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/mixin_inference_multiple_constraints.dart.strong.transformed.expect
@@ -6,16 +6,46 @@
   synthetic constructor •() → self::I<self::I::X*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class J<X extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::J<self::J::X*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class _M0&I&J<X extends core::Object* = dynamic, Y extends core::Object* = dynamic> extends self::I<self::_M0&I&J::X*> implements self::J<self::_M0&I&J::Y*> /*isAnonymousMixin,isEliminatedMixin*/  {
   synthetic constructor •() → self::_M0&I&J<self::_M0&I&J::X*, self::_M0&I&J::Y*>*
     : super self::I::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class M0<X extends core::Object* = dynamic, Y extends core::Object* = dynamic> extends self::_M0&I&J<self::M0::X*, self::M0::Y*> {
   synthetic constructor •() → self::M0<self::M0::X*, self::M0::Y*>*
@@ -26,6 +56,16 @@
   synthetic constructor •() → self::M1*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class M2 extends self::M1 implements self::J<core::double*> {
   synthetic constructor •() → self::M2*
diff --git a/pkg/front_end/testcases/inference/mixin_inference_non_trivial_constraints.dart.outline.expect b/pkg/front_end/testcases/inference/mixin_inference_non_trivial_constraints.dart.outline.expect
index 6cc10f5..69d216e 100644
--- a/pkg/front_end/testcases/inference/mixin_inference_non_trivial_constraints.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/mixin_inference_non_trivial_constraints.dart.outline.expect
@@ -5,6 +5,16 @@
 class I<X extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::I<self::I::X*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class M0<T extends core::Object* = dynamic> extends self::I<core::List<self::M0::T*>*> {
   synthetic constructor •() → self::M0<self::M0::T*>*
diff --git a/pkg/front_end/testcases/inference/mixin_inference_non_trivial_constraints.dart.strong.expect b/pkg/front_end/testcases/inference/mixin_inference_non_trivial_constraints.dart.strong.expect
index ced4a8d..1934d1f 100644
--- a/pkg/front_end/testcases/inference/mixin_inference_non_trivial_constraints.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/mixin_inference_non_trivial_constraints.dart.strong.expect
@@ -6,6 +6,16 @@
   synthetic constructor •() → self::I<self::I::X*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class M0<T extends core::Object* = dynamic> extends self::I<core::List<self::M0::T*>*> {
   synthetic constructor •() → self::M0<self::M0::T*>*
diff --git a/pkg/front_end/testcases/inference/mixin_inference_non_trivial_constraints.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/mixin_inference_non_trivial_constraints.dart.strong.transformed.expect
index 2ddd62d..cc8b09b 100644
--- a/pkg/front_end/testcases/inference/mixin_inference_non_trivial_constraints.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/mixin_inference_non_trivial_constraints.dart.strong.transformed.expect
@@ -6,6 +6,16 @@
   synthetic constructor •() → self::I<self::I::X*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class M0<T extends core::Object* = dynamic> extends self::I<core::List<self::M0::T*>*> {
   synthetic constructor •() → self::M0<self::M0::T*>*
diff --git a/pkg/front_end/testcases/inference/mixin_inference_outwards_1.dart.outline.expect b/pkg/front_end/testcases/inference/mixin_inference_outwards_1.dart.outline.expect
index c8dd799..a50f9d5 100644
--- a/pkg/front_end/testcases/inference/mixin_inference_outwards_1.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/mixin_inference_outwards_1.dart.outline.expect
@@ -5,6 +5,16 @@
 class I<X extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::I<self::I::X*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class M0<T extends core::Object* = dynamic> extends self::I<self::M0::T*> {
   synthetic constructor •() → self::M0<self::M0::T*>*
diff --git a/pkg/front_end/testcases/inference/mixin_inference_outwards_1.dart.strong.expect b/pkg/front_end/testcases/inference/mixin_inference_outwards_1.dart.strong.expect
index f773d9b..6b670c9 100644
--- a/pkg/front_end/testcases/inference/mixin_inference_outwards_1.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/mixin_inference_outwards_1.dart.strong.expect
@@ -6,6 +6,16 @@
   synthetic constructor •() → self::I<self::I::X*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class M0<T extends core::Object* = dynamic> extends self::I<self::M0::T*> {
   synthetic constructor •() → self::M0<self::M0::T*>*
diff --git a/pkg/front_end/testcases/inference/mixin_inference_outwards_1.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/mixin_inference_outwards_1.dart.strong.transformed.expect
index c4c5d78..d9d4b17 100644
--- a/pkg/front_end/testcases/inference/mixin_inference_outwards_1.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/mixin_inference_outwards_1.dart.strong.transformed.expect
@@ -6,6 +6,16 @@
   synthetic constructor •() → self::I<self::I::X*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class M0<T extends core::Object* = dynamic> extends self::I<self::M0::T*> {
   synthetic constructor •() → self::M0<self::M0::T*>*
diff --git a/pkg/front_end/testcases/inference/mixin_inference_outwards_2.dart.outline.expect b/pkg/front_end/testcases/inference/mixin_inference_outwards_2.dart.outline.expect
index 059aa18..e999d9b 100644
--- a/pkg/front_end/testcases/inference/mixin_inference_outwards_2.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/mixin_inference_outwards_2.dart.outline.expect
@@ -5,6 +5,16 @@
 class I<X extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::I<self::I::X*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class M0<T extends core::Object* = dynamic> extends self::I<self::M0::T*> {
   synthetic constructor •() → self::M0<self::M0::T*>*
diff --git a/pkg/front_end/testcases/inference/mixin_inference_outwards_2.dart.strong.expect b/pkg/front_end/testcases/inference/mixin_inference_outwards_2.dart.strong.expect
index 7fd2d2e..06850f0 100644
--- a/pkg/front_end/testcases/inference/mixin_inference_outwards_2.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/mixin_inference_outwards_2.dart.strong.expect
@@ -6,6 +6,16 @@
   synthetic constructor •() → self::I<self::I::X*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class M0<T extends core::Object* = dynamic> extends self::I<self::M0::T*> {
   synthetic constructor •() → self::M0<self::M0::T*>*
diff --git a/pkg/front_end/testcases/inference/mixin_inference_outwards_2.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/mixin_inference_outwards_2.dart.strong.transformed.expect
index 59d9df7..fce97f4 100644
--- a/pkg/front_end/testcases/inference/mixin_inference_outwards_2.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/mixin_inference_outwards_2.dart.strong.transformed.expect
@@ -6,6 +6,16 @@
   synthetic constructor •() → self::I<self::I::X*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class M0<T extends core::Object* = dynamic> extends self::I<self::M0::T*> {
   synthetic constructor •() → self::M0<self::M0::T*>*
diff --git a/pkg/front_end/testcases/inference/mixin_inference_outwards_3.dart.outline.expect b/pkg/front_end/testcases/inference/mixin_inference_outwards_3.dart.outline.expect
index b7726db..4868739 100644
--- a/pkg/front_end/testcases/inference/mixin_inference_outwards_3.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/mixin_inference_outwards_3.dart.outline.expect
@@ -13,10 +13,30 @@
 class I<X extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::I<self::I::X*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class M0<T extends core::Object* = dynamic> extends core::Object implements self::I<self::M0::T*> {
   synthetic constructor •() → self::M0<self::M0::T*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class M1<T extends core::Object* = dynamic> extends self::I<self::M1::T*> {
   synthetic constructor •() → self::M1<self::M1::T*>*
@@ -26,6 +46,16 @@
   const synthetic constructor •() → self::_A&Object&M0*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class _A&Object&M0&M1 = self::_A&Object&M0 with self::M1<core::int*> /*isAnonymousMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::_A&Object&M0&M1*
diff --git a/pkg/front_end/testcases/inference/mixin_inference_outwards_3.dart.strong.expect b/pkg/front_end/testcases/inference/mixin_inference_outwards_3.dart.strong.expect
index e4415d8..0595a34 100644
--- a/pkg/front_end/testcases/inference/mixin_inference_outwards_3.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/mixin_inference_outwards_3.dart.strong.expect
@@ -14,11 +14,31 @@
   synthetic constructor •() → self::I<self::I::X*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class M0<T extends core::Object* = dynamic> extends core::Object implements self::I<self::M0::T*> {
   synthetic constructor •() → self::M0<self::M0::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class M1<T extends core::Object* = dynamic> extends self::I<self::M1::T*> {
   synthetic constructor •() → self::M1<self::M1::T*>*
@@ -29,6 +49,16 @@
   const synthetic constructor •() → self::_A&Object&M0*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class _A&Object&M0&M1 = self::_A&Object&M0 with self::M1<core::int*> /*isAnonymousMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::_A&Object&M0&M1*
diff --git a/pkg/front_end/testcases/inference/mixin_inference_outwards_4.dart.outline.expect b/pkg/front_end/testcases/inference/mixin_inference_outwards_4.dart.outline.expect
index a2ce3e3..4ada7c4 100644
--- a/pkg/front_end/testcases/inference/mixin_inference_outwards_4.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/mixin_inference_outwards_4.dart.outline.expect
@@ -13,10 +13,30 @@
 class I<X extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::I<self::I::X*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class M0<T extends core::Object* = dynamic> extends core::Object implements self::I<self::M0::T*> {
   synthetic constructor •() → self::M0<self::M0::T*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class M1<T extends core::Object* = dynamic> extends self::I<self::M1::T*> {
   synthetic constructor •() → self::M1<self::M1::T*>*
@@ -26,6 +46,16 @@
   const synthetic constructor •() → self::_A&Object&M0*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class _A&Object&M0&M1 = self::_A&Object&M0 with self::M1<dynamic> /*isAnonymousMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::_A&Object&M0&M1*
diff --git a/pkg/front_end/testcases/inference/mixin_inference_outwards_4.dart.strong.expect b/pkg/front_end/testcases/inference/mixin_inference_outwards_4.dart.strong.expect
index ab3b42f..6eabb98 100644
--- a/pkg/front_end/testcases/inference/mixin_inference_outwards_4.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/mixin_inference_outwards_4.dart.strong.expect
@@ -14,11 +14,31 @@
   synthetic constructor •() → self::I<self::I::X*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class M0<T extends core::Object* = dynamic> extends core::Object implements self::I<self::M0::T*> {
   synthetic constructor •() → self::M0<self::M0::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class M1<T extends core::Object* = dynamic> extends self::I<self::M1::T*> {
   synthetic constructor •() → self::M1<self::M1::T*>*
@@ -29,6 +49,16 @@
   const synthetic constructor •() → self::_A&Object&M0*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class _A&Object&M0&M1 = self::_A&Object&M0 with self::M1<dynamic> /*isAnonymousMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::_A&Object&M0&M1*
diff --git a/pkg/front_end/testcases/inference/mixin_inference_unification_1.dart.outline.expect b/pkg/front_end/testcases/inference/mixin_inference_unification_1.dart.outline.expect
index 012864a..02ca33e 100644
--- a/pkg/front_end/testcases/inference/mixin_inference_unification_1.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/mixin_inference_unification_1.dart.outline.expect
@@ -13,19 +13,59 @@
 class I<X extends core::Object* = dynamic, Y extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::I<self::I::X*, self::I::Y*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class M0<T extends core::Object* = dynamic> extends core::Object implements self::I<self::M0::T*, core::int*> {
   synthetic constructor •() → self::M0<self::M0::T*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class M1<T extends core::Object* = dynamic> extends core::Object implements self::I<core::String*, self::M1::T*> {
   synthetic constructor •() → self::M1<self::M1::T*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class _A&Object&M0 = core::Object with self::M0<dynamic> /*isAnonymousMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::_A&Object&M0*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class _A&Object&M0&M1 = self::_A&Object&M0 with self::M1<dynamic> /*isAnonymousMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::_A&Object&M0&M1*
diff --git a/pkg/front_end/testcases/inference/mixin_inference_unification_1.dart.strong.expect b/pkg/front_end/testcases/inference/mixin_inference_unification_1.dart.strong.expect
index 4a017f6..3f346c0 100644
--- a/pkg/front_end/testcases/inference/mixin_inference_unification_1.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/mixin_inference_unification_1.dart.strong.expect
@@ -14,21 +14,61 @@
   synthetic constructor •() → self::I<self::I::X*, self::I::Y*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class M0<T extends core::Object* = dynamic> extends core::Object implements self::I<self::M0::T*, core::int*> {
   synthetic constructor •() → self::M0<self::M0::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class M1<T extends core::Object* = dynamic> extends core::Object implements self::I<core::String*, self::M1::T*> {
   synthetic constructor •() → self::M1<self::M1::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class _A&Object&M0 = core::Object with self::M0<dynamic> /*isAnonymousMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::_A&Object&M0*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class _A&Object&M0&M1 = self::_A&Object&M0 with self::M1<dynamic> /*isAnonymousMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::_A&Object&M0&M1*
diff --git a/pkg/front_end/testcases/inference/mixin_inference_unification_2.dart.outline.expect b/pkg/front_end/testcases/inference/mixin_inference_unification_2.dart.outline.expect
index a0d028e..18a497a 100644
--- a/pkg/front_end/testcases/inference/mixin_inference_unification_2.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/mixin_inference_unification_2.dart.outline.expect
@@ -14,19 +14,59 @@
 class I<X extends core::Object* = dynamic, Y extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::I<self::I::X*, self::I::Y*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class M0<T extends core::Object* = dynamic> extends core::Object implements self::I<self::M0::T*, core::List<self::M0::T*>*> {
   synthetic constructor •() → self::M0<self::M0::T*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class M1<T extends core::Object* = dynamic> extends core::Object implements self::I<core::List<self::M1::T*>*, self::M1::T*> {
   synthetic constructor •() → self::M1<self::M1::T*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class _A&Object&M0 = core::Object with self::M0<dynamic> /*isAnonymousMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::_A&Object&M0*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class _A&Object&M0&M1 = self::_A&Object&M0 with self::M1<dynamic> /*isAnonymousMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::_A&Object&M0&M1*
diff --git a/pkg/front_end/testcases/inference/mixin_inference_unification_2.dart.strong.expect b/pkg/front_end/testcases/inference/mixin_inference_unification_2.dart.strong.expect
index e061e87..575d9cf 100644
--- a/pkg/front_end/testcases/inference/mixin_inference_unification_2.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/mixin_inference_unification_2.dart.strong.expect
@@ -15,21 +15,61 @@
   synthetic constructor •() → self::I<self::I::X*, self::I::Y*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class M0<T extends core::Object* = dynamic> extends core::Object implements self::I<self::M0::T*, core::List<self::M0::T*>*> {
   synthetic constructor •() → self::M0<self::M0::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class M1<T extends core::Object* = dynamic> extends core::Object implements self::I<core::List<self::M1::T*>*, self::M1::T*> {
   synthetic constructor •() → self::M1<self::M1::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class _A&Object&M0 = core::Object with self::M0<dynamic> /*isAnonymousMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::_A&Object&M0*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class _A&Object&M0&M1 = self::_A&Object&M0 with self::M1<dynamic> /*isAnonymousMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::_A&Object&M0&M1*
diff --git a/pkg/front_end/testcases/inference/non_const_invocation.dart.outline.expect b/pkg/front_end/testcases/inference/non_const_invocation.dart.outline.expect
index 0209712..2b4fea5 100644
--- a/pkg/front_end/testcases/inference/non_const_invocation.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/non_const_invocation.dart.outline.expect
@@ -24,11 +24,31 @@
     ;
   get v9() → core::Map<self::Foo::T*, (self::Foo::T*) →* self::Foo::T*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Bar<T extends core::Object* = dynamic> extends core::Object /*hasConstConstructor*/  {
   const constructor •() → self::Bar<self::Bar::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/inference/non_const_invocation.dart.strong.expect b/pkg/front_end/testcases/inference/non_const_invocation.dart.strong.expect
index d38852e..ce16af2 100644
--- a/pkg/front_end/testcases/inference/non_const_invocation.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/non_const_invocation.dart.strong.expect
@@ -25,10 +25,30 @@
     return <(self::Foo::T*) →* self::Foo::T*, self::Foo::T*>{};
   get v9() → core::Map<self::Foo::T*, (self::Foo::T*) →* self::Foo::T*>*
     return <self::Foo::T*, (self::Foo::T*) →* self::Foo::T*>{};
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Bar<T extends core::Object* = dynamic> extends core::Object /*hasConstConstructor*/  {
   const constructor •() → self::Bar<self::Bar::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/non_const_invocation.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/non_const_invocation.dart.strong.transformed.expect
index d38852e..ce16af2 100644
--- a/pkg/front_end/testcases/inference/non_const_invocation.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/non_const_invocation.dart.strong.transformed.expect
@@ -25,10 +25,30 @@
     return <(self::Foo::T*) →* self::Foo::T*, self::Foo::T*>{};
   get v9() → core::Map<self::Foo::T*, (self::Foo::T*) →* self::Foo::T*>*
     return <self::Foo::T*, (self::Foo::T*) →* self::Foo::T*>{};
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Bar<T extends core::Object* = dynamic> extends core::Object /*hasConstConstructor*/  {
   const constructor •() → self::Bar<self::Bar::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/non_inferrable_getter_setter.dart.outline.expect b/pkg/front_end/testcases/inference/non_inferrable_getter_setter.dart.outline.expect
index 7e30a9a..c1de27d 100644
--- a/pkg/front_end/testcases/inference/non_inferrable_getter_setter.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/non_inferrable_getter_setter.dart.outline.expect
@@ -9,6 +9,16 @@
     ;
   set x(dynamic value) → void
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/inference/non_inferrable_getter_setter.dart.strong.expect b/pkg/front_end/testcases/inference/non_inferrable_getter_setter.dart.strong.expect
index 1307bc3..14d5a8e 100644
--- a/pkg/front_end/testcases/inference/non_inferrable_getter_setter.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/non_inferrable_getter_setter.dart.strong.expect
@@ -9,5 +9,15 @@
   get x() → dynamic
     return null;
   set x(dynamic value) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/non_inferrable_getter_setter.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/non_inferrable_getter_setter.dart.strong.transformed.expect
index 1307bc3..14d5a8e 100644
--- a/pkg/front_end/testcases/inference/non_inferrable_getter_setter.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/non_inferrable_getter_setter.dart.strong.transformed.expect
@@ -9,5 +9,15 @@
   get x() → dynamic
     return null;
   set x(dynamic value) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/null_aware_method_invocation.dart b/pkg/front_end/testcases/inference/null_aware_method_invocation.dart
index 62e84f5..650c578 100644
--- a/pkg/front_end/testcases/inference/null_aware_method_invocation.dart
+++ b/pkg/front_end/testcases/inference/null_aware_method_invocation.dart
@@ -10,9 +10,9 @@
 }
 
 g(C c) {
-  var /*@ type=int* */ x = /*@ type=C* */ /*@target=Object::==*/ c
+  var /*@ type=int* */ x = /*@ type=C* */ /*@target=C::==*/ c
       ?. /*@target=C::f*/ f();
-  /*@ type=C* */ /*@target=Object::==*/ c?. /*@target=C::f*/ f();
+  /*@ type=C* */ /*@target=C::==*/ c?. /*@target=C::f*/ f();
 }
 
 main() {}
diff --git a/pkg/front_end/testcases/inference/null_aware_method_invocation.dart.outline.expect b/pkg/front_end/testcases/inference/null_aware_method_invocation.dart.outline.expect
index 6bf2612..ac39400 100644
--- a/pkg/front_end/testcases/inference/null_aware_method_invocation.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/null_aware_method_invocation.dart.outline.expect
@@ -7,6 +7,16 @@
     ;
   method f() → core::int*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method g(self::C* c) → dynamic
   ;
diff --git a/pkg/front_end/testcases/inference/null_aware_method_invocation.dart.strong.expect b/pkg/front_end/testcases/inference/null_aware_method_invocation.dart.strong.expect
index 127fa61..72ade4d 100644
--- a/pkg/front_end/testcases/inference/null_aware_method_invocation.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/null_aware_method_invocation.dart.strong.expect
@@ -8,9 +8,19 @@
     ;
   method f() → core::int*
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method g(self::C* c) → dynamic {
-  core::int* x = let final self::C* #t1 = c in #t1.{core::Object::==}(null) ?{core::int*} null : #t1.{self::C::f}();
-  let final self::C* #t2 = c in #t2.{core::Object::==}(null) ?{core::int*} null : #t2.{self::C::f}();
+  core::int* x = let final self::C* #t1 = c in #t1.{self::C::==}(null) ?{core::int*} null : #t1.{self::C::f}();
+  let final self::C* #t2 = c in #t2.{self::C::==}(null) ?{core::int*} null : #t2.{self::C::f}();
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/null_aware_method_invocation.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/null_aware_method_invocation.dart.strong.transformed.expect
index 127fa61..72ade4d 100644
--- a/pkg/front_end/testcases/inference/null_aware_method_invocation.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/null_aware_method_invocation.dart.strong.transformed.expect
@@ -8,9 +8,19 @@
     ;
   method f() → core::int*
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method g(self::C* c) → dynamic {
-  core::int* x = let final self::C* #t1 = c in #t1.{core::Object::==}(null) ?{core::int*} null : #t1.{self::C::f}();
-  let final self::C* #t2 = c in #t2.{core::Object::==}(null) ?{core::int*} null : #t2.{self::C::f}();
+  core::int* x = let final self::C* #t1 = c in #t1.{self::C::==}(null) ?{core::int*} null : #t1.{self::C::f}();
+  let final self::C* #t2 = c in #t2.{self::C::==}(null) ?{core::int*} null : #t2.{self::C::f}();
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/null_aware_property_get.dart b/pkg/front_end/testcases/inference/null_aware_property_get.dart
index 112432b..7297335 100644
--- a/pkg/front_end/testcases/inference/null_aware_property_get.dart
+++ b/pkg/front_end/testcases/inference/null_aware_property_get.dart
@@ -10,9 +10,9 @@
 }
 
 void f(C c) {
-  var /*@ type=int* */ x = /*@ type=C* */ /*@target=Object::==*/ c
+  var /*@ type=int* */ x = /*@ type=C* */ /*@target=C::==*/ c
       ?. /*@target=C::x*/ x;
-  /*@ type=C* */ /*@target=Object::==*/ c?. /*@target=C::x*/ x;
+  /*@ type=C* */ /*@target=C::==*/ c?. /*@target=C::x*/ x;
 }
 
 main() {}
diff --git a/pkg/front_end/testcases/inference/null_aware_property_get.dart.outline.expect b/pkg/front_end/testcases/inference/null_aware_property_get.dart.outline.expect
index 363142de..71ab569 100644
--- a/pkg/front_end/testcases/inference/null_aware_property_get.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/null_aware_property_get.dart.outline.expect
@@ -6,6 +6,16 @@
   field core::int* x;
   synthetic constructor •() → self::C*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method f(self::C* c) → void
   ;
diff --git a/pkg/front_end/testcases/inference/null_aware_property_get.dart.strong.expect b/pkg/front_end/testcases/inference/null_aware_property_get.dart.strong.expect
index 0d14e2b..55b7d63 100644
--- a/pkg/front_end/testcases/inference/null_aware_property_get.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/null_aware_property_get.dart.strong.expect
@@ -7,9 +7,19 @@
   synthetic constructor •() → self::C*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method f(self::C* c) → void {
-  core::int* x = let final self::C* #t1 = c in #t1.{core::Object::==}(null) ?{core::int*} null : #t1.{self::C::x};
-  let final self::C* #t2 = c in #t2.{core::Object::==}(null) ?{core::int*} null : #t2.{self::C::x};
+  core::int* x = let final self::C* #t1 = c in #t1.{self::C::==}(null) ?{core::int*} null : #t1.{self::C::x};
+  let final self::C* #t2 = c in #t2.{self::C::==}(null) ?{core::int*} null : #t2.{self::C::x};
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/null_aware_property_get.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/null_aware_property_get.dart.strong.transformed.expect
index 0d14e2b..55b7d63 100644
--- a/pkg/front_end/testcases/inference/null_aware_property_get.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/null_aware_property_get.dart.strong.transformed.expect
@@ -7,9 +7,19 @@
   synthetic constructor •() → self::C*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method f(self::C* c) → void {
-  core::int* x = let final self::C* #t1 = c in #t1.{core::Object::==}(null) ?{core::int*} null : #t1.{self::C::x};
-  let final self::C* #t2 = c in #t2.{core::Object::==}(null) ?{core::int*} null : #t2.{self::C::x};
+  core::int* x = let final self::C* #t1 = c in #t1.{self::C::==}(null) ?{core::int*} null : #t1.{self::C::x};
+  let final self::C* #t2 = c in #t2.{self::C::==}(null) ?{core::int*} null : #t2.{self::C::x};
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/override_equals.dart.outline.expect b/pkg/front_end/testcases/inference/override_equals.dart.outline.expect
index 904c032..71216ff 100644
--- a/pkg/front_end/testcases/inference/override_equals.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/override_equals.dart.outline.expect
@@ -8,6 +8,15 @@
   @core::override
   operator ==(core::Object* other) → core::Null?
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class SubNullEquality extends self::NullEquality {
   synthetic constructor •() → self::SubNullEquality*
diff --git a/pkg/front_end/testcases/inference/override_equals.dart.strong.expect b/pkg/front_end/testcases/inference/override_equals.dart.strong.expect
index 6bf9ce2..2cf7a73 100644
--- a/pkg/front_end/testcases/inference/override_equals.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/override_equals.dart.strong.expect
@@ -9,6 +9,15 @@
   @#C1
   operator ==(core::Object* other) → core::Null?
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class SubNullEquality extends self::NullEquality {
   synthetic constructor •() → self::SubNullEquality*
diff --git a/pkg/front_end/testcases/inference/override_equals.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/override_equals.dart.strong.transformed.expect
index 6bf9ce2..2cf7a73 100644
--- a/pkg/front_end/testcases/inference/override_equals.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/override_equals.dart.strong.transformed.expect
@@ -9,6 +9,15 @@
   @#C1
   operator ==(core::Object* other) → core::Null?
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class SubNullEquality extends self::NullEquality {
   synthetic constructor •() → self::SubNullEquality*
diff --git a/pkg/front_end/testcases/inference/override_inference_depends_on_field_inference.dart.outline.expect b/pkg/front_end/testcases/inference/override_inference_depends_on_field_inference.dart.outline.expect
index 3c44d0cc..2e5ceaa 100644
--- a/pkg/front_end/testcases/inference/override_inference_depends_on_field_inference.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/override_inference_depends_on_field_inference.dart.outline.expect
@@ -6,6 +6,16 @@
   final field core::String* foo;
   synthetic constructor •() → self::A<self::A::X*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B<Y extends core::Object* = dynamic> extends self::A<self::B::Y*> {
   final field core::String* foo;
diff --git a/pkg/front_end/testcases/inference/override_inference_depends_on_field_inference.dart.strong.expect b/pkg/front_end/testcases/inference/override_inference_depends_on_field_inference.dart.strong.expect
index 3caa2b1..92ecb83 100644
--- a/pkg/front_end/testcases/inference/override_inference_depends_on_field_inference.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/override_inference_depends_on_field_inference.dart.strong.expect
@@ -7,6 +7,16 @@
   synthetic constructor •() → self::A<self::A::X*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B<Y extends core::Object* = dynamic> extends self::A<self::B::Y*> {
   final field core::String* foo;
diff --git a/pkg/front_end/testcases/inference/override_inference_depends_on_field_inference.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/override_inference_depends_on_field_inference.dart.strong.transformed.expect
index 3caa2b1..92ecb83 100644
--- a/pkg/front_end/testcases/inference/override_inference_depends_on_field_inference.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/override_inference_depends_on_field_inference.dart.strong.transformed.expect
@@ -7,6 +7,16 @@
   synthetic constructor •() → self::A<self::A::X*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B<Y extends core::Object* = dynamic> extends self::A<self::B::Y*> {
   final field core::String* foo;
diff --git a/pkg/front_end/testcases/inference/override_inference_with_type_parameters.dart.outline.expect b/pkg/front_end/testcases/inference/override_inference_with_type_parameters.dart.outline.expect
index 9960cad..0dc3a85 100644
--- a/pkg/front_end/testcases/inference/override_inference_with_type_parameters.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/override_inference_with_type_parameters.dart.outline.expect
@@ -6,12 +6,32 @@
   synthetic constructor •() → self::A<self::A::X*>*
     ;
   abstract method foo({generic-covariant-impl core::Iterable<self::A::X*>* x}) → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B<Y extends core::Object* = dynamic> extends core::Object implements self::A<self::B::Y*> {
   synthetic constructor •() → self::B<self::B::Y*>*
     ;
   method foo({generic-covariant-impl core::Iterable<self::B::Y*>* x}) → void
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/inference/override_inference_with_type_parameters.dart.strong.expect b/pkg/front_end/testcases/inference/override_inference_with_type_parameters.dart.strong.expect
index 9675ed5..3486c68 100644
--- a/pkg/front_end/testcases/inference/override_inference_with_type_parameters.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/override_inference_with_type_parameters.dart.strong.expect
@@ -7,12 +7,32 @@
     : super core::Object::•()
     ;
   abstract method foo({generic-covariant-impl core::Iterable<self::A::X*>* x = #C1}) → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B<Y extends core::Object* = dynamic> extends core::Object implements self::A<self::B::Y*> {
   synthetic constructor •() → self::B<self::B::Y*>*
     : super core::Object::•()
     ;
   method foo({generic-covariant-impl core::Iterable<self::B::Y*>* x = #C1}) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
 
diff --git a/pkg/front_end/testcases/inference/override_inference_with_type_parameters.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/override_inference_with_type_parameters.dart.strong.transformed.expect
index 9675ed5..3486c68 100644
--- a/pkg/front_end/testcases/inference/override_inference_with_type_parameters.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/override_inference_with_type_parameters.dart.strong.transformed.expect
@@ -7,12 +7,32 @@
     : super core::Object::•()
     ;
   abstract method foo({generic-covariant-impl core::Iterable<self::A::X*>* x = #C1}) → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B<Y extends core::Object* = dynamic> extends core::Object implements self::A<self::B::Y*> {
   synthetic constructor •() → self::B<self::B::Y*>*
     : super core::Object::•()
     ;
   method foo({generic-covariant-impl core::Iterable<self::B::Y*>* x = #C1}) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
 
diff --git a/pkg/front_end/testcases/inference/parameter_defaults_upwards.dart.outline.expect b/pkg/front_end/testcases/inference/parameter_defaults_upwards.dart.outline.expect
index 07f4d6b..ed8a642 100644
--- a/pkg/front_end/testcases/inference/parameter_defaults_upwards.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/parameter_defaults_upwards.dart.outline.expect
@@ -7,6 +7,16 @@
     ;
   constructor named(({x: self::C::T*}) →* void func) → self::C<self::C::T*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method optional_toplevel([dynamic x]) → void
   ;
diff --git a/pkg/front_end/testcases/inference/parameter_defaults_upwards.dart.strong.expect b/pkg/front_end/testcases/inference/parameter_defaults_upwards.dart.strong.expect
index f26bb4a..20aa601 100644
--- a/pkg/front_end/testcases/inference/parameter_defaults_upwards.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/parameter_defaults_upwards.dart.strong.expect
@@ -7,6 +7,16 @@
     : super core::Object::•() {}
   constructor named(({x: self::C::T*}) →* void func) → self::C<self::C::T*>*
     : super core::Object::•() {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method optional_toplevel([dynamic x = #C2]) → void {}
 static method named_toplevel({dynamic x = #C2}) → void {}
diff --git a/pkg/front_end/testcases/inference/parameter_defaults_upwards.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/parameter_defaults_upwards.dart.strong.transformed.expect
index f26bb4a..20aa601 100644
--- a/pkg/front_end/testcases/inference/parameter_defaults_upwards.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/parameter_defaults_upwards.dart.strong.transformed.expect
@@ -7,6 +7,16 @@
     : super core::Object::•() {}
   constructor named(({x: self::C::T*}) →* void func) → self::C<self::C::T*>*
     : super core::Object::•() {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method optional_toplevel([dynamic x = #C2]) → void {}
 static method named_toplevel({dynamic x = #C2}) → void {}
diff --git a/pkg/front_end/testcases/inference/promote_bounds.dart.outline.expect b/pkg/front_end/testcases/inference/promote_bounds.dart.outline.expect
index 6bd3591..6990121 100644
--- a/pkg/front_end/testcases/inference/promote_bounds.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/promote_bounds.dart.outline.expect
@@ -6,6 +6,16 @@
   synthetic constructor •() → self::B*
     ;
   abstract method foo() → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class C extends self::B {
   synthetic constructor •() → self::C*
diff --git a/pkg/front_end/testcases/inference/promote_bounds.dart.strong.expect b/pkg/front_end/testcases/inference/promote_bounds.dart.strong.expect
index 3e0e207..fca9e43 100644
--- a/pkg/front_end/testcases/inference/promote_bounds.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/promote_bounds.dart.strong.expect
@@ -7,6 +7,16 @@
     : super core::Object::•()
     ;
   abstract method foo() → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class C extends self::B {
   synthetic constructor •() → self::C*
diff --git a/pkg/front_end/testcases/inference/promote_bounds.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/promote_bounds.dart.strong.transformed.expect
index 3e0e207..fca9e43 100644
--- a/pkg/front_end/testcases/inference/promote_bounds.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/promote_bounds.dart.strong.transformed.expect
@@ -7,6 +7,16 @@
     : super core::Object::•()
     ;
   abstract method foo() → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class C extends self::B {
   synthetic constructor •() → self::C*
diff --git a/pkg/front_end/testcases/inference/propagate_inference_to_field_in_class.dart.outline.expect b/pkg/front_end/testcases/inference/propagate_inference_to_field_in_class.dart.outline.expect
index 24a81b6..38c9c16 100644
--- a/pkg/front_end/testcases/inference/propagate_inference_to_field_in_class.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/propagate_inference_to_field_in_class.dart.outline.expect
@@ -6,6 +6,16 @@
   field core::int* x;
   synthetic constructor •() → self::A*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/inference/propagate_inference_to_field_in_class.dart.strong.expect b/pkg/front_end/testcases/inference/propagate_inference_to_field_in_class.dart.strong.expect
index 8f2fc9b..adf394d 100644
--- a/pkg/front_end/testcases/inference/propagate_inference_to_field_in_class.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/propagate_inference_to_field_in_class.dart.strong.expect
@@ -7,6 +7,16 @@
   synthetic constructor •() → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   self::A* a = new self::A::•();
diff --git a/pkg/front_end/testcases/inference/propagate_inference_to_field_in_class.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/propagate_inference_to_field_in_class.dart.strong.transformed.expect
index 8f2fc9b..adf394d 100644
--- a/pkg/front_end/testcases/inference/propagate_inference_to_field_in_class.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/propagate_inference_to_field_in_class.dart.strong.transformed.expect
@@ -7,6 +7,16 @@
   synthetic constructor •() → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   self::A* a = new self::A::•();
diff --git a/pkg/front_end/testcases/inference/propagate_inference_to_field_in_class_dynamic_warnings.dart.outline.expect b/pkg/front_end/testcases/inference/propagate_inference_to_field_in_class_dynamic_warnings.dart.outline.expect
index 24a81b6..38c9c16 100644
--- a/pkg/front_end/testcases/inference/propagate_inference_to_field_in_class_dynamic_warnings.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/propagate_inference_to_field_in_class_dynamic_warnings.dart.outline.expect
@@ -6,6 +6,16 @@
   field core::int* x;
   synthetic constructor •() → self::A*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/inference/propagate_inference_to_field_in_class_dynamic_warnings.dart.strong.expect b/pkg/front_end/testcases/inference/propagate_inference_to_field_in_class_dynamic_warnings.dart.strong.expect
index 8c5aa72..829a4c4 100644
--- a/pkg/front_end/testcases/inference/propagate_inference_to_field_in_class_dynamic_warnings.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/propagate_inference_to_field_in_class_dynamic_warnings.dart.strong.expect
@@ -7,6 +7,16 @@
   synthetic constructor •() → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   dynamic a = new self::A::•();
diff --git a/pkg/front_end/testcases/inference/propagate_inference_to_field_in_class_dynamic_warnings.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/propagate_inference_to_field_in_class_dynamic_warnings.dart.strong.transformed.expect
index 8c5aa72..829a4c4 100644
--- a/pkg/front_end/testcases/inference/propagate_inference_to_field_in_class_dynamic_warnings.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/propagate_inference_to_field_in_class_dynamic_warnings.dart.strong.transformed.expect
@@ -7,6 +7,16 @@
   synthetic constructor •() → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   dynamic a = new self::A::•();
diff --git a/pkg/front_end/testcases/inference/propagate_inference_transitively.dart.outline.expect b/pkg/front_end/testcases/inference/propagate_inference_transitively.dart.outline.expect
index 630505e..50c67e7 100644
--- a/pkg/front_end/testcases/inference/propagate_inference_transitively.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/propagate_inference_transitively.dart.outline.expect
@@ -6,6 +6,16 @@
   field core::int* x;
   synthetic constructor •() → self::A*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method test5() → dynamic
   ;
diff --git a/pkg/front_end/testcases/inference/propagate_inference_transitively.dart.strong.expect b/pkg/front_end/testcases/inference/propagate_inference_transitively.dart.strong.expect
index 0353c68..082765b 100644
--- a/pkg/front_end/testcases/inference/propagate_inference_transitively.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/propagate_inference_transitively.dart.strong.expect
@@ -18,6 +18,16 @@
   synthetic constructor •() → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method test5() → dynamic {
   self::A* a1 = new self::A::•();
diff --git a/pkg/front_end/testcases/inference/propagate_inference_transitively.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/propagate_inference_transitively.dart.strong.transformed.expect
index 0353c68..082765b 100644
--- a/pkg/front_end/testcases/inference/propagate_inference_transitively.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/propagate_inference_transitively.dart.strong.transformed.expect
@@ -18,6 +18,16 @@
   synthetic constructor •() → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method test5() → dynamic {
   self::A* a1 = new self::A::•();
diff --git a/pkg/front_end/testcases/inference/propagate_inference_transitively2.dart.outline.expect b/pkg/front_end/testcases/inference/propagate_inference_transitively2.dart.outline.expect
index b31847d..05b0956 100644
--- a/pkg/front_end/testcases/inference/propagate_inference_transitively2.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/propagate_inference_transitively2.dart.outline.expect
@@ -6,21 +6,61 @@
   field core::int* x;
   synthetic constructor •() → self::A*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends core::Object {
   field self::A* a;
   synthetic constructor •() → self::B*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C extends core::Object {
   field self::B* b;
   synthetic constructor •() → self::C*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D extends core::Object {
   field self::C* c;
   synthetic constructor •() → self::D*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → void
   ;
diff --git a/pkg/front_end/testcases/inference/propagate_inference_transitively2.dart.strong.expect b/pkg/front_end/testcases/inference/propagate_inference_transitively2.dart.strong.expect
index 44b8e84..ea432b9 100644
--- a/pkg/front_end/testcases/inference/propagate_inference_transitively2.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/propagate_inference_transitively2.dart.strong.expect
@@ -7,24 +7,64 @@
   synthetic constructor •() → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends core::Object {
   field self::A* a = new self::A::•();
   synthetic constructor •() → self::B*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C extends core::Object {
   field self::B* b = new self::B::•();
   synthetic constructor •() → self::C*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D extends core::Object {
   field self::C* c = new self::C::•();
   synthetic constructor •() → self::D*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → void {
   self::D* d1 = new self::D::•();
diff --git a/pkg/front_end/testcases/inference/propagate_inference_transitively2.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/propagate_inference_transitively2.dart.strong.transformed.expect
index 44b8e84..ea432b9 100644
--- a/pkg/front_end/testcases/inference/propagate_inference_transitively2.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/propagate_inference_transitively2.dart.strong.transformed.expect
@@ -7,24 +7,64 @@
   synthetic constructor •() → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends core::Object {
   field self::A* a = new self::A::•();
   synthetic constructor •() → self::B*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C extends core::Object {
   field self::B* b = new self::B::•();
   synthetic constructor •() → self::C*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D extends core::Object {
   field self::C* c = new self::C::•();
   synthetic constructor •() → self::D*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → void {
   self::D* d1 = new self::D::•();
diff --git a/pkg/front_end/testcases/inference/property_get_toplevel.dart.outline.expect b/pkg/front_end/testcases/inference/property_get_toplevel.dart.outline.expect
index b1da205..e5d5851 100644
--- a/pkg/front_end/testcases/inference/property_get_toplevel.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/property_get_toplevel.dart.outline.expect
@@ -10,6 +10,16 @@
     ;
   method function() → core::int*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field self::C* c;
 static field () →* core::int* function_ref;
diff --git a/pkg/front_end/testcases/inference/property_get_toplevel.dart.strong.expect b/pkg/front_end/testcases/inference/property_get_toplevel.dart.strong.expect
index 7345889..55b18cd 100644
--- a/pkg/front_end/testcases/inference/property_get_toplevel.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/property_get_toplevel.dart.strong.expect
@@ -11,6 +11,16 @@
     return 0;
   method function() → core::int*
     return 0;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field self::C* c = new self::C::•();
 static field () →* core::int* function_ref = self::c.{self::C::function};
diff --git a/pkg/front_end/testcases/inference/property_get_toplevel.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/property_get_toplevel.dart.strong.transformed.expect
index 7345889..55b18cd 100644
--- a/pkg/front_end/testcases/inference/property_get_toplevel.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/property_get_toplevel.dart.strong.transformed.expect
@@ -11,6 +11,16 @@
     return 0;
   method function() → core::int*
     return 0;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field self::C* c = new self::C::•();
 static field () →* core::int* function_ref = self::c.{self::C::function};
diff --git a/pkg/front_end/testcases/inference/property_set.dart.outline.expect b/pkg/front_end/testcases/inference/property_set.dart.outline.expect
index 311761d..216b28f 100644
--- a/pkg/front_end/testcases/inference/property_set.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/property_set.dart.outline.expect
@@ -8,6 +8,16 @@
     ;
   set y(generic-covariant-impl core::List<self::A::T*>* value) → void
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method test() → dynamic
   ;
diff --git a/pkg/front_end/testcases/inference/property_set.dart.strong.expect b/pkg/front_end/testcases/inference/property_set.dart.strong.expect
index 8474fcb..856a4b2 100644
--- a/pkg/front_end/testcases/inference/property_set.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/property_set.dart.strong.expect
@@ -8,6 +8,16 @@
     : super core::Object::•()
     ;
   set y(generic-covariant-impl core::List<self::A::T*>* value) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method test() → dynamic {
   self::A<core::int*>* a_int = new self::A::•<core::int*>();
diff --git a/pkg/front_end/testcases/inference/property_set.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/property_set.dart.strong.transformed.expect
index 8474fcb..856a4b2 100644
--- a/pkg/front_end/testcases/inference/property_set.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/property_set.dart.strong.transformed.expect
@@ -8,6 +8,16 @@
     : super core::Object::•()
     ;
   set y(generic-covariant-impl core::List<self::A::T*>* value) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method test() → dynamic {
   self::A<core::int*>* a_int = new self::A::•<core::int*>();
diff --git a/pkg/front_end/testcases/inference/property_set_bad_setter.dart.outline.expect b/pkg/front_end/testcases/inference/property_set_bad_setter.dart.outline.expect
index 7fa2027..49c0db9 100644
--- a/pkg/front_end/testcases/inference/property_set_bad_setter.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/property_set_bad_setter.dart.outline.expect
@@ -7,6 +7,16 @@
     ;
   set x(dynamic #synthetic) → void
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method f(self::A* a) → void
   ;
diff --git a/pkg/front_end/testcases/inference/property_set_bad_setter.dart.strong.expect b/pkg/front_end/testcases/inference/property_set_bad_setter.dart.strong.expect
index 3c9abc3..62dc38d 100644
--- a/pkg/front_end/testcases/inference/property_set_bad_setter.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/property_set_bad_setter.dart.strong.expect
@@ -19,6 +19,16 @@
             ^";
     {}
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method f(self::A* a) → void {
   core::int* x = a.{self::A::x} = 0;
diff --git a/pkg/front_end/testcases/inference/property_set_bad_setter.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/property_set_bad_setter.dart.strong.transformed.expect
index 3c9abc3..62dc38d 100644
--- a/pkg/front_end/testcases/inference/property_set_bad_setter.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/property_set_bad_setter.dart.strong.transformed.expect
@@ -19,6 +19,16 @@
             ^";
     {}
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method f(self::A* a) → void {
   core::int* x = a.{self::A::x} = 0;
diff --git a/pkg/front_end/testcases/inference/refine_binary_expression_type_type_parameter_t_double.dart.outline.expect b/pkg/front_end/testcases/inference/refine_binary_expression_type_type_parameter_t_double.dart.outline.expect
index 4b7a850..2c920a1 100644
--- a/pkg/front_end/testcases/inference/refine_binary_expression_type_type_parameter_t_double.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/refine_binary_expression_type_type_parameter_t_double.dart.outline.expect
@@ -8,6 +8,16 @@
     ;
   method op(core::double* b) → void
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/inference/refine_binary_expression_type_type_parameter_t_double.dart.strong.expect b/pkg/front_end/testcases/inference/refine_binary_expression_type_type_parameter_t_double.dart.strong.expect
index 6c48e12..143acd8 100644
--- a/pkg/front_end/testcases/inference/refine_binary_expression_type_type_parameter_t_double.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/refine_binary_expression_type_type_parameter_t_double.dart.strong.expect
@@ -13,5 +13,15 @@
     core::double* r3 = this.{self::C::a}.{core::num::*}(b) as{TypeError} core::double*;
     core::double* r4 = this.{self::C::a}.{core::num::/}(b);
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/refine_binary_expression_type_type_parameter_t_double.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/refine_binary_expression_type_type_parameter_t_double.dart.strong.transformed.expect
index 6c48e12..143acd8 100644
--- a/pkg/front_end/testcases/inference/refine_binary_expression_type_type_parameter_t_double.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/refine_binary_expression_type_type_parameter_t_double.dart.strong.transformed.expect
@@ -13,5 +13,15 @@
     core::double* r3 = this.{self::C::a}.{core::num::*}(b) as{TypeError} core::double*;
     core::double* r4 = this.{self::C::a}.{core::num::/}(b);
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/refine_binary_expression_type_type_parameter_t_int.dart.outline.expect b/pkg/front_end/testcases/inference/refine_binary_expression_type_type_parameter_t_int.dart.outline.expect
index c8572b5..134e854 100644
--- a/pkg/front_end/testcases/inference/refine_binary_expression_type_type_parameter_t_int.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/refine_binary_expression_type_type_parameter_t_int.dart.outline.expect
@@ -10,6 +10,16 @@
     ;
   method opEq(core::int* b) → void
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/inference/refine_binary_expression_type_type_parameter_t_int.dart.strong.expect b/pkg/front_end/testcases/inference/refine_binary_expression_type_type_parameter_t_int.dart.strong.expect
index 5295bd4..2154c83 100644
--- a/pkg/front_end/testcases/inference/refine_binary_expression_type_type_parameter_t_int.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/refine_binary_expression_type_type_parameter_t_int.dart.strong.expect
@@ -17,5 +17,15 @@
     this.{self::C::a} = this.{self::C::a}.{core::num::-}(b) as{TypeError} self::C::T*;
     this.{self::C::a} = this.{self::C::a}.{core::num::*}(b) as{TypeError} self::C::T*;
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/refine_binary_expression_type_type_parameter_t_int.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/refine_binary_expression_type_type_parameter_t_int.dart.strong.transformed.expect
index 5295bd4..2154c83 100644
--- a/pkg/front_end/testcases/inference/refine_binary_expression_type_type_parameter_t_int.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/refine_binary_expression_type_type_parameter_t_int.dart.strong.transformed.expect
@@ -17,5 +17,15 @@
     this.{self::C::a} = this.{self::C::a}.{core::num::-}(b) as{TypeError} self::C::T*;
     this.{self::C::a} = this.{self::C::a}.{core::num::*}(b) as{TypeError} self::C::T*;
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/refine_binary_expression_type_type_parameter_t_t.dart.outline.expect b/pkg/front_end/testcases/inference/refine_binary_expression_type_type_parameter_t_t.dart.outline.expect
index 5050ee5..69235f6 100644
--- a/pkg/front_end/testcases/inference/refine_binary_expression_type_type_parameter_t_t.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/refine_binary_expression_type_type_parameter_t_t.dart.outline.expect
@@ -10,6 +10,16 @@
     ;
   method opEq(generic-covariant-impl self::C::T* b) → void
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/inference/refine_binary_expression_type_type_parameter_t_t.dart.strong.expect b/pkg/front_end/testcases/inference/refine_binary_expression_type_type_parameter_t_t.dart.strong.expect
index 5df9117..470be38 100644
--- a/pkg/front_end/testcases/inference/refine_binary_expression_type_type_parameter_t_t.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/refine_binary_expression_type_type_parameter_t_t.dart.strong.expect
@@ -17,5 +17,15 @@
     this.{self::C::a} = this.{self::C::a}.{core::num::-}(b) as{TypeError} self::C::T*;
     this.{self::C::a} = this.{self::C::a}.{core::num::*}(b) as{TypeError} self::C::T*;
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/refine_binary_expression_type_type_parameter_t_t.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/refine_binary_expression_type_type_parameter_t_t.dart.strong.transformed.expect
index 5df9117..470be38 100644
--- a/pkg/front_end/testcases/inference/refine_binary_expression_type_type_parameter_t_t.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/refine_binary_expression_type_type_parameter_t_t.dart.strong.transformed.expect
@@ -17,5 +17,15 @@
     this.{self::C::a} = this.{self::C::a}.{core::num::-}(b) as{TypeError} self::C::T*;
     this.{self::C::a} = this.{self::C::a}.{core::num::*}(b) as{TypeError} self::C::T*;
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/setter_return_type.dart.outline.expect b/pkg/front_end/testcases/inference/setter_return_type.dart.outline.expect
index 8e02e6b..b8640c9 100644
--- a/pkg/front_end/testcases/inference/setter_return_type.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/setter_return_type.dart.outline.expect
@@ -7,12 +7,32 @@
     ;
   set x(core::int* value) → dynamic
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class I extends core::Object {
   synthetic constructor •() → self::I*
     ;
   set x(core::int* value) → void
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D extends self::C implements self::I {
   synthetic constructor •() → self::D*
diff --git a/pkg/front_end/testcases/inference/setter_return_type.dart.strong.expect b/pkg/front_end/testcases/inference/setter_return_type.dart.strong.expect
index 185c885..8e78007 100644
--- a/pkg/front_end/testcases/inference/setter_return_type.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/setter_return_type.dart.strong.expect
@@ -7,12 +7,32 @@
     : super core::Object::•()
     ;
   set x(core::int* value) → dynamic {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class I extends core::Object {
   synthetic constructor •() → self::I*
     : super core::Object::•()
     ;
   set x(core::int* value) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D extends self::C implements self::I {
   synthetic constructor •() → self::D*
diff --git a/pkg/front_end/testcases/inference/setter_return_type.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/setter_return_type.dart.strong.transformed.expect
index 185c885..8e78007 100644
--- a/pkg/front_end/testcases/inference/setter_return_type.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/setter_return_type.dart.strong.transformed.expect
@@ -7,12 +7,32 @@
     : super core::Object::•()
     ;
   set x(core::int* value) → dynamic {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class I extends core::Object {
   synthetic constructor •() → self::I*
     : super core::Object::•()
     ;
   set x(core::int* value) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D extends self::C implements self::I {
   synthetic constructor •() → self::D*
diff --git a/pkg/front_end/testcases/inference/static_method_tear_off.dart.outline.expect b/pkg/front_end/testcases/inference/static_method_tear_off.dart.outline.expect
index 74e9791..5f072f8 100644
--- a/pkg/front_end/testcases/inference/static_method_tear_off.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/static_method_tear_off.dart.outline.expect
@@ -7,6 +7,16 @@
     ;
   static method f(core::String* s) → core::int*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static const field (core::String*) →* core::int* v = self::C::f;
 static method main() → dynamic
diff --git a/pkg/front_end/testcases/inference/static_method_tear_off.dart.strong.expect b/pkg/front_end/testcases/inference/static_method_tear_off.dart.strong.expect
index febeba1..f072c1e 100644
--- a/pkg/front_end/testcases/inference/static_method_tear_off.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/static_method_tear_off.dart.strong.expect
@@ -8,6 +8,16 @@
     ;
   static method f(core::String* s) → core::int*
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static const field (core::String*) →* core::int* v = #C1;
 static method main() → dynamic {
diff --git a/pkg/front_end/testcases/inference/static_method_tear_off.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/static_method_tear_off.dart.strong.transformed.expect
index febeba1..f072c1e 100644
--- a/pkg/front_end/testcases/inference/static_method_tear_off.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/static_method_tear_off.dart.strong.transformed.expect
@@ -8,6 +8,16 @@
     ;
   static method f(core::String* s) → core::int*
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static const field (core::String*) →* core::int* v = #C1;
 static method main() → dynamic {
diff --git a/pkg/front_end/testcases/inference/subexpressions_of_explicitly_typed_fields.dart.outline.expect b/pkg/front_end/testcases/inference/subexpressions_of_explicitly_typed_fields.dart.outline.expect
index 68fbc7f..b9d12ef 100644
--- a/pkg/front_end/testcases/inference/subexpressions_of_explicitly_typed_fields.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/subexpressions_of_explicitly_typed_fields.dart.outline.expect
@@ -6,6 +6,16 @@
   field core::List<core::num*>* x;
   synthetic constructor •() → self::C*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field core::List<core::num*>* y;
 static method main() → dynamic
diff --git a/pkg/front_end/testcases/inference/subexpressions_of_explicitly_typed_fields.dart.strong.expect b/pkg/front_end/testcases/inference/subexpressions_of_explicitly_typed_fields.dart.strong.expect
index 8293a16..282ab56 100644
--- a/pkg/front_end/testcases/inference/subexpressions_of_explicitly_typed_fields.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/subexpressions_of_explicitly_typed_fields.dart.strong.expect
@@ -7,6 +7,16 @@
   synthetic constructor •() → self::C*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field core::List<core::num*>* y = <core::num*>[0];
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/subexpressions_of_explicitly_typed_fields.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/subexpressions_of_explicitly_typed_fields.dart.strong.transformed.expect
index 8293a16..282ab56 100644
--- a/pkg/front_end/testcases/inference/subexpressions_of_explicitly_typed_fields.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/subexpressions_of_explicitly_typed_fields.dart.strong.transformed.expect
@@ -7,6 +7,16 @@
   synthetic constructor •() → self::C*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field core::List<core::num*>* y = <core::num*>[0];
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/super_index_set.dart.outline.expect b/pkg/front_end/testcases/inference/super_index_set.dart.outline.expect
index 3aaa9eb..a9f7441 100644
--- a/pkg/front_end/testcases/inference/super_index_set.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/super_index_set.dart.outline.expect
@@ -9,6 +9,16 @@
     ;
   operator []=(core::int* x, core::String* y) → void
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C extends self::B {
   synthetic constructor •() → self::C*
diff --git a/pkg/front_end/testcases/inference/super_index_set.dart.strong.expect b/pkg/front_end/testcases/inference/super_index_set.dart.strong.expect
index 6683122..4acd370 100644
--- a/pkg/front_end/testcases/inference/super_index_set.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/super_index_set.dart.strong.expect
@@ -9,6 +9,16 @@
     : super core::Object::•()
     ;
   operator []=(core::int* x, core::String* y) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C extends self::B {
   synthetic constructor •() → self::C*
diff --git a/pkg/front_end/testcases/inference/super_index_set.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/super_index_set.dart.strong.transformed.expect
index 6683122..4acd370 100644
--- a/pkg/front_end/testcases/inference/super_index_set.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/super_index_set.dart.strong.transformed.expect
@@ -9,6 +9,16 @@
     : super core::Object::•()
     ;
   operator []=(core::int* x, core::String* y) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C extends self::B {
   synthetic constructor •() → self::C*
diff --git a/pkg/front_end/testcases/inference/super_index_set_substitution.dart.outline.expect b/pkg/front_end/testcases/inference/super_index_set_substitution.dart.outline.expect
index f0b7a13..635d3ac 100644
--- a/pkg/front_end/testcases/inference/super_index_set_substitution.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/super_index_set_substitution.dart.outline.expect
@@ -10,6 +10,16 @@
     ;
   operator []=(generic-covariant-impl core::Map<core::int*, self::B::T*>* x, generic-covariant-impl core::List<self::B::T*>* y) → void
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C<U extends core::Object* = dynamic> extends self::B<asy::Future<self::C::U*>*> {
   synthetic constructor •() → self::C<self::C::U*>*
diff --git a/pkg/front_end/testcases/inference/super_index_set_substitution.dart.strong.expect b/pkg/front_end/testcases/inference/super_index_set_substitution.dart.strong.expect
index 6d2e13b..968a880 100644
--- a/pkg/front_end/testcases/inference/super_index_set_substitution.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/super_index_set_substitution.dart.strong.expect
@@ -10,6 +10,16 @@
     : super core::Object::•()
     ;
   operator []=(generic-covariant-impl core::Map<core::int*, self::B::T*>* x, generic-covariant-impl core::List<self::B::T*>* y) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C<U extends core::Object* = dynamic> extends self::B<asy::Future<self::C::U*>*> {
   synthetic constructor •() → self::C<self::C::U*>*
diff --git a/pkg/front_end/testcases/inference/super_index_set_substitution.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/super_index_set_substitution.dart.strong.transformed.expect
index 6d2e13b..968a880 100644
--- a/pkg/front_end/testcases/inference/super_index_set_substitution.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/super_index_set_substitution.dart.strong.transformed.expect
@@ -10,6 +10,16 @@
     : super core::Object::•()
     ;
   operator []=(generic-covariant-impl core::Map<core::int*, self::B::T*>* x, generic-covariant-impl core::List<self::B::T*>* y) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C<U extends core::Object* = dynamic> extends self::B<asy::Future<self::C::U*>*> {
   synthetic constructor •() → self::C<self::C::U*>*
diff --git a/pkg/front_end/testcases/inference/super_initializer.dart.outline.expect b/pkg/front_end/testcases/inference/super_initializer.dart.outline.expect
index 723d5f7..2101fab 100644
--- a/pkg/front_end/testcases/inference/super_initializer.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/super_initializer.dart.outline.expect
@@ -9,6 +9,16 @@
 class B extends core::Object {
   constructor •(core::int* x) → self::B*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method f<T extends core::Object* = dynamic>() → self::f::T*
   ;
diff --git a/pkg/front_end/testcases/inference/super_initializer.dart.strong.expect b/pkg/front_end/testcases/inference/super_initializer.dart.strong.expect
index 89b8f47..c61ae6d 100644
--- a/pkg/front_end/testcases/inference/super_initializer.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/super_initializer.dart.strong.expect
@@ -11,6 +11,16 @@
   constructor •(core::int* x) → self::B*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method f<T extends core::Object* = dynamic>() → self::f::T*
   return null;
diff --git a/pkg/front_end/testcases/inference/super_initializer.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/super_initializer.dart.strong.transformed.expect
index 89b8f47..c61ae6d 100644
--- a/pkg/front_end/testcases/inference/super_initializer.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/super_initializer.dart.strong.transformed.expect
@@ -11,6 +11,16 @@
   constructor •(core::int* x) → self::B*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method f<T extends core::Object* = dynamic>() → self::f::T*
   return null;
diff --git a/pkg/front_end/testcases/inference/super_initializer_substitution.dart.outline.expect b/pkg/front_end/testcases/inference/super_initializer_substitution.dart.outline.expect
index 28a69b5..67adfb7 100644
--- a/pkg/front_end/testcases/inference/super_initializer_substitution.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/super_initializer_substitution.dart.outline.expect
@@ -5,6 +5,16 @@
 class B<T extends core::Object* = dynamic> extends core::Object {
   constructor •(self::B::T* t) → self::B<self::B::T*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C<U extends core::Object* = dynamic> extends self::B<core::List<self::C::U*>*> {
   constructor •() → self::C<self::C::U*>*
diff --git a/pkg/front_end/testcases/inference/super_initializer_substitution.dart.strong.expect b/pkg/front_end/testcases/inference/super_initializer_substitution.dart.strong.expect
index 885c1fb..803ac22 100644
--- a/pkg/front_end/testcases/inference/super_initializer_substitution.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/super_initializer_substitution.dart.strong.expect
@@ -6,6 +6,16 @@
   constructor •(self::B::T* t) → self::B<self::B::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C<U extends core::Object* = dynamic> extends self::B<core::List<self::C::U*>*> {
   constructor •() → self::C<self::C::U*>*
diff --git a/pkg/front_end/testcases/inference/super_initializer_substitution.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/super_initializer_substitution.dart.strong.transformed.expect
index 885c1fb..803ac22 100644
--- a/pkg/front_end/testcases/inference/super_initializer_substitution.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/super_initializer_substitution.dart.strong.transformed.expect
@@ -6,6 +6,16 @@
   constructor •(self::B::T* t) → self::B<self::B::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C<U extends core::Object* = dynamic> extends self::B<core::List<self::C::U*>*> {
   constructor •() → self::C<self::C::U*>*
diff --git a/pkg/front_end/testcases/inference/super_method_invocation.dart.outline.expect b/pkg/front_end/testcases/inference/super_method_invocation.dart.outline.expect
index 3e1ecf1..e5370ea 100644
--- a/pkg/front_end/testcases/inference/super_method_invocation.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/super_method_invocation.dart.outline.expect
@@ -7,6 +7,16 @@
     ;
   method f() → core::int*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D extends self::C {
   synthetic constructor •() → self::D*
diff --git a/pkg/front_end/testcases/inference/super_method_invocation.dart.strong.expect b/pkg/front_end/testcases/inference/super_method_invocation.dart.strong.expect
index e669dba..c7df2ff 100644
--- a/pkg/front_end/testcases/inference/super_method_invocation.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/super_method_invocation.dart.strong.expect
@@ -8,6 +8,16 @@
     ;
   method f() → core::int*
     return 0;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D extends self::C {
   synthetic constructor •() → self::D*
diff --git a/pkg/front_end/testcases/inference/super_method_invocation.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/super_method_invocation.dart.strong.transformed.expect
index e669dba..c7df2ff 100644
--- a/pkg/front_end/testcases/inference/super_method_invocation.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/super_method_invocation.dart.strong.transformed.expect
@@ -8,6 +8,16 @@
     ;
   method f() → core::int*
     return 0;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D extends self::C {
   synthetic constructor •() → self::D*
diff --git a/pkg/front_end/testcases/inference/super_method_invocation_substitution.dart.outline.expect b/pkg/front_end/testcases/inference/super_method_invocation_substitution.dart.outline.expect
index 86475af..607ce55 100644
--- a/pkg/front_end/testcases/inference/super_method_invocation_substitution.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/super_method_invocation_substitution.dart.outline.expect
@@ -8,6 +8,16 @@
 class D<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::D<self::D::T*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class E<T extends core::Object* = dynamic> extends self::D<self::E::T*> {
   synthetic constructor •() → self::E<self::E::T*>*
@@ -18,6 +28,16 @@
     ;
   method g(generic-covariant-impl self::E<self::B::T*>* x) → self::D<self::B::T*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C<U extends core::Object* = dynamic> extends self::B<asy::Future<self::C::U*>*> {
   synthetic constructor •() → self::C<self::C::U*>*
diff --git a/pkg/front_end/testcases/inference/super_method_invocation_substitution.dart.strong.expect b/pkg/front_end/testcases/inference/super_method_invocation_substitution.dart.strong.expect
index f4fe221..4b3d401 100644
--- a/pkg/front_end/testcases/inference/super_method_invocation_substitution.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/super_method_invocation_substitution.dart.strong.expect
@@ -9,6 +9,16 @@
   synthetic constructor •() → self::D<self::D::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class E<T extends core::Object* = dynamic> extends self::D<self::E::T*> {
   synthetic constructor •() → self::E<self::E::T*>*
@@ -21,6 +31,16 @@
     ;
   method g(generic-covariant-impl self::E<self::B::T*>* x) → self::D<self::B::T*>*
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C<U extends core::Object* = dynamic> extends self::B<asy::Future<self::C::U*>*> {
   synthetic constructor •() → self::C<self::C::U*>*
diff --git a/pkg/front_end/testcases/inference/super_method_invocation_substitution.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/super_method_invocation_substitution.dart.strong.transformed.expect
index f4fe221..4b3d401 100644
--- a/pkg/front_end/testcases/inference/super_method_invocation_substitution.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/super_method_invocation_substitution.dart.strong.transformed.expect
@@ -9,6 +9,16 @@
   synthetic constructor •() → self::D<self::D::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class E<T extends core::Object* = dynamic> extends self::D<self::E::T*> {
   synthetic constructor •() → self::E<self::E::T*>*
@@ -21,6 +31,16 @@
     ;
   method g(generic-covariant-impl self::E<self::B::T*>* x) → self::D<self::B::T*>*
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C<U extends core::Object* = dynamic> extends self::B<asy::Future<self::C::U*>*> {
   synthetic constructor •() → self::C<self::C::U*>*
diff --git a/pkg/front_end/testcases/inference/super_property_get.dart.outline.expect b/pkg/front_end/testcases/inference/super_property_get.dart.outline.expect
index 2148ea4..88f3bb6 100644
--- a/pkg/front_end/testcases/inference/super_property_get.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/super_property_get.dart.outline.expect
@@ -6,6 +6,16 @@
   field core::int* x;
   synthetic constructor •() → self::C*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D extends self::C {
   synthetic constructor •() → self::D*
diff --git a/pkg/front_end/testcases/inference/super_property_get.dart.strong.expect b/pkg/front_end/testcases/inference/super_property_get.dart.strong.expect
index 2ac2dc30..36cc5cd 100644
--- a/pkg/front_end/testcases/inference/super_property_get.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/super_property_get.dart.strong.expect
@@ -7,6 +7,16 @@
   synthetic constructor •() → self::C*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D extends self::C {
   synthetic constructor •() → self::D*
diff --git a/pkg/front_end/testcases/inference/super_property_get.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/super_property_get.dart.strong.transformed.expect
index 2ac2dc30..36cc5cd 100644
--- a/pkg/front_end/testcases/inference/super_property_get.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/super_property_get.dart.strong.transformed.expect
@@ -7,6 +7,16 @@
   synthetic constructor •() → self::C*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D extends self::C {
   synthetic constructor •() → self::D*
diff --git a/pkg/front_end/testcases/inference/super_property_get_invoke_function_typed.dart.outline.expect b/pkg/front_end/testcases/inference/super_property_get_invoke_function_typed.dart.outline.expect
index 50d69f8..23dfa29 100644
--- a/pkg/front_end/testcases/inference/super_property_get_invoke_function_typed.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/super_property_get_invoke_function_typed.dart.outline.expect
@@ -6,6 +6,16 @@
   field () →* core::int* f;
   synthetic constructor •() → self::C*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D extends self::C {
   synthetic constructor •() → self::D*
diff --git a/pkg/front_end/testcases/inference/super_property_get_invoke_function_typed.dart.strong.expect b/pkg/front_end/testcases/inference/super_property_get_invoke_function_typed.dart.strong.expect
index 73d477f..30a977e 100644
--- a/pkg/front_end/testcases/inference/super_property_get_invoke_function_typed.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/super_property_get_invoke_function_typed.dart.strong.expect
@@ -7,6 +7,16 @@
   synthetic constructor •() → self::C*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D extends self::C {
   synthetic constructor •() → self::D*
diff --git a/pkg/front_end/testcases/inference/super_property_get_invoke_function_typed.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/super_property_get_invoke_function_typed.dart.strong.transformed.expect
index 73d477f..30a977e 100644
--- a/pkg/front_end/testcases/inference/super_property_get_invoke_function_typed.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/super_property_get_invoke_function_typed.dart.strong.transformed.expect
@@ -7,6 +7,16 @@
   synthetic constructor •() → self::C*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D extends self::C {
   synthetic constructor •() → self::D*
diff --git a/pkg/front_end/testcases/inference/super_property_get_invoke_implicit_call.dart.outline.expect b/pkg/front_end/testcases/inference/super_property_get_invoke_implicit_call.dart.outline.expect
index 93be11a..13f556e 100644
--- a/pkg/front_end/testcases/inference/super_property_get_invoke_implicit_call.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/super_property_get_invoke_implicit_call.dart.outline.expect
@@ -7,11 +7,31 @@
     ;
   method call() → core::int*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C extends core::Object {
   field self::CallableClass* f;
   synthetic constructor •() → self::C*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D extends self::C {
   synthetic constructor •() → self::D*
diff --git a/pkg/front_end/testcases/inference/super_property_get_invoke_implicit_call.dart.strong.expect b/pkg/front_end/testcases/inference/super_property_get_invoke_implicit_call.dart.strong.expect
index 54a2bd5..d4a16ae 100644
--- a/pkg/front_end/testcases/inference/super_property_get_invoke_implicit_call.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/super_property_get_invoke_implicit_call.dart.strong.expect
@@ -8,12 +8,32 @@
     ;
   method call() → core::int*
     return 0;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C extends core::Object {
   field self::CallableClass* f = new self::CallableClass::•();
   synthetic constructor •() → self::C*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D extends self::C {
   synthetic constructor •() → self::D*
diff --git a/pkg/front_end/testcases/inference/super_property_get_invoke_implicit_call.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/super_property_get_invoke_implicit_call.dart.strong.transformed.expect
index 54a2bd5..d4a16ae 100644
--- a/pkg/front_end/testcases/inference/super_property_get_invoke_implicit_call.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/super_property_get_invoke_implicit_call.dart.strong.transformed.expect
@@ -8,12 +8,32 @@
     ;
   method call() → core::int*
     return 0;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C extends core::Object {
   field self::CallableClass* f = new self::CallableClass::•();
   synthetic constructor •() → self::C*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D extends self::C {
   synthetic constructor •() → self::D*
diff --git a/pkg/front_end/testcases/inference/super_property_get_substitution.dart.outline.expect b/pkg/front_end/testcases/inference/super_property_get_substitution.dart.outline.expect
index d2f31a1..2ca4f91 100644
--- a/pkg/front_end/testcases/inference/super_property_get_substitution.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/super_property_get_substitution.dart.outline.expect
@@ -8,6 +8,16 @@
 class D<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::D<self::D::T*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class E<T extends core::Object* = dynamic> extends self::D<self::E::T*> {
   synthetic constructor •() → self::E<self::E::T*>*
@@ -17,6 +27,16 @@
   generic-covariant-impl field self::D<self::B::T*>* x;
   synthetic constructor •() → self::B<self::B::T*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C<U extends core::Object* = dynamic> extends self::B<asy::Future<self::C::U*>*> {
   synthetic constructor •() → self::C<self::C::U*>*
diff --git a/pkg/front_end/testcases/inference/super_property_get_substitution.dart.strong.expect b/pkg/front_end/testcases/inference/super_property_get_substitution.dart.strong.expect
index 55d5e7b..5838946 100644
--- a/pkg/front_end/testcases/inference/super_property_get_substitution.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/super_property_get_substitution.dart.strong.expect
@@ -9,6 +9,16 @@
   synthetic constructor •() → self::D<self::D::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class E<T extends core::Object* = dynamic> extends self::D<self::E::T*> {
   synthetic constructor •() → self::E<self::E::T*>*
@@ -20,6 +30,16 @@
   synthetic constructor •() → self::B<self::B::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C<U extends core::Object* = dynamic> extends self::B<asy::Future<self::C::U*>*> {
   synthetic constructor •() → self::C<self::C::U*>*
diff --git a/pkg/front_end/testcases/inference/super_property_get_substitution.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/super_property_get_substitution.dart.strong.transformed.expect
index 55d5e7b..5838946 100644
--- a/pkg/front_end/testcases/inference/super_property_get_substitution.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/super_property_get_substitution.dart.strong.transformed.expect
@@ -9,6 +9,16 @@
   synthetic constructor •() → self::D<self::D::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class E<T extends core::Object* = dynamic> extends self::D<self::E::T*> {
   synthetic constructor •() → self::E<self::E::T*>*
@@ -20,6 +30,16 @@
   synthetic constructor •() → self::B<self::B::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C<U extends core::Object* = dynamic> extends self::B<asy::Future<self::C::U*>*> {
   synthetic constructor •() → self::C<self::C::U*>*
diff --git a/pkg/front_end/testcases/inference/super_property_get_tearoff.dart.outline.expect b/pkg/front_end/testcases/inference/super_property_get_tearoff.dart.outline.expect
index 3e1ecf1..e5370ea 100644
--- a/pkg/front_end/testcases/inference/super_property_get_tearoff.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/super_property_get_tearoff.dart.outline.expect
@@ -7,6 +7,16 @@
     ;
   method f() → core::int*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D extends self::C {
   synthetic constructor •() → self::D*
diff --git a/pkg/front_end/testcases/inference/super_property_get_tearoff.dart.strong.expect b/pkg/front_end/testcases/inference/super_property_get_tearoff.dart.strong.expect
index 48ef35d..20c8e6b 100644
--- a/pkg/front_end/testcases/inference/super_property_get_tearoff.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/super_property_get_tearoff.dart.strong.expect
@@ -8,6 +8,16 @@
     ;
   method f() → core::int*
     return 0;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D extends self::C {
   synthetic constructor •() → self::D*
diff --git a/pkg/front_end/testcases/inference/super_property_get_tearoff.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/super_property_get_tearoff.dart.strong.transformed.expect
index 48ef35d..20c8e6b 100644
--- a/pkg/front_end/testcases/inference/super_property_get_tearoff.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/super_property_get_tearoff.dart.strong.transformed.expect
@@ -8,6 +8,16 @@
     ;
   method f() → core::int*
     return 0;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D extends self::C {
   synthetic constructor •() → self::D*
diff --git a/pkg/front_end/testcases/inference/super_property_set_substitution.dart.outline.expect b/pkg/front_end/testcases/inference/super_property_set_substitution.dart.outline.expect
index 5d06047..a073323 100644
--- a/pkg/front_end/testcases/inference/super_property_set_substitution.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/super_property_set_substitution.dart.outline.expect
@@ -8,6 +8,16 @@
 class D<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::D<self::D::T*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class E<T extends core::Object* = dynamic> extends self::D<self::E::T*> {
   synthetic constructor •() → self::E<self::E::T*>*
@@ -17,6 +27,16 @@
   generic-covariant-impl field self::D<self::B::T*>* x;
   synthetic constructor •() → self::B<self::B::T*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C<U extends core::Object* = dynamic> extends self::B<asy::Future<self::C::U*>*> {
   synthetic constructor •() → self::C<self::C::U*>*
diff --git a/pkg/front_end/testcases/inference/super_property_set_substitution.dart.strong.expect b/pkg/front_end/testcases/inference/super_property_set_substitution.dart.strong.expect
index 9cca08c..9f76e18 100644
--- a/pkg/front_end/testcases/inference/super_property_set_substitution.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/super_property_set_substitution.dart.strong.expect
@@ -9,6 +9,16 @@
   synthetic constructor •() → self::D<self::D::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class E<T extends core::Object* = dynamic> extends self::D<self::E::T*> {
   synthetic constructor •() → self::E<self::E::T*>*
@@ -20,6 +30,16 @@
   synthetic constructor •() → self::B<self::B::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C<U extends core::Object* = dynamic> extends self::B<asy::Future<self::C::U*>*> {
   synthetic constructor •() → self::C<self::C::U*>*
diff --git a/pkg/front_end/testcases/inference/super_property_set_substitution.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/super_property_set_substitution.dart.strong.transformed.expect
index 9cca08c..9f76e18 100644
--- a/pkg/front_end/testcases/inference/super_property_set_substitution.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/super_property_set_substitution.dart.strong.transformed.expect
@@ -9,6 +9,16 @@
   synthetic constructor •() → self::D<self::D::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class E<T extends core::Object* = dynamic> extends self::D<self::E::T*> {
   synthetic constructor •() → self::E<self::E::T*>*
@@ -20,6 +30,16 @@
   synthetic constructor •() → self::B<self::B::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C<U extends core::Object* = dynamic> extends self::B<asy::Future<self::C::U*>*> {
   synthetic constructor •() → self::C<self::C::U*>*
diff --git a/pkg/front_end/testcases/inference/this_reference.dart.outline.expect b/pkg/front_end/testcases/inference/this_reference.dart.outline.expect
index ca3e5cf..daa73ab 100644
--- a/pkg/front_end/testcases/inference/this_reference.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/this_reference.dart.outline.expect
@@ -7,6 +7,16 @@
     ;
   method f() → void
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/inference/this_reference.dart.strong.expect b/pkg/front_end/testcases/inference/this_reference.dart.strong.expect
index 9240298..8443dfb 100644
--- a/pkg/front_end/testcases/inference/this_reference.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/this_reference.dart.strong.expect
@@ -9,5 +9,15 @@
   method f() → void {
     self::C<self::C::T*>* x = this;
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/this_reference.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/this_reference.dart.strong.transformed.expect
index 9240298..8443dfb 100644
--- a/pkg/front_end/testcases/inference/this_reference.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/this_reference.dart.strong.transformed.expect
@@ -9,5 +9,15 @@
   method f() → void {
     self::C<self::C::T*>* x = this;
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/top_level_return_and_yield.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/top_level_return_and_yield.dart.strong.transformed.expect
index 9ebedc0..c6c16e4 100644
--- a/pkg/front_end/testcases/inference/top_level_return_and_yield.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/top_level_return_and_yield.dart.strong.transformed.expect
@@ -40,8 +40,8 @@
       asy::_completeOnAsyncReturn(:async_completer, :return_value);
       return;
     }
-    on dynamic catch(dynamic :exception, core::StackTrace* :stack_trace) {
-      :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+    on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
+      :async_completer.{asy::Completer::completeError}(exception, stack_trace);
     }
   :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
@@ -50,32 +50,36 @@
   return :async_completer.{asy::Completer::future};
 }
 static method c() → core::Iterable<(core::int*) →* core::int*>* /* originally sync* */ {
-  core::int* :await_jump_var = 0;
-  dynamic :await_ctx_var;
-  function :sync_op(core::_SyncIterator<(core::int*) →* core::int*>* :iterator) → core::bool* yielding {
-    {
+  function :sync_op_gen() → (core::_SyncIterator<(core::int*) →* core::int*>*) →* core::bool* {
+    core::int* :await_jump_var = 0;
+    dynamic :await_ctx_var;
+    return (core::_SyncIterator<(core::int*) →* core::int*>* :iterator) → core::bool* yielding {
       {
-        :iterator.{core::_SyncIterator::_current} = (core::int* x) → core::int* => x;
-        [yield] true;
+        {
+          :iterator.{core::_SyncIterator::_current} = (core::int* x) → core::int* => x;
+          [yield] true;
+        }
       }
-    }
-    return false;
+      return false;
+    };
   }
-  return new core::_SyncIterable::•<(core::int*) →* core::int*>(:sync_op);
+  return new core::_SyncIterable::•<(core::int*) →* core::int*>(:sync_op_gen);
 }
 static method d() → core::Iterable<(core::int*) →* core::int*>* /* originally sync* */ {
-  core::int* :await_jump_var = 0;
-  dynamic :await_ctx_var;
-  function :sync_op(core::_SyncIterator<(core::int*) →* core::int*>* :iterator) → core::bool* yielding {
-    {
+  function :sync_op_gen() → (core::_SyncIterator<(core::int*) →* core::int*>*) →* core::bool* {
+    core::int* :await_jump_var = 0;
+    dynamic :await_ctx_var;
+    return (core::_SyncIterator<(core::int*) →* core::int*>* :iterator) → core::bool* yielding {
       {
-        :iterator.{core::_SyncIterator::_yieldEachIterable} = <(core::int*) →* core::int*>[(core::int* x) → core::int* => x];
-        [yield] true;
+        {
+          :iterator.{core::_SyncIterator::_yieldEachIterable} = <(core::int*) →* core::int*>[(core::int* x) → core::int* => x];
+          [yield] true;
+        }
       }
-    }
-    return false;
+      return false;
+    };
   }
-  return new core::_SyncIterable::•<(core::int*) →* core::int*>(:sync_op);
+  return new core::_SyncIterable::•<(core::int*) →* core::int*>(:sync_op_gen);
 }
 static method e() → asy::Stream<(core::int*) →* core::int*>* /* originally async* */ {
   asy::_AsyncStarStreamController<(core::int*) →* core::int*>* :controller;
@@ -99,8 +103,8 @@
         }
         return;
       }
-      on dynamic catch(dynamic :exception, core::StackTrace* :stack_trace) {
-        :controller.{asy::_AsyncStarStreamController::addError}(:exception, :stack_trace);
+      on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
+        :controller.{asy::_AsyncStarStreamController::addError}(exception, stack_trace);
       }
     finally {
       :controller.{asy::_AsyncStarStreamController::close}();
@@ -134,8 +138,8 @@
         }
         return;
       }
-      on dynamic catch(dynamic :exception, core::StackTrace* :stack_trace) {
-        :controller.{asy::_AsyncStarStreamController::addError}(:exception, :stack_trace);
+      on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
+        :controller.{asy::_AsyncStarStreamController::addError}(exception, stack_trace);
       }
     finally {
       :controller.{asy::_AsyncStarStreamController::close}();
diff --git a/pkg/front_end/testcases/inference/try_catch.dart.outline.expect b/pkg/front_end/testcases/inference/try_catch.dart.outline.expect
index c7fdcb4..f380476 100644
--- a/pkg/front_end/testcases/inference/try_catch.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/try_catch.dart.outline.expect
@@ -5,14 +5,44 @@
 class C extends core::Object {
   synthetic constructor •() → self::C*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D extends core::Object {
   synthetic constructor •() → self::D*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class E extends core::Object {
   synthetic constructor •() → self::E*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method test(() →* void f) → void
   ;
diff --git a/pkg/front_end/testcases/inference/try_catch.dart.strong.expect b/pkg/front_end/testcases/inference/try_catch.dart.strong.expect
index 7811d3b1..79895ce 100644
--- a/pkg/front_end/testcases/inference/try_catch.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/try_catch.dart.strong.expect
@@ -6,16 +6,46 @@
   synthetic constructor •() → self::C*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D extends core::Object {
   synthetic constructor •() → self::D*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class E extends core::Object {
   synthetic constructor •() → self::E*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method test(() →* void f) → void {
   try {
diff --git a/pkg/front_end/testcases/inference/try_catch.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/try_catch.dart.strong.transformed.expect
index 7811d3b1..79895ce 100644
--- a/pkg/front_end/testcases/inference/try_catch.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/try_catch.dart.strong.transformed.expect
@@ -6,16 +6,46 @@
   synthetic constructor •() → self::C*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D extends core::Object {
   synthetic constructor •() → self::D*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class E extends core::Object {
   synthetic constructor •() → self::E*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method test(() →* void f) → void {
   try {
diff --git a/pkg/front_end/testcases/inference/try_catch_finally.dart.outline.expect b/pkg/front_end/testcases/inference/try_catch_finally.dart.outline.expect
index c7fdcb4..f380476 100644
--- a/pkg/front_end/testcases/inference/try_catch_finally.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/try_catch_finally.dart.outline.expect
@@ -5,14 +5,44 @@
 class C extends core::Object {
   synthetic constructor •() → self::C*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D extends core::Object {
   synthetic constructor •() → self::D*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class E extends core::Object {
   synthetic constructor •() → self::E*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method test(() →* void f) → void
   ;
diff --git a/pkg/front_end/testcases/inference/try_catch_finally.dart.strong.expect b/pkg/front_end/testcases/inference/try_catch_finally.dart.strong.expect
index 49fa637..42d5edb 100644
--- a/pkg/front_end/testcases/inference/try_catch_finally.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/try_catch_finally.dart.strong.expect
@@ -6,16 +6,46 @@
   synthetic constructor •() → self::C*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D extends core::Object {
   synthetic constructor •() → self::D*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class E extends core::Object {
   synthetic constructor •() → self::E*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method test(() →* void f) → void {
   try
diff --git a/pkg/front_end/testcases/inference/try_catch_finally.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/try_catch_finally.dart.strong.transformed.expect
index 49fa637..42d5edb 100644
--- a/pkg/front_end/testcases/inference/try_catch_finally.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/try_catch_finally.dart.strong.transformed.expect
@@ -6,16 +6,46 @@
   synthetic constructor •() → self::C*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D extends core::Object {
   synthetic constructor •() → self::D*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class E extends core::Object {
   synthetic constructor •() → self::E*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method test(() →* void f) → void {
   try
diff --git a/pkg/front_end/testcases/inference/try_catch_promotion.dart.outline.expect b/pkg/front_end/testcases/inference/try_catch_promotion.dart.outline.expect
index ef64e48..b73b1cb 100644
--- a/pkg/front_end/testcases/inference/try_catch_promotion.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/try_catch_promotion.dart.outline.expect
@@ -5,6 +5,16 @@
 class C extends core::Object {
   synthetic constructor •() → self::C*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D extends self::C {
   synthetic constructor •() → self::D*
@@ -13,6 +23,15 @@
 class E extends core::StackTrace {
   synthetic constructor •() → self::E*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method test(() →* void f) → void
   ;
diff --git a/pkg/front_end/testcases/inference/try_catch_promotion.dart.strong.expect b/pkg/front_end/testcases/inference/try_catch_promotion.dart.strong.expect
index 45bc116..3ad22a2 100644
--- a/pkg/front_end/testcases/inference/try_catch_promotion.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/try_catch_promotion.dart.strong.expect
@@ -6,6 +6,16 @@
   synthetic constructor •() → self::C*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D extends self::C {
   synthetic constructor •() → self::D*
@@ -16,6 +26,15 @@
   synthetic constructor •() → self::E*
     : super core::StackTrace::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method test(() →* void f) → void {
   try {
diff --git a/pkg/front_end/testcases/inference/try_catch_promotion.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/try_catch_promotion.dart.strong.transformed.expect
index 45bc116..3ad22a2 100644
--- a/pkg/front_end/testcases/inference/try_catch_promotion.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/try_catch_promotion.dart.strong.transformed.expect
@@ -6,6 +6,16 @@
   synthetic constructor •() → self::C*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D extends self::C {
   synthetic constructor •() → self::D*
@@ -16,6 +26,15 @@
   synthetic constructor •() → self::E*
     : super core::StackTrace::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method test(() →* void f) → void {
   try {
diff --git a/pkg/front_end/testcases/inference/type_cast.dart.outline.expect b/pkg/front_end/testcases/inference/type_cast.dart.outline.expect
index 32f2f1d..df03d3f 100644
--- a/pkg/front_end/testcases/inference/type_cast.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/type_cast.dart.outline.expect
@@ -5,6 +5,16 @@
 class A<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::A<self::A::T*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B<T extends core::Object* = dynamic> extends self::A<self::B::T*> {
   synthetic constructor •() → self::B<self::B::T*>*
diff --git a/pkg/front_end/testcases/inference/type_cast.dart.strong.expect b/pkg/front_end/testcases/inference/type_cast.dart.strong.expect
index c6dc3bb..70fb65e 100644
--- a/pkg/front_end/testcases/inference/type_cast.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/type_cast.dart.strong.expect
@@ -6,6 +6,16 @@
   synthetic constructor •() → self::A<self::A::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B<T extends core::Object* = dynamic> extends self::A<self::B::T*> {
   synthetic constructor •() → self::B<self::B::T*>*
diff --git a/pkg/front_end/testcases/inference/type_cast.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/type_cast.dart.strong.transformed.expect
index c6dc3bb..70fb65e 100644
--- a/pkg/front_end/testcases/inference/type_cast.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/type_cast.dart.strong.transformed.expect
@@ -6,6 +6,16 @@
   synthetic constructor •() → self::A<self::A::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B<T extends core::Object* = dynamic> extends self::A<self::B::T*> {
   synthetic constructor •() → self::B<self::B::T*>*
diff --git a/pkg/front_end/testcases/inference/unresolved_super.dart.outline.expect b/pkg/front_end/testcases/inference/unresolved_super.dart.outline.expect
index 862cc59..3b0f488 100644
--- a/pkg/front_end/testcases/inference/unresolved_super.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/unresolved_super.dart.outline.expect
@@ -7,6 +7,16 @@
     ;
   method test() → void
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method f<T extends core::Object* = dynamic>() → self::f::T*
   ;
diff --git a/pkg/front_end/testcases/inference/unresolved_super.dart.strong.expect b/pkg/front_end/testcases/inference/unresolved_super.dart.strong.expect
index 1f4d51b..b1da6ae 100644
--- a/pkg/front_end/testcases/inference/unresolved_super.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/unresolved_super.dart.strong.expect
@@ -18,6 +18,16 @@
     var /*@type=dynamic*/ v5 = super[0] = /*@typeArgs=dynamic*/ f();
                                     ^" in #t2;
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method f<T extends core::Object* = dynamic>() → self::f::T*
   return null;
diff --git a/pkg/front_end/testcases/inference/unresolved_super.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/unresolved_super.dart.strong.transformed.expect
index 1f4d51b..b1da6ae 100644
--- a/pkg/front_end/testcases/inference/unresolved_super.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/unresolved_super.dart.strong.transformed.expect
@@ -18,6 +18,16 @@
     var /*@type=dynamic*/ v5 = super[0] = /*@typeArgs=dynamic*/ f();
                                     ^" in #t2;
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method f<T extends core::Object* = dynamic>() → self::f::T*
   return null;
diff --git a/pkg/front_end/testcases/inference/unsafe_block_closure_inference_constructor_call_explicit_dynamic_param.dart.outline.expect b/pkg/front_end/testcases/inference/unsafe_block_closure_inference_constructor_call_explicit_dynamic_param.dart.outline.expect
index bd31fbd..6d3eb8e 100644
--- a/pkg/front_end/testcases/inference/unsafe_block_closure_inference_constructor_call_explicit_dynamic_param.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/unsafe_block_closure_inference_constructor_call_explicit_dynamic_param.dart.outline.expect
@@ -5,6 +5,16 @@
 class C<T extends core::Object* = dynamic> extends core::Object {
   constructor •(() →* self::C::T* x) → self::C<self::C::T*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field self::C<dynamic>* v;
 static method main() → dynamic
diff --git a/pkg/front_end/testcases/inference/unsafe_block_closure_inference_constructor_call_explicit_dynamic_param.dart.strong.expect b/pkg/front_end/testcases/inference/unsafe_block_closure_inference_constructor_call_explicit_dynamic_param.dart.strong.expect
index 06aefae..dbeb0ff 100644
--- a/pkg/front_end/testcases/inference/unsafe_block_closure_inference_constructor_call_explicit_dynamic_param.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/unsafe_block_closure_inference_constructor_call_explicit_dynamic_param.dart.strong.expect
@@ -6,6 +6,16 @@
   constructor •(() →* self::C::T* x) → self::C<self::C::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field self::C<dynamic>* v = new self::C::•<dynamic>(() → core::int* {
   return 1;
diff --git a/pkg/front_end/testcases/inference/unsafe_block_closure_inference_constructor_call_explicit_dynamic_param.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/unsafe_block_closure_inference_constructor_call_explicit_dynamic_param.dart.strong.transformed.expect
index 06aefae..dbeb0ff 100644
--- a/pkg/front_end/testcases/inference/unsafe_block_closure_inference_constructor_call_explicit_dynamic_param.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/unsafe_block_closure_inference_constructor_call_explicit_dynamic_param.dart.strong.transformed.expect
@@ -6,6 +6,16 @@
   constructor •(() →* self::C::T* x) → self::C<self::C::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field self::C<dynamic>* v = new self::C::•<dynamic>(() → core::int* {
   return 1;
diff --git a/pkg/front_end/testcases/inference/unsafe_block_closure_inference_constructor_call_explicit_type_param.dart.outline.expect b/pkg/front_end/testcases/inference/unsafe_block_closure_inference_constructor_call_explicit_type_param.dart.outline.expect
index 19474ef..7329e03 100644
--- a/pkg/front_end/testcases/inference/unsafe_block_closure_inference_constructor_call_explicit_type_param.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/unsafe_block_closure_inference_constructor_call_explicit_type_param.dart.outline.expect
@@ -5,6 +5,16 @@
 class C<T extends core::Object* = dynamic> extends core::Object {
   constructor •(() →* self::C::T* x) → self::C<self::C::T*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field self::C<core::int*>* v;
 static method main() → dynamic
diff --git a/pkg/front_end/testcases/inference/unsafe_block_closure_inference_constructor_call_explicit_type_param.dart.strong.expect b/pkg/front_end/testcases/inference/unsafe_block_closure_inference_constructor_call_explicit_type_param.dart.strong.expect
index d75a375..a260fcf 100644
--- a/pkg/front_end/testcases/inference/unsafe_block_closure_inference_constructor_call_explicit_type_param.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/unsafe_block_closure_inference_constructor_call_explicit_type_param.dart.strong.expect
@@ -6,6 +6,16 @@
   constructor •(() →* self::C::T* x) → self::C<self::C::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field self::C<core::int*>* v = new self::C::•<core::int*>(() → core::int* {
   return 1;
diff --git a/pkg/front_end/testcases/inference/unsafe_block_closure_inference_constructor_call_explicit_type_param.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/unsafe_block_closure_inference_constructor_call_explicit_type_param.dart.strong.transformed.expect
index d75a375..a260fcf 100644
--- a/pkg/front_end/testcases/inference/unsafe_block_closure_inference_constructor_call_explicit_type_param.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/unsafe_block_closure_inference_constructor_call_explicit_type_param.dart.strong.transformed.expect
@@ -6,6 +6,16 @@
   constructor •(() →* self::C::T* x) → self::C<self::C::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field self::C<core::int*>* v = new self::C::•<core::int*>(() → core::int* {
   return 1;
diff --git a/pkg/front_end/testcases/inference/unsafe_block_closure_inference_constructor_call_implicit_type_param.dart.outline.expect b/pkg/front_end/testcases/inference/unsafe_block_closure_inference_constructor_call_implicit_type_param.dart.outline.expect
index be2806f..1579b79 100644
--- a/pkg/front_end/testcases/inference/unsafe_block_closure_inference_constructor_call_implicit_type_param.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/unsafe_block_closure_inference_constructor_call_implicit_type_param.dart.outline.expect
@@ -5,6 +5,16 @@
 class C<T extends core::Object* = dynamic> extends core::Object {
   constructor •(() →* self::C::T* x) → self::C<self::C::T*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/inference/unsafe_block_closure_inference_constructor_call_implicit_type_param.dart.strong.expect b/pkg/front_end/testcases/inference/unsafe_block_closure_inference_constructor_call_implicit_type_param.dart.strong.expect
index 4590681..dbad6e5 100644
--- a/pkg/front_end/testcases/inference/unsafe_block_closure_inference_constructor_call_implicit_type_param.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/unsafe_block_closure_inference_constructor_call_implicit_type_param.dart.strong.expect
@@ -6,6 +6,16 @@
   constructor •(() →* self::C::T* x) → self::C<self::C::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   self::C<core::int*>* v = new self::C::•<core::int*>(() → core::int* {
diff --git a/pkg/front_end/testcases/inference/unsafe_block_closure_inference_constructor_call_implicit_type_param.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/unsafe_block_closure_inference_constructor_call_implicit_type_param.dart.strong.transformed.expect
index 4590681..dbad6e5 100644
--- a/pkg/front_end/testcases/inference/unsafe_block_closure_inference_constructor_call_implicit_type_param.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/unsafe_block_closure_inference_constructor_call_implicit_type_param.dart.strong.transformed.expect
@@ -6,6 +6,16 @@
   constructor •(() →* self::C::T* x) → self::C<self::C::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   self::C<core::int*>* v = new self::C::•<core::int*>(() → core::int* {
diff --git a/pkg/front_end/testcases/inference/unsafe_block_closure_inference_constructor_call_no_type_param.dart.outline.expect b/pkg/front_end/testcases/inference/unsafe_block_closure_inference_constructor_call_no_type_param.dart.outline.expect
index db56dbb..0fcd2b0 100644
--- a/pkg/front_end/testcases/inference/unsafe_block_closure_inference_constructor_call_no_type_param.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/unsafe_block_closure_inference_constructor_call_no_type_param.dart.outline.expect
@@ -5,6 +5,16 @@
 class C extends core::Object {
   constructor •(() →* dynamic x) → self::C*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field self::C* v;
 static method main() → dynamic
diff --git a/pkg/front_end/testcases/inference/unsafe_block_closure_inference_constructor_call_no_type_param.dart.strong.expect b/pkg/front_end/testcases/inference/unsafe_block_closure_inference_constructor_call_no_type_param.dart.strong.expect
index e0bbcba..d102907 100644
--- a/pkg/front_end/testcases/inference/unsafe_block_closure_inference_constructor_call_no_type_param.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/unsafe_block_closure_inference_constructor_call_no_type_param.dart.strong.expect
@@ -6,6 +6,16 @@
   constructor •(() →* dynamic x) → self::C*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field self::C* v = new self::C::•(() → core::int* {
   return 1;
diff --git a/pkg/front_end/testcases/inference/unsafe_block_closure_inference_constructor_call_no_type_param.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/unsafe_block_closure_inference_constructor_call_no_type_param.dart.strong.transformed.expect
index e0bbcba..d102907 100644
--- a/pkg/front_end/testcases/inference/unsafe_block_closure_inference_constructor_call_no_type_param.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/unsafe_block_closure_inference_constructor_call_no_type_param.dart.strong.transformed.expect
@@ -6,6 +6,16 @@
   constructor •(() →* dynamic x) → self::C*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field self::C* v = new self::C::•(() → core::int* {
   return 1;
diff --git a/pkg/front_end/testcases/inference/unsafe_block_closure_inference_method_call_explicit_dynamic_param.dart.outline.expect b/pkg/front_end/testcases/inference/unsafe_block_closure_inference_method_call_explicit_dynamic_param.dart.outline.expect
index a207fbd..0002b7a 100644
--- a/pkg/front_end/testcases/inference/unsafe_block_closure_inference_method_call_explicit_dynamic_param.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/unsafe_block_closure_inference_method_call_explicit_dynamic_param.dart.outline.expect
@@ -7,6 +7,16 @@
     ;
   method f<T extends core::Object* = dynamic>(() →* self::C::f::T* g) → core::List<self::C::f::T*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/inference/unsafe_block_closure_inference_method_call_explicit_dynamic_param.dart.strong.expect b/pkg/front_end/testcases/inference/unsafe_block_closure_inference_method_call_explicit_dynamic_param.dart.strong.expect
index 4fe014b..a9bb402 100644
--- a/pkg/front_end/testcases/inference/unsafe_block_closure_inference_method_call_explicit_dynamic_param.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/unsafe_block_closure_inference_method_call_explicit_dynamic_param.dart.strong.expect
@@ -8,6 +8,16 @@
     ;
   method f<T extends core::Object* = dynamic>(() →* self::C::f::T* g) → core::List<self::C::f::T*>*
     return <self::C::f::T*>[g.call()];
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   core::List<dynamic>* v = new self::C::•().{self::C::f}<dynamic>(() → core::int* {
diff --git a/pkg/front_end/testcases/inference/unsafe_block_closure_inference_method_call_explicit_dynamic_param.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/unsafe_block_closure_inference_method_call_explicit_dynamic_param.dart.strong.transformed.expect
index 4fe014b..a9bb402 100644
--- a/pkg/front_end/testcases/inference/unsafe_block_closure_inference_method_call_explicit_dynamic_param.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/unsafe_block_closure_inference_method_call_explicit_dynamic_param.dart.strong.transformed.expect
@@ -8,6 +8,16 @@
     ;
   method f<T extends core::Object* = dynamic>(() →* self::C::f::T* g) → core::List<self::C::f::T*>*
     return <self::C::f::T*>[g.call()];
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   core::List<dynamic>* v = new self::C::•().{self::C::f}<dynamic>(() → core::int* {
diff --git a/pkg/front_end/testcases/inference/unsafe_block_closure_inference_method_call_explicit_type_param.dart.outline.expect b/pkg/front_end/testcases/inference/unsafe_block_closure_inference_method_call_explicit_type_param.dart.outline.expect
index a207fbd..0002b7a 100644
--- a/pkg/front_end/testcases/inference/unsafe_block_closure_inference_method_call_explicit_type_param.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/unsafe_block_closure_inference_method_call_explicit_type_param.dart.outline.expect
@@ -7,6 +7,16 @@
     ;
   method f<T extends core::Object* = dynamic>(() →* self::C::f::T* g) → core::List<self::C::f::T*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/inference/unsafe_block_closure_inference_method_call_explicit_type_param.dart.strong.expect b/pkg/front_end/testcases/inference/unsafe_block_closure_inference_method_call_explicit_type_param.dart.strong.expect
index a2c3f33..0e045b8 100644
--- a/pkg/front_end/testcases/inference/unsafe_block_closure_inference_method_call_explicit_type_param.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/unsafe_block_closure_inference_method_call_explicit_type_param.dart.strong.expect
@@ -8,6 +8,16 @@
     ;
   method f<T extends core::Object* = dynamic>(() →* self::C::f::T* g) → core::List<self::C::f::T*>*
     return <self::C::f::T*>[g.call()];
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   core::List<core::int*>* v = new self::C::•().{self::C::f}<core::int*>(() → core::int* {
diff --git a/pkg/front_end/testcases/inference/unsafe_block_closure_inference_method_call_explicit_type_param.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/unsafe_block_closure_inference_method_call_explicit_type_param.dart.strong.transformed.expect
index a2c3f33..0e045b8 100644
--- a/pkg/front_end/testcases/inference/unsafe_block_closure_inference_method_call_explicit_type_param.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/unsafe_block_closure_inference_method_call_explicit_type_param.dart.strong.transformed.expect
@@ -8,6 +8,16 @@
     ;
   method f<T extends core::Object* = dynamic>(() →* self::C::f::T* g) → core::List<self::C::f::T*>*
     return <self::C::f::T*>[g.call()];
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   core::List<core::int*>* v = new self::C::•().{self::C::f}<core::int*>(() → core::int* {
diff --git a/pkg/front_end/testcases/inference/unsafe_block_closure_inference_method_call_implicit_type_param.dart.outline.expect b/pkg/front_end/testcases/inference/unsafe_block_closure_inference_method_call_implicit_type_param.dart.outline.expect
index a207fbd..0002b7a 100644
--- a/pkg/front_end/testcases/inference/unsafe_block_closure_inference_method_call_implicit_type_param.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/unsafe_block_closure_inference_method_call_implicit_type_param.dart.outline.expect
@@ -7,6 +7,16 @@
     ;
   method f<T extends core::Object* = dynamic>(() →* self::C::f::T* g) → core::List<self::C::f::T*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/inference/unsafe_block_closure_inference_method_call_implicit_type_param.dart.strong.expect b/pkg/front_end/testcases/inference/unsafe_block_closure_inference_method_call_implicit_type_param.dart.strong.expect
index a2c3f33..0e045b8 100644
--- a/pkg/front_end/testcases/inference/unsafe_block_closure_inference_method_call_implicit_type_param.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/unsafe_block_closure_inference_method_call_implicit_type_param.dart.strong.expect
@@ -8,6 +8,16 @@
     ;
   method f<T extends core::Object* = dynamic>(() →* self::C::f::T* g) → core::List<self::C::f::T*>*
     return <self::C::f::T*>[g.call()];
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   core::List<core::int*>* v = new self::C::•().{self::C::f}<core::int*>(() → core::int* {
diff --git a/pkg/front_end/testcases/inference/unsafe_block_closure_inference_method_call_implicit_type_param.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/unsafe_block_closure_inference_method_call_implicit_type_param.dart.strong.transformed.expect
index a2c3f33..0e045b8 100644
--- a/pkg/front_end/testcases/inference/unsafe_block_closure_inference_method_call_implicit_type_param.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/unsafe_block_closure_inference_method_call_implicit_type_param.dart.strong.transformed.expect
@@ -8,6 +8,16 @@
     ;
   method f<T extends core::Object* = dynamic>(() →* self::C::f::T* g) → core::List<self::C::f::T*>*
     return <self::C::f::T*>[g.call()];
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   core::List<core::int*>* v = new self::C::•().{self::C::f}<core::int*>(() → core::int* {
diff --git a/pkg/front_end/testcases/inference/unsafe_block_closure_inference_method_call_no_type_param.dart.outline.expect b/pkg/front_end/testcases/inference/unsafe_block_closure_inference_method_call_no_type_param.dart.outline.expect
index 2579e0a..8f66406 100644
--- a/pkg/front_end/testcases/inference/unsafe_block_closure_inference_method_call_no_type_param.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/unsafe_block_closure_inference_method_call_no_type_param.dart.outline.expect
@@ -7,6 +7,16 @@
     ;
   method f(dynamic x) → core::double*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field core::double* v;
 static method main() → dynamic
diff --git a/pkg/front_end/testcases/inference/unsafe_block_closure_inference_method_call_no_type_param.dart.strong.expect b/pkg/front_end/testcases/inference/unsafe_block_closure_inference_method_call_no_type_param.dart.strong.expect
index a0ac725..37a3299 100644
--- a/pkg/front_end/testcases/inference/unsafe_block_closure_inference_method_call_no_type_param.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/unsafe_block_closure_inference_method_call_no_type_param.dart.strong.expect
@@ -8,6 +8,16 @@
     ;
   method f(dynamic x) → core::double*
     return 1.0;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field core::double* v = new self::C::•().{self::C::f}(() → core::int* {
   return 1;
diff --git a/pkg/front_end/testcases/inference/unsafe_block_closure_inference_method_call_no_type_param.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/unsafe_block_closure_inference_method_call_no_type_param.dart.strong.transformed.expect
index a0ac725..37a3299 100644
--- a/pkg/front_end/testcases/inference/unsafe_block_closure_inference_method_call_no_type_param.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/unsafe_block_closure_inference_method_call_no_type_param.dart.strong.transformed.expect
@@ -8,6 +8,16 @@
     ;
   method f(dynamic x) → core::double*
     return 1.0;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field core::double* v = new self::C::•().{self::C::f}(() → core::int* {
   return 1;
diff --git a/pkg/front_end/testcases/inference_new/const_invocation.dart.outline.expect b/pkg/front_end/testcases/inference_new/const_invocation.dart.outline.expect
index 0209712..2b4fea5 100644
--- a/pkg/front_end/testcases/inference_new/const_invocation.dart.outline.expect
+++ b/pkg/front_end/testcases/inference_new/const_invocation.dart.outline.expect
@@ -24,11 +24,31 @@
     ;
   get v9() → core::Map<self::Foo::T*, (self::Foo::T*) →* self::Foo::T*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Bar<T extends core::Object* = dynamic> extends core::Object /*hasConstConstructor*/  {
   const constructor •() → self::Bar<self::Bar::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/inference_new/const_invocation.dart.strong.expect b/pkg/front_end/testcases/inference_new/const_invocation.dart.strong.expect
index f5712f5..01ff610 100644
--- a/pkg/front_end/testcases/inference_new/const_invocation.dart.strong.expect
+++ b/pkg/front_end/testcases/inference_new/const_invocation.dart.strong.expect
@@ -25,11 +25,31 @@
     return #C9;
   get v9() → core::Map<self::Foo::T*, (self::Foo::T*) →* self::Foo::T*>*
     return #C10;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Bar<T extends core::Object* = dynamic> extends core::Object /*hasConstConstructor*/  {
   const constructor •() → self::Bar<self::Bar::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
 
diff --git a/pkg/front_end/testcases/inference_new/const_invocation.dart.strong.transformed.expect b/pkg/front_end/testcases/inference_new/const_invocation.dart.strong.transformed.expect
index f5712f5..01ff610 100644
--- a/pkg/front_end/testcases/inference_new/const_invocation.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference_new/const_invocation.dart.strong.transformed.expect
@@ -25,11 +25,31 @@
     return #C9;
   get v9() → core::Map<self::Foo::T*, (self::Foo::T*) →* self::Foo::T*>*
     return #C10;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Bar<T extends core::Object* = dynamic> extends core::Object /*hasConstConstructor*/  {
   const constructor •() → self::Bar<self::Bar::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
 
diff --git a/pkg/front_end/testcases/inference_new/dependency_only_if_generic_method.dart.outline.expect b/pkg/front_end/testcases/inference_new/dependency_only_if_generic_method.dart.outline.expect
index 7ba11cd..3d68d90 100644
--- a/pkg/front_end/testcases/inference_new/dependency_only_if_generic_method.dart.outline.expect
+++ b/pkg/front_end/testcases/inference_new/dependency_only_if_generic_method.dart.outline.expect
@@ -17,6 +17,16 @@
     ;
   method g(dynamic i) → core::int*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field self::A* a;
 static field invalid-type b;
diff --git a/pkg/front_end/testcases/inference_new/dependency_only_if_generic_method.dart.strong.expect b/pkg/front_end/testcases/inference_new/dependency_only_if_generic_method.dart.strong.expect
index e89c7cf..228f5202 100644
--- a/pkg/front_end/testcases/inference_new/dependency_only_if_generic_method.dart.strong.expect
+++ b/pkg/front_end/testcases/inference_new/dependency_only_if_generic_method.dart.strong.expect
@@ -18,6 +18,16 @@
     return t;
   method g(dynamic i) → core::int*
     return 0;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field self::A* a = new self::A::•();
 static field invalid-type b = () → () →* invalid-type => self::a.{self::A::f}<() →* invalid-type>(self::c);
diff --git a/pkg/front_end/testcases/inference_new/dependency_only_if_generic_method.dart.strong.transformed.expect b/pkg/front_end/testcases/inference_new/dependency_only_if_generic_method.dart.strong.transformed.expect
index e89c7cf..228f5202 100644
--- a/pkg/front_end/testcases/inference_new/dependency_only_if_generic_method.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference_new/dependency_only_if_generic_method.dart.strong.transformed.expect
@@ -18,6 +18,16 @@
     return t;
   method g(dynamic i) → core::int*
     return 0;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field self::A* a = new self::A::•();
 static field invalid-type b = () → () →* invalid-type => self::a.{self::A::f}<() →* invalid-type>(self::c);
diff --git a/pkg/front_end/testcases/inference_new/dependency_only_if_overloaded.dart.strong.expect b/pkg/front_end/testcases/inference_new/dependency_only_if_overloaded.dart.strong.expect
index f3dce3c..ca2d303 100644
--- a/pkg/front_end/testcases/inference_new/dependency_only_if_overloaded.dart.strong.expect
+++ b/pkg/front_end/testcases/inference_new/dependency_only_if_overloaded.dart.strong.expect
@@ -13,7 +13,7 @@
 static field core::int* intValue = 0;
 static field core::num* numValue = 0;
 static field core::double* doubleValue = 0.0;
-static field invalid-type a = () → core::num* => self::intValue.{core::num::+}(self::b as{TypeError,ForDynamic} core::num*);
+static field invalid-type a = () → core::num* => self::intValue.{core::num::+}(self::b as{TypeError,ForDynamic} core::num);
 static field dynamic b = self::a.call();
 static field () →* core::num* c = () → core::num* => self::numValue.{core::num::+}(self::d);
 static field core::num* d = self::c.call();
diff --git a/pkg/front_end/testcases/inference_new/dependency_only_if_overloaded.dart.strong.transformed.expect b/pkg/front_end/testcases/inference_new/dependency_only_if_overloaded.dart.strong.transformed.expect
index f3dce3c..ca2d303 100644
--- a/pkg/front_end/testcases/inference_new/dependency_only_if_overloaded.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference_new/dependency_only_if_overloaded.dart.strong.transformed.expect
@@ -13,7 +13,7 @@
 static field core::int* intValue = 0;
 static field core::num* numValue = 0;
 static field core::double* doubleValue = 0.0;
-static field invalid-type a = () → core::num* => self::intValue.{core::num::+}(self::b as{TypeError,ForDynamic} core::num*);
+static field invalid-type a = () → core::num* => self::intValue.{core::num::+}(self::b as{TypeError,ForDynamic} core::num);
 static field dynamic b = self::a.call();
 static field () →* core::num* c = () → core::num* => self::numValue.{core::num::+}(self::d);
 static field core::num* d = self::c.call();
diff --git a/pkg/front_end/testcases/inference_new/downwards_inference_inside_top_level.dart.outline.expect b/pkg/front_end/testcases/inference_new/downwards_inference_inside_top_level.dart.outline.expect
index f42e8b5..334e147 100644
--- a/pkg/front_end/testcases/inference_new/downwards_inference_inside_top_level.dart.outline.expect
+++ b/pkg/front_end/testcases/inference_new/downwards_inference_inside_top_level.dart.outline.expect
@@ -6,10 +6,30 @@
   field self::B<core::int*>* b;
   synthetic constructor •() → self::A*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B<T extends core::Object* = dynamic> extends core::Object {
   constructor •(self::B::T* x) → self::B<self::B::T*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field core::List<self::B<core::int*>*>* t3;
 static method main() → dynamic
diff --git a/pkg/front_end/testcases/inference_new/downwards_inference_inside_top_level.dart.strong.expect b/pkg/front_end/testcases/inference_new/downwards_inference_inside_top_level.dart.strong.expect
index 05d659a..170a89d 100644
--- a/pkg/front_end/testcases/inference_new/downwards_inference_inside_top_level.dart.strong.expect
+++ b/pkg/front_end/testcases/inference_new/downwards_inference_inside_top_level.dart.strong.expect
@@ -7,11 +7,31 @@
   synthetic constructor •() → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B<T extends core::Object* = dynamic> extends core::Object {
   constructor •(self::B::T* x) → self::B<self::B::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field core::List<self::B<core::int*>*>* t3 = <self::B<core::int*>*>[new self::B::•<core::int*>(3)];
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference_new/downwards_inference_inside_top_level.dart.strong.transformed.expect b/pkg/front_end/testcases/inference_new/downwards_inference_inside_top_level.dart.strong.transformed.expect
index 05d659a..170a89d 100644
--- a/pkg/front_end/testcases/inference_new/downwards_inference_inside_top_level.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference_new/downwards_inference_inside_top_level.dart.strong.transformed.expect
@@ -7,11 +7,31 @@
   synthetic constructor •() → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B<T extends core::Object* = dynamic> extends core::Object {
   constructor •(self::B::T* x) → self::B<self::B::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field core::List<self::B<core::int*>*>* t3 = <self::B<core::int*>*>[new self::B::•<core::int*>(3)];
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference_new/downwards_inference_inside_top_level_2.dart.outline.expect b/pkg/front_end/testcases/inference_new/downwards_inference_inside_top_level_2.dart.outline.expect
index 382933c..489fbc8 100644
--- a/pkg/front_end/testcases/inference_new/downwards_inference_inside_top_level_2.dart.outline.expect
+++ b/pkg/front_end/testcases/inference_new/downwards_inference_inside_top_level_2.dart.outline.expect
@@ -5,6 +5,16 @@
 class A<T extends core::Object* = dynamic> extends core::Object {
   constructor •(self::A::T* x) → self::A<self::A::T*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field core::List<self::A<core::int*>*>* t2;
 static method main() → dynamic
diff --git a/pkg/front_end/testcases/inference_new/downwards_inference_inside_top_level_2.dart.strong.expect b/pkg/front_end/testcases/inference_new/downwards_inference_inside_top_level_2.dart.strong.expect
index 838beca..16f369a 100644
--- a/pkg/front_end/testcases/inference_new/downwards_inference_inside_top_level_2.dart.strong.expect
+++ b/pkg/front_end/testcases/inference_new/downwards_inference_inside_top_level_2.dart.strong.expect
@@ -6,6 +6,16 @@
   constructor •(self::A::T* x) → self::A<self::A::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field core::List<self::A<core::int*>*>* t2 = <self::A<core::int*>*>[new self::A::•<core::int*>(2)];
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference_new/downwards_inference_inside_top_level_2.dart.strong.transformed.expect b/pkg/front_end/testcases/inference_new/downwards_inference_inside_top_level_2.dart.strong.transformed.expect
index 838beca..16f369a 100644
--- a/pkg/front_end/testcases/inference_new/downwards_inference_inside_top_level_2.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference_new/downwards_inference_inside_top_level_2.dart.strong.transformed.expect
@@ -6,6 +6,16 @@
   constructor •(self::A::T* x) → self::A<self::A::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field core::List<self::A<core::int*>*>* t2 = <self::A<core::int*>*>[new self::A::•<core::int*>(2)];
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference_new/field_inference_circularity.dart.outline.expect b/pkg/front_end/testcases/inference_new/field_inference_circularity.dart.outline.expect
index c95d0de..445d1a7 100644
--- a/pkg/front_end/testcases/inference_new/field_inference_circularity.dart.outline.expect
+++ b/pkg/front_end/testcases/inference_new/field_inference_circularity.dart.outline.expect
@@ -15,6 +15,16 @@
   field () →* invalid-type y;
   synthetic constructor •() → self::A*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A {
   field invalid-type x;
diff --git a/pkg/front_end/testcases/inference_new/field_inference_circularity.dart.strong.expect b/pkg/front_end/testcases/inference_new/field_inference_circularity.dart.strong.expect
index 5367e37..45135a6 100644
--- a/pkg/front_end/testcases/inference_new/field_inference_circularity.dart.strong.expect
+++ b/pkg/front_end/testcases/inference_new/field_inference_circularity.dart.strong.expect
@@ -16,6 +16,16 @@
   synthetic constructor •() → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A {
   field invalid-type x = null;
diff --git a/pkg/front_end/testcases/inference_new/field_inference_circularity.dart.strong.transformed.expect b/pkg/front_end/testcases/inference_new/field_inference_circularity.dart.strong.transformed.expect
index 5367e37..45135a6 100644
--- a/pkg/front_end/testcases/inference_new/field_inference_circularity.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference_new/field_inference_circularity.dart.strong.transformed.expect
@@ -16,6 +16,16 @@
   synthetic constructor •() → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A {
   field invalid-type x = null;
diff --git a/pkg/front_end/testcases/inference_new/for_each_identifier_downwards.dart.outline.expect b/pkg/front_end/testcases/inference_new/for_each_identifier_downwards.dart.outline.expect
index 1109d11..d2c4996 100644
--- a/pkg/front_end/testcases/inference_new/for_each_identifier_downwards.dart.outline.expect
+++ b/pkg/front_end/testcases/inference_new/for_each_identifier_downwards.dart.outline.expect
@@ -5,6 +5,16 @@
 class A extends core::Object {
   synthetic constructor •() → self::A*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C extends core::Object {
   field self::A* aField;
@@ -14,6 +24,16 @@
     ;
   method test() → void
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field self::A* aTopLevel;
 static method f<T extends core::Object* = dynamic>() → self::f::T*
diff --git a/pkg/front_end/testcases/inference_new/for_each_identifier_downwards.dart.strong.expect b/pkg/front_end/testcases/inference_new/for_each_identifier_downwards.dart.strong.expect
index b48f3df..11cdbcf 100644
--- a/pkg/front_end/testcases/inference_new/for_each_identifier_downwards.dart.strong.expect
+++ b/pkg/front_end/testcases/inference_new/for_each_identifier_downwards.dart.strong.expect
@@ -6,6 +6,16 @@
   synthetic constructor •() → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C extends core::Object {
   field self::A* aField = null;
@@ -31,6 +41,16 @@
       self::aTopLevelSetter = #t5;
     }
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field self::A* aTopLevel;
 static method f<T extends core::Object* = dynamic>() → self::f::T*
diff --git a/pkg/front_end/testcases/inference_new/for_each_identifier_downwards.dart.strong.transformed.expect b/pkg/front_end/testcases/inference_new/for_each_identifier_downwards.dart.strong.transformed.expect
index 3b7b28d..7ac0379 100644
--- a/pkg/front_end/testcases/inference_new/for_each_identifier_downwards.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference_new/for_each_identifier_downwards.dart.strong.transformed.expect
@@ -6,6 +6,16 @@
   synthetic constructor •() → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C extends core::Object {
   field self::A* aField = null;
@@ -61,6 +71,16 @@
       }
     }
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field self::A* aTopLevel;
 static method f<T extends core::Object* = dynamic>() → self::f::T*
diff --git a/pkg/front_end/testcases/inference_new/for_each_invalid_iterable.dart.strong.transformed.expect b/pkg/front_end/testcases/inference_new/for_each_invalid_iterable.dart.strong.transformed.expect
index 4cab266..b2e5cd6 100644
--- a/pkg/front_end/testcases/inference_new/for_each_invalid_iterable.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference_new/for_each_invalid_iterable.dart.strong.transformed.expect
@@ -68,7 +68,7 @@
             while (true) {
               dynamic #t4 = asy::_asyncStarMoveNextHelper(:stream);
               [yield] let dynamic #t5 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::moveNext}(), :async_op_then, :async_op_error, :async_op) in null;
-              if(_in::unsafeCast<core::bool*>(:result)) {
+              if(_in::unsafeCast<core::bool>(:result)) {
                 final dynamic #t6 = :for-iterator.{asy::_StreamIterator::current};
                 {
                   core::int* x = #t6 as{TypeError,ForDynamic} core::int*;
@@ -108,7 +108,7 @@
             while (true) {
               dynamic #t11 = asy::_asyncStarMoveNextHelper(:stream);
               [yield] let dynamic #t12 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::moveNext}(), :async_op_then, :async_op_error, :async_op) in null;
-              if(_in::unsafeCast<core::bool*>(:result)) {
+              if(_in::unsafeCast<core::bool>(:result)) {
                 final dynamic #t13 = :for-iterator.{asy::_StreamIterator::current};
                 {
                   y = #t13 as{TypeError,ForDynamic} core::int*;
@@ -127,8 +127,8 @@
       asy::_completeOnAsyncReturn(:async_completer, :return_value);
       return;
     }
-    on dynamic catch(dynamic :exception, core::StackTrace* :stack_trace) {
-      :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+    on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
+      :async_completer.{asy::Completer::completeError}(exception, stack_trace);
     }
   :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
diff --git a/pkg/front_end/testcases/inference_new/for_each_outer_var_type.dart.outline.expect b/pkg/front_end/testcases/inference_new/for_each_outer_var_type.dart.outline.expect
index 57ca95b..27b629e 100644
--- a/pkg/front_end/testcases/inference_new/for_each_outer_var_type.dart.outline.expect
+++ b/pkg/front_end/testcases/inference_new/for_each_outer_var_type.dart.outline.expect
@@ -7,6 +7,16 @@
 class A extends core::Object {
   synthetic constructor •() → self::A*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A {
   synthetic constructor •() → self::B*
diff --git a/pkg/front_end/testcases/inference_new/for_each_outer_var_type.dart.strong.expect b/pkg/front_end/testcases/inference_new/for_each_outer_var_type.dart.strong.expect
index 8096e30..d436651 100644
--- a/pkg/front_end/testcases/inference_new/for_each_outer_var_type.dart.strong.expect
+++ b/pkg/front_end/testcases/inference_new/for_each_outer_var_type.dart.strong.expect
@@ -24,6 +24,16 @@
   synthetic constructor •() → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A {
   synthetic constructor •() → self::B*
diff --git a/pkg/front_end/testcases/inference_new/for_each_outer_var_type.dart.strong.transformed.expect b/pkg/front_end/testcases/inference_new/for_each_outer_var_type.dart.strong.transformed.expect
index eac8b7c..ea7b0cb 100644
--- a/pkg/front_end/testcases/inference_new/for_each_outer_var_type.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference_new/for_each_outer_var_type.dart.strong.transformed.expect
@@ -25,6 +25,16 @@
   synthetic constructor •() → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A {
   synthetic constructor •() → self::B*
@@ -72,7 +82,7 @@
             while (true) {
               dynamic #t2 = asy::_asyncStarMoveNextHelper(:stream);
               [yield] let dynamic #t3 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::moveNext}(), :async_op_then, :async_op_error, :async_op) in null;
-              if(_in::unsafeCast<core::bool*>(:result)) {
+              if(_in::unsafeCast<core::bool>(:result)) {
                 final self::A* #t4 = :for-iterator.{asy::_StreamIterator::current};
                 {
                   a = #t4;
@@ -105,7 +115,7 @@
             while (true) {
               dynamic #t7 = asy::_asyncStarMoveNextHelper(:stream);
               [yield] let dynamic #t8 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::moveNext}(), :async_op_then, :async_op_error, :async_op) in null;
-              if(_in::unsafeCast<core::bool*>(:result)) {
+              if(_in::unsafeCast<core::bool>(:result)) {
                 final self::A* #t9 = :for-iterator.{asy::_StreamIterator::current};
                 {
                   b = #t9 as{TypeError} self::B*;
@@ -142,7 +152,7 @@
             while (true) {
               dynamic #t13 = asy::_asyncStarMoveNextHelper(:stream);
               [yield] let dynamic #t14 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::moveNext}(), :async_op_then, :async_op_error, :async_op) in null;
-              if(_in::unsafeCast<core::bool*>(:result)) {
+              if(_in::unsafeCast<core::bool>(:result)) {
                 final self::A* #t15 = :for-iterator.{asy::_StreamIterator::current};
                 {
                   i = let final<BottomType> #t16 = invalid-expression "pkg/front_end/testcases/inference_new/for_each_outer_var_type.dart:27:16: Error: A value of type 'A' can't be assigned to a variable of type 'int'.
@@ -179,7 +189,7 @@
             while (true) {
               dynamic #t19 = asy::_asyncStarMoveNextHelper(:stream);
               [yield] let dynamic #t20 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::moveNext}(), :async_op_then, :async_op_error, :async_op) in null;
-              if(_in::unsafeCast<core::bool*>(:result)) {
+              if(_in::unsafeCast<core::bool>(:result)) {
                 final self::A* #t21 = :for-iterator.{asy::_StreamIterator::current};
                 {
                   a = #t21;
@@ -198,8 +208,8 @@
       asy::_completeOnAsyncReturn(:async_completer, :return_value);
       return;
     }
-    on dynamic catch(dynamic :exception, core::StackTrace* :stack_trace) {
-      :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+    on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
+      :async_completer.{asy::Completer::completeError}(exception, stack_trace);
     }
   :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
diff --git a/pkg/front_end/testcases/inference_new/indexed_assign_combiner.dart.outline.expect b/pkg/front_end/testcases/inference_new/indexed_assign_combiner.dart.outline.expect
index b5f40c2..2980371 100644
--- a/pkg/front_end/testcases/inference_new/indexed_assign_combiner.dart.outline.expect
+++ b/pkg/front_end/testcases/inference_new/indexed_assign_combiner.dart.outline.expect
@@ -9,6 +9,16 @@
     ;
   operator *(self::D* value) → self::C*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends core::Object {
   synthetic constructor •() → self::B*
@@ -17,6 +27,16 @@
     ;
   operator *(self::F* value) → self::E*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C extends self::B {
   synthetic constructor •() → self::C*
@@ -25,14 +45,44 @@
 class D extends core::Object {
   synthetic constructor •() → self::D*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class E extends core::Object {
   synthetic constructor •() → self::E*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class F extends core::Object {
   synthetic constructor •() → self::F*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class G extends core::Object {
   synthetic constructor •() → self::G*
@@ -41,6 +91,16 @@
     ;
   operator []=(core::int* i, self::B* value) → void
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method f<T extends core::Object* = dynamic>() → self::f::T*
   ;
diff --git a/pkg/front_end/testcases/inference_new/indexed_assign_combiner.dart.strong.expect b/pkg/front_end/testcases/inference_new/indexed_assign_combiner.dart.strong.expect
index 0d07bfd..1a249f4 100644
--- a/pkg/front_end/testcases/inference_new/indexed_assign_combiner.dart.strong.expect
+++ b/pkg/front_end/testcases/inference_new/indexed_assign_combiner.dart.strong.expect
@@ -10,6 +10,16 @@
     return null;
   operator *(self::D* value) → self::C*
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends core::Object {
   synthetic constructor •() → self::B*
@@ -19,6 +29,16 @@
     return null;
   operator *(self::F* value) → self::E*
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C extends self::B {
   synthetic constructor •() → self::C*
@@ -29,16 +49,46 @@
   synthetic constructor •() → self::D*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class E extends core::Object {
   synthetic constructor •() → self::E*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class F extends core::Object {
   synthetic constructor •() → self::F*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class G extends core::Object {
   synthetic constructor •() → self::G*
@@ -47,6 +97,16 @@
   operator [](core::int* i) → self::A*
     return null;
   operator []=(core::int* i, self::B* value) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method f<T extends core::Object* = dynamic>() → self::f::T*
   return null;
diff --git a/pkg/front_end/testcases/inference_new/indexed_assign_combiner.dart.strong.transformed.expect b/pkg/front_end/testcases/inference_new/indexed_assign_combiner.dart.strong.transformed.expect
index 0d07bfd..1a249f4 100644
--- a/pkg/front_end/testcases/inference_new/indexed_assign_combiner.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference_new/indexed_assign_combiner.dart.strong.transformed.expect
@@ -10,6 +10,16 @@
     return null;
   operator *(self::D* value) → self::C*
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends core::Object {
   synthetic constructor •() → self::B*
@@ -19,6 +29,16 @@
     return null;
   operator *(self::F* value) → self::E*
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C extends self::B {
   synthetic constructor •() → self::C*
@@ -29,16 +49,46 @@
   synthetic constructor •() → self::D*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class E extends core::Object {
   synthetic constructor •() → self::E*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class F extends core::Object {
   synthetic constructor •() → self::F*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class G extends core::Object {
   synthetic constructor •() → self::G*
@@ -47,6 +97,16 @@
   operator [](core::int* i) → self::A*
     return null;
   operator []=(core::int* i, self::B* value) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method f<T extends core::Object* = dynamic>() → self::f::T*
   return null;
diff --git a/pkg/front_end/testcases/inference_new/infer_assign_to_implicit_this.dart b/pkg/front_end/testcases/inference_new/infer_assign_to_implicit_this.dart
index 9a3427d..f95b47e 100644
--- a/pkg/front_end/testcases/inference_new/infer_assign_to_implicit_this.dart
+++ b/pkg/front_end/testcases/inference_new/infer_assign_to_implicit_this.dart
@@ -25,7 +25,7 @@
     /*@target=Test::member*/ member = /*@ typeArgs=B* */ f();
 
     /*@target=Test::member*/ /*@target=Test::member*/ member
-        /*@ target=Object::== */ ??= /*@ typeArgs=B* */ f();
+        /*@target=A::==*/ ??= /*@ typeArgs=B* */ f();
 
     /*@target=Test::member*/ /*@target=Test::member*/ member
         /*@ target=B::+ */ += /*@ typeArgs=C* */ f();
@@ -47,7 +47,7 @@
 
     var /*@ type=B* */ v2 = /*@target=Test::member*/ /*@target=Test::member*/
         member
-            /*@ target=Object::== */ ??= /*@ typeArgs=B* */ f();
+            /*@target=A::==*/ ??= /*@ typeArgs=B* */ f();
 
     var /*@ type=A* */ v3 =
         /*@target=Test::member*/ /*@target=Test::member*/ member
diff --git a/pkg/front_end/testcases/inference_new/infer_assign_to_implicit_this.dart.outline.expect b/pkg/front_end/testcases/inference_new/infer_assign_to_implicit_this.dart.outline.expect
index d784a67..8d2f037 100644
--- a/pkg/front_end/testcases/inference_new/infer_assign_to_implicit_this.dart.outline.expect
+++ b/pkg/front_end/testcases/inference_new/infer_assign_to_implicit_this.dart.outline.expect
@@ -5,6 +5,16 @@
 class A extends core::Object {
   synthetic constructor •() → self::A*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A {
   synthetic constructor •() → self::B*
@@ -28,6 +38,16 @@
     ;
   method test() → void
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method f<T extends core::Object* = dynamic>() → self::f::T*
   ;
diff --git a/pkg/front_end/testcases/inference_new/infer_assign_to_implicit_this.dart.strong.expect b/pkg/front_end/testcases/inference_new/infer_assign_to_implicit_this.dart.strong.expect
index 043ccf2..0ef7ce3 100644
--- a/pkg/front_end/testcases/inference_new/infer_assign_to_implicit_this.dart.strong.expect
+++ b/pkg/front_end/testcases/inference_new/infer_assign_to_implicit_this.dart.strong.expect
@@ -6,6 +6,16 @@
   synthetic constructor •() → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A {
   synthetic constructor •() → self::B*
@@ -32,20 +42,30 @@
     ;
   method test() → void {
     this.{self::Test::member} = self::f<self::B*>();
-    this.{self::Test::member}.{core::Object::==}(null) ?{self::B*} this.{self::Test::member} = self::f<self::B*>() : null;
+    this.{self::Test::member}.{self::A::==}(null) ?{self::B*} this.{self::Test::member} = self::f<self::B*>() : null;
     this.{self::Test::member} = this.{self::Test::member}.{self::B::+}(self::f<self::C*>()) as{TypeError} self::B*;
     this.{self::Test::member} = this.{self::Test::member}.{self::B::*}(self::f<self::B*>());
     this.{self::Test::member} = this.{self::Test::member}.{self::B::&}(self::f<self::A*>());
     this.{self::Test::member} = this.{self::Test::member}.{self::B::-}(1);
     this.{self::Test::member} = this.{self::Test::member}.{self::B::-}(1);
     self::B* v1 = this.{self::Test::member} = self::f<self::B*>();
-    self::B* v2 = let final self::B* #t1 = this.{self::Test::member} in #t1.{core::Object::==}(null) ?{self::B*} this.{self::Test::member} = self::f<self::B*>() : #t1;
+    self::B* v2 = let final self::B* #t1 = this.{self::Test::member} in #t1.{self::A::==}(null) ?{self::B*} this.{self::Test::member} = self::f<self::B*>() : #t1;
     self::A* v3 = this.{self::Test::member} = this.{self::Test::member}.{self::B::+}(self::f<self::C*>()) as{TypeError} self::B*;
     self::B* v4 = this.{self::Test::member} = this.{self::Test::member}.{self::B::*}(self::f<self::B*>());
     self::C* v5 = this.{self::Test::member} = this.{self::Test::member}.{self::B::&}(self::f<self::A*>());
     self::B* v6 = this.{self::Test::member} = this.{self::Test::member}.{self::B::-}(1);
     self::B* v7 = let final self::B* #t2 = this.{self::Test::member} in let final self::B* #t3 = this.{self::Test::member} = #t2.{self::B::-}(1) in #t2;
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method f<T extends core::Object* = dynamic>() → self::f::T*
   return null;
diff --git a/pkg/front_end/testcases/inference_new/infer_assign_to_implicit_this.dart.strong.transformed.expect b/pkg/front_end/testcases/inference_new/infer_assign_to_implicit_this.dart.strong.transformed.expect
index 043ccf2..0ef7ce3 100644
--- a/pkg/front_end/testcases/inference_new/infer_assign_to_implicit_this.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference_new/infer_assign_to_implicit_this.dart.strong.transformed.expect
@@ -6,6 +6,16 @@
   synthetic constructor •() → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A {
   synthetic constructor •() → self::B*
@@ -32,20 +42,30 @@
     ;
   method test() → void {
     this.{self::Test::member} = self::f<self::B*>();
-    this.{self::Test::member}.{core::Object::==}(null) ?{self::B*} this.{self::Test::member} = self::f<self::B*>() : null;
+    this.{self::Test::member}.{self::A::==}(null) ?{self::B*} this.{self::Test::member} = self::f<self::B*>() : null;
     this.{self::Test::member} = this.{self::Test::member}.{self::B::+}(self::f<self::C*>()) as{TypeError} self::B*;
     this.{self::Test::member} = this.{self::Test::member}.{self::B::*}(self::f<self::B*>());
     this.{self::Test::member} = this.{self::Test::member}.{self::B::&}(self::f<self::A*>());
     this.{self::Test::member} = this.{self::Test::member}.{self::B::-}(1);
     this.{self::Test::member} = this.{self::Test::member}.{self::B::-}(1);
     self::B* v1 = this.{self::Test::member} = self::f<self::B*>();
-    self::B* v2 = let final self::B* #t1 = this.{self::Test::member} in #t1.{core::Object::==}(null) ?{self::B*} this.{self::Test::member} = self::f<self::B*>() : #t1;
+    self::B* v2 = let final self::B* #t1 = this.{self::Test::member} in #t1.{self::A::==}(null) ?{self::B*} this.{self::Test::member} = self::f<self::B*>() : #t1;
     self::A* v3 = this.{self::Test::member} = this.{self::Test::member}.{self::B::+}(self::f<self::C*>()) as{TypeError} self::B*;
     self::B* v4 = this.{self::Test::member} = this.{self::Test::member}.{self::B::*}(self::f<self::B*>());
     self::C* v5 = this.{self::Test::member} = this.{self::Test::member}.{self::B::&}(self::f<self::A*>());
     self::B* v6 = this.{self::Test::member} = this.{self::Test::member}.{self::B::-}(1);
     self::B* v7 = let final self::B* #t2 = this.{self::Test::member} in let final self::B* #t3 = this.{self::Test::member} = #t2.{self::B::-}(1) in #t2;
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method f<T extends core::Object* = dynamic>() → self::f::T*
   return null;
diff --git a/pkg/front_end/testcases/inference_new/infer_assign_to_implicit_this_upwards.dart.outline.expect b/pkg/front_end/testcases/inference_new/infer_assign_to_implicit_this_upwards.dart.outline.expect
index 72b8d61..4e327fb 100644
--- a/pkg/front_end/testcases/inference_new/infer_assign_to_implicit_this_upwards.dart.outline.expect
+++ b/pkg/front_end/testcases/inference_new/infer_assign_to_implicit_this_upwards.dart.outline.expect
@@ -8,6 +8,16 @@
     ;
   method test() → void
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Test2 extends core::Object {
   field core::num* t;
@@ -15,6 +25,16 @@
     ;
   method test() → void
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Test3 extends core::Object {
   field core::double* t;
@@ -22,6 +42,16 @@
     ;
   method test3() → void
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method getInt() → core::int*
   ;
diff --git a/pkg/front_end/testcases/inference_new/infer_assign_to_implicit_this_upwards.dart.strong.expect b/pkg/front_end/testcases/inference_new/infer_assign_to_implicit_this_upwards.dart.strong.expect
index e9abced..bfd7485 100644
--- a/pkg/front_end/testcases/inference_new/infer_assign_to_implicit_this_upwards.dart.strong.expect
+++ b/pkg/front_end/testcases/inference_new/infer_assign_to_implicit_this_upwards.dart.strong.expect
@@ -17,6 +17,16 @@
     core::int* v10 = this.{self::Test1::t} = this.{self::Test1::t}.{core::num::+}(1);
     core::int* v11 = let final core::int* #t3 = this.{self::Test1::t} in let final core::int* #t4 = this.{self::Test1::t} = #t3.{core::num::+}(1) in #t3;
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Test2 extends core::Object {
   field core::num* t = null;
@@ -36,6 +46,16 @@
     core::num* v10 = this.{self::Test2::t} = this.{self::Test2::t}.{core::num::+}(1);
     core::num* v11 = let final core::num* #t8 = this.{self::Test2::t} in let final core::num* #t9 = this.{self::Test2::t} = #t8.{core::num::+}(1) in #t8;
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Test3 extends core::Object {
   field core::double* t = null;
@@ -53,6 +73,16 @@
     core::double* v10 = this.{self::Test3::t} = this.{self::Test3::t}.{core::double::+}(1);
     core::double* v11 = let final core::double* #t12 = this.{self::Test3::t} in let final core::double* #t13 = this.{self::Test3::t} = #t12.{core::double::+}(1) in #t12;
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method getInt() → core::int*
   return 0;
diff --git a/pkg/front_end/testcases/inference_new/infer_assign_to_implicit_this_upwards.dart.strong.transformed.expect b/pkg/front_end/testcases/inference_new/infer_assign_to_implicit_this_upwards.dart.strong.transformed.expect
index e9abced..bfd7485 100644
--- a/pkg/front_end/testcases/inference_new/infer_assign_to_implicit_this_upwards.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference_new/infer_assign_to_implicit_this_upwards.dart.strong.transformed.expect
@@ -17,6 +17,16 @@
     core::int* v10 = this.{self::Test1::t} = this.{self::Test1::t}.{core::num::+}(1);
     core::int* v11 = let final core::int* #t3 = this.{self::Test1::t} in let final core::int* #t4 = this.{self::Test1::t} = #t3.{core::num::+}(1) in #t3;
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Test2 extends core::Object {
   field core::num* t = null;
@@ -36,6 +46,16 @@
     core::num* v10 = this.{self::Test2::t} = this.{self::Test2::t}.{core::num::+}(1);
     core::num* v11 = let final core::num* #t8 = this.{self::Test2::t} in let final core::num* #t9 = this.{self::Test2::t} = #t8.{core::num::+}(1) in #t8;
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Test3 extends core::Object {
   field core::double* t = null;
@@ -53,6 +73,16 @@
     core::double* v10 = this.{self::Test3::t} = this.{self::Test3::t}.{core::double::+}(1);
     core::double* v11 = let final core::double* #t12 = this.{self::Test3::t} in let final core::double* #t13 = this.{self::Test3::t} = #t12.{core::double::+}(1) in #t12;
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method getInt() → core::int*
   return 0;
diff --git a/pkg/front_end/testcases/inference_new/infer_assign_to_index_full.dart b/pkg/front_end/testcases/inference_new/infer_assign_to_index_full.dart
index 4b6482c..902751b 100644
--- a/pkg/front_end/testcases/inference_new/infer_assign_to_index_full.dart
+++ b/pkg/front_end/testcases/inference_new/infer_assign_to_index_full.dart
@@ -32,7 +32,7 @@
 
     t /*@target=Test::[]*/ /*@target=Test::[]=*/ [
             /*@ typeArgs=Index* */ f()]
-        /*@target=Object::==*/ ??= /*@ typeArgs=B* */ f();
+        /*@target=A::==*/ ??= /*@ typeArgs=B* */ f();
 
     t /*@target=Test::[]*/ /*@target=Test::[]=*/ [/*@ typeArgs=Index* */ f()]
         /*@ target=B::+ */ += /*@ typeArgs=C* */ f();
@@ -57,7 +57,7 @@
 
     var /*@ type=B* */ v2 = t /*@target=Test::[]*/ /*@target=Test::[]=*/ [
             /*@ typeArgs=Index* */ f()]
-        /*@target=Object::==*/ ??= /*@ typeArgs=B* */ f();
+        /*@target=A::==*/ ??= /*@ typeArgs=B* */ f();
 
     var /*@ type=A* */ v3 = t /*@target=Test::[]*/ /*@target=Test::[]=*/ [
             /*@ typeArgs=Index* */ f()]
diff --git a/pkg/front_end/testcases/inference_new/infer_assign_to_index_full.dart.outline.expect b/pkg/front_end/testcases/inference_new/infer_assign_to_index_full.dart.outline.expect
index 9f0fa38..6e27b00 100644
--- a/pkg/front_end/testcases/inference_new/infer_assign_to_index_full.dart.outline.expect
+++ b/pkg/front_end/testcases/inference_new/infer_assign_to_index_full.dart.outline.expect
@@ -5,10 +5,30 @@
 class Index extends core::Object {
   synthetic constructor •() → self::Index*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class A extends core::Object {
   synthetic constructor •() → self::A*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A {
   synthetic constructor •() → self::B*
@@ -35,6 +55,16 @@
     ;
   method test() → void
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method f<T extends core::Object* = dynamic>() → self::f::T*
   ;
diff --git a/pkg/front_end/testcases/inference_new/infer_assign_to_index_full.dart.strong.expect b/pkg/front_end/testcases/inference_new/infer_assign_to_index_full.dart.strong.expect
index 79ba7a1..ea06c30 100644
--- a/pkg/front_end/testcases/inference_new/infer_assign_to_index_full.dart.strong.expect
+++ b/pkg/front_end/testcases/inference_new/infer_assign_to_index_full.dart.strong.expect
@@ -6,11 +6,31 @@
   synthetic constructor •() → self::Index*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class A extends core::Object {
   synthetic constructor •() → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A {
   synthetic constructor •() → self::B*
@@ -40,7 +60,7 @@
   method test() → void {
     self::Test* t = self::f<self::Test*>();
     t.{self::Test::[]=}(self::f<self::Index*>(), self::f<self::B*>());
-    let final self::Test* #t1 = t in let final self::Index* #t2 = self::f<self::Index*>() in #t1.{self::Test::[]}(#t2).{core::Object::==}(null) ?{self::B*} #t1.{self::Test::[]=}(#t2, self::f<self::B*>()) : null;
+    let final self::Test* #t1 = t in let final self::Index* #t2 = self::f<self::Index*>() in #t1.{self::Test::[]}(#t2).{self::A::==}(null) ?{self::B*} #t1.{self::Test::[]=}(#t2, self::f<self::B*>()) : null;
     let final self::Test* #t3 = t in let final self::Index* #t4 = self::f<self::Index*>() in #t3.{self::Test::[]=}(#t4, #t3.{self::Test::[]}(#t4).{self::B::+}(self::f<self::C*>()) as{TypeError} self::B*);
     let final self::Test* #t5 = t in let final self::Index* #t6 = self::f<self::Index*>() in #t5.{self::Test::[]=}(#t6, #t5.{self::Test::[]}(#t6).{self::B::*}(self::f<self::B*>()));
     let final self::Test* #t7 = t in let final self::Index* #t8 = self::f<self::Index*>() in #t7.{self::Test::[]=}(#t8, #t7.{self::Test::[]}(#t8).{self::B::&}(self::f<self::A*>()));
@@ -48,7 +68,7 @@
     let final self::Test* #t9 = t in let final self::Index* #t10 = self::f<self::Index*>() in let final self::B* #t11 = #t9.{self::Test::[]}(#t10).{self::B::-}(1) in let final void #t12 = #t9.{self::Test::[]=}(#t10, #t11) in #t11;
     let final self::Test* #t13 = t in let final self::Index* #t14 = self::f<self::Index*>() in #t13.{self::Test::[]=}(#t14, #t13.{self::Test::[]}(#t14).{self::B::-}(1));
     self::B* v1 = let final self::Test* #t15 = t in let final self::Index* #t16 = self::f<self::Index*>() in let final self::B* #t17 = self::f<self::B*>() in let final void #t18 = #t15.{self::Test::[]=}(#t16, #t17) in #t17;
-    self::B* v2 = let final self::Test* #t19 = t in let final self::Index* #t20 = self::f<self::Index*>() in let final self::B* #t21 = #t19.{self::Test::[]}(#t20) in #t21.{core::Object::==}(null) ?{self::B*} let final self::B* #t22 = self::f<self::B*>() in let final void #t23 = #t19.{self::Test::[]=}(#t20, #t22) in #t22 : #t21;
+    self::B* v2 = let final self::Test* #t19 = t in let final self::Index* #t20 = self::f<self::Index*>() in let final self::B* #t21 = #t19.{self::Test::[]}(#t20) in #t21.{self::A::==}(null) ?{self::B*} let final self::B* #t22 = self::f<self::B*>() in let final void #t23 = #t19.{self::Test::[]=}(#t20, #t22) in #t22 : #t21;
     self::A* v3 = let final self::Test* #t24 = t in let final self::Index* #t25 = self::f<self::Index*>() in let final self::A* #t26 = #t24.{self::Test::[]}(#t25).{self::B::+}(self::f<self::C*>()) as{TypeError} self::B* in let final void #t27 = #t24.{self::Test::[]=}(#t25, #t26) in #t26;
     self::B* v4 = let final self::Test* #t28 = t in let final self::Index* #t29 = self::f<self::Index*>() in let final self::B* #t30 = #t28.{self::Test::[]}(#t29).{self::B::*}(self::f<self::B*>()) in let final void #t31 = #t28.{self::Test::[]=}(#t29, #t30) in #t30;
     self::C* v5 = let final self::Test* #t32 = t in let final self::Index* #t33 = self::f<self::Index*>() in let final self::C* #t34 = #t32.{self::Test::[]}(#t33).{self::B::&}(self::f<self::A*>()) in let final void #t35 = #t32.{self::Test::[]=}(#t33, #t34) in #t34;
@@ -56,6 +76,16 @@
     self::B* v7 = let final self::Test* #t36 = t in let final self::Index* #t37 = self::f<self::Index*>() in let final self::B* #t38 = #t36.{self::Test::[]}(#t37).{self::B::-}(1) in let final void #t39 = #t36.{self::Test::[]=}(#t37, #t38) in #t38;
     self::B* v8 = let final self::Test* #t40 = t in let final self::Index* #t41 = self::f<self::Index*>() in let final self::B* #t42 = #t40.{self::Test::[]}(#t41) in let final void #t43 = #t40.{self::Test::[]=}(#t41, #t42.{self::B::-}(1)) in #t42;
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method f<T extends core::Object* = dynamic>() → self::f::T*
   return null;
diff --git a/pkg/front_end/testcases/inference_new/infer_assign_to_index_full.dart.strong.transformed.expect b/pkg/front_end/testcases/inference_new/infer_assign_to_index_full.dart.strong.transformed.expect
index 79ba7a1..ea06c30 100644
--- a/pkg/front_end/testcases/inference_new/infer_assign_to_index_full.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference_new/infer_assign_to_index_full.dart.strong.transformed.expect
@@ -6,11 +6,31 @@
   synthetic constructor •() → self::Index*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class A extends core::Object {
   synthetic constructor •() → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A {
   synthetic constructor •() → self::B*
@@ -40,7 +60,7 @@
   method test() → void {
     self::Test* t = self::f<self::Test*>();
     t.{self::Test::[]=}(self::f<self::Index*>(), self::f<self::B*>());
-    let final self::Test* #t1 = t in let final self::Index* #t2 = self::f<self::Index*>() in #t1.{self::Test::[]}(#t2).{core::Object::==}(null) ?{self::B*} #t1.{self::Test::[]=}(#t2, self::f<self::B*>()) : null;
+    let final self::Test* #t1 = t in let final self::Index* #t2 = self::f<self::Index*>() in #t1.{self::Test::[]}(#t2).{self::A::==}(null) ?{self::B*} #t1.{self::Test::[]=}(#t2, self::f<self::B*>()) : null;
     let final self::Test* #t3 = t in let final self::Index* #t4 = self::f<self::Index*>() in #t3.{self::Test::[]=}(#t4, #t3.{self::Test::[]}(#t4).{self::B::+}(self::f<self::C*>()) as{TypeError} self::B*);
     let final self::Test* #t5 = t in let final self::Index* #t6 = self::f<self::Index*>() in #t5.{self::Test::[]=}(#t6, #t5.{self::Test::[]}(#t6).{self::B::*}(self::f<self::B*>()));
     let final self::Test* #t7 = t in let final self::Index* #t8 = self::f<self::Index*>() in #t7.{self::Test::[]=}(#t8, #t7.{self::Test::[]}(#t8).{self::B::&}(self::f<self::A*>()));
@@ -48,7 +68,7 @@
     let final self::Test* #t9 = t in let final self::Index* #t10 = self::f<self::Index*>() in let final self::B* #t11 = #t9.{self::Test::[]}(#t10).{self::B::-}(1) in let final void #t12 = #t9.{self::Test::[]=}(#t10, #t11) in #t11;
     let final self::Test* #t13 = t in let final self::Index* #t14 = self::f<self::Index*>() in #t13.{self::Test::[]=}(#t14, #t13.{self::Test::[]}(#t14).{self::B::-}(1));
     self::B* v1 = let final self::Test* #t15 = t in let final self::Index* #t16 = self::f<self::Index*>() in let final self::B* #t17 = self::f<self::B*>() in let final void #t18 = #t15.{self::Test::[]=}(#t16, #t17) in #t17;
-    self::B* v2 = let final self::Test* #t19 = t in let final self::Index* #t20 = self::f<self::Index*>() in let final self::B* #t21 = #t19.{self::Test::[]}(#t20) in #t21.{core::Object::==}(null) ?{self::B*} let final self::B* #t22 = self::f<self::B*>() in let final void #t23 = #t19.{self::Test::[]=}(#t20, #t22) in #t22 : #t21;
+    self::B* v2 = let final self::Test* #t19 = t in let final self::Index* #t20 = self::f<self::Index*>() in let final self::B* #t21 = #t19.{self::Test::[]}(#t20) in #t21.{self::A::==}(null) ?{self::B*} let final self::B* #t22 = self::f<self::B*>() in let final void #t23 = #t19.{self::Test::[]=}(#t20, #t22) in #t22 : #t21;
     self::A* v3 = let final self::Test* #t24 = t in let final self::Index* #t25 = self::f<self::Index*>() in let final self::A* #t26 = #t24.{self::Test::[]}(#t25).{self::B::+}(self::f<self::C*>()) as{TypeError} self::B* in let final void #t27 = #t24.{self::Test::[]=}(#t25, #t26) in #t26;
     self::B* v4 = let final self::Test* #t28 = t in let final self::Index* #t29 = self::f<self::Index*>() in let final self::B* #t30 = #t28.{self::Test::[]}(#t29).{self::B::*}(self::f<self::B*>()) in let final void #t31 = #t28.{self::Test::[]=}(#t29, #t30) in #t30;
     self::C* v5 = let final self::Test* #t32 = t in let final self::Index* #t33 = self::f<self::Index*>() in let final self::C* #t34 = #t32.{self::Test::[]}(#t33).{self::B::&}(self::f<self::A*>()) in let final void #t35 = #t32.{self::Test::[]=}(#t33, #t34) in #t34;
@@ -56,6 +76,16 @@
     self::B* v7 = let final self::Test* #t36 = t in let final self::Index* #t37 = self::f<self::Index*>() in let final self::B* #t38 = #t36.{self::Test::[]}(#t37).{self::B::-}(1) in let final void #t39 = #t36.{self::Test::[]=}(#t37, #t38) in #t38;
     self::B* v8 = let final self::Test* #t40 = t in let final self::Index* #t41 = self::f<self::Index*>() in let final self::B* #t42 = #t40.{self::Test::[]}(#t41) in let final void #t43 = #t40.{self::Test::[]=}(#t41, #t42.{self::B::-}(1)) in #t42;
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method f<T extends core::Object* = dynamic>() → self::f::T*
   return null;
diff --git a/pkg/front_end/testcases/inference_new/infer_assign_to_index_set_vs_get.dart b/pkg/front_end/testcases/inference_new/infer_assign_to_index_set_vs_get.dart
index 4bebdb8..5b3be70 100644
--- a/pkg/front_end/testcases/inference_new/infer_assign_to_index_set_vs_get.dart
+++ b/pkg/front_end/testcases/inference_new/infer_assign_to_index_set_vs_get.dart
@@ -38,7 +38,7 @@
         /*@ typeArgs=Index* */ f()] = /*@ typeArgs=A* */ f();
 
     t /*@target=Test::[]*/ /*@target=Test::[]=*/ [/*@ typeArgs=Index* */ f()]
-        /*@target=Object::==*/ ??= /*@ typeArgs=A* */ f();
+        /*@target=A::==*/ ??= /*@ typeArgs=A* */ f();
 
     t /*@target=Test::[]*/ /*@target=Test::[]=*/ [/*@ typeArgs=Index* */ f()]
         /*@ target=B::+ */ += /*@ typeArgs=E* */ f();
@@ -54,7 +54,7 @@
 
     var /*@ type=A* */ v2 = t /*@target=Test::[]*/ /*@target=Test::[]=*/ [
             /*@ typeArgs=Index* */ f()]
-        /*@target=Object::==*/ ??= /*@ typeArgs=A* */ f();
+        /*@target=A::==*/ ??= /*@ typeArgs=A* */ f();
 
     var /*@ type=D* */ v3 = t /*@target=Test::[]*/ /*@target=Test::[]=*/ [
             /*@ typeArgs=Index* */ f()]
diff --git a/pkg/front_end/testcases/inference_new/infer_assign_to_index_set_vs_get.dart.outline.expect b/pkg/front_end/testcases/inference_new/infer_assign_to_index_set_vs_get.dart.outline.expect
index 6803101..2cfa143 100644
--- a/pkg/front_end/testcases/inference_new/infer_assign_to_index_set_vs_get.dart.outline.expect
+++ b/pkg/front_end/testcases/inference_new/infer_assign_to_index_set_vs_get.dart.outline.expect
@@ -5,6 +5,16 @@
 class Index extends core::Object {
   synthetic constructor •() → self::Index*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class A extends core::Object {
   synthetic constructor •() → self::A*
@@ -13,6 +23,16 @@
     ;
   operator -(core::int* i) → self::C*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A {
   synthetic constructor •() → self::B*
@@ -47,6 +67,16 @@
     ;
   method test() → void
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method f<T extends core::Object* = dynamic>() → self::f::T*
   ;
diff --git a/pkg/front_end/testcases/inference_new/infer_assign_to_index_set_vs_get.dart.strong.expect b/pkg/front_end/testcases/inference_new/infer_assign_to_index_set_vs_get.dart.strong.expect
index 9bba684..97f3a7c 100644
--- a/pkg/front_end/testcases/inference_new/infer_assign_to_index_set_vs_get.dart.strong.expect
+++ b/pkg/front_end/testcases/inference_new/infer_assign_to_index_set_vs_get.dart.strong.expect
@@ -6,6 +6,16 @@
   synthetic constructor •() → self::Index*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class A extends core::Object {
   synthetic constructor •() → self::A*
@@ -15,6 +25,16 @@
     return null;
   operator -(core::int* i) → self::C*
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A {
   synthetic constructor •() → self::B*
@@ -55,16 +75,26 @@
   method test() → void {
     self::Test* t = self::f<self::Test*>();
     t.{self::Test::[]=}(self::f<self::Index*>(), self::f<self::A*>());
-    let final self::Test* #t1 = t in let final self::Index* #t2 = self::f<self::Index*>() in #t1.{self::Test::[]}(#t2).{core::Object::==}(null) ?{self::A*} #t1.{self::Test::[]=}(#t2, self::f<self::A*>()) : null;
+    let final self::Test* #t1 = t in let final self::Index* #t2 = self::f<self::Index*>() in #t1.{self::Test::[]}(#t2).{self::A::==}(null) ?{self::A*} #t1.{self::Test::[]=}(#t2, self::f<self::A*>()) : null;
     let final self::Test* #t3 = t in let final self::Index* #t4 = self::f<self::Index*>() in #t3.{self::Test::[]=}(#t4, #t3.{self::Test::[]}(#t4).{self::B::+}(self::f<self::E*>()));
     let final self::Test* #t5 = t in let final self::Index* #t6 = self::f<self::Index*>() in let final self::D* #t7 = #t5.{self::Test::[]}(#t6).{self::B::-}(1) in let final void #t8 = #t5.{self::Test::[]=}(#t6, #t7) in #t7;
     let final self::Test* #t9 = t in let final self::Index* #t10 = self::f<self::Index*>() in #t9.{self::Test::[]=}(#t10, #t9.{self::Test::[]}(#t10).{self::B::-}(1));
     self::A* v1 = let final self::Test* #t11 = t in let final self::Index* #t12 = self::f<self::Index*>() in let final self::A* #t13 = self::f<self::A*>() in let final void #t14 = #t11.{self::Test::[]=}(#t12, #t13) in #t13;
-    self::A* v2 = let final self::Test* #t15 = t in let final self::Index* #t16 = self::f<self::Index*>() in let final self::B* #t17 = #t15.{self::Test::[]}(#t16) in #t17.{core::Object::==}(null) ?{self::A*} let final self::A* #t18 = self::f<self::A*>() in let final void #t19 = #t15.{self::Test::[]=}(#t16, #t18) in #t18 : #t17;
+    self::A* v2 = let final self::Test* #t15 = t in let final self::Index* #t16 = self::f<self::Index*>() in let final self::B* #t17 = #t15.{self::Test::[]}(#t16) in #t17.{self::A::==}(null) ?{self::A*} let final self::A* #t18 = self::f<self::A*>() in let final void #t19 = #t15.{self::Test::[]=}(#t16, #t18) in #t18 : #t17;
     self::D* v3 = let final self::Test* #t20 = t in let final self::Index* #t21 = self::f<self::Index*>() in let final self::D* #t22 = #t20.{self::Test::[]}(#t21).{self::B::+}(self::f<self::E*>()) in let final void #t23 = #t20.{self::Test::[]=}(#t21, #t22) in #t22;
     self::D* v4 = let final self::Test* #t24 = t in let final self::Index* #t25 = self::f<self::Index*>() in let final self::D* #t26 = #t24.{self::Test::[]}(#t25).{self::B::-}(1) in let final void #t27 = #t24.{self::Test::[]=}(#t25, #t26) in #t26;
     self::B* v5 = let final self::Test* #t28 = t in let final self::Index* #t29 = self::f<self::Index*>() in let final self::B* #t30 = #t28.{self::Test::[]}(#t29) in let final void #t31 = #t28.{self::Test::[]=}(#t29, #t30.{self::B::-}(1)) in #t30;
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method f<T extends core::Object* = dynamic>() → self::f::T*
   return null;
diff --git a/pkg/front_end/testcases/inference_new/infer_assign_to_index_set_vs_get.dart.strong.transformed.expect b/pkg/front_end/testcases/inference_new/infer_assign_to_index_set_vs_get.dart.strong.transformed.expect
index 9bba684..97f3a7c 100644
--- a/pkg/front_end/testcases/inference_new/infer_assign_to_index_set_vs_get.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference_new/infer_assign_to_index_set_vs_get.dart.strong.transformed.expect
@@ -6,6 +6,16 @@
   synthetic constructor •() → self::Index*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class A extends core::Object {
   synthetic constructor •() → self::A*
@@ -15,6 +25,16 @@
     return null;
   operator -(core::int* i) → self::C*
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A {
   synthetic constructor •() → self::B*
@@ -55,16 +75,26 @@
   method test() → void {
     self::Test* t = self::f<self::Test*>();
     t.{self::Test::[]=}(self::f<self::Index*>(), self::f<self::A*>());
-    let final self::Test* #t1 = t in let final self::Index* #t2 = self::f<self::Index*>() in #t1.{self::Test::[]}(#t2).{core::Object::==}(null) ?{self::A*} #t1.{self::Test::[]=}(#t2, self::f<self::A*>()) : null;
+    let final self::Test* #t1 = t in let final self::Index* #t2 = self::f<self::Index*>() in #t1.{self::Test::[]}(#t2).{self::A::==}(null) ?{self::A*} #t1.{self::Test::[]=}(#t2, self::f<self::A*>()) : null;
     let final self::Test* #t3 = t in let final self::Index* #t4 = self::f<self::Index*>() in #t3.{self::Test::[]=}(#t4, #t3.{self::Test::[]}(#t4).{self::B::+}(self::f<self::E*>()));
     let final self::Test* #t5 = t in let final self::Index* #t6 = self::f<self::Index*>() in let final self::D* #t7 = #t5.{self::Test::[]}(#t6).{self::B::-}(1) in let final void #t8 = #t5.{self::Test::[]=}(#t6, #t7) in #t7;
     let final self::Test* #t9 = t in let final self::Index* #t10 = self::f<self::Index*>() in #t9.{self::Test::[]=}(#t10, #t9.{self::Test::[]}(#t10).{self::B::-}(1));
     self::A* v1 = let final self::Test* #t11 = t in let final self::Index* #t12 = self::f<self::Index*>() in let final self::A* #t13 = self::f<self::A*>() in let final void #t14 = #t11.{self::Test::[]=}(#t12, #t13) in #t13;
-    self::A* v2 = let final self::Test* #t15 = t in let final self::Index* #t16 = self::f<self::Index*>() in let final self::B* #t17 = #t15.{self::Test::[]}(#t16) in #t17.{core::Object::==}(null) ?{self::A*} let final self::A* #t18 = self::f<self::A*>() in let final void #t19 = #t15.{self::Test::[]=}(#t16, #t18) in #t18 : #t17;
+    self::A* v2 = let final self::Test* #t15 = t in let final self::Index* #t16 = self::f<self::Index*>() in let final self::B* #t17 = #t15.{self::Test::[]}(#t16) in #t17.{self::A::==}(null) ?{self::A*} let final self::A* #t18 = self::f<self::A*>() in let final void #t19 = #t15.{self::Test::[]=}(#t16, #t18) in #t18 : #t17;
     self::D* v3 = let final self::Test* #t20 = t in let final self::Index* #t21 = self::f<self::Index*>() in let final self::D* #t22 = #t20.{self::Test::[]}(#t21).{self::B::+}(self::f<self::E*>()) in let final void #t23 = #t20.{self::Test::[]=}(#t21, #t22) in #t22;
     self::D* v4 = let final self::Test* #t24 = t in let final self::Index* #t25 = self::f<self::Index*>() in let final self::D* #t26 = #t24.{self::Test::[]}(#t25).{self::B::-}(1) in let final void #t27 = #t24.{self::Test::[]=}(#t25, #t26) in #t26;
     self::B* v5 = let final self::Test* #t28 = t in let final self::Index* #t29 = self::f<self::Index*>() in let final self::B* #t30 = #t28.{self::Test::[]}(#t29) in let final void #t31 = #t28.{self::Test::[]=}(#t29, #t30.{self::B::-}(1)) in #t30;
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method f<T extends core::Object* = dynamic>() → self::f::T*
   return null;
diff --git a/pkg/front_end/testcases/inference_new/infer_assign_to_index_super.dart b/pkg/front_end/testcases/inference_new/infer_assign_to_index_super.dart
index 6b091a7..fb7df35 100644
--- a/pkg/front_end/testcases/inference_new/infer_assign_to_index_super.dart
+++ b/pkg/front_end/testcases/inference_new/infer_assign_to_index_super.dart
@@ -32,7 +32,7 @@
 
     super /*@target=Base::[]*/ /*@target=Base::[]=*/ [
             /*@ typeArgs=Index* */ f()]
-        /*@ target=Object::==*/ ??= /*@ typeArgs=B* */ f();
+        /*@target=A::==*/ ??= /*@ typeArgs=B* */ f();
 
     super /*@target=Base::[]*/ /*@target=Base::[]=*/ [
             /*@ typeArgs=Index* */ f()]
@@ -57,7 +57,7 @@
 
     var /*@ type=B* */ v2 = super /*@target=Base::[]*/ /*@target=Base::[]=*/ [
             /*@ typeArgs=Index* */ f()]
-        /*@ target=Object::==*/ ??= /*@ typeArgs=B* */ f();
+        /*@target=A::==*/ ??= /*@ typeArgs=B* */ f();
 
     var /*@ type=A* */ v3 = super /*@target=Base::[]*/ /*@target=Base::[]=*/ [
             /*@ typeArgs=Index* */ f()]
diff --git a/pkg/front_end/testcases/inference_new/infer_assign_to_index_super.dart.outline.expect b/pkg/front_end/testcases/inference_new/infer_assign_to_index_super.dart.outline.expect
index 918047c..3f81fb6 100644
--- a/pkg/front_end/testcases/inference_new/infer_assign_to_index_super.dart.outline.expect
+++ b/pkg/front_end/testcases/inference_new/infer_assign_to_index_super.dart.outline.expect
@@ -5,10 +5,30 @@
 class Index extends core::Object {
   synthetic constructor •() → self::Index*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class A extends core::Object {
   synthetic constructor •() → self::A*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A {
   synthetic constructor •() → self::B*
@@ -33,6 +53,16 @@
     ;
   operator []=(self::Index* i, self::B* v) → void
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Test extends self::Base {
   synthetic constructor •() → self::Test*
diff --git a/pkg/front_end/testcases/inference_new/infer_assign_to_index_super.dart.strong.expect b/pkg/front_end/testcases/inference_new/infer_assign_to_index_super.dart.strong.expect
index 6386cbd..44a9e2f 100644
--- a/pkg/front_end/testcases/inference_new/infer_assign_to_index_super.dart.strong.expect
+++ b/pkg/front_end/testcases/inference_new/infer_assign_to_index_super.dart.strong.expect
@@ -6,11 +6,31 @@
   synthetic constructor •() → self::Index*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class A extends core::Object {
   synthetic constructor •() → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A {
   synthetic constructor •() → self::B*
@@ -37,6 +57,16 @@
   operator [](self::Index* i) → self::B*
     return null;
   operator []=(self::Index* i, self::B* v) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Test extends self::Base {
   synthetic constructor •() → self::Test*
@@ -44,14 +74,14 @@
     ;
   method test() → void {
     super.{self::Base::[]=}(self::f<self::Index*>(), self::f<self::B*>());
-    let final self::Index* #t1 = self::f<self::Index*>() in super.{self::Base::[]}(#t1).{core::Object::==}(null) ?{self::B*} super.{self::Base::[]=}(#t1, self::f<self::B*>()) : null;
+    let final self::Index* #t1 = self::f<self::Index*>() in super.{self::Base::[]}(#t1).{self::A::==}(null) ?{self::B*} super.{self::Base::[]=}(#t1, self::f<self::B*>()) : null;
     let final self::Index* #t2 = self::f<self::Index*>() in super.{self::Base::[]=}(#t2, super.{self::Base::[]}(#t2).{self::B::+}(self::f<self::C*>()) as{TypeError} self::B*);
     let final self::Index* #t3 = self::f<self::Index*>() in super.{self::Base::[]=}(#t3, super.{self::Base::[]}(#t3).{self::B::*}(self::f<self::B*>()));
     let final self::Index* #t4 = self::f<self::Index*>() in super.{self::Base::[]=}(#t4, super.{self::Base::[]}(#t4).{self::B::&}(self::f<self::A*>()));
     let final self::Index* #t5 = self::f<self::Index*>() in let final self::B* #t6 = super.{self::Base::[]}(#t5).{self::B::-}(1) in let final void #t7 = super.{self::Base::[]=}(#t5, #t6) in #t6;
     let final self::Index* #t8 = self::f<self::Index*>() in super.{self::Base::[]=}(#t8, super.{self::Base::[]}(#t8).{self::B::-}(1));
     self::B* v1 = let final self::Index* #t9 = self::f<self::Index*>() in let final self::B* #t10 = self::f<self::B*>() in let final void #t11 = super.{self::Base::[]=}(#t9, #t10) in #t10;
-    self::B* v2 = let final self::Index* #t12 = self::f<self::Index*>() in let final self::B* #t13 = super.{self::Base::[]}(#t12) in #t13.{core::Object::==}(null) ?{self::B*} let final self::B* #t14 = self::f<self::B*>() in let final void #t15 = super.{self::Base::[]=}(#t12, #t14) in #t14 : #t13;
+    self::B* v2 = let final self::Index* #t12 = self::f<self::Index*>() in let final self::B* #t13 = super.{self::Base::[]}(#t12) in #t13.{self::A::==}(null) ?{self::B*} let final self::B* #t14 = self::f<self::B*>() in let final void #t15 = super.{self::Base::[]=}(#t12, #t14) in #t14 : #t13;
     self::A* v3 = let final self::Index* #t16 = self::f<self::Index*>() in let final self::A* #t17 = super.{self::Base::[]}(#t16).{self::B::+}(self::f<self::C*>()) as{TypeError} self::B* in let final void #t18 = super.{self::Base::[]=}(#t16, #t17) in #t17;
     self::B* v4 = let final self::Index* #t19 = self::f<self::Index*>() in let final self::B* #t20 = super.{self::Base::[]}(#t19).{self::B::*}(self::f<self::B*>()) in let final void #t21 = super.{self::Base::[]=}(#t19, #t20) in #t20;
     self::C* v5 = let final self::Index* #t22 = self::f<self::Index*>() in let final self::C* #t23 = super.{self::Base::[]}(#t22).{self::B::&}(self::f<self::A*>()) in let final void #t24 = super.{self::Base::[]=}(#t22, #t23) in #t23;
diff --git a/pkg/front_end/testcases/inference_new/infer_assign_to_index_super.dart.strong.transformed.expect b/pkg/front_end/testcases/inference_new/infer_assign_to_index_super.dart.strong.transformed.expect
index 6386cbd..44a9e2f 100644
--- a/pkg/front_end/testcases/inference_new/infer_assign_to_index_super.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference_new/infer_assign_to_index_super.dart.strong.transformed.expect
@@ -6,11 +6,31 @@
   synthetic constructor •() → self::Index*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class A extends core::Object {
   synthetic constructor •() → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A {
   synthetic constructor •() → self::B*
@@ -37,6 +57,16 @@
   operator [](self::Index* i) → self::B*
     return null;
   operator []=(self::Index* i, self::B* v) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Test extends self::Base {
   synthetic constructor •() → self::Test*
@@ -44,14 +74,14 @@
     ;
   method test() → void {
     super.{self::Base::[]=}(self::f<self::Index*>(), self::f<self::B*>());
-    let final self::Index* #t1 = self::f<self::Index*>() in super.{self::Base::[]}(#t1).{core::Object::==}(null) ?{self::B*} super.{self::Base::[]=}(#t1, self::f<self::B*>()) : null;
+    let final self::Index* #t1 = self::f<self::Index*>() in super.{self::Base::[]}(#t1).{self::A::==}(null) ?{self::B*} super.{self::Base::[]=}(#t1, self::f<self::B*>()) : null;
     let final self::Index* #t2 = self::f<self::Index*>() in super.{self::Base::[]=}(#t2, super.{self::Base::[]}(#t2).{self::B::+}(self::f<self::C*>()) as{TypeError} self::B*);
     let final self::Index* #t3 = self::f<self::Index*>() in super.{self::Base::[]=}(#t3, super.{self::Base::[]}(#t3).{self::B::*}(self::f<self::B*>()));
     let final self::Index* #t4 = self::f<self::Index*>() in super.{self::Base::[]=}(#t4, super.{self::Base::[]}(#t4).{self::B::&}(self::f<self::A*>()));
     let final self::Index* #t5 = self::f<self::Index*>() in let final self::B* #t6 = super.{self::Base::[]}(#t5).{self::B::-}(1) in let final void #t7 = super.{self::Base::[]=}(#t5, #t6) in #t6;
     let final self::Index* #t8 = self::f<self::Index*>() in super.{self::Base::[]=}(#t8, super.{self::Base::[]}(#t8).{self::B::-}(1));
     self::B* v1 = let final self::Index* #t9 = self::f<self::Index*>() in let final self::B* #t10 = self::f<self::B*>() in let final void #t11 = super.{self::Base::[]=}(#t9, #t10) in #t10;
-    self::B* v2 = let final self::Index* #t12 = self::f<self::Index*>() in let final self::B* #t13 = super.{self::Base::[]}(#t12) in #t13.{core::Object::==}(null) ?{self::B*} let final self::B* #t14 = self::f<self::B*>() in let final void #t15 = super.{self::Base::[]=}(#t12, #t14) in #t14 : #t13;
+    self::B* v2 = let final self::Index* #t12 = self::f<self::Index*>() in let final self::B* #t13 = super.{self::Base::[]}(#t12) in #t13.{self::A::==}(null) ?{self::B*} let final self::B* #t14 = self::f<self::B*>() in let final void #t15 = super.{self::Base::[]=}(#t12, #t14) in #t14 : #t13;
     self::A* v3 = let final self::Index* #t16 = self::f<self::Index*>() in let final self::A* #t17 = super.{self::Base::[]}(#t16).{self::B::+}(self::f<self::C*>()) as{TypeError} self::B* in let final void #t18 = super.{self::Base::[]=}(#t16, #t17) in #t17;
     self::B* v4 = let final self::Index* #t19 = self::f<self::Index*>() in let final self::B* #t20 = super.{self::Base::[]}(#t19).{self::B::*}(self::f<self::B*>()) in let final void #t21 = super.{self::Base::[]=}(#t19, #t20) in #t20;
     self::C* v5 = let final self::Index* #t22 = self::f<self::Index*>() in let final self::C* #t23 = super.{self::Base::[]}(#t22).{self::B::&}(self::f<self::A*>()) in let final void #t24 = super.{self::Base::[]=}(#t22, #t23) in #t23;
diff --git a/pkg/front_end/testcases/inference_new/infer_assign_to_index_super_upwards.dart.outline.expect b/pkg/front_end/testcases/inference_new/infer_assign_to_index_super_upwards.dart.outline.expect
index 901687c..90dbef8 100644
--- a/pkg/front_end/testcases/inference_new/infer_assign_to_index_super_upwards.dart.outline.expect
+++ b/pkg/front_end/testcases/inference_new/infer_assign_to_index_super_upwards.dart.outline.expect
@@ -11,6 +11,16 @@
     ;
   abstract method getValue(core::String* s) → self::Base::T*;
   abstract method setValue(core::String* s, generic-covariant-impl self::Base::U* v) → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class Test1 extends self::Base<core::int*, core::int*> {
   synthetic constructor •() → self::Test1*
diff --git a/pkg/front_end/testcases/inference_new/infer_assign_to_index_super_upwards.dart.strong.expect b/pkg/front_end/testcases/inference_new/infer_assign_to_index_super_upwards.dart.strong.expect
index 4468732..919b38b 100644
--- a/pkg/front_end/testcases/inference_new/infer_assign_to_index_super_upwards.dart.strong.expect
+++ b/pkg/front_end/testcases/inference_new/infer_assign_to_index_super_upwards.dart.strong.expect
@@ -43,6 +43,16 @@
     return this.{self::Base::setValue}(s, v);
   abstract method getValue(core::String* s) → self::Base::T*;
   abstract method setValue(core::String* s, generic-covariant-impl self::Base::U* v) → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class Test1 extends self::Base<core::int*, core::int*> {
   synthetic constructor •() → self::Test1*
@@ -108,9 +118,9 @@
     core::num* v2 = let final core::String* #t98 = "x" in let final core::num* #t99 = self::getNum() as{TypeError} core::int* in let final void #t100 = super.{self::Base::[]=}(#t98, #t99) in #t99;
     core::num* v4 = let final core::String* #t101 = "x" in let final core::num* #t102 = super.{self::Base::[]}(#t101) in #t102.{core::num::==}(null) ?{core::num*} let final core::int* #t103 = self::getInt() in let final void #t104 = super.{self::Base::[]=}(#t101, #t103) in #t103 : #t102;
     core::num* v5 = let final core::String* #t105 = "x" in let final core::num* #t106 = super.{self::Base::[]}(#t105) in #t106.{core::num::==}(null) ?{core::num*} let final core::num* #t107 = self::getNum() as{TypeError} core::int* in let final void #t108 = super.{self::Base::[]=}(#t105, #t107) in #t107 : #t106;
-    core::num* v7 = let final core::String* #t109 = "x" in let final core::num* #t110 = super.{self::Base::[]}(#t109).{core::num::+}(self::getInt()) as{TypeError} core::int* in let final void #t111 = super.{self::Base::[]=}(#t109, #t110) in #t110;
-    core::num* v8 = let final core::String* #t112 = "x" in let final core::num* #t113 = super.{self::Base::[]}(#t112).{core::num::+}(self::getNum()) as{TypeError} core::int* in let final void #t114 = super.{self::Base::[]=}(#t112, #t113) in #t113;
-    core::num* v10 = let final core::String* #t115 = "x" in let final core::num* #t116 = super.{self::Base::[]}(#t115).{core::num::+}(1) as{TypeError} core::int* in let final void #t117 = super.{self::Base::[]=}(#t115, #t116) in #t116;
+    core::num* v7 = let final core::String* #t109 = "x" in let final core::num #t110 = super.{self::Base::[]}(#t109).{core::num::+}(self::getInt()) as{TypeError} core::int* in let final void #t111 = super.{self::Base::[]=}(#t109, #t110) in #t110;
+    core::num* v8 = let final core::String* #t112 = "x" in let final core::num #t113 = super.{self::Base::[]}(#t112).{core::num::+}(self::getNum()) as{TypeError} core::int* in let final void #t114 = super.{self::Base::[]=}(#t112, #t113) in #t113;
+    core::num* v10 = let final core::String* #t115 = "x" in let final core::num #t116 = super.{self::Base::[]}(#t115).{core::num::+}(1) as{TypeError} core::int* in let final void #t117 = super.{self::Base::[]=}(#t115, #t116) in #t116;
     core::num* v11 = let final core::String* #t118 = "x" in let final core::num* #t119 = super.{self::Base::[]}(#t118) in let final void #t120 = super.{self::Base::[]=}(#t118, #t119.{core::num::+}(1) as{TypeError} core::int*) in #t119;
   }
 }
@@ -125,10 +135,10 @@
     core::num* v4 = let final core::String* #t130 = "x" in let final core::num* #t131 = super.{self::Base::[]}(#t130) in #t131.{core::num::==}(null) ?{core::num*} let final core::int* #t132 = self::getInt() in let final void #t133 = super.{self::Base::[]=}(#t130, #t132) in #t132 : #t131;
     core::num* v5 = let final core::String* #t134 = "x" in let final core::num* #t135 = super.{self::Base::[]}(#t134) in #t135.{core::num::==}(null) ?{core::num*} let final core::num* #t136 = self::getNum() in let final void #t137 = super.{self::Base::[]=}(#t134, #t136) in #t136 : #t135;
     core::num* v6 = let final core::String* #t138 = "x" in let final core::num* #t139 = super.{self::Base::[]}(#t138) in #t139.{core::num::==}(null) ?{core::num*} let final core::double* #t140 = self::getDouble() in let final void #t141 = super.{self::Base::[]=}(#t138, #t140) in #t140 : #t139;
-    core::num* v7 = let final core::String* #t142 = "x" in let final core::num* #t143 = super.{self::Base::[]}(#t142).{core::num::+}(self::getInt()) in let final void #t144 = super.{self::Base::[]=}(#t142, #t143) in #t143;
-    core::num* v8 = let final core::String* #t145 = "x" in let final core::num* #t146 = super.{self::Base::[]}(#t145).{core::num::+}(self::getNum()) in let final void #t147 = super.{self::Base::[]=}(#t145, #t146) in #t146;
-    core::num* v9 = let final core::String* #t148 = "x" in let final core::num* #t149 = super.{self::Base::[]}(#t148).{core::num::+}(self::getDouble()) in let final void #t150 = super.{self::Base::[]=}(#t148, #t149) in #t149;
-    core::num* v10 = let final core::String* #t151 = "x" in let final core::num* #t152 = super.{self::Base::[]}(#t151).{core::num::+}(1) in let final void #t153 = super.{self::Base::[]=}(#t151, #t152) in #t152;
+    core::num* v7 = let final core::String* #t142 = "x" in let final core::num #t143 = super.{self::Base::[]}(#t142).{core::num::+}(self::getInt()) in let final void #t144 = super.{self::Base::[]=}(#t142, #t143) in #t143;
+    core::num* v8 = let final core::String* #t145 = "x" in let final core::num #t146 = super.{self::Base::[]}(#t145).{core::num::+}(self::getNum()) in let final void #t147 = super.{self::Base::[]=}(#t145, #t146) in #t146;
+    core::num* v9 = let final core::String* #t148 = "x" in let final core::num #t149 = super.{self::Base::[]}(#t148).{core::num::+}(self::getDouble()) in let final void #t150 = super.{self::Base::[]=}(#t148, #t149) in #t149;
+    core::num* v10 = let final core::String* #t151 = "x" in let final core::num #t152 = super.{self::Base::[]}(#t151).{core::num::+}(1) in let final void #t153 = super.{self::Base::[]=}(#t151, #t152) in #t152;
     core::num* v11 = let final core::String* #t154 = "x" in let final core::num* #t155 = super.{self::Base::[]}(#t154) in let final void #t156 = super.{self::Base::[]=}(#t154, #t155.{core::num::+}(1)) in #t155;
   }
 }
@@ -141,10 +151,10 @@
     core::double* v3 = let final core::String* #t160 = "x" in let final core::double* #t161 = self::getDouble() in let final void #t162 = super.{self::Base::[]=}(#t160, #t161) in #t161;
     core::num* v5 = let final core::String* #t163 = "x" in let final core::num* #t164 = super.{self::Base::[]}(#t163) in #t164.{core::num::==}(null) ?{core::num*} let final core::num* #t165 = self::getNum() as{TypeError} core::double* in let final void #t166 = super.{self::Base::[]=}(#t163, #t165) in #t165 : #t164;
     core::num* v6 = let final core::String* #t167 = "x" in let final core::num* #t168 = super.{self::Base::[]}(#t167) in #t168.{core::num::==}(null) ?{core::num*} let final core::double* #t169 = self::getDouble() in let final void #t170 = super.{self::Base::[]=}(#t167, #t169) in #t169 : #t168;
-    core::num* v7 = let final core::String* #t171 = "x" in let final core::num* #t172 = super.{self::Base::[]}(#t171).{core::num::+}(self::getInt()) as{TypeError} core::double* in let final void #t173 = super.{self::Base::[]=}(#t171, #t172) in #t172;
-    core::num* v8 = let final core::String* #t174 = "x" in let final core::num* #t175 = super.{self::Base::[]}(#t174).{core::num::+}(self::getNum()) as{TypeError} core::double* in let final void #t176 = super.{self::Base::[]=}(#t174, #t175) in #t175;
-    core::num* v9 = let final core::String* #t177 = "x" in let final core::num* #t178 = super.{self::Base::[]}(#t177).{core::num::+}(self::getDouble()) as{TypeError} core::double* in let final void #t179 = super.{self::Base::[]=}(#t177, #t178) in #t178;
-    core::num* v10 = let final core::String* #t180 = "x" in let final core::num* #t181 = super.{self::Base::[]}(#t180).{core::num::+}(1) as{TypeError} core::double* in let final void #t182 = super.{self::Base::[]=}(#t180, #t181) in #t181;
+    core::num* v7 = let final core::String* #t171 = "x" in let final core::num #t172 = super.{self::Base::[]}(#t171).{core::num::+}(self::getInt()) as{TypeError} core::double* in let final void #t173 = super.{self::Base::[]=}(#t171, #t172) in #t172;
+    core::num* v8 = let final core::String* #t174 = "x" in let final core::num #t175 = super.{self::Base::[]}(#t174).{core::num::+}(self::getNum()) as{TypeError} core::double* in let final void #t176 = super.{self::Base::[]=}(#t174, #t175) in #t175;
+    core::num* v9 = let final core::String* #t177 = "x" in let final core::num #t178 = super.{self::Base::[]}(#t177).{core::num::+}(self::getDouble()) as{TypeError} core::double* in let final void #t179 = super.{self::Base::[]=}(#t177, #t178) in #t178;
+    core::num* v10 = let final core::String* #t180 = "x" in let final core::num #t181 = super.{self::Base::[]}(#t180).{core::num::+}(1) as{TypeError} core::double* in let final void #t182 = super.{self::Base::[]=}(#t180, #t181) in #t181;
     core::num* v11 = let final core::String* #t183 = "x" in let final core::num* #t184 = super.{self::Base::[]}(#t183) in let final void #t185 = super.{self::Base::[]=}(#t183, #t184.{core::num::+}(1) as{TypeError} core::double*) in #t184;
   }
 }
@@ -157,13 +167,13 @@
     core::num* v2 = let final core::String* #t189 = "x" in let final core::num* #t190 = self::getNum() as{TypeError} core::int* in let final void #t191 = super.{self::Base::[]=}(#t189, #t190) in #t190;
     core::num* v4 = let final core::String* #t192 = "x" in let final core::double* #t193 = super.{self::Base::[]}(#t192) in #t193.{core::num::==}(null) ?{core::num*} let final core::int* #t194 = self::getInt() in let final void #t195 = super.{self::Base::[]=}(#t192, #t194) in #t194 : #t193;
     core::num* v5 = let final core::String* #t196 = "x" in let final core::double* #t197 = super.{self::Base::[]}(#t196) in #t197.{core::num::==}(null) ?{core::num*} let final core::num* #t198 = self::getNum() as{TypeError} core::int* in let final void #t199 = super.{self::Base::[]=}(#t196, #t198) in #t198 : #t197;
-    core::double* v7 = let final core::String* #t200 = "x" in let final core::double* #t201 = let final<BottomType> #t202 = invalid-expression "pkg/front_end/testcases/inference_new/infer_assign_to_index_super_upwards.dart:248:37: Error: A value of type 'double' can't be assigned to a variable of type 'int'.
+    core::double* v7 = let final core::String* #t200 = "x" in let final core::double #t201 = let final<BottomType> #t202 = invalid-expression "pkg/front_end/testcases/inference_new/infer_assign_to_index_super_upwards.dart:248:37: Error: A value of type 'double' can't be assigned to a variable of type 'int'.
             /*@ target=double::+ */ += getInt();
                                     ^" in super.{self::Base::[]}(#t200).{core::double::+}(self::getInt()) as{TypeError} core::int* in let final void #t203 = super.{self::Base::[]=}(#t200, #t201) in #t201;
-    core::double* v8 = let final core::String* #t204 = "x" in let final core::double* #t205 = let final<BottomType> #t206 = invalid-expression "pkg/front_end/testcases/inference_new/infer_assign_to_index_super_upwards.dart:252:37: Error: A value of type 'double' can't be assigned to a variable of type 'int'.
+    core::double* v8 = let final core::String* #t204 = "x" in let final core::double #t205 = let final<BottomType> #t206 = invalid-expression "pkg/front_end/testcases/inference_new/infer_assign_to_index_super_upwards.dart:252:37: Error: A value of type 'double' can't be assigned to a variable of type 'int'.
             /*@ target=double::+ */ += getNum();
                                     ^" in super.{self::Base::[]}(#t204).{core::double::+}(self::getNum()) as{TypeError} core::int* in let final void #t207 = super.{self::Base::[]=}(#t204, #t205) in #t205;
-    core::double* v10 = let final core::String* #t208 = "x" in let final core::double* #t209 = let final<BottomType> #t210 = invalid-expression "pkg/front_end/testcases/inference_new/infer_assign_to_index_super_upwards.dart:254:59: Error: A value of type 'double' can't be assigned to a variable of type 'int'.
+    core::double* v10 = let final core::String* #t208 = "x" in let final core::double #t209 = let final<BottomType> #t210 = invalid-expression "pkg/front_end/testcases/inference_new/infer_assign_to_index_super_upwards.dart:254:59: Error: A value of type 'double' can't be assigned to a variable of type 'int'.
     var /*@ type=double* */ v10 = /*@ target=double::+ */ ++super
                                                           ^" in super.{self::Base::[]}(#t208).{core::double::+}(1) as{TypeError} core::int* in let final void #t211 = super.{self::Base::[]=}(#t208, #t209) in #t209;
     core::double* v11 = let final core::String* #t212 = "x" in let final core::double* #t213 = super.{self::Base::[]}(#t212) in let final void #t214 = super.{self::Base::[]=}(#t212, let final<BottomType> #t215 = invalid-expression "pkg/front_end/testcases/inference_new/infer_assign_to_index_super_upwards.dart:259:43: Error: A value of type 'double' can't be assigned to a variable of type 'int'.
@@ -182,10 +192,10 @@
     core::num* v4 = let final core::String* #t225 = "x" in let final core::double* #t226 = super.{self::Base::[]}(#t225) in #t226.{core::num::==}(null) ?{core::num*} let final core::int* #t227 = self::getInt() in let final void #t228 = super.{self::Base::[]=}(#t225, #t227) in #t227 : #t226;
     core::num* v5 = let final core::String* #t229 = "x" in let final core::double* #t230 = super.{self::Base::[]}(#t229) in #t230.{core::num::==}(null) ?{core::num*} let final core::num* #t231 = self::getNum() in let final void #t232 = super.{self::Base::[]=}(#t229, #t231) in #t231 : #t230;
     core::double* v6 = let final core::String* #t233 = "x" in let final core::double* #t234 = super.{self::Base::[]}(#t233) in #t234.{core::num::==}(null) ?{core::double*} let final core::double* #t235 = self::getDouble() in let final void #t236 = super.{self::Base::[]=}(#t233, #t235) in #t235 : #t234;
-    core::double* v7 = let final core::String* #t237 = "x" in let final core::double* #t238 = super.{self::Base::[]}(#t237).{core::double::+}(self::getInt()) in let final void #t239 = super.{self::Base::[]=}(#t237, #t238) in #t238;
-    core::double* v8 = let final core::String* #t240 = "x" in let final core::double* #t241 = super.{self::Base::[]}(#t240).{core::double::+}(self::getNum()) in let final void #t242 = super.{self::Base::[]=}(#t240, #t241) in #t241;
-    core::double* v9 = let final core::String* #t243 = "x" in let final core::double* #t244 = super.{self::Base::[]}(#t243).{core::double::+}(self::getDouble()) in let final void #t245 = super.{self::Base::[]=}(#t243, #t244) in #t244;
-    core::double* v10 = let final core::String* #t246 = "x" in let final core::double* #t247 = super.{self::Base::[]}(#t246).{core::double::+}(1) in let final void #t248 = super.{self::Base::[]=}(#t246, #t247) in #t247;
+    core::double* v7 = let final core::String* #t237 = "x" in let final core::double #t238 = super.{self::Base::[]}(#t237).{core::double::+}(self::getInt()) in let final void #t239 = super.{self::Base::[]=}(#t237, #t238) in #t238;
+    core::double* v8 = let final core::String* #t240 = "x" in let final core::double #t241 = super.{self::Base::[]}(#t240).{core::double::+}(self::getNum()) in let final void #t242 = super.{self::Base::[]=}(#t240, #t241) in #t241;
+    core::double* v9 = let final core::String* #t243 = "x" in let final core::double #t244 = super.{self::Base::[]}(#t243).{core::double::+}(self::getDouble()) in let final void #t245 = super.{self::Base::[]=}(#t243, #t244) in #t244;
+    core::double* v10 = let final core::String* #t246 = "x" in let final core::double #t247 = super.{self::Base::[]}(#t246).{core::double::+}(1) in let final void #t248 = super.{self::Base::[]=}(#t246, #t247) in #t247;
     core::double* v11 = let final core::String* #t249 = "x" in let final core::double* #t250 = super.{self::Base::[]}(#t249) in let final void #t251 = super.{self::Base::[]=}(#t249, #t250.{core::double::+}(1)) in #t250;
   }
 }
@@ -198,10 +208,10 @@
     core::double* v3 = let final core::String* #t255 = "x" in let final core::double* #t256 = self::getDouble() in let final void #t257 = super.{self::Base::[]=}(#t255, #t256) in #t256;
     core::num* v5 = let final core::String* #t258 = "x" in let final core::double* #t259 = super.{self::Base::[]}(#t258) in #t259.{core::num::==}(null) ?{core::num*} let final core::num* #t260 = self::getNum() as{TypeError} core::double* in let final void #t261 = super.{self::Base::[]=}(#t258, #t260) in #t260 : #t259;
     core::double* v6 = let final core::String* #t262 = "x" in let final core::double* #t263 = super.{self::Base::[]}(#t262) in #t263.{core::num::==}(null) ?{core::double*} let final core::double* #t264 = self::getDouble() in let final void #t265 = super.{self::Base::[]=}(#t262, #t264) in #t264 : #t263;
-    core::double* v7 = let final core::String* #t266 = "x" in let final core::double* #t267 = super.{self::Base::[]}(#t266).{core::double::+}(self::getInt()) in let final void #t268 = super.{self::Base::[]=}(#t266, #t267) in #t267;
-    core::double* v8 = let final core::String* #t269 = "x" in let final core::double* #t270 = super.{self::Base::[]}(#t269).{core::double::+}(self::getNum()) in let final void #t271 = super.{self::Base::[]=}(#t269, #t270) in #t270;
-    core::double* v9 = let final core::String* #t272 = "x" in let final core::double* #t273 = super.{self::Base::[]}(#t272).{core::double::+}(self::getDouble()) in let final void #t274 = super.{self::Base::[]=}(#t272, #t273) in #t273;
-    core::double* v10 = let final core::String* #t275 = "x" in let final core::double* #t276 = super.{self::Base::[]}(#t275).{core::double::+}(1) in let final void #t277 = super.{self::Base::[]=}(#t275, #t276) in #t276;
+    core::double* v7 = let final core::String* #t266 = "x" in let final core::double #t267 = super.{self::Base::[]}(#t266).{core::double::+}(self::getInt()) in let final void #t268 = super.{self::Base::[]=}(#t266, #t267) in #t267;
+    core::double* v8 = let final core::String* #t269 = "x" in let final core::double #t270 = super.{self::Base::[]}(#t269).{core::double::+}(self::getNum()) in let final void #t271 = super.{self::Base::[]=}(#t269, #t270) in #t270;
+    core::double* v9 = let final core::String* #t272 = "x" in let final core::double #t273 = super.{self::Base::[]}(#t272).{core::double::+}(self::getDouble()) in let final void #t274 = super.{self::Base::[]=}(#t272, #t273) in #t273;
+    core::double* v10 = let final core::String* #t275 = "x" in let final core::double #t276 = super.{self::Base::[]}(#t275).{core::double::+}(1) in let final void #t277 = super.{self::Base::[]=}(#t275, #t276) in #t276;
     core::double* v11 = let final core::String* #t278 = "x" in let final core::double* #t279 = super.{self::Base::[]}(#t278) in let final void #t280 = super.{self::Base::[]=}(#t278, #t279.{core::double::+}(1)) in #t279;
   }
 }
diff --git a/pkg/front_end/testcases/inference_new/infer_assign_to_index_this.dart b/pkg/front_end/testcases/inference_new/infer_assign_to_index_this.dart
index c584f61..521bde5 100644
--- a/pkg/front_end/testcases/inference_new/infer_assign_to_index_this.dart
+++ b/pkg/front_end/testcases/inference_new/infer_assign_to_index_this.dart
@@ -30,7 +30,7 @@
 
     this /*@target=Test::[]*/ /*@target=Test::[]=*/ [
             /*@ typeArgs=Index* */ f()]
-        /*@ target=Object::== */ ??= /*@ typeArgs=B* */ f();
+        /*@target=A::==*/ ??= /*@ typeArgs=B* */ f();
 
     this /*@target=Test::[]*/ /*@target=Test::[]=*/ [
             /*@ typeArgs=Index* */ f()]
@@ -55,7 +55,7 @@
 
     var /*@ type=B* */ v2 = this /*@target=Test::[]*/ /*@target=Test::[]=*/ [
             /*@ typeArgs=Index* */ f()]
-        /*@ target=Object::== */ ??= /*@ typeArgs=B* */ f();
+        /*@target=A::==*/ ??= /*@ typeArgs=B* */ f();
 
     var /*@ type=A* */ v3 = this /*@target=Test::[]*/ /*@target=Test::[]=*/ [
             /*@ typeArgs=Index* */ f()]
diff --git a/pkg/front_end/testcases/inference_new/infer_assign_to_index_this.dart.outline.expect b/pkg/front_end/testcases/inference_new/infer_assign_to_index_this.dart.outline.expect
index 9f0fa38..6e27b00 100644
--- a/pkg/front_end/testcases/inference_new/infer_assign_to_index_this.dart.outline.expect
+++ b/pkg/front_end/testcases/inference_new/infer_assign_to_index_this.dart.outline.expect
@@ -5,10 +5,30 @@
 class Index extends core::Object {
   synthetic constructor •() → self::Index*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class A extends core::Object {
   synthetic constructor •() → self::A*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A {
   synthetic constructor •() → self::B*
@@ -35,6 +55,16 @@
     ;
   method test() → void
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method f<T extends core::Object* = dynamic>() → self::f::T*
   ;
diff --git a/pkg/front_end/testcases/inference_new/infer_assign_to_index_this.dart.strong.expect b/pkg/front_end/testcases/inference_new/infer_assign_to_index_this.dart.strong.expect
index 6b50461..6a10df5 100644
--- a/pkg/front_end/testcases/inference_new/infer_assign_to_index_this.dart.strong.expect
+++ b/pkg/front_end/testcases/inference_new/infer_assign_to_index_this.dart.strong.expect
@@ -6,11 +6,31 @@
   synthetic constructor •() → self::Index*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class A extends core::Object {
   synthetic constructor •() → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A {
   synthetic constructor •() → self::B*
@@ -39,20 +59,30 @@
   operator []=(self::Index* i, self::B* v) → void {}
   method test() → void {
     this.{self::Test::[]=}(self::f<self::Index*>(), self::f<self::B*>());
-    let final self::Index* #t1 = self::f<self::Index*>() in this.{self::Test::[]}(#t1).{core::Object::==}(null) ?{self::B*} this.{self::Test::[]=}(#t1, self::f<self::B*>()) : null;
+    let final self::Index* #t1 = self::f<self::Index*>() in this.{self::Test::[]}(#t1).{self::A::==}(null) ?{self::B*} this.{self::Test::[]=}(#t1, self::f<self::B*>()) : null;
     let final self::Index* #t2 = self::f<self::Index*>() in this.{self::Test::[]=}(#t2, this.{self::Test::[]}(#t2).{self::B::+}(self::f<self::C*>()) as{TypeError} self::B*);
     let final self::Index* #t3 = self::f<self::Index*>() in this.{self::Test::[]=}(#t3, this.{self::Test::[]}(#t3).{self::B::*}(self::f<self::B*>()));
     let final self::Index* #t4 = self::f<self::Index*>() in this.{self::Test::[]=}(#t4, this.{self::Test::[]}(#t4).{self::B::&}(self::f<self::A*>()));
     let final self::Index* #t5 = self::f<self::Index*>() in let final self::B* #t6 = this.{self::Test::[]}(#t5).{self::B::-}(1) in let final void #t7 = this.{self::Test::[]=}(#t5, #t6) in #t6;
     let final self::Index* #t8 = self::f<self::Index*>() in this.{self::Test::[]=}(#t8, this.{self::Test::[]}(#t8).{self::B::-}(1));
     self::B* v1 = let final self::Index* #t9 = self::f<self::Index*>() in let final self::B* #t10 = self::f<self::B*>() in let final void #t11 = this.{self::Test::[]=}(#t9, #t10) in #t10;
-    self::B* v2 = let final self::Index* #t12 = self::f<self::Index*>() in let final self::B* #t13 = this.{self::Test::[]}(#t12) in #t13.{core::Object::==}(null) ?{self::B*} let final self::B* #t14 = self::f<self::B*>() in let final void #t15 = this.{self::Test::[]=}(#t12, #t14) in #t14 : #t13;
+    self::B* v2 = let final self::Index* #t12 = self::f<self::Index*>() in let final self::B* #t13 = this.{self::Test::[]}(#t12) in #t13.{self::A::==}(null) ?{self::B*} let final self::B* #t14 = self::f<self::B*>() in let final void #t15 = this.{self::Test::[]=}(#t12, #t14) in #t14 : #t13;
     self::A* v3 = let final self::Index* #t16 = self::f<self::Index*>() in let final self::A* #t17 = this.{self::Test::[]}(#t16).{self::B::+}(self::f<self::C*>()) as{TypeError} self::B* in let final void #t18 = this.{self::Test::[]=}(#t16, #t17) in #t17;
     self::B* v4 = let final self::Index* #t19 = self::f<self::Index*>() in let final self::B* #t20 = this.{self::Test::[]}(#t19).{self::B::*}(self::f<self::B*>()) in let final void #t21 = this.{self::Test::[]=}(#t19, #t20) in #t20;
     self::C* v5 = let final self::Index* #t22 = self::f<self::Index*>() in let final self::C* #t23 = this.{self::Test::[]}(#t22).{self::B::&}(self::f<self::A*>()) in let final void #t24 = this.{self::Test::[]=}(#t22, #t23) in #t23;
     self::B* v6 = let final self::Index* #t25 = self::f<self::Index*>() in let final self::B* #t26 = this.{self::Test::[]}(#t25).{self::B::-}(1) in let final void #t27 = this.{self::Test::[]=}(#t25, #t26) in #t26;
     self::B* v7 = let final self::Index* #t28 = self::f<self::Index*>() in let final self::B* #t29 = this.{self::Test::[]}(#t28) in let final void #t30 = this.{self::Test::[]=}(#t28, #t29.{self::B::-}(1)) in #t29;
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method f<T extends core::Object* = dynamic>() → self::f::T*
   return null;
diff --git a/pkg/front_end/testcases/inference_new/infer_assign_to_index_this.dart.strong.transformed.expect b/pkg/front_end/testcases/inference_new/infer_assign_to_index_this.dart.strong.transformed.expect
index 6b50461..6a10df5 100644
--- a/pkg/front_end/testcases/inference_new/infer_assign_to_index_this.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference_new/infer_assign_to_index_this.dart.strong.transformed.expect
@@ -6,11 +6,31 @@
   synthetic constructor •() → self::Index*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class A extends core::Object {
   synthetic constructor •() → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A {
   synthetic constructor •() → self::B*
@@ -39,20 +59,30 @@
   operator []=(self::Index* i, self::B* v) → void {}
   method test() → void {
     this.{self::Test::[]=}(self::f<self::Index*>(), self::f<self::B*>());
-    let final self::Index* #t1 = self::f<self::Index*>() in this.{self::Test::[]}(#t1).{core::Object::==}(null) ?{self::B*} this.{self::Test::[]=}(#t1, self::f<self::B*>()) : null;
+    let final self::Index* #t1 = self::f<self::Index*>() in this.{self::Test::[]}(#t1).{self::A::==}(null) ?{self::B*} this.{self::Test::[]=}(#t1, self::f<self::B*>()) : null;
     let final self::Index* #t2 = self::f<self::Index*>() in this.{self::Test::[]=}(#t2, this.{self::Test::[]}(#t2).{self::B::+}(self::f<self::C*>()) as{TypeError} self::B*);
     let final self::Index* #t3 = self::f<self::Index*>() in this.{self::Test::[]=}(#t3, this.{self::Test::[]}(#t3).{self::B::*}(self::f<self::B*>()));
     let final self::Index* #t4 = self::f<self::Index*>() in this.{self::Test::[]=}(#t4, this.{self::Test::[]}(#t4).{self::B::&}(self::f<self::A*>()));
     let final self::Index* #t5 = self::f<self::Index*>() in let final self::B* #t6 = this.{self::Test::[]}(#t5).{self::B::-}(1) in let final void #t7 = this.{self::Test::[]=}(#t5, #t6) in #t6;
     let final self::Index* #t8 = self::f<self::Index*>() in this.{self::Test::[]=}(#t8, this.{self::Test::[]}(#t8).{self::B::-}(1));
     self::B* v1 = let final self::Index* #t9 = self::f<self::Index*>() in let final self::B* #t10 = self::f<self::B*>() in let final void #t11 = this.{self::Test::[]=}(#t9, #t10) in #t10;
-    self::B* v2 = let final self::Index* #t12 = self::f<self::Index*>() in let final self::B* #t13 = this.{self::Test::[]}(#t12) in #t13.{core::Object::==}(null) ?{self::B*} let final self::B* #t14 = self::f<self::B*>() in let final void #t15 = this.{self::Test::[]=}(#t12, #t14) in #t14 : #t13;
+    self::B* v2 = let final self::Index* #t12 = self::f<self::Index*>() in let final self::B* #t13 = this.{self::Test::[]}(#t12) in #t13.{self::A::==}(null) ?{self::B*} let final self::B* #t14 = self::f<self::B*>() in let final void #t15 = this.{self::Test::[]=}(#t12, #t14) in #t14 : #t13;
     self::A* v3 = let final self::Index* #t16 = self::f<self::Index*>() in let final self::A* #t17 = this.{self::Test::[]}(#t16).{self::B::+}(self::f<self::C*>()) as{TypeError} self::B* in let final void #t18 = this.{self::Test::[]=}(#t16, #t17) in #t17;
     self::B* v4 = let final self::Index* #t19 = self::f<self::Index*>() in let final self::B* #t20 = this.{self::Test::[]}(#t19).{self::B::*}(self::f<self::B*>()) in let final void #t21 = this.{self::Test::[]=}(#t19, #t20) in #t20;
     self::C* v5 = let final self::Index* #t22 = self::f<self::Index*>() in let final self::C* #t23 = this.{self::Test::[]}(#t22).{self::B::&}(self::f<self::A*>()) in let final void #t24 = this.{self::Test::[]=}(#t22, #t23) in #t23;
     self::B* v6 = let final self::Index* #t25 = self::f<self::Index*>() in let final self::B* #t26 = this.{self::Test::[]}(#t25).{self::B::-}(1) in let final void #t27 = this.{self::Test::[]=}(#t25, #t26) in #t26;
     self::B* v7 = let final self::Index* #t28 = self::f<self::Index*>() in let final self::B* #t29 = this.{self::Test::[]}(#t28) in let final void #t30 = this.{self::Test::[]=}(#t28, #t29.{self::B::-}(1)) in #t29;
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method f<T extends core::Object* = dynamic>() → self::f::T*
   return null;
diff --git a/pkg/front_end/testcases/inference_new/infer_assign_to_index_this_upwards.dart.outline.expect b/pkg/front_end/testcases/inference_new/infer_assign_to_index_this_upwards.dart.outline.expect
index 8251adc..1d282cd 100644
--- a/pkg/front_end/testcases/inference_new/infer_assign_to_index_this_upwards.dart.outline.expect
+++ b/pkg/front_end/testcases/inference_new/infer_assign_to_index_this_upwards.dart.outline.expect
@@ -9,6 +9,16 @@
   abstract operator []=(core::String* s, core::int* v) → void;
   method test() → void
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class Test2 extends core::Object {
   synthetic constructor •() → self::Test2*
@@ -17,6 +27,16 @@
   abstract operator []=(core::String* s, core::num* v) → void;
   method test() → void
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class Test3 extends core::Object {
   synthetic constructor •() → self::Test3*
@@ -25,6 +45,16 @@
   abstract operator []=(core::String* s, core::double* v) → void;
   method test() → void
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class Test4 extends core::Object {
   synthetic constructor •() → self::Test4*
@@ -33,6 +63,16 @@
   abstract operator []=(core::String* s, core::int* v) → void;
   method test() → void
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class Test5 extends core::Object {
   synthetic constructor •() → self::Test5*
@@ -41,6 +81,16 @@
   abstract operator []=(core::String* s, core::num* v) → void;
   method test() → void
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class Test6 extends core::Object {
   synthetic constructor •() → self::Test6*
@@ -49,6 +99,16 @@
   abstract operator []=(core::String* s, core::double* v) → void;
   method test() → void
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class Test7 extends core::Object {
   synthetic constructor •() → self::Test7*
@@ -57,6 +117,16 @@
   abstract operator []=(core::String* s, core::int* v) → void;
   method test() → void
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class Test8 extends core::Object {
   synthetic constructor •() → self::Test8*
@@ -65,6 +135,16 @@
   abstract operator []=(core::String* s, core::num* v) → void;
   method test() → void
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class Test9 extends core::Object {
   synthetic constructor •() → self::Test9*
@@ -73,6 +153,16 @@
   abstract operator []=(core::String* s, core::double* v) → void;
   method test() → void
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method getInt() → core::int*
   ;
diff --git a/pkg/front_end/testcases/inference_new/infer_assign_to_index_this_upwards.dart.strong.expect b/pkg/front_end/testcases/inference_new/infer_assign_to_index_this_upwards.dart.strong.expect
index bcb1a68..93a6f12 100644
--- a/pkg/front_end/testcases/inference_new/infer_assign_to_index_this_upwards.dart.strong.expect
+++ b/pkg/front_end/testcases/inference_new/infer_assign_to_index_this_upwards.dart.strong.expect
@@ -49,6 +49,16 @@
     core::int* v10 = let final core::String* #t21 = "x" in let final core::int* #t22 = this.{self::Test1::[]}(#t21).{core::num::+}(1) in let final void #t23 = this.{self::Test1::[]=}(#t21, #t22) in #t22;
     core::int* v11 = let final core::String* #t24 = "x" in let final core::int* #t25 = this.{self::Test1::[]}(#t24) in let final void #t26 = this.{self::Test1::[]=}(#t24, #t25.{core::num::+}(1)) in #t25;
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class Test2 extends core::Object {
   synthetic constructor •() → self::Test2*
@@ -69,6 +79,16 @@
     core::int* v10 = let final core::String* #t57 = "x" in let final core::int* #t58 = this.{self::Test2::[]}(#t57).{core::num::+}(1) in let final void #t59 = this.{self::Test2::[]=}(#t57, #t58) in #t58;
     core::int* v11 = let final core::String* #t60 = "x" in let final core::int* #t61 = this.{self::Test2::[]}(#t60) in let final void #t62 = this.{self::Test2::[]=}(#t60, #t61.{core::num::+}(1)) in #t61;
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class Test3 extends core::Object {
   synthetic constructor •() → self::Test3*
@@ -93,6 +113,16 @@
         /*@target=num::+*/ ++;
                            ^" in #t92.{core::num::+}(1) as{TypeError} core::double*) in #t92;
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class Test4 extends core::Object {
   synthetic constructor •() → self::Test4*
@@ -105,11 +135,21 @@
     core::num* v2 = let final core::String* #t98 = "x" in let final core::num* #t99 = self::getNum() as{TypeError} core::int* in let final void #t100 = this.{self::Test4::[]=}(#t98, #t99) in #t99;
     core::num* v4 = let final core::String* #t101 = "x" in let final core::num* #t102 = this.{self::Test4::[]}(#t101) in #t102.{core::num::==}(null) ?{core::num*} let final core::int* #t103 = self::getInt() in let final void #t104 = this.{self::Test4::[]=}(#t101, #t103) in #t103 : #t102;
     core::num* v5 = let final core::String* #t105 = "x" in let final core::num* #t106 = this.{self::Test4::[]}(#t105) in #t106.{core::num::==}(null) ?{core::num*} let final core::num* #t107 = self::getNum() as{TypeError} core::int* in let final void #t108 = this.{self::Test4::[]=}(#t105, #t107) in #t107 : #t106;
-    core::num* v7 = let final core::String* #t109 = "x" in let final core::num* #t110 = this.{self::Test4::[]}(#t109).{core::num::+}(self::getInt()) as{TypeError} core::int* in let final void #t111 = this.{self::Test4::[]=}(#t109, #t110) in #t110;
-    core::num* v8 = let final core::String* #t112 = "x" in let final core::num* #t113 = this.{self::Test4::[]}(#t112).{core::num::+}(self::getNum()) as{TypeError} core::int* in let final void #t114 = this.{self::Test4::[]=}(#t112, #t113) in #t113;
-    core::num* v10 = let final core::String* #t115 = "x" in let final core::num* #t116 = this.{self::Test4::[]}(#t115).{core::num::+}(1) as{TypeError} core::int* in let final void #t117 = this.{self::Test4::[]=}(#t115, #t116) in #t116;
+    core::num* v7 = let final core::String* #t109 = "x" in let final core::num #t110 = this.{self::Test4::[]}(#t109).{core::num::+}(self::getInt()) as{TypeError} core::int* in let final void #t111 = this.{self::Test4::[]=}(#t109, #t110) in #t110;
+    core::num* v8 = let final core::String* #t112 = "x" in let final core::num #t113 = this.{self::Test4::[]}(#t112).{core::num::+}(self::getNum()) as{TypeError} core::int* in let final void #t114 = this.{self::Test4::[]=}(#t112, #t113) in #t113;
+    core::num* v10 = let final core::String* #t115 = "x" in let final core::num #t116 = this.{self::Test4::[]}(#t115).{core::num::+}(1) as{TypeError} core::int* in let final void #t117 = this.{self::Test4::[]=}(#t115, #t116) in #t116;
     core::num* v11 = let final core::String* #t118 = "x" in let final core::num* #t119 = this.{self::Test4::[]}(#t118) in let final void #t120 = this.{self::Test4::[]=}(#t118, #t119.{core::num::+}(1) as{TypeError} core::int*) in #t119;
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class Test5 extends core::Object {
   synthetic constructor •() → self::Test5*
@@ -124,12 +164,22 @@
     core::num* v4 = let final core::String* #t130 = "x" in let final core::num* #t131 = this.{self::Test5::[]}(#t130) in #t131.{core::num::==}(null) ?{core::num*} let final core::int* #t132 = self::getInt() in let final void #t133 = this.{self::Test5::[]=}(#t130, #t132) in #t132 : #t131;
     core::num* v5 = let final core::String* #t134 = "x" in let final core::num* #t135 = this.{self::Test5::[]}(#t134) in #t135.{core::num::==}(null) ?{core::num*} let final core::num* #t136 = self::getNum() in let final void #t137 = this.{self::Test5::[]=}(#t134, #t136) in #t136 : #t135;
     core::num* v6 = let final core::String* #t138 = "x" in let final core::num* #t139 = this.{self::Test5::[]}(#t138) in #t139.{core::num::==}(null) ?{core::num*} let final core::double* #t140 = self::getDouble() in let final void #t141 = this.{self::Test5::[]=}(#t138, #t140) in #t140 : #t139;
-    core::num* v7 = let final core::String* #t142 = "x" in let final core::num* #t143 = this.{self::Test5::[]}(#t142).{core::num::+}(self::getInt()) in let final void #t144 = this.{self::Test5::[]=}(#t142, #t143) in #t143;
-    core::num* v8 = let final core::String* #t145 = "x" in let final core::num* #t146 = this.{self::Test5::[]}(#t145).{core::num::+}(self::getNum()) in let final void #t147 = this.{self::Test5::[]=}(#t145, #t146) in #t146;
-    core::num* v9 = let final core::String* #t148 = "x" in let final core::num* #t149 = this.{self::Test5::[]}(#t148).{core::num::+}(self::getDouble()) in let final void #t150 = this.{self::Test5::[]=}(#t148, #t149) in #t149;
-    core::num* v10 = let final core::String* #t151 = "x" in let final core::num* #t152 = this.{self::Test5::[]}(#t151).{core::num::+}(1) in let final void #t153 = this.{self::Test5::[]=}(#t151, #t152) in #t152;
+    core::num* v7 = let final core::String* #t142 = "x" in let final core::num #t143 = this.{self::Test5::[]}(#t142).{core::num::+}(self::getInt()) in let final void #t144 = this.{self::Test5::[]=}(#t142, #t143) in #t143;
+    core::num* v8 = let final core::String* #t145 = "x" in let final core::num #t146 = this.{self::Test5::[]}(#t145).{core::num::+}(self::getNum()) in let final void #t147 = this.{self::Test5::[]=}(#t145, #t146) in #t146;
+    core::num* v9 = let final core::String* #t148 = "x" in let final core::num #t149 = this.{self::Test5::[]}(#t148).{core::num::+}(self::getDouble()) in let final void #t150 = this.{self::Test5::[]=}(#t148, #t149) in #t149;
+    core::num* v10 = let final core::String* #t151 = "x" in let final core::num #t152 = this.{self::Test5::[]}(#t151).{core::num::+}(1) in let final void #t153 = this.{self::Test5::[]=}(#t151, #t152) in #t152;
     core::num* v11 = let final core::String* #t154 = "x" in let final core::num* #t155 = this.{self::Test5::[]}(#t154) in let final void #t156 = this.{self::Test5::[]=}(#t154, #t155.{core::num::+}(1)) in #t155;
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class Test6 extends core::Object {
   synthetic constructor •() → self::Test6*
@@ -142,12 +192,22 @@
     core::double* v3 = let final core::String* #t160 = "x" in let final core::double* #t161 = self::getDouble() in let final void #t162 = this.{self::Test6::[]=}(#t160, #t161) in #t161;
     core::num* v5 = let final core::String* #t163 = "x" in let final core::num* #t164 = this.{self::Test6::[]}(#t163) in #t164.{core::num::==}(null) ?{core::num*} let final core::num* #t165 = self::getNum() as{TypeError} core::double* in let final void #t166 = this.{self::Test6::[]=}(#t163, #t165) in #t165 : #t164;
     core::num* v6 = let final core::String* #t167 = "x" in let final core::num* #t168 = this.{self::Test6::[]}(#t167) in #t168.{core::num::==}(null) ?{core::num*} let final core::double* #t169 = self::getDouble() in let final void #t170 = this.{self::Test6::[]=}(#t167, #t169) in #t169 : #t168;
-    core::num* v7 = let final core::String* #t171 = "x" in let final core::num* #t172 = this.{self::Test6::[]}(#t171).{core::num::+}(self::getInt()) as{TypeError} core::double* in let final void #t173 = this.{self::Test6::[]=}(#t171, #t172) in #t172;
-    core::num* v8 = let final core::String* #t174 = "x" in let final core::num* #t175 = this.{self::Test6::[]}(#t174).{core::num::+}(self::getNum()) as{TypeError} core::double* in let final void #t176 = this.{self::Test6::[]=}(#t174, #t175) in #t175;
-    core::num* v9 = let final core::String* #t177 = "x" in let final core::num* #t178 = this.{self::Test6::[]}(#t177).{core::num::+}(self::getDouble()) as{TypeError} core::double* in let final void #t179 = this.{self::Test6::[]=}(#t177, #t178) in #t178;
-    core::num* v10 = let final core::String* #t180 = "x" in let final core::num* #t181 = this.{self::Test6::[]}(#t180).{core::num::+}(1) as{TypeError} core::double* in let final void #t182 = this.{self::Test6::[]=}(#t180, #t181) in #t181;
+    core::num* v7 = let final core::String* #t171 = "x" in let final core::num #t172 = this.{self::Test6::[]}(#t171).{core::num::+}(self::getInt()) as{TypeError} core::double* in let final void #t173 = this.{self::Test6::[]=}(#t171, #t172) in #t172;
+    core::num* v8 = let final core::String* #t174 = "x" in let final core::num #t175 = this.{self::Test6::[]}(#t174).{core::num::+}(self::getNum()) as{TypeError} core::double* in let final void #t176 = this.{self::Test6::[]=}(#t174, #t175) in #t175;
+    core::num* v9 = let final core::String* #t177 = "x" in let final core::num #t178 = this.{self::Test6::[]}(#t177).{core::num::+}(self::getDouble()) as{TypeError} core::double* in let final void #t179 = this.{self::Test6::[]=}(#t177, #t178) in #t178;
+    core::num* v10 = let final core::String* #t180 = "x" in let final core::num #t181 = this.{self::Test6::[]}(#t180).{core::num::+}(1) as{TypeError} core::double* in let final void #t182 = this.{self::Test6::[]=}(#t180, #t181) in #t181;
     core::num* v11 = let final core::String* #t183 = "x" in let final core::num* #t184 = this.{self::Test6::[]}(#t183) in let final void #t185 = this.{self::Test6::[]=}(#t183, #t184.{core::num::+}(1) as{TypeError} core::double*) in #t184;
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class Test7 extends core::Object {
   synthetic constructor •() → self::Test7*
@@ -160,19 +220,29 @@
     core::num* v2 = let final core::String* #t189 = "x" in let final core::num* #t190 = self::getNum() as{TypeError} core::int* in let final void #t191 = this.{self::Test7::[]=}(#t189, #t190) in #t190;
     core::num* v4 = let final core::String* #t192 = "x" in let final core::double* #t193 = this.{self::Test7::[]}(#t192) in #t193.{core::num::==}(null) ?{core::num*} let final core::int* #t194 = self::getInt() in let final void #t195 = this.{self::Test7::[]=}(#t192, #t194) in #t194 : #t193;
     core::num* v5 = let final core::String* #t196 = "x" in let final core::double* #t197 = this.{self::Test7::[]}(#t196) in #t197.{core::num::==}(null) ?{core::num*} let final core::num* #t198 = self::getNum() as{TypeError} core::int* in let final void #t199 = this.{self::Test7::[]=}(#t196, #t198) in #t198 : #t197;
-    core::double* v7 = let final core::String* #t200 = "x" in let final core::double* #t201 = let final<BottomType> #t202 = invalid-expression "pkg/front_end/testcases/inference_new/infer_assign_to_index_this_upwards.dart:268:31: Error: A value of type 'double' can't be assigned to a variable of type 'int'.
+    core::double* v7 = let final core::String* #t200 = "x" in let final core::double #t201 = let final<BottomType> #t202 = invalid-expression "pkg/front_end/testcases/inference_new/infer_assign_to_index_this_upwards.dart:268:31: Error: A value of type 'double' can't be assigned to a variable of type 'int'.
         /*@target=double::+*/ += getInt();
                               ^" in this.{self::Test7::[]}(#t200).{core::double::+}(self::getInt()) as{TypeError} core::int* in let final void #t203 = this.{self::Test7::[]=}(#t200, #t201) in #t201;
-    core::double* v8 = let final core::String* #t204 = "x" in let final core::double* #t205 = let final<BottomType> #t206 = invalid-expression "pkg/front_end/testcases/inference_new/infer_assign_to_index_this_upwards.dart:272:31: Error: A value of type 'double' can't be assigned to a variable of type 'int'.
+    core::double* v8 = let final core::String* #t204 = "x" in let final core::double #t205 = let final<BottomType> #t206 = invalid-expression "pkg/front_end/testcases/inference_new/infer_assign_to_index_this_upwards.dart:272:31: Error: A value of type 'double' can't be assigned to a variable of type 'int'.
         /*@target=double::+*/ += getNum();
                               ^" in this.{self::Test7::[]}(#t204).{core::double::+}(self::getNum()) as{TypeError} core::int* in let final void #t207 = this.{self::Test7::[]=}(#t204, #t205) in #t205;
-    core::double* v10 = let final core::String* #t208 = "x" in let final core::double* #t209 = let final<BottomType> #t210 = invalid-expression "pkg/front_end/testcases/inference_new/infer_assign_to_index_this_upwards.dart:274:57: Error: A value of type 'double' can't be assigned to a variable of type 'int'.
+    core::double* v10 = let final core::String* #t208 = "x" in let final core::double #t209 = let final<BottomType> #t210 = invalid-expression "pkg/front_end/testcases/inference_new/infer_assign_to_index_this_upwards.dart:274:57: Error: A value of type 'double' can't be assigned to a variable of type 'int'.
     var /*@ type=double* */ v10 = /*@target=double::+*/ ++this
                                                         ^" in this.{self::Test7::[]}(#t208).{core::double::+}(1) as{TypeError} core::int* in let final void #t211 = this.{self::Test7::[]=}(#t208, #t209) in #t209;
     core::double* v11 = let final core::String* #t212 = "x" in let final core::double* #t213 = this.{self::Test7::[]}(#t212) in let final void #t214 = this.{self::Test7::[]=}(#t212, let final<BottomType> #t215 = invalid-expression "pkg/front_end/testcases/inference_new/infer_assign_to_index_this_upwards.dart:279:31: Error: A value of type 'double' can't be assigned to a variable of type 'int'.
         /*@target=double::+*/ ++;
                               ^" in #t213.{core::double::+}(1) as{TypeError} core::int*) in #t213;
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class Test8 extends core::Object {
   synthetic constructor •() → self::Test8*
@@ -187,12 +257,22 @@
     core::num* v4 = let final core::String* #t225 = "x" in let final core::double* #t226 = this.{self::Test8::[]}(#t225) in #t226.{core::num::==}(null) ?{core::num*} let final core::int* #t227 = self::getInt() in let final void #t228 = this.{self::Test8::[]=}(#t225, #t227) in #t227 : #t226;
     core::num* v5 = let final core::String* #t229 = "x" in let final core::double* #t230 = this.{self::Test8::[]}(#t229) in #t230.{core::num::==}(null) ?{core::num*} let final core::num* #t231 = self::getNum() in let final void #t232 = this.{self::Test8::[]=}(#t229, #t231) in #t231 : #t230;
     core::double* v6 = let final core::String* #t233 = "x" in let final core::double* #t234 = this.{self::Test8::[]}(#t233) in #t234.{core::num::==}(null) ?{core::double*} let final core::double* #t235 = self::getDouble() in let final void #t236 = this.{self::Test8::[]=}(#t233, #t235) in #t235 : #t234;
-    core::double* v7 = let final core::String* #t237 = "x" in let final core::double* #t238 = this.{self::Test8::[]}(#t237).{core::double::+}(self::getInt()) in let final void #t239 = this.{self::Test8::[]=}(#t237, #t238) in #t238;
-    core::double* v8 = let final core::String* #t240 = "x" in let final core::double* #t241 = this.{self::Test8::[]}(#t240).{core::double::+}(self::getNum()) in let final void #t242 = this.{self::Test8::[]=}(#t240, #t241) in #t241;
-    core::double* v9 = let final core::String* #t243 = "x" in let final core::double* #t244 = this.{self::Test8::[]}(#t243).{core::double::+}(self::getDouble()) in let final void #t245 = this.{self::Test8::[]=}(#t243, #t244) in #t244;
-    core::double* v10 = let final core::String* #t246 = "x" in let final core::double* #t247 = this.{self::Test8::[]}(#t246).{core::double::+}(1) in let final void #t248 = this.{self::Test8::[]=}(#t246, #t247) in #t247;
+    core::double* v7 = let final core::String* #t237 = "x" in let final core::double #t238 = this.{self::Test8::[]}(#t237).{core::double::+}(self::getInt()) in let final void #t239 = this.{self::Test8::[]=}(#t237, #t238) in #t238;
+    core::double* v8 = let final core::String* #t240 = "x" in let final core::double #t241 = this.{self::Test8::[]}(#t240).{core::double::+}(self::getNum()) in let final void #t242 = this.{self::Test8::[]=}(#t240, #t241) in #t241;
+    core::double* v9 = let final core::String* #t243 = "x" in let final core::double #t244 = this.{self::Test8::[]}(#t243).{core::double::+}(self::getDouble()) in let final void #t245 = this.{self::Test8::[]=}(#t243, #t244) in #t244;
+    core::double* v10 = let final core::String* #t246 = "x" in let final core::double #t247 = this.{self::Test8::[]}(#t246).{core::double::+}(1) in let final void #t248 = this.{self::Test8::[]=}(#t246, #t247) in #t247;
     core::double* v11 = let final core::String* #t249 = "x" in let final core::double* #t250 = this.{self::Test8::[]}(#t249) in let final void #t251 = this.{self::Test8::[]=}(#t249, #t250.{core::double::+}(1)) in #t250;
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class Test9 extends core::Object {
   synthetic constructor •() → self::Test9*
@@ -205,12 +285,22 @@
     core::double* v3 = let final core::String* #t255 = "x" in let final core::double* #t256 = self::getDouble() in let final void #t257 = this.{self::Test9::[]=}(#t255, #t256) in #t256;
     core::num* v5 = let final core::String* #t258 = "x" in let final core::double* #t259 = this.{self::Test9::[]}(#t258) in #t259.{core::num::==}(null) ?{core::num*} let final core::num* #t260 = self::getNum() as{TypeError} core::double* in let final void #t261 = this.{self::Test9::[]=}(#t258, #t260) in #t260 : #t259;
     core::double* v6 = let final core::String* #t262 = "x" in let final core::double* #t263 = this.{self::Test9::[]}(#t262) in #t263.{core::num::==}(null) ?{core::double*} let final core::double* #t264 = self::getDouble() in let final void #t265 = this.{self::Test9::[]=}(#t262, #t264) in #t264 : #t263;
-    core::double* v7 = let final core::String* #t266 = "x" in let final core::double* #t267 = this.{self::Test9::[]}(#t266).{core::double::+}(self::getInt()) in let final void #t268 = this.{self::Test9::[]=}(#t266, #t267) in #t267;
-    core::double* v8 = let final core::String* #t269 = "x" in let final core::double* #t270 = this.{self::Test9::[]}(#t269).{core::double::+}(self::getNum()) in let final void #t271 = this.{self::Test9::[]=}(#t269, #t270) in #t270;
-    core::double* v9 = let final core::String* #t272 = "x" in let final core::double* #t273 = this.{self::Test9::[]}(#t272).{core::double::+}(self::getDouble()) in let final void #t274 = this.{self::Test9::[]=}(#t272, #t273) in #t273;
-    core::double* v10 = let final core::String* #t275 = "x" in let final core::double* #t276 = this.{self::Test9::[]}(#t275).{core::double::+}(1) in let final void #t277 = this.{self::Test9::[]=}(#t275, #t276) in #t276;
+    core::double* v7 = let final core::String* #t266 = "x" in let final core::double #t267 = this.{self::Test9::[]}(#t266).{core::double::+}(self::getInt()) in let final void #t268 = this.{self::Test9::[]=}(#t266, #t267) in #t267;
+    core::double* v8 = let final core::String* #t269 = "x" in let final core::double #t270 = this.{self::Test9::[]}(#t269).{core::double::+}(self::getNum()) in let final void #t271 = this.{self::Test9::[]=}(#t269, #t270) in #t270;
+    core::double* v9 = let final core::String* #t272 = "x" in let final core::double #t273 = this.{self::Test9::[]}(#t272).{core::double::+}(self::getDouble()) in let final void #t274 = this.{self::Test9::[]=}(#t272, #t273) in #t273;
+    core::double* v10 = let final core::String* #t275 = "x" in let final core::double #t276 = this.{self::Test9::[]}(#t275).{core::double::+}(1) in let final void #t277 = this.{self::Test9::[]=}(#t275, #t276) in #t276;
     core::double* v11 = let final core::String* #t278 = "x" in let final core::double* #t279 = this.{self::Test9::[]}(#t278) in let final void #t280 = this.{self::Test9::[]=}(#t278, #t279.{core::double::+}(1)) in #t279;
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method getInt() → core::int*
   return 0;
diff --git a/pkg/front_end/testcases/inference_new/infer_assign_to_index_upwards.dart.outline.expect b/pkg/front_end/testcases/inference_new/infer_assign_to_index_upwards.dart.outline.expect
index 8b96d90..69558af 100644
--- a/pkg/front_end/testcases/inference_new/infer_assign_to_index_upwards.dart.outline.expect
+++ b/pkg/front_end/testcases/inference_new/infer_assign_to_index_upwards.dart.outline.expect
@@ -7,6 +7,16 @@
     ;
   abstract operator [](core::String* s) → self::Test::T*;
   abstract operator []=(core::String* s, generic-covariant-impl self::Test::U* v) → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method getInt() → core::int*
   ;
diff --git a/pkg/front_end/testcases/inference_new/infer_assign_to_index_upwards.dart.strong.expect b/pkg/front_end/testcases/inference_new/infer_assign_to_index_upwards.dart.strong.expect
index 7eb4b1c..b9143e7 100644
--- a/pkg/front_end/testcases/inference_new/infer_assign_to_index_upwards.dart.strong.expect
+++ b/pkg/front_end/testcases/inference_new/infer_assign_to_index_upwards.dart.strong.expect
@@ -39,6 +39,16 @@
     ;
   abstract operator [](core::String* s) → self::Test::T*;
   abstract operator []=(core::String* s, generic-covariant-impl self::Test::U* v) → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method getInt() → core::int*
   return 0;
@@ -91,9 +101,9 @@
   core::num* v2 = let final self::Test<core::num*, core::int*>* #t127 = t in let final core::String* #t128 = "x" in let final core::num* #t129 = self::getNum() as{TypeError} core::int* in let final void #t130 = #t127.{self::Test::[]=}(#t128, #t129) in #t129;
   core::num* v4 = let final self::Test<core::num*, core::int*>* #t131 = t in let final core::String* #t132 = "x" in let final core::num* #t133 = #t131.{self::Test::[]}(#t132) in #t133.{core::num::==}(null) ?{core::num*} let final core::int* #t134 = self::getInt() in let final void #t135 = #t131.{self::Test::[]=}(#t132, #t134) in #t134 : #t133;
   core::num* v5 = let final self::Test<core::num*, core::int*>* #t136 = t in let final core::String* #t137 = "x" in let final core::num* #t138 = #t136.{self::Test::[]}(#t137) in #t138.{core::num::==}(null) ?{core::num*} let final core::num* #t139 = self::getNum() as{TypeError} core::int* in let final void #t140 = #t136.{self::Test::[]=}(#t137, #t139) in #t139 : #t138;
-  core::num* v7 = let final self::Test<core::num*, core::int*>* #t141 = t in let final core::String* #t142 = "x" in let final core::num* #t143 = #t141.{self::Test::[]}(#t142).{core::num::+}(self::getInt()) as{TypeError} core::int* in let final void #t144 = #t141.{self::Test::[]=}(#t142, #t143) in #t143;
-  core::num* v8 = let final self::Test<core::num*, core::int*>* #t145 = t in let final core::String* #t146 = "x" in let final core::num* #t147 = #t145.{self::Test::[]}(#t146).{core::num::+}(self::getNum()) as{TypeError} core::int* in let final void #t148 = #t145.{self::Test::[]=}(#t146, #t147) in #t147;
-  core::num* v10 = let final self::Test<core::num*, core::int*>* #t149 = t in let final core::String* #t150 = "x" in let final core::num* #t151 = #t149.{self::Test::[]}(#t150).{core::num::+}(1) as{TypeError} core::int* in let final void #t152 = #t149.{self::Test::[]=}(#t150, #t151) in #t151;
+  core::num* v7 = let final self::Test<core::num*, core::int*>* #t141 = t in let final core::String* #t142 = "x" in let final core::num #t143 = #t141.{self::Test::[]}(#t142).{core::num::+}(self::getInt()) as{TypeError} core::int* in let final void #t144 = #t141.{self::Test::[]=}(#t142, #t143) in #t143;
+  core::num* v8 = let final self::Test<core::num*, core::int*>* #t145 = t in let final core::String* #t146 = "x" in let final core::num #t147 = #t145.{self::Test::[]}(#t146).{core::num::+}(self::getNum()) as{TypeError} core::int* in let final void #t148 = #t145.{self::Test::[]=}(#t146, #t147) in #t147;
+  core::num* v10 = let final self::Test<core::num*, core::int*>* #t149 = t in let final core::String* #t150 = "x" in let final core::num #t151 = #t149.{self::Test::[]}(#t150).{core::num::+}(1) as{TypeError} core::int* in let final void #t152 = #t149.{self::Test::[]=}(#t150, #t151) in #t151;
   core::num* v11 = let final self::Test<core::num*, core::int*>* #t153 = t in let final core::String* #t154 = "x" in let final core::num* #t155 = #t153.{self::Test::[]}(#t154) in let final void #t156 = #t153.{self::Test::[]=}(#t154, #t155.{core::num::+}(1) as{TypeError} core::int*) in #t155;
 }
 static method test5(self::Test<core::num*, core::num*>* t) → void {
@@ -103,10 +113,10 @@
   core::num* v4 = let final self::Test<core::num*, core::num*>* #t169 = t in let final core::String* #t170 = "x" in let final core::num* #t171 = #t169.{self::Test::[]}(#t170) in #t171.{core::num::==}(null) ?{core::num*} let final core::int* #t172 = self::getInt() in let final void #t173 = #t169.{self::Test::[]=}(#t170, #t172) in #t172 : #t171;
   core::num* v5 = let final self::Test<core::num*, core::num*>* #t174 = t in let final core::String* #t175 = "x" in let final core::num* #t176 = #t174.{self::Test::[]}(#t175) in #t176.{core::num::==}(null) ?{core::num*} let final core::num* #t177 = self::getNum() in let final void #t178 = #t174.{self::Test::[]=}(#t175, #t177) in #t177 : #t176;
   core::num* v6 = let final self::Test<core::num*, core::num*>* #t179 = t in let final core::String* #t180 = "x" in let final core::num* #t181 = #t179.{self::Test::[]}(#t180) in #t181.{core::num::==}(null) ?{core::num*} let final core::double* #t182 = self::getDouble() in let final void #t183 = #t179.{self::Test::[]=}(#t180, #t182) in #t182 : #t181;
-  core::num* v7 = let final self::Test<core::num*, core::num*>* #t184 = t in let final core::String* #t185 = "x" in let final core::num* #t186 = #t184.{self::Test::[]}(#t185).{core::num::+}(self::getInt()) in let final void #t187 = #t184.{self::Test::[]=}(#t185, #t186) in #t186;
-  core::num* v8 = let final self::Test<core::num*, core::num*>* #t188 = t in let final core::String* #t189 = "x" in let final core::num* #t190 = #t188.{self::Test::[]}(#t189).{core::num::+}(self::getNum()) in let final void #t191 = #t188.{self::Test::[]=}(#t189, #t190) in #t190;
-  core::num* v9 = let final self::Test<core::num*, core::num*>* #t192 = t in let final core::String* #t193 = "x" in let final core::num* #t194 = #t192.{self::Test::[]}(#t193).{core::num::+}(self::getDouble()) in let final void #t195 = #t192.{self::Test::[]=}(#t193, #t194) in #t194;
-  core::num* v10 = let final self::Test<core::num*, core::num*>* #t196 = t in let final core::String* #t197 = "x" in let final core::num* #t198 = #t196.{self::Test::[]}(#t197).{core::num::+}(1) in let final void #t199 = #t196.{self::Test::[]=}(#t197, #t198) in #t198;
+  core::num* v7 = let final self::Test<core::num*, core::num*>* #t184 = t in let final core::String* #t185 = "x" in let final core::num #t186 = #t184.{self::Test::[]}(#t185).{core::num::+}(self::getInt()) in let final void #t187 = #t184.{self::Test::[]=}(#t185, #t186) in #t186;
+  core::num* v8 = let final self::Test<core::num*, core::num*>* #t188 = t in let final core::String* #t189 = "x" in let final core::num #t190 = #t188.{self::Test::[]}(#t189).{core::num::+}(self::getNum()) in let final void #t191 = #t188.{self::Test::[]=}(#t189, #t190) in #t190;
+  core::num* v9 = let final self::Test<core::num*, core::num*>* #t192 = t in let final core::String* #t193 = "x" in let final core::num #t194 = #t192.{self::Test::[]}(#t193).{core::num::+}(self::getDouble()) in let final void #t195 = #t192.{self::Test::[]=}(#t193, #t194) in #t194;
+  core::num* v10 = let final self::Test<core::num*, core::num*>* #t196 = t in let final core::String* #t197 = "x" in let final core::num #t198 = #t196.{self::Test::[]}(#t197).{core::num::+}(1) in let final void #t199 = #t196.{self::Test::[]=}(#t197, #t198) in #t198;
   core::num* v11 = let final self::Test<core::num*, core::num*>* #t200 = t in let final core::String* #t201 = "x" in let final core::num* #t202 = #t200.{self::Test::[]}(#t201) in let final void #t203 = #t200.{self::Test::[]=}(#t201, #t202.{core::num::+}(1)) in #t202;
 }
 static method test6(self::Test<core::num*, core::double*>* t) → void {
@@ -114,10 +124,10 @@
   core::double* v3 = let final self::Test<core::num*, core::double*>* #t208 = t in let final core::String* #t209 = "x" in let final core::double* #t210 = self::getDouble() in let final void #t211 = #t208.{self::Test::[]=}(#t209, #t210) in #t210;
   core::num* v5 = let final self::Test<core::num*, core::double*>* #t212 = t in let final core::String* #t213 = "x" in let final core::num* #t214 = #t212.{self::Test::[]}(#t213) in #t214.{core::num::==}(null) ?{core::num*} let final core::num* #t215 = self::getNum() as{TypeError} core::double* in let final void #t216 = #t212.{self::Test::[]=}(#t213, #t215) in #t215 : #t214;
   core::num* v6 = let final self::Test<core::num*, core::double*>* #t217 = t in let final core::String* #t218 = "x" in let final core::num* #t219 = #t217.{self::Test::[]}(#t218) in #t219.{core::num::==}(null) ?{core::num*} let final core::double* #t220 = self::getDouble() in let final void #t221 = #t217.{self::Test::[]=}(#t218, #t220) in #t220 : #t219;
-  core::num* v7 = let final self::Test<core::num*, core::double*>* #t222 = t in let final core::String* #t223 = "x" in let final core::num* #t224 = #t222.{self::Test::[]}(#t223).{core::num::+}(self::getInt()) as{TypeError} core::double* in let final void #t225 = #t222.{self::Test::[]=}(#t223, #t224) in #t224;
-  core::num* v8 = let final self::Test<core::num*, core::double*>* #t226 = t in let final core::String* #t227 = "x" in let final core::num* #t228 = #t226.{self::Test::[]}(#t227).{core::num::+}(self::getNum()) as{TypeError} core::double* in let final void #t229 = #t226.{self::Test::[]=}(#t227, #t228) in #t228;
-  core::num* v9 = let final self::Test<core::num*, core::double*>* #t230 = t in let final core::String* #t231 = "x" in let final core::num* #t232 = #t230.{self::Test::[]}(#t231).{core::num::+}(self::getDouble()) as{TypeError} core::double* in let final void #t233 = #t230.{self::Test::[]=}(#t231, #t232) in #t232;
-  core::num* v10 = let final self::Test<core::num*, core::double*>* #t234 = t in let final core::String* #t235 = "x" in let final core::num* #t236 = #t234.{self::Test::[]}(#t235).{core::num::+}(1) as{TypeError} core::double* in let final void #t237 = #t234.{self::Test::[]=}(#t235, #t236) in #t236;
+  core::num* v7 = let final self::Test<core::num*, core::double*>* #t222 = t in let final core::String* #t223 = "x" in let final core::num #t224 = #t222.{self::Test::[]}(#t223).{core::num::+}(self::getInt()) as{TypeError} core::double* in let final void #t225 = #t222.{self::Test::[]=}(#t223, #t224) in #t224;
+  core::num* v8 = let final self::Test<core::num*, core::double*>* #t226 = t in let final core::String* #t227 = "x" in let final core::num #t228 = #t226.{self::Test::[]}(#t227).{core::num::+}(self::getNum()) as{TypeError} core::double* in let final void #t229 = #t226.{self::Test::[]=}(#t227, #t228) in #t228;
+  core::num* v9 = let final self::Test<core::num*, core::double*>* #t230 = t in let final core::String* #t231 = "x" in let final core::num #t232 = #t230.{self::Test::[]}(#t231).{core::num::+}(self::getDouble()) as{TypeError} core::double* in let final void #t233 = #t230.{self::Test::[]=}(#t231, #t232) in #t232;
+  core::num* v10 = let final self::Test<core::num*, core::double*>* #t234 = t in let final core::String* #t235 = "x" in let final core::num #t236 = #t234.{self::Test::[]}(#t235).{core::num::+}(1) as{TypeError} core::double* in let final void #t237 = #t234.{self::Test::[]=}(#t235, #t236) in #t236;
   core::num* v11 = let final self::Test<core::num*, core::double*>* #t238 = t in let final core::String* #t239 = "x" in let final core::num* #t240 = #t238.{self::Test::[]}(#t239) in let final void #t241 = #t238.{self::Test::[]=}(#t239, #t240.{core::num::+}(1) as{TypeError} core::double*) in #t240;
 }
 static method test7(self::Test<core::double*, core::int*>* t) → void {
@@ -125,13 +135,13 @@
   core::num* v2 = let final self::Test<core::double*, core::int*>* #t246 = t in let final core::String* #t247 = "x" in let final core::num* #t248 = self::getNum() as{TypeError} core::int* in let final void #t249 = #t246.{self::Test::[]=}(#t247, #t248) in #t248;
   core::num* v4 = let final self::Test<core::double*, core::int*>* #t250 = t in let final core::String* #t251 = "x" in let final core::double* #t252 = #t250.{self::Test::[]}(#t251) in #t252.{core::num::==}(null) ?{core::num*} let final core::int* #t253 = self::getInt() in let final void #t254 = #t250.{self::Test::[]=}(#t251, #t253) in #t253 : #t252;
   core::num* v5 = let final self::Test<core::double*, core::int*>* #t255 = t in let final core::String* #t256 = "x" in let final core::double* #t257 = #t255.{self::Test::[]}(#t256) in #t257.{core::num::==}(null) ?{core::num*} let final core::num* #t258 = self::getNum() as{TypeError} core::int* in let final void #t259 = #t255.{self::Test::[]=}(#t256, #t258) in #t258 : #t257;
-  core::double* v7 = let final self::Test<core::double*, core::int*>* #t260 = t in let final core::String* #t261 = "x" in let final core::double* #t262 = let final<BottomType> #t263 = invalid-expression "pkg/front_end/testcases/inference_new/infer_assign_to_index_upwards.dart:211:36: Error: A value of type 'double' can't be assigned to a variable of type 'int'.
+  core::double* v7 = let final self::Test<core::double*, core::int*>* #t260 = t in let final core::String* #t261 = "x" in let final core::double #t262 = let final<BottomType> #t263 = invalid-expression "pkg/front_end/testcases/inference_new/infer_assign_to_index_upwards.dart:211:36: Error: A value of type 'double' can't be assigned to a variable of type 'int'.
       'x'] /*@ target=double::+ */ += getInt();
                                    ^" in #t260.{self::Test::[]}(#t261).{core::double::+}(self::getInt()) as{TypeError} core::int* in let final void #t264 = #t260.{self::Test::[]=}(#t261, #t262) in #t262;
-  core::double* v8 = let final self::Test<core::double*, core::int*>* #t265 = t in let final core::String* #t266 = "x" in let final core::double* #t267 = let final<BottomType> #t268 = invalid-expression "pkg/front_end/testcases/inference_new/infer_assign_to_index_upwards.dart:214:36: Error: A value of type 'double' can't be assigned to a variable of type 'int'.
+  core::double* v8 = let final self::Test<core::double*, core::int*>* #t265 = t in let final core::String* #t266 = "x" in let final core::double #t267 = let final<BottomType> #t268 = invalid-expression "pkg/front_end/testcases/inference_new/infer_assign_to_index_upwards.dart:214:36: Error: A value of type 'double' can't be assigned to a variable of type 'int'.
       'x'] /*@ target=double::+ */ += getNum();
                                    ^" in #t265.{self::Test::[]}(#t266).{core::double::+}(self::getNum()) as{TypeError} core::int* in let final void #t269 = #t265.{self::Test::[]=}(#t266, #t267) in #t267;
-  core::double* v10 = let final self::Test<core::double*, core::int*>* #t270 = t in let final core::String* #t271 = "x" in let final core::double* #t272 = let final<BottomType> #t273 = invalid-expression "pkg/front_end/testcases/inference_new/infer_assign_to_index_upwards.dart:217:31: Error: A value of type 'double' can't be assigned to a variable of type 'int'.
+  core::double* v10 = let final self::Test<core::double*, core::int*>* #t270 = t in let final core::String* #t271 = "x" in let final core::double #t272 = let final<BottomType> #t273 = invalid-expression "pkg/front_end/testcases/inference_new/infer_assign_to_index_upwards.dart:217:31: Error: A value of type 'double' can't be assigned to a variable of type 'int'.
       /*@ target=double::+ */ ++t
                               ^" in #t270.{self::Test::[]}(#t271).{core::double::+}(1) as{TypeError} core::int* in let final void #t274 = #t270.{self::Test::[]=}(#t271, #t272) in #t272;
   core::double* v11 = let final self::Test<core::double*, core::int*>* #t275 = t in let final core::String* #t276 = "x" in let final core::double* #t277 = #t275.{self::Test::[]}(#t276) in let final void #t278 = #t275.{self::Test::[]=}(#t276, let final<BottomType> #t279 = invalid-expression "pkg/front_end/testcases/inference_new/infer_assign_to_index_upwards.dart:221:36: Error: A value of type 'double' can't be assigned to a variable of type 'int'.
@@ -145,10 +155,10 @@
   core::num* v4 = let final self::Test<core::double*, core::num*>* #t292 = t in let final core::String* #t293 = "x" in let final core::double* #t294 = #t292.{self::Test::[]}(#t293) in #t294.{core::num::==}(null) ?{core::num*} let final core::int* #t295 = self::getInt() in let final void #t296 = #t292.{self::Test::[]=}(#t293, #t295) in #t295 : #t294;
   core::num* v5 = let final self::Test<core::double*, core::num*>* #t297 = t in let final core::String* #t298 = "x" in let final core::double* #t299 = #t297.{self::Test::[]}(#t298) in #t299.{core::num::==}(null) ?{core::num*} let final core::num* #t300 = self::getNum() in let final void #t301 = #t297.{self::Test::[]=}(#t298, #t300) in #t300 : #t299;
   core::double* v6 = let final self::Test<core::double*, core::num*>* #t302 = t in let final core::String* #t303 = "x" in let final core::double* #t304 = #t302.{self::Test::[]}(#t303) in #t304.{core::num::==}(null) ?{core::double*} let final core::double* #t305 = self::getDouble() in let final void #t306 = #t302.{self::Test::[]=}(#t303, #t305) in #t305 : #t304;
-  core::double* v7 = let final self::Test<core::double*, core::num*>* #t307 = t in let final core::String* #t308 = "x" in let final core::double* #t309 = #t307.{self::Test::[]}(#t308).{core::double::+}(self::getInt()) in let final void #t310 = #t307.{self::Test::[]=}(#t308, #t309) in #t309;
-  core::double* v8 = let final self::Test<core::double*, core::num*>* #t311 = t in let final core::String* #t312 = "x" in let final core::double* #t313 = #t311.{self::Test::[]}(#t312).{core::double::+}(self::getNum()) in let final void #t314 = #t311.{self::Test::[]=}(#t312, #t313) in #t313;
-  core::double* v9 = let final self::Test<core::double*, core::num*>* #t315 = t in let final core::String* #t316 = "x" in let final core::double* #t317 = #t315.{self::Test::[]}(#t316).{core::double::+}(self::getDouble()) in let final void #t318 = #t315.{self::Test::[]=}(#t316, #t317) in #t317;
-  core::double* v10 = let final self::Test<core::double*, core::num*>* #t319 = t in let final core::String* #t320 = "x" in let final core::double* #t321 = #t319.{self::Test::[]}(#t320).{core::double::+}(1) in let final void #t322 = #t319.{self::Test::[]=}(#t320, #t321) in #t321;
+  core::double* v7 = let final self::Test<core::double*, core::num*>* #t307 = t in let final core::String* #t308 = "x" in let final core::double #t309 = #t307.{self::Test::[]}(#t308).{core::double::+}(self::getInt()) in let final void #t310 = #t307.{self::Test::[]=}(#t308, #t309) in #t309;
+  core::double* v8 = let final self::Test<core::double*, core::num*>* #t311 = t in let final core::String* #t312 = "x" in let final core::double #t313 = #t311.{self::Test::[]}(#t312).{core::double::+}(self::getNum()) in let final void #t314 = #t311.{self::Test::[]=}(#t312, #t313) in #t313;
+  core::double* v9 = let final self::Test<core::double*, core::num*>* #t315 = t in let final core::String* #t316 = "x" in let final core::double #t317 = #t315.{self::Test::[]}(#t316).{core::double::+}(self::getDouble()) in let final void #t318 = #t315.{self::Test::[]=}(#t316, #t317) in #t317;
+  core::double* v10 = let final self::Test<core::double*, core::num*>* #t319 = t in let final core::String* #t320 = "x" in let final core::double #t321 = #t319.{self::Test::[]}(#t320).{core::double::+}(1) in let final void #t322 = #t319.{self::Test::[]=}(#t320, #t321) in #t321;
   core::double* v11 = let final self::Test<core::double*, core::num*>* #t323 = t in let final core::String* #t324 = "x" in let final core::double* #t325 = #t323.{self::Test::[]}(#t324) in let final void #t326 = #t323.{self::Test::[]=}(#t324, #t325.{core::double::+}(1)) in #t325;
 }
 static method test9(self::Test<core::double*, core::double*>* t) → void {
@@ -156,10 +166,10 @@
   core::double* v3 = let final self::Test<core::double*, core::double*>* #t331 = t in let final core::String* #t332 = "x" in let final core::double* #t333 = self::getDouble() in let final void #t334 = #t331.{self::Test::[]=}(#t332, #t333) in #t333;
   core::num* v5 = let final self::Test<core::double*, core::double*>* #t335 = t in let final core::String* #t336 = "x" in let final core::double* #t337 = #t335.{self::Test::[]}(#t336) in #t337.{core::num::==}(null) ?{core::num*} let final core::num* #t338 = self::getNum() as{TypeError} core::double* in let final void #t339 = #t335.{self::Test::[]=}(#t336, #t338) in #t338 : #t337;
   core::double* v6 = let final self::Test<core::double*, core::double*>* #t340 = t in let final core::String* #t341 = "x" in let final core::double* #t342 = #t340.{self::Test::[]}(#t341) in #t342.{core::num::==}(null) ?{core::double*} let final core::double* #t343 = self::getDouble() in let final void #t344 = #t340.{self::Test::[]=}(#t341, #t343) in #t343 : #t342;
-  core::double* v7 = let final self::Test<core::double*, core::double*>* #t345 = t in let final core::String* #t346 = "x" in let final core::double* #t347 = #t345.{self::Test::[]}(#t346).{core::double::+}(self::getInt()) in let final void #t348 = #t345.{self::Test::[]=}(#t346, #t347) in #t347;
-  core::double* v8 = let final self::Test<core::double*, core::double*>* #t349 = t in let final core::String* #t350 = "x" in let final core::double* #t351 = #t349.{self::Test::[]}(#t350).{core::double::+}(self::getNum()) in let final void #t352 = #t349.{self::Test::[]=}(#t350, #t351) in #t351;
-  core::double* v9 = let final self::Test<core::double*, core::double*>* #t353 = t in let final core::String* #t354 = "x" in let final core::double* #t355 = #t353.{self::Test::[]}(#t354).{core::double::+}(self::getDouble()) in let final void #t356 = #t353.{self::Test::[]=}(#t354, #t355) in #t355;
-  core::double* v10 = let final self::Test<core::double*, core::double*>* #t357 = t in let final core::String* #t358 = "x" in let final core::double* #t359 = #t357.{self::Test::[]}(#t358).{core::double::+}(1) in let final void #t360 = #t357.{self::Test::[]=}(#t358, #t359) in #t359;
+  core::double* v7 = let final self::Test<core::double*, core::double*>* #t345 = t in let final core::String* #t346 = "x" in let final core::double #t347 = #t345.{self::Test::[]}(#t346).{core::double::+}(self::getInt()) in let final void #t348 = #t345.{self::Test::[]=}(#t346, #t347) in #t347;
+  core::double* v8 = let final self::Test<core::double*, core::double*>* #t349 = t in let final core::String* #t350 = "x" in let final core::double #t351 = #t349.{self::Test::[]}(#t350).{core::double::+}(self::getNum()) in let final void #t352 = #t349.{self::Test::[]=}(#t350, #t351) in #t351;
+  core::double* v9 = let final self::Test<core::double*, core::double*>* #t353 = t in let final core::String* #t354 = "x" in let final core::double #t355 = #t353.{self::Test::[]}(#t354).{core::double::+}(self::getDouble()) in let final void #t356 = #t353.{self::Test::[]=}(#t354, #t355) in #t355;
+  core::double* v10 = let final self::Test<core::double*, core::double*>* #t357 = t in let final core::String* #t358 = "x" in let final core::double #t359 = #t357.{self::Test::[]}(#t358).{core::double::+}(1) in let final void #t360 = #t357.{self::Test::[]=}(#t358, #t359) in #t359;
   core::double* v11 = let final self::Test<core::double*, core::double*>* #t361 = t in let final core::String* #t362 = "x" in let final core::double* #t363 = #t361.{self::Test::[]}(#t362) in let final void #t364 = #t361.{self::Test::[]=}(#t362, #t363.{core::double::+}(1)) in #t363;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference_new/infer_assign_to_local.dart b/pkg/front_end/testcases/inference_new/infer_assign_to_local.dart
index ddc5083..79c53e3 100644
--- a/pkg/front_end/testcases/inference_new/infer_assign_to_local.dart
+++ b/pkg/front_end/testcases/inference_new/infer_assign_to_local.dart
@@ -22,7 +22,7 @@
   B local;
   local = /*@ typeArgs=B* */ f();
 
-  local /*@ target=Object::== */ ??= /*@ typeArgs=B* */ f();
+  local /*@target=A::==*/ ??= /*@ typeArgs=B* */ f();
 
   local /*@ target=B::+ */ += /*@ typeArgs=C* */ f();
 
@@ -37,7 +37,7 @@
   var /*@ type=B* */ v1 = local = /*@ typeArgs=B* */ f();
 
   var /*@ type=B* */ v2 =
-      local /*@ target=Object::== */ ??= /*@ typeArgs=B* */ f();
+      local /*@target=A::==*/ ??= /*@ typeArgs=B* */ f();
 
   var /*@ type=A* */ v3 = local
       /*@ target=B::+ */ += /*@ typeArgs=C* */ f();
diff --git a/pkg/front_end/testcases/inference_new/infer_assign_to_local.dart.outline.expect b/pkg/front_end/testcases/inference_new/infer_assign_to_local.dart.outline.expect
index 228191e..7b504d4 100644
--- a/pkg/front_end/testcases/inference_new/infer_assign_to_local.dart.outline.expect
+++ b/pkg/front_end/testcases/inference_new/infer_assign_to_local.dart.outline.expect
@@ -5,6 +5,16 @@
 class A extends core::Object {
   synthetic constructor •() → self::A*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A {
   synthetic constructor •() → self::B*
diff --git a/pkg/front_end/testcases/inference_new/infer_assign_to_local.dart.strong.expect b/pkg/front_end/testcases/inference_new/infer_assign_to_local.dart.strong.expect
index 35c6164..79f4142 100644
--- a/pkg/front_end/testcases/inference_new/infer_assign_to_local.dart.strong.expect
+++ b/pkg/front_end/testcases/inference_new/infer_assign_to_local.dart.strong.expect
@@ -6,6 +6,16 @@
   synthetic constructor •() → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A {
   synthetic constructor •() → self::B*
@@ -30,14 +40,14 @@
 static method test() → void {
   self::B* local;
   local = self::f<self::B*>();
-  local.{core::Object::==}(null) ?{self::B*} local = self::f<self::B*>() : null;
+  local.{self::A::==}(null) ?{self::B*} local = self::f<self::B*>() : null;
   local = local.{self::B::+}(self::f<self::C*>()) as{TypeError} self::B*;
   local = local.{self::B::*}(self::f<self::B*>());
   local = local.{self::B::&}(self::f<self::A*>());
   local = local.{self::B::-}(1);
   local = local.{self::B::-}(1);
   self::B* v1 = local = self::f<self::B*>();
-  self::B* v2 = let final self::B* #t1 = local in #t1.{core::Object::==}(null) ?{self::B*} local = self::f<self::B*>() : #t1;
+  self::B* v2 = let final self::B* #t1 = local in #t1.{self::A::==}(null) ?{self::B*} local = self::f<self::B*>() : #t1;
   self::A* v3 = local = local.{self::B::+}(self::f<self::C*>()) as{TypeError} self::B*;
   self::B* v4 = local = local.{self::B::*}(self::f<self::B*>());
   self::C* v5 = local = local.{self::B::&}(self::f<self::A*>());
diff --git a/pkg/front_end/testcases/inference_new/infer_assign_to_local.dart.strong.transformed.expect b/pkg/front_end/testcases/inference_new/infer_assign_to_local.dart.strong.transformed.expect
index 35c6164..79f4142 100644
--- a/pkg/front_end/testcases/inference_new/infer_assign_to_local.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference_new/infer_assign_to_local.dart.strong.transformed.expect
@@ -6,6 +6,16 @@
   synthetic constructor •() → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A {
   synthetic constructor •() → self::B*
@@ -30,14 +40,14 @@
 static method test() → void {
   self::B* local;
   local = self::f<self::B*>();
-  local.{core::Object::==}(null) ?{self::B*} local = self::f<self::B*>() : null;
+  local.{self::A::==}(null) ?{self::B*} local = self::f<self::B*>() : null;
   local = local.{self::B::+}(self::f<self::C*>()) as{TypeError} self::B*;
   local = local.{self::B::*}(self::f<self::B*>());
   local = local.{self::B::&}(self::f<self::A*>());
   local = local.{self::B::-}(1);
   local = local.{self::B::-}(1);
   self::B* v1 = local = self::f<self::B*>();
-  self::B* v2 = let final self::B* #t1 = local in #t1.{core::Object::==}(null) ?{self::B*} local = self::f<self::B*>() : #t1;
+  self::B* v2 = let final self::B* #t1 = local in #t1.{self::A::==}(null) ?{self::B*} local = self::f<self::B*>() : #t1;
   self::A* v3 = local = local.{self::B::+}(self::f<self::C*>()) as{TypeError} self::B*;
   self::B* v4 = local = local.{self::B::*}(self::f<self::B*>());
   self::C* v5 = local = local.{self::B::&}(self::f<self::A*>());
diff --git a/pkg/front_end/testcases/inference_new/infer_assign_to_property.dart.outline.expect b/pkg/front_end/testcases/inference_new/infer_assign_to_property.dart.outline.expect
index e5e9410..45cc70d 100644
--- a/pkg/front_end/testcases/inference_new/infer_assign_to_property.dart.outline.expect
+++ b/pkg/front_end/testcases/inference_new/infer_assign_to_property.dart.outline.expect
@@ -6,6 +6,16 @@
   field core::int* f;
   synthetic constructor •() → self::A*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field core::int* v_assign;
 static field core::int* v_plus;
diff --git a/pkg/front_end/testcases/inference_new/infer_assign_to_property.dart.strong.expect b/pkg/front_end/testcases/inference_new/infer_assign_to_property.dart.strong.expect
index b5cb604..4f09e47 100644
--- a/pkg/front_end/testcases/inference_new/infer_assign_to_property.dart.strong.expect
+++ b/pkg/front_end/testcases/inference_new/infer_assign_to_property.dart.strong.expect
@@ -7,6 +7,16 @@
   synthetic constructor •() → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field core::int* v_assign = new self::A::•().{self::A::f} = 1;
 static field core::int* v_plus = let final self::A* #t1 = new self::A::•() in #t1.{self::A::f} = #t1.{self::A::f}.{core::num::+}(1);
diff --git a/pkg/front_end/testcases/inference_new/infer_assign_to_property.dart.strong.transformed.expect b/pkg/front_end/testcases/inference_new/infer_assign_to_property.dart.strong.transformed.expect
index b5cb604..4f09e47 100644
--- a/pkg/front_end/testcases/inference_new/infer_assign_to_property.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference_new/infer_assign_to_property.dart.strong.transformed.expect
@@ -7,6 +7,16 @@
   synthetic constructor •() → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field core::int* v_assign = new self::A::•().{self::A::f} = 1;
 static field core::int* v_plus = let final self::A* #t1 = new self::A::•() in #t1.{self::A::f} = #t1.{self::A::f}.{core::num::+}(1);
diff --git a/pkg/front_end/testcases/inference_new/infer_assign_to_property_custom.dart.outline.expect b/pkg/front_end/testcases/inference_new/infer_assign_to_property_custom.dart.outline.expect
index f0cfbcc..3bda947 100644
--- a/pkg/front_end/testcases/inference_new/infer_assign_to_property_custom.dart.outline.expect
+++ b/pkg/front_end/testcases/inference_new/infer_assign_to_property_custom.dart.outline.expect
@@ -9,11 +9,31 @@
     ;
   operator -(dynamic other) → core::double*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends core::Object {
   field self::A* a;
   synthetic constructor •() → self::B*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field core::int* v_prefix_pp;
 static field core::double* v_prefix_mm;
diff --git a/pkg/front_end/testcases/inference_new/infer_assign_to_property_custom.dart.strong.expect b/pkg/front_end/testcases/inference_new/infer_assign_to_property_custom.dart.strong.expect
index 2137e494d..673684a 100644
--- a/pkg/front_end/testcases/inference_new/infer_assign_to_property_custom.dart.strong.expect
+++ b/pkg/front_end/testcases/inference_new/infer_assign_to_property_custom.dart.strong.expect
@@ -33,12 +33,32 @@
     return 1;
   operator -(dynamic other) → core::double*
     return 2.0;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends core::Object {
   field self::A* a = null;
   synthetic constructor •() → self::B*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field core::int* v_prefix_pp = let final self::B* #t1 = new self::B::•() in #t1.{self::B::a} = let final<BottomType> #t2 = invalid-expression "pkg/front_end/testcases/inference_new/infer_assign_to_property_custom.dart:17:39: Error: A value of type 'int' can't be assigned to a variable of type 'A'.
  - 'A' is from 'pkg/front_end/testcases/inference_new/infer_assign_to_property_custom.dart'.
diff --git a/pkg/front_end/testcases/inference_new/infer_assign_to_property_full.dart b/pkg/front_end/testcases/inference_new/infer_assign_to_property_full.dart
index 457ad54..f94a25c 100644
--- a/pkg/front_end/testcases/inference_new/infer_assign_to_property_full.dart
+++ b/pkg/front_end/testcases/inference_new/infer_assign_to_property_full.dart
@@ -25,7 +25,7 @@
     t. /*@target=Test::member*/ member = /*@ typeArgs=B* */ f();
     /*@ type=Test* */ t
             . /*@target=Test::member*/ /*@target=Test::member*/ member
-        /*@target=Object::==*/ ??= /*@ typeArgs=B* */ f();
+        /*@target=A::==*/ ??= /*@ typeArgs=B* */ f();
     /*@ type=Test* */ t
             . /*@target=Test::member*/ /*@target=Test::member*/ member
         /*@ target=B::+ */ += /*@ typeArgs=C* */ f();
@@ -45,7 +45,7 @@
     var /*@ type=B* */ v2 =
         /*@ type=Test* */ t
                 . /*@target=Test::member*/ /*@target=Test::member*/ member
-            /*@target=Object::==*/ ??= /*@ typeArgs=B* */ f();
+            /*@target=A::==*/ ??= /*@ typeArgs=B* */ f();
     var /*@ type=A* */ v3 =
         /*@ type=Test* */ t
                 . /*@target=Test::member*/ /*@target=Test::member*/ member
diff --git a/pkg/front_end/testcases/inference_new/infer_assign_to_property_full.dart.outline.expect b/pkg/front_end/testcases/inference_new/infer_assign_to_property_full.dart.outline.expect
index b4e3259..bd49fa0 100644
--- a/pkg/front_end/testcases/inference_new/infer_assign_to_property_full.dart.outline.expect
+++ b/pkg/front_end/testcases/inference_new/infer_assign_to_property_full.dart.outline.expect
@@ -5,6 +5,16 @@
 class A extends core::Object {
   synthetic constructor •() → self::A*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A {
   synthetic constructor •() → self::B*
@@ -28,6 +38,16 @@
     ;
   static method test(self::Test* t) → void
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method f<T extends core::Object* = dynamic>() → self::f::T*
   ;
diff --git a/pkg/front_end/testcases/inference_new/infer_assign_to_property_full.dart.strong.expect b/pkg/front_end/testcases/inference_new/infer_assign_to_property_full.dart.strong.expect
index 5809936..3afdcb9 100644
--- a/pkg/front_end/testcases/inference_new/infer_assign_to_property_full.dart.strong.expect
+++ b/pkg/front_end/testcases/inference_new/infer_assign_to_property_full.dart.strong.expect
@@ -6,6 +6,16 @@
   synthetic constructor •() → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A {
   synthetic constructor •() → self::B*
@@ -32,20 +42,30 @@
     ;
   static method test(self::Test* t) → void {
     t.{self::Test::member} = self::f<self::B*>();
-    let final self::Test* #t1 = t in #t1.{self::Test::member}.{core::Object::==}(null) ?{self::B*} #t1.{self::Test::member} = self::f<self::B*>() : null;
+    let final self::Test* #t1 = t in #t1.{self::Test::member}.{self::A::==}(null) ?{self::B*} #t1.{self::Test::member} = self::f<self::B*>() : null;
     let final self::Test* #t2 = t in #t2.{self::Test::member} = #t2.{self::Test::member}.{self::B::+}(self::f<self::C*>()) as{TypeError} self::B*;
     let final self::Test* #t3 = t in #t3.{self::Test::member} = #t3.{self::Test::member}.{self::B::*}(self::f<self::B*>());
     let final self::Test* #t4 = t in #t4.{self::Test::member} = #t4.{self::Test::member}.{self::B::&}(self::f<self::A*>());
     let final self::Test* #t5 = t in #t5.{self::Test::member} = #t5.{self::Test::member}.{self::B::-}(1);
     let final self::Test* #t6 = t in #t6.{self::Test::member} = #t6.{self::Test::member}.{self::B::-}(1);
     self::B* v1 = t.{self::Test::member} = self::f<self::B*>();
-    self::B* v2 = let final self::Test* #t7 = t in let final self::B* #t8 = #t7.{self::Test::member} in #t8.{core::Object::==}(null) ?{self::B*} #t7.{self::Test::member} = self::f<self::B*>() : #t8;
+    self::B* v2 = let final self::Test* #t7 = t in let final self::B* #t8 = #t7.{self::Test::member} in #t8.{self::A::==}(null) ?{self::B*} #t7.{self::Test::member} = self::f<self::B*>() : #t8;
     self::A* v3 = let final self::Test* #t9 = t in #t9.{self::Test::member} = #t9.{self::Test::member}.{self::B::+}(self::f<self::C*>()) as{TypeError} self::B*;
     self::B* v4 = let final self::Test* #t10 = t in #t10.{self::Test::member} = #t10.{self::Test::member}.{self::B::*}(self::f<self::B*>());
     self::C* v5 = let final self::Test* #t11 = t in #t11.{self::Test::member} = #t11.{self::Test::member}.{self::B::&}(self::f<self::A*>());
     self::B* v6 = let final self::Test* #t12 = t in #t12.{self::Test::member} = #t12.{self::Test::member}.{self::B::-}(1);
     self::B* v7 = let final self::Test* #t13 = t in let final self::B* #t14 = #t13.{self::Test::member} in let final self::B* #t15 = #t13.{self::Test::member} = #t14.{self::B::-}(1) in #t14;
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method f<T extends core::Object* = dynamic>() → self::f::T*
   return null;
diff --git a/pkg/front_end/testcases/inference_new/infer_assign_to_property_full.dart.strong.transformed.expect b/pkg/front_end/testcases/inference_new/infer_assign_to_property_full.dart.strong.transformed.expect
index 5809936..3afdcb9 100644
--- a/pkg/front_end/testcases/inference_new/infer_assign_to_property_full.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference_new/infer_assign_to_property_full.dart.strong.transformed.expect
@@ -6,6 +6,16 @@
   synthetic constructor •() → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A {
   synthetic constructor •() → self::B*
@@ -32,20 +42,30 @@
     ;
   static method test(self::Test* t) → void {
     t.{self::Test::member} = self::f<self::B*>();
-    let final self::Test* #t1 = t in #t1.{self::Test::member}.{core::Object::==}(null) ?{self::B*} #t1.{self::Test::member} = self::f<self::B*>() : null;
+    let final self::Test* #t1 = t in #t1.{self::Test::member}.{self::A::==}(null) ?{self::B*} #t1.{self::Test::member} = self::f<self::B*>() : null;
     let final self::Test* #t2 = t in #t2.{self::Test::member} = #t2.{self::Test::member}.{self::B::+}(self::f<self::C*>()) as{TypeError} self::B*;
     let final self::Test* #t3 = t in #t3.{self::Test::member} = #t3.{self::Test::member}.{self::B::*}(self::f<self::B*>());
     let final self::Test* #t4 = t in #t4.{self::Test::member} = #t4.{self::Test::member}.{self::B::&}(self::f<self::A*>());
     let final self::Test* #t5 = t in #t5.{self::Test::member} = #t5.{self::Test::member}.{self::B::-}(1);
     let final self::Test* #t6 = t in #t6.{self::Test::member} = #t6.{self::Test::member}.{self::B::-}(1);
     self::B* v1 = t.{self::Test::member} = self::f<self::B*>();
-    self::B* v2 = let final self::Test* #t7 = t in let final self::B* #t8 = #t7.{self::Test::member} in #t8.{core::Object::==}(null) ?{self::B*} #t7.{self::Test::member} = self::f<self::B*>() : #t8;
+    self::B* v2 = let final self::Test* #t7 = t in let final self::B* #t8 = #t7.{self::Test::member} in #t8.{self::A::==}(null) ?{self::B*} #t7.{self::Test::member} = self::f<self::B*>() : #t8;
     self::A* v3 = let final self::Test* #t9 = t in #t9.{self::Test::member} = #t9.{self::Test::member}.{self::B::+}(self::f<self::C*>()) as{TypeError} self::B*;
     self::B* v4 = let final self::Test* #t10 = t in #t10.{self::Test::member} = #t10.{self::Test::member}.{self::B::*}(self::f<self::B*>());
     self::C* v5 = let final self::Test* #t11 = t in #t11.{self::Test::member} = #t11.{self::Test::member}.{self::B::&}(self::f<self::A*>());
     self::B* v6 = let final self::Test* #t12 = t in #t12.{self::Test::member} = #t12.{self::Test::member}.{self::B::-}(1);
     self::B* v7 = let final self::Test* #t13 = t in let final self::B* #t14 = #t13.{self::Test::member} in let final self::B* #t15 = #t13.{self::Test::member} = #t14.{self::B::-}(1) in #t14;
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method f<T extends core::Object* = dynamic>() → self::f::T*
   return null;
diff --git a/pkg/front_end/testcases/inference_new/infer_assign_to_property_null_aware.dart b/pkg/front_end/testcases/inference_new/infer_assign_to_property_null_aware.dart
index 0833acd..230ebf4 100644
--- a/pkg/front_end/testcases/inference_new/infer_assign_to_property_null_aware.dart
+++ b/pkg/front_end/testcases/inference_new/infer_assign_to_property_null_aware.dart
@@ -22,60 +22,60 @@
   B member;
 
   static void test(Test t) {
-    /*@ type=Test* */ /*@target=Object::==*/ t
+    /*@ type=Test* */ /*@target=Test::==*/ t
         ?. /*@target=Test::member*/ member = /*@ typeArgs=B* */ f();
 
-    /*@target=Object::==*/ t?.
+    /*@target=Test::==*/ t?.
             /*@target=Test::member*/ /*@target=Test::member*/ member
-        /*@target=Object::==*/ ??= /*@ typeArgs=B* */ f();
+        /*@target=A::==*/ ??= /*@ typeArgs=B* */ f();
 
-    /*@target=Object::==*/ t?.
+    /*@target=Test::==*/ t?.
             /*@target=Test::member*/ /*@target=Test::member*/ member
         /*@ target=B::+ */ += /*@ typeArgs=C* */ f();
 
-    /*@target=Object::==*/ t?.
+    /*@target=Test::==*/ t?.
             /*@target=Test::member*/ /*@target=Test::member*/ member
         /*@ target=B::* */ *= /*@ typeArgs=B* */ f();
 
-    /*@target=Object::==*/ t?.
+    /*@target=Test::==*/ t?.
             /*@target=Test::member*/ /*@target=Test::member*/ member
         /*@ target=B::& */ &= /*@ typeArgs=A* */ f();
 
-    /*@ target=B::- */ -- /*@target=Object::==*/ t?.
+    /*@ target=B::- */ -- /*@target=Test::==*/ t?.
         /*@target=Test::member*/ /*@target=Test::member*/ member;
 
-    /*@target=Object::==*/ t?.
+    /*@target=Test::==*/ t?.
             /*@target=Test::member*/ /*@target=Test::member*/ member
         /*@ target=B::- */ --;
 
     var /*@ type=B* */ v1 =
-        /*@ type=Test* */ /*@target=Object::==*/ t
+        /*@ type=Test* */ /*@target=Test::==*/ t
             ?. /*@target=Test::member*/ member = /*@ typeArgs=B* */ f();
 
     var /*@ type=B* */ v2 =
-        /*@target=Object::==*/ t
+        /*@target=Test::==*/ t
                 ?. /*@target=Test::member*/ /*@target=Test::member*/ member
-            /*@target=Object::==*/ ??= /*@ typeArgs=B* */ f();
+            /*@target=A::==*/ ??= /*@ typeArgs=B* */ f();
 
     var /*@ type=A* */ v3 =
-        /*@target=Object::==*/ t
+        /*@target=Test::==*/ t
                 ?. /*@target=Test::member*/ /*@target=Test::member*/ member
             /*@ target=B::+ */ += /*@ typeArgs=C* */ f();
 
     var /*@ type=B* */ v4 =
-        /*@target=Object::==*/ t
+        /*@target=Test::==*/ t
                 ?. /*@target=Test::member*/ /*@target=Test::member*/ member
             /*@ target=B::* */ *= /*@ typeArgs=B* */ f();
 
     var /*@ type=C* */ v5 =
-        /*@target=Object::==*/ t
+        /*@target=Test::==*/ t
                 ?. /*@target=Test::member*/ /*@target=Test::member*/ member
             /*@ target=B::& */ &= /*@ typeArgs=A* */ f();
 
-    var /*@ type=B* */ v6 = /*@ target=B::- */ -- /*@target=Object::==*/ t
+    var /*@ type=B* */ v6 = /*@ target=B::- */ -- /*@target=Test::==*/ t
         ?. /*@target=Test::member*/ /*@target=Test::member*/ member;
 
-    var /*@ type=B* */ v7 = /*@target=Object::==*/ t
+    var /*@ type=B* */ v7 = /*@target=Test::==*/ t
             ?. /*@target=Test::member*/ /*@target=Test::member*/ member
         /*@ target=B::- */ --;
   }
diff --git a/pkg/front_end/testcases/inference_new/infer_assign_to_property_null_aware.dart.outline.expect b/pkg/front_end/testcases/inference_new/infer_assign_to_property_null_aware.dart.outline.expect
index b4e3259..bd49fa0 100644
--- a/pkg/front_end/testcases/inference_new/infer_assign_to_property_null_aware.dart.outline.expect
+++ b/pkg/front_end/testcases/inference_new/infer_assign_to_property_null_aware.dart.outline.expect
@@ -5,6 +5,16 @@
 class A extends core::Object {
   synthetic constructor •() → self::A*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A {
   synthetic constructor •() → self::B*
@@ -28,6 +38,16 @@
     ;
   static method test(self::Test* t) → void
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method f<T extends core::Object* = dynamic>() → self::f::T*
   ;
diff --git a/pkg/front_end/testcases/inference_new/infer_assign_to_property_null_aware.dart.strong.expect b/pkg/front_end/testcases/inference_new/infer_assign_to_property_null_aware.dart.strong.expect
index 60aa66d..3c60310 100644
--- a/pkg/front_end/testcases/inference_new/infer_assign_to_property_null_aware.dart.strong.expect
+++ b/pkg/front_end/testcases/inference_new/infer_assign_to_property_null_aware.dart.strong.expect
@@ -6,6 +6,16 @@
   synthetic constructor •() → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A {
   synthetic constructor •() → self::B*
@@ -31,21 +41,31 @@
     : super core::Object::•()
     ;
   static method test(self::Test* t) → void {
-    let final self::Test* #t1 = t in #t1.{core::Object::==}(null) ?{self::B*} null : #t1.{self::Test::member} = self::f<self::B*>();
-    let final self::Test* #t2 = t in #t2.{core::Object::==}(null) ?{self::B*} null : #t2.{self::Test::member}.{core::Object::==}(null) ?{self::B*} #t2.{self::Test::member} = self::f<self::B*>() : null;
-    let final self::Test* #t3 = t in #t3.{core::Object::==}(null) ?{self::A*} null : #t3.{self::Test::member} = #t3.{self::Test::member}.{self::B::+}(self::f<self::C*>()) as{TypeError} self::B*;
-    let final self::Test* #t4 = t in #t4.{core::Object::==}(null) ?{self::B*} null : #t4.{self::Test::member} = #t4.{self::Test::member}.{self::B::*}(self::f<self::B*>());
-    let final self::Test* #t5 = t in #t5.{core::Object::==}(null) ?{self::C*} null : #t5.{self::Test::member} = #t5.{self::Test::member}.{self::B::&}(self::f<self::A*>());
-    let final self::Test* #t6 = t in #t6.{core::Object::==}(null) ?{self::B*} null : let final self::B* #t7 = #t6.{self::Test::member}.{self::B::-}(1) in let final void #t8 = #t6.{self::Test::member} = #t7 in #t7;
-    let final self::Test* #t9 = t in #t9.{core::Object::==}(null) ?{self::B*} null : #t9.{self::Test::member} = #t9.{self::Test::member}.{self::B::-}(1);
-    self::B* v1 = let final self::Test* #t10 = t in #t10.{core::Object::==}(null) ?{self::B*} null : #t10.{self::Test::member} = self::f<self::B*>();
-    self::B* v2 = let final self::Test* #t11 = t in #t11.{core::Object::==}(null) ?{self::B*} null : let final self::B* #t12 = #t11.{self::Test::member} in #t12.{core::Object::==}(null) ?{self::B*} #t11.{self::Test::member} = self::f<self::B*>() : #t12;
-    self::A* v3 = let final self::Test* #t13 = t in #t13.{core::Object::==}(null) ?{self::A*} null : let final self::A* #t14 = #t13.{self::Test::member}.{self::B::+}(self::f<self::C*>()) as{TypeError} self::B* in let final void #t15 = #t13.{self::Test::member} = #t14 in #t14;
-    self::B* v4 = let final self::Test* #t16 = t in #t16.{core::Object::==}(null) ?{self::B*} null : let final self::B* #t17 = #t16.{self::Test::member}.{self::B::*}(self::f<self::B*>()) in let final void #t18 = #t16.{self::Test::member} = #t17 in #t17;
-    self::C* v5 = let final self::Test* #t19 = t in #t19.{core::Object::==}(null) ?{self::C*} null : let final self::C* #t20 = #t19.{self::Test::member}.{self::B::&}(self::f<self::A*>()) in let final void #t21 = #t19.{self::Test::member} = #t20 in #t20;
-    self::B* v6 = let final self::Test* #t22 = t in #t22.{core::Object::==}(null) ?{self::B*} null : let final self::B* #t23 = #t22.{self::Test::member}.{self::B::-}(1) in let final void #t24 = #t22.{self::Test::member} = #t23 in #t23;
-    self::B* v7 = let final self::Test* #t25 = t in #t25.{core::Object::==}(null) ?{self::B*} null : let final self::B* #t26 = #t25.{self::Test::member} in let final void #t27 = #t25.{self::Test::member} = #t26.{self::B::-}(1) in #t26;
+    let final self::Test* #t1 = t in #t1.{self::Test::==}(null) ?{self::B*} null : #t1.{self::Test::member} = self::f<self::B*>();
+    let final self::Test* #t2 = t in #t2.{self::Test::==}(null) ?{self::B*} null : #t2.{self::Test::member}.{self::A::==}(null) ?{self::B*} #t2.{self::Test::member} = self::f<self::B*>() : null;
+    let final self::Test* #t3 = t in #t3.{self::Test::==}(null) ?{self::A*} null : #t3.{self::Test::member} = #t3.{self::Test::member}.{self::B::+}(self::f<self::C*>()) as{TypeError} self::B*;
+    let final self::Test* #t4 = t in #t4.{self::Test::==}(null) ?{self::B*} null : #t4.{self::Test::member} = #t4.{self::Test::member}.{self::B::*}(self::f<self::B*>());
+    let final self::Test* #t5 = t in #t5.{self::Test::==}(null) ?{self::C*} null : #t5.{self::Test::member} = #t5.{self::Test::member}.{self::B::&}(self::f<self::A*>());
+    let final self::Test* #t6 = t in #t6.{self::Test::==}(null) ?{self::B*} null : let final self::B* #t7 = #t6.{self::Test::member}.{self::B::-}(1) in let final void #t8 = #t6.{self::Test::member} = #t7 in #t7;
+    let final self::Test* #t9 = t in #t9.{self::Test::==}(null) ?{self::B*} null : #t9.{self::Test::member} = #t9.{self::Test::member}.{self::B::-}(1);
+    self::B* v1 = let final self::Test* #t10 = t in #t10.{self::Test::==}(null) ?{self::B*} null : #t10.{self::Test::member} = self::f<self::B*>();
+    self::B* v2 = let final self::Test* #t11 = t in #t11.{self::Test::==}(null) ?{self::B*} null : let final self::B* #t12 = #t11.{self::Test::member} in #t12.{self::A::==}(null) ?{self::B*} #t11.{self::Test::member} = self::f<self::B*>() : #t12;
+    self::A* v3 = let final self::Test* #t13 = t in #t13.{self::Test::==}(null) ?{self::A*} null : let final self::A* #t14 = #t13.{self::Test::member}.{self::B::+}(self::f<self::C*>()) as{TypeError} self::B* in let final void #t15 = #t13.{self::Test::member} = #t14 in #t14;
+    self::B* v4 = let final self::Test* #t16 = t in #t16.{self::Test::==}(null) ?{self::B*} null : let final self::B* #t17 = #t16.{self::Test::member}.{self::B::*}(self::f<self::B*>()) in let final void #t18 = #t16.{self::Test::member} = #t17 in #t17;
+    self::C* v5 = let final self::Test* #t19 = t in #t19.{self::Test::==}(null) ?{self::C*} null : let final self::C* #t20 = #t19.{self::Test::member}.{self::B::&}(self::f<self::A*>()) in let final void #t21 = #t19.{self::Test::member} = #t20 in #t20;
+    self::B* v6 = let final self::Test* #t22 = t in #t22.{self::Test::==}(null) ?{self::B*} null : let final self::B* #t23 = #t22.{self::Test::member}.{self::B::-}(1) in let final void #t24 = #t22.{self::Test::member} = #t23 in #t23;
+    self::B* v7 = let final self::Test* #t25 = t in #t25.{self::Test::==}(null) ?{self::B*} null : let final self::B* #t26 = #t25.{self::Test::member} in let final void #t27 = #t25.{self::Test::member} = #t26.{self::B::-}(1) in #t26;
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method f<T extends core::Object* = dynamic>() → self::f::T*
   return null;
diff --git a/pkg/front_end/testcases/inference_new/infer_assign_to_property_null_aware.dart.strong.transformed.expect b/pkg/front_end/testcases/inference_new/infer_assign_to_property_null_aware.dart.strong.transformed.expect
index 60aa66d..3c60310 100644
--- a/pkg/front_end/testcases/inference_new/infer_assign_to_property_null_aware.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference_new/infer_assign_to_property_null_aware.dart.strong.transformed.expect
@@ -6,6 +6,16 @@
   synthetic constructor •() → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A {
   synthetic constructor •() → self::B*
@@ -31,21 +41,31 @@
     : super core::Object::•()
     ;
   static method test(self::Test* t) → void {
-    let final self::Test* #t1 = t in #t1.{core::Object::==}(null) ?{self::B*} null : #t1.{self::Test::member} = self::f<self::B*>();
-    let final self::Test* #t2 = t in #t2.{core::Object::==}(null) ?{self::B*} null : #t2.{self::Test::member}.{core::Object::==}(null) ?{self::B*} #t2.{self::Test::member} = self::f<self::B*>() : null;
-    let final self::Test* #t3 = t in #t3.{core::Object::==}(null) ?{self::A*} null : #t3.{self::Test::member} = #t3.{self::Test::member}.{self::B::+}(self::f<self::C*>()) as{TypeError} self::B*;
-    let final self::Test* #t4 = t in #t4.{core::Object::==}(null) ?{self::B*} null : #t4.{self::Test::member} = #t4.{self::Test::member}.{self::B::*}(self::f<self::B*>());
-    let final self::Test* #t5 = t in #t5.{core::Object::==}(null) ?{self::C*} null : #t5.{self::Test::member} = #t5.{self::Test::member}.{self::B::&}(self::f<self::A*>());
-    let final self::Test* #t6 = t in #t6.{core::Object::==}(null) ?{self::B*} null : let final self::B* #t7 = #t6.{self::Test::member}.{self::B::-}(1) in let final void #t8 = #t6.{self::Test::member} = #t7 in #t7;
-    let final self::Test* #t9 = t in #t9.{core::Object::==}(null) ?{self::B*} null : #t9.{self::Test::member} = #t9.{self::Test::member}.{self::B::-}(1);
-    self::B* v1 = let final self::Test* #t10 = t in #t10.{core::Object::==}(null) ?{self::B*} null : #t10.{self::Test::member} = self::f<self::B*>();
-    self::B* v2 = let final self::Test* #t11 = t in #t11.{core::Object::==}(null) ?{self::B*} null : let final self::B* #t12 = #t11.{self::Test::member} in #t12.{core::Object::==}(null) ?{self::B*} #t11.{self::Test::member} = self::f<self::B*>() : #t12;
-    self::A* v3 = let final self::Test* #t13 = t in #t13.{core::Object::==}(null) ?{self::A*} null : let final self::A* #t14 = #t13.{self::Test::member}.{self::B::+}(self::f<self::C*>()) as{TypeError} self::B* in let final void #t15 = #t13.{self::Test::member} = #t14 in #t14;
-    self::B* v4 = let final self::Test* #t16 = t in #t16.{core::Object::==}(null) ?{self::B*} null : let final self::B* #t17 = #t16.{self::Test::member}.{self::B::*}(self::f<self::B*>()) in let final void #t18 = #t16.{self::Test::member} = #t17 in #t17;
-    self::C* v5 = let final self::Test* #t19 = t in #t19.{core::Object::==}(null) ?{self::C*} null : let final self::C* #t20 = #t19.{self::Test::member}.{self::B::&}(self::f<self::A*>()) in let final void #t21 = #t19.{self::Test::member} = #t20 in #t20;
-    self::B* v6 = let final self::Test* #t22 = t in #t22.{core::Object::==}(null) ?{self::B*} null : let final self::B* #t23 = #t22.{self::Test::member}.{self::B::-}(1) in let final void #t24 = #t22.{self::Test::member} = #t23 in #t23;
-    self::B* v7 = let final self::Test* #t25 = t in #t25.{core::Object::==}(null) ?{self::B*} null : let final self::B* #t26 = #t25.{self::Test::member} in let final void #t27 = #t25.{self::Test::member} = #t26.{self::B::-}(1) in #t26;
+    let final self::Test* #t1 = t in #t1.{self::Test::==}(null) ?{self::B*} null : #t1.{self::Test::member} = self::f<self::B*>();
+    let final self::Test* #t2 = t in #t2.{self::Test::==}(null) ?{self::B*} null : #t2.{self::Test::member}.{self::A::==}(null) ?{self::B*} #t2.{self::Test::member} = self::f<self::B*>() : null;
+    let final self::Test* #t3 = t in #t3.{self::Test::==}(null) ?{self::A*} null : #t3.{self::Test::member} = #t3.{self::Test::member}.{self::B::+}(self::f<self::C*>()) as{TypeError} self::B*;
+    let final self::Test* #t4 = t in #t4.{self::Test::==}(null) ?{self::B*} null : #t4.{self::Test::member} = #t4.{self::Test::member}.{self::B::*}(self::f<self::B*>());
+    let final self::Test* #t5 = t in #t5.{self::Test::==}(null) ?{self::C*} null : #t5.{self::Test::member} = #t5.{self::Test::member}.{self::B::&}(self::f<self::A*>());
+    let final self::Test* #t6 = t in #t6.{self::Test::==}(null) ?{self::B*} null : let final self::B* #t7 = #t6.{self::Test::member}.{self::B::-}(1) in let final void #t8 = #t6.{self::Test::member} = #t7 in #t7;
+    let final self::Test* #t9 = t in #t9.{self::Test::==}(null) ?{self::B*} null : #t9.{self::Test::member} = #t9.{self::Test::member}.{self::B::-}(1);
+    self::B* v1 = let final self::Test* #t10 = t in #t10.{self::Test::==}(null) ?{self::B*} null : #t10.{self::Test::member} = self::f<self::B*>();
+    self::B* v2 = let final self::Test* #t11 = t in #t11.{self::Test::==}(null) ?{self::B*} null : let final self::B* #t12 = #t11.{self::Test::member} in #t12.{self::A::==}(null) ?{self::B*} #t11.{self::Test::member} = self::f<self::B*>() : #t12;
+    self::A* v3 = let final self::Test* #t13 = t in #t13.{self::Test::==}(null) ?{self::A*} null : let final self::A* #t14 = #t13.{self::Test::member}.{self::B::+}(self::f<self::C*>()) as{TypeError} self::B* in let final void #t15 = #t13.{self::Test::member} = #t14 in #t14;
+    self::B* v4 = let final self::Test* #t16 = t in #t16.{self::Test::==}(null) ?{self::B*} null : let final self::B* #t17 = #t16.{self::Test::member}.{self::B::*}(self::f<self::B*>()) in let final void #t18 = #t16.{self::Test::member} = #t17 in #t17;
+    self::C* v5 = let final self::Test* #t19 = t in #t19.{self::Test::==}(null) ?{self::C*} null : let final self::C* #t20 = #t19.{self::Test::member}.{self::B::&}(self::f<self::A*>()) in let final void #t21 = #t19.{self::Test::member} = #t20 in #t20;
+    self::B* v6 = let final self::Test* #t22 = t in #t22.{self::Test::==}(null) ?{self::B*} null : let final self::B* #t23 = #t22.{self::Test::member}.{self::B::-}(1) in let final void #t24 = #t22.{self::Test::member} = #t23 in #t23;
+    self::B* v7 = let final self::Test* #t25 = t in #t25.{self::Test::==}(null) ?{self::B*} null : let final self::B* #t26 = #t25.{self::Test::member} in let final void #t27 = #t25.{self::Test::member} = #t26.{self::B::-}(1) in #t26;
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method f<T extends core::Object* = dynamic>() → self::f::T*
   return null;
diff --git a/pkg/front_end/testcases/inference_new/infer_assign_to_property_null_aware_upwards.dart b/pkg/front_end/testcases/inference_new/infer_assign_to_property_null_aware_upwards.dart
index 75ea000..623974e 100644
--- a/pkg/front_end/testcases/inference_new/infer_assign_to_property_null_aware_upwards.dart
+++ b/pkg/front_end/testcases/inference_new/infer_assign_to_property_null_aware_upwards.dart
@@ -13,33 +13,33 @@
   int prop;
 
   static void test(Test1 t) {
-    var /*@ type=int* */ v1 = /*@ type=Test1* */ /*@target=Object::==*/ t
+    var /*@ type=int* */ v1 = /*@ type=Test1* */ /*@target=Test1::==*/ t
         ?. /*@target=Test1::prop*/ prop = getInt();
 
-    var /*@ type=num* */ v2 = /*@ type=Test1* */ /*@target=Object::==*/ t
+    var /*@ type=num* */ v2 = /*@ type=Test1* */ /*@target=Test1::==*/ t
         ?. /*@target=Test1::prop*/ prop = getNum();
 
-    var /*@ type=int* */ v4 = /*@target=Object::==*/ t?.
+    var /*@ type=int* */ v4 = /*@target=Test1::==*/ t?.
             /*@target=Test1::prop*/ /*@target=Test1::prop*/ prop
         /*@ target=num::== */ ??= getInt();
 
-    var /*@ type=num* */ v5 = /*@target=Object::==*/ t?.
+    var /*@ type=num* */ v5 = /*@target=Test1::==*/ t?.
             /*@target=Test1::prop*/ /*@target=Test1::prop*/ prop
         /*@ target=num::== */ ??= getNum();
 
-    var /*@ type=int* */ v7 = /*@target=Object::==*/ t?.
+    var /*@ type=int* */ v7 = /*@target=Test1::==*/ t?.
             /*@target=Test1::prop*/ /*@target=Test1::prop*/ prop
         /*@ target=num::+ */ += getInt();
 
-    var /*@ type=num* */ v8 = /*@target=Object::==*/ t?.
+    var /*@ type=num* */ v8 = /*@target=Test1::==*/ t?.
             /*@target=Test1::prop*/ /*@target=Test1::prop*/ prop
         /*@ target=num::+ */ += getNum();
 
     var /*@ type=int* */ v10 = /*@ target=num::+ */ ++
-        /*@target=Object::==*/ t?.
+        /*@target=Test1::==*/ t?.
             /*@target=Test1::prop*/ /*@target=Test1::prop*/ prop;
 
-    var /*@ type=int* */ v11 = /*@target=Object::==*/ t?.
+    var /*@ type=int* */ v11 = /*@target=Test1::==*/ t?.
             /*@target=Test1::prop*/ /*@target=Test1::prop*/ prop
         /*@ target=num::+ */ ++;
   }
@@ -49,43 +49,43 @@
   num prop;
 
   static void test(Test2 t) {
-    var /*@ type=int* */ v1 = /*@ type=Test2* */ /*@target=Object::==*/ t
+    var /*@ type=int* */ v1 = /*@ type=Test2* */ /*@target=Test2::==*/ t
         ?. /*@target=Test2::prop*/ prop = getInt();
 
-    var /*@ type=num* */ v2 = /*@ type=Test2* */ /*@target=Object::==*/ t
+    var /*@ type=num* */ v2 = /*@ type=Test2* */ /*@target=Test2::==*/ t
         ?. /*@target=Test2::prop*/ prop = getNum();
 
-    var /*@ type=double* */ v3 = /*@ type=Test2* */ /*@target=Object::==*/ t
+    var /*@ type=double* */ v3 = /*@ type=Test2* */ /*@target=Test2::==*/ t
         ?. /*@target=Test2::prop*/ prop = getDouble();
 
-    var /*@ type=num* */ v4 = /*@target=Object::==*/ t?.
+    var /*@ type=num* */ v4 = /*@target=Test2::==*/ t?.
             /*@target=Test2::prop*/ /*@target=Test2::prop*/ prop
         /*@ target=num::== */ ??= getInt();
 
-    var /*@ type=num* */ v5 = /*@target=Object::==*/ t?.
+    var /*@ type=num* */ v5 = /*@target=Test2::==*/ t?.
             /*@target=Test2::prop*/ /*@target=Test2::prop*/ prop
         /*@ target=num::== */ ??= getNum();
 
-    var /*@ type=num* */ v6 = /*@target=Object::==*/ t?.
+    var /*@ type=num* */ v6 = /*@target=Test2::==*/ t?.
             /*@target=Test2::prop*/ /*@target=Test2::prop*/ prop
         /*@ target=num::== */ ??= getDouble();
 
-    var /*@ type=num* */ v7 = /*@target=Object::==*/ t?.
+    var /*@ type=num* */ v7 = /*@target=Test2::==*/ t?.
             /*@target=Test2::prop*/ /*@target=Test2::prop*/ prop
         /*@ target=num::+ */ += getInt();
 
-    var /*@ type=num* */ v8 = /*@target=Object::==*/ t?.
+    var /*@ type=num* */ v8 = /*@target=Test2::==*/ t?.
             /*@target=Test2::prop*/ /*@target=Test2::prop*/ prop
         /*@ target=num::+ */ += getNum();
 
-    var /*@ type=num* */ v9 = /*@target=Object::==*/ t?.
+    var /*@ type=num* */ v9 = /*@target=Test2::==*/ t?.
         /*@target=Test2::prop*/ /*@target=Test2::prop*/
         prop /*@ target=num::+ */ += getDouble();
 
-    var /*@ type=num* */ v10 = /*@ target=num::+ */ ++ /*@target=Object::==*/
+    var /*@ type=num* */ v10 = /*@ target=num::+ */ ++ /*@target=Test2::==*/
         t?. /*@target=Test2::prop*/ /*@target=Test2::prop*/ prop;
 
-    var /*@ type=num* */ v11 = /*@target=Object::==*/
+    var /*@ type=num* */ v11 = /*@target=Test2::==*/
         t?. /*@target=Test2::prop*/ /*@target=Test2::prop*/ prop
         /*@ target=num::+ */ ++;
   }
@@ -95,39 +95,39 @@
   double prop;
 
   static void test3(Test3 t) {
-    var /*@ type=num* */ v2 = /*@ type=Test3* */ /*@target=Object::==*/ t
+    var /*@ type=num* */ v2 = /*@ type=Test3* */ /*@target=Test3::==*/ t
         ?. /*@target=Test3::prop*/ prop = getNum();
 
-    var /*@ type=double* */ v3 = /*@ type=Test3* */ /*@target=Object::==*/ t
+    var /*@ type=double* */ v3 = /*@ type=Test3* */ /*@target=Test3::==*/ t
         ?. /*@target=Test3::prop*/ prop = getDouble();
 
-    var /*@ type=num* */ v5 = /*@target=Object::==*/ t?.
+    var /*@ type=num* */ v5 = /*@target=Test3::==*/ t?.
             /*@target=Test3::prop*/ /*@target=Test3::prop*/ prop
         /*@ target=num::== */ ??= getNum();
 
     var /*@ type=double* */ v6 =
-        /*@target=Object::==*/ t?.
+        /*@target=Test3::==*/ t?.
                 /*@target=Test3::prop*/ /*@target=Test3::prop*/ prop
             /*@ target=num::== */ ??= getDouble();
 
-    var /*@ type=double* */ v7 = /*@target=Object::==*/ t?.
+    var /*@ type=double* */ v7 = /*@target=Test3::==*/ t?.
             /*@target=Test3::prop*/ /*@target=Test3::prop*/ prop
         /*@ target=double::+ */ += getInt();
 
-    var /*@ type=double* */ v8 = /*@target=Object::==*/ t?.
+    var /*@ type=double* */ v8 = /*@target=Test3::==*/ t?.
             /*@target=Test3::prop*/ /*@target=Test3::prop*/ prop
         /*@ target=double::+ */ += getNum();
 
     var /*@ type=double* */ v9 =
-        /*@target=Object::==*/ t?.
+        /*@target=Test3::==*/ t?.
                 /*@target=Test3::prop*/ /*@target=Test3::prop*/ prop
             /*@ target=double::+ */ += getDouble();
 
     var /*@ type=double* */ v10 = /*@ target=double::+ */ ++
-        /*@target=Object::==*/ t?.
+        /*@target=Test3::==*/ t?.
             /*@target=Test3::prop*/ /*@target=Test3::prop*/ prop;
 
-    var /*@ type=double* */ v11 = /*@target=Object::==*/
+    var /*@ type=double* */ v11 = /*@target=Test3::==*/
         t?. /*@target=Test3::prop*/ /*@target=Test3::prop*/ prop
         /*@ target=double::+ */ ++;
   }
diff --git a/pkg/front_end/testcases/inference_new/infer_assign_to_property_null_aware_upwards.dart.outline.expect b/pkg/front_end/testcases/inference_new/infer_assign_to_property_null_aware_upwards.dart.outline.expect
index 2203088..98f4342 100644
--- a/pkg/front_end/testcases/inference_new/infer_assign_to_property_null_aware_upwards.dart.outline.expect
+++ b/pkg/front_end/testcases/inference_new/infer_assign_to_property_null_aware_upwards.dart.outline.expect
@@ -8,6 +8,16 @@
     ;
   static method test(self::Test1* t) → void
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Test2 extends core::Object {
   field core::num* prop;
@@ -15,6 +25,16 @@
     ;
   static method test(self::Test2* t) → void
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Test3 extends core::Object {
   field core::double* prop;
@@ -22,6 +42,16 @@
     ;
   static method test3(self::Test3* t) → void
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method getInt() → core::int*
   ;
diff --git a/pkg/front_end/testcases/inference_new/infer_assign_to_property_null_aware_upwards.dart.strong.expect b/pkg/front_end/testcases/inference_new/infer_assign_to_property_null_aware_upwards.dart.strong.expect
index 97a828a..4f02efd 100644
--- a/pkg/front_end/testcases/inference_new/infer_assign_to_property_null_aware_upwards.dart.strong.expect
+++ b/pkg/front_end/testcases/inference_new/infer_assign_to_property_null_aware_upwards.dart.strong.expect
@@ -8,15 +8,25 @@
     : super core::Object::•()
     ;
   static method test(self::Test1* t) → void {
-    core::int* v1 = let final self::Test1* #t1 = t in #t1.{core::Object::==}(null) ?{core::int*} null : #t1.{self::Test1::prop} = self::getInt();
-    core::num* v2 = let final self::Test1* #t2 = t in #t2.{core::Object::==}(null) ?{core::num*} null : #t2.{self::Test1::prop} = self::getNum() as{TypeError} core::int*;
-    core::int* v4 = let final self::Test1* #t3 = t in #t3.{core::Object::==}(null) ?{core::int*} null : let final core::int* #t4 = #t3.{self::Test1::prop} in #t4.{core::num::==}(null) ?{core::int*} #t3.{self::Test1::prop} = self::getInt() : #t4;
-    core::num* v5 = let final self::Test1* #t5 = t in #t5.{core::Object::==}(null) ?{core::num*} null : let final core::int* #t6 = #t5.{self::Test1::prop} in #t6.{core::num::==}(null) ?{core::num*} #t5.{self::Test1::prop} = self::getNum() as{TypeError} core::int* : #t6;
-    core::int* v7 = let final self::Test1* #t7 = t in #t7.{core::Object::==}(null) ?{core::int*} null : let final core::int* #t8 = #t7.{self::Test1::prop}.{core::num::+}(self::getInt()) in let final void #t9 = #t7.{self::Test1::prop} = #t8 in #t8;
-    core::num* v8 = let final self::Test1* #t10 = t in #t10.{core::Object::==}(null) ?{core::num*} null : let final core::num* #t11 = #t10.{self::Test1::prop}.{core::num::+}(self::getNum()) as{TypeError} core::int* in let final void #t12 = #t10.{self::Test1::prop} = #t11 in #t11;
-    core::int* v10 = let final self::Test1* #t13 = t in #t13.{core::Object::==}(null) ?{core::int*} null : let final core::int* #t14 = #t13.{self::Test1::prop}.{core::num::+}(1) in let final void #t15 = #t13.{self::Test1::prop} = #t14 in #t14;
-    core::int* v11 = let final self::Test1* #t16 = t in #t16.{core::Object::==}(null) ?{core::int*} null : let final core::int* #t17 = #t16.{self::Test1::prop} in let final void #t18 = #t16.{self::Test1::prop} = #t17.{core::num::+}(1) in #t17;
+    core::int* v1 = let final self::Test1* #t1 = t in #t1.{self::Test1::==}(null) ?{core::int*} null : #t1.{self::Test1::prop} = self::getInt();
+    core::num* v2 = let final self::Test1* #t2 = t in #t2.{self::Test1::==}(null) ?{core::num*} null : #t2.{self::Test1::prop} = self::getNum() as{TypeError} core::int*;
+    core::int* v4 = let final self::Test1* #t3 = t in #t3.{self::Test1::==}(null) ?{core::int*} null : let final core::int* #t4 = #t3.{self::Test1::prop} in #t4.{core::num::==}(null) ?{core::int*} #t3.{self::Test1::prop} = self::getInt() : #t4;
+    core::num* v5 = let final self::Test1* #t5 = t in #t5.{self::Test1::==}(null) ?{core::num*} null : let final core::int* #t6 = #t5.{self::Test1::prop} in #t6.{core::num::==}(null) ?{core::num*} #t5.{self::Test1::prop} = self::getNum() as{TypeError} core::int* : #t6;
+    core::int* v7 = let final self::Test1* #t7 = t in #t7.{self::Test1::==}(null) ?{core::int*} null : let final core::int* #t8 = #t7.{self::Test1::prop}.{core::num::+}(self::getInt()) in let final void #t9 = #t7.{self::Test1::prop} = #t8 in #t8;
+    core::num* v8 = let final self::Test1* #t10 = t in #t10.{self::Test1::==}(null) ?{core::num*} null : let final core::num* #t11 = #t10.{self::Test1::prop}.{core::num::+}(self::getNum()) as{TypeError} core::int* in let final void #t12 = #t10.{self::Test1::prop} = #t11 in #t11;
+    core::int* v10 = let final self::Test1* #t13 = t in #t13.{self::Test1::==}(null) ?{core::int*} null : let final core::int* #t14 = #t13.{self::Test1::prop}.{core::num::+}(1) in let final void #t15 = #t13.{self::Test1::prop} = #t14 in #t14;
+    core::int* v11 = let final self::Test1* #t16 = t in #t16.{self::Test1::==}(null) ?{core::int*} null : let final core::int* #t17 = #t16.{self::Test1::prop} in let final void #t18 = #t16.{self::Test1::prop} = #t17.{core::num::+}(1) in #t17;
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Test2 extends core::Object {
   field core::num* prop = null;
@@ -24,18 +34,28 @@
     : super core::Object::•()
     ;
   static method test(self::Test2* t) → void {
-    core::int* v1 = let final self::Test2* #t19 = t in #t19.{core::Object::==}(null) ?{core::int*} null : #t19.{self::Test2::prop} = self::getInt();
-    core::num* v2 = let final self::Test2* #t20 = t in #t20.{core::Object::==}(null) ?{core::num*} null : #t20.{self::Test2::prop} = self::getNum();
-    core::double* v3 = let final self::Test2* #t21 = t in #t21.{core::Object::==}(null) ?{core::double*} null : #t21.{self::Test2::prop} = self::getDouble();
-    core::num* v4 = let final self::Test2* #t22 = t in #t22.{core::Object::==}(null) ?{core::num*} null : let final core::num* #t23 = #t22.{self::Test2::prop} in #t23.{core::num::==}(null) ?{core::num*} #t22.{self::Test2::prop} = self::getInt() : #t23;
-    core::num* v5 = let final self::Test2* #t24 = t in #t24.{core::Object::==}(null) ?{core::num*} null : let final core::num* #t25 = #t24.{self::Test2::prop} in #t25.{core::num::==}(null) ?{core::num*} #t24.{self::Test2::prop} = self::getNum() : #t25;
-    core::num* v6 = let final self::Test2* #t26 = t in #t26.{core::Object::==}(null) ?{core::num*} null : let final core::num* #t27 = #t26.{self::Test2::prop} in #t27.{core::num::==}(null) ?{core::num*} #t26.{self::Test2::prop} = self::getDouble() : #t27;
-    core::num* v7 = let final self::Test2* #t28 = t in #t28.{core::Object::==}(null) ?{core::num*} null : let final core::num* #t29 = #t28.{self::Test2::prop}.{core::num::+}(self::getInt()) in let final void #t30 = #t28.{self::Test2::prop} = #t29 in #t29;
-    core::num* v8 = let final self::Test2* #t31 = t in #t31.{core::Object::==}(null) ?{core::num*} null : let final core::num* #t32 = #t31.{self::Test2::prop}.{core::num::+}(self::getNum()) in let final void #t33 = #t31.{self::Test2::prop} = #t32 in #t32;
-    core::num* v9 = let final self::Test2* #t34 = t in #t34.{core::Object::==}(null) ?{core::num*} null : let final core::num* #t35 = #t34.{self::Test2::prop}.{core::num::+}(self::getDouble()) in let final void #t36 = #t34.{self::Test2::prop} = #t35 in #t35;
-    core::num* v10 = let final self::Test2* #t37 = t in #t37.{core::Object::==}(null) ?{core::num*} null : let final core::num* #t38 = #t37.{self::Test2::prop}.{core::num::+}(1) in let final void #t39 = #t37.{self::Test2::prop} = #t38 in #t38;
-    core::num* v11 = let final self::Test2* #t40 = t in #t40.{core::Object::==}(null) ?{core::num*} null : let final core::num* #t41 = #t40.{self::Test2::prop} in let final void #t42 = #t40.{self::Test2::prop} = #t41.{core::num::+}(1) in #t41;
+    core::int* v1 = let final self::Test2* #t19 = t in #t19.{self::Test2::==}(null) ?{core::int*} null : #t19.{self::Test2::prop} = self::getInt();
+    core::num* v2 = let final self::Test2* #t20 = t in #t20.{self::Test2::==}(null) ?{core::num*} null : #t20.{self::Test2::prop} = self::getNum();
+    core::double* v3 = let final self::Test2* #t21 = t in #t21.{self::Test2::==}(null) ?{core::double*} null : #t21.{self::Test2::prop} = self::getDouble();
+    core::num* v4 = let final self::Test2* #t22 = t in #t22.{self::Test2::==}(null) ?{core::num*} null : let final core::num* #t23 = #t22.{self::Test2::prop} in #t23.{core::num::==}(null) ?{core::num*} #t22.{self::Test2::prop} = self::getInt() : #t23;
+    core::num* v5 = let final self::Test2* #t24 = t in #t24.{self::Test2::==}(null) ?{core::num*} null : let final core::num* #t25 = #t24.{self::Test2::prop} in #t25.{core::num::==}(null) ?{core::num*} #t24.{self::Test2::prop} = self::getNum() : #t25;
+    core::num* v6 = let final self::Test2* #t26 = t in #t26.{self::Test2::==}(null) ?{core::num*} null : let final core::num* #t27 = #t26.{self::Test2::prop} in #t27.{core::num::==}(null) ?{core::num*} #t26.{self::Test2::prop} = self::getDouble() : #t27;
+    core::num* v7 = let final self::Test2* #t28 = t in #t28.{self::Test2::==}(null) ?{core::num*} null : let final core::num #t29 = #t28.{self::Test2::prop}.{core::num::+}(self::getInt()) in let final void #t30 = #t28.{self::Test2::prop} = #t29 in #t29;
+    core::num* v8 = let final self::Test2* #t31 = t in #t31.{self::Test2::==}(null) ?{core::num*} null : let final core::num #t32 = #t31.{self::Test2::prop}.{core::num::+}(self::getNum()) in let final void #t33 = #t31.{self::Test2::prop} = #t32 in #t32;
+    core::num* v9 = let final self::Test2* #t34 = t in #t34.{self::Test2::==}(null) ?{core::num*} null : let final core::num #t35 = #t34.{self::Test2::prop}.{core::num::+}(self::getDouble()) in let final void #t36 = #t34.{self::Test2::prop} = #t35 in #t35;
+    core::num* v10 = let final self::Test2* #t37 = t in #t37.{self::Test2::==}(null) ?{core::num*} null : let final core::num #t38 = #t37.{self::Test2::prop}.{core::num::+}(1) in let final void #t39 = #t37.{self::Test2::prop} = #t38 in #t38;
+    core::num* v11 = let final self::Test2* #t40 = t in #t40.{self::Test2::==}(null) ?{core::num*} null : let final core::num* #t41 = #t40.{self::Test2::prop} in let final void #t42 = #t40.{self::Test2::prop} = #t41.{core::num::+}(1) in #t41;
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Test3 extends core::Object {
   field core::double* prop = null;
@@ -43,16 +63,26 @@
     : super core::Object::•()
     ;
   static method test3(self::Test3* t) → void {
-    core::num* v2 = let final self::Test3* #t43 = t in #t43.{core::Object::==}(null) ?{core::num*} null : #t43.{self::Test3::prop} = self::getNum() as{TypeError} core::double*;
-    core::double* v3 = let final self::Test3* #t44 = t in #t44.{core::Object::==}(null) ?{core::double*} null : #t44.{self::Test3::prop} = self::getDouble();
-    core::num* v5 = let final self::Test3* #t45 = t in #t45.{core::Object::==}(null) ?{core::num*} null : let final core::double* #t46 = #t45.{self::Test3::prop} in #t46.{core::num::==}(null) ?{core::num*} #t45.{self::Test3::prop} = self::getNum() as{TypeError} core::double* : #t46;
-    core::double* v6 = let final self::Test3* #t47 = t in #t47.{core::Object::==}(null) ?{core::double*} null : let final core::double* #t48 = #t47.{self::Test3::prop} in #t48.{core::num::==}(null) ?{core::double*} #t47.{self::Test3::prop} = self::getDouble() : #t48;
-    core::double* v7 = let final self::Test3* #t49 = t in #t49.{core::Object::==}(null) ?{core::double*} null : let final core::double* #t50 = #t49.{self::Test3::prop}.{core::double::+}(self::getInt()) in let final void #t51 = #t49.{self::Test3::prop} = #t50 in #t50;
-    core::double* v8 = let final self::Test3* #t52 = t in #t52.{core::Object::==}(null) ?{core::double*} null : let final core::double* #t53 = #t52.{self::Test3::prop}.{core::double::+}(self::getNum()) in let final void #t54 = #t52.{self::Test3::prop} = #t53 in #t53;
-    core::double* v9 = let final self::Test3* #t55 = t in #t55.{core::Object::==}(null) ?{core::double*} null : let final core::double* #t56 = #t55.{self::Test3::prop}.{core::double::+}(self::getDouble()) in let final void #t57 = #t55.{self::Test3::prop} = #t56 in #t56;
-    core::double* v10 = let final self::Test3* #t58 = t in #t58.{core::Object::==}(null) ?{core::double*} null : let final core::double* #t59 = #t58.{self::Test3::prop}.{core::double::+}(1) in let final void #t60 = #t58.{self::Test3::prop} = #t59 in #t59;
-    core::double* v11 = let final self::Test3* #t61 = t in #t61.{core::Object::==}(null) ?{core::double*} null : let final core::double* #t62 = #t61.{self::Test3::prop} in let final void #t63 = #t61.{self::Test3::prop} = #t62.{core::double::+}(1) in #t62;
+    core::num* v2 = let final self::Test3* #t43 = t in #t43.{self::Test3::==}(null) ?{core::num*} null : #t43.{self::Test3::prop} = self::getNum() as{TypeError} core::double*;
+    core::double* v3 = let final self::Test3* #t44 = t in #t44.{self::Test3::==}(null) ?{core::double*} null : #t44.{self::Test3::prop} = self::getDouble();
+    core::num* v5 = let final self::Test3* #t45 = t in #t45.{self::Test3::==}(null) ?{core::num*} null : let final core::double* #t46 = #t45.{self::Test3::prop} in #t46.{core::num::==}(null) ?{core::num*} #t45.{self::Test3::prop} = self::getNum() as{TypeError} core::double* : #t46;
+    core::double* v6 = let final self::Test3* #t47 = t in #t47.{self::Test3::==}(null) ?{core::double*} null : let final core::double* #t48 = #t47.{self::Test3::prop} in #t48.{core::num::==}(null) ?{core::double*} #t47.{self::Test3::prop} = self::getDouble() : #t48;
+    core::double* v7 = let final self::Test3* #t49 = t in #t49.{self::Test3::==}(null) ?{core::double*} null : let final core::double #t50 = #t49.{self::Test3::prop}.{core::double::+}(self::getInt()) in let final void #t51 = #t49.{self::Test3::prop} = #t50 in #t50;
+    core::double* v8 = let final self::Test3* #t52 = t in #t52.{self::Test3::==}(null) ?{core::double*} null : let final core::double #t53 = #t52.{self::Test3::prop}.{core::double::+}(self::getNum()) in let final void #t54 = #t52.{self::Test3::prop} = #t53 in #t53;
+    core::double* v9 = let final self::Test3* #t55 = t in #t55.{self::Test3::==}(null) ?{core::double*} null : let final core::double #t56 = #t55.{self::Test3::prop}.{core::double::+}(self::getDouble()) in let final void #t57 = #t55.{self::Test3::prop} = #t56 in #t56;
+    core::double* v10 = let final self::Test3* #t58 = t in #t58.{self::Test3::==}(null) ?{core::double*} null : let final core::double #t59 = #t58.{self::Test3::prop}.{core::double::+}(1) in let final void #t60 = #t58.{self::Test3::prop} = #t59 in #t59;
+    core::double* v11 = let final self::Test3* #t61 = t in #t61.{self::Test3::==}(null) ?{core::double*} null : let final core::double* #t62 = #t61.{self::Test3::prop} in let final void #t63 = #t61.{self::Test3::prop} = #t62.{core::double::+}(1) in #t62;
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method getInt() → core::int*
   return 0;
diff --git a/pkg/front_end/testcases/inference_new/infer_assign_to_property_null_aware_upwards.dart.strong.transformed.expect b/pkg/front_end/testcases/inference_new/infer_assign_to_property_null_aware_upwards.dart.strong.transformed.expect
index 97a828a..4f02efd 100644
--- a/pkg/front_end/testcases/inference_new/infer_assign_to_property_null_aware_upwards.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference_new/infer_assign_to_property_null_aware_upwards.dart.strong.transformed.expect
@@ -8,15 +8,25 @@
     : super core::Object::•()
     ;
   static method test(self::Test1* t) → void {
-    core::int* v1 = let final self::Test1* #t1 = t in #t1.{core::Object::==}(null) ?{core::int*} null : #t1.{self::Test1::prop} = self::getInt();
-    core::num* v2 = let final self::Test1* #t2 = t in #t2.{core::Object::==}(null) ?{core::num*} null : #t2.{self::Test1::prop} = self::getNum() as{TypeError} core::int*;
-    core::int* v4 = let final self::Test1* #t3 = t in #t3.{core::Object::==}(null) ?{core::int*} null : let final core::int* #t4 = #t3.{self::Test1::prop} in #t4.{core::num::==}(null) ?{core::int*} #t3.{self::Test1::prop} = self::getInt() : #t4;
-    core::num* v5 = let final self::Test1* #t5 = t in #t5.{core::Object::==}(null) ?{core::num*} null : let final core::int* #t6 = #t5.{self::Test1::prop} in #t6.{core::num::==}(null) ?{core::num*} #t5.{self::Test1::prop} = self::getNum() as{TypeError} core::int* : #t6;
-    core::int* v7 = let final self::Test1* #t7 = t in #t7.{core::Object::==}(null) ?{core::int*} null : let final core::int* #t8 = #t7.{self::Test1::prop}.{core::num::+}(self::getInt()) in let final void #t9 = #t7.{self::Test1::prop} = #t8 in #t8;
-    core::num* v8 = let final self::Test1* #t10 = t in #t10.{core::Object::==}(null) ?{core::num*} null : let final core::num* #t11 = #t10.{self::Test1::prop}.{core::num::+}(self::getNum()) as{TypeError} core::int* in let final void #t12 = #t10.{self::Test1::prop} = #t11 in #t11;
-    core::int* v10 = let final self::Test1* #t13 = t in #t13.{core::Object::==}(null) ?{core::int*} null : let final core::int* #t14 = #t13.{self::Test1::prop}.{core::num::+}(1) in let final void #t15 = #t13.{self::Test1::prop} = #t14 in #t14;
-    core::int* v11 = let final self::Test1* #t16 = t in #t16.{core::Object::==}(null) ?{core::int*} null : let final core::int* #t17 = #t16.{self::Test1::prop} in let final void #t18 = #t16.{self::Test1::prop} = #t17.{core::num::+}(1) in #t17;
+    core::int* v1 = let final self::Test1* #t1 = t in #t1.{self::Test1::==}(null) ?{core::int*} null : #t1.{self::Test1::prop} = self::getInt();
+    core::num* v2 = let final self::Test1* #t2 = t in #t2.{self::Test1::==}(null) ?{core::num*} null : #t2.{self::Test1::prop} = self::getNum() as{TypeError} core::int*;
+    core::int* v4 = let final self::Test1* #t3 = t in #t3.{self::Test1::==}(null) ?{core::int*} null : let final core::int* #t4 = #t3.{self::Test1::prop} in #t4.{core::num::==}(null) ?{core::int*} #t3.{self::Test1::prop} = self::getInt() : #t4;
+    core::num* v5 = let final self::Test1* #t5 = t in #t5.{self::Test1::==}(null) ?{core::num*} null : let final core::int* #t6 = #t5.{self::Test1::prop} in #t6.{core::num::==}(null) ?{core::num*} #t5.{self::Test1::prop} = self::getNum() as{TypeError} core::int* : #t6;
+    core::int* v7 = let final self::Test1* #t7 = t in #t7.{self::Test1::==}(null) ?{core::int*} null : let final core::int* #t8 = #t7.{self::Test1::prop}.{core::num::+}(self::getInt()) in let final void #t9 = #t7.{self::Test1::prop} = #t8 in #t8;
+    core::num* v8 = let final self::Test1* #t10 = t in #t10.{self::Test1::==}(null) ?{core::num*} null : let final core::num* #t11 = #t10.{self::Test1::prop}.{core::num::+}(self::getNum()) as{TypeError} core::int* in let final void #t12 = #t10.{self::Test1::prop} = #t11 in #t11;
+    core::int* v10 = let final self::Test1* #t13 = t in #t13.{self::Test1::==}(null) ?{core::int*} null : let final core::int* #t14 = #t13.{self::Test1::prop}.{core::num::+}(1) in let final void #t15 = #t13.{self::Test1::prop} = #t14 in #t14;
+    core::int* v11 = let final self::Test1* #t16 = t in #t16.{self::Test1::==}(null) ?{core::int*} null : let final core::int* #t17 = #t16.{self::Test1::prop} in let final void #t18 = #t16.{self::Test1::prop} = #t17.{core::num::+}(1) in #t17;
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Test2 extends core::Object {
   field core::num* prop = null;
@@ -24,18 +34,28 @@
     : super core::Object::•()
     ;
   static method test(self::Test2* t) → void {
-    core::int* v1 = let final self::Test2* #t19 = t in #t19.{core::Object::==}(null) ?{core::int*} null : #t19.{self::Test2::prop} = self::getInt();
-    core::num* v2 = let final self::Test2* #t20 = t in #t20.{core::Object::==}(null) ?{core::num*} null : #t20.{self::Test2::prop} = self::getNum();
-    core::double* v3 = let final self::Test2* #t21 = t in #t21.{core::Object::==}(null) ?{core::double*} null : #t21.{self::Test2::prop} = self::getDouble();
-    core::num* v4 = let final self::Test2* #t22 = t in #t22.{core::Object::==}(null) ?{core::num*} null : let final core::num* #t23 = #t22.{self::Test2::prop} in #t23.{core::num::==}(null) ?{core::num*} #t22.{self::Test2::prop} = self::getInt() : #t23;
-    core::num* v5 = let final self::Test2* #t24 = t in #t24.{core::Object::==}(null) ?{core::num*} null : let final core::num* #t25 = #t24.{self::Test2::prop} in #t25.{core::num::==}(null) ?{core::num*} #t24.{self::Test2::prop} = self::getNum() : #t25;
-    core::num* v6 = let final self::Test2* #t26 = t in #t26.{core::Object::==}(null) ?{core::num*} null : let final core::num* #t27 = #t26.{self::Test2::prop} in #t27.{core::num::==}(null) ?{core::num*} #t26.{self::Test2::prop} = self::getDouble() : #t27;
-    core::num* v7 = let final self::Test2* #t28 = t in #t28.{core::Object::==}(null) ?{core::num*} null : let final core::num* #t29 = #t28.{self::Test2::prop}.{core::num::+}(self::getInt()) in let final void #t30 = #t28.{self::Test2::prop} = #t29 in #t29;
-    core::num* v8 = let final self::Test2* #t31 = t in #t31.{core::Object::==}(null) ?{core::num*} null : let final core::num* #t32 = #t31.{self::Test2::prop}.{core::num::+}(self::getNum()) in let final void #t33 = #t31.{self::Test2::prop} = #t32 in #t32;
-    core::num* v9 = let final self::Test2* #t34 = t in #t34.{core::Object::==}(null) ?{core::num*} null : let final core::num* #t35 = #t34.{self::Test2::prop}.{core::num::+}(self::getDouble()) in let final void #t36 = #t34.{self::Test2::prop} = #t35 in #t35;
-    core::num* v10 = let final self::Test2* #t37 = t in #t37.{core::Object::==}(null) ?{core::num*} null : let final core::num* #t38 = #t37.{self::Test2::prop}.{core::num::+}(1) in let final void #t39 = #t37.{self::Test2::prop} = #t38 in #t38;
-    core::num* v11 = let final self::Test2* #t40 = t in #t40.{core::Object::==}(null) ?{core::num*} null : let final core::num* #t41 = #t40.{self::Test2::prop} in let final void #t42 = #t40.{self::Test2::prop} = #t41.{core::num::+}(1) in #t41;
+    core::int* v1 = let final self::Test2* #t19 = t in #t19.{self::Test2::==}(null) ?{core::int*} null : #t19.{self::Test2::prop} = self::getInt();
+    core::num* v2 = let final self::Test2* #t20 = t in #t20.{self::Test2::==}(null) ?{core::num*} null : #t20.{self::Test2::prop} = self::getNum();
+    core::double* v3 = let final self::Test2* #t21 = t in #t21.{self::Test2::==}(null) ?{core::double*} null : #t21.{self::Test2::prop} = self::getDouble();
+    core::num* v4 = let final self::Test2* #t22 = t in #t22.{self::Test2::==}(null) ?{core::num*} null : let final core::num* #t23 = #t22.{self::Test2::prop} in #t23.{core::num::==}(null) ?{core::num*} #t22.{self::Test2::prop} = self::getInt() : #t23;
+    core::num* v5 = let final self::Test2* #t24 = t in #t24.{self::Test2::==}(null) ?{core::num*} null : let final core::num* #t25 = #t24.{self::Test2::prop} in #t25.{core::num::==}(null) ?{core::num*} #t24.{self::Test2::prop} = self::getNum() : #t25;
+    core::num* v6 = let final self::Test2* #t26 = t in #t26.{self::Test2::==}(null) ?{core::num*} null : let final core::num* #t27 = #t26.{self::Test2::prop} in #t27.{core::num::==}(null) ?{core::num*} #t26.{self::Test2::prop} = self::getDouble() : #t27;
+    core::num* v7 = let final self::Test2* #t28 = t in #t28.{self::Test2::==}(null) ?{core::num*} null : let final core::num #t29 = #t28.{self::Test2::prop}.{core::num::+}(self::getInt()) in let final void #t30 = #t28.{self::Test2::prop} = #t29 in #t29;
+    core::num* v8 = let final self::Test2* #t31 = t in #t31.{self::Test2::==}(null) ?{core::num*} null : let final core::num #t32 = #t31.{self::Test2::prop}.{core::num::+}(self::getNum()) in let final void #t33 = #t31.{self::Test2::prop} = #t32 in #t32;
+    core::num* v9 = let final self::Test2* #t34 = t in #t34.{self::Test2::==}(null) ?{core::num*} null : let final core::num #t35 = #t34.{self::Test2::prop}.{core::num::+}(self::getDouble()) in let final void #t36 = #t34.{self::Test2::prop} = #t35 in #t35;
+    core::num* v10 = let final self::Test2* #t37 = t in #t37.{self::Test2::==}(null) ?{core::num*} null : let final core::num #t38 = #t37.{self::Test2::prop}.{core::num::+}(1) in let final void #t39 = #t37.{self::Test2::prop} = #t38 in #t38;
+    core::num* v11 = let final self::Test2* #t40 = t in #t40.{self::Test2::==}(null) ?{core::num*} null : let final core::num* #t41 = #t40.{self::Test2::prop} in let final void #t42 = #t40.{self::Test2::prop} = #t41.{core::num::+}(1) in #t41;
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Test3 extends core::Object {
   field core::double* prop = null;
@@ -43,16 +63,26 @@
     : super core::Object::•()
     ;
   static method test3(self::Test3* t) → void {
-    core::num* v2 = let final self::Test3* #t43 = t in #t43.{core::Object::==}(null) ?{core::num*} null : #t43.{self::Test3::prop} = self::getNum() as{TypeError} core::double*;
-    core::double* v3 = let final self::Test3* #t44 = t in #t44.{core::Object::==}(null) ?{core::double*} null : #t44.{self::Test3::prop} = self::getDouble();
-    core::num* v5 = let final self::Test3* #t45 = t in #t45.{core::Object::==}(null) ?{core::num*} null : let final core::double* #t46 = #t45.{self::Test3::prop} in #t46.{core::num::==}(null) ?{core::num*} #t45.{self::Test3::prop} = self::getNum() as{TypeError} core::double* : #t46;
-    core::double* v6 = let final self::Test3* #t47 = t in #t47.{core::Object::==}(null) ?{core::double*} null : let final core::double* #t48 = #t47.{self::Test3::prop} in #t48.{core::num::==}(null) ?{core::double*} #t47.{self::Test3::prop} = self::getDouble() : #t48;
-    core::double* v7 = let final self::Test3* #t49 = t in #t49.{core::Object::==}(null) ?{core::double*} null : let final core::double* #t50 = #t49.{self::Test3::prop}.{core::double::+}(self::getInt()) in let final void #t51 = #t49.{self::Test3::prop} = #t50 in #t50;
-    core::double* v8 = let final self::Test3* #t52 = t in #t52.{core::Object::==}(null) ?{core::double*} null : let final core::double* #t53 = #t52.{self::Test3::prop}.{core::double::+}(self::getNum()) in let final void #t54 = #t52.{self::Test3::prop} = #t53 in #t53;
-    core::double* v9 = let final self::Test3* #t55 = t in #t55.{core::Object::==}(null) ?{core::double*} null : let final core::double* #t56 = #t55.{self::Test3::prop}.{core::double::+}(self::getDouble()) in let final void #t57 = #t55.{self::Test3::prop} = #t56 in #t56;
-    core::double* v10 = let final self::Test3* #t58 = t in #t58.{core::Object::==}(null) ?{core::double*} null : let final core::double* #t59 = #t58.{self::Test3::prop}.{core::double::+}(1) in let final void #t60 = #t58.{self::Test3::prop} = #t59 in #t59;
-    core::double* v11 = let final self::Test3* #t61 = t in #t61.{core::Object::==}(null) ?{core::double*} null : let final core::double* #t62 = #t61.{self::Test3::prop} in let final void #t63 = #t61.{self::Test3::prop} = #t62.{core::double::+}(1) in #t62;
+    core::num* v2 = let final self::Test3* #t43 = t in #t43.{self::Test3::==}(null) ?{core::num*} null : #t43.{self::Test3::prop} = self::getNum() as{TypeError} core::double*;
+    core::double* v3 = let final self::Test3* #t44 = t in #t44.{self::Test3::==}(null) ?{core::double*} null : #t44.{self::Test3::prop} = self::getDouble();
+    core::num* v5 = let final self::Test3* #t45 = t in #t45.{self::Test3::==}(null) ?{core::num*} null : let final core::double* #t46 = #t45.{self::Test3::prop} in #t46.{core::num::==}(null) ?{core::num*} #t45.{self::Test3::prop} = self::getNum() as{TypeError} core::double* : #t46;
+    core::double* v6 = let final self::Test3* #t47 = t in #t47.{self::Test3::==}(null) ?{core::double*} null : let final core::double* #t48 = #t47.{self::Test3::prop} in #t48.{core::num::==}(null) ?{core::double*} #t47.{self::Test3::prop} = self::getDouble() : #t48;
+    core::double* v7 = let final self::Test3* #t49 = t in #t49.{self::Test3::==}(null) ?{core::double*} null : let final core::double #t50 = #t49.{self::Test3::prop}.{core::double::+}(self::getInt()) in let final void #t51 = #t49.{self::Test3::prop} = #t50 in #t50;
+    core::double* v8 = let final self::Test3* #t52 = t in #t52.{self::Test3::==}(null) ?{core::double*} null : let final core::double #t53 = #t52.{self::Test3::prop}.{core::double::+}(self::getNum()) in let final void #t54 = #t52.{self::Test3::prop} = #t53 in #t53;
+    core::double* v9 = let final self::Test3* #t55 = t in #t55.{self::Test3::==}(null) ?{core::double*} null : let final core::double #t56 = #t55.{self::Test3::prop}.{core::double::+}(self::getDouble()) in let final void #t57 = #t55.{self::Test3::prop} = #t56 in #t56;
+    core::double* v10 = let final self::Test3* #t58 = t in #t58.{self::Test3::==}(null) ?{core::double*} null : let final core::double #t59 = #t58.{self::Test3::prop}.{core::double::+}(1) in let final void #t60 = #t58.{self::Test3::prop} = #t59 in #t59;
+    core::double* v11 = let final self::Test3* #t61 = t in #t61.{self::Test3::==}(null) ?{core::double*} null : let final core::double* #t62 = #t61.{self::Test3::prop} in let final void #t63 = #t61.{self::Test3::prop} = #t62.{core::double::+}(1) in #t62;
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method getInt() → core::int*
   return 0;
diff --git a/pkg/front_end/testcases/inference_new/infer_assign_to_property_super.dart b/pkg/front_end/testcases/inference_new/infer_assign_to_property_super.dart
index e3c0fc2..3ba3540 100644
--- a/pkg/front_end/testcases/inference_new/infer_assign_to_property_super.dart
+++ b/pkg/front_end/testcases/inference_new/infer_assign_to_property_super.dart
@@ -27,7 +27,7 @@
     super. /*@target=Base::member*/ member = /*@ typeArgs=B* */ f();
 
     super. /*@target=Base::member*/ /*@target=Base::member*/ member
-        /*@ target=Object::== */ ??= /*@ typeArgs=B* */ f();
+        /*@target=A::==*/ ??= /*@ typeArgs=B* */ f();
 
     super. /*@target=Base::member*/ /*@target=Base::member*/ member
         /*@ target=B::+ */ += /*@ typeArgs=C* */ f();
@@ -49,7 +49,7 @@
 
     var /*@ type=B* */ v2 =
         super. /*@target=Base::member*/ /*@target=Base::member*/ member
-            /*@ target=Object::== */ ??= /*@ typeArgs=B* */ f();
+            /*@target=A::==*/ ??= /*@ typeArgs=B* */ f();
 
     var /*@ type=A* */ v3 =
         super. /*@target=Base::member*/ /*@target=Base::member*/ member
diff --git a/pkg/front_end/testcases/inference_new/infer_assign_to_property_super.dart.outline.expect b/pkg/front_end/testcases/inference_new/infer_assign_to_property_super.dart.outline.expect
index 96af9b6..1073f30 100644
--- a/pkg/front_end/testcases/inference_new/infer_assign_to_property_super.dart.outline.expect
+++ b/pkg/front_end/testcases/inference_new/infer_assign_to_property_super.dart.outline.expect
@@ -5,6 +5,16 @@
 class A extends core::Object {
   synthetic constructor •() → self::A*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A {
   synthetic constructor •() → self::B*
@@ -26,6 +36,16 @@
   field self::B* member;
   synthetic constructor •() → self::Base*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Test extends self::Base {
   synthetic constructor •() → self::Test*
diff --git a/pkg/front_end/testcases/inference_new/infer_assign_to_property_super.dart.strong.expect b/pkg/front_end/testcases/inference_new/infer_assign_to_property_super.dart.strong.expect
index eb317ce..f55419c 100644
--- a/pkg/front_end/testcases/inference_new/infer_assign_to_property_super.dart.strong.expect
+++ b/pkg/front_end/testcases/inference_new/infer_assign_to_property_super.dart.strong.expect
@@ -6,6 +6,16 @@
   synthetic constructor •() → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A {
   synthetic constructor •() → self::B*
@@ -30,6 +40,16 @@
   synthetic constructor •() → self::Base*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Test extends self::Base {
   synthetic constructor •() → self::Test*
@@ -37,14 +57,14 @@
     ;
   method test() → void {
     super.{self::Base::member} = self::f<self::B*>();
-    super.{self::Base::member}.{core::Object::==}(null) ?{self::B*} super.{self::Base::member} = self::f<self::B*>() : null;
+    super.{self::Base::member}.{self::A::==}(null) ?{self::B*} super.{self::Base::member} = self::f<self::B*>() : null;
     super.{self::Base::member} = super.{self::Base::member}.{self::B::+}(self::f<self::C*>()) as{TypeError} self::B*;
     super.{self::Base::member} = super.{self::Base::member}.{self::B::*}(self::f<self::B*>());
     super.{self::Base::member} = super.{self::Base::member}.{self::B::&}(self::f<self::A*>());
     super.{self::Base::member} = super.{self::Base::member}.{self::B::-}(1);
     super.{self::Base::member} = super.{self::Base::member}.{self::B::-}(1);
     self::B* v1 = super.{self::Base::member} = self::f<self::B*>();
-    self::B* v2 = let final self::B* #t1 = super.{self::Base::member} in #t1.{core::Object::==}(null) ?{self::B*} super.{self::Base::member} = self::f<self::B*>() : #t1;
+    self::B* v2 = let final self::B* #t1 = super.{self::Base::member} in #t1.{self::A::==}(null) ?{self::B*} super.{self::Base::member} = self::f<self::B*>() : #t1;
     self::A* v3 = super.{self::Base::member} = super.{self::Base::member}.{self::B::+}(self::f<self::C*>()) as{TypeError} self::B*;
     self::B* v4 = super.{self::Base::member} = super.{self::Base::member}.{self::B::*}(self::f<self::B*>());
     self::C* v5 = super.{self::Base::member} = super.{self::Base::member}.{self::B::&}(self::f<self::A*>());
diff --git a/pkg/front_end/testcases/inference_new/infer_assign_to_property_super.dart.strong.transformed.expect b/pkg/front_end/testcases/inference_new/infer_assign_to_property_super.dart.strong.transformed.expect
index eb317ce..f55419c 100644
--- a/pkg/front_end/testcases/inference_new/infer_assign_to_property_super.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference_new/infer_assign_to_property_super.dart.strong.transformed.expect
@@ -6,6 +6,16 @@
   synthetic constructor •() → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A {
   synthetic constructor •() → self::B*
@@ -30,6 +40,16 @@
   synthetic constructor •() → self::Base*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Test extends self::Base {
   synthetic constructor •() → self::Test*
@@ -37,14 +57,14 @@
     ;
   method test() → void {
     super.{self::Base::member} = self::f<self::B*>();
-    super.{self::Base::member}.{core::Object::==}(null) ?{self::B*} super.{self::Base::member} = self::f<self::B*>() : null;
+    super.{self::Base::member}.{self::A::==}(null) ?{self::B*} super.{self::Base::member} = self::f<self::B*>() : null;
     super.{self::Base::member} = super.{self::Base::member}.{self::B::+}(self::f<self::C*>()) as{TypeError} self::B*;
     super.{self::Base::member} = super.{self::Base::member}.{self::B::*}(self::f<self::B*>());
     super.{self::Base::member} = super.{self::Base::member}.{self::B::&}(self::f<self::A*>());
     super.{self::Base::member} = super.{self::Base::member}.{self::B::-}(1);
     super.{self::Base::member} = super.{self::Base::member}.{self::B::-}(1);
     self::B* v1 = super.{self::Base::member} = self::f<self::B*>();
-    self::B* v2 = let final self::B* #t1 = super.{self::Base::member} in #t1.{core::Object::==}(null) ?{self::B*} super.{self::Base::member} = self::f<self::B*>() : #t1;
+    self::B* v2 = let final self::B* #t1 = super.{self::Base::member} in #t1.{self::A::==}(null) ?{self::B*} super.{self::Base::member} = self::f<self::B*>() : #t1;
     self::A* v3 = super.{self::Base::member} = super.{self::Base::member}.{self::B::+}(self::f<self::C*>()) as{TypeError} self::B*;
     self::B* v4 = super.{self::Base::member} = super.{self::Base::member}.{self::B::*}(self::f<self::B*>());
     self::C* v5 = super.{self::Base::member} = super.{self::Base::member}.{self::B::&}(self::f<self::A*>());
diff --git a/pkg/front_end/testcases/inference_new/infer_assign_to_property_super_upwards.dart.outline.expect b/pkg/front_end/testcases/inference_new/infer_assign_to_property_super_upwards.dart.outline.expect
index b019841..c71ba60 100644
--- a/pkg/front_end/testcases/inference_new/infer_assign_to_property_super_upwards.dart.outline.expect
+++ b/pkg/front_end/testcases/inference_new/infer_assign_to_property_super_upwards.dart.outline.expect
@@ -8,6 +8,16 @@
   field core::double* doubleProp;
   synthetic constructor •() → self::Base*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Test1 extends self::Base {
   synthetic constructor •() → self::Test1*
diff --git a/pkg/front_end/testcases/inference_new/infer_assign_to_property_super_upwards.dart.strong.expect b/pkg/front_end/testcases/inference_new/infer_assign_to_property_super_upwards.dart.strong.expect
index b914ec3..d3f8ea6 100644
--- a/pkg/front_end/testcases/inference_new/infer_assign_to_property_super_upwards.dart.strong.expect
+++ b/pkg/front_end/testcases/inference_new/infer_assign_to_property_super_upwards.dart.strong.expect
@@ -9,6 +9,16 @@
   synthetic constructor •() → self::Base*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Test1 extends self::Base {
   synthetic constructor •() → self::Test1*
diff --git a/pkg/front_end/testcases/inference_new/infer_assign_to_property_super_upwards.dart.strong.transformed.expect b/pkg/front_end/testcases/inference_new/infer_assign_to_property_super_upwards.dart.strong.transformed.expect
index b914ec3..d3f8ea6 100644
--- a/pkg/front_end/testcases/inference_new/infer_assign_to_property_super_upwards.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference_new/infer_assign_to_property_super_upwards.dart.strong.transformed.expect
@@ -9,6 +9,16 @@
   synthetic constructor •() → self::Base*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Test1 extends self::Base {
   synthetic constructor •() → self::Test1*
diff --git a/pkg/front_end/testcases/inference_new/infer_assign_to_property_upwards.dart.outline.expect b/pkg/front_end/testcases/inference_new/infer_assign_to_property_upwards.dart.outline.expect
index 2203088..98f4342 100644
--- a/pkg/front_end/testcases/inference_new/infer_assign_to_property_upwards.dart.outline.expect
+++ b/pkg/front_end/testcases/inference_new/infer_assign_to_property_upwards.dart.outline.expect
@@ -8,6 +8,16 @@
     ;
   static method test(self::Test1* t) → void
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Test2 extends core::Object {
   field core::num* prop;
@@ -15,6 +25,16 @@
     ;
   static method test(self::Test2* t) → void
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Test3 extends core::Object {
   field core::double* prop;
@@ -22,6 +42,16 @@
     ;
   static method test3(self::Test3* t) → void
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method getInt() → core::int*
   ;
diff --git a/pkg/front_end/testcases/inference_new/infer_assign_to_property_upwards.dart.strong.expect b/pkg/front_end/testcases/inference_new/infer_assign_to_property_upwards.dart.strong.expect
index 74320c5..9207d2f 100644
--- a/pkg/front_end/testcases/inference_new/infer_assign_to_property_upwards.dart.strong.expect
+++ b/pkg/front_end/testcases/inference_new/infer_assign_to_property_upwards.dart.strong.expect
@@ -17,6 +17,16 @@
     core::int* v10 = let final self::Test1* #t7 = t in #t7.{self::Test1::prop} = #t7.{self::Test1::prop}.{core::num::+}(1);
     core::int* v11 = let final self::Test1* #t8 = t in let final core::int* #t9 = #t8.{self::Test1::prop} in let final core::int* #t10 = #t8.{self::Test1::prop} = #t9.{core::num::+}(1) in #t9;
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Test2 extends core::Object {
   field core::num* prop = null;
@@ -36,6 +46,16 @@
     core::num* v10 = let final self::Test2* #t20 = t in #t20.{self::Test2::prop} = #t20.{self::Test2::prop}.{core::num::+}(1);
     core::num* v11 = let final self::Test2* #t21 = t in let final core::num* #t22 = #t21.{self::Test2::prop} in let final core::num* #t23 = #t21.{self::Test2::prop} = #t22.{core::num::+}(1) in #t22;
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Test3 extends core::Object {
   field core::double* prop = null;
@@ -53,6 +73,16 @@
     core::double* v10 = let final self::Test3* #t31 = t in #t31.{self::Test3::prop} = #t31.{self::Test3::prop}.{core::double::+}(1);
     core::double* v11 = let final self::Test3* #t32 = t in let final core::double* #t33 = #t32.{self::Test3::prop} in let final core::double* #t34 = #t32.{self::Test3::prop} = #t33.{core::double::+}(1) in #t33;
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method getInt() → core::int*
   return 0;
diff --git a/pkg/front_end/testcases/inference_new/infer_assign_to_property_upwards.dart.strong.transformed.expect b/pkg/front_end/testcases/inference_new/infer_assign_to_property_upwards.dart.strong.transformed.expect
index 74320c5..9207d2f 100644
--- a/pkg/front_end/testcases/inference_new/infer_assign_to_property_upwards.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference_new/infer_assign_to_property_upwards.dart.strong.transformed.expect
@@ -17,6 +17,16 @@
     core::int* v10 = let final self::Test1* #t7 = t in #t7.{self::Test1::prop} = #t7.{self::Test1::prop}.{core::num::+}(1);
     core::int* v11 = let final self::Test1* #t8 = t in let final core::int* #t9 = #t8.{self::Test1::prop} in let final core::int* #t10 = #t8.{self::Test1::prop} = #t9.{core::num::+}(1) in #t9;
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Test2 extends core::Object {
   field core::num* prop = null;
@@ -36,6 +46,16 @@
     core::num* v10 = let final self::Test2* #t20 = t in #t20.{self::Test2::prop} = #t20.{self::Test2::prop}.{core::num::+}(1);
     core::num* v11 = let final self::Test2* #t21 = t in let final core::num* #t22 = #t21.{self::Test2::prop} in let final core::num* #t23 = #t21.{self::Test2::prop} = #t22.{core::num::+}(1) in #t22;
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Test3 extends core::Object {
   field core::double* prop = null;
@@ -53,6 +73,16 @@
     core::double* v10 = let final self::Test3* #t31 = t in #t31.{self::Test3::prop} = #t31.{self::Test3::prop}.{core::double::+}(1);
     core::double* v11 = let final self::Test3* #t32 = t in let final core::double* #t33 = #t32.{self::Test3::prop} in let final core::double* #t34 = #t32.{self::Test3::prop} = #t33.{core::double::+}(1) in #t33;
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method getInt() → core::int*
   return 0;
diff --git a/pkg/front_end/testcases/inference_new/infer_assign_to_ref.dart.outline.expect b/pkg/front_end/testcases/inference_new/infer_assign_to_ref.dart.outline.expect
index 454ab6d..0a1d98a 100644
--- a/pkg/front_end/testcases/inference_new/infer_assign_to_ref.dart.outline.expect
+++ b/pkg/front_end/testcases/inference_new/infer_assign_to_ref.dart.outline.expect
@@ -6,6 +6,16 @@
   field core::int* f;
   synthetic constructor •() → self::A*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field self::A* a;
 static field core::int* b;
diff --git a/pkg/front_end/testcases/inference_new/infer_assign_to_ref.dart.strong.expect b/pkg/front_end/testcases/inference_new/infer_assign_to_ref.dart.strong.expect
index aeff6ff..06996ca 100644
--- a/pkg/front_end/testcases/inference_new/infer_assign_to_ref.dart.strong.expect
+++ b/pkg/front_end/testcases/inference_new/infer_assign_to_ref.dart.strong.expect
@@ -7,6 +7,16 @@
   synthetic constructor •() → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field self::A* a = new self::A::•();
 static field core::int* b = self::a.{self::A::f} = 1;
diff --git a/pkg/front_end/testcases/inference_new/infer_assign_to_ref.dart.strong.transformed.expect b/pkg/front_end/testcases/inference_new/infer_assign_to_ref.dart.strong.transformed.expect
index aeff6ff..06996ca 100644
--- a/pkg/front_end/testcases/inference_new/infer_assign_to_ref.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference_new/infer_assign_to_ref.dart.strong.transformed.expect
@@ -7,6 +7,16 @@
   synthetic constructor •() → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field self::A* a = new self::A::•();
 static field core::int* b = self::a.{self::A::f} = 1;
diff --git a/pkg/front_end/testcases/inference_new/infer_assign_to_static.dart b/pkg/front_end/testcases/inference_new/infer_assign_to_static.dart
index 33bd5fe..9021f82 100644
--- a/pkg/front_end/testcases/inference_new/infer_assign_to_static.dart
+++ b/pkg/front_end/testcases/inference_new/infer_assign_to_static.dart
@@ -25,7 +25,7 @@
 void test_topLevelVariable() {
   topLevelVariable = /*@ typeArgs=B* */ f();
 
-  topLevelVariable /*@ target=Object::== */ ??= /*@ typeArgs=B* */ f();
+  topLevelVariable /*@target=A::==*/ ??= /*@ typeArgs=B* */ f();
 
   topLevelVariable /*@ target=B::+ */ += /*@ typeArgs=C* */ f();
 
@@ -40,7 +40,7 @@
   var /*@ type=B* */ v1 = topLevelVariable = /*@ typeArgs=B* */ f();
 
   var /*@ type=B* */ v2 =
-      topLevelVariable /*@ target=Object::== */ ??= /*@ typeArgs=B* */ f();
+      topLevelVariable /*@target=A::==*/ ??= /*@ typeArgs=B* */ f();
 
   var /*@ type=A* */ v3 =
       topLevelVariable /*@ target=B::+ */ += /*@ typeArgs=C* */ f();
@@ -60,7 +60,7 @@
 void test_staticVariable() {
   B.staticVariable = /*@ typeArgs=B* */ f();
 
-  B.staticVariable /*@ target=Object::== */ ??= /*@ typeArgs=B* */ f();
+  B.staticVariable /*@target=A::==*/ ??= /*@ typeArgs=B* */ f();
 
   B.staticVariable /*@ target=B::+ */ += /*@ typeArgs=C* */ f();
 
@@ -75,7 +75,7 @@
   var /*@ type=B* */ v1 = B.staticVariable = /*@ typeArgs=B* */ f();
 
   var /*@ type=B* */ v2 =
-      B.staticVariable /*@ target=Object::== */ ??= /*@ typeArgs=B* */ f();
+      B.staticVariable /*@target=A::==*/ ??= /*@ typeArgs=B* */ f();
 
   var /*@ type=A* */ v3 =
       B.staticVariable /*@ target=B::+ */ += /*@ typeArgs=C* */ f();
diff --git a/pkg/front_end/testcases/inference_new/infer_assign_to_static.dart.outline.expect b/pkg/front_end/testcases/inference_new/infer_assign_to_static.dart.outline.expect
index c89d459..d161336 100644
--- a/pkg/front_end/testcases/inference_new/infer_assign_to_static.dart.outline.expect
+++ b/pkg/front_end/testcases/inference_new/infer_assign_to_static.dart.outline.expect
@@ -5,6 +5,16 @@
 class A extends core::Object {
   synthetic constructor •() → self::A*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A {
   static field self::B* staticVariable;
diff --git a/pkg/front_end/testcases/inference_new/infer_assign_to_static.dart.strong.expect b/pkg/front_end/testcases/inference_new/infer_assign_to_static.dart.strong.expect
index 2c07ffd..9128856 100644
--- a/pkg/front_end/testcases/inference_new/infer_assign_to_static.dart.strong.expect
+++ b/pkg/front_end/testcases/inference_new/infer_assign_to_static.dart.strong.expect
@@ -6,6 +6,16 @@
   synthetic constructor •() → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A {
   static field self::B* staticVariable = null;
@@ -31,14 +41,14 @@
   return null;
 static method test_topLevelVariable() → void {
   self::topLevelVariable = self::f<self::B*>();
-  self::topLevelVariable.{core::Object::==}(null) ?{self::B*} self::topLevelVariable = self::f<self::B*>() : null;
+  self::topLevelVariable.{self::A::==}(null) ?{self::B*} self::topLevelVariable = self::f<self::B*>() : null;
   self::topLevelVariable = self::topLevelVariable.{self::B::+}(self::f<self::C*>()) as{TypeError} self::B*;
   self::topLevelVariable = self::topLevelVariable.{self::B::*}(self::f<self::B*>());
   self::topLevelVariable = self::topLevelVariable.{self::B::&}(self::f<self::A*>());
   self::topLevelVariable = self::topLevelVariable.{self::B::-}(1);
   self::topLevelVariable = self::topLevelVariable.{self::B::-}(1);
   self::B* v1 = self::topLevelVariable = self::f<self::B*>();
-  self::B* v2 = let final self::B* #t1 = self::topLevelVariable in #t1.{core::Object::==}(null) ?{self::B*} self::topLevelVariable = self::f<self::B*>() : #t1;
+  self::B* v2 = let final self::B* #t1 = self::topLevelVariable in #t1.{self::A::==}(null) ?{self::B*} self::topLevelVariable = self::f<self::B*>() : #t1;
   self::A* v3 = self::topLevelVariable = self::topLevelVariable.{self::B::+}(self::f<self::C*>()) as{TypeError} self::B*;
   self::B* v4 = self::topLevelVariable = self::topLevelVariable.{self::B::*}(self::f<self::B*>());
   self::C* v5 = self::topLevelVariable = self::topLevelVariable.{self::B::&}(self::f<self::A*>());
@@ -47,14 +57,14 @@
 }
 static method test_staticVariable() → void {
   self::B::staticVariable = self::f<self::B*>();
-  self::B::staticVariable.{core::Object::==}(null) ?{self::B*} self::B::staticVariable = self::f<self::B*>() : null;
+  self::B::staticVariable.{self::A::==}(null) ?{self::B*} self::B::staticVariable = self::f<self::B*>() : null;
   self::B::staticVariable = self::B::staticVariable.{self::B::+}(self::f<self::C*>()) as{TypeError} self::B*;
   self::B::staticVariable = self::B::staticVariable.{self::B::*}(self::f<self::B*>());
   self::B::staticVariable = self::B::staticVariable.{self::B::&}(self::f<self::A*>());
   self::B::staticVariable = self::B::staticVariable.{self::B::-}(1);
   self::B::staticVariable = self::B::staticVariable.{self::B::-}(1);
   self::B* v1 = self::B::staticVariable = self::f<self::B*>();
-  self::B* v2 = let final self::B* #t4 = self::B::staticVariable in #t4.{core::Object::==}(null) ?{self::B*} self::B::staticVariable = self::f<self::B*>() : #t4;
+  self::B* v2 = let final self::B* #t4 = self::B::staticVariable in #t4.{self::A::==}(null) ?{self::B*} self::B::staticVariable = self::f<self::B*>() : #t4;
   self::A* v3 = self::B::staticVariable = self::B::staticVariable.{self::B::+}(self::f<self::C*>()) as{TypeError} self::B*;
   self::B* v4 = self::B::staticVariable = self::B::staticVariable.{self::B::*}(self::f<self::B*>());
   self::C* v5 = self::B::staticVariable = self::B::staticVariable.{self::B::&}(self::f<self::A*>());
diff --git a/pkg/front_end/testcases/inference_new/infer_assign_to_static.dart.strong.transformed.expect b/pkg/front_end/testcases/inference_new/infer_assign_to_static.dart.strong.transformed.expect
index 2c07ffd..9128856 100644
--- a/pkg/front_end/testcases/inference_new/infer_assign_to_static.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference_new/infer_assign_to_static.dart.strong.transformed.expect
@@ -6,6 +6,16 @@
   synthetic constructor •() → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A {
   static field self::B* staticVariable = null;
@@ -31,14 +41,14 @@
   return null;
 static method test_topLevelVariable() → void {
   self::topLevelVariable = self::f<self::B*>();
-  self::topLevelVariable.{core::Object::==}(null) ?{self::B*} self::topLevelVariable = self::f<self::B*>() : null;
+  self::topLevelVariable.{self::A::==}(null) ?{self::B*} self::topLevelVariable = self::f<self::B*>() : null;
   self::topLevelVariable = self::topLevelVariable.{self::B::+}(self::f<self::C*>()) as{TypeError} self::B*;
   self::topLevelVariable = self::topLevelVariable.{self::B::*}(self::f<self::B*>());
   self::topLevelVariable = self::topLevelVariable.{self::B::&}(self::f<self::A*>());
   self::topLevelVariable = self::topLevelVariable.{self::B::-}(1);
   self::topLevelVariable = self::topLevelVariable.{self::B::-}(1);
   self::B* v1 = self::topLevelVariable = self::f<self::B*>();
-  self::B* v2 = let final self::B* #t1 = self::topLevelVariable in #t1.{core::Object::==}(null) ?{self::B*} self::topLevelVariable = self::f<self::B*>() : #t1;
+  self::B* v2 = let final self::B* #t1 = self::topLevelVariable in #t1.{self::A::==}(null) ?{self::B*} self::topLevelVariable = self::f<self::B*>() : #t1;
   self::A* v3 = self::topLevelVariable = self::topLevelVariable.{self::B::+}(self::f<self::C*>()) as{TypeError} self::B*;
   self::B* v4 = self::topLevelVariable = self::topLevelVariable.{self::B::*}(self::f<self::B*>());
   self::C* v5 = self::topLevelVariable = self::topLevelVariable.{self::B::&}(self::f<self::A*>());
@@ -47,14 +57,14 @@
 }
 static method test_staticVariable() → void {
   self::B::staticVariable = self::f<self::B*>();
-  self::B::staticVariable.{core::Object::==}(null) ?{self::B*} self::B::staticVariable = self::f<self::B*>() : null;
+  self::B::staticVariable.{self::A::==}(null) ?{self::B*} self::B::staticVariable = self::f<self::B*>() : null;
   self::B::staticVariable = self::B::staticVariable.{self::B::+}(self::f<self::C*>()) as{TypeError} self::B*;
   self::B::staticVariable = self::B::staticVariable.{self::B::*}(self::f<self::B*>());
   self::B::staticVariable = self::B::staticVariable.{self::B::&}(self::f<self::A*>());
   self::B::staticVariable = self::B::staticVariable.{self::B::-}(1);
   self::B::staticVariable = self::B::staticVariable.{self::B::-}(1);
   self::B* v1 = self::B::staticVariable = self::f<self::B*>();
-  self::B* v2 = let final self::B* #t4 = self::B::staticVariable in #t4.{core::Object::==}(null) ?{self::B*} self::B::staticVariable = self::f<self::B*>() : #t4;
+  self::B* v2 = let final self::B* #t4 = self::B::staticVariable in #t4.{self::A::==}(null) ?{self::B*} self::B::staticVariable = self::f<self::B*>() : #t4;
   self::A* v3 = self::B::staticVariable = self::B::staticVariable.{self::B::+}(self::f<self::C*>()) as{TypeError} self::B*;
   self::B* v4 = self::B::staticVariable = self::B::staticVariable.{self::B::*}(self::f<self::B*>());
   self::C* v5 = self::B::staticVariable = self::B::staticVariable.{self::B::&}(self::f<self::A*>());
diff --git a/pkg/front_end/testcases/inference_new/infer_field_getter_setter_mismatch.dart.outline.expect b/pkg/front_end/testcases/inference_new/infer_field_getter_setter_mismatch.dart.outline.expect
index bbf0793..5a9c411 100644
--- a/pkg/front_end/testcases/inference_new/infer_field_getter_setter_mismatch.dart.outline.expect
+++ b/pkg/front_end/testcases/inference_new/infer_field_getter_setter_mismatch.dart.outline.expect
@@ -21,6 +21,16 @@
     ;
   abstract get x() → core::int*;
   abstract set x(core::double* value) → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A {
   field invalid-type x;
diff --git a/pkg/front_end/testcases/inference_new/infer_field_getter_setter_mismatch.dart.strong.expect b/pkg/front_end/testcases/inference_new/infer_field_getter_setter_mismatch.dart.strong.expect
index 3fa7212..9dbadb8 100644
--- a/pkg/front_end/testcases/inference_new/infer_field_getter_setter_mismatch.dart.strong.expect
+++ b/pkg/front_end/testcases/inference_new/infer_field_getter_setter_mismatch.dart.strong.expect
@@ -22,6 +22,16 @@
     ;
   abstract get x() → core::int*;
   abstract set x(core::double* value) → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A {
   field invalid-type x = null;
diff --git a/pkg/front_end/testcases/inference_new/infer_field_getter_setter_mismatch.dart.strong.transformed.expect b/pkg/front_end/testcases/inference_new/infer_field_getter_setter_mismatch.dart.strong.transformed.expect
index 3fa7212..9dbadb8 100644
--- a/pkg/front_end/testcases/inference_new/infer_field_getter_setter_mismatch.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference_new/infer_field_getter_setter_mismatch.dart.strong.transformed.expect
@@ -22,6 +22,16 @@
     ;
   abstract get x() → core::int*;
   abstract set x(core::double* value) → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A {
   field invalid-type x = null;
diff --git a/pkg/front_end/testcases/inference_new/infer_field_override_accessors.dart.outline.expect b/pkg/front_end/testcases/inference_new/infer_field_override_accessors.dart.outline.expect
index 4f2a8df..d5313b3 100644
--- a/pkg/front_end/testcases/inference_new/infer_field_override_accessors.dart.outline.expect
+++ b/pkg/front_end/testcases/inference_new/infer_field_override_accessors.dart.outline.expect
@@ -34,6 +34,16 @@
   abstract set x(self::B* value) → void;
   abstract get y() → self::B*;
   abstract set y(self::A* value) → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class B extends self::A {
   synthetic constructor •() → self::B*
diff --git a/pkg/front_end/testcases/inference_new/infer_field_override_accessors.dart.strong.expect b/pkg/front_end/testcases/inference_new/infer_field_override_accessors.dart.strong.expect
index 66a001b..070302b 100644
--- a/pkg/front_end/testcases/inference_new/infer_field_override_accessors.dart.strong.expect
+++ b/pkg/front_end/testcases/inference_new/infer_field_override_accessors.dart.strong.expect
@@ -35,6 +35,16 @@
   abstract set x(self::B* value) → void;
   abstract get y() → self::B*;
   abstract set y(self::A* value) → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class B extends self::A {
   synthetic constructor •() → self::B*
diff --git a/pkg/front_end/testcases/inference_new/infer_field_override_accessors.dart.strong.transformed.expect b/pkg/front_end/testcases/inference_new/infer_field_override_accessors.dart.strong.transformed.expect
index 66a001b..070302b 100644
--- a/pkg/front_end/testcases/inference_new/infer_field_override_accessors.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference_new/infer_field_override_accessors.dart.strong.transformed.expect
@@ -35,6 +35,16 @@
   abstract set x(self::B* value) → void;
   abstract get y() → self::B*;
   abstract set y(self::A* value) → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class B extends self::A {
   synthetic constructor •() → self::B*
diff --git a/pkg/front_end/testcases/inference_new/infer_field_override_getter_overrides_setter.dart.outline.expect b/pkg/front_end/testcases/inference_new/infer_field_override_getter_overrides_setter.dart.outline.expect
index 020678b..2b5e0f0 100644
--- a/pkg/front_end/testcases/inference_new/infer_field_override_getter_overrides_setter.dart.outline.expect
+++ b/pkg/front_end/testcases/inference_new/infer_field_override_getter_overrides_setter.dart.outline.expect
@@ -20,6 +20,16 @@
   synthetic constructor •() → self::A*
     ;
   abstract set x(core::num* value) → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class B extends self::A {
   synthetic constructor •() → self::B*
diff --git a/pkg/front_end/testcases/inference_new/infer_field_override_getter_overrides_setter.dart.strong.expect b/pkg/front_end/testcases/inference_new/infer_field_override_getter_overrides_setter.dart.strong.expect
index b69c292..42b1b6e 100644
--- a/pkg/front_end/testcases/inference_new/infer_field_override_getter_overrides_setter.dart.strong.expect
+++ b/pkg/front_end/testcases/inference_new/infer_field_override_getter_overrides_setter.dart.strong.expect
@@ -21,6 +21,16 @@
     : super core::Object::•()
     ;
   abstract set x(core::num* value) → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class B extends self::A {
   synthetic constructor •() → self::B*
diff --git a/pkg/front_end/testcases/inference_new/infer_field_override_getter_overrides_setter.dart.strong.transformed.expect b/pkg/front_end/testcases/inference_new/infer_field_override_getter_overrides_setter.dart.strong.transformed.expect
index b69c292..42b1b6e 100644
--- a/pkg/front_end/testcases/inference_new/infer_field_override_getter_overrides_setter.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference_new/infer_field_override_getter_overrides_setter.dart.strong.transformed.expect
@@ -21,6 +21,16 @@
     : super core::Object::•()
     ;
   abstract set x(core::num* value) → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class B extends self::A {
   synthetic constructor •() → self::B*
diff --git a/pkg/front_end/testcases/inference_new/infer_field_override_setter_overrides_getter.dart.outline.expect b/pkg/front_end/testcases/inference_new/infer_field_override_setter_overrides_getter.dart.outline.expect
index 593040e..b6b23f9 100644
--- a/pkg/front_end/testcases/inference_new/infer_field_override_setter_overrides_getter.dart.outline.expect
+++ b/pkg/front_end/testcases/inference_new/infer_field_override_setter_overrides_getter.dart.outline.expect
@@ -20,6 +20,16 @@
   synthetic constructor •() → self::A*
     ;
   abstract get x() → core::num*;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class B extends self::A {
   synthetic constructor •() → self::B*
diff --git a/pkg/front_end/testcases/inference_new/infer_field_override_setter_overrides_getter.dart.strong.expect b/pkg/front_end/testcases/inference_new/infer_field_override_setter_overrides_getter.dart.strong.expect
index c02f37f1..b64c762 100644
--- a/pkg/front_end/testcases/inference_new/infer_field_override_setter_overrides_getter.dart.strong.expect
+++ b/pkg/front_end/testcases/inference_new/infer_field_override_setter_overrides_getter.dart.strong.expect
@@ -21,6 +21,16 @@
     : super core::Object::•()
     ;
   abstract get x() → core::num*;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class B extends self::A {
   synthetic constructor •() → self::B*
diff --git a/pkg/front_end/testcases/inference_new/infer_field_override_setter_overrides_getter.dart.strong.transformed.expect b/pkg/front_end/testcases/inference_new/infer_field_override_setter_overrides_getter.dart.strong.transformed.expect
index c02f37f1..b64c762 100644
--- a/pkg/front_end/testcases/inference_new/infer_field_override_setter_overrides_getter.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference_new/infer_field_override_setter_overrides_getter.dart.strong.transformed.expect
@@ -21,6 +21,16 @@
     : super core::Object::•()
     ;
   abstract get x() → core::num*;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class B extends self::A {
   synthetic constructor •() → self::B*
diff --git a/pkg/front_end/testcases/inference_new/infer_instance_accessor_ref.dart b/pkg/front_end/testcases/inference_new/infer_instance_accessor_ref.dart
index af51b3b..05da853 100644
--- a/pkg/front_end/testcases/inference_new/infer_instance_accessor_ref.dart
+++ b/pkg/front_end/testcases/inference_new/infer_instance_accessor_ref.dart
@@ -22,6 +22,6 @@
 var x = a. /*@target=A::b*/ b. /*@target=B::c*/ c;
 var y =
     a. /*@ type=B* */ /*@target=A::b*/ b. /*@target=B::c*/ /*@target=B::c*/ c
-        /*@target=Object::==*/ ??= new D();
+        /*@target=C::==*/ ??= new D();
 
 main() {}
diff --git a/pkg/front_end/testcases/inference_new/infer_instance_accessor_ref.dart.outline.expect b/pkg/front_end/testcases/inference_new/infer_instance_accessor_ref.dart.outline.expect
index a468053..0ec74c4 100644
--- a/pkg/front_end/testcases/inference_new/infer_instance_accessor_ref.dart.outline.expect
+++ b/pkg/front_end/testcases/inference_new/infer_instance_accessor_ref.dart.outline.expect
@@ -6,6 +6,16 @@
   field self::B* b;
   synthetic constructor •() → self::A*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends core::Object {
   synthetic constructor •() → self::B*
@@ -14,10 +24,30 @@
     ;
   set c(self::C* value) → void
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C extends core::Object {
   synthetic constructor •() → self::C*
     ;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D extends self::C {
   synthetic constructor •() → self::D*
diff --git a/pkg/front_end/testcases/inference_new/infer_instance_accessor_ref.dart.strong.expect b/pkg/front_end/testcases/inference_new/infer_instance_accessor_ref.dart.strong.expect
index c9bc95a..c7f6c68 100644
--- a/pkg/front_end/testcases/inference_new/infer_instance_accessor_ref.dart.strong.expect
+++ b/pkg/front_end/testcases/inference_new/infer_instance_accessor_ref.dart.strong.expect
@@ -7,6 +7,16 @@
   synthetic constructor •() → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends core::Object {
   synthetic constructor •() → self::B*
@@ -15,11 +25,31 @@
   get c() → self::C*
     return null;
   set c(self::C* value) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C extends core::Object {
   synthetic constructor •() → self::C*
     : super core::Object::•()
     ;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D extends self::C {
   synthetic constructor •() → self::D*
@@ -28,5 +58,5 @@
 }
 static field self::A* a = new self::A::•();
 static field self::C* x = self::a.{self::A::b}.{self::B::c};
-static field self::C* y = let final self::B* #t1 = self::a.{self::A::b} in let final self::C* #t2 = #t1.{self::B::c} in #t2.{core::Object::==}(null) ?{self::C*} #t1.{self::B::c} = new self::D::•() : #t2;
+static field self::C* y = let final self::B* #t1 = self::a.{self::A::b} in let final self::C* #t2 = #t1.{self::B::c} in #t2.{self::C::==}(null) ?{self::C*} #t1.{self::B::c} = new self::D::•() : #t2;
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference_new/infer_instance_accessor_ref.dart.strong.transformed.expect b/pkg/front_end/testcases/inference_new/infer_instance_accessor_ref.dart.strong.transformed.expect
index c9bc95a..c7f6c68 100644
--- a/pkg/front_end/testcases/inference_new/infer_instance_accessor_ref.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference_new/infer_instance_accessor_ref.dart.strong.transformed.expect
@@ -7,6 +7,16 @@
   synthetic constructor •() → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends core::Object {
   synthetic constructor •() → self::B*
@@ -15,11 +25,31 @@
   get c() → self::C*
     return null;
   set c(self::C* value) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C extends core::Object {
   synthetic constructor •() → self::C*
     : super core::Object::•()
     ;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D extends self::C {
   synthetic constructor •() → self::D*
@@ -28,5 +58,5 @@
 }
 static field self::A* a = new self::A::•();
 static field self::C* x = self::a.{self::A::b}.{self::B::c};
-static field self::C* y = let final self::B* #t1 = self::a.{self::A::b} in let final self::C* #t2 = #t1.{self::B::c} in #t2.{core::Object::==}(null) ?{self::C*} #t1.{self::B::c} = new self::D::•() : #t2;
+static field self::C* y = let final self::B* #t1 = self::a.{self::A::b} in let final self::C* #t2 = #t1.{self::B::c} in #t2.{self::C::==}(null) ?{self::C*} #t1.{self::B::c} = new self::D::•() : #t2;
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference_new/infer_instance_field_ref.dart b/pkg/front_end/testcases/inference_new/infer_instance_field_ref.dart
index ac3418c..3fdcc26 100644
--- a/pkg/front_end/testcases/inference_new/infer_instance_field_ref.dart
+++ b/pkg/front_end/testcases/inference_new/infer_instance_field_ref.dart
@@ -20,6 +20,6 @@
 var a = new A();
 var x = a. /*@target=A::b*/ b. /*@target=B::c*/ c;
 var y = a. /*@ type=B* */ /*@target=A::b*/ b
-    . /*@target=B::c*/ /*@target=B::c*/ c /*@target=Object::==*/ ??= new D();
+    . /*@target=B::c*/ /*@target=B::c*/ c /*@target=C::==*/ ??= new D();
 
 main() {}
diff --git a/pkg/front_end/testcases/inference_new/infer_instance_field_ref.dart.outline.expect b/pkg/front_end/testcases/inference_new/infer_instance_field_ref.dart.outline.expect
index 8c060c2..b792b55 100644
--- a/pkg/front_end/testcases/inference_new/infer_instance_field_ref.dart.outline.expect
+++ b/pkg/front_end/testcases/inference_new/infer_instance_field_ref.dart.outline.expect
@@ -6,15 +6,45 @@
   field self::B* b;
   synthetic constructor •() → self::A*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends core::Object {
   field self::C* c;
   synthetic constructor •() → self::B*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C extends core::Object {
   synthetic constructor •() → self::C*
     ;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D extends self::C {
   synthetic constructor •() → self::D*
diff --git a/pkg/front_end/testcases/inference_new/infer_instance_field_ref.dart.strong.expect b/pkg/front_end/testcases/inference_new/infer_instance_field_ref.dart.strong.expect
index b7f79cd..a3a06d4 100644
--- a/pkg/front_end/testcases/inference_new/infer_instance_field_ref.dart.strong.expect
+++ b/pkg/front_end/testcases/inference_new/infer_instance_field_ref.dart.strong.expect
@@ -7,17 +7,47 @@
   synthetic constructor •() → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends core::Object {
   field self::C* c = null;
   synthetic constructor •() → self::B*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C extends core::Object {
   synthetic constructor •() → self::C*
     : super core::Object::•()
     ;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D extends self::C {
   synthetic constructor •() → self::D*
@@ -26,5 +56,5 @@
 }
 static field self::A* a = new self::A::•();
 static field self::C* x = self::a.{self::A::b}.{self::B::c};
-static field self::C* y = let final self::B* #t1 = self::a.{self::A::b} in let final self::C* #t2 = #t1.{self::B::c} in #t2.{core::Object::==}(null) ?{self::C*} #t1.{self::B::c} = new self::D::•() : #t2;
+static field self::C* y = let final self::B* #t1 = self::a.{self::A::b} in let final self::C* #t2 = #t1.{self::B::c} in #t2.{self::C::==}(null) ?{self::C*} #t1.{self::B::c} = new self::D::•() : #t2;
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference_new/infer_instance_field_ref.dart.strong.transformed.expect b/pkg/front_end/testcases/inference_new/infer_instance_field_ref.dart.strong.transformed.expect
index b7f79cd..a3a06d4 100644
--- a/pkg/front_end/testcases/inference_new/infer_instance_field_ref.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference_new/infer_instance_field_ref.dart.strong.transformed.expect
@@ -7,17 +7,47 @@
   synthetic constructor •() → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends core::Object {
   field self::C* c = null;
   synthetic constructor •() → self::B*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C extends core::Object {
   synthetic constructor •() → self::C*
     : super core::Object::•()
     ;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D extends self::C {
   synthetic constructor •() → self::D*
@@ -26,5 +56,5 @@
 }
 static field self::A* a = new self::A::•();
 static field self::C* x = self::a.{self::A::b}.{self::B::c};
-static field self::C* y = let final self::B* #t1 = self::a.{self::A::b} in let final self::C* #t2 = #t1.{self::B::c} in #t2.{core::Object::==}(null) ?{self::C*} #t1.{self::B::c} = new self::D::•() : #t2;
+static field self::C* y = let final self::B* #t1 = self::a.{self::A::b} in let final self::C* #t2 = #t1.{self::B::c} in #t2.{self::C::==}(null) ?{self::C*} #t1.{self::B::c} = new self::D::•() : #t2;
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference_new/infer_instance_field_ref_circular.dart.outline.expect b/pkg/front_end/testcases/inference_new/infer_instance_field_ref_circular.dart.outline.expect
index fee3471..8461d08 100644
--- a/pkg/front_end/testcases/inference_new/infer_instance_field_ref_circular.dart.outline.expect
+++ b/pkg/front_end/testcases/inference_new/infer_instance_field_ref_circular.dart.outline.expect
@@ -15,6 +15,16 @@
   field () →* () →* invalid-type c;
   synthetic constructor •() → self::A*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field self::A* a;
 static field () →* invalid-type x;
diff --git a/pkg/front_end/testcases/inference_new/infer_instance_field_ref_circular.dart.strong.expect b/pkg/front_end/testcases/inference_new/infer_instance_field_ref_circular.dart.strong.expect
index 0f7cb20..c85274a 100644
--- a/pkg/front_end/testcases/inference_new/infer_instance_field_ref_circular.dart.strong.expect
+++ b/pkg/front_end/testcases/inference_new/infer_instance_field_ref_circular.dart.strong.expect
@@ -16,6 +16,16 @@
   synthetic constructor •() → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field self::A* a = new self::A::•();
 static field () →* invalid-type x = () → invalid-type => self::a.{self::A::b};
diff --git a/pkg/front_end/testcases/inference_new/infer_instance_field_ref_circular.dart.strong.transformed.expect b/pkg/front_end/testcases/inference_new/infer_instance_field_ref_circular.dart.strong.transformed.expect
index 0f7cb20..c85274a 100644
--- a/pkg/front_end/testcases/inference_new/infer_instance_field_ref_circular.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference_new/infer_instance_field_ref_circular.dart.strong.transformed.expect
@@ -16,6 +16,16 @@
   synthetic constructor •() → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field self::A* a = new self::A::•();
 static field () →* invalid-type x = () → invalid-type => self::a.{self::A::b};
diff --git a/pkg/front_end/testcases/inference_new/infer_use_of_void.dart.outline.expect b/pkg/front_end/testcases/inference_new/infer_use_of_void.dart.outline.expect
index 2013872..ac93d82 100644
--- a/pkg/front_end/testcases/inference_new/infer_use_of_void.dart.outline.expect
+++ b/pkg/front_end/testcases/inference_new/infer_use_of_void.dart.outline.expect
@@ -7,6 +7,16 @@
     ;
   method f() → void
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C extends self::B {
   synthetic constructor •() → self::C*
diff --git a/pkg/front_end/testcases/inference_new/infer_use_of_void.dart.strong.expect b/pkg/front_end/testcases/inference_new/infer_use_of_void.dart.strong.expect
index 35473b7..84ba2e5 100644
--- a/pkg/front_end/testcases/inference_new/infer_use_of_void.dart.strong.expect
+++ b/pkg/front_end/testcases/inference_new/infer_use_of_void.dart.strong.expect
@@ -7,6 +7,16 @@
     : super core::Object::•()
     ;
   method f() → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C extends self::B {
   synthetic constructor •() → self::C*
diff --git a/pkg/front_end/testcases/inference_new/infer_use_of_void.dart.strong.transformed.expect b/pkg/front_end/testcases/inference_new/infer_use_of_void.dart.strong.transformed.expect
index 35473b7..84ba2e5 100644
--- a/pkg/front_end/testcases/inference_new/infer_use_of_void.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference_new/infer_use_of_void.dart.strong.transformed.expect
@@ -7,6 +7,16 @@
     : super core::Object::•()
     ;
   method f() → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C extends self::B {
   synthetic constructor •() → self::C*
diff --git a/pkg/front_end/testcases/inference_new/multiple_interface_inheritance.dart.outline.expect b/pkg/front_end/testcases/inference_new/multiple_interface_inheritance.dart.outline.expect
index 934d9e8..6f237d8 100644
--- a/pkg/front_end/testcases/inference_new/multiple_interface_inheritance.dart.outline.expect
+++ b/pkg/front_end/testcases/inference_new/multiple_interface_inheritance.dart.outline.expect
@@ -6,16 +6,46 @@
   synthetic constructor •() → self::I1*
     ;
   abstract method f(core::int* i) → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class I2 extends core::Object {
   synthetic constructor •() → self::I2*
     ;
   abstract method f(core::Object* o) → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class C extends core::Object implements self::I1, self::I2 {
   synthetic constructor •() → self::C*
     ;
   abstract forwarding-stub method f(core::Object* o) → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D extends self::C {
   synthetic constructor •() → self::D*
@@ -26,6 +56,16 @@
 abstract class E extends core::Object implements self::I2, self::I1 {
   synthetic constructor •() → self::E*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class F extends self::E {
   synthetic constructor •() → self::F*
diff --git a/pkg/front_end/testcases/inference_new/multiple_interface_inheritance.dart.strong.expect b/pkg/front_end/testcases/inference_new/multiple_interface_inheritance.dart.strong.expect
index f04213d..064074a 100644
--- a/pkg/front_end/testcases/inference_new/multiple_interface_inheritance.dart.strong.expect
+++ b/pkg/front_end/testcases/inference_new/multiple_interface_inheritance.dart.strong.expect
@@ -7,18 +7,48 @@
     : super core::Object::•()
     ;
   abstract method f(core::int* i) → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class I2 extends core::Object {
   synthetic constructor •() → self::I2*
     : super core::Object::•()
     ;
   abstract method f(core::Object* o) → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class C extends core::Object implements self::I1, self::I2 {
   synthetic constructor •() → self::C*
     : super core::Object::•()
     ;
   abstract forwarding-stub method f(core::Object* o) → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D extends self::C {
   synthetic constructor •() → self::D*
@@ -30,6 +60,16 @@
   synthetic constructor •() → self::E*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class F extends self::E {
   synthetic constructor •() → self::F*
diff --git a/pkg/front_end/testcases/inference_new/multiple_interface_inheritance.dart.strong.transformed.expect b/pkg/front_end/testcases/inference_new/multiple_interface_inheritance.dart.strong.transformed.expect
index f04213d..064074a 100644
--- a/pkg/front_end/testcases/inference_new/multiple_interface_inheritance.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference_new/multiple_interface_inheritance.dart.strong.transformed.expect
@@ -7,18 +7,48 @@
     : super core::Object::•()
     ;
   abstract method f(core::int* i) → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class I2 extends core::Object {
   synthetic constructor •() → self::I2*
     : super core::Object::•()
     ;
   abstract method f(core::Object* o) → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class C extends core::Object implements self::I1, self::I2 {
   synthetic constructor •() → self::C*
     : super core::Object::•()
     ;
   abstract forwarding-stub method f(core::Object* o) → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D extends self::C {
   synthetic constructor •() → self::D*
@@ -30,6 +60,16 @@
   synthetic constructor •() → self::E*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class F extends self::E {
   synthetic constructor •() → self::F*
diff --git a/pkg/front_end/testcases/inference_new/null_aware_property_get.dart b/pkg/front_end/testcases/inference_new/null_aware_property_get.dart
index dca1e29..207824e 100644
--- a/pkg/front_end/testcases/inference_new/null_aware_property_get.dart
+++ b/pkg/front_end/testcases/inference_new/null_aware_property_get.dart
@@ -11,6 +11,6 @@
 
 main() {
   Class c;
-  num Function() f = /*@ target=Object::== */ /*@type=Class**/ c
+  num Function() f = /*@target=Class::==*/ /*@type=Class**/ c
       ?. /*@ target=Class::method */ method;
 }
diff --git a/pkg/front_end/testcases/inference_new/null_aware_property_get.dart.outline.expect b/pkg/front_end/testcases/inference_new/null_aware_property_get.dart.outline.expect
index 63107b0..77f2116 100644
--- a/pkg/front_end/testcases/inference_new/null_aware_property_get.dart.outline.expect
+++ b/pkg/front_end/testcases/inference_new/null_aware_property_get.dart.outline.expect
@@ -7,6 +7,16 @@
     ;
   method method<T extends core::Object* = dynamic>() → self::Class::method::T*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/inference_new/null_aware_property_get.dart.strong.expect b/pkg/front_end/testcases/inference_new/null_aware_property_get.dart.strong.expect
index ff1741a..db574fc 100644
--- a/pkg/front_end/testcases/inference_new/null_aware_property_get.dart.strong.expect
+++ b/pkg/front_end/testcases/inference_new/null_aware_property_get.dart.strong.expect
@@ -8,8 +8,18 @@
     ;
   method method<T extends core::Object* = dynamic>() → self::Class::method::T*
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   self::Class* c;
-  () →* core::num* f = let final self::Class* #t1 = c in #t1.{core::Object::==}(null) ?{() →* core::num*} null : #t1.{self::Class::method}<core::num*>;
+  () →* core::num* f = let final self::Class* #t1 = c in #t1.{self::Class::==}(null) ?{() →* core::num*} null : #t1.{self::Class::method}<core::num*>;
 }
diff --git a/pkg/front_end/testcases/inference_new/null_aware_property_get.dart.strong.transformed.expect b/pkg/front_end/testcases/inference_new/null_aware_property_get.dart.strong.transformed.expect
index ff1741a..db574fc 100644
--- a/pkg/front_end/testcases/inference_new/null_aware_property_get.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference_new/null_aware_property_get.dart.strong.transformed.expect
@@ -8,8 +8,18 @@
     ;
   method method<T extends core::Object* = dynamic>() → self::Class::method::T*
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   self::Class* c;
-  () →* core::num* f = let final self::Class* #t1 = c in #t1.{core::Object::==}(null) ?{() →* core::num*} null : #t1.{self::Class::method}<core::num*>;
+  () →* core::num* f = let final self::Class* #t1 = c in #t1.{self::Class::==}(null) ?{() →* core::num*} null : #t1.{self::Class::method}<core::num*>;
 }
diff --git a/pkg/front_end/testcases/inference_new/property_assign_combiner.dart.outline.expect b/pkg/front_end/testcases/inference_new/property_assign_combiner.dart.outline.expect
index 3cae436..db1fc24 100644
--- a/pkg/front_end/testcases/inference_new/property_assign_combiner.dart.outline.expect
+++ b/pkg/front_end/testcases/inference_new/property_assign_combiner.dart.outline.expect
@@ -9,6 +9,16 @@
     ;
   operator *(self::D* value) → self::C*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends core::Object {
   synthetic constructor •() → self::B*
@@ -17,6 +27,16 @@
     ;
   operator *(self::F* value) → self::E*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C extends self::B {
   synthetic constructor •() → self::C*
@@ -25,14 +45,44 @@
 class D extends core::Object {
   synthetic constructor •() → self::D*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class E extends core::Object {
   synthetic constructor •() → self::E*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class F extends core::Object {
   synthetic constructor •() → self::F*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class G extends core::Object {
   synthetic constructor •() → self::G*
@@ -41,6 +91,16 @@
     ;
   set target(self::B* value) → void
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method f<T extends core::Object* = dynamic>() → self::f::T*
   ;
diff --git a/pkg/front_end/testcases/inference_new/property_assign_combiner.dart.strong.expect b/pkg/front_end/testcases/inference_new/property_assign_combiner.dart.strong.expect
index 85a7b60..90fb161 100644
--- a/pkg/front_end/testcases/inference_new/property_assign_combiner.dart.strong.expect
+++ b/pkg/front_end/testcases/inference_new/property_assign_combiner.dart.strong.expect
@@ -10,6 +10,16 @@
     return null;
   operator *(self::D* value) → self::C*
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends core::Object {
   synthetic constructor •() → self::B*
@@ -19,6 +29,16 @@
     return null;
   operator *(self::F* value) → self::E*
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C extends self::B {
   synthetic constructor •() → self::C*
@@ -29,16 +49,46 @@
   synthetic constructor •() → self::D*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class E extends core::Object {
   synthetic constructor •() → self::E*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class F extends core::Object {
   synthetic constructor •() → self::F*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class G extends core::Object {
   synthetic constructor •() → self::G*
@@ -47,6 +97,16 @@
   get target() → self::A*
     return null;
   set target(self::B* value) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method f<T extends core::Object* = dynamic>() → self::f::T*
   return null;
diff --git a/pkg/front_end/testcases/inference_new/property_assign_combiner.dart.strong.transformed.expect b/pkg/front_end/testcases/inference_new/property_assign_combiner.dart.strong.transformed.expect
index 85a7b60..90fb161 100644
--- a/pkg/front_end/testcases/inference_new/property_assign_combiner.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference_new/property_assign_combiner.dart.strong.transformed.expect
@@ -10,6 +10,16 @@
     return null;
   operator *(self::D* value) → self::C*
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends core::Object {
   synthetic constructor •() → self::B*
@@ -19,6 +29,16 @@
     return null;
   operator *(self::F* value) → self::E*
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C extends self::B {
   synthetic constructor •() → self::C*
@@ -29,16 +49,46 @@
   synthetic constructor •() → self::D*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class E extends core::Object {
   synthetic constructor •() → self::E*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class F extends core::Object {
   synthetic constructor •() → self::F*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class G extends core::Object {
   synthetic constructor •() → self::G*
@@ -47,6 +97,16 @@
   get target() → self::A*
     return null;
   set target(self::B* value) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method f<T extends core::Object* = dynamic>() → self::f::T*
   return null;
diff --git a/pkg/front_end/testcases/inference_new/property_get_toplevel.dart.outline.expect b/pkg/front_end/testcases/inference_new/property_get_toplevel.dart.outline.expect
index ea79db2..ce0f56f 100644
--- a/pkg/front_end/testcases/inference_new/property_get_toplevel.dart.outline.expect
+++ b/pkg/front_end/testcases/inference_new/property_get_toplevel.dart.outline.expect
@@ -10,6 +10,16 @@
     ;
   method function() → core::int*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field self::C* c;
 static field core::int* field_ref;
diff --git a/pkg/front_end/testcases/inference_new/property_get_toplevel.dart.strong.expect b/pkg/front_end/testcases/inference_new/property_get_toplevel.dart.strong.expect
index 92a8ca1c..30ff676 100644
--- a/pkg/front_end/testcases/inference_new/property_get_toplevel.dart.strong.expect
+++ b/pkg/front_end/testcases/inference_new/property_get_toplevel.dart.strong.expect
@@ -11,6 +11,16 @@
     return 0;
   method function() → core::int*
     return 0;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field self::C* c = new self::C::•();
 static field core::int* field_ref = self::c.{self::C::field};
diff --git a/pkg/front_end/testcases/inference_new/property_get_toplevel.dart.strong.transformed.expect b/pkg/front_end/testcases/inference_new/property_get_toplevel.dart.strong.transformed.expect
index 92a8ca1c..30ff676 100644
--- a/pkg/front_end/testcases/inference_new/property_get_toplevel.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference_new/property_get_toplevel.dart.strong.transformed.expect
@@ -11,6 +11,16 @@
     return 0;
   method function() → core::int*
     return 0;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field self::C* c = new self::C::•();
 static field core::int* field_ref = self::c.{self::C::field};
diff --git a/pkg/front_end/testcases/inference_new/static_assign_combiner.dart.outline.expect b/pkg/front_end/testcases/inference_new/static_assign_combiner.dart.outline.expect
index fc93d6b..f0f13f1 100644
--- a/pkg/front_end/testcases/inference_new/static_assign_combiner.dart.outline.expect
+++ b/pkg/front_end/testcases/inference_new/static_assign_combiner.dart.outline.expect
@@ -9,6 +9,16 @@
     ;
   operator *(self::D* value) → self::C*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends core::Object {
   synthetic constructor •() → self::B*
@@ -17,6 +27,16 @@
     ;
   operator *(self::F* value) → self::E*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C extends self::B {
   synthetic constructor •() → self::C*
@@ -25,14 +45,44 @@
 class D extends core::Object {
   synthetic constructor •() → self::D*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class E extends core::Object {
   synthetic constructor •() → self::E*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class F extends core::Object {
   synthetic constructor •() → self::F*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method f<T extends core::Object* = dynamic>() → self::f::T*
   ;
diff --git a/pkg/front_end/testcases/inference_new/static_assign_combiner.dart.strong.expect b/pkg/front_end/testcases/inference_new/static_assign_combiner.dart.strong.expect
index cc0f51e..32b56d9 100644
--- a/pkg/front_end/testcases/inference_new/static_assign_combiner.dart.strong.expect
+++ b/pkg/front_end/testcases/inference_new/static_assign_combiner.dart.strong.expect
@@ -10,6 +10,16 @@
     return null;
   operator *(self::D* value) → self::C*
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends core::Object {
   synthetic constructor •() → self::B*
@@ -19,6 +29,16 @@
     return null;
   operator *(self::F* value) → self::E*
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C extends self::B {
   synthetic constructor •() → self::C*
@@ -29,16 +49,46 @@
   synthetic constructor •() → self::D*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class E extends core::Object {
   synthetic constructor •() → self::E*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class F extends core::Object {
   synthetic constructor •() → self::F*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method f<T extends core::Object* = dynamic>() → self::f::T*
   return null;
diff --git a/pkg/front_end/testcases/inference_new/static_assign_combiner.dart.strong.transformed.expect b/pkg/front_end/testcases/inference_new/static_assign_combiner.dart.strong.transformed.expect
index cc0f51e..32b56d9 100644
--- a/pkg/front_end/testcases/inference_new/static_assign_combiner.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference_new/static_assign_combiner.dart.strong.transformed.expect
@@ -10,6 +10,16 @@
     return null;
   operator *(self::D* value) → self::C*
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends core::Object {
   synthetic constructor •() → self::B*
@@ -19,6 +29,16 @@
     return null;
   operator *(self::F* value) → self::E*
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C extends self::B {
   synthetic constructor •() → self::C*
@@ -29,16 +49,46 @@
   synthetic constructor •() → self::D*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class E extends core::Object {
   synthetic constructor •() → self::E*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class F extends core::Object {
   synthetic constructor •() → self::F*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method f<T extends core::Object* = dynamic>() → self::f::T*
   return null;
diff --git a/pkg/front_end/testcases/inference_new/super_index_get.dart.outline.expect b/pkg/front_end/testcases/inference_new/super_index_get.dart.outline.expect
index e2f9f00..d430452 100644
--- a/pkg/front_end/testcases/inference_new/super_index_get.dart.outline.expect
+++ b/pkg/front_end/testcases/inference_new/super_index_get.dart.outline.expect
@@ -9,6 +9,16 @@
     ;
   operator [](core::int* x) → core::num*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C extends self::B {
   synthetic constructor •() → self::C*
diff --git a/pkg/front_end/testcases/inference_new/super_index_get.dart.strong.expect b/pkg/front_end/testcases/inference_new/super_index_get.dart.strong.expect
index 3f1fcb0..091d7c9 100644
--- a/pkg/front_end/testcases/inference_new/super_index_get.dart.strong.expect
+++ b/pkg/front_end/testcases/inference_new/super_index_get.dart.strong.expect
@@ -10,6 +10,16 @@
     ;
   operator [](core::int* x) → core::num*
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C extends self::B {
   synthetic constructor •() → self::C*
diff --git a/pkg/front_end/testcases/inference_new/super_index_get.dart.strong.transformed.expect b/pkg/front_end/testcases/inference_new/super_index_get.dart.strong.transformed.expect
index 3f1fcb0..091d7c9 100644
--- a/pkg/front_end/testcases/inference_new/super_index_get.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference_new/super_index_get.dart.strong.transformed.expect
@@ -10,6 +10,16 @@
     ;
   operator [](core::int* x) → core::num*
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C extends self::B {
   synthetic constructor •() → self::C*
diff --git a/pkg/front_end/testcases/inference_new/super_index_get_substitution.dart.outline.expect b/pkg/front_end/testcases/inference_new/super_index_get_substitution.dart.outline.expect
index 409c0e2..8d61fee 100644
--- a/pkg/front_end/testcases/inference_new/super_index_get_substitution.dart.outline.expect
+++ b/pkg/front_end/testcases/inference_new/super_index_get_substitution.dart.outline.expect
@@ -8,6 +8,16 @@
 class D<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::D<self::D::T*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class E<T extends core::Object* = dynamic> extends self::D<self::E::T*> {
   synthetic constructor •() → self::E<self::E::T*>*
@@ -18,6 +28,16 @@
     ;
   operator [](generic-covariant-impl self::E<self::B::T*>* x) → self::D<self::B::T*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C<U extends core::Object* = dynamic> extends self::B<asy::Future<self::C::U*>*> {
   synthetic constructor •() → self::C<self::C::U*>*
diff --git a/pkg/front_end/testcases/inference_new/super_index_get_substitution.dart.strong.expect b/pkg/front_end/testcases/inference_new/super_index_get_substitution.dart.strong.expect
index 4a6d293..c5ac861 100644
--- a/pkg/front_end/testcases/inference_new/super_index_get_substitution.dart.strong.expect
+++ b/pkg/front_end/testcases/inference_new/super_index_get_substitution.dart.strong.expect
@@ -9,6 +9,16 @@
   synthetic constructor •() → self::D<self::D::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class E<T extends core::Object* = dynamic> extends self::D<self::E::T*> {
   synthetic constructor •() → self::E<self::E::T*>*
@@ -21,6 +31,16 @@
     ;
   operator [](generic-covariant-impl self::E<self::B::T*>* x) → self::D<self::B::T*>*
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C<U extends core::Object* = dynamic> extends self::B<asy::Future<self::C::U*>*> {
   synthetic constructor •() → self::C<self::C::U*>*
diff --git a/pkg/front_end/testcases/inference_new/super_index_get_substitution.dart.strong.transformed.expect b/pkg/front_end/testcases/inference_new/super_index_get_substitution.dart.strong.transformed.expect
index 4a6d293..c5ac861 100644
--- a/pkg/front_end/testcases/inference_new/super_index_get_substitution.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference_new/super_index_get_substitution.dart.strong.transformed.expect
@@ -9,6 +9,16 @@
   synthetic constructor •() → self::D<self::D::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class E<T extends core::Object* = dynamic> extends self::D<self::E::T*> {
   synthetic constructor •() → self::E<self::E::T*>*
@@ -21,6 +31,16 @@
     ;
   operator [](generic-covariant-impl self::E<self::B::T*>* x) → self::D<self::B::T*>*
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C<U extends core::Object* = dynamic> extends self::B<asy::Future<self::C::U*>*> {
   synthetic constructor •() → self::C<self::C::U*>*
diff --git a/pkg/front_end/testcases/inference_new/switch.dart.outline.expect b/pkg/front_end/testcases/inference_new/switch.dart.outline.expect
index ccbc21c..537f280 100644
--- a/pkg/front_end/testcases/inference_new/switch.dart.outline.expect
+++ b/pkg/front_end/testcases/inference_new/switch.dart.outline.expect
@@ -6,6 +6,16 @@
   const constructor •() → self::C<self::C::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method f<T extends core::Object* = dynamic>() → self::f::T*
   ;
diff --git a/pkg/front_end/testcases/inference_new/switch.dart.strong.expect b/pkg/front_end/testcases/inference_new/switch.dart.strong.expect
index 8d636a2..9f523ad 100644
--- a/pkg/front_end/testcases/inference_new/switch.dart.strong.expect
+++ b/pkg/front_end/testcases/inference_new/switch.dart.strong.expect
@@ -6,6 +6,16 @@
   const constructor •() → self::C<self::C::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method f<T extends core::Object* = dynamic>() → self::f::T*
   return null;
diff --git a/pkg/front_end/testcases/inference_new/switch.dart.strong.transformed.expect b/pkg/front_end/testcases/inference_new/switch.dart.strong.transformed.expect
index 8d636a2..9f523ad 100644
--- a/pkg/front_end/testcases/inference_new/switch.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference_new/switch.dart.strong.transformed.expect
@@ -6,6 +6,16 @@
   const constructor •() → self::C<self::C::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method f<T extends core::Object* = dynamic>() → self::f::T*
   return null;
diff --git a/pkg/front_end/testcases/inference_new/top_level_field_depends_on_multiple_inheritance.dart.outline.expect b/pkg/front_end/testcases/inference_new/top_level_field_depends_on_multiple_inheritance.dart.outline.expect
index d517114..5fffe41 100644
--- a/pkg/front_end/testcases/inference_new/top_level_field_depends_on_multiple_inheritance.dart.outline.expect
+++ b/pkg/front_end/testcases/inference_new/top_level_field_depends_on_multiple_inheritance.dart.outline.expect
@@ -5,6 +5,16 @@
 class A extends core::Object {
   synthetic constructor •() → self::A*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A {
   synthetic constructor •() → self::B*
@@ -18,21 +28,61 @@
   synthetic constructor •() → self::D*
     ;
   abstract method foo() → self::A*;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class E extends core::Object {
   synthetic constructor •() → self::E*
     ;
   abstract method foo() → self::B*;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class F extends core::Object {
   synthetic constructor •() → self::F*
     ;
   abstract method foo() → core::Object*;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class G extends core::Object implements self::D, self::E, self::F {
   synthetic constructor •() → self::G*
     ;
   abstract forwarding-stub method foo() → self::B*;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class H extends self::G {
   synthetic constructor •() → self::H*
diff --git a/pkg/front_end/testcases/inference_new/top_level_field_depends_on_multiple_inheritance.dart.strong.expect b/pkg/front_end/testcases/inference_new/top_level_field_depends_on_multiple_inheritance.dart.strong.expect
index 05eb0f3..25ce978 100644
--- a/pkg/front_end/testcases/inference_new/top_level_field_depends_on_multiple_inheritance.dart.strong.expect
+++ b/pkg/front_end/testcases/inference_new/top_level_field_depends_on_multiple_inheritance.dart.strong.expect
@@ -6,6 +6,16 @@
   synthetic constructor •() → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A {
   synthetic constructor •() → self::B*
@@ -22,24 +32,64 @@
     : super core::Object::•()
     ;
   abstract method foo() → self::A*;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class E extends core::Object {
   synthetic constructor •() → self::E*
     : super core::Object::•()
     ;
   abstract method foo() → self::B*;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class F extends core::Object {
   synthetic constructor •() → self::F*
     : super core::Object::•()
     ;
   abstract method foo() → core::Object*;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class G extends core::Object implements self::D, self::E, self::F {
   synthetic constructor •() → self::G*
     : super core::Object::•()
     ;
   abstract forwarding-stub method foo() → self::B*;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class H extends self::G {
   synthetic constructor •() → self::H*
diff --git a/pkg/front_end/testcases/inference_new/top_level_field_depends_on_multiple_inheritance.dart.strong.transformed.expect b/pkg/front_end/testcases/inference_new/top_level_field_depends_on_multiple_inheritance.dart.strong.transformed.expect
index 05eb0f3..25ce978 100644
--- a/pkg/front_end/testcases/inference_new/top_level_field_depends_on_multiple_inheritance.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference_new/top_level_field_depends_on_multiple_inheritance.dart.strong.transformed.expect
@@ -6,6 +6,16 @@
   synthetic constructor •() → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A {
   synthetic constructor •() → self::B*
@@ -22,24 +32,64 @@
     : super core::Object::•()
     ;
   abstract method foo() → self::A*;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class E extends core::Object {
   synthetic constructor •() → self::E*
     : super core::Object::•()
     ;
   abstract method foo() → self::B*;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class F extends core::Object {
   synthetic constructor •() → self::F*
     : super core::Object::•()
     ;
   abstract method foo() → core::Object*;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class G extends core::Object implements self::D, self::E, self::F {
   synthetic constructor •() → self::G*
     : super core::Object::•()
     ;
   abstract forwarding-stub method foo() → self::B*;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class H extends self::G {
   synthetic constructor •() → self::H*
diff --git a/pkg/front_end/testcases/instantiate_to_bound/all_steps.dart.outline.expect b/pkg/front_end/testcases/instantiate_to_bound/all_steps.dart.outline.expect
index 814e963..83b3e9b 100644
--- a/pkg/front_end/testcases/instantiate_to_bound/all_steps.dart.outline.expect
+++ b/pkg/front_end/testcases/instantiate_to_bound/all_steps.dart.outline.expect
@@ -5,14 +5,44 @@
 class B<X extends core::Object* = dynamic, Y extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::B<self::B::X*, self::B::Y*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C<X extends core::Object* = dynamic, Y extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::C<self::C::X*, self::C::Y*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D<X extends self::B<self::D::X*, self::D::Y*>* = self::B<dynamic, dynamic>*, Y extends self::C<self::D::X*, self::D::Y*>* = self::C<dynamic, dynamic>*, Z extends (self::D::Y*) →* self::D::X* = (core::Null?) →* self::B<dynamic, dynamic>*, W extends core::num* = core::num*> extends core::Object {
   synthetic constructor •() → self::D<self::D::X*, self::D::Y*, self::D::Z*, self::D::W*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/instantiate_to_bound/all_steps.dart.strong.expect b/pkg/front_end/testcases/instantiate_to_bound/all_steps.dart.strong.expect
index 6202c0e..d74ed47 100644
--- a/pkg/front_end/testcases/instantiate_to_bound/all_steps.dart.strong.expect
+++ b/pkg/front_end/testcases/instantiate_to_bound/all_steps.dart.strong.expect
@@ -6,16 +6,46 @@
   synthetic constructor •() → self::B<self::B::X*, self::B::Y*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C<X extends core::Object* = dynamic, Y extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::C<self::C::X*, self::C::Y*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D<X extends self::B<self::D::X*, self::D::Y*>* = self::B<dynamic, dynamic>*, Y extends self::C<self::D::X*, self::D::Y*>* = self::C<dynamic, dynamic>*, Z extends (self::D::Y*) →* self::D::X* = (core::Null?) →* self::B<dynamic, dynamic>*, W extends core::num* = core::num*> extends core::Object {
   synthetic constructor •() → self::D<self::D::X*, self::D::Y*, self::D::Z*, self::D::W*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   self::D<self::B<dynamic, dynamic>*, self::C<dynamic, dynamic>*, (core::Null?) →* self::B<dynamic, dynamic>*, core::num*>* d;
diff --git a/pkg/front_end/testcases/instantiate_to_bound/all_steps.dart.strong.transformed.expect b/pkg/front_end/testcases/instantiate_to_bound/all_steps.dart.strong.transformed.expect
index 6202c0e..d74ed47 100644
--- a/pkg/front_end/testcases/instantiate_to_bound/all_steps.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/instantiate_to_bound/all_steps.dart.strong.transformed.expect
@@ -6,16 +6,46 @@
   synthetic constructor •() → self::B<self::B::X*, self::B::Y*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C<X extends core::Object* = dynamic, Y extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::C<self::C::X*, self::C::Y*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D<X extends self::B<self::D::X*, self::D::Y*>* = self::B<dynamic, dynamic>*, Y extends self::C<self::D::X*, self::D::Y*>* = self::C<dynamic, dynamic>*, Z extends (self::D::Y*) →* self::D::X* = (core::Null?) →* self::B<dynamic, dynamic>*, W extends core::num* = core::num*> extends core::Object {
   synthetic constructor •() → self::D<self::D::X*, self::D::Y*, self::D::Z*, self::D::W*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   self::D<self::B<dynamic, dynamic>*, self::C<dynamic, dynamic>*, (core::Null?) →* self::B<dynamic, dynamic>*, core::num*>* d;
diff --git a/pkg/front_end/testcases/instantiate_to_bound/body_generic_classes_from_dill.dart.outline.expect b/pkg/front_end/testcases/instantiate_to_bound/body_generic_classes_from_dill.dart.outline.expect
index da836cb..440862d 100644
--- a/pkg/front_end/testcases/instantiate_to_bound/body_generic_classes_from_dill.dart.outline.expect
+++ b/pkg/front_end/testcases/instantiate_to_bound/body_generic_classes_from_dill.dart.outline.expect
@@ -9,6 +9,16 @@
     ;
   method foo() → dynamic
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/instantiate_to_bound/body_generic_classes_from_dill.dart.strong.expect b/pkg/front_end/testcases/instantiate_to_bound/body_generic_classes_from_dill.dart.strong.expect
index 3cf1e93..13c8f84 100644
--- a/pkg/front_end/testcases/instantiate_to_bound/body_generic_classes_from_dill.dart.strong.expect
+++ b/pkg/front_end/testcases/instantiate_to_bound/body_generic_classes_from_dill.dart.strong.expect
@@ -10,9 +10,19 @@
     : super core::Object::•()
     ;
   method foo() → dynamic {
-    col::LinkedListEntry<col::LinkedListEntry<dynamic>*>* bar;
+    col::LinkedListEntry<col::LinkedListEntry<dynamic>>* bar;
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
-  col::LinkedListEntry<col::LinkedListEntry<dynamic>*>* bar;
+  col::LinkedListEntry<col::LinkedListEntry<dynamic>>* bar;
 }
diff --git a/pkg/front_end/testcases/instantiate_to_bound/body_generic_classes_from_dill.dart.strong.transformed.expect b/pkg/front_end/testcases/instantiate_to_bound/body_generic_classes_from_dill.dart.strong.transformed.expect
index 3cf1e93..13c8f84 100644
--- a/pkg/front_end/testcases/instantiate_to_bound/body_generic_classes_from_dill.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/instantiate_to_bound/body_generic_classes_from_dill.dart.strong.transformed.expect
@@ -10,9 +10,19 @@
     : super core::Object::•()
     ;
   method foo() → dynamic {
-    col::LinkedListEntry<col::LinkedListEntry<dynamic>*>* bar;
+    col::LinkedListEntry<col::LinkedListEntry<dynamic>>* bar;
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
-  col::LinkedListEntry<col::LinkedListEntry<dynamic>*>* bar;
+  col::LinkedListEntry<col::LinkedListEntry<dynamic>>* bar;
 }
diff --git a/pkg/front_end/testcases/instantiate_to_bound/body_literal_list.dart.outline.expect b/pkg/front_end/testcases/instantiate_to_bound/body_literal_list.dart.outline.expect
index ddec6fc..606dba7 100644
--- a/pkg/front_end/testcases/instantiate_to_bound/body_literal_list.dart.outline.expect
+++ b/pkg/front_end/testcases/instantiate_to_bound/body_literal_list.dart.outline.expect
@@ -5,12 +5,32 @@
 class A<T extends core::num* = core::num*> extends core::Object {
   synthetic constructor •() → self::A<self::A::T*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends core::Object {
   synthetic constructor •() → self::B*
     ;
   method foo() → dynamic
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/instantiate_to_bound/body_literal_list.dart.strong.expect b/pkg/front_end/testcases/instantiate_to_bound/body_literal_list.dart.strong.expect
index d9e8f1c..c26dbbe 100644
--- a/pkg/front_end/testcases/instantiate_to_bound/body_literal_list.dart.strong.expect
+++ b/pkg/front_end/testcases/instantiate_to_bound/body_literal_list.dart.strong.expect
@@ -6,6 +6,16 @@
   synthetic constructor •() → self::A<self::A::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends core::Object {
   synthetic constructor •() → self::B*
@@ -14,6 +24,16 @@
   method foo() → dynamic {
     core::List<self::A<core::num*>*>* a = <self::A<core::num*>*>[];
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   core::List<self::A<core::num*>*>* a = <self::A<core::num*>*>[];
diff --git a/pkg/front_end/testcases/instantiate_to_bound/body_literal_list.dart.strong.transformed.expect b/pkg/front_end/testcases/instantiate_to_bound/body_literal_list.dart.strong.transformed.expect
index d9e8f1c..c26dbbe 100644
--- a/pkg/front_end/testcases/instantiate_to_bound/body_literal_list.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/instantiate_to_bound/body_literal_list.dart.strong.transformed.expect
@@ -6,6 +6,16 @@
   synthetic constructor •() → self::A<self::A::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends core::Object {
   synthetic constructor •() → self::B*
@@ -14,6 +24,16 @@
   method foo() → dynamic {
     core::List<self::A<core::num*>*>* a = <self::A<core::num*>*>[];
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   core::List<self::A<core::num*>*>* a = <self::A<core::num*>*>[];
diff --git a/pkg/front_end/testcases/instantiate_to_bound/body_literal_list_with_generic_argument.dart.outline.expect b/pkg/front_end/testcases/instantiate_to_bound/body_literal_list_with_generic_argument.dart.outline.expect
index 9257cd4..05777f7 100644
--- a/pkg/front_end/testcases/instantiate_to_bound/body_literal_list_with_generic_argument.dart.outline.expect
+++ b/pkg/front_end/testcases/instantiate_to_bound/body_literal_list_with_generic_argument.dart.outline.expect
@@ -5,12 +5,32 @@
 class A<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::A<self::A::T*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B<U extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::B<self::B::U*>*
     ;
   method fun() → dynamic
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/instantiate_to_bound/body_literal_list_with_generic_argument.dart.strong.expect b/pkg/front_end/testcases/instantiate_to_bound/body_literal_list_with_generic_argument.dart.strong.expect
index c180e2a..050d2f5 100644
--- a/pkg/front_end/testcases/instantiate_to_bound/body_literal_list_with_generic_argument.dart.strong.expect
+++ b/pkg/front_end/testcases/instantiate_to_bound/body_literal_list_with_generic_argument.dart.strong.expect
@@ -6,6 +6,16 @@
   synthetic constructor •() → self::A<self::A::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B<U extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::B<self::B::U*>*
@@ -15,5 +25,15 @@
     core::List<self::A<self::B::U*>*>* foo = <self::A<self::B::U*>*>[];
     core::List<self::A<core::num*>*>* bar = <self::A<core::num*>*>[];
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/instantiate_to_bound/body_literal_list_with_generic_argument.dart.strong.transformed.expect b/pkg/front_end/testcases/instantiate_to_bound/body_literal_list_with_generic_argument.dart.strong.transformed.expect
index c180e2a..050d2f5 100644
--- a/pkg/front_end/testcases/instantiate_to_bound/body_literal_list_with_generic_argument.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/instantiate_to_bound/body_literal_list_with_generic_argument.dart.strong.transformed.expect
@@ -6,6 +6,16 @@
   synthetic constructor •() → self::A<self::A::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B<U extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::B<self::B::U*>*
@@ -15,5 +25,15 @@
     core::List<self::A<self::B::U*>*>* foo = <self::A<self::B::U*>*>[];
     core::List<self::A<core::num*>*>* bar = <self::A<core::num*>*>[];
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/instantiate_to_bound/body_literal_map.dart.outline.expect b/pkg/front_end/testcases/instantiate_to_bound/body_literal_map.dart.outline.expect
index ddec6fc..606dba7 100644
--- a/pkg/front_end/testcases/instantiate_to_bound/body_literal_map.dart.outline.expect
+++ b/pkg/front_end/testcases/instantiate_to_bound/body_literal_map.dart.outline.expect
@@ -5,12 +5,32 @@
 class A<T extends core::num* = core::num*> extends core::Object {
   synthetic constructor •() → self::A<self::A::T*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends core::Object {
   synthetic constructor •() → self::B*
     ;
   method foo() → dynamic
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/instantiate_to_bound/body_literal_map.dart.strong.expect b/pkg/front_end/testcases/instantiate_to_bound/body_literal_map.dart.strong.expect
index fc06cc7..623aa4e 100644
--- a/pkg/front_end/testcases/instantiate_to_bound/body_literal_map.dart.strong.expect
+++ b/pkg/front_end/testcases/instantiate_to_bound/body_literal_map.dart.strong.expect
@@ -6,6 +6,16 @@
   synthetic constructor •() → self::A<self::A::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends core::Object {
   synthetic constructor •() → self::B*
@@ -14,6 +24,16 @@
   method foo() → dynamic {
     core::Map<self::A<core::num*>*, self::A<core::num*>*>* a = <self::A<core::num*>*, self::A<core::num*>*>{};
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   core::Map<self::A<core::num*>*, self::A<core::num*>*>* a = <self::A<core::num*>*, self::A<core::num*>*>{};
diff --git a/pkg/front_end/testcases/instantiate_to_bound/body_literal_map.dart.strong.transformed.expect b/pkg/front_end/testcases/instantiate_to_bound/body_literal_map.dart.strong.transformed.expect
index fc06cc7..623aa4e 100644
--- a/pkg/front_end/testcases/instantiate_to_bound/body_literal_map.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/instantiate_to_bound/body_literal_map.dart.strong.transformed.expect
@@ -6,6 +6,16 @@
   synthetic constructor •() → self::A<self::A::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends core::Object {
   synthetic constructor •() → self::B*
@@ -14,6 +24,16 @@
   method foo() → dynamic {
     core::Map<self::A<core::num*>*, self::A<core::num*>*>* a = <self::A<core::num*>*, self::A<core::num*>*>{};
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   core::Map<self::A<core::num*>*, self::A<core::num*>*>* a = <self::A<core::num*>*, self::A<core::num*>*>{};
diff --git a/pkg/front_end/testcases/instantiate_to_bound/body_omitted_bound.dart.outline.expect b/pkg/front_end/testcases/instantiate_to_bound/body_omitted_bound.dart.outline.expect
index 829ba14..8539265 100644
--- a/pkg/front_end/testcases/instantiate_to_bound/body_omitted_bound.dart.outline.expect
+++ b/pkg/front_end/testcases/instantiate_to_bound/body_omitted_bound.dart.outline.expect
@@ -7,12 +7,32 @@
 class A<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::A<self::A::T*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C extends core::Object {
   synthetic constructor •() → self::C*
     ;
   method fun() → dynamic
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/instantiate_to_bound/body_omitted_bound.dart.strong.expect b/pkg/front_end/testcases/instantiate_to_bound/body_omitted_bound.dart.strong.expect
index 19fd0f6..df8cda7 100644
--- a/pkg/front_end/testcases/instantiate_to_bound/body_omitted_bound.dart.strong.expect
+++ b/pkg/front_end/testcases/instantiate_to_bound/body_omitted_bound.dart.strong.expect
@@ -9,6 +9,16 @@
   synthetic constructor •() → self::A<self::A::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C extends core::Object {
   synthetic constructor •() → self::C*
@@ -18,6 +28,16 @@
     self::A<dynamic>* a;
     col::DoubleLinkedQueue<dynamic>* c;
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   self::A<dynamic>* a;
diff --git a/pkg/front_end/testcases/instantiate_to_bound/body_omitted_bound.dart.strong.transformed.expect b/pkg/front_end/testcases/instantiate_to_bound/body_omitted_bound.dart.strong.transformed.expect
index 19fd0f6..df8cda7 100644
--- a/pkg/front_end/testcases/instantiate_to_bound/body_omitted_bound.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/instantiate_to_bound/body_omitted_bound.dart.strong.transformed.expect
@@ -9,6 +9,16 @@
   synthetic constructor •() → self::A<self::A::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C extends core::Object {
   synthetic constructor •() → self::C*
@@ -18,6 +28,16 @@
     self::A<dynamic>* a;
     col::DoubleLinkedQueue<dynamic>* c;
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   self::A<dynamic>* a;
diff --git a/pkg/front_end/testcases/instantiate_to_bound/body_super_bounded_type.dart.outline.expect b/pkg/front_end/testcases/instantiate_to_bound/body_super_bounded_type.dart.outline.expect
index bef6eb8..48401ff 100644
--- a/pkg/front_end/testcases/instantiate_to_bound/body_super_bounded_type.dart.outline.expect
+++ b/pkg/front_end/testcases/instantiate_to_bound/body_super_bounded_type.dart.outline.expect
@@ -5,12 +5,32 @@
 class A<T extends self::A<self::A::T*>* = self::A<dynamic>*> extends core::Object {
   synthetic constructor •() → self::A<self::A::T*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends core::Object {
   synthetic constructor •() → self::B*
     ;
   method foo() → dynamic
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/instantiate_to_bound/body_super_bounded_type.dart.strong.expect b/pkg/front_end/testcases/instantiate_to_bound/body_super_bounded_type.dart.strong.expect
index 77bf163..0db1c9c 100644
--- a/pkg/front_end/testcases/instantiate_to_bound/body_super_bounded_type.dart.strong.expect
+++ b/pkg/front_end/testcases/instantiate_to_bound/body_super_bounded_type.dart.strong.expect
@@ -6,6 +6,16 @@
   synthetic constructor •() → self::A<self::A::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends core::Object {
   synthetic constructor •() → self::B*
@@ -14,6 +24,16 @@
   method foo() → dynamic {
     self::A<self::A<dynamic>*>* a;
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   self::A<self::A<dynamic>*>* a;
diff --git a/pkg/front_end/testcases/instantiate_to_bound/body_super_bounded_type.dart.strong.transformed.expect b/pkg/front_end/testcases/instantiate_to_bound/body_super_bounded_type.dart.strong.transformed.expect
index 77bf163..0db1c9c 100644
--- a/pkg/front_end/testcases/instantiate_to_bound/body_super_bounded_type.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/instantiate_to_bound/body_super_bounded_type.dart.strong.transformed.expect
@@ -6,6 +6,16 @@
   synthetic constructor •() → self::A<self::A::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends core::Object {
   synthetic constructor •() → self::B*
@@ -14,6 +24,16 @@
   method foo() → dynamic {
     self::A<self::A<dynamic>*>* a;
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   self::A<self::A<dynamic>*>* a;
diff --git a/pkg/front_end/testcases/instantiate_to_bound/body_typedef_literal_list.dart.outline.expect b/pkg/front_end/testcases/instantiate_to_bound/body_typedef_literal_list.dart.outline.expect
index e828a66..2ff0b2a 100644
--- a/pkg/front_end/testcases/instantiate_to_bound/body_typedef_literal_list.dart.outline.expect
+++ b/pkg/front_end/testcases/instantiate_to_bound/body_typedef_literal_list.dart.outline.expect
@@ -8,6 +8,16 @@
     ;
   method foo() → dynamic
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/instantiate_to_bound/body_typedef_literal_list.dart.strong.expect b/pkg/front_end/testcases/instantiate_to_bound/body_typedef_literal_list.dart.strong.expect
index 1a0ffd7..ffbaa4e9 100644
--- a/pkg/front_end/testcases/instantiate_to_bound/body_typedef_literal_list.dart.strong.expect
+++ b/pkg/front_end/testcases/instantiate_to_bound/body_typedef_literal_list.dart.strong.expect
@@ -10,6 +10,16 @@
   method foo() → dynamic {
     core::List<(core::num*) →* dynamic>* a = <(core::num*) →* dynamic>[];
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   core::List<(core::num*) →* dynamic>* a = <(core::num*) →* dynamic>[];
diff --git a/pkg/front_end/testcases/instantiate_to_bound/body_typedef_literal_list.dart.strong.transformed.expect b/pkg/front_end/testcases/instantiate_to_bound/body_typedef_literal_list.dart.strong.transformed.expect
index 1a0ffd7..ffbaa4e9 100644
--- a/pkg/front_end/testcases/instantiate_to_bound/body_typedef_literal_list.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/instantiate_to_bound/body_typedef_literal_list.dart.strong.transformed.expect
@@ -10,6 +10,16 @@
   method foo() → dynamic {
     core::List<(core::num*) →* dynamic>* a = <(core::num*) →* dynamic>[];
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   core::List<(core::num*) →* dynamic>* a = <(core::num*) →* dynamic>[];
diff --git a/pkg/front_end/testcases/instantiate_to_bound/body_typedef_literal_list_with_generic_argument.dart.outline.expect b/pkg/front_end/testcases/instantiate_to_bound/body_typedef_literal_list_with_generic_argument.dart.outline.expect
index d6a3a24..cd57723 100644
--- a/pkg/front_end/testcases/instantiate_to_bound/body_typedef_literal_list_with_generic_argument.dart.outline.expect
+++ b/pkg/front_end/testcases/instantiate_to_bound/body_typedef_literal_list_with_generic_argument.dart.outline.expect
@@ -8,6 +8,16 @@
     ;
   method fun() → dynamic
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/instantiate_to_bound/body_typedef_literal_list_with_generic_argument.dart.strong.expect b/pkg/front_end/testcases/instantiate_to_bound/body_typedef_literal_list_with_generic_argument.dart.strong.expect
index c12b23e..5d68c3e 100644
--- a/pkg/front_end/testcases/instantiate_to_bound/body_typedef_literal_list_with_generic_argument.dart.strong.expect
+++ b/pkg/front_end/testcases/instantiate_to_bound/body_typedef_literal_list_with_generic_argument.dart.strong.expect
@@ -11,6 +11,16 @@
     core::List<(self::B::U*) →* dynamic>* foo = <(self::B::U*) →* dynamic>[];
     core::List<(core::num*) →* dynamic>* bar = <(core::num*) →* dynamic>[];
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   core::List<(core::num*) →* dynamic>* bar = <(core::num*) →* dynamic>[];
diff --git a/pkg/front_end/testcases/instantiate_to_bound/body_typedef_literal_list_with_generic_argument.dart.strong.transformed.expect b/pkg/front_end/testcases/instantiate_to_bound/body_typedef_literal_list_with_generic_argument.dart.strong.transformed.expect
index c12b23e..5d68c3e 100644
--- a/pkg/front_end/testcases/instantiate_to_bound/body_typedef_literal_list_with_generic_argument.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/instantiate_to_bound/body_typedef_literal_list_with_generic_argument.dart.strong.transformed.expect
@@ -11,6 +11,16 @@
     core::List<(self::B::U*) →* dynamic>* foo = <(self::B::U*) →* dynamic>[];
     core::List<(core::num*) →* dynamic>* bar = <(core::num*) →* dynamic>[];
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   core::List<(core::num*) →* dynamic>* bar = <(core::num*) →* dynamic>[];
diff --git a/pkg/front_end/testcases/instantiate_to_bound/body_typedef_literal_map.dart.outline.expect b/pkg/front_end/testcases/instantiate_to_bound/body_typedef_literal_map.dart.outline.expect
index e828a66..2ff0b2a 100644
--- a/pkg/front_end/testcases/instantiate_to_bound/body_typedef_literal_map.dart.outline.expect
+++ b/pkg/front_end/testcases/instantiate_to_bound/body_typedef_literal_map.dart.outline.expect
@@ -8,6 +8,16 @@
     ;
   method foo() → dynamic
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/instantiate_to_bound/body_typedef_literal_map.dart.strong.expect b/pkg/front_end/testcases/instantiate_to_bound/body_typedef_literal_map.dart.strong.expect
index 62cd600..98b8917f 100644
--- a/pkg/front_end/testcases/instantiate_to_bound/body_typedef_literal_map.dart.strong.expect
+++ b/pkg/front_end/testcases/instantiate_to_bound/body_typedef_literal_map.dart.strong.expect
@@ -10,6 +10,16 @@
   method foo() → dynamic {
     core::Map<(core::num*) →* dynamic, (core::num*) →* dynamic>* a = <(core::num*) →* dynamic, (core::num*) →* dynamic>{};
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   core::Map<(core::num*) →* dynamic, (core::num*) →* dynamic>* a = <(core::num*) →* dynamic, (core::num*) →* dynamic>{};
diff --git a/pkg/front_end/testcases/instantiate_to_bound/body_typedef_literal_map.dart.strong.transformed.expect b/pkg/front_end/testcases/instantiate_to_bound/body_typedef_literal_map.dart.strong.transformed.expect
index 62cd600..98b8917f 100644
--- a/pkg/front_end/testcases/instantiate_to_bound/body_typedef_literal_map.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/instantiate_to_bound/body_typedef_literal_map.dart.strong.transformed.expect
@@ -10,6 +10,16 @@
   method foo() → dynamic {
     core::Map<(core::num*) →* dynamic, (core::num*) →* dynamic>* a = <(core::num*) →* dynamic, (core::num*) →* dynamic>{};
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   core::Map<(core::num*) →* dynamic, (core::num*) →* dynamic>* a = <(core::num*) →* dynamic, (core::num*) →* dynamic>{};
diff --git a/pkg/front_end/testcases/instantiate_to_bound/body_typedef_omitted_bound.dart.outline.expect b/pkg/front_end/testcases/instantiate_to_bound/body_typedef_omitted_bound.dart.outline.expect
index 0a850b0..0cbd4a0 100644
--- a/pkg/front_end/testcases/instantiate_to_bound/body_typedef_omitted_bound.dart.outline.expect
+++ b/pkg/front_end/testcases/instantiate_to_bound/body_typedef_omitted_bound.dart.outline.expect
@@ -8,6 +8,16 @@
     ;
   method foo() → dynamic
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/instantiate_to_bound/body_typedef_omitted_bound.dart.strong.expect b/pkg/front_end/testcases/instantiate_to_bound/body_typedef_omitted_bound.dart.strong.expect
index 455e663..c8b6364 100644
--- a/pkg/front_end/testcases/instantiate_to_bound/body_typedef_omitted_bound.dart.strong.expect
+++ b/pkg/front_end/testcases/instantiate_to_bound/body_typedef_omitted_bound.dart.strong.expect
@@ -10,6 +10,16 @@
   method foo() → dynamic {
     (dynamic) →* dynamic a;
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   (dynamic) →* dynamic a;
diff --git a/pkg/front_end/testcases/instantiate_to_bound/body_typedef_omitted_bound.dart.strong.transformed.expect b/pkg/front_end/testcases/instantiate_to_bound/body_typedef_omitted_bound.dart.strong.transformed.expect
index 455e663..c8b6364 100644
--- a/pkg/front_end/testcases/instantiate_to_bound/body_typedef_omitted_bound.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/instantiate_to_bound/body_typedef_omitted_bound.dart.strong.transformed.expect
@@ -10,6 +10,16 @@
   method foo() → dynamic {
     (dynamic) →* dynamic a;
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   (dynamic) →* dynamic a;
diff --git a/pkg/front_end/testcases/instantiate_to_bound/body_typedef_super_bounded_type.dart.outline.expect b/pkg/front_end/testcases/instantiate_to_bound/body_typedef_super_bounded_type.dart.outline.expect
index bb96cdb..34bbbc4b 100644
--- a/pkg/front_end/testcases/instantiate_to_bound/body_typedef_super_bounded_type.dart.outline.expect
+++ b/pkg/front_end/testcases/instantiate_to_bound/body_typedef_super_bounded_type.dart.outline.expect
@@ -9,6 +9,16 @@
     ;
   method foo() → dynamic
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/instantiate_to_bound/body_typedef_super_bounded_type.dart.strong.expect b/pkg/front_end/testcases/instantiate_to_bound/body_typedef_super_bounded_type.dart.strong.expect
index d17c1dd..f1a59e5 100644
--- a/pkg/front_end/testcases/instantiate_to_bound/body_typedef_super_bounded_type.dart.strong.expect
+++ b/pkg/front_end/testcases/instantiate_to_bound/body_typedef_super_bounded_type.dart.strong.expect
@@ -11,6 +11,16 @@
   method foo() → dynamic {
     ((dynamic) →* dynamic) →* dynamic b;
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   ((dynamic) →* dynamic) →* dynamic b;
diff --git a/pkg/front_end/testcases/instantiate_to_bound/body_typedef_super_bounded_type.dart.strong.transformed.expect b/pkg/front_end/testcases/instantiate_to_bound/body_typedef_super_bounded_type.dart.strong.transformed.expect
index d17c1dd..f1a59e5 100644
--- a/pkg/front_end/testcases/instantiate_to_bound/body_typedef_super_bounded_type.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/instantiate_to_bound/body_typedef_super_bounded_type.dart.strong.transformed.expect
@@ -11,6 +11,16 @@
   method foo() → dynamic {
     ((dynamic) →* dynamic) →* dynamic b;
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   ((dynamic) →* dynamic) →* dynamic b;
diff --git a/pkg/front_end/testcases/instantiate_to_bound/contravariant_dependence.dart.outline.expect b/pkg/front_end/testcases/instantiate_to_bound/contravariant_dependence.dart.outline.expect
index 38562f5..c8b1a35 100644
--- a/pkg/front_end/testcases/instantiate_to_bound/contravariant_dependence.dart.outline.expect
+++ b/pkg/front_end/testcases/instantiate_to_bound/contravariant_dependence.dart.outline.expect
@@ -5,6 +5,16 @@
 class C<X extends core::num* = core::num*, Y extends (self::C::X*) →* void = (core::Null?) →* void> extends core::Object {
   synthetic constructor •() → self::C<self::C::X*, self::C::Y*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field self::C<core::num*, (core::Null?) →* void>* c;
 static method main() → dynamic
diff --git a/pkg/front_end/testcases/instantiate_to_bound/contravariant_dependence.dart.strong.expect b/pkg/front_end/testcases/instantiate_to_bound/contravariant_dependence.dart.strong.expect
index 6389a65..9fd6c52 100644
--- a/pkg/front_end/testcases/instantiate_to_bound/contravariant_dependence.dart.strong.expect
+++ b/pkg/front_end/testcases/instantiate_to_bound/contravariant_dependence.dart.strong.expect
@@ -6,6 +6,16 @@
   synthetic constructor •() → self::C<self::C::X*, self::C::Y*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field self::C<core::num*, (core::Null?) →* void>* c;
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/instantiate_to_bound/contravariant_dependence.dart.strong.transformed.expect b/pkg/front_end/testcases/instantiate_to_bound/contravariant_dependence.dart.strong.transformed.expect
index 6389a65..9fd6c52 100644
--- a/pkg/front_end/testcases/instantiate_to_bound/contravariant_dependence.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/instantiate_to_bound/contravariant_dependence.dart.strong.transformed.expect
@@ -6,6 +6,16 @@
   synthetic constructor •() → self::C<self::C::X*, self::C::Y*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field self::C<core::num*, (core::Null?) →* void>* c;
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/instantiate_to_bound/contravariant_dependence_in_literals.dart.outline.expect b/pkg/front_end/testcases/instantiate_to_bound/contravariant_dependence_in_literals.dart.outline.expect
index 60fb2e3..776a72c 100644
--- a/pkg/front_end/testcases/instantiate_to_bound/contravariant_dependence_in_literals.dart.outline.expect
+++ b/pkg/front_end/testcases/instantiate_to_bound/contravariant_dependence_in_literals.dart.outline.expect
@@ -5,6 +5,16 @@
 class C<X extends core::num* = core::num*, Y extends (self::C::X*) →* void = (core::Null?) →* void> extends core::Object {
   synthetic constructor •() → self::C<self::C::X*, self::C::Y*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field core::List<self::C<core::num*, (core::Null?) →* void>*>* lc;
 static field core::Map<self::C<core::num*, (core::Null?) →* void>*, self::C<core::num*, (core::Null?) →* void>*>* mc;
diff --git a/pkg/front_end/testcases/instantiate_to_bound/contravariant_dependence_in_literals.dart.strong.expect b/pkg/front_end/testcases/instantiate_to_bound/contravariant_dependence_in_literals.dart.strong.expect
index 592f642..ec08f56 100644
--- a/pkg/front_end/testcases/instantiate_to_bound/contravariant_dependence_in_literals.dart.strong.expect
+++ b/pkg/front_end/testcases/instantiate_to_bound/contravariant_dependence_in_literals.dart.strong.expect
@@ -6,6 +6,16 @@
   synthetic constructor •() → self::C<self::C::X*, self::C::Y*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field core::List<self::C<core::num*, (core::Null?) →* void>*>* lc = <self::C<core::num*, (core::Null?) →* void>*>[];
 static field core::Map<self::C<core::num*, (core::Null?) →* void>*, self::C<core::num*, (core::Null?) →* void>*>* mc = <self::C<core::num*, (core::Null?) →* void>*, self::C<core::num*, (core::Null?) →* void>*>{};
diff --git a/pkg/front_end/testcases/instantiate_to_bound/contravariant_dependence_in_literals.dart.strong.transformed.expect b/pkg/front_end/testcases/instantiate_to_bound/contravariant_dependence_in_literals.dart.strong.transformed.expect
index 592f642..ec08f56 100644
--- a/pkg/front_end/testcases/instantiate_to_bound/contravariant_dependence_in_literals.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/instantiate_to_bound/contravariant_dependence_in_literals.dart.strong.transformed.expect
@@ -6,6 +6,16 @@
   synthetic constructor •() → self::C<self::C::X*, self::C::Y*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field core::List<self::C<core::num*, (core::Null?) →* void>*>* lc = <self::C<core::num*, (core::Null?) →* void>*>[];
 static field core::Map<self::C<core::num*, (core::Null?) →* void>*, self::C<core::num*, (core::Null?) →* void>*>* mc = <self::C<core::num*, (core::Null?) →* void>*, self::C<core::num*, (core::Null?) →* void>*>{};
diff --git a/pkg/front_end/testcases/instantiate_to_bound/contravariant_mutual_dependence.dart.outline.expect b/pkg/front_end/testcases/instantiate_to_bound/contravariant_mutual_dependence.dart.outline.expect
index b99b029..5c86247 100644
--- a/pkg/front_end/testcases/instantiate_to_bound/contravariant_mutual_dependence.dart.outline.expect
+++ b/pkg/front_end/testcases/instantiate_to_bound/contravariant_mutual_dependence.dart.outline.expect
@@ -5,10 +5,30 @@
 class D<X extends (self::D::X*, self::D::Y*) →* void = (core::Null?, core::Null?) →* void, Y extends (self::D::X*, self::D::Y*) →* void = (core::Null?, core::Null?) →* void> extends core::Object {
   synthetic constructor •() → self::D<self::D::X*, self::D::Y*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class E<X extends (self::E::X*) →* void = (core::Null?) →* void> extends core::Object {
   synthetic constructor •() → self::E<self::E::X*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field self::D<(core::Null?, core::Null?) →* void, (core::Null?, core::Null?) →* void>* d;
 static field self::E<(core::Null?) →* void>* e;
diff --git a/pkg/front_end/testcases/instantiate_to_bound/contravariant_mutual_dependence.dart.strong.expect b/pkg/front_end/testcases/instantiate_to_bound/contravariant_mutual_dependence.dart.strong.expect
index cf5841c..6e1135a 100644
--- a/pkg/front_end/testcases/instantiate_to_bound/contravariant_mutual_dependence.dart.strong.expect
+++ b/pkg/front_end/testcases/instantiate_to_bound/contravariant_mutual_dependence.dart.strong.expect
@@ -6,11 +6,31 @@
   synthetic constructor •() → self::D<self::D::X*, self::D::Y*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class E<X extends (self::E::X*) →* void = (core::Null?) →* void> extends core::Object {
   synthetic constructor •() → self::E<self::E::X*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field self::D<(core::Null?, core::Null?) →* void, (core::Null?, core::Null?) →* void>* d;
 static field self::E<(core::Null?) →* void>* e;
diff --git a/pkg/front_end/testcases/instantiate_to_bound/contravariant_mutual_dependence.dart.strong.transformed.expect b/pkg/front_end/testcases/instantiate_to_bound/contravariant_mutual_dependence.dart.strong.transformed.expect
index cf5841c..6e1135a 100644
--- a/pkg/front_end/testcases/instantiate_to_bound/contravariant_mutual_dependence.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/instantiate_to_bound/contravariant_mutual_dependence.dart.strong.transformed.expect
@@ -6,11 +6,31 @@
   synthetic constructor •() → self::D<self::D::X*, self::D::Y*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class E<X extends (self::E::X*) →* void = (core::Null?) →* void> extends core::Object {
   synthetic constructor •() → self::E<self::E::X*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field self::D<(core::Null?, core::Null?) →* void, (core::Null?, core::Null?) →* void>* d;
 static field self::E<(core::Null?) →* void>* e;
diff --git a/pkg/front_end/testcases/instantiate_to_bound/contravariant_mutual_dependence_in_literals.dart.outline.expect b/pkg/front_end/testcases/instantiate_to_bound/contravariant_mutual_dependence_in_literals.dart.outline.expect
index 41e06b4..723bb462 100644
--- a/pkg/front_end/testcases/instantiate_to_bound/contravariant_mutual_dependence_in_literals.dart.outline.expect
+++ b/pkg/front_end/testcases/instantiate_to_bound/contravariant_mutual_dependence_in_literals.dart.outline.expect
@@ -5,10 +5,30 @@
 class D<X extends (self::D::X*, self::D::Y*) →* void = (core::Null?, core::Null?) →* void, Y extends (self::D::X*, self::D::Y*) →* void = (core::Null?, core::Null?) →* void> extends core::Object {
   synthetic constructor •() → self::D<self::D::X*, self::D::Y*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class E<X extends (self::E::X*) →* void = (core::Null?) →* void> extends core::Object {
   synthetic constructor •() → self::E<self::E::X*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field core::List<self::D<(core::Null?, core::Null?) →* void, (core::Null?, core::Null?) →* void>*>* ld;
 static field core::Map<self::D<(core::Null?, core::Null?) →* void, (core::Null?, core::Null?) →* void>*, self::D<(core::Null?, core::Null?) →* void, (core::Null?, core::Null?) →* void>*>* md;
diff --git a/pkg/front_end/testcases/instantiate_to_bound/contravariant_mutual_dependence_in_literals.dart.strong.expect b/pkg/front_end/testcases/instantiate_to_bound/contravariant_mutual_dependence_in_literals.dart.strong.expect
index b87ae59..6da2274 100644
--- a/pkg/front_end/testcases/instantiate_to_bound/contravariant_mutual_dependence_in_literals.dart.strong.expect
+++ b/pkg/front_end/testcases/instantiate_to_bound/contravariant_mutual_dependence_in_literals.dart.strong.expect
@@ -6,11 +6,31 @@
   synthetic constructor •() → self::D<self::D::X*, self::D::Y*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class E<X extends (self::E::X*) →* void = (core::Null?) →* void> extends core::Object {
   synthetic constructor •() → self::E<self::E::X*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field core::List<self::D<(core::Null?, core::Null?) →* void, (core::Null?, core::Null?) →* void>*>* ld = <self::D<(core::Null?, core::Null?) →* void, (core::Null?, core::Null?) →* void>*>[];
 static field core::Map<self::D<(core::Null?, core::Null?) →* void, (core::Null?, core::Null?) →* void>*, self::D<(core::Null?, core::Null?) →* void, (core::Null?, core::Null?) →* void>*>* md = <self::D<(core::Null?, core::Null?) →* void, (core::Null?, core::Null?) →* void>*, self::D<(core::Null?, core::Null?) →* void, (core::Null?, core::Null?) →* void>*>{};
diff --git a/pkg/front_end/testcases/instantiate_to_bound/contravariant_mutual_dependence_in_literals.dart.strong.transformed.expect b/pkg/front_end/testcases/instantiate_to_bound/contravariant_mutual_dependence_in_literals.dart.strong.transformed.expect
index b87ae59..6da2274 100644
--- a/pkg/front_end/testcases/instantiate_to_bound/contravariant_mutual_dependence_in_literals.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/instantiate_to_bound/contravariant_mutual_dependence_in_literals.dart.strong.transformed.expect
@@ -6,11 +6,31 @@
   synthetic constructor •() → self::D<self::D::X*, self::D::Y*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class E<X extends (self::E::X*) →* void = (core::Null?) →* void> extends core::Object {
   synthetic constructor •() → self::E<self::E::X*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field core::List<self::D<(core::Null?, core::Null?) →* void, (core::Null?, core::Null?) →* void>*>* ld = <self::D<(core::Null?, core::Null?) →* void, (core::Null?, core::Null?) →* void>*>[];
 static field core::Map<self::D<(core::Null?, core::Null?) →* void, (core::Null?, core::Null?) →* void>*, self::D<(core::Null?, core::Null?) →* void, (core::Null?, core::Null?) →* void>*>* md = <self::D<(core::Null?, core::Null?) →* void, (core::Null?, core::Null?) →* void>*, self::D<(core::Null?, core::Null?) →* void, (core::Null?, core::Null?) →* void>*>{};
diff --git a/pkg/front_end/testcases/instantiate_to_bound/covariant_dependence.dart.outline.expect b/pkg/front_end/testcases/instantiate_to_bound/covariant_dependence.dart.outline.expect
index e6c39b1..1c0edf2 100644
--- a/pkg/front_end/testcases/instantiate_to_bound/covariant_dependence.dart.outline.expect
+++ b/pkg/front_end/testcases/instantiate_to_bound/covariant_dependence.dart.outline.expect
@@ -5,22 +5,72 @@
 class A<X extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::A<self::A::X*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C<X extends core::Object* = dynamic, Y extends self::A<self::C::X*>* = self::A<dynamic>*> extends core::Object {
   synthetic constructor •() → self::C<self::C::X*, self::C::Y*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D<X extends core::num* = core::num*, Y extends self::A<self::D::X*>* = self::A<core::num*>*> extends core::Object {
   synthetic constructor •() → self::D<self::D::X*, self::D::Y*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class E<X extends core::Object* = dynamic, Y extends () →* self::E::X* = () →* dynamic> extends core::Object {
   synthetic constructor •() → self::E<self::E::X*, self::E::Y*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class F<X extends core::num* = core::num*, Y extends () →* self::F::X* = () →* core::num*> extends core::Object {
   synthetic constructor •() → self::F<self::F::X*, self::F::Y*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field self::C<dynamic, self::A<dynamic>*>* c;
 static field self::D<core::num*, self::A<core::num*>*>* d;
diff --git a/pkg/front_end/testcases/instantiate_to_bound/covariant_dependence.dart.strong.expect b/pkg/front_end/testcases/instantiate_to_bound/covariant_dependence.dart.strong.expect
index 6579ef0..8398b15 100644
--- a/pkg/front_end/testcases/instantiate_to_bound/covariant_dependence.dart.strong.expect
+++ b/pkg/front_end/testcases/instantiate_to_bound/covariant_dependence.dart.strong.expect
@@ -6,26 +6,76 @@
   synthetic constructor •() → self::A<self::A::X*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C<X extends core::Object* = dynamic, Y extends self::A<self::C::X*>* = self::A<dynamic>*> extends core::Object {
   synthetic constructor •() → self::C<self::C::X*, self::C::Y*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D<X extends core::num* = core::num*, Y extends self::A<self::D::X*>* = self::A<core::num*>*> extends core::Object {
   synthetic constructor •() → self::D<self::D::X*, self::D::Y*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class E<X extends core::Object* = dynamic, Y extends () →* self::E::X* = () →* dynamic> extends core::Object {
   synthetic constructor •() → self::E<self::E::X*, self::E::Y*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class F<X extends core::num* = core::num*, Y extends () →* self::F::X* = () →* core::num*> extends core::Object {
   synthetic constructor •() → self::F<self::F::X*, self::F::Y*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field self::C<dynamic, self::A<dynamic>*>* c;
 static field self::D<core::num*, self::A<core::num*>*>* d;
diff --git a/pkg/front_end/testcases/instantiate_to_bound/covariant_dependence.dart.strong.transformed.expect b/pkg/front_end/testcases/instantiate_to_bound/covariant_dependence.dart.strong.transformed.expect
index 6579ef0..8398b15 100644
--- a/pkg/front_end/testcases/instantiate_to_bound/covariant_dependence.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/instantiate_to_bound/covariant_dependence.dart.strong.transformed.expect
@@ -6,26 +6,76 @@
   synthetic constructor •() → self::A<self::A::X*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C<X extends core::Object* = dynamic, Y extends self::A<self::C::X*>* = self::A<dynamic>*> extends core::Object {
   synthetic constructor •() → self::C<self::C::X*, self::C::Y*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D<X extends core::num* = core::num*, Y extends self::A<self::D::X*>* = self::A<core::num*>*> extends core::Object {
   synthetic constructor •() → self::D<self::D::X*, self::D::Y*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class E<X extends core::Object* = dynamic, Y extends () →* self::E::X* = () →* dynamic> extends core::Object {
   synthetic constructor •() → self::E<self::E::X*, self::E::Y*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class F<X extends core::num* = core::num*, Y extends () →* self::F::X* = () →* core::num*> extends core::Object {
   synthetic constructor •() → self::F<self::F::X*, self::F::Y*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field self::C<dynamic, self::A<dynamic>*>* c;
 static field self::D<core::num*, self::A<core::num*>*>* d;
diff --git a/pkg/front_end/testcases/instantiate_to_bound/covariant_dependence_in_literals.dart.outline.expect b/pkg/front_end/testcases/instantiate_to_bound/covariant_dependence_in_literals.dart.outline.expect
index 3bf392c8..cdab1dd 100644
--- a/pkg/front_end/testcases/instantiate_to_bound/covariant_dependence_in_literals.dart.outline.expect
+++ b/pkg/front_end/testcases/instantiate_to_bound/covariant_dependence_in_literals.dart.outline.expect
@@ -5,22 +5,72 @@
 class A<X extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::A<self::A::X*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C<X extends core::Object* = dynamic, Y extends self::A<self::C::X*>* = self::A<dynamic>*> extends core::Object {
   synthetic constructor •() → self::C<self::C::X*, self::C::Y*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D<X extends core::num* = core::num*, Y extends self::A<self::D::X*>* = self::A<core::num*>*> extends core::Object {
   synthetic constructor •() → self::D<self::D::X*, self::D::Y*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class E<X extends core::Object* = dynamic, Y extends () →* self::E::X* = () →* dynamic> extends core::Object {
   synthetic constructor •() → self::E<self::E::X*, self::E::Y*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class F<X extends core::num* = core::num*, Y extends () →* self::F::X* = () →* core::num*> extends core::Object {
   synthetic constructor •() → self::F<self::F::X*, self::F::Y*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field core::List<self::C<dynamic, self::A<dynamic>*>*>* lc;
 static field core::Map<self::C<dynamic, self::A<dynamic>*>*, self::C<dynamic, self::A<dynamic>*>*>* mc;
diff --git a/pkg/front_end/testcases/instantiate_to_bound/covariant_dependence_in_literals.dart.strong.expect b/pkg/front_end/testcases/instantiate_to_bound/covariant_dependence_in_literals.dart.strong.expect
index 3443bc3..a39a7ad 100644
--- a/pkg/front_end/testcases/instantiate_to_bound/covariant_dependence_in_literals.dart.strong.expect
+++ b/pkg/front_end/testcases/instantiate_to_bound/covariant_dependence_in_literals.dart.strong.expect
@@ -6,26 +6,76 @@
   synthetic constructor •() → self::A<self::A::X*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C<X extends core::Object* = dynamic, Y extends self::A<self::C::X*>* = self::A<dynamic>*> extends core::Object {
   synthetic constructor •() → self::C<self::C::X*, self::C::Y*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D<X extends core::num* = core::num*, Y extends self::A<self::D::X*>* = self::A<core::num*>*> extends core::Object {
   synthetic constructor •() → self::D<self::D::X*, self::D::Y*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class E<X extends core::Object* = dynamic, Y extends () →* self::E::X* = () →* dynamic> extends core::Object {
   synthetic constructor •() → self::E<self::E::X*, self::E::Y*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class F<X extends core::num* = core::num*, Y extends () →* self::F::X* = () →* core::num*> extends core::Object {
   synthetic constructor •() → self::F<self::F::X*, self::F::Y*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field core::List<self::C<dynamic, self::A<dynamic>*>*>* lc = <self::C<dynamic, self::A<dynamic>*>*>[];
 static field core::Map<self::C<dynamic, self::A<dynamic>*>*, self::C<dynamic, self::A<dynamic>*>*>* mc = <self::C<dynamic, self::A<dynamic>*>*, self::C<dynamic, self::A<dynamic>*>*>{};
diff --git a/pkg/front_end/testcases/instantiate_to_bound/covariant_dependence_in_literals.dart.strong.transformed.expect b/pkg/front_end/testcases/instantiate_to_bound/covariant_dependence_in_literals.dart.strong.transformed.expect
index 3443bc3..a39a7ad 100644
--- a/pkg/front_end/testcases/instantiate_to_bound/covariant_dependence_in_literals.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/instantiate_to_bound/covariant_dependence_in_literals.dart.strong.transformed.expect
@@ -6,26 +6,76 @@
   synthetic constructor •() → self::A<self::A::X*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C<X extends core::Object* = dynamic, Y extends self::A<self::C::X*>* = self::A<dynamic>*> extends core::Object {
   synthetic constructor •() → self::C<self::C::X*, self::C::Y*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D<X extends core::num* = core::num*, Y extends self::A<self::D::X*>* = self::A<core::num*>*> extends core::Object {
   synthetic constructor •() → self::D<self::D::X*, self::D::Y*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class E<X extends core::Object* = dynamic, Y extends () →* self::E::X* = () →* dynamic> extends core::Object {
   synthetic constructor •() → self::E<self::E::X*, self::E::Y*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class F<X extends core::num* = core::num*, Y extends () →* self::F::X* = () →* core::num*> extends core::Object {
   synthetic constructor •() → self::F<self::F::X*, self::F::Y*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field core::List<self::C<dynamic, self::A<dynamic>*>*>* lc = <self::C<dynamic, self::A<dynamic>*>*>[];
 static field core::Map<self::C<dynamic, self::A<dynamic>*>*, self::C<dynamic, self::A<dynamic>*>*>* mc = <self::C<dynamic, self::A<dynamic>*>*, self::C<dynamic, self::A<dynamic>*>*>{};
diff --git a/pkg/front_end/testcases/instantiate_to_bound/covariant_mutual_dependence.dart.outline.expect b/pkg/front_end/testcases/instantiate_to_bound/covariant_mutual_dependence.dart.outline.expect
index ac077fd..69f50e3 100644
--- a/pkg/front_end/testcases/instantiate_to_bound/covariant_mutual_dependence.dart.outline.expect
+++ b/pkg/front_end/testcases/instantiate_to_bound/covariant_mutual_dependence.dart.outline.expect
@@ -5,22 +5,72 @@
 class B<X extends core::Object* = dynamic, Y extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::B<self::B::X*, self::B::Y*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C<X extends core::Object* = dynamic, Y extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::C<self::C::X*, self::C::Y*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D<X extends self::B<self::D::X*, self::D::Y*>* = self::B<dynamic, dynamic>*, Y extends self::C<self::D::X*, self::D::Y*>* = self::C<dynamic, dynamic>*> extends core::Object {
   synthetic constructor •() → self::D<self::D::X*, self::D::Y*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class E<X extends self::B<self::E::X*, self::E::Y*>* = self::B<dynamic, dynamic>*, Y extends () →* self::E::X* = () →* dynamic> extends core::Object {
   synthetic constructor •() → self::E<self::E::X*, self::E::Y*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class F<X extends () →* self::F::X* = () →* dynamic> extends core::Object {
   synthetic constructor •() → self::F<self::F::X*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field self::D<self::B<dynamic, dynamic>*, self::C<dynamic, dynamic>*>* d;
 static field self::E<self::B<dynamic, dynamic>*, () →* dynamic>* e;
diff --git a/pkg/front_end/testcases/instantiate_to_bound/covariant_mutual_dependence.dart.strong.expect b/pkg/front_end/testcases/instantiate_to_bound/covariant_mutual_dependence.dart.strong.expect
index 30e09b1..c00d52b 100644
--- a/pkg/front_end/testcases/instantiate_to_bound/covariant_mutual_dependence.dart.strong.expect
+++ b/pkg/front_end/testcases/instantiate_to_bound/covariant_mutual_dependence.dart.strong.expect
@@ -6,26 +6,76 @@
   synthetic constructor •() → self::B<self::B::X*, self::B::Y*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C<X extends core::Object* = dynamic, Y extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::C<self::C::X*, self::C::Y*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D<X extends self::B<self::D::X*, self::D::Y*>* = self::B<dynamic, dynamic>*, Y extends self::C<self::D::X*, self::D::Y*>* = self::C<dynamic, dynamic>*> extends core::Object {
   synthetic constructor •() → self::D<self::D::X*, self::D::Y*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class E<X extends self::B<self::E::X*, self::E::Y*>* = self::B<dynamic, dynamic>*, Y extends () →* self::E::X* = () →* dynamic> extends core::Object {
   synthetic constructor •() → self::E<self::E::X*, self::E::Y*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class F<X extends () →* self::F::X* = () →* dynamic> extends core::Object {
   synthetic constructor •() → self::F<self::F::X*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field self::D<self::B<dynamic, dynamic>*, self::C<dynamic, dynamic>*>* d;
 static field self::E<self::B<dynamic, dynamic>*, () →* dynamic>* e;
diff --git a/pkg/front_end/testcases/instantiate_to_bound/covariant_mutual_dependence.dart.strong.transformed.expect b/pkg/front_end/testcases/instantiate_to_bound/covariant_mutual_dependence.dart.strong.transformed.expect
index 30e09b1..c00d52b 100644
--- a/pkg/front_end/testcases/instantiate_to_bound/covariant_mutual_dependence.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/instantiate_to_bound/covariant_mutual_dependence.dart.strong.transformed.expect
@@ -6,26 +6,76 @@
   synthetic constructor •() → self::B<self::B::X*, self::B::Y*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C<X extends core::Object* = dynamic, Y extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::C<self::C::X*, self::C::Y*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D<X extends self::B<self::D::X*, self::D::Y*>* = self::B<dynamic, dynamic>*, Y extends self::C<self::D::X*, self::D::Y*>* = self::C<dynamic, dynamic>*> extends core::Object {
   synthetic constructor •() → self::D<self::D::X*, self::D::Y*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class E<X extends self::B<self::E::X*, self::E::Y*>* = self::B<dynamic, dynamic>*, Y extends () →* self::E::X* = () →* dynamic> extends core::Object {
   synthetic constructor •() → self::E<self::E::X*, self::E::Y*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class F<X extends () →* self::F::X* = () →* dynamic> extends core::Object {
   synthetic constructor •() → self::F<self::F::X*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field self::D<self::B<dynamic, dynamic>*, self::C<dynamic, dynamic>*>* d;
 static field self::E<self::B<dynamic, dynamic>*, () →* dynamic>* e;
diff --git a/pkg/front_end/testcases/instantiate_to_bound/covariant_mutual_dependence_in_literals.dart.outline.expect b/pkg/front_end/testcases/instantiate_to_bound/covariant_mutual_dependence_in_literals.dart.outline.expect
index 259a0da..08de16a 100644
--- a/pkg/front_end/testcases/instantiate_to_bound/covariant_mutual_dependence_in_literals.dart.outline.expect
+++ b/pkg/front_end/testcases/instantiate_to_bound/covariant_mutual_dependence_in_literals.dart.outline.expect
@@ -5,22 +5,72 @@
 class B<X extends core::Object* = dynamic, Y extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::B<self::B::X*, self::B::Y*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C<X extends core::Object* = dynamic, Y extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::C<self::C::X*, self::C::Y*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D<X extends self::B<self::D::X*, self::D::Y*>* = self::B<dynamic, dynamic>*, Y extends self::C<self::D::X*, self::D::Y*>* = self::C<dynamic, dynamic>*> extends core::Object {
   synthetic constructor •() → self::D<self::D::X*, self::D::Y*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class E<X extends self::B<self::E::X*, self::E::Y*>* = self::B<dynamic, dynamic>*, Y extends () →* self::E::X* = () →* dynamic> extends core::Object {
   synthetic constructor •() → self::E<self::E::X*, self::E::Y*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class F<X extends () →* self::F::X* = () →* dynamic> extends core::Object {
   synthetic constructor •() → self::F<self::F::X*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field core::List<self::D<self::B<dynamic, dynamic>*, self::C<dynamic, dynamic>*>*>* ld;
 static field core::Map<self::D<self::B<dynamic, dynamic>*, self::C<dynamic, dynamic>*>*, self::D<self::B<dynamic, dynamic>*, self::C<dynamic, dynamic>*>*>* md;
diff --git a/pkg/front_end/testcases/instantiate_to_bound/covariant_mutual_dependence_in_literals.dart.strong.expect b/pkg/front_end/testcases/instantiate_to_bound/covariant_mutual_dependence_in_literals.dart.strong.expect
index f5ddef9..e0b83c3 100644
--- a/pkg/front_end/testcases/instantiate_to_bound/covariant_mutual_dependence_in_literals.dart.strong.expect
+++ b/pkg/front_end/testcases/instantiate_to_bound/covariant_mutual_dependence_in_literals.dart.strong.expect
@@ -6,26 +6,76 @@
   synthetic constructor •() → self::B<self::B::X*, self::B::Y*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C<X extends core::Object* = dynamic, Y extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::C<self::C::X*, self::C::Y*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D<X extends self::B<self::D::X*, self::D::Y*>* = self::B<dynamic, dynamic>*, Y extends self::C<self::D::X*, self::D::Y*>* = self::C<dynamic, dynamic>*> extends core::Object {
   synthetic constructor •() → self::D<self::D::X*, self::D::Y*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class E<X extends self::B<self::E::X*, self::E::Y*>* = self::B<dynamic, dynamic>*, Y extends () →* self::E::X* = () →* dynamic> extends core::Object {
   synthetic constructor •() → self::E<self::E::X*, self::E::Y*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class F<X extends () →* self::F::X* = () →* dynamic> extends core::Object {
   synthetic constructor •() → self::F<self::F::X*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field core::List<self::D<self::B<dynamic, dynamic>*, self::C<dynamic, dynamic>*>*>* ld = <self::D<self::B<dynamic, dynamic>*, self::C<dynamic, dynamic>*>*>[];
 static field core::Map<self::D<self::B<dynamic, dynamic>*, self::C<dynamic, dynamic>*>*, self::D<self::B<dynamic, dynamic>*, self::C<dynamic, dynamic>*>*>* md = <self::D<self::B<dynamic, dynamic>*, self::C<dynamic, dynamic>*>*, self::D<self::B<dynamic, dynamic>*, self::C<dynamic, dynamic>*>*>{};
diff --git a/pkg/front_end/testcases/instantiate_to_bound/covariant_mutual_dependence_in_literals.dart.strong.transformed.expect b/pkg/front_end/testcases/instantiate_to_bound/covariant_mutual_dependence_in_literals.dart.strong.transformed.expect
index f5ddef9..e0b83c3 100644
--- a/pkg/front_end/testcases/instantiate_to_bound/covariant_mutual_dependence_in_literals.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/instantiate_to_bound/covariant_mutual_dependence_in_literals.dart.strong.transformed.expect
@@ -6,26 +6,76 @@
   synthetic constructor •() → self::B<self::B::X*, self::B::Y*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C<X extends core::Object* = dynamic, Y extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::C<self::C::X*, self::C::Y*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D<X extends self::B<self::D::X*, self::D::Y*>* = self::B<dynamic, dynamic>*, Y extends self::C<self::D::X*, self::D::Y*>* = self::C<dynamic, dynamic>*> extends core::Object {
   synthetic constructor •() → self::D<self::D::X*, self::D::Y*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class E<X extends self::B<self::E::X*, self::E::Y*>* = self::B<dynamic, dynamic>*, Y extends () →* self::E::X* = () →* dynamic> extends core::Object {
   synthetic constructor •() → self::E<self::E::X*, self::E::Y*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class F<X extends () →* self::F::X* = () →* dynamic> extends core::Object {
   synthetic constructor •() → self::F<self::F::X*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field core::List<self::D<self::B<dynamic, dynamic>*, self::C<dynamic, dynamic>*>*>* ld = <self::D<self::B<dynamic, dynamic>*, self::C<dynamic, dynamic>*>*>[];
 static field core::Map<self::D<self::B<dynamic, dynamic>*, self::C<dynamic, dynamic>*>*, self::D<self::B<dynamic, dynamic>*, self::C<dynamic, dynamic>*>*>* md = <self::D<self::B<dynamic, dynamic>*, self::C<dynamic, dynamic>*>*, self::D<self::B<dynamic, dynamic>*, self::C<dynamic, dynamic>*>*>{};
diff --git a/pkg/front_end/testcases/instantiate_to_bound/dependence.dart.outline.expect b/pkg/front_end/testcases/instantiate_to_bound/dependence.dart.outline.expect
index 87dce27..768a244 100644
--- a/pkg/front_end/testcases/instantiate_to_bound/dependence.dart.outline.expect
+++ b/pkg/front_end/testcases/instantiate_to_bound/dependence.dart.outline.expect
@@ -5,14 +5,44 @@
 class A<X extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::A<self::A::X*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C<X extends core::Object* = dynamic, Y extends (self::C::X*) →* self::C::X* = (core::Null?) →* dynamic> extends core::Object {
   synthetic constructor •() → self::C<self::C::X*, self::C::Y*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D<X extends core::num* = core::num*, Y extends (self::D::X*) →* self::D::X* = (core::Null?) →* core::num*> extends core::Object {
   synthetic constructor •() → self::D<self::D::X*, self::D::Y*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field self::C<dynamic, (core::Null?) →* dynamic>* c;
 static field self::D<core::num*, (core::Null?) →* core::num*>* d;
diff --git a/pkg/front_end/testcases/instantiate_to_bound/dependence.dart.strong.expect b/pkg/front_end/testcases/instantiate_to_bound/dependence.dart.strong.expect
index 96c2e9a..e351d50 100644
--- a/pkg/front_end/testcases/instantiate_to_bound/dependence.dart.strong.expect
+++ b/pkg/front_end/testcases/instantiate_to_bound/dependence.dart.strong.expect
@@ -6,16 +6,46 @@
   synthetic constructor •() → self::A<self::A::X*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C<X extends core::Object* = dynamic, Y extends (self::C::X*) →* self::C::X* = (core::Null?) →* dynamic> extends core::Object {
   synthetic constructor •() → self::C<self::C::X*, self::C::Y*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D<X extends core::num* = core::num*, Y extends (self::D::X*) →* self::D::X* = (core::Null?) →* core::num*> extends core::Object {
   synthetic constructor •() → self::D<self::D::X*, self::D::Y*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field self::C<dynamic, (core::Null?) →* dynamic>* c;
 static field self::D<core::num*, (core::Null?) →* core::num*>* d;
diff --git a/pkg/front_end/testcases/instantiate_to_bound/dependence.dart.strong.transformed.expect b/pkg/front_end/testcases/instantiate_to_bound/dependence.dart.strong.transformed.expect
index 96c2e9a..e351d50 100644
--- a/pkg/front_end/testcases/instantiate_to_bound/dependence.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/instantiate_to_bound/dependence.dart.strong.transformed.expect
@@ -6,16 +6,46 @@
   synthetic constructor •() → self::A<self::A::X*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C<X extends core::Object* = dynamic, Y extends (self::C::X*) →* self::C::X* = (core::Null?) →* dynamic> extends core::Object {
   synthetic constructor •() → self::C<self::C::X*, self::C::Y*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D<X extends core::num* = core::num*, Y extends (self::D::X*) →* self::D::X* = (core::Null?) →* core::num*> extends core::Object {
   synthetic constructor •() → self::D<self::D::X*, self::D::Y*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field self::C<dynamic, (core::Null?) →* dynamic>* c;
 static field self::D<core::num*, (core::Null?) →* core::num*>* d;
diff --git a/pkg/front_end/testcases/instantiate_to_bound/dependence_in_literals.dart.outline.expect b/pkg/front_end/testcases/instantiate_to_bound/dependence_in_literals.dart.outline.expect
index 0eaaf49..17a6cbe 100644
--- a/pkg/front_end/testcases/instantiate_to_bound/dependence_in_literals.dart.outline.expect
+++ b/pkg/front_end/testcases/instantiate_to_bound/dependence_in_literals.dart.outline.expect
@@ -5,14 +5,44 @@
 class A<X extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::A<self::A::X*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C<X extends core::Object* = dynamic, Y extends (self::C::X*) →* self::C::X* = (core::Null?) →* dynamic> extends core::Object {
   synthetic constructor •() → self::C<self::C::X*, self::C::Y*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D<X extends core::num* = core::num*, Y extends (self::D::X*) →* self::D::X* = (core::Null?) →* core::num*> extends core::Object {
   synthetic constructor •() → self::D<self::D::X*, self::D::Y*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field core::List<self::C<dynamic, (core::Null?) →* dynamic>*>* lc;
 static field core::Map<self::C<dynamic, (core::Null?) →* dynamic>*, self::C<dynamic, (core::Null?) →* dynamic>*>* mc;
diff --git a/pkg/front_end/testcases/instantiate_to_bound/dependence_in_literals.dart.strong.expect b/pkg/front_end/testcases/instantiate_to_bound/dependence_in_literals.dart.strong.expect
index 1483925..e90d743 100644
--- a/pkg/front_end/testcases/instantiate_to_bound/dependence_in_literals.dart.strong.expect
+++ b/pkg/front_end/testcases/instantiate_to_bound/dependence_in_literals.dart.strong.expect
@@ -6,16 +6,46 @@
   synthetic constructor •() → self::A<self::A::X*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C<X extends core::Object* = dynamic, Y extends (self::C::X*) →* self::C::X* = (core::Null?) →* dynamic> extends core::Object {
   synthetic constructor •() → self::C<self::C::X*, self::C::Y*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D<X extends core::num* = core::num*, Y extends (self::D::X*) →* self::D::X* = (core::Null?) →* core::num*> extends core::Object {
   synthetic constructor •() → self::D<self::D::X*, self::D::Y*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field core::List<self::C<dynamic, (core::Null?) →* dynamic>*>* lc = <self::C<dynamic, (core::Null?) →* dynamic>*>[];
 static field core::Map<self::C<dynamic, (core::Null?) →* dynamic>*, self::C<dynamic, (core::Null?) →* dynamic>*>* mc = <self::C<dynamic, (core::Null?) →* dynamic>*, self::C<dynamic, (core::Null?) →* dynamic>*>{};
diff --git a/pkg/front_end/testcases/instantiate_to_bound/dependence_in_literals.dart.strong.transformed.expect b/pkg/front_end/testcases/instantiate_to_bound/dependence_in_literals.dart.strong.transformed.expect
index 1483925..e90d743 100644
--- a/pkg/front_end/testcases/instantiate_to_bound/dependence_in_literals.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/instantiate_to_bound/dependence_in_literals.dart.strong.transformed.expect
@@ -6,16 +6,46 @@
   synthetic constructor •() → self::A<self::A::X*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C<X extends core::Object* = dynamic, Y extends (self::C::X*) →* self::C::X* = (core::Null?) →* dynamic> extends core::Object {
   synthetic constructor •() → self::C<self::C::X*, self::C::Y*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D<X extends core::num* = core::num*, Y extends (self::D::X*) →* self::D::X* = (core::Null?) →* core::num*> extends core::Object {
   synthetic constructor •() → self::D<self::D::X*, self::D::Y*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field core::List<self::C<dynamic, (core::Null?) →* dynamic>*>* lc = <self::C<dynamic, (core::Null?) →* dynamic>*>[];
 static field core::Map<self::C<dynamic, (core::Null?) →* dynamic>*, self::C<dynamic, (core::Null?) →* dynamic>*>* mc = <self::C<dynamic, (core::Null?) →* dynamic>*, self::C<dynamic, (core::Null?) →* dynamic>*>{};
diff --git a/pkg/front_end/testcases/instantiate_to_bound/generic_classes_from_dill.dart.outline.expect b/pkg/front_end/testcases/instantiate_to_bound/generic_classes_from_dill.dart.outline.expect
index 053b62f..510b6e2 100644
--- a/pkg/front_end/testcases/instantiate_to_bound/generic_classes_from_dill.dart.outline.expect
+++ b/pkg/front_end/testcases/instantiate_to_bound/generic_classes_from_dill.dart.outline.expect
@@ -4,6 +4,6 @@
 
 import "dart:collection";
 
-static field col::LinkedListEntry<col::LinkedListEntry<dynamic>*>* y;
+static field col::LinkedListEntry<col::LinkedListEntry<dynamic>>* y;
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/instantiate_to_bound/generic_classes_from_dill.dart.strong.expect b/pkg/front_end/testcases/instantiate_to_bound/generic_classes_from_dill.dart.strong.expect
index 987be1b..175fa49 100644
--- a/pkg/front_end/testcases/instantiate_to_bound/generic_classes_from_dill.dart.strong.expect
+++ b/pkg/front_end/testcases/instantiate_to_bound/generic_classes_from_dill.dart.strong.expect
@@ -4,5 +4,5 @@
 
 import "dart:collection";
 
-static field col::LinkedListEntry<col::LinkedListEntry<dynamic>*>* y;
+static field col::LinkedListEntry<col::LinkedListEntry<dynamic>>* y;
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/instantiate_to_bound/generic_classes_from_dill.dart.strong.transformed.expect b/pkg/front_end/testcases/instantiate_to_bound/generic_classes_from_dill.dart.strong.transformed.expect
index 987be1b..175fa49 100644
--- a/pkg/front_end/testcases/instantiate_to_bound/generic_classes_from_dill.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/instantiate_to_bound/generic_classes_from_dill.dart.strong.transformed.expect
@@ -4,5 +4,5 @@
 
 import "dart:collection";
 
-static field col::LinkedListEntry<col::LinkedListEntry<dynamic>*>* y;
+static field col::LinkedListEntry<col::LinkedListEntry<dynamic>>* y;
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/instantiate_to_bound/inference_constrained_by_bound.dart.outline.expect b/pkg/front_end/testcases/instantiate_to_bound/inference_constrained_by_bound.dart.outline.expect
index 86fbb12..bb0ce71 100644
--- a/pkg/front_end/testcases/instantiate_to_bound/inference_constrained_by_bound.dart.outline.expect
+++ b/pkg/front_end/testcases/instantiate_to_bound/inference_constrained_by_bound.dart.outline.expect
@@ -5,6 +5,16 @@
 class A<T extends core::num* = core::num*> extends core::Object {
   synthetic constructor •() → self::A<self::A::T*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/instantiate_to_bound/inference_constrained_by_bound.dart.strong.expect b/pkg/front_end/testcases/instantiate_to_bound/inference_constrained_by_bound.dart.strong.expect
index 5cc6710..a681706 100644
--- a/pkg/front_end/testcases/instantiate_to_bound/inference_constrained_by_bound.dart.strong.expect
+++ b/pkg/front_end/testcases/instantiate_to_bound/inference_constrained_by_bound.dart.strong.expect
@@ -6,6 +6,16 @@
   synthetic constructor •() → self::A<self::A::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   self::A<core::num*>* a = new self::A::•<core::num*>();
diff --git a/pkg/front_end/testcases/instantiate_to_bound/inference_constrained_by_bound.dart.strong.transformed.expect b/pkg/front_end/testcases/instantiate_to_bound/inference_constrained_by_bound.dart.strong.transformed.expect
index 5cc6710..a681706 100644
--- a/pkg/front_end/testcases/instantiate_to_bound/inference_constrained_by_bound.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/instantiate_to_bound/inference_constrained_by_bound.dart.strong.transformed.expect
@@ -6,6 +6,16 @@
   synthetic constructor •() → self::A<self::A::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   self::A<core::num*>* a = new self::A::•<core::num*>();
diff --git a/pkg/front_end/testcases/instantiate_to_bound/inference_defaults_to_bound.dart.outline.expect b/pkg/front_end/testcases/instantiate_to_bound/inference_defaults_to_bound.dart.outline.expect
index 86fbb12..bb0ce71 100644
--- a/pkg/front_end/testcases/instantiate_to_bound/inference_defaults_to_bound.dart.outline.expect
+++ b/pkg/front_end/testcases/instantiate_to_bound/inference_defaults_to_bound.dart.outline.expect
@@ -5,6 +5,16 @@
 class A<T extends core::num* = core::num*> extends core::Object {
   synthetic constructor •() → self::A<self::A::T*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/instantiate_to_bound/inference_defaults_to_bound.dart.strong.expect b/pkg/front_end/testcases/instantiate_to_bound/inference_defaults_to_bound.dart.strong.expect
index 7e54166..d8ab5ae 100644
--- a/pkg/front_end/testcases/instantiate_to_bound/inference_defaults_to_bound.dart.strong.expect
+++ b/pkg/front_end/testcases/instantiate_to_bound/inference_defaults_to_bound.dart.strong.expect
@@ -6,6 +6,16 @@
   synthetic constructor •() → self::A<self::A::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   new self::A::•<core::num*>();
diff --git a/pkg/front_end/testcases/instantiate_to_bound/inference_defaults_to_bound.dart.strong.transformed.expect b/pkg/front_end/testcases/instantiate_to_bound/inference_defaults_to_bound.dart.strong.transformed.expect
index 7e54166..d8ab5ae 100644
--- a/pkg/front_end/testcases/instantiate_to_bound/inference_defaults_to_bound.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/instantiate_to_bound/inference_defaults_to_bound.dart.strong.transformed.expect
@@ -6,6 +6,16 @@
   synthetic constructor •() → self::A<self::A::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   new self::A::•<core::num*>();
diff --git a/pkg/front_end/testcases/instantiate_to_bound/inference_gives_input.dart.outline.expect b/pkg/front_end/testcases/instantiate_to_bound/inference_gives_input.dart.outline.expect
index 1a8907a..81b2421 100644
--- a/pkg/front_end/testcases/instantiate_to_bound/inference_gives_input.dart.outline.expect
+++ b/pkg/front_end/testcases/instantiate_to_bound/inference_gives_input.dart.outline.expect
@@ -5,6 +5,16 @@
 class A<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::A<self::A::T*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B<T extends core::num* = core::num*, S extends core::List<self::B::T*>* = core::List<core::num*>*> extends self::A<self::B::T*> {
   constructor •([self::B::T* x]) → self::B<self::B::T*, self::B::S*>*
diff --git a/pkg/front_end/testcases/instantiate_to_bound/inference_gives_input.dart.strong.expect b/pkg/front_end/testcases/instantiate_to_bound/inference_gives_input.dart.strong.expect
index 6f5ff38..8770912 100644
--- a/pkg/front_end/testcases/instantiate_to_bound/inference_gives_input.dart.strong.expect
+++ b/pkg/front_end/testcases/instantiate_to_bound/inference_gives_input.dart.strong.expect
@@ -6,6 +6,16 @@
   synthetic constructor •() → self::A<self::A::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B<T extends core::num* = core::num*, S extends core::List<self::B::T*>* = core::List<core::num*>*> extends self::A<self::B::T*> {
   constructor •([self::B::T* x = #C1]) → self::B<self::B::T*, self::B::S*>*
diff --git a/pkg/front_end/testcases/instantiate_to_bound/inference_gives_input.dart.strong.transformed.expect b/pkg/front_end/testcases/instantiate_to_bound/inference_gives_input.dart.strong.transformed.expect
index 6f5ff38..8770912 100644
--- a/pkg/front_end/testcases/instantiate_to_bound/inference_gives_input.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/instantiate_to_bound/inference_gives_input.dart.strong.transformed.expect
@@ -6,6 +6,16 @@
   synthetic constructor •() → self::A<self::A::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B<T extends core::num* = core::num*, S extends core::List<self::B::T*>* = core::List<core::num*>*> extends self::A<self::B::T*> {
   constructor •([self::B::T* x = #C1]) → self::B<self::B::T*, self::B::S*>*
diff --git a/pkg/front_end/testcases/instantiate_to_bound/inference_super_bounded_rejected.dart.outline.expect b/pkg/front_end/testcases/instantiate_to_bound/inference_super_bounded_rejected.dart.outline.expect
index 6a0bd29..e1f7c6b 100644
--- a/pkg/front_end/testcases/instantiate_to_bound/inference_super_bounded_rejected.dart.outline.expect
+++ b/pkg/front_end/testcases/instantiate_to_bound/inference_super_bounded_rejected.dart.outline.expect
@@ -5,6 +5,16 @@
 class B<T extends core::Comparable<self::B::T*>* = core::Comparable<dynamic>*> extends core::Object {
   synthetic constructor •() → self::B<self::B::T*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field self::B<core::Comparable<dynamic>*>* y;
 static method main() → dynamic
diff --git a/pkg/front_end/testcases/instantiate_to_bound/inference_super_bounded_rejected.dart.strong.expect b/pkg/front_end/testcases/instantiate_to_bound/inference_super_bounded_rejected.dart.strong.expect
index feb336e..c59c5c8 100644
--- a/pkg/front_end/testcases/instantiate_to_bound/inference_super_bounded_rejected.dart.strong.expect
+++ b/pkg/front_end/testcases/instantiate_to_bound/inference_super_bounded_rejected.dart.strong.expect
@@ -18,6 +18,16 @@
   synthetic constructor •() → self::B<self::B::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field self::B<core::Comparable<dynamic>*>* y = new self::B::•<core::Comparable<dynamic>*>();
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/instantiate_to_bound/inference_super_bounded_rejected.dart.strong.transformed.expect b/pkg/front_end/testcases/instantiate_to_bound/inference_super_bounded_rejected.dart.strong.transformed.expect
index feb336e..c59c5c8 100644
--- a/pkg/front_end/testcases/instantiate_to_bound/inference_super_bounded_rejected.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/instantiate_to_bound/inference_super_bounded_rejected.dart.strong.transformed.expect
@@ -18,6 +18,16 @@
   synthetic constructor •() → self::B<self::B::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field self::B<core::Comparable<dynamic>*>* y = new self::B::•<core::Comparable<dynamic>*>();
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/instantiate_to_bound/instantiated_in_outline.dart.outline.expect b/pkg/front_end/testcases/instantiate_to_bound/instantiated_in_outline.dart.outline.expect
index 7bd7cea..a205f97 100644
--- a/pkg/front_end/testcases/instantiate_to_bound/instantiated_in_outline.dart.outline.expect
+++ b/pkg/front_end/testcases/instantiate_to_bound/instantiated_in_outline.dart.outline.expect
@@ -5,6 +5,16 @@
 class A<T extends core::num* = core::num*> extends core::Object {
   synthetic constructor •() → self::A<self::A::T*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends core::Object {
   synthetic constructor •() → self::B*
@@ -13,6 +23,16 @@
     ;
   method bar() → self::A<core::num*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/instantiate_to_bound/instantiated_in_outline.dart.strong.expect b/pkg/front_end/testcases/instantiate_to_bound/instantiated_in_outline.dart.strong.expect
index 8fa5921..ff1cb3c 100644
--- a/pkg/front_end/testcases/instantiate_to_bound/instantiated_in_outline.dart.strong.expect
+++ b/pkg/front_end/testcases/instantiate_to_bound/instantiated_in_outline.dart.strong.expect
@@ -6,6 +6,16 @@
   synthetic constructor •() → self::A<self::A::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends core::Object {
   synthetic constructor •() → self::B*
@@ -15,5 +25,15 @@
     return null;
   method bar() → self::A<core::num*>*
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/instantiate_to_bound/instantiated_in_outline.dart.strong.transformed.expect b/pkg/front_end/testcases/instantiate_to_bound/instantiated_in_outline.dart.strong.transformed.expect
index 8fa5921..ff1cb3c 100644
--- a/pkg/front_end/testcases/instantiate_to_bound/instantiated_in_outline.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/instantiate_to_bound/instantiated_in_outline.dart.strong.transformed.expect
@@ -6,6 +6,16 @@
   synthetic constructor •() → self::A<self::A::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends core::Object {
   synthetic constructor •() → self::B*
@@ -15,5 +25,15 @@
     return null;
   method bar() → self::A<core::num*>*
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/instantiate_to_bound/literal_list.dart.outline.expect b/pkg/front_end/testcases/instantiate_to_bound/literal_list.dart.outline.expect
index 048cb6e..7715a13 100644
--- a/pkg/front_end/testcases/instantiate_to_bound/literal_list.dart.outline.expect
+++ b/pkg/front_end/testcases/instantiate_to_bound/literal_list.dart.outline.expect
@@ -5,6 +5,16 @@
 class A<T extends core::num* = core::num*> extends core::Object {
   synthetic constructor •() → self::A<self::A::T*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field core::List<self::A<core::num*>*>* a;
 static method main() → dynamic
diff --git a/pkg/front_end/testcases/instantiate_to_bound/literal_list.dart.strong.expect b/pkg/front_end/testcases/instantiate_to_bound/literal_list.dart.strong.expect
index 44f906c..d3bf0be 100644
--- a/pkg/front_end/testcases/instantiate_to_bound/literal_list.dart.strong.expect
+++ b/pkg/front_end/testcases/instantiate_to_bound/literal_list.dart.strong.expect
@@ -6,6 +6,16 @@
   synthetic constructor •() → self::A<self::A::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field core::List<self::A<core::num*>*>* a = <self::A<core::num*>*>[];
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/instantiate_to_bound/literal_list.dart.strong.transformed.expect b/pkg/front_end/testcases/instantiate_to_bound/literal_list.dart.strong.transformed.expect
index 44f906c..d3bf0be 100644
--- a/pkg/front_end/testcases/instantiate_to_bound/literal_list.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/instantiate_to_bound/literal_list.dart.strong.transformed.expect
@@ -6,6 +6,16 @@
   synthetic constructor •() → self::A<self::A::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field core::List<self::A<core::num*>*>* a = <self::A<core::num*>*>[];
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/instantiate_to_bound/literal_list_with_generic_argument.dart.outline.expect b/pkg/front_end/testcases/instantiate_to_bound/literal_list_with_generic_argument.dart.outline.expect
index cee4482..f83bffc 100644
--- a/pkg/front_end/testcases/instantiate_to_bound/literal_list_with_generic_argument.dart.outline.expect
+++ b/pkg/front_end/testcases/instantiate_to_bound/literal_list_with_generic_argument.dart.outline.expect
@@ -5,12 +5,32 @@
 class A<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::A<self::A::T*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B<S extends core::Object* = dynamic> extends core::Object {
   final field core::List<self::A<self::B::S*>*>* foo;
   final field core::List<self::A<core::num*>*>* bar;
   synthetic constructor •() → self::B<self::B::S*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/instantiate_to_bound/literal_list_with_generic_argument.dart.strong.expect b/pkg/front_end/testcases/instantiate_to_bound/literal_list_with_generic_argument.dart.strong.expect
index 20bcbed..5f4f224 100644
--- a/pkg/front_end/testcases/instantiate_to_bound/literal_list_with_generic_argument.dart.strong.expect
+++ b/pkg/front_end/testcases/instantiate_to_bound/literal_list_with_generic_argument.dart.strong.expect
@@ -6,6 +6,16 @@
   synthetic constructor •() → self::A<self::A::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B<S extends core::Object* = dynamic> extends core::Object {
   final field core::List<self::A<self::B::S*>*>* foo = <self::A<self::B::S*>*>[];
@@ -13,5 +23,15 @@
   synthetic constructor •() → self::B<self::B::S*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/instantiate_to_bound/literal_list_with_generic_argument.dart.strong.transformed.expect b/pkg/front_end/testcases/instantiate_to_bound/literal_list_with_generic_argument.dart.strong.transformed.expect
index 20bcbed..5f4f224 100644
--- a/pkg/front_end/testcases/instantiate_to_bound/literal_list_with_generic_argument.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/instantiate_to_bound/literal_list_with_generic_argument.dart.strong.transformed.expect
@@ -6,6 +6,16 @@
   synthetic constructor •() → self::A<self::A::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B<S extends core::Object* = dynamic> extends core::Object {
   final field core::List<self::A<self::B::S*>*>* foo = <self::A<self::B::S*>*>[];
@@ -13,5 +23,15 @@
   synthetic constructor •() → self::B<self::B::S*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/instantiate_to_bound/literal_map.dart.outline.expect b/pkg/front_end/testcases/instantiate_to_bound/literal_map.dart.outline.expect
index 1fef771..ba5ad2f 100644
--- a/pkg/front_end/testcases/instantiate_to_bound/literal_map.dart.outline.expect
+++ b/pkg/front_end/testcases/instantiate_to_bound/literal_map.dart.outline.expect
@@ -5,6 +5,16 @@
 class A<T extends core::num* = core::num*> extends core::Object {
   synthetic constructor •() → self::A<self::A::T*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field core::Map<self::A<core::num*>*, self::A<core::num*>*>* a;
 static method main() → dynamic
diff --git a/pkg/front_end/testcases/instantiate_to_bound/literal_map.dart.strong.expect b/pkg/front_end/testcases/instantiate_to_bound/literal_map.dart.strong.expect
index 5112185..2d8a146 100644
--- a/pkg/front_end/testcases/instantiate_to_bound/literal_map.dart.strong.expect
+++ b/pkg/front_end/testcases/instantiate_to_bound/literal_map.dart.strong.expect
@@ -6,6 +6,16 @@
   synthetic constructor •() → self::A<self::A::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field core::Map<self::A<core::num*>*, self::A<core::num*>*>* a = <self::A<core::num*>*, self::A<core::num*>*>{};
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/instantiate_to_bound/literal_map.dart.strong.transformed.expect b/pkg/front_end/testcases/instantiate_to_bound/literal_map.dart.strong.transformed.expect
index 5112185..2d8a146 100644
--- a/pkg/front_end/testcases/instantiate_to_bound/literal_map.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/instantiate_to_bound/literal_map.dart.strong.transformed.expect
@@ -6,6 +6,16 @@
   synthetic constructor •() → self::A<self::A::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field core::Map<self::A<core::num*>*, self::A<core::num*>*>* a = <self::A<core::num*>*, self::A<core::num*>*>{};
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/instantiate_to_bound/multiple_strongly_connected.dart.outline.expect b/pkg/front_end/testcases/instantiate_to_bound/multiple_strongly_connected.dart.outline.expect
index a1afe46..54cfbe4 100644
--- a/pkg/front_end/testcases/instantiate_to_bound/multiple_strongly_connected.dart.outline.expect
+++ b/pkg/front_end/testcases/instantiate_to_bound/multiple_strongly_connected.dart.outline.expect
@@ -13,42 +13,142 @@
 class A<X extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::A<self::A::X*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B<X extends core::Object* = dynamic, Y extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::B<self::B::X*, self::B::Y*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C<X extends core::Object* = dynamic, Y extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::C<self::C::X*, self::C::Y*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D<X extends self::A<self::D::X*>* = self::A<dynamic>*, Y extends self::A<self::D::Y*>* = self::A<dynamic>*> extends core::Object {
   synthetic constructor •() → self::D<self::D::X*, self::D::Y*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class E<W extends self::B<self::E::W*, self::E::X*>* = self::B<dynamic, dynamic>*, X extends self::C<self::E::W*, self::E::X*>* = self::C<dynamic, dynamic>*, Y extends self::B<self::E::Y*, self::E::Z*>* = self::B<dynamic, dynamic>*, Z extends self::C<self::E::Y*, self::E::Z*>* = self::C<dynamic, dynamic>*> extends core::Object {
   synthetic constructor •() → self::E<self::E::W*, self::E::X*, self::E::Y*, self::E::Z*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class F<V extends core::num* = core::num*, W extends self::B<self::F::W*, self::F::X*>* = self::B<dynamic, dynamic>*, X extends self::C<self::F::W*, self::F::X*>* = self::C<dynamic, dynamic>*, Y extends self::B<self::F::W*, self::F::X*>* = self::B<self::B<dynamic, dynamic>*, self::C<dynamic, dynamic>*>*, Z extends self::C<self::F::Y*, self::F::Z*>* = self::C<self::B<self::B<dynamic, dynamic>*, self::C<dynamic, dynamic>*>*, dynamic>*> extends core::Object {
   synthetic constructor •() → self::F<self::F::V*, self::F::W*, self::F::X*, self::F::Y*, self::F::Z*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class G<V extends core::num* = core::num*, W extends self::B<self::G::V*, self::G::X*>* = self::B<core::num*, dynamic>*, X extends self::C<self::G::W*, self::G::V*>* = self::C<dynamic, core::num*>*, Y extends self::B<self::G::W*, self::G::X*>* = self::B<self::B<core::num*, dynamic>*, self::C<dynamic, core::num*>*>*, Z extends self::C<self::G::Y*, self::G::Z*>* = self::C<self::B<self::B<core::num*, dynamic>*, self::C<dynamic, core::num*>*>*, dynamic>*> extends core::Object {
   synthetic constructor •() → self::G<self::G::V*, self::G::W*, self::G::X*, self::G::Y*, self::G::Z*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class H<S extends self::A<self::H::S*>* = self::A<dynamic>*, T extends self::B<self::H::T*, self::H::U*>* = self::B<dynamic, dynamic>*, U extends self::C<self::H::T*, self::H::U*>* = self::C<dynamic, dynamic>*, V extends self::A<self::H::V*>* = self::A<dynamic>*, W extends self::H::S* = self::A<dynamic>*, X extends self::H::T* = self::B<dynamic, dynamic>*, Y extends self::H::U* = self::C<dynamic, dynamic>*, Z extends self::H::V* = self::A<dynamic>*> extends core::Object {
   synthetic constructor •() → self::H<self::H::S*, self::H::T*, self::H::U*, self::H::V*, self::H::W*, self::H::X*, self::H::Y*, self::H::Z*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class I<T extends invalid-type = invalid-type, U extends self::I::Y* = invalid-type, V extends (self::I::W*) →* dynamic = (core::Null?) →* dynamic, W extends (self::I::X*) →* dynamic = (core::Null?) →* dynamic, X extends (self::I::V*) →* dynamic = (core::Null?) →* dynamic, Y extends self::I::Z* = invalid-type, Z extends self::I::T* = invalid-type> extends core::Object {
   synthetic constructor •() → self::I<self::I::T*, self::I::U*, self::I::V*, self::I::W*, self::I::X*, self::I::Y*, self::I::Z*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class J<S extends (self::J::U*) →* self::J::T* = (core::Null?) →* dynamic, T extends (self::J::S*) →* self::J::U* = (core::Null?) →* dynamic, U extends (self::J::T*) →* self::J::S* = (core::Null?) →* dynamic, V extends self::J::W* = dynamic, W extends self::J::X* = dynamic, X extends (self::J::V*) →* self::J::Y* = (core::Null?) →* dynamic, Y extends self::J::Z* = dynamic, Z extends self::J::X* = dynamic> extends core::Object {
   synthetic constructor •() → self::J<self::J::S*, self::J::T*, self::J::U*, self::J::V*, self::J::W*, self::J::X*, self::J::Y*, self::J::Z*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field self::D<self::A<dynamic>*, self::A<dynamic>*>* d;
 static field self::E<self::B<dynamic, dynamic>*, self::C<dynamic, dynamic>*, self::B<dynamic, dynamic>*, self::C<dynamic, dynamic>*>* e;
diff --git a/pkg/front_end/testcases/instantiate_to_bound/multiple_strongly_connected.dart.strong.expect b/pkg/front_end/testcases/instantiate_to_bound/multiple_strongly_connected.dart.strong.expect
index f195645..69de3b1 100644
--- a/pkg/front_end/testcases/instantiate_to_bound/multiple_strongly_connected.dart.strong.expect
+++ b/pkg/front_end/testcases/instantiate_to_bound/multiple_strongly_connected.dart.strong.expect
@@ -14,51 +14,151 @@
   synthetic constructor •() → self::A<self::A::X*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B<X extends core::Object* = dynamic, Y extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::B<self::B::X*, self::B::Y*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C<X extends core::Object* = dynamic, Y extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::C<self::C::X*, self::C::Y*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D<X extends self::A<self::D::X*>* = self::A<dynamic>*, Y extends self::A<self::D::Y*>* = self::A<dynamic>*> extends core::Object {
   synthetic constructor •() → self::D<self::D::X*, self::D::Y*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class E<W extends self::B<self::E::W*, self::E::X*>* = self::B<dynamic, dynamic>*, X extends self::C<self::E::W*, self::E::X*>* = self::C<dynamic, dynamic>*, Y extends self::B<self::E::Y*, self::E::Z*>* = self::B<dynamic, dynamic>*, Z extends self::C<self::E::Y*, self::E::Z*>* = self::C<dynamic, dynamic>*> extends core::Object {
   synthetic constructor •() → self::E<self::E::W*, self::E::X*, self::E::Y*, self::E::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class F<V extends core::num* = core::num*, W extends self::B<self::F::W*, self::F::X*>* = self::B<dynamic, dynamic>*, X extends self::C<self::F::W*, self::F::X*>* = self::C<dynamic, dynamic>*, Y extends self::B<self::F::W*, self::F::X*>* = self::B<self::B<dynamic, dynamic>*, self::C<dynamic, dynamic>*>*, Z extends self::C<self::F::Y*, self::F::Z*>* = self::C<self::B<self::B<dynamic, dynamic>*, self::C<dynamic, dynamic>*>*, dynamic>*> extends core::Object {
   synthetic constructor •() → self::F<self::F::V*, self::F::W*, self::F::X*, self::F::Y*, self::F::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class G<V extends core::num* = core::num*, W extends self::B<self::G::V*, self::G::X*>* = self::B<core::num*, dynamic>*, X extends self::C<self::G::W*, self::G::V*>* = self::C<dynamic, core::num*>*, Y extends self::B<self::G::W*, self::G::X*>* = self::B<self::B<core::num*, dynamic>*, self::C<dynamic, core::num*>*>*, Z extends self::C<self::G::Y*, self::G::Z*>* = self::C<self::B<self::B<core::num*, dynamic>*, self::C<dynamic, core::num*>*>*, dynamic>*> extends core::Object {
   synthetic constructor •() → self::G<self::G::V*, self::G::W*, self::G::X*, self::G::Y*, self::G::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class H<S extends self::A<self::H::S*>* = self::A<dynamic>*, T extends self::B<self::H::T*, self::H::U*>* = self::B<dynamic, dynamic>*, U extends self::C<self::H::T*, self::H::U*>* = self::C<dynamic, dynamic>*, V extends self::A<self::H::V*>* = self::A<dynamic>*, W extends self::H::S* = self::A<dynamic>*, X extends self::H::T* = self::B<dynamic, dynamic>*, Y extends self::H::U* = self::C<dynamic, dynamic>*, Z extends self::H::V* = self::A<dynamic>*> extends core::Object {
   synthetic constructor •() → self::H<self::H::S*, self::H::T*, self::H::U*, self::H::V*, self::H::W*, self::H::X*, self::H::Y*, self::H::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class I<T extends invalid-type = invalid-type, U extends self::I::Y* = invalid-type, V extends (self::I::W*) →* dynamic = (core::Null?) →* dynamic, W extends (self::I::X*) →* dynamic = (core::Null?) →* dynamic, X extends (self::I::V*) →* dynamic = (core::Null?) →* dynamic, Y extends self::I::Z* = invalid-type, Z extends self::I::T* = invalid-type> extends core::Object {
   synthetic constructor •() → self::I<self::I::T*, self::I::U*, self::I::V*, self::I::W*, self::I::X*, self::I::Y*, self::I::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class J<S extends (self::J::U*) →* self::J::T* = (core::Null?) →* dynamic, T extends (self::J::S*) →* self::J::U* = (core::Null?) →* dynamic, U extends (self::J::T*) →* self::J::S* = (core::Null?) →* dynamic, V extends self::J::W* = dynamic, W extends self::J::X* = dynamic, X extends (self::J::V*) →* self::J::Y* = (core::Null?) →* dynamic, Y extends self::J::Z* = dynamic, Z extends self::J::X* = dynamic> extends core::Object {
   synthetic constructor •() → self::J<self::J::S*, self::J::T*, self::J::U*, self::J::V*, self::J::W*, self::J::X*, self::J::Y*, self::J::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field self::D<self::A<dynamic>*, self::A<dynamic>*>* d;
 static field self::E<self::B<dynamic, dynamic>*, self::C<dynamic, dynamic>*, self::B<dynamic, dynamic>*, self::C<dynamic, dynamic>*>* e;
diff --git a/pkg/front_end/testcases/instantiate_to_bound/multiple_strongly_connected.dart.strong.transformed.expect b/pkg/front_end/testcases/instantiate_to_bound/multiple_strongly_connected.dart.strong.transformed.expect
index f195645..69de3b1 100644
--- a/pkg/front_end/testcases/instantiate_to_bound/multiple_strongly_connected.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/instantiate_to_bound/multiple_strongly_connected.dart.strong.transformed.expect
@@ -14,51 +14,151 @@
   synthetic constructor •() → self::A<self::A::X*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B<X extends core::Object* = dynamic, Y extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::B<self::B::X*, self::B::Y*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C<X extends core::Object* = dynamic, Y extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::C<self::C::X*, self::C::Y*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D<X extends self::A<self::D::X*>* = self::A<dynamic>*, Y extends self::A<self::D::Y*>* = self::A<dynamic>*> extends core::Object {
   synthetic constructor •() → self::D<self::D::X*, self::D::Y*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class E<W extends self::B<self::E::W*, self::E::X*>* = self::B<dynamic, dynamic>*, X extends self::C<self::E::W*, self::E::X*>* = self::C<dynamic, dynamic>*, Y extends self::B<self::E::Y*, self::E::Z*>* = self::B<dynamic, dynamic>*, Z extends self::C<self::E::Y*, self::E::Z*>* = self::C<dynamic, dynamic>*> extends core::Object {
   synthetic constructor •() → self::E<self::E::W*, self::E::X*, self::E::Y*, self::E::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class F<V extends core::num* = core::num*, W extends self::B<self::F::W*, self::F::X*>* = self::B<dynamic, dynamic>*, X extends self::C<self::F::W*, self::F::X*>* = self::C<dynamic, dynamic>*, Y extends self::B<self::F::W*, self::F::X*>* = self::B<self::B<dynamic, dynamic>*, self::C<dynamic, dynamic>*>*, Z extends self::C<self::F::Y*, self::F::Z*>* = self::C<self::B<self::B<dynamic, dynamic>*, self::C<dynamic, dynamic>*>*, dynamic>*> extends core::Object {
   synthetic constructor •() → self::F<self::F::V*, self::F::W*, self::F::X*, self::F::Y*, self::F::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class G<V extends core::num* = core::num*, W extends self::B<self::G::V*, self::G::X*>* = self::B<core::num*, dynamic>*, X extends self::C<self::G::W*, self::G::V*>* = self::C<dynamic, core::num*>*, Y extends self::B<self::G::W*, self::G::X*>* = self::B<self::B<core::num*, dynamic>*, self::C<dynamic, core::num*>*>*, Z extends self::C<self::G::Y*, self::G::Z*>* = self::C<self::B<self::B<core::num*, dynamic>*, self::C<dynamic, core::num*>*>*, dynamic>*> extends core::Object {
   synthetic constructor •() → self::G<self::G::V*, self::G::W*, self::G::X*, self::G::Y*, self::G::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class H<S extends self::A<self::H::S*>* = self::A<dynamic>*, T extends self::B<self::H::T*, self::H::U*>* = self::B<dynamic, dynamic>*, U extends self::C<self::H::T*, self::H::U*>* = self::C<dynamic, dynamic>*, V extends self::A<self::H::V*>* = self::A<dynamic>*, W extends self::H::S* = self::A<dynamic>*, X extends self::H::T* = self::B<dynamic, dynamic>*, Y extends self::H::U* = self::C<dynamic, dynamic>*, Z extends self::H::V* = self::A<dynamic>*> extends core::Object {
   synthetic constructor •() → self::H<self::H::S*, self::H::T*, self::H::U*, self::H::V*, self::H::W*, self::H::X*, self::H::Y*, self::H::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class I<T extends invalid-type = invalid-type, U extends self::I::Y* = invalid-type, V extends (self::I::W*) →* dynamic = (core::Null?) →* dynamic, W extends (self::I::X*) →* dynamic = (core::Null?) →* dynamic, X extends (self::I::V*) →* dynamic = (core::Null?) →* dynamic, Y extends self::I::Z* = invalid-type, Z extends self::I::T* = invalid-type> extends core::Object {
   synthetic constructor •() → self::I<self::I::T*, self::I::U*, self::I::V*, self::I::W*, self::I::X*, self::I::Y*, self::I::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class J<S extends (self::J::U*) →* self::J::T* = (core::Null?) →* dynamic, T extends (self::J::S*) →* self::J::U* = (core::Null?) →* dynamic, U extends (self::J::T*) →* self::J::S* = (core::Null?) →* dynamic, V extends self::J::W* = dynamic, W extends self::J::X* = dynamic, X extends (self::J::V*) →* self::J::Y* = (core::Null?) →* dynamic, Y extends self::J::Z* = dynamic, Z extends self::J::X* = dynamic> extends core::Object {
   synthetic constructor •() → self::J<self::J::S*, self::J::T*, self::J::U*, self::J::V*, self::J::W*, self::J::X*, self::J::Y*, self::J::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field self::D<self::A<dynamic>*, self::A<dynamic>*>* d;
 static field self::E<self::B<dynamic, dynamic>*, self::C<dynamic, dynamic>*, self::B<dynamic, dynamic>*, self::C<dynamic, dynamic>*>* e;
diff --git a/pkg/front_end/testcases/instantiate_to_bound/mutual_dependence.dart.outline.expect b/pkg/front_end/testcases/instantiate_to_bound/mutual_dependence.dart.outline.expect
index e4d29b4..4af7753 100644
--- a/pkg/front_end/testcases/instantiate_to_bound/mutual_dependence.dart.outline.expect
+++ b/pkg/front_end/testcases/instantiate_to_bound/mutual_dependence.dart.outline.expect
@@ -5,42 +5,142 @@
 class B<X extends core::Object* = dynamic, Y extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::B<self::B::X*, self::B::Y*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C1<X extends (self::C1::Y*) →* self::C1::X* = (core::Null?) →* dynamic, Y extends (self::C1::Y*) →* self::C1::X* = (core::Null?) →* dynamic> extends core::Object {
   synthetic constructor •() → self::C1<self::C1::X*, self::C1::Y*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C2<X extends (self::C2::Y*) →* self::C2::X* = (core::Null?) →* dynamic, Y extends (self::C2::X*) →* self::C2::Y* = (core::Null?) →* dynamic> extends core::Object {
   synthetic constructor •() → self::C2<self::C2::X*, self::C2::Y*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C3<X extends (self::C3::X*, self::C3::Y*) →* self::C3::X* = (core::Null?, core::Null?) →* dynamic, Y extends (self::C3::X*, self::C3::Y*) →* self::C3::X* = (core::Null?, core::Null?) →* dynamic> extends core::Object {
   synthetic constructor •() → self::C3<self::C3::X*, self::C3::Y*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C4<X extends (self::C4::X*, self::C4::Y*) →* self::C4::X* = (core::Null?, core::Null?) →* dynamic, Y extends (self::C4::X*, self::C4::Y*) →* self::C4::Y* = (core::Null?, core::Null?) →* dynamic> extends core::Object {
   synthetic constructor •() → self::C4<self::C4::X*, self::C4::Y*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D1<X extends self::B<self::D1::X*, self::D1::Y*>* = self::B<dynamic, dynamic>*, Y extends (self::D1::Y*) →* self::D1::X* = (core::Null?) →* dynamic> extends core::Object {
   synthetic constructor •() → self::D1<self::D1::X*, self::D1::Y*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D2<X extends self::B<self::D2::X*, self::D2::Y*>* = self::B<dynamic, dynamic>*, Y extends (self::D2::X*) →* self::D2::Y* = (core::Null?) →* dynamic> extends core::Object {
   synthetic constructor •() → self::D2<self::D2::X*, self::D2::Y*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D3<X extends self::B<self::D3::X*, self::D3::Y*>* = self::B<dynamic, dynamic>*, Y extends (self::D3::X*, self::D3::Y*) →* self::D3::X* = (core::Null?, core::Null?) →* dynamic> extends core::Object {
   synthetic constructor •() → self::D3<self::D3::X*, self::D3::Y*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D4<X extends self::B<self::D4::X*, self::D4::Y*>* = self::B<dynamic, dynamic>*, Y extends (self::D4::X*, self::D4::Y*) →* self::D4::Y* = (core::Null?, core::Null?) →* dynamic> extends core::Object {
   synthetic constructor •() → self::D4<self::D4::X*, self::D4::Y*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class E<X extends (self::E::X*) →* self::E::X* = (core::Null?) →* dynamic> extends core::Object {
   synthetic constructor •() → self::E<self::E::X*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field self::C1<(core::Null?) →* dynamic, (core::Null?) →* dynamic>* c1;
 static field self::C2<(core::Null?) →* dynamic, (core::Null?) →* dynamic>* c2;
diff --git a/pkg/front_end/testcases/instantiate_to_bound/mutual_dependence.dart.strong.expect b/pkg/front_end/testcases/instantiate_to_bound/mutual_dependence.dart.strong.expect
index c56a66f..37a0cfc 100644
--- a/pkg/front_end/testcases/instantiate_to_bound/mutual_dependence.dart.strong.expect
+++ b/pkg/front_end/testcases/instantiate_to_bound/mutual_dependence.dart.strong.expect
@@ -6,51 +6,151 @@
   synthetic constructor •() → self::B<self::B::X*, self::B::Y*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C1<X extends (self::C1::Y*) →* self::C1::X* = (core::Null?) →* dynamic, Y extends (self::C1::Y*) →* self::C1::X* = (core::Null?) →* dynamic> extends core::Object {
   synthetic constructor •() → self::C1<self::C1::X*, self::C1::Y*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C2<X extends (self::C2::Y*) →* self::C2::X* = (core::Null?) →* dynamic, Y extends (self::C2::X*) →* self::C2::Y* = (core::Null?) →* dynamic> extends core::Object {
   synthetic constructor •() → self::C2<self::C2::X*, self::C2::Y*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C3<X extends (self::C3::X*, self::C3::Y*) →* self::C3::X* = (core::Null?, core::Null?) →* dynamic, Y extends (self::C3::X*, self::C3::Y*) →* self::C3::X* = (core::Null?, core::Null?) →* dynamic> extends core::Object {
   synthetic constructor •() → self::C3<self::C3::X*, self::C3::Y*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C4<X extends (self::C4::X*, self::C4::Y*) →* self::C4::X* = (core::Null?, core::Null?) →* dynamic, Y extends (self::C4::X*, self::C4::Y*) →* self::C4::Y* = (core::Null?, core::Null?) →* dynamic> extends core::Object {
   synthetic constructor •() → self::C4<self::C4::X*, self::C4::Y*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D1<X extends self::B<self::D1::X*, self::D1::Y*>* = self::B<dynamic, dynamic>*, Y extends (self::D1::Y*) →* self::D1::X* = (core::Null?) →* dynamic> extends core::Object {
   synthetic constructor •() → self::D1<self::D1::X*, self::D1::Y*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D2<X extends self::B<self::D2::X*, self::D2::Y*>* = self::B<dynamic, dynamic>*, Y extends (self::D2::X*) →* self::D2::Y* = (core::Null?) →* dynamic> extends core::Object {
   synthetic constructor •() → self::D2<self::D2::X*, self::D2::Y*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D3<X extends self::B<self::D3::X*, self::D3::Y*>* = self::B<dynamic, dynamic>*, Y extends (self::D3::X*, self::D3::Y*) →* self::D3::X* = (core::Null?, core::Null?) →* dynamic> extends core::Object {
   synthetic constructor •() → self::D3<self::D3::X*, self::D3::Y*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D4<X extends self::B<self::D4::X*, self::D4::Y*>* = self::B<dynamic, dynamic>*, Y extends (self::D4::X*, self::D4::Y*) →* self::D4::Y* = (core::Null?, core::Null?) →* dynamic> extends core::Object {
   synthetic constructor •() → self::D4<self::D4::X*, self::D4::Y*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class E<X extends (self::E::X*) →* self::E::X* = (core::Null?) →* dynamic> extends core::Object {
   synthetic constructor •() → self::E<self::E::X*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field self::C1<(core::Null?) →* dynamic, (core::Null?) →* dynamic>* c1;
 static field self::C2<(core::Null?) →* dynamic, (core::Null?) →* dynamic>* c2;
diff --git a/pkg/front_end/testcases/instantiate_to_bound/mutual_dependence.dart.strong.transformed.expect b/pkg/front_end/testcases/instantiate_to_bound/mutual_dependence.dart.strong.transformed.expect
index c56a66f..37a0cfc 100644
--- a/pkg/front_end/testcases/instantiate_to_bound/mutual_dependence.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/instantiate_to_bound/mutual_dependence.dart.strong.transformed.expect
@@ -6,51 +6,151 @@
   synthetic constructor •() → self::B<self::B::X*, self::B::Y*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C1<X extends (self::C1::Y*) →* self::C1::X* = (core::Null?) →* dynamic, Y extends (self::C1::Y*) →* self::C1::X* = (core::Null?) →* dynamic> extends core::Object {
   synthetic constructor •() → self::C1<self::C1::X*, self::C1::Y*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C2<X extends (self::C2::Y*) →* self::C2::X* = (core::Null?) →* dynamic, Y extends (self::C2::X*) →* self::C2::Y* = (core::Null?) →* dynamic> extends core::Object {
   synthetic constructor •() → self::C2<self::C2::X*, self::C2::Y*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C3<X extends (self::C3::X*, self::C3::Y*) →* self::C3::X* = (core::Null?, core::Null?) →* dynamic, Y extends (self::C3::X*, self::C3::Y*) →* self::C3::X* = (core::Null?, core::Null?) →* dynamic> extends core::Object {
   synthetic constructor •() → self::C3<self::C3::X*, self::C3::Y*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C4<X extends (self::C4::X*, self::C4::Y*) →* self::C4::X* = (core::Null?, core::Null?) →* dynamic, Y extends (self::C4::X*, self::C4::Y*) →* self::C4::Y* = (core::Null?, core::Null?) →* dynamic> extends core::Object {
   synthetic constructor •() → self::C4<self::C4::X*, self::C4::Y*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D1<X extends self::B<self::D1::X*, self::D1::Y*>* = self::B<dynamic, dynamic>*, Y extends (self::D1::Y*) →* self::D1::X* = (core::Null?) →* dynamic> extends core::Object {
   synthetic constructor •() → self::D1<self::D1::X*, self::D1::Y*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D2<X extends self::B<self::D2::X*, self::D2::Y*>* = self::B<dynamic, dynamic>*, Y extends (self::D2::X*) →* self::D2::Y* = (core::Null?) →* dynamic> extends core::Object {
   synthetic constructor •() → self::D2<self::D2::X*, self::D2::Y*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D3<X extends self::B<self::D3::X*, self::D3::Y*>* = self::B<dynamic, dynamic>*, Y extends (self::D3::X*, self::D3::Y*) →* self::D3::X* = (core::Null?, core::Null?) →* dynamic> extends core::Object {
   synthetic constructor •() → self::D3<self::D3::X*, self::D3::Y*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D4<X extends self::B<self::D4::X*, self::D4::Y*>* = self::B<dynamic, dynamic>*, Y extends (self::D4::X*, self::D4::Y*) →* self::D4::Y* = (core::Null?, core::Null?) →* dynamic> extends core::Object {
   synthetic constructor •() → self::D4<self::D4::X*, self::D4::Y*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class E<X extends (self::E::X*) →* self::E::X* = (core::Null?) →* dynamic> extends core::Object {
   synthetic constructor •() → self::E<self::E::X*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field self::C1<(core::Null?) →* dynamic, (core::Null?) →* dynamic>* c1;
 static field self::C2<(core::Null?) →* dynamic, (core::Null?) →* dynamic>* c2;
diff --git a/pkg/front_end/testcases/instantiate_to_bound/mutual_dependence_in_literals.dart.outline.expect b/pkg/front_end/testcases/instantiate_to_bound/mutual_dependence_in_literals.dart.outline.expect
index c60f956..5ff1d6a 100644
--- a/pkg/front_end/testcases/instantiate_to_bound/mutual_dependence_in_literals.dart.outline.expect
+++ b/pkg/front_end/testcases/instantiate_to_bound/mutual_dependence_in_literals.dart.outline.expect
@@ -5,42 +5,142 @@
 class B<X extends core::Object* = dynamic, Y extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::B<self::B::X*, self::B::Y*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C1<X extends (self::C1::Y*) →* self::C1::X* = (core::Null?) →* dynamic, Y extends (self::C1::Y*) →* self::C1::X* = (core::Null?) →* dynamic> extends core::Object {
   synthetic constructor •() → self::C1<self::C1::X*, self::C1::Y*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C2<X extends (self::C2::Y*) →* self::C2::X* = (core::Null?) →* dynamic, Y extends (self::C2::X*) →* self::C2::Y* = (core::Null?) →* dynamic> extends core::Object {
   synthetic constructor •() → self::C2<self::C2::X*, self::C2::Y*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C3<X extends (self::C3::X*, self::C3::Y*) →* self::C3::X* = (core::Null?, core::Null?) →* dynamic, Y extends (self::C3::X*, self::C3::Y*) →* self::C3::X* = (core::Null?, core::Null?) →* dynamic> extends core::Object {
   synthetic constructor •() → self::C3<self::C3::X*, self::C3::Y*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C4<X extends (self::C4::X*, self::C4::Y*) →* self::C4::X* = (core::Null?, core::Null?) →* dynamic, Y extends (self::C4::X*, self::C4::Y*) →* self::C4::Y* = (core::Null?, core::Null?) →* dynamic> extends core::Object {
   synthetic constructor •() → self::C4<self::C4::X*, self::C4::Y*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D1<X extends self::B<self::D1::X*, self::D1::Y*>* = self::B<dynamic, dynamic>*, Y extends (self::D1::Y*) →* self::D1::X* = (core::Null?) →* dynamic> extends core::Object {
   synthetic constructor •() → self::D1<self::D1::X*, self::D1::Y*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D2<X extends self::B<self::D2::X*, self::D2::Y*>* = self::B<dynamic, dynamic>*, Y extends (self::D2::X*) →* self::D2::Y* = (core::Null?) →* dynamic> extends core::Object {
   synthetic constructor •() → self::D2<self::D2::X*, self::D2::Y*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D3<X extends self::B<self::D3::X*, self::D3::Y*>* = self::B<dynamic, dynamic>*, Y extends (self::D3::X*, self::D3::Y*) →* self::D3::X* = (core::Null?, core::Null?) →* dynamic> extends core::Object {
   synthetic constructor •() → self::D3<self::D3::X*, self::D3::Y*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D4<X extends self::B<self::D4::X*, self::D4::Y*>* = self::B<dynamic, dynamic>*, Y extends (self::D4::X*, self::D4::Y*) →* self::D4::Y* = (core::Null?, core::Null?) →* dynamic> extends core::Object {
   synthetic constructor •() → self::D4<self::D4::X*, self::D4::Y*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class E<X extends (self::E::X*) →* self::E::X* = (core::Null?) →* dynamic> extends core::Object {
   synthetic constructor •() → self::E<self::E::X*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field core::List<self::C1<(core::Null?) →* dynamic, (core::Null?) →* dynamic>*>* lc1;
 static field core::Map<self::C1<(core::Null?) →* dynamic, (core::Null?) →* dynamic>*, self::C1<(core::Null?) →* dynamic, (core::Null?) →* dynamic>*>* mc1;
diff --git a/pkg/front_end/testcases/instantiate_to_bound/mutual_dependence_in_literals.dart.strong.expect b/pkg/front_end/testcases/instantiate_to_bound/mutual_dependence_in_literals.dart.strong.expect
index fad1c97..551f398 100644
--- a/pkg/front_end/testcases/instantiate_to_bound/mutual_dependence_in_literals.dart.strong.expect
+++ b/pkg/front_end/testcases/instantiate_to_bound/mutual_dependence_in_literals.dart.strong.expect
@@ -6,51 +6,151 @@
   synthetic constructor •() → self::B<self::B::X*, self::B::Y*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C1<X extends (self::C1::Y*) →* self::C1::X* = (core::Null?) →* dynamic, Y extends (self::C1::Y*) →* self::C1::X* = (core::Null?) →* dynamic> extends core::Object {
   synthetic constructor •() → self::C1<self::C1::X*, self::C1::Y*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C2<X extends (self::C2::Y*) →* self::C2::X* = (core::Null?) →* dynamic, Y extends (self::C2::X*) →* self::C2::Y* = (core::Null?) →* dynamic> extends core::Object {
   synthetic constructor •() → self::C2<self::C2::X*, self::C2::Y*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C3<X extends (self::C3::X*, self::C3::Y*) →* self::C3::X* = (core::Null?, core::Null?) →* dynamic, Y extends (self::C3::X*, self::C3::Y*) →* self::C3::X* = (core::Null?, core::Null?) →* dynamic> extends core::Object {
   synthetic constructor •() → self::C3<self::C3::X*, self::C3::Y*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C4<X extends (self::C4::X*, self::C4::Y*) →* self::C4::X* = (core::Null?, core::Null?) →* dynamic, Y extends (self::C4::X*, self::C4::Y*) →* self::C4::Y* = (core::Null?, core::Null?) →* dynamic> extends core::Object {
   synthetic constructor •() → self::C4<self::C4::X*, self::C4::Y*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D1<X extends self::B<self::D1::X*, self::D1::Y*>* = self::B<dynamic, dynamic>*, Y extends (self::D1::Y*) →* self::D1::X* = (core::Null?) →* dynamic> extends core::Object {
   synthetic constructor •() → self::D1<self::D1::X*, self::D1::Y*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D2<X extends self::B<self::D2::X*, self::D2::Y*>* = self::B<dynamic, dynamic>*, Y extends (self::D2::X*) →* self::D2::Y* = (core::Null?) →* dynamic> extends core::Object {
   synthetic constructor •() → self::D2<self::D2::X*, self::D2::Y*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D3<X extends self::B<self::D3::X*, self::D3::Y*>* = self::B<dynamic, dynamic>*, Y extends (self::D3::X*, self::D3::Y*) →* self::D3::X* = (core::Null?, core::Null?) →* dynamic> extends core::Object {
   synthetic constructor •() → self::D3<self::D3::X*, self::D3::Y*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D4<X extends self::B<self::D4::X*, self::D4::Y*>* = self::B<dynamic, dynamic>*, Y extends (self::D4::X*, self::D4::Y*) →* self::D4::Y* = (core::Null?, core::Null?) →* dynamic> extends core::Object {
   synthetic constructor •() → self::D4<self::D4::X*, self::D4::Y*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class E<X extends (self::E::X*) →* self::E::X* = (core::Null?) →* dynamic> extends core::Object {
   synthetic constructor •() → self::E<self::E::X*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field core::List<self::C1<(core::Null?) →* dynamic, (core::Null?) →* dynamic>*>* lc1 = <self::C1<(core::Null?) →* dynamic, (core::Null?) →* dynamic>*>[];
 static field core::Map<self::C1<(core::Null?) →* dynamic, (core::Null?) →* dynamic>*, self::C1<(core::Null?) →* dynamic, (core::Null?) →* dynamic>*>* mc1 = <self::C1<(core::Null?) →* dynamic, (core::Null?) →* dynamic>*, self::C1<(core::Null?) →* dynamic, (core::Null?) →* dynamic>*>{};
diff --git a/pkg/front_end/testcases/instantiate_to_bound/mutual_dependence_in_literals.dart.strong.transformed.expect b/pkg/front_end/testcases/instantiate_to_bound/mutual_dependence_in_literals.dart.strong.transformed.expect
index fad1c97..551f398 100644
--- a/pkg/front_end/testcases/instantiate_to_bound/mutual_dependence_in_literals.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/instantiate_to_bound/mutual_dependence_in_literals.dart.strong.transformed.expect
@@ -6,51 +6,151 @@
   synthetic constructor •() → self::B<self::B::X*, self::B::Y*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C1<X extends (self::C1::Y*) →* self::C1::X* = (core::Null?) →* dynamic, Y extends (self::C1::Y*) →* self::C1::X* = (core::Null?) →* dynamic> extends core::Object {
   synthetic constructor •() → self::C1<self::C1::X*, self::C1::Y*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C2<X extends (self::C2::Y*) →* self::C2::X* = (core::Null?) →* dynamic, Y extends (self::C2::X*) →* self::C2::Y* = (core::Null?) →* dynamic> extends core::Object {
   synthetic constructor •() → self::C2<self::C2::X*, self::C2::Y*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C3<X extends (self::C3::X*, self::C3::Y*) →* self::C3::X* = (core::Null?, core::Null?) →* dynamic, Y extends (self::C3::X*, self::C3::Y*) →* self::C3::X* = (core::Null?, core::Null?) →* dynamic> extends core::Object {
   synthetic constructor •() → self::C3<self::C3::X*, self::C3::Y*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C4<X extends (self::C4::X*, self::C4::Y*) →* self::C4::X* = (core::Null?, core::Null?) →* dynamic, Y extends (self::C4::X*, self::C4::Y*) →* self::C4::Y* = (core::Null?, core::Null?) →* dynamic> extends core::Object {
   synthetic constructor •() → self::C4<self::C4::X*, self::C4::Y*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D1<X extends self::B<self::D1::X*, self::D1::Y*>* = self::B<dynamic, dynamic>*, Y extends (self::D1::Y*) →* self::D1::X* = (core::Null?) →* dynamic> extends core::Object {
   synthetic constructor •() → self::D1<self::D1::X*, self::D1::Y*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D2<X extends self::B<self::D2::X*, self::D2::Y*>* = self::B<dynamic, dynamic>*, Y extends (self::D2::X*) →* self::D2::Y* = (core::Null?) →* dynamic> extends core::Object {
   synthetic constructor •() → self::D2<self::D2::X*, self::D2::Y*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D3<X extends self::B<self::D3::X*, self::D3::Y*>* = self::B<dynamic, dynamic>*, Y extends (self::D3::X*, self::D3::Y*) →* self::D3::X* = (core::Null?, core::Null?) →* dynamic> extends core::Object {
   synthetic constructor •() → self::D3<self::D3::X*, self::D3::Y*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D4<X extends self::B<self::D4::X*, self::D4::Y*>* = self::B<dynamic, dynamic>*, Y extends (self::D4::X*, self::D4::Y*) →* self::D4::Y* = (core::Null?, core::Null?) →* dynamic> extends core::Object {
   synthetic constructor •() → self::D4<self::D4::X*, self::D4::Y*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class E<X extends (self::E::X*) →* self::E::X* = (core::Null?) →* dynamic> extends core::Object {
   synthetic constructor •() → self::E<self::E::X*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field core::List<self::C1<(core::Null?) →* dynamic, (core::Null?) →* dynamic>*>* lc1 = <self::C1<(core::Null?) →* dynamic, (core::Null?) →* dynamic>*>[];
 static field core::Map<self::C1<(core::Null?) →* dynamic, (core::Null?) →* dynamic>*, self::C1<(core::Null?) →* dynamic, (core::Null?) →* dynamic>*>* mc1 = <self::C1<(core::Null?) →* dynamic, (core::Null?) →* dynamic>*, self::C1<(core::Null?) →* dynamic, (core::Null?) →* dynamic>*>{};
diff --git a/pkg/front_end/testcases/instantiate_to_bound/non_simple_bound_due_to_non_simple.dart.outline.expect b/pkg/front_end/testcases/instantiate_to_bound/non_simple_bound_due_to_non_simple.dart.outline.expect
index 18774f6..e70f394 100644
--- a/pkg/front_end/testcases/instantiate_to_bound/non_simple_bound_due_to_non_simple.dart.outline.expect
+++ b/pkg/front_end/testcases/instantiate_to_bound/non_simple_bound_due_to_non_simple.dart.outline.expect
@@ -16,14 +16,44 @@
 class A<TypeT extends core::Object* = dynamic, TypeS extends self::A::TypeT* = dynamic> extends core::Object {
   synthetic constructor •() → self::A<self::A::TypeT*, self::A::TypeS*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B<TypeU extends self::A<dynamic, dynamic>* = dynamic> extends core::Object {
   synthetic constructor •() → self::B<self::B::TypeU*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C<TypeV extends self::B<dynamic>* = self::B<dynamic>*> extends core::Object {
   synthetic constructor •() → self::C<self::C::TypeV*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field self::C<self::B<dynamic>*>* c;
 static method main() → dynamic
diff --git a/pkg/front_end/testcases/instantiate_to_bound/non_simple_bound_due_to_non_simple.dart.strong.expect b/pkg/front_end/testcases/instantiate_to_bound/non_simple_bound_due_to_non_simple.dart.strong.expect
index c7f2472..9ddb5d3 100644
--- a/pkg/front_end/testcases/instantiate_to_bound/non_simple_bound_due_to_non_simple.dart.strong.expect
+++ b/pkg/front_end/testcases/instantiate_to_bound/non_simple_bound_due_to_non_simple.dart.strong.expect
@@ -17,16 +17,46 @@
   synthetic constructor •() → self::A<self::A::TypeT*, self::A::TypeS*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B<TypeU extends self::A<dynamic, dynamic>* = dynamic> extends core::Object {
   synthetic constructor •() → self::B<self::B::TypeU*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C<TypeV extends self::B<dynamic>* = self::B<dynamic>*> extends core::Object {
   synthetic constructor •() → self::C<self::C::TypeV*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field self::C<self::B<dynamic>*>* c;
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/instantiate_to_bound/non_simple_bound_due_to_non_simple.dart.strong.transformed.expect b/pkg/front_end/testcases/instantiate_to_bound/non_simple_bound_due_to_non_simple.dart.strong.transformed.expect
index c7f2472..9ddb5d3 100644
--- a/pkg/front_end/testcases/instantiate_to_bound/non_simple_bound_due_to_non_simple.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/instantiate_to_bound/non_simple_bound_due_to_non_simple.dart.strong.transformed.expect
@@ -17,16 +17,46 @@
   synthetic constructor •() → self::A<self::A::TypeT*, self::A::TypeS*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B<TypeU extends self::A<dynamic, dynamic>* = dynamic> extends core::Object {
   synthetic constructor •() → self::B<self::B::TypeU*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C<TypeV extends self::B<dynamic>* = self::B<dynamic>*> extends core::Object {
   synthetic constructor •() → self::C<self::C::TypeV*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field self::C<self::B<dynamic>*>* c;
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/instantiate_to_bound/non_simple_bound_due_to_variables.dart.outline.expect b/pkg/front_end/testcases/instantiate_to_bound/non_simple_bound_due_to_variables.dart.outline.expect
index c2e470a..ee19a71 100644
--- a/pkg/front_end/testcases/instantiate_to_bound/non_simple_bound_due_to_variables.dart.outline.expect
+++ b/pkg/front_end/testcases/instantiate_to_bound/non_simple_bound_due_to_variables.dart.outline.expect
@@ -16,10 +16,30 @@
 class A<TypeT extends core::Object* = dynamic, TypeS extends self::A::TypeT* = dynamic> extends core::Object {
   synthetic constructor •() → self::A<self::A::TypeT*, self::A::TypeS*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B<TypeU extends self::A<dynamic, dynamic>* = dynamic> extends core::Object {
   synthetic constructor •() → self::B<self::B::TypeU*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field self::B<dynamic>* b;
 static method main() → dynamic
diff --git a/pkg/front_end/testcases/instantiate_to_bound/non_simple_bound_due_to_variables.dart.strong.expect b/pkg/front_end/testcases/instantiate_to_bound/non_simple_bound_due_to_variables.dart.strong.expect
index 4668262..4d01b63 100644
--- a/pkg/front_end/testcases/instantiate_to_bound/non_simple_bound_due_to_variables.dart.strong.expect
+++ b/pkg/front_end/testcases/instantiate_to_bound/non_simple_bound_due_to_variables.dart.strong.expect
@@ -17,11 +17,31 @@
   synthetic constructor •() → self::A<self::A::TypeT*, self::A::TypeS*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B<TypeU extends self::A<dynamic, dynamic>* = dynamic> extends core::Object {
   synthetic constructor •() → self::B<self::B::TypeU*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field self::B<dynamic>* b;
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/instantiate_to_bound/non_simple_bound_due_to_variables.dart.strong.transformed.expect b/pkg/front_end/testcases/instantiate_to_bound/non_simple_bound_due_to_variables.dart.strong.transformed.expect
index 4668262..4d01b63 100644
--- a/pkg/front_end/testcases/instantiate_to_bound/non_simple_bound_due_to_variables.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/instantiate_to_bound/non_simple_bound_due_to_variables.dart.strong.transformed.expect
@@ -17,11 +17,31 @@
   synthetic constructor •() → self::A<self::A::TypeT*, self::A::TypeS*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B<TypeU extends self::A<dynamic, dynamic>* = dynamic> extends core::Object {
   synthetic constructor •() → self::B<self::B::TypeU*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field self::B<dynamic>* b;
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/instantiate_to_bound/non_simple_class_parametrized_typedef_cycle.dart.outline.expect b/pkg/front_end/testcases/instantiate_to_bound/non_simple_class_parametrized_typedef_cycle.dart.outline.expect
index 33a14b2..1b0b6bc 100644
--- a/pkg/front_end/testcases/instantiate_to_bound/non_simple_class_parametrized_typedef_cycle.dart.outline.expect
+++ b/pkg/front_end/testcases/instantiate_to_bound/non_simple_class_parametrized_typedef_cycle.dart.outline.expect
@@ -20,6 +20,16 @@
 class Hest<TypeX extends <TypeY extends core::Object* = dynamic>() →* void = <TypeY extends core::Object* = dynamic>() →* void> extends core::Object {
   synthetic constructor •() → self::Hest<self::Hest::TypeX*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/instantiate_to_bound/non_simple_class_parametrized_typedef_cycle.dart.strong.expect b/pkg/front_end/testcases/instantiate_to_bound/non_simple_class_parametrized_typedef_cycle.dart.strong.expect
index f4d1a2b..b215e55 100644
--- a/pkg/front_end/testcases/instantiate_to_bound/non_simple_class_parametrized_typedef_cycle.dart.strong.expect
+++ b/pkg/front_end/testcases/instantiate_to_bound/non_simple_class_parametrized_typedef_cycle.dart.strong.expect
@@ -21,5 +21,15 @@
   synthetic constructor •() → self::Hest<self::Hest::TypeX*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/instantiate_to_bound/non_simple_class_parametrized_typedef_cycle.dart.strong.transformed.expect b/pkg/front_end/testcases/instantiate_to_bound/non_simple_class_parametrized_typedef_cycle.dart.strong.transformed.expect
index f4d1a2b..b215e55 100644
--- a/pkg/front_end/testcases/instantiate_to_bound/non_simple_class_parametrized_typedef_cycle.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/instantiate_to_bound/non_simple_class_parametrized_typedef_cycle.dart.strong.transformed.expect
@@ -21,5 +21,15 @@
   synthetic constructor •() → self::Hest<self::Hest::TypeX*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/instantiate_to_bound/non_simple_class_typedef_cycle.dart.outline.expect b/pkg/front_end/testcases/instantiate_to_bound/non_simple_class_typedef_cycle.dart.outline.expect
index ada0233..93c6189 100644
--- a/pkg/front_end/testcases/instantiate_to_bound/non_simple_class_typedef_cycle.dart.outline.expect
+++ b/pkg/front_end/testcases/instantiate_to_bound/non_simple_class_typedef_cycle.dart.outline.expect
@@ -20,6 +20,16 @@
 class Hest<TypeX extends () →* void = () →* void> extends core::Object {
   synthetic constructor •() → self::Hest<self::Hest::TypeX*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/instantiate_to_bound/non_simple_class_typedef_cycle.dart.strong.expect b/pkg/front_end/testcases/instantiate_to_bound/non_simple_class_typedef_cycle.dart.strong.expect
index f4c5a8b..14bebb0 100644
--- a/pkg/front_end/testcases/instantiate_to_bound/non_simple_class_typedef_cycle.dart.strong.expect
+++ b/pkg/front_end/testcases/instantiate_to_bound/non_simple_class_typedef_cycle.dart.strong.expect
@@ -21,5 +21,15 @@
   synthetic constructor •() → self::Hest<self::Hest::TypeX*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/instantiate_to_bound/non_simple_class_typedef_cycle.dart.strong.transformed.expect b/pkg/front_end/testcases/instantiate_to_bound/non_simple_class_typedef_cycle.dart.strong.transformed.expect
index f4c5a8b..14bebb0 100644
--- a/pkg/front_end/testcases/instantiate_to_bound/non_simple_class_typedef_cycle.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/instantiate_to_bound/non_simple_class_typedef_cycle.dart.strong.transformed.expect
@@ -21,5 +21,15 @@
   synthetic constructor •() → self::Hest<self::Hest::TypeX*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/instantiate_to_bound/non_simple_co_inductive.dart.outline.expect b/pkg/front_end/testcases/instantiate_to_bound/non_simple_co_inductive.dart.outline.expect
index a14595a..2830b2d 100644
--- a/pkg/front_end/testcases/instantiate_to_bound/non_simple_co_inductive.dart.outline.expect
+++ b/pkg/front_end/testcases/instantiate_to_bound/non_simple_co_inductive.dart.outline.expect
@@ -13,6 +13,16 @@
 class Hest<TypeX extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::Hest<self::Hest::TypeX*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/instantiate_to_bound/non_simple_co_inductive.dart.strong.expect b/pkg/front_end/testcases/instantiate_to_bound/non_simple_co_inductive.dart.strong.expect
index 5e84789..89f4497 100644
--- a/pkg/front_end/testcases/instantiate_to_bound/non_simple_co_inductive.dart.strong.expect
+++ b/pkg/front_end/testcases/instantiate_to_bound/non_simple_co_inductive.dart.strong.expect
@@ -14,5 +14,15 @@
   synthetic constructor •() → self::Hest<self::Hest::TypeX*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/instantiate_to_bound/non_simple_co_inductive.dart.strong.transformed.expect b/pkg/front_end/testcases/instantiate_to_bound/non_simple_co_inductive.dart.strong.transformed.expect
index 5e84789..89f4497 100644
--- a/pkg/front_end/testcases/instantiate_to_bound/non_simple_co_inductive.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/instantiate_to_bound/non_simple_co_inductive.dart.strong.transformed.expect
@@ -14,5 +14,15 @@
   synthetic constructor •() → self::Hest<self::Hest::TypeX*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/instantiate_to_bound/non_simple_co_inductive_for_each.dart.outline.expect b/pkg/front_end/testcases/instantiate_to_bound/non_simple_co_inductive_for_each.dart.outline.expect
index 667c623..a41ca3e 100644
--- a/pkg/front_end/testcases/instantiate_to_bound/non_simple_co_inductive_for_each.dart.outline.expect
+++ b/pkg/front_end/testcases/instantiate_to_bound/non_simple_co_inductive_for_each.dart.outline.expect
@@ -18,6 +18,16 @@
 class Hest<TypeX extends core::Object* = dynamic, TypeY extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::Hest<self::Hest::TypeX*, self::Hest::TypeY*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/instantiate_to_bound/non_simple_co_inductive_for_each.dart.strong.expect b/pkg/front_end/testcases/instantiate_to_bound/non_simple_co_inductive_for_each.dart.strong.expect
index 76889cc..dd9c82e 100644
--- a/pkg/front_end/testcases/instantiate_to_bound/non_simple_co_inductive_for_each.dart.strong.expect
+++ b/pkg/front_end/testcases/instantiate_to_bound/non_simple_co_inductive_for_each.dart.strong.expect
@@ -19,5 +19,15 @@
   synthetic constructor •() → self::Hest<self::Hest::TypeX*, self::Hest::TypeY*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/instantiate_to_bound/non_simple_co_inductive_for_each.dart.strong.transformed.expect b/pkg/front_end/testcases/instantiate_to_bound/non_simple_co_inductive_for_each.dart.strong.transformed.expect
index 76889cc..dd9c82e 100644
--- a/pkg/front_end/testcases/instantiate_to_bound/non_simple_co_inductive_for_each.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/instantiate_to_bound/non_simple_co_inductive_for_each.dart.strong.transformed.expect
@@ -19,5 +19,15 @@
   synthetic constructor •() → self::Hest<self::Hest::TypeX*, self::Hest::TypeY*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/instantiate_to_bound/non_simple_co_inductive_no_dup.dart.outline.expect b/pkg/front_end/testcases/instantiate_to_bound/non_simple_co_inductive_no_dup.dart.outline.expect
index 84aeb37..9150bb8 100644
--- a/pkg/front_end/testcases/instantiate_to_bound/non_simple_co_inductive_no_dup.dart.outline.expect
+++ b/pkg/front_end/testcases/instantiate_to_bound/non_simple_co_inductive_no_dup.dart.outline.expect
@@ -13,6 +13,16 @@
 class Hest<TypeX extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::Hest<self::Hest::TypeX*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/instantiate_to_bound/non_simple_co_inductive_no_dup.dart.strong.expect b/pkg/front_end/testcases/instantiate_to_bound/non_simple_co_inductive_no_dup.dart.strong.expect
index af231ae..a74dd17 100644
--- a/pkg/front_end/testcases/instantiate_to_bound/non_simple_co_inductive_no_dup.dart.strong.expect
+++ b/pkg/front_end/testcases/instantiate_to_bound/non_simple_co_inductive_no_dup.dart.strong.expect
@@ -14,5 +14,15 @@
   synthetic constructor •() → self::Hest<self::Hest::TypeX*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/instantiate_to_bound/non_simple_co_inductive_no_dup.dart.strong.transformed.expect b/pkg/front_end/testcases/instantiate_to_bound/non_simple_co_inductive_no_dup.dart.strong.transformed.expect
index af231ae..a74dd17 100644
--- a/pkg/front_end/testcases/instantiate_to_bound/non_simple_co_inductive_no_dup.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/instantiate_to_bound/non_simple_co_inductive_no_dup.dart.strong.transformed.expect
@@ -14,5 +14,15 @@
   synthetic constructor •() → self::Hest<self::Hest::TypeX*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/instantiate_to_bound/non_simple_folded_regress.dart.outline.expect b/pkg/front_end/testcases/instantiate_to_bound/non_simple_folded_regress.dart.outline.expect
index e90977d..215d721 100644
--- a/pkg/front_end/testcases/instantiate_to_bound/non_simple_folded_regress.dart.outline.expect
+++ b/pkg/front_end/testcases/instantiate_to_bound/non_simple_folded_regress.dart.outline.expect
@@ -5,10 +5,30 @@
 class Hest<TypeX extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::Hest<self::Hest::TypeX*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Fisk<TypeY extends self::Hest<self::Hest<core::Object*>*>* = self::Hest<self::Hest<core::Object*>*>*> extends core::Object {
   synthetic constructor •() → self::Fisk<self::Fisk::TypeY*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/instantiate_to_bound/non_simple_folded_regress.dart.strong.expect b/pkg/front_end/testcases/instantiate_to_bound/non_simple_folded_regress.dart.strong.expect
index 3192260..873333b 100644
--- a/pkg/front_end/testcases/instantiate_to_bound/non_simple_folded_regress.dart.strong.expect
+++ b/pkg/front_end/testcases/instantiate_to_bound/non_simple_folded_regress.dart.strong.expect
@@ -6,10 +6,30 @@
   synthetic constructor •() → self::Hest<self::Hest::TypeX*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Fisk<TypeY extends self::Hest<self::Hest<core::Object*>*>* = self::Hest<self::Hest<core::Object*>*>*> extends core::Object {
   synthetic constructor •() → self::Fisk<self::Fisk::TypeY*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/instantiate_to_bound/non_simple_folded_regress.dart.strong.transformed.expect b/pkg/front_end/testcases/instantiate_to_bound/non_simple_folded_regress.dart.strong.transformed.expect
index 3192260..873333b 100644
--- a/pkg/front_end/testcases/instantiate_to_bound/non_simple_folded_regress.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/instantiate_to_bound/non_simple_folded_regress.dart.strong.transformed.expect
@@ -6,10 +6,30 @@
   synthetic constructor •() → self::Hest<self::Hest::TypeX*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Fisk<TypeY extends self::Hest<self::Hest<core::Object*>*>* = self::Hest<self::Hest<core::Object*>*>*> extends core::Object {
   synthetic constructor •() → self::Fisk<self::Fisk::TypeY*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/instantiate_to_bound/non_simple_for_each.dart.outline.expect b/pkg/front_end/testcases/instantiate_to_bound/non_simple_for_each.dart.outline.expect
index c3b608e..e238e8e 100644
--- a/pkg/front_end/testcases/instantiate_to_bound/non_simple_for_each.dart.outline.expect
+++ b/pkg/front_end/testcases/instantiate_to_bound/non_simple_for_each.dart.outline.expect
@@ -24,10 +24,30 @@
 class Hest<TypeX extends self::Hest<self::Hest::TypeX*>* = self::Hest<dynamic>*> extends core::Object {
   synthetic constructor •() → self::Hest<self::Hest::TypeX*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Fisk<TypeY extends self::Hest<self::Hest<dynamic>*>* = dynamic, TypeZ extends self::Hest<self::Hest<dynamic>*>* = dynamic> extends core::Object {
   synthetic constructor •() → self::Fisk<self::Fisk::TypeY*, self::Fisk::TypeZ*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/instantiate_to_bound/non_simple_for_each.dart.strong.expect b/pkg/front_end/testcases/instantiate_to_bound/non_simple_for_each.dart.strong.expect
index ab85dcf..051d9e9 100644
--- a/pkg/front_end/testcases/instantiate_to_bound/non_simple_for_each.dart.strong.expect
+++ b/pkg/front_end/testcases/instantiate_to_bound/non_simple_for_each.dart.strong.expect
@@ -25,10 +25,30 @@
   synthetic constructor •() → self::Hest<self::Hest::TypeX*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Fisk<TypeY extends self::Hest<self::Hest<dynamic>*>* = dynamic, TypeZ extends self::Hest<self::Hest<dynamic>*>* = dynamic> extends core::Object {
   synthetic constructor •() → self::Fisk<self::Fisk::TypeY*, self::Fisk::TypeZ*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/instantiate_to_bound/non_simple_for_each.dart.strong.transformed.expect b/pkg/front_end/testcases/instantiate_to_bound/non_simple_for_each.dart.strong.transformed.expect
index ab85dcf..051d9e9 100644
--- a/pkg/front_end/testcases/instantiate_to_bound/non_simple_for_each.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/instantiate_to_bound/non_simple_for_each.dart.strong.transformed.expect
@@ -25,10 +25,30 @@
   synthetic constructor •() → self::Hest<self::Hest::TypeX*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Fisk<TypeY extends self::Hest<self::Hest<dynamic>*>* = dynamic, TypeZ extends self::Hest<self::Hest<dynamic>*>* = dynamic> extends core::Object {
   synthetic constructor •() → self::Fisk<self::Fisk::TypeY*, self::Fisk::TypeZ*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/instantiate_to_bound/non_simple_from_compiled.dart.outline.expect b/pkg/front_end/testcases/instantiate_to_bound/non_simple_from_compiled.dart.outline.expect
index 261be38..09b04c9 100644
--- a/pkg/front_end/testcases/instantiate_to_bound/non_simple_from_compiled.dart.outline.expect
+++ b/pkg/front_end/testcases/instantiate_to_bound/non_simple_from_compiled.dart.outline.expect
@@ -13,9 +13,19 @@
 
 import "dart:collection";
 
-class Hest<X extends col::LinkedListEntry<col::LinkedListEntry<dynamic>*>* = dynamic> extends core::Object {
+class Hest<X extends col::LinkedListEntry<col::LinkedListEntry<dynamic>>* = dynamic> extends core::Object {
   synthetic constructor •() → self::Hest<self::Hest::X*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/instantiate_to_bound/non_simple_from_compiled.dart.strong.expect b/pkg/front_end/testcases/instantiate_to_bound/non_simple_from_compiled.dart.strong.expect
index 19e96f7..93bbc0b 100644
--- a/pkg/front_end/testcases/instantiate_to_bound/non_simple_from_compiled.dart.strong.expect
+++ b/pkg/front_end/testcases/instantiate_to_bound/non_simple_from_compiled.dart.strong.expect
@@ -13,9 +13,19 @@
 
 import "dart:collection";
 
-class Hest<X extends col::LinkedListEntry<col::LinkedListEntry<dynamic>*>* = dynamic> extends core::Object {
+class Hest<X extends col::LinkedListEntry<col::LinkedListEntry<dynamic>>* = dynamic> extends core::Object {
   synthetic constructor •() → self::Hest<self::Hest::X*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/instantiate_to_bound/non_simple_from_compiled.dart.strong.transformed.expect b/pkg/front_end/testcases/instantiate_to_bound/non_simple_from_compiled.dart.strong.transformed.expect
index 19e96f7..93bbc0b 100644
--- a/pkg/front_end/testcases/instantiate_to_bound/non_simple_from_compiled.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/instantiate_to_bound/non_simple_from_compiled.dart.strong.transformed.expect
@@ -13,9 +13,19 @@
 
 import "dart:collection";
 
-class Hest<X extends col::LinkedListEntry<col::LinkedListEntry<dynamic>*>* = dynamic> extends core::Object {
+class Hest<X extends col::LinkedListEntry<col::LinkedListEntry<dynamic>>* = dynamic> extends core::Object {
   synthetic constructor •() → self::Hest<self::Hest::X*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/instantiate_to_bound/non_simple_generic_function_in_bound_regress.dart.outline.expect b/pkg/front_end/testcases/instantiate_to_bound/non_simple_generic_function_in_bound_regress.dart.outline.expect
index 0d5534f..0e5496c 100644
--- a/pkg/front_end/testcases/instantiate_to_bound/non_simple_generic_function_in_bound_regress.dart.outline.expect
+++ b/pkg/front_end/testcases/instantiate_to_bound/non_simple_generic_function_in_bound_regress.dart.outline.expect
@@ -12,10 +12,30 @@
 class Hest<TypeX extends self::Hest<self::Hest::TypeX*>* = self::Hest<dynamic>*> extends core::Object {
   synthetic constructor •() → self::Hest<self::Hest::TypeX*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Fisk<TypeY extends <TypeZ extends self::Hest<core::Null?>* = dynamic>(TypeZ*) →* dynamic = dynamic> extends core::Object {
   synthetic constructor •() → self::Fisk<self::Fisk::TypeY*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/instantiate_to_bound/non_simple_generic_function_in_bound_regress.dart.strong.expect b/pkg/front_end/testcases/instantiate_to_bound/non_simple_generic_function_in_bound_regress.dart.strong.expect
index e37cda4..4a28ead9 100644
--- a/pkg/front_end/testcases/instantiate_to_bound/non_simple_generic_function_in_bound_regress.dart.strong.expect
+++ b/pkg/front_end/testcases/instantiate_to_bound/non_simple_generic_function_in_bound_regress.dart.strong.expect
@@ -13,10 +13,30 @@
   synthetic constructor •() → self::Hest<self::Hest::TypeX*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Fisk<TypeY extends <TypeZ extends self::Hest<core::Null?>* = dynamic>(TypeZ*) →* dynamic = dynamic> extends core::Object {
   synthetic constructor •() → self::Fisk<self::Fisk::TypeY*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/instantiate_to_bound/non_simple_generic_function_in_bound_regress.dart.strong.transformed.expect b/pkg/front_end/testcases/instantiate_to_bound/non_simple_generic_function_in_bound_regress.dart.strong.transformed.expect
index e37cda4..4a28ead9 100644
--- a/pkg/front_end/testcases/instantiate_to_bound/non_simple_generic_function_in_bound_regress.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/instantiate_to_bound/non_simple_generic_function_in_bound_regress.dart.strong.transformed.expect
@@ -13,10 +13,30 @@
   synthetic constructor •() → self::Hest<self::Hest::TypeX*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Fisk<TypeY extends <TypeZ extends self::Hest<core::Null?>* = dynamic>(TypeZ*) →* dynamic = dynamic> extends core::Object {
   synthetic constructor •() → self::Fisk<self::Fisk::TypeY*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/instantiate_to_bound/non_simple_many.dart.outline.expect b/pkg/front_end/testcases/instantiate_to_bound/non_simple_many.dart.outline.expect
index b131c3a..8d6edae 100644
--- a/pkg/front_end/testcases/instantiate_to_bound/non_simple_many.dart.outline.expect
+++ b/pkg/front_end/testcases/instantiate_to_bound/non_simple_many.dart.outline.expect
@@ -24,14 +24,44 @@
 class Hest<TypeX extends self::Hest<self::Hest::TypeX*>* = self::Hest<dynamic>*> extends core::Object {
   synthetic constructor •() → self::Hest<self::Hest::TypeX*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Fisk<TypeY extends self::Fisk<self::Fisk::TypeY*>* = self::Fisk<dynamic>*> extends core::Object {
   synthetic constructor •() → self::Fisk<self::Fisk::TypeY*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Naebdyr<TypeZ extends core::Map<self::Hest<self::Hest<dynamic>*>*, self::Fisk<self::Fisk<dynamic>*>*>* = dynamic> extends core::Object {
   synthetic constructor •() → self::Naebdyr<self::Naebdyr::TypeZ*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/instantiate_to_bound/non_simple_many.dart.strong.expect b/pkg/front_end/testcases/instantiate_to_bound/non_simple_many.dart.strong.expect
index ec10848..1c807c2 100644
--- a/pkg/front_end/testcases/instantiate_to_bound/non_simple_many.dart.strong.expect
+++ b/pkg/front_end/testcases/instantiate_to_bound/non_simple_many.dart.strong.expect
@@ -25,15 +25,45 @@
   synthetic constructor •() → self::Hest<self::Hest::TypeX*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Fisk<TypeY extends self::Fisk<self::Fisk::TypeY*>* = self::Fisk<dynamic>*> extends core::Object {
   synthetic constructor •() → self::Fisk<self::Fisk::TypeY*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Naebdyr<TypeZ extends core::Map<self::Hest<self::Hest<dynamic>*>*, self::Fisk<self::Fisk<dynamic>*>*>* = dynamic> extends core::Object {
   synthetic constructor •() → self::Naebdyr<self::Naebdyr::TypeZ*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/instantiate_to_bound/non_simple_many.dart.strong.transformed.expect b/pkg/front_end/testcases/instantiate_to_bound/non_simple_many.dart.strong.transformed.expect
index ec10848..1c807c2 100644
--- a/pkg/front_end/testcases/instantiate_to_bound/non_simple_many.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/instantiate_to_bound/non_simple_many.dart.strong.transformed.expect
@@ -25,15 +25,45 @@
   synthetic constructor •() → self::Hest<self::Hest::TypeX*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Fisk<TypeY extends self::Fisk<self::Fisk::TypeY*>* = self::Fisk<dynamic>*> extends core::Object {
   synthetic constructor •() → self::Fisk<self::Fisk::TypeY*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Naebdyr<TypeZ extends core::Map<self::Hest<self::Hest<dynamic>*>*, self::Fisk<self::Fisk<dynamic>*>*>* = dynamic> extends core::Object {
   synthetic constructor •() → self::Naebdyr<self::Naebdyr::TypeZ*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/instantiate_to_bound/non_simple_many_libs_same_name_cycle.dart.outline.expect b/pkg/front_end/testcases/instantiate_to_bound/non_simple_many_libs_same_name_cycle.dart.outline.expect
index fb1db93..215aa9c 100644
--- a/pkg/front_end/testcases/instantiate_to_bound/non_simple_many_libs_same_name_cycle.dart.outline.expect
+++ b/pkg/front_end/testcases/instantiate_to_bound/non_simple_many_libs_same_name_cycle.dart.outline.expect
@@ -21,6 +21,16 @@
 class Hest<TypeX extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::Hest<self::Hest::TypeX*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
@@ -35,4 +45,14 @@
 class Hest<TypeY extends self::Hest<dynamic>* = self::Hest<dynamic>*> extends core::Object {
   synthetic constructor •() → self2::Hest<self2::Hest::TypeY*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
diff --git a/pkg/front_end/testcases/instantiate_to_bound/non_simple_many_libs_same_name_cycle.dart.strong.expect b/pkg/front_end/testcases/instantiate_to_bound/non_simple_many_libs_same_name_cycle.dart.strong.expect
index 84e578d..a7dd42e 100644
--- a/pkg/front_end/testcases/instantiate_to_bound/non_simple_many_libs_same_name_cycle.dart.strong.expect
+++ b/pkg/front_end/testcases/instantiate_to_bound/non_simple_many_libs_same_name_cycle.dart.strong.expect
@@ -22,6 +22,16 @@
   synthetic constructor •() → self::Hest<self::Hest::TypeX*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
 
@@ -36,4 +46,14 @@
   synthetic constructor •() → self2::Hest<self2::Hest::TypeY*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
diff --git a/pkg/front_end/testcases/instantiate_to_bound/non_simple_many_libs_same_name_cycle.dart.strong.transformed.expect b/pkg/front_end/testcases/instantiate_to_bound/non_simple_many_libs_same_name_cycle.dart.strong.transformed.expect
index 84e578d..a7dd42e 100644
--- a/pkg/front_end/testcases/instantiate_to_bound/non_simple_many_libs_same_name_cycle.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/instantiate_to_bound/non_simple_many_libs_same_name_cycle.dart.strong.transformed.expect
@@ -22,6 +22,16 @@
   synthetic constructor •() → self::Hest<self::Hest::TypeX*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
 
@@ -36,4 +46,14 @@
   synthetic constructor •() → self2::Hest<self2::Hest::TypeY*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
diff --git a/pkg/front_end/testcases/instantiate_to_bound/non_simple_no_dup.dart.outline.expect b/pkg/front_end/testcases/instantiate_to_bound/non_simple_no_dup.dart.outline.expect
index 7b8d8f1..5db9de3 100644
--- a/pkg/front_end/testcases/instantiate_to_bound/non_simple_no_dup.dart.outline.expect
+++ b/pkg/front_end/testcases/instantiate_to_bound/non_simple_no_dup.dart.outline.expect
@@ -16,10 +16,30 @@
 class Hest<TypeX extends self::Hest<self::Hest::TypeX*>* = self::Hest<dynamic>*> extends core::Object {
   synthetic constructor •() → self::Hest<self::Hest::TypeX*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Fisk<TypeY extends core::Map<self::Hest<self::Hest<dynamic>*>*, self::Hest<self::Hest<dynamic>*>*>* = dynamic> extends core::Object {
   synthetic constructor •() → self::Fisk<self::Fisk::TypeY*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/instantiate_to_bound/non_simple_no_dup.dart.strong.expect b/pkg/front_end/testcases/instantiate_to_bound/non_simple_no_dup.dart.strong.expect
index 87f748c..2782364 100644
--- a/pkg/front_end/testcases/instantiate_to_bound/non_simple_no_dup.dart.strong.expect
+++ b/pkg/front_end/testcases/instantiate_to_bound/non_simple_no_dup.dart.strong.expect
@@ -17,10 +17,30 @@
   synthetic constructor •() → self::Hest<self::Hest::TypeX*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Fisk<TypeY extends core::Map<self::Hest<self::Hest<dynamic>*>*, self::Hest<self::Hest<dynamic>*>*>* = dynamic> extends core::Object {
   synthetic constructor •() → self::Fisk<self::Fisk::TypeY*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/instantiate_to_bound/non_simple_no_dup.dart.strong.transformed.expect b/pkg/front_end/testcases/instantiate_to_bound/non_simple_no_dup.dart.strong.transformed.expect
index 87f748c..2782364 100644
--- a/pkg/front_end/testcases/instantiate_to_bound/non_simple_no_dup.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/instantiate_to_bound/non_simple_no_dup.dart.strong.transformed.expect
@@ -17,10 +17,30 @@
   synthetic constructor •() → self::Hest<self::Hest::TypeX*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Fisk<TypeY extends core::Map<self::Hest<self::Hest<dynamic>*>*, self::Hest<self::Hest<dynamic>*>*>* = dynamic> extends core::Object {
   synthetic constructor •() → self::Fisk<self::Fisk::TypeY*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/instantiate_to_bound/non_simple_suppress_consequence.dart.outline.expect b/pkg/front_end/testcases/instantiate_to_bound/non_simple_suppress_consequence.dart.outline.expect
index 1dfb185..15c8a3d 100644
--- a/pkg/front_end/testcases/instantiate_to_bound/non_simple_suppress_consequence.dart.outline.expect
+++ b/pkg/front_end/testcases/instantiate_to_bound/non_simple_suppress_consequence.dart.outline.expect
@@ -16,14 +16,44 @@
 class Hest<TypeX extends self::Hest<self::Hest::TypeX*>* = self::Hest<dynamic>*> extends core::Object {
   synthetic constructor •() → self::Hest<self::Hest::TypeX*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Fisk<TypeY extends self::Hest<self::Hest<dynamic>*>* = dynamic> extends core::Object {
   synthetic constructor •() → self::Fisk<self::Fisk::TypeY*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Naebdyr<TypeZ extends self::Fisk<dynamic>* = self::Fisk<dynamic>*> extends core::Object {
   synthetic constructor •() → self::Naebdyr<self::Naebdyr::TypeZ*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/instantiate_to_bound/non_simple_suppress_consequence.dart.strong.expect b/pkg/front_end/testcases/instantiate_to_bound/non_simple_suppress_consequence.dart.strong.expect
index 37c1f7b..e0458b8 100644
--- a/pkg/front_end/testcases/instantiate_to_bound/non_simple_suppress_consequence.dart.strong.expect
+++ b/pkg/front_end/testcases/instantiate_to_bound/non_simple_suppress_consequence.dart.strong.expect
@@ -17,15 +17,45 @@
   synthetic constructor •() → self::Hest<self::Hest::TypeX*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Fisk<TypeY extends self::Hest<self::Hest<dynamic>*>* = dynamic> extends core::Object {
   synthetic constructor •() → self::Fisk<self::Fisk::TypeY*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Naebdyr<TypeZ extends self::Fisk<dynamic>* = self::Fisk<dynamic>*> extends core::Object {
   synthetic constructor •() → self::Naebdyr<self::Naebdyr::TypeZ*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/instantiate_to_bound/non_simple_suppress_consequence.dart.strong.transformed.expect b/pkg/front_end/testcases/instantiate_to_bound/non_simple_suppress_consequence.dart.strong.transformed.expect
index 37c1f7b..e0458b8 100644
--- a/pkg/front_end/testcases/instantiate_to_bound/non_simple_suppress_consequence.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/instantiate_to_bound/non_simple_suppress_consequence.dart.strong.transformed.expect
@@ -17,15 +17,45 @@
   synthetic constructor •() → self::Hest<self::Hest::TypeX*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Fisk<TypeY extends self::Hest<self::Hest<dynamic>*>* = dynamic> extends core::Object {
   synthetic constructor •() → self::Fisk<self::Fisk::TypeY*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Naebdyr<TypeZ extends self::Fisk<dynamic>* = self::Fisk<dynamic>*> extends core::Object {
   synthetic constructor •() → self::Naebdyr<self::Naebdyr::TypeZ*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/instantiate_to_bound/non_simple_variables_from_same.dart.outline.expect b/pkg/front_end/testcases/instantiate_to_bound/non_simple_variables_from_same.dart.outline.expect
index 4c04e3b..ecb92d4 100644
--- a/pkg/front_end/testcases/instantiate_to_bound/non_simple_variables_from_same.dart.outline.expect
+++ b/pkg/front_end/testcases/instantiate_to_bound/non_simple_variables_from_same.dart.outline.expect
@@ -16,10 +16,30 @@
 class Hest<TypeX extends self::Hest<self::Hest::TypeX*>* = self::Hest<dynamic>*> extends core::Object {
   synthetic constructor •() → self::Hest<self::Hest::TypeX*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Fisk<TypeY extends self::Hest<self::Hest<dynamic>*>* = dynamic> extends core::Object {
   synthetic constructor •() → self::Fisk<self::Fisk::TypeY*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/instantiate_to_bound/non_simple_variables_from_same.dart.strong.expect b/pkg/front_end/testcases/instantiate_to_bound/non_simple_variables_from_same.dart.strong.expect
index 3bf035e..07e3b88 100644
--- a/pkg/front_end/testcases/instantiate_to_bound/non_simple_variables_from_same.dart.strong.expect
+++ b/pkg/front_end/testcases/instantiate_to_bound/non_simple_variables_from_same.dart.strong.expect
@@ -17,10 +17,30 @@
   synthetic constructor •() → self::Hest<self::Hest::TypeX*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Fisk<TypeY extends self::Hest<self::Hest<dynamic>*>* = dynamic> extends core::Object {
   synthetic constructor •() → self::Fisk<self::Fisk::TypeY*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/instantiate_to_bound/non_simple_variables_from_same.dart.strong.transformed.expect b/pkg/front_end/testcases/instantiate_to_bound/non_simple_variables_from_same.dart.strong.transformed.expect
index 3bf035e..07e3b88 100644
--- a/pkg/front_end/testcases/instantiate_to_bound/non_simple_variables_from_same.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/instantiate_to_bound/non_simple_variables_from_same.dart.strong.transformed.expect
@@ -17,10 +17,30 @@
   synthetic constructor •() → self::Hest<self::Hest::TypeX*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Fisk<TypeY extends self::Hest<self::Hest<dynamic>*>* = dynamic> extends core::Object {
   synthetic constructor •() → self::Fisk<self::Fisk::TypeY*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/instantiate_to_bound/omitted_bound.dart.outline.expect b/pkg/front_end/testcases/instantiate_to_bound/omitted_bound.dart.outline.expect
index 04f9ca4..219972c 100644
--- a/pkg/front_end/testcases/instantiate_to_bound/omitted_bound.dart.outline.expect
+++ b/pkg/front_end/testcases/instantiate_to_bound/omitted_bound.dart.outline.expect
@@ -8,6 +8,16 @@
 class A<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::A<self::A::T*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C extends core::Object {
   synthetic constructor •() → self::C*
@@ -16,6 +26,16 @@
     ;
   method baz() → col::DoubleLinkedQueue<dynamic>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field self::A<dynamic>* a;
 static field col::DoubleLinkedQueue<dynamic>* c;
diff --git a/pkg/front_end/testcases/instantiate_to_bound/omitted_bound.dart.strong.expect b/pkg/front_end/testcases/instantiate_to_bound/omitted_bound.dart.strong.expect
index 0a60b50..802286d 100644
--- a/pkg/front_end/testcases/instantiate_to_bound/omitted_bound.dart.strong.expect
+++ b/pkg/front_end/testcases/instantiate_to_bound/omitted_bound.dart.strong.expect
@@ -9,6 +9,16 @@
   synthetic constructor •() → self::A<self::A::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C extends core::Object {
   synthetic constructor •() → self::C*
@@ -18,6 +28,16 @@
     return null;
   method baz() → col::DoubleLinkedQueue<dynamic>*
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field self::A<dynamic>* a;
 static field col::DoubleLinkedQueue<dynamic>* c;
diff --git a/pkg/front_end/testcases/instantiate_to_bound/omitted_bound.dart.strong.transformed.expect b/pkg/front_end/testcases/instantiate_to_bound/omitted_bound.dart.strong.transformed.expect
index 0a60b50..802286d 100644
--- a/pkg/front_end/testcases/instantiate_to_bound/omitted_bound.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/instantiate_to_bound/omitted_bound.dart.strong.transformed.expect
@@ -9,6 +9,16 @@
   synthetic constructor •() → self::A<self::A::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C extends core::Object {
   synthetic constructor •() → self::C*
@@ -18,6 +28,16 @@
     return null;
   method baz() → col::DoubleLinkedQueue<dynamic>*
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field self::A<dynamic>* a;
 static field col::DoubleLinkedQueue<dynamic>* c;
diff --git a/pkg/front_end/testcases/instantiate_to_bound/raw_in_bound.dart.outline.expect b/pkg/front_end/testcases/instantiate_to_bound/raw_in_bound.dart.outline.expect
index ff215ac..89fdf77 100644
--- a/pkg/front_end/testcases/instantiate_to_bound/raw_in_bound.dart.outline.expect
+++ b/pkg/front_end/testcases/instantiate_to_bound/raw_in_bound.dart.outline.expect
@@ -5,10 +5,30 @@
 class A<T extends core::num* = core::num*> extends core::Object {
   synthetic constructor •() → self::A<self::A::T*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B<T extends self::A<core::num*>* = self::A<core::num*>*> extends core::Object {
   synthetic constructor •() → self::B<self::B::T*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/instantiate_to_bound/raw_in_bound.dart.strong.expect b/pkg/front_end/testcases/instantiate_to_bound/raw_in_bound.dart.strong.expect
index 9382301..52d1602 100644
--- a/pkg/front_end/testcases/instantiate_to_bound/raw_in_bound.dart.strong.expect
+++ b/pkg/front_end/testcases/instantiate_to_bound/raw_in_bound.dart.strong.expect
@@ -6,10 +6,30 @@
   synthetic constructor •() → self::A<self::A::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B<T extends self::A<core::num*>* = self::A<core::num*>*> extends core::Object {
   synthetic constructor •() → self::B<self::B::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/instantiate_to_bound/raw_in_bound.dart.strong.transformed.expect b/pkg/front_end/testcases/instantiate_to_bound/raw_in_bound.dart.strong.transformed.expect
index 9382301..52d1602 100644
--- a/pkg/front_end/testcases/instantiate_to_bound/raw_in_bound.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/instantiate_to_bound/raw_in_bound.dart.strong.transformed.expect
@@ -6,10 +6,30 @@
   synthetic constructor •() → self::A<self::A::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B<T extends self::A<core::num*>* = self::A<core::num*>*> extends core::Object {
   synthetic constructor •() → self::B<self::B::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/instantiate_to_bound/super_bounded_in_bound.dart.outline.expect b/pkg/front_end/testcases/instantiate_to_bound/super_bounded_in_bound.dart.outline.expect
index 4b818fd..3be2828 100644
--- a/pkg/front_end/testcases/instantiate_to_bound/super_bounded_in_bound.dart.outline.expect
+++ b/pkg/front_end/testcases/instantiate_to_bound/super_bounded_in_bound.dart.outline.expect
@@ -5,10 +5,30 @@
 class A<X extends core::Comparable<self::A::X*>* = core::Comparable<dynamic>*> extends core::Object {
   synthetic constructor •() → self::A<self::A::X*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B<Y extends self::A<dynamic>* = self::A<dynamic>*> extends core::Object {
   synthetic constructor •() → self::B<self::B::Y*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/instantiate_to_bound/super_bounded_in_bound.dart.strong.expect b/pkg/front_end/testcases/instantiate_to_bound/super_bounded_in_bound.dart.strong.expect
index bccb0a0..20937b9 100644
--- a/pkg/front_end/testcases/instantiate_to_bound/super_bounded_in_bound.dart.strong.expect
+++ b/pkg/front_end/testcases/instantiate_to_bound/super_bounded_in_bound.dart.strong.expect
@@ -6,10 +6,30 @@
   synthetic constructor •() → self::A<self::A::X*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B<Y extends self::A<dynamic>* = self::A<dynamic>*> extends core::Object {
   synthetic constructor •() → self::B<self::B::Y*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/instantiate_to_bound/super_bounded_in_bound.dart.strong.transformed.expect b/pkg/front_end/testcases/instantiate_to_bound/super_bounded_in_bound.dart.strong.transformed.expect
index bccb0a0..20937b9 100644
--- a/pkg/front_end/testcases/instantiate_to_bound/super_bounded_in_bound.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/instantiate_to_bound/super_bounded_in_bound.dart.strong.transformed.expect
@@ -6,10 +6,30 @@
   synthetic constructor •() → self::A<self::A::X*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B<Y extends self::A<dynamic>* = self::A<dynamic>*> extends core::Object {
   synthetic constructor •() → self::B<self::B::Y*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/instantiate_to_bound/super_bounded_type.dart.outline.expect b/pkg/front_end/testcases/instantiate_to_bound/super_bounded_type.dart.outline.expect
index 6a8424b..4a22a19 100644
--- a/pkg/front_end/testcases/instantiate_to_bound/super_bounded_type.dart.outline.expect
+++ b/pkg/front_end/testcases/instantiate_to_bound/super_bounded_type.dart.outline.expect
@@ -5,6 +5,16 @@
 class A<T extends self::A<self::A::T*>* = self::A<dynamic>*> extends core::Object {
   synthetic constructor •() → self::A<self::A::T*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field self::A<self::A<dynamic>*>* a;
 static method main() → dynamic
diff --git a/pkg/front_end/testcases/instantiate_to_bound/super_bounded_type.dart.strong.expect b/pkg/front_end/testcases/instantiate_to_bound/super_bounded_type.dart.strong.expect
index e533635..d25a618 100644
--- a/pkg/front_end/testcases/instantiate_to_bound/super_bounded_type.dart.strong.expect
+++ b/pkg/front_end/testcases/instantiate_to_bound/super_bounded_type.dart.strong.expect
@@ -6,6 +6,16 @@
   synthetic constructor •() → self::A<self::A::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field self::A<self::A<dynamic>*>* a;
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/instantiate_to_bound/super_bounded_type.dart.strong.transformed.expect b/pkg/front_end/testcases/instantiate_to_bound/super_bounded_type.dart.strong.transformed.expect
index e533635..d25a618 100644
--- a/pkg/front_end/testcases/instantiate_to_bound/super_bounded_type.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/instantiate_to_bound/super_bounded_type.dart.strong.transformed.expect
@@ -6,6 +6,16 @@
   synthetic constructor •() → self::A<self::A::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field self::A<self::A<dynamic>*>* a;
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/instantiate_to_bound/supertypes.dart.outline.expect b/pkg/front_end/testcases/instantiate_to_bound/supertypes.dart.outline.expect
index 63d1e70..b8c613f 100644
--- a/pkg/front_end/testcases/instantiate_to_bound/supertypes.dart.outline.expect
+++ b/pkg/front_end/testcases/instantiate_to_bound/supertypes.dart.outline.expect
@@ -7,10 +7,30 @@
 class B extends core::Object {
   synthetic constructor •() → self::B*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class X<T extends self::B* = self::B*> extends core::Object {
   synthetic constructor •() → self::X<self::X::T*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Y extends self::X<self::B*> {
   synthetic constructor •() → self::Y*
diff --git a/pkg/front_end/testcases/instantiate_to_bound/supertypes.dart.strong.expect b/pkg/front_end/testcases/instantiate_to_bound/supertypes.dart.strong.expect
index afffa4d..f800c4a3 100644
--- a/pkg/front_end/testcases/instantiate_to_bound/supertypes.dart.strong.expect
+++ b/pkg/front_end/testcases/instantiate_to_bound/supertypes.dart.strong.expect
@@ -9,11 +9,31 @@
   synthetic constructor •() → self::B*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class X<T extends self::B* = self::B*> extends core::Object {
   synthetic constructor •() → self::X<self::X::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Y extends self::X<self::B*> {
   synthetic constructor •() → self::Y*
diff --git a/pkg/front_end/testcases/instantiate_to_bound/supertypes.dart.strong.transformed.expect b/pkg/front_end/testcases/instantiate_to_bound/supertypes.dart.strong.transformed.expect
index afffa4d..f800c4a3 100644
--- a/pkg/front_end/testcases/instantiate_to_bound/supertypes.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/instantiate_to_bound/supertypes.dart.strong.transformed.expect
@@ -9,11 +9,31 @@
   synthetic constructor •() → self::B*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class X<T extends self::B* = self::B*> extends core::Object {
   synthetic constructor •() → self::X<self::X::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Y extends self::X<self::B*> {
   synthetic constructor •() → self::Y*
diff --git a/pkg/front_end/testcases/instantiate_to_bound/typedef_instantiated_in_outline.dart.outline.expect b/pkg/front_end/testcases/instantiate_to_bound/typedef_instantiated_in_outline.dart.outline.expect
index 734815e..2f2a477 100644
--- a/pkg/front_end/testcases/instantiate_to_bound/typedef_instantiated_in_outline.dart.outline.expect
+++ b/pkg/front_end/testcases/instantiate_to_bound/typedef_instantiated_in_outline.dart.outline.expect
@@ -10,6 +10,16 @@
     ;
   method bar() → (core::num*) →* dynamic
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/instantiate_to_bound/typedef_instantiated_in_outline.dart.strong.expect b/pkg/front_end/testcases/instantiate_to_bound/typedef_instantiated_in_outline.dart.strong.expect
index e626b04..3c38493 100644
--- a/pkg/front_end/testcases/instantiate_to_bound/typedef_instantiated_in_outline.dart.strong.expect
+++ b/pkg/front_end/testcases/instantiate_to_bound/typedef_instantiated_in_outline.dart.strong.expect
@@ -11,5 +11,15 @@
     return null;
   method bar() → (core::num*) →* dynamic
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/instantiate_to_bound/typedef_instantiated_in_outline.dart.strong.transformed.expect b/pkg/front_end/testcases/instantiate_to_bound/typedef_instantiated_in_outline.dart.strong.transformed.expect
index e626b04..3c38493 100644
--- a/pkg/front_end/testcases/instantiate_to_bound/typedef_instantiated_in_outline.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/instantiate_to_bound/typedef_instantiated_in_outline.dart.strong.transformed.expect
@@ -11,5 +11,15 @@
     return null;
   method bar() → (core::num*) →* dynamic
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/instantiate_to_bound/typedef_literal_list_with_generic_argument.dart.outline.expect b/pkg/front_end/testcases/instantiate_to_bound/typedef_literal_list_with_generic_argument.dart.outline.expect
index 3a72d6c..885d6c4 100644
--- a/pkg/front_end/testcases/instantiate_to_bound/typedef_literal_list_with_generic_argument.dart.outline.expect
+++ b/pkg/front_end/testcases/instantiate_to_bound/typedef_literal_list_with_generic_argument.dart.outline.expect
@@ -8,6 +8,16 @@
   final field core::List<(core::num*) →* dynamic>* bar;
   synthetic constructor •() → self::B<self::B::S*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/instantiate_to_bound/typedef_literal_list_with_generic_argument.dart.strong.expect b/pkg/front_end/testcases/instantiate_to_bound/typedef_literal_list_with_generic_argument.dart.strong.expect
index 95a1206..ed20566 100644
--- a/pkg/front_end/testcases/instantiate_to_bound/typedef_literal_list_with_generic_argument.dart.strong.expect
+++ b/pkg/front_end/testcases/instantiate_to_bound/typedef_literal_list_with_generic_argument.dart.strong.expect
@@ -9,5 +9,15 @@
   synthetic constructor •() → self::B<self::B::S*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/instantiate_to_bound/typedef_literal_list_with_generic_argument.dart.strong.transformed.expect b/pkg/front_end/testcases/instantiate_to_bound/typedef_literal_list_with_generic_argument.dart.strong.transformed.expect
index 95a1206..ed20566 100644
--- a/pkg/front_end/testcases/instantiate_to_bound/typedef_literal_list_with_generic_argument.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/instantiate_to_bound/typedef_literal_list_with_generic_argument.dart.strong.transformed.expect
@@ -9,5 +9,15 @@
   synthetic constructor •() → self::B<self::B::S*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/instantiate_to_bound/typedef_omitted_bound.dart.outline.expect b/pkg/front_end/testcases/instantiate_to_bound/typedef_omitted_bound.dart.outline.expect
index 63af415..6c8ce3a 100644
--- a/pkg/front_end/testcases/instantiate_to_bound/typedef_omitted_bound.dart.outline.expect
+++ b/pkg/front_end/testcases/instantiate_to_bound/typedef_omitted_bound.dart.outline.expect
@@ -8,6 +8,16 @@
     ;
   method foo() → (dynamic) →* dynamic
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field (dynamic) →* dynamic a;
 static method main() → dynamic
diff --git a/pkg/front_end/testcases/instantiate_to_bound/typedef_omitted_bound.dart.strong.expect b/pkg/front_end/testcases/instantiate_to_bound/typedef_omitted_bound.dart.strong.expect
index 4164860..6c84851 100644
--- a/pkg/front_end/testcases/instantiate_to_bound/typedef_omitted_bound.dart.strong.expect
+++ b/pkg/front_end/testcases/instantiate_to_bound/typedef_omitted_bound.dart.strong.expect
@@ -9,6 +9,16 @@
     ;
   method foo() → (dynamic) →* dynamic
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field (dynamic) →* dynamic a;
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/instantiate_to_bound/typedef_omitted_bound.dart.strong.transformed.expect b/pkg/front_end/testcases/instantiate_to_bound/typedef_omitted_bound.dart.strong.transformed.expect
index 4164860..6c84851 100644
--- a/pkg/front_end/testcases/instantiate_to_bound/typedef_omitted_bound.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/instantiate_to_bound/typedef_omitted_bound.dart.strong.transformed.expect
@@ -9,6 +9,16 @@
     ;
   method foo() → (dynamic) →* dynamic
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field (dynamic) →* dynamic a;
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/instantiate_to_bound/typedef_raw_in_bound.dart.outline.expect b/pkg/front_end/testcases/instantiate_to_bound/typedef_raw_in_bound.dart.outline.expect
index 86efbd9..56be69f 100644
--- a/pkg/front_end/testcases/instantiate_to_bound/typedef_raw_in_bound.dart.outline.expect
+++ b/pkg/front_end/testcases/instantiate_to_bound/typedef_raw_in_bound.dart.outline.expect
@@ -6,6 +6,16 @@
 class B<T extends (core::num*) →* dynamic = (core::num*) →* dynamic> extends core::Object {
   synthetic constructor •() → self::B<self::B::T*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/instantiate_to_bound/typedef_raw_in_bound.dart.strong.expect b/pkg/front_end/testcases/instantiate_to_bound/typedef_raw_in_bound.dart.strong.expect
index d46f295..4cee6a4 100644
--- a/pkg/front_end/testcases/instantiate_to_bound/typedef_raw_in_bound.dart.strong.expect
+++ b/pkg/front_end/testcases/instantiate_to_bound/typedef_raw_in_bound.dart.strong.expect
@@ -7,5 +7,15 @@
   synthetic constructor •() → self::B<self::B::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/instantiate_to_bound/typedef_raw_in_bound.dart.strong.transformed.expect b/pkg/front_end/testcases/instantiate_to_bound/typedef_raw_in_bound.dart.strong.transformed.expect
index d46f295..4cee6a4 100644
--- a/pkg/front_end/testcases/instantiate_to_bound/typedef_raw_in_bound.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/instantiate_to_bound/typedef_raw_in_bound.dart.strong.transformed.expect
@@ -7,5 +7,15 @@
   synthetic constructor •() → self::B<self::B::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/late_lowering/initializer_rewrite.dart.strong.expect b/pkg/front_end/testcases/late_lowering/initializer_rewrite.dart.strong.expect
index 38ca669..d8e7cc1 100644
--- a/pkg/front_end/testcases/late_lowering/initializer_rewrite.dart.strong.expect
+++ b/pkg/front_end/testcases/late_lowering/initializer_rewrite.dart.strong.expect
@@ -21,7 +21,7 @@
     return let final core::int? #t1 = self::Class::_#nonNullableStaticField in #t1.==(null) ?{core::int} let final core::int #t2 = (let final core::int #t3 = self::Class::nonNullableStaticFieldReads in let final core::int #t4 = self::Class::nonNullableStaticFieldReads = #t3.{core::num::+}(1) in #t3).{core::num::==}(0) ?{core::int} self::Class::nonNullableStaticField.{core::num::+}(1) : 0 in self::Class::_#nonNullableStaticField.==(null) ?{core::int} self::Class::_#nonNullableStaticField = #t2 : throw new _in::LateInitializationErrorImpl::•("Field 'nonNullableStaticField' has been assigned during initialization.") : #t1{core::int};
   static get nullableStaticField() → core::int? {
     if(!self::Class::_#nullableStaticField#isSet) {
-      final core::int? #t5 = (let final core::int #t6 = self::Class::nullableStaticFieldReads in let final core::int #t7 = self::Class::nullableStaticFieldReads = #t6.{core::num::+}(1) in #t6).{core::num::==}(0) ?{core::int*} self::Class::nullableStaticField.{core::Object::hashCode} : 0;
+      final core::int? #t5 = (let final core::int #t6 = self::Class::nullableStaticFieldReads in let final core::int #t7 = self::Class::nullableStaticFieldReads = #t6.{core::num::+}(1) in #t6).{core::num::==}(0) ?{core::int} self::Class::nullableStaticField.{core::Object::hashCode} : 0;
       if(self::Class::_#nullableStaticField#isSet)
         throw new _in::LateInitializationErrorImpl::•("Field 'nullableStaticField' has been assigned during initialization.");
       self::Class::_#nullableStaticField#isSet = true;
@@ -33,7 +33,7 @@
     return let final core::int? #t8 = this.{self::Class::_#Class#nonNullableInstanceField} in #t8.==(null) ?{core::int} let final core::int #t9 = (let final core::int #t10 = this.{self::Class::nonNullableInstanceFieldReads} in let final core::int #t11 = this.{self::Class::nonNullableInstanceFieldReads} = #t10.{core::num::+}(1) in #t10).{core::num::==}(0) ?{core::int} this.{self::Class::nonNullableInstanceField}.{core::num::+}(1) : 0 in this.{self::Class::_#Class#nonNullableInstanceField}.==(null) ?{core::int} this.{self::Class::_#Class#nonNullableInstanceField} = #t9 : throw new _in::LateInitializationErrorImpl::•("Field 'nonNullableInstanceField' has been assigned during initialization.") : #t8{core::int};
   get nullableInstanceField() → core::int? {
     if(!this.{self::Class::_#Class#nullableInstanceField#isSet}) {
-      final core::int? #t12 = (let final core::int #t13 = this.{self::Class::nullableInstanceFieldReads} in let final core::int #t14 = this.{self::Class::nullableInstanceFieldReads} = #t13.{core::num::+}(1) in #t13).{core::num::==}(0) ?{core::int*} this.{self::Class::nullableInstanceField}.{core::Object::hashCode} : 0;
+      final core::int? #t12 = (let final core::int #t13 = this.{self::Class::nullableInstanceFieldReads} in let final core::int #t14 = this.{self::Class::nullableInstanceFieldReads} = #t13.{core::num::+}(1) in #t13).{core::num::==}(0) ?{core::int} this.{self::Class::nullableInstanceField}.{core::Object::hashCode} : 0;
       if(this.{self::Class::_#Class#nullableInstanceField#isSet})
         throw new _in::LateInitializationErrorImpl::•("Field 'nullableInstanceField' has been assigned during initialization.");
       this.{self::Class::_#Class#nullableInstanceField#isSet} = true;
@@ -51,7 +51,7 @@
   return let final core::int? #t15 = self::_#nonNullableTopLevelField in #t15.==(null) ?{core::int} let final core::int #t16 = (let final core::int #t17 = self::nonNullableTopLevelFieldReads in let final core::int #t18 = self::nonNullableTopLevelFieldReads = #t17.{core::num::+}(1) in #t17).{core::num::==}(0) ?{core::int} self::nonNullableTopLevelField.{core::num::+}(1) : 0 in self::_#nonNullableTopLevelField.==(null) ?{core::int} self::_#nonNullableTopLevelField = #t16 : throw new _in::LateInitializationErrorImpl::•("Field 'nonNullableTopLevelField' has been assigned during initialization.") : #t15{core::int};
 static get nullableTopLevelField() → core::int? {
   if(!self::_#nullableTopLevelField#isSet) {
-    final core::int? #t19 = (let final core::int #t20 = self::nullableTopLevelFieldReads in let final core::int #t21 = self::nullableTopLevelFieldReads = #t20.{core::num::+}(1) in #t20).{core::num::==}(0) ?{core::int*} self::nullableTopLevelField.{core::Object::hashCode} : 0;
+    final core::int? #t19 = (let final core::int #t20 = self::nullableTopLevelFieldReads in let final core::int #t21 = self::nullableTopLevelFieldReads = #t20.{core::num::+}(1) in #t20).{core::num::==}(0) ?{core::int} self::nullableTopLevelField.{core::Object::hashCode} : 0;
     if(self::_#nullableTopLevelField#isSet)
       throw new _in::LateInitializationErrorImpl::•("Field 'nullableTopLevelField' has been assigned during initialization.");
     self::_#nullableTopLevelField#isSet = true;
diff --git a/pkg/front_end/testcases/late_lowering/initializer_rewrite.dart.strong.transformed.expect b/pkg/front_end/testcases/late_lowering/initializer_rewrite.dart.strong.transformed.expect
index 38ca669..d8e7cc1 100644
--- a/pkg/front_end/testcases/late_lowering/initializer_rewrite.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/late_lowering/initializer_rewrite.dart.strong.transformed.expect
@@ -21,7 +21,7 @@
     return let final core::int? #t1 = self::Class::_#nonNullableStaticField in #t1.==(null) ?{core::int} let final core::int #t2 = (let final core::int #t3 = self::Class::nonNullableStaticFieldReads in let final core::int #t4 = self::Class::nonNullableStaticFieldReads = #t3.{core::num::+}(1) in #t3).{core::num::==}(0) ?{core::int} self::Class::nonNullableStaticField.{core::num::+}(1) : 0 in self::Class::_#nonNullableStaticField.==(null) ?{core::int} self::Class::_#nonNullableStaticField = #t2 : throw new _in::LateInitializationErrorImpl::•("Field 'nonNullableStaticField' has been assigned during initialization.") : #t1{core::int};
   static get nullableStaticField() → core::int? {
     if(!self::Class::_#nullableStaticField#isSet) {
-      final core::int? #t5 = (let final core::int #t6 = self::Class::nullableStaticFieldReads in let final core::int #t7 = self::Class::nullableStaticFieldReads = #t6.{core::num::+}(1) in #t6).{core::num::==}(0) ?{core::int*} self::Class::nullableStaticField.{core::Object::hashCode} : 0;
+      final core::int? #t5 = (let final core::int #t6 = self::Class::nullableStaticFieldReads in let final core::int #t7 = self::Class::nullableStaticFieldReads = #t6.{core::num::+}(1) in #t6).{core::num::==}(0) ?{core::int} self::Class::nullableStaticField.{core::Object::hashCode} : 0;
       if(self::Class::_#nullableStaticField#isSet)
         throw new _in::LateInitializationErrorImpl::•("Field 'nullableStaticField' has been assigned during initialization.");
       self::Class::_#nullableStaticField#isSet = true;
@@ -33,7 +33,7 @@
     return let final core::int? #t8 = this.{self::Class::_#Class#nonNullableInstanceField} in #t8.==(null) ?{core::int} let final core::int #t9 = (let final core::int #t10 = this.{self::Class::nonNullableInstanceFieldReads} in let final core::int #t11 = this.{self::Class::nonNullableInstanceFieldReads} = #t10.{core::num::+}(1) in #t10).{core::num::==}(0) ?{core::int} this.{self::Class::nonNullableInstanceField}.{core::num::+}(1) : 0 in this.{self::Class::_#Class#nonNullableInstanceField}.==(null) ?{core::int} this.{self::Class::_#Class#nonNullableInstanceField} = #t9 : throw new _in::LateInitializationErrorImpl::•("Field 'nonNullableInstanceField' has been assigned during initialization.") : #t8{core::int};
   get nullableInstanceField() → core::int? {
     if(!this.{self::Class::_#Class#nullableInstanceField#isSet}) {
-      final core::int? #t12 = (let final core::int #t13 = this.{self::Class::nullableInstanceFieldReads} in let final core::int #t14 = this.{self::Class::nullableInstanceFieldReads} = #t13.{core::num::+}(1) in #t13).{core::num::==}(0) ?{core::int*} this.{self::Class::nullableInstanceField}.{core::Object::hashCode} : 0;
+      final core::int? #t12 = (let final core::int #t13 = this.{self::Class::nullableInstanceFieldReads} in let final core::int #t14 = this.{self::Class::nullableInstanceFieldReads} = #t13.{core::num::+}(1) in #t13).{core::num::==}(0) ?{core::int} this.{self::Class::nullableInstanceField}.{core::Object::hashCode} : 0;
       if(this.{self::Class::_#Class#nullableInstanceField#isSet})
         throw new _in::LateInitializationErrorImpl::•("Field 'nullableInstanceField' has been assigned during initialization.");
       this.{self::Class::_#Class#nullableInstanceField#isSet} = true;
@@ -51,7 +51,7 @@
   return let final core::int? #t15 = self::_#nonNullableTopLevelField in #t15.==(null) ?{core::int} let final core::int #t16 = (let final core::int #t17 = self::nonNullableTopLevelFieldReads in let final core::int #t18 = self::nonNullableTopLevelFieldReads = #t17.{core::num::+}(1) in #t17).{core::num::==}(0) ?{core::int} self::nonNullableTopLevelField.{core::num::+}(1) : 0 in self::_#nonNullableTopLevelField.==(null) ?{core::int} self::_#nonNullableTopLevelField = #t16 : throw new _in::LateInitializationErrorImpl::•("Field 'nonNullableTopLevelField' has been assigned during initialization.") : #t15{core::int};
 static get nullableTopLevelField() → core::int? {
   if(!self::_#nullableTopLevelField#isSet) {
-    final core::int? #t19 = (let final core::int #t20 = self::nullableTopLevelFieldReads in let final core::int #t21 = self::nullableTopLevelFieldReads = #t20.{core::num::+}(1) in #t20).{core::num::==}(0) ?{core::int*} self::nullableTopLevelField.{core::Object::hashCode} : 0;
+    final core::int? #t19 = (let final core::int #t20 = self::nullableTopLevelFieldReads in let final core::int #t21 = self::nullableTopLevelFieldReads = #t20.{core::num::+}(1) in #t20).{core::num::==}(0) ?{core::int} self::nullableTopLevelField.{core::Object::hashCode} : 0;
     if(self::_#nullableTopLevelField#isSet)
       throw new _in::LateInitializationErrorImpl::•("Field 'nullableTopLevelField' has been assigned during initialization.");
     self::_#nullableTopLevelField#isSet = true;
diff --git a/pkg/front_end/testcases/late_lowering/initializer_rewrite.dart.weak.expect b/pkg/front_end/testcases/late_lowering/initializer_rewrite.dart.weak.expect
index 38ca669..d8e7cc1 100644
--- a/pkg/front_end/testcases/late_lowering/initializer_rewrite.dart.weak.expect
+++ b/pkg/front_end/testcases/late_lowering/initializer_rewrite.dart.weak.expect
@@ -21,7 +21,7 @@
     return let final core::int? #t1 = self::Class::_#nonNullableStaticField in #t1.==(null) ?{core::int} let final core::int #t2 = (let final core::int #t3 = self::Class::nonNullableStaticFieldReads in let final core::int #t4 = self::Class::nonNullableStaticFieldReads = #t3.{core::num::+}(1) in #t3).{core::num::==}(0) ?{core::int} self::Class::nonNullableStaticField.{core::num::+}(1) : 0 in self::Class::_#nonNullableStaticField.==(null) ?{core::int} self::Class::_#nonNullableStaticField = #t2 : throw new _in::LateInitializationErrorImpl::•("Field 'nonNullableStaticField' has been assigned during initialization.") : #t1{core::int};
   static get nullableStaticField() → core::int? {
     if(!self::Class::_#nullableStaticField#isSet) {
-      final core::int? #t5 = (let final core::int #t6 = self::Class::nullableStaticFieldReads in let final core::int #t7 = self::Class::nullableStaticFieldReads = #t6.{core::num::+}(1) in #t6).{core::num::==}(0) ?{core::int*} self::Class::nullableStaticField.{core::Object::hashCode} : 0;
+      final core::int? #t5 = (let final core::int #t6 = self::Class::nullableStaticFieldReads in let final core::int #t7 = self::Class::nullableStaticFieldReads = #t6.{core::num::+}(1) in #t6).{core::num::==}(0) ?{core::int} self::Class::nullableStaticField.{core::Object::hashCode} : 0;
       if(self::Class::_#nullableStaticField#isSet)
         throw new _in::LateInitializationErrorImpl::•("Field 'nullableStaticField' has been assigned during initialization.");
       self::Class::_#nullableStaticField#isSet = true;
@@ -33,7 +33,7 @@
     return let final core::int? #t8 = this.{self::Class::_#Class#nonNullableInstanceField} in #t8.==(null) ?{core::int} let final core::int #t9 = (let final core::int #t10 = this.{self::Class::nonNullableInstanceFieldReads} in let final core::int #t11 = this.{self::Class::nonNullableInstanceFieldReads} = #t10.{core::num::+}(1) in #t10).{core::num::==}(0) ?{core::int} this.{self::Class::nonNullableInstanceField}.{core::num::+}(1) : 0 in this.{self::Class::_#Class#nonNullableInstanceField}.==(null) ?{core::int} this.{self::Class::_#Class#nonNullableInstanceField} = #t9 : throw new _in::LateInitializationErrorImpl::•("Field 'nonNullableInstanceField' has been assigned during initialization.") : #t8{core::int};
   get nullableInstanceField() → core::int? {
     if(!this.{self::Class::_#Class#nullableInstanceField#isSet}) {
-      final core::int? #t12 = (let final core::int #t13 = this.{self::Class::nullableInstanceFieldReads} in let final core::int #t14 = this.{self::Class::nullableInstanceFieldReads} = #t13.{core::num::+}(1) in #t13).{core::num::==}(0) ?{core::int*} this.{self::Class::nullableInstanceField}.{core::Object::hashCode} : 0;
+      final core::int? #t12 = (let final core::int #t13 = this.{self::Class::nullableInstanceFieldReads} in let final core::int #t14 = this.{self::Class::nullableInstanceFieldReads} = #t13.{core::num::+}(1) in #t13).{core::num::==}(0) ?{core::int} this.{self::Class::nullableInstanceField}.{core::Object::hashCode} : 0;
       if(this.{self::Class::_#Class#nullableInstanceField#isSet})
         throw new _in::LateInitializationErrorImpl::•("Field 'nullableInstanceField' has been assigned during initialization.");
       this.{self::Class::_#Class#nullableInstanceField#isSet} = true;
@@ -51,7 +51,7 @@
   return let final core::int? #t15 = self::_#nonNullableTopLevelField in #t15.==(null) ?{core::int} let final core::int #t16 = (let final core::int #t17 = self::nonNullableTopLevelFieldReads in let final core::int #t18 = self::nonNullableTopLevelFieldReads = #t17.{core::num::+}(1) in #t17).{core::num::==}(0) ?{core::int} self::nonNullableTopLevelField.{core::num::+}(1) : 0 in self::_#nonNullableTopLevelField.==(null) ?{core::int} self::_#nonNullableTopLevelField = #t16 : throw new _in::LateInitializationErrorImpl::•("Field 'nonNullableTopLevelField' has been assigned during initialization.") : #t15{core::int};
 static get nullableTopLevelField() → core::int? {
   if(!self::_#nullableTopLevelField#isSet) {
-    final core::int? #t19 = (let final core::int #t20 = self::nullableTopLevelFieldReads in let final core::int #t21 = self::nullableTopLevelFieldReads = #t20.{core::num::+}(1) in #t20).{core::num::==}(0) ?{core::int*} self::nullableTopLevelField.{core::Object::hashCode} : 0;
+    final core::int? #t19 = (let final core::int #t20 = self::nullableTopLevelFieldReads in let final core::int #t21 = self::nullableTopLevelFieldReads = #t20.{core::num::+}(1) in #t20).{core::num::==}(0) ?{core::int} self::nullableTopLevelField.{core::Object::hashCode} : 0;
     if(self::_#nullableTopLevelField#isSet)
       throw new _in::LateInitializationErrorImpl::•("Field 'nullableTopLevelField' has been assigned during initialization.");
     self::_#nullableTopLevelField#isSet = true;
diff --git a/pkg/front_end/testcases/late_lowering/initializer_rewrite.dart.weak.transformed.expect b/pkg/front_end/testcases/late_lowering/initializer_rewrite.dart.weak.transformed.expect
index 38ca669..d8e7cc1 100644
--- a/pkg/front_end/testcases/late_lowering/initializer_rewrite.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/late_lowering/initializer_rewrite.dart.weak.transformed.expect
@@ -21,7 +21,7 @@
     return let final core::int? #t1 = self::Class::_#nonNullableStaticField in #t1.==(null) ?{core::int} let final core::int #t2 = (let final core::int #t3 = self::Class::nonNullableStaticFieldReads in let final core::int #t4 = self::Class::nonNullableStaticFieldReads = #t3.{core::num::+}(1) in #t3).{core::num::==}(0) ?{core::int} self::Class::nonNullableStaticField.{core::num::+}(1) : 0 in self::Class::_#nonNullableStaticField.==(null) ?{core::int} self::Class::_#nonNullableStaticField = #t2 : throw new _in::LateInitializationErrorImpl::•("Field 'nonNullableStaticField' has been assigned during initialization.") : #t1{core::int};
   static get nullableStaticField() → core::int? {
     if(!self::Class::_#nullableStaticField#isSet) {
-      final core::int? #t5 = (let final core::int #t6 = self::Class::nullableStaticFieldReads in let final core::int #t7 = self::Class::nullableStaticFieldReads = #t6.{core::num::+}(1) in #t6).{core::num::==}(0) ?{core::int*} self::Class::nullableStaticField.{core::Object::hashCode} : 0;
+      final core::int? #t5 = (let final core::int #t6 = self::Class::nullableStaticFieldReads in let final core::int #t7 = self::Class::nullableStaticFieldReads = #t6.{core::num::+}(1) in #t6).{core::num::==}(0) ?{core::int} self::Class::nullableStaticField.{core::Object::hashCode} : 0;
       if(self::Class::_#nullableStaticField#isSet)
         throw new _in::LateInitializationErrorImpl::•("Field 'nullableStaticField' has been assigned during initialization.");
       self::Class::_#nullableStaticField#isSet = true;
@@ -33,7 +33,7 @@
     return let final core::int? #t8 = this.{self::Class::_#Class#nonNullableInstanceField} in #t8.==(null) ?{core::int} let final core::int #t9 = (let final core::int #t10 = this.{self::Class::nonNullableInstanceFieldReads} in let final core::int #t11 = this.{self::Class::nonNullableInstanceFieldReads} = #t10.{core::num::+}(1) in #t10).{core::num::==}(0) ?{core::int} this.{self::Class::nonNullableInstanceField}.{core::num::+}(1) : 0 in this.{self::Class::_#Class#nonNullableInstanceField}.==(null) ?{core::int} this.{self::Class::_#Class#nonNullableInstanceField} = #t9 : throw new _in::LateInitializationErrorImpl::•("Field 'nonNullableInstanceField' has been assigned during initialization.") : #t8{core::int};
   get nullableInstanceField() → core::int? {
     if(!this.{self::Class::_#Class#nullableInstanceField#isSet}) {
-      final core::int? #t12 = (let final core::int #t13 = this.{self::Class::nullableInstanceFieldReads} in let final core::int #t14 = this.{self::Class::nullableInstanceFieldReads} = #t13.{core::num::+}(1) in #t13).{core::num::==}(0) ?{core::int*} this.{self::Class::nullableInstanceField}.{core::Object::hashCode} : 0;
+      final core::int? #t12 = (let final core::int #t13 = this.{self::Class::nullableInstanceFieldReads} in let final core::int #t14 = this.{self::Class::nullableInstanceFieldReads} = #t13.{core::num::+}(1) in #t13).{core::num::==}(0) ?{core::int} this.{self::Class::nullableInstanceField}.{core::Object::hashCode} : 0;
       if(this.{self::Class::_#Class#nullableInstanceField#isSet})
         throw new _in::LateInitializationErrorImpl::•("Field 'nullableInstanceField' has been assigned during initialization.");
       this.{self::Class::_#Class#nullableInstanceField#isSet} = true;
@@ -51,7 +51,7 @@
   return let final core::int? #t15 = self::_#nonNullableTopLevelField in #t15.==(null) ?{core::int} let final core::int #t16 = (let final core::int #t17 = self::nonNullableTopLevelFieldReads in let final core::int #t18 = self::nonNullableTopLevelFieldReads = #t17.{core::num::+}(1) in #t17).{core::num::==}(0) ?{core::int} self::nonNullableTopLevelField.{core::num::+}(1) : 0 in self::_#nonNullableTopLevelField.==(null) ?{core::int} self::_#nonNullableTopLevelField = #t16 : throw new _in::LateInitializationErrorImpl::•("Field 'nonNullableTopLevelField' has been assigned during initialization.") : #t15{core::int};
 static get nullableTopLevelField() → core::int? {
   if(!self::_#nullableTopLevelField#isSet) {
-    final core::int? #t19 = (let final core::int #t20 = self::nullableTopLevelFieldReads in let final core::int #t21 = self::nullableTopLevelFieldReads = #t20.{core::num::+}(1) in #t20).{core::num::==}(0) ?{core::int*} self::nullableTopLevelField.{core::Object::hashCode} : 0;
+    final core::int? #t19 = (let final core::int #t20 = self::nullableTopLevelFieldReads in let final core::int #t21 = self::nullableTopLevelFieldReads = #t20.{core::num::+}(1) in #t20).{core::num::==}(0) ?{core::int} self::nullableTopLevelField.{core::Object::hashCode} : 0;
     if(self::_#nullableTopLevelField#isSet)
       throw new _in::LateInitializationErrorImpl::•("Field 'nullableTopLevelField' has been assigned during initialization.");
     self::_#nullableTopLevelField#isSet = true;
diff --git a/pkg/front_end/testcases/late_lowering/issue40093.dart.strong.transformed.expect b/pkg/front_end/testcases/late_lowering/issue40093.dart.strong.transformed.expect
index 2787548..c24f503 100644
--- a/pkg/front_end/testcases/late_lowering/issue40093.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/late_lowering/issue40093.dart.strong.transformed.expect
@@ -20,7 +20,7 @@
     core::print(i);
   }
   {
-    core::Iterator<core::int*> :sync-for-iterator = <core::int>[].{core::Iterable::iterator};
+    core::Iterator<core::int> :sync-for-iterator = <core::int>[].{core::Iterable::iterator};
     for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
       core::int i = :sync-for-iterator.{core::Iterator::current};
       {
diff --git a/pkg/front_end/testcases/late_lowering/issue40093.dart.weak.transformed.expect b/pkg/front_end/testcases/late_lowering/issue40093.dart.weak.transformed.expect
index 2787548..c24f503 100644
--- a/pkg/front_end/testcases/late_lowering/issue40093.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/late_lowering/issue40093.dart.weak.transformed.expect
@@ -20,7 +20,7 @@
     core::print(i);
   }
   {
-    core::Iterator<core::int*> :sync-for-iterator = <core::int>[].{core::Iterable::iterator};
+    core::Iterator<core::int> :sync-for-iterator = <core::int>[].{core::Iterable::iterator};
     for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
       core::int i = :sync-for-iterator.{core::Iterator::current};
       {
diff --git a/pkg/front_end/testcases/late_lowering/later.dart.strong.transformed.expect b/pkg/front_end/testcases/late_lowering/later.dart.strong.transformed.expect
index 66413d4..519d73f 100644
--- a/pkg/front_end/testcases/late_lowering/later.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/late_lowering/later.dart.strong.transformed.expect
@@ -122,7 +122,7 @@
     core::print("baz");
   }
   {
-    core::Iterator<core::String*> :sync-for-iterator = <core::String>["baz"].{core::Iterable::iterator};
+    core::Iterator<core::String> :sync-for-iterator = <core::String>["baz"].{core::Iterable::iterator};
     for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
       core::String s = :sync-for-iterator.{core::Iterator::current};
       {
@@ -153,7 +153,7 @@
       #L1:
       {
         {
-          asy::Stream<core::String*>* :stream = asy::Stream::fromIterable<core::String>(<core::String>["hest"]);
+          asy::Stream<core::String> :stream = asy::Stream::fromIterable<core::String>(<core::String>["hest"]);
           asy::_asyncStarListenHelper(:stream, :async_op);
           asy::_StreamIterator<core::String>? :for-iterator = new asy::_StreamIterator::•<core::String>(:stream);
           try
@@ -161,7 +161,7 @@
             while (true) {
               dynamic #t8 = asy::_asyncStarMoveNextHelper(:stream);
               [yield] let dynamic #t9 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::moveNext}(), :async_op_then, :async_op_error, :async_op) in null;
-              if(_in::unsafeCast<core::bool*>(:result)) {
+              if(_in::unsafeCast<core::bool>(:result)) {
                 core::String s = :for-iterator.{asy::_StreamIterator::current};
                 {
                   core::print(s);
@@ -182,8 +182,8 @@
       asy::_completeOnAsyncReturn(:async_completer, :return_value);
       return;
     }
-    on dynamic catch(dynamic :exception, core::StackTrace :stack_trace) {
-      :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+    on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
+      :async_completer.{asy::Completer::completeError}(exception, stack_trace);
     }
   :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
@@ -239,8 +239,8 @@
                 asy::_completeOnAsyncReturn(:async_completer, :return_value);
                 return;
               }
-              on dynamic catch(dynamic :exception, core::StackTrace :stack_trace) {
-                :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+              on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
+                :async_completer.{asy::Completer::completeError}(exception, stack_trace);
               }
             :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
             :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
@@ -254,8 +254,8 @@
       asy::_completeOnAsyncReturn(:async_completer, :return_value);
       return;
     }
-    on dynamic catch(dynamic :exception, core::StackTrace :stack_trace) {
-      :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+    on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
+      :async_completer.{asy::Completer::completeError}(exception, stack_trace);
     }
   :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
diff --git a/pkg/front_end/testcases/late_lowering/later.dart.weak.transformed.expect b/pkg/front_end/testcases/late_lowering/later.dart.weak.transformed.expect
index 66413d4..519d73f 100644
--- a/pkg/front_end/testcases/late_lowering/later.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/late_lowering/later.dart.weak.transformed.expect
@@ -122,7 +122,7 @@
     core::print("baz");
   }
   {
-    core::Iterator<core::String*> :sync-for-iterator = <core::String>["baz"].{core::Iterable::iterator};
+    core::Iterator<core::String> :sync-for-iterator = <core::String>["baz"].{core::Iterable::iterator};
     for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
       core::String s = :sync-for-iterator.{core::Iterator::current};
       {
@@ -153,7 +153,7 @@
       #L1:
       {
         {
-          asy::Stream<core::String*>* :stream = asy::Stream::fromIterable<core::String>(<core::String>["hest"]);
+          asy::Stream<core::String> :stream = asy::Stream::fromIterable<core::String>(<core::String>["hest"]);
           asy::_asyncStarListenHelper(:stream, :async_op);
           asy::_StreamIterator<core::String>? :for-iterator = new asy::_StreamIterator::•<core::String>(:stream);
           try
@@ -161,7 +161,7 @@
             while (true) {
               dynamic #t8 = asy::_asyncStarMoveNextHelper(:stream);
               [yield] let dynamic #t9 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::moveNext}(), :async_op_then, :async_op_error, :async_op) in null;
-              if(_in::unsafeCast<core::bool*>(:result)) {
+              if(_in::unsafeCast<core::bool>(:result)) {
                 core::String s = :for-iterator.{asy::_StreamIterator::current};
                 {
                   core::print(s);
@@ -182,8 +182,8 @@
       asy::_completeOnAsyncReturn(:async_completer, :return_value);
       return;
     }
-    on dynamic catch(dynamic :exception, core::StackTrace :stack_trace) {
-      :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+    on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
+      :async_completer.{asy::Completer::completeError}(exception, stack_trace);
     }
   :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
@@ -239,8 +239,8 @@
                 asy::_completeOnAsyncReturn(:async_completer, :return_value);
                 return;
               }
-              on dynamic catch(dynamic :exception, core::StackTrace :stack_trace) {
-                :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+              on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
+                :async_completer.{asy::Completer::completeError}(exception, stack_trace);
               }
             :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
             :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
@@ -254,8 +254,8 @@
       asy::_completeOnAsyncReturn(:async_completer, :return_value);
       return;
     }
-    on dynamic catch(dynamic :exception, core::StackTrace :stack_trace) {
-      :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+    on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
+      :async_completer.{asy::Completer::completeError}(exception, stack_trace);
     }
   :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
diff --git a/pkg/front_end/testcases/new_const_insertion/simple.dart.outline.expect b/pkg/front_end/testcases/new_const_insertion/simple.dart.outline.expect
index 97237ce..f74cb3f 100644
--- a/pkg/front_end/testcases/new_const_insertion/simple.dart.outline.expect
+++ b/pkg/front_end/testcases/new_const_insertion/simple.dart.outline.expect
@@ -7,6 +7,16 @@
   const constructor •(core::int* x) → self::A*
     : self::A::x = x, super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/new_const_insertion/simple.dart.strong.expect b/pkg/front_end/testcases/new_const_insertion/simple.dart.strong.expect
index 4b21762..7340962 100644
--- a/pkg/front_end/testcases/new_const_insertion/simple.dart.strong.expect
+++ b/pkg/front_end/testcases/new_const_insertion/simple.dart.strong.expect
@@ -7,6 +7,16 @@
   const constructor •(core::int* x) → self::A*
     : self::A::x = x, super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   core::int* foo = 42;
diff --git a/pkg/front_end/testcases/new_const_insertion/simple.dart.strong.transformed.expect b/pkg/front_end/testcases/new_const_insertion/simple.dart.strong.transformed.expect
index 4b21762..7340962 100644
--- a/pkg/front_end/testcases/new_const_insertion/simple.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/new_const_insertion/simple.dart.strong.transformed.expect
@@ -7,6 +7,16 @@
   const constructor •(core::int* x) → self::A*
     : self::A::x = x, super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   core::int* foo = 42;
diff --git a/pkg/front_end/testcases/nnbd/bounds_from_opt_in.dart.outline.expect b/pkg/front_end/testcases/nnbd/bounds_from_opt_in.dart.outline.expect
index 695900a..cb1c25d 100644
--- a/pkg/front_end/testcases/nnbd/bounds_from_opt_in.dart.outline.expect
+++ b/pkg/front_end/testcases/nnbd/bounds_from_opt_in.dart.outline.expect
@@ -10,6 +10,16 @@
     ;
   method method<T extends core::Null? = core::Null?>() → dynamic
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method test() → dynamic
   ;
diff --git a/pkg/front_end/testcases/nnbd/bounds_from_opt_in.dart.strong.expect b/pkg/front_end/testcases/nnbd/bounds_from_opt_in.dart.strong.expect
index 45d24f4..2998f39 100644
--- a/pkg/front_end/testcases/nnbd/bounds_from_opt_in.dart.strong.expect
+++ b/pkg/front_end/testcases/nnbd/bounds_from_opt_in.dart.strong.expect
@@ -10,6 +10,16 @@
     : super bou::Class::•()
     ;
   method method<T extends core::Null? = core::Null?>() → dynamic {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method test() → dynamic {
   bou::Class<core::Null?>* c = new bou::Class::•<core::Null?>();
diff --git a/pkg/front_end/testcases/nnbd/bounds_from_opt_in.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/bounds_from_opt_in.dart.strong.transformed.expect
index 45d24f4..2998f39 100644
--- a/pkg/front_end/testcases/nnbd/bounds_from_opt_in.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/bounds_from_opt_in.dart.strong.transformed.expect
@@ -10,6 +10,16 @@
     : super bou::Class::•()
     ;
   method method<T extends core::Null? = core::Null?>() → dynamic {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method test() → dynamic {
   bou::Class<core::Null?>* c = new bou::Class::•<core::Null?>();
diff --git a/pkg/front_end/testcases/nnbd/bounds_from_opt_in.dart.weak.expect b/pkg/front_end/testcases/nnbd/bounds_from_opt_in.dart.weak.expect
index 45d24f4..2998f39 100644
--- a/pkg/front_end/testcases/nnbd/bounds_from_opt_in.dart.weak.expect
+++ b/pkg/front_end/testcases/nnbd/bounds_from_opt_in.dart.weak.expect
@@ -10,6 +10,16 @@
     : super bou::Class::•()
     ;
   method method<T extends core::Null? = core::Null?>() → dynamic {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method test() → dynamic {
   bou::Class<core::Null?>* c = new bou::Class::•<core::Null?>();
diff --git a/pkg/front_end/testcases/nnbd/bounds_from_opt_in.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/bounds_from_opt_in.dart.weak.transformed.expect
index 45d24f4..2998f39 100644
--- a/pkg/front_end/testcases/nnbd/bounds_from_opt_in.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/bounds_from_opt_in.dart.weak.transformed.expect
@@ -10,6 +10,16 @@
     : super bou::Class::•()
     ;
   method method<T extends core::Null? = core::Null?>() → dynamic {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method test() → dynamic {
   bou::Class<core::Null?>* c = new bou::Class::•<core::Null?>();
diff --git a/pkg/front_end/testcases/nnbd/constants.dart.outline.expect b/pkg/front_end/testcases/nnbd/constants.dart.outline.expect
index d046e9f..a1f9f32 100644
--- a/pkg/front_end/testcases/nnbd/constants.dart.outline.expect
+++ b/pkg/front_end/testcases/nnbd/constants.dart.outline.expect
@@ -48,6 +48,16 @@
   const constructor •(con::Class::T* field) → con::Class<con::Class::T*>*
     : con::Class::field = field, super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static const field core::Type* objectTypeLiteral = core::Object*;
 static const field (core::Object*, core::Object*) →* core::bool* c2 = core::identical;
diff --git a/pkg/front_end/testcases/nnbd/constants.dart.strong.expect b/pkg/front_end/testcases/nnbd/constants.dart.strong.expect
index 0293eeb..a05d553 100644
--- a/pkg/front_end/testcases/nnbd/constants.dart.strong.expect
+++ b/pkg/front_end/testcases/nnbd/constants.dart.strong.expect
@@ -82,6 +82,16 @@
   const constructor •(con::Class::T* field) → con::Class<con::Class::T*>*
     : con::Class::field = field, super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static const field core::Type* objectTypeLiteral = #C18;
 static const field (core::Object*, core::Object*) →* core::bool* c2 = #C27;
diff --git a/pkg/front_end/testcases/nnbd/constants.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/constants.dart.strong.transformed.expect
index 0293eeb..a05d553 100644
--- a/pkg/front_end/testcases/nnbd/constants.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/constants.dart.strong.transformed.expect
@@ -82,6 +82,16 @@
   const constructor •(con::Class::T* field) → con::Class<con::Class::T*>*
     : con::Class::field = field, super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static const field core::Type* objectTypeLiteral = #C18;
 static const field (core::Object*, core::Object*) →* core::bool* c2 = #C27;
diff --git a/pkg/front_end/testcases/nnbd/constants.dart.weak.expect b/pkg/front_end/testcases/nnbd/constants.dart.weak.expect
index d4e1e3f7..92a1fb8 100644
--- a/pkg/front_end/testcases/nnbd/constants.dart.weak.expect
+++ b/pkg/front_end/testcases/nnbd/constants.dart.weak.expect
@@ -82,6 +82,16 @@
   const constructor •(con::Class::T* field) → con::Class<con::Class::T*>*
     : con::Class::field = field, super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static const field core::Type* objectTypeLiteral = #C1;
 static const field (core::Object*, core::Object*) →* core::bool* c2 = #C18;
diff --git a/pkg/front_end/testcases/nnbd/constants.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/constants.dart.weak.transformed.expect
index d4e1e3f7..92a1fb8 100644
--- a/pkg/front_end/testcases/nnbd/constants.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/constants.dart.weak.transformed.expect
@@ -82,6 +82,16 @@
   const constructor •(con::Class::T* field) → con::Class<con::Class::T*>*
     : con::Class::field = field, super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static const field core::Type* objectTypeLiteral = #C1;
 static const field (core::Object*, core::Object*) →* core::bool* c2 = #C18;
diff --git a/pkg/front_end/testcases/nnbd/dynamic_object_call.dart b/pkg/front_end/testcases/nnbd/dynamic_object_call.dart
new file mode 100644
index 0000000..c16f721
--- /dev/null
+++ b/pkg/front_end/testcases/nnbd/dynamic_object_call.dart
@@ -0,0 +1,26 @@
+// Copyright (c) 2020, the Dart project authors. Please see the AUTHORS file
+// 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.
+
+class Class {
+  @override
+  noSuchMethod(Object o, {String foo = ''}) => 42;
+
+  @override
+  toString({String foo = ''}) => 'foo';
+}
+
+main() {}
+
+test() {
+  dynamic c = new Class();
+  var v1 = c.toString();
+  var v2 = c.toString(foo: 42);
+  var v3 = c.toString;
+  var v4 = c.hashCode;
+  var v5 = c.hashCode();
+  // TODO(johnniwinther): Avoid compile-time error here.
+  var v6 = c.noSuchMethod("foo");
+  var v7 = c.noSuchMethod("foo", foo: 42);
+  var v8 = c.noSuchMethod;
+}
diff --git a/pkg/front_end/testcases/nnbd/dynamic_object_call.dart.outline.expect b/pkg/front_end/testcases/nnbd/dynamic_object_call.dart.outline.expect
new file mode 100644
index 0000000..85c4e95
--- /dev/null
+++ b/pkg/front_end/testcases/nnbd/dynamic_object_call.dart.outline.expect
@@ -0,0 +1,18 @@
+library /*isNonNullableByDefault*/;
+import self as self;
+import "dart:core" as core;
+
+class Class extends core::Object {
+  synthetic constructor •() → self::Class
+    ;
+  @core::override
+  method noSuchMethod(core::Object o, {core::String foo = ""}) → dynamic
+    ;
+  @core::override
+  method toString({core::String foo = ""}) → core::String
+    ;
+}
+static method main() → dynamic
+  ;
+static method test() → dynamic
+  ;
diff --git a/pkg/front_end/testcases/nnbd/dynamic_object_call.dart.strong.expect b/pkg/front_end/testcases/nnbd/dynamic_object_call.dart.strong.expect
new file mode 100644
index 0000000..9acef6c
--- /dev/null
+++ b/pkg/front_end/testcases/nnbd/dynamic_object_call.dart.strong.expect
@@ -0,0 +1,49 @@
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/nnbd/dynamic_object_call.dart:21:22: Error: 'hashCode' isn't a function or method and can't be invoked.
+//   var v5 = c.hashCode();
+//                      ^^^^...
+//
+// pkg/front_end/testcases/nnbd/dynamic_object_call.dart:23:27: Error: The argument type 'String' can't be assigned to the parameter type 'Invocation'.
+//  - 'Invocation' is from 'dart:core'.
+//   var v6 = c.noSuchMethod("foo");
+//                           ^
+//
+import self as self;
+import "dart:core" as core;
+
+class Class extends core::Object {
+  synthetic constructor •() → self::Class
+    : super core::Object::•()
+    ;
+  @#C1
+  method noSuchMethod(core::Object o, {core::String foo = #C2}) → dynamic
+    return 42;
+  @#C1
+  method toString({core::String foo = #C2}) → core::String
+    return "foo";
+}
+static method main() → dynamic {}
+static method test() → dynamic {
+  dynamic c = new self::Class::•();
+  core::String v1 = c.{core::Object::toString}();
+  dynamic v2 = c.toString(foo: 42);
+  () → core::String v3 = c.{core::Object::toString};
+  core::int v4 = c.{core::Object::hashCode};
+  dynamic v5 = invalid-expression "pkg/front_end/testcases/nnbd/dynamic_object_call.dart:21:22: Error: 'hashCode' isn't a function or method and can't be invoked.
+  var v5 = c.hashCode();
+                     ^^^^...";
+  dynamic v6 = c.{core::Object::noSuchMethod}(let final<BottomType> #t1 = invalid-expression "pkg/front_end/testcases/nnbd/dynamic_object_call.dart:23:27: Error: The argument type 'String' can't be assigned to the parameter type 'Invocation'.
+ - 'Invocation' is from 'dart:core'.
+  var v6 = c.noSuchMethod(\"foo\");
+                          ^" in "foo" as{TypeError,ForNonNullableByDefault} core::Invocation);
+  dynamic v7 = c.noSuchMethod("foo", foo: 42);
+  (core::Invocation) → dynamic v8 = c.{core::Object::noSuchMethod};
+}
+
+constants  {
+  #C1 = core::_Override {}
+  #C2 = ""
+}
diff --git a/pkg/front_end/testcases/nnbd/dynamic_object_call.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/dynamic_object_call.dart.strong.transformed.expect
new file mode 100644
index 0000000..9acef6c
--- /dev/null
+++ b/pkg/front_end/testcases/nnbd/dynamic_object_call.dart.strong.transformed.expect
@@ -0,0 +1,49 @@
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/nnbd/dynamic_object_call.dart:21:22: Error: 'hashCode' isn't a function or method and can't be invoked.
+//   var v5 = c.hashCode();
+//                      ^^^^...
+//
+// pkg/front_end/testcases/nnbd/dynamic_object_call.dart:23:27: Error: The argument type 'String' can't be assigned to the parameter type 'Invocation'.
+//  - 'Invocation' is from 'dart:core'.
+//   var v6 = c.noSuchMethod("foo");
+//                           ^
+//
+import self as self;
+import "dart:core" as core;
+
+class Class extends core::Object {
+  synthetic constructor •() → self::Class
+    : super core::Object::•()
+    ;
+  @#C1
+  method noSuchMethod(core::Object o, {core::String foo = #C2}) → dynamic
+    return 42;
+  @#C1
+  method toString({core::String foo = #C2}) → core::String
+    return "foo";
+}
+static method main() → dynamic {}
+static method test() → dynamic {
+  dynamic c = new self::Class::•();
+  core::String v1 = c.{core::Object::toString}();
+  dynamic v2 = c.toString(foo: 42);
+  () → core::String v3 = c.{core::Object::toString};
+  core::int v4 = c.{core::Object::hashCode};
+  dynamic v5 = invalid-expression "pkg/front_end/testcases/nnbd/dynamic_object_call.dart:21:22: Error: 'hashCode' isn't a function or method and can't be invoked.
+  var v5 = c.hashCode();
+                     ^^^^...";
+  dynamic v6 = c.{core::Object::noSuchMethod}(let final<BottomType> #t1 = invalid-expression "pkg/front_end/testcases/nnbd/dynamic_object_call.dart:23:27: Error: The argument type 'String' can't be assigned to the parameter type 'Invocation'.
+ - 'Invocation' is from 'dart:core'.
+  var v6 = c.noSuchMethod(\"foo\");
+                          ^" in "foo" as{TypeError,ForNonNullableByDefault} core::Invocation);
+  dynamic v7 = c.noSuchMethod("foo", foo: 42);
+  (core::Invocation) → dynamic v8 = c.{core::Object::noSuchMethod};
+}
+
+constants  {
+  #C1 = core::_Override {}
+  #C2 = ""
+}
diff --git a/pkg/front_end/testcases/nnbd/dynamic_object_call.dart.weak.expect b/pkg/front_end/testcases/nnbd/dynamic_object_call.dart.weak.expect
new file mode 100644
index 0000000..9acef6c
--- /dev/null
+++ b/pkg/front_end/testcases/nnbd/dynamic_object_call.dart.weak.expect
@@ -0,0 +1,49 @@
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/nnbd/dynamic_object_call.dart:21:22: Error: 'hashCode' isn't a function or method and can't be invoked.
+//   var v5 = c.hashCode();
+//                      ^^^^...
+//
+// pkg/front_end/testcases/nnbd/dynamic_object_call.dart:23:27: Error: The argument type 'String' can't be assigned to the parameter type 'Invocation'.
+//  - 'Invocation' is from 'dart:core'.
+//   var v6 = c.noSuchMethod("foo");
+//                           ^
+//
+import self as self;
+import "dart:core" as core;
+
+class Class extends core::Object {
+  synthetic constructor •() → self::Class
+    : super core::Object::•()
+    ;
+  @#C1
+  method noSuchMethod(core::Object o, {core::String foo = #C2}) → dynamic
+    return 42;
+  @#C1
+  method toString({core::String foo = #C2}) → core::String
+    return "foo";
+}
+static method main() → dynamic {}
+static method test() → dynamic {
+  dynamic c = new self::Class::•();
+  core::String v1 = c.{core::Object::toString}();
+  dynamic v2 = c.toString(foo: 42);
+  () → core::String v3 = c.{core::Object::toString};
+  core::int v4 = c.{core::Object::hashCode};
+  dynamic v5 = invalid-expression "pkg/front_end/testcases/nnbd/dynamic_object_call.dart:21:22: Error: 'hashCode' isn't a function or method and can't be invoked.
+  var v5 = c.hashCode();
+                     ^^^^...";
+  dynamic v6 = c.{core::Object::noSuchMethod}(let final<BottomType> #t1 = invalid-expression "pkg/front_end/testcases/nnbd/dynamic_object_call.dart:23:27: Error: The argument type 'String' can't be assigned to the parameter type 'Invocation'.
+ - 'Invocation' is from 'dart:core'.
+  var v6 = c.noSuchMethod(\"foo\");
+                          ^" in "foo" as{TypeError,ForNonNullableByDefault} core::Invocation);
+  dynamic v7 = c.noSuchMethod("foo", foo: 42);
+  (core::Invocation) → dynamic v8 = c.{core::Object::noSuchMethod};
+}
+
+constants  {
+  #C1 = core::_Override {}
+  #C2 = ""
+}
diff --git a/pkg/front_end/testcases/nnbd/dynamic_object_call.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/dynamic_object_call.dart.weak.transformed.expect
new file mode 100644
index 0000000..9acef6c
--- /dev/null
+++ b/pkg/front_end/testcases/nnbd/dynamic_object_call.dart.weak.transformed.expect
@@ -0,0 +1,49 @@
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/nnbd/dynamic_object_call.dart:21:22: Error: 'hashCode' isn't a function or method and can't be invoked.
+//   var v5 = c.hashCode();
+//                      ^^^^...
+//
+// pkg/front_end/testcases/nnbd/dynamic_object_call.dart:23:27: Error: The argument type 'String' can't be assigned to the parameter type 'Invocation'.
+//  - 'Invocation' is from 'dart:core'.
+//   var v6 = c.noSuchMethod("foo");
+//                           ^
+//
+import self as self;
+import "dart:core" as core;
+
+class Class extends core::Object {
+  synthetic constructor •() → self::Class
+    : super core::Object::•()
+    ;
+  @#C1
+  method noSuchMethod(core::Object o, {core::String foo = #C2}) → dynamic
+    return 42;
+  @#C1
+  method toString({core::String foo = #C2}) → core::String
+    return "foo";
+}
+static method main() → dynamic {}
+static method test() → dynamic {
+  dynamic c = new self::Class::•();
+  core::String v1 = c.{core::Object::toString}();
+  dynamic v2 = c.toString(foo: 42);
+  () → core::String v3 = c.{core::Object::toString};
+  core::int v4 = c.{core::Object::hashCode};
+  dynamic v5 = invalid-expression "pkg/front_end/testcases/nnbd/dynamic_object_call.dart:21:22: Error: 'hashCode' isn't a function or method and can't be invoked.
+  var v5 = c.hashCode();
+                     ^^^^...";
+  dynamic v6 = c.{core::Object::noSuchMethod}(let final<BottomType> #t1 = invalid-expression "pkg/front_end/testcases/nnbd/dynamic_object_call.dart:23:27: Error: The argument type 'String' can't be assigned to the parameter type 'Invocation'.
+ - 'Invocation' is from 'dart:core'.
+  var v6 = c.noSuchMethod(\"foo\");
+                          ^" in "foo" as{TypeError,ForNonNullableByDefault} core::Invocation);
+  dynamic v7 = c.noSuchMethod("foo", foo: 42);
+  (core::Invocation) → dynamic v8 = c.{core::Object::noSuchMethod};
+}
+
+constants  {
+  #C1 = core::_Override {}
+  #C2 = ""
+}
diff --git a/pkg/front_end/testcases/nnbd/export_from_opt_out.dart.outline.expect b/pkg/front_end/testcases/nnbd/export_from_opt_out.dart.outline.expect
index c7aa445..05e8397 100644
--- a/pkg/front_end/testcases/nnbd/export_from_opt_out.dart.outline.expect
+++ b/pkg/front_end/testcases/nnbd/export_from_opt_out.dart.outline.expect
@@ -62,6 +62,16 @@
 class LegacyClass1 extends core::Object {
   synthetic constructor •() → exp::LegacyClass1*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 
 library;
@@ -71,10 +81,30 @@
 class LegacyClass3 extends core::Object {
   synthetic constructor •() → exp2::LegacyClass3*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class LegacyClass4 extends core::Object {
   synthetic constructor •() → exp2::LegacyClass4*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method legacyMethod2() → dynamic
   ;
@@ -92,6 +122,16 @@
 class LegacyClass2 extends core::Object {
   synthetic constructor •() → exp3::LegacyClass2*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 extension LegacyExtension on core::String* {
 }
diff --git a/pkg/front_end/testcases/nnbd/export_from_opt_out.dart.strong.expect b/pkg/front_end/testcases/nnbd/export_from_opt_out.dart.strong.expect
index 93959c2..241f5aa 100644
--- a/pkg/front_end/testcases/nnbd/export_from_opt_out.dart.strong.expect
+++ b/pkg/front_end/testcases/nnbd/export_from_opt_out.dart.strong.expect
@@ -62,6 +62,16 @@
   synthetic constructor •() → exp::LegacyClass1*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 
 library;
@@ -72,11 +82,31 @@
   synthetic constructor •() → exp2::LegacyClass3*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class LegacyClass4 extends core::Object {
   synthetic constructor •() → exp2::LegacyClass4*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method legacyMethod2() → dynamic {}
 
@@ -94,6 +124,16 @@
   synthetic constructor •() → exp3::LegacyClass2*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 extension LegacyExtension on core::String* {
 }
diff --git a/pkg/front_end/testcases/nnbd/export_from_opt_out.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/export_from_opt_out.dart.strong.transformed.expect
index 93959c2..241f5aa 100644
--- a/pkg/front_end/testcases/nnbd/export_from_opt_out.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/export_from_opt_out.dart.strong.transformed.expect
@@ -62,6 +62,16 @@
   synthetic constructor •() → exp::LegacyClass1*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 
 library;
@@ -72,11 +82,31 @@
   synthetic constructor •() → exp2::LegacyClass3*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class LegacyClass4 extends core::Object {
   synthetic constructor •() → exp2::LegacyClass4*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method legacyMethod2() → dynamic {}
 
@@ -94,6 +124,16 @@
   synthetic constructor •() → exp3::LegacyClass2*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 extension LegacyExtension on core::String* {
 }
diff --git a/pkg/front_end/testcases/nnbd/export_from_opt_out.dart.weak.expect b/pkg/front_end/testcases/nnbd/export_from_opt_out.dart.weak.expect
index 93959c2..241f5aa 100644
--- a/pkg/front_end/testcases/nnbd/export_from_opt_out.dart.weak.expect
+++ b/pkg/front_end/testcases/nnbd/export_from_opt_out.dart.weak.expect
@@ -62,6 +62,16 @@
   synthetic constructor •() → exp::LegacyClass1*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 
 library;
@@ -72,11 +82,31 @@
   synthetic constructor •() → exp2::LegacyClass3*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class LegacyClass4 extends core::Object {
   synthetic constructor •() → exp2::LegacyClass4*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method legacyMethod2() → dynamic {}
 
@@ -94,6 +124,16 @@
   synthetic constructor •() → exp3::LegacyClass2*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 extension LegacyExtension on core::String* {
 }
diff --git a/pkg/front_end/testcases/nnbd/export_from_opt_out.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/export_from_opt_out.dart.weak.transformed.expect
index 93959c2..241f5aa 100644
--- a/pkg/front_end/testcases/nnbd/export_from_opt_out.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/export_from_opt_out.dart.weak.transformed.expect
@@ -62,6 +62,16 @@
   synthetic constructor •() → exp::LegacyClass1*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 
 library;
@@ -72,11 +82,31 @@
   synthetic constructor •() → exp2::LegacyClass3*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class LegacyClass4 extends core::Object {
   synthetic constructor •() → exp2::LegacyClass4*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method legacyMethod2() → dynamic {}
 
@@ -94,6 +124,16 @@
   synthetic constructor •() → exp3::LegacyClass2*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 extension LegacyExtension on core::String* {
 }
diff --git a/pkg/front_end/testcases/nnbd/forin.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/forin.dart.strong.transformed.expect
index 0b1f6c0..2872aa5 100644
--- a/pkg/front_end/testcases/nnbd/forin.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/forin.dart.strong.transformed.expect
@@ -182,7 +182,7 @@
     }
   } =>#t17;
   {
-    core::Iterator<core::int*> :sync-for-iterator = l1.{core::Iterable::iterator};
+    core::Iterator<core::int> :sync-for-iterator = l1.{core::Iterable::iterator};
     for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
       core::int x = :sync-for-iterator.{core::Iterator::current};
       x;
@@ -191,7 +191,7 @@
   block {
     final core::List<core::int> #t18 = <core::int>[];
     {
-      core::Iterator<core::int*> :sync-for-iterator = l1.{core::Iterable::iterator};
+      core::Iterator<core::int> :sync-for-iterator = l1.{core::Iterable::iterator};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         core::int x = :sync-for-iterator.{core::Iterator::current};
         #t18.{core::List::add}(x);
diff --git a/pkg/front_end/testcases/nnbd/forin.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/forin.dart.weak.transformed.expect
index 0b1f6c0..2872aa5 100644
--- a/pkg/front_end/testcases/nnbd/forin.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/forin.dart.weak.transformed.expect
@@ -182,7 +182,7 @@
     }
   } =>#t17;
   {
-    core::Iterator<core::int*> :sync-for-iterator = l1.{core::Iterable::iterator};
+    core::Iterator<core::int> :sync-for-iterator = l1.{core::Iterable::iterator};
     for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
       core::int x = :sync-for-iterator.{core::Iterator::current};
       x;
@@ -191,7 +191,7 @@
   block {
     final core::List<core::int> #t18 = <core::int>[];
     {
-      core::Iterator<core::int*> :sync-for-iterator = l1.{core::Iterable::iterator};
+      core::Iterator<core::int> :sync-for-iterator = l1.{core::Iterable::iterator};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         core::int x = :sync-for-iterator.{core::Iterator::current};
         #t18.{core::List::add}(x);
diff --git a/pkg/front_end/testcases/nnbd/generic_override.dart.outline.expect b/pkg/front_end/testcases/nnbd/generic_override.dart.outline.expect
index 1364f7a..2a9d802 100644
--- a/pkg/front_end/testcases/nnbd/generic_override.dart.outline.expect
+++ b/pkg/front_end/testcases/nnbd/generic_override.dart.outline.expect
@@ -125,6 +125,16 @@
   abstract method method5a<T extends self::Class1* = self::Class1*>() → void;
   abstract method method5b<T extends self::Class1* = self::Class1*>() → void;
   abstract method method5c<T extends self::Class1* = self::Class1*>() → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class LegacyClass2 extends self::Class1 {
   synthetic constructor •() → gen::LegacyClass2*
@@ -144,6 +154,16 @@
   abstract method method5a<T extends self::Class1* = self::Class1*>() → void;
   abstract method method5b<T extends self::Class1* = self::Class1*>() → void;
   abstract method method5c<T extends self::Class1* = self::Class1*>() → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class LegacyClass3 extends self::Class1 {
   synthetic constructor •() → gen::LegacyClass3*
@@ -160,6 +180,16 @@
   abstract member-signature method method5a<T extends self::Class1* = self::Class1*>() → void;
   abstract member-signature method method5b<T extends self::Class1* = self::Class1*>() → void;
   abstract member-signature method method5c<T extends self::Class1* = self::Class1*>() → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/nnbd/generic_override.dart.strong.expect b/pkg/front_end/testcases/nnbd/generic_override.dart.strong.expect
index 419cad0..f6b9ee8 100644
--- a/pkg/front_end/testcases/nnbd/generic_override.dart.strong.expect
+++ b/pkg/front_end/testcases/nnbd/generic_override.dart.strong.expect
@@ -128,6 +128,16 @@
   abstract method method5a<T extends self::Class1* = self::Class1*>() → void;
   abstract method method5b<T extends self::Class1* = self::Class1*>() → void;
   abstract method method5c<T extends self::Class1* = self::Class1*>() → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class LegacyClass2 extends self::Class1 {
   synthetic constructor •() → gen::LegacyClass2*
@@ -148,6 +158,16 @@
   abstract method method5a<T extends self::Class1* = self::Class1*>() → void;
   abstract method method5b<T extends self::Class1* = self::Class1*>() → void;
   abstract method method5c<T extends self::Class1* = self::Class1*>() → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class LegacyClass3 extends self::Class1 {
   synthetic constructor •() → gen::LegacyClass3*
@@ -165,5 +185,15 @@
   abstract member-signature method method5a<T extends self::Class1* = self::Class1*>() → void;
   abstract member-signature method method5b<T extends self::Class1* = self::Class1*>() → void;
   abstract member-signature method method5c<T extends self::Class1* = self::Class1*>() → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/nnbd/generic_override.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/generic_override.dart.strong.transformed.expect
index 419cad0..f6b9ee8 100644
--- a/pkg/front_end/testcases/nnbd/generic_override.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/generic_override.dart.strong.transformed.expect
@@ -128,6 +128,16 @@
   abstract method method5a<T extends self::Class1* = self::Class1*>() → void;
   abstract method method5b<T extends self::Class1* = self::Class1*>() → void;
   abstract method method5c<T extends self::Class1* = self::Class1*>() → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class LegacyClass2 extends self::Class1 {
   synthetic constructor •() → gen::LegacyClass2*
@@ -148,6 +158,16 @@
   abstract method method5a<T extends self::Class1* = self::Class1*>() → void;
   abstract method method5b<T extends self::Class1* = self::Class1*>() → void;
   abstract method method5c<T extends self::Class1* = self::Class1*>() → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class LegacyClass3 extends self::Class1 {
   synthetic constructor •() → gen::LegacyClass3*
@@ -165,5 +185,15 @@
   abstract member-signature method method5a<T extends self::Class1* = self::Class1*>() → void;
   abstract member-signature method method5b<T extends self::Class1* = self::Class1*>() → void;
   abstract member-signature method method5c<T extends self::Class1* = self::Class1*>() → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/nnbd/generic_override.dart.weak.expect b/pkg/front_end/testcases/nnbd/generic_override.dart.weak.expect
index 419cad0..f6b9ee8 100644
--- a/pkg/front_end/testcases/nnbd/generic_override.dart.weak.expect
+++ b/pkg/front_end/testcases/nnbd/generic_override.dart.weak.expect
@@ -128,6 +128,16 @@
   abstract method method5a<T extends self::Class1* = self::Class1*>() → void;
   abstract method method5b<T extends self::Class1* = self::Class1*>() → void;
   abstract method method5c<T extends self::Class1* = self::Class1*>() → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class LegacyClass2 extends self::Class1 {
   synthetic constructor •() → gen::LegacyClass2*
@@ -148,6 +158,16 @@
   abstract method method5a<T extends self::Class1* = self::Class1*>() → void;
   abstract method method5b<T extends self::Class1* = self::Class1*>() → void;
   abstract method method5c<T extends self::Class1* = self::Class1*>() → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class LegacyClass3 extends self::Class1 {
   synthetic constructor •() → gen::LegacyClass3*
@@ -165,5 +185,15 @@
   abstract member-signature method method5a<T extends self::Class1* = self::Class1*>() → void;
   abstract member-signature method method5b<T extends self::Class1* = self::Class1*>() → void;
   abstract member-signature method method5c<T extends self::Class1* = self::Class1*>() → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/nnbd/generic_override.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/generic_override.dart.weak.transformed.expect
index 419cad0..f6b9ee8 100644
--- a/pkg/front_end/testcases/nnbd/generic_override.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/generic_override.dart.weak.transformed.expect
@@ -128,6 +128,16 @@
   abstract method method5a<T extends self::Class1* = self::Class1*>() → void;
   abstract method method5b<T extends self::Class1* = self::Class1*>() → void;
   abstract method method5c<T extends self::Class1* = self::Class1*>() → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class LegacyClass2 extends self::Class1 {
   synthetic constructor •() → gen::LegacyClass2*
@@ -148,6 +158,16 @@
   abstract method method5a<T extends self::Class1* = self::Class1*>() → void;
   abstract method method5b<T extends self::Class1* = self::Class1*>() → void;
   abstract method method5c<T extends self::Class1* = self::Class1*>() → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class LegacyClass3 extends self::Class1 {
   synthetic constructor •() → gen::LegacyClass3*
@@ -165,5 +185,15 @@
   abstract member-signature method method5a<T extends self::Class1* = self::Class1*>() → void;
   abstract member-signature method method5b<T extends self::Class1* = self::Class1*>() → void;
   abstract member-signature method method5c<T extends self::Class1* = self::Class1*>() → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/nnbd/infer_constraints_from_opt_in.dart.outline.expect b/pkg/front_end/testcases/nnbd/infer_constraints_from_opt_in.dart.outline.expect
index bcaa0e0..86acb31 100644
--- a/pkg/front_end/testcases/nnbd/infer_constraints_from_opt_in.dart.outline.expect
+++ b/pkg/front_end/testcases/nnbd/infer_constraints_from_opt_in.dart.outline.expect
@@ -10,6 +10,16 @@
     ;
   method baz(inf::B* b) → dynamic
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/nnbd/infer_constraints_from_opt_in.dart.strong.expect b/pkg/front_end/testcases/nnbd/infer_constraints_from_opt_in.dart.strong.expect
index 2ab45fe..e98a6278 100644
--- a/pkg/front_end/testcases/nnbd/infer_constraints_from_opt_in.dart.strong.expect
+++ b/pkg/front_end/testcases/nnbd/infer_constraints_from_opt_in.dart.strong.expect
@@ -13,6 +13,16 @@
   method baz(inf::B* b) → dynamic {
     b.{inf::B::foo}(b.{inf::B::bar}<core::List<core::int*>*>());
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   core::List<dynamic>* local0 = <dynamic>[];
diff --git a/pkg/front_end/testcases/nnbd/infer_constraints_from_opt_in.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/infer_constraints_from_opt_in.dart.strong.transformed.expect
index 755f2c9..240e8dc 100644
--- a/pkg/front_end/testcases/nnbd/infer_constraints_from_opt_in.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/infer_constraints_from_opt_in.dart.strong.transformed.expect
@@ -13,6 +13,16 @@
   method baz(inf::B* b) → dynamic {
     b.{inf::B::foo}(b.{inf::B::bar}<core::List<core::int*>*>());
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   core::List<dynamic>* local0 = <dynamic>[];
@@ -25,22 +35,22 @@
   core::List<core::int*>* local1g = <core::int*>[inf::field7];
   core::List<core::int*>* local1h = <core::int*>[inf::field8];
   core::List<core::Null?>* local1i = <core::Null?>[null];
-  core::Set<inf::C<dynamic>*>* local2a = let final core::Set<inf::C<dynamic>*>* #t1 = col::LinkedHashSet::•<inf::C<dynamic>*>() in let final core::bool* #t2 = #t1.{core::Set::add}(inf::field1) in let final core::bool* #t3 = #t1.{core::Set::add}(null) in #t1;
-  core::Set<inf::C<dynamic>*>* local2b = let final core::Set<inf::C<dynamic>*>* #t4 = col::LinkedHashSet::•<inf::C<dynamic>*>() in let final core::bool* #t5 = #t4.{core::Set::add}(inf::field2) in let final core::bool* #t6 = #t4.{core::Set::add}(null) in #t4;
-  core::Set<inf::C<core::int*>*>* local2c = let final core::Set<inf::C<core::int*>*>* #t7 = col::LinkedHashSet::•<inf::C<core::int*>*>() in let final core::bool* #t8 = #t7.{core::Set::add}(inf::field3) in let final core::bool* #t9 = #t7.{core::Set::add}(null) in #t7;
-  core::Set<inf::C<core::int*>*>* local2d = let final core::Set<inf::C<core::int*>*>* #t10 = col::LinkedHashSet::•<inf::C<core::int*>*>() in let final core::bool* #t11 = #t10.{core::Set::add}(inf::field4) in let final core::bool* #t12 = #t10.{core::Set::add}(null) in #t10;
-  core::Set<inf::C<core::int*>*>* local2e = let final core::Set<inf::C<core::int*>*>* #t13 = col::LinkedHashSet::•<inf::C<core::int*>*>() in let final core::bool* #t14 = #t13.{core::Set::add}(inf::field5) in let final core::bool* #t15 = #t13.{core::Set::add}(null) in #t13;
-  core::Set<inf::C<core::int*>*>* local2f = let final core::Set<inf::C<core::int*>*>* #t16 = col::LinkedHashSet::•<inf::C<core::int*>*>() in let final core::bool* #t17 = #t16.{core::Set::add}(inf::field6) in let final core::bool* #t18 = #t16.{core::Set::add}(null) in #t16;
-  core::Set<core::int*>* local2g = let final core::Set<core::int*>* #t19 = col::LinkedHashSet::•<core::int*>() in let final core::bool* #t20 = #t19.{core::Set::add}(inf::field7) in let final core::bool* #t21 = #t19.{core::Set::add}(null) in #t19;
-  core::Set<core::int*>* local2h = let final core::Set<core::int*>* #t22 = col::LinkedHashSet::•<core::int*>() in let final core::bool* #t23 = #t22.{core::Set::add}(inf::field8) in let final core::bool* #t24 = #t22.{core::Set::add}(null) in #t22;
-  core::Set<inf::C<dynamic>*>* local3a = let final core::Set<inf::C<dynamic>*>* #t25 = col::LinkedHashSet::•<inf::C<dynamic>*>() in let final core::bool* #t26 = #t25.{core::Set::add}(null) in let final core::bool* #t27 = #t25.{core::Set::add}(inf::field1) in #t25;
-  core::Set<inf::C<dynamic>*>* local3b = let final core::Set<inf::C<dynamic>*>* #t28 = col::LinkedHashSet::•<inf::C<dynamic>*>() in let final core::bool* #t29 = #t28.{core::Set::add}(null) in let final core::bool* #t30 = #t28.{core::Set::add}(inf::field2) in #t28;
-  core::Set<inf::C<core::int*>*>* local3c = let final core::Set<inf::C<core::int*>*>* #t31 = col::LinkedHashSet::•<inf::C<core::int*>*>() in let final core::bool* #t32 = #t31.{core::Set::add}(null) in let final core::bool* #t33 = #t31.{core::Set::add}(inf::field3) in #t31;
-  core::Set<inf::C<core::int*>*>* local3d = let final core::Set<inf::C<core::int*>*>* #t34 = col::LinkedHashSet::•<inf::C<core::int*>*>() in let final core::bool* #t35 = #t34.{core::Set::add}(null) in let final core::bool* #t36 = #t34.{core::Set::add}(inf::field4) in #t34;
-  core::Set<inf::C<core::int*>*>* local3e = let final core::Set<inf::C<core::int*>*>* #t37 = col::LinkedHashSet::•<inf::C<core::int*>*>() in let final core::bool* #t38 = #t37.{core::Set::add}(null) in let final core::bool* #t39 = #t37.{core::Set::add}(inf::field5) in #t37;
-  core::Set<inf::C<core::int*>*>* local3f = let final core::Set<inf::C<core::int*>*>* #t40 = col::LinkedHashSet::•<inf::C<core::int*>*>() in let final core::bool* #t41 = #t40.{core::Set::add}(null) in let final core::bool* #t42 = #t40.{core::Set::add}(inf::field6) in #t40;
-  core::Set<core::int*>* local3g = let final core::Set<core::int*>* #t43 = col::LinkedHashSet::•<core::int*>() in let final core::bool* #t44 = #t43.{core::Set::add}(null) in let final core::bool* #t45 = #t43.{core::Set::add}(inf::field7) in #t43;
-  core::Set<core::int*>* local3h = let final core::Set<core::int*>* #t46 = col::LinkedHashSet::•<core::int*>() in let final core::bool* #t47 = #t46.{core::Set::add}(null) in let final core::bool* #t48 = #t46.{core::Set::add}(inf::field8) in #t46;
+  core::Set<inf::C<dynamic>*>* local2a = let final core::Set<inf::C<dynamic>*>* #t1 = col::LinkedHashSet::•<inf::C<dynamic>*>() in let final core::bool #t2 = #t1.{core::Set::add}(inf::field1) in let final core::bool #t3 = #t1.{core::Set::add}(null) in #t1;
+  core::Set<inf::C<dynamic>*>* local2b = let final core::Set<inf::C<dynamic>*>* #t4 = col::LinkedHashSet::•<inf::C<dynamic>*>() in let final core::bool #t5 = #t4.{core::Set::add}(inf::field2) in let final core::bool #t6 = #t4.{core::Set::add}(null) in #t4;
+  core::Set<inf::C<core::int*>*>* local2c = let final core::Set<inf::C<core::int*>*>* #t7 = col::LinkedHashSet::•<inf::C<core::int*>*>() in let final core::bool #t8 = #t7.{core::Set::add}(inf::field3) in let final core::bool #t9 = #t7.{core::Set::add}(null) in #t7;
+  core::Set<inf::C<core::int*>*>* local2d = let final core::Set<inf::C<core::int*>*>* #t10 = col::LinkedHashSet::•<inf::C<core::int*>*>() in let final core::bool #t11 = #t10.{core::Set::add}(inf::field4) in let final core::bool #t12 = #t10.{core::Set::add}(null) in #t10;
+  core::Set<inf::C<core::int*>*>* local2e = let final core::Set<inf::C<core::int*>*>* #t13 = col::LinkedHashSet::•<inf::C<core::int*>*>() in let final core::bool #t14 = #t13.{core::Set::add}(inf::field5) in let final core::bool #t15 = #t13.{core::Set::add}(null) in #t13;
+  core::Set<inf::C<core::int*>*>* local2f = let final core::Set<inf::C<core::int*>*>* #t16 = col::LinkedHashSet::•<inf::C<core::int*>*>() in let final core::bool #t17 = #t16.{core::Set::add}(inf::field6) in let final core::bool #t18 = #t16.{core::Set::add}(null) in #t16;
+  core::Set<core::int*>* local2g = let final core::Set<core::int*>* #t19 = col::LinkedHashSet::•<core::int*>() in let final core::bool #t20 = #t19.{core::Set::add}(inf::field7) in let final core::bool #t21 = #t19.{core::Set::add}(null) in #t19;
+  core::Set<core::int*>* local2h = let final core::Set<core::int*>* #t22 = col::LinkedHashSet::•<core::int*>() in let final core::bool #t23 = #t22.{core::Set::add}(inf::field8) in let final core::bool #t24 = #t22.{core::Set::add}(null) in #t22;
+  core::Set<inf::C<dynamic>*>* local3a = let final core::Set<inf::C<dynamic>*>* #t25 = col::LinkedHashSet::•<inf::C<dynamic>*>() in let final core::bool #t26 = #t25.{core::Set::add}(null) in let final core::bool #t27 = #t25.{core::Set::add}(inf::field1) in #t25;
+  core::Set<inf::C<dynamic>*>* local3b = let final core::Set<inf::C<dynamic>*>* #t28 = col::LinkedHashSet::•<inf::C<dynamic>*>() in let final core::bool #t29 = #t28.{core::Set::add}(null) in let final core::bool #t30 = #t28.{core::Set::add}(inf::field2) in #t28;
+  core::Set<inf::C<core::int*>*>* local3c = let final core::Set<inf::C<core::int*>*>* #t31 = col::LinkedHashSet::•<inf::C<core::int*>*>() in let final core::bool #t32 = #t31.{core::Set::add}(null) in let final core::bool #t33 = #t31.{core::Set::add}(inf::field3) in #t31;
+  core::Set<inf::C<core::int*>*>* local3d = let final core::Set<inf::C<core::int*>*>* #t34 = col::LinkedHashSet::•<inf::C<core::int*>*>() in let final core::bool #t35 = #t34.{core::Set::add}(null) in let final core::bool #t36 = #t34.{core::Set::add}(inf::field4) in #t34;
+  core::Set<inf::C<core::int*>*>* local3e = let final core::Set<inf::C<core::int*>*>* #t37 = col::LinkedHashSet::•<inf::C<core::int*>*>() in let final core::bool #t38 = #t37.{core::Set::add}(null) in let final core::bool #t39 = #t37.{core::Set::add}(inf::field5) in #t37;
+  core::Set<inf::C<core::int*>*>* local3f = let final core::Set<inf::C<core::int*>*>* #t40 = col::LinkedHashSet::•<inf::C<core::int*>*>() in let final core::bool #t41 = #t40.{core::Set::add}(null) in let final core::bool #t42 = #t40.{core::Set::add}(inf::field6) in #t40;
+  core::Set<core::int*>* local3g = let final core::Set<core::int*>* #t43 = col::LinkedHashSet::•<core::int*>() in let final core::bool #t44 = #t43.{core::Set::add}(null) in let final core::bool #t45 = #t43.{core::Set::add}(inf::field7) in #t43;
+  core::Set<core::int*>* local3h = let final core::Set<core::int*>* #t46 = col::LinkedHashSet::•<core::int*>() in let final core::bool #t47 = #t46.{core::Set::add}(null) in let final core::bool #t48 = #t46.{core::Set::add}(inf::field8) in #t46;
 }
 
 library /*isNonNullableByDefault*/;
@@ -91,20 +101,20 @@
   core::List<core::int> local1g = <core::int>[inf::field7];
   core::List<core::int?> local1h = <core::int?>[inf::field8];
   core::List<core::Null?> local1i = <core::Null?>[null];
-  core::Set<inf::C<dynamic>?> local2a = let final core::Set<inf::C<dynamic>?> #t49 = col::LinkedHashSet::•<inf::C<dynamic>?>() in let final core::bool* #t50 = #t49.{core::Set::add}(inf::field1) in let final core::bool* #t51 = #t49.{core::Set::add}(null) in #t49;
-  core::Set<inf::C<dynamic>?> local2b = let final core::Set<inf::C<dynamic>?> #t52 = col::LinkedHashSet::•<inf::C<dynamic>?>() in let final core::bool* #t53 = #t52.{core::Set::add}(inf::field2) in let final core::bool* #t54 = #t52.{core::Set::add}(null) in #t52;
-  core::Set<inf::C<core::int>?> local2c = let final core::Set<inf::C<core::int>?> #t55 = col::LinkedHashSet::•<inf::C<core::int>?>() in let final core::bool* #t56 = #t55.{core::Set::add}(inf::field3) in let final core::bool* #t57 = #t55.{core::Set::add}(null) in #t55;
-  core::Set<inf::C<core::int>?> local2d = let final core::Set<inf::C<core::int>?> #t58 = col::LinkedHashSet::•<inf::C<core::int>?>() in let final core::bool* #t59 = #t58.{core::Set::add}(inf::field4) in let final core::bool* #t60 = #t58.{core::Set::add}(null) in #t58;
-  core::Set<inf::C<core::int?>?> local2e = let final core::Set<inf::C<core::int?>?> #t61 = col::LinkedHashSet::•<inf::C<core::int?>?>() in let final core::bool* #t62 = #t61.{core::Set::add}(inf::field5) in let final core::bool* #t63 = #t61.{core::Set::add}(null) in #t61;
-  core::Set<inf::C<core::int?>?> local2f = let final core::Set<inf::C<core::int?>?> #t64 = col::LinkedHashSet::•<inf::C<core::int?>?>() in let final core::bool* #t65 = #t64.{core::Set::add}(inf::field6) in let final core::bool* #t66 = #t64.{core::Set::add}(null) in #t64;
-  core::Set<core::int?> local2g = let final core::Set<core::int?> #t67 = col::LinkedHashSet::•<core::int?>() in let final core::bool* #t68 = #t67.{core::Set::add}(inf::field7) in let final core::bool* #t69 = #t67.{core::Set::add}(null) in #t67;
-  core::Set<core::int?> local2h = let final core::Set<core::int?> #t70 = col::LinkedHashSet::•<core::int?>() in let final core::bool* #t71 = #t70.{core::Set::add}(inf::field8) in let final core::bool* #t72 = #t70.{core::Set::add}(null) in #t70;
-  core::Set<inf::C<dynamic>?> local3a = let final core::Set<inf::C<dynamic>?> #t73 = col::LinkedHashSet::•<inf::C<dynamic>?>() in let final core::bool* #t74 = #t73.{core::Set::add}(null) in let final core::bool* #t75 = #t73.{core::Set::add}(inf::field1) in #t73;
-  core::Set<inf::C<dynamic>?> local3b = let final core::Set<inf::C<dynamic>?> #t76 = col::LinkedHashSet::•<inf::C<dynamic>?>() in let final core::bool* #t77 = #t76.{core::Set::add}(null) in let final core::bool* #t78 = #t76.{core::Set::add}(inf::field2) in #t76;
-  core::Set<inf::C<core::int>?> local3c = let final core::Set<inf::C<core::int>?> #t79 = col::LinkedHashSet::•<inf::C<core::int>?>() in let final core::bool* #t80 = #t79.{core::Set::add}(null) in let final core::bool* #t81 = #t79.{core::Set::add}(inf::field3) in #t79;
-  core::Set<inf::C<core::int>?> local3d = let final core::Set<inf::C<core::int>?> #t82 = col::LinkedHashSet::•<inf::C<core::int>?>() in let final core::bool* #t83 = #t82.{core::Set::add}(null) in let final core::bool* #t84 = #t82.{core::Set::add}(inf::field4) in #t82;
-  core::Set<inf::C<core::int?>?> local3e = let final core::Set<inf::C<core::int?>?> #t85 = col::LinkedHashSet::•<inf::C<core::int?>?>() in let final core::bool* #t86 = #t85.{core::Set::add}(null) in let final core::bool* #t87 = #t85.{core::Set::add}(inf::field5) in #t85;
-  core::Set<inf::C<core::int?>?> local3f = let final core::Set<inf::C<core::int?>?> #t88 = col::LinkedHashSet::•<inf::C<core::int?>?>() in let final core::bool* #t89 = #t88.{core::Set::add}(null) in let final core::bool* #t90 = #t88.{core::Set::add}(inf::field6) in #t88;
-  core::Set<core::int?> local3g = let final core::Set<core::int?> #t91 = col::LinkedHashSet::•<core::int?>() in let final core::bool* #t92 = #t91.{core::Set::add}(null) in let final core::bool* #t93 = #t91.{core::Set::add}(inf::field7) in #t91;
-  core::Set<core::int?> local3h = let final core::Set<core::int?> #t94 = col::LinkedHashSet::•<core::int?>() in let final core::bool* #t95 = #t94.{core::Set::add}(null) in let final core::bool* #t96 = #t94.{core::Set::add}(inf::field8) in #t94;
+  core::Set<inf::C<dynamic>?> local2a = let final core::Set<inf::C<dynamic>?> #t49 = col::LinkedHashSet::•<inf::C<dynamic>?>() in let final core::bool #t50 = #t49.{core::Set::add}(inf::field1) in let final core::bool #t51 = #t49.{core::Set::add}(null) in #t49;
+  core::Set<inf::C<dynamic>?> local2b = let final core::Set<inf::C<dynamic>?> #t52 = col::LinkedHashSet::•<inf::C<dynamic>?>() in let final core::bool #t53 = #t52.{core::Set::add}(inf::field2) in let final core::bool #t54 = #t52.{core::Set::add}(null) in #t52;
+  core::Set<inf::C<core::int>?> local2c = let final core::Set<inf::C<core::int>?> #t55 = col::LinkedHashSet::•<inf::C<core::int>?>() in let final core::bool #t56 = #t55.{core::Set::add}(inf::field3) in let final core::bool #t57 = #t55.{core::Set::add}(null) in #t55;
+  core::Set<inf::C<core::int>?> local2d = let final core::Set<inf::C<core::int>?> #t58 = col::LinkedHashSet::•<inf::C<core::int>?>() in let final core::bool #t59 = #t58.{core::Set::add}(inf::field4) in let final core::bool #t60 = #t58.{core::Set::add}(null) in #t58;
+  core::Set<inf::C<core::int?>?> local2e = let final core::Set<inf::C<core::int?>?> #t61 = col::LinkedHashSet::•<inf::C<core::int?>?>() in let final core::bool #t62 = #t61.{core::Set::add}(inf::field5) in let final core::bool #t63 = #t61.{core::Set::add}(null) in #t61;
+  core::Set<inf::C<core::int?>?> local2f = let final core::Set<inf::C<core::int?>?> #t64 = col::LinkedHashSet::•<inf::C<core::int?>?>() in let final core::bool #t65 = #t64.{core::Set::add}(inf::field6) in let final core::bool #t66 = #t64.{core::Set::add}(null) in #t64;
+  core::Set<core::int?> local2g = let final core::Set<core::int?> #t67 = col::LinkedHashSet::•<core::int?>() in let final core::bool #t68 = #t67.{core::Set::add}(inf::field7) in let final core::bool #t69 = #t67.{core::Set::add}(null) in #t67;
+  core::Set<core::int?> local2h = let final core::Set<core::int?> #t70 = col::LinkedHashSet::•<core::int?>() in let final core::bool #t71 = #t70.{core::Set::add}(inf::field8) in let final core::bool #t72 = #t70.{core::Set::add}(null) in #t70;
+  core::Set<inf::C<dynamic>?> local3a = let final core::Set<inf::C<dynamic>?> #t73 = col::LinkedHashSet::•<inf::C<dynamic>?>() in let final core::bool #t74 = #t73.{core::Set::add}(null) in let final core::bool #t75 = #t73.{core::Set::add}(inf::field1) in #t73;
+  core::Set<inf::C<dynamic>?> local3b = let final core::Set<inf::C<dynamic>?> #t76 = col::LinkedHashSet::•<inf::C<dynamic>?>() in let final core::bool #t77 = #t76.{core::Set::add}(null) in let final core::bool #t78 = #t76.{core::Set::add}(inf::field2) in #t76;
+  core::Set<inf::C<core::int>?> local3c = let final core::Set<inf::C<core::int>?> #t79 = col::LinkedHashSet::•<inf::C<core::int>?>() in let final core::bool #t80 = #t79.{core::Set::add}(null) in let final core::bool #t81 = #t79.{core::Set::add}(inf::field3) in #t79;
+  core::Set<inf::C<core::int>?> local3d = let final core::Set<inf::C<core::int>?> #t82 = col::LinkedHashSet::•<inf::C<core::int>?>() in let final core::bool #t83 = #t82.{core::Set::add}(null) in let final core::bool #t84 = #t82.{core::Set::add}(inf::field4) in #t82;
+  core::Set<inf::C<core::int?>?> local3e = let final core::Set<inf::C<core::int?>?> #t85 = col::LinkedHashSet::•<inf::C<core::int?>?>() in let final core::bool #t86 = #t85.{core::Set::add}(null) in let final core::bool #t87 = #t85.{core::Set::add}(inf::field5) in #t85;
+  core::Set<inf::C<core::int?>?> local3f = let final core::Set<inf::C<core::int?>?> #t88 = col::LinkedHashSet::•<inf::C<core::int?>?>() in let final core::bool #t89 = #t88.{core::Set::add}(null) in let final core::bool #t90 = #t88.{core::Set::add}(inf::field6) in #t88;
+  core::Set<core::int?> local3g = let final core::Set<core::int?> #t91 = col::LinkedHashSet::•<core::int?>() in let final core::bool #t92 = #t91.{core::Set::add}(null) in let final core::bool #t93 = #t91.{core::Set::add}(inf::field7) in #t91;
+  core::Set<core::int?> local3h = let final core::Set<core::int?> #t94 = col::LinkedHashSet::•<core::int?>() in let final core::bool #t95 = #t94.{core::Set::add}(null) in let final core::bool #t96 = #t94.{core::Set::add}(inf::field8) in #t94;
 }
diff --git a/pkg/front_end/testcases/nnbd/infer_constraints_from_opt_in.dart.weak.expect b/pkg/front_end/testcases/nnbd/infer_constraints_from_opt_in.dart.weak.expect
index 2ab45fe..e98a6278 100644
--- a/pkg/front_end/testcases/nnbd/infer_constraints_from_opt_in.dart.weak.expect
+++ b/pkg/front_end/testcases/nnbd/infer_constraints_from_opt_in.dart.weak.expect
@@ -13,6 +13,16 @@
   method baz(inf::B* b) → dynamic {
     b.{inf::B::foo}(b.{inf::B::bar}<core::List<core::int*>*>());
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   core::List<dynamic>* local0 = <dynamic>[];
diff --git a/pkg/front_end/testcases/nnbd/infer_constraints_from_opt_in.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/infer_constraints_from_opt_in.dart.weak.transformed.expect
index 755f2c9..240e8dc 100644
--- a/pkg/front_end/testcases/nnbd/infer_constraints_from_opt_in.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/infer_constraints_from_opt_in.dart.weak.transformed.expect
@@ -13,6 +13,16 @@
   method baz(inf::B* b) → dynamic {
     b.{inf::B::foo}(b.{inf::B::bar}<core::List<core::int*>*>());
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   core::List<dynamic>* local0 = <dynamic>[];
@@ -25,22 +35,22 @@
   core::List<core::int*>* local1g = <core::int*>[inf::field7];
   core::List<core::int*>* local1h = <core::int*>[inf::field8];
   core::List<core::Null?>* local1i = <core::Null?>[null];
-  core::Set<inf::C<dynamic>*>* local2a = let final core::Set<inf::C<dynamic>*>* #t1 = col::LinkedHashSet::•<inf::C<dynamic>*>() in let final core::bool* #t2 = #t1.{core::Set::add}(inf::field1) in let final core::bool* #t3 = #t1.{core::Set::add}(null) in #t1;
-  core::Set<inf::C<dynamic>*>* local2b = let final core::Set<inf::C<dynamic>*>* #t4 = col::LinkedHashSet::•<inf::C<dynamic>*>() in let final core::bool* #t5 = #t4.{core::Set::add}(inf::field2) in let final core::bool* #t6 = #t4.{core::Set::add}(null) in #t4;
-  core::Set<inf::C<core::int*>*>* local2c = let final core::Set<inf::C<core::int*>*>* #t7 = col::LinkedHashSet::•<inf::C<core::int*>*>() in let final core::bool* #t8 = #t7.{core::Set::add}(inf::field3) in let final core::bool* #t9 = #t7.{core::Set::add}(null) in #t7;
-  core::Set<inf::C<core::int*>*>* local2d = let final core::Set<inf::C<core::int*>*>* #t10 = col::LinkedHashSet::•<inf::C<core::int*>*>() in let final core::bool* #t11 = #t10.{core::Set::add}(inf::field4) in let final core::bool* #t12 = #t10.{core::Set::add}(null) in #t10;
-  core::Set<inf::C<core::int*>*>* local2e = let final core::Set<inf::C<core::int*>*>* #t13 = col::LinkedHashSet::•<inf::C<core::int*>*>() in let final core::bool* #t14 = #t13.{core::Set::add}(inf::field5) in let final core::bool* #t15 = #t13.{core::Set::add}(null) in #t13;
-  core::Set<inf::C<core::int*>*>* local2f = let final core::Set<inf::C<core::int*>*>* #t16 = col::LinkedHashSet::•<inf::C<core::int*>*>() in let final core::bool* #t17 = #t16.{core::Set::add}(inf::field6) in let final core::bool* #t18 = #t16.{core::Set::add}(null) in #t16;
-  core::Set<core::int*>* local2g = let final core::Set<core::int*>* #t19 = col::LinkedHashSet::•<core::int*>() in let final core::bool* #t20 = #t19.{core::Set::add}(inf::field7) in let final core::bool* #t21 = #t19.{core::Set::add}(null) in #t19;
-  core::Set<core::int*>* local2h = let final core::Set<core::int*>* #t22 = col::LinkedHashSet::•<core::int*>() in let final core::bool* #t23 = #t22.{core::Set::add}(inf::field8) in let final core::bool* #t24 = #t22.{core::Set::add}(null) in #t22;
-  core::Set<inf::C<dynamic>*>* local3a = let final core::Set<inf::C<dynamic>*>* #t25 = col::LinkedHashSet::•<inf::C<dynamic>*>() in let final core::bool* #t26 = #t25.{core::Set::add}(null) in let final core::bool* #t27 = #t25.{core::Set::add}(inf::field1) in #t25;
-  core::Set<inf::C<dynamic>*>* local3b = let final core::Set<inf::C<dynamic>*>* #t28 = col::LinkedHashSet::•<inf::C<dynamic>*>() in let final core::bool* #t29 = #t28.{core::Set::add}(null) in let final core::bool* #t30 = #t28.{core::Set::add}(inf::field2) in #t28;
-  core::Set<inf::C<core::int*>*>* local3c = let final core::Set<inf::C<core::int*>*>* #t31 = col::LinkedHashSet::•<inf::C<core::int*>*>() in let final core::bool* #t32 = #t31.{core::Set::add}(null) in let final core::bool* #t33 = #t31.{core::Set::add}(inf::field3) in #t31;
-  core::Set<inf::C<core::int*>*>* local3d = let final core::Set<inf::C<core::int*>*>* #t34 = col::LinkedHashSet::•<inf::C<core::int*>*>() in let final core::bool* #t35 = #t34.{core::Set::add}(null) in let final core::bool* #t36 = #t34.{core::Set::add}(inf::field4) in #t34;
-  core::Set<inf::C<core::int*>*>* local3e = let final core::Set<inf::C<core::int*>*>* #t37 = col::LinkedHashSet::•<inf::C<core::int*>*>() in let final core::bool* #t38 = #t37.{core::Set::add}(null) in let final core::bool* #t39 = #t37.{core::Set::add}(inf::field5) in #t37;
-  core::Set<inf::C<core::int*>*>* local3f = let final core::Set<inf::C<core::int*>*>* #t40 = col::LinkedHashSet::•<inf::C<core::int*>*>() in let final core::bool* #t41 = #t40.{core::Set::add}(null) in let final core::bool* #t42 = #t40.{core::Set::add}(inf::field6) in #t40;
-  core::Set<core::int*>* local3g = let final core::Set<core::int*>* #t43 = col::LinkedHashSet::•<core::int*>() in let final core::bool* #t44 = #t43.{core::Set::add}(null) in let final core::bool* #t45 = #t43.{core::Set::add}(inf::field7) in #t43;
-  core::Set<core::int*>* local3h = let final core::Set<core::int*>* #t46 = col::LinkedHashSet::•<core::int*>() in let final core::bool* #t47 = #t46.{core::Set::add}(null) in let final core::bool* #t48 = #t46.{core::Set::add}(inf::field8) in #t46;
+  core::Set<inf::C<dynamic>*>* local2a = let final core::Set<inf::C<dynamic>*>* #t1 = col::LinkedHashSet::•<inf::C<dynamic>*>() in let final core::bool #t2 = #t1.{core::Set::add}(inf::field1) in let final core::bool #t3 = #t1.{core::Set::add}(null) in #t1;
+  core::Set<inf::C<dynamic>*>* local2b = let final core::Set<inf::C<dynamic>*>* #t4 = col::LinkedHashSet::•<inf::C<dynamic>*>() in let final core::bool #t5 = #t4.{core::Set::add}(inf::field2) in let final core::bool #t6 = #t4.{core::Set::add}(null) in #t4;
+  core::Set<inf::C<core::int*>*>* local2c = let final core::Set<inf::C<core::int*>*>* #t7 = col::LinkedHashSet::•<inf::C<core::int*>*>() in let final core::bool #t8 = #t7.{core::Set::add}(inf::field3) in let final core::bool #t9 = #t7.{core::Set::add}(null) in #t7;
+  core::Set<inf::C<core::int*>*>* local2d = let final core::Set<inf::C<core::int*>*>* #t10 = col::LinkedHashSet::•<inf::C<core::int*>*>() in let final core::bool #t11 = #t10.{core::Set::add}(inf::field4) in let final core::bool #t12 = #t10.{core::Set::add}(null) in #t10;
+  core::Set<inf::C<core::int*>*>* local2e = let final core::Set<inf::C<core::int*>*>* #t13 = col::LinkedHashSet::•<inf::C<core::int*>*>() in let final core::bool #t14 = #t13.{core::Set::add}(inf::field5) in let final core::bool #t15 = #t13.{core::Set::add}(null) in #t13;
+  core::Set<inf::C<core::int*>*>* local2f = let final core::Set<inf::C<core::int*>*>* #t16 = col::LinkedHashSet::•<inf::C<core::int*>*>() in let final core::bool #t17 = #t16.{core::Set::add}(inf::field6) in let final core::bool #t18 = #t16.{core::Set::add}(null) in #t16;
+  core::Set<core::int*>* local2g = let final core::Set<core::int*>* #t19 = col::LinkedHashSet::•<core::int*>() in let final core::bool #t20 = #t19.{core::Set::add}(inf::field7) in let final core::bool #t21 = #t19.{core::Set::add}(null) in #t19;
+  core::Set<core::int*>* local2h = let final core::Set<core::int*>* #t22 = col::LinkedHashSet::•<core::int*>() in let final core::bool #t23 = #t22.{core::Set::add}(inf::field8) in let final core::bool #t24 = #t22.{core::Set::add}(null) in #t22;
+  core::Set<inf::C<dynamic>*>* local3a = let final core::Set<inf::C<dynamic>*>* #t25 = col::LinkedHashSet::•<inf::C<dynamic>*>() in let final core::bool #t26 = #t25.{core::Set::add}(null) in let final core::bool #t27 = #t25.{core::Set::add}(inf::field1) in #t25;
+  core::Set<inf::C<dynamic>*>* local3b = let final core::Set<inf::C<dynamic>*>* #t28 = col::LinkedHashSet::•<inf::C<dynamic>*>() in let final core::bool #t29 = #t28.{core::Set::add}(null) in let final core::bool #t30 = #t28.{core::Set::add}(inf::field2) in #t28;
+  core::Set<inf::C<core::int*>*>* local3c = let final core::Set<inf::C<core::int*>*>* #t31 = col::LinkedHashSet::•<inf::C<core::int*>*>() in let final core::bool #t32 = #t31.{core::Set::add}(null) in let final core::bool #t33 = #t31.{core::Set::add}(inf::field3) in #t31;
+  core::Set<inf::C<core::int*>*>* local3d = let final core::Set<inf::C<core::int*>*>* #t34 = col::LinkedHashSet::•<inf::C<core::int*>*>() in let final core::bool #t35 = #t34.{core::Set::add}(null) in let final core::bool #t36 = #t34.{core::Set::add}(inf::field4) in #t34;
+  core::Set<inf::C<core::int*>*>* local3e = let final core::Set<inf::C<core::int*>*>* #t37 = col::LinkedHashSet::•<inf::C<core::int*>*>() in let final core::bool #t38 = #t37.{core::Set::add}(null) in let final core::bool #t39 = #t37.{core::Set::add}(inf::field5) in #t37;
+  core::Set<inf::C<core::int*>*>* local3f = let final core::Set<inf::C<core::int*>*>* #t40 = col::LinkedHashSet::•<inf::C<core::int*>*>() in let final core::bool #t41 = #t40.{core::Set::add}(null) in let final core::bool #t42 = #t40.{core::Set::add}(inf::field6) in #t40;
+  core::Set<core::int*>* local3g = let final core::Set<core::int*>* #t43 = col::LinkedHashSet::•<core::int*>() in let final core::bool #t44 = #t43.{core::Set::add}(null) in let final core::bool #t45 = #t43.{core::Set::add}(inf::field7) in #t43;
+  core::Set<core::int*>* local3h = let final core::Set<core::int*>* #t46 = col::LinkedHashSet::•<core::int*>() in let final core::bool #t47 = #t46.{core::Set::add}(null) in let final core::bool #t48 = #t46.{core::Set::add}(inf::field8) in #t46;
 }
 
 library /*isNonNullableByDefault*/;
@@ -91,20 +101,20 @@
   core::List<core::int> local1g = <core::int>[inf::field7];
   core::List<core::int?> local1h = <core::int?>[inf::field8];
   core::List<core::Null?> local1i = <core::Null?>[null];
-  core::Set<inf::C<dynamic>?> local2a = let final core::Set<inf::C<dynamic>?> #t49 = col::LinkedHashSet::•<inf::C<dynamic>?>() in let final core::bool* #t50 = #t49.{core::Set::add}(inf::field1) in let final core::bool* #t51 = #t49.{core::Set::add}(null) in #t49;
-  core::Set<inf::C<dynamic>?> local2b = let final core::Set<inf::C<dynamic>?> #t52 = col::LinkedHashSet::•<inf::C<dynamic>?>() in let final core::bool* #t53 = #t52.{core::Set::add}(inf::field2) in let final core::bool* #t54 = #t52.{core::Set::add}(null) in #t52;
-  core::Set<inf::C<core::int>?> local2c = let final core::Set<inf::C<core::int>?> #t55 = col::LinkedHashSet::•<inf::C<core::int>?>() in let final core::bool* #t56 = #t55.{core::Set::add}(inf::field3) in let final core::bool* #t57 = #t55.{core::Set::add}(null) in #t55;
-  core::Set<inf::C<core::int>?> local2d = let final core::Set<inf::C<core::int>?> #t58 = col::LinkedHashSet::•<inf::C<core::int>?>() in let final core::bool* #t59 = #t58.{core::Set::add}(inf::field4) in let final core::bool* #t60 = #t58.{core::Set::add}(null) in #t58;
-  core::Set<inf::C<core::int?>?> local2e = let final core::Set<inf::C<core::int?>?> #t61 = col::LinkedHashSet::•<inf::C<core::int?>?>() in let final core::bool* #t62 = #t61.{core::Set::add}(inf::field5) in let final core::bool* #t63 = #t61.{core::Set::add}(null) in #t61;
-  core::Set<inf::C<core::int?>?> local2f = let final core::Set<inf::C<core::int?>?> #t64 = col::LinkedHashSet::•<inf::C<core::int?>?>() in let final core::bool* #t65 = #t64.{core::Set::add}(inf::field6) in let final core::bool* #t66 = #t64.{core::Set::add}(null) in #t64;
-  core::Set<core::int?> local2g = let final core::Set<core::int?> #t67 = col::LinkedHashSet::•<core::int?>() in let final core::bool* #t68 = #t67.{core::Set::add}(inf::field7) in let final core::bool* #t69 = #t67.{core::Set::add}(null) in #t67;
-  core::Set<core::int?> local2h = let final core::Set<core::int?> #t70 = col::LinkedHashSet::•<core::int?>() in let final core::bool* #t71 = #t70.{core::Set::add}(inf::field8) in let final core::bool* #t72 = #t70.{core::Set::add}(null) in #t70;
-  core::Set<inf::C<dynamic>?> local3a = let final core::Set<inf::C<dynamic>?> #t73 = col::LinkedHashSet::•<inf::C<dynamic>?>() in let final core::bool* #t74 = #t73.{core::Set::add}(null) in let final core::bool* #t75 = #t73.{core::Set::add}(inf::field1) in #t73;
-  core::Set<inf::C<dynamic>?> local3b = let final core::Set<inf::C<dynamic>?> #t76 = col::LinkedHashSet::•<inf::C<dynamic>?>() in let final core::bool* #t77 = #t76.{core::Set::add}(null) in let final core::bool* #t78 = #t76.{core::Set::add}(inf::field2) in #t76;
-  core::Set<inf::C<core::int>?> local3c = let final core::Set<inf::C<core::int>?> #t79 = col::LinkedHashSet::•<inf::C<core::int>?>() in let final core::bool* #t80 = #t79.{core::Set::add}(null) in let final core::bool* #t81 = #t79.{core::Set::add}(inf::field3) in #t79;
-  core::Set<inf::C<core::int>?> local3d = let final core::Set<inf::C<core::int>?> #t82 = col::LinkedHashSet::•<inf::C<core::int>?>() in let final core::bool* #t83 = #t82.{core::Set::add}(null) in let final core::bool* #t84 = #t82.{core::Set::add}(inf::field4) in #t82;
-  core::Set<inf::C<core::int?>?> local3e = let final core::Set<inf::C<core::int?>?> #t85 = col::LinkedHashSet::•<inf::C<core::int?>?>() in let final core::bool* #t86 = #t85.{core::Set::add}(null) in let final core::bool* #t87 = #t85.{core::Set::add}(inf::field5) in #t85;
-  core::Set<inf::C<core::int?>?> local3f = let final core::Set<inf::C<core::int?>?> #t88 = col::LinkedHashSet::•<inf::C<core::int?>?>() in let final core::bool* #t89 = #t88.{core::Set::add}(null) in let final core::bool* #t90 = #t88.{core::Set::add}(inf::field6) in #t88;
-  core::Set<core::int?> local3g = let final core::Set<core::int?> #t91 = col::LinkedHashSet::•<core::int?>() in let final core::bool* #t92 = #t91.{core::Set::add}(null) in let final core::bool* #t93 = #t91.{core::Set::add}(inf::field7) in #t91;
-  core::Set<core::int?> local3h = let final core::Set<core::int?> #t94 = col::LinkedHashSet::•<core::int?>() in let final core::bool* #t95 = #t94.{core::Set::add}(null) in let final core::bool* #t96 = #t94.{core::Set::add}(inf::field8) in #t94;
+  core::Set<inf::C<dynamic>?> local2a = let final core::Set<inf::C<dynamic>?> #t49 = col::LinkedHashSet::•<inf::C<dynamic>?>() in let final core::bool #t50 = #t49.{core::Set::add}(inf::field1) in let final core::bool #t51 = #t49.{core::Set::add}(null) in #t49;
+  core::Set<inf::C<dynamic>?> local2b = let final core::Set<inf::C<dynamic>?> #t52 = col::LinkedHashSet::•<inf::C<dynamic>?>() in let final core::bool #t53 = #t52.{core::Set::add}(inf::field2) in let final core::bool #t54 = #t52.{core::Set::add}(null) in #t52;
+  core::Set<inf::C<core::int>?> local2c = let final core::Set<inf::C<core::int>?> #t55 = col::LinkedHashSet::•<inf::C<core::int>?>() in let final core::bool #t56 = #t55.{core::Set::add}(inf::field3) in let final core::bool #t57 = #t55.{core::Set::add}(null) in #t55;
+  core::Set<inf::C<core::int>?> local2d = let final core::Set<inf::C<core::int>?> #t58 = col::LinkedHashSet::•<inf::C<core::int>?>() in let final core::bool #t59 = #t58.{core::Set::add}(inf::field4) in let final core::bool #t60 = #t58.{core::Set::add}(null) in #t58;
+  core::Set<inf::C<core::int?>?> local2e = let final core::Set<inf::C<core::int?>?> #t61 = col::LinkedHashSet::•<inf::C<core::int?>?>() in let final core::bool #t62 = #t61.{core::Set::add}(inf::field5) in let final core::bool #t63 = #t61.{core::Set::add}(null) in #t61;
+  core::Set<inf::C<core::int?>?> local2f = let final core::Set<inf::C<core::int?>?> #t64 = col::LinkedHashSet::•<inf::C<core::int?>?>() in let final core::bool #t65 = #t64.{core::Set::add}(inf::field6) in let final core::bool #t66 = #t64.{core::Set::add}(null) in #t64;
+  core::Set<core::int?> local2g = let final core::Set<core::int?> #t67 = col::LinkedHashSet::•<core::int?>() in let final core::bool #t68 = #t67.{core::Set::add}(inf::field7) in let final core::bool #t69 = #t67.{core::Set::add}(null) in #t67;
+  core::Set<core::int?> local2h = let final core::Set<core::int?> #t70 = col::LinkedHashSet::•<core::int?>() in let final core::bool #t71 = #t70.{core::Set::add}(inf::field8) in let final core::bool #t72 = #t70.{core::Set::add}(null) in #t70;
+  core::Set<inf::C<dynamic>?> local3a = let final core::Set<inf::C<dynamic>?> #t73 = col::LinkedHashSet::•<inf::C<dynamic>?>() in let final core::bool #t74 = #t73.{core::Set::add}(null) in let final core::bool #t75 = #t73.{core::Set::add}(inf::field1) in #t73;
+  core::Set<inf::C<dynamic>?> local3b = let final core::Set<inf::C<dynamic>?> #t76 = col::LinkedHashSet::•<inf::C<dynamic>?>() in let final core::bool #t77 = #t76.{core::Set::add}(null) in let final core::bool #t78 = #t76.{core::Set::add}(inf::field2) in #t76;
+  core::Set<inf::C<core::int>?> local3c = let final core::Set<inf::C<core::int>?> #t79 = col::LinkedHashSet::•<inf::C<core::int>?>() in let final core::bool #t80 = #t79.{core::Set::add}(null) in let final core::bool #t81 = #t79.{core::Set::add}(inf::field3) in #t79;
+  core::Set<inf::C<core::int>?> local3d = let final core::Set<inf::C<core::int>?> #t82 = col::LinkedHashSet::•<inf::C<core::int>?>() in let final core::bool #t83 = #t82.{core::Set::add}(null) in let final core::bool #t84 = #t82.{core::Set::add}(inf::field4) in #t82;
+  core::Set<inf::C<core::int?>?> local3e = let final core::Set<inf::C<core::int?>?> #t85 = col::LinkedHashSet::•<inf::C<core::int?>?>() in let final core::bool #t86 = #t85.{core::Set::add}(null) in let final core::bool #t87 = #t85.{core::Set::add}(inf::field5) in #t85;
+  core::Set<inf::C<core::int?>?> local3f = let final core::Set<inf::C<core::int?>?> #t88 = col::LinkedHashSet::•<inf::C<core::int?>?>() in let final core::bool #t89 = #t88.{core::Set::add}(null) in let final core::bool #t90 = #t88.{core::Set::add}(inf::field6) in #t88;
+  core::Set<core::int?> local3g = let final core::Set<core::int?> #t91 = col::LinkedHashSet::•<core::int?>() in let final core::bool #t92 = #t91.{core::Set::add}(null) in let final core::bool #t93 = #t91.{core::Set::add}(inf::field7) in #t91;
+  core::Set<core::int?> local3h = let final core::Set<core::int?> #t94 = col::LinkedHashSet::•<core::int?>() in let final core::bool #t95 = #t94.{core::Set::add}(null) in let final core::bool #t96 = #t94.{core::Set::add}(inf::field8) in #t94;
 }
diff --git a/pkg/front_end/testcases/nnbd/infer_from_opt_out.dart.outline.expect b/pkg/front_end/testcases/nnbd/infer_from_opt_out.dart.outline.expect
index ffc3253..0264131e 100644
--- a/pkg/front_end/testcases/nnbd/infer_from_opt_out.dart.outline.expect
+++ b/pkg/front_end/testcases/nnbd/infer_from_opt_out.dart.outline.expect
@@ -16,6 +16,16 @@
 class Foo extends core::Object {
   synthetic constructor •() → self2::Foo*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method createFoo() → self2::Foo*
   ;
diff --git a/pkg/front_end/testcases/nnbd/infer_from_opt_out.dart.strong.expect b/pkg/front_end/testcases/nnbd/infer_from_opt_out.dart.strong.expect
index 99987735..e562600 100644
--- a/pkg/front_end/testcases/nnbd/infer_from_opt_out.dart.strong.expect
+++ b/pkg/front_end/testcases/nnbd/infer_from_opt_out.dart.strong.expect
@@ -25,6 +25,16 @@
   synthetic constructor •() → inf::Foo*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method createFoo() → inf::Foo*
   return new inf::Foo::•();
diff --git a/pkg/front_end/testcases/nnbd/infer_from_opt_out.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/infer_from_opt_out.dart.strong.transformed.expect
index 99987735..e562600 100644
--- a/pkg/front_end/testcases/nnbd/infer_from_opt_out.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/infer_from_opt_out.dart.strong.transformed.expect
@@ -25,6 +25,16 @@
   synthetic constructor •() → inf::Foo*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method createFoo() → inf::Foo*
   return new inf::Foo::•();
diff --git a/pkg/front_end/testcases/nnbd/infer_from_opt_out.dart.weak.expect b/pkg/front_end/testcases/nnbd/infer_from_opt_out.dart.weak.expect
index 99987735..e562600 100644
--- a/pkg/front_end/testcases/nnbd/infer_from_opt_out.dart.weak.expect
+++ b/pkg/front_end/testcases/nnbd/infer_from_opt_out.dart.weak.expect
@@ -25,6 +25,16 @@
   synthetic constructor •() → inf::Foo*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method createFoo() → inf::Foo*
   return new inf::Foo::•();
diff --git a/pkg/front_end/testcases/nnbd/infer_from_opt_out.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/infer_from_opt_out.dart.weak.transformed.expect
index 99987735..e562600 100644
--- a/pkg/front_end/testcases/nnbd/infer_from_opt_out.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/infer_from_opt_out.dart.weak.transformed.expect
@@ -25,6 +25,16 @@
   synthetic constructor •() → inf::Foo*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method createFoo() → inf::Foo*
   return new inf::Foo::•();
diff --git a/pkg/front_end/testcases/nnbd/inheritance_from_opt_in.dart.outline.expect b/pkg/front_end/testcases/nnbd/inheritance_from_opt_in.dart.outline.expect
index 765b560..d86d906 100644
--- a/pkg/front_end/testcases/nnbd/inheritance_from_opt_in.dart.outline.expect
+++ b/pkg/front_end/testcases/nnbd/inheritance_from_opt_in.dart.outline.expect
@@ -28,46 +28,156 @@
 class LegacyClass1 extends inh::Class1 {
   synthetic constructor •() → self::LegacyClass1*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class LegacyClass2<T extends core::Object* = dynamic> extends inh::Class2<self::LegacyClass2::T*> {
   synthetic constructor •() → self::LegacyClass2<self::LegacyClass2::T*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class LegacyClass3a<T extends core::Object* = dynamic> extends inh::Class3<self::LegacyClass3a::T*> {
   synthetic constructor •() → self::LegacyClass3a<self::LegacyClass3a::T*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class LegacyClass3b<T extends core::Object* = dynamic> extends inh::Class3<self::LegacyClass3b::T*> implements inh::GenericInterface<self::LegacyClass3b::T*> {
   synthetic constructor •() → self::LegacyClass3b<self::LegacyClass3b::T*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class LegacyClass4a extends inh::Class4a {
   synthetic constructor •() → self::LegacyClass4a*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class LegacyClass4b extends core::Object implements inh::GenericInterface<core::num*> {
   synthetic constructor •() → self::LegacyClass4b*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class LegacyClass4c extends core::Object implements inh::GenericInterface<core::num?> {
   synthetic constructor •() → self::LegacyClass4c*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class LegacyClass4d extends inh::Class4a implements inh::GenericInterface<core::num*> {
   synthetic constructor •() → self::LegacyClass4d*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class LegacyClass4e extends core::Object implements inh::Class4a, inh::Class4b {
   synthetic constructor •() → self::LegacyClass4e*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class LegacyClass5 extends inh::Class5 implements inh::GenericInterface<core::Object*> {
   synthetic constructor •() → self::LegacyClass5*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class LegacyClass6a<T extends core::Object* = dynamic> extends inh::Class3<self::LegacyClass6a::T*> implements inh::GenericSubInterface<self::LegacyClass6a::T*> {
   synthetic constructor •() → self::LegacyClass6a<self::LegacyClass6a::T*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class LegacyClass6b<T extends core::Object* = dynamic> extends self::LegacyClass3a<self::LegacyClass6b::T*> implements inh::GenericSubInterface<self::LegacyClass6b::T*> {
   synthetic constructor •() → self::LegacyClass6b<self::LegacyClass6b::T*>*
diff --git a/pkg/front_end/testcases/nnbd/inheritance_from_opt_in.dart.strong.expect b/pkg/front_end/testcases/nnbd/inheritance_from_opt_in.dart.strong.expect
index 24eb602..6b6a775 100644
--- a/pkg/front_end/testcases/nnbd/inheritance_from_opt_in.dart.strong.expect
+++ b/pkg/front_end/testcases/nnbd/inheritance_from_opt_in.dart.strong.expect
@@ -29,56 +29,166 @@
   synthetic constructor •() → self::LegacyClass1*
     : super inh::Class1::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class LegacyClass2<T extends core::Object* = dynamic> extends inh::Class2<self::LegacyClass2::T*> {
   synthetic constructor •() → self::LegacyClass2<self::LegacyClass2::T*>*
     : super inh::Class2::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class LegacyClass3a<T extends core::Object* = dynamic> extends inh::Class3<self::LegacyClass3a::T*> {
   synthetic constructor •() → self::LegacyClass3a<self::LegacyClass3a::T*>*
     : super inh::Class3::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class LegacyClass3b<T extends core::Object* = dynamic> extends inh::Class3<self::LegacyClass3b::T*> implements inh::GenericInterface<self::LegacyClass3b::T*> {
   synthetic constructor •() → self::LegacyClass3b<self::LegacyClass3b::T*>*
     : super inh::Class3::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class LegacyClass4a extends inh::Class4a {
   synthetic constructor •() → self::LegacyClass4a*
     : super inh::Class4a::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class LegacyClass4b extends core::Object implements inh::GenericInterface<core::num*> {
   synthetic constructor •() → self::LegacyClass4b*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class LegacyClass4c extends core::Object implements inh::GenericInterface<core::num?> {
   synthetic constructor •() → self::LegacyClass4c*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class LegacyClass4d extends inh::Class4a implements inh::GenericInterface<core::num*> {
   synthetic constructor •() → self::LegacyClass4d*
     : super inh::Class4a::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class LegacyClass4e extends core::Object implements inh::Class4a, inh::Class4b {
   synthetic constructor •() → self::LegacyClass4e*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class LegacyClass5 extends inh::Class5 implements inh::GenericInterface<core::Object*> {
   synthetic constructor •() → self::LegacyClass5*
     : super inh::Class5::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class LegacyClass6a<T extends core::Object* = dynamic> extends inh::Class3<self::LegacyClass6a::T*> implements inh::GenericSubInterface<self::LegacyClass6a::T*> {
   synthetic constructor •() → self::LegacyClass6a<self::LegacyClass6a::T*>*
     : super inh::Class3::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class LegacyClass6b<T extends core::Object* = dynamic> extends self::LegacyClass3a<self::LegacyClass6b::T*> implements inh::GenericSubInterface<self::LegacyClass6b::T*> {
   synthetic constructor •() → self::LegacyClass6b<self::LegacyClass6b::T*>*
diff --git a/pkg/front_end/testcases/nnbd/inheritance_from_opt_in.dart.weak.expect b/pkg/front_end/testcases/nnbd/inheritance_from_opt_in.dart.weak.expect
index 24eb602..6b6a775 100644
--- a/pkg/front_end/testcases/nnbd/inheritance_from_opt_in.dart.weak.expect
+++ b/pkg/front_end/testcases/nnbd/inheritance_from_opt_in.dart.weak.expect
@@ -29,56 +29,166 @@
   synthetic constructor •() → self::LegacyClass1*
     : super inh::Class1::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class LegacyClass2<T extends core::Object* = dynamic> extends inh::Class2<self::LegacyClass2::T*> {
   synthetic constructor •() → self::LegacyClass2<self::LegacyClass2::T*>*
     : super inh::Class2::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class LegacyClass3a<T extends core::Object* = dynamic> extends inh::Class3<self::LegacyClass3a::T*> {
   synthetic constructor •() → self::LegacyClass3a<self::LegacyClass3a::T*>*
     : super inh::Class3::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class LegacyClass3b<T extends core::Object* = dynamic> extends inh::Class3<self::LegacyClass3b::T*> implements inh::GenericInterface<self::LegacyClass3b::T*> {
   synthetic constructor •() → self::LegacyClass3b<self::LegacyClass3b::T*>*
     : super inh::Class3::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class LegacyClass4a extends inh::Class4a {
   synthetic constructor •() → self::LegacyClass4a*
     : super inh::Class4a::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class LegacyClass4b extends core::Object implements inh::GenericInterface<core::num*> {
   synthetic constructor •() → self::LegacyClass4b*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class LegacyClass4c extends core::Object implements inh::GenericInterface<core::num?> {
   synthetic constructor •() → self::LegacyClass4c*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class LegacyClass4d extends inh::Class4a implements inh::GenericInterface<core::num*> {
   synthetic constructor •() → self::LegacyClass4d*
     : super inh::Class4a::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class LegacyClass4e extends core::Object implements inh::Class4a, inh::Class4b {
   synthetic constructor •() → self::LegacyClass4e*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class LegacyClass5 extends inh::Class5 implements inh::GenericInterface<core::Object*> {
   synthetic constructor •() → self::LegacyClass5*
     : super inh::Class5::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class LegacyClass6a<T extends core::Object* = dynamic> extends inh::Class3<self::LegacyClass6a::T*> implements inh::GenericSubInterface<self::LegacyClass6a::T*> {
   synthetic constructor •() → self::LegacyClass6a<self::LegacyClass6a::T*>*
     : super inh::Class3::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class LegacyClass6b<T extends core::Object* = dynamic> extends self::LegacyClass3a<self::LegacyClass6b::T*> implements inh::GenericSubInterface<self::LegacyClass6b::T*> {
   synthetic constructor •() → self::LegacyClass6b<self::LegacyClass6b::T*>*
diff --git a/pkg/front_end/testcases/nnbd/inheritance_from_opt_out.dart.outline.expect b/pkg/front_end/testcases/nnbd/inheritance_from_opt_out.dart.outline.expect
index 0871a1c..42e7bc9 100644
--- a/pkg/front_end/testcases/nnbd/inheritance_from_opt_out.dart.outline.expect
+++ b/pkg/front_end/testcases/nnbd/inheritance_from_opt_out.dart.outline.expect
@@ -28,10 +28,12 @@
 class Class4b extends core::Object implements inh::GenericInterface<core::num> {
   synthetic constructor •() → self::Class4b
     ;
+  abstract forwarding-stub operator ==(dynamic other) → core::bool*;
 }
 class Class4c extends core::Object implements inh::GenericInterface<core::num?> {
   synthetic constructor •() → self::Class4c
     ;
+  abstract forwarding-stub operator ==(dynamic other) → core::bool*;
 }
 class Class4d extends inh::LegacyClass4 implements inh::GenericInterface<core::num> {
   synthetic constructor •() → self::Class4d
@@ -47,26 +49,86 @@
 abstract class GenericInterface<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → inh::GenericInterface<inh::GenericInterface::T*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class GenericSubInterface<T extends core::Object* = dynamic> extends core::Object implements inh::GenericInterface<inh::GenericSubInterface::T*> {
   synthetic constructor •() → inh::GenericSubInterface<inh::GenericSubInterface::T*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class LegacyClass1 extends core::Object {
   synthetic constructor •() → inh::LegacyClass1*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class LegacyClass2<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → inh::LegacyClass2<inh::LegacyClass2::T*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class LegacyClass3<T extends core::Object* = dynamic> extends core::Object implements inh::GenericInterface<inh::LegacyClass3::T*> {
   synthetic constructor •() → inh::LegacyClass3<inh::LegacyClass3::T*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class LegacyClass4 extends core::Object implements inh::GenericInterface<core::num*> {
   synthetic constructor •() → inh::LegacyClass4*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class LegacyClass5<T extends core::Object* = dynamic> extends inh::LegacyClass3<inh::LegacyClass5::T*> implements inh::GenericInterface<inh::LegacyClass5::T*> {
   synthetic constructor •() → inh::LegacyClass5<inh::LegacyClass5::T*>*
@@ -76,6 +138,16 @@
   const synthetic constructor •() → inh::_LegacyClass6&Object&LegacyClass3<inh::_LegacyClass6&Object&LegacyClass3::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class LegacyClass6<T extends core::Object* = dynamic> extends inh::_LegacyClass6&Object&LegacyClass3<inh::LegacyClass6::T*> implements inh::GenericInterface<inh::LegacyClass6::T*> {
   synthetic constructor •() → inh::LegacyClass6<inh::LegacyClass6::T*>*
@@ -89,6 +161,16 @@
   const synthetic constructor •() → inh::_LegacyClass8&Object&LegacyClass3<inh::_LegacyClass8&Object&LegacyClass3::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class LegacyClass8<T extends core::Object* = dynamic> extends inh::_LegacyClass8&Object&LegacyClass3<inh::LegacyClass8::T*> implements inh::GenericSubInterface<inh::LegacyClass8::T*> {
   synthetic constructor •() → inh::LegacyClass8<inh::LegacyClass8::T*>*
diff --git a/pkg/front_end/testcases/nnbd/inheritance_from_opt_out.dart.strong.expect b/pkg/front_end/testcases/nnbd/inheritance_from_opt_out.dart.strong.expect
index e7d6af8..3e37070 100644
--- a/pkg/front_end/testcases/nnbd/inheritance_from_opt_out.dart.strong.expect
+++ b/pkg/front_end/testcases/nnbd/inheritance_from_opt_out.dart.strong.expect
@@ -34,11 +34,13 @@
   synthetic constructor •() → self::Class4b
     : super core::Object::•()
     ;
+  abstract forwarding-stub operator ==(dynamic other) → core::bool*;
 }
 class Class4c extends core::Object implements inh::GenericInterface<core::num?> {
   synthetic constructor •() → self::Class4c
     : super core::Object::•()
     ;
+  abstract forwarding-stub operator ==(dynamic other) → core::bool*;
 }
 class Class4d extends inh::LegacyClass4 implements inh::GenericInterface<core::num> {
   synthetic constructor •() → self::Class4d
@@ -55,31 +57,91 @@
   synthetic constructor •() → inh::GenericInterface<inh::GenericInterface::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class GenericSubInterface<T extends core::Object* = dynamic> extends core::Object implements inh::GenericInterface<inh::GenericSubInterface::T*> {
   synthetic constructor •() → inh::GenericSubInterface<inh::GenericSubInterface::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class LegacyClass1 extends core::Object {
   synthetic constructor •() → inh::LegacyClass1*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class LegacyClass2<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → inh::LegacyClass2<inh::LegacyClass2::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class LegacyClass3<T extends core::Object* = dynamic> extends core::Object implements inh::GenericInterface<inh::LegacyClass3::T*> {
   synthetic constructor •() → inh::LegacyClass3<inh::LegacyClass3::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class LegacyClass4 extends core::Object implements inh::GenericInterface<core::num*> {
   synthetic constructor •() → inh::LegacyClass4*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class LegacyClass5<T extends core::Object* = dynamic> extends inh::LegacyClass3<inh::LegacyClass5::T*> implements inh::GenericInterface<inh::LegacyClass5::T*> {
   synthetic constructor •() → inh::LegacyClass5<inh::LegacyClass5::T*>*
@@ -90,6 +152,16 @@
   const synthetic constructor •() → inh::_LegacyClass6&Object&LegacyClass3<inh::_LegacyClass6&Object&LegacyClass3::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class LegacyClass6<T extends core::Object* = dynamic> extends inh::_LegacyClass6&Object&LegacyClass3<inh::LegacyClass6::T*> implements inh::GenericInterface<inh::LegacyClass6::T*> {
   synthetic constructor •() → inh::LegacyClass6<inh::LegacyClass6::T*>*
@@ -105,6 +177,16 @@
   const synthetic constructor •() → inh::_LegacyClass8&Object&LegacyClass3<inh::_LegacyClass8&Object&LegacyClass3::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class LegacyClass8<T extends core::Object* = dynamic> extends inh::_LegacyClass8&Object&LegacyClass3<inh::LegacyClass8::T*> implements inh::GenericSubInterface<inh::LegacyClass8::T*> {
   synthetic constructor •() → inh::LegacyClass8<inh::LegacyClass8::T*>*
diff --git a/pkg/front_end/testcases/nnbd/inheritance_from_opt_out.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/inheritance_from_opt_out.dart.strong.transformed.expect
index 4fdfac4..46bad42 100644
--- a/pkg/front_end/testcases/nnbd/inheritance_from_opt_out.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/inheritance_from_opt_out.dart.strong.transformed.expect
@@ -34,11 +34,13 @@
   synthetic constructor •() → self::Class4b
     : super core::Object::•()
     ;
+  abstract forwarding-stub operator ==(dynamic other) → core::bool*;
 }
 class Class4c extends core::Object implements inh::GenericInterface<core::num?> {
   synthetic constructor •() → self::Class4c
     : super core::Object::•()
     ;
+  abstract forwarding-stub operator ==(dynamic other) → core::bool*;
 }
 class Class4d extends inh::LegacyClass4 implements inh::GenericInterface<core::num> {
   synthetic constructor •() → self::Class4d
@@ -55,31 +57,91 @@
   synthetic constructor •() → inh::GenericInterface<inh::GenericInterface::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class GenericSubInterface<T extends core::Object* = dynamic> extends core::Object implements inh::GenericInterface<inh::GenericSubInterface::T*> {
   synthetic constructor •() → inh::GenericSubInterface<inh::GenericSubInterface::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class LegacyClass1 extends core::Object {
   synthetic constructor •() → inh::LegacyClass1*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class LegacyClass2<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → inh::LegacyClass2<inh::LegacyClass2::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class LegacyClass3<T extends core::Object* = dynamic> extends core::Object implements inh::GenericInterface<inh::LegacyClass3::T*> {
   synthetic constructor •() → inh::LegacyClass3<inh::LegacyClass3::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class LegacyClass4 extends core::Object implements inh::GenericInterface<core::num*> {
   synthetic constructor •() → inh::LegacyClass4*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class LegacyClass5<T extends core::Object* = dynamic> extends inh::LegacyClass3<inh::LegacyClass5::T*> implements inh::GenericInterface<inh::LegacyClass5::T*> {
   synthetic constructor •() → inh::LegacyClass5<inh::LegacyClass5::T*>*
@@ -90,6 +152,16 @@
   const synthetic constructor •() → inh::_LegacyClass6&Object&LegacyClass3<inh::_LegacyClass6&Object&LegacyClass3::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class LegacyClass6<T extends core::Object* = dynamic> extends inh::_LegacyClass6&Object&LegacyClass3<inh::LegacyClass6::T*> implements inh::GenericInterface<inh::LegacyClass6::T*> {
   synthetic constructor •() → inh::LegacyClass6<inh::LegacyClass6::T*>*
@@ -105,6 +177,16 @@
   const synthetic constructor •() → inh::_LegacyClass8&Object&LegacyClass3<inh::_LegacyClass8&Object&LegacyClass3::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class LegacyClass8<T extends core::Object* = dynamic> extends inh::_LegacyClass8&Object&LegacyClass3<inh::LegacyClass8::T*> implements inh::GenericSubInterface<inh::LegacyClass8::T*> {
   synthetic constructor •() → inh::LegacyClass8<inh::LegacyClass8::T*>*
diff --git a/pkg/front_end/testcases/nnbd/inheritance_from_opt_out.dart.weak.expect b/pkg/front_end/testcases/nnbd/inheritance_from_opt_out.dart.weak.expect
index e7d6af8..3e37070 100644
--- a/pkg/front_end/testcases/nnbd/inheritance_from_opt_out.dart.weak.expect
+++ b/pkg/front_end/testcases/nnbd/inheritance_from_opt_out.dart.weak.expect
@@ -34,11 +34,13 @@
   synthetic constructor •() → self::Class4b
     : super core::Object::•()
     ;
+  abstract forwarding-stub operator ==(dynamic other) → core::bool*;
 }
 class Class4c extends core::Object implements inh::GenericInterface<core::num?> {
   synthetic constructor •() → self::Class4c
     : super core::Object::•()
     ;
+  abstract forwarding-stub operator ==(dynamic other) → core::bool*;
 }
 class Class4d extends inh::LegacyClass4 implements inh::GenericInterface<core::num> {
   synthetic constructor •() → self::Class4d
@@ -55,31 +57,91 @@
   synthetic constructor •() → inh::GenericInterface<inh::GenericInterface::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class GenericSubInterface<T extends core::Object* = dynamic> extends core::Object implements inh::GenericInterface<inh::GenericSubInterface::T*> {
   synthetic constructor •() → inh::GenericSubInterface<inh::GenericSubInterface::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class LegacyClass1 extends core::Object {
   synthetic constructor •() → inh::LegacyClass1*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class LegacyClass2<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → inh::LegacyClass2<inh::LegacyClass2::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class LegacyClass3<T extends core::Object* = dynamic> extends core::Object implements inh::GenericInterface<inh::LegacyClass3::T*> {
   synthetic constructor •() → inh::LegacyClass3<inh::LegacyClass3::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class LegacyClass4 extends core::Object implements inh::GenericInterface<core::num*> {
   synthetic constructor •() → inh::LegacyClass4*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class LegacyClass5<T extends core::Object* = dynamic> extends inh::LegacyClass3<inh::LegacyClass5::T*> implements inh::GenericInterface<inh::LegacyClass5::T*> {
   synthetic constructor •() → inh::LegacyClass5<inh::LegacyClass5::T*>*
@@ -90,6 +152,16 @@
   const synthetic constructor •() → inh::_LegacyClass6&Object&LegacyClass3<inh::_LegacyClass6&Object&LegacyClass3::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class LegacyClass6<T extends core::Object* = dynamic> extends inh::_LegacyClass6&Object&LegacyClass3<inh::LegacyClass6::T*> implements inh::GenericInterface<inh::LegacyClass6::T*> {
   synthetic constructor •() → inh::LegacyClass6<inh::LegacyClass6::T*>*
@@ -105,6 +177,16 @@
   const synthetic constructor •() → inh::_LegacyClass8&Object&LegacyClass3<inh::_LegacyClass8&Object&LegacyClass3::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class LegacyClass8<T extends core::Object* = dynamic> extends inh::_LegacyClass8&Object&LegacyClass3<inh::LegacyClass8::T*> implements inh::GenericSubInterface<inh::LegacyClass8::T*> {
   synthetic constructor •() → inh::LegacyClass8<inh::LegacyClass8::T*>*
diff --git a/pkg/front_end/testcases/nnbd/inheritance_from_opt_out.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/inheritance_from_opt_out.dart.weak.transformed.expect
index 4fdfac4..46bad42 100644
--- a/pkg/front_end/testcases/nnbd/inheritance_from_opt_out.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/inheritance_from_opt_out.dart.weak.transformed.expect
@@ -34,11 +34,13 @@
   synthetic constructor •() → self::Class4b
     : super core::Object::•()
     ;
+  abstract forwarding-stub operator ==(dynamic other) → core::bool*;
 }
 class Class4c extends core::Object implements inh::GenericInterface<core::num?> {
   synthetic constructor •() → self::Class4c
     : super core::Object::•()
     ;
+  abstract forwarding-stub operator ==(dynamic other) → core::bool*;
 }
 class Class4d extends inh::LegacyClass4 implements inh::GenericInterface<core::num> {
   synthetic constructor •() → self::Class4d
@@ -55,31 +57,91 @@
   synthetic constructor •() → inh::GenericInterface<inh::GenericInterface::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class GenericSubInterface<T extends core::Object* = dynamic> extends core::Object implements inh::GenericInterface<inh::GenericSubInterface::T*> {
   synthetic constructor •() → inh::GenericSubInterface<inh::GenericSubInterface::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class LegacyClass1 extends core::Object {
   synthetic constructor •() → inh::LegacyClass1*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class LegacyClass2<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → inh::LegacyClass2<inh::LegacyClass2::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class LegacyClass3<T extends core::Object* = dynamic> extends core::Object implements inh::GenericInterface<inh::LegacyClass3::T*> {
   synthetic constructor •() → inh::LegacyClass3<inh::LegacyClass3::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class LegacyClass4 extends core::Object implements inh::GenericInterface<core::num*> {
   synthetic constructor •() → inh::LegacyClass4*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class LegacyClass5<T extends core::Object* = dynamic> extends inh::LegacyClass3<inh::LegacyClass5::T*> implements inh::GenericInterface<inh::LegacyClass5::T*> {
   synthetic constructor •() → inh::LegacyClass5<inh::LegacyClass5::T*>*
@@ -90,6 +152,16 @@
   const synthetic constructor •() → inh::_LegacyClass6&Object&LegacyClass3<inh::_LegacyClass6&Object&LegacyClass3::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class LegacyClass6<T extends core::Object* = dynamic> extends inh::_LegacyClass6&Object&LegacyClass3<inh::LegacyClass6::T*> implements inh::GenericInterface<inh::LegacyClass6::T*> {
   synthetic constructor •() → inh::LegacyClass6<inh::LegacyClass6::T*>*
@@ -105,6 +177,16 @@
   const synthetic constructor •() → inh::_LegacyClass8&Object&LegacyClass3<inh::_LegacyClass8&Object&LegacyClass3::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class LegacyClass8<T extends core::Object* = dynamic> extends inh::_LegacyClass8&Object&LegacyClass3<inh::LegacyClass8::T*> implements inh::GenericSubInterface<inh::LegacyClass8::T*> {
   synthetic constructor •() → inh::LegacyClass8<inh::LegacyClass8::T*>*
diff --git a/pkg/front_end/testcases/nnbd/issue40093.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/issue40093.dart.strong.transformed.expect
index d1038a3..f5314e4 100644
--- a/pkg/front_end/testcases/nnbd/issue40093.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/issue40093.dart.strong.transformed.expect
@@ -20,7 +20,7 @@
     core::print(i);
   }
   {
-    core::Iterator<core::int*> :sync-for-iterator = <core::int>[].{core::Iterable::iterator};
+    core::Iterator<core::int> :sync-for-iterator = <core::int>[].{core::Iterable::iterator};
     for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
       core::int i = :sync-for-iterator.{core::Iterator::current};
       {
diff --git a/pkg/front_end/testcases/nnbd/issue40093.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/issue40093.dart.weak.transformed.expect
index d1038a3..f5314e4 100644
--- a/pkg/front_end/testcases/nnbd/issue40093.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/issue40093.dart.weak.transformed.expect
@@ -20,7 +20,7 @@
     core::print(i);
   }
   {
-    core::Iterator<core::int*> :sync-for-iterator = <core::int>[].{core::Iterable::iterator};
+    core::Iterator<core::int> :sync-for-iterator = <core::int>[].{core::Iterable::iterator};
     for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
       core::int i = :sync-for-iterator.{core::Iterator::current};
       {
diff --git a/pkg/front_end/testcases/nnbd/issue40512/issue40512_lib.dart.outline.expect b/pkg/front_end/testcases/nnbd/issue40512/issue40512_lib.dart.outline.expect
index 82e41a4..b7d1e81 100644
--- a/pkg/front_end/testcases/nnbd/issue40512/issue40512_lib.dart.outline.expect
+++ b/pkg/front_end/testcases/nnbd/issue40512/issue40512_lib.dart.outline.expect
@@ -14,10 +14,12 @@
   const synthetic constructor •() → self::_C&Object&A&B*
     : super self::_C&Object&A::•()
     ;
+  abstract forwarding-stub method toString({core::String* s}) → core::String*;
 }
 class C extends self::_C&Object&A&B {
   synthetic constructor •() → self::C*
     ;
+  abstract forwarding-stub method toString({core::String* s}) → core::String*;
 }
 static method main() → void
   ;
@@ -29,8 +31,27 @@
 abstract class A extends core::Object /*isMixinDeclaration*/  {
   method toString({core::String* s = "hello"}) → core::String*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends core::Object {
   synthetic constructor •() → baz2::B*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
diff --git a/pkg/front_end/testcases/nnbd/issue40512/issue40512_lib.dart.strong.expect b/pkg/front_end/testcases/nnbd/issue40512/issue40512_lib.dart.strong.expect
index 125f1c6..001a4f4 100644
--- a/pkg/front_end/testcases/nnbd/issue40512/issue40512_lib.dart.strong.expect
+++ b/pkg/front_end/testcases/nnbd/issue40512/issue40512_lib.dart.strong.expect
@@ -14,11 +14,13 @@
   const synthetic constructor •() → self::_C&Object&A&B*
     : super self::_C&Object&A::•()
     ;
+  abstract forwarding-stub method toString({core::String* s = #C1}) → core::String*;
 }
 class C extends self::_C&Object&A&B {
   synthetic constructor •() → self::C*
     : super self::_C&Object&A&B::•()
     ;
+  abstract forwarding-stub method toString({core::String* s = #C1}) → core::String*;
 }
 static method main() → void {
   core::print(new baz2::B::•());
@@ -32,11 +34,30 @@
 abstract class A extends core::Object /*isMixinDeclaration*/  {
   method toString({core::String* s = #C1}) → core::String*
     return s;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends core::Object {
   synthetic constructor •() → baz2::B*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 
 constants  {
diff --git a/pkg/front_end/testcases/nnbd/issue40512/issue40512_lib.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/issue40512/issue40512_lib.dart.strong.transformed.expect
index 134d5ef..27a8f38 100644
--- a/pkg/front_end/testcases/nnbd/issue40512/issue40512_lib.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/issue40512/issue40512_lib.dart.strong.transformed.expect
@@ -11,16 +11,36 @@
     ;
   method /* from org-dartlang-testcase:///issue40512_lib.dart */ toString({core::String* s = #C1}) → core::String*
     return s;
+  abstract member-signature get /* from org-dartlang-testcase:///issue40512_lib.dart */ _identityHashCode() → core::int*;
+  abstract member-signature method /* from org-dartlang-testcase:///issue40512_lib.dart */ _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method /* from org-dartlang-testcase:///issue40512_lib.dart */ _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method /* from org-dartlang-testcase:///issue40512_lib.dart */ _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method /* from org-dartlang-testcase:///issue40512_lib.dart */ _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator /* from org-dartlang-testcase:///issue40512_lib.dart */ ==(dynamic other) → core::bool*;
+  abstract member-signature get /* from org-dartlang-testcase:///issue40512_lib.dart */ hashCode() → core::int*;
+  abstract member-signature method /* from org-dartlang-testcase:///issue40512_lib.dart */ noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get /* from org-dartlang-testcase:///issue40512_lib.dart */ runtimeType() → core::Type*;
 }
 abstract class _C&Object&A&B extends self::_C&Object&A implements baz2::B /*isAnonymousMixin,isEliminatedMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::_C&Object&A&B*
     : super self::_C&Object&A::•()
     ;
+  abstract forwarding-stub method toString({core::String* s = #C1}) → core::String*;
+  abstract member-signature get /* from org-dartlang-testcase:///issue40512_lib.dart */ _identityHashCode() → core::int*;
+  abstract member-signature method /* from org-dartlang-testcase:///issue40512_lib.dart */ _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method /* from org-dartlang-testcase:///issue40512_lib.dart */ _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method /* from org-dartlang-testcase:///issue40512_lib.dart */ _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method /* from org-dartlang-testcase:///issue40512_lib.dart */ _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator /* from org-dartlang-testcase:///issue40512_lib.dart */ ==(dynamic other) → core::bool*;
+  abstract member-signature get /* from org-dartlang-testcase:///issue40512_lib.dart */ hashCode() → core::int*;
+  abstract member-signature method /* from org-dartlang-testcase:///issue40512_lib.dart */ noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get /* from org-dartlang-testcase:///issue40512_lib.dart */ runtimeType() → core::Type*;
 }
 class C extends self::_C&Object&A&B {
   synthetic constructor •() → self::C*
     : super self::_C&Object&A&B::•()
     ;
+  abstract forwarding-stub method toString({core::String* s = #C1}) → core::String*;
 }
 static method main() → void {
   core::print(new baz2::B::•());
@@ -34,11 +54,30 @@
 abstract class A extends core::Object /*isMixinDeclaration*/  {
   method toString({core::String* s = #C1}) → core::String*
     return s;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends core::Object {
   synthetic constructor •() → baz2::B*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 
 constants  {
diff --git a/pkg/front_end/testcases/nnbd/issue40512/issue40512_lib.dart.weak.expect b/pkg/front_end/testcases/nnbd/issue40512/issue40512_lib.dart.weak.expect
index 125f1c6..001a4f4 100644
--- a/pkg/front_end/testcases/nnbd/issue40512/issue40512_lib.dart.weak.expect
+++ b/pkg/front_end/testcases/nnbd/issue40512/issue40512_lib.dart.weak.expect
@@ -14,11 +14,13 @@
   const synthetic constructor •() → self::_C&Object&A&B*
     : super self::_C&Object&A::•()
     ;
+  abstract forwarding-stub method toString({core::String* s = #C1}) → core::String*;
 }
 class C extends self::_C&Object&A&B {
   synthetic constructor •() → self::C*
     : super self::_C&Object&A&B::•()
     ;
+  abstract forwarding-stub method toString({core::String* s = #C1}) → core::String*;
 }
 static method main() → void {
   core::print(new baz2::B::•());
@@ -32,11 +34,30 @@
 abstract class A extends core::Object /*isMixinDeclaration*/  {
   method toString({core::String* s = #C1}) → core::String*
     return s;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends core::Object {
   synthetic constructor •() → baz2::B*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 
 constants  {
diff --git a/pkg/front_end/testcases/nnbd/issue40512/issue40512_lib.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/issue40512/issue40512_lib.dart.weak.transformed.expect
index 134d5ef..27a8f38 100644
--- a/pkg/front_end/testcases/nnbd/issue40512/issue40512_lib.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/issue40512/issue40512_lib.dart.weak.transformed.expect
@@ -11,16 +11,36 @@
     ;
   method /* from org-dartlang-testcase:///issue40512_lib.dart */ toString({core::String* s = #C1}) → core::String*
     return s;
+  abstract member-signature get /* from org-dartlang-testcase:///issue40512_lib.dart */ _identityHashCode() → core::int*;
+  abstract member-signature method /* from org-dartlang-testcase:///issue40512_lib.dart */ _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method /* from org-dartlang-testcase:///issue40512_lib.dart */ _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method /* from org-dartlang-testcase:///issue40512_lib.dart */ _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method /* from org-dartlang-testcase:///issue40512_lib.dart */ _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator /* from org-dartlang-testcase:///issue40512_lib.dart */ ==(dynamic other) → core::bool*;
+  abstract member-signature get /* from org-dartlang-testcase:///issue40512_lib.dart */ hashCode() → core::int*;
+  abstract member-signature method /* from org-dartlang-testcase:///issue40512_lib.dart */ noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get /* from org-dartlang-testcase:///issue40512_lib.dart */ runtimeType() → core::Type*;
 }
 abstract class _C&Object&A&B extends self::_C&Object&A implements baz2::B /*isAnonymousMixin,isEliminatedMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::_C&Object&A&B*
     : super self::_C&Object&A::•()
     ;
+  abstract forwarding-stub method toString({core::String* s = #C1}) → core::String*;
+  abstract member-signature get /* from org-dartlang-testcase:///issue40512_lib.dart */ _identityHashCode() → core::int*;
+  abstract member-signature method /* from org-dartlang-testcase:///issue40512_lib.dart */ _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method /* from org-dartlang-testcase:///issue40512_lib.dart */ _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method /* from org-dartlang-testcase:///issue40512_lib.dart */ _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method /* from org-dartlang-testcase:///issue40512_lib.dart */ _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator /* from org-dartlang-testcase:///issue40512_lib.dart */ ==(dynamic other) → core::bool*;
+  abstract member-signature get /* from org-dartlang-testcase:///issue40512_lib.dart */ hashCode() → core::int*;
+  abstract member-signature method /* from org-dartlang-testcase:///issue40512_lib.dart */ noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get /* from org-dartlang-testcase:///issue40512_lib.dart */ runtimeType() → core::Type*;
 }
 class C extends self::_C&Object&A&B {
   synthetic constructor •() → self::C*
     : super self::_C&Object&A&B::•()
     ;
+  abstract forwarding-stub method toString({core::String* s = #C1}) → core::String*;
 }
 static method main() → void {
   core::print(new baz2::B::•());
@@ -34,11 +54,30 @@
 abstract class A extends core::Object /*isMixinDeclaration*/  {
   method toString({core::String* s = #C1}) → core::String*
     return s;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends core::Object {
   synthetic constructor •() → baz2::B*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 
 constants  {
diff --git a/pkg/front_end/testcases/nnbd/issue41114.dart.strong.expect b/pkg/front_end/testcases/nnbd/issue41114.dart.strong.expect
index 0354e2d..4b2167b 100644
--- a/pkg/front_end/testcases/nnbd/issue41114.dart.strong.expect
+++ b/pkg/front_end/testcases/nnbd/issue41114.dart.strong.expect
@@ -4,7 +4,7 @@
 
 static method main() → dynamic async {
   core::List<core::String>? a = <core::String>[];
-  core::Iterable<core::String>? b = let final core::List<core::String>? #t1 = a in #t1.{core::List::==}(null) ?{core::Iterable<core::String*>?} null : #t1{core::List<core::String>}.{core::Iterable::map}<core::String>((core::String e) → core::String => e);
+  core::Iterable<core::String>? b = let final core::List<core::String>? #t1 = a in #t1.{core::List::==}(null) ?{core::Iterable<core::String>?} null : #t1{core::List<core::String>}.{core::Iterable::map}<core::String>((core::String e) → core::String => e);
   core::Iterable<core::String>? i = let final core::Iterable<core::String>? #t2 = b in #t2.{core::Object::==}(null) ?{core::Iterable<core::String>?} a : #t2{core::Iterable<core::String>};
   core::print(i);
 }
diff --git a/pkg/front_end/testcases/nnbd/issue41114.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/issue41114.dart.strong.transformed.expect
index 22f3911..f8f325c 100644
--- a/pkg/front_end/testcases/nnbd/issue41114.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/issue41114.dart.strong.transformed.expect
@@ -16,15 +16,15 @@
       #L1:
       {
         core::List<core::String>? a = <core::String>[];
-        core::Iterable<core::String>? b = let final core::List<core::String>? #t1 = a in #t1.{core::List::==}(null) ?{core::Iterable<core::String*>?} null : #t1{core::List<core::String>}.{core::Iterable::map}<core::String>((core::String e) → core::String => e);
+        core::Iterable<core::String>? b = let final core::List<core::String>? #t1 = a in #t1.{core::List::==}(null) ?{core::Iterable<core::String>?} null : #t1{core::List<core::String>}.{core::Iterable::map}<core::String>((core::String e) → core::String => e);
         core::Iterable<core::String>? i = let final core::Iterable<core::String>? #t2 = b in #t2.{core::Object::==}(null) ?{core::Iterable<core::String>?} a : #t2{core::Iterable<core::String>};
         core::print(i);
       }
       asy::_completeOnAsyncReturn(:async_completer, :return_value);
       return;
     }
-    on dynamic catch(dynamic :exception, core::StackTrace :stack_trace) {
-      :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+    on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
+      :async_completer.{asy::Completer::completeError}(exception, stack_trace);
     }
   :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
diff --git a/pkg/front_end/testcases/nnbd/issue41114.dart.weak.expect b/pkg/front_end/testcases/nnbd/issue41114.dart.weak.expect
index 0354e2d..4b2167b 100644
--- a/pkg/front_end/testcases/nnbd/issue41114.dart.weak.expect
+++ b/pkg/front_end/testcases/nnbd/issue41114.dart.weak.expect
@@ -4,7 +4,7 @@
 
 static method main() → dynamic async {
   core::List<core::String>? a = <core::String>[];
-  core::Iterable<core::String>? b = let final core::List<core::String>? #t1 = a in #t1.{core::List::==}(null) ?{core::Iterable<core::String*>?} null : #t1{core::List<core::String>}.{core::Iterable::map}<core::String>((core::String e) → core::String => e);
+  core::Iterable<core::String>? b = let final core::List<core::String>? #t1 = a in #t1.{core::List::==}(null) ?{core::Iterable<core::String>?} null : #t1{core::List<core::String>}.{core::Iterable::map}<core::String>((core::String e) → core::String => e);
   core::Iterable<core::String>? i = let final core::Iterable<core::String>? #t2 = b in #t2.{core::Object::==}(null) ?{core::Iterable<core::String>?} a : #t2{core::Iterable<core::String>};
   core::print(i);
 }
diff --git a/pkg/front_end/testcases/nnbd/issue41114.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/issue41114.dart.weak.transformed.expect
index 22f3911..f8f325c 100644
--- a/pkg/front_end/testcases/nnbd/issue41114.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/issue41114.dart.weak.transformed.expect
@@ -16,15 +16,15 @@
       #L1:
       {
         core::List<core::String>? a = <core::String>[];
-        core::Iterable<core::String>? b = let final core::List<core::String>? #t1 = a in #t1.{core::List::==}(null) ?{core::Iterable<core::String*>?} null : #t1{core::List<core::String>}.{core::Iterable::map}<core::String>((core::String e) → core::String => e);
+        core::Iterable<core::String>? b = let final core::List<core::String>? #t1 = a in #t1.{core::List::==}(null) ?{core::Iterable<core::String>?} null : #t1{core::List<core::String>}.{core::Iterable::map}<core::String>((core::String e) → core::String => e);
         core::Iterable<core::String>? i = let final core::Iterable<core::String>? #t2 = b in #t2.{core::Object::==}(null) ?{core::Iterable<core::String>?} a : #t2{core::Iterable<core::String>};
         core::print(i);
       }
       asy::_completeOnAsyncReturn(:async_completer, :return_value);
       return;
     }
-    on dynamic catch(dynamic :exception, core::StackTrace :stack_trace) {
-      :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+    on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
+      :async_completer.{asy::Completer::completeError}(exception, stack_trace);
     }
   :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
diff --git a/pkg/front_end/testcases/nnbd/issue41156.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/issue41156.dart.strong.transformed.expect
index 873c7eb..275ec42 100644
--- a/pkg/front_end/testcases/nnbd/issue41156.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/issue41156.dart.strong.transformed.expect
@@ -73,8 +73,8 @@
         asy::_completeOnAsyncReturn(:async_completer, :return_value);
         return;
       }
-      on dynamic catch(dynamic :exception, core::StackTrace :stack_trace) {
-        :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+      on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
+        :async_completer.{asy::Completer::completeError}(exception, stack_trace);
       }
     :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
     :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
@@ -99,8 +99,8 @@
         asy::_completeOnAsyncReturn(:async_completer, :return_value);
         return;
       }
-      on dynamic catch(dynamic :exception, core::StackTrace :stack_trace) {
-        :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+      on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
+        :async_completer.{asy::Completer::completeError}(exception, stack_trace);
       }
     :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
     :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
@@ -126,8 +126,8 @@
         asy::_completeOnAsyncReturn(:async_completer, :return_value);
         return;
       }
-      on dynamic catch(dynamic :exception, core::StackTrace :stack_trace) {
-        :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+      on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
+        :async_completer.{asy::Completer::completeError}(exception, stack_trace);
       }
     :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
     :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
@@ -153,8 +153,8 @@
         asy::_completeOnAsyncReturn(:async_completer, :return_value);
         return;
       }
-      on dynamic catch(dynamic :exception, core::StackTrace :stack_trace) {
-        :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+      on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
+        :async_completer.{asy::Completer::completeError}(exception, stack_trace);
       }
     :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
     :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
@@ -179,8 +179,8 @@
         asy::_completeOnAsyncReturn(:async_completer, :return_value);
         return;
       }
-      on dynamic catch(dynamic :exception, core::StackTrace :stack_trace) {
-        :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+      on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
+        :async_completer.{asy::Completer::completeError}(exception, stack_trace);
       }
     :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
     :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
@@ -206,8 +206,8 @@
         asy::_completeOnAsyncReturn(:async_completer, :return_value);
         return;
       }
-      on dynamic catch(dynamic :exception, core::StackTrace :stack_trace) {
-        :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+      on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
+        :async_completer.{asy::Completer::completeError}(exception, stack_trace);
       }
     :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
     :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
@@ -293,8 +293,8 @@
               asy::_completeOnAsyncReturn(:async_completer, :return_value);
               return;
             }
-            on dynamic catch(dynamic :exception, core::StackTrace :stack_trace) {
-              :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+            on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
+              :async_completer.{asy::Completer::completeError}(exception, stack_trace);
             }
           :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
           :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
@@ -328,8 +328,8 @@
               asy::_completeOnAsyncReturn(:async_completer, :return_value);
               return;
             }
-            on dynamic catch(dynamic :exception, core::StackTrace :stack_trace) {
-              :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+            on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
+              :async_completer.{asy::Completer::completeError}(exception, stack_trace);
             }
           :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
           :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
@@ -362,8 +362,8 @@
               asy::_completeOnAsyncReturn(:async_completer, :return_value);
               return;
             }
-            on dynamic catch(dynamic :exception, core::StackTrace :stack_trace) {
-              :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+            on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
+              :async_completer.{asy::Completer::completeError}(exception, stack_trace);
             }
           :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
           :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
@@ -397,8 +397,8 @@
               asy::_completeOnAsyncReturn(:async_completer, :return_value);
               return;
             }
-            on dynamic catch(dynamic :exception, core::StackTrace :stack_trace) {
-              :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+            on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
+              :async_completer.{asy::Completer::completeError}(exception, stack_trace);
             }
           :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
           :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
@@ -410,8 +410,8 @@
       asy::_completeOnAsyncReturn(:async_completer, :return_value);
       return;
     }
-    on dynamic catch(dynamic :exception, core::StackTrace :stack_trace) {
-      :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+    on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
+      :async_completer.{asy::Completer::completeError}(exception, stack_trace);
     }
   :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
diff --git a/pkg/front_end/testcases/nnbd/issue41156.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/issue41156.dart.weak.transformed.expect
index 873c7eb..275ec42 100644
--- a/pkg/front_end/testcases/nnbd/issue41156.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/issue41156.dart.weak.transformed.expect
@@ -73,8 +73,8 @@
         asy::_completeOnAsyncReturn(:async_completer, :return_value);
         return;
       }
-      on dynamic catch(dynamic :exception, core::StackTrace :stack_trace) {
-        :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+      on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
+        :async_completer.{asy::Completer::completeError}(exception, stack_trace);
       }
     :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
     :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
@@ -99,8 +99,8 @@
         asy::_completeOnAsyncReturn(:async_completer, :return_value);
         return;
       }
-      on dynamic catch(dynamic :exception, core::StackTrace :stack_trace) {
-        :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+      on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
+        :async_completer.{asy::Completer::completeError}(exception, stack_trace);
       }
     :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
     :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
@@ -126,8 +126,8 @@
         asy::_completeOnAsyncReturn(:async_completer, :return_value);
         return;
       }
-      on dynamic catch(dynamic :exception, core::StackTrace :stack_trace) {
-        :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+      on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
+        :async_completer.{asy::Completer::completeError}(exception, stack_trace);
       }
     :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
     :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
@@ -153,8 +153,8 @@
         asy::_completeOnAsyncReturn(:async_completer, :return_value);
         return;
       }
-      on dynamic catch(dynamic :exception, core::StackTrace :stack_trace) {
-        :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+      on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
+        :async_completer.{asy::Completer::completeError}(exception, stack_trace);
       }
     :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
     :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
@@ -179,8 +179,8 @@
         asy::_completeOnAsyncReturn(:async_completer, :return_value);
         return;
       }
-      on dynamic catch(dynamic :exception, core::StackTrace :stack_trace) {
-        :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+      on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
+        :async_completer.{asy::Completer::completeError}(exception, stack_trace);
       }
     :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
     :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
@@ -206,8 +206,8 @@
         asy::_completeOnAsyncReturn(:async_completer, :return_value);
         return;
       }
-      on dynamic catch(dynamic :exception, core::StackTrace :stack_trace) {
-        :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+      on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
+        :async_completer.{asy::Completer::completeError}(exception, stack_trace);
       }
     :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
     :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
@@ -293,8 +293,8 @@
               asy::_completeOnAsyncReturn(:async_completer, :return_value);
               return;
             }
-            on dynamic catch(dynamic :exception, core::StackTrace :stack_trace) {
-              :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+            on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
+              :async_completer.{asy::Completer::completeError}(exception, stack_trace);
             }
           :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
           :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
@@ -328,8 +328,8 @@
               asy::_completeOnAsyncReturn(:async_completer, :return_value);
               return;
             }
-            on dynamic catch(dynamic :exception, core::StackTrace :stack_trace) {
-              :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+            on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
+              :async_completer.{asy::Completer::completeError}(exception, stack_trace);
             }
           :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
           :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
@@ -362,8 +362,8 @@
               asy::_completeOnAsyncReturn(:async_completer, :return_value);
               return;
             }
-            on dynamic catch(dynamic :exception, core::StackTrace :stack_trace) {
-              :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+            on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
+              :async_completer.{asy::Completer::completeError}(exception, stack_trace);
             }
           :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
           :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
@@ -397,8 +397,8 @@
               asy::_completeOnAsyncReturn(:async_completer, :return_value);
               return;
             }
-            on dynamic catch(dynamic :exception, core::StackTrace :stack_trace) {
-              :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+            on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
+              :async_completer.{asy::Completer::completeError}(exception, stack_trace);
             }
           :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
           :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
@@ -410,8 +410,8 @@
       asy::_completeOnAsyncReturn(:async_completer, :return_value);
       return;
     }
-    on dynamic catch(dynamic :exception, core::StackTrace :stack_trace) {
-      :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+    on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
+      :async_completer.{asy::Completer::completeError}(exception, stack_trace);
     }
   :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
diff --git a/pkg/front_end/testcases/nnbd/issue41180.dart.outline.expect b/pkg/front_end/testcases/nnbd/issue41180.dart.outline.expect
index 0c6b290..e4be866 100644
--- a/pkg/front_end/testcases/nnbd/issue41180.dart.outline.expect
+++ b/pkg/front_end/testcases/nnbd/issue41180.dart.outline.expect
@@ -10,6 +10,16 @@
     ;
   method method() → iss::C<self::D::Y*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → void
   ;
diff --git a/pkg/front_end/testcases/nnbd/issue41180.dart.strong.expect b/pkg/front_end/testcases/nnbd/issue41180.dart.strong.expect
index 00276526..636c18f 100644
--- a/pkg/front_end/testcases/nnbd/issue41180.dart.strong.expect
+++ b/pkg/front_end/testcases/nnbd/issue41180.dart.strong.expect
@@ -11,6 +11,16 @@
     ;
   method method() → iss::C<self::D::Y*>*
     return new iss::C::•<self::D::Y*>(() → core::Null? => null);
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → void {
   iss::foo(() → core::Null? => null);
@@ -39,7 +49,7 @@
     : iss::Map::key = key, iss::Map::value = value, super core::Object::•()
     ;
   get entries() → iss::Iterable<core::MapEntry<iss::Map::K%, iss::Map::V%>>
-    return new iss::Iterable::•<core::MapEntry<iss::Map::K%, iss::Map::V%>>(new core::MapEntry::_<iss::Map::K*, iss::Map::V*>(this.{iss::Map::key}, this.{iss::Map::value}));
+    return new iss::Iterable::•<core::MapEntry<iss::Map::K%, iss::Map::V%>>(new core::MapEntry::_<iss::Map::K%, iss::Map::V%>(this.{iss::Map::key}, this.{iss::Map::value}));
 }
 class Iterable<E extends core::Object? = dynamic> extends core::Object {
   final field iss::Iterable::E% element;
diff --git a/pkg/front_end/testcases/nnbd/issue41180.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/issue41180.dart.strong.transformed.expect
index 00276526..636c18f 100644
--- a/pkg/front_end/testcases/nnbd/issue41180.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/issue41180.dart.strong.transformed.expect
@@ -11,6 +11,16 @@
     ;
   method method() → iss::C<self::D::Y*>*
     return new iss::C::•<self::D::Y*>(() → core::Null? => null);
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → void {
   iss::foo(() → core::Null? => null);
@@ -39,7 +49,7 @@
     : iss::Map::key = key, iss::Map::value = value, super core::Object::•()
     ;
   get entries() → iss::Iterable<core::MapEntry<iss::Map::K%, iss::Map::V%>>
-    return new iss::Iterable::•<core::MapEntry<iss::Map::K%, iss::Map::V%>>(new core::MapEntry::_<iss::Map::K*, iss::Map::V*>(this.{iss::Map::key}, this.{iss::Map::value}));
+    return new iss::Iterable::•<core::MapEntry<iss::Map::K%, iss::Map::V%>>(new core::MapEntry::_<iss::Map::K%, iss::Map::V%>(this.{iss::Map::key}, this.{iss::Map::value}));
 }
 class Iterable<E extends core::Object? = dynamic> extends core::Object {
   final field iss::Iterable::E% element;
diff --git a/pkg/front_end/testcases/nnbd/issue41180.dart.weak.expect b/pkg/front_end/testcases/nnbd/issue41180.dart.weak.expect
index 00276526..636c18f 100644
--- a/pkg/front_end/testcases/nnbd/issue41180.dart.weak.expect
+++ b/pkg/front_end/testcases/nnbd/issue41180.dart.weak.expect
@@ -11,6 +11,16 @@
     ;
   method method() → iss::C<self::D::Y*>*
     return new iss::C::•<self::D::Y*>(() → core::Null? => null);
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → void {
   iss::foo(() → core::Null? => null);
@@ -39,7 +49,7 @@
     : iss::Map::key = key, iss::Map::value = value, super core::Object::•()
     ;
   get entries() → iss::Iterable<core::MapEntry<iss::Map::K%, iss::Map::V%>>
-    return new iss::Iterable::•<core::MapEntry<iss::Map::K%, iss::Map::V%>>(new core::MapEntry::_<iss::Map::K*, iss::Map::V*>(this.{iss::Map::key}, this.{iss::Map::value}));
+    return new iss::Iterable::•<core::MapEntry<iss::Map::K%, iss::Map::V%>>(new core::MapEntry::_<iss::Map::K%, iss::Map::V%>(this.{iss::Map::key}, this.{iss::Map::value}));
 }
 class Iterable<E extends core::Object? = dynamic> extends core::Object {
   final field iss::Iterable::E% element;
diff --git a/pkg/front_end/testcases/nnbd/issue41180.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/issue41180.dart.weak.transformed.expect
index 00276526..636c18f 100644
--- a/pkg/front_end/testcases/nnbd/issue41180.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/issue41180.dart.weak.transformed.expect
@@ -11,6 +11,16 @@
     ;
   method method() → iss::C<self::D::Y*>*
     return new iss::C::•<self::D::Y*>(() → core::Null? => null);
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → void {
   iss::foo(() → core::Null? => null);
@@ -39,7 +49,7 @@
     : iss::Map::key = key, iss::Map::value = value, super core::Object::•()
     ;
   get entries() → iss::Iterable<core::MapEntry<iss::Map::K%, iss::Map::V%>>
-    return new iss::Iterable::•<core::MapEntry<iss::Map::K%, iss::Map::V%>>(new core::MapEntry::_<iss::Map::K*, iss::Map::V*>(this.{iss::Map::key}, this.{iss::Map::value}));
+    return new iss::Iterable::•<core::MapEntry<iss::Map::K%, iss::Map::V%>>(new core::MapEntry::_<iss::Map::K%, iss::Map::V%>(this.{iss::Map::key}, this.{iss::Map::value}));
 }
 class Iterable<E extends core::Object? = dynamic> extends core::Object {
   final field iss::Iterable::E% element;
diff --git a/pkg/front_end/testcases/nnbd/issue41210a/issue41210_lib1.dart.outline.expect b/pkg/front_end/testcases/nnbd/issue41210a/issue41210_lib1.dart.outline.expect
index 2640497..535099e 100644
--- a/pkg/front_end/testcases/nnbd/issue41210a/issue41210_lib1.dart.outline.expect
+++ b/pkg/front_end/testcases/nnbd/issue41210a/issue41210_lib1.dart.outline.expect
@@ -34,10 +34,30 @@
 abstract class A extends core::Object implements iss2::Interface /*isMixinDeclaration*/  {
   method method({core::String* s = "hello"}) → core::String*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class B extends core::Object implements iss2::Interface {
   synthetic constructor •() → iss::B*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
   abstract member-signature method method() → core::String*;
 }
 static method main() → void
diff --git a/pkg/front_end/testcases/nnbd/issue41210a/issue41210_lib1.dart.strong.expect b/pkg/front_end/testcases/nnbd/issue41210a/issue41210_lib1.dart.strong.expect
index a447e57..722b163 100644
--- a/pkg/front_end/testcases/nnbd/issue41210a/issue41210_lib1.dart.strong.expect
+++ b/pkg/front_end/testcases/nnbd/issue41210a/issue41210_lib1.dart.strong.expect
@@ -36,11 +36,31 @@
 abstract class A extends core::Object implements iss2::Interface /*isMixinDeclaration*/  {
   method method({core::String* s = #C1}) → core::String*
     return s;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class B extends core::Object implements iss2::Interface {
   synthetic constructor •() → iss::B*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
   abstract member-signature method method() → core::String*;
 }
 static method main() → void {}
diff --git a/pkg/front_end/testcases/nnbd/issue41210a/issue41210_lib1.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/issue41210a/issue41210_lib1.dart.strong.transformed.expect
index a170b13..b7893ae 100644
--- a/pkg/front_end/testcases/nnbd/issue41210a/issue41210_lib1.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/issue41210a/issue41210_lib1.dart.strong.transformed.expect
@@ -11,12 +11,32 @@
     ;
   method /* from org-dartlang-testcase:///issue41210_lib1.dart */ method({core::String* s = #C1}) → core::String*
     return s;
+  abstract member-signature get /* from org-dartlang-testcase:///issue41210_lib1.dart */ _identityHashCode() → core::int*;
+  abstract member-signature method /* from org-dartlang-testcase:///issue41210_lib1.dart */ _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method /* from org-dartlang-testcase:///issue41210_lib1.dart */ _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method /* from org-dartlang-testcase:///issue41210_lib1.dart */ _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method /* from org-dartlang-testcase:///issue41210_lib1.dart */ _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator /* from org-dartlang-testcase:///issue41210_lib1.dart */ ==(dynamic other) → core::bool*;
+  abstract member-signature get /* from org-dartlang-testcase:///issue41210_lib1.dart */ hashCode() → core::int*;
+  abstract member-signature method /* from org-dartlang-testcase:///issue41210_lib1.dart */ toString() → core::String*;
+  abstract member-signature method /* from org-dartlang-testcase:///issue41210_lib1.dart */ noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get /* from org-dartlang-testcase:///issue41210_lib1.dart */ runtimeType() → core::Type*;
 }
 abstract class _C&Object&A&B extends self::_C&Object&A implements iss::B /*isAnonymousMixin,isEliminatedMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::_C&Object&A&B*
     : super self::_C&Object&A::•()
     ;
   abstract forwarding-stub method method({core::String* s = #C1}) → core::String*;
+  abstract member-signature get /* from org-dartlang-testcase:///issue41210_lib1.dart */ _identityHashCode() → core::int*;
+  abstract member-signature method /* from org-dartlang-testcase:///issue41210_lib1.dart */ _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method /* from org-dartlang-testcase:///issue41210_lib1.dart */ _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method /* from org-dartlang-testcase:///issue41210_lib1.dart */ _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method /* from org-dartlang-testcase:///issue41210_lib1.dart */ _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator /* from org-dartlang-testcase:///issue41210_lib1.dart */ ==(dynamic other) → core::bool*;
+  abstract member-signature get /* from org-dartlang-testcase:///issue41210_lib1.dart */ hashCode() → core::int*;
+  abstract member-signature method /* from org-dartlang-testcase:///issue41210_lib1.dart */ toString() → core::String*;
+  abstract member-signature method /* from org-dartlang-testcase:///issue41210_lib1.dart */ noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get /* from org-dartlang-testcase:///issue41210_lib1.dart */ runtimeType() → core::Type*;
 }
 class C extends self::_C&Object&A&B {
   synthetic constructor •() → self::C*
@@ -38,11 +58,31 @@
 abstract class A extends core::Object implements iss2::Interface /*isMixinDeclaration*/  {
   method method({core::String* s = #C1}) → core::String*
     return s;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class B extends core::Object implements iss2::Interface {
   synthetic constructor •() → iss::B*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
   abstract member-signature method method() → core::String*;
 }
 static method main() → void {}
diff --git a/pkg/front_end/testcases/nnbd/issue41210a/issue41210_lib1.dart.weak.expect b/pkg/front_end/testcases/nnbd/issue41210a/issue41210_lib1.dart.weak.expect
index a447e57..722b163 100644
--- a/pkg/front_end/testcases/nnbd/issue41210a/issue41210_lib1.dart.weak.expect
+++ b/pkg/front_end/testcases/nnbd/issue41210a/issue41210_lib1.dart.weak.expect
@@ -36,11 +36,31 @@
 abstract class A extends core::Object implements iss2::Interface /*isMixinDeclaration*/  {
   method method({core::String* s = #C1}) → core::String*
     return s;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class B extends core::Object implements iss2::Interface {
   synthetic constructor •() → iss::B*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
   abstract member-signature method method() → core::String*;
 }
 static method main() → void {}
diff --git a/pkg/front_end/testcases/nnbd/issue41210a/issue41210_lib1.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/issue41210a/issue41210_lib1.dart.weak.transformed.expect
index a170b13..b7893ae 100644
--- a/pkg/front_end/testcases/nnbd/issue41210a/issue41210_lib1.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/issue41210a/issue41210_lib1.dart.weak.transformed.expect
@@ -11,12 +11,32 @@
     ;
   method /* from org-dartlang-testcase:///issue41210_lib1.dart */ method({core::String* s = #C1}) → core::String*
     return s;
+  abstract member-signature get /* from org-dartlang-testcase:///issue41210_lib1.dart */ _identityHashCode() → core::int*;
+  abstract member-signature method /* from org-dartlang-testcase:///issue41210_lib1.dart */ _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method /* from org-dartlang-testcase:///issue41210_lib1.dart */ _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method /* from org-dartlang-testcase:///issue41210_lib1.dart */ _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method /* from org-dartlang-testcase:///issue41210_lib1.dart */ _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator /* from org-dartlang-testcase:///issue41210_lib1.dart */ ==(dynamic other) → core::bool*;
+  abstract member-signature get /* from org-dartlang-testcase:///issue41210_lib1.dart */ hashCode() → core::int*;
+  abstract member-signature method /* from org-dartlang-testcase:///issue41210_lib1.dart */ toString() → core::String*;
+  abstract member-signature method /* from org-dartlang-testcase:///issue41210_lib1.dart */ noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get /* from org-dartlang-testcase:///issue41210_lib1.dart */ runtimeType() → core::Type*;
 }
 abstract class _C&Object&A&B extends self::_C&Object&A implements iss::B /*isAnonymousMixin,isEliminatedMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::_C&Object&A&B*
     : super self::_C&Object&A::•()
     ;
   abstract forwarding-stub method method({core::String* s = #C1}) → core::String*;
+  abstract member-signature get /* from org-dartlang-testcase:///issue41210_lib1.dart */ _identityHashCode() → core::int*;
+  abstract member-signature method /* from org-dartlang-testcase:///issue41210_lib1.dart */ _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method /* from org-dartlang-testcase:///issue41210_lib1.dart */ _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method /* from org-dartlang-testcase:///issue41210_lib1.dart */ _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method /* from org-dartlang-testcase:///issue41210_lib1.dart */ _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator /* from org-dartlang-testcase:///issue41210_lib1.dart */ ==(dynamic other) → core::bool*;
+  abstract member-signature get /* from org-dartlang-testcase:///issue41210_lib1.dart */ hashCode() → core::int*;
+  abstract member-signature method /* from org-dartlang-testcase:///issue41210_lib1.dart */ toString() → core::String*;
+  abstract member-signature method /* from org-dartlang-testcase:///issue41210_lib1.dart */ noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get /* from org-dartlang-testcase:///issue41210_lib1.dart */ runtimeType() → core::Type*;
 }
 class C extends self::_C&Object&A&B {
   synthetic constructor •() → self::C*
@@ -38,11 +58,31 @@
 abstract class A extends core::Object implements iss2::Interface /*isMixinDeclaration*/  {
   method method({core::String* s = #C1}) → core::String*
     return s;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class B extends core::Object implements iss2::Interface {
   synthetic constructor •() → iss::B*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
   abstract member-signature method method() → core::String*;
 }
 static method main() → void {}
diff --git a/pkg/front_end/testcases/nnbd/issue41210b.dart.outline.expect b/pkg/front_end/testcases/nnbd/issue41210b.dart.outline.expect
index b3bea87..1df2bf5 100644
--- a/pkg/front_end/testcases/nnbd/issue41210b.dart.outline.expect
+++ b/pkg/front_end/testcases/nnbd/issue41210b.dart.outline.expect
@@ -9,6 +9,16 @@
   const synthetic constructor •() → self::_C&Object&A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class _C&Object&A&B = self::_C&Object&A with iss::B /*isAnonymousMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::_C&Object&A&B*
@@ -32,10 +42,30 @@
 abstract class A extends core::Object implements iss2::Interface /*isMixinDeclaration*/  {
   method method({core::String* s = "hello"}) → core::String*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class B extends core::Object implements iss2::Interface {
   synthetic constructor •() → iss::B*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
   abstract member-signature method method() → core::String*;
 }
 static method main() → void
diff --git a/pkg/front_end/testcases/nnbd/issue41210b.dart.strong.expect b/pkg/front_end/testcases/nnbd/issue41210b.dart.strong.expect
index 3679eca..9d35f25 100644
--- a/pkg/front_end/testcases/nnbd/issue41210b.dart.strong.expect
+++ b/pkg/front_end/testcases/nnbd/issue41210b.dart.strong.expect
@@ -9,6 +9,16 @@
   const synthetic constructor •() → self::_C&Object&A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class _C&Object&A&B = self::_C&Object&A with iss::B /*isAnonymousMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::_C&Object&A&B*
@@ -34,11 +44,31 @@
 abstract class A extends core::Object implements iss2::Interface /*isMixinDeclaration*/  {
   method method({core::String* s = #C1}) → core::String*
     return s;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class B extends core::Object implements iss2::Interface {
   synthetic constructor •() → iss::B*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
   abstract member-signature method method() → core::String*;
 }
 static method main() → void {}
diff --git a/pkg/front_end/testcases/nnbd/issue41210b.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/issue41210b.dart.strong.transformed.expect
index 8f2efe4..8339fe6 100644
--- a/pkg/front_end/testcases/nnbd/issue41210b.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/issue41210b.dart.strong.transformed.expect
@@ -9,6 +9,16 @@
   const synthetic constructor •() → self::_C&Object&A*
     : super core::Object::•()
     ;
+  abstract member-signature get /* from org-dartlang-testcase:///issue41210b_lib1.dart */ _identityHashCode() → core::int*;
+  abstract member-signature method /* from org-dartlang-testcase:///issue41210b_lib1.dart */ _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method /* from org-dartlang-testcase:///issue41210b_lib1.dart */ _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method /* from org-dartlang-testcase:///issue41210b_lib1.dart */ _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method /* from org-dartlang-testcase:///issue41210b_lib1.dart */ _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator /* from org-dartlang-testcase:///issue41210b_lib1.dart */ ==(dynamic other) → core::bool*;
+  abstract member-signature get /* from org-dartlang-testcase:///issue41210b_lib1.dart */ hashCode() → core::int*;
+  abstract member-signature method /* from org-dartlang-testcase:///issue41210b_lib1.dart */ toString() → core::String*;
+  abstract member-signature method /* from org-dartlang-testcase:///issue41210b_lib1.dart */ noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get /* from org-dartlang-testcase:///issue41210b_lib1.dart */ runtimeType() → core::Type*;
   method /* from org-dartlang-testcase:///issue41210b_lib1.dart */ method({core::String* s = #C1}) → core::String*
     return s;
 }
@@ -16,6 +26,16 @@
   const synthetic constructor •() → self::_C&Object&A&B*
     : super self::_C&Object&A::•()
     ;
+  abstract member-signature get /* from org-dartlang-testcase:///issue41210b_lib1.dart */ _identityHashCode() → core::int*;
+  abstract member-signature method /* from org-dartlang-testcase:///issue41210b_lib1.dart */ _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method /* from org-dartlang-testcase:///issue41210b_lib1.dart */ _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method /* from org-dartlang-testcase:///issue41210b_lib1.dart */ _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method /* from org-dartlang-testcase:///issue41210b_lib1.dart */ _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator /* from org-dartlang-testcase:///issue41210b_lib1.dart */ ==(dynamic other) → core::bool*;
+  abstract member-signature get /* from org-dartlang-testcase:///issue41210b_lib1.dart */ hashCode() → core::int*;
+  abstract member-signature method /* from org-dartlang-testcase:///issue41210b_lib1.dart */ toString() → core::String*;
+  abstract member-signature method /* from org-dartlang-testcase:///issue41210b_lib1.dart */ noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get /* from org-dartlang-testcase:///issue41210b_lib1.dart */ runtimeType() → core::Type*;
   abstract member-signature method /* from org-dartlang-testcase:///issue41210b_lib1.dart */ method() → core::String*;
 }
 class C extends self::_C&Object&A&B {
@@ -37,11 +57,31 @@
 abstract class A extends core::Object implements iss2::Interface /*isMixinDeclaration*/  {
   method method({core::String* s = #C1}) → core::String*
     return s;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class B extends core::Object implements iss2::Interface {
   synthetic constructor •() → iss::B*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
   abstract member-signature method method() → core::String*;
 }
 static method main() → void {}
diff --git a/pkg/front_end/testcases/nnbd/issue41210b.dart.weak.expect b/pkg/front_end/testcases/nnbd/issue41210b.dart.weak.expect
index 3679eca..9d35f25 100644
--- a/pkg/front_end/testcases/nnbd/issue41210b.dart.weak.expect
+++ b/pkg/front_end/testcases/nnbd/issue41210b.dart.weak.expect
@@ -9,6 +9,16 @@
   const synthetic constructor •() → self::_C&Object&A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class _C&Object&A&B = self::_C&Object&A with iss::B /*isAnonymousMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::_C&Object&A&B*
@@ -34,11 +44,31 @@
 abstract class A extends core::Object implements iss2::Interface /*isMixinDeclaration*/  {
   method method({core::String* s = #C1}) → core::String*
     return s;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class B extends core::Object implements iss2::Interface {
   synthetic constructor •() → iss::B*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
   abstract member-signature method method() → core::String*;
 }
 static method main() → void {}
diff --git a/pkg/front_end/testcases/nnbd/issue41210b.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/issue41210b.dart.weak.transformed.expect
index 8f2efe4..8339fe6 100644
--- a/pkg/front_end/testcases/nnbd/issue41210b.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/issue41210b.dart.weak.transformed.expect
@@ -9,6 +9,16 @@
   const synthetic constructor •() → self::_C&Object&A*
     : super core::Object::•()
     ;
+  abstract member-signature get /* from org-dartlang-testcase:///issue41210b_lib1.dart */ _identityHashCode() → core::int*;
+  abstract member-signature method /* from org-dartlang-testcase:///issue41210b_lib1.dart */ _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method /* from org-dartlang-testcase:///issue41210b_lib1.dart */ _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method /* from org-dartlang-testcase:///issue41210b_lib1.dart */ _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method /* from org-dartlang-testcase:///issue41210b_lib1.dart */ _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator /* from org-dartlang-testcase:///issue41210b_lib1.dart */ ==(dynamic other) → core::bool*;
+  abstract member-signature get /* from org-dartlang-testcase:///issue41210b_lib1.dart */ hashCode() → core::int*;
+  abstract member-signature method /* from org-dartlang-testcase:///issue41210b_lib1.dart */ toString() → core::String*;
+  abstract member-signature method /* from org-dartlang-testcase:///issue41210b_lib1.dart */ noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get /* from org-dartlang-testcase:///issue41210b_lib1.dart */ runtimeType() → core::Type*;
   method /* from org-dartlang-testcase:///issue41210b_lib1.dart */ method({core::String* s = #C1}) → core::String*
     return s;
 }
@@ -16,6 +26,16 @@
   const synthetic constructor •() → self::_C&Object&A&B*
     : super self::_C&Object&A::•()
     ;
+  abstract member-signature get /* from org-dartlang-testcase:///issue41210b_lib1.dart */ _identityHashCode() → core::int*;
+  abstract member-signature method /* from org-dartlang-testcase:///issue41210b_lib1.dart */ _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method /* from org-dartlang-testcase:///issue41210b_lib1.dart */ _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method /* from org-dartlang-testcase:///issue41210b_lib1.dart */ _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method /* from org-dartlang-testcase:///issue41210b_lib1.dart */ _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator /* from org-dartlang-testcase:///issue41210b_lib1.dart */ ==(dynamic other) → core::bool*;
+  abstract member-signature get /* from org-dartlang-testcase:///issue41210b_lib1.dart */ hashCode() → core::int*;
+  abstract member-signature method /* from org-dartlang-testcase:///issue41210b_lib1.dart */ toString() → core::String*;
+  abstract member-signature method /* from org-dartlang-testcase:///issue41210b_lib1.dart */ noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get /* from org-dartlang-testcase:///issue41210b_lib1.dart */ runtimeType() → core::Type*;
   abstract member-signature method /* from org-dartlang-testcase:///issue41210b_lib1.dart */ method() → core::String*;
 }
 class C extends self::_C&Object&A&B {
@@ -37,11 +57,31 @@
 abstract class A extends core::Object implements iss2::Interface /*isMixinDeclaration*/  {
   method method({core::String* s = #C1}) → core::String*
     return s;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class B extends core::Object implements iss2::Interface {
   synthetic constructor •() → iss::B*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
   abstract member-signature method method() → core::String*;
 }
 static method main() → void {}
diff --git a/pkg/front_end/testcases/nnbd/issue41415.dart.textual_outline.expect b/pkg/front_end/testcases/nnbd/issue41415.dart.textual_outline.expect
index d2c1f3b..bae895a 100644
--- a/pkg/front_end/testcases/nnbd/issue41415.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/nnbd/issue41415.dart.textual_outline.expect
@@ -1,3 +1 @@
-import "package:expect/expect.dart";
-
 main() {}
diff --git a/pkg/front_end/testcases/nnbd/issue41415.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/nnbd/issue41415.dart.textual_outline_modelled.expect
index d2c1f3b..bae895a 100644
--- a/pkg/front_end/testcases/nnbd/issue41415.dart.textual_outline_modelled.expect
+++ b/pkg/front_end/testcases/nnbd/issue41415.dart.textual_outline_modelled.expect
@@ -1,3 +1 @@
-import "package:expect/expect.dart";
-
 main() {}
diff --git a/pkg/front_end/testcases/nnbd/issue41437a.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/issue41437a.dart.strong.transformed.expect
index 2e9e775..a2acb2e 100644
--- a/pkg/front_end/testcases/nnbd/issue41437a.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/issue41437a.dart.strong.transformed.expect
@@ -75,8 +75,8 @@
       asy::_completeOnAsyncReturn(:async_completer, :return_value);
       return;
     }
-    on dynamic catch(dynamic :exception, core::StackTrace :stack_trace) {
-      :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+    on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
+      :async_completer.{asy::Completer::completeError}(exception, stack_trace);
     }
   :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
@@ -102,8 +102,8 @@
       asy::_completeOnAsyncReturn(:async_completer, :return_value);
       return;
     }
-    on dynamic catch(dynamic :exception, core::StackTrace :stack_trace) {
-      :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+    on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
+      :async_completer.{asy::Completer::completeError}(exception, stack_trace);
     }
   :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
@@ -136,8 +136,8 @@
       asy::_completeOnAsyncReturn(:async_completer, :return_value);
       return;
     }
-    on dynamic catch(dynamic :exception, core::StackTrace :stack_trace) {
-      :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+    on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
+      :async_completer.{asy::Completer::completeError}(exception, stack_trace);
     }
   :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
@@ -174,8 +174,8 @@
       asy::_completeOnAsyncReturn(:async_completer, :return_value);
       return;
     }
-    on dynamic catch(dynamic :exception, core::StackTrace :stack_trace) {
-      :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+    on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
+      :async_completer.{asy::Completer::completeError}(exception, stack_trace);
     }
   :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
@@ -208,8 +208,8 @@
       asy::_completeOnAsyncReturn(:async_completer, :return_value);
       return;
     }
-    on dynamic catch(dynamic :exception, core::StackTrace :stack_trace) {
-      :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+    on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
+      :async_completer.{asy::Completer::completeError}(exception, stack_trace);
     }
   :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
@@ -254,8 +254,8 @@
               asy::_completeOnAsyncReturn(:async_completer, :return_value);
               return;
             }
-            on dynamic catch(dynamic :exception, core::StackTrace :stack_trace) {
-              :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+            on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
+              :async_completer.{asy::Completer::completeError}(exception, stack_trace);
             }
           :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
           :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
@@ -292,8 +292,8 @@
               asy::_completeOnAsyncReturn(:async_completer, :return_value);
               return;
             }
-            on dynamic catch(dynamic :exception, core::StackTrace :stack_trace) {
-              :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+            on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
+              :async_completer.{asy::Completer::completeError}(exception, stack_trace);
             }
           :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
           :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
@@ -326,8 +326,8 @@
               asy::_completeOnAsyncReturn(:async_completer, :return_value);
               return;
             }
-            on dynamic catch(dynamic :exception, core::StackTrace :stack_trace) {
-              :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+            on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
+              :async_completer.{asy::Completer::completeError}(exception, stack_trace);
             }
           :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
           :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
@@ -358,8 +358,8 @@
               asy::_completeOnAsyncReturn(:async_completer, :return_value);
               return;
             }
-            on dynamic catch(dynamic :exception, core::StackTrace :stack_trace) {
-              :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+            on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
+              :async_completer.{asy::Completer::completeError}(exception, stack_trace);
             }
           :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
           :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
@@ -392,8 +392,8 @@
               asy::_completeOnAsyncReturn(:async_completer, :return_value);
               return;
             }
-            on dynamic catch(dynamic :exception, core::StackTrace :stack_trace) {
-              :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+            on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
+              :async_completer.{asy::Completer::completeError}(exception, stack_trace);
             }
           :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
           :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
@@ -424,8 +424,8 @@
               asy::_completeOnAsyncReturn(:async_completer, :return_value);
               return;
             }
-            on dynamic catch(dynamic :exception, core::StackTrace :stack_trace) {
-              :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+            on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
+              :async_completer.{asy::Completer::completeError}(exception, stack_trace);
             }
           :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
           :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
@@ -437,8 +437,8 @@
       asy::_completeOnAsyncReturn(:async_completer, :return_value);
       return;
     }
-    on dynamic catch(dynamic :exception, core::StackTrace :stack_trace) {
-      :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+    on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
+      :async_completer.{asy::Completer::completeError}(exception, stack_trace);
     }
   :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
diff --git a/pkg/front_end/testcases/nnbd/issue41437a.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/issue41437a.dart.weak.transformed.expect
index 2e9e775..a2acb2e 100644
--- a/pkg/front_end/testcases/nnbd/issue41437a.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/issue41437a.dart.weak.transformed.expect
@@ -75,8 +75,8 @@
       asy::_completeOnAsyncReturn(:async_completer, :return_value);
       return;
     }
-    on dynamic catch(dynamic :exception, core::StackTrace :stack_trace) {
-      :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+    on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
+      :async_completer.{asy::Completer::completeError}(exception, stack_trace);
     }
   :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
@@ -102,8 +102,8 @@
       asy::_completeOnAsyncReturn(:async_completer, :return_value);
       return;
     }
-    on dynamic catch(dynamic :exception, core::StackTrace :stack_trace) {
-      :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+    on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
+      :async_completer.{asy::Completer::completeError}(exception, stack_trace);
     }
   :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
@@ -136,8 +136,8 @@
       asy::_completeOnAsyncReturn(:async_completer, :return_value);
       return;
     }
-    on dynamic catch(dynamic :exception, core::StackTrace :stack_trace) {
-      :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+    on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
+      :async_completer.{asy::Completer::completeError}(exception, stack_trace);
     }
   :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
@@ -174,8 +174,8 @@
       asy::_completeOnAsyncReturn(:async_completer, :return_value);
       return;
     }
-    on dynamic catch(dynamic :exception, core::StackTrace :stack_trace) {
-      :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+    on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
+      :async_completer.{asy::Completer::completeError}(exception, stack_trace);
     }
   :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
@@ -208,8 +208,8 @@
       asy::_completeOnAsyncReturn(:async_completer, :return_value);
       return;
     }
-    on dynamic catch(dynamic :exception, core::StackTrace :stack_trace) {
-      :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+    on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
+      :async_completer.{asy::Completer::completeError}(exception, stack_trace);
     }
   :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
@@ -254,8 +254,8 @@
               asy::_completeOnAsyncReturn(:async_completer, :return_value);
               return;
             }
-            on dynamic catch(dynamic :exception, core::StackTrace :stack_trace) {
-              :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+            on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
+              :async_completer.{asy::Completer::completeError}(exception, stack_trace);
             }
           :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
           :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
@@ -292,8 +292,8 @@
               asy::_completeOnAsyncReturn(:async_completer, :return_value);
               return;
             }
-            on dynamic catch(dynamic :exception, core::StackTrace :stack_trace) {
-              :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+            on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
+              :async_completer.{asy::Completer::completeError}(exception, stack_trace);
             }
           :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
           :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
@@ -326,8 +326,8 @@
               asy::_completeOnAsyncReturn(:async_completer, :return_value);
               return;
             }
-            on dynamic catch(dynamic :exception, core::StackTrace :stack_trace) {
-              :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+            on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
+              :async_completer.{asy::Completer::completeError}(exception, stack_trace);
             }
           :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
           :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
@@ -358,8 +358,8 @@
               asy::_completeOnAsyncReturn(:async_completer, :return_value);
               return;
             }
-            on dynamic catch(dynamic :exception, core::StackTrace :stack_trace) {
-              :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+            on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
+              :async_completer.{asy::Completer::completeError}(exception, stack_trace);
             }
           :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
           :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
@@ -392,8 +392,8 @@
               asy::_completeOnAsyncReturn(:async_completer, :return_value);
               return;
             }
-            on dynamic catch(dynamic :exception, core::StackTrace :stack_trace) {
-              :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+            on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
+              :async_completer.{asy::Completer::completeError}(exception, stack_trace);
             }
           :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
           :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
@@ -424,8 +424,8 @@
               asy::_completeOnAsyncReturn(:async_completer, :return_value);
               return;
             }
-            on dynamic catch(dynamic :exception, core::StackTrace :stack_trace) {
-              :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+            on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
+              :async_completer.{asy::Completer::completeError}(exception, stack_trace);
             }
           :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
           :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
@@ -437,8 +437,8 @@
       asy::_completeOnAsyncReturn(:async_completer, :return_value);
       return;
     }
-    on dynamic catch(dynamic :exception, core::StackTrace :stack_trace) {
-      :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+    on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
+      :async_completer.{asy::Completer::completeError}(exception, stack_trace);
     }
   :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
diff --git a/pkg/front_end/testcases/nnbd/issue41437b.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/issue41437b.dart.strong.transformed.expect
index 07830cd..32e2663 100644
--- a/pkg/front_end/testcases/nnbd/issue41437b.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/issue41437b.dart.strong.transformed.expect
@@ -44,67 +44,75 @@
 static method getNull() → dynamic
   return null;
 static method getIterableNull() → core::Iterable<dynamic> /* originally sync* */ {
-  core::int :await_jump_var = 0;
-  dynamic :await_ctx_var;
-  function :sync_op(core::_SyncIterator<dynamic>? :iterator) → core::bool* yielding {
-    {
+  function :sync_op_gen() → (core::_SyncIterator<dynamic>?) → core::bool* {
+    core::int :await_jump_var = 0;
+    dynamic :await_ctx_var;
+    return (core::_SyncIterator<dynamic>? :iterator) → core::bool* yielding {
       {
-        :iterator.{core::_SyncIterator::_current} = null;
-        [yield] true;
+        {
+          :iterator.{core::_SyncIterator::_current} = null;
+          [yield] true;
+        }
       }
-    }
-    return false;
+      return false;
+    };
   }
-  return new core::_SyncIterable::•<dynamic>(:sync_op);
+  return new core::_SyncIterable::•<dynamic>(:sync_op_gen);
 }
 static method getIterableBool() → core::Iterable<core::bool> /* originally sync* */ {
-  core::int :await_jump_var = 0;
-  dynamic :await_ctx_var;
-  function :sync_op(core::_SyncIterator<core::bool>? :iterator) → core::bool* yielding {
-    {
+  function :sync_op_gen() → (core::_SyncIterator<core::bool>?) → core::bool* {
+    core::int :await_jump_var = 0;
+    dynamic :await_ctx_var;
+    return (core::_SyncIterator<core::bool>? :iterator) → core::bool* yielding {
       {
-        :iterator.{core::_SyncIterator::_current} = true;
-        [yield] true;
+        {
+          :iterator.{core::_SyncIterator::_current} = true;
+          [yield] true;
+        }
       }
-    }
-    return false;
+      return false;
+    };
   }
-  return new core::_SyncIterable::•<core::bool>(:sync_op);
+  return new core::_SyncIterable::•<core::bool>(:sync_op_gen);
 }
 static method test1() → core::Iterable<core::bool> /* originally sync* */ {
-  core::int :await_jump_var = 0;
-  dynamic :await_ctx_var;
-  function :sync_op(core::_SyncIterator<core::bool>? :iterator) → core::bool* yielding {
-    {
+  function :sync_op_gen() → (core::_SyncIterator<core::bool>?) → core::bool* {
+    core::int :await_jump_var = 0;
+    dynamic :await_ctx_var;
+    return (core::_SyncIterator<core::bool>? :iterator) → core::bool* yielding {
       {
-        :iterator.{core::_SyncIterator::_current} = self::getNull() as{TypeError,ForDynamic,ForNonNullableByDefault} core::bool;
-        [yield] true;
+        {
+          :iterator.{core::_SyncIterator::_current} = self::getNull() as{TypeError,ForDynamic,ForNonNullableByDefault} core::bool;
+          [yield] true;
+        }
       }
-    }
-    return false;
+      return false;
+    };
   }
-  return new core::_SyncIterable::•<core::bool>(:sync_op);
+  return new core::_SyncIterable::•<core::bool>(:sync_op_gen);
 }
 static method test2() → core::Iterable<core::bool>
   return self::getNull() as{TypeError,ForDynamic,ForNonNullableByDefault} core::Iterable<core::bool>;
 static method test3() → core::bool
   return self::getNull() as{TypeError,ForDynamic,ForNonNullableByDefault} core::bool;
 static method test4() → core::Iterable<core::bool> /* originally sync* */ {
-  core::int :await_jump_var = 0;
-  dynamic :await_ctx_var;
-  function :sync_op(core::_SyncIterator<core::bool>? :iterator) → core::bool* yielding {
-    {
+  function :sync_op_gen() → (core::_SyncIterator<core::bool>?) → core::bool* {
+    core::int :await_jump_var = 0;
+    dynamic :await_ctx_var;
+    return (core::_SyncIterator<core::bool>? :iterator) → core::bool* yielding {
       {
-        :iterator.{core::_SyncIterator::_yieldEachIterable} = let final<BottomType> #t1 = invalid-expression "pkg/front_end/testcases/nnbd/issue41437b.dart:21:10: Error: A value of type 'Iterable<dynamic>' can't be assigned to a variable of type 'Iterable<bool>'.
+        {
+          :iterator.{core::_SyncIterator::_yieldEachIterable} = let final<BottomType> #t1 = invalid-expression "pkg/front_end/testcases/nnbd/issue41437b.dart:21:10: Error: A value of type 'Iterable<dynamic>' can't be assigned to a variable of type 'Iterable<bool>'.
  - 'Iterable' is from 'dart:core'.
   yield* getIterableNull(); // error
          ^" in self::getIterableNull() as{TypeError,ForNonNullableByDefault} core::Iterable<core::bool>;
-        [yield] true;
+          [yield] true;
+        }
       }
-    }
-    return false;
+      return false;
+    };
   }
-  return new core::_SyncIterable::•<core::bool>(:sync_op);
+  return new core::_SyncIterable::•<core::bool>(:sync_op_gen);
 }
 static method test5() → core::Iterable<core::bool>
   return let final<BottomType> #t2 = invalid-expression "pkg/front_end/testcases/nnbd/issue41437b.dart:24:27: Error: A value of type 'Iterable<dynamic>' can't be assigned to a variable of type 'Iterable<bool>'.
@@ -114,18 +122,20 @@
 static method test6() → core::Iterable<core::bool>
   return self::getIterableBool();
 static method test7() → core::Iterable<core::bool> /* originally sync* */ {
-  core::int :await_jump_var = 0;
-  dynamic :await_ctx_var;
-  function :sync_op(core::_SyncIterator<core::bool>? :iterator) → core::bool* yielding {
-    {
+  function :sync_op_gen() → (core::_SyncIterator<core::bool>?) → core::bool* {
+    core::int :await_jump_var = 0;
+    dynamic :await_ctx_var;
+    return (core::_SyncIterator<core::bool>? :iterator) → core::bool* yielding {
       {
-        :iterator.{core::_SyncIterator::_yieldEachIterable} = self::getIterableBool();
-        [yield] true;
+        {
+          :iterator.{core::_SyncIterator::_yieldEachIterable} = self::getIterableBool();
+          [yield] true;
+        }
       }
-    }
-    return false;
+      return false;
+    };
   }
-  return new core::_SyncIterable::•<core::bool>(:sync_op);
+  return new core::_SyncIterable::•<core::bool>(:sync_op_gen);
 }
 static method test() → dynamic /* originally async */ {
   final asy::_AsyncAwaitCompleter<dynamic> :async_completer = new asy::_AsyncAwaitCompleter::•<dynamic>();
@@ -140,39 +150,43 @@
       #L1:
       {
         function test1() → core::Iterable<core::bool> /* originally sync* */ {
-          core::int :await_jump_var = 0;
-          dynamic :await_ctx_var;
-          function :sync_op(core::_SyncIterator<core::bool>? :iterator) → core::bool* yielding {
-            {
+          function :sync_op_gen() → (core::_SyncIterator<core::bool>?) → core::bool* {
+            core::int :await_jump_var = 0;
+            dynamic :await_ctx_var;
+            return (core::_SyncIterator<core::bool>? :iterator) → core::bool* yielding {
               {
-                :iterator.{core::_SyncIterator::_current} = self::getNull() as{TypeError,ForDynamic,ForNonNullableByDefault} core::bool;
-                [yield] true;
+                {
+                  :iterator.{core::_SyncIterator::_current} = self::getNull() as{TypeError,ForDynamic,ForNonNullableByDefault} core::bool;
+                  [yield] true;
+                }
               }
-            }
-            return false;
+              return false;
+            };
           }
-          return new core::_SyncIterable::•<core::bool>(:sync_op);
+          return new core::_SyncIterable::•<core::bool>(:sync_op_gen);
         }
         function test2() → core::Iterable<core::bool>
           return self::getNull() as{TypeError,ForDynamic,ForNonNullableByDefault} core::Iterable<core::bool>;
         function test3() → core::bool
           return self::getNull() as{TypeError,ForDynamic,ForNonNullableByDefault} core::bool;
         function test4() → core::Iterable<core::bool> /* originally sync* */ {
-          core::int :await_jump_var = 0;
-          dynamic :await_ctx_var;
-          function :sync_op(core::_SyncIterator<core::bool>? :iterator) → core::bool* yielding {
-            {
+          function :sync_op_gen() → (core::_SyncIterator<core::bool>?) → core::bool* {
+            core::int :await_jump_var = 0;
+            dynamic :await_ctx_var;
+            return (core::_SyncIterator<core::bool>? :iterator) → core::bool* yielding {
               {
-                :iterator.{core::_SyncIterator::_yieldEachIterable} = let final<BottomType> #t3 = invalid-expression "pkg/front_end/testcases/nnbd/issue41437b.dart:38:12: Error: A value of type 'Iterable<dynamic>' can't be assigned to a variable of type 'Iterable<bool>'.
+                {
+                  :iterator.{core::_SyncIterator::_yieldEachIterable} = let final<BottomType> #t3 = invalid-expression "pkg/front_end/testcases/nnbd/issue41437b.dart:38:12: Error: A value of type 'Iterable<dynamic>' can't be assigned to a variable of type 'Iterable<bool>'.
  - 'Iterable' is from 'dart:core'.
     yield* getIterableNull(); // error
            ^" in self::getIterableNull() as{TypeError,ForNonNullableByDefault} core::Iterable<core::bool>;
-                [yield] true;
+                  [yield] true;
+                }
               }
-            }
-            return false;
+              return false;
+            };
           }
-          return new core::_SyncIterable::•<core::bool>(:sync_op);
+          return new core::_SyncIterable::•<core::bool>(:sync_op_gen);
         }
         function test5() → core::Iterable<core::bool>
           return let final<BottomType> #t4 = invalid-expression "pkg/front_end/testcases/nnbd/issue41437b.dart:41:29: Error: A value of type 'Iterable<dynamic>' can't be assigned to a variable of type 'Iterable<bool>'.
@@ -182,35 +196,39 @@
         function test6() → core::Iterable<core::bool>
           return self::getIterableBool();
         function test7() → core::Iterable<core::bool> /* originally sync* */ {
-          core::int :await_jump_var = 0;
-          dynamic :await_ctx_var;
-          function :sync_op(core::_SyncIterator<core::bool>? :iterator) → core::bool* yielding {
-            {
+          function :sync_op_gen() → (core::_SyncIterator<core::bool>?) → core::bool* {
+            core::int :await_jump_var = 0;
+            dynamic :await_ctx_var;
+            return (core::_SyncIterator<core::bool>? :iterator) → core::bool* yielding {
               {
-                :iterator.{core::_SyncIterator::_yieldEachIterable} = self::getIterableBool();
-                [yield] true;
+                {
+                  :iterator.{core::_SyncIterator::_yieldEachIterable} = self::getIterableBool();
+                  [yield] true;
+                }
               }
-            }
-            return false;
+              return false;
+            };
           }
-          return new core::_SyncIterable::•<core::bool>(:sync_op);
+          return new core::_SyncIterable::•<core::bool>(:sync_op_gen);
         }
         core::Iterable<core::bool> var1 = let final<BottomType> #t5 = invalid-expression "pkg/front_end/testcases/nnbd/issue41437b.dart:49:5: Error: A value of type 'Iterable<dynamic>' can't be assigned to a variable of type 'Iterable<bool>'.
  - 'Iterable' is from 'dart:core'.
   })(); // error
     ^" in (() → core::Iterable<dynamic> /* originally sync* */ {
-          core::int :await_jump_var = 0;
-          dynamic :await_ctx_var;
-          function :sync_op(core::_SyncIterator<dynamic>? :iterator) → core::bool* yielding {
-            {
+          function :sync_op_gen() → (core::_SyncIterator<dynamic>?) → core::bool* {
+            core::int :await_jump_var = 0;
+            dynamic :await_ctx_var;
+            return (core::_SyncIterator<dynamic>? :iterator) → core::bool* yielding {
               {
-                :iterator.{core::_SyncIterator::_current} = self::getNull();
-                [yield] true;
+                {
+                  :iterator.{core::_SyncIterator::_current} = self::getNull();
+                  [yield] true;
+                }
               }
-            }
-            return false;
+              return false;
+            };
           }
-          return new core::_SyncIterable::•<dynamic>(:sync_op);
+          return new core::_SyncIterable::•<dynamic>(:sync_op_gen);
         }).call() as{TypeError,ForNonNullableByDefault} core::Iterable<core::bool>;
         core::Iterable<core::bool> var2 = (() → dynamic => self::getNull()).call() as{TypeError,ForDynamic,ForNonNullableByDefault} core::Iterable<core::bool>;
         core::bool var3 = (() → dynamic => self::getNull()).call() as{TypeError,ForDynamic,ForNonNullableByDefault} core::bool;
@@ -218,18 +236,20 @@
  - 'Iterable' is from 'dart:core'.
   })(); // error
     ^" in (() → core::Iterable<dynamic> /* originally sync* */ {
-          core::int :await_jump_var = 0;
-          dynamic :await_ctx_var;
-          function :sync_op(core::_SyncIterator<dynamic>? :iterator) → core::bool* yielding {
-            {
+          function :sync_op_gen() → (core::_SyncIterator<dynamic>?) → core::bool* {
+            core::int :await_jump_var = 0;
+            dynamic :await_ctx_var;
+            return (core::_SyncIterator<dynamic>? :iterator) → core::bool* yielding {
               {
-                :iterator.{core::_SyncIterator::_yieldEachIterable} = self::getIterableNull();
-                [yield] true;
+                {
+                  :iterator.{core::_SyncIterator::_yieldEachIterable} = self::getIterableNull();
+                  [yield] true;
+                }
               }
-            }
-            return false;
+              return false;
+            };
           }
-          return new core::_SyncIterable::•<dynamic>(:sync_op);
+          return new core::_SyncIterable::•<dynamic>(:sync_op_gen);
         }).call() as{TypeError,ForNonNullableByDefault} core::Iterable<core::bool>;
         core::Iterable<core::bool> var5 = let final<BottomType> #t7 = invalid-expression "pkg/front_end/testcases/nnbd/issue41437b.dart:55:50: Error: A value of type 'Iterable<dynamic>' can't be assigned to a variable of type 'Iterable<bool>'.
  - 'Iterable' is from 'dart:core'.
@@ -237,25 +257,27 @@
                                                  ^" in (() → core::Iterable<dynamic> => self::getIterableNull()).call() as{TypeError,ForNonNullableByDefault} core::Iterable<core::bool>;
         core::Iterable<core::bool> var6 = (() → core::Iterable<core::bool> => self::getIterableBool()).call();
         core::Iterable<core::bool> var7 = (() → core::Iterable<core::bool> /* originally sync* */ {
-          core::int :await_jump_var = 0;
-          dynamic :await_ctx_var;
-          function :sync_op(core::_SyncIterator<core::bool>? :iterator) → core::bool* yielding {
-            {
+          function :sync_op_gen() → (core::_SyncIterator<core::bool>?) → core::bool* {
+            core::int :await_jump_var = 0;
+            dynamic :await_ctx_var;
+            return (core::_SyncIterator<core::bool>? :iterator) → core::bool* yielding {
               {
-                :iterator.{core::_SyncIterator::_yieldEachIterable} = self::getIterableBool();
-                [yield] true;
+                {
+                  :iterator.{core::_SyncIterator::_yieldEachIterable} = self::getIterableBool();
+                  [yield] true;
+                }
               }
-            }
-            return false;
+              return false;
+            };
           }
-          return new core::_SyncIterable::•<core::bool>(:sync_op);
+          return new core::_SyncIterable::•<core::bool>(:sync_op_gen);
         }).call();
       }
       asy::_completeOnAsyncReturn(:async_completer, :return_value);
       return;
     }
-    on dynamic catch(dynamic :exception, core::StackTrace :stack_trace) {
-      :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+    on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
+      :async_completer.{asy::Completer::completeError}(exception, stack_trace);
     }
   :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
diff --git a/pkg/front_end/testcases/nnbd/issue41437b.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/issue41437b.dart.weak.transformed.expect
index 07830cd..32e2663 100644
--- a/pkg/front_end/testcases/nnbd/issue41437b.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/issue41437b.dart.weak.transformed.expect
@@ -44,67 +44,75 @@
 static method getNull() → dynamic
   return null;
 static method getIterableNull() → core::Iterable<dynamic> /* originally sync* */ {
-  core::int :await_jump_var = 0;
-  dynamic :await_ctx_var;
-  function :sync_op(core::_SyncIterator<dynamic>? :iterator) → core::bool* yielding {
-    {
+  function :sync_op_gen() → (core::_SyncIterator<dynamic>?) → core::bool* {
+    core::int :await_jump_var = 0;
+    dynamic :await_ctx_var;
+    return (core::_SyncIterator<dynamic>? :iterator) → core::bool* yielding {
       {
-        :iterator.{core::_SyncIterator::_current} = null;
-        [yield] true;
+        {
+          :iterator.{core::_SyncIterator::_current} = null;
+          [yield] true;
+        }
       }
-    }
-    return false;
+      return false;
+    };
   }
-  return new core::_SyncIterable::•<dynamic>(:sync_op);
+  return new core::_SyncIterable::•<dynamic>(:sync_op_gen);
 }
 static method getIterableBool() → core::Iterable<core::bool> /* originally sync* */ {
-  core::int :await_jump_var = 0;
-  dynamic :await_ctx_var;
-  function :sync_op(core::_SyncIterator<core::bool>? :iterator) → core::bool* yielding {
-    {
+  function :sync_op_gen() → (core::_SyncIterator<core::bool>?) → core::bool* {
+    core::int :await_jump_var = 0;
+    dynamic :await_ctx_var;
+    return (core::_SyncIterator<core::bool>? :iterator) → core::bool* yielding {
       {
-        :iterator.{core::_SyncIterator::_current} = true;
-        [yield] true;
+        {
+          :iterator.{core::_SyncIterator::_current} = true;
+          [yield] true;
+        }
       }
-    }
-    return false;
+      return false;
+    };
   }
-  return new core::_SyncIterable::•<core::bool>(:sync_op);
+  return new core::_SyncIterable::•<core::bool>(:sync_op_gen);
 }
 static method test1() → core::Iterable<core::bool> /* originally sync* */ {
-  core::int :await_jump_var = 0;
-  dynamic :await_ctx_var;
-  function :sync_op(core::_SyncIterator<core::bool>? :iterator) → core::bool* yielding {
-    {
+  function :sync_op_gen() → (core::_SyncIterator<core::bool>?) → core::bool* {
+    core::int :await_jump_var = 0;
+    dynamic :await_ctx_var;
+    return (core::_SyncIterator<core::bool>? :iterator) → core::bool* yielding {
       {
-        :iterator.{core::_SyncIterator::_current} = self::getNull() as{TypeError,ForDynamic,ForNonNullableByDefault} core::bool;
-        [yield] true;
+        {
+          :iterator.{core::_SyncIterator::_current} = self::getNull() as{TypeError,ForDynamic,ForNonNullableByDefault} core::bool;
+          [yield] true;
+        }
       }
-    }
-    return false;
+      return false;
+    };
   }
-  return new core::_SyncIterable::•<core::bool>(:sync_op);
+  return new core::_SyncIterable::•<core::bool>(:sync_op_gen);
 }
 static method test2() → core::Iterable<core::bool>
   return self::getNull() as{TypeError,ForDynamic,ForNonNullableByDefault} core::Iterable<core::bool>;
 static method test3() → core::bool
   return self::getNull() as{TypeError,ForDynamic,ForNonNullableByDefault} core::bool;
 static method test4() → core::Iterable<core::bool> /* originally sync* */ {
-  core::int :await_jump_var = 0;
-  dynamic :await_ctx_var;
-  function :sync_op(core::_SyncIterator<core::bool>? :iterator) → core::bool* yielding {
-    {
+  function :sync_op_gen() → (core::_SyncIterator<core::bool>?) → core::bool* {
+    core::int :await_jump_var = 0;
+    dynamic :await_ctx_var;
+    return (core::_SyncIterator<core::bool>? :iterator) → core::bool* yielding {
       {
-        :iterator.{core::_SyncIterator::_yieldEachIterable} = let final<BottomType> #t1 = invalid-expression "pkg/front_end/testcases/nnbd/issue41437b.dart:21:10: Error: A value of type 'Iterable<dynamic>' can't be assigned to a variable of type 'Iterable<bool>'.
+        {
+          :iterator.{core::_SyncIterator::_yieldEachIterable} = let final<BottomType> #t1 = invalid-expression "pkg/front_end/testcases/nnbd/issue41437b.dart:21:10: Error: A value of type 'Iterable<dynamic>' can't be assigned to a variable of type 'Iterable<bool>'.
  - 'Iterable' is from 'dart:core'.
   yield* getIterableNull(); // error
          ^" in self::getIterableNull() as{TypeError,ForNonNullableByDefault} core::Iterable<core::bool>;
-        [yield] true;
+          [yield] true;
+        }
       }
-    }
-    return false;
+      return false;
+    };
   }
-  return new core::_SyncIterable::•<core::bool>(:sync_op);
+  return new core::_SyncIterable::•<core::bool>(:sync_op_gen);
 }
 static method test5() → core::Iterable<core::bool>
   return let final<BottomType> #t2 = invalid-expression "pkg/front_end/testcases/nnbd/issue41437b.dart:24:27: Error: A value of type 'Iterable<dynamic>' can't be assigned to a variable of type 'Iterable<bool>'.
@@ -114,18 +122,20 @@
 static method test6() → core::Iterable<core::bool>
   return self::getIterableBool();
 static method test7() → core::Iterable<core::bool> /* originally sync* */ {
-  core::int :await_jump_var = 0;
-  dynamic :await_ctx_var;
-  function :sync_op(core::_SyncIterator<core::bool>? :iterator) → core::bool* yielding {
-    {
+  function :sync_op_gen() → (core::_SyncIterator<core::bool>?) → core::bool* {
+    core::int :await_jump_var = 0;
+    dynamic :await_ctx_var;
+    return (core::_SyncIterator<core::bool>? :iterator) → core::bool* yielding {
       {
-        :iterator.{core::_SyncIterator::_yieldEachIterable} = self::getIterableBool();
-        [yield] true;
+        {
+          :iterator.{core::_SyncIterator::_yieldEachIterable} = self::getIterableBool();
+          [yield] true;
+        }
       }
-    }
-    return false;
+      return false;
+    };
   }
-  return new core::_SyncIterable::•<core::bool>(:sync_op);
+  return new core::_SyncIterable::•<core::bool>(:sync_op_gen);
 }
 static method test() → dynamic /* originally async */ {
   final asy::_AsyncAwaitCompleter<dynamic> :async_completer = new asy::_AsyncAwaitCompleter::•<dynamic>();
@@ -140,39 +150,43 @@
       #L1:
       {
         function test1() → core::Iterable<core::bool> /* originally sync* */ {
-          core::int :await_jump_var = 0;
-          dynamic :await_ctx_var;
-          function :sync_op(core::_SyncIterator<core::bool>? :iterator) → core::bool* yielding {
-            {
+          function :sync_op_gen() → (core::_SyncIterator<core::bool>?) → core::bool* {
+            core::int :await_jump_var = 0;
+            dynamic :await_ctx_var;
+            return (core::_SyncIterator<core::bool>? :iterator) → core::bool* yielding {
               {
-                :iterator.{core::_SyncIterator::_current} = self::getNull() as{TypeError,ForDynamic,ForNonNullableByDefault} core::bool;
-                [yield] true;
+                {
+                  :iterator.{core::_SyncIterator::_current} = self::getNull() as{TypeError,ForDynamic,ForNonNullableByDefault} core::bool;
+                  [yield] true;
+                }
               }
-            }
-            return false;
+              return false;
+            };
           }
-          return new core::_SyncIterable::•<core::bool>(:sync_op);
+          return new core::_SyncIterable::•<core::bool>(:sync_op_gen);
         }
         function test2() → core::Iterable<core::bool>
           return self::getNull() as{TypeError,ForDynamic,ForNonNullableByDefault} core::Iterable<core::bool>;
         function test3() → core::bool
           return self::getNull() as{TypeError,ForDynamic,ForNonNullableByDefault} core::bool;
         function test4() → core::Iterable<core::bool> /* originally sync* */ {
-          core::int :await_jump_var = 0;
-          dynamic :await_ctx_var;
-          function :sync_op(core::_SyncIterator<core::bool>? :iterator) → core::bool* yielding {
-            {
+          function :sync_op_gen() → (core::_SyncIterator<core::bool>?) → core::bool* {
+            core::int :await_jump_var = 0;
+            dynamic :await_ctx_var;
+            return (core::_SyncIterator<core::bool>? :iterator) → core::bool* yielding {
               {
-                :iterator.{core::_SyncIterator::_yieldEachIterable} = let final<BottomType> #t3 = invalid-expression "pkg/front_end/testcases/nnbd/issue41437b.dart:38:12: Error: A value of type 'Iterable<dynamic>' can't be assigned to a variable of type 'Iterable<bool>'.
+                {
+                  :iterator.{core::_SyncIterator::_yieldEachIterable} = let final<BottomType> #t3 = invalid-expression "pkg/front_end/testcases/nnbd/issue41437b.dart:38:12: Error: A value of type 'Iterable<dynamic>' can't be assigned to a variable of type 'Iterable<bool>'.
  - 'Iterable' is from 'dart:core'.
     yield* getIterableNull(); // error
            ^" in self::getIterableNull() as{TypeError,ForNonNullableByDefault} core::Iterable<core::bool>;
-                [yield] true;
+                  [yield] true;
+                }
               }
-            }
-            return false;
+              return false;
+            };
           }
-          return new core::_SyncIterable::•<core::bool>(:sync_op);
+          return new core::_SyncIterable::•<core::bool>(:sync_op_gen);
         }
         function test5() → core::Iterable<core::bool>
           return let final<BottomType> #t4 = invalid-expression "pkg/front_end/testcases/nnbd/issue41437b.dart:41:29: Error: A value of type 'Iterable<dynamic>' can't be assigned to a variable of type 'Iterable<bool>'.
@@ -182,35 +196,39 @@
         function test6() → core::Iterable<core::bool>
           return self::getIterableBool();
         function test7() → core::Iterable<core::bool> /* originally sync* */ {
-          core::int :await_jump_var = 0;
-          dynamic :await_ctx_var;
-          function :sync_op(core::_SyncIterator<core::bool>? :iterator) → core::bool* yielding {
-            {
+          function :sync_op_gen() → (core::_SyncIterator<core::bool>?) → core::bool* {
+            core::int :await_jump_var = 0;
+            dynamic :await_ctx_var;
+            return (core::_SyncIterator<core::bool>? :iterator) → core::bool* yielding {
               {
-                :iterator.{core::_SyncIterator::_yieldEachIterable} = self::getIterableBool();
-                [yield] true;
+                {
+                  :iterator.{core::_SyncIterator::_yieldEachIterable} = self::getIterableBool();
+                  [yield] true;
+                }
               }
-            }
-            return false;
+              return false;
+            };
           }
-          return new core::_SyncIterable::•<core::bool>(:sync_op);
+          return new core::_SyncIterable::•<core::bool>(:sync_op_gen);
         }
         core::Iterable<core::bool> var1 = let final<BottomType> #t5 = invalid-expression "pkg/front_end/testcases/nnbd/issue41437b.dart:49:5: Error: A value of type 'Iterable<dynamic>' can't be assigned to a variable of type 'Iterable<bool>'.
  - 'Iterable' is from 'dart:core'.
   })(); // error
     ^" in (() → core::Iterable<dynamic> /* originally sync* */ {
-          core::int :await_jump_var = 0;
-          dynamic :await_ctx_var;
-          function :sync_op(core::_SyncIterator<dynamic>? :iterator) → core::bool* yielding {
-            {
+          function :sync_op_gen() → (core::_SyncIterator<dynamic>?) → core::bool* {
+            core::int :await_jump_var = 0;
+            dynamic :await_ctx_var;
+            return (core::_SyncIterator<dynamic>? :iterator) → core::bool* yielding {
               {
-                :iterator.{core::_SyncIterator::_current} = self::getNull();
-                [yield] true;
+                {
+                  :iterator.{core::_SyncIterator::_current} = self::getNull();
+                  [yield] true;
+                }
               }
-            }
-            return false;
+              return false;
+            };
           }
-          return new core::_SyncIterable::•<dynamic>(:sync_op);
+          return new core::_SyncIterable::•<dynamic>(:sync_op_gen);
         }).call() as{TypeError,ForNonNullableByDefault} core::Iterable<core::bool>;
         core::Iterable<core::bool> var2 = (() → dynamic => self::getNull()).call() as{TypeError,ForDynamic,ForNonNullableByDefault} core::Iterable<core::bool>;
         core::bool var3 = (() → dynamic => self::getNull()).call() as{TypeError,ForDynamic,ForNonNullableByDefault} core::bool;
@@ -218,18 +236,20 @@
  - 'Iterable' is from 'dart:core'.
   })(); // error
     ^" in (() → core::Iterable<dynamic> /* originally sync* */ {
-          core::int :await_jump_var = 0;
-          dynamic :await_ctx_var;
-          function :sync_op(core::_SyncIterator<dynamic>? :iterator) → core::bool* yielding {
-            {
+          function :sync_op_gen() → (core::_SyncIterator<dynamic>?) → core::bool* {
+            core::int :await_jump_var = 0;
+            dynamic :await_ctx_var;
+            return (core::_SyncIterator<dynamic>? :iterator) → core::bool* yielding {
               {
-                :iterator.{core::_SyncIterator::_yieldEachIterable} = self::getIterableNull();
-                [yield] true;
+                {
+                  :iterator.{core::_SyncIterator::_yieldEachIterable} = self::getIterableNull();
+                  [yield] true;
+                }
               }
-            }
-            return false;
+              return false;
+            };
           }
-          return new core::_SyncIterable::•<dynamic>(:sync_op);
+          return new core::_SyncIterable::•<dynamic>(:sync_op_gen);
         }).call() as{TypeError,ForNonNullableByDefault} core::Iterable<core::bool>;
         core::Iterable<core::bool> var5 = let final<BottomType> #t7 = invalid-expression "pkg/front_end/testcases/nnbd/issue41437b.dart:55:50: Error: A value of type 'Iterable<dynamic>' can't be assigned to a variable of type 'Iterable<bool>'.
  - 'Iterable' is from 'dart:core'.
@@ -237,25 +257,27 @@
                                                  ^" in (() → core::Iterable<dynamic> => self::getIterableNull()).call() as{TypeError,ForNonNullableByDefault} core::Iterable<core::bool>;
         core::Iterable<core::bool> var6 = (() → core::Iterable<core::bool> => self::getIterableBool()).call();
         core::Iterable<core::bool> var7 = (() → core::Iterable<core::bool> /* originally sync* */ {
-          core::int :await_jump_var = 0;
-          dynamic :await_ctx_var;
-          function :sync_op(core::_SyncIterator<core::bool>? :iterator) → core::bool* yielding {
-            {
+          function :sync_op_gen() → (core::_SyncIterator<core::bool>?) → core::bool* {
+            core::int :await_jump_var = 0;
+            dynamic :await_ctx_var;
+            return (core::_SyncIterator<core::bool>? :iterator) → core::bool* yielding {
               {
-                :iterator.{core::_SyncIterator::_yieldEachIterable} = self::getIterableBool();
-                [yield] true;
+                {
+                  :iterator.{core::_SyncIterator::_yieldEachIterable} = self::getIterableBool();
+                  [yield] true;
+                }
               }
-            }
-            return false;
+              return false;
+            };
           }
-          return new core::_SyncIterable::•<core::bool>(:sync_op);
+          return new core::_SyncIterable::•<core::bool>(:sync_op_gen);
         }).call();
       }
       asy::_completeOnAsyncReturn(:async_completer, :return_value);
       return;
     }
-    on dynamic catch(dynamic :exception, core::StackTrace :stack_trace) {
-      :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+    on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
+      :async_completer.{asy::Completer::completeError}(exception, stack_trace);
     }
   :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
diff --git a/pkg/front_end/testcases/nnbd/issue41437c.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/issue41437c.dart.strong.transformed.expect
index 26e901c..cf1bf6a 100644
--- a/pkg/front_end/testcases/nnbd/issue41437c.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/issue41437c.dart.strong.transformed.expect
@@ -65,8 +65,8 @@
         }
         return;
       }
-      on dynamic catch(dynamic :exception, core::StackTrace :stack_trace) {
-        :controller.{asy::_AsyncStarStreamController::addError}(:exception, :stack_trace);
+      on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
+        :controller.{asy::_AsyncStarStreamController::addError}(exception, stack_trace);
       }
     finally {
       :controller.{asy::_AsyncStarStreamController::close}();
@@ -100,8 +100,8 @@
         }
         return;
       }
-      on dynamic catch(dynamic :exception, core::StackTrace :stack_trace) {
-        :controller.{asy::_AsyncStarStreamController::addError}(:exception, :stack_trace);
+      on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
+        :controller.{asy::_AsyncStarStreamController::addError}(exception, stack_trace);
       }
     finally {
       :controller.{asy::_AsyncStarStreamController::close}();
@@ -135,8 +135,8 @@
         }
         return;
       }
-      on dynamic catch(dynamic :exception, core::StackTrace :stack_trace) {
-        :controller.{asy::_AsyncStarStreamController::addError}(:exception, :stack_trace);
+      on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
+        :controller.{asy::_AsyncStarStreamController::addError}(exception, stack_trace);
       }
     finally {
       :controller.{asy::_AsyncStarStreamController::close}();
@@ -177,8 +177,8 @@
         }
         return;
       }
-      on dynamic catch(dynamic :exception, core::StackTrace :stack_trace) {
-        :controller.{asy::_AsyncStarStreamController::addError}(:exception, :stack_trace);
+      on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
+        :controller.{asy::_AsyncStarStreamController::addError}(exception, stack_trace);
       }
     finally {
       :controller.{asy::_AsyncStarStreamController::close}();
@@ -219,8 +219,8 @@
         }
         return;
       }
-      on dynamic catch(dynamic :exception, core::StackTrace :stack_trace) {
-        :controller.{asy::_AsyncStarStreamController::addError}(:exception, :stack_trace);
+      on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
+        :controller.{asy::_AsyncStarStreamController::addError}(exception, stack_trace);
       }
     finally {
       :controller.{asy::_AsyncStarStreamController::close}();
@@ -266,8 +266,8 @@
                 }
                 return;
               }
-              on dynamic catch(dynamic :exception, core::StackTrace :stack_trace) {
-                :controller.{asy::_AsyncStarStreamController::addError}(:exception, :stack_trace);
+              on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
+                :controller.{asy::_AsyncStarStreamController::addError}(exception, stack_trace);
               }
             finally {
               :controller.{asy::_AsyncStarStreamController::close}();
@@ -308,8 +308,8 @@
                 }
                 return;
               }
-              on dynamic catch(dynamic :exception, core::StackTrace :stack_trace) {
-                :controller.{asy::_AsyncStarStreamController::addError}(:exception, :stack_trace);
+              on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
+                :controller.{asy::_AsyncStarStreamController::addError}(exception, stack_trace);
               }
             finally {
               :controller.{asy::_AsyncStarStreamController::close}();
@@ -350,8 +350,8 @@
                 }
                 return;
               }
-              on dynamic catch(dynamic :exception, core::StackTrace :stack_trace) {
-                :controller.{asy::_AsyncStarStreamController::addError}(:exception, :stack_trace);
+              on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
+                :controller.{asy::_AsyncStarStreamController::addError}(exception, stack_trace);
               }
             finally {
               :controller.{asy::_AsyncStarStreamController::close}();
@@ -388,8 +388,8 @@
                 }
                 return;
               }
-              on dynamic catch(dynamic :exception, core::StackTrace :stack_trace) {
-                :controller.{asy::_AsyncStarStreamController::addError}(:exception, :stack_trace);
+              on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
+                :controller.{asy::_AsyncStarStreamController::addError}(exception, stack_trace);
               }
             finally {
               :controller.{asy::_AsyncStarStreamController::close}();
@@ -428,8 +428,8 @@
                 }
                 return;
               }
-              on dynamic catch(dynamic :exception, core::StackTrace :stack_trace) {
-                :controller.{asy::_AsyncStarStreamController::addError}(:exception, :stack_trace);
+              on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
+                :controller.{asy::_AsyncStarStreamController::addError}(exception, stack_trace);
               }
             finally {
               :controller.{asy::_AsyncStarStreamController::close}();
@@ -468,8 +468,8 @@
                 }
                 return;
               }
-              on dynamic catch(dynamic :exception, core::StackTrace :stack_trace) {
-                :controller.{asy::_AsyncStarStreamController::addError}(:exception, :stack_trace);
+              on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
+                :controller.{asy::_AsyncStarStreamController::addError}(exception, stack_trace);
               }
             finally {
               :controller.{asy::_AsyncStarStreamController::close}();
@@ -485,8 +485,8 @@
       asy::_completeOnAsyncReturn(:async_completer, :return_value);
       return;
     }
-    on dynamic catch(dynamic :exception, core::StackTrace :stack_trace) {
-      :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+    on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
+      :async_completer.{asy::Completer::completeError}(exception, stack_trace);
     }
   :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
diff --git a/pkg/front_end/testcases/nnbd/issue41437c.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/issue41437c.dart.weak.transformed.expect
index 26e901c..cf1bf6a 100644
--- a/pkg/front_end/testcases/nnbd/issue41437c.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/issue41437c.dart.weak.transformed.expect
@@ -65,8 +65,8 @@
         }
         return;
       }
-      on dynamic catch(dynamic :exception, core::StackTrace :stack_trace) {
-        :controller.{asy::_AsyncStarStreamController::addError}(:exception, :stack_trace);
+      on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
+        :controller.{asy::_AsyncStarStreamController::addError}(exception, stack_trace);
       }
     finally {
       :controller.{asy::_AsyncStarStreamController::close}();
@@ -100,8 +100,8 @@
         }
         return;
       }
-      on dynamic catch(dynamic :exception, core::StackTrace :stack_trace) {
-        :controller.{asy::_AsyncStarStreamController::addError}(:exception, :stack_trace);
+      on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
+        :controller.{asy::_AsyncStarStreamController::addError}(exception, stack_trace);
       }
     finally {
       :controller.{asy::_AsyncStarStreamController::close}();
@@ -135,8 +135,8 @@
         }
         return;
       }
-      on dynamic catch(dynamic :exception, core::StackTrace :stack_trace) {
-        :controller.{asy::_AsyncStarStreamController::addError}(:exception, :stack_trace);
+      on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
+        :controller.{asy::_AsyncStarStreamController::addError}(exception, stack_trace);
       }
     finally {
       :controller.{asy::_AsyncStarStreamController::close}();
@@ -177,8 +177,8 @@
         }
         return;
       }
-      on dynamic catch(dynamic :exception, core::StackTrace :stack_trace) {
-        :controller.{asy::_AsyncStarStreamController::addError}(:exception, :stack_trace);
+      on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
+        :controller.{asy::_AsyncStarStreamController::addError}(exception, stack_trace);
       }
     finally {
       :controller.{asy::_AsyncStarStreamController::close}();
@@ -219,8 +219,8 @@
         }
         return;
       }
-      on dynamic catch(dynamic :exception, core::StackTrace :stack_trace) {
-        :controller.{asy::_AsyncStarStreamController::addError}(:exception, :stack_trace);
+      on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
+        :controller.{asy::_AsyncStarStreamController::addError}(exception, stack_trace);
       }
     finally {
       :controller.{asy::_AsyncStarStreamController::close}();
@@ -266,8 +266,8 @@
                 }
                 return;
               }
-              on dynamic catch(dynamic :exception, core::StackTrace :stack_trace) {
-                :controller.{asy::_AsyncStarStreamController::addError}(:exception, :stack_trace);
+              on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
+                :controller.{asy::_AsyncStarStreamController::addError}(exception, stack_trace);
               }
             finally {
               :controller.{asy::_AsyncStarStreamController::close}();
@@ -308,8 +308,8 @@
                 }
                 return;
               }
-              on dynamic catch(dynamic :exception, core::StackTrace :stack_trace) {
-                :controller.{asy::_AsyncStarStreamController::addError}(:exception, :stack_trace);
+              on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
+                :controller.{asy::_AsyncStarStreamController::addError}(exception, stack_trace);
               }
             finally {
               :controller.{asy::_AsyncStarStreamController::close}();
@@ -350,8 +350,8 @@
                 }
                 return;
               }
-              on dynamic catch(dynamic :exception, core::StackTrace :stack_trace) {
-                :controller.{asy::_AsyncStarStreamController::addError}(:exception, :stack_trace);
+              on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
+                :controller.{asy::_AsyncStarStreamController::addError}(exception, stack_trace);
               }
             finally {
               :controller.{asy::_AsyncStarStreamController::close}();
@@ -388,8 +388,8 @@
                 }
                 return;
               }
-              on dynamic catch(dynamic :exception, core::StackTrace :stack_trace) {
-                :controller.{asy::_AsyncStarStreamController::addError}(:exception, :stack_trace);
+              on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
+                :controller.{asy::_AsyncStarStreamController::addError}(exception, stack_trace);
               }
             finally {
               :controller.{asy::_AsyncStarStreamController::close}();
@@ -428,8 +428,8 @@
                 }
                 return;
               }
-              on dynamic catch(dynamic :exception, core::StackTrace :stack_trace) {
-                :controller.{asy::_AsyncStarStreamController::addError}(:exception, :stack_trace);
+              on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
+                :controller.{asy::_AsyncStarStreamController::addError}(exception, stack_trace);
               }
             finally {
               :controller.{asy::_AsyncStarStreamController::close}();
@@ -468,8 +468,8 @@
                 }
                 return;
               }
-              on dynamic catch(dynamic :exception, core::StackTrace :stack_trace) {
-                :controller.{asy::_AsyncStarStreamController::addError}(:exception, :stack_trace);
+              on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
+                :controller.{asy::_AsyncStarStreamController::addError}(exception, stack_trace);
               }
             finally {
               :controller.{asy::_AsyncStarStreamController::close}();
@@ -485,8 +485,8 @@
       asy::_completeOnAsyncReturn(:async_completer, :return_value);
       return;
     }
-    on dynamic catch(dynamic :exception, core::StackTrace :stack_trace) {
-      :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+    on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
+      :async_completer.{asy::Completer::completeError}(exception, stack_trace);
     }
   :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
diff --git a/pkg/front_end/testcases/nnbd/issue41498.dart.outline.expect b/pkg/front_end/testcases/nnbd/issue41498.dart.outline.expect
index b4fdb09..14ca504 100644
--- a/pkg/front_end/testcases/nnbd/issue41498.dart.outline.expect
+++ b/pkg/front_end/testcases/nnbd/issue41498.dart.outline.expect
@@ -29,6 +29,16 @@
     ;
   method test2() → void
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method test() → dynamic
   ;
diff --git a/pkg/front_end/testcases/nnbd/issue41498.dart.strong.expect b/pkg/front_end/testcases/nnbd/issue41498.dart.strong.expect
index f2f0faa..eb65bba 100644
--- a/pkg/front_end/testcases/nnbd/issue41498.dart.strong.expect
+++ b/pkg/front_end/testcases/nnbd/issue41498.dart.strong.expect
@@ -73,6 +73,16 @@
     () →* void f;
     f.{core::Object::toString}();
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method test() → dynamic {
   () →* void f;
diff --git a/pkg/front_end/testcases/nnbd/issue41498.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/issue41498.dart.strong.transformed.expect
index f2f0faa..eb65bba 100644
--- a/pkg/front_end/testcases/nnbd/issue41498.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/issue41498.dart.strong.transformed.expect
@@ -73,6 +73,16 @@
     () →* void f;
     f.{core::Object::toString}();
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method test() → dynamic {
   () →* void f;
diff --git a/pkg/front_end/testcases/nnbd/issue41498.dart.weak.expect b/pkg/front_end/testcases/nnbd/issue41498.dart.weak.expect
index f2f0faa..eb65bba 100644
--- a/pkg/front_end/testcases/nnbd/issue41498.dart.weak.expect
+++ b/pkg/front_end/testcases/nnbd/issue41498.dart.weak.expect
@@ -73,6 +73,16 @@
     () →* void f;
     f.{core::Object::toString}();
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method test() → dynamic {
   () →* void f;
diff --git a/pkg/front_end/testcases/nnbd/issue41498.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/issue41498.dart.weak.transformed.expect
index f2f0faa..eb65bba 100644
--- a/pkg/front_end/testcases/nnbd/issue41498.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/issue41498.dart.weak.transformed.expect
@@ -73,6 +73,16 @@
     () →* void f;
     f.{core::Object::toString}();
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method test() → dynamic {
   () →* void f;
diff --git a/pkg/front_end/testcases/nnbd/issue41498b.dart.outline.expect b/pkg/front_end/testcases/nnbd/issue41498b.dart.outline.expect
index 86599c8..f480629 100644
--- a/pkg/front_end/testcases/nnbd/issue41498b.dart.outline.expect
+++ b/pkg/front_end/testcases/nnbd/issue41498b.dart.outline.expect
@@ -12,6 +12,16 @@
     ;
   method test2() → void
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method test() → dynamic
   ;
diff --git a/pkg/front_end/testcases/nnbd/issue41498b.dart.strong.expect b/pkg/front_end/testcases/nnbd/issue41498b.dart.strong.expect
index 6d86cf5..0a74101 100644
--- a/pkg/front_end/testcases/nnbd/issue41498b.dart.strong.expect
+++ b/pkg/front_end/testcases/nnbd/issue41498b.dart.strong.expect
@@ -18,6 +18,16 @@
     () →* void f;
     f.{core::Object::toString}();
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method test() → dynamic {
   () →* void f;
diff --git a/pkg/front_end/testcases/nnbd/issue41498b.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/issue41498b.dart.strong.transformed.expect
index 6d86cf5..0a74101 100644
--- a/pkg/front_end/testcases/nnbd/issue41498b.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/issue41498b.dart.strong.transformed.expect
@@ -18,6 +18,16 @@
     () →* void f;
     f.{core::Object::toString}();
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method test() → dynamic {
   () →* void f;
diff --git a/pkg/front_end/testcases/nnbd/issue41498b.dart.weak.expect b/pkg/front_end/testcases/nnbd/issue41498b.dart.weak.expect
index 6d86cf5..0a74101 100644
--- a/pkg/front_end/testcases/nnbd/issue41498b.dart.weak.expect
+++ b/pkg/front_end/testcases/nnbd/issue41498b.dart.weak.expect
@@ -18,6 +18,16 @@
     () →* void f;
     f.{core::Object::toString}();
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method test() → dynamic {
   () →* void f;
diff --git a/pkg/front_end/testcases/nnbd/issue41498b.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/issue41498b.dart.weak.transformed.expect
index 6d86cf5..0a74101 100644
--- a/pkg/front_end/testcases/nnbd/issue41498b.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/issue41498b.dart.weak.transformed.expect
@@ -18,6 +18,16 @@
     () →* void f;
     f.{core::Object::toString}();
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method test() → dynamic {
   () →* void f;
diff --git a/pkg/front_end/testcases/nnbd/issue41567.dart.outline.expect b/pkg/front_end/testcases/nnbd/issue41567.dart.outline.expect
index 4214a62..d4c4254 100644
--- a/pkg/front_end/testcases/nnbd/issue41567.dart.outline.expect
+++ b/pkg/front_end/testcases/nnbd/issue41567.dart.outline.expect
@@ -47,6 +47,16 @@
 class A<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → iss::A<iss::A::T*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class out_int extends iss::A<core::int*> {
   synthetic constructor •() → iss::out_int*
diff --git a/pkg/front_end/testcases/nnbd/issue41567.dart.strong.expect b/pkg/front_end/testcases/nnbd/issue41567.dart.strong.expect
index 5ae9d25..1d75a33 100644
--- a/pkg/front_end/testcases/nnbd/issue41567.dart.strong.expect
+++ b/pkg/front_end/testcases/nnbd/issue41567.dart.strong.expect
@@ -52,6 +52,16 @@
   synthetic constructor •() → iss::A<iss::A::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class out_int extends iss::A<core::int*> {
   synthetic constructor •() → iss::out_int*
diff --git a/pkg/front_end/testcases/nnbd/issue41567.dart.weak.expect b/pkg/front_end/testcases/nnbd/issue41567.dart.weak.expect
index 5ae9d25..1d75a33 100644
--- a/pkg/front_end/testcases/nnbd/issue41567.dart.weak.expect
+++ b/pkg/front_end/testcases/nnbd/issue41567.dart.weak.expect
@@ -52,6 +52,16 @@
   synthetic constructor •() → iss::A<iss::A::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class out_int extends iss::A<core::int*> {
   synthetic constructor •() → iss::out_int*
diff --git a/pkg/front_end/testcases/nnbd/later.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/later.dart.strong.transformed.expect
index 13a5cc4..dabee80 100644
--- a/pkg/front_end/testcases/nnbd/later.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/later.dart.strong.transformed.expect
@@ -109,7 +109,7 @@
     core::print("baz");
   }
   {
-    core::Iterator<core::String*> :sync-for-iterator = <core::String>["baz"].{core::Iterable::iterator};
+    core::Iterator<core::String> :sync-for-iterator = <core::String>["baz"].{core::Iterable::iterator};
     for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
       core::String s = :sync-for-iterator.{core::Iterator::current};
       {
@@ -140,7 +140,7 @@
       #L1:
       {
         {
-          asy::Stream<core::String*>* :stream = asy::Stream::fromIterable<core::String>(<core::String>["hest"]);
+          asy::Stream<core::String> :stream = asy::Stream::fromIterable<core::String>(<core::String>["hest"]);
           asy::_asyncStarListenHelper(:stream, :async_op);
           asy::_StreamIterator<core::String>? :for-iterator = new asy::_StreamIterator::•<core::String>(:stream);
           try
@@ -148,7 +148,7 @@
             while (true) {
               dynamic #t2 = asy::_asyncStarMoveNextHelper(:stream);
               [yield] let dynamic #t3 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::moveNext}(), :async_op_then, :async_op_error, :async_op) in null;
-              if(_in::unsafeCast<core::bool*>(:result)) {
+              if(_in::unsafeCast<core::bool>(:result)) {
                 core::String s = :for-iterator.{asy::_StreamIterator::current};
                 {
                   core::print(s);
@@ -169,8 +169,8 @@
       asy::_completeOnAsyncReturn(:async_completer, :return_value);
       return;
     }
-    on dynamic catch(dynamic :exception, core::StackTrace :stack_trace) {
-      :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+    on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
+      :async_completer.{asy::Completer::completeError}(exception, stack_trace);
     }
   :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
@@ -221,8 +221,8 @@
                 asy::_completeOnAsyncReturn(:async_completer, :return_value);
                 return;
               }
-              on dynamic catch(dynamic :exception, core::StackTrace :stack_trace) {
-                :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+              on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
+                :async_completer.{asy::Completer::completeError}(exception, stack_trace);
               }
             :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
             :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
@@ -235,8 +235,8 @@
       asy::_completeOnAsyncReturn(:async_completer, :return_value);
       return;
     }
-    on dynamic catch(dynamic :exception, core::StackTrace :stack_trace) {
-      :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+    on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
+      :async_completer.{asy::Completer::completeError}(exception, stack_trace);
     }
   :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
diff --git a/pkg/front_end/testcases/nnbd/later.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/later.dart.weak.transformed.expect
index 13a5cc4..dabee80 100644
--- a/pkg/front_end/testcases/nnbd/later.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/later.dart.weak.transformed.expect
@@ -109,7 +109,7 @@
     core::print("baz");
   }
   {
-    core::Iterator<core::String*> :sync-for-iterator = <core::String>["baz"].{core::Iterable::iterator};
+    core::Iterator<core::String> :sync-for-iterator = <core::String>["baz"].{core::Iterable::iterator};
     for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
       core::String s = :sync-for-iterator.{core::Iterator::current};
       {
@@ -140,7 +140,7 @@
       #L1:
       {
         {
-          asy::Stream<core::String*>* :stream = asy::Stream::fromIterable<core::String>(<core::String>["hest"]);
+          asy::Stream<core::String> :stream = asy::Stream::fromIterable<core::String>(<core::String>["hest"]);
           asy::_asyncStarListenHelper(:stream, :async_op);
           asy::_StreamIterator<core::String>? :for-iterator = new asy::_StreamIterator::•<core::String>(:stream);
           try
@@ -148,7 +148,7 @@
             while (true) {
               dynamic #t2 = asy::_asyncStarMoveNextHelper(:stream);
               [yield] let dynamic #t3 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::moveNext}(), :async_op_then, :async_op_error, :async_op) in null;
-              if(_in::unsafeCast<core::bool*>(:result)) {
+              if(_in::unsafeCast<core::bool>(:result)) {
                 core::String s = :for-iterator.{asy::_StreamIterator::current};
                 {
                   core::print(s);
@@ -169,8 +169,8 @@
       asy::_completeOnAsyncReturn(:async_completer, :return_value);
       return;
     }
-    on dynamic catch(dynamic :exception, core::StackTrace :stack_trace) {
-      :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+    on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
+      :async_completer.{asy::Completer::completeError}(exception, stack_trace);
     }
   :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
@@ -221,8 +221,8 @@
                 asy::_completeOnAsyncReturn(:async_completer, :return_value);
                 return;
               }
-              on dynamic catch(dynamic :exception, core::StackTrace :stack_trace) {
-                :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+              on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
+                :async_completer.{asy::Completer::completeError}(exception, stack_trace);
               }
             :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
             :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
@@ -235,8 +235,8 @@
       asy::_completeOnAsyncReturn(:async_completer, :return_value);
       return;
     }
-    on dynamic catch(dynamic :exception, core::StackTrace :stack_trace) {
-      :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+    on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
+      :async_completer.{asy::Completer::completeError}(exception, stack_trace);
     }
   :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
diff --git a/pkg/front_end/testcases/nnbd/member_inheritance_from_opt_in.dart.outline.expect b/pkg/front_end/testcases/nnbd/member_inheritance_from_opt_in.dart.outline.expect
index da71c66..35fad80 100644
--- a/pkg/front_end/testcases/nnbd/member_inheritance_from_opt_in.dart.outline.expect
+++ b/pkg/front_end/testcases/nnbd/member_inheritance_from_opt_in.dart.outline.expect
@@ -69,6 +69,16 @@
   abstract member-signature set property5(core::int* _) → void;
   abstract member-signature get property6() → core::int*;
   abstract member-signature set property6(core::int* _) → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
   abstract member-signature set setter1(core::int* value) → void;
   abstract member-signature set setter2(core::int* value) → void;
 }
diff --git a/pkg/front_end/testcases/nnbd/member_inheritance_from_opt_in.dart.strong.expect b/pkg/front_end/testcases/nnbd/member_inheritance_from_opt_in.dart.strong.expect
index f993fb1..e078b39 100644
--- a/pkg/front_end/testcases/nnbd/member_inheritance_from_opt_in.dart.strong.expect
+++ b/pkg/front_end/testcases/nnbd/member_inheritance_from_opt_in.dart.strong.expect
@@ -66,6 +66,16 @@
   abstract member-signature set property5(core::int* _) → void;
   abstract member-signature get property6() → core::int*;
   abstract member-signature set property6(core::int* _) → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
   abstract member-signature set setter1(core::int* value) → void;
   abstract member-signature set setter2(core::int* value) → void;
 }
diff --git a/pkg/front_end/testcases/nnbd/member_inheritance_from_opt_in.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/member_inheritance_from_opt_in.dart.strong.transformed.expect
index f993fb1..e078b39 100644
--- a/pkg/front_end/testcases/nnbd/member_inheritance_from_opt_in.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/member_inheritance_from_opt_in.dart.strong.transformed.expect
@@ -66,6 +66,16 @@
   abstract member-signature set property5(core::int* _) → void;
   abstract member-signature get property6() → core::int*;
   abstract member-signature set property6(core::int* _) → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
   abstract member-signature set setter1(core::int* value) → void;
   abstract member-signature set setter2(core::int* value) → void;
 }
diff --git a/pkg/front_end/testcases/nnbd/member_inheritance_from_opt_in.dart.weak.expect b/pkg/front_end/testcases/nnbd/member_inheritance_from_opt_in.dart.weak.expect
index f993fb1..e078b39 100644
--- a/pkg/front_end/testcases/nnbd/member_inheritance_from_opt_in.dart.weak.expect
+++ b/pkg/front_end/testcases/nnbd/member_inheritance_from_opt_in.dart.weak.expect
@@ -66,6 +66,16 @@
   abstract member-signature set property5(core::int* _) → void;
   abstract member-signature get property6() → core::int*;
   abstract member-signature set property6(core::int* _) → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
   abstract member-signature set setter1(core::int* value) → void;
   abstract member-signature set setter2(core::int* value) → void;
 }
diff --git a/pkg/front_end/testcases/nnbd/member_inheritance_from_opt_in.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/member_inheritance_from_opt_in.dart.weak.transformed.expect
index f993fb1..e078b39 100644
--- a/pkg/front_end/testcases/nnbd/member_inheritance_from_opt_in.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/member_inheritance_from_opt_in.dart.weak.transformed.expect
@@ -66,6 +66,16 @@
   abstract member-signature set property5(core::int* _) → void;
   abstract member-signature get property6() → core::int*;
   abstract member-signature set property6(core::int* _) → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
   abstract member-signature set setter1(core::int* value) → void;
   abstract member-signature set setter2(core::int* value) → void;
 }
diff --git a/pkg/front_end/testcases/nnbd/member_inheritance_from_opt_out.dart.outline.expect b/pkg/front_end/testcases/nnbd/member_inheritance_from_opt_out.dart.outline.expect
index 712b735..86d0c80 100644
--- a/pkg/front_end/testcases/nnbd/member_inheritance_from_opt_out.dart.outline.expect
+++ b/pkg/front_end/testcases/nnbd/member_inheritance_from_opt_out.dart.outline.expect
@@ -109,6 +109,15 @@
   abstract member-signature set property3(core::int value) → void;
   abstract member-signature get property4() → core::int?;
   abstract member-signature set property4(core::int? value) → void;
+  abstract member-signature get _identityHashCode() → core::int;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool;
+  abstract member-signature get hashCode() → core::int;
+  abstract member-signature method toString() → core::String;
+  abstract member-signature method noSuchMethod(core::Invocation invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type;
   abstract member-signature set setter1(core::int value) → void;
   abstract member-signature set setter2(core::int? value) → void;
 }
@@ -171,6 +180,15 @@
     ;
   set property2(core::int? value) → void
     ;
+  abstract member-signature get _identityHashCode() → core::int;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool;
+  abstract member-signature get hashCode() → core::int;
+  abstract member-signature method toString() → core::String;
+  abstract member-signature method noSuchMethod(core::Invocation invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type;
 }
 class Class3a extends opt::GenericLegacyClass<core::int> {
   synthetic constructor •() → self::Class3a
@@ -250,10 +268,30 @@
     ;
   set property4(core::int* value) → void
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class GenericLegacyClass<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → opt::GenericLegacyClass<opt::GenericLegacyClass::T*>*
     ;
   method method1() → opt::GenericLegacyClass::T*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
diff --git a/pkg/front_end/testcases/nnbd/member_inheritance_from_opt_out.dart.strong.expect b/pkg/front_end/testcases/nnbd/member_inheritance_from_opt_out.dart.strong.expect
index 9e92aa7..4da2cc7 100644
--- a/pkg/front_end/testcases/nnbd/member_inheritance_from_opt_out.dart.strong.expect
+++ b/pkg/front_end/testcases/nnbd/member_inheritance_from_opt_out.dart.strong.expect
@@ -112,6 +112,15 @@
   abstract member-signature set property3(core::int value) → void;
   abstract member-signature get property4() → core::int?;
   abstract member-signature set property4(core::int? value) → void;
+  abstract member-signature get _identityHashCode() → core::int;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool;
+  abstract member-signature get hashCode() → core::int;
+  abstract member-signature method toString() → core::String;
+  abstract member-signature method noSuchMethod(core::Invocation invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type;
   abstract member-signature set setter1(core::int value) → void;
   abstract member-signature set setter2(core::int? value) → void;
 }
@@ -169,6 +178,15 @@
   get property2() → core::int?
     return 0;
   set property2(core::int? value) → void {}
+  abstract member-signature get _identityHashCode() → core::int;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool;
+  abstract member-signature get hashCode() → core::int;
+  abstract member-signature method toString() → core::String;
+  abstract member-signature method noSuchMethod(core::Invocation invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type;
 }
 class Class3a extends opt::GenericLegacyClass<core::int> {
   synthetic constructor •() → self::Class3a
@@ -245,6 +263,16 @@
   get property4() → core::int*
     return 0;
   set property4(core::int* value) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class GenericLegacyClass<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → opt::GenericLegacyClass<opt::GenericLegacyClass::T*>*
@@ -252,6 +280,16 @@
     ;
   method method1() → opt::GenericLegacyClass::T*
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 
 constants  {
diff --git a/pkg/front_end/testcases/nnbd/member_inheritance_from_opt_out.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/member_inheritance_from_opt_out.dart.strong.transformed.expect
index 9e92aa7..4da2cc7 100644
--- a/pkg/front_end/testcases/nnbd/member_inheritance_from_opt_out.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/member_inheritance_from_opt_out.dart.strong.transformed.expect
@@ -112,6 +112,15 @@
   abstract member-signature set property3(core::int value) → void;
   abstract member-signature get property4() → core::int?;
   abstract member-signature set property4(core::int? value) → void;
+  abstract member-signature get _identityHashCode() → core::int;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool;
+  abstract member-signature get hashCode() → core::int;
+  abstract member-signature method toString() → core::String;
+  abstract member-signature method noSuchMethod(core::Invocation invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type;
   abstract member-signature set setter1(core::int value) → void;
   abstract member-signature set setter2(core::int? value) → void;
 }
@@ -169,6 +178,15 @@
   get property2() → core::int?
     return 0;
   set property2(core::int? value) → void {}
+  abstract member-signature get _identityHashCode() → core::int;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool;
+  abstract member-signature get hashCode() → core::int;
+  abstract member-signature method toString() → core::String;
+  abstract member-signature method noSuchMethod(core::Invocation invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type;
 }
 class Class3a extends opt::GenericLegacyClass<core::int> {
   synthetic constructor •() → self::Class3a
@@ -245,6 +263,16 @@
   get property4() → core::int*
     return 0;
   set property4(core::int* value) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class GenericLegacyClass<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → opt::GenericLegacyClass<opt::GenericLegacyClass::T*>*
@@ -252,6 +280,16 @@
     ;
   method method1() → opt::GenericLegacyClass::T*
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 
 constants  {
diff --git a/pkg/front_end/testcases/nnbd/member_inheritance_from_opt_out.dart.weak.expect b/pkg/front_end/testcases/nnbd/member_inheritance_from_opt_out.dart.weak.expect
index 9e92aa7..4da2cc7 100644
--- a/pkg/front_end/testcases/nnbd/member_inheritance_from_opt_out.dart.weak.expect
+++ b/pkg/front_end/testcases/nnbd/member_inheritance_from_opt_out.dart.weak.expect
@@ -112,6 +112,15 @@
   abstract member-signature set property3(core::int value) → void;
   abstract member-signature get property4() → core::int?;
   abstract member-signature set property4(core::int? value) → void;
+  abstract member-signature get _identityHashCode() → core::int;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool;
+  abstract member-signature get hashCode() → core::int;
+  abstract member-signature method toString() → core::String;
+  abstract member-signature method noSuchMethod(core::Invocation invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type;
   abstract member-signature set setter1(core::int value) → void;
   abstract member-signature set setter2(core::int? value) → void;
 }
@@ -169,6 +178,15 @@
   get property2() → core::int?
     return 0;
   set property2(core::int? value) → void {}
+  abstract member-signature get _identityHashCode() → core::int;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool;
+  abstract member-signature get hashCode() → core::int;
+  abstract member-signature method toString() → core::String;
+  abstract member-signature method noSuchMethod(core::Invocation invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type;
 }
 class Class3a extends opt::GenericLegacyClass<core::int> {
   synthetic constructor •() → self::Class3a
@@ -245,6 +263,16 @@
   get property4() → core::int*
     return 0;
   set property4(core::int* value) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class GenericLegacyClass<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → opt::GenericLegacyClass<opt::GenericLegacyClass::T*>*
@@ -252,6 +280,16 @@
     ;
   method method1() → opt::GenericLegacyClass::T*
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 
 constants  {
diff --git a/pkg/front_end/testcases/nnbd/member_inheritance_from_opt_out.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/member_inheritance_from_opt_out.dart.weak.transformed.expect
index 9e92aa7..4da2cc7 100644
--- a/pkg/front_end/testcases/nnbd/member_inheritance_from_opt_out.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/member_inheritance_from_opt_out.dart.weak.transformed.expect
@@ -112,6 +112,15 @@
   abstract member-signature set property3(core::int value) → void;
   abstract member-signature get property4() → core::int?;
   abstract member-signature set property4(core::int? value) → void;
+  abstract member-signature get _identityHashCode() → core::int;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool;
+  abstract member-signature get hashCode() → core::int;
+  abstract member-signature method toString() → core::String;
+  abstract member-signature method noSuchMethod(core::Invocation invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type;
   abstract member-signature set setter1(core::int value) → void;
   abstract member-signature set setter2(core::int? value) → void;
 }
@@ -169,6 +178,15 @@
   get property2() → core::int?
     return 0;
   set property2(core::int? value) → void {}
+  abstract member-signature get _identityHashCode() → core::int;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool;
+  abstract member-signature get hashCode() → core::int;
+  abstract member-signature method toString() → core::String;
+  abstract member-signature method noSuchMethod(core::Invocation invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type;
 }
 class Class3a extends opt::GenericLegacyClass<core::int> {
   synthetic constructor •() → self::Class3a
@@ -245,6 +263,16 @@
   get property4() → core::int*
     return 0;
   set property4(core::int* value) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class GenericLegacyClass<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → opt::GenericLegacyClass<opt::GenericLegacyClass::T*>*
@@ -252,6 +280,16 @@
     ;
   method method1() → opt::GenericLegacyClass::T*
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 
 constants  {
diff --git a/pkg/front_end/testcases/nnbd/messages_with_types_opt_in.dart.outline.expect b/pkg/front_end/testcases/nnbd/messages_with_types_opt_in.dart.outline.expect
index 32b8bce..ea10e49 100644
--- a/pkg/front_end/testcases/nnbd/messages_with_types_opt_in.dart.outline.expect
+++ b/pkg/front_end/testcases/nnbd/messages_with_types_opt_in.dart.outline.expect
@@ -134,6 +134,16 @@
     ;
   method nonNullableBad<T extends core::Object* = dynamic>(mes::SuperOut::nonNullableBad::T* t) → core::int*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class SubOutOut extends mes::SuperOut {
   synthetic constructor •() → mes::SubOutOut*
@@ -158,6 +168,16 @@
     ;
   method nonNullableBad<T extends core::Object* = dynamic>(mes::SubInOut::nonNullableBad::T* t) → mes::SubInOut::nonNullableBad::T*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field core::String* legacyVar;
 static method testOptOut() → dynamic
diff --git a/pkg/front_end/testcases/nnbd/messages_with_types_opt_in.dart.strong.expect b/pkg/front_end/testcases/nnbd/messages_with_types_opt_in.dart.strong.expect
index 02f979f..e734e48 100644
--- a/pkg/front_end/testcases/nnbd/messages_with_types_opt_in.dart.strong.expect
+++ b/pkg/front_end/testcases/nnbd/messages_with_types_opt_in.dart.strong.expect
@@ -204,6 +204,16 @@
     return 1;
   method nonNullableBad<T extends core::Object* = dynamic>(mes::SuperOut::nonNullableBad::T* t) → core::int*
     return 2;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class SubOutOut extends mes::SuperOut {
   synthetic constructor •() → mes::SubOutOut*
@@ -230,6 +240,16 @@
     return null;
   method nonNullableBad<T extends core::Object* = dynamic>(mes::SubInOut::nonNullableBad::T* t) → mes::SubInOut::nonNullableBad::T*
     return t;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field core::String* legacyVar = "legacy";
 static method testOptOut() → dynamic {
diff --git a/pkg/front_end/testcases/nnbd/messages_with_types_opt_in.dart.weak.expect b/pkg/front_end/testcases/nnbd/messages_with_types_opt_in.dart.weak.expect
index 02f979f..e734e48 100644
--- a/pkg/front_end/testcases/nnbd/messages_with_types_opt_in.dart.weak.expect
+++ b/pkg/front_end/testcases/nnbd/messages_with_types_opt_in.dart.weak.expect
@@ -204,6 +204,16 @@
     return 1;
   method nonNullableBad<T extends core::Object* = dynamic>(mes::SuperOut::nonNullableBad::T* t) → core::int*
     return 2;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class SubOutOut extends mes::SuperOut {
   synthetic constructor •() → mes::SubOutOut*
@@ -230,6 +240,16 @@
     return null;
   method nonNullableBad<T extends core::Object* = dynamic>(mes::SubInOut::nonNullableBad::T* t) → mes::SubInOut::nonNullableBad::T*
     return t;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field core::String* legacyVar = "legacy";
 static method testOptOut() → dynamic {
diff --git a/pkg/front_end/testcases/nnbd/messages_with_types_opt_out.dart.outline.expect b/pkg/front_end/testcases/nnbd/messages_with_types_opt_out.dart.outline.expect
index 346613a..8529e4e 100644
--- a/pkg/front_end/testcases/nnbd/messages_with_types_opt_out.dart.outline.expect
+++ b/pkg/front_end/testcases/nnbd/messages_with_types_opt_out.dart.outline.expect
@@ -51,6 +51,16 @@
     ;
   method nonNullableBad<T extends core::Object* = dynamic>(self::SuperOut::nonNullableBad::T* t) → core::int*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class SubOutOut extends self::SuperOut {
   synthetic constructor •() → self::SubOutOut*
@@ -75,6 +85,16 @@
     ;
   method nonNullableBad<T extends core::Object* = dynamic>(self::SubInOut::nonNullableBad::T* t) → self::SubInOut::nonNullableBad::T*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field core::String* legacyVar;
 static method testOptOut() → dynamic
diff --git a/pkg/front_end/testcases/nnbd/messages_with_types_opt_out.dart.strong.expect b/pkg/front_end/testcases/nnbd/messages_with_types_opt_out.dart.strong.expect
index 828c85b..cea6db7 100644
--- a/pkg/front_end/testcases/nnbd/messages_with_types_opt_out.dart.strong.expect
+++ b/pkg/front_end/testcases/nnbd/messages_with_types_opt_out.dart.strong.expect
@@ -76,6 +76,16 @@
     return 1;
   method nonNullableBad<T extends core::Object* = dynamic>(self::SuperOut::nonNullableBad::T* t) → core::int*
     return 2;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class SubOutOut extends self::SuperOut {
   synthetic constructor •() → self::SubOutOut*
@@ -102,6 +112,16 @@
     return null;
   method nonNullableBad<T extends core::Object* = dynamic>(self::SubInOut::nonNullableBad::T* t) → self::SubInOut::nonNullableBad::T*
     return t;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field core::String* legacyVar = "legacy";
 static method testOptOut() → dynamic {
diff --git a/pkg/front_end/testcases/nnbd/messages_with_types_opt_out.dart.weak.expect b/pkg/front_end/testcases/nnbd/messages_with_types_opt_out.dart.weak.expect
index 828c85b..cea6db7 100644
--- a/pkg/front_end/testcases/nnbd/messages_with_types_opt_out.dart.weak.expect
+++ b/pkg/front_end/testcases/nnbd/messages_with_types_opt_out.dart.weak.expect
@@ -76,6 +76,16 @@
     return 1;
   method nonNullableBad<T extends core::Object* = dynamic>(self::SuperOut::nonNullableBad::T* t) → core::int*
     return 2;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class SubOutOut extends self::SuperOut {
   synthetic constructor •() → self::SubOutOut*
@@ -102,6 +112,16 @@
     return null;
   method nonNullableBad<T extends core::Object* = dynamic>(self::SubInOut::nonNullableBad::T* t) → self::SubInOut::nonNullableBad::T*
     return t;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field core::String* legacyVar = "legacy";
 static method testOptOut() → dynamic {
diff --git a/pkg/front_end/testcases/nnbd/mixed_mode_hierarchy_generic_methods.dart.outline.expect b/pkg/front_end/testcases/nnbd/mixed_mode_hierarchy_generic_methods.dart.outline.expect
index 7602f14..fabaeb8 100644
--- a/pkg/front_end/testcases/nnbd/mixed_mode_hierarchy_generic_methods.dart.outline.expect
+++ b/pkg/front_end/testcases/nnbd/mixed_mode_hierarchy_generic_methods.dart.outline.expect
@@ -12,6 +12,16 @@
     ;
   method then<B extends core::Object* = dynamic>() → asy::Future<self::B::then::B*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/nnbd/mixed_mode_hierarchy_generic_methods.dart.strong.expect b/pkg/front_end/testcases/nnbd/mixed_mode_hierarchy_generic_methods.dart.strong.expect
index 2b9d95c..b8c94b1 100644
--- a/pkg/front_end/testcases/nnbd/mixed_mode_hierarchy_generic_methods.dart.strong.expect
+++ b/pkg/front_end/testcases/nnbd/mixed_mode_hierarchy_generic_methods.dart.strong.expect
@@ -13,6 +13,16 @@
     ;
   method then<B extends core::Object* = dynamic>() → asy::Future<self::B::then::B*>*
     return asy::Future::value<self::B::then::B*>();
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
 
diff --git a/pkg/front_end/testcases/nnbd/mixed_mode_hierarchy_generic_methods.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/mixed_mode_hierarchy_generic_methods.dart.strong.transformed.expect
index 2b9d95c..b8c94b1 100644
--- a/pkg/front_end/testcases/nnbd/mixed_mode_hierarchy_generic_methods.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/mixed_mode_hierarchy_generic_methods.dart.strong.transformed.expect
@@ -13,6 +13,16 @@
     ;
   method then<B extends core::Object* = dynamic>() → asy::Future<self::B::then::B*>*
     return asy::Future::value<self::B::then::B*>();
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
 
diff --git a/pkg/front_end/testcases/nnbd/mixed_mode_hierarchy_generic_methods.dart.weak.expect b/pkg/front_end/testcases/nnbd/mixed_mode_hierarchy_generic_methods.dart.weak.expect
index 2b9d95c..b8c94b1 100644
--- a/pkg/front_end/testcases/nnbd/mixed_mode_hierarchy_generic_methods.dart.weak.expect
+++ b/pkg/front_end/testcases/nnbd/mixed_mode_hierarchy_generic_methods.dart.weak.expect
@@ -13,6 +13,16 @@
     ;
   method then<B extends core::Object* = dynamic>() → asy::Future<self::B::then::B*>*
     return asy::Future::value<self::B::then::B*>();
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
 
diff --git a/pkg/front_end/testcases/nnbd/mixed_mode_hierarchy_generic_methods.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/mixed_mode_hierarchy_generic_methods.dart.weak.transformed.expect
index 2b9d95c..b8c94b1 100644
--- a/pkg/front_end/testcases/nnbd/mixed_mode_hierarchy_generic_methods.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/mixed_mode_hierarchy_generic_methods.dart.weak.transformed.expect
@@ -13,6 +13,16 @@
     ;
   method then<B extends core::Object* = dynamic>() → asy::Future<self::B::then::B*>*
     return asy::Future::value<self::B::then::B*>();
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
 
diff --git a/pkg/front_end/testcases/nnbd/mixin_from_opt_in.dart.outline.expect b/pkg/front_end/testcases/nnbd/mixin_from_opt_in.dart.outline.expect
index d51062b..a48d6aa 100644
--- a/pkg/front_end/testcases/nnbd/mixin_from_opt_in.dart.outline.expect
+++ b/pkg/front_end/testcases/nnbd/mixin_from_opt_in.dart.outline.expect
@@ -10,6 +10,16 @@
     : super core::Object::•()
     ;
   abstract member-signature method method(core::int* i) → core::int*;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Class extends self::_Class&Object&Mixin {
   synthetic constructor •() → self::Class*
diff --git a/pkg/front_end/testcases/nnbd/mixin_from_opt_in.dart.strong.expect b/pkg/front_end/testcases/nnbd/mixin_from_opt_in.dart.strong.expect
index ea3253c..c61a894 100644
--- a/pkg/front_end/testcases/nnbd/mixin_from_opt_in.dart.strong.expect
+++ b/pkg/front_end/testcases/nnbd/mixin_from_opt_in.dart.strong.expect
@@ -10,6 +10,16 @@
     : super core::Object::•()
     ;
   abstract member-signature method method(core::int* i) → core::int*;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Class extends self::_Class&Object&Mixin {
   synthetic constructor •() → self::Class*
diff --git a/pkg/front_end/testcases/nnbd/mixin_from_opt_in.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/mixin_from_opt_in.dart.strong.transformed.expect
index 1325fd4..6379057 100644
--- a/pkg/front_end/testcases/nnbd/mixin_from_opt_in.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/mixin_from_opt_in.dart.strong.transformed.expect
@@ -11,6 +11,16 @@
     ;
   method /*isNonNullableByDefault, from org-dartlang-testcase:///mixin_from_opt_in_lib.dart */ method(core::int? i) → core::int
     return let final core::int? #t1 = i in #t1.{core::num::==}(null) ?{core::int} 0 : #t1{core::int};
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Class extends self::_Class&Object&Mixin {
   synthetic constructor •() → self::Class*
diff --git a/pkg/front_end/testcases/nnbd/mixin_from_opt_in.dart.weak.expect b/pkg/front_end/testcases/nnbd/mixin_from_opt_in.dart.weak.expect
index ea3253c..c61a894 100644
--- a/pkg/front_end/testcases/nnbd/mixin_from_opt_in.dart.weak.expect
+++ b/pkg/front_end/testcases/nnbd/mixin_from_opt_in.dart.weak.expect
@@ -10,6 +10,16 @@
     : super core::Object::•()
     ;
   abstract member-signature method method(core::int* i) → core::int*;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Class extends self::_Class&Object&Mixin {
   synthetic constructor •() → self::Class*
diff --git a/pkg/front_end/testcases/nnbd/mixin_from_opt_in.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/mixin_from_opt_in.dart.weak.transformed.expect
index 1325fd4..6379057 100644
--- a/pkg/front_end/testcases/nnbd/mixin_from_opt_in.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/mixin_from_opt_in.dart.weak.transformed.expect
@@ -11,6 +11,16 @@
     ;
   method /*isNonNullableByDefault, from org-dartlang-testcase:///mixin_from_opt_in_lib.dart */ method(core::int? i) → core::int
     return let final core::int? #t1 = i in #t1.{core::num::==}(null) ?{core::int} 0 : #t1{core::int};
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Class extends self::_Class&Object&Mixin {
   synthetic constructor •() → self::Class*
diff --git a/pkg/front_end/testcases/nnbd/mixin_from_opt_in_out_in.dart.outline.expect b/pkg/front_end/testcases/nnbd/mixin_from_opt_in_out_in.dart.outline.expect
index 8aa3ee5..edade1d 100644
--- a/pkg/front_end/testcases/nnbd/mixin_from_opt_in_out_in.dart.outline.expect
+++ b/pkg/front_end/testcases/nnbd/mixin_from_opt_in_out_in.dart.outline.expect
@@ -13,6 +13,15 @@
   abstract member-signature get a() → core::List<(core::int) → core::int>;
   abstract member-signature set a(core::List<(core::int) → core::int> _) → void;
   abstract member-signature method m((core::int) → core::int x) → (core::int) → core::int;
+  abstract member-signature get _identityHashCode() → core::int;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool;
+  abstract member-signature get hashCode() → core::int;
+  abstract member-signature method toString() → core::String;
+  abstract member-signature method noSuchMethod(core::Invocation invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type;
 }
 class DiBq0 extends mix::C0 implements mix2::Bq {
   synthetic constructor •() → self::DiBq0
@@ -20,11 +29,29 @@
   abstract member-signature get a() → core::List<(core::int?) → core::int?>;
   abstract member-signature set a(core::List<(core::int?) → core::int?> _) → void;
   abstract member-signature method m((core::int?) → core::int? x) → (core::int?) → core::int?;
+  abstract member-signature get _identityHashCode() → core::int;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool;
+  abstract member-signature get hashCode() → core::int;
+  abstract member-signature method toString() → core::String;
+  abstract member-signature method noSuchMethod(core::Invocation invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type;
 }
 abstract class _DwB0&C0&B = mix::C0 with mix2::B /*isAnonymousMixin*/  {
   synthetic constructor •() → self::_DwB0&C0&B
     : super mix::C0::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool;
+  abstract member-signature get hashCode() → core::int;
+  abstract member-signature method toString() → core::String;
+  abstract member-signature method noSuchMethod(core::Invocation invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type;
 }
 class DwB0 extends self::_DwB0&C0&B {
   synthetic constructor •() → self::DwB0
@@ -34,6 +61,15 @@
   synthetic constructor •() → self::_DwBq0&C0&Bq
     : super mix::C0::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool;
+  abstract member-signature get hashCode() → core::int;
+  abstract member-signature method toString() → core::String;
+  abstract member-signature method noSuchMethod(core::Invocation invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type;
 }
 class DwBq0 extends self::_DwBq0&C0&Bq {
   synthetic constructor •() → self::DwBq0
@@ -45,6 +81,15 @@
   abstract member-signature get a() → core::List<(core::int) → core::int>;
   abstract member-signature set a(core::List<(core::int) → core::int> _) → void;
   abstract member-signature method m((core::int) → core::int x) → (core::int) → core::int;
+  abstract member-signature get _identityHashCode() → core::int;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool;
+  abstract member-signature get hashCode() → core::int;
+  abstract member-signature method toString() → core::String;
+  abstract member-signature method noSuchMethod(core::Invocation invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type;
 }
 class DiBq3 extends mix::C3 implements mix2::Bq {
   synthetic constructor •() → self::DiBq3
@@ -52,11 +97,29 @@
   abstract member-signature get a() → core::List<(core::int?) → core::int?>;
   abstract member-signature set a(core::List<(core::int?) → core::int?> _) → void;
   abstract member-signature method m((core::int?) → core::int? x) → (core::int?) → core::int?;
+  abstract member-signature get _identityHashCode() → core::int;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool;
+  abstract member-signature get hashCode() → core::int;
+  abstract member-signature method toString() → core::String;
+  abstract member-signature method noSuchMethod(core::Invocation invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type;
 }
 abstract class _DwB3&C3&B = mix::C3 with mix2::B /*isAnonymousMixin*/  {
   synthetic constructor •() → self::_DwB3&C3&B
     : super mix::C3::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool;
+  abstract member-signature get hashCode() → core::int;
+  abstract member-signature method toString() → core::String;
+  abstract member-signature method noSuchMethod(core::Invocation invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type;
 }
 class DwB3 extends self::_DwB3&C3&B {
   synthetic constructor •() → self::DwB3
@@ -66,6 +129,15 @@
   synthetic constructor •() → self::_DwBq3&C3&Bq
     : super mix::C3::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool;
+  abstract member-signature get hashCode() → core::int;
+  abstract member-signature method toString() → core::String;
+  abstract member-signature method noSuchMethod(core::Invocation invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type;
 }
 class DwBq3 extends self::_DwBq3&C3&Bq {
   synthetic constructor •() → self::DwBq3
@@ -87,6 +159,16 @@
   abstract member-signature get a() → core::List<(core::int*) →* core::int*>*;
   abstract member-signature set a(core::List<(core::int*) →* core::int*>* _) → void;
   abstract member-signature method m((core::int*) →* core::int* x) → (core::int*) →* core::int*;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C3 extends mix2::Bq {
   synthetic constructor •() → mix::C3*
@@ -94,6 +176,16 @@
   abstract member-signature get a() → core::List<(core::int*) →* core::int*>*;
   abstract member-signature set a(core::List<(core::int*) →* core::int*>* _) → void;
   abstract member-signature method m((core::int*) →* core::int* x) → (core::int*) →* core::int*;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 
 library /*isNonNullableByDefault*/;
diff --git a/pkg/front_end/testcases/nnbd/mixin_from_opt_in_out_in.dart.strong.expect b/pkg/front_end/testcases/nnbd/mixin_from_opt_in_out_in.dart.strong.expect
index fe1d001..22eca01 100644
--- a/pkg/front_end/testcases/nnbd/mixin_from_opt_in_out_in.dart.strong.expect
+++ b/pkg/front_end/testcases/nnbd/mixin_from_opt_in_out_in.dart.strong.expect
@@ -14,6 +14,15 @@
   abstract member-signature get a() → core::List<(core::int) → core::int>;
   abstract member-signature set a(core::List<(core::int) → core::int> _) → void;
   abstract member-signature method m((core::int) → core::int x) → (core::int) → core::int;
+  abstract member-signature get _identityHashCode() → core::int;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool;
+  abstract member-signature get hashCode() → core::int;
+  abstract member-signature method toString() → core::String;
+  abstract member-signature method noSuchMethod(core::Invocation invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type;
 }
 class DiBq0 extends mix::C0 implements mix2::Bq {
   synthetic constructor •() → self::DiBq0
@@ -22,11 +31,29 @@
   abstract member-signature get a() → core::List<(core::int?) → core::int?>;
   abstract member-signature set a(core::List<(core::int?) → core::int?> _) → void;
   abstract member-signature method m((core::int?) → core::int? x) → (core::int?) → core::int?;
+  abstract member-signature get _identityHashCode() → core::int;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool;
+  abstract member-signature get hashCode() → core::int;
+  abstract member-signature method toString() → core::String;
+  abstract member-signature method noSuchMethod(core::Invocation invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type;
 }
 abstract class _DwB0&C0&B = mix::C0 with mix2::B /*isAnonymousMixin*/  {
   synthetic constructor •() → self::_DwB0&C0&B
     : super mix::C0::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool;
+  abstract member-signature get hashCode() → core::int;
+  abstract member-signature method toString() → core::String;
+  abstract member-signature method noSuchMethod(core::Invocation invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type;
 }
 class DwB0 extends self::_DwB0&C0&B {
   synthetic constructor •() → self::DwB0
@@ -37,6 +64,15 @@
   synthetic constructor •() → self::_DwBq0&C0&Bq
     : super mix::C0::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool;
+  abstract member-signature get hashCode() → core::int;
+  abstract member-signature method toString() → core::String;
+  abstract member-signature method noSuchMethod(core::Invocation invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type;
 }
 class DwBq0 extends self::_DwBq0&C0&Bq {
   synthetic constructor •() → self::DwBq0
@@ -50,6 +86,15 @@
   abstract member-signature get a() → core::List<(core::int) → core::int>;
   abstract member-signature set a(core::List<(core::int) → core::int> _) → void;
   abstract member-signature method m((core::int) → core::int x) → (core::int) → core::int;
+  abstract member-signature get _identityHashCode() → core::int;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool;
+  abstract member-signature get hashCode() → core::int;
+  abstract member-signature method toString() → core::String;
+  abstract member-signature method noSuchMethod(core::Invocation invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type;
 }
 class DiBq3 extends mix::C3 implements mix2::Bq {
   synthetic constructor •() → self::DiBq3
@@ -58,11 +103,29 @@
   abstract member-signature get a() → core::List<(core::int?) → core::int?>;
   abstract member-signature set a(core::List<(core::int?) → core::int?> _) → void;
   abstract member-signature method m((core::int?) → core::int? x) → (core::int?) → core::int?;
+  abstract member-signature get _identityHashCode() → core::int;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool;
+  abstract member-signature get hashCode() → core::int;
+  abstract member-signature method toString() → core::String;
+  abstract member-signature method noSuchMethod(core::Invocation invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type;
 }
 abstract class _DwB3&C3&B = mix::C3 with mix2::B /*isAnonymousMixin*/  {
   synthetic constructor •() → self::_DwB3&C3&B
     : super mix::C3::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool;
+  abstract member-signature get hashCode() → core::int;
+  abstract member-signature method toString() → core::String;
+  abstract member-signature method noSuchMethod(core::Invocation invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type;
 }
 class DwB3 extends self::_DwB3&C3&B {
   synthetic constructor •() → self::DwB3
@@ -73,6 +136,15 @@
   synthetic constructor •() → self::_DwBq3&C3&Bq
     : super mix::C3::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool;
+  abstract member-signature get hashCode() → core::int;
+  abstract member-signature method toString() → core::String;
+  abstract member-signature method noSuchMethod(core::Invocation invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type;
 }
 class DwBq3 extends self::_DwBq3&C3&Bq {
   synthetic constructor •() → self::DwBq3
@@ -95,6 +167,16 @@
   abstract member-signature get a() → core::List<(core::int*) →* core::int*>*;
   abstract member-signature set a(core::List<(core::int*) →* core::int*>* _) → void;
   abstract member-signature method m((core::int*) →* core::int* x) → (core::int*) →* core::int*;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C3 extends mix2::Bq {
   synthetic constructor •() → mix::C3*
@@ -103,6 +185,16 @@
   abstract member-signature get a() → core::List<(core::int*) →* core::int*>*;
   abstract member-signature set a(core::List<(core::int*) →* core::int*>* _) → void;
   abstract member-signature method m((core::int*) →* core::int* x) → (core::int*) →* core::int*;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 
 library /*isNonNullableByDefault*/;
diff --git a/pkg/front_end/testcases/nnbd/mixin_from_opt_in_out_in.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/mixin_from_opt_in_out_in.dart.strong.transformed.expect
index 53ac2ec..81c6715 100644
--- a/pkg/front_end/testcases/nnbd/mixin_from_opt_in_out_in.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/mixin_from_opt_in_out_in.dart.strong.transformed.expect
@@ -14,6 +14,15 @@
   abstract member-signature get a() → core::List<(core::int) → core::int>;
   abstract member-signature set a(core::List<(core::int) → core::int> _) → void;
   abstract member-signature method m((core::int) → core::int x) → (core::int) → core::int;
+  abstract member-signature get _identityHashCode() → core::int;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool;
+  abstract member-signature get hashCode() → core::int;
+  abstract member-signature method toString() → core::String;
+  abstract member-signature method noSuchMethod(core::Invocation invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type;
 }
 class DiBq0 extends mix::C0 implements mix2::Bq {
   synthetic constructor •() → self::DiBq0
@@ -22,11 +31,29 @@
   abstract member-signature get a() → core::List<(core::int?) → core::int?>;
   abstract member-signature set a(core::List<(core::int?) → core::int?> _) → void;
   abstract member-signature method m((core::int?) → core::int? x) → (core::int?) → core::int?;
+  abstract member-signature get _identityHashCode() → core::int;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool;
+  abstract member-signature get hashCode() → core::int;
+  abstract member-signature method toString() → core::String;
+  abstract member-signature method noSuchMethod(core::Invocation invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type;
 }
 abstract class _DwB0&C0&B extends mix::C0 implements mix2::B /*isAnonymousMixin,isEliminatedMixin*/  {
   synthetic constructor •() → self::_DwB0&C0&B
     : super mix::C0::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool;
+  abstract member-signature get hashCode() → core::int;
+  abstract member-signature method toString() → core::String;
+  abstract member-signature method noSuchMethod(core::Invocation invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type;
   get /* from org-dartlang-testcase:///mixin_from_opt_in_out_in_lib2.dart */ a() → core::List<(core::int) → core::int>
     return <(core::int) → core::int>[];
   set /* from org-dartlang-testcase:///mixin_from_opt_in_out_in_lib2.dart */ a(core::List<(core::int) → core::int> _) → void {}
@@ -42,6 +69,15 @@
   synthetic constructor •() → self::_DwBq0&C0&Bq
     : super mix::C0::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool;
+  abstract member-signature get hashCode() → core::int;
+  abstract member-signature method toString() → core::String;
+  abstract member-signature method noSuchMethod(core::Invocation invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type;
   get /* from org-dartlang-testcase:///mixin_from_opt_in_out_in_lib2.dart */ a() → core::List<(core::int?) → core::int?>
     return <(core::int?) → core::int?>[];
   set /* from org-dartlang-testcase:///mixin_from_opt_in_out_in_lib2.dart */ a(core::List<(core::int?) → core::int?> _) → void {}
@@ -60,6 +96,15 @@
   abstract member-signature get a() → core::List<(core::int) → core::int>;
   abstract member-signature set a(core::List<(core::int) → core::int> _) → void;
   abstract member-signature method m((core::int) → core::int x) → (core::int) → core::int;
+  abstract member-signature get _identityHashCode() → core::int;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool;
+  abstract member-signature get hashCode() → core::int;
+  abstract member-signature method toString() → core::String;
+  abstract member-signature method noSuchMethod(core::Invocation invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type;
 }
 class DiBq3 extends mix::C3 implements mix2::Bq {
   synthetic constructor •() → self::DiBq3
@@ -68,11 +113,29 @@
   abstract member-signature get a() → core::List<(core::int?) → core::int?>;
   abstract member-signature set a(core::List<(core::int?) → core::int?> _) → void;
   abstract member-signature method m((core::int?) → core::int? x) → (core::int?) → core::int?;
+  abstract member-signature get _identityHashCode() → core::int;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool;
+  abstract member-signature get hashCode() → core::int;
+  abstract member-signature method toString() → core::String;
+  abstract member-signature method noSuchMethod(core::Invocation invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type;
 }
 abstract class _DwB3&C3&B extends mix::C3 implements mix2::B /*isAnonymousMixin,isEliminatedMixin*/  {
   synthetic constructor •() → self::_DwB3&C3&B
     : super mix::C3::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool;
+  abstract member-signature get hashCode() → core::int;
+  abstract member-signature method toString() → core::String;
+  abstract member-signature method noSuchMethod(core::Invocation invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type;
   get /* from org-dartlang-testcase:///mixin_from_opt_in_out_in_lib2.dart */ a() → core::List<(core::int) → core::int>
     return <(core::int) → core::int>[];
   set /* from org-dartlang-testcase:///mixin_from_opt_in_out_in_lib2.dart */ a(core::List<(core::int) → core::int> _) → void {}
@@ -88,6 +151,15 @@
   synthetic constructor •() → self::_DwBq3&C3&Bq
     : super mix::C3::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool;
+  abstract member-signature get hashCode() → core::int;
+  abstract member-signature method toString() → core::String;
+  abstract member-signature method noSuchMethod(core::Invocation invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type;
   get /* from org-dartlang-testcase:///mixin_from_opt_in_out_in_lib2.dart */ a() → core::List<(core::int?) → core::int?>
     return <(core::int?) → core::int?>[];
   set /* from org-dartlang-testcase:///mixin_from_opt_in_out_in_lib2.dart */ a(core::List<(core::int?) → core::int?> _) → void {}
@@ -115,6 +187,16 @@
   abstract member-signature get a() → core::List<(core::int*) →* core::int*>*;
   abstract member-signature set a(core::List<(core::int*) →* core::int*>* _) → void;
   abstract member-signature method m((core::int*) →* core::int* x) → (core::int*) →* core::int*;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C3 extends mix2::Bq {
   synthetic constructor •() → mix::C3*
@@ -123,6 +205,16 @@
   abstract member-signature get a() → core::List<(core::int*) →* core::int*>*;
   abstract member-signature set a(core::List<(core::int*) →* core::int*>* _) → void;
   abstract member-signature method m((core::int*) →* core::int* x) → (core::int*) →* core::int*;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 
 library /*isNonNullableByDefault*/;
diff --git a/pkg/front_end/testcases/nnbd/mixin_from_opt_in_out_in.dart.weak.expect b/pkg/front_end/testcases/nnbd/mixin_from_opt_in_out_in.dart.weak.expect
index fe1d001..22eca01 100644
--- a/pkg/front_end/testcases/nnbd/mixin_from_opt_in_out_in.dart.weak.expect
+++ b/pkg/front_end/testcases/nnbd/mixin_from_opt_in_out_in.dart.weak.expect
@@ -14,6 +14,15 @@
   abstract member-signature get a() → core::List<(core::int) → core::int>;
   abstract member-signature set a(core::List<(core::int) → core::int> _) → void;
   abstract member-signature method m((core::int) → core::int x) → (core::int) → core::int;
+  abstract member-signature get _identityHashCode() → core::int;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool;
+  abstract member-signature get hashCode() → core::int;
+  abstract member-signature method toString() → core::String;
+  abstract member-signature method noSuchMethod(core::Invocation invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type;
 }
 class DiBq0 extends mix::C0 implements mix2::Bq {
   synthetic constructor •() → self::DiBq0
@@ -22,11 +31,29 @@
   abstract member-signature get a() → core::List<(core::int?) → core::int?>;
   abstract member-signature set a(core::List<(core::int?) → core::int?> _) → void;
   abstract member-signature method m((core::int?) → core::int? x) → (core::int?) → core::int?;
+  abstract member-signature get _identityHashCode() → core::int;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool;
+  abstract member-signature get hashCode() → core::int;
+  abstract member-signature method toString() → core::String;
+  abstract member-signature method noSuchMethod(core::Invocation invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type;
 }
 abstract class _DwB0&C0&B = mix::C0 with mix2::B /*isAnonymousMixin*/  {
   synthetic constructor •() → self::_DwB0&C0&B
     : super mix::C0::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool;
+  abstract member-signature get hashCode() → core::int;
+  abstract member-signature method toString() → core::String;
+  abstract member-signature method noSuchMethod(core::Invocation invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type;
 }
 class DwB0 extends self::_DwB0&C0&B {
   synthetic constructor •() → self::DwB0
@@ -37,6 +64,15 @@
   synthetic constructor •() → self::_DwBq0&C0&Bq
     : super mix::C0::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool;
+  abstract member-signature get hashCode() → core::int;
+  abstract member-signature method toString() → core::String;
+  abstract member-signature method noSuchMethod(core::Invocation invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type;
 }
 class DwBq0 extends self::_DwBq0&C0&Bq {
   synthetic constructor •() → self::DwBq0
@@ -50,6 +86,15 @@
   abstract member-signature get a() → core::List<(core::int) → core::int>;
   abstract member-signature set a(core::List<(core::int) → core::int> _) → void;
   abstract member-signature method m((core::int) → core::int x) → (core::int) → core::int;
+  abstract member-signature get _identityHashCode() → core::int;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool;
+  abstract member-signature get hashCode() → core::int;
+  abstract member-signature method toString() → core::String;
+  abstract member-signature method noSuchMethod(core::Invocation invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type;
 }
 class DiBq3 extends mix::C3 implements mix2::Bq {
   synthetic constructor •() → self::DiBq3
@@ -58,11 +103,29 @@
   abstract member-signature get a() → core::List<(core::int?) → core::int?>;
   abstract member-signature set a(core::List<(core::int?) → core::int?> _) → void;
   abstract member-signature method m((core::int?) → core::int? x) → (core::int?) → core::int?;
+  abstract member-signature get _identityHashCode() → core::int;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool;
+  abstract member-signature get hashCode() → core::int;
+  abstract member-signature method toString() → core::String;
+  abstract member-signature method noSuchMethod(core::Invocation invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type;
 }
 abstract class _DwB3&C3&B = mix::C3 with mix2::B /*isAnonymousMixin*/  {
   synthetic constructor •() → self::_DwB3&C3&B
     : super mix::C3::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool;
+  abstract member-signature get hashCode() → core::int;
+  abstract member-signature method toString() → core::String;
+  abstract member-signature method noSuchMethod(core::Invocation invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type;
 }
 class DwB3 extends self::_DwB3&C3&B {
   synthetic constructor •() → self::DwB3
@@ -73,6 +136,15 @@
   synthetic constructor •() → self::_DwBq3&C3&Bq
     : super mix::C3::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool;
+  abstract member-signature get hashCode() → core::int;
+  abstract member-signature method toString() → core::String;
+  abstract member-signature method noSuchMethod(core::Invocation invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type;
 }
 class DwBq3 extends self::_DwBq3&C3&Bq {
   synthetic constructor •() → self::DwBq3
@@ -95,6 +167,16 @@
   abstract member-signature get a() → core::List<(core::int*) →* core::int*>*;
   abstract member-signature set a(core::List<(core::int*) →* core::int*>* _) → void;
   abstract member-signature method m((core::int*) →* core::int* x) → (core::int*) →* core::int*;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C3 extends mix2::Bq {
   synthetic constructor •() → mix::C3*
@@ -103,6 +185,16 @@
   abstract member-signature get a() → core::List<(core::int*) →* core::int*>*;
   abstract member-signature set a(core::List<(core::int*) →* core::int*>* _) → void;
   abstract member-signature method m((core::int*) →* core::int* x) → (core::int*) →* core::int*;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 
 library /*isNonNullableByDefault*/;
diff --git a/pkg/front_end/testcases/nnbd/mixin_from_opt_in_out_in.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/mixin_from_opt_in_out_in.dart.weak.transformed.expect
index 53ac2ec..81c6715 100644
--- a/pkg/front_end/testcases/nnbd/mixin_from_opt_in_out_in.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/mixin_from_opt_in_out_in.dart.weak.transformed.expect
@@ -14,6 +14,15 @@
   abstract member-signature get a() → core::List<(core::int) → core::int>;
   abstract member-signature set a(core::List<(core::int) → core::int> _) → void;
   abstract member-signature method m((core::int) → core::int x) → (core::int) → core::int;
+  abstract member-signature get _identityHashCode() → core::int;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool;
+  abstract member-signature get hashCode() → core::int;
+  abstract member-signature method toString() → core::String;
+  abstract member-signature method noSuchMethod(core::Invocation invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type;
 }
 class DiBq0 extends mix::C0 implements mix2::Bq {
   synthetic constructor •() → self::DiBq0
@@ -22,11 +31,29 @@
   abstract member-signature get a() → core::List<(core::int?) → core::int?>;
   abstract member-signature set a(core::List<(core::int?) → core::int?> _) → void;
   abstract member-signature method m((core::int?) → core::int? x) → (core::int?) → core::int?;
+  abstract member-signature get _identityHashCode() → core::int;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool;
+  abstract member-signature get hashCode() → core::int;
+  abstract member-signature method toString() → core::String;
+  abstract member-signature method noSuchMethod(core::Invocation invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type;
 }
 abstract class _DwB0&C0&B extends mix::C0 implements mix2::B /*isAnonymousMixin,isEliminatedMixin*/  {
   synthetic constructor •() → self::_DwB0&C0&B
     : super mix::C0::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool;
+  abstract member-signature get hashCode() → core::int;
+  abstract member-signature method toString() → core::String;
+  abstract member-signature method noSuchMethod(core::Invocation invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type;
   get /* from org-dartlang-testcase:///mixin_from_opt_in_out_in_lib2.dart */ a() → core::List<(core::int) → core::int>
     return <(core::int) → core::int>[];
   set /* from org-dartlang-testcase:///mixin_from_opt_in_out_in_lib2.dart */ a(core::List<(core::int) → core::int> _) → void {}
@@ -42,6 +69,15 @@
   synthetic constructor •() → self::_DwBq0&C0&Bq
     : super mix::C0::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool;
+  abstract member-signature get hashCode() → core::int;
+  abstract member-signature method toString() → core::String;
+  abstract member-signature method noSuchMethod(core::Invocation invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type;
   get /* from org-dartlang-testcase:///mixin_from_opt_in_out_in_lib2.dart */ a() → core::List<(core::int?) → core::int?>
     return <(core::int?) → core::int?>[];
   set /* from org-dartlang-testcase:///mixin_from_opt_in_out_in_lib2.dart */ a(core::List<(core::int?) → core::int?> _) → void {}
@@ -60,6 +96,15 @@
   abstract member-signature get a() → core::List<(core::int) → core::int>;
   abstract member-signature set a(core::List<(core::int) → core::int> _) → void;
   abstract member-signature method m((core::int) → core::int x) → (core::int) → core::int;
+  abstract member-signature get _identityHashCode() → core::int;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool;
+  abstract member-signature get hashCode() → core::int;
+  abstract member-signature method toString() → core::String;
+  abstract member-signature method noSuchMethod(core::Invocation invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type;
 }
 class DiBq3 extends mix::C3 implements mix2::Bq {
   synthetic constructor •() → self::DiBq3
@@ -68,11 +113,29 @@
   abstract member-signature get a() → core::List<(core::int?) → core::int?>;
   abstract member-signature set a(core::List<(core::int?) → core::int?> _) → void;
   abstract member-signature method m((core::int?) → core::int? x) → (core::int?) → core::int?;
+  abstract member-signature get _identityHashCode() → core::int;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool;
+  abstract member-signature get hashCode() → core::int;
+  abstract member-signature method toString() → core::String;
+  abstract member-signature method noSuchMethod(core::Invocation invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type;
 }
 abstract class _DwB3&C3&B extends mix::C3 implements mix2::B /*isAnonymousMixin,isEliminatedMixin*/  {
   synthetic constructor •() → self::_DwB3&C3&B
     : super mix::C3::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool;
+  abstract member-signature get hashCode() → core::int;
+  abstract member-signature method toString() → core::String;
+  abstract member-signature method noSuchMethod(core::Invocation invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type;
   get /* from org-dartlang-testcase:///mixin_from_opt_in_out_in_lib2.dart */ a() → core::List<(core::int) → core::int>
     return <(core::int) → core::int>[];
   set /* from org-dartlang-testcase:///mixin_from_opt_in_out_in_lib2.dart */ a(core::List<(core::int) → core::int> _) → void {}
@@ -88,6 +151,15 @@
   synthetic constructor •() → self::_DwBq3&C3&Bq
     : super mix::C3::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool;
+  abstract member-signature get hashCode() → core::int;
+  abstract member-signature method toString() → core::String;
+  abstract member-signature method noSuchMethod(core::Invocation invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type;
   get /* from org-dartlang-testcase:///mixin_from_opt_in_out_in_lib2.dart */ a() → core::List<(core::int?) → core::int?>
     return <(core::int?) → core::int?>[];
   set /* from org-dartlang-testcase:///mixin_from_opt_in_out_in_lib2.dart */ a(core::List<(core::int?) → core::int?> _) → void {}
@@ -115,6 +187,16 @@
   abstract member-signature get a() → core::List<(core::int*) →* core::int*>*;
   abstract member-signature set a(core::List<(core::int*) →* core::int*>* _) → void;
   abstract member-signature method m((core::int*) →* core::int* x) → (core::int*) →* core::int*;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C3 extends mix2::Bq {
   synthetic constructor •() → mix::C3*
@@ -123,6 +205,16 @@
   abstract member-signature get a() → core::List<(core::int*) →* core::int*>*;
   abstract member-signature set a(core::List<(core::int*) →* core::int*>* _) → void;
   abstract member-signature method m((core::int*) →* core::int* x) → (core::int*) →* core::int*;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 
 library /*isNonNullableByDefault*/;
diff --git a/pkg/front_end/testcases/nnbd/mixin_from_opt_out.dart.outline.expect b/pkg/front_end/testcases/nnbd/mixin_from_opt_out.dart.outline.expect
index cd9b6b1..757fb8c 100644
--- a/pkg/front_end/testcases/nnbd/mixin_from_opt_out.dart.outline.expect
+++ b/pkg/front_end/testcases/nnbd/mixin_from_opt_out.dart.outline.expect
@@ -9,10 +9,12 @@
   const synthetic constructor •() → self::_Class&Object&Mixin
     : super core::Object::•()
     ;
+  abstract forwarding-stub operator ==(dynamic other) → core::bool*;
 }
 class Class extends self::_Class&Object&Mixin {
   synthetic constructor •() → self::Class
     ;
+  abstract forwarding-stub operator ==(dynamic other) → core::bool*;
 }
 static method main() → dynamic
   ;
@@ -26,4 +28,14 @@
     ;
   method method(core::int* i) → core::int*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
diff --git a/pkg/front_end/testcases/nnbd/mixin_from_opt_out.dart.strong.expect b/pkg/front_end/testcases/nnbd/mixin_from_opt_out.dart.strong.expect
index 05e67e7..cf985f7 100644
--- a/pkg/front_end/testcases/nnbd/mixin_from_opt_out.dart.strong.expect
+++ b/pkg/front_end/testcases/nnbd/mixin_from_opt_out.dart.strong.expect
@@ -9,11 +9,13 @@
   const synthetic constructor •() → self::_Class&Object&Mixin
     : super core::Object::•()
     ;
+  abstract forwarding-stub operator ==(dynamic other) → core::bool*;
 }
 class Class extends self::_Class&Object&Mixin {
   synthetic constructor •() → self::Class
     : super self::_Class&Object&Mixin::•()
     ;
+  abstract forwarding-stub operator ==(dynamic other) → core::bool*;
 }
 static method main() → dynamic {
   core::print(new self::Class::•().{mix::Mixin::method}(null));
@@ -29,4 +31,14 @@
     ;
   method method(core::int* i) → core::int*
     return let final core::int* #t1 = i in #t1.{core::num::==}(null) ?{core::int*} 0 : #t1;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
diff --git a/pkg/front_end/testcases/nnbd/mixin_from_opt_out.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/mixin_from_opt_out.dart.strong.transformed.expect
index fb6d79d..1cfd5c0 100644
--- a/pkg/front_end/testcases/nnbd/mixin_from_opt_out.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/mixin_from_opt_out.dart.strong.transformed.expect
@@ -9,13 +9,24 @@
   const synthetic constructor •() → self::_Class&Object&Mixin
     : super core::Object::•()
     ;
+  abstract member-signature operator /*isNullableByDefault, from org-dartlang-testcase:///mixin_from_opt_out_lib.dart */ ==(dynamic other) → core::bool*;
   method /*isNullableByDefault, from org-dartlang-testcase:///mixin_from_opt_out_lib.dart */ method(core::int* i) → core::int*
     return let final core::int* #t1 = i in #t1.{core::num::==}(null) ?{core::int*} 0 : #t1;
+  abstract member-signature get /*isNullableByDefault, from org-dartlang-testcase:///mixin_from_opt_out_lib.dart */ _identityHashCode() → core::int*;
+  abstract member-signature method /*isNullableByDefault, from org-dartlang-testcase:///mixin_from_opt_out_lib.dart */ _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method /*isNullableByDefault, from org-dartlang-testcase:///mixin_from_opt_out_lib.dart */ _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method /*isNullableByDefault, from org-dartlang-testcase:///mixin_from_opt_out_lib.dart */ _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method /*isNullableByDefault, from org-dartlang-testcase:///mixin_from_opt_out_lib.dart */ _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature get /*isNullableByDefault, from org-dartlang-testcase:///mixin_from_opt_out_lib.dart */ hashCode() → core::int*;
+  abstract member-signature method /*isNullableByDefault, from org-dartlang-testcase:///mixin_from_opt_out_lib.dart */ toString() → core::String*;
+  abstract member-signature method /*isNullableByDefault, from org-dartlang-testcase:///mixin_from_opt_out_lib.dart */ noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get /*isNullableByDefault, from org-dartlang-testcase:///mixin_from_opt_out_lib.dart */ runtimeType() → core::Type*;
 }
 class Class extends self::_Class&Object&Mixin {
   synthetic constructor •() → self::Class
     : super self::_Class&Object&Mixin::•()
     ;
+  abstract forwarding-stub operator ==(dynamic other) → core::bool*;
 }
 static method main() → dynamic {
   core::print(new self::Class::•().{mix::Mixin::method}(null));
@@ -31,4 +42,14 @@
     ;
   method method(core::int* i) → core::int*
     return let final core::int* #t2 = i in #t2.{core::num::==}(null) ?{core::int*} 0 : #t2;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
diff --git a/pkg/front_end/testcases/nnbd/mixin_from_opt_out.dart.weak.expect b/pkg/front_end/testcases/nnbd/mixin_from_opt_out.dart.weak.expect
index 05e67e7..cf985f7 100644
--- a/pkg/front_end/testcases/nnbd/mixin_from_opt_out.dart.weak.expect
+++ b/pkg/front_end/testcases/nnbd/mixin_from_opt_out.dart.weak.expect
@@ -9,11 +9,13 @@
   const synthetic constructor •() → self::_Class&Object&Mixin
     : super core::Object::•()
     ;
+  abstract forwarding-stub operator ==(dynamic other) → core::bool*;
 }
 class Class extends self::_Class&Object&Mixin {
   synthetic constructor •() → self::Class
     : super self::_Class&Object&Mixin::•()
     ;
+  abstract forwarding-stub operator ==(dynamic other) → core::bool*;
 }
 static method main() → dynamic {
   core::print(new self::Class::•().{mix::Mixin::method}(null));
@@ -29,4 +31,14 @@
     ;
   method method(core::int* i) → core::int*
     return let final core::int* #t1 = i in #t1.{core::num::==}(null) ?{core::int*} 0 : #t1;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
diff --git a/pkg/front_end/testcases/nnbd/mixin_from_opt_out.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/mixin_from_opt_out.dart.weak.transformed.expect
index fb6d79d..1cfd5c0 100644
--- a/pkg/front_end/testcases/nnbd/mixin_from_opt_out.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/mixin_from_opt_out.dart.weak.transformed.expect
@@ -9,13 +9,24 @@
   const synthetic constructor •() → self::_Class&Object&Mixin
     : super core::Object::•()
     ;
+  abstract member-signature operator /*isNullableByDefault, from org-dartlang-testcase:///mixin_from_opt_out_lib.dart */ ==(dynamic other) → core::bool*;
   method /*isNullableByDefault, from org-dartlang-testcase:///mixin_from_opt_out_lib.dart */ method(core::int* i) → core::int*
     return let final core::int* #t1 = i in #t1.{core::num::==}(null) ?{core::int*} 0 : #t1;
+  abstract member-signature get /*isNullableByDefault, from org-dartlang-testcase:///mixin_from_opt_out_lib.dart */ _identityHashCode() → core::int*;
+  abstract member-signature method /*isNullableByDefault, from org-dartlang-testcase:///mixin_from_opt_out_lib.dart */ _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method /*isNullableByDefault, from org-dartlang-testcase:///mixin_from_opt_out_lib.dart */ _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method /*isNullableByDefault, from org-dartlang-testcase:///mixin_from_opt_out_lib.dart */ _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method /*isNullableByDefault, from org-dartlang-testcase:///mixin_from_opt_out_lib.dart */ _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature get /*isNullableByDefault, from org-dartlang-testcase:///mixin_from_opt_out_lib.dart */ hashCode() → core::int*;
+  abstract member-signature method /*isNullableByDefault, from org-dartlang-testcase:///mixin_from_opt_out_lib.dart */ toString() → core::String*;
+  abstract member-signature method /*isNullableByDefault, from org-dartlang-testcase:///mixin_from_opt_out_lib.dart */ noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get /*isNullableByDefault, from org-dartlang-testcase:///mixin_from_opt_out_lib.dart */ runtimeType() → core::Type*;
 }
 class Class extends self::_Class&Object&Mixin {
   synthetic constructor •() → self::Class
     : super self::_Class&Object&Mixin::•()
     ;
+  abstract forwarding-stub operator ==(dynamic other) → core::bool*;
 }
 static method main() → dynamic {
   core::print(new self::Class::•().{mix::Mixin::method}(null));
@@ -31,4 +42,14 @@
     ;
   method method(core::int* i) → core::int*
     return let final core::int* #t2 = i in #t2.{core::num::==}(null) ?{core::int*} 0 : #t2;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
diff --git a/pkg/front_end/testcases/nnbd/never_opt_out.dart.outline.expect b/pkg/front_end/testcases/nnbd/never_opt_out.dart.outline.expect
index b2ec5db..1ff275c 100644
--- a/pkg/front_end/testcases/nnbd/never_opt_out.dart.outline.expect
+++ b/pkg/front_end/testcases/nnbd/never_opt_out.dart.outline.expect
@@ -22,6 +22,16 @@
     ;
   set nullProperty(core::Null? value) → void
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C extends nev::A {
   field Never* neverField;
@@ -40,6 +50,16 @@
     ;
   set nullProperty(Never* value) → void
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field Never* optOutNever;
 static field core::Null? inferredOptOutNever;
diff --git a/pkg/front_end/testcases/nnbd/never_opt_out.dart.strong.expect b/pkg/front_end/testcases/nnbd/never_opt_out.dart.strong.expect
index b3d52ba..2072456 100644
--- a/pkg/front_end/testcases/nnbd/never_opt_out.dart.strong.expect
+++ b/pkg/front_end/testcases/nnbd/never_opt_out.dart.strong.expect
@@ -21,6 +21,16 @@
   get nullProperty() → core::Null?
     return null;
   set nullProperty(core::Null? value) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C extends nev::A {
   field Never* neverField = null;
@@ -38,6 +48,16 @@
   get nullProperty() → Never*
     return null;
   set nullProperty(Never* value) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field Never* optOutNever;
 static field core::Null? inferredOptOutNever = nev::optInNever;
diff --git a/pkg/front_end/testcases/nnbd/never_opt_out.dart.weak.expect b/pkg/front_end/testcases/nnbd/never_opt_out.dart.weak.expect
index b3d52ba..2072456 100644
--- a/pkg/front_end/testcases/nnbd/never_opt_out.dart.weak.expect
+++ b/pkg/front_end/testcases/nnbd/never_opt_out.dart.weak.expect
@@ -21,6 +21,16 @@
   get nullProperty() → core::Null?
     return null;
   set nullProperty(core::Null? value) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C extends nev::A {
   field Never* neverField = null;
@@ -38,6 +48,16 @@
   get nullProperty() → Never*
     return null;
   set nullProperty(Never* value) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field Never* optOutNever;
 static field core::Null? inferredOptOutNever = nev::optInNever;
diff --git a/pkg/front_end/testcases/nnbd/nnbd_opt_out_language_version.dart.outline.expect b/pkg/front_end/testcases/nnbd/nnbd_opt_out_language_version.dart.outline.expect
index 0929ee6..3442a2d 100644
--- a/pkg/front_end/testcases/nnbd/nnbd_opt_out_language_version.dart.outline.expect
+++ b/pkg/front_end/testcases/nnbd/nnbd_opt_out_language_version.dart.outline.expect
@@ -7,18 +7,48 @@
     ;
   get g() → core::int*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class required extends core::Object {
   synthetic constructor •() → self::required*
     ;
   get g() → core::int*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C extends core::Object {
   field self::late* l;
   field self::required* r;
   synthetic constructor •() → self::C*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/nnbd/nnbd_opt_out_language_version.dart.strong.expect b/pkg/front_end/testcases/nnbd/nnbd_opt_out_language_version.dart.strong.expect
index 46f8c11..34b7b6f 100644
--- a/pkg/front_end/testcases/nnbd/nnbd_opt_out_language_version.dart.strong.expect
+++ b/pkg/front_end/testcases/nnbd/nnbd_opt_out_language_version.dart.strong.expect
@@ -8,6 +8,16 @@
     ;
   get g() → core::int*
     return 1;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class required extends core::Object {
   synthetic constructor •() → self::required*
@@ -15,6 +25,16 @@
     ;
   get g() → core::int*
     return 2;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C extends core::Object {
   field self::late* l = new self::late::•();
@@ -22,6 +42,16 @@
   synthetic constructor •() → self::C*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   if(!new self::C::•().{self::C::l}.{self::late::g}.{core::num::==}(1))
diff --git a/pkg/front_end/testcases/nnbd/nnbd_opt_out_language_version.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/nnbd_opt_out_language_version.dart.strong.transformed.expect
index 46f8c11..34b7b6f 100644
--- a/pkg/front_end/testcases/nnbd/nnbd_opt_out_language_version.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/nnbd_opt_out_language_version.dart.strong.transformed.expect
@@ -8,6 +8,16 @@
     ;
   get g() → core::int*
     return 1;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class required extends core::Object {
   synthetic constructor •() → self::required*
@@ -15,6 +25,16 @@
     ;
   get g() → core::int*
     return 2;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C extends core::Object {
   field self::late* l = new self::late::•();
@@ -22,6 +42,16 @@
   synthetic constructor •() → self::C*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   if(!new self::C::•().{self::C::l}.{self::late::g}.{core::num::==}(1))
diff --git a/pkg/front_end/testcases/nnbd/nnbd_opt_out_language_version.dart.weak.expect b/pkg/front_end/testcases/nnbd/nnbd_opt_out_language_version.dart.weak.expect
index 46f8c11..34b7b6f 100644
--- a/pkg/front_end/testcases/nnbd/nnbd_opt_out_language_version.dart.weak.expect
+++ b/pkg/front_end/testcases/nnbd/nnbd_opt_out_language_version.dart.weak.expect
@@ -8,6 +8,16 @@
     ;
   get g() → core::int*
     return 1;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class required extends core::Object {
   synthetic constructor •() → self::required*
@@ -15,6 +25,16 @@
     ;
   get g() → core::int*
     return 2;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C extends core::Object {
   field self::late* l = new self::late::•();
@@ -22,6 +42,16 @@
   synthetic constructor •() → self::C*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   if(!new self::C::•().{self::C::l}.{self::late::g}.{core::num::==}(1))
diff --git a/pkg/front_end/testcases/nnbd/nnbd_opt_out_language_version.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/nnbd_opt_out_language_version.dart.weak.transformed.expect
index 46f8c11..34b7b6f 100644
--- a/pkg/front_end/testcases/nnbd/nnbd_opt_out_language_version.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/nnbd_opt_out_language_version.dart.weak.transformed.expect
@@ -8,6 +8,16 @@
     ;
   get g() → core::int*
     return 1;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class required extends core::Object {
   synthetic constructor •() → self::required*
@@ -15,6 +25,16 @@
     ;
   get g() → core::int*
     return 2;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C extends core::Object {
   field self::late* l = new self::late::•();
@@ -22,6 +42,16 @@
   synthetic constructor •() → self::C*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   if(!new self::C::•().{self::C::l}.{self::late::g}.{core::num::==}(1))
diff --git a/pkg/front_end/testcases/nnbd/nnbd_opt_out_language_version_try_to_trick.dart.outline.expect b/pkg/front_end/testcases/nnbd/nnbd_opt_out_language_version_try_to_trick.dart.outline.expect
index 0929ee6..3442a2d 100644
--- a/pkg/front_end/testcases/nnbd/nnbd_opt_out_language_version_try_to_trick.dart.outline.expect
+++ b/pkg/front_end/testcases/nnbd/nnbd_opt_out_language_version_try_to_trick.dart.outline.expect
@@ -7,18 +7,48 @@
     ;
   get g() → core::int*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class required extends core::Object {
   synthetic constructor •() → self::required*
     ;
   get g() → core::int*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C extends core::Object {
   field self::late* l;
   field self::required* r;
   synthetic constructor •() → self::C*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/nnbd/nnbd_opt_out_language_version_try_to_trick.dart.strong.expect b/pkg/front_end/testcases/nnbd/nnbd_opt_out_language_version_try_to_trick.dart.strong.expect
index 46f8c11..34b7b6f 100644
--- a/pkg/front_end/testcases/nnbd/nnbd_opt_out_language_version_try_to_trick.dart.strong.expect
+++ b/pkg/front_end/testcases/nnbd/nnbd_opt_out_language_version_try_to_trick.dart.strong.expect
@@ -8,6 +8,16 @@
     ;
   get g() → core::int*
     return 1;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class required extends core::Object {
   synthetic constructor •() → self::required*
@@ -15,6 +25,16 @@
     ;
   get g() → core::int*
     return 2;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C extends core::Object {
   field self::late* l = new self::late::•();
@@ -22,6 +42,16 @@
   synthetic constructor •() → self::C*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   if(!new self::C::•().{self::C::l}.{self::late::g}.{core::num::==}(1))
diff --git a/pkg/front_end/testcases/nnbd/nnbd_opt_out_language_version_try_to_trick.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/nnbd_opt_out_language_version_try_to_trick.dart.strong.transformed.expect
index 46f8c11..34b7b6f 100644
--- a/pkg/front_end/testcases/nnbd/nnbd_opt_out_language_version_try_to_trick.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/nnbd_opt_out_language_version_try_to_trick.dart.strong.transformed.expect
@@ -8,6 +8,16 @@
     ;
   get g() → core::int*
     return 1;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class required extends core::Object {
   synthetic constructor •() → self::required*
@@ -15,6 +25,16 @@
     ;
   get g() → core::int*
     return 2;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C extends core::Object {
   field self::late* l = new self::late::•();
@@ -22,6 +42,16 @@
   synthetic constructor •() → self::C*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   if(!new self::C::•().{self::C::l}.{self::late::g}.{core::num::==}(1))
diff --git a/pkg/front_end/testcases/nnbd/nnbd_opt_out_language_version_try_to_trick.dart.weak.expect b/pkg/front_end/testcases/nnbd/nnbd_opt_out_language_version_try_to_trick.dart.weak.expect
index 46f8c11..34b7b6f 100644
--- a/pkg/front_end/testcases/nnbd/nnbd_opt_out_language_version_try_to_trick.dart.weak.expect
+++ b/pkg/front_end/testcases/nnbd/nnbd_opt_out_language_version_try_to_trick.dart.weak.expect
@@ -8,6 +8,16 @@
     ;
   get g() → core::int*
     return 1;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class required extends core::Object {
   synthetic constructor •() → self::required*
@@ -15,6 +25,16 @@
     ;
   get g() → core::int*
     return 2;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C extends core::Object {
   field self::late* l = new self::late::•();
@@ -22,6 +42,16 @@
   synthetic constructor •() → self::C*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   if(!new self::C::•().{self::C::l}.{self::late::g}.{core::num::==}(1))
diff --git a/pkg/front_end/testcases/nnbd/nnbd_opt_out_language_version_try_to_trick.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/nnbd_opt_out_language_version_try_to_trick.dart.weak.transformed.expect
index 46f8c11..34b7b6f 100644
--- a/pkg/front_end/testcases/nnbd/nnbd_opt_out_language_version_try_to_trick.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/nnbd_opt_out_language_version_try_to_trick.dart.weak.transformed.expect
@@ -8,6 +8,16 @@
     ;
   get g() → core::int*
     return 1;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class required extends core::Object {
   synthetic constructor •() → self::required*
@@ -15,6 +25,16 @@
     ;
   get g() → core::int*
     return 2;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C extends core::Object {
   field self::late* l = new self::late::•();
@@ -22,6 +42,16 @@
   synthetic constructor •() → self::C*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   if(!new self::C::•().{self::C::l}.{self::late::g}.{core::num::==}(1))
diff --git a/pkg/front_end/testcases/nnbd/no_null_shorting.dart.outline.expect b/pkg/front_end/testcases/nnbd/no_null_shorting.dart.outline.expect
index 7ed6f00..100f3e0 100644
--- a/pkg/front_end/testcases/nnbd/no_null_shorting.dart.outline.expect
+++ b/pkg/front_end/testcases/nnbd/no_null_shorting.dart.outline.expect
@@ -16,6 +16,16 @@
     ;
   operator unary-() → self::Class*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/nnbd/no_null_shorting.dart.strong.expect b/pkg/front_end/testcases/nnbd/no_null_shorting.dart.strong.expect
index b0d09f9..36152d8 100644
--- a/pkg/front_end/testcases/nnbd/no_null_shorting.dart.strong.expect
+++ b/pkg/front_end/testcases/nnbd/no_null_shorting.dart.strong.expect
@@ -18,6 +18,16 @@
     return this.{self::Class::field};
   operator unary-() → self::Class*
     return this.{self::Class::field};
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   self::propertyAccess(null);
@@ -26,119 +36,119 @@
   self::ifNull(null);
 }
 static method propertyAccess(self::Class* c) → void {
-  let final self::Class* #t1 = c in #t1.{core::Object::==}(null) ?{self::Class*} null : #t1.{self::Class::field};
-  let final self::Class* #t2 = c in #t2.{core::Object::==}(null) ?{self::Class*} null : #t2.{self::Class::field} = new self::Class::•();
-  c = let final self::Class* #t3 = c in #t3.{core::Object::==}(null) ?{self::Class*} null : #t3.{self::Class::field} = new self::Class::•();
-  let final self::Class* #t4 = c in #t4.{core::Object::==}(null) ?{self::Class*} null : #t4.{self::Class::method}();
-  self::throws(() → self::Class* => (let final self::Class* #t5 = c in #t5.{core::Object::==}(null) ?{self::Class*} null : #t5.{self::Class::field}).{self::Class::field});
-  let final self::Class* #t6 = let final self::Class* #t7 = c in #t7.{core::Object::==}(null) ?{self::Class*} null : #t7.{self::Class::field} in #t6.{core::Object::==}(null) ?{self::Class*} null : #t6.{self::Class::field};
-  self::throws(() → self::Class* => let final self::Class* #t8 = (let final self::Class* #t9 = c in #t9.{core::Object::==}(null) ?{self::Class*} null : #t9.{self::Class::field}).{self::Class::field} in #t8.{core::Object::==}(null) ?{self::Class*} null : #t8.{self::Class::field});
-  self::throws(() → self::Class* => (let final self::Class* #t10 = c in #t10.{core::Object::==}(null) ?{self::Class*} null : #t10.{self::Class::field}).{self::Class::field} = new self::Class::•());
-  let final self::Class* #t11 = let final self::Class* #t12 = c in #t12.{core::Object::==}(null) ?{self::Class*} null : #t12.{self::Class::field} in #t11.{core::Object::==}(null) ?{self::Class*} null : #t11.{self::Class::field} = new self::Class::•();
-  self::throws(() → self::Class* => let final self::Class* #t13 = (let final self::Class* #t14 = c in #t14.{core::Object::==}(null) ?{self::Class*} null : #t14.{self::Class::field}).{self::Class::field} in #t13.{core::Object::==}(null) ?{self::Class*} null : #t13.{self::Class::field} = new self::Class::•());
-  self::throws(() → self::Class* => (let final self::Class* #t15 = c in #t15.{core::Object::==}(null) ?{self::Class*} null : #t15.{self::Class::field}).{self::Class::field});
-  self::throws(() → self::Class* => (let final self::Class* #t16 = c in #t16.{core::Object::==}(null) ?{self::Class*} null : #t16.{self::Class::field} = new self::Class::•()).{self::Class::field});
-  self::throws(() → self::Class* => (let final self::Class* #t17 = c in #t17.{core::Object::==}(null) ?{self::Class*} null : #t17.{self::Class::method}()).{self::Class::field});
-  self::throws(() → self::Class* => c = (let final self::Class* #t18 = c in #t18.{core::Object::==}(null) ?{self::Class*} null : #t18.{self::Class::field}).{self::Class::field} = new self::Class::•());
-  c = let final self::Class* #t19 = let final self::Class* #t20 = c in #t20.{core::Object::==}(null) ?{self::Class*} null : #t20.{self::Class::field} in #t19.{core::Object::==}(null) ?{self::Class*} null : #t19.{self::Class::field} = new self::Class::•();
-  self::throws(() → self::Class* => c = let final self::Class* #t21 = (let final self::Class* #t22 = c in #t22.{core::Object::==}(null) ?{self::Class*} null : #t22.{self::Class::field}).{self::Class::field} in #t21.{core::Object::==}(null) ?{self::Class*} null : #t21.{self::Class::field} = new self::Class::•());
-  self::throws(() → self::Class* => (let final self::Class* #t23 = c in #t23.{core::Object::==}(null) ?{self::Class*} null : #t23.{self::Class::field}).{self::Class::method}());
-  let final self::Class* #t24 = c in #t24.{core::Object::==}(null) ?{self::Class*} null : #t24.{self::Class::field} = new self::Class::•().{self::Class::field};
-  c = let final self::Class* #t25 = c in #t25.{core::Object::==}(null) ?{self::Class*} null : #t25.{self::Class::field} = new self::Class::•().{self::Class::field};
-  let final self::Class* #t26 = c in #t26.{core::Object::==}(null) ?{self::Class*} null : #t26.{self::Class::field} = new self::Class::•().{self::Class::field} = new self::Class::•();
-  c = let final self::Class* #t27 = c in #t27.{core::Object::==}(null) ?{self::Class*} null : #t27.{self::Class::field} = new self::Class::•().{self::Class::field} = new self::Class::•();
-  let final self::Class* #t28 = c in #t28.{core::Object::==}(null) ?{self::Class*} null : #t28.{self::Class::field} = new self::Class::•().{self::Class::method}();
-  c = let final self::Class* #t29 = c in #t29.{core::Object::==}(null) ?{self::Class*} null : #t29.{self::Class::field} = new self::Class::•().{self::Class::method}();
-  self::throws(() → self::Class* => (let final self::Class* #t30 = c in #t30.{core::Object::==}(null) ?{self::Class*} null : #t30.{self::Class::method}()).{self::Class::field});
-  self::throws(() → self::Class* => (let final self::Class* #t31 = c in #t31.{core::Object::==}(null) ?{self::Class*} null : #t31.{self::Class::method}()).{self::Class::field} = new self::Class::•());
-  self::throws(() → self::Class* => (let final self::Class* #t32 = c in #t32.{core::Object::==}(null) ?{self::Class*} null : #t32.{self::Class::method}()).{self::Class::method}());
-  self::throws(() → self::Class* => (let final self::Class* #t33 = c in #t33.{core::Object::==}(null) ?{self::Class*} null : #t33.{self::Class::field}).{self::Class::field}.{self::Class::field});
-  self::throws(() → self::Class* => (let final self::Class* #t34 = c in #t34.{core::Object::==}(null) ?{self::Class*} null : #t34.{self::Class::field}).{self::Class::field}.{self::Class::field} = new self::Class::•());
-  self::throws(() → self::Class* => c = (let final self::Class* #t35 = c in #t35.{core::Object::==}(null) ?{self::Class*} null : #t35.{self::Class::field}).{self::Class::field}.{self::Class::field} = new self::Class::•());
-  self::throws(() → self::Class* => (let final self::Class* #t36 = c in #t36.{core::Object::==}(null) ?{self::Class*} null : #t36.{self::Class::field}).{self::Class::field}.{self::Class::method}());
-  let final self::Class* #t37 = c in #t37.{core::Object::==}(null) ?{self::Class*} null : #t37.{self::Class::field} = new self::Class::•().{self::Class::field}.{self::Class::field};
-  c = let final self::Class* #t38 = c in #t38.{core::Object::==}(null) ?{self::Class*} null : #t38.{self::Class::field} = new self::Class::•().{self::Class::field}.{self::Class::field};
-  let final self::Class* #t39 = c in #t39.{core::Object::==}(null) ?{self::Class*} null : #t39.{self::Class::field} = new self::Class::•().{self::Class::field}.{self::Class::field} = new self::Class::•();
-  c = let final self::Class* #t40 = c in #t40.{core::Object::==}(null) ?{self::Class*} null : #t40.{self::Class::field} = new self::Class::•().{self::Class::field}.{self::Class::field} = new self::Class::•();
-  let final self::Class* #t41 = c in #t41.{core::Object::==}(null) ?{self::Class*} null : #t41.{self::Class::field} = new self::Class::•().{self::Class::field}.{self::Class::method}();
-  c = let final self::Class* #t42 = c in #t42.{core::Object::==}(null) ?{self::Class*} null : #t42.{self::Class::field} = new self::Class::•().{self::Class::field}.{self::Class::method}();
-  self::throws(() → self::Class* => (let final self::Class* #t43 = c in #t43.{core::Object::==}(null) ?{self::Class*} null : #t43.{self::Class::method}()).{self::Class::field}.{self::Class::field});
-  self::throws(() → self::Class* => (let final self::Class* #t44 = c in #t44.{core::Object::==}(null) ?{self::Class*} null : #t44.{self::Class::method}()).{self::Class::field}.{self::Class::field} = new self::Class::•());
-  self::throws(() → self::Class* => (let final self::Class* #t45 = c in #t45.{core::Object::==}(null) ?{self::Class*} null : #t45.{self::Class::method}()).{self::Class::field}.{self::Class::method}());
-  self::throws(() → self::Class* => (let final self::Class* #t46 = c in #t46.{core::Object::==}(null) ?{self::Class*} null : #t46.{self::Class::field}).{self::Class::field} = new self::Class::•().{self::Class::field});
-  self::throws(() → self::Class* => c = (let final self::Class* #t47 = c in #t47.{core::Object::==}(null) ?{self::Class*} null : #t47.{self::Class::field}).{self::Class::field} = new self::Class::•().{self::Class::field});
-  self::throws(() → self::Class* => (let final self::Class* #t48 = c in #t48.{core::Object::==}(null) ?{self::Class*} null : #t48.{self::Class::field}).{self::Class::field} = new self::Class::•().{self::Class::field} = new self::Class::•());
-  self::throws(() → self::Class* => c = (let final self::Class* #t49 = c in #t49.{core::Object::==}(null) ?{self::Class*} null : #t49.{self::Class::field}).{self::Class::field} = new self::Class::•().{self::Class::field} = new self::Class::•());
-  self::throws(() → self::Class* => (let final self::Class* #t50 = c in #t50.{core::Object::==}(null) ?{self::Class*} null : #t50.{self::Class::field}).{self::Class::field} = new self::Class::•().{self::Class::method}());
-  self::throws(() → self::Class* => c = (let final self::Class* #t51 = c in #t51.{core::Object::==}(null) ?{self::Class*} null : #t51.{self::Class::field}).{self::Class::field} = new self::Class::•().{self::Class::method}());
-  let final self::Class* #t52 = c in #t52.{core::Object::==}(null) ?{self::Class*} null : #t52.{self::Class::field} = new self::Class::•().{self::Class::field} = new self::Class::•().{self::Class::field};
-  c = let final self::Class* #t53 = c in #t53.{core::Object::==}(null) ?{self::Class*} null : #t53.{self::Class::field} = new self::Class::•().{self::Class::field} = new self::Class::•().{self::Class::field};
-  let final self::Class* #t54 = c in #t54.{core::Object::==}(null) ?{self::Class*} null : #t54.{self::Class::field} = new self::Class::•().{self::Class::field} = new self::Class::•().{self::Class::field} = new self::Class::•();
-  c = let final self::Class* #t55 = c in #t55.{core::Object::==}(null) ?{self::Class*} null : #t55.{self::Class::field} = new self::Class::•().{self::Class::field} = new self::Class::•().{self::Class::field} = new self::Class::•();
-  let final self::Class* #t56 = c in #t56.{core::Object::==}(null) ?{self::Class*} null : #t56.{self::Class::field} = new self::Class::•().{self::Class::field} = new self::Class::•().{self::Class::method}();
-  c = let final self::Class* #t57 = c in #t57.{core::Object::==}(null) ?{self::Class*} null : #t57.{self::Class::field} = new self::Class::•().{self::Class::field} = new self::Class::•().{self::Class::method}();
-  self::throws(() → self::Class* => (let final self::Class* #t58 = c in #t58.{core::Object::==}(null) ?{self::Class*} null : #t58.{self::Class::method}()).{self::Class::field} = new self::Class::•().{self::Class::field});
-  self::throws(() → self::Class* => c = (let final self::Class* #t59 = c in #t59.{core::Object::==}(null) ?{self::Class*} null : #t59.{self::Class::method}()).{self::Class::field} = new self::Class::•().{self::Class::field});
-  self::throws(() → self::Class* => (let final self::Class* #t60 = c in #t60.{core::Object::==}(null) ?{self::Class*} null : #t60.{self::Class::method}()).{self::Class::field} = new self::Class::•().{self::Class::field} = new self::Class::•());
-  self::throws(() → self::Class* => c = (let final self::Class* #t61 = c in #t61.{core::Object::==}(null) ?{self::Class*} null : #t61.{self::Class::method}()).{self::Class::field} = new self::Class::•().{self::Class::field} = new self::Class::•());
-  self::throws(() → self::Class* => (let final self::Class* #t62 = c in #t62.{core::Object::==}(null) ?{self::Class*} null : #t62.{self::Class::method}()).{self::Class::field} = new self::Class::•().{self::Class::method}());
-  self::throws(() → self::Class* => c = (let final self::Class* #t63 = c in #t63.{core::Object::==}(null) ?{self::Class*} null : #t63.{self::Class::method}()).{self::Class::field} = new self::Class::•().{self::Class::method}());
-  self::throws(() → self::Class* => (let final self::Class* #t64 = c in #t64.{core::Object::==}(null) ?{self::Class*} null : #t64.{self::Class::field}).{self::Class::method}().{self::Class::field});
-  self::throws(() → self::Class* => (let final self::Class* #t65 = c in #t65.{core::Object::==}(null) ?{self::Class*} null : #t65.{self::Class::field}).{self::Class::method}().{self::Class::field} = new self::Class::•());
-  self::throws(() → self::Class* => c = (let final self::Class* #t66 = c in #t66.{core::Object::==}(null) ?{self::Class*} null : #t66.{self::Class::field}).{self::Class::method}().{self::Class::field} = new self::Class::•());
-  self::throws(() → self::Class* => (let final self::Class* #t67 = c in #t67.{core::Object::==}(null) ?{self::Class*} null : #t67.{self::Class::field}).{self::Class::method}().{self::Class::method}());
-  let final self::Class* #t68 = c in #t68.{core::Object::==}(null) ?{self::Class*} null : #t68.{self::Class::field} = new self::Class::•().{self::Class::method}().{self::Class::field};
-  c = let final self::Class* #t69 = c in #t69.{core::Object::==}(null) ?{self::Class*} null : #t69.{self::Class::field} = new self::Class::•().{self::Class::method}().{self::Class::field};
-  let final self::Class* #t70 = c in #t70.{core::Object::==}(null) ?{self::Class*} null : #t70.{self::Class::field} = new self::Class::•().{self::Class::method}().{self::Class::field} = new self::Class::•();
-  c = let final self::Class* #t71 = c in #t71.{core::Object::==}(null) ?{self::Class*} null : #t71.{self::Class::field} = new self::Class::•().{self::Class::method}().{self::Class::field} = new self::Class::•();
-  let final self::Class* #t72 = c in #t72.{core::Object::==}(null) ?{self::Class*} null : #t72.{self::Class::field} = new self::Class::•().{self::Class::method}().{self::Class::method}();
-  c = let final self::Class* #t73 = c in #t73.{core::Object::==}(null) ?{self::Class*} null : #t73.{self::Class::field} = new self::Class::•().{self::Class::method}().{self::Class::method}();
-  self::throws(() → self::Class* => (let final self::Class* #t74 = c in #t74.{core::Object::==}(null) ?{self::Class*} null : #t74.{self::Class::method}()).{self::Class::method}().{self::Class::field});
-  self::throws(() → self::Class* => (let final self::Class* #t75 = c in #t75.{core::Object::==}(null) ?{self::Class*} null : #t75.{self::Class::method}()).{self::Class::method}().{self::Class::field} = new self::Class::•());
-  self::throws(() → self::Class* => (let final self::Class* #t76 = c in #t76.{core::Object::==}(null) ?{self::Class*} null : #t76.{self::Class::method}()).{self::Class::method}().{self::Class::method}());
-  let final self::Class* #t77 = let final self::Class* #t78 = c in #t78.{core::Object::==}(null) ?{self::Class*} null : #t78.{self::Class::method}() in #t77.{core::Object::==}(null) ?{self::Class*} null : #t77.{self::Class::method}();
+  let final self::Class* #t1 = c in #t1.{self::Class::==}(null) ?{self::Class*} null : #t1.{self::Class::field};
+  let final self::Class* #t2 = c in #t2.{self::Class::==}(null) ?{self::Class*} null : #t2.{self::Class::field} = new self::Class::•();
+  c = let final self::Class* #t3 = c in #t3.{self::Class::==}(null) ?{self::Class*} null : #t3.{self::Class::field} = new self::Class::•();
+  let final self::Class* #t4 = c in #t4.{self::Class::==}(null) ?{self::Class*} null : #t4.{self::Class::method}();
+  self::throws(() → self::Class* => (let final self::Class* #t5 = c in #t5.{self::Class::==}(null) ?{self::Class*} null : #t5.{self::Class::field}).{self::Class::field});
+  let final self::Class* #t6 = let final self::Class* #t7 = c in #t7.{self::Class::==}(null) ?{self::Class*} null : #t7.{self::Class::field} in #t6.{self::Class::==}(null) ?{self::Class*} null : #t6.{self::Class::field};
+  self::throws(() → self::Class* => let final self::Class* #t8 = (let final self::Class* #t9 = c in #t9.{self::Class::==}(null) ?{self::Class*} null : #t9.{self::Class::field}).{self::Class::field} in #t8.{self::Class::==}(null) ?{self::Class*} null : #t8.{self::Class::field});
+  self::throws(() → self::Class* => (let final self::Class* #t10 = c in #t10.{self::Class::==}(null) ?{self::Class*} null : #t10.{self::Class::field}).{self::Class::field} = new self::Class::•());
+  let final self::Class* #t11 = let final self::Class* #t12 = c in #t12.{self::Class::==}(null) ?{self::Class*} null : #t12.{self::Class::field} in #t11.{self::Class::==}(null) ?{self::Class*} null : #t11.{self::Class::field} = new self::Class::•();
+  self::throws(() → self::Class* => let final self::Class* #t13 = (let final self::Class* #t14 = c in #t14.{self::Class::==}(null) ?{self::Class*} null : #t14.{self::Class::field}).{self::Class::field} in #t13.{self::Class::==}(null) ?{self::Class*} null : #t13.{self::Class::field} = new self::Class::•());
+  self::throws(() → self::Class* => (let final self::Class* #t15 = c in #t15.{self::Class::==}(null) ?{self::Class*} null : #t15.{self::Class::field}).{self::Class::field});
+  self::throws(() → self::Class* => (let final self::Class* #t16 = c in #t16.{self::Class::==}(null) ?{self::Class*} null : #t16.{self::Class::field} = new self::Class::•()).{self::Class::field});
+  self::throws(() → self::Class* => (let final self::Class* #t17 = c in #t17.{self::Class::==}(null) ?{self::Class*} null : #t17.{self::Class::method}()).{self::Class::field});
+  self::throws(() → self::Class* => c = (let final self::Class* #t18 = c in #t18.{self::Class::==}(null) ?{self::Class*} null : #t18.{self::Class::field}).{self::Class::field} = new self::Class::•());
+  c = let final self::Class* #t19 = let final self::Class* #t20 = c in #t20.{self::Class::==}(null) ?{self::Class*} null : #t20.{self::Class::field} in #t19.{self::Class::==}(null) ?{self::Class*} null : #t19.{self::Class::field} = new self::Class::•();
+  self::throws(() → self::Class* => c = let final self::Class* #t21 = (let final self::Class* #t22 = c in #t22.{self::Class::==}(null) ?{self::Class*} null : #t22.{self::Class::field}).{self::Class::field} in #t21.{self::Class::==}(null) ?{self::Class*} null : #t21.{self::Class::field} = new self::Class::•());
+  self::throws(() → self::Class* => (let final self::Class* #t23 = c in #t23.{self::Class::==}(null) ?{self::Class*} null : #t23.{self::Class::field}).{self::Class::method}());
+  let final self::Class* #t24 = c in #t24.{self::Class::==}(null) ?{self::Class*} null : #t24.{self::Class::field} = new self::Class::•().{self::Class::field};
+  c = let final self::Class* #t25 = c in #t25.{self::Class::==}(null) ?{self::Class*} null : #t25.{self::Class::field} = new self::Class::•().{self::Class::field};
+  let final self::Class* #t26 = c in #t26.{self::Class::==}(null) ?{self::Class*} null : #t26.{self::Class::field} = new self::Class::•().{self::Class::field} = new self::Class::•();
+  c = let final self::Class* #t27 = c in #t27.{self::Class::==}(null) ?{self::Class*} null : #t27.{self::Class::field} = new self::Class::•().{self::Class::field} = new self::Class::•();
+  let final self::Class* #t28 = c in #t28.{self::Class::==}(null) ?{self::Class*} null : #t28.{self::Class::field} = new self::Class::•().{self::Class::method}();
+  c = let final self::Class* #t29 = c in #t29.{self::Class::==}(null) ?{self::Class*} null : #t29.{self::Class::field} = new self::Class::•().{self::Class::method}();
+  self::throws(() → self::Class* => (let final self::Class* #t30 = c in #t30.{self::Class::==}(null) ?{self::Class*} null : #t30.{self::Class::method}()).{self::Class::field});
+  self::throws(() → self::Class* => (let final self::Class* #t31 = c in #t31.{self::Class::==}(null) ?{self::Class*} null : #t31.{self::Class::method}()).{self::Class::field} = new self::Class::•());
+  self::throws(() → self::Class* => (let final self::Class* #t32 = c in #t32.{self::Class::==}(null) ?{self::Class*} null : #t32.{self::Class::method}()).{self::Class::method}());
+  self::throws(() → self::Class* => (let final self::Class* #t33 = c in #t33.{self::Class::==}(null) ?{self::Class*} null : #t33.{self::Class::field}).{self::Class::field}.{self::Class::field});
+  self::throws(() → self::Class* => (let final self::Class* #t34 = c in #t34.{self::Class::==}(null) ?{self::Class*} null : #t34.{self::Class::field}).{self::Class::field}.{self::Class::field} = new self::Class::•());
+  self::throws(() → self::Class* => c = (let final self::Class* #t35 = c in #t35.{self::Class::==}(null) ?{self::Class*} null : #t35.{self::Class::field}).{self::Class::field}.{self::Class::field} = new self::Class::•());
+  self::throws(() → self::Class* => (let final self::Class* #t36 = c in #t36.{self::Class::==}(null) ?{self::Class*} null : #t36.{self::Class::field}).{self::Class::field}.{self::Class::method}());
+  let final self::Class* #t37 = c in #t37.{self::Class::==}(null) ?{self::Class*} null : #t37.{self::Class::field} = new self::Class::•().{self::Class::field}.{self::Class::field};
+  c = let final self::Class* #t38 = c in #t38.{self::Class::==}(null) ?{self::Class*} null : #t38.{self::Class::field} = new self::Class::•().{self::Class::field}.{self::Class::field};
+  let final self::Class* #t39 = c in #t39.{self::Class::==}(null) ?{self::Class*} null : #t39.{self::Class::field} = new self::Class::•().{self::Class::field}.{self::Class::field} = new self::Class::•();
+  c = let final self::Class* #t40 = c in #t40.{self::Class::==}(null) ?{self::Class*} null : #t40.{self::Class::field} = new self::Class::•().{self::Class::field}.{self::Class::field} = new self::Class::•();
+  let final self::Class* #t41 = c in #t41.{self::Class::==}(null) ?{self::Class*} null : #t41.{self::Class::field} = new self::Class::•().{self::Class::field}.{self::Class::method}();
+  c = let final self::Class* #t42 = c in #t42.{self::Class::==}(null) ?{self::Class*} null : #t42.{self::Class::field} = new self::Class::•().{self::Class::field}.{self::Class::method}();
+  self::throws(() → self::Class* => (let final self::Class* #t43 = c in #t43.{self::Class::==}(null) ?{self::Class*} null : #t43.{self::Class::method}()).{self::Class::field}.{self::Class::field});
+  self::throws(() → self::Class* => (let final self::Class* #t44 = c in #t44.{self::Class::==}(null) ?{self::Class*} null : #t44.{self::Class::method}()).{self::Class::field}.{self::Class::field} = new self::Class::•());
+  self::throws(() → self::Class* => (let final self::Class* #t45 = c in #t45.{self::Class::==}(null) ?{self::Class*} null : #t45.{self::Class::method}()).{self::Class::field}.{self::Class::method}());
+  self::throws(() → self::Class* => (let final self::Class* #t46 = c in #t46.{self::Class::==}(null) ?{self::Class*} null : #t46.{self::Class::field}).{self::Class::field} = new self::Class::•().{self::Class::field});
+  self::throws(() → self::Class* => c = (let final self::Class* #t47 = c in #t47.{self::Class::==}(null) ?{self::Class*} null : #t47.{self::Class::field}).{self::Class::field} = new self::Class::•().{self::Class::field});
+  self::throws(() → self::Class* => (let final self::Class* #t48 = c in #t48.{self::Class::==}(null) ?{self::Class*} null : #t48.{self::Class::field}).{self::Class::field} = new self::Class::•().{self::Class::field} = new self::Class::•());
+  self::throws(() → self::Class* => c = (let final self::Class* #t49 = c in #t49.{self::Class::==}(null) ?{self::Class*} null : #t49.{self::Class::field}).{self::Class::field} = new self::Class::•().{self::Class::field} = new self::Class::•());
+  self::throws(() → self::Class* => (let final self::Class* #t50 = c in #t50.{self::Class::==}(null) ?{self::Class*} null : #t50.{self::Class::field}).{self::Class::field} = new self::Class::•().{self::Class::method}());
+  self::throws(() → self::Class* => c = (let final self::Class* #t51 = c in #t51.{self::Class::==}(null) ?{self::Class*} null : #t51.{self::Class::field}).{self::Class::field} = new self::Class::•().{self::Class::method}());
+  let final self::Class* #t52 = c in #t52.{self::Class::==}(null) ?{self::Class*} null : #t52.{self::Class::field} = new self::Class::•().{self::Class::field} = new self::Class::•().{self::Class::field};
+  c = let final self::Class* #t53 = c in #t53.{self::Class::==}(null) ?{self::Class*} null : #t53.{self::Class::field} = new self::Class::•().{self::Class::field} = new self::Class::•().{self::Class::field};
+  let final self::Class* #t54 = c in #t54.{self::Class::==}(null) ?{self::Class*} null : #t54.{self::Class::field} = new self::Class::•().{self::Class::field} = new self::Class::•().{self::Class::field} = new self::Class::•();
+  c = let final self::Class* #t55 = c in #t55.{self::Class::==}(null) ?{self::Class*} null : #t55.{self::Class::field} = new self::Class::•().{self::Class::field} = new self::Class::•().{self::Class::field} = new self::Class::•();
+  let final self::Class* #t56 = c in #t56.{self::Class::==}(null) ?{self::Class*} null : #t56.{self::Class::field} = new self::Class::•().{self::Class::field} = new self::Class::•().{self::Class::method}();
+  c = let final self::Class* #t57 = c in #t57.{self::Class::==}(null) ?{self::Class*} null : #t57.{self::Class::field} = new self::Class::•().{self::Class::field} = new self::Class::•().{self::Class::method}();
+  self::throws(() → self::Class* => (let final self::Class* #t58 = c in #t58.{self::Class::==}(null) ?{self::Class*} null : #t58.{self::Class::method}()).{self::Class::field} = new self::Class::•().{self::Class::field});
+  self::throws(() → self::Class* => c = (let final self::Class* #t59 = c in #t59.{self::Class::==}(null) ?{self::Class*} null : #t59.{self::Class::method}()).{self::Class::field} = new self::Class::•().{self::Class::field});
+  self::throws(() → self::Class* => (let final self::Class* #t60 = c in #t60.{self::Class::==}(null) ?{self::Class*} null : #t60.{self::Class::method}()).{self::Class::field} = new self::Class::•().{self::Class::field} = new self::Class::•());
+  self::throws(() → self::Class* => c = (let final self::Class* #t61 = c in #t61.{self::Class::==}(null) ?{self::Class*} null : #t61.{self::Class::method}()).{self::Class::field} = new self::Class::•().{self::Class::field} = new self::Class::•());
+  self::throws(() → self::Class* => (let final self::Class* #t62 = c in #t62.{self::Class::==}(null) ?{self::Class*} null : #t62.{self::Class::method}()).{self::Class::field} = new self::Class::•().{self::Class::method}());
+  self::throws(() → self::Class* => c = (let final self::Class* #t63 = c in #t63.{self::Class::==}(null) ?{self::Class*} null : #t63.{self::Class::method}()).{self::Class::field} = new self::Class::•().{self::Class::method}());
+  self::throws(() → self::Class* => (let final self::Class* #t64 = c in #t64.{self::Class::==}(null) ?{self::Class*} null : #t64.{self::Class::field}).{self::Class::method}().{self::Class::field});
+  self::throws(() → self::Class* => (let final self::Class* #t65 = c in #t65.{self::Class::==}(null) ?{self::Class*} null : #t65.{self::Class::field}).{self::Class::method}().{self::Class::field} = new self::Class::•());
+  self::throws(() → self::Class* => c = (let final self::Class* #t66 = c in #t66.{self::Class::==}(null) ?{self::Class*} null : #t66.{self::Class::field}).{self::Class::method}().{self::Class::field} = new self::Class::•());
+  self::throws(() → self::Class* => (let final self::Class* #t67 = c in #t67.{self::Class::==}(null) ?{self::Class*} null : #t67.{self::Class::field}).{self::Class::method}().{self::Class::method}());
+  let final self::Class* #t68 = c in #t68.{self::Class::==}(null) ?{self::Class*} null : #t68.{self::Class::field} = new self::Class::•().{self::Class::method}().{self::Class::field};
+  c = let final self::Class* #t69 = c in #t69.{self::Class::==}(null) ?{self::Class*} null : #t69.{self::Class::field} = new self::Class::•().{self::Class::method}().{self::Class::field};
+  let final self::Class* #t70 = c in #t70.{self::Class::==}(null) ?{self::Class*} null : #t70.{self::Class::field} = new self::Class::•().{self::Class::method}().{self::Class::field} = new self::Class::•();
+  c = let final self::Class* #t71 = c in #t71.{self::Class::==}(null) ?{self::Class*} null : #t71.{self::Class::field} = new self::Class::•().{self::Class::method}().{self::Class::field} = new self::Class::•();
+  let final self::Class* #t72 = c in #t72.{self::Class::==}(null) ?{self::Class*} null : #t72.{self::Class::field} = new self::Class::•().{self::Class::method}().{self::Class::method}();
+  c = let final self::Class* #t73 = c in #t73.{self::Class::==}(null) ?{self::Class*} null : #t73.{self::Class::field} = new self::Class::•().{self::Class::method}().{self::Class::method}();
+  self::throws(() → self::Class* => (let final self::Class* #t74 = c in #t74.{self::Class::==}(null) ?{self::Class*} null : #t74.{self::Class::method}()).{self::Class::method}().{self::Class::field});
+  self::throws(() → self::Class* => (let final self::Class* #t75 = c in #t75.{self::Class::==}(null) ?{self::Class*} null : #t75.{self::Class::method}()).{self::Class::method}().{self::Class::field} = new self::Class::•());
+  self::throws(() → self::Class* => (let final self::Class* #t76 = c in #t76.{self::Class::==}(null) ?{self::Class*} null : #t76.{self::Class::method}()).{self::Class::method}().{self::Class::method}());
+  let final self::Class* #t77 = let final self::Class* #t78 = c in #t78.{self::Class::==}(null) ?{self::Class*} null : #t78.{self::Class::method}() in #t77.{self::Class::==}(null) ?{self::Class*} null : #t77.{self::Class::method}();
 }
 static method indexAccess(self::Class* c) → void {
-  self::throws(() → self::Class* => (let final self::Class* #t79 = c in #t79.{core::Object::==}(null) ?{self::Class*} null : #t79.{self::Class::field}).{self::Class::[]}(c));
-  self::throws(() → self::Class* => let final self::Class* #t80 = let final self::Class* #t81 = c in #t81.{core::Object::==}(null) ?{self::Class*} null : #t81.{self::Class::field} in let final self::Class* #t82 = c in let final self::Class* #t83 = new self::Class::•() in let final void #t84 = #t80.{self::Class::[]=}(#t82, #t83) in #t83);
-  self::throws(() → self::Class* => c = let final self::Class* #t85 = let final self::Class* #t86 = c in #t86.{core::Object::==}(null) ?{self::Class*} null : #t86.{self::Class::field} in let final self::Class* #t87 = c in let final self::Class* #t88 = new self::Class::•() in let final void #t89 = #t85.{self::Class::[]=}(#t87, #t88) in #t88);
-  self::throws(() → self::Class* => (let final self::Class* #t90 = c in #t90.{core::Object::==}(null) ?{self::Class*} null : #t90.{self::Class::field}).{self::Class::[]}(c).{self::Class::method}());
-  self::throws(() → self::Class* => let final self::Class* #t91 = let final self::Class* #t92 = c in #t92.{core::Object::==}(null) ?{self::Class*} null : #t92.{self::Class::field} in let final self::Class* #t93 = c in let final self::Class* #t94 = #t91.{self::Class::[]}(#t93).{self::Class::+}(0) in let final void #t95 = #t91.{self::Class::[]=}(#t93, #t94) in #t94);
-  self::throws(() → self::Class* => c = let final self::Class* #t96 = let final self::Class* #t97 = c in #t97.{core::Object::==}(null) ?{self::Class*} null : #t97.{self::Class::field} in let final self::Class* #t98 = c in let final self::Class* #t99 = #t96.{self::Class::[]}(#t98).{self::Class::+}(0) in let final void #t100 = #t96.{self::Class::[]=}(#t98, #t99) in #t99);
-  self::throws(() → self::Class* => let final self::Class* #t101 = let final self::Class* #t102 = c in #t102.{core::Object::==}(null) ?{self::Class*} null : #t102.{self::Class::field} in let final self::Class* #t103 = c in let final self::Class* #t104 = #t101.{self::Class::[]}(#t103) in let final void #t105 = #t101.{self::Class::[]=}(#t103, #t104.{self::Class::+}(1)) in #t104);
-  self::throws(() → self::Class* => c = let final self::Class* #t106 = let final self::Class* #t107 = c in #t107.{core::Object::==}(null) ?{self::Class*} null : #t107.{self::Class::field} in let final self::Class* #t108 = c in let final self::Class* #t109 = #t106.{self::Class::[]}(#t108) in let final void #t110 = #t106.{self::Class::[]=}(#t108, #t109.{self::Class::+}(1)) in #t109);
-  self::throws(() → self::Class* => let final self::Class* #t111 = let final self::Class* #t112 = c in #t112.{core::Object::==}(null) ?{self::Class*} null : #t112.{self::Class::field} in let final self::Class* #t113 = c in let final self::Class* #t114 = #t111.{self::Class::[]}(#t113).{self::Class::+}(1) in let final void #t115 = #t111.{self::Class::[]=}(#t113, #t114) in #t114);
-  self::throws(() → self::Class* => c = let final self::Class* #t116 = let final self::Class* #t117 = c in #t117.{core::Object::==}(null) ?{self::Class*} null : #t117.{self::Class::field} in let final self::Class* #t118 = c in let final self::Class* #t119 = #t116.{self::Class::[]}(#t118).{self::Class::+}(1) in let final void #t120 = #t116.{self::Class::[]=}(#t118, #t119) in #t119);
-  self::throws(() → self::Class* => (let final self::Class* #t121 = c in #t121.{core::Object::==}(null) ?{self::Class*} null : #t121.{self::Class::field}).{self::Class::[]}(c).{self::Class::[]}(c));
-  self::throws(() → self::Class* => let final self::Class* #t122 = (let final self::Class* #t123 = c in #t123.{core::Object::==}(null) ?{self::Class*} null : #t123.{self::Class::field}).{self::Class::[]}(c) in let final self::Class* #t124 = c in let final self::Class* #t125 = new self::Class::•() in let final void #t126 = #t122.{self::Class::[]=}(#t124, #t125) in #t125);
-  self::throws(() → self::Class* => c = let final self::Class* #t127 = (let final self::Class* #t128 = c in #t128.{core::Object::==}(null) ?{self::Class*} null : #t128.{self::Class::field}).{self::Class::[]}(c) in let final self::Class* #t129 = c in let final self::Class* #t130 = new self::Class::•() in let final void #t131 = #t127.{self::Class::[]=}(#t129, #t130) in #t130);
-  self::throws(() → self::Class* => (let final self::Class* #t132 = c in #t132.{core::Object::==}(null) ?{self::Class*} null : #t132.{self::Class::field}).{self::Class::[]}(c).{self::Class::[]}(c).{self::Class::method}());
-  self::throws(() → self::Class* => let final self::Class* #t133 = (let final self::Class* #t134 = c in #t134.{core::Object::==}(null) ?{self::Class*} null : #t134.{self::Class::field}).{self::Class::[]}(c) in let final self::Class* #t135 = c in let final self::Class* #t136 = #t133.{self::Class::[]}(#t135).{self::Class::+}(0) in let final void #t137 = #t133.{self::Class::[]=}(#t135, #t136) in #t136);
-  self::throws(() → self::Class* => c = let final self::Class* #t138 = (let final self::Class* #t139 = c in #t139.{core::Object::==}(null) ?{self::Class*} null : #t139.{self::Class::field}).{self::Class::[]}(c) in let final self::Class* #t140 = c in let final self::Class* #t141 = #t138.{self::Class::[]}(#t140).{self::Class::+}(0) in let final void #t142 = #t138.{self::Class::[]=}(#t140, #t141) in #t141);
-  self::throws(() → self::Class* => let final self::Class* #t143 = (let final self::Class* #t144 = c in #t144.{core::Object::==}(null) ?{self::Class*} null : #t144.{self::Class::field}).{self::Class::[]}(c) in let final self::Class* #t145 = c in let final self::Class* #t146 = #t143.{self::Class::[]}(#t145) in let final void #t147 = #t143.{self::Class::[]=}(#t145, #t146.{self::Class::+}(1)) in #t146);
-  self::throws(() → self::Class* => c = let final self::Class* #t148 = (let final self::Class* #t149 = c in #t149.{core::Object::==}(null) ?{self::Class*} null : #t149.{self::Class::field}).{self::Class::[]}(c) in let final self::Class* #t150 = c in let final self::Class* #t151 = #t148.{self::Class::[]}(#t150) in let final void #t152 = #t148.{self::Class::[]=}(#t150, #t151.{self::Class::+}(1)) in #t151);
-  self::throws(() → self::Class* => let final self::Class* #t153 = (let final self::Class* #t154 = c in #t154.{core::Object::==}(null) ?{self::Class*} null : #t154.{self::Class::field}).{self::Class::[]}(c) in let final self::Class* #t155 = c in let final self::Class* #t156 = #t153.{self::Class::[]}(#t155).{self::Class::+}(1) in let final void #t157 = #t153.{self::Class::[]=}(#t155, #t156) in #t156);
-  self::throws(() → self::Class* => c = let final self::Class* #t158 = (let final self::Class* #t159 = c in #t159.{core::Object::==}(null) ?{self::Class*} null : #t159.{self::Class::field}).{self::Class::[]}(c) in let final self::Class* #t160 = c in let final self::Class* #t161 = #t158.{self::Class::[]}(#t160).{self::Class::+}(1) in let final void #t162 = #t158.{self::Class::[]=}(#t160, #t161) in #t161);
+  self::throws(() → self::Class* => (let final self::Class* #t79 = c in #t79.{self::Class::==}(null) ?{self::Class*} null : #t79.{self::Class::field}).{self::Class::[]}(c));
+  self::throws(() → self::Class* => let final self::Class* #t80 = let final self::Class* #t81 = c in #t81.{self::Class::==}(null) ?{self::Class*} null : #t81.{self::Class::field} in let final self::Class* #t82 = c in let final self::Class* #t83 = new self::Class::•() in let final void #t84 = #t80.{self::Class::[]=}(#t82, #t83) in #t83);
+  self::throws(() → self::Class* => c = let final self::Class* #t85 = let final self::Class* #t86 = c in #t86.{self::Class::==}(null) ?{self::Class*} null : #t86.{self::Class::field} in let final self::Class* #t87 = c in let final self::Class* #t88 = new self::Class::•() in let final void #t89 = #t85.{self::Class::[]=}(#t87, #t88) in #t88);
+  self::throws(() → self::Class* => (let final self::Class* #t90 = c in #t90.{self::Class::==}(null) ?{self::Class*} null : #t90.{self::Class::field}).{self::Class::[]}(c).{self::Class::method}());
+  self::throws(() → self::Class* => let final self::Class* #t91 = let final self::Class* #t92 = c in #t92.{self::Class::==}(null) ?{self::Class*} null : #t92.{self::Class::field} in let final self::Class* #t93 = c in let final self::Class* #t94 = #t91.{self::Class::[]}(#t93).{self::Class::+}(0) in let final void #t95 = #t91.{self::Class::[]=}(#t93, #t94) in #t94);
+  self::throws(() → self::Class* => c = let final self::Class* #t96 = let final self::Class* #t97 = c in #t97.{self::Class::==}(null) ?{self::Class*} null : #t97.{self::Class::field} in let final self::Class* #t98 = c in let final self::Class* #t99 = #t96.{self::Class::[]}(#t98).{self::Class::+}(0) in let final void #t100 = #t96.{self::Class::[]=}(#t98, #t99) in #t99);
+  self::throws(() → self::Class* => let final self::Class* #t101 = let final self::Class* #t102 = c in #t102.{self::Class::==}(null) ?{self::Class*} null : #t102.{self::Class::field} in let final self::Class* #t103 = c in let final self::Class* #t104 = #t101.{self::Class::[]}(#t103) in let final void #t105 = #t101.{self::Class::[]=}(#t103, #t104.{self::Class::+}(1)) in #t104);
+  self::throws(() → self::Class* => c = let final self::Class* #t106 = let final self::Class* #t107 = c in #t107.{self::Class::==}(null) ?{self::Class*} null : #t107.{self::Class::field} in let final self::Class* #t108 = c in let final self::Class* #t109 = #t106.{self::Class::[]}(#t108) in let final void #t110 = #t106.{self::Class::[]=}(#t108, #t109.{self::Class::+}(1)) in #t109);
+  self::throws(() → self::Class* => let final self::Class* #t111 = let final self::Class* #t112 = c in #t112.{self::Class::==}(null) ?{self::Class*} null : #t112.{self::Class::field} in let final self::Class* #t113 = c in let final self::Class* #t114 = #t111.{self::Class::[]}(#t113).{self::Class::+}(1) in let final void #t115 = #t111.{self::Class::[]=}(#t113, #t114) in #t114);
+  self::throws(() → self::Class* => c = let final self::Class* #t116 = let final self::Class* #t117 = c in #t117.{self::Class::==}(null) ?{self::Class*} null : #t117.{self::Class::field} in let final self::Class* #t118 = c in let final self::Class* #t119 = #t116.{self::Class::[]}(#t118).{self::Class::+}(1) in let final void #t120 = #t116.{self::Class::[]=}(#t118, #t119) in #t119);
+  self::throws(() → self::Class* => (let final self::Class* #t121 = c in #t121.{self::Class::==}(null) ?{self::Class*} null : #t121.{self::Class::field}).{self::Class::[]}(c).{self::Class::[]}(c));
+  self::throws(() → self::Class* => let final self::Class* #t122 = (let final self::Class* #t123 = c in #t123.{self::Class::==}(null) ?{self::Class*} null : #t123.{self::Class::field}).{self::Class::[]}(c) in let final self::Class* #t124 = c in let final self::Class* #t125 = new self::Class::•() in let final void #t126 = #t122.{self::Class::[]=}(#t124, #t125) in #t125);
+  self::throws(() → self::Class* => c = let final self::Class* #t127 = (let final self::Class* #t128 = c in #t128.{self::Class::==}(null) ?{self::Class*} null : #t128.{self::Class::field}).{self::Class::[]}(c) in let final self::Class* #t129 = c in let final self::Class* #t130 = new self::Class::•() in let final void #t131 = #t127.{self::Class::[]=}(#t129, #t130) in #t130);
+  self::throws(() → self::Class* => (let final self::Class* #t132 = c in #t132.{self::Class::==}(null) ?{self::Class*} null : #t132.{self::Class::field}).{self::Class::[]}(c).{self::Class::[]}(c).{self::Class::method}());
+  self::throws(() → self::Class* => let final self::Class* #t133 = (let final self::Class* #t134 = c in #t134.{self::Class::==}(null) ?{self::Class*} null : #t134.{self::Class::field}).{self::Class::[]}(c) in let final self::Class* #t135 = c in let final self::Class* #t136 = #t133.{self::Class::[]}(#t135).{self::Class::+}(0) in let final void #t137 = #t133.{self::Class::[]=}(#t135, #t136) in #t136);
+  self::throws(() → self::Class* => c = let final self::Class* #t138 = (let final self::Class* #t139 = c in #t139.{self::Class::==}(null) ?{self::Class*} null : #t139.{self::Class::field}).{self::Class::[]}(c) in let final self::Class* #t140 = c in let final self::Class* #t141 = #t138.{self::Class::[]}(#t140).{self::Class::+}(0) in let final void #t142 = #t138.{self::Class::[]=}(#t140, #t141) in #t141);
+  self::throws(() → self::Class* => let final self::Class* #t143 = (let final self::Class* #t144 = c in #t144.{self::Class::==}(null) ?{self::Class*} null : #t144.{self::Class::field}).{self::Class::[]}(c) in let final self::Class* #t145 = c in let final self::Class* #t146 = #t143.{self::Class::[]}(#t145) in let final void #t147 = #t143.{self::Class::[]=}(#t145, #t146.{self::Class::+}(1)) in #t146);
+  self::throws(() → self::Class* => c = let final self::Class* #t148 = (let final self::Class* #t149 = c in #t149.{self::Class::==}(null) ?{self::Class*} null : #t149.{self::Class::field}).{self::Class::[]}(c) in let final self::Class* #t150 = c in let final self::Class* #t151 = #t148.{self::Class::[]}(#t150) in let final void #t152 = #t148.{self::Class::[]=}(#t150, #t151.{self::Class::+}(1)) in #t151);
+  self::throws(() → self::Class* => let final self::Class* #t153 = (let final self::Class* #t154 = c in #t154.{self::Class::==}(null) ?{self::Class*} null : #t154.{self::Class::field}).{self::Class::[]}(c) in let final self::Class* #t155 = c in let final self::Class* #t156 = #t153.{self::Class::[]}(#t155).{self::Class::+}(1) in let final void #t157 = #t153.{self::Class::[]=}(#t155, #t156) in #t156);
+  self::throws(() → self::Class* => c = let final self::Class* #t158 = (let final self::Class* #t159 = c in #t159.{self::Class::==}(null) ?{self::Class*} null : #t159.{self::Class::field}).{self::Class::[]}(c) in let final self::Class* #t160 = c in let final self::Class* #t161 = #t158.{self::Class::[]}(#t160).{self::Class::+}(1) in let final void #t162 = #t158.{self::Class::[]=}(#t160, #t161) in #t161);
 }
 static method operatorAccess(self::Class* c) → void {
-  self::throws(() → self::Class* => (let final self::Class* #t163 = c in #t163.{core::Object::==}(null) ?{self::Class*} null : #t163.{self::Class::field}).{self::Class::+}(0));
-  self::throws(() → self::Class* => (let final self::Class* #t164 = c in #t164.{core::Object::==}(null) ?{self::Class*} null : #t164.{self::Class::field}).{self::Class::unary-}());
-  let final self::Class* #t165 = c in #t165.{core::Object::==}(null) ?{self::Class*} null : #t165.{self::Class::field} = #t165.{self::Class::field}.{self::Class::+}(0);
-  c = let final self::Class* #t166 = c in #t166.{core::Object::==}(null) ?{self::Class*} null : let final self::Class* #t167 = #t166.{self::Class::field}.{self::Class::+}(0) in let final void #t168 = #t166.{self::Class::field} = #t167 in #t167;
-  self::throws(() → self::Class* => let final self::Class* #t169 = let final self::Class* #t170 = c in #t170.{core::Object::==}(null) ?{self::Class*} null : #t170.{self::Class::field} in #t169.{self::Class::field} = #t169.{self::Class::field}.{self::Class::+}(0));
-  self::throws(() → self::Class* => c = let final self::Class* #t171 = let final self::Class* #t172 = c in #t172.{core::Object::==}(null) ?{self::Class*} null : #t172.{self::Class::field} in #t171.{self::Class::field} = #t171.{self::Class::field}.{self::Class::+}(0));
-  let final self::Class* #t173 = c in #t173.{core::Object::==}(null) ?{self::Class*} null : #t173.{self::Class::field} = #t173.{self::Class::field}.{self::Class::+}(1);
-  c = let final self::Class* #t174 = c in #t174.{core::Object::==}(null) ?{self::Class*} null : let final self::Class* #t175 = #t174.{self::Class::field} in let final void #t176 = #t174.{self::Class::field} = #t175.{self::Class::+}(1) in #t175;
-  let final self::Class* #t177 = c in #t177.{core::Object::==}(null) ?{self::Class*} null : let final self::Class* #t178 = #t177.{self::Class::field}.{self::Class::+}(1) in let final void #t179 = #t177.{self::Class::field} = #t178 in #t178;
-  c = let final self::Class* #t180 = c in #t180.{core::Object::==}(null) ?{self::Class*} null : let final self::Class* #t181 = #t180.{self::Class::field}.{self::Class::+}(1) in let final void #t182 = #t180.{self::Class::field} = #t181 in #t181;
+  self::throws(() → self::Class* => (let final self::Class* #t163 = c in #t163.{self::Class::==}(null) ?{self::Class*} null : #t163.{self::Class::field}).{self::Class::+}(0));
+  self::throws(() → self::Class* => (let final self::Class* #t164 = c in #t164.{self::Class::==}(null) ?{self::Class*} null : #t164.{self::Class::field}).{self::Class::unary-}());
+  let final self::Class* #t165 = c in #t165.{self::Class::==}(null) ?{self::Class*} null : #t165.{self::Class::field} = #t165.{self::Class::field}.{self::Class::+}(0);
+  c = let final self::Class* #t166 = c in #t166.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t167 = #t166.{self::Class::field}.{self::Class::+}(0) in let final void #t168 = #t166.{self::Class::field} = #t167 in #t167;
+  self::throws(() → self::Class* => let final self::Class* #t169 = let final self::Class* #t170 = c in #t170.{self::Class::==}(null) ?{self::Class*} null : #t170.{self::Class::field} in #t169.{self::Class::field} = #t169.{self::Class::field}.{self::Class::+}(0));
+  self::throws(() → self::Class* => c = let final self::Class* #t171 = let final self::Class* #t172 = c in #t172.{self::Class::==}(null) ?{self::Class*} null : #t172.{self::Class::field} in #t171.{self::Class::field} = #t171.{self::Class::field}.{self::Class::+}(0));
+  let final self::Class* #t173 = c in #t173.{self::Class::==}(null) ?{self::Class*} null : #t173.{self::Class::field} = #t173.{self::Class::field}.{self::Class::+}(1);
+  c = let final self::Class* #t174 = c in #t174.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t175 = #t174.{self::Class::field} in let final void #t176 = #t174.{self::Class::field} = #t175.{self::Class::+}(1) in #t175;
+  let final self::Class* #t177 = c in #t177.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t178 = #t177.{self::Class::field}.{self::Class::+}(1) in let final void #t179 = #t177.{self::Class::field} = #t178 in #t178;
+  c = let final self::Class* #t180 = c in #t180.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t181 = #t180.{self::Class::field}.{self::Class::+}(1) in let final void #t182 = #t180.{self::Class::field} = #t181 in #t181;
 }
 static method ifNull(self::Class* c) → void {
-  let final self::Class* #t183 = c in #t183.{core::Object::==}(null) ?{self::Class*} null : #t183.{self::Class::field}.{core::Object::==}(null) ?{self::Class*} #t183.{self::Class::field} = c : null;
-  c = let final self::Class* #t184 = c in #t184.{core::Object::==}(null) ?{self::Class*} null : let final self::Class* #t185 = #t184.{self::Class::field} in #t185.{core::Object::==}(null) ?{self::Class*} #t184.{self::Class::field} = c : #t185;
-  self::throws(() → self::Class* => let final self::Class* #t186 = let final self::Class* #t187 = c in #t187.{core::Object::==}(null) ?{self::Class*} null : #t187.{self::Class::field} in let final self::Class* #t188 = #t186.{self::Class::field} in #t188.{core::Object::==}(null) ?{self::Class*} #t186.{self::Class::field} = c : #t188);
-  self::throws(() → self::Class* => c = let final self::Class* #t189 = let final self::Class* #t190 = c in #t190.{core::Object::==}(null) ?{self::Class*} null : #t190.{self::Class::field} in let final self::Class* #t191 = #t189.{self::Class::field} in #t191.{core::Object::==}(null) ?{self::Class*} #t189.{self::Class::field} = c : #t191);
-  self::throws(() → self::Class* => let final self::Class* #t192 = let final self::Class* #t193 = c in #t193.{core::Object::==}(null) ?{self::Class*} null : #t193.{self::Class::field} in let final self::Class* #t194 = c in let final self::Class* #t195 = #t192.{self::Class::[]}(#t194) in #t195.{core::Object::==}(null) ?{self::Class*} let final self::Class* #t196 = c in let final void #t197 = #t192.{self::Class::[]=}(#t194, #t196) in #t196 : #t195);
-  self::throws(() → self::Class* => c = let final self::Class* #t198 = let final self::Class* #t199 = c in #t199.{core::Object::==}(null) ?{self::Class*} null : #t199.{self::Class::field} in let final self::Class* #t200 = c in let final self::Class* #t201 = #t198.{self::Class::[]}(#t200) in #t201.{core::Object::==}(null) ?{self::Class*} let final self::Class* #t202 = c in let final void #t203 = #t198.{self::Class::[]=}(#t200, #t202) in #t202 : #t201);
+  let final self::Class* #t183 = c in #t183.{self::Class::==}(null) ?{self::Class*} null : #t183.{self::Class::field}.{self::Class::==}(null) ?{self::Class*} #t183.{self::Class::field} = c : null;
+  c = let final self::Class* #t184 = c in #t184.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t185 = #t184.{self::Class::field} in #t185.{self::Class::==}(null) ?{self::Class*} #t184.{self::Class::field} = c : #t185;
+  self::throws(() → self::Class* => let final self::Class* #t186 = let final self::Class* #t187 = c in #t187.{self::Class::==}(null) ?{self::Class*} null : #t187.{self::Class::field} in let final self::Class* #t188 = #t186.{self::Class::field} in #t188.{self::Class::==}(null) ?{self::Class*} #t186.{self::Class::field} = c : #t188);
+  self::throws(() → self::Class* => c = let final self::Class* #t189 = let final self::Class* #t190 = c in #t190.{self::Class::==}(null) ?{self::Class*} null : #t190.{self::Class::field} in let final self::Class* #t191 = #t189.{self::Class::field} in #t191.{self::Class::==}(null) ?{self::Class*} #t189.{self::Class::field} = c : #t191);
+  self::throws(() → self::Class* => let final self::Class* #t192 = let final self::Class* #t193 = c in #t193.{self::Class::==}(null) ?{self::Class*} null : #t193.{self::Class::field} in let final self::Class* #t194 = c in let final self::Class* #t195 = #t192.{self::Class::[]}(#t194) in #t195.{self::Class::==}(null) ?{self::Class*} let final self::Class* #t196 = c in let final void #t197 = #t192.{self::Class::[]=}(#t194, #t196) in #t196 : #t195);
+  self::throws(() → self::Class* => c = let final self::Class* #t198 = let final self::Class* #t199 = c in #t199.{self::Class::==}(null) ?{self::Class*} null : #t199.{self::Class::field} in let final self::Class* #t200 = c in let final self::Class* #t201 = #t198.{self::Class::[]}(#t200) in #t201.{self::Class::==}(null) ?{self::Class*} let final self::Class* #t202 = c in let final void #t203 = #t198.{self::Class::[]=}(#t200, #t202) in #t202 : #t201);
 }
 static method throws(() →* void f) → void {
   try {
diff --git a/pkg/front_end/testcases/nnbd/no_null_shorting.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/no_null_shorting.dart.strong.transformed.expect
index b0d09f9..36152d8 100644
--- a/pkg/front_end/testcases/nnbd/no_null_shorting.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/no_null_shorting.dart.strong.transformed.expect
@@ -18,6 +18,16 @@
     return this.{self::Class::field};
   operator unary-() → self::Class*
     return this.{self::Class::field};
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   self::propertyAccess(null);
@@ -26,119 +36,119 @@
   self::ifNull(null);
 }
 static method propertyAccess(self::Class* c) → void {
-  let final self::Class* #t1 = c in #t1.{core::Object::==}(null) ?{self::Class*} null : #t1.{self::Class::field};
-  let final self::Class* #t2 = c in #t2.{core::Object::==}(null) ?{self::Class*} null : #t2.{self::Class::field} = new self::Class::•();
-  c = let final self::Class* #t3 = c in #t3.{core::Object::==}(null) ?{self::Class*} null : #t3.{self::Class::field} = new self::Class::•();
-  let final self::Class* #t4 = c in #t4.{core::Object::==}(null) ?{self::Class*} null : #t4.{self::Class::method}();
-  self::throws(() → self::Class* => (let final self::Class* #t5 = c in #t5.{core::Object::==}(null) ?{self::Class*} null : #t5.{self::Class::field}).{self::Class::field});
-  let final self::Class* #t6 = let final self::Class* #t7 = c in #t7.{core::Object::==}(null) ?{self::Class*} null : #t7.{self::Class::field} in #t6.{core::Object::==}(null) ?{self::Class*} null : #t6.{self::Class::field};
-  self::throws(() → self::Class* => let final self::Class* #t8 = (let final self::Class* #t9 = c in #t9.{core::Object::==}(null) ?{self::Class*} null : #t9.{self::Class::field}).{self::Class::field} in #t8.{core::Object::==}(null) ?{self::Class*} null : #t8.{self::Class::field});
-  self::throws(() → self::Class* => (let final self::Class* #t10 = c in #t10.{core::Object::==}(null) ?{self::Class*} null : #t10.{self::Class::field}).{self::Class::field} = new self::Class::•());
-  let final self::Class* #t11 = let final self::Class* #t12 = c in #t12.{core::Object::==}(null) ?{self::Class*} null : #t12.{self::Class::field} in #t11.{core::Object::==}(null) ?{self::Class*} null : #t11.{self::Class::field} = new self::Class::•();
-  self::throws(() → self::Class* => let final self::Class* #t13 = (let final self::Class* #t14 = c in #t14.{core::Object::==}(null) ?{self::Class*} null : #t14.{self::Class::field}).{self::Class::field} in #t13.{core::Object::==}(null) ?{self::Class*} null : #t13.{self::Class::field} = new self::Class::•());
-  self::throws(() → self::Class* => (let final self::Class* #t15 = c in #t15.{core::Object::==}(null) ?{self::Class*} null : #t15.{self::Class::field}).{self::Class::field});
-  self::throws(() → self::Class* => (let final self::Class* #t16 = c in #t16.{core::Object::==}(null) ?{self::Class*} null : #t16.{self::Class::field} = new self::Class::•()).{self::Class::field});
-  self::throws(() → self::Class* => (let final self::Class* #t17 = c in #t17.{core::Object::==}(null) ?{self::Class*} null : #t17.{self::Class::method}()).{self::Class::field});
-  self::throws(() → self::Class* => c = (let final self::Class* #t18 = c in #t18.{core::Object::==}(null) ?{self::Class*} null : #t18.{self::Class::field}).{self::Class::field} = new self::Class::•());
-  c = let final self::Class* #t19 = let final self::Class* #t20 = c in #t20.{core::Object::==}(null) ?{self::Class*} null : #t20.{self::Class::field} in #t19.{core::Object::==}(null) ?{self::Class*} null : #t19.{self::Class::field} = new self::Class::•();
-  self::throws(() → self::Class* => c = let final self::Class* #t21 = (let final self::Class* #t22 = c in #t22.{core::Object::==}(null) ?{self::Class*} null : #t22.{self::Class::field}).{self::Class::field} in #t21.{core::Object::==}(null) ?{self::Class*} null : #t21.{self::Class::field} = new self::Class::•());
-  self::throws(() → self::Class* => (let final self::Class* #t23 = c in #t23.{core::Object::==}(null) ?{self::Class*} null : #t23.{self::Class::field}).{self::Class::method}());
-  let final self::Class* #t24 = c in #t24.{core::Object::==}(null) ?{self::Class*} null : #t24.{self::Class::field} = new self::Class::•().{self::Class::field};
-  c = let final self::Class* #t25 = c in #t25.{core::Object::==}(null) ?{self::Class*} null : #t25.{self::Class::field} = new self::Class::•().{self::Class::field};
-  let final self::Class* #t26 = c in #t26.{core::Object::==}(null) ?{self::Class*} null : #t26.{self::Class::field} = new self::Class::•().{self::Class::field} = new self::Class::•();
-  c = let final self::Class* #t27 = c in #t27.{core::Object::==}(null) ?{self::Class*} null : #t27.{self::Class::field} = new self::Class::•().{self::Class::field} = new self::Class::•();
-  let final self::Class* #t28 = c in #t28.{core::Object::==}(null) ?{self::Class*} null : #t28.{self::Class::field} = new self::Class::•().{self::Class::method}();
-  c = let final self::Class* #t29 = c in #t29.{core::Object::==}(null) ?{self::Class*} null : #t29.{self::Class::field} = new self::Class::•().{self::Class::method}();
-  self::throws(() → self::Class* => (let final self::Class* #t30 = c in #t30.{core::Object::==}(null) ?{self::Class*} null : #t30.{self::Class::method}()).{self::Class::field});
-  self::throws(() → self::Class* => (let final self::Class* #t31 = c in #t31.{core::Object::==}(null) ?{self::Class*} null : #t31.{self::Class::method}()).{self::Class::field} = new self::Class::•());
-  self::throws(() → self::Class* => (let final self::Class* #t32 = c in #t32.{core::Object::==}(null) ?{self::Class*} null : #t32.{self::Class::method}()).{self::Class::method}());
-  self::throws(() → self::Class* => (let final self::Class* #t33 = c in #t33.{core::Object::==}(null) ?{self::Class*} null : #t33.{self::Class::field}).{self::Class::field}.{self::Class::field});
-  self::throws(() → self::Class* => (let final self::Class* #t34 = c in #t34.{core::Object::==}(null) ?{self::Class*} null : #t34.{self::Class::field}).{self::Class::field}.{self::Class::field} = new self::Class::•());
-  self::throws(() → self::Class* => c = (let final self::Class* #t35 = c in #t35.{core::Object::==}(null) ?{self::Class*} null : #t35.{self::Class::field}).{self::Class::field}.{self::Class::field} = new self::Class::•());
-  self::throws(() → self::Class* => (let final self::Class* #t36 = c in #t36.{core::Object::==}(null) ?{self::Class*} null : #t36.{self::Class::field}).{self::Class::field}.{self::Class::method}());
-  let final self::Class* #t37 = c in #t37.{core::Object::==}(null) ?{self::Class*} null : #t37.{self::Class::field} = new self::Class::•().{self::Class::field}.{self::Class::field};
-  c = let final self::Class* #t38 = c in #t38.{core::Object::==}(null) ?{self::Class*} null : #t38.{self::Class::field} = new self::Class::•().{self::Class::field}.{self::Class::field};
-  let final self::Class* #t39 = c in #t39.{core::Object::==}(null) ?{self::Class*} null : #t39.{self::Class::field} = new self::Class::•().{self::Class::field}.{self::Class::field} = new self::Class::•();
-  c = let final self::Class* #t40 = c in #t40.{core::Object::==}(null) ?{self::Class*} null : #t40.{self::Class::field} = new self::Class::•().{self::Class::field}.{self::Class::field} = new self::Class::•();
-  let final self::Class* #t41 = c in #t41.{core::Object::==}(null) ?{self::Class*} null : #t41.{self::Class::field} = new self::Class::•().{self::Class::field}.{self::Class::method}();
-  c = let final self::Class* #t42 = c in #t42.{core::Object::==}(null) ?{self::Class*} null : #t42.{self::Class::field} = new self::Class::•().{self::Class::field}.{self::Class::method}();
-  self::throws(() → self::Class* => (let final self::Class* #t43 = c in #t43.{core::Object::==}(null) ?{self::Class*} null : #t43.{self::Class::method}()).{self::Class::field}.{self::Class::field});
-  self::throws(() → self::Class* => (let final self::Class* #t44 = c in #t44.{core::Object::==}(null) ?{self::Class*} null : #t44.{self::Class::method}()).{self::Class::field}.{self::Class::field} = new self::Class::•());
-  self::throws(() → self::Class* => (let final self::Class* #t45 = c in #t45.{core::Object::==}(null) ?{self::Class*} null : #t45.{self::Class::method}()).{self::Class::field}.{self::Class::method}());
-  self::throws(() → self::Class* => (let final self::Class* #t46 = c in #t46.{core::Object::==}(null) ?{self::Class*} null : #t46.{self::Class::field}).{self::Class::field} = new self::Class::•().{self::Class::field});
-  self::throws(() → self::Class* => c = (let final self::Class* #t47 = c in #t47.{core::Object::==}(null) ?{self::Class*} null : #t47.{self::Class::field}).{self::Class::field} = new self::Class::•().{self::Class::field});
-  self::throws(() → self::Class* => (let final self::Class* #t48 = c in #t48.{core::Object::==}(null) ?{self::Class*} null : #t48.{self::Class::field}).{self::Class::field} = new self::Class::•().{self::Class::field} = new self::Class::•());
-  self::throws(() → self::Class* => c = (let final self::Class* #t49 = c in #t49.{core::Object::==}(null) ?{self::Class*} null : #t49.{self::Class::field}).{self::Class::field} = new self::Class::•().{self::Class::field} = new self::Class::•());
-  self::throws(() → self::Class* => (let final self::Class* #t50 = c in #t50.{core::Object::==}(null) ?{self::Class*} null : #t50.{self::Class::field}).{self::Class::field} = new self::Class::•().{self::Class::method}());
-  self::throws(() → self::Class* => c = (let final self::Class* #t51 = c in #t51.{core::Object::==}(null) ?{self::Class*} null : #t51.{self::Class::field}).{self::Class::field} = new self::Class::•().{self::Class::method}());
-  let final self::Class* #t52 = c in #t52.{core::Object::==}(null) ?{self::Class*} null : #t52.{self::Class::field} = new self::Class::•().{self::Class::field} = new self::Class::•().{self::Class::field};
-  c = let final self::Class* #t53 = c in #t53.{core::Object::==}(null) ?{self::Class*} null : #t53.{self::Class::field} = new self::Class::•().{self::Class::field} = new self::Class::•().{self::Class::field};
-  let final self::Class* #t54 = c in #t54.{core::Object::==}(null) ?{self::Class*} null : #t54.{self::Class::field} = new self::Class::•().{self::Class::field} = new self::Class::•().{self::Class::field} = new self::Class::•();
-  c = let final self::Class* #t55 = c in #t55.{core::Object::==}(null) ?{self::Class*} null : #t55.{self::Class::field} = new self::Class::•().{self::Class::field} = new self::Class::•().{self::Class::field} = new self::Class::•();
-  let final self::Class* #t56 = c in #t56.{core::Object::==}(null) ?{self::Class*} null : #t56.{self::Class::field} = new self::Class::•().{self::Class::field} = new self::Class::•().{self::Class::method}();
-  c = let final self::Class* #t57 = c in #t57.{core::Object::==}(null) ?{self::Class*} null : #t57.{self::Class::field} = new self::Class::•().{self::Class::field} = new self::Class::•().{self::Class::method}();
-  self::throws(() → self::Class* => (let final self::Class* #t58 = c in #t58.{core::Object::==}(null) ?{self::Class*} null : #t58.{self::Class::method}()).{self::Class::field} = new self::Class::•().{self::Class::field});
-  self::throws(() → self::Class* => c = (let final self::Class* #t59 = c in #t59.{core::Object::==}(null) ?{self::Class*} null : #t59.{self::Class::method}()).{self::Class::field} = new self::Class::•().{self::Class::field});
-  self::throws(() → self::Class* => (let final self::Class* #t60 = c in #t60.{core::Object::==}(null) ?{self::Class*} null : #t60.{self::Class::method}()).{self::Class::field} = new self::Class::•().{self::Class::field} = new self::Class::•());
-  self::throws(() → self::Class* => c = (let final self::Class* #t61 = c in #t61.{core::Object::==}(null) ?{self::Class*} null : #t61.{self::Class::method}()).{self::Class::field} = new self::Class::•().{self::Class::field} = new self::Class::•());
-  self::throws(() → self::Class* => (let final self::Class* #t62 = c in #t62.{core::Object::==}(null) ?{self::Class*} null : #t62.{self::Class::method}()).{self::Class::field} = new self::Class::•().{self::Class::method}());
-  self::throws(() → self::Class* => c = (let final self::Class* #t63 = c in #t63.{core::Object::==}(null) ?{self::Class*} null : #t63.{self::Class::method}()).{self::Class::field} = new self::Class::•().{self::Class::method}());
-  self::throws(() → self::Class* => (let final self::Class* #t64 = c in #t64.{core::Object::==}(null) ?{self::Class*} null : #t64.{self::Class::field}).{self::Class::method}().{self::Class::field});
-  self::throws(() → self::Class* => (let final self::Class* #t65 = c in #t65.{core::Object::==}(null) ?{self::Class*} null : #t65.{self::Class::field}).{self::Class::method}().{self::Class::field} = new self::Class::•());
-  self::throws(() → self::Class* => c = (let final self::Class* #t66 = c in #t66.{core::Object::==}(null) ?{self::Class*} null : #t66.{self::Class::field}).{self::Class::method}().{self::Class::field} = new self::Class::•());
-  self::throws(() → self::Class* => (let final self::Class* #t67 = c in #t67.{core::Object::==}(null) ?{self::Class*} null : #t67.{self::Class::field}).{self::Class::method}().{self::Class::method}());
-  let final self::Class* #t68 = c in #t68.{core::Object::==}(null) ?{self::Class*} null : #t68.{self::Class::field} = new self::Class::•().{self::Class::method}().{self::Class::field};
-  c = let final self::Class* #t69 = c in #t69.{core::Object::==}(null) ?{self::Class*} null : #t69.{self::Class::field} = new self::Class::•().{self::Class::method}().{self::Class::field};
-  let final self::Class* #t70 = c in #t70.{core::Object::==}(null) ?{self::Class*} null : #t70.{self::Class::field} = new self::Class::•().{self::Class::method}().{self::Class::field} = new self::Class::•();
-  c = let final self::Class* #t71 = c in #t71.{core::Object::==}(null) ?{self::Class*} null : #t71.{self::Class::field} = new self::Class::•().{self::Class::method}().{self::Class::field} = new self::Class::•();
-  let final self::Class* #t72 = c in #t72.{core::Object::==}(null) ?{self::Class*} null : #t72.{self::Class::field} = new self::Class::•().{self::Class::method}().{self::Class::method}();
-  c = let final self::Class* #t73 = c in #t73.{core::Object::==}(null) ?{self::Class*} null : #t73.{self::Class::field} = new self::Class::•().{self::Class::method}().{self::Class::method}();
-  self::throws(() → self::Class* => (let final self::Class* #t74 = c in #t74.{core::Object::==}(null) ?{self::Class*} null : #t74.{self::Class::method}()).{self::Class::method}().{self::Class::field});
-  self::throws(() → self::Class* => (let final self::Class* #t75 = c in #t75.{core::Object::==}(null) ?{self::Class*} null : #t75.{self::Class::method}()).{self::Class::method}().{self::Class::field} = new self::Class::•());
-  self::throws(() → self::Class* => (let final self::Class* #t76 = c in #t76.{core::Object::==}(null) ?{self::Class*} null : #t76.{self::Class::method}()).{self::Class::method}().{self::Class::method}());
-  let final self::Class* #t77 = let final self::Class* #t78 = c in #t78.{core::Object::==}(null) ?{self::Class*} null : #t78.{self::Class::method}() in #t77.{core::Object::==}(null) ?{self::Class*} null : #t77.{self::Class::method}();
+  let final self::Class* #t1 = c in #t1.{self::Class::==}(null) ?{self::Class*} null : #t1.{self::Class::field};
+  let final self::Class* #t2 = c in #t2.{self::Class::==}(null) ?{self::Class*} null : #t2.{self::Class::field} = new self::Class::•();
+  c = let final self::Class* #t3 = c in #t3.{self::Class::==}(null) ?{self::Class*} null : #t3.{self::Class::field} = new self::Class::•();
+  let final self::Class* #t4 = c in #t4.{self::Class::==}(null) ?{self::Class*} null : #t4.{self::Class::method}();
+  self::throws(() → self::Class* => (let final self::Class* #t5 = c in #t5.{self::Class::==}(null) ?{self::Class*} null : #t5.{self::Class::field}).{self::Class::field});
+  let final self::Class* #t6 = let final self::Class* #t7 = c in #t7.{self::Class::==}(null) ?{self::Class*} null : #t7.{self::Class::field} in #t6.{self::Class::==}(null) ?{self::Class*} null : #t6.{self::Class::field};
+  self::throws(() → self::Class* => let final self::Class* #t8 = (let final self::Class* #t9 = c in #t9.{self::Class::==}(null) ?{self::Class*} null : #t9.{self::Class::field}).{self::Class::field} in #t8.{self::Class::==}(null) ?{self::Class*} null : #t8.{self::Class::field});
+  self::throws(() → self::Class* => (let final self::Class* #t10 = c in #t10.{self::Class::==}(null) ?{self::Class*} null : #t10.{self::Class::field}).{self::Class::field} = new self::Class::•());
+  let final self::Class* #t11 = let final self::Class* #t12 = c in #t12.{self::Class::==}(null) ?{self::Class*} null : #t12.{self::Class::field} in #t11.{self::Class::==}(null) ?{self::Class*} null : #t11.{self::Class::field} = new self::Class::•();
+  self::throws(() → self::Class* => let final self::Class* #t13 = (let final self::Class* #t14 = c in #t14.{self::Class::==}(null) ?{self::Class*} null : #t14.{self::Class::field}).{self::Class::field} in #t13.{self::Class::==}(null) ?{self::Class*} null : #t13.{self::Class::field} = new self::Class::•());
+  self::throws(() → self::Class* => (let final self::Class* #t15 = c in #t15.{self::Class::==}(null) ?{self::Class*} null : #t15.{self::Class::field}).{self::Class::field});
+  self::throws(() → self::Class* => (let final self::Class* #t16 = c in #t16.{self::Class::==}(null) ?{self::Class*} null : #t16.{self::Class::field} = new self::Class::•()).{self::Class::field});
+  self::throws(() → self::Class* => (let final self::Class* #t17 = c in #t17.{self::Class::==}(null) ?{self::Class*} null : #t17.{self::Class::method}()).{self::Class::field});
+  self::throws(() → self::Class* => c = (let final self::Class* #t18 = c in #t18.{self::Class::==}(null) ?{self::Class*} null : #t18.{self::Class::field}).{self::Class::field} = new self::Class::•());
+  c = let final self::Class* #t19 = let final self::Class* #t20 = c in #t20.{self::Class::==}(null) ?{self::Class*} null : #t20.{self::Class::field} in #t19.{self::Class::==}(null) ?{self::Class*} null : #t19.{self::Class::field} = new self::Class::•();
+  self::throws(() → self::Class* => c = let final self::Class* #t21 = (let final self::Class* #t22 = c in #t22.{self::Class::==}(null) ?{self::Class*} null : #t22.{self::Class::field}).{self::Class::field} in #t21.{self::Class::==}(null) ?{self::Class*} null : #t21.{self::Class::field} = new self::Class::•());
+  self::throws(() → self::Class* => (let final self::Class* #t23 = c in #t23.{self::Class::==}(null) ?{self::Class*} null : #t23.{self::Class::field}).{self::Class::method}());
+  let final self::Class* #t24 = c in #t24.{self::Class::==}(null) ?{self::Class*} null : #t24.{self::Class::field} = new self::Class::•().{self::Class::field};
+  c = let final self::Class* #t25 = c in #t25.{self::Class::==}(null) ?{self::Class*} null : #t25.{self::Class::field} = new self::Class::•().{self::Class::field};
+  let final self::Class* #t26 = c in #t26.{self::Class::==}(null) ?{self::Class*} null : #t26.{self::Class::field} = new self::Class::•().{self::Class::field} = new self::Class::•();
+  c = let final self::Class* #t27 = c in #t27.{self::Class::==}(null) ?{self::Class*} null : #t27.{self::Class::field} = new self::Class::•().{self::Class::field} = new self::Class::•();
+  let final self::Class* #t28 = c in #t28.{self::Class::==}(null) ?{self::Class*} null : #t28.{self::Class::field} = new self::Class::•().{self::Class::method}();
+  c = let final self::Class* #t29 = c in #t29.{self::Class::==}(null) ?{self::Class*} null : #t29.{self::Class::field} = new self::Class::•().{self::Class::method}();
+  self::throws(() → self::Class* => (let final self::Class* #t30 = c in #t30.{self::Class::==}(null) ?{self::Class*} null : #t30.{self::Class::method}()).{self::Class::field});
+  self::throws(() → self::Class* => (let final self::Class* #t31 = c in #t31.{self::Class::==}(null) ?{self::Class*} null : #t31.{self::Class::method}()).{self::Class::field} = new self::Class::•());
+  self::throws(() → self::Class* => (let final self::Class* #t32 = c in #t32.{self::Class::==}(null) ?{self::Class*} null : #t32.{self::Class::method}()).{self::Class::method}());
+  self::throws(() → self::Class* => (let final self::Class* #t33 = c in #t33.{self::Class::==}(null) ?{self::Class*} null : #t33.{self::Class::field}).{self::Class::field}.{self::Class::field});
+  self::throws(() → self::Class* => (let final self::Class* #t34 = c in #t34.{self::Class::==}(null) ?{self::Class*} null : #t34.{self::Class::field}).{self::Class::field}.{self::Class::field} = new self::Class::•());
+  self::throws(() → self::Class* => c = (let final self::Class* #t35 = c in #t35.{self::Class::==}(null) ?{self::Class*} null : #t35.{self::Class::field}).{self::Class::field}.{self::Class::field} = new self::Class::•());
+  self::throws(() → self::Class* => (let final self::Class* #t36 = c in #t36.{self::Class::==}(null) ?{self::Class*} null : #t36.{self::Class::field}).{self::Class::field}.{self::Class::method}());
+  let final self::Class* #t37 = c in #t37.{self::Class::==}(null) ?{self::Class*} null : #t37.{self::Class::field} = new self::Class::•().{self::Class::field}.{self::Class::field};
+  c = let final self::Class* #t38 = c in #t38.{self::Class::==}(null) ?{self::Class*} null : #t38.{self::Class::field} = new self::Class::•().{self::Class::field}.{self::Class::field};
+  let final self::Class* #t39 = c in #t39.{self::Class::==}(null) ?{self::Class*} null : #t39.{self::Class::field} = new self::Class::•().{self::Class::field}.{self::Class::field} = new self::Class::•();
+  c = let final self::Class* #t40 = c in #t40.{self::Class::==}(null) ?{self::Class*} null : #t40.{self::Class::field} = new self::Class::•().{self::Class::field}.{self::Class::field} = new self::Class::•();
+  let final self::Class* #t41 = c in #t41.{self::Class::==}(null) ?{self::Class*} null : #t41.{self::Class::field} = new self::Class::•().{self::Class::field}.{self::Class::method}();
+  c = let final self::Class* #t42 = c in #t42.{self::Class::==}(null) ?{self::Class*} null : #t42.{self::Class::field} = new self::Class::•().{self::Class::field}.{self::Class::method}();
+  self::throws(() → self::Class* => (let final self::Class* #t43 = c in #t43.{self::Class::==}(null) ?{self::Class*} null : #t43.{self::Class::method}()).{self::Class::field}.{self::Class::field});
+  self::throws(() → self::Class* => (let final self::Class* #t44 = c in #t44.{self::Class::==}(null) ?{self::Class*} null : #t44.{self::Class::method}()).{self::Class::field}.{self::Class::field} = new self::Class::•());
+  self::throws(() → self::Class* => (let final self::Class* #t45 = c in #t45.{self::Class::==}(null) ?{self::Class*} null : #t45.{self::Class::method}()).{self::Class::field}.{self::Class::method}());
+  self::throws(() → self::Class* => (let final self::Class* #t46 = c in #t46.{self::Class::==}(null) ?{self::Class*} null : #t46.{self::Class::field}).{self::Class::field} = new self::Class::•().{self::Class::field});
+  self::throws(() → self::Class* => c = (let final self::Class* #t47 = c in #t47.{self::Class::==}(null) ?{self::Class*} null : #t47.{self::Class::field}).{self::Class::field} = new self::Class::•().{self::Class::field});
+  self::throws(() → self::Class* => (let final self::Class* #t48 = c in #t48.{self::Class::==}(null) ?{self::Class*} null : #t48.{self::Class::field}).{self::Class::field} = new self::Class::•().{self::Class::field} = new self::Class::•());
+  self::throws(() → self::Class* => c = (let final self::Class* #t49 = c in #t49.{self::Class::==}(null) ?{self::Class*} null : #t49.{self::Class::field}).{self::Class::field} = new self::Class::•().{self::Class::field} = new self::Class::•());
+  self::throws(() → self::Class* => (let final self::Class* #t50 = c in #t50.{self::Class::==}(null) ?{self::Class*} null : #t50.{self::Class::field}).{self::Class::field} = new self::Class::•().{self::Class::method}());
+  self::throws(() → self::Class* => c = (let final self::Class* #t51 = c in #t51.{self::Class::==}(null) ?{self::Class*} null : #t51.{self::Class::field}).{self::Class::field} = new self::Class::•().{self::Class::method}());
+  let final self::Class* #t52 = c in #t52.{self::Class::==}(null) ?{self::Class*} null : #t52.{self::Class::field} = new self::Class::•().{self::Class::field} = new self::Class::•().{self::Class::field};
+  c = let final self::Class* #t53 = c in #t53.{self::Class::==}(null) ?{self::Class*} null : #t53.{self::Class::field} = new self::Class::•().{self::Class::field} = new self::Class::•().{self::Class::field};
+  let final self::Class* #t54 = c in #t54.{self::Class::==}(null) ?{self::Class*} null : #t54.{self::Class::field} = new self::Class::•().{self::Class::field} = new self::Class::•().{self::Class::field} = new self::Class::•();
+  c = let final self::Class* #t55 = c in #t55.{self::Class::==}(null) ?{self::Class*} null : #t55.{self::Class::field} = new self::Class::•().{self::Class::field} = new self::Class::•().{self::Class::field} = new self::Class::•();
+  let final self::Class* #t56 = c in #t56.{self::Class::==}(null) ?{self::Class*} null : #t56.{self::Class::field} = new self::Class::•().{self::Class::field} = new self::Class::•().{self::Class::method}();
+  c = let final self::Class* #t57 = c in #t57.{self::Class::==}(null) ?{self::Class*} null : #t57.{self::Class::field} = new self::Class::•().{self::Class::field} = new self::Class::•().{self::Class::method}();
+  self::throws(() → self::Class* => (let final self::Class* #t58 = c in #t58.{self::Class::==}(null) ?{self::Class*} null : #t58.{self::Class::method}()).{self::Class::field} = new self::Class::•().{self::Class::field});
+  self::throws(() → self::Class* => c = (let final self::Class* #t59 = c in #t59.{self::Class::==}(null) ?{self::Class*} null : #t59.{self::Class::method}()).{self::Class::field} = new self::Class::•().{self::Class::field});
+  self::throws(() → self::Class* => (let final self::Class* #t60 = c in #t60.{self::Class::==}(null) ?{self::Class*} null : #t60.{self::Class::method}()).{self::Class::field} = new self::Class::•().{self::Class::field} = new self::Class::•());
+  self::throws(() → self::Class* => c = (let final self::Class* #t61 = c in #t61.{self::Class::==}(null) ?{self::Class*} null : #t61.{self::Class::method}()).{self::Class::field} = new self::Class::•().{self::Class::field} = new self::Class::•());
+  self::throws(() → self::Class* => (let final self::Class* #t62 = c in #t62.{self::Class::==}(null) ?{self::Class*} null : #t62.{self::Class::method}()).{self::Class::field} = new self::Class::•().{self::Class::method}());
+  self::throws(() → self::Class* => c = (let final self::Class* #t63 = c in #t63.{self::Class::==}(null) ?{self::Class*} null : #t63.{self::Class::method}()).{self::Class::field} = new self::Class::•().{self::Class::method}());
+  self::throws(() → self::Class* => (let final self::Class* #t64 = c in #t64.{self::Class::==}(null) ?{self::Class*} null : #t64.{self::Class::field}).{self::Class::method}().{self::Class::field});
+  self::throws(() → self::Class* => (let final self::Class* #t65 = c in #t65.{self::Class::==}(null) ?{self::Class*} null : #t65.{self::Class::field}).{self::Class::method}().{self::Class::field} = new self::Class::•());
+  self::throws(() → self::Class* => c = (let final self::Class* #t66 = c in #t66.{self::Class::==}(null) ?{self::Class*} null : #t66.{self::Class::field}).{self::Class::method}().{self::Class::field} = new self::Class::•());
+  self::throws(() → self::Class* => (let final self::Class* #t67 = c in #t67.{self::Class::==}(null) ?{self::Class*} null : #t67.{self::Class::field}).{self::Class::method}().{self::Class::method}());
+  let final self::Class* #t68 = c in #t68.{self::Class::==}(null) ?{self::Class*} null : #t68.{self::Class::field} = new self::Class::•().{self::Class::method}().{self::Class::field};
+  c = let final self::Class* #t69 = c in #t69.{self::Class::==}(null) ?{self::Class*} null : #t69.{self::Class::field} = new self::Class::•().{self::Class::method}().{self::Class::field};
+  let final self::Class* #t70 = c in #t70.{self::Class::==}(null) ?{self::Class*} null : #t70.{self::Class::field} = new self::Class::•().{self::Class::method}().{self::Class::field} = new self::Class::•();
+  c = let final self::Class* #t71 = c in #t71.{self::Class::==}(null) ?{self::Class*} null : #t71.{self::Class::field} = new self::Class::•().{self::Class::method}().{self::Class::field} = new self::Class::•();
+  let final self::Class* #t72 = c in #t72.{self::Class::==}(null) ?{self::Class*} null : #t72.{self::Class::field} = new self::Class::•().{self::Class::method}().{self::Class::method}();
+  c = let final self::Class* #t73 = c in #t73.{self::Class::==}(null) ?{self::Class*} null : #t73.{self::Class::field} = new self::Class::•().{self::Class::method}().{self::Class::method}();
+  self::throws(() → self::Class* => (let final self::Class* #t74 = c in #t74.{self::Class::==}(null) ?{self::Class*} null : #t74.{self::Class::method}()).{self::Class::method}().{self::Class::field});
+  self::throws(() → self::Class* => (let final self::Class* #t75 = c in #t75.{self::Class::==}(null) ?{self::Class*} null : #t75.{self::Class::method}()).{self::Class::method}().{self::Class::field} = new self::Class::•());
+  self::throws(() → self::Class* => (let final self::Class* #t76 = c in #t76.{self::Class::==}(null) ?{self::Class*} null : #t76.{self::Class::method}()).{self::Class::method}().{self::Class::method}());
+  let final self::Class* #t77 = let final self::Class* #t78 = c in #t78.{self::Class::==}(null) ?{self::Class*} null : #t78.{self::Class::method}() in #t77.{self::Class::==}(null) ?{self::Class*} null : #t77.{self::Class::method}();
 }
 static method indexAccess(self::Class* c) → void {
-  self::throws(() → self::Class* => (let final self::Class* #t79 = c in #t79.{core::Object::==}(null) ?{self::Class*} null : #t79.{self::Class::field}).{self::Class::[]}(c));
-  self::throws(() → self::Class* => let final self::Class* #t80 = let final self::Class* #t81 = c in #t81.{core::Object::==}(null) ?{self::Class*} null : #t81.{self::Class::field} in let final self::Class* #t82 = c in let final self::Class* #t83 = new self::Class::•() in let final void #t84 = #t80.{self::Class::[]=}(#t82, #t83) in #t83);
-  self::throws(() → self::Class* => c = let final self::Class* #t85 = let final self::Class* #t86 = c in #t86.{core::Object::==}(null) ?{self::Class*} null : #t86.{self::Class::field} in let final self::Class* #t87 = c in let final self::Class* #t88 = new self::Class::•() in let final void #t89 = #t85.{self::Class::[]=}(#t87, #t88) in #t88);
-  self::throws(() → self::Class* => (let final self::Class* #t90 = c in #t90.{core::Object::==}(null) ?{self::Class*} null : #t90.{self::Class::field}).{self::Class::[]}(c).{self::Class::method}());
-  self::throws(() → self::Class* => let final self::Class* #t91 = let final self::Class* #t92 = c in #t92.{core::Object::==}(null) ?{self::Class*} null : #t92.{self::Class::field} in let final self::Class* #t93 = c in let final self::Class* #t94 = #t91.{self::Class::[]}(#t93).{self::Class::+}(0) in let final void #t95 = #t91.{self::Class::[]=}(#t93, #t94) in #t94);
-  self::throws(() → self::Class* => c = let final self::Class* #t96 = let final self::Class* #t97 = c in #t97.{core::Object::==}(null) ?{self::Class*} null : #t97.{self::Class::field} in let final self::Class* #t98 = c in let final self::Class* #t99 = #t96.{self::Class::[]}(#t98).{self::Class::+}(0) in let final void #t100 = #t96.{self::Class::[]=}(#t98, #t99) in #t99);
-  self::throws(() → self::Class* => let final self::Class* #t101 = let final self::Class* #t102 = c in #t102.{core::Object::==}(null) ?{self::Class*} null : #t102.{self::Class::field} in let final self::Class* #t103 = c in let final self::Class* #t104 = #t101.{self::Class::[]}(#t103) in let final void #t105 = #t101.{self::Class::[]=}(#t103, #t104.{self::Class::+}(1)) in #t104);
-  self::throws(() → self::Class* => c = let final self::Class* #t106 = let final self::Class* #t107 = c in #t107.{core::Object::==}(null) ?{self::Class*} null : #t107.{self::Class::field} in let final self::Class* #t108 = c in let final self::Class* #t109 = #t106.{self::Class::[]}(#t108) in let final void #t110 = #t106.{self::Class::[]=}(#t108, #t109.{self::Class::+}(1)) in #t109);
-  self::throws(() → self::Class* => let final self::Class* #t111 = let final self::Class* #t112 = c in #t112.{core::Object::==}(null) ?{self::Class*} null : #t112.{self::Class::field} in let final self::Class* #t113 = c in let final self::Class* #t114 = #t111.{self::Class::[]}(#t113).{self::Class::+}(1) in let final void #t115 = #t111.{self::Class::[]=}(#t113, #t114) in #t114);
-  self::throws(() → self::Class* => c = let final self::Class* #t116 = let final self::Class* #t117 = c in #t117.{core::Object::==}(null) ?{self::Class*} null : #t117.{self::Class::field} in let final self::Class* #t118 = c in let final self::Class* #t119 = #t116.{self::Class::[]}(#t118).{self::Class::+}(1) in let final void #t120 = #t116.{self::Class::[]=}(#t118, #t119) in #t119);
-  self::throws(() → self::Class* => (let final self::Class* #t121 = c in #t121.{core::Object::==}(null) ?{self::Class*} null : #t121.{self::Class::field}).{self::Class::[]}(c).{self::Class::[]}(c));
-  self::throws(() → self::Class* => let final self::Class* #t122 = (let final self::Class* #t123 = c in #t123.{core::Object::==}(null) ?{self::Class*} null : #t123.{self::Class::field}).{self::Class::[]}(c) in let final self::Class* #t124 = c in let final self::Class* #t125 = new self::Class::•() in let final void #t126 = #t122.{self::Class::[]=}(#t124, #t125) in #t125);
-  self::throws(() → self::Class* => c = let final self::Class* #t127 = (let final self::Class* #t128 = c in #t128.{core::Object::==}(null) ?{self::Class*} null : #t128.{self::Class::field}).{self::Class::[]}(c) in let final self::Class* #t129 = c in let final self::Class* #t130 = new self::Class::•() in let final void #t131 = #t127.{self::Class::[]=}(#t129, #t130) in #t130);
-  self::throws(() → self::Class* => (let final self::Class* #t132 = c in #t132.{core::Object::==}(null) ?{self::Class*} null : #t132.{self::Class::field}).{self::Class::[]}(c).{self::Class::[]}(c).{self::Class::method}());
-  self::throws(() → self::Class* => let final self::Class* #t133 = (let final self::Class* #t134 = c in #t134.{core::Object::==}(null) ?{self::Class*} null : #t134.{self::Class::field}).{self::Class::[]}(c) in let final self::Class* #t135 = c in let final self::Class* #t136 = #t133.{self::Class::[]}(#t135).{self::Class::+}(0) in let final void #t137 = #t133.{self::Class::[]=}(#t135, #t136) in #t136);
-  self::throws(() → self::Class* => c = let final self::Class* #t138 = (let final self::Class* #t139 = c in #t139.{core::Object::==}(null) ?{self::Class*} null : #t139.{self::Class::field}).{self::Class::[]}(c) in let final self::Class* #t140 = c in let final self::Class* #t141 = #t138.{self::Class::[]}(#t140).{self::Class::+}(0) in let final void #t142 = #t138.{self::Class::[]=}(#t140, #t141) in #t141);
-  self::throws(() → self::Class* => let final self::Class* #t143 = (let final self::Class* #t144 = c in #t144.{core::Object::==}(null) ?{self::Class*} null : #t144.{self::Class::field}).{self::Class::[]}(c) in let final self::Class* #t145 = c in let final self::Class* #t146 = #t143.{self::Class::[]}(#t145) in let final void #t147 = #t143.{self::Class::[]=}(#t145, #t146.{self::Class::+}(1)) in #t146);
-  self::throws(() → self::Class* => c = let final self::Class* #t148 = (let final self::Class* #t149 = c in #t149.{core::Object::==}(null) ?{self::Class*} null : #t149.{self::Class::field}).{self::Class::[]}(c) in let final self::Class* #t150 = c in let final self::Class* #t151 = #t148.{self::Class::[]}(#t150) in let final void #t152 = #t148.{self::Class::[]=}(#t150, #t151.{self::Class::+}(1)) in #t151);
-  self::throws(() → self::Class* => let final self::Class* #t153 = (let final self::Class* #t154 = c in #t154.{core::Object::==}(null) ?{self::Class*} null : #t154.{self::Class::field}).{self::Class::[]}(c) in let final self::Class* #t155 = c in let final self::Class* #t156 = #t153.{self::Class::[]}(#t155).{self::Class::+}(1) in let final void #t157 = #t153.{self::Class::[]=}(#t155, #t156) in #t156);
-  self::throws(() → self::Class* => c = let final self::Class* #t158 = (let final self::Class* #t159 = c in #t159.{core::Object::==}(null) ?{self::Class*} null : #t159.{self::Class::field}).{self::Class::[]}(c) in let final self::Class* #t160 = c in let final self::Class* #t161 = #t158.{self::Class::[]}(#t160).{self::Class::+}(1) in let final void #t162 = #t158.{self::Class::[]=}(#t160, #t161) in #t161);
+  self::throws(() → self::Class* => (let final self::Class* #t79 = c in #t79.{self::Class::==}(null) ?{self::Class*} null : #t79.{self::Class::field}).{self::Class::[]}(c));
+  self::throws(() → self::Class* => let final self::Class* #t80 = let final self::Class* #t81 = c in #t81.{self::Class::==}(null) ?{self::Class*} null : #t81.{self::Class::field} in let final self::Class* #t82 = c in let final self::Class* #t83 = new self::Class::•() in let final void #t84 = #t80.{self::Class::[]=}(#t82, #t83) in #t83);
+  self::throws(() → self::Class* => c = let final self::Class* #t85 = let final self::Class* #t86 = c in #t86.{self::Class::==}(null) ?{self::Class*} null : #t86.{self::Class::field} in let final self::Class* #t87 = c in let final self::Class* #t88 = new self::Class::•() in let final void #t89 = #t85.{self::Class::[]=}(#t87, #t88) in #t88);
+  self::throws(() → self::Class* => (let final self::Class* #t90 = c in #t90.{self::Class::==}(null) ?{self::Class*} null : #t90.{self::Class::field}).{self::Class::[]}(c).{self::Class::method}());
+  self::throws(() → self::Class* => let final self::Class* #t91 = let final self::Class* #t92 = c in #t92.{self::Class::==}(null) ?{self::Class*} null : #t92.{self::Class::field} in let final self::Class* #t93 = c in let final self::Class* #t94 = #t91.{self::Class::[]}(#t93).{self::Class::+}(0) in let final void #t95 = #t91.{self::Class::[]=}(#t93, #t94) in #t94);
+  self::throws(() → self::Class* => c = let final self::Class* #t96 = let final self::Class* #t97 = c in #t97.{self::Class::==}(null) ?{self::Class*} null : #t97.{self::Class::field} in let final self::Class* #t98 = c in let final self::Class* #t99 = #t96.{self::Class::[]}(#t98).{self::Class::+}(0) in let final void #t100 = #t96.{self::Class::[]=}(#t98, #t99) in #t99);
+  self::throws(() → self::Class* => let final self::Class* #t101 = let final self::Class* #t102 = c in #t102.{self::Class::==}(null) ?{self::Class*} null : #t102.{self::Class::field} in let final self::Class* #t103 = c in let final self::Class* #t104 = #t101.{self::Class::[]}(#t103) in let final void #t105 = #t101.{self::Class::[]=}(#t103, #t104.{self::Class::+}(1)) in #t104);
+  self::throws(() → self::Class* => c = let final self::Class* #t106 = let final self::Class* #t107 = c in #t107.{self::Class::==}(null) ?{self::Class*} null : #t107.{self::Class::field} in let final self::Class* #t108 = c in let final self::Class* #t109 = #t106.{self::Class::[]}(#t108) in let final void #t110 = #t106.{self::Class::[]=}(#t108, #t109.{self::Class::+}(1)) in #t109);
+  self::throws(() → self::Class* => let final self::Class* #t111 = let final self::Class* #t112 = c in #t112.{self::Class::==}(null) ?{self::Class*} null : #t112.{self::Class::field} in let final self::Class* #t113 = c in let final self::Class* #t114 = #t111.{self::Class::[]}(#t113).{self::Class::+}(1) in let final void #t115 = #t111.{self::Class::[]=}(#t113, #t114) in #t114);
+  self::throws(() → self::Class* => c = let final self::Class* #t116 = let final self::Class* #t117 = c in #t117.{self::Class::==}(null) ?{self::Class*} null : #t117.{self::Class::field} in let final self::Class* #t118 = c in let final self::Class* #t119 = #t116.{self::Class::[]}(#t118).{self::Class::+}(1) in let final void #t120 = #t116.{self::Class::[]=}(#t118, #t119) in #t119);
+  self::throws(() → self::Class* => (let final self::Class* #t121 = c in #t121.{self::Class::==}(null) ?{self::Class*} null : #t121.{self::Class::field}).{self::Class::[]}(c).{self::Class::[]}(c));
+  self::throws(() → self::Class* => let final self::Class* #t122 = (let final self::Class* #t123 = c in #t123.{self::Class::==}(null) ?{self::Class*} null : #t123.{self::Class::field}).{self::Class::[]}(c) in let final self::Class* #t124 = c in let final self::Class* #t125 = new self::Class::•() in let final void #t126 = #t122.{self::Class::[]=}(#t124, #t125) in #t125);
+  self::throws(() → self::Class* => c = let final self::Class* #t127 = (let final self::Class* #t128 = c in #t128.{self::Class::==}(null) ?{self::Class*} null : #t128.{self::Class::field}).{self::Class::[]}(c) in let final self::Class* #t129 = c in let final self::Class* #t130 = new self::Class::•() in let final void #t131 = #t127.{self::Class::[]=}(#t129, #t130) in #t130);
+  self::throws(() → self::Class* => (let final self::Class* #t132 = c in #t132.{self::Class::==}(null) ?{self::Class*} null : #t132.{self::Class::field}).{self::Class::[]}(c).{self::Class::[]}(c).{self::Class::method}());
+  self::throws(() → self::Class* => let final self::Class* #t133 = (let final self::Class* #t134 = c in #t134.{self::Class::==}(null) ?{self::Class*} null : #t134.{self::Class::field}).{self::Class::[]}(c) in let final self::Class* #t135 = c in let final self::Class* #t136 = #t133.{self::Class::[]}(#t135).{self::Class::+}(0) in let final void #t137 = #t133.{self::Class::[]=}(#t135, #t136) in #t136);
+  self::throws(() → self::Class* => c = let final self::Class* #t138 = (let final self::Class* #t139 = c in #t139.{self::Class::==}(null) ?{self::Class*} null : #t139.{self::Class::field}).{self::Class::[]}(c) in let final self::Class* #t140 = c in let final self::Class* #t141 = #t138.{self::Class::[]}(#t140).{self::Class::+}(0) in let final void #t142 = #t138.{self::Class::[]=}(#t140, #t141) in #t141);
+  self::throws(() → self::Class* => let final self::Class* #t143 = (let final self::Class* #t144 = c in #t144.{self::Class::==}(null) ?{self::Class*} null : #t144.{self::Class::field}).{self::Class::[]}(c) in let final self::Class* #t145 = c in let final self::Class* #t146 = #t143.{self::Class::[]}(#t145) in let final void #t147 = #t143.{self::Class::[]=}(#t145, #t146.{self::Class::+}(1)) in #t146);
+  self::throws(() → self::Class* => c = let final self::Class* #t148 = (let final self::Class* #t149 = c in #t149.{self::Class::==}(null) ?{self::Class*} null : #t149.{self::Class::field}).{self::Class::[]}(c) in let final self::Class* #t150 = c in let final self::Class* #t151 = #t148.{self::Class::[]}(#t150) in let final void #t152 = #t148.{self::Class::[]=}(#t150, #t151.{self::Class::+}(1)) in #t151);
+  self::throws(() → self::Class* => let final self::Class* #t153 = (let final self::Class* #t154 = c in #t154.{self::Class::==}(null) ?{self::Class*} null : #t154.{self::Class::field}).{self::Class::[]}(c) in let final self::Class* #t155 = c in let final self::Class* #t156 = #t153.{self::Class::[]}(#t155).{self::Class::+}(1) in let final void #t157 = #t153.{self::Class::[]=}(#t155, #t156) in #t156);
+  self::throws(() → self::Class* => c = let final self::Class* #t158 = (let final self::Class* #t159 = c in #t159.{self::Class::==}(null) ?{self::Class*} null : #t159.{self::Class::field}).{self::Class::[]}(c) in let final self::Class* #t160 = c in let final self::Class* #t161 = #t158.{self::Class::[]}(#t160).{self::Class::+}(1) in let final void #t162 = #t158.{self::Class::[]=}(#t160, #t161) in #t161);
 }
 static method operatorAccess(self::Class* c) → void {
-  self::throws(() → self::Class* => (let final self::Class* #t163 = c in #t163.{core::Object::==}(null) ?{self::Class*} null : #t163.{self::Class::field}).{self::Class::+}(0));
-  self::throws(() → self::Class* => (let final self::Class* #t164 = c in #t164.{core::Object::==}(null) ?{self::Class*} null : #t164.{self::Class::field}).{self::Class::unary-}());
-  let final self::Class* #t165 = c in #t165.{core::Object::==}(null) ?{self::Class*} null : #t165.{self::Class::field} = #t165.{self::Class::field}.{self::Class::+}(0);
-  c = let final self::Class* #t166 = c in #t166.{core::Object::==}(null) ?{self::Class*} null : let final self::Class* #t167 = #t166.{self::Class::field}.{self::Class::+}(0) in let final void #t168 = #t166.{self::Class::field} = #t167 in #t167;
-  self::throws(() → self::Class* => let final self::Class* #t169 = let final self::Class* #t170 = c in #t170.{core::Object::==}(null) ?{self::Class*} null : #t170.{self::Class::field} in #t169.{self::Class::field} = #t169.{self::Class::field}.{self::Class::+}(0));
-  self::throws(() → self::Class* => c = let final self::Class* #t171 = let final self::Class* #t172 = c in #t172.{core::Object::==}(null) ?{self::Class*} null : #t172.{self::Class::field} in #t171.{self::Class::field} = #t171.{self::Class::field}.{self::Class::+}(0));
-  let final self::Class* #t173 = c in #t173.{core::Object::==}(null) ?{self::Class*} null : #t173.{self::Class::field} = #t173.{self::Class::field}.{self::Class::+}(1);
-  c = let final self::Class* #t174 = c in #t174.{core::Object::==}(null) ?{self::Class*} null : let final self::Class* #t175 = #t174.{self::Class::field} in let final void #t176 = #t174.{self::Class::field} = #t175.{self::Class::+}(1) in #t175;
-  let final self::Class* #t177 = c in #t177.{core::Object::==}(null) ?{self::Class*} null : let final self::Class* #t178 = #t177.{self::Class::field}.{self::Class::+}(1) in let final void #t179 = #t177.{self::Class::field} = #t178 in #t178;
-  c = let final self::Class* #t180 = c in #t180.{core::Object::==}(null) ?{self::Class*} null : let final self::Class* #t181 = #t180.{self::Class::field}.{self::Class::+}(1) in let final void #t182 = #t180.{self::Class::field} = #t181 in #t181;
+  self::throws(() → self::Class* => (let final self::Class* #t163 = c in #t163.{self::Class::==}(null) ?{self::Class*} null : #t163.{self::Class::field}).{self::Class::+}(0));
+  self::throws(() → self::Class* => (let final self::Class* #t164 = c in #t164.{self::Class::==}(null) ?{self::Class*} null : #t164.{self::Class::field}).{self::Class::unary-}());
+  let final self::Class* #t165 = c in #t165.{self::Class::==}(null) ?{self::Class*} null : #t165.{self::Class::field} = #t165.{self::Class::field}.{self::Class::+}(0);
+  c = let final self::Class* #t166 = c in #t166.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t167 = #t166.{self::Class::field}.{self::Class::+}(0) in let final void #t168 = #t166.{self::Class::field} = #t167 in #t167;
+  self::throws(() → self::Class* => let final self::Class* #t169 = let final self::Class* #t170 = c in #t170.{self::Class::==}(null) ?{self::Class*} null : #t170.{self::Class::field} in #t169.{self::Class::field} = #t169.{self::Class::field}.{self::Class::+}(0));
+  self::throws(() → self::Class* => c = let final self::Class* #t171 = let final self::Class* #t172 = c in #t172.{self::Class::==}(null) ?{self::Class*} null : #t172.{self::Class::field} in #t171.{self::Class::field} = #t171.{self::Class::field}.{self::Class::+}(0));
+  let final self::Class* #t173 = c in #t173.{self::Class::==}(null) ?{self::Class*} null : #t173.{self::Class::field} = #t173.{self::Class::field}.{self::Class::+}(1);
+  c = let final self::Class* #t174 = c in #t174.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t175 = #t174.{self::Class::field} in let final void #t176 = #t174.{self::Class::field} = #t175.{self::Class::+}(1) in #t175;
+  let final self::Class* #t177 = c in #t177.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t178 = #t177.{self::Class::field}.{self::Class::+}(1) in let final void #t179 = #t177.{self::Class::field} = #t178 in #t178;
+  c = let final self::Class* #t180 = c in #t180.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t181 = #t180.{self::Class::field}.{self::Class::+}(1) in let final void #t182 = #t180.{self::Class::field} = #t181 in #t181;
 }
 static method ifNull(self::Class* c) → void {
-  let final self::Class* #t183 = c in #t183.{core::Object::==}(null) ?{self::Class*} null : #t183.{self::Class::field}.{core::Object::==}(null) ?{self::Class*} #t183.{self::Class::field} = c : null;
-  c = let final self::Class* #t184 = c in #t184.{core::Object::==}(null) ?{self::Class*} null : let final self::Class* #t185 = #t184.{self::Class::field} in #t185.{core::Object::==}(null) ?{self::Class*} #t184.{self::Class::field} = c : #t185;
-  self::throws(() → self::Class* => let final self::Class* #t186 = let final self::Class* #t187 = c in #t187.{core::Object::==}(null) ?{self::Class*} null : #t187.{self::Class::field} in let final self::Class* #t188 = #t186.{self::Class::field} in #t188.{core::Object::==}(null) ?{self::Class*} #t186.{self::Class::field} = c : #t188);
-  self::throws(() → self::Class* => c = let final self::Class* #t189 = let final self::Class* #t190 = c in #t190.{core::Object::==}(null) ?{self::Class*} null : #t190.{self::Class::field} in let final self::Class* #t191 = #t189.{self::Class::field} in #t191.{core::Object::==}(null) ?{self::Class*} #t189.{self::Class::field} = c : #t191);
-  self::throws(() → self::Class* => let final self::Class* #t192 = let final self::Class* #t193 = c in #t193.{core::Object::==}(null) ?{self::Class*} null : #t193.{self::Class::field} in let final self::Class* #t194 = c in let final self::Class* #t195 = #t192.{self::Class::[]}(#t194) in #t195.{core::Object::==}(null) ?{self::Class*} let final self::Class* #t196 = c in let final void #t197 = #t192.{self::Class::[]=}(#t194, #t196) in #t196 : #t195);
-  self::throws(() → self::Class* => c = let final self::Class* #t198 = let final self::Class* #t199 = c in #t199.{core::Object::==}(null) ?{self::Class*} null : #t199.{self::Class::field} in let final self::Class* #t200 = c in let final self::Class* #t201 = #t198.{self::Class::[]}(#t200) in #t201.{core::Object::==}(null) ?{self::Class*} let final self::Class* #t202 = c in let final void #t203 = #t198.{self::Class::[]=}(#t200, #t202) in #t202 : #t201);
+  let final self::Class* #t183 = c in #t183.{self::Class::==}(null) ?{self::Class*} null : #t183.{self::Class::field}.{self::Class::==}(null) ?{self::Class*} #t183.{self::Class::field} = c : null;
+  c = let final self::Class* #t184 = c in #t184.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t185 = #t184.{self::Class::field} in #t185.{self::Class::==}(null) ?{self::Class*} #t184.{self::Class::field} = c : #t185;
+  self::throws(() → self::Class* => let final self::Class* #t186 = let final self::Class* #t187 = c in #t187.{self::Class::==}(null) ?{self::Class*} null : #t187.{self::Class::field} in let final self::Class* #t188 = #t186.{self::Class::field} in #t188.{self::Class::==}(null) ?{self::Class*} #t186.{self::Class::field} = c : #t188);
+  self::throws(() → self::Class* => c = let final self::Class* #t189 = let final self::Class* #t190 = c in #t190.{self::Class::==}(null) ?{self::Class*} null : #t190.{self::Class::field} in let final self::Class* #t191 = #t189.{self::Class::field} in #t191.{self::Class::==}(null) ?{self::Class*} #t189.{self::Class::field} = c : #t191);
+  self::throws(() → self::Class* => let final self::Class* #t192 = let final self::Class* #t193 = c in #t193.{self::Class::==}(null) ?{self::Class*} null : #t193.{self::Class::field} in let final self::Class* #t194 = c in let final self::Class* #t195 = #t192.{self::Class::[]}(#t194) in #t195.{self::Class::==}(null) ?{self::Class*} let final self::Class* #t196 = c in let final void #t197 = #t192.{self::Class::[]=}(#t194, #t196) in #t196 : #t195);
+  self::throws(() → self::Class* => c = let final self::Class* #t198 = let final self::Class* #t199 = c in #t199.{self::Class::==}(null) ?{self::Class*} null : #t199.{self::Class::field} in let final self::Class* #t200 = c in let final self::Class* #t201 = #t198.{self::Class::[]}(#t200) in #t201.{self::Class::==}(null) ?{self::Class*} let final self::Class* #t202 = c in let final void #t203 = #t198.{self::Class::[]=}(#t200, #t202) in #t202 : #t201);
 }
 static method throws(() →* void f) → void {
   try {
diff --git a/pkg/front_end/testcases/nnbd/no_null_shorting.dart.weak.expect b/pkg/front_end/testcases/nnbd/no_null_shorting.dart.weak.expect
index b0d09f9..36152d8 100644
--- a/pkg/front_end/testcases/nnbd/no_null_shorting.dart.weak.expect
+++ b/pkg/front_end/testcases/nnbd/no_null_shorting.dart.weak.expect
@@ -18,6 +18,16 @@
     return this.{self::Class::field};
   operator unary-() → self::Class*
     return this.{self::Class::field};
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   self::propertyAccess(null);
@@ -26,119 +36,119 @@
   self::ifNull(null);
 }
 static method propertyAccess(self::Class* c) → void {
-  let final self::Class* #t1 = c in #t1.{core::Object::==}(null) ?{self::Class*} null : #t1.{self::Class::field};
-  let final self::Class* #t2 = c in #t2.{core::Object::==}(null) ?{self::Class*} null : #t2.{self::Class::field} = new self::Class::•();
-  c = let final self::Class* #t3 = c in #t3.{core::Object::==}(null) ?{self::Class*} null : #t3.{self::Class::field} = new self::Class::•();
-  let final self::Class* #t4 = c in #t4.{core::Object::==}(null) ?{self::Class*} null : #t4.{self::Class::method}();
-  self::throws(() → self::Class* => (let final self::Class* #t5 = c in #t5.{core::Object::==}(null) ?{self::Class*} null : #t5.{self::Class::field}).{self::Class::field});
-  let final self::Class* #t6 = let final self::Class* #t7 = c in #t7.{core::Object::==}(null) ?{self::Class*} null : #t7.{self::Class::field} in #t6.{core::Object::==}(null) ?{self::Class*} null : #t6.{self::Class::field};
-  self::throws(() → self::Class* => let final self::Class* #t8 = (let final self::Class* #t9 = c in #t9.{core::Object::==}(null) ?{self::Class*} null : #t9.{self::Class::field}).{self::Class::field} in #t8.{core::Object::==}(null) ?{self::Class*} null : #t8.{self::Class::field});
-  self::throws(() → self::Class* => (let final self::Class* #t10 = c in #t10.{core::Object::==}(null) ?{self::Class*} null : #t10.{self::Class::field}).{self::Class::field} = new self::Class::•());
-  let final self::Class* #t11 = let final self::Class* #t12 = c in #t12.{core::Object::==}(null) ?{self::Class*} null : #t12.{self::Class::field} in #t11.{core::Object::==}(null) ?{self::Class*} null : #t11.{self::Class::field} = new self::Class::•();
-  self::throws(() → self::Class* => let final self::Class* #t13 = (let final self::Class* #t14 = c in #t14.{core::Object::==}(null) ?{self::Class*} null : #t14.{self::Class::field}).{self::Class::field} in #t13.{core::Object::==}(null) ?{self::Class*} null : #t13.{self::Class::field} = new self::Class::•());
-  self::throws(() → self::Class* => (let final self::Class* #t15 = c in #t15.{core::Object::==}(null) ?{self::Class*} null : #t15.{self::Class::field}).{self::Class::field});
-  self::throws(() → self::Class* => (let final self::Class* #t16 = c in #t16.{core::Object::==}(null) ?{self::Class*} null : #t16.{self::Class::field} = new self::Class::•()).{self::Class::field});
-  self::throws(() → self::Class* => (let final self::Class* #t17 = c in #t17.{core::Object::==}(null) ?{self::Class*} null : #t17.{self::Class::method}()).{self::Class::field});
-  self::throws(() → self::Class* => c = (let final self::Class* #t18 = c in #t18.{core::Object::==}(null) ?{self::Class*} null : #t18.{self::Class::field}).{self::Class::field} = new self::Class::•());
-  c = let final self::Class* #t19 = let final self::Class* #t20 = c in #t20.{core::Object::==}(null) ?{self::Class*} null : #t20.{self::Class::field} in #t19.{core::Object::==}(null) ?{self::Class*} null : #t19.{self::Class::field} = new self::Class::•();
-  self::throws(() → self::Class* => c = let final self::Class* #t21 = (let final self::Class* #t22 = c in #t22.{core::Object::==}(null) ?{self::Class*} null : #t22.{self::Class::field}).{self::Class::field} in #t21.{core::Object::==}(null) ?{self::Class*} null : #t21.{self::Class::field} = new self::Class::•());
-  self::throws(() → self::Class* => (let final self::Class* #t23 = c in #t23.{core::Object::==}(null) ?{self::Class*} null : #t23.{self::Class::field}).{self::Class::method}());
-  let final self::Class* #t24 = c in #t24.{core::Object::==}(null) ?{self::Class*} null : #t24.{self::Class::field} = new self::Class::•().{self::Class::field};
-  c = let final self::Class* #t25 = c in #t25.{core::Object::==}(null) ?{self::Class*} null : #t25.{self::Class::field} = new self::Class::•().{self::Class::field};
-  let final self::Class* #t26 = c in #t26.{core::Object::==}(null) ?{self::Class*} null : #t26.{self::Class::field} = new self::Class::•().{self::Class::field} = new self::Class::•();
-  c = let final self::Class* #t27 = c in #t27.{core::Object::==}(null) ?{self::Class*} null : #t27.{self::Class::field} = new self::Class::•().{self::Class::field} = new self::Class::•();
-  let final self::Class* #t28 = c in #t28.{core::Object::==}(null) ?{self::Class*} null : #t28.{self::Class::field} = new self::Class::•().{self::Class::method}();
-  c = let final self::Class* #t29 = c in #t29.{core::Object::==}(null) ?{self::Class*} null : #t29.{self::Class::field} = new self::Class::•().{self::Class::method}();
-  self::throws(() → self::Class* => (let final self::Class* #t30 = c in #t30.{core::Object::==}(null) ?{self::Class*} null : #t30.{self::Class::method}()).{self::Class::field});
-  self::throws(() → self::Class* => (let final self::Class* #t31 = c in #t31.{core::Object::==}(null) ?{self::Class*} null : #t31.{self::Class::method}()).{self::Class::field} = new self::Class::•());
-  self::throws(() → self::Class* => (let final self::Class* #t32 = c in #t32.{core::Object::==}(null) ?{self::Class*} null : #t32.{self::Class::method}()).{self::Class::method}());
-  self::throws(() → self::Class* => (let final self::Class* #t33 = c in #t33.{core::Object::==}(null) ?{self::Class*} null : #t33.{self::Class::field}).{self::Class::field}.{self::Class::field});
-  self::throws(() → self::Class* => (let final self::Class* #t34 = c in #t34.{core::Object::==}(null) ?{self::Class*} null : #t34.{self::Class::field}).{self::Class::field}.{self::Class::field} = new self::Class::•());
-  self::throws(() → self::Class* => c = (let final self::Class* #t35 = c in #t35.{core::Object::==}(null) ?{self::Class*} null : #t35.{self::Class::field}).{self::Class::field}.{self::Class::field} = new self::Class::•());
-  self::throws(() → self::Class* => (let final self::Class* #t36 = c in #t36.{core::Object::==}(null) ?{self::Class*} null : #t36.{self::Class::field}).{self::Class::field}.{self::Class::method}());
-  let final self::Class* #t37 = c in #t37.{core::Object::==}(null) ?{self::Class*} null : #t37.{self::Class::field} = new self::Class::•().{self::Class::field}.{self::Class::field};
-  c = let final self::Class* #t38 = c in #t38.{core::Object::==}(null) ?{self::Class*} null : #t38.{self::Class::field} = new self::Class::•().{self::Class::field}.{self::Class::field};
-  let final self::Class* #t39 = c in #t39.{core::Object::==}(null) ?{self::Class*} null : #t39.{self::Class::field} = new self::Class::•().{self::Class::field}.{self::Class::field} = new self::Class::•();
-  c = let final self::Class* #t40 = c in #t40.{core::Object::==}(null) ?{self::Class*} null : #t40.{self::Class::field} = new self::Class::•().{self::Class::field}.{self::Class::field} = new self::Class::•();
-  let final self::Class* #t41 = c in #t41.{core::Object::==}(null) ?{self::Class*} null : #t41.{self::Class::field} = new self::Class::•().{self::Class::field}.{self::Class::method}();
-  c = let final self::Class* #t42 = c in #t42.{core::Object::==}(null) ?{self::Class*} null : #t42.{self::Class::field} = new self::Class::•().{self::Class::field}.{self::Class::method}();
-  self::throws(() → self::Class* => (let final self::Class* #t43 = c in #t43.{core::Object::==}(null) ?{self::Class*} null : #t43.{self::Class::method}()).{self::Class::field}.{self::Class::field});
-  self::throws(() → self::Class* => (let final self::Class* #t44 = c in #t44.{core::Object::==}(null) ?{self::Class*} null : #t44.{self::Class::method}()).{self::Class::field}.{self::Class::field} = new self::Class::•());
-  self::throws(() → self::Class* => (let final self::Class* #t45 = c in #t45.{core::Object::==}(null) ?{self::Class*} null : #t45.{self::Class::method}()).{self::Class::field}.{self::Class::method}());
-  self::throws(() → self::Class* => (let final self::Class* #t46 = c in #t46.{core::Object::==}(null) ?{self::Class*} null : #t46.{self::Class::field}).{self::Class::field} = new self::Class::•().{self::Class::field});
-  self::throws(() → self::Class* => c = (let final self::Class* #t47 = c in #t47.{core::Object::==}(null) ?{self::Class*} null : #t47.{self::Class::field}).{self::Class::field} = new self::Class::•().{self::Class::field});
-  self::throws(() → self::Class* => (let final self::Class* #t48 = c in #t48.{core::Object::==}(null) ?{self::Class*} null : #t48.{self::Class::field}).{self::Class::field} = new self::Class::•().{self::Class::field} = new self::Class::•());
-  self::throws(() → self::Class* => c = (let final self::Class* #t49 = c in #t49.{core::Object::==}(null) ?{self::Class*} null : #t49.{self::Class::field}).{self::Class::field} = new self::Class::•().{self::Class::field} = new self::Class::•());
-  self::throws(() → self::Class* => (let final self::Class* #t50 = c in #t50.{core::Object::==}(null) ?{self::Class*} null : #t50.{self::Class::field}).{self::Class::field} = new self::Class::•().{self::Class::method}());
-  self::throws(() → self::Class* => c = (let final self::Class* #t51 = c in #t51.{core::Object::==}(null) ?{self::Class*} null : #t51.{self::Class::field}).{self::Class::field} = new self::Class::•().{self::Class::method}());
-  let final self::Class* #t52 = c in #t52.{core::Object::==}(null) ?{self::Class*} null : #t52.{self::Class::field} = new self::Class::•().{self::Class::field} = new self::Class::•().{self::Class::field};
-  c = let final self::Class* #t53 = c in #t53.{core::Object::==}(null) ?{self::Class*} null : #t53.{self::Class::field} = new self::Class::•().{self::Class::field} = new self::Class::•().{self::Class::field};
-  let final self::Class* #t54 = c in #t54.{core::Object::==}(null) ?{self::Class*} null : #t54.{self::Class::field} = new self::Class::•().{self::Class::field} = new self::Class::•().{self::Class::field} = new self::Class::•();
-  c = let final self::Class* #t55 = c in #t55.{core::Object::==}(null) ?{self::Class*} null : #t55.{self::Class::field} = new self::Class::•().{self::Class::field} = new self::Class::•().{self::Class::field} = new self::Class::•();
-  let final self::Class* #t56 = c in #t56.{core::Object::==}(null) ?{self::Class*} null : #t56.{self::Class::field} = new self::Class::•().{self::Class::field} = new self::Class::•().{self::Class::method}();
-  c = let final self::Class* #t57 = c in #t57.{core::Object::==}(null) ?{self::Class*} null : #t57.{self::Class::field} = new self::Class::•().{self::Class::field} = new self::Class::•().{self::Class::method}();
-  self::throws(() → self::Class* => (let final self::Class* #t58 = c in #t58.{core::Object::==}(null) ?{self::Class*} null : #t58.{self::Class::method}()).{self::Class::field} = new self::Class::•().{self::Class::field});
-  self::throws(() → self::Class* => c = (let final self::Class* #t59 = c in #t59.{core::Object::==}(null) ?{self::Class*} null : #t59.{self::Class::method}()).{self::Class::field} = new self::Class::•().{self::Class::field});
-  self::throws(() → self::Class* => (let final self::Class* #t60 = c in #t60.{core::Object::==}(null) ?{self::Class*} null : #t60.{self::Class::method}()).{self::Class::field} = new self::Class::•().{self::Class::field} = new self::Class::•());
-  self::throws(() → self::Class* => c = (let final self::Class* #t61 = c in #t61.{core::Object::==}(null) ?{self::Class*} null : #t61.{self::Class::method}()).{self::Class::field} = new self::Class::•().{self::Class::field} = new self::Class::•());
-  self::throws(() → self::Class* => (let final self::Class* #t62 = c in #t62.{core::Object::==}(null) ?{self::Class*} null : #t62.{self::Class::method}()).{self::Class::field} = new self::Class::•().{self::Class::method}());
-  self::throws(() → self::Class* => c = (let final self::Class* #t63 = c in #t63.{core::Object::==}(null) ?{self::Class*} null : #t63.{self::Class::method}()).{self::Class::field} = new self::Class::•().{self::Class::method}());
-  self::throws(() → self::Class* => (let final self::Class* #t64 = c in #t64.{core::Object::==}(null) ?{self::Class*} null : #t64.{self::Class::field}).{self::Class::method}().{self::Class::field});
-  self::throws(() → self::Class* => (let final self::Class* #t65 = c in #t65.{core::Object::==}(null) ?{self::Class*} null : #t65.{self::Class::field}).{self::Class::method}().{self::Class::field} = new self::Class::•());
-  self::throws(() → self::Class* => c = (let final self::Class* #t66 = c in #t66.{core::Object::==}(null) ?{self::Class*} null : #t66.{self::Class::field}).{self::Class::method}().{self::Class::field} = new self::Class::•());
-  self::throws(() → self::Class* => (let final self::Class* #t67 = c in #t67.{core::Object::==}(null) ?{self::Class*} null : #t67.{self::Class::field}).{self::Class::method}().{self::Class::method}());
-  let final self::Class* #t68 = c in #t68.{core::Object::==}(null) ?{self::Class*} null : #t68.{self::Class::field} = new self::Class::•().{self::Class::method}().{self::Class::field};
-  c = let final self::Class* #t69 = c in #t69.{core::Object::==}(null) ?{self::Class*} null : #t69.{self::Class::field} = new self::Class::•().{self::Class::method}().{self::Class::field};
-  let final self::Class* #t70 = c in #t70.{core::Object::==}(null) ?{self::Class*} null : #t70.{self::Class::field} = new self::Class::•().{self::Class::method}().{self::Class::field} = new self::Class::•();
-  c = let final self::Class* #t71 = c in #t71.{core::Object::==}(null) ?{self::Class*} null : #t71.{self::Class::field} = new self::Class::•().{self::Class::method}().{self::Class::field} = new self::Class::•();
-  let final self::Class* #t72 = c in #t72.{core::Object::==}(null) ?{self::Class*} null : #t72.{self::Class::field} = new self::Class::•().{self::Class::method}().{self::Class::method}();
-  c = let final self::Class* #t73 = c in #t73.{core::Object::==}(null) ?{self::Class*} null : #t73.{self::Class::field} = new self::Class::•().{self::Class::method}().{self::Class::method}();
-  self::throws(() → self::Class* => (let final self::Class* #t74 = c in #t74.{core::Object::==}(null) ?{self::Class*} null : #t74.{self::Class::method}()).{self::Class::method}().{self::Class::field});
-  self::throws(() → self::Class* => (let final self::Class* #t75 = c in #t75.{core::Object::==}(null) ?{self::Class*} null : #t75.{self::Class::method}()).{self::Class::method}().{self::Class::field} = new self::Class::•());
-  self::throws(() → self::Class* => (let final self::Class* #t76 = c in #t76.{core::Object::==}(null) ?{self::Class*} null : #t76.{self::Class::method}()).{self::Class::method}().{self::Class::method}());
-  let final self::Class* #t77 = let final self::Class* #t78 = c in #t78.{core::Object::==}(null) ?{self::Class*} null : #t78.{self::Class::method}() in #t77.{core::Object::==}(null) ?{self::Class*} null : #t77.{self::Class::method}();
+  let final self::Class* #t1 = c in #t1.{self::Class::==}(null) ?{self::Class*} null : #t1.{self::Class::field};
+  let final self::Class* #t2 = c in #t2.{self::Class::==}(null) ?{self::Class*} null : #t2.{self::Class::field} = new self::Class::•();
+  c = let final self::Class* #t3 = c in #t3.{self::Class::==}(null) ?{self::Class*} null : #t3.{self::Class::field} = new self::Class::•();
+  let final self::Class* #t4 = c in #t4.{self::Class::==}(null) ?{self::Class*} null : #t4.{self::Class::method}();
+  self::throws(() → self::Class* => (let final self::Class* #t5 = c in #t5.{self::Class::==}(null) ?{self::Class*} null : #t5.{self::Class::field}).{self::Class::field});
+  let final self::Class* #t6 = let final self::Class* #t7 = c in #t7.{self::Class::==}(null) ?{self::Class*} null : #t7.{self::Class::field} in #t6.{self::Class::==}(null) ?{self::Class*} null : #t6.{self::Class::field};
+  self::throws(() → self::Class* => let final self::Class* #t8 = (let final self::Class* #t9 = c in #t9.{self::Class::==}(null) ?{self::Class*} null : #t9.{self::Class::field}).{self::Class::field} in #t8.{self::Class::==}(null) ?{self::Class*} null : #t8.{self::Class::field});
+  self::throws(() → self::Class* => (let final self::Class* #t10 = c in #t10.{self::Class::==}(null) ?{self::Class*} null : #t10.{self::Class::field}).{self::Class::field} = new self::Class::•());
+  let final self::Class* #t11 = let final self::Class* #t12 = c in #t12.{self::Class::==}(null) ?{self::Class*} null : #t12.{self::Class::field} in #t11.{self::Class::==}(null) ?{self::Class*} null : #t11.{self::Class::field} = new self::Class::•();
+  self::throws(() → self::Class* => let final self::Class* #t13 = (let final self::Class* #t14 = c in #t14.{self::Class::==}(null) ?{self::Class*} null : #t14.{self::Class::field}).{self::Class::field} in #t13.{self::Class::==}(null) ?{self::Class*} null : #t13.{self::Class::field} = new self::Class::•());
+  self::throws(() → self::Class* => (let final self::Class* #t15 = c in #t15.{self::Class::==}(null) ?{self::Class*} null : #t15.{self::Class::field}).{self::Class::field});
+  self::throws(() → self::Class* => (let final self::Class* #t16 = c in #t16.{self::Class::==}(null) ?{self::Class*} null : #t16.{self::Class::field} = new self::Class::•()).{self::Class::field});
+  self::throws(() → self::Class* => (let final self::Class* #t17 = c in #t17.{self::Class::==}(null) ?{self::Class*} null : #t17.{self::Class::method}()).{self::Class::field});
+  self::throws(() → self::Class* => c = (let final self::Class* #t18 = c in #t18.{self::Class::==}(null) ?{self::Class*} null : #t18.{self::Class::field}).{self::Class::field} = new self::Class::•());
+  c = let final self::Class* #t19 = let final self::Class* #t20 = c in #t20.{self::Class::==}(null) ?{self::Class*} null : #t20.{self::Class::field} in #t19.{self::Class::==}(null) ?{self::Class*} null : #t19.{self::Class::field} = new self::Class::•();
+  self::throws(() → self::Class* => c = let final self::Class* #t21 = (let final self::Class* #t22 = c in #t22.{self::Class::==}(null) ?{self::Class*} null : #t22.{self::Class::field}).{self::Class::field} in #t21.{self::Class::==}(null) ?{self::Class*} null : #t21.{self::Class::field} = new self::Class::•());
+  self::throws(() → self::Class* => (let final self::Class* #t23 = c in #t23.{self::Class::==}(null) ?{self::Class*} null : #t23.{self::Class::field}).{self::Class::method}());
+  let final self::Class* #t24 = c in #t24.{self::Class::==}(null) ?{self::Class*} null : #t24.{self::Class::field} = new self::Class::•().{self::Class::field};
+  c = let final self::Class* #t25 = c in #t25.{self::Class::==}(null) ?{self::Class*} null : #t25.{self::Class::field} = new self::Class::•().{self::Class::field};
+  let final self::Class* #t26 = c in #t26.{self::Class::==}(null) ?{self::Class*} null : #t26.{self::Class::field} = new self::Class::•().{self::Class::field} = new self::Class::•();
+  c = let final self::Class* #t27 = c in #t27.{self::Class::==}(null) ?{self::Class*} null : #t27.{self::Class::field} = new self::Class::•().{self::Class::field} = new self::Class::•();
+  let final self::Class* #t28 = c in #t28.{self::Class::==}(null) ?{self::Class*} null : #t28.{self::Class::field} = new self::Class::•().{self::Class::method}();
+  c = let final self::Class* #t29 = c in #t29.{self::Class::==}(null) ?{self::Class*} null : #t29.{self::Class::field} = new self::Class::•().{self::Class::method}();
+  self::throws(() → self::Class* => (let final self::Class* #t30 = c in #t30.{self::Class::==}(null) ?{self::Class*} null : #t30.{self::Class::method}()).{self::Class::field});
+  self::throws(() → self::Class* => (let final self::Class* #t31 = c in #t31.{self::Class::==}(null) ?{self::Class*} null : #t31.{self::Class::method}()).{self::Class::field} = new self::Class::•());
+  self::throws(() → self::Class* => (let final self::Class* #t32 = c in #t32.{self::Class::==}(null) ?{self::Class*} null : #t32.{self::Class::method}()).{self::Class::method}());
+  self::throws(() → self::Class* => (let final self::Class* #t33 = c in #t33.{self::Class::==}(null) ?{self::Class*} null : #t33.{self::Class::field}).{self::Class::field}.{self::Class::field});
+  self::throws(() → self::Class* => (let final self::Class* #t34 = c in #t34.{self::Class::==}(null) ?{self::Class*} null : #t34.{self::Class::field}).{self::Class::field}.{self::Class::field} = new self::Class::•());
+  self::throws(() → self::Class* => c = (let final self::Class* #t35 = c in #t35.{self::Class::==}(null) ?{self::Class*} null : #t35.{self::Class::field}).{self::Class::field}.{self::Class::field} = new self::Class::•());
+  self::throws(() → self::Class* => (let final self::Class* #t36 = c in #t36.{self::Class::==}(null) ?{self::Class*} null : #t36.{self::Class::field}).{self::Class::field}.{self::Class::method}());
+  let final self::Class* #t37 = c in #t37.{self::Class::==}(null) ?{self::Class*} null : #t37.{self::Class::field} = new self::Class::•().{self::Class::field}.{self::Class::field};
+  c = let final self::Class* #t38 = c in #t38.{self::Class::==}(null) ?{self::Class*} null : #t38.{self::Class::field} = new self::Class::•().{self::Class::field}.{self::Class::field};
+  let final self::Class* #t39 = c in #t39.{self::Class::==}(null) ?{self::Class*} null : #t39.{self::Class::field} = new self::Class::•().{self::Class::field}.{self::Class::field} = new self::Class::•();
+  c = let final self::Class* #t40 = c in #t40.{self::Class::==}(null) ?{self::Class*} null : #t40.{self::Class::field} = new self::Class::•().{self::Class::field}.{self::Class::field} = new self::Class::•();
+  let final self::Class* #t41 = c in #t41.{self::Class::==}(null) ?{self::Class*} null : #t41.{self::Class::field} = new self::Class::•().{self::Class::field}.{self::Class::method}();
+  c = let final self::Class* #t42 = c in #t42.{self::Class::==}(null) ?{self::Class*} null : #t42.{self::Class::field} = new self::Class::•().{self::Class::field}.{self::Class::method}();
+  self::throws(() → self::Class* => (let final self::Class* #t43 = c in #t43.{self::Class::==}(null) ?{self::Class*} null : #t43.{self::Class::method}()).{self::Class::field}.{self::Class::field});
+  self::throws(() → self::Class* => (let final self::Class* #t44 = c in #t44.{self::Class::==}(null) ?{self::Class*} null : #t44.{self::Class::method}()).{self::Class::field}.{self::Class::field} = new self::Class::•());
+  self::throws(() → self::Class* => (let final self::Class* #t45 = c in #t45.{self::Class::==}(null) ?{self::Class*} null : #t45.{self::Class::method}()).{self::Class::field}.{self::Class::method}());
+  self::throws(() → self::Class* => (let final self::Class* #t46 = c in #t46.{self::Class::==}(null) ?{self::Class*} null : #t46.{self::Class::field}).{self::Class::field} = new self::Class::•().{self::Class::field});
+  self::throws(() → self::Class* => c = (let final self::Class* #t47 = c in #t47.{self::Class::==}(null) ?{self::Class*} null : #t47.{self::Class::field}).{self::Class::field} = new self::Class::•().{self::Class::field});
+  self::throws(() → self::Class* => (let final self::Class* #t48 = c in #t48.{self::Class::==}(null) ?{self::Class*} null : #t48.{self::Class::field}).{self::Class::field} = new self::Class::•().{self::Class::field} = new self::Class::•());
+  self::throws(() → self::Class* => c = (let final self::Class* #t49 = c in #t49.{self::Class::==}(null) ?{self::Class*} null : #t49.{self::Class::field}).{self::Class::field} = new self::Class::•().{self::Class::field} = new self::Class::•());
+  self::throws(() → self::Class* => (let final self::Class* #t50 = c in #t50.{self::Class::==}(null) ?{self::Class*} null : #t50.{self::Class::field}).{self::Class::field} = new self::Class::•().{self::Class::method}());
+  self::throws(() → self::Class* => c = (let final self::Class* #t51 = c in #t51.{self::Class::==}(null) ?{self::Class*} null : #t51.{self::Class::field}).{self::Class::field} = new self::Class::•().{self::Class::method}());
+  let final self::Class* #t52 = c in #t52.{self::Class::==}(null) ?{self::Class*} null : #t52.{self::Class::field} = new self::Class::•().{self::Class::field} = new self::Class::•().{self::Class::field};
+  c = let final self::Class* #t53 = c in #t53.{self::Class::==}(null) ?{self::Class*} null : #t53.{self::Class::field} = new self::Class::•().{self::Class::field} = new self::Class::•().{self::Class::field};
+  let final self::Class* #t54 = c in #t54.{self::Class::==}(null) ?{self::Class*} null : #t54.{self::Class::field} = new self::Class::•().{self::Class::field} = new self::Class::•().{self::Class::field} = new self::Class::•();
+  c = let final self::Class* #t55 = c in #t55.{self::Class::==}(null) ?{self::Class*} null : #t55.{self::Class::field} = new self::Class::•().{self::Class::field} = new self::Class::•().{self::Class::field} = new self::Class::•();
+  let final self::Class* #t56 = c in #t56.{self::Class::==}(null) ?{self::Class*} null : #t56.{self::Class::field} = new self::Class::•().{self::Class::field} = new self::Class::•().{self::Class::method}();
+  c = let final self::Class* #t57 = c in #t57.{self::Class::==}(null) ?{self::Class*} null : #t57.{self::Class::field} = new self::Class::•().{self::Class::field} = new self::Class::•().{self::Class::method}();
+  self::throws(() → self::Class* => (let final self::Class* #t58 = c in #t58.{self::Class::==}(null) ?{self::Class*} null : #t58.{self::Class::method}()).{self::Class::field} = new self::Class::•().{self::Class::field});
+  self::throws(() → self::Class* => c = (let final self::Class* #t59 = c in #t59.{self::Class::==}(null) ?{self::Class*} null : #t59.{self::Class::method}()).{self::Class::field} = new self::Class::•().{self::Class::field});
+  self::throws(() → self::Class* => (let final self::Class* #t60 = c in #t60.{self::Class::==}(null) ?{self::Class*} null : #t60.{self::Class::method}()).{self::Class::field} = new self::Class::•().{self::Class::field} = new self::Class::•());
+  self::throws(() → self::Class* => c = (let final self::Class* #t61 = c in #t61.{self::Class::==}(null) ?{self::Class*} null : #t61.{self::Class::method}()).{self::Class::field} = new self::Class::•().{self::Class::field} = new self::Class::•());
+  self::throws(() → self::Class* => (let final self::Class* #t62 = c in #t62.{self::Class::==}(null) ?{self::Class*} null : #t62.{self::Class::method}()).{self::Class::field} = new self::Class::•().{self::Class::method}());
+  self::throws(() → self::Class* => c = (let final self::Class* #t63 = c in #t63.{self::Class::==}(null) ?{self::Class*} null : #t63.{self::Class::method}()).{self::Class::field} = new self::Class::•().{self::Class::method}());
+  self::throws(() → self::Class* => (let final self::Class* #t64 = c in #t64.{self::Class::==}(null) ?{self::Class*} null : #t64.{self::Class::field}).{self::Class::method}().{self::Class::field});
+  self::throws(() → self::Class* => (let final self::Class* #t65 = c in #t65.{self::Class::==}(null) ?{self::Class*} null : #t65.{self::Class::field}).{self::Class::method}().{self::Class::field} = new self::Class::•());
+  self::throws(() → self::Class* => c = (let final self::Class* #t66 = c in #t66.{self::Class::==}(null) ?{self::Class*} null : #t66.{self::Class::field}).{self::Class::method}().{self::Class::field} = new self::Class::•());
+  self::throws(() → self::Class* => (let final self::Class* #t67 = c in #t67.{self::Class::==}(null) ?{self::Class*} null : #t67.{self::Class::field}).{self::Class::method}().{self::Class::method}());
+  let final self::Class* #t68 = c in #t68.{self::Class::==}(null) ?{self::Class*} null : #t68.{self::Class::field} = new self::Class::•().{self::Class::method}().{self::Class::field};
+  c = let final self::Class* #t69 = c in #t69.{self::Class::==}(null) ?{self::Class*} null : #t69.{self::Class::field} = new self::Class::•().{self::Class::method}().{self::Class::field};
+  let final self::Class* #t70 = c in #t70.{self::Class::==}(null) ?{self::Class*} null : #t70.{self::Class::field} = new self::Class::•().{self::Class::method}().{self::Class::field} = new self::Class::•();
+  c = let final self::Class* #t71 = c in #t71.{self::Class::==}(null) ?{self::Class*} null : #t71.{self::Class::field} = new self::Class::•().{self::Class::method}().{self::Class::field} = new self::Class::•();
+  let final self::Class* #t72 = c in #t72.{self::Class::==}(null) ?{self::Class*} null : #t72.{self::Class::field} = new self::Class::•().{self::Class::method}().{self::Class::method}();
+  c = let final self::Class* #t73 = c in #t73.{self::Class::==}(null) ?{self::Class*} null : #t73.{self::Class::field} = new self::Class::•().{self::Class::method}().{self::Class::method}();
+  self::throws(() → self::Class* => (let final self::Class* #t74 = c in #t74.{self::Class::==}(null) ?{self::Class*} null : #t74.{self::Class::method}()).{self::Class::method}().{self::Class::field});
+  self::throws(() → self::Class* => (let final self::Class* #t75 = c in #t75.{self::Class::==}(null) ?{self::Class*} null : #t75.{self::Class::method}()).{self::Class::method}().{self::Class::field} = new self::Class::•());
+  self::throws(() → self::Class* => (let final self::Class* #t76 = c in #t76.{self::Class::==}(null) ?{self::Class*} null : #t76.{self::Class::method}()).{self::Class::method}().{self::Class::method}());
+  let final self::Class* #t77 = let final self::Class* #t78 = c in #t78.{self::Class::==}(null) ?{self::Class*} null : #t78.{self::Class::method}() in #t77.{self::Class::==}(null) ?{self::Class*} null : #t77.{self::Class::method}();
 }
 static method indexAccess(self::Class* c) → void {
-  self::throws(() → self::Class* => (let final self::Class* #t79 = c in #t79.{core::Object::==}(null) ?{self::Class*} null : #t79.{self::Class::field}).{self::Class::[]}(c));
-  self::throws(() → self::Class* => let final self::Class* #t80 = let final self::Class* #t81 = c in #t81.{core::Object::==}(null) ?{self::Class*} null : #t81.{self::Class::field} in let final self::Class* #t82 = c in let final self::Class* #t83 = new self::Class::•() in let final void #t84 = #t80.{self::Class::[]=}(#t82, #t83) in #t83);
-  self::throws(() → self::Class* => c = let final self::Class* #t85 = let final self::Class* #t86 = c in #t86.{core::Object::==}(null) ?{self::Class*} null : #t86.{self::Class::field} in let final self::Class* #t87 = c in let final self::Class* #t88 = new self::Class::•() in let final void #t89 = #t85.{self::Class::[]=}(#t87, #t88) in #t88);
-  self::throws(() → self::Class* => (let final self::Class* #t90 = c in #t90.{core::Object::==}(null) ?{self::Class*} null : #t90.{self::Class::field}).{self::Class::[]}(c).{self::Class::method}());
-  self::throws(() → self::Class* => let final self::Class* #t91 = let final self::Class* #t92 = c in #t92.{core::Object::==}(null) ?{self::Class*} null : #t92.{self::Class::field} in let final self::Class* #t93 = c in let final self::Class* #t94 = #t91.{self::Class::[]}(#t93).{self::Class::+}(0) in let final void #t95 = #t91.{self::Class::[]=}(#t93, #t94) in #t94);
-  self::throws(() → self::Class* => c = let final self::Class* #t96 = let final self::Class* #t97 = c in #t97.{core::Object::==}(null) ?{self::Class*} null : #t97.{self::Class::field} in let final self::Class* #t98 = c in let final self::Class* #t99 = #t96.{self::Class::[]}(#t98).{self::Class::+}(0) in let final void #t100 = #t96.{self::Class::[]=}(#t98, #t99) in #t99);
-  self::throws(() → self::Class* => let final self::Class* #t101 = let final self::Class* #t102 = c in #t102.{core::Object::==}(null) ?{self::Class*} null : #t102.{self::Class::field} in let final self::Class* #t103 = c in let final self::Class* #t104 = #t101.{self::Class::[]}(#t103) in let final void #t105 = #t101.{self::Class::[]=}(#t103, #t104.{self::Class::+}(1)) in #t104);
-  self::throws(() → self::Class* => c = let final self::Class* #t106 = let final self::Class* #t107 = c in #t107.{core::Object::==}(null) ?{self::Class*} null : #t107.{self::Class::field} in let final self::Class* #t108 = c in let final self::Class* #t109 = #t106.{self::Class::[]}(#t108) in let final void #t110 = #t106.{self::Class::[]=}(#t108, #t109.{self::Class::+}(1)) in #t109);
-  self::throws(() → self::Class* => let final self::Class* #t111 = let final self::Class* #t112 = c in #t112.{core::Object::==}(null) ?{self::Class*} null : #t112.{self::Class::field} in let final self::Class* #t113 = c in let final self::Class* #t114 = #t111.{self::Class::[]}(#t113).{self::Class::+}(1) in let final void #t115 = #t111.{self::Class::[]=}(#t113, #t114) in #t114);
-  self::throws(() → self::Class* => c = let final self::Class* #t116 = let final self::Class* #t117 = c in #t117.{core::Object::==}(null) ?{self::Class*} null : #t117.{self::Class::field} in let final self::Class* #t118 = c in let final self::Class* #t119 = #t116.{self::Class::[]}(#t118).{self::Class::+}(1) in let final void #t120 = #t116.{self::Class::[]=}(#t118, #t119) in #t119);
-  self::throws(() → self::Class* => (let final self::Class* #t121 = c in #t121.{core::Object::==}(null) ?{self::Class*} null : #t121.{self::Class::field}).{self::Class::[]}(c).{self::Class::[]}(c));
-  self::throws(() → self::Class* => let final self::Class* #t122 = (let final self::Class* #t123 = c in #t123.{core::Object::==}(null) ?{self::Class*} null : #t123.{self::Class::field}).{self::Class::[]}(c) in let final self::Class* #t124 = c in let final self::Class* #t125 = new self::Class::•() in let final void #t126 = #t122.{self::Class::[]=}(#t124, #t125) in #t125);
-  self::throws(() → self::Class* => c = let final self::Class* #t127 = (let final self::Class* #t128 = c in #t128.{core::Object::==}(null) ?{self::Class*} null : #t128.{self::Class::field}).{self::Class::[]}(c) in let final self::Class* #t129 = c in let final self::Class* #t130 = new self::Class::•() in let final void #t131 = #t127.{self::Class::[]=}(#t129, #t130) in #t130);
-  self::throws(() → self::Class* => (let final self::Class* #t132 = c in #t132.{core::Object::==}(null) ?{self::Class*} null : #t132.{self::Class::field}).{self::Class::[]}(c).{self::Class::[]}(c).{self::Class::method}());
-  self::throws(() → self::Class* => let final self::Class* #t133 = (let final self::Class* #t134 = c in #t134.{core::Object::==}(null) ?{self::Class*} null : #t134.{self::Class::field}).{self::Class::[]}(c) in let final self::Class* #t135 = c in let final self::Class* #t136 = #t133.{self::Class::[]}(#t135).{self::Class::+}(0) in let final void #t137 = #t133.{self::Class::[]=}(#t135, #t136) in #t136);
-  self::throws(() → self::Class* => c = let final self::Class* #t138 = (let final self::Class* #t139 = c in #t139.{core::Object::==}(null) ?{self::Class*} null : #t139.{self::Class::field}).{self::Class::[]}(c) in let final self::Class* #t140 = c in let final self::Class* #t141 = #t138.{self::Class::[]}(#t140).{self::Class::+}(0) in let final void #t142 = #t138.{self::Class::[]=}(#t140, #t141) in #t141);
-  self::throws(() → self::Class* => let final self::Class* #t143 = (let final self::Class* #t144 = c in #t144.{core::Object::==}(null) ?{self::Class*} null : #t144.{self::Class::field}).{self::Class::[]}(c) in let final self::Class* #t145 = c in let final self::Class* #t146 = #t143.{self::Class::[]}(#t145) in let final void #t147 = #t143.{self::Class::[]=}(#t145, #t146.{self::Class::+}(1)) in #t146);
-  self::throws(() → self::Class* => c = let final self::Class* #t148 = (let final self::Class* #t149 = c in #t149.{core::Object::==}(null) ?{self::Class*} null : #t149.{self::Class::field}).{self::Class::[]}(c) in let final self::Class* #t150 = c in let final self::Class* #t151 = #t148.{self::Class::[]}(#t150) in let final void #t152 = #t148.{self::Class::[]=}(#t150, #t151.{self::Class::+}(1)) in #t151);
-  self::throws(() → self::Class* => let final self::Class* #t153 = (let final self::Class* #t154 = c in #t154.{core::Object::==}(null) ?{self::Class*} null : #t154.{self::Class::field}).{self::Class::[]}(c) in let final self::Class* #t155 = c in let final self::Class* #t156 = #t153.{self::Class::[]}(#t155).{self::Class::+}(1) in let final void #t157 = #t153.{self::Class::[]=}(#t155, #t156) in #t156);
-  self::throws(() → self::Class* => c = let final self::Class* #t158 = (let final self::Class* #t159 = c in #t159.{core::Object::==}(null) ?{self::Class*} null : #t159.{self::Class::field}).{self::Class::[]}(c) in let final self::Class* #t160 = c in let final self::Class* #t161 = #t158.{self::Class::[]}(#t160).{self::Class::+}(1) in let final void #t162 = #t158.{self::Class::[]=}(#t160, #t161) in #t161);
+  self::throws(() → self::Class* => (let final self::Class* #t79 = c in #t79.{self::Class::==}(null) ?{self::Class*} null : #t79.{self::Class::field}).{self::Class::[]}(c));
+  self::throws(() → self::Class* => let final self::Class* #t80 = let final self::Class* #t81 = c in #t81.{self::Class::==}(null) ?{self::Class*} null : #t81.{self::Class::field} in let final self::Class* #t82 = c in let final self::Class* #t83 = new self::Class::•() in let final void #t84 = #t80.{self::Class::[]=}(#t82, #t83) in #t83);
+  self::throws(() → self::Class* => c = let final self::Class* #t85 = let final self::Class* #t86 = c in #t86.{self::Class::==}(null) ?{self::Class*} null : #t86.{self::Class::field} in let final self::Class* #t87 = c in let final self::Class* #t88 = new self::Class::•() in let final void #t89 = #t85.{self::Class::[]=}(#t87, #t88) in #t88);
+  self::throws(() → self::Class* => (let final self::Class* #t90 = c in #t90.{self::Class::==}(null) ?{self::Class*} null : #t90.{self::Class::field}).{self::Class::[]}(c).{self::Class::method}());
+  self::throws(() → self::Class* => let final self::Class* #t91 = let final self::Class* #t92 = c in #t92.{self::Class::==}(null) ?{self::Class*} null : #t92.{self::Class::field} in let final self::Class* #t93 = c in let final self::Class* #t94 = #t91.{self::Class::[]}(#t93).{self::Class::+}(0) in let final void #t95 = #t91.{self::Class::[]=}(#t93, #t94) in #t94);
+  self::throws(() → self::Class* => c = let final self::Class* #t96 = let final self::Class* #t97 = c in #t97.{self::Class::==}(null) ?{self::Class*} null : #t97.{self::Class::field} in let final self::Class* #t98 = c in let final self::Class* #t99 = #t96.{self::Class::[]}(#t98).{self::Class::+}(0) in let final void #t100 = #t96.{self::Class::[]=}(#t98, #t99) in #t99);
+  self::throws(() → self::Class* => let final self::Class* #t101 = let final self::Class* #t102 = c in #t102.{self::Class::==}(null) ?{self::Class*} null : #t102.{self::Class::field} in let final self::Class* #t103 = c in let final self::Class* #t104 = #t101.{self::Class::[]}(#t103) in let final void #t105 = #t101.{self::Class::[]=}(#t103, #t104.{self::Class::+}(1)) in #t104);
+  self::throws(() → self::Class* => c = let final self::Class* #t106 = let final self::Class* #t107 = c in #t107.{self::Class::==}(null) ?{self::Class*} null : #t107.{self::Class::field} in let final self::Class* #t108 = c in let final self::Class* #t109 = #t106.{self::Class::[]}(#t108) in let final void #t110 = #t106.{self::Class::[]=}(#t108, #t109.{self::Class::+}(1)) in #t109);
+  self::throws(() → self::Class* => let final self::Class* #t111 = let final self::Class* #t112 = c in #t112.{self::Class::==}(null) ?{self::Class*} null : #t112.{self::Class::field} in let final self::Class* #t113 = c in let final self::Class* #t114 = #t111.{self::Class::[]}(#t113).{self::Class::+}(1) in let final void #t115 = #t111.{self::Class::[]=}(#t113, #t114) in #t114);
+  self::throws(() → self::Class* => c = let final self::Class* #t116 = let final self::Class* #t117 = c in #t117.{self::Class::==}(null) ?{self::Class*} null : #t117.{self::Class::field} in let final self::Class* #t118 = c in let final self::Class* #t119 = #t116.{self::Class::[]}(#t118).{self::Class::+}(1) in let final void #t120 = #t116.{self::Class::[]=}(#t118, #t119) in #t119);
+  self::throws(() → self::Class* => (let final self::Class* #t121 = c in #t121.{self::Class::==}(null) ?{self::Class*} null : #t121.{self::Class::field}).{self::Class::[]}(c).{self::Class::[]}(c));
+  self::throws(() → self::Class* => let final self::Class* #t122 = (let final self::Class* #t123 = c in #t123.{self::Class::==}(null) ?{self::Class*} null : #t123.{self::Class::field}).{self::Class::[]}(c) in let final self::Class* #t124 = c in let final self::Class* #t125 = new self::Class::•() in let final void #t126 = #t122.{self::Class::[]=}(#t124, #t125) in #t125);
+  self::throws(() → self::Class* => c = let final self::Class* #t127 = (let final self::Class* #t128 = c in #t128.{self::Class::==}(null) ?{self::Class*} null : #t128.{self::Class::field}).{self::Class::[]}(c) in let final self::Class* #t129 = c in let final self::Class* #t130 = new self::Class::•() in let final void #t131 = #t127.{self::Class::[]=}(#t129, #t130) in #t130);
+  self::throws(() → self::Class* => (let final self::Class* #t132 = c in #t132.{self::Class::==}(null) ?{self::Class*} null : #t132.{self::Class::field}).{self::Class::[]}(c).{self::Class::[]}(c).{self::Class::method}());
+  self::throws(() → self::Class* => let final self::Class* #t133 = (let final self::Class* #t134 = c in #t134.{self::Class::==}(null) ?{self::Class*} null : #t134.{self::Class::field}).{self::Class::[]}(c) in let final self::Class* #t135 = c in let final self::Class* #t136 = #t133.{self::Class::[]}(#t135).{self::Class::+}(0) in let final void #t137 = #t133.{self::Class::[]=}(#t135, #t136) in #t136);
+  self::throws(() → self::Class* => c = let final self::Class* #t138 = (let final self::Class* #t139 = c in #t139.{self::Class::==}(null) ?{self::Class*} null : #t139.{self::Class::field}).{self::Class::[]}(c) in let final self::Class* #t140 = c in let final self::Class* #t141 = #t138.{self::Class::[]}(#t140).{self::Class::+}(0) in let final void #t142 = #t138.{self::Class::[]=}(#t140, #t141) in #t141);
+  self::throws(() → self::Class* => let final self::Class* #t143 = (let final self::Class* #t144 = c in #t144.{self::Class::==}(null) ?{self::Class*} null : #t144.{self::Class::field}).{self::Class::[]}(c) in let final self::Class* #t145 = c in let final self::Class* #t146 = #t143.{self::Class::[]}(#t145) in let final void #t147 = #t143.{self::Class::[]=}(#t145, #t146.{self::Class::+}(1)) in #t146);
+  self::throws(() → self::Class* => c = let final self::Class* #t148 = (let final self::Class* #t149 = c in #t149.{self::Class::==}(null) ?{self::Class*} null : #t149.{self::Class::field}).{self::Class::[]}(c) in let final self::Class* #t150 = c in let final self::Class* #t151 = #t148.{self::Class::[]}(#t150) in let final void #t152 = #t148.{self::Class::[]=}(#t150, #t151.{self::Class::+}(1)) in #t151);
+  self::throws(() → self::Class* => let final self::Class* #t153 = (let final self::Class* #t154 = c in #t154.{self::Class::==}(null) ?{self::Class*} null : #t154.{self::Class::field}).{self::Class::[]}(c) in let final self::Class* #t155 = c in let final self::Class* #t156 = #t153.{self::Class::[]}(#t155).{self::Class::+}(1) in let final void #t157 = #t153.{self::Class::[]=}(#t155, #t156) in #t156);
+  self::throws(() → self::Class* => c = let final self::Class* #t158 = (let final self::Class* #t159 = c in #t159.{self::Class::==}(null) ?{self::Class*} null : #t159.{self::Class::field}).{self::Class::[]}(c) in let final self::Class* #t160 = c in let final self::Class* #t161 = #t158.{self::Class::[]}(#t160).{self::Class::+}(1) in let final void #t162 = #t158.{self::Class::[]=}(#t160, #t161) in #t161);
 }
 static method operatorAccess(self::Class* c) → void {
-  self::throws(() → self::Class* => (let final self::Class* #t163 = c in #t163.{core::Object::==}(null) ?{self::Class*} null : #t163.{self::Class::field}).{self::Class::+}(0));
-  self::throws(() → self::Class* => (let final self::Class* #t164 = c in #t164.{core::Object::==}(null) ?{self::Class*} null : #t164.{self::Class::field}).{self::Class::unary-}());
-  let final self::Class* #t165 = c in #t165.{core::Object::==}(null) ?{self::Class*} null : #t165.{self::Class::field} = #t165.{self::Class::field}.{self::Class::+}(0);
-  c = let final self::Class* #t166 = c in #t166.{core::Object::==}(null) ?{self::Class*} null : let final self::Class* #t167 = #t166.{self::Class::field}.{self::Class::+}(0) in let final void #t168 = #t166.{self::Class::field} = #t167 in #t167;
-  self::throws(() → self::Class* => let final self::Class* #t169 = let final self::Class* #t170 = c in #t170.{core::Object::==}(null) ?{self::Class*} null : #t170.{self::Class::field} in #t169.{self::Class::field} = #t169.{self::Class::field}.{self::Class::+}(0));
-  self::throws(() → self::Class* => c = let final self::Class* #t171 = let final self::Class* #t172 = c in #t172.{core::Object::==}(null) ?{self::Class*} null : #t172.{self::Class::field} in #t171.{self::Class::field} = #t171.{self::Class::field}.{self::Class::+}(0));
-  let final self::Class* #t173 = c in #t173.{core::Object::==}(null) ?{self::Class*} null : #t173.{self::Class::field} = #t173.{self::Class::field}.{self::Class::+}(1);
-  c = let final self::Class* #t174 = c in #t174.{core::Object::==}(null) ?{self::Class*} null : let final self::Class* #t175 = #t174.{self::Class::field} in let final void #t176 = #t174.{self::Class::field} = #t175.{self::Class::+}(1) in #t175;
-  let final self::Class* #t177 = c in #t177.{core::Object::==}(null) ?{self::Class*} null : let final self::Class* #t178 = #t177.{self::Class::field}.{self::Class::+}(1) in let final void #t179 = #t177.{self::Class::field} = #t178 in #t178;
-  c = let final self::Class* #t180 = c in #t180.{core::Object::==}(null) ?{self::Class*} null : let final self::Class* #t181 = #t180.{self::Class::field}.{self::Class::+}(1) in let final void #t182 = #t180.{self::Class::field} = #t181 in #t181;
+  self::throws(() → self::Class* => (let final self::Class* #t163 = c in #t163.{self::Class::==}(null) ?{self::Class*} null : #t163.{self::Class::field}).{self::Class::+}(0));
+  self::throws(() → self::Class* => (let final self::Class* #t164 = c in #t164.{self::Class::==}(null) ?{self::Class*} null : #t164.{self::Class::field}).{self::Class::unary-}());
+  let final self::Class* #t165 = c in #t165.{self::Class::==}(null) ?{self::Class*} null : #t165.{self::Class::field} = #t165.{self::Class::field}.{self::Class::+}(0);
+  c = let final self::Class* #t166 = c in #t166.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t167 = #t166.{self::Class::field}.{self::Class::+}(0) in let final void #t168 = #t166.{self::Class::field} = #t167 in #t167;
+  self::throws(() → self::Class* => let final self::Class* #t169 = let final self::Class* #t170 = c in #t170.{self::Class::==}(null) ?{self::Class*} null : #t170.{self::Class::field} in #t169.{self::Class::field} = #t169.{self::Class::field}.{self::Class::+}(0));
+  self::throws(() → self::Class* => c = let final self::Class* #t171 = let final self::Class* #t172 = c in #t172.{self::Class::==}(null) ?{self::Class*} null : #t172.{self::Class::field} in #t171.{self::Class::field} = #t171.{self::Class::field}.{self::Class::+}(0));
+  let final self::Class* #t173 = c in #t173.{self::Class::==}(null) ?{self::Class*} null : #t173.{self::Class::field} = #t173.{self::Class::field}.{self::Class::+}(1);
+  c = let final self::Class* #t174 = c in #t174.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t175 = #t174.{self::Class::field} in let final void #t176 = #t174.{self::Class::field} = #t175.{self::Class::+}(1) in #t175;
+  let final self::Class* #t177 = c in #t177.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t178 = #t177.{self::Class::field}.{self::Class::+}(1) in let final void #t179 = #t177.{self::Class::field} = #t178 in #t178;
+  c = let final self::Class* #t180 = c in #t180.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t181 = #t180.{self::Class::field}.{self::Class::+}(1) in let final void #t182 = #t180.{self::Class::field} = #t181 in #t181;
 }
 static method ifNull(self::Class* c) → void {
-  let final self::Class* #t183 = c in #t183.{core::Object::==}(null) ?{self::Class*} null : #t183.{self::Class::field}.{core::Object::==}(null) ?{self::Class*} #t183.{self::Class::field} = c : null;
-  c = let final self::Class* #t184 = c in #t184.{core::Object::==}(null) ?{self::Class*} null : let final self::Class* #t185 = #t184.{self::Class::field} in #t185.{core::Object::==}(null) ?{self::Class*} #t184.{self::Class::field} = c : #t185;
-  self::throws(() → self::Class* => let final self::Class* #t186 = let final self::Class* #t187 = c in #t187.{core::Object::==}(null) ?{self::Class*} null : #t187.{self::Class::field} in let final self::Class* #t188 = #t186.{self::Class::field} in #t188.{core::Object::==}(null) ?{self::Class*} #t186.{self::Class::field} = c : #t188);
-  self::throws(() → self::Class* => c = let final self::Class* #t189 = let final self::Class* #t190 = c in #t190.{core::Object::==}(null) ?{self::Class*} null : #t190.{self::Class::field} in let final self::Class* #t191 = #t189.{self::Class::field} in #t191.{core::Object::==}(null) ?{self::Class*} #t189.{self::Class::field} = c : #t191);
-  self::throws(() → self::Class* => let final self::Class* #t192 = let final self::Class* #t193 = c in #t193.{core::Object::==}(null) ?{self::Class*} null : #t193.{self::Class::field} in let final self::Class* #t194 = c in let final self::Class* #t195 = #t192.{self::Class::[]}(#t194) in #t195.{core::Object::==}(null) ?{self::Class*} let final self::Class* #t196 = c in let final void #t197 = #t192.{self::Class::[]=}(#t194, #t196) in #t196 : #t195);
-  self::throws(() → self::Class* => c = let final self::Class* #t198 = let final self::Class* #t199 = c in #t199.{core::Object::==}(null) ?{self::Class*} null : #t199.{self::Class::field} in let final self::Class* #t200 = c in let final self::Class* #t201 = #t198.{self::Class::[]}(#t200) in #t201.{core::Object::==}(null) ?{self::Class*} let final self::Class* #t202 = c in let final void #t203 = #t198.{self::Class::[]=}(#t200, #t202) in #t202 : #t201);
+  let final self::Class* #t183 = c in #t183.{self::Class::==}(null) ?{self::Class*} null : #t183.{self::Class::field}.{self::Class::==}(null) ?{self::Class*} #t183.{self::Class::field} = c : null;
+  c = let final self::Class* #t184 = c in #t184.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t185 = #t184.{self::Class::field} in #t185.{self::Class::==}(null) ?{self::Class*} #t184.{self::Class::field} = c : #t185;
+  self::throws(() → self::Class* => let final self::Class* #t186 = let final self::Class* #t187 = c in #t187.{self::Class::==}(null) ?{self::Class*} null : #t187.{self::Class::field} in let final self::Class* #t188 = #t186.{self::Class::field} in #t188.{self::Class::==}(null) ?{self::Class*} #t186.{self::Class::field} = c : #t188);
+  self::throws(() → self::Class* => c = let final self::Class* #t189 = let final self::Class* #t190 = c in #t190.{self::Class::==}(null) ?{self::Class*} null : #t190.{self::Class::field} in let final self::Class* #t191 = #t189.{self::Class::field} in #t191.{self::Class::==}(null) ?{self::Class*} #t189.{self::Class::field} = c : #t191);
+  self::throws(() → self::Class* => let final self::Class* #t192 = let final self::Class* #t193 = c in #t193.{self::Class::==}(null) ?{self::Class*} null : #t193.{self::Class::field} in let final self::Class* #t194 = c in let final self::Class* #t195 = #t192.{self::Class::[]}(#t194) in #t195.{self::Class::==}(null) ?{self::Class*} let final self::Class* #t196 = c in let final void #t197 = #t192.{self::Class::[]=}(#t194, #t196) in #t196 : #t195);
+  self::throws(() → self::Class* => c = let final self::Class* #t198 = let final self::Class* #t199 = c in #t199.{self::Class::==}(null) ?{self::Class*} null : #t199.{self::Class::field} in let final self::Class* #t200 = c in let final self::Class* #t201 = #t198.{self::Class::[]}(#t200) in #t201.{self::Class::==}(null) ?{self::Class*} let final self::Class* #t202 = c in let final void #t203 = #t198.{self::Class::[]=}(#t200, #t202) in #t202 : #t201);
 }
 static method throws(() →* void f) → void {
   try {
diff --git a/pkg/front_end/testcases/nnbd/no_null_shorting.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/no_null_shorting.dart.weak.transformed.expect
index b0d09f9..36152d8 100644
--- a/pkg/front_end/testcases/nnbd/no_null_shorting.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/no_null_shorting.dart.weak.transformed.expect
@@ -18,6 +18,16 @@
     return this.{self::Class::field};
   operator unary-() → self::Class*
     return this.{self::Class::field};
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   self::propertyAccess(null);
@@ -26,119 +36,119 @@
   self::ifNull(null);
 }
 static method propertyAccess(self::Class* c) → void {
-  let final self::Class* #t1 = c in #t1.{core::Object::==}(null) ?{self::Class*} null : #t1.{self::Class::field};
-  let final self::Class* #t2 = c in #t2.{core::Object::==}(null) ?{self::Class*} null : #t2.{self::Class::field} = new self::Class::•();
-  c = let final self::Class* #t3 = c in #t3.{core::Object::==}(null) ?{self::Class*} null : #t3.{self::Class::field} = new self::Class::•();
-  let final self::Class* #t4 = c in #t4.{core::Object::==}(null) ?{self::Class*} null : #t4.{self::Class::method}();
-  self::throws(() → self::Class* => (let final self::Class* #t5 = c in #t5.{core::Object::==}(null) ?{self::Class*} null : #t5.{self::Class::field}).{self::Class::field});
-  let final self::Class* #t6 = let final self::Class* #t7 = c in #t7.{core::Object::==}(null) ?{self::Class*} null : #t7.{self::Class::field} in #t6.{core::Object::==}(null) ?{self::Class*} null : #t6.{self::Class::field};
-  self::throws(() → self::Class* => let final self::Class* #t8 = (let final self::Class* #t9 = c in #t9.{core::Object::==}(null) ?{self::Class*} null : #t9.{self::Class::field}).{self::Class::field} in #t8.{core::Object::==}(null) ?{self::Class*} null : #t8.{self::Class::field});
-  self::throws(() → self::Class* => (let final self::Class* #t10 = c in #t10.{core::Object::==}(null) ?{self::Class*} null : #t10.{self::Class::field}).{self::Class::field} = new self::Class::•());
-  let final self::Class* #t11 = let final self::Class* #t12 = c in #t12.{core::Object::==}(null) ?{self::Class*} null : #t12.{self::Class::field} in #t11.{core::Object::==}(null) ?{self::Class*} null : #t11.{self::Class::field} = new self::Class::•();
-  self::throws(() → self::Class* => let final self::Class* #t13 = (let final self::Class* #t14 = c in #t14.{core::Object::==}(null) ?{self::Class*} null : #t14.{self::Class::field}).{self::Class::field} in #t13.{core::Object::==}(null) ?{self::Class*} null : #t13.{self::Class::field} = new self::Class::•());
-  self::throws(() → self::Class* => (let final self::Class* #t15 = c in #t15.{core::Object::==}(null) ?{self::Class*} null : #t15.{self::Class::field}).{self::Class::field});
-  self::throws(() → self::Class* => (let final self::Class* #t16 = c in #t16.{core::Object::==}(null) ?{self::Class*} null : #t16.{self::Class::field} = new self::Class::•()).{self::Class::field});
-  self::throws(() → self::Class* => (let final self::Class* #t17 = c in #t17.{core::Object::==}(null) ?{self::Class*} null : #t17.{self::Class::method}()).{self::Class::field});
-  self::throws(() → self::Class* => c = (let final self::Class* #t18 = c in #t18.{core::Object::==}(null) ?{self::Class*} null : #t18.{self::Class::field}).{self::Class::field} = new self::Class::•());
-  c = let final self::Class* #t19 = let final self::Class* #t20 = c in #t20.{core::Object::==}(null) ?{self::Class*} null : #t20.{self::Class::field} in #t19.{core::Object::==}(null) ?{self::Class*} null : #t19.{self::Class::field} = new self::Class::•();
-  self::throws(() → self::Class* => c = let final self::Class* #t21 = (let final self::Class* #t22 = c in #t22.{core::Object::==}(null) ?{self::Class*} null : #t22.{self::Class::field}).{self::Class::field} in #t21.{core::Object::==}(null) ?{self::Class*} null : #t21.{self::Class::field} = new self::Class::•());
-  self::throws(() → self::Class* => (let final self::Class* #t23 = c in #t23.{core::Object::==}(null) ?{self::Class*} null : #t23.{self::Class::field}).{self::Class::method}());
-  let final self::Class* #t24 = c in #t24.{core::Object::==}(null) ?{self::Class*} null : #t24.{self::Class::field} = new self::Class::•().{self::Class::field};
-  c = let final self::Class* #t25 = c in #t25.{core::Object::==}(null) ?{self::Class*} null : #t25.{self::Class::field} = new self::Class::•().{self::Class::field};
-  let final self::Class* #t26 = c in #t26.{core::Object::==}(null) ?{self::Class*} null : #t26.{self::Class::field} = new self::Class::•().{self::Class::field} = new self::Class::•();
-  c = let final self::Class* #t27 = c in #t27.{core::Object::==}(null) ?{self::Class*} null : #t27.{self::Class::field} = new self::Class::•().{self::Class::field} = new self::Class::•();
-  let final self::Class* #t28 = c in #t28.{core::Object::==}(null) ?{self::Class*} null : #t28.{self::Class::field} = new self::Class::•().{self::Class::method}();
-  c = let final self::Class* #t29 = c in #t29.{core::Object::==}(null) ?{self::Class*} null : #t29.{self::Class::field} = new self::Class::•().{self::Class::method}();
-  self::throws(() → self::Class* => (let final self::Class* #t30 = c in #t30.{core::Object::==}(null) ?{self::Class*} null : #t30.{self::Class::method}()).{self::Class::field});
-  self::throws(() → self::Class* => (let final self::Class* #t31 = c in #t31.{core::Object::==}(null) ?{self::Class*} null : #t31.{self::Class::method}()).{self::Class::field} = new self::Class::•());
-  self::throws(() → self::Class* => (let final self::Class* #t32 = c in #t32.{core::Object::==}(null) ?{self::Class*} null : #t32.{self::Class::method}()).{self::Class::method}());
-  self::throws(() → self::Class* => (let final self::Class* #t33 = c in #t33.{core::Object::==}(null) ?{self::Class*} null : #t33.{self::Class::field}).{self::Class::field}.{self::Class::field});
-  self::throws(() → self::Class* => (let final self::Class* #t34 = c in #t34.{core::Object::==}(null) ?{self::Class*} null : #t34.{self::Class::field}).{self::Class::field}.{self::Class::field} = new self::Class::•());
-  self::throws(() → self::Class* => c = (let final self::Class* #t35 = c in #t35.{core::Object::==}(null) ?{self::Class*} null : #t35.{self::Class::field}).{self::Class::field}.{self::Class::field} = new self::Class::•());
-  self::throws(() → self::Class* => (let final self::Class* #t36 = c in #t36.{core::Object::==}(null) ?{self::Class*} null : #t36.{self::Class::field}).{self::Class::field}.{self::Class::method}());
-  let final self::Class* #t37 = c in #t37.{core::Object::==}(null) ?{self::Class*} null : #t37.{self::Class::field} = new self::Class::•().{self::Class::field}.{self::Class::field};
-  c = let final self::Class* #t38 = c in #t38.{core::Object::==}(null) ?{self::Class*} null : #t38.{self::Class::field} = new self::Class::•().{self::Class::field}.{self::Class::field};
-  let final self::Class* #t39 = c in #t39.{core::Object::==}(null) ?{self::Class*} null : #t39.{self::Class::field} = new self::Class::•().{self::Class::field}.{self::Class::field} = new self::Class::•();
-  c = let final self::Class* #t40 = c in #t40.{core::Object::==}(null) ?{self::Class*} null : #t40.{self::Class::field} = new self::Class::•().{self::Class::field}.{self::Class::field} = new self::Class::•();
-  let final self::Class* #t41 = c in #t41.{core::Object::==}(null) ?{self::Class*} null : #t41.{self::Class::field} = new self::Class::•().{self::Class::field}.{self::Class::method}();
-  c = let final self::Class* #t42 = c in #t42.{core::Object::==}(null) ?{self::Class*} null : #t42.{self::Class::field} = new self::Class::•().{self::Class::field}.{self::Class::method}();
-  self::throws(() → self::Class* => (let final self::Class* #t43 = c in #t43.{core::Object::==}(null) ?{self::Class*} null : #t43.{self::Class::method}()).{self::Class::field}.{self::Class::field});
-  self::throws(() → self::Class* => (let final self::Class* #t44 = c in #t44.{core::Object::==}(null) ?{self::Class*} null : #t44.{self::Class::method}()).{self::Class::field}.{self::Class::field} = new self::Class::•());
-  self::throws(() → self::Class* => (let final self::Class* #t45 = c in #t45.{core::Object::==}(null) ?{self::Class*} null : #t45.{self::Class::method}()).{self::Class::field}.{self::Class::method}());
-  self::throws(() → self::Class* => (let final self::Class* #t46 = c in #t46.{core::Object::==}(null) ?{self::Class*} null : #t46.{self::Class::field}).{self::Class::field} = new self::Class::•().{self::Class::field});
-  self::throws(() → self::Class* => c = (let final self::Class* #t47 = c in #t47.{core::Object::==}(null) ?{self::Class*} null : #t47.{self::Class::field}).{self::Class::field} = new self::Class::•().{self::Class::field});
-  self::throws(() → self::Class* => (let final self::Class* #t48 = c in #t48.{core::Object::==}(null) ?{self::Class*} null : #t48.{self::Class::field}).{self::Class::field} = new self::Class::•().{self::Class::field} = new self::Class::•());
-  self::throws(() → self::Class* => c = (let final self::Class* #t49 = c in #t49.{core::Object::==}(null) ?{self::Class*} null : #t49.{self::Class::field}).{self::Class::field} = new self::Class::•().{self::Class::field} = new self::Class::•());
-  self::throws(() → self::Class* => (let final self::Class* #t50 = c in #t50.{core::Object::==}(null) ?{self::Class*} null : #t50.{self::Class::field}).{self::Class::field} = new self::Class::•().{self::Class::method}());
-  self::throws(() → self::Class* => c = (let final self::Class* #t51 = c in #t51.{core::Object::==}(null) ?{self::Class*} null : #t51.{self::Class::field}).{self::Class::field} = new self::Class::•().{self::Class::method}());
-  let final self::Class* #t52 = c in #t52.{core::Object::==}(null) ?{self::Class*} null : #t52.{self::Class::field} = new self::Class::•().{self::Class::field} = new self::Class::•().{self::Class::field};
-  c = let final self::Class* #t53 = c in #t53.{core::Object::==}(null) ?{self::Class*} null : #t53.{self::Class::field} = new self::Class::•().{self::Class::field} = new self::Class::•().{self::Class::field};
-  let final self::Class* #t54 = c in #t54.{core::Object::==}(null) ?{self::Class*} null : #t54.{self::Class::field} = new self::Class::•().{self::Class::field} = new self::Class::•().{self::Class::field} = new self::Class::•();
-  c = let final self::Class* #t55 = c in #t55.{core::Object::==}(null) ?{self::Class*} null : #t55.{self::Class::field} = new self::Class::•().{self::Class::field} = new self::Class::•().{self::Class::field} = new self::Class::•();
-  let final self::Class* #t56 = c in #t56.{core::Object::==}(null) ?{self::Class*} null : #t56.{self::Class::field} = new self::Class::•().{self::Class::field} = new self::Class::•().{self::Class::method}();
-  c = let final self::Class* #t57 = c in #t57.{core::Object::==}(null) ?{self::Class*} null : #t57.{self::Class::field} = new self::Class::•().{self::Class::field} = new self::Class::•().{self::Class::method}();
-  self::throws(() → self::Class* => (let final self::Class* #t58 = c in #t58.{core::Object::==}(null) ?{self::Class*} null : #t58.{self::Class::method}()).{self::Class::field} = new self::Class::•().{self::Class::field});
-  self::throws(() → self::Class* => c = (let final self::Class* #t59 = c in #t59.{core::Object::==}(null) ?{self::Class*} null : #t59.{self::Class::method}()).{self::Class::field} = new self::Class::•().{self::Class::field});
-  self::throws(() → self::Class* => (let final self::Class* #t60 = c in #t60.{core::Object::==}(null) ?{self::Class*} null : #t60.{self::Class::method}()).{self::Class::field} = new self::Class::•().{self::Class::field} = new self::Class::•());
-  self::throws(() → self::Class* => c = (let final self::Class* #t61 = c in #t61.{core::Object::==}(null) ?{self::Class*} null : #t61.{self::Class::method}()).{self::Class::field} = new self::Class::•().{self::Class::field} = new self::Class::•());
-  self::throws(() → self::Class* => (let final self::Class* #t62 = c in #t62.{core::Object::==}(null) ?{self::Class*} null : #t62.{self::Class::method}()).{self::Class::field} = new self::Class::•().{self::Class::method}());
-  self::throws(() → self::Class* => c = (let final self::Class* #t63 = c in #t63.{core::Object::==}(null) ?{self::Class*} null : #t63.{self::Class::method}()).{self::Class::field} = new self::Class::•().{self::Class::method}());
-  self::throws(() → self::Class* => (let final self::Class* #t64 = c in #t64.{core::Object::==}(null) ?{self::Class*} null : #t64.{self::Class::field}).{self::Class::method}().{self::Class::field});
-  self::throws(() → self::Class* => (let final self::Class* #t65 = c in #t65.{core::Object::==}(null) ?{self::Class*} null : #t65.{self::Class::field}).{self::Class::method}().{self::Class::field} = new self::Class::•());
-  self::throws(() → self::Class* => c = (let final self::Class* #t66 = c in #t66.{core::Object::==}(null) ?{self::Class*} null : #t66.{self::Class::field}).{self::Class::method}().{self::Class::field} = new self::Class::•());
-  self::throws(() → self::Class* => (let final self::Class* #t67 = c in #t67.{core::Object::==}(null) ?{self::Class*} null : #t67.{self::Class::field}).{self::Class::method}().{self::Class::method}());
-  let final self::Class* #t68 = c in #t68.{core::Object::==}(null) ?{self::Class*} null : #t68.{self::Class::field} = new self::Class::•().{self::Class::method}().{self::Class::field};
-  c = let final self::Class* #t69 = c in #t69.{core::Object::==}(null) ?{self::Class*} null : #t69.{self::Class::field} = new self::Class::•().{self::Class::method}().{self::Class::field};
-  let final self::Class* #t70 = c in #t70.{core::Object::==}(null) ?{self::Class*} null : #t70.{self::Class::field} = new self::Class::•().{self::Class::method}().{self::Class::field} = new self::Class::•();
-  c = let final self::Class* #t71 = c in #t71.{core::Object::==}(null) ?{self::Class*} null : #t71.{self::Class::field} = new self::Class::•().{self::Class::method}().{self::Class::field} = new self::Class::•();
-  let final self::Class* #t72 = c in #t72.{core::Object::==}(null) ?{self::Class*} null : #t72.{self::Class::field} = new self::Class::•().{self::Class::method}().{self::Class::method}();
-  c = let final self::Class* #t73 = c in #t73.{core::Object::==}(null) ?{self::Class*} null : #t73.{self::Class::field} = new self::Class::•().{self::Class::method}().{self::Class::method}();
-  self::throws(() → self::Class* => (let final self::Class* #t74 = c in #t74.{core::Object::==}(null) ?{self::Class*} null : #t74.{self::Class::method}()).{self::Class::method}().{self::Class::field});
-  self::throws(() → self::Class* => (let final self::Class* #t75 = c in #t75.{core::Object::==}(null) ?{self::Class*} null : #t75.{self::Class::method}()).{self::Class::method}().{self::Class::field} = new self::Class::•());
-  self::throws(() → self::Class* => (let final self::Class* #t76 = c in #t76.{core::Object::==}(null) ?{self::Class*} null : #t76.{self::Class::method}()).{self::Class::method}().{self::Class::method}());
-  let final self::Class* #t77 = let final self::Class* #t78 = c in #t78.{core::Object::==}(null) ?{self::Class*} null : #t78.{self::Class::method}() in #t77.{core::Object::==}(null) ?{self::Class*} null : #t77.{self::Class::method}();
+  let final self::Class* #t1 = c in #t1.{self::Class::==}(null) ?{self::Class*} null : #t1.{self::Class::field};
+  let final self::Class* #t2 = c in #t2.{self::Class::==}(null) ?{self::Class*} null : #t2.{self::Class::field} = new self::Class::•();
+  c = let final self::Class* #t3 = c in #t3.{self::Class::==}(null) ?{self::Class*} null : #t3.{self::Class::field} = new self::Class::•();
+  let final self::Class* #t4 = c in #t4.{self::Class::==}(null) ?{self::Class*} null : #t4.{self::Class::method}();
+  self::throws(() → self::Class* => (let final self::Class* #t5 = c in #t5.{self::Class::==}(null) ?{self::Class*} null : #t5.{self::Class::field}).{self::Class::field});
+  let final self::Class* #t6 = let final self::Class* #t7 = c in #t7.{self::Class::==}(null) ?{self::Class*} null : #t7.{self::Class::field} in #t6.{self::Class::==}(null) ?{self::Class*} null : #t6.{self::Class::field};
+  self::throws(() → self::Class* => let final self::Class* #t8 = (let final self::Class* #t9 = c in #t9.{self::Class::==}(null) ?{self::Class*} null : #t9.{self::Class::field}).{self::Class::field} in #t8.{self::Class::==}(null) ?{self::Class*} null : #t8.{self::Class::field});
+  self::throws(() → self::Class* => (let final self::Class* #t10 = c in #t10.{self::Class::==}(null) ?{self::Class*} null : #t10.{self::Class::field}).{self::Class::field} = new self::Class::•());
+  let final self::Class* #t11 = let final self::Class* #t12 = c in #t12.{self::Class::==}(null) ?{self::Class*} null : #t12.{self::Class::field} in #t11.{self::Class::==}(null) ?{self::Class*} null : #t11.{self::Class::field} = new self::Class::•();
+  self::throws(() → self::Class* => let final self::Class* #t13 = (let final self::Class* #t14 = c in #t14.{self::Class::==}(null) ?{self::Class*} null : #t14.{self::Class::field}).{self::Class::field} in #t13.{self::Class::==}(null) ?{self::Class*} null : #t13.{self::Class::field} = new self::Class::•());
+  self::throws(() → self::Class* => (let final self::Class* #t15 = c in #t15.{self::Class::==}(null) ?{self::Class*} null : #t15.{self::Class::field}).{self::Class::field});
+  self::throws(() → self::Class* => (let final self::Class* #t16 = c in #t16.{self::Class::==}(null) ?{self::Class*} null : #t16.{self::Class::field} = new self::Class::•()).{self::Class::field});
+  self::throws(() → self::Class* => (let final self::Class* #t17 = c in #t17.{self::Class::==}(null) ?{self::Class*} null : #t17.{self::Class::method}()).{self::Class::field});
+  self::throws(() → self::Class* => c = (let final self::Class* #t18 = c in #t18.{self::Class::==}(null) ?{self::Class*} null : #t18.{self::Class::field}).{self::Class::field} = new self::Class::•());
+  c = let final self::Class* #t19 = let final self::Class* #t20 = c in #t20.{self::Class::==}(null) ?{self::Class*} null : #t20.{self::Class::field} in #t19.{self::Class::==}(null) ?{self::Class*} null : #t19.{self::Class::field} = new self::Class::•();
+  self::throws(() → self::Class* => c = let final self::Class* #t21 = (let final self::Class* #t22 = c in #t22.{self::Class::==}(null) ?{self::Class*} null : #t22.{self::Class::field}).{self::Class::field} in #t21.{self::Class::==}(null) ?{self::Class*} null : #t21.{self::Class::field} = new self::Class::•());
+  self::throws(() → self::Class* => (let final self::Class* #t23 = c in #t23.{self::Class::==}(null) ?{self::Class*} null : #t23.{self::Class::field}).{self::Class::method}());
+  let final self::Class* #t24 = c in #t24.{self::Class::==}(null) ?{self::Class*} null : #t24.{self::Class::field} = new self::Class::•().{self::Class::field};
+  c = let final self::Class* #t25 = c in #t25.{self::Class::==}(null) ?{self::Class*} null : #t25.{self::Class::field} = new self::Class::•().{self::Class::field};
+  let final self::Class* #t26 = c in #t26.{self::Class::==}(null) ?{self::Class*} null : #t26.{self::Class::field} = new self::Class::•().{self::Class::field} = new self::Class::•();
+  c = let final self::Class* #t27 = c in #t27.{self::Class::==}(null) ?{self::Class*} null : #t27.{self::Class::field} = new self::Class::•().{self::Class::field} = new self::Class::•();
+  let final self::Class* #t28 = c in #t28.{self::Class::==}(null) ?{self::Class*} null : #t28.{self::Class::field} = new self::Class::•().{self::Class::method}();
+  c = let final self::Class* #t29 = c in #t29.{self::Class::==}(null) ?{self::Class*} null : #t29.{self::Class::field} = new self::Class::•().{self::Class::method}();
+  self::throws(() → self::Class* => (let final self::Class* #t30 = c in #t30.{self::Class::==}(null) ?{self::Class*} null : #t30.{self::Class::method}()).{self::Class::field});
+  self::throws(() → self::Class* => (let final self::Class* #t31 = c in #t31.{self::Class::==}(null) ?{self::Class*} null : #t31.{self::Class::method}()).{self::Class::field} = new self::Class::•());
+  self::throws(() → self::Class* => (let final self::Class* #t32 = c in #t32.{self::Class::==}(null) ?{self::Class*} null : #t32.{self::Class::method}()).{self::Class::method}());
+  self::throws(() → self::Class* => (let final self::Class* #t33 = c in #t33.{self::Class::==}(null) ?{self::Class*} null : #t33.{self::Class::field}).{self::Class::field}.{self::Class::field});
+  self::throws(() → self::Class* => (let final self::Class* #t34 = c in #t34.{self::Class::==}(null) ?{self::Class*} null : #t34.{self::Class::field}).{self::Class::field}.{self::Class::field} = new self::Class::•());
+  self::throws(() → self::Class* => c = (let final self::Class* #t35 = c in #t35.{self::Class::==}(null) ?{self::Class*} null : #t35.{self::Class::field}).{self::Class::field}.{self::Class::field} = new self::Class::•());
+  self::throws(() → self::Class* => (let final self::Class* #t36 = c in #t36.{self::Class::==}(null) ?{self::Class*} null : #t36.{self::Class::field}).{self::Class::field}.{self::Class::method}());
+  let final self::Class* #t37 = c in #t37.{self::Class::==}(null) ?{self::Class*} null : #t37.{self::Class::field} = new self::Class::•().{self::Class::field}.{self::Class::field};
+  c = let final self::Class* #t38 = c in #t38.{self::Class::==}(null) ?{self::Class*} null : #t38.{self::Class::field} = new self::Class::•().{self::Class::field}.{self::Class::field};
+  let final self::Class* #t39 = c in #t39.{self::Class::==}(null) ?{self::Class*} null : #t39.{self::Class::field} = new self::Class::•().{self::Class::field}.{self::Class::field} = new self::Class::•();
+  c = let final self::Class* #t40 = c in #t40.{self::Class::==}(null) ?{self::Class*} null : #t40.{self::Class::field} = new self::Class::•().{self::Class::field}.{self::Class::field} = new self::Class::•();
+  let final self::Class* #t41 = c in #t41.{self::Class::==}(null) ?{self::Class*} null : #t41.{self::Class::field} = new self::Class::•().{self::Class::field}.{self::Class::method}();
+  c = let final self::Class* #t42 = c in #t42.{self::Class::==}(null) ?{self::Class*} null : #t42.{self::Class::field} = new self::Class::•().{self::Class::field}.{self::Class::method}();
+  self::throws(() → self::Class* => (let final self::Class* #t43 = c in #t43.{self::Class::==}(null) ?{self::Class*} null : #t43.{self::Class::method}()).{self::Class::field}.{self::Class::field});
+  self::throws(() → self::Class* => (let final self::Class* #t44 = c in #t44.{self::Class::==}(null) ?{self::Class*} null : #t44.{self::Class::method}()).{self::Class::field}.{self::Class::field} = new self::Class::•());
+  self::throws(() → self::Class* => (let final self::Class* #t45 = c in #t45.{self::Class::==}(null) ?{self::Class*} null : #t45.{self::Class::method}()).{self::Class::field}.{self::Class::method}());
+  self::throws(() → self::Class* => (let final self::Class* #t46 = c in #t46.{self::Class::==}(null) ?{self::Class*} null : #t46.{self::Class::field}).{self::Class::field} = new self::Class::•().{self::Class::field});
+  self::throws(() → self::Class* => c = (let final self::Class* #t47 = c in #t47.{self::Class::==}(null) ?{self::Class*} null : #t47.{self::Class::field}).{self::Class::field} = new self::Class::•().{self::Class::field});
+  self::throws(() → self::Class* => (let final self::Class* #t48 = c in #t48.{self::Class::==}(null) ?{self::Class*} null : #t48.{self::Class::field}).{self::Class::field} = new self::Class::•().{self::Class::field} = new self::Class::•());
+  self::throws(() → self::Class* => c = (let final self::Class* #t49 = c in #t49.{self::Class::==}(null) ?{self::Class*} null : #t49.{self::Class::field}).{self::Class::field} = new self::Class::•().{self::Class::field} = new self::Class::•());
+  self::throws(() → self::Class* => (let final self::Class* #t50 = c in #t50.{self::Class::==}(null) ?{self::Class*} null : #t50.{self::Class::field}).{self::Class::field} = new self::Class::•().{self::Class::method}());
+  self::throws(() → self::Class* => c = (let final self::Class* #t51 = c in #t51.{self::Class::==}(null) ?{self::Class*} null : #t51.{self::Class::field}).{self::Class::field} = new self::Class::•().{self::Class::method}());
+  let final self::Class* #t52 = c in #t52.{self::Class::==}(null) ?{self::Class*} null : #t52.{self::Class::field} = new self::Class::•().{self::Class::field} = new self::Class::•().{self::Class::field};
+  c = let final self::Class* #t53 = c in #t53.{self::Class::==}(null) ?{self::Class*} null : #t53.{self::Class::field} = new self::Class::•().{self::Class::field} = new self::Class::•().{self::Class::field};
+  let final self::Class* #t54 = c in #t54.{self::Class::==}(null) ?{self::Class*} null : #t54.{self::Class::field} = new self::Class::•().{self::Class::field} = new self::Class::•().{self::Class::field} = new self::Class::•();
+  c = let final self::Class* #t55 = c in #t55.{self::Class::==}(null) ?{self::Class*} null : #t55.{self::Class::field} = new self::Class::•().{self::Class::field} = new self::Class::•().{self::Class::field} = new self::Class::•();
+  let final self::Class* #t56 = c in #t56.{self::Class::==}(null) ?{self::Class*} null : #t56.{self::Class::field} = new self::Class::•().{self::Class::field} = new self::Class::•().{self::Class::method}();
+  c = let final self::Class* #t57 = c in #t57.{self::Class::==}(null) ?{self::Class*} null : #t57.{self::Class::field} = new self::Class::•().{self::Class::field} = new self::Class::•().{self::Class::method}();
+  self::throws(() → self::Class* => (let final self::Class* #t58 = c in #t58.{self::Class::==}(null) ?{self::Class*} null : #t58.{self::Class::method}()).{self::Class::field} = new self::Class::•().{self::Class::field});
+  self::throws(() → self::Class* => c = (let final self::Class* #t59 = c in #t59.{self::Class::==}(null) ?{self::Class*} null : #t59.{self::Class::method}()).{self::Class::field} = new self::Class::•().{self::Class::field});
+  self::throws(() → self::Class* => (let final self::Class* #t60 = c in #t60.{self::Class::==}(null) ?{self::Class*} null : #t60.{self::Class::method}()).{self::Class::field} = new self::Class::•().{self::Class::field} = new self::Class::•());
+  self::throws(() → self::Class* => c = (let final self::Class* #t61 = c in #t61.{self::Class::==}(null) ?{self::Class*} null : #t61.{self::Class::method}()).{self::Class::field} = new self::Class::•().{self::Class::field} = new self::Class::•());
+  self::throws(() → self::Class* => (let final self::Class* #t62 = c in #t62.{self::Class::==}(null) ?{self::Class*} null : #t62.{self::Class::method}()).{self::Class::field} = new self::Class::•().{self::Class::method}());
+  self::throws(() → self::Class* => c = (let final self::Class* #t63 = c in #t63.{self::Class::==}(null) ?{self::Class*} null : #t63.{self::Class::method}()).{self::Class::field} = new self::Class::•().{self::Class::method}());
+  self::throws(() → self::Class* => (let final self::Class* #t64 = c in #t64.{self::Class::==}(null) ?{self::Class*} null : #t64.{self::Class::field}).{self::Class::method}().{self::Class::field});
+  self::throws(() → self::Class* => (let final self::Class* #t65 = c in #t65.{self::Class::==}(null) ?{self::Class*} null : #t65.{self::Class::field}).{self::Class::method}().{self::Class::field} = new self::Class::•());
+  self::throws(() → self::Class* => c = (let final self::Class* #t66 = c in #t66.{self::Class::==}(null) ?{self::Class*} null : #t66.{self::Class::field}).{self::Class::method}().{self::Class::field} = new self::Class::•());
+  self::throws(() → self::Class* => (let final self::Class* #t67 = c in #t67.{self::Class::==}(null) ?{self::Class*} null : #t67.{self::Class::field}).{self::Class::method}().{self::Class::method}());
+  let final self::Class* #t68 = c in #t68.{self::Class::==}(null) ?{self::Class*} null : #t68.{self::Class::field} = new self::Class::•().{self::Class::method}().{self::Class::field};
+  c = let final self::Class* #t69 = c in #t69.{self::Class::==}(null) ?{self::Class*} null : #t69.{self::Class::field} = new self::Class::•().{self::Class::method}().{self::Class::field};
+  let final self::Class* #t70 = c in #t70.{self::Class::==}(null) ?{self::Class*} null : #t70.{self::Class::field} = new self::Class::•().{self::Class::method}().{self::Class::field} = new self::Class::•();
+  c = let final self::Class* #t71 = c in #t71.{self::Class::==}(null) ?{self::Class*} null : #t71.{self::Class::field} = new self::Class::•().{self::Class::method}().{self::Class::field} = new self::Class::•();
+  let final self::Class* #t72 = c in #t72.{self::Class::==}(null) ?{self::Class*} null : #t72.{self::Class::field} = new self::Class::•().{self::Class::method}().{self::Class::method}();
+  c = let final self::Class* #t73 = c in #t73.{self::Class::==}(null) ?{self::Class*} null : #t73.{self::Class::field} = new self::Class::•().{self::Class::method}().{self::Class::method}();
+  self::throws(() → self::Class* => (let final self::Class* #t74 = c in #t74.{self::Class::==}(null) ?{self::Class*} null : #t74.{self::Class::method}()).{self::Class::method}().{self::Class::field});
+  self::throws(() → self::Class* => (let final self::Class* #t75 = c in #t75.{self::Class::==}(null) ?{self::Class*} null : #t75.{self::Class::method}()).{self::Class::method}().{self::Class::field} = new self::Class::•());
+  self::throws(() → self::Class* => (let final self::Class* #t76 = c in #t76.{self::Class::==}(null) ?{self::Class*} null : #t76.{self::Class::method}()).{self::Class::method}().{self::Class::method}());
+  let final self::Class* #t77 = let final self::Class* #t78 = c in #t78.{self::Class::==}(null) ?{self::Class*} null : #t78.{self::Class::method}() in #t77.{self::Class::==}(null) ?{self::Class*} null : #t77.{self::Class::method}();
 }
 static method indexAccess(self::Class* c) → void {
-  self::throws(() → self::Class* => (let final self::Class* #t79 = c in #t79.{core::Object::==}(null) ?{self::Class*} null : #t79.{self::Class::field}).{self::Class::[]}(c));
-  self::throws(() → self::Class* => let final self::Class* #t80 = let final self::Class* #t81 = c in #t81.{core::Object::==}(null) ?{self::Class*} null : #t81.{self::Class::field} in let final self::Class* #t82 = c in let final self::Class* #t83 = new self::Class::•() in let final void #t84 = #t80.{self::Class::[]=}(#t82, #t83) in #t83);
-  self::throws(() → self::Class* => c = let final self::Class* #t85 = let final self::Class* #t86 = c in #t86.{core::Object::==}(null) ?{self::Class*} null : #t86.{self::Class::field} in let final self::Class* #t87 = c in let final self::Class* #t88 = new self::Class::•() in let final void #t89 = #t85.{self::Class::[]=}(#t87, #t88) in #t88);
-  self::throws(() → self::Class* => (let final self::Class* #t90 = c in #t90.{core::Object::==}(null) ?{self::Class*} null : #t90.{self::Class::field}).{self::Class::[]}(c).{self::Class::method}());
-  self::throws(() → self::Class* => let final self::Class* #t91 = let final self::Class* #t92 = c in #t92.{core::Object::==}(null) ?{self::Class*} null : #t92.{self::Class::field} in let final self::Class* #t93 = c in let final self::Class* #t94 = #t91.{self::Class::[]}(#t93).{self::Class::+}(0) in let final void #t95 = #t91.{self::Class::[]=}(#t93, #t94) in #t94);
-  self::throws(() → self::Class* => c = let final self::Class* #t96 = let final self::Class* #t97 = c in #t97.{core::Object::==}(null) ?{self::Class*} null : #t97.{self::Class::field} in let final self::Class* #t98 = c in let final self::Class* #t99 = #t96.{self::Class::[]}(#t98).{self::Class::+}(0) in let final void #t100 = #t96.{self::Class::[]=}(#t98, #t99) in #t99);
-  self::throws(() → self::Class* => let final self::Class* #t101 = let final self::Class* #t102 = c in #t102.{core::Object::==}(null) ?{self::Class*} null : #t102.{self::Class::field} in let final self::Class* #t103 = c in let final self::Class* #t104 = #t101.{self::Class::[]}(#t103) in let final void #t105 = #t101.{self::Class::[]=}(#t103, #t104.{self::Class::+}(1)) in #t104);
-  self::throws(() → self::Class* => c = let final self::Class* #t106 = let final self::Class* #t107 = c in #t107.{core::Object::==}(null) ?{self::Class*} null : #t107.{self::Class::field} in let final self::Class* #t108 = c in let final self::Class* #t109 = #t106.{self::Class::[]}(#t108) in let final void #t110 = #t106.{self::Class::[]=}(#t108, #t109.{self::Class::+}(1)) in #t109);
-  self::throws(() → self::Class* => let final self::Class* #t111 = let final self::Class* #t112 = c in #t112.{core::Object::==}(null) ?{self::Class*} null : #t112.{self::Class::field} in let final self::Class* #t113 = c in let final self::Class* #t114 = #t111.{self::Class::[]}(#t113).{self::Class::+}(1) in let final void #t115 = #t111.{self::Class::[]=}(#t113, #t114) in #t114);
-  self::throws(() → self::Class* => c = let final self::Class* #t116 = let final self::Class* #t117 = c in #t117.{core::Object::==}(null) ?{self::Class*} null : #t117.{self::Class::field} in let final self::Class* #t118 = c in let final self::Class* #t119 = #t116.{self::Class::[]}(#t118).{self::Class::+}(1) in let final void #t120 = #t116.{self::Class::[]=}(#t118, #t119) in #t119);
-  self::throws(() → self::Class* => (let final self::Class* #t121 = c in #t121.{core::Object::==}(null) ?{self::Class*} null : #t121.{self::Class::field}).{self::Class::[]}(c).{self::Class::[]}(c));
-  self::throws(() → self::Class* => let final self::Class* #t122 = (let final self::Class* #t123 = c in #t123.{core::Object::==}(null) ?{self::Class*} null : #t123.{self::Class::field}).{self::Class::[]}(c) in let final self::Class* #t124 = c in let final self::Class* #t125 = new self::Class::•() in let final void #t126 = #t122.{self::Class::[]=}(#t124, #t125) in #t125);
-  self::throws(() → self::Class* => c = let final self::Class* #t127 = (let final self::Class* #t128 = c in #t128.{core::Object::==}(null) ?{self::Class*} null : #t128.{self::Class::field}).{self::Class::[]}(c) in let final self::Class* #t129 = c in let final self::Class* #t130 = new self::Class::•() in let final void #t131 = #t127.{self::Class::[]=}(#t129, #t130) in #t130);
-  self::throws(() → self::Class* => (let final self::Class* #t132 = c in #t132.{core::Object::==}(null) ?{self::Class*} null : #t132.{self::Class::field}).{self::Class::[]}(c).{self::Class::[]}(c).{self::Class::method}());
-  self::throws(() → self::Class* => let final self::Class* #t133 = (let final self::Class* #t134 = c in #t134.{core::Object::==}(null) ?{self::Class*} null : #t134.{self::Class::field}).{self::Class::[]}(c) in let final self::Class* #t135 = c in let final self::Class* #t136 = #t133.{self::Class::[]}(#t135).{self::Class::+}(0) in let final void #t137 = #t133.{self::Class::[]=}(#t135, #t136) in #t136);
-  self::throws(() → self::Class* => c = let final self::Class* #t138 = (let final self::Class* #t139 = c in #t139.{core::Object::==}(null) ?{self::Class*} null : #t139.{self::Class::field}).{self::Class::[]}(c) in let final self::Class* #t140 = c in let final self::Class* #t141 = #t138.{self::Class::[]}(#t140).{self::Class::+}(0) in let final void #t142 = #t138.{self::Class::[]=}(#t140, #t141) in #t141);
-  self::throws(() → self::Class* => let final self::Class* #t143 = (let final self::Class* #t144 = c in #t144.{core::Object::==}(null) ?{self::Class*} null : #t144.{self::Class::field}).{self::Class::[]}(c) in let final self::Class* #t145 = c in let final self::Class* #t146 = #t143.{self::Class::[]}(#t145) in let final void #t147 = #t143.{self::Class::[]=}(#t145, #t146.{self::Class::+}(1)) in #t146);
-  self::throws(() → self::Class* => c = let final self::Class* #t148 = (let final self::Class* #t149 = c in #t149.{core::Object::==}(null) ?{self::Class*} null : #t149.{self::Class::field}).{self::Class::[]}(c) in let final self::Class* #t150 = c in let final self::Class* #t151 = #t148.{self::Class::[]}(#t150) in let final void #t152 = #t148.{self::Class::[]=}(#t150, #t151.{self::Class::+}(1)) in #t151);
-  self::throws(() → self::Class* => let final self::Class* #t153 = (let final self::Class* #t154 = c in #t154.{core::Object::==}(null) ?{self::Class*} null : #t154.{self::Class::field}).{self::Class::[]}(c) in let final self::Class* #t155 = c in let final self::Class* #t156 = #t153.{self::Class::[]}(#t155).{self::Class::+}(1) in let final void #t157 = #t153.{self::Class::[]=}(#t155, #t156) in #t156);
-  self::throws(() → self::Class* => c = let final self::Class* #t158 = (let final self::Class* #t159 = c in #t159.{core::Object::==}(null) ?{self::Class*} null : #t159.{self::Class::field}).{self::Class::[]}(c) in let final self::Class* #t160 = c in let final self::Class* #t161 = #t158.{self::Class::[]}(#t160).{self::Class::+}(1) in let final void #t162 = #t158.{self::Class::[]=}(#t160, #t161) in #t161);
+  self::throws(() → self::Class* => (let final self::Class* #t79 = c in #t79.{self::Class::==}(null) ?{self::Class*} null : #t79.{self::Class::field}).{self::Class::[]}(c));
+  self::throws(() → self::Class* => let final self::Class* #t80 = let final self::Class* #t81 = c in #t81.{self::Class::==}(null) ?{self::Class*} null : #t81.{self::Class::field} in let final self::Class* #t82 = c in let final self::Class* #t83 = new self::Class::•() in let final void #t84 = #t80.{self::Class::[]=}(#t82, #t83) in #t83);
+  self::throws(() → self::Class* => c = let final self::Class* #t85 = let final self::Class* #t86 = c in #t86.{self::Class::==}(null) ?{self::Class*} null : #t86.{self::Class::field} in let final self::Class* #t87 = c in let final self::Class* #t88 = new self::Class::•() in let final void #t89 = #t85.{self::Class::[]=}(#t87, #t88) in #t88);
+  self::throws(() → self::Class* => (let final self::Class* #t90 = c in #t90.{self::Class::==}(null) ?{self::Class*} null : #t90.{self::Class::field}).{self::Class::[]}(c).{self::Class::method}());
+  self::throws(() → self::Class* => let final self::Class* #t91 = let final self::Class* #t92 = c in #t92.{self::Class::==}(null) ?{self::Class*} null : #t92.{self::Class::field} in let final self::Class* #t93 = c in let final self::Class* #t94 = #t91.{self::Class::[]}(#t93).{self::Class::+}(0) in let final void #t95 = #t91.{self::Class::[]=}(#t93, #t94) in #t94);
+  self::throws(() → self::Class* => c = let final self::Class* #t96 = let final self::Class* #t97 = c in #t97.{self::Class::==}(null) ?{self::Class*} null : #t97.{self::Class::field} in let final self::Class* #t98 = c in let final self::Class* #t99 = #t96.{self::Class::[]}(#t98).{self::Class::+}(0) in let final void #t100 = #t96.{self::Class::[]=}(#t98, #t99) in #t99);
+  self::throws(() → self::Class* => let final self::Class* #t101 = let final self::Class* #t102 = c in #t102.{self::Class::==}(null) ?{self::Class*} null : #t102.{self::Class::field} in let final self::Class* #t103 = c in let final self::Class* #t104 = #t101.{self::Class::[]}(#t103) in let final void #t105 = #t101.{self::Class::[]=}(#t103, #t104.{self::Class::+}(1)) in #t104);
+  self::throws(() → self::Class* => c = let final self::Class* #t106 = let final self::Class* #t107 = c in #t107.{self::Class::==}(null) ?{self::Class*} null : #t107.{self::Class::field} in let final self::Class* #t108 = c in let final self::Class* #t109 = #t106.{self::Class::[]}(#t108) in let final void #t110 = #t106.{self::Class::[]=}(#t108, #t109.{self::Class::+}(1)) in #t109);
+  self::throws(() → self::Class* => let final self::Class* #t111 = let final self::Class* #t112 = c in #t112.{self::Class::==}(null) ?{self::Class*} null : #t112.{self::Class::field} in let final self::Class* #t113 = c in let final self::Class* #t114 = #t111.{self::Class::[]}(#t113).{self::Class::+}(1) in let final void #t115 = #t111.{self::Class::[]=}(#t113, #t114) in #t114);
+  self::throws(() → self::Class* => c = let final self::Class* #t116 = let final self::Class* #t117 = c in #t117.{self::Class::==}(null) ?{self::Class*} null : #t117.{self::Class::field} in let final self::Class* #t118 = c in let final self::Class* #t119 = #t116.{self::Class::[]}(#t118).{self::Class::+}(1) in let final void #t120 = #t116.{self::Class::[]=}(#t118, #t119) in #t119);
+  self::throws(() → self::Class* => (let final self::Class* #t121 = c in #t121.{self::Class::==}(null) ?{self::Class*} null : #t121.{self::Class::field}).{self::Class::[]}(c).{self::Class::[]}(c));
+  self::throws(() → self::Class* => let final self::Class* #t122 = (let final self::Class* #t123 = c in #t123.{self::Class::==}(null) ?{self::Class*} null : #t123.{self::Class::field}).{self::Class::[]}(c) in let final self::Class* #t124 = c in let final self::Class* #t125 = new self::Class::•() in let final void #t126 = #t122.{self::Class::[]=}(#t124, #t125) in #t125);
+  self::throws(() → self::Class* => c = let final self::Class* #t127 = (let final self::Class* #t128 = c in #t128.{self::Class::==}(null) ?{self::Class*} null : #t128.{self::Class::field}).{self::Class::[]}(c) in let final self::Class* #t129 = c in let final self::Class* #t130 = new self::Class::•() in let final void #t131 = #t127.{self::Class::[]=}(#t129, #t130) in #t130);
+  self::throws(() → self::Class* => (let final self::Class* #t132 = c in #t132.{self::Class::==}(null) ?{self::Class*} null : #t132.{self::Class::field}).{self::Class::[]}(c).{self::Class::[]}(c).{self::Class::method}());
+  self::throws(() → self::Class* => let final self::Class* #t133 = (let final self::Class* #t134 = c in #t134.{self::Class::==}(null) ?{self::Class*} null : #t134.{self::Class::field}).{self::Class::[]}(c) in let final self::Class* #t135 = c in let final self::Class* #t136 = #t133.{self::Class::[]}(#t135).{self::Class::+}(0) in let final void #t137 = #t133.{self::Class::[]=}(#t135, #t136) in #t136);
+  self::throws(() → self::Class* => c = let final self::Class* #t138 = (let final self::Class* #t139 = c in #t139.{self::Class::==}(null) ?{self::Class*} null : #t139.{self::Class::field}).{self::Class::[]}(c) in let final self::Class* #t140 = c in let final self::Class* #t141 = #t138.{self::Class::[]}(#t140).{self::Class::+}(0) in let final void #t142 = #t138.{self::Class::[]=}(#t140, #t141) in #t141);
+  self::throws(() → self::Class* => let final self::Class* #t143 = (let final self::Class* #t144 = c in #t144.{self::Class::==}(null) ?{self::Class*} null : #t144.{self::Class::field}).{self::Class::[]}(c) in let final self::Class* #t145 = c in let final self::Class* #t146 = #t143.{self::Class::[]}(#t145) in let final void #t147 = #t143.{self::Class::[]=}(#t145, #t146.{self::Class::+}(1)) in #t146);
+  self::throws(() → self::Class* => c = let final self::Class* #t148 = (let final self::Class* #t149 = c in #t149.{self::Class::==}(null) ?{self::Class*} null : #t149.{self::Class::field}).{self::Class::[]}(c) in let final self::Class* #t150 = c in let final self::Class* #t151 = #t148.{self::Class::[]}(#t150) in let final void #t152 = #t148.{self::Class::[]=}(#t150, #t151.{self::Class::+}(1)) in #t151);
+  self::throws(() → self::Class* => let final self::Class* #t153 = (let final self::Class* #t154 = c in #t154.{self::Class::==}(null) ?{self::Class*} null : #t154.{self::Class::field}).{self::Class::[]}(c) in let final self::Class* #t155 = c in let final self::Class* #t156 = #t153.{self::Class::[]}(#t155).{self::Class::+}(1) in let final void #t157 = #t153.{self::Class::[]=}(#t155, #t156) in #t156);
+  self::throws(() → self::Class* => c = let final self::Class* #t158 = (let final self::Class* #t159 = c in #t159.{self::Class::==}(null) ?{self::Class*} null : #t159.{self::Class::field}).{self::Class::[]}(c) in let final self::Class* #t160 = c in let final self::Class* #t161 = #t158.{self::Class::[]}(#t160).{self::Class::+}(1) in let final void #t162 = #t158.{self::Class::[]=}(#t160, #t161) in #t161);
 }
 static method operatorAccess(self::Class* c) → void {
-  self::throws(() → self::Class* => (let final self::Class* #t163 = c in #t163.{core::Object::==}(null) ?{self::Class*} null : #t163.{self::Class::field}).{self::Class::+}(0));
-  self::throws(() → self::Class* => (let final self::Class* #t164 = c in #t164.{core::Object::==}(null) ?{self::Class*} null : #t164.{self::Class::field}).{self::Class::unary-}());
-  let final self::Class* #t165 = c in #t165.{core::Object::==}(null) ?{self::Class*} null : #t165.{self::Class::field} = #t165.{self::Class::field}.{self::Class::+}(0);
-  c = let final self::Class* #t166 = c in #t166.{core::Object::==}(null) ?{self::Class*} null : let final self::Class* #t167 = #t166.{self::Class::field}.{self::Class::+}(0) in let final void #t168 = #t166.{self::Class::field} = #t167 in #t167;
-  self::throws(() → self::Class* => let final self::Class* #t169 = let final self::Class* #t170 = c in #t170.{core::Object::==}(null) ?{self::Class*} null : #t170.{self::Class::field} in #t169.{self::Class::field} = #t169.{self::Class::field}.{self::Class::+}(0));
-  self::throws(() → self::Class* => c = let final self::Class* #t171 = let final self::Class* #t172 = c in #t172.{core::Object::==}(null) ?{self::Class*} null : #t172.{self::Class::field} in #t171.{self::Class::field} = #t171.{self::Class::field}.{self::Class::+}(0));
-  let final self::Class* #t173 = c in #t173.{core::Object::==}(null) ?{self::Class*} null : #t173.{self::Class::field} = #t173.{self::Class::field}.{self::Class::+}(1);
-  c = let final self::Class* #t174 = c in #t174.{core::Object::==}(null) ?{self::Class*} null : let final self::Class* #t175 = #t174.{self::Class::field} in let final void #t176 = #t174.{self::Class::field} = #t175.{self::Class::+}(1) in #t175;
-  let final self::Class* #t177 = c in #t177.{core::Object::==}(null) ?{self::Class*} null : let final self::Class* #t178 = #t177.{self::Class::field}.{self::Class::+}(1) in let final void #t179 = #t177.{self::Class::field} = #t178 in #t178;
-  c = let final self::Class* #t180 = c in #t180.{core::Object::==}(null) ?{self::Class*} null : let final self::Class* #t181 = #t180.{self::Class::field}.{self::Class::+}(1) in let final void #t182 = #t180.{self::Class::field} = #t181 in #t181;
+  self::throws(() → self::Class* => (let final self::Class* #t163 = c in #t163.{self::Class::==}(null) ?{self::Class*} null : #t163.{self::Class::field}).{self::Class::+}(0));
+  self::throws(() → self::Class* => (let final self::Class* #t164 = c in #t164.{self::Class::==}(null) ?{self::Class*} null : #t164.{self::Class::field}).{self::Class::unary-}());
+  let final self::Class* #t165 = c in #t165.{self::Class::==}(null) ?{self::Class*} null : #t165.{self::Class::field} = #t165.{self::Class::field}.{self::Class::+}(0);
+  c = let final self::Class* #t166 = c in #t166.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t167 = #t166.{self::Class::field}.{self::Class::+}(0) in let final void #t168 = #t166.{self::Class::field} = #t167 in #t167;
+  self::throws(() → self::Class* => let final self::Class* #t169 = let final self::Class* #t170 = c in #t170.{self::Class::==}(null) ?{self::Class*} null : #t170.{self::Class::field} in #t169.{self::Class::field} = #t169.{self::Class::field}.{self::Class::+}(0));
+  self::throws(() → self::Class* => c = let final self::Class* #t171 = let final self::Class* #t172 = c in #t172.{self::Class::==}(null) ?{self::Class*} null : #t172.{self::Class::field} in #t171.{self::Class::field} = #t171.{self::Class::field}.{self::Class::+}(0));
+  let final self::Class* #t173 = c in #t173.{self::Class::==}(null) ?{self::Class*} null : #t173.{self::Class::field} = #t173.{self::Class::field}.{self::Class::+}(1);
+  c = let final self::Class* #t174 = c in #t174.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t175 = #t174.{self::Class::field} in let final void #t176 = #t174.{self::Class::field} = #t175.{self::Class::+}(1) in #t175;
+  let final self::Class* #t177 = c in #t177.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t178 = #t177.{self::Class::field}.{self::Class::+}(1) in let final void #t179 = #t177.{self::Class::field} = #t178 in #t178;
+  c = let final self::Class* #t180 = c in #t180.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t181 = #t180.{self::Class::field}.{self::Class::+}(1) in let final void #t182 = #t180.{self::Class::field} = #t181 in #t181;
 }
 static method ifNull(self::Class* c) → void {
-  let final self::Class* #t183 = c in #t183.{core::Object::==}(null) ?{self::Class*} null : #t183.{self::Class::field}.{core::Object::==}(null) ?{self::Class*} #t183.{self::Class::field} = c : null;
-  c = let final self::Class* #t184 = c in #t184.{core::Object::==}(null) ?{self::Class*} null : let final self::Class* #t185 = #t184.{self::Class::field} in #t185.{core::Object::==}(null) ?{self::Class*} #t184.{self::Class::field} = c : #t185;
-  self::throws(() → self::Class* => let final self::Class* #t186 = let final self::Class* #t187 = c in #t187.{core::Object::==}(null) ?{self::Class*} null : #t187.{self::Class::field} in let final self::Class* #t188 = #t186.{self::Class::field} in #t188.{core::Object::==}(null) ?{self::Class*} #t186.{self::Class::field} = c : #t188);
-  self::throws(() → self::Class* => c = let final self::Class* #t189 = let final self::Class* #t190 = c in #t190.{core::Object::==}(null) ?{self::Class*} null : #t190.{self::Class::field} in let final self::Class* #t191 = #t189.{self::Class::field} in #t191.{core::Object::==}(null) ?{self::Class*} #t189.{self::Class::field} = c : #t191);
-  self::throws(() → self::Class* => let final self::Class* #t192 = let final self::Class* #t193 = c in #t193.{core::Object::==}(null) ?{self::Class*} null : #t193.{self::Class::field} in let final self::Class* #t194 = c in let final self::Class* #t195 = #t192.{self::Class::[]}(#t194) in #t195.{core::Object::==}(null) ?{self::Class*} let final self::Class* #t196 = c in let final void #t197 = #t192.{self::Class::[]=}(#t194, #t196) in #t196 : #t195);
-  self::throws(() → self::Class* => c = let final self::Class* #t198 = let final self::Class* #t199 = c in #t199.{core::Object::==}(null) ?{self::Class*} null : #t199.{self::Class::field} in let final self::Class* #t200 = c in let final self::Class* #t201 = #t198.{self::Class::[]}(#t200) in #t201.{core::Object::==}(null) ?{self::Class*} let final self::Class* #t202 = c in let final void #t203 = #t198.{self::Class::[]=}(#t200, #t202) in #t202 : #t201);
+  let final self::Class* #t183 = c in #t183.{self::Class::==}(null) ?{self::Class*} null : #t183.{self::Class::field}.{self::Class::==}(null) ?{self::Class*} #t183.{self::Class::field} = c : null;
+  c = let final self::Class* #t184 = c in #t184.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t185 = #t184.{self::Class::field} in #t185.{self::Class::==}(null) ?{self::Class*} #t184.{self::Class::field} = c : #t185;
+  self::throws(() → self::Class* => let final self::Class* #t186 = let final self::Class* #t187 = c in #t187.{self::Class::==}(null) ?{self::Class*} null : #t187.{self::Class::field} in let final self::Class* #t188 = #t186.{self::Class::field} in #t188.{self::Class::==}(null) ?{self::Class*} #t186.{self::Class::field} = c : #t188);
+  self::throws(() → self::Class* => c = let final self::Class* #t189 = let final self::Class* #t190 = c in #t190.{self::Class::==}(null) ?{self::Class*} null : #t190.{self::Class::field} in let final self::Class* #t191 = #t189.{self::Class::field} in #t191.{self::Class::==}(null) ?{self::Class*} #t189.{self::Class::field} = c : #t191);
+  self::throws(() → self::Class* => let final self::Class* #t192 = let final self::Class* #t193 = c in #t193.{self::Class::==}(null) ?{self::Class*} null : #t193.{self::Class::field} in let final self::Class* #t194 = c in let final self::Class* #t195 = #t192.{self::Class::[]}(#t194) in #t195.{self::Class::==}(null) ?{self::Class*} let final self::Class* #t196 = c in let final void #t197 = #t192.{self::Class::[]=}(#t194, #t196) in #t196 : #t195);
+  self::throws(() → self::Class* => c = let final self::Class* #t198 = let final self::Class* #t199 = c in #t199.{self::Class::==}(null) ?{self::Class*} null : #t199.{self::Class::field} in let final self::Class* #t200 = c in let final self::Class* #t201 = #t198.{self::Class::[]}(#t200) in #t201.{self::Class::==}(null) ?{self::Class*} let final self::Class* #t202 = c in let final void #t203 = #t198.{self::Class::[]=}(#t200, #t202) in #t202 : #t201);
 }
 static method throws(() →* void f) → void {
   try {
diff --git a/pkg/front_end/testcases/nnbd/no_null_shorting_explicit_extension.dart.outline.expect b/pkg/front_end/testcases/nnbd/no_null_shorting_explicit_extension.dart.outline.expect
index f7c609c..05e1cb9 100644
--- a/pkg/front_end/testcases/nnbd/no_null_shorting_explicit_extension.dart.outline.expect
+++ b/pkg/front_end/testcases/nnbd/no_null_shorting_explicit_extension.dart.outline.expect
@@ -6,6 +6,16 @@
   field self::Class* _field;
   synthetic constructor •() → self::Class*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 extension Extension on self::Class* {
   get field = self::Extension|get#field;
diff --git a/pkg/front_end/testcases/nnbd/no_null_shorting_explicit_extension.dart.strong.expect b/pkg/front_end/testcases/nnbd/no_null_shorting_explicit_extension.dart.strong.expect
index 90b06d3..1792025 100644
--- a/pkg/front_end/testcases/nnbd/no_null_shorting_explicit_extension.dart.strong.expect
+++ b/pkg/front_end/testcases/nnbd/no_null_shorting_explicit_extension.dart.strong.expect
@@ -7,6 +7,16 @@
   synthetic constructor •() → self::Class*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 extension Extension on self::Class* {
   get field = self::Extension|get#field;
@@ -43,121 +53,121 @@
   self::ifNull(null);
 }
 static method propertyAccess(self::Class* c) → void {
-  let final self::Class* #t1 = c in #t1.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t1);
-  let final self::Class* #t2 = c in #t2.{core::Object::==}(null) ?{self::Class*} null : self::Extension|set#field(#t2, new self::Class::•());
-  c = let final self::Class* #t3 = c in #t3.{core::Object::==}(null) ?{self::Class*} null : let final self::Class* #t4 = new self::Class::•() in let final void #t5 = self::Extension|set#field(#t3, #t4) in #t4;
-  let final self::Class* #t6 = c in #t6.{core::Object::==}(null) ?{self::Class*} null : self::Extension|method(#t6);
-  self::throws(() → self::Class* => self::Extension|get#field(let final self::Class* #t7 = c in #t7.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t7)));
-  let final self::Class* #t8 = let final self::Class* #t9 = c in #t9.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t9) in #t8.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t8);
-  self::throws(() → self::Class* => let final self::Class* #t10 = self::Extension|get#field(let final self::Class* #t11 = c in #t11.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t11)) in #t10.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t10));
-  self::throws(() → self::Class* => let final self::Class* #t12 = new self::Class::•() in let final void #t13 = self::Extension|set#field(let final self::Class* #t14 = c in #t14.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t14), #t12) in #t12);
-  let final self::Class* #t15 = let final self::Class* #t16 = c in #t16.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t16) in #t15.{core::Object::==}(null) ?{self::Class*} null : self::Extension|set#field(#t15, new self::Class::•());
-  self::throws(() → self::Class* => let final self::Class* #t17 = self::Extension|get#field(let final self::Class* #t18 = c in #t18.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t18)) in #t17.{core::Object::==}(null) ?{self::Class*} null : let final self::Class* #t19 = new self::Class::•() in let final void #t20 = self::Extension|set#field(#t17, #t19) in #t19);
-  self::throws(() → self::Class* => self::Extension|get#field(let final self::Class* #t21 = c in #t21.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t21)));
-  self::throws(() → self::Class* => self::Extension|get#field(let final self::Class* #t22 = c in #t22.{core::Object::==}(null) ?{self::Class*} null : let final self::Class* #t23 = new self::Class::•() in let final void #t24 = self::Extension|set#field(#t22, #t23) in #t23));
-  self::throws(() → self::Class* => self::Extension|get#field(let final self::Class* #t25 = c in #t25.{core::Object::==}(null) ?{self::Class*} null : self::Extension|method(#t25)));
-  self::throws(() → self::Class* => c = let final self::Class* #t26 = new self::Class::•() in let final void #t27 = self::Extension|set#field(let final self::Class* #t28 = c in #t28.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t28), #t26) in #t26);
-  c = let final self::Class* #t29 = let final self::Class* #t30 = c in #t30.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t30) in #t29.{core::Object::==}(null) ?{self::Class*} null : let final self::Class* #t31 = new self::Class::•() in let final void #t32 = self::Extension|set#field(#t29, #t31) in #t31;
-  self::throws(() → self::Class* => c = let final self::Class* #t33 = self::Extension|get#field(let final self::Class* #t34 = c in #t34.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t34)) in #t33.{core::Object::==}(null) ?{self::Class*} null : let final self::Class* #t35 = new self::Class::•() in let final void #t36 = self::Extension|set#field(#t33, #t35) in #t35);
-  self::throws(() → self::Class* => self::Extension|method(let final self::Class* #t37 = c in #t37.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t37)));
-  let final self::Class* #t38 = c in #t38.{core::Object::==}(null) ?{self::Class*} null : self::Extension|set#field(#t38, self::Extension|get#field(new self::Class::•()));
-  c = let final self::Class* #t39 = c in #t39.{core::Object::==}(null) ?{self::Class*} null : let final self::Class* #t40 = self::Extension|get#field(new self::Class::•()) in let final void #t41 = self::Extension|set#field(#t39, #t40) in #t40;
-  let final self::Class* #t42 = c in #t42.{core::Object::==}(null) ?{self::Class*} null : self::Extension|set#field(#t42, let final self::Class* #t43 = new self::Class::•() in let final void #t44 = self::Extension|set#field(new self::Class::•(), #t43) in #t43);
-  c = let final self::Class* #t45 = c in #t45.{core::Object::==}(null) ?{self::Class*} null : let final self::Class* #t46 = let final self::Class* #t47 = new self::Class::•() in let final void #t48 = self::Extension|set#field(new self::Class::•(), #t47) in #t47 in let final void #t49 = self::Extension|set#field(#t45, #t46) in #t46;
-  let final self::Class* #t50 = c in #t50.{core::Object::==}(null) ?{self::Class*} null : self::Extension|set#field(#t50, self::Extension|method(new self::Class::•()));
-  c = let final self::Class* #t51 = c in #t51.{core::Object::==}(null) ?{self::Class*} null : let final self::Class* #t52 = self::Extension|method(new self::Class::•()) in let final void #t53 = self::Extension|set#field(#t51, #t52) in #t52;
-  self::throws(() → self::Class* => self::Extension|get#field(let final self::Class* #t54 = c in #t54.{core::Object::==}(null) ?{self::Class*} null : self::Extension|method(#t54)));
-  self::throws(() → self::Class* => let final self::Class* #t55 = new self::Class::•() in let final void #t56 = self::Extension|set#field(let final self::Class* #t57 = c in #t57.{core::Object::==}(null) ?{self::Class*} null : self::Extension|method(#t57), #t55) in #t55);
-  self::throws(() → self::Class* => self::Extension|method(let final self::Class* #t58 = c in #t58.{core::Object::==}(null) ?{self::Class*} null : self::Extension|method(#t58)));
-  self::throws(() → self::Class* => self::Extension|get#field(self::Extension|get#field(let final self::Class* #t59 = c in #t59.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t59))));
-  self::throws(() → self::Class* => let final self::Class* #t60 = new self::Class::•() in let final void #t61 = self::Extension|set#field(self::Extension|get#field(let final self::Class* #t62 = c in #t62.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t62)), #t60) in #t60);
-  self::throws(() → self::Class* => c = let final self::Class* #t63 = new self::Class::•() in let final void #t64 = self::Extension|set#field(self::Extension|get#field(let final self::Class* #t65 = c in #t65.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t65)), #t63) in #t63);
-  self::throws(() → self::Class* => self::Extension|method(self::Extension|get#field(let final self::Class* #t66 = c in #t66.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t66))));
-  let final self::Class* #t67 = c in #t67.{core::Object::==}(null) ?{self::Class*} null : self::Extension|set#field(#t67, self::Extension|get#field(self::Extension|get#field(new self::Class::•())));
-  c = let final self::Class* #t68 = c in #t68.{core::Object::==}(null) ?{self::Class*} null : let final self::Class* #t69 = self::Extension|get#field(self::Extension|get#field(new self::Class::•())) in let final void #t70 = self::Extension|set#field(#t68, #t69) in #t69;
-  let final self::Class* #t71 = c in #t71.{core::Object::==}(null) ?{self::Class*} null : self::Extension|set#field(#t71, let final self::Class* #t72 = new self::Class::•() in let final void #t73 = self::Extension|set#field(self::Extension|get#field(new self::Class::•()), #t72) in #t72);
-  c = let final self::Class* #t74 = c in #t74.{core::Object::==}(null) ?{self::Class*} null : let final self::Class* #t75 = let final self::Class* #t76 = new self::Class::•() in let final void #t77 = self::Extension|set#field(self::Extension|get#field(new self::Class::•()), #t76) in #t76 in let final void #t78 = self::Extension|set#field(#t74, #t75) in #t75;
-  let final self::Class* #t79 = c in #t79.{core::Object::==}(null) ?{self::Class*} null : self::Extension|set#field(#t79, self::Extension|method(self::Extension|get#field(new self::Class::•())));
-  c = let final self::Class* #t80 = c in #t80.{core::Object::==}(null) ?{self::Class*} null : let final self::Class* #t81 = self::Extension|method(self::Extension|get#field(new self::Class::•())) in let final void #t82 = self::Extension|set#field(#t80, #t81) in #t81;
-  self::throws(() → self::Class* => self::Extension|get#field(self::Extension|get#field(let final self::Class* #t83 = c in #t83.{core::Object::==}(null) ?{self::Class*} null : self::Extension|method(#t83))));
-  self::throws(() → self::Class* => let final self::Class* #t84 = new self::Class::•() in let final void #t85 = self::Extension|set#field(self::Extension|get#field(let final self::Class* #t86 = c in #t86.{core::Object::==}(null) ?{self::Class*} null : self::Extension|method(#t86)), #t84) in #t84);
-  self::throws(() → self::Class* => self::Extension|method(self::Extension|get#field(let final self::Class* #t87 = c in #t87.{core::Object::==}(null) ?{self::Class*} null : self::Extension|method(#t87))));
-  self::throws(() → self::Class* => let final self::Class* #t88 = self::Extension|get#field(new self::Class::•()) in let final void #t89 = self::Extension|set#field(let final self::Class* #t90 = c in #t90.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t90), #t88) in #t88);
-  self::throws(() → self::Class* => c = let final self::Class* #t91 = self::Extension|get#field(new self::Class::•()) in let final void #t92 = self::Extension|set#field(let final self::Class* #t93 = c in #t93.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t93), #t91) in #t91);
-  self::throws(() → self::Class* => let final self::Class* #t94 = let final self::Class* #t95 = new self::Class::•() in let final void #t96 = self::Extension|set#field(new self::Class::•(), #t95) in #t95 in let final void #t97 = self::Extension|set#field(let final self::Class* #t98 = c in #t98.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t98), #t94) in #t94);
-  self::throws(() → self::Class* => c = let final self::Class* #t99 = let final self::Class* #t100 = new self::Class::•() in let final void #t101 = self::Extension|set#field(new self::Class::•(), #t100) in #t100 in let final void #t102 = self::Extension|set#field(let final self::Class* #t103 = c in #t103.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t103), #t99) in #t99);
-  self::throws(() → self::Class* => let final self::Class* #t104 = self::Extension|method(new self::Class::•()) in let final void #t105 = self::Extension|set#field(let final self::Class* #t106 = c in #t106.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t106), #t104) in #t104);
-  self::throws(() → self::Class* => c = let final self::Class* #t107 = self::Extension|method(new self::Class::•()) in let final void #t108 = self::Extension|set#field(let final self::Class* #t109 = c in #t109.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t109), #t107) in #t107);
-  let final self::Class* #t110 = c in #t110.{core::Object::==}(null) ?{self::Class*} null : self::Extension|set#field(#t110, let final self::Class* #t111 = self::Extension|get#field(new self::Class::•()) in let final void #t112 = self::Extension|set#field(new self::Class::•(), #t111) in #t111);
-  c = let final self::Class* #t113 = c in #t113.{core::Object::==}(null) ?{self::Class*} null : let final self::Class* #t114 = let final self::Class* #t115 = self::Extension|get#field(new self::Class::•()) in let final void #t116 = self::Extension|set#field(new self::Class::•(), #t115) in #t115 in let final void #t117 = self::Extension|set#field(#t113, #t114) in #t114;
-  let final self::Class* #t118 = c in #t118.{core::Object::==}(null) ?{self::Class*} null : self::Extension|set#field(#t118, let final self::Class* #t119 = let final self::Class* #t120 = new self::Class::•() in let final void #t121 = self::Extension|set#field(new self::Class::•(), #t120) in #t120 in let final void #t122 = self::Extension|set#field(new self::Class::•(), #t119) in #t119);
-  c = let final self::Class* #t123 = c in #t123.{core::Object::==}(null) ?{self::Class*} null : let final self::Class* #t124 = let final self::Class* #t125 = let final self::Class* #t126 = new self::Class::•() in let final void #t127 = self::Extension|set#field(new self::Class::•(), #t126) in #t126 in let final void #t128 = self::Extension|set#field(new self::Class::•(), #t125) in #t125 in let final void #t129 = self::Extension|set#field(#t123, #t124) in #t124;
-  let final self::Class* #t130 = c in #t130.{core::Object::==}(null) ?{self::Class*} null : self::Extension|set#field(#t130, let final self::Class* #t131 = self::Extension|method(new self::Class::•()) in let final void #t132 = self::Extension|set#field(new self::Class::•(), #t131) in #t131);
-  c = let final self::Class* #t133 = c in #t133.{core::Object::==}(null) ?{self::Class*} null : let final self::Class* #t134 = let final self::Class* #t135 = self::Extension|method(new self::Class::•()) in let final void #t136 = self::Extension|set#field(new self::Class::•(), #t135) in #t135 in let final void #t137 = self::Extension|set#field(#t133, #t134) in #t134;
-  self::throws(() → self::Class* => let final self::Class* #t138 = self::Extension|get#field(new self::Class::•()) in let final void #t139 = self::Extension|set#field(let final self::Class* #t140 = c in #t140.{core::Object::==}(null) ?{self::Class*} null : self::Extension|method(#t140), #t138) in #t138);
-  self::throws(() → self::Class* => c = let final self::Class* #t141 = self::Extension|get#field(new self::Class::•()) in let final void #t142 = self::Extension|set#field(let final self::Class* #t143 = c in #t143.{core::Object::==}(null) ?{self::Class*} null : self::Extension|method(#t143), #t141) in #t141);
-  self::throws(() → self::Class* => let final self::Class* #t144 = let final self::Class* #t145 = new self::Class::•() in let final void #t146 = self::Extension|set#field(new self::Class::•(), #t145) in #t145 in let final void #t147 = self::Extension|set#field(let final self::Class* #t148 = c in #t148.{core::Object::==}(null) ?{self::Class*} null : self::Extension|method(#t148), #t144) in #t144);
-  self::throws(() → self::Class* => c = let final self::Class* #t149 = let final self::Class* #t150 = new self::Class::•() in let final void #t151 = self::Extension|set#field(new self::Class::•(), #t150) in #t150 in let final void #t152 = self::Extension|set#field(let final self::Class* #t153 = c in #t153.{core::Object::==}(null) ?{self::Class*} null : self::Extension|method(#t153), #t149) in #t149);
-  self::throws(() → self::Class* => let final self::Class* #t154 = self::Extension|method(new self::Class::•()) in let final void #t155 = self::Extension|set#field(let final self::Class* #t156 = c in #t156.{core::Object::==}(null) ?{self::Class*} null : self::Extension|method(#t156), #t154) in #t154);
-  self::throws(() → self::Class* => c = let final self::Class* #t157 = self::Extension|method(new self::Class::•()) in let final void #t158 = self::Extension|set#field(let final self::Class* #t159 = c in #t159.{core::Object::==}(null) ?{self::Class*} null : self::Extension|method(#t159), #t157) in #t157);
-  self::throws(() → self::Class* => self::Extension|get#field(self::Extension|method(let final self::Class* #t160 = c in #t160.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t160))));
-  self::throws(() → self::Class* => let final self::Class* #t161 = new self::Class::•() in let final void #t162 = self::Extension|set#field(self::Extension|method(let final self::Class* #t163 = c in #t163.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t163)), #t161) in #t161);
-  self::throws(() → self::Class* => c = let final self::Class* #t164 = new self::Class::•() in let final void #t165 = self::Extension|set#field(self::Extension|method(let final self::Class* #t166 = c in #t166.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t166)), #t164) in #t164);
-  self::throws(() → self::Class* => self::Extension|method(self::Extension|method(let final self::Class* #t167 = c in #t167.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t167))));
-  let final self::Class* #t168 = c in #t168.{core::Object::==}(null) ?{self::Class*} null : self::Extension|set#field(#t168, self::Extension|get#field(self::Extension|method(new self::Class::•())));
-  c = let final self::Class* #t169 = c in #t169.{core::Object::==}(null) ?{self::Class*} null : let final self::Class* #t170 = self::Extension|get#field(self::Extension|method(new self::Class::•())) in let final void #t171 = self::Extension|set#field(#t169, #t170) in #t170;
-  let final self::Class* #t172 = c in #t172.{core::Object::==}(null) ?{self::Class*} null : self::Extension|set#field(#t172, let final self::Class* #t173 = new self::Class::•() in let final void #t174 = self::Extension|set#field(self::Extension|method(new self::Class::•()), #t173) in #t173);
-  c = let final self::Class* #t175 = c in #t175.{core::Object::==}(null) ?{self::Class*} null : let final self::Class* #t176 = let final self::Class* #t177 = new self::Class::•() in let final void #t178 = self::Extension|set#field(self::Extension|method(new self::Class::•()), #t177) in #t177 in let final void #t179 = self::Extension|set#field(#t175, #t176) in #t176;
-  let final self::Class* #t180 = c in #t180.{core::Object::==}(null) ?{self::Class*} null : self::Extension|set#field(#t180, self::Extension|method(self::Extension|method(new self::Class::•())));
-  c = let final self::Class* #t181 = c in #t181.{core::Object::==}(null) ?{self::Class*} null : let final self::Class* #t182 = self::Extension|method(self::Extension|method(new self::Class::•())) in let final void #t183 = self::Extension|set#field(#t181, #t182) in #t182;
-  self::throws(() → self::Class* => self::Extension|get#field(self::Extension|method(let final self::Class* #t184 = c in #t184.{core::Object::==}(null) ?{self::Class*} null : self::Extension|method(#t184))));
-  self::throws(() → self::Class* => let final self::Class* #t185 = new self::Class::•() in let final void #t186 = self::Extension|set#field(self::Extension|method(let final self::Class* #t187 = c in #t187.{core::Object::==}(null) ?{self::Class*} null : self::Extension|method(#t187)), #t185) in #t185);
-  self::throws(() → self::Class* => self::Extension|method(self::Extension|method(let final self::Class* #t188 = c in #t188.{core::Object::==}(null) ?{self::Class*} null : self::Extension|method(#t188))));
-  let final self::Class* #t189 = let final self::Class* #t190 = c in #t190.{core::Object::==}(null) ?{self::Class*} null : self::Extension|method(#t190) in #t189.{core::Object::==}(null) ?{self::Class*} null : self::Extension|method(#t189);
-  self::throws(() → self::Class* => self::Extension|get#field(let final self::Class* #t191 = c in #t191.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t191)));
-  let final self::Class* #t192 = let final self::Class* #t193 = c in #t193.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t193) in #t192.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t192);
+  let final self::Class* #t1 = c in #t1.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t1);
+  let final self::Class* #t2 = c in #t2.{self::Class::==}(null) ?{self::Class*} null : self::Extension|set#field(#t2, new self::Class::•());
+  c = let final self::Class* #t3 = c in #t3.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t4 = new self::Class::•() in let final void #t5 = self::Extension|set#field(#t3, #t4) in #t4;
+  let final self::Class* #t6 = c in #t6.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t6);
+  self::throws(() → self::Class* => self::Extension|get#field(let final self::Class* #t7 = c in #t7.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t7)));
+  let final self::Class* #t8 = let final self::Class* #t9 = c in #t9.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t9) in #t8.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t8);
+  self::throws(() → self::Class* => let final self::Class* #t10 = self::Extension|get#field(let final self::Class* #t11 = c in #t11.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t11)) in #t10.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t10));
+  self::throws(() → self::Class* => let final self::Class* #t12 = new self::Class::•() in let final void #t13 = self::Extension|set#field(let final self::Class* #t14 = c in #t14.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t14), #t12) in #t12);
+  let final self::Class* #t15 = let final self::Class* #t16 = c in #t16.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t16) in #t15.{self::Class::==}(null) ?{self::Class*} null : self::Extension|set#field(#t15, new self::Class::•());
+  self::throws(() → self::Class* => let final self::Class* #t17 = self::Extension|get#field(let final self::Class* #t18 = c in #t18.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t18)) in #t17.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t19 = new self::Class::•() in let final void #t20 = self::Extension|set#field(#t17, #t19) in #t19);
+  self::throws(() → self::Class* => self::Extension|get#field(let final self::Class* #t21 = c in #t21.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t21)));
+  self::throws(() → self::Class* => self::Extension|get#field(let final self::Class* #t22 = c in #t22.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t23 = new self::Class::•() in let final void #t24 = self::Extension|set#field(#t22, #t23) in #t23));
+  self::throws(() → self::Class* => self::Extension|get#field(let final self::Class* #t25 = c in #t25.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t25)));
+  self::throws(() → self::Class* => c = let final self::Class* #t26 = new self::Class::•() in let final void #t27 = self::Extension|set#field(let final self::Class* #t28 = c in #t28.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t28), #t26) in #t26);
+  c = let final self::Class* #t29 = let final self::Class* #t30 = c in #t30.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t30) in #t29.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t31 = new self::Class::•() in let final void #t32 = self::Extension|set#field(#t29, #t31) in #t31;
+  self::throws(() → self::Class* => c = let final self::Class* #t33 = self::Extension|get#field(let final self::Class* #t34 = c in #t34.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t34)) in #t33.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t35 = new self::Class::•() in let final void #t36 = self::Extension|set#field(#t33, #t35) in #t35);
+  self::throws(() → self::Class* => self::Extension|method(let final self::Class* #t37 = c in #t37.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t37)));
+  let final self::Class* #t38 = c in #t38.{self::Class::==}(null) ?{self::Class*} null : self::Extension|set#field(#t38, self::Extension|get#field(new self::Class::•()));
+  c = let final self::Class* #t39 = c in #t39.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t40 = self::Extension|get#field(new self::Class::•()) in let final void #t41 = self::Extension|set#field(#t39, #t40) in #t40;
+  let final self::Class* #t42 = c in #t42.{self::Class::==}(null) ?{self::Class*} null : self::Extension|set#field(#t42, let final self::Class* #t43 = new self::Class::•() in let final void #t44 = self::Extension|set#field(new self::Class::•(), #t43) in #t43);
+  c = let final self::Class* #t45 = c in #t45.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t46 = let final self::Class* #t47 = new self::Class::•() in let final void #t48 = self::Extension|set#field(new self::Class::•(), #t47) in #t47 in let final void #t49 = self::Extension|set#field(#t45, #t46) in #t46;
+  let final self::Class* #t50 = c in #t50.{self::Class::==}(null) ?{self::Class*} null : self::Extension|set#field(#t50, self::Extension|method(new self::Class::•()));
+  c = let final self::Class* #t51 = c in #t51.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t52 = self::Extension|method(new self::Class::•()) in let final void #t53 = self::Extension|set#field(#t51, #t52) in #t52;
+  self::throws(() → self::Class* => self::Extension|get#field(let final self::Class* #t54 = c in #t54.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t54)));
+  self::throws(() → self::Class* => let final self::Class* #t55 = new self::Class::•() in let final void #t56 = self::Extension|set#field(let final self::Class* #t57 = c in #t57.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t57), #t55) in #t55);
+  self::throws(() → self::Class* => self::Extension|method(let final self::Class* #t58 = c in #t58.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t58)));
+  self::throws(() → self::Class* => self::Extension|get#field(self::Extension|get#field(let final self::Class* #t59 = c in #t59.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t59))));
+  self::throws(() → self::Class* => let final self::Class* #t60 = new self::Class::•() in let final void #t61 = self::Extension|set#field(self::Extension|get#field(let final self::Class* #t62 = c in #t62.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t62)), #t60) in #t60);
+  self::throws(() → self::Class* => c = let final self::Class* #t63 = new self::Class::•() in let final void #t64 = self::Extension|set#field(self::Extension|get#field(let final self::Class* #t65 = c in #t65.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t65)), #t63) in #t63);
+  self::throws(() → self::Class* => self::Extension|method(self::Extension|get#field(let final self::Class* #t66 = c in #t66.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t66))));
+  let final self::Class* #t67 = c in #t67.{self::Class::==}(null) ?{self::Class*} null : self::Extension|set#field(#t67, self::Extension|get#field(self::Extension|get#field(new self::Class::•())));
+  c = let final self::Class* #t68 = c in #t68.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t69 = self::Extension|get#field(self::Extension|get#field(new self::Class::•())) in let final void #t70 = self::Extension|set#field(#t68, #t69) in #t69;
+  let final self::Class* #t71 = c in #t71.{self::Class::==}(null) ?{self::Class*} null : self::Extension|set#field(#t71, let final self::Class* #t72 = new self::Class::•() in let final void #t73 = self::Extension|set#field(self::Extension|get#field(new self::Class::•()), #t72) in #t72);
+  c = let final self::Class* #t74 = c in #t74.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t75 = let final self::Class* #t76 = new self::Class::•() in let final void #t77 = self::Extension|set#field(self::Extension|get#field(new self::Class::•()), #t76) in #t76 in let final void #t78 = self::Extension|set#field(#t74, #t75) in #t75;
+  let final self::Class* #t79 = c in #t79.{self::Class::==}(null) ?{self::Class*} null : self::Extension|set#field(#t79, self::Extension|method(self::Extension|get#field(new self::Class::•())));
+  c = let final self::Class* #t80 = c in #t80.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t81 = self::Extension|method(self::Extension|get#field(new self::Class::•())) in let final void #t82 = self::Extension|set#field(#t80, #t81) in #t81;
+  self::throws(() → self::Class* => self::Extension|get#field(self::Extension|get#field(let final self::Class* #t83 = c in #t83.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t83))));
+  self::throws(() → self::Class* => let final self::Class* #t84 = new self::Class::•() in let final void #t85 = self::Extension|set#field(self::Extension|get#field(let final self::Class* #t86 = c in #t86.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t86)), #t84) in #t84);
+  self::throws(() → self::Class* => self::Extension|method(self::Extension|get#field(let final self::Class* #t87 = c in #t87.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t87))));
+  self::throws(() → self::Class* => let final self::Class* #t88 = self::Extension|get#field(new self::Class::•()) in let final void #t89 = self::Extension|set#field(let final self::Class* #t90 = c in #t90.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t90), #t88) in #t88);
+  self::throws(() → self::Class* => c = let final self::Class* #t91 = self::Extension|get#field(new self::Class::•()) in let final void #t92 = self::Extension|set#field(let final self::Class* #t93 = c in #t93.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t93), #t91) in #t91);
+  self::throws(() → self::Class* => let final self::Class* #t94 = let final self::Class* #t95 = new self::Class::•() in let final void #t96 = self::Extension|set#field(new self::Class::•(), #t95) in #t95 in let final void #t97 = self::Extension|set#field(let final self::Class* #t98 = c in #t98.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t98), #t94) in #t94);
+  self::throws(() → self::Class* => c = let final self::Class* #t99 = let final self::Class* #t100 = new self::Class::•() in let final void #t101 = self::Extension|set#field(new self::Class::•(), #t100) in #t100 in let final void #t102 = self::Extension|set#field(let final self::Class* #t103 = c in #t103.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t103), #t99) in #t99);
+  self::throws(() → self::Class* => let final self::Class* #t104 = self::Extension|method(new self::Class::•()) in let final void #t105 = self::Extension|set#field(let final self::Class* #t106 = c in #t106.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t106), #t104) in #t104);
+  self::throws(() → self::Class* => c = let final self::Class* #t107 = self::Extension|method(new self::Class::•()) in let final void #t108 = self::Extension|set#field(let final self::Class* #t109 = c in #t109.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t109), #t107) in #t107);
+  let final self::Class* #t110 = c in #t110.{self::Class::==}(null) ?{self::Class*} null : self::Extension|set#field(#t110, let final self::Class* #t111 = self::Extension|get#field(new self::Class::•()) in let final void #t112 = self::Extension|set#field(new self::Class::•(), #t111) in #t111);
+  c = let final self::Class* #t113 = c in #t113.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t114 = let final self::Class* #t115 = self::Extension|get#field(new self::Class::•()) in let final void #t116 = self::Extension|set#field(new self::Class::•(), #t115) in #t115 in let final void #t117 = self::Extension|set#field(#t113, #t114) in #t114;
+  let final self::Class* #t118 = c in #t118.{self::Class::==}(null) ?{self::Class*} null : self::Extension|set#field(#t118, let final self::Class* #t119 = let final self::Class* #t120 = new self::Class::•() in let final void #t121 = self::Extension|set#field(new self::Class::•(), #t120) in #t120 in let final void #t122 = self::Extension|set#field(new self::Class::•(), #t119) in #t119);
+  c = let final self::Class* #t123 = c in #t123.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t124 = let final self::Class* #t125 = let final self::Class* #t126 = new self::Class::•() in let final void #t127 = self::Extension|set#field(new self::Class::•(), #t126) in #t126 in let final void #t128 = self::Extension|set#field(new self::Class::•(), #t125) in #t125 in let final void #t129 = self::Extension|set#field(#t123, #t124) in #t124;
+  let final self::Class* #t130 = c in #t130.{self::Class::==}(null) ?{self::Class*} null : self::Extension|set#field(#t130, let final self::Class* #t131 = self::Extension|method(new self::Class::•()) in let final void #t132 = self::Extension|set#field(new self::Class::•(), #t131) in #t131);
+  c = let final self::Class* #t133 = c in #t133.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t134 = let final self::Class* #t135 = self::Extension|method(new self::Class::•()) in let final void #t136 = self::Extension|set#field(new self::Class::•(), #t135) in #t135 in let final void #t137 = self::Extension|set#field(#t133, #t134) in #t134;
+  self::throws(() → self::Class* => let final self::Class* #t138 = self::Extension|get#field(new self::Class::•()) in let final void #t139 = self::Extension|set#field(let final self::Class* #t140 = c in #t140.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t140), #t138) in #t138);
+  self::throws(() → self::Class* => c = let final self::Class* #t141 = self::Extension|get#field(new self::Class::•()) in let final void #t142 = self::Extension|set#field(let final self::Class* #t143 = c in #t143.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t143), #t141) in #t141);
+  self::throws(() → self::Class* => let final self::Class* #t144 = let final self::Class* #t145 = new self::Class::•() in let final void #t146 = self::Extension|set#field(new self::Class::•(), #t145) in #t145 in let final void #t147 = self::Extension|set#field(let final self::Class* #t148 = c in #t148.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t148), #t144) in #t144);
+  self::throws(() → self::Class* => c = let final self::Class* #t149 = let final self::Class* #t150 = new self::Class::•() in let final void #t151 = self::Extension|set#field(new self::Class::•(), #t150) in #t150 in let final void #t152 = self::Extension|set#field(let final self::Class* #t153 = c in #t153.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t153), #t149) in #t149);
+  self::throws(() → self::Class* => let final self::Class* #t154 = self::Extension|method(new self::Class::•()) in let final void #t155 = self::Extension|set#field(let final self::Class* #t156 = c in #t156.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t156), #t154) in #t154);
+  self::throws(() → self::Class* => c = let final self::Class* #t157 = self::Extension|method(new self::Class::•()) in let final void #t158 = self::Extension|set#field(let final self::Class* #t159 = c in #t159.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t159), #t157) in #t157);
+  self::throws(() → self::Class* => self::Extension|get#field(self::Extension|method(let final self::Class* #t160 = c in #t160.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t160))));
+  self::throws(() → self::Class* => let final self::Class* #t161 = new self::Class::•() in let final void #t162 = self::Extension|set#field(self::Extension|method(let final self::Class* #t163 = c in #t163.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t163)), #t161) in #t161);
+  self::throws(() → self::Class* => c = let final self::Class* #t164 = new self::Class::•() in let final void #t165 = self::Extension|set#field(self::Extension|method(let final self::Class* #t166 = c in #t166.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t166)), #t164) in #t164);
+  self::throws(() → self::Class* => self::Extension|method(self::Extension|method(let final self::Class* #t167 = c in #t167.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t167))));
+  let final self::Class* #t168 = c in #t168.{self::Class::==}(null) ?{self::Class*} null : self::Extension|set#field(#t168, self::Extension|get#field(self::Extension|method(new self::Class::•())));
+  c = let final self::Class* #t169 = c in #t169.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t170 = self::Extension|get#field(self::Extension|method(new self::Class::•())) in let final void #t171 = self::Extension|set#field(#t169, #t170) in #t170;
+  let final self::Class* #t172 = c in #t172.{self::Class::==}(null) ?{self::Class*} null : self::Extension|set#field(#t172, let final self::Class* #t173 = new self::Class::•() in let final void #t174 = self::Extension|set#field(self::Extension|method(new self::Class::•()), #t173) in #t173);
+  c = let final self::Class* #t175 = c in #t175.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t176 = let final self::Class* #t177 = new self::Class::•() in let final void #t178 = self::Extension|set#field(self::Extension|method(new self::Class::•()), #t177) in #t177 in let final void #t179 = self::Extension|set#field(#t175, #t176) in #t176;
+  let final self::Class* #t180 = c in #t180.{self::Class::==}(null) ?{self::Class*} null : self::Extension|set#field(#t180, self::Extension|method(self::Extension|method(new self::Class::•())));
+  c = let final self::Class* #t181 = c in #t181.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t182 = self::Extension|method(self::Extension|method(new self::Class::•())) in let final void #t183 = self::Extension|set#field(#t181, #t182) in #t182;
+  self::throws(() → self::Class* => self::Extension|get#field(self::Extension|method(let final self::Class* #t184 = c in #t184.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t184))));
+  self::throws(() → self::Class* => let final self::Class* #t185 = new self::Class::•() in let final void #t186 = self::Extension|set#field(self::Extension|method(let final self::Class* #t187 = c in #t187.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t187)), #t185) in #t185);
+  self::throws(() → self::Class* => self::Extension|method(self::Extension|method(let final self::Class* #t188 = c in #t188.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t188))));
+  let final self::Class* #t189 = let final self::Class* #t190 = c in #t190.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t190) in #t189.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t189);
+  self::throws(() → self::Class* => self::Extension|get#field(let final self::Class* #t191 = c in #t191.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t191)));
+  let final self::Class* #t192 = let final self::Class* #t193 = c in #t193.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t193) in #t192.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t192);
 }
 static method indexAccess(self::Class* c) → void {
-  self::throws(() → self::Class* => self::Extension|[](let final self::Class* #t194 = c in #t194.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t194), c));
-  self::throws(() → self::Class* => let final self::Class* #t195 = let final self::Class* #t196 = c in #t196.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t196) in let final self::Class* #t197 = c in let final self::Class* #t198 = new self::Class::•() in let final void #t199 = self::Extension|[]=(#t195, #t197, #t198) in #t198);
-  self::throws(() → self::Class* => c = let final self::Class* #t200 = let final self::Class* #t201 = c in #t201.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t201) in let final self::Class* #t202 = c in let final self::Class* #t203 = new self::Class::•() in let final void #t204 = self::Extension|[]=(#t200, #t202, #t203) in #t203);
-  self::throws(() → self::Class* => self::Extension|method(self::Extension|[](let final self::Class* #t205 = c in #t205.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t205), c)));
-  self::throws(() → self::Class* => let final self::Class* #t206 = let final self::Class* #t207 = c in #t207.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t207) in let final self::Class* #t208 = c in let final self::Class* #t209 = self::Extension|+(self::Extension|[](#t206, #t208), 0) in let final void #t210 = self::Extension|[]=(#t206, #t208, #t209) in #t209);
-  self::throws(() → self::Class* => c = let final self::Class* #t211 = let final self::Class* #t212 = c in #t212.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t212) in let final self::Class* #t213 = c in let final self::Class* #t214 = self::Extension|+(self::Extension|[](#t211, #t213), 0) in let final void #t215 = self::Extension|[]=(#t211, #t213, #t214) in #t214);
-  self::throws(() → self::Class* => let final self::Class* #t216 = let final self::Class* #t217 = c in #t217.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t217) in let final self::Class* #t218 = c in let final self::Class* #t219 = self::Extension|[](#t216, #t218) in let final void #t220 = self::Extension|[]=(#t216, #t218, self::Extension|+(#t219, 1)) in #t219);
-  self::throws(() → self::Class* => c = let final self::Class* #t221 = let final self::Class* #t222 = c in #t222.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t222) in let final self::Class* #t223 = c in let final self::Class* #t224 = self::Extension|[](#t221, #t223) in let final void #t225 = self::Extension|[]=(#t221, #t223, self::Extension|+(#t224, 1)) in #t224);
-  self::throws(() → self::Class* => let final self::Class* #t226 = let final self::Class* #t227 = c in #t227.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t227) in let final self::Class* #t228 = c in let final self::Class* #t229 = self::Extension|+(self::Extension|[](#t226, #t228), 1) in let final void #t230 = self::Extension|[]=(#t226, #t228, #t229) in #t229);
-  self::throws(() → self::Class* => c = let final self::Class* #t231 = let final self::Class* #t232 = c in #t232.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t232) in let final self::Class* #t233 = c in let final self::Class* #t234 = self::Extension|+(self::Extension|[](#t231, #t233), 1) in let final void #t235 = self::Extension|[]=(#t231, #t233, #t234) in #t234);
-  self::throws(() → self::Class* => self::Extension|[](self::Extension|[](let final self::Class* #t236 = c in #t236.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t236), c), c));
-  self::throws(() → self::Class* => let final self::Class* #t237 = self::Extension|[](let final self::Class* #t238 = c in #t238.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t238), c) in let final self::Class* #t239 = c in let final self::Class* #t240 = new self::Class::•() in let final void #t241 = self::Extension|[]=(#t237, #t239, #t240) in #t240);
-  self::throws(() → self::Class* => c = let final self::Class* #t242 = self::Extension|[](let final self::Class* #t243 = c in #t243.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t243), c) in let final self::Class* #t244 = c in let final self::Class* #t245 = new self::Class::•() in let final void #t246 = self::Extension|[]=(#t242, #t244, #t245) in #t245);
-  self::throws(() → self::Class* => self::Extension|method(self::Extension|[](self::Extension|[](let final self::Class* #t247 = c in #t247.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t247), c), c)));
-  self::throws(() → self::Class* => let final self::Class* #t248 = self::Extension|[](let final self::Class* #t249 = c in #t249.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t249), c) in let final self::Class* #t250 = c in let final self::Class* #t251 = self::Extension|+(self::Extension|[](#t248, #t250), 0) in let final void #t252 = self::Extension|[]=(#t248, #t250, #t251) in #t251);
-  self::throws(() → self::Class* => c = let final self::Class* #t253 = self::Extension|[](let final self::Class* #t254 = c in #t254.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t254), c) in let final self::Class* #t255 = c in let final self::Class* #t256 = self::Extension|+(self::Extension|[](#t253, #t255), 0) in let final void #t257 = self::Extension|[]=(#t253, #t255, #t256) in #t256);
-  self::throws(() → self::Class* => let final self::Class* #t258 = self::Extension|[](let final self::Class* #t259 = c in #t259.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t259), c) in let final self::Class* #t260 = c in let final self::Class* #t261 = self::Extension|[](#t258, #t260) in let final void #t262 = self::Extension|[]=(#t258, #t260, self::Extension|+(#t261, 1)) in #t261);
-  self::throws(() → self::Class* => c = let final self::Class* #t263 = self::Extension|[](let final self::Class* #t264 = c in #t264.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t264), c) in let final self::Class* #t265 = c in let final self::Class* #t266 = self::Extension|[](#t263, #t265) in let final void #t267 = self::Extension|[]=(#t263, #t265, self::Extension|+(#t266, 1)) in #t266);
-  self::throws(() → self::Class* => let final self::Class* #t268 = self::Extension|[](let final self::Class* #t269 = c in #t269.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t269), c) in let final self::Class* #t270 = c in let final self::Class* #t271 = self::Extension|+(self::Extension|[](#t268, #t270), 1) in let final void #t272 = self::Extension|[]=(#t268, #t270, #t271) in #t271);
-  self::throws(() → self::Class* => c = let final self::Class* #t273 = self::Extension|[](let final self::Class* #t274 = c in #t274.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t274), c) in let final self::Class* #t275 = c in let final self::Class* #t276 = self::Extension|+(self::Extension|[](#t273, #t275), 1) in let final void #t277 = self::Extension|[]=(#t273, #t275, #t276) in #t276);
+  self::throws(() → self::Class* => self::Extension|[](let final self::Class* #t194 = c in #t194.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t194), c));
+  self::throws(() → self::Class* => let final self::Class* #t195 = let final self::Class* #t196 = c in #t196.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t196) in let final self::Class* #t197 = c in let final self::Class* #t198 = new self::Class::•() in let final void #t199 = self::Extension|[]=(#t195, #t197, #t198) in #t198);
+  self::throws(() → self::Class* => c = let final self::Class* #t200 = let final self::Class* #t201 = c in #t201.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t201) in let final self::Class* #t202 = c in let final self::Class* #t203 = new self::Class::•() in let final void #t204 = self::Extension|[]=(#t200, #t202, #t203) in #t203);
+  self::throws(() → self::Class* => self::Extension|method(self::Extension|[](let final self::Class* #t205 = c in #t205.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t205), c)));
+  self::throws(() → self::Class* => let final self::Class* #t206 = let final self::Class* #t207 = c in #t207.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t207) in let final self::Class* #t208 = c in let final self::Class* #t209 = self::Extension|+(self::Extension|[](#t206, #t208), 0) in let final void #t210 = self::Extension|[]=(#t206, #t208, #t209) in #t209);
+  self::throws(() → self::Class* => c = let final self::Class* #t211 = let final self::Class* #t212 = c in #t212.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t212) in let final self::Class* #t213 = c in let final self::Class* #t214 = self::Extension|+(self::Extension|[](#t211, #t213), 0) in let final void #t215 = self::Extension|[]=(#t211, #t213, #t214) in #t214);
+  self::throws(() → self::Class* => let final self::Class* #t216 = let final self::Class* #t217 = c in #t217.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t217) in let final self::Class* #t218 = c in let final self::Class* #t219 = self::Extension|[](#t216, #t218) in let final void #t220 = self::Extension|[]=(#t216, #t218, self::Extension|+(#t219, 1)) in #t219);
+  self::throws(() → self::Class* => c = let final self::Class* #t221 = let final self::Class* #t222 = c in #t222.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t222) in let final self::Class* #t223 = c in let final self::Class* #t224 = self::Extension|[](#t221, #t223) in let final void #t225 = self::Extension|[]=(#t221, #t223, self::Extension|+(#t224, 1)) in #t224);
+  self::throws(() → self::Class* => let final self::Class* #t226 = let final self::Class* #t227 = c in #t227.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t227) in let final self::Class* #t228 = c in let final self::Class* #t229 = self::Extension|+(self::Extension|[](#t226, #t228), 1) in let final void #t230 = self::Extension|[]=(#t226, #t228, #t229) in #t229);
+  self::throws(() → self::Class* => c = let final self::Class* #t231 = let final self::Class* #t232 = c in #t232.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t232) in let final self::Class* #t233 = c in let final self::Class* #t234 = self::Extension|+(self::Extension|[](#t231, #t233), 1) in let final void #t235 = self::Extension|[]=(#t231, #t233, #t234) in #t234);
+  self::throws(() → self::Class* => self::Extension|[](self::Extension|[](let final self::Class* #t236 = c in #t236.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t236), c), c));
+  self::throws(() → self::Class* => let final self::Class* #t237 = self::Extension|[](let final self::Class* #t238 = c in #t238.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t238), c) in let final self::Class* #t239 = c in let final self::Class* #t240 = new self::Class::•() in let final void #t241 = self::Extension|[]=(#t237, #t239, #t240) in #t240);
+  self::throws(() → self::Class* => c = let final self::Class* #t242 = self::Extension|[](let final self::Class* #t243 = c in #t243.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t243), c) in let final self::Class* #t244 = c in let final self::Class* #t245 = new self::Class::•() in let final void #t246 = self::Extension|[]=(#t242, #t244, #t245) in #t245);
+  self::throws(() → self::Class* => self::Extension|method(self::Extension|[](self::Extension|[](let final self::Class* #t247 = c in #t247.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t247), c), c)));
+  self::throws(() → self::Class* => let final self::Class* #t248 = self::Extension|[](let final self::Class* #t249 = c in #t249.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t249), c) in let final self::Class* #t250 = c in let final self::Class* #t251 = self::Extension|+(self::Extension|[](#t248, #t250), 0) in let final void #t252 = self::Extension|[]=(#t248, #t250, #t251) in #t251);
+  self::throws(() → self::Class* => c = let final self::Class* #t253 = self::Extension|[](let final self::Class* #t254 = c in #t254.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t254), c) in let final self::Class* #t255 = c in let final self::Class* #t256 = self::Extension|+(self::Extension|[](#t253, #t255), 0) in let final void #t257 = self::Extension|[]=(#t253, #t255, #t256) in #t256);
+  self::throws(() → self::Class* => let final self::Class* #t258 = self::Extension|[](let final self::Class* #t259 = c in #t259.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t259), c) in let final self::Class* #t260 = c in let final self::Class* #t261 = self::Extension|[](#t258, #t260) in let final void #t262 = self::Extension|[]=(#t258, #t260, self::Extension|+(#t261, 1)) in #t261);
+  self::throws(() → self::Class* => c = let final self::Class* #t263 = self::Extension|[](let final self::Class* #t264 = c in #t264.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t264), c) in let final self::Class* #t265 = c in let final self::Class* #t266 = self::Extension|[](#t263, #t265) in let final void #t267 = self::Extension|[]=(#t263, #t265, self::Extension|+(#t266, 1)) in #t266);
+  self::throws(() → self::Class* => let final self::Class* #t268 = self::Extension|[](let final self::Class* #t269 = c in #t269.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t269), c) in let final self::Class* #t270 = c in let final self::Class* #t271 = self::Extension|+(self::Extension|[](#t268, #t270), 1) in let final void #t272 = self::Extension|[]=(#t268, #t270, #t271) in #t271);
+  self::throws(() → self::Class* => c = let final self::Class* #t273 = self::Extension|[](let final self::Class* #t274 = c in #t274.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t274), c) in let final self::Class* #t275 = c in let final self::Class* #t276 = self::Extension|+(self::Extension|[](#t273, #t275), 1) in let final void #t277 = self::Extension|[]=(#t273, #t275, #t276) in #t276);
 }
 static method operatorAccess(self::Class* c) → void {
-  self::throws(() → self::Class* => self::Extension|+(let final self::Class* #t278 = c in #t278.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t278), 0));
-  self::throws(() → self::Class* => self::Extension|unary-(let final self::Class* #t279 = c in #t279.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t279)));
-  let final self::Class* #t280 = c in #t280.{core::Object::==}(null) ?{self::Class*} null : self::Extension|set#field(#t280, self::Extension|+(self::Extension|get#field(#t280), 0));
-  c = let final self::Class* #t281 = c in #t281.{core::Object::==}(null) ?{self::Class*} null : let final self::Class* #t282 = self::Extension|+(self::Extension|get#field(#t281), 0) in let final void #t283 = self::Extension|set#field(#t281, #t282) in #t282;
-  self::throws(() → self::Class* => let final self::Class* #t284 = let final self::Class* #t285 = c in #t285.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t285) in let final self::Class* #t286 = self::Extension|+(self::Extension|get#field(#t284), 0) in let final void #t287 = self::Extension|set#field(#t284, #t286) in #t286);
-  self::throws(() → self::Class* => c = let final self::Class* #t288 = let final self::Class* #t289 = c in #t289.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t289) in let final self::Class* #t290 = self::Extension|+(self::Extension|get#field(#t288), 0) in let final void #t291 = self::Extension|set#field(#t288, #t290) in #t290);
-  let final self::Class* #t292 = c in #t292.{core::Object::==}(null) ?{self::Class*} null : self::Extension|set#field(#t292, self::Extension|+(self::Extension|get#field(#t292), 1));
-  c = let final self::Class* #t293 = c in #t293.{core::Object::==}(null) ?{self::Class*} null : let final self::Class* #t294 = self::Extension|get#field(#t293) in let final self::Class* #t295 = let final self::Class* #t296 = self::Extension|+(#t294, 1) in let final void #t297 = self::Extension|set#field(#t293, #t296) in #t296 in #t294;
-  let final self::Class* #t298 = c in #t298.{core::Object::==}(null) ?{self::Class*} null : let final self::Class* #t299 = self::Extension|+(self::Extension|get#field(#t298), 1) in let final void #t300 = self::Extension|set#field(#t298, #t299) in #t299;
-  c = let final self::Class* #t301 = c in #t301.{core::Object::==}(null) ?{self::Class*} null : let final self::Class* #t302 = self::Extension|+(self::Extension|get#field(#t301), 1) in let final void #t303 = self::Extension|set#field(#t301, #t302) in #t302;
+  self::throws(() → self::Class* => self::Extension|+(let final self::Class* #t278 = c in #t278.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t278), 0));
+  self::throws(() → self::Class* => self::Extension|unary-(let final self::Class* #t279 = c in #t279.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t279)));
+  let final self::Class* #t280 = c in #t280.{self::Class::==}(null) ?{self::Class*} null : self::Extension|set#field(#t280, self::Extension|+(self::Extension|get#field(#t280), 0));
+  c = let final self::Class* #t281 = c in #t281.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t282 = self::Extension|+(self::Extension|get#field(#t281), 0) in let final void #t283 = self::Extension|set#field(#t281, #t282) in #t282;
+  self::throws(() → self::Class* => let final self::Class* #t284 = let final self::Class* #t285 = c in #t285.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t285) in let final self::Class* #t286 = self::Extension|+(self::Extension|get#field(#t284), 0) in let final void #t287 = self::Extension|set#field(#t284, #t286) in #t286);
+  self::throws(() → self::Class* => c = let final self::Class* #t288 = let final self::Class* #t289 = c in #t289.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t289) in let final self::Class* #t290 = self::Extension|+(self::Extension|get#field(#t288), 0) in let final void #t291 = self::Extension|set#field(#t288, #t290) in #t290);
+  let final self::Class* #t292 = c in #t292.{self::Class::==}(null) ?{self::Class*} null : self::Extension|set#field(#t292, self::Extension|+(self::Extension|get#field(#t292), 1));
+  c = let final self::Class* #t293 = c in #t293.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t294 = self::Extension|get#field(#t293) in let final self::Class* #t295 = let final self::Class* #t296 = self::Extension|+(#t294, 1) in let final void #t297 = self::Extension|set#field(#t293, #t296) in #t296 in #t294;
+  let final self::Class* #t298 = c in #t298.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t299 = self::Extension|+(self::Extension|get#field(#t298), 1) in let final void #t300 = self::Extension|set#field(#t298, #t299) in #t299;
+  c = let final self::Class* #t301 = c in #t301.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t302 = self::Extension|+(self::Extension|get#field(#t301), 1) in let final void #t303 = self::Extension|set#field(#t301, #t302) in #t302;
 }
 static method ifNull(self::Class* c) → void {
-  let final self::Class* #t304 = c in #t304.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t304).{core::Object::==}(null) ?{self::Class*} self::Extension|set#field(#t304, c) : null;
-  c = let final self::Class* #t305 = c in #t305.{core::Object::==}(null) ?{self::Class*} null : let final self::Class* #t306 = self::Extension|get#field(#t305) in #t306.{core::Object::==}(null) ?{self::Class*} let final self::Class* #t307 = c in let final void #t308 = self::Extension|set#field(#t305, #t307) in #t307 : #t306;
-  self::throws(() → self::Class* => let final self::Class* #t309 = let final self::Class* #t310 = c in #t310.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t310) in let final self::Class* #t311 = self::Extension|get#field(#t309) in #t311.{core::Object::==}(null) ?{self::Class*} let final self::Class* #t312 = c in let final void #t313 = self::Extension|set#field(#t309, #t312) in #t312 : #t311);
-  self::throws(() → self::Class* => c = let final self::Class* #t314 = let final self::Class* #t315 = c in #t315.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t315) in let final self::Class* #t316 = self::Extension|get#field(#t314) in #t316.{core::Object::==}(null) ?{self::Class*} let final self::Class* #t317 = c in let final void #t318 = self::Extension|set#field(#t314, #t317) in #t317 : #t316);
-  self::throws(() → self::Class* => let final self::Class* #t319 = let final self::Class* #t320 = c in #t320.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t320) in let final self::Class* #t321 = c in let final self::Class* #t322 = self::Extension|[](#t319, #t321) in #t322.{core::Object::==}(null) ?{self::Class*} let final self::Class* #t323 = c in let final void #t324 = self::Extension|[]=(#t319, #t321, #t323) in #t323 : #t322);
-  self::throws(() → self::Class* => c = let final self::Class* #t325 = let final self::Class* #t326 = c in #t326.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t326) in let final self::Class* #t327 = c in let final self::Class* #t328 = self::Extension|[](#t325, #t327) in #t328.{core::Object::==}(null) ?{self::Class*} let final self::Class* #t329 = c in let final void #t330 = self::Extension|[]=(#t325, #t327, #t329) in #t329 : #t328);
+  let final self::Class* #t304 = c in #t304.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t304).{self::Class::==}(null) ?{self::Class*} self::Extension|set#field(#t304, c) : null;
+  c = let final self::Class* #t305 = c in #t305.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t306 = self::Extension|get#field(#t305) in #t306.{self::Class::==}(null) ?{self::Class*} let final self::Class* #t307 = c in let final void #t308 = self::Extension|set#field(#t305, #t307) in #t307 : #t306;
+  self::throws(() → self::Class* => let final self::Class* #t309 = let final self::Class* #t310 = c in #t310.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t310) in let final self::Class* #t311 = self::Extension|get#field(#t309) in #t311.{self::Class::==}(null) ?{self::Class*} let final self::Class* #t312 = c in let final void #t313 = self::Extension|set#field(#t309, #t312) in #t312 : #t311);
+  self::throws(() → self::Class* => c = let final self::Class* #t314 = let final self::Class* #t315 = c in #t315.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t315) in let final self::Class* #t316 = self::Extension|get#field(#t314) in #t316.{self::Class::==}(null) ?{self::Class*} let final self::Class* #t317 = c in let final void #t318 = self::Extension|set#field(#t314, #t317) in #t317 : #t316);
+  self::throws(() → self::Class* => let final self::Class* #t319 = let final self::Class* #t320 = c in #t320.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t320) in let final self::Class* #t321 = c in let final self::Class* #t322 = self::Extension|[](#t319, #t321) in #t322.{self::Class::==}(null) ?{self::Class*} let final self::Class* #t323 = c in let final void #t324 = self::Extension|[]=(#t319, #t321, #t323) in #t323 : #t322);
+  self::throws(() → self::Class* => c = let final self::Class* #t325 = let final self::Class* #t326 = c in #t326.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t326) in let final self::Class* #t327 = c in let final self::Class* #t328 = self::Extension|[](#t325, #t327) in #t328.{self::Class::==}(null) ?{self::Class*} let final self::Class* #t329 = c in let final void #t330 = self::Extension|[]=(#t325, #t327, #t329) in #t329 : #t328);
 }
 static method throws(() →* void f) → void {
   try {
diff --git a/pkg/front_end/testcases/nnbd/no_null_shorting_explicit_extension.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/no_null_shorting_explicit_extension.dart.strong.transformed.expect
index 90b06d3..1792025 100644
--- a/pkg/front_end/testcases/nnbd/no_null_shorting_explicit_extension.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/no_null_shorting_explicit_extension.dart.strong.transformed.expect
@@ -7,6 +7,16 @@
   synthetic constructor •() → self::Class*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 extension Extension on self::Class* {
   get field = self::Extension|get#field;
@@ -43,121 +53,121 @@
   self::ifNull(null);
 }
 static method propertyAccess(self::Class* c) → void {
-  let final self::Class* #t1 = c in #t1.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t1);
-  let final self::Class* #t2 = c in #t2.{core::Object::==}(null) ?{self::Class*} null : self::Extension|set#field(#t2, new self::Class::•());
-  c = let final self::Class* #t3 = c in #t3.{core::Object::==}(null) ?{self::Class*} null : let final self::Class* #t4 = new self::Class::•() in let final void #t5 = self::Extension|set#field(#t3, #t4) in #t4;
-  let final self::Class* #t6 = c in #t6.{core::Object::==}(null) ?{self::Class*} null : self::Extension|method(#t6);
-  self::throws(() → self::Class* => self::Extension|get#field(let final self::Class* #t7 = c in #t7.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t7)));
-  let final self::Class* #t8 = let final self::Class* #t9 = c in #t9.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t9) in #t8.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t8);
-  self::throws(() → self::Class* => let final self::Class* #t10 = self::Extension|get#field(let final self::Class* #t11 = c in #t11.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t11)) in #t10.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t10));
-  self::throws(() → self::Class* => let final self::Class* #t12 = new self::Class::•() in let final void #t13 = self::Extension|set#field(let final self::Class* #t14 = c in #t14.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t14), #t12) in #t12);
-  let final self::Class* #t15 = let final self::Class* #t16 = c in #t16.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t16) in #t15.{core::Object::==}(null) ?{self::Class*} null : self::Extension|set#field(#t15, new self::Class::•());
-  self::throws(() → self::Class* => let final self::Class* #t17 = self::Extension|get#field(let final self::Class* #t18 = c in #t18.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t18)) in #t17.{core::Object::==}(null) ?{self::Class*} null : let final self::Class* #t19 = new self::Class::•() in let final void #t20 = self::Extension|set#field(#t17, #t19) in #t19);
-  self::throws(() → self::Class* => self::Extension|get#field(let final self::Class* #t21 = c in #t21.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t21)));
-  self::throws(() → self::Class* => self::Extension|get#field(let final self::Class* #t22 = c in #t22.{core::Object::==}(null) ?{self::Class*} null : let final self::Class* #t23 = new self::Class::•() in let final void #t24 = self::Extension|set#field(#t22, #t23) in #t23));
-  self::throws(() → self::Class* => self::Extension|get#field(let final self::Class* #t25 = c in #t25.{core::Object::==}(null) ?{self::Class*} null : self::Extension|method(#t25)));
-  self::throws(() → self::Class* => c = let final self::Class* #t26 = new self::Class::•() in let final void #t27 = self::Extension|set#field(let final self::Class* #t28 = c in #t28.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t28), #t26) in #t26);
-  c = let final self::Class* #t29 = let final self::Class* #t30 = c in #t30.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t30) in #t29.{core::Object::==}(null) ?{self::Class*} null : let final self::Class* #t31 = new self::Class::•() in let final void #t32 = self::Extension|set#field(#t29, #t31) in #t31;
-  self::throws(() → self::Class* => c = let final self::Class* #t33 = self::Extension|get#field(let final self::Class* #t34 = c in #t34.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t34)) in #t33.{core::Object::==}(null) ?{self::Class*} null : let final self::Class* #t35 = new self::Class::•() in let final void #t36 = self::Extension|set#field(#t33, #t35) in #t35);
-  self::throws(() → self::Class* => self::Extension|method(let final self::Class* #t37 = c in #t37.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t37)));
-  let final self::Class* #t38 = c in #t38.{core::Object::==}(null) ?{self::Class*} null : self::Extension|set#field(#t38, self::Extension|get#field(new self::Class::•()));
-  c = let final self::Class* #t39 = c in #t39.{core::Object::==}(null) ?{self::Class*} null : let final self::Class* #t40 = self::Extension|get#field(new self::Class::•()) in let final void #t41 = self::Extension|set#field(#t39, #t40) in #t40;
-  let final self::Class* #t42 = c in #t42.{core::Object::==}(null) ?{self::Class*} null : self::Extension|set#field(#t42, let final self::Class* #t43 = new self::Class::•() in let final void #t44 = self::Extension|set#field(new self::Class::•(), #t43) in #t43);
-  c = let final self::Class* #t45 = c in #t45.{core::Object::==}(null) ?{self::Class*} null : let final self::Class* #t46 = let final self::Class* #t47 = new self::Class::•() in let final void #t48 = self::Extension|set#field(new self::Class::•(), #t47) in #t47 in let final void #t49 = self::Extension|set#field(#t45, #t46) in #t46;
-  let final self::Class* #t50 = c in #t50.{core::Object::==}(null) ?{self::Class*} null : self::Extension|set#field(#t50, self::Extension|method(new self::Class::•()));
-  c = let final self::Class* #t51 = c in #t51.{core::Object::==}(null) ?{self::Class*} null : let final self::Class* #t52 = self::Extension|method(new self::Class::•()) in let final void #t53 = self::Extension|set#field(#t51, #t52) in #t52;
-  self::throws(() → self::Class* => self::Extension|get#field(let final self::Class* #t54 = c in #t54.{core::Object::==}(null) ?{self::Class*} null : self::Extension|method(#t54)));
-  self::throws(() → self::Class* => let final self::Class* #t55 = new self::Class::•() in let final void #t56 = self::Extension|set#field(let final self::Class* #t57 = c in #t57.{core::Object::==}(null) ?{self::Class*} null : self::Extension|method(#t57), #t55) in #t55);
-  self::throws(() → self::Class* => self::Extension|method(let final self::Class* #t58 = c in #t58.{core::Object::==}(null) ?{self::Class*} null : self::Extension|method(#t58)));
-  self::throws(() → self::Class* => self::Extension|get#field(self::Extension|get#field(let final self::Class* #t59 = c in #t59.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t59))));
-  self::throws(() → self::Class* => let final self::Class* #t60 = new self::Class::•() in let final void #t61 = self::Extension|set#field(self::Extension|get#field(let final self::Class* #t62 = c in #t62.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t62)), #t60) in #t60);
-  self::throws(() → self::Class* => c = let final self::Class* #t63 = new self::Class::•() in let final void #t64 = self::Extension|set#field(self::Extension|get#field(let final self::Class* #t65 = c in #t65.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t65)), #t63) in #t63);
-  self::throws(() → self::Class* => self::Extension|method(self::Extension|get#field(let final self::Class* #t66 = c in #t66.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t66))));
-  let final self::Class* #t67 = c in #t67.{core::Object::==}(null) ?{self::Class*} null : self::Extension|set#field(#t67, self::Extension|get#field(self::Extension|get#field(new self::Class::•())));
-  c = let final self::Class* #t68 = c in #t68.{core::Object::==}(null) ?{self::Class*} null : let final self::Class* #t69 = self::Extension|get#field(self::Extension|get#field(new self::Class::•())) in let final void #t70 = self::Extension|set#field(#t68, #t69) in #t69;
-  let final self::Class* #t71 = c in #t71.{core::Object::==}(null) ?{self::Class*} null : self::Extension|set#field(#t71, let final self::Class* #t72 = new self::Class::•() in let final void #t73 = self::Extension|set#field(self::Extension|get#field(new self::Class::•()), #t72) in #t72);
-  c = let final self::Class* #t74 = c in #t74.{core::Object::==}(null) ?{self::Class*} null : let final self::Class* #t75 = let final self::Class* #t76 = new self::Class::•() in let final void #t77 = self::Extension|set#field(self::Extension|get#field(new self::Class::•()), #t76) in #t76 in let final void #t78 = self::Extension|set#field(#t74, #t75) in #t75;
-  let final self::Class* #t79 = c in #t79.{core::Object::==}(null) ?{self::Class*} null : self::Extension|set#field(#t79, self::Extension|method(self::Extension|get#field(new self::Class::•())));
-  c = let final self::Class* #t80 = c in #t80.{core::Object::==}(null) ?{self::Class*} null : let final self::Class* #t81 = self::Extension|method(self::Extension|get#field(new self::Class::•())) in let final void #t82 = self::Extension|set#field(#t80, #t81) in #t81;
-  self::throws(() → self::Class* => self::Extension|get#field(self::Extension|get#field(let final self::Class* #t83 = c in #t83.{core::Object::==}(null) ?{self::Class*} null : self::Extension|method(#t83))));
-  self::throws(() → self::Class* => let final self::Class* #t84 = new self::Class::•() in let final void #t85 = self::Extension|set#field(self::Extension|get#field(let final self::Class* #t86 = c in #t86.{core::Object::==}(null) ?{self::Class*} null : self::Extension|method(#t86)), #t84) in #t84);
-  self::throws(() → self::Class* => self::Extension|method(self::Extension|get#field(let final self::Class* #t87 = c in #t87.{core::Object::==}(null) ?{self::Class*} null : self::Extension|method(#t87))));
-  self::throws(() → self::Class* => let final self::Class* #t88 = self::Extension|get#field(new self::Class::•()) in let final void #t89 = self::Extension|set#field(let final self::Class* #t90 = c in #t90.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t90), #t88) in #t88);
-  self::throws(() → self::Class* => c = let final self::Class* #t91 = self::Extension|get#field(new self::Class::•()) in let final void #t92 = self::Extension|set#field(let final self::Class* #t93 = c in #t93.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t93), #t91) in #t91);
-  self::throws(() → self::Class* => let final self::Class* #t94 = let final self::Class* #t95 = new self::Class::•() in let final void #t96 = self::Extension|set#field(new self::Class::•(), #t95) in #t95 in let final void #t97 = self::Extension|set#field(let final self::Class* #t98 = c in #t98.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t98), #t94) in #t94);
-  self::throws(() → self::Class* => c = let final self::Class* #t99 = let final self::Class* #t100 = new self::Class::•() in let final void #t101 = self::Extension|set#field(new self::Class::•(), #t100) in #t100 in let final void #t102 = self::Extension|set#field(let final self::Class* #t103 = c in #t103.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t103), #t99) in #t99);
-  self::throws(() → self::Class* => let final self::Class* #t104 = self::Extension|method(new self::Class::•()) in let final void #t105 = self::Extension|set#field(let final self::Class* #t106 = c in #t106.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t106), #t104) in #t104);
-  self::throws(() → self::Class* => c = let final self::Class* #t107 = self::Extension|method(new self::Class::•()) in let final void #t108 = self::Extension|set#field(let final self::Class* #t109 = c in #t109.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t109), #t107) in #t107);
-  let final self::Class* #t110 = c in #t110.{core::Object::==}(null) ?{self::Class*} null : self::Extension|set#field(#t110, let final self::Class* #t111 = self::Extension|get#field(new self::Class::•()) in let final void #t112 = self::Extension|set#field(new self::Class::•(), #t111) in #t111);
-  c = let final self::Class* #t113 = c in #t113.{core::Object::==}(null) ?{self::Class*} null : let final self::Class* #t114 = let final self::Class* #t115 = self::Extension|get#field(new self::Class::•()) in let final void #t116 = self::Extension|set#field(new self::Class::•(), #t115) in #t115 in let final void #t117 = self::Extension|set#field(#t113, #t114) in #t114;
-  let final self::Class* #t118 = c in #t118.{core::Object::==}(null) ?{self::Class*} null : self::Extension|set#field(#t118, let final self::Class* #t119 = let final self::Class* #t120 = new self::Class::•() in let final void #t121 = self::Extension|set#field(new self::Class::•(), #t120) in #t120 in let final void #t122 = self::Extension|set#field(new self::Class::•(), #t119) in #t119);
-  c = let final self::Class* #t123 = c in #t123.{core::Object::==}(null) ?{self::Class*} null : let final self::Class* #t124 = let final self::Class* #t125 = let final self::Class* #t126 = new self::Class::•() in let final void #t127 = self::Extension|set#field(new self::Class::•(), #t126) in #t126 in let final void #t128 = self::Extension|set#field(new self::Class::•(), #t125) in #t125 in let final void #t129 = self::Extension|set#field(#t123, #t124) in #t124;
-  let final self::Class* #t130 = c in #t130.{core::Object::==}(null) ?{self::Class*} null : self::Extension|set#field(#t130, let final self::Class* #t131 = self::Extension|method(new self::Class::•()) in let final void #t132 = self::Extension|set#field(new self::Class::•(), #t131) in #t131);
-  c = let final self::Class* #t133 = c in #t133.{core::Object::==}(null) ?{self::Class*} null : let final self::Class* #t134 = let final self::Class* #t135 = self::Extension|method(new self::Class::•()) in let final void #t136 = self::Extension|set#field(new self::Class::•(), #t135) in #t135 in let final void #t137 = self::Extension|set#field(#t133, #t134) in #t134;
-  self::throws(() → self::Class* => let final self::Class* #t138 = self::Extension|get#field(new self::Class::•()) in let final void #t139 = self::Extension|set#field(let final self::Class* #t140 = c in #t140.{core::Object::==}(null) ?{self::Class*} null : self::Extension|method(#t140), #t138) in #t138);
-  self::throws(() → self::Class* => c = let final self::Class* #t141 = self::Extension|get#field(new self::Class::•()) in let final void #t142 = self::Extension|set#field(let final self::Class* #t143 = c in #t143.{core::Object::==}(null) ?{self::Class*} null : self::Extension|method(#t143), #t141) in #t141);
-  self::throws(() → self::Class* => let final self::Class* #t144 = let final self::Class* #t145 = new self::Class::•() in let final void #t146 = self::Extension|set#field(new self::Class::•(), #t145) in #t145 in let final void #t147 = self::Extension|set#field(let final self::Class* #t148 = c in #t148.{core::Object::==}(null) ?{self::Class*} null : self::Extension|method(#t148), #t144) in #t144);
-  self::throws(() → self::Class* => c = let final self::Class* #t149 = let final self::Class* #t150 = new self::Class::•() in let final void #t151 = self::Extension|set#field(new self::Class::•(), #t150) in #t150 in let final void #t152 = self::Extension|set#field(let final self::Class* #t153 = c in #t153.{core::Object::==}(null) ?{self::Class*} null : self::Extension|method(#t153), #t149) in #t149);
-  self::throws(() → self::Class* => let final self::Class* #t154 = self::Extension|method(new self::Class::•()) in let final void #t155 = self::Extension|set#field(let final self::Class* #t156 = c in #t156.{core::Object::==}(null) ?{self::Class*} null : self::Extension|method(#t156), #t154) in #t154);
-  self::throws(() → self::Class* => c = let final self::Class* #t157 = self::Extension|method(new self::Class::•()) in let final void #t158 = self::Extension|set#field(let final self::Class* #t159 = c in #t159.{core::Object::==}(null) ?{self::Class*} null : self::Extension|method(#t159), #t157) in #t157);
-  self::throws(() → self::Class* => self::Extension|get#field(self::Extension|method(let final self::Class* #t160 = c in #t160.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t160))));
-  self::throws(() → self::Class* => let final self::Class* #t161 = new self::Class::•() in let final void #t162 = self::Extension|set#field(self::Extension|method(let final self::Class* #t163 = c in #t163.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t163)), #t161) in #t161);
-  self::throws(() → self::Class* => c = let final self::Class* #t164 = new self::Class::•() in let final void #t165 = self::Extension|set#field(self::Extension|method(let final self::Class* #t166 = c in #t166.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t166)), #t164) in #t164);
-  self::throws(() → self::Class* => self::Extension|method(self::Extension|method(let final self::Class* #t167 = c in #t167.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t167))));
-  let final self::Class* #t168 = c in #t168.{core::Object::==}(null) ?{self::Class*} null : self::Extension|set#field(#t168, self::Extension|get#field(self::Extension|method(new self::Class::•())));
-  c = let final self::Class* #t169 = c in #t169.{core::Object::==}(null) ?{self::Class*} null : let final self::Class* #t170 = self::Extension|get#field(self::Extension|method(new self::Class::•())) in let final void #t171 = self::Extension|set#field(#t169, #t170) in #t170;
-  let final self::Class* #t172 = c in #t172.{core::Object::==}(null) ?{self::Class*} null : self::Extension|set#field(#t172, let final self::Class* #t173 = new self::Class::•() in let final void #t174 = self::Extension|set#field(self::Extension|method(new self::Class::•()), #t173) in #t173);
-  c = let final self::Class* #t175 = c in #t175.{core::Object::==}(null) ?{self::Class*} null : let final self::Class* #t176 = let final self::Class* #t177 = new self::Class::•() in let final void #t178 = self::Extension|set#field(self::Extension|method(new self::Class::•()), #t177) in #t177 in let final void #t179 = self::Extension|set#field(#t175, #t176) in #t176;
-  let final self::Class* #t180 = c in #t180.{core::Object::==}(null) ?{self::Class*} null : self::Extension|set#field(#t180, self::Extension|method(self::Extension|method(new self::Class::•())));
-  c = let final self::Class* #t181 = c in #t181.{core::Object::==}(null) ?{self::Class*} null : let final self::Class* #t182 = self::Extension|method(self::Extension|method(new self::Class::•())) in let final void #t183 = self::Extension|set#field(#t181, #t182) in #t182;
-  self::throws(() → self::Class* => self::Extension|get#field(self::Extension|method(let final self::Class* #t184 = c in #t184.{core::Object::==}(null) ?{self::Class*} null : self::Extension|method(#t184))));
-  self::throws(() → self::Class* => let final self::Class* #t185 = new self::Class::•() in let final void #t186 = self::Extension|set#field(self::Extension|method(let final self::Class* #t187 = c in #t187.{core::Object::==}(null) ?{self::Class*} null : self::Extension|method(#t187)), #t185) in #t185);
-  self::throws(() → self::Class* => self::Extension|method(self::Extension|method(let final self::Class* #t188 = c in #t188.{core::Object::==}(null) ?{self::Class*} null : self::Extension|method(#t188))));
-  let final self::Class* #t189 = let final self::Class* #t190 = c in #t190.{core::Object::==}(null) ?{self::Class*} null : self::Extension|method(#t190) in #t189.{core::Object::==}(null) ?{self::Class*} null : self::Extension|method(#t189);
-  self::throws(() → self::Class* => self::Extension|get#field(let final self::Class* #t191 = c in #t191.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t191)));
-  let final self::Class* #t192 = let final self::Class* #t193 = c in #t193.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t193) in #t192.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t192);
+  let final self::Class* #t1 = c in #t1.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t1);
+  let final self::Class* #t2 = c in #t2.{self::Class::==}(null) ?{self::Class*} null : self::Extension|set#field(#t2, new self::Class::•());
+  c = let final self::Class* #t3 = c in #t3.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t4 = new self::Class::•() in let final void #t5 = self::Extension|set#field(#t3, #t4) in #t4;
+  let final self::Class* #t6 = c in #t6.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t6);
+  self::throws(() → self::Class* => self::Extension|get#field(let final self::Class* #t7 = c in #t7.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t7)));
+  let final self::Class* #t8 = let final self::Class* #t9 = c in #t9.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t9) in #t8.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t8);
+  self::throws(() → self::Class* => let final self::Class* #t10 = self::Extension|get#field(let final self::Class* #t11 = c in #t11.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t11)) in #t10.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t10));
+  self::throws(() → self::Class* => let final self::Class* #t12 = new self::Class::•() in let final void #t13 = self::Extension|set#field(let final self::Class* #t14 = c in #t14.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t14), #t12) in #t12);
+  let final self::Class* #t15 = let final self::Class* #t16 = c in #t16.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t16) in #t15.{self::Class::==}(null) ?{self::Class*} null : self::Extension|set#field(#t15, new self::Class::•());
+  self::throws(() → self::Class* => let final self::Class* #t17 = self::Extension|get#field(let final self::Class* #t18 = c in #t18.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t18)) in #t17.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t19 = new self::Class::•() in let final void #t20 = self::Extension|set#field(#t17, #t19) in #t19);
+  self::throws(() → self::Class* => self::Extension|get#field(let final self::Class* #t21 = c in #t21.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t21)));
+  self::throws(() → self::Class* => self::Extension|get#field(let final self::Class* #t22 = c in #t22.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t23 = new self::Class::•() in let final void #t24 = self::Extension|set#field(#t22, #t23) in #t23));
+  self::throws(() → self::Class* => self::Extension|get#field(let final self::Class* #t25 = c in #t25.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t25)));
+  self::throws(() → self::Class* => c = let final self::Class* #t26 = new self::Class::•() in let final void #t27 = self::Extension|set#field(let final self::Class* #t28 = c in #t28.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t28), #t26) in #t26);
+  c = let final self::Class* #t29 = let final self::Class* #t30 = c in #t30.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t30) in #t29.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t31 = new self::Class::•() in let final void #t32 = self::Extension|set#field(#t29, #t31) in #t31;
+  self::throws(() → self::Class* => c = let final self::Class* #t33 = self::Extension|get#field(let final self::Class* #t34 = c in #t34.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t34)) in #t33.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t35 = new self::Class::•() in let final void #t36 = self::Extension|set#field(#t33, #t35) in #t35);
+  self::throws(() → self::Class* => self::Extension|method(let final self::Class* #t37 = c in #t37.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t37)));
+  let final self::Class* #t38 = c in #t38.{self::Class::==}(null) ?{self::Class*} null : self::Extension|set#field(#t38, self::Extension|get#field(new self::Class::•()));
+  c = let final self::Class* #t39 = c in #t39.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t40 = self::Extension|get#field(new self::Class::•()) in let final void #t41 = self::Extension|set#field(#t39, #t40) in #t40;
+  let final self::Class* #t42 = c in #t42.{self::Class::==}(null) ?{self::Class*} null : self::Extension|set#field(#t42, let final self::Class* #t43 = new self::Class::•() in let final void #t44 = self::Extension|set#field(new self::Class::•(), #t43) in #t43);
+  c = let final self::Class* #t45 = c in #t45.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t46 = let final self::Class* #t47 = new self::Class::•() in let final void #t48 = self::Extension|set#field(new self::Class::•(), #t47) in #t47 in let final void #t49 = self::Extension|set#field(#t45, #t46) in #t46;
+  let final self::Class* #t50 = c in #t50.{self::Class::==}(null) ?{self::Class*} null : self::Extension|set#field(#t50, self::Extension|method(new self::Class::•()));
+  c = let final self::Class* #t51 = c in #t51.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t52 = self::Extension|method(new self::Class::•()) in let final void #t53 = self::Extension|set#field(#t51, #t52) in #t52;
+  self::throws(() → self::Class* => self::Extension|get#field(let final self::Class* #t54 = c in #t54.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t54)));
+  self::throws(() → self::Class* => let final self::Class* #t55 = new self::Class::•() in let final void #t56 = self::Extension|set#field(let final self::Class* #t57 = c in #t57.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t57), #t55) in #t55);
+  self::throws(() → self::Class* => self::Extension|method(let final self::Class* #t58 = c in #t58.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t58)));
+  self::throws(() → self::Class* => self::Extension|get#field(self::Extension|get#field(let final self::Class* #t59 = c in #t59.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t59))));
+  self::throws(() → self::Class* => let final self::Class* #t60 = new self::Class::•() in let final void #t61 = self::Extension|set#field(self::Extension|get#field(let final self::Class* #t62 = c in #t62.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t62)), #t60) in #t60);
+  self::throws(() → self::Class* => c = let final self::Class* #t63 = new self::Class::•() in let final void #t64 = self::Extension|set#field(self::Extension|get#field(let final self::Class* #t65 = c in #t65.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t65)), #t63) in #t63);
+  self::throws(() → self::Class* => self::Extension|method(self::Extension|get#field(let final self::Class* #t66 = c in #t66.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t66))));
+  let final self::Class* #t67 = c in #t67.{self::Class::==}(null) ?{self::Class*} null : self::Extension|set#field(#t67, self::Extension|get#field(self::Extension|get#field(new self::Class::•())));
+  c = let final self::Class* #t68 = c in #t68.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t69 = self::Extension|get#field(self::Extension|get#field(new self::Class::•())) in let final void #t70 = self::Extension|set#field(#t68, #t69) in #t69;
+  let final self::Class* #t71 = c in #t71.{self::Class::==}(null) ?{self::Class*} null : self::Extension|set#field(#t71, let final self::Class* #t72 = new self::Class::•() in let final void #t73 = self::Extension|set#field(self::Extension|get#field(new self::Class::•()), #t72) in #t72);
+  c = let final self::Class* #t74 = c in #t74.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t75 = let final self::Class* #t76 = new self::Class::•() in let final void #t77 = self::Extension|set#field(self::Extension|get#field(new self::Class::•()), #t76) in #t76 in let final void #t78 = self::Extension|set#field(#t74, #t75) in #t75;
+  let final self::Class* #t79 = c in #t79.{self::Class::==}(null) ?{self::Class*} null : self::Extension|set#field(#t79, self::Extension|method(self::Extension|get#field(new self::Class::•())));
+  c = let final self::Class* #t80 = c in #t80.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t81 = self::Extension|method(self::Extension|get#field(new self::Class::•())) in let final void #t82 = self::Extension|set#field(#t80, #t81) in #t81;
+  self::throws(() → self::Class* => self::Extension|get#field(self::Extension|get#field(let final self::Class* #t83 = c in #t83.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t83))));
+  self::throws(() → self::Class* => let final self::Class* #t84 = new self::Class::•() in let final void #t85 = self::Extension|set#field(self::Extension|get#field(let final self::Class* #t86 = c in #t86.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t86)), #t84) in #t84);
+  self::throws(() → self::Class* => self::Extension|method(self::Extension|get#field(let final self::Class* #t87 = c in #t87.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t87))));
+  self::throws(() → self::Class* => let final self::Class* #t88 = self::Extension|get#field(new self::Class::•()) in let final void #t89 = self::Extension|set#field(let final self::Class* #t90 = c in #t90.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t90), #t88) in #t88);
+  self::throws(() → self::Class* => c = let final self::Class* #t91 = self::Extension|get#field(new self::Class::•()) in let final void #t92 = self::Extension|set#field(let final self::Class* #t93 = c in #t93.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t93), #t91) in #t91);
+  self::throws(() → self::Class* => let final self::Class* #t94 = let final self::Class* #t95 = new self::Class::•() in let final void #t96 = self::Extension|set#field(new self::Class::•(), #t95) in #t95 in let final void #t97 = self::Extension|set#field(let final self::Class* #t98 = c in #t98.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t98), #t94) in #t94);
+  self::throws(() → self::Class* => c = let final self::Class* #t99 = let final self::Class* #t100 = new self::Class::•() in let final void #t101 = self::Extension|set#field(new self::Class::•(), #t100) in #t100 in let final void #t102 = self::Extension|set#field(let final self::Class* #t103 = c in #t103.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t103), #t99) in #t99);
+  self::throws(() → self::Class* => let final self::Class* #t104 = self::Extension|method(new self::Class::•()) in let final void #t105 = self::Extension|set#field(let final self::Class* #t106 = c in #t106.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t106), #t104) in #t104);
+  self::throws(() → self::Class* => c = let final self::Class* #t107 = self::Extension|method(new self::Class::•()) in let final void #t108 = self::Extension|set#field(let final self::Class* #t109 = c in #t109.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t109), #t107) in #t107);
+  let final self::Class* #t110 = c in #t110.{self::Class::==}(null) ?{self::Class*} null : self::Extension|set#field(#t110, let final self::Class* #t111 = self::Extension|get#field(new self::Class::•()) in let final void #t112 = self::Extension|set#field(new self::Class::•(), #t111) in #t111);
+  c = let final self::Class* #t113 = c in #t113.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t114 = let final self::Class* #t115 = self::Extension|get#field(new self::Class::•()) in let final void #t116 = self::Extension|set#field(new self::Class::•(), #t115) in #t115 in let final void #t117 = self::Extension|set#field(#t113, #t114) in #t114;
+  let final self::Class* #t118 = c in #t118.{self::Class::==}(null) ?{self::Class*} null : self::Extension|set#field(#t118, let final self::Class* #t119 = let final self::Class* #t120 = new self::Class::•() in let final void #t121 = self::Extension|set#field(new self::Class::•(), #t120) in #t120 in let final void #t122 = self::Extension|set#field(new self::Class::•(), #t119) in #t119);
+  c = let final self::Class* #t123 = c in #t123.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t124 = let final self::Class* #t125 = let final self::Class* #t126 = new self::Class::•() in let final void #t127 = self::Extension|set#field(new self::Class::•(), #t126) in #t126 in let final void #t128 = self::Extension|set#field(new self::Class::•(), #t125) in #t125 in let final void #t129 = self::Extension|set#field(#t123, #t124) in #t124;
+  let final self::Class* #t130 = c in #t130.{self::Class::==}(null) ?{self::Class*} null : self::Extension|set#field(#t130, let final self::Class* #t131 = self::Extension|method(new self::Class::•()) in let final void #t132 = self::Extension|set#field(new self::Class::•(), #t131) in #t131);
+  c = let final self::Class* #t133 = c in #t133.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t134 = let final self::Class* #t135 = self::Extension|method(new self::Class::•()) in let final void #t136 = self::Extension|set#field(new self::Class::•(), #t135) in #t135 in let final void #t137 = self::Extension|set#field(#t133, #t134) in #t134;
+  self::throws(() → self::Class* => let final self::Class* #t138 = self::Extension|get#field(new self::Class::•()) in let final void #t139 = self::Extension|set#field(let final self::Class* #t140 = c in #t140.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t140), #t138) in #t138);
+  self::throws(() → self::Class* => c = let final self::Class* #t141 = self::Extension|get#field(new self::Class::•()) in let final void #t142 = self::Extension|set#field(let final self::Class* #t143 = c in #t143.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t143), #t141) in #t141);
+  self::throws(() → self::Class* => let final self::Class* #t144 = let final self::Class* #t145 = new self::Class::•() in let final void #t146 = self::Extension|set#field(new self::Class::•(), #t145) in #t145 in let final void #t147 = self::Extension|set#field(let final self::Class* #t148 = c in #t148.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t148), #t144) in #t144);
+  self::throws(() → self::Class* => c = let final self::Class* #t149 = let final self::Class* #t150 = new self::Class::•() in let final void #t151 = self::Extension|set#field(new self::Class::•(), #t150) in #t150 in let final void #t152 = self::Extension|set#field(let final self::Class* #t153 = c in #t153.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t153), #t149) in #t149);
+  self::throws(() → self::Class* => let final self::Class* #t154 = self::Extension|method(new self::Class::•()) in let final void #t155 = self::Extension|set#field(let final self::Class* #t156 = c in #t156.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t156), #t154) in #t154);
+  self::throws(() → self::Class* => c = let final self::Class* #t157 = self::Extension|method(new self::Class::•()) in let final void #t158 = self::Extension|set#field(let final self::Class* #t159 = c in #t159.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t159), #t157) in #t157);
+  self::throws(() → self::Class* => self::Extension|get#field(self::Extension|method(let final self::Class* #t160 = c in #t160.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t160))));
+  self::throws(() → self::Class* => let final self::Class* #t161 = new self::Class::•() in let final void #t162 = self::Extension|set#field(self::Extension|method(let final self::Class* #t163 = c in #t163.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t163)), #t161) in #t161);
+  self::throws(() → self::Class* => c = let final self::Class* #t164 = new self::Class::•() in let final void #t165 = self::Extension|set#field(self::Extension|method(let final self::Class* #t166 = c in #t166.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t166)), #t164) in #t164);
+  self::throws(() → self::Class* => self::Extension|method(self::Extension|method(let final self::Class* #t167 = c in #t167.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t167))));
+  let final self::Class* #t168 = c in #t168.{self::Class::==}(null) ?{self::Class*} null : self::Extension|set#field(#t168, self::Extension|get#field(self::Extension|method(new self::Class::•())));
+  c = let final self::Class* #t169 = c in #t169.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t170 = self::Extension|get#field(self::Extension|method(new self::Class::•())) in let final void #t171 = self::Extension|set#field(#t169, #t170) in #t170;
+  let final self::Class* #t172 = c in #t172.{self::Class::==}(null) ?{self::Class*} null : self::Extension|set#field(#t172, let final self::Class* #t173 = new self::Class::•() in let final void #t174 = self::Extension|set#field(self::Extension|method(new self::Class::•()), #t173) in #t173);
+  c = let final self::Class* #t175 = c in #t175.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t176 = let final self::Class* #t177 = new self::Class::•() in let final void #t178 = self::Extension|set#field(self::Extension|method(new self::Class::•()), #t177) in #t177 in let final void #t179 = self::Extension|set#field(#t175, #t176) in #t176;
+  let final self::Class* #t180 = c in #t180.{self::Class::==}(null) ?{self::Class*} null : self::Extension|set#field(#t180, self::Extension|method(self::Extension|method(new self::Class::•())));
+  c = let final self::Class* #t181 = c in #t181.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t182 = self::Extension|method(self::Extension|method(new self::Class::•())) in let final void #t183 = self::Extension|set#field(#t181, #t182) in #t182;
+  self::throws(() → self::Class* => self::Extension|get#field(self::Extension|method(let final self::Class* #t184 = c in #t184.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t184))));
+  self::throws(() → self::Class* => let final self::Class* #t185 = new self::Class::•() in let final void #t186 = self::Extension|set#field(self::Extension|method(let final self::Class* #t187 = c in #t187.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t187)), #t185) in #t185);
+  self::throws(() → self::Class* => self::Extension|method(self::Extension|method(let final self::Class* #t188 = c in #t188.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t188))));
+  let final self::Class* #t189 = let final self::Class* #t190 = c in #t190.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t190) in #t189.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t189);
+  self::throws(() → self::Class* => self::Extension|get#field(let final self::Class* #t191 = c in #t191.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t191)));
+  let final self::Class* #t192 = let final self::Class* #t193 = c in #t193.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t193) in #t192.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t192);
 }
 static method indexAccess(self::Class* c) → void {
-  self::throws(() → self::Class* => self::Extension|[](let final self::Class* #t194 = c in #t194.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t194), c));
-  self::throws(() → self::Class* => let final self::Class* #t195 = let final self::Class* #t196 = c in #t196.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t196) in let final self::Class* #t197 = c in let final self::Class* #t198 = new self::Class::•() in let final void #t199 = self::Extension|[]=(#t195, #t197, #t198) in #t198);
-  self::throws(() → self::Class* => c = let final self::Class* #t200 = let final self::Class* #t201 = c in #t201.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t201) in let final self::Class* #t202 = c in let final self::Class* #t203 = new self::Class::•() in let final void #t204 = self::Extension|[]=(#t200, #t202, #t203) in #t203);
-  self::throws(() → self::Class* => self::Extension|method(self::Extension|[](let final self::Class* #t205 = c in #t205.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t205), c)));
-  self::throws(() → self::Class* => let final self::Class* #t206 = let final self::Class* #t207 = c in #t207.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t207) in let final self::Class* #t208 = c in let final self::Class* #t209 = self::Extension|+(self::Extension|[](#t206, #t208), 0) in let final void #t210 = self::Extension|[]=(#t206, #t208, #t209) in #t209);
-  self::throws(() → self::Class* => c = let final self::Class* #t211 = let final self::Class* #t212 = c in #t212.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t212) in let final self::Class* #t213 = c in let final self::Class* #t214 = self::Extension|+(self::Extension|[](#t211, #t213), 0) in let final void #t215 = self::Extension|[]=(#t211, #t213, #t214) in #t214);
-  self::throws(() → self::Class* => let final self::Class* #t216 = let final self::Class* #t217 = c in #t217.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t217) in let final self::Class* #t218 = c in let final self::Class* #t219 = self::Extension|[](#t216, #t218) in let final void #t220 = self::Extension|[]=(#t216, #t218, self::Extension|+(#t219, 1)) in #t219);
-  self::throws(() → self::Class* => c = let final self::Class* #t221 = let final self::Class* #t222 = c in #t222.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t222) in let final self::Class* #t223 = c in let final self::Class* #t224 = self::Extension|[](#t221, #t223) in let final void #t225 = self::Extension|[]=(#t221, #t223, self::Extension|+(#t224, 1)) in #t224);
-  self::throws(() → self::Class* => let final self::Class* #t226 = let final self::Class* #t227 = c in #t227.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t227) in let final self::Class* #t228 = c in let final self::Class* #t229 = self::Extension|+(self::Extension|[](#t226, #t228), 1) in let final void #t230 = self::Extension|[]=(#t226, #t228, #t229) in #t229);
-  self::throws(() → self::Class* => c = let final self::Class* #t231 = let final self::Class* #t232 = c in #t232.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t232) in let final self::Class* #t233 = c in let final self::Class* #t234 = self::Extension|+(self::Extension|[](#t231, #t233), 1) in let final void #t235 = self::Extension|[]=(#t231, #t233, #t234) in #t234);
-  self::throws(() → self::Class* => self::Extension|[](self::Extension|[](let final self::Class* #t236 = c in #t236.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t236), c), c));
-  self::throws(() → self::Class* => let final self::Class* #t237 = self::Extension|[](let final self::Class* #t238 = c in #t238.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t238), c) in let final self::Class* #t239 = c in let final self::Class* #t240 = new self::Class::•() in let final void #t241 = self::Extension|[]=(#t237, #t239, #t240) in #t240);
-  self::throws(() → self::Class* => c = let final self::Class* #t242 = self::Extension|[](let final self::Class* #t243 = c in #t243.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t243), c) in let final self::Class* #t244 = c in let final self::Class* #t245 = new self::Class::•() in let final void #t246 = self::Extension|[]=(#t242, #t244, #t245) in #t245);
-  self::throws(() → self::Class* => self::Extension|method(self::Extension|[](self::Extension|[](let final self::Class* #t247 = c in #t247.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t247), c), c)));
-  self::throws(() → self::Class* => let final self::Class* #t248 = self::Extension|[](let final self::Class* #t249 = c in #t249.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t249), c) in let final self::Class* #t250 = c in let final self::Class* #t251 = self::Extension|+(self::Extension|[](#t248, #t250), 0) in let final void #t252 = self::Extension|[]=(#t248, #t250, #t251) in #t251);
-  self::throws(() → self::Class* => c = let final self::Class* #t253 = self::Extension|[](let final self::Class* #t254 = c in #t254.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t254), c) in let final self::Class* #t255 = c in let final self::Class* #t256 = self::Extension|+(self::Extension|[](#t253, #t255), 0) in let final void #t257 = self::Extension|[]=(#t253, #t255, #t256) in #t256);
-  self::throws(() → self::Class* => let final self::Class* #t258 = self::Extension|[](let final self::Class* #t259 = c in #t259.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t259), c) in let final self::Class* #t260 = c in let final self::Class* #t261 = self::Extension|[](#t258, #t260) in let final void #t262 = self::Extension|[]=(#t258, #t260, self::Extension|+(#t261, 1)) in #t261);
-  self::throws(() → self::Class* => c = let final self::Class* #t263 = self::Extension|[](let final self::Class* #t264 = c in #t264.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t264), c) in let final self::Class* #t265 = c in let final self::Class* #t266 = self::Extension|[](#t263, #t265) in let final void #t267 = self::Extension|[]=(#t263, #t265, self::Extension|+(#t266, 1)) in #t266);
-  self::throws(() → self::Class* => let final self::Class* #t268 = self::Extension|[](let final self::Class* #t269 = c in #t269.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t269), c) in let final self::Class* #t270 = c in let final self::Class* #t271 = self::Extension|+(self::Extension|[](#t268, #t270), 1) in let final void #t272 = self::Extension|[]=(#t268, #t270, #t271) in #t271);
-  self::throws(() → self::Class* => c = let final self::Class* #t273 = self::Extension|[](let final self::Class* #t274 = c in #t274.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t274), c) in let final self::Class* #t275 = c in let final self::Class* #t276 = self::Extension|+(self::Extension|[](#t273, #t275), 1) in let final void #t277 = self::Extension|[]=(#t273, #t275, #t276) in #t276);
+  self::throws(() → self::Class* => self::Extension|[](let final self::Class* #t194 = c in #t194.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t194), c));
+  self::throws(() → self::Class* => let final self::Class* #t195 = let final self::Class* #t196 = c in #t196.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t196) in let final self::Class* #t197 = c in let final self::Class* #t198 = new self::Class::•() in let final void #t199 = self::Extension|[]=(#t195, #t197, #t198) in #t198);
+  self::throws(() → self::Class* => c = let final self::Class* #t200 = let final self::Class* #t201 = c in #t201.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t201) in let final self::Class* #t202 = c in let final self::Class* #t203 = new self::Class::•() in let final void #t204 = self::Extension|[]=(#t200, #t202, #t203) in #t203);
+  self::throws(() → self::Class* => self::Extension|method(self::Extension|[](let final self::Class* #t205 = c in #t205.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t205), c)));
+  self::throws(() → self::Class* => let final self::Class* #t206 = let final self::Class* #t207 = c in #t207.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t207) in let final self::Class* #t208 = c in let final self::Class* #t209 = self::Extension|+(self::Extension|[](#t206, #t208), 0) in let final void #t210 = self::Extension|[]=(#t206, #t208, #t209) in #t209);
+  self::throws(() → self::Class* => c = let final self::Class* #t211 = let final self::Class* #t212 = c in #t212.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t212) in let final self::Class* #t213 = c in let final self::Class* #t214 = self::Extension|+(self::Extension|[](#t211, #t213), 0) in let final void #t215 = self::Extension|[]=(#t211, #t213, #t214) in #t214);
+  self::throws(() → self::Class* => let final self::Class* #t216 = let final self::Class* #t217 = c in #t217.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t217) in let final self::Class* #t218 = c in let final self::Class* #t219 = self::Extension|[](#t216, #t218) in let final void #t220 = self::Extension|[]=(#t216, #t218, self::Extension|+(#t219, 1)) in #t219);
+  self::throws(() → self::Class* => c = let final self::Class* #t221 = let final self::Class* #t222 = c in #t222.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t222) in let final self::Class* #t223 = c in let final self::Class* #t224 = self::Extension|[](#t221, #t223) in let final void #t225 = self::Extension|[]=(#t221, #t223, self::Extension|+(#t224, 1)) in #t224);
+  self::throws(() → self::Class* => let final self::Class* #t226 = let final self::Class* #t227 = c in #t227.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t227) in let final self::Class* #t228 = c in let final self::Class* #t229 = self::Extension|+(self::Extension|[](#t226, #t228), 1) in let final void #t230 = self::Extension|[]=(#t226, #t228, #t229) in #t229);
+  self::throws(() → self::Class* => c = let final self::Class* #t231 = let final self::Class* #t232 = c in #t232.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t232) in let final self::Class* #t233 = c in let final self::Class* #t234 = self::Extension|+(self::Extension|[](#t231, #t233), 1) in let final void #t235 = self::Extension|[]=(#t231, #t233, #t234) in #t234);
+  self::throws(() → self::Class* => self::Extension|[](self::Extension|[](let final self::Class* #t236 = c in #t236.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t236), c), c));
+  self::throws(() → self::Class* => let final self::Class* #t237 = self::Extension|[](let final self::Class* #t238 = c in #t238.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t238), c) in let final self::Class* #t239 = c in let final self::Class* #t240 = new self::Class::•() in let final void #t241 = self::Extension|[]=(#t237, #t239, #t240) in #t240);
+  self::throws(() → self::Class* => c = let final self::Class* #t242 = self::Extension|[](let final self::Class* #t243 = c in #t243.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t243), c) in let final self::Class* #t244 = c in let final self::Class* #t245 = new self::Class::•() in let final void #t246 = self::Extension|[]=(#t242, #t244, #t245) in #t245);
+  self::throws(() → self::Class* => self::Extension|method(self::Extension|[](self::Extension|[](let final self::Class* #t247 = c in #t247.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t247), c), c)));
+  self::throws(() → self::Class* => let final self::Class* #t248 = self::Extension|[](let final self::Class* #t249 = c in #t249.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t249), c) in let final self::Class* #t250 = c in let final self::Class* #t251 = self::Extension|+(self::Extension|[](#t248, #t250), 0) in let final void #t252 = self::Extension|[]=(#t248, #t250, #t251) in #t251);
+  self::throws(() → self::Class* => c = let final self::Class* #t253 = self::Extension|[](let final self::Class* #t254 = c in #t254.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t254), c) in let final self::Class* #t255 = c in let final self::Class* #t256 = self::Extension|+(self::Extension|[](#t253, #t255), 0) in let final void #t257 = self::Extension|[]=(#t253, #t255, #t256) in #t256);
+  self::throws(() → self::Class* => let final self::Class* #t258 = self::Extension|[](let final self::Class* #t259 = c in #t259.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t259), c) in let final self::Class* #t260 = c in let final self::Class* #t261 = self::Extension|[](#t258, #t260) in let final void #t262 = self::Extension|[]=(#t258, #t260, self::Extension|+(#t261, 1)) in #t261);
+  self::throws(() → self::Class* => c = let final self::Class* #t263 = self::Extension|[](let final self::Class* #t264 = c in #t264.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t264), c) in let final self::Class* #t265 = c in let final self::Class* #t266 = self::Extension|[](#t263, #t265) in let final void #t267 = self::Extension|[]=(#t263, #t265, self::Extension|+(#t266, 1)) in #t266);
+  self::throws(() → self::Class* => let final self::Class* #t268 = self::Extension|[](let final self::Class* #t269 = c in #t269.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t269), c) in let final self::Class* #t270 = c in let final self::Class* #t271 = self::Extension|+(self::Extension|[](#t268, #t270), 1) in let final void #t272 = self::Extension|[]=(#t268, #t270, #t271) in #t271);
+  self::throws(() → self::Class* => c = let final self::Class* #t273 = self::Extension|[](let final self::Class* #t274 = c in #t274.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t274), c) in let final self::Class* #t275 = c in let final self::Class* #t276 = self::Extension|+(self::Extension|[](#t273, #t275), 1) in let final void #t277 = self::Extension|[]=(#t273, #t275, #t276) in #t276);
 }
 static method operatorAccess(self::Class* c) → void {
-  self::throws(() → self::Class* => self::Extension|+(let final self::Class* #t278 = c in #t278.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t278), 0));
-  self::throws(() → self::Class* => self::Extension|unary-(let final self::Class* #t279 = c in #t279.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t279)));
-  let final self::Class* #t280 = c in #t280.{core::Object::==}(null) ?{self::Class*} null : self::Extension|set#field(#t280, self::Extension|+(self::Extension|get#field(#t280), 0));
-  c = let final self::Class* #t281 = c in #t281.{core::Object::==}(null) ?{self::Class*} null : let final self::Class* #t282 = self::Extension|+(self::Extension|get#field(#t281), 0) in let final void #t283 = self::Extension|set#field(#t281, #t282) in #t282;
-  self::throws(() → self::Class* => let final self::Class* #t284 = let final self::Class* #t285 = c in #t285.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t285) in let final self::Class* #t286 = self::Extension|+(self::Extension|get#field(#t284), 0) in let final void #t287 = self::Extension|set#field(#t284, #t286) in #t286);
-  self::throws(() → self::Class* => c = let final self::Class* #t288 = let final self::Class* #t289 = c in #t289.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t289) in let final self::Class* #t290 = self::Extension|+(self::Extension|get#field(#t288), 0) in let final void #t291 = self::Extension|set#field(#t288, #t290) in #t290);
-  let final self::Class* #t292 = c in #t292.{core::Object::==}(null) ?{self::Class*} null : self::Extension|set#field(#t292, self::Extension|+(self::Extension|get#field(#t292), 1));
-  c = let final self::Class* #t293 = c in #t293.{core::Object::==}(null) ?{self::Class*} null : let final self::Class* #t294 = self::Extension|get#field(#t293) in let final self::Class* #t295 = let final self::Class* #t296 = self::Extension|+(#t294, 1) in let final void #t297 = self::Extension|set#field(#t293, #t296) in #t296 in #t294;
-  let final self::Class* #t298 = c in #t298.{core::Object::==}(null) ?{self::Class*} null : let final self::Class* #t299 = self::Extension|+(self::Extension|get#field(#t298), 1) in let final void #t300 = self::Extension|set#field(#t298, #t299) in #t299;
-  c = let final self::Class* #t301 = c in #t301.{core::Object::==}(null) ?{self::Class*} null : let final self::Class* #t302 = self::Extension|+(self::Extension|get#field(#t301), 1) in let final void #t303 = self::Extension|set#field(#t301, #t302) in #t302;
+  self::throws(() → self::Class* => self::Extension|+(let final self::Class* #t278 = c in #t278.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t278), 0));
+  self::throws(() → self::Class* => self::Extension|unary-(let final self::Class* #t279 = c in #t279.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t279)));
+  let final self::Class* #t280 = c in #t280.{self::Class::==}(null) ?{self::Class*} null : self::Extension|set#field(#t280, self::Extension|+(self::Extension|get#field(#t280), 0));
+  c = let final self::Class* #t281 = c in #t281.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t282 = self::Extension|+(self::Extension|get#field(#t281), 0) in let final void #t283 = self::Extension|set#field(#t281, #t282) in #t282;
+  self::throws(() → self::Class* => let final self::Class* #t284 = let final self::Class* #t285 = c in #t285.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t285) in let final self::Class* #t286 = self::Extension|+(self::Extension|get#field(#t284), 0) in let final void #t287 = self::Extension|set#field(#t284, #t286) in #t286);
+  self::throws(() → self::Class* => c = let final self::Class* #t288 = let final self::Class* #t289 = c in #t289.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t289) in let final self::Class* #t290 = self::Extension|+(self::Extension|get#field(#t288), 0) in let final void #t291 = self::Extension|set#field(#t288, #t290) in #t290);
+  let final self::Class* #t292 = c in #t292.{self::Class::==}(null) ?{self::Class*} null : self::Extension|set#field(#t292, self::Extension|+(self::Extension|get#field(#t292), 1));
+  c = let final self::Class* #t293 = c in #t293.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t294 = self::Extension|get#field(#t293) in let final self::Class* #t295 = let final self::Class* #t296 = self::Extension|+(#t294, 1) in let final void #t297 = self::Extension|set#field(#t293, #t296) in #t296 in #t294;
+  let final self::Class* #t298 = c in #t298.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t299 = self::Extension|+(self::Extension|get#field(#t298), 1) in let final void #t300 = self::Extension|set#field(#t298, #t299) in #t299;
+  c = let final self::Class* #t301 = c in #t301.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t302 = self::Extension|+(self::Extension|get#field(#t301), 1) in let final void #t303 = self::Extension|set#field(#t301, #t302) in #t302;
 }
 static method ifNull(self::Class* c) → void {
-  let final self::Class* #t304 = c in #t304.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t304).{core::Object::==}(null) ?{self::Class*} self::Extension|set#field(#t304, c) : null;
-  c = let final self::Class* #t305 = c in #t305.{core::Object::==}(null) ?{self::Class*} null : let final self::Class* #t306 = self::Extension|get#field(#t305) in #t306.{core::Object::==}(null) ?{self::Class*} let final self::Class* #t307 = c in let final void #t308 = self::Extension|set#field(#t305, #t307) in #t307 : #t306;
-  self::throws(() → self::Class* => let final self::Class* #t309 = let final self::Class* #t310 = c in #t310.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t310) in let final self::Class* #t311 = self::Extension|get#field(#t309) in #t311.{core::Object::==}(null) ?{self::Class*} let final self::Class* #t312 = c in let final void #t313 = self::Extension|set#field(#t309, #t312) in #t312 : #t311);
-  self::throws(() → self::Class* => c = let final self::Class* #t314 = let final self::Class* #t315 = c in #t315.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t315) in let final self::Class* #t316 = self::Extension|get#field(#t314) in #t316.{core::Object::==}(null) ?{self::Class*} let final self::Class* #t317 = c in let final void #t318 = self::Extension|set#field(#t314, #t317) in #t317 : #t316);
-  self::throws(() → self::Class* => let final self::Class* #t319 = let final self::Class* #t320 = c in #t320.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t320) in let final self::Class* #t321 = c in let final self::Class* #t322 = self::Extension|[](#t319, #t321) in #t322.{core::Object::==}(null) ?{self::Class*} let final self::Class* #t323 = c in let final void #t324 = self::Extension|[]=(#t319, #t321, #t323) in #t323 : #t322);
-  self::throws(() → self::Class* => c = let final self::Class* #t325 = let final self::Class* #t326 = c in #t326.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t326) in let final self::Class* #t327 = c in let final self::Class* #t328 = self::Extension|[](#t325, #t327) in #t328.{core::Object::==}(null) ?{self::Class*} let final self::Class* #t329 = c in let final void #t330 = self::Extension|[]=(#t325, #t327, #t329) in #t329 : #t328);
+  let final self::Class* #t304 = c in #t304.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t304).{self::Class::==}(null) ?{self::Class*} self::Extension|set#field(#t304, c) : null;
+  c = let final self::Class* #t305 = c in #t305.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t306 = self::Extension|get#field(#t305) in #t306.{self::Class::==}(null) ?{self::Class*} let final self::Class* #t307 = c in let final void #t308 = self::Extension|set#field(#t305, #t307) in #t307 : #t306;
+  self::throws(() → self::Class* => let final self::Class* #t309 = let final self::Class* #t310 = c in #t310.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t310) in let final self::Class* #t311 = self::Extension|get#field(#t309) in #t311.{self::Class::==}(null) ?{self::Class*} let final self::Class* #t312 = c in let final void #t313 = self::Extension|set#field(#t309, #t312) in #t312 : #t311);
+  self::throws(() → self::Class* => c = let final self::Class* #t314 = let final self::Class* #t315 = c in #t315.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t315) in let final self::Class* #t316 = self::Extension|get#field(#t314) in #t316.{self::Class::==}(null) ?{self::Class*} let final self::Class* #t317 = c in let final void #t318 = self::Extension|set#field(#t314, #t317) in #t317 : #t316);
+  self::throws(() → self::Class* => let final self::Class* #t319 = let final self::Class* #t320 = c in #t320.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t320) in let final self::Class* #t321 = c in let final self::Class* #t322 = self::Extension|[](#t319, #t321) in #t322.{self::Class::==}(null) ?{self::Class*} let final self::Class* #t323 = c in let final void #t324 = self::Extension|[]=(#t319, #t321, #t323) in #t323 : #t322);
+  self::throws(() → self::Class* => c = let final self::Class* #t325 = let final self::Class* #t326 = c in #t326.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t326) in let final self::Class* #t327 = c in let final self::Class* #t328 = self::Extension|[](#t325, #t327) in #t328.{self::Class::==}(null) ?{self::Class*} let final self::Class* #t329 = c in let final void #t330 = self::Extension|[]=(#t325, #t327, #t329) in #t329 : #t328);
 }
 static method throws(() →* void f) → void {
   try {
diff --git a/pkg/front_end/testcases/nnbd/no_null_shorting_explicit_extension.dart.weak.expect b/pkg/front_end/testcases/nnbd/no_null_shorting_explicit_extension.dart.weak.expect
index 90b06d3..1792025 100644
--- a/pkg/front_end/testcases/nnbd/no_null_shorting_explicit_extension.dart.weak.expect
+++ b/pkg/front_end/testcases/nnbd/no_null_shorting_explicit_extension.dart.weak.expect
@@ -7,6 +7,16 @@
   synthetic constructor •() → self::Class*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 extension Extension on self::Class* {
   get field = self::Extension|get#field;
@@ -43,121 +53,121 @@
   self::ifNull(null);
 }
 static method propertyAccess(self::Class* c) → void {
-  let final self::Class* #t1 = c in #t1.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t1);
-  let final self::Class* #t2 = c in #t2.{core::Object::==}(null) ?{self::Class*} null : self::Extension|set#field(#t2, new self::Class::•());
-  c = let final self::Class* #t3 = c in #t3.{core::Object::==}(null) ?{self::Class*} null : let final self::Class* #t4 = new self::Class::•() in let final void #t5 = self::Extension|set#field(#t3, #t4) in #t4;
-  let final self::Class* #t6 = c in #t6.{core::Object::==}(null) ?{self::Class*} null : self::Extension|method(#t6);
-  self::throws(() → self::Class* => self::Extension|get#field(let final self::Class* #t7 = c in #t7.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t7)));
-  let final self::Class* #t8 = let final self::Class* #t9 = c in #t9.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t9) in #t8.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t8);
-  self::throws(() → self::Class* => let final self::Class* #t10 = self::Extension|get#field(let final self::Class* #t11 = c in #t11.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t11)) in #t10.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t10));
-  self::throws(() → self::Class* => let final self::Class* #t12 = new self::Class::•() in let final void #t13 = self::Extension|set#field(let final self::Class* #t14 = c in #t14.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t14), #t12) in #t12);
-  let final self::Class* #t15 = let final self::Class* #t16 = c in #t16.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t16) in #t15.{core::Object::==}(null) ?{self::Class*} null : self::Extension|set#field(#t15, new self::Class::•());
-  self::throws(() → self::Class* => let final self::Class* #t17 = self::Extension|get#field(let final self::Class* #t18 = c in #t18.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t18)) in #t17.{core::Object::==}(null) ?{self::Class*} null : let final self::Class* #t19 = new self::Class::•() in let final void #t20 = self::Extension|set#field(#t17, #t19) in #t19);
-  self::throws(() → self::Class* => self::Extension|get#field(let final self::Class* #t21 = c in #t21.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t21)));
-  self::throws(() → self::Class* => self::Extension|get#field(let final self::Class* #t22 = c in #t22.{core::Object::==}(null) ?{self::Class*} null : let final self::Class* #t23 = new self::Class::•() in let final void #t24 = self::Extension|set#field(#t22, #t23) in #t23));
-  self::throws(() → self::Class* => self::Extension|get#field(let final self::Class* #t25 = c in #t25.{core::Object::==}(null) ?{self::Class*} null : self::Extension|method(#t25)));
-  self::throws(() → self::Class* => c = let final self::Class* #t26 = new self::Class::•() in let final void #t27 = self::Extension|set#field(let final self::Class* #t28 = c in #t28.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t28), #t26) in #t26);
-  c = let final self::Class* #t29 = let final self::Class* #t30 = c in #t30.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t30) in #t29.{core::Object::==}(null) ?{self::Class*} null : let final self::Class* #t31 = new self::Class::•() in let final void #t32 = self::Extension|set#field(#t29, #t31) in #t31;
-  self::throws(() → self::Class* => c = let final self::Class* #t33 = self::Extension|get#field(let final self::Class* #t34 = c in #t34.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t34)) in #t33.{core::Object::==}(null) ?{self::Class*} null : let final self::Class* #t35 = new self::Class::•() in let final void #t36 = self::Extension|set#field(#t33, #t35) in #t35);
-  self::throws(() → self::Class* => self::Extension|method(let final self::Class* #t37 = c in #t37.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t37)));
-  let final self::Class* #t38 = c in #t38.{core::Object::==}(null) ?{self::Class*} null : self::Extension|set#field(#t38, self::Extension|get#field(new self::Class::•()));
-  c = let final self::Class* #t39 = c in #t39.{core::Object::==}(null) ?{self::Class*} null : let final self::Class* #t40 = self::Extension|get#field(new self::Class::•()) in let final void #t41 = self::Extension|set#field(#t39, #t40) in #t40;
-  let final self::Class* #t42 = c in #t42.{core::Object::==}(null) ?{self::Class*} null : self::Extension|set#field(#t42, let final self::Class* #t43 = new self::Class::•() in let final void #t44 = self::Extension|set#field(new self::Class::•(), #t43) in #t43);
-  c = let final self::Class* #t45 = c in #t45.{core::Object::==}(null) ?{self::Class*} null : let final self::Class* #t46 = let final self::Class* #t47 = new self::Class::•() in let final void #t48 = self::Extension|set#field(new self::Class::•(), #t47) in #t47 in let final void #t49 = self::Extension|set#field(#t45, #t46) in #t46;
-  let final self::Class* #t50 = c in #t50.{core::Object::==}(null) ?{self::Class*} null : self::Extension|set#field(#t50, self::Extension|method(new self::Class::•()));
-  c = let final self::Class* #t51 = c in #t51.{core::Object::==}(null) ?{self::Class*} null : let final self::Class* #t52 = self::Extension|method(new self::Class::•()) in let final void #t53 = self::Extension|set#field(#t51, #t52) in #t52;
-  self::throws(() → self::Class* => self::Extension|get#field(let final self::Class* #t54 = c in #t54.{core::Object::==}(null) ?{self::Class*} null : self::Extension|method(#t54)));
-  self::throws(() → self::Class* => let final self::Class* #t55 = new self::Class::•() in let final void #t56 = self::Extension|set#field(let final self::Class* #t57 = c in #t57.{core::Object::==}(null) ?{self::Class*} null : self::Extension|method(#t57), #t55) in #t55);
-  self::throws(() → self::Class* => self::Extension|method(let final self::Class* #t58 = c in #t58.{core::Object::==}(null) ?{self::Class*} null : self::Extension|method(#t58)));
-  self::throws(() → self::Class* => self::Extension|get#field(self::Extension|get#field(let final self::Class* #t59 = c in #t59.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t59))));
-  self::throws(() → self::Class* => let final self::Class* #t60 = new self::Class::•() in let final void #t61 = self::Extension|set#field(self::Extension|get#field(let final self::Class* #t62 = c in #t62.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t62)), #t60) in #t60);
-  self::throws(() → self::Class* => c = let final self::Class* #t63 = new self::Class::•() in let final void #t64 = self::Extension|set#field(self::Extension|get#field(let final self::Class* #t65 = c in #t65.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t65)), #t63) in #t63);
-  self::throws(() → self::Class* => self::Extension|method(self::Extension|get#field(let final self::Class* #t66 = c in #t66.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t66))));
-  let final self::Class* #t67 = c in #t67.{core::Object::==}(null) ?{self::Class*} null : self::Extension|set#field(#t67, self::Extension|get#field(self::Extension|get#field(new self::Class::•())));
-  c = let final self::Class* #t68 = c in #t68.{core::Object::==}(null) ?{self::Class*} null : let final self::Class* #t69 = self::Extension|get#field(self::Extension|get#field(new self::Class::•())) in let final void #t70 = self::Extension|set#field(#t68, #t69) in #t69;
-  let final self::Class* #t71 = c in #t71.{core::Object::==}(null) ?{self::Class*} null : self::Extension|set#field(#t71, let final self::Class* #t72 = new self::Class::•() in let final void #t73 = self::Extension|set#field(self::Extension|get#field(new self::Class::•()), #t72) in #t72);
-  c = let final self::Class* #t74 = c in #t74.{core::Object::==}(null) ?{self::Class*} null : let final self::Class* #t75 = let final self::Class* #t76 = new self::Class::•() in let final void #t77 = self::Extension|set#field(self::Extension|get#field(new self::Class::•()), #t76) in #t76 in let final void #t78 = self::Extension|set#field(#t74, #t75) in #t75;
-  let final self::Class* #t79 = c in #t79.{core::Object::==}(null) ?{self::Class*} null : self::Extension|set#field(#t79, self::Extension|method(self::Extension|get#field(new self::Class::•())));
-  c = let final self::Class* #t80 = c in #t80.{core::Object::==}(null) ?{self::Class*} null : let final self::Class* #t81 = self::Extension|method(self::Extension|get#field(new self::Class::•())) in let final void #t82 = self::Extension|set#field(#t80, #t81) in #t81;
-  self::throws(() → self::Class* => self::Extension|get#field(self::Extension|get#field(let final self::Class* #t83 = c in #t83.{core::Object::==}(null) ?{self::Class*} null : self::Extension|method(#t83))));
-  self::throws(() → self::Class* => let final self::Class* #t84 = new self::Class::•() in let final void #t85 = self::Extension|set#field(self::Extension|get#field(let final self::Class* #t86 = c in #t86.{core::Object::==}(null) ?{self::Class*} null : self::Extension|method(#t86)), #t84) in #t84);
-  self::throws(() → self::Class* => self::Extension|method(self::Extension|get#field(let final self::Class* #t87 = c in #t87.{core::Object::==}(null) ?{self::Class*} null : self::Extension|method(#t87))));
-  self::throws(() → self::Class* => let final self::Class* #t88 = self::Extension|get#field(new self::Class::•()) in let final void #t89 = self::Extension|set#field(let final self::Class* #t90 = c in #t90.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t90), #t88) in #t88);
-  self::throws(() → self::Class* => c = let final self::Class* #t91 = self::Extension|get#field(new self::Class::•()) in let final void #t92 = self::Extension|set#field(let final self::Class* #t93 = c in #t93.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t93), #t91) in #t91);
-  self::throws(() → self::Class* => let final self::Class* #t94 = let final self::Class* #t95 = new self::Class::•() in let final void #t96 = self::Extension|set#field(new self::Class::•(), #t95) in #t95 in let final void #t97 = self::Extension|set#field(let final self::Class* #t98 = c in #t98.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t98), #t94) in #t94);
-  self::throws(() → self::Class* => c = let final self::Class* #t99 = let final self::Class* #t100 = new self::Class::•() in let final void #t101 = self::Extension|set#field(new self::Class::•(), #t100) in #t100 in let final void #t102 = self::Extension|set#field(let final self::Class* #t103 = c in #t103.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t103), #t99) in #t99);
-  self::throws(() → self::Class* => let final self::Class* #t104 = self::Extension|method(new self::Class::•()) in let final void #t105 = self::Extension|set#field(let final self::Class* #t106 = c in #t106.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t106), #t104) in #t104);
-  self::throws(() → self::Class* => c = let final self::Class* #t107 = self::Extension|method(new self::Class::•()) in let final void #t108 = self::Extension|set#field(let final self::Class* #t109 = c in #t109.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t109), #t107) in #t107);
-  let final self::Class* #t110 = c in #t110.{core::Object::==}(null) ?{self::Class*} null : self::Extension|set#field(#t110, let final self::Class* #t111 = self::Extension|get#field(new self::Class::•()) in let final void #t112 = self::Extension|set#field(new self::Class::•(), #t111) in #t111);
-  c = let final self::Class* #t113 = c in #t113.{core::Object::==}(null) ?{self::Class*} null : let final self::Class* #t114 = let final self::Class* #t115 = self::Extension|get#field(new self::Class::•()) in let final void #t116 = self::Extension|set#field(new self::Class::•(), #t115) in #t115 in let final void #t117 = self::Extension|set#field(#t113, #t114) in #t114;
-  let final self::Class* #t118 = c in #t118.{core::Object::==}(null) ?{self::Class*} null : self::Extension|set#field(#t118, let final self::Class* #t119 = let final self::Class* #t120 = new self::Class::•() in let final void #t121 = self::Extension|set#field(new self::Class::•(), #t120) in #t120 in let final void #t122 = self::Extension|set#field(new self::Class::•(), #t119) in #t119);
-  c = let final self::Class* #t123 = c in #t123.{core::Object::==}(null) ?{self::Class*} null : let final self::Class* #t124 = let final self::Class* #t125 = let final self::Class* #t126 = new self::Class::•() in let final void #t127 = self::Extension|set#field(new self::Class::•(), #t126) in #t126 in let final void #t128 = self::Extension|set#field(new self::Class::•(), #t125) in #t125 in let final void #t129 = self::Extension|set#field(#t123, #t124) in #t124;
-  let final self::Class* #t130 = c in #t130.{core::Object::==}(null) ?{self::Class*} null : self::Extension|set#field(#t130, let final self::Class* #t131 = self::Extension|method(new self::Class::•()) in let final void #t132 = self::Extension|set#field(new self::Class::•(), #t131) in #t131);
-  c = let final self::Class* #t133 = c in #t133.{core::Object::==}(null) ?{self::Class*} null : let final self::Class* #t134 = let final self::Class* #t135 = self::Extension|method(new self::Class::•()) in let final void #t136 = self::Extension|set#field(new self::Class::•(), #t135) in #t135 in let final void #t137 = self::Extension|set#field(#t133, #t134) in #t134;
-  self::throws(() → self::Class* => let final self::Class* #t138 = self::Extension|get#field(new self::Class::•()) in let final void #t139 = self::Extension|set#field(let final self::Class* #t140 = c in #t140.{core::Object::==}(null) ?{self::Class*} null : self::Extension|method(#t140), #t138) in #t138);
-  self::throws(() → self::Class* => c = let final self::Class* #t141 = self::Extension|get#field(new self::Class::•()) in let final void #t142 = self::Extension|set#field(let final self::Class* #t143 = c in #t143.{core::Object::==}(null) ?{self::Class*} null : self::Extension|method(#t143), #t141) in #t141);
-  self::throws(() → self::Class* => let final self::Class* #t144 = let final self::Class* #t145 = new self::Class::•() in let final void #t146 = self::Extension|set#field(new self::Class::•(), #t145) in #t145 in let final void #t147 = self::Extension|set#field(let final self::Class* #t148 = c in #t148.{core::Object::==}(null) ?{self::Class*} null : self::Extension|method(#t148), #t144) in #t144);
-  self::throws(() → self::Class* => c = let final self::Class* #t149 = let final self::Class* #t150 = new self::Class::•() in let final void #t151 = self::Extension|set#field(new self::Class::•(), #t150) in #t150 in let final void #t152 = self::Extension|set#field(let final self::Class* #t153 = c in #t153.{core::Object::==}(null) ?{self::Class*} null : self::Extension|method(#t153), #t149) in #t149);
-  self::throws(() → self::Class* => let final self::Class* #t154 = self::Extension|method(new self::Class::•()) in let final void #t155 = self::Extension|set#field(let final self::Class* #t156 = c in #t156.{core::Object::==}(null) ?{self::Class*} null : self::Extension|method(#t156), #t154) in #t154);
-  self::throws(() → self::Class* => c = let final self::Class* #t157 = self::Extension|method(new self::Class::•()) in let final void #t158 = self::Extension|set#field(let final self::Class* #t159 = c in #t159.{core::Object::==}(null) ?{self::Class*} null : self::Extension|method(#t159), #t157) in #t157);
-  self::throws(() → self::Class* => self::Extension|get#field(self::Extension|method(let final self::Class* #t160 = c in #t160.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t160))));
-  self::throws(() → self::Class* => let final self::Class* #t161 = new self::Class::•() in let final void #t162 = self::Extension|set#field(self::Extension|method(let final self::Class* #t163 = c in #t163.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t163)), #t161) in #t161);
-  self::throws(() → self::Class* => c = let final self::Class* #t164 = new self::Class::•() in let final void #t165 = self::Extension|set#field(self::Extension|method(let final self::Class* #t166 = c in #t166.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t166)), #t164) in #t164);
-  self::throws(() → self::Class* => self::Extension|method(self::Extension|method(let final self::Class* #t167 = c in #t167.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t167))));
-  let final self::Class* #t168 = c in #t168.{core::Object::==}(null) ?{self::Class*} null : self::Extension|set#field(#t168, self::Extension|get#field(self::Extension|method(new self::Class::•())));
-  c = let final self::Class* #t169 = c in #t169.{core::Object::==}(null) ?{self::Class*} null : let final self::Class* #t170 = self::Extension|get#field(self::Extension|method(new self::Class::•())) in let final void #t171 = self::Extension|set#field(#t169, #t170) in #t170;
-  let final self::Class* #t172 = c in #t172.{core::Object::==}(null) ?{self::Class*} null : self::Extension|set#field(#t172, let final self::Class* #t173 = new self::Class::•() in let final void #t174 = self::Extension|set#field(self::Extension|method(new self::Class::•()), #t173) in #t173);
-  c = let final self::Class* #t175 = c in #t175.{core::Object::==}(null) ?{self::Class*} null : let final self::Class* #t176 = let final self::Class* #t177 = new self::Class::•() in let final void #t178 = self::Extension|set#field(self::Extension|method(new self::Class::•()), #t177) in #t177 in let final void #t179 = self::Extension|set#field(#t175, #t176) in #t176;
-  let final self::Class* #t180 = c in #t180.{core::Object::==}(null) ?{self::Class*} null : self::Extension|set#field(#t180, self::Extension|method(self::Extension|method(new self::Class::•())));
-  c = let final self::Class* #t181 = c in #t181.{core::Object::==}(null) ?{self::Class*} null : let final self::Class* #t182 = self::Extension|method(self::Extension|method(new self::Class::•())) in let final void #t183 = self::Extension|set#field(#t181, #t182) in #t182;
-  self::throws(() → self::Class* => self::Extension|get#field(self::Extension|method(let final self::Class* #t184 = c in #t184.{core::Object::==}(null) ?{self::Class*} null : self::Extension|method(#t184))));
-  self::throws(() → self::Class* => let final self::Class* #t185 = new self::Class::•() in let final void #t186 = self::Extension|set#field(self::Extension|method(let final self::Class* #t187 = c in #t187.{core::Object::==}(null) ?{self::Class*} null : self::Extension|method(#t187)), #t185) in #t185);
-  self::throws(() → self::Class* => self::Extension|method(self::Extension|method(let final self::Class* #t188 = c in #t188.{core::Object::==}(null) ?{self::Class*} null : self::Extension|method(#t188))));
-  let final self::Class* #t189 = let final self::Class* #t190 = c in #t190.{core::Object::==}(null) ?{self::Class*} null : self::Extension|method(#t190) in #t189.{core::Object::==}(null) ?{self::Class*} null : self::Extension|method(#t189);
-  self::throws(() → self::Class* => self::Extension|get#field(let final self::Class* #t191 = c in #t191.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t191)));
-  let final self::Class* #t192 = let final self::Class* #t193 = c in #t193.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t193) in #t192.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t192);
+  let final self::Class* #t1 = c in #t1.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t1);
+  let final self::Class* #t2 = c in #t2.{self::Class::==}(null) ?{self::Class*} null : self::Extension|set#field(#t2, new self::Class::•());
+  c = let final self::Class* #t3 = c in #t3.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t4 = new self::Class::•() in let final void #t5 = self::Extension|set#field(#t3, #t4) in #t4;
+  let final self::Class* #t6 = c in #t6.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t6);
+  self::throws(() → self::Class* => self::Extension|get#field(let final self::Class* #t7 = c in #t7.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t7)));
+  let final self::Class* #t8 = let final self::Class* #t9 = c in #t9.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t9) in #t8.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t8);
+  self::throws(() → self::Class* => let final self::Class* #t10 = self::Extension|get#field(let final self::Class* #t11 = c in #t11.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t11)) in #t10.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t10));
+  self::throws(() → self::Class* => let final self::Class* #t12 = new self::Class::•() in let final void #t13 = self::Extension|set#field(let final self::Class* #t14 = c in #t14.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t14), #t12) in #t12);
+  let final self::Class* #t15 = let final self::Class* #t16 = c in #t16.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t16) in #t15.{self::Class::==}(null) ?{self::Class*} null : self::Extension|set#field(#t15, new self::Class::•());
+  self::throws(() → self::Class* => let final self::Class* #t17 = self::Extension|get#field(let final self::Class* #t18 = c in #t18.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t18)) in #t17.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t19 = new self::Class::•() in let final void #t20 = self::Extension|set#field(#t17, #t19) in #t19);
+  self::throws(() → self::Class* => self::Extension|get#field(let final self::Class* #t21 = c in #t21.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t21)));
+  self::throws(() → self::Class* => self::Extension|get#field(let final self::Class* #t22 = c in #t22.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t23 = new self::Class::•() in let final void #t24 = self::Extension|set#field(#t22, #t23) in #t23));
+  self::throws(() → self::Class* => self::Extension|get#field(let final self::Class* #t25 = c in #t25.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t25)));
+  self::throws(() → self::Class* => c = let final self::Class* #t26 = new self::Class::•() in let final void #t27 = self::Extension|set#field(let final self::Class* #t28 = c in #t28.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t28), #t26) in #t26);
+  c = let final self::Class* #t29 = let final self::Class* #t30 = c in #t30.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t30) in #t29.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t31 = new self::Class::•() in let final void #t32 = self::Extension|set#field(#t29, #t31) in #t31;
+  self::throws(() → self::Class* => c = let final self::Class* #t33 = self::Extension|get#field(let final self::Class* #t34 = c in #t34.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t34)) in #t33.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t35 = new self::Class::•() in let final void #t36 = self::Extension|set#field(#t33, #t35) in #t35);
+  self::throws(() → self::Class* => self::Extension|method(let final self::Class* #t37 = c in #t37.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t37)));
+  let final self::Class* #t38 = c in #t38.{self::Class::==}(null) ?{self::Class*} null : self::Extension|set#field(#t38, self::Extension|get#field(new self::Class::•()));
+  c = let final self::Class* #t39 = c in #t39.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t40 = self::Extension|get#field(new self::Class::•()) in let final void #t41 = self::Extension|set#field(#t39, #t40) in #t40;
+  let final self::Class* #t42 = c in #t42.{self::Class::==}(null) ?{self::Class*} null : self::Extension|set#field(#t42, let final self::Class* #t43 = new self::Class::•() in let final void #t44 = self::Extension|set#field(new self::Class::•(), #t43) in #t43);
+  c = let final self::Class* #t45 = c in #t45.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t46 = let final self::Class* #t47 = new self::Class::•() in let final void #t48 = self::Extension|set#field(new self::Class::•(), #t47) in #t47 in let final void #t49 = self::Extension|set#field(#t45, #t46) in #t46;
+  let final self::Class* #t50 = c in #t50.{self::Class::==}(null) ?{self::Class*} null : self::Extension|set#field(#t50, self::Extension|method(new self::Class::•()));
+  c = let final self::Class* #t51 = c in #t51.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t52 = self::Extension|method(new self::Class::•()) in let final void #t53 = self::Extension|set#field(#t51, #t52) in #t52;
+  self::throws(() → self::Class* => self::Extension|get#field(let final self::Class* #t54 = c in #t54.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t54)));
+  self::throws(() → self::Class* => let final self::Class* #t55 = new self::Class::•() in let final void #t56 = self::Extension|set#field(let final self::Class* #t57 = c in #t57.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t57), #t55) in #t55);
+  self::throws(() → self::Class* => self::Extension|method(let final self::Class* #t58 = c in #t58.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t58)));
+  self::throws(() → self::Class* => self::Extension|get#field(self::Extension|get#field(let final self::Class* #t59 = c in #t59.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t59))));
+  self::throws(() → self::Class* => let final self::Class* #t60 = new self::Class::•() in let final void #t61 = self::Extension|set#field(self::Extension|get#field(let final self::Class* #t62 = c in #t62.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t62)), #t60) in #t60);
+  self::throws(() → self::Class* => c = let final self::Class* #t63 = new self::Class::•() in let final void #t64 = self::Extension|set#field(self::Extension|get#field(let final self::Class* #t65 = c in #t65.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t65)), #t63) in #t63);
+  self::throws(() → self::Class* => self::Extension|method(self::Extension|get#field(let final self::Class* #t66 = c in #t66.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t66))));
+  let final self::Class* #t67 = c in #t67.{self::Class::==}(null) ?{self::Class*} null : self::Extension|set#field(#t67, self::Extension|get#field(self::Extension|get#field(new self::Class::•())));
+  c = let final self::Class* #t68 = c in #t68.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t69 = self::Extension|get#field(self::Extension|get#field(new self::Class::•())) in let final void #t70 = self::Extension|set#field(#t68, #t69) in #t69;
+  let final self::Class* #t71 = c in #t71.{self::Class::==}(null) ?{self::Class*} null : self::Extension|set#field(#t71, let final self::Class* #t72 = new self::Class::•() in let final void #t73 = self::Extension|set#field(self::Extension|get#field(new self::Class::•()), #t72) in #t72);
+  c = let final self::Class* #t74 = c in #t74.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t75 = let final self::Class* #t76 = new self::Class::•() in let final void #t77 = self::Extension|set#field(self::Extension|get#field(new self::Class::•()), #t76) in #t76 in let final void #t78 = self::Extension|set#field(#t74, #t75) in #t75;
+  let final self::Class* #t79 = c in #t79.{self::Class::==}(null) ?{self::Class*} null : self::Extension|set#field(#t79, self::Extension|method(self::Extension|get#field(new self::Class::•())));
+  c = let final self::Class* #t80 = c in #t80.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t81 = self::Extension|method(self::Extension|get#field(new self::Class::•())) in let final void #t82 = self::Extension|set#field(#t80, #t81) in #t81;
+  self::throws(() → self::Class* => self::Extension|get#field(self::Extension|get#field(let final self::Class* #t83 = c in #t83.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t83))));
+  self::throws(() → self::Class* => let final self::Class* #t84 = new self::Class::•() in let final void #t85 = self::Extension|set#field(self::Extension|get#field(let final self::Class* #t86 = c in #t86.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t86)), #t84) in #t84);
+  self::throws(() → self::Class* => self::Extension|method(self::Extension|get#field(let final self::Class* #t87 = c in #t87.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t87))));
+  self::throws(() → self::Class* => let final self::Class* #t88 = self::Extension|get#field(new self::Class::•()) in let final void #t89 = self::Extension|set#field(let final self::Class* #t90 = c in #t90.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t90), #t88) in #t88);
+  self::throws(() → self::Class* => c = let final self::Class* #t91 = self::Extension|get#field(new self::Class::•()) in let final void #t92 = self::Extension|set#field(let final self::Class* #t93 = c in #t93.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t93), #t91) in #t91);
+  self::throws(() → self::Class* => let final self::Class* #t94 = let final self::Class* #t95 = new self::Class::•() in let final void #t96 = self::Extension|set#field(new self::Class::•(), #t95) in #t95 in let final void #t97 = self::Extension|set#field(let final self::Class* #t98 = c in #t98.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t98), #t94) in #t94);
+  self::throws(() → self::Class* => c = let final self::Class* #t99 = let final self::Class* #t100 = new self::Class::•() in let final void #t101 = self::Extension|set#field(new self::Class::•(), #t100) in #t100 in let final void #t102 = self::Extension|set#field(let final self::Class* #t103 = c in #t103.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t103), #t99) in #t99);
+  self::throws(() → self::Class* => let final self::Class* #t104 = self::Extension|method(new self::Class::•()) in let final void #t105 = self::Extension|set#field(let final self::Class* #t106 = c in #t106.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t106), #t104) in #t104);
+  self::throws(() → self::Class* => c = let final self::Class* #t107 = self::Extension|method(new self::Class::•()) in let final void #t108 = self::Extension|set#field(let final self::Class* #t109 = c in #t109.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t109), #t107) in #t107);
+  let final self::Class* #t110 = c in #t110.{self::Class::==}(null) ?{self::Class*} null : self::Extension|set#field(#t110, let final self::Class* #t111 = self::Extension|get#field(new self::Class::•()) in let final void #t112 = self::Extension|set#field(new self::Class::•(), #t111) in #t111);
+  c = let final self::Class* #t113 = c in #t113.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t114 = let final self::Class* #t115 = self::Extension|get#field(new self::Class::•()) in let final void #t116 = self::Extension|set#field(new self::Class::•(), #t115) in #t115 in let final void #t117 = self::Extension|set#field(#t113, #t114) in #t114;
+  let final self::Class* #t118 = c in #t118.{self::Class::==}(null) ?{self::Class*} null : self::Extension|set#field(#t118, let final self::Class* #t119 = let final self::Class* #t120 = new self::Class::•() in let final void #t121 = self::Extension|set#field(new self::Class::•(), #t120) in #t120 in let final void #t122 = self::Extension|set#field(new self::Class::•(), #t119) in #t119);
+  c = let final self::Class* #t123 = c in #t123.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t124 = let final self::Class* #t125 = let final self::Class* #t126 = new self::Class::•() in let final void #t127 = self::Extension|set#field(new self::Class::•(), #t126) in #t126 in let final void #t128 = self::Extension|set#field(new self::Class::•(), #t125) in #t125 in let final void #t129 = self::Extension|set#field(#t123, #t124) in #t124;
+  let final self::Class* #t130 = c in #t130.{self::Class::==}(null) ?{self::Class*} null : self::Extension|set#field(#t130, let final self::Class* #t131 = self::Extension|method(new self::Class::•()) in let final void #t132 = self::Extension|set#field(new self::Class::•(), #t131) in #t131);
+  c = let final self::Class* #t133 = c in #t133.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t134 = let final self::Class* #t135 = self::Extension|method(new self::Class::•()) in let final void #t136 = self::Extension|set#field(new self::Class::•(), #t135) in #t135 in let final void #t137 = self::Extension|set#field(#t133, #t134) in #t134;
+  self::throws(() → self::Class* => let final self::Class* #t138 = self::Extension|get#field(new self::Class::•()) in let final void #t139 = self::Extension|set#field(let final self::Class* #t140 = c in #t140.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t140), #t138) in #t138);
+  self::throws(() → self::Class* => c = let final self::Class* #t141 = self::Extension|get#field(new self::Class::•()) in let final void #t142 = self::Extension|set#field(let final self::Class* #t143 = c in #t143.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t143), #t141) in #t141);
+  self::throws(() → self::Class* => let final self::Class* #t144 = let final self::Class* #t145 = new self::Class::•() in let final void #t146 = self::Extension|set#field(new self::Class::•(), #t145) in #t145 in let final void #t147 = self::Extension|set#field(let final self::Class* #t148 = c in #t148.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t148), #t144) in #t144);
+  self::throws(() → self::Class* => c = let final self::Class* #t149 = let final self::Class* #t150 = new self::Class::•() in let final void #t151 = self::Extension|set#field(new self::Class::•(), #t150) in #t150 in let final void #t152 = self::Extension|set#field(let final self::Class* #t153 = c in #t153.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t153), #t149) in #t149);
+  self::throws(() → self::Class* => let final self::Class* #t154 = self::Extension|method(new self::Class::•()) in let final void #t155 = self::Extension|set#field(let final self::Class* #t156 = c in #t156.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t156), #t154) in #t154);
+  self::throws(() → self::Class* => c = let final self::Class* #t157 = self::Extension|method(new self::Class::•()) in let final void #t158 = self::Extension|set#field(let final self::Class* #t159 = c in #t159.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t159), #t157) in #t157);
+  self::throws(() → self::Class* => self::Extension|get#field(self::Extension|method(let final self::Class* #t160 = c in #t160.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t160))));
+  self::throws(() → self::Class* => let final self::Class* #t161 = new self::Class::•() in let final void #t162 = self::Extension|set#field(self::Extension|method(let final self::Class* #t163 = c in #t163.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t163)), #t161) in #t161);
+  self::throws(() → self::Class* => c = let final self::Class* #t164 = new self::Class::•() in let final void #t165 = self::Extension|set#field(self::Extension|method(let final self::Class* #t166 = c in #t166.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t166)), #t164) in #t164);
+  self::throws(() → self::Class* => self::Extension|method(self::Extension|method(let final self::Class* #t167 = c in #t167.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t167))));
+  let final self::Class* #t168 = c in #t168.{self::Class::==}(null) ?{self::Class*} null : self::Extension|set#field(#t168, self::Extension|get#field(self::Extension|method(new self::Class::•())));
+  c = let final self::Class* #t169 = c in #t169.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t170 = self::Extension|get#field(self::Extension|method(new self::Class::•())) in let final void #t171 = self::Extension|set#field(#t169, #t170) in #t170;
+  let final self::Class* #t172 = c in #t172.{self::Class::==}(null) ?{self::Class*} null : self::Extension|set#field(#t172, let final self::Class* #t173 = new self::Class::•() in let final void #t174 = self::Extension|set#field(self::Extension|method(new self::Class::•()), #t173) in #t173);
+  c = let final self::Class* #t175 = c in #t175.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t176 = let final self::Class* #t177 = new self::Class::•() in let final void #t178 = self::Extension|set#field(self::Extension|method(new self::Class::•()), #t177) in #t177 in let final void #t179 = self::Extension|set#field(#t175, #t176) in #t176;
+  let final self::Class* #t180 = c in #t180.{self::Class::==}(null) ?{self::Class*} null : self::Extension|set#field(#t180, self::Extension|method(self::Extension|method(new self::Class::•())));
+  c = let final self::Class* #t181 = c in #t181.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t182 = self::Extension|method(self::Extension|method(new self::Class::•())) in let final void #t183 = self::Extension|set#field(#t181, #t182) in #t182;
+  self::throws(() → self::Class* => self::Extension|get#field(self::Extension|method(let final self::Class* #t184 = c in #t184.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t184))));
+  self::throws(() → self::Class* => let final self::Class* #t185 = new self::Class::•() in let final void #t186 = self::Extension|set#field(self::Extension|method(let final self::Class* #t187 = c in #t187.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t187)), #t185) in #t185);
+  self::throws(() → self::Class* => self::Extension|method(self::Extension|method(let final self::Class* #t188 = c in #t188.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t188))));
+  let final self::Class* #t189 = let final self::Class* #t190 = c in #t190.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t190) in #t189.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t189);
+  self::throws(() → self::Class* => self::Extension|get#field(let final self::Class* #t191 = c in #t191.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t191)));
+  let final self::Class* #t192 = let final self::Class* #t193 = c in #t193.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t193) in #t192.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t192);
 }
 static method indexAccess(self::Class* c) → void {
-  self::throws(() → self::Class* => self::Extension|[](let final self::Class* #t194 = c in #t194.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t194), c));
-  self::throws(() → self::Class* => let final self::Class* #t195 = let final self::Class* #t196 = c in #t196.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t196) in let final self::Class* #t197 = c in let final self::Class* #t198 = new self::Class::•() in let final void #t199 = self::Extension|[]=(#t195, #t197, #t198) in #t198);
-  self::throws(() → self::Class* => c = let final self::Class* #t200 = let final self::Class* #t201 = c in #t201.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t201) in let final self::Class* #t202 = c in let final self::Class* #t203 = new self::Class::•() in let final void #t204 = self::Extension|[]=(#t200, #t202, #t203) in #t203);
-  self::throws(() → self::Class* => self::Extension|method(self::Extension|[](let final self::Class* #t205 = c in #t205.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t205), c)));
-  self::throws(() → self::Class* => let final self::Class* #t206 = let final self::Class* #t207 = c in #t207.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t207) in let final self::Class* #t208 = c in let final self::Class* #t209 = self::Extension|+(self::Extension|[](#t206, #t208), 0) in let final void #t210 = self::Extension|[]=(#t206, #t208, #t209) in #t209);
-  self::throws(() → self::Class* => c = let final self::Class* #t211 = let final self::Class* #t212 = c in #t212.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t212) in let final self::Class* #t213 = c in let final self::Class* #t214 = self::Extension|+(self::Extension|[](#t211, #t213), 0) in let final void #t215 = self::Extension|[]=(#t211, #t213, #t214) in #t214);
-  self::throws(() → self::Class* => let final self::Class* #t216 = let final self::Class* #t217 = c in #t217.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t217) in let final self::Class* #t218 = c in let final self::Class* #t219 = self::Extension|[](#t216, #t218) in let final void #t220 = self::Extension|[]=(#t216, #t218, self::Extension|+(#t219, 1)) in #t219);
-  self::throws(() → self::Class* => c = let final self::Class* #t221 = let final self::Class* #t222 = c in #t222.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t222) in let final self::Class* #t223 = c in let final self::Class* #t224 = self::Extension|[](#t221, #t223) in let final void #t225 = self::Extension|[]=(#t221, #t223, self::Extension|+(#t224, 1)) in #t224);
-  self::throws(() → self::Class* => let final self::Class* #t226 = let final self::Class* #t227 = c in #t227.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t227) in let final self::Class* #t228 = c in let final self::Class* #t229 = self::Extension|+(self::Extension|[](#t226, #t228), 1) in let final void #t230 = self::Extension|[]=(#t226, #t228, #t229) in #t229);
-  self::throws(() → self::Class* => c = let final self::Class* #t231 = let final self::Class* #t232 = c in #t232.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t232) in let final self::Class* #t233 = c in let final self::Class* #t234 = self::Extension|+(self::Extension|[](#t231, #t233), 1) in let final void #t235 = self::Extension|[]=(#t231, #t233, #t234) in #t234);
-  self::throws(() → self::Class* => self::Extension|[](self::Extension|[](let final self::Class* #t236 = c in #t236.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t236), c), c));
-  self::throws(() → self::Class* => let final self::Class* #t237 = self::Extension|[](let final self::Class* #t238 = c in #t238.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t238), c) in let final self::Class* #t239 = c in let final self::Class* #t240 = new self::Class::•() in let final void #t241 = self::Extension|[]=(#t237, #t239, #t240) in #t240);
-  self::throws(() → self::Class* => c = let final self::Class* #t242 = self::Extension|[](let final self::Class* #t243 = c in #t243.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t243), c) in let final self::Class* #t244 = c in let final self::Class* #t245 = new self::Class::•() in let final void #t246 = self::Extension|[]=(#t242, #t244, #t245) in #t245);
-  self::throws(() → self::Class* => self::Extension|method(self::Extension|[](self::Extension|[](let final self::Class* #t247 = c in #t247.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t247), c), c)));
-  self::throws(() → self::Class* => let final self::Class* #t248 = self::Extension|[](let final self::Class* #t249 = c in #t249.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t249), c) in let final self::Class* #t250 = c in let final self::Class* #t251 = self::Extension|+(self::Extension|[](#t248, #t250), 0) in let final void #t252 = self::Extension|[]=(#t248, #t250, #t251) in #t251);
-  self::throws(() → self::Class* => c = let final self::Class* #t253 = self::Extension|[](let final self::Class* #t254 = c in #t254.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t254), c) in let final self::Class* #t255 = c in let final self::Class* #t256 = self::Extension|+(self::Extension|[](#t253, #t255), 0) in let final void #t257 = self::Extension|[]=(#t253, #t255, #t256) in #t256);
-  self::throws(() → self::Class* => let final self::Class* #t258 = self::Extension|[](let final self::Class* #t259 = c in #t259.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t259), c) in let final self::Class* #t260 = c in let final self::Class* #t261 = self::Extension|[](#t258, #t260) in let final void #t262 = self::Extension|[]=(#t258, #t260, self::Extension|+(#t261, 1)) in #t261);
-  self::throws(() → self::Class* => c = let final self::Class* #t263 = self::Extension|[](let final self::Class* #t264 = c in #t264.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t264), c) in let final self::Class* #t265 = c in let final self::Class* #t266 = self::Extension|[](#t263, #t265) in let final void #t267 = self::Extension|[]=(#t263, #t265, self::Extension|+(#t266, 1)) in #t266);
-  self::throws(() → self::Class* => let final self::Class* #t268 = self::Extension|[](let final self::Class* #t269 = c in #t269.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t269), c) in let final self::Class* #t270 = c in let final self::Class* #t271 = self::Extension|+(self::Extension|[](#t268, #t270), 1) in let final void #t272 = self::Extension|[]=(#t268, #t270, #t271) in #t271);
-  self::throws(() → self::Class* => c = let final self::Class* #t273 = self::Extension|[](let final self::Class* #t274 = c in #t274.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t274), c) in let final self::Class* #t275 = c in let final self::Class* #t276 = self::Extension|+(self::Extension|[](#t273, #t275), 1) in let final void #t277 = self::Extension|[]=(#t273, #t275, #t276) in #t276);
+  self::throws(() → self::Class* => self::Extension|[](let final self::Class* #t194 = c in #t194.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t194), c));
+  self::throws(() → self::Class* => let final self::Class* #t195 = let final self::Class* #t196 = c in #t196.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t196) in let final self::Class* #t197 = c in let final self::Class* #t198 = new self::Class::•() in let final void #t199 = self::Extension|[]=(#t195, #t197, #t198) in #t198);
+  self::throws(() → self::Class* => c = let final self::Class* #t200 = let final self::Class* #t201 = c in #t201.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t201) in let final self::Class* #t202 = c in let final self::Class* #t203 = new self::Class::•() in let final void #t204 = self::Extension|[]=(#t200, #t202, #t203) in #t203);
+  self::throws(() → self::Class* => self::Extension|method(self::Extension|[](let final self::Class* #t205 = c in #t205.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t205), c)));
+  self::throws(() → self::Class* => let final self::Class* #t206 = let final self::Class* #t207 = c in #t207.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t207) in let final self::Class* #t208 = c in let final self::Class* #t209 = self::Extension|+(self::Extension|[](#t206, #t208), 0) in let final void #t210 = self::Extension|[]=(#t206, #t208, #t209) in #t209);
+  self::throws(() → self::Class* => c = let final self::Class* #t211 = let final self::Class* #t212 = c in #t212.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t212) in let final self::Class* #t213 = c in let final self::Class* #t214 = self::Extension|+(self::Extension|[](#t211, #t213), 0) in let final void #t215 = self::Extension|[]=(#t211, #t213, #t214) in #t214);
+  self::throws(() → self::Class* => let final self::Class* #t216 = let final self::Class* #t217 = c in #t217.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t217) in let final self::Class* #t218 = c in let final self::Class* #t219 = self::Extension|[](#t216, #t218) in let final void #t220 = self::Extension|[]=(#t216, #t218, self::Extension|+(#t219, 1)) in #t219);
+  self::throws(() → self::Class* => c = let final self::Class* #t221 = let final self::Class* #t222 = c in #t222.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t222) in let final self::Class* #t223 = c in let final self::Class* #t224 = self::Extension|[](#t221, #t223) in let final void #t225 = self::Extension|[]=(#t221, #t223, self::Extension|+(#t224, 1)) in #t224);
+  self::throws(() → self::Class* => let final self::Class* #t226 = let final self::Class* #t227 = c in #t227.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t227) in let final self::Class* #t228 = c in let final self::Class* #t229 = self::Extension|+(self::Extension|[](#t226, #t228), 1) in let final void #t230 = self::Extension|[]=(#t226, #t228, #t229) in #t229);
+  self::throws(() → self::Class* => c = let final self::Class* #t231 = let final self::Class* #t232 = c in #t232.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t232) in let final self::Class* #t233 = c in let final self::Class* #t234 = self::Extension|+(self::Extension|[](#t231, #t233), 1) in let final void #t235 = self::Extension|[]=(#t231, #t233, #t234) in #t234);
+  self::throws(() → self::Class* => self::Extension|[](self::Extension|[](let final self::Class* #t236 = c in #t236.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t236), c), c));
+  self::throws(() → self::Class* => let final self::Class* #t237 = self::Extension|[](let final self::Class* #t238 = c in #t238.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t238), c) in let final self::Class* #t239 = c in let final self::Class* #t240 = new self::Class::•() in let final void #t241 = self::Extension|[]=(#t237, #t239, #t240) in #t240);
+  self::throws(() → self::Class* => c = let final self::Class* #t242 = self::Extension|[](let final self::Class* #t243 = c in #t243.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t243), c) in let final self::Class* #t244 = c in let final self::Class* #t245 = new self::Class::•() in let final void #t246 = self::Extension|[]=(#t242, #t244, #t245) in #t245);
+  self::throws(() → self::Class* => self::Extension|method(self::Extension|[](self::Extension|[](let final self::Class* #t247 = c in #t247.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t247), c), c)));
+  self::throws(() → self::Class* => let final self::Class* #t248 = self::Extension|[](let final self::Class* #t249 = c in #t249.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t249), c) in let final self::Class* #t250 = c in let final self::Class* #t251 = self::Extension|+(self::Extension|[](#t248, #t250), 0) in let final void #t252 = self::Extension|[]=(#t248, #t250, #t251) in #t251);
+  self::throws(() → self::Class* => c = let final self::Class* #t253 = self::Extension|[](let final self::Class* #t254 = c in #t254.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t254), c) in let final self::Class* #t255 = c in let final self::Class* #t256 = self::Extension|+(self::Extension|[](#t253, #t255), 0) in let final void #t257 = self::Extension|[]=(#t253, #t255, #t256) in #t256);
+  self::throws(() → self::Class* => let final self::Class* #t258 = self::Extension|[](let final self::Class* #t259 = c in #t259.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t259), c) in let final self::Class* #t260 = c in let final self::Class* #t261 = self::Extension|[](#t258, #t260) in let final void #t262 = self::Extension|[]=(#t258, #t260, self::Extension|+(#t261, 1)) in #t261);
+  self::throws(() → self::Class* => c = let final self::Class* #t263 = self::Extension|[](let final self::Class* #t264 = c in #t264.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t264), c) in let final self::Class* #t265 = c in let final self::Class* #t266 = self::Extension|[](#t263, #t265) in let final void #t267 = self::Extension|[]=(#t263, #t265, self::Extension|+(#t266, 1)) in #t266);
+  self::throws(() → self::Class* => let final self::Class* #t268 = self::Extension|[](let final self::Class* #t269 = c in #t269.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t269), c) in let final self::Class* #t270 = c in let final self::Class* #t271 = self::Extension|+(self::Extension|[](#t268, #t270), 1) in let final void #t272 = self::Extension|[]=(#t268, #t270, #t271) in #t271);
+  self::throws(() → self::Class* => c = let final self::Class* #t273 = self::Extension|[](let final self::Class* #t274 = c in #t274.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t274), c) in let final self::Class* #t275 = c in let final self::Class* #t276 = self::Extension|+(self::Extension|[](#t273, #t275), 1) in let final void #t277 = self::Extension|[]=(#t273, #t275, #t276) in #t276);
 }
 static method operatorAccess(self::Class* c) → void {
-  self::throws(() → self::Class* => self::Extension|+(let final self::Class* #t278 = c in #t278.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t278), 0));
-  self::throws(() → self::Class* => self::Extension|unary-(let final self::Class* #t279 = c in #t279.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t279)));
-  let final self::Class* #t280 = c in #t280.{core::Object::==}(null) ?{self::Class*} null : self::Extension|set#field(#t280, self::Extension|+(self::Extension|get#field(#t280), 0));
-  c = let final self::Class* #t281 = c in #t281.{core::Object::==}(null) ?{self::Class*} null : let final self::Class* #t282 = self::Extension|+(self::Extension|get#field(#t281), 0) in let final void #t283 = self::Extension|set#field(#t281, #t282) in #t282;
-  self::throws(() → self::Class* => let final self::Class* #t284 = let final self::Class* #t285 = c in #t285.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t285) in let final self::Class* #t286 = self::Extension|+(self::Extension|get#field(#t284), 0) in let final void #t287 = self::Extension|set#field(#t284, #t286) in #t286);
-  self::throws(() → self::Class* => c = let final self::Class* #t288 = let final self::Class* #t289 = c in #t289.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t289) in let final self::Class* #t290 = self::Extension|+(self::Extension|get#field(#t288), 0) in let final void #t291 = self::Extension|set#field(#t288, #t290) in #t290);
-  let final self::Class* #t292 = c in #t292.{core::Object::==}(null) ?{self::Class*} null : self::Extension|set#field(#t292, self::Extension|+(self::Extension|get#field(#t292), 1));
-  c = let final self::Class* #t293 = c in #t293.{core::Object::==}(null) ?{self::Class*} null : let final self::Class* #t294 = self::Extension|get#field(#t293) in let final self::Class* #t295 = let final self::Class* #t296 = self::Extension|+(#t294, 1) in let final void #t297 = self::Extension|set#field(#t293, #t296) in #t296 in #t294;
-  let final self::Class* #t298 = c in #t298.{core::Object::==}(null) ?{self::Class*} null : let final self::Class* #t299 = self::Extension|+(self::Extension|get#field(#t298), 1) in let final void #t300 = self::Extension|set#field(#t298, #t299) in #t299;
-  c = let final self::Class* #t301 = c in #t301.{core::Object::==}(null) ?{self::Class*} null : let final self::Class* #t302 = self::Extension|+(self::Extension|get#field(#t301), 1) in let final void #t303 = self::Extension|set#field(#t301, #t302) in #t302;
+  self::throws(() → self::Class* => self::Extension|+(let final self::Class* #t278 = c in #t278.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t278), 0));
+  self::throws(() → self::Class* => self::Extension|unary-(let final self::Class* #t279 = c in #t279.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t279)));
+  let final self::Class* #t280 = c in #t280.{self::Class::==}(null) ?{self::Class*} null : self::Extension|set#field(#t280, self::Extension|+(self::Extension|get#field(#t280), 0));
+  c = let final self::Class* #t281 = c in #t281.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t282 = self::Extension|+(self::Extension|get#field(#t281), 0) in let final void #t283 = self::Extension|set#field(#t281, #t282) in #t282;
+  self::throws(() → self::Class* => let final self::Class* #t284 = let final self::Class* #t285 = c in #t285.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t285) in let final self::Class* #t286 = self::Extension|+(self::Extension|get#field(#t284), 0) in let final void #t287 = self::Extension|set#field(#t284, #t286) in #t286);
+  self::throws(() → self::Class* => c = let final self::Class* #t288 = let final self::Class* #t289 = c in #t289.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t289) in let final self::Class* #t290 = self::Extension|+(self::Extension|get#field(#t288), 0) in let final void #t291 = self::Extension|set#field(#t288, #t290) in #t290);
+  let final self::Class* #t292 = c in #t292.{self::Class::==}(null) ?{self::Class*} null : self::Extension|set#field(#t292, self::Extension|+(self::Extension|get#field(#t292), 1));
+  c = let final self::Class* #t293 = c in #t293.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t294 = self::Extension|get#field(#t293) in let final self::Class* #t295 = let final self::Class* #t296 = self::Extension|+(#t294, 1) in let final void #t297 = self::Extension|set#field(#t293, #t296) in #t296 in #t294;
+  let final self::Class* #t298 = c in #t298.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t299 = self::Extension|+(self::Extension|get#field(#t298), 1) in let final void #t300 = self::Extension|set#field(#t298, #t299) in #t299;
+  c = let final self::Class* #t301 = c in #t301.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t302 = self::Extension|+(self::Extension|get#field(#t301), 1) in let final void #t303 = self::Extension|set#field(#t301, #t302) in #t302;
 }
 static method ifNull(self::Class* c) → void {
-  let final self::Class* #t304 = c in #t304.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t304).{core::Object::==}(null) ?{self::Class*} self::Extension|set#field(#t304, c) : null;
-  c = let final self::Class* #t305 = c in #t305.{core::Object::==}(null) ?{self::Class*} null : let final self::Class* #t306 = self::Extension|get#field(#t305) in #t306.{core::Object::==}(null) ?{self::Class*} let final self::Class* #t307 = c in let final void #t308 = self::Extension|set#field(#t305, #t307) in #t307 : #t306;
-  self::throws(() → self::Class* => let final self::Class* #t309 = let final self::Class* #t310 = c in #t310.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t310) in let final self::Class* #t311 = self::Extension|get#field(#t309) in #t311.{core::Object::==}(null) ?{self::Class*} let final self::Class* #t312 = c in let final void #t313 = self::Extension|set#field(#t309, #t312) in #t312 : #t311);
-  self::throws(() → self::Class* => c = let final self::Class* #t314 = let final self::Class* #t315 = c in #t315.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t315) in let final self::Class* #t316 = self::Extension|get#field(#t314) in #t316.{core::Object::==}(null) ?{self::Class*} let final self::Class* #t317 = c in let final void #t318 = self::Extension|set#field(#t314, #t317) in #t317 : #t316);
-  self::throws(() → self::Class* => let final self::Class* #t319 = let final self::Class* #t320 = c in #t320.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t320) in let final self::Class* #t321 = c in let final self::Class* #t322 = self::Extension|[](#t319, #t321) in #t322.{core::Object::==}(null) ?{self::Class*} let final self::Class* #t323 = c in let final void #t324 = self::Extension|[]=(#t319, #t321, #t323) in #t323 : #t322);
-  self::throws(() → self::Class* => c = let final self::Class* #t325 = let final self::Class* #t326 = c in #t326.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t326) in let final self::Class* #t327 = c in let final self::Class* #t328 = self::Extension|[](#t325, #t327) in #t328.{core::Object::==}(null) ?{self::Class*} let final self::Class* #t329 = c in let final void #t330 = self::Extension|[]=(#t325, #t327, #t329) in #t329 : #t328);
+  let final self::Class* #t304 = c in #t304.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t304).{self::Class::==}(null) ?{self::Class*} self::Extension|set#field(#t304, c) : null;
+  c = let final self::Class* #t305 = c in #t305.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t306 = self::Extension|get#field(#t305) in #t306.{self::Class::==}(null) ?{self::Class*} let final self::Class* #t307 = c in let final void #t308 = self::Extension|set#field(#t305, #t307) in #t307 : #t306;
+  self::throws(() → self::Class* => let final self::Class* #t309 = let final self::Class* #t310 = c in #t310.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t310) in let final self::Class* #t311 = self::Extension|get#field(#t309) in #t311.{self::Class::==}(null) ?{self::Class*} let final self::Class* #t312 = c in let final void #t313 = self::Extension|set#field(#t309, #t312) in #t312 : #t311);
+  self::throws(() → self::Class* => c = let final self::Class* #t314 = let final self::Class* #t315 = c in #t315.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t315) in let final self::Class* #t316 = self::Extension|get#field(#t314) in #t316.{self::Class::==}(null) ?{self::Class*} let final self::Class* #t317 = c in let final void #t318 = self::Extension|set#field(#t314, #t317) in #t317 : #t316);
+  self::throws(() → self::Class* => let final self::Class* #t319 = let final self::Class* #t320 = c in #t320.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t320) in let final self::Class* #t321 = c in let final self::Class* #t322 = self::Extension|[](#t319, #t321) in #t322.{self::Class::==}(null) ?{self::Class*} let final self::Class* #t323 = c in let final void #t324 = self::Extension|[]=(#t319, #t321, #t323) in #t323 : #t322);
+  self::throws(() → self::Class* => c = let final self::Class* #t325 = let final self::Class* #t326 = c in #t326.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t326) in let final self::Class* #t327 = c in let final self::Class* #t328 = self::Extension|[](#t325, #t327) in #t328.{self::Class::==}(null) ?{self::Class*} let final self::Class* #t329 = c in let final void #t330 = self::Extension|[]=(#t325, #t327, #t329) in #t329 : #t328);
 }
 static method throws(() →* void f) → void {
   try {
diff --git a/pkg/front_end/testcases/nnbd/no_null_shorting_explicit_extension.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/no_null_shorting_explicit_extension.dart.weak.transformed.expect
index 90b06d3..1792025 100644
--- a/pkg/front_end/testcases/nnbd/no_null_shorting_explicit_extension.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/no_null_shorting_explicit_extension.dart.weak.transformed.expect
@@ -7,6 +7,16 @@
   synthetic constructor •() → self::Class*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 extension Extension on self::Class* {
   get field = self::Extension|get#field;
@@ -43,121 +53,121 @@
   self::ifNull(null);
 }
 static method propertyAccess(self::Class* c) → void {
-  let final self::Class* #t1 = c in #t1.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t1);
-  let final self::Class* #t2 = c in #t2.{core::Object::==}(null) ?{self::Class*} null : self::Extension|set#field(#t2, new self::Class::•());
-  c = let final self::Class* #t3 = c in #t3.{core::Object::==}(null) ?{self::Class*} null : let final self::Class* #t4 = new self::Class::•() in let final void #t5 = self::Extension|set#field(#t3, #t4) in #t4;
-  let final self::Class* #t6 = c in #t6.{core::Object::==}(null) ?{self::Class*} null : self::Extension|method(#t6);
-  self::throws(() → self::Class* => self::Extension|get#field(let final self::Class* #t7 = c in #t7.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t7)));
-  let final self::Class* #t8 = let final self::Class* #t9 = c in #t9.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t9) in #t8.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t8);
-  self::throws(() → self::Class* => let final self::Class* #t10 = self::Extension|get#field(let final self::Class* #t11 = c in #t11.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t11)) in #t10.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t10));
-  self::throws(() → self::Class* => let final self::Class* #t12 = new self::Class::•() in let final void #t13 = self::Extension|set#field(let final self::Class* #t14 = c in #t14.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t14), #t12) in #t12);
-  let final self::Class* #t15 = let final self::Class* #t16 = c in #t16.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t16) in #t15.{core::Object::==}(null) ?{self::Class*} null : self::Extension|set#field(#t15, new self::Class::•());
-  self::throws(() → self::Class* => let final self::Class* #t17 = self::Extension|get#field(let final self::Class* #t18 = c in #t18.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t18)) in #t17.{core::Object::==}(null) ?{self::Class*} null : let final self::Class* #t19 = new self::Class::•() in let final void #t20 = self::Extension|set#field(#t17, #t19) in #t19);
-  self::throws(() → self::Class* => self::Extension|get#field(let final self::Class* #t21 = c in #t21.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t21)));
-  self::throws(() → self::Class* => self::Extension|get#field(let final self::Class* #t22 = c in #t22.{core::Object::==}(null) ?{self::Class*} null : let final self::Class* #t23 = new self::Class::•() in let final void #t24 = self::Extension|set#field(#t22, #t23) in #t23));
-  self::throws(() → self::Class* => self::Extension|get#field(let final self::Class* #t25 = c in #t25.{core::Object::==}(null) ?{self::Class*} null : self::Extension|method(#t25)));
-  self::throws(() → self::Class* => c = let final self::Class* #t26 = new self::Class::•() in let final void #t27 = self::Extension|set#field(let final self::Class* #t28 = c in #t28.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t28), #t26) in #t26);
-  c = let final self::Class* #t29 = let final self::Class* #t30 = c in #t30.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t30) in #t29.{core::Object::==}(null) ?{self::Class*} null : let final self::Class* #t31 = new self::Class::•() in let final void #t32 = self::Extension|set#field(#t29, #t31) in #t31;
-  self::throws(() → self::Class* => c = let final self::Class* #t33 = self::Extension|get#field(let final self::Class* #t34 = c in #t34.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t34)) in #t33.{core::Object::==}(null) ?{self::Class*} null : let final self::Class* #t35 = new self::Class::•() in let final void #t36 = self::Extension|set#field(#t33, #t35) in #t35);
-  self::throws(() → self::Class* => self::Extension|method(let final self::Class* #t37 = c in #t37.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t37)));
-  let final self::Class* #t38 = c in #t38.{core::Object::==}(null) ?{self::Class*} null : self::Extension|set#field(#t38, self::Extension|get#field(new self::Class::•()));
-  c = let final self::Class* #t39 = c in #t39.{core::Object::==}(null) ?{self::Class*} null : let final self::Class* #t40 = self::Extension|get#field(new self::Class::•()) in let final void #t41 = self::Extension|set#field(#t39, #t40) in #t40;
-  let final self::Class* #t42 = c in #t42.{core::Object::==}(null) ?{self::Class*} null : self::Extension|set#field(#t42, let final self::Class* #t43 = new self::Class::•() in let final void #t44 = self::Extension|set#field(new self::Class::•(), #t43) in #t43);
-  c = let final self::Class* #t45 = c in #t45.{core::Object::==}(null) ?{self::Class*} null : let final self::Class* #t46 = let final self::Class* #t47 = new self::Class::•() in let final void #t48 = self::Extension|set#field(new self::Class::•(), #t47) in #t47 in let final void #t49 = self::Extension|set#field(#t45, #t46) in #t46;
-  let final self::Class* #t50 = c in #t50.{core::Object::==}(null) ?{self::Class*} null : self::Extension|set#field(#t50, self::Extension|method(new self::Class::•()));
-  c = let final self::Class* #t51 = c in #t51.{core::Object::==}(null) ?{self::Class*} null : let final self::Class* #t52 = self::Extension|method(new self::Class::•()) in let final void #t53 = self::Extension|set#field(#t51, #t52) in #t52;
-  self::throws(() → self::Class* => self::Extension|get#field(let final self::Class* #t54 = c in #t54.{core::Object::==}(null) ?{self::Class*} null : self::Extension|method(#t54)));
-  self::throws(() → self::Class* => let final self::Class* #t55 = new self::Class::•() in let final void #t56 = self::Extension|set#field(let final self::Class* #t57 = c in #t57.{core::Object::==}(null) ?{self::Class*} null : self::Extension|method(#t57), #t55) in #t55);
-  self::throws(() → self::Class* => self::Extension|method(let final self::Class* #t58 = c in #t58.{core::Object::==}(null) ?{self::Class*} null : self::Extension|method(#t58)));
-  self::throws(() → self::Class* => self::Extension|get#field(self::Extension|get#field(let final self::Class* #t59 = c in #t59.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t59))));
-  self::throws(() → self::Class* => let final self::Class* #t60 = new self::Class::•() in let final void #t61 = self::Extension|set#field(self::Extension|get#field(let final self::Class* #t62 = c in #t62.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t62)), #t60) in #t60);
-  self::throws(() → self::Class* => c = let final self::Class* #t63 = new self::Class::•() in let final void #t64 = self::Extension|set#field(self::Extension|get#field(let final self::Class* #t65 = c in #t65.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t65)), #t63) in #t63);
-  self::throws(() → self::Class* => self::Extension|method(self::Extension|get#field(let final self::Class* #t66 = c in #t66.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t66))));
-  let final self::Class* #t67 = c in #t67.{core::Object::==}(null) ?{self::Class*} null : self::Extension|set#field(#t67, self::Extension|get#field(self::Extension|get#field(new self::Class::•())));
-  c = let final self::Class* #t68 = c in #t68.{core::Object::==}(null) ?{self::Class*} null : let final self::Class* #t69 = self::Extension|get#field(self::Extension|get#field(new self::Class::•())) in let final void #t70 = self::Extension|set#field(#t68, #t69) in #t69;
-  let final self::Class* #t71 = c in #t71.{core::Object::==}(null) ?{self::Class*} null : self::Extension|set#field(#t71, let final self::Class* #t72 = new self::Class::•() in let final void #t73 = self::Extension|set#field(self::Extension|get#field(new self::Class::•()), #t72) in #t72);
-  c = let final self::Class* #t74 = c in #t74.{core::Object::==}(null) ?{self::Class*} null : let final self::Class* #t75 = let final self::Class* #t76 = new self::Class::•() in let final void #t77 = self::Extension|set#field(self::Extension|get#field(new self::Class::•()), #t76) in #t76 in let final void #t78 = self::Extension|set#field(#t74, #t75) in #t75;
-  let final self::Class* #t79 = c in #t79.{core::Object::==}(null) ?{self::Class*} null : self::Extension|set#field(#t79, self::Extension|method(self::Extension|get#field(new self::Class::•())));
-  c = let final self::Class* #t80 = c in #t80.{core::Object::==}(null) ?{self::Class*} null : let final self::Class* #t81 = self::Extension|method(self::Extension|get#field(new self::Class::•())) in let final void #t82 = self::Extension|set#field(#t80, #t81) in #t81;
-  self::throws(() → self::Class* => self::Extension|get#field(self::Extension|get#field(let final self::Class* #t83 = c in #t83.{core::Object::==}(null) ?{self::Class*} null : self::Extension|method(#t83))));
-  self::throws(() → self::Class* => let final self::Class* #t84 = new self::Class::•() in let final void #t85 = self::Extension|set#field(self::Extension|get#field(let final self::Class* #t86 = c in #t86.{core::Object::==}(null) ?{self::Class*} null : self::Extension|method(#t86)), #t84) in #t84);
-  self::throws(() → self::Class* => self::Extension|method(self::Extension|get#field(let final self::Class* #t87 = c in #t87.{core::Object::==}(null) ?{self::Class*} null : self::Extension|method(#t87))));
-  self::throws(() → self::Class* => let final self::Class* #t88 = self::Extension|get#field(new self::Class::•()) in let final void #t89 = self::Extension|set#field(let final self::Class* #t90 = c in #t90.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t90), #t88) in #t88);
-  self::throws(() → self::Class* => c = let final self::Class* #t91 = self::Extension|get#field(new self::Class::•()) in let final void #t92 = self::Extension|set#field(let final self::Class* #t93 = c in #t93.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t93), #t91) in #t91);
-  self::throws(() → self::Class* => let final self::Class* #t94 = let final self::Class* #t95 = new self::Class::•() in let final void #t96 = self::Extension|set#field(new self::Class::•(), #t95) in #t95 in let final void #t97 = self::Extension|set#field(let final self::Class* #t98 = c in #t98.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t98), #t94) in #t94);
-  self::throws(() → self::Class* => c = let final self::Class* #t99 = let final self::Class* #t100 = new self::Class::•() in let final void #t101 = self::Extension|set#field(new self::Class::•(), #t100) in #t100 in let final void #t102 = self::Extension|set#field(let final self::Class* #t103 = c in #t103.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t103), #t99) in #t99);
-  self::throws(() → self::Class* => let final self::Class* #t104 = self::Extension|method(new self::Class::•()) in let final void #t105 = self::Extension|set#field(let final self::Class* #t106 = c in #t106.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t106), #t104) in #t104);
-  self::throws(() → self::Class* => c = let final self::Class* #t107 = self::Extension|method(new self::Class::•()) in let final void #t108 = self::Extension|set#field(let final self::Class* #t109 = c in #t109.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t109), #t107) in #t107);
-  let final self::Class* #t110 = c in #t110.{core::Object::==}(null) ?{self::Class*} null : self::Extension|set#field(#t110, let final self::Class* #t111 = self::Extension|get#field(new self::Class::•()) in let final void #t112 = self::Extension|set#field(new self::Class::•(), #t111) in #t111);
-  c = let final self::Class* #t113 = c in #t113.{core::Object::==}(null) ?{self::Class*} null : let final self::Class* #t114 = let final self::Class* #t115 = self::Extension|get#field(new self::Class::•()) in let final void #t116 = self::Extension|set#field(new self::Class::•(), #t115) in #t115 in let final void #t117 = self::Extension|set#field(#t113, #t114) in #t114;
-  let final self::Class* #t118 = c in #t118.{core::Object::==}(null) ?{self::Class*} null : self::Extension|set#field(#t118, let final self::Class* #t119 = let final self::Class* #t120 = new self::Class::•() in let final void #t121 = self::Extension|set#field(new self::Class::•(), #t120) in #t120 in let final void #t122 = self::Extension|set#field(new self::Class::•(), #t119) in #t119);
-  c = let final self::Class* #t123 = c in #t123.{core::Object::==}(null) ?{self::Class*} null : let final self::Class* #t124 = let final self::Class* #t125 = let final self::Class* #t126 = new self::Class::•() in let final void #t127 = self::Extension|set#field(new self::Class::•(), #t126) in #t126 in let final void #t128 = self::Extension|set#field(new self::Class::•(), #t125) in #t125 in let final void #t129 = self::Extension|set#field(#t123, #t124) in #t124;
-  let final self::Class* #t130 = c in #t130.{core::Object::==}(null) ?{self::Class*} null : self::Extension|set#field(#t130, let final self::Class* #t131 = self::Extension|method(new self::Class::•()) in let final void #t132 = self::Extension|set#field(new self::Class::•(), #t131) in #t131);
-  c = let final self::Class* #t133 = c in #t133.{core::Object::==}(null) ?{self::Class*} null : let final self::Class* #t134 = let final self::Class* #t135 = self::Extension|method(new self::Class::•()) in let final void #t136 = self::Extension|set#field(new self::Class::•(), #t135) in #t135 in let final void #t137 = self::Extension|set#field(#t133, #t134) in #t134;
-  self::throws(() → self::Class* => let final self::Class* #t138 = self::Extension|get#field(new self::Class::•()) in let final void #t139 = self::Extension|set#field(let final self::Class* #t140 = c in #t140.{core::Object::==}(null) ?{self::Class*} null : self::Extension|method(#t140), #t138) in #t138);
-  self::throws(() → self::Class* => c = let final self::Class* #t141 = self::Extension|get#field(new self::Class::•()) in let final void #t142 = self::Extension|set#field(let final self::Class* #t143 = c in #t143.{core::Object::==}(null) ?{self::Class*} null : self::Extension|method(#t143), #t141) in #t141);
-  self::throws(() → self::Class* => let final self::Class* #t144 = let final self::Class* #t145 = new self::Class::•() in let final void #t146 = self::Extension|set#field(new self::Class::•(), #t145) in #t145 in let final void #t147 = self::Extension|set#field(let final self::Class* #t148 = c in #t148.{core::Object::==}(null) ?{self::Class*} null : self::Extension|method(#t148), #t144) in #t144);
-  self::throws(() → self::Class* => c = let final self::Class* #t149 = let final self::Class* #t150 = new self::Class::•() in let final void #t151 = self::Extension|set#field(new self::Class::•(), #t150) in #t150 in let final void #t152 = self::Extension|set#field(let final self::Class* #t153 = c in #t153.{core::Object::==}(null) ?{self::Class*} null : self::Extension|method(#t153), #t149) in #t149);
-  self::throws(() → self::Class* => let final self::Class* #t154 = self::Extension|method(new self::Class::•()) in let final void #t155 = self::Extension|set#field(let final self::Class* #t156 = c in #t156.{core::Object::==}(null) ?{self::Class*} null : self::Extension|method(#t156), #t154) in #t154);
-  self::throws(() → self::Class* => c = let final self::Class* #t157 = self::Extension|method(new self::Class::•()) in let final void #t158 = self::Extension|set#field(let final self::Class* #t159 = c in #t159.{core::Object::==}(null) ?{self::Class*} null : self::Extension|method(#t159), #t157) in #t157);
-  self::throws(() → self::Class* => self::Extension|get#field(self::Extension|method(let final self::Class* #t160 = c in #t160.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t160))));
-  self::throws(() → self::Class* => let final self::Class* #t161 = new self::Class::•() in let final void #t162 = self::Extension|set#field(self::Extension|method(let final self::Class* #t163 = c in #t163.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t163)), #t161) in #t161);
-  self::throws(() → self::Class* => c = let final self::Class* #t164 = new self::Class::•() in let final void #t165 = self::Extension|set#field(self::Extension|method(let final self::Class* #t166 = c in #t166.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t166)), #t164) in #t164);
-  self::throws(() → self::Class* => self::Extension|method(self::Extension|method(let final self::Class* #t167 = c in #t167.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t167))));
-  let final self::Class* #t168 = c in #t168.{core::Object::==}(null) ?{self::Class*} null : self::Extension|set#field(#t168, self::Extension|get#field(self::Extension|method(new self::Class::•())));
-  c = let final self::Class* #t169 = c in #t169.{core::Object::==}(null) ?{self::Class*} null : let final self::Class* #t170 = self::Extension|get#field(self::Extension|method(new self::Class::•())) in let final void #t171 = self::Extension|set#field(#t169, #t170) in #t170;
-  let final self::Class* #t172 = c in #t172.{core::Object::==}(null) ?{self::Class*} null : self::Extension|set#field(#t172, let final self::Class* #t173 = new self::Class::•() in let final void #t174 = self::Extension|set#field(self::Extension|method(new self::Class::•()), #t173) in #t173);
-  c = let final self::Class* #t175 = c in #t175.{core::Object::==}(null) ?{self::Class*} null : let final self::Class* #t176 = let final self::Class* #t177 = new self::Class::•() in let final void #t178 = self::Extension|set#field(self::Extension|method(new self::Class::•()), #t177) in #t177 in let final void #t179 = self::Extension|set#field(#t175, #t176) in #t176;
-  let final self::Class* #t180 = c in #t180.{core::Object::==}(null) ?{self::Class*} null : self::Extension|set#field(#t180, self::Extension|method(self::Extension|method(new self::Class::•())));
-  c = let final self::Class* #t181 = c in #t181.{core::Object::==}(null) ?{self::Class*} null : let final self::Class* #t182 = self::Extension|method(self::Extension|method(new self::Class::•())) in let final void #t183 = self::Extension|set#field(#t181, #t182) in #t182;
-  self::throws(() → self::Class* => self::Extension|get#field(self::Extension|method(let final self::Class* #t184 = c in #t184.{core::Object::==}(null) ?{self::Class*} null : self::Extension|method(#t184))));
-  self::throws(() → self::Class* => let final self::Class* #t185 = new self::Class::•() in let final void #t186 = self::Extension|set#field(self::Extension|method(let final self::Class* #t187 = c in #t187.{core::Object::==}(null) ?{self::Class*} null : self::Extension|method(#t187)), #t185) in #t185);
-  self::throws(() → self::Class* => self::Extension|method(self::Extension|method(let final self::Class* #t188 = c in #t188.{core::Object::==}(null) ?{self::Class*} null : self::Extension|method(#t188))));
-  let final self::Class* #t189 = let final self::Class* #t190 = c in #t190.{core::Object::==}(null) ?{self::Class*} null : self::Extension|method(#t190) in #t189.{core::Object::==}(null) ?{self::Class*} null : self::Extension|method(#t189);
-  self::throws(() → self::Class* => self::Extension|get#field(let final self::Class* #t191 = c in #t191.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t191)));
-  let final self::Class* #t192 = let final self::Class* #t193 = c in #t193.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t193) in #t192.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t192);
+  let final self::Class* #t1 = c in #t1.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t1);
+  let final self::Class* #t2 = c in #t2.{self::Class::==}(null) ?{self::Class*} null : self::Extension|set#field(#t2, new self::Class::•());
+  c = let final self::Class* #t3 = c in #t3.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t4 = new self::Class::•() in let final void #t5 = self::Extension|set#field(#t3, #t4) in #t4;
+  let final self::Class* #t6 = c in #t6.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t6);
+  self::throws(() → self::Class* => self::Extension|get#field(let final self::Class* #t7 = c in #t7.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t7)));
+  let final self::Class* #t8 = let final self::Class* #t9 = c in #t9.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t9) in #t8.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t8);
+  self::throws(() → self::Class* => let final self::Class* #t10 = self::Extension|get#field(let final self::Class* #t11 = c in #t11.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t11)) in #t10.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t10));
+  self::throws(() → self::Class* => let final self::Class* #t12 = new self::Class::•() in let final void #t13 = self::Extension|set#field(let final self::Class* #t14 = c in #t14.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t14), #t12) in #t12);
+  let final self::Class* #t15 = let final self::Class* #t16 = c in #t16.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t16) in #t15.{self::Class::==}(null) ?{self::Class*} null : self::Extension|set#field(#t15, new self::Class::•());
+  self::throws(() → self::Class* => let final self::Class* #t17 = self::Extension|get#field(let final self::Class* #t18 = c in #t18.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t18)) in #t17.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t19 = new self::Class::•() in let final void #t20 = self::Extension|set#field(#t17, #t19) in #t19);
+  self::throws(() → self::Class* => self::Extension|get#field(let final self::Class* #t21 = c in #t21.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t21)));
+  self::throws(() → self::Class* => self::Extension|get#field(let final self::Class* #t22 = c in #t22.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t23 = new self::Class::•() in let final void #t24 = self::Extension|set#field(#t22, #t23) in #t23));
+  self::throws(() → self::Class* => self::Extension|get#field(let final self::Class* #t25 = c in #t25.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t25)));
+  self::throws(() → self::Class* => c = let final self::Class* #t26 = new self::Class::•() in let final void #t27 = self::Extension|set#field(let final self::Class* #t28 = c in #t28.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t28), #t26) in #t26);
+  c = let final self::Class* #t29 = let final self::Class* #t30 = c in #t30.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t30) in #t29.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t31 = new self::Class::•() in let final void #t32 = self::Extension|set#field(#t29, #t31) in #t31;
+  self::throws(() → self::Class* => c = let final self::Class* #t33 = self::Extension|get#field(let final self::Class* #t34 = c in #t34.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t34)) in #t33.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t35 = new self::Class::•() in let final void #t36 = self::Extension|set#field(#t33, #t35) in #t35);
+  self::throws(() → self::Class* => self::Extension|method(let final self::Class* #t37 = c in #t37.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t37)));
+  let final self::Class* #t38 = c in #t38.{self::Class::==}(null) ?{self::Class*} null : self::Extension|set#field(#t38, self::Extension|get#field(new self::Class::•()));
+  c = let final self::Class* #t39 = c in #t39.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t40 = self::Extension|get#field(new self::Class::•()) in let final void #t41 = self::Extension|set#field(#t39, #t40) in #t40;
+  let final self::Class* #t42 = c in #t42.{self::Class::==}(null) ?{self::Class*} null : self::Extension|set#field(#t42, let final self::Class* #t43 = new self::Class::•() in let final void #t44 = self::Extension|set#field(new self::Class::•(), #t43) in #t43);
+  c = let final self::Class* #t45 = c in #t45.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t46 = let final self::Class* #t47 = new self::Class::•() in let final void #t48 = self::Extension|set#field(new self::Class::•(), #t47) in #t47 in let final void #t49 = self::Extension|set#field(#t45, #t46) in #t46;
+  let final self::Class* #t50 = c in #t50.{self::Class::==}(null) ?{self::Class*} null : self::Extension|set#field(#t50, self::Extension|method(new self::Class::•()));
+  c = let final self::Class* #t51 = c in #t51.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t52 = self::Extension|method(new self::Class::•()) in let final void #t53 = self::Extension|set#field(#t51, #t52) in #t52;
+  self::throws(() → self::Class* => self::Extension|get#field(let final self::Class* #t54 = c in #t54.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t54)));
+  self::throws(() → self::Class* => let final self::Class* #t55 = new self::Class::•() in let final void #t56 = self::Extension|set#field(let final self::Class* #t57 = c in #t57.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t57), #t55) in #t55);
+  self::throws(() → self::Class* => self::Extension|method(let final self::Class* #t58 = c in #t58.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t58)));
+  self::throws(() → self::Class* => self::Extension|get#field(self::Extension|get#field(let final self::Class* #t59 = c in #t59.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t59))));
+  self::throws(() → self::Class* => let final self::Class* #t60 = new self::Class::•() in let final void #t61 = self::Extension|set#field(self::Extension|get#field(let final self::Class* #t62 = c in #t62.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t62)), #t60) in #t60);
+  self::throws(() → self::Class* => c = let final self::Class* #t63 = new self::Class::•() in let final void #t64 = self::Extension|set#field(self::Extension|get#field(let final self::Class* #t65 = c in #t65.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t65)), #t63) in #t63);
+  self::throws(() → self::Class* => self::Extension|method(self::Extension|get#field(let final self::Class* #t66 = c in #t66.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t66))));
+  let final self::Class* #t67 = c in #t67.{self::Class::==}(null) ?{self::Class*} null : self::Extension|set#field(#t67, self::Extension|get#field(self::Extension|get#field(new self::Class::•())));
+  c = let final self::Class* #t68 = c in #t68.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t69 = self::Extension|get#field(self::Extension|get#field(new self::Class::•())) in let final void #t70 = self::Extension|set#field(#t68, #t69) in #t69;
+  let final self::Class* #t71 = c in #t71.{self::Class::==}(null) ?{self::Class*} null : self::Extension|set#field(#t71, let final self::Class* #t72 = new self::Class::•() in let final void #t73 = self::Extension|set#field(self::Extension|get#field(new self::Class::•()), #t72) in #t72);
+  c = let final self::Class* #t74 = c in #t74.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t75 = let final self::Class* #t76 = new self::Class::•() in let final void #t77 = self::Extension|set#field(self::Extension|get#field(new self::Class::•()), #t76) in #t76 in let final void #t78 = self::Extension|set#field(#t74, #t75) in #t75;
+  let final self::Class* #t79 = c in #t79.{self::Class::==}(null) ?{self::Class*} null : self::Extension|set#field(#t79, self::Extension|method(self::Extension|get#field(new self::Class::•())));
+  c = let final self::Class* #t80 = c in #t80.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t81 = self::Extension|method(self::Extension|get#field(new self::Class::•())) in let final void #t82 = self::Extension|set#field(#t80, #t81) in #t81;
+  self::throws(() → self::Class* => self::Extension|get#field(self::Extension|get#field(let final self::Class* #t83 = c in #t83.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t83))));
+  self::throws(() → self::Class* => let final self::Class* #t84 = new self::Class::•() in let final void #t85 = self::Extension|set#field(self::Extension|get#field(let final self::Class* #t86 = c in #t86.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t86)), #t84) in #t84);
+  self::throws(() → self::Class* => self::Extension|method(self::Extension|get#field(let final self::Class* #t87 = c in #t87.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t87))));
+  self::throws(() → self::Class* => let final self::Class* #t88 = self::Extension|get#field(new self::Class::•()) in let final void #t89 = self::Extension|set#field(let final self::Class* #t90 = c in #t90.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t90), #t88) in #t88);
+  self::throws(() → self::Class* => c = let final self::Class* #t91 = self::Extension|get#field(new self::Class::•()) in let final void #t92 = self::Extension|set#field(let final self::Class* #t93 = c in #t93.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t93), #t91) in #t91);
+  self::throws(() → self::Class* => let final self::Class* #t94 = let final self::Class* #t95 = new self::Class::•() in let final void #t96 = self::Extension|set#field(new self::Class::•(), #t95) in #t95 in let final void #t97 = self::Extension|set#field(let final self::Class* #t98 = c in #t98.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t98), #t94) in #t94);
+  self::throws(() → self::Class* => c = let final self::Class* #t99 = let final self::Class* #t100 = new self::Class::•() in let final void #t101 = self::Extension|set#field(new self::Class::•(), #t100) in #t100 in let final void #t102 = self::Extension|set#field(let final self::Class* #t103 = c in #t103.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t103), #t99) in #t99);
+  self::throws(() → self::Class* => let final self::Class* #t104 = self::Extension|method(new self::Class::•()) in let final void #t105 = self::Extension|set#field(let final self::Class* #t106 = c in #t106.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t106), #t104) in #t104);
+  self::throws(() → self::Class* => c = let final self::Class* #t107 = self::Extension|method(new self::Class::•()) in let final void #t108 = self::Extension|set#field(let final self::Class* #t109 = c in #t109.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t109), #t107) in #t107);
+  let final self::Class* #t110 = c in #t110.{self::Class::==}(null) ?{self::Class*} null : self::Extension|set#field(#t110, let final self::Class* #t111 = self::Extension|get#field(new self::Class::•()) in let final void #t112 = self::Extension|set#field(new self::Class::•(), #t111) in #t111);
+  c = let final self::Class* #t113 = c in #t113.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t114 = let final self::Class* #t115 = self::Extension|get#field(new self::Class::•()) in let final void #t116 = self::Extension|set#field(new self::Class::•(), #t115) in #t115 in let final void #t117 = self::Extension|set#field(#t113, #t114) in #t114;
+  let final self::Class* #t118 = c in #t118.{self::Class::==}(null) ?{self::Class*} null : self::Extension|set#field(#t118, let final self::Class* #t119 = let final self::Class* #t120 = new self::Class::•() in let final void #t121 = self::Extension|set#field(new self::Class::•(), #t120) in #t120 in let final void #t122 = self::Extension|set#field(new self::Class::•(), #t119) in #t119);
+  c = let final self::Class* #t123 = c in #t123.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t124 = let final self::Class* #t125 = let final self::Class* #t126 = new self::Class::•() in let final void #t127 = self::Extension|set#field(new self::Class::•(), #t126) in #t126 in let final void #t128 = self::Extension|set#field(new self::Class::•(), #t125) in #t125 in let final void #t129 = self::Extension|set#field(#t123, #t124) in #t124;
+  let final self::Class* #t130 = c in #t130.{self::Class::==}(null) ?{self::Class*} null : self::Extension|set#field(#t130, let final self::Class* #t131 = self::Extension|method(new self::Class::•()) in let final void #t132 = self::Extension|set#field(new self::Class::•(), #t131) in #t131);
+  c = let final self::Class* #t133 = c in #t133.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t134 = let final self::Class* #t135 = self::Extension|method(new self::Class::•()) in let final void #t136 = self::Extension|set#field(new self::Class::•(), #t135) in #t135 in let final void #t137 = self::Extension|set#field(#t133, #t134) in #t134;
+  self::throws(() → self::Class* => let final self::Class* #t138 = self::Extension|get#field(new self::Class::•()) in let final void #t139 = self::Extension|set#field(let final self::Class* #t140 = c in #t140.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t140), #t138) in #t138);
+  self::throws(() → self::Class* => c = let final self::Class* #t141 = self::Extension|get#field(new self::Class::•()) in let final void #t142 = self::Extension|set#field(let final self::Class* #t143 = c in #t143.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t143), #t141) in #t141);
+  self::throws(() → self::Class* => let final self::Class* #t144 = let final self::Class* #t145 = new self::Class::•() in let final void #t146 = self::Extension|set#field(new self::Class::•(), #t145) in #t145 in let final void #t147 = self::Extension|set#field(let final self::Class* #t148 = c in #t148.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t148), #t144) in #t144);
+  self::throws(() → self::Class* => c = let final self::Class* #t149 = let final self::Class* #t150 = new self::Class::•() in let final void #t151 = self::Extension|set#field(new self::Class::•(), #t150) in #t150 in let final void #t152 = self::Extension|set#field(let final self::Class* #t153 = c in #t153.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t153), #t149) in #t149);
+  self::throws(() → self::Class* => let final self::Class* #t154 = self::Extension|method(new self::Class::•()) in let final void #t155 = self::Extension|set#field(let final self::Class* #t156 = c in #t156.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t156), #t154) in #t154);
+  self::throws(() → self::Class* => c = let final self::Class* #t157 = self::Extension|method(new self::Class::•()) in let final void #t158 = self::Extension|set#field(let final self::Class* #t159 = c in #t159.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t159), #t157) in #t157);
+  self::throws(() → self::Class* => self::Extension|get#field(self::Extension|method(let final self::Class* #t160 = c in #t160.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t160))));
+  self::throws(() → self::Class* => let final self::Class* #t161 = new self::Class::•() in let final void #t162 = self::Extension|set#field(self::Extension|method(let final self::Class* #t163 = c in #t163.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t163)), #t161) in #t161);
+  self::throws(() → self::Class* => c = let final self::Class* #t164 = new self::Class::•() in let final void #t165 = self::Extension|set#field(self::Extension|method(let final self::Class* #t166 = c in #t166.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t166)), #t164) in #t164);
+  self::throws(() → self::Class* => self::Extension|method(self::Extension|method(let final self::Class* #t167 = c in #t167.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t167))));
+  let final self::Class* #t168 = c in #t168.{self::Class::==}(null) ?{self::Class*} null : self::Extension|set#field(#t168, self::Extension|get#field(self::Extension|method(new self::Class::•())));
+  c = let final self::Class* #t169 = c in #t169.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t170 = self::Extension|get#field(self::Extension|method(new self::Class::•())) in let final void #t171 = self::Extension|set#field(#t169, #t170) in #t170;
+  let final self::Class* #t172 = c in #t172.{self::Class::==}(null) ?{self::Class*} null : self::Extension|set#field(#t172, let final self::Class* #t173 = new self::Class::•() in let final void #t174 = self::Extension|set#field(self::Extension|method(new self::Class::•()), #t173) in #t173);
+  c = let final self::Class* #t175 = c in #t175.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t176 = let final self::Class* #t177 = new self::Class::•() in let final void #t178 = self::Extension|set#field(self::Extension|method(new self::Class::•()), #t177) in #t177 in let final void #t179 = self::Extension|set#field(#t175, #t176) in #t176;
+  let final self::Class* #t180 = c in #t180.{self::Class::==}(null) ?{self::Class*} null : self::Extension|set#field(#t180, self::Extension|method(self::Extension|method(new self::Class::•())));
+  c = let final self::Class* #t181 = c in #t181.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t182 = self::Extension|method(self::Extension|method(new self::Class::•())) in let final void #t183 = self::Extension|set#field(#t181, #t182) in #t182;
+  self::throws(() → self::Class* => self::Extension|get#field(self::Extension|method(let final self::Class* #t184 = c in #t184.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t184))));
+  self::throws(() → self::Class* => let final self::Class* #t185 = new self::Class::•() in let final void #t186 = self::Extension|set#field(self::Extension|method(let final self::Class* #t187 = c in #t187.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t187)), #t185) in #t185);
+  self::throws(() → self::Class* => self::Extension|method(self::Extension|method(let final self::Class* #t188 = c in #t188.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t188))));
+  let final self::Class* #t189 = let final self::Class* #t190 = c in #t190.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t190) in #t189.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t189);
+  self::throws(() → self::Class* => self::Extension|get#field(let final self::Class* #t191 = c in #t191.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t191)));
+  let final self::Class* #t192 = let final self::Class* #t193 = c in #t193.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t193) in #t192.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t192);
 }
 static method indexAccess(self::Class* c) → void {
-  self::throws(() → self::Class* => self::Extension|[](let final self::Class* #t194 = c in #t194.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t194), c));
-  self::throws(() → self::Class* => let final self::Class* #t195 = let final self::Class* #t196 = c in #t196.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t196) in let final self::Class* #t197 = c in let final self::Class* #t198 = new self::Class::•() in let final void #t199 = self::Extension|[]=(#t195, #t197, #t198) in #t198);
-  self::throws(() → self::Class* => c = let final self::Class* #t200 = let final self::Class* #t201 = c in #t201.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t201) in let final self::Class* #t202 = c in let final self::Class* #t203 = new self::Class::•() in let final void #t204 = self::Extension|[]=(#t200, #t202, #t203) in #t203);
-  self::throws(() → self::Class* => self::Extension|method(self::Extension|[](let final self::Class* #t205 = c in #t205.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t205), c)));
-  self::throws(() → self::Class* => let final self::Class* #t206 = let final self::Class* #t207 = c in #t207.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t207) in let final self::Class* #t208 = c in let final self::Class* #t209 = self::Extension|+(self::Extension|[](#t206, #t208), 0) in let final void #t210 = self::Extension|[]=(#t206, #t208, #t209) in #t209);
-  self::throws(() → self::Class* => c = let final self::Class* #t211 = let final self::Class* #t212 = c in #t212.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t212) in let final self::Class* #t213 = c in let final self::Class* #t214 = self::Extension|+(self::Extension|[](#t211, #t213), 0) in let final void #t215 = self::Extension|[]=(#t211, #t213, #t214) in #t214);
-  self::throws(() → self::Class* => let final self::Class* #t216 = let final self::Class* #t217 = c in #t217.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t217) in let final self::Class* #t218 = c in let final self::Class* #t219 = self::Extension|[](#t216, #t218) in let final void #t220 = self::Extension|[]=(#t216, #t218, self::Extension|+(#t219, 1)) in #t219);
-  self::throws(() → self::Class* => c = let final self::Class* #t221 = let final self::Class* #t222 = c in #t222.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t222) in let final self::Class* #t223 = c in let final self::Class* #t224 = self::Extension|[](#t221, #t223) in let final void #t225 = self::Extension|[]=(#t221, #t223, self::Extension|+(#t224, 1)) in #t224);
-  self::throws(() → self::Class* => let final self::Class* #t226 = let final self::Class* #t227 = c in #t227.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t227) in let final self::Class* #t228 = c in let final self::Class* #t229 = self::Extension|+(self::Extension|[](#t226, #t228), 1) in let final void #t230 = self::Extension|[]=(#t226, #t228, #t229) in #t229);
-  self::throws(() → self::Class* => c = let final self::Class* #t231 = let final self::Class* #t232 = c in #t232.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t232) in let final self::Class* #t233 = c in let final self::Class* #t234 = self::Extension|+(self::Extension|[](#t231, #t233), 1) in let final void #t235 = self::Extension|[]=(#t231, #t233, #t234) in #t234);
-  self::throws(() → self::Class* => self::Extension|[](self::Extension|[](let final self::Class* #t236 = c in #t236.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t236), c), c));
-  self::throws(() → self::Class* => let final self::Class* #t237 = self::Extension|[](let final self::Class* #t238 = c in #t238.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t238), c) in let final self::Class* #t239 = c in let final self::Class* #t240 = new self::Class::•() in let final void #t241 = self::Extension|[]=(#t237, #t239, #t240) in #t240);
-  self::throws(() → self::Class* => c = let final self::Class* #t242 = self::Extension|[](let final self::Class* #t243 = c in #t243.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t243), c) in let final self::Class* #t244 = c in let final self::Class* #t245 = new self::Class::•() in let final void #t246 = self::Extension|[]=(#t242, #t244, #t245) in #t245);
-  self::throws(() → self::Class* => self::Extension|method(self::Extension|[](self::Extension|[](let final self::Class* #t247 = c in #t247.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t247), c), c)));
-  self::throws(() → self::Class* => let final self::Class* #t248 = self::Extension|[](let final self::Class* #t249 = c in #t249.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t249), c) in let final self::Class* #t250 = c in let final self::Class* #t251 = self::Extension|+(self::Extension|[](#t248, #t250), 0) in let final void #t252 = self::Extension|[]=(#t248, #t250, #t251) in #t251);
-  self::throws(() → self::Class* => c = let final self::Class* #t253 = self::Extension|[](let final self::Class* #t254 = c in #t254.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t254), c) in let final self::Class* #t255 = c in let final self::Class* #t256 = self::Extension|+(self::Extension|[](#t253, #t255), 0) in let final void #t257 = self::Extension|[]=(#t253, #t255, #t256) in #t256);
-  self::throws(() → self::Class* => let final self::Class* #t258 = self::Extension|[](let final self::Class* #t259 = c in #t259.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t259), c) in let final self::Class* #t260 = c in let final self::Class* #t261 = self::Extension|[](#t258, #t260) in let final void #t262 = self::Extension|[]=(#t258, #t260, self::Extension|+(#t261, 1)) in #t261);
-  self::throws(() → self::Class* => c = let final self::Class* #t263 = self::Extension|[](let final self::Class* #t264 = c in #t264.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t264), c) in let final self::Class* #t265 = c in let final self::Class* #t266 = self::Extension|[](#t263, #t265) in let final void #t267 = self::Extension|[]=(#t263, #t265, self::Extension|+(#t266, 1)) in #t266);
-  self::throws(() → self::Class* => let final self::Class* #t268 = self::Extension|[](let final self::Class* #t269 = c in #t269.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t269), c) in let final self::Class* #t270 = c in let final self::Class* #t271 = self::Extension|+(self::Extension|[](#t268, #t270), 1) in let final void #t272 = self::Extension|[]=(#t268, #t270, #t271) in #t271);
-  self::throws(() → self::Class* => c = let final self::Class* #t273 = self::Extension|[](let final self::Class* #t274 = c in #t274.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t274), c) in let final self::Class* #t275 = c in let final self::Class* #t276 = self::Extension|+(self::Extension|[](#t273, #t275), 1) in let final void #t277 = self::Extension|[]=(#t273, #t275, #t276) in #t276);
+  self::throws(() → self::Class* => self::Extension|[](let final self::Class* #t194 = c in #t194.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t194), c));
+  self::throws(() → self::Class* => let final self::Class* #t195 = let final self::Class* #t196 = c in #t196.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t196) in let final self::Class* #t197 = c in let final self::Class* #t198 = new self::Class::•() in let final void #t199 = self::Extension|[]=(#t195, #t197, #t198) in #t198);
+  self::throws(() → self::Class* => c = let final self::Class* #t200 = let final self::Class* #t201 = c in #t201.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t201) in let final self::Class* #t202 = c in let final self::Class* #t203 = new self::Class::•() in let final void #t204 = self::Extension|[]=(#t200, #t202, #t203) in #t203);
+  self::throws(() → self::Class* => self::Extension|method(self::Extension|[](let final self::Class* #t205 = c in #t205.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t205), c)));
+  self::throws(() → self::Class* => let final self::Class* #t206 = let final self::Class* #t207 = c in #t207.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t207) in let final self::Class* #t208 = c in let final self::Class* #t209 = self::Extension|+(self::Extension|[](#t206, #t208), 0) in let final void #t210 = self::Extension|[]=(#t206, #t208, #t209) in #t209);
+  self::throws(() → self::Class* => c = let final self::Class* #t211 = let final self::Class* #t212 = c in #t212.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t212) in let final self::Class* #t213 = c in let final self::Class* #t214 = self::Extension|+(self::Extension|[](#t211, #t213), 0) in let final void #t215 = self::Extension|[]=(#t211, #t213, #t214) in #t214);
+  self::throws(() → self::Class* => let final self::Class* #t216 = let final self::Class* #t217 = c in #t217.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t217) in let final self::Class* #t218 = c in let final self::Class* #t219 = self::Extension|[](#t216, #t218) in let final void #t220 = self::Extension|[]=(#t216, #t218, self::Extension|+(#t219, 1)) in #t219);
+  self::throws(() → self::Class* => c = let final self::Class* #t221 = let final self::Class* #t222 = c in #t222.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t222) in let final self::Class* #t223 = c in let final self::Class* #t224 = self::Extension|[](#t221, #t223) in let final void #t225 = self::Extension|[]=(#t221, #t223, self::Extension|+(#t224, 1)) in #t224);
+  self::throws(() → self::Class* => let final self::Class* #t226 = let final self::Class* #t227 = c in #t227.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t227) in let final self::Class* #t228 = c in let final self::Class* #t229 = self::Extension|+(self::Extension|[](#t226, #t228), 1) in let final void #t230 = self::Extension|[]=(#t226, #t228, #t229) in #t229);
+  self::throws(() → self::Class* => c = let final self::Class* #t231 = let final self::Class* #t232 = c in #t232.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t232) in let final self::Class* #t233 = c in let final self::Class* #t234 = self::Extension|+(self::Extension|[](#t231, #t233), 1) in let final void #t235 = self::Extension|[]=(#t231, #t233, #t234) in #t234);
+  self::throws(() → self::Class* => self::Extension|[](self::Extension|[](let final self::Class* #t236 = c in #t236.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t236), c), c));
+  self::throws(() → self::Class* => let final self::Class* #t237 = self::Extension|[](let final self::Class* #t238 = c in #t238.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t238), c) in let final self::Class* #t239 = c in let final self::Class* #t240 = new self::Class::•() in let final void #t241 = self::Extension|[]=(#t237, #t239, #t240) in #t240);
+  self::throws(() → self::Class* => c = let final self::Class* #t242 = self::Extension|[](let final self::Class* #t243 = c in #t243.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t243), c) in let final self::Class* #t244 = c in let final self::Class* #t245 = new self::Class::•() in let final void #t246 = self::Extension|[]=(#t242, #t244, #t245) in #t245);
+  self::throws(() → self::Class* => self::Extension|method(self::Extension|[](self::Extension|[](let final self::Class* #t247 = c in #t247.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t247), c), c)));
+  self::throws(() → self::Class* => let final self::Class* #t248 = self::Extension|[](let final self::Class* #t249 = c in #t249.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t249), c) in let final self::Class* #t250 = c in let final self::Class* #t251 = self::Extension|+(self::Extension|[](#t248, #t250), 0) in let final void #t252 = self::Extension|[]=(#t248, #t250, #t251) in #t251);
+  self::throws(() → self::Class* => c = let final self::Class* #t253 = self::Extension|[](let final self::Class* #t254 = c in #t254.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t254), c) in let final self::Class* #t255 = c in let final self::Class* #t256 = self::Extension|+(self::Extension|[](#t253, #t255), 0) in let final void #t257 = self::Extension|[]=(#t253, #t255, #t256) in #t256);
+  self::throws(() → self::Class* => let final self::Class* #t258 = self::Extension|[](let final self::Class* #t259 = c in #t259.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t259), c) in let final self::Class* #t260 = c in let final self::Class* #t261 = self::Extension|[](#t258, #t260) in let final void #t262 = self::Extension|[]=(#t258, #t260, self::Extension|+(#t261, 1)) in #t261);
+  self::throws(() → self::Class* => c = let final self::Class* #t263 = self::Extension|[](let final self::Class* #t264 = c in #t264.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t264), c) in let final self::Class* #t265 = c in let final self::Class* #t266 = self::Extension|[](#t263, #t265) in let final void #t267 = self::Extension|[]=(#t263, #t265, self::Extension|+(#t266, 1)) in #t266);
+  self::throws(() → self::Class* => let final self::Class* #t268 = self::Extension|[](let final self::Class* #t269 = c in #t269.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t269), c) in let final self::Class* #t270 = c in let final self::Class* #t271 = self::Extension|+(self::Extension|[](#t268, #t270), 1) in let final void #t272 = self::Extension|[]=(#t268, #t270, #t271) in #t271);
+  self::throws(() → self::Class* => c = let final self::Class* #t273 = self::Extension|[](let final self::Class* #t274 = c in #t274.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t274), c) in let final self::Class* #t275 = c in let final self::Class* #t276 = self::Extension|+(self::Extension|[](#t273, #t275), 1) in let final void #t277 = self::Extension|[]=(#t273, #t275, #t276) in #t276);
 }
 static method operatorAccess(self::Class* c) → void {
-  self::throws(() → self::Class* => self::Extension|+(let final self::Class* #t278 = c in #t278.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t278), 0));
-  self::throws(() → self::Class* => self::Extension|unary-(let final self::Class* #t279 = c in #t279.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t279)));
-  let final self::Class* #t280 = c in #t280.{core::Object::==}(null) ?{self::Class*} null : self::Extension|set#field(#t280, self::Extension|+(self::Extension|get#field(#t280), 0));
-  c = let final self::Class* #t281 = c in #t281.{core::Object::==}(null) ?{self::Class*} null : let final self::Class* #t282 = self::Extension|+(self::Extension|get#field(#t281), 0) in let final void #t283 = self::Extension|set#field(#t281, #t282) in #t282;
-  self::throws(() → self::Class* => let final self::Class* #t284 = let final self::Class* #t285 = c in #t285.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t285) in let final self::Class* #t286 = self::Extension|+(self::Extension|get#field(#t284), 0) in let final void #t287 = self::Extension|set#field(#t284, #t286) in #t286);
-  self::throws(() → self::Class* => c = let final self::Class* #t288 = let final self::Class* #t289 = c in #t289.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t289) in let final self::Class* #t290 = self::Extension|+(self::Extension|get#field(#t288), 0) in let final void #t291 = self::Extension|set#field(#t288, #t290) in #t290);
-  let final self::Class* #t292 = c in #t292.{core::Object::==}(null) ?{self::Class*} null : self::Extension|set#field(#t292, self::Extension|+(self::Extension|get#field(#t292), 1));
-  c = let final self::Class* #t293 = c in #t293.{core::Object::==}(null) ?{self::Class*} null : let final self::Class* #t294 = self::Extension|get#field(#t293) in let final self::Class* #t295 = let final self::Class* #t296 = self::Extension|+(#t294, 1) in let final void #t297 = self::Extension|set#field(#t293, #t296) in #t296 in #t294;
-  let final self::Class* #t298 = c in #t298.{core::Object::==}(null) ?{self::Class*} null : let final self::Class* #t299 = self::Extension|+(self::Extension|get#field(#t298), 1) in let final void #t300 = self::Extension|set#field(#t298, #t299) in #t299;
-  c = let final self::Class* #t301 = c in #t301.{core::Object::==}(null) ?{self::Class*} null : let final self::Class* #t302 = self::Extension|+(self::Extension|get#field(#t301), 1) in let final void #t303 = self::Extension|set#field(#t301, #t302) in #t302;
+  self::throws(() → self::Class* => self::Extension|+(let final self::Class* #t278 = c in #t278.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t278), 0));
+  self::throws(() → self::Class* => self::Extension|unary-(let final self::Class* #t279 = c in #t279.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t279)));
+  let final self::Class* #t280 = c in #t280.{self::Class::==}(null) ?{self::Class*} null : self::Extension|set#field(#t280, self::Extension|+(self::Extension|get#field(#t280), 0));
+  c = let final self::Class* #t281 = c in #t281.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t282 = self::Extension|+(self::Extension|get#field(#t281), 0) in let final void #t283 = self::Extension|set#field(#t281, #t282) in #t282;
+  self::throws(() → self::Class* => let final self::Class* #t284 = let final self::Class* #t285 = c in #t285.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t285) in let final self::Class* #t286 = self::Extension|+(self::Extension|get#field(#t284), 0) in let final void #t287 = self::Extension|set#field(#t284, #t286) in #t286);
+  self::throws(() → self::Class* => c = let final self::Class* #t288 = let final self::Class* #t289 = c in #t289.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t289) in let final self::Class* #t290 = self::Extension|+(self::Extension|get#field(#t288), 0) in let final void #t291 = self::Extension|set#field(#t288, #t290) in #t290);
+  let final self::Class* #t292 = c in #t292.{self::Class::==}(null) ?{self::Class*} null : self::Extension|set#field(#t292, self::Extension|+(self::Extension|get#field(#t292), 1));
+  c = let final self::Class* #t293 = c in #t293.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t294 = self::Extension|get#field(#t293) in let final self::Class* #t295 = let final self::Class* #t296 = self::Extension|+(#t294, 1) in let final void #t297 = self::Extension|set#field(#t293, #t296) in #t296 in #t294;
+  let final self::Class* #t298 = c in #t298.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t299 = self::Extension|+(self::Extension|get#field(#t298), 1) in let final void #t300 = self::Extension|set#field(#t298, #t299) in #t299;
+  c = let final self::Class* #t301 = c in #t301.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t302 = self::Extension|+(self::Extension|get#field(#t301), 1) in let final void #t303 = self::Extension|set#field(#t301, #t302) in #t302;
 }
 static method ifNull(self::Class* c) → void {
-  let final self::Class* #t304 = c in #t304.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t304).{core::Object::==}(null) ?{self::Class*} self::Extension|set#field(#t304, c) : null;
-  c = let final self::Class* #t305 = c in #t305.{core::Object::==}(null) ?{self::Class*} null : let final self::Class* #t306 = self::Extension|get#field(#t305) in #t306.{core::Object::==}(null) ?{self::Class*} let final self::Class* #t307 = c in let final void #t308 = self::Extension|set#field(#t305, #t307) in #t307 : #t306;
-  self::throws(() → self::Class* => let final self::Class* #t309 = let final self::Class* #t310 = c in #t310.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t310) in let final self::Class* #t311 = self::Extension|get#field(#t309) in #t311.{core::Object::==}(null) ?{self::Class*} let final self::Class* #t312 = c in let final void #t313 = self::Extension|set#field(#t309, #t312) in #t312 : #t311);
-  self::throws(() → self::Class* => c = let final self::Class* #t314 = let final self::Class* #t315 = c in #t315.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t315) in let final self::Class* #t316 = self::Extension|get#field(#t314) in #t316.{core::Object::==}(null) ?{self::Class*} let final self::Class* #t317 = c in let final void #t318 = self::Extension|set#field(#t314, #t317) in #t317 : #t316);
-  self::throws(() → self::Class* => let final self::Class* #t319 = let final self::Class* #t320 = c in #t320.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t320) in let final self::Class* #t321 = c in let final self::Class* #t322 = self::Extension|[](#t319, #t321) in #t322.{core::Object::==}(null) ?{self::Class*} let final self::Class* #t323 = c in let final void #t324 = self::Extension|[]=(#t319, #t321, #t323) in #t323 : #t322);
-  self::throws(() → self::Class* => c = let final self::Class* #t325 = let final self::Class* #t326 = c in #t326.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t326) in let final self::Class* #t327 = c in let final self::Class* #t328 = self::Extension|[](#t325, #t327) in #t328.{core::Object::==}(null) ?{self::Class*} let final self::Class* #t329 = c in let final void #t330 = self::Extension|[]=(#t325, #t327, #t329) in #t329 : #t328);
+  let final self::Class* #t304 = c in #t304.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t304).{self::Class::==}(null) ?{self::Class*} self::Extension|set#field(#t304, c) : null;
+  c = let final self::Class* #t305 = c in #t305.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t306 = self::Extension|get#field(#t305) in #t306.{self::Class::==}(null) ?{self::Class*} let final self::Class* #t307 = c in let final void #t308 = self::Extension|set#field(#t305, #t307) in #t307 : #t306;
+  self::throws(() → self::Class* => let final self::Class* #t309 = let final self::Class* #t310 = c in #t310.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t310) in let final self::Class* #t311 = self::Extension|get#field(#t309) in #t311.{self::Class::==}(null) ?{self::Class*} let final self::Class* #t312 = c in let final void #t313 = self::Extension|set#field(#t309, #t312) in #t312 : #t311);
+  self::throws(() → self::Class* => c = let final self::Class* #t314 = let final self::Class* #t315 = c in #t315.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t315) in let final self::Class* #t316 = self::Extension|get#field(#t314) in #t316.{self::Class::==}(null) ?{self::Class*} let final self::Class* #t317 = c in let final void #t318 = self::Extension|set#field(#t314, #t317) in #t317 : #t316);
+  self::throws(() → self::Class* => let final self::Class* #t319 = let final self::Class* #t320 = c in #t320.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t320) in let final self::Class* #t321 = c in let final self::Class* #t322 = self::Extension|[](#t319, #t321) in #t322.{self::Class::==}(null) ?{self::Class*} let final self::Class* #t323 = c in let final void #t324 = self::Extension|[]=(#t319, #t321, #t323) in #t323 : #t322);
+  self::throws(() → self::Class* => c = let final self::Class* #t325 = let final self::Class* #t326 = c in #t326.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t326) in let final self::Class* #t327 = c in let final self::Class* #t328 = self::Extension|[](#t325, #t327) in #t328.{self::Class::==}(null) ?{self::Class*} let final self::Class* #t329 = c in let final void #t330 = self::Extension|[]=(#t325, #t327, #t329) in #t329 : #t328);
 }
 static method throws(() →* void f) → void {
   try {
diff --git a/pkg/front_end/testcases/nnbd/no_null_shorting_extension.dart.outline.expect b/pkg/front_end/testcases/nnbd/no_null_shorting_extension.dart.outline.expect
index f7c609c..05e1cb9 100644
--- a/pkg/front_end/testcases/nnbd/no_null_shorting_extension.dart.outline.expect
+++ b/pkg/front_end/testcases/nnbd/no_null_shorting_extension.dart.outline.expect
@@ -6,6 +6,16 @@
   field self::Class* _field;
   synthetic constructor •() → self::Class*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 extension Extension on self::Class* {
   get field = self::Extension|get#field;
diff --git a/pkg/front_end/testcases/nnbd/no_null_shorting_extension.dart.strong.expect b/pkg/front_end/testcases/nnbd/no_null_shorting_extension.dart.strong.expect
index 71b2eef..0e1daa3 100644
--- a/pkg/front_end/testcases/nnbd/no_null_shorting_extension.dart.strong.expect
+++ b/pkg/front_end/testcases/nnbd/no_null_shorting_extension.dart.strong.expect
@@ -7,6 +7,16 @@
   synthetic constructor •() → self::Class*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 extension Extension on self::Class* {
   get field = self::Extension|get#field;
@@ -43,119 +53,119 @@
   self::ifNull(null);
 }
 static method propertyAccess(self::Class* c) → void {
-  let final self::Class* #t1 = c in #t1.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t1);
-  let final self::Class* #t2 = c in #t2.{core::Object::==}(null) ?{self::Class*} null : self::Extension|set#field(#t2, new self::Class::•());
-  c = let final self::Class* #t3 = c in #t3.{core::Object::==}(null) ?{self::Class*} null : let final self::Class* #t4 = new self::Class::•() in let final void #t5 = self::Extension|set#field(#t3, #t4) in #t4;
-  let final self::Class* #t6 = c in #t6.{core::Object::==}(null) ?{self::Class*} null : self::Extension|method(#t6);
-  self::throws(() → self::Class* => self::Extension|get#field(let final self::Class* #t7 = c in #t7.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t7)));
-  let final self::Class* #t8 = let final self::Class* #t9 = c in #t9.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t9) in #t8.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t8);
-  self::throws(() → self::Class* => let final self::Class* #t10 = self::Extension|get#field(let final self::Class* #t11 = c in #t11.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t11)) in #t10.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t10));
-  self::throws(() → self::Class* => let final self::Class* #t12 = new self::Class::•() in let final void #t13 = self::Extension|set#field(let final self::Class* #t14 = c in #t14.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t14), #t12) in #t12);
-  let final self::Class* #t15 = let final self::Class* #t16 = c in #t16.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t16) in #t15.{core::Object::==}(null) ?{self::Class*} null : self::Extension|set#field(#t15, new self::Class::•());
-  self::throws(() → self::Class* => let final self::Class* #t17 = self::Extension|get#field(let final self::Class* #t18 = c in #t18.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t18)) in #t17.{core::Object::==}(null) ?{self::Class*} null : let final self::Class* #t19 = new self::Class::•() in let final void #t20 = self::Extension|set#field(#t17, #t19) in #t19);
-  self::throws(() → self::Class* => self::Extension|get#field(let final self::Class* #t21 = c in #t21.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t21)));
-  self::throws(() → self::Class* => self::Extension|get#field(let final self::Class* #t22 = c in #t22.{core::Object::==}(null) ?{self::Class*} null : let final self::Class* #t23 = new self::Class::•() in let final void #t24 = self::Extension|set#field(#t22, #t23) in #t23));
-  self::throws(() → self::Class* => self::Extension|get#field(let final self::Class* #t25 = c in #t25.{core::Object::==}(null) ?{self::Class*} null : self::Extension|method(#t25)));
-  self::throws(() → self::Class* => c = let final self::Class* #t26 = new self::Class::•() in let final void #t27 = self::Extension|set#field(let final self::Class* #t28 = c in #t28.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t28), #t26) in #t26);
-  c = let final self::Class* #t29 = let final self::Class* #t30 = c in #t30.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t30) in #t29.{core::Object::==}(null) ?{self::Class*} null : let final self::Class* #t31 = new self::Class::•() in let final void #t32 = self::Extension|set#field(#t29, #t31) in #t31;
-  self::throws(() → self::Class* => c = let final self::Class* #t33 = self::Extension|get#field(let final self::Class* #t34 = c in #t34.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t34)) in #t33.{core::Object::==}(null) ?{self::Class*} null : let final self::Class* #t35 = new self::Class::•() in let final void #t36 = self::Extension|set#field(#t33, #t35) in #t35);
-  self::throws(() → self::Class* => self::Extension|method(let final self::Class* #t37 = c in #t37.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t37)));
-  let final self::Class* #t38 = c in #t38.{core::Object::==}(null) ?{self::Class*} null : self::Extension|set#field(#t38, self::Extension|get#field(new self::Class::•()));
-  c = let final self::Class* #t39 = c in #t39.{core::Object::==}(null) ?{self::Class*} null : let final self::Class* #t40 = self::Extension|get#field(new self::Class::•()) in let final void #t41 = self::Extension|set#field(#t39, #t40) in #t40;
-  let final self::Class* #t42 = c in #t42.{core::Object::==}(null) ?{self::Class*} null : self::Extension|set#field(#t42, let final self::Class* #t43 = new self::Class::•() in let final void #t44 = self::Extension|set#field(new self::Class::•(), #t43) in #t43);
-  c = let final self::Class* #t45 = c in #t45.{core::Object::==}(null) ?{self::Class*} null : let final self::Class* #t46 = let final self::Class* #t47 = new self::Class::•() in let final void #t48 = self::Extension|set#field(new self::Class::•(), #t47) in #t47 in let final void #t49 = self::Extension|set#field(#t45, #t46) in #t46;
-  let final self::Class* #t50 = c in #t50.{core::Object::==}(null) ?{self::Class*} null : self::Extension|set#field(#t50, self::Extension|method(new self::Class::•()));
-  c = let final self::Class* #t51 = c in #t51.{core::Object::==}(null) ?{self::Class*} null : let final self::Class* #t52 = self::Extension|method(new self::Class::•()) in let final void #t53 = self::Extension|set#field(#t51, #t52) in #t52;
-  self::throws(() → self::Class* => self::Extension|get#field(let final self::Class* #t54 = c in #t54.{core::Object::==}(null) ?{self::Class*} null : self::Extension|method(#t54)));
-  self::throws(() → self::Class* => let final self::Class* #t55 = new self::Class::•() in let final void #t56 = self::Extension|set#field(let final self::Class* #t57 = c in #t57.{core::Object::==}(null) ?{self::Class*} null : self::Extension|method(#t57), #t55) in #t55);
-  self::throws(() → self::Class* => self::Extension|method(let final self::Class* #t58 = c in #t58.{core::Object::==}(null) ?{self::Class*} null : self::Extension|method(#t58)));
-  self::throws(() → self::Class* => self::Extension|get#field(self::Extension|get#field(let final self::Class* #t59 = c in #t59.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t59))));
-  self::throws(() → self::Class* => let final self::Class* #t60 = new self::Class::•() in let final void #t61 = self::Extension|set#field(self::Extension|get#field(let final self::Class* #t62 = c in #t62.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t62)), #t60) in #t60);
-  self::throws(() → self::Class* => c = let final self::Class* #t63 = new self::Class::•() in let final void #t64 = self::Extension|set#field(self::Extension|get#field(let final self::Class* #t65 = c in #t65.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t65)), #t63) in #t63);
-  self::throws(() → self::Class* => self::Extension|method(self::Extension|get#field(let final self::Class* #t66 = c in #t66.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t66))));
-  let final self::Class* #t67 = c in #t67.{core::Object::==}(null) ?{self::Class*} null : self::Extension|set#field(#t67, self::Extension|get#field(self::Extension|get#field(new self::Class::•())));
-  c = let final self::Class* #t68 = c in #t68.{core::Object::==}(null) ?{self::Class*} null : let final self::Class* #t69 = self::Extension|get#field(self::Extension|get#field(new self::Class::•())) in let final void #t70 = self::Extension|set#field(#t68, #t69) in #t69;
-  let final self::Class* #t71 = c in #t71.{core::Object::==}(null) ?{self::Class*} null : self::Extension|set#field(#t71, let final self::Class* #t72 = new self::Class::•() in let final void #t73 = self::Extension|set#field(self::Extension|get#field(new self::Class::•()), #t72) in #t72);
-  c = let final self::Class* #t74 = c in #t74.{core::Object::==}(null) ?{self::Class*} null : let final self::Class* #t75 = let final self::Class* #t76 = new self::Class::•() in let final void #t77 = self::Extension|set#field(self::Extension|get#field(new self::Class::•()), #t76) in #t76 in let final void #t78 = self::Extension|set#field(#t74, #t75) in #t75;
-  let final self::Class* #t79 = c in #t79.{core::Object::==}(null) ?{self::Class*} null : self::Extension|set#field(#t79, self::Extension|method(self::Extension|get#field(new self::Class::•())));
-  c = let final self::Class* #t80 = c in #t80.{core::Object::==}(null) ?{self::Class*} null : let final self::Class* #t81 = self::Extension|method(self::Extension|get#field(new self::Class::•())) in let final void #t82 = self::Extension|set#field(#t80, #t81) in #t81;
-  self::throws(() → self::Class* => self::Extension|get#field(self::Extension|get#field(let final self::Class* #t83 = c in #t83.{core::Object::==}(null) ?{self::Class*} null : self::Extension|method(#t83))));
-  self::throws(() → self::Class* => let final self::Class* #t84 = new self::Class::•() in let final void #t85 = self::Extension|set#field(self::Extension|get#field(let final self::Class* #t86 = c in #t86.{core::Object::==}(null) ?{self::Class*} null : self::Extension|method(#t86)), #t84) in #t84);
-  self::throws(() → self::Class* => self::Extension|method(self::Extension|get#field(let final self::Class* #t87 = c in #t87.{core::Object::==}(null) ?{self::Class*} null : self::Extension|method(#t87))));
-  self::throws(() → self::Class* => let final self::Class* #t88 = self::Extension|get#field(new self::Class::•()) in let final void #t89 = self::Extension|set#field(let final self::Class* #t90 = c in #t90.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t90), #t88) in #t88);
-  self::throws(() → self::Class* => c = let final self::Class* #t91 = self::Extension|get#field(new self::Class::•()) in let final void #t92 = self::Extension|set#field(let final self::Class* #t93 = c in #t93.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t93), #t91) in #t91);
-  self::throws(() → self::Class* => let final self::Class* #t94 = let final self::Class* #t95 = new self::Class::•() in let final void #t96 = self::Extension|set#field(new self::Class::•(), #t95) in #t95 in let final void #t97 = self::Extension|set#field(let final self::Class* #t98 = c in #t98.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t98), #t94) in #t94);
-  self::throws(() → self::Class* => c = let final self::Class* #t99 = let final self::Class* #t100 = new self::Class::•() in let final void #t101 = self::Extension|set#field(new self::Class::•(), #t100) in #t100 in let final void #t102 = self::Extension|set#field(let final self::Class* #t103 = c in #t103.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t103), #t99) in #t99);
-  self::throws(() → self::Class* => let final self::Class* #t104 = self::Extension|method(new self::Class::•()) in let final void #t105 = self::Extension|set#field(let final self::Class* #t106 = c in #t106.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t106), #t104) in #t104);
-  self::throws(() → self::Class* => c = let final self::Class* #t107 = self::Extension|method(new self::Class::•()) in let final void #t108 = self::Extension|set#field(let final self::Class* #t109 = c in #t109.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t109), #t107) in #t107);
-  let final self::Class* #t110 = c in #t110.{core::Object::==}(null) ?{self::Class*} null : self::Extension|set#field(#t110, let final self::Class* #t111 = self::Extension|get#field(new self::Class::•()) in let final void #t112 = self::Extension|set#field(new self::Class::•(), #t111) in #t111);
-  c = let final self::Class* #t113 = c in #t113.{core::Object::==}(null) ?{self::Class*} null : let final self::Class* #t114 = let final self::Class* #t115 = self::Extension|get#field(new self::Class::•()) in let final void #t116 = self::Extension|set#field(new self::Class::•(), #t115) in #t115 in let final void #t117 = self::Extension|set#field(#t113, #t114) in #t114;
-  let final self::Class* #t118 = c in #t118.{core::Object::==}(null) ?{self::Class*} null : self::Extension|set#field(#t118, let final self::Class* #t119 = let final self::Class* #t120 = new self::Class::•() in let final void #t121 = self::Extension|set#field(new self::Class::•(), #t120) in #t120 in let final void #t122 = self::Extension|set#field(new self::Class::•(), #t119) in #t119);
-  c = let final self::Class* #t123 = c in #t123.{core::Object::==}(null) ?{self::Class*} null : let final self::Class* #t124 = let final self::Class* #t125 = let final self::Class* #t126 = new self::Class::•() in let final void #t127 = self::Extension|set#field(new self::Class::•(), #t126) in #t126 in let final void #t128 = self::Extension|set#field(new self::Class::•(), #t125) in #t125 in let final void #t129 = self::Extension|set#field(#t123, #t124) in #t124;
-  let final self::Class* #t130 = c in #t130.{core::Object::==}(null) ?{self::Class*} null : self::Extension|set#field(#t130, let final self::Class* #t131 = self::Extension|method(new self::Class::•()) in let final void #t132 = self::Extension|set#field(new self::Class::•(), #t131) in #t131);
-  c = let final self::Class* #t133 = c in #t133.{core::Object::==}(null) ?{self::Class*} null : let final self::Class* #t134 = let final self::Class* #t135 = self::Extension|method(new self::Class::•()) in let final void #t136 = self::Extension|set#field(new self::Class::•(), #t135) in #t135 in let final void #t137 = self::Extension|set#field(#t133, #t134) in #t134;
-  self::throws(() → self::Class* => let final self::Class* #t138 = self::Extension|get#field(new self::Class::•()) in let final void #t139 = self::Extension|set#field(let final self::Class* #t140 = c in #t140.{core::Object::==}(null) ?{self::Class*} null : self::Extension|method(#t140), #t138) in #t138);
-  self::throws(() → self::Class* => c = let final self::Class* #t141 = self::Extension|get#field(new self::Class::•()) in let final void #t142 = self::Extension|set#field(let final self::Class* #t143 = c in #t143.{core::Object::==}(null) ?{self::Class*} null : self::Extension|method(#t143), #t141) in #t141);
-  self::throws(() → self::Class* => let final self::Class* #t144 = let final self::Class* #t145 = new self::Class::•() in let final void #t146 = self::Extension|set#field(new self::Class::•(), #t145) in #t145 in let final void #t147 = self::Extension|set#field(let final self::Class* #t148 = c in #t148.{core::Object::==}(null) ?{self::Class*} null : self::Extension|method(#t148), #t144) in #t144);
-  self::throws(() → self::Class* => c = let final self::Class* #t149 = let final self::Class* #t150 = new self::Class::•() in let final void #t151 = self::Extension|set#field(new self::Class::•(), #t150) in #t150 in let final void #t152 = self::Extension|set#field(let final self::Class* #t153 = c in #t153.{core::Object::==}(null) ?{self::Class*} null : self::Extension|method(#t153), #t149) in #t149);
-  self::throws(() → self::Class* => let final self::Class* #t154 = self::Extension|method(new self::Class::•()) in let final void #t155 = self::Extension|set#field(let final self::Class* #t156 = c in #t156.{core::Object::==}(null) ?{self::Class*} null : self::Extension|method(#t156), #t154) in #t154);
-  self::throws(() → self::Class* => c = let final self::Class* #t157 = self::Extension|method(new self::Class::•()) in let final void #t158 = self::Extension|set#field(let final self::Class* #t159 = c in #t159.{core::Object::==}(null) ?{self::Class*} null : self::Extension|method(#t159), #t157) in #t157);
-  self::throws(() → self::Class* => self::Extension|get#field(self::Extension|method(let final self::Class* #t160 = c in #t160.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t160))));
-  self::throws(() → self::Class* => let final self::Class* #t161 = new self::Class::•() in let final void #t162 = self::Extension|set#field(self::Extension|method(let final self::Class* #t163 = c in #t163.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t163)), #t161) in #t161);
-  self::throws(() → self::Class* => c = let final self::Class* #t164 = new self::Class::•() in let final void #t165 = self::Extension|set#field(self::Extension|method(let final self::Class* #t166 = c in #t166.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t166)), #t164) in #t164);
-  self::throws(() → self::Class* => self::Extension|method(self::Extension|method(let final self::Class* #t167 = c in #t167.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t167))));
-  let final self::Class* #t168 = c in #t168.{core::Object::==}(null) ?{self::Class*} null : self::Extension|set#field(#t168, self::Extension|get#field(self::Extension|method(new self::Class::•())));
-  c = let final self::Class* #t169 = c in #t169.{core::Object::==}(null) ?{self::Class*} null : let final self::Class* #t170 = self::Extension|get#field(self::Extension|method(new self::Class::•())) in let final void #t171 = self::Extension|set#field(#t169, #t170) in #t170;
-  let final self::Class* #t172 = c in #t172.{core::Object::==}(null) ?{self::Class*} null : self::Extension|set#field(#t172, let final self::Class* #t173 = new self::Class::•() in let final void #t174 = self::Extension|set#field(self::Extension|method(new self::Class::•()), #t173) in #t173);
-  c = let final self::Class* #t175 = c in #t175.{core::Object::==}(null) ?{self::Class*} null : let final self::Class* #t176 = let final self::Class* #t177 = new self::Class::•() in let final void #t178 = self::Extension|set#field(self::Extension|method(new self::Class::•()), #t177) in #t177 in let final void #t179 = self::Extension|set#field(#t175, #t176) in #t176;
-  let final self::Class* #t180 = c in #t180.{core::Object::==}(null) ?{self::Class*} null : self::Extension|set#field(#t180, self::Extension|method(self::Extension|method(new self::Class::•())));
-  c = let final self::Class* #t181 = c in #t181.{core::Object::==}(null) ?{self::Class*} null : let final self::Class* #t182 = self::Extension|method(self::Extension|method(new self::Class::•())) in let final void #t183 = self::Extension|set#field(#t181, #t182) in #t182;
-  self::throws(() → self::Class* => self::Extension|get#field(self::Extension|method(let final self::Class* #t184 = c in #t184.{core::Object::==}(null) ?{self::Class*} null : self::Extension|method(#t184))));
-  self::throws(() → self::Class* => let final self::Class* #t185 = new self::Class::•() in let final void #t186 = self::Extension|set#field(self::Extension|method(let final self::Class* #t187 = c in #t187.{core::Object::==}(null) ?{self::Class*} null : self::Extension|method(#t187)), #t185) in #t185);
-  self::throws(() → self::Class* => self::Extension|method(self::Extension|method(let final self::Class* #t188 = c in #t188.{core::Object::==}(null) ?{self::Class*} null : self::Extension|method(#t188))));
-  let final self::Class* #t189 = let final self::Class* #t190 = c in #t190.{core::Object::==}(null) ?{self::Class*} null : self::Extension|method(#t190) in #t189.{core::Object::==}(null) ?{self::Class*} null : self::Extension|method(#t189);
+  let final self::Class* #t1 = c in #t1.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t1);
+  let final self::Class* #t2 = c in #t2.{self::Class::==}(null) ?{self::Class*} null : self::Extension|set#field(#t2, new self::Class::•());
+  c = let final self::Class* #t3 = c in #t3.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t4 = new self::Class::•() in let final void #t5 = self::Extension|set#field(#t3, #t4) in #t4;
+  let final self::Class* #t6 = c in #t6.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t6);
+  self::throws(() → self::Class* => self::Extension|get#field(let final self::Class* #t7 = c in #t7.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t7)));
+  let final self::Class* #t8 = let final self::Class* #t9 = c in #t9.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t9) in #t8.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t8);
+  self::throws(() → self::Class* => let final self::Class* #t10 = self::Extension|get#field(let final self::Class* #t11 = c in #t11.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t11)) in #t10.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t10));
+  self::throws(() → self::Class* => let final self::Class* #t12 = new self::Class::•() in let final void #t13 = self::Extension|set#field(let final self::Class* #t14 = c in #t14.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t14), #t12) in #t12);
+  let final self::Class* #t15 = let final self::Class* #t16 = c in #t16.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t16) in #t15.{self::Class::==}(null) ?{self::Class*} null : self::Extension|set#field(#t15, new self::Class::•());
+  self::throws(() → self::Class* => let final self::Class* #t17 = self::Extension|get#field(let final self::Class* #t18 = c in #t18.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t18)) in #t17.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t19 = new self::Class::•() in let final void #t20 = self::Extension|set#field(#t17, #t19) in #t19);
+  self::throws(() → self::Class* => self::Extension|get#field(let final self::Class* #t21 = c in #t21.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t21)));
+  self::throws(() → self::Class* => self::Extension|get#field(let final self::Class* #t22 = c in #t22.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t23 = new self::Class::•() in let final void #t24 = self::Extension|set#field(#t22, #t23) in #t23));
+  self::throws(() → self::Class* => self::Extension|get#field(let final self::Class* #t25 = c in #t25.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t25)));
+  self::throws(() → self::Class* => c = let final self::Class* #t26 = new self::Class::•() in let final void #t27 = self::Extension|set#field(let final self::Class* #t28 = c in #t28.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t28), #t26) in #t26);
+  c = let final self::Class* #t29 = let final self::Class* #t30 = c in #t30.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t30) in #t29.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t31 = new self::Class::•() in let final void #t32 = self::Extension|set#field(#t29, #t31) in #t31;
+  self::throws(() → self::Class* => c = let final self::Class* #t33 = self::Extension|get#field(let final self::Class* #t34 = c in #t34.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t34)) in #t33.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t35 = new self::Class::•() in let final void #t36 = self::Extension|set#field(#t33, #t35) in #t35);
+  self::throws(() → self::Class* => self::Extension|method(let final self::Class* #t37 = c in #t37.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t37)));
+  let final self::Class* #t38 = c in #t38.{self::Class::==}(null) ?{self::Class*} null : self::Extension|set#field(#t38, self::Extension|get#field(new self::Class::•()));
+  c = let final self::Class* #t39 = c in #t39.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t40 = self::Extension|get#field(new self::Class::•()) in let final void #t41 = self::Extension|set#field(#t39, #t40) in #t40;
+  let final self::Class* #t42 = c in #t42.{self::Class::==}(null) ?{self::Class*} null : self::Extension|set#field(#t42, let final self::Class* #t43 = new self::Class::•() in let final void #t44 = self::Extension|set#field(new self::Class::•(), #t43) in #t43);
+  c = let final self::Class* #t45 = c in #t45.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t46 = let final self::Class* #t47 = new self::Class::•() in let final void #t48 = self::Extension|set#field(new self::Class::•(), #t47) in #t47 in let final void #t49 = self::Extension|set#field(#t45, #t46) in #t46;
+  let final self::Class* #t50 = c in #t50.{self::Class::==}(null) ?{self::Class*} null : self::Extension|set#field(#t50, self::Extension|method(new self::Class::•()));
+  c = let final self::Class* #t51 = c in #t51.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t52 = self::Extension|method(new self::Class::•()) in let final void #t53 = self::Extension|set#field(#t51, #t52) in #t52;
+  self::throws(() → self::Class* => self::Extension|get#field(let final self::Class* #t54 = c in #t54.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t54)));
+  self::throws(() → self::Class* => let final self::Class* #t55 = new self::Class::•() in let final void #t56 = self::Extension|set#field(let final self::Class* #t57 = c in #t57.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t57), #t55) in #t55);
+  self::throws(() → self::Class* => self::Extension|method(let final self::Class* #t58 = c in #t58.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t58)));
+  self::throws(() → self::Class* => self::Extension|get#field(self::Extension|get#field(let final self::Class* #t59 = c in #t59.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t59))));
+  self::throws(() → self::Class* => let final self::Class* #t60 = new self::Class::•() in let final void #t61 = self::Extension|set#field(self::Extension|get#field(let final self::Class* #t62 = c in #t62.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t62)), #t60) in #t60);
+  self::throws(() → self::Class* => c = let final self::Class* #t63 = new self::Class::•() in let final void #t64 = self::Extension|set#field(self::Extension|get#field(let final self::Class* #t65 = c in #t65.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t65)), #t63) in #t63);
+  self::throws(() → self::Class* => self::Extension|method(self::Extension|get#field(let final self::Class* #t66 = c in #t66.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t66))));
+  let final self::Class* #t67 = c in #t67.{self::Class::==}(null) ?{self::Class*} null : self::Extension|set#field(#t67, self::Extension|get#field(self::Extension|get#field(new self::Class::•())));
+  c = let final self::Class* #t68 = c in #t68.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t69 = self::Extension|get#field(self::Extension|get#field(new self::Class::•())) in let final void #t70 = self::Extension|set#field(#t68, #t69) in #t69;
+  let final self::Class* #t71 = c in #t71.{self::Class::==}(null) ?{self::Class*} null : self::Extension|set#field(#t71, let final self::Class* #t72 = new self::Class::•() in let final void #t73 = self::Extension|set#field(self::Extension|get#field(new self::Class::•()), #t72) in #t72);
+  c = let final self::Class* #t74 = c in #t74.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t75 = let final self::Class* #t76 = new self::Class::•() in let final void #t77 = self::Extension|set#field(self::Extension|get#field(new self::Class::•()), #t76) in #t76 in let final void #t78 = self::Extension|set#field(#t74, #t75) in #t75;
+  let final self::Class* #t79 = c in #t79.{self::Class::==}(null) ?{self::Class*} null : self::Extension|set#field(#t79, self::Extension|method(self::Extension|get#field(new self::Class::•())));
+  c = let final self::Class* #t80 = c in #t80.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t81 = self::Extension|method(self::Extension|get#field(new self::Class::•())) in let final void #t82 = self::Extension|set#field(#t80, #t81) in #t81;
+  self::throws(() → self::Class* => self::Extension|get#field(self::Extension|get#field(let final self::Class* #t83 = c in #t83.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t83))));
+  self::throws(() → self::Class* => let final self::Class* #t84 = new self::Class::•() in let final void #t85 = self::Extension|set#field(self::Extension|get#field(let final self::Class* #t86 = c in #t86.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t86)), #t84) in #t84);
+  self::throws(() → self::Class* => self::Extension|method(self::Extension|get#field(let final self::Class* #t87 = c in #t87.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t87))));
+  self::throws(() → self::Class* => let final self::Class* #t88 = self::Extension|get#field(new self::Class::•()) in let final void #t89 = self::Extension|set#field(let final self::Class* #t90 = c in #t90.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t90), #t88) in #t88);
+  self::throws(() → self::Class* => c = let final self::Class* #t91 = self::Extension|get#field(new self::Class::•()) in let final void #t92 = self::Extension|set#field(let final self::Class* #t93 = c in #t93.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t93), #t91) in #t91);
+  self::throws(() → self::Class* => let final self::Class* #t94 = let final self::Class* #t95 = new self::Class::•() in let final void #t96 = self::Extension|set#field(new self::Class::•(), #t95) in #t95 in let final void #t97 = self::Extension|set#field(let final self::Class* #t98 = c in #t98.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t98), #t94) in #t94);
+  self::throws(() → self::Class* => c = let final self::Class* #t99 = let final self::Class* #t100 = new self::Class::•() in let final void #t101 = self::Extension|set#field(new self::Class::•(), #t100) in #t100 in let final void #t102 = self::Extension|set#field(let final self::Class* #t103 = c in #t103.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t103), #t99) in #t99);
+  self::throws(() → self::Class* => let final self::Class* #t104 = self::Extension|method(new self::Class::•()) in let final void #t105 = self::Extension|set#field(let final self::Class* #t106 = c in #t106.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t106), #t104) in #t104);
+  self::throws(() → self::Class* => c = let final self::Class* #t107 = self::Extension|method(new self::Class::•()) in let final void #t108 = self::Extension|set#field(let final self::Class* #t109 = c in #t109.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t109), #t107) in #t107);
+  let final self::Class* #t110 = c in #t110.{self::Class::==}(null) ?{self::Class*} null : self::Extension|set#field(#t110, let final self::Class* #t111 = self::Extension|get#field(new self::Class::•()) in let final void #t112 = self::Extension|set#field(new self::Class::•(), #t111) in #t111);
+  c = let final self::Class* #t113 = c in #t113.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t114 = let final self::Class* #t115 = self::Extension|get#field(new self::Class::•()) in let final void #t116 = self::Extension|set#field(new self::Class::•(), #t115) in #t115 in let final void #t117 = self::Extension|set#field(#t113, #t114) in #t114;
+  let final self::Class* #t118 = c in #t118.{self::Class::==}(null) ?{self::Class*} null : self::Extension|set#field(#t118, let final self::Class* #t119 = let final self::Class* #t120 = new self::Class::•() in let final void #t121 = self::Extension|set#field(new self::Class::•(), #t120) in #t120 in let final void #t122 = self::Extension|set#field(new self::Class::•(), #t119) in #t119);
+  c = let final self::Class* #t123 = c in #t123.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t124 = let final self::Class* #t125 = let final self::Class* #t126 = new self::Class::•() in let final void #t127 = self::Extension|set#field(new self::Class::•(), #t126) in #t126 in let final void #t128 = self::Extension|set#field(new self::Class::•(), #t125) in #t125 in let final void #t129 = self::Extension|set#field(#t123, #t124) in #t124;
+  let final self::Class* #t130 = c in #t130.{self::Class::==}(null) ?{self::Class*} null : self::Extension|set#field(#t130, let final self::Class* #t131 = self::Extension|method(new self::Class::•()) in let final void #t132 = self::Extension|set#field(new self::Class::•(), #t131) in #t131);
+  c = let final self::Class* #t133 = c in #t133.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t134 = let final self::Class* #t135 = self::Extension|method(new self::Class::•()) in let final void #t136 = self::Extension|set#field(new self::Class::•(), #t135) in #t135 in let final void #t137 = self::Extension|set#field(#t133, #t134) in #t134;
+  self::throws(() → self::Class* => let final self::Class* #t138 = self::Extension|get#field(new self::Class::•()) in let final void #t139 = self::Extension|set#field(let final self::Class* #t140 = c in #t140.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t140), #t138) in #t138);
+  self::throws(() → self::Class* => c = let final self::Class* #t141 = self::Extension|get#field(new self::Class::•()) in let final void #t142 = self::Extension|set#field(let final self::Class* #t143 = c in #t143.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t143), #t141) in #t141);
+  self::throws(() → self::Class* => let final self::Class* #t144 = let final self::Class* #t145 = new self::Class::•() in let final void #t146 = self::Extension|set#field(new self::Class::•(), #t145) in #t145 in let final void #t147 = self::Extension|set#field(let final self::Class* #t148 = c in #t148.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t148), #t144) in #t144);
+  self::throws(() → self::Class* => c = let final self::Class* #t149 = let final self::Class* #t150 = new self::Class::•() in let final void #t151 = self::Extension|set#field(new self::Class::•(), #t150) in #t150 in let final void #t152 = self::Extension|set#field(let final self::Class* #t153 = c in #t153.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t153), #t149) in #t149);
+  self::throws(() → self::Class* => let final self::Class* #t154 = self::Extension|method(new self::Class::•()) in let final void #t155 = self::Extension|set#field(let final self::Class* #t156 = c in #t156.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t156), #t154) in #t154);
+  self::throws(() → self::Class* => c = let final self::Class* #t157 = self::Extension|method(new self::Class::•()) in let final void #t158 = self::Extension|set#field(let final self::Class* #t159 = c in #t159.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t159), #t157) in #t157);
+  self::throws(() → self::Class* => self::Extension|get#field(self::Extension|method(let final self::Class* #t160 = c in #t160.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t160))));
+  self::throws(() → self::Class* => let final self::Class* #t161 = new self::Class::•() in let final void #t162 = self::Extension|set#field(self::Extension|method(let final self::Class* #t163 = c in #t163.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t163)), #t161) in #t161);
+  self::throws(() → self::Class* => c = let final self::Class* #t164 = new self::Class::•() in let final void #t165 = self::Extension|set#field(self::Extension|method(let final self::Class* #t166 = c in #t166.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t166)), #t164) in #t164);
+  self::throws(() → self::Class* => self::Extension|method(self::Extension|method(let final self::Class* #t167 = c in #t167.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t167))));
+  let final self::Class* #t168 = c in #t168.{self::Class::==}(null) ?{self::Class*} null : self::Extension|set#field(#t168, self::Extension|get#field(self::Extension|method(new self::Class::•())));
+  c = let final self::Class* #t169 = c in #t169.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t170 = self::Extension|get#field(self::Extension|method(new self::Class::•())) in let final void #t171 = self::Extension|set#field(#t169, #t170) in #t170;
+  let final self::Class* #t172 = c in #t172.{self::Class::==}(null) ?{self::Class*} null : self::Extension|set#field(#t172, let final self::Class* #t173 = new self::Class::•() in let final void #t174 = self::Extension|set#field(self::Extension|method(new self::Class::•()), #t173) in #t173);
+  c = let final self::Class* #t175 = c in #t175.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t176 = let final self::Class* #t177 = new self::Class::•() in let final void #t178 = self::Extension|set#field(self::Extension|method(new self::Class::•()), #t177) in #t177 in let final void #t179 = self::Extension|set#field(#t175, #t176) in #t176;
+  let final self::Class* #t180 = c in #t180.{self::Class::==}(null) ?{self::Class*} null : self::Extension|set#field(#t180, self::Extension|method(self::Extension|method(new self::Class::•())));
+  c = let final self::Class* #t181 = c in #t181.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t182 = self::Extension|method(self::Extension|method(new self::Class::•())) in let final void #t183 = self::Extension|set#field(#t181, #t182) in #t182;
+  self::throws(() → self::Class* => self::Extension|get#field(self::Extension|method(let final self::Class* #t184 = c in #t184.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t184))));
+  self::throws(() → self::Class* => let final self::Class* #t185 = new self::Class::•() in let final void #t186 = self::Extension|set#field(self::Extension|method(let final self::Class* #t187 = c in #t187.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t187)), #t185) in #t185);
+  self::throws(() → self::Class* => self::Extension|method(self::Extension|method(let final self::Class* #t188 = c in #t188.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t188))));
+  let final self::Class* #t189 = let final self::Class* #t190 = c in #t190.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t190) in #t189.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t189);
 }
 static method indexAccess(self::Class* c) → void {
-  self::throws(() → self::Class* => self::Extension|[](let final self::Class* #t191 = c in #t191.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t191), c));
-  self::throws(() → self::Class* => let final self::Class* #t192 = let final self::Class* #t193 = c in #t193.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t193) in let final self::Class* #t194 = c in let final self::Class* #t195 = new self::Class::•() in let final void #t196 = self::Extension|[]=(#t192, #t194, #t195) in #t195);
-  self::throws(() → self::Class* => c = let final self::Class* #t197 = let final self::Class* #t198 = c in #t198.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t198) in let final self::Class* #t199 = c in let final self::Class* #t200 = new self::Class::•() in let final void #t201 = self::Extension|[]=(#t197, #t199, #t200) in #t200);
-  self::throws(() → self::Class* => self::Extension|method(self::Extension|[](let final self::Class* #t202 = c in #t202.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t202), c)));
-  self::throws(() → self::Class* => let final self::Class* #t203 = let final self::Class* #t204 = c in #t204.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t204) in let final self::Class* #t205 = c in let final self::Class* #t206 = self::Extension|+(self::Extension|[](#t203, #t205), 0) in let final void #t207 = self::Extension|[]=(#t203, #t205, #t206) in #t206);
-  self::throws(() → self::Class* => c = let final self::Class* #t208 = let final self::Class* #t209 = c in #t209.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t209) in let final self::Class* #t210 = c in let final self::Class* #t211 = self::Extension|+(self::Extension|[](#t208, #t210), 0) in let final void #t212 = self::Extension|[]=(#t208, #t210, #t211) in #t211);
-  self::throws(() → self::Class* => let final self::Class* #t213 = let final self::Class* #t214 = c in #t214.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t214) in let final self::Class* #t215 = c in let final self::Class* #t216 = self::Extension|[](#t213, #t215) in let final void #t217 = self::Extension|[]=(#t213, #t215, self::Extension|+(#t216, 1)) in #t216);
-  self::throws(() → self::Class* => c = let final self::Class* #t218 = let final self::Class* #t219 = c in #t219.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t219) in let final self::Class* #t220 = c in let final self::Class* #t221 = self::Extension|[](#t218, #t220) in let final void #t222 = self::Extension|[]=(#t218, #t220, self::Extension|+(#t221, 1)) in #t221);
-  self::throws(() → self::Class* => let final self::Class* #t223 = let final self::Class* #t224 = c in #t224.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t224) in let final self::Class* #t225 = c in let final self::Class* #t226 = self::Extension|+(self::Extension|[](#t223, #t225), 1) in let final void #t227 = self::Extension|[]=(#t223, #t225, #t226) in #t226);
-  self::throws(() → self::Class* => c = let final self::Class* #t228 = let final self::Class* #t229 = c in #t229.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t229) in let final self::Class* #t230 = c in let final self::Class* #t231 = self::Extension|+(self::Extension|[](#t228, #t230), 1) in let final void #t232 = self::Extension|[]=(#t228, #t230, #t231) in #t231);
-  self::throws(() → self::Class* => self::Extension|[](self::Extension|[](let final self::Class* #t233 = c in #t233.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t233), c), c));
-  self::throws(() → self::Class* => let final self::Class* #t234 = self::Extension|[](let final self::Class* #t235 = c in #t235.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t235), c) in let final self::Class* #t236 = c in let final self::Class* #t237 = new self::Class::•() in let final void #t238 = self::Extension|[]=(#t234, #t236, #t237) in #t237);
-  self::throws(() → self::Class* => c = let final self::Class* #t239 = self::Extension|[](let final self::Class* #t240 = c in #t240.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t240), c) in let final self::Class* #t241 = c in let final self::Class* #t242 = new self::Class::•() in let final void #t243 = self::Extension|[]=(#t239, #t241, #t242) in #t242);
-  self::throws(() → self::Class* => self::Extension|method(self::Extension|[](self::Extension|[](let final self::Class* #t244 = c in #t244.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t244), c), c)));
-  self::throws(() → self::Class* => let final self::Class* #t245 = self::Extension|[](let final self::Class* #t246 = c in #t246.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t246), c) in let final self::Class* #t247 = c in let final self::Class* #t248 = self::Extension|+(self::Extension|[](#t245, #t247), 0) in let final void #t249 = self::Extension|[]=(#t245, #t247, #t248) in #t248);
-  self::throws(() → self::Class* => c = let final self::Class* #t250 = self::Extension|[](let final self::Class* #t251 = c in #t251.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t251), c) in let final self::Class* #t252 = c in let final self::Class* #t253 = self::Extension|+(self::Extension|[](#t250, #t252), 0) in let final void #t254 = self::Extension|[]=(#t250, #t252, #t253) in #t253);
-  self::throws(() → self::Class* => let final self::Class* #t255 = self::Extension|[](let final self::Class* #t256 = c in #t256.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t256), c) in let final self::Class* #t257 = c in let final self::Class* #t258 = self::Extension|[](#t255, #t257) in let final void #t259 = self::Extension|[]=(#t255, #t257, self::Extension|+(#t258, 1)) in #t258);
-  self::throws(() → self::Class* => c = let final self::Class* #t260 = self::Extension|[](let final self::Class* #t261 = c in #t261.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t261), c) in let final self::Class* #t262 = c in let final self::Class* #t263 = self::Extension|[](#t260, #t262) in let final void #t264 = self::Extension|[]=(#t260, #t262, self::Extension|+(#t263, 1)) in #t263);
-  self::throws(() → self::Class* => let final self::Class* #t265 = self::Extension|[](let final self::Class* #t266 = c in #t266.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t266), c) in let final self::Class* #t267 = c in let final self::Class* #t268 = self::Extension|+(self::Extension|[](#t265, #t267), 1) in let final void #t269 = self::Extension|[]=(#t265, #t267, #t268) in #t268);
-  self::throws(() → self::Class* => c = let final self::Class* #t270 = self::Extension|[](let final self::Class* #t271 = c in #t271.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t271), c) in let final self::Class* #t272 = c in let final self::Class* #t273 = self::Extension|+(self::Extension|[](#t270, #t272), 1) in let final void #t274 = self::Extension|[]=(#t270, #t272, #t273) in #t273);
+  self::throws(() → self::Class* => self::Extension|[](let final self::Class* #t191 = c in #t191.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t191), c));
+  self::throws(() → self::Class* => let final self::Class* #t192 = let final self::Class* #t193 = c in #t193.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t193) in let final self::Class* #t194 = c in let final self::Class* #t195 = new self::Class::•() in let final void #t196 = self::Extension|[]=(#t192, #t194, #t195) in #t195);
+  self::throws(() → self::Class* => c = let final self::Class* #t197 = let final self::Class* #t198 = c in #t198.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t198) in let final self::Class* #t199 = c in let final self::Class* #t200 = new self::Class::•() in let final void #t201 = self::Extension|[]=(#t197, #t199, #t200) in #t200);
+  self::throws(() → self::Class* => self::Extension|method(self::Extension|[](let final self::Class* #t202 = c in #t202.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t202), c)));
+  self::throws(() → self::Class* => let final self::Class* #t203 = let final self::Class* #t204 = c in #t204.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t204) in let final self::Class* #t205 = c in let final self::Class* #t206 = self::Extension|+(self::Extension|[](#t203, #t205), 0) in let final void #t207 = self::Extension|[]=(#t203, #t205, #t206) in #t206);
+  self::throws(() → self::Class* => c = let final self::Class* #t208 = let final self::Class* #t209 = c in #t209.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t209) in let final self::Class* #t210 = c in let final self::Class* #t211 = self::Extension|+(self::Extension|[](#t208, #t210), 0) in let final void #t212 = self::Extension|[]=(#t208, #t210, #t211) in #t211);
+  self::throws(() → self::Class* => let final self::Class* #t213 = let final self::Class* #t214 = c in #t214.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t214) in let final self::Class* #t215 = c in let final self::Class* #t216 = self::Extension|[](#t213, #t215) in let final void #t217 = self::Extension|[]=(#t213, #t215, self::Extension|+(#t216, 1)) in #t216);
+  self::throws(() → self::Class* => c = let final self::Class* #t218 = let final self::Class* #t219 = c in #t219.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t219) in let final self::Class* #t220 = c in let final self::Class* #t221 = self::Extension|[](#t218, #t220) in let final void #t222 = self::Extension|[]=(#t218, #t220, self::Extension|+(#t221, 1)) in #t221);
+  self::throws(() → self::Class* => let final self::Class* #t223 = let final self::Class* #t224 = c in #t224.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t224) in let final self::Class* #t225 = c in let final self::Class* #t226 = self::Extension|+(self::Extension|[](#t223, #t225), 1) in let final void #t227 = self::Extension|[]=(#t223, #t225, #t226) in #t226);
+  self::throws(() → self::Class* => c = let final self::Class* #t228 = let final self::Class* #t229 = c in #t229.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t229) in let final self::Class* #t230 = c in let final self::Class* #t231 = self::Extension|+(self::Extension|[](#t228, #t230), 1) in let final void #t232 = self::Extension|[]=(#t228, #t230, #t231) in #t231);
+  self::throws(() → self::Class* => self::Extension|[](self::Extension|[](let final self::Class* #t233 = c in #t233.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t233), c), c));
+  self::throws(() → self::Class* => let final self::Class* #t234 = self::Extension|[](let final self::Class* #t235 = c in #t235.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t235), c) in let final self::Class* #t236 = c in let final self::Class* #t237 = new self::Class::•() in let final void #t238 = self::Extension|[]=(#t234, #t236, #t237) in #t237);
+  self::throws(() → self::Class* => c = let final self::Class* #t239 = self::Extension|[](let final self::Class* #t240 = c in #t240.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t240), c) in let final self::Class* #t241 = c in let final self::Class* #t242 = new self::Class::•() in let final void #t243 = self::Extension|[]=(#t239, #t241, #t242) in #t242);
+  self::throws(() → self::Class* => self::Extension|method(self::Extension|[](self::Extension|[](let final self::Class* #t244 = c in #t244.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t244), c), c)));
+  self::throws(() → self::Class* => let final self::Class* #t245 = self::Extension|[](let final self::Class* #t246 = c in #t246.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t246), c) in let final self::Class* #t247 = c in let final self::Class* #t248 = self::Extension|+(self::Extension|[](#t245, #t247), 0) in let final void #t249 = self::Extension|[]=(#t245, #t247, #t248) in #t248);
+  self::throws(() → self::Class* => c = let final self::Class* #t250 = self::Extension|[](let final self::Class* #t251 = c in #t251.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t251), c) in let final self::Class* #t252 = c in let final self::Class* #t253 = self::Extension|+(self::Extension|[](#t250, #t252), 0) in let final void #t254 = self::Extension|[]=(#t250, #t252, #t253) in #t253);
+  self::throws(() → self::Class* => let final self::Class* #t255 = self::Extension|[](let final self::Class* #t256 = c in #t256.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t256), c) in let final self::Class* #t257 = c in let final self::Class* #t258 = self::Extension|[](#t255, #t257) in let final void #t259 = self::Extension|[]=(#t255, #t257, self::Extension|+(#t258, 1)) in #t258);
+  self::throws(() → self::Class* => c = let final self::Class* #t260 = self::Extension|[](let final self::Class* #t261 = c in #t261.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t261), c) in let final self::Class* #t262 = c in let final self::Class* #t263 = self::Extension|[](#t260, #t262) in let final void #t264 = self::Extension|[]=(#t260, #t262, self::Extension|+(#t263, 1)) in #t263);
+  self::throws(() → self::Class* => let final self::Class* #t265 = self::Extension|[](let final self::Class* #t266 = c in #t266.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t266), c) in let final self::Class* #t267 = c in let final self::Class* #t268 = self::Extension|+(self::Extension|[](#t265, #t267), 1) in let final void #t269 = self::Extension|[]=(#t265, #t267, #t268) in #t268);
+  self::throws(() → self::Class* => c = let final self::Class* #t270 = self::Extension|[](let final self::Class* #t271 = c in #t271.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t271), c) in let final self::Class* #t272 = c in let final self::Class* #t273 = self::Extension|+(self::Extension|[](#t270, #t272), 1) in let final void #t274 = self::Extension|[]=(#t270, #t272, #t273) in #t273);
 }
 static method operatorAccess(self::Class* c) → void {
-  self::throws(() → self::Class* => self::Extension|+(let final self::Class* #t275 = c in #t275.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t275), 0));
-  self::throws(() → self::Class* => self::Extension|unary-(let final self::Class* #t276 = c in #t276.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t276)));
-  let final self::Class* #t277 = c in #t277.{core::Object::==}(null) ?{self::Class*} null : self::Extension|set#field(#t277, self::Extension|+(self::Extension|get#field(#t277), 0));
-  c = let final self::Class* #t278 = c in #t278.{core::Object::==}(null) ?{self::Class*} null : let final self::Class* #t279 = self::Extension|+(self::Extension|get#field(#t278), 0) in let final void #t280 = self::Extension|set#field(#t278, #t279) in #t279;
-  self::throws(() → self::Class* => let final self::Class* #t281 = let final self::Class* #t282 = c in #t282.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t282) in let final self::Class* #t283 = self::Extension|+(self::Extension|get#field(#t281), 0) in let final void #t284 = self::Extension|set#field(#t281, #t283) in #t283);
-  self::throws(() → self::Class* => c = let final self::Class* #t285 = let final self::Class* #t286 = c in #t286.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t286) in let final self::Class* #t287 = self::Extension|+(self::Extension|get#field(#t285), 0) in let final void #t288 = self::Extension|set#field(#t285, #t287) in #t287);
-  let final self::Class* #t289 = c in #t289.{core::Object::==}(null) ?{self::Class*} null : self::Extension|set#field(#t289, self::Extension|+(self::Extension|get#field(#t289), 1));
-  c = let final self::Class* #t290 = c in #t290.{core::Object::==}(null) ?{self::Class*} null : let final self::Class* #t291 = self::Extension|get#field(#t290) in let final void #t292 = self::Extension|set#field(#t290, self::Extension|+(#t291, 1)) in #t291;
-  let final self::Class* #t293 = c in #t293.{core::Object::==}(null) ?{self::Class*} null : let final self::Class* #t294 = self::Extension|+(self::Extension|get#field(#t293), 1) in let final void #t295 = self::Extension|set#field(#t293, #t294) in #t294;
-  c = let final self::Class* #t296 = c in #t296.{core::Object::==}(null) ?{self::Class*} null : let final self::Class* #t297 = self::Extension|+(self::Extension|get#field(#t296), 1) in let final void #t298 = self::Extension|set#field(#t296, #t297) in #t297;
+  self::throws(() → self::Class* => self::Extension|+(let final self::Class* #t275 = c in #t275.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t275), 0));
+  self::throws(() → self::Class* => self::Extension|unary-(let final self::Class* #t276 = c in #t276.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t276)));
+  let final self::Class* #t277 = c in #t277.{self::Class::==}(null) ?{self::Class*} null : self::Extension|set#field(#t277, self::Extension|+(self::Extension|get#field(#t277), 0));
+  c = let final self::Class* #t278 = c in #t278.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t279 = self::Extension|+(self::Extension|get#field(#t278), 0) in let final void #t280 = self::Extension|set#field(#t278, #t279) in #t279;
+  self::throws(() → self::Class* => let final self::Class* #t281 = let final self::Class* #t282 = c in #t282.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t282) in let final self::Class* #t283 = self::Extension|+(self::Extension|get#field(#t281), 0) in let final void #t284 = self::Extension|set#field(#t281, #t283) in #t283);
+  self::throws(() → self::Class* => c = let final self::Class* #t285 = let final self::Class* #t286 = c in #t286.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t286) in let final self::Class* #t287 = self::Extension|+(self::Extension|get#field(#t285), 0) in let final void #t288 = self::Extension|set#field(#t285, #t287) in #t287);
+  let final self::Class* #t289 = c in #t289.{self::Class::==}(null) ?{self::Class*} null : self::Extension|set#field(#t289, self::Extension|+(self::Extension|get#field(#t289), 1));
+  c = let final self::Class* #t290 = c in #t290.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t291 = self::Extension|get#field(#t290) in let final void #t292 = self::Extension|set#field(#t290, self::Extension|+(#t291, 1)) in #t291;
+  let final self::Class* #t293 = c in #t293.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t294 = self::Extension|+(self::Extension|get#field(#t293), 1) in let final void #t295 = self::Extension|set#field(#t293, #t294) in #t294;
+  c = let final self::Class* #t296 = c in #t296.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t297 = self::Extension|+(self::Extension|get#field(#t296), 1) in let final void #t298 = self::Extension|set#field(#t296, #t297) in #t297;
 }
 static method ifNull(self::Class* c) → void {
-  let final self::Class* #t299 = c in #t299.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t299).{core::Object::==}(null) ?{self::Class*} self::Extension|set#field(#t299, c) : null;
-  c = let final self::Class* #t300 = c in #t300.{core::Object::==}(null) ?{self::Class*} null : let final self::Class* #t301 = self::Extension|get#field(#t300) in #t301.{core::Object::==}(null) ?{self::Class*} let final self::Class* #t302 = c in let final void #t303 = self::Extension|set#field(#t300, #t302) in #t302 : #t301;
-  self::throws(() → self::Class* => let final self::Class* #t304 = let final self::Class* #t305 = c in #t305.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t305) in let final self::Class* #t306 = self::Extension|get#field(#t304) in #t306.{core::Object::==}(null) ?{self::Class*} let final self::Class* #t307 = c in let final void #t308 = self::Extension|set#field(#t304, #t307) in #t307 : #t306);
-  self::throws(() → self::Class* => c = let final self::Class* #t309 = let final self::Class* #t310 = c in #t310.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t310) in let final self::Class* #t311 = self::Extension|get#field(#t309) in #t311.{core::Object::==}(null) ?{self::Class*} let final self::Class* #t312 = c in let final void #t313 = self::Extension|set#field(#t309, #t312) in #t312 : #t311);
-  self::throws(() → self::Class* => let final self::Class* #t314 = let final self::Class* #t315 = c in #t315.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t315) in let final self::Class* #t316 = c in let final self::Class* #t317 = self::Extension|[](#t314, #t316) in #t317.{core::Object::==}(null) ?{self::Class*} let final self::Class* #t318 = c in let final void #t319 = self::Extension|[]=(#t314, #t316, #t318) in #t318 : #t317);
-  self::throws(() → self::Class* => c = let final self::Class* #t320 = let final self::Class* #t321 = c in #t321.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t321) in let final self::Class* #t322 = c in let final self::Class* #t323 = self::Extension|[](#t320, #t322) in #t323.{core::Object::==}(null) ?{self::Class*} let final self::Class* #t324 = c in let final void #t325 = self::Extension|[]=(#t320, #t322, #t324) in #t324 : #t323);
+  let final self::Class* #t299 = c in #t299.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t299).{self::Class::==}(null) ?{self::Class*} self::Extension|set#field(#t299, c) : null;
+  c = let final self::Class* #t300 = c in #t300.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t301 = self::Extension|get#field(#t300) in #t301.{self::Class::==}(null) ?{self::Class*} let final self::Class* #t302 = c in let final void #t303 = self::Extension|set#field(#t300, #t302) in #t302 : #t301;
+  self::throws(() → self::Class* => let final self::Class* #t304 = let final self::Class* #t305 = c in #t305.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t305) in let final self::Class* #t306 = self::Extension|get#field(#t304) in #t306.{self::Class::==}(null) ?{self::Class*} let final self::Class* #t307 = c in let final void #t308 = self::Extension|set#field(#t304, #t307) in #t307 : #t306);
+  self::throws(() → self::Class* => c = let final self::Class* #t309 = let final self::Class* #t310 = c in #t310.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t310) in let final self::Class* #t311 = self::Extension|get#field(#t309) in #t311.{self::Class::==}(null) ?{self::Class*} let final self::Class* #t312 = c in let final void #t313 = self::Extension|set#field(#t309, #t312) in #t312 : #t311);
+  self::throws(() → self::Class* => let final self::Class* #t314 = let final self::Class* #t315 = c in #t315.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t315) in let final self::Class* #t316 = c in let final self::Class* #t317 = self::Extension|[](#t314, #t316) in #t317.{self::Class::==}(null) ?{self::Class*} let final self::Class* #t318 = c in let final void #t319 = self::Extension|[]=(#t314, #t316, #t318) in #t318 : #t317);
+  self::throws(() → self::Class* => c = let final self::Class* #t320 = let final self::Class* #t321 = c in #t321.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t321) in let final self::Class* #t322 = c in let final self::Class* #t323 = self::Extension|[](#t320, #t322) in #t323.{self::Class::==}(null) ?{self::Class*} let final self::Class* #t324 = c in let final void #t325 = self::Extension|[]=(#t320, #t322, #t324) in #t324 : #t323);
 }
 static method throws(() →* void f) → void {
   try {
diff --git a/pkg/front_end/testcases/nnbd/no_null_shorting_extension.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/no_null_shorting_extension.dart.strong.transformed.expect
index 71b2eef..0e1daa3 100644
--- a/pkg/front_end/testcases/nnbd/no_null_shorting_extension.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/no_null_shorting_extension.dart.strong.transformed.expect
@@ -7,6 +7,16 @@
   synthetic constructor •() → self::Class*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 extension Extension on self::Class* {
   get field = self::Extension|get#field;
@@ -43,119 +53,119 @@
   self::ifNull(null);
 }
 static method propertyAccess(self::Class* c) → void {
-  let final self::Class* #t1 = c in #t1.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t1);
-  let final self::Class* #t2 = c in #t2.{core::Object::==}(null) ?{self::Class*} null : self::Extension|set#field(#t2, new self::Class::•());
-  c = let final self::Class* #t3 = c in #t3.{core::Object::==}(null) ?{self::Class*} null : let final self::Class* #t4 = new self::Class::•() in let final void #t5 = self::Extension|set#field(#t3, #t4) in #t4;
-  let final self::Class* #t6 = c in #t6.{core::Object::==}(null) ?{self::Class*} null : self::Extension|method(#t6);
-  self::throws(() → self::Class* => self::Extension|get#field(let final self::Class* #t7 = c in #t7.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t7)));
-  let final self::Class* #t8 = let final self::Class* #t9 = c in #t9.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t9) in #t8.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t8);
-  self::throws(() → self::Class* => let final self::Class* #t10 = self::Extension|get#field(let final self::Class* #t11 = c in #t11.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t11)) in #t10.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t10));
-  self::throws(() → self::Class* => let final self::Class* #t12 = new self::Class::•() in let final void #t13 = self::Extension|set#field(let final self::Class* #t14 = c in #t14.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t14), #t12) in #t12);
-  let final self::Class* #t15 = let final self::Class* #t16 = c in #t16.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t16) in #t15.{core::Object::==}(null) ?{self::Class*} null : self::Extension|set#field(#t15, new self::Class::•());
-  self::throws(() → self::Class* => let final self::Class* #t17 = self::Extension|get#field(let final self::Class* #t18 = c in #t18.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t18)) in #t17.{core::Object::==}(null) ?{self::Class*} null : let final self::Class* #t19 = new self::Class::•() in let final void #t20 = self::Extension|set#field(#t17, #t19) in #t19);
-  self::throws(() → self::Class* => self::Extension|get#field(let final self::Class* #t21 = c in #t21.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t21)));
-  self::throws(() → self::Class* => self::Extension|get#field(let final self::Class* #t22 = c in #t22.{core::Object::==}(null) ?{self::Class*} null : let final self::Class* #t23 = new self::Class::•() in let final void #t24 = self::Extension|set#field(#t22, #t23) in #t23));
-  self::throws(() → self::Class* => self::Extension|get#field(let final self::Class* #t25 = c in #t25.{core::Object::==}(null) ?{self::Class*} null : self::Extension|method(#t25)));
-  self::throws(() → self::Class* => c = let final self::Class* #t26 = new self::Class::•() in let final void #t27 = self::Extension|set#field(let final self::Class* #t28 = c in #t28.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t28), #t26) in #t26);
-  c = let final self::Class* #t29 = let final self::Class* #t30 = c in #t30.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t30) in #t29.{core::Object::==}(null) ?{self::Class*} null : let final self::Class* #t31 = new self::Class::•() in let final void #t32 = self::Extension|set#field(#t29, #t31) in #t31;
-  self::throws(() → self::Class* => c = let final self::Class* #t33 = self::Extension|get#field(let final self::Class* #t34 = c in #t34.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t34)) in #t33.{core::Object::==}(null) ?{self::Class*} null : let final self::Class* #t35 = new self::Class::•() in let final void #t36 = self::Extension|set#field(#t33, #t35) in #t35);
-  self::throws(() → self::Class* => self::Extension|method(let final self::Class* #t37 = c in #t37.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t37)));
-  let final self::Class* #t38 = c in #t38.{core::Object::==}(null) ?{self::Class*} null : self::Extension|set#field(#t38, self::Extension|get#field(new self::Class::•()));
-  c = let final self::Class* #t39 = c in #t39.{core::Object::==}(null) ?{self::Class*} null : let final self::Class* #t40 = self::Extension|get#field(new self::Class::•()) in let final void #t41 = self::Extension|set#field(#t39, #t40) in #t40;
-  let final self::Class* #t42 = c in #t42.{core::Object::==}(null) ?{self::Class*} null : self::Extension|set#field(#t42, let final self::Class* #t43 = new self::Class::•() in let final void #t44 = self::Extension|set#field(new self::Class::•(), #t43) in #t43);
-  c = let final self::Class* #t45 = c in #t45.{core::Object::==}(null) ?{self::Class*} null : let final self::Class* #t46 = let final self::Class* #t47 = new self::Class::•() in let final void #t48 = self::Extension|set#field(new self::Class::•(), #t47) in #t47 in let final void #t49 = self::Extension|set#field(#t45, #t46) in #t46;
-  let final self::Class* #t50 = c in #t50.{core::Object::==}(null) ?{self::Class*} null : self::Extension|set#field(#t50, self::Extension|method(new self::Class::•()));
-  c = let final self::Class* #t51 = c in #t51.{core::Object::==}(null) ?{self::Class*} null : let final self::Class* #t52 = self::Extension|method(new self::Class::•()) in let final void #t53 = self::Extension|set#field(#t51, #t52) in #t52;
-  self::throws(() → self::Class* => self::Extension|get#field(let final self::Class* #t54 = c in #t54.{core::Object::==}(null) ?{self::Class*} null : self::Extension|method(#t54)));
-  self::throws(() → self::Class* => let final self::Class* #t55 = new self::Class::•() in let final void #t56 = self::Extension|set#field(let final self::Class* #t57 = c in #t57.{core::Object::==}(null) ?{self::Class*} null : self::Extension|method(#t57), #t55) in #t55);
-  self::throws(() → self::Class* => self::Extension|method(let final self::Class* #t58 = c in #t58.{core::Object::==}(null) ?{self::Class*} null : self::Extension|method(#t58)));
-  self::throws(() → self::Class* => self::Extension|get#field(self::Extension|get#field(let final self::Class* #t59 = c in #t59.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t59))));
-  self::throws(() → self::Class* => let final self::Class* #t60 = new self::Class::•() in let final void #t61 = self::Extension|set#field(self::Extension|get#field(let final self::Class* #t62 = c in #t62.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t62)), #t60) in #t60);
-  self::throws(() → self::Class* => c = let final self::Class* #t63 = new self::Class::•() in let final void #t64 = self::Extension|set#field(self::Extension|get#field(let final self::Class* #t65 = c in #t65.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t65)), #t63) in #t63);
-  self::throws(() → self::Class* => self::Extension|method(self::Extension|get#field(let final self::Class* #t66 = c in #t66.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t66))));
-  let final self::Class* #t67 = c in #t67.{core::Object::==}(null) ?{self::Class*} null : self::Extension|set#field(#t67, self::Extension|get#field(self::Extension|get#field(new self::Class::•())));
-  c = let final self::Class* #t68 = c in #t68.{core::Object::==}(null) ?{self::Class*} null : let final self::Class* #t69 = self::Extension|get#field(self::Extension|get#field(new self::Class::•())) in let final void #t70 = self::Extension|set#field(#t68, #t69) in #t69;
-  let final self::Class* #t71 = c in #t71.{core::Object::==}(null) ?{self::Class*} null : self::Extension|set#field(#t71, let final self::Class* #t72 = new self::Class::•() in let final void #t73 = self::Extension|set#field(self::Extension|get#field(new self::Class::•()), #t72) in #t72);
-  c = let final self::Class* #t74 = c in #t74.{core::Object::==}(null) ?{self::Class*} null : let final self::Class* #t75 = let final self::Class* #t76 = new self::Class::•() in let final void #t77 = self::Extension|set#field(self::Extension|get#field(new self::Class::•()), #t76) in #t76 in let final void #t78 = self::Extension|set#field(#t74, #t75) in #t75;
-  let final self::Class* #t79 = c in #t79.{core::Object::==}(null) ?{self::Class*} null : self::Extension|set#field(#t79, self::Extension|method(self::Extension|get#field(new self::Class::•())));
-  c = let final self::Class* #t80 = c in #t80.{core::Object::==}(null) ?{self::Class*} null : let final self::Class* #t81 = self::Extension|method(self::Extension|get#field(new self::Class::•())) in let final void #t82 = self::Extension|set#field(#t80, #t81) in #t81;
-  self::throws(() → self::Class* => self::Extension|get#field(self::Extension|get#field(let final self::Class* #t83 = c in #t83.{core::Object::==}(null) ?{self::Class*} null : self::Extension|method(#t83))));
-  self::throws(() → self::Class* => let final self::Class* #t84 = new self::Class::•() in let final void #t85 = self::Extension|set#field(self::Extension|get#field(let final self::Class* #t86 = c in #t86.{core::Object::==}(null) ?{self::Class*} null : self::Extension|method(#t86)), #t84) in #t84);
-  self::throws(() → self::Class* => self::Extension|method(self::Extension|get#field(let final self::Class* #t87 = c in #t87.{core::Object::==}(null) ?{self::Class*} null : self::Extension|method(#t87))));
-  self::throws(() → self::Class* => let final self::Class* #t88 = self::Extension|get#field(new self::Class::•()) in let final void #t89 = self::Extension|set#field(let final self::Class* #t90 = c in #t90.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t90), #t88) in #t88);
-  self::throws(() → self::Class* => c = let final self::Class* #t91 = self::Extension|get#field(new self::Class::•()) in let final void #t92 = self::Extension|set#field(let final self::Class* #t93 = c in #t93.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t93), #t91) in #t91);
-  self::throws(() → self::Class* => let final self::Class* #t94 = let final self::Class* #t95 = new self::Class::•() in let final void #t96 = self::Extension|set#field(new self::Class::•(), #t95) in #t95 in let final void #t97 = self::Extension|set#field(let final self::Class* #t98 = c in #t98.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t98), #t94) in #t94);
-  self::throws(() → self::Class* => c = let final self::Class* #t99 = let final self::Class* #t100 = new self::Class::•() in let final void #t101 = self::Extension|set#field(new self::Class::•(), #t100) in #t100 in let final void #t102 = self::Extension|set#field(let final self::Class* #t103 = c in #t103.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t103), #t99) in #t99);
-  self::throws(() → self::Class* => let final self::Class* #t104 = self::Extension|method(new self::Class::•()) in let final void #t105 = self::Extension|set#field(let final self::Class* #t106 = c in #t106.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t106), #t104) in #t104);
-  self::throws(() → self::Class* => c = let final self::Class* #t107 = self::Extension|method(new self::Class::•()) in let final void #t108 = self::Extension|set#field(let final self::Class* #t109 = c in #t109.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t109), #t107) in #t107);
-  let final self::Class* #t110 = c in #t110.{core::Object::==}(null) ?{self::Class*} null : self::Extension|set#field(#t110, let final self::Class* #t111 = self::Extension|get#field(new self::Class::•()) in let final void #t112 = self::Extension|set#field(new self::Class::•(), #t111) in #t111);
-  c = let final self::Class* #t113 = c in #t113.{core::Object::==}(null) ?{self::Class*} null : let final self::Class* #t114 = let final self::Class* #t115 = self::Extension|get#field(new self::Class::•()) in let final void #t116 = self::Extension|set#field(new self::Class::•(), #t115) in #t115 in let final void #t117 = self::Extension|set#field(#t113, #t114) in #t114;
-  let final self::Class* #t118 = c in #t118.{core::Object::==}(null) ?{self::Class*} null : self::Extension|set#field(#t118, let final self::Class* #t119 = let final self::Class* #t120 = new self::Class::•() in let final void #t121 = self::Extension|set#field(new self::Class::•(), #t120) in #t120 in let final void #t122 = self::Extension|set#field(new self::Class::•(), #t119) in #t119);
-  c = let final self::Class* #t123 = c in #t123.{core::Object::==}(null) ?{self::Class*} null : let final self::Class* #t124 = let final self::Class* #t125 = let final self::Class* #t126 = new self::Class::•() in let final void #t127 = self::Extension|set#field(new self::Class::•(), #t126) in #t126 in let final void #t128 = self::Extension|set#field(new self::Class::•(), #t125) in #t125 in let final void #t129 = self::Extension|set#field(#t123, #t124) in #t124;
-  let final self::Class* #t130 = c in #t130.{core::Object::==}(null) ?{self::Class*} null : self::Extension|set#field(#t130, let final self::Class* #t131 = self::Extension|method(new self::Class::•()) in let final void #t132 = self::Extension|set#field(new self::Class::•(), #t131) in #t131);
-  c = let final self::Class* #t133 = c in #t133.{core::Object::==}(null) ?{self::Class*} null : let final self::Class* #t134 = let final self::Class* #t135 = self::Extension|method(new self::Class::•()) in let final void #t136 = self::Extension|set#field(new self::Class::•(), #t135) in #t135 in let final void #t137 = self::Extension|set#field(#t133, #t134) in #t134;
-  self::throws(() → self::Class* => let final self::Class* #t138 = self::Extension|get#field(new self::Class::•()) in let final void #t139 = self::Extension|set#field(let final self::Class* #t140 = c in #t140.{core::Object::==}(null) ?{self::Class*} null : self::Extension|method(#t140), #t138) in #t138);
-  self::throws(() → self::Class* => c = let final self::Class* #t141 = self::Extension|get#field(new self::Class::•()) in let final void #t142 = self::Extension|set#field(let final self::Class* #t143 = c in #t143.{core::Object::==}(null) ?{self::Class*} null : self::Extension|method(#t143), #t141) in #t141);
-  self::throws(() → self::Class* => let final self::Class* #t144 = let final self::Class* #t145 = new self::Class::•() in let final void #t146 = self::Extension|set#field(new self::Class::•(), #t145) in #t145 in let final void #t147 = self::Extension|set#field(let final self::Class* #t148 = c in #t148.{core::Object::==}(null) ?{self::Class*} null : self::Extension|method(#t148), #t144) in #t144);
-  self::throws(() → self::Class* => c = let final self::Class* #t149 = let final self::Class* #t150 = new self::Class::•() in let final void #t151 = self::Extension|set#field(new self::Class::•(), #t150) in #t150 in let final void #t152 = self::Extension|set#field(let final self::Class* #t153 = c in #t153.{core::Object::==}(null) ?{self::Class*} null : self::Extension|method(#t153), #t149) in #t149);
-  self::throws(() → self::Class* => let final self::Class* #t154 = self::Extension|method(new self::Class::•()) in let final void #t155 = self::Extension|set#field(let final self::Class* #t156 = c in #t156.{core::Object::==}(null) ?{self::Class*} null : self::Extension|method(#t156), #t154) in #t154);
-  self::throws(() → self::Class* => c = let final self::Class* #t157 = self::Extension|method(new self::Class::•()) in let final void #t158 = self::Extension|set#field(let final self::Class* #t159 = c in #t159.{core::Object::==}(null) ?{self::Class*} null : self::Extension|method(#t159), #t157) in #t157);
-  self::throws(() → self::Class* => self::Extension|get#field(self::Extension|method(let final self::Class* #t160 = c in #t160.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t160))));
-  self::throws(() → self::Class* => let final self::Class* #t161 = new self::Class::•() in let final void #t162 = self::Extension|set#field(self::Extension|method(let final self::Class* #t163 = c in #t163.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t163)), #t161) in #t161);
-  self::throws(() → self::Class* => c = let final self::Class* #t164 = new self::Class::•() in let final void #t165 = self::Extension|set#field(self::Extension|method(let final self::Class* #t166 = c in #t166.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t166)), #t164) in #t164);
-  self::throws(() → self::Class* => self::Extension|method(self::Extension|method(let final self::Class* #t167 = c in #t167.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t167))));
-  let final self::Class* #t168 = c in #t168.{core::Object::==}(null) ?{self::Class*} null : self::Extension|set#field(#t168, self::Extension|get#field(self::Extension|method(new self::Class::•())));
-  c = let final self::Class* #t169 = c in #t169.{core::Object::==}(null) ?{self::Class*} null : let final self::Class* #t170 = self::Extension|get#field(self::Extension|method(new self::Class::•())) in let final void #t171 = self::Extension|set#field(#t169, #t170) in #t170;
-  let final self::Class* #t172 = c in #t172.{core::Object::==}(null) ?{self::Class*} null : self::Extension|set#field(#t172, let final self::Class* #t173 = new self::Class::•() in let final void #t174 = self::Extension|set#field(self::Extension|method(new self::Class::•()), #t173) in #t173);
-  c = let final self::Class* #t175 = c in #t175.{core::Object::==}(null) ?{self::Class*} null : let final self::Class* #t176 = let final self::Class* #t177 = new self::Class::•() in let final void #t178 = self::Extension|set#field(self::Extension|method(new self::Class::•()), #t177) in #t177 in let final void #t179 = self::Extension|set#field(#t175, #t176) in #t176;
-  let final self::Class* #t180 = c in #t180.{core::Object::==}(null) ?{self::Class*} null : self::Extension|set#field(#t180, self::Extension|method(self::Extension|method(new self::Class::•())));
-  c = let final self::Class* #t181 = c in #t181.{core::Object::==}(null) ?{self::Class*} null : let final self::Class* #t182 = self::Extension|method(self::Extension|method(new self::Class::•())) in let final void #t183 = self::Extension|set#field(#t181, #t182) in #t182;
-  self::throws(() → self::Class* => self::Extension|get#field(self::Extension|method(let final self::Class* #t184 = c in #t184.{core::Object::==}(null) ?{self::Class*} null : self::Extension|method(#t184))));
-  self::throws(() → self::Class* => let final self::Class* #t185 = new self::Class::•() in let final void #t186 = self::Extension|set#field(self::Extension|method(let final self::Class* #t187 = c in #t187.{core::Object::==}(null) ?{self::Class*} null : self::Extension|method(#t187)), #t185) in #t185);
-  self::throws(() → self::Class* => self::Extension|method(self::Extension|method(let final self::Class* #t188 = c in #t188.{core::Object::==}(null) ?{self::Class*} null : self::Extension|method(#t188))));
-  let final self::Class* #t189 = let final self::Class* #t190 = c in #t190.{core::Object::==}(null) ?{self::Class*} null : self::Extension|method(#t190) in #t189.{core::Object::==}(null) ?{self::Class*} null : self::Extension|method(#t189);
+  let final self::Class* #t1 = c in #t1.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t1);
+  let final self::Class* #t2 = c in #t2.{self::Class::==}(null) ?{self::Class*} null : self::Extension|set#field(#t2, new self::Class::•());
+  c = let final self::Class* #t3 = c in #t3.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t4 = new self::Class::•() in let final void #t5 = self::Extension|set#field(#t3, #t4) in #t4;
+  let final self::Class* #t6 = c in #t6.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t6);
+  self::throws(() → self::Class* => self::Extension|get#field(let final self::Class* #t7 = c in #t7.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t7)));
+  let final self::Class* #t8 = let final self::Class* #t9 = c in #t9.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t9) in #t8.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t8);
+  self::throws(() → self::Class* => let final self::Class* #t10 = self::Extension|get#field(let final self::Class* #t11 = c in #t11.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t11)) in #t10.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t10));
+  self::throws(() → self::Class* => let final self::Class* #t12 = new self::Class::•() in let final void #t13 = self::Extension|set#field(let final self::Class* #t14 = c in #t14.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t14), #t12) in #t12);
+  let final self::Class* #t15 = let final self::Class* #t16 = c in #t16.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t16) in #t15.{self::Class::==}(null) ?{self::Class*} null : self::Extension|set#field(#t15, new self::Class::•());
+  self::throws(() → self::Class* => let final self::Class* #t17 = self::Extension|get#field(let final self::Class* #t18 = c in #t18.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t18)) in #t17.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t19 = new self::Class::•() in let final void #t20 = self::Extension|set#field(#t17, #t19) in #t19);
+  self::throws(() → self::Class* => self::Extension|get#field(let final self::Class* #t21 = c in #t21.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t21)));
+  self::throws(() → self::Class* => self::Extension|get#field(let final self::Class* #t22 = c in #t22.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t23 = new self::Class::•() in let final void #t24 = self::Extension|set#field(#t22, #t23) in #t23));
+  self::throws(() → self::Class* => self::Extension|get#field(let final self::Class* #t25 = c in #t25.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t25)));
+  self::throws(() → self::Class* => c = let final self::Class* #t26 = new self::Class::•() in let final void #t27 = self::Extension|set#field(let final self::Class* #t28 = c in #t28.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t28), #t26) in #t26);
+  c = let final self::Class* #t29 = let final self::Class* #t30 = c in #t30.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t30) in #t29.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t31 = new self::Class::•() in let final void #t32 = self::Extension|set#field(#t29, #t31) in #t31;
+  self::throws(() → self::Class* => c = let final self::Class* #t33 = self::Extension|get#field(let final self::Class* #t34 = c in #t34.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t34)) in #t33.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t35 = new self::Class::•() in let final void #t36 = self::Extension|set#field(#t33, #t35) in #t35);
+  self::throws(() → self::Class* => self::Extension|method(let final self::Class* #t37 = c in #t37.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t37)));
+  let final self::Class* #t38 = c in #t38.{self::Class::==}(null) ?{self::Class*} null : self::Extension|set#field(#t38, self::Extension|get#field(new self::Class::•()));
+  c = let final self::Class* #t39 = c in #t39.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t40 = self::Extension|get#field(new self::Class::•()) in let final void #t41 = self::Extension|set#field(#t39, #t40) in #t40;
+  let final self::Class* #t42 = c in #t42.{self::Class::==}(null) ?{self::Class*} null : self::Extension|set#field(#t42, let final self::Class* #t43 = new self::Class::•() in let final void #t44 = self::Extension|set#field(new self::Class::•(), #t43) in #t43);
+  c = let final self::Class* #t45 = c in #t45.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t46 = let final self::Class* #t47 = new self::Class::•() in let final void #t48 = self::Extension|set#field(new self::Class::•(), #t47) in #t47 in let final void #t49 = self::Extension|set#field(#t45, #t46) in #t46;
+  let final self::Class* #t50 = c in #t50.{self::Class::==}(null) ?{self::Class*} null : self::Extension|set#field(#t50, self::Extension|method(new self::Class::•()));
+  c = let final self::Class* #t51 = c in #t51.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t52 = self::Extension|method(new self::Class::•()) in let final void #t53 = self::Extension|set#field(#t51, #t52) in #t52;
+  self::throws(() → self::Class* => self::Extension|get#field(let final self::Class* #t54 = c in #t54.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t54)));
+  self::throws(() → self::Class* => let final self::Class* #t55 = new self::Class::•() in let final void #t56 = self::Extension|set#field(let final self::Class* #t57 = c in #t57.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t57), #t55) in #t55);
+  self::throws(() → self::Class* => self::Extension|method(let final self::Class* #t58 = c in #t58.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t58)));
+  self::throws(() → self::Class* => self::Extension|get#field(self::Extension|get#field(let final self::Class* #t59 = c in #t59.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t59))));
+  self::throws(() → self::Class* => let final self::Class* #t60 = new self::Class::•() in let final void #t61 = self::Extension|set#field(self::Extension|get#field(let final self::Class* #t62 = c in #t62.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t62)), #t60) in #t60);
+  self::throws(() → self::Class* => c = let final self::Class* #t63 = new self::Class::•() in let final void #t64 = self::Extension|set#field(self::Extension|get#field(let final self::Class* #t65 = c in #t65.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t65)), #t63) in #t63);
+  self::throws(() → self::Class* => self::Extension|method(self::Extension|get#field(let final self::Class* #t66 = c in #t66.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t66))));
+  let final self::Class* #t67 = c in #t67.{self::Class::==}(null) ?{self::Class*} null : self::Extension|set#field(#t67, self::Extension|get#field(self::Extension|get#field(new self::Class::•())));
+  c = let final self::Class* #t68 = c in #t68.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t69 = self::Extension|get#field(self::Extension|get#field(new self::Class::•())) in let final void #t70 = self::Extension|set#field(#t68, #t69) in #t69;
+  let final self::Class* #t71 = c in #t71.{self::Class::==}(null) ?{self::Class*} null : self::Extension|set#field(#t71, let final self::Class* #t72 = new self::Class::•() in let final void #t73 = self::Extension|set#field(self::Extension|get#field(new self::Class::•()), #t72) in #t72);
+  c = let final self::Class* #t74 = c in #t74.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t75 = let final self::Class* #t76 = new self::Class::•() in let final void #t77 = self::Extension|set#field(self::Extension|get#field(new self::Class::•()), #t76) in #t76 in let final void #t78 = self::Extension|set#field(#t74, #t75) in #t75;
+  let final self::Class* #t79 = c in #t79.{self::Class::==}(null) ?{self::Class*} null : self::Extension|set#field(#t79, self::Extension|method(self::Extension|get#field(new self::Class::•())));
+  c = let final self::Class* #t80 = c in #t80.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t81 = self::Extension|method(self::Extension|get#field(new self::Class::•())) in let final void #t82 = self::Extension|set#field(#t80, #t81) in #t81;
+  self::throws(() → self::Class* => self::Extension|get#field(self::Extension|get#field(let final self::Class* #t83 = c in #t83.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t83))));
+  self::throws(() → self::Class* => let final self::Class* #t84 = new self::Class::•() in let final void #t85 = self::Extension|set#field(self::Extension|get#field(let final self::Class* #t86 = c in #t86.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t86)), #t84) in #t84);
+  self::throws(() → self::Class* => self::Extension|method(self::Extension|get#field(let final self::Class* #t87 = c in #t87.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t87))));
+  self::throws(() → self::Class* => let final self::Class* #t88 = self::Extension|get#field(new self::Class::•()) in let final void #t89 = self::Extension|set#field(let final self::Class* #t90 = c in #t90.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t90), #t88) in #t88);
+  self::throws(() → self::Class* => c = let final self::Class* #t91 = self::Extension|get#field(new self::Class::•()) in let final void #t92 = self::Extension|set#field(let final self::Class* #t93 = c in #t93.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t93), #t91) in #t91);
+  self::throws(() → self::Class* => let final self::Class* #t94 = let final self::Class* #t95 = new self::Class::•() in let final void #t96 = self::Extension|set#field(new self::Class::•(), #t95) in #t95 in let final void #t97 = self::Extension|set#field(let final self::Class* #t98 = c in #t98.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t98), #t94) in #t94);
+  self::throws(() → self::Class* => c = let final self::Class* #t99 = let final self::Class* #t100 = new self::Class::•() in let final void #t101 = self::Extension|set#field(new self::Class::•(), #t100) in #t100 in let final void #t102 = self::Extension|set#field(let final self::Class* #t103 = c in #t103.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t103), #t99) in #t99);
+  self::throws(() → self::Class* => let final self::Class* #t104 = self::Extension|method(new self::Class::•()) in let final void #t105 = self::Extension|set#field(let final self::Class* #t106 = c in #t106.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t106), #t104) in #t104);
+  self::throws(() → self::Class* => c = let final self::Class* #t107 = self::Extension|method(new self::Class::•()) in let final void #t108 = self::Extension|set#field(let final self::Class* #t109 = c in #t109.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t109), #t107) in #t107);
+  let final self::Class* #t110 = c in #t110.{self::Class::==}(null) ?{self::Class*} null : self::Extension|set#field(#t110, let final self::Class* #t111 = self::Extension|get#field(new self::Class::•()) in let final void #t112 = self::Extension|set#field(new self::Class::•(), #t111) in #t111);
+  c = let final self::Class* #t113 = c in #t113.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t114 = let final self::Class* #t115 = self::Extension|get#field(new self::Class::•()) in let final void #t116 = self::Extension|set#field(new self::Class::•(), #t115) in #t115 in let final void #t117 = self::Extension|set#field(#t113, #t114) in #t114;
+  let final self::Class* #t118 = c in #t118.{self::Class::==}(null) ?{self::Class*} null : self::Extension|set#field(#t118, let final self::Class* #t119 = let final self::Class* #t120 = new self::Class::•() in let final void #t121 = self::Extension|set#field(new self::Class::•(), #t120) in #t120 in let final void #t122 = self::Extension|set#field(new self::Class::•(), #t119) in #t119);
+  c = let final self::Class* #t123 = c in #t123.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t124 = let final self::Class* #t125 = let final self::Class* #t126 = new self::Class::•() in let final void #t127 = self::Extension|set#field(new self::Class::•(), #t126) in #t126 in let final void #t128 = self::Extension|set#field(new self::Class::•(), #t125) in #t125 in let final void #t129 = self::Extension|set#field(#t123, #t124) in #t124;
+  let final self::Class* #t130 = c in #t130.{self::Class::==}(null) ?{self::Class*} null : self::Extension|set#field(#t130, let final self::Class* #t131 = self::Extension|method(new self::Class::•()) in let final void #t132 = self::Extension|set#field(new self::Class::•(), #t131) in #t131);
+  c = let final self::Class* #t133 = c in #t133.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t134 = let final self::Class* #t135 = self::Extension|method(new self::Class::•()) in let final void #t136 = self::Extension|set#field(new self::Class::•(), #t135) in #t135 in let final void #t137 = self::Extension|set#field(#t133, #t134) in #t134;
+  self::throws(() → self::Class* => let final self::Class* #t138 = self::Extension|get#field(new self::Class::•()) in let final void #t139 = self::Extension|set#field(let final self::Class* #t140 = c in #t140.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t140), #t138) in #t138);
+  self::throws(() → self::Class* => c = let final self::Class* #t141 = self::Extension|get#field(new self::Class::•()) in let final void #t142 = self::Extension|set#field(let final self::Class* #t143 = c in #t143.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t143), #t141) in #t141);
+  self::throws(() → self::Class* => let final self::Class* #t144 = let final self::Class* #t145 = new self::Class::•() in let final void #t146 = self::Extension|set#field(new self::Class::•(), #t145) in #t145 in let final void #t147 = self::Extension|set#field(let final self::Class* #t148 = c in #t148.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t148), #t144) in #t144);
+  self::throws(() → self::Class* => c = let final self::Class* #t149 = let final self::Class* #t150 = new self::Class::•() in let final void #t151 = self::Extension|set#field(new self::Class::•(), #t150) in #t150 in let final void #t152 = self::Extension|set#field(let final self::Class* #t153 = c in #t153.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t153), #t149) in #t149);
+  self::throws(() → self::Class* => let final self::Class* #t154 = self::Extension|method(new self::Class::•()) in let final void #t155 = self::Extension|set#field(let final self::Class* #t156 = c in #t156.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t156), #t154) in #t154);
+  self::throws(() → self::Class* => c = let final self::Class* #t157 = self::Extension|method(new self::Class::•()) in let final void #t158 = self::Extension|set#field(let final self::Class* #t159 = c in #t159.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t159), #t157) in #t157);
+  self::throws(() → self::Class* => self::Extension|get#field(self::Extension|method(let final self::Class* #t160 = c in #t160.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t160))));
+  self::throws(() → self::Class* => let final self::Class* #t161 = new self::Class::•() in let final void #t162 = self::Extension|set#field(self::Extension|method(let final self::Class* #t163 = c in #t163.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t163)), #t161) in #t161);
+  self::throws(() → self::Class* => c = let final self::Class* #t164 = new self::Class::•() in let final void #t165 = self::Extension|set#field(self::Extension|method(let final self::Class* #t166 = c in #t166.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t166)), #t164) in #t164);
+  self::throws(() → self::Class* => self::Extension|method(self::Extension|method(let final self::Class* #t167 = c in #t167.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t167))));
+  let final self::Class* #t168 = c in #t168.{self::Class::==}(null) ?{self::Class*} null : self::Extension|set#field(#t168, self::Extension|get#field(self::Extension|method(new self::Class::•())));
+  c = let final self::Class* #t169 = c in #t169.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t170 = self::Extension|get#field(self::Extension|method(new self::Class::•())) in let final void #t171 = self::Extension|set#field(#t169, #t170) in #t170;
+  let final self::Class* #t172 = c in #t172.{self::Class::==}(null) ?{self::Class*} null : self::Extension|set#field(#t172, let final self::Class* #t173 = new self::Class::•() in let final void #t174 = self::Extension|set#field(self::Extension|method(new self::Class::•()), #t173) in #t173);
+  c = let final self::Class* #t175 = c in #t175.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t176 = let final self::Class* #t177 = new self::Class::•() in let final void #t178 = self::Extension|set#field(self::Extension|method(new self::Class::•()), #t177) in #t177 in let final void #t179 = self::Extension|set#field(#t175, #t176) in #t176;
+  let final self::Class* #t180 = c in #t180.{self::Class::==}(null) ?{self::Class*} null : self::Extension|set#field(#t180, self::Extension|method(self::Extension|method(new self::Class::•())));
+  c = let final self::Class* #t181 = c in #t181.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t182 = self::Extension|method(self::Extension|method(new self::Class::•())) in let final void #t183 = self::Extension|set#field(#t181, #t182) in #t182;
+  self::throws(() → self::Class* => self::Extension|get#field(self::Extension|method(let final self::Class* #t184 = c in #t184.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t184))));
+  self::throws(() → self::Class* => let final self::Class* #t185 = new self::Class::•() in let final void #t186 = self::Extension|set#field(self::Extension|method(let final self::Class* #t187 = c in #t187.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t187)), #t185) in #t185);
+  self::throws(() → self::Class* => self::Extension|method(self::Extension|method(let final self::Class* #t188 = c in #t188.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t188))));
+  let final self::Class* #t189 = let final self::Class* #t190 = c in #t190.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t190) in #t189.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t189);
 }
 static method indexAccess(self::Class* c) → void {
-  self::throws(() → self::Class* => self::Extension|[](let final self::Class* #t191 = c in #t191.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t191), c));
-  self::throws(() → self::Class* => let final self::Class* #t192 = let final self::Class* #t193 = c in #t193.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t193) in let final self::Class* #t194 = c in let final self::Class* #t195 = new self::Class::•() in let final void #t196 = self::Extension|[]=(#t192, #t194, #t195) in #t195);
-  self::throws(() → self::Class* => c = let final self::Class* #t197 = let final self::Class* #t198 = c in #t198.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t198) in let final self::Class* #t199 = c in let final self::Class* #t200 = new self::Class::•() in let final void #t201 = self::Extension|[]=(#t197, #t199, #t200) in #t200);
-  self::throws(() → self::Class* => self::Extension|method(self::Extension|[](let final self::Class* #t202 = c in #t202.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t202), c)));
-  self::throws(() → self::Class* => let final self::Class* #t203 = let final self::Class* #t204 = c in #t204.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t204) in let final self::Class* #t205 = c in let final self::Class* #t206 = self::Extension|+(self::Extension|[](#t203, #t205), 0) in let final void #t207 = self::Extension|[]=(#t203, #t205, #t206) in #t206);
-  self::throws(() → self::Class* => c = let final self::Class* #t208 = let final self::Class* #t209 = c in #t209.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t209) in let final self::Class* #t210 = c in let final self::Class* #t211 = self::Extension|+(self::Extension|[](#t208, #t210), 0) in let final void #t212 = self::Extension|[]=(#t208, #t210, #t211) in #t211);
-  self::throws(() → self::Class* => let final self::Class* #t213 = let final self::Class* #t214 = c in #t214.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t214) in let final self::Class* #t215 = c in let final self::Class* #t216 = self::Extension|[](#t213, #t215) in let final void #t217 = self::Extension|[]=(#t213, #t215, self::Extension|+(#t216, 1)) in #t216);
-  self::throws(() → self::Class* => c = let final self::Class* #t218 = let final self::Class* #t219 = c in #t219.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t219) in let final self::Class* #t220 = c in let final self::Class* #t221 = self::Extension|[](#t218, #t220) in let final void #t222 = self::Extension|[]=(#t218, #t220, self::Extension|+(#t221, 1)) in #t221);
-  self::throws(() → self::Class* => let final self::Class* #t223 = let final self::Class* #t224 = c in #t224.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t224) in let final self::Class* #t225 = c in let final self::Class* #t226 = self::Extension|+(self::Extension|[](#t223, #t225), 1) in let final void #t227 = self::Extension|[]=(#t223, #t225, #t226) in #t226);
-  self::throws(() → self::Class* => c = let final self::Class* #t228 = let final self::Class* #t229 = c in #t229.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t229) in let final self::Class* #t230 = c in let final self::Class* #t231 = self::Extension|+(self::Extension|[](#t228, #t230), 1) in let final void #t232 = self::Extension|[]=(#t228, #t230, #t231) in #t231);
-  self::throws(() → self::Class* => self::Extension|[](self::Extension|[](let final self::Class* #t233 = c in #t233.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t233), c), c));
-  self::throws(() → self::Class* => let final self::Class* #t234 = self::Extension|[](let final self::Class* #t235 = c in #t235.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t235), c) in let final self::Class* #t236 = c in let final self::Class* #t237 = new self::Class::•() in let final void #t238 = self::Extension|[]=(#t234, #t236, #t237) in #t237);
-  self::throws(() → self::Class* => c = let final self::Class* #t239 = self::Extension|[](let final self::Class* #t240 = c in #t240.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t240), c) in let final self::Class* #t241 = c in let final self::Class* #t242 = new self::Class::•() in let final void #t243 = self::Extension|[]=(#t239, #t241, #t242) in #t242);
-  self::throws(() → self::Class* => self::Extension|method(self::Extension|[](self::Extension|[](let final self::Class* #t244 = c in #t244.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t244), c), c)));
-  self::throws(() → self::Class* => let final self::Class* #t245 = self::Extension|[](let final self::Class* #t246 = c in #t246.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t246), c) in let final self::Class* #t247 = c in let final self::Class* #t248 = self::Extension|+(self::Extension|[](#t245, #t247), 0) in let final void #t249 = self::Extension|[]=(#t245, #t247, #t248) in #t248);
-  self::throws(() → self::Class* => c = let final self::Class* #t250 = self::Extension|[](let final self::Class* #t251 = c in #t251.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t251), c) in let final self::Class* #t252 = c in let final self::Class* #t253 = self::Extension|+(self::Extension|[](#t250, #t252), 0) in let final void #t254 = self::Extension|[]=(#t250, #t252, #t253) in #t253);
-  self::throws(() → self::Class* => let final self::Class* #t255 = self::Extension|[](let final self::Class* #t256 = c in #t256.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t256), c) in let final self::Class* #t257 = c in let final self::Class* #t258 = self::Extension|[](#t255, #t257) in let final void #t259 = self::Extension|[]=(#t255, #t257, self::Extension|+(#t258, 1)) in #t258);
-  self::throws(() → self::Class* => c = let final self::Class* #t260 = self::Extension|[](let final self::Class* #t261 = c in #t261.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t261), c) in let final self::Class* #t262 = c in let final self::Class* #t263 = self::Extension|[](#t260, #t262) in let final void #t264 = self::Extension|[]=(#t260, #t262, self::Extension|+(#t263, 1)) in #t263);
-  self::throws(() → self::Class* => let final self::Class* #t265 = self::Extension|[](let final self::Class* #t266 = c in #t266.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t266), c) in let final self::Class* #t267 = c in let final self::Class* #t268 = self::Extension|+(self::Extension|[](#t265, #t267), 1) in let final void #t269 = self::Extension|[]=(#t265, #t267, #t268) in #t268);
-  self::throws(() → self::Class* => c = let final self::Class* #t270 = self::Extension|[](let final self::Class* #t271 = c in #t271.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t271), c) in let final self::Class* #t272 = c in let final self::Class* #t273 = self::Extension|+(self::Extension|[](#t270, #t272), 1) in let final void #t274 = self::Extension|[]=(#t270, #t272, #t273) in #t273);
+  self::throws(() → self::Class* => self::Extension|[](let final self::Class* #t191 = c in #t191.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t191), c));
+  self::throws(() → self::Class* => let final self::Class* #t192 = let final self::Class* #t193 = c in #t193.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t193) in let final self::Class* #t194 = c in let final self::Class* #t195 = new self::Class::•() in let final void #t196 = self::Extension|[]=(#t192, #t194, #t195) in #t195);
+  self::throws(() → self::Class* => c = let final self::Class* #t197 = let final self::Class* #t198 = c in #t198.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t198) in let final self::Class* #t199 = c in let final self::Class* #t200 = new self::Class::•() in let final void #t201 = self::Extension|[]=(#t197, #t199, #t200) in #t200);
+  self::throws(() → self::Class* => self::Extension|method(self::Extension|[](let final self::Class* #t202 = c in #t202.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t202), c)));
+  self::throws(() → self::Class* => let final self::Class* #t203 = let final self::Class* #t204 = c in #t204.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t204) in let final self::Class* #t205 = c in let final self::Class* #t206 = self::Extension|+(self::Extension|[](#t203, #t205), 0) in let final void #t207 = self::Extension|[]=(#t203, #t205, #t206) in #t206);
+  self::throws(() → self::Class* => c = let final self::Class* #t208 = let final self::Class* #t209 = c in #t209.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t209) in let final self::Class* #t210 = c in let final self::Class* #t211 = self::Extension|+(self::Extension|[](#t208, #t210), 0) in let final void #t212 = self::Extension|[]=(#t208, #t210, #t211) in #t211);
+  self::throws(() → self::Class* => let final self::Class* #t213 = let final self::Class* #t214 = c in #t214.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t214) in let final self::Class* #t215 = c in let final self::Class* #t216 = self::Extension|[](#t213, #t215) in let final void #t217 = self::Extension|[]=(#t213, #t215, self::Extension|+(#t216, 1)) in #t216);
+  self::throws(() → self::Class* => c = let final self::Class* #t218 = let final self::Class* #t219 = c in #t219.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t219) in let final self::Class* #t220 = c in let final self::Class* #t221 = self::Extension|[](#t218, #t220) in let final void #t222 = self::Extension|[]=(#t218, #t220, self::Extension|+(#t221, 1)) in #t221);
+  self::throws(() → self::Class* => let final self::Class* #t223 = let final self::Class* #t224 = c in #t224.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t224) in let final self::Class* #t225 = c in let final self::Class* #t226 = self::Extension|+(self::Extension|[](#t223, #t225), 1) in let final void #t227 = self::Extension|[]=(#t223, #t225, #t226) in #t226);
+  self::throws(() → self::Class* => c = let final self::Class* #t228 = let final self::Class* #t229 = c in #t229.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t229) in let final self::Class* #t230 = c in let final self::Class* #t231 = self::Extension|+(self::Extension|[](#t228, #t230), 1) in let final void #t232 = self::Extension|[]=(#t228, #t230, #t231) in #t231);
+  self::throws(() → self::Class* => self::Extension|[](self::Extension|[](let final self::Class* #t233 = c in #t233.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t233), c), c));
+  self::throws(() → self::Class* => let final self::Class* #t234 = self::Extension|[](let final self::Class* #t235 = c in #t235.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t235), c) in let final self::Class* #t236 = c in let final self::Class* #t237 = new self::Class::•() in let final void #t238 = self::Extension|[]=(#t234, #t236, #t237) in #t237);
+  self::throws(() → self::Class* => c = let final self::Class* #t239 = self::Extension|[](let final self::Class* #t240 = c in #t240.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t240), c) in let final self::Class* #t241 = c in let final self::Class* #t242 = new self::Class::•() in let final void #t243 = self::Extension|[]=(#t239, #t241, #t242) in #t242);
+  self::throws(() → self::Class* => self::Extension|method(self::Extension|[](self::Extension|[](let final self::Class* #t244 = c in #t244.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t244), c), c)));
+  self::throws(() → self::Class* => let final self::Class* #t245 = self::Extension|[](let final self::Class* #t246 = c in #t246.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t246), c) in let final self::Class* #t247 = c in let final self::Class* #t248 = self::Extension|+(self::Extension|[](#t245, #t247), 0) in let final void #t249 = self::Extension|[]=(#t245, #t247, #t248) in #t248);
+  self::throws(() → self::Class* => c = let final self::Class* #t250 = self::Extension|[](let final self::Class* #t251 = c in #t251.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t251), c) in let final self::Class* #t252 = c in let final self::Class* #t253 = self::Extension|+(self::Extension|[](#t250, #t252), 0) in let final void #t254 = self::Extension|[]=(#t250, #t252, #t253) in #t253);
+  self::throws(() → self::Class* => let final self::Class* #t255 = self::Extension|[](let final self::Class* #t256 = c in #t256.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t256), c) in let final self::Class* #t257 = c in let final self::Class* #t258 = self::Extension|[](#t255, #t257) in let final void #t259 = self::Extension|[]=(#t255, #t257, self::Extension|+(#t258, 1)) in #t258);
+  self::throws(() → self::Class* => c = let final self::Class* #t260 = self::Extension|[](let final self::Class* #t261 = c in #t261.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t261), c) in let final self::Class* #t262 = c in let final self::Class* #t263 = self::Extension|[](#t260, #t262) in let final void #t264 = self::Extension|[]=(#t260, #t262, self::Extension|+(#t263, 1)) in #t263);
+  self::throws(() → self::Class* => let final self::Class* #t265 = self::Extension|[](let final self::Class* #t266 = c in #t266.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t266), c) in let final self::Class* #t267 = c in let final self::Class* #t268 = self::Extension|+(self::Extension|[](#t265, #t267), 1) in let final void #t269 = self::Extension|[]=(#t265, #t267, #t268) in #t268);
+  self::throws(() → self::Class* => c = let final self::Class* #t270 = self::Extension|[](let final self::Class* #t271 = c in #t271.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t271), c) in let final self::Class* #t272 = c in let final self::Class* #t273 = self::Extension|+(self::Extension|[](#t270, #t272), 1) in let final void #t274 = self::Extension|[]=(#t270, #t272, #t273) in #t273);
 }
 static method operatorAccess(self::Class* c) → void {
-  self::throws(() → self::Class* => self::Extension|+(let final self::Class* #t275 = c in #t275.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t275), 0));
-  self::throws(() → self::Class* => self::Extension|unary-(let final self::Class* #t276 = c in #t276.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t276)));
-  let final self::Class* #t277 = c in #t277.{core::Object::==}(null) ?{self::Class*} null : self::Extension|set#field(#t277, self::Extension|+(self::Extension|get#field(#t277), 0));
-  c = let final self::Class* #t278 = c in #t278.{core::Object::==}(null) ?{self::Class*} null : let final self::Class* #t279 = self::Extension|+(self::Extension|get#field(#t278), 0) in let final void #t280 = self::Extension|set#field(#t278, #t279) in #t279;
-  self::throws(() → self::Class* => let final self::Class* #t281 = let final self::Class* #t282 = c in #t282.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t282) in let final self::Class* #t283 = self::Extension|+(self::Extension|get#field(#t281), 0) in let final void #t284 = self::Extension|set#field(#t281, #t283) in #t283);
-  self::throws(() → self::Class* => c = let final self::Class* #t285 = let final self::Class* #t286 = c in #t286.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t286) in let final self::Class* #t287 = self::Extension|+(self::Extension|get#field(#t285), 0) in let final void #t288 = self::Extension|set#field(#t285, #t287) in #t287);
-  let final self::Class* #t289 = c in #t289.{core::Object::==}(null) ?{self::Class*} null : self::Extension|set#field(#t289, self::Extension|+(self::Extension|get#field(#t289), 1));
-  c = let final self::Class* #t290 = c in #t290.{core::Object::==}(null) ?{self::Class*} null : let final self::Class* #t291 = self::Extension|get#field(#t290) in let final void #t292 = self::Extension|set#field(#t290, self::Extension|+(#t291, 1)) in #t291;
-  let final self::Class* #t293 = c in #t293.{core::Object::==}(null) ?{self::Class*} null : let final self::Class* #t294 = self::Extension|+(self::Extension|get#field(#t293), 1) in let final void #t295 = self::Extension|set#field(#t293, #t294) in #t294;
-  c = let final self::Class* #t296 = c in #t296.{core::Object::==}(null) ?{self::Class*} null : let final self::Class* #t297 = self::Extension|+(self::Extension|get#field(#t296), 1) in let final void #t298 = self::Extension|set#field(#t296, #t297) in #t297;
+  self::throws(() → self::Class* => self::Extension|+(let final self::Class* #t275 = c in #t275.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t275), 0));
+  self::throws(() → self::Class* => self::Extension|unary-(let final self::Class* #t276 = c in #t276.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t276)));
+  let final self::Class* #t277 = c in #t277.{self::Class::==}(null) ?{self::Class*} null : self::Extension|set#field(#t277, self::Extension|+(self::Extension|get#field(#t277), 0));
+  c = let final self::Class* #t278 = c in #t278.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t279 = self::Extension|+(self::Extension|get#field(#t278), 0) in let final void #t280 = self::Extension|set#field(#t278, #t279) in #t279;
+  self::throws(() → self::Class* => let final self::Class* #t281 = let final self::Class* #t282 = c in #t282.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t282) in let final self::Class* #t283 = self::Extension|+(self::Extension|get#field(#t281), 0) in let final void #t284 = self::Extension|set#field(#t281, #t283) in #t283);
+  self::throws(() → self::Class* => c = let final self::Class* #t285 = let final self::Class* #t286 = c in #t286.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t286) in let final self::Class* #t287 = self::Extension|+(self::Extension|get#field(#t285), 0) in let final void #t288 = self::Extension|set#field(#t285, #t287) in #t287);
+  let final self::Class* #t289 = c in #t289.{self::Class::==}(null) ?{self::Class*} null : self::Extension|set#field(#t289, self::Extension|+(self::Extension|get#field(#t289), 1));
+  c = let final self::Class* #t290 = c in #t290.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t291 = self::Extension|get#field(#t290) in let final void #t292 = self::Extension|set#field(#t290, self::Extension|+(#t291, 1)) in #t291;
+  let final self::Class* #t293 = c in #t293.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t294 = self::Extension|+(self::Extension|get#field(#t293), 1) in let final void #t295 = self::Extension|set#field(#t293, #t294) in #t294;
+  c = let final self::Class* #t296 = c in #t296.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t297 = self::Extension|+(self::Extension|get#field(#t296), 1) in let final void #t298 = self::Extension|set#field(#t296, #t297) in #t297;
 }
 static method ifNull(self::Class* c) → void {
-  let final self::Class* #t299 = c in #t299.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t299).{core::Object::==}(null) ?{self::Class*} self::Extension|set#field(#t299, c) : null;
-  c = let final self::Class* #t300 = c in #t300.{core::Object::==}(null) ?{self::Class*} null : let final self::Class* #t301 = self::Extension|get#field(#t300) in #t301.{core::Object::==}(null) ?{self::Class*} let final self::Class* #t302 = c in let final void #t303 = self::Extension|set#field(#t300, #t302) in #t302 : #t301;
-  self::throws(() → self::Class* => let final self::Class* #t304 = let final self::Class* #t305 = c in #t305.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t305) in let final self::Class* #t306 = self::Extension|get#field(#t304) in #t306.{core::Object::==}(null) ?{self::Class*} let final self::Class* #t307 = c in let final void #t308 = self::Extension|set#field(#t304, #t307) in #t307 : #t306);
-  self::throws(() → self::Class* => c = let final self::Class* #t309 = let final self::Class* #t310 = c in #t310.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t310) in let final self::Class* #t311 = self::Extension|get#field(#t309) in #t311.{core::Object::==}(null) ?{self::Class*} let final self::Class* #t312 = c in let final void #t313 = self::Extension|set#field(#t309, #t312) in #t312 : #t311);
-  self::throws(() → self::Class* => let final self::Class* #t314 = let final self::Class* #t315 = c in #t315.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t315) in let final self::Class* #t316 = c in let final self::Class* #t317 = self::Extension|[](#t314, #t316) in #t317.{core::Object::==}(null) ?{self::Class*} let final self::Class* #t318 = c in let final void #t319 = self::Extension|[]=(#t314, #t316, #t318) in #t318 : #t317);
-  self::throws(() → self::Class* => c = let final self::Class* #t320 = let final self::Class* #t321 = c in #t321.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t321) in let final self::Class* #t322 = c in let final self::Class* #t323 = self::Extension|[](#t320, #t322) in #t323.{core::Object::==}(null) ?{self::Class*} let final self::Class* #t324 = c in let final void #t325 = self::Extension|[]=(#t320, #t322, #t324) in #t324 : #t323);
+  let final self::Class* #t299 = c in #t299.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t299).{self::Class::==}(null) ?{self::Class*} self::Extension|set#field(#t299, c) : null;
+  c = let final self::Class* #t300 = c in #t300.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t301 = self::Extension|get#field(#t300) in #t301.{self::Class::==}(null) ?{self::Class*} let final self::Class* #t302 = c in let final void #t303 = self::Extension|set#field(#t300, #t302) in #t302 : #t301;
+  self::throws(() → self::Class* => let final self::Class* #t304 = let final self::Class* #t305 = c in #t305.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t305) in let final self::Class* #t306 = self::Extension|get#field(#t304) in #t306.{self::Class::==}(null) ?{self::Class*} let final self::Class* #t307 = c in let final void #t308 = self::Extension|set#field(#t304, #t307) in #t307 : #t306);
+  self::throws(() → self::Class* => c = let final self::Class* #t309 = let final self::Class* #t310 = c in #t310.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t310) in let final self::Class* #t311 = self::Extension|get#field(#t309) in #t311.{self::Class::==}(null) ?{self::Class*} let final self::Class* #t312 = c in let final void #t313 = self::Extension|set#field(#t309, #t312) in #t312 : #t311);
+  self::throws(() → self::Class* => let final self::Class* #t314 = let final self::Class* #t315 = c in #t315.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t315) in let final self::Class* #t316 = c in let final self::Class* #t317 = self::Extension|[](#t314, #t316) in #t317.{self::Class::==}(null) ?{self::Class*} let final self::Class* #t318 = c in let final void #t319 = self::Extension|[]=(#t314, #t316, #t318) in #t318 : #t317);
+  self::throws(() → self::Class* => c = let final self::Class* #t320 = let final self::Class* #t321 = c in #t321.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t321) in let final self::Class* #t322 = c in let final self::Class* #t323 = self::Extension|[](#t320, #t322) in #t323.{self::Class::==}(null) ?{self::Class*} let final self::Class* #t324 = c in let final void #t325 = self::Extension|[]=(#t320, #t322, #t324) in #t324 : #t323);
 }
 static method throws(() →* void f) → void {
   try {
diff --git a/pkg/front_end/testcases/nnbd/no_null_shorting_extension.dart.weak.expect b/pkg/front_end/testcases/nnbd/no_null_shorting_extension.dart.weak.expect
index 71b2eef..0e1daa3 100644
--- a/pkg/front_end/testcases/nnbd/no_null_shorting_extension.dart.weak.expect
+++ b/pkg/front_end/testcases/nnbd/no_null_shorting_extension.dart.weak.expect
@@ -7,6 +7,16 @@
   synthetic constructor •() → self::Class*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 extension Extension on self::Class* {
   get field = self::Extension|get#field;
@@ -43,119 +53,119 @@
   self::ifNull(null);
 }
 static method propertyAccess(self::Class* c) → void {
-  let final self::Class* #t1 = c in #t1.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t1);
-  let final self::Class* #t2 = c in #t2.{core::Object::==}(null) ?{self::Class*} null : self::Extension|set#field(#t2, new self::Class::•());
-  c = let final self::Class* #t3 = c in #t3.{core::Object::==}(null) ?{self::Class*} null : let final self::Class* #t4 = new self::Class::•() in let final void #t5 = self::Extension|set#field(#t3, #t4) in #t4;
-  let final self::Class* #t6 = c in #t6.{core::Object::==}(null) ?{self::Class*} null : self::Extension|method(#t6);
-  self::throws(() → self::Class* => self::Extension|get#field(let final self::Class* #t7 = c in #t7.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t7)));
-  let final self::Class* #t8 = let final self::Class* #t9 = c in #t9.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t9) in #t8.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t8);
-  self::throws(() → self::Class* => let final self::Class* #t10 = self::Extension|get#field(let final self::Class* #t11 = c in #t11.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t11)) in #t10.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t10));
-  self::throws(() → self::Class* => let final self::Class* #t12 = new self::Class::•() in let final void #t13 = self::Extension|set#field(let final self::Class* #t14 = c in #t14.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t14), #t12) in #t12);
-  let final self::Class* #t15 = let final self::Class* #t16 = c in #t16.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t16) in #t15.{core::Object::==}(null) ?{self::Class*} null : self::Extension|set#field(#t15, new self::Class::•());
-  self::throws(() → self::Class* => let final self::Class* #t17 = self::Extension|get#field(let final self::Class* #t18 = c in #t18.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t18)) in #t17.{core::Object::==}(null) ?{self::Class*} null : let final self::Class* #t19 = new self::Class::•() in let final void #t20 = self::Extension|set#field(#t17, #t19) in #t19);
-  self::throws(() → self::Class* => self::Extension|get#field(let final self::Class* #t21 = c in #t21.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t21)));
-  self::throws(() → self::Class* => self::Extension|get#field(let final self::Class* #t22 = c in #t22.{core::Object::==}(null) ?{self::Class*} null : let final self::Class* #t23 = new self::Class::•() in let final void #t24 = self::Extension|set#field(#t22, #t23) in #t23));
-  self::throws(() → self::Class* => self::Extension|get#field(let final self::Class* #t25 = c in #t25.{core::Object::==}(null) ?{self::Class*} null : self::Extension|method(#t25)));
-  self::throws(() → self::Class* => c = let final self::Class* #t26 = new self::Class::•() in let final void #t27 = self::Extension|set#field(let final self::Class* #t28 = c in #t28.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t28), #t26) in #t26);
-  c = let final self::Class* #t29 = let final self::Class* #t30 = c in #t30.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t30) in #t29.{core::Object::==}(null) ?{self::Class*} null : let final self::Class* #t31 = new self::Class::•() in let final void #t32 = self::Extension|set#field(#t29, #t31) in #t31;
-  self::throws(() → self::Class* => c = let final self::Class* #t33 = self::Extension|get#field(let final self::Class* #t34 = c in #t34.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t34)) in #t33.{core::Object::==}(null) ?{self::Class*} null : let final self::Class* #t35 = new self::Class::•() in let final void #t36 = self::Extension|set#field(#t33, #t35) in #t35);
-  self::throws(() → self::Class* => self::Extension|method(let final self::Class* #t37 = c in #t37.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t37)));
-  let final self::Class* #t38 = c in #t38.{core::Object::==}(null) ?{self::Class*} null : self::Extension|set#field(#t38, self::Extension|get#field(new self::Class::•()));
-  c = let final self::Class* #t39 = c in #t39.{core::Object::==}(null) ?{self::Class*} null : let final self::Class* #t40 = self::Extension|get#field(new self::Class::•()) in let final void #t41 = self::Extension|set#field(#t39, #t40) in #t40;
-  let final self::Class* #t42 = c in #t42.{core::Object::==}(null) ?{self::Class*} null : self::Extension|set#field(#t42, let final self::Class* #t43 = new self::Class::•() in let final void #t44 = self::Extension|set#field(new self::Class::•(), #t43) in #t43);
-  c = let final self::Class* #t45 = c in #t45.{core::Object::==}(null) ?{self::Class*} null : let final self::Class* #t46 = let final self::Class* #t47 = new self::Class::•() in let final void #t48 = self::Extension|set#field(new self::Class::•(), #t47) in #t47 in let final void #t49 = self::Extension|set#field(#t45, #t46) in #t46;
-  let final self::Class* #t50 = c in #t50.{core::Object::==}(null) ?{self::Class*} null : self::Extension|set#field(#t50, self::Extension|method(new self::Class::•()));
-  c = let final self::Class* #t51 = c in #t51.{core::Object::==}(null) ?{self::Class*} null : let final self::Class* #t52 = self::Extension|method(new self::Class::•()) in let final void #t53 = self::Extension|set#field(#t51, #t52) in #t52;
-  self::throws(() → self::Class* => self::Extension|get#field(let final self::Class* #t54 = c in #t54.{core::Object::==}(null) ?{self::Class*} null : self::Extension|method(#t54)));
-  self::throws(() → self::Class* => let final self::Class* #t55 = new self::Class::•() in let final void #t56 = self::Extension|set#field(let final self::Class* #t57 = c in #t57.{core::Object::==}(null) ?{self::Class*} null : self::Extension|method(#t57), #t55) in #t55);
-  self::throws(() → self::Class* => self::Extension|method(let final self::Class* #t58 = c in #t58.{core::Object::==}(null) ?{self::Class*} null : self::Extension|method(#t58)));
-  self::throws(() → self::Class* => self::Extension|get#field(self::Extension|get#field(let final self::Class* #t59 = c in #t59.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t59))));
-  self::throws(() → self::Class* => let final self::Class* #t60 = new self::Class::•() in let final void #t61 = self::Extension|set#field(self::Extension|get#field(let final self::Class* #t62 = c in #t62.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t62)), #t60) in #t60);
-  self::throws(() → self::Class* => c = let final self::Class* #t63 = new self::Class::•() in let final void #t64 = self::Extension|set#field(self::Extension|get#field(let final self::Class* #t65 = c in #t65.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t65)), #t63) in #t63);
-  self::throws(() → self::Class* => self::Extension|method(self::Extension|get#field(let final self::Class* #t66 = c in #t66.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t66))));
-  let final self::Class* #t67 = c in #t67.{core::Object::==}(null) ?{self::Class*} null : self::Extension|set#field(#t67, self::Extension|get#field(self::Extension|get#field(new self::Class::•())));
-  c = let final self::Class* #t68 = c in #t68.{core::Object::==}(null) ?{self::Class*} null : let final self::Class* #t69 = self::Extension|get#field(self::Extension|get#field(new self::Class::•())) in let final void #t70 = self::Extension|set#field(#t68, #t69) in #t69;
-  let final self::Class* #t71 = c in #t71.{core::Object::==}(null) ?{self::Class*} null : self::Extension|set#field(#t71, let final self::Class* #t72 = new self::Class::•() in let final void #t73 = self::Extension|set#field(self::Extension|get#field(new self::Class::•()), #t72) in #t72);
-  c = let final self::Class* #t74 = c in #t74.{core::Object::==}(null) ?{self::Class*} null : let final self::Class* #t75 = let final self::Class* #t76 = new self::Class::•() in let final void #t77 = self::Extension|set#field(self::Extension|get#field(new self::Class::•()), #t76) in #t76 in let final void #t78 = self::Extension|set#field(#t74, #t75) in #t75;
-  let final self::Class* #t79 = c in #t79.{core::Object::==}(null) ?{self::Class*} null : self::Extension|set#field(#t79, self::Extension|method(self::Extension|get#field(new self::Class::•())));
-  c = let final self::Class* #t80 = c in #t80.{core::Object::==}(null) ?{self::Class*} null : let final self::Class* #t81 = self::Extension|method(self::Extension|get#field(new self::Class::•())) in let final void #t82 = self::Extension|set#field(#t80, #t81) in #t81;
-  self::throws(() → self::Class* => self::Extension|get#field(self::Extension|get#field(let final self::Class* #t83 = c in #t83.{core::Object::==}(null) ?{self::Class*} null : self::Extension|method(#t83))));
-  self::throws(() → self::Class* => let final self::Class* #t84 = new self::Class::•() in let final void #t85 = self::Extension|set#field(self::Extension|get#field(let final self::Class* #t86 = c in #t86.{core::Object::==}(null) ?{self::Class*} null : self::Extension|method(#t86)), #t84) in #t84);
-  self::throws(() → self::Class* => self::Extension|method(self::Extension|get#field(let final self::Class* #t87 = c in #t87.{core::Object::==}(null) ?{self::Class*} null : self::Extension|method(#t87))));
-  self::throws(() → self::Class* => let final self::Class* #t88 = self::Extension|get#field(new self::Class::•()) in let final void #t89 = self::Extension|set#field(let final self::Class* #t90 = c in #t90.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t90), #t88) in #t88);
-  self::throws(() → self::Class* => c = let final self::Class* #t91 = self::Extension|get#field(new self::Class::•()) in let final void #t92 = self::Extension|set#field(let final self::Class* #t93 = c in #t93.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t93), #t91) in #t91);
-  self::throws(() → self::Class* => let final self::Class* #t94 = let final self::Class* #t95 = new self::Class::•() in let final void #t96 = self::Extension|set#field(new self::Class::•(), #t95) in #t95 in let final void #t97 = self::Extension|set#field(let final self::Class* #t98 = c in #t98.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t98), #t94) in #t94);
-  self::throws(() → self::Class* => c = let final self::Class* #t99 = let final self::Class* #t100 = new self::Class::•() in let final void #t101 = self::Extension|set#field(new self::Class::•(), #t100) in #t100 in let final void #t102 = self::Extension|set#field(let final self::Class* #t103 = c in #t103.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t103), #t99) in #t99);
-  self::throws(() → self::Class* => let final self::Class* #t104 = self::Extension|method(new self::Class::•()) in let final void #t105 = self::Extension|set#field(let final self::Class* #t106 = c in #t106.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t106), #t104) in #t104);
-  self::throws(() → self::Class* => c = let final self::Class* #t107 = self::Extension|method(new self::Class::•()) in let final void #t108 = self::Extension|set#field(let final self::Class* #t109 = c in #t109.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t109), #t107) in #t107);
-  let final self::Class* #t110 = c in #t110.{core::Object::==}(null) ?{self::Class*} null : self::Extension|set#field(#t110, let final self::Class* #t111 = self::Extension|get#field(new self::Class::•()) in let final void #t112 = self::Extension|set#field(new self::Class::•(), #t111) in #t111);
-  c = let final self::Class* #t113 = c in #t113.{core::Object::==}(null) ?{self::Class*} null : let final self::Class* #t114 = let final self::Class* #t115 = self::Extension|get#field(new self::Class::•()) in let final void #t116 = self::Extension|set#field(new self::Class::•(), #t115) in #t115 in let final void #t117 = self::Extension|set#field(#t113, #t114) in #t114;
-  let final self::Class* #t118 = c in #t118.{core::Object::==}(null) ?{self::Class*} null : self::Extension|set#field(#t118, let final self::Class* #t119 = let final self::Class* #t120 = new self::Class::•() in let final void #t121 = self::Extension|set#field(new self::Class::•(), #t120) in #t120 in let final void #t122 = self::Extension|set#field(new self::Class::•(), #t119) in #t119);
-  c = let final self::Class* #t123 = c in #t123.{core::Object::==}(null) ?{self::Class*} null : let final self::Class* #t124 = let final self::Class* #t125 = let final self::Class* #t126 = new self::Class::•() in let final void #t127 = self::Extension|set#field(new self::Class::•(), #t126) in #t126 in let final void #t128 = self::Extension|set#field(new self::Class::•(), #t125) in #t125 in let final void #t129 = self::Extension|set#field(#t123, #t124) in #t124;
-  let final self::Class* #t130 = c in #t130.{core::Object::==}(null) ?{self::Class*} null : self::Extension|set#field(#t130, let final self::Class* #t131 = self::Extension|method(new self::Class::•()) in let final void #t132 = self::Extension|set#field(new self::Class::•(), #t131) in #t131);
-  c = let final self::Class* #t133 = c in #t133.{core::Object::==}(null) ?{self::Class*} null : let final self::Class* #t134 = let final self::Class* #t135 = self::Extension|method(new self::Class::•()) in let final void #t136 = self::Extension|set#field(new self::Class::•(), #t135) in #t135 in let final void #t137 = self::Extension|set#field(#t133, #t134) in #t134;
-  self::throws(() → self::Class* => let final self::Class* #t138 = self::Extension|get#field(new self::Class::•()) in let final void #t139 = self::Extension|set#field(let final self::Class* #t140 = c in #t140.{core::Object::==}(null) ?{self::Class*} null : self::Extension|method(#t140), #t138) in #t138);
-  self::throws(() → self::Class* => c = let final self::Class* #t141 = self::Extension|get#field(new self::Class::•()) in let final void #t142 = self::Extension|set#field(let final self::Class* #t143 = c in #t143.{core::Object::==}(null) ?{self::Class*} null : self::Extension|method(#t143), #t141) in #t141);
-  self::throws(() → self::Class* => let final self::Class* #t144 = let final self::Class* #t145 = new self::Class::•() in let final void #t146 = self::Extension|set#field(new self::Class::•(), #t145) in #t145 in let final void #t147 = self::Extension|set#field(let final self::Class* #t148 = c in #t148.{core::Object::==}(null) ?{self::Class*} null : self::Extension|method(#t148), #t144) in #t144);
-  self::throws(() → self::Class* => c = let final self::Class* #t149 = let final self::Class* #t150 = new self::Class::•() in let final void #t151 = self::Extension|set#field(new self::Class::•(), #t150) in #t150 in let final void #t152 = self::Extension|set#field(let final self::Class* #t153 = c in #t153.{core::Object::==}(null) ?{self::Class*} null : self::Extension|method(#t153), #t149) in #t149);
-  self::throws(() → self::Class* => let final self::Class* #t154 = self::Extension|method(new self::Class::•()) in let final void #t155 = self::Extension|set#field(let final self::Class* #t156 = c in #t156.{core::Object::==}(null) ?{self::Class*} null : self::Extension|method(#t156), #t154) in #t154);
-  self::throws(() → self::Class* => c = let final self::Class* #t157 = self::Extension|method(new self::Class::•()) in let final void #t158 = self::Extension|set#field(let final self::Class* #t159 = c in #t159.{core::Object::==}(null) ?{self::Class*} null : self::Extension|method(#t159), #t157) in #t157);
-  self::throws(() → self::Class* => self::Extension|get#field(self::Extension|method(let final self::Class* #t160 = c in #t160.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t160))));
-  self::throws(() → self::Class* => let final self::Class* #t161 = new self::Class::•() in let final void #t162 = self::Extension|set#field(self::Extension|method(let final self::Class* #t163 = c in #t163.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t163)), #t161) in #t161);
-  self::throws(() → self::Class* => c = let final self::Class* #t164 = new self::Class::•() in let final void #t165 = self::Extension|set#field(self::Extension|method(let final self::Class* #t166 = c in #t166.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t166)), #t164) in #t164);
-  self::throws(() → self::Class* => self::Extension|method(self::Extension|method(let final self::Class* #t167 = c in #t167.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t167))));
-  let final self::Class* #t168 = c in #t168.{core::Object::==}(null) ?{self::Class*} null : self::Extension|set#field(#t168, self::Extension|get#field(self::Extension|method(new self::Class::•())));
-  c = let final self::Class* #t169 = c in #t169.{core::Object::==}(null) ?{self::Class*} null : let final self::Class* #t170 = self::Extension|get#field(self::Extension|method(new self::Class::•())) in let final void #t171 = self::Extension|set#field(#t169, #t170) in #t170;
-  let final self::Class* #t172 = c in #t172.{core::Object::==}(null) ?{self::Class*} null : self::Extension|set#field(#t172, let final self::Class* #t173 = new self::Class::•() in let final void #t174 = self::Extension|set#field(self::Extension|method(new self::Class::•()), #t173) in #t173);
-  c = let final self::Class* #t175 = c in #t175.{core::Object::==}(null) ?{self::Class*} null : let final self::Class* #t176 = let final self::Class* #t177 = new self::Class::•() in let final void #t178 = self::Extension|set#field(self::Extension|method(new self::Class::•()), #t177) in #t177 in let final void #t179 = self::Extension|set#field(#t175, #t176) in #t176;
-  let final self::Class* #t180 = c in #t180.{core::Object::==}(null) ?{self::Class*} null : self::Extension|set#field(#t180, self::Extension|method(self::Extension|method(new self::Class::•())));
-  c = let final self::Class* #t181 = c in #t181.{core::Object::==}(null) ?{self::Class*} null : let final self::Class* #t182 = self::Extension|method(self::Extension|method(new self::Class::•())) in let final void #t183 = self::Extension|set#field(#t181, #t182) in #t182;
-  self::throws(() → self::Class* => self::Extension|get#field(self::Extension|method(let final self::Class* #t184 = c in #t184.{core::Object::==}(null) ?{self::Class*} null : self::Extension|method(#t184))));
-  self::throws(() → self::Class* => let final self::Class* #t185 = new self::Class::•() in let final void #t186 = self::Extension|set#field(self::Extension|method(let final self::Class* #t187 = c in #t187.{core::Object::==}(null) ?{self::Class*} null : self::Extension|method(#t187)), #t185) in #t185);
-  self::throws(() → self::Class* => self::Extension|method(self::Extension|method(let final self::Class* #t188 = c in #t188.{core::Object::==}(null) ?{self::Class*} null : self::Extension|method(#t188))));
-  let final self::Class* #t189 = let final self::Class* #t190 = c in #t190.{core::Object::==}(null) ?{self::Class*} null : self::Extension|method(#t190) in #t189.{core::Object::==}(null) ?{self::Class*} null : self::Extension|method(#t189);
+  let final self::Class* #t1 = c in #t1.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t1);
+  let final self::Class* #t2 = c in #t2.{self::Class::==}(null) ?{self::Class*} null : self::Extension|set#field(#t2, new self::Class::•());
+  c = let final self::Class* #t3 = c in #t3.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t4 = new self::Class::•() in let final void #t5 = self::Extension|set#field(#t3, #t4) in #t4;
+  let final self::Class* #t6 = c in #t6.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t6);
+  self::throws(() → self::Class* => self::Extension|get#field(let final self::Class* #t7 = c in #t7.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t7)));
+  let final self::Class* #t8 = let final self::Class* #t9 = c in #t9.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t9) in #t8.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t8);
+  self::throws(() → self::Class* => let final self::Class* #t10 = self::Extension|get#field(let final self::Class* #t11 = c in #t11.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t11)) in #t10.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t10));
+  self::throws(() → self::Class* => let final self::Class* #t12 = new self::Class::•() in let final void #t13 = self::Extension|set#field(let final self::Class* #t14 = c in #t14.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t14), #t12) in #t12);
+  let final self::Class* #t15 = let final self::Class* #t16 = c in #t16.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t16) in #t15.{self::Class::==}(null) ?{self::Class*} null : self::Extension|set#field(#t15, new self::Class::•());
+  self::throws(() → self::Class* => let final self::Class* #t17 = self::Extension|get#field(let final self::Class* #t18 = c in #t18.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t18)) in #t17.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t19 = new self::Class::•() in let final void #t20 = self::Extension|set#field(#t17, #t19) in #t19);
+  self::throws(() → self::Class* => self::Extension|get#field(let final self::Class* #t21 = c in #t21.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t21)));
+  self::throws(() → self::Class* => self::Extension|get#field(let final self::Class* #t22 = c in #t22.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t23 = new self::Class::•() in let final void #t24 = self::Extension|set#field(#t22, #t23) in #t23));
+  self::throws(() → self::Class* => self::Extension|get#field(let final self::Class* #t25 = c in #t25.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t25)));
+  self::throws(() → self::Class* => c = let final self::Class* #t26 = new self::Class::•() in let final void #t27 = self::Extension|set#field(let final self::Class* #t28 = c in #t28.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t28), #t26) in #t26);
+  c = let final self::Class* #t29 = let final self::Class* #t30 = c in #t30.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t30) in #t29.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t31 = new self::Class::•() in let final void #t32 = self::Extension|set#field(#t29, #t31) in #t31;
+  self::throws(() → self::Class* => c = let final self::Class* #t33 = self::Extension|get#field(let final self::Class* #t34 = c in #t34.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t34)) in #t33.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t35 = new self::Class::•() in let final void #t36 = self::Extension|set#field(#t33, #t35) in #t35);
+  self::throws(() → self::Class* => self::Extension|method(let final self::Class* #t37 = c in #t37.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t37)));
+  let final self::Class* #t38 = c in #t38.{self::Class::==}(null) ?{self::Class*} null : self::Extension|set#field(#t38, self::Extension|get#field(new self::Class::•()));
+  c = let final self::Class* #t39 = c in #t39.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t40 = self::Extension|get#field(new self::Class::•()) in let final void #t41 = self::Extension|set#field(#t39, #t40) in #t40;
+  let final self::Class* #t42 = c in #t42.{self::Class::==}(null) ?{self::Class*} null : self::Extension|set#field(#t42, let final self::Class* #t43 = new self::Class::•() in let final void #t44 = self::Extension|set#field(new self::Class::•(), #t43) in #t43);
+  c = let final self::Class* #t45 = c in #t45.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t46 = let final self::Class* #t47 = new self::Class::•() in let final void #t48 = self::Extension|set#field(new self::Class::•(), #t47) in #t47 in let final void #t49 = self::Extension|set#field(#t45, #t46) in #t46;
+  let final self::Class* #t50 = c in #t50.{self::Class::==}(null) ?{self::Class*} null : self::Extension|set#field(#t50, self::Extension|method(new self::Class::•()));
+  c = let final self::Class* #t51 = c in #t51.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t52 = self::Extension|method(new self::Class::•()) in let final void #t53 = self::Extension|set#field(#t51, #t52) in #t52;
+  self::throws(() → self::Class* => self::Extension|get#field(let final self::Class* #t54 = c in #t54.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t54)));
+  self::throws(() → self::Class* => let final self::Class* #t55 = new self::Class::•() in let final void #t56 = self::Extension|set#field(let final self::Class* #t57 = c in #t57.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t57), #t55) in #t55);
+  self::throws(() → self::Class* => self::Extension|method(let final self::Class* #t58 = c in #t58.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t58)));
+  self::throws(() → self::Class* => self::Extension|get#field(self::Extension|get#field(let final self::Class* #t59 = c in #t59.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t59))));
+  self::throws(() → self::Class* => let final self::Class* #t60 = new self::Class::•() in let final void #t61 = self::Extension|set#field(self::Extension|get#field(let final self::Class* #t62 = c in #t62.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t62)), #t60) in #t60);
+  self::throws(() → self::Class* => c = let final self::Class* #t63 = new self::Class::•() in let final void #t64 = self::Extension|set#field(self::Extension|get#field(let final self::Class* #t65 = c in #t65.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t65)), #t63) in #t63);
+  self::throws(() → self::Class* => self::Extension|method(self::Extension|get#field(let final self::Class* #t66 = c in #t66.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t66))));
+  let final self::Class* #t67 = c in #t67.{self::Class::==}(null) ?{self::Class*} null : self::Extension|set#field(#t67, self::Extension|get#field(self::Extension|get#field(new self::Class::•())));
+  c = let final self::Class* #t68 = c in #t68.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t69 = self::Extension|get#field(self::Extension|get#field(new self::Class::•())) in let final void #t70 = self::Extension|set#field(#t68, #t69) in #t69;
+  let final self::Class* #t71 = c in #t71.{self::Class::==}(null) ?{self::Class*} null : self::Extension|set#field(#t71, let final self::Class* #t72 = new self::Class::•() in let final void #t73 = self::Extension|set#field(self::Extension|get#field(new self::Class::•()), #t72) in #t72);
+  c = let final self::Class* #t74 = c in #t74.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t75 = let final self::Class* #t76 = new self::Class::•() in let final void #t77 = self::Extension|set#field(self::Extension|get#field(new self::Class::•()), #t76) in #t76 in let final void #t78 = self::Extension|set#field(#t74, #t75) in #t75;
+  let final self::Class* #t79 = c in #t79.{self::Class::==}(null) ?{self::Class*} null : self::Extension|set#field(#t79, self::Extension|method(self::Extension|get#field(new self::Class::•())));
+  c = let final self::Class* #t80 = c in #t80.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t81 = self::Extension|method(self::Extension|get#field(new self::Class::•())) in let final void #t82 = self::Extension|set#field(#t80, #t81) in #t81;
+  self::throws(() → self::Class* => self::Extension|get#field(self::Extension|get#field(let final self::Class* #t83 = c in #t83.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t83))));
+  self::throws(() → self::Class* => let final self::Class* #t84 = new self::Class::•() in let final void #t85 = self::Extension|set#field(self::Extension|get#field(let final self::Class* #t86 = c in #t86.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t86)), #t84) in #t84);
+  self::throws(() → self::Class* => self::Extension|method(self::Extension|get#field(let final self::Class* #t87 = c in #t87.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t87))));
+  self::throws(() → self::Class* => let final self::Class* #t88 = self::Extension|get#field(new self::Class::•()) in let final void #t89 = self::Extension|set#field(let final self::Class* #t90 = c in #t90.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t90), #t88) in #t88);
+  self::throws(() → self::Class* => c = let final self::Class* #t91 = self::Extension|get#field(new self::Class::•()) in let final void #t92 = self::Extension|set#field(let final self::Class* #t93 = c in #t93.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t93), #t91) in #t91);
+  self::throws(() → self::Class* => let final self::Class* #t94 = let final self::Class* #t95 = new self::Class::•() in let final void #t96 = self::Extension|set#field(new self::Class::•(), #t95) in #t95 in let final void #t97 = self::Extension|set#field(let final self::Class* #t98 = c in #t98.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t98), #t94) in #t94);
+  self::throws(() → self::Class* => c = let final self::Class* #t99 = let final self::Class* #t100 = new self::Class::•() in let final void #t101 = self::Extension|set#field(new self::Class::•(), #t100) in #t100 in let final void #t102 = self::Extension|set#field(let final self::Class* #t103 = c in #t103.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t103), #t99) in #t99);
+  self::throws(() → self::Class* => let final self::Class* #t104 = self::Extension|method(new self::Class::•()) in let final void #t105 = self::Extension|set#field(let final self::Class* #t106 = c in #t106.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t106), #t104) in #t104);
+  self::throws(() → self::Class* => c = let final self::Class* #t107 = self::Extension|method(new self::Class::•()) in let final void #t108 = self::Extension|set#field(let final self::Class* #t109 = c in #t109.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t109), #t107) in #t107);
+  let final self::Class* #t110 = c in #t110.{self::Class::==}(null) ?{self::Class*} null : self::Extension|set#field(#t110, let final self::Class* #t111 = self::Extension|get#field(new self::Class::•()) in let final void #t112 = self::Extension|set#field(new self::Class::•(), #t111) in #t111);
+  c = let final self::Class* #t113 = c in #t113.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t114 = let final self::Class* #t115 = self::Extension|get#field(new self::Class::•()) in let final void #t116 = self::Extension|set#field(new self::Class::•(), #t115) in #t115 in let final void #t117 = self::Extension|set#field(#t113, #t114) in #t114;
+  let final self::Class* #t118 = c in #t118.{self::Class::==}(null) ?{self::Class*} null : self::Extension|set#field(#t118, let final self::Class* #t119 = let final self::Class* #t120 = new self::Class::•() in let final void #t121 = self::Extension|set#field(new self::Class::•(), #t120) in #t120 in let final void #t122 = self::Extension|set#field(new self::Class::•(), #t119) in #t119);
+  c = let final self::Class* #t123 = c in #t123.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t124 = let final self::Class* #t125 = let final self::Class* #t126 = new self::Class::•() in let final void #t127 = self::Extension|set#field(new self::Class::•(), #t126) in #t126 in let final void #t128 = self::Extension|set#field(new self::Class::•(), #t125) in #t125 in let final void #t129 = self::Extension|set#field(#t123, #t124) in #t124;
+  let final self::Class* #t130 = c in #t130.{self::Class::==}(null) ?{self::Class*} null : self::Extension|set#field(#t130, let final self::Class* #t131 = self::Extension|method(new self::Class::•()) in let final void #t132 = self::Extension|set#field(new self::Class::•(), #t131) in #t131);
+  c = let final self::Class* #t133 = c in #t133.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t134 = let final self::Class* #t135 = self::Extension|method(new self::Class::•()) in let final void #t136 = self::Extension|set#field(new self::Class::•(), #t135) in #t135 in let final void #t137 = self::Extension|set#field(#t133, #t134) in #t134;
+  self::throws(() → self::Class* => let final self::Class* #t138 = self::Extension|get#field(new self::Class::•()) in let final void #t139 = self::Extension|set#field(let final self::Class* #t140 = c in #t140.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t140), #t138) in #t138);
+  self::throws(() → self::Class* => c = let final self::Class* #t141 = self::Extension|get#field(new self::Class::•()) in let final void #t142 = self::Extension|set#field(let final self::Class* #t143 = c in #t143.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t143), #t141) in #t141);
+  self::throws(() → self::Class* => let final self::Class* #t144 = let final self::Class* #t145 = new self::Class::•() in let final void #t146 = self::Extension|set#field(new self::Class::•(), #t145) in #t145 in let final void #t147 = self::Extension|set#field(let final self::Class* #t148 = c in #t148.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t148), #t144) in #t144);
+  self::throws(() → self::Class* => c = let final self::Class* #t149 = let final self::Class* #t150 = new self::Class::•() in let final void #t151 = self::Extension|set#field(new self::Class::•(), #t150) in #t150 in let final void #t152 = self::Extension|set#field(let final self::Class* #t153 = c in #t153.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t153), #t149) in #t149);
+  self::throws(() → self::Class* => let final self::Class* #t154 = self::Extension|method(new self::Class::•()) in let final void #t155 = self::Extension|set#field(let final self::Class* #t156 = c in #t156.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t156), #t154) in #t154);
+  self::throws(() → self::Class* => c = let final self::Class* #t157 = self::Extension|method(new self::Class::•()) in let final void #t158 = self::Extension|set#field(let final self::Class* #t159 = c in #t159.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t159), #t157) in #t157);
+  self::throws(() → self::Class* => self::Extension|get#field(self::Extension|method(let final self::Class* #t160 = c in #t160.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t160))));
+  self::throws(() → self::Class* => let final self::Class* #t161 = new self::Class::•() in let final void #t162 = self::Extension|set#field(self::Extension|method(let final self::Class* #t163 = c in #t163.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t163)), #t161) in #t161);
+  self::throws(() → self::Class* => c = let final self::Class* #t164 = new self::Class::•() in let final void #t165 = self::Extension|set#field(self::Extension|method(let final self::Class* #t166 = c in #t166.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t166)), #t164) in #t164);
+  self::throws(() → self::Class* => self::Extension|method(self::Extension|method(let final self::Class* #t167 = c in #t167.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t167))));
+  let final self::Class* #t168 = c in #t168.{self::Class::==}(null) ?{self::Class*} null : self::Extension|set#field(#t168, self::Extension|get#field(self::Extension|method(new self::Class::•())));
+  c = let final self::Class* #t169 = c in #t169.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t170 = self::Extension|get#field(self::Extension|method(new self::Class::•())) in let final void #t171 = self::Extension|set#field(#t169, #t170) in #t170;
+  let final self::Class* #t172 = c in #t172.{self::Class::==}(null) ?{self::Class*} null : self::Extension|set#field(#t172, let final self::Class* #t173 = new self::Class::•() in let final void #t174 = self::Extension|set#field(self::Extension|method(new self::Class::•()), #t173) in #t173);
+  c = let final self::Class* #t175 = c in #t175.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t176 = let final self::Class* #t177 = new self::Class::•() in let final void #t178 = self::Extension|set#field(self::Extension|method(new self::Class::•()), #t177) in #t177 in let final void #t179 = self::Extension|set#field(#t175, #t176) in #t176;
+  let final self::Class* #t180 = c in #t180.{self::Class::==}(null) ?{self::Class*} null : self::Extension|set#field(#t180, self::Extension|method(self::Extension|method(new self::Class::•())));
+  c = let final self::Class* #t181 = c in #t181.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t182 = self::Extension|method(self::Extension|method(new self::Class::•())) in let final void #t183 = self::Extension|set#field(#t181, #t182) in #t182;
+  self::throws(() → self::Class* => self::Extension|get#field(self::Extension|method(let final self::Class* #t184 = c in #t184.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t184))));
+  self::throws(() → self::Class* => let final self::Class* #t185 = new self::Class::•() in let final void #t186 = self::Extension|set#field(self::Extension|method(let final self::Class* #t187 = c in #t187.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t187)), #t185) in #t185);
+  self::throws(() → self::Class* => self::Extension|method(self::Extension|method(let final self::Class* #t188 = c in #t188.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t188))));
+  let final self::Class* #t189 = let final self::Class* #t190 = c in #t190.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t190) in #t189.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t189);
 }
 static method indexAccess(self::Class* c) → void {
-  self::throws(() → self::Class* => self::Extension|[](let final self::Class* #t191 = c in #t191.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t191), c));
-  self::throws(() → self::Class* => let final self::Class* #t192 = let final self::Class* #t193 = c in #t193.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t193) in let final self::Class* #t194 = c in let final self::Class* #t195 = new self::Class::•() in let final void #t196 = self::Extension|[]=(#t192, #t194, #t195) in #t195);
-  self::throws(() → self::Class* => c = let final self::Class* #t197 = let final self::Class* #t198 = c in #t198.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t198) in let final self::Class* #t199 = c in let final self::Class* #t200 = new self::Class::•() in let final void #t201 = self::Extension|[]=(#t197, #t199, #t200) in #t200);
-  self::throws(() → self::Class* => self::Extension|method(self::Extension|[](let final self::Class* #t202 = c in #t202.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t202), c)));
-  self::throws(() → self::Class* => let final self::Class* #t203 = let final self::Class* #t204 = c in #t204.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t204) in let final self::Class* #t205 = c in let final self::Class* #t206 = self::Extension|+(self::Extension|[](#t203, #t205), 0) in let final void #t207 = self::Extension|[]=(#t203, #t205, #t206) in #t206);
-  self::throws(() → self::Class* => c = let final self::Class* #t208 = let final self::Class* #t209 = c in #t209.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t209) in let final self::Class* #t210 = c in let final self::Class* #t211 = self::Extension|+(self::Extension|[](#t208, #t210), 0) in let final void #t212 = self::Extension|[]=(#t208, #t210, #t211) in #t211);
-  self::throws(() → self::Class* => let final self::Class* #t213 = let final self::Class* #t214 = c in #t214.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t214) in let final self::Class* #t215 = c in let final self::Class* #t216 = self::Extension|[](#t213, #t215) in let final void #t217 = self::Extension|[]=(#t213, #t215, self::Extension|+(#t216, 1)) in #t216);
-  self::throws(() → self::Class* => c = let final self::Class* #t218 = let final self::Class* #t219 = c in #t219.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t219) in let final self::Class* #t220 = c in let final self::Class* #t221 = self::Extension|[](#t218, #t220) in let final void #t222 = self::Extension|[]=(#t218, #t220, self::Extension|+(#t221, 1)) in #t221);
-  self::throws(() → self::Class* => let final self::Class* #t223 = let final self::Class* #t224 = c in #t224.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t224) in let final self::Class* #t225 = c in let final self::Class* #t226 = self::Extension|+(self::Extension|[](#t223, #t225), 1) in let final void #t227 = self::Extension|[]=(#t223, #t225, #t226) in #t226);
-  self::throws(() → self::Class* => c = let final self::Class* #t228 = let final self::Class* #t229 = c in #t229.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t229) in let final self::Class* #t230 = c in let final self::Class* #t231 = self::Extension|+(self::Extension|[](#t228, #t230), 1) in let final void #t232 = self::Extension|[]=(#t228, #t230, #t231) in #t231);
-  self::throws(() → self::Class* => self::Extension|[](self::Extension|[](let final self::Class* #t233 = c in #t233.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t233), c), c));
-  self::throws(() → self::Class* => let final self::Class* #t234 = self::Extension|[](let final self::Class* #t235 = c in #t235.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t235), c) in let final self::Class* #t236 = c in let final self::Class* #t237 = new self::Class::•() in let final void #t238 = self::Extension|[]=(#t234, #t236, #t237) in #t237);
-  self::throws(() → self::Class* => c = let final self::Class* #t239 = self::Extension|[](let final self::Class* #t240 = c in #t240.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t240), c) in let final self::Class* #t241 = c in let final self::Class* #t242 = new self::Class::•() in let final void #t243 = self::Extension|[]=(#t239, #t241, #t242) in #t242);
-  self::throws(() → self::Class* => self::Extension|method(self::Extension|[](self::Extension|[](let final self::Class* #t244 = c in #t244.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t244), c), c)));
-  self::throws(() → self::Class* => let final self::Class* #t245 = self::Extension|[](let final self::Class* #t246 = c in #t246.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t246), c) in let final self::Class* #t247 = c in let final self::Class* #t248 = self::Extension|+(self::Extension|[](#t245, #t247), 0) in let final void #t249 = self::Extension|[]=(#t245, #t247, #t248) in #t248);
-  self::throws(() → self::Class* => c = let final self::Class* #t250 = self::Extension|[](let final self::Class* #t251 = c in #t251.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t251), c) in let final self::Class* #t252 = c in let final self::Class* #t253 = self::Extension|+(self::Extension|[](#t250, #t252), 0) in let final void #t254 = self::Extension|[]=(#t250, #t252, #t253) in #t253);
-  self::throws(() → self::Class* => let final self::Class* #t255 = self::Extension|[](let final self::Class* #t256 = c in #t256.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t256), c) in let final self::Class* #t257 = c in let final self::Class* #t258 = self::Extension|[](#t255, #t257) in let final void #t259 = self::Extension|[]=(#t255, #t257, self::Extension|+(#t258, 1)) in #t258);
-  self::throws(() → self::Class* => c = let final self::Class* #t260 = self::Extension|[](let final self::Class* #t261 = c in #t261.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t261), c) in let final self::Class* #t262 = c in let final self::Class* #t263 = self::Extension|[](#t260, #t262) in let final void #t264 = self::Extension|[]=(#t260, #t262, self::Extension|+(#t263, 1)) in #t263);
-  self::throws(() → self::Class* => let final self::Class* #t265 = self::Extension|[](let final self::Class* #t266 = c in #t266.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t266), c) in let final self::Class* #t267 = c in let final self::Class* #t268 = self::Extension|+(self::Extension|[](#t265, #t267), 1) in let final void #t269 = self::Extension|[]=(#t265, #t267, #t268) in #t268);
-  self::throws(() → self::Class* => c = let final self::Class* #t270 = self::Extension|[](let final self::Class* #t271 = c in #t271.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t271), c) in let final self::Class* #t272 = c in let final self::Class* #t273 = self::Extension|+(self::Extension|[](#t270, #t272), 1) in let final void #t274 = self::Extension|[]=(#t270, #t272, #t273) in #t273);
+  self::throws(() → self::Class* => self::Extension|[](let final self::Class* #t191 = c in #t191.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t191), c));
+  self::throws(() → self::Class* => let final self::Class* #t192 = let final self::Class* #t193 = c in #t193.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t193) in let final self::Class* #t194 = c in let final self::Class* #t195 = new self::Class::•() in let final void #t196 = self::Extension|[]=(#t192, #t194, #t195) in #t195);
+  self::throws(() → self::Class* => c = let final self::Class* #t197 = let final self::Class* #t198 = c in #t198.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t198) in let final self::Class* #t199 = c in let final self::Class* #t200 = new self::Class::•() in let final void #t201 = self::Extension|[]=(#t197, #t199, #t200) in #t200);
+  self::throws(() → self::Class* => self::Extension|method(self::Extension|[](let final self::Class* #t202 = c in #t202.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t202), c)));
+  self::throws(() → self::Class* => let final self::Class* #t203 = let final self::Class* #t204 = c in #t204.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t204) in let final self::Class* #t205 = c in let final self::Class* #t206 = self::Extension|+(self::Extension|[](#t203, #t205), 0) in let final void #t207 = self::Extension|[]=(#t203, #t205, #t206) in #t206);
+  self::throws(() → self::Class* => c = let final self::Class* #t208 = let final self::Class* #t209 = c in #t209.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t209) in let final self::Class* #t210 = c in let final self::Class* #t211 = self::Extension|+(self::Extension|[](#t208, #t210), 0) in let final void #t212 = self::Extension|[]=(#t208, #t210, #t211) in #t211);
+  self::throws(() → self::Class* => let final self::Class* #t213 = let final self::Class* #t214 = c in #t214.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t214) in let final self::Class* #t215 = c in let final self::Class* #t216 = self::Extension|[](#t213, #t215) in let final void #t217 = self::Extension|[]=(#t213, #t215, self::Extension|+(#t216, 1)) in #t216);
+  self::throws(() → self::Class* => c = let final self::Class* #t218 = let final self::Class* #t219 = c in #t219.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t219) in let final self::Class* #t220 = c in let final self::Class* #t221 = self::Extension|[](#t218, #t220) in let final void #t222 = self::Extension|[]=(#t218, #t220, self::Extension|+(#t221, 1)) in #t221);
+  self::throws(() → self::Class* => let final self::Class* #t223 = let final self::Class* #t224 = c in #t224.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t224) in let final self::Class* #t225 = c in let final self::Class* #t226 = self::Extension|+(self::Extension|[](#t223, #t225), 1) in let final void #t227 = self::Extension|[]=(#t223, #t225, #t226) in #t226);
+  self::throws(() → self::Class* => c = let final self::Class* #t228 = let final self::Class* #t229 = c in #t229.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t229) in let final self::Class* #t230 = c in let final self::Class* #t231 = self::Extension|+(self::Extension|[](#t228, #t230), 1) in let final void #t232 = self::Extension|[]=(#t228, #t230, #t231) in #t231);
+  self::throws(() → self::Class* => self::Extension|[](self::Extension|[](let final self::Class* #t233 = c in #t233.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t233), c), c));
+  self::throws(() → self::Class* => let final self::Class* #t234 = self::Extension|[](let final self::Class* #t235 = c in #t235.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t235), c) in let final self::Class* #t236 = c in let final self::Class* #t237 = new self::Class::•() in let final void #t238 = self::Extension|[]=(#t234, #t236, #t237) in #t237);
+  self::throws(() → self::Class* => c = let final self::Class* #t239 = self::Extension|[](let final self::Class* #t240 = c in #t240.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t240), c) in let final self::Class* #t241 = c in let final self::Class* #t242 = new self::Class::•() in let final void #t243 = self::Extension|[]=(#t239, #t241, #t242) in #t242);
+  self::throws(() → self::Class* => self::Extension|method(self::Extension|[](self::Extension|[](let final self::Class* #t244 = c in #t244.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t244), c), c)));
+  self::throws(() → self::Class* => let final self::Class* #t245 = self::Extension|[](let final self::Class* #t246 = c in #t246.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t246), c) in let final self::Class* #t247 = c in let final self::Class* #t248 = self::Extension|+(self::Extension|[](#t245, #t247), 0) in let final void #t249 = self::Extension|[]=(#t245, #t247, #t248) in #t248);
+  self::throws(() → self::Class* => c = let final self::Class* #t250 = self::Extension|[](let final self::Class* #t251 = c in #t251.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t251), c) in let final self::Class* #t252 = c in let final self::Class* #t253 = self::Extension|+(self::Extension|[](#t250, #t252), 0) in let final void #t254 = self::Extension|[]=(#t250, #t252, #t253) in #t253);
+  self::throws(() → self::Class* => let final self::Class* #t255 = self::Extension|[](let final self::Class* #t256 = c in #t256.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t256), c) in let final self::Class* #t257 = c in let final self::Class* #t258 = self::Extension|[](#t255, #t257) in let final void #t259 = self::Extension|[]=(#t255, #t257, self::Extension|+(#t258, 1)) in #t258);
+  self::throws(() → self::Class* => c = let final self::Class* #t260 = self::Extension|[](let final self::Class* #t261 = c in #t261.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t261), c) in let final self::Class* #t262 = c in let final self::Class* #t263 = self::Extension|[](#t260, #t262) in let final void #t264 = self::Extension|[]=(#t260, #t262, self::Extension|+(#t263, 1)) in #t263);
+  self::throws(() → self::Class* => let final self::Class* #t265 = self::Extension|[](let final self::Class* #t266 = c in #t266.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t266), c) in let final self::Class* #t267 = c in let final self::Class* #t268 = self::Extension|+(self::Extension|[](#t265, #t267), 1) in let final void #t269 = self::Extension|[]=(#t265, #t267, #t268) in #t268);
+  self::throws(() → self::Class* => c = let final self::Class* #t270 = self::Extension|[](let final self::Class* #t271 = c in #t271.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t271), c) in let final self::Class* #t272 = c in let final self::Class* #t273 = self::Extension|+(self::Extension|[](#t270, #t272), 1) in let final void #t274 = self::Extension|[]=(#t270, #t272, #t273) in #t273);
 }
 static method operatorAccess(self::Class* c) → void {
-  self::throws(() → self::Class* => self::Extension|+(let final self::Class* #t275 = c in #t275.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t275), 0));
-  self::throws(() → self::Class* => self::Extension|unary-(let final self::Class* #t276 = c in #t276.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t276)));
-  let final self::Class* #t277 = c in #t277.{core::Object::==}(null) ?{self::Class*} null : self::Extension|set#field(#t277, self::Extension|+(self::Extension|get#field(#t277), 0));
-  c = let final self::Class* #t278 = c in #t278.{core::Object::==}(null) ?{self::Class*} null : let final self::Class* #t279 = self::Extension|+(self::Extension|get#field(#t278), 0) in let final void #t280 = self::Extension|set#field(#t278, #t279) in #t279;
-  self::throws(() → self::Class* => let final self::Class* #t281 = let final self::Class* #t282 = c in #t282.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t282) in let final self::Class* #t283 = self::Extension|+(self::Extension|get#field(#t281), 0) in let final void #t284 = self::Extension|set#field(#t281, #t283) in #t283);
-  self::throws(() → self::Class* => c = let final self::Class* #t285 = let final self::Class* #t286 = c in #t286.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t286) in let final self::Class* #t287 = self::Extension|+(self::Extension|get#field(#t285), 0) in let final void #t288 = self::Extension|set#field(#t285, #t287) in #t287);
-  let final self::Class* #t289 = c in #t289.{core::Object::==}(null) ?{self::Class*} null : self::Extension|set#field(#t289, self::Extension|+(self::Extension|get#field(#t289), 1));
-  c = let final self::Class* #t290 = c in #t290.{core::Object::==}(null) ?{self::Class*} null : let final self::Class* #t291 = self::Extension|get#field(#t290) in let final void #t292 = self::Extension|set#field(#t290, self::Extension|+(#t291, 1)) in #t291;
-  let final self::Class* #t293 = c in #t293.{core::Object::==}(null) ?{self::Class*} null : let final self::Class* #t294 = self::Extension|+(self::Extension|get#field(#t293), 1) in let final void #t295 = self::Extension|set#field(#t293, #t294) in #t294;
-  c = let final self::Class* #t296 = c in #t296.{core::Object::==}(null) ?{self::Class*} null : let final self::Class* #t297 = self::Extension|+(self::Extension|get#field(#t296), 1) in let final void #t298 = self::Extension|set#field(#t296, #t297) in #t297;
+  self::throws(() → self::Class* => self::Extension|+(let final self::Class* #t275 = c in #t275.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t275), 0));
+  self::throws(() → self::Class* => self::Extension|unary-(let final self::Class* #t276 = c in #t276.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t276)));
+  let final self::Class* #t277 = c in #t277.{self::Class::==}(null) ?{self::Class*} null : self::Extension|set#field(#t277, self::Extension|+(self::Extension|get#field(#t277), 0));
+  c = let final self::Class* #t278 = c in #t278.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t279 = self::Extension|+(self::Extension|get#field(#t278), 0) in let final void #t280 = self::Extension|set#field(#t278, #t279) in #t279;
+  self::throws(() → self::Class* => let final self::Class* #t281 = let final self::Class* #t282 = c in #t282.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t282) in let final self::Class* #t283 = self::Extension|+(self::Extension|get#field(#t281), 0) in let final void #t284 = self::Extension|set#field(#t281, #t283) in #t283);
+  self::throws(() → self::Class* => c = let final self::Class* #t285 = let final self::Class* #t286 = c in #t286.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t286) in let final self::Class* #t287 = self::Extension|+(self::Extension|get#field(#t285), 0) in let final void #t288 = self::Extension|set#field(#t285, #t287) in #t287);
+  let final self::Class* #t289 = c in #t289.{self::Class::==}(null) ?{self::Class*} null : self::Extension|set#field(#t289, self::Extension|+(self::Extension|get#field(#t289), 1));
+  c = let final self::Class* #t290 = c in #t290.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t291 = self::Extension|get#field(#t290) in let final void #t292 = self::Extension|set#field(#t290, self::Extension|+(#t291, 1)) in #t291;
+  let final self::Class* #t293 = c in #t293.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t294 = self::Extension|+(self::Extension|get#field(#t293), 1) in let final void #t295 = self::Extension|set#field(#t293, #t294) in #t294;
+  c = let final self::Class* #t296 = c in #t296.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t297 = self::Extension|+(self::Extension|get#field(#t296), 1) in let final void #t298 = self::Extension|set#field(#t296, #t297) in #t297;
 }
 static method ifNull(self::Class* c) → void {
-  let final self::Class* #t299 = c in #t299.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t299).{core::Object::==}(null) ?{self::Class*} self::Extension|set#field(#t299, c) : null;
-  c = let final self::Class* #t300 = c in #t300.{core::Object::==}(null) ?{self::Class*} null : let final self::Class* #t301 = self::Extension|get#field(#t300) in #t301.{core::Object::==}(null) ?{self::Class*} let final self::Class* #t302 = c in let final void #t303 = self::Extension|set#field(#t300, #t302) in #t302 : #t301;
-  self::throws(() → self::Class* => let final self::Class* #t304 = let final self::Class* #t305 = c in #t305.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t305) in let final self::Class* #t306 = self::Extension|get#field(#t304) in #t306.{core::Object::==}(null) ?{self::Class*} let final self::Class* #t307 = c in let final void #t308 = self::Extension|set#field(#t304, #t307) in #t307 : #t306);
-  self::throws(() → self::Class* => c = let final self::Class* #t309 = let final self::Class* #t310 = c in #t310.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t310) in let final self::Class* #t311 = self::Extension|get#field(#t309) in #t311.{core::Object::==}(null) ?{self::Class*} let final self::Class* #t312 = c in let final void #t313 = self::Extension|set#field(#t309, #t312) in #t312 : #t311);
-  self::throws(() → self::Class* => let final self::Class* #t314 = let final self::Class* #t315 = c in #t315.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t315) in let final self::Class* #t316 = c in let final self::Class* #t317 = self::Extension|[](#t314, #t316) in #t317.{core::Object::==}(null) ?{self::Class*} let final self::Class* #t318 = c in let final void #t319 = self::Extension|[]=(#t314, #t316, #t318) in #t318 : #t317);
-  self::throws(() → self::Class* => c = let final self::Class* #t320 = let final self::Class* #t321 = c in #t321.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t321) in let final self::Class* #t322 = c in let final self::Class* #t323 = self::Extension|[](#t320, #t322) in #t323.{core::Object::==}(null) ?{self::Class*} let final self::Class* #t324 = c in let final void #t325 = self::Extension|[]=(#t320, #t322, #t324) in #t324 : #t323);
+  let final self::Class* #t299 = c in #t299.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t299).{self::Class::==}(null) ?{self::Class*} self::Extension|set#field(#t299, c) : null;
+  c = let final self::Class* #t300 = c in #t300.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t301 = self::Extension|get#field(#t300) in #t301.{self::Class::==}(null) ?{self::Class*} let final self::Class* #t302 = c in let final void #t303 = self::Extension|set#field(#t300, #t302) in #t302 : #t301;
+  self::throws(() → self::Class* => let final self::Class* #t304 = let final self::Class* #t305 = c in #t305.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t305) in let final self::Class* #t306 = self::Extension|get#field(#t304) in #t306.{self::Class::==}(null) ?{self::Class*} let final self::Class* #t307 = c in let final void #t308 = self::Extension|set#field(#t304, #t307) in #t307 : #t306);
+  self::throws(() → self::Class* => c = let final self::Class* #t309 = let final self::Class* #t310 = c in #t310.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t310) in let final self::Class* #t311 = self::Extension|get#field(#t309) in #t311.{self::Class::==}(null) ?{self::Class*} let final self::Class* #t312 = c in let final void #t313 = self::Extension|set#field(#t309, #t312) in #t312 : #t311);
+  self::throws(() → self::Class* => let final self::Class* #t314 = let final self::Class* #t315 = c in #t315.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t315) in let final self::Class* #t316 = c in let final self::Class* #t317 = self::Extension|[](#t314, #t316) in #t317.{self::Class::==}(null) ?{self::Class*} let final self::Class* #t318 = c in let final void #t319 = self::Extension|[]=(#t314, #t316, #t318) in #t318 : #t317);
+  self::throws(() → self::Class* => c = let final self::Class* #t320 = let final self::Class* #t321 = c in #t321.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t321) in let final self::Class* #t322 = c in let final self::Class* #t323 = self::Extension|[](#t320, #t322) in #t323.{self::Class::==}(null) ?{self::Class*} let final self::Class* #t324 = c in let final void #t325 = self::Extension|[]=(#t320, #t322, #t324) in #t324 : #t323);
 }
 static method throws(() →* void f) → void {
   try {
diff --git a/pkg/front_end/testcases/nnbd/no_null_shorting_extension.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/no_null_shorting_extension.dart.weak.transformed.expect
index 71b2eef..0e1daa3 100644
--- a/pkg/front_end/testcases/nnbd/no_null_shorting_extension.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/no_null_shorting_extension.dart.weak.transformed.expect
@@ -7,6 +7,16 @@
   synthetic constructor •() → self::Class*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 extension Extension on self::Class* {
   get field = self::Extension|get#field;
@@ -43,119 +53,119 @@
   self::ifNull(null);
 }
 static method propertyAccess(self::Class* c) → void {
-  let final self::Class* #t1 = c in #t1.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t1);
-  let final self::Class* #t2 = c in #t2.{core::Object::==}(null) ?{self::Class*} null : self::Extension|set#field(#t2, new self::Class::•());
-  c = let final self::Class* #t3 = c in #t3.{core::Object::==}(null) ?{self::Class*} null : let final self::Class* #t4 = new self::Class::•() in let final void #t5 = self::Extension|set#field(#t3, #t4) in #t4;
-  let final self::Class* #t6 = c in #t6.{core::Object::==}(null) ?{self::Class*} null : self::Extension|method(#t6);
-  self::throws(() → self::Class* => self::Extension|get#field(let final self::Class* #t7 = c in #t7.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t7)));
-  let final self::Class* #t8 = let final self::Class* #t9 = c in #t9.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t9) in #t8.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t8);
-  self::throws(() → self::Class* => let final self::Class* #t10 = self::Extension|get#field(let final self::Class* #t11 = c in #t11.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t11)) in #t10.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t10));
-  self::throws(() → self::Class* => let final self::Class* #t12 = new self::Class::•() in let final void #t13 = self::Extension|set#field(let final self::Class* #t14 = c in #t14.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t14), #t12) in #t12);
-  let final self::Class* #t15 = let final self::Class* #t16 = c in #t16.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t16) in #t15.{core::Object::==}(null) ?{self::Class*} null : self::Extension|set#field(#t15, new self::Class::•());
-  self::throws(() → self::Class* => let final self::Class* #t17 = self::Extension|get#field(let final self::Class* #t18 = c in #t18.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t18)) in #t17.{core::Object::==}(null) ?{self::Class*} null : let final self::Class* #t19 = new self::Class::•() in let final void #t20 = self::Extension|set#field(#t17, #t19) in #t19);
-  self::throws(() → self::Class* => self::Extension|get#field(let final self::Class* #t21 = c in #t21.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t21)));
-  self::throws(() → self::Class* => self::Extension|get#field(let final self::Class* #t22 = c in #t22.{core::Object::==}(null) ?{self::Class*} null : let final self::Class* #t23 = new self::Class::•() in let final void #t24 = self::Extension|set#field(#t22, #t23) in #t23));
-  self::throws(() → self::Class* => self::Extension|get#field(let final self::Class* #t25 = c in #t25.{core::Object::==}(null) ?{self::Class*} null : self::Extension|method(#t25)));
-  self::throws(() → self::Class* => c = let final self::Class* #t26 = new self::Class::•() in let final void #t27 = self::Extension|set#field(let final self::Class* #t28 = c in #t28.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t28), #t26) in #t26);
-  c = let final self::Class* #t29 = let final self::Class* #t30 = c in #t30.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t30) in #t29.{core::Object::==}(null) ?{self::Class*} null : let final self::Class* #t31 = new self::Class::•() in let final void #t32 = self::Extension|set#field(#t29, #t31) in #t31;
-  self::throws(() → self::Class* => c = let final self::Class* #t33 = self::Extension|get#field(let final self::Class* #t34 = c in #t34.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t34)) in #t33.{core::Object::==}(null) ?{self::Class*} null : let final self::Class* #t35 = new self::Class::•() in let final void #t36 = self::Extension|set#field(#t33, #t35) in #t35);
-  self::throws(() → self::Class* => self::Extension|method(let final self::Class* #t37 = c in #t37.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t37)));
-  let final self::Class* #t38 = c in #t38.{core::Object::==}(null) ?{self::Class*} null : self::Extension|set#field(#t38, self::Extension|get#field(new self::Class::•()));
-  c = let final self::Class* #t39 = c in #t39.{core::Object::==}(null) ?{self::Class*} null : let final self::Class* #t40 = self::Extension|get#field(new self::Class::•()) in let final void #t41 = self::Extension|set#field(#t39, #t40) in #t40;
-  let final self::Class* #t42 = c in #t42.{core::Object::==}(null) ?{self::Class*} null : self::Extension|set#field(#t42, let final self::Class* #t43 = new self::Class::•() in let final void #t44 = self::Extension|set#field(new self::Class::•(), #t43) in #t43);
-  c = let final self::Class* #t45 = c in #t45.{core::Object::==}(null) ?{self::Class*} null : let final self::Class* #t46 = let final self::Class* #t47 = new self::Class::•() in let final void #t48 = self::Extension|set#field(new self::Class::•(), #t47) in #t47 in let final void #t49 = self::Extension|set#field(#t45, #t46) in #t46;
-  let final self::Class* #t50 = c in #t50.{core::Object::==}(null) ?{self::Class*} null : self::Extension|set#field(#t50, self::Extension|method(new self::Class::•()));
-  c = let final self::Class* #t51 = c in #t51.{core::Object::==}(null) ?{self::Class*} null : let final self::Class* #t52 = self::Extension|method(new self::Class::•()) in let final void #t53 = self::Extension|set#field(#t51, #t52) in #t52;
-  self::throws(() → self::Class* => self::Extension|get#field(let final self::Class* #t54 = c in #t54.{core::Object::==}(null) ?{self::Class*} null : self::Extension|method(#t54)));
-  self::throws(() → self::Class* => let final self::Class* #t55 = new self::Class::•() in let final void #t56 = self::Extension|set#field(let final self::Class* #t57 = c in #t57.{core::Object::==}(null) ?{self::Class*} null : self::Extension|method(#t57), #t55) in #t55);
-  self::throws(() → self::Class* => self::Extension|method(let final self::Class* #t58 = c in #t58.{core::Object::==}(null) ?{self::Class*} null : self::Extension|method(#t58)));
-  self::throws(() → self::Class* => self::Extension|get#field(self::Extension|get#field(let final self::Class* #t59 = c in #t59.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t59))));
-  self::throws(() → self::Class* => let final self::Class* #t60 = new self::Class::•() in let final void #t61 = self::Extension|set#field(self::Extension|get#field(let final self::Class* #t62 = c in #t62.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t62)), #t60) in #t60);
-  self::throws(() → self::Class* => c = let final self::Class* #t63 = new self::Class::•() in let final void #t64 = self::Extension|set#field(self::Extension|get#field(let final self::Class* #t65 = c in #t65.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t65)), #t63) in #t63);
-  self::throws(() → self::Class* => self::Extension|method(self::Extension|get#field(let final self::Class* #t66 = c in #t66.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t66))));
-  let final self::Class* #t67 = c in #t67.{core::Object::==}(null) ?{self::Class*} null : self::Extension|set#field(#t67, self::Extension|get#field(self::Extension|get#field(new self::Class::•())));
-  c = let final self::Class* #t68 = c in #t68.{core::Object::==}(null) ?{self::Class*} null : let final self::Class* #t69 = self::Extension|get#field(self::Extension|get#field(new self::Class::•())) in let final void #t70 = self::Extension|set#field(#t68, #t69) in #t69;
-  let final self::Class* #t71 = c in #t71.{core::Object::==}(null) ?{self::Class*} null : self::Extension|set#field(#t71, let final self::Class* #t72 = new self::Class::•() in let final void #t73 = self::Extension|set#field(self::Extension|get#field(new self::Class::•()), #t72) in #t72);
-  c = let final self::Class* #t74 = c in #t74.{core::Object::==}(null) ?{self::Class*} null : let final self::Class* #t75 = let final self::Class* #t76 = new self::Class::•() in let final void #t77 = self::Extension|set#field(self::Extension|get#field(new self::Class::•()), #t76) in #t76 in let final void #t78 = self::Extension|set#field(#t74, #t75) in #t75;
-  let final self::Class* #t79 = c in #t79.{core::Object::==}(null) ?{self::Class*} null : self::Extension|set#field(#t79, self::Extension|method(self::Extension|get#field(new self::Class::•())));
-  c = let final self::Class* #t80 = c in #t80.{core::Object::==}(null) ?{self::Class*} null : let final self::Class* #t81 = self::Extension|method(self::Extension|get#field(new self::Class::•())) in let final void #t82 = self::Extension|set#field(#t80, #t81) in #t81;
-  self::throws(() → self::Class* => self::Extension|get#field(self::Extension|get#field(let final self::Class* #t83 = c in #t83.{core::Object::==}(null) ?{self::Class*} null : self::Extension|method(#t83))));
-  self::throws(() → self::Class* => let final self::Class* #t84 = new self::Class::•() in let final void #t85 = self::Extension|set#field(self::Extension|get#field(let final self::Class* #t86 = c in #t86.{core::Object::==}(null) ?{self::Class*} null : self::Extension|method(#t86)), #t84) in #t84);
-  self::throws(() → self::Class* => self::Extension|method(self::Extension|get#field(let final self::Class* #t87 = c in #t87.{core::Object::==}(null) ?{self::Class*} null : self::Extension|method(#t87))));
-  self::throws(() → self::Class* => let final self::Class* #t88 = self::Extension|get#field(new self::Class::•()) in let final void #t89 = self::Extension|set#field(let final self::Class* #t90 = c in #t90.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t90), #t88) in #t88);
-  self::throws(() → self::Class* => c = let final self::Class* #t91 = self::Extension|get#field(new self::Class::•()) in let final void #t92 = self::Extension|set#field(let final self::Class* #t93 = c in #t93.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t93), #t91) in #t91);
-  self::throws(() → self::Class* => let final self::Class* #t94 = let final self::Class* #t95 = new self::Class::•() in let final void #t96 = self::Extension|set#field(new self::Class::•(), #t95) in #t95 in let final void #t97 = self::Extension|set#field(let final self::Class* #t98 = c in #t98.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t98), #t94) in #t94);
-  self::throws(() → self::Class* => c = let final self::Class* #t99 = let final self::Class* #t100 = new self::Class::•() in let final void #t101 = self::Extension|set#field(new self::Class::•(), #t100) in #t100 in let final void #t102 = self::Extension|set#field(let final self::Class* #t103 = c in #t103.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t103), #t99) in #t99);
-  self::throws(() → self::Class* => let final self::Class* #t104 = self::Extension|method(new self::Class::•()) in let final void #t105 = self::Extension|set#field(let final self::Class* #t106 = c in #t106.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t106), #t104) in #t104);
-  self::throws(() → self::Class* => c = let final self::Class* #t107 = self::Extension|method(new self::Class::•()) in let final void #t108 = self::Extension|set#field(let final self::Class* #t109 = c in #t109.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t109), #t107) in #t107);
-  let final self::Class* #t110 = c in #t110.{core::Object::==}(null) ?{self::Class*} null : self::Extension|set#field(#t110, let final self::Class* #t111 = self::Extension|get#field(new self::Class::•()) in let final void #t112 = self::Extension|set#field(new self::Class::•(), #t111) in #t111);
-  c = let final self::Class* #t113 = c in #t113.{core::Object::==}(null) ?{self::Class*} null : let final self::Class* #t114 = let final self::Class* #t115 = self::Extension|get#field(new self::Class::•()) in let final void #t116 = self::Extension|set#field(new self::Class::•(), #t115) in #t115 in let final void #t117 = self::Extension|set#field(#t113, #t114) in #t114;
-  let final self::Class* #t118 = c in #t118.{core::Object::==}(null) ?{self::Class*} null : self::Extension|set#field(#t118, let final self::Class* #t119 = let final self::Class* #t120 = new self::Class::•() in let final void #t121 = self::Extension|set#field(new self::Class::•(), #t120) in #t120 in let final void #t122 = self::Extension|set#field(new self::Class::•(), #t119) in #t119);
-  c = let final self::Class* #t123 = c in #t123.{core::Object::==}(null) ?{self::Class*} null : let final self::Class* #t124 = let final self::Class* #t125 = let final self::Class* #t126 = new self::Class::•() in let final void #t127 = self::Extension|set#field(new self::Class::•(), #t126) in #t126 in let final void #t128 = self::Extension|set#field(new self::Class::•(), #t125) in #t125 in let final void #t129 = self::Extension|set#field(#t123, #t124) in #t124;
-  let final self::Class* #t130 = c in #t130.{core::Object::==}(null) ?{self::Class*} null : self::Extension|set#field(#t130, let final self::Class* #t131 = self::Extension|method(new self::Class::•()) in let final void #t132 = self::Extension|set#field(new self::Class::•(), #t131) in #t131);
-  c = let final self::Class* #t133 = c in #t133.{core::Object::==}(null) ?{self::Class*} null : let final self::Class* #t134 = let final self::Class* #t135 = self::Extension|method(new self::Class::•()) in let final void #t136 = self::Extension|set#field(new self::Class::•(), #t135) in #t135 in let final void #t137 = self::Extension|set#field(#t133, #t134) in #t134;
-  self::throws(() → self::Class* => let final self::Class* #t138 = self::Extension|get#field(new self::Class::•()) in let final void #t139 = self::Extension|set#field(let final self::Class* #t140 = c in #t140.{core::Object::==}(null) ?{self::Class*} null : self::Extension|method(#t140), #t138) in #t138);
-  self::throws(() → self::Class* => c = let final self::Class* #t141 = self::Extension|get#field(new self::Class::•()) in let final void #t142 = self::Extension|set#field(let final self::Class* #t143 = c in #t143.{core::Object::==}(null) ?{self::Class*} null : self::Extension|method(#t143), #t141) in #t141);
-  self::throws(() → self::Class* => let final self::Class* #t144 = let final self::Class* #t145 = new self::Class::•() in let final void #t146 = self::Extension|set#field(new self::Class::•(), #t145) in #t145 in let final void #t147 = self::Extension|set#field(let final self::Class* #t148 = c in #t148.{core::Object::==}(null) ?{self::Class*} null : self::Extension|method(#t148), #t144) in #t144);
-  self::throws(() → self::Class* => c = let final self::Class* #t149 = let final self::Class* #t150 = new self::Class::•() in let final void #t151 = self::Extension|set#field(new self::Class::•(), #t150) in #t150 in let final void #t152 = self::Extension|set#field(let final self::Class* #t153 = c in #t153.{core::Object::==}(null) ?{self::Class*} null : self::Extension|method(#t153), #t149) in #t149);
-  self::throws(() → self::Class* => let final self::Class* #t154 = self::Extension|method(new self::Class::•()) in let final void #t155 = self::Extension|set#field(let final self::Class* #t156 = c in #t156.{core::Object::==}(null) ?{self::Class*} null : self::Extension|method(#t156), #t154) in #t154);
-  self::throws(() → self::Class* => c = let final self::Class* #t157 = self::Extension|method(new self::Class::•()) in let final void #t158 = self::Extension|set#field(let final self::Class* #t159 = c in #t159.{core::Object::==}(null) ?{self::Class*} null : self::Extension|method(#t159), #t157) in #t157);
-  self::throws(() → self::Class* => self::Extension|get#field(self::Extension|method(let final self::Class* #t160 = c in #t160.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t160))));
-  self::throws(() → self::Class* => let final self::Class* #t161 = new self::Class::•() in let final void #t162 = self::Extension|set#field(self::Extension|method(let final self::Class* #t163 = c in #t163.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t163)), #t161) in #t161);
-  self::throws(() → self::Class* => c = let final self::Class* #t164 = new self::Class::•() in let final void #t165 = self::Extension|set#field(self::Extension|method(let final self::Class* #t166 = c in #t166.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t166)), #t164) in #t164);
-  self::throws(() → self::Class* => self::Extension|method(self::Extension|method(let final self::Class* #t167 = c in #t167.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t167))));
-  let final self::Class* #t168 = c in #t168.{core::Object::==}(null) ?{self::Class*} null : self::Extension|set#field(#t168, self::Extension|get#field(self::Extension|method(new self::Class::•())));
-  c = let final self::Class* #t169 = c in #t169.{core::Object::==}(null) ?{self::Class*} null : let final self::Class* #t170 = self::Extension|get#field(self::Extension|method(new self::Class::•())) in let final void #t171 = self::Extension|set#field(#t169, #t170) in #t170;
-  let final self::Class* #t172 = c in #t172.{core::Object::==}(null) ?{self::Class*} null : self::Extension|set#field(#t172, let final self::Class* #t173 = new self::Class::•() in let final void #t174 = self::Extension|set#field(self::Extension|method(new self::Class::•()), #t173) in #t173);
-  c = let final self::Class* #t175 = c in #t175.{core::Object::==}(null) ?{self::Class*} null : let final self::Class* #t176 = let final self::Class* #t177 = new self::Class::•() in let final void #t178 = self::Extension|set#field(self::Extension|method(new self::Class::•()), #t177) in #t177 in let final void #t179 = self::Extension|set#field(#t175, #t176) in #t176;
-  let final self::Class* #t180 = c in #t180.{core::Object::==}(null) ?{self::Class*} null : self::Extension|set#field(#t180, self::Extension|method(self::Extension|method(new self::Class::•())));
-  c = let final self::Class* #t181 = c in #t181.{core::Object::==}(null) ?{self::Class*} null : let final self::Class* #t182 = self::Extension|method(self::Extension|method(new self::Class::•())) in let final void #t183 = self::Extension|set#field(#t181, #t182) in #t182;
-  self::throws(() → self::Class* => self::Extension|get#field(self::Extension|method(let final self::Class* #t184 = c in #t184.{core::Object::==}(null) ?{self::Class*} null : self::Extension|method(#t184))));
-  self::throws(() → self::Class* => let final self::Class* #t185 = new self::Class::•() in let final void #t186 = self::Extension|set#field(self::Extension|method(let final self::Class* #t187 = c in #t187.{core::Object::==}(null) ?{self::Class*} null : self::Extension|method(#t187)), #t185) in #t185);
-  self::throws(() → self::Class* => self::Extension|method(self::Extension|method(let final self::Class* #t188 = c in #t188.{core::Object::==}(null) ?{self::Class*} null : self::Extension|method(#t188))));
-  let final self::Class* #t189 = let final self::Class* #t190 = c in #t190.{core::Object::==}(null) ?{self::Class*} null : self::Extension|method(#t190) in #t189.{core::Object::==}(null) ?{self::Class*} null : self::Extension|method(#t189);
+  let final self::Class* #t1 = c in #t1.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t1);
+  let final self::Class* #t2 = c in #t2.{self::Class::==}(null) ?{self::Class*} null : self::Extension|set#field(#t2, new self::Class::•());
+  c = let final self::Class* #t3 = c in #t3.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t4 = new self::Class::•() in let final void #t5 = self::Extension|set#field(#t3, #t4) in #t4;
+  let final self::Class* #t6 = c in #t6.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t6);
+  self::throws(() → self::Class* => self::Extension|get#field(let final self::Class* #t7 = c in #t7.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t7)));
+  let final self::Class* #t8 = let final self::Class* #t9 = c in #t9.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t9) in #t8.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t8);
+  self::throws(() → self::Class* => let final self::Class* #t10 = self::Extension|get#field(let final self::Class* #t11 = c in #t11.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t11)) in #t10.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t10));
+  self::throws(() → self::Class* => let final self::Class* #t12 = new self::Class::•() in let final void #t13 = self::Extension|set#field(let final self::Class* #t14 = c in #t14.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t14), #t12) in #t12);
+  let final self::Class* #t15 = let final self::Class* #t16 = c in #t16.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t16) in #t15.{self::Class::==}(null) ?{self::Class*} null : self::Extension|set#field(#t15, new self::Class::•());
+  self::throws(() → self::Class* => let final self::Class* #t17 = self::Extension|get#field(let final self::Class* #t18 = c in #t18.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t18)) in #t17.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t19 = new self::Class::•() in let final void #t20 = self::Extension|set#field(#t17, #t19) in #t19);
+  self::throws(() → self::Class* => self::Extension|get#field(let final self::Class* #t21 = c in #t21.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t21)));
+  self::throws(() → self::Class* => self::Extension|get#field(let final self::Class* #t22 = c in #t22.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t23 = new self::Class::•() in let final void #t24 = self::Extension|set#field(#t22, #t23) in #t23));
+  self::throws(() → self::Class* => self::Extension|get#field(let final self::Class* #t25 = c in #t25.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t25)));
+  self::throws(() → self::Class* => c = let final self::Class* #t26 = new self::Class::•() in let final void #t27 = self::Extension|set#field(let final self::Class* #t28 = c in #t28.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t28), #t26) in #t26);
+  c = let final self::Class* #t29 = let final self::Class* #t30 = c in #t30.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t30) in #t29.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t31 = new self::Class::•() in let final void #t32 = self::Extension|set#field(#t29, #t31) in #t31;
+  self::throws(() → self::Class* => c = let final self::Class* #t33 = self::Extension|get#field(let final self::Class* #t34 = c in #t34.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t34)) in #t33.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t35 = new self::Class::•() in let final void #t36 = self::Extension|set#field(#t33, #t35) in #t35);
+  self::throws(() → self::Class* => self::Extension|method(let final self::Class* #t37 = c in #t37.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t37)));
+  let final self::Class* #t38 = c in #t38.{self::Class::==}(null) ?{self::Class*} null : self::Extension|set#field(#t38, self::Extension|get#field(new self::Class::•()));
+  c = let final self::Class* #t39 = c in #t39.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t40 = self::Extension|get#field(new self::Class::•()) in let final void #t41 = self::Extension|set#field(#t39, #t40) in #t40;
+  let final self::Class* #t42 = c in #t42.{self::Class::==}(null) ?{self::Class*} null : self::Extension|set#field(#t42, let final self::Class* #t43 = new self::Class::•() in let final void #t44 = self::Extension|set#field(new self::Class::•(), #t43) in #t43);
+  c = let final self::Class* #t45 = c in #t45.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t46 = let final self::Class* #t47 = new self::Class::•() in let final void #t48 = self::Extension|set#field(new self::Class::•(), #t47) in #t47 in let final void #t49 = self::Extension|set#field(#t45, #t46) in #t46;
+  let final self::Class* #t50 = c in #t50.{self::Class::==}(null) ?{self::Class*} null : self::Extension|set#field(#t50, self::Extension|method(new self::Class::•()));
+  c = let final self::Class* #t51 = c in #t51.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t52 = self::Extension|method(new self::Class::•()) in let final void #t53 = self::Extension|set#field(#t51, #t52) in #t52;
+  self::throws(() → self::Class* => self::Extension|get#field(let final self::Class* #t54 = c in #t54.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t54)));
+  self::throws(() → self::Class* => let final self::Class* #t55 = new self::Class::•() in let final void #t56 = self::Extension|set#field(let final self::Class* #t57 = c in #t57.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t57), #t55) in #t55);
+  self::throws(() → self::Class* => self::Extension|method(let final self::Class* #t58 = c in #t58.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t58)));
+  self::throws(() → self::Class* => self::Extension|get#field(self::Extension|get#field(let final self::Class* #t59 = c in #t59.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t59))));
+  self::throws(() → self::Class* => let final self::Class* #t60 = new self::Class::•() in let final void #t61 = self::Extension|set#field(self::Extension|get#field(let final self::Class* #t62 = c in #t62.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t62)), #t60) in #t60);
+  self::throws(() → self::Class* => c = let final self::Class* #t63 = new self::Class::•() in let final void #t64 = self::Extension|set#field(self::Extension|get#field(let final self::Class* #t65 = c in #t65.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t65)), #t63) in #t63);
+  self::throws(() → self::Class* => self::Extension|method(self::Extension|get#field(let final self::Class* #t66 = c in #t66.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t66))));
+  let final self::Class* #t67 = c in #t67.{self::Class::==}(null) ?{self::Class*} null : self::Extension|set#field(#t67, self::Extension|get#field(self::Extension|get#field(new self::Class::•())));
+  c = let final self::Class* #t68 = c in #t68.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t69 = self::Extension|get#field(self::Extension|get#field(new self::Class::•())) in let final void #t70 = self::Extension|set#field(#t68, #t69) in #t69;
+  let final self::Class* #t71 = c in #t71.{self::Class::==}(null) ?{self::Class*} null : self::Extension|set#field(#t71, let final self::Class* #t72 = new self::Class::•() in let final void #t73 = self::Extension|set#field(self::Extension|get#field(new self::Class::•()), #t72) in #t72);
+  c = let final self::Class* #t74 = c in #t74.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t75 = let final self::Class* #t76 = new self::Class::•() in let final void #t77 = self::Extension|set#field(self::Extension|get#field(new self::Class::•()), #t76) in #t76 in let final void #t78 = self::Extension|set#field(#t74, #t75) in #t75;
+  let final self::Class* #t79 = c in #t79.{self::Class::==}(null) ?{self::Class*} null : self::Extension|set#field(#t79, self::Extension|method(self::Extension|get#field(new self::Class::•())));
+  c = let final self::Class* #t80 = c in #t80.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t81 = self::Extension|method(self::Extension|get#field(new self::Class::•())) in let final void #t82 = self::Extension|set#field(#t80, #t81) in #t81;
+  self::throws(() → self::Class* => self::Extension|get#field(self::Extension|get#field(let final self::Class* #t83 = c in #t83.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t83))));
+  self::throws(() → self::Class* => let final self::Class* #t84 = new self::Class::•() in let final void #t85 = self::Extension|set#field(self::Extension|get#field(let final self::Class* #t86 = c in #t86.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t86)), #t84) in #t84);
+  self::throws(() → self::Class* => self::Extension|method(self::Extension|get#field(let final self::Class* #t87 = c in #t87.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t87))));
+  self::throws(() → self::Class* => let final self::Class* #t88 = self::Extension|get#field(new self::Class::•()) in let final void #t89 = self::Extension|set#field(let final self::Class* #t90 = c in #t90.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t90), #t88) in #t88);
+  self::throws(() → self::Class* => c = let final self::Class* #t91 = self::Extension|get#field(new self::Class::•()) in let final void #t92 = self::Extension|set#field(let final self::Class* #t93 = c in #t93.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t93), #t91) in #t91);
+  self::throws(() → self::Class* => let final self::Class* #t94 = let final self::Class* #t95 = new self::Class::•() in let final void #t96 = self::Extension|set#field(new self::Class::•(), #t95) in #t95 in let final void #t97 = self::Extension|set#field(let final self::Class* #t98 = c in #t98.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t98), #t94) in #t94);
+  self::throws(() → self::Class* => c = let final self::Class* #t99 = let final self::Class* #t100 = new self::Class::•() in let final void #t101 = self::Extension|set#field(new self::Class::•(), #t100) in #t100 in let final void #t102 = self::Extension|set#field(let final self::Class* #t103 = c in #t103.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t103), #t99) in #t99);
+  self::throws(() → self::Class* => let final self::Class* #t104 = self::Extension|method(new self::Class::•()) in let final void #t105 = self::Extension|set#field(let final self::Class* #t106 = c in #t106.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t106), #t104) in #t104);
+  self::throws(() → self::Class* => c = let final self::Class* #t107 = self::Extension|method(new self::Class::•()) in let final void #t108 = self::Extension|set#field(let final self::Class* #t109 = c in #t109.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t109), #t107) in #t107);
+  let final self::Class* #t110 = c in #t110.{self::Class::==}(null) ?{self::Class*} null : self::Extension|set#field(#t110, let final self::Class* #t111 = self::Extension|get#field(new self::Class::•()) in let final void #t112 = self::Extension|set#field(new self::Class::•(), #t111) in #t111);
+  c = let final self::Class* #t113 = c in #t113.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t114 = let final self::Class* #t115 = self::Extension|get#field(new self::Class::•()) in let final void #t116 = self::Extension|set#field(new self::Class::•(), #t115) in #t115 in let final void #t117 = self::Extension|set#field(#t113, #t114) in #t114;
+  let final self::Class* #t118 = c in #t118.{self::Class::==}(null) ?{self::Class*} null : self::Extension|set#field(#t118, let final self::Class* #t119 = let final self::Class* #t120 = new self::Class::•() in let final void #t121 = self::Extension|set#field(new self::Class::•(), #t120) in #t120 in let final void #t122 = self::Extension|set#field(new self::Class::•(), #t119) in #t119);
+  c = let final self::Class* #t123 = c in #t123.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t124 = let final self::Class* #t125 = let final self::Class* #t126 = new self::Class::•() in let final void #t127 = self::Extension|set#field(new self::Class::•(), #t126) in #t126 in let final void #t128 = self::Extension|set#field(new self::Class::•(), #t125) in #t125 in let final void #t129 = self::Extension|set#field(#t123, #t124) in #t124;
+  let final self::Class* #t130 = c in #t130.{self::Class::==}(null) ?{self::Class*} null : self::Extension|set#field(#t130, let final self::Class* #t131 = self::Extension|method(new self::Class::•()) in let final void #t132 = self::Extension|set#field(new self::Class::•(), #t131) in #t131);
+  c = let final self::Class* #t133 = c in #t133.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t134 = let final self::Class* #t135 = self::Extension|method(new self::Class::•()) in let final void #t136 = self::Extension|set#field(new self::Class::•(), #t135) in #t135 in let final void #t137 = self::Extension|set#field(#t133, #t134) in #t134;
+  self::throws(() → self::Class* => let final self::Class* #t138 = self::Extension|get#field(new self::Class::•()) in let final void #t139 = self::Extension|set#field(let final self::Class* #t140 = c in #t140.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t140), #t138) in #t138);
+  self::throws(() → self::Class* => c = let final self::Class* #t141 = self::Extension|get#field(new self::Class::•()) in let final void #t142 = self::Extension|set#field(let final self::Class* #t143 = c in #t143.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t143), #t141) in #t141);
+  self::throws(() → self::Class* => let final self::Class* #t144 = let final self::Class* #t145 = new self::Class::•() in let final void #t146 = self::Extension|set#field(new self::Class::•(), #t145) in #t145 in let final void #t147 = self::Extension|set#field(let final self::Class* #t148 = c in #t148.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t148), #t144) in #t144);
+  self::throws(() → self::Class* => c = let final self::Class* #t149 = let final self::Class* #t150 = new self::Class::•() in let final void #t151 = self::Extension|set#field(new self::Class::•(), #t150) in #t150 in let final void #t152 = self::Extension|set#field(let final self::Class* #t153 = c in #t153.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t153), #t149) in #t149);
+  self::throws(() → self::Class* => let final self::Class* #t154 = self::Extension|method(new self::Class::•()) in let final void #t155 = self::Extension|set#field(let final self::Class* #t156 = c in #t156.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t156), #t154) in #t154);
+  self::throws(() → self::Class* => c = let final self::Class* #t157 = self::Extension|method(new self::Class::•()) in let final void #t158 = self::Extension|set#field(let final self::Class* #t159 = c in #t159.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t159), #t157) in #t157);
+  self::throws(() → self::Class* => self::Extension|get#field(self::Extension|method(let final self::Class* #t160 = c in #t160.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t160))));
+  self::throws(() → self::Class* => let final self::Class* #t161 = new self::Class::•() in let final void #t162 = self::Extension|set#field(self::Extension|method(let final self::Class* #t163 = c in #t163.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t163)), #t161) in #t161);
+  self::throws(() → self::Class* => c = let final self::Class* #t164 = new self::Class::•() in let final void #t165 = self::Extension|set#field(self::Extension|method(let final self::Class* #t166 = c in #t166.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t166)), #t164) in #t164);
+  self::throws(() → self::Class* => self::Extension|method(self::Extension|method(let final self::Class* #t167 = c in #t167.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t167))));
+  let final self::Class* #t168 = c in #t168.{self::Class::==}(null) ?{self::Class*} null : self::Extension|set#field(#t168, self::Extension|get#field(self::Extension|method(new self::Class::•())));
+  c = let final self::Class* #t169 = c in #t169.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t170 = self::Extension|get#field(self::Extension|method(new self::Class::•())) in let final void #t171 = self::Extension|set#field(#t169, #t170) in #t170;
+  let final self::Class* #t172 = c in #t172.{self::Class::==}(null) ?{self::Class*} null : self::Extension|set#field(#t172, let final self::Class* #t173 = new self::Class::•() in let final void #t174 = self::Extension|set#field(self::Extension|method(new self::Class::•()), #t173) in #t173);
+  c = let final self::Class* #t175 = c in #t175.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t176 = let final self::Class* #t177 = new self::Class::•() in let final void #t178 = self::Extension|set#field(self::Extension|method(new self::Class::•()), #t177) in #t177 in let final void #t179 = self::Extension|set#field(#t175, #t176) in #t176;
+  let final self::Class* #t180 = c in #t180.{self::Class::==}(null) ?{self::Class*} null : self::Extension|set#field(#t180, self::Extension|method(self::Extension|method(new self::Class::•())));
+  c = let final self::Class* #t181 = c in #t181.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t182 = self::Extension|method(self::Extension|method(new self::Class::•())) in let final void #t183 = self::Extension|set#field(#t181, #t182) in #t182;
+  self::throws(() → self::Class* => self::Extension|get#field(self::Extension|method(let final self::Class* #t184 = c in #t184.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t184))));
+  self::throws(() → self::Class* => let final self::Class* #t185 = new self::Class::•() in let final void #t186 = self::Extension|set#field(self::Extension|method(let final self::Class* #t187 = c in #t187.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t187)), #t185) in #t185);
+  self::throws(() → self::Class* => self::Extension|method(self::Extension|method(let final self::Class* #t188 = c in #t188.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t188))));
+  let final self::Class* #t189 = let final self::Class* #t190 = c in #t190.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t190) in #t189.{self::Class::==}(null) ?{self::Class*} null : self::Extension|method(#t189);
 }
 static method indexAccess(self::Class* c) → void {
-  self::throws(() → self::Class* => self::Extension|[](let final self::Class* #t191 = c in #t191.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t191), c));
-  self::throws(() → self::Class* => let final self::Class* #t192 = let final self::Class* #t193 = c in #t193.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t193) in let final self::Class* #t194 = c in let final self::Class* #t195 = new self::Class::•() in let final void #t196 = self::Extension|[]=(#t192, #t194, #t195) in #t195);
-  self::throws(() → self::Class* => c = let final self::Class* #t197 = let final self::Class* #t198 = c in #t198.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t198) in let final self::Class* #t199 = c in let final self::Class* #t200 = new self::Class::•() in let final void #t201 = self::Extension|[]=(#t197, #t199, #t200) in #t200);
-  self::throws(() → self::Class* => self::Extension|method(self::Extension|[](let final self::Class* #t202 = c in #t202.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t202), c)));
-  self::throws(() → self::Class* => let final self::Class* #t203 = let final self::Class* #t204 = c in #t204.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t204) in let final self::Class* #t205 = c in let final self::Class* #t206 = self::Extension|+(self::Extension|[](#t203, #t205), 0) in let final void #t207 = self::Extension|[]=(#t203, #t205, #t206) in #t206);
-  self::throws(() → self::Class* => c = let final self::Class* #t208 = let final self::Class* #t209 = c in #t209.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t209) in let final self::Class* #t210 = c in let final self::Class* #t211 = self::Extension|+(self::Extension|[](#t208, #t210), 0) in let final void #t212 = self::Extension|[]=(#t208, #t210, #t211) in #t211);
-  self::throws(() → self::Class* => let final self::Class* #t213 = let final self::Class* #t214 = c in #t214.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t214) in let final self::Class* #t215 = c in let final self::Class* #t216 = self::Extension|[](#t213, #t215) in let final void #t217 = self::Extension|[]=(#t213, #t215, self::Extension|+(#t216, 1)) in #t216);
-  self::throws(() → self::Class* => c = let final self::Class* #t218 = let final self::Class* #t219 = c in #t219.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t219) in let final self::Class* #t220 = c in let final self::Class* #t221 = self::Extension|[](#t218, #t220) in let final void #t222 = self::Extension|[]=(#t218, #t220, self::Extension|+(#t221, 1)) in #t221);
-  self::throws(() → self::Class* => let final self::Class* #t223 = let final self::Class* #t224 = c in #t224.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t224) in let final self::Class* #t225 = c in let final self::Class* #t226 = self::Extension|+(self::Extension|[](#t223, #t225), 1) in let final void #t227 = self::Extension|[]=(#t223, #t225, #t226) in #t226);
-  self::throws(() → self::Class* => c = let final self::Class* #t228 = let final self::Class* #t229 = c in #t229.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t229) in let final self::Class* #t230 = c in let final self::Class* #t231 = self::Extension|+(self::Extension|[](#t228, #t230), 1) in let final void #t232 = self::Extension|[]=(#t228, #t230, #t231) in #t231);
-  self::throws(() → self::Class* => self::Extension|[](self::Extension|[](let final self::Class* #t233 = c in #t233.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t233), c), c));
-  self::throws(() → self::Class* => let final self::Class* #t234 = self::Extension|[](let final self::Class* #t235 = c in #t235.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t235), c) in let final self::Class* #t236 = c in let final self::Class* #t237 = new self::Class::•() in let final void #t238 = self::Extension|[]=(#t234, #t236, #t237) in #t237);
-  self::throws(() → self::Class* => c = let final self::Class* #t239 = self::Extension|[](let final self::Class* #t240 = c in #t240.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t240), c) in let final self::Class* #t241 = c in let final self::Class* #t242 = new self::Class::•() in let final void #t243 = self::Extension|[]=(#t239, #t241, #t242) in #t242);
-  self::throws(() → self::Class* => self::Extension|method(self::Extension|[](self::Extension|[](let final self::Class* #t244 = c in #t244.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t244), c), c)));
-  self::throws(() → self::Class* => let final self::Class* #t245 = self::Extension|[](let final self::Class* #t246 = c in #t246.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t246), c) in let final self::Class* #t247 = c in let final self::Class* #t248 = self::Extension|+(self::Extension|[](#t245, #t247), 0) in let final void #t249 = self::Extension|[]=(#t245, #t247, #t248) in #t248);
-  self::throws(() → self::Class* => c = let final self::Class* #t250 = self::Extension|[](let final self::Class* #t251 = c in #t251.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t251), c) in let final self::Class* #t252 = c in let final self::Class* #t253 = self::Extension|+(self::Extension|[](#t250, #t252), 0) in let final void #t254 = self::Extension|[]=(#t250, #t252, #t253) in #t253);
-  self::throws(() → self::Class* => let final self::Class* #t255 = self::Extension|[](let final self::Class* #t256 = c in #t256.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t256), c) in let final self::Class* #t257 = c in let final self::Class* #t258 = self::Extension|[](#t255, #t257) in let final void #t259 = self::Extension|[]=(#t255, #t257, self::Extension|+(#t258, 1)) in #t258);
-  self::throws(() → self::Class* => c = let final self::Class* #t260 = self::Extension|[](let final self::Class* #t261 = c in #t261.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t261), c) in let final self::Class* #t262 = c in let final self::Class* #t263 = self::Extension|[](#t260, #t262) in let final void #t264 = self::Extension|[]=(#t260, #t262, self::Extension|+(#t263, 1)) in #t263);
-  self::throws(() → self::Class* => let final self::Class* #t265 = self::Extension|[](let final self::Class* #t266 = c in #t266.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t266), c) in let final self::Class* #t267 = c in let final self::Class* #t268 = self::Extension|+(self::Extension|[](#t265, #t267), 1) in let final void #t269 = self::Extension|[]=(#t265, #t267, #t268) in #t268);
-  self::throws(() → self::Class* => c = let final self::Class* #t270 = self::Extension|[](let final self::Class* #t271 = c in #t271.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t271), c) in let final self::Class* #t272 = c in let final self::Class* #t273 = self::Extension|+(self::Extension|[](#t270, #t272), 1) in let final void #t274 = self::Extension|[]=(#t270, #t272, #t273) in #t273);
+  self::throws(() → self::Class* => self::Extension|[](let final self::Class* #t191 = c in #t191.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t191), c));
+  self::throws(() → self::Class* => let final self::Class* #t192 = let final self::Class* #t193 = c in #t193.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t193) in let final self::Class* #t194 = c in let final self::Class* #t195 = new self::Class::•() in let final void #t196 = self::Extension|[]=(#t192, #t194, #t195) in #t195);
+  self::throws(() → self::Class* => c = let final self::Class* #t197 = let final self::Class* #t198 = c in #t198.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t198) in let final self::Class* #t199 = c in let final self::Class* #t200 = new self::Class::•() in let final void #t201 = self::Extension|[]=(#t197, #t199, #t200) in #t200);
+  self::throws(() → self::Class* => self::Extension|method(self::Extension|[](let final self::Class* #t202 = c in #t202.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t202), c)));
+  self::throws(() → self::Class* => let final self::Class* #t203 = let final self::Class* #t204 = c in #t204.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t204) in let final self::Class* #t205 = c in let final self::Class* #t206 = self::Extension|+(self::Extension|[](#t203, #t205), 0) in let final void #t207 = self::Extension|[]=(#t203, #t205, #t206) in #t206);
+  self::throws(() → self::Class* => c = let final self::Class* #t208 = let final self::Class* #t209 = c in #t209.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t209) in let final self::Class* #t210 = c in let final self::Class* #t211 = self::Extension|+(self::Extension|[](#t208, #t210), 0) in let final void #t212 = self::Extension|[]=(#t208, #t210, #t211) in #t211);
+  self::throws(() → self::Class* => let final self::Class* #t213 = let final self::Class* #t214 = c in #t214.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t214) in let final self::Class* #t215 = c in let final self::Class* #t216 = self::Extension|[](#t213, #t215) in let final void #t217 = self::Extension|[]=(#t213, #t215, self::Extension|+(#t216, 1)) in #t216);
+  self::throws(() → self::Class* => c = let final self::Class* #t218 = let final self::Class* #t219 = c in #t219.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t219) in let final self::Class* #t220 = c in let final self::Class* #t221 = self::Extension|[](#t218, #t220) in let final void #t222 = self::Extension|[]=(#t218, #t220, self::Extension|+(#t221, 1)) in #t221);
+  self::throws(() → self::Class* => let final self::Class* #t223 = let final self::Class* #t224 = c in #t224.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t224) in let final self::Class* #t225 = c in let final self::Class* #t226 = self::Extension|+(self::Extension|[](#t223, #t225), 1) in let final void #t227 = self::Extension|[]=(#t223, #t225, #t226) in #t226);
+  self::throws(() → self::Class* => c = let final self::Class* #t228 = let final self::Class* #t229 = c in #t229.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t229) in let final self::Class* #t230 = c in let final self::Class* #t231 = self::Extension|+(self::Extension|[](#t228, #t230), 1) in let final void #t232 = self::Extension|[]=(#t228, #t230, #t231) in #t231);
+  self::throws(() → self::Class* => self::Extension|[](self::Extension|[](let final self::Class* #t233 = c in #t233.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t233), c), c));
+  self::throws(() → self::Class* => let final self::Class* #t234 = self::Extension|[](let final self::Class* #t235 = c in #t235.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t235), c) in let final self::Class* #t236 = c in let final self::Class* #t237 = new self::Class::•() in let final void #t238 = self::Extension|[]=(#t234, #t236, #t237) in #t237);
+  self::throws(() → self::Class* => c = let final self::Class* #t239 = self::Extension|[](let final self::Class* #t240 = c in #t240.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t240), c) in let final self::Class* #t241 = c in let final self::Class* #t242 = new self::Class::•() in let final void #t243 = self::Extension|[]=(#t239, #t241, #t242) in #t242);
+  self::throws(() → self::Class* => self::Extension|method(self::Extension|[](self::Extension|[](let final self::Class* #t244 = c in #t244.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t244), c), c)));
+  self::throws(() → self::Class* => let final self::Class* #t245 = self::Extension|[](let final self::Class* #t246 = c in #t246.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t246), c) in let final self::Class* #t247 = c in let final self::Class* #t248 = self::Extension|+(self::Extension|[](#t245, #t247), 0) in let final void #t249 = self::Extension|[]=(#t245, #t247, #t248) in #t248);
+  self::throws(() → self::Class* => c = let final self::Class* #t250 = self::Extension|[](let final self::Class* #t251 = c in #t251.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t251), c) in let final self::Class* #t252 = c in let final self::Class* #t253 = self::Extension|+(self::Extension|[](#t250, #t252), 0) in let final void #t254 = self::Extension|[]=(#t250, #t252, #t253) in #t253);
+  self::throws(() → self::Class* => let final self::Class* #t255 = self::Extension|[](let final self::Class* #t256 = c in #t256.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t256), c) in let final self::Class* #t257 = c in let final self::Class* #t258 = self::Extension|[](#t255, #t257) in let final void #t259 = self::Extension|[]=(#t255, #t257, self::Extension|+(#t258, 1)) in #t258);
+  self::throws(() → self::Class* => c = let final self::Class* #t260 = self::Extension|[](let final self::Class* #t261 = c in #t261.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t261), c) in let final self::Class* #t262 = c in let final self::Class* #t263 = self::Extension|[](#t260, #t262) in let final void #t264 = self::Extension|[]=(#t260, #t262, self::Extension|+(#t263, 1)) in #t263);
+  self::throws(() → self::Class* => let final self::Class* #t265 = self::Extension|[](let final self::Class* #t266 = c in #t266.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t266), c) in let final self::Class* #t267 = c in let final self::Class* #t268 = self::Extension|+(self::Extension|[](#t265, #t267), 1) in let final void #t269 = self::Extension|[]=(#t265, #t267, #t268) in #t268);
+  self::throws(() → self::Class* => c = let final self::Class* #t270 = self::Extension|[](let final self::Class* #t271 = c in #t271.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t271), c) in let final self::Class* #t272 = c in let final self::Class* #t273 = self::Extension|+(self::Extension|[](#t270, #t272), 1) in let final void #t274 = self::Extension|[]=(#t270, #t272, #t273) in #t273);
 }
 static method operatorAccess(self::Class* c) → void {
-  self::throws(() → self::Class* => self::Extension|+(let final self::Class* #t275 = c in #t275.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t275), 0));
-  self::throws(() → self::Class* => self::Extension|unary-(let final self::Class* #t276 = c in #t276.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t276)));
-  let final self::Class* #t277 = c in #t277.{core::Object::==}(null) ?{self::Class*} null : self::Extension|set#field(#t277, self::Extension|+(self::Extension|get#field(#t277), 0));
-  c = let final self::Class* #t278 = c in #t278.{core::Object::==}(null) ?{self::Class*} null : let final self::Class* #t279 = self::Extension|+(self::Extension|get#field(#t278), 0) in let final void #t280 = self::Extension|set#field(#t278, #t279) in #t279;
-  self::throws(() → self::Class* => let final self::Class* #t281 = let final self::Class* #t282 = c in #t282.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t282) in let final self::Class* #t283 = self::Extension|+(self::Extension|get#field(#t281), 0) in let final void #t284 = self::Extension|set#field(#t281, #t283) in #t283);
-  self::throws(() → self::Class* => c = let final self::Class* #t285 = let final self::Class* #t286 = c in #t286.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t286) in let final self::Class* #t287 = self::Extension|+(self::Extension|get#field(#t285), 0) in let final void #t288 = self::Extension|set#field(#t285, #t287) in #t287);
-  let final self::Class* #t289 = c in #t289.{core::Object::==}(null) ?{self::Class*} null : self::Extension|set#field(#t289, self::Extension|+(self::Extension|get#field(#t289), 1));
-  c = let final self::Class* #t290 = c in #t290.{core::Object::==}(null) ?{self::Class*} null : let final self::Class* #t291 = self::Extension|get#field(#t290) in let final void #t292 = self::Extension|set#field(#t290, self::Extension|+(#t291, 1)) in #t291;
-  let final self::Class* #t293 = c in #t293.{core::Object::==}(null) ?{self::Class*} null : let final self::Class* #t294 = self::Extension|+(self::Extension|get#field(#t293), 1) in let final void #t295 = self::Extension|set#field(#t293, #t294) in #t294;
-  c = let final self::Class* #t296 = c in #t296.{core::Object::==}(null) ?{self::Class*} null : let final self::Class* #t297 = self::Extension|+(self::Extension|get#field(#t296), 1) in let final void #t298 = self::Extension|set#field(#t296, #t297) in #t297;
+  self::throws(() → self::Class* => self::Extension|+(let final self::Class* #t275 = c in #t275.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t275), 0));
+  self::throws(() → self::Class* => self::Extension|unary-(let final self::Class* #t276 = c in #t276.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t276)));
+  let final self::Class* #t277 = c in #t277.{self::Class::==}(null) ?{self::Class*} null : self::Extension|set#field(#t277, self::Extension|+(self::Extension|get#field(#t277), 0));
+  c = let final self::Class* #t278 = c in #t278.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t279 = self::Extension|+(self::Extension|get#field(#t278), 0) in let final void #t280 = self::Extension|set#field(#t278, #t279) in #t279;
+  self::throws(() → self::Class* => let final self::Class* #t281 = let final self::Class* #t282 = c in #t282.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t282) in let final self::Class* #t283 = self::Extension|+(self::Extension|get#field(#t281), 0) in let final void #t284 = self::Extension|set#field(#t281, #t283) in #t283);
+  self::throws(() → self::Class* => c = let final self::Class* #t285 = let final self::Class* #t286 = c in #t286.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t286) in let final self::Class* #t287 = self::Extension|+(self::Extension|get#field(#t285), 0) in let final void #t288 = self::Extension|set#field(#t285, #t287) in #t287);
+  let final self::Class* #t289 = c in #t289.{self::Class::==}(null) ?{self::Class*} null : self::Extension|set#field(#t289, self::Extension|+(self::Extension|get#field(#t289), 1));
+  c = let final self::Class* #t290 = c in #t290.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t291 = self::Extension|get#field(#t290) in let final void #t292 = self::Extension|set#field(#t290, self::Extension|+(#t291, 1)) in #t291;
+  let final self::Class* #t293 = c in #t293.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t294 = self::Extension|+(self::Extension|get#field(#t293), 1) in let final void #t295 = self::Extension|set#field(#t293, #t294) in #t294;
+  c = let final self::Class* #t296 = c in #t296.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t297 = self::Extension|+(self::Extension|get#field(#t296), 1) in let final void #t298 = self::Extension|set#field(#t296, #t297) in #t297;
 }
 static method ifNull(self::Class* c) → void {
-  let final self::Class* #t299 = c in #t299.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t299).{core::Object::==}(null) ?{self::Class*} self::Extension|set#field(#t299, c) : null;
-  c = let final self::Class* #t300 = c in #t300.{core::Object::==}(null) ?{self::Class*} null : let final self::Class* #t301 = self::Extension|get#field(#t300) in #t301.{core::Object::==}(null) ?{self::Class*} let final self::Class* #t302 = c in let final void #t303 = self::Extension|set#field(#t300, #t302) in #t302 : #t301;
-  self::throws(() → self::Class* => let final self::Class* #t304 = let final self::Class* #t305 = c in #t305.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t305) in let final self::Class* #t306 = self::Extension|get#field(#t304) in #t306.{core::Object::==}(null) ?{self::Class*} let final self::Class* #t307 = c in let final void #t308 = self::Extension|set#field(#t304, #t307) in #t307 : #t306);
-  self::throws(() → self::Class* => c = let final self::Class* #t309 = let final self::Class* #t310 = c in #t310.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t310) in let final self::Class* #t311 = self::Extension|get#field(#t309) in #t311.{core::Object::==}(null) ?{self::Class*} let final self::Class* #t312 = c in let final void #t313 = self::Extension|set#field(#t309, #t312) in #t312 : #t311);
-  self::throws(() → self::Class* => let final self::Class* #t314 = let final self::Class* #t315 = c in #t315.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t315) in let final self::Class* #t316 = c in let final self::Class* #t317 = self::Extension|[](#t314, #t316) in #t317.{core::Object::==}(null) ?{self::Class*} let final self::Class* #t318 = c in let final void #t319 = self::Extension|[]=(#t314, #t316, #t318) in #t318 : #t317);
-  self::throws(() → self::Class* => c = let final self::Class* #t320 = let final self::Class* #t321 = c in #t321.{core::Object::==}(null) ?{self::Class*} null : self::Extension|get#field(#t321) in let final self::Class* #t322 = c in let final self::Class* #t323 = self::Extension|[](#t320, #t322) in #t323.{core::Object::==}(null) ?{self::Class*} let final self::Class* #t324 = c in let final void #t325 = self::Extension|[]=(#t320, #t322, #t324) in #t324 : #t323);
+  let final self::Class* #t299 = c in #t299.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t299).{self::Class::==}(null) ?{self::Class*} self::Extension|set#field(#t299, c) : null;
+  c = let final self::Class* #t300 = c in #t300.{self::Class::==}(null) ?{self::Class*} null : let final self::Class* #t301 = self::Extension|get#field(#t300) in #t301.{self::Class::==}(null) ?{self::Class*} let final self::Class* #t302 = c in let final void #t303 = self::Extension|set#field(#t300, #t302) in #t302 : #t301;
+  self::throws(() → self::Class* => let final self::Class* #t304 = let final self::Class* #t305 = c in #t305.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t305) in let final self::Class* #t306 = self::Extension|get#field(#t304) in #t306.{self::Class::==}(null) ?{self::Class*} let final self::Class* #t307 = c in let final void #t308 = self::Extension|set#field(#t304, #t307) in #t307 : #t306);
+  self::throws(() → self::Class* => c = let final self::Class* #t309 = let final self::Class* #t310 = c in #t310.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t310) in let final self::Class* #t311 = self::Extension|get#field(#t309) in #t311.{self::Class::==}(null) ?{self::Class*} let final self::Class* #t312 = c in let final void #t313 = self::Extension|set#field(#t309, #t312) in #t312 : #t311);
+  self::throws(() → self::Class* => let final self::Class* #t314 = let final self::Class* #t315 = c in #t315.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t315) in let final self::Class* #t316 = c in let final self::Class* #t317 = self::Extension|[](#t314, #t316) in #t317.{self::Class::==}(null) ?{self::Class*} let final self::Class* #t318 = c in let final void #t319 = self::Extension|[]=(#t314, #t316, #t318) in #t318 : #t317);
+  self::throws(() → self::Class* => c = let final self::Class* #t320 = let final self::Class* #t321 = c in #t321.{self::Class::==}(null) ?{self::Class*} null : self::Extension|get#field(#t321) in let final self::Class* #t322 = c in let final self::Class* #t323 = self::Extension|[](#t320, #t322) in #t323.{self::Class::==}(null) ?{self::Class*} let final self::Class* #t324 = c in let final void #t325 = self::Extension|[]=(#t320, #t322, #t324) in #t324 : #t323);
 }
 static method throws(() →* void f) → void {
   try {
diff --git a/pkg/front_end/testcases/nnbd/nsm_from_opt_in.dart.outline.expect b/pkg/front_end/testcases/nnbd/nsm_from_opt_in.dart.outline.expect
index aff6f51..b1de82c 100644
--- a/pkg/front_end/testcases/nnbd/nsm_from_opt_in.dart.outline.expect
+++ b/pkg/front_end/testcases/nnbd/nsm_from_opt_in.dart.outline.expect
@@ -11,6 +11,15 @@
   @core::override
   method noSuchMethod(core::Invocation* invocation) → dynamic
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
   abstract member-signature method method(core::int* i) → core::int*;
   abstract member-signature method genericMethod1<T extends core::Object* = dynamic>(self::A2::genericMethod1::T* t) → self::A2::genericMethod1::T*;
   abstract member-signature method genericMethod2<T extends core::Object* = core::Object*>(self::A2::genericMethod2::T* t) → self::A2::genericMethod2::T*;
@@ -26,6 +35,15 @@
   abstract member-signature method genericMethod1<T extends core::Object* = dynamic>(self::B2::genericMethod1::T* t) → self::B2::genericMethod1::T*;
   abstract member-signature method genericMethod2<T extends core::Object* = core::Object*>(self::B2::genericMethod2::T* t) → self::B2::genericMethod2::T*;
   abstract member-signature method genericMethod3<T extends core::Object* = core::Object*>(self::B2::genericMethod3::T* t) → self::B2::genericMethod3::T*;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class C2 extends core::Object {
   synthetic constructor •() → self::C2*
@@ -34,6 +52,16 @@
   abstract method genericMethod1<T extends core::Object* = dynamic>(self::C2::genericMethod1::T* t) → self::C2::genericMethod1::T*;
   abstract method genericMethod2<T extends core::Object* = core::Object*>(self::C2::genericMethod2::T* t) → self::C2::genericMethod2::T*;
   abstract method genericMethod3<T extends core::Object* = core::Object*>(self::C2::genericMethod3::T* t) → self::C2::genericMethod3::T*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/nnbd/nsm_from_opt_in.dart.strong.expect b/pkg/front_end/testcases/nnbd/nsm_from_opt_in.dart.strong.expect
index b04ccd6..298b93f 100644
--- a/pkg/front_end/testcases/nnbd/nsm_from_opt_in.dart.strong.expect
+++ b/pkg/front_end/testcases/nnbd/nsm_from_opt_in.dart.strong.expect
@@ -13,6 +13,15 @@
   method noSuchMethod(core::Invocation* invocation) → dynamic {
     return super.{core::Object::noSuchMethod}(invocation);
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
   abstract member-signature method method(core::int* i) → core::int*;
   abstract member-signature method genericMethod1<T extends core::Object* = dynamic>(self::A2::genericMethod1::T* t) → self::A2::genericMethod1::T*;
   abstract member-signature method genericMethod2<T extends core::Object* = core::Object*>(self::A2::genericMethod2::T* t) → self::A2::genericMethod2::T*;
@@ -30,6 +39,15 @@
   abstract member-signature method genericMethod1<T extends core::Object* = dynamic>(self::B2::genericMethod1::T* t) → self::B2::genericMethod1::T*;
   abstract member-signature method genericMethod2<T extends core::Object* = core::Object*>(self::B2::genericMethod2::T* t) → self::B2::genericMethod2::T*;
   abstract member-signature method genericMethod3<T extends core::Object* = core::Object*>(self::B2::genericMethod3::T* t) → self::B2::genericMethod3::T*;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class C2 extends core::Object {
   synthetic constructor •() → self::C2*
@@ -39,6 +57,16 @@
   abstract method genericMethod1<T extends core::Object* = dynamic>(self::C2::genericMethod1::T* t) → self::C2::genericMethod1::T*;
   abstract method genericMethod2<T extends core::Object* = core::Object*>(self::C2::genericMethod2::T* t) → self::C2::genericMethod2::T*;
   abstract method genericMethod3<T extends core::Object* = core::Object*>(self::C2::genericMethod3::T* t) → self::C2::genericMethod3::T*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
 
diff --git a/pkg/front_end/testcases/nnbd/nsm_from_opt_in.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/nsm_from_opt_in.dart.strong.transformed.expect
index b04ccd6..298b93f 100644
--- a/pkg/front_end/testcases/nnbd/nsm_from_opt_in.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/nsm_from_opt_in.dart.strong.transformed.expect
@@ -13,6 +13,15 @@
   method noSuchMethod(core::Invocation* invocation) → dynamic {
     return super.{core::Object::noSuchMethod}(invocation);
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
   abstract member-signature method method(core::int* i) → core::int*;
   abstract member-signature method genericMethod1<T extends core::Object* = dynamic>(self::A2::genericMethod1::T* t) → self::A2::genericMethod1::T*;
   abstract member-signature method genericMethod2<T extends core::Object* = core::Object*>(self::A2::genericMethod2::T* t) → self::A2::genericMethod2::T*;
@@ -30,6 +39,15 @@
   abstract member-signature method genericMethod1<T extends core::Object* = dynamic>(self::B2::genericMethod1::T* t) → self::B2::genericMethod1::T*;
   abstract member-signature method genericMethod2<T extends core::Object* = core::Object*>(self::B2::genericMethod2::T* t) → self::B2::genericMethod2::T*;
   abstract member-signature method genericMethod3<T extends core::Object* = core::Object*>(self::B2::genericMethod3::T* t) → self::B2::genericMethod3::T*;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class C2 extends core::Object {
   synthetic constructor •() → self::C2*
@@ -39,6 +57,16 @@
   abstract method genericMethod1<T extends core::Object* = dynamic>(self::C2::genericMethod1::T* t) → self::C2::genericMethod1::T*;
   abstract method genericMethod2<T extends core::Object* = core::Object*>(self::C2::genericMethod2::T* t) → self::C2::genericMethod2::T*;
   abstract method genericMethod3<T extends core::Object* = core::Object*>(self::C2::genericMethod3::T* t) → self::C2::genericMethod3::T*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
 
diff --git a/pkg/front_end/testcases/nnbd/nsm_from_opt_in.dart.weak.expect b/pkg/front_end/testcases/nnbd/nsm_from_opt_in.dart.weak.expect
index b04ccd6..298b93f 100644
--- a/pkg/front_end/testcases/nnbd/nsm_from_opt_in.dart.weak.expect
+++ b/pkg/front_end/testcases/nnbd/nsm_from_opt_in.dart.weak.expect
@@ -13,6 +13,15 @@
   method noSuchMethod(core::Invocation* invocation) → dynamic {
     return super.{core::Object::noSuchMethod}(invocation);
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
   abstract member-signature method method(core::int* i) → core::int*;
   abstract member-signature method genericMethod1<T extends core::Object* = dynamic>(self::A2::genericMethod1::T* t) → self::A2::genericMethod1::T*;
   abstract member-signature method genericMethod2<T extends core::Object* = core::Object*>(self::A2::genericMethod2::T* t) → self::A2::genericMethod2::T*;
@@ -30,6 +39,15 @@
   abstract member-signature method genericMethod1<T extends core::Object* = dynamic>(self::B2::genericMethod1::T* t) → self::B2::genericMethod1::T*;
   abstract member-signature method genericMethod2<T extends core::Object* = core::Object*>(self::B2::genericMethod2::T* t) → self::B2::genericMethod2::T*;
   abstract member-signature method genericMethod3<T extends core::Object* = core::Object*>(self::B2::genericMethod3::T* t) → self::B2::genericMethod3::T*;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class C2 extends core::Object {
   synthetic constructor •() → self::C2*
@@ -39,6 +57,16 @@
   abstract method genericMethod1<T extends core::Object* = dynamic>(self::C2::genericMethod1::T* t) → self::C2::genericMethod1::T*;
   abstract method genericMethod2<T extends core::Object* = core::Object*>(self::C2::genericMethod2::T* t) → self::C2::genericMethod2::T*;
   abstract method genericMethod3<T extends core::Object* = core::Object*>(self::C2::genericMethod3::T* t) → self::C2::genericMethod3::T*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
 
diff --git a/pkg/front_end/testcases/nnbd/nsm_from_opt_in.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/nsm_from_opt_in.dart.weak.transformed.expect
index b04ccd6..298b93f 100644
--- a/pkg/front_end/testcases/nnbd/nsm_from_opt_in.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/nsm_from_opt_in.dart.weak.transformed.expect
@@ -13,6 +13,15 @@
   method noSuchMethod(core::Invocation* invocation) → dynamic {
     return super.{core::Object::noSuchMethod}(invocation);
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
   abstract member-signature method method(core::int* i) → core::int*;
   abstract member-signature method genericMethod1<T extends core::Object* = dynamic>(self::A2::genericMethod1::T* t) → self::A2::genericMethod1::T*;
   abstract member-signature method genericMethod2<T extends core::Object* = core::Object*>(self::A2::genericMethod2::T* t) → self::A2::genericMethod2::T*;
@@ -30,6 +39,15 @@
   abstract member-signature method genericMethod1<T extends core::Object* = dynamic>(self::B2::genericMethod1::T* t) → self::B2::genericMethod1::T*;
   abstract member-signature method genericMethod2<T extends core::Object* = core::Object*>(self::B2::genericMethod2::T* t) → self::B2::genericMethod2::T*;
   abstract member-signature method genericMethod3<T extends core::Object* = core::Object*>(self::B2::genericMethod3::T* t) → self::B2::genericMethod3::T*;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class C2 extends core::Object {
   synthetic constructor •() → self::C2*
@@ -39,6 +57,16 @@
   abstract method genericMethod1<T extends core::Object* = dynamic>(self::C2::genericMethod1::T* t) → self::C2::genericMethod1::T*;
   abstract method genericMethod2<T extends core::Object* = core::Object*>(self::C2::genericMethod2::T* t) → self::C2::genericMethod2::T*;
   abstract method genericMethod3<T extends core::Object* = core::Object*>(self::C2::genericMethod3::T* t) → self::C2::genericMethod3::T*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
 
diff --git a/pkg/front_end/testcases/nnbd/nullable_param.dart.strong.expect b/pkg/front_end/testcases/nnbd/nullable_param.dart.strong.expect
index 9ab6069..701d5d6 100644
--- a/pkg/front_end/testcases/nnbd/nullable_param.dart.strong.expect
+++ b/pkg/front_end/testcases/nnbd/nullable_param.dart.strong.expect
@@ -16,7 +16,7 @@
   self::test_nullable_function_type_formal_param(f: () → core::int => 2);
 }
 static method test_nullable_function_type_formal_param({() →? core::int f = #C1}) → core::int {
-  return let final core::int? #t1 = let final () →? core::int #t2 = f in #t2.{core::Object::==}(null) ?{core::int?} null : #t2{() → core::int}.call() in #t1.{core::num::==}(null) ?{core::int*} 1.{core::int::unary-}() : #t1{core::int};
+  return let final core::int? #t1 = let final () →? core::int #t2 = f in #t2.{core::Object::==}(null) ?{core::int?} null : #t2{() → core::int}.call() in #t1.{core::num::==}(null) ?{core::int} 1.{core::int::unary-}() : #t1{core::int};
 }
 
 constants  {
diff --git a/pkg/front_end/testcases/nnbd/nullable_param.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/nullable_param.dart.strong.transformed.expect
index 9ab6069..701d5d6 100644
--- a/pkg/front_end/testcases/nnbd/nullable_param.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/nullable_param.dart.strong.transformed.expect
@@ -16,7 +16,7 @@
   self::test_nullable_function_type_formal_param(f: () → core::int => 2);
 }
 static method test_nullable_function_type_formal_param({() →? core::int f = #C1}) → core::int {
-  return let final core::int? #t1 = let final () →? core::int #t2 = f in #t2.{core::Object::==}(null) ?{core::int?} null : #t2{() → core::int}.call() in #t1.{core::num::==}(null) ?{core::int*} 1.{core::int::unary-}() : #t1{core::int};
+  return let final core::int? #t1 = let final () →? core::int #t2 = f in #t2.{core::Object::==}(null) ?{core::int?} null : #t2{() → core::int}.call() in #t1.{core::num::==}(null) ?{core::int} 1.{core::int::unary-}() : #t1{core::int};
 }
 
 constants  {
diff --git a/pkg/front_end/testcases/nnbd/nullable_param.dart.weak.expect b/pkg/front_end/testcases/nnbd/nullable_param.dart.weak.expect
index 9ab6069..701d5d6 100644
--- a/pkg/front_end/testcases/nnbd/nullable_param.dart.weak.expect
+++ b/pkg/front_end/testcases/nnbd/nullable_param.dart.weak.expect
@@ -16,7 +16,7 @@
   self::test_nullable_function_type_formal_param(f: () → core::int => 2);
 }
 static method test_nullable_function_type_formal_param({() →? core::int f = #C1}) → core::int {
-  return let final core::int? #t1 = let final () →? core::int #t2 = f in #t2.{core::Object::==}(null) ?{core::int?} null : #t2{() → core::int}.call() in #t1.{core::num::==}(null) ?{core::int*} 1.{core::int::unary-}() : #t1{core::int};
+  return let final core::int? #t1 = let final () →? core::int #t2 = f in #t2.{core::Object::==}(null) ?{core::int?} null : #t2{() → core::int}.call() in #t1.{core::num::==}(null) ?{core::int} 1.{core::int::unary-}() : #t1{core::int};
 }
 
 constants  {
diff --git a/pkg/front_end/testcases/nnbd/nullable_param.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/nullable_param.dart.weak.transformed.expect
index 9ab6069..701d5d6 100644
--- a/pkg/front_end/testcases/nnbd/nullable_param.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/nullable_param.dart.weak.transformed.expect
@@ -16,7 +16,7 @@
   self::test_nullable_function_type_formal_param(f: () → core::int => 2);
 }
 static method test_nullable_function_type_formal_param({() →? core::int f = #C1}) → core::int {
-  return let final core::int? #t1 = let final () →? core::int #t2 = f in #t2.{core::Object::==}(null) ?{core::int?} null : #t2{() → core::int}.call() in #t1.{core::num::==}(null) ?{core::int*} 1.{core::int::unary-}() : #t1{core::int};
+  return let final core::int? #t1 = let final () →? core::int #t2 = f in #t2.{core::Object::==}(null) ?{core::int?} null : #t2{() → core::int}.call() in #t1.{core::num::==}(null) ?{core::int} 1.{core::int::unary-}() : #t1{core::int};
 }
 
 constants  {
diff --git a/pkg/front_end/testcases/nnbd/opt_out.dart.outline.expect b/pkg/front_end/testcases/nnbd/opt_out.dart.outline.expect
index 49acd75..44ffbeb 100644
--- a/pkg/front_end/testcases/nnbd/opt_out.dart.outline.expect
+++ b/pkg/front_end/testcases/nnbd/opt_out.dart.outline.expect
@@ -96,6 +96,16 @@
   field core::int* field;
   synthetic constructor •() → self2::A<self2::A::T*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self2::A<core::String?> {
   synthetic constructor •() → self2::B*
diff --git a/pkg/front_end/testcases/nnbd/opt_out.dart.strong.expect b/pkg/front_end/testcases/nnbd/opt_out.dart.strong.expect
index a4191d5..1421750 100644
--- a/pkg/front_end/testcases/nnbd/opt_out.dart.strong.expect
+++ b/pkg/front_end/testcases/nnbd/opt_out.dart.strong.expect
@@ -138,6 +138,16 @@
   synthetic constructor •() → self2::A<self2::A::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self2::A<core::String?> {
   synthetic constructor •() → self2::B*
diff --git a/pkg/front_end/testcases/nnbd/opt_out.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/opt_out.dart.strong.transformed.expect
index a4191d5..1421750 100644
--- a/pkg/front_end/testcases/nnbd/opt_out.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/opt_out.dart.strong.transformed.expect
@@ -138,6 +138,16 @@
   synthetic constructor •() → self2::A<self2::A::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self2::A<core::String?> {
   synthetic constructor •() → self2::B*
diff --git a/pkg/front_end/testcases/nnbd/opt_out.dart.weak.expect b/pkg/front_end/testcases/nnbd/opt_out.dart.weak.expect
index a4191d5..1421750 100644
--- a/pkg/front_end/testcases/nnbd/opt_out.dart.weak.expect
+++ b/pkg/front_end/testcases/nnbd/opt_out.dart.weak.expect
@@ -138,6 +138,16 @@
   synthetic constructor •() → self2::A<self2::A::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self2::A<core::String?> {
   synthetic constructor •() → self2::B*
diff --git a/pkg/front_end/testcases/nnbd/opt_out.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/opt_out.dart.weak.transformed.expect
index a4191d5..1421750 100644
--- a/pkg/front_end/testcases/nnbd/opt_out.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/opt_out.dart.weak.transformed.expect
@@ -138,6 +138,16 @@
   synthetic constructor •() → self2::A<self2::A::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self2::A<core::String?> {
   synthetic constructor •() → self2::B*
diff --git a/pkg/front_end/testcases/nnbd/override_checks.dart b/pkg/front_end/testcases/nnbd/override_checks.dart
index 10e4918..470d477 100644
--- a/pkg/front_end/testcases/nnbd/override_checks.dart
+++ b/pkg/front_end/testcases/nnbd/override_checks.dart
@@ -17,7 +17,7 @@
 }
 
 class C1 {
-  factory C1 = C2<int?>; // Error in strong mode and Warning in weak mode.
+  factory C1() = C2<int?>; // Error in strong mode and Warning in weak mode.
 }
 
 class C2<X extends int> implements C1 {}
diff --git a/pkg/front_end/testcases/nnbd/override_checks.dart.outline.expect b/pkg/front_end/testcases/nnbd/override_checks.dart.outline.expect
index d7377b8..45009c6 100644
--- a/pkg/front_end/testcases/nnbd/override_checks.dart.outline.expect
+++ b/pkg/front_end/testcases/nnbd/override_checks.dart.outline.expect
@@ -2,11 +2,6 @@
 //
 // Problems in library:
 //
-// pkg/front_end/testcases/nnbd/override_checks.dart:20:14: Error: A function declaration needs an explicit list of parameters.
-// Try adding a parameter list to the function declaration.
-//   factory C1 = C2<int?>; // Error in strong mode and Warning in weak mode.
-//              ^
-//
 // pkg/front_end/testcases/nnbd/override_checks.dart:14:7: Error: The field 'B2.bar' has type 'num', which does not match the corresponding type, 'num?', in the overridden setter, 'B1.bar'.
 //   num bar = 3.14; // Error in strong mode and Warning in weak mode.
 //       ^
@@ -30,10 +25,10 @@
 //   void hest(num? value) {}
 //        ^
 //
-// pkg/front_end/testcases/nnbd/override_checks.dart:20:16: Error: The type 'int?' doesn't extend 'int'.
+// pkg/front_end/testcases/nnbd/override_checks.dart:20:18: Error: The type 'int?' doesn't extend 'int'.
 // Try using a different type as argument.
-//   factory C1 = C2<int?>; // Error in strong mode and Warning in weak mode.
-//                ^
+//   factory C1() = C2<int?>; // Error in strong mode and Warning in weak mode.
+//                  ^
 //
 // pkg/front_end/testcases/nnbd/override_checks.dart:27:27: Error: The constructor function type 'D Function(num)' isn't a subtype of 'D Function(num?)'.
 //  - 'D' is from 'pkg/front_end/testcases/nnbd/override_checks.dart'.
diff --git a/pkg/front_end/testcases/nnbd/override_checks.dart.strong.expect b/pkg/front_end/testcases/nnbd/override_checks.dart.strong.expect
index 0c70778..4b9d35a 100644
--- a/pkg/front_end/testcases/nnbd/override_checks.dart.strong.expect
+++ b/pkg/front_end/testcases/nnbd/override_checks.dart.strong.expect
@@ -2,11 +2,6 @@
 //
 // Problems in library:
 //
-// pkg/front_end/testcases/nnbd/override_checks.dart:20:14: Error: A function declaration needs an explicit list of parameters.
-// Try adding a parameter list to the function declaration.
-//   factory C1 = C2<int?>; // Error in strong mode and Warning in weak mode.
-//              ^
-//
 // pkg/front_end/testcases/nnbd/override_checks.dart:14:7: Error: The field 'B2.bar' has type 'num', which does not match the corresponding type, 'num?', in the overridden setter, 'B1.bar'.
 //   num bar = 3.14; // Error in strong mode and Warning in weak mode.
 //       ^
@@ -30,10 +25,10 @@
 //   void hest(num? value) {}
 //        ^
 //
-// pkg/front_end/testcases/nnbd/override_checks.dart:20:16: Error: The type 'int?' doesn't extend 'int'.
+// pkg/front_end/testcases/nnbd/override_checks.dart:20:18: Error: The type 'int?' doesn't extend 'int'.
 // Try using a different type as argument.
-//   factory C1 = C2<int?>; // Error in strong mode and Warning in weak mode.
-//                ^
+//   factory C1() = C2<int?>; // Error in strong mode and Warning in weak mode.
+//                  ^
 //
 // pkg/front_end/testcases/nnbd/override_checks.dart:27:27: Error: The constructor function type 'D Function(num)' isn't a subtype of 'D Function(num?)'.
 //  - 'D' is from 'pkg/front_end/testcases/nnbd/override_checks.dart'.
diff --git a/pkg/front_end/testcases/nnbd/override_checks.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/override_checks.dart.strong.transformed.expect
index 1387d52..eb84971 100644
--- a/pkg/front_end/testcases/nnbd/override_checks.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/override_checks.dart.strong.transformed.expect
@@ -2,11 +2,6 @@
 //
 // Problems in library:
 //
-// pkg/front_end/testcases/nnbd/override_checks.dart:20:14: Error: A function declaration needs an explicit list of parameters.
-// Try adding a parameter list to the function declaration.
-//   factory C1 = C2<int?>; // Error in strong mode and Warning in weak mode.
-//              ^
-//
 // pkg/front_end/testcases/nnbd/override_checks.dart:14:7: Error: The field 'B2.bar' has type 'num', which does not match the corresponding type, 'num?', in the overridden setter, 'B1.bar'.
 //   num bar = 3.14; // Error in strong mode and Warning in weak mode.
 //       ^
@@ -30,10 +25,10 @@
 //   void hest(num? value) {}
 //        ^
 //
-// pkg/front_end/testcases/nnbd/override_checks.dart:20:16: Error: The type 'int?' doesn't extend 'int'.
+// pkg/front_end/testcases/nnbd/override_checks.dart:20:18: Error: The type 'int?' doesn't extend 'int'.
 // Try using a different type as argument.
-//   factory C1 = C2<int?>; // Error in strong mode and Warning in weak mode.
-//                ^
+//   factory C1() = C2<int?>; // Error in strong mode and Warning in weak mode.
+//                  ^
 //
 // pkg/front_end/testcases/nnbd/override_checks.dart:27:27: Error: The constructor function type 'D Function(num)' isn't a subtype of 'D Function(num?)'.
 //  - 'D' is from 'pkg/front_end/testcases/nnbd/override_checks.dart'.
diff --git a/pkg/front_end/testcases/nnbd/override_checks.dart.weak.expect b/pkg/front_end/testcases/nnbd/override_checks.dart.weak.expect
index 0c70778..4b9d35a 100644
--- a/pkg/front_end/testcases/nnbd/override_checks.dart.weak.expect
+++ b/pkg/front_end/testcases/nnbd/override_checks.dart.weak.expect
@@ -2,11 +2,6 @@
 //
 // Problems in library:
 //
-// pkg/front_end/testcases/nnbd/override_checks.dart:20:14: Error: A function declaration needs an explicit list of parameters.
-// Try adding a parameter list to the function declaration.
-//   factory C1 = C2<int?>; // Error in strong mode and Warning in weak mode.
-//              ^
-//
 // pkg/front_end/testcases/nnbd/override_checks.dart:14:7: Error: The field 'B2.bar' has type 'num', which does not match the corresponding type, 'num?', in the overridden setter, 'B1.bar'.
 //   num bar = 3.14; // Error in strong mode and Warning in weak mode.
 //       ^
@@ -30,10 +25,10 @@
 //   void hest(num? value) {}
 //        ^
 //
-// pkg/front_end/testcases/nnbd/override_checks.dart:20:16: Error: The type 'int?' doesn't extend 'int'.
+// pkg/front_end/testcases/nnbd/override_checks.dart:20:18: Error: The type 'int?' doesn't extend 'int'.
 // Try using a different type as argument.
-//   factory C1 = C2<int?>; // Error in strong mode and Warning in weak mode.
-//                ^
+//   factory C1() = C2<int?>; // Error in strong mode and Warning in weak mode.
+//                  ^
 //
 // pkg/front_end/testcases/nnbd/override_checks.dart:27:27: Error: The constructor function type 'D Function(num)' isn't a subtype of 'D Function(num?)'.
 //  - 'D' is from 'pkg/front_end/testcases/nnbd/override_checks.dart'.
diff --git a/pkg/front_end/testcases/nnbd/override_checks.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/override_checks.dart.weak.transformed.expect
index 1387d52..eb84971 100644
--- a/pkg/front_end/testcases/nnbd/override_checks.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/override_checks.dart.weak.transformed.expect
@@ -2,11 +2,6 @@
 //
 // Problems in library:
 //
-// pkg/front_end/testcases/nnbd/override_checks.dart:20:14: Error: A function declaration needs an explicit list of parameters.
-// Try adding a parameter list to the function declaration.
-//   factory C1 = C2<int?>; // Error in strong mode and Warning in weak mode.
-//              ^
-//
 // pkg/front_end/testcases/nnbd/override_checks.dart:14:7: Error: The field 'B2.bar' has type 'num', which does not match the corresponding type, 'num?', in the overridden setter, 'B1.bar'.
 //   num bar = 3.14; // Error in strong mode and Warning in weak mode.
 //       ^
@@ -30,10 +25,10 @@
 //   void hest(num? value) {}
 //        ^
 //
-// pkg/front_end/testcases/nnbd/override_checks.dart:20:16: Error: The type 'int?' doesn't extend 'int'.
+// pkg/front_end/testcases/nnbd/override_checks.dart:20:18: Error: The type 'int?' doesn't extend 'int'.
 // Try using a different type as argument.
-//   factory C1 = C2<int?>; // Error in strong mode and Warning in weak mode.
-//                ^
+//   factory C1() = C2<int?>; // Error in strong mode and Warning in weak mode.
+//                  ^
 //
 // pkg/front_end/testcases/nnbd/override_checks.dart:27:27: Error: The constructor function type 'D Function(num)' isn't a subtype of 'D Function(num?)'.
 //  - 'D' is from 'pkg/front_end/testcases/nnbd/override_checks.dart'.
diff --git a/pkg/front_end/testcases/nnbd/regress_null_aware.dart.outline.expect b/pkg/front_end/testcases/nnbd/regress_null_aware.dart.outline.expect
index 73efd69..c0ac075 100644
--- a/pkg/front_end/testcases/nnbd/regress_null_aware.dart.outline.expect
+++ b/pkg/front_end/testcases/nnbd/regress_null_aware.dart.outline.expect
@@ -8,6 +8,16 @@
     ;
   method method(core::String* node, core::Set<core::String*>* set) → core::List<core::String*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main(dynamic args) → dynamic
   ;
diff --git a/pkg/front_end/testcases/nnbd/regress_null_aware.dart.strong.expect b/pkg/front_end/testcases/nnbd/regress_null_aware.dart.strong.expect
index 060dec9..4d750fa 100644
--- a/pkg/front_end/testcases/nnbd/regress_null_aware.dart.strong.expect
+++ b/pkg/front_end/testcases/nnbd/regress_null_aware.dart.strong.expect
@@ -17,6 +17,16 @@
         for (final core::String* #t5 in #t2)
           #t1.{core::List::add}(#t5);
     } =>#t1 : <core::String*>[];
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main(dynamic args) → dynamic {
   if(false)
diff --git a/pkg/front_end/testcases/nnbd/regress_null_aware.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/regress_null_aware.dart.strong.transformed.expect
index 14ff5aa..8546029 100644
--- a/pkg/front_end/testcases/nnbd/regress_null_aware.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/regress_null_aware.dart.strong.transformed.expect
@@ -21,6 +21,16 @@
         }
       }
     } =>#t1 : <core::String*>[];
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main(dynamic args) → dynamic {
   if(false)
diff --git a/pkg/front_end/testcases/nnbd/regress_null_aware.dart.weak.expect b/pkg/front_end/testcases/nnbd/regress_null_aware.dart.weak.expect
index 060dec9..4d750fa 100644
--- a/pkg/front_end/testcases/nnbd/regress_null_aware.dart.weak.expect
+++ b/pkg/front_end/testcases/nnbd/regress_null_aware.dart.weak.expect
@@ -17,6 +17,16 @@
         for (final core::String* #t5 in #t2)
           #t1.{core::List::add}(#t5);
     } =>#t1 : <core::String*>[];
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main(dynamic args) → dynamic {
   if(false)
diff --git a/pkg/front_end/testcases/nnbd/regress_null_aware.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/regress_null_aware.dart.weak.transformed.expect
index 14ff5aa..8546029 100644
--- a/pkg/front_end/testcases/nnbd/regress_null_aware.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/regress_null_aware.dart.weak.transformed.expect
@@ -21,6 +21,16 @@
         }
       }
     } =>#t1 : <core::String*>[];
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main(dynamic args) → dynamic {
   if(false)
diff --git a/pkg/front_end/testcases/nnbd/required_name_override.dart.outline.expect b/pkg/front_end/testcases/nnbd/required_name_override.dart.outline.expect
index a35314d..e73639b 100644
--- a/pkg/front_end/testcases/nnbd/required_name_override.dart.outline.expect
+++ b/pkg/front_end/testcases/nnbd/required_name_override.dart.outline.expect
@@ -46,6 +46,7 @@
     ;
   method test_legacy({required core::int? i}) → void
     ;
+  abstract forwarding-stub operator ==(dynamic other) → core::bool*;
 }
 static method main() → dynamic
   ;
@@ -59,4 +60,14 @@
     ;
   method test_legacy({core::int* i}) → void
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
diff --git a/pkg/front_end/testcases/nnbd/required_name_override.dart.strong.expect b/pkg/front_end/testcases/nnbd/required_name_override.dart.strong.expect
index 201e23a..047c406 100644
--- a/pkg/front_end/testcases/nnbd/required_name_override.dart.strong.expect
+++ b/pkg/front_end/testcases/nnbd/required_name_override.dart.strong.expect
@@ -43,6 +43,7 @@
   method test_default({required core::int? i = #C1}) → void {}
   method test_nondefault({required core::int? i = #C1}) → void {}
   method test_legacy({required core::int? i = #C1}) → void {}
+  abstract forwarding-stub operator ==(dynamic other) → core::bool*;
 }
 static method main() → dynamic {
   new self::A::•().{self::A::test_default}(i: 1);
@@ -59,6 +60,16 @@
     : super core::Object::•()
     ;
   method test_legacy({core::int* i = #C1}) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 
 constants  {
diff --git a/pkg/front_end/testcases/nnbd/required_name_override.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/required_name_override.dart.strong.transformed.expect
index 201e23a..047c406 100644
--- a/pkg/front_end/testcases/nnbd/required_name_override.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/required_name_override.dart.strong.transformed.expect
@@ -43,6 +43,7 @@
   method test_default({required core::int? i = #C1}) → void {}
   method test_nondefault({required core::int? i = #C1}) → void {}
   method test_legacy({required core::int? i = #C1}) → void {}
+  abstract forwarding-stub operator ==(dynamic other) → core::bool*;
 }
 static method main() → dynamic {
   new self::A::•().{self::A::test_default}(i: 1);
@@ -59,6 +60,16 @@
     : super core::Object::•()
     ;
   method test_legacy({core::int* i = #C1}) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 
 constants  {
diff --git a/pkg/front_end/testcases/nnbd/required_name_override.dart.weak.expect b/pkg/front_end/testcases/nnbd/required_name_override.dart.weak.expect
index 201e23a..047c406 100644
--- a/pkg/front_end/testcases/nnbd/required_name_override.dart.weak.expect
+++ b/pkg/front_end/testcases/nnbd/required_name_override.dart.weak.expect
@@ -43,6 +43,7 @@
   method test_default({required core::int? i = #C1}) → void {}
   method test_nondefault({required core::int? i = #C1}) → void {}
   method test_legacy({required core::int? i = #C1}) → void {}
+  abstract forwarding-stub operator ==(dynamic other) → core::bool*;
 }
 static method main() → dynamic {
   new self::A::•().{self::A::test_default}(i: 1);
@@ -59,6 +60,16 @@
     : super core::Object::•()
     ;
   method test_legacy({core::int* i = #C1}) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 
 constants  {
diff --git a/pkg/front_end/testcases/nnbd/required_name_override.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/required_name_override.dart.weak.transformed.expect
index 201e23a..047c406 100644
--- a/pkg/front_end/testcases/nnbd/required_name_override.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/required_name_override.dart.weak.transformed.expect
@@ -43,6 +43,7 @@
   method test_default({required core::int? i = #C1}) → void {}
   method test_nondefault({required core::int? i = #C1}) → void {}
   method test_legacy({required core::int? i = #C1}) → void {}
+  abstract forwarding-stub operator ==(dynamic other) → core::bool*;
 }
 static method main() → dynamic {
   new self::A::•().{self::A::test_default}(i: 1);
@@ -59,6 +60,16 @@
     : super core::Object::•()
     ;
   method test_legacy({core::int* i = #C1}) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 
 constants  {
diff --git a/pkg/front_end/testcases/nnbd/return_null.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/return_null.dart.strong.transformed.expect
index 1b65644..502b2b9 100644
--- a/pkg/front_end/testcases/nnbd/return_null.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/return_null.dart.strong.transformed.expect
@@ -112,8 +112,8 @@
       asy::_completeOnAsyncReturn(:async_completer, :return_value);
       return;
     }
-    on dynamic catch(dynamic :exception, core::StackTrace :stack_trace) {
-      :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+    on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
+      :async_completer.{asy::Completer::completeError}(exception, stack_trace);
     }
   :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
@@ -136,8 +136,8 @@
       asy::_completeOnAsyncReturn(:async_completer, :return_value);
       return;
     }
-    on dynamic catch(dynamic :exception, core::StackTrace :stack_trace) {
-      :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+    on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
+      :async_completer.{asy::Completer::completeError}(exception, stack_trace);
     }
   :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
@@ -165,8 +165,8 @@
       asy::_completeOnAsyncReturn(:async_completer, :return_value);
       return;
     }
-    on dynamic catch(dynamic :exception, core::StackTrace :stack_trace) {
-      :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+    on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
+      :async_completer.{asy::Completer::completeError}(exception, stack_trace);
     }
   :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
@@ -189,8 +189,8 @@
       asy::_completeOnAsyncReturn(:async_completer, :return_value);
       return;
     }
-    on dynamic catch(dynamic :exception, core::StackTrace :stack_trace) {
-      :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+    on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
+      :async_completer.{asy::Completer::completeError}(exception, stack_trace);
     }
   :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
@@ -213,8 +213,8 @@
       asy::_completeOnAsyncReturn(:async_completer, :return_value);
       return;
     }
-    on dynamic catch(dynamic :exception, core::StackTrace :stack_trace) {
-      :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+    on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
+      :async_completer.{asy::Completer::completeError}(exception, stack_trace);
     }
   :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
@@ -240,8 +240,8 @@
       asy::_completeOnAsyncReturn(:async_completer, :return_value);
       return;
     }
-    on dynamic catch(dynamic :exception, core::StackTrace :stack_trace) {
-      :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+    on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
+      :async_completer.{asy::Completer::completeError}(exception, stack_trace);
     }
   :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
@@ -264,8 +264,8 @@
       asy::_completeOnAsyncReturn(:async_completer, :return_value);
       return;
     }
-    on dynamic catch(dynamic :exception, core::StackTrace :stack_trace) {
-      :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+    on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
+      :async_completer.{asy::Completer::completeError}(exception, stack_trace);
     }
   :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
@@ -274,13 +274,15 @@
   return :async_completer.{asy::Completer::future};
 }
 static method yieldSync() → core::Iterable<dynamic> /* originally sync* */ {
-  core::int :await_jump_var = 0;
-  dynamic :await_ctx_var;
-  function :sync_op(core::_SyncIterator<dynamic>? :iterator) → core::bool* yielding {
-    {}
-    return false;
+  function :sync_op_gen() → (core::_SyncIterator<dynamic>?) → core::bool* {
+    core::int :await_jump_var = 0;
+    dynamic :await_ctx_var;
+    return (core::_SyncIterator<dynamic>? :iterator) → core::bool* yielding {
+      {}
+      return false;
+    };
   }
-  return new core::_SyncIterable::•<dynamic>(:sync_op);
+  return new core::_SyncIterable::•<dynamic>(:sync_op_gen);
 }
 static method yieldAsync() → asy::Stream<dynamic> /* originally async* */ {
   asy::_AsyncStarStreamController<dynamic>? :controller;
@@ -297,8 +299,8 @@
         {}
         return;
       }
-      on dynamic catch(dynamic :exception, core::StackTrace :stack_trace) {
-        :controller.{asy::_AsyncStarStreamController::addError}(:exception, :stack_trace);
+      on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
+        :controller.{asy::_AsyncStarStreamController::addError}(exception, stack_trace);
       }
     finally {
       :controller.{asy::_AsyncStarStreamController::close}();
@@ -379,8 +381,8 @@
         asy::_completeOnAsyncReturn(:async_completer, :return_value);
         return;
       }
-      on dynamic catch(dynamic :exception, core::StackTrace :stack_trace) {
-        :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+      on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
+        :async_completer.{asy::Completer::completeError}(exception, stack_trace);
       }
     :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
     :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
@@ -403,8 +405,8 @@
         asy::_completeOnAsyncReturn(:async_completer, :return_value);
         return;
       }
-      on dynamic catch(dynamic :exception, core::StackTrace :stack_trace) {
-        :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+      on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
+        :async_completer.{asy::Completer::completeError}(exception, stack_trace);
       }
     :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
     :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
@@ -432,8 +434,8 @@
         asy::_completeOnAsyncReturn(:async_completer, :return_value);
         return;
       }
-      on dynamic catch(dynamic :exception, core::StackTrace :stack_trace) {
-        :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+      on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
+        :async_completer.{asy::Completer::completeError}(exception, stack_trace);
       }
     :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
     :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
@@ -456,8 +458,8 @@
         asy::_completeOnAsyncReturn(:async_completer, :return_value);
         return;
       }
-      on dynamic catch(dynamic :exception, core::StackTrace :stack_trace) {
-        :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+      on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
+        :async_completer.{asy::Completer::completeError}(exception, stack_trace);
       }
     :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
     :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
@@ -480,8 +482,8 @@
         asy::_completeOnAsyncReturn(:async_completer, :return_value);
         return;
       }
-      on dynamic catch(dynamic :exception, core::StackTrace :stack_trace) {
-        :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+      on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
+        :async_completer.{asy::Completer::completeError}(exception, stack_trace);
       }
     :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
     :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
@@ -507,8 +509,8 @@
         asy::_completeOnAsyncReturn(:async_completer, :return_value);
         return;
       }
-      on dynamic catch(dynamic :exception, core::StackTrace :stack_trace) {
-        :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+      on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
+        :async_completer.{asy::Completer::completeError}(exception, stack_trace);
       }
     :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
     :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
@@ -531,8 +533,8 @@
         asy::_completeOnAsyncReturn(:async_completer, :return_value);
         return;
       }
-      on dynamic catch(dynamic :exception, core::StackTrace :stack_trace) {
-        :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+      on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
+        :async_completer.{asy::Completer::completeError}(exception, stack_trace);
       }
     :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
     :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
@@ -541,13 +543,15 @@
     return :async_completer.{asy::Completer::future};
   }
   function yieldSync() → core::Iterable<dynamic> /* originally sync* */ {
-    core::int :await_jump_var = 0;
-    dynamic :await_ctx_var;
-    function :sync_op(core::_SyncIterator<dynamic>? :iterator) → core::bool* yielding {
-      {}
-      return false;
+    function :sync_op_gen() → (core::_SyncIterator<dynamic>?) → core::bool* {
+      core::int :await_jump_var = 0;
+      dynamic :await_ctx_var;
+      return (core::_SyncIterator<dynamic>? :iterator) → core::bool* yielding {
+        {}
+        return false;
+      };
     }
-    return new core::_SyncIterable::•<dynamic>(:sync_op);
+    return new core::_SyncIterable::•<dynamic>(:sync_op_gen);
   }
   function yieldAsync() → asy::Stream<dynamic> /* originally async* */ {
     asy::_AsyncStarStreamController<dynamic>? :controller;
@@ -564,8 +568,8 @@
           {}
           return;
         }
-        on dynamic catch(dynamic :exception, core::StackTrace :stack_trace) {
-          :controller.{asy::_AsyncStarStreamController::addError}(:exception, :stack_trace);
+        on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
+          :controller.{asy::_AsyncStarStreamController::addError}(exception, stack_trace);
         }
       finally {
         :controller.{asy::_AsyncStarStreamController::close}();
diff --git a/pkg/front_end/testcases/nnbd/return_null.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/return_null.dart.weak.transformed.expect
index a41a122..d39e1d5 100644
--- a/pkg/front_end/testcases/nnbd/return_null.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/return_null.dart.weak.transformed.expect
@@ -112,8 +112,8 @@
       asy::_completeOnAsyncReturn(:async_completer, :return_value);
       return;
     }
-    on dynamic catch(dynamic :exception, core::StackTrace :stack_trace) {
-      :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+    on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
+      :async_completer.{asy::Completer::completeError}(exception, stack_trace);
     }
   :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
@@ -136,8 +136,8 @@
       asy::_completeOnAsyncReturn(:async_completer, :return_value);
       return;
     }
-    on dynamic catch(dynamic :exception, core::StackTrace :stack_trace) {
-      :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+    on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
+      :async_completer.{asy::Completer::completeError}(exception, stack_trace);
     }
   :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
@@ -165,8 +165,8 @@
       asy::_completeOnAsyncReturn(:async_completer, :return_value);
       return;
     }
-    on dynamic catch(dynamic :exception, core::StackTrace :stack_trace) {
-      :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+    on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
+      :async_completer.{asy::Completer::completeError}(exception, stack_trace);
     }
   :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
@@ -189,8 +189,8 @@
       asy::_completeOnAsyncReturn(:async_completer, :return_value);
       return;
     }
-    on dynamic catch(dynamic :exception, core::StackTrace :stack_trace) {
-      :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+    on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
+      :async_completer.{asy::Completer::completeError}(exception, stack_trace);
     }
   :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
@@ -213,8 +213,8 @@
       asy::_completeOnAsyncReturn(:async_completer, :return_value);
       return;
     }
-    on dynamic catch(dynamic :exception, core::StackTrace :stack_trace) {
-      :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+    on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
+      :async_completer.{asy::Completer::completeError}(exception, stack_trace);
     }
   :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
@@ -240,8 +240,8 @@
       asy::_completeOnAsyncReturn(:async_completer, :return_value);
       return;
     }
-    on dynamic catch(dynamic :exception, core::StackTrace :stack_trace) {
-      :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+    on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
+      :async_completer.{asy::Completer::completeError}(exception, stack_trace);
     }
   :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
@@ -264,8 +264,8 @@
       asy::_completeOnAsyncReturn(:async_completer, :return_value);
       return;
     }
-    on dynamic catch(dynamic :exception, core::StackTrace :stack_trace) {
-      :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+    on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
+      :async_completer.{asy::Completer::completeError}(exception, stack_trace);
     }
   :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
@@ -274,13 +274,15 @@
   return :async_completer.{asy::Completer::future};
 }
 static method yieldSync() → core::Iterable<dynamic> /* originally sync* */ {
-  core::int :await_jump_var = 0;
-  dynamic :await_ctx_var;
-  function :sync_op(core::_SyncIterator<dynamic>? :iterator) → core::bool* yielding {
-    {}
-    return false;
+  function :sync_op_gen() → (core::_SyncIterator<dynamic>?) → core::bool* {
+    core::int :await_jump_var = 0;
+    dynamic :await_ctx_var;
+    return (core::_SyncIterator<dynamic>? :iterator) → core::bool* yielding {
+      {}
+      return false;
+    };
   }
-  return new core::_SyncIterable::•<dynamic>(:sync_op);
+  return new core::_SyncIterable::•<dynamic>(:sync_op_gen);
 }
 static method yieldAsync() → asy::Stream<dynamic> /* originally async* */ {
   asy::_AsyncStarStreamController<dynamic>? :controller;
@@ -297,8 +299,8 @@
         {}
         return;
       }
-      on dynamic catch(dynamic :exception, core::StackTrace :stack_trace) {
-        :controller.{asy::_AsyncStarStreamController::addError}(:exception, :stack_trace);
+      on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
+        :controller.{asy::_AsyncStarStreamController::addError}(exception, stack_trace);
       }
     finally {
       :controller.{asy::_AsyncStarStreamController::close}();
@@ -379,8 +381,8 @@
         asy::_completeOnAsyncReturn(:async_completer, :return_value);
         return;
       }
-      on dynamic catch(dynamic :exception, core::StackTrace :stack_trace) {
-        :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+      on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
+        :async_completer.{asy::Completer::completeError}(exception, stack_trace);
       }
     :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
     :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
@@ -403,8 +405,8 @@
         asy::_completeOnAsyncReturn(:async_completer, :return_value);
         return;
       }
-      on dynamic catch(dynamic :exception, core::StackTrace :stack_trace) {
-        :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+      on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
+        :async_completer.{asy::Completer::completeError}(exception, stack_trace);
       }
     :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
     :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
@@ -432,8 +434,8 @@
         asy::_completeOnAsyncReturn(:async_completer, :return_value);
         return;
       }
-      on dynamic catch(dynamic :exception, core::StackTrace :stack_trace) {
-        :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+      on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
+        :async_completer.{asy::Completer::completeError}(exception, stack_trace);
       }
     :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
     :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
@@ -456,8 +458,8 @@
         asy::_completeOnAsyncReturn(:async_completer, :return_value);
         return;
       }
-      on dynamic catch(dynamic :exception, core::StackTrace :stack_trace) {
-        :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+      on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
+        :async_completer.{asy::Completer::completeError}(exception, stack_trace);
       }
     :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
     :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
@@ -480,8 +482,8 @@
         asy::_completeOnAsyncReturn(:async_completer, :return_value);
         return;
       }
-      on dynamic catch(dynamic :exception, core::StackTrace :stack_trace) {
-        :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+      on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
+        :async_completer.{asy::Completer::completeError}(exception, stack_trace);
       }
     :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
     :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
@@ -507,8 +509,8 @@
         asy::_completeOnAsyncReturn(:async_completer, :return_value);
         return;
       }
-      on dynamic catch(dynamic :exception, core::StackTrace :stack_trace) {
-        :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+      on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
+        :async_completer.{asy::Completer::completeError}(exception, stack_trace);
       }
     :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
     :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
@@ -531,8 +533,8 @@
         asy::_completeOnAsyncReturn(:async_completer, :return_value);
         return;
       }
-      on dynamic catch(dynamic :exception, core::StackTrace :stack_trace) {
-        :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+      on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
+        :async_completer.{asy::Completer::completeError}(exception, stack_trace);
       }
     :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
     :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
@@ -541,13 +543,15 @@
     return :async_completer.{asy::Completer::future};
   }
   function yieldSync() → core::Iterable<dynamic> /* originally sync* */ {
-    core::int :await_jump_var = 0;
-    dynamic :await_ctx_var;
-    function :sync_op(core::_SyncIterator<dynamic>? :iterator) → core::bool* yielding {
-      {}
-      return false;
+    function :sync_op_gen() → (core::_SyncIterator<dynamic>?) → core::bool* {
+      core::int :await_jump_var = 0;
+      dynamic :await_ctx_var;
+      return (core::_SyncIterator<dynamic>? :iterator) → core::bool* yielding {
+        {}
+        return false;
+      };
     }
-    return new core::_SyncIterable::•<dynamic>(:sync_op);
+    return new core::_SyncIterable::•<dynamic>(:sync_op_gen);
   }
   function yieldAsync() → asy::Stream<dynamic> /* originally async* */ {
     asy::_AsyncStarStreamController<dynamic>? :controller;
@@ -564,8 +568,8 @@
           {}
           return;
         }
-        on dynamic catch(dynamic :exception, core::StackTrace :stack_trace) {
-          :controller.{asy::_AsyncStarStreamController::addError}(:exception, :stack_trace);
+        on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
+          :controller.{asy::_AsyncStarStreamController::addError}(exception, stack_trace);
         }
       finally {
         :controller.{asy::_AsyncStarStreamController::close}();
diff --git a/pkg/front_end/testcases/nnbd/sink_hierarchy.dart.outline.expect b/pkg/front_end/testcases/nnbd/sink_hierarchy.dart.outline.expect
index b423e94..ba36f10 100644
--- a/pkg/front_end/testcases/nnbd/sink_hierarchy.dart.outline.expect
+++ b/pkg/front_end/testcases/nnbd/sink_hierarchy.dart.outline.expect
@@ -7,21 +7,61 @@
   synthetic constructor •() → self::Sink<self::Sink::T*>*
     ;
   abstract method close() → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class EventSink<T extends core::Object* = dynamic> extends core::Object implements self::Sink<self::EventSink::T*> {
   synthetic constructor •() → self::EventSink<self::EventSink::T*>*
     ;
   abstract method close() → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class StreamConsumer<S extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::StreamConsumer<self::StreamConsumer::S*>*
     ;
   abstract method close() → asy::Future<dynamic>*;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class StreamSink<S extends core::Object* = dynamic> extends core::Object implements self::EventSink<self::StreamSink::S*>, self::StreamConsumer<self::StreamSink::S*> {
   synthetic constructor •() → self::StreamSink<self::StreamSink::S*>*
     ;
   abstract method close() → asy::Future<dynamic>*;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/nnbd/sink_hierarchy.dart.strong.expect b/pkg/front_end/testcases/nnbd/sink_hierarchy.dart.strong.expect
index bd5a1e5..8ff1525 100644
--- a/pkg/front_end/testcases/nnbd/sink_hierarchy.dart.strong.expect
+++ b/pkg/front_end/testcases/nnbd/sink_hierarchy.dart.strong.expect
@@ -8,23 +8,63 @@
     : super core::Object::•()
     ;
   abstract method close() → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class EventSink<T extends core::Object* = dynamic> extends core::Object implements self::Sink<self::EventSink::T*> {
   synthetic constructor •() → self::EventSink<self::EventSink::T*>*
     : super core::Object::•()
     ;
   abstract method close() → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class StreamConsumer<S extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::StreamConsumer<self::StreamConsumer::S*>*
     : super core::Object::•()
     ;
   abstract method close() → asy::Future<dynamic>*;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class StreamSink<S extends core::Object* = dynamic> extends core::Object implements self::EventSink<self::StreamSink::S*>, self::StreamConsumer<self::StreamSink::S*> {
   synthetic constructor •() → self::StreamSink<self::StreamSink::S*>*
     : super core::Object::•()
     ;
   abstract method close() → asy::Future<dynamic>*;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/nnbd/sink_hierarchy.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/sink_hierarchy.dart.strong.transformed.expect
index bd5a1e5..8ff1525 100644
--- a/pkg/front_end/testcases/nnbd/sink_hierarchy.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/sink_hierarchy.dart.strong.transformed.expect
@@ -8,23 +8,63 @@
     : super core::Object::•()
     ;
   abstract method close() → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class EventSink<T extends core::Object* = dynamic> extends core::Object implements self::Sink<self::EventSink::T*> {
   synthetic constructor •() → self::EventSink<self::EventSink::T*>*
     : super core::Object::•()
     ;
   abstract method close() → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class StreamConsumer<S extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::StreamConsumer<self::StreamConsumer::S*>*
     : super core::Object::•()
     ;
   abstract method close() → asy::Future<dynamic>*;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class StreamSink<S extends core::Object* = dynamic> extends core::Object implements self::EventSink<self::StreamSink::S*>, self::StreamConsumer<self::StreamSink::S*> {
   synthetic constructor •() → self::StreamSink<self::StreamSink::S*>*
     : super core::Object::•()
     ;
   abstract method close() → asy::Future<dynamic>*;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/nnbd/sink_hierarchy.dart.weak.expect b/pkg/front_end/testcases/nnbd/sink_hierarchy.dart.weak.expect
index bd5a1e5..8ff1525 100644
--- a/pkg/front_end/testcases/nnbd/sink_hierarchy.dart.weak.expect
+++ b/pkg/front_end/testcases/nnbd/sink_hierarchy.dart.weak.expect
@@ -8,23 +8,63 @@
     : super core::Object::•()
     ;
   abstract method close() → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class EventSink<T extends core::Object* = dynamic> extends core::Object implements self::Sink<self::EventSink::T*> {
   synthetic constructor •() → self::EventSink<self::EventSink::T*>*
     : super core::Object::•()
     ;
   abstract method close() → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class StreamConsumer<S extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::StreamConsumer<self::StreamConsumer::S*>*
     : super core::Object::•()
     ;
   abstract method close() → asy::Future<dynamic>*;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class StreamSink<S extends core::Object* = dynamic> extends core::Object implements self::EventSink<self::StreamSink::S*>, self::StreamConsumer<self::StreamSink::S*> {
   synthetic constructor •() → self::StreamSink<self::StreamSink::S*>*
     : super core::Object::•()
     ;
   abstract method close() → asy::Future<dynamic>*;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/nnbd/sink_hierarchy.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/sink_hierarchy.dart.weak.transformed.expect
index bd5a1e5..8ff1525 100644
--- a/pkg/front_end/testcases/nnbd/sink_hierarchy.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/sink_hierarchy.dart.weak.transformed.expect
@@ -8,23 +8,63 @@
     : super core::Object::•()
     ;
   abstract method close() → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class EventSink<T extends core::Object* = dynamic> extends core::Object implements self::Sink<self::EventSink::T*> {
   synthetic constructor •() → self::EventSink<self::EventSink::T*>*
     : super core::Object::•()
     ;
   abstract method close() → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class StreamConsumer<S extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::StreamConsumer<self::StreamConsumer::S*>*
     : super core::Object::•()
     ;
   abstract method close() → asy::Future<dynamic>*;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class StreamSink<S extends core::Object* = dynamic> extends core::Object implements self::EventSink<self::StreamSink::S*>, self::StreamConsumer<self::StreamSink::S*> {
   synthetic constructor •() → self::StreamSink<self::StreamSink::S*>*
     : super core::Object::•()
     ;
   abstract method close() → asy::Future<dynamic>*;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/nnbd/strictly_non_nullable_warnings.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/strictly_non_nullable_warnings.dart.strong.transformed.expect
index 218772f..2e60ba3 100644
--- a/pkg/front_end/testcases/nnbd/strictly_non_nullable_warnings.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/strictly_non_nullable_warnings.dart.strong.transformed.expect
@@ -175,7 +175,7 @@
     final core::Map<core::String, core::int> #t16 = <core::String, core::int>{};
     final core::Map<core::String, core::int>? #t17 = m;
     if(!#t17.{core::Object::==}(null)) {
-      core::Iterator<core::MapEntry<core::String*, core::int*>*> :sync-for-iterator = #t17{core::Map<core::String, core::int>}.{core::Map::entries}.{core::Iterable::iterator};
+      core::Iterator<core::MapEntry<core::String, core::int>> :sync-for-iterator = #t17{core::Map<core::String, core::int>}.{core::Map::entries}.{core::Iterable::iterator};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         final core::MapEntry<core::String, core::int> #t18 = :sync-for-iterator.{core::Iterator::current};
         #t16.{core::Map::[]=}(#t18.{core::MapEntry::key}, #t18.{core::MapEntry::value});
@@ -186,7 +186,7 @@
     final core::Map<core::String, core::int> #t19 = <core::String, core::int>{};
     final core::Map<core::String, core::int>? #t20 = m;
     if(!#t20.{core::Object::==}(null)) {
-      core::Iterator<core::MapEntry<core::String*, core::int*>*> :sync-for-iterator = #t20{core::Map<core::String, core::int>}.{core::Map::entries}.{core::Iterable::iterator};
+      core::Iterator<core::MapEntry<core::String, core::int>> :sync-for-iterator = #t20{core::Map<core::String, core::int>}.{core::Map::entries}.{core::Iterable::iterator};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         final core::MapEntry<core::String, core::int> #t21 = :sync-for-iterator.{core::Iterator::current};
         #t19.{core::Map::[]=}(#t21.{core::MapEntry::key}, #t21.{core::MapEntry::value});
diff --git a/pkg/front_end/testcases/nnbd/strictly_non_nullable_warnings.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/strictly_non_nullable_warnings.dart.weak.transformed.expect
index 218772f..2e60ba3 100644
--- a/pkg/front_end/testcases/nnbd/strictly_non_nullable_warnings.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/strictly_non_nullable_warnings.dart.weak.transformed.expect
@@ -175,7 +175,7 @@
     final core::Map<core::String, core::int> #t16 = <core::String, core::int>{};
     final core::Map<core::String, core::int>? #t17 = m;
     if(!#t17.{core::Object::==}(null)) {
-      core::Iterator<core::MapEntry<core::String*, core::int*>*> :sync-for-iterator = #t17{core::Map<core::String, core::int>}.{core::Map::entries}.{core::Iterable::iterator};
+      core::Iterator<core::MapEntry<core::String, core::int>> :sync-for-iterator = #t17{core::Map<core::String, core::int>}.{core::Map::entries}.{core::Iterable::iterator};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         final core::MapEntry<core::String, core::int> #t18 = :sync-for-iterator.{core::Iterator::current};
         #t16.{core::Map::[]=}(#t18.{core::MapEntry::key}, #t18.{core::MapEntry::value});
@@ -186,7 +186,7 @@
     final core::Map<core::String, core::int> #t19 = <core::String, core::int>{};
     final core::Map<core::String, core::int>? #t20 = m;
     if(!#t20.{core::Object::==}(null)) {
-      core::Iterator<core::MapEntry<core::String*, core::int*>*> :sync-for-iterator = #t20{core::Map<core::String, core::int>}.{core::Map::entries}.{core::Iterable::iterator};
+      core::Iterator<core::MapEntry<core::String, core::int>> :sync-for-iterator = #t20{core::Map<core::String, core::int>}.{core::Map::entries}.{core::Iterable::iterator};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         final core::MapEntry<core::String, core::int> #t21 = :sync-for-iterator.{core::Iterator::current};
         #t19.{core::Map::[]=}(#t21.{core::MapEntry::key}, #t21.{core::MapEntry::value});
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field.dart.outline.expect b/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field.dart.outline.expect
index 3181c17..716fbb8 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field.dart.outline.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field.dart.outline.expect
@@ -6,12 +6,31 @@
   field core::int* foo;
   synthetic constructor •() → self::I*
     ;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class A extends core::Object implements self::I {
   synthetic constructor •() → self::A*
     ;
   method noSuchMethod(core::Invocation* i) → dynamic
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
   no-such-method-forwarder get foo() → core::int*
     return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#foo, 1, const <core::Type*>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{}))) as{TypeError,ForDynamic} core::int*;
   no-such-method-forwarder set foo(core::int* value) → void
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field.dart.strong.expect b/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field.dart.strong.expect
index 40aaf93..ec4141a 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field.dart.strong.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field.dart.strong.expect
@@ -7,6 +7,16 @@
   synthetic constructor •() → self::I*
     : super core::Object::•()
     ;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class A extends core::Object implements self::I {
   synthetic constructor •() → self::A*
@@ -14,6 +24,15 @@
     ;
   method noSuchMethod(core::Invocation* i) → dynamic
     return "bar";
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
   no-such-method-forwarder get foo() → core::int*
     return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 1, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))) as{TypeError,ForDynamic} core::int*;
   no-such-method-forwarder set foo(core::int* value) → void
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field.dart.strong.transformed.expect b/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field.dart.strong.transformed.expect
index 40aaf93..ec4141a 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field.dart.strong.transformed.expect
@@ -7,6 +7,16 @@
   synthetic constructor •() → self::I*
     : super core::Object::•()
     ;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class A extends core::Object implements self::I {
   synthetic constructor •() → self::A*
@@ -14,6 +24,15 @@
     ;
   method noSuchMethod(core::Invocation* i) → dynamic
     return "bar";
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
   no-such-method-forwarder get foo() → core::int*
     return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 1, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))) as{TypeError,ForDynamic} core::int*;
   no-such-method-forwarder set foo(core::int* value) → void
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_arent_mixed_in.dart.outline.expect b/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_arent_mixed_in.dart.outline.expect
index ec7b0ad..15dc3c2 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_arent_mixed_in.dart.outline.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_arent_mixed_in.dart.outline.expect
@@ -6,12 +6,31 @@
   field core::int* foo;
   synthetic constructor •() → self::A*
     ;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends core::Object implements self::A {
   synthetic constructor •() → self::B*
     ;
   method noSuchMethod(core::Invocation* i) → dynamic
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
   no-such-method-forwarder get foo() → core::int*
     return this.{self::B::noSuchMethod}(new core::_InvocationMirror::_withType(#foo, 1, const <core::Type*>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{}))) as{TypeError,ForDynamic} core::int*;
   no-such-method-forwarder set foo(core::int* value) → void
@@ -21,6 +40,15 @@
   const synthetic constructor •() → self::_C&Object&B*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C extends self::_C&Object&B {
   synthetic constructor •() → self::C*
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_arent_mixed_in.dart.strong.expect b/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_arent_mixed_in.dart.strong.expect
index 9122024..acd2f46 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_arent_mixed_in.dart.strong.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_arent_mixed_in.dart.strong.expect
@@ -7,6 +7,16 @@
   synthetic constructor •() → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends core::Object implements self::A {
   synthetic constructor •() → self::B*
@@ -16,6 +26,15 @@
     self::count = self::count.{core::num::+}(1);
     return null;
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
   no-such-method-forwarder get foo() → core::int*
     return this.{self::B::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 1, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))) as{TypeError,ForDynamic} core::int*;
   no-such-method-forwarder set foo(core::int* value) → void
@@ -25,6 +44,15 @@
   const synthetic constructor •() → self::_C&Object&B*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C extends self::_C&Object&B {
   synthetic constructor •() → self::C*
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_arent_mixed_in.dart.strong.transformed.expect b/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_arent_mixed_in.dart.strong.transformed.expect
index d79f7d2..ade496a 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_arent_mixed_in.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_arent_mixed_in.dart.strong.transformed.expect
@@ -7,6 +7,16 @@
   synthetic constructor •() → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends core::Object implements self::A {
   synthetic constructor •() → self::B*
@@ -16,6 +26,15 @@
     self::count = self::count.{core::num::+}(1);
     return null;
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
   no-such-method-forwarder get foo() → core::int*
     return this.{self::B::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 1, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))) as{TypeError,ForDynamic} core::int*;
   no-such-method-forwarder set foo(core::int* value) → void
@@ -25,6 +44,15 @@
   const synthetic constructor •() → self::_C&Object&B*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
   method noSuchMethod(core::Invocation* i) → dynamic {
     self::count = self::count.{core::num::+}(1);
     return null;
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_one_defined.dart.outline.expect b/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_one_defined.dart.outline.expect
index 300cb94..2d2b785 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_one_defined.dart.outline.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_one_defined.dart.outline.expect
@@ -6,6 +6,16 @@
   field core::int* foo;
   synthetic constructor •() → self::A*
     ;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class B extends core::Object implements self::A {
   synthetic constructor •() → self::B*
@@ -14,6 +24,15 @@
     ;
   method noSuchMethod(core::Invocation* i) → dynamic
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C extends self::B {
   synthetic constructor •() → self::C*
@@ -28,6 +47,15 @@
     ;
   method noSuchMethod(core::Invocation* i) → dynamic
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class E extends self::D {
   synthetic constructor •() → self::E*
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_one_defined.dart.strong.expect b/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_one_defined.dart.strong.expect
index b85a18a..d89d8c3 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_one_defined.dart.strong.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_one_defined.dart.strong.expect
@@ -7,6 +7,16 @@
   synthetic constructor •() → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class B extends core::Object implements self::A {
   synthetic constructor •() → self::B*
@@ -16,6 +26,15 @@
     return 42;
   method noSuchMethod(core::Invocation* i) → dynamic
     return "bar";
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C extends self::B {
   synthetic constructor •() → self::C*
@@ -31,6 +50,15 @@
   set foo(core::int* value) → void {}
   method noSuchMethod(core::Invocation* i) → dynamic
     return "bar";
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class E extends self::D {
   synthetic constructor •() → self::E*
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_one_defined.dart.strong.transformed.expect b/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_one_defined.dart.strong.transformed.expect
index b85a18a..d89d8c3 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_one_defined.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_one_defined.dart.strong.transformed.expect
@@ -7,6 +7,16 @@
   synthetic constructor •() → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class B extends core::Object implements self::A {
   synthetic constructor •() → self::B*
@@ -16,6 +26,15 @@
     return 42;
   method noSuchMethod(core::Invocation* i) → dynamic
     return "bar";
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C extends self::B {
   synthetic constructor •() → self::C*
@@ -31,6 +50,15 @@
   set foo(core::int* value) → void {}
   method noSuchMethod(core::Invocation* i) → dynamic
     return "bar";
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class E extends self::D {
   synthetic constructor •() → self::E*
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_with_substitution.dart.outline.expect b/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_with_substitution.dart.outline.expect
index fc853fa..469d521 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_with_substitution.dart.outline.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_with_substitution.dart.outline.expect
@@ -6,12 +6,31 @@
   generic-covariant-impl field core::List<self::A::X*>* foo;
   synthetic constructor •() → self::A<self::A::X*>*
     ;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends core::Object implements self::A<core::int*> {
   synthetic constructor •() → self::B*
     ;
   method noSuchMethod(core::Invocation* i) → dynamic
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
   no-such-method-forwarder get foo() → core::List<core::int*>*
     return this.{self::B::noSuchMethod}(new core::_InvocationMirror::_withType(#foo, 1, const <core::Type*>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{}))) as{TypeError,ForDynamic} core::List<core::int*>*;
   no-such-method-forwarder set foo(core::List<core::int*>* value) → void
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_with_substitution.dart.strong.expect b/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_with_substitution.dart.strong.expect
index 375d95c..e95044a 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_with_substitution.dart.strong.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_with_substitution.dart.strong.expect
@@ -7,6 +7,16 @@
   synthetic constructor •() → self::A<self::A::X*>*
     : super core::Object::•()
     ;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends core::Object implements self::A<core::int*> {
   synthetic constructor •() → self::B*
@@ -14,6 +24,15 @@
     ;
   method noSuchMethod(core::Invocation* i) → dynamic
     return <dynamic>[];
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
   no-such-method-forwarder get foo() → core::List<core::int*>*
     return this.{self::B::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 1, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))) as{TypeError,ForDynamic} core::List<core::int*>*;
   no-such-method-forwarder set foo(core::List<core::int*>* value) → void
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_with_substitution.dart.strong.transformed.expect b/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_with_substitution.dart.strong.transformed.expect
index 375d95c..e95044a 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_with_substitution.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_with_substitution.dart.strong.transformed.expect
@@ -7,6 +7,16 @@
   synthetic constructor •() → self::A<self::A::X*>*
     : super core::Object::•()
     ;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends core::Object implements self::A<core::int*> {
   synthetic constructor •() → self::B*
@@ -14,6 +24,15 @@
     ;
   method noSuchMethod(core::Invocation* i) → dynamic
     return <dynamic>[];
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
   no-such-method-forwarder get foo() → core::List<core::int*>*
     return this.{self::B::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 1, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))) as{TypeError,ForDynamic} core::List<core::int*>*;
   no-such-method-forwarder set foo(core::List<core::int*>* value) → void
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/abstract_interface_nsm_inherited.dart.outline.expect b/pkg/front_end/testcases/no_such_method_forwarders/abstract_interface_nsm_inherited.dart.outline.expect
index 152c1b8..fe5004b 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/abstract_interface_nsm_inherited.dart.outline.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/abstract_interface_nsm_inherited.dart.outline.expect
@@ -7,11 +7,30 @@
     ;
   method noSuchMethod(core::Invocation* i) → dynamic
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class I extends core::Object {
   synthetic constructor •() → self::I*
     ;
   abstract method foo() → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A implements self::I {
   synthetic constructor •() → self::B*
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/abstract_interface_nsm_inherited.dart.strong.expect b/pkg/front_end/testcases/no_such_method_forwarders/abstract_interface_nsm_inherited.dart.strong.expect
index 72551ea..000d170 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/abstract_interface_nsm_inherited.dart.strong.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/abstract_interface_nsm_inherited.dart.strong.expect
@@ -9,12 +9,31 @@
   method noSuchMethod(core::Invocation* i) → dynamic {
     return null;
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class I extends core::Object {
   synthetic constructor •() → self::I*
     : super core::Object::•()
     ;
   abstract method foo() → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A implements self::I {
   synthetic constructor •() → self::B*
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/abstract_interface_nsm_inherited.dart.strong.transformed.expect b/pkg/front_end/testcases/no_such_method_forwarders/abstract_interface_nsm_inherited.dart.strong.transformed.expect
index 72551ea..000d170 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/abstract_interface_nsm_inherited.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/abstract_interface_nsm_inherited.dart.strong.transformed.expect
@@ -9,12 +9,31 @@
   method noSuchMethod(core::Invocation* i) → dynamic {
     return null;
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class I extends core::Object {
   synthetic constructor •() → self::I*
     : super core::Object::•()
     ;
   abstract method foo() → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A implements self::I {
   synthetic constructor •() → self::B*
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/abstract_override_abstract_different_type.dart.outline.expect b/pkg/front_end/testcases/no_such_method_forwarders/abstract_override_abstract_different_type.dart.outline.expect
index bc26eb6..a1b7d2b 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/abstract_override_abstract_different_type.dart.outline.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/abstract_override_abstract_different_type.dart.outline.expect
@@ -11,6 +11,15 @@
     return this.{self::Base::noSuchMethod}(new core::_InvocationMirror::_withType(#float=, 2, const <core::Type*>[], core::List::unmodifiable<dynamic>(<dynamic>[x]), core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{})));
   method noSuchMethod(core::Invocation* i) → dynamic
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Me extends self::Base {
   synthetic constructor •() → self::Me*
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/abstract_override_abstract_different_type.dart.strong.expect b/pkg/front_end/testcases/no_such_method_forwarders/abstract_override_abstract_different_type.dart.strong.expect
index f100a39..616a908 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/abstract_override_abstract_different_type.dart.strong.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/abstract_override_abstract_different_type.dart.strong.expect
@@ -11,7 +11,16 @@
   no-such-method-forwarder set float(covariant core::int* x) → void
     return this.{self::Base::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 2, #C2, core::List::unmodifiable<dynamic>(<dynamic>[x]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
   method noSuchMethod(core::Invocation* i) → dynamic
-    return core::print("${this.{core::Object::runtimeType}}: ${i.{core::Invocation::positionalArguments}.{core::List::[]}(0)}");
+    return core::print("${this.{self::Base::runtimeType}}: ${i.{core::Invocation::positionalArguments}.{core::List::[]}(0)}");
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Me extends self::Base {
   synthetic constructor •() → self::Me*
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/abstract_override_abstract_different_type.dart.strong.transformed.expect b/pkg/front_end/testcases/no_such_method_forwarders/abstract_override_abstract_different_type.dart.strong.transformed.expect
index 5600544..0368ba0 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/abstract_override_abstract_different_type.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/abstract_override_abstract_different_type.dart.strong.transformed.expect
@@ -11,7 +11,16 @@
   no-such-method-forwarder set float(covariant core::int* x) → void
     return this.{self::Base::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 2, #C2, core::List::unmodifiable<dynamic>(<dynamic>[x]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
   method noSuchMethod(core::Invocation* i) → dynamic
-    return core::print("${this.{core::Object::runtimeType}}: ${i.{core::Invocation::positionalArguments}.{core::List::[]}(0)}");
+    return core::print("${this.{self::Base::runtimeType}}: ${i.{core::Invocation::positionalArguments}.{core::List::[]}(0)}");
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Me extends self::Base {
   synthetic constructor •() → self::Me*
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/abstract_override_with_different_signature.dart.outline.expect b/pkg/front_end/testcases/no_such_method_forwarders/abstract_override_with_different_signature.dart.outline.expect
index 6db081f..244e9bc 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/abstract_override_with_different_signature.dart.outline.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/abstract_override_with_different_signature.dart.outline.expect
@@ -7,12 +7,31 @@
     ;
   method eatFood(core::String* food) → core::bool*
     ;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class MockCat extends core::Object implements self::Cat {
   synthetic constructor •() → self::MockCat*
     ;
   method noSuchMethod(core::Invocation* invocation) → dynamic
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
   no-such-method-forwarder method eatFood(core::String* food) → core::bool*
     return this.{self::MockCat::noSuchMethod}(new core::_InvocationMirror::_withType(#eatFood, 0, const <core::Type*>[], core::List::unmodifiable<dynamic>(<dynamic>[food]), core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{}))) as{TypeError,ForDynamic} core::bool*;
 }
@@ -37,6 +56,16 @@
   synthetic constructor •() → self::HungryCat*
     ;
   abstract method eatFood(core::String* food, {core::double* amount, core::double* yetAnother}) → core::bool*;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/abstract_override_with_different_signature.dart.strong.expect b/pkg/front_end/testcases/no_such_method_forwarders/abstract_override_with_different_signature.dart.strong.expect
index 680a081..3f1e331 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/abstract_override_with_different_signature.dart.strong.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/abstract_override_with_different_signature.dart.strong.expect
@@ -8,6 +8,16 @@
     ;
   method eatFood(core::String* food) → core::bool*
     return true;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class MockCat extends core::Object implements self::Cat {
   synthetic constructor •() → self::MockCat*
@@ -17,6 +27,15 @@
     dynamic arg = invocation.{core::Invocation::positionalArguments}.{core::List::[]}(0);
     return arg is core::String* && arg{core::String*}.{core::String::isNotEmpty};
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
   no-such-method-forwarder method eatFood(core::String* food) → core::bool*
     return this.{self::MockCat::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, core::List::unmodifiable<dynamic>(<dynamic>[food]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))) as{TypeError,ForDynamic} core::bool*;
 }
@@ -45,6 +64,16 @@
     : super core::Object::•()
     ;
   abstract method eatFood(core::String* food, {core::double* amount = #C5, core::double* yetAnother = #C5}) → core::bool*;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
 
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/abstract_override_with_different_signature.dart.strong.transformed.expect b/pkg/front_end/testcases/no_such_method_forwarders/abstract_override_with_different_signature.dart.strong.transformed.expect
index 680a081..3f1e331 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/abstract_override_with_different_signature.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/abstract_override_with_different_signature.dart.strong.transformed.expect
@@ -8,6 +8,16 @@
     ;
   method eatFood(core::String* food) → core::bool*
     return true;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class MockCat extends core::Object implements self::Cat {
   synthetic constructor •() → self::MockCat*
@@ -17,6 +27,15 @@
     dynamic arg = invocation.{core::Invocation::positionalArguments}.{core::List::[]}(0);
     return arg is core::String* && arg{core::String*}.{core::String::isNotEmpty};
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
   no-such-method-forwarder method eatFood(core::String* food) → core::bool*
     return this.{self::MockCat::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, core::List::unmodifiable<dynamic>(<dynamic>[food]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))) as{TypeError,ForDynamic} core::bool*;
 }
@@ -45,6 +64,16 @@
     : super core::Object::•()
     ;
   abstract method eatFood(core::String* food, {core::double* amount = #C5, core::double* yetAnother = #C5}) → core::bool*;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
 
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/concrete_method_over_forwarder_in_mixin_application.dart.outline.expect b/pkg/front_end/testcases/no_such_method_forwarders/concrete_method_over_forwarder_in_mixin_application.dart.outline.expect
index 4c2e89f..681c0d7 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/concrete_method_over_forwarder_in_mixin_application.dart.outline.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/concrete_method_over_forwarder_in_mixin_application.dart.outline.expect
@@ -6,18 +6,47 @@
   synthetic constructor •() → self::I*
     ;
   abstract method foo() → dynamic;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class A extends core::Object {
   synthetic constructor •() → self::A*
     ;
   method foo() → dynamic
     ;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends core::Object implements self::I {
   synthetic constructor •() → self::B*
     ;
   method noSuchMethod(core::Invocation* _) → dynamic
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
   no-such-method-forwarder method foo() → dynamic
     return this.{self::B::noSuchMethod}(new core::_InvocationMirror::_withType(#foo, 0, const <core::Type*>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{}))) as{TypeError,ForDynamic} dynamic;
 }
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/concrete_method_over_forwarder_in_mixin_application.dart.strong.expect b/pkg/front_end/testcases/no_such_method_forwarders/concrete_method_over_forwarder_in_mixin_application.dart.strong.expect
index 3c6a058..3cad0c8 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/concrete_method_over_forwarder_in_mixin_application.dart.strong.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/concrete_method_over_forwarder_in_mixin_application.dart.strong.expect
@@ -7,12 +7,32 @@
     : super core::Object::•()
     ;
   abstract method foo() → dynamic;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class A extends core::Object {
   synthetic constructor •() → self::A*
     : super core::Object::•()
     ;
   method foo() → dynamic {}
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends core::Object implements self::I {
   synthetic constructor •() → self::B*
@@ -20,6 +40,15 @@
     ;
   method noSuchMethod(core::Invocation* _) → dynamic
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
   no-such-method-forwarder method foo() → dynamic
     return this.{self::B::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))) as{TypeError,ForDynamic} dynamic;
 }
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/concrete_method_over_forwarder_in_mixin_application.dart.strong.transformed.expect b/pkg/front_end/testcases/no_such_method_forwarders/concrete_method_over_forwarder_in_mixin_application.dart.strong.transformed.expect
index 42b6d98..2791518 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/concrete_method_over_forwarder_in_mixin_application.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/concrete_method_over_forwarder_in_mixin_application.dart.strong.transformed.expect
@@ -7,12 +7,32 @@
     : super core::Object::•()
     ;
   abstract method foo() → dynamic;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class A extends core::Object {
   synthetic constructor •() → self::A*
     : super core::Object::•()
     ;
   method foo() → dynamic {}
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends core::Object implements self::I {
   synthetic constructor •() → self::B*
@@ -20,6 +40,15 @@
     ;
   method noSuchMethod(core::Invocation* _) → dynamic
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
   no-such-method-forwarder method foo() → dynamic
     return this.{self::B::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))) as{TypeError,ForDynamic} dynamic;
 }
@@ -29,6 +58,15 @@
     ;
   method noSuchMethod(core::Invocation* _) → dynamic
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C extends self::_C&A&B {
   synthetic constructor •() → self::C*
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/default_argument_values.dart.outline.expect b/pkg/front_end/testcases/no_such_method_forwarders/default_argument_values.dart.outline.expect
index d3a6abd..6fd71d5 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/default_argument_values.dart.outline.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/default_argument_values.dart.outline.expect
@@ -9,6 +9,15 @@
     ;
   abstract method foo({core::String* bar = "baz"}) → core::String*;
   abstract method hest([core::int* fisk = 42]) → core::int*;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A {
   synthetic constructor •() → self::B*
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/default_argument_values.dart.strong.expect b/pkg/front_end/testcases/no_such_method_forwarders/default_argument_values.dart.strong.expect
index c1ba2a7..ec72a2f 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/default_argument_values.dart.strong.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/default_argument_values.dart.strong.expect
@@ -18,6 +18,15 @@
   }
   abstract method foo({core::String* bar = #C4}) → core::String*;
   abstract method hest([core::int* fisk = #C5]) → core::int*;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A {
   synthetic constructor •() → self::B*
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/default_argument_values.dart.strong.transformed.expect b/pkg/front_end/testcases/no_such_method_forwarders/default_argument_values.dart.strong.transformed.expect
index c1ba2a7..ec72a2f 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/default_argument_values.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/default_argument_values.dart.strong.transformed.expect
@@ -18,6 +18,15 @@
   }
   abstract method foo({core::String* bar = #C4}) → core::String*;
   abstract method hest([core::int* fisk = #C5]) → core::int*;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A {
   synthetic constructor •() → self::B*
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/duplicated_abstract_method.dart.outline.expect b/pkg/front_end/testcases/no_such_method_forwarders/duplicated_abstract_method.dart.outline.expect
index c6b5f2d..128d1ed 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/duplicated_abstract_method.dart.outline.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/duplicated_abstract_method.dart.outline.expect
@@ -6,17 +6,46 @@
   synthetic constructor •() → self::I1*
     ;
   abstract method foo() → void;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class I2 extends core::Object {
   synthetic constructor •() → self::I2*
     ;
   abstract method foo() → void;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class M extends core::Object implements self::I1, self::I2 {
   synthetic constructor •() → self::M*
     ;
   method noSuchMethod(core::Invocation* i) → dynamic
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
   no-such-method-forwarder method foo() → void
     return this.{self::M::noSuchMethod}(new core::_InvocationMirror::_withType(#foo, 0, const <core::Type*>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{})));
 }
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/duplicated_abstract_method.dart.strong.expect b/pkg/front_end/testcases/no_such_method_forwarders/duplicated_abstract_method.dart.strong.expect
index 62cd5e1a..7718026 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/duplicated_abstract_method.dart.strong.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/duplicated_abstract_method.dart.strong.expect
@@ -7,12 +7,32 @@
     : super core::Object::•()
     ;
   abstract method foo() → void;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class I2 extends core::Object {
   synthetic constructor •() → self::I2*
     : super core::Object::•()
     ;
   abstract method foo() → void;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class M extends core::Object implements self::I1, self::I2 {
   synthetic constructor •() → self::M*
@@ -20,6 +40,15 @@
     ;
   method noSuchMethod(core::Invocation* i) → dynamic
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
   no-such-method-forwarder method foo() → void
     return this.{self::M::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
 }
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/duplicated_abstract_method.dart.strong.transformed.expect b/pkg/front_end/testcases/no_such_method_forwarders/duplicated_abstract_method.dart.strong.transformed.expect
index 62cd5e1a..7718026 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/duplicated_abstract_method.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/duplicated_abstract_method.dart.strong.transformed.expect
@@ -7,12 +7,32 @@
     : super core::Object::•()
     ;
   abstract method foo() → void;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class I2 extends core::Object {
   synthetic constructor •() → self::I2*
     : super core::Object::•()
     ;
   abstract method foo() → void;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class M extends core::Object implements self::I1, self::I2 {
   synthetic constructor •() → self::M*
@@ -20,6 +40,15 @@
     ;
   method noSuchMethod(core::Invocation* i) → dynamic
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
   no-such-method-forwarder method foo() → void
     return this.{self::M::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
 }
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/forwarder_propagation.dart.outline.expect b/pkg/front_end/testcases/no_such_method_forwarders/forwarder_propagation.dart.outline.expect
index 25d1c56..68b8714 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/forwarder_propagation.dart.outline.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/forwarder_propagation.dart.outline.expect
@@ -11,12 +11,31 @@
   abstract set foo(core::int* value) → void;
   abstract get bar() → core::int*;
   abstract method baz(core::int* x, {core::String* y, core::double* z}) → void;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends core::Object implements self::A {
   synthetic constructor •() → self::B*
     ;
   method noSuchMethod(core::Invocation* _) → dynamic
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
   no-such-method-forwarder get bar() → core::int*
     return this.{self::B::noSuchMethod}(new core::_InvocationMirror::_withType(#bar, 1, const <core::Type*>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{}))) as{TypeError,ForDynamic} core::int*;
   no-such-method-forwarder method baz(core::int* x, {core::String* y, core::double* z}) → void
@@ -31,16 +50,26 @@
 class E extends core::Object implements for::D {
   synthetic constructor •() → self::E*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
   no-such-method-forwarder get /* from org-dartlang-testcase:///forwarder_propagation_lib.dart */ _privateGetter() → core::int*
-    return this.{core::Object::noSuchMethod}(new core::_InvocationMirror::_withType(#_privateGetter, 1, const <core::Type*>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{}))) as{TypeError,ForDynamic} core::int*;
+    return this.{self::E::noSuchMethod}(new core::_InvocationMirror::_withType(#_privateGetter, 1, const <core::Type*>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{}))) as{TypeError,ForDynamic} core::int*;
   no-such-method-forwarder get /* from org-dartlang-testcase:///forwarder_propagation_lib.dart */ _privateField() → core::int*
-    return this.{core::Object::noSuchMethod}(new core::_InvocationMirror::_withType(#_privateField, 1, const <core::Type*>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{}))) as{TypeError,ForDynamic} core::int*;
+    return this.{self::E::noSuchMethod}(new core::_InvocationMirror::_withType(#_privateField, 1, const <core::Type*>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{}))) as{TypeError,ForDynamic} core::int*;
   no-such-method-forwarder method /* from org-dartlang-testcase:///forwarder_propagation_lib.dart */ _privateMethod() → void
-    return this.{core::Object::noSuchMethod}(new core::_InvocationMirror::_withType(#_privateMethod, 0, const <core::Type*>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{})));
+    return this.{self::E::noSuchMethod}(new core::_InvocationMirror::_withType(#_privateMethod, 0, const <core::Type*>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{})));
   no-such-method-forwarder set /* from org-dartlang-testcase:///forwarder_propagation_lib.dart */ _privateSetter(core::int* value) → void
-    return this.{core::Object::noSuchMethod}(new core::_InvocationMirror::_withType(#_privateSetter=, 2, const <core::Type*>[], core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{})));
+    return this.{self::E::noSuchMethod}(new core::_InvocationMirror::_withType(#_privateSetter=, 2, const <core::Type*>[], core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{})));
   no-such-method-forwarder set /* from org-dartlang-testcase:///forwarder_propagation_lib.dart */ _privateField(core::int* value) → void
-    return this.{core::Object::noSuchMethod}(new core::_InvocationMirror::_withType(#_privateField=, 2, const <core::Type*>[], core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{})));
+    return this.{self::E::noSuchMethod}(new core::_InvocationMirror::_withType(#_privateField=, 2, const <core::Type*>[], core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{})));
 }
 class F extends self::E {
   synthetic constructor •() → self::F*
@@ -60,4 +89,14 @@
   abstract get _privateGetter() → core::int*;
   abstract set _privateSetter(core::int* value) → void;
   abstract method _privateMethod() → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/forwarder_propagation.dart.strong.expect b/pkg/front_end/testcases/no_such_method_forwarders/forwarder_propagation.dart.strong.expect
index d0f1d23..17f8a24 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/forwarder_propagation.dart.strong.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/forwarder_propagation.dart.strong.expect
@@ -12,12 +12,31 @@
   abstract set foo(core::int* value) → void;
   abstract get bar() → core::int*;
   abstract method baz(core::int* x, {core::String* y = #C1, core::double* z = #C1}) → void;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends core::Object implements self::A {
   synthetic constructor •() → self::B*
     : super core::Object::•()
     ;
   method noSuchMethod(core::Invocation* _) → dynamic {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
   no-such-method-forwarder get bar() → core::int*
     return this.{self::B::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 1, #C3, #C4, core::Map::unmodifiable<core::Symbol*, dynamic>(#C5))) as{TypeError,ForDynamic} core::int*;
   no-such-method-forwarder method baz(core::int* x, {core::String* y = #C1, core::double* z = #C1}) → void
@@ -34,16 +53,26 @@
   synthetic constructor •() → self::E*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
   no-such-method-forwarder get /* from org-dartlang-testcase:///forwarder_propagation_lib.dart */ _privateGetter() → core::int*
-    return this.{core::Object::noSuchMethod}(new core::_InvocationMirror::_withType(#C10, 1, #C3, #C4, core::Map::unmodifiable<core::Symbol*, dynamic>(#C5))) as{TypeError,ForDynamic} core::int*;
+    return this.{self::E::noSuchMethod}(new core::_InvocationMirror::_withType(#C10, 1, #C3, #C4, core::Map::unmodifiable<core::Symbol*, dynamic>(#C5))) as{TypeError,ForDynamic} core::int*;
   no-such-method-forwarder get /* from org-dartlang-testcase:///forwarder_propagation_lib.dart */ _privateField() → core::int*
-    return this.{core::Object::noSuchMethod}(new core::_InvocationMirror::_withType(#C11, 1, #C3, #C4, core::Map::unmodifiable<core::Symbol*, dynamic>(#C5))) as{TypeError,ForDynamic} core::int*;
+    return this.{self::E::noSuchMethod}(new core::_InvocationMirror::_withType(#C11, 1, #C3, #C4, core::Map::unmodifiable<core::Symbol*, dynamic>(#C5))) as{TypeError,ForDynamic} core::int*;
   no-such-method-forwarder method /* from org-dartlang-testcase:///forwarder_propagation_lib.dart */ _privateMethod() → void
-    return this.{core::Object::noSuchMethod}(new core::_InvocationMirror::_withType(#C12, 0, #C3, #C4, core::Map::unmodifiable<core::Symbol*, dynamic>(#C5)));
+    return this.{self::E::noSuchMethod}(new core::_InvocationMirror::_withType(#C12, 0, #C3, #C4, core::Map::unmodifiable<core::Symbol*, dynamic>(#C5)));
   no-such-method-forwarder set /* from org-dartlang-testcase:///forwarder_propagation_lib.dart */ _privateSetter(core::int* value) → void
-    return this.{core::Object::noSuchMethod}(new core::_InvocationMirror::_withType(#C13, 2, #C3, core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C5)));
+    return this.{self::E::noSuchMethod}(new core::_InvocationMirror::_withType(#C13, 2, #C3, core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C5)));
   no-such-method-forwarder set /* from org-dartlang-testcase:///forwarder_propagation_lib.dart */ _privateField(core::int* value) → void
-    return this.{core::Object::noSuchMethod}(new core::_InvocationMirror::_withType(#C14, 2, #C3, core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C5)));
+    return this.{self::E::noSuchMethod}(new core::_InvocationMirror::_withType(#C14, 2, #C3, core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C5)));
 }
 class F extends self::E {
   synthetic constructor •() → self::F*
@@ -64,6 +93,16 @@
   abstract get _privateGetter() → core::int*;
   abstract set _privateSetter(core::int* value) → void;
   abstract method _privateMethod() → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 
 constants  {
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/forwarder_propagation.dart.strong.transformed.expect b/pkg/front_end/testcases/no_such_method_forwarders/forwarder_propagation.dart.strong.transformed.expect
index d0f1d23..17f8a24 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/forwarder_propagation.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/forwarder_propagation.dart.strong.transformed.expect
@@ -12,12 +12,31 @@
   abstract set foo(core::int* value) → void;
   abstract get bar() → core::int*;
   abstract method baz(core::int* x, {core::String* y = #C1, core::double* z = #C1}) → void;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends core::Object implements self::A {
   synthetic constructor •() → self::B*
     : super core::Object::•()
     ;
   method noSuchMethod(core::Invocation* _) → dynamic {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
   no-such-method-forwarder get bar() → core::int*
     return this.{self::B::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 1, #C3, #C4, core::Map::unmodifiable<core::Symbol*, dynamic>(#C5))) as{TypeError,ForDynamic} core::int*;
   no-such-method-forwarder method baz(core::int* x, {core::String* y = #C1, core::double* z = #C1}) → void
@@ -34,16 +53,26 @@
   synthetic constructor •() → self::E*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
   no-such-method-forwarder get /* from org-dartlang-testcase:///forwarder_propagation_lib.dart */ _privateGetter() → core::int*
-    return this.{core::Object::noSuchMethod}(new core::_InvocationMirror::_withType(#C10, 1, #C3, #C4, core::Map::unmodifiable<core::Symbol*, dynamic>(#C5))) as{TypeError,ForDynamic} core::int*;
+    return this.{self::E::noSuchMethod}(new core::_InvocationMirror::_withType(#C10, 1, #C3, #C4, core::Map::unmodifiable<core::Symbol*, dynamic>(#C5))) as{TypeError,ForDynamic} core::int*;
   no-such-method-forwarder get /* from org-dartlang-testcase:///forwarder_propagation_lib.dart */ _privateField() → core::int*
-    return this.{core::Object::noSuchMethod}(new core::_InvocationMirror::_withType(#C11, 1, #C3, #C4, core::Map::unmodifiable<core::Symbol*, dynamic>(#C5))) as{TypeError,ForDynamic} core::int*;
+    return this.{self::E::noSuchMethod}(new core::_InvocationMirror::_withType(#C11, 1, #C3, #C4, core::Map::unmodifiable<core::Symbol*, dynamic>(#C5))) as{TypeError,ForDynamic} core::int*;
   no-such-method-forwarder method /* from org-dartlang-testcase:///forwarder_propagation_lib.dart */ _privateMethod() → void
-    return this.{core::Object::noSuchMethod}(new core::_InvocationMirror::_withType(#C12, 0, #C3, #C4, core::Map::unmodifiable<core::Symbol*, dynamic>(#C5)));
+    return this.{self::E::noSuchMethod}(new core::_InvocationMirror::_withType(#C12, 0, #C3, #C4, core::Map::unmodifiable<core::Symbol*, dynamic>(#C5)));
   no-such-method-forwarder set /* from org-dartlang-testcase:///forwarder_propagation_lib.dart */ _privateSetter(core::int* value) → void
-    return this.{core::Object::noSuchMethod}(new core::_InvocationMirror::_withType(#C13, 2, #C3, core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C5)));
+    return this.{self::E::noSuchMethod}(new core::_InvocationMirror::_withType(#C13, 2, #C3, core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C5)));
   no-such-method-forwarder set /* from org-dartlang-testcase:///forwarder_propagation_lib.dart */ _privateField(core::int* value) → void
-    return this.{core::Object::noSuchMethod}(new core::_InvocationMirror::_withType(#C14, 2, #C3, core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C5)));
+    return this.{self::E::noSuchMethod}(new core::_InvocationMirror::_withType(#C14, 2, #C3, core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C5)));
 }
 class F extends self::E {
   synthetic constructor •() → self::F*
@@ -64,6 +93,16 @@
   abstract get _privateGetter() → core::int*;
   abstract set _privateSetter(core::int* value) → void;
   abstract method _privateMethod() → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 
 constants  {
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/forwarders_not_assumed_from_mixin.dart.outline.expect b/pkg/front_end/testcases/no_such_method_forwarders/forwarders_not_assumed_from_mixin.dart.outline.expect
index b8d08ac..cfd3d0e 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/forwarders_not_assumed_from_mixin.dart.outline.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/forwarders_not_assumed_from_mixin.dart.outline.expect
@@ -6,12 +6,31 @@
   synthetic constructor •() → self::I*
     ;
   abstract method foo() → void;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class A extends core::Object implements self::I {
   synthetic constructor •() → self::A*
     ;
   method noSuchMethod(core::Invocation* i) → dynamic
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
   no-such-method-forwarder method foo() → void
     return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#foo, 0, const <core::Type*>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{})));
 }
@@ -19,6 +38,15 @@
   const synthetic constructor •() → self::_B&Object&A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::_B&Object&A {
   synthetic constructor •() → self::B*
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/forwarders_not_assumed_from_mixin.dart.strong.expect b/pkg/front_end/testcases/no_such_method_forwarders/forwarders_not_assumed_from_mixin.dart.strong.expect
index 06216c7..a6e12ca6 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/forwarders_not_assumed_from_mixin.dart.strong.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/forwarders_not_assumed_from_mixin.dart.strong.expect
@@ -7,6 +7,16 @@
     : super core::Object::•()
     ;
   abstract method foo() → void;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class A extends core::Object implements self::I {
   synthetic constructor •() → self::A*
@@ -14,6 +24,15 @@
     ;
   method noSuchMethod(core::Invocation* i) → dynamic
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
   no-such-method-forwarder method foo() → void
     return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
 }
@@ -21,6 +40,15 @@
   const synthetic constructor •() → self::_B&Object&A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::_B&Object&A {
   synthetic constructor •() → self::B*
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/forwarders_not_assumed_from_mixin.dart.strong.transformed.expect b/pkg/front_end/testcases/no_such_method_forwarders/forwarders_not_assumed_from_mixin.dart.strong.transformed.expect
index e4bb8b9..292aa70 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/forwarders_not_assumed_from_mixin.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/forwarders_not_assumed_from_mixin.dart.strong.transformed.expect
@@ -7,6 +7,16 @@
     : super core::Object::•()
     ;
   abstract method foo() → void;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class A extends core::Object implements self::I {
   synthetic constructor •() → self::A*
@@ -14,6 +24,15 @@
     ;
   method noSuchMethod(core::Invocation* i) → dynamic
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
   no-such-method-forwarder method foo() → void
     return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
 }
@@ -21,6 +40,15 @@
   const synthetic constructor •() → self::_B&Object&A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
   method noSuchMethod(core::Invocation* i) → dynamic
     return null;
 }
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/interface_with_concrete.dart.outline.expect b/pkg/front_end/testcases/no_such_method_forwarders/interface_with_concrete.dart.outline.expect
index 6c6a433..23cd83d 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/interface_with_concrete.dart.outline.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/interface_with_concrete.dart.outline.expect
@@ -7,12 +7,31 @@
     ;
   method noSuchMethod(core::Invocation* i) → dynamic
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class I extends core::Object {
   synthetic constructor •() → self::I*
     ;
   method foo() → void
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A implements self::I {
   synthetic constructor •() → self::B*
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/interface_with_concrete.dart.strong.expect b/pkg/front_end/testcases/no_such_method_forwarders/interface_with_concrete.dart.strong.expect
index 0cbcb2c..a0c35da 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/interface_with_concrete.dart.strong.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/interface_with_concrete.dart.strong.expect
@@ -9,12 +9,31 @@
   method noSuchMethod(core::Invocation* i) → dynamic {
     return null;
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class I extends core::Object {
   synthetic constructor •() → self::I*
     : super core::Object::•()
     ;
   method foo() → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A implements self::I {
   synthetic constructor •() → self::B*
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/interface_with_concrete.dart.strong.transformed.expect b/pkg/front_end/testcases/no_such_method_forwarders/interface_with_concrete.dart.strong.transformed.expect
index 0cbcb2c..a0c35da 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/interface_with_concrete.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/interface_with_concrete.dart.strong.transformed.expect
@@ -9,12 +9,31 @@
   method noSuchMethod(core::Invocation* i) → dynamic {
     return null;
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class I extends core::Object {
   synthetic constructor •() → self::I*
     : super core::Object::•()
     ;
   method foo() → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A implements self::I {
   synthetic constructor •() → self::B*
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/interface_with_nsm.dart.outline.expect b/pkg/front_end/testcases/no_such_method_forwarders/interface_with_nsm.dart.outline.expect
index 1b7f1ee..7bfd6a5 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/interface_with_nsm.dart.outline.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/interface_with_nsm.dart.outline.expect
@@ -9,17 +9,44 @@
     ;
   no-such-method-forwarder method foo() → void
     return this.{self::I::noSuchMethod}(new core::_InvocationMirror::_withType(#foo, 0, const <core::Type*>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{})));
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class M extends core::Object {
   synthetic constructor •() → self::M*
     ;
   method noSuchMethod(core::Invocation* i) → dynamic
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class _A&Object&M = core::Object with self::M /*isAnonymousMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::_A&Object&M*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class A extends self::_A&Object&M implements self::I {
   synthetic constructor •() → self::A*
@@ -31,6 +58,15 @@
   const synthetic constructor •() → self::_B&Object&M*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::_B&Object&M implements self::I {
   synthetic constructor •() → self::B*
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/interface_with_nsm.dart.strong.expect b/pkg/front_end/testcases/no_such_method_forwarders/interface_with_nsm.dart.strong.expect
index 0ee259e..3ac725f 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/interface_with_nsm.dart.strong.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/interface_with_nsm.dart.strong.expect
@@ -10,6 +10,15 @@
     return null;
   no-such-method-forwarder method foo() → void
     return this.{self::I::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class M extends core::Object {
   synthetic constructor •() → self::M*
@@ -17,11 +26,29 @@
     ;
   method noSuchMethod(core::Invocation* i) → dynamic
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class _A&Object&M = core::Object with self::M /*isAnonymousMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::_A&Object&M*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class A extends self::_A&Object&M implements self::I {
   synthetic constructor •() → self::A*
@@ -34,6 +61,15 @@
   const synthetic constructor •() → self::_B&Object&M*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::_B&Object&M implements self::I {
   synthetic constructor •() → self::B*
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/interface_with_nsm.dart.strong.transformed.expect b/pkg/front_end/testcases/no_such_method_forwarders/interface_with_nsm.dart.strong.transformed.expect
index c1b4b9b..b90fe35 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/interface_with_nsm.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/interface_with_nsm.dart.strong.transformed.expect
@@ -10,6 +10,15 @@
     return null;
   no-such-method-forwarder method foo() → void
     return this.{self::I::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class M extends core::Object {
   synthetic constructor •() → self::M*
@@ -17,11 +26,29 @@
     ;
   method noSuchMethod(core::Invocation* i) → dynamic
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class _A&Object&M extends core::Object implements self::M /*isAnonymousMixin,isEliminatedMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::_A&Object&M*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
   method noSuchMethod(core::Invocation* i) → dynamic
     return null;
 }
@@ -36,6 +63,15 @@
   const synthetic constructor •() → self::_B&Object&M*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
   method noSuchMethod(core::Invocation* i) → dynamic
     return null;
 }
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/multiple_abstract_setters.dart.outline.expect b/pkg/front_end/testcases/no_such_method_forwarders/multiple_abstract_setters.dart.outline.expect
index 70f1755..644deed 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/multiple_abstract_setters.dart.outline.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/multiple_abstract_setters.dart.outline.expect
@@ -9,6 +9,16 @@
     ;
   get bar() → core::int*
     ;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends core::Object {
   synthetic constructor •() → self::B*
@@ -17,6 +27,16 @@
     ;
   get bar() → core::double*
     ;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C extends core::Object {
   synthetic constructor •() → self::C*
@@ -25,12 +45,31 @@
     ;
   get bar() → core::Null?
     ;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D extends core::Object implements self::C, self::A, self::B {
   synthetic constructor •() → self::D*
     ;
   method noSuchMethod(core::Invocation* _) → dynamic
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
   no-such-method-forwarder get bar() → core::Null?
     return this.{self::D::noSuchMethod}(new core::_InvocationMirror::_withType(#bar, 1, const <core::Type*>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{}))) as{TypeError,ForDynamic} core::Null?;
   no-such-method-forwarder set foo(core::num* value) → void
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/multiple_abstract_setters.dart.strong.expect b/pkg/front_end/testcases/no_such_method_forwarders/multiple_abstract_setters.dart.strong.expect
index 5ae491b..6edf859 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/multiple_abstract_setters.dart.strong.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/multiple_abstract_setters.dart.strong.expect
@@ -9,6 +9,16 @@
   set foo(core::int* value) → void {}
   get bar() → core::int*
     return null;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends core::Object {
   synthetic constructor •() → self::B*
@@ -17,6 +27,16 @@
   set foo(core::double* value) → void {}
   get bar() → core::double*
     return null;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C extends core::Object {
   synthetic constructor •() → self::C*
@@ -25,6 +45,16 @@
   set foo(core::num* value) → void {}
   get bar() → core::Null?
     return null;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D extends core::Object implements self::C, self::A, self::B {
   synthetic constructor •() → self::D*
@@ -32,6 +62,15 @@
     ;
   method noSuchMethod(core::Invocation* _) → dynamic
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
   no-such-method-forwarder get bar() → core::Null?
     return this.{self::D::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 1, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))) as{TypeError,ForDynamic} core::Null?;
   no-such-method-forwarder set foo(core::num* value) → void
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/multiple_abstract_setters.dart.strong.transformed.expect b/pkg/front_end/testcases/no_such_method_forwarders/multiple_abstract_setters.dart.strong.transformed.expect
index 5ae491b..6edf859 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/multiple_abstract_setters.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/multiple_abstract_setters.dart.strong.transformed.expect
@@ -9,6 +9,16 @@
   set foo(core::int* value) → void {}
   get bar() → core::int*
     return null;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends core::Object {
   synthetic constructor •() → self::B*
@@ -17,6 +27,16 @@
   set foo(core::double* value) → void {}
   get bar() → core::double*
     return null;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C extends core::Object {
   synthetic constructor •() → self::C*
@@ -25,6 +45,16 @@
   set foo(core::num* value) → void {}
   get bar() → core::Null?
     return null;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D extends core::Object implements self::C, self::A, self::B {
   synthetic constructor •() → self::D*
@@ -32,6 +62,15 @@
     ;
   method noSuchMethod(core::Invocation* _) → dynamic
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
   no-such-method-forwarder get bar() → core::Null?
     return this.{self::D::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 1, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))) as{TypeError,ForDynamic} core::Null?;
   no-such-method-forwarder set foo(core::num* value) → void
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/no_forwarders_for_abstract_classes.dart.outline.expect b/pkg/front_end/testcases/no_such_method_forwarders/no_forwarders_for_abstract_classes.dart.outline.expect
index 65ed57a..f1b154e 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/no_forwarders_for_abstract_classes.dart.outline.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/no_forwarders_for_abstract_classes.dart.outline.expect
@@ -8,6 +8,15 @@
   method noSuchMethod(core::Invocation* i) → dynamic
     ;
   abstract method foo() → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A {
   synthetic constructor •() → self::B*
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/no_forwarders_for_abstract_classes.dart.strong.expect b/pkg/front_end/testcases/no_such_method_forwarders/no_forwarders_for_abstract_classes.dart.strong.expect
index f979826..ad8ebda 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/no_forwarders_for_abstract_classes.dart.strong.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/no_forwarders_for_abstract_classes.dart.strong.expect
@@ -9,6 +9,15 @@
   method noSuchMethod(core::Invocation* i) → dynamic
     return null;
   abstract method foo() → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A {
   synthetic constructor •() → self::B*
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/no_forwarders_for_abstract_classes.dart.strong.transformed.expect b/pkg/front_end/testcases/no_such_method_forwarders/no_forwarders_for_abstract_classes.dart.strong.transformed.expect
index f979826..ad8ebda 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/no_forwarders_for_abstract_classes.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/no_forwarders_for_abstract_classes.dart.strong.transformed.expect
@@ -9,6 +9,15 @@
   method noSuchMethod(core::Invocation* i) → dynamic
     return null;
   abstract method foo() → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A {
   synthetic constructor •() → self::B*
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/no_forwarders_for_abstract_classes_chain.dart.outline.expect b/pkg/front_end/testcases/no_such_method_forwarders/no_forwarders_for_abstract_classes_chain.dart.outline.expect
index 3302bb8..b35ab4e 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/no_forwarders_for_abstract_classes_chain.dart.outline.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/no_forwarders_for_abstract_classes_chain.dart.outline.expect
@@ -8,6 +8,15 @@
   method noSuchMethod(core::Invocation* i) → dynamic
     ;
   abstract method foo() → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class B extends self::A {
   synthetic constructor •() → self::B*
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/no_forwarders_for_abstract_classes_chain.dart.strong.expect b/pkg/front_end/testcases/no_such_method_forwarders/no_forwarders_for_abstract_classes_chain.dart.strong.expect
index 88de606..48aed0c 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/no_forwarders_for_abstract_classes_chain.dart.strong.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/no_forwarders_for_abstract_classes_chain.dart.strong.expect
@@ -9,6 +9,15 @@
   method noSuchMethod(core::Invocation* i) → dynamic
     return null;
   abstract method foo() → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class B extends self::A {
   synthetic constructor •() → self::B*
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/no_forwarders_for_abstract_classes_chain.dart.strong.transformed.expect b/pkg/front_end/testcases/no_such_method_forwarders/no_forwarders_for_abstract_classes_chain.dart.strong.transformed.expect
index 88de606..48aed0c 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/no_forwarders_for_abstract_classes_chain.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/no_forwarders_for_abstract_classes_chain.dart.strong.transformed.expect
@@ -9,6 +9,15 @@
   method noSuchMethod(core::Invocation* i) → dynamic
     return null;
   abstract method foo() → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class B extends self::A {
   synthetic constructor •() → self::B*
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/nsm_inherited.dart.outline.expect b/pkg/front_end/testcases/no_such_method_forwarders/nsm_inherited.dart.outline.expect
index 6dbde99..c6a29eb 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/nsm_inherited.dart.outline.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/nsm_inherited.dart.outline.expect
@@ -7,6 +7,15 @@
     ;
   method noSuchMethod(core::Invocation* invocation) → dynamic
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class A extends self::M {
   synthetic constructor •() → self::A*
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/nsm_inherited.dart.strong.expect b/pkg/front_end/testcases/no_such_method_forwarders/nsm_inherited.dart.strong.expect
index 87ea103..75326f9 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/nsm_inherited.dart.strong.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/nsm_inherited.dart.strong.expect
@@ -8,6 +8,15 @@
     ;
   method noSuchMethod(core::Invocation* invocation) → dynamic
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class A extends self::M {
   synthetic constructor •() → self::A*
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/nsm_inherited.dart.strong.transformed.expect b/pkg/front_end/testcases/no_such_method_forwarders/nsm_inherited.dart.strong.transformed.expect
index 87ea103..75326f9 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/nsm_inherited.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/nsm_inherited.dart.strong.transformed.expect
@@ -8,6 +8,15 @@
     ;
   method noSuchMethod(core::Invocation* invocation) → dynamic
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class A extends self::M {
   synthetic constructor •() → self::A*
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/nsm_mixed_in.dart.outline.expect b/pkg/front_end/testcases/no_such_method_forwarders/nsm_mixed_in.dart.outline.expect
index 8f1ca90..40135e7 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/nsm_mixed_in.dart.outline.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/nsm_mixed_in.dart.outline.expect
@@ -7,11 +7,29 @@
     ;
   method noSuchMethod(core::Invocation* i) → dynamic
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class _B&Object&A = core::Object with self::A /*isAnonymousMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::_B&Object&A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::_B&Object&A {
   synthetic constructor •() → self::B*
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/nsm_mixed_in.dart.strong.expect b/pkg/front_end/testcases/no_such_method_forwarders/nsm_mixed_in.dart.strong.expect
index bc7397f..bec03a37 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/nsm_mixed_in.dart.strong.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/nsm_mixed_in.dart.strong.expect
@@ -9,11 +9,29 @@
   method noSuchMethod(core::Invocation* i) → dynamic {
     return null;
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class _B&Object&A = core::Object with self::A /*isAnonymousMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::_B&Object&A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::_B&Object&A {
   synthetic constructor •() → self::B*
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/nsm_mixed_in.dart.strong.transformed.expect b/pkg/front_end/testcases/no_such_method_forwarders/nsm_mixed_in.dart.strong.transformed.expect
index 3db25ae..43e6f18 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/nsm_mixed_in.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/nsm_mixed_in.dart.strong.transformed.expect
@@ -9,11 +9,29 @@
   method noSuchMethod(core::Invocation* i) → dynamic {
     return null;
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class _B&Object&A extends core::Object implements self::A /*isAnonymousMixin,isEliminatedMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::_B&Object&A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
   method noSuchMethod(core::Invocation* i) → dynamic {
     return null;
   }
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/private.dart.outline.expect b/pkg/front_end/testcases/no_such_method_forwarders/private.dart.outline.expect
index e51936b..15c9f92 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/private.dart.outline.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/private.dart.outline.expect
@@ -10,6 +10,15 @@
     ;
   method noSuchMethod(core::Invocation* invocation) → dynamic
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Bar extends self::Foo implements pri::Fisk {
   synthetic constructor •() → self::Bar*
@@ -36,6 +45,16 @@
   synthetic constructor •() → pri::Fisk*
     ;
   abstract method _hest() → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/private.dart.strong.expect b/pkg/front_end/testcases/no_such_method_forwarders/private.dart.strong.expect
index b06986b..e342b67 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/private.dart.strong.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/private.dart.strong.expect
@@ -11,6 +11,15 @@
     ;
   method noSuchMethod(core::Invocation* invocation) → dynamic
     return 42;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Bar extends self::Foo implements pri::Fisk {
   synthetic constructor •() → self::Bar*
@@ -39,6 +48,16 @@
     : super core::Object::•()
     ;
   abstract method _hest() → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
 
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/private.dart.strong.transformed.expect b/pkg/front_end/testcases/no_such_method_forwarders/private.dart.strong.transformed.expect
index b06986b..e342b67 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/private.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/private.dart.strong.transformed.expect
@@ -11,6 +11,15 @@
     ;
   method noSuchMethod(core::Invocation* invocation) → dynamic
     return 42;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Bar extends self::Foo implements pri::Fisk {
   synthetic constructor •() → self::Bar*
@@ -39,6 +48,16 @@
     : super core::Object::•()
     ;
   abstract method _hest() → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
 
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/private_module.dart.outline.expect b/pkg/front_end/testcases/no_such_method_forwarders/private_module.dart.outline.expect
index ebf76b6..5847493 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/private_module.dart.outline.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/private_module.dart.outline.expect
@@ -6,6 +6,16 @@
   synthetic constructor •() → self::Fisk*
     ;
   abstract method _hest() → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/private_module.dart.strong.expect b/pkg/front_end/testcases/no_such_method_forwarders/private_module.dart.strong.expect
index 000e1f1..75c663f 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/private_module.dart.strong.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/private_module.dart.strong.expect
@@ -7,5 +7,15 @@
     : super core::Object::•()
     ;
   abstract method _hest() → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/private_module.dart.strong.transformed.expect b/pkg/front_end/testcases/no_such_method_forwarders/private_module.dart.strong.transformed.expect
index 000e1f1..75c663f 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/private_module.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/private_module.dart.strong.transformed.expect
@@ -7,5 +7,15 @@
     : super core::Object::•()
     ;
   abstract method _hest() → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/private_same.dart.outline.expect b/pkg/front_end/testcases/no_such_method_forwarders/private_same.dart.outline.expect
index e23e6d5..4b0cee3 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/private_same.dart.outline.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/private_same.dart.outline.expect
@@ -6,6 +6,16 @@
   synthetic constructor •() → self::Foo*
     ;
   abstract method _foo() → void;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Bar extends self::Foo {
   synthetic constructor •() → self::Bar*
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/private_same.dart.strong.expect b/pkg/front_end/testcases/no_such_method_forwarders/private_same.dart.strong.expect
index 37af7b9..40f5d37 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/private_same.dart.strong.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/private_same.dart.strong.expect
@@ -7,6 +7,16 @@
     : super core::Object::•()
     ;
   abstract method _foo() → void;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Bar extends self::Foo {
   synthetic constructor •() → self::Bar*
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/private_same.dart.strong.transformed.expect b/pkg/front_end/testcases/no_such_method_forwarders/private_same.dart.strong.transformed.expect
index 37af7b9..40f5d37 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/private_same.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/private_same.dart.strong.transformed.expect
@@ -7,6 +7,16 @@
     : super core::Object::•()
     ;
   abstract method _foo() → void;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Bar extends self::Foo {
   synthetic constructor •() → self::Bar*
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/same.dart.outline.expect b/pkg/front_end/testcases/no_such_method_forwarders/same.dart.outline.expect
index bce75b4..ce65679 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/same.dart.outline.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/same.dart.outline.expect
@@ -9,6 +9,15 @@
     ;
   no-such-method-forwarder method foo() → void
     return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#foo, 0, const <core::Type*>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{})));
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/same.dart.strong.expect b/pkg/front_end/testcases/no_such_method_forwarders/same.dart.strong.expect
index 3960a3d..fe5a2f8 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/same.dart.strong.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/same.dart.strong.expect
@@ -11,6 +11,15 @@
   }
   no-such-method-forwarder method foo() → void
     return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
 
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/same.dart.strong.transformed.expect b/pkg/front_end/testcases/no_such_method_forwarders/same.dart.strong.transformed.expect
index 3960a3d..fe5a2f8 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/same.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/same.dart.strong.transformed.expect
@@ -11,6 +11,15 @@
   }
   no-such-method-forwarder method foo() → void
     return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
 
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/setter_not_shadowed_by_method.dart.outline.expect b/pkg/front_end/testcases/no_such_method_forwarders/setter_not_shadowed_by_method.dart.outline.expect
index 10a5cb6..0cb6eac 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/setter_not_shadowed_by_method.dart.outline.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/setter_not_shadowed_by_method.dart.outline.expect
@@ -21,6 +21,15 @@
     return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#foo=, 2, const <core::Type*>[], core::List::unmodifiable<dynamic>(<dynamic>[x]), core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{})));
   method noSuchMethod(core::Invocation* i) → dynamic
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/setter_not_shadowed_by_method.dart.strong.expect b/pkg/front_end/testcases/no_such_method_forwarders/setter_not_shadowed_by_method.dart.strong.expect
index 9c314a6..a3e7c4c 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/setter_not_shadowed_by_method.dart.strong.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/setter_not_shadowed_by_method.dart.strong.expect
@@ -21,6 +21,15 @@
     return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 2, #C2, core::List::unmodifiable<dynamic>(<dynamic>[x]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
   method noSuchMethod(core::Invocation* i) → dynamic
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
 
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/setter_not_shadowed_by_method.dart.strong.transformed.expect b/pkg/front_end/testcases/no_such_method_forwarders/setter_not_shadowed_by_method.dart.strong.transformed.expect
index 9c314a6..a3e7c4c 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/setter_not_shadowed_by_method.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/setter_not_shadowed_by_method.dart.strong.transformed.expect
@@ -21,6 +21,15 @@
     return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 2, #C2, core::List::unmodifiable<dynamic>(<dynamic>[x]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
   method noSuchMethod(core::Invocation* i) → dynamic
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
 
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/subst_on_forwarder.dart.outline.expect b/pkg/front_end/testcases/no_such_method_forwarders/subst_on_forwarder.dart.outline.expect
index 27b2e4f..956133b 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/subst_on_forwarder.dart.outline.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/subst_on_forwarder.dart.outline.expect
@@ -6,17 +6,45 @@
   synthetic constructor •() → self::I<self::I::T*>*
     ;
   abstract method foo() → self::I::T*;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class M extends core::Object {
   synthetic constructor •() → self::M*
     ;
   method noSuchMethod(core::Invocation* i) → dynamic
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class _A&Object&M = core::Object with self::M /*isAnonymousMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::_A&Object&M*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class A extends self::_A&Object&M implements self::I<core::int*> {
   synthetic constructor •() → self::A*
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/subst_on_forwarder.dart.strong.expect b/pkg/front_end/testcases/no_such_method_forwarders/subst_on_forwarder.dart.strong.expect
index a1b9e10..1921030 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/subst_on_forwarder.dart.strong.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/subst_on_forwarder.dart.strong.expect
@@ -7,6 +7,16 @@
     : super core::Object::•()
     ;
   abstract method foo() → self::I::T*;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class M extends core::Object {
   synthetic constructor •() → self::M*
@@ -15,11 +25,29 @@
   method noSuchMethod(core::Invocation* i) → dynamic {
     return null;
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class _A&Object&M = core::Object with self::M /*isAnonymousMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::_A&Object&M*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class A extends self::_A&Object&M implements self::I<core::int*> {
   synthetic constructor •() → self::A*
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/subst_on_forwarder.dart.strong.transformed.expect b/pkg/front_end/testcases/no_such_method_forwarders/subst_on_forwarder.dart.strong.transformed.expect
index 1ba767c..a271dbb 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/subst_on_forwarder.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/subst_on_forwarder.dart.strong.transformed.expect
@@ -7,6 +7,16 @@
     : super core::Object::•()
     ;
   abstract method foo() → self::I::T*;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class M extends core::Object {
   synthetic constructor •() → self::M*
@@ -15,11 +25,29 @@
   method noSuchMethod(core::Invocation* i) → dynamic {
     return null;
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class _A&Object&M extends core::Object implements self::M /*isAnonymousMixin,isEliminatedMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::_A&Object&M*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
   method noSuchMethod(core::Invocation* i) → dynamic {
     return null;
   }
diff --git a/pkg/front_end/testcases/nonfunction_type_aliases/issue41501.dart.outline.expect b/pkg/front_end/testcases/nonfunction_type_aliases/issue41501.dart.outline.expect
index 7f9a293..b1b4913 100644
--- a/pkg/front_end/testcases/nonfunction_type_aliases/issue41501.dart.outline.expect
+++ b/pkg/front_end/testcases/nonfunction_type_aliases/issue41501.dart.outline.expect
@@ -23,6 +23,16 @@
 class A extends core::Object {
   synthetic constructor •() → opt::A*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method test() → dynamic
   ;
diff --git a/pkg/front_end/testcases/nonfunction_type_aliases/issue41501.dart.strong.expect b/pkg/front_end/testcases/nonfunction_type_aliases/issue41501.dart.strong.expect
index a62ffbb..bcd8340 100644
--- a/pkg/front_end/testcases/nonfunction_type_aliases/issue41501.dart.strong.expect
+++ b/pkg/front_end/testcases/nonfunction_type_aliases/issue41501.dart.strong.expect
@@ -54,6 +54,16 @@
   synthetic constructor •() → opt::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method test() → dynamic {
   asy::FutureOr<opt::A*>* foLegacy = null;
diff --git a/pkg/front_end/testcases/nonfunction_type_aliases/issue41501.dart.strong.transformed.expect b/pkg/front_end/testcases/nonfunction_type_aliases/issue41501.dart.strong.transformed.expect
index a62ffbb..bcd8340 100644
--- a/pkg/front_end/testcases/nonfunction_type_aliases/issue41501.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/nonfunction_type_aliases/issue41501.dart.strong.transformed.expect
@@ -54,6 +54,16 @@
   synthetic constructor •() → opt::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method test() → dynamic {
   asy::FutureOr<opt::A*>* foLegacy = null;
diff --git a/pkg/front_end/testcases/nonfunction_type_aliases/issue41501.dart.weak.expect b/pkg/front_end/testcases/nonfunction_type_aliases/issue41501.dart.weak.expect
index a62ffbb..bcd8340 100644
--- a/pkg/front_end/testcases/nonfunction_type_aliases/issue41501.dart.weak.expect
+++ b/pkg/front_end/testcases/nonfunction_type_aliases/issue41501.dart.weak.expect
@@ -54,6 +54,16 @@
   synthetic constructor •() → opt::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method test() → dynamic {
   asy::FutureOr<opt::A*>* foLegacy = null;
diff --git a/pkg/front_end/testcases/nonfunction_type_aliases/issue41501.dart.weak.transformed.expect b/pkg/front_end/testcases/nonfunction_type_aliases/issue41501.dart.weak.transformed.expect
index a62ffbb..bcd8340 100644
--- a/pkg/front_end/testcases/nonfunction_type_aliases/issue41501.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nonfunction_type_aliases/issue41501.dart.weak.transformed.expect
@@ -54,6 +54,16 @@
   synthetic constructor •() → opt::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method test() → dynamic {
   asy::FutureOr<opt::A*>* foLegacy = null;
diff --git a/pkg/front_end/testcases/rasta/abstract_constructor.dart.outline.expect b/pkg/front_end/testcases/rasta/abstract_constructor.dart.outline.expect
index 5751e9d..61f3c35 100644
--- a/pkg/front_end/testcases/rasta/abstract_constructor.dart.outline.expect
+++ b/pkg/front_end/testcases/rasta/abstract_constructor.dart.outline.expect
@@ -5,6 +5,16 @@
 abstract class C extends core::Object {
   synthetic constructor •() → self::C*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/rasta/abstract_constructor.dart.strong.expect b/pkg/front_end/testcases/rasta/abstract_constructor.dart.strong.expect
index 96dd32b..c8e99cd 100644
--- a/pkg/front_end/testcases/rasta/abstract_constructor.dart.strong.expect
+++ b/pkg/front_end/testcases/rasta/abstract_constructor.dart.strong.expect
@@ -13,6 +13,16 @@
   synthetic constructor •() → self::C*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   throw new core::AbstractClassInstantiationError::•("C");
diff --git a/pkg/front_end/testcases/rasta/abstract_constructor.dart.strong.transformed.expect b/pkg/front_end/testcases/rasta/abstract_constructor.dart.strong.transformed.expect
index 96dd32b..c8e99cd 100644
--- a/pkg/front_end/testcases/rasta/abstract_constructor.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/rasta/abstract_constructor.dart.strong.transformed.expect
@@ -13,6 +13,16 @@
   synthetic constructor •() → self::C*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   throw new core::AbstractClassInstantiationError::•("C");
diff --git a/pkg/front_end/testcases/rasta/bad_constructor_redirection.dart.outline.expect b/pkg/front_end/testcases/rasta/bad_constructor_redirection.dart.outline.expect
index 5e82d74..5e3a6c8 100644
--- a/pkg/front_end/testcases/rasta/bad_constructor_redirection.dart.outline.expect
+++ b/pkg/front_end/testcases/rasta/bad_constructor_redirection.dart.outline.expect
@@ -20,6 +20,16 @@
   const constructor x() → self::C*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/rasta/bad_constructor_redirection.dart.strong.expect b/pkg/front_end/testcases/rasta/bad_constructor_redirection.dart.strong.expect
index f345e51..f34d985 100644
--- a/pkg/front_end/testcases/rasta/bad_constructor_redirection.dart.strong.expect
+++ b/pkg/front_end/testcases/rasta/bad_constructor_redirection.dart.strong.expect
@@ -20,6 +20,16 @@
   const constructor x() → self::C*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   new self::C::•();
diff --git a/pkg/front_end/testcases/rasta/bad_constructor_redirection.dart.strong.transformed.expect b/pkg/front_end/testcases/rasta/bad_constructor_redirection.dart.strong.transformed.expect
index f345e51..f34d985 100644
--- a/pkg/front_end/testcases/rasta/bad_constructor_redirection.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/rasta/bad_constructor_redirection.dart.strong.transformed.expect
@@ -20,6 +20,16 @@
   const constructor x() → self::C*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   new self::C::•();
diff --git a/pkg/front_end/testcases/rasta/bad_default_constructor.dart.outline.expect b/pkg/front_end/testcases/rasta/bad_default_constructor.dart.outline.expect
index 928527c..e5f3897 100644
--- a/pkg/front_end/testcases/rasta/bad_default_constructor.dart.outline.expect
+++ b/pkg/front_end/testcases/rasta/bad_default_constructor.dart.outline.expect
@@ -5,6 +5,16 @@
 class A extends core::Object {
   constructor •(dynamic x) → self::A*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A {
   synthetic constructor •() → self::B*
diff --git a/pkg/front_end/testcases/rasta/bad_default_constructor.dart.strong.expect b/pkg/front_end/testcases/rasta/bad_default_constructor.dart.strong.expect
index 48bf402..e7c3c9a 100644
--- a/pkg/front_end/testcases/rasta/bad_default_constructor.dart.strong.expect
+++ b/pkg/front_end/testcases/rasta/bad_default_constructor.dart.strong.expect
@@ -18,6 +18,16 @@
   constructor •(dynamic x) → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A {
   synthetic constructor •() → self::B*
diff --git a/pkg/front_end/testcases/rasta/bad_default_constructor.dart.strong.transformed.expect b/pkg/front_end/testcases/rasta/bad_default_constructor.dart.strong.transformed.expect
index 48bf402..e7c3c9a 100644
--- a/pkg/front_end/testcases/rasta/bad_default_constructor.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/rasta/bad_default_constructor.dart.strong.transformed.expect
@@ -18,6 +18,16 @@
   constructor •(dynamic x) → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A {
   synthetic constructor •() → self::B*
diff --git a/pkg/front_end/testcases/rasta/bad_explicit_super_constructor.dart.outline.expect b/pkg/front_end/testcases/rasta/bad_explicit_super_constructor.dart.outline.expect
index 55cdfbb..6f815eb 100644
--- a/pkg/front_end/testcases/rasta/bad_explicit_super_constructor.dart.outline.expect
+++ b/pkg/front_end/testcases/rasta/bad_explicit_super_constructor.dart.outline.expect
@@ -12,6 +12,16 @@
 class A extends core::Object {
   constructor •(dynamic x) → self::A*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A /*hasConstConstructor*/  {
   const constructor •() → self::B*
diff --git a/pkg/front_end/testcases/rasta/bad_explicit_super_constructor.dart.strong.expect b/pkg/front_end/testcases/rasta/bad_explicit_super_constructor.dart.strong.expect
index 8fdc2b1..fb56f4c 100644
--- a/pkg/front_end/testcases/rasta/bad_explicit_super_constructor.dart.strong.expect
+++ b/pkg/front_end/testcases/rasta/bad_explicit_super_constructor.dart.strong.expect
@@ -13,6 +13,16 @@
   constructor •(dynamic x) → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A /*hasConstConstructor*/  {
   const constructor •() → self::B*
diff --git a/pkg/front_end/testcases/rasta/bad_explicit_super_constructor.dart.strong.transformed.expect b/pkg/front_end/testcases/rasta/bad_explicit_super_constructor.dart.strong.transformed.expect
index 8fdc2b1..fb56f4c 100644
--- a/pkg/front_end/testcases/rasta/bad_explicit_super_constructor.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/rasta/bad_explicit_super_constructor.dart.strong.transformed.expect
@@ -13,6 +13,16 @@
   constructor •(dynamic x) → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A /*hasConstConstructor*/  {
   const constructor •() → self::B*
diff --git a/pkg/front_end/testcases/rasta/bad_implicit_super_constructor.dart.outline.expect b/pkg/front_end/testcases/rasta/bad_implicit_super_constructor.dart.outline.expect
index 8988c62..c6cb957 100644
--- a/pkg/front_end/testcases/rasta/bad_implicit_super_constructor.dart.outline.expect
+++ b/pkg/front_end/testcases/rasta/bad_implicit_super_constructor.dart.outline.expect
@@ -12,6 +12,16 @@
 class A extends core::Object {
   constructor •(dynamic x) → self::A*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A /*hasConstConstructor*/  {
   const constructor •() → self::B*
diff --git a/pkg/front_end/testcases/rasta/bad_implicit_super_constructor.dart.strong.expect b/pkg/front_end/testcases/rasta/bad_implicit_super_constructor.dart.strong.expect
index 3274e8e..834c24e 100644
--- a/pkg/front_end/testcases/rasta/bad_implicit_super_constructor.dart.strong.expect
+++ b/pkg/front_end/testcases/rasta/bad_implicit_super_constructor.dart.strong.expect
@@ -19,6 +19,16 @@
   A(this.x);
          ^"
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A /*hasConstConstructor*/  {
   const constructor •() → self::B*
diff --git a/pkg/front_end/testcases/rasta/bad_implicit_super_constructor.dart.strong.transformed.expect b/pkg/front_end/testcases/rasta/bad_implicit_super_constructor.dart.strong.transformed.expect
index 3274e8e..834c24e 100644
--- a/pkg/front_end/testcases/rasta/bad_implicit_super_constructor.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/rasta/bad_implicit_super_constructor.dart.strong.transformed.expect
@@ -19,6 +19,16 @@
   A(this.x);
          ^"
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A /*hasConstConstructor*/  {
   const constructor •() → self::B*
diff --git a/pkg/front_end/testcases/rasta/bad_redirection.dart.outline.expect b/pkg/front_end/testcases/rasta/bad_redirection.dart.outline.expect
index 251392f..73ad531 100644
--- a/pkg/front_end/testcases/rasta/bad_redirection.dart.outline.expect
+++ b/pkg/front_end/testcases/rasta/bad_redirection.dart.outline.expect
@@ -13,6 +13,16 @@
 class Foo extends core::Object {
   constructor •() → self::Foo*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Bar extends self::Foo {
   static factory •() → self::Bar*
diff --git a/pkg/front_end/testcases/rasta/bad_redirection.dart.strong.expect b/pkg/front_end/testcases/rasta/bad_redirection.dart.strong.expect
index d0e2d04..3fef685 100644
--- a/pkg/front_end/testcases/rasta/bad_redirection.dart.strong.expect
+++ b/pkg/front_end/testcases/rasta/bad_redirection.dart.strong.expect
@@ -27,6 +27,16 @@
 Try removing the return type.
   Foo() = Bar;
           ^";
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Bar extends self::Foo {
   static factory •() → self::Bar*
diff --git a/pkg/front_end/testcases/rasta/bad_redirection.dart.strong.transformed.expect b/pkg/front_end/testcases/rasta/bad_redirection.dart.strong.transformed.expect
index d0e2d04..3fef685 100644
--- a/pkg/front_end/testcases/rasta/bad_redirection.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/rasta/bad_redirection.dart.strong.transformed.expect
@@ -27,6 +27,16 @@
 Try removing the return type.
   Foo() = Bar;
           ^";
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Bar extends self::Foo {
   static factory •() → self::Bar*
diff --git a/pkg/front_end/testcases/rasta/bad_setter_initializer.dart.outline.expect b/pkg/front_end/testcases/rasta/bad_setter_initializer.dart.outline.expect
index 429c40d..960ef94 100644
--- a/pkg/front_end/testcases/rasta/bad_setter_initializer.dart.outline.expect
+++ b/pkg/front_end/testcases/rasta/bad_setter_initializer.dart.outline.expect
@@ -7,6 +7,16 @@
     ;
   set field(dynamic value) → void
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/rasta/bad_setter_initializer.dart.strong.expect b/pkg/front_end/testcases/rasta/bad_setter_initializer.dart.strong.expect
index 422f909..a3b170e 100644
--- a/pkg/front_end/testcases/rasta/bad_setter_initializer.dart.strong.expect
+++ b/pkg/front_end/testcases/rasta/bad_setter_initializer.dart.strong.expect
@@ -16,6 +16,16 @@
         ^^^^^"
     ;
   set field(dynamic value) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   new self::C::•();
diff --git a/pkg/front_end/testcases/rasta/bad_setter_initializer.dart.strong.transformed.expect b/pkg/front_end/testcases/rasta/bad_setter_initializer.dart.strong.transformed.expect
index 422f909..a3b170e 100644
--- a/pkg/front_end/testcases/rasta/bad_setter_initializer.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/rasta/bad_setter_initializer.dart.strong.transformed.expect
@@ -16,6 +16,16 @@
         ^^^^^"
     ;
   set field(dynamic value) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   new self::C::•();
diff --git a/pkg/front_end/testcases/rasta/cascades.dart.outline.expect b/pkg/front_end/testcases/rasta/cascades.dart.outline.expect
index ae4bf85..b6d1cc3 100644
--- a/pkg/front_end/testcases/rasta/cascades.dart.outline.expect
+++ b/pkg/front_end/testcases/rasta/cascades.dart.outline.expect
@@ -7,6 +7,16 @@
     ;
   method add(dynamic x) → dynamic
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/rasta/cascades.dart.strong.expect b/pkg/front_end/testcases/rasta/cascades.dart.strong.expect
index 6a7022b..5c396a9 100644
--- a/pkg/front_end/testcases/rasta/cascades.dart.strong.expect
+++ b/pkg/front_end/testcases/rasta/cascades.dart.strong.expect
@@ -8,6 +8,16 @@
     ;
   method add(dynamic x) → dynamic
     return x;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   self::A* a = new self::A::•();
diff --git a/pkg/front_end/testcases/rasta/cascades.dart.strong.transformed.expect b/pkg/front_end/testcases/rasta/cascades.dart.strong.transformed.expect
index 6a7022b..5c396a9 100644
--- a/pkg/front_end/testcases/rasta/cascades.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/rasta/cascades.dart.strong.transformed.expect
@@ -8,6 +8,16 @@
     ;
   method add(dynamic x) → dynamic
     return x;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   self::A* a = new self::A::•();
diff --git a/pkg/front_end/testcases/rasta/class_hierarchy.dart.outline.expect b/pkg/front_end/testcases/rasta/class_hierarchy.dart.outline.expect
index 7791978..f9da976 100644
--- a/pkg/front_end/testcases/rasta/class_hierarchy.dart.outline.expect
+++ b/pkg/front_end/testcases/rasta/class_hierarchy.dart.outline.expect
@@ -32,20 +32,60 @@
 class A extends core::Object {
   synthetic constructor •() → self::A*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends core::Object {
   synthetic constructor •() → self::B*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C extends core::Object /*hasConstConstructor*/  {
   const synthetic constructor •() → self::C*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D extends core::Object {
   static field dynamic _redirecting# = <dynamic>[self::D::•];
   static factory •() → self::D*
     let dynamic #redirecting_factory = "Missing" in invalid-expression;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → void
   ;
diff --git a/pkg/front_end/testcases/rasta/class_hierarchy.dart.strong.expect b/pkg/front_end/testcases/rasta/class_hierarchy.dart.strong.expect
index 9f814bb..9c982fc 100644
--- a/pkg/front_end/testcases/rasta/class_hierarchy.dart.strong.expect
+++ b/pkg/front_end/testcases/rasta/class_hierarchy.dart.strong.expect
@@ -33,21 +33,61 @@
   synthetic constructor •() → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends core::Object {
   synthetic constructor •() → self::B*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C extends core::Object /*hasConstConstructor*/  {
   const synthetic constructor •() → self::C*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D extends core::Object {
   static field dynamic _redirecting# = <dynamic>[self::D::•];
   static factory •() → self::D*
     let dynamic #redirecting_factory = "Missing" in invalid-expression;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → void {
   new self::A::•();
diff --git a/pkg/front_end/testcases/rasta/class_hierarchy.dart.strong.transformed.expect b/pkg/front_end/testcases/rasta/class_hierarchy.dart.strong.transformed.expect
index 85dc9e7..384910c 100644
--- a/pkg/front_end/testcases/rasta/class_hierarchy.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/rasta/class_hierarchy.dart.strong.transformed.expect
@@ -33,21 +33,61 @@
   synthetic constructor •() → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends core::Object {
   synthetic constructor •() → self::B*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C extends core::Object /*hasConstConstructor*/  {
   const synthetic constructor •() → self::C*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D extends core::Object {
   static field dynamic _redirecting# = <dynamic>[self::D::•];
   static factory •() → self::D*
     let core::String* #redirecting_factory = "Missing" in invalid-expression;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → void {
   new self::A::•();
diff --git a/pkg/front_end/testcases/rasta/class_member.dart.outline.expect b/pkg/front_end/testcases/rasta/class_member.dart.outline.expect
index a9ff29a..3477a7a 100644
--- a/pkg/front_end/testcases/rasta/class_member.dart.outline.expect
+++ b/pkg/front_end/testcases/rasta/class_member.dart.outline.expect
@@ -18,4 +18,14 @@
     ;
   method c() → dynamic
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
diff --git a/pkg/front_end/testcases/rasta/class_member.dart.strong.expect b/pkg/front_end/testcases/rasta/class_member.dart.strong.expect
index 34a1b6b..79747f9 100644
--- a/pkg/front_end/testcases/rasta/class_member.dart.strong.expect
+++ b/pkg/front_end/testcases/rasta/class_member.dart.strong.expect
@@ -18,4 +18,14 @@
   method a() → dynamic {}
   method b() → dynamic {}
   method c() → dynamic {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
diff --git a/pkg/front_end/testcases/rasta/class_member.dart.strong.transformed.expect b/pkg/front_end/testcases/rasta/class_member.dart.strong.transformed.expect
index 34a1b6b..79747f9 100644
--- a/pkg/front_end/testcases/rasta/class_member.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/rasta/class_member.dart.strong.transformed.expect
@@ -18,4 +18,14 @@
   method a() → dynamic {}
   method b() → dynamic {}
   method c() → dynamic {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
diff --git a/pkg/front_end/testcases/rasta/duplicated_mixin.dart.outline.expect b/pkg/front_end/testcases/rasta/duplicated_mixin.dart.outline.expect
index 0624290..ef36473 100644
--- a/pkg/front_end/testcases/rasta/duplicated_mixin.dart.outline.expect
+++ b/pkg/front_end/testcases/rasta/duplicated_mixin.dart.outline.expect
@@ -6,11 +6,31 @@
   field dynamic field;
   synthetic constructor •() → self::Mixin*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class _A&Object&Mixin = core::Object with self::Mixin /*isAnonymousMixin*/  {
   synthetic constructor •() → self::_A&Object&Mixin*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class _A&Object&Mixin&Mixin = self::_A&Object&Mixin with self::Mixin /*isAnonymousMixin*/  {
   synthetic constructor •() → self::_A&Object&Mixin&Mixin*
diff --git a/pkg/front_end/testcases/rasta/duplicated_mixin.dart.strong.expect b/pkg/front_end/testcases/rasta/duplicated_mixin.dart.strong.expect
index c8be9f9..50c2218 100644
--- a/pkg/front_end/testcases/rasta/duplicated_mixin.dart.strong.expect
+++ b/pkg/front_end/testcases/rasta/duplicated_mixin.dart.strong.expect
@@ -7,11 +7,31 @@
   synthetic constructor •() → self::Mixin*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class _A&Object&Mixin = core::Object with self::Mixin /*isAnonymousMixin*/  {
   synthetic constructor •() → self::_A&Object&Mixin*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class _A&Object&Mixin&Mixin = self::_A&Object&Mixin with self::Mixin /*isAnonymousMixin*/  {
   synthetic constructor •() → self::_A&Object&Mixin&Mixin*
diff --git a/pkg/front_end/testcases/rasta/duplicated_mixin.dart.strong.transformed.expect b/pkg/front_end/testcases/rasta/duplicated_mixin.dart.strong.transformed.expect
index 3d74ab6..3fbc7e1 100644
--- a/pkg/front_end/testcases/rasta/duplicated_mixin.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/rasta/duplicated_mixin.dart.strong.transformed.expect
@@ -7,18 +7,48 @@
   synthetic constructor •() → self::Mixin*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class _A&Object&Mixin extends core::Object implements self::Mixin /*isAnonymousMixin,isEliminatedMixin*/  {
   field dynamic field = null;
   synthetic constructor •() → self::_A&Object&Mixin*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class _A&Object&Mixin&Mixin extends self::_A&Object&Mixin implements self::Mixin /*isAnonymousMixin,isEliminatedMixin*/  {
   field dynamic field = null;
   synthetic constructor •() → self::_A&Object&Mixin&Mixin*
     : super self::_A&Object&Mixin::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class A extends self::_A&Object&Mixin&Mixin {
   synthetic constructor •() → self::A*
diff --git a/pkg/front_end/testcases/rasta/enum.dart.outline.expect b/pkg/front_end/testcases/rasta/enum.dart.outline.expect
index bd3b3c5..d59c6f4 100644
--- a/pkg/front_end/testcases/rasta/enum.dart.outline.expect
+++ b/pkg/front_end/testcases/rasta/enum.dart.outline.expect
@@ -13,6 +13,15 @@
     ;
   method toString() → core::String*
     return this.{=self::Foo::_name};
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/rasta/enum.dart.strong.expect b/pkg/front_end/testcases/rasta/enum.dart.strong.expect
index 690a0ac..600e392 100644
--- a/pkg/front_end/testcases/rasta/enum.dart.strong.expect
+++ b/pkg/front_end/testcases/rasta/enum.dart.strong.expect
@@ -13,6 +13,15 @@
     ;
   method toString() → core::String*
     return this.{=self::Foo::_name};
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
 
diff --git a/pkg/front_end/testcases/rasta/enum.dart.strong.transformed.expect b/pkg/front_end/testcases/rasta/enum.dart.strong.transformed.expect
index 690a0ac..600e392 100644
--- a/pkg/front_end/testcases/rasta/enum.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/rasta/enum.dart.strong.transformed.expect
@@ -13,6 +13,15 @@
     ;
   method toString() → core::String*
     return this.{=self::Foo::_name};
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
 
diff --git a/pkg/front_end/testcases/rasta/generic_factory.dart.outline.expect b/pkg/front_end/testcases/rasta/generic_factory.dart.outline.expect
index f432c70..d4fdcbd 100644
--- a/pkg/front_end/testcases/rasta/generic_factory.dart.outline.expect
+++ b/pkg/front_end/testcases/rasta/generic_factory.dart.outline.expect
@@ -30,14 +30,44 @@
 class C1 extends core::Object {
   synthetic constructor •() → self::C1*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C2 extends core::Object {
   synthetic constructor •() → self::C2*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C3 extends core::Object {
   synthetic constructor •() → self::C3*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class A<T extends core::Object* = dynamic> extends core::Object {
   static field dynamic _redirecting# = <dynamic>[self::A::a, self::A::b, self::A::c];
@@ -49,6 +79,16 @@
     let dynamic #redirecting_factory = self::B::a in let self::C1* #typeArg0 = null in invalid-expression;
   static factory c<T extends core::Object* = dynamic>() → self::A<self::A::c::T*>*
     let dynamic #redirecting_factory = "Missing" in invalid-expression;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B<S extends core::Object* = dynamic> extends self::A<self::B::S*> {
   static field dynamic _redirecting# = <dynamic>[self::B::a, self::B::b];
diff --git a/pkg/front_end/testcases/rasta/generic_factory.dart.strong.expect b/pkg/front_end/testcases/rasta/generic_factory.dart.strong.expect
index 14a91eb..61eef6a 100644
--- a/pkg/front_end/testcases/rasta/generic_factory.dart.strong.expect
+++ b/pkg/front_end/testcases/rasta/generic_factory.dart.strong.expect
@@ -31,16 +31,46 @@
   synthetic constructor •() → self::C1*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C2 extends core::Object {
   synthetic constructor •() → self::C2*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C3 extends core::Object {
   synthetic constructor •() → self::C3*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class A<T extends core::Object* = dynamic> extends core::Object {
   static field dynamic _redirecting# = <dynamic>[self::A::a, self::A::b, self::A::c];
@@ -53,6 +83,16 @@
     let dynamic #redirecting_factory = self::B::a in let self::C1* #typeArg0 = null in invalid-expression;
   static factory c<T extends core::Object* = dynamic>() → self::A<self::A::c::T*>*
     let dynamic #redirecting_factory = "Missing" in invalid-expression;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B<S extends core::Object* = dynamic> extends self::A<self::B::S*> {
   static field dynamic _redirecting# = <dynamic>[self::B::a, self::B::b];
diff --git a/pkg/front_end/testcases/rasta/generic_factory.dart.strong.transformed.expect b/pkg/front_end/testcases/rasta/generic_factory.dart.strong.transformed.expect
index aaef681..81b8c9a 100644
--- a/pkg/front_end/testcases/rasta/generic_factory.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/rasta/generic_factory.dart.strong.transformed.expect
@@ -31,16 +31,46 @@
   synthetic constructor •() → self::C1*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C2 extends core::Object {
   synthetic constructor •() → self::C2*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C3 extends core::Object {
   synthetic constructor •() → self::C3*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class A<T extends core::Object* = dynamic> extends core::Object {
   static field dynamic _redirecting# = <dynamic>[self::A::a, self::A::b, self::A::c];
@@ -53,6 +83,16 @@
     let <S extends core::Object* = dynamic>() →* self::B<S*>* #redirecting_factory = self::B::a in let self::C1* #typeArg0 = null in invalid-expression;
   static factory c<T extends core::Object* = dynamic>() → self::A<self::A::c::T*>*
     let core::String* #redirecting_factory = "Missing" in invalid-expression;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B<S extends core::Object* = dynamic> extends self::A<self::B::S*> {
   static field dynamic _redirecting# = <dynamic>[self::B::a, self::B::b];
diff --git a/pkg/front_end/testcases/rasta/issue_000002.dart.outline.expect b/pkg/front_end/testcases/rasta/issue_000002.dart.outline.expect
index 742dcd7..f71d2d9 100644
--- a/pkg/front_end/testcases/rasta/issue_000002.dart.outline.expect
+++ b/pkg/front_end/testcases/rasta/issue_000002.dart.outline.expect
@@ -11,6 +11,16 @@
     ;
   static factory fac(dynamic value) → self::Foo*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field core::List<core::int*>* list;
 static method main() → dynamic
diff --git a/pkg/front_end/testcases/rasta/issue_000002.dart.strong.expect b/pkg/front_end/testcases/rasta/issue_000002.dart.strong.expect
index cc24038..14e5bed 100644
--- a/pkg/front_end/testcases/rasta/issue_000002.dart.strong.expect
+++ b/pkg/front_end/testcases/rasta/issue_000002.dart.strong.expect
@@ -14,6 +14,16 @@
   static factory fac(dynamic value) → self::Foo* {
     return new self::Foo::•(value);
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field core::List<core::int*>* list = <core::int*>[1, 2, 3];
 static method main() → dynamic {
diff --git a/pkg/front_end/testcases/rasta/issue_000002.dart.strong.transformed.expect b/pkg/front_end/testcases/rasta/issue_000002.dart.strong.transformed.expect
index cc24038..14e5bed 100644
--- a/pkg/front_end/testcases/rasta/issue_000002.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/rasta/issue_000002.dart.strong.transformed.expect
@@ -14,6 +14,16 @@
   static factory fac(dynamic value) → self::Foo* {
     return new self::Foo::•(value);
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field core::List<core::int*>* list = <core::int*>[1, 2, 3];
 static method main() → dynamic {
diff --git a/pkg/front_end/testcases/rasta/issue_000004.dart.strong.expect b/pkg/front_end/testcases/rasta/issue_000004.dart.strong.expect
index f7d1185..84c890e 100644
--- a/pkg/front_end/testcases/rasta/issue_000004.dart.strong.expect
+++ b/pkg/front_end/testcases/rasta/issue_000004.dart.strong.expect
@@ -18,7 +18,7 @@
   dynamic n;
   for (final dynamic #t1 in <dynamic>[1, 2, 3, 4, 5]) {
     n = #t1;
-    f = f.{core::num::*}(n as{TypeError,ForDynamic} core::num*) as{TypeError} core::int*;
+    f = f.{core::num::*}(n as{TypeError,ForDynamic} core::num) as{TypeError} core::int*;
   }
   return f;
 }
@@ -26,7 +26,7 @@
   core::int* f = 1;
   for (final dynamic #t2 in <dynamic>[1, 2, 3, 4, 5, 6]) {
     self::global = #t2;
-    f = f.{core::num::*}(self::global as{TypeError,ForDynamic} core::num*) as{TypeError} core::int*;
+    f = f.{core::num::*}(self::global as{TypeError,ForDynamic} core::num) as{TypeError} core::int*;
   }
   return f;
 }
diff --git a/pkg/front_end/testcases/rasta/issue_000004.dart.strong.transformed.expect b/pkg/front_end/testcases/rasta/issue_000004.dart.strong.transformed.expect
index b17c1d1..fd86b06 100644
--- a/pkg/front_end/testcases/rasta/issue_000004.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/rasta/issue_000004.dart.strong.transformed.expect
@@ -28,7 +28,7 @@
       final dynamic #t1 = :sync-for-iterator.{core::Iterator::current};
       {
         n = #t1;
-        f = f.{core::num::*}(n as{TypeError,ForDynamic} core::num*) as{TypeError} core::int*;
+        f = f.{core::num::*}(n as{TypeError,ForDynamic} core::num) as{TypeError} core::int*;
       }
     }
   }
@@ -42,7 +42,7 @@
       final dynamic #t2 = :sync-for-iterator.{core::Iterator::current};
       {
         self::global = #t2;
-        f = f.{core::num::*}(self::global as{TypeError,ForDynamic} core::num*) as{TypeError} core::int*;
+        f = f.{core::num::*}(self::global as{TypeError,ForDynamic} core::num) as{TypeError} core::int*;
       }
     }
   }
diff --git a/pkg/front_end/testcases/rasta/issue_000007.dart.outline.expect b/pkg/front_end/testcases/rasta/issue_000007.dart.outline.expect
index 0379890..7be2404 100644
--- a/pkg/front_end/testcases/rasta/issue_000007.dart.outline.expect
+++ b/pkg/front_end/testcases/rasta/issue_000007.dart.outline.expect
@@ -5,12 +5,32 @@
 class Base extends core::Object {
   synthetic constructor •() → self::Base*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Mixin extends core::Object {
   synthetic constructor •() → self::Mixin*
     ;
   method foo() → dynamic
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class _Sub&Base&Mixin = self::Base with self::Mixin /*isAnonymousMixin*/  {
   synthetic constructor •() → self::_Sub&Base&Mixin*
diff --git a/pkg/front_end/testcases/rasta/issue_000007.dart.strong.expect b/pkg/front_end/testcases/rasta/issue_000007.dart.strong.expect
index 655d4a7..b2dd6e3 100644
--- a/pkg/front_end/testcases/rasta/issue_000007.dart.strong.expect
+++ b/pkg/front_end/testcases/rasta/issue_000007.dart.strong.expect
@@ -6,6 +6,16 @@
   synthetic constructor •() → self::Base*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Mixin extends core::Object {
   synthetic constructor •() → self::Mixin*
@@ -13,6 +23,16 @@
     ;
   method foo() → dynamic
     return core::print("foo");
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class _Sub&Base&Mixin = self::Base with self::Mixin /*isAnonymousMixin*/  {
   synthetic constructor •() → self::_Sub&Base&Mixin*
diff --git a/pkg/front_end/testcases/rasta/issue_000007.dart.strong.transformed.expect b/pkg/front_end/testcases/rasta/issue_000007.dart.strong.transformed.expect
index 9c25751..d9716b4 100644
--- a/pkg/front_end/testcases/rasta/issue_000007.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/rasta/issue_000007.dart.strong.transformed.expect
@@ -6,6 +6,16 @@
   synthetic constructor •() → self::Base*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Mixin extends core::Object {
   synthetic constructor •() → self::Mixin*
@@ -13,6 +23,16 @@
     ;
   method foo() → dynamic
     return core::print("foo");
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class _Sub&Base&Mixin extends self::Base implements self::Mixin /*isAnonymousMixin,isEliminatedMixin*/  {
   synthetic constructor •() → self::_Sub&Base&Mixin*
@@ -20,6 +40,16 @@
     ;
   method foo() → dynamic
     return core::print("foo");
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Sub extends self::_Sub&Base&Mixin {
   synthetic constructor •() → self::Sub*
diff --git a/pkg/front_end/testcases/rasta/issue_000008.dart.outline.expect b/pkg/front_end/testcases/rasta/issue_000008.dart.outline.expect
index 9db0b61..b3114fd 100644
--- a/pkg/front_end/testcases/rasta/issue_000008.dart.outline.expect
+++ b/pkg/front_end/testcases/rasta/issue_000008.dart.outline.expect
@@ -6,6 +6,16 @@
   final field dynamic x;
   constructor •(dynamic x) → self::C*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/rasta/issue_000008.dart.strong.expect b/pkg/front_end/testcases/rasta/issue_000008.dart.strong.expect
index 14255eb..fe68c36 100644
--- a/pkg/front_end/testcases/rasta/issue_000008.dart.strong.expect
+++ b/pkg/front_end/testcases/rasta/issue_000008.dart.strong.expect
@@ -7,6 +7,16 @@
   constructor •(dynamic x) → self::C*
     : self::C::x = x, super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   new self::C::•(42);
diff --git a/pkg/front_end/testcases/rasta/issue_000008.dart.strong.transformed.expect b/pkg/front_end/testcases/rasta/issue_000008.dart.strong.transformed.expect
index 14255eb..fe68c36 100644
--- a/pkg/front_end/testcases/rasta/issue_000008.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/rasta/issue_000008.dart.strong.transformed.expect
@@ -7,6 +7,16 @@
   constructor •(dynamic x) → self::C*
     : self::C::x = x, super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   new self::C::•(42);
diff --git a/pkg/front_end/testcases/rasta/issue_000012.dart.outline.expect b/pkg/front_end/testcases/rasta/issue_000012.dart.outline.expect
index 9f90a91..72dbd47 100644
--- a/pkg/front_end/testcases/rasta/issue_000012.dart.outline.expect
+++ b/pkg/front_end/testcases/rasta/issue_000012.dart.outline.expect
@@ -6,6 +6,16 @@
   field dynamic field;
   synthetic constructor •() → self::A*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A {
   synthetic constructor •() → self::B*
diff --git a/pkg/front_end/testcases/rasta/issue_000012.dart.strong.expect b/pkg/front_end/testcases/rasta/issue_000012.dart.strong.expect
index 0ace8b9..d550058 100644
--- a/pkg/front_end/testcases/rasta/issue_000012.dart.strong.expect
+++ b/pkg/front_end/testcases/rasta/issue_000012.dart.strong.expect
@@ -7,6 +7,16 @@
   synthetic constructor •() → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A {
   synthetic constructor •() → self::B*
diff --git a/pkg/front_end/testcases/rasta/issue_000012.dart.strong.transformed.expect b/pkg/front_end/testcases/rasta/issue_000012.dart.strong.transformed.expect
index 0ace8b9..d550058 100644
--- a/pkg/front_end/testcases/rasta/issue_000012.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/rasta/issue_000012.dart.strong.transformed.expect
@@ -7,6 +7,16 @@
   synthetic constructor •() → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A {
   synthetic constructor •() → self::B*
diff --git a/pkg/front_end/testcases/rasta/issue_000026.dart.outline.expect b/pkg/front_end/testcases/rasta/issue_000026.dart.outline.expect
index cdccc71..60480c2 100644
--- a/pkg/front_end/testcases/rasta/issue_000026.dart.outline.expect
+++ b/pkg/front_end/testcases/rasta/issue_000026.dart.outline.expect
@@ -8,6 +8,16 @@
   field core::int* c;
   synthetic constructor •() → self::C*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D extends core::Object {
   field dynamic a;
@@ -15,6 +25,16 @@
   field core::int* c;
   constructor •() → self::D*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/rasta/issue_000026.dart.strong.expect b/pkg/front_end/testcases/rasta/issue_000026.dart.strong.expect
index f07b514..e327297 100644
--- a/pkg/front_end/testcases/rasta/issue_000026.dart.strong.expect
+++ b/pkg/front_end/testcases/rasta/issue_000026.dart.strong.expect
@@ -9,6 +9,16 @@
   synthetic constructor •() → self::C*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D extends core::Object {
   field dynamic a = null;
@@ -17,6 +27,16 @@
   constructor •() → self::D*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   new self::C::•();
diff --git a/pkg/front_end/testcases/rasta/issue_000026.dart.strong.transformed.expect b/pkg/front_end/testcases/rasta/issue_000026.dart.strong.transformed.expect
index f07b514..e327297 100644
--- a/pkg/front_end/testcases/rasta/issue_000026.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/rasta/issue_000026.dart.strong.transformed.expect
@@ -9,6 +9,16 @@
   synthetic constructor •() → self::C*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D extends core::Object {
   field dynamic a = null;
@@ -17,6 +27,16 @@
   constructor •() → self::D*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   new self::C::•();
diff --git a/pkg/front_end/testcases/rasta/issue_000032.dart.outline.expect b/pkg/front_end/testcases/rasta/issue_000032.dart.outline.expect
index 497582b..59fef40 100644
--- a/pkg/front_end/testcases/rasta/issue_000032.dart.outline.expect
+++ b/pkg/front_end/testcases/rasta/issue_000032.dart.outline.expect
@@ -26,6 +26,16 @@
 class C extends core::Object {
   constructor •() → self::C*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/rasta/issue_000032.dart.strong.expect b/pkg/front_end/testcases/rasta/issue_000032.dart.strong.expect
index 8b101b6..66ee92b 100644
--- a/pkg/front_end/testcases/rasta/issue_000032.dart.strong.expect
+++ b/pkg/front_end/testcases/rasta/issue_000032.dart.strong.expect
@@ -40,6 +40,16 @@
 class C extends core::Object {
   constructor •() → self::C*
     : super core::Object::•() {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   invalid-expression "pkg/front_end/testcases/rasta/issue_000032.dart:10:4: Error: The operator '<' isn't defined for the class 'Type'.
diff --git a/pkg/front_end/testcases/rasta/issue_000032.dart.strong.transformed.expect b/pkg/front_end/testcases/rasta/issue_000032.dart.strong.transformed.expect
index 8b101b6..66ee92b 100644
--- a/pkg/front_end/testcases/rasta/issue_000032.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/rasta/issue_000032.dart.strong.transformed.expect
@@ -40,6 +40,16 @@
 class C extends core::Object {
   constructor •() → self::C*
     : super core::Object::•() {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   invalid-expression "pkg/front_end/testcases/rasta/issue_000032.dart:10:4: Error: The operator '<' isn't defined for the class 'Type'.
diff --git a/pkg/front_end/testcases/rasta/issue_000034.dart.outline.expect b/pkg/front_end/testcases/rasta/issue_000034.dart.outline.expect
index 3bfabf7..eea6c81 100644
--- a/pkg/front_end/testcases/rasta/issue_000034.dart.outline.expect
+++ b/pkg/front_end/testcases/rasta/issue_000034.dart.outline.expect
@@ -20,6 +20,16 @@
   const C() : this.x;
               ^"
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/rasta/issue_000034.dart.strong.expect b/pkg/front_end/testcases/rasta/issue_000034.dart.strong.expect
index 0f316bb..0ceb807 100644
--- a/pkg/front_end/testcases/rasta/issue_000034.dart.strong.expect
+++ b/pkg/front_end/testcases/rasta/issue_000034.dart.strong.expect
@@ -20,6 +20,16 @@
   const C() : this.x;
               ^"
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   invalid-expression "pkg/front_end/testcases/rasta/issue_000034.dart:6:15: Error: This couldn't be parsed.
diff --git a/pkg/front_end/testcases/rasta/issue_000034.dart.strong.transformed.expect b/pkg/front_end/testcases/rasta/issue_000034.dart.strong.transformed.expect
index 0f316bb..0ceb807 100644
--- a/pkg/front_end/testcases/rasta/issue_000034.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/rasta/issue_000034.dart.strong.transformed.expect
@@ -20,6 +20,16 @@
   const C() : this.x;
               ^"
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   invalid-expression "pkg/front_end/testcases/rasta/issue_000034.dart:6:15: Error: This couldn't be parsed.
diff --git a/pkg/front_end/testcases/rasta/issue_000035.dart.outline.expect b/pkg/front_end/testcases/rasta/issue_000035.dart.outline.expect
index 347c841..1c4b0b8 100644
--- a/pkg/front_end/testcases/rasta/issue_000035.dart.outline.expect
+++ b/pkg/front_end/testcases/rasta/issue_000035.dart.outline.expect
@@ -33,6 +33,16 @@
   synthetic constructor •() → self::C*
     ;
   abstract method æøC() → dynamic;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/rasta/issue_000035.dart.strong.expect b/pkg/front_end/testcases/rasta/issue_000035.dart.strong.expect
index 3d22952..0c52046 100644
--- a/pkg/front_end/testcases/rasta/issue_000035.dart.strong.expect
+++ b/pkg/front_end/testcases/rasta/issue_000035.dart.strong.expect
@@ -34,5 +34,15 @@
     : super core::Object::•()
     ;
   abstract method æøC() → dynamic;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/rasta/issue_000035.dart.strong.transformed.expect b/pkg/front_end/testcases/rasta/issue_000035.dart.strong.transformed.expect
index 3d22952..0c52046 100644
--- a/pkg/front_end/testcases/rasta/issue_000035.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/rasta/issue_000035.dart.strong.transformed.expect
@@ -34,5 +34,15 @@
     : super core::Object::•()
     ;
   abstract method æøC() → dynamic;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/rasta/issue_000035a.dart.outline.expect b/pkg/front_end/testcases/rasta/issue_000035a.dart.outline.expect
index a7d63f3..b3ac3ae 100644
--- a/pkg/front_end/testcases/rasta/issue_000035a.dart.outline.expect
+++ b/pkg/front_end/testcases/rasta/issue_000035a.dart.outline.expect
@@ -16,6 +16,16 @@
 class C extends core::Object {
   constructor •() → self::C*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/rasta/issue_000035a.dart.strong.expect b/pkg/front_end/testcases/rasta/issue_000035a.dart.strong.expect
index a4f9fec..f438a6b 100644
--- a/pkg/front_end/testcases/rasta/issue_000035a.dart.strong.expect
+++ b/pkg/front_end/testcases/rasta/issue_000035a.dart.strong.expect
@@ -17,5 +17,15 @@
   constructor •() → self::C*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/rasta/issue_000035a.dart.strong.transformed.expect b/pkg/front_end/testcases/rasta/issue_000035a.dart.strong.transformed.expect
index a4f9fec..f438a6b 100644
--- a/pkg/front_end/testcases/rasta/issue_000035a.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/rasta/issue_000035a.dart.strong.transformed.expect
@@ -17,5 +17,15 @@
   constructor •() → self::C*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/rasta/issue_000039.dart.outline.expect b/pkg/front_end/testcases/rasta/issue_000039.dart.outline.expect
index 3b04229..45a3ab7 100644
--- a/pkg/front_end/testcases/rasta/issue_000039.dart.outline.expect
+++ b/pkg/front_end/testcases/rasta/issue_000039.dart.outline.expect
@@ -6,6 +6,16 @@
   field dynamic a;
   constructor •(dynamic x) → self::A*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A {
   synthetic constructor •() → self::B*
diff --git a/pkg/front_end/testcases/rasta/issue_000039.dart.strong.expect b/pkg/front_end/testcases/rasta/issue_000039.dart.strong.expect
index 0e2b712..40053ef 100644
--- a/pkg/front_end/testcases/rasta/issue_000039.dart.strong.expect
+++ b/pkg/front_end/testcases/rasta/issue_000039.dart.strong.expect
@@ -29,6 +29,16 @@
   }
   ^";
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A {
   synthetic constructor •() → self::B*
diff --git a/pkg/front_end/testcases/rasta/issue_000039.dart.strong.transformed.expect b/pkg/front_end/testcases/rasta/issue_000039.dart.strong.transformed.expect
index 0e2b712..40053ef 100644
--- a/pkg/front_end/testcases/rasta/issue_000039.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/rasta/issue_000039.dart.strong.transformed.expect
@@ -29,6 +29,16 @@
   }
   ^";
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A {
   synthetic constructor •() → self::B*
diff --git a/pkg/front_end/testcases/rasta/issue_000041.dart.outline.expect b/pkg/front_end/testcases/rasta/issue_000041.dart.outline.expect
index ff49757..67160a5 100644
--- a/pkg/front_end/testcases/rasta/issue_000041.dart.outline.expect
+++ b/pkg/front_end/testcases/rasta/issue_000041.dart.outline.expect
@@ -7,6 +7,16 @@
     ;
   method test() → dynamic
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method use(dynamic _) → dynamic
   ;
diff --git a/pkg/front_end/testcases/rasta/issue_000041.dart.strong.expect b/pkg/front_end/testcases/rasta/issue_000041.dart.strong.expect
index 10c01ce..f6215a4 100644
--- a/pkg/front_end/testcases/rasta/issue_000041.dart.strong.expect
+++ b/pkg/front_end/testcases/rasta/issue_000041.dart.strong.expect
@@ -27,6 +27,16 @@
     use(+super);
          ^^^^^"));
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method use(dynamic _) → dynamic
   return null;
diff --git a/pkg/front_end/testcases/rasta/issue_000041.dart.strong.transformed.expect b/pkg/front_end/testcases/rasta/issue_000041.dart.strong.transformed.expect
index 10c01ce..f6215a4 100644
--- a/pkg/front_end/testcases/rasta/issue_000041.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/rasta/issue_000041.dart.strong.transformed.expect
@@ -27,6 +27,16 @@
     use(+super);
          ^^^^^"));
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method use(dynamic _) → dynamic
   return null;
diff --git a/pkg/front_end/testcases/rasta/issue_000043.dart.outline.expect b/pkg/front_end/testcases/rasta/issue_000043.dart.outline.expect
index 5117eb3..11a826d 100644
--- a/pkg/front_end/testcases/rasta/issue_000043.dart.outline.expect
+++ b/pkg/front_end/testcases/rasta/issue_000043.dart.outline.expect
@@ -7,4 +7,14 @@
     ;
   get x() → dynamic
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
diff --git a/pkg/front_end/testcases/rasta/issue_000043.dart.strong.expect b/pkg/front_end/testcases/rasta/issue_000043.dart.strong.expect
index 15d107d..4ed1083 100644
--- a/pkg/front_end/testcases/rasta/issue_000043.dart.strong.expect
+++ b/pkg/front_end/testcases/rasta/issue_000043.dart.strong.expect
@@ -8,4 +8,14 @@
     ;
   get x() → dynamic
     return "${self::C*}".{core::String::hashCode};
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
diff --git a/pkg/front_end/testcases/rasta/issue_000043.dart.strong.transformed.expect b/pkg/front_end/testcases/rasta/issue_000043.dart.strong.transformed.expect
index 15d107d..4ed1083 100644
--- a/pkg/front_end/testcases/rasta/issue_000043.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/rasta/issue_000043.dart.strong.transformed.expect
@@ -8,4 +8,14 @@
     ;
   get x() → dynamic
     return "${self::C*}".{core::String::hashCode};
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
diff --git a/pkg/front_end/testcases/rasta/issue_000044.dart.outline.expect b/pkg/front_end/testcases/rasta/issue_000044.dart.outline.expect
index c4ff133..ae851de 100644
--- a/pkg/front_end/testcases/rasta/issue_000044.dart.outline.expect
+++ b/pkg/front_end/testcases/rasta/issue_000044.dart.outline.expect
@@ -39,6 +39,16 @@
     let dynamic #redirecting_factory = self::C::constant in invalid-expression;
   method notEvenAConstructor(dynamic a) → self::C*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method b(dynamic c) → invalid-type
   ;
diff --git a/pkg/front_end/testcases/rasta/issue_000044.dart.strong.expect b/pkg/front_end/testcases/rasta/issue_000044.dart.strong.expect
index b936679..304fc43 100644
--- a/pkg/front_end/testcases/rasta/issue_000044.dart.strong.expect
+++ b/pkg/front_end/testcases/rasta/issue_000044.dart.strong.expect
@@ -81,6 +81,16 @@
 Try correcting the name to the name of an existing getter, or defining a getter or field named 'h'.
   C notEvenAConstructor(a) = h;
                              ^" as{TypeError,ForDynamic} self::C*;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method b(dynamic c) → invalid-type
   return invalid-expression "pkg/front_end/testcases/rasta/issue_000044.dart:7:10: Error: Getter not found: 'd'.
diff --git a/pkg/front_end/testcases/rasta/issue_000044.dart.strong.transformed.expect b/pkg/front_end/testcases/rasta/issue_000044.dart.strong.transformed.expect
index efeabae..fbca8cb 100644
--- a/pkg/front_end/testcases/rasta/issue_000044.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/rasta/issue_000044.dart.strong.transformed.expect
@@ -81,6 +81,16 @@
 Try correcting the name to the name of an existing getter, or defining a getter or field named 'h'.
   C notEvenAConstructor(a) = h;
                              ^" as{TypeError,ForDynamic} self::C*;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method b(dynamic c) → invalid-type
   return invalid-expression "pkg/front_end/testcases/rasta/issue_000044.dart:7:10: Error: Getter not found: 'd'.
diff --git a/pkg/front_end/testcases/rasta/issue_000046.dart.outline.expect b/pkg/front_end/testcases/rasta/issue_000046.dart.outline.expect
index c437b27..815f6f8 100644
--- a/pkg/front_end/testcases/rasta/issue_000046.dart.outline.expect
+++ b/pkg/front_end/testcases/rasta/issue_000046.dart.outline.expect
@@ -25,4 +25,14 @@
   field self::C* c;
   synthetic constructor •() → self::C*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
diff --git a/pkg/front_end/testcases/rasta/issue_000046.dart.strong.expect b/pkg/front_end/testcases/rasta/issue_000046.dart.strong.expect
index 82f0aca..212d891 100644
--- a/pkg/front_end/testcases/rasta/issue_000046.dart.strong.expect
+++ b/pkg/front_end/testcases/rasta/issue_000046.dart.strong.expect
@@ -38,4 +38,14 @@
   synthetic constructor •() → self::C*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
diff --git a/pkg/front_end/testcases/rasta/issue_000046.dart.strong.transformed.expect b/pkg/front_end/testcases/rasta/issue_000046.dart.strong.transformed.expect
index 82f0aca..212d891 100644
--- a/pkg/front_end/testcases/rasta/issue_000046.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/rasta/issue_000046.dart.strong.transformed.expect
@@ -38,4 +38,14 @@
   synthetic constructor •() → self::C*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
diff --git a/pkg/front_end/testcases/rasta/issue_000048.dart.outline.expect b/pkg/front_end/testcases/rasta/issue_000048.dart.outline.expect
index a0d3453..fe38e57 100644
--- a/pkg/front_end/testcases/rasta/issue_000048.dart.outline.expect
+++ b/pkg/front_end/testcases/rasta/issue_000048.dart.outline.expect
@@ -7,11 +7,31 @@
   field core::num* v2;
   constructor •(core::bool* v1, core::num* v2) → self::A*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class M1 extends core::Object {
   field core::num* v2;
   synthetic constructor •() → self::M1*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C = self::A with self::M1 {
   synthetic constructor •(core::bool* v1, core::num* v2) → self::C*
diff --git a/pkg/front_end/testcases/rasta/issue_000048.dart.strong.expect b/pkg/front_end/testcases/rasta/issue_000048.dart.strong.expect
index 544c828..5a3e709 100644
--- a/pkg/front_end/testcases/rasta/issue_000048.dart.strong.expect
+++ b/pkg/front_end/testcases/rasta/issue_000048.dart.strong.expect
@@ -8,12 +8,32 @@
   constructor •(core::bool* v1, core::num* v2) → self::A*
     : self::A::v1 = v1, self::A::v2 = v2, super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class M1 extends core::Object {
   field core::num* v2 = 0;
   synthetic constructor •() → self::M1*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C = self::A with self::M1 {
   synthetic constructor •(core::bool* v1, core::num* v2) → self::C*
diff --git a/pkg/front_end/testcases/rasta/issue_000048.dart.strong.transformed.expect b/pkg/front_end/testcases/rasta/issue_000048.dart.strong.transformed.expect
index 47945f6..f85982a 100644
--- a/pkg/front_end/testcases/rasta/issue_000048.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/rasta/issue_000048.dart.strong.transformed.expect
@@ -8,18 +8,48 @@
   constructor •(core::bool* v1, core::num* v2) → self::A*
     : self::A::v1 = v1, self::A::v2 = v2, super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class M1 extends core::Object {
   field core::num* v2 = 0;
   synthetic constructor •() → self::M1*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C extends self::A implements self::M1 /*isEliminatedMixin*/  {
   field core::num* v2 = 0;
   synthetic constructor •(core::bool* v1, core::num* v2) → self::C*
     : super self::A::•(v1, v2)
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   self::C* c = new self::C::•(true, 2);
diff --git a/pkg/front_end/testcases/rasta/issue_000053.dart.outline.expect b/pkg/front_end/testcases/rasta/issue_000053.dart.outline.expect
index c5a10b7..772b3dd 100644
--- a/pkg/front_end/testcases/rasta/issue_000053.dart.outline.expect
+++ b/pkg/front_end/testcases/rasta/issue_000053.dart.outline.expect
@@ -9,6 +9,15 @@
     ;
   method test() → dynamic
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/rasta/issue_000053.dart.strong.expect b/pkg/front_end/testcases/rasta/issue_000053.dart.strong.expect
index 8272737..627b352 100644
--- a/pkg/front_end/testcases/rasta/issue_000053.dart.strong.expect
+++ b/pkg/front_end/testcases/rasta/issue_000053.dart.strong.expect
@@ -11,6 +11,15 @@
   method test() → dynamic {
     super.{core::Object::==}(null);
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   new self::C::•().{self::C::test}();
diff --git a/pkg/front_end/testcases/rasta/issue_000053.dart.strong.transformed.expect b/pkg/front_end/testcases/rasta/issue_000053.dart.strong.transformed.expect
index 8272737..627b352 100644
--- a/pkg/front_end/testcases/rasta/issue_000053.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/rasta/issue_000053.dart.strong.transformed.expect
@@ -11,6 +11,15 @@
   method test() → dynamic {
     super.{core::Object::==}(null);
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   new self::C::•().{self::C::test}();
diff --git a/pkg/front_end/testcases/rasta/issue_000067.dart.outline.expect b/pkg/front_end/testcases/rasta/issue_000067.dart.outline.expect
index fc028dd..f3524c0 100644
--- a/pkg/front_end/testcases/rasta/issue_000067.dart.outline.expect
+++ b/pkg/front_end/testcases/rasta/issue_000067.dart.outline.expect
@@ -12,6 +12,16 @@
     let dynamic #redirecting_factory = self::C::bar in invalid-expression;
   method m() → core::int*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C extends self::A {
   static field dynamic _redirecting# = <dynamic>[self::C::bar];
diff --git a/pkg/front_end/testcases/rasta/issue_000067.dart.strong.expect b/pkg/front_end/testcases/rasta/issue_000067.dart.strong.expect
index b56a0be..b4bad98 100644
--- a/pkg/front_end/testcases/rasta/issue_000067.dart.strong.expect
+++ b/pkg/front_end/testcases/rasta/issue_000067.dart.strong.expect
@@ -12,6 +12,16 @@
   static factory foo() → self::A*
     let dynamic #redirecting_factory = self::C::bar in invalid-expression;
   method m() → core::int* {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C extends self::A {
   static field dynamic _redirecting# = <dynamic>[self::C::bar];
diff --git a/pkg/front_end/testcases/rasta/issue_000067.dart.strong.transformed.expect b/pkg/front_end/testcases/rasta/issue_000067.dart.strong.transformed.expect
index 0c73e75..7290a1a 100644
--- a/pkg/front_end/testcases/rasta/issue_000067.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/rasta/issue_000067.dart.strong.transformed.expect
@@ -12,6 +12,16 @@
   static factory foo() → self::A*
     let () →* self::C* #redirecting_factory = self::C::bar in invalid-expression;
   method m() → core::int* {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C extends self::A {
   static field dynamic _redirecting# = <dynamic>[self::C::bar];
diff --git a/pkg/front_end/testcases/rasta/issue_000068.dart.outline.expect b/pkg/front_end/testcases/rasta/issue_000068.dart.outline.expect
index abf46bf..d05df88 100644
--- a/pkg/front_end/testcases/rasta/issue_000068.dart.outline.expect
+++ b/pkg/front_end/testcases/rasta/issue_000068.dart.outline.expect
@@ -7,10 +7,30 @@
 class G<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::G<self::G::T*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class A extends core::Object {
   synthetic constructor •() → self::A*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A {
   synthetic constructor •() → self::B*
diff --git a/pkg/front_end/testcases/rasta/issue_000068.dart.strong.expect b/pkg/front_end/testcases/rasta/issue_000068.dart.strong.expect
index e2d49f4..3fea734 100644
--- a/pkg/front_end/testcases/rasta/issue_000068.dart.strong.expect
+++ b/pkg/front_end/testcases/rasta/issue_000068.dart.strong.expect
@@ -9,11 +9,31 @@
   synthetic constructor •() → self::G<self::G::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class A extends core::Object {
   synthetic constructor •() → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A {
   synthetic constructor •() → self::B*
diff --git a/pkg/front_end/testcases/rasta/issue_000068.dart.strong.transformed.expect b/pkg/front_end/testcases/rasta/issue_000068.dart.strong.transformed.expect
index e2d49f4..3fea734 100644
--- a/pkg/front_end/testcases/rasta/issue_000068.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/rasta/issue_000068.dart.strong.transformed.expect
@@ -9,11 +9,31 @@
   synthetic constructor •() → self::G<self::G::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class A extends core::Object {
   synthetic constructor •() → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A {
   synthetic constructor •() → self::B*
diff --git a/pkg/front_end/testcases/rasta/issue_000070.dart.outline.expect b/pkg/front_end/testcases/rasta/issue_000070.dart.outline.expect
index 26f75a5..209d068 100644
--- a/pkg/front_end/testcases/rasta/issue_000070.dart.outline.expect
+++ b/pkg/front_end/testcases/rasta/issue_000070.dart.outline.expect
@@ -19,10 +19,30 @@
     ;
   set setter(generic-covariant-impl self::A::S* s) → void
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class J<Aa extends core::Object* = dynamic, B extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::J<self::J::Aa*, self::J::B*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class I<H extends core::Object* = dynamic, C extends core::Object* = dynamic, K extends core::Object* = dynamic> extends self::J<self::I::C*, self::I::K*> {
   synthetic constructor •() → self::I<self::I::H*, self::I::C*, self::I::K*>*
diff --git a/pkg/front_end/testcases/rasta/issue_000070.dart.strong.expect b/pkg/front_end/testcases/rasta/issue_000070.dart.strong.expect
index 08f02742..4cb100c 100644
--- a/pkg/front_end/testcases/rasta/issue_000070.dart.strong.expect
+++ b/pkg/front_end/testcases/rasta/issue_000070.dart.strong.expect
@@ -25,11 +25,31 @@
     return this.{self::A::field};
   }
   set setter(generic-covariant-impl self::A::S* s) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class J<Aa extends core::Object* = dynamic, B extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::J<self::J::Aa*, self::J::B*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class I<H extends core::Object* = dynamic, C extends core::Object* = dynamic, K extends core::Object* = dynamic> extends self::J<self::I::C*, self::I::K*> {
   synthetic constructor •() → self::I<self::I::H*, self::I::C*, self::I::K*>*
diff --git a/pkg/front_end/testcases/rasta/issue_000070.dart.strong.transformed.expect b/pkg/front_end/testcases/rasta/issue_000070.dart.strong.transformed.expect
index 44a777c..5f0cb77 100644
--- a/pkg/front_end/testcases/rasta/issue_000070.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/rasta/issue_000070.dart.strong.transformed.expect
@@ -25,11 +25,31 @@
     return this.{self::A::field};
   }
   set setter(generic-covariant-impl self::A::S* s) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class J<Aa extends core::Object* = dynamic, B extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::J<self::J::Aa*, self::J::B*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class I<H extends core::Object* = dynamic, C extends core::Object* = dynamic, K extends core::Object* = dynamic> extends self::J<self::I::C*, self::I::K*> {
   synthetic constructor •() → self::I<self::I::H*, self::I::C*, self::I::K*>*
diff --git a/pkg/front_end/testcases/rasta/issue_000080.dart.outline.expect b/pkg/front_end/testcases/rasta/issue_000080.dart.outline.expect
index 99bda27..f091c8f 100644
--- a/pkg/front_end/testcases/rasta/issue_000080.dart.outline.expect
+++ b/pkg/front_end/testcases/rasta/issue_000080.dart.outline.expect
@@ -8,11 +8,31 @@
     ;
   method foo() → dynamic
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class _Foo&Object&Mixin = core::Object with self::Mixin /*isAnonymousMixin*/  {
   synthetic constructor •() → self::_Foo&Object&Mixin*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Foo extends self::_Foo&Object&Mixin {
   synthetic constructor •() → self::Foo*
diff --git a/pkg/front_end/testcases/rasta/issue_000080.dart.strong.expect b/pkg/front_end/testcases/rasta/issue_000080.dart.strong.expect
index 6a193ab..ab73e3d 100644
--- a/pkg/front_end/testcases/rasta/issue_000080.dart.strong.expect
+++ b/pkg/front_end/testcases/rasta/issue_000080.dart.strong.expect
@@ -9,11 +9,31 @@
     ;
   method foo() → dynamic
     return 87;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class _Foo&Object&Mixin = core::Object with self::Mixin /*isAnonymousMixin*/  {
   synthetic constructor •() → self::_Foo&Object&Mixin*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Foo extends self::_Foo&Object&Mixin {
   synthetic constructor •() → self::Foo*
diff --git a/pkg/front_end/testcases/rasta/issue_000080.dart.strong.transformed.expect b/pkg/front_end/testcases/rasta/issue_000080.dart.strong.transformed.expect
index 5f31625..5bdd405 100644
--- a/pkg/front_end/testcases/rasta/issue_000080.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/rasta/issue_000080.dart.strong.transformed.expect
@@ -9,12 +9,32 @@
     ;
   method foo() → dynamic
     return 87;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class _Foo&Object&Mixin extends core::Object implements self::Mixin /*isAnonymousMixin,isEliminatedMixin*/  {
   field dynamic field = null;
   synthetic constructor •() → self::_Foo&Object&Mixin*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
   method foo() → dynamic
     return 87;
 }
diff --git a/pkg/front_end/testcases/rasta/issue_000081.dart.outline.expect b/pkg/front_end/testcases/rasta/issue_000081.dart.outline.expect
index 407d063..66d22a8c 100644
--- a/pkg/front_end/testcases/rasta/issue_000081.dart.outline.expect
+++ b/pkg/front_end/testcases/rasta/issue_000081.dart.outline.expect
@@ -6,6 +6,15 @@
   field core::int* hashCode;
   synthetic constructor •() → self::Base*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Sub extends self::Base {
   field core::int* _hashCode;
diff --git a/pkg/front_end/testcases/rasta/issue_000081.dart.strong.expect b/pkg/front_end/testcases/rasta/issue_000081.dart.strong.expect
index ecdd7b2..76ab78f 100644
--- a/pkg/front_end/testcases/rasta/issue_000081.dart.strong.expect
+++ b/pkg/front_end/testcases/rasta/issue_000081.dart.strong.expect
@@ -7,6 +7,15 @@
   synthetic constructor •() → self::Base*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Sub extends self::Base {
   field core::int* _hashCode = null;
diff --git a/pkg/front_end/testcases/rasta/issue_000081.dart.strong.transformed.expect b/pkg/front_end/testcases/rasta/issue_000081.dart.strong.transformed.expect
index ecdd7b2..76ab78f 100644
--- a/pkg/front_end/testcases/rasta/issue_000081.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/rasta/issue_000081.dart.strong.transformed.expect
@@ -7,6 +7,15 @@
   synthetic constructor •() → self::Base*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Sub extends self::Base {
   field core::int* _hashCode = null;
diff --git a/pkg/front_end/testcases/rasta/malformed_const_constructor.dart.outline.expect b/pkg/front_end/testcases/rasta/malformed_const_constructor.dart.outline.expect
index 186fdea..11bdb6c 100644
--- a/pkg/front_end/testcases/rasta/malformed_const_constructor.dart.outline.expect
+++ b/pkg/front_end/testcases/rasta/malformed_const_constructor.dart.outline.expect
@@ -27,6 +27,16 @@
   field core::String* x;
   constructor •() → self::A*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/rasta/malformed_const_constructor.dart.strong.expect b/pkg/front_end/testcases/rasta/malformed_const_constructor.dart.strong.expect
index efff4dd..f3785a9 100644
--- a/pkg/front_end/testcases/rasta/malformed_const_constructor.dart.strong.expect
+++ b/pkg/front_end/testcases/rasta/malformed_const_constructor.dart.strong.expect
@@ -32,6 +32,16 @@
   field core::String* x = "foo";
   constructor •() → self::A*
     : self::A::x = "foo", super core::Object::•() {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   invalid-expression "pkg/front_end/testcases/rasta/malformed_const_constructor.dart:13:9: Error: Cannot invoke a non-'const' constructor where a const expression is expected.
diff --git a/pkg/front_end/testcases/rasta/malformed_const_constructor.dart.strong.transformed.expect b/pkg/front_end/testcases/rasta/malformed_const_constructor.dart.strong.transformed.expect
index efff4dd..f3785a9 100644
--- a/pkg/front_end/testcases/rasta/malformed_const_constructor.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/rasta/malformed_const_constructor.dart.strong.transformed.expect
@@ -32,6 +32,16 @@
   field core::String* x = "foo";
   constructor •() → self::A*
     : self::A::x = "foo", super core::Object::•() {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   invalid-expression "pkg/front_end/testcases/rasta/malformed_const_constructor.dart:13:9: Error: Cannot invoke a non-'const' constructor where a const expression is expected.
diff --git a/pkg/front_end/testcases/rasta/mixin_library.dart.outline.expect b/pkg/front_end/testcases/rasta/mixin_library.dart.outline.expect
index 17b2ebb..7ce0634 100644
--- a/pkg/front_end/testcases/rasta/mixin_library.dart.outline.expect
+++ b/pkg/front_end/testcases/rasta/mixin_library.dart.outline.expect
@@ -21,6 +21,16 @@
     ;
   method publicMethod() → dynamic
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method f() → dynamic
   ;
diff --git a/pkg/front_end/testcases/rasta/mixin_library.dart.strong.expect b/pkg/front_end/testcases/rasta/mixin_library.dart.strong.expect
index a5e12f1..e59ed7e 100644
--- a/pkg/front_end/testcases/rasta/mixin_library.dart.strong.expect
+++ b/pkg/front_end/testcases/rasta/mixin_library.dart.strong.expect
@@ -29,6 +29,16 @@
     return 49;
   method publicMethod() → dynamic
     return this.{self::Mixin::_privateMethod}();
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method f() → dynamic
   return 2;
diff --git a/pkg/front_end/testcases/rasta/native_is_illegal.dart.outline.expect b/pkg/front_end/testcases/rasta/native_is_illegal.dart.outline.expect
index efae6ca..c683d65 100644
--- a/pkg/front_end/testcases/rasta/native_is_illegal.dart.outline.expect
+++ b/pkg/front_end/testcases/rasta/native_is_illegal.dart.outline.expect
@@ -7,5 +7,15 @@
   external set x(self::Bar* value) → void;
   external method f() → dynamic;
   external static factory •() → self::Bar*;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 external static method foo() → dynamic;
diff --git a/pkg/front_end/testcases/rasta/native_is_illegal.dart.strong.expect b/pkg/front_end/testcases/rasta/native_is_illegal.dart.strong.expect
index 84eda80..ae96481 100644
--- a/pkg/front_end/testcases/rasta/native_is_illegal.dart.strong.expect
+++ b/pkg/front_end/testcases/rasta/native_is_illegal.dart.strong.expect
@@ -12,6 +12,16 @@
   external method f() → dynamic;
   @#C8
   external static factory •() → self::Bar*;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 @#C10
 external static method foo() → dynamic;
diff --git a/pkg/front_end/testcases/rasta/native_is_illegal.dart.strong.transformed.expect b/pkg/front_end/testcases/rasta/native_is_illegal.dart.strong.transformed.expect
index 84eda80..ae96481 100644
--- a/pkg/front_end/testcases/rasta/native_is_illegal.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/rasta/native_is_illegal.dart.strong.transformed.expect
@@ -12,6 +12,16 @@
   external method f() → dynamic;
   @#C8
   external static factory •() → self::Bar*;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 @#C10
 external static method foo() → dynamic;
diff --git a/pkg/front_end/testcases/rasta/static.dart.outline.expect b/pkg/front_end/testcases/rasta/static.dart.outline.expect
index c9bb1ac..6cf946b 100644
--- a/pkg/front_end/testcases/rasta/static.dart.outline.expect
+++ b/pkg/front_end/testcases/rasta/static.dart.outline.expect
@@ -13,6 +13,16 @@
     ;
   static set staticSetter(dynamic _) → void
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method use(dynamic x) → dynamic
   ;
diff --git a/pkg/front_end/testcases/rasta/static.dart.strong.expect b/pkg/front_end/testcases/rasta/static.dart.strong.expect
index 2cee8d5..64ae199 100644
--- a/pkg/front_end/testcases/rasta/static.dart.strong.expect
+++ b/pkg/front_end/testcases/rasta/static.dart.strong.expect
@@ -171,6 +171,16 @@
   static get staticGetter() → dynamic
     return null;
   static set staticSetter(dynamic _) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method use(dynamic x) → dynamic {
   if(x.{core::Object::==}(new core::DateTime::now().{core::DateTime::millisecondsSinceEpoch}))
diff --git a/pkg/front_end/testcases/rasta/static.dart.strong.transformed.expect b/pkg/front_end/testcases/rasta/static.dart.strong.transformed.expect
index 2cee8d5..64ae199 100644
--- a/pkg/front_end/testcases/rasta/static.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/rasta/static.dart.strong.transformed.expect
@@ -171,6 +171,16 @@
   static get staticGetter() → dynamic
     return null;
   static set staticSetter(dynamic _) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method use(dynamic x) → dynamic {
   if(x.{core::Object::==}(new core::DateTime::now().{core::DateTime::millisecondsSinceEpoch}))
diff --git a/pkg/front_end/testcases/rasta/super.dart.outline.expect b/pkg/front_end/testcases/rasta/super.dart.outline.expect
index 8a38586..8a9ee06 100644
--- a/pkg/front_end/testcases/rasta/super.dart.outline.expect
+++ b/pkg/front_end/testcases/rasta/super.dart.outline.expect
@@ -46,6 +46,15 @@
     ;
   set n(dynamic _) → void
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A {
   final field dynamic d;
diff --git a/pkg/front_end/testcases/rasta/super.dart.strong.expect b/pkg/front_end/testcases/rasta/super.dart.strong.expect
index 5907733..f372646 100644
--- a/pkg/front_end/testcases/rasta/super.dart.strong.expect
+++ b/pkg/front_end/testcases/rasta/super.dart.strong.expect
@@ -375,6 +375,15 @@
   method m() → void {}
   method n() → void {}
   set n(dynamic _) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A {
   final field dynamic d = null;
diff --git a/pkg/front_end/testcases/rasta/super_initializer.dart.outline.expect b/pkg/front_end/testcases/rasta/super_initializer.dart.outline.expect
index 01ea8c6..8fcaf43 100644
--- a/pkg/front_end/testcases/rasta/super_initializer.dart.outline.expect
+++ b/pkg/front_end/testcases/rasta/super_initializer.dart.outline.expect
@@ -9,6 +9,16 @@
     ;
   constructor arg2(dynamic a, dynamic b) → self::Super*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Sub extends self::Super {
   field dynamic field;
diff --git a/pkg/front_end/testcases/rasta/super_initializer.dart.strong.expect b/pkg/front_end/testcases/rasta/super_initializer.dart.strong.expect
index 0dd0031..d3c3153 100644
--- a/pkg/front_end/testcases/rasta/super_initializer.dart.strong.expect
+++ b/pkg/front_end/testcases/rasta/super_initializer.dart.strong.expect
@@ -27,6 +27,16 @@
   constructor arg2(dynamic a, dynamic b) → self::Super*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Sub extends self::Super {
   field dynamic field;
diff --git a/pkg/front_end/testcases/rasta/super_initializer.dart.strong.transformed.expect b/pkg/front_end/testcases/rasta/super_initializer.dart.strong.transformed.expect
index 0dd0031..d3c3153 100644
--- a/pkg/front_end/testcases/rasta/super_initializer.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/rasta/super_initializer.dart.strong.transformed.expect
@@ -27,6 +27,16 @@
   constructor arg2(dynamic a, dynamic b) → self::Super*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Sub extends self::Super {
   field dynamic field;
diff --git a/pkg/front_end/testcases/rasta/super_mixin.dart.outline.expect b/pkg/front_end/testcases/rasta/super_mixin.dart.outline.expect
index 1966a89..06e9e80 100644
--- a/pkg/front_end/testcases/rasta/super_mixin.dart.outline.expect
+++ b/pkg/front_end/testcases/rasta/super_mixin.dart.outline.expect
@@ -12,6 +12,16 @@
     ;
   method f() → dynamic
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class _C&Super&Mixin<V extends core::Object* = dynamic> = self::Super<self::_C&Super&Mixin::V*> with mix::Mixin<self::_C&Super&Mixin::V*> /*isAnonymousMixin*/  {
   synthetic constructor •() → self::_C&Super&Mixin<self::_C&Super&Mixin::V*>*
@@ -67,6 +77,16 @@
     ;
   method publicMethod() → dynamic
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method f() → dynamic
   ;
diff --git a/pkg/front_end/testcases/rasta/super_mixin.dart.strong.expect b/pkg/front_end/testcases/rasta/super_mixin.dart.strong.expect
index 30d7ed6..0b7e344 100644
--- a/pkg/front_end/testcases/rasta/super_mixin.dart.strong.expect
+++ b/pkg/front_end/testcases/rasta/super_mixin.dart.strong.expect
@@ -13,6 +13,16 @@
     return 40;
   method f() → dynamic
     return 3;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class _C&Super&Mixin<V extends core::Object* = dynamic> = self::Super<self::_C&Super&Mixin::V*> with mix::Mixin<self::_C&Super&Mixin::V*> /*isAnonymousMixin*/  {
   synthetic constructor •() → self::_C&Super&Mixin<self::_C&Super&Mixin::V*>*
@@ -80,6 +90,16 @@
     return 49;
   method publicMethod() → dynamic
     return this.{mix::Mixin::_privateMethod}();
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method f() → dynamic
   return 2;
diff --git a/pkg/front_end/testcases/rasta/super_operator.dart.outline.expect b/pkg/front_end/testcases/rasta/super_operator.dart.outline.expect
index 9b45223..84673f0 100644
--- a/pkg/front_end/testcases/rasta/super_operator.dart.outline.expect
+++ b/pkg/front_end/testcases/rasta/super_operator.dart.outline.expect
@@ -11,6 +11,16 @@
     ;
   operator []=(dynamic i, dynamic val) → void
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A {
   synthetic constructor •() → self::B*
@@ -27,4 +37,14 @@
     ;
   method g() → dynamic
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
diff --git a/pkg/front_end/testcases/rasta/super_operator.dart.strong.expect b/pkg/front_end/testcases/rasta/super_operator.dart.strong.expect
index 4b99eb9..e3941e3 100644
--- a/pkg/front_end/testcases/rasta/super_operator.dart.strong.expect
+++ b/pkg/front_end/testcases/rasta/super_operator.dart.strong.expect
@@ -18,6 +18,16 @@
   operator [](dynamic i) → dynamic
     return null;
   operator []=(dynamic i, dynamic val) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A {
   synthetic constructor •() → self::B*
@@ -36,4 +46,14 @@
     ;
   method g() → dynamic
     return super.[](0);
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
diff --git a/pkg/front_end/testcases/rasta/this_invoke.dart.outline.expect b/pkg/front_end/testcases/rasta/this_invoke.dart.outline.expect
index 9fadbbf..69428b2 100644
--- a/pkg/front_end/testcases/rasta/this_invoke.dart.outline.expect
+++ b/pkg/front_end/testcases/rasta/this_invoke.dart.outline.expect
@@ -9,6 +9,16 @@
     ;
   method call(dynamic x) → dynamic
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/rasta/this_invoke.dart.strong.expect b/pkg/front_end/testcases/rasta/this_invoke.dart.strong.expect
index d9b8ae60..07992e3 100644
--- a/pkg/front_end/testcases/rasta/this_invoke.dart.strong.expect
+++ b/pkg/front_end/testcases/rasta/this_invoke.dart.strong.expect
@@ -10,6 +10,16 @@
     return this.{self::C::call}(x);
   method call(dynamic x) → dynamic
     return 42;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   core::print(new self::C::•().{self::C::m}(42));
diff --git a/pkg/front_end/testcases/rasta/this_invoke.dart.strong.transformed.expect b/pkg/front_end/testcases/rasta/this_invoke.dart.strong.transformed.expect
index d9b8ae60..07992e3 100644
--- a/pkg/front_end/testcases/rasta/this_invoke.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/rasta/this_invoke.dart.strong.transformed.expect
@@ -10,6 +10,16 @@
     return this.{self::C::call}(x);
   method call(dynamic x) → dynamic
     return 42;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   core::print(new self::C::•().{self::C::m}(42));
diff --git a/pkg/front_end/testcases/rasta/type_literals.dart.outline.expect b/pkg/front_end/testcases/rasta/type_literals.dart.outline.expect
index 74b02e7..072c65c 100644
--- a/pkg/front_end/testcases/rasta/type_literals.dart.outline.expect
+++ b/pkg/front_end/testcases/rasta/type_literals.dart.outline.expect
@@ -8,6 +8,16 @@
     ;
   method test() → dynamic
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method use(dynamic x) → dynamic
   ;
diff --git a/pkg/front_end/testcases/rasta/type_literals.dart.strong.expect b/pkg/front_end/testcases/rasta/type_literals.dart.strong.expect
index 4aadd22..fed0fb2 100644
--- a/pkg/front_end/testcases/rasta/type_literals.dart.strong.expect
+++ b/pkg/front_end/testcases/rasta/type_literals.dart.strong.expect
@@ -512,6 +512,16 @@
     use(Func -= 42);
         ^^^^");
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method use(dynamic x) → dynamic {
   if(x.{core::Object::==}(new core::DateTime::now().{core::DateTime::millisecondsSinceEpoch}))
diff --git a/pkg/front_end/testcases/rasta/type_literals.dart.strong.transformed.expect b/pkg/front_end/testcases/rasta/type_literals.dart.strong.transformed.expect
index 4aadd22..fed0fb2 100644
--- a/pkg/front_end/testcases/rasta/type_literals.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/rasta/type_literals.dart.strong.transformed.expect
@@ -512,6 +512,16 @@
     use(Func -= 42);
         ^^^^");
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method use(dynamic x) → dynamic {
   if(x.{core::Object::==}(new core::DateTime::now().{core::DateTime::millisecondsSinceEpoch}))
diff --git a/pkg/front_end/testcases/rasta/type_with_parse_error.dart.outline.expect b/pkg/front_end/testcases/rasta/type_with_parse_error.dart.outline.expect
index 36905b0..370dbcd 100644
--- a/pkg/front_end/testcases/rasta/type_with_parse_error.dart.outline.expect
+++ b/pkg/front_end/testcases/rasta/type_with_parse_error.dart.outline.expect
@@ -14,11 +14,31 @@
     ;
   method foo() → dynamic
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B<T extends core::Object* = dynamic> extends core::Object {
   field core::int* i;
   synthetic constructor •() → self::B<self::B::T*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/rasta/type_with_parse_error.dart.strong.expect b/pkg/front_end/testcases/rasta/type_with_parse_error.dart.strong.expect
index 18a9ac7..3751f3c 100644
--- a/pkg/front_end/testcases/rasta/type_with_parse_error.dart.strong.expect
+++ b/pkg/front_end/testcases/rasta/type_with_parse_error.dart.strong.expect
@@ -16,12 +16,32 @@
   method foo() → dynamic {
     new self::B::•<self::A*>();
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B<T extends core::Object* = dynamic> extends core::Object {
   field core::int* i = null;
   synthetic constructor •() → self::B<self::B::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   new self::B::•<self::A*>();
diff --git a/pkg/front_end/testcases/rasta/type_with_parse_error.dart.strong.transformed.expect b/pkg/front_end/testcases/rasta/type_with_parse_error.dart.strong.transformed.expect
index 18a9ac7..3751f3c 100644
--- a/pkg/front_end/testcases/rasta/type_with_parse_error.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/rasta/type_with_parse_error.dart.strong.transformed.expect
@@ -16,12 +16,32 @@
   method foo() → dynamic {
     new self::B::•<self::A*>();
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B<T extends core::Object* = dynamic> extends core::Object {
   field core::int* i = null;
   synthetic constructor •() → self::B<self::B::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   new self::B::•<self::A*>();
diff --git a/pkg/front_end/testcases/rasta/unresolved_constructor.dart.outline.expect b/pkg/front_end/testcases/rasta/unresolved_constructor.dart.outline.expect
index 6014110..a25e8f0 100644
--- a/pkg/front_end/testcases/rasta/unresolved_constructor.dart.outline.expect
+++ b/pkg/front_end/testcases/rasta/unresolved_constructor.dart.outline.expect
@@ -5,6 +5,16 @@
 class Foo extends core::Object {
   constructor •(dynamic x, dynamic y) → self::Foo*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/rasta/unresolved_constructor.dart.strong.expect b/pkg/front_end/testcases/rasta/unresolved_constructor.dart.strong.expect
index c403f6d..ecf7242 100644
--- a/pkg/front_end/testcases/rasta/unresolved_constructor.dart.strong.expect
+++ b/pkg/front_end/testcases/rasta/unresolved_constructor.dart.strong.expect
@@ -20,6 +20,16 @@
   constructor •(dynamic x, dynamic y) → self::Foo*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   invalid-expression "pkg/front_end/testcases/rasta/unresolved_constructor.dart:10:10: Error: Too few positional arguments: 2 required, 0 given.
diff --git a/pkg/front_end/testcases/rasta/unresolved_constructor.dart.strong.transformed.expect b/pkg/front_end/testcases/rasta/unresolved_constructor.dart.strong.transformed.expect
index c403f6d..ecf7242 100644
--- a/pkg/front_end/testcases/rasta/unresolved_constructor.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/rasta/unresolved_constructor.dart.strong.transformed.expect
@@ -20,6 +20,16 @@
   constructor •(dynamic x, dynamic y) → self::Foo*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   invalid-expression "pkg/front_end/testcases/rasta/unresolved_constructor.dart:10:10: Error: Too few positional arguments: 2 required, 0 given.
diff --git a/pkg/front_end/testcases/rasta/unresolved_for_in.dart.outline.expect b/pkg/front_end/testcases/rasta/unresolved_for_in.dart.outline.expect
index b910ef9..e003454 100644
--- a/pkg/front_end/testcases/rasta/unresolved_for_in.dart.outline.expect
+++ b/pkg/front_end/testcases/rasta/unresolved_for_in.dart.outline.expect
@@ -10,6 +10,16 @@
     ;
   method it1(dynamic x) → dynamic
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main(dynamic arguments) → dynamic
   ;
diff --git a/pkg/front_end/testcases/rasta/unresolved_for_in.dart.strong.expect b/pkg/front_end/testcases/rasta/unresolved_for_in.dart.strong.expect
index 76a12f1..17f8f61 100644
--- a/pkg/front_end/testcases/rasta/unresolved_for_in.dart.strong.expect
+++ b/pkg/front_end/testcases/rasta/unresolved_for_in.dart.strong.expect
@@ -140,6 +140,16 @@
       }
     }
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main(dynamic arguments) → dynamic {
   new self::Fisk::•();
diff --git a/pkg/front_end/testcases/rasta/unresolved_for_in.dart.strong.transformed.expect b/pkg/front_end/testcases/rasta/unresolved_for_in.dart.strong.transformed.expect
index cebfb0d..9b3bab4 100644
--- a/pkg/front_end/testcases/rasta/unresolved_for_in.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/rasta/unresolved_for_in.dart.strong.transformed.expect
@@ -170,6 +170,16 @@
       }
     }
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main(dynamic arguments) → dynamic {
   new self::Fisk::•();
diff --git a/pkg/front_end/testcases/rasta/unresolved_recovery.dart.outline.expect b/pkg/front_end/testcases/rasta/unresolved_recovery.dart.outline.expect
index 5cfc5c8..9da68a9 100644
--- a/pkg/front_end/testcases/rasta/unresolved_recovery.dart.outline.expect
+++ b/pkg/front_end/testcases/rasta/unresolved_recovery.dart.outline.expect
@@ -7,6 +7,16 @@
     ;
   method foo() → dynamic
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method beforeTestMissingTry() → dynamic
   ;
diff --git a/pkg/front_end/testcases/rasta/unresolved_recovery.dart.strong.expect b/pkg/front_end/testcases/rasta/unresolved_recovery.dart.strong.expect
index b4c142f..1f78b01 100644
--- a/pkg/front_end/testcases/rasta/unresolved_recovery.dart.strong.expect
+++ b/pkg/front_end/testcases/rasta/unresolved_recovery.dart.strong.expect
@@ -56,6 +56,16 @@
          ^";
     return super.[](2);
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method beforeTestMissingTry() → dynamic {
   self::testMissingTry();
diff --git a/pkg/front_end/testcases/regress/ambiguous_builder_01.dart b/pkg/front_end/testcases/regress/ambiguous_builder_01.dart
new file mode 100644
index 0000000..bc615ae
--- /dev/null
+++ b/pkg/front_end/testcases/regress/ambiguous_builder_01.dart
@@ -0,0 +1,9 @@
+// Copyright (c) 2020, the Dart project authors. Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE.md file.
+
+x.y = 42;
+x.z = true;
+void foo() {
+  if (x != null) {}
+}
diff --git a/pkg/front_end/testcases/regress/ambiguous_builder_01.dart.outline.expect b/pkg/front_end/testcases/regress/ambiguous_builder_01.dart.outline.expect
new file mode 100644
index 0000000..12324a6
--- /dev/null
+++ b/pkg/front_end/testcases/regress/ambiguous_builder_01.dart.outline.expect
@@ -0,0 +1,56 @@
+library;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/regress/ambiguous_builder_01.dart:5:1: Error: A function declaration needs an explicit list of parameters.
+// Try adding a parameter list to the function declaration.
+// x.y = 42;
+// ^
+//
+// pkg/front_end/testcases/regress/ambiguous_builder_01.dart:5:2: Error: Expected '{' before this.
+// x.y = 42;
+//  ^
+//
+// pkg/front_end/testcases/regress/ambiguous_builder_01.dart:5:2: Error: Expected a declaration, but got '.'.
+// x.y = 42;
+//  ^
+//
+// pkg/front_end/testcases/regress/ambiguous_builder_01.dart:5:3: Error: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
+// Try adding the name of the type of the variable or the keyword 'var'.
+// x.y = 42;
+//   ^
+//
+// pkg/front_end/testcases/regress/ambiguous_builder_01.dart:6:1: Error: A function declaration needs an explicit list of parameters.
+// Try adding a parameter list to the function declaration.
+// x.z = true;
+// ^
+//
+// pkg/front_end/testcases/regress/ambiguous_builder_01.dart:6:2: Error: Expected '{' before this.
+// x.z = true;
+//  ^
+//
+// pkg/front_end/testcases/regress/ambiguous_builder_01.dart:6:1: Error: 'x' is already declared in this scope.
+// x.z = true;
+// ^
+// pkg/front_end/testcases/regress/ambiguous_builder_01.dart:5:1: Context: Previous declaration of 'x'.
+// x.y = 42;
+// ^
+//
+// pkg/front_end/testcases/regress/ambiguous_builder_01.dart:6:2: Error: Expected a declaration, but got '.'.
+// x.z = true;
+//  ^
+//
+// pkg/front_end/testcases/regress/ambiguous_builder_01.dart:6:3: Error: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
+// Try adding the name of the type of the variable or the keyword 'var'.
+// x.z = true;
+//   ^
+//
+import self as self;
+import "dart:core" as core;
+
+static field core::int* y;
+static field core::bool* z;
+static method x() → dynamic
+  ;
+static method foo() → void
+  ;
diff --git a/pkg/front_end/testcases/regress/ambiguous_builder_01.dart.textual_outline.expect b/pkg/front_end/testcases/regress/ambiguous_builder_01.dart.textual_outline.expect
new file mode 100644
index 0000000..1c27cf2
--- /dev/null
+++ b/pkg/front_end/testcases/regress/ambiguous_builder_01.dart.textual_outline.expect
@@ -0,0 +1,7 @@
+x( ){ }
+.
+y = 42;
+x( ){ }
+.
+z = true;
+void foo() { }
diff --git a/pkg/front_end/testcases/regress/issue_29944.dart.outline.expect b/pkg/front_end/testcases/regress/issue_29944.dart.outline.expect
index 6de1960..c566c79 100644
--- a/pkg/front_end/testcases/regress/issue_29944.dart.outline.expect
+++ b/pkg/front_end/testcases/regress/issue_29944.dart.outline.expect
@@ -14,6 +14,16 @@
   field dynamic C;
   constructor •() → self::C*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/regress/issue_29944.dart.strong.expect b/pkg/front_end/testcases/regress/issue_29944.dart.strong.expect
index 99d9e6f..05a6fca 100644
--- a/pkg/front_end/testcases/regress/issue_29944.dart.strong.expect
+++ b/pkg/front_end/testcases/regress/issue_29944.dart.strong.expect
@@ -15,6 +15,16 @@
   constructor •() → self::C*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   new self::C::•();
diff --git a/pkg/front_end/testcases/regress/issue_29944.dart.strong.transformed.expect b/pkg/front_end/testcases/regress/issue_29944.dart.strong.transformed.expect
index 99d9e6f..05a6fca 100644
--- a/pkg/front_end/testcases/regress/issue_29944.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/regress/issue_29944.dart.strong.transformed.expect
@@ -15,6 +15,16 @@
   constructor •() → self::C*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   new self::C::•();
diff --git a/pkg/front_end/testcases/regress/issue_29981.dart.outline.expect b/pkg/front_end/testcases/regress/issue_29981.dart.outline.expect
index 254a3b9..5edd957 100644
--- a/pkg/front_end/testcases/regress/issue_29981.dart.outline.expect
+++ b/pkg/front_end/testcases/regress/issue_29981.dart.outline.expect
@@ -13,6 +13,16 @@
   field invalid-type field;
   synthetic constructor •() → self::C<self::C::T*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/regress/issue_29981.dart.strong.expect b/pkg/front_end/testcases/regress/issue_29981.dart.strong.expect
index 109d467..d3f9eae 100644
--- a/pkg/front_end/testcases/regress/issue_29981.dart.strong.expect
+++ b/pkg/front_end/testcases/regress/issue_29981.dart.strong.expect
@@ -14,6 +14,16 @@
   synthetic constructor •() → self::C<self::C::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   core::print(new self::C::•<dynamic>());
diff --git a/pkg/front_end/testcases/regress/issue_29981.dart.strong.transformed.expect b/pkg/front_end/testcases/regress/issue_29981.dart.strong.transformed.expect
index 109d467..d3f9eae 100644
--- a/pkg/front_end/testcases/regress/issue_29981.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/regress/issue_29981.dart.strong.transformed.expect
@@ -14,6 +14,16 @@
   synthetic constructor •() → self::C<self::C::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   core::print(new self::C::•<dynamic>());
diff --git a/pkg/front_end/testcases/regress/issue_29983.dart.strong.transformed.expect b/pkg/front_end/testcases/regress/issue_29983.dart.strong.transformed.expect
index 9eae023..63808a8 100644
--- a/pkg/front_end/testcases/regress/issue_29983.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/regress/issue_29983.dart.strong.transformed.expect
@@ -22,38 +22,44 @@
 import "dart:core" as core;
 
 static method f() → dynamic /* originally sync* */ {
-  core::int* :await_jump_var = 0;
-  dynamic :await_ctx_var;
-  function :sync_op(core::_SyncIterator<dynamic>* :iterator) → core::bool* yielding {
-    {
-      invalid-expression "pkg/front_end/testcases/regress/issue_29983.dart:7:3: Error: 'sync*' and 'async*' can't return a value.
+  function :sync_op_gen() → (core::_SyncIterator<dynamic>*) →* core::bool* {
+    core::int* :await_jump_var = 0;
+    dynamic :await_ctx_var;
+    return (core::_SyncIterator<dynamic>* :iterator) → core::bool* yielding {
+      {
+        invalid-expression "pkg/front_end/testcases/regress/issue_29983.dart:7:3: Error: 'sync*' and 'async*' can't return a value.
   return missing;
   ^";
-    }
-    return false;
+      }
+      return false;
+    };
   }
-  return new core::_SyncIterable::•<dynamic>(:sync_op);
+  return new core::_SyncIterable::•<dynamic>(:sync_op_gen);
 }
 static method g() → dynamic /* originally sync* */ {
-  core::int* :await_jump_var = 0;
-  dynamic :await_ctx_var;
-  function :sync_op(core::_SyncIterator<dynamic>* :iterator) → core::bool* yielding {
-    invalid-expression "pkg/front_end/testcases/regress/issue_29983.dart:11:14: Error: 'sync*' and 'async*' can't return a value.
+  function :sync_op_gen() → (core::_SyncIterator<dynamic>*) →* core::bool* {
+    core::int* :await_jump_var = 0;
+    dynamic :await_ctx_var;
+    return (core::_SyncIterator<dynamic>* :iterator) → core::bool* yielding {
+      invalid-expression "pkg/front_end/testcases/regress/issue_29983.dart:11:14: Error: 'sync*' and 'async*' can't return a value.
 g() sync* => dummy;
              ^";
-    return false;
+      return false;
+    };
   }
-  return new core::_SyncIterable::•<dynamic>(:sync_op);
+  return new core::_SyncIterable::•<dynamic>(:sync_op_gen);
 }
 static method h() → dynamic /* originally sync* */ {
-  core::int* :await_jump_var = 0;
-  dynamic :await_ctx_var;
-  function :sync_op(core::_SyncIterator<dynamic>* :iterator) → core::bool* yielding {
-    {
-      (() → core::String* => "return").call();
-    }
-    return false;
+  function :sync_op_gen() → (core::_SyncIterator<dynamic>*) →* core::bool* {
+    core::int* :await_jump_var = 0;
+    dynamic :await_ctx_var;
+    return (core::_SyncIterator<dynamic>* :iterator) → core::bool* yielding {
+      {
+        (() → core::String* => "return").call();
+      }
+      return false;
+    };
   }
-  return new core::_SyncIterable::•<dynamic>(:sync_op);
+  return new core::_SyncIterable::•<dynamic>(:sync_op_gen);
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/regress/issue_30834.dart.outline.expect b/pkg/front_end/testcases/regress/issue_30834.dart.outline.expect
index 1566383..1c02875 100644
--- a/pkg/front_end/testcases/regress/issue_30834.dart.outline.expect
+++ b/pkg/front_end/testcases/regress/issue_30834.dart.outline.expect
@@ -15,6 +15,16 @@
     ;
   set A(dynamic v) → void
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/regress/issue_30834.dart.strong.expect b/pkg/front_end/testcases/regress/issue_30834.dart.strong.expect
index 6efef30..b3652a8 100644
--- a/pkg/front_end/testcases/regress/issue_30834.dart.strong.expect
+++ b/pkg/front_end/testcases/regress/issue_30834.dart.strong.expect
@@ -15,6 +15,16 @@
     : super core::Object::•()
     ;
   set A(dynamic v) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   self::A* a = new self::A::•();
diff --git a/pkg/front_end/testcases/regress/issue_30834.dart.strong.transformed.expect b/pkg/front_end/testcases/regress/issue_30834.dart.strong.transformed.expect
index 6efef30..b3652a8 100644
--- a/pkg/front_end/testcases/regress/issue_30834.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/regress/issue_30834.dart.strong.transformed.expect
@@ -15,6 +15,16 @@
     : super core::Object::•()
     ;
   set A(dynamic v) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   self::A* a = new self::A::•();
diff --git a/pkg/front_end/testcases/regress/issue_30836.dart.outline.expect b/pkg/front_end/testcases/regress/issue_30836.dart.outline.expect
index 0af78b3..583a5bf 100644
--- a/pkg/front_end/testcases/regress/issue_30836.dart.outline.expect
+++ b/pkg/front_end/testcases/regress/issue_30836.dart.outline.expect
@@ -6,4 +6,14 @@
   final field core::int* x;
   constructor •() → self::A*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
diff --git a/pkg/front_end/testcases/regress/issue_30836.dart.strong.expect b/pkg/front_end/testcases/regress/issue_30836.dart.strong.expect
index c06a2df..450474d 100644
--- a/pkg/front_end/testcases/regress/issue_30836.dart.strong.expect
+++ b/pkg/front_end/testcases/regress/issue_30836.dart.strong.expect
@@ -14,4 +14,14 @@
   final field core::int* x = null;
   constructor •() → self::A*
     : super core::Object::•() {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
diff --git a/pkg/front_end/testcases/regress/issue_30836.dart.strong.transformed.expect b/pkg/front_end/testcases/regress/issue_30836.dart.strong.transformed.expect
index c06a2df..450474d 100644
--- a/pkg/front_end/testcases/regress/issue_30836.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/regress/issue_30836.dart.strong.transformed.expect
@@ -14,4 +14,14 @@
   final field core::int* x = null;
   constructor •() → self::A*
     : super core::Object::•() {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
diff --git a/pkg/front_end/testcases/regress/issue_30838.dart.outline.expect b/pkg/front_end/testcases/regress/issue_30838.dart.outline.expect
index 6e2c9f6..8fc7964 100644
--- a/pkg/front_end/testcases/regress/issue_30838.dart.outline.expect
+++ b/pkg/front_end/testcases/regress/issue_30838.dart.outline.expect
@@ -9,6 +9,16 @@
     ;
   method test() → void
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method foo<T extends core::Object* = dynamic>(self::foo::T* x) → core::int*
   ;
diff --git a/pkg/front_end/testcases/regress/issue_30838.dart.strong.expect b/pkg/front_end/testcases/regress/issue_30838.dart.strong.expect
index 0d59573..165be0b 100644
--- a/pkg/front_end/testcases/regress/issue_30838.dart.strong.expect
+++ b/pkg/front_end/testcases/regress/issue_30838.dart.strong.expect
@@ -11,6 +11,16 @@
   method test() → void {
     let final core::String* #t1 = "hello" in this.{self::A::f}.call<core::String*>(#t1);
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method foo<T extends core::Object* = dynamic>(self::foo::T* x) → core::int*
   return 3;
diff --git a/pkg/front_end/testcases/regress/issue_30838.dart.strong.transformed.expect b/pkg/front_end/testcases/regress/issue_30838.dart.strong.transformed.expect
index 0d59573..165be0b 100644
--- a/pkg/front_end/testcases/regress/issue_30838.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/regress/issue_30838.dart.strong.transformed.expect
@@ -11,6 +11,16 @@
   method test() → void {
     let final core::String* #t1 = "hello" in this.{self::A::f}.call<core::String*>(#t1);
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method foo<T extends core::Object* = dynamic>(self::foo::T* x) → core::int*
   return 3;
diff --git a/pkg/front_end/testcases/regress/issue_30981.dart.outline.expect b/pkg/front_end/testcases/regress/issue_30981.dart.outline.expect
index adaf7d7..0c1a5d5 100644
--- a/pkg/front_end/testcases/regress/issue_30981.dart.outline.expect
+++ b/pkg/front_end/testcases/regress/issue_30981.dart.outline.expect
@@ -15,6 +15,16 @@
     ;
   get A() → dynamic
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/regress/issue_30981.dart.strong.expect b/pkg/front_end/testcases/regress/issue_30981.dart.strong.expect
index 610489b..df5be99 100644
--- a/pkg/front_end/testcases/regress/issue_30981.dart.strong.expect
+++ b/pkg/front_end/testcases/regress/issue_30981.dart.strong.expect
@@ -17,6 +17,16 @@
   get A() → dynamic {
     core::print("Actually, I'm a getter, not a constructor.");
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   new self::A::•();
diff --git a/pkg/front_end/testcases/regress/issue_30981.dart.strong.transformed.expect b/pkg/front_end/testcases/regress/issue_30981.dart.strong.transformed.expect
index 610489b..df5be99 100644
--- a/pkg/front_end/testcases/regress/issue_30981.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/regress/issue_30981.dart.strong.transformed.expect
@@ -17,6 +17,16 @@
   get A() → dynamic {
     core::print("Actually, I'm a getter, not a constructor.");
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   new self::A::•();
diff --git a/pkg/front_end/testcases/regress/issue_31155.dart.outline.expect b/pkg/front_end/testcases/regress/issue_31155.dart.outline.expect
index e7e1f37..1871229 100644
--- a/pkg/front_end/testcases/regress/issue_31155.dart.outline.expect
+++ b/pkg/front_end/testcases/regress/issue_31155.dart.outline.expect
@@ -30,10 +30,30 @@
 class A extends core::Object {
   synthetic constructor •() → self::A*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends core::Object {
   synthetic constructor •() → self::B*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C extends core::Object {
   field dynamic f;
@@ -42,6 +62,16 @@
     ;
   operator >() → dynamic
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → void
   ;
diff --git a/pkg/front_end/testcases/regress/issue_31155.dart.strong.expect b/pkg/front_end/testcases/regress/issue_31155.dart.strong.expect
index 96da1b8..70baff2 100644
--- a/pkg/front_end/testcases/regress/issue_31155.dart.strong.expect
+++ b/pkg/front_end/testcases/regress/issue_31155.dart.strong.expect
@@ -37,11 +37,31 @@
   synthetic constructor •() → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends core::Object {
   synthetic constructor •() → self::B*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C extends core::Object {
   field dynamic f = invalid-expression "pkg/front_end/testcases/regress/issue_31155.dart:11:14: Error: The operator '<' isn't defined for the class 'Type'.
@@ -54,5 +74,15 @@
     : super core::Object::•()
     ;
   operator >() → dynamic {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → void {}
diff --git a/pkg/front_end/testcases/regress/issue_31155.dart.strong.transformed.expect b/pkg/front_end/testcases/regress/issue_31155.dart.strong.transformed.expect
index 96da1b8..70baff2 100644
--- a/pkg/front_end/testcases/regress/issue_31155.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/regress/issue_31155.dart.strong.transformed.expect
@@ -37,11 +37,31 @@
   synthetic constructor •() → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends core::Object {
   synthetic constructor •() → self::B*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C extends core::Object {
   field dynamic f = invalid-expression "pkg/front_end/testcases/regress/issue_31155.dart:11:14: Error: The operator '<' isn't defined for the class 'Type'.
@@ -54,5 +74,15 @@
     : super core::Object::•()
     ;
   operator >() → dynamic {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → void {}
diff --git a/pkg/front_end/testcases/regress/issue_31183.dart.outline.expect b/pkg/front_end/testcases/regress/issue_31183.dart.outline.expect
index 83c661f0d..5961b057 100644
--- a/pkg/front_end/testcases/regress/issue_31183.dart.outline.expect
+++ b/pkg/front_end/testcases/regress/issue_31183.dart.outline.expect
@@ -19,6 +19,16 @@
     ;
   operator unary-() → dynamic
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/regress/issue_31183.dart.strong.expect b/pkg/front_end/testcases/regress/issue_31183.dart.strong.expect
index 4a48715..f63571d 100644
--- a/pkg/front_end/testcases/regress/issue_31183.dart.strong.expect
+++ b/pkg/front_end/testcases/regress/issue_31183.dart.strong.expect
@@ -20,6 +20,16 @@
     ;
   operator unary-() → dynamic
     return 0;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   new self::C::•();
diff --git a/pkg/front_end/testcases/regress/issue_31183.dart.strong.transformed.expect b/pkg/front_end/testcases/regress/issue_31183.dart.strong.transformed.expect
index 4a48715..f63571d 100644
--- a/pkg/front_end/testcases/regress/issue_31183.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/regress/issue_31183.dart.strong.transformed.expect
@@ -20,6 +20,16 @@
     ;
   operator unary-() → dynamic
     return 0;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   new self::C::•();
diff --git a/pkg/front_end/testcases/regress/issue_31190.dart.outline.expect b/pkg/front_end/testcases/regress/issue_31190.dart.outline.expect
index d75581b..a5370c5 100644
--- a/pkg/front_end/testcases/regress/issue_31190.dart.outline.expect
+++ b/pkg/front_end/testcases/regress/issue_31190.dart.outline.expect
@@ -18,6 +18,16 @@
   field invalid-type v;
   synthetic constructor •() → self::Typed<self::Typed::T*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/regress/issue_31190.dart.strong.expect b/pkg/front_end/testcases/regress/issue_31190.dart.strong.expect
index c840d50..af1fd41 100644
--- a/pkg/front_end/testcases/regress/issue_31190.dart.strong.expect
+++ b/pkg/front_end/testcases/regress/issue_31190.dart.strong.expect
@@ -27,5 +27,15 @@
   synthetic constructor •() → self::Typed<self::Typed::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/regress/issue_31190.dart.strong.transformed.expect b/pkg/front_end/testcases/regress/issue_31190.dart.strong.transformed.expect
index c840d50..af1fd41 100644
--- a/pkg/front_end/testcases/regress/issue_31190.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/regress/issue_31190.dart.strong.transformed.expect
@@ -27,5 +27,15 @@
   synthetic constructor •() → self::Typed<self::Typed::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/regress/issue_31192.dart.outline.expect b/pkg/front_end/testcases/regress/issue_31192.dart.outline.expect
index ada6bd1..787a352 100644
--- a/pkg/front_end/testcases/regress/issue_31192.dart.outline.expect
+++ b/pkg/front_end/testcases/regress/issue_31192.dart.outline.expect
@@ -14,6 +14,16 @@
   field core::int* x;
   constructor •() → self::Increment*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/regress/issue_31192.dart.strong.expect b/pkg/front_end/testcases/regress/issue_31192.dart.strong.expect
index b90922e..e930f66 100644
--- a/pkg/front_end/testcases/regress/issue_31192.dart.strong.expect
+++ b/pkg/front_end/testcases/regress/issue_31192.dart.strong.expect
@@ -20,5 +20,15 @@
     : final dynamic #t1 = invalid-expression "pkg/front_end/testcases/regress/issue_31192.dart:7:17: Error: This couldn't be parsed.
   Increment() : x++ {}
                 ^" {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/regress/issue_31192.dart.strong.transformed.expect b/pkg/front_end/testcases/regress/issue_31192.dart.strong.transformed.expect
index b90922e..e930f66 100644
--- a/pkg/front_end/testcases/regress/issue_31192.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/regress/issue_31192.dart.strong.transformed.expect
@@ -20,5 +20,15 @@
     : final dynamic #t1 = invalid-expression "pkg/front_end/testcases/regress/issue_31192.dart:7:17: Error: This couldn't be parsed.
   Increment() : x++ {}
                 ^" {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/regress/issue_31198.dart.outline.expect b/pkg/front_end/testcases/regress/issue_31198.dart.outline.expect
index 4e20cb0..504fa6b 100644
--- a/pkg/front_end/testcases/regress/issue_31198.dart.outline.expect
+++ b/pkg/front_end/testcases/regress/issue_31198.dart.outline.expect
@@ -5,6 +5,16 @@
 abstract class A extends core::Object {
   synthetic constructor •() → self::A*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A {
   constructor •() → self::B*
diff --git a/pkg/front_end/testcases/regress/issue_31198.dart.strong.expect b/pkg/front_end/testcases/regress/issue_31198.dart.strong.expect
index c23342a..d1f6bae 100644
--- a/pkg/front_end/testcases/regress/issue_31198.dart.strong.expect
+++ b/pkg/front_end/testcases/regress/issue_31198.dart.strong.expect
@@ -18,6 +18,16 @@
   synthetic constructor •() → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A {
   constructor •() → self::B*
diff --git a/pkg/front_end/testcases/regress/issue_31198.dart.strong.transformed.expect b/pkg/front_end/testcases/regress/issue_31198.dart.strong.transformed.expect
index c23342a..d1f6bae 100644
--- a/pkg/front_end/testcases/regress/issue_31198.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/regress/issue_31198.dart.strong.transformed.expect
@@ -18,6 +18,16 @@
   synthetic constructor •() → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A {
   constructor •() → self::B*
diff --git a/pkg/front_end/testcases/regress/issue_31299.dart.outline.expect b/pkg/front_end/testcases/regress/issue_31299.dart.outline.expect
index 85ce004..06f425f 100644
--- a/pkg/front_end/testcases/regress/issue_31299.dart.outline.expect
+++ b/pkg/front_end/testcases/regress/issue_31299.dart.outline.expect
@@ -10,6 +10,16 @@
     ;
   method foo(core::int* a, core::int* b) → core::int*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method test() → dynamic
   ;
diff --git a/pkg/front_end/testcases/regress/issue_31299.dart.strong.expect b/pkg/front_end/testcases/regress/issue_31299.dart.strong.expect
index 50ff2ba..1316563 100644
--- a/pkg/front_end/testcases/regress/issue_31299.dart.strong.expect
+++ b/pkg/front_end/testcases/regress/issue_31299.dart.strong.expect
@@ -27,6 +27,16 @@
     ;
   method foo(core::int* a, core::int* b) → core::int*
     return a.{core::num::+}(b.{core::num::*}(this.{self::A::m}));
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method test() → dynamic {
   let final<BottomType> #t1 = invalid-expression "pkg/front_end/testcases/regress/issue_31299.dart:15:14: Error: Too few positional arguments: 2 required, 0 given.
diff --git a/pkg/front_end/testcases/regress/issue_31766.dart.outline.expect b/pkg/front_end/testcases/regress/issue_31766.dart.outline.expect
index 9868e6f..f4f1260 100644
--- a/pkg/front_end/testcases/regress/issue_31766.dart.outline.expect
+++ b/pkg/front_end/testcases/regress/issue_31766.dart.outline.expect
@@ -7,6 +7,16 @@
     ;
   method foo() → dynamic
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/regress/issue_31766.dart.strong.expect b/pkg/front_end/testcases/regress/issue_31766.dart.strong.expect
index fb78ee0..3d12bc5 100644
--- a/pkg/front_end/testcases/regress/issue_31766.dart.strong.expect
+++ b/pkg/front_end/testcases/regress/issue_31766.dart.strong.expect
@@ -8,6 +8,16 @@
     ;
   method foo() → dynamic
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   function bar<T extends self::A* = self::A*>(T* t) → void {
diff --git a/pkg/front_end/testcases/regress/issue_31766.dart.strong.transformed.expect b/pkg/front_end/testcases/regress/issue_31766.dart.strong.transformed.expect
index fb78ee0..3d12bc5 100644
--- a/pkg/front_end/testcases/regress/issue_31766.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/regress/issue_31766.dart.strong.transformed.expect
@@ -8,6 +8,16 @@
     ;
   method foo() → dynamic
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   function bar<T extends self::A* = self::A*>(T* t) → void {
diff --git a/pkg/front_end/testcases/regress/issue_31996.dart.outline.expect b/pkg/front_end/testcases/regress/issue_31996.dart.outline.expect
index 2e18f24..7dfa208 100644
--- a/pkg/front_end/testcases/regress/issue_31996.dart.outline.expect
+++ b/pkg/front_end/testcases/regress/issue_31996.dart.outline.expect
@@ -5,14 +5,44 @@
 abstract class B<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::B<self::B::T*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class C<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::C<self::C::T*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Base extends core::Object implements self::B<dynamic> {
   synthetic constructor •() → self::Base*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Child1 extends self::Base implements self::C<core::int*> {
   synthetic constructor •() → self::Child1*
diff --git a/pkg/front_end/testcases/regress/issue_31996.dart.strong.expect b/pkg/front_end/testcases/regress/issue_31996.dart.strong.expect
index bbe2de8..4963438 100644
--- a/pkg/front_end/testcases/regress/issue_31996.dart.strong.expect
+++ b/pkg/front_end/testcases/regress/issue_31996.dart.strong.expect
@@ -6,16 +6,46 @@
   synthetic constructor •() → self::B<self::B::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class C<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::C<self::C::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Base extends core::Object implements self::B<dynamic> {
   synthetic constructor •() → self::Base*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Child1 extends self::Base implements self::C<core::int*> {
   synthetic constructor •() → self::Child1*
diff --git a/pkg/front_end/testcases/regress/issue_31996.dart.strong.transformed.expect b/pkg/front_end/testcases/regress/issue_31996.dart.strong.transformed.expect
index bbe2de8..4963438 100644
--- a/pkg/front_end/testcases/regress/issue_31996.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/regress/issue_31996.dart.strong.transformed.expect
@@ -6,16 +6,46 @@
   synthetic constructor •() → self::B<self::B::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class C<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::C<self::C::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Base extends core::Object implements self::B<dynamic> {
   synthetic constructor •() → self::Base*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Child1 extends self::Base implements self::C<core::int*> {
   synthetic constructor •() → self::Child1*
diff --git a/pkg/front_end/testcases/regress/issue_32182.dart.outline.expect b/pkg/front_end/testcases/regress/issue_32182.dart.outline.expect
index dbbd563..b773794 100644
--- a/pkg/front_end/testcases/regress/issue_32182.dart.outline.expect
+++ b/pkg/front_end/testcases/regress/issue_32182.dart.outline.expect
@@ -7,12 +7,32 @@
 class A<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::A<self::A::T*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class M extends core::Object {
   synthetic constructor •() → self::M*
     ;
   method m() → dynamic
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class _C&A&M = self::A<self::A<dynamic>*> with self::M /*isAnonymousMixin*/  {
   synthetic constructor •() → self::_C&A&M*
diff --git a/pkg/front_end/testcases/regress/issue_32182.dart.strong.expect b/pkg/front_end/testcases/regress/issue_32182.dart.strong.expect
index 12c9067..d1baf06 100644
--- a/pkg/front_end/testcases/regress/issue_32182.dart.strong.expect
+++ b/pkg/front_end/testcases/regress/issue_32182.dart.strong.expect
@@ -8,6 +8,16 @@
   synthetic constructor •() → self::A<self::A::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class M extends core::Object {
   synthetic constructor •() → self::M*
@@ -15,6 +25,16 @@
     ;
   method m() → dynamic
     return 42;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class _C&A&M = self::A<self::A<dynamic>*> with self::M /*isAnonymousMixin*/  {
   synthetic constructor •() → self::_C&A&M*
diff --git a/pkg/front_end/testcases/regress/issue_32182.dart.strong.transformed.expect b/pkg/front_end/testcases/regress/issue_32182.dart.strong.transformed.expect
index 90d83a5..9c3befd 100644
--- a/pkg/front_end/testcases/regress/issue_32182.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/regress/issue_32182.dart.strong.transformed.expect
@@ -8,6 +8,16 @@
   synthetic constructor •() → self::A<self::A::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class M extends core::Object {
   synthetic constructor •() → self::M*
@@ -15,6 +25,16 @@
     ;
   method m() → dynamic
     return 42;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class _C&A&M extends self::A<self::A<dynamic>*> implements self::M /*isAnonymousMixin,isEliminatedMixin*/  {
   synthetic constructor •() → self::_C&A&M*
@@ -22,6 +42,16 @@
     ;
   method m() → dynamic
     return 42;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C extends self::_C&A&M {
   synthetic constructor •() → self::C*
diff --git a/pkg/front_end/testcases/regress/issue_32196.dart.outline.expect b/pkg/front_end/testcases/regress/issue_32196.dart.outline.expect
index 5a455c3..e09e1e4 100644
--- a/pkg/front_end/testcases/regress/issue_32196.dart.outline.expect
+++ b/pkg/front_end/testcases/regress/issue_32196.dart.outline.expect
@@ -8,6 +8,16 @@
     ;
   constructor set(core::String* name) → self::A*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/regress/issue_32196.dart.strong.expect b/pkg/front_end/testcases/regress/issue_32196.dart.strong.expect
index a9d3c84..d86abcf 100644
--- a/pkg/front_end/testcases/regress/issue_32196.dart.strong.expect
+++ b/pkg/front_end/testcases/regress/issue_32196.dart.strong.expect
@@ -10,6 +10,16 @@
   constructor set(core::String* name) → self::A*
     : self::A::name = name, super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   new self::A::get("get");
diff --git a/pkg/front_end/testcases/regress/issue_32196.dart.strong.transformed.expect b/pkg/front_end/testcases/regress/issue_32196.dart.strong.transformed.expect
index a9d3c84..d86abcf 100644
--- a/pkg/front_end/testcases/regress/issue_32196.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/regress/issue_32196.dart.strong.transformed.expect
@@ -10,6 +10,16 @@
   constructor set(core::String* name) → self::A*
     : self::A::name = name, super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   new self::A::get("get");
diff --git a/pkg/front_end/testcases/regress/issue_32200.dart.outline.expect b/pkg/front_end/testcases/regress/issue_32200.dart.outline.expect
index 75340ee..425ce28 100644
--- a/pkg/front_end/testcases/regress/issue_32200.dart.outline.expect
+++ b/pkg/front_end/testcases/regress/issue_32200.dart.outline.expect
@@ -15,6 +15,16 @@
   field invalid-type self;
   synthetic constructor •() → self::Foo*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/regress/issue_32200.dart.strong.expect b/pkg/front_end/testcases/regress/issue_32200.dart.strong.expect
index 4750f38..fa69ad6 100644
--- a/pkg/front_end/testcases/regress/issue_32200.dart.strong.expect
+++ b/pkg/front_end/testcases/regress/issue_32200.dart.strong.expect
@@ -16,6 +16,16 @@
   synthetic constructor •() → self::Foo*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   self::Foo* instance = new self::Foo::•();
diff --git a/pkg/front_end/testcases/regress/issue_32200.dart.strong.transformed.expect b/pkg/front_end/testcases/regress/issue_32200.dart.strong.transformed.expect
index 4750f38..fa69ad6 100644
--- a/pkg/front_end/testcases/regress/issue_32200.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/regress/issue_32200.dart.strong.transformed.expect
@@ -16,6 +16,16 @@
   synthetic constructor •() → self::Foo*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   self::Foo* instance = new self::Foo::•();
diff --git a/pkg/front_end/testcases/regress/issue_32660.dart.outline.expect b/pkg/front_end/testcases/regress/issue_32660.dart.outline.expect
index f28e322..31e960e 100644
--- a/pkg/front_end/testcases/regress/issue_32660.dart.outline.expect
+++ b/pkg/front_end/testcases/regress/issue_32660.dart.outline.expect
@@ -30,12 +30,32 @@
     ;
   method foo(core::int* x) → dynamic
     ;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends core::Object {
   synthetic constructor •() → self::B*
     ;
   method foo(core::int* x, {core::int* y}) → dynamic
     ;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C extends self::A implements self::B {
   synthetic constructor •() → self::C*
@@ -49,6 +69,16 @@
     ;
   method foo(core::int* x) → dynamic
     ;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class E extends self::D {
   synthetic constructor •() → self::E*
diff --git a/pkg/front_end/testcases/regress/issue_32660.dart.strong.expect b/pkg/front_end/testcases/regress/issue_32660.dart.strong.expect
index b9e0bd5..d6f848c 100644
--- a/pkg/front_end/testcases/regress/issue_32660.dart.strong.expect
+++ b/pkg/front_end/testcases/regress/issue_32660.dart.strong.expect
@@ -31,6 +31,16 @@
     ;
   method foo(core::int* x) → dynamic
     return x;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends core::Object {
   synthetic constructor •() → self::B*
@@ -38,6 +48,16 @@
     ;
   method foo(core::int* x, {core::int* y = #C1}) → dynamic
     return y;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C extends self::A implements self::B {
   synthetic constructor •() → self::C*
@@ -55,6 +75,16 @@
     ;
   method foo(core::int* x) → dynamic
     return x;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class E extends self::D {
   synthetic constructor •() → self::E*
diff --git a/pkg/front_end/testcases/regress/issue_32660.dart.strong.transformed.expect b/pkg/front_end/testcases/regress/issue_32660.dart.strong.transformed.expect
index b9e0bd5..d6f848c 100644
--- a/pkg/front_end/testcases/regress/issue_32660.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/regress/issue_32660.dart.strong.transformed.expect
@@ -31,6 +31,16 @@
     ;
   method foo(core::int* x) → dynamic
     return x;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends core::Object {
   synthetic constructor •() → self::B*
@@ -38,6 +48,16 @@
     ;
   method foo(core::int* x, {core::int* y = #C1}) → dynamic
     return y;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C extends self::A implements self::B {
   synthetic constructor •() → self::C*
@@ -55,6 +75,16 @@
     ;
   method foo(core::int* x) → dynamic
     return x;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class E extends self::D {
   synthetic constructor •() → self::E*
diff --git a/pkg/front_end/testcases/regress/issue_32972.dart.outline.expect b/pkg/front_end/testcases/regress/issue_32972.dart.outline.expect
index 34d6138..6411d0b 100644
--- a/pkg/front_end/testcases/regress/issue_32972.dart.outline.expect
+++ b/pkg/front_end/testcases/regress/issue_32972.dart.outline.expect
@@ -9,10 +9,30 @@
     ;
   method bar<X extends core::Object* = dynamic>(self::Foo::bar::X* i) → dynamic
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Bar<X extends core::Object* = dynamic, Y extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::Bar<self::Bar::X*, self::Bar::Y*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method foo<X extends core::Object* = dynamic>(self::foo::X* i) → void
   ;
diff --git a/pkg/front_end/testcases/regress/issue_32972.dart.strong.expect b/pkg/front_end/testcases/regress/issue_32972.dart.strong.expect
index 5afee15..7094df9 100644
--- a/pkg/front_end/testcases/regress/issue_32972.dart.strong.expect
+++ b/pkg/front_end/testcases/regress/issue_32972.dart.strong.expect
@@ -40,11 +40,31 @@
   method bar<X extends core::Object* = dynamic>(self::Foo::bar::X* i) → dynamic {
     core::print(i);
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Bar<X extends core::Object* = dynamic, Y extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::Bar<self::Bar::X*, self::Bar::Y*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method foo<X extends core::Object* = dynamic>(self::foo::X* i) → void {
   core::print(i);
diff --git a/pkg/front_end/testcases/regress/issue_33452.dart.outline.expect b/pkg/front_end/testcases/regress/issue_33452.dart.outline.expect
index 1c7cc91..152add0 100644
--- a/pkg/front_end/testcases/regress/issue_33452.dart.outline.expect
+++ b/pkg/front_end/testcases/regress/issue_33452.dart.outline.expect
@@ -5,6 +5,16 @@
 class ExistingClass extends core::Object {
   constructor existingConstructor() → self::ExistingClass*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/regress/issue_33452.dart.strong.expect b/pkg/front_end/testcases/regress/issue_33452.dart.strong.expect
index 8df228e..a11ab0b 100644
--- a/pkg/front_end/testcases/regress/issue_33452.dart.strong.expect
+++ b/pkg/front_end/testcases/regress/issue_33452.dart.strong.expect
@@ -33,6 +33,16 @@
   constructor existingConstructor() → self::ExistingClass*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   dynamic x = invalid-expression "pkg/front_end/testcases/regress/issue_33452.dart:10:29: Error: Method not found: 'ExistingClass.nonExistingConstructor'.
diff --git a/pkg/front_end/testcases/regress/issue_33452.dart.strong.transformed.expect b/pkg/front_end/testcases/regress/issue_33452.dart.strong.transformed.expect
index 8df228e..a11ab0b 100644
--- a/pkg/front_end/testcases/regress/issue_33452.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/regress/issue_33452.dart.strong.transformed.expect
@@ -33,6 +33,16 @@
   constructor existingConstructor() → self::ExistingClass*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   dynamic x = invalid-expression "pkg/front_end/testcases/regress/issue_33452.dart:10:29: Error: Method not found: 'ExistingClass.nonExistingConstructor'.
diff --git a/pkg/front_end/testcases/regress/issue_34225.dart.outline.expect b/pkg/front_end/testcases/regress/issue_34225.dart.outline.expect
index 2daa8a2..3194438 100644
--- a/pkg/front_end/testcases/regress/issue_34225.dart.outline.expect
+++ b/pkg/front_end/testcases/regress/issue_34225.dart.outline.expect
@@ -20,12 +20,32 @@
     ;
   static set C(dynamic v) → void
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D extends core::Object {
   synthetic constructor •() → self::D*
     ;
   set D(dynamic v) → void
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/regress/issue_34225.dart.strong.expect b/pkg/front_end/testcases/regress/issue_34225.dart.strong.expect
index edd1d2b..5116e9b 100644
--- a/pkg/front_end/testcases/regress/issue_34225.dart.strong.expect
+++ b/pkg/front_end/testcases/regress/issue_34225.dart.strong.expect
@@ -26,12 +26,32 @@
     : super core::Object::•()
     ;
   static set C(dynamic v) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D extends core::Object {
   synthetic constructor •() → self::D*
     : super core::Object::•()
     ;
   set D(dynamic v) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   self::C* c = new self::C::•();
diff --git a/pkg/front_end/testcases/regress/issue_34225.dart.strong.transformed.expect b/pkg/front_end/testcases/regress/issue_34225.dart.strong.transformed.expect
index edd1d2b..5116e9b 100644
--- a/pkg/front_end/testcases/regress/issue_34225.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/regress/issue_34225.dart.strong.transformed.expect
@@ -26,12 +26,32 @@
     : super core::Object::•()
     ;
   static set C(dynamic v) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D extends core::Object {
   synthetic constructor •() → self::D*
     : super core::Object::•()
     ;
   set D(dynamic v) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   self::C* c = new self::C::•();
diff --git a/pkg/front_end/testcases/regress/issue_34291.dart.outline.expect b/pkg/front_end/testcases/regress/issue_34291.dart.outline.expect
index 98135e9..30f78c8 100644
--- a/pkg/front_end/testcases/regress/issue_34291.dart.outline.expect
+++ b/pkg/front_end/testcases/regress/issue_34291.dart.outline.expect
@@ -14,6 +14,16 @@
 class B extends core::Object {
   synthetic constructor •() → self::B*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method foo() → invalid-type
   ;
@@ -27,4 +37,14 @@
 class A extends core::Object {
   synthetic constructor •() → self2::A*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
diff --git a/pkg/front_end/testcases/regress/issue_34291.dart.strong.expect b/pkg/front_end/testcases/regress/issue_34291.dart.strong.expect
index e44ce2d..e1c6676 100644
--- a/pkg/front_end/testcases/regress/issue_34291.dart.strong.expect
+++ b/pkg/front_end/testcases/regress/issue_34291.dart.strong.expect
@@ -15,6 +15,16 @@
   synthetic constructor •() → self::B*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method foo() → invalid-type {}
 static method main() → dynamic {}
@@ -27,4 +37,14 @@
   synthetic constructor •() → self2::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
diff --git a/pkg/front_end/testcases/regress/issue_34291.dart.strong.transformed.expect b/pkg/front_end/testcases/regress/issue_34291.dart.strong.transformed.expect
index e44ce2d..e1c6676 100644
--- a/pkg/front_end/testcases/regress/issue_34291.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/regress/issue_34291.dart.strong.transformed.expect
@@ -15,6 +15,16 @@
   synthetic constructor •() → self::B*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method foo() → invalid-type {}
 static method main() → dynamic {}
@@ -27,4 +37,14 @@
   synthetic constructor •() → self2::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
diff --git a/pkg/front_end/testcases/regress/issue_34403.dart.outline.expect b/pkg/front_end/testcases/regress/issue_34403.dart.outline.expect
index ea7359e..8e23d08 100644
--- a/pkg/front_end/testcases/regress/issue_34403.dart.outline.expect
+++ b/pkg/front_end/testcases/regress/issue_34403.dart.outline.expect
@@ -7,11 +7,31 @@
 class C<T extends core::Object* = dynamic> extends core::Object {
   constructor bar() → self::C<self::C::T*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D<T extends core::Object* = dynamic> extends core::Object /*hasConstConstructor*/  {
   const constructor foo() → self::D<self::D::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
@@ -23,9 +43,29 @@
 class E<T extends core::Object* = dynamic> extends core::Object {
   constructor bar() → self2::E<self2::E::T*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class F<T extends core::Object* = dynamic> extends core::Object /*hasConstConstructor*/  {
   const constructor foo() → self2::F<self2::F::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
diff --git a/pkg/front_end/testcases/regress/issue_34403.dart.strong.expect b/pkg/front_end/testcases/regress/issue_34403.dart.strong.expect
index f6fd766..4925fb9 100644
--- a/pkg/front_end/testcases/regress/issue_34403.dart.strong.expect
+++ b/pkg/front_end/testcases/regress/issue_34403.dart.strong.expect
@@ -92,37 +92,57 @@
   constructor bar() → self::C<self::C::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D<T extends core::Object* = dynamic> extends core::Object /*hasConstConstructor*/  {
   const constructor foo() → self::D<self::D::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   self::C<core::int*>* c1 = new self::C::bar<core::int*>();
-  c1.{core::Object::toString}();
+  c1.{self::C::toString}();
   self::C<core::int*>* c2 = new self::C::bar<core::int*>();
-  c2.{core::Object::toString}();
+  c2.{self::C::toString}();
   self::C<core::String*>* c3 = new self::C::bar<core::String*>();
-  c3.{core::Object::toString}();
+  c3.{self::C::toString}();
   self::C<core::String*>* c4 = new self::C::bar<core::String*>();
-  c4.{core::Object::toString}();
-  (#C1).{core::Object::toString}();
-  (#C1).{core::Object::toString}();
-  (#C2).{core::Object::toString}();
-  (#C2).{core::Object::toString}();
+  c4.{self::C::toString}();
+  (#C1).{self::D::toString}();
+  (#C1).{self::D::toString}();
+  (#C2).{self::D::toString}();
+  (#C2).{self::D::toString}();
   iss::E<core::int*>* e1 = new iss::E::bar<core::int*>();
-  e1.{core::Object::toString}();
+  e1.{iss::E::toString}();
   iss::E<dynamic>* e2 = new iss::E::bar<dynamic>();
-  e2.{core::Object::toString}();
+  e2.{iss::E::toString}();
   iss::E<core::String*>* e3 = new iss::E::bar<core::String*>();
-  e3.{core::Object::toString}();
+  e3.{iss::E::toString}();
   iss::E<core::String*>* e4 = new iss::E::bar<core::String*>();
-  e4.{core::Object::toString}();
-  (#C3).{core::Object::toString}();
-  (#C4).{core::Object::toString}();
-  (#C5).{core::Object::toString}();
-  (#C5).{core::Object::toString}();
+  e4.{iss::E::toString}();
+  (#C3).{iss::F::toString}();
+  (#C4).{iss::F::toString}();
+  (#C5).{iss::F::toString}();
+  (#C5).{iss::F::toString}();
 }
 
 library;
@@ -133,11 +153,31 @@
   constructor bar() → iss::E<iss::E::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class F<T extends core::Object* = dynamic> extends core::Object /*hasConstConstructor*/  {
   const constructor foo() → iss::F<iss::F::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 
 constants  {
diff --git a/pkg/front_end/testcases/regress/issue_34403.dart.strong.transformed.expect b/pkg/front_end/testcases/regress/issue_34403.dart.strong.transformed.expect
index f6fd766..4925fb9 100644
--- a/pkg/front_end/testcases/regress/issue_34403.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/regress/issue_34403.dart.strong.transformed.expect
@@ -92,37 +92,57 @@
   constructor bar() → self::C<self::C::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D<T extends core::Object* = dynamic> extends core::Object /*hasConstConstructor*/  {
   const constructor foo() → self::D<self::D::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   self::C<core::int*>* c1 = new self::C::bar<core::int*>();
-  c1.{core::Object::toString}();
+  c1.{self::C::toString}();
   self::C<core::int*>* c2 = new self::C::bar<core::int*>();
-  c2.{core::Object::toString}();
+  c2.{self::C::toString}();
   self::C<core::String*>* c3 = new self::C::bar<core::String*>();
-  c3.{core::Object::toString}();
+  c3.{self::C::toString}();
   self::C<core::String*>* c4 = new self::C::bar<core::String*>();
-  c4.{core::Object::toString}();
-  (#C1).{core::Object::toString}();
-  (#C1).{core::Object::toString}();
-  (#C2).{core::Object::toString}();
-  (#C2).{core::Object::toString}();
+  c4.{self::C::toString}();
+  (#C1).{self::D::toString}();
+  (#C1).{self::D::toString}();
+  (#C2).{self::D::toString}();
+  (#C2).{self::D::toString}();
   iss::E<core::int*>* e1 = new iss::E::bar<core::int*>();
-  e1.{core::Object::toString}();
+  e1.{iss::E::toString}();
   iss::E<dynamic>* e2 = new iss::E::bar<dynamic>();
-  e2.{core::Object::toString}();
+  e2.{iss::E::toString}();
   iss::E<core::String*>* e3 = new iss::E::bar<core::String*>();
-  e3.{core::Object::toString}();
+  e3.{iss::E::toString}();
   iss::E<core::String*>* e4 = new iss::E::bar<core::String*>();
-  e4.{core::Object::toString}();
-  (#C3).{core::Object::toString}();
-  (#C4).{core::Object::toString}();
-  (#C5).{core::Object::toString}();
-  (#C5).{core::Object::toString}();
+  e4.{iss::E::toString}();
+  (#C3).{iss::F::toString}();
+  (#C4).{iss::F::toString}();
+  (#C5).{iss::F::toString}();
+  (#C5).{iss::F::toString}();
 }
 
 library;
@@ -133,11 +153,31 @@
   constructor bar() → iss::E<iss::E::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class F<T extends core::Object* = dynamic> extends core::Object /*hasConstConstructor*/  {
   const constructor foo() → iss::F<iss::F::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 
 constants  {
diff --git a/pkg/front_end/testcases/regress/issue_34498.dart.outline.expect b/pkg/front_end/testcases/regress/issue_34498.dart.outline.expect
index 79df073..41e7395 100644
--- a/pkg/front_end/testcases/regress/issue_34498.dart.outline.expect
+++ b/pkg/front_end/testcases/regress/issue_34498.dart.outline.expect
@@ -36,6 +36,16 @@
     ;
   method bar() → invalid-type
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A {
   synthetic constructor •() → self::B*
@@ -46,6 +56,16 @@
     ;
   method foo() → invalid-type
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static final field self::A* a;
 static method main() → dynamic
@@ -58,4 +78,14 @@
 class MyClass extends core::Object {
   synthetic constructor •() → self2::MyClass*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
diff --git a/pkg/front_end/testcases/regress/issue_34498.dart.strong.expect b/pkg/front_end/testcases/regress/issue_34498.dart.strong.expect
index 0393f5f..78d5ddd 100644
--- a/pkg/front_end/testcases/regress/issue_34498.dart.strong.expect
+++ b/pkg/front_end/testcases/regress/issue_34498.dart.strong.expect
@@ -35,6 +35,16 @@
     return null;
   method foo() → invalid-type {}
   method bar() → invalid-type {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A {
   synthetic constructor •() → self::B*
@@ -46,6 +56,16 @@
     : super core::Object::•()
     ;
   method foo() → invalid-type {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static final field self::A* a = null;
 static method main() → dynamic {}
@@ -58,4 +78,14 @@
   synthetic constructor •() → self2::MyClass*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
diff --git a/pkg/front_end/testcases/regress/issue_34498.dart.strong.transformed.expect b/pkg/front_end/testcases/regress/issue_34498.dart.strong.transformed.expect
index 0393f5f..78d5ddd 100644
--- a/pkg/front_end/testcases/regress/issue_34498.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/regress/issue_34498.dart.strong.transformed.expect
@@ -35,6 +35,16 @@
     return null;
   method foo() → invalid-type {}
   method bar() → invalid-type {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A {
   synthetic constructor •() → self::B*
@@ -46,6 +56,16 @@
     : super core::Object::•()
     ;
   method foo() → invalid-type {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static final field self::A* a = null;
 static method main() → dynamic {}
@@ -58,4 +78,14 @@
   synthetic constructor •() → self2::MyClass*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
diff --git a/pkg/front_end/testcases/regress/issue_34563.dart.outline.expect b/pkg/front_end/testcases/regress/issue_34563.dart.outline.expect
index db5ac39..f7572a2 100644
--- a/pkg/front_end/testcases/regress/issue_34563.dart.outline.expect
+++ b/pkg/front_end/testcases/regress/issue_34563.dart.outline.expect
@@ -24,24 +24,84 @@
 abstract class M1 extends core::Object /*isMixinDeclaration*/  {
   get m() → core::int*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class M2 extends core::Object /*isMixinDeclaration*/  {
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class M3 extends core::Object /*isMixinDeclaration*/  {
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C1 extends core::Object {
   synthetic constructor •() → self::C1*
     ;
   get c() → core::int*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C2 extends core::Object {
   synthetic constructor •() → self::C2*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C3 extends core::Object {
   synthetic constructor •() → self::C3*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/regress/issue_34563.dart.strong.expect b/pkg/front_end/testcases/regress/issue_34563.dart.strong.expect
index e254b75..dadf0a5 100644
--- a/pkg/front_end/testcases/regress/issue_34563.dart.strong.expect
+++ b/pkg/front_end/testcases/regress/issue_34563.dart.strong.expect
@@ -48,10 +48,40 @@
 abstract class M1 extends core::Object /*isMixinDeclaration*/  {
   get m() → core::int*
     return 1;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class M2 extends core::Object /*isMixinDeclaration*/  {
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class M3 extends core::Object /*isMixinDeclaration*/  {
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C1 extends core::Object {
   synthetic constructor •() → self::C1*
@@ -59,16 +89,46 @@
     ;
   get c() → core::int*
     return 2;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C2 extends core::Object {
   synthetic constructor •() → self::C2*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C3 extends core::Object {
   synthetic constructor •() → self::C3*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   self::C2* c2 = new self::C2::•();
diff --git a/pkg/front_end/testcases/regress/issue_34563.dart.strong.transformed.expect b/pkg/front_end/testcases/regress/issue_34563.dart.strong.transformed.expect
index e254b75..dadf0a5 100644
--- a/pkg/front_end/testcases/regress/issue_34563.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/regress/issue_34563.dart.strong.transformed.expect
@@ -48,10 +48,40 @@
 abstract class M1 extends core::Object /*isMixinDeclaration*/  {
   get m() → core::int*
     return 1;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class M2 extends core::Object /*isMixinDeclaration*/  {
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class M3 extends core::Object /*isMixinDeclaration*/  {
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C1 extends core::Object {
   synthetic constructor •() → self::C1*
@@ -59,16 +89,46 @@
     ;
   get c() → core::int*
     return 2;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C2 extends core::Object {
   synthetic constructor •() → self::C2*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C3 extends core::Object {
   synthetic constructor •() → self::C3*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   self::C2* c2 = new self::C2::•();
diff --git a/pkg/front_end/testcases/regress/issue_34610.dart.outline.expect b/pkg/front_end/testcases/regress/issue_34610.dart.outline.expect
index f82941f..a025688 100644
--- a/pkg/front_end/testcases/regress/issue_34610.dart.outline.expect
+++ b/pkg/front_end/testcases/regress/issue_34610.dart.outline.expect
@@ -30,18 +30,48 @@
     ;
   get bar() → dynamic
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends core::Object {
   constructor named() → self::B*
     ;
   get bar() → dynamic
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C extends core::Object {
   constructor named() → self::C*
     ;
   get bar() → dynamic
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/regress/issue_34610.dart.strong.expect b/pkg/front_end/testcases/regress/issue_34610.dart.strong.expect
index 833bf07..68cf5a7 100644
--- a/pkg/front_end/testcases/regress/issue_34610.dart.strong.expect
+++ b/pkg/front_end/testcases/regress/issue_34610.dart.strong.expect
@@ -44,6 +44,16 @@
                          ^";
   get bar() → dynamic
     return 1;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends core::Object {
   constructor named() → self::B*
@@ -51,6 +61,16 @@
     ;
   get bar() → dynamic
     return 1;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C extends core::Object {
   constructor named() → self::C*
@@ -61,6 +81,16 @@
                      ^";
   get bar() → dynamic
     return 1;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   try {
diff --git a/pkg/front_end/testcases/regress/issue_34610.dart.strong.transformed.expect b/pkg/front_end/testcases/regress/issue_34610.dart.strong.transformed.expect
index 833bf07..68cf5a7 100644
--- a/pkg/front_end/testcases/regress/issue_34610.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/regress/issue_34610.dart.strong.transformed.expect
@@ -44,6 +44,16 @@
                          ^";
   get bar() → dynamic
     return 1;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends core::Object {
   constructor named() → self::B*
@@ -51,6 +61,16 @@
     ;
   get bar() → dynamic
     return 1;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C extends core::Object {
   constructor named() → self::C*
@@ -61,6 +81,16 @@
                      ^";
   get bar() → dynamic
     return 1;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   try {
diff --git a/pkg/front_end/testcases/regress/issue_34614.dart.outline.expect b/pkg/front_end/testcases/regress/issue_34614.dart.outline.expect
index ec6bce3..ed0cf77 100644
--- a/pkg/front_end/testcases/regress/issue_34614.dart.outline.expect
+++ b/pkg/front_end/testcases/regress/issue_34614.dart.outline.expect
@@ -21,6 +21,16 @@
 class C extends core::Object {
   synthetic constructor •() → self::C*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/regress/issue_34614.dart.strong.expect b/pkg/front_end/testcases/regress/issue_34614.dart.strong.expect
index 37cd370..462bd1c 100644
--- a/pkg/front_end/testcases/regress/issue_34614.dart.strong.expect
+++ b/pkg/front_end/testcases/regress/issue_34614.dart.strong.expect
@@ -22,8 +22,18 @@
   synthetic constructor •() → self::C*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   self::C* c = new self::C::•();
-  c.{core::Object::toString}();
+  c.{self::C::toString}();
 }
diff --git a/pkg/front_end/testcases/regress/issue_34614.dart.strong.transformed.expect b/pkg/front_end/testcases/regress/issue_34614.dart.strong.transformed.expect
index 37cd370..462bd1c 100644
--- a/pkg/front_end/testcases/regress/issue_34614.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/regress/issue_34614.dart.strong.transformed.expect
@@ -22,8 +22,18 @@
   synthetic constructor •() → self::C*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   self::C* c = new self::C::•();
-  c.{core::Object::toString}();
+  c.{self::C::toString}();
 }
diff --git a/pkg/front_end/testcases/regress/issue_34850.dart.strong.transformed.expect b/pkg/front_end/testcases/regress/issue_34850.dart.strong.transformed.expect
index 730777c..26e9724 100644
--- a/pkg/front_end/testcases/regress/issue_34850.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/regress/issue_34850.dart.strong.transformed.expect
@@ -77,8 +77,8 @@
       asy::_completeOnAsyncReturn(:async_completer, :return_value);
       return;
     }
-    on dynamic catch(dynamic :exception, core::StackTrace* :stack_trace) {
-      :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+    on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
+      :async_completer.{asy::Completer::completeError}(exception, stack_trace);
     }
   :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
@@ -104,8 +104,8 @@
       asy::_completeOnAsyncReturn(:async_completer, :return_value);
       return;
     }
-    on dynamic catch(dynamic :exception, core::StackTrace* :stack_trace) {
-      :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+    on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
+      :async_completer.{asy::Completer::completeError}(exception, stack_trace);
     }
   :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
@@ -135,8 +135,8 @@
       asy::_completeOnAsyncReturn(:async_completer, :return_value);
       return;
     }
-    on dynamic catch(dynamic :exception, core::StackTrace* :stack_trace) {
-      :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+    on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
+      :async_completer.{asy::Completer::completeError}(exception, stack_trace);
     }
   :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
diff --git a/pkg/front_end/testcases/regress/issue_35151.dart.outline.expect b/pkg/front_end/testcases/regress/issue_35151.dart.outline.expect
index b1d19a9..711b88c 100644
--- a/pkg/front_end/testcases/regress/issue_35151.dart.outline.expect
+++ b/pkg/front_end/testcases/regress/issue_35151.dart.outline.expect
@@ -14,6 +14,16 @@
   field core::int* a;
   synthetic constructor •() → self::A*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A {
   constructor •() → self::B*
@@ -22,6 +32,16 @@
 class C extends core::Object {
   constructor •() → self::C*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/regress/issue_35151.dart.strong.expect b/pkg/front_end/testcases/regress/issue_35151.dart.strong.expect
index 6ae43db..e5af969 100644
--- a/pkg/front_end/testcases/regress/issue_35151.dart.strong.expect
+++ b/pkg/front_end/testcases/regress/issue_35151.dart.strong.expect
@@ -24,6 +24,16 @@
   synthetic constructor •() → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A {
   constructor •() → self::B*
@@ -39,6 +49,16 @@
   C() : super = 42;
         ^^^^^"
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   try {
diff --git a/pkg/front_end/testcases/regress/issue_35151.dart.strong.transformed.expect b/pkg/front_end/testcases/regress/issue_35151.dart.strong.transformed.expect
index 6ae43db..e5af969 100644
--- a/pkg/front_end/testcases/regress/issue_35151.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/regress/issue_35151.dart.strong.transformed.expect
@@ -24,6 +24,16 @@
   synthetic constructor •() → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends self::A {
   constructor •() → self::B*
@@ -39,6 +49,16 @@
   C() : super = 42;
         ^^^^^"
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   try {
diff --git a/pkg/front_end/testcases/regress/issue_35220.dart.outline.expect b/pkg/front_end/testcases/regress/issue_35220.dart.outline.expect
index d6c6ea0..efbc8f3 100644
--- a/pkg/front_end/testcases/regress/issue_35220.dart.outline.expect
+++ b/pkg/front_end/testcases/regress/issue_35220.dart.outline.expect
@@ -7,6 +7,16 @@
     ;
   method bad() → self::A*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/regress/issue_35220.dart.strong.expect b/pkg/front_end/testcases/regress/issue_35220.dart.strong.expect
index 09cecc2..897d503 100644
--- a/pkg/front_end/testcases/regress/issue_35220.dart.strong.expect
+++ b/pkg/front_end/testcases/regress/issue_35220.dart.strong.expect
@@ -20,5 +20,15 @@
   A bad() { return true != 2; }
                         ^" in !true.{core::Object::==}(2) as{TypeError} self::A*;
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/regress/issue_35220.dart.strong.transformed.expect b/pkg/front_end/testcases/regress/issue_35220.dart.strong.transformed.expect
index 09cecc2..897d503 100644
--- a/pkg/front_end/testcases/regress/issue_35220.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/regress/issue_35220.dart.strong.transformed.expect
@@ -20,5 +20,15 @@
   A bad() { return true != 2; }
                         ^" in !true.{core::Object::==}(2) as{TypeError} self::A*;
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/regress/issue_35258.dart.outline.expect b/pkg/front_end/testcases/regress/issue_35258.dart.outline.expect
index e41d391..7d39637 100644
--- a/pkg/front_end/testcases/regress/issue_35258.dart.outline.expect
+++ b/pkg/front_end/testcases/regress/issue_35258.dart.outline.expect
@@ -16,6 +16,16 @@
   final field dynamic d;
   constructor •() → self::C*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/regress/issue_35258.dart.strong.expect b/pkg/front_end/testcases/regress/issue_35258.dart.strong.expect
index 9248a5a..2af5215 100644
--- a/pkg/front_end/testcases/regress/issue_35258.dart.strong.expect
+++ b/pkg/front_end/testcases/regress/issue_35258.dart.strong.expect
@@ -25,6 +25,16 @@
   final field dynamic d = null;
   constructor •() → self::C*
     : super core::Object::•() {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   invalid-expression "pkg/front_end/testcases/regress/issue_35258.dart:6:7: Error: Can't use 'C' because it is declared more than once.
diff --git a/pkg/front_end/testcases/regress/issue_35258.dart.strong.transformed.expect b/pkg/front_end/testcases/regress/issue_35258.dart.strong.transformed.expect
index 9248a5a..2af5215 100644
--- a/pkg/front_end/testcases/regress/issue_35258.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/regress/issue_35258.dart.strong.transformed.expect
@@ -25,6 +25,16 @@
   final field dynamic d = null;
   constructor •() → self::C*
     : super core::Object::•() {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   invalid-expression "pkg/front_end/testcases/regress/issue_35258.dart:6:7: Error: Can't use 'C' because it is declared more than once.
diff --git a/pkg/front_end/testcases/regress/issue_35259.dart.outline.expect b/pkg/front_end/testcases/regress/issue_35259.dart.outline.expect
index f18e210..c87a78c 100644
--- a/pkg/front_end/testcases/regress/issue_35259.dart.outline.expect
+++ b/pkg/front_end/testcases/regress/issue_35259.dart.outline.expect
@@ -32,6 +32,16 @@
   static field dynamic _redirecting# = <dynamic>[self::Supertype::•];
   static factory •() → self::Supertype*
     let dynamic #redirecting_factory = "Unresolved" in invalid-expression;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/regress/issue_35259.dart.strong.expect b/pkg/front_end/testcases/regress/issue_35259.dart.strong.expect
index 3324103..fddc836 100644
--- a/pkg/front_end/testcases/regress/issue_35259.dart.strong.expect
+++ b/pkg/front_end/testcases/regress/issue_35259.dart.strong.expect
@@ -36,6 +36,16 @@
   static field dynamic _redirecting# = <dynamic>[self::Supertype::•];
   static factory •() → self::Supertype*
     let dynamic #redirecting_factory = "Unresolved" in invalid-expression;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   core::print(invalid-expression "pkg/front_end/testcases/regress/issue_35259.dart:11:13: Error: Can't use 'Supertype' because it is declared more than once.
diff --git a/pkg/front_end/testcases/regress/issue_35259.dart.strong.transformed.expect b/pkg/front_end/testcases/regress/issue_35259.dart.strong.transformed.expect
index fb66fb9..036befd 100644
--- a/pkg/front_end/testcases/regress/issue_35259.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/regress/issue_35259.dart.strong.transformed.expect
@@ -36,6 +36,16 @@
   static field dynamic _redirecting# = <dynamic>[self::Supertype::•];
   static factory •() → self::Supertype*
     let core::String* #redirecting_factory = "Unresolved" in invalid-expression;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   core::print(invalid-expression "pkg/front_end/testcases/regress/issue_35259.dart:11:13: Error: Can't use 'Supertype' because it is declared more than once.
diff --git a/pkg/front_end/testcases/regress/issue_35260.dart.outline.expect b/pkg/front_end/testcases/regress/issue_35260.dart.outline.expect
index 1595524..d346693 100644
--- a/pkg/front_end/testcases/regress/issue_35260.dart.outline.expect
+++ b/pkg/front_end/testcases/regress/issue_35260.dart.outline.expect
@@ -16,10 +16,30 @@
   static field dynamic _redirecting# = <dynamic>[self::Supertype::•];
   static factory •() → self::Supertype*
     let dynamic #redirecting_factory = self::X::• in invalid-expression;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class X extends core::Object implements self::Supertype {
   constructor •() → self::X*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/regress/issue_35260.dart.strong.expect b/pkg/front_end/testcases/regress/issue_35260.dart.strong.expect
index 555c1a6..f3cdc91 100644
--- a/pkg/front_end/testcases/regress/issue_35260.dart.strong.expect
+++ b/pkg/front_end/testcases/regress/issue_35260.dart.strong.expect
@@ -20,11 +20,31 @@
   static field dynamic _redirecting# = <dynamic>[self::Supertype::•];
   static factory •() → self::Supertype*
     let dynamic #redirecting_factory = self::X::• in invalid-expression;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class X extends core::Object implements self::Supertype {
   constructor •() → self::X*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   self::X* x = invalid-expression "pkg/front_end/testcases/regress/issue_35260.dart:15:13: Error: Can't use 'Supertype' because it is declared more than once.
diff --git a/pkg/front_end/testcases/regress/issue_35260.dart.strong.transformed.expect b/pkg/front_end/testcases/regress/issue_35260.dart.strong.transformed.expect
index a6de672..a6949eeb 100644
--- a/pkg/front_end/testcases/regress/issue_35260.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/regress/issue_35260.dart.strong.transformed.expect
@@ -20,11 +20,31 @@
   static field dynamic _redirecting# = <dynamic>[self::Supertype::•];
   static factory •() → self::Supertype*
     let<BottomType> #redirecting_factory = self::X::• in invalid-expression;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class X extends core::Object implements self::Supertype {
   constructor •() → self::X*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   self::X* x = invalid-expression "pkg/front_end/testcases/regress/issue_35260.dart:15:13: Error: Can't use 'Supertype' because it is declared more than once.
diff --git a/pkg/front_end/testcases/regress/issue_35266.dart.outline.expect b/pkg/front_end/testcases/regress/issue_35266.dart.outline.expect
index 891e87e..0051e80 100644
--- a/pkg/front_end/testcases/regress/issue_35266.dart.outline.expect
+++ b/pkg/front_end/testcases/regress/issue_35266.dart.outline.expect
@@ -29,6 +29,16 @@
     ;
   static factory bar<K extends core::Object* = dynamic>() → self::C<self::C::bar::K*>*
     let dynamic #redirecting_factory = "B.foo" in invalid-expression;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/regress/issue_35266.dart.strong.expect b/pkg/front_end/testcases/regress/issue_35266.dart.strong.expect
index 34845fc..8f16d6f 100644
--- a/pkg/front_end/testcases/regress/issue_35266.dart.strong.expect
+++ b/pkg/front_end/testcases/regress/issue_35266.dart.strong.expect
@@ -31,6 +31,16 @@
     ;
   static factory bar<K extends core::Object* = dynamic>() → self::C<self::C::bar::K*>*
     let dynamic #redirecting_factory = "B.foo" in invalid-expression;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   invalid-expression "pkg/front_end/testcases/regress/issue_35266.dart:17:7: Error: Method not found: 'B.foo'.
diff --git a/pkg/front_end/testcases/regress/issue_35266.dart.strong.transformed.expect b/pkg/front_end/testcases/regress/issue_35266.dart.strong.transformed.expect
index a04dc8d..b7b39d7 100644
--- a/pkg/front_end/testcases/regress/issue_35266.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/regress/issue_35266.dart.strong.transformed.expect
@@ -31,6 +31,16 @@
     ;
   static factory bar<K extends core::Object* = dynamic>() → self::C<self::C::bar::K*>*
     let core::String* #redirecting_factory = "B.foo" in invalid-expression;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   invalid-expression "pkg/front_end/testcases/regress/issue_35266.dart:17:7: Error: Method not found: 'B.foo'.
diff --git a/pkg/front_end/testcases/regress/issue_36400.dart.outline.expect b/pkg/front_end/testcases/regress/issue_36400.dart.outline.expect
index 4c6df802..ccc8ac3 100644
--- a/pkg/front_end/testcases/regress/issue_36400.dart.outline.expect
+++ b/pkg/front_end/testcases/regress/issue_36400.dart.outline.expect
@@ -13,4 +13,14 @@
 class Test extends core::Object {
   static factory •() → self::Test*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
diff --git a/pkg/front_end/testcases/regress/issue_36400.dart.strong.expect b/pkg/front_end/testcases/regress/issue_36400.dart.strong.expect
index 5e6fa5b..21476b1 100644
--- a/pkg/front_end/testcases/regress/issue_36400.dart.strong.expect
+++ b/pkg/front_end/testcases/regress/issue_36400.dart.strong.expect
@@ -14,4 +14,14 @@
   static factory •() → self::Test* {
     return null;
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
diff --git a/pkg/front_end/testcases/regress/issue_36400.dart.strong.transformed.expect b/pkg/front_end/testcases/regress/issue_36400.dart.strong.transformed.expect
index 5e6fa5b..21476b1 100644
--- a/pkg/front_end/testcases/regress/issue_36400.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/regress/issue_36400.dart.strong.transformed.expect
@@ -14,4 +14,14 @@
   static factory •() → self::Test* {
     return null;
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
diff --git a/pkg/front_end/testcases/regress/issue_36647.dart.outline.expect b/pkg/front_end/testcases/regress/issue_36647.dart.outline.expect
index 7bf2f7d..73e91d5 100644
--- a/pkg/front_end/testcases/regress/issue_36647.dart.outline.expect
+++ b/pkg/front_end/testcases/regress/issue_36647.dart.outline.expect
@@ -62,6 +62,16 @@
 class xxx extends core::Object {
   synthetic constructor •() → iss::xxx*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field invalid-type XXX;
 static field dynamic extends;
diff --git a/pkg/front_end/testcases/regress/issue_36647.dart.strong.expect b/pkg/front_end/testcases/regress/issue_36647.dart.strong.expect
index d3285d6..031f195 100644
--- a/pkg/front_end/testcases/regress/issue_36647.dart.strong.expect
+++ b/pkg/front_end/testcases/regress/issue_36647.dart.strong.expect
@@ -67,6 +67,16 @@
   synthetic constructor •() → iss::xxx*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field invalid-type XXX;
 static field dynamic extends;
diff --git a/pkg/front_end/testcases/regress/issue_36647.dart.strong.transformed.expect b/pkg/front_end/testcases/regress/issue_36647.dart.strong.transformed.expect
index d3285d6..031f195 100644
--- a/pkg/front_end/testcases/regress/issue_36647.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/regress/issue_36647.dart.strong.transformed.expect
@@ -67,6 +67,16 @@
   synthetic constructor •() → iss::xxx*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field invalid-type XXX;
 static field dynamic extends;
diff --git a/pkg/front_end/testcases/regress/issue_36669.dart.outline.expect b/pkg/front_end/testcases/regress/issue_36669.dart.outline.expect
index 1e62467..5190440 100644
--- a/pkg/front_end/testcases/regress/issue_36669.dart.outline.expect
+++ b/pkg/front_end/testcases/regress/issue_36669.dart.outline.expect
@@ -5,10 +5,30 @@
 class NoUnnamedConstuctor extends core::Object {
   constructor _() → self::NoUnnamedConstuctor*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class MixMeIn extends core::Object {
   synthetic constructor •() → self::MixMeIn*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class _Foo&NoUnnamedConstuctor&MixMeIn = self::NoUnnamedConstuctor with self::MixMeIn /*isAnonymousMixin*/  {
   synthetic constructor _() → self::_Foo&NoUnnamedConstuctor&MixMeIn*
diff --git a/pkg/front_end/testcases/regress/issue_36669.dart.strong.expect b/pkg/front_end/testcases/regress/issue_36669.dart.strong.expect
index 5ea619e..b8ed352 100644
--- a/pkg/front_end/testcases/regress/issue_36669.dart.strong.expect
+++ b/pkg/front_end/testcases/regress/issue_36669.dart.strong.expect
@@ -13,11 +13,31 @@
   constructor _() → self::NoUnnamedConstuctor*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class MixMeIn extends core::Object {
   synthetic constructor •() → self::MixMeIn*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class _Foo&NoUnnamedConstuctor&MixMeIn = self::NoUnnamedConstuctor with self::MixMeIn /*isAnonymousMixin*/  {
   synthetic constructor _() → self::_Foo&NoUnnamedConstuctor&MixMeIn*
diff --git a/pkg/front_end/testcases/regress/issue_36669.dart.strong.transformed.expect b/pkg/front_end/testcases/regress/issue_36669.dart.strong.transformed.expect
index 837887c..98858e7 100644
--- a/pkg/front_end/testcases/regress/issue_36669.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/regress/issue_36669.dart.strong.transformed.expect
@@ -13,16 +13,46 @@
   constructor _() → self::NoUnnamedConstuctor*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class MixMeIn extends core::Object {
   synthetic constructor •() → self::MixMeIn*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class _Foo&NoUnnamedConstuctor&MixMeIn extends self::NoUnnamedConstuctor implements self::MixMeIn /*isAnonymousMixin,isEliminatedMixin*/  {
   synthetic constructor _() → self::_Foo&NoUnnamedConstuctor&MixMeIn*
     : super self::NoUnnamedConstuctor::_()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Foo extends self::_Foo&NoUnnamedConstuctor&MixMeIn {
   synthetic constructor •() → self::Foo*
diff --git a/pkg/front_end/testcases/regress/issue_37285.dart.outline.expect b/pkg/front_end/testcases/regress/issue_37285.dart.outline.expect
index 8d0ff52..c8a11b6 100644
--- a/pkg/front_end/testcases/regress/issue_37285.dart.outline.expect
+++ b/pkg/front_end/testcases/regress/issue_37285.dart.outline.expect
@@ -12,6 +12,16 @@
 class C extends core::Object {
   constructor •() → self::C*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/regress/issue_37285.dart.strong.expect b/pkg/front_end/testcases/regress/issue_37285.dart.strong.expect
index ac39a3d..10b2915 100644
--- a/pkg/front_end/testcases/regress/issue_37285.dart.strong.expect
+++ b/pkg/front_end/testcases/regress/issue_37285.dart.strong.expect
@@ -26,6 +26,16 @@
   C() : super()[];
                ^"
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   new self::C::•();
diff --git a/pkg/front_end/testcases/regress/issue_37285.dart.strong.transformed.expect b/pkg/front_end/testcases/regress/issue_37285.dart.strong.transformed.expect
index ac39a3d..10b2915 100644
--- a/pkg/front_end/testcases/regress/issue_37285.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/regress/issue_37285.dart.strong.transformed.expect
@@ -26,6 +26,16 @@
   C() : super()[];
                ^"
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   new self::C::•();
diff --git a/pkg/front_end/testcases/regress/issue_37681.dart.strong.transformed.expect b/pkg/front_end/testcases/regress/issue_37681.dart.strong.transformed.expect
index b47cf9c..c48ca70 100644
--- a/pkg/front_end/testcases/regress/issue_37681.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/regress/issue_37681.dart.strong.transformed.expect
@@ -53,8 +53,8 @@
               asy::_completeOnAsyncReturn(:async_completer, :return_value);
               return;
             }
-            on dynamic catch(dynamic :exception, core::StackTrace* :stack_trace) {
-              :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+            on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
+              :async_completer.{asy::Completer::completeError}(exception, stack_trace);
             }
           :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
           :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
@@ -86,8 +86,8 @@
                 }
                 return;
               }
-              on dynamic catch(dynamic :exception, core::StackTrace* :stack_trace) {
-                :controller.{asy::_AsyncStarStreamController::addError}(:exception, :stack_trace);
+              on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
+                :controller.{asy::_AsyncStarStreamController::addError}(exception, stack_trace);
               }
             finally {
               :controller.{asy::_AsyncStarStreamController::close}();
@@ -108,7 +108,7 @@
             while (true) {
               dynamic #t2 = asy::_asyncStarMoveNextHelper(:stream);
               [yield] let dynamic #t3 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::moveNext}(), :async_op_then, :async_op_error, :async_op) in null;
-              if(_in::unsafeCast<core::bool*>(:result)) {
+              if(_in::unsafeCast<core::bool>(:result)) {
                 dynamic x = :for-iterator.{asy::_StreamIterator::current};
                 {
                   core::print(x);
@@ -124,18 +124,20 @@
             }
         }
         function f_sync_star() → core::int* /* originally sync* */ {
-          core::int* :await_jump_var = 0;
-          dynamic :await_ctx_var;
-          function :sync_op(core::_SyncIterator<dynamic>* :iterator) → core::bool* yielding {
-            {
+          function :sync_op_gen() → (core::_SyncIterator<dynamic>*) →* core::bool* {
+            core::int* :await_jump_var = 0;
+            dynamic :await_ctx_var;
+            return (core::_SyncIterator<dynamic>* :iterator) → core::bool* yielding {
               {
-                :iterator.{core::_SyncIterator::_current} = 42;
-                [yield] true;
+                {
+                  :iterator.{core::_SyncIterator::_current} = 42;
+                  [yield] true;
+                }
               }
-            }
-            return false;
+              return false;
+            };
           }
-          return new core::_SyncIterable::•<dynamic>(:sync_op);
+          return new core::_SyncIterable::•<dynamic>(:sync_op_gen);
         }
         {
           core::Iterator<dynamic>* :sync-for-iterator = ((f_sync_star.call() as dynamic) as{TypeError,ForDynamic} core::Iterable<dynamic>*).{core::Iterable::iterator};
@@ -150,8 +152,8 @@
       asy::_completeOnAsyncReturn(:async_completer, :return_value);
       return;
     }
-    on dynamic catch(dynamic :exception, core::StackTrace* :stack_trace) {
-      :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+    on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
+      :async_completer.{asy::Completer::completeError}(exception, stack_trace);
     }
   :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
diff --git a/pkg/front_end/testcases/regress/issue_41265.crash_dart.outline.expect b/pkg/front_end/testcases/regress/issue_41265.crash_dart.outline.expect
index a373059..ec10eb0 100644
--- a/pkg/front_end/testcases/regress/issue_41265.crash_dart.outline.expect
+++ b/pkg/front_end/testcases/regress/issue_41265.crash_dart.outline.expect
@@ -36,12 +36,42 @@
 class A<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::A<self::A::T*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class M<T extends core::Object* = dynamic> extends core::Object /*isMixinDeclaration*/  {
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class _DND1&Object extends core::Object /*isAnonymousMixin*/  {
   synthetic constructor •() → self::_DND1&Object*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class DND1 extends self::_DND1&Object {
   synthetic constructor •() → self::DND1*
@@ -50,6 +80,16 @@
 abstract class _DND2&Object extends core::Object /*isAnonymousMixin*/  {
   synthetic constructor •() → self::_DND2&Object*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class DND2 extends self::_DND2&Object {
   synthetic constructor •() → self::DND2*
@@ -58,10 +98,30 @@
 class DND3 extends core::Object {
   synthetic constructor •() → self::DND3*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class DND4 extends core::Object {
   synthetic constructor •() → self::DND4*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/regress/issue_41265.crash_dart.strong.expect b/pkg/front_end/testcases/regress/issue_41265.crash_dart.strong.expect
index a161395..2fdcd14 100644
--- a/pkg/front_end/testcases/regress/issue_41265.crash_dart.strong.expect
+++ b/pkg/front_end/testcases/regress/issue_41265.crash_dart.strong.expect
@@ -37,13 +37,43 @@
   synthetic constructor •() → self::A<self::A::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class M<T extends core::Object* = dynamic> extends core::Object /*isMixinDeclaration*/  {
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class _DND1&Object extends core::Object /*isAnonymousMixin*/  {
   synthetic constructor •() → self::_DND1&Object*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class DND1 extends self::_DND1&Object {
   synthetic constructor •() → self::DND1*
@@ -54,6 +84,16 @@
   synthetic constructor •() → self::_DND2&Object*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class DND2 extends self::_DND2&Object {
   synthetic constructor •() → self::DND2*
@@ -64,10 +104,30 @@
   synthetic constructor •() → self::DND3*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class DND4 extends core::Object {
   synthetic constructor •() → self::DND4*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/regress/issue_41265.crash_dart.strong.transformed.expect b/pkg/front_end/testcases/regress/issue_41265.crash_dart.strong.transformed.expect
index a161395..2fdcd14 100644
--- a/pkg/front_end/testcases/regress/issue_41265.crash_dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/regress/issue_41265.crash_dart.strong.transformed.expect
@@ -37,13 +37,43 @@
   synthetic constructor •() → self::A<self::A::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class M<T extends core::Object* = dynamic> extends core::Object /*isMixinDeclaration*/  {
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class _DND1&Object extends core::Object /*isAnonymousMixin*/  {
   synthetic constructor •() → self::_DND1&Object*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class DND1 extends self::_DND1&Object {
   synthetic constructor •() → self::DND1*
@@ -54,6 +84,16 @@
   synthetic constructor •() → self::_DND2&Object*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class DND2 extends self::_DND2&Object {
   synthetic constructor •() → self::DND2*
@@ -64,10 +104,30 @@
   synthetic constructor •() → self::DND3*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class DND4 extends core::Object {
   synthetic constructor •() → self::DND4*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/runtime_checks/call_kinds.dart.outline.expect b/pkg/front_end/testcases/runtime_checks/call_kinds.dart.outline.expect
index 059aefb..5aa6b75 100644
--- a/pkg/front_end/testcases/runtime_checks/call_kinds.dart.outline.expect
+++ b/pkg/front_end/testcases/runtime_checks/call_kinds.dart.outline.expect
@@ -14,6 +14,16 @@
     ;
   method test() → void
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method test(self::C* c, () →* void f, dynamic d) → void
   ;
diff --git a/pkg/front_end/testcases/runtime_checks/call_kinds.dart.strong.expect b/pkg/front_end/testcases/runtime_checks/call_kinds.dart.strong.expect
index 347a9b2..7f1eb8b 100644
--- a/pkg/front_end/testcases/runtime_checks/call_kinds.dart.strong.expect
+++ b/pkg/front_end/testcases/runtime_checks/call_kinds.dart.strong.expect
@@ -20,6 +20,16 @@
     this.{self::C::h}.call();
     this.{self::C::h}.call();
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method test(self::C* c, () →* void f, dynamic d) → void {
   c.{self::C::f}();
diff --git a/pkg/front_end/testcases/runtime_checks/call_kinds.dart.strong.transformed.expect b/pkg/front_end/testcases/runtime_checks/call_kinds.dart.strong.transformed.expect
index 347a9b2..7f1eb8b 100644
--- a/pkg/front_end/testcases/runtime_checks/call_kinds.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/runtime_checks/call_kinds.dart.strong.transformed.expect
@@ -20,6 +20,16 @@
     this.{self::C::h}.call();
     this.{self::C::h}.call();
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method test(self::C* c, () →* void f, dynamic d) → void {
   c.{self::C::f}();
diff --git a/pkg/front_end/testcases/runtime_checks/call_kinds_get.dart.outline.expect b/pkg/front_end/testcases/runtime_checks/call_kinds_get.dart.outline.expect
index 7e0ce98..969f847 100644
--- a/pkg/front_end/testcases/runtime_checks/call_kinds_get.dart.outline.expect
+++ b/pkg/front_end/testcases/runtime_checks/call_kinds_get.dart.outline.expect
@@ -10,6 +10,16 @@
     ;
   method test() → void
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method test(self::C* c, dynamic d) → void
   ;
diff --git a/pkg/front_end/testcases/runtime_checks/call_kinds_get.dart.strong.expect b/pkg/front_end/testcases/runtime_checks/call_kinds_get.dart.strong.expect
index 5853cb4..a8cf8fe 100644
--- a/pkg/front_end/testcases/runtime_checks/call_kinds_get.dart.strong.expect
+++ b/pkg/front_end/testcases/runtime_checks/call_kinds_get.dart.strong.expect
@@ -15,6 +15,16 @@
     dynamic v3 = this.{self::C::y};
     dynamic v4 = this.{self::C::y};
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method test(self::C* c, dynamic d) → void {
   dynamic v1 = c.{self::C::x};
diff --git a/pkg/front_end/testcases/runtime_checks/call_kinds_get.dart.strong.transformed.expect b/pkg/front_end/testcases/runtime_checks/call_kinds_get.dart.strong.transformed.expect
index 5853cb4..a8cf8fe 100644
--- a/pkg/front_end/testcases/runtime_checks/call_kinds_get.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/runtime_checks/call_kinds_get.dart.strong.transformed.expect
@@ -15,6 +15,16 @@
     dynamic v3 = this.{self::C::y};
     dynamic v4 = this.{self::C::y};
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method test(self::C* c, dynamic d) → void {
   dynamic v1 = c.{self::C::x};
diff --git a/pkg/front_end/testcases/runtime_checks/call_kinds_set.dart.outline.expect b/pkg/front_end/testcases/runtime_checks/call_kinds_set.dart.outline.expect
index 4f04414..fe5b224 100644
--- a/pkg/front_end/testcases/runtime_checks/call_kinds_set.dart.outline.expect
+++ b/pkg/front_end/testcases/runtime_checks/call_kinds_set.dart.outline.expect
@@ -10,6 +10,16 @@
     ;
   method test() → void
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method test(self::C* c, dynamic d) → void
   ;
diff --git a/pkg/front_end/testcases/runtime_checks/call_kinds_set.dart.strong.expect b/pkg/front_end/testcases/runtime_checks/call_kinds_set.dart.strong.expect
index 3e911d7..d3c96ba 100644
--- a/pkg/front_end/testcases/runtime_checks/call_kinds_set.dart.strong.expect
+++ b/pkg/front_end/testcases/runtime_checks/call_kinds_set.dart.strong.expect
@@ -14,6 +14,16 @@
     this.{self::C::y} = null;
     this.{self::C::y} = null;
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method test(self::C* c, dynamic d) → void {
   c.{self::C::x} = null;
diff --git a/pkg/front_end/testcases/runtime_checks/call_kinds_set.dart.strong.transformed.expect b/pkg/front_end/testcases/runtime_checks/call_kinds_set.dart.strong.transformed.expect
index 3e911d7..d3c96ba 100644
--- a/pkg/front_end/testcases/runtime_checks/call_kinds_set.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/runtime_checks/call_kinds_set.dart.strong.transformed.expect
@@ -14,6 +14,16 @@
     this.{self::C::y} = null;
     this.{self::C::y} = null;
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method test(self::C* c, dynamic d) → void {
   c.{self::C::x} = null;
diff --git a/pkg/front_end/testcases/runtime_checks/call_method_implicit_tear_off.dart.outline.expect b/pkg/front_end/testcases/runtime_checks/call_method_implicit_tear_off.dart.outline.expect
index dbe6a3a..e80d1d0 100644
--- a/pkg/front_end/testcases/runtime_checks/call_method_implicit_tear_off.dart.outline.expect
+++ b/pkg/front_end/testcases/runtime_checks/call_method_implicit_tear_off.dart.outline.expect
@@ -7,6 +7,16 @@
     ;
   method call() → void
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/runtime_checks/call_method_implicit_tear_off.dart.strong.expect b/pkg/front_end/testcases/runtime_checks/call_method_implicit_tear_off.dart.strong.expect
index c0a850ef..24fa080 100644
--- a/pkg/front_end/testcases/runtime_checks/call_method_implicit_tear_off.dart.strong.expect
+++ b/pkg/front_end/testcases/runtime_checks/call_method_implicit_tear_off.dart.strong.expect
@@ -7,6 +7,16 @@
     : super core::Object::•()
     ;
   method call() → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   () →* void x = let final self::C* #t1 = new self::C::•() in #t1.==(null) ?{() →* void} null : #t1.{self::C::call};
diff --git a/pkg/front_end/testcases/runtime_checks/call_method_implicit_tear_off.dart.strong.transformed.expect b/pkg/front_end/testcases/runtime_checks/call_method_implicit_tear_off.dart.strong.transformed.expect
index c0a850ef..24fa080 100644
--- a/pkg/front_end/testcases/runtime_checks/call_method_implicit_tear_off.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/runtime_checks/call_method_implicit_tear_off.dart.strong.transformed.expect
@@ -7,6 +7,16 @@
     : super core::Object::•()
     ;
   method call() → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   () →* void x = let final self::C* #t1 = new self::C::•() in #t1.==(null) ?{() →* void} null : #t1.{self::C::call};
diff --git a/pkg/front_end/testcases/runtime_checks/call_method_implicit_tear_off_future_or.dart.outline.expect b/pkg/front_end/testcases/runtime_checks/call_method_implicit_tear_off_future_or.dart.outline.expect
index 389e36a..67807bd 100644
--- a/pkg/front_end/testcases/runtime_checks/call_method_implicit_tear_off_future_or.dart.outline.expect
+++ b/pkg/front_end/testcases/runtime_checks/call_method_implicit_tear_off_future_or.dart.outline.expect
@@ -9,6 +9,16 @@
     ;
   method call() → void
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/runtime_checks/call_method_implicit_tear_off_future_or.dart.strong.expect b/pkg/front_end/testcases/runtime_checks/call_method_implicit_tear_off_future_or.dart.strong.expect
index 203dd57..c5c9adf 100644
--- a/pkg/front_end/testcases/runtime_checks/call_method_implicit_tear_off_future_or.dart.strong.expect
+++ b/pkg/front_end/testcases/runtime_checks/call_method_implicit_tear_off_future_or.dart.strong.expect
@@ -10,6 +10,16 @@
     : super core::Object::•()
     ;
   method call() → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   asy::FutureOr<() →* void>* x = let final self::C* #t1 = new self::C::•() in #t1.==(null) ?{() →* void} null : #t1.{self::C::call};
diff --git a/pkg/front_end/testcases/runtime_checks/call_method_implicit_tear_off_future_or.dart.strong.transformed.expect b/pkg/front_end/testcases/runtime_checks/call_method_implicit_tear_off_future_or.dart.strong.transformed.expect
index 203dd57..c5c9adf 100644
--- a/pkg/front_end/testcases/runtime_checks/call_method_implicit_tear_off_future_or.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/runtime_checks/call_method_implicit_tear_off_future_or.dart.strong.transformed.expect
@@ -10,6 +10,16 @@
     : super core::Object::•()
     ;
   method call() → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   asy::FutureOr<() →* void>* x = let final self::C* #t1 = new self::C::•() in #t1.==(null) ?{() →* void} null : #t1.{self::C::call};
diff --git a/pkg/front_end/testcases/runtime_checks/contravariant_field.dart.outline.expect b/pkg/front_end/testcases/runtime_checks/contravariant_field.dart.outline.expect
index 1e1f818..7b36c68 100644
--- a/pkg/front_end/testcases/runtime_checks/contravariant_field.dart.outline.expect
+++ b/pkg/front_end/testcases/runtime_checks/contravariant_field.dart.outline.expect
@@ -9,6 +9,16 @@
     ;
   method f() → void
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method g(self::C<core::num*>* c) → void
   ;
diff --git a/pkg/front_end/testcases/runtime_checks/contravariant_field.dart.strong.expect b/pkg/front_end/testcases/runtime_checks/contravariant_field.dart.strong.expect
index a71b9df..1388f1e 100644
--- a/pkg/front_end/testcases/runtime_checks/contravariant_field.dart.strong.expect
+++ b/pkg/front_end/testcases/runtime_checks/contravariant_field.dart.strong.expect
@@ -11,6 +11,16 @@
   method f() → void {
     (self::C::T*) →* void x = this.{self::C::y};
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method g(self::C<core::num*>* c) → void {
   (core::num*) →* void x = c.{self::C::y} as{TypeError,CovarianceCheck} (core::num*) →* void;
diff --git a/pkg/front_end/testcases/runtime_checks/contravariant_field.dart.strong.transformed.expect b/pkg/front_end/testcases/runtime_checks/contravariant_field.dart.strong.transformed.expect
index a71b9df..1388f1e 100644
--- a/pkg/front_end/testcases/runtime_checks/contravariant_field.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/runtime_checks/contravariant_field.dart.strong.transformed.expect
@@ -11,6 +11,16 @@
   method f() → void {
     (self::C::T*) →* void x = this.{self::C::y};
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method g(self::C<core::num*>* c) → void {
   (core::num*) →* void x = c.{self::C::y} as{TypeError,CovarianceCheck} (core::num*) →* void;
diff --git a/pkg/front_end/testcases/runtime_checks/contravariant_generic_method_type_parameter.dart.outline.expect b/pkg/front_end/testcases/runtime_checks/contravariant_generic_method_type_parameter.dart.outline.expect
index 5c8b74d..9a5c4fe 100644
--- a/pkg/front_end/testcases/runtime_checks/contravariant_generic_method_type_parameter.dart.outline.expect
+++ b/pkg/front_end/testcases/runtime_checks/contravariant_generic_method_type_parameter.dart.outline.expect
@@ -8,6 +8,16 @@
     ;
   method f<U extends (self::C::T*) →* void = (self::C::T*) →* void>(self::C::f::U* x) → void
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method g(self::C<core::num*>* c) → void
   ;
diff --git a/pkg/front_end/testcases/runtime_checks/contravariant_generic_method_type_parameter.dart.strong.expect b/pkg/front_end/testcases/runtime_checks/contravariant_generic_method_type_parameter.dart.strong.expect
index e3448ed..1e8cae4 100644
--- a/pkg/front_end/testcases/runtime_checks/contravariant_generic_method_type_parameter.dart.strong.expect
+++ b/pkg/front_end/testcases/runtime_checks/contravariant_generic_method_type_parameter.dart.strong.expect
@@ -8,6 +8,16 @@
     : super core::Object::•()
     ;
   method f<U extends (self::C::T*) →* void = (self::C::T*) →* void>(self::C::f::U* x) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method g(self::C<core::num*>* c) → void {
   c.{self::C::f}<(core::Object*) →* void>((core::Object* o) → core::Null? {});
diff --git a/pkg/front_end/testcases/runtime_checks/contravariant_generic_method_type_parameter.dart.strong.transformed.expect b/pkg/front_end/testcases/runtime_checks/contravariant_generic_method_type_parameter.dart.strong.transformed.expect
index e3448ed..1e8cae4 100644
--- a/pkg/front_end/testcases/runtime_checks/contravariant_generic_method_type_parameter.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/runtime_checks/contravariant_generic_method_type_parameter.dart.strong.transformed.expect
@@ -8,6 +8,16 @@
     : super core::Object::•()
     ;
   method f<U extends (self::C::T*) →* void = (self::C::T*) →* void>(self::C::f::U* x) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method g(self::C<core::num*>* c) → void {
   c.{self::C::f}<(core::Object*) →* void>((core::Object* o) → core::Null? {});
diff --git a/pkg/front_end/testcases/runtime_checks/contravariant_generic_return.dart.outline.expect b/pkg/front_end/testcases/runtime_checks/contravariant_generic_return.dart.outline.expect
index 1debb50..878c1a0 100644
--- a/pkg/front_end/testcases/runtime_checks/contravariant_generic_return.dart.outline.expect
+++ b/pkg/front_end/testcases/runtime_checks/contravariant_generic_return.dart.outline.expect
@@ -10,6 +10,16 @@
     ;
   method f2() → core::List<(self::C::T*) →* void>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method g1(self::C<core::num*>* c) → void
   ;
diff --git a/pkg/front_end/testcases/runtime_checks/contravariant_generic_return.dart.strong.expect b/pkg/front_end/testcases/runtime_checks/contravariant_generic_return.dart.strong.expect
index c3985a6..d7cce68 100644
--- a/pkg/front_end/testcases/runtime_checks/contravariant_generic_return.dart.strong.expect
+++ b/pkg/front_end/testcases/runtime_checks/contravariant_generic_return.dart.strong.expect
@@ -11,6 +11,16 @@
   method f2() → core::List<(self::C::T*) →* void>* {
     return <(self::C::T*) →* void>[this.{self::C::f1}()];
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method g1(self::C<core::num*>* c) → void {
   (core::num*) →* void x = c.{self::C::f1}() as{TypeError,CovarianceCheck} (core::num*) →* void;
diff --git a/pkg/front_end/testcases/runtime_checks/contravariant_generic_return.dart.strong.transformed.expect b/pkg/front_end/testcases/runtime_checks/contravariant_generic_return.dart.strong.transformed.expect
index c3985a6..d7cce68 100644
--- a/pkg/front_end/testcases/runtime_checks/contravariant_generic_return.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/runtime_checks/contravariant_generic_return.dart.strong.transformed.expect
@@ -11,6 +11,16 @@
   method f2() → core::List<(self::C::T*) →* void>* {
     return <(self::C::T*) →* void>[this.{self::C::f1}()];
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method g1(self::C<core::num*>* c) → void {
   (core::num*) →* void x = c.{self::C::f1}() as{TypeError,CovarianceCheck} (core::num*) →* void;
diff --git a/pkg/front_end/testcases/runtime_checks/contravariant_generic_return_null_aware.dart.outline.expect b/pkg/front_end/testcases/runtime_checks/contravariant_generic_return_null_aware.dart.outline.expect
index 1debb50..878c1a0 100644
--- a/pkg/front_end/testcases/runtime_checks/contravariant_generic_return_null_aware.dart.outline.expect
+++ b/pkg/front_end/testcases/runtime_checks/contravariant_generic_return_null_aware.dart.outline.expect
@@ -10,6 +10,16 @@
     ;
   method f2() → core::List<(self::C::T*) →* void>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method g1(self::C<core::num*>* c) → void
   ;
diff --git a/pkg/front_end/testcases/runtime_checks/contravariant_generic_return_null_aware.dart.strong.expect b/pkg/front_end/testcases/runtime_checks/contravariant_generic_return_null_aware.dart.strong.expect
index 55f630b..0ac5e58 100644
--- a/pkg/front_end/testcases/runtime_checks/contravariant_generic_return_null_aware.dart.strong.expect
+++ b/pkg/front_end/testcases/runtime_checks/contravariant_generic_return_null_aware.dart.strong.expect
@@ -11,17 +11,27 @@
   method f2() → core::List<(self::C::T*) →* void>* {
     return <(self::C::T*) →* void>[this.{self::C::f1}()];
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method g1(self::C<core::num*>* c) → void {
-  (core::num*) →* void x = let final self::C<core::num*>* #t1 = c in #t1.{core::Object::==}(null) ?{(core::num*) →* void} null : #t1.{self::C::f1}() as{TypeError,CovarianceCheck} (core::num*) →* void;
+  (core::num*) →* void x = let final self::C<core::num*>* #t1 = c in #t1.{self::C::==}(null) ?{(core::num*) →* void} null : #t1.{self::C::f1}() as{TypeError,CovarianceCheck} (core::num*) →* void;
   core::print("hello");
   x.call(1.5);
 }
 static method g2(self::C<core::num*>* c) → void {
-  (core::int*) →* void x = let final self::C<core::num*>* #t2 = c in #t2.{core::Object::==}(null) ?{(core::num*) →* void} null : #t2.{self::C::f1}() as{TypeError,CovarianceCheck} (core::num*) →* void;
+  (core::int*) →* void x = let final self::C<core::num*>* #t2 = c in #t2.{self::C::==}(null) ?{(core::num*) →* void} null : #t2.{self::C::f1}() as{TypeError,CovarianceCheck} (core::num*) →* void;
   x.call(1);
 }
 static method g3(self::C<core::num*>* c) → void {
-  core::List<(core::num*) →* void>* x = let final self::C<core::num*>* #t3 = c in #t3.{core::Object::==}(null) ?{core::List<(core::num*) →* void>*} null : #t3.{self::C::f2}() as{TypeError,CovarianceCheck} core::List<(core::num*) →* void>*;
+  core::List<(core::num*) →* void>* x = let final self::C<core::num*>* #t3 = c in #t3.{self::C::==}(null) ?{core::List<(core::num*) →* void>*} null : #t3.{self::C::f2}() as{TypeError,CovarianceCheck} core::List<(core::num*) →* void>*;
 }
 static method main() → void {}
diff --git a/pkg/front_end/testcases/runtime_checks/contravariant_generic_return_null_aware.dart.strong.transformed.expect b/pkg/front_end/testcases/runtime_checks/contravariant_generic_return_null_aware.dart.strong.transformed.expect
index 55f630b..0ac5e58 100644
--- a/pkg/front_end/testcases/runtime_checks/contravariant_generic_return_null_aware.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/runtime_checks/contravariant_generic_return_null_aware.dart.strong.transformed.expect
@@ -11,17 +11,27 @@
   method f2() → core::List<(self::C::T*) →* void>* {
     return <(self::C::T*) →* void>[this.{self::C::f1}()];
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method g1(self::C<core::num*>* c) → void {
-  (core::num*) →* void x = let final self::C<core::num*>* #t1 = c in #t1.{core::Object::==}(null) ?{(core::num*) →* void} null : #t1.{self::C::f1}() as{TypeError,CovarianceCheck} (core::num*) →* void;
+  (core::num*) →* void x = let final self::C<core::num*>* #t1 = c in #t1.{self::C::==}(null) ?{(core::num*) →* void} null : #t1.{self::C::f1}() as{TypeError,CovarianceCheck} (core::num*) →* void;
   core::print("hello");
   x.call(1.5);
 }
 static method g2(self::C<core::num*>* c) → void {
-  (core::int*) →* void x = let final self::C<core::num*>* #t2 = c in #t2.{core::Object::==}(null) ?{(core::num*) →* void} null : #t2.{self::C::f1}() as{TypeError,CovarianceCheck} (core::num*) →* void;
+  (core::int*) →* void x = let final self::C<core::num*>* #t2 = c in #t2.{self::C::==}(null) ?{(core::num*) →* void} null : #t2.{self::C::f1}() as{TypeError,CovarianceCheck} (core::num*) →* void;
   x.call(1);
 }
 static method g3(self::C<core::num*>* c) → void {
-  core::List<(core::num*) →* void>* x = let final self::C<core::num*>* #t3 = c in #t3.{core::Object::==}(null) ?{core::List<(core::num*) →* void>*} null : #t3.{self::C::f2}() as{TypeError,CovarianceCheck} core::List<(core::num*) →* void>*;
+  core::List<(core::num*) →* void>* x = let final self::C<core::num*>* #t3 = c in #t3.{self::C::==}(null) ?{core::List<(core::num*) →* void>*} null : #t3.{self::C::f2}() as{TypeError,CovarianceCheck} core::List<(core::num*) →* void>*;
 }
 static method main() → void {}
diff --git a/pkg/front_end/testcases/runtime_checks/contravariant_generic_return_tear_off.dart.outline.expect b/pkg/front_end/testcases/runtime_checks/contravariant_generic_return_tear_off.dart.outline.expect
index dd755c5..bae55fe 100644
--- a/pkg/front_end/testcases/runtime_checks/contravariant_generic_return_tear_off.dart.outline.expect
+++ b/pkg/front_end/testcases/runtime_checks/contravariant_generic_return_tear_off.dart.outline.expect
@@ -10,6 +10,16 @@
     ;
   method f() → (self::C::T*) →* void
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method g(self::C<core::num*>* c) → () →* (core::num*) →* void
   ;
diff --git a/pkg/front_end/testcases/runtime_checks/contravariant_generic_return_tear_off.dart.strong.expect b/pkg/front_end/testcases/runtime_checks/contravariant_generic_return_tear_off.dart.strong.expect
index cbf825e..b78896d 100644
--- a/pkg/front_end/testcases/runtime_checks/contravariant_generic_return_tear_off.dart.strong.expect
+++ b/pkg/front_end/testcases/runtime_checks/contravariant_generic_return_tear_off.dart.strong.expect
@@ -11,6 +11,16 @@
     ;
   method f() → (self::C::T*) →* void
     return this.{self::C::_x};
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method g(self::C<core::num*>* c) → () →* (core::num*) →* void {
   return c.{self::C::f} as{TypeError,CovarianceCheck} () →* (core::num*) →* void;
diff --git a/pkg/front_end/testcases/runtime_checks/contravariant_generic_return_tear_off.dart.strong.transformed.expect b/pkg/front_end/testcases/runtime_checks/contravariant_generic_return_tear_off.dart.strong.transformed.expect
index cbf825e..b78896d 100644
--- a/pkg/front_end/testcases/runtime_checks/contravariant_generic_return_tear_off.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/runtime_checks/contravariant_generic_return_tear_off.dart.strong.transformed.expect
@@ -11,6 +11,16 @@
     ;
   method f() → (self::C::T*) →* void
     return this.{self::C::_x};
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method g(self::C<core::num*>* c) → () →* (core::num*) →* void {
   return c.{self::C::f} as{TypeError,CovarianceCheck} () →* (core::num*) →* void;
diff --git a/pkg/front_end/testcases/runtime_checks/contravariant_getter.dart.outline.expect b/pkg/front_end/testcases/runtime_checks/contravariant_getter.dart.outline.expect
index 3f570d1..1766572 100644
--- a/pkg/front_end/testcases/runtime_checks/contravariant_getter.dart.outline.expect
+++ b/pkg/front_end/testcases/runtime_checks/contravariant_getter.dart.outline.expect
@@ -9,6 +9,16 @@
     ;
   method f(generic-covariant-impl self::C::T* value) → void
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method g(self::C<core::num*>* c) → void
   ;
diff --git a/pkg/front_end/testcases/runtime_checks/contravariant_getter.dart.strong.expect b/pkg/front_end/testcases/runtime_checks/contravariant_getter.dart.strong.expect
index 8a1622f..af1c3cb 100644
--- a/pkg/front_end/testcases/runtime_checks/contravariant_getter.dart.strong.expect
+++ b/pkg/front_end/testcases/runtime_checks/contravariant_getter.dart.strong.expect
@@ -11,6 +11,16 @@
   method f(generic-covariant-impl self::C::T* value) → void {
     let final self::C::T* #t1 = value in this.{self::C::y}.call(#t1);
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method g(self::C<core::num*>* c) → void {
   let final self::C<core::num*>* #t2 = c in let final core::double* #t3 = 1.5 in (#t2.{self::C::y} as{TypeError,CovarianceCheck} (core::num*) →* void).call(#t3);
diff --git a/pkg/front_end/testcases/runtime_checks/contravariant_getter.dart.strong.transformed.expect b/pkg/front_end/testcases/runtime_checks/contravariant_getter.dart.strong.transformed.expect
index 8a1622f..af1c3cb 100644
--- a/pkg/front_end/testcases/runtime_checks/contravariant_getter.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/runtime_checks/contravariant_getter.dart.strong.transformed.expect
@@ -11,6 +11,16 @@
   method f(generic-covariant-impl self::C::T* value) → void {
     let final self::C::T* #t1 = value in this.{self::C::y}.call(#t1);
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method g(self::C<core::num*>* c) → void {
   let final self::C<core::num*>* #t2 = c in let final core::double* #t3 = 1.5 in (#t2.{self::C::y} as{TypeError,CovarianceCheck} (core::num*) →* void).call(#t3);
diff --git a/pkg/front_end/testcases/runtime_checks/contravariant_getter_return.dart.outline.expect b/pkg/front_end/testcases/runtime_checks/contravariant_getter_return.dart.outline.expect
index 7dbf41e..b0b44a9 100644
--- a/pkg/front_end/testcases/runtime_checks/contravariant_getter_return.dart.outline.expect
+++ b/pkg/front_end/testcases/runtime_checks/contravariant_getter_return.dart.outline.expect
@@ -10,6 +10,16 @@
     ;
   get f2() → core::List<(self::C::T*) →* void>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method g1(self::C<core::num*>* c) → void
   ;
diff --git a/pkg/front_end/testcases/runtime_checks/contravariant_getter_return.dart.strong.expect b/pkg/front_end/testcases/runtime_checks/contravariant_getter_return.dart.strong.expect
index 77f902d..0d39b65 100644
--- a/pkg/front_end/testcases/runtime_checks/contravariant_getter_return.dart.strong.expect
+++ b/pkg/front_end/testcases/runtime_checks/contravariant_getter_return.dart.strong.expect
@@ -12,6 +12,16 @@
   get f2() → core::List<(self::C::T*) →* void>* {
     return <(self::C::T*) →* void>[this.{self::C::f1}];
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method g1(self::C<core::num*>* c) → void {
   (core::num*) →* void x = c.{self::C::f1} as{TypeError,CovarianceCheck} (core::num*) →* void;
diff --git a/pkg/front_end/testcases/runtime_checks/contravariant_getter_return.dart.strong.transformed.expect b/pkg/front_end/testcases/runtime_checks/contravariant_getter_return.dart.strong.transformed.expect
index 77f902d..0d39b65 100644
--- a/pkg/front_end/testcases/runtime_checks/contravariant_getter_return.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/runtime_checks/contravariant_getter_return.dart.strong.transformed.expect
@@ -12,6 +12,16 @@
   get f2() → core::List<(self::C::T*) →* void>* {
     return <(self::C::T*) →* void>[this.{self::C::f1}];
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method g1(self::C<core::num*>* c) → void {
   (core::num*) →* void x = c.{self::C::f1} as{TypeError,CovarianceCheck} (core::num*) →* void;
diff --git a/pkg/front_end/testcases/runtime_checks/contravariant_getter_return_null_aware.dart.outline.expect b/pkg/front_end/testcases/runtime_checks/contravariant_getter_return_null_aware.dart.outline.expect
index 7dbf41e..b0b44a9 100644
--- a/pkg/front_end/testcases/runtime_checks/contravariant_getter_return_null_aware.dart.outline.expect
+++ b/pkg/front_end/testcases/runtime_checks/contravariant_getter_return_null_aware.dart.outline.expect
@@ -10,6 +10,16 @@
     ;
   get f2() → core::List<(self::C::T*) →* void>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method g1(self::C<core::num*>* c) → void
   ;
diff --git a/pkg/front_end/testcases/runtime_checks/contravariant_getter_return_null_aware.dart.strong.expect b/pkg/front_end/testcases/runtime_checks/contravariant_getter_return_null_aware.dart.strong.expect
index 974091e..6e0455b 100644
--- a/pkg/front_end/testcases/runtime_checks/contravariant_getter_return_null_aware.dart.strong.expect
+++ b/pkg/front_end/testcases/runtime_checks/contravariant_getter_return_null_aware.dart.strong.expect
@@ -12,17 +12,27 @@
   get f2() → core::List<(self::C::T*) →* void>* {
     return <(self::C::T*) →* void>[this.{self::C::f1}];
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method g1(self::C<core::num*>* c) → void {
-  (core::num*) →* void x = let final self::C<core::num*>* #t1 = c in #t1.{core::Object::==}(null) ?{(core::num*) →* void} null : #t1.{self::C::f1} as{TypeError,CovarianceCheck} (core::num*) →* void;
+  (core::num*) →* void x = let final self::C<core::num*>* #t1 = c in #t1.{self::C::==}(null) ?{(core::num*) →* void} null : #t1.{self::C::f1} as{TypeError,CovarianceCheck} (core::num*) →* void;
   core::print("hello");
   x.call(1.5);
 }
 static method g2(self::C<core::num*>* c) → void {
-  (core::int*) →* void x = let final self::C<core::num*>* #t2 = c in #t2.{core::Object::==}(null) ?{(core::num*) →* void} null : #t2.{self::C::f1} as{TypeError,CovarianceCheck} (core::num*) →* void;
+  (core::int*) →* void x = let final self::C<core::num*>* #t2 = c in #t2.{self::C::==}(null) ?{(core::num*) →* void} null : #t2.{self::C::f1} as{TypeError,CovarianceCheck} (core::num*) →* void;
   x.call(1);
 }
 static method g3(self::C<core::num*>* c) → void {
-  core::List<(core::num*) →* void>* x = let final self::C<core::num*>* #t3 = c in #t3.{core::Object::==}(null) ?{core::List<(core::num*) →* void>*} null : #t3.{self::C::f2} as{TypeError,CovarianceCheck} core::List<(core::num*) →* void>*;
+  core::List<(core::num*) →* void>* x = let final self::C<core::num*>* #t3 = c in #t3.{self::C::==}(null) ?{core::List<(core::num*) →* void>*} null : #t3.{self::C::f2} as{TypeError,CovarianceCheck} core::List<(core::num*) →* void>*;
 }
 static method main() → void {}
diff --git a/pkg/front_end/testcases/runtime_checks/contravariant_getter_return_null_aware.dart.strong.transformed.expect b/pkg/front_end/testcases/runtime_checks/contravariant_getter_return_null_aware.dart.strong.transformed.expect
index 974091e..6e0455b 100644
--- a/pkg/front_end/testcases/runtime_checks/contravariant_getter_return_null_aware.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/runtime_checks/contravariant_getter_return_null_aware.dart.strong.transformed.expect
@@ -12,17 +12,27 @@
   get f2() → core::List<(self::C::T*) →* void>* {
     return <(self::C::T*) →* void>[this.{self::C::f1}];
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method g1(self::C<core::num*>* c) → void {
-  (core::num*) →* void x = let final self::C<core::num*>* #t1 = c in #t1.{core::Object::==}(null) ?{(core::num*) →* void} null : #t1.{self::C::f1} as{TypeError,CovarianceCheck} (core::num*) →* void;
+  (core::num*) →* void x = let final self::C<core::num*>* #t1 = c in #t1.{self::C::==}(null) ?{(core::num*) →* void} null : #t1.{self::C::f1} as{TypeError,CovarianceCheck} (core::num*) →* void;
   core::print("hello");
   x.call(1.5);
 }
 static method g2(self::C<core::num*>* c) → void {
-  (core::int*) →* void x = let final self::C<core::num*>* #t2 = c in #t2.{core::Object::==}(null) ?{(core::num*) →* void} null : #t2.{self::C::f1} as{TypeError,CovarianceCheck} (core::num*) →* void;
+  (core::int*) →* void x = let final self::C<core::num*>* #t2 = c in #t2.{self::C::==}(null) ?{(core::num*) →* void} null : #t2.{self::C::f1} as{TypeError,CovarianceCheck} (core::num*) →* void;
   x.call(1);
 }
 static method g3(self::C<core::num*>* c) → void {
-  core::List<(core::num*) →* void>* x = let final self::C<core::num*>* #t3 = c in #t3.{core::Object::==}(null) ?{core::List<(core::num*) →* void>*} null : #t3.{self::C::f2} as{TypeError,CovarianceCheck} core::List<(core::num*) →* void>*;
+  core::List<(core::num*) →* void>* x = let final self::C<core::num*>* #t3 = c in #t3.{self::C::==}(null) ?{core::List<(core::num*) →* void>*} null : #t3.{self::C::f2} as{TypeError,CovarianceCheck} core::List<(core::num*) →* void>*;
 }
 static method main() → void {}
diff --git a/pkg/front_end/testcases/runtime_checks/covariant_generic_method_type_parameter.dart.outline.expect b/pkg/front_end/testcases/runtime_checks/covariant_generic_method_type_parameter.dart.outline.expect
index 463d57a..998973e 100644
--- a/pkg/front_end/testcases/runtime_checks/covariant_generic_method_type_parameter.dart.outline.expect
+++ b/pkg/front_end/testcases/runtime_checks/covariant_generic_method_type_parameter.dart.outline.expect
@@ -9,6 +9,16 @@
     ;
   method g1<generic-covariant-impl U extends self::C::T* = self::C::T*>() → void
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method g2(self::C<core::Object*>* c) → void
   ;
diff --git a/pkg/front_end/testcases/runtime_checks/covariant_generic_method_type_parameter.dart.strong.expect b/pkg/front_end/testcases/runtime_checks/covariant_generic_method_type_parameter.dart.strong.expect
index e262b07..b2f7efd 100644
--- a/pkg/front_end/testcases/runtime_checks/covariant_generic_method_type_parameter.dart.strong.expect
+++ b/pkg/front_end/testcases/runtime_checks/covariant_generic_method_type_parameter.dart.strong.expect
@@ -25,6 +25,16 @@
     this.f<U>(1.5);
               ^" in 1.5 as{TypeError} <BottomType>);
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method g2(self::C<core::Object*>* c) → void {
   c.{self::C::f}<core::num*>(1.5);
diff --git a/pkg/front_end/testcases/runtime_checks/covariant_generic_method_type_parameter.dart.strong.transformed.expect b/pkg/front_end/testcases/runtime_checks/covariant_generic_method_type_parameter.dart.strong.transformed.expect
index e262b07..b2f7efd 100644
--- a/pkg/front_end/testcases/runtime_checks/covariant_generic_method_type_parameter.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/runtime_checks/covariant_generic_method_type_parameter.dart.strong.transformed.expect
@@ -25,6 +25,16 @@
     this.f<U>(1.5);
               ^" in 1.5 as{TypeError} <BottomType>);
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method g2(self::C<core::Object*>* c) → void {
   c.{self::C::f}<core::num*>(1.5);
diff --git a/pkg/front_end/testcases/runtime_checks/covariant_generic_parameter.dart.outline.expect b/pkg/front_end/testcases/runtime_checks/covariant_generic_parameter.dart.outline.expect
index 1eca40d..48901c2 100644
--- a/pkg/front_end/testcases/runtime_checks/covariant_generic_parameter.dart.outline.expect
+++ b/pkg/front_end/testcases/runtime_checks/covariant_generic_parameter.dart.outline.expect
@@ -7,6 +7,16 @@
     ;
   method f(generic-covariant-impl self::C::T* x) → void
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method g1(self::C<core::num*>* c) → void
   ;
diff --git a/pkg/front_end/testcases/runtime_checks/covariant_generic_parameter.dart.strong.expect b/pkg/front_end/testcases/runtime_checks/covariant_generic_parameter.dart.strong.expect
index 33acfb5..481d938 100644
--- a/pkg/front_end/testcases/runtime_checks/covariant_generic_parameter.dart.strong.expect
+++ b/pkg/front_end/testcases/runtime_checks/covariant_generic_parameter.dart.strong.expect
@@ -7,6 +7,16 @@
     : super core::Object::•()
     ;
   method f(generic-covariant-impl self::C::T* x) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method g1(self::C<core::num*>* c) → void {
   c.{self::C::f}(1.5);
diff --git a/pkg/front_end/testcases/runtime_checks/covariant_generic_parameter.dart.strong.transformed.expect b/pkg/front_end/testcases/runtime_checks/covariant_generic_parameter.dart.strong.transformed.expect
index 33acfb5..481d938 100644
--- a/pkg/front_end/testcases/runtime_checks/covariant_generic_parameter.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/runtime_checks/covariant_generic_parameter.dart.strong.transformed.expect
@@ -7,6 +7,16 @@
     : super core::Object::•()
     ;
   method f(generic-covariant-impl self::C::T* x) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method g1(self::C<core::num*>* c) → void {
   c.{self::C::f}(1.5);
diff --git a/pkg/front_end/testcases/runtime_checks/covariant_generic_parameter_complex.dart.outline.expect b/pkg/front_end/testcases/runtime_checks/covariant_generic_parameter_complex.dart.outline.expect
index 6c1ddbc..bb4f0e1 100644
--- a/pkg/front_end/testcases/runtime_checks/covariant_generic_parameter_complex.dart.outline.expect
+++ b/pkg/front_end/testcases/runtime_checks/covariant_generic_parameter_complex.dart.outline.expect
@@ -13,6 +13,16 @@
     ;
   method f4((self::C::T*) →* void callback) → void
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method g1(self::C<core::num*>* c, core::List<core::num*>* l) → void
   ;
diff --git a/pkg/front_end/testcases/runtime_checks/covariant_generic_parameter_complex.dart.strong.expect b/pkg/front_end/testcases/runtime_checks/covariant_generic_parameter_complex.dart.strong.expect
index 5a27535..3697f1e 100644
--- a/pkg/front_end/testcases/runtime_checks/covariant_generic_parameter_complex.dart.strong.expect
+++ b/pkg/front_end/testcases/runtime_checks/covariant_generic_parameter_complex.dart.strong.expect
@@ -10,6 +10,16 @@
   method f2(generic-covariant-impl () →* self::C::T* callback) → void {}
   method f3(generic-covariant-impl (self::C::T*) →* self::C::T* callback) → void {}
   method f4((self::C::T*) →* void callback) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method g1(self::C<core::num*>* c, core::List<core::num*>* l) → void {
   c.{self::C::f1}(l);
diff --git a/pkg/front_end/testcases/runtime_checks/covariant_generic_parameter_complex.dart.strong.transformed.expect b/pkg/front_end/testcases/runtime_checks/covariant_generic_parameter_complex.dart.strong.transformed.expect
index 5a27535..3697f1e 100644
--- a/pkg/front_end/testcases/runtime_checks/covariant_generic_parameter_complex.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/runtime_checks/covariant_generic_parameter_complex.dart.strong.transformed.expect
@@ -10,6 +10,16 @@
   method f2(generic-covariant-impl () →* self::C::T* callback) → void {}
   method f3(generic-covariant-impl (self::C::T*) →* self::C::T* callback) → void {}
   method f4((self::C::T*) →* void callback) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method g1(self::C<core::num*>* c, core::List<core::num*>* l) → void {
   c.{self::C::f1}(l);
diff --git a/pkg/front_end/testcases/runtime_checks/covariant_generic_parameter_in_interface.dart.outline.expect b/pkg/front_end/testcases/runtime_checks/covariant_generic_parameter_in_interface.dart.outline.expect
index a5efe71..2f7aac6 100644
--- a/pkg/front_end/testcases/runtime_checks/covariant_generic_parameter_in_interface.dart.outline.expect
+++ b/pkg/front_end/testcases/runtime_checks/covariant_generic_parameter_in_interface.dart.outline.expect
@@ -7,6 +7,16 @@
     ;
   abstract method f1(generic-covariant-impl self::I::T* x) → void;
   abstract method f2(generic-covariant-impl self::I::T* x) → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C<U extends core::Object* = dynamic> extends core::Object implements self::I<core::int*> {
   synthetic constructor •() → self::C<self::C::U*>*
@@ -15,6 +25,16 @@
     ;
   method f2(generic-covariant-impl core::int* x, [generic-covariant-impl self::C::U* y]) → void
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D<U extends core::Object* = dynamic> extends self::C<self::D::U*> {
   synthetic constructor •() → self::D<self::D::U*>*
diff --git a/pkg/front_end/testcases/runtime_checks/covariant_generic_parameter_in_interface.dart.strong.expect b/pkg/front_end/testcases/runtime_checks/covariant_generic_parameter_in_interface.dart.strong.expect
index a8d3af1..f4f304e 100644
--- a/pkg/front_end/testcases/runtime_checks/covariant_generic_parameter_in_interface.dart.strong.expect
+++ b/pkg/front_end/testcases/runtime_checks/covariant_generic_parameter_in_interface.dart.strong.expect
@@ -8,6 +8,16 @@
     ;
   abstract method f1(generic-covariant-impl self::I::T* x) → void;
   abstract method f2(generic-covariant-impl self::I::T* x) → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C<U extends core::Object* = dynamic> extends core::Object implements self::I<core::int*> {
   synthetic constructor •() → self::C<self::C::U*>*
@@ -15,6 +25,16 @@
     ;
   method f1(generic-covariant-impl core::int* x) → void {}
   method f2(generic-covariant-impl core::int* x, [generic-covariant-impl self::C::U* y = #C1]) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D<U extends core::Object* = dynamic> extends self::C<self::D::U*> {
   synthetic constructor •() → self::D<self::D::U*>*
diff --git a/pkg/front_end/testcases/runtime_checks/covariant_generic_parameter_in_interface.dart.strong.transformed.expect b/pkg/front_end/testcases/runtime_checks/covariant_generic_parameter_in_interface.dart.strong.transformed.expect
index a8d3af1..f4f304e 100644
--- a/pkg/front_end/testcases/runtime_checks/covariant_generic_parameter_in_interface.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/runtime_checks/covariant_generic_parameter_in_interface.dart.strong.transformed.expect
@@ -8,6 +8,16 @@
     ;
   abstract method f1(generic-covariant-impl self::I::T* x) → void;
   abstract method f2(generic-covariant-impl self::I::T* x) → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C<U extends core::Object* = dynamic> extends core::Object implements self::I<core::int*> {
   synthetic constructor •() → self::C<self::C::U*>*
@@ -15,6 +25,16 @@
     ;
   method f1(generic-covariant-impl core::int* x) → void {}
   method f2(generic-covariant-impl core::int* x, [generic-covariant-impl self::C::U* y = #C1]) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D<U extends core::Object* = dynamic> extends self::C<self::D::U*> {
   synthetic constructor •() → self::D<self::D::U*>*
diff --git a/pkg/front_end/testcases/runtime_checks/covariant_generic_parameter_in_interface_mixin.dart.outline.expect b/pkg/front_end/testcases/runtime_checks/covariant_generic_parameter_in_interface_mixin.dart.outline.expect
index 96518fb..55414e2 100644
--- a/pkg/front_end/testcases/runtime_checks/covariant_generic_parameter_in_interface_mixin.dart.outline.expect
+++ b/pkg/front_end/testcases/runtime_checks/covariant_generic_parameter_in_interface_mixin.dart.outline.expect
@@ -7,17 +7,47 @@
     ;
   method f(core::int* x) → void
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class I<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::I<self::I::T*>*
     ;
   abstract method f(generic-covariant-impl self::I::T* x) → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class M extends core::Object {
   synthetic constructor •() → self::M*
     ;
   method f(core::int* x) → void
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C = self::B with self::M implements self::I<core::int*> {
   synthetic constructor •() → self::C*
diff --git a/pkg/front_end/testcases/runtime_checks/covariant_generic_parameter_in_interface_mixin.dart.strong.expect b/pkg/front_end/testcases/runtime_checks/covariant_generic_parameter_in_interface_mixin.dart.strong.expect
index 41129c4..ef0d944 100644
--- a/pkg/front_end/testcases/runtime_checks/covariant_generic_parameter_in_interface_mixin.dart.strong.expect
+++ b/pkg/front_end/testcases/runtime_checks/covariant_generic_parameter_in_interface_mixin.dart.strong.expect
@@ -7,18 +7,48 @@
     : super core::Object::•()
     ;
   method f(core::int* x) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class I<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::I<self::I::T*>*
     : super core::Object::•()
     ;
   abstract method f(generic-covariant-impl self::I::T* x) → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class M extends core::Object {
   synthetic constructor •() → self::M*
     : super core::Object::•()
     ;
   method f(core::int* x) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C = self::B with self::M implements self::I<core::int*> {
   synthetic constructor •() → self::C*
diff --git a/pkg/front_end/testcases/runtime_checks/covariant_generic_parameter_in_interface_mixin.dart.strong.transformed.expect b/pkg/front_end/testcases/runtime_checks/covariant_generic_parameter_in_interface_mixin.dart.strong.transformed.expect
index c5806ea..931419f 100644
--- a/pkg/front_end/testcases/runtime_checks/covariant_generic_parameter_in_interface_mixin.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/runtime_checks/covariant_generic_parameter_in_interface_mixin.dart.strong.transformed.expect
@@ -7,24 +7,64 @@
     : super core::Object::•()
     ;
   method f(core::int* x) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class I<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::I<self::I::T*>*
     : super core::Object::•()
     ;
   abstract method f(generic-covariant-impl self::I::T* x) → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class M extends core::Object {
   synthetic constructor •() → self::M*
     : super core::Object::•()
     ;
   method f(core::int* x) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C extends self::B implements self::I<core::int*>, self::M /*isEliminatedMixin*/  {
   synthetic constructor •() → self::C*
     : super self::B::•()
     ;
   method f(generic-covariant-impl core::int* x) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method g1(self::C* c) → void {
   c.{self::C::f}(1);
diff --git a/pkg/front_end/testcases/runtime_checks/covariant_generic_parameter_in_interface_super.dart.outline.expect b/pkg/front_end/testcases/runtime_checks/covariant_generic_parameter_in_interface_super.dart.outline.expect
index 787c4b6..54bef61 100644
--- a/pkg/front_end/testcases/runtime_checks/covariant_generic_parameter_in_interface_super.dart.outline.expect
+++ b/pkg/front_end/testcases/runtime_checks/covariant_generic_parameter_in_interface_super.dart.outline.expect
@@ -7,11 +7,31 @@
     ;
   method f(core::int* x) → void
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class I<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::I<self::I::T*>*
     ;
   abstract method f(generic-covariant-impl self::I::T* x) → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C extends self::B implements self::I<core::int*> {
   synthetic constructor •() → self::C*
diff --git a/pkg/front_end/testcases/runtime_checks/covariant_generic_parameter_in_interface_super.dart.strong.expect b/pkg/front_end/testcases/runtime_checks/covariant_generic_parameter_in_interface_super.dart.strong.expect
index 6ab80f5..4a4ea0e 100644
--- a/pkg/front_end/testcases/runtime_checks/covariant_generic_parameter_in_interface_super.dart.strong.expect
+++ b/pkg/front_end/testcases/runtime_checks/covariant_generic_parameter_in_interface_super.dart.strong.expect
@@ -7,12 +7,32 @@
     : super core::Object::•()
     ;
   method f(core::int* x) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class I<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::I<self::I::T*>*
     : super core::Object::•()
     ;
   abstract method f(generic-covariant-impl self::I::T* x) → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C extends self::B implements self::I<core::int*> {
   synthetic constructor •() → self::C*
diff --git a/pkg/front_end/testcases/runtime_checks/covariant_generic_parameter_in_interface_super.dart.strong.transformed.expect b/pkg/front_end/testcases/runtime_checks/covariant_generic_parameter_in_interface_super.dart.strong.transformed.expect
index 6ab80f5..4a4ea0e 100644
--- a/pkg/front_end/testcases/runtime_checks/covariant_generic_parameter_in_interface_super.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/runtime_checks/covariant_generic_parameter_in_interface_super.dart.strong.transformed.expect
@@ -7,12 +7,32 @@
     : super core::Object::•()
     ;
   method f(core::int* x) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class I<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::I<self::I::T*>*
     : super core::Object::•()
     ;
   abstract method f(generic-covariant-impl self::I::T* x) → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C extends self::B implements self::I<core::int*> {
   synthetic constructor •() → self::C*
diff --git a/pkg/front_end/testcases/runtime_checks/covariant_generic_parameter_in_interface_super_mixin.dart.outline.expect b/pkg/front_end/testcases/runtime_checks/covariant_generic_parameter_in_interface_super_mixin.dart.outline.expect
index 5437b35..a15e9b9 100644
--- a/pkg/front_end/testcases/runtime_checks/covariant_generic_parameter_in_interface_super_mixin.dart.outline.expect
+++ b/pkg/front_end/testcases/runtime_checks/covariant_generic_parameter_in_interface_super_mixin.dart.outline.expect
@@ -7,15 +7,45 @@
     ;
   method f(core::int* x) → void
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class I<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::I<self::I::T*>*
     ;
   abstract method f(generic-covariant-impl self::I::T* x) → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class M extends core::Object {
   synthetic constructor •() → self::M*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C = self::B with self::M implements self::I<core::int*> {
   synthetic constructor •() → self::C*
diff --git a/pkg/front_end/testcases/runtime_checks/covariant_generic_parameter_in_interface_super_mixin.dart.strong.expect b/pkg/front_end/testcases/runtime_checks/covariant_generic_parameter_in_interface_super_mixin.dart.strong.expect
index d3db264..c635e42 100644
--- a/pkg/front_end/testcases/runtime_checks/covariant_generic_parameter_in_interface_super_mixin.dart.strong.expect
+++ b/pkg/front_end/testcases/runtime_checks/covariant_generic_parameter_in_interface_super_mixin.dart.strong.expect
@@ -7,17 +7,47 @@
     : super core::Object::•()
     ;
   method f(core::int* x) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class I<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::I<self::I::T*>*
     : super core::Object::•()
     ;
   abstract method f(generic-covariant-impl self::I::T* x) → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class M extends core::Object {
   synthetic constructor •() → self::M*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C = self::B with self::M implements self::I<core::int*> {
   synthetic constructor •() → self::C*
diff --git a/pkg/front_end/testcases/runtime_checks/covariant_generic_parameter_in_interface_super_mixin.dart.strong.transformed.expect b/pkg/front_end/testcases/runtime_checks/covariant_generic_parameter_in_interface_super_mixin.dart.strong.transformed.expect
index 1816265..a6e0b43 100644
--- a/pkg/front_end/testcases/runtime_checks/covariant_generic_parameter_in_interface_super_mixin.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/runtime_checks/covariant_generic_parameter_in_interface_super_mixin.dart.strong.transformed.expect
@@ -7,17 +7,47 @@
     : super core::Object::•()
     ;
   method f(core::int* x) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class I<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::I<self::I::T*>*
     : super core::Object::•()
     ;
   abstract method f(generic-covariant-impl self::I::T* x) → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class M extends core::Object {
   synthetic constructor •() → self::M*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C extends self::B implements self::I<core::int*>, self::M /*isEliminatedMixin*/  {
   synthetic constructor •() → self::C*
@@ -25,6 +55,16 @@
     ;
   forwarding-stub method f(generic-covariant-impl core::int* x) → void
     return super.{self::B::f}(x);
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method g1(self::C* c) → void {
   c.{self::C::f}(1);
diff --git a/pkg/front_end/testcases/runtime_checks/covariant_generic_parameter_tear_off.dart.outline.expect b/pkg/front_end/testcases/runtime_checks/covariant_generic_parameter_tear_off.dart.outline.expect
index 97dc71c..18d11dc 100644
--- a/pkg/front_end/testcases/runtime_checks/covariant_generic_parameter_tear_off.dart.outline.expect
+++ b/pkg/front_end/testcases/runtime_checks/covariant_generic_parameter_tear_off.dart.outline.expect
@@ -11,6 +11,16 @@
     ;
   method f2(generic-covariant-impl core::List<self::C::T*>* x) → self::C::T*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method g1(self::C<core::num*>* c) → (core::num*) →* void
   ;
diff --git a/pkg/front_end/testcases/runtime_checks/covariant_generic_parameter_tear_off.dart.strong.expect b/pkg/front_end/testcases/runtime_checks/covariant_generic_parameter_tear_off.dart.strong.expect
index eb2c2fb..3f65232 100644
--- a/pkg/front_end/testcases/runtime_checks/covariant_generic_parameter_tear_off.dart.strong.expect
+++ b/pkg/front_end/testcases/runtime_checks/covariant_generic_parameter_tear_off.dart.strong.expect
@@ -11,6 +11,16 @@
   method f1(generic-covariant-impl self::C::T* x) → void {}
   method f2(generic-covariant-impl core::List<self::C::T*>* x) → self::C::T*
     return x.{core::Iterable::first};
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method g1(self::C<core::num*>* c) → (core::num*) →* void {
   return c.{self::C::f1};
diff --git a/pkg/front_end/testcases/runtime_checks/covariant_generic_parameter_tear_off.dart.strong.transformed.expect b/pkg/front_end/testcases/runtime_checks/covariant_generic_parameter_tear_off.dart.strong.transformed.expect
index eb2c2fb..3f65232 100644
--- a/pkg/front_end/testcases/runtime_checks/covariant_generic_parameter_tear_off.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/runtime_checks/covariant_generic_parameter_tear_off.dart.strong.transformed.expect
@@ -11,6 +11,16 @@
   method f1(generic-covariant-impl self::C::T* x) → void {}
   method f2(generic-covariant-impl core::List<self::C::T*>* x) → self::C::T*
     return x.{core::Iterable::first};
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method g1(self::C<core::num*>* c) → (core::num*) →* void {
   return c.{self::C::f1};
diff --git a/pkg/front_end/testcases/runtime_checks/covariant_keyword.dart.outline.expect b/pkg/front_end/testcases/runtime_checks/covariant_keyword.dart.outline.expect
index 015b873..0e8c812 100644
--- a/pkg/front_end/testcases/runtime_checks/covariant_keyword.dart.outline.expect
+++ b/pkg/front_end/testcases/runtime_checks/covariant_keyword.dart.outline.expect
@@ -8,6 +8,16 @@
     ;
   method f(core::num* x) → void
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D extends self::C {
   synthetic constructor •() → self::D*
diff --git a/pkg/front_end/testcases/runtime_checks/covariant_keyword.dart.strong.expect b/pkg/front_end/testcases/runtime_checks/covariant_keyword.dart.strong.expect
index db6c80a..ac0b9ef 100644
--- a/pkg/front_end/testcases/runtime_checks/covariant_keyword.dart.strong.expect
+++ b/pkg/front_end/testcases/runtime_checks/covariant_keyword.dart.strong.expect
@@ -8,6 +8,16 @@
     : super core::Object::•()
     ;
   method f(core::num* x) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D extends self::C {
   synthetic constructor •() → self::D*
diff --git a/pkg/front_end/testcases/runtime_checks/covariant_keyword.dart.strong.transformed.expect b/pkg/front_end/testcases/runtime_checks/covariant_keyword.dart.strong.transformed.expect
index db6c80a..ac0b9ef 100644
--- a/pkg/front_end/testcases/runtime_checks/covariant_keyword.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/runtime_checks/covariant_keyword.dart.strong.transformed.expect
@@ -8,6 +8,16 @@
     : super core::Object::•()
     ;
   method f(core::num* x) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D extends self::C {
   synthetic constructor •() → self::D*
diff --git a/pkg/front_end/testcases/runtime_checks/covariant_keyword_field.dart.outline.expect b/pkg/front_end/testcases/runtime_checks/covariant_keyword_field.dart.outline.expect
index e36612c..3fe9206 100644
--- a/pkg/front_end/testcases/runtime_checks/covariant_keyword_field.dart.outline.expect
+++ b/pkg/front_end/testcases/runtime_checks/covariant_keyword_field.dart.outline.expect
@@ -6,16 +6,46 @@
   field core::num* x;
   synthetic constructor •() → self::C*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D extends core::Object implements self::C {
   covariant field core::int* x;
   synthetic constructor •() → self::D*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class E extends core::Object implements self::D {
   covariant field core::int* x;
   synthetic constructor •() → self::E*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/runtime_checks/covariant_keyword_field.dart.strong.expect b/pkg/front_end/testcases/runtime_checks/covariant_keyword_field.dart.strong.expect
index f40cd15..4ed5c1c 100644
--- a/pkg/front_end/testcases/runtime_checks/covariant_keyword_field.dart.strong.expect
+++ b/pkg/front_end/testcases/runtime_checks/covariant_keyword_field.dart.strong.expect
@@ -7,17 +7,47 @@
   synthetic constructor •() → self::C*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D extends core::Object implements self::C {
   covariant field core::int* x = null;
   synthetic constructor •() → self::D*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class E extends core::Object implements self::D {
   covariant field core::int* x = null;
   synthetic constructor •() → self::E*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/runtime_checks/covariant_keyword_field.dart.strong.transformed.expect b/pkg/front_end/testcases/runtime_checks/covariant_keyword_field.dart.strong.transformed.expect
index f40cd15..4ed5c1c 100644
--- a/pkg/front_end/testcases/runtime_checks/covariant_keyword_field.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/runtime_checks/covariant_keyword_field.dart.strong.transformed.expect
@@ -7,17 +7,47 @@
   synthetic constructor •() → self::C*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D extends core::Object implements self::C {
   covariant field core::int* x = null;
   synthetic constructor •() → self::D*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class E extends core::Object implements self::D {
   covariant field core::int* x = null;
   synthetic constructor •() → self::E*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/runtime_checks/covariant_keyword_field_inherited_by_setter.dart.outline.expect b/pkg/front_end/testcases/runtime_checks/covariant_keyword_field_inherited_by_setter.dart.outline.expect
index b329b9f..ab79dfb 100644
--- a/pkg/front_end/testcases/runtime_checks/covariant_keyword_field_inherited_by_setter.dart.outline.expect
+++ b/pkg/front_end/testcases/runtime_checks/covariant_keyword_field_inherited_by_setter.dart.outline.expect
@@ -6,11 +6,31 @@
   field core::num* x;
   synthetic constructor •() → self::C*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D extends core::Object implements self::C {
   covariant field core::int* x;
   synthetic constructor •() → self::D*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class E extends core::Object implements self::D {
   synthetic constructor •() → self::E*
@@ -19,6 +39,16 @@
     ;
   set x(covariant core::int* value) → void
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/runtime_checks/covariant_keyword_field_inherited_by_setter.dart.strong.expect b/pkg/front_end/testcases/runtime_checks/covariant_keyword_field_inherited_by_setter.dart.strong.expect
index 9adfddf..39fff6e 100644
--- a/pkg/front_end/testcases/runtime_checks/covariant_keyword_field_inherited_by_setter.dart.strong.expect
+++ b/pkg/front_end/testcases/runtime_checks/covariant_keyword_field_inherited_by_setter.dart.strong.expect
@@ -7,12 +7,32 @@
   synthetic constructor •() → self::C*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D extends core::Object implements self::C {
   covariant field core::int* x = null;
   synthetic constructor •() → self::D*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class E extends core::Object implements self::D {
   synthetic constructor •() → self::E*
@@ -21,5 +41,15 @@
   get x() → core::int*
     return 0;
   set x(covariant core::int* value) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/runtime_checks/covariant_keyword_field_inherited_by_setter.dart.strong.transformed.expect b/pkg/front_end/testcases/runtime_checks/covariant_keyword_field_inherited_by_setter.dart.strong.transformed.expect
index 9adfddf..39fff6e 100644
--- a/pkg/front_end/testcases/runtime_checks/covariant_keyword_field_inherited_by_setter.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/runtime_checks/covariant_keyword_field_inherited_by_setter.dart.strong.transformed.expect
@@ -7,12 +7,32 @@
   synthetic constructor •() → self::C*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D extends core::Object implements self::C {
   covariant field core::int* x = null;
   synthetic constructor •() → self::D*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class E extends core::Object implements self::D {
   synthetic constructor •() → self::E*
@@ -21,5 +41,15 @@
   get x() → core::int*
     return 0;
   set x(covariant core::int* value) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/runtime_checks/covariant_keyword_setter.dart.outline.expect b/pkg/front_end/testcases/runtime_checks/covariant_keyword_setter.dart.outline.expect
index 0de5729..1fb05a6 100644
--- a/pkg/front_end/testcases/runtime_checks/covariant_keyword_setter.dart.outline.expect
+++ b/pkg/front_end/testcases/runtime_checks/covariant_keyword_setter.dart.outline.expect
@@ -7,6 +7,16 @@
     ;
   set x(core::num* value) → void
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D extends self::C {
   synthetic constructor •() → self::D*
diff --git a/pkg/front_end/testcases/runtime_checks/covariant_keyword_setter.dart.strong.expect b/pkg/front_end/testcases/runtime_checks/covariant_keyword_setter.dart.strong.expect
index ecb8eb5..6b82b63 100644
--- a/pkg/front_end/testcases/runtime_checks/covariant_keyword_setter.dart.strong.expect
+++ b/pkg/front_end/testcases/runtime_checks/covariant_keyword_setter.dart.strong.expect
@@ -7,6 +7,16 @@
     : super core::Object::•()
     ;
   set x(core::num* value) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D extends self::C {
   synthetic constructor •() → self::D*
diff --git a/pkg/front_end/testcases/runtime_checks/covariant_keyword_setter.dart.strong.transformed.expect b/pkg/front_end/testcases/runtime_checks/covariant_keyword_setter.dart.strong.transformed.expect
index ecb8eb5..6b82b63 100644
--- a/pkg/front_end/testcases/runtime_checks/covariant_keyword_setter.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/runtime_checks/covariant_keyword_setter.dart.strong.transformed.expect
@@ -7,6 +7,16 @@
     : super core::Object::•()
     ;
   set x(core::num* value) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D extends self::C {
   synthetic constructor •() → self::D*
diff --git a/pkg/front_end/testcases/runtime_checks/covariant_keyword_setter_inherited_by_field.dart.outline.expect b/pkg/front_end/testcases/runtime_checks/covariant_keyword_setter_inherited_by_field.dart.outline.expect
index a0800d2..25df5f2 100644
--- a/pkg/front_end/testcases/runtime_checks/covariant_keyword_setter_inherited_by_field.dart.outline.expect
+++ b/pkg/front_end/testcases/runtime_checks/covariant_keyword_setter_inherited_by_field.dart.outline.expect
@@ -7,6 +7,16 @@
     ;
   set x(core::num* value) → void
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D extends self::C {
   synthetic constructor •() → self::D*
@@ -18,6 +28,16 @@
   covariant field core::int* x;
   synthetic constructor •() → self::E*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/runtime_checks/covariant_keyword_setter_inherited_by_field.dart.strong.expect b/pkg/front_end/testcases/runtime_checks/covariant_keyword_setter_inherited_by_field.dart.strong.expect
index 56cba3c..3ae9c49 100644
--- a/pkg/front_end/testcases/runtime_checks/covariant_keyword_setter_inherited_by_field.dart.strong.expect
+++ b/pkg/front_end/testcases/runtime_checks/covariant_keyword_setter_inherited_by_field.dart.strong.expect
@@ -7,6 +7,16 @@
     : super core::Object::•()
     ;
   set x(core::num* value) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D extends self::C {
   synthetic constructor •() → self::D*
@@ -19,5 +29,15 @@
   synthetic constructor •() → self::E*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/runtime_checks/covariant_keyword_setter_inherited_by_field.dart.strong.transformed.expect b/pkg/front_end/testcases/runtime_checks/covariant_keyword_setter_inherited_by_field.dart.strong.transformed.expect
index 56cba3c..3ae9c49 100644
--- a/pkg/front_end/testcases/runtime_checks/covariant_keyword_setter_inherited_by_field.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/runtime_checks/covariant_keyword_setter_inherited_by_field.dart.strong.transformed.expect
@@ -7,6 +7,16 @@
     : super core::Object::•()
     ;
   set x(core::num* value) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D extends self::C {
   synthetic constructor •() → self::D*
@@ -19,5 +29,15 @@
   synthetic constructor •() → self::E*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/runtime_checks/covariant_setter.dart.outline.expect b/pkg/front_end/testcases/runtime_checks/covariant_setter.dart.outline.expect
index f94fe8d..86699dc 100644
--- a/pkg/front_end/testcases/runtime_checks/covariant_setter.dart.outline.expect
+++ b/pkg/front_end/testcases/runtime_checks/covariant_setter.dart.outline.expect
@@ -11,6 +11,16 @@
     ;
   method f(generic-covariant-impl self::C::T* value) → void
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method g(self::C<core::num*>* c) → void
   ;
diff --git a/pkg/front_end/testcases/runtime_checks/covariant_setter.dart.strong.expect b/pkg/front_end/testcases/runtime_checks/covariant_setter.dart.strong.expect
index 60677cd..1ba5f18 100644
--- a/pkg/front_end/testcases/runtime_checks/covariant_setter.dart.strong.expect
+++ b/pkg/front_end/testcases/runtime_checks/covariant_setter.dart.strong.expect
@@ -13,6 +13,16 @@
     this.{self::C::x} = value;
     this.{self::C::y} = value;
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method g(self::C<core::num*>* c) → void {
   c.{self::C::x} = 1.5;
diff --git a/pkg/front_end/testcases/runtime_checks/covariant_setter.dart.strong.transformed.expect b/pkg/front_end/testcases/runtime_checks/covariant_setter.dart.strong.transformed.expect
index 60677cd..1ba5f18 100644
--- a/pkg/front_end/testcases/runtime_checks/covariant_setter.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/runtime_checks/covariant_setter.dart.strong.transformed.expect
@@ -13,6 +13,16 @@
     this.{self::C::x} = value;
     this.{self::C::y} = value;
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method g(self::C<core::num*>* c) → void {
   c.{self::C::x} = 1.5;
diff --git a/pkg/front_end/testcases/runtime_checks/dynamic_invocation.dart.outline.expect b/pkg/front_end/testcases/runtime_checks/dynamic_invocation.dart.outline.expect
index f9f6fb7..2fe8268 100644
--- a/pkg/front_end/testcases/runtime_checks/dynamic_invocation.dart.outline.expect
+++ b/pkg/front_end/testcases/runtime_checks/dynamic_invocation.dart.outline.expect
@@ -9,6 +9,16 @@
     ;
   method f2(core::int* x) → void
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D extends self::C<core::num*> {
   synthetic constructor •() → self::D*
diff --git a/pkg/front_end/testcases/runtime_checks/dynamic_invocation.dart.strong.expect b/pkg/front_end/testcases/runtime_checks/dynamic_invocation.dart.strong.expect
index 764de18..8706053 100644
--- a/pkg/front_end/testcases/runtime_checks/dynamic_invocation.dart.strong.expect
+++ b/pkg/front_end/testcases/runtime_checks/dynamic_invocation.dart.strong.expect
@@ -8,6 +8,16 @@
     ;
   method f1(generic-covariant-impl self::C::T* x) → void {}
   method f2(core::int* x) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D extends self::C<core::num*> {
   synthetic constructor •() → self::D*
diff --git a/pkg/front_end/testcases/runtime_checks/dynamic_invocation.dart.strong.transformed.expect b/pkg/front_end/testcases/runtime_checks/dynamic_invocation.dart.strong.transformed.expect
index 764de18..8706053 100644
--- a/pkg/front_end/testcases/runtime_checks/dynamic_invocation.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/runtime_checks/dynamic_invocation.dart.strong.transformed.expect
@@ -8,6 +8,16 @@
     ;
   method f1(generic-covariant-impl self::C::T* x) → void {}
   method f2(core::int* x) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D extends self::C<core::num*> {
   synthetic constructor •() → self::D*
diff --git a/pkg/front_end/testcases/runtime_checks/dynamic_invocation_generic.dart.outline.expect b/pkg/front_end/testcases/runtime_checks/dynamic_invocation_generic.dart.outline.expect
index a30e2aa..dd595db 100644
--- a/pkg/front_end/testcases/runtime_checks/dynamic_invocation_generic.dart.outline.expect
+++ b/pkg/front_end/testcases/runtime_checks/dynamic_invocation_generic.dart.outline.expect
@@ -7,6 +7,16 @@
     ;
   method f<generic-covariant-impl U extends self::C::T* = self::C::T*>(self::C::f::U* x) → void
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method g1(dynamic d) → void
   ;
diff --git a/pkg/front_end/testcases/runtime_checks/dynamic_invocation_generic.dart.strong.expect b/pkg/front_end/testcases/runtime_checks/dynamic_invocation_generic.dart.strong.expect
index e10d3a6..45accb5 100644
--- a/pkg/front_end/testcases/runtime_checks/dynamic_invocation_generic.dart.strong.expect
+++ b/pkg/front_end/testcases/runtime_checks/dynamic_invocation_generic.dart.strong.expect
@@ -7,6 +7,16 @@
     : super core::Object::•()
     ;
   method f<generic-covariant-impl U extends self::C::T* = self::C::T*>(self::C::f::U* x) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method g1(dynamic d) → void {
   d.f<core::num*>(1.5);
diff --git a/pkg/front_end/testcases/runtime_checks/dynamic_invocation_generic.dart.strong.transformed.expect b/pkg/front_end/testcases/runtime_checks/dynamic_invocation_generic.dart.strong.transformed.expect
index e10d3a6..45accb5 100644
--- a/pkg/front_end/testcases/runtime_checks/dynamic_invocation_generic.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/runtime_checks/dynamic_invocation_generic.dart.strong.transformed.expect
@@ -7,6 +7,16 @@
     : super core::Object::•()
     ;
   method f<generic-covariant-impl U extends self::C::T* = self::C::T*>(self::C::f::U* x) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method g1(dynamic d) → void {
   d.f<core::num*>(1.5);
diff --git a/pkg/front_end/testcases/runtime_checks/dynamic_invocation_of_getter.dart.outline.expect b/pkg/front_end/testcases/runtime_checks/dynamic_invocation_of_getter.dart.outline.expect
index 8cb9905..b2423714 100644
--- a/pkg/front_end/testcases/runtime_checks/dynamic_invocation_of_getter.dart.outline.expect
+++ b/pkg/front_end/testcases/runtime_checks/dynamic_invocation_of_getter.dart.outline.expect
@@ -6,6 +6,16 @@
   field dynamic f;
   constructor •(dynamic f) → self::C*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method g(self::C* c) → void
   ;
diff --git a/pkg/front_end/testcases/runtime_checks/dynamic_invocation_of_getter.dart.strong.expect b/pkg/front_end/testcases/runtime_checks/dynamic_invocation_of_getter.dart.strong.expect
index d65798b..e8aa7c5 100644
--- a/pkg/front_end/testcases/runtime_checks/dynamic_invocation_of_getter.dart.strong.expect
+++ b/pkg/front_end/testcases/runtime_checks/dynamic_invocation_of_getter.dart.strong.expect
@@ -7,6 +7,16 @@
   constructor •(dynamic f) → self::C*
     : self::C::f = f, super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method g(self::C* c) → void {
   let final self::C* #t1 = c in let final core::double* #t2 = 1.5 in #t1.{self::C::f}.call(#t2);
diff --git a/pkg/front_end/testcases/runtime_checks/dynamic_invocation_of_getter.dart.strong.transformed.expect b/pkg/front_end/testcases/runtime_checks/dynamic_invocation_of_getter.dart.strong.transformed.expect
index d65798b..e8aa7c5 100644
--- a/pkg/front_end/testcases/runtime_checks/dynamic_invocation_of_getter.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/runtime_checks/dynamic_invocation_of_getter.dart.strong.transformed.expect
@@ -7,6 +7,16 @@
   constructor •(dynamic f) → self::C*
     : self::C::f = f, super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method g(self::C* c) → void {
   let final self::C* #t1 = c in let final core::double* #t2 = 1.5 in #t1.{self::C::f}.call(#t2);
diff --git a/pkg/front_end/testcases/runtime_checks/field_forwarding_stub_generic_covariant.dart.outline.expect b/pkg/front_end/testcases/runtime_checks/field_forwarding_stub_generic_covariant.dart.outline.expect
index c0fc717..27628a1 100644
--- a/pkg/front_end/testcases/runtime_checks/field_forwarding_stub_generic_covariant.dart.outline.expect
+++ b/pkg/front_end/testcases/runtime_checks/field_forwarding_stub_generic_covariant.dart.outline.expect
@@ -6,11 +6,31 @@
   generic-covariant-impl field self::B::T* x;
   synthetic constructor •() → self::B<self::B::T*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C extends core::Object {
   field core::num* x;
   synthetic constructor •() → self::C*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D extends self::C implements self::B<core::num*> {
   synthetic constructor •() → self::D*
diff --git a/pkg/front_end/testcases/runtime_checks/field_forwarding_stub_generic_covariant.dart.strong.expect b/pkg/front_end/testcases/runtime_checks/field_forwarding_stub_generic_covariant.dart.strong.expect
index c6b72a6..161e48a 100644
--- a/pkg/front_end/testcases/runtime_checks/field_forwarding_stub_generic_covariant.dart.strong.expect
+++ b/pkg/front_end/testcases/runtime_checks/field_forwarding_stub_generic_covariant.dart.strong.expect
@@ -7,12 +7,32 @@
   synthetic constructor •() → self::B<self::B::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C extends core::Object {
   field core::num* x = null;
   synthetic constructor •() → self::C*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D extends self::C implements self::B<core::num*> {
   synthetic constructor •() → self::D*
diff --git a/pkg/front_end/testcases/runtime_checks/field_forwarding_stub_generic_covariant.dart.strong.transformed.expect b/pkg/front_end/testcases/runtime_checks/field_forwarding_stub_generic_covariant.dart.strong.transformed.expect
index c6b72a6..161e48a 100644
--- a/pkg/front_end/testcases/runtime_checks/field_forwarding_stub_generic_covariant.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/runtime_checks/field_forwarding_stub_generic_covariant.dart.strong.transformed.expect
@@ -7,12 +7,32 @@
   synthetic constructor •() → self::B<self::B::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C extends core::Object {
   field core::num* x = null;
   synthetic constructor •() → self::C*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D extends self::C implements self::B<core::num*> {
   synthetic constructor •() → self::D*
diff --git a/pkg/front_end/testcases/runtime_checks/forwarding_stub_with_default_values.dart.outline.expect b/pkg/front_end/testcases/runtime_checks/forwarding_stub_with_default_values.dart.outline.expect
index dbb26c4..5e66a90 100644
--- a/pkg/front_end/testcases/runtime_checks/forwarding_stub_with_default_values.dart.outline.expect
+++ b/pkg/front_end/testcases/runtime_checks/forwarding_stub_with_default_values.dart.outline.expect
@@ -12,12 +12,32 @@
     ;
   method check(core::Object* expectedValue) → void
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class I<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::I<self::I::T*>*
     ;
   abstract method f([generic-covariant-impl self::I::T* x]) → void;
   abstract method g({generic-covariant-impl self::I::T* x}) → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C extends self::B implements self::I<core::num*> {
   synthetic constructor •() → self::C*
diff --git a/pkg/front_end/testcases/runtime_checks/forwarding_stub_with_default_values.dart.strong.expect b/pkg/front_end/testcases/runtime_checks/forwarding_stub_with_default_values.dart.strong.expect
index 66ee36e..db7415e 100644
--- a/pkg/front_end/testcases/runtime_checks/forwarding_stub_with_default_values.dart.strong.expect
+++ b/pkg/front_end/testcases/runtime_checks/forwarding_stub_with_default_values.dart.strong.expect
@@ -18,6 +18,16 @@
       throw "Expected _x == ${expectedValue}; got ${this.{self::B::_x}}";
     }
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class I<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::I<self::I::T*>*
@@ -25,6 +35,16 @@
     ;
   abstract method f([generic-covariant-impl self::I::T* x = #C3]) → void;
   abstract method g({generic-covariant-impl self::I::T* x = #C3}) → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C extends self::B implements self::I<core::num*> {
   synthetic constructor •() → self::C*
diff --git a/pkg/front_end/testcases/runtime_checks/forwarding_stub_with_default_values.dart.strong.transformed.expect b/pkg/front_end/testcases/runtime_checks/forwarding_stub_with_default_values.dart.strong.transformed.expect
index 66ee36e..db7415e 100644
--- a/pkg/front_end/testcases/runtime_checks/forwarding_stub_with_default_values.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/runtime_checks/forwarding_stub_with_default_values.dart.strong.transformed.expect
@@ -18,6 +18,16 @@
       throw "Expected _x == ${expectedValue}; got ${this.{self::B::_x}}";
     }
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class I<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::I<self::I::T*>*
@@ -25,6 +35,16 @@
     ;
   abstract method f([generic-covariant-impl self::I::T* x = #C3]) → void;
   abstract method g({generic-covariant-impl self::I::T* x = #C3}) → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C extends self::B implements self::I<core::num*> {
   synthetic constructor •() → self::C*
diff --git a/pkg/front_end/testcases/runtime_checks/forwarding_stub_with_non_covariant_param.dart.outline.expect b/pkg/front_end/testcases/runtime_checks/forwarding_stub_with_non_covariant_param.dart.outline.expect
index d246713..5af423e 100644
--- a/pkg/front_end/testcases/runtime_checks/forwarding_stub_with_non_covariant_param.dart.outline.expect
+++ b/pkg/front_end/testcases/runtime_checks/forwarding_stub_with_non_covariant_param.dart.outline.expect
@@ -7,11 +7,31 @@
     ;
   method f(core::int* x, core::int* y) → void
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class I<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::I<self::I::T*>*
     ;
   abstract method f(generic-covariant-impl self::I::T* x, core::int* y) → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C extends self::B implements self::I<core::int*> {
   synthetic constructor •() → self::C*
diff --git a/pkg/front_end/testcases/runtime_checks/forwarding_stub_with_non_covariant_param.dart.strong.expect b/pkg/front_end/testcases/runtime_checks/forwarding_stub_with_non_covariant_param.dart.strong.expect
index 38a7f20..542dba0 100644
--- a/pkg/front_end/testcases/runtime_checks/forwarding_stub_with_non_covariant_param.dart.strong.expect
+++ b/pkg/front_end/testcases/runtime_checks/forwarding_stub_with_non_covariant_param.dart.strong.expect
@@ -7,12 +7,32 @@
     : super core::Object::•()
     ;
   method f(core::int* x, core::int* y) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class I<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::I<self::I::T*>*
     : super core::Object::•()
     ;
   abstract method f(generic-covariant-impl self::I::T* x, core::int* y) → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C extends self::B implements self::I<core::int*> {
   synthetic constructor •() → self::C*
diff --git a/pkg/front_end/testcases/runtime_checks/forwarding_stub_with_non_covariant_param.dart.strong.transformed.expect b/pkg/front_end/testcases/runtime_checks/forwarding_stub_with_non_covariant_param.dart.strong.transformed.expect
index 38a7f20..542dba0 100644
--- a/pkg/front_end/testcases/runtime_checks/forwarding_stub_with_non_covariant_param.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/runtime_checks/forwarding_stub_with_non_covariant_param.dart.strong.transformed.expect
@@ -7,12 +7,32 @@
     : super core::Object::•()
     ;
   method f(core::int* x, core::int* y) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class I<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::I<self::I::T*>*
     : super core::Object::•()
     ;
   abstract method f(generic-covariant-impl self::I::T* x, core::int* y) → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C extends self::B implements self::I<core::int*> {
   synthetic constructor •() → self::C*
diff --git a/pkg/front_end/testcases/runtime_checks/generic_covariance_inheritance_setter_field.dart.outline.expect b/pkg/front_end/testcases/runtime_checks/generic_covariance_inheritance_setter_field.dart.outline.expect
index 85f9256..2f8636c 100644
--- a/pkg/front_end/testcases/runtime_checks/generic_covariance_inheritance_setter_field.dart.outline.expect
+++ b/pkg/front_end/testcases/runtime_checks/generic_covariance_inheritance_setter_field.dart.outline.expect
@@ -8,12 +8,32 @@
     ;
   set x(generic-covariant-impl self::C::T* t) → void
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D extends core::Object implements self::C<core::num*> {
   generic-covariant-impl field core::num* x;
   generic-covariant-impl field core::num* y;
   synthetic constructor •() → self::D*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class E extends core::Object implements self::C<core::num*> {
   synthetic constructor •() → self::E*
@@ -24,6 +44,16 @@
     ;
   set y(generic-covariant-impl core::num* t) → void
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → void
   ;
diff --git a/pkg/front_end/testcases/runtime_checks/generic_covariance_inheritance_setter_field.dart.strong.expect b/pkg/front_end/testcases/runtime_checks/generic_covariance_inheritance_setter_field.dart.strong.expect
index d003b4d..90409ee 100644
--- a/pkg/front_end/testcases/runtime_checks/generic_covariance_inheritance_setter_field.dart.strong.expect
+++ b/pkg/front_end/testcases/runtime_checks/generic_covariance_inheritance_setter_field.dart.strong.expect
@@ -8,6 +8,16 @@
     : super core::Object::•()
     ;
   set x(generic-covariant-impl self::C::T* t) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D extends core::Object implements self::C<core::num*> {
   generic-covariant-impl field core::num* x = null;
@@ -15,6 +25,16 @@
   synthetic constructor •() → self::D*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class E extends core::Object implements self::C<core::num*> {
   synthetic constructor •() → self::E*
@@ -24,5 +44,15 @@
   get y() → core::num*
     return null;
   set y(generic-covariant-impl core::num* t) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → void {}
diff --git a/pkg/front_end/testcases/runtime_checks/generic_covariance_inheritance_setter_field.dart.strong.transformed.expect b/pkg/front_end/testcases/runtime_checks/generic_covariance_inheritance_setter_field.dart.strong.transformed.expect
index d003b4d..90409ee 100644
--- a/pkg/front_end/testcases/runtime_checks/generic_covariance_inheritance_setter_field.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/runtime_checks/generic_covariance_inheritance_setter_field.dart.strong.transformed.expect
@@ -8,6 +8,16 @@
     : super core::Object::•()
     ;
   set x(generic-covariant-impl self::C::T* t) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D extends core::Object implements self::C<core::num*> {
   generic-covariant-impl field core::num* x = null;
@@ -15,6 +25,16 @@
   synthetic constructor •() → self::D*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class E extends core::Object implements self::C<core::num*> {
   synthetic constructor •() → self::E*
@@ -24,5 +44,15 @@
   get y() → core::num*
     return null;
   set y(generic-covariant-impl core::num* t) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → void {}
diff --git a/pkg/front_end/testcases/runtime_checks/generic_vs_explicit_covariance.dart.outline.expect b/pkg/front_end/testcases/runtime_checks/generic_vs_explicit_covariance.dart.outline.expect
index 16f729e..335736c 100644
--- a/pkg/front_end/testcases/runtime_checks/generic_vs_explicit_covariance.dart.outline.expect
+++ b/pkg/front_end/testcases/runtime_checks/generic_vs_explicit_covariance.dart.outline.expect
@@ -6,6 +6,16 @@
   synthetic constructor •() → self::A*
     ;
   abstract set x(covariant core::Object* value) → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends core::Object implements self::A {
   covariant field core::Object* x;
@@ -13,6 +23,16 @@
     ;
   method f(covariant core::Object* x) → void
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C<T extends core::Object* = dynamic> extends core::Object implements self::B {
   covariant generic-covariant-impl field self::C::T* x;
@@ -20,6 +40,16 @@
     ;
   method f(covariant generic-covariant-impl self::C::T* x) → void
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/runtime_checks/generic_vs_explicit_covariance.dart.strong.expect b/pkg/front_end/testcases/runtime_checks/generic_vs_explicit_covariance.dart.strong.expect
index a2deda6..fcab904 100644
--- a/pkg/front_end/testcases/runtime_checks/generic_vs_explicit_covariance.dart.strong.expect
+++ b/pkg/front_end/testcases/runtime_checks/generic_vs_explicit_covariance.dart.strong.expect
@@ -7,6 +7,16 @@
     : super core::Object::•()
     ;
   abstract set x(covariant core::Object* value) → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends core::Object implements self::A {
   covariant field core::Object* x = null;
@@ -14,6 +24,16 @@
     : super core::Object::•()
     ;
   method f(covariant core::Object* x) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C<T extends core::Object* = dynamic> extends core::Object implements self::B {
   covariant generic-covariant-impl field self::C::T* x = null;
@@ -21,5 +41,15 @@
     : super core::Object::•()
     ;
   method f(covariant generic-covariant-impl self::C::T* x) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/runtime_checks/generic_vs_explicit_covariance.dart.strong.transformed.expect b/pkg/front_end/testcases/runtime_checks/generic_vs_explicit_covariance.dart.strong.transformed.expect
index a2deda6..fcab904 100644
--- a/pkg/front_end/testcases/runtime_checks/generic_vs_explicit_covariance.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/runtime_checks/generic_vs_explicit_covariance.dart.strong.transformed.expect
@@ -7,6 +7,16 @@
     : super core::Object::•()
     ;
   abstract set x(covariant core::Object* value) → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B extends core::Object implements self::A {
   covariant field core::Object* x = null;
@@ -14,6 +24,16 @@
     : super core::Object::•()
     ;
   method f(covariant core::Object* x) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C<T extends core::Object* = dynamic> extends core::Object implements self::B {
   covariant generic-covariant-impl field self::C::T* x = null;
@@ -21,5 +41,15 @@
     : super core::Object::•()
     ;
   method f(covariant generic-covariant-impl self::C::T* x) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/runtime_checks/implicit_downcast_assert_initializer.dart.outline.expect b/pkg/front_end/testcases/runtime_checks/implicit_downcast_assert_initializer.dart.outline.expect
index a0650ea..d585fc0 100644
--- a/pkg/front_end/testcases/runtime_checks/implicit_downcast_assert_initializer.dart.outline.expect
+++ b/pkg/front_end/testcases/runtime_checks/implicit_downcast_assert_initializer.dart.outline.expect
@@ -5,6 +5,16 @@
 class C extends core::Object {
   constructor •(core::Object* o) → self::C*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/runtime_checks/implicit_downcast_assert_initializer.dart.strong.expect b/pkg/front_end/testcases/runtime_checks/implicit_downcast_assert_initializer.dart.strong.expect
index 406e636..6ca8c57 100644
--- a/pkg/front_end/testcases/runtime_checks/implicit_downcast_assert_initializer.dart.strong.expect
+++ b/pkg/front_end/testcases/runtime_checks/implicit_downcast_assert_initializer.dart.strong.expect
@@ -6,6 +6,16 @@
   constructor •(core::Object* o) → self::C*
     : assert(o as{TypeError} core::bool*), super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   core::Object* o = 1;
diff --git a/pkg/front_end/testcases/runtime_checks/implicit_downcast_assert_initializer.dart.strong.transformed.expect b/pkg/front_end/testcases/runtime_checks/implicit_downcast_assert_initializer.dart.strong.transformed.expect
index 406e636..6ca8c57 100644
--- a/pkg/front_end/testcases/runtime_checks/implicit_downcast_assert_initializer.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/runtime_checks/implicit_downcast_assert_initializer.dart.strong.transformed.expect
@@ -6,6 +6,16 @@
   constructor •(core::Object* o) → self::C*
     : assert(o as{TypeError} core::bool*), super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   core::Object* o = 1;
diff --git a/pkg/front_end/testcases/runtime_checks/implicit_downcast_constructor_initializer.dart.outline.expect b/pkg/front_end/testcases/runtime_checks/implicit_downcast_constructor_initializer.dart.outline.expect
index 5824cc2..fbd586e 100644
--- a/pkg/front_end/testcases/runtime_checks/implicit_downcast_constructor_initializer.dart.outline.expect
+++ b/pkg/front_end/testcases/runtime_checks/implicit_downcast_constructor_initializer.dart.outline.expect
@@ -6,6 +6,16 @@
   field core::bool* b;
   constructor •(core::Object* o) → self::C*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/runtime_checks/implicit_downcast_constructor_initializer.dart.strong.expect b/pkg/front_end/testcases/runtime_checks/implicit_downcast_constructor_initializer.dart.strong.expect
index d1fac5e..3e67500 100644
--- a/pkg/front_end/testcases/runtime_checks/implicit_downcast_constructor_initializer.dart.strong.expect
+++ b/pkg/front_end/testcases/runtime_checks/implicit_downcast_constructor_initializer.dart.strong.expect
@@ -7,6 +7,16 @@
   constructor •(core::Object* o) → self::C*
     : self::C::b = o as{TypeError} core::bool*, super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   core::Object* o = 1;
diff --git a/pkg/front_end/testcases/runtime_checks/implicit_downcast_constructor_initializer.dart.strong.transformed.expect b/pkg/front_end/testcases/runtime_checks/implicit_downcast_constructor_initializer.dart.strong.transformed.expect
index d1fac5e..3e67500 100644
--- a/pkg/front_end/testcases/runtime_checks/implicit_downcast_constructor_initializer.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/runtime_checks/implicit_downcast_constructor_initializer.dart.strong.transformed.expect
@@ -7,6 +7,16 @@
   constructor •(core::Object* o) → self::C*
     : self::C::b = o as{TypeError} core::bool*, super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   core::Object* o = 1;
diff --git a/pkg/front_end/testcases/runtime_checks_new/abstract_override_becomes_forwarding_stub.dart.outline.expect b/pkg/front_end/testcases/runtime_checks_new/abstract_override_becomes_forwarding_stub.dart.outline.expect
index 1f230f5..14a6abe 100644
--- a/pkg/front_end/testcases/runtime_checks_new/abstract_override_becomes_forwarding_stub.dart.outline.expect
+++ b/pkg/front_end/testcases/runtime_checks_new/abstract_override_becomes_forwarding_stub.dart.outline.expect
@@ -7,11 +7,31 @@
     ;
   method f(core::num* x) → void
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class I<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::I<self::I::T*>*
     ;
   abstract method f(generic-covariant-impl self::I::T* x) → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C extends self::B implements self::I<core::num*> {
   synthetic constructor •() → self::C*
diff --git a/pkg/front_end/testcases/runtime_checks_new/abstract_override_becomes_forwarding_stub.dart.strong.expect b/pkg/front_end/testcases/runtime_checks_new/abstract_override_becomes_forwarding_stub.dart.strong.expect
index d6e919e..09f2ed1 100644
--- a/pkg/front_end/testcases/runtime_checks_new/abstract_override_becomes_forwarding_stub.dart.strong.expect
+++ b/pkg/front_end/testcases/runtime_checks_new/abstract_override_becomes_forwarding_stub.dart.strong.expect
@@ -7,12 +7,32 @@
     : super core::Object::•()
     ;
   method f(core::num* x) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class I<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::I<self::I::T*>*
     : super core::Object::•()
     ;
   abstract method f(generic-covariant-impl self::I::T* x) → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C extends self::B implements self::I<core::num*> {
   synthetic constructor •() → self::C*
diff --git a/pkg/front_end/testcases/runtime_checks_new/abstract_override_becomes_forwarding_stub.dart.strong.transformed.expect b/pkg/front_end/testcases/runtime_checks_new/abstract_override_becomes_forwarding_stub.dart.strong.transformed.expect
index d6e919e..09f2ed1 100644
--- a/pkg/front_end/testcases/runtime_checks_new/abstract_override_becomes_forwarding_stub.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/runtime_checks_new/abstract_override_becomes_forwarding_stub.dart.strong.transformed.expect
@@ -7,12 +7,32 @@
     : super core::Object::•()
     ;
   method f(core::num* x) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class I<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::I<self::I::T*>*
     : super core::Object::•()
     ;
   abstract method f(generic-covariant-impl self::I::T* x) → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C extends self::B implements self::I<core::num*> {
   synthetic constructor •() → self::C*
diff --git a/pkg/front_end/testcases/runtime_checks_new/call_through_this.dart.outline.expect b/pkg/front_end/testcases/runtime_checks_new/call_through_this.dart.outline.expect
index a300d04..f7ecf71 100644
--- a/pkg/front_end/testcases/runtime_checks_new/call_through_this.dart.outline.expect
+++ b/pkg/front_end/testcases/runtime_checks_new/call_through_this.dart.outline.expect
@@ -16,6 +16,16 @@
     ;
   method g4() → (self::C::T*) →* dynamic
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D extends self::C<core::int*> {
   synthetic constructor •() → self::D*
diff --git a/pkg/front_end/testcases/runtime_checks_new/call_through_this.dart.strong.expect b/pkg/front_end/testcases/runtime_checks_new/call_through_this.dart.strong.expect
index 61cd6f8e1..30b1004 100644
--- a/pkg/front_end/testcases/runtime_checks_new/call_through_this.dart.strong.expect
+++ b/pkg/front_end/testcases/runtime_checks_new/call_through_this.dart.strong.expect
@@ -19,6 +19,16 @@
   }
   method g4() → (self::C::T*) →* dynamic
     return this.{self::C::f};
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D extends self::C<core::int*> {
   synthetic constructor •() → self::D*
diff --git a/pkg/front_end/testcases/runtime_checks_new/call_through_this.dart.strong.transformed.expect b/pkg/front_end/testcases/runtime_checks_new/call_through_this.dart.strong.transformed.expect
index 61cd6f8e1..30b1004 100644
--- a/pkg/front_end/testcases/runtime_checks_new/call_through_this.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/runtime_checks_new/call_through_this.dart.strong.transformed.expect
@@ -19,6 +19,16 @@
   }
   method g4() → (self::C::T*) →* dynamic
     return this.{self::C::f};
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D extends self::C<core::int*> {
   synthetic constructor •() → self::D*
diff --git a/pkg/front_end/testcases/runtime_checks_new/contravariant_combiner.dart.outline.expect b/pkg/front_end/testcases/runtime_checks_new/contravariant_combiner.dart.outline.expect
index da8f309..4db8638 100644
--- a/pkg/front_end/testcases/runtime_checks_new/contravariant_combiner.dart.outline.expect
+++ b/pkg/front_end/testcases/runtime_checks_new/contravariant_combiner.dart.outline.expect
@@ -8,6 +8,16 @@
     ;
   operator +(dynamic other) → self::B<self::B::T*, (self::B::T*) →* void>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C extends core::Object {
   field self::B<core::num*, (core::num*) →* void>* x;
@@ -18,6 +28,16 @@
     ;
   operator []=(core::int* i, self::B<core::num*, (core::num*) →* void>* v) → void
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method test1(self::B<core::num*, (core::num*) →* void>* b) → void
   ;
diff --git a/pkg/front_end/testcases/runtime_checks_new/contravariant_combiner.dart.strong.expect b/pkg/front_end/testcases/runtime_checks_new/contravariant_combiner.dart.strong.expect
index 55cc7d2..19bdeaf 100644
--- a/pkg/front_end/testcases/runtime_checks_new/contravariant_combiner.dart.strong.expect
+++ b/pkg/front_end/testcases/runtime_checks_new/contravariant_combiner.dart.strong.expect
@@ -9,6 +9,16 @@
     ;
   operator +(dynamic other) → self::B<self::B::T*, (self::B::T*) →* void>*
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C extends core::Object {
   field self::B<core::num*, (core::num*) →* void>* x = null;
@@ -19,6 +29,16 @@
   operator [](core::int* i) → self::B<core::num*, (core::num*) →* void>*
     return null;
   operator []=(core::int* i, self::B<core::num*, (core::num*) →* void>* v) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method test1(self::B<core::num*, (core::num*) →* void>* b) → void {
   b = b.{self::B::+}(1) as{TypeError,CovarianceCheck} self::B<core::num*, (core::num*) →* void>*;
diff --git a/pkg/front_end/testcases/runtime_checks_new/contravariant_combiner.dart.strong.transformed.expect b/pkg/front_end/testcases/runtime_checks_new/contravariant_combiner.dart.strong.transformed.expect
index 55cc7d2..19bdeaf 100644
--- a/pkg/front_end/testcases/runtime_checks_new/contravariant_combiner.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/runtime_checks_new/contravariant_combiner.dart.strong.transformed.expect
@@ -9,6 +9,16 @@
     ;
   operator +(dynamic other) → self::B<self::B::T*, (self::B::T*) →* void>*
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C extends core::Object {
   field self::B<core::num*, (core::num*) →* void>* x = null;
@@ -19,6 +29,16 @@
   operator [](core::int* i) → self::B<core::num*, (core::num*) →* void>*
     return null;
   operator []=(core::int* i, self::B<core::num*, (core::num*) →* void>* v) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method test1(self::B<core::num*, (core::num*) →* void>* b) → void {
   b = b.{self::B::+}(1) as{TypeError,CovarianceCheck} self::B<core::num*, (core::num*) →* void>*;
diff --git a/pkg/front_end/testcases/runtime_checks_new/contravariant_generic_return_with_compound_assign_implicit_downcast.dart.outline.expect b/pkg/front_end/testcases/runtime_checks_new/contravariant_generic_return_with_compound_assign_implicit_downcast.dart.outline.expect
index 0b87491..c22b02e 100644
--- a/pkg/front_end/testcases/runtime_checks_new/contravariant_generic_return_with_compound_assign_implicit_downcast.dart.outline.expect
+++ b/pkg/front_end/testcases/runtime_checks_new/contravariant_generic_return_with_compound_assign_implicit_downcast.dart.outline.expect
@@ -8,6 +8,16 @@
     ;
   operator +(core::int* i) → (self::C::T*) →* core::num*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D extends core::Object {
   final field self::C<core::num*>* getValue;
@@ -18,6 +28,16 @@
     ;
   set value((core::int*) →* core::int* value) → void
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method expectTypeError(() →* void callback) → void
   ;
diff --git a/pkg/front_end/testcases/runtime_checks_new/contravariant_generic_return_with_compound_assign_implicit_downcast.dart.strong.expect b/pkg/front_end/testcases/runtime_checks_new/contravariant_generic_return_with_compound_assign_implicit_downcast.dart.strong.expect
index e2bc35f..477dfbb 100644
--- a/pkg/front_end/testcases/runtime_checks_new/contravariant_generic_return_with_compound_assign_implicit_downcast.dart.strong.expect
+++ b/pkg/front_end/testcases/runtime_checks_new/contravariant_generic_return_with_compound_assign_implicit_downcast.dart.strong.expect
@@ -20,6 +20,16 @@
     ;
   operator +(core::int* i) → (self::C::T*) →* core::num*
     return this.{self::C::plusResult};
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D extends core::Object {
   final field self::C<core::num*>* getValue;
@@ -32,6 +42,16 @@
   set value((core::int*) →* core::int* value) → void {
     this.{self::D::setValue} = value;
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method expectTypeError(() →* void callback) → void {
   try {
diff --git a/pkg/front_end/testcases/runtime_checks_new/contravariant_generic_return_with_compound_assign_implicit_downcast.dart.strong.transformed.expect b/pkg/front_end/testcases/runtime_checks_new/contravariant_generic_return_with_compound_assign_implicit_downcast.dart.strong.transformed.expect
index e2bc35f..477dfbb 100644
--- a/pkg/front_end/testcases/runtime_checks_new/contravariant_generic_return_with_compound_assign_implicit_downcast.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/runtime_checks_new/contravariant_generic_return_with_compound_assign_implicit_downcast.dart.strong.transformed.expect
@@ -20,6 +20,16 @@
     ;
   operator +(core::int* i) → (self::C::T*) →* core::num*
     return this.{self::C::plusResult};
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D extends core::Object {
   final field self::C<core::num*>* getValue;
@@ -32,6 +42,16 @@
   set value((core::int*) →* core::int* value) → void {
     this.{self::D::setValue} = value;
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method expectTypeError(() →* void callback) → void {
   try {
diff --git a/pkg/front_end/testcases/runtime_checks_new/contravariant_getter_return_compound_assign.dart.outline.expect b/pkg/front_end/testcases/runtime_checks_new/contravariant_getter_return_compound_assign.dart.outline.expect
index e778017..d024191 100644
--- a/pkg/front_end/testcases/runtime_checks_new/contravariant_getter_return_compound_assign.dart.outline.expect
+++ b/pkg/front_end/testcases/runtime_checks_new/contravariant_getter_return_compound_assign.dart.outline.expect
@@ -8,6 +8,16 @@
     ;
   operator +(generic-covariant-impl self::B<self::B::T*>* other) → self::B<self::B::T*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::C<self::C::T*>*
@@ -16,6 +26,16 @@
     ;
   set x(self::B<(self::C::T*) →* void>* value) → void
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method test(self::C<core::num*>* c) → void
   ;
diff --git a/pkg/front_end/testcases/runtime_checks_new/contravariant_getter_return_compound_assign.dart.strong.expect b/pkg/front_end/testcases/runtime_checks_new/contravariant_getter_return_compound_assign.dart.strong.expect
index 2d0bf7f..0596e2d 100644
--- a/pkg/front_end/testcases/runtime_checks_new/contravariant_getter_return_compound_assign.dart.strong.expect
+++ b/pkg/front_end/testcases/runtime_checks_new/contravariant_getter_return_compound_assign.dart.strong.expect
@@ -32,6 +32,16 @@
     ;
   operator +(generic-covariant-impl self::B<self::B::T*>* other) → self::B<self::B::T*>*
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::C<self::C::T*>*
@@ -40,6 +50,16 @@
   get x() → self::B<(self::C::T*) →* void>*
     return null;
   set x(self::B<(self::C::T*) →* void>* value) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method test(self::C<core::num*>* c) → void {
   let final self::C<core::num*>* #t1 = c in #t1.{self::C::x} = (#t1.{self::C::x} as{TypeError,CovarianceCheck} self::B<(core::num*) →* void>*).{self::B::+}(let final<BottomType> #t2 = invalid-expression "pkg/front_end/testcases/runtime_checks_new/contravariant_getter_return_compound_assign.dart:20:54: Error: A value of type 'B<num>' can't be assigned to a variable of type 'B<void Function(num)>'.
@@ -50,11 +70,11 @@
  - 'B' is from 'pkg/front_end/testcases/runtime_checks_new/contravariant_getter_return_compound_assign.dart'.
   var y = c. /*@ checkReturn=B<(num*) ->* void>* */ x += new B<num>();
                                                              ^" in new self::B::•<core::num*>() as{TypeError} self::B<(core::num*) →* void>*);
-  let final self::C<core::num*>* #t5 = c in (#t5.{self::C::x} as{TypeError,CovarianceCheck} self::B<(core::num*) →* void>*).{core::Object::==}(null) ?{self::B<core::Object*>*} #t5.{self::C::x} = let final<BottomType> #t6 = invalid-expression "pkg/front_end/testcases/runtime_checks_new/contravariant_getter_return_compound_assign.dart:22:55: Error: A value of type 'B<num>' can't be assigned to a variable of type 'B<void Function(num)>'.
+  let final self::C<core::num*>* #t5 = c in (#t5.{self::C::x} as{TypeError,CovarianceCheck} self::B<(core::num*) →* void>*).{self::B::==}(null) ?{self::B<core::Object*>*} #t5.{self::C::x} = let final<BottomType> #t6 = invalid-expression "pkg/front_end/testcases/runtime_checks_new/contravariant_getter_return_compound_assign.dart:22:55: Error: A value of type 'B<num>' can't be assigned to a variable of type 'B<void Function(num)>'.
  - 'B' is from 'pkg/front_end/testcases/runtime_checks_new/contravariant_getter_return_compound_assign.dart'.
   c. /*@ checkReturn=B<(num*) ->* void>* */ x ??= new B<num>();
                                                       ^" in new self::B::•<core::num*>() as{TypeError} self::B<(core::num*) →* void>* : null;
-  self::B<core::Object*>* z = let final self::C<core::num*>* #t7 = c in let final self::B<(core::num*) →* void>* #t8 = #t7.{self::C::x} as{TypeError,CovarianceCheck} self::B<(core::num*) →* void>* in #t8.{core::Object::==}(null) ?{self::B<core::Object*>*} #t7.{self::C::x} = let final<BottomType> #t9 = invalid-expression "pkg/front_end/testcases/runtime_checks_new/contravariant_getter_return_compound_assign.dart:23:63: Error: A value of type 'B<num>' can't be assigned to a variable of type 'B<void Function(num)>'.
+  self::B<core::Object*>* z = let final self::C<core::num*>* #t7 = c in let final self::B<(core::num*) →* void>* #t8 = #t7.{self::C::x} as{TypeError,CovarianceCheck} self::B<(core::num*) →* void>* in #t8.{self::B::==}(null) ?{self::B<core::Object*>*} #t7.{self::C::x} = let final<BottomType> #t9 = invalid-expression "pkg/front_end/testcases/runtime_checks_new/contravariant_getter_return_compound_assign.dart:23:63: Error: A value of type 'B<num>' can't be assigned to a variable of type 'B<void Function(num)>'.
  - 'B' is from 'pkg/front_end/testcases/runtime_checks_new/contravariant_getter_return_compound_assign.dart'.
   var z = c. /*@ checkReturn=B<(num*) ->* void>* */ x ??= new B<num>();
                                                               ^" in new self::B::•<core::num*>() as{TypeError} self::B<(core::num*) →* void>* : #t8;
diff --git a/pkg/front_end/testcases/runtime_checks_new/contravariant_getter_return_compound_assign.dart.strong.transformed.expect b/pkg/front_end/testcases/runtime_checks_new/contravariant_getter_return_compound_assign.dart.strong.transformed.expect
index 2d0bf7f..0596e2d 100644
--- a/pkg/front_end/testcases/runtime_checks_new/contravariant_getter_return_compound_assign.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/runtime_checks_new/contravariant_getter_return_compound_assign.dart.strong.transformed.expect
@@ -32,6 +32,16 @@
     ;
   operator +(generic-covariant-impl self::B<self::B::T*>* other) → self::B<self::B::T*>*
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::C<self::C::T*>*
@@ -40,6 +50,16 @@
   get x() → self::B<(self::C::T*) →* void>*
     return null;
   set x(self::B<(self::C::T*) →* void>* value) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method test(self::C<core::num*>* c) → void {
   let final self::C<core::num*>* #t1 = c in #t1.{self::C::x} = (#t1.{self::C::x} as{TypeError,CovarianceCheck} self::B<(core::num*) →* void>*).{self::B::+}(let final<BottomType> #t2 = invalid-expression "pkg/front_end/testcases/runtime_checks_new/contravariant_getter_return_compound_assign.dart:20:54: Error: A value of type 'B<num>' can't be assigned to a variable of type 'B<void Function(num)>'.
@@ -50,11 +70,11 @@
  - 'B' is from 'pkg/front_end/testcases/runtime_checks_new/contravariant_getter_return_compound_assign.dart'.
   var y = c. /*@ checkReturn=B<(num*) ->* void>* */ x += new B<num>();
                                                              ^" in new self::B::•<core::num*>() as{TypeError} self::B<(core::num*) →* void>*);
-  let final self::C<core::num*>* #t5 = c in (#t5.{self::C::x} as{TypeError,CovarianceCheck} self::B<(core::num*) →* void>*).{core::Object::==}(null) ?{self::B<core::Object*>*} #t5.{self::C::x} = let final<BottomType> #t6 = invalid-expression "pkg/front_end/testcases/runtime_checks_new/contravariant_getter_return_compound_assign.dart:22:55: Error: A value of type 'B<num>' can't be assigned to a variable of type 'B<void Function(num)>'.
+  let final self::C<core::num*>* #t5 = c in (#t5.{self::C::x} as{TypeError,CovarianceCheck} self::B<(core::num*) →* void>*).{self::B::==}(null) ?{self::B<core::Object*>*} #t5.{self::C::x} = let final<BottomType> #t6 = invalid-expression "pkg/front_end/testcases/runtime_checks_new/contravariant_getter_return_compound_assign.dart:22:55: Error: A value of type 'B<num>' can't be assigned to a variable of type 'B<void Function(num)>'.
  - 'B' is from 'pkg/front_end/testcases/runtime_checks_new/contravariant_getter_return_compound_assign.dart'.
   c. /*@ checkReturn=B<(num*) ->* void>* */ x ??= new B<num>();
                                                       ^" in new self::B::•<core::num*>() as{TypeError} self::B<(core::num*) →* void>* : null;
-  self::B<core::Object*>* z = let final self::C<core::num*>* #t7 = c in let final self::B<(core::num*) →* void>* #t8 = #t7.{self::C::x} as{TypeError,CovarianceCheck} self::B<(core::num*) →* void>* in #t8.{core::Object::==}(null) ?{self::B<core::Object*>*} #t7.{self::C::x} = let final<BottomType> #t9 = invalid-expression "pkg/front_end/testcases/runtime_checks_new/contravariant_getter_return_compound_assign.dart:23:63: Error: A value of type 'B<num>' can't be assigned to a variable of type 'B<void Function(num)>'.
+  self::B<core::Object*>* z = let final self::C<core::num*>* #t7 = c in let final self::B<(core::num*) →* void>* #t8 = #t7.{self::C::x} as{TypeError,CovarianceCheck} self::B<(core::num*) →* void>* in #t8.{self::B::==}(null) ?{self::B<core::Object*>*} #t7.{self::C::x} = let final<BottomType> #t9 = invalid-expression "pkg/front_end/testcases/runtime_checks_new/contravariant_getter_return_compound_assign.dart:23:63: Error: A value of type 'B<num>' can't be assigned to a variable of type 'B<void Function(num)>'.
  - 'B' is from 'pkg/front_end/testcases/runtime_checks_new/contravariant_getter_return_compound_assign.dart'.
   var z = c. /*@ checkReturn=B<(num*) ->* void>* */ x ??= new B<num>();
                                                               ^" in new self::B::•<core::num*>() as{TypeError} self::B<(core::num*) →* void>* : #t8;
diff --git a/pkg/front_end/testcases/runtime_checks_new/contravariant_index_assign.dart.outline.expect b/pkg/front_end/testcases/runtime_checks_new/contravariant_index_assign.dart.outline.expect
index f87990c..8dcb686 100644
--- a/pkg/front_end/testcases/runtime_checks_new/contravariant_index_assign.dart.outline.expect
+++ b/pkg/front_end/testcases/runtime_checks_new/contravariant_index_assign.dart.outline.expect
@@ -8,6 +8,16 @@
     ;
   operator +(generic-covariant-impl self::B<self::B::T*>* other) → self::B<self::B::T*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::C<self::C::T*>*
@@ -16,6 +26,16 @@
     ;
   operator []=(core::int* i, self::B<(self::C::T*) →* void>* x) → void
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method test(self::C<core::num*>* c) → void
   ;
diff --git a/pkg/front_end/testcases/runtime_checks_new/contravariant_index_assign.dart.strong.expect b/pkg/front_end/testcases/runtime_checks_new/contravariant_index_assign.dart.strong.expect
index a93c374..6e0482e 100644
--- a/pkg/front_end/testcases/runtime_checks_new/contravariant_index_assign.dart.strong.expect
+++ b/pkg/front_end/testcases/runtime_checks_new/contravariant_index_assign.dart.strong.expect
@@ -9,6 +9,16 @@
     ;
   operator +(generic-covariant-impl self::B<self::B::T*>* other) → self::B<self::B::T*>*
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::C<self::C::T*>*
@@ -17,12 +27,22 @@
   operator [](core::int* i) → self::B<(self::C::T*) →* void>*
     return null;
   operator []=(core::int* i, self::B<(self::C::T*) →* void>* x) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method test(self::C<core::num*>* c) → void {
   c.{self::C::[]=}(0, new self::B::•<(core::num*) →* void>());
   let final self::C<core::num*>* #t1 = c in let final core::int* #t2 = 0 in #t1.{self::C::[]=}(#t2, (#t1.{self::C::[]}(#t2) as{TypeError,CovarianceCheck} self::B<(core::num*) →* void>*).{self::B::+}(new self::B::•<(core::num*) →* void>()));
   self::B<(core::num*) →* void>* x = let final self::C<core::num*>* #t3 = c in let final core::int* #t4 = 0 in let final self::B<(core::num*) →* void>* #t5 = (#t3.{self::C::[]}(#t4) as{TypeError,CovarianceCheck} self::B<(core::num*) →* void>*).{self::B::+}(new self::B::•<(core::num*) →* void>()) in let final void #t6 = #t3.{self::C::[]=}(#t4, #t5) in #t5;
-  let final self::C<core::num*>* #t7 = c in let final core::int* #t8 = 0 in (#t7.{self::C::[]}(#t8) as{TypeError,CovarianceCheck} self::B<(core::num*) →* void>*).{core::Object::==}(null) ?{self::B<(core::num*) →* void>*} #t7.{self::C::[]=}(#t8, new self::B::•<(core::num*) →* void>()) : null;
-  self::B<(core::num*) →* void>* y = let final self::C<core::num*>* #t9 = c in let final core::int* #t10 = 0 in let final self::B<(core::num*) →* void>* #t11 = #t9.{self::C::[]}(#t10) as{TypeError,CovarianceCheck} self::B<(core::num*) →* void>* in #t11.{core::Object::==}(null) ?{self::B<(core::num*) →* void>*} let final self::B<(core::num*) →* void>* #t12 = new self::B::•<(core::num*) →* void>() in let final void #t13 = #t9.{self::C::[]=}(#t10, #t12) in #t12 : #t11;
+  let final self::C<core::num*>* #t7 = c in let final core::int* #t8 = 0 in (#t7.{self::C::[]}(#t8) as{TypeError,CovarianceCheck} self::B<(core::num*) →* void>*).{self::B::==}(null) ?{self::B<(core::num*) →* void>*} #t7.{self::C::[]=}(#t8, new self::B::•<(core::num*) →* void>()) : null;
+  self::B<(core::num*) →* void>* y = let final self::C<core::num*>* #t9 = c in let final core::int* #t10 = 0 in let final self::B<(core::num*) →* void>* #t11 = #t9.{self::C::[]}(#t10) as{TypeError,CovarianceCheck} self::B<(core::num*) →* void>* in #t11.{self::B::==}(null) ?{self::B<(core::num*) →* void>*} let final self::B<(core::num*) →* void>* #t12 = new self::B::•<(core::num*) →* void>() in let final void #t13 = #t9.{self::C::[]=}(#t10, #t12) in #t12 : #t11;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/runtime_checks_new/contravariant_index_assign.dart.strong.transformed.expect b/pkg/front_end/testcases/runtime_checks_new/contravariant_index_assign.dart.strong.transformed.expect
index a93c374..6e0482e 100644
--- a/pkg/front_end/testcases/runtime_checks_new/contravariant_index_assign.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/runtime_checks_new/contravariant_index_assign.dart.strong.transformed.expect
@@ -9,6 +9,16 @@
     ;
   operator +(generic-covariant-impl self::B<self::B::T*>* other) → self::B<self::B::T*>*
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::C<self::C::T*>*
@@ -17,12 +27,22 @@
   operator [](core::int* i) → self::B<(self::C::T*) →* void>*
     return null;
   operator []=(core::int* i, self::B<(self::C::T*) →* void>* x) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method test(self::C<core::num*>* c) → void {
   c.{self::C::[]=}(0, new self::B::•<(core::num*) →* void>());
   let final self::C<core::num*>* #t1 = c in let final core::int* #t2 = 0 in #t1.{self::C::[]=}(#t2, (#t1.{self::C::[]}(#t2) as{TypeError,CovarianceCheck} self::B<(core::num*) →* void>*).{self::B::+}(new self::B::•<(core::num*) →* void>()));
   self::B<(core::num*) →* void>* x = let final self::C<core::num*>* #t3 = c in let final core::int* #t4 = 0 in let final self::B<(core::num*) →* void>* #t5 = (#t3.{self::C::[]}(#t4) as{TypeError,CovarianceCheck} self::B<(core::num*) →* void>*).{self::B::+}(new self::B::•<(core::num*) →* void>()) in let final void #t6 = #t3.{self::C::[]=}(#t4, #t5) in #t5;
-  let final self::C<core::num*>* #t7 = c in let final core::int* #t8 = 0 in (#t7.{self::C::[]}(#t8) as{TypeError,CovarianceCheck} self::B<(core::num*) →* void>*).{core::Object::==}(null) ?{self::B<(core::num*) →* void>*} #t7.{self::C::[]=}(#t8, new self::B::•<(core::num*) →* void>()) : null;
-  self::B<(core::num*) →* void>* y = let final self::C<core::num*>* #t9 = c in let final core::int* #t10 = 0 in let final self::B<(core::num*) →* void>* #t11 = #t9.{self::C::[]}(#t10) as{TypeError,CovarianceCheck} self::B<(core::num*) →* void>* in #t11.{core::Object::==}(null) ?{self::B<(core::num*) →* void>*} let final self::B<(core::num*) →* void>* #t12 = new self::B::•<(core::num*) →* void>() in let final void #t13 = #t9.{self::C::[]=}(#t10, #t12) in #t12 : #t11;
+  let final self::C<core::num*>* #t7 = c in let final core::int* #t8 = 0 in (#t7.{self::C::[]}(#t8) as{TypeError,CovarianceCheck} self::B<(core::num*) →* void>*).{self::B::==}(null) ?{self::B<(core::num*) →* void>*} #t7.{self::C::[]=}(#t8, new self::B::•<(core::num*) →* void>()) : null;
+  self::B<(core::num*) →* void>* y = let final self::C<core::num*>* #t9 = c in let final core::int* #t10 = 0 in let final self::B<(core::num*) →* void>* #t11 = #t9.{self::C::[]}(#t10) as{TypeError,CovarianceCheck} self::B<(core::num*) →* void>* in #t11.{self::B::==}(null) ?{self::B<(core::num*) →* void>*} let final self::B<(core::num*) →* void>* #t12 = new self::B::•<(core::num*) →* void>() in let final void #t13 = #t9.{self::C::[]=}(#t10, #t12) in #t12 : #t11;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/runtime_checks_new/contravariant_index_get.dart.outline.expect b/pkg/front_end/testcases/runtime_checks_new/contravariant_index_get.dart.outline.expect
index bf7f7d00..2e528ab 100644
--- a/pkg/front_end/testcases/runtime_checks_new/contravariant_index_get.dart.outline.expect
+++ b/pkg/front_end/testcases/runtime_checks_new/contravariant_index_get.dart.outline.expect
@@ -8,6 +8,16 @@
     ;
   operator [](core::int* i) → (self::C::T*) →* void
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method test(self::C<core::num*>* c) → (core::num*) →* void
   ;
diff --git a/pkg/front_end/testcases/runtime_checks_new/contravariant_index_get.dart.strong.expect b/pkg/front_end/testcases/runtime_checks_new/contravariant_index_get.dart.strong.expect
index 28a5438..d025d8e 100644
--- a/pkg/front_end/testcases/runtime_checks_new/contravariant_index_get.dart.strong.expect
+++ b/pkg/front_end/testcases/runtime_checks_new/contravariant_index_get.dart.strong.expect
@@ -9,6 +9,16 @@
     ;
   operator [](core::int* i) → (self::C::T*) →* void
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method test(self::C<core::num*>* c) → (core::num*) →* void {
   return c.{self::C::[]}(0) as{TypeError,CovarianceCheck} (core::num*) →* void;
diff --git a/pkg/front_end/testcases/runtime_checks_new/contravariant_index_get.dart.strong.transformed.expect b/pkg/front_end/testcases/runtime_checks_new/contravariant_index_get.dart.strong.transformed.expect
index 28a5438..d025d8e 100644
--- a/pkg/front_end/testcases/runtime_checks_new/contravariant_index_get.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/runtime_checks_new/contravariant_index_get.dart.strong.transformed.expect
@@ -9,6 +9,16 @@
     ;
   operator [](core::int* i) → (self::C::T*) →* void
     return null;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method test(self::C<core::num*>* c) → (core::num*) →* void {
   return c.{self::C::[]}(0) as{TypeError,CovarianceCheck} (core::num*) →* void;
diff --git a/pkg/front_end/testcases/runtime_checks_new/derived_class_typed.dart.outline.expect b/pkg/front_end/testcases/runtime_checks_new/derived_class_typed.dart.outline.expect
index 9a2b5c5..c2335e9 100644
--- a/pkg/front_end/testcases/runtime_checks_new/derived_class_typed.dart.outline.expect
+++ b/pkg/front_end/testcases/runtime_checks_new/derived_class_typed.dart.outline.expect
@@ -11,6 +11,16 @@
     ;
   method h<generic-covariant-impl U extends self::B::T* = self::B::T*>() → void
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C extends self::B<core::int*> {
   synthetic constructor •() → self::C*
diff --git a/pkg/front_end/testcases/runtime_checks_new/derived_class_typed.dart.strong.expect b/pkg/front_end/testcases/runtime_checks_new/derived_class_typed.dart.strong.expect
index 8c00f76..f0f27c3 100644
--- a/pkg/front_end/testcases/runtime_checks_new/derived_class_typed.dart.strong.expect
+++ b/pkg/front_end/testcases/runtime_checks_new/derived_class_typed.dart.strong.expect
@@ -9,6 +9,16 @@
   method f(generic-covariant-impl self::B::T* x) → void {}
   method g({generic-covariant-impl self::B::T* x = #C1}) → void {}
   method h<generic-covariant-impl U extends self::B::T* = self::B::T*>() → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C extends self::B<core::int*> {
   synthetic constructor •() → self::C*
diff --git a/pkg/front_end/testcases/runtime_checks_new/derived_class_typed.dart.strong.transformed.expect b/pkg/front_end/testcases/runtime_checks_new/derived_class_typed.dart.strong.transformed.expect
index 8c00f76..f0f27c3 100644
--- a/pkg/front_end/testcases/runtime_checks_new/derived_class_typed.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/runtime_checks_new/derived_class_typed.dart.strong.transformed.expect
@@ -9,6 +9,16 @@
   method f(generic-covariant-impl self::B::T* x) → void {}
   method g({generic-covariant-impl self::B::T* x = #C1}) → void {}
   method h<generic-covariant-impl U extends self::B::T* = self::B::T*>() → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C extends self::B<core::int*> {
   synthetic constructor •() → self::C*
diff --git a/pkg/front_end/testcases/runtime_checks_new/field_forwarding_stub_abstract_generic_covariant.dart.outline.expect b/pkg/front_end/testcases/runtime_checks_new/field_forwarding_stub_abstract_generic_covariant.dart.outline.expect
index d7a550f..7aca6c9 100644
--- a/pkg/front_end/testcases/runtime_checks_new/field_forwarding_stub_abstract_generic_covariant.dart.outline.expect
+++ b/pkg/front_end/testcases/runtime_checks_new/field_forwarding_stub_abstract_generic_covariant.dart.outline.expect
@@ -6,6 +6,16 @@
   generic-covariant-impl field self::B::T* x;
   synthetic constructor •() → self::B<self::B::T*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C extends self::B<core::num*> {
   synthetic constructor •() → self::C*
diff --git a/pkg/front_end/testcases/runtime_checks_new/field_forwarding_stub_abstract_generic_covariant.dart.strong.expect b/pkg/front_end/testcases/runtime_checks_new/field_forwarding_stub_abstract_generic_covariant.dart.strong.expect
index 12d5924..89cbd7d 100644
--- a/pkg/front_end/testcases/runtime_checks_new/field_forwarding_stub_abstract_generic_covariant.dart.strong.expect
+++ b/pkg/front_end/testcases/runtime_checks_new/field_forwarding_stub_abstract_generic_covariant.dart.strong.expect
@@ -7,6 +7,16 @@
   synthetic constructor •() → self::B<self::B::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C extends self::B<core::num*> {
   synthetic constructor •() → self::C*
diff --git a/pkg/front_end/testcases/runtime_checks_new/field_forwarding_stub_abstract_generic_covariant.dart.strong.transformed.expect b/pkg/front_end/testcases/runtime_checks_new/field_forwarding_stub_abstract_generic_covariant.dart.strong.transformed.expect
index 12d5924..89cbd7d 100644
--- a/pkg/front_end/testcases/runtime_checks_new/field_forwarding_stub_abstract_generic_covariant.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/runtime_checks_new/field_forwarding_stub_abstract_generic_covariant.dart.strong.transformed.expect
@@ -7,6 +7,16 @@
   synthetic constructor •() → self::B<self::B::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C extends self::B<core::num*> {
   synthetic constructor •() → self::C*
diff --git a/pkg/front_end/testcases/runtime_checks_new/field_forwarding_stub_explicit_covariant.dart.outline.expect b/pkg/front_end/testcases/runtime_checks_new/field_forwarding_stub_explicit_covariant.dart.outline.expect
index 0f12e09..b0d24bf 100644
--- a/pkg/front_end/testcases/runtime_checks_new/field_forwarding_stub_explicit_covariant.dart.outline.expect
+++ b/pkg/front_end/testcases/runtime_checks_new/field_forwarding_stub_explicit_covariant.dart.outline.expect
@@ -6,11 +6,31 @@
   covariant field core::num* x;
   synthetic constructor •() → self::B*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C extends core::Object {
   field core::int* x;
   synthetic constructor •() → self::C*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D extends self::C implements self::B {
   synthetic constructor •() → self::D*
diff --git a/pkg/front_end/testcases/runtime_checks_new/field_forwarding_stub_explicit_covariant.dart.strong.expect b/pkg/front_end/testcases/runtime_checks_new/field_forwarding_stub_explicit_covariant.dart.strong.expect
index c636b55..5d7b38d 100644
--- a/pkg/front_end/testcases/runtime_checks_new/field_forwarding_stub_explicit_covariant.dart.strong.expect
+++ b/pkg/front_end/testcases/runtime_checks_new/field_forwarding_stub_explicit_covariant.dart.strong.expect
@@ -7,12 +7,32 @@
   synthetic constructor •() → self::B*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C extends core::Object {
   field core::int* x = null;
   synthetic constructor •() → self::C*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D extends self::C implements self::B {
   synthetic constructor •() → self::D*
diff --git a/pkg/front_end/testcases/runtime_checks_new/field_forwarding_stub_explicit_covariant.dart.strong.transformed.expect b/pkg/front_end/testcases/runtime_checks_new/field_forwarding_stub_explicit_covariant.dart.strong.transformed.expect
index c636b55..5d7b38d 100644
--- a/pkg/front_end/testcases/runtime_checks_new/field_forwarding_stub_explicit_covariant.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/runtime_checks_new/field_forwarding_stub_explicit_covariant.dart.strong.transformed.expect
@@ -7,12 +7,32 @@
   synthetic constructor •() → self::B*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C extends core::Object {
   field core::int* x = null;
   synthetic constructor •() → self::C*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class D extends self::C implements self::B {
   synthetic constructor •() → self::D*
diff --git a/pkg/front_end/testcases/runtime_checks_new/for_in_call_kinds.dart.outline.expect b/pkg/front_end/testcases/runtime_checks_new/for_in_call_kinds.dart.outline.expect
index 1068972..cf9e4b2 100644
--- a/pkg/front_end/testcases/runtime_checks_new/for_in_call_kinds.dart.outline.expect
+++ b/pkg/front_end/testcases/runtime_checks_new/for_in_call_kinds.dart.outline.expect
@@ -13,6 +13,16 @@
     ;
   method test() → void
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field dynamic topLevel;
 static set topLevelSetter(dynamic x) → void
diff --git a/pkg/front_end/testcases/runtime_checks_new/for_in_call_kinds.dart.strong.expect b/pkg/front_end/testcases/runtime_checks_new/for_in_call_kinds.dart.strong.expect
index 7c5b3c9..6a39254 100644
--- a/pkg/front_end/testcases/runtime_checks_new/for_in_call_kinds.dart.strong.expect
+++ b/pkg/front_end/testcases/runtime_checks_new/for_in_call_kinds.dart.strong.expect
@@ -34,6 +34,16 @@
       localVar = #t7;
     }
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field dynamic topLevel;
 static set topLevelSetter(dynamic x) → void {}
diff --git a/pkg/front_end/testcases/runtime_checks_new/for_in_call_kinds.dart.strong.transformed.expect b/pkg/front_end/testcases/runtime_checks_new/for_in_call_kinds.dart.strong.transformed.expect
index 6a96046..746ea97 100644
--- a/pkg/front_end/testcases/runtime_checks_new/for_in_call_kinds.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/runtime_checks_new/for_in_call_kinds.dart.strong.transformed.expect
@@ -76,6 +76,16 @@
       }
     }
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field dynamic topLevel;
 static set topLevelSetter(dynamic x) → void {}
diff --git a/pkg/front_end/testcases/runtime_checks_new/generic_covariance_based_on_inference.dart.outline.expect b/pkg/front_end/testcases/runtime_checks_new/generic_covariance_based_on_inference.dart.outline.expect
index 60a7f87..958a4a3 100644
--- a/pkg/front_end/testcases/runtime_checks_new/generic_covariance_based_on_inference.dart.outline.expect
+++ b/pkg/front_end/testcases/runtime_checks_new/generic_covariance_based_on_inference.dart.outline.expect
@@ -7,6 +7,16 @@
   generic-covariant-impl field self::B::T* y;
   synthetic constructor •() → self::B<self::B::T*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class C<T extends core::Object* = dynamic> extends core::Object implements self::B<core::num*> {
   generic-covariant-impl field core::num* x;
@@ -14,6 +24,16 @@
     ;
   abstract get y() → core::num*;
   abstract set y(generic-covariant-impl core::num* value) → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class D<T extends core::Object* = dynamic> extends core::Object implements self::B<self::D::T*> {
   generic-covariant-impl field self::D::T* x;
@@ -21,6 +41,16 @@
     ;
   abstract get y() → self::D::T*;
   abstract set y(generic-covariant-impl self::D::T* value) → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/runtime_checks_new/generic_covariance_based_on_inference.dart.strong.expect b/pkg/front_end/testcases/runtime_checks_new/generic_covariance_based_on_inference.dart.strong.expect
index 7b0cc15..290b903 100644
--- a/pkg/front_end/testcases/runtime_checks_new/generic_covariance_based_on_inference.dart.strong.expect
+++ b/pkg/front_end/testcases/runtime_checks_new/generic_covariance_based_on_inference.dart.strong.expect
@@ -8,6 +8,16 @@
   synthetic constructor •() → self::B<self::B::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class C<T extends core::Object* = dynamic> extends core::Object implements self::B<core::num*> {
   generic-covariant-impl field core::num* x = null;
@@ -16,6 +26,16 @@
     ;
   abstract get y() → core::num*;
   abstract set y(generic-covariant-impl core::num* value) → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class D<T extends core::Object* = dynamic> extends core::Object implements self::B<self::D::T*> {
   generic-covariant-impl field self::D::T* x = null;
@@ -24,5 +44,15 @@
     ;
   abstract get y() → self::D::T*;
   abstract set y(generic-covariant-impl self::D::T* value) → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/runtime_checks_new/generic_covariance_based_on_inference.dart.strong.transformed.expect b/pkg/front_end/testcases/runtime_checks_new/generic_covariance_based_on_inference.dart.strong.transformed.expect
index 7b0cc15..290b903 100644
--- a/pkg/front_end/testcases/runtime_checks_new/generic_covariance_based_on_inference.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/runtime_checks_new/generic_covariance_based_on_inference.dart.strong.transformed.expect
@@ -8,6 +8,16 @@
   synthetic constructor •() → self::B<self::B::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class C<T extends core::Object* = dynamic> extends core::Object implements self::B<core::num*> {
   generic-covariant-impl field core::num* x = null;
@@ -16,6 +26,16 @@
     ;
   abstract get y() → core::num*;
   abstract set y(generic-covariant-impl core::num* value) → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class D<T extends core::Object* = dynamic> extends core::Object implements self::B<self::D::T*> {
   generic-covariant-impl field self::D::T* x = null;
@@ -24,5 +44,15 @@
     ;
   abstract get y() → self::D::T*;
   abstract set y(generic-covariant-impl self::D::T* value) → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/runtime_checks_new/implicit_downcast_field.dart.outline.expect b/pkg/front_end/testcases/runtime_checks_new/implicit_downcast_field.dart.outline.expect
index adf1570..8af131b 100644
--- a/pkg/front_end/testcases/runtime_checks_new/implicit_downcast_field.dart.outline.expect
+++ b/pkg/front_end/testcases/runtime_checks_new/implicit_downcast_field.dart.outline.expect
@@ -7,6 +7,16 @@
   field core::bool* instanceValue;
   synthetic constructor •() → self::C*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field core::Object* o;
 static field core::bool* topLevelValue;
diff --git a/pkg/front_end/testcases/runtime_checks_new/implicit_downcast_field.dart.strong.expect b/pkg/front_end/testcases/runtime_checks_new/implicit_downcast_field.dart.strong.expect
index 56dbcc5..2d38634 100644
--- a/pkg/front_end/testcases/runtime_checks_new/implicit_downcast_field.dart.strong.expect
+++ b/pkg/front_end/testcases/runtime_checks_new/implicit_downcast_field.dart.strong.expect
@@ -8,6 +8,16 @@
   synthetic constructor •() → self::C*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field core::Object* o = 1;
 static field core::bool* topLevelValue = self::o as{TypeError} core::bool*;
diff --git a/pkg/front_end/testcases/runtime_checks_new/implicit_downcast_field.dart.strong.transformed.expect b/pkg/front_end/testcases/runtime_checks_new/implicit_downcast_field.dart.strong.transformed.expect
index 56dbcc5..2d38634 100644
--- a/pkg/front_end/testcases/runtime_checks_new/implicit_downcast_field.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/runtime_checks_new/implicit_downcast_field.dart.strong.transformed.expect
@@ -8,6 +8,16 @@
   synthetic constructor •() → self::C*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static field core::Object* o = 1;
 static field core::bool* topLevelValue = self::o as{TypeError} core::bool*;
diff --git a/pkg/front_end/testcases/runtime_checks_new/mixin_forwarding_stub_field.dart.outline.expect b/pkg/front_end/testcases/runtime_checks_new/mixin_forwarding_stub_field.dart.outline.expect
index 7e62b61..6d32ad8 100644
--- a/pkg/front_end/testcases/runtime_checks_new/mixin_forwarding_stub_field.dart.outline.expect
+++ b/pkg/front_end/testcases/runtime_checks_new/mixin_forwarding_stub_field.dart.outline.expect
@@ -27,6 +27,16 @@
     ;
   set y(core::int* value) → void
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class I<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::I<self::I::T*>*
@@ -35,12 +45,32 @@
   abstract set x(generic-covariant-impl self::I::T* value) → void;
   abstract get y() → core::Object*;
   abstract set y(covariant core::Object* value) → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class M extends core::Object {
   field core::int* x;
   field core::int* y;
   synthetic constructor •() → self::M*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C = self::B with self::M implements self::I<core::int*> {
   synthetic constructor •() → self::C*
diff --git a/pkg/front_end/testcases/runtime_checks_new/mixin_forwarding_stub_field.dart.strong.expect b/pkg/front_end/testcases/runtime_checks_new/mixin_forwarding_stub_field.dart.strong.expect
index f9f56be..3076dad 100644
--- a/pkg/front_end/testcases/runtime_checks_new/mixin_forwarding_stub_field.dart.strong.expect
+++ b/pkg/front_end/testcases/runtime_checks_new/mixin_forwarding_stub_field.dart.strong.expect
@@ -32,6 +32,16 @@
   set y(core::int* value) → void {
     throw "Should not be reached";
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class I<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::I<self::I::T*>*
@@ -41,6 +51,16 @@
   abstract set x(generic-covariant-impl self::I::T* value) → void;
   abstract get y() → core::Object*;
   abstract set y(covariant core::Object* value) → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class M extends core::Object {
   field core::int* x = null;
@@ -48,6 +68,16 @@
   synthetic constructor •() → self::M*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C = self::B with self::M implements self::I<core::int*> {
   synthetic constructor •() → self::C*
diff --git a/pkg/front_end/testcases/runtime_checks_new/mixin_forwarding_stub_setter.dart.outline.expect b/pkg/front_end/testcases/runtime_checks_new/mixin_forwarding_stub_setter.dart.outline.expect
index 990d151..c536f32 100644
--- a/pkg/front_end/testcases/runtime_checks_new/mixin_forwarding_stub_setter.dart.outline.expect
+++ b/pkg/front_end/testcases/runtime_checks_new/mixin_forwarding_stub_setter.dart.outline.expect
@@ -28,6 +28,16 @@
     ;
   set y(core::int* value) → void
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class I<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::I<self::I::T*>*
@@ -36,6 +46,16 @@
   abstract set x(generic-covariant-impl self::I::T* value) → void;
   abstract get y() → core::Object*;
   abstract set y(covariant core::Object* value) → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class M extends core::Object {
   synthetic constructor •() → self::M*
@@ -48,6 +68,16 @@
     ;
   set y(core::int* value) → void
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C = self::B with self::M implements self::I<core::int*> {
   synthetic constructor •() → self::C*
diff --git a/pkg/front_end/testcases/runtime_checks_new/mixin_forwarding_stub_setter.dart.strong.expect b/pkg/front_end/testcases/runtime_checks_new/mixin_forwarding_stub_setter.dart.strong.expect
index 6c05a9d..6b0b036 100644
--- a/pkg/front_end/testcases/runtime_checks_new/mixin_forwarding_stub_setter.dart.strong.expect
+++ b/pkg/front_end/testcases/runtime_checks_new/mixin_forwarding_stub_setter.dart.strong.expect
@@ -33,6 +33,16 @@
   set y(core::int* value) → void {
     throw "Should not be reached";
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class I<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::I<self::I::T*>*
@@ -42,6 +52,16 @@
   abstract set x(generic-covariant-impl self::I::T* value) → void;
   abstract get y() → core::Object*;
   abstract set y(covariant core::Object* value) → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class M extends core::Object {
   synthetic constructor •() → self::M*
@@ -57,6 +77,16 @@
   set y(core::int* value) → void {
     self::expect(value, 4);
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C = self::B with self::M implements self::I<core::int*> {
   synthetic constructor •() → self::C*
diff --git a/pkg/front_end/testcases/runtime_checks_new/stub_checked_via_target.dart.outline.expect b/pkg/front_end/testcases/runtime_checks_new/stub_checked_via_target.dart.outline.expect
index 2d21fedf..b514f53 100644
--- a/pkg/front_end/testcases/runtime_checks_new/stub_checked_via_target.dart.outline.expect
+++ b/pkg/front_end/testcases/runtime_checks_new/stub_checked_via_target.dart.outline.expect
@@ -7,11 +7,31 @@
     ;
   method f(core::int* x) → core::int*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class I extends core::Object {
   synthetic constructor •() → self::I*
     ;
   abstract method f(covariant core::Object* x) → core::int*;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C extends self::B implements self::I {
   synthetic constructor •() → self::C*
diff --git a/pkg/front_end/testcases/runtime_checks_new/stub_checked_via_target.dart.strong.expect b/pkg/front_end/testcases/runtime_checks_new/stub_checked_via_target.dart.strong.expect
index ab4a68c..aa2e34a 100644
--- a/pkg/front_end/testcases/runtime_checks_new/stub_checked_via_target.dart.strong.expect
+++ b/pkg/front_end/testcases/runtime_checks_new/stub_checked_via_target.dart.strong.expect
@@ -10,12 +10,32 @@
     self::expect(x, 1);
     return 2;
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class I extends core::Object {
   synthetic constructor •() → self::I*
     : super core::Object::•()
     ;
   abstract method f(covariant core::Object* x) → core::int*;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C extends self::B implements self::I {
   synthetic constructor •() → self::C*
diff --git a/pkg/front_end/testcases/runtime_checks_new/stub_checked_via_target.dart.strong.transformed.expect b/pkg/front_end/testcases/runtime_checks_new/stub_checked_via_target.dart.strong.transformed.expect
index ab4a68c..aa2e34a 100644
--- a/pkg/front_end/testcases/runtime_checks_new/stub_checked_via_target.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/runtime_checks_new/stub_checked_via_target.dart.strong.transformed.expect
@@ -10,12 +10,32 @@
     self::expect(x, 1);
     return 2;
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class I extends core::Object {
   synthetic constructor •() → self::I*
     : super core::Object::•()
     ;
   abstract method f(covariant core::Object* x) → core::int*;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C extends self::B implements self::I {
   synthetic constructor •() → self::C*
diff --git a/pkg/front_end/testcases/runtime_checks_new/stub_from_interface_covariantImpl_from_interface.dart.outline.expect b/pkg/front_end/testcases/runtime_checks_new/stub_from_interface_covariantImpl_from_interface.dart.outline.expect
index 29bae7f..0cf545e 100644
--- a/pkg/front_end/testcases/runtime_checks_new/stub_from_interface_covariantImpl_from_interface.dart.outline.expect
+++ b/pkg/front_end/testcases/runtime_checks_new/stub_from_interface_covariantImpl_from_interface.dart.outline.expect
@@ -7,11 +7,31 @@
     ;
   method f(core::int* x, core::int* y) → void
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class I<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::I<self::I::T*>*
     ;
   abstract method f(generic-covariant-impl self::I::T* x, core::Object* y) → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class C extends self::B implements self::I<core::int*> {
   synthetic constructor •() → self::C*
diff --git a/pkg/front_end/testcases/runtime_checks_new/stub_from_interface_covariantImpl_from_interface.dart.strong.expect b/pkg/front_end/testcases/runtime_checks_new/stub_from_interface_covariantImpl_from_interface.dart.strong.expect
index ac4f277..19c97dc 100644
--- a/pkg/front_end/testcases/runtime_checks_new/stub_from_interface_covariantImpl_from_interface.dart.strong.expect
+++ b/pkg/front_end/testcases/runtime_checks_new/stub_from_interface_covariantImpl_from_interface.dart.strong.expect
@@ -7,12 +7,32 @@
     : super core::Object::•()
     ;
   method f(core::int* x, core::int* y) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class I<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::I<self::I::T*>*
     : super core::Object::•()
     ;
   abstract method f(generic-covariant-impl self::I::T* x, core::Object* y) → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class C extends self::B implements self::I<core::int*> {
   synthetic constructor •() → self::C*
diff --git a/pkg/front_end/testcases/runtime_checks_new/stub_from_interface_covariantImpl_from_interface.dart.strong.transformed.expect b/pkg/front_end/testcases/runtime_checks_new/stub_from_interface_covariantImpl_from_interface.dart.strong.transformed.expect
index ac4f277..19c97dc 100644
--- a/pkg/front_end/testcases/runtime_checks_new/stub_from_interface_covariantImpl_from_interface.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/runtime_checks_new/stub_from_interface_covariantImpl_from_interface.dart.strong.transformed.expect
@@ -7,12 +7,32 @@
     : super core::Object::•()
     ;
   method f(core::int* x, core::int* y) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class I<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::I<self::I::T*>*
     : super core::Object::•()
     ;
   abstract method f(generic-covariant-impl self::I::T* x, core::Object* y) → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class C extends self::B implements self::I<core::int*> {
   synthetic constructor •() → self::C*
diff --git a/pkg/front_end/testcases/runtime_checks_new/stub_from_interface_covariantImpl_from_super.dart.outline.expect b/pkg/front_end/testcases/runtime_checks_new/stub_from_interface_covariantImpl_from_super.dart.outline.expect
index da13fbd..e6ad21b 100644
--- a/pkg/front_end/testcases/runtime_checks_new/stub_from_interface_covariantImpl_from_super.dart.outline.expect
+++ b/pkg/front_end/testcases/runtime_checks_new/stub_from_interface_covariantImpl_from_super.dart.outline.expect
@@ -7,11 +7,31 @@
     ;
   method f(generic-covariant-impl self::B::T* x, core::int* y) → void
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class I extends core::Object {
   synthetic constructor •() → self::I*
     ;
   abstract method f(core::int* x, core::Object* y) → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class C extends self::B<core::int*> implements self::I {
   synthetic constructor •() → self::C*
diff --git a/pkg/front_end/testcases/runtime_checks_new/stub_from_interface_covariantImpl_from_super.dart.strong.expect b/pkg/front_end/testcases/runtime_checks_new/stub_from_interface_covariantImpl_from_super.dart.strong.expect
index 104716d..4e79e15 100644
--- a/pkg/front_end/testcases/runtime_checks_new/stub_from_interface_covariantImpl_from_super.dart.strong.expect
+++ b/pkg/front_end/testcases/runtime_checks_new/stub_from_interface_covariantImpl_from_super.dart.strong.expect
@@ -7,12 +7,32 @@
     : super core::Object::•()
     ;
   method f(generic-covariant-impl self::B::T* x, core::int* y) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class I extends core::Object {
   synthetic constructor •() → self::I*
     : super core::Object::•()
     ;
   abstract method f(core::int* x, core::Object* y) → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class C extends self::B<core::int*> implements self::I {
   synthetic constructor •() → self::C*
diff --git a/pkg/front_end/testcases/runtime_checks_new/stub_from_interface_covariantImpl_from_super.dart.strong.transformed.expect b/pkg/front_end/testcases/runtime_checks_new/stub_from_interface_covariantImpl_from_super.dart.strong.transformed.expect
index 104716d..4e79e15 100644
--- a/pkg/front_end/testcases/runtime_checks_new/stub_from_interface_covariantImpl_from_super.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/runtime_checks_new/stub_from_interface_covariantImpl_from_super.dart.strong.transformed.expect
@@ -7,12 +7,32 @@
     : super core::Object::•()
     ;
   method f(generic-covariant-impl self::B::T* x, core::int* y) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class I extends core::Object {
   synthetic constructor •() → self::I*
     : super core::Object::•()
     ;
   abstract method f(core::int* x, core::Object* y) → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class C extends self::B<core::int*> implements self::I {
   synthetic constructor •() → self::C*
diff --git a/pkg/front_end/testcases/runtime_checks_new/stub_from_interface_covariant_from_interface.dart.outline.expect b/pkg/front_end/testcases/runtime_checks_new/stub_from_interface_covariant_from_interface.dart.outline.expect
index 14d58ab..15259f0 100644
--- a/pkg/front_end/testcases/runtime_checks_new/stub_from_interface_covariant_from_interface.dart.outline.expect
+++ b/pkg/front_end/testcases/runtime_checks_new/stub_from_interface_covariant_from_interface.dart.outline.expect
@@ -7,11 +7,31 @@
     ;
   method f(core::int* x, core::int* y) → void
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class I extends core::Object {
   synthetic constructor •() → self::I*
     ;
   abstract method f(covariant core::int* x, core::Object* y) → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class C extends self::B implements self::I {
   synthetic constructor •() → self::C*
diff --git a/pkg/front_end/testcases/runtime_checks_new/stub_from_interface_covariant_from_interface.dart.strong.expect b/pkg/front_end/testcases/runtime_checks_new/stub_from_interface_covariant_from_interface.dart.strong.expect
index 9fb5fe5..27959d3 100644
--- a/pkg/front_end/testcases/runtime_checks_new/stub_from_interface_covariant_from_interface.dart.strong.expect
+++ b/pkg/front_end/testcases/runtime_checks_new/stub_from_interface_covariant_from_interface.dart.strong.expect
@@ -7,12 +7,32 @@
     : super core::Object::•()
     ;
   method f(core::int* x, core::int* y) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class I extends core::Object {
   synthetic constructor •() → self::I*
     : super core::Object::•()
     ;
   abstract method f(covariant core::int* x, core::Object* y) → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class C extends self::B implements self::I {
   synthetic constructor •() → self::C*
diff --git a/pkg/front_end/testcases/runtime_checks_new/stub_from_interface_covariant_from_interface.dart.strong.transformed.expect b/pkg/front_end/testcases/runtime_checks_new/stub_from_interface_covariant_from_interface.dart.strong.transformed.expect
index 9fb5fe5..27959d3 100644
--- a/pkg/front_end/testcases/runtime_checks_new/stub_from_interface_covariant_from_interface.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/runtime_checks_new/stub_from_interface_covariant_from_interface.dart.strong.transformed.expect
@@ -7,12 +7,32 @@
     : super core::Object::•()
     ;
   method f(core::int* x, core::int* y) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class I extends core::Object {
   synthetic constructor •() → self::I*
     : super core::Object::•()
     ;
   abstract method f(covariant core::int* x, core::Object* y) → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class C extends self::B implements self::I {
   synthetic constructor •() → self::C*
diff --git a/pkg/front_end/testcases/runtime_checks_new/stub_from_interface_covariant_from_super.dart.outline.expect b/pkg/front_end/testcases/runtime_checks_new/stub_from_interface_covariant_from_super.dart.outline.expect
index 630aa3a..84d8aa2 100644
--- a/pkg/front_end/testcases/runtime_checks_new/stub_from_interface_covariant_from_super.dart.outline.expect
+++ b/pkg/front_end/testcases/runtime_checks_new/stub_from_interface_covariant_from_super.dart.outline.expect
@@ -7,11 +7,31 @@
     ;
   method f(covariant core::int* x, core::int* y) → void
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class I extends core::Object {
   synthetic constructor •() → self::I*
     ;
   abstract method f(core::int* x, core::Object* y) → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class C extends self::B implements self::I {
   synthetic constructor •() → self::C*
diff --git a/pkg/front_end/testcases/runtime_checks_new/stub_from_interface_covariant_from_super.dart.strong.expect b/pkg/front_end/testcases/runtime_checks_new/stub_from_interface_covariant_from_super.dart.strong.expect
index 03e32ba..ebb3261 100644
--- a/pkg/front_end/testcases/runtime_checks_new/stub_from_interface_covariant_from_super.dart.strong.expect
+++ b/pkg/front_end/testcases/runtime_checks_new/stub_from_interface_covariant_from_super.dart.strong.expect
@@ -7,12 +7,32 @@
     : super core::Object::•()
     ;
   method f(covariant core::int* x, core::int* y) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class I extends core::Object {
   synthetic constructor •() → self::I*
     : super core::Object::•()
     ;
   abstract method f(core::int* x, core::Object* y) → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class C extends self::B implements self::I {
   synthetic constructor •() → self::C*
diff --git a/pkg/front_end/testcases/runtime_checks_new/stub_from_interface_covariant_from_super.dart.strong.transformed.expect b/pkg/front_end/testcases/runtime_checks_new/stub_from_interface_covariant_from_super.dart.strong.transformed.expect
index 03e32ba..ebb3261 100644
--- a/pkg/front_end/testcases/runtime_checks_new/stub_from_interface_covariant_from_super.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/runtime_checks_new/stub_from_interface_covariant_from_super.dart.strong.transformed.expect
@@ -7,12 +7,32 @@
     : super core::Object::•()
     ;
   method f(covariant core::int* x, core::int* y) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class I extends core::Object {
   synthetic constructor •() → self::I*
     : super core::Object::•()
     ;
   abstract method f(core::int* x, core::Object* y) → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class C extends self::B implements self::I {
   synthetic constructor •() → self::C*
diff --git a/pkg/front_end/testcases/set_literals/disambiguation_rule.dart.strong.transformed.expect b/pkg/front_end/testcases/set_literals/disambiguation_rule.dart.strong.transformed.expect
index c5bd85d..16c9b4b 100644
--- a/pkg/front_end/testcases/set_literals/disambiguation_rule.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/set_literals/disambiguation_rule.dart.strong.transformed.expect
@@ -107,8 +107,8 @@
       asy::_completeOnAsyncReturn(:async_completer, :return_value);
       return;
     }
-    on dynamic catch(dynamic :exception, core::StackTrace* :stack_trace) {
-      :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+    on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
+      :async_completer.{asy::Completer::completeError}(exception, stack_trace);
     }
   :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
@@ -134,8 +134,8 @@
       asy::_completeOnAsyncReturn(:async_completer, :return_value);
       return;
     }
-    on dynamic catch(dynamic :exception, core::StackTrace* :stack_trace) {
-      :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+    on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
+      :async_completer.{asy::Completer::completeError}(exception, stack_trace);
     }
   :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
@@ -161,8 +161,8 @@
       asy::_completeOnAsyncReturn(:async_completer, :return_value);
       return;
     }
-    on dynamic catch(dynamic :exception, core::StackTrace* :stack_trace) {
-      :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+    on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
+      :async_completer.{asy::Completer::completeError}(exception, stack_trace);
     }
   :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
@@ -188,8 +188,8 @@
       asy::_completeOnAsyncReturn(:async_completer, :return_value);
       return;
     }
-    on dynamic catch(dynamic :exception, core::StackTrace* :stack_trace) {
-      :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+    on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
+      :async_completer.{asy::Completer::completeError}(exception, stack_trace);
     }
   :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
@@ -221,8 +221,8 @@
       asy::_completeOnAsyncReturn(:async_completer, :return_value);
       return;
     }
-    on dynamic catch(dynamic :exception, core::StackTrace* :stack_trace) {
-      :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+    on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
+      :async_completer.{asy::Completer::completeError}(exception, stack_trace);
     }
   :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
@@ -254,8 +254,8 @@
       asy::_completeOnAsyncReturn(:async_completer, :return_value);
       return;
     }
-    on dynamic catch(dynamic :exception, core::StackTrace* :stack_trace) {
-      :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+    on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
+      :async_completer.{asy::Completer::completeError}(exception, stack_trace);
     }
   :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
diff --git a/pkg/front_end/testcases/strong.status b/pkg/front_end/testcases/strong.status
index 8707c0c..1dab5fd 100644
--- a/pkg/front_end/testcases/strong.status
+++ b/pkg/front_end/testcases/strong.status
@@ -15,11 +15,13 @@
 general/abstract_members: TypeCheckError
 general/accessors: RuntimeError
 general/ambiguous_exports: RuntimeError # Expected, this file exports two main methods.
+general/async_method_with_invalid_type: Crash
 general/await_in_non_async: RuntimeError # Expected.
 general/bug21938: TypeCheckError
 general/bug30695: TypeCheckError
 general/bug31124: RuntimeError # Test has no main method (and we shouldn't add one).
 general/call: TypeCheckError
+general/callable_type_variable: TypeCheckError
 general/candidate_found: TypeCheckError
 general/cascade: RuntimeError
 general/constructor_initializer_invalid: RuntimeError # Fails execution after recovery
@@ -219,6 +221,7 @@
 rasta/unresolved_constructor: RuntimeError
 rasta/unresolved_for_in: RuntimeError
 rasta/unresolved_recovery: TypeCheckError
+regress/ambiguous_builder_01: Crash
 regress/issue_29976: RuntimeError # Tests runtime behavior of error recovery.
 regress/issue_29982: RuntimeError # Tests runtime behavior of error recovery.
 regress/issue_30836: RuntimeError # Issue 30836.
diff --git a/pkg/front_end/testcases/text_serialization.status b/pkg/front_end/testcases/text_serialization.status
index 7ea610f..4e96791 100644
--- a/pkg/front_end/testcases/text_serialization.status
+++ b/pkg/front_end/testcases/text_serialization.status
@@ -15,11 +15,13 @@
 general/abstract_members: TypeCheckError
 general/accessors: RuntimeError
 general/ambiguous_exports: RuntimeError
+general/async_method_with_invalid_type: Crash
 general/await_in_non_async: RuntimeError
 general/bug21938: TypeCheckError
 general/bug30695: TypeCheckError
 general/bug31124: RuntimeError
 general/call: TypeCheckError
+general/callable_type_variable: TypeCheckError
 general/candidate_found: TypeCheckError
 general/cascade: RuntimeError
 general/constructor_initializer_invalid: RuntimeError
@@ -217,6 +219,7 @@
 rasta/unresolved_constructor: RuntimeError
 rasta/unresolved_for_in: RuntimeError
 rasta/unresolved_recovery: TypeCheckError
+regress/ambiguous_builder_01: Crash
 regress/issue_29976: RuntimeError
 regress/issue_29982: RuntimeError
 regress/issue_30836: RuntimeError
diff --git a/pkg/front_end/testcases/textual_outline.status b/pkg/front_end/testcases/textual_outline.status
index bbf696b..35cfe7a 100644
--- a/pkg/front_end/testcases/textual_outline.status
+++ b/pkg/front_end/testcases/textual_outline.status
@@ -21,6 +21,7 @@
 regress/utf_16_le_content.crash: EmptyOutput
 
 rasta/issue_000032: FormatterCrash
+regress/ambiguous_builder_01: FormatterCrash
 regress/issue_34614: FormatterCrash
 extensions/ambiguous: FormatterCrash
 extensions/annotations: FormatterCrash
diff --git a/pkg/front_end/testcases/top_level_variance_test.dart.outline.expect b/pkg/front_end/testcases/top_level_variance_test.dart.outline.expect
index e6c10ea..065b821 100644
--- a/pkg/front_end/testcases/top_level_variance_test.dart.outline.expect
+++ b/pkg/front_end/testcases/top_level_variance_test.dart.outline.expect
@@ -18,10 +18,30 @@
 class A<X extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::A<self::A::X*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B<X extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::B<self::B::X*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method toF<X extends core::Object* = dynamic>(self::toF::X* x) → <Y extends self::toF::X* = dynamic>() →* void
   ;
diff --git a/pkg/front_end/testcases/top_level_variance_test.dart.strong.expect b/pkg/front_end/testcases/top_level_variance_test.dart.strong.expect
index 4fcc413..dd07876 100644
--- a/pkg/front_end/testcases/top_level_variance_test.dart.strong.expect
+++ b/pkg/front_end/testcases/top_level_variance_test.dart.strong.expect
@@ -19,11 +19,31 @@
   synthetic constructor •() → self::A<self::A::X*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B<X extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::B<self::B::X*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method toF<X extends core::Object* = dynamic>(self::toF::X* x) → <Y extends self::toF::X* = dynamic>() →* void
   return null;
diff --git a/pkg/front_end/testcases/top_level_variance_test.dart.strong.transformed.expect b/pkg/front_end/testcases/top_level_variance_test.dart.strong.transformed.expect
index 4fcc413..dd07876 100644
--- a/pkg/front_end/testcases/top_level_variance_test.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/top_level_variance_test.dart.strong.transformed.expect
@@ -19,11 +19,31 @@
   synthetic constructor •() → self::A<self::A::X*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B<X extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::B<self::B::X*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method toF<X extends core::Object* = dynamic>(self::toF::X* x) → <Y extends self::toF::X* = dynamic>() →* void
   return null;
diff --git a/pkg/front_end/testcases/top_level_variance_test.dart.weak.expect b/pkg/front_end/testcases/top_level_variance_test.dart.weak.expect
index 4fcc413..dd07876 100644
--- a/pkg/front_end/testcases/top_level_variance_test.dart.weak.expect
+++ b/pkg/front_end/testcases/top_level_variance_test.dart.weak.expect
@@ -19,11 +19,31 @@
   synthetic constructor •() → self::A<self::A::X*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B<X extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::B<self::B::X*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method toF<X extends core::Object* = dynamic>(self::toF::X* x) → <Y extends self::toF::X* = dynamic>() →* void
   return null;
diff --git a/pkg/front_end/testcases/top_level_variance_test.dart.weak.transformed.expect b/pkg/front_end/testcases/top_level_variance_test.dart.weak.transformed.expect
index 4fcc413..dd07876 100644
--- a/pkg/front_end/testcases/top_level_variance_test.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/top_level_variance_test.dart.weak.transformed.expect
@@ -19,11 +19,31 @@
   synthetic constructor •() → self::A<self::A::X*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B<X extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::B<self::B::X*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method toF<X extends core::Object* = dynamic>(self::toF::X* x) → <Y extends self::toF::X* = dynamic>() →* void
   return null;
diff --git a/pkg/front_end/testcases/triple_shift/invalid_operator.dart.outline.expect b/pkg/front_end/testcases/triple_shift/invalid_operator.dart.outline.expect
index f27ac1c..2a5b6e8 100644
--- a/pkg/front_end/testcases/triple_shift/invalid_operator.dart.outline.expect
+++ b/pkg/front_end/testcases/triple_shift/invalid_operator.dart.outline.expect
@@ -39,42 +39,112 @@
     ;
   operator >>>() → dynamic
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Operators2 extends core::Object {
   synthetic constructor •() → self::Operators2*
     ;
   operator >>>(dynamic a, dynamic b) → dynamic
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Operators3 extends core::Object {
   synthetic constructor •() → self::Operators3*
     ;
   operator >>>([dynamic a]) → dynamic
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Operators4 extends core::Object {
   synthetic constructor •() → self::Operators4*
     ;
   operator >>>({dynamic a}) → dynamic
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Operators5 extends core::Object {
   synthetic constructor •() → self::Operators5*
     ;
   operator >>>(dynamic a, [dynamic b]) → dynamic
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Operators6 extends core::Object {
   synthetic constructor •() → self::Operators6*
     ;
   operator >>>(dynamic a, {dynamic b}) → dynamic
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Operators7 extends core::Object {
   synthetic constructor •() → self::Operators7*
     ;
   operator >>><T extends core::Object* = dynamic>(dynamic a) → dynamic
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/triple_shift/invalid_operator.dart.strong.expect b/pkg/front_end/testcases/triple_shift/invalid_operator.dart.strong.expect
index a8d5e4d..e5eee0f 100644
--- a/pkg/front_end/testcases/triple_shift/invalid_operator.dart.strong.expect
+++ b/pkg/front_end/testcases/triple_shift/invalid_operator.dart.strong.expect
@@ -40,6 +40,16 @@
     ;
   operator >>>() → dynamic
     return true;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Operators2 extends core::Object {
   synthetic constructor •() → self::Operators2*
@@ -47,6 +57,16 @@
     ;
   operator >>>(dynamic a, dynamic b) → dynamic
     return true;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Operators3 extends core::Object {
   synthetic constructor •() → self::Operators3*
@@ -54,6 +74,16 @@
     ;
   operator >>>([dynamic a = #C1]) → dynamic
     return true;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Operators4 extends core::Object {
   synthetic constructor •() → self::Operators4*
@@ -61,6 +91,16 @@
     ;
   operator >>>({dynamic a = #C1}) → dynamic
     return true;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Operators5 extends core::Object {
   synthetic constructor •() → self::Operators5*
@@ -68,6 +108,16 @@
     ;
   operator >>>(dynamic a, [dynamic b = #C1]) → dynamic
     return true;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Operators6 extends core::Object {
   synthetic constructor •() → self::Operators6*
@@ -75,6 +125,16 @@
     ;
   operator >>>(dynamic a, {dynamic b = #C1}) → dynamic
     return true;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Operators7 extends core::Object {
   synthetic constructor •() → self::Operators7*
@@ -82,6 +142,16 @@
     ;
   operator >>><T extends core::Object* = dynamic>(dynamic a) → dynamic
     return true;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
 
diff --git a/pkg/front_end/testcases/triple_shift/invalid_operator.dart.strong.transformed.expect b/pkg/front_end/testcases/triple_shift/invalid_operator.dart.strong.transformed.expect
index a8d5e4d..e5eee0f 100644
--- a/pkg/front_end/testcases/triple_shift/invalid_operator.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/triple_shift/invalid_operator.dart.strong.transformed.expect
@@ -40,6 +40,16 @@
     ;
   operator >>>() → dynamic
     return true;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Operators2 extends core::Object {
   synthetic constructor •() → self::Operators2*
@@ -47,6 +57,16 @@
     ;
   operator >>>(dynamic a, dynamic b) → dynamic
     return true;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Operators3 extends core::Object {
   synthetic constructor •() → self::Operators3*
@@ -54,6 +74,16 @@
     ;
   operator >>>([dynamic a = #C1]) → dynamic
     return true;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Operators4 extends core::Object {
   synthetic constructor •() → self::Operators4*
@@ -61,6 +91,16 @@
     ;
   operator >>>({dynamic a = #C1}) → dynamic
     return true;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Operators5 extends core::Object {
   synthetic constructor •() → self::Operators5*
@@ -68,6 +108,16 @@
     ;
   operator >>>(dynamic a, [dynamic b = #C1]) → dynamic
     return true;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Operators6 extends core::Object {
   synthetic constructor •() → self::Operators6*
@@ -75,6 +125,16 @@
     ;
   operator >>>(dynamic a, {dynamic b = #C1}) → dynamic
     return true;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Operators7 extends core::Object {
   synthetic constructor •() → self::Operators7*
@@ -82,6 +142,16 @@
     ;
   operator >>><T extends core::Object* = dynamic>(dynamic a) → dynamic
     return true;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
 
diff --git a/pkg/front_end/testcases/triple_shift/invalid_operator.dart.weak.expect b/pkg/front_end/testcases/triple_shift/invalid_operator.dart.weak.expect
index a8d5e4d..e5eee0f 100644
--- a/pkg/front_end/testcases/triple_shift/invalid_operator.dart.weak.expect
+++ b/pkg/front_end/testcases/triple_shift/invalid_operator.dart.weak.expect
@@ -40,6 +40,16 @@
     ;
   operator >>>() → dynamic
     return true;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Operators2 extends core::Object {
   synthetic constructor •() → self::Operators2*
@@ -47,6 +57,16 @@
     ;
   operator >>>(dynamic a, dynamic b) → dynamic
     return true;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Operators3 extends core::Object {
   synthetic constructor •() → self::Operators3*
@@ -54,6 +74,16 @@
     ;
   operator >>>([dynamic a = #C1]) → dynamic
     return true;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Operators4 extends core::Object {
   synthetic constructor •() → self::Operators4*
@@ -61,6 +91,16 @@
     ;
   operator >>>({dynamic a = #C1}) → dynamic
     return true;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Operators5 extends core::Object {
   synthetic constructor •() → self::Operators5*
@@ -68,6 +108,16 @@
     ;
   operator >>>(dynamic a, [dynamic b = #C1]) → dynamic
     return true;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Operators6 extends core::Object {
   synthetic constructor •() → self::Operators6*
@@ -75,6 +125,16 @@
     ;
   operator >>>(dynamic a, {dynamic b = #C1}) → dynamic
     return true;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Operators7 extends core::Object {
   synthetic constructor •() → self::Operators7*
@@ -82,6 +142,16 @@
     ;
   operator >>><T extends core::Object* = dynamic>(dynamic a) → dynamic
     return true;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
 
diff --git a/pkg/front_end/testcases/triple_shift/invalid_operator.dart.weak.transformed.expect b/pkg/front_end/testcases/triple_shift/invalid_operator.dart.weak.transformed.expect
index a8d5e4d..e5eee0f 100644
--- a/pkg/front_end/testcases/triple_shift/invalid_operator.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/triple_shift/invalid_operator.dart.weak.transformed.expect
@@ -40,6 +40,16 @@
     ;
   operator >>>() → dynamic
     return true;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Operators2 extends core::Object {
   synthetic constructor •() → self::Operators2*
@@ -47,6 +57,16 @@
     ;
   operator >>>(dynamic a, dynamic b) → dynamic
     return true;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Operators3 extends core::Object {
   synthetic constructor •() → self::Operators3*
@@ -54,6 +74,16 @@
     ;
   operator >>>([dynamic a = #C1]) → dynamic
     return true;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Operators4 extends core::Object {
   synthetic constructor •() → self::Operators4*
@@ -61,6 +91,16 @@
     ;
   operator >>>({dynamic a = #C1}) → dynamic
     return true;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Operators5 extends core::Object {
   synthetic constructor •() → self::Operators5*
@@ -68,6 +108,16 @@
     ;
   operator >>>(dynamic a, [dynamic b = #C1]) → dynamic
     return true;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Operators6 extends core::Object {
   synthetic constructor •() → self::Operators6*
@@ -75,6 +125,16 @@
     ;
   operator >>>(dynamic a, {dynamic b = #C1}) → dynamic
     return true;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Operators7 extends core::Object {
   synthetic constructor •() → self::Operators7*
@@ -82,6 +142,16 @@
     ;
   operator >>><T extends core::Object* = dynamic>(dynamic a) → dynamic
     return true;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {}
 
diff --git a/pkg/front_end/testcases/unified_collections/mixed_entries.dart.strong.transformed.expect b/pkg/front_end/testcases/unified_collections/mixed_entries.dart.strong.transformed.expect
index 94f58ef5..819c6c1 100644
--- a/pkg/front_end/testcases/unified_collections/mixed_entries.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/unified_collections/mixed_entries.dart.strong.transformed.expect
@@ -49,7 +49,7 @@
   if(self::b)
     #t1.{core::Map::[]=}(0, 1);
   else {
-    core::Iterator<core::MapEntry<dynamic, dynamic>*>* :sync-for-iterator = self::map0.{core::Map::entries}.{core::Iterable::iterator};
+    core::Iterator<core::MapEntry<dynamic, dynamic>>* :sync-for-iterator = self::map0.{core::Map::entries}.{core::Iterable::iterator};
     for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
       final core::MapEntry<dynamic, dynamic>* #t2 = :sync-for-iterator.{core::Iterator::current};
       #t1.{core::Map::[]=}(#t2.{core::MapEntry::key}, #t2.{core::MapEntry::value});
@@ -59,7 +59,7 @@
 static field core::Map<dynamic, dynamic>* map2 = block {
   final core::Map<dynamic, dynamic>* #t3 = <dynamic, dynamic>{};
   if(self::b) {
-    core::Iterator<core::MapEntry<dynamic, dynamic>*>* :sync-for-iterator = self::map0.{core::Map::entries}.{core::Iterable::iterator};
+    core::Iterator<core::MapEntry<dynamic, dynamic>>* :sync-for-iterator = self::map0.{core::Map::entries}.{core::Iterable::iterator};
     for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
       final core::MapEntry<dynamic, dynamic>* #t4 = :sync-for-iterator.{core::Iterator::current};
       #t3.{core::Map::[]=}(#t4.{core::MapEntry::key}, #t4.{core::MapEntry::value});
@@ -71,14 +71,14 @@
 static field core::Map<dynamic, dynamic>* map3 = block {
   final core::Map<dynamic, dynamic>* #t5 = <dynamic, dynamic>{};
   if(self::b) {
-    core::Iterator<core::MapEntry<dynamic, dynamic>*>* :sync-for-iterator = self::map0.{core::Map::entries}.{core::Iterable::iterator};
+    core::Iterator<core::MapEntry<dynamic, dynamic>>* :sync-for-iterator = self::map0.{core::Map::entries}.{core::Iterable::iterator};
     for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
       final core::MapEntry<dynamic, dynamic>* #t6 = :sync-for-iterator.{core::Iterator::current};
       #t5.{core::Map::[]=}(#t6.{core::MapEntry::key}, #t6.{core::MapEntry::value});
     }
   }
   else {
-    core::Iterator<core::MapEntry<dynamic, dynamic>*>* :sync-for-iterator = self::map0.{core::Map::entries}.{core::Iterable::iterator};
+    core::Iterator<core::MapEntry<dynamic, dynamic>>* :sync-for-iterator = self::map0.{core::Map::entries}.{core::Iterable::iterator};
     for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
       final core::MapEntry<dynamic, dynamic>* #t7 = :sync-for-iterator.{core::Iterator::current};
       #t5.{core::Map::[]=}(#t7.{core::MapEntry::key}, #t7.{core::MapEntry::value});
@@ -118,7 +118,7 @@
     for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
       dynamic a = :sync-for-iterator.{core::Iterator::current};
       {
-        core::Iterator<core::MapEntry<dynamic, core::int*>*>* :sync-for-iterator = <dynamic, core::int*>{a: 1}.{core::Map::entries}.{core::Iterable::iterator};
+        core::Iterator<core::MapEntry<dynamic, core::int*>>* :sync-for-iterator = <dynamic, core::int*>{a: 1}.{core::Map::entries}.{core::Iterable::iterator};
         for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
           final core::MapEntry<dynamic, core::int*>* #t11 = :sync-for-iterator.{core::Iterator::current};
           #t10.{core::Map::[]=}(#t11.{core::MapEntry::key}, #t11.{core::MapEntry::value});
@@ -134,7 +134,7 @@
     for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
       dynamic a = :sync-for-iterator.{core::Iterator::current};
       {
-        core::Iterator<core::MapEntry<dynamic, core::int*>*>* :sync-for-iterator = <dynamic, core::int*>{a: 1}.{core::Map::entries}.{core::Iterable::iterator};
+        core::Iterator<core::MapEntry<dynamic, core::int*>>* :sync-for-iterator = <dynamic, core::int*>{a: 1}.{core::Map::entries}.{core::Iterable::iterator};
         for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
           final core::MapEntry<dynamic, core::int*>* #t13 = :sync-for-iterator.{core::Iterator::current};
           #t12.{core::Map::[]=}(#t13.{core::MapEntry::key}, #t13.{core::MapEntry::value});
@@ -167,7 +167,7 @@
     #t16.{core::Map::[]=}(0, 1);
   else
     for (core::int* i = 0; i.{core::num::<}(self::list.{core::List::length}); i = i.{core::num::+}(1)) {
-      core::Iterator<core::MapEntry<dynamic, core::int*>*>* :sync-for-iterator = <dynamic, core::int*>{self::list.{core::List::[]}(i): 1}.{core::Map::entries}.{core::Iterable::iterator};
+      core::Iterator<core::MapEntry<dynamic, core::int*>>* :sync-for-iterator = <dynamic, core::int*>{self::list.{core::List::[]}(i): 1}.{core::Map::entries}.{core::Iterable::iterator};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         final core::MapEntry<dynamic, core::int*>* #t17 = :sync-for-iterator.{core::Iterator::current};
         #t16.{core::Map::[]=}(#t17.{core::MapEntry::key}, #t17.{core::MapEntry::value});
@@ -178,7 +178,7 @@
   final core::Map<dynamic, core::int*>* #t18 = <dynamic, core::int*>{};
   if(self::b)
     for (core::int* i = 0; i.{core::num::<}(self::list.{core::List::length}); i = i.{core::num::+}(1)) {
-      core::Iterator<core::MapEntry<dynamic, core::int*>*>* :sync-for-iterator = <dynamic, core::int*>{self::list.{core::List::[]}(i): 1}.{core::Map::entries}.{core::Iterable::iterator};
+      core::Iterator<core::MapEntry<dynamic, core::int*>>* :sync-for-iterator = <dynamic, core::int*>{self::list.{core::List::[]}(i): 1}.{core::Map::entries}.{core::Iterable::iterator};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         final core::MapEntry<dynamic, core::int*>* #t19 = :sync-for-iterator.{core::Iterator::current};
         #t18.{core::Map::[]=}(#t19.{core::MapEntry::key}, #t19.{core::MapEntry::value});
@@ -193,7 +193,7 @@
     #t20.{core::Map::[]=}(0, 1);
   else
     if(self::b) {
-      core::Iterator<core::MapEntry<core::int*, core::int*>*>* :sync-for-iterator = <core::int*, core::int*>{0: 1}.{core::Map::entries}.{core::Iterable::iterator};
+      core::Iterator<core::MapEntry<core::int*, core::int*>>* :sync-for-iterator = <core::int*, core::int*>{0: 1}.{core::Map::entries}.{core::Iterable::iterator};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
         final core::MapEntry<core::int*, core::int*>* #t21 = :sync-for-iterator.{core::Iterator::current};
         #t20.{core::Map::[]=}(#t21.{core::MapEntry::key}, #t21.{core::MapEntry::value});
diff --git a/pkg/front_end/testcases/variance/class_type_parameter_modifier.dart.outline.expect b/pkg/front_end/testcases/variance/class_type_parameter_modifier.dart.outline.expect
index 05b61d8..3921faf 100644
--- a/pkg/front_end/testcases/variance/class_type_parameter_modifier.dart.outline.expect
+++ b/pkg/front_end/testcases/variance/class_type_parameter_modifier.dart.outline.expect
@@ -5,6 +5,16 @@
 class A<X extends core::Object* = dynamic, contravariant Y extends core::Object* = dynamic, invariant Z extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::A<self::A::X*, self::A::Y*, self::A::Z*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/variance/class_type_parameter_modifier.dart.strong.expect b/pkg/front_end/testcases/variance/class_type_parameter_modifier.dart.strong.expect
index cb21b6a..42f9679 100644
--- a/pkg/front_end/testcases/variance/class_type_parameter_modifier.dart.strong.expect
+++ b/pkg/front_end/testcases/variance/class_type_parameter_modifier.dart.strong.expect
@@ -6,6 +6,16 @@
   synthetic constructor •() → self::A<self::A::X*, self::A::Y*, self::A::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   self::A<dynamic, dynamic, dynamic>* a = new self::A::•<dynamic, dynamic, dynamic>();
diff --git a/pkg/front_end/testcases/variance/class_type_parameter_modifier.dart.strong.transformed.expect b/pkg/front_end/testcases/variance/class_type_parameter_modifier.dart.strong.transformed.expect
index cb21b6a..42f9679 100644
--- a/pkg/front_end/testcases/variance/class_type_parameter_modifier.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/variance/class_type_parameter_modifier.dart.strong.transformed.expect
@@ -6,6 +6,16 @@
   synthetic constructor •() → self::A<self::A::X*, self::A::Y*, self::A::Z*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method main() → dynamic {
   self::A<dynamic, dynamic, dynamic>* a = new self::A::•<dynamic, dynamic, dynamic>();
diff --git a/pkg/front_end/testcases/variance/generic_covariance_sound_variance.dart.outline.expect b/pkg/front_end/testcases/variance/generic_covariance_sound_variance.dart.outline.expect
index 0014b22..848fc76 100644
--- a/pkg/front_end/testcases/variance/generic_covariance_sound_variance.dart.outline.expect
+++ b/pkg/front_end/testcases/variance/generic_covariance_sound_variance.dart.outline.expect
@@ -7,10 +7,30 @@
 class Contravariant<contravariant T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::Contravariant<self::Contravariant::T*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Invariant<invariant T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::Invariant<self::Invariant::T*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class A<contravariant T extends core::Object* = dynamic, U extends core::Object* = dynamic, V extends core::Object* = dynamic> extends core::Object {
   final field (self::A::T*) →* void field;
@@ -30,6 +50,16 @@
     ;
   get mapInvFn() → core::Map<self::A::U*, (self::A::V*) →* self::A::V*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B<invariant T extends core::Object* = dynamic> extends core::Object {
   field self::B::T* x;
@@ -39,6 +69,16 @@
     ;
   set y(self::B::T* x) → void
     ;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C<contravariant T extends core::Object* = dynamic> extends core::Object {
   final field (self::C::T*) →* void field;
@@ -48,11 +88,31 @@
     ;
   set x(self::C::T* t) → void
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class D<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::D<self::D::T*>*
     ;
   abstract method method(generic-covariant-impl self::D::T* x) → core::int*;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class E<invariant T extends core::Object* = dynamic> extends core::Object {
   final field (self::E::T*) →* void f;
@@ -60,6 +120,16 @@
     ;
   method method(self::E::T* x) → core::int*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class F<invariant T extends core::Object* = dynamic> extends self::E<self::F::T*> implements self::D<self::F::T*> {
   constructor •((self::F::T*) →* void f) → self::F<self::F::T*>*
@@ -72,6 +142,15 @@
     ;
   method noSuchMethod(core::Invocation* _) → dynamic
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
   no-such-method-forwarder get x() → self::NoSuchMethod::T*
     return this.{self::NoSuchMethod::noSuchMethod}(new core::_InvocationMirror::_withType(#x, 1, const <core::Type*>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{}))) as{TypeError,ForDynamic} self::NoSuchMethod::T*;
   no-such-method-forwarder method method(self::NoSuchMethod::T* x) → self::NoSuchMethod::T*
diff --git a/pkg/front_end/testcases/variance/generic_covariance_sound_variance.dart.strong.expect b/pkg/front_end/testcases/variance/generic_covariance_sound_variance.dart.strong.expect
index c704b6f..aa57d23 100644
--- a/pkg/front_end/testcases/variance/generic_covariance_sound_variance.dart.strong.expect
+++ b/pkg/front_end/testcases/variance/generic_covariance_sound_variance.dart.strong.expect
@@ -8,11 +8,31 @@
   synthetic constructor •() → self::Contravariant<self::Contravariant::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Invariant<invariant T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::Invariant<self::Invariant::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class A<contravariant T extends core::Object* = dynamic, U extends core::Object* = dynamic, V extends core::Object* = dynamic> extends core::Object {
   final field (self::A::T*) →* void field = null;
@@ -30,6 +50,16 @@
     return core::Map::•<self::A::U*, self::Invariant<self::A::V*>*>();
   get mapInvFn() → core::Map<self::A::U*, (self::A::V*) →* self::A::V*>*
     return core::Map::•<self::A::U*, (self::A::V*) →* self::A::V*>();
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B<invariant T extends core::Object* = dynamic> extends core::Object {
   field self::B::T* x = null;
@@ -39,6 +69,16 @@
   method method(self::B::T* x) → self::B::T*
     return x;
   set y(self::B::T* x) → void {}
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C<contravariant T extends core::Object* = dynamic> extends core::Object {
   final field (self::C::T*) →* void field = null;
@@ -47,12 +87,32 @@
     ;
   method method(self::C::T* x, [self::C::T* y = #C1]) → void {}
   set x(self::C::T* t) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class D<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::D<self::D::T*>*
     : super core::Object::•()
     ;
   abstract method method(generic-covariant-impl self::D::T* x) → core::int*;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class E<invariant T extends core::Object* = dynamic> extends core::Object {
   final field (self::E::T*) →* void f;
@@ -62,6 +122,16 @@
   method method(self::E::T* x) → core::int* {
     let final self::E::T* #t1 = x in this.{self::E::f}.call(#t1);
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class F<invariant T extends core::Object* = dynamic> extends self::E<self::F::T*> implements self::D<self::F::T*> {
   constructor •((self::F::T*) →* void f) → self::F<self::F::T*>*
@@ -76,6 +146,15 @@
     ;
   method noSuchMethod(core::Invocation* _) → dynamic
     return 3;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
   no-such-method-forwarder get x() → self::NoSuchMethod::T*
     return this.{self::NoSuchMethod::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 1, #C3, #C4, core::Map::unmodifiable<core::Symbol*, dynamic>(#C5))) as{TypeError,ForDynamic} self::NoSuchMethod::T*;
   no-such-method-forwarder method method(self::NoSuchMethod::T* x) → self::NoSuchMethod::T*
diff --git a/pkg/front_end/testcases/variance/generic_covariance_sound_variance.dart.strong.transformed.expect b/pkg/front_end/testcases/variance/generic_covariance_sound_variance.dart.strong.transformed.expect
index c704b6f..aa57d23 100644
--- a/pkg/front_end/testcases/variance/generic_covariance_sound_variance.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/variance/generic_covariance_sound_variance.dart.strong.transformed.expect
@@ -8,11 +8,31 @@
   synthetic constructor •() → self::Contravariant<self::Contravariant::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Invariant<invariant T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::Invariant<self::Invariant::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class A<contravariant T extends core::Object* = dynamic, U extends core::Object* = dynamic, V extends core::Object* = dynamic> extends core::Object {
   final field (self::A::T*) →* void field = null;
@@ -30,6 +50,16 @@
     return core::Map::•<self::A::U*, self::Invariant<self::A::V*>*>();
   get mapInvFn() → core::Map<self::A::U*, (self::A::V*) →* self::A::V*>*
     return core::Map::•<self::A::U*, (self::A::V*) →* self::A::V*>();
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class B<invariant T extends core::Object* = dynamic> extends core::Object {
   field self::B::T* x = null;
@@ -39,6 +69,16 @@
   method method(self::B::T* x) → self::B::T*
     return x;
   set y(self::B::T* x) → void {}
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class C<contravariant T extends core::Object* = dynamic> extends core::Object {
   final field (self::C::T*) →* void field = null;
@@ -47,12 +87,32 @@
     ;
   method method(self::C::T* x, [self::C::T* y = #C1]) → void {}
   set x(self::C::T* t) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class D<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::D<self::D::T*>*
     : super core::Object::•()
     ;
   abstract method method(generic-covariant-impl self::D::T* x) → core::int*;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class E<invariant T extends core::Object* = dynamic> extends core::Object {
   final field (self::E::T*) →* void f;
@@ -62,6 +122,16 @@
   method method(self::E::T* x) → core::int* {
     let final self::E::T* #t1 = x in this.{self::E::f}.call(#t1);
   }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class F<invariant T extends core::Object* = dynamic> extends self::E<self::F::T*> implements self::D<self::F::T*> {
   constructor •((self::F::T*) →* void f) → self::F<self::F::T*>*
@@ -76,6 +146,15 @@
     ;
   method noSuchMethod(core::Invocation* _) → dynamic
     return 3;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature get runtimeType() → core::Type*;
   no-such-method-forwarder get x() → self::NoSuchMethod::T*
     return this.{self::NoSuchMethod::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 1, #C3, #C4, core::Map::unmodifiable<core::Symbol*, dynamic>(#C5))) as{TypeError,ForDynamic} self::NoSuchMethod::T*;
   no-such-method-forwarder method method(self::NoSuchMethod::T* x) → self::NoSuchMethod::T*
diff --git a/pkg/front_end/testcases/variance/mixin_type_parameter_modifier.dart.outline.expect b/pkg/front_end/testcases/variance/mixin_type_parameter_modifier.dart.outline.expect
index aca96a6..5d96f9e 100644
--- a/pkg/front_end/testcases/variance/mixin_type_parameter_modifier.dart.outline.expect
+++ b/pkg/front_end/testcases/variance/mixin_type_parameter_modifier.dart.outline.expect
@@ -5,6 +5,16 @@
 class A extends core::Object {
   synthetic constructor •() → self::A*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class B<invariant X extends core::Object* = dynamic, Y extends core::Object* = dynamic, contravariant Z extends core::Object* = dynamic> extends self::A /*isMixinDeclaration*/  {
 }
diff --git a/pkg/front_end/testcases/variance/mixin_type_parameter_modifier.dart.strong.expect b/pkg/front_end/testcases/variance/mixin_type_parameter_modifier.dart.strong.expect
index f0cf002..0089029 100644
--- a/pkg/front_end/testcases/variance/mixin_type_parameter_modifier.dart.strong.expect
+++ b/pkg/front_end/testcases/variance/mixin_type_parameter_modifier.dart.strong.expect
@@ -6,6 +6,16 @@
   synthetic constructor •() → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class B<invariant X extends core::Object* = dynamic, Y extends core::Object* = dynamic, contravariant Z extends core::Object* = dynamic> extends self::A /*isMixinDeclaration*/  {
 }
diff --git a/pkg/front_end/testcases/variance/mixin_type_parameter_modifier.dart.strong.transformed.expect b/pkg/front_end/testcases/variance/mixin_type_parameter_modifier.dart.strong.transformed.expect
index f0cf002..0089029 100644
--- a/pkg/front_end/testcases/variance/mixin_type_parameter_modifier.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/variance/mixin_type_parameter_modifier.dart.strong.transformed.expect
@@ -6,6 +6,16 @@
   synthetic constructor •() → self::A*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class B<invariant X extends core::Object* = dynamic, Y extends core::Object* = dynamic, contravariant Z extends core::Object* = dynamic> extends self::A /*isMixinDeclaration*/  {
 }
diff --git a/pkg/front_end/testcases/variance/unconstrained_inference.dart.outline.expect b/pkg/front_end/testcases/variance/unconstrained_inference.dart.outline.expect
index d66cc5c..a160166 100644
--- a/pkg/front_end/testcases/variance/unconstrained_inference.dart.outline.expect
+++ b/pkg/front_end/testcases/variance/unconstrained_inference.dart.outline.expect
@@ -5,14 +5,44 @@
 class Covariant<T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::Covariant<self::Covariant::T*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Contravariant<contravariant T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::Contravariant<self::Contravariant::T*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Invariant<invariant T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::Invariant<self::Invariant::T*>*
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method covariantListInfer<T extends core::Object* = dynamic>(self::Covariant<core::List<self::covariantListInfer::T*>*>* x) → void
   ;
diff --git a/pkg/front_end/testcases/variance/unconstrained_inference.dart.strong.expect b/pkg/front_end/testcases/variance/unconstrained_inference.dart.strong.expect
index 7be4a32..c595749 100644
--- a/pkg/front_end/testcases/variance/unconstrained_inference.dart.strong.expect
+++ b/pkg/front_end/testcases/variance/unconstrained_inference.dart.strong.expect
@@ -6,16 +6,46 @@
   synthetic constructor •() → self::Covariant<self::Covariant::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Contravariant<contravariant T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::Contravariant<self::Contravariant::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Invariant<invariant T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::Invariant<self::Invariant::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method covariantListInfer<T extends core::Object* = dynamic>(self::Covariant<core::List<self::covariantListInfer::T*>*>* x) → void {}
 static method contravariantListInfer<T extends core::Object* = dynamic>(self::Contravariant<core::List<self::contravariantListInfer::T*>*>* x) → void {}
diff --git a/pkg/front_end/testcases/variance/unconstrained_inference.dart.strong.transformed.expect b/pkg/front_end/testcases/variance/unconstrained_inference.dart.strong.transformed.expect
index 7be4a32..c595749 100644
--- a/pkg/front_end/testcases/variance/unconstrained_inference.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/variance/unconstrained_inference.dart.strong.transformed.expect
@@ -6,16 +6,46 @@
   synthetic constructor •() → self::Covariant<self::Covariant::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Contravariant<contravariant T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::Contravariant<self::Contravariant::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Invariant<invariant T extends core::Object* = dynamic> extends core::Object {
   synthetic constructor •() → self::Invariant<self::Invariant::T*>*
     : super core::Object::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static method covariantListInfer<T extends core::Object* = dynamic>(self::Covariant<core::List<self::covariantListInfer::T*>*>* x) → void {}
 static method contravariantListInfer<T extends core::Object* = dynamic>(self::Contravariant<core::List<self::contravariantListInfer::T*>*>* x) → void {}
diff --git a/pkg/front_end/tool/update_expectations.dart b/pkg/front_end/tool/update_expectations.dart
index 6cf4c83..52bcd00 100644
--- a/pkg/front_end/tool/update_expectations.dart
+++ b/pkg/front_end/tool/update_expectations.dart
@@ -9,6 +9,7 @@
   'outline',
   'weak',
   'text_serialization',
+  'textual_outline',
 ];
 
 const List<String> specialSuites = <String>[
@@ -30,8 +31,7 @@
       // Only update comments in the first suite. Note that this only works
       // if the first compilation is a full compilation, i.e. not outline,
       // because comments are generated during body building and inference.
-      if (first)
-        '-DupdateComments=true',
+      if (first) '-DupdateComments=true',
       '-DupdateExpectations=true'
     ]);
     first = false;
diff --git a/pkg/frontend_server/lib/src/expression_compiler.dart b/pkg/frontend_server/lib/src/expression_compiler.dart
index d104a7d..0abad7f 100644
--- a/pkg/frontend_server/lib/src/expression_compiler.dart
+++ b/pkg/frontend_server/lib/src/expression_compiler.dart
@@ -34,9 +34,8 @@
         VariableDeclaration,
         Visitor;
 
-// TODO(annagrin): remove private fields
-// See [issue 40272](https://github.com/dart-lang/sdk/issues/40272)
-
+/// Dart scope
+///
 /// Provides information about symbols available inside a dart scope.
 class DartScope {
   final Library library;
@@ -44,21 +43,21 @@
   final Procedure procedure;
   final Map<String, DartType> definitions;
   final List<TypeParameter> typeParameters;
-  final Set<String> privateFields;
 
   DartScope(this.library, this.cls, this.procedure, this.definitions,
-      this.typeParameters, this.privateFields);
+      this.typeParameters);
 
   @override
   String toString() {
     return '''DartScope {
-      Library = ${library.importUri},
-      Class ${cls?.name},
-      Procedure $procedure,
-      isStatic ${procedure.isStatic},
+      Library: ${library.importUri},
+      Class: ${cls?.name},
+      Procedure: $procedure,
+      isStatic: ${procedure.isStatic},
       Scope: $definitions,
-      typeParameters: $typeParameters,
-      privateFields: $privateFields''';
+      typeParameters: $typeParameters
+    }
+    ''';
   }
 }
 
@@ -77,7 +76,6 @@
   final int _line;
   final int _column;
   int _offset;
-  final Set<String> _privateFields = {};
   final Map<String, DartType> _definitions = {};
   final List<TypeParameter> _typeParameters = [];
 
@@ -86,8 +84,7 @@
   DartScope build() {
     if (_library == null || _procedure == null) return null;
 
-    return DartScope(_library, _cls, _procedure, _definitions, _typeParameters,
-        _privateFields);
+    return DartScope(_library, _cls, _procedure, _definitions, _typeParameters);
   }
 
   @override
@@ -114,20 +111,6 @@
   }
 
   @override
-  void visitField(Field node) {
-    if (node.name.isPrivate) {
-      _privateFields.add(node.name.name);
-    }
-  }
-
-  @override
-  void visitFieldReference(Field node) {
-    if (node.name.isPrivate) {
-      _privateFields.add(node.name.name);
-    }
-  }
-
-  @override
   void visitProcedure(Procedure p) {
     if (_scopeContainsOffset(p.fileOffset, p.fileEndOffset, _offset)) {
       _procedure = p;
@@ -184,11 +167,7 @@
 }
 
 class PrivateFieldsVisitor extends Visitor<void> {
-  final Set<String> _privateFields = {};
-
-  Set<String> getPrivateFields() {
-    return _privateFields;
-  }
+  final Map<String, String> privateFields = {};
 
   @override
   void defaultNode(Node node) {
@@ -196,23 +175,30 @@
   }
 
   @override
+  void visitFieldReference(Field node) {
+    if (node.name.isPrivate) {
+      privateFields[node.name.name] = node.name.library.importUri.toString();
+    }
+  }
+
+  @override
   void visitField(Field node) {
     if (node.name.isPrivate) {
-      _privateFields.add(node.name.name);
+      privateFields[node.name.name] = node.name.library.importUri.toString();
     }
   }
 
   @override
   void visitPropertyGet(PropertyGet node) {
     if (node.name.isPrivate) {
-      _privateFields.add(node.name.name);
+      privateFields[node.name.name] = node.name.library.importUri.toString();
     }
   }
 
   @override
   void visitPropertySet(PropertySet node) {
     if (node.name.isPrivate) {
-      _privateFields.add(node.name.name);
+      privateFields[node.name.name] = node.name.library.importUri.toString();
     }
   }
 }
@@ -428,8 +414,6 @@
       Map<String, String> modules,
       String currentModule,
       String expression) async {
-    var currentModuleVariable = currentModule.split('/').last;
-
     // 1. Compile expression to kernel AST
 
     var procedure = await _compiler.compileExpression(
@@ -459,57 +443,51 @@
     var jsFun = _kernel2jsCompiler.emitFunction(
         procedure.function, '$debugProcedureName');
 
-    // 3. apply (hopefully temporary) workarounds for what ideally
-    // need to be done in FE
-
-    // Unused symbols are not captured inside functions, for example,
-    // core.print is not available inside a top-level function foo()
-    // if foo does not use anything from core.
+    // 3. apply temporary workarounds for what ideally
+    // needs to be done in the compiler
 
     // get private fields accessed by the evaluated expression
     var fieldsCollector = PrivateFieldsVisitor();
     procedure.accept(fieldsCollector);
-    var privateFields = fieldsCollector.getPrivateFields();
-    privateFields
-        .removeWhere((String name) => scope.privateFields.contains(name));
+    var privateFields = fieldsCollector.privateFields;
+
+    // collect libraries where private fields are defined
+    var currentLibraries = <String, String>{};
+    var currentModules = <String, String>{};
+    for (var variable in modules.keys) {
+      var module = modules[variable];
+      for (var field in privateFields.keys) {
+        var library = privateFields[field];
+        var libraryVariable =
+            library.replaceAll('.dart', '').replaceAll('/', '__');
+        if (libraryVariable.endsWith(variable)) {
+          if (currentLibraries[field] != null) {
+            onDiagnostic(_createInternalError(
+                scope.library.importUri,
+                0,
+                0,
+                'ExpressionCompiler: $field defined in more than one library: '
+                '${currentLibraries[field]}, $variable'));
+            return null;
+          }
+          currentLibraries[field] = variable;
+          currentModules[variable] = module;
+        }
+      }
+    }
+
+    _log('ExpressionCompiler: privateFields: $privateFields');
+    _log('ExpressionCompiler: currentLibraries: $currentLibraries');
+    _log('ExpressionCompiler: currentModules: $currentModules');
 
     var body = js_ast.Block([
-      // require dart, core, self and other modules
-      ...modules.keys.map((String variable) {
-        var module = modules[variable];
-        _log('ExpressionCompiler: '
-            'module: $module, '
-            'variable: $variable, '
-            'currentModule: $currentModule');
-
-        return _createRequireModuleStatement(
-            module,
-            // Inside a module, the library variable compiler creates is the
-            // file name without extension (currentModuleVariable).
-            //
-            // Inside a non-package module, the statement we need to produce
-            // to reload the library is
-            //      'main = require('web/main.dart').web__main'
-            //
-            // This is the only special case where currentModuleVariable
-            // ('main') is different from variable and field ('web_name')
-            //
-            // In all other cases, the variable, currentModuleVariable and
-            // the field are the same:
-            //      'library = require('packages/_test/library.dart').library'
-            //
-            // TODO(annagrin): save metadata decribing the variables and fields
-            // to use during compilation and use this information here to make
-            // expression compilation resilient to name convention changes
-            // See [issue 891](https://github.com/dart-lang/webdev/issues/891)
-            module == currentModule ? currentModuleVariable : variable,
-            variable);
-      }),
+      // require modules used in evaluated expression
+      ...currentModules.keys.map((String variable) =>
+          _createRequireModuleStatement(
+              currentModules[variable], variable, variable)),
       // re-create private field accessors
-      ...scope.privateFields
-          .map((String v) => _createPrivateField(v, currentModuleVariable)),
-      ...privateFields
-          .map((String v) => _createPrivateField(v, currentModuleVariable)),
+      ...currentLibraries.keys
+          .map((String k) => _createPrivateField(k, currentLibraries[k])),
       // statements generated by the FE
       ...jsFun.body.statements
     ]);
diff --git a/pkg/frontend_server/test/src/expression_compiler_test.dart b/pkg/frontend_server/test/src/expression_compiler_test.dart
index 996a103..464b53b 100644
--- a/pkg/frontend_server/test/src/expression_compiler_test.dart
+++ b/pkg/frontend_server/test/src/expression_compiler_test.dart
@@ -286,9 +286,6 @@
           expression: 'ret',
           expectedResult: '''
           (function(ret) {
-            let foo = require('foo.dart').foo;
-            let dart = require('dart_sdk').dart;
-            let core = require('dart_sdk').core;
             return ret;
           }(
           1234
@@ -359,11 +356,6 @@
           expression: 'x',
           expectedResult: '''
           (function(x) {
-            let foo = require('foo.dart').foo;
-            let dart = require('dart_sdk').dart;
-            let core = require('dart_sdk').core;
-            let _field = dart.privateName(foo, "_field");
-            let _staticField = dart.privateName(foo, "_staticField");
             return x;
           }.bind(this)(
           1
@@ -377,11 +369,6 @@
           expression: 'this',
           expectedResult: '''
           (function(x) {
-            let foo = require('foo.dart').foo;
-            let dart = require('dart_sdk').dart;
-            let core = require('dart_sdk').core;
-            let _field = dart.privateName(foo, "_field");
-            let _staticField = dart.privateName(foo, "_staticField");
             return this;
           }.bind(this)(
           1
@@ -395,11 +382,6 @@
           expression: 'x + 1',
           expectedResult: '''
           (function(x) {
-            let foo = require('foo.dart').foo;
-            let dart = require('dart_sdk').dart;
-            let core = require('dart_sdk').core;
-            let _field = dart.privateName(foo, "_field");
-            let _staticField = dart.privateName(foo, "_staticField");
             return dart.dsend(x, '+', [1]);
           }.bind(this)(
           1
@@ -413,11 +395,6 @@
           expression: 'x + staticField',
           expectedResult: '''
           (function(x) {
-            let foo = require('foo.dart').foo;
-            let dart = require('dart_sdk').dart;
-            let core = require('dart_sdk').core;
-            let _field = dart.privateName(foo, "_field");
-            let _staticField = dart.privateName(foo, "_staticField");
             return dart.dsend(x, '+', [foo.C.staticField]);
           }.bind(this)(
           1
@@ -432,9 +409,6 @@
           expectedResult: '''
           (function(x) {
             let foo = require('foo.dart').foo;
-            let dart = require('dart_sdk').dart;
-            let core = require('dart_sdk').core;
-            let _field = dart.privateName(foo, "_field");
             let _staticField = dart.privateName(foo, "_staticField");
             return dart.dsend(x, '+', [foo.C._staticField]);
           }.bind(this)(
@@ -449,11 +423,6 @@
           expression: 'x + field',
           expectedResult: '''
           (function(x) {
-            let foo = require('foo.dart').foo;
-            let dart = require('dart_sdk').dart;
-            let core = require('dart_sdk').core;
-            let _field = dart.privateName(foo, "_field");
-            let _staticField = dart.privateName(foo, "_staticField");
             return dart.dsend(x, '+', [this.field]);
           }.bind(this)(
           1
@@ -468,10 +437,7 @@
           expectedResult: '''
           (function(x) {
             let foo = require('foo.dart').foo;
-            let dart = require('dart_sdk').dart;
-            let core = require('dart_sdk').core;
             let _field = dart.privateName(foo, "_field");
-            let _staticField = dart.privateName(foo, "_staticField");
             return dart.dsend(x, '+', [this[_field]]);
           }.bind(this)(
           1
@@ -485,11 +451,6 @@
           expression: 'x + global',
           expectedResult: '''
           (function(x) {
-            let foo = require('foo.dart').foo;
-            let dart = require('dart_sdk').dart;
-            let core = require('dart_sdk').core;
-            let _field = dart.privateName(foo, "_field");
-            let _staticField = dart.privateName(foo, "_staticField");
             return dart.dsend(x, '+', [foo.global]);
           }.bind(this)(
           1
@@ -503,11 +464,6 @@
           expression: 'methodFieldAccess(2)',
           expectedResult: '''
           (function(x) {
-            let foo = require('foo.dart').foo;
-            let dart = require('dart_sdk').dart;
-            let core = require('dart_sdk').core;
-            let _field = dart.privateName(foo, "_field");
-            let _staticField = dart.privateName(foo, "_staticField");
             return this.methodFieldAccess(2);
           }.bind(this)(
           1
@@ -521,11 +477,6 @@
           expression: 'asyncMethod(2)',
           expectedResult: '''
           (function(x) {
-            let foo = require('foo.dart').foo;
-            let dart = require('dart_sdk').dart;
-            let core = require('dart_sdk').core;
-            let _field = dart.privateName(foo, "_field");
-            let _staticField = dart.privateName(foo, "_staticField");
             return this.asyncMethod(2);
           }.bind(this)(
           1
@@ -539,11 +490,6 @@
           expression: '"1234".parseInt()',
           expectedResult: '''
         (function(x) {
-          let foo = require('foo.dart').foo;
-          let dart = require('dart_sdk').dart;
-          let core = require('dart_sdk').core;
-          let _field = dart.privateName(foo, "_field");
-          let _staticField = dart.privateName(foo, "_staticField");
           return foo['NumberParsing|parseInt']("1234");
         }.bind(this)(
         1
@@ -558,10 +504,7 @@
           expectedResult: '''
         (function(x) {
           let foo = require('foo.dart').foo;
-          let dart = require('dart_sdk').dart;
-          let core = require('dart_sdk').core;
           let _field = dart.privateName(foo, "_field");
-          let _staticField = dart.privateName(foo, "_staticField");
           return this[_field] = 2;
         }.bind(this)(
         1
@@ -575,11 +518,6 @@
           expression: 'field = 2',
           expectedResult: '''
           (function(x) {
-            let foo = require('foo.dart').foo;
-            let dart = require('dart_sdk').dart;
-            let core = require('dart_sdk').core;
-            let _field = dart.privateName(foo, "_field");
-            let _staticField = dart.privateName(foo, "_staticField");
             return this.field = 2;
           }.bind(this)(
           1
@@ -594,9 +532,6 @@
           expectedResult: '''
           (function(x) {
             let foo = require('foo.dart').foo;
-            let dart = require('dart_sdk').dart;
-            let core = require('dart_sdk').core;
-            let _field = dart.privateName(foo, "_field");
             let _staticField = dart.privateName(foo, "_staticField");
             return foo.C._staticField = 2;
           }.bind(this)(
@@ -611,11 +546,6 @@
           expression: 'staticField = 2',
           expectedResult: '''
           (function(x) {
-            let foo = require('foo.dart').foo;
-            let dart = require('dart_sdk').dart;
-            let core = require('dart_sdk').core;
-            let _field = dart.privateName(foo, "_field");
-            let _staticField = dart.privateName(foo, "_staticField");
             return foo.C.staticField = 2;
           }.bind(this)(
           1
@@ -678,11 +608,6 @@
           expression: 'x + staticField',
           expectedResult: '''
           (function(x) {
-            let foo = require('foo.dart').foo;
-            let dart = require('dart_sdk').dart;
-            let core = require('dart_sdk').core;
-            let _field = dart.privateName(foo, "_field");
-            let _staticField = dart.privateName(foo, "_staticField");
             return dart.dsend(x, '+', [foo.C.staticField]);
           }.bind(this)(
           1
@@ -697,9 +622,6 @@
           expectedResult: '''
           (function(x) {
             let foo = require('foo.dart').foo;
-            let dart = require('dart_sdk').dart;
-            let core = require('dart_sdk').core;
-            let _field = dart.privateName(foo, "_field");
             let _staticField = dart.privateName(foo, "_staticField");
             return dart.dsend(x, '+', [foo.C._staticField]);
           }.bind(this)(
@@ -714,11 +636,6 @@
           expression: 'x + field',
           expectedResult: '''
           (function(x) {
-            let foo = require('foo.dart').foo;
-            let dart = require('dart_sdk').dart;
-            let core = require('dart_sdk').core;
-            let _field = dart.privateName(foo, "_field");
-            let _staticField = dart.privateName(foo, "_staticField");
             return dart.dsend(x, '+', [this.field]);
           }.bind(this)(
           1
@@ -733,10 +650,7 @@
           expectedResult: '''
           (function(x) {
             let foo = require('foo.dart').foo;
-            let dart = require('dart_sdk').dart;
-            let core = require('dart_sdk').core;
             let _field = dart.privateName(foo, "_field");
-            let _staticField = dart.privateName(foo, "_staticField");
             return dart.dsend(x, '+', [this[_field]]);
           }.bind(this)(
           1
@@ -751,10 +665,7 @@
           expectedResult: '''
           (function(x) {
             let foo = require('foo.dart').foo;
-            let dart = require('dart_sdk').dart;
-            let core = require('dart_sdk').core;
             let _field = dart.privateName(foo, "_field");
-            let _staticField = dart.privateName(foo, "_staticField");
             return this[_field] = 2;
           }.bind(this)(
           1
@@ -768,11 +679,6 @@
           expression: 'field = 2',
           expectedResult: '''
           (function(x) {
-            let foo = require('foo.dart').foo;
-            let dart = require('dart_sdk').dart;
-            let core = require('dart_sdk').core;
-            let _field = dart.privateName(foo, "_field");
-            let _staticField = dart.privateName(foo, "_staticField");
             return this.field = 2;
           }.bind(this)(
           1
@@ -787,9 +693,6 @@
           expectedResult: '''
           (function(x) {
             let foo = require('foo.dart').foo;
-            let dart = require('dart_sdk').dart;
-            let core = require('dart_sdk').core;
-            let _field = dart.privateName(foo, "_field");
             let _staticField = dart.privateName(foo, "_staticField");
             return foo.C._staticField = 2;
           }.bind(this)(
@@ -804,11 +707,6 @@
           expression: 'staticField = 2',
           expectedResult: '''
           (function(x) {
-            let foo = require('foo.dart').foo;
-            let dart = require('dart_sdk').dart;
-            let core = require('dart_sdk').core;
-            let _field = dart.privateName(foo, "_field");
-            let _staticField = dart.privateName(foo, "_staticField");
             return foo.C.staticField = 2;
           }.bind(this)(
           1
@@ -856,10 +754,6 @@
           expression: 'x',
           expectedResult: '''
           (function(x) {
-            let foo = require('foo.dart').foo;
-            let dart = require('dart_sdk').dart;
-            let core = require('dart_sdk').core;
-            let _field = dart.privateName(foo, "_field");
             return x;
           }.bind(this)(
           1
@@ -873,10 +767,6 @@
           expression: 'this',
           expectedResult: '''
           (function(x) {
-            let foo = require('foo.dart').foo;
-            let dart = require('dart_sdk').dart;
-            let core = require('dart_sdk').core;
-            let _field = dart.privateName(foo, "_field");
             return this;
           }.bind(this)(
           1
@@ -946,9 +836,6 @@
           expression: 'x',
           expectedResult: '''
           (function(x, c) {
-            let foo = require('foo.dart').foo;
-            let dart = require('dart_sdk').dart;
-            let core = require('dart_sdk').core;
             return x;
           }(
           1, null
@@ -962,9 +849,6 @@
           expression: 'c',
           expectedResult: '''
           (function(x, c) {
-            let foo = require('foo.dart').foo;
-            let dart = require('dart_sdk').dart;
-            let core = require('dart_sdk').core;
             return c;
           }(
           1, null
@@ -978,9 +862,6 @@
           expression: 'C(1,3)',
           expectedResult: '''
             (function(x, c) {
-              let foo = require('foo.dart').foo;
-              let dart = require('dart_sdk').dart;
-              let core = require('dart_sdk').core;
               return new foo.C.new(1, 3);
             }(
             1, null
@@ -995,8 +876,6 @@
           expectedResult: '''
           (function(x, c) {
             let foo = require('foo.dart').foo;
-            let dart = require('dart_sdk').dart;
-            let core = require('dart_sdk').core;
             let _field = dart.privateName(foo, "_field");
             return new foo.C.new(1, 3)[_field];
           }(
@@ -1011,9 +890,6 @@
           expression: 'C.staticField',
           expectedResult: '''
           (function(x, c) {
-            let foo = require('foo.dart').foo;
-            let dart = require('dart_sdk').dart;
-            let core = require('dart_sdk').core;
             return foo.C.staticField;
           }(
           1, null
@@ -1034,9 +910,6 @@
           expression: 'c.field',
           expectedResult: '''
           (function(x, c) {
-            let foo = require('foo.dart').foo;
-            let dart = require('dart_sdk').dart;
-            let core = require('dart_sdk').core;
             return dart.dloadRepl(c, 'field');
           }(
           1, null
@@ -1051,8 +924,6 @@
           expectedResult: '''
           (function(x, c) {
             let foo = require('foo.dart').foo;
-            let dart = require('dart_sdk').dart;
-            let core = require('dart_sdk').core;
             let _field = dart.privateName(foo, "_field");
             return dart.dloadRepl(c, _field);
           }(
@@ -1067,9 +938,6 @@
           expression: 'c.methodFieldAccess(2)',
           expectedResult: '''
           (function(x, c) {
-            let foo = require('foo.dart').foo;
-            let dart = require('dart_sdk').dart;
-            let core = require('dart_sdk').core;
             return dart.dsendRepl(c, 'methodFieldAccess', [2]);
           }(
           1, null
@@ -1083,9 +951,6 @@
           expression: 'c.asyncMethod(2)',
           expectedResult: '''
           (function(x, c) {
-            let foo = require('foo.dart').foo;
-            let dart = require('dart_sdk').dart;
-            let core = require('dart_sdk').core;
             return dart.dsendRepl(c, 'asyncMethod', [2]);
           }(
           1, null
@@ -1099,9 +964,6 @@
           expression: '"1234".parseInt()',
           expectedResult: '''
         (function(x, c) {
-          let foo = require('foo.dart').foo;
-          let dart = require('dart_sdk').dart;
-          let core = require('dart_sdk').core;
           return foo['NumberParsing|parseInt']("1234");
         }(
         1, null
@@ -1116,8 +978,6 @@
           expectedResult: '''
           (function(x, c) {
             let foo = require('foo.dart').foo;
-            let dart = require('dart_sdk').dart;
-            let core = require('dart_sdk').core;
             let _field = dart.privateName(foo, "_field");
             return dart.dputRepl(c, _field, 2);
           }(
@@ -1132,9 +992,6 @@
           expression: 'c.field = 2',
           expectedResult: '''
           (function(x, c) {
-            let foo = require('foo.dart').foo;
-            let dart = require('dart_sdk').dart;
-            let core = require('dart_sdk').core;
             return dart.dputRepl(c, 'field', 2);
           }(
           1, null
@@ -1155,9 +1012,6 @@
           expression: 'C.staticField = 2',
           expectedResult: '''
           (function(x, c) {
-            let foo = require('foo.dart').foo;
-            let dart = require('dart_sdk').dart;
-            let core = require('dart_sdk').core;
             return foo.C.staticField = 2;
           }(
           1, null
@@ -1171,9 +1025,6 @@
           expression: 'print(x)',
           expectedResult: '''
           (function(x, c) {
-            let foo = require('foo.dart').foo;
-            let dart = require('dart_sdk').dart;
-            let core = require('dart_sdk').core;
             return core.print(x);
           }(
           1, null
@@ -1225,9 +1076,6 @@
           expression: r"'$x+$y+$z'",
           expectedResult: '''
           (function(x, c, y, z) {
-            let foo = require('foo.dart').foo;
-            let dart = require('dart_sdk').dart;
-            let core = require('dart_sdk').core;
             return dart.str(x) + "+" + dart.str(y) + "+" + dart.str(z);
           }(
           1, null, 3, 0
@@ -1241,9 +1089,6 @@
           expression: r"'$y+$z'",
           expectedResult: '''
           (function(x, c, y, z) {
-            let foo = require('foo.dart').foo;
-            let dart = require('dart_sdk').dart;
-            let core = require('dart_sdk').core;
             return dart.str(y) + "+" + dart.str(z);
           }(
           1, null, 3, 0
diff --git a/pkg/kernel/lib/ast.dart b/pkg/kernel/lib/ast.dart
index 1437c1d..b87bc82 100644
--- a/pkg/kernel/lib/ast.dart
+++ b/pkg/kernel/lib/ast.dart
@@ -640,6 +640,8 @@
   Location _getLocationInEnclosingFile(int offset) {
     return _getLocationInComponent(enclosingComponent, fileUri, offset);
   }
+
+  String leakingDebugToString() => astToText.debugLibraryToString(this);
 }
 
 /// An import or export declaration in a library.
diff --git a/pkg/kernel/lib/text/ast_to_text.dart b/pkg/kernel/lib/text/ast_to_text.dart
index e3e2566..bf443da 100644
--- a/pkg/kernel/lib/text/ast_to_text.dart
+++ b/pkg/kernel/lib/text/ast_to_text.dart
@@ -161,6 +161,13 @@
   return '$buffer';
 }
 
+String debugLibraryToString(Library library) {
+  StringBuffer buffer = new StringBuffer();
+  new Printer(buffer, syntheticNames: globalDebuggingNames)
+      .writeLibraryFile(library);
+  return '$buffer';
+}
+
 String componentToString(Component node) {
   StringBuffer buffer = new StringBuffer();
   new Printer(buffer, syntheticNames: new NameSystem())
diff --git a/pkg/kernel/lib/text/text_serialization_verifier.dart b/pkg/kernel/lib/text/text_serialization_verifier.dart
index 9b83f3c..30aa8a8 100644
--- a/pkg/kernel/lib/text/text_serialization_verifier.dart
+++ b/pkg/kernel/lib/text/text_serialization_verifier.dart
@@ -2,56 +2,196 @@
 // 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.
 
+import 'dart:convert' show json;
+
 import '../ast.dart';
 
-import '../text/serializer_combinators.dart'
-    show DeserializationState, SerializationState, TextSerializer;
+import '../text/serializer_combinators.dart';
 
 import '../text/text_reader.dart' show TextIterator;
 
-import '../text/text_serializer.dart'
-    show
-        dartTypeSerializer,
-        expressionSerializer,
-        initializeSerializers,
-        statementSerializer;
+import '../text/text_serializer.dart';
 
 const Uri noUri = null;
 
 const int noOffset = -1;
 
-abstract class TextSerializationVerificationFailure {
-  /// [Uri] of the file containing the expression that produced an error during
-  /// the round trip.
-  final Uri uri;
+abstract class RoundTripStatus implements Comparable<RoundTripStatus> {
+  /// The round-trip serialization was run on that [node].
+  final Node node;
 
-  /// Offset within the file with [uri] of the expression that produced an error
-  /// during the round trip.
-  final int offset;
+  /// The context of the failure.
+  ///
+  /// The [context] node is a [TreeNode] and is set either to the node that the
+  /// round-trip serialization failed on or to the closest parent with location.
+  final TreeNode context;
 
-  TextSerializationVerificationFailure(this.uri, this.offset);
+  RoundTripStatus(this.node, {TreeNode context})
+      : context = node is TreeNode && node.location != null ? node : context;
+
+  Uri get uri => context.location.file;
+
+  int get offset => context.fileOffset;
+
+  bool get isSuccess;
+
+  bool get isFailure => !isSuccess;
+
+  String get nameForDebugging;
+
+  int compareTo(RoundTripStatus other) {
+    if (node is TreeNode && other.node is TreeNode) {
+      TreeNode thisNode = this.node;
+      TreeNode otherNode = other.node;
+      Uri thisUri = thisNode.location?.file;
+      Uri otherUri = otherNode.location?.file;
+      int thisOffset = thisNode.fileOffset;
+      int otherOffset = otherNode.fileOffset;
+
+      int compareUri;
+      if (thisUri == null && otherUri == null) {
+        compareUri = 0;
+      } else if (thisUri == null) {
+        compareUri = 1;
+      } else if (otherUri == null) {
+        compareUri = -1;
+      } else {
+        assert(thisUri != null && otherUri != null);
+        compareUri = thisUri.toString().compareTo(otherUri.toString());
+      }
+      if (compareUri != 0) return compareUri;
+
+      int compareOffset;
+      if (thisOffset == null && otherOffset == null) {
+        compareOffset = 0;
+      } else if (thisOffset == null) {
+        compareOffset = 1;
+      } else if (otherOffset == null) {
+        compareOffset = -1;
+      } else {
+        compareOffset = thisOffset = otherOffset;
+      }
+      if (compareOffset != 0) return compareOffset;
+
+      // The "success" outcome has the lowest index.  Make it so that it appears
+      // last, and the failures are at the beginning and are more visible.
+      if (isFailure && other.isSuccess) {
+        return -1;
+      }
+      if (isSuccess && other.isFailure) {
+        return 1;
+      }
+
+      return 0;
+    } else if (node is TreeNode) {
+      return -1;
+    } else {
+      return 1;
+    }
+  }
+
+  void printOn(StringBuffer sb) {
+    sb.writeln(""
+        ";; -------------------------------------"
+        "----------------------------------------");
+    sb.writeln("Status: ${nameForDebugging}");
+    sb.writeln("Node type: ${node.runtimeType}");
+    sb.writeln("Node: ${json.encode(node.leakingDebugToString())}");
+    if (node is TreeNode) {
+      TreeNode treeNode = node;
+      if (treeNode.parent != null) {
+        sb.writeln("Parent type: ${treeNode.parent.runtimeType}");
+        sb.writeln(
+            "Parent: ${json.encode(treeNode.parent.leakingDebugToString())}");
+      }
+    }
+  }
+
+  String toString() {
+    StringBuffer sb = new StringBuffer();
+    printOn(sb);
+    return sb.toString();
+  }
 }
 
-class TextSerializationFailure extends TextSerializationVerificationFailure {
+class RoundTripSuccess extends RoundTripStatus {
+  final String serialized;
+
+  RoundTripSuccess(Node node, this.serialized, {TreeNode context})
+      : super(node, context: context);
+
+  @override
+  bool get isSuccess => true;
+
+  @override
+  String get nameForDebugging => "RoundTripSuccess";
+
+  @override
+  void printOn(StringBuffer sb) {
+    super.printOn(sb);
+    sb.writeln("Serialized: ${serialized}");
+  }
+}
+
+class RoundTripInitialSerializationFailure extends RoundTripStatus {
   final String message;
 
-  TextSerializationFailure(this.message, Uri uri, int offset)
-      : super(uri, offset);
+  RoundTripInitialSerializationFailure(Node node, this.message,
+      {TreeNode context})
+      : super(node, context: context);
+
+  @override
+  bool get isSuccess => false;
+
+  @override
+  String get nameForDebugging => "RoundTripInitialSerializationFailure";
+
+  @override
+  void printOn(StringBuffer sb) {
+    super.printOn(sb);
+    sb.writeln("Message: ${message}");
+  }
 }
 
-class TextDeserializationFailure extends TextSerializationVerificationFailure {
+class RoundTripDeserializationFailure extends RoundTripStatus {
   final String message;
 
-  TextDeserializationFailure(this.message, Uri uri, int offset)
-      : super(uri, offset);
+  RoundTripDeserializationFailure(Node node, this.message, {TreeNode context})
+      : super(node, context: context);
+
+  @override
+  bool get isSuccess => false;
+
+  @override
+  String get nameForDebugging => "RoundTripDeserializationFailure";
+
+  @override
+  void printOn(StringBuffer sb) {
+    super.printOn(sb);
+    sb.writeln("Message: ${message}");
+  }
 }
 
-class TextRoundTripFailure extends TextSerializationVerificationFailure {
+class RoundTripSecondSerializationFailure extends RoundTripStatus {
   final String initial;
   final String serialized;
 
-  TextRoundTripFailure(this.initial, this.serialized, Uri uri, int offset)
-      : super(uri, offset);
+  RoundTripSecondSerializationFailure(Node node, this.initial, this.serialized,
+      {TreeNode context})
+      : super(node, context: context);
+
+  @override
+  bool get isSuccess => false;
+
+  @override
+  String get nameForDebugging => "RoundTripSecondSerializationFailure";
+
+  @override
+  void printOn(StringBuffer sb) {
+    super.printOn(sb);
+    sb.writeln("Initial: ${initial}");
+    sb.writeln("Serialized: ${serialized}");
+  }
 }
 
 class VerificationState {
@@ -233,12 +373,25 @@
 
   static bool isStatementSupported(Statement node) =>
       node is ExpressionStatement ||
-      node is ReturnStatement && node.expression != null;
+      node is ReturnStatement && node.expression != null ||
+      node is Block ||
+      node is VariableDeclaration &&
+          node.parent is Block &&
+          node.name != null ||
+      node is YieldStatement ||
+      node is IfStatement ||
+      node is WhileStatement ||
+      node is DoStatement ||
+      node is ForStatement ||
+      node is ForInStatement && !node.isAsync;
 
   static bool isSupported(Node node) =>
       node is DartType && isDartTypeSupported(node) ||
       node is Expression && isExpressionSupported(node) ||
-      node is Statement && isStatementSupported(node);
+      node is Statement && isStatementSupported(node) ||
+      node is Arguments ||
+      node is FunctionNode && node.body != null ||
+      node is Procedure && node.isStatic && node.kind == ProcedureKind.Method;
 }
 
 class TextSerializationVerifier extends RecursiveVisitor<void> {
@@ -246,19 +399,11 @@
       "text_serialization.showStackTrace",
       defaultValue: false);
 
-  /// List of errors produced during round trips on the visited nodes.
-  final List<TextSerializationVerificationFailure> failures =
-      <TextSerializationVerificationFailure>[];
-
   /// List of status for all round-trip serialization attempts.
-  final List<RoundTripStatus> status = <RoundTripStatus>[];
+  final List<RoundTripStatus> _status = <RoundTripStatus>[];
 
   final CanonicalName root;
 
-  Uri lastSeenUri = noUri;
-
-  int lastSeenOffset = noOffset;
-
   VerificationState _stateStackTop;
 
   TextSerializationVerifier({CanonicalName root})
@@ -266,8 +411,25 @@
     initializeSerializers();
   }
 
+  /// List of errors produced during round trips on the visited nodes.
+  Iterable<RoundTripStatus> get _failures => _status.where((s) => s.isFailure);
+
+  List<RoundTripStatus> get failures => _failures.toList()..sort();
+
   VerificationState get currentState => _stateStackTop;
 
+  TreeNode get lastSeenTreeNodeWithLocation {
+    VerificationState state = _stateStackTop;
+    while (state != null) {
+      Node node = state.node;
+      if (node is TreeNode && node.location != null) {
+        return node;
+      }
+      state = state.parent;
+    }
+    return null;
+  }
+
   void pushStateFor(Node node) {
     _stateStackTop = new VerificationState(_stateStackTop, node);
   }
@@ -288,7 +450,6 @@
   }
 
   void enterNode(node) {
-    storeLastSeenUriAndOffset(node);
     pushStateFor(node);
     currentState.handleDeclarations();
   }
@@ -300,168 +461,110 @@
     }
     List<Node> roundTripReadyNodes = currentState.takeRoundTripReadyNodes();
     for (Node node in roundTripReadyNodes) {
-      status.add(makeRoundTripDispatch(node));
+      makeRoundTripDispatch(node);
     }
     currentState.mergeToParent();
     dropState();
   }
 
-  void storeLastSeenUriAndOffset(Node node) {
-    if (node is TreeNode) {
-      Location location = node.location;
-      if (location != null) {
-        lastSeenUri = location.file;
-        lastSeenOffset = node.fileOffset;
-      }
-    }
-  }
-
   T readNode<T extends Node>(
-      String input, TextSerializer<T> serializer, Uri uri, int offset) {
+      T node, String input, TextSerializer<T> serializer) {
     TextIterator stream = new TextIterator(input, 0);
     stream.moveNext();
     T result;
     try {
-      result =
-          serializer.readFrom(stream, new DeserializationState(null, root));
+      result = serializer.readFrom(stream,
+          new DeserializationState(new DeserializationEnvironment(null), root));
     } catch (exception, stackTrace) {
       String message =
           showStackTrace ? "${exception}\n${stackTrace}" : "${exception}";
-      failures.add(new TextDeserializationFailure(message, uri, offset));
+      _status.add(new RoundTripDeserializationFailure(node, message,
+          context: lastSeenTreeNodeWithLocation));
+      return null;
     }
     if (stream.moveNext()) {
-      failures.add(new TextDeserializationFailure(
-          "unexpected trailing text", uri, offset));
+      _status.add(new RoundTripDeserializationFailure(
+          node, "unexpected trailing text",
+          context: lastSeenTreeNodeWithLocation));
     }
     if (result == null) {
-      failures.add(new TextDeserializationFailure(
-          "Deserialization of the following returned null: '${input}'",
-          uri,
-          offset));
+      _status.add(new RoundTripDeserializationFailure(
+          node, "Deserialization of the following returned null: '${input}'",
+          context: lastSeenTreeNodeWithLocation));
     }
     return result;
   }
 
-  String writeNode<T extends Node>(
-      T node, TextSerializer<T> serializer, Uri uri, int offset) {
+  String writeNode<T extends Node>(T node, TextSerializer<T> serializer) {
     StringBuffer buffer = new StringBuffer();
     try {
-      serializer.writeTo(buffer, node, new SerializationState(null));
+      serializer.writeTo(buffer, node,
+          new SerializationState(new SerializationEnvironment(null)));
     } catch (exception, stackTrace) {
       String message =
           showStackTrace ? "${exception}\n${stackTrace}" : "${exception}";
-      failures.add(new TextSerializationFailure(message, uri, offset));
+      _status.add(new RoundTripInitialSerializationFailure(node, message,
+          context: lastSeenTreeNodeWithLocation));
     }
     return buffer.toString();
   }
 
-  RoundTripStatus makeRoundTripDispatch(Node node) {
+  void makeRoundTripDispatch(Node node) {
     if (node is DartType) {
-      return makeRoundTrip<DartType>(node, dartTypeSerializer);
+      makeRoundTrip<DartType>(node, dartTypeSerializer);
     } else if (node is Expression) {
-      return makeRoundTrip<Expression>(node, expressionSerializer);
+      makeRoundTrip<Expression>(node, expressionSerializer);
     } else if (node is Statement) {
-      return makeRoundTrip<Statement>(node, statementSerializer);
+      makeRoundTrip<Statement>(node, statementSerializer);
+    } else if (node is Arguments) {
+      makeRoundTrip<Arguments>(node, argumentsSerializer);
+    } else if (node is FunctionNode) {
+      makeRoundTrip<FunctionNode>(node, functionNodeSerializer);
+    } else if (node is Procedure) {
+      makeRoundTrip<Procedure>(node, procedureSerializer);
     } else {
       throw new StateError(
-          "Don't know how to make a round trip for a supported node '${node.runtimeType}'");
+          "Don't know how to make a round trip for a supported node "
+          "'${node.runtimeType}'");
     }
   }
 
-  RoundTripStatus makeRoundTrip<T extends Node>(
-      T node, TextSerializer<T> serializer) {
-    String initial = writeNode(node, serializer, lastSeenUri, lastSeenOffset);
+  void makeRoundTrip<T extends Node>(T node, TextSerializer<T> serializer) {
+    int failureCount = _failures.length;
+    String initial = writeNode(node, serializer);
+    if (_failures.length != failureCount) {
+      return;
+    }
 
     // Do the round trip.
-    T deserialized = readNode(initial, serializer, lastSeenUri, lastSeenOffset);
-
-    // The error is reported elsewhere for the case of null.
-    if (deserialized == null) {
-      return new RoundTripStatus(false, node, initial);
+    T deserialized = readNode(node, initial, serializer);
+    if (_failures.length != failureCount) {
+      return;
     }
 
-    String serialized =
-        writeNode(deserialized, serializer, lastSeenUri, lastSeenOffset);
+    if (deserialized == null) {
+      // The error is reported elsewhere for the case of null.
+      return;
+    }
+
+    String serialized = writeNode(deserialized, serializer);
+    if (_failures.length != failureCount) {
+      return;
+    }
 
     if (initial != serialized) {
-      failures.add(new TextRoundTripFailure(
-          initial, serialized, lastSeenUri, lastSeenOffset));
-      return new RoundTripStatus(false, node, initial);
-    }
-    return new RoundTripStatus(true, node, initial);
-  }
-}
-
-class RoundTripStatus implements Comparable<RoundTripStatus> {
-  final bool successful;
-  final Node node;
-  final String serialized;
-
-  RoundTripStatus(this.successful, this.node, this.serialized)
-      : assert(successful != null),
-        assert(node != null),
-        assert(serialized != null);
-
-  void printOn(StringBuffer sb) {
-    sb.writeln(
-        ";; -----------------------------------------------------------------------------");
-    sb.writeln("Status: ${successful ? "OK" : "ERROR"}");
-    sb.writeln("Node type: ${node.runtimeType}");
-    sb.writeln("Node: ${node.leakingDebugToString()}");
-    if (node is TreeNode) {
-      TreeNode treeNode = node;
-      sb.writeln("Parent type: ${treeNode.parent.runtimeType}");
-      sb.writeln("Parent: ${treeNode.parent.leakingDebugToString()}");
-    }
-    sb.writeln("Serialized: ${serialized}");
-    sb.writeln();
-  }
-
-  int compareTo(RoundTripStatus other) {
-    if (node is TreeNode && other.node is TreeNode) {
-      TreeNode thisNode = this.node;
-      TreeNode otherNode = other.node;
-      Uri thisUri = thisNode.location?.file;
-      Uri otherUri = otherNode.location?.file;
-      int thisOffset = thisNode.fileOffset;
-      int otherOffset = otherNode.fileOffset;
-
-      int compareUri;
-      if (thisUri == null && otherUri == null) {
-        compareUri = 0;
-      } else if (thisUri == null) {
-        compareUri = 1;
-      } else if (otherUri == null) {
-        return -1;
-      } else {
-        assert(thisUri != null && otherUri != null);
-        compareUri = thisUri.toString().compareTo(otherUri.toString());
-      }
-      if (compareUri != 0) return compareUri;
-
-      int compareOffset;
-      if (thisOffset == null && otherOffset == null) {
-        compareOffset = 0;
-      } else if (thisOffset == null) {
-        compareOffset = 1;
-      } else if (otherOffset == null) {
-        compareOffset = -1;
-      } else {
-        compareOffset = thisOffset = otherOffset;
-      }
-      if (compareOffset != 0) return compareOffset;
-
-      if (!successful && other.successful) {
-        return -1;
-      } else if (successful && !other.successful) {
-        return 1;
-      }
-
-      return serialized.compareTo(other.serialized);
-    } else if (node is TreeNode) {
-      return -1;
+      _status.add(new RoundTripSecondSerializationFailure(
+          node, initial, serialized,
+          context: lastSeenTreeNodeWithLocation));
     } else {
-      return 1;
+      _status.add(new RoundTripSuccess(node, initial,
+          context: lastSeenTreeNodeWithLocation));
     }
   }
+
+  List<RoundTripStatus> takeStatus() {
+    List<RoundTripStatus> result = _status.toList()..sort();
+    _status.clear();
+    return result;
+  }
 }
diff --git a/pkg/kernel/lib/text/text_serializer.dart b/pkg/kernel/lib/text/text_serializer.dart
index 70fa064..3dcc63f 100644
--- a/pkg/kernel/lib/text/text_serializer.dart
+++ b/pkg/kernel/lib/text/text_serializer.dart
@@ -386,13 +386,8 @@
       keyType: tuple.first, valueType: tuple.second, isConst: true);
 }
 
-TextSerializer<Let> letSerializer = new Wrapped(
-    unwrapLet,
-    wrapLet,
-    new Bind(
-        new Binder(variableDeclarationSerializer, getVariableDeclarationName,
-            setVariableDeclarationName),
-        expressionSerializer));
+TextSerializer<Let> letSerializer = new Wrapped(unwrapLet, wrapLet,
+    new Bind(variableDeclarationSerializer, expressionSerializer));
 
 Tuple2<VariableDeclaration, Expression> unwrapLet(Let expression) {
   return new Tuple2(expression.variable, expression.body);
@@ -816,15 +811,19 @@
   return result;
 }
 
-TextSerializer<VariableDeclaration> variableDeclarationSerializer =
+TextSerializer<VariableDeclaration> variableDeclarationSerializer = new Binder(
     new Case(const VariableDeclarationTagger(), {
-  "var": varDeclarationSerializer,
-  "final": finalDeclarationSerializer,
-  "const": constDeclarationSerializer,
-});
+      "var": varDeclarationSerializer,
+      "final": finalDeclarationSerializer,
+      "const": constDeclarationSerializer,
+    }),
+    getVariableDeclarationName,
+    setVariableDeclarationName);
 
-const TextSerializer<TypeParameter> typeParameterSerializer =
-    const Wrapped(unwrapTypeParameter, wrapTypeParameter, const DartString());
+TextSerializer<TypeParameter> typeParameterSerializer = new Binder(
+    const Wrapped(unwrapTypeParameter, wrapTypeParameter, const DartString()),
+    getTypeParameterName,
+    setTypeParameterName);
 
 String unwrapTypeParameter(TypeParameter node) => node.name;
 
@@ -833,9 +832,7 @@
 TextSerializer<List<TypeParameter>> typeParametersSerializer = new Zip(
     new Rebind(
         new Zip(
-            new Rebind(
-                new ListSerializer(new Binder(typeParameterSerializer,
-                    getTypeParameterName, setTypeParameterName)),
+            new Rebind(new ListSerializer(typeParameterSerializer),
                 new ListSerializer(dartTypeSerializer)),
             zipTypeParameterBound,
             unzipTypeParameterBound),
@@ -997,6 +994,18 @@
 
   String visitExpressionStatement(ExpressionStatement _) => "expr";
   String visitReturnStatement(ReturnStatement _) => "ret";
+  String visitYieldStatement(YieldStatement _) => "yield";
+  String visitBlock(Block _) => "block";
+  String visitVariableDeclaration(VariableDeclaration _) => "local";
+  String visitIfStatement(IfStatement node) {
+    return node.otherwise == null ? "if" : "if-else";
+  }
+
+  String visitEmptyStatement(EmptyStatement node) => "skip";
+  String visitWhileStatement(WhileStatement node) => "while";
+  String visitDoStatement(DoStatement node) => "do-while";
+  String visitForStatement(ForStatement node) => "for";
+  String visitForInStatement(ForInStatement node) => "for-in";
 }
 
 TextSerializer<ExpressionStatement> expressionStatementSerializer = new Wrapped(
@@ -1021,6 +1030,175 @@
   return new ReturnStatement(expression);
 }
 
+TextSerializer<YieldStatement> yieldStatementSerializer =
+    new Wrapped(unwrapYieldStatement, wrapYieldStatement, expressionSerializer);
+
+Expression unwrapYieldStatement(YieldStatement node) => node.expression;
+
+YieldStatement wrapYieldStatement(Expression expression) {
+  return new YieldStatement(expression);
+}
+
+TextSerializer<Block> blockSerializer =
+    new Wrapped(unwrapBlock, wrapBlock, const BlockSerializer());
+
+List<Statement> unwrapBlock(Block node) => node.statements;
+
+Block wrapBlock(List<Statement> statements) => new Block(statements);
+
+/// Serializer for [Block]s.
+///
+/// [BlockSerializer] is a combination of [ListSerializer] and [Bind].  As in
+/// the case of [ListSerializer], [BlockSerializer] is a sequence of statements.
+/// As in the case of [Bind], a statement in a block can be a
+/// [VariableDeclaration] introducing binders that are bound in the rest of the
+/// statements in the block.  Effectively, [BlockSerializer] could have been
+/// expressed in terms of [ListSerializer] and [Bind], but that would transform
+/// blocks like {stmt1; stmt2; stmt3;} into {stmt1; {stmt2; {stmt3; {}}}} via
+/// the round-trip, and an extra pass will be required to flatten the
+/// unnecessary nested blocks.  Instead, [BlockSerializer] is implemented
+/// without direct invocations of either [ListSerializer] or [Bind], but with a
+/// certain internal correspondence to how they work.
+class BlockSerializer extends TextSerializer<List<Statement>> {
+  const BlockSerializer();
+
+  List<Statement> readFrom(
+      Iterator<Object> stream, DeserializationState state) {
+    if (stream.current is! Iterator) {
+      throw StateError("Expected a list, found an atom: '${stream.current}'.");
+    }
+    Iterator<Object> list = stream.current;
+    list.moveNext();
+    List<Statement> result = [];
+    DeserializationState currentState = state;
+    while (list.current != null) {
+      currentState = new DeserializationState(
+          new DeserializationEnvironment(currentState.environment),
+          currentState.nameRoot);
+      result.add(statementSerializer.readFrom(list, currentState));
+      currentState.environment.close();
+    }
+    stream.moveNext();
+    return result;
+  }
+
+  void writeTo(StringBuffer buffer, List<Statement> statements,
+      SerializationState state) {
+    buffer.write('(');
+    SerializationState currentState = state;
+    for (int i = 0; i < statements.length; ++i) {
+      if (i != 0) buffer.write(' ');
+      currentState = new SerializationState(
+          new SerializationEnvironment(currentState.environment));
+      statementSerializer.writeTo(buffer, statements[i], currentState);
+      currentState.environment.close();
+    }
+    buffer.write(')');
+  }
+}
+
+TextSerializer<IfStatement> ifStatementSerializer = new Wrapped(
+    unwrapIfStatement,
+    wrapIfStatement,
+    Tuple2Serializer(expressionSerializer, statementSerializer));
+
+Tuple2<Expression, Statement> unwrapIfStatement(IfStatement node) {
+  return new Tuple2(node.condition, node.then);
+}
+
+IfStatement wrapIfStatement(Tuple2<Expression, Statement> tuple) {
+  return new IfStatement(tuple.first, tuple.second, null);
+}
+
+TextSerializer<IfStatement> ifElseStatementSerializer = new Wrapped(
+    unwrapIfElseStatement,
+    wrapIfElseStatement,
+    Tuple3Serializer(
+        expressionSerializer, statementSerializer, statementSerializer));
+
+Tuple3<Expression, Statement, Statement> unwrapIfElseStatement(
+    IfStatement node) {
+  return new Tuple3(node.condition, node.then, node.otherwise);
+}
+
+IfStatement wrapIfElseStatement(
+    Tuple3<Expression, Statement, Statement> tuple) {
+  return new IfStatement(tuple.first, tuple.second, tuple.third);
+}
+
+TextSerializer<EmptyStatement> emptyStatementSerializer =
+    new Wrapped(unwrapEmptyStatement, wrapEmptyStatement, const Nothing());
+
+void unwrapEmptyStatement(EmptyStatement node) {}
+
+EmptyStatement wrapEmptyStatement(void ignored) => new EmptyStatement();
+
+TextSerializer<WhileStatement> whileStatementSerializer = new Wrapped(
+    unwrapWhileStatement,
+    wrapWhileStatement,
+    new Tuple2Serializer(expressionSerializer, statementSerializer));
+
+Tuple2<Expression, Statement> unwrapWhileStatement(WhileStatement node) {
+  return new Tuple2(node.condition, node.body);
+}
+
+WhileStatement wrapWhileStatement(Tuple2<Expression, Statement> tuple) {
+  return new WhileStatement(tuple.first, tuple.second);
+}
+
+TextSerializer<DoStatement> doStatementSerializer = new Wrapped(
+    unwrapDoStatement,
+    wrapDoStatement,
+    new Tuple2Serializer(statementSerializer, expressionSerializer));
+
+Tuple2<Statement, Expression> unwrapDoStatement(DoStatement node) {
+  return new Tuple2(node.body, node.condition);
+}
+
+DoStatement wrapDoStatement(Tuple2<Statement, Expression> tuple) {
+  return new DoStatement(tuple.first, tuple.second);
+}
+
+TextSerializer<ForStatement> forStatementSerializer = new Wrapped(
+    unwrapForStatement,
+    wrapForStatement,
+    new Bind(
+        ListSerializer(variableDeclarationSerializer),
+        new Tuple3Serializer(expressionSerializer,
+            new ListSerializer(expressionSerializer), statementSerializer)));
+
+Tuple2<List<VariableDeclaration>,
+        Tuple3<Expression, List<Expression>, Statement>>
+    unwrapForStatement(ForStatement node) {
+  return new Tuple2(
+      node.variables, new Tuple3(node.condition, node.updates, node.body));
+}
+
+ForStatement wrapForStatement(
+    Tuple2<List<VariableDeclaration>,
+            Tuple3<Expression, List<Expression>, Statement>>
+        tuple) {
+  return new ForStatement(
+      tuple.first, tuple.second.first, tuple.second.second, tuple.second.third);
+}
+
+TextSerializer<ForInStatement> forInStatementSerializer = new Wrapped(
+    unwrapForInStatement,
+    wrapForInStatement,
+    new Tuple2Serializer(expressionSerializer,
+        new Bind(variableDeclarationSerializer, statementSerializer)));
+
+Tuple2<Expression, Tuple2<VariableDeclaration, Statement>> unwrapForInStatement(
+    ForInStatement node) {
+  return new Tuple2(node.iterable, new Tuple2(node.variable, node.body));
+}
+
+ForInStatement wrapForInStatement(
+    Tuple2<Expression, Tuple2<VariableDeclaration, Statement>> tuple) {
+  return new ForInStatement(
+      tuple.second.first, tuple.first, tuple.second.second);
+}
+
 Case<Statement> statementSerializer =
     new Case.uninitialized(const StatementTagger());
 
@@ -1051,12 +1229,9 @@
         new Rebind(
             typeParametersSerializer,
             new Tuple3Serializer(
-                new ListSerializer(new Binder(variableDeclarationSerializer,
-                    getVariableDeclarationName, setVariableDeclarationName)),
-                new ListSerializer(new Binder(variableDeclarationSerializer,
-                    getVariableDeclarationName, setVariableDeclarationName)),
-                new ListSerializer(new Binder(variableDeclarationSerializer,
-                    getVariableDeclarationName, setVariableDeclarationName)))),
+                new ListSerializer(variableDeclarationSerializer),
+                new ListSerializer(variableDeclarationSerializer),
+                new ListSerializer(variableDeclarationSerializer))),
         new Tuple2Serializer(dartTypeSerializer, statementSerializer)));
 
 Tuple2<
@@ -1100,12 +1275,9 @@
         new Rebind(
             typeParametersSerializer,
             new Tuple3Serializer(
-                new ListSerializer(new Binder(variableDeclarationSerializer,
-                    getVariableDeclarationName, setVariableDeclarationName)),
-                new ListSerializer(new Binder(variableDeclarationSerializer,
-                    getVariableDeclarationName, setVariableDeclarationName)),
-                new ListSerializer(new Binder(variableDeclarationSerializer,
-                    getVariableDeclarationName, setVariableDeclarationName)))),
+                new ListSerializer(variableDeclarationSerializer),
+                new ListSerializer(variableDeclarationSerializer),
+                new ListSerializer(variableDeclarationSerializer))),
         new Tuple2Serializer(dartTypeSerializer, statementSerializer)));
 
 FunctionNode wrapAsyncFunctionNode(
@@ -1133,12 +1305,9 @@
         new Rebind(
             typeParametersSerializer,
             new Tuple3Serializer(
-                new ListSerializer(new Binder(variableDeclarationSerializer,
-                    getVariableDeclarationName, setVariableDeclarationName)),
-                new ListSerializer(new Binder(variableDeclarationSerializer,
-                    getVariableDeclarationName, setVariableDeclarationName)),
-                new ListSerializer(new Binder(variableDeclarationSerializer,
-                    getVariableDeclarationName, setVariableDeclarationName)))),
+                new ListSerializer(variableDeclarationSerializer),
+                new ListSerializer(variableDeclarationSerializer),
+                new ListSerializer(variableDeclarationSerializer))),
         new Tuple2Serializer(dartTypeSerializer, statementSerializer)));
 
 FunctionNode wrapSyncStarFunctionNode(
@@ -1166,12 +1335,9 @@
         new Rebind(
             typeParametersSerializer,
             new Tuple3Serializer(
-                new ListSerializer(new Binder(variableDeclarationSerializer,
-                    getVariableDeclarationName, setVariableDeclarationName)),
-                new ListSerializer(new Binder(variableDeclarationSerializer,
-                    getVariableDeclarationName, setVariableDeclarationName)),
-                new ListSerializer(new Binder(variableDeclarationSerializer,
-                    getVariableDeclarationName, setVariableDeclarationName)))),
+                new ListSerializer(variableDeclarationSerializer),
+                new ListSerializer(variableDeclarationSerializer),
+                new ListSerializer(variableDeclarationSerializer))),
         new Tuple2Serializer(dartTypeSerializer, statementSerializer)));
 
 FunctionNode wrapAsyncStarFunctionNode(
@@ -1200,18 +1366,9 @@
             new Rebind(
                 typeParametersSerializer,
                 new Tuple3Serializer(
-                    new ListSerializer(new Binder(
-                        variableDeclarationSerializer,
-                        getVariableDeclarationName,
-                        setVariableDeclarationName)),
-                    new ListSerializer(new Binder(
-                        variableDeclarationSerializer,
-                        getVariableDeclarationName,
-                        setVariableDeclarationName)),
-                    new ListSerializer(new Binder(
-                        variableDeclarationSerializer,
-                        getVariableDeclarationName,
-                        setVariableDeclarationName)))),
+                    new ListSerializer(variableDeclarationSerializer),
+                    new ListSerializer(variableDeclarationSerializer),
+                    new ListSerializer(variableDeclarationSerializer))),
             new Tuple2Serializer(dartTypeSerializer, statementSerializer)));
 
 FunctionNode wrapSyncYieldingFunctionNode(
@@ -1350,6 +1507,16 @@
   statementSerializer.registerTags({
     "expr": expressionStatementSerializer,
     "ret": returnStatementSerializer,
+    "yield": yieldStatementSerializer,
+    "block": blockSerializer,
+    "local": variableDeclarationSerializer,
+    "if": ifStatementSerializer,
+    "if-else": ifElseStatementSerializer,
+    "skip": emptyStatementSerializer,
+    "while": whileStatementSerializer,
+    "do-while": doStatementSerializer,
+    "for": forStatementSerializer,
+    "for-in": forInStatementSerializer,
   });
   functionNodeSerializer.registerTags({
     "sync": syncFunctionNodeSerializer,
diff --git a/pkg/kernel/lib/transformations/continuation.dart b/pkg/kernel/lib/transformations/continuation.dart
index 6d4444b..b9d747f 100644
--- a/pkg/kernel/lib/transformations/continuation.dart
+++ b/pkg/kernel/lib/transformations/continuation.dart
@@ -15,17 +15,33 @@
 
 class ContinuationVariables {
   static const awaitJumpVar = ':await_jump_var';
-  static const asyncCompleter = ':async_completer';
   static const awaitContextVar = ':await_ctx_var';
+  static const asyncCompleter = ':async_completer';
+  static const asyncOp = ':async_op';
+  static const asyncOpThen = ':async_op_then';
+  static const asyncOpError = ':async_op_error';
   static const asyncStackTraceVar = ':async_stack_trace';
   static const controller = ':controller';
   static const controllerStreamVar = ':controller_stream';
+  static const forIterator = ':for-iterator';
+  static const returnValue = ':return_value';
+  static const stream = ':stream';
+  static const syncForIterator = ':sync-for-iterator';
+  static const syncOpGen = ':sync_op_gen';
+  // sync_op(..) parameter.
+  static const iteratorParam = ':iterator';
+  // async_op(..) parameters.
   static const exceptionParam = ':exception';
   static const stackTraceParam = ':stack_trace';
 
-  static String savedTryContextVar(int depth) => ':saved_try_context_var$depth';
-  static String exceptionVar(int depth) => ':exception$depth';
-  static String stackTraceVar(int depth) => ':stack_trace$depth';
+  static const savedTryContextVarPrefix = ':saved_try_context_var';
+  static const exceptionVarPrefix = ':exception';
+  static const stackTraceVarPrefix = ':stack_trace';
+
+  static String savedTryContextVar(int depth) =>
+      '$savedTryContextVarPrefix$depth';
+  static String exceptionVar(int depth) => '$exceptionVarPrefix$depth';
+  static String stackTraceVar(int depth) => '$stackTraceVarPrefix$depth';
 }
 
 void transformLibraries(
@@ -63,10 +79,10 @@
 class RecursiveContinuationRewriter extends Transformer {
   final HelperNodes helper;
 
-  final VariableDeclaration asyncJumpVariable = new VariableDeclaration(
+  final VariableDeclaration awaitJumpVariable = new VariableDeclaration(
       ContinuationVariables.awaitJumpVar,
       initializer: new IntLiteral(0));
-  final VariableDeclaration asyncContextVariable =
+  final VariableDeclaration awaitContextVariable =
       new VariableDeclaration(ContinuationVariables.awaitContextVar);
 
   StatefulStaticTypeContext staticTypeContext;
@@ -148,7 +164,7 @@
     //  {
     //    final Iterator<T> :sync-for-iterator = <iterable>.iterator;
     //    for (; :sync-for-iterator.moveNext() ;) {
-    //        {var/final} T variable = :iterator.current;
+    //        {var/final} T variable = :sync-for-iterator.current;
     //        ...
     //      }
     //    }
@@ -188,25 +204,26 @@
     final iteratorType = InterfaceType(coreTypes.iteratorClass,
         staticTypeContext.nonNullable, [iterationType]);
 
-    final iterator = VariableDeclaration(':sync-for-iterator',
+    final syncForIterator = VariableDeclaration(
+        ContinuationVariables.syncForIterator,
         initializer: PropertyGet(
             stmt.iterable, Name('iterator'), coreTypes.iterableGetIterator)
           ..fileOffset = stmt.iterable.fileOffset,
         type: iteratorType)
       ..fileOffset = stmt.iterable.fileOffset;
 
-    final condition = MethodInvocation(VariableGet(iterator), Name('moveNext'),
-        Arguments([]), coreTypes.iteratorMoveNext)
+    final condition = MethodInvocation(VariableGet(syncForIterator),
+        Name('moveNext'), Arguments([]), coreTypes.iteratorMoveNext)
       ..fileOffset = stmt.iterable.fileOffset;
 
     final variable = stmt.variable
-      ..initializer = (PropertyGet(
-          VariableGet(iterator), Name('current'), coreTypes.iteratorGetCurrent)
+      ..initializer = (PropertyGet(VariableGet(syncForIterator),
+          Name('current'), coreTypes.iteratorGetCurrent)
         ..fileOffset = stmt.bodyOffset);
 
     final Block body = Block([variable, stmt.body]);
 
-    return Block([iterator, ForStatement([], condition, [], body)])
+    return Block([syncForIterator, ForStatement([], condition, [], body)])
         .accept<TreeNode>(this);
   }
 }
@@ -299,60 +316,142 @@
           ]);
 
   List<VariableDeclaration> variableDeclarations() {
-    asyncJumpVariable.type = staticTypeContext.typeEnvironment.coreTypes
+    awaitJumpVariable.type = staticTypeContext.typeEnvironment.coreTypes
         .intRawType(staticTypeContext.nonNullable);
-    return [asyncJumpVariable, asyncContextVariable]
+    return [awaitJumpVariable, awaitContextVariable]
       ..addAll(createCapturedTryVariables())
       ..addAll(createCapturedCatchVariables());
   }
 }
 
+// Transformer that rewrites all variable references to a given function's
+// parameters.
+// This allows us to e.g. "shadow" the original parameter variables with copies
+// unique to given sub-closure to prevent shared variables being overwritten.
+class ShadowRewriter extends Transformer {
+  final enclosingFunction;
+  Map<VariableDeclaration, VariableDeclaration> _shadowedParameters = {};
+
+  ShadowRewriter(this.enclosingFunction) {
+    for (final parameter in enclosingFunction.positionalParameters
+        .followedBy(enclosingFunction.namedParameters)) {
+      // Put in placeholers so we can allocate new variables lazily- i.e. only
+      // if they're later referenced.
+      _shadowedParameters[parameter] = null;
+    }
+  }
+
+  // Return all used parameters.
+  Iterable<VariableDeclaration> get shadowedParameters =>
+      _shadowedParameters.values.where((e) => e != null);
+
+  VariableDeclaration _rewrite(VariableDeclaration variable) {
+    if (_shadowedParameters.containsKey(variable)) {
+      // Fill in placeholder.
+      if (_shadowedParameters[variable] == null) {
+        _shadowedParameters[variable] = VariableDeclaration(
+          variable.name,
+          type: variable.type,
+          initializer: VariableGet(variable),
+        );
+      }
+      variable = _shadowedParameters[variable];
+    }
+    return variable;
+  }
+
+  @override
+  TreeNode visitVariableGet(VariableGet node) {
+    node = super.visitVariableGet(node);
+    return node..variable = _rewrite(node.variable);
+  }
+
+  @override
+  TreeNode visitVariableSet(VariableSet node) {
+    node = super.visitVariableSet(node);
+    return node..variable = _rewrite(node.variable);
+  }
+}
+
 class SyncStarFunctionRewriter extends ContinuationRewriterBase {
-  final VariableDeclaration iteratorVariable;
+  final VariableDeclaration iteratorParameter;
 
   SyncStarFunctionRewriter(HelperNodes helper, FunctionNode enclosingFunction,
       StatefulStaticTypeContext staticTypeContext)
-      : iteratorVariable = new VariableDeclaration(':iterator')
-          ..type = new InterfaceType(
-              helper.syncIteratorClass, staticTypeContext.nullable, [
-            ContinuationRewriterBase.elementTypeFrom(
-                helper.iterableClass, enclosingFunction.returnType)
-          ]),
+      : iteratorParameter =
+            VariableDeclaration(ContinuationVariables.iteratorParam)
+              ..type = InterfaceType(
+                  helper.syncIteratorClass, staticTypeContext.nullable, [
+                ContinuationRewriterBase.elementTypeFrom(
+                    helper.iterableClass, enclosingFunction.returnType)
+              ]),
         super(helper, enclosingFunction, staticTypeContext);
 
   FunctionNode rewrite() {
-    // :sync_op(:iterator) {
-    //     modified <node.body>;
-    // }
+    // We need to preserve the original parameters passed to the sync* function
+    // because each iteration should start from those parameters. To achieve
+    // this we shadow the original parameters with new variables (which are
+    // initialised to the original parameter values) and rewrite
+    // the body to use these variables instead.
+    final shadowRewriter = ShadowRewriter(enclosingFunction);
+    enclosingFunction.body =
+        enclosingFunction.body.accept<TreeNode>(shadowRewriter);
 
-    // Note: SyncYielding functions have no Dart equivalent. Since they are
-    // synchronous, we use Sync. (Note also that the Dart VM backend uses the
-    // Dart async marker to decide if functions are debuggable.)
-    final nestedClosureVariable = new VariableDeclaration(":sync_op");
-    final function = new FunctionNode(buildClosureBody(),
-        positionalParameters: [iteratorVariable],
+    final syncOpType = FunctionType([iteratorParameter.type],
+        helper.coreTypes.boolLegacyRawType, staticTypeContext.nonNullable);
+
+    final syncOpGenVariable = VariableDeclaration(
+        ContinuationVariables.syncOpGen,
+        type: FunctionType([], syncOpType, staticTypeContext.nonNullable));
+
+    // TODO(cskau): Figure out why inlining this below causes segfaults.
+    // Maybe related to http://dartbug.com/41596 ?
+    final syncOpFN = FunctionNode(buildClosureBody(),
+        positionalParameters: [iteratorParameter],
         requiredParameterCount: 1,
         asyncMarker: AsyncMarker.SyncYielding,
-        dartAsyncMarker: AsyncMarker.Sync)
+        dartAsyncMarker: AsyncMarker.Sync,
+        returnType: helper.coreTypes.boolLegacyRawType)
       ..fileOffset = enclosingFunction.fileOffset
-      ..fileEndOffset = enclosingFunction.fileEndOffset
-      ..returnType = helper.coreTypes.boolLegacyRawType;
+      ..fileEndOffset = enclosingFunction.fileEndOffset;
 
-    final closureFunction =
-        new FunctionDeclaration(nestedClosureVariable, function)
-          ..fileOffset = enclosingFunction.parent.fileOffset;
+    enclosingFunction.body = Block([
+      // :sync_op_gen() {
+      //   :await_jump_var;
+      //   :await_ctx_var;
+      //   return bool (:iterator) yielding {
+      //     modified <node.body> ...
+      //   };
+      // }
+      // Note: SyncYielding functions have no Dart equivalent. Since they are
+      // synchronous, we use Sync. (Note also that the Dart VM backend uses
+      // the Dart async marker to decide if functions are debuggable.)
+      FunctionDeclaration(
+          syncOpGenVariable,
+          FunctionNode(
+              Block([
+                // :await_jump_var, :await_ctx_var.
+                ...variableDeclarations(),
+                // Shadow any used function parameters with local copies.
+                ...shadowRewriter.shadowedParameters,
+                ReturnStatement(FunctionExpression(syncOpFN)),
+              ]),
+              returnType: syncOpType)),
 
-    // return new _SyncIterable<T>(:sync_body);
-    final arguments = new Arguments([new VariableGet(nestedClosureVariable)],
-        types: [elementTypeFromReturnType(helper.iterableClass)]);
-    final returnStatement = new ReturnStatement(
-        new ConstructorInvocation(helper.syncIterableConstructor, arguments));
+      // return _SyncIterable<T>(:sync_op_gen);
+      ReturnStatement(ConstructorInvocation(
+          helper.syncIterableConstructor,
+          Arguments([
+            VariableGet(syncOpGenVariable)
+          ], types: [
+            ContinuationRewriterBase.elementTypeFrom(
+                helper.iterableClass, enclosingFunction.returnType)
+          ]))),
+    ]);
 
-    enclosingFunction.body = new Block([]
-      ..addAll(variableDeclarations())
-      ..addAll([closureFunction, returnStatement]));
     enclosingFunction.body.parent = enclosingFunction;
     enclosingFunction.asyncMarker = AsyncMarker.Sync;
+
     return enclosingFunction;
   }
 
@@ -374,14 +473,14 @@
     var statements = <Statement>[];
     if (node.isYieldStar) {
       statements.add(new ExpressionStatement(new PropertySet(
-          new VariableGet(iteratorVariable),
-          new Name("_yieldEachIterable", helper.coreLibrary),
+          VariableGet(iteratorParameter),
+          new Name('_yieldEachIterable', helper.coreLibrary),
           transformedExpression,
           helper.syncIteratorYieldEachIterable)));
     } else {
       statements.add(new ExpressionStatement(new PropertySet(
-          new VariableGet(iteratorVariable),
-          new Name("_current", helper.coreLibrary),
+          VariableGet(iteratorParameter),
+          new Name('_current', helper.coreLibrary),
           transformedExpression,
           helper.syncIteratorCurrent)));
     }
@@ -419,21 +518,25 @@
       StaticTypeContext staticTypeContext)
       : stackTraceVariable =
             VariableDeclaration(ContinuationVariables.asyncStackTraceVar),
-        nestedClosureVariable = VariableDeclaration(":async_op",
+        nestedClosureVariable = VariableDeclaration(
+            ContinuationVariables.asyncOp,
             type: FunctionType([
               const DynamicType(),
               const DynamicType(),
               helper.coreTypes.stackTraceRawType(staticTypeContext.nullable),
             ], const DynamicType(), staticTypeContext.nonNullable,
                 requiredParameterCount: 0)),
-        thenContinuationVariable = VariableDeclaration(":async_op_then",
+        thenContinuationVariable = VariableDeclaration(
+            ContinuationVariables.asyncOpThen,
             type: FunctionType(const [const DynamicType()], const DynamicType(),
                 staticTypeContext.nonNullable)),
-        catchErrorContinuationVariable = VariableDeclaration(":async_op_error",
-            type: FunctionType([
-              helper.coreTypes.objectRawType(staticTypeContext.nonNullable),
-              helper.coreTypes.stackTraceRawType(staticTypeContext.nonNullable),
-            ], const DynamicType(), staticTypeContext.nonNullable)),
+        catchErrorContinuationVariable =
+            VariableDeclaration(ContinuationVariables.asyncOpError,
+                type: FunctionType([
+                  helper.coreTypes.objectRawType(staticTypeContext.nonNullable),
+                  helper.coreTypes
+                      .stackTraceRawType(staticTypeContext.nonNullable),
+                ], const DynamicType(), staticTypeContext.nonNullable)),
         super(helper, enclosingFunction, staticTypeContext) {}
 
   void setupAsyncContinuations(List<Statement> statements) {
@@ -512,8 +615,8 @@
       ..parent = labeledBody;
     --currentTryDepth;
 
-    var exceptionVariable = new VariableDeclaration(":exception");
-    var stackTraceVariable = new VariableDeclaration(":stack_trace",
+    var exceptionVariable = VariableDeclaration('exception');
+    var stackTraceVariable = VariableDeclaration('stack_trace',
         type:
             helper.coreTypes.stackTraceRawType(staticTypeContext.nonNullable));
 
@@ -884,7 +987,7 @@
       //   }
       var valueVariable = stmt.variable;
 
-      var streamVariable = new VariableDeclaration(':stream',
+      var streamVariable = new VariableDeclaration(ContinuationVariables.stream,
           initializer: stmt.iterable,
           type: stmt.iterable.getStaticType(staticTypeContext));
 
@@ -895,7 +998,8 @@
             new VariableGet(nestedClosureVariable)
           ])));
 
-      var iteratorVariable = new VariableDeclaration(':for-iterator',
+      var forIteratorVariable = VariableDeclaration(
+          ContinuationVariables.forIterator,
           initializer: new ConstructorInvocation(
               helper.streamIteratorConstructor,
               new Arguments(<Expression>[new VariableGet(streamVariable)],
@@ -905,7 +1009,7 @@
 
       // await :for-iterator.moveNext()
       var condition = new AwaitExpression(new MethodInvocation(
-          new VariableGet(iteratorVariable),
+          VariableGet(forIteratorVariable),
           new Name('moveNext'),
           new Arguments(<Expression>[]),
           helper.streamIteratorMoveNext))
@@ -929,7 +1033,7 @@
 
       // T <variable> = :for-iterator.current;
       valueVariable.initializer = new PropertyGet(
-          new VariableGet(iteratorVariable),
+          VariableGet(forIteratorVariable),
           new Name('current'),
           helper.streamIteratorCurrent)
         ..fileOffset = stmt.bodyOffset;
@@ -942,14 +1046,14 @@
       var tryFinalizer = new IfStatement(
           new Not(new MethodInvocation(
               new PropertyGet(
-                  new VariableGet(iteratorVariable),
-                  new Name("_subscription", helper.asyncLibrary),
+                  VariableGet(forIteratorVariable),
+                  new Name('_subscription', helper.asyncLibrary),
                   helper.coreTypes.streamIteratorSubscription),
-              new Name("=="),
+              new Name('=='),
               new Arguments([new NullLiteral()]),
               helper.coreTypes.objectEquals)),
           new ExpressionStatement(new AwaitExpression(new MethodInvocation(
-              new VariableGet(iteratorVariable),
+              VariableGet(forIteratorVariable),
               new Name('cancel'),
               new Arguments(<Expression>[]),
               helper.streamIteratorCancel))),
@@ -960,7 +1064,7 @@
       var block = new Block(<Statement>[
         streamVariable,
         asyncStarListenHelper,
-        iteratorVariable,
+        forIteratorVariable,
         tryFinally
       ]);
       block.accept<TreeNode>(this);
@@ -1112,7 +1216,7 @@
 
     var finallyBody = new ExpressionStatement(new MethodInvocation(
         new VariableGet(controllerVariable),
-        new Name("close"),
+        new Name('close'),
         new Arguments(<Expression>[]),
         helper.asyncStarStreamControllerClose));
 
@@ -1123,7 +1227,7 @@
   Statement buildCatchBody(exceptionVariable, stackTraceVariable) {
     return new ExpressionStatement(new MethodInvocation(
         new VariableGet(controllerVariable),
-        new Name("addError"),
+        new Name('addError'),
         new Arguments(<Expression>[
           new VariableGet(exceptionVariable),
           new VariableGet(stackTraceVariable)
@@ -1195,7 +1299,8 @@
     final completerType = new InterfaceType(helper.asyncAwaitCompleterClass,
         staticTypeContext.nonNullable, completerTypeArguments);
     // final Completer<T> :async_completer = new _AsyncAwaitCompleter<T>();
-    completerVariable = new VariableDeclaration(":async_completer",
+    completerVariable = new VariableDeclaration(
+        ContinuationVariables.asyncCompleter,
         initializer: new ConstructorInvocation(
             helper.asyncAwaitCompleterConstructor,
             new Arguments([], types: completerTypeArguments))
@@ -1204,7 +1309,8 @@
         type: completerType);
     statements.add(completerVariable);
 
-    returnVariable = new VariableDeclaration(":return_value", type: returnType);
+    returnVariable = new VariableDeclaration(ContinuationVariables.returnValue,
+        type: returnType);
     statements.add(returnVariable);
 
     setupAsyncContinuations(statements);
@@ -1232,7 +1338,7 @@
   Statement buildCatchBody(exceptionVariable, stackTraceVariable) {
     return new ExpressionStatement(new MethodInvocation(
         new VariableGet(completerVariable),
-        new Name("completeError"),
+        new Name('completeError'),
         new Arguments([
           new VariableGet(exceptionVariable),
           new VariableGet(stackTraceVariable)
diff --git a/pkg/kernel/lib/type_checker.dart b/pkg/kernel/lib/type_checker.dart
index 07bc35f..9631b2c 100644
--- a/pkg/kernel/lib/type_checker.dart
+++ b/pkg/kernel/lib/type_checker.dart
@@ -351,13 +351,22 @@
         return null;
 
       case AsyncMarker.SyncYielding:
+        // The SyncStar transform wraps the original function body twice,
+        // where the inner most function returns bool.
         TreeNode parent = function.parent;
         while (parent is! FunctionNode) {
           parent = parent.parent;
         }
-        final enclosingFunction = parent as FunctionNode;
-        if (enclosingFunction.dartAsyncMarker == AsyncMarker.SyncStar) {
-          return coreTypes.boolLegacyRawType;
+        var enclosingFunction = parent as FunctionNode;
+        if (enclosingFunction.dartAsyncMarker == AsyncMarker.Sync) {
+          parent = enclosingFunction.parent;
+          while (parent is! FunctionNode) {
+            parent = parent.parent;
+          }
+          enclosingFunction = parent as FunctionNode;
+          if (enclosingFunction.dartAsyncMarker == AsyncMarker.SyncStar) {
+            return coreTypes.boolLegacyRawType;
+          }
         }
         return null;
 
diff --git a/pkg/kernel/test/regression_37753_test.dart b/pkg/kernel/test/regression_37753_test.dart
new file mode 100644
index 0000000..c5448ac
--- /dev/null
+++ b/pkg/kernel/test/regression_37753_test.dart
@@ -0,0 +1,17 @@
+// Copyright (c) 2020, the Dart project authors.  Please see the AUTHORS file
+// 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.
+//
+// Regression test for https://github.com/dart-lang/sdk/issues/37753.
+// A missing piece of transform logic caused nested sync* set to a variable
+// to not get transformed, which would either fail an assert or crash.
+
+Iterable<int> getElements() sync* {
+  Iterable<int> elements;
+  elements = () sync* {
+    yield 7;
+  }();
+  yield* elements;
+}
+
+main() => print(getElements());
diff --git a/pkg/kernel/test/text_serializer_from_kernel_nodes_test.dart b/pkg/kernel/test/text_serializer_from_kernel_nodes_test.dart
index 8035631..fd6a3e1 100644
--- a/pkg/kernel/test/text_serializer_from_kernel_nodes_test.dart
+++ b/pkg/kernel/test/text_serializer_from_kernel_nodes_test.dart
@@ -16,8 +16,8 @@
 class TestCase<T extends Node> {
   final String name;
   final T node;
-  final SerializationState serializationState;
-  final DeserializationState deserializationState;
+  final SerializationState Function() makeSerializationState;
+  final DeserializationState Function() makeDeserializationState;
   final String expectation;
   final TextSerializer<T> serializer;
 
@@ -26,15 +26,17 @@
       this.node,
       this.expectation,
       this.serializer,
-      SerializationState serializationState,
-      DeserializationState deserializationState})
+      SerializationState Function() makeSerializationState,
+      DeserializationState Function() makeDeserializationState})
       : assert(node != null),
         assert(expectation != null),
         assert(serializer != null),
-        this.serializationState =
-            serializationState ?? new SerializationState(null),
-        this.deserializationState = deserializationState ??
-            new DeserializationState(null, new CanonicalName.root());
+        this.makeSerializationState = makeSerializationState ??
+            (() => new SerializationState(new SerializationEnvironment(null))),
+        this.makeDeserializationState = makeDeserializationState ??
+            (() => new DeserializationState(
+                new DeserializationEnvironment(null),
+                new CanonicalName.root()));
 
   T readNode(String input, DeserializationState state) {
     TextIterator stream = new TextIterator(input, 0);
@@ -104,12 +106,12 @@
           name: '/* suppose: dynamic x; */ x = 42;',
           node: new ExpressionStatement(new VariableSet(x, new IntLiteral(42))),
           expectation: '(expr (set-var "x^0" (int 42)))',
-          serializationState: new SerializationState(
-            new SerializationEnvironment(null)
-              ..addBinder(x, 'x^0')
-              ..close(),
-          ),
-          deserializationState: new DeserializationState(
+          makeSerializationState: () => new SerializationState(
+                new SerializationEnvironment(null)
+                  ..addBinder(x, 'x^0')
+                  ..close(),
+              ),
+          makeDeserializationState: () => new DeserializationState(
               new DeserializationEnvironment(null)
                 ..addBinder('x^0', x)
                 ..close(),
@@ -128,8 +130,9 @@
           node: new ExpressionStatement(new StaticGet(field)),
           expectation: ''
               '(expr (get-static "package:foo/bar.dart::@fields::field"))',
-          serializationState: new SerializationState(null),
-          deserializationState: new DeserializationState(null, component.root),
+          makeSerializationState: () => new SerializationState(null),
+          makeDeserializationState: () =>
+              new DeserializationState(null, component.root),
           serializer: statementSerializer);
     }(),
     () {
@@ -146,8 +149,9 @@
           expectation: ''
               '(expr'
               ' (set-static "package:foo/bar.dart::@fields::field" (int 1)))',
-          serializationState: new SerializationState(null),
-          deserializationState: new DeserializationState(null, component.root),
+          makeSerializationState: () => new SerializationState(null),
+          makeDeserializationState: () =>
+              new DeserializationState(null, component.root),
           serializer: statementSerializer);
     }(),
     () {
@@ -172,8 +176,9 @@
           expectation: ''
               '(expr (invoke-static "package:foo/bar.dart::@methods::foo"'
               ' () ((int 42)) ()))',
-          serializationState: new SerializationState(null),
-          deserializationState: new DeserializationState(null, component.root),
+          makeSerializationState: () => new SerializationState(null),
+          makeDeserializationState: () =>
+              new DeserializationState(null, component.root),
           serializer: statementSerializer);
     }(),
     () {
@@ -192,14 +197,14 @@
               '/* suppose A { const A(); const factory A.foo() = A; } */'
               ' const A.foo();',
           node: new ExpressionStatement(new StaticInvocation.byReference(
-              factoryConstructor.reference, new Arguments([]),
-              isConst: true)),
+              factoryConstructor.reference, new Arguments([]), isConst: true)),
           expectation: ''
               '(expr (invoke-const-static'
               ' "package:foo/bar.dart::A::@factories::foo"'
               ' () () ()))',
-          serializationState: new SerializationState(null),
-          deserializationState: new DeserializationState(null, component.root),
+          makeSerializationState: () => new SerializationState(null),
+          makeDeserializationState: () =>
+              new DeserializationState(null, component.root),
           serializer: statementSerializer);
     }(),
     () {
@@ -220,11 +225,11 @@
           expectation: ''
               '(expr (get-direct-prop (get-var "x^0" _)'
               ' "package:foo/bar.dart::A::@fields::field"))',
-          serializationState:
+          makeSerializationState: () =>
               new SerializationState(new SerializationEnvironment(null)
                 ..addBinder(x, 'x^0')
                 ..close()),
-          deserializationState: new DeserializationState(
+          makeDeserializationState: () => new DeserializationState(
               new DeserializationEnvironment(null)
                 ..addBinder('x^0', x)
                 ..close(),
@@ -249,11 +254,11 @@
           expectation: ''
               '(expr (set-direct-prop (get-var "x^0" _)'
               ' "package:foo/bar.dart::A::@fields::field" (int 42)))',
-          serializationState:
+          makeSerializationState: () =>
               new SerializationState(new SerializationEnvironment(null)
                 ..addBinder(x, 'x^0')
                 ..close()),
-          deserializationState: new DeserializationState(
+          makeDeserializationState: () => new DeserializationState(
               new DeserializationEnvironment(null)
                 ..addBinder('x^0', x)
                 ..close(),
@@ -281,11 +286,11 @@
               '(expr (invoke-direct-method (get-var "x^0" _)'
               ' "package:foo/bar.dart::A::@methods::foo"'
               ' () () ()))',
-          serializationState:
+          makeSerializationState: () =>
               new SerializationState(new SerializationEnvironment(null)
                 ..addBinder(x, 'x^0')
                 ..close()),
-          deserializationState: new DeserializationState(
+          makeDeserializationState: () => new DeserializationState(
               new DeserializationEnvironment(null)
                 ..addBinder('x^0', x)
                 ..close(),
@@ -310,8 +315,9 @@
               '(expr (invoke-constructor'
               ' "package:foo/bar.dart::A::@constructors::foo"'
               ' () () ()))',
-          serializationState: new SerializationState(null),
-          deserializationState: new DeserializationState(null, component.root),
+          makeSerializationState: () => new SerializationState(null),
+          makeDeserializationState: () =>
+              new DeserializationState(null, component.root),
           serializer: statementSerializer);
     }(),
     () {
@@ -327,14 +333,14 @@
       return new TestCase<Statement>(
           name: '/* suppose A {const A.foo();} */ const A();',
           node: new ExpressionStatement(new ConstructorInvocation.byReference(
-              constructor.reference, new Arguments([]),
-              isConst: true)),
+              constructor.reference, new Arguments([]), isConst: true)),
           expectation: ''
               '(expr (invoke-const-constructor'
               ' "package:foo/bar.dart::A::@constructors::foo"'
               ' () () ()))',
-          serializationState: new SerializationState(null),
-          deserializationState: new DeserializationState(null, component.root),
+          makeSerializationState: () => new SerializationState(null),
+          makeDeserializationState: () =>
+              new DeserializationState(null, component.root),
           serializer: statementSerializer);
     }(),
     () {
@@ -359,9 +365,9 @@
               '(expr (type (-> ("T^0") ((dynamic)) ((dynamic)) '
               '((-> ("T^1") ((dynamic)) ((dynamic)) () () () '
               '(par "T^1" _))) () () (par "T^0" _))))',
-          serializationState:
+          makeSerializationState: () =>
               new SerializationState(new SerializationEnvironment(null)),
-          deserializationState: new DeserializationState(
+          makeDeserializationState: () => new DeserializationState(
               new DeserializationEnvironment(null), null),
           serializer: statementSerializer);
     }(),
@@ -386,9 +392,9 @@
               '(expr (fun (sync ("T^0") ((dynamic)) ((dynamic)) ((var '
               '"t1^1" (par "T^0" _) _ ())) ((var "t2^2" (par "T^0" _) '
               '_ ())) () (par "T^0" _) (ret (get-var "t1^1" _)))))',
-          serializationState:
+          makeSerializationState: () =>
               new SerializationState(new SerializationEnvironment(null)),
-          deserializationState: new DeserializationState(
+          makeDeserializationState: () => new DeserializationState(
               new DeserializationEnvironment(null), null),
           serializer: statementSerializer);
     }(),
@@ -411,9 +417,9 @@
               '(static-method (public "foo")'
               ' (sync () () () ((var "x^0" (dynamic) _ ())) () ()'
               ' (dynamic) (ret (get-var "x^0" _))))',
-          serializationState:
+          makeSerializationState: () =>
               new SerializationState(new SerializationEnvironment(null)),
-          deserializationState: new DeserializationState(
+          makeDeserializationState: () => new DeserializationState(
               new DeserializationEnvironment(null), null),
           serializer: procedureSerializer);
     }(),
@@ -452,9 +458,9 @@
               ' (sync () () () ((var "x^0" (dynamic) _ ())) () () (dynamic)'
               ' (ret (invoke-static "package:foo/bar.dart::@methods::foo"'
               ' () ((get-var "x^0" _)) ()))))))',
-          serializationState:
+          makeSerializationState: () =>
               new SerializationState(new SerializationEnvironment(null)),
-          deserializationState: new DeserializationState(
+          makeDeserializationState: () => new DeserializationState(
               new DeserializationEnvironment(null), new CanonicalName.root()),
           serializer: librarySerializer);
     }(),
@@ -476,18 +482,30 @@
           expectation: ''
               '(legacy "package:foo/bar.dart"'
               ' ((static-method (public "foo")'
-              ' (sync () () () () () () (interface "package:foo/bar.dart::A" ())'
+              ' (sync () () () () () ()'
+              ' (interface "package:foo/bar.dart::A" ())'
               ' (ret (null))))))',
-          serializationState:
+          makeSerializationState: () =>
               new SerializationState(new SerializationEnvironment(null)),
-          deserializationState: new DeserializationState(
+          makeDeserializationState: () => new DeserializationState(
               new DeserializationEnvironment(null), component.root),
           serializer: librarySerializer);
     }(),
+    () {
+      return new TestCase<Statement>(
+          name: 'dynamic x;',
+          node: VariableDeclaration('x', type: const DynamicType()),
+          expectation: '(local (var "x^0" (dynamic) _ ()))',
+          makeSerializationState: () =>
+              new SerializationState(new SerializationEnvironment(null)),
+          makeDeserializationState: () => new DeserializationState(
+              new DeserializationEnvironment(null), new CanonicalName.root()),
+          serializer: statementSerializer);
+    }(),
   ];
   for (TestCase testCase in tests) {
     String roundTripInput =
-        testCase.writeNode(testCase.node, testCase.serializationState);
+        testCase.writeNode(testCase.node, testCase.makeSerializationState());
     if (roundTripInput != testCase.expectation) {
       failures.add(''
           "* initial serialization for test '${testCase.name}'"
@@ -495,9 +513,9 @@
     }
 
     TreeNode deserialized =
-        testCase.readNode(roundTripInput, testCase.deserializationState);
+        testCase.readNode(roundTripInput, testCase.makeDeserializationState());
     String roundTripOutput =
-        testCase.writeNode(deserialized, testCase.serializationState);
+        testCase.writeNode(deserialized, testCase.makeSerializationState());
     if (roundTripOutput != roundTripInput) {
       failures.add(''
           "* input '${testCase.name}' gave output '${roundTripOutput}'");
diff --git a/pkg/nnbd_migration/lib/instrumentation.dart b/pkg/nnbd_migration/lib/instrumentation.dart
index e8a6404..ba7f2e3 100644
--- a/pkg/nnbd_migration/lib/instrumentation.dart
+++ b/pkg/nnbd_migration/lib/instrumentation.dart
@@ -294,6 +294,9 @@
   void externalDecoratedTypeParameterBound(
       TypeParameterElement typeParameter, DecoratedTypeInfo decoratedType);
 
+  /// Called when the migration process is finished.
+  void finished();
+
   /// Called whenever the migration engine creates a graph edge between
   /// nullability nodes, to report information about the edge that was created,
   /// and why it was created.
diff --git a/pkg/nnbd_migration/lib/migration_cli.dart b/pkg/nnbd_migration/lib/migration_cli.dart
index 41c3f0f..1022433 100644
--- a/pkg/nnbd_migration/lib/migration_cli.dart
+++ b/pkg/nnbd_migration/lib/migration_cli.dart
@@ -3,7 +3,7 @@
 // BSD-style license that can be found in the LICENSE file.
 
 import 'dart:async';
-import 'dart:io';
+import 'dart:io' hide File;
 
 import 'package:analysis_server/src/edit/fix/fix_code_task.dart';
 import 'package:analysis_server/src/edit/fix/non_nullable_fix.dart';
@@ -12,7 +12,8 @@
 import 'package:analyzer/dart/analysis/session.dart';
 import 'package:analyzer/diagnostic/diagnostic.dart';
 import 'package:analyzer/error/error.dart';
-import 'package:analyzer/file_system/file_system.dart' show ResourceProvider;
+import 'package:analyzer/file_system/file_system.dart'
+    show File, ResourceProvider;
 import 'package:analyzer/file_system/physical_file_system.dart';
 import 'package:analyzer/src/dart/analysis/analysis_context_collection.dart';
 import 'package:analyzer/src/error/codes.dart';
@@ -25,6 +26,8 @@
 import 'package:meta/meta.dart';
 import 'package:nnbd_migration/api_for_analysis_server/dartfix_listener_interface.dart';
 import 'package:nnbd_migration/api_for_analysis_server/driver_provider.dart';
+import 'package:nnbd_migration/src/edit_plan.dart';
+import 'package:nnbd_migration/src/utilities/source_edit_diff_formatter.dart';
 import 'package:path/path.dart' show Context;
 
 String _pluralize(int count, String single, {String multiple}) {
@@ -44,6 +47,7 @@
   static const ignoreErrorsFlag = 'ignore-errors';
   static const previewPortOption = 'preview-port';
   static const sdkPathOption = 'sdk-path';
+  static const summaryOption = 'summary';
   static const verboseFlag = 'verbose';
   static const webPreviewFlag = 'web-preview';
 
@@ -57,6 +61,8 @@
 
   final String sdkPath;
 
+  final String summary;
+
   final bool webPreview;
 
   CommandLineOptions(
@@ -65,6 +71,7 @@
       @required this.ignoreErrors,
       @required this.previewPort,
       @required this.sdkPath,
+      @required this.summary,
       @required this.webPreview});
 }
 
@@ -140,11 +147,20 @@
       var rest = argResults.rest;
       String migratePath;
       if (rest.isEmpty) {
-        migratePath = Directory.current.path;
+        migratePath = pathContext.current;
       } else if (rest.length > 1) {
         throw _BadArgException('No more than one path may be specified.');
       } else {
-        migratePath = rest[0];
+        migratePath = pathContext
+            .normalize(pathContext.join(pathContext.current, rest[0]));
+      }
+      var migrateResource = resourceProvider.getResource(migratePath);
+      if (migrateResource is File) {
+        if (migrateResource.exists) {
+          throw _BadArgException('$migratePath is a file.');
+        } else {
+          throw _BadArgException('$migratePath does not exist.');
+        }
       }
       var applyChanges =
           argResults[CommandLineOptions.applyChangesFlag] as bool;
@@ -169,6 +185,7 @@
           sdkPath: argResults[CommandLineOptions.sdkPathOption] as String ??
               defaultSdkPathOverride ??
               getSdkPath(),
+          summary: argResults[CommandLineOptions.summaryOption] as String,
           webPreview: webPreview);
       if (isVerbose) {
         logger = loggerFactory(true);
@@ -195,8 +212,6 @@
     parseCommandLineArgs(args);
     if (exitCode != null) return;
 
-    // TODO(paulberry): if debugging, create instrumentation log
-
     logger.stdout('Migrating ${options.directory}');
     logger.stdout('');
 
@@ -213,10 +228,11 @@
       var fixCodeProcessor = _FixCodeProcessor(context, this);
       dartFixListener = _DartFixListener(
           _DriverProvider(resourceProvider, context.currentSession));
-      nonNullableFix = NonNullableFix(dartFixListener,
+      nonNullableFix = NonNullableFix(dartFixListener, resourceProvider,
           included: [options.directory],
           preferredPort: options.previewPort,
-          enablePreview: options.webPreview);
+          enablePreview: options.webPreview,
+          summaryPath: options.summary);
       fixCodeProcessor.registerCodeTask(nonNullableFix);
       try {
         await fixCodeProcessor.runFirstPhase();
@@ -383,6 +399,9 @@
             'dynamically allocate a port.');
     parser.addOption(CommandLineOptions.sdkPathOption,
         help: 'The path to the Dart SDK.', hide: hide);
+    parser.addOption(CommandLineOptions.summaryOption,
+        help:
+            'Output path for a machine-readable summary of migration changes');
     parser.addFlag(CommandLineOptions.verboseFlag,
         abbr: 'v',
         defaultsTo: false,
@@ -407,10 +426,12 @@
     }
 
     // present a diff-like view
+    var diffStyle = DiffStyle(logger.ansi);
     for (SourceFileEdit sourceFileEdit in migrationResults.sourceChange.edits) {
       String file = sourceFileEdit.file;
       String relPath = pathContext.relative(file, from: options.directory);
-      int count = sourceFileEdit.edits.length;
+      var edits = sourceFileEdit.edits;
+      int count = edits.length;
 
       logger.stdout('');
       logger.stdout('${ansi.emphasized(relPath)} '
@@ -424,8 +445,10 @@
       if (source == null) {
         logger.stdout('  (unable to retrieve source for file)');
       } else {
-        // TODO(paulberry): implement this
-        logger.stdout('  (diff view not yet functional)');
+        for (var line
+            in diffStyle.formatDiff(source, _sourceEditsToAtomicEdits(edits))) {
+          logger.stdout('  $line');
+        }
       }
     }
   }
@@ -489,6 +512,14 @@
       return Logger.standard(ansi: ansi);
     }
   }
+
+  static Map<int, List<AtomicEdit>> _sourceEditsToAtomicEdits(
+      List<SourceEdit> edits) {
+    return {
+      for (var edit in edits)
+        edit.offset: [AtomicEdit.replace(edit.length, edit.replacement)]
+    };
+  }
 }
 
 class _BadArgException implements Exception {
diff --git a/pkg/nnbd_migration/lib/src/edge_builder.dart b/pkg/nnbd_migration/lib/src/edge_builder.dart
index 5d10877..3670f37 100644
--- a/pkg/nnbd_migration/lib/src/edge_builder.dart
+++ b/pkg/nnbd_migration/lib/src/edge_builder.dart
@@ -1725,8 +1725,8 @@
       var type = _variables.decoratedElementType(declaredElement);
       var enclosingElement = declaredElement.enclosingElement;
       if (!declaredElement.isStatic && enclosingElement is ClassElement) {
-        var overriddenElements = _inheritanceManager.getOverridden(
-            enclosingElement.thisType,
+        var overriddenElements = _inheritanceManager.getOverridden2(
+            enclosingElement,
             Name(enclosingElement.library.source.uri, declaredElement.name));
         for (var overriddenElement
             in overriddenElements ?? <ExecutableElement>[]) {
@@ -1734,8 +1734,8 @@
               variable, type, enclosingElement, overriddenElement);
         }
         if (!declaredElement.isFinal) {
-          var overriddenElements = _inheritanceManager.getOverridden(
-              enclosingElement.thisType,
+          var overriddenElements = _inheritanceManager.getOverridden2(
+              enclosingElement,
               Name(enclosingElement.library.source.uri,
                   declaredElement.name + '='));
           for (var overriddenElement
@@ -2032,7 +2032,11 @@
 
   DecoratedType _dispatch(AstNode node, {bool skipNullCheckHint = false}) {
     var type = node?.accept(this);
-    if (!skipNullCheckHint && node is Expression) {
+    if (!skipNullCheckHint &&
+        node is Expression &&
+        // A /*!*/ hint following an AsExpression should be interpreted as a
+        // nullability hint for the type, not a null-check hint.
+        node is! AsExpression) {
       type = _handleNullCheckHint(node, type);
     }
     return type;
@@ -2181,11 +2185,17 @@
           sourceType = _makeNullableDynamicType(compoundOperatorInfo);
         }
       } else {
+        var unwrappedExpression = expression.unParenthesized;
+        var hard = (questionAssignNode == null &&
+                _postDominatedLocals.isReferenceInScope(expression)) ||
+            // An edge from a cast should be hard, so that the cast type
+            // annotation is appropriately made nullable according to the
+            // destination type.
+            unwrappedExpression is AsExpression;
         _checkAssignment(edgeOrigin, FixReasonTarget.root,
             source: sourceType,
             destination: destinationType,
-            hard: questionAssignNode == null &&
-                _postDominatedLocals.isReferenceInScope(expression),
+            hard: hard,
             sourceIsFunctionLiteral: expression is FunctionExpression);
       }
       if (destinationLocalVariable != null) {
@@ -2269,8 +2279,8 @@
       if (declaredElement is! ConstructorElement) {
         var enclosingElement = declaredElement.enclosingElement;
         if (enclosingElement is ClassElement) {
-          var overriddenElements = _inheritanceManager.getOverridden(
-              enclosingElement.thisType,
+          var overriddenElements = _inheritanceManager.getOverridden2(
+              enclosingElement,
               Name(enclosingElement.library.source.uri, declaredElement.name));
           for (var overriddenElement
               in overriddenElements ?? <ExecutableElement>[]) {
@@ -2957,8 +2967,8 @@
   /// [destination].  [origin] should be used as the origin for any edges
   /// created.  [hard] indicates whether a hard edge should be created.
   /// [sourceIsFunctionLiteral] indicates whether the source of the assignment
-  /// is a function literal expression. [sourceIsSetupCall] indicates whether the
-  /// source of the assignment is a function literal passed to the test
+  /// is a function literal expression. [sourceIsSetupCall] indicates whether
+  /// the source of the assignment is a function literal passed to the test
   /// package's `setUp` function.
   void _checkAssignment(EdgeOrigin origin, FixReasonTarget edgeTarget,
       {@required DecoratedType source,
diff --git a/pkg/nnbd_migration/lib/src/edge_origin.dart b/pkg/nnbd_migration/lib/src/edge_origin.dart
index 8348c81..4c43bf7 100644
--- a/pkg/nnbd_migration/lib/src/edge_origin.dart
+++ b/pkg/nnbd_migration/lib/src/edge_origin.dart
@@ -486,8 +486,11 @@
   /// non-nullable.
   final bool isNullable;
 
-  NullabilityCommentOrigin(Source source, TypeAnnotation node, this.isNullable)
-      : super(source, node);
+  NullabilityCommentOrigin(Source source, AstNode node, this.isNullable)
+      : assert(node is TypeAnnotation ||
+            node is FunctionTypedFormalParameter ||
+            (node is FieldFormalParameter && node.parameters != null)),
+        super(source, node);
 
   @override
   String get description =>
diff --git a/pkg/nnbd_migration/lib/src/edit_plan.dart b/pkg/nnbd_migration/lib/src/edit_plan.dart
index d2004de..9c75138 100644
--- a/pkg/nnbd_migration/lib/src/edit_plan.dart
+++ b/pkg/nnbd_migration/lib/src/edit_plan.dart
@@ -366,12 +366,15 @@
   /// caller.
   NodeProducingEditPlan extract(
       AstNode sourceNode, NodeProducingEditPlan innerPlan,
-      {AtomicEditInfo infoBefore, AtomicEditInfo infoAfter}) {
+      {AtomicEditInfo infoBefore,
+      AtomicEditInfo infoAfter,
+      bool alwaysDelete = false}) {
     var parent = innerPlan.sourceNode.parent;
     if (!identical(parent, sourceNode) && parent is ParenthesizedExpression) {
       innerPlan = _ProvisionalParenEditPlan(parent, innerPlan);
     }
-    return _ExtractEditPlan(sourceNode, innerPlan, this, infoBefore, infoAfter);
+    return _ExtractEditPlan(
+        sourceNode, innerPlan, this, infoBefore, infoAfter, alwaysDelete);
   }
 
   /// Converts [plan] to a representation of the concrete edits that need
@@ -424,7 +427,10 @@
   /// made.
   NodeProducingEditPlan makeNullable(NodeProducingEditPlan innerPlan,
       {AtomicEditInfo info}) {
-    assert(innerPlan.sourceNode is TypeAnnotation);
+    var sourceNode = innerPlan.sourceNode;
+    assert(sourceNode is TypeAnnotation ||
+        sourceNode is FunctionTypedFormalParameter ||
+        (sourceNode is FieldFormalParameter && sourceNode.parameters != null));
     return surround(innerPlan, suffix: [AtomicEdit.insert('?', info: info)]);
   }
 
@@ -961,33 +967,35 @@
 
   final AtomicEditInfo _infoAfter;
 
+  /// Whether text-to-be-removed should be removed (as opposed to commented out)
+  /// even when [EditPlan.removeViaComments] is true.
+  final bool _alwaysDelete;
+
   _ExtractEditPlan(AstNode sourceNode, NodeProducingEditPlan innerPlan,
-      this._planner, this._infoBefore, this._infoAfter)
+      this._planner, this._infoBefore, this._infoAfter, this._alwaysDelete)
       : super(sourceNode, innerPlan);
 
   @override
   Map<int, List<AtomicEdit>> _getChanges(bool parens) {
-    // Get the inner changes.  If they already have provsional parens and we
+    // Get the inner changes.  If they already have provisional parens and we
     // need them, use them.
     var useInnerParens = parens && innerPlan is _ProvisionalParenEditPlan;
     var changes = innerPlan._getChanges(useInnerParens);
-    // Extract the inner expression.
     // TODO(paulberry): don't remove comments
+    _RemovalStyle leadingChangeRemovalStyle;
+    _RemovalStyle trailingChangeRemovalStyle;
+    if (_alwaysDelete || !_planner.removeViaComments) {
+      leadingChangeRemovalStyle = _RemovalStyle.delete;
+      trailingChangeRemovalStyle = _RemovalStyle.delete;
+    } else {
+      leadingChangeRemovalStyle = _RemovalStyle.commentSpace;
+      trailingChangeRemovalStyle = _RemovalStyle.spaceComment;
+    }
+    // Extract the inner expression.
     changes = _removeCode(
-            offset,
-            innerPlan.offset,
-            _planner.removeViaComments
-                ? _RemovalStyle.commentSpace
-                : _RemovalStyle.delete,
-            _infoBefore) +
+            offset, innerPlan.offset, leadingChangeRemovalStyle, _infoBefore) +
         changes +
-        _removeCode(
-            innerPlan.end,
-            end,
-            _planner.removeViaComments
-                ? _RemovalStyle.spaceComment
-                : _RemovalStyle.delete,
-            _infoAfter);
+        _removeCode(innerPlan.end, end, trailingChangeRemovalStyle, _infoAfter);
     // Apply parens if needed.
     if (parens && !useInnerParens) {
       changes = _createAddParenChanges(changes);
diff --git a/pkg/nnbd_migration/lib/src/fix_aggregator.dart b/pkg/nnbd_migration/lib/src/fix_aggregator.dart
index ba4452c..09ccfc3 100644
--- a/pkg/nnbd_migration/lib/src/fix_aggregator.dart
+++ b/pkg/nnbd_migration/lib/src/fix_aggregator.dart
@@ -177,7 +177,7 @@
   /// Runs the [FixAggregator] on a [unit] and returns the resulting edits.
   static Map<int, List<AtomicEdit>> run(
       CompilationUnit unit, String sourceText, Map<AstNode, NodeChange> changes,
-      {bool removeViaComments = true, bool warnOnWeakCode = false}) {
+      {bool removeViaComments = false, bool warnOnWeakCode = false}) {
     var planner = EditPlanner(unit.lineInfo, sourceText,
         removeViaComments: removeViaComments);
     var aggregator =
@@ -270,7 +270,7 @@
       // extract it.
       return aggregator.planner.extract(
           node, aggregator.planForNode(name) as NodeProducingEditPlan,
-          infoBefore: changeToRequiredKeywordInfo);
+          infoBefore: changeToRequiredKeywordInfo, alwaysDelete: true);
     } else {
       return aggregator.planner.replace(node,
           [AtomicEdit.insert('required', info: changeToRequiredKeywordInfo)]);
@@ -639,6 +639,20 @@
   }
 }
 
+/// Implementation of [NodeChange] specialized for operating on
+/// [FieldFormalParameter] nodes which are function-typed formal parameters.
+class NodeChangeForFieldFormalParameter
+    extends NodeChangeForType<FieldFormalParameter> {
+  NodeChangeForFieldFormalParameter() : super._();
+}
+
+/// Implementation of [NodeChange] specialized for operating on
+/// [FunctionTypedFormalParameter] nodes.
+class NodeChangeForFunctionTypedFormalParameter
+    extends NodeChangeForType<FunctionTypedFormalParameter> {
+  NodeChangeForFunctionTypedFormalParameter() : super._();
+}
+
 /// Implementation of [NodeChange] specialized for operating on [IfElement]
 /// nodes.
 class NodeChangeForIfElement extends NodeChange<IfElement>
@@ -803,9 +817,9 @@
   }
 }
 
-/// Implementation of [NodeChange] specialized for operating on [TypeAnnotation]
-/// nodes.
-class NodeChangeForTypeAnnotation extends NodeChange<TypeAnnotation> {
+/// Implementation of [NodeChange] specialized for operating on nodes which
+/// represent a type, and can be made and hinted nullable and non-nullable.
+abstract class NodeChangeForType<N extends AstNode> extends NodeChange<N> {
   bool _makeNullable = false;
 
   HintComment _nullabilityHint;
@@ -813,11 +827,11 @@
   /// The decorated type of the type annotation, or `null` if there is no
   /// decorated type info of interest.  If [makeNullable] is `true`, the node
   /// from this type will be attached to the edit that adds the `?`. If
-  /// [_makeNullable] is `false`, the node from this type will be attached to the
-  /// information about why the node wasn't made nullable.
+  /// [_makeNullable] is `false`, the node from this type will be attached to
+  /// the information about why the node wasn't made nullable.
   DecoratedType _decoratedType;
 
-  NodeChangeForTypeAnnotation() : super._();
+  NodeChangeForType._() : super._();
 
   @override
   bool get isInformative => !_makeNullable;
@@ -843,7 +857,7 @@
   }
 
   @override
-  EditPlan _apply(TypeAnnotation node, FixAggregator aggregator) {
+  EditPlan _apply(N node, FixAggregator aggregator) {
     var innerPlan = aggregator.innerPlanForNode(node);
     if (_decoratedType == null) return innerPlan;
     var typeName = _decoratedType.type.getDisplayString(withNullability: false);
@@ -882,6 +896,12 @@
   }
 }
 
+/// Implementation of [NodeChange] specialized for operating on [TypeAnnotation]
+/// nodes.
+class NodeChangeForTypeAnnotation extends NodeChangeForType<TypeAnnotation> {
+  NodeChangeForTypeAnnotation() : super._();
+}
+
 /// Implementation of [NodeChange] specialized for operating on
 /// [VariableDeclarationList] nodes.
 class NodeChangeForVariableDeclarationList
@@ -979,6 +999,15 @@
   NodeChange visitExpression(Expression node) => NodeChangeForExpression();
 
   @override
+  NodeChange visitFieldFormalParameter(FieldFormalParameter node) =>
+      NodeChangeForFieldFormalParameter();
+
+  @override
+  NodeChange visitFunctionTypedFormalParameter(
+          FunctionTypedFormalParameter node) =>
+      NodeChangeForFunctionTypedFormalParameter();
+
+  @override
   NodeChange visitGenericFunctionType(GenericFunctionType node) =>
       NodeChangeForTypeAnnotation();
 
diff --git a/pkg/nnbd_migration/lib/src/fix_builder.dart b/pkg/nnbd_migration/lib/src/fix_builder.dart
index 19128d2..1d29015 100644
--- a/pkg/nnbd_migration/lib/src/fix_builder.dart
+++ b/pkg/nnbd_migration/lib/src/fix_builder.dart
@@ -928,6 +928,37 @@
   }
 
   @override
+  void visitFieldFormalParameter(FieldFormalParameter node) {
+    // Field formal parameter types are generally handled in [visitTypeName],
+    // _function-typed_ field formal parameters need to be handled here.
+    if (node.parameters != null) {
+      var decoratedType =
+          _fixBuilder._variables.decoratedElementType(node.declaredElement);
+      if (decoratedType.node.isNullable) {
+        (_fixBuilder._getChange(node) as NodeChangeForFieldFormalParameter)
+            .recordNullability(decoratedType, decoratedType.node.isNullable,
+                nullabilityHint:
+                    _fixBuilder._variables.getNullabilityHint(source, node));
+      }
+    }
+    super.visitFieldFormalParameter(node);
+  }
+
+  @override
+  void visitFunctionTypedFormalParameter(FunctionTypedFormalParameter node) {
+    var decoratedType =
+        _fixBuilder._variables.decoratedElementType(node.declaredElement);
+    if (decoratedType.node.isNullable) {
+      (_fixBuilder._getChange(node)
+              as NodeChangeForFunctionTypedFormalParameter)
+          .recordNullability(decoratedType, decoratedType.node.isNullable,
+              nullabilityHint:
+                  _fixBuilder._variables.getNullabilityHint(source, node));
+    }
+    super.visitFunctionTypedFormalParameter(node);
+  }
+
+  @override
   void visitGenericFunctionType(GenericFunctionType node) {
     var decoratedType = _fixBuilder._variables
         .decoratedTypeAnnotation(_fixBuilder.source, node);
diff --git a/pkg/nnbd_migration/lib/src/front_end/info_builder.dart b/pkg/nnbd_migration/lib/src/front_end/info_builder.dart
index 2a45144..23449dc 100644
--- a/pkg/nnbd_migration/lib/src/front_end/info_builder.dart
+++ b/pkg/nnbd_migration/lib/src/front_end/info_builder.dart
@@ -232,8 +232,16 @@
   void _computeTraceNonNullableInfo(NullabilityNodeInfo node,
       List<TraceInfo> traces, FixReasonTarget target) {
     var entries = <TraceEntryInfo>[];
+    var description = 'Non-nullability reason${target.suffix}';
     var step = node.whyNotNullable;
     if (step == null) {
+      if (node != this.info.never) {
+        // 'never' indicates we're describing an edge to never, such as a `!`.
+        traces.add(TraceInfo(description, [
+          _nodeToTraceEntry(node,
+              description: 'No reason found to make nullable')
+        ]));
+      }
       return;
     }
     assert(identical(step.node, node));
@@ -244,7 +252,6 @@
       }
       step = step.principalCause;
     }
-    var description = 'Non-nullability reason${target.suffix}';
     traces.add(TraceInfo(description, entries));
   }
 
@@ -404,8 +411,9 @@
                 codeReference.line, length));
   }
 
-  TraceEntryInfo _nodeToTraceEntry(NullabilityNodeInfo node) {
-    var description = node.toString(); // TODO(paulberry): improve this message
+  TraceEntryInfo _nodeToTraceEntry(NullabilityNodeInfo node,
+      {String description}) {
+    description ??= node.toString(); // TODO(paulberry): improve this message
     return _makeTraceEntry(description, node.codeReference);
   }
 
diff --git a/pkg/nnbd_migration/lib/src/front_end/instrumentation_listener.dart b/pkg/nnbd_migration/lib/src/front_end/instrumentation_listener.dart
index fbbbbcf..c72f61c 100644
--- a/pkg/nnbd_migration/lib/src/front_end/instrumentation_listener.dart
+++ b/pkg/nnbd_migration/lib/src/front_end/instrumentation_listener.dart
@@ -9,20 +9,24 @@
 import 'package:nnbd_migration/instrumentation.dart';
 import 'package:nnbd_migration/src/edit_plan.dart';
 import 'package:nnbd_migration/src/front_end/instrumentation_information.dart';
+import 'package:nnbd_migration/src/front_end/migration_summary.dart';
 
 /// A listener used to gather instrumentation information from the migration
 /// engine.
 class InstrumentationListener implements NullabilityMigrationInstrumentation {
+  final MigrationSummary migrationSummary;
+
   /// The instrumentation information being gathered.
   InstrumentationInformation data = InstrumentationInformation();
 
   /// Initialize a newly created listener.
-  InstrumentationListener();
+  InstrumentationListener({this.migrationSummary});
 
   @override
   void changes(Source source, Map<int, List<AtomicEdit>> changes) {
     assert(_sourceInfo(source).changes == null);
     _sourceInfo(source).changes = changes;
+    migrationSummary?.recordChanges(source, changes);
   }
 
   @override
@@ -126,4 +130,9 @@
       }
     }
   }
+
+  @override
+  void finished() {
+    migrationSummary?.write();
+  }
 }
diff --git a/pkg/nnbd_migration/lib/src/front_end/migration_summary.dart b/pkg/nnbd_migration/lib/src/front_end/migration_summary.dart
new file mode 100644
index 0000000..1a90c12
--- /dev/null
+++ b/pkg/nnbd_migration/lib/src/front_end/migration_summary.dart
@@ -0,0 +1,135 @@
+// Copyright (c) 2020, the Dart project authors. Please see the AUTHORS file
+// 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.
+
+import 'dart:convert';
+
+import 'package:analyzer/file_system/file_system.dart';
+import 'package:analyzer/src/generated/source.dart';
+import 'package:nnbd_migration/nnbd_migration.dart';
+import 'package:nnbd_migration/src/edit_plan.dart';
+import 'package:nnbd_migration/src/utilities/hint_utils.dart';
+
+/// Class with the capability of writing out a machine-readable summary of
+/// migration results.
+class MigrationSummary {
+  /// Path to which the summary should be written.
+  final String summaryPath;
+
+  final ResourceProvider resourceProvider;
+
+  /// Path to the package being migrated.  Entries in the summary will refer to
+  /// files relative to this root.
+  final String rootPath;
+
+  /// Map from relative file path to a map from fix name to count.
+  final Map<String, Map<String, int>> _changesByRelativePath = {};
+
+  MigrationSummary(this.summaryPath, this.resourceProvider, this.rootPath);
+
+  /// Records information about the [changes] made to a [source] file.
+  void recordChanges(Source source, Map<int, List<AtomicEdit>> changes) {
+    var changeSummary = <String, int>{};
+    var hintsSeen = <HintComment>{};
+    for (var entry in changes.entries) {
+      for (var edit in entry.value) {
+        var info = edit.info;
+        if (info != null) {
+          var hint = info.hintComment;
+          if (hint == null || hintsSeen.add(hint)) {
+            var description = info.description;
+            if (description != null) {
+              var key = _keyForKind(description.kind);
+              changeSummary[key] ??= 0;
+              changeSummary[key]++;
+            }
+          }
+        }
+      }
+    }
+    _changesByRelativePath[resourceProvider.pathContext
+        .relative(source.fullName, from: rootPath)] = changeSummary;
+  }
+
+  /// Writes out the summary data accumulated so far
+  void write() {
+    resourceProvider.getFile(summaryPath).writeAsStringSync(jsonEncode({
+          'changes': {'byPath': _changesByRelativePath}
+        }));
+  }
+
+  String _keyForKind(NullabilityFixKind kind) {
+    switch (kind) {
+      case NullabilityFixKind.addLate:
+        return 'addLate';
+        break;
+      case NullabilityFixKind.addLateDueToHint:
+        return 'addLateDueToHint';
+        break;
+      case NullabilityFixKind.addLateDueToTestSetup:
+        return 'addLateDueToTestSetup';
+        break;
+      case NullabilityFixKind.addRequired:
+        return 'addRequired';
+        break;
+      case NullabilityFixKind.addType:
+        return 'addType';
+        break;
+      case NullabilityFixKind.checkExpression:
+        return 'checkExpression';
+        break;
+      case NullabilityFixKind.checkExpressionDueToHint:
+        return 'checkExpressionDueToHint';
+        break;
+      case NullabilityFixKind.compoundAssignmentHasNullableSource:
+        return 'compoundAssignmentHasNullableSource';
+        break;
+      case NullabilityFixKind.compoundAssignmentHasBadCombinedType:
+        return 'compoundAssignmentHasBadCombinedType';
+        break;
+      case NullabilityFixKind.conditionFalseInStrongMode:
+        return 'conditionFalseInStrongMode';
+        break;
+      case NullabilityFixKind.conditionTrueInStrongMode:
+        return 'conditionTrueInStrongMode';
+        break;
+      case NullabilityFixKind.downcastExpression:
+        return 'downcastExpression';
+        break;
+      case NullabilityFixKind.makeTypeNullable:
+        return 'makeTypeNullable';
+        break;
+      case NullabilityFixKind.makeTypeNullableDueToHint:
+        return 'makeTypeNullableDueToHint';
+        break;
+      case NullabilityFixKind.nullAwarenessUnnecessaryInStrongMode:
+        return 'nullAwarenessUnnecessaryInStrongMode';
+        break;
+      case NullabilityFixKind.nullAwareAssignmentUnnecessaryInStrongMode:
+        return 'nullAwareAssignmentUnnecessaryInStrongMode';
+        break;
+      case NullabilityFixKind.otherCastExpression:
+        return 'otherCastExpression';
+        break;
+      case NullabilityFixKind.removeAs:
+        return 'removeAs';
+        break;
+      case NullabilityFixKind.removeDeadCode:
+        return 'removeDeadCode';
+        break;
+      case NullabilityFixKind.removeLanguageVersionComment:
+        return 'removeLanguageVersionComment';
+        break;
+      case NullabilityFixKind.replaceVar:
+        return 'replaceVar';
+        break;
+      case NullabilityFixKind.typeNotMadeNullable:
+        return 'typeNotMadeNullable';
+        break;
+      case NullabilityFixKind.typeNotMadeNullableDueToHint:
+        return 'typeNotMadeNullableDueToHint';
+        break;
+    }
+    return '???';
+  }
+}
diff --git a/pkg/nnbd_migration/lib/src/front_end/path_mapper.dart b/pkg/nnbd_migration/lib/src/front_end/path_mapper.dart
index e8ac01c..9b00135 100644
--- a/pkg/nnbd_migration/lib/src/front_end/path_mapper.dart
+++ b/pkg/nnbd_migration/lib/src/front_end/path_mapper.dart
@@ -27,6 +27,6 @@
 
   /// Returns the local filesystem path corresponding to the given [uri].
   String reverseMap(Uri uri) {
-    return provider.pathContext.fromUri(uri);
+    return provider.pathContext.fromUri(uri.replace(scheme: 'file'));
   }
 }
diff --git a/pkg/nnbd_migration/lib/src/front_end/resources/resources.g.dart b/pkg/nnbd_migration/lib/src/front_end/resources/resources.g.dart
index 5bef8d6..2cc1d7e 100644
--- a/pkg/nnbd_migration/lib/src/front_end/resources/resources.g.dart
+++ b/pkg/nnbd_migration/lib/src/front_end/resources/resources.g.dart
@@ -479,7 +479,7 @@
 ''';
 
 String _migration_js;
-// migration_dart md5 is '1304024d7fb410d20ab30af7a6a25142'
+// migration_dart md5 is 'e7555609d8262090135a57dca0a0c687'
 String _migration_js_base64 = '''
 KGZ1bmN0aW9uIGRhcnRQcm9ncmFtKCl7ZnVuY3Rpb24gY29weVByb3BlcnRpZXMoYSxiKXt2YXIgdD1P
 YmplY3Qua2V5cyhhKQpmb3IodmFyIHM9MDtzPHQubGVuZ3RoO3MrKyl7dmFyIHI9dFtzXQpiW3JdPWFb
@@ -553,890 +553,958 @@
 czpzZXRPclVwZGF0ZUxlYWZUYWdzfX0oKQpmdW5jdGlvbiBpbml0aWFsaXplRGVmZXJyZWRIdW5rKGEp
 e3g9di50eXBlcy5sZW5ndGgKYShodW5rSGVscGVycyx2LHcsJCl9ZnVuY3Rpb24gZ2V0R2xvYmFsRnJv
 bU5hbWUoYSl7Zm9yKHZhciB0PTA7dDx3Lmxlbmd0aDt0Kyspe2lmKHdbdF09PUMpY29udGludWUKaWYo
-d1t0XVthXSlyZXR1cm4gd1t0XVthXX19dmFyIEM9e30sSD17ZW86ZnVuY3Rpb24gZW8oKXt9LApvbzpm
-dW5jdGlvbihhKXt2YXIgdCxzPWFeNDgKaWYoczw9OSlyZXR1cm4gcwp0PWF8MzIKaWYoOTc8PXQmJnQ8
-PTEwMilyZXR1cm4gdC04NwpyZXR1cm4tMX0sCnFDOmZ1bmN0aW9uKGEsYixjLGQpe1AuazEoYiwic3Rh
-cnQiKQppZihjIT1udWxsKXtQLmsxKGMsImVuZCIpCmlmKGI+YylILnZoKFAuVEUoYiwwLGMsInN0YXJ0
-IixudWxsKSl9cmV0dXJuIG5ldyBILm5IKGEsYixjLGQuQygibkg8MD4iKSl9LApLMTpmdW5jdGlvbihh
-LGIsYyxkKXtpZih1Lmd3LmMoYSkpcmV0dXJuIG5ldyBILnh5KGEsYixjLkMoIkA8MD4iKS5LcShkKS5D
-KCJ4eTwxLDI+IikpCnJldHVybiBuZXcgSC5pMShhLGIsYy5DKCJAPDA+IikuS3EoZCkuQygiaTE8MSwy
-PiIpKX0sCldwOmZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBQLmxqKCJObyBlbGVtZW50Iil9LApkVTpmdW5j
-dGlvbigpe3JldHVybiBuZXcgUC5saigiVG9vIG1hbnkgZWxlbWVudHMiKX0sCmFyOmZ1bmN0aW9uKCl7
-cmV0dXJuIG5ldyBQLmxqKCJUb28gZmV3IGVsZW1lbnRzIil9LApxajpmdW5jdGlvbiBxaihhKXt0aGlz
-LmE9YX0sCmJROmZ1bmN0aW9uIGJRKCl7fSwKYUw6ZnVuY3Rpb24gYUwoKXt9LApuSDpmdW5jdGlvbiBu
-SChhLGIsYyxkKXt2YXIgXz10aGlzCl8uYT1hCl8uYj1iCl8uYz1jCl8uJHRpPWR9LAphNzpmdW5jdGlv
-biBhNyhhLGIsYyl7dmFyIF89dGhpcwpfLmE9YQpfLmI9YgpfLmM9MApfLmQ9bnVsbApfLiR0aT1jfSwK
-aTE6ZnVuY3Rpb24gaTEoYSxiLGMpe3RoaXMuYT1hCnRoaXMuYj1iCnRoaXMuJHRpPWN9LAp4eTpmdW5j
-dGlvbiB4eShhLGIsYyl7dGhpcy5hPWEKdGhpcy5iPWIKdGhpcy4kdGk9Y30sCk1IOmZ1bmN0aW9uIE1I
-KGEsYixjKXt2YXIgXz10aGlzCl8uYT1udWxsCl8uYj1hCl8uYz1iCl8uJHRpPWN9LApBODpmdW5jdGlv
-biBBOChhLGIsYyl7dGhpcy5hPWEKdGhpcy5iPWIKdGhpcy4kdGk9Y30sClU1OmZ1bmN0aW9uIFU1KGEs
-YixjKXt0aGlzLmE9YQp0aGlzLmI9Ygp0aGlzLiR0aT1jfSwKU086ZnVuY3Rpb24gU08oYSxiLGMpe3Ro
-aXMuYT1hCnRoaXMuYj1iCnRoaXMuJHRpPWN9LApTVTpmdW5jdGlvbiBTVSgpe30sClJlOmZ1bmN0aW9u
-IFJlKCl7fSwKWEM6ZnVuY3Rpb24gWEMoKXt9LAp3djpmdW5jdGlvbiB3dihhKXt0aGlzLmE9YX0sCmRj
-OmZ1bmN0aW9uKCl7dGhyb3cgSC5iKFAuTDQoIkNhbm5vdCBtb2RpZnkgdW5tb2RpZmlhYmxlIE1hcCIp
-KX0sCk5ROmZ1bmN0aW9uKGEpe3ZhciB0LHM9SC5KZyhhKQppZih0eXBlb2Ygcz09InN0cmluZyIpcmV0
-dXJuIHMKdD0ibWluaWZpZWQ6IithCnJldHVybiB0fSwKd1Y6ZnVuY3Rpb24oYSxiKXt2YXIgdAppZihi
-IT1udWxsKXt0PWIueAppZih0IT1udWxsKXJldHVybiB0fXJldHVybiB1LmFVLmMoYSl9LApkOmZ1bmN0
-aW9uKGEpe3ZhciB0CmlmKHR5cGVvZiBhPT0ic3RyaW5nIilyZXR1cm4gYQppZih0eXBlb2YgYT09Im51
-bWJlciIpe2lmKGEhPT0wKXJldHVybiIiK2F9ZWxzZSBpZighMD09PWEpcmV0dXJuInRydWUiCmVsc2Ug
-aWYoITE9PT1hKXJldHVybiJmYWxzZSIKZWxzZSBpZihhPT1udWxsKXJldHVybiJudWxsIgp0PUouaihh
-KQppZih0eXBlb2YgdCE9InN0cmluZyIpdGhyb3cgSC5iKEgudEwoYSkpCnJldHVybiB0fSwKZVE6ZnVu
-Y3Rpb24oYSl7dmFyIHQ9YS4kaWRlbnRpdHlIYXNoCmlmKHQ9PW51bGwpe3Q9TWF0aC5yYW5kb20oKSow
-eDNmZmZmZmZmfDAKYS4kaWRlbnRpdHlIYXNoPXR9cmV0dXJuIHR9LApIcDpmdW5jdGlvbihhLGIpe3Zh
-ciB0LHMscixxLHAsbyxuPW51bGwKaWYodHlwZW9mIGEhPSJzdHJpbmciKUgudmgoSC50TChhKSkKdD0v
-XlxzKlsrLV0/KCgweFthLWYwLTldKyl8KFxkKyl8KFthLXowLTldKykpXHMqJC9pLmV4ZWMoYSkKaWYo
-dD09bnVsbClyZXR1cm4gbgppZigzPj10Lmxlbmd0aClyZXR1cm4gSC5PSCh0LDMpCnM9SC55KHRbM10p
-CmlmKGI9PW51bGwpe2lmKHMhPW51bGwpcmV0dXJuIHBhcnNlSW50KGEsMTApCmlmKHRbMl0hPW51bGwp
-cmV0dXJuIHBhcnNlSW50KGEsMTYpCnJldHVybiBufWlmKGI8Mnx8Yj4zNil0aHJvdyBILmIoUC5URShi
-LDIsMzYsInJhZGl4IixuKSkKaWYoYj09PTEwJiZzIT1udWxsKXJldHVybiBwYXJzZUludChhLDEwKQpp
-ZihiPDEwfHxzPT1udWxsKXtyPWI8PTEwPzQ3K2I6ODYrYgpxPXRbMV0KZm9yKHA9cS5sZW5ndGgsbz0w
-O288cDsrK28paWYoKEMueEIuVyhxLG8pfDMyKT5yKXJldHVybiBufXJldHVybiBwYXJzZUludChhLGIp
-fSwKTTpmdW5jdGlvbihhKXt2YXIgdD1ILkg1KGEpCnJldHVybiB0fSwKSDU6ZnVuY3Rpb24oYSl7dmFy
-IHQscyxyCmlmKGEgaW5zdGFuY2VvZiBQLmspcmV0dXJuIEguZG0oSC56SyhhKSxudWxsKQppZihKLmlh
-KGEpPT09Qy5Pa3x8dS5hay5jKGEpKXt0PUMuTzQoYSkKaWYoSC5mKHQpKXJldHVybiB0CnM9YS5jb25z
-dHJ1Y3RvcgppZih0eXBlb2Ygcz09ImZ1bmN0aW9uIil7cj1zLm5hbWUKaWYodHlwZW9mIHI9PSJzdHJp
-bmciJiZILmYocikpcmV0dXJuIHJ9fXJldHVybiBILmRtKEgueksoYSksbnVsbCl9LApmOmZ1bmN0aW9u
-KGEpe3ZhciB0PWEhPT0iT2JqZWN0IiYmYSE9PSIiCnJldHVybiB0fSwKTTA6ZnVuY3Rpb24oKXtpZigh
-IXNlbGYubG9jYXRpb24pcmV0dXJuIHNlbGYubG9jYXRpb24uaHJlZgpyZXR1cm4gbnVsbH0sClZLOmZ1
-bmN0aW9uKGEpe3ZhciB0LHMscixxLHA9YS5sZW5ndGgKaWYocDw9NTAwKXJldHVybiBTdHJpbmcuZnJv
-bUNoYXJDb2RlLmFwcGx5KG51bGwsYSkKZm9yKHQ9IiIscz0wO3M8cDtzPXIpe3I9cys1MDAKcT1yPHA/
-cjpwCnQrPVN0cmluZy5mcm9tQ2hhckNvZGUuYXBwbHkobnVsbCxhLnNsaWNlKHMscSkpfXJldHVybiB0
-fSwKQ3E6ZnVuY3Rpb24oYSl7dmFyIHQscyxyLHE9SC5WTShbXSx1LnQpCmZvcih0PWEubGVuZ3RoLHM9
-MDtzPGEubGVuZ3RoO2EubGVuZ3RoPT09dHx8KDAsSC5saykoYSksKytzKXtyPWFbc10KaWYoIUgub2so
-cikpdGhyb3cgSC5iKEgudEwocikpCmlmKHI8PTY1NTM1KUMuTm0uaShxLHIpCmVsc2UgaWYocjw9MTEx
-NDExMSl7Qy5ObS5pKHEsNTUyOTYrKEMuam4ud0coci02NTUzNiwxMCkmMTAyMykpCkMuTm0uaShxLDU2
-MzIwKyhyJjEwMjMpKX1lbHNlIHRocm93IEguYihILnRMKHIpKX1yZXR1cm4gSC5WSyhxKX0sCmVUOmZ1
-bmN0aW9uKGEpe3ZhciB0LHMscgpmb3IodD1hLmxlbmd0aCxzPTA7czx0Oysrcyl7cj1hW3NdCmlmKCFI
-Lm9rKHIpKXRocm93IEguYihILnRMKHIpKQppZihyPDApdGhyb3cgSC5iKEgudEwocikpCmlmKHI+NjU1
-MzUpcmV0dXJuIEguQ3EoYSl9cmV0dXJuIEguVksoYSl9LApmdzpmdW5jdGlvbihhLGIsYyl7dmFyIHQs
-cyxyLHEKaWYoYzw9NTAwJiZiPT09MCYmYz09PWEubGVuZ3RoKXJldHVybiBTdHJpbmcuZnJvbUNoYXJD
-b2RlLmFwcGx5KG51bGwsYSkKZm9yKHQ9YixzPSIiO3Q8Yzt0PXIpe3I9dCs1MDAKcT1yPGM/cjpjCnMr
-PVN0cmluZy5mcm9tQ2hhckNvZGUuYXBwbHkobnVsbCxhLnN1YmFycmF5KHQscSkpfXJldHVybiBzfSwK
-THc6ZnVuY3Rpb24oYSl7dmFyIHQKaWYoMDw9YSl7aWYoYTw9NjU1MzUpcmV0dXJuIFN0cmluZy5mcm9t
-Q2hhckNvZGUoYSkKaWYoYTw9MTExNDExMSl7dD1hLTY1NTM2CnJldHVybiBTdHJpbmcuZnJvbUNoYXJD
-b2RlKCg1NTI5NnxDLmpuLndHKHQsMTApKT4+PjAsNTYzMjB8dCYxMDIzKX19dGhyb3cgSC5iKFAuVEUo
-YSwwLDExMTQxMTEsbnVsbCxudWxsKSl9LApvMjpmdW5jdGlvbihhKXtpZihhLmRhdGU9PT12b2lkIDAp
-YS5kYXRlPW5ldyBEYXRlKGEuYSkKcmV0dXJuIGEuZGF0ZX0sCnRKOmZ1bmN0aW9uKGEpe3ZhciB0PUgu
-bzIoYSkuZ2V0RnVsbFllYXIoKSswCnJldHVybiB0fSwKTlM6ZnVuY3Rpb24oYSl7dmFyIHQ9SC5vMihh
-KS5nZXRNb250aCgpKzEKcmV0dXJuIHR9LApqQTpmdW5jdGlvbihhKXt2YXIgdD1ILm8yKGEpLmdldERh
-dGUoKSswCnJldHVybiB0fSwKSVg6ZnVuY3Rpb24oYSl7dmFyIHQ9SC5vMihhKS5nZXRIb3VycygpKzAK
-cmV0dXJuIHR9LApjaDpmdW5jdGlvbihhKXt2YXIgdD1ILm8yKGEpLmdldE1pbnV0ZXMoKSswCnJldHVy
-biB0fSwKSmQ6ZnVuY3Rpb24oYSl7dmFyIHQ9SC5vMihhKS5nZXRTZWNvbmRzKCkrMApyZXR1cm4gdH0s
-Cm8xOmZ1bmN0aW9uKGEpe3ZhciB0PUgubzIoYSkuZ2V0TWlsbGlzZWNvbmRzKCkrMApyZXR1cm4gdH0s
-CnpvOmZ1bmN0aW9uKGEsYixjKXt2YXIgdCxzLHI9e30Kci5hPTAKdD1bXQpzPVtdCnIuYT1iLmxlbmd0
-aApDLk5tLkZWKHQsYikKci5iPSIiCmlmKGMhPW51bGwmJmMuYSE9PTApYy5LKDAsbmV3IEguQ2oocixz
-LHQpKQoiIityLmEKcmV0dXJuIEouSnkoYSxuZXcgSC5MSShDLlRlLDAsdCxzLDApKX0sCkVrOmZ1bmN0
-aW9uKGEsYixjKXt2YXIgdCxzLHIscQppZihiIGluc3RhbmNlb2YgQXJyYXkpdD1jPT1udWxsfHxjLmE9
-PT0wCmVsc2UgdD0hMQppZih0KXtzPWIKcj1zLmxlbmd0aAppZihyPT09MCl7aWYoISFhLiQwKXJldHVy
-biBhLiQwKCl9ZWxzZSBpZihyPT09MSl7aWYoISFhLiQxKXJldHVybiBhLiQxKHNbMF0pfWVsc2UgaWYo
-cj09PTIpe2lmKCEhYS4kMilyZXR1cm4gYS4kMihzWzBdLHNbMV0pfWVsc2UgaWYocj09PTMpe2lmKCEh
-YS4kMylyZXR1cm4gYS4kMyhzWzBdLHNbMV0sc1syXSl9ZWxzZSBpZihyPT09NCl7aWYoISFhLiQ0KXJl
-dHVybiBhLiQ0KHNbMF0sc1sxXSxzWzJdLHNbM10pfWVsc2UgaWYocj09PTUpaWYoISFhLiQ1KXJldHVy
-biBhLiQ1KHNbMF0sc1sxXSxzWzJdLHNbM10sc1s0XSkKcT1hWyIiKyIkIityXQppZihxIT1udWxsKXJl
-dHVybiBxLmFwcGx5KGEscyl9cmV0dXJuIEguRXcoYSxiLGMpfSwKRXc6ZnVuY3Rpb24oYSxiLGMpe3Zh
-ciB0LHMscixxLHAsbyxuLG0sbCxrPWIgaW5zdGFuY2VvZiBBcnJheT9iOlAuQ0goYiwhMCx1LnopLGo9
-ay5sZW5ndGgsaT1hLiRSCmlmKGo8aSlyZXR1cm4gSC56byhhLGssYykKdD1hLiRECnM9dD09bnVsbApy
-PSFzP3QoKTpudWxsCnE9Si5pYShhKQpwPXEuJEMKaWYodHlwZW9mIHA9PSJzdHJpbmciKXA9cVtwXQpp
-ZihzKXtpZihjIT1udWxsJiZjLmEhPT0wKXJldHVybiBILnpvKGEsayxjKQppZihqPT09aSlyZXR1cm4g
-cC5hcHBseShhLGspCnJldHVybiBILnpvKGEsayxjKX1pZihyIGluc3RhbmNlb2YgQXJyYXkpe2lmKGMh
-PW51bGwmJmMuYSE9PTApcmV0dXJuIEguem8oYSxrLGMpCmlmKGo+aStyLmxlbmd0aClyZXR1cm4gSC56
-byhhLGssbnVsbCkKQy5ObS5GVihrLHIuc2xpY2Uoai1pKSkKcmV0dXJuIHAuYXBwbHkoYSxrKX1lbHNl
-e2lmKGo+aSlyZXR1cm4gSC56byhhLGssYykKbz1PYmplY3Qua2V5cyhyKQppZihjPT1udWxsKWZvcihz
-PW8ubGVuZ3RoLG49MDtuPG8ubGVuZ3RoO28ubGVuZ3RoPT09c3x8KDAsSC5saykobyksKytuKUMuTm0u
-aShrLHJbSC55KG9bbl0pXSkKZWxzZXtmb3Iocz1vLmxlbmd0aCxtPTAsbj0wO248by5sZW5ndGg7by5s
-ZW5ndGg9PT1zfHwoMCxILmxrKShvKSwrK24pe2w9SC55KG9bbl0pCmlmKGMueDQobCkpeysrbQpDLk5t
-LmkoayxjLnEoMCxsKSl9ZWxzZSBDLk5tLmkoayxyW2xdKX1pZihtIT09Yy5hKXJldHVybiBILnpvKGEs
-ayxjKX1yZXR1cm4gcC5hcHBseShhLGspfX0sCnBZOmZ1bmN0aW9uKGEpe3Rocm93IEguYihILnRMKGEp
-KX0sCk9IOmZ1bmN0aW9uKGEsYil7aWYoYT09bnVsbClKLkhtKGEpCnRocm93IEguYihILkhZKGEsYikp
-fSwKSFk6ZnVuY3Rpb24oYSxiKXt2YXIgdCxzLHI9ImluZGV4IgppZighSC5vayhiKSlyZXR1cm4gbmV3
-IFAudSghMCxiLHIsbnVsbCkKdD1ILlNjKEouSG0oYSkpCmlmKCEoYjwwKSl7aWYodHlwZW9mIHQhPT0i
-bnVtYmVyIilyZXR1cm4gSC5wWSh0KQpzPWI+PXR9ZWxzZSBzPSEwCmlmKHMpcmV0dXJuIFAuQ2YoYixh
-LHIsbnVsbCx0KQpyZXR1cm4gUC54KGIscil9LAphdTpmdW5jdGlvbihhLGIsYyl7dmFyIHQ9IkludmFs
-aWQgdmFsdWUiCmlmKGE+YylyZXR1cm4gbmV3IFAuYkooMCxjLCEwLGEsInN0YXJ0Iix0KQppZihiIT1u
-dWxsKXtpZighSC5vayhiKSlyZXR1cm4gbmV3IFAudSghMCxiLCJlbmQiLG51bGwpCmlmKGI8YXx8Yj5j
-KXJldHVybiBuZXcgUC5iSihhLGMsITAsYiwiZW5kIix0KX1yZXR1cm4gbmV3IFAudSghMCxiLCJlbmQi
-LG51bGwpfSwKdEw6ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyBQLnUoITAsYSxudWxsLG51bGwpfSwKYjpm
-dW5jdGlvbihhKXt2YXIgdAppZihhPT1udWxsKWE9bmV3IFAubigpCnQ9bmV3IEVycm9yKCkKdC5kYXJ0
-RXhjZXB0aW9uPWEKaWYoImRlZmluZVByb3BlcnR5IiBpbiBPYmplY3Qpe09iamVjdC5kZWZpbmVQcm9w
-ZXJ0eSh0LCJtZXNzYWdlIix7Z2V0OkguaH0pCnQubmFtZT0iIn1lbHNlIHQudG9TdHJpbmc9SC5oCnJl
-dHVybiB0fSwKaDpmdW5jdGlvbigpe3JldHVybiBKLmoodGhpcy5kYXJ0RXhjZXB0aW9uKX0sCnZoOmZ1
-bmN0aW9uKGEpe3Rocm93IEguYihhKX0sCmxrOmZ1bmN0aW9uKGEpe3Rocm93IEguYihQLmE0KGEpKX0s
-CmNNOmZ1bmN0aW9uKGEpe3ZhciB0LHMscixxLHAsbwphPUguZUEoYS5yZXBsYWNlKFN0cmluZyh7fSks
-JyRyZWNlaXZlciQnKSkKdD1hLm1hdGNoKC9cXFwkW2EtekEtWl0rXFxcJC9nKQppZih0PT1udWxsKXQ9
-SC5WTShbXSx1LnMpCnM9dC5pbmRleE9mKCJcXCRhcmd1bWVudHNcXCQiKQpyPXQuaW5kZXhPZigiXFwk
-YXJndW1lbnRzRXhwclxcJCIpCnE9dC5pbmRleE9mKCJcXCRleHByXFwkIikKcD10LmluZGV4T2YoIlxc
-JG1ldGhvZFxcJCIpCm89dC5pbmRleE9mKCJcXCRyZWNlaXZlclxcJCIpCnJldHVybiBuZXcgSC5mOShh
-LnJlcGxhY2UobmV3IFJlZ0V4cCgnXFxcXFxcJGFyZ3VtZW50c1xcXFxcXCQnLCdnJyksJygoPzp4fFte
-eF0pKiknKS5yZXBsYWNlKG5ldyBSZWdFeHAoJ1xcXFxcXCRhcmd1bWVudHNFeHByXFxcXFxcJCcsJ2cn
-KSwnKCg/Onh8W154XSkqKScpLnJlcGxhY2UobmV3IFJlZ0V4cCgnXFxcXFxcJGV4cHJcXFxcXFwkJywn
-ZycpLCcoKD86eHxbXnhdKSopJykucmVwbGFjZShuZXcgUmVnRXhwKCdcXFxcXFwkbWV0aG9kXFxcXFxc
-JCcsJ2cnKSwnKCg/Onh8W154XSkqKScpLnJlcGxhY2UobmV3IFJlZ0V4cCgnXFxcXFxcJHJlY2VpdmVy
-XFxcXFxcJCcsJ2cnKSwnKCg/Onh8W154XSkqKScpLHMscixxLHAsbyl9LApTNzpmdW5jdGlvbihhKXty
-ZXR1cm4gZnVuY3Rpb24oJGV4cHIkKXt2YXIgJGFyZ3VtZW50c0V4cHIkPSckYXJndW1lbnRzJCcKdHJ5
-eyRleHByJC4kbWV0aG9kJCgkYXJndW1lbnRzRXhwciQpfWNhdGNoKHQpe3JldHVybiB0Lm1lc3NhZ2V9
-fShhKX0sCk1qOmZ1bmN0aW9uKGEpe3JldHVybiBmdW5jdGlvbigkZXhwciQpe3RyeXskZXhwciQuJG1l
-dGhvZCR9Y2F0Y2godCl7cmV0dXJuIHQubWVzc2FnZX19KGEpfSwKSWo6ZnVuY3Rpb24oYSxiKXtyZXR1
-cm4gbmV3IEguVzAoYSxiPT1udWxsP251bGw6Yi5tZXRob2QpfSwKVDM6ZnVuY3Rpb24oYSxiKXt2YXIg
-dD1iPT1udWxsLHM9dD9udWxsOmIubWV0aG9kCnJldHVybiBuZXcgSC5heihhLHMsdD9udWxsOmIucmVj
-ZWl2ZXIpfSwKUnU6ZnVuY3Rpb24oYSl7dmFyIHQscyxyLHEscCxvLG4sbSxsLGssaixpLGgsZyxmPW51
-bGwsZT1uZXcgSC5BbShhKQppZihhPT1udWxsKXJldHVybiBmCmlmKGEgaW5zdGFuY2VvZiBILmJxKXJl
-dHVybiBlLiQxKGEuYSkKaWYodHlwZW9mIGEhPT0ib2JqZWN0IilyZXR1cm4gYQppZigiZGFydEV4Y2Vw
-dGlvbiIgaW4gYSlyZXR1cm4gZS4kMShhLmRhcnRFeGNlcHRpb24pCmVsc2UgaWYoISgibWVzc2FnZSIg
-aW4gYSkpcmV0dXJuIGEKdD1hLm1lc3NhZ2UKaWYoIm51bWJlciIgaW4gYSYmdHlwZW9mIGEubnVtYmVy
-PT0ibnVtYmVyIil7cz1hLm51bWJlcgpyPXMmNjU1MzUKaWYoKEMuam4ud0cocywxNikmODE5MSk9PT0x
-MClzd2l0Y2gocil7Y2FzZSA0Mzg6cmV0dXJuIGUuJDEoSC5UMyhILmQodCkrIiAoRXJyb3IgIityKyIp
-IixmKSkKY2FzZSA0NDU6Y2FzZSA1MDA3OnJldHVybiBlLiQxKEguSWooSC5kKHQpKyIgKEVycm9yICIr
-cisiKSIsZikpfX1pZihhIGluc3RhbmNlb2YgVHlwZUVycm9yKXtxPSQuU24oKQpwPSQubHEoKQpvPSQu
-TjkoKQpuPSQuaUkoKQptPSQuS2YoKQpsPSQuWmgoKQprPSQuck4oKQokLmMzKCkKaj0kLkhLKCkKaT0k
-LnIxKCkKaD1xLnFTKHQpCmlmKGghPW51bGwpcmV0dXJuIGUuJDEoSC5UMyhILnkodCksaCkpCmVsc2V7
-aD1wLnFTKHQpCmlmKGghPW51bGwpe2gubWV0aG9kPSJjYWxsIgpyZXR1cm4gZS4kMShILlQzKEgueSh0
-KSxoKSl9ZWxzZXtoPW8ucVModCkKaWYoaD09bnVsbCl7aD1uLnFTKHQpCmlmKGg9PW51bGwpe2g9bS5x
-Uyh0KQppZihoPT1udWxsKXtoPWwucVModCkKaWYoaD09bnVsbCl7aD1rLnFTKHQpCmlmKGg9PW51bGwp
-e2g9bi5xUyh0KQppZihoPT1udWxsKXtoPWoucVModCkKaWYoaD09bnVsbCl7aD1pLnFTKHQpCmc9aCE9
-bnVsbH1lbHNlIGc9ITB9ZWxzZSBnPSEwfWVsc2UgZz0hMH1lbHNlIGc9ITB9ZWxzZSBnPSEwfWVsc2Ug
-Zz0hMH1lbHNlIGc9ITAKaWYoZylyZXR1cm4gZS4kMShILklqKEgueSh0KSxoKSl9fXJldHVybiBlLiQx
-KG5ldyBILnZWKHR5cGVvZiB0PT0ic3RyaW5nIj90OiIiKSl9aWYoYSBpbnN0YW5jZW9mIFJhbmdlRXJy
-b3Ipe2lmKHR5cGVvZiB0PT0ic3RyaW5nIiYmdC5pbmRleE9mKCJjYWxsIHN0YWNrIikhPT0tMSlyZXR1
-cm4gbmV3IFAuS1koKQp0PWZ1bmN0aW9uKGIpe3RyeXtyZXR1cm4gU3RyaW5nKGIpfWNhdGNoKGQpe31y
-ZXR1cm4gbnVsbH0oYSkKcmV0dXJuIGUuJDEobmV3IFAudSghMSxmLGYsdHlwZW9mIHQ9PSJzdHJpbmci
-P3QucmVwbGFjZSgvXlJhbmdlRXJyb3I6XHMqLywiIik6dCkpfWlmKHR5cGVvZiBJbnRlcm5hbEVycm9y
-PT0iZnVuY3Rpb24iJiZhIGluc3RhbmNlb2YgSW50ZXJuYWxFcnJvcilpZih0eXBlb2YgdD09InN0cmlu
-ZyImJnQ9PT0idG9vIG11Y2ggcmVjdXJzaW9uIilyZXR1cm4gbmV3IFAuS1koKQpyZXR1cm4gYX0sCnRz
-OmZ1bmN0aW9uKGEpe3ZhciB0CmlmKGEgaW5zdGFuY2VvZiBILmJxKXJldHVybiBhLmIKaWYoYT09bnVs
-bClyZXR1cm4gbmV3IEguWE8oYSkKdD1hLiRjYWNoZWRUcmFjZQppZih0IT1udWxsKXJldHVybiB0CnJl
-dHVybiBhLiRjYWNoZWRUcmFjZT1uZXcgSC5YTyhhKX0sCkI3OmZ1bmN0aW9uKGEsYil7dmFyIHQscyxy
-LHE9YS5sZW5ndGgKZm9yKHQ9MDt0PHE7dD1yKXtzPXQrMQpyPXMrMQpiLlkoMCxhW3RdLGFbc10pfXJl
-dHVybiBifSwKZnQ6ZnVuY3Rpb24oYSxiLGMsZCxlLGYpe3UuWi5iKGEpCnN3aXRjaChILlNjKGIpKXtj
-YXNlIDA6cmV0dXJuIGEuJDAoKQpjYXNlIDE6cmV0dXJuIGEuJDEoYykKY2FzZSAyOnJldHVybiBhLiQy
-KGMsZCkKY2FzZSAzOnJldHVybiBhLiQzKGMsZCxlKQpjYXNlIDQ6cmV0dXJuIGEuJDQoYyxkLGUsZil9
-dGhyb3cgSC5iKG5ldyBQLkNEKCJVbnN1cHBvcnRlZCBudW1iZXIgb2YgYXJndW1lbnRzIGZvciB3cmFw
-cGVkIGNsb3N1cmUiKSl9LAp0UjpmdW5jdGlvbihhLGIpe3ZhciB0CmlmKGE9PW51bGwpcmV0dXJuIG51
-bGwKdD1hLiRpZGVudGl0eQppZighIXQpcmV0dXJuIHQKdD1mdW5jdGlvbihjLGQsZSl7cmV0dXJuIGZ1
-bmN0aW9uKGYsZyxoLGkpe3JldHVybiBlKGMsZCxmLGcsaCxpKX19KGEsYixILmZ0KQphLiRpZGVudGl0
-eT10CnJldHVybiB0fSwKaUE6ZnVuY3Rpb24oYSxiLGMsZCxlLGYsZyl7dmFyIHQscyxyLHEscCxvLG4s
-bSxsPW51bGwsaz1iWzBdLGo9ay4kY2FsbE5hbWUsaT1lP09iamVjdC5jcmVhdGUobmV3IEguengoKS5j
-b25zdHJ1Y3Rvci5wcm90b3R5cGUpOk9iamVjdC5jcmVhdGUobmV3IEguclQobCxsLGwsbCkuY29uc3Ry
-dWN0b3IucHJvdG90eXBlKQppLiRpbml0aWFsaXplPWkuY29uc3RydWN0b3IKaWYoZSl0PWZ1bmN0aW9u
-IHN0YXRpY190ZWFyX29mZigpe3RoaXMuJGluaXRpYWxpemUoKX0KZWxzZXtzPSQueWoKaWYodHlwZW9m
-IHMhPT0ibnVtYmVyIilyZXR1cm4gcy5oKCkKJC55aj1zKzEKcz1uZXcgRnVuY3Rpb24oImEsYixjLGQi
-K3MsInRoaXMuJGluaXRpYWxpemUoYSxiLGMsZCIrcysiKSIpCnQ9c31pLmNvbnN0cnVjdG9yPXQKdC5w
-cm90b3R5cGU9aQppZighZSl7cj1ILmJ4KGEsayxmKQpyLiRyZWZsZWN0aW9uSW5mbz1kfWVsc2V7aS4k
-c3RhdGljX25hbWU9ZwpyPWt9cT1ILmltKGQsZSxmKQppLiRTPXEKaVtqXT1yCmZvcihwPXIsbz0xO288
-Yi5sZW5ndGg7KytvKXtuPWJbb10KbT1uLiRjYWxsTmFtZQppZihtIT1udWxsKXtuPWU/bjpILmJ4KGEs
-bixmKQppW21dPW59aWYobz09PWMpe24uJHJlZmxlY3Rpb25JbmZvPWQKcD1ufX1pLiRDPXAKaS4kUj1r
-LiRSCmkuJEQ9ay4kRApyZXR1cm4gdH0sCmltOmZ1bmN0aW9uKGEsYixjKXt2YXIgdAppZih0eXBlb2Yg
-YT09Im51bWJlciIpcmV0dXJuIGZ1bmN0aW9uKGQsZSl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIGQo
-ZSl9fShILkJwLGEpCmlmKHR5cGVvZiBhPT0ic3RyaW5nIil7aWYoYil0aHJvdyBILmIoIkNhbm5vdCBj
-b21wdXRlIHNpZ25hdHVyZSBmb3Igc3RhdGljIHRlYXJvZmYuIikKdD1jP0guUFc6SC5UbgpyZXR1cm4g
-ZnVuY3Rpb24oZCxlKXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gZSh0aGlzLGQpfX0oYSx0KX10aHJv
-dyBILmIoIkVycm9yIGluIGZ1bmN0aW9uVHlwZSBvZiB0ZWFyb2ZmIil9LAp2cTpmdW5jdGlvbihhLGIs
-YyxkKXt2YXIgdD1ILkRWCnN3aXRjaChiPy0xOmEpe2Nhc2UgMDpyZXR1cm4gZnVuY3Rpb24oZSxmKXty
-ZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gZih0aGlzKVtlXSgpfX0oYyx0KQpjYXNlIDE6cmV0dXJuIGZ1
-bmN0aW9uKGUsZil7cmV0dXJuIGZ1bmN0aW9uKGcpe3JldHVybiBmKHRoaXMpW2VdKGcpfX0oYyx0KQpj
-YXNlIDI6cmV0dXJuIGZ1bmN0aW9uKGUsZil7cmV0dXJuIGZ1bmN0aW9uKGcsaCl7cmV0dXJuIGYodGhp
-cylbZV0oZyxoKX19KGMsdCkKY2FzZSAzOnJldHVybiBmdW5jdGlvbihlLGYpe3JldHVybiBmdW5jdGlv
-bihnLGgsaSl7cmV0dXJuIGYodGhpcylbZV0oZyxoLGkpfX0oYyx0KQpjYXNlIDQ6cmV0dXJuIGZ1bmN0
-aW9uKGUsZil7cmV0dXJuIGZ1bmN0aW9uKGcsaCxpLGope3JldHVybiBmKHRoaXMpW2VdKGcsaCxpLGop
-fX0oYyx0KQpjYXNlIDU6cmV0dXJuIGZ1bmN0aW9uKGUsZil7cmV0dXJuIGZ1bmN0aW9uKGcsaCxpLGos
-ayl7cmV0dXJuIGYodGhpcylbZV0oZyxoLGksaixrKX19KGMsdCkKZGVmYXVsdDpyZXR1cm4gZnVuY3Rp
-b24oZSxmKXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gZS5hcHBseShmKHRoaXMpLGFyZ3VtZW50cyl9
-fShkLHQpfX0sCmJ4OmZ1bmN0aW9uKGEsYixjKXt2YXIgdCxzLHIscSxwLG8sbgppZihjKXJldHVybiBI
-LkhmKGEsYikKdD1iLiRzdHViTmFtZQpzPWIubGVuZ3RoCnI9YVt0XQpxPWI9PW51bGw/cj09bnVsbDpi
-PT09cgpwPSFxfHxzPj0yNwppZihwKXJldHVybiBILnZxKHMsIXEsdCxiKQppZihzPT09MCl7cT0kLnlq
-CmlmKHR5cGVvZiBxIT09Im51bWJlciIpcmV0dXJuIHEuaCgpCiQueWo9cSsxCm89InNlbGYiK3EKcT0i
-cmV0dXJuIGZ1bmN0aW9uKCl7dmFyICIrbysiID0gdGhpcy4iCnA9JC5tSgpyZXR1cm4gbmV3IEZ1bmN0
-aW9uKHErSC5kKHA9PW51bGw/JC5tSj1ILkUyKCJzZWxmIik6cCkrIjtyZXR1cm4gIitvKyIuIitILmQo
-dCkrIigpO30iKSgpfW49ImFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6Ii5zcGxpdCgiIikuc3BsaWNl
-KDAscykuam9pbigiLCIpCnE9JC55agppZih0eXBlb2YgcSE9PSJudW1iZXIiKXJldHVybiBxLmgoKQok
-LnlqPXErMQpuKz1xCnE9InJldHVybiBmdW5jdGlvbigiK24rIil7cmV0dXJuIHRoaXMuIgpwPSQubUoK
-cmV0dXJuIG5ldyBGdW5jdGlvbihxK0guZChwPT1udWxsPyQubUo9SC5FMigic2VsZiIpOnApKyIuIitI
-LmQodCkrIigiK24rIik7fSIpKCl9LApaNDpmdW5jdGlvbihhLGIsYyxkKXt2YXIgdD1ILkRWLHM9SC55
-Uwpzd2l0Y2goYj8tMTphKXtjYXNlIDA6dGhyb3cgSC5iKEguRWYoIkludGVyY2VwdGVkIGZ1bmN0aW9u
-IHdpdGggbm8gYXJndW1lbnRzLiIpKQpjYXNlIDE6cmV0dXJuIGZ1bmN0aW9uKGUsZixnKXtyZXR1cm4g
-ZnVuY3Rpb24oKXtyZXR1cm4gZih0aGlzKVtlXShnKHRoaXMpKX19KGMsdCxzKQpjYXNlIDI6cmV0dXJu
-IGZ1bmN0aW9uKGUsZixnKXtyZXR1cm4gZnVuY3Rpb24oaCl7cmV0dXJuIGYodGhpcylbZV0oZyh0aGlz
-KSxoKX19KGMsdCxzKQpjYXNlIDM6cmV0dXJuIGZ1bmN0aW9uKGUsZixnKXtyZXR1cm4gZnVuY3Rpb24o
-aCxpKXtyZXR1cm4gZih0aGlzKVtlXShnKHRoaXMpLGgsaSl9fShjLHQscykKY2FzZSA0OnJldHVybiBm
-dW5jdGlvbihlLGYsZyl7cmV0dXJuIGZ1bmN0aW9uKGgsaSxqKXtyZXR1cm4gZih0aGlzKVtlXShnKHRo
-aXMpLGgsaSxqKX19KGMsdCxzKQpjYXNlIDU6cmV0dXJuIGZ1bmN0aW9uKGUsZixnKXtyZXR1cm4gZnVu
-Y3Rpb24oaCxpLGosayl7cmV0dXJuIGYodGhpcylbZV0oZyh0aGlzKSxoLGksaixrKX19KGMsdCxzKQpj
-YXNlIDY6cmV0dXJuIGZ1bmN0aW9uKGUsZixnKXtyZXR1cm4gZnVuY3Rpb24oaCxpLGosayxsKXtyZXR1
-cm4gZih0aGlzKVtlXShnKHRoaXMpLGgsaSxqLGssbCl9fShjLHQscykKZGVmYXVsdDpyZXR1cm4gZnVu
-Y3Rpb24oZSxmLGcsaCl7cmV0dXJuIGZ1bmN0aW9uKCl7aD1bZyh0aGlzKV0KQXJyYXkucHJvdG90eXBl
-LnB1c2guYXBwbHkoaCxhcmd1bWVudHMpCnJldHVybiBlLmFwcGx5KGYodGhpcyksaCl9fShkLHQscyl9
-fSwKSGY6ZnVuY3Rpb24oYSxiKXt2YXIgdCxzLHIscSxwLG8sbixtPSQubUoKaWYobT09bnVsbCltPSQu
-bUo9SC5FMigic2VsZiIpCnQ9JC5QNAppZih0PT1udWxsKXQ9JC5QND1ILkUyKCJyZWNlaXZlciIpCnM9
-Yi4kc3R1Yk5hbWUKcj1iLmxlbmd0aApxPWFbc10KcD1iPT1udWxsP3E9PW51bGw6Yj09PXEKbz0hcHx8
-cj49MjgKaWYobylyZXR1cm4gSC5aNChyLCFwLHMsYikKaWYocj09PTEpe209InJldHVybiBmdW5jdGlv
-bigpe3JldHVybiB0aGlzLiIrSC5kKG0pKyIuIitILmQocykrIih0aGlzLiIrSC5kKHQpKyIpOyIKdD0k
-LnlqCmlmKHR5cGVvZiB0IT09Im51bWJlciIpcmV0dXJuIHQuaCgpCiQueWo9dCsxCnJldHVybiBuZXcg
-RnVuY3Rpb24obSt0KyJ9IikoKX1uPSJhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5eiIuc3BsaXQoIiIp
-LnNwbGljZSgwLHItMSkuam9pbigiLCIpCm09InJldHVybiBmdW5jdGlvbigiK24rIil7cmV0dXJuIHRo
-aXMuIitILmQobSkrIi4iK0guZChzKSsiKHRoaXMuIitILmQodCkrIiwgIituKyIpOyIKdD0kLnlqCmlm
-KHR5cGVvZiB0IT09Im51bWJlciIpcmV0dXJuIHQuaCgpCiQueWo9dCsxCnJldHVybiBuZXcgRnVuY3Rp
-b24obSt0KyJ9IikoKX0sCktxOmZ1bmN0aW9uKGEsYixjLGQsZSxmLGcpe3JldHVybiBILmlBKGEsYixj
-LGQsISFlLCEhZixnKX0sClRuOmZ1bmN0aW9uKGEsYil7cmV0dXJuIEguY0Uodi50eXBlVW5pdmVyc2Us
-SC56SyhhLmEpLGIpfSwKUFc6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gSC5jRSh2LnR5cGVVbml2ZXJzZSxI
-LnpLKGEuYyksYil9LApEVjpmdW5jdGlvbihhKXtyZXR1cm4gYS5hfSwKeVM6ZnVuY3Rpb24oYSl7cmV0
-dXJuIGEuY30sCkUyOmZ1bmN0aW9uKGEpe3ZhciB0LHMscixxPW5ldyBILnJUKCJzZWxmIiwidGFyZ2V0
-IiwicmVjZWl2ZXIiLCJuYW1lIikscD1KLkVwKE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHEpKQpm
-b3IodD1wLmxlbmd0aCxzPTA7czx0Oysrcyl7cj1wW3NdCmlmKHFbcl09PT1hKXJldHVybiByfX0sCm9U
-OmZ1bmN0aW9uKGEpe2lmKGE9PW51bGwpSC5mTygiYm9vbGVhbiBleHByZXNzaW9uIG11c3Qgbm90IGJl
-IG51bGwiKQpyZXR1cm4gYX0sCmZPOmZ1bmN0aW9uKGEpe3Rocm93IEguYihuZXcgSC5rWShhKSl9LAph
-ZzpmdW5jdGlvbihhKXt0aHJvdyBILmIobmV3IFAuYyhhKSl9LApFZjpmdW5jdGlvbihhKXtyZXR1cm4g
-bmV3IEguRXEoYSl9LApZZzpmdW5jdGlvbihhKXtyZXR1cm4gdi5nZXRJc29sYXRlVGFnKGEpfSwKVk06
-ZnVuY3Rpb24oYSxiKXthLiR0aT1iCnJldHVybiBhfSwKb1g6ZnVuY3Rpb24oYSl7aWYoYT09bnVsbCly
-ZXR1cm4gbnVsbApyZXR1cm4gYS4kdGl9LApJTTpmdW5jdGlvbihhLGIsYyl7cmV0dXJuIEguWTkoYVsi
-JGEiK0guZChjKV0sSC5vWChiKSl9LApZOTpmdW5jdGlvbihhLGIpe2lmKGE9PW51bGwpcmV0dXJuIGIK
-YT1hLmFwcGx5KG51bGwsYikKaWYoYT09bnVsbClyZXR1cm4gbnVsbAppZihBcnJheS5pc0FycmF5KGEp
-KXJldHVybiBhCmlmKHR5cGVvZiBhPT0iZnVuY3Rpb24iKXJldHVybiBhLmFwcGx5KG51bGwsYikKcmV0
-dXJuIGJ9LApJRzpmdW5jdGlvbihhLGIsYyl7cmV0dXJuIGEuYXBwbHkoYixILlk5KEouaWEoYilbIiRh
-IitILmQoYyldLEgub1goYikpKX0sCml3OmZ1bmN0aW9uKGEsYixjKXtPYmplY3QuZGVmaW5lUHJvcGVy
-dHkoYSxiLHt2YWx1ZTpjLGVudW1lcmFibGU6ZmFsc2Usd3JpdGFibGU6dHJ1ZSxjb25maWd1cmFibGU6
-dHJ1ZX0pfSwKdzM6ZnVuY3Rpb24oYSl7dmFyIHQscyxyLHEscD1ILnkoJC5ORi4kMShhKSksbz0kLm53
-W3BdCmlmKG8hPW51bGwpe09iamVjdC5kZWZpbmVQcm9wZXJ0eShhLHYuZGlzcGF0Y2hQcm9wZXJ0eU5h
-bWUse3ZhbHVlOm8sZW51bWVyYWJsZTpmYWxzZSx3cml0YWJsZTp0cnVlLGNvbmZpZ3VyYWJsZTp0cnVl
-fSkKcmV0dXJuIG8uaX10PSQudnZbcF0KaWYodCE9bnVsbClyZXR1cm4gdApzPXYuaW50ZXJjZXB0b3Jz
-QnlUYWdbcF0KaWYocz09bnVsbCl7cD1ILnkoJC5UWC4kMihhLHApKQppZihwIT1udWxsKXtvPSQubndb
-cF0KaWYobyE9bnVsbCl7T2JqZWN0LmRlZmluZVByb3BlcnR5KGEsdi5kaXNwYXRjaFByb3BlcnR5TmFt
-ZSx7dmFsdWU6byxlbnVtZXJhYmxlOmZhbHNlLHdyaXRhYmxlOnRydWUsY29uZmlndXJhYmxlOnRydWV9
-KQpyZXR1cm4gby5pfXQ9JC52dltwXQppZih0IT1udWxsKXJldHVybiB0CnM9di5pbnRlcmNlcHRvcnNC
-eVRhZ1twXX19aWYocz09bnVsbClyZXR1cm4gbnVsbAp0PXMucHJvdG90eXBlCnI9cFswXQppZihyPT09
-IiEiKXtvPUguVmEodCkKJC5ud1twXT1vCk9iamVjdC5kZWZpbmVQcm9wZXJ0eShhLHYuZGlzcGF0Y2hQ
-cm9wZXJ0eU5hbWUse3ZhbHVlOm8sZW51bWVyYWJsZTpmYWxzZSx3cml0YWJsZTp0cnVlLGNvbmZpZ3Vy
-YWJsZTp0cnVlfSkKcmV0dXJuIG8uaX1pZihyPT09In4iKXskLnZ2W3BdPXQKcmV0dXJuIHR9aWYocj09
-PSItIil7cT1ILlZhKHQpCk9iamVjdC5kZWZpbmVQcm9wZXJ0eShPYmplY3QuZ2V0UHJvdG90eXBlT2Yo
-YSksdi5kaXNwYXRjaFByb3BlcnR5TmFtZSx7dmFsdWU6cSxlbnVtZXJhYmxlOmZhbHNlLHdyaXRhYmxl
-OnRydWUsY29uZmlndXJhYmxlOnRydWV9KQpyZXR1cm4gcS5pfWlmKHI9PT0iKyIpcmV0dXJuIEguTGMo
-YSx0KQppZihyPT09IioiKXRocm93IEguYihQLlNZKHApKQppZih2LmxlYWZUYWdzW3BdPT09dHJ1ZSl7
-cT1ILlZhKHQpCk9iamVjdC5kZWZpbmVQcm9wZXJ0eShPYmplY3QuZ2V0UHJvdG90eXBlT2YoYSksdi5k
-aXNwYXRjaFByb3BlcnR5TmFtZSx7dmFsdWU6cSxlbnVtZXJhYmxlOmZhbHNlLHdyaXRhYmxlOnRydWUs
-Y29uZmlndXJhYmxlOnRydWV9KQpyZXR1cm4gcS5pfWVsc2UgcmV0dXJuIEguTGMoYSx0KX0sCkxjOmZ1
-bmN0aW9uKGEsYil7dmFyIHQ9T2JqZWN0LmdldFByb3RvdHlwZU9mKGEpCk9iamVjdC5kZWZpbmVQcm9w
-ZXJ0eSh0LHYuZGlzcGF0Y2hQcm9wZXJ0eU5hbWUse3ZhbHVlOkouUXUoYix0LG51bGwsbnVsbCksZW51
-bWVyYWJsZTpmYWxzZSx3cml0YWJsZTp0cnVlLGNvbmZpZ3VyYWJsZTp0cnVlfSkKcmV0dXJuIGJ9LApW
-YTpmdW5jdGlvbihhKXtyZXR1cm4gSi5RdShhLCExLG51bGwsISFhLiRpWGopfSwKVkY6ZnVuY3Rpb24o
-YSxiLGMpe3ZhciB0PWIucHJvdG90eXBlCmlmKHYubGVhZlRhZ3NbYV09PT10cnVlKXJldHVybiBILlZh
-KHQpCmVsc2UgcmV0dXJuIEouUXUodCxjLG51bGwsbnVsbCl9LApYRDpmdW5jdGlvbigpe2lmKCEwPT09
-JC5CdilyZXR1cm4KJC5Cdj0hMApILloxKCl9LApaMTpmdW5jdGlvbigpe3ZhciB0LHMscixxLHAsbyxu
-LG0KJC5udz1PYmplY3QuY3JlYXRlKG51bGwpCiQudnY9T2JqZWN0LmNyZWF0ZShudWxsKQpILmtPKCkK
-dD12LmludGVyY2VwdG9yc0J5VGFnCnM9T2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModCkKaWYodHlw
-ZW9mIHdpbmRvdyE9InVuZGVmaW5lZCIpe3dpbmRvdwpyPWZ1bmN0aW9uKCl7fQpmb3IocT0wO3E8cy5s
-ZW5ndGg7KytxKXtwPXNbcV0Kbz0kLng3LiQxKHApCmlmKG8hPW51bGwpe249SC5WRihwLHRbcF0sbykK
-aWYobiE9bnVsbCl7T2JqZWN0LmRlZmluZVByb3BlcnR5KG8sdi5kaXNwYXRjaFByb3BlcnR5TmFtZSx7
-dmFsdWU6bixlbnVtZXJhYmxlOmZhbHNlLHdyaXRhYmxlOnRydWUsY29uZmlndXJhYmxlOnRydWV9KQpy
-LnByb3RvdHlwZT1vfX19fWZvcihxPTA7cTxzLmxlbmd0aDsrK3Epe3A9c1txXQppZigvXltBLVphLXpf
-XS8udGVzdChwKSl7bT10W3BdCnRbIiEiK3BdPW0KdFsifiIrcF09bQp0WyItIitwXT1tCnRbIisiK3Bd
-PW0KdFsiKiIrcF09bX19fSwKa086ZnVuY3Rpb24oKXt2YXIgdCxzLHIscSxwLG8sbj1DLllxKCkKbj1I
-LnVkKEMuS1UsSC51ZChDLmZRLEgudWQoQy5pNyxILnVkKEMuaTcsSC51ZChDLnhpLEgudWQoQy5kayxI
-LnVkKEMud2IoQy5PNCksbikpKSkpKSkKaWYodHlwZW9mIGRhcnROYXRpdmVEaXNwYXRjaEhvb2tzVHJh
-bnNmb3JtZXIhPSJ1bmRlZmluZWQiKXt0PWRhcnROYXRpdmVEaXNwYXRjaEhvb2tzVHJhbnNmb3JtZXIK
-aWYodHlwZW9mIHQ9PSJmdW5jdGlvbiIpdD1bdF0KaWYodC5jb25zdHJ1Y3Rvcj09QXJyYXkpZm9yKHM9
-MDtzPHQubGVuZ3RoOysrcyl7cj10W3NdCmlmKHR5cGVvZiByPT0iZnVuY3Rpb24iKW49cihuKXx8bn19
-cT1uLmdldFRhZwpwPW4uZ2V0VW5rbm93blRhZwpvPW4ucHJvdG90eXBlRm9yVGFnCiQuTkY9bmV3IEgu
-ZEMocSkKJC5UWD1uZXcgSC53TihwKQokLng3PW5ldyBILlZYKG8pfSwKdWQ6ZnVuY3Rpb24oYSxiKXty
-ZXR1cm4gYShiKXx8Yn0sCnY0OmZ1bmN0aW9uKGEsYixjLGQsZSxmKXt2YXIgdD1iPyJtIjoiIixzPWM/
-IiI6ImkiLHI9ZD8idSI6IiIscT1lPyJzIjoiIixwPWY/ImciOiIiLG89ZnVuY3Rpb24oZyxoKXt0cnl7
-cmV0dXJuIG5ldyBSZWdFeHAoZyxoKX1jYXRjaChuKXtyZXR1cm4gbn19KGEsdCtzK3IrcStwKQppZihv
-IGluc3RhbmNlb2YgUmVnRXhwKXJldHVybiBvCnRocm93IEguYihQLnJyKCJJbGxlZ2FsIFJlZ0V4cCBw
-YXR0ZXJuICgiK1N0cmluZyhvKSsiKSIsYSxudWxsKSl9LAptMjpmdW5jdGlvbihhLGIsYyl7dmFyIHQK
-aWYodHlwZW9mIGI9PSJzdHJpbmciKXJldHVybiBhLmluZGV4T2YoYixjKT49MAplbHNlIGlmKGIgaW5z
-dGFuY2VvZiBILlZSKXt0PUMueEIuRyhhLGMpCnJldHVybiBiLmIudGVzdCh0KX1lbHNle3Q9Si5GTChi
-LEMueEIuRyhhLGMpKQpyZXR1cm4hdC5nbDAodCl9fSwKQTQ6ZnVuY3Rpb24oYSl7aWYoYS5pbmRleE9m
-KCIkIiwwKT49MClyZXR1cm4gYS5yZXBsYWNlKC9cJC9nLCIkJCQkIikKcmV0dXJuIGF9LAplQTpmdW5j
-dGlvbihhKXtpZigvW1tcXXt9KCkqKz8uXFxeJHxdLy50ZXN0KGEpKXJldHVybiBhLnJlcGxhY2UoL1tb
-XF17fSgpKis/LlxcXiR8XS9nLCJcXCQmIikKcmV0dXJuIGF9LAp5czpmdW5jdGlvbihhLGIsYyl7dmFy
-IHQ9SC5uTShhLGIsYykKcmV0dXJuIHR9LApuTTpmdW5jdGlvbihhLGIsYyl7dmFyIHQscyxyLHEKaWYo
-Yj09PSIiKXtpZihhPT09IiIpcmV0dXJuIGMKdD1hLmxlbmd0aApmb3Iocz1jLHI9MDtyPHQ7KytyKXM9
-cythW3JdK2MKcmV0dXJuIHMuY2hhckNvZGVBdCgwKT09MD9zOnN9cT1hLmluZGV4T2YoYiwwKQppZihx
-PDApcmV0dXJuIGEKaWYoYS5sZW5ndGg8NTAwfHxjLmluZGV4T2YoIiQiLDApPj0wKXJldHVybiBhLnNw
-bGl0KGIpLmpvaW4oYykKcmV0dXJuIGEucmVwbGFjZShuZXcgUmVnRXhwKEguZUEoYiksJ2cnKSxILkE0
-KGMpKX0sClBEOmZ1bmN0aW9uIFBEKGEsYil7dGhpcy5hPWEKdGhpcy4kdGk9Yn0sCldVOmZ1bmN0aW9u
-IFdVKCl7fSwKTFA6ZnVuY3Rpb24gTFAoYSxiLGMsZCl7dmFyIF89dGhpcwpfLmE9YQpfLmI9YgpfLmM9
-YwpfLiR0aT1kfSwKWFI6ZnVuY3Rpb24gWFIoYSxiKXt0aGlzLmE9YQp0aGlzLiR0aT1ifSwKTEk6ZnVu
-Y3Rpb24gTEkoYSxiLGMsZCxlKXt2YXIgXz10aGlzCl8uYT1hCl8uYz1iCl8uZD1jCl8uZT1kCl8uZj1l
-fSwKQ2o6ZnVuY3Rpb24gQ2ooYSxiLGMpe3RoaXMuYT1hCnRoaXMuYj1iCnRoaXMuYz1jfSwKZjk6ZnVu
-Y3Rpb24gZjkoYSxiLGMsZCxlLGYpe3ZhciBfPXRoaXMKXy5hPWEKXy5iPWIKXy5jPWMKXy5kPWQKXy5l
-PWUKXy5mPWZ9LApXMDpmdW5jdGlvbiBXMChhLGIpe3RoaXMuYT1hCnRoaXMuYj1ifSwKYXo6ZnVuY3Rp
-b24gYXooYSxiLGMpe3RoaXMuYT1hCnRoaXMuYj1iCnRoaXMuYz1jfSwKdlY6ZnVuY3Rpb24gdlYoYSl7
-dGhpcy5hPWF9LApicTpmdW5jdGlvbiBicShhLGIpe3RoaXMuYT1hCnRoaXMuYj1ifSwKQW06ZnVuY3Rp
-b24gQW0oYSl7dGhpcy5hPWF9LApYTzpmdW5jdGlvbiBYTyhhKXt0aGlzLmE9YQp0aGlzLmI9bnVsbH0s
-ClRwOmZ1bmN0aW9uIFRwKCl7fSwKbGM6ZnVuY3Rpb24gbGMoKXt9LAp6eDpmdW5jdGlvbiB6eCgpe30s
-CnJUOmZ1bmN0aW9uIHJUKGEsYixjLGQpe3ZhciBfPXRoaXMKXy5hPWEKXy5iPWIKXy5jPWMKXy5kPWR9
-LApFcTpmdW5jdGlvbiBFcShhKXt0aGlzLmE9YX0sCmtZOmZ1bmN0aW9uIGtZKGEpe3RoaXMuYT1hfSwK
-TjU6ZnVuY3Rpb24gTjUoYSl7dmFyIF89dGhpcwpfLmE9MApfLmY9Xy5lPV8uZD1fLmM9Xy5iPW51bGwK
-Xy5yPTAKXy4kdGk9YX0sCmRiOmZ1bmN0aW9uIGRiKGEsYil7dmFyIF89dGhpcwpfLmE9YQpfLmI9Ygpf
-LmQ9Xy5jPW51bGx9LAppNTpmdW5jdGlvbiBpNShhLGIpe3RoaXMuYT1hCnRoaXMuJHRpPWJ9LApONjpm
-dW5jdGlvbiBONihhLGIsYyl7dmFyIF89dGhpcwpfLmE9YQpfLmI9YgpfLmQ9Xy5jPW51bGwKXy4kdGk9
-Y30sCmRDOmZ1bmN0aW9uIGRDKGEpe3RoaXMuYT1hfSwKd046ZnVuY3Rpb24gd04oYSl7dGhpcy5hPWF9
-LApWWDpmdW5jdGlvbiBWWChhKXt0aGlzLmE9YX0sClZSOmZ1bmN0aW9uIFZSKGEsYil7dmFyIF89dGhp
-cwpfLmE9YQpfLmI9YgpfLmQ9Xy5jPW51bGx9LApFSzpmdW5jdGlvbiBFSyhhKXt0aGlzLmI9YX0sCktX
-OmZ1bmN0aW9uIEtXKGEsYixjKXt0aGlzLmE9YQp0aGlzLmI9Ygp0aGlzLmM9Y30sClBiOmZ1bmN0aW9u
-IFBiKGEsYixjKXt2YXIgXz10aGlzCl8uYT1hCl8uYj1iCl8uYz1jCl8uZD1udWxsfSwKdFE6ZnVuY3Rp
-b24gdFEoYSxiKXt0aGlzLmE9YQp0aGlzLmM9Yn0sCnVuOmZ1bmN0aW9uIHVuKGEsYixjKXt0aGlzLmE9
-YQp0aGlzLmI9Ygp0aGlzLmM9Y30sClNkOmZ1bmN0aW9uIFNkKGEsYixjKXt2YXIgXz10aGlzCl8uYT1h
-Cl8uYj1iCl8uYz1jCl8uZD1udWxsfSwKWEY6ZnVuY3Rpb24oYSl7cmV0dXJuIGF9LApEUTpmdW5jdGlv
-bihhKXtyZXR1cm4gbmV3IEludDhBcnJheShhKX0sCm9kOmZ1bmN0aW9uKGEsYixjKXtpZihhPj4+MCE9
-PWF8fGE+PWMpdGhyb3cgSC5iKEguSFkoYixhKSl9LApyTTpmdW5jdGlvbihhLGIsYyl7dmFyIHQKaWYo
-IShhPj4+MCE9PWEpKXQ9Yj4+PjAhPT1ifHxhPmJ8fGI+YwplbHNlIHQ9ITAKaWYodCl0aHJvdyBILmIo
-SC5hdShhLGIsYykpCnJldHVybiBifSwKRVQ6ZnVuY3Rpb24gRVQoKXt9LApiMDpmdW5jdGlvbiBiMCgp
-e30sCkRnOmZ1bmN0aW9uIERnKCl7fSwKUGc6ZnVuY3Rpb24gUGcoKXt9LAp4ajpmdW5jdGlvbiB4aigp
-e30sCmRFOmZ1bmN0aW9uIGRFKCl7fSwKWkE6ZnVuY3Rpb24gWkEoKXt9LAp3ZjpmdW5jdGlvbiB3Zigp
-e30sClBxOmZ1bmN0aW9uIFBxKCl7fSwKZUU6ZnVuY3Rpb24gZUUoKXt9LApWNjpmdW5jdGlvbiBWNigp
-e30sClJHOmZ1bmN0aW9uIFJHKCl7fSwKVlA6ZnVuY3Rpb24gVlAoKXt9LApXQjpmdW5jdGlvbiBXQigp
-e30sClpHOmZ1bmN0aW9uIFpHKCl7fSwKeFo6ZnVuY3Rpb24oYSxiKXt2YXIgdD1iLmQKcmV0dXJuIHQ9
-PW51bGw/Yi5kPUguSihhLCJiOCIsW2IuUV0pOnR9LApRMTpmdW5jdGlvbihhKXt2YXIgdD1hLnoKaWYo
-dD09PTZ8fHQ9PT03fHx0PT09OClyZXR1cm4gSC5RMShhLlEpCnJldHVybiB0PT09MTF8fHQ9PT0xMn0s
-Cm1EOmZ1bmN0aW9uKGEpe3JldHVybiBhLmRifSwKTjA6ZnVuY3Rpb24oYSl7cmV0dXJuIEguRSh2LnR5
-cGVVbml2ZXJzZSxhKX0sCkpTOmZ1bmN0aW9uKGEpe3ZhciB0PWEuJFMKaWYodCE9bnVsbCl7aWYodHlw
-ZW9mIHQ9PSJudW1iZXIiKXJldHVybiBILkJwKHQpCnJldHVybiBhLiRTKCl9cmV0dXJuIG51bGx9LApV
-ZTpmdW5jdGlvbihhLGIpe3ZhciB0CmlmKEguUTEoYikpaWYoYSBpbnN0YW5jZW9mIEguVHApe3Q9SC5K
-UyhhKQppZih0IT1udWxsKXJldHVybiB0fXJldHVybiBILnpLKGEpfSwKeks6ZnVuY3Rpb24oYSl7dmFy
-IHQKaWYoYSBpbnN0YW5jZW9mIFAuayl7dD1hLiR0aQpyZXR1cm4gdCE9bnVsbD90OkguVlUoYSl9aWYo
-QXJyYXkuaXNBcnJheShhKSlyZXR1cm4gSC50NihhKQpyZXR1cm4gSC5WVShKLmlhKGEpKX0sCnQ2OmZ1
-bmN0aW9uKGEpe3ZhciB0PWEuJHRpLHM9dS5tCmlmKHQ9PW51bGwpcmV0dXJuIHMKaWYodC5jb25zdHJ1
-Y3RvciE9PXMuY29uc3RydWN0b3IpcmV0dXJuIHMKcmV0dXJuIHR9LApMaDpmdW5jdGlvbihhKXt2YXIg
-dD1hLiR0aQpyZXR1cm4gdCE9bnVsbD90OkguVlUoYSl9LApWVTpmdW5jdGlvbihhKXt2YXIgdD1hLmNv
-bnN0cnVjdG9yLHM9dC4kY2NhY2hlCmlmKHMhPW51bGwpcmV0dXJuIHMKcmV0dXJuIEgucjkoYSx0KX0s
-CnI5OmZ1bmN0aW9uKGEsYil7dmFyIHQ9YSBpbnN0YW5jZW9mIEguVHA/YS5fX3Byb3RvX18uX19wcm90
-b19fLmNvbnN0cnVjdG9yOmIscz1ILmFpKHYudHlwZVVuaXZlcnNlLHQubmFtZSkKYi4kY2NhY2hlPXMK
-cmV0dXJuIHN9LApCcDpmdW5jdGlvbihhKXt2YXIgdCxzPWEscj12LnR5cGVzLHE9cltzXQppZih0eXBl
-b2YgcT09InN0cmluZyIpe3Q9SC5FKHYudHlwZVVuaXZlcnNlLHEpCnJbc109dApyZXR1cm4gdH1yZXR1
-cm4gcX0sCkpKOmZ1bmN0aW9uKGEpe3ZhciB0LHM9dGhpcyxyPXMueixxPUguWU8KaWYoSC5jYyhzKSl7
-cT1ILkl3CnMuYj1zLmE9SC5obn1lbHNlIGlmKHI9PT05KXt0PXMuZGIKaWYoIktOIj09PXQpcT1ILm9r
-CmVsc2UgaWYoIkNQIj09PXQpcT1ILktICmVsc2UgaWYoIkZLIj09PXQpcT1ILktICmVsc2UgaWYoInFV
-Ij09PXQpcT1ILk1NCmVsc2UgaWYoImEyIj09PXQpcT1ILmwKZWxzZXtyPXMuUQppZihzLmNoLmV2ZXJ5
-KEguY2MpKXtzLng9IiRpIityCnE9SC50NH19fXMuYz1xCnJldHVybiBzLmMoYSl9LApZTzpmdW5jdGlv
-bihhKXt2YXIgdD10aGlzCnJldHVybiBILldlKHYudHlwZVVuaXZlcnNlLEguVWUoYSx0KSxudWxsLHQs
-bnVsbCl9LAp0NDpmdW5jdGlvbihhKXt2YXIgdD10aGlzLngKaWYoYSBpbnN0YW5jZW9mIFAuaylyZXR1
-cm4hIWFbdF0KcmV0dXJuISFKLmlhKGEpW3RdfSwKT3o6ZnVuY3Rpb24oYSl7dmFyIHQKaWYoYT09bnVs
-bClyZXR1cm4gYQp0PXRoaXMKaWYodC5jKGEpKXJldHVybiBhCnRocm93IEguYihILlE1KEguV0soYSxI
-LlVlKGEsdCksSC5kbSh0LG51bGwpKSkpfSwKQXY6ZnVuY3Rpb24oYSl7dmFyIHQKaWYoYT09bnVsbCly
-ZXR1cm4gYQp0PXRoaXMKaWYodC5jKGEpKXJldHVybiBhCnRocm93IEguYihILlpjKEguV0soYSxILlVl
-KGEsdCksSC5kbSh0LG51bGwpKSkpfSwKRGg6ZnVuY3Rpb24oYSxiLGMsZCl7dmFyIHQ9bnVsbAppZihI
-LldlKHYudHlwZVVuaXZlcnNlLGEsdCxiLHQpKXJldHVybiBhCnRocm93IEguYihILlpjKCJUaGUgdHlw
-ZSBhcmd1bWVudCAnIitILmQoSC5kbShhLHQpKSsiJyBpcyBub3QgYSBzdWJ0eXBlIG9mIHRoZSB0eXBl
-IHZhcmlhYmxlIGJvdW5kICciK0guZChILmRtKGIsdCkpKyInIG9mIHR5cGUgdmFyaWFibGUgJyIrYysi
-JyBpbiAnIitILmQoZCkrIicuIikpfSwKV0s6ZnVuY3Rpb24oYSxiLGMpe3ZhciB0PVAucChhKSxzPUgu
-ZG0oYj09bnVsbD9ILnpLKGEpOmIsbnVsbCkKcmV0dXJuIHQrIjogdHlwZSAnIitILmQocykrIicgaXMg
-bm90IGEgc3VidHlwZSBvZiB0eXBlICciK0guZChjKSsiJyJ9LApRNTpmdW5jdGlvbihhKXtyZXR1cm4g
-bmV3IEguaHooIkNhc3RFcnJvcjogIithKX0sClB2OmZ1bmN0aW9uKGEsYil7cmV0dXJuIG5ldyBILmh6
-KCJDYXN0RXJyb3I6ICIrSC5XSyhhLG51bGwsYikpfSwKWmM6ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyBI
-LmlNKCJUeXBlRXJyb3I6ICIrYSl9LApxOmZ1bmN0aW9uKGEsYil7cmV0dXJuIG5ldyBILmlNKCJUeXBl
-RXJyb3I6ICIrSC5XSyhhLG51bGwsYikpfSwKSXc6ZnVuY3Rpb24oYSl7cmV0dXJuITB9LApobjpmdW5j
-dGlvbihhKXtyZXR1cm4gYX0sCmw6ZnVuY3Rpb24oYSl7cmV0dXJuITA9PT1hfHwhMT09PWF9LApFOTpm
-dW5jdGlvbihhKXtpZighMD09PWF8fCExPT09YSlyZXR1cm4gYQppZihhPT1udWxsKXJldHVybiBhCnRo
-cm93IEguYihILlB2KGEsImJvb2wiKSl9LAp4ZDpmdW5jdGlvbihhKXtpZighMD09PWF8fCExPT09YSly
-ZXR1cm4gYQppZihhPT1udWxsKXJldHVybiBhCnRocm93IEguYihILnEoYSwiYm9vbCIpKX0sCmRqOmZ1
-bmN0aW9uKGEpe2lmKHR5cGVvZiBhPT0ibnVtYmVyIilyZXR1cm4gYQppZihhPT1udWxsKXJldHVybiBh
-CnRocm93IEguYihILlB2KGEsImRvdWJsZSIpKX0sCklnOmZ1bmN0aW9uKGEpe2lmKHR5cGVvZiBhPT0i
-bnVtYmVyIilyZXR1cm4gYQppZihhPT1udWxsKXJldHVybiBhCnRocm93IEguYihILnEoYSwiZG91Ymxl
-IikpfSwKb2s6ZnVuY3Rpb24oYSl7cmV0dXJuIHR5cGVvZiBhPT0ibnVtYmVyIiYmTWF0aC5mbG9vcihh
-KT09PWF9LApXWTpmdW5jdGlvbihhKXtpZih0eXBlb2YgYT09Im51bWJlciImJk1hdGguZmxvb3IoYSk9
-PT1hKXJldHVybiBhCmlmKGE9PW51bGwpcmV0dXJuIGEKdGhyb3cgSC5iKEguUHYoYSwiaW50IikpfSwK
-U2M6ZnVuY3Rpb24oYSl7aWYodHlwZW9mIGE9PSJudW1iZXIiJiZNYXRoLmZsb29yKGEpPT09YSlyZXR1
-cm4gYQppZihhPT1udWxsKXJldHVybiBhCnRocm93IEguYihILnEoYSwiaW50IikpfSwKS0g6ZnVuY3Rp
-b24oYSl7cmV0dXJuIHR5cGVvZiBhPT0ibnVtYmVyIn0sCnVVOmZ1bmN0aW9uKGEpe2lmKHR5cGVvZiBh
-PT0ibnVtYmVyIilyZXR1cm4gYQppZihhPT1udWxsKXJldHVybiBhCnRocm93IEguYihILlB2KGEsIm51
-bSIpKX0sCkROOmZ1bmN0aW9uKGEpe2lmKHR5cGVvZiBhPT0ibnVtYmVyIilyZXR1cm4gYQppZihhPT1u
-dWxsKXJldHVybiBhCnRocm93IEguYihILnEoYSwibnVtIikpfSwKTU06ZnVuY3Rpb24oYSl7cmV0dXJu
-IHR5cGVvZiBhPT0ic3RyaW5nIn0sCmMwOmZ1bmN0aW9uKGEpe2lmKHR5cGVvZiBhPT0ic3RyaW5nIily
-ZXR1cm4gYQppZihhPT1udWxsKXJldHVybiBhCnRocm93IEguYihILlB2KGEsIlN0cmluZyIpKX0sCnk6
-ZnVuY3Rpb24oYSl7aWYodHlwZW9mIGE9PSJzdHJpbmciKXJldHVybiBhCmlmKGE9PW51bGwpcmV0dXJu
-IGEKdGhyb3cgSC5iKEgucShhLCJTdHJpbmciKSl9LAppbzpmdW5jdGlvbihhLGIpe3ZhciB0LHMscgpm
-b3IodD0iIixzPSIiLHI9MDtyPGEubGVuZ3RoOysrcixzPSIsICIpdCs9Qy54Qi5oKHMsSC5kbShhW3Jd
-LGIpKQpyZXR1cm4gdH0sCmJJOmZ1bmN0aW9uKGEwLGExLGEyKXt2YXIgdCxzLHIscSxwLG8sbixtLGws
-ayxqLGksaCxnLGYsZSxkLGMsYixhPSIsICIKaWYoYTIhPW51bGwpe3Q9YTIubGVuZ3RoCmlmKGExPT1u
-dWxsKXthMT1ILlZNKFtdLHUucykKcz1udWxsfWVsc2Ugcz1hMS5sZW5ndGgKcj1hMS5sZW5ndGgKZm9y
-KHE9dDtxPjA7LS1xKUMuTm0uaShhMSwiVCIrKHIrcSkpCmZvcihwPSI8IixvPSIiLHE9MDtxPHQ7Kytx
-LG89YSl7cCs9bwpuPWExLmxlbmd0aAptPW4tMS1xCmlmKG08MClyZXR1cm4gSC5PSChhMSxtKQpwPUMu
-eEIuaChwLGExW21dKQpsPWEyW3FdCmlmKCFILmNjKGwpKXArPUMueEIuaCgiIGV4dGVuZHMgIixILmRt
-KGwsYTEpKX1wKz0iPiJ9ZWxzZXtwPSIiCnM9bnVsbH1uPWEwLlEKaz1hMC5jaApqPWsuYQppPWoubGVu
-Z3RoCmg9ay5iCmc9aC5sZW5ndGgKZj1rLmMKZT1mLmxlbmd0aApkPUguZG0obixhMSkKZm9yKGM9IiIs
-Yj0iIixxPTA7cTxpOysrcSxiPWEpYys9Qy54Qi5oKGIsSC5kbShqW3FdLGExKSkKaWYoZz4wKXtjKz1i
-KyJbIgpmb3IoYj0iIixxPTA7cTxnOysrcSxiPWEpYys9Qy54Qi5oKGIsSC5kbShoW3FdLGExKSkKYys9
-Il0ifWlmKGU+MCl7Yys9YisieyIKZm9yKGI9IiIscT0wO3E8ZTtxKz0yLGI9YSljKz1DLnhCLmgoYixI
-LmRtKGZbcSsxXSxhMSkpKyIgIitmW3FdCmMrPSJ9In1pZihzIT1udWxsKWExLmxlbmd0aD1zCnJldHVy
-biBwKyIoIitjKyIpID0+ICIrSC5kKGQpfSwKZG06ZnVuY3Rpb24oYSxiKXt2YXIgdCxzLHIscSxwPWEu
-egppZihwPT09NSlyZXR1cm4iZXJhc2VkIgppZihwPT09MilyZXR1cm4iZHluYW1pYyIKaWYocD09PTMp
-cmV0dXJuInZvaWQiCmlmKHA9PT0xKXJldHVybiJOZXZlciIKaWYocD09PTQpcmV0dXJuImFueSIKaWYo
-cD09PTYpcmV0dXJuIEguZChILmRtKGEuUSxiKSkrIioiCmlmKHA9PT03KXJldHVybiBILmQoSC5kbShh
-LlEsYikpKyI/IgppZihwPT09OClyZXR1cm4iRnV0dXJlT3I8IitILmQoSC5kbShhLlEsYikpKyI+Igpp
-ZihwPT09OSl7dD1ILm8zKGEuUSkKcz1hLmNoCnJldHVybiBzLmxlbmd0aCE9PTA/dCsoIjwiK0guaW8o
-cyxiKSsiPiIpOnR9aWYocD09PTExKXJldHVybiBILmJJKGEsYixudWxsKQppZihwPT09MTIpcmV0dXJu
-IEguYkkoYS5RLGIsYS5jaCkKaWYocD09PTEzKXtyPWEuUQpxPWIubGVuZ3RoCnI9cS0xLXIKaWYocjww
-fHxyPj1xKXJldHVybiBILk9IKGIscikKcmV0dXJuIGJbcl19cmV0dXJuIj8ifSwKbzM6ZnVuY3Rpb24o
-YSl7dmFyIHQscz1ILkpnKGEpCmlmKHMhPW51bGwpcmV0dXJuIHMKdD0ibWluaWZpZWQ6IithCnJldHVy
-biB0fSwKUW86ZnVuY3Rpb24oYSxiKXt2YXIgdD1hLnRSW2JdCmZvcig7dHlwZW9mIHQ9PSJzdHJpbmci
-Oyl0PWEudFJbdF0KcmV0dXJuIHR9LAphaTpmdW5jdGlvbihhLGIpe3ZhciB0LHMscixxLHAsbz1hLmVU
-LG49b1tiXQppZihuPT1udWxsKXJldHVybiBILkUoYSxiKQplbHNlIGlmKHR5cGVvZiBuPT0ibnVtYmVy
-Iil7dD1uCnM9SC5tKGEsNSwiIyIpCnI9W10KZm9yKHE9MDtxPHQ7KytxKXIucHVzaChzKQpwPUguSihh
-LGIscikKb1tiXT1wCnJldHVybiBwfWVsc2UgcmV0dXJuIG59LAp4YjpmdW5jdGlvbihhLGIpe3JldHVy
-biBILkl4KGEudFIsYil9LApGRjpmdW5jdGlvbihhLGIpe3JldHVybiBILkl4KGEuZVQsYil9LApFOmZ1
-bmN0aW9uKGEsYil7dmFyIHQscz1hLmVDLHI9cy5nZXQoYikKaWYociE9bnVsbClyZXR1cm4gcgp0PUgu
-eihhLG51bGwsYikKcy5zZXQoYix0KQpyZXR1cm4gdH0sCmNFOmZ1bmN0aW9uKGEsYixjKXt2YXIgdCxz
-LHI9Yi5jeAppZihyPT1udWxsKXI9Yi5jeD1uZXcgTWFwKCkKdD1yLmdldChjKQppZih0IT1udWxsKXJl
-dHVybiB0CnM9SC56KGEsYixjKQpyLnNldChjLHMpCnJldHVybiBzfSwKdjU6ZnVuY3Rpb24oYSxiLGMp
-e3ZhciB0LHMscixxPWIuY3kKaWYocT09bnVsbClxPWIuY3k9bmV3IE1hcCgpCnQ9Yy5kYgpzPXEuZ2V0
-KHQpCmlmKHMhPW51bGwpcmV0dXJuIHMKcj1ILmEoYSxiLGMuej09PTEwP2MuY2g6W2NdKQpxLnNldCh0
-LHIpCnJldHVybiByfSwKejpmdW5jdGlvbihhLGIsYyl7dmFyIHQ9SC5pKEgubyhhLGIsYykpCnJldHVy
-biB0fSwKV0c6ZnVuY3Rpb24oYSxiKXt2YXIgdD1iLmRiCmEuZUMuc2V0KHQsYikKYi5hPUguT3oKYi5i
-PUguQXYKYi5jPUguSkoKcmV0dXJuIGJ9LAptOmZ1bmN0aW9uKGEsYixjKXt2YXIgdCxzPWEuZUMuZ2V0
-KGMpCmlmKHMhPW51bGwpcmV0dXJuIHMKdD1uZXcgSC5KYyhudWxsLG51bGwsbnVsbCkKdC56PWIKdC5k
-Yj1jCnJldHVybiBILldHKGEsdCl9LAp2OmZ1bmN0aW9uKGEsYixjLGQpe3ZhciB0LHM9YS5lQy5nZXQo
-ZCkKaWYocyE9bnVsbClyZXR1cm4gcwp0PW5ldyBILkpjKG51bGwsbnVsbCxudWxsKQp0Lno9Ygp0LlE9
-Ywp0LmRiPWQKcmV0dXJuIEguV0coYSx0KX0sCkg6ZnVuY3Rpb24oYSxiKXt2YXIgdCxzPSIiK2IrIl4i
-LHI9YS5lQy5nZXQocykKaWYociE9bnVsbClyZXR1cm4gcgp0PW5ldyBILkpjKG51bGwsbnVsbCxudWxs
-KQp0Lno9MTMKdC5RPWIKdC5kYj1zCnJldHVybiBILldHKGEsdCl9LApVeDpmdW5jdGlvbihhKXt2YXIg
-dCxzLHIscT1hLmxlbmd0aApmb3IodD0iIixzPSIiLHI9MDtyPHE7KytyLHM9IiwiKXQrPXMrYVtyXS5k
-YgpyZXR1cm4gdH0sClM0OmZ1bmN0aW9uKGEpe3ZhciB0LHMscixxLHAsbz1hLmxlbmd0aApmb3IodD0i
-IixzPSIiLHI9MDtyPG87cis9MixzPSIsIil7cT1hW3JdCnA9YVtyKzFdLmRiCnQrPXMrcSsiOiIrcH1y
-ZXR1cm4gdH0sCko6ZnVuY3Rpb24oYSxiLGMpe3ZhciB0LHMscj1iCmlmKGMubGVuZ3RoIT09MClyKz0i
-PCIrSC5VeChjKSsiPiIKdD1hLmVDLmdldChyKQppZih0IT1udWxsKXJldHVybiB0CnM9bmV3IEguSmMo
-bnVsbCxudWxsLG51bGwpCnMuej05CnMuUT1iCnMuY2g9YwppZihjLmxlbmd0aD4wKXMuZD1jWzBdCnMu
-ZGI9cgpyZXR1cm4gSC5XRyhhLHMpfSwKYTpmdW5jdGlvbihhLGIsYyl7dmFyIHQscyxyLHEscAppZihi
-Lno9PT0xMCl7dD1iLlEKcz1iLmNoLmNvbmNhdChjKX1lbHNle3M9Ywp0PWJ9cj10LmRiKyI7IisoIjwi
-K0guVXgocykrIj4iKQpxPWEuZUMuZ2V0KHIpCmlmKHEhPW51bGwpcmV0dXJuIHEKcD1uZXcgSC5KYyhu
-dWxsLG51bGwsbnVsbCkKcC56PTEwCnAuUT10CnAuY2g9cwpwLmRiPXIKcmV0dXJuIEguV0coYSxwKX0s
-CkM6ZnVuY3Rpb24oYSxiLGMpe3ZhciB0LHMscixxPWIuZGIscD1jLmEsbz1wLmxlbmd0aCxuPWMuYixt
-PW4ubGVuZ3RoLGw9Yy5jLGs9bC5sZW5ndGgsaj0iKCIrSC5VeChwKQppZihtPjApais9KG8+MD8iLCI6
-IiIpKyJbIitILlV4KG4pKyJdIgppZihrPjApais9KG8+MD8iLCI6IiIpKyJ7IitILlM0KGwpKyJ9Igp0
-PXErKGorIikiKQpzPWEuZUMuZ2V0KHQpCmlmKHMhPW51bGwpcmV0dXJuIHMKcj1uZXcgSC5KYyhudWxs
-LG51bGwsbnVsbCkKci56PTExCnIuUT1iCnIuY2g9YwpyLmRiPXQKcmV0dXJuIEguV0coYSxyKX0sCkQ6
-ZnVuY3Rpb24oYSxiLGMpe3ZhciB0LHM9Yi5kYisiPCIrSC5VeChjKSsiPiIscj1hLmVDLmdldChzKQpp
-ZihyIT1udWxsKXJldHVybiByCnQ9bmV3IEguSmMobnVsbCxudWxsLG51bGwpCnQuej0xMgp0LlE9Ygp0
-LmNoPWMKdC5kYj1zCnJldHVybiBILldHKGEsdCl9LApvOmZ1bmN0aW9uKGEsYixjKXtyZXR1cm57dTph
-LGU6YixyOmMsczpbXSxwOjB9fSwKaTpmdW5jdGlvbihhKXt2YXIgdCxzLHIscSxwLG8sbixtLGwsayxq
-LGksaCxnPWEucixmPWEucwpmb3IodD1nLmxlbmd0aCxzPTA7czx0Oyl7cj1nLmNoYXJDb2RlQXQocykK
-aWYocj49NDgmJnI8PTU3KXM9SC5BKHMrMSxyLGcsZikKZWxzZSBpZigoKChyfDMyKT4+PjApLTk3JjY1
-NTM1KTwyNnx8cj09PTk1fHxyPT09MzYpcz1ILnQoYSxzLGcsZiwhMSkKZWxzZSBpZihyPT09NDYpcz1I
-LnQoYSxzLGcsZiwhMCkKZWxzZXsrK3MKc3dpdGNoKHIpe2Nhc2UgNDQ6YnJlYWsKY2FzZSA1ODpicmVh
-awpjYXNlIDU5OmYucHVzaChILksoYS51LGEuZSxmLnBvcCgpKSkKYnJlYWsKY2FzZSA5NDpmLnB1c2go
-SC5IKGEudSxmLnBvcCgpKSkKYnJlYWsKY2FzZSAzNTpmLnB1c2goSC5tKGEudSw1LCIjIikpCmJyZWFr
-CmNhc2UgNjQ6Zi5wdXNoKEgubShhLnUsMiwiQCIpKQpicmVhawpjYXNlIDEyNjpmLnB1c2goSC5tKGEu
-dSwzLCJ+IikpCmJyZWFrCmNhc2UgNjA6Zi5wdXNoKGEucCkKYS5wPWYubGVuZ3RoCmJyZWFrCmNhc2Ug
-NjI6cT1hLnUKcD1mLnNwbGljZShhLnApCkgucihhLnUsYS5lLHApCmEucD1mLnBvcCgpCm89Zi5wb3Ao
-KQppZih0eXBlb2Ygbz09InN0cmluZyIpZi5wdXNoKEguSihxLG8scCkpCmVsc2V7bj1ILksocSxhLmUs
-bykKc3dpdGNoKG4ueil7Y2FzZSAxMTpmLnB1c2goSC5EKHEsbixwKSkKYnJlYWsKZGVmYXVsdDpmLnB1
-c2goSC5hKHEsbixwKSkKYnJlYWt9fWJyZWFrCmNhc2UgMzg6SC5JKGEsZikKYnJlYWsKY2FzZSA0Mjpt
-PWEudQpsPUguSyhtLGEuZSxmLnBvcCgpKQpmLnB1c2goSC52KG0sNixsLGwuZGIrIioiKSkKYnJlYWsK
-Y2FzZSA2MzptPWEudQpsPUguSyhtLGEuZSxmLnBvcCgpKQpmLnB1c2goSC52KG0sNyxsLGwuZGIrIj8i
-KSkKYnJlYWsKY2FzZSA0NzptPWEudQpsPUguSyhtLGEuZSxmLnBvcCgpKQpmLnB1c2goSC52KG0sOCxs
-LGwuZGIrIi8iKSkKYnJlYWsKY2FzZSA0MDpmLnB1c2goYS5wKQphLnA9Zi5sZW5ndGgKYnJlYWsKY2Fz
-ZSA0MTpxPWEudQprPW5ldyBILkcoKQpqPXEuc0VBCmk9cS5zRUEKbz1mLnBvcCgpCmlmKHR5cGVvZiBv
-PT0ibnVtYmVyIilzd2l0Y2gobyl7Y2FzZS0xOmo9Zi5wb3AoKQpicmVhawpjYXNlLTI6aT1mLnBvcCgp
-CmJyZWFrCmRlZmF1bHQ6Zi5wdXNoKG8pCmJyZWFrfWVsc2UgZi5wdXNoKG8pCnA9Zi5zcGxpY2UoYS5w
-KQpILnIoYS51LGEuZSxwKQphLnA9Zi5wb3AoKQprLmE9cAprLmI9agprLmM9aQpmLnB1c2goSC5DKHEs
-SC5LKHEsYS5lLGYucG9wKCkpLGspKQpicmVhawpjYXNlIDkxOmYucHVzaChhLnApCmEucD1mLmxlbmd0
-aApicmVhawpjYXNlIDkzOnA9Zi5zcGxpY2UoYS5wKQpILnIoYS51LGEuZSxwKQphLnA9Zi5wb3AoKQpm
-LnB1c2gocCkKZi5wdXNoKC0xKQpicmVhawpjYXNlIDEyMzpmLnB1c2goYS5wKQphLnA9Zi5sZW5ndGgK
-YnJlYWsKY2FzZSAxMjU6cD1mLnNwbGljZShhLnApCkguQihhLnUsYS5lLHApCmEucD1mLnBvcCgpCmYu
-cHVzaChwKQpmLnB1c2goLTIpCmJyZWFrCmRlZmF1bHQ6dGhyb3ciQmFkIGNoYXJhY3RlciAiK3J9fX1o
-PWYucG9wKCkKcmV0dXJuIEguSyhhLnUsYS5lLGgpfSwKQTpmdW5jdGlvbihhLGIsYyxkKXt2YXIgdCxz
-LHI9Yi00OApmb3IodD1jLmxlbmd0aDthPHQ7KythKXtzPWMuY2hhckNvZGVBdChhKQppZighKHM+PTQ4
-JiZzPD01NykpYnJlYWsKcj1yKjEwKyhzLTQ4KX1kLnB1c2gocikKcmV0dXJuIGF9LAp0OmZ1bmN0aW9u
-KGEsYixjLGQsZSl7dmFyIHQscyxyLHEscCxvLG49YisxCmZvcih0PWMubGVuZ3RoO248dDsrK24pe3M9
-Yy5jaGFyQ29kZUF0KG4pCmlmKHM9PT00Nil7aWYoZSlicmVhawplPSEwfWVsc2V7aWYoISgoKChzfDMy
-KT4+PjApLTk3JjY1NTM1KTwyNnx8cz09PTk1fHxzPT09MzYpKXI9cz49NDgmJnM8PTU3CmVsc2Ugcj0h
-MAppZighcilicmVha319cT1jLnN1YnN0cmluZyhiLG4pCmlmKGUpe3Q9YS51CnA9YS5lCmlmKHAuej09
-PTEwKXA9cC5RCm89SC5Rbyh0LHAuUSlbcV0KaWYobz09bnVsbClILnZoKCdObyAiJytxKyciIGluICIn
-K0gubUQocCkrJyInKQpkLnB1c2goSC5jRSh0LHAsbykpfWVsc2UgZC5wdXNoKHEpCnJldHVybiBufSwK
-STpmdW5jdGlvbihhLGIpe3ZhciB0PWIucG9wKCkKaWYoMD09PXQpe2IucHVzaChILm0oYS51LDEsIjAm
-IikpCnJldHVybn1pZigxPT09dCl7Yi5wdXNoKEgubShhLnUsNCwiMSYiKSkKcmV0dXJufXRocm93IEgu
-YihQLmhWKCJVbmV4cGVjdGVkIGV4dGVuZGVkIG9wZXJhdGlvbiAiK0guZCh0KSkpfSwKSzpmdW5jdGlv
-bihhLGIsYyl7aWYodHlwZW9mIGM9PSJzdHJpbmciKXJldHVybiBILkooYSxjLGEuc0VBKQplbHNlIGlm
-KHR5cGVvZiBjPT0ibnVtYmVyIilyZXR1cm4gSC5UVihhLGIsYykKZWxzZSByZXR1cm4gY30sCnI6ZnVu
-Y3Rpb24oYSxiLGMpe3ZhciB0LHM9Yy5sZW5ndGgKZm9yKHQ9MDt0PHM7Kyt0KWNbdF09SC5LKGEsYixj
-W3RdKX0sCkI6ZnVuY3Rpb24oYSxiLGMpe3ZhciB0LHM9Yy5sZW5ndGgKZm9yKHQ9MTt0PHM7dCs9Milj
-W3RdPUguSyhhLGIsY1t0XSl9LApUVjpmdW5jdGlvbihhLGIsYyl7dmFyIHQscyxyPWIuegppZihyPT09
-MTApe2lmKGM9PT0wKXJldHVybiBiLlEKdD1iLmNoCnM9dC5sZW5ndGgKaWYoYzw9cylyZXR1cm4gdFtj
-LTFdCmMtPXMKYj1iLlEKcj1iLnp9ZWxzZSBpZihjPT09MClyZXR1cm4gYgppZihyIT09OSl0aHJvdyBI
-LmIoUC5oVigiSW5kZXhlZCBiYXNlIG11c3QgYmUgYW4gaW50ZXJmYWNlIHR5cGUiKSkKdD1iLmNoCmlm
-KGM8PXQubGVuZ3RoKXJldHVybiB0W2MtMV0KdGhyb3cgSC5iKFAuaFYoIkJhZCBpbmRleCAiK2MrIiBm
-b3IgIitiLncoMCkpKX0sCldlOmZ1bmN0aW9uKGEsYixjLGQsZSl7dmFyIHQscyxyLHEscCxvLG4sbSxs
-LGsKaWYoYj09PWQpcmV0dXJuITAKaWYoSC5jYyhkKSlyZXR1cm4hMAp0PWIuegppZih0PT09NClyZXR1
-cm4hMAppZihILmNjKGIpKXJldHVybiExCmlmKGI9PT11LlApcmV0dXJuITAKcz10PT09MTMKaWYocylp
-ZihILldlKGEsY1tiLlFdLGMsZCxlKSlyZXR1cm4hMApyPWQuegppZih0PT09NilyZXR1cm4gSC5XZShh
-LGIuUSxjLGQsZSkKaWYocj09PTYpe3E9ZC5RCnJldHVybiBILldlKGEsYixjLHEsZSl9aWYodD09PTgp
-e2lmKCFILldlKGEsYi5RLGMsZCxlKSlyZXR1cm4hMQpyZXR1cm4gSC5XZShhLEgueFooYSxiKSxjLGQs
-ZSl9aWYodD09PTcpe3E9SC5XZShhLGIuUSxjLGQsZSkKcmV0dXJuIHF9aWYocj09PTgpe2lmKEguV2Uo
-YSxiLGMsZC5RLGUpKXJldHVybiEwCnJldHVybiBILldlKGEsYixjLEgueFooYSxkKSxlKX1pZihyPT09
-Nyl7cT1ILldlKGEsYixjLGQuUSxlKQpyZXR1cm4gcX1pZihzKXJldHVybiExCnE9dCE9PTExCmlmKCgh
-cXx8dD09PTEyKSYmZD09PXUuWilyZXR1cm4hMAppZihyPT09MTIpe2lmKGI9PT11LmcpcmV0dXJuITAK
-aWYodCE9PTEyKXJldHVybiExCnA9Yi5jaApvPWQuY2gKbj1wLmxlbmd0aAppZihuIT09by5sZW5ndGgp
-cmV0dXJuITEKZm9yKHE9dS5hdixtPTA7bTxuOysrbSl7bD1wW21dCms9b1ttXQpxLmIobCkKcS5iKGsp
-CmlmKCFILldlKGEsbCxjLGssZSl8fCFILldlKGEsayxlLGwsYykpcmV0dXJuITF9Yz1jPT1udWxsP3A6
-cC5jb25jYXQoYykKZT1lPT1udWxsP286by5jb25jYXQoZSkKcmV0dXJuIEguYk8oYSxiLlEsYyxkLlEs
-ZSl9aWYocj09PTExKXtpZihiPT09dS5nKXJldHVybiEwCmlmKHEpcmV0dXJuITEKcmV0dXJuIEguYk8o
-YSxiLGMsZCxlKX1pZih0PT09OSl7aWYociE9PTkpcmV0dXJuITEKcmV0dXJuIEgucEcoYSxiLGMsZCxl
-KX1yZXR1cm4hMX0sCmJPOmZ1bmN0aW9uKGEwLGExLGEyLGEzLGE0KXt2YXIgdCxzLHIscSxwLG8sbixt
-LGwsayxqLGksaCxnLGYsZSxkLGMsYixhCmlmKCFILldlKGEwLGExLlEsYTIsYTMuUSxhNCkpcmV0dXJu
-ITEKdD1hMS5jaApzPWEzLmNoCnI9dC5hCnE9cy5hCnA9ci5sZW5ndGgKbz1xLmxlbmd0aAppZihwPm8p
-cmV0dXJuITEKbj1vLXAKbT10LmIKbD1zLmIKaz1tLmxlbmd0aApqPWwubGVuZ3RoCmlmKHArazxvK2op
-cmV0dXJuITEKZm9yKGk9MDtpPHA7KytpKXtoPXJbaV0KaWYoIUguV2UoYTAscVtpXSxhNCxoLGEyKSly
-ZXR1cm4hMX1mb3IoaT0wO2k8bjsrK2kpe2g9bVtpXQppZighSC5XZShhMCxxW3AraV0sYTQsaCxhMikp
-cmV0dXJuITF9Zm9yKGk9MDtpPGo7KytpKXtoPW1bbitpXQppZighSC5XZShhMCxsW2ldLGE0LGgsYTIp
-KXJldHVybiExfWc9dC5jCmY9cy5jCmU9Zy5sZW5ndGgKZD1mLmxlbmd0aApmb3IoaT0wLGM9MDtjPGQ7
-Yys9Mil7Yj1mW2NdCmRve2lmKGk+PWUpcmV0dXJuITEKYT1nW2ldCmkrPTJ9d2hpbGUoYTxiKQppZihi
-PGEpcmV0dXJuITEKaD1nW2ktMV0KaWYoIUguV2UoYTAsZltjKzFdLGE0LGgsYTIpKXJldHVybiExfXJl
-dHVybiEwfSwKcEc6ZnVuY3Rpb24oYSxiLGMsZCxlKXt2YXIgdCxzLHIscSxwLG8sbixtLGw9Yi5RLGs9
-ZC5RCmlmKGw9PT1rKXt0PWIuY2gKcz1kLmNoCnI9dC5sZW5ndGgKZm9yKHE9MDtxPHI7KytxKXtwPXRb
-cV0Kbz1zW3FdCmlmKCFILldlKGEscCxjLG8sZSkpcmV0dXJuITF9cmV0dXJuITB9bj1ILlFvKGEsbCkK
-aWYobj09bnVsbClyZXR1cm4hMQptPW5ba10KaWYobT09bnVsbClyZXR1cm4hMQpyPW0ubGVuZ3RoCnM9
-ZC5jaApmb3IocT0wO3E8cjsrK3EpaWYoIUguV2UoYSxILmNFKGEsYixtW3FdKSxjLHNbcV0sZSkpcmV0
-dXJuITEKcmV0dXJuITB9LApjYzpmdW5jdGlvbihhKXt2YXIgdCxzCmlmKGE9PT11LkspcmV0dXJuITAK
-dD1hLnoKaWYodCE9PTIpaWYodCE9PTMpaWYodCE9PTQpaWYodCE9PTUpcz10PT09OCYmSC5jYyhhLlEp
-CmVsc2Ugcz0hMAplbHNlIHM9ITAKZWxzZSBzPSEwCmVsc2Ugcz0hMApyZXR1cm4gc30sCkl4OmZ1bmN0
-aW9uKGEsYil7dmFyIHQscyxyPU9iamVjdC5rZXlzKGIpLHE9ci5sZW5ndGgKZm9yKHQ9MDt0PHE7Kyt0
-KXtzPXJbdF0KYVtzXT1iW3NdfX0sCkpjOmZ1bmN0aW9uIEpjKGEsYixjKXt2YXIgXz10aGlzCl8uYT1h
-Cl8uYj1iCl8uYz1jCl8ueT1fLng9Xy5kPW51bGwKXy56PTAKXy5kYj1fLmN5PV8uY3g9Xy5jaD1fLlE9
-bnVsbH0sCkc6ZnVuY3Rpb24gRygpe3RoaXMuYz10aGlzLmI9dGhpcy5hPW51bGx9LAp1OTpmdW5jdGlv
-biB1OSgpe30sCmh6OmZ1bmN0aW9uIGh6KGEpe3RoaXMuYT1hfSwKaU06ZnVuY3Rpb24gaU0oYSl7dGhp
-cy5hPWF9LApSOTpmdW5jdGlvbihhKXtyZXR1cm4gdS5kLmMoYSl8fHUuQi5jKGEpfHx1LmR6LmMoYSl8
-fHUuSS5jKGEpfHx1LkEuYyhhKXx8dS5nNC5jKGEpfHx1LmcyLmMoYSl9LApKZzpmdW5jdGlvbihhKXty
-ZXR1cm4gdi5tYW5nbGVkR2xvYmFsTmFtZXNbYV19fSxKPXsKUXU6ZnVuY3Rpb24oYSxiLGMsZCl7cmV0
-dXJue2k6YSxwOmIsZTpjLHg6ZH19LAprczpmdW5jdGlvbihhKXt2YXIgdCxzLHIscSxwPWFbdi5kaXNw
-YXRjaFByb3BlcnR5TmFtZV0KaWYocD09bnVsbClpZigkLkJ2PT1udWxsKXtILlhEKCkKcD1hW3YuZGlz
-cGF0Y2hQcm9wZXJ0eU5hbWVdfWlmKHAhPW51bGwpe3Q9cC5wCmlmKCExPT09dClyZXR1cm4gcC5pCmlm
-KCEwPT09dClyZXR1cm4gYQpzPU9iamVjdC5nZXRQcm90b3R5cGVPZihhKQppZih0PT09cylyZXR1cm4g
-cC5pCmlmKHAuZT09PXMpdGhyb3cgSC5iKFAuU1koIlJldHVybiBpbnRlcmNlcHRvciBmb3IgIitILmQo
-dChhLHApKSkpfXI9YS5jb25zdHJ1Y3RvcgpxPXI9PW51bGw/bnVsbDpyWyQuVU4oKV0KaWYocSE9bnVs
-bClyZXR1cm4gcQpxPUgudzMoYSkKaWYocSE9bnVsbClyZXR1cm4gcQppZih0eXBlb2YgYT09ImZ1bmN0
-aW9uIilyZXR1cm4gQy5ERwp0PU9iamVjdC5nZXRQcm90b3R5cGVPZihhKQppZih0PT1udWxsKXJldHVy
-biBDLlpRCmlmKHQ9PT1PYmplY3QucHJvdG90eXBlKXJldHVybiBDLlpRCmlmKHR5cGVvZiByPT0iZnVu
-Y3Rpb24iKXtPYmplY3QuZGVmaW5lUHJvcGVydHkociwkLlVOKCkse3ZhbHVlOkMudkIsZW51bWVyYWJs
-ZTpmYWxzZSx3cml0YWJsZTp0cnVlLGNvbmZpZ3VyYWJsZTp0cnVlfSkKcmV0dXJuIEMudkJ9cmV0dXJu
-IEMudkJ9LApRaTpmdW5jdGlvbihhLGIpe2lmKGE8MHx8YT40Mjk0OTY3Mjk1KXRocm93IEguYihQLlRF
-KGEsMCw0Mjk0OTY3Mjk1LCJsZW5ndGgiLG51bGwpKQpyZXR1cm4gSi5weShuZXcgQXJyYXkoYSksYil9
-LApweTpmdW5jdGlvbihhLGIpe3JldHVybiBKLkVwKEguVk0oYSxiLkMoImpkPDA+IikpKX0sCkVwOmZ1
-bmN0aW9uKGEpe2EuZml4ZWQkbGVuZ3RoPUFycmF5CnJldHVybiBhfSwKekM6ZnVuY3Rpb24oYSl7YS5m
-aXhlZCRsZW5ndGg9QXJyYXkKYS5pbW11dGFibGUkbGlzdD1BcnJheQpyZXR1cm4gYX0sCkdhOmZ1bmN0
-aW9uKGEpe2lmKGE8MjU2KXN3aXRjaChhKXtjYXNlIDk6Y2FzZSAxMDpjYXNlIDExOmNhc2UgMTI6Y2Fz
-ZSAxMzpjYXNlIDMyOmNhc2UgMTMzOmNhc2UgMTYwOnJldHVybiEwCmRlZmF1bHQ6cmV0dXJuITF9c3dp
-dGNoKGEpe2Nhc2UgNTc2MDpjYXNlIDgxOTI6Y2FzZSA4MTkzOmNhc2UgODE5NDpjYXNlIDgxOTU6Y2Fz
-ZSA4MTk2OmNhc2UgODE5NzpjYXNlIDgxOTg6Y2FzZSA4MTk5OmNhc2UgODIwMDpjYXNlIDgyMDE6Y2Fz
-ZSA4MjAyOmNhc2UgODIzMjpjYXNlIDgyMzM6Y2FzZSA4MjM5OmNhc2UgODI4NzpjYXNlIDEyMjg4OmNh
-c2UgNjUyNzk6cmV0dXJuITAKZGVmYXVsdDpyZXR1cm4hMX19LAptbTpmdW5jdGlvbihhLGIpe3ZhciB0
-LHMKZm9yKHQ9YS5sZW5ndGg7Yjx0Oyl7cz1DLnhCLlcoYSxiKQppZihzIT09MzImJnMhPT0xMyYmIUou
-R2EocykpYnJlYWs7KytifXJldHVybiBifSwKYzE6ZnVuY3Rpb24oYSxiKXt2YXIgdCxzCmZvcig7Yj4w
-O2I9dCl7dD1iLTEKcz1DLnhCLm0oYSx0KQppZihzIT09MzImJnMhPT0xMyYmIUouR2EocykpYnJlYWt9
-cmV0dXJuIGJ9LApSRTpmdW5jdGlvbihhKXtpZihhPT1udWxsKXJldHVybiBhCmlmKHR5cGVvZiBhIT0i
-b2JqZWN0Iil7aWYodHlwZW9mIGE9PSJmdW5jdGlvbiIpcmV0dXJuIEouYzUucHJvdG90eXBlCnJldHVy
-biBhfWlmKGEgaW5zdGFuY2VvZiBQLmspcmV0dXJuIGEKcmV0dXJuIEoua3MoYSl9LApUSjpmdW5jdGlv
-bihhKXtpZih0eXBlb2YgYT09Im51bWJlciIpcmV0dXJuIEoucUkucHJvdG90eXBlCmlmKHR5cGVvZiBh
-PT0ic3RyaW5nIilyZXR1cm4gSi5Eci5wcm90b3R5cGUKaWYoYT09bnVsbClyZXR1cm4gYQppZihhLmNv
-bnN0cnVjdG9yPT1BcnJheSlyZXR1cm4gSi5qZC5wcm90b3R5cGUKaWYodHlwZW9mIGEhPSJvYmplY3Qi
-KXtpZih0eXBlb2YgYT09ImZ1bmN0aW9uIilyZXR1cm4gSi5jNS5wcm90b3R5cGUKcmV0dXJuIGF9aWYo
-YSBpbnN0YW5jZW9mIFAuaylyZXR1cm4gYQpyZXR1cm4gSi5rcyhhKX0sClU2OmZ1bmN0aW9uKGEpe2lm
-KHR5cGVvZiBhPT0ic3RyaW5nIilyZXR1cm4gSi5Eci5wcm90b3R5cGUKaWYoYT09bnVsbClyZXR1cm4g
-YQppZihhLmNvbnN0cnVjdG9yPT1BcnJheSlyZXR1cm4gSi5qZC5wcm90b3R5cGUKaWYodHlwZW9mIGEh
-PSJvYmplY3QiKXtpZih0eXBlb2YgYT09ImZ1bmN0aW9uIilyZXR1cm4gSi5jNS5wcm90b3R5cGUKcmV0
-dXJuIGF9aWYoYSBpbnN0YW5jZW9mIFAuaylyZXR1cm4gYQpyZXR1cm4gSi5rcyhhKX0sCmlhOmZ1bmN0
-aW9uKGEpe2lmKHR5cGVvZiBhPT0ibnVtYmVyIil7aWYoTWF0aC5mbG9vcihhKT09YSlyZXR1cm4gSi51
-ci5wcm90b3R5cGUKcmV0dXJuIEouVkEucHJvdG90eXBlfWlmKHR5cGVvZiBhPT0ic3RyaW5nIilyZXR1
-cm4gSi5Eci5wcm90b3R5cGUKaWYoYT09bnVsbClyZXR1cm4gSi5ZRS5wcm90b3R5cGUKaWYodHlwZW9m
-IGE9PSJib29sZWFuIilyZXR1cm4gSi55RS5wcm90b3R5cGUKaWYoYS5jb25zdHJ1Y3Rvcj09QXJyYXkp
-cmV0dXJuIEouamQucHJvdG90eXBlCmlmKHR5cGVvZiBhIT0ib2JqZWN0Iil7aWYodHlwZW9mIGE9PSJm
-dW5jdGlvbiIpcmV0dXJuIEouYzUucHJvdG90eXBlCnJldHVybiBhfWlmKGEgaW5zdGFuY2VvZiBQLmsp
-cmV0dXJuIGEKcmV0dXJuIEoua3MoYSl9LApyWTpmdW5jdGlvbihhKXtpZih0eXBlb2YgYT09InN0cmlu
-ZyIpcmV0dXJuIEouRHIucHJvdG90eXBlCmlmKGE9PW51bGwpcmV0dXJuIGEKaWYoIShhIGluc3RhbmNl
-b2YgUC5rKSlyZXR1cm4gSi5rZC5wcm90b3R5cGUKcmV0dXJuIGF9LAp3MTpmdW5jdGlvbihhKXtpZihh
-PT1udWxsKXJldHVybiBhCmlmKGEuY29uc3RydWN0b3I9PUFycmF5KXJldHVybiBKLmpkLnByb3RvdHlw
-ZQppZih0eXBlb2YgYSE9Im9iamVjdCIpe2lmKHR5cGVvZiBhPT0iZnVuY3Rpb24iKXJldHVybiBKLmM1
-LnByb3RvdHlwZQpyZXR1cm4gYX1pZihhIGluc3RhbmNlb2YgUC5rKXJldHVybiBhCnJldHVybiBKLmtz
-KGEpfSwKQ006ZnVuY3Rpb24oYSxiLGMsZCl7cmV0dXJuIEouUkUoYSkuZHUoYSxiLGMsZCl9LApGTDpm
-dW5jdGlvbihhLGIpe3JldHVybiBKLnJZKGEpLmRkKGEsYil9LApHQTpmdW5jdGlvbihhLGIpe3JldHVy
-biBKLncxKGEpLkUoYSxiKX0sCkdyOmZ1bmN0aW9uKGEpe3JldHVybiBKLlJFKGEpLmdtVyhhKX0sCkht
-OmZ1bmN0aW9uKGEpe3JldHVybiBKLlU2KGEpLmdBKGEpfSwKSVQ6ZnVuY3Rpb24oYSl7cmV0dXJuIEou
-dzEoYSkuZ2t6KGEpfSwKSnk6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gSi5pYShhKS5lNyhhLGIpfSwKS1Y6
-ZnVuY3Rpb24oYSxiKXtyZXR1cm4gSi5yWShhKS5HKGEsYil9LApMdDpmdW5jdGlvbihhKXtyZXR1cm4g
-Si5SRShhKS53ZyhhKX0sCk0xOmZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gSi53MShhKS5FMihhLGIsYyl9
-LApRejpmdW5jdGlvbihhLGIpe3JldHVybiBKLnJZKGEpLlcoYSxiKX0sClJNOmZ1bmN0aW9uKGEsYil7
-aWYoYT09bnVsbClyZXR1cm4gYj09bnVsbAppZih0eXBlb2YgYSE9Im9iamVjdCIpcmV0dXJuIGIhPW51
-bGwmJmE9PT1iCnJldHVybiBKLmlhKGEpLkROKGEsYil9LApUMDpmdW5jdGlvbihhKXtyZXR1cm4gSi5y
-WShhKS5iUyhhKX0sCmE2OmZ1bmN0aW9uKGEsYil7cmV0dXJuIEouclkoYSkubShhLGIpfSwKYlQ6ZnVu
-Y3Rpb24oYSl7cmV0dXJuIEouUkUoYSkuRDQoYSl9LApiYjpmdW5jdGlvbihhLGIpe2lmKHR5cGVvZiBh
-PT0ibnVtYmVyIiYmdHlwZW9mIGI9PSJudW1iZXIiKXJldHVybiBhK2IKcmV0dXJuIEouVEooYSkuaChh
-LGIpfSwKY0g6ZnVuY3Rpb24oYSl7cmV0dXJuIEouclkoYSkuaGMoYSl9LApkUjpmdW5jdGlvbihhKXty
-ZXR1cm4gSi5SRShhKS5nUChhKX0sCmRaOmZ1bmN0aW9uKGEsYixjLGQpe3JldHVybiBKLlJFKGEpLk9u
-KGEsYixjLGQpfSwKZGc6ZnVuY3Rpb24oYSxiLGMsZCl7cmV0dXJuIEouclkoYSkuaTcoYSxiLGMsZCl9
-LApkaDpmdW5jdGlvbihhKXtyZXR1cm4gSi5SRShhKS5GRihhKX0sCmhmOmZ1bmN0aW9uKGEpe3JldHVy
-biBKLmlhKGEpLmdpTyhhKX0sCmh3OmZ1bmN0aW9uKGEsYil7cmV0dXJuIEouclkoYSkuVGMoYSxiKX0s
-CmlnOmZ1bmN0aW9uKGEpe3JldHVybiBKLlJFKGEpLmdRZyhhKX0sCmo6ZnVuY3Rpb24oYSl7cmV0dXJu
-IEouaWEoYSkudyhhKX0sCmw1OmZ1bmN0aW9uKGEsYil7cmV0dXJuIEouUkUoYSkuc2hmKGEsYil9LAps
-ZDpmdW5jdGlvbihhLGIsYyl7cmV0dXJuIEouclkoYSkuTmooYSxiLGMpfSwKcTA6ZnVuY3Rpb24oYSxi
-LGMpe3JldHVybiBKLnJZKGEpLlFpKGEsYixjKX0sCnFGOmZ1bmN0aW9uKGEpe3JldHVybiBKLlJFKGEp
-LmdWbChhKX0sCnRIOmZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gSi5SRShhKS5wayhhLGIsYyl9LAp3Mjpm
-dW5jdGlvbihhLGIpe2lmKHR5cGVvZiBiPT09Im51bWJlciIpaWYoYS5jb25zdHJ1Y3Rvcj09QXJyYXl8
-fHR5cGVvZiBhPT0ic3RyaW5nInx8SC53VihhLGFbdi5kaXNwYXRjaFByb3BlcnR5TmFtZV0pKWlmKGI+
-Pj4wPT09YiYmYjxhLmxlbmd0aClyZXR1cm4gYVtiXQpyZXR1cm4gSi5VNihhKS5xKGEsYil9LAp6bDpm
-dW5jdGlvbihhLGIpe3JldHVybiBKLlU2KGEpLnRnKGEsYil9LAp2QjpmdW5jdGlvbiB2Qigpe30sCnlF
-OmZ1bmN0aW9uIHlFKCl7fSwKWUU6ZnVuY3Rpb24gWUUoKXt9LApNRjpmdW5jdGlvbiBNRigpe30sCmlD
-OmZ1bmN0aW9uIGlDKCl7fSwKa2Q6ZnVuY3Rpb24ga2QoKXt9LApjNTpmdW5jdGlvbiBjNSgpe30sCmpk
-OmZ1bmN0aW9uIGpkKGEpe3RoaXMuJHRpPWF9LApQbzpmdW5jdGlvbiBQbyhhKXt0aGlzLiR0aT1hfSwK
-bTE6ZnVuY3Rpb24gbTEoYSxiLGMpe3ZhciBfPXRoaXMKXy5hPWEKXy5iPWIKXy5jPTAKXy5kPW51bGwK
-Xy4kdGk9Y30sCnFJOmZ1bmN0aW9uIHFJKCl7fSwKdXI6ZnVuY3Rpb24gdXIoKXt9LApWQTpmdW5jdGlv
-biBWQSgpe30sCkRyOmZ1bmN0aW9uIERyKCl7fX0sUD17Ck9qOmZ1bmN0aW9uKCl7dmFyIHQscyxyPXt9
-CmlmKHNlbGYuc2NoZWR1bGVJbW1lZGlhdGUhPW51bGwpcmV0dXJuIFAuRVgoKQppZihzZWxmLk11dGF0
-aW9uT2JzZXJ2ZXIhPW51bGwmJnNlbGYuZG9jdW1lbnQhPW51bGwpe3Q9c2VsZi5kb2N1bWVudC5jcmVh
-dGVFbGVtZW50KCJkaXYiKQpzPXNlbGYuZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3BhbiIpCnIuYT1u
-dWxsCm5ldyBzZWxmLk11dGF0aW9uT2JzZXJ2ZXIoSC50UihuZXcgUC50aChyKSwxKSkub2JzZXJ2ZSh0
-LHtjaGlsZExpc3Q6dHJ1ZX0pCnJldHVybiBuZXcgUC5oYShyLHQscyl9ZWxzZSBpZihzZWxmLnNldElt
-bWVkaWF0ZSE9bnVsbClyZXR1cm4gUC55dCgpCnJldHVybiBQLnFXKCl9LApaVjpmdW5jdGlvbihhKXtz
-ZWxmLnNjaGVkdWxlSW1tZWRpYXRlKEgudFIobmV3IFAuVnModS5NLmIoYSkpLDApKX0sCm9BOmZ1bmN0
-aW9uKGEpe3NlbGYuc2V0SW1tZWRpYXRlKEgudFIobmV3IFAuRnQodS5NLmIoYSkpLDApKX0sCkJ6OmZ1
-bmN0aW9uKGEpe3UuTS5iKGEpClAuUU4oMCxhKX0sClFOOmZ1bmN0aW9uKGEsYil7dmFyIHQ9bmV3IFAu
-VzMoKQp0LkNZKGEsYikKcmV0dXJuIHR9LApGWDpmdW5jdGlvbihhKXtyZXR1cm4gbmV3IFAuaWgobmV3
-IFAudnMoJC5YMyxhLkMoInZzPDA+IikpLGEuQygiaWg8MD4iKSl9LApESTpmdW5jdGlvbihhLGIpe2Eu
-JDIoMCxudWxsKQpiLmI9ITAKcmV0dXJuIGIuYX0sCmpROmZ1bmN0aW9uKGEsYil7UC5KZShhLGIpfSwK
-eUM6ZnVuY3Rpb24oYSxiKXtiLmFNKDAsYSl9LApmMzpmdW5jdGlvbihhLGIpe2IudzAoSC5SdShhKSxI
-LnRzKGEpKX0sCkplOmZ1bmN0aW9uKGEsYil7dmFyIHQscyxyPW5ldyBQLldNKGIpLHE9bmV3IFAuU1go
-YikKaWYoYSBpbnN0YW5jZW9mIFAudnMpYS5RZChyLHEsdS56KQplbHNle3Q9dS56CmlmKHUuYy5jKGEp
-KWEuU3EocixxLHQpCmVsc2V7cz1uZXcgUC52cygkLlgzLHUuXykKcy5hPTQKcy5jPWEKcy5RZChyLG51
-bGwsdCl9fX0sCmx6OmZ1bmN0aW9uKGEpe3ZhciB0PWZ1bmN0aW9uKGIsYyl7cmV0dXJuIGZ1bmN0aW9u
-KGQsZSl7d2hpbGUodHJ1ZSl0cnl7YihkLGUpCmJyZWFrfWNhdGNoKHMpe2U9cwpkPWN9fX0oYSwxKQpy
-ZXR1cm4gJC5YMy5MaihuZXcgUC5Hcyh0KSx1LlAsdS5lZyx1LnopfSwKR1E6ZnVuY3Rpb24oYSl7cmV0
-dXJuIG5ldyBQLkZ5KGEsMSl9LApUaDpmdW5jdGlvbigpe3JldHVybiBDLndRfSwKWW06ZnVuY3Rpb24o
-YSl7cmV0dXJuIG5ldyBQLkZ5KGEsMyl9LApsMDpmdW5jdGlvbihhLGIpe3JldHVybiBuZXcgUC5xNChh
-LGIuQygicTQ8MD4iKSl9LAprMzpmdW5jdGlvbihhLGIpe3ZhciB0LHMscgpiLmE9MQp0cnl7YS5TcShu
-ZXcgUC5wVihiKSxuZXcgUC5VNyhiKSx1LlApfWNhdGNoKHIpe3Q9SC5SdShyKQpzPUgudHMocikKUC5y
-YihuZXcgUC52cihiLHQscykpfX0sCkE5OmZ1bmN0aW9uKGEsYil7dmFyIHQscyxyCmZvcih0PXUuXztz
-PWEuYSxzPT09MjspYT10LmIoYS5jKQppZihzPj00KXtyPWIuYWgoKQpiLmE9YS5hCmIuYz1hLmMKUC5I
-WihiLHIpfWVsc2V7cj11LnguYihiLmMpCmIuYT0yCmIuYz1hCmEualEocil9fSwKSFo6ZnVuY3Rpb24o
-YSxiKXt2YXIgdCxzLHIscSxwLG8sbixtLGwsayxqLGksaCxnLGYsZT1udWxsLGQ9e30sYz1kLmE9YQpm
-b3IodD11Lm4scz11Lngscj11LmM7ITA7KXtxPXt9CnA9Yy5hPT09OAppZihiPT1udWxsKXtpZihwKXtv
-PXQuYihjLmMpClAuTDIoZSxlLGMuYixvLmEsby5iKX1yZXR1cm59Zm9yKDtuPWIuYSxuIT1udWxsO2I9
-bil7Yi5hPW51bGwKUC5IWihkLmEsYil9Yz1kLmEKbT1jLmMKcS5hPXAKcS5iPW0KbD0hcAppZihsKXtr
-PWIuYwprPShrJjEpIT09MHx8KGsmMTUpPT09OH1lbHNlIGs9ITAKaWYoayl7az1iLmIKaj1rLmIKaWYo
-cCl7aT1jLmI9PT1qCmk9IShpfHxpKX1lbHNlIGk9ITEKaWYoaSl7dC5iKG0pClAuTDIoZSxlLGMuYixt
-LmEsbS5iKQpyZXR1cm59aD0kLlgzCmlmKGghPT1qKSQuWDM9agplbHNlIGg9ZQpjPWIuYwppZigoYyYx
-NSk9PT04KW5ldyBQLlJUKGQscSxiLHApLiQwKCkKZWxzZSBpZihsKXtpZigoYyYxKSE9PTApbmV3IFAu
-cnEocSxiLG0pLiQwKCl9ZWxzZSBpZigoYyYyKSE9PTApbmV3IFAuUlcoZCxxLGIpLiQwKCkKaWYoaCE9
-bnVsbCkkLlgzPWgKYz1xLmIKaWYoci5jKGMpKXtpZihjLmE+PTQpe2c9cy5iKGsuYykKay5jPW51bGwK
-Yj1rLk44KGcpCmsuYT1jLmEKay5jPWMuYwpkLmE9Ywpjb250aW51ZX1lbHNlIFAuQTkoYyxrKQpyZXR1
-cm59fWY9Yi5iCmc9cy5iKGYuYykKZi5jPW51bGwKYj1mLk44KGcpCmM9cS5hCmw9cS5iCmlmKCFjKXtm
-LiR0aS5kLmIobCkKZi5hPTQKZi5jPWx9ZWxzZXt0LmIobCkKZi5hPTgKZi5jPWx9ZC5hPWYKYz1mfX0s
-ClZIOmZ1bmN0aW9uKGEsYil7dmFyIHQKaWYodS5GLmMoYSkpcmV0dXJuIGIuTGooYSx1LnosdS5LLHUu
-bCkKdD11LnkKaWYodC5jKGEpKXJldHVybiB0LmIoYSkKdGhyb3cgSC5iKFAuTDMoYSwib25FcnJvciIs
-IkVycm9yIGhhbmRsZXIgbXVzdCBhY2NlcHQgb25lIE9iamVjdCBvciBvbmUgT2JqZWN0IGFuZCBhIFN0
-YWNrVHJhY2UgYXMgYXJndW1lbnRzLCBhbmQgcmV0dXJuIGEgYSB2YWxpZCByZXN1bHQiKSl9LApwdTpm
-dW5jdGlvbigpe3ZhciB0LHMKZm9yKDt0PSQuUzYsdCE9bnVsbDspeyQubWc9bnVsbApzPXQuYgokLlM2
-PXMKaWYocz09bnVsbCkkLms4PW51bGwKdC5hLiQwKCl9fSwKZU46ZnVuY3Rpb24oKXskLlVEPSEwCnRy
-eXtQLnB1KCl9ZmluYWxseXskLm1nPW51bGwKJC5VRD0hMQppZigkLlM2IT1udWxsKSQudXQoKS4kMShQ
-LlVJKCkpfX0sCmVXOmZ1bmN0aW9uKGEpe3ZhciB0PW5ldyBQLk9NKGEpCmlmKCQuUzY9PW51bGwpeyQu
-UzY9JC5rOD10CmlmKCEkLlVEKSQudXQoKS4kMShQLlVJKCkpfWVsc2UgJC5rOD0kLms4LmI9dH0sCnJS
-OmZ1bmN0aW9uKGEpe3ZhciB0LHMscj0kLlM2CmlmKHI9PW51bGwpe1AuZVcoYSkKJC5tZz0kLms4CnJl
-dHVybn10PW5ldyBQLk9NKGEpCnM9JC5tZwppZihzPT1udWxsKXt0LmI9cgokLlM2PSQubWc9dH1lbHNl
-e3QuYj1zLmIKJC5tZz1zLmI9dAppZih0LmI9PW51bGwpJC5rOD10fX0sCnJiOmZ1bmN0aW9uKGEpe3Zh
-ciB0PW51bGwscz0kLlgzCmlmKEMuTlU9PT1zKXtQLlRrKHQsdCxDLk5VLGEpCnJldHVybn1QLlRrKHQs
-dCxzLHUuTS5iKHMuR1koYSkpKX0sClF3OmZ1bmN0aW9uKGEsYil7aWYoYT09bnVsbClILnZoKFAuRWUo
-InN0cmVhbSIpKQpyZXR1cm4gbmV3IFAueEkoYi5DKCJ4STwwPiIpKX0sCkwyOmZ1bmN0aW9uKGEsYixj
-LGQsZSl7dmFyIHQ9e30KdC5hPWQKUC5yUihuZXcgUC5wSyh0LGUpKX0sClQ4OmZ1bmN0aW9uKGEsYixj
-LGQsZSl7dmFyIHQscz0kLlgzCmlmKHM9PT1jKXJldHVybiBkLiQwKCkKJC5YMz1jCnQ9cwp0cnl7cz1k
-LiQwKCkKcmV0dXJuIHN9ZmluYWxseXskLlgzPXR9fSwKeXY6ZnVuY3Rpb24oYSxiLGMsZCxlLGYsZyl7
-dmFyIHQscz0kLlgzCmlmKHM9PT1jKXJldHVybiBkLiQxKGUpCiQuWDM9Ywp0PXMKdHJ5e3M9ZC4kMShl
-KQpyZXR1cm4gc31maW5hbGx5eyQuWDM9dH19LApReDpmdW5jdGlvbihhLGIsYyxkLGUsZixnLGgsaSl7
-dmFyIHQscz0kLlgzCmlmKHM9PT1jKXJldHVybiBkLiQyKGUsZikKJC5YMz1jCnQ9cwp0cnl7cz1kLiQy
-KGUsZikKcmV0dXJuIHN9ZmluYWxseXskLlgzPXR9fSwKVGs6ZnVuY3Rpb24oYSxiLGMsZCl7dmFyIHQK
-dS5NLmIoZCkKdD1DLk5VIT09YwppZih0KWQ9ISghdHx8ITEpP2MuR1koZCk6Yy5SVChkLHUuSCkKUC5l
-VyhkKX0sCnRoOmZ1bmN0aW9uIHRoKGEpe3RoaXMuYT1hfSwKaGE6ZnVuY3Rpb24gaGEoYSxiLGMpe3Ro
-aXMuYT1hCnRoaXMuYj1iCnRoaXMuYz1jfSwKVnM6ZnVuY3Rpb24gVnMoYSl7dGhpcy5hPWF9LApGdDpm
-dW5jdGlvbiBGdChhKXt0aGlzLmE9YX0sClczOmZ1bmN0aW9uIFczKCl7fSwKeUg6ZnVuY3Rpb24geUgo
-YSxiKXt0aGlzLmE9YQp0aGlzLmI9Yn0sCmloOmZ1bmN0aW9uIGloKGEsYil7dGhpcy5hPWEKdGhpcy5i
-PSExCnRoaXMuJHRpPWJ9LApXTTpmdW5jdGlvbiBXTShhKXt0aGlzLmE9YX0sClNYOmZ1bmN0aW9uIFNY
-KGEpe3RoaXMuYT1hfSwKR3M6ZnVuY3Rpb24gR3MoYSl7dGhpcy5hPWF9LApGeTpmdW5jdGlvbiBGeShh
-LGIpe3RoaXMuYT1hCnRoaXMuYj1ifSwKR1Y6ZnVuY3Rpb24gR1YoYSxiKXt2YXIgXz10aGlzCl8uYT1h
-Cl8uZD1fLmM9Xy5iPW51bGwKXy4kdGk9Yn0sCnE0OmZ1bmN0aW9uIHE0KGEsYil7dGhpcy5hPWEKdGhp
-cy4kdGk9Yn0sCmI4OmZ1bmN0aW9uIGI4KCl7fSwKUGY6ZnVuY3Rpb24gUGYoKXt9LApaZjpmdW5jdGlv
-biBaZihhLGIpe3RoaXMuYT1hCnRoaXMuJHRpPWJ9LApGZTpmdW5jdGlvbiBGZShhLGIsYyxkLGUpe3Zh
-ciBfPXRoaXMKXy5hPW51bGwKXy5iPWEKXy5jPWIKXy5kPWMKXy5lPWQKXy4kdGk9ZX0sCnZzOmZ1bmN0
-aW9uIHZzKGEsYil7dmFyIF89dGhpcwpfLmE9MApfLmI9YQpfLmM9bnVsbApfLiR0aT1ifSwKZGE6ZnVu
-Y3Rpb24gZGEoYSxiKXt0aGlzLmE9YQp0aGlzLmI9Yn0sCm9ROmZ1bmN0aW9uIG9RKGEsYil7dGhpcy5h
-PWEKdGhpcy5iPWJ9LApwVjpmdW5jdGlvbiBwVihhKXt0aGlzLmE9YX0sClU3OmZ1bmN0aW9uIFU3KGEp
-e3RoaXMuYT1hfSwKdnI6ZnVuY3Rpb24gdnIoYSxiLGMpe3RoaXMuYT1hCnRoaXMuYj1iCnRoaXMuYz1j
-fSwKckg6ZnVuY3Rpb24gckgoYSxiKXt0aGlzLmE9YQp0aGlzLmI9Yn0sCktGOmZ1bmN0aW9uIEtGKGEs
-Yil7dGhpcy5hPWEKdGhpcy5iPWJ9LApaTDpmdW5jdGlvbiBaTChhLGIsYyl7dGhpcy5hPWEKdGhpcy5i
-PWIKdGhpcy5jPWN9LApSVDpmdW5jdGlvbiBSVChhLGIsYyxkKXt2YXIgXz10aGlzCl8uYT1hCl8uYj1i
-Cl8uYz1jCl8uZD1kfSwKalo6ZnVuY3Rpb24galooYSl7dGhpcy5hPWF9LApycTpmdW5jdGlvbiBycShh
-LGIsYyl7dGhpcy5hPWEKdGhpcy5iPWIKdGhpcy5jPWN9LApSVzpmdW5jdGlvbiBSVyhhLGIsYyl7dGhp
-cy5hPWEKdGhpcy5iPWIKdGhpcy5jPWN9LApPTTpmdW5jdGlvbiBPTShhKXt0aGlzLmE9YQp0aGlzLmI9
-bnVsbH0sCnFoOmZ1bmN0aW9uIHFoKCl7fSwKQjU6ZnVuY3Rpb24gQjUoYSxiKXt0aGlzLmE9YQp0aGlz
-LmI9Yn0sCnVPOmZ1bmN0aW9uIHVPKGEsYil7dGhpcy5hPWEKdGhpcy5iPWJ9LApNTzpmdW5jdGlvbiBN
-Tygpe30sCmtUOmZ1bmN0aW9uIGtUKCl7fSwKeEk6ZnVuY3Rpb24geEkoYSl7dGhpcy4kdGk9YX0sCkN3
-OmZ1bmN0aW9uIEN3KGEsYil7dGhpcy5hPWEKdGhpcy5iPWJ9LAptMDpmdW5jdGlvbiBtMCgpe30sCnBL
-OmZ1bmN0aW9uIHBLKGEsYil7dGhpcy5hPWEKdGhpcy5iPWJ9LApKaTpmdW5jdGlvbiBKaSgpe30sCmhq
-OmZ1bmN0aW9uIGhqKGEsYixjKXt0aGlzLmE9YQp0aGlzLmI9Ygp0aGlzLmM9Y30sClZwOmZ1bmN0aW9u
-IFZwKGEsYil7dGhpcy5hPWEKdGhpcy5iPWJ9LApPUjpmdW5jdGlvbiBPUihhLGIsYyl7dGhpcy5hPWEK
-dGhpcy5iPWIKdGhpcy5jPWN9LApFRjpmdW5jdGlvbihhLGIsYyl7cmV0dXJuIGIuQygiQDwwPiIpLktx
-KGMpLkMoIkZvPDEsMj4iKS5iKEguQjcoYSxuZXcgSC5ONShiLkMoIkA8MD4iKS5LcShjKS5DKCJONTwx
-LDI+IikpKSl9LApGbDpmdW5jdGlvbihhLGIpe3JldHVybiBuZXcgSC5ONShhLkMoIkA8MD4iKS5LcShi
-KS5DKCJONTwxLDI+IikpfSwKTHM6ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyBQLmI2KGEuQygiYjY8MD4i
-KSl9LApUMjpmdW5jdGlvbigpe3ZhciB0PU9iamVjdC5jcmVhdGUobnVsbCkKdFsiPG5vbi1pZGVudGlm
-aWVyLWtleT4iXT10CmRlbGV0ZSB0WyI8bm9uLWlkZW50aWZpZXIta2V5PiJdCnJldHVybiB0fSwKcmo6
-ZnVuY3Rpb24oYSxiLGMpe3ZhciB0PW5ldyBQLmxtKGEsYixjLkMoImxtPDA+IikpCnQuYz1hLmUKcmV0
-dXJuIHR9LApFUDpmdW5jdGlvbihhLGIsYyl7dmFyIHQscwppZihQLmhCKGEpKXtpZihiPT09IigiJiZj
-PT09IikiKXJldHVybiIoLi4uKSIKcmV0dXJuIGIrIi4uLiIrY310PUguVk0oW10sdS5zKQpDLk5tLmko
-JC54ZyxhKQp0cnl7UC5WcihhLHQpfWZpbmFsbHl7aWYoMD49JC54Zy5sZW5ndGgpcmV0dXJuIEguT0go
-JC54ZywtMSkKJC54Zy5wb3AoKX1zPVAudmcoYix1LlIuYih0KSwiLCAiKStjCnJldHVybiBzLmNoYXJD
-b2RlQXQoMCk9PTA/czpzfSwKV0U6ZnVuY3Rpb24oYSxiLGMpe3ZhciB0LHMKaWYoUC5oQihhKSlyZXR1
-cm4gYisiLi4uIitjCnQ9bmV3IFAuUm4oYikKQy5ObS5pKCQueGcsYSkKdHJ5e3M9dApzLmE9UC52Zyhz
-LmEsYSwiLCAiKX1maW5hbGx5e2lmKDA+PSQueGcubGVuZ3RoKXJldHVybiBILk9IKCQueGcsLTEpCiQu
-eGcucG9wKCl9dC5hKz1jCnM9dC5hCnJldHVybiBzLmNoYXJDb2RlQXQoMCk9PTA/czpzfSwKaEI6ZnVu
-Y3Rpb24oYSl7dmFyIHQscwpmb3IodD0kLnhnLmxlbmd0aCxzPTA7czx0OysrcylpZihhPT09JC54Z1tz
-XSlyZXR1cm4hMApyZXR1cm4hMX0sClZyOmZ1bmN0aW9uKGEsYil7dmFyIHQscyxyLHEscCxvLG4sbT1h
-LmdreihhKSxsPTAsaz0wCndoaWxlKCEwKXtpZighKGw8ODB8fGs8MykpYnJlYWsKaWYoIW0uRigpKXJl
-dHVybgp0PUguZChtLmdsKCkpCkMuTm0uaShiLHQpCmwrPXQubGVuZ3RoKzI7KytrfWlmKCFtLkYoKSl7
-aWYoazw9NSlyZXR1cm4KaWYoMD49Yi5sZW5ndGgpcmV0dXJuIEguT0goYiwtMSkKcz1iLnBvcCgpCmlm
-KDA+PWIubGVuZ3RoKXJldHVybiBILk9IKGIsLTEpCnI9Yi5wb3AoKX1lbHNle3E9bS5nbCgpOysrawpp
-ZighbS5GKCkpe2lmKGs8PTQpe0MuTm0uaShiLEguZChxKSkKcmV0dXJufXM9SC5kKHEpCmlmKDA+PWIu
-bGVuZ3RoKXJldHVybiBILk9IKGIsLTEpCnI9Yi5wb3AoKQpsKz1zLmxlbmd0aCsyfWVsc2V7cD1tLmds
-KCk7KytrCmZvcig7bS5GKCk7cT1wLHA9byl7bz1tLmdsKCk7KytrCmlmKGs+MTAwKXt3aGlsZSghMCl7
-aWYoIShsPjc1JiZrPjMpKWJyZWFrCmlmKDA+PWIubGVuZ3RoKXJldHVybiBILk9IKGIsLTEpCmwtPWIu
-cG9wKCkubGVuZ3RoKzI7LS1rfUMuTm0uaShiLCIuLi4iKQpyZXR1cm59fXI9SC5kKHEpCnM9SC5kKHAp
-CmwrPXMubGVuZ3RoK3IubGVuZ3RoKzR9fWlmKGs+Yi5sZW5ndGgrMil7bCs9NQpuPSIuLi4ifWVsc2Ug
-bj1udWxsCndoaWxlKCEwKXtpZighKGw+ODAmJmIubGVuZ3RoPjMpKWJyZWFrCmlmKDA+PWIubGVuZ3Ro
-KXJldHVybiBILk9IKGIsLTEpCmwtPWIucG9wKCkubGVuZ3RoKzIKaWYobj09bnVsbCl7bCs9NQpuPSIu
-Li4ifX1pZihuIT1udWxsKUMuTm0uaShiLG4pCkMuTm0uaShiLHIpCkMuTm0uaShiLHMpfSwKdE06ZnVu
-Y3Rpb24oYSxiKXt2YXIgdCxzLHI9UC5McyhiKQpmb3IodD1hLmxlbmd0aCxzPTA7czxhLmxlbmd0aDth
-Lmxlbmd0aD09PXR8fCgwLEgubGspKGEpLCsrcylyLmkoMCxiLmIoYVtzXSkpCnJldHVybiByfSwKbk86
-ZnVuY3Rpb24oYSl7dmFyIHQscz17fQppZihQLmhCKGEpKXJldHVybiJ7Li4ufSIKdD1uZXcgUC5Sbigi
-IikKdHJ5e0MuTm0uaSgkLnhnLGEpCnQuYSs9InsiCnMuYT0hMAphLksoMCxuZXcgUC5yYShzLHQpKQp0
-LmErPSJ9In1maW5hbGx5e2lmKDA+PSQueGcubGVuZ3RoKXJldHVybiBILk9IKCQueGcsLTEpCiQueGcu
-cG9wKCl9cz10LmEKcmV0dXJuIHMuY2hhckNvZGVBdCgwKT09MD9zOnN9LApiNjpmdW5jdGlvbiBiNihh
-KXt2YXIgXz10aGlzCl8uYT0wCl8uZj1fLmU9Xy5kPV8uYz1fLmI9bnVsbApfLnI9MApfLiR0aT1hfSwK
-Ym46ZnVuY3Rpb24gYm4oYSl7dGhpcy5hPWEKdGhpcy5jPXRoaXMuYj1udWxsfSwKbG06ZnVuY3Rpb24g
-bG0oYSxiLGMpe3ZhciBfPXRoaXMKXy5hPWEKXy5iPWIKXy5kPV8uYz1udWxsCl8uJHRpPWN9LAptVzpm
-dW5jdGlvbiBtVygpe30sCkxVOmZ1bmN0aW9uIExVKCl7fSwKbEQ6ZnVuY3Rpb24gbEQoKXt9LAppbDpm
-dW5jdGlvbiBpbCgpe30sCnJhOmZ1bmN0aW9uIHJhKGEsYil7dGhpcy5hPWEKdGhpcy5iPWJ9LApZazpm
-dW5jdGlvbiBZaygpe30sCnlROmZ1bmN0aW9uIHlRKGEpe3RoaXMuYT1hfSwKS1A6ZnVuY3Rpb24gS1Ao
-KXt9LApQbjpmdW5jdGlvbiBQbigpe30sCkdqOmZ1bmN0aW9uIEdqKGEsYil7dGhpcy5hPWEKdGhpcy4k
-dGk9Yn0sCmxmOmZ1bmN0aW9uIGxmKCl7fSwKVmo6ZnVuY3Rpb24gVmooKXt9LApYdjpmdW5jdGlvbiBY
-digpe30sCm5ZOmZ1bmN0aW9uIG5ZKCl7fSwKVEM6ZnVuY3Rpb24gVEMoKXt9LApSVTpmdW5jdGlvbiBS
-VSgpe30sCkJTOmZ1bmN0aW9uKGEsYil7dmFyIHQscyxyLHEKaWYodHlwZW9mIGEhPSJzdHJpbmciKXRo
-cm93IEguYihILnRMKGEpKQp0PW51bGwKdHJ5e3Q9SlNPTi5wYXJzZShhKX1jYXRjaChyKXtzPUguUnUo
-cikKcT1QLnJyKFN0cmluZyhzKSxudWxsLG51bGwpCnRocm93IEguYihxKX1xPVAuUWUodCkKcmV0dXJu
-IHF9LApRZTpmdW5jdGlvbihhKXt2YXIgdAppZihhPT1udWxsKXJldHVybiBudWxsCmlmKHR5cGVvZiBh
-IT0ib2JqZWN0IilyZXR1cm4gYQppZihPYmplY3QuZ2V0UHJvdG90eXBlT2YoYSkhPT1BcnJheS5wcm90
-b3R5cGUpcmV0dXJuIG5ldyBQLnV3KGEsT2JqZWN0LmNyZWF0ZShudWxsKSkKZm9yKHQ9MDt0PGEubGVu
-Z3RoOysrdClhW3RdPVAuUWUoYVt0XSkKcmV0dXJuIGF9LApreTpmdW5jdGlvbihhLGIsYyxkKXtpZihi
-IGluc3RhbmNlb2YgVWludDhBcnJheSlyZXR1cm4gUC5SUCghMSxiLGMsZCkKcmV0dXJuIG51bGx9LApS
-UDpmdW5jdGlvbihhLGIsYyxkKXt2YXIgdCxzLHI9JC5yZigpCmlmKHI9PW51bGwpcmV0dXJuIG51bGwK
-dD0wPT09YwppZih0JiYhMClyZXR1cm4gUC5PUShyLGIpCnM9Yi5sZW5ndGgKZD1QLmpCKGMsZCxzKQpp
-Zih0JiZkPT09cylyZXR1cm4gUC5PUShyLGIpCnJldHVybiBQLk9RKHIsYi5zdWJhcnJheShjLGQpKX0s
-Ck9ROmZ1bmN0aW9uKGEsYil7aWYoUC5CZShiKSlyZXR1cm4gbnVsbApyZXR1cm4gUC5KaChhLGIpfSwK
-Smg6ZnVuY3Rpb24oYSxiKXt2YXIgdCxzCnRyeXt0PWEuZGVjb2RlKGIpCnJldHVybiB0fWNhdGNoKHMp
-e0guUnUocyl9cmV0dXJuIG51bGx9LApCZTpmdW5jdGlvbihhKXt2YXIgdCxzPWEubGVuZ3RoLTIKZm9y
-KHQ9MDt0PHM7Kyt0KWlmKGFbdF09PT0yMzcpaWYoKGFbdCsxXSYyMjQpPT09MTYwKXJldHVybiEwCnJl
-dHVybiExfSwKV0k6ZnVuY3Rpb24oKXt2YXIgdCxzCnRyeXt0PW5ldyBUZXh0RGVjb2RlcigidXRmLTgi
-LHtmYXRhbDp0cnVlfSkKcmV0dXJuIHR9Y2F0Y2gocyl7SC5SdShzKX1yZXR1cm4gbnVsbH0sCmNQOmZ1
-bmN0aW9uKGEsYixjKXt2YXIgdCxzLHIKZm9yKHQ9Si5VNihhKSxzPWI7czxjOysrcyl7cj10LnEoYSxz
-KQppZih0eXBlb2YgciE9PSJudW1iZXIiKXJldHVybiByLnpNKCkKaWYoKHImMTI3KSE9PXIpcmV0dXJu
-IHMtYn1yZXR1cm4gYy1ifSwKeE06ZnVuY3Rpb24oYSxiLGMsZCxlLGYpe2lmKEMuam4uelkoZiw0KSE9
-PTApdGhyb3cgSC5iKFAucnIoIkludmFsaWQgYmFzZTY0IHBhZGRpbmcsIHBhZGRlZCBsZW5ndGggbXVz
-dCBiZSBtdWx0aXBsZSBvZiBmb3VyLCBpcyAiK2YsYSxjKSkKaWYoZCtlIT09Zil0aHJvdyBILmIoUC5y
-cigiSW52YWxpZCBiYXNlNjQgcGFkZGluZywgJz0nIG5vdCBhdCB0aGUgZW5kIixhLGIpKQppZihlPjIp
-dGhyb3cgSC5iKFAucnIoIkludmFsaWQgYmFzZTY0IHBhZGRpbmcsIG1vcmUgdGhhbiB0d28gJz0nIGNo
-YXJhY3RlcnMiLGEsYikpfSwKdXc6ZnVuY3Rpb24gdXcoYSxiKXt0aGlzLmE9YQp0aGlzLmI9Ygp0aGlz
-LmM9bnVsbH0sCmk4OmZ1bmN0aW9uIGk4KGEpe3RoaXMuYT1hfSwKQ1Y6ZnVuY3Rpb24gQ1YoKXt9LApV
-ODpmdW5jdGlvbiBVOCgpe30sClVrOmZ1bmN0aW9uIFVrKCl7fSwKd0k6ZnVuY3Rpb24gd0koKXt9LApa
-aTpmdW5jdGlvbiBaaSgpe30sCmJ5OmZ1bmN0aW9uIGJ5KCl7fSwKTXg6ZnVuY3Rpb24gTXgoYSl7dGhp
-cy5hPWF9LAp1NTpmdW5jdGlvbiB1NSgpe30sCkUzOmZ1bmN0aW9uIEUzKCl7fSwKUnc6ZnVuY3Rpb24g
-UncoYSl7dGhpcy5iPTAKdGhpcy5jPWF9LApHWTpmdW5jdGlvbiBHWShhKXt0aGlzLmE9YX0sCmJ6OmZ1
-bmN0aW9uIGJ6KGEsYil7dmFyIF89dGhpcwpfLmE9YQpfLmI9YgpfLmM9ITAKXy5mPV8uZT1fLmQ9MH0s
-ClFBOmZ1bmN0aW9uKGEsYixjKXt2YXIgdD1ILkhwKGEsYykKaWYodCE9bnVsbClyZXR1cm4gdAppZihi
-IT1udWxsKXJldHVybiBiLiQxKGEpCnRocm93IEguYihQLnJyKGEsbnVsbCxudWxsKSl9LApGOmZ1bmN0
-aW9uKGEpe2lmKGEgaW5zdGFuY2VvZiBILlRwKXJldHVybiBhLncoMCkKcmV0dXJuIkluc3RhbmNlIG9m
-ICciK0guZChILk0oYSkpKyInIn0sCk84OmZ1bmN0aW9uKGEsYixjKXt2YXIgdCxzPUouUWkoYSxjKQpp
-ZihhIT09MCYmITApZm9yKHQ9MDt0PHMubGVuZ3RoOysrdClDLk5tLlkocyx0LGIpCnJldHVybiBzfSwK
-Q0g6ZnVuY3Rpb24oYSxiLGMpe3ZhciB0LHM9SC5WTShbXSxjLkMoImpkPDA+IikpCmZvcih0PUouSVQo
-YSk7dC5GKCk7KUMuTm0uaShzLGMuYih0LmdsKCkpKQppZihiKXJldHVybiBzCnJldHVybiBjLkMoInpN
-PDA+IikuYihKLkVwKHMpKX0sCkFGOmZ1bmN0aW9uKGEsYil7cmV0dXJuIGIuQygiek08MD4iKS5iKEou
-ekMoUC5DSChhLCExLGIpKSl9LApITTpmdW5jdGlvbihhLGIsYyl7dmFyIHQKaWYoQXJyYXkuaXNBcnJh
-eShhKSl7dS50LmIoYSkKdD1hLmxlbmd0aApjPVAuakIoYixjLHQpCnJldHVybiBILmVUKGI+MHx8Yzx0
-P0MuTm0uRDYoYSxiLGMpOmEpfWlmKHUuYm0uYyhhKSlyZXR1cm4gSC5mdyhhLGIsUC5qQihiLGMsYS5s
-ZW5ndGgpKQpyZXR1cm4gUC5idyhhLGIsYyl9LApPbzpmdW5jdGlvbihhKXtyZXR1cm4gSC5MdyhhKX0s
-CmJ3OmZ1bmN0aW9uKGEsYixjKXt2YXIgdCxzLHIscSxwPW51bGwKaWYoYjwwKXRocm93IEguYihQLlRF
-KGIsMCxKLkhtKGEpLHAscCkpCnQ9Yz09bnVsbAppZighdCYmYzxiKXRocm93IEguYihQLlRFKGMsYixK
-LkhtKGEpLHAscCkpCnM9Si5JVChhKQpmb3Iocj0wO3I8YjsrK3IpaWYoIXMuRigpKXRocm93IEguYihQ
-LlRFKGIsMCxyLHAscCkpCnE9W10KaWYodClmb3IoO3MuRigpOylxLnB1c2gocy5nbCgpKQplbHNlIGZv
-cihyPWI7cjxjOysrcil7aWYoIXMuRigpKXRocm93IEguYihQLlRFKGMsYixyLHAscCkpCnEucHVzaChz
-LmdsKCkpfXJldHVybiBILmVUKHEpfSwKbnU6ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyBILlZSKGEsSC52
-NChhLCExLCEwLCExLCExLCExKSl9LAp2ZzpmdW5jdGlvbihhLGIsYyl7dmFyIHQ9Si5JVChiKQppZigh
-dC5GKCkpcmV0dXJuIGEKaWYoYy5sZW5ndGg9PT0wKXtkbyBhKz1ILmQodC5nbCgpKQp3aGlsZSh0LkYo
-KSl9ZWxzZXthKz1ILmQodC5nbCgpKQpmb3IoO3QuRigpOylhPWErYytILmQodC5nbCgpKX1yZXR1cm4g
-YX0sCmxyOmZ1bmN0aW9uKGEsYixjLGQpe3JldHVybiBuZXcgUC5tcChhLGIsYyxkKX0sCnVvOmZ1bmN0
-aW9uKCl7dmFyIHQ9SC5NMCgpCmlmKHQhPW51bGwpcmV0dXJuIFAuaEsodCkKdGhyb3cgSC5iKFAuTDQo
-IidVcmkuYmFzZScgaXMgbm90IHN1cHBvcnRlZCIpKX0sCmVQOmZ1bmN0aW9uKGEsYixjLGQpe3ZhciB0
-LHMscixxLHAsbyxuPSIwMTIzNDU2Nzg5QUJDREVGIgppZihjPT09Qy54TSl7dD0kLno0KCkuYgppZih0
-eXBlb2YgYiE9InN0cmluZyIpSC52aChILnRMKGIpKQp0PXQudGVzdChiKX1lbHNlIHQ9ITEKaWYodCly
-ZXR1cm4gYgpILkxoKGMpLkMoIlVrLlMiKS5iKGIpCnM9Yy5nWkUoKS5XSihiKQpmb3IodD1zLmxlbmd0
-aCxyPTAscT0iIjtyPHQ7KytyKXtwPXNbcl0KaWYocDwxMjgpe289cD4+PjQKaWYobz49OClyZXR1cm4g
-SC5PSChhLG8pCm89KGFbb10mMTw8KHAmMTUpKSE9PTB9ZWxzZSBvPSExCmlmKG8pcSs9SC5MdyhwKQpl
-bHNlIHE9ZCYmcD09PTMyP3ErIisiOnErIiUiK25bcD4+PjQmMTVdK25bcCYxNV19cmV0dXJuIHEuY2hh
-ckNvZGVBdCgwKT09MD9xOnF9LApHcTpmdW5jdGlvbihhKXt2YXIgdD1NYXRoLmFicyhhKSxzPWE8MD8i
-LSI6IiIKaWYodD49MTAwMClyZXR1cm4iIithCmlmKHQ+PTEwMClyZXR1cm4gcysiMCIrdAppZih0Pj0x
-MClyZXR1cm4gcysiMDAiK3QKcmV0dXJuIHMrIjAwMCIrdH0sClZ4OmZ1bmN0aW9uKGEpe2lmKGE+PTEw
-MClyZXR1cm4iIithCmlmKGE+PTEwKXJldHVybiIwIithCnJldHVybiIwMCIrYX0sCmgwOmZ1bmN0aW9u
-KGEpe2lmKGE+PTEwKXJldHVybiIiK2EKcmV0dXJuIjAiK2F9LApwOmZ1bmN0aW9uKGEpe2lmKHR5cGVv
-ZiBhPT0ibnVtYmVyInx8SC5sKGEpfHxudWxsPT1hKXJldHVybiBKLmooYSkKaWYodHlwZW9mIGE9PSJz
-dHJpbmciKXJldHVybiBKU09OLnN0cmluZ2lmeShhKQpyZXR1cm4gUC5GKGEpfSwKaFY6ZnVuY3Rpb24o
-YSl7cmV0dXJuIG5ldyBQLkM2KGEpfSwKeFk6ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyBQLnUoITEsbnVs
-bCxudWxsLGEpfSwKTDM6ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBuZXcgUC51KCEwLGEsYixjKX0sCkVl
-OmZ1bmN0aW9uKGEpe3JldHVybiBuZXcgUC51KCExLG51bGwsYSwiTXVzdCBub3QgYmUgbnVsbCIpfSwK
-eDpmdW5jdGlvbihhLGIpe3JldHVybiBuZXcgUC5iSihudWxsLG51bGwsITAsYSxiLCJWYWx1ZSBub3Qg
-aW4gcmFuZ2UiKX0sClRFOmZ1bmN0aW9uKGEsYixjLGQsZSl7cmV0dXJuIG5ldyBQLmJKKGIsYywhMCxh
-LGQsIkludmFsaWQgdmFsdWUiKX0sCndBOmZ1bmN0aW9uKGEsYixjLGQpe2lmKGE8Ynx8YT5jKXRocm93
-IEguYihQLlRFKGEsYixjLGQsbnVsbCkpfSwKakI6ZnVuY3Rpb24oYSxiLGMpe2lmKDA+YXx8YT5jKXRo
-cm93IEguYihQLlRFKGEsMCxjLCJzdGFydCIsbnVsbCkpCmlmKGIhPW51bGwpe2lmKGE+Ynx8Yj5jKXRo
-cm93IEguYihQLlRFKGIsYSxjLCJlbmQiLG51bGwpKQpyZXR1cm4gYn1yZXR1cm4gY30sCmsxOmZ1bmN0
-aW9uKGEsYil7aWYodHlwZW9mIGEhPT0ibnVtYmVyIilyZXR1cm4gYS5KKCkKaWYoYTwwKXRocm93IEgu
-YihQLlRFKGEsMCxudWxsLGIsbnVsbCkpfSwKQ2Y6ZnVuY3Rpb24oYSxiLGMsZCxlKXt2YXIgdD1ILlNj
-KGU9PW51bGw/Si5IbShiKTplKQpyZXR1cm4gbmV3IFAuZVkodCwhMCxhLGMsIkluZGV4IG91dCBvZiBy
-YW5nZSIpfSwKTDQ6ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyBQLnViKGEpfSwKU1k6ZnVuY3Rpb24oYSl7
-cmV0dXJuIG5ldyBQLmRzKGEpfSwKUFY6ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyBQLmxqKGEpfSwKYTQ6
-ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyBQLlVWKGEpfSwKcnI6ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBu
-ZXcgUC5hRShhLGIsYyl9LApkSDpmdW5jdGlvbihhLGIsYyxkKXt2YXIgdCxzPUguVk0oW10sZC5DKCJq
-ZDwwPiIpKQpDLk5tLnNBKHMsYSkKZm9yKHQ9MDt0PGE7Kyt0KUMuTm0uWShzLHQsYi4kMSh0KSkKcmV0
-dXJuIHN9LApoSzpmdW5jdGlvbihhKXt2YXIgdCxzLHIscSxwLG8sbixtLGwsayxqLGksaCxnLGYsZT1u
-dWxsLGQ9YS5sZW5ndGgKaWYoZD49NSl7dD0oKEouUXooYSw0KV41OCkqM3xDLnhCLlcoYSwwKV4xMDB8
-Qy54Qi5XKGEsMSleOTd8Qy54Qi5XKGEsMileMTE2fEMueEIuVyhhLDMpXjk3KT4+PjAKaWYodD09PTAp
-cmV0dXJuIFAuS0QoZDxkP0MueEIuTmooYSwwLGQpOmEsNSxlKS5nbFIoKQplbHNlIGlmKHQ9PT0zMily
-ZXR1cm4gUC5LRChDLnhCLk5qKGEsNSxkKSwwLGUpLmdsUigpfXM9bmV3IEFycmF5KDgpCnMuZml4ZWQk
-bGVuZ3RoPUFycmF5CnI9SC5WTShzLHUudCkKQy5ObS5ZKHIsMCwwKQpDLk5tLlkociwxLC0xKQpDLk5t
-LlkociwyLC0xKQpDLk5tLlkociw3LC0xKQpDLk5tLlkociwzLDApCkMuTm0uWShyLDQsMCkKQy5ObS5Z
-KHIsNSxkKQpDLk5tLlkociw2LGQpCmlmKFAuVUIoYSwwLGQsMCxyKT49MTQpQy5ObS5ZKHIsNyxkKQpx
-PXJbMV0KaWYodHlwZW9mIHEhPT0ibnVtYmVyIilyZXR1cm4gcS50QigpCmlmKHE+PTApaWYoUC5VQihh
-LDAscSwyMCxyKT09PTIwKXJbN109cQpzPXJbMl0KaWYodHlwZW9mIHMhPT0ibnVtYmVyIilyZXR1cm4g
-cy5oKCkKcD1zKzEKbz1yWzNdCm49cls0XQptPXJbNV0KbD1yWzZdCmlmKHR5cGVvZiBsIT09Im51bWJl
-ciIpcmV0dXJuIGwuSigpCmlmKHR5cGVvZiBtIT09Im51bWJlciIpcmV0dXJuIEgucFkobSkKaWYobDxt
-KW09bAppZih0eXBlb2YgbiE9PSJudW1iZXIiKXJldHVybiBuLkooKQppZihuPHApbj1tCmVsc2UgaWYo
-bjw9cSluPXErMQppZih0eXBlb2YgbyE9PSJudW1iZXIiKXJldHVybiBvLkooKQppZihvPHApbz1uCnM9
-cls3XQppZih0eXBlb2YgcyE9PSJudW1iZXIiKXJldHVybiBzLkooKQprPXM8MAppZihrKWlmKHA+cSsz
-KXtqPWUKaz0hMX1lbHNle3M9bz4wCmlmKHMmJm8rMT09PW4pe2o9ZQprPSExfWVsc2V7aWYoIShtPGQm
-Jm09PT1uKzImJkoucTAoYSwiLi4iLG4pKSlpPW0+bisyJiZKLnEwKGEsIi8uLiIsbS0zKQplbHNlIGk9
-ITAKaWYoaSl7aj1lCms9ITF9ZWxzZXtpZihxPT09NClpZihKLnEwKGEsImZpbGUiLDApKXtpZihwPD0w
-KXtpZighQy54Qi5RaShhLCIvIixuKSl7aD0iZmlsZTovLy8iCnQ9M31lbHNle2g9ImZpbGU6Ly8iCnQ9
-Mn1hPWgrQy54Qi5OaihhLG4sZCkKcS09MApzPXQtMAptKz1zCmwrPXMKZD1hLmxlbmd0aApwPTcKbz03
-Cm49N31lbHNlIGlmKG49PT1tKXtnPW0rMTsrK2wKYT1DLnhCLmk3KGEsbixtLCIvIik7KytkCm09Z31q
-PSJmaWxlIn1lbHNlIGlmKEMueEIuUWkoYSwiaHR0cCIsMCkpe2lmKHMmJm8rMz09PW4mJkMueEIuUWko
-YSwiODAiLG8rMSkpe2Y9bi0zCm0tPTMKbC09MwphPUMueEIuaTcoYSxvLG4sIiIpCmQtPTMKbj1mfWo9
-Imh0dHAifWVsc2Ugaj1lCmVsc2UgaWYocT09PTUmJkoucTAoYSwiaHR0cHMiLDApKXtpZihzJiZvKzQ9
-PT1uJiZKLnEwKGEsIjQ0MyIsbysxKSl7Zj1uLTQKbS09NApsLT00CmE9Si5kZyhhLG8sbiwiIikKZC09
-MwpuPWZ9aj0iaHR0cHMifWVsc2Ugaj1lCms9ITB9fX1lbHNlIGo9ZQppZihrKXtzPWEubGVuZ3RoCmlm
-KGQ8cyl7YT1KLmxkKGEsMCxkKQpxLT0wCnAtPTAKby09MApuLT0wCm0tPTAKbC09MH1yZXR1cm4gbmV3
-IFAuVWYoYSxxLHAsbyxuLG0sbCxqKX1yZXR1cm4gUC5qdihhLDAsZCxxLHAsbyxuLG0sbCxqKX0sCk10
-OmZ1bmN0aW9uKGEpe0gueShhKQpyZXR1cm4gUC5rdShhLDAsYS5sZW5ndGgsQy54TSwhMSl9LApXWDpm
-dW5jdGlvbihhKXt2YXIgdD11Lk4KcmV0dXJuIEMuTm0uTjAoSC5WTShhLnNwbGl0KCImIiksdS5zKSxQ
-LkZsKHQsdCksbmV3IFAubjEoQy54TSksdS5mKX0sCkhoOmZ1bmN0aW9uKGEsYixjKXt2YXIgdCxzLHIs
-cSxwLG8sbixtPW51bGwsbD0iSVB2NCBhZGRyZXNzIHNob3VsZCBjb250YWluIGV4YWN0bHkgNCBwYXJ0
-cyIsaz0iZWFjaCBwYXJ0IG11c3QgYmUgaW4gdGhlIHJhbmdlIDAuLjI1NSIsaj1uZXcgUC5jUyhhKSxp
-PW5ldyBVaW50OEFycmF5KDQpCmZvcih0PWkubGVuZ3RoLHM9YixyPXMscT0wO3M8YzsrK3Mpe3A9Qy54
-Qi5tKGEscykKaWYocCE9PTQ2KXtpZigocF40OCk+OSlqLiQyKCJpbnZhbGlkIGNoYXJhY3RlciIscyl9
-ZWxzZXtpZihxPT09MylqLiQyKGwscykKbz1QLlFBKEMueEIuTmooYSxyLHMpLG0sbSkKaWYodHlwZW9m
-IG8hPT0ibnVtYmVyIilyZXR1cm4gby5vcygpCmlmKG8+MjU1KWouJDIoayxyKQpuPXErMQppZihxPj10
-KXJldHVybiBILk9IKGkscSkKaVtxXT1vCnI9cysxCnE9bn19aWYocSE9PTMpai4kMihsLGMpCm89UC5R
-QShDLnhCLk5qKGEscixjKSxtLG0pCmlmKHR5cGVvZiBvIT09Im51bWJlciIpcmV0dXJuIG8ub3MoKQpp
-ZihvPjI1NSlqLiQyKGsscikKaWYocT49dClyZXR1cm4gSC5PSChpLHEpCmlbcV09bwpyZXR1cm4gaX0s
+d1t0XVthXSlyZXR1cm4gd1t0XVthXX19dmFyIEM9e30sSD17Rks6ZnVuY3Rpb24gRksoKXt9LAp5Ujpm
+dW5jdGlvbihhKXtyZXR1cm4gbmV3IEgubmQoYSl9LApvbzpmdW5jdGlvbihhKXt2YXIgdCxzPWFeNDgK
+aWYoczw9OSlyZXR1cm4gcwp0PWF8MzIKaWYoOTc8PXQmJnQ8PTEwMilyZXR1cm4gdC04NwpyZXR1cm4t
+MX0sCnFDOmZ1bmN0aW9uKGEsYixjLGQpe1AuazEoYiwic3RhcnQiKQppZihjIT1udWxsKXtQLmsxKGMs
+ImVuZCIpCmlmKGI+YylILnZoKFAuVEUoYiwwLGMsInN0YXJ0IixudWxsKSl9cmV0dXJuIG5ldyBILm5I
+KGEsYixjLGQuQygibkg8MD4iKSl9LApLMTpmdW5jdGlvbihhLGIsYyxkKXtpZih1Lmd3LmIoYSkpcmV0
+dXJuIG5ldyBILnh5KGEsYixjLkMoIkA8MD4iKS5LcShkKS5DKCJ4eTwxLDI+IikpCnJldHVybiBuZXcg
+SC5pMShhLGIsYy5DKCJAPDA+IikuS3EoZCkuQygiaTE8MSwyPiIpKX0sCldwOmZ1bmN0aW9uKCl7cmV0
+dXJuIG5ldyBQLmxqKCJObyBlbGVtZW50Iil9LApkVTpmdW5jdGlvbigpe3JldHVybiBuZXcgUC5saigi
+VG9vIG1hbnkgZWxlbWVudHMiKX0sCmFyOmZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBQLmxqKCJUb28gZmV3
+IGVsZW1lbnRzIil9LApuZDpmdW5jdGlvbiBuZChhKXt0aGlzLmE9YX0sCnFqOmZ1bmN0aW9uIHFqKGEp
+e3RoaXMuYT1hfSwKYlE6ZnVuY3Rpb24gYlEoKXt9LAphTDpmdW5jdGlvbiBhTCgpe30sCm5IOmZ1bmN0
+aW9uIG5IKGEsYixjLGQpe3ZhciBfPXRoaXMKXy5hPWEKXy5iPWIKXy5jPWMKXy4kdGk9ZH0sCmE3OmZ1
+bmN0aW9uIGE3KGEsYixjKXt2YXIgXz10aGlzCl8uYT1hCl8uYj1iCl8uYz0wCl8uZD1udWxsCl8uJHRp
+PWN9LAppMTpmdW5jdGlvbiBpMShhLGIsYyl7dGhpcy5hPWEKdGhpcy5iPWIKdGhpcy4kdGk9Y30sCnh5
+OmZ1bmN0aW9uIHh5KGEsYixjKXt0aGlzLmE9YQp0aGlzLmI9Ygp0aGlzLiR0aT1jfSwKTUg6ZnVuY3Rp
+b24gTUgoYSxiLGMpe3ZhciBfPXRoaXMKXy5hPW51bGwKXy5iPWEKXy5jPWIKXy4kdGk9Y30sCmxKOmZ1
+bmN0aW9uIGxKKGEsYixjKXt0aGlzLmE9YQp0aGlzLmI9Ygp0aGlzLiR0aT1jfSwKVTU6ZnVuY3Rpb24g
+VTUoYSxiLGMpe3RoaXMuYT1hCnRoaXMuYj1iCnRoaXMuJHRpPWN9LApTTzpmdW5jdGlvbiBTTyhhLGIs
+Yyl7dGhpcy5hPWEKdGhpcy5iPWIKdGhpcy4kdGk9Y30sClNVOmZ1bmN0aW9uIFNVKCl7fSwKUmU6ZnVu
+Y3Rpb24gUmUoKXt9LAp3MjpmdW5jdGlvbiB3Migpe30sCnd2OmZ1bmN0aW9uIHd2KGEpe3RoaXMuYT1h
+fSwKZGM6ZnVuY3Rpb24oKXt0aHJvdyBILmIoUC5MNCgiQ2Fubm90IG1vZGlmeSB1bm1vZGlmaWFibGUg
+TWFwIikpfSwKTlE6ZnVuY3Rpb24oYSl7dmFyIHQscz1ILkpnKGEpCmlmKHMhPW51bGwpcmV0dXJuIHMK
+dD0ibWluaWZpZWQ6IithCnJldHVybiB0fSwKd1Y6ZnVuY3Rpb24oYSxiKXt2YXIgdAppZihiIT1udWxs
+KXt0PWIueAppZih0IT1udWxsKXJldHVybiB0fXJldHVybiB1LmFVLmIoYSl9LApFajpmdW5jdGlvbihh
+KXt2YXIgdAppZih0eXBlb2YgYT09InN0cmluZyIpcmV0dXJuIGEKaWYodHlwZW9mIGE9PSJudW1iZXIi
+KXtpZihhIT09MClyZXR1cm4iIithfWVsc2UgaWYoITA9PT1hKXJldHVybiJ0cnVlIgplbHNlIGlmKCEx
+PT09YSlyZXR1cm4iZmFsc2UiCmVsc2UgaWYoYT09bnVsbClyZXR1cm4ibnVsbCIKdD1KLmooYSkKaWYo
+dHlwZW9mIHQhPSJzdHJpbmciKXRocm93IEguYihILnRMKGEpKQpyZXR1cm4gdH0sCmVROmZ1bmN0aW9u
+KGEpe3ZhciB0PWEuJGlkZW50aXR5SGFzaAppZih0PT1udWxsKXt0PU1hdGgucmFuZG9tKCkqMHgzZmZm
+ZmZmZnwwCmEuJGlkZW50aXR5SGFzaD10fXJldHVybiB0fSwKSHA6ZnVuY3Rpb24oYSxiKXt2YXIgdCxz
+LHIscSxwLG8sbj1udWxsCmlmKHR5cGVvZiBhIT0ic3RyaW5nIilILnZoKEgudEwoYSkpCnQ9L15ccypb
+Ky1dPygoMHhbYS1mMC05XSspfChcZCspfChbYS16MC05XSspKVxzKiQvaS5leGVjKGEpCmlmKHQ9PW51
+bGwpcmV0dXJuIG4KaWYoMz49dC5sZW5ndGgpcmV0dXJuIEguT0godCwzKQpzPUguaCh0WzNdKQppZihi
+PT1udWxsKXtpZihzIT1udWxsKXJldHVybiBwYXJzZUludChhLDEwKQppZih0WzJdIT1udWxsKXJldHVy
+biBwYXJzZUludChhLDE2KQpyZXR1cm4gbn1pZihiPDJ8fGI+MzYpdGhyb3cgSC5iKFAuVEUoYiwyLDM2
+LCJyYWRpeCIsbikpCmlmKGI9PT0xMCYmcyE9bnVsbClyZXR1cm4gcGFyc2VJbnQoYSwxMCkKaWYoYjwx
+MHx8cz09bnVsbCl7cj1iPD0xMD80NytiOjg2K2IKcT10WzFdCmZvcihwPXEubGVuZ3RoLG89MDtvPHA7
+KytvKWlmKChDLnhCLlcocSxvKXwzMik+cilyZXR1cm4gbn1yZXR1cm4gcGFyc2VJbnQoYSxiKX0sCk06
+ZnVuY3Rpb24oYSl7dmFyIHQ9SC5INShhKQpyZXR1cm4gdH0sCkg1OmZ1bmN0aW9uKGEpe3ZhciB0LHMs
+cgppZihhIGluc3RhbmNlb2YgUC5NaClyZXR1cm4gSC5kbShILnooYSksbnVsbCkKaWYoSi5pYShhKT09
+PUMuT2t8fHUuYWsuYihhKSl7dD1DLk80KGEpCmlmKEguQmUodCkpcmV0dXJuIHQKcz1hLmNvbnN0cnVj
+dG9yCmlmKHR5cGVvZiBzPT0iZnVuY3Rpb24iKXtyPXMubmFtZQppZih0eXBlb2Ygcj09InN0cmluZyIm
+JkguQmUocikpcmV0dXJuIHJ9fXJldHVybiBILmRtKEgueihhKSxudWxsKX0sCkJlOmZ1bmN0aW9uKGEp
+e3ZhciB0PWEhPT0iT2JqZWN0IiYmYSE9PSIiCnJldHVybiB0fSwKTTA6ZnVuY3Rpb24oKXtpZighIXNl
+bGYubG9jYXRpb24pcmV0dXJuIHNlbGYubG9jYXRpb24uaHJlZgpyZXR1cm4gbnVsbH0sClZLOmZ1bmN0
+aW9uKGEpe3ZhciB0LHMscixxLHA9YS5sZW5ndGgKaWYocDw9NTAwKXJldHVybiBTdHJpbmcuZnJvbUNo
+YXJDb2RlLmFwcGx5KG51bGwsYSkKZm9yKHQ9IiIscz0wO3M8cDtzPXIpe3I9cys1MDAKcT1yPHA/cjpw
+CnQrPVN0cmluZy5mcm9tQ2hhckNvZGUuYXBwbHkobnVsbCxhLnNsaWNlKHMscSkpfXJldHVybiB0fSwK
+Q3E6ZnVuY3Rpb24oYSl7dmFyIHQscyxyLHE9SC5WTShbXSx1LnQpCmZvcih0PWEubGVuZ3RoLHM9MDtz
+PGEubGVuZ3RoO2EubGVuZ3RoPT09dHx8KDAsSC5saykoYSksKytzKXtyPWFbc10KaWYoIUgub2socikp
+dGhyb3cgSC5iKEgudEwocikpCmlmKHI8PTY1NTM1KUMuTm0uaShxLHIpCmVsc2UgaWYocjw9MTExNDEx
+MSl7Qy5ObS5pKHEsNTUyOTYrKEMuam4ud0coci02NTUzNiwxMCkmMTAyMykpCkMuTm0uaShxLDU2MzIw
+KyhyJjEwMjMpKX1lbHNlIHRocm93IEguYihILnRMKHIpKX1yZXR1cm4gSC5WSyhxKX0sCmVUOmZ1bmN0
+aW9uKGEpe3ZhciB0LHMscgpmb3IodD1hLmxlbmd0aCxzPTA7czx0Oysrcyl7cj1hW3NdCmlmKCFILm9r
+KHIpKXRocm93IEguYihILnRMKHIpKQppZihyPDApdGhyb3cgSC5iKEgudEwocikpCmlmKHI+NjU1MzUp
+cmV0dXJuIEguQ3EoYSl9cmV0dXJuIEguVksoYSl9LApmdzpmdW5jdGlvbihhLGIsYyl7dmFyIHQscyxy
+LHEKaWYoYzw9NTAwJiZiPT09MCYmYz09PWEubGVuZ3RoKXJldHVybiBTdHJpbmcuZnJvbUNoYXJDb2Rl
+LmFwcGx5KG51bGwsYSkKZm9yKHQ9YixzPSIiO3Q8Yzt0PXIpe3I9dCs1MDAKcT1yPGM/cjpjCnMrPVN0
+cmluZy5mcm9tQ2hhckNvZGUuYXBwbHkobnVsbCxhLnN1YmFycmF5KHQscSkpfXJldHVybiBzfSwKTHc6
+ZnVuY3Rpb24oYSl7dmFyIHQKaWYoMDw9YSl7aWYoYTw9NjU1MzUpcmV0dXJuIFN0cmluZy5mcm9tQ2hh
+ckNvZGUoYSkKaWYoYTw9MTExNDExMSl7dD1hLTY1NTM2CnJldHVybiBTdHJpbmcuZnJvbUNoYXJDb2Rl
+KCg1NTI5NnxDLmpuLndHKHQsMTApKT4+PjAsNTYzMjB8dCYxMDIzKX19dGhyb3cgSC5iKFAuVEUoYSww
+LDExMTQxMTEsbnVsbCxudWxsKSl9LApvMjpmdW5jdGlvbihhKXtpZihhLmRhdGU9PT12b2lkIDApYS5k
+YXRlPW5ldyBEYXRlKGEuYSkKcmV0dXJuIGEuZGF0ZX0sCnRKOmZ1bmN0aW9uKGEpe3ZhciB0PUgubzIo
+YSkuZ2V0RnVsbFllYXIoKSswCnJldHVybiB0fSwKTlM6ZnVuY3Rpb24oYSl7dmFyIHQ9SC5vMihhKS5n
+ZXRNb250aCgpKzEKcmV0dXJuIHR9LApqQTpmdW5jdGlvbihhKXt2YXIgdD1ILm8yKGEpLmdldERhdGUo
+KSswCnJldHVybiB0fSwKSVg6ZnVuY3Rpb24oYSl7dmFyIHQ9SC5vMihhKS5nZXRIb3VycygpKzAKcmV0
+dXJuIHR9LApjaDpmdW5jdGlvbihhKXt2YXIgdD1ILm8yKGEpLmdldE1pbnV0ZXMoKSswCnJldHVybiB0
+fSwKSmQ6ZnVuY3Rpb24oYSl7dmFyIHQ9SC5vMihhKS5nZXRTZWNvbmRzKCkrMApyZXR1cm4gdH0sCm8x
+OmZ1bmN0aW9uKGEpe3ZhciB0PUgubzIoYSkuZ2V0TWlsbGlzZWNvbmRzKCkrMApyZXR1cm4gdH0sCnpv
+OmZ1bmN0aW9uKGEsYixjKXt2YXIgdCxzLHI9e30Kci5hPTAKdD1bXQpzPVtdCnIuYT1iLmxlbmd0aApD
+Lk5tLkZWKHQsYikKci5iPSIiCmlmKGMhPW51bGwmJmMuYSE9PTApYy5LKDAsbmV3IEguQ2oocixzLHQp
+KQoiIityLmEKcmV0dXJuIEouSnkoYSxuZXcgSC5MSShDLlRlLDAsdCxzLDApKX0sCkVrOmZ1bmN0aW9u
+KGEsYixjKXt2YXIgdCxzLHIscQppZihiIGluc3RhbmNlb2YgQXJyYXkpdD1jPT1udWxsfHxjLmE9PT0w
+CmVsc2UgdD0hMQppZih0KXtzPWIKcj1zLmxlbmd0aAppZihyPT09MCl7aWYoISFhLiQwKXJldHVybiBh
+LiQwKCl9ZWxzZSBpZihyPT09MSl7aWYoISFhLiQxKXJldHVybiBhLiQxKHNbMF0pfWVsc2UgaWYocj09
+PTIpe2lmKCEhYS4kMilyZXR1cm4gYS4kMihzWzBdLHNbMV0pfWVsc2UgaWYocj09PTMpe2lmKCEhYS4k
+MylyZXR1cm4gYS4kMyhzWzBdLHNbMV0sc1syXSl9ZWxzZSBpZihyPT09NCl7aWYoISFhLiQ0KXJldHVy
+biBhLiQ0KHNbMF0sc1sxXSxzWzJdLHNbM10pfWVsc2UgaWYocj09PTUpaWYoISFhLiQ1KXJldHVybiBh
+LiQ1KHNbMF0sc1sxXSxzWzJdLHNbM10sc1s0XSkKcT1hWyIiKyIkIityXQppZihxIT1udWxsKXJldHVy
+biBxLmFwcGx5KGEscyl9cmV0dXJuIEguZTEoYSxiLGMpfSwKZTE6ZnVuY3Rpb24oYSxiLGMpe3ZhciB0
+LHMscixxLHAsbyxuLG0sbCxrPWIgaW5zdGFuY2VvZiBBcnJheT9iOlAuQ0goYiwhMCx1LnopLGo9ay5s
+ZW5ndGgsaT1hLiRSCmlmKGo8aSlyZXR1cm4gSC56byhhLGssYykKdD1hLiRECnM9dD09bnVsbApyPSFz
+P3QoKTpudWxsCnE9Si5pYShhKQpwPXEuJEMKaWYodHlwZW9mIHA9PSJzdHJpbmciKXA9cVtwXQppZihz
+KXtpZihjIT1udWxsJiZjLmEhPT0wKXJldHVybiBILnpvKGEsayxjKQppZihqPT09aSlyZXR1cm4gcC5h
+cHBseShhLGspCnJldHVybiBILnpvKGEsayxjKX1pZihyIGluc3RhbmNlb2YgQXJyYXkpe2lmKGMhPW51
+bGwmJmMuYSE9PTApcmV0dXJuIEguem8oYSxrLGMpCmlmKGo+aStyLmxlbmd0aClyZXR1cm4gSC56byhh
+LGssbnVsbCkKQy5ObS5GVihrLHIuc2xpY2Uoai1pKSkKcmV0dXJuIHAuYXBwbHkoYSxrKX1lbHNle2lm
+KGo+aSlyZXR1cm4gSC56byhhLGssYykKbz1PYmplY3Qua2V5cyhyKQppZihjPT1udWxsKWZvcihzPW8u
+bGVuZ3RoLG49MDtuPG8ubGVuZ3RoO28ubGVuZ3RoPT09c3x8KDAsSC5saykobyksKytuKUMuTm0uaShr
+LHJbSC5oKG9bbl0pXSkKZWxzZXtmb3Iocz1vLmxlbmd0aCxtPTAsbj0wO248by5sZW5ndGg7by5sZW5n
+dGg9PT1zfHwoMCxILmxrKShvKSwrK24pe2w9SC5oKG9bbl0pCmlmKGMueDQobCkpeysrbQpDLk5tLmko
+ayxjLnEoMCxsKSl9ZWxzZSBDLk5tLmkoayxyW2xdKX1pZihtIT09Yy5hKXJldHVybiBILnpvKGEsayxj
+KX1yZXR1cm4gcC5hcHBseShhLGspfX0sCnBZOmZ1bmN0aW9uKGEpe3Rocm93IEguYihILnRMKGEpKX0s
+Ck9IOmZ1bmN0aW9uKGEsYil7aWYoYT09bnVsbClKLkhtKGEpCnRocm93IEguYihILkhZKGEsYikpfSwK
+SFk6ZnVuY3Rpb24oYSxiKXt2YXIgdCxzPSJpbmRleCIKaWYoIUgub2soYikpcmV0dXJuIG5ldyBQLnUo
+ITAsYixzLG51bGwpCnQ9SC51UChKLkhtKGEpKQppZihiPDB8fGI+PXQpcmV0dXJuIFAuQ2YoYixhLHMs
+bnVsbCx0KQpyZXR1cm4gUC5PNyhiLHMpfSwKYXU6ZnVuY3Rpb24oYSxiLGMpe2lmKGE+YylyZXR1cm4g
+UC5URShhLDAsYywic3RhcnQiLG51bGwpCmlmKGIhPW51bGwpaWYoYjxhfHxiPmMpcmV0dXJuIFAuVEUo
+YixhLGMsImVuZCIsbnVsbCkKcmV0dXJuIG5ldyBQLnUoITAsYiwiZW5kIixudWxsKX0sCnRMOmZ1bmN0
+aW9uKGEpe3JldHVybiBuZXcgUC51KCEwLGEsbnVsbCxudWxsKX0sCmI6ZnVuY3Rpb24oYSl7dmFyIHQK
+aWYoYT09bnVsbClhPW5ldyBQLm4oKQp0PW5ldyBFcnJvcigpCnQuZGFydEV4Y2VwdGlvbj1hCmlmKCJk
+ZWZpbmVQcm9wZXJ0eSIgaW4gT2JqZWN0KXtPYmplY3QuZGVmaW5lUHJvcGVydHkodCwibWVzc2FnZSIs
+e2dldDpILnh9KQp0Lm5hbWU9IiJ9ZWxzZSB0LnRvU3RyaW5nPUgueApyZXR1cm4gdH0sCng6ZnVuY3Rp
+b24oKXtyZXR1cm4gSi5qKHRoaXMuZGFydEV4Y2VwdGlvbil9LAp2aDpmdW5jdGlvbihhKXt0aHJvdyBI
+LmIoYSl9LApsazpmdW5jdGlvbihhKXt0aHJvdyBILmIoUC5hNChhKSl9LApjTTpmdW5jdGlvbihhKXt2
+YXIgdCxzLHIscSxwLG8KYT1ILmVBKGEucmVwbGFjZShTdHJpbmcoe30pLCckcmVjZWl2ZXIkJykpCnQ9
+YS5tYXRjaCgvXFxcJFthLXpBLVpdK1xcXCQvZykKaWYodD09bnVsbCl0PUguVk0oW10sdS5zKQpzPXQu
+aW5kZXhPZigiXFwkYXJndW1lbnRzXFwkIikKcj10LmluZGV4T2YoIlxcJGFyZ3VtZW50c0V4cHJcXCQi
+KQpxPXQuaW5kZXhPZigiXFwkZXhwclxcJCIpCnA9dC5pbmRleE9mKCJcXCRtZXRob2RcXCQiKQpvPXQu
+aW5kZXhPZigiXFwkcmVjZWl2ZXJcXCQiKQpyZXR1cm4gbmV3IEguZjkoYS5yZXBsYWNlKG5ldyBSZWdF
+eHAoJ1xcXFxcXCRhcmd1bWVudHNcXFxcXFwkJywnZycpLCcoKD86eHxbXnhdKSopJykucmVwbGFjZShu
+ZXcgUmVnRXhwKCdcXFxcXFwkYXJndW1lbnRzRXhwclxcXFxcXCQnLCdnJyksJygoPzp4fFteeF0pKikn
+KS5yZXBsYWNlKG5ldyBSZWdFeHAoJ1xcXFxcXCRleHByXFxcXFxcJCcsJ2cnKSwnKCg/Onh8W154XSkq
+KScpLnJlcGxhY2UobmV3IFJlZ0V4cCgnXFxcXFxcJG1ldGhvZFxcXFxcXCQnLCdnJyksJygoPzp4fFte
+eF0pKiknKS5yZXBsYWNlKG5ldyBSZWdFeHAoJ1xcXFxcXCRyZWNlaXZlclxcXFxcXCQnLCdnJyksJygo
+Pzp4fFteeF0pKiknKSxzLHIscSxwLG8pfSwKUzc6ZnVuY3Rpb24oYSl7cmV0dXJuIGZ1bmN0aW9uKCRl
+eHByJCl7dmFyICRhcmd1bWVudHNFeHByJD0nJGFyZ3VtZW50cyQnCnRyeXskZXhwciQuJG1ldGhvZCQo
+JGFyZ3VtZW50c0V4cHIkKX1jYXRjaCh0KXtyZXR1cm4gdC5tZXNzYWdlfX0oYSl9LApNajpmdW5jdGlv
+bihhKXtyZXR1cm4gZnVuY3Rpb24oJGV4cHIkKXt0cnl7JGV4cHIkLiRtZXRob2QkfWNhdGNoKHQpe3Jl
+dHVybiB0Lm1lc3NhZ2V9fShhKX0sCklqOmZ1bmN0aW9uKGEsYil7cmV0dXJuIG5ldyBILlcwKGEsYj09
+bnVsbD9udWxsOmIubWV0aG9kKX0sClQzOmZ1bmN0aW9uKGEsYil7dmFyIHQ9Yj09bnVsbCxzPXQ/bnVs
+bDpiLm1ldGhvZApyZXR1cm4gbmV3IEguYXooYSxzLHQ/bnVsbDpiLnJlY2VpdmVyKX0sClJ1OmZ1bmN0
+aW9uKGEpe3ZhciB0LHMscixxLHAsbyxuLG0sbCxrLGosaSxoLGcsZj1udWxsLGU9bmV3IEguQW0oYSkK
+aWYoYT09bnVsbClyZXR1cm4gZgppZihhIGluc3RhbmNlb2YgSC5icSlyZXR1cm4gZS4kMShhLmEpCmlm
+KHR5cGVvZiBhIT09Im9iamVjdCIpcmV0dXJuIGEKaWYoImRhcnRFeGNlcHRpb24iIGluIGEpcmV0dXJu
+IGUuJDEoYS5kYXJ0RXhjZXB0aW9uKQplbHNlIGlmKCEoIm1lc3NhZ2UiIGluIGEpKXJldHVybiBhCnQ9
+YS5tZXNzYWdlCmlmKCJudW1iZXIiIGluIGEmJnR5cGVvZiBhLm51bWJlcj09Im51bWJlciIpe3M9YS5u
+dW1iZXIKcj1zJjY1NTM1CmlmKChDLmpuLndHKHMsMTYpJjgxOTEpPT09MTApc3dpdGNoKHIpe2Nhc2Ug
+NDM4OnJldHVybiBlLiQxKEguVDMoSC5Faih0KSsiIChFcnJvciAiK3IrIikiLGYpKQpjYXNlIDQ0NTpj
+YXNlIDUwMDc6cmV0dXJuIGUuJDEoSC5JaihILkVqKHQpKyIgKEVycm9yICIrcisiKSIsZikpfX1pZihh
+IGluc3RhbmNlb2YgVHlwZUVycm9yKXtxPSQuU24oKQpwPSQubHEoKQpvPSQuTjkoKQpuPSQuaUkoKQpt
+PSQuVU4oKQpsPSQuWmgoKQprPSQuck4oKQokLmMzKCkKaj0kLkhLKCkKaT0kLnIxKCkKaD1xLnFTKHQp
+CmlmKGghPW51bGwpcmV0dXJuIGUuJDEoSC5UMyhILmgodCksaCkpCmVsc2V7aD1wLnFTKHQpCmlmKGgh
+PW51bGwpe2gubWV0aG9kPSJjYWxsIgpyZXR1cm4gZS4kMShILlQzKEguaCh0KSxoKSl9ZWxzZXtoPW8u
+cVModCkKaWYoaD09bnVsbCl7aD1uLnFTKHQpCmlmKGg9PW51bGwpe2g9bS5xUyh0KQppZihoPT1udWxs
+KXtoPWwucVModCkKaWYoaD09bnVsbCl7aD1rLnFTKHQpCmlmKGg9PW51bGwpe2g9bi5xUyh0KQppZiho
+PT1udWxsKXtoPWoucVModCkKaWYoaD09bnVsbCl7aD1pLnFTKHQpCmc9aCE9bnVsbH1lbHNlIGc9ITB9
+ZWxzZSBnPSEwfWVsc2UgZz0hMH1lbHNlIGc9ITB9ZWxzZSBnPSEwfWVsc2UgZz0hMH1lbHNlIGc9ITAK
+aWYoZylyZXR1cm4gZS4kMShILklqKEguaCh0KSxoKSl9fXJldHVybiBlLiQxKG5ldyBILnZWKHR5cGVv
+ZiB0PT0ic3RyaW5nIj90OiIiKSl9aWYoYSBpbnN0YW5jZW9mIFJhbmdlRXJyb3Ipe2lmKHR5cGVvZiB0
+PT0ic3RyaW5nIiYmdC5pbmRleE9mKCJjYWxsIHN0YWNrIikhPT0tMSlyZXR1cm4gbmV3IFAuS1koKQp0
+PWZ1bmN0aW9uKGIpe3RyeXtyZXR1cm4gU3RyaW5nKGIpfWNhdGNoKGQpe31yZXR1cm4gbnVsbH0oYSkK
+cmV0dXJuIGUuJDEobmV3IFAudSghMSxmLGYsdHlwZW9mIHQ9PSJzdHJpbmciP3QucmVwbGFjZSgvXlJh
+bmdlRXJyb3I6XHMqLywiIik6dCkpfWlmKHR5cGVvZiBJbnRlcm5hbEVycm9yPT0iZnVuY3Rpb24iJiZh
+IGluc3RhbmNlb2YgSW50ZXJuYWxFcnJvcilpZih0eXBlb2YgdD09InN0cmluZyImJnQ9PT0idG9vIG11
+Y2ggcmVjdXJzaW9uIilyZXR1cm4gbmV3IFAuS1koKQpyZXR1cm4gYX0sCnRzOmZ1bmN0aW9uKGEpe3Zh
+ciB0CmlmKGEgaW5zdGFuY2VvZiBILmJxKXJldHVybiBhLmIKaWYoYT09bnVsbClyZXR1cm4gbmV3IEgu
+WE8oYSkKdD1hLiRjYWNoZWRUcmFjZQppZih0IT1udWxsKXJldHVybiB0CnJldHVybiBhLiRjYWNoZWRU
+cmFjZT1uZXcgSC5YTyhhKX0sCkI3OmZ1bmN0aW9uKGEsYil7dmFyIHQscyxyLHE9YS5sZW5ndGgKZm9y
+KHQ9MDt0PHE7dD1yKXtzPXQrMQpyPXMrMQpiLlkoMCxhW3RdLGFbc10pfXJldHVybiBifSwKZnQ6ZnVu
+Y3Rpb24oYSxiLGMsZCxlLGYpe3UuWS5hKGEpCnN3aXRjaChILnVQKGIpKXtjYXNlIDA6cmV0dXJuIGEu
+JDAoKQpjYXNlIDE6cmV0dXJuIGEuJDEoYykKY2FzZSAyOnJldHVybiBhLiQyKGMsZCkKY2FzZSAzOnJl
+dHVybiBhLiQzKGMsZCxlKQpjYXNlIDQ6cmV0dXJuIGEuJDQoYyxkLGUsZil9dGhyb3cgSC5iKG5ldyBQ
+LkNEKCJVbnN1cHBvcnRlZCBudW1iZXIgb2YgYXJndW1lbnRzIGZvciB3cmFwcGVkIGNsb3N1cmUiKSl9
+LAp0UjpmdW5jdGlvbihhLGIpe3ZhciB0CmlmKGE9PW51bGwpcmV0dXJuIG51bGwKdD1hLiRpZGVudGl0
+eQppZighIXQpcmV0dXJuIHQKdD1mdW5jdGlvbihjLGQsZSl7cmV0dXJuIGZ1bmN0aW9uKGYsZyxoLGkp
+e3JldHVybiBlKGMsZCxmLGcsaCxpKX19KGEsYixILmZ0KQphLiRpZGVudGl0eT10CnJldHVybiB0fSwK
+aUE6ZnVuY3Rpb24oYSxiLGMsZCxlLGYsZyl7dmFyIHQscyxyLHEscCxvLG4sbSxsPWJbMF0saz1sLiRj
+YWxsTmFtZSxqPWU/T2JqZWN0LmNyZWF0ZShuZXcgSC56eCgpLmNvbnN0cnVjdG9yLnByb3RvdHlwZSk6
+T2JqZWN0LmNyZWF0ZShuZXcgSC5yVChudWxsLG51bGwsbnVsbCwiIikuY29uc3RydWN0b3IucHJvdG90
+eXBlKQpqLiRpbml0aWFsaXplPWouY29uc3RydWN0b3IKaWYoZSl0PWZ1bmN0aW9uIHN0YXRpY190ZWFy
+X29mZigpe3RoaXMuJGluaXRpYWxpemUoKX0KZWxzZXtzPSQueWoKaWYodHlwZW9mIHMhPT0ibnVtYmVy
+IilyZXR1cm4gcy5oKCkKJC55aj1zKzEKcz1uZXcgRnVuY3Rpb24oImEsYixjLGQiK3MsInRoaXMuJGlu
+aXRpYWxpemUoYSxiLGMsZCIrcysiKSIpCnQ9c31qLmNvbnN0cnVjdG9yPXQKdC5wcm90b3R5cGU9agpp
+ZighZSl7cj1ILmJ4KGEsbCxmKQpyLiRyZWZsZWN0aW9uSW5mbz1kfWVsc2V7ai4kc3RhdGljX25hbWU9
+ZwpyPWx9cT1ILmltKGQsZSxmKQpqLiRTPXEKaltrXT1yCmZvcihwPXIsbz0xO288Yi5sZW5ndGg7Kytv
+KXtuPWJbb10KbT1uLiRjYWxsTmFtZQppZihtIT1udWxsKXtuPWU/bjpILmJ4KGEsbixmKQpqW21dPW59
+aWYobz09PWMpe24uJHJlZmxlY3Rpb25JbmZvPWQKcD1ufX1qLiRDPXAKai4kUj1sLiRSCmouJEQ9bC4k
+RApyZXR1cm4gdH0sCmltOmZ1bmN0aW9uKGEsYixjKXt2YXIgdAppZih0eXBlb2YgYT09Im51bWJlciIp
+cmV0dXJuIGZ1bmN0aW9uKGQsZSl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIGQoZSl9fShILkJwLGEp
+CmlmKHR5cGVvZiBhPT0ic3RyaW5nIil7aWYoYil0aHJvdyBILmIoIkNhbm5vdCBjb21wdXRlIHNpZ25h
+dHVyZSBmb3Igc3RhdGljIHRlYXJvZmYuIikKdD1jP0guUFc6SC5UbgpyZXR1cm4gZnVuY3Rpb24oZCxl
+KXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gZSh0aGlzLGQpfX0oYSx0KX10aHJvdyBILmIoIkVycm9y
+IGluIGZ1bmN0aW9uVHlwZSBvZiB0ZWFyb2ZmIil9LAp2cTpmdW5jdGlvbihhLGIsYyxkKXt2YXIgdD1I
+LkRWCnN3aXRjaChiPy0xOmEpe2Nhc2UgMDpyZXR1cm4gZnVuY3Rpb24oZSxmKXtyZXR1cm4gZnVuY3Rp
+b24oKXtyZXR1cm4gZih0aGlzKVtlXSgpfX0oYyx0KQpjYXNlIDE6cmV0dXJuIGZ1bmN0aW9uKGUsZil7
+cmV0dXJuIGZ1bmN0aW9uKGcpe3JldHVybiBmKHRoaXMpW2VdKGcpfX0oYyx0KQpjYXNlIDI6cmV0dXJu
+IGZ1bmN0aW9uKGUsZil7cmV0dXJuIGZ1bmN0aW9uKGcsaCl7cmV0dXJuIGYodGhpcylbZV0oZyxoKX19
+KGMsdCkKY2FzZSAzOnJldHVybiBmdW5jdGlvbihlLGYpe3JldHVybiBmdW5jdGlvbihnLGgsaSl7cmV0
+dXJuIGYodGhpcylbZV0oZyxoLGkpfX0oYyx0KQpjYXNlIDQ6cmV0dXJuIGZ1bmN0aW9uKGUsZil7cmV0
+dXJuIGZ1bmN0aW9uKGcsaCxpLGope3JldHVybiBmKHRoaXMpW2VdKGcsaCxpLGopfX0oYyx0KQpjYXNl
+IDU6cmV0dXJuIGZ1bmN0aW9uKGUsZil7cmV0dXJuIGZ1bmN0aW9uKGcsaCxpLGosayl7cmV0dXJuIGYo
+dGhpcylbZV0oZyxoLGksaixrKX19KGMsdCkKZGVmYXVsdDpyZXR1cm4gZnVuY3Rpb24oZSxmKXtyZXR1
+cm4gZnVuY3Rpb24oKXtyZXR1cm4gZS5hcHBseShmKHRoaXMpLGFyZ3VtZW50cyl9fShkLHQpfX0sCmJ4
+OmZ1bmN0aW9uKGEsYixjKXt2YXIgdCxzLHIscSxwLG8sbgppZihjKXJldHVybiBILkhmKGEsYikKdD1i
+LiRzdHViTmFtZQpzPWIubGVuZ3RoCnI9YVt0XQpxPWI9PW51bGw/cj09bnVsbDpiPT09cgpwPSFxfHxz
+Pj0yNwppZihwKXJldHVybiBILnZxKHMsIXEsdCxiKQppZihzPT09MCl7cT0kLnlqCmlmKHR5cGVvZiBx
+IT09Im51bWJlciIpcmV0dXJuIHEuaCgpCiQueWo9cSsxCm89InNlbGYiK3EKcmV0dXJuIG5ldyBGdW5j
+dGlvbigicmV0dXJuIGZ1bmN0aW9uKCl7dmFyICIrbysiID0gdGhpcy4iK0guRWooSC5vTigpKSsiO3Jl
+dHVybiAiK28rIi4iK0guRWoodCkrIigpO30iKSgpfW49ImFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6
+Ii5zcGxpdCgiIikuc3BsaWNlKDAscykuam9pbigiLCIpCnE9JC55agppZih0eXBlb2YgcSE9PSJudW1i
+ZXIiKXJldHVybiBxLmgoKQokLnlqPXErMQpuKz1xCnJldHVybiBuZXcgRnVuY3Rpb24oInJldHVybiBm
+dW5jdGlvbigiK24rIil7cmV0dXJuIHRoaXMuIitILkVqKEgub04oKSkrIi4iK0guRWoodCkrIigiK24r
+Iik7fSIpKCl9LApaNDpmdW5jdGlvbihhLGIsYyxkKXt2YXIgdD1ILkRWLHM9SC55Uwpzd2l0Y2goYj8t
+MTphKXtjYXNlIDA6dGhyb3cgSC5iKEguRWYoIkludGVyY2VwdGVkIGZ1bmN0aW9uIHdpdGggbm8gYXJn
+dW1lbnRzLiIpKQpjYXNlIDE6cmV0dXJuIGZ1bmN0aW9uKGUsZixnKXtyZXR1cm4gZnVuY3Rpb24oKXty
+ZXR1cm4gZih0aGlzKVtlXShnKHRoaXMpKX19KGMsdCxzKQpjYXNlIDI6cmV0dXJuIGZ1bmN0aW9uKGUs
+ZixnKXtyZXR1cm4gZnVuY3Rpb24oaCl7cmV0dXJuIGYodGhpcylbZV0oZyh0aGlzKSxoKX19KGMsdCxz
+KQpjYXNlIDM6cmV0dXJuIGZ1bmN0aW9uKGUsZixnKXtyZXR1cm4gZnVuY3Rpb24oaCxpKXtyZXR1cm4g
+Zih0aGlzKVtlXShnKHRoaXMpLGgsaSl9fShjLHQscykKY2FzZSA0OnJldHVybiBmdW5jdGlvbihlLGYs
+Zyl7cmV0dXJuIGZ1bmN0aW9uKGgsaSxqKXtyZXR1cm4gZih0aGlzKVtlXShnKHRoaXMpLGgsaSxqKX19
+KGMsdCxzKQpjYXNlIDU6cmV0dXJuIGZ1bmN0aW9uKGUsZixnKXtyZXR1cm4gZnVuY3Rpb24oaCxpLGos
+ayl7cmV0dXJuIGYodGhpcylbZV0oZyh0aGlzKSxoLGksaixrKX19KGMsdCxzKQpjYXNlIDY6cmV0dXJu
+IGZ1bmN0aW9uKGUsZixnKXtyZXR1cm4gZnVuY3Rpb24oaCxpLGosayxsKXtyZXR1cm4gZih0aGlzKVtl
+XShnKHRoaXMpLGgsaSxqLGssbCl9fShjLHQscykKZGVmYXVsdDpyZXR1cm4gZnVuY3Rpb24oZSxmLGcs
+aCl7cmV0dXJuIGZ1bmN0aW9uKCl7aD1bZyh0aGlzKV0KQXJyYXkucHJvdG90eXBlLnB1c2guYXBwbHko
+aCxhcmd1bWVudHMpCnJldHVybiBlLmFwcGx5KGYodGhpcyksaCl9fShkLHQscyl9fSwKSGY6ZnVuY3Rp
+b24oYSxiKXt2YXIgdCxzLHIscSxwLG8sbj1ILm9OKCksbT0kLlA0CmlmKG09PW51bGwpbT0kLlA0PUgu
+RTIoInJlY2VpdmVyIikKdD1iLiRzdHViTmFtZQpzPWIubGVuZ3RoCnI9YVt0XQpxPWI9PW51bGw/cj09
+bnVsbDpiPT09cgpwPSFxfHxzPj0yOAppZihwKXJldHVybiBILlo0KHMsIXEsdCxiKQppZihzPT09MSl7
+cT0icmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuIitILkVqKG4pKyIuIitILkVqKHQpKyIodGhp
+cy4iK20rIik7IgpwPSQueWoKaWYodHlwZW9mIHAhPT0ibnVtYmVyIilyZXR1cm4gcC5oKCkKJC55aj1w
+KzEKcmV0dXJuIG5ldyBGdW5jdGlvbihxK3ArIn0iKSgpfW89ImFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3
+eHl6Ii5zcGxpdCgiIikuc3BsaWNlKDAscy0xKS5qb2luKCIsIikKcT0icmV0dXJuIGZ1bmN0aW9uKCIr
+bysiKXtyZXR1cm4gdGhpcy4iK0guRWoobikrIi4iK0guRWoodCkrIih0aGlzLiIrbSsiLCAiK28rIik7
+IgpwPSQueWoKaWYodHlwZW9mIHAhPT0ibnVtYmVyIilyZXR1cm4gcC5oKCkKJC55aj1wKzEKcmV0dXJu
+IG5ldyBGdW5jdGlvbihxK3ArIn0iKSgpfSwKS3E6ZnVuY3Rpb24oYSxiLGMsZCxlLGYsZyl7cmV0dXJu
+IEguaUEoYSxiLGMsZCwhIWUsISFmLGcpfSwKVG46ZnVuY3Rpb24oYSxiKXtyZXR1cm4gSC5jRSh2LnR5
+cGVVbml2ZXJzZSxILnooYS5hKSxiKX0sClBXOmZ1bmN0aW9uKGEsYil7cmV0dXJuIEguY0Uodi50eXBl
+VW5pdmVyc2UsSC56KGEuYyksYil9LApEVjpmdW5jdGlvbihhKXtyZXR1cm4gYS5hfSwKeVM6ZnVuY3Rp
+b24oYSl7cmV0dXJuIGEuY30sCm9OOmZ1bmN0aW9uKCl7dmFyIHQ9JC5tSgpyZXR1cm4gdD09bnVsbD8k
+Lm1KPUguRTIoInNlbGYiKTp0fSwKRTI6ZnVuY3Rpb24oYSl7dmFyIHQscyxyLHE9bmV3IEguclQoInNl
+bGYiLCJ0YXJnZXQiLCJyZWNlaXZlciIsIm5hbWUiKSxwPUouRXAoT2JqZWN0LmdldE93blByb3BlcnR5
+TmFtZXMocSksdS56KQpmb3IodD1wLmxlbmd0aCxzPTA7czx0Oysrcyl7cj1wW3NdCmlmKHFbcl09PT1h
+KXJldHVybiByfXRocm93IEguYihQLnhZKCJGaWVsZCBuYW1lICIrYSsiIG5vdCBmb3VuZC4iKSl9LApv
+VDpmdW5jdGlvbihhKXtpZihhPT1udWxsKUguZk8oImJvb2xlYW4gZXhwcmVzc2lvbiBtdXN0IG5vdCBi
+ZSBudWxsIikKcmV0dXJuIGF9LApmTzpmdW5jdGlvbihhKXt0aHJvdyBILmIobmV3IEgua1koYSkpfSwK
+YWc6ZnVuY3Rpb24oYSl7dGhyb3cgSC5iKG5ldyBQLmMoYSkpfSwKRWY6ZnVuY3Rpb24oYSl7cmV0dXJu
+IG5ldyBILkVxKGEpfSwKWWc6ZnVuY3Rpb24oYSl7cmV0dXJuIHYuZ2V0SXNvbGF0ZVRhZyhhKX0sClZN
+OmZ1bmN0aW9uKGEsYil7YVt2LmFycmF5UnRpXT1iCnJldHVybiBhfSwKb1g6ZnVuY3Rpb24oYSl7aWYo
+YT09bnVsbClyZXR1cm4gbnVsbApyZXR1cm4gYS4kdGl9LApJTTpmdW5jdGlvbihhLGIsYyl7cmV0dXJu
+IEguWTkoYVsiJGEiK0guRWooYyldLEgub1goYikpfSwKWTk6ZnVuY3Rpb24oYSxiKXt2YXIgdAppZihh
+PT1udWxsKXJldHVybiBiCnQ9YS5hcHBseShudWxsLGIpCmlmKHQ9PW51bGwpcmV0dXJuIG51bGwKaWYo
+QXJyYXkuaXNBcnJheSh0KSlyZXR1cm4gdAppZih0eXBlb2YgdD09ImZ1bmN0aW9uIilyZXR1cm4gdC5h
+cHBseShudWxsLGIpCnJldHVybiBifSwKSUc6ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBhLmFwcGx5KGIs
+SC5JTShKLmlhKGIpLGIsYykpfSwKaXc6ZnVuY3Rpb24oYSxiLGMpe09iamVjdC5kZWZpbmVQcm9wZXJ0
+eShhLGIse3ZhbHVlOmMsZW51bWVyYWJsZTpmYWxzZSx3cml0YWJsZTp0cnVlLGNvbmZpZ3VyYWJsZTp0
+cnVlfSl9LAp3MzpmdW5jdGlvbihhKXt2YXIgdCxzLHIscSxwLG89SC5oKCQuTkYuJDEoYSkpLG49JC5u
+d1tvXQppZihuIT1udWxsKXtPYmplY3QuZGVmaW5lUHJvcGVydHkoYSx2LmRpc3BhdGNoUHJvcGVydHlO
+YW1lLHt2YWx1ZTpuLGVudW1lcmFibGU6ZmFsc2Usd3JpdGFibGU6dHJ1ZSxjb25maWd1cmFibGU6dHJ1
+ZX0pCnJldHVybiBuLml9dD0kLnZ2W29dCmlmKHQhPW51bGwpcmV0dXJuIHQKcz12LmludGVyY2VwdG9y
+c0J5VGFnW29dCmlmKHM9PW51bGwpe3I9SC5rKCQuVFguJDIoYSxvKSkKaWYociE9bnVsbCl7bj0kLm53
+W3JdCmlmKG4hPW51bGwpe09iamVjdC5kZWZpbmVQcm9wZXJ0eShhLHYuZGlzcGF0Y2hQcm9wZXJ0eU5h
+bWUse3ZhbHVlOm4sZW51bWVyYWJsZTpmYWxzZSx3cml0YWJsZTp0cnVlLGNvbmZpZ3VyYWJsZTp0cnVl
+fSkKcmV0dXJuIG4uaX10PSQudnZbcl0KaWYodCE9bnVsbClyZXR1cm4gdApzPXYuaW50ZXJjZXB0b3Jz
+QnlUYWdbcl0Kbz1yfX1pZihzPT1udWxsKXJldHVybiBudWxsCnQ9cy5wcm90b3R5cGUKcT1vWzBdCmlm
+KHE9PT0iISIpe249SC5WYSh0KQokLm53W29dPW4KT2JqZWN0LmRlZmluZVByb3BlcnR5KGEsdi5kaXNw
+YXRjaFByb3BlcnR5TmFtZSx7dmFsdWU6bixlbnVtZXJhYmxlOmZhbHNlLHdyaXRhYmxlOnRydWUsY29u
+ZmlndXJhYmxlOnRydWV9KQpyZXR1cm4gbi5pfWlmKHE9PT0ifiIpeyQudnZbb109dApyZXR1cm4gdH1p
+ZihxPT09Ii0iKXtwPUguVmEodCkKT2JqZWN0LmRlZmluZVByb3BlcnR5KE9iamVjdC5nZXRQcm90b3R5
+cGVPZihhKSx2LmRpc3BhdGNoUHJvcGVydHlOYW1lLHt2YWx1ZTpwLGVudW1lcmFibGU6ZmFsc2Usd3Jp
+dGFibGU6dHJ1ZSxjb25maWd1cmFibGU6dHJ1ZX0pCnJldHVybiBwLml9aWYocT09PSIrIilyZXR1cm4g
+SC5MYyhhLHQpCmlmKHE9PT0iKiIpdGhyb3cgSC5iKFAuU1kobykpCmlmKHYubGVhZlRhZ3Nbb109PT10
+cnVlKXtwPUguVmEodCkKT2JqZWN0LmRlZmluZVByb3BlcnR5KE9iamVjdC5nZXRQcm90b3R5cGVPZihh
+KSx2LmRpc3BhdGNoUHJvcGVydHlOYW1lLHt2YWx1ZTpwLGVudW1lcmFibGU6ZmFsc2Usd3JpdGFibGU6
+dHJ1ZSxjb25maWd1cmFibGU6dHJ1ZX0pCnJldHVybiBwLml9ZWxzZSByZXR1cm4gSC5MYyhhLHQpfSwK
+TGM6ZnVuY3Rpb24oYSxiKXt2YXIgdD1PYmplY3QuZ2V0UHJvdG90eXBlT2YoYSkKT2JqZWN0LmRlZmlu
+ZVByb3BlcnR5KHQsdi5kaXNwYXRjaFByb3BlcnR5TmFtZSx7dmFsdWU6Si5RdShiLHQsbnVsbCxudWxs
+KSxlbnVtZXJhYmxlOmZhbHNlLHdyaXRhYmxlOnRydWUsY29uZmlndXJhYmxlOnRydWV9KQpyZXR1cm4g
+Yn0sClZhOmZ1bmN0aW9uKGEpe3JldHVybiBKLlF1KGEsITEsbnVsbCwhIWEuJGlYail9LApWRjpmdW5j
+dGlvbihhLGIsYyl7dmFyIHQ9Yi5wcm90b3R5cGUKaWYodi5sZWFmVGFnc1thXT09PXRydWUpcmV0dXJu
+IEguVmEodCkKZWxzZSByZXR1cm4gSi5RdSh0LGMsbnVsbCxudWxsKX0sClhEOmZ1bmN0aW9uKCl7aWYo
+ITA9PT0kLkJ2KXJldHVybgokLkJ2PSEwCkguWjEoKX0sCloxOmZ1bmN0aW9uKCl7dmFyIHQscyxyLHEs
+cCxvLG4sbQokLm53PU9iamVjdC5jcmVhdGUobnVsbCkKJC52dj1PYmplY3QuY3JlYXRlKG51bGwpCkgu
+a08oKQp0PXYuaW50ZXJjZXB0b3JzQnlUYWcKcz1PYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyh0KQpp
+Zih0eXBlb2Ygd2luZG93IT0idW5kZWZpbmVkIil7d2luZG93CnI9ZnVuY3Rpb24oKXt9CmZvcihxPTA7
+cTxzLmxlbmd0aDsrK3Epe3A9c1txXQpvPSQueDcuJDEocCkKaWYobyE9bnVsbCl7bj1ILlZGKHAsdFtw
+XSxvKQppZihuIT1udWxsKXtPYmplY3QuZGVmaW5lUHJvcGVydHkobyx2LmRpc3BhdGNoUHJvcGVydHlO
+YW1lLHt2YWx1ZTpuLGVudW1lcmFibGU6ZmFsc2Usd3JpdGFibGU6dHJ1ZSxjb25maWd1cmFibGU6dHJ1
+ZX0pCnIucHJvdG90eXBlPW99fX19Zm9yKHE9MDtxPHMubGVuZ3RoOysrcSl7cD1zW3FdCmlmKC9eW0Et
+WmEtel9dLy50ZXN0KHApKXttPXRbcF0KdFsiISIrcF09bQp0WyJ+IitwXT1tCnRbIi0iK3BdPW0KdFsi
+KyIrcF09bQp0WyIqIitwXT1tfX19LAprTzpmdW5jdGlvbigpe3ZhciB0LHMscixxLHAsbyxuPUMuWXEo
+KQpuPUgudWQoQy5LVSxILnVkKEMuZlEsSC51ZChDLmk3LEgudWQoQy5pNyxILnVkKEMueGksSC51ZChD
+LmRrLEgudWQoQy53YihDLk80KSxuKSkpKSkpKQppZih0eXBlb2YgZGFydE5hdGl2ZURpc3BhdGNoSG9v
+a3NUcmFuc2Zvcm1lciE9InVuZGVmaW5lZCIpe3Q9ZGFydE5hdGl2ZURpc3BhdGNoSG9va3NUcmFuc2Zv
+cm1lcgppZih0eXBlb2YgdD09ImZ1bmN0aW9uIil0PVt0XQppZih0LmNvbnN0cnVjdG9yPT1BcnJheSlm
+b3Iocz0wO3M8dC5sZW5ndGg7KytzKXtyPXRbc10KaWYodHlwZW9mIHI9PSJmdW5jdGlvbiIpbj1yKG4p
+fHxufX1xPW4uZ2V0VGFnCnA9bi5nZXRVbmtub3duVGFnCm89bi5wcm90b3R5cGVGb3JUYWcKJC5ORj1u
+ZXcgSC5kQyhxKQokLlRYPW5ldyBILndOKHApCiQueDc9bmV3IEguVlgobyl9LAp1ZDpmdW5jdGlvbihh
+LGIpe3JldHVybiBhKGIpfHxifSwKdjQ6ZnVuY3Rpb24oYSxiLGMsZCxlLGYpe3ZhciB0PWI/Im0iOiIi
+LHM9Yz8iIjoiaSIscj1kPyJ1IjoiIixxPWU/InMiOiIiLHA9Zj8iZyI6IiIsbz1mdW5jdGlvbihnLGgp
+e3RyeXtyZXR1cm4gbmV3IFJlZ0V4cChnLGgpfWNhdGNoKG4pe3JldHVybiBufX0oYSx0K3MrcitxK3Ap
+CmlmKG8gaW5zdGFuY2VvZiBSZWdFeHApcmV0dXJuIG8KdGhyb3cgSC5iKFAucnIoIklsbGVnYWwgUmVn
+RXhwIHBhdHRlcm4gKCIrU3RyaW5nKG8pKyIpIixhLG51bGwpKX0sCm0yOmZ1bmN0aW9uKGEsYixjKXt2
+YXIgdAppZih0eXBlb2YgYj09InN0cmluZyIpcmV0dXJuIGEuaW5kZXhPZihiLGMpPj0wCmVsc2UgaWYo
+YiBpbnN0YW5jZW9mIEguVlIpe3Q9Qy54Qi5HKGEsYykKcmV0dXJuIGIuYi50ZXN0KHQpfWVsc2V7dD1K
+LkZMKGIsQy54Qi5HKGEsYykpCnJldHVybiF0LmdsMCh0KX19LApBNDpmdW5jdGlvbihhKXtpZihhLmlu
+ZGV4T2YoIiQiLDApPj0wKXJldHVybiBhLnJlcGxhY2UoL1wkL2csIiQkJCQiKQpyZXR1cm4gYX0sCmVB
+OmZ1bmN0aW9uKGEpe2lmKC9bW1xde30oKSorPy5cXF4kfF0vLnRlc3QoYSkpcmV0dXJuIGEucmVwbGFj
+ZSgvW1tcXXt9KCkqKz8uXFxeJHxdL2csIlxcJCYiKQpyZXR1cm4gYX0sCnlzOmZ1bmN0aW9uKGEsYixj
+KXt2YXIgdD1ILm5NKGEsYixjKQpyZXR1cm4gdH0sCm5NOmZ1bmN0aW9uKGEsYixjKXt2YXIgdCxzLHIs
+cQppZihiPT09IiIpe2lmKGE9PT0iIilyZXR1cm4gYwp0PWEubGVuZ3RoCnM9IiIrYwpmb3Iocj0wO3I8
+dDsrK3Ipcz1zK2Fbcl0rYwpyZXR1cm4gcy5jaGFyQ29kZUF0KDApPT0wP3M6c31xPWEuaW5kZXhPZihi
+LDApCmlmKHE8MClyZXR1cm4gYQppZihhLmxlbmd0aDw1MDB8fGMuaW5kZXhPZigiJCIsMCk+PTApcmV0
+dXJuIGEuc3BsaXQoYikuam9pbihjKQpyZXR1cm4gYS5yZXBsYWNlKG5ldyBSZWdFeHAoSC5lQShiKSwn
+ZycpLEguQTQoYykpfSwKUEQ6ZnVuY3Rpb24gUEQoYSxiKXt0aGlzLmE9YQp0aGlzLiR0aT1ifSwKV1U6
+ZnVuY3Rpb24gV1UoKXt9LApMUDpmdW5jdGlvbiBMUChhLGIsYyxkKXt2YXIgXz10aGlzCl8uYT1hCl8u
+Yj1iCl8uYz1jCl8uJHRpPWR9LApYUjpmdW5jdGlvbiBYUihhLGIpe3RoaXMuYT1hCnRoaXMuJHRpPWJ9
+LApMSTpmdW5jdGlvbiBMSShhLGIsYyxkLGUpe3ZhciBfPXRoaXMKXy5hPWEKXy5jPWIKXy5kPWMKXy5l
+PWQKXy5mPWV9LApDajpmdW5jdGlvbiBDaihhLGIsYyl7dGhpcy5hPWEKdGhpcy5iPWIKdGhpcy5jPWN9
+LApmOTpmdW5jdGlvbiBmOShhLGIsYyxkLGUsZil7dmFyIF89dGhpcwpfLmE9YQpfLmI9YgpfLmM9Ywpf
+LmQ9ZApfLmU9ZQpfLmY9Zn0sClcwOmZ1bmN0aW9uIFcwKGEsYil7dGhpcy5hPWEKdGhpcy5iPWJ9LAph
+ejpmdW5jdGlvbiBheihhLGIsYyl7dGhpcy5hPWEKdGhpcy5iPWIKdGhpcy5jPWN9LAp2VjpmdW5jdGlv
+biB2VihhKXt0aGlzLmE9YX0sCmJxOmZ1bmN0aW9uIGJxKGEsYil7dGhpcy5hPWEKdGhpcy5iPWJ9LApB
+bTpmdW5jdGlvbiBBbShhKXt0aGlzLmE9YX0sClhPOmZ1bmN0aW9uIFhPKGEpe3RoaXMuYT1hCnRoaXMu
+Yj1udWxsfSwKdjpmdW5jdGlvbiB2KCl7fSwKbGM6ZnVuY3Rpb24gbGMoKXt9LAp6eDpmdW5jdGlvbiB6
+eCgpe30sCnJUOmZ1bmN0aW9uIHJUKGEsYixjLGQpe3ZhciBfPXRoaXMKXy5hPWEKXy5iPWIKXy5jPWMK
+Xy5kPWR9LApFcTpmdW5jdGlvbiBFcShhKXt0aGlzLmE9YX0sCmtZOmZ1bmN0aW9uIGtZKGEpe3RoaXMu
+YT1hfSwKTjU6ZnVuY3Rpb24gTjUoYSl7dmFyIF89dGhpcwpfLmE9MApfLmY9Xy5lPV8uZD1fLmM9Xy5i
+PW51bGwKXy5yPTAKXy4kdGk9YX0sCmRiOmZ1bmN0aW9uIGRiKGEsYil7dmFyIF89dGhpcwpfLmE9YQpf
+LmI9YgpfLmQ9Xy5jPW51bGx9LAppNTpmdW5jdGlvbiBpNShhLGIpe3RoaXMuYT1hCnRoaXMuJHRpPWJ9
+LApONjpmdW5jdGlvbiBONihhLGIsYyl7dmFyIF89dGhpcwpfLmE9YQpfLmI9YgpfLmQ9Xy5jPW51bGwK
+Xy4kdGk9Y30sCmRDOmZ1bmN0aW9uIGRDKGEpe3RoaXMuYT1hfSwKd046ZnVuY3Rpb24gd04oYSl7dGhp
+cy5hPWF9LApWWDpmdW5jdGlvbiBWWChhKXt0aGlzLmE9YX0sClZSOmZ1bmN0aW9uIFZSKGEsYil7dmFy
+IF89dGhpcwpfLmE9YQpfLmI9YgpfLmQ9Xy5jPW51bGx9LApFSzpmdW5jdGlvbiBFSyhhKXt0aGlzLmI9
+YX0sCktXOmZ1bmN0aW9uIEtXKGEsYixjKXt0aGlzLmE9YQp0aGlzLmI9Ygp0aGlzLmM9Y30sClBiOmZ1
+bmN0aW9uIFBiKGEsYixjKXt2YXIgXz10aGlzCl8uYT1hCl8uYj1iCl8uYz1jCl8uZD1udWxsfSwKdFE6
+ZnVuY3Rpb24gdFEoYSxiKXt0aGlzLmE9YQp0aGlzLmM9Yn0sCnVuOmZ1bmN0aW9uIHVuKGEsYixjKXt0
+aGlzLmE9YQp0aGlzLmI9Ygp0aGlzLmM9Y30sClNkOmZ1bmN0aW9uIFNkKGEsYixjKXt2YXIgXz10aGlz
+Cl8uYT1hCl8uYj1iCl8uYz1jCl8uZD1udWxsfSwKWEY6ZnVuY3Rpb24oYSl7cmV0dXJuIGF9LApvZDpm
+dW5jdGlvbihhLGIsYyl7aWYoYT4+PjAhPT1hfHxhPj1jKXRocm93IEguYihILkhZKGIsYSkpfSwKck06
+ZnVuY3Rpb24oYSxiLGMpe3ZhciB0CmlmKCEoYT4+PjAhPT1hKSl0PWI+Pj4wIT09Ynx8YT5ifHxiPmMK
+ZWxzZSB0PSEwCmlmKHQpdGhyb3cgSC5iKEguYXUoYSxiLGMpKQpyZXR1cm4gYn0sCkVUOmZ1bmN0aW9u
+IEVUKCl7fSwKYjA6ZnVuY3Rpb24gYjAoKXt9LApEZzpmdW5jdGlvbiBEZygpe30sClBnOmZ1bmN0aW9u
+IFBnKCl7fSwKeGo6ZnVuY3Rpb24geGooKXt9LApkRTpmdW5jdGlvbiBkRSgpe30sClpBOmZ1bmN0aW9u
+IFpBKCl7fSwKZFQ6ZnVuY3Rpb24gZFQoKXt9LApQcTpmdW5jdGlvbiBQcSgpe30sCmVFOmZ1bmN0aW9u
+IGVFKCl7fSwKVjY6ZnVuY3Rpb24gVjYoKXt9LApSRzpmdW5jdGlvbiBSRygpe30sClZQOmZ1bmN0aW9u
+IFZQKCl7fSwKV0I6ZnVuY3Rpb24gV0IoKXt9LApaRzpmdW5jdGlvbiBaRygpe30sCmN6OmZ1bmN0aW9u
+KGEsYil7dmFyIHQ9Yi5jCnJldHVybiB0PT1udWxsP2IuYz1ILkIoYSxiLnosITApOnR9LAp4WjpmdW5j
+dGlvbihhLGIpe3ZhciB0PWIuYwpyZXR1cm4gdD09bnVsbD9iLmM9SC5KKGEsImI4IixbYi56XSk6dH0s
+ClExOmZ1bmN0aW9uKGEpe3ZhciB0PWEueQppZih0PT09Nnx8dD09PTd8fHQ9PT04KXJldHVybiBILlEx
+KGEueikKcmV0dXJuIHQ9PT0xMXx8dD09PTEyfSwKbUQ6ZnVuY3Rpb24oYSl7cmV0dXJuIGEuY3l9LApO
+MDpmdW5jdGlvbihhKXtyZXR1cm4gSC5FKHYudHlwZVVuaXZlcnNlLGEsITEpfSwKUEw6ZnVuY3Rpb24o
+YSxiLGMsYTApe3ZhciB0LHMscixxLHAsbyxuLG0sbCxrLGosaSxoLGcsZixlLGQ9Yi55CnN3aXRjaChk
+KXtjYXNlIDU6Y2FzZSAxOmNhc2UgMjpjYXNlIDM6Y2FzZSA0OnJldHVybiBiCmNhc2UgNjp0PWIuegpz
+PUguUEwoYSx0LGMsYTApCmlmKHM9PT10KXJldHVybiBiCnJldHVybiBILkMoYSxzLCEwKQpjYXNlIDc6
+dD1iLnoKcz1ILlBMKGEsdCxjLGEwKQppZihzPT09dClyZXR1cm4gYgpyZXR1cm4gSC5CKGEscywhMCkK
+Y2FzZSA4OnQ9Yi56CnM9SC5QTChhLHQsYyxhMCkKaWYocz09PXQpcmV0dXJuIGIKcmV0dXJuIEguZihh
+LHMsITApCmNhc2UgOTpyPWIuUQpxPUguYlooYSxyLGMsYTApCmlmKHE9PT1yKXJldHVybiBiCnJldHVy
+biBILkooYSxiLnoscSkKY2FzZSAxMDpwPWIuegpvPUguUEwoYSxwLGMsYTApCm49Yi5RCm09SC5iWihh
+LG4sYyxhMCkKaWYobz09PXAmJm09PT1uKXJldHVybiBiCnJldHVybiBILmEoYSxvLG0pCmNhc2UgMTE6
+bD1iLnoKaz1ILlBMKGEsbCxjLGEwKQpqPWIuUQppPUgucVQoYSxqLGMsYTApCmlmKGs9PT1sJiZpPT09
+ailyZXR1cm4gYgpyZXR1cm4gSC5kKGEsayxpKQpjYXNlIDEyOmg9Yi5RCmEwKz1oLmxlbmd0aApnPUgu
+YlooYSxoLGMsYTApCnA9Yi56Cm89SC5QTChhLHAsYyxhMCkKaWYoZz09PWgmJm89PT1wKXJldHVybiBi
+CnJldHVybiBILkQoYSxvLGcsITApCmNhc2UgMTM6Zj1iLnoKaWYoZjxhMClyZXR1cm4gYgplPWNbZi1h
+MF0KaWYoZT09bnVsbClyZXR1cm4gYgpyZXR1cm4gZQpkZWZhdWx0OnRocm93IEguYihQLmhWKCJBdHRl
+bXB0ZWQgdG8gc3Vic3RpdHV0ZSB1bmV4cGVjdGVkIFJUSSBraW5kICIrZCkpfX0sCmJaOmZ1bmN0aW9u
+KGEsYixjLGQpe3ZhciB0LHMscixxLHA9Yi5sZW5ndGgsbz1bXQpmb3IodD0hMSxzPTA7czxwOysrcyl7
+cj1iW3NdCnE9SC5QTChhLHIsYyxkKQppZihxIT09cil0PSEwCm8ucHVzaChxKX1yZXR1cm4gdD9vOmJ9
+LAp2TzpmdW5jdGlvbihhLGIsYyxkKXt2YXIgdCxzLHIscSxwLG89Yi5sZW5ndGgsbj1bXQpmb3IodD0h
+MSxzPTA7czxvO3MrPTIpe3I9YltzXQpxPWJbcysxXQpwPUguUEwoYSxxLGMsZCkKaWYocCE9PXEpdD0h
+MApuLnB1c2gocikKbi5wdXNoKHApfXJldHVybiB0P246Yn0sCnFUOmZ1bmN0aW9uKGEsYixjLGQpe3Zh
+ciB0LHM9Yi5hLHI9SC5iWihhLHMsYyxkKSxxPWIuYixwPUguYlooYSxxLGMsZCksbz1iLmMsbj1ILnZP
+KGEsbyxjLGQpCmlmKHI9PT1zJiZwPT09cSYmbj09PW8pcmV0dXJuIGIKdD1uZXcgSC5HKCkKdC5hPXIK
+dC5iPXAKdC5jPW4KcmV0dXJuIHR9LApKUzpmdW5jdGlvbihhKXt2YXIgdD1hLiRTCmlmKHQhPW51bGwp
+e2lmKHR5cGVvZiB0PT0ibnVtYmVyIilyZXR1cm4gSC5CcCh0KQpyZXR1cm4gYS4kUygpfXJldHVybiBu
+dWxsfSwKVWU6ZnVuY3Rpb24oYSxiKXt2YXIgdAppZihILlExKGIpKWlmKGEgaW5zdGFuY2VvZiBILnYp
+e3Q9SC5KUyhhKQppZih0IT1udWxsKXJldHVybiB0fXJldHVybiBILnooYSl9LAp6OmZ1bmN0aW9uKGEp
+e3ZhciB0CmlmKGEgaW5zdGFuY2VvZiBQLk1oKXt0PWEuJHRpCnJldHVybiB0IT1udWxsP3Q6SC5WVShh
+KX1pZihBcnJheS5pc0FycmF5KGEpKXJldHVybiBILnQ2KGEpCnJldHVybiBILlZVKEouaWEoYSkpfSwK
+dDY6ZnVuY3Rpb24oYSl7dmFyIHQ9YVt2LmFycmF5UnRpXSxzPXUuYgppZih0PT1udWxsKXJldHVybiBz
+CmlmKHQuY29uc3RydWN0b3IhPT1zLmNvbnN0cnVjdG9yKXJldHVybiBzCnJldHVybiB0fSwKTGg6ZnVu
+Y3Rpb24oYSl7dmFyIHQ9YS4kdGkKcmV0dXJuIHQhPW51bGw/dDpILlZVKGEpfSwKVlU6ZnVuY3Rpb24o
+YSl7dmFyIHQ9YS5jb25zdHJ1Y3RvcixzPXQuJGNjYWNoZQppZihzIT1udWxsKXJldHVybiBzCnJldHVy
+biBILnI5KGEsdCl9LApyOTpmdW5jdGlvbihhLGIpe3ZhciB0PWEgaW5zdGFuY2VvZiBILnY/YS5fX3By
+b3RvX18uX19wcm90b19fLmNvbnN0cnVjdG9yOmIscz1ILmFpKHYudHlwZVVuaXZlcnNlLHQubmFtZSkK
+Yi4kY2NhY2hlPXMKcmV0dXJuIHN9LApCcDpmdW5jdGlvbihhKXt2YXIgdCxzLHIKSC51UChhKQp0PXYu
+dHlwZXMKcz10W2FdCmlmKHR5cGVvZiBzPT0ic3RyaW5nIil7cj1ILkUodi50eXBlVW5pdmVyc2Uscywh
+MSkKdFthXT1yCnJldHVybiByfXJldHVybiBzfSwKSko6ZnVuY3Rpb24oYSl7dmFyIHQscyxyLHE9dGhp
+cwppZihxPT09dS5LKXJldHVybiBILlJFKHEsYSxILmtlKQppZihILkE4KHEpfHxxPT09dS5fKXJldHVy
+biBILlJFKHEsYSxILkl3KQp0PXEueQpzPXQ9PT02P3EuejpxCmlmKHM9PT11LlMpcj1ILm9rCmVsc2Ug
+aWYocz09PXUuZ1J8fHM9PT11LmRpKXI9SC5LSAplbHNlIGlmKHM9PT11Lk4pcj1ILk1NCmVsc2Ugcj1z
+PT09dS55P0gubDpudWxsCmlmKHIhPW51bGwpcmV0dXJuIEguUkUocSxhLHIpCmlmKHMueT09PTkpe3Q9
+cy56CmlmKHMuUS5ldmVyeShILmNjKSl7cS5yPSIkaSIrdApyZXR1cm4gSC5SRShxLGEsSC50NCl9fWVs
+c2UgaWYodD09PTcpcmV0dXJuIEguUkUocSxhLEguQVEpCnJldHVybiBILlJFKHEsYSxILllPKX0sClJF
+OmZ1bmN0aW9uKGEsYixjKXthLmI9YwpyZXR1cm4gYS5iKGIpfSwKQXU6ZnVuY3Rpb24oYSl7dmFyIHQs
+cz10aGlzCkguT3oKaWYoSC5BOChzKXx8cz09PXUuXyl0PUguaG4KZWxzZSBpZihzPT09dS5LKXQ9SC5U
+aQplbHNlIHQ9SC5sNApzLmE9dApyZXR1cm4gcy5hKGEpfSwKUWo6ZnVuY3Rpb24oYSl7dmFyIHQ9YS55
+CnJldHVybiBILkE4KGEpfHxhPT09dS5ffHxhPT09dS5hd3x8dD09PTd8fGE9PT11LlB9LApZTzpmdW5j
+dGlvbihhKXt2YXIgdD10aGlzCmlmKGE9PW51bGwpcmV0dXJuIEguUWoodCkKcmV0dXJuIEguV2Uodi50
+eXBlVW5pdmVyc2UsSC5VZShhLHQpLG51bGwsdCxudWxsKX0sCkFROmZ1bmN0aW9uKGEpe2lmKGE9PW51
+bGwpcmV0dXJuITAKcmV0dXJuIHRoaXMuei5iKGEpfSwKdDQ6ZnVuY3Rpb24oYSl7dmFyIHQ9dGhpcyxz
+PXQucgppZihhIGluc3RhbmNlb2YgUC5NaClyZXR1cm4hIWFbc10KcmV0dXJuISFKLmlhKGEpW3NdfSwK
+T3o6ZnVuY3Rpb24oYSl7dmFyIHQ9dGhpcwppZihhPT1udWxsKXJldHVybiBhCmVsc2UgaWYodC5iKGEp
+KXJldHVybiBhCkgubTQoYSx0KX0sCmw0OmZ1bmN0aW9uKGEpe3ZhciB0PXRoaXMKaWYoYT09bnVsbCly
+ZXR1cm4gYQppZih0LmIoYSkpcmV0dXJuIGEKSC5tNChhLHQpfSwKbTQ6ZnVuY3Rpb24oYSxiKXt0aHJv
+dyBILmIoSC5aYyhILldLKGEsSC5VZShhLGIpLEguZG0oYixudWxsKSkpKX0sCkRoOmZ1bmN0aW9uKGEs
+YixjLGQpe3ZhciB0PW51bGwKaWYoSC5XZSh2LnR5cGVVbml2ZXJzZSxhLHQsYix0KSlyZXR1cm4gYQp0
+aHJvdyBILmIoSC5aYygiVGhlIHR5cGUgYXJndW1lbnQgJyIrSC5FaihILmRtKGEsdCkpKyInIGlzIG5v
+dCBhIHN1YnR5cGUgb2YgdGhlIHR5cGUgdmFyaWFibGUgYm91bmQgJyIrSC5FaihILmRtKGIsdCkpKyIn
+IG9mIHR5cGUgdmFyaWFibGUgJyIrSC5FaihjKSsiJyBpbiAnIitILkVqKGQpKyInLiIpKX0sCldLOmZ1
+bmN0aW9uKGEsYixjKXt2YXIgdD1QLnAoYSkscz1ILmRtKGI9PW51bGw/SC56KGEpOmIsbnVsbCkKcmV0
+dXJuIHQrIjogdHlwZSAnIitILkVqKHMpKyInIGlzIG5vdCBhIHN1YnR5cGUgb2YgdHlwZSAnIitILkVq
+KGMpKyInIn0sClpjOmZ1bmN0aW9uKGEpe3JldHVybiBuZXcgSC5pTSgiVHlwZUVycm9yOiAiK2EpfSwK
+cTpmdW5jdGlvbihhLGIpe3JldHVybiBuZXcgSC5pTSgiVHlwZUVycm9yOiAiK0guV0soYSxudWxsLGIp
+KX0sCmtlOmZ1bmN0aW9uKGEpe3JldHVybiBhIT1udWxsfSwKVGk6ZnVuY3Rpb24oYSl7cmV0dXJuIGF9
+LApJdzpmdW5jdGlvbihhKXtyZXR1cm4hMH0sCmhuOmZ1bmN0aW9uKGEpe3JldHVybiBhfSwKbDpmdW5j
+dGlvbihhKXtyZXR1cm4hMD09PWF8fCExPT09YX0sCnA4OmZ1bmN0aW9uKGEpe2lmKCEwPT09YXx8ITE9
+PT1hKXJldHVybiBhCnRocm93IEguYihILnEoYSwiYm9vbCIpKX0sCnk4OmZ1bmN0aW9uKGEpe2lmKCEw
+PT09YXx8ITE9PT1hKXJldHVybiBhCmlmKGE9PW51bGwpcmV0dXJuIGEKdGhyb3cgSC5iKEgucShhLCJi
+b29sIikpfSwKQlI6ZnVuY3Rpb24oYSl7aWYoITA9PT1hfHwhMT09PWEpcmV0dXJuIGEKaWYoYT09bnVs
+bClyZXR1cm4gYQp0aHJvdyBILmIoSC5xKGEsImJvb2w/IikpfSwKRkc6ZnVuY3Rpb24oYSl7aWYodHlw
+ZW9mIGE9PSJudW1iZXIiKXJldHVybiBhCnRocm93IEguYihILnEoYSwiZG91YmxlIikpfSwKR0g6ZnVu
+Y3Rpb24oYSl7aWYodHlwZW9mIGE9PSJudW1iZXIiKXJldHVybiBhCmlmKGE9PW51bGwpcmV0dXJuIGEK
+dGhyb3cgSC5iKEgucShhLCJkb3VibGUiKSl9LApRazpmdW5jdGlvbihhKXtpZih0eXBlb2YgYT09Im51
+bWJlciIpcmV0dXJuIGEKaWYoYT09bnVsbClyZXR1cm4gYQp0aHJvdyBILmIoSC5xKGEsImRvdWJsZT8i
+KSl9LApvazpmdW5jdGlvbihhKXtyZXR1cm4gdHlwZW9mIGE9PSJudW1iZXIiJiZNYXRoLmZsb29yKGEp
+PT09YX0sCklaOmZ1bmN0aW9uKGEpe2lmKHR5cGVvZiBhPT0ibnVtYmVyIiYmTWF0aC5mbG9vcihhKT09
+PWEpcmV0dXJuIGEKdGhyb3cgSC5iKEgucShhLCJpbnQiKSl9LAp1UDpmdW5jdGlvbihhKXtpZih0eXBl
+b2YgYT09Im51bWJlciImJk1hdGguZmxvb3IoYSk9PT1hKXJldHVybiBhCmlmKGE9PW51bGwpcmV0dXJu
+IGEKdGhyb3cgSC5iKEgucShhLCJpbnQiKSl9LApVYzpmdW5jdGlvbihhKXtpZih0eXBlb2YgYT09Im51
+bWJlciImJk1hdGguZmxvb3IoYSk9PT1hKXJldHVybiBhCmlmKGE9PW51bGwpcmV0dXJuIGEKdGhyb3cg
+SC5iKEgucShhLCJpbnQ/IikpfSwKS0g6ZnVuY3Rpb24oYSl7cmV0dXJuIHR5cGVvZiBhPT0ibnVtYmVy
+In0sCno1OmZ1bmN0aW9uKGEpe2lmKHR5cGVvZiBhPT0ibnVtYmVyIilyZXR1cm4gYQp0aHJvdyBILmIo
+SC5xKGEsIm51bSIpKX0sCm9JOmZ1bmN0aW9uKGEpe2lmKHR5cGVvZiBhPT0ibnVtYmVyIilyZXR1cm4g
+YQppZihhPT1udWxsKXJldHVybiBhCnRocm93IEguYihILnEoYSwibnVtIikpfSwKY1U6ZnVuY3Rpb24o
+YSl7aWYodHlwZW9mIGE9PSJudW1iZXIiKXJldHVybiBhCmlmKGE9PW51bGwpcmV0dXJuIGEKdGhyb3cg
+SC5iKEgucShhLCJudW0/IikpfSwKTU06ZnVuY3Rpb24oYSl7cmV0dXJuIHR5cGVvZiBhPT0ic3RyaW5n
+In0sCkJ0OmZ1bmN0aW9uKGEpe2lmKHR5cGVvZiBhPT0ic3RyaW5nIilyZXR1cm4gYQp0aHJvdyBILmIo
+SC5xKGEsIlN0cmluZyIpKX0sCmg6ZnVuY3Rpb24oYSl7aWYodHlwZW9mIGE9PSJzdHJpbmciKXJldHVy
+biBhCmlmKGE9PW51bGwpcmV0dXJuIGEKdGhyb3cgSC5iKEgucShhLCJTdHJpbmciKSl9LAprOmZ1bmN0
+aW9uKGEpe2lmKHR5cGVvZiBhPT0ic3RyaW5nIilyZXR1cm4gYQppZihhPT1udWxsKXJldHVybiBhCnRo
+cm93IEguYihILnEoYSwiU3RyaW5nPyIpKX0sCmlvOmZ1bmN0aW9uKGEsYil7dmFyIHQscyxyCmZvcih0
+PSIiLHM9IiIscj0wO3I8YS5sZW5ndGg7KytyLHM9IiwgIil0Kz1DLnhCLmgocyxILmRtKGFbcl0sYikp
+CnJldHVybiB0fSwKYkk6ZnVuY3Rpb24oYTIsYTMsYTQpe3ZhciB0LHMscixxLHAsbyxuLG0sbCxrLGos
+aSxoLGcsZixlLGQsYyxiLGEsYTAsYTE9IiwgIgppZihhNCE9bnVsbCl7dD1hNC5sZW5ndGgKaWYoYTM9
+PW51bGwpe2EzPUguVk0oW10sdS5zKQpzPW51bGx9ZWxzZSBzPWEzLmxlbmd0aApyPWEzLmxlbmd0aApm
+b3IocT10O3E+MDstLXEpQy5ObS5pKGEzLCJUIisocitxKSkKZm9yKHA9dS5fLG89dS5LLG49IjwiLG09
+IiIscT0wO3E8dDsrK3EsbT1hMSl7bis9bQpsPWEzLmxlbmd0aAprPWwtMS1xCmlmKGs8MClyZXR1cm4g
+SC5PSChhMyxrKQpuPUMueEIuaChuLGEzW2tdKQpqPWE0W3FdCmlmKCEoSC5BOChqKXx8aj09PXApKWw9
+IShqPT09bykKZWxzZSBsPSExCmlmKGwpbis9Qy54Qi5oKCIgZXh0ZW5kcyAiLEguZG0oaixhMykpfW4r
+PSI+In1lbHNle249IiIKcz1udWxsfXA9YTIuegppPWEyLlEKaD1pLmEKZz1oLmxlbmd0aApmPWkuYgpl
+PWYubGVuZ3RoCmQ9aS5jCmM9ZC5sZW5ndGgKYj1ILmRtKHAsYTMpCmZvcihhPSIiLGEwPSIiLHE9MDtx
+PGc7KytxLGEwPWExKWErPUMueEIuaChhMCxILmRtKGhbcV0sYTMpKQppZihlPjApe2ErPWEwKyJbIgpm
+b3IoYTA9IiIscT0wO3E8ZTsrK3EsYTA9YTEpYSs9Qy54Qi5oKGEwLEguZG0oZltxXSxhMykpCmErPSJd
+In1pZihjPjApe2ErPWEwKyJ7Igpmb3IoYTA9IiIscT0wO3E8YztxKz0yLGEwPWExKWErPUMueEIuaChh
+MCxILmRtKGRbcSsxXSxhMykpKyIgIitkW3FdCmErPSJ9In1pZihzIT1udWxsKXthMy50b1N0cmluZwph
+My5sZW5ndGg9c31yZXR1cm4gbisiKCIrYSsiKSA9PiAiK0guRWooYil9LApkbTpmdW5jdGlvbihhLGIp
+e3ZhciB0LHMscixxLHAsbyxuLG09YS55CmlmKG09PT01KXJldHVybiJlcmFzZWQiCmlmKG09PT0yKXJl
+dHVybiJkeW5hbWljIgppZihtPT09MylyZXR1cm4idm9pZCIKaWYobT09PTEpcmV0dXJuIk5ldmVyIgpp
+ZihtPT09NClyZXR1cm4iYW55IgppZihtPT09Nil7dD1ILmRtKGEueixiKQpyZXR1cm4gdH1pZihtPT09
+Nyl7cz1hLnoKdD1ILmRtKHMsYikKcj1zLnkKcmV0dXJuIEouYmIocj09PTExfHxyPT09MTI/Qy54Qi5o
+KCIoIix0KSsiKSI6dCwiPyIpfWlmKG09PT04KXJldHVybiJGdXR1cmVPcjwiK0guRWooSC5kbShhLnos
+YikpKyI+IgppZihtPT09OSl7cT1ILm8zKGEueikKcD1hLlEKcmV0dXJuIHAubGVuZ3RoIT09MD9xKygi
+PCIrSC5pbyhwLGIpKyI+Iik6cX1pZihtPT09MTEpcmV0dXJuIEguYkkoYSxiLG51bGwpCmlmKG09PT0x
+MilyZXR1cm4gSC5iSShhLnosYixhLlEpCmlmKG09PT0xMyl7Yi50b1N0cmluZwpvPWEuegpuPWIubGVu
+Z3RoCm89bi0xLW8KaWYobzwwfHxvPj1uKXJldHVybiBILk9IKGIsbykKcmV0dXJuIGJbb119cmV0dXJu
+Ij8ifSwKbzM6ZnVuY3Rpb24oYSl7dmFyIHQscz1ILkpnKGEpCmlmKHMhPW51bGwpcmV0dXJuIHMKdD0i
+bWluaWZpZWQ6IithCnJldHVybiB0fSwKUW86ZnVuY3Rpb24oYSxiKXt2YXIgdD1hLnRSW2JdCmZvcig7
+dHlwZW9mIHQ9PSJzdHJpbmciOyl0PWEudFJbdF0KcmV0dXJuIHR9LAphaTpmdW5jdGlvbihhLGIpe3Zh
+ciB0LHMscixxLHAsbz1hLmVULG49b1tiXQppZihuPT1udWxsKXJldHVybiBILkUoYSxiLCExKQplbHNl
+IGlmKHR5cGVvZiBuPT0ibnVtYmVyIil7dD1uCnM9SC5tKGEsNSwiIyIpCnI9W10KZm9yKHE9MDtxPHQ7
+KytxKXIucHVzaChzKQpwPUguSihhLGIscikKb1tiXT1wCnJldHVybiBwfWVsc2UgcmV0dXJuIG59LAp4
+YjpmdW5jdGlvbihhLGIpe3JldHVybiBILkl4KGEudFIsYil9LApGRjpmdW5jdGlvbihhLGIpe3JldHVy
+biBILkl4KGEuZVQsYil9LApFOmZ1bmN0aW9uKGEsYixjKXt2YXIgdCxzPWEuZUMscj1zLmdldChiKQpp
+ZihyIT1udWxsKXJldHVybiByCnQ9SC5pKEgubyhhLG51bGwsYixjKSkKcy5zZXQoYix0KQpyZXR1cm4g
+dH0sCmNFOmZ1bmN0aW9uKGEsYixjKXt2YXIgdCxzLHI9Yi5jaAppZihyPT1udWxsKXI9Yi5jaD1uZXcg
+TWFwKCkKdD1yLmdldChjKQppZih0IT1udWxsKXJldHVybiB0CnM9SC5pKEgubyhhLGIsYywhMCkpCnIu
+c2V0KGMscykKcmV0dXJuIHN9LAp2NTpmdW5jdGlvbihhLGIsYyl7dmFyIHQscyxyLHE9Yi5jeAppZihx
+PT1udWxsKXE9Yi5jeD1uZXcgTWFwKCkKdD1jLmN5CnM9cS5nZXQodCkKaWYocyE9bnVsbClyZXR1cm4g
+cwpyPUguYShhLGIsYy55PT09MTA/Yy5ROltjXSkKcS5zZXQodCxyKQpyZXR1cm4gcn0sCkJEOmZ1bmN0
+aW9uKGEsYil7Yi5hPUguQXUKYi5iPUguSkoKcmV0dXJuIGJ9LAptOmZ1bmN0aW9uKGEsYixjKXt2YXIg
+dCxzLHI9YS5lQy5nZXQoYykKaWYociE9bnVsbClyZXR1cm4gcgp0PW5ldyBILkpjKG51bGwsbnVsbCkK
+dC55PWIKdC5jeT1jCnM9SC5CRChhLHQpCmEuZUMuc2V0KGMscykKcmV0dXJuIHN9LApDOmZ1bmN0aW9u
+KGEsYixjKXt2YXIgdCxzPWIuY3krIioiLHI9YS5lQy5nZXQocykKaWYociE9bnVsbClyZXR1cm4gcgp0
+PUguWjcoYSxiLHMsYykKYS5lQy5zZXQocyx0KQpyZXR1cm4gdH0sClo3OmZ1bmN0aW9uKGEsYixjLGQp
+e3ZhciB0LHMKaWYoZCl7dD1iLnkKaWYoSC5BOChiKXx8Yj09PXUuX3x8Yj09PXUuUHx8dD09PTd8fHQ9
+PT02KXJldHVybiBifXM9bmV3IEguSmMobnVsbCxudWxsKQpzLnk9NgpzLno9YgpzLmN5PWMKcmV0dXJu
+IEguQkQoYSxzKX0sCkI6ZnVuY3Rpb24oYSxiLGMpe3ZhciB0LHM9Yi5jeSsiPyIscj1hLmVDLmdldChz
+KQppZihyIT1udWxsKXJldHVybiByCnQ9SC5sbChhLGIscyxjKQphLmVDLnNldChzLHQpCnJldHVybiB0
+fSwKbGw6ZnVuY3Rpb24oYSxiLGMsZCl7dmFyIHQscyxyLHEKaWYoZCl7dD1iLnkKaWYoIUguQTgoYikp
+aWYoIShiPT09dS5QKSlpZih0IT09NylzPXQ9PT04JiZILmxSKGIueikKZWxzZSBzPSEwCmVsc2Ugcz0h
+MAplbHNlIHM9ITAKaWYocylyZXR1cm4gYgplbHNlIGlmKHQ9PT0xfHxiPT09dS5hdylyZXR1cm4gdS5Q
+CmVsc2UgaWYodD09PTYpe3I9Yi56CmlmKHIueT09PTgmJkgubFIoci56KSlyZXR1cm4gcgplbHNlIHJl
+dHVybiBILmN6KGEsYil9fXE9bmV3IEguSmMobnVsbCxudWxsKQpxLnk9NwpxLno9YgpxLmN5PWMKcmV0
+dXJuIEguQkQoYSxxKX0sCmY6ZnVuY3Rpb24oYSxiLGMpe3ZhciB0LHM9Yi5jeSsiLyIscj1hLmVDLmdl
+dChzKQppZihyIT1udWxsKXJldHVybiByCnQ9SC5lVihhLGIscyxjKQphLmVDLnNldChzLHQpCnJldHVy
+biB0fSwKZVY6ZnVuY3Rpb24oYSxiLGMsZCl7dmFyIHQscwppZihkKXt0PWIueQppZihILkE4KGIpfHxi
+PT09dS5ffHxiPT09dS5LKXJldHVybiBiCmVsc2UgaWYodD09PTEpcmV0dXJuIEguSihhLCJiOCIsW2Jd
+KQplbHNlIGlmKGI9PT11LlApcmV0dXJuIHUuYkd9cz1uZXcgSC5KYyhudWxsLG51bGwpCnMueT04CnMu
+ej1iCnMuY3k9YwpyZXR1cm4gSC5CRChhLHMpfSwKSDpmdW5jdGlvbihhLGIpe3ZhciB0LHMscj0iIiti
+KyJeIixxPWEuZUMuZ2V0KHIpCmlmKHEhPW51bGwpcmV0dXJuIHEKdD1uZXcgSC5KYyhudWxsLG51bGwp
+CnQueT0xMwp0Lno9Ygp0LmN5PXIKcz1ILkJEKGEsdCkKYS5lQy5zZXQocixzKQpyZXR1cm4gc30sClV4
+OmZ1bmN0aW9uKGEpe3ZhciB0LHMscixxPWEubGVuZ3RoCmZvcih0PSIiLHM9IiIscj0wO3I8cTsrK3Is
+cz0iLCIpdCs9cythW3JdLmN5CnJldHVybiB0fSwKUzQ6ZnVuY3Rpb24oYSl7dmFyIHQscyxyLHEscCxv
+PWEubGVuZ3RoCmZvcih0PSIiLHM9IiIscj0wO3I8bztyKz0yLHM9IiwiKXtxPWFbcl0KcD1hW3IrMV0u
+Y3kKdCs9cytxKyI6IitwfXJldHVybiB0fSwKSjpmdW5jdGlvbihhLGIsYyl7dmFyIHQscyxyLHE9Ygpp
+ZihjLmxlbmd0aCE9PTApcSs9IjwiK0guVXgoYykrIj4iCnQ9YS5lQy5nZXQocSkKaWYodCE9bnVsbCly
+ZXR1cm4gdApzPW5ldyBILkpjKG51bGwsbnVsbCkKcy55PTkKcy56PWIKcy5RPWMKaWYoYy5sZW5ndGg+
+MClzLmM9Y1swXQpzLmN5PXEKcj1ILkJEKGEscykKYS5lQy5zZXQocSxyKQpyZXR1cm4gcn0sCmE6ZnVu
+Y3Rpb24oYSxiLGMpe3ZhciB0LHMscixxLHAsbwppZihiLnk9PT0xMCl7dD1iLnoKcz1iLlEuY29uY2F0
+KGMpfWVsc2V7cz1jCnQ9Yn1yPXQuY3krIjsiKygiPCIrSC5VeChzKSsiPiIpCnE9YS5lQy5nZXQocikK
+aWYocSE9bnVsbClyZXR1cm4gcQpwPW5ldyBILkpjKG51bGwsbnVsbCkKcC55PTEwCnAuej10CnAuUT1z
+CnAuY3k9cgpvPUguQkQoYSxwKQphLmVDLnNldChyLG8pCnJldHVybiBvfSwKZDpmdW5jdGlvbihhLGIs
+Yyl7dmFyIHQscyxyLHEscD1iLmN5LG89Yy5hLG49by5sZW5ndGgsbT1jLmIsbD1tLmxlbmd0aCxrPWMu
+YyxqPWsubGVuZ3RoLGk9IigiK0guVXgobykKaWYobD4wKWkrPShuPjA/IiwiOiIiKSsiWyIrSC5VeCht
+KSsiXSIKaWYoaj4wKWkrPShuPjA/IiwiOiIiKSsieyIrSC5TNChrKSsifSIKdD1wKyhpKyIpIikKcz1h
+LmVDLmdldCh0KQppZihzIT1udWxsKXJldHVybiBzCnI9bmV3IEguSmMobnVsbCxudWxsKQpyLnk9MTEK
+ci56PWIKci5RPWMKci5jeT10CnE9SC5CRChhLHIpCmEuZUMuc2V0KHQscSkKcmV0dXJuIHF9LApEOmZ1
+bmN0aW9uKGEsYixjLGQpe3ZhciB0LHM9Yi5jeSsiPCIrSC5VeChjKSsiPiIscj1hLmVDLmdldChzKQpp
+ZihyIT1udWxsKXJldHVybiByCnQ9SC5odyhhLGIsYyxzLGQpCmEuZUMuc2V0KHMsdCkKcmV0dXJuIHR9
+LApodzpmdW5jdGlvbihhLGIsYyxkLGUpe3ZhciB0LHMscixxLHAsbyxuLG0KaWYoZSl7dD1jLmxlbmd0
+aApzPW5ldyBBcnJheSh0KQpmb3Iocj0wLHE9MDtxPHQ7KytxKXtwPWNbcV0KaWYocC55PT09MSl7c1tx
+XT1wOysrcn19aWYocj4wKXtvPUguUEwoYSxiLHMsMCkKbj1ILmJaKGEsYyxzLDApCnJldHVybiBILkQo
+YSxvLG4sYyE9PW4pfX1tPW5ldyBILkpjKG51bGwsbnVsbCkKbS55PTEyCm0uej1iCm0uUT1jCm0uY3k9
+ZApyZXR1cm4gSC5CRChhLG0pfSwKbzpmdW5jdGlvbihhLGIsYyxkKXtyZXR1cm57dTphLGU6YixyOmMs
+czpbXSxwOjAsbjpkfX0sCmk6ZnVuY3Rpb24oYSl7dmFyIHQscyxyLHEscCxvLG4sbSxsLGssaixpPWEu
+cixoPWEucwpmb3IodD1pLmxlbmd0aCxzPTA7czx0Oyl7cj1pLmNoYXJDb2RlQXQocykKaWYocj49NDgm
+JnI8PTU3KXM9SC5BKHMrMSxyLGksaCkKZWxzZSBpZigoKChyfDMyKT4+PjApLTk3JjY1NTM1KTwyNnx8
+cj09PTk1fHxyPT09MzYpcz1ILnQoYSxzLGksaCwhMSkKZWxzZSBpZihyPT09NDYpcz1ILnQoYSxzLGks
+aCwhMCkKZWxzZXsrK3MKc3dpdGNoKHIpe2Nhc2UgNDQ6YnJlYWsKY2FzZSA1ODpicmVhawpjYXNlIDU5
+OmgucHVzaChILksoYS51LGEuZSxoLnBvcCgpKSkKYnJlYWsKY2FzZSA5NDpoLnB1c2goSC5IKGEudSxo
+LnBvcCgpKSkKYnJlYWsKY2FzZSAzNTpoLnB1c2goSC5tKGEudSw1LCIjIikpCmJyZWFrCmNhc2UgNjQ6
+aC5wdXNoKEgubShhLnUsMiwiQCIpKQpicmVhawpjYXNlIDEyNjpoLnB1c2goSC5tKGEudSwzLCJ+Iikp
+CmJyZWFrCmNhc2UgNjA6aC5wdXNoKGEucCkKYS5wPWgubGVuZ3RoCmJyZWFrCmNhc2UgNjI6cT1hLnUK
+cD1oLnNwbGljZShhLnApCkgucihhLnUsYS5lLHApCmEucD1oLnBvcCgpCm89aC5wb3AoKQppZih0eXBl
+b2Ygbz09InN0cmluZyIpaC5wdXNoKEguSihxLG8scCkpCmVsc2V7bj1ILksocSxhLmUsbykKc3dpdGNo
+KG4ueSl7Y2FzZSAxMTpoLnB1c2goSC5EKHEsbixwLGEubikpCmJyZWFrCmRlZmF1bHQ6aC5wdXNoKEgu
+YShxLG4scCkpCmJyZWFrfX1icmVhawpjYXNlIDM4OkguSShhLGgpCmJyZWFrCmNhc2UgNDI6cT1hLnUK
+aC5wdXNoKEguQyhxLEguSyhxLGEuZSxoLnBvcCgpKSxhLm4pKQpicmVhawpjYXNlIDYzOnE9YS51Cmgu
+cHVzaChILkIocSxILksocSxhLmUsaC5wb3AoKSksYS5uKSkKYnJlYWsKY2FzZSA0NzpxPWEudQpoLnB1
+c2goSC5mKHEsSC5LKHEsYS5lLGgucG9wKCkpLGEubikpCmJyZWFrCmNhc2UgNDA6aC5wdXNoKGEucCkK
+YS5wPWgubGVuZ3RoCmJyZWFrCmNhc2UgNDE6cT1hLnUKbT1uZXcgSC5HKCkKbD1xLnNFQQprPXEuc0VB
+Cm89aC5wb3AoKQppZih0eXBlb2Ygbz09Im51bWJlciIpc3dpdGNoKG8pe2Nhc2UtMTpsPWgucG9wKCkK
+YnJlYWsKY2FzZS0yOms9aC5wb3AoKQpicmVhawpkZWZhdWx0OmgucHVzaChvKQpicmVha31lbHNlIGgu
+cHVzaChvKQpwPWguc3BsaWNlKGEucCkKSC5yKGEudSxhLmUscCkKYS5wPWgucG9wKCkKbS5hPXAKbS5i
+PWwKbS5jPWsKaC5wdXNoKEguZChxLEguSyhxLGEuZSxoLnBvcCgpKSxtKSkKYnJlYWsKY2FzZSA5MTpo
+LnB1c2goYS5wKQphLnA9aC5sZW5ndGgKYnJlYWsKY2FzZSA5MzpwPWguc3BsaWNlKGEucCkKSC5yKGEu
+dSxhLmUscCkKYS5wPWgucG9wKCkKaC5wdXNoKHApCmgucHVzaCgtMSkKYnJlYWsKY2FzZSAxMjM6aC5w
+dXNoKGEucCkKYS5wPWgubGVuZ3RoCmJyZWFrCmNhc2UgMTI1OnA9aC5zcGxpY2UoYS5wKQpILnkoYS51
+LGEuZSxwKQphLnA9aC5wb3AoKQpoLnB1c2gocCkKaC5wdXNoKC0yKQpicmVhawpkZWZhdWx0OnRocm93
+IkJhZCBjaGFyYWN0ZXIgIityfX19aj1oLnBvcCgpCnJldHVybiBILksoYS51LGEuZSxqKX0sCkE6ZnVu
+Y3Rpb24oYSxiLGMsZCl7dmFyIHQscyxyPWItNDgKZm9yKHQ9Yy5sZW5ndGg7YTx0OysrYSl7cz1jLmNo
+YXJDb2RlQXQoYSkKaWYoIShzPj00OCYmczw9NTcpKWJyZWFrCnI9cioxMCsocy00OCl9ZC5wdXNoKHIp
+CnJldHVybiBhfSwKdDpmdW5jdGlvbihhLGIsYyxkLGUpe3ZhciB0LHMscixxLHAsbyxuPWIrMQpmb3Io
+dD1jLmxlbmd0aDtuPHQ7KytuKXtzPWMuY2hhckNvZGVBdChuKQppZihzPT09NDYpe2lmKGUpYnJlYWsK
+ZT0hMH1lbHNle2lmKCEoKCgoc3wzMik+Pj4wKS05NyY2NTUzNSk8MjZ8fHM9PT05NXx8cz09PTM2KSly
+PXM+PTQ4JiZzPD01NwplbHNlIHI9ITAKaWYoIXIpYnJlYWt9fXE9Yy5zdWJzdHJpbmcoYixuKQppZihl
+KXt0PWEudQpwPWEuZQppZihwLnk9PT0xMClwPXAuegpvPUguUW8odCxwLnopW3FdCmlmKG89PW51bGwp
+SC52aCgnTm8gIicrcSsnIiBpbiAiJytILm1EKHApKyciJykKZC5wdXNoKEguY0UodCxwLG8pKX1lbHNl
+IGQucHVzaChxKQpyZXR1cm4gbn0sCkk6ZnVuY3Rpb24oYSxiKXt2YXIgdD1iLnBvcCgpCmlmKDA9PT10
+KXtiLnB1c2goSC5tKGEudSwxLCIwJiIpKQpyZXR1cm59aWYoMT09PXQpe2IucHVzaChILm0oYS51LDQs
+IjEmIikpCnJldHVybn10aHJvdyBILmIoUC5oVigiVW5leHBlY3RlZCBleHRlbmRlZCBvcGVyYXRpb24g
+IitILkVqKHQpKSl9LApLOmZ1bmN0aW9uKGEsYixjKXtpZih0eXBlb2YgYz09InN0cmluZyIpcmV0dXJu
+IEguSihhLGMsYS5zRUEpCmVsc2UgaWYodHlwZW9mIGM9PSJudW1iZXIiKXJldHVybiBILlRWKGEsYixj
+KQplbHNlIHJldHVybiBjfSwKcjpmdW5jdGlvbihhLGIsYyl7dmFyIHQscz1jLmxlbmd0aApmb3IodD0w
+O3Q8czsrK3QpY1t0XT1ILksoYSxiLGNbdF0pfSwKeTpmdW5jdGlvbihhLGIsYyl7dmFyIHQscz1jLmxl
+bmd0aApmb3IodD0xO3Q8czt0Kz0yKWNbdF09SC5LKGEsYixjW3RdKX0sClRWOmZ1bmN0aW9uKGEsYixj
+KXt2YXIgdCxzLHI9Yi55CmlmKHI9PT0xMCl7aWYoYz09PTApcmV0dXJuIGIuegp0PWIuUQpzPXQubGVu
+Z3RoCmlmKGM8PXMpcmV0dXJuIHRbYy0xXQpjLT1zCmI9Yi56CnI9Yi55fWVsc2UgaWYoYz09PTApcmV0
+dXJuIGIKaWYociE9PTkpdGhyb3cgSC5iKFAuaFYoIkluZGV4ZWQgYmFzZSBtdXN0IGJlIGFuIGludGVy
+ZmFjZSB0eXBlIikpCnQ9Yi5RCmlmKGM8PXQubGVuZ3RoKXJldHVybiB0W2MtMV0KdGhyb3cgSC5iKFAu
+aFYoIkJhZCBpbmRleCAiK2MrIiBmb3IgIitiLncoMCkpKX0sCldlOmZ1bmN0aW9uKGEsYixjLGQsZSl7
+dmFyIHQscyxyLHEscCxvLG4sbSxsLGsKaWYoYj09PWQpcmV0dXJuITAKaWYoSC5BOChkKXx8ZD09PXUu
+XylyZXR1cm4hMAp0PWIueQppZih0PT09NClyZXR1cm4hMAppZihILkE4KGIpKXJldHVybiExCmlmKGI9
+PT11LlApcmV0dXJuITAKcz10PT09MTMKaWYocylpZihILldlKGEsY1tiLnpdLGMsZCxlKSlyZXR1cm4h
+MApyPWQueQppZih0PT09NilyZXR1cm4gSC5XZShhLGIueixjLGQsZSkKaWYocj09PTYpe3E9ZC56CnJl
+dHVybiBILldlKGEsYixjLHEsZSl9aWYodD09PTgpe2lmKCFILldlKGEsYi56LGMsZCxlKSlyZXR1cm4h
+MQpyZXR1cm4gSC5XZShhLEgueFooYSxiKSxjLGQsZSl9aWYodD09PTcpe3E9SC5XZShhLGIueixjLGQs
+ZSkKcmV0dXJuIHF9aWYocj09PTgpe2lmKEguV2UoYSxiLGMsZC56LGUpKXJldHVybiEwCnJldHVybiBI
+LldlKGEsYixjLEgueFooYSxkKSxlKX1pZihyPT09Nyl7cT1ILldlKGEsYixjLGQueixlKQpyZXR1cm4g
+cX1pZihzKXJldHVybiExCnE9dCE9PTExCmlmKCghcXx8dD09PTEyKSYmZD09PXUuWSlyZXR1cm4hMApp
+ZihyPT09MTIpe2lmKGI9PT11LnIpcmV0dXJuITAKaWYodCE9PTEyKXJldHVybiExCnA9Yi5RCm89ZC5R
+Cm49cC5sZW5ndGgKaWYobiE9PW8ubGVuZ3RoKXJldHVybiExCmM9Yz09bnVsbD9wOnAuY29uY2F0KGMp
+CmU9ZT09bnVsbD9vOm8uY29uY2F0KGUpCmZvcihtPTA7bTxuOysrbSl7bD1wW21dCms9b1ttXQppZigh
+SC5XZShhLGwsYyxrLGUpfHwhSC5XZShhLGssZSxsLGMpKXJldHVybiExfXJldHVybiBILmJPKGEsYi56
+LGMsZC56LGUpfWlmKHI9PT0xMSl7aWYoYj09PXUucilyZXR1cm4hMAppZihxKXJldHVybiExCnJldHVy
+biBILmJPKGEsYixjLGQsZSl9aWYodD09PTkpe2lmKHIhPT05KXJldHVybiExCnJldHVybiBILnBHKGEs
+YixjLGQsZSl9cmV0dXJuITF9LApiTzpmdW5jdGlvbihhMCxhMSxhMixhMyxhNCl7dmFyIHQscyxyLHEs
+cCxvLG4sbSxsLGssaixpLGgsZyxmLGUsZCxjLGIsYQppZighSC5XZShhMCxhMS56LGEyLGEzLnosYTQp
+KXJldHVybiExCnQ9YTEuUQpzPWEzLlEKcj10LmEKcT1zLmEKcD1yLmxlbmd0aApvPXEubGVuZ3RoCmlm
+KHA+bylyZXR1cm4hMQpuPW8tcAptPXQuYgpsPXMuYgprPW0ubGVuZ3RoCmo9bC5sZW5ndGgKaWYocCtr
+PG8railyZXR1cm4hMQpmb3IoaT0wO2k8cDsrK2kpe2g9cltpXQppZighSC5XZShhMCxxW2ldLGE0LGgs
+YTIpKXJldHVybiExfWZvcihpPTA7aTxuOysraSl7aD1tW2ldCmlmKCFILldlKGEwLHFbcCtpXSxhNCxo
+LGEyKSlyZXR1cm4hMX1mb3IoaT0wO2k8ajsrK2kpe2g9bVtuK2ldCmlmKCFILldlKGEwLGxbaV0sYTQs
+aCxhMikpcmV0dXJuITF9Zz10LmMKZj1zLmMKZT1nLmxlbmd0aApkPWYubGVuZ3RoCmZvcihpPTAsYz0w
+O2M8ZDtjKz0yKXtiPWZbY10KZG97aWYoaT49ZSlyZXR1cm4hMQphPWdbaV0KaSs9Mn13aGlsZShhPGIp
+CmlmKGI8YSlyZXR1cm4hMQpoPWdbaS0xXQppZighSC5XZShhMCxmW2MrMV0sYTQsaCxhMikpcmV0dXJu
+ITF9cmV0dXJuITB9LApwRzpmdW5jdGlvbihhLGIsYyxkLGUpe3ZhciB0LHMscixxLHAsbyxuLG0sbD1i
+Lnosaz1kLnoKaWYobD09PWspe3Q9Yi5RCnM9ZC5RCnI9dC5sZW5ndGgKZm9yKHE9MDtxPHI7KytxKXtw
+PXRbcV0Kbz1zW3FdCmlmKCFILldlKGEscCxjLG8sZSkpcmV0dXJuITF9cmV0dXJuITB9aWYoZD09PXUu
+SylyZXR1cm4hMApuPUguUW8oYSxsKQppZihuPT1udWxsKXJldHVybiExCm09bltrXQppZihtPT1udWxs
+KXJldHVybiExCnI9bS5sZW5ndGgKcz1kLlEKZm9yKHE9MDtxPHI7KytxKWlmKCFILldlKGEsSC5jRShh
+LGIsbVtxXSksYyxzW3FdLGUpKXJldHVybiExCnJldHVybiEwfSwKbFI6ZnVuY3Rpb24oYSl7dmFyIHQs
+cz1hLnkKaWYoIShhPT09dS5QKSlpZighSC5BOChhKSlpZihzIT09NylpZighKHM9PT02JiZILmxSKGEu
+eikpKXQ9cz09PTgmJkgubFIoYS56KQplbHNlIHQ9ITAKZWxzZSB0PSEwCmVsc2UgdD0hMAplbHNlIHQ9
+ITAKcmV0dXJuIHR9LApjYzpmdW5jdGlvbihhKXtyZXR1cm4gSC5BOChhKXx8YT09PXUuX30sCkE4OmZ1
+bmN0aW9uKGEpe3ZhciB0LHM9YS55CmlmKHMhPT0yKWlmKHMhPT0zKWlmKHMhPT00KWlmKHMhPT01KXQ9
+YT09PXUuY0sKZWxzZSB0PSEwCmVsc2UgdD0hMAplbHNlIHQ9ITAKZWxzZSB0PSEwCnJldHVybiB0fSwK
+SXg6ZnVuY3Rpb24oYSxiKXt2YXIgdCxzLHI9T2JqZWN0LmtleXMoYikscT1yLmxlbmd0aApmb3IodD0w
+O3Q8cTsrK3Qpe3M9clt0XQphW3NdPWJbc119fSwKSmM6ZnVuY3Rpb24gSmMoYSxiKXt2YXIgXz10aGlz
+Cl8uYT1hCl8uYj1iCl8ueD1fLnI9Xy5jPW51bGwKXy55PTAKXy5jeT1fLmN4PV8uY2g9Xy5RPV8uej1u
+dWxsfSwKRzpmdW5jdGlvbiBHKCl7dGhpcy5jPXRoaXMuYj10aGlzLmE9bnVsbH0sCnU5OmZ1bmN0aW9u
+IHU5KCl7fSwKaU06ZnVuY3Rpb24gaU0oYSl7dGhpcy5hPWF9LApSOTpmdW5jdGlvbihhKXtyZXR1cm4g
+dS53LmIoYSl8fHUuQi5iKGEpfHx1LmR6LmIoYSl8fHUuSS5iKGEpfHx1LkEuYihhKXx8dS5nNC5iKGEp
+fHx1LmcyLmIoYSl9LApKZzpmdW5jdGlvbihhKXtyZXR1cm4gdi5tYW5nbGVkR2xvYmFsTmFtZXNbYV19
+fSxKPXsKUXU6ZnVuY3Rpb24oYSxiLGMsZCl7cmV0dXJue2k6YSxwOmIsZTpjLHg6ZH19LAprczpmdW5j
+dGlvbihhKXt2YXIgdCxzLHIscSxwPWFbdi5kaXNwYXRjaFByb3BlcnR5TmFtZV0KaWYocD09bnVsbClp
+ZigkLkJ2PT1udWxsKXtILlhEKCkKcD1hW3YuZGlzcGF0Y2hQcm9wZXJ0eU5hbWVdfWlmKHAhPW51bGwp
+e3Q9cC5wCmlmKCExPT09dClyZXR1cm4gcC5pCmlmKCEwPT09dClyZXR1cm4gYQpzPU9iamVjdC5nZXRQ
+cm90b3R5cGVPZihhKQppZih0PT09cylyZXR1cm4gcC5pCmlmKHAuZT09PXMpdGhyb3cgSC5iKFAuU1ko
+IlJldHVybiBpbnRlcmNlcHRvciBmb3IgIitILkVqKHQoYSxwKSkpKX1yPWEuY29uc3RydWN0b3IKcT1y
+PT1udWxsP251bGw6cltKLlJQKCldCmlmKHEhPW51bGwpcmV0dXJuIHEKcT1ILnczKGEpCmlmKHEhPW51
+bGwpcmV0dXJuIHEKaWYodHlwZW9mIGE9PSJmdW5jdGlvbiIpcmV0dXJuIEMuREcKdD1PYmplY3QuZ2V0
+UHJvdG90eXBlT2YoYSkKaWYodD09bnVsbClyZXR1cm4gQy5aUQppZih0PT09T2JqZWN0LnByb3RvdHlw
+ZSlyZXR1cm4gQy5aUQppZih0eXBlb2Ygcj09ImZ1bmN0aW9uIil7T2JqZWN0LmRlZmluZVByb3BlcnR5
+KHIsSi5SUCgpLHt2YWx1ZTpDLnZCLGVudW1lcmFibGU6ZmFsc2Usd3JpdGFibGU6dHJ1ZSxjb25maWd1
+cmFibGU6dHJ1ZX0pCnJldHVybiBDLnZCfXJldHVybiBDLnZCfSwKUlA6ZnVuY3Rpb24oKXt2YXIgdD0k
+LnptCnJldHVybiB0PT1udWxsPyQuem09di5nZXRJc29sYXRlVGFnKCJfJGRhcnRfanMiKTp0fSwKUWk6
+ZnVuY3Rpb24oYSxiKXtpZihhPDB8fGE+NDI5NDk2NzI5NSl0aHJvdyBILmIoUC5URShhLDAsNDI5NDk2
+NzI5NSwibGVuZ3RoIixudWxsKSkKcmV0dXJuIEoucHkobmV3IEFycmF5KGEpLGIpfSwKS2g6ZnVuY3Rp
+b24oYSxiKXtpZihhPDApdGhyb3cgSC5iKFAueFkoIkxlbmd0aCBtdXN0IGJlIGEgbm9uLW5lZ2F0aXZl
+IGludGVnZXI6ICIrYSkpCnJldHVybiBILlZNKG5ldyBBcnJheShhKSxiLkMoImpkPDA+IikpfSwKcHk6
+ZnVuY3Rpb24oYSxiKXtyZXR1cm4gSi5FcChILlZNKGEsYi5DKCJqZDwwPiIpKSxiKX0sCkVwOmZ1bmN0
+aW9uKGEsYil7YS5maXhlZCRsZW5ndGg9QXJyYXkKcmV0dXJuIGF9LAp6QzpmdW5jdGlvbihhKXthLmZp
+eGVkJGxlbmd0aD1BcnJheQphLmltbXV0YWJsZSRsaXN0PUFycmF5CnJldHVybiBhfSwKR2E6ZnVuY3Rp
+b24oYSl7aWYoYTwyNTYpc3dpdGNoKGEpe2Nhc2UgOTpjYXNlIDEwOmNhc2UgMTE6Y2FzZSAxMjpjYXNl
+IDEzOmNhc2UgMzI6Y2FzZSAxMzM6Y2FzZSAxNjA6cmV0dXJuITAKZGVmYXVsdDpyZXR1cm4hMX1zd2l0
+Y2goYSl7Y2FzZSA1NzYwOmNhc2UgODE5MjpjYXNlIDgxOTM6Y2FzZSA4MTk0OmNhc2UgODE5NTpjYXNl
+IDgxOTY6Y2FzZSA4MTk3OmNhc2UgODE5ODpjYXNlIDgxOTk6Y2FzZSA4MjAwOmNhc2UgODIwMTpjYXNl
+IDgyMDI6Y2FzZSA4MjMyOmNhc2UgODIzMzpjYXNlIDgyMzk6Y2FzZSA4Mjg3OmNhc2UgMTIyODg6Y2Fz
+ZSA2NTI3OTpyZXR1cm4hMApkZWZhdWx0OnJldHVybiExfX0sCm1tOmZ1bmN0aW9uKGEsYil7dmFyIHQs
+cwpmb3IodD1hLmxlbmd0aDtiPHQ7KXtzPUMueEIuVyhhLGIpCmlmKHMhPT0zMiYmcyE9PTEzJiYhSi5H
+YShzKSlicmVhazsrK2J9cmV0dXJuIGJ9LApjMTpmdW5jdGlvbihhLGIpe3ZhciB0LHMKZm9yKDtiPjA7
+Yj10KXt0PWItMQpzPUMueEIubShhLHQpCmlmKHMhPT0zMiYmcyE9PTEzJiYhSi5HYShzKSlicmVha31y
+ZXR1cm4gYn0sClRKOmZ1bmN0aW9uKGEpe2lmKHR5cGVvZiBhPT0ibnVtYmVyIilyZXR1cm4gSi5xSS5w
+cm90b3R5cGUKaWYodHlwZW9mIGE9PSJzdHJpbmciKXJldHVybiBKLkRyLnByb3RvdHlwZQppZihhPT1u
+dWxsKXJldHVybiBhCmlmKGEuY29uc3RydWN0b3I9PUFycmF5KXJldHVybiBKLmpkLnByb3RvdHlwZQpp
+Zih0eXBlb2YgYSE9Im9iamVjdCIpe2lmKHR5cGVvZiBhPT0iZnVuY3Rpb24iKXJldHVybiBKLmM1LnBy
+b3RvdHlwZQpyZXR1cm4gYX1pZihhIGluc3RhbmNlb2YgUC5NaClyZXR1cm4gYQpyZXR1cm4gSi5rcyhh
+KX0sClU2OmZ1bmN0aW9uKGEpe2lmKHR5cGVvZiBhPT0ic3RyaW5nIilyZXR1cm4gSi5Eci5wcm90b3R5
+cGUKaWYoYT09bnVsbClyZXR1cm4gYQppZihhLmNvbnN0cnVjdG9yPT1BcnJheSlyZXR1cm4gSi5qZC5w
+cm90b3R5cGUKaWYodHlwZW9mIGEhPSJvYmplY3QiKXtpZih0eXBlb2YgYT09ImZ1bmN0aW9uIilyZXR1
+cm4gSi5jNS5wcm90b3R5cGUKcmV0dXJuIGF9aWYoYSBpbnN0YW5jZW9mIFAuTWgpcmV0dXJuIGEKcmV0
+dXJuIEoua3MoYSl9LApZRTpmdW5jdGlvbihhKXtpZihhPT1udWxsKXJldHVybiBhCmlmKHR5cGVvZiBh
+IT0ib2JqZWN0Iil7aWYodHlwZW9mIGE9PSJmdW5jdGlvbiIpcmV0dXJuIEouYzUucHJvdG90eXBlCnJl
+dHVybiBhfWlmKGEgaW5zdGFuY2VvZiBQLk1oKXJldHVybiBhCnJldHVybiBKLmtzKGEpfSwKaWE6ZnVu
+Y3Rpb24oYSl7aWYodHlwZW9mIGE9PSJudW1iZXIiKXtpZihNYXRoLmZsb29yKGEpPT1hKXJldHVybiBK
+LnVyLnByb3RvdHlwZQpyZXR1cm4gSi5WQS5wcm90b3R5cGV9aWYodHlwZW9mIGE9PSJzdHJpbmciKXJl
+dHVybiBKLkRyLnByb3RvdHlwZQppZihhPT1udWxsKXJldHVybiBKLndlLnByb3RvdHlwZQppZih0eXBl
+b2YgYT09ImJvb2xlYW4iKXJldHVybiBKLnlFLnByb3RvdHlwZQppZihhLmNvbnN0cnVjdG9yPT1BcnJh
+eSlyZXR1cm4gSi5qZC5wcm90b3R5cGUKaWYodHlwZW9mIGEhPSJvYmplY3QiKXtpZih0eXBlb2YgYT09
+ImZ1bmN0aW9uIilyZXR1cm4gSi5jNS5wcm90b3R5cGUKcmV0dXJuIGF9aWYoYSBpbnN0YW5jZW9mIFAu
+TWgpcmV0dXJuIGEKcmV0dXJuIEoua3MoYSl9LApyWTpmdW5jdGlvbihhKXtpZih0eXBlb2YgYT09InN0
+cmluZyIpcmV0dXJuIEouRHIucHJvdG90eXBlCmlmKGE9PW51bGwpcmV0dXJuIGEKaWYoIShhIGluc3Rh
+bmNlb2YgUC5NaCkpcmV0dXJuIEoua2QucHJvdG90eXBlCnJldHVybiBhfSwKdzE6ZnVuY3Rpb24oYSl7
+aWYoYT09bnVsbClyZXR1cm4gYQppZihhLmNvbnN0cnVjdG9yPT1BcnJheSlyZXR1cm4gSi5qZC5wcm90
+b3R5cGUKaWYodHlwZW9mIGEhPSJvYmplY3QiKXtpZih0eXBlb2YgYT09ImZ1bmN0aW9uIilyZXR1cm4g
+Si5jNS5wcm90b3R5cGUKcmV0dXJuIGF9aWYoYSBpbnN0YW5jZW9mIFAuTWgpcmV0dXJuIGEKcmV0dXJu
+IEoua3MoYSl9LApDTTpmdW5jdGlvbihhLGIsYyxkKXtyZXR1cm4gSi5ZRShhKS5kdShhLGIsYyxkKX0s
+CkVoOmZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gSi5ZRShhKS5tSyhhLGIsYyl9LApGTDpmdW5jdGlvbihh
+LGIpe3JldHVybiBKLnJZKGEpLmRkKGEsYil9LApHQTpmdW5jdGlvbihhLGIpe3JldHVybiBKLncxKGEp
+LkUoYSxiKX0sCkdyOmZ1bmN0aW9uKGEpe3JldHVybiBKLllFKGEpLmdtVyhhKX0sCkhtOmZ1bmN0aW9u
+KGEpe3JldHVybiBKLlU2KGEpLmdBKGEpfSwKSVQ6ZnVuY3Rpb24oYSl7cmV0dXJuIEoudzEoYSkuZ2t6
+KGEpfSwKSnk6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gSi5pYShhKS5lNyhhLGIpfSwKS1Y6ZnVuY3Rpb24o
+YSxiKXtyZXR1cm4gSi5yWShhKS5HKGEsYil9LApMdDpmdW5jdGlvbihhKXtyZXR1cm4gSi5ZRShhKS53
+ZyhhKX0sCk0xOmZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gSi53MShhKS5FMihhLGIsYyl9LApRejpmdW5j
+dGlvbihhLGIpe3JldHVybiBKLnJZKGEpLlcoYSxiKX0sClJNOmZ1bmN0aW9uKGEsYil7aWYoYT09bnVs
+bClyZXR1cm4gYj09bnVsbAppZih0eXBlb2YgYSE9Im9iamVjdCIpcmV0dXJuIGIhPW51bGwmJmE9PT1i
+CnJldHVybiBKLmlhKGEpLkROKGEsYil9LApUMDpmdW5jdGlvbihhKXtyZXR1cm4gSi5yWShhKS5iUyhh
+KX0sCmE2OmZ1bmN0aW9uKGEsYil7cmV0dXJuIEouclkoYSkubShhLGIpfSwKYlQ6ZnVuY3Rpb24oYSl7
+cmV0dXJuIEouWUUoYSkuRDQoYSl9LApiYjpmdW5jdGlvbihhLGIpe2lmKHR5cGVvZiBhPT0ibnVtYmVy
+IiYmdHlwZW9mIGI9PSJudW1iZXIiKXJldHVybiBhK2IKcmV0dXJuIEouVEooYSkuaChhLGIpfSwKY0g6
+ZnVuY3Rpb24oYSl7cmV0dXJuIEouclkoYSkuaGMoYSl9LApkUjpmdW5jdGlvbihhKXtyZXR1cm4gSi5Z
+RShhKS5nUChhKX0sCmRaOmZ1bmN0aW9uKGEsYixjLGQpe3JldHVybiBKLllFKGEpLk9uKGEsYixjLGQp
+fSwKZGc6ZnVuY3Rpb24oYSxiLGMsZCl7cmV0dXJuIEouclkoYSkuaTcoYSxiLGMsZCl9LApkaDpmdW5j
+dGlvbihhKXtyZXR1cm4gSi5ZRShhKS5GRihhKX0sCmRyOmZ1bmN0aW9uKGEsYil7cmV0dXJuIEouWUUo
+YSkuc2E0KGEsYil9LApoZjpmdW5jdGlvbihhKXtyZXR1cm4gSi5pYShhKS5naU8oYSl9LAppZzpmdW5j
+dGlvbihhKXtyZXR1cm4gSi5ZRShhKS5nUWcoYSl9LApqOmZ1bmN0aW9uKGEpe3JldHVybiBKLmlhKGEp
+LncoYSl9LApsNTpmdW5jdGlvbihhLGIpe3JldHVybiBKLllFKGEpLnNoZihhLGIpfSwKbGQ6ZnVuY3Rp
+b24oYSxiLGMpe3JldHVybiBKLnJZKGEpLk5qKGEsYixjKX0sCnA0OmZ1bmN0aW9uKGEsYil7cmV0dXJu
+IEouclkoYSkuVGMoYSxiKX0sCnEwOmZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gSi5yWShhKS5RaShhLGIs
+Yyl9LApxRjpmdW5jdGlvbihhKXtyZXR1cm4gSi5ZRShhKS5nVmwoYSl9LAp0SDpmdW5jdGlvbihhLGIs
+Yyl7cmV0dXJuIEouWUUoYSkucGsoYSxiLGMpfSwKd2Y6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gSi5ZRShh
+KS5zUk4oYSxiKX0sCng5OmZ1bmN0aW9uKGEsYil7aWYodHlwZW9mIGI9PT0ibnVtYmVyIilpZihhLmNv
+bnN0cnVjdG9yPT1BcnJheXx8dHlwZW9mIGE9PSJzdHJpbmcifHxILndWKGEsYVt2LmRpc3BhdGNoUHJv
+cGVydHlOYW1lXSkpaWYoYj4+PjA9PT1iJiZiPGEubGVuZ3RoKXJldHVybiBhW2JdCnJldHVybiBKLlU2
+KGEpLnEoYSxiKX0sCnpsOmZ1bmN0aW9uKGEsYil7cmV0dXJuIEouVTYoYSkudGcoYSxiKX0sCnZCOmZ1
+bmN0aW9uIHZCKCl7fSwKeUU6ZnVuY3Rpb24geUUoKXt9LAp3ZTpmdW5jdGlvbiB3ZSgpe30sCk1GOmZ1
+bmN0aW9uIE1GKCl7fSwKaUM6ZnVuY3Rpb24gaUMoKXt9LAprZDpmdW5jdGlvbiBrZCgpe30sCmM1OmZ1
+bmN0aW9uIGM1KCl7fSwKamQ6ZnVuY3Rpb24gamQoYSl7dGhpcy4kdGk9YX0sClBvOmZ1bmN0aW9uIFBv
+KGEpe3RoaXMuJHRpPWF9LAptMTpmdW5jdGlvbiBtMShhLGIsYyl7dmFyIF89dGhpcwpfLmE9YQpfLmI9
+YgpfLmM9MApfLmQ9bnVsbApfLiR0aT1jfSwKcUk6ZnVuY3Rpb24gcUkoKXt9LAp1cjpmdW5jdGlvbiB1
+cigpe30sClZBOmZ1bmN0aW9uIFZBKCl7fSwKRHI6ZnVuY3Rpb24gRHIoKXt9fSxQPXsKT2o6ZnVuY3Rp
+b24oKXt2YXIgdCxzLHI9e30KaWYoc2VsZi5zY2hlZHVsZUltbWVkaWF0ZSE9bnVsbClyZXR1cm4gUC5F
+WCgpCmlmKHNlbGYuTXV0YXRpb25PYnNlcnZlciE9bnVsbCYmc2VsZi5kb2N1bWVudCE9bnVsbCl7dD1z
+ZWxmLmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpCnM9c2VsZi5kb2N1bWVudC5jcmVhdGVFbGVt
+ZW50KCJzcGFuIikKci5hPW51bGwKbmV3IHNlbGYuTXV0YXRpb25PYnNlcnZlcihILnRSKG5ldyBQLnRo
+KHIpLDEpKS5vYnNlcnZlKHQse2NoaWxkTGlzdDp0cnVlfSkKcmV0dXJuIG5ldyBQLmhhKHIsdCxzKX1l
+bHNlIGlmKHNlbGYuc2V0SW1tZWRpYXRlIT1udWxsKXJldHVybiBQLnl0KCkKcmV0dXJuIFAucVcoKX0s
+ClpWOmZ1bmN0aW9uKGEpe3NlbGYuc2NoZWR1bGVJbW1lZGlhdGUoSC50UihuZXcgUC5Wcyh1Lk0uYShh
+KSksMCkpfSwKb0E6ZnVuY3Rpb24oYSl7c2VsZi5zZXRJbW1lZGlhdGUoSC50UihuZXcgUC5GdCh1Lk0u
+YShhKSksMCkpfSwKQno6ZnVuY3Rpb24oYSl7dS5NLmEoYSkKUC5RTigwLGEpfSwKUU46ZnVuY3Rpb24o
+YSxiKXt2YXIgdD1uZXcgUC5XMygpCnQuQ1koYSxiKQpyZXR1cm4gdH0sCkZYOmZ1bmN0aW9uKGEpe3Jl
+dHVybiBuZXcgUC5paChuZXcgUC52cygkLlgzLGEuQygidnM8MD4iKSksYS5DKCJpaDwwPiIpKX0sCkRJ
+OmZ1bmN0aW9uKGEsYil7YS4kMigwLG51bGwpCmIuYj0hMApyZXR1cm4gYi5hfSwKalE6ZnVuY3Rpb24o
+YSxiKXtQLkplKGEsYil9LAp5QzpmdW5jdGlvbihhLGIpe2IuYU0oMCxhKX0sCmYzOmZ1bmN0aW9uKGEs
+Yil7Yi53MChILlJ1KGEpLEgudHMoYSkpfSwKSmU6ZnVuY3Rpb24oYSxiKXt2YXIgdCxzLHI9bmV3IFAu
+V00oYikscT1uZXcgUC5TWChiKQppZihhIGluc3RhbmNlb2YgUC52cylhLlFkKHIscSx1LnopCmVsc2V7
+dD11LnoKaWYodS5kLmIoYSkpYS5TcShyLHEsdCkKZWxzZXtzPW5ldyBQLnZzKCQuWDMsdS5jKQpzLmE9
+NApzLmM9YQpzLlFkKHIscSx0KX19fSwKbHo6ZnVuY3Rpb24oYSl7dmFyIHQ9ZnVuY3Rpb24oYixjKXty
+ZXR1cm4gZnVuY3Rpb24oZCxlKXt3aGlsZSh0cnVlKXRyeXtiKGQsZSkKYnJlYWt9Y2F0Y2gocyl7ZT1z
+CmQ9Y319fShhLDEpCnJldHVybiAkLlgzLkxqKG5ldyBQLkdzKHQpLHUuUCx1LlMsdS56KX0sCkdROmZ1
+bmN0aW9uKGEpe3JldHVybiBuZXcgUC5GeShhLDEpfSwKVGg6ZnVuY3Rpb24oKXtyZXR1cm4gQy53UX0s
+ClltOmZ1bmN0aW9uKGEpe3JldHVybiBuZXcgUC5GeShhLDMpfSwKbDA6ZnVuY3Rpb24oYSxiKXtyZXR1
+cm4gbmV3IFAucTQoYSxiLkMoInE0PDA+IikpfSwKazM6ZnVuY3Rpb24oYSxiKXt2YXIgdCxzLHIKYi5h
+PTEKdHJ5e2EuU3EobmV3IFAucFYoYiksbmV3IFAuVTcoYiksdS5QKX1jYXRjaChyKXt0PUguUnUocikK
+cz1ILnRzKHIpClAucmIobmV3IFAudnIoYix0LHMpKX19LApBOTpmdW5jdGlvbihhLGIpe3ZhciB0LHMs
+cgpmb3IodD11LmM7cz1hLmEscz09PTI7KWE9dC5hKGEuYykKaWYocz49NCl7cj1iLmFoKCkKYi5hPWEu
+YQpiLmM9YS5jClAuSFooYixyKX1lbHNle3I9dS5GLmEoYi5jKQpiLmE9MgpiLmM9YQphLmpRKHIpfX0s
+CkhaOmZ1bmN0aW9uKGEsYTApe3ZhciB0LHMscixxLHAsbyxuLG0sbCxrLGosaSxoLGcsZixlLGQ9bnVs
+bCxjPXt9LGI9Yy5hPWEKZm9yKHQ9dS5uLHM9dS5GLHI9dS5kOyEwOyl7cT17fQpwPWIuYT09PTgKaWYo
+YTA9PW51bGwpe2lmKHApe289dC5hKGIuYykKUC5MMihkLGQsYi5iLG8uYSxvLmIpfXJldHVybn1xLmE9
+YTAKbj1hMC5hCmZvcihiPWEwO24hPW51bGw7Yj1uLG49bSl7Yi5hPW51bGwKUC5IWihjLmEsYikKcS5h
+PW4KbT1uLmF9bD1jLmEKaz1sLmMKcS5iPXAKcS5jPWsKaj0hcAppZihqKXtpPWIuYwppPShpJjEpIT09
+MHx8KGkmMTUpPT09OH1lbHNlIGk9ITAKaWYoaSl7aD1iLmIuYgppZihwKXtpPWwuYj09PWgKaT0hKGl8
+fGkpfWVsc2UgaT0hMQppZihpKXt0LmEoaykKUC5MMihkLGQsbC5iLGsuYSxrLmIpCnJldHVybn1nPSQu
+WDMKaWYoZyE9PWgpJC5YMz1oCmVsc2UgZz1kCmI9Yi5jCmlmKChiJjE1KT09PTgpbmV3IFAuUlQocSxj
+LHApLiQwKCkKZWxzZSBpZihqKXtpZigoYiYxKSE9PTApbmV3IFAucnEocSxrKS4kMCgpfWVsc2UgaWYo
+KGImMikhPT0wKW5ldyBQLlJXKGMscSkuJDAoKQppZihnIT1udWxsKSQuWDM9ZwpiPXEuYwppZihyLmIo
+Yikpe2Y9cS5hLmIKaWYoYi5hPj00KXtlPXMuYShmLmMpCmYuYz1udWxsCmEwPWYuTjgoZSkKZi5hPWIu
+YQpmLmM9Yi5jCmMuYT1iCmNvbnRpbnVlfWVsc2UgUC5BOShiLGYpCnJldHVybn19Zj1xLmEuYgplPXMu
+YShmLmMpCmYuYz1udWxsCmEwPWYuTjgoZSkKYj1xLmIKbD1xLmMKaWYoIWIpe2YuJHRpLmMuYShsKQpm
+LmE9NApmLmM9bH1lbHNle3QuYShsKQpmLmE9OApmLmM9bH1jLmE9ZgpiPWZ9fSwKVkg6ZnVuY3Rpb24o
+YSxiKXt2YXIgdAppZih1LmFnLmIoYSkpcmV0dXJuIGIuTGooYSx1LnosdS5LLHUubCkKdD11LmJJCmlm
+KHQuYihhKSlyZXR1cm4gdC5hKGEpCnRocm93IEguYihQLkwzKGEsIm9uRXJyb3IiLCJFcnJvciBoYW5k
+bGVyIG11c3QgYWNjZXB0IG9uZSBPYmplY3Qgb3Igb25lIE9iamVjdCBhbmQgYSBTdGFja1RyYWNlIGFz
+IGFyZ3VtZW50cywgYW5kIHJldHVybiBhIGEgdmFsaWQgcmVzdWx0IikpfSwKcHU6ZnVuY3Rpb24oKXt2
+YXIgdCxzCmZvcih0PSQuUzY7dCE9bnVsbDt0PSQuUzYpeyQubWc9bnVsbApzPXQuYgokLlM2PXMKaWYo
+cz09bnVsbCkkLms4PW51bGwKdC5hLiQwKCl9fSwKZU46ZnVuY3Rpb24oKXskLlVEPSEwCnRyeXtQLnB1
+KCl9ZmluYWxseXskLm1nPW51bGwKJC5VRD0hMQppZigkLlM2IT1udWxsKSQudXQoKS4kMShQLlY5KCkp
+fX0sCmVXOmZ1bmN0aW9uKGEpe3ZhciB0PW5ldyBQLk9NKGEpLHM9JC5rOAppZihzPT1udWxsKXskLlM2
+PSQuazg9dAppZighJC5VRCkkLnV0KCkuJDEoUC5WOSgpKX1lbHNlICQuazg9cy5iPXR9LApyUjpmdW5j
+dGlvbihhKXt2YXIgdCxzLHIscT0kLlM2CmlmKHE9PW51bGwpe1AuZVcoYSkKJC5tZz0kLms4CnJldHVy
+bn10PW5ldyBQLk9NKGEpCnM9JC5tZwppZihzPT1udWxsKXt0LmI9cQokLlM2PSQubWc9dH1lbHNle3I9
+cy5iCnQuYj1yCiQubWc9cy5iPXQKaWYocj09bnVsbCkkLms4PXR9fSwKcmI6ZnVuY3Rpb24oYSl7dmFy
+IHQ9bnVsbCxzPSQuWDMKaWYoQy5OVT09PXMpe1AuVGsodCx0LEMuTlUsYSkKcmV0dXJufVAuVGsodCx0
+LHMsdS5NLmEocy5HWShhKSkpfSwKUXc6ZnVuY3Rpb24oYSxiKXtQLlVJKGEsInN0cmVhbSIsYi5DKCJx
+aDwwPiIpKQpyZXR1cm4gbmV3IFAueEkoYi5DKCJ4STwwPiIpKX0sClRsOmZ1bmN0aW9uKGEsYil7dmFy
+IHQ9Yj09bnVsbD9QLnYwKGEpOmIKUC5VSShhLCJlcnJvciIsdS5LKQpyZXR1cm4gbmV3IFAuQ3coYSx0
+KX0sCnYwOmZ1bmN0aW9uKGEpe3ZhciB0CmlmKHUuVy5iKGEpKXt0PWEuZ0lJKCkKaWYodCE9bnVsbCly
+ZXR1cm4gdH1yZXR1cm4gQy5wZH0sCkwyOmZ1bmN0aW9uKGEsYixjLGQsZSl7UC5yUihuZXcgUC5wSyhk
+LGUpKX0sClQ4OmZ1bmN0aW9uKGEsYixjLGQsZSl7dmFyIHQscz0kLlgzCmlmKHM9PT1jKXJldHVybiBk
+LiQwKCkKJC5YMz1jCnQ9cwp0cnl7cz1kLiQwKCkKcmV0dXJuIHN9ZmluYWxseXskLlgzPXR9fSwKeXY6
+ZnVuY3Rpb24oYSxiLGMsZCxlLGYsZyl7dmFyIHQscz0kLlgzCmlmKHM9PT1jKXJldHVybiBkLiQxKGUp
+CiQuWDM9Ywp0PXMKdHJ5e3M9ZC4kMShlKQpyZXR1cm4gc31maW5hbGx5eyQuWDM9dH19LApReDpmdW5j
+dGlvbihhLGIsYyxkLGUsZixnLGgsaSl7dmFyIHQscz0kLlgzCmlmKHM9PT1jKXJldHVybiBkLiQyKGUs
+ZikKJC5YMz1jCnQ9cwp0cnl7cz1kLiQyKGUsZikKcmV0dXJuIHN9ZmluYWxseXskLlgzPXR9fSwKVGs6
+ZnVuY3Rpb24oYSxiLGMsZCl7dmFyIHQKdS5NLmEoZCkKdD1DLk5VIT09YwppZih0KWQ9ISghdHx8ITEp
+P2MuR1koZCk6Yy5SVChkLHUuSCkKUC5lVyhkKX0sCnRoOmZ1bmN0aW9uIHRoKGEpe3RoaXMuYT1hfSwK
+aGE6ZnVuY3Rpb24gaGEoYSxiLGMpe3RoaXMuYT1hCnRoaXMuYj1iCnRoaXMuYz1jfSwKVnM6ZnVuY3Rp
+b24gVnMoYSl7dGhpcy5hPWF9LApGdDpmdW5jdGlvbiBGdChhKXt0aGlzLmE9YX0sClczOmZ1bmN0aW9u
+IFczKCl7fSwKeUg6ZnVuY3Rpb24geUgoYSxiKXt0aGlzLmE9YQp0aGlzLmI9Yn0sCmloOmZ1bmN0aW9u
+IGloKGEsYil7dGhpcy5hPWEKdGhpcy5iPSExCnRoaXMuJHRpPWJ9LApXTTpmdW5jdGlvbiBXTShhKXt0
+aGlzLmE9YX0sClNYOmZ1bmN0aW9uIFNYKGEpe3RoaXMuYT1hfSwKR3M6ZnVuY3Rpb24gR3MoYSl7dGhp
+cy5hPWF9LApGeTpmdW5jdGlvbiBGeShhLGIpe3RoaXMuYT1hCnRoaXMuYj1ifSwKR1Y6ZnVuY3Rpb24g
+R1YoYSxiKXt2YXIgXz10aGlzCl8uYT1hCl8uZD1fLmM9Xy5iPW51bGwKXy4kdGk9Yn0sCnE0OmZ1bmN0
+aW9uIHE0KGEsYil7dGhpcy5hPWEKdGhpcy4kdGk9Yn0sCmI4OmZ1bmN0aW9uIGI4KCl7fSwKUGY6ZnVu
+Y3Rpb24gUGYoKXt9LApaZjpmdW5jdGlvbiBaZihhLGIpe3RoaXMuYT1hCnRoaXMuJHRpPWJ9LApGZTpm
+dW5jdGlvbiBGZShhLGIsYyxkLGUpe3ZhciBfPXRoaXMKXy5hPW51bGwKXy5iPWEKXy5jPWIKXy5kPWMK
+Xy5lPWQKXy4kdGk9ZX0sCnZzOmZ1bmN0aW9uIHZzKGEsYil7dmFyIF89dGhpcwpfLmE9MApfLmI9YQpf
+LmM9bnVsbApfLiR0aT1ifSwKZGE6ZnVuY3Rpb24gZGEoYSxiKXt0aGlzLmE9YQp0aGlzLmI9Yn0sCm9R
+OmZ1bmN0aW9uIG9RKGEsYil7dGhpcy5hPWEKdGhpcy5iPWJ9LApwVjpmdW5jdGlvbiBwVihhKXt0aGlz
+LmE9YX0sClU3OmZ1bmN0aW9uIFU3KGEpe3RoaXMuYT1hfSwKdnI6ZnVuY3Rpb24gdnIoYSxiLGMpe3Ro
+aXMuYT1hCnRoaXMuYj1iCnRoaXMuYz1jfSwKcnQ6ZnVuY3Rpb24gcnQoYSxiKXt0aGlzLmE9YQp0aGlz
+LmI9Yn0sCktGOmZ1bmN0aW9uIEtGKGEsYil7dGhpcy5hPWEKdGhpcy5iPWJ9LApaTDpmdW5jdGlvbiBa
+TChhLGIsYyl7dGhpcy5hPWEKdGhpcy5iPWIKdGhpcy5jPWN9LApSVDpmdW5jdGlvbiBSVChhLGIsYyl7
+dGhpcy5hPWEKdGhpcy5iPWIKdGhpcy5jPWN9LApqWjpmdW5jdGlvbiBqWihhKXt0aGlzLmE9YX0sCnJx
+OmZ1bmN0aW9uIHJxKGEsYil7dGhpcy5hPWEKdGhpcy5iPWJ9LApSVzpmdW5jdGlvbiBSVyhhLGIpe3Ro
+aXMuYT1hCnRoaXMuYj1ifSwKT006ZnVuY3Rpb24gT00oYSl7dGhpcy5hPWEKdGhpcy5iPW51bGx9LApx
+aDpmdW5jdGlvbiBxaCgpe30sCkI1OmZ1bmN0aW9uIEI1KGEsYil7dGhpcy5hPWEKdGhpcy5iPWJ9LAp1
+TzpmdW5jdGlvbiB1TyhhLGIpe3RoaXMuYT1hCnRoaXMuYj1ifSwKTU86ZnVuY3Rpb24gTU8oKXt9LApr
+VDpmdW5jdGlvbiBrVCgpe30sCnhJOmZ1bmN0aW9uIHhJKGEpe3RoaXMuJHRpPWF9LApDdzpmdW5jdGlv
+biBDdyhhLGIpe3RoaXMuYT1hCnRoaXMuYj1ifSwKbTA6ZnVuY3Rpb24gbTAoKXt9LApwSzpmdW5jdGlv
+biBwSyhhLGIpe3RoaXMuYT1hCnRoaXMuYj1ifSwKSmk6ZnVuY3Rpb24gSmkoKXt9LApoajpmdW5jdGlv
+biBoaihhLGIsYyl7dGhpcy5hPWEKdGhpcy5iPWIKdGhpcy5jPWN9LApWcDpmdW5jdGlvbiBWcChhLGIp
+e3RoaXMuYT1hCnRoaXMuYj1ifSwKT1I6ZnVuY3Rpb24gT1IoYSxiLGMpe3RoaXMuYT1hCnRoaXMuYj1i
+CnRoaXMuYz1jfSwKRUY6ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBiLkMoIkA8MD4iKS5LcShjKS5DKCJG
+bzwxLDI+IikuYShILkI3KGEsbmV3IEguTjUoYi5DKCJAPDA+IikuS3EoYykuQygiTjU8MSwyPiIpKSkp
+fSwKRmw6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gbmV3IEguTjUoYS5DKCJAPDA+IikuS3EoYikuQygiTjU8
+MSwyPiIpKX0sCkxzOmZ1bmN0aW9uKGEpe3JldHVybiBuZXcgUC5iNihhLkMoImI2PDA+IikpfSwKVDI6
+ZnVuY3Rpb24oKXt2YXIgdD1PYmplY3QuY3JlYXRlKG51bGwpCnRbIjxub24taWRlbnRpZmllci1rZXk+
+Il09dApkZWxldGUgdFsiPG5vbi1pZGVudGlmaWVyLWtleT4iXQpyZXR1cm4gdH0sCnJqOmZ1bmN0aW9u
+KGEsYixjKXt2YXIgdD1uZXcgUC5sbShhLGIsYy5DKCJsbTwwPiIpKQp0LmM9YS5lCnJldHVybiB0fSwK
+RVA6ZnVuY3Rpb24oYSxiLGMpe3ZhciB0LHMKaWYoUC5oQihhKSl7aWYoYj09PSIoIiYmYz09PSIpIily
+ZXR1cm4iKC4uLikiCnJldHVybiBiKyIuLi4iK2N9dD1ILlZNKFtdLHUucykKQy5ObS5pKCQueGcsYSkK
+dHJ5e1AuVnIoYSx0KX1maW5hbGx5e2lmKDA+PSQueGcubGVuZ3RoKXJldHVybiBILk9IKCQueGcsLTEp
+CiQueGcucG9wKCl9cz1QLnZnKGIsdS5tLmEodCksIiwgIikrYwpyZXR1cm4gcy5jaGFyQ29kZUF0KDAp
+PT0wP3M6c30sCldFOmZ1bmN0aW9uKGEsYixjKXt2YXIgdCxzCmlmKFAuaEIoYSkpcmV0dXJuIGIrIi4u
+LiIrYwp0PW5ldyBQLlJuKGIpCkMuTm0uaSgkLnhnLGEpCnRyeXtzPXQKcy5hPVAudmcocy5hLGEsIiwg
+Iil9ZmluYWxseXtpZigwPj0kLnhnLmxlbmd0aClyZXR1cm4gSC5PSCgkLnhnLC0xKQokLnhnLnBvcCgp
+fXQuYSs9YwpzPXQuYQpyZXR1cm4gcy5jaGFyQ29kZUF0KDApPT0wP3M6c30sCmhCOmZ1bmN0aW9uKGEp
+e3ZhciB0LHMKZm9yKHQ9JC54Zy5sZW5ndGgscz0wO3M8dDsrK3MpaWYoYT09PSQueGdbc10pcmV0dXJu
+ITAKcmV0dXJuITF9LApWcjpmdW5jdGlvbihhLGIpe3ZhciB0LHMscixxLHAsbyxuLG09YS5na3ooYSks
+bD0wLGs9MAp3aGlsZSghMCl7aWYoIShsPDgwfHxrPDMpKWJyZWFrCmlmKCFtLkYoKSlyZXR1cm4KdD1I
+LkVqKG0uZ2woKSkKQy5ObS5pKGIsdCkKbCs9dC5sZW5ndGgrMjsrK2t9aWYoIW0uRigpKXtpZihrPD01
+KXJldHVybgppZigwPj1iLmxlbmd0aClyZXR1cm4gSC5PSChiLC0xKQpzPWIucG9wKCkKaWYoMD49Yi5s
+ZW5ndGgpcmV0dXJuIEguT0goYiwtMSkKcj1iLnBvcCgpfWVsc2V7cT1tLmdsKCk7KytrCmlmKCFtLkYo
+KSl7aWYoazw9NCl7Qy5ObS5pKGIsSC5FaihxKSkKcmV0dXJufXM9SC5FaihxKQppZigwPj1iLmxlbmd0
+aClyZXR1cm4gSC5PSChiLC0xKQpyPWIucG9wKCkKbCs9cy5sZW5ndGgrMn1lbHNle3A9bS5nbCgpOysr
+awpmb3IoO20uRigpO3E9cCxwPW8pe289bS5nbCgpOysrawppZihrPjEwMCl7d2hpbGUoITApe2lmKCEo
+bD43NSYmaz4zKSlicmVhawppZigwPj1iLmxlbmd0aClyZXR1cm4gSC5PSChiLC0xKQpsLT1iLnBvcCgp
+Lmxlbmd0aCsyOy0ta31DLk5tLmkoYiwiLi4uIikKcmV0dXJufX1yPUguRWoocSkKcz1ILkVqKHApCmwr
+PXMubGVuZ3RoK3IubGVuZ3RoKzR9fWlmKGs+Yi5sZW5ndGgrMil7bCs9NQpuPSIuLi4ifWVsc2Ugbj1u
+dWxsCndoaWxlKCEwKXtpZighKGw+ODAmJmIubGVuZ3RoPjMpKWJyZWFrCmlmKDA+PWIubGVuZ3RoKXJl
+dHVybiBILk9IKGIsLTEpCmwtPWIucG9wKCkubGVuZ3RoKzIKaWYobj09bnVsbCl7bCs9NQpuPSIuLi4i
+fX1pZihuIT1udWxsKUMuTm0uaShiLG4pCkMuTm0uaShiLHIpCkMuTm0uaShiLHMpfSwKdE06ZnVuY3Rp
+b24oYSxiKXt2YXIgdCxzLHI9UC5McyhiKQpmb3IodD1hLmxlbmd0aCxzPTA7czxhLmxlbmd0aDthLmxl
+bmd0aD09PXR8fCgwLEgubGspKGEpLCsrcylyLmkoMCxiLmEoYVtzXSkpCnJldHVybiByfSwKbk86ZnVu
+Y3Rpb24oYSl7dmFyIHQscz17fQppZihQLmhCKGEpKXJldHVybiJ7Li4ufSIKdD1uZXcgUC5SbigiIikK
+dHJ5e0MuTm0uaSgkLnhnLGEpCnQuYSs9InsiCnMuYT0hMAphLksoMCxuZXcgUC5yYShzLHQpKQp0LmEr
+PSJ9In1maW5hbGx5e2lmKDA+PSQueGcubGVuZ3RoKXJldHVybiBILk9IKCQueGcsLTEpCiQueGcucG9w
+KCl9cz10LmEKcmV0dXJuIHMuY2hhckNvZGVBdCgwKT09MD9zOnN9LApiNjpmdW5jdGlvbiBiNihhKXt2
+YXIgXz10aGlzCl8uYT0wCl8uZj1fLmU9Xy5kPV8uYz1fLmI9bnVsbApfLnI9MApfLiR0aT1hfSwKYm46
+ZnVuY3Rpb24gYm4oYSl7dGhpcy5hPWEKdGhpcy5jPXRoaXMuYj1udWxsfSwKbG06ZnVuY3Rpb24gbG0o
+YSxiLGMpe3ZhciBfPXRoaXMKXy5hPWEKXy5iPWIKXy5kPV8uYz1udWxsCl8uJHRpPWN9LAptVzpmdW5j
+dGlvbiBtVygpe30sCkxVOmZ1bmN0aW9uIExVKCl7fSwKbEQ6ZnVuY3Rpb24gbEQoKXt9LAppbDpmdW5j
+dGlvbiBpbCgpe30sCnJhOmZ1bmN0aW9uIHJhKGEsYil7dGhpcy5hPWEKdGhpcy5iPWJ9LApZazpmdW5j
+dGlvbiBZaygpe30sCnlROmZ1bmN0aW9uIHlRKGEpe3RoaXMuYT1hfSwKS1A6ZnVuY3Rpb24gS1AoKXt9
+LApQbjpmdW5jdGlvbiBQbigpe30sCkdqOmZ1bmN0aW9uIEdqKGEsYil7dGhpcy5hPWEKdGhpcy4kdGk9
+Yn0sCk1hOmZ1bmN0aW9uIE1hKCl7fSwKVmo6ZnVuY3Rpb24gVmooKXt9LApYdjpmdW5jdGlvbiBYdigp
+e30sCm5ZOmZ1bmN0aW9uIG5ZKCl7fSwKV1k6ZnVuY3Rpb24gV1koKXt9LApSVTpmdW5jdGlvbiBSVSgp
+e30sCkJTOmZ1bmN0aW9uKGEsYil7dmFyIHQscyxyLHEKaWYodHlwZW9mIGEhPSJzdHJpbmciKXRocm93
+IEguYihILnRMKGEpKQp0PW51bGwKdHJ5e3Q9SlNPTi5wYXJzZShhKX1jYXRjaChyKXtzPUguUnUocikK
+cT1QLnJyKFN0cmluZyhzKSxudWxsLG51bGwpCnRocm93IEguYihxKX1xPVAuUWUodCkKcmV0dXJuIHF9
+LApRZTpmdW5jdGlvbihhKXt2YXIgdAppZihhPT1udWxsKXJldHVybiBudWxsCmlmKHR5cGVvZiBhIT0i
+b2JqZWN0IilyZXR1cm4gYQppZihPYmplY3QuZ2V0UHJvdG90eXBlT2YoYSkhPT1BcnJheS5wcm90b3R5
+cGUpcmV0dXJuIG5ldyBQLnV3KGEsT2JqZWN0LmNyZWF0ZShudWxsKSkKZm9yKHQ9MDt0PGEubGVuZ3Ro
+OysrdClhW3RdPVAuUWUoYVt0XSkKcmV0dXJuIGF9LApreTpmdW5jdGlvbihhLGIsYyxkKXtpZihiIGlu
+c3RhbmNlb2YgVWludDhBcnJheSlyZXR1cm4gUC5DRyghMSxiLGMsZCkKcmV0dXJuIG51bGx9LApDRzpm
+dW5jdGlvbihhLGIsYyxkKXt2YXIgdCxzLHI9JC5yZigpCmlmKHI9PW51bGwpcmV0dXJuIG51bGwKdD0w
+PT09YwppZih0JiYhMClyZXR1cm4gUC5PUShyLGIpCnM9Yi5sZW5ndGgKZD1QLmpCKGMsZCxzKQppZih0
+JiZkPT09cylyZXR1cm4gUC5PUShyLGIpCnJldHVybiBQLk9RKHIsYi5zdWJhcnJheShjLGQpKX0sCk9R
+OmZ1bmN0aW9uKGEsYil7aWYoUC5BaihiKSlyZXR1cm4gbnVsbApyZXR1cm4gUC5KaChhLGIpfSwKSmg6
+ZnVuY3Rpb24oYSxiKXt2YXIgdCxzCnRyeXt0PWEuZGVjb2RlKGIpCnJldHVybiB0fWNhdGNoKHMpe0gu
+UnUocyl9cmV0dXJuIG51bGx9LApBajpmdW5jdGlvbihhKXt2YXIgdCxzPWEubGVuZ3RoLTIKZm9yKHQ9
+MDt0PHM7Kyt0KWlmKGFbdF09PT0yMzcpaWYoKGFbdCsxXSYyMjQpPT09MTYwKXJldHVybiEwCnJldHVy
+biExfSwKY1A6ZnVuY3Rpb24oYSxiLGMpe3ZhciB0LHMscgpmb3IodD1KLlU2KGEpLHM9YjtzPGM7Kytz
+KXtyPXQucShhLHMpCmlmKHR5cGVvZiByIT09Im51bWJlciIpcmV0dXJuIHIuek0oKQppZigociYxMjcp
+IT09cilyZXR1cm4gcy1ifXJldHVybiBjLWJ9LAp4TTpmdW5jdGlvbihhLGIsYyxkLGUsZil7aWYoQy5q
+bi56WShmLDQpIT09MCl0aHJvdyBILmIoUC5ycigiSW52YWxpZCBiYXNlNjQgcGFkZGluZywgcGFkZGVk
+IGxlbmd0aCBtdXN0IGJlIG11bHRpcGxlIG9mIGZvdXIsIGlzICIrZixhLGMpKQppZihkK2UhPT1mKXRo
+cm93IEguYihQLnJyKCJJbnZhbGlkIGJhc2U2NCBwYWRkaW5nLCAnPScgbm90IGF0IHRoZSBlbmQiLGEs
+YikpCmlmKGU+Mil0aHJvdyBILmIoUC5ycigiSW52YWxpZCBiYXNlNjQgcGFkZGluZywgbW9yZSB0aGFu
+IHR3byAnPScgY2hhcmFjdGVycyIsYSxiKSl9LAp1dzpmdW5jdGlvbiB1dyhhLGIpe3RoaXMuYT1hCnRo
+aXMuYj1iCnRoaXMuYz1udWxsfSwKaTg6ZnVuY3Rpb24gaTgoYSl7dGhpcy5hPWF9LApwZzpmdW5jdGlv
+biBwZygpe30sCkNWOmZ1bmN0aW9uIENWKCl7fSwKVTg6ZnVuY3Rpb24gVTgoKXt9LApVazpmdW5jdGlv
+biBVaygpe30sCndJOmZ1bmN0aW9uIHdJKCl7fSwKWmk6ZnVuY3Rpb24gWmkoKXt9LApieTpmdW5jdGlv
+biBieSgpe30sCk14OmZ1bmN0aW9uIE14KGEpe3RoaXMuYT1hfSwKdTU6ZnVuY3Rpb24gdTUoKXt9LApF
+MzpmdW5jdGlvbiBFMygpe30sClJ3OmZ1bmN0aW9uIFJ3KGEpe3RoaXMuYj0wCnRoaXMuYz1hfSwKR1k6
+ZnVuY3Rpb24gR1koYSl7dGhpcy5hPWF9LApiejpmdW5jdGlvbiBieihhLGIpe3ZhciBfPXRoaXMKXy5h
+PWEKXy5iPWIKXy5jPSEwCl8uZj1fLmU9Xy5kPTB9LApRQTpmdW5jdGlvbihhLGIpe3ZhciB0PUguSHAo
+YSxiKQppZih0IT1udWxsKXJldHVybiB0CnRocm93IEguYihQLnJyKGEsbnVsbCxudWxsKSl9LApGOmZ1
+bmN0aW9uKGEpe2lmKGEgaW5zdGFuY2VvZiBILnYpcmV0dXJuIGEudygwKQpyZXR1cm4iSW5zdGFuY2Ug
+b2YgJyIrSC5FaihILk0oYSkpKyInIn0sCk84OmZ1bmN0aW9uKGEsYixjLGQpe3ZhciB0LHM9Si5RaShh
+LGQpCmlmKGEhPT0wJiZiIT1udWxsKWZvcih0PTA7dDxzLmxlbmd0aDsrK3Qpc1t0XT1iCnJldHVybiBz
+fSwKQ0g6ZnVuY3Rpb24oYSxiLGMpe3ZhciB0LHM9SC5WTShbXSxjLkMoImpkPDA+IikpCmZvcih0PUou
+SVQoYSk7dC5GKCk7KUMuTm0uaShzLGMuYSh0LmdsKCkpKQppZihiKXJldHVybiBzCnJldHVybiBKLkVw
+KHMsYyl9LApkSDpmdW5jdGlvbihhLGIsYyxkKXt2YXIgdCxzPUouS2goYSxkKQpmb3IodD0wO3Q8YTsr
+K3QpQy5ObS5ZKHMsdCxiLiQxKHQpKQpyZXR1cm4gc30sCkFGOmZ1bmN0aW9uKGEsYil7cmV0dXJuIEou
+ekMoUC5DSChhLCExLGIpKX0sCkhNOmZ1bmN0aW9uKGEsYixjKXt2YXIgdCxzCmlmKEFycmF5LmlzQXJy
+YXkoYSkpe3Q9YQpzPXQubGVuZ3RoCmM9UC5qQihiLGMscykKcmV0dXJuIEguZVQoYj4wfHxjPHM/dC5z
+bGljZShiLGMpOnQpfWlmKHUuYm0uYihhKSlyZXR1cm4gSC5mdyhhLGIsUC5qQihiLGMsYS5sZW5ndGgp
+KQpyZXR1cm4gUC5idyhhLGIsYyl9LApPbzpmdW5jdGlvbihhKXtyZXR1cm4gSC5MdyhhKX0sCmJ3OmZ1
+bmN0aW9uKGEsYixjKXt2YXIgdCxzLHIscSxwPW51bGwKaWYoYjwwKXRocm93IEguYihQLlRFKGIsMCxK
+LkhtKGEpLHAscCkpCnQ9Yz09bnVsbAppZighdCYmYzxiKXRocm93IEguYihQLlRFKGMsYixKLkhtKGEp
+LHAscCkpCnM9Si5JVChhKQpmb3Iocj0wO3I8YjsrK3IpaWYoIXMuRigpKXRocm93IEguYihQLlRFKGIs
+MCxyLHAscCkpCnE9W10KaWYodClmb3IoO3MuRigpOylxLnB1c2gocy5nbCgpKQplbHNlIGZvcihyPWI7
+cjxjOysrcil7aWYoIXMuRigpKXRocm93IEguYihQLlRFKGMsYixyLHAscCkpCnEucHVzaChzLmdsKCkp
+fXJldHVybiBILmVUKHEpfSwKbnU6ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyBILlZSKGEsSC52NChhLCEx
+LCEwLCExLCExLCExKSl9LAp2ZzpmdW5jdGlvbihhLGIsYyl7dmFyIHQ9Si5JVChiKQppZighdC5GKCkp
+cmV0dXJuIGEKaWYoYy5sZW5ndGg9PT0wKXtkbyBhKz1ILkVqKHQuZ2woKSkKd2hpbGUodC5GKCkpfWVs
+c2V7YSs9SC5Faih0LmdsKCkpCmZvcig7dC5GKCk7KWE9YStjK0guRWoodC5nbCgpKX1yZXR1cm4gYX0s
+CmxyOmZ1bmN0aW9uKGEsYixjLGQpe3JldHVybiBuZXcgUC5tcChhLGIsYyxkKX0sCnVvOmZ1bmN0aW9u
+KCl7dmFyIHQ9SC5NMCgpCmlmKHQhPW51bGwpcmV0dXJuIFAuaEsodCkKdGhyb3cgSC5iKFAuTDQoIidV
+cmkuYmFzZScgaXMgbm90IHN1cHBvcnRlZCIpKX0sCmVQOmZ1bmN0aW9uKGEsYixjLGQpe3ZhciB0LHMs
+cixxLHAsbyxuPSIwMTIzNDU2Nzg5QUJDREVGIgppZihjPT09Qy54TSl7dD0kLno0KCkuYgppZih0eXBl
+b2YgYiE9InN0cmluZyIpSC52aChILnRMKGIpKQp0PXQudGVzdChiKX1lbHNlIHQ9ITEKaWYodClyZXR1
+cm4gYgpILkxoKGMpLkMoIlVrLlMiKS5hKGIpCnM9Yy5nWkUoKS5XSihiKQpmb3IodD1zLmxlbmd0aCxy
+PTAscT0iIjtyPHQ7KytyKXtwPXNbcl0KaWYocDwxMjgpe289cD4+PjQKaWYobz49OClyZXR1cm4gSC5P
+SChhLG8pCm89KGFbb10mMTw8KHAmMTUpKSE9PTB9ZWxzZSBvPSExCmlmKG8pcSs9SC5MdyhwKQplbHNl
+IHE9ZCYmcD09PTMyP3ErIisiOnErIiUiK25bcD4+PjQmMTVdK25bcCYxNV19cmV0dXJuIHEuY2hhckNv
+ZGVBdCgwKT09MD9xOnF9LApHcTpmdW5jdGlvbihhKXt2YXIgdD1NYXRoLmFicyhhKSxzPWE8MD8iLSI6
+IiIKaWYodD49MTAwMClyZXR1cm4iIithCmlmKHQ+PTEwMClyZXR1cm4gcysiMCIrdAppZih0Pj0xMCly
+ZXR1cm4gcysiMDAiK3QKcmV0dXJuIHMrIjAwMCIrdH0sClZ4OmZ1bmN0aW9uKGEpe2lmKGE+PTEwMCly
+ZXR1cm4iIithCmlmKGE+PTEwKXJldHVybiIwIithCnJldHVybiIwMCIrYX0sCmgwOmZ1bmN0aW9uKGEp
+e2lmKGE+PTEwKXJldHVybiIiK2EKcmV0dXJuIjAiK2F9LApwOmZ1bmN0aW9uKGEpe2lmKHR5cGVvZiBh
+PT0ibnVtYmVyInx8SC5sKGEpfHxudWxsPT1hKXJldHVybiBKLmooYSkKaWYodHlwZW9mIGE9PSJzdHJp
+bmciKXJldHVybiBKU09OLnN0cmluZ2lmeShhKQpyZXR1cm4gUC5GKGEpfSwKaFY6ZnVuY3Rpb24oYSl7
+cmV0dXJuIG5ldyBQLkM2KGEpfSwKeFk6ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyBQLnUoITEsbnVsbCxu
+dWxsLGEpfSwKTDM6ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBuZXcgUC51KCEwLGEsYixjKX0sClVJOmZ1
+bmN0aW9uKGEsYixjKXtpZihhPT1udWxsKXRocm93IEguYihuZXcgUC51KCExLG51bGwsYiwiTXVzdCBu
+b3QgYmUgbnVsbCIpKQpyZXR1cm4gYX0sCk83OmZ1bmN0aW9uKGEsYil7cmV0dXJuIG5ldyBQLmJKKG51
+bGwsbnVsbCwhMCxhLGIsIlZhbHVlIG5vdCBpbiByYW5nZSIpfSwKVEU6ZnVuY3Rpb24oYSxiLGMsZCxl
+KXtyZXR1cm4gbmV3IFAuYkooYixjLCEwLGEsZCwiSW52YWxpZCB2YWx1ZSIpfSwKd0E6ZnVuY3Rpb24o
+YSxiLGMsZCl7aWYoYTxifHxhPmMpdGhyb3cgSC5iKFAuVEUoYSxiLGMsZCxudWxsKSkKcmV0dXJuIGF9
+LApqQjpmdW5jdGlvbihhLGIsYyl7aWYoMD5hfHxhPmMpdGhyb3cgSC5iKFAuVEUoYSwwLGMsInN0YXJ0
+IixudWxsKSkKaWYoYiE9bnVsbCl7aWYoYT5ifHxiPmMpdGhyb3cgSC5iKFAuVEUoYixhLGMsImVuZCIs
+bnVsbCkpCnJldHVybiBifXJldHVybiBjfSwKazE6ZnVuY3Rpb24oYSxiKXtpZihhPDApdGhyb3cgSC5i
+KFAuVEUoYSwwLG51bGwsYixudWxsKSkKcmV0dXJuIGF9LApDZjpmdW5jdGlvbihhLGIsYyxkLGUpe3Zh
+ciB0PUgudVAoZT09bnVsbD9KLkhtKGIpOmUpCnJldHVybiBuZXcgUC5lWSh0LCEwLGEsYywiSW5kZXgg
+b3V0IG9mIHJhbmdlIil9LApMNDpmdW5jdGlvbihhKXtyZXR1cm4gbmV3IFAudWIoYSl9LApTWTpmdW5j
+dGlvbihhKXtyZXR1cm4gbmV3IFAuZHMoYSl9LApQVjpmdW5jdGlvbihhKXtyZXR1cm4gbmV3IFAubGoo
+YSl9LAphNDpmdW5jdGlvbihhKXtyZXR1cm4gbmV3IFAuVVYoYSl9LApycjpmdW5jdGlvbihhLGIsYyl7
+cmV0dXJuIG5ldyBQLmFFKGEsYixjKX0sCmhLOmZ1bmN0aW9uKGE0KXt2YXIgdCxzLHIscSxwLG8sbixt
+LGwsayxqLGksaCxnLGYsZSxkLGMsYixhLGEwLGExLGEyPW51bGwsYTM9YTQubGVuZ3RoCmlmKGEzPj01
+KXt0PSgoSi5ReihhNCw0KV41OCkqM3xDLnhCLlcoYTQsMCleMTAwfEMueEIuVyhhNCwxKV45N3xDLnhC
+LlcoYTQsMileMTE2fEMueEIuVyhhNCwzKV45Nyk+Pj4wCmlmKHQ9PT0wKXJldHVybiBQLktEKGEzPGEz
+P0MueEIuTmooYTQsMCxhMyk6YTQsNSxhMikuZ2xSKCkKZWxzZSBpZih0PT09MzIpcmV0dXJuIFAuS0Qo
+Qy54Qi5OaihhNCw1LGEzKSwwLGEyKS5nbFIoKX1zPVAuTzgoOCwwLCExLHUuUykKQy5ObS5ZKHMsMCww
+KQpDLk5tLlkocywxLC0xKQpDLk5tLlkocywyLC0xKQpDLk5tLlkocyw3LC0xKQpDLk5tLlkocywzLDAp
+CkMuTm0uWShzLDQsMCkKQy5ObS5ZKHMsNSxhMykKQy5ObS5ZKHMsNixhMykKaWYoUC5VQihhNCwwLGEz
+LDAscyk+PTE0KUMuTm0uWShzLDcsYTMpCmlmKDE+PXMubGVuZ3RoKXJldHVybiBILk9IKHMsMSkKcj1z
+WzFdCmlmKHI+PTApaWYoUC5VQihhNCwwLHIsMjAscyk9PT0yMCl7aWYoNz49cy5sZW5ndGgpcmV0dXJu
+IEguT0gocyw3KQpzWzddPXJ9cT1zLmxlbmd0aAppZigyPj1xKXJldHVybiBILk9IKHMsMikKcD1zWzJd
+KzEKaWYoMz49cSlyZXR1cm4gSC5PSChzLDMpCm89c1szXQppZig0Pj1xKXJldHVybiBILk9IKHMsNCkK
+bj1zWzRdCmlmKDU+PXEpcmV0dXJuIEguT0gocyw1KQptPXNbNV0KaWYoNj49cSlyZXR1cm4gSC5PSChz
+LDYpCmw9c1s2XQppZihsPG0pbT1sCmlmKG48cCluPW0KZWxzZSBpZihuPD1yKW49cisxCmlmKG88cClv
+PW4KaWYoNz49cSlyZXR1cm4gSC5PSChzLDcpCms9c1s3XTwwCmlmKGspaWYocD5yKzMpe2o9YTIKaz0h
+MX1lbHNle3E9bz4wCmlmKHEmJm8rMT09PW4pe2o9YTIKaz0hMX1lbHNle2lmKCEobTxhMyYmbT09PW4r
+MiYmSi5xMChhNCwiLi4iLG4pKSlpPW0+bisyJiZKLnEwKGE0LCIvLi4iLG0tMykKZWxzZSBpPSEwCmlm
+KGkpe2o9YTIKaz0hMX1lbHNle2lmKHI9PT00KWlmKEoucTAoYTQsImZpbGUiLDApKXtpZihwPD0wKXtp
+ZighQy54Qi5RaShhNCwiLyIsbikpe2g9ImZpbGU6Ly8vIgp0PTN9ZWxzZXtoPSJmaWxlOi8vIgp0PTJ9
+YTQ9aCtDLnhCLk5qKGE0LG4sYTMpCnItPTAKcT10LTAKbSs9cQpsKz1xCmEzPWE0Lmxlbmd0aApwPTcK
+bz03Cm49N31lbHNlIGlmKG49PT1tKXsrK2wKZz1tKzEKYTQ9Qy54Qi5pNyhhNCxuLG0sIi8iKTsrK2Ez
+Cm09Z31qPSJmaWxlIn1lbHNlIGlmKEMueEIuUWkoYTQsImh0dHAiLDApKXtpZihxJiZvKzM9PT1uJiZD
+LnhCLlFpKGE0LCI4MCIsbysxKSl7bC09MwpmPW4tMwptLT0zCmE0PUMueEIuaTcoYTQsbyxuLCIiKQph
+My09MwpuPWZ9aj0iaHR0cCJ9ZWxzZSBqPWEyCmVsc2UgaWYocj09PTUmJkoucTAoYTQsImh0dHBzIiww
+KSl7aWYocSYmbys0PT09biYmSi5xMChhNCwiNDQzIixvKzEpKXtsLT00CmY9bi00Cm0tPTQKYTQ9Si5k
+ZyhhNCxvLG4sIiIpCmEzLT0zCm49Zn1qPSJodHRwcyJ9ZWxzZSBqPWEyCms9ITB9fX1lbHNlIGo9YTIK
+aWYoayl7cT1hNC5sZW5ndGgKaWYoYTM8cSl7YTQ9Si5sZChhNCwwLGEzKQpyLT0wCnAtPTAKby09MApu
+LT0wCm0tPTAKbC09MH1yZXR1cm4gbmV3IFAuVWYoYTQscixwLG8sbixtLGwsail9aWYoaj09bnVsbClp
+ZihyPjApaj1QLlBpKGE0LDAscikKZWxzZXtpZihyPT09MClQLlIzKGE0LDAsIkludmFsaWQgZW1wdHkg
+c2NoZW1lIikKaj0iIn1pZihwPjApe2U9ciszCmQ9ZTxwP1AuelIoYTQsZSxwLTEpOiIiCmM9UC5PZShh
+NCxwLG8sITEpCnE9bysxCmlmKHE8bil7Yj1ILkhwKEoubGQoYTQscSxuKSxhMikKYT1QLndCKGI9PW51
+bGw/SC52aChQLnJyKCJJbnZhbGlkIHBvcnQiLGE0LHEpKTpiLGopfWVsc2UgYT1hMn1lbHNle2E9YTIK
+Yz1hCmQ9IiJ9YTA9UC5rYShhNCxuLG0sYTIsaixjIT1udWxsKQphMT1tPGw/UC5sZShhNCxtKzEsbCxh
+Mik6YTIKcmV0dXJuIG5ldyBQLkRuKGosZCxjLGEsYTAsYTEsbDxhMz9QLnRHKGE0LGwrMSxhMyk6YTIp
+fSwKTXQ6ZnVuY3Rpb24oYSl7SC5oKGEpCnJldHVybiBQLmt1KGEsMCxhLmxlbmd0aCxDLnhNLCExKX0s
+CldYOmZ1bmN0aW9uKGEpe3ZhciB0PXUuTgpyZXR1cm4gQy5ObS5OMChILlZNKGEuc3BsaXQoIiYiKSx1
+LnMpLFAuRmwodCx0KSxuZXcgUC5uMShDLnhNKSx1LmYpfSwKSGg6ZnVuY3Rpb24oYSxiLGMpe3ZhciB0
+LHMscixxLHAsbyxuLG09IklQdjQgYWRkcmVzcyBzaG91bGQgY29udGFpbiBleGFjdGx5IDQgcGFydHMi
+LGw9ImVhY2ggcGFydCBtdXN0IGJlIGluIHRoZSByYW5nZSAwLi4yNTUiLGs9bmV3IFAuY1MoYSksaj1u
+ZXcgVWludDhBcnJheSg0KQpmb3IodD1qLmxlbmd0aCxzPWIscj1zLHE9MDtzPGM7KytzKXtwPUMueEIu
+bShhLHMpCmlmKHAhPT00Nil7aWYoKHBeNDgpPjkpay4kMigiaW52YWxpZCBjaGFyYWN0ZXIiLHMpfWVs
+c2V7aWYocT09PTMpay4kMihtLHMpCm89UC5RQShDLnhCLk5qKGEscixzKSxudWxsKQppZih0eXBlb2Yg
+byE9PSJudW1iZXIiKXJldHVybiBvLm9zKCkKaWYobz4yNTUpay4kMihsLHIpCm49cSsxCmlmKHE+PXQp
+cmV0dXJuIEguT0goaixxKQpqW3FdPW8Kcj1zKzEKcT1ufX1pZihxIT09MylrLiQyKG0sYykKbz1QLlFB
+KEMueEIuTmooYSxyLGMpLG51bGwpCmlmKHR5cGVvZiBvIT09Im51bWJlciIpcmV0dXJuIG8ub3MoKQpp
+ZihvPjI1NSlrLiQyKGwscikKaWYocT49dClyZXR1cm4gSC5PSChqLHEpCmpbcV09bwpyZXR1cm4gan0s
 CmVnOmZ1bmN0aW9uKGEsYixhMCl7dmFyIHQscyxyLHEscCxvLG4sbSxsLGssaixpLGgsZyxmLGUsZD1u
 ZXcgUC5WQyhhKSxjPW5ldyBQLkpUKGQsYSkKaWYoYS5sZW5ndGg8MilkLiQxKCJhZGRyZXNzIGlzIHRv
 byBzaG9ydCIpCnQ9SC5WTShbXSx1LnQpCmZvcihzPWIscj1zLHE9ITEscD0hMTtzPGEwOysrcyl7bz1D
@@ -1455,16 +1523,8 @@
 e2lmKGg8MHx8aD49ailyZXR1cm4gSC5PSChrLGgpCmtbaF09MAplPWgrMQppZihlPj1qKXJldHVybiBI
 Lk9IKGssZSkKa1tlXT0wCmgrPTJ9ZWxzZXtlPUMuam4ud0coZyw4KQppZihoPDB8fGg+PWopcmV0dXJu
 IEguT0goayxoKQprW2hdPWUKZT1oKzEKaWYoZT49ailyZXR1cm4gSC5PSChrLGUpCmtbZV09ZyYyNTUK
-aCs9Mn19cmV0dXJuIGt9LApqdjpmdW5jdGlvbihhLGIsYyxkLGUsZixnLGgsaSxqKXt2YXIgdCxzLHIs
-cSxwLG8sbixtPW51bGwKaWYoaj09bnVsbClpZihkPmIpaj1QLlBpKGEsYixkKQplbHNle2lmKGQ9PT1i
-KVAuUjMoYSxiLCJJbnZhbGlkIGVtcHR5IHNjaGVtZSIpCmo9IiJ9aWYoZT5iKXt0PWQrMwpzPXQ8ZT9Q
-LnpSKGEsdCxlLTEpOiIiCnI9UC5PZShhLGUsZiwhMSkKaWYodHlwZW9mIGYhPT0ibnVtYmVyIilyZXR1
-cm4gZi5oKCkKcT1mKzEKaWYodHlwZW9mIGchPT0ibnVtYmVyIilyZXR1cm4gSC5wWShnKQpwPXE8Zz9Q
-LndCKFAuUUEoSi5sZChhLHEsZyksbmV3IFAuZTEoYSxmKSxtKSxqKTptfWVsc2V7cD1tCnI9cApzPSIi
-fW89UC5rYShhLGcsaCxtLGosciE9bnVsbCkKaWYodHlwZW9mIGghPT0ibnVtYmVyIilyZXR1cm4gaC5K
-KCkKbj1oPGk/UC5sZShhLGgrMSxpLG0pOm0KcmV0dXJuIG5ldyBQLkRuKGoscyxyLHAsbyxuLGk8Yz9Q
-LnRHKGEsaSsxLGMpOm0pfSwKS0w6ZnVuY3Rpb24oYSxiLGMsZCxlLGYsZyl7dmFyIHQscyxyLHEscCxv
-CmY9UC5QaShmLDAsZj09bnVsbD8wOmYubGVuZ3RoKQpnPVAuelIoZywwLGc9PW51bGw/MDpnLmxlbmd0
+aCs9Mn19cmV0dXJuIGt9LApLTDpmdW5jdGlvbihhLGIsYyxkLGUsZixnKXt2YXIgdCxzLHIscSxwLG8K
+Zj1mPT1udWxsPyIiOlAuUGkoZiwwLGYubGVuZ3RoKQpnPVAuelIoZywwLGc9PW51bGw/MDpnLmxlbmd0
 aCkKYT1QLk9lKGEsMCxhPT1udWxsPzA6YS5sZW5ndGgsITEpCnQ9UC5sZShudWxsLDAsMCxlKQpzPVAu
 dEcobnVsbCwwLDApCmQ9UC53QihkLGYpCnI9Zj09PSJmaWxlIgppZihhPT1udWxsKXE9Zy5sZW5ndGgh
 PT0wfHxkIT1udWxsfHxyCmVsc2UgcT0hMQppZihxKWE9IiIKcT1hPT1udWxsCnA9IXEKYj1QLmthKGIs
@@ -1481,45 +1541,44 @@
 IkludmFsaWQgSVB2NiBob3N0IGVudHJ5LiIsYixzKSkKbT1wPDA/cTpwClAuZWcoYixzKzEsbSk7Kytx
 CmlmKHEhPT1oJiZDLnhCLlcoYixxKSE9PTU4KXRocm93IEguYihQLnJyKCJJbnZhbGlkIGVuZCBvZiBh
 dXRob3JpdHkiLGIscSkpfWVsc2UgcT1zCndoaWxlKCEwKXtpZighKHE8aCkpe2w9aQpicmVha31pZihD
-LnhCLlcoYixxKT09PTU4KXtrPUMueEIuRyhiLHErMSkKbD1rLmxlbmd0aCE9PTA/UC5RQShrLGksaSk6
-aQpicmVha30rK3F9aj1DLnhCLk5qKGIscyxxKX1lbHNle2w9aQpqPWwKdD0iIn1yZXR1cm4gUC5LTChq
-LGksSC5WTShjLnNwbGl0KCIvIiksdS5zKSxsLGQsYSx0KX0sCmtFOmZ1bmN0aW9uKGEsYil7Qy5ObS5L
-KGEsbmV3IFAuTlkoITEpKX0sCkhOOmZ1bmN0aW9uKGEsYixjKXt2YXIgdCxzLHIKZm9yKHQ9SC5xQyhh
-LGMsbnVsbCxILnQ2KGEpLmQpLHQ9bmV3IEguYTcodCx0LmdBKHQpLHQuJHRpLkMoImE3PGFMLkU+Iikp
-O3QuRigpOyl7cz10LmQKcj1QLm51KCdbIiovOjw+P1xcXFx8XScpCnMudG9TdHJpbmcKaWYoSC5tMihz
-LHIsMCkpe3Q9UC5MNCgiSWxsZWdhbCBjaGFyYWN0ZXIgaW4gcGF0aDogIitzKQp0aHJvdyBILmIodCl9
-fX0sCnJnOmZ1bmN0aW9uKGEsYil7dmFyIHQKaWYoISg2NTw9YSYmYTw9OTApKXQ9OTc8PWEmJmE8PTEy
-MgplbHNlIHQ9ITAKaWYodClyZXR1cm4KdD1QLkw0KCJJbGxlZ2FsIGRyaXZlIGxldHRlciAiK1AuT28o
-YSkpCnRocm93IEguYih0KX0sCndCOmZ1bmN0aW9uKGEsYil7aWYoYSE9bnVsbCYmYT09PVAud0soYikp
-cmV0dXJuIG51bGwKcmV0dXJuIGF9LApPZTpmdW5jdGlvbihhLGIsYyxkKXt2YXIgdCxzLHIscSxwLG8K
-aWYoYT09bnVsbClyZXR1cm4gbnVsbAppZihiPT09YylyZXR1cm4iIgppZihDLnhCLm0oYSxiKT09PTkx
-KXtpZih0eXBlb2YgYyE9PSJudW1iZXIiKXJldHVybiBjLkhOKCkKdD1jLTEKaWYoQy54Qi5tKGEsdCkh
-PT05MylQLlIzKGEsYiwiTWlzc2luZyBlbmQgYF1gIHRvIG1hdGNoIGBbYCBpbiBob3N0IikKcz1iKzEK
-cj1QLnRvKGEscyx0KQppZih0eXBlb2YgciE9PSJudW1iZXIiKXJldHVybiByLkooKQppZihyPHQpe3E9
-cisxCnA9UC5PQShhLEMueEIuUWkoYSwiMjUiLHEpP3IrMzpxLHQsIiUyNSIpfWVsc2UgcD0iIgpQLmVn
-KGEscyxyKQpyZXR1cm4gQy54Qi5OaihhLGIscikudG9Mb3dlckNhc2UoKStwKyJdIn1pZih0eXBlb2Yg
-YyE9PSJudW1iZXIiKXJldHVybiBILnBZKGMpCm89Ygpmb3IoO288YzsrK28paWYoQy54Qi5tKGEsbyk9
-PT01OCl7cj1DLnhCLlhVKGEsIiUiLGIpCmlmKCEocj49YiYmcjxjKSlyPWMKaWYocjxjKXtxPXIrMQpw
-PVAuT0EoYSxDLnhCLlFpKGEsIjI1IixxKT9yKzM6cSxjLCIlMjUiKX1lbHNlIHA9IiIKUC5lZyhhLGIs
-cikKcmV0dXJuIlsiK0MueEIuTmooYSxiLHIpK3ArIl0ifXJldHVybiBQLk9MKGEsYixjKX0sCnRvOmZ1
-bmN0aW9uKGEsYixjKXt2YXIgdCxzPUMueEIuWFUoYSwiJSIsYikKaWYocz49Yil7aWYodHlwZW9mIGMh
-PT0ibnVtYmVyIilyZXR1cm4gSC5wWShjKQp0PXM8Y31lbHNlIHQ9ITEKcmV0dXJuIHQ/czpjfSwKT0E6
-ZnVuY3Rpb24oYSxiLGMsZCl7dmFyIHQscyxyLHEscCxvLG4sbSxsLGs9ZCE9PSIiP25ldyBQLlJuKGQp
-Om51bGwKaWYodHlwZW9mIGMhPT0ibnVtYmVyIilyZXR1cm4gSC5wWShjKQp0PWIKcz10CnI9ITAKZm9y
-KDt0PGM7KXtxPUMueEIubShhLHQpCmlmKHE9PT0zNyl7cD1QLnJ2KGEsdCwhMCkKbz1wPT1udWxsCmlm
-KG8mJnIpe3QrPTMKY29udGludWV9aWYoaz09bnVsbClrPW5ldyBQLlJuKCIiKQpuPWsuYSs9Qy54Qi5O
-aihhLHMsdCkKaWYobylwPUMueEIuTmooYSx0LHQrMykKZWxzZSBpZihwPT09IiUiKVAuUjMoYSx0LCJa
-b25lSUQgc2hvdWxkIG5vdCBjb250YWluICUgYW55bW9yZSIpCmsuYT1uK3AKdCs9MwpzPXQKcj0hMH1l
-bHNle2lmKHE8MTI3KXtvPXE+Pj40CmlmKG8+PTgpcmV0dXJuIEguT0goQy5GMyxvKQpvPShDLkYzW29d
-JjE8PChxJjE1KSkhPT0wfWVsc2Ugbz0hMQppZihvKXtpZihyJiY2NTw9cSYmOTA+PXEpe2lmKGs9PW51
-bGwpaz1uZXcgUC5SbigiIikKaWYoczx0KXtrLmErPUMueEIuTmooYSxzLHQpCnM9dH1yPSExfSsrdH1l
-bHNle2lmKChxJjY0NTEyKT09PTU1Mjk2JiZ0KzE8Yyl7bT1DLnhCLm0oYSx0KzEpCmlmKChtJjY0NTEy
-KT09PTU2MzIwKXtxPTY1NTM2fChxJjEwMjMpPDwxMHxtJjEwMjMKbD0yfWVsc2UgbD0xfWVsc2UgbD0x
-CmlmKGs9PW51bGwpaz1uZXcgUC5SbigiIikKay5hKz1DLnhCLk5qKGEscyx0KQprLmErPVAuelgocSkK
-dCs9bApzPXR9fX1pZihrPT1udWxsKXJldHVybiBDLnhCLk5qKGEsYixjKQppZihzPGMpay5hKz1DLnhC
-Lk5qKGEscyxjKQpvPWsuYQpyZXR1cm4gby5jaGFyQ29kZUF0KDApPT0wP286b30sCk9MOmZ1bmN0aW9u
-KGEsYixjKXt2YXIgdCxzLHIscSxwLG8sbixtLGwsayxqCmlmKHR5cGVvZiBjIT09Im51bWJlciIpcmV0
-dXJuIEgucFkoYykKdD1iCnM9dApyPW51bGwKcT0hMApmb3IoO3Q8Yzspe3A9Qy54Qi5tKGEsdCkKaWYo
+LnhCLlcoYixxKT09PTU4KXtrPUMueEIuRyhiLHErMSkKbD1rLmxlbmd0aCE9PTA/UC5RQShrLGkpOmkK
+YnJlYWt9KytxfWo9Qy54Qi5OaihiLHMscSl9ZWxzZXtsPWkKaj1sCnQ9IiJ9cmV0dXJuIFAuS0woaixp
+LEguVk0oYy5zcGxpdCgiLyIpLHUucyksbCxkLGEsdCl9LAprRTpmdW5jdGlvbihhLGIpe3ZhciB0LHMs
+cixxLHAKZm9yKHQ9YS5sZW5ndGgscz0wO3M8dDsrK3Mpe3I9YVtzXQpyLnRvU3RyaW5nCnE9Si5VNihy
+KQpwPXEuZ0EocikKaWYoMD5wKUgudmgoUC5URSgwLDAscS5nQShyKSxudWxsLG51bGwpKQppZihILm0y
+KHIsIi8iLDApKXt0PVAuTDQoIklsbGVnYWwgcGF0aCBjaGFyYWN0ZXIgIitILkVqKHIpKQp0aHJvdyBI
+LmIodCl9fX0sCkhOOmZ1bmN0aW9uKGEsYixjKXt2YXIgdCxzLHIKZm9yKHQ9SC5xQyhhLGMsbnVsbCxI
+LnQ2KGEpLmMpLHQ9bmV3IEguYTcodCx0LmdBKHQpLHQuJHRpLkMoImE3PGFMLkU+IikpO3QuRigpOyl7
+cz10LmQKcj1QLm51KCdbIiovOjw+P1xcXFx8XScpCnMudG9TdHJpbmcKaWYoSC5tMihzLHIsMCkpe3Q9
+UC5MNCgiSWxsZWdhbCBjaGFyYWN0ZXIgaW4gcGF0aDogIitzKQp0aHJvdyBILmIodCl9fX0sCnJnOmZ1
+bmN0aW9uKGEsYil7dmFyIHQKaWYoISg2NTw9YSYmYTw9OTApKXQ9OTc8PWEmJmE8PTEyMgplbHNlIHQ9
+ITAKaWYodClyZXR1cm4KdD1QLkw0KCJJbGxlZ2FsIGRyaXZlIGxldHRlciAiK1AuT28oYSkpCnRocm93
+IEguYih0KX0sCndCOmZ1bmN0aW9uKGEsYil7aWYoYSE9bnVsbCYmYT09PVAud0soYikpcmV0dXJuIG51
+bGwKcmV0dXJuIGF9LApPZTpmdW5jdGlvbihhLGIsYyxkKXt2YXIgdCxzLHIscSxwLG8KaWYoYT09bnVs
+bClyZXR1cm4gbnVsbAppZihiPT09YylyZXR1cm4iIgppZihDLnhCLm0oYSxiKT09PTkxKXt0PWMtMQpp
+ZihDLnhCLm0oYSx0KSE9PTkzKVAuUjMoYSxiLCJNaXNzaW5nIGVuZCBgXWAgdG8gbWF0Y2ggYFtgIGlu
+IGhvc3QiKQpzPWIrMQpyPVAudG8oYSxzLHQpCmlmKHI8dCl7cT1yKzEKcD1QLk9BKGEsQy54Qi5RaShh
+LCIyNSIscSk/ciszOnEsdCwiJTI1Iil9ZWxzZSBwPSIiClAuZWcoYSxzLHIpCnJldHVybiBDLnhCLk5q
+KGEsYixyKS50b0xvd2VyQ2FzZSgpK3ArIl0ifWZvcihvPWI7bzxjOysrbylpZihDLnhCLm0oYSxvKT09
+PTU4KXtyPUMueEIuWFUoYSwiJSIsYikKcj1yPj1iJiZyPGM/cjpjCmlmKHI8Yyl7cT1yKzEKcD1QLk9B
+KGEsQy54Qi5RaShhLCIyNSIscSk/ciszOnEsYywiJTI1Iil9ZWxzZSBwPSIiClAuZWcoYSxiLHIpCnJl
+dHVybiJbIitDLnhCLk5qKGEsYixyKStwKyJdIn1yZXR1cm4gUC5PTChhLGIsYyl9LAp0bzpmdW5jdGlv
+bihhLGIsYyl7dmFyIHQ9Qy54Qi5YVShhLCIlIixiKQpyZXR1cm4gdD49YiYmdDxjP3Q6Y30sCk9BOmZ1
+bmN0aW9uKGEsYixjLGQpe3ZhciB0LHMscixxLHAsbyxuLG0sbCxrLGo9ZCE9PSIiP25ldyBQLlJuKGQp
+Om51bGwKZm9yKHQ9YixzPXQscj0hMDt0PGM7KXtxPUMueEIubShhLHQpCmlmKHE9PT0zNyl7cD1QLnJ2
+KGEsdCwhMCkKbz1wPT1udWxsCmlmKG8mJnIpe3QrPTMKY29udGludWV9aWYoaj09bnVsbClqPW5ldyBQ
+LlJuKCIiKQpuPWouYSs9Qy54Qi5OaihhLHMsdCkKaWYobylwPUMueEIuTmooYSx0LHQrMykKZWxzZSBp
+ZihwPT09IiUiKVAuUjMoYSx0LCJab25lSUQgc2hvdWxkIG5vdCBjb250YWluICUgYW55bW9yZSIpCmou
+YT1uK3AKdCs9MwpzPXQKcj0hMH1lbHNle2lmKHE8MTI3KXtvPXE+Pj40CmlmKG8+PTgpcmV0dXJuIEgu
+T0goQy5GMyxvKQpvPShDLkYzW29dJjE8PChxJjE1KSkhPT0wfWVsc2Ugbz0hMQppZihvKXtpZihyJiY2
+NTw9cSYmOTA+PXEpe2lmKGo9PW51bGwpaj1uZXcgUC5SbigiIikKaWYoczx0KXtqLmErPUMueEIuTmoo
+YSxzLHQpCnM9dH1yPSExfSsrdH1lbHNle2lmKChxJjY0NTEyKT09PTU1Mjk2JiZ0KzE8Yyl7bT1DLnhC
+Lm0oYSx0KzEpCmlmKChtJjY0NTEyKT09PTU2MzIwKXtxPTY1NTM2fChxJjEwMjMpPDwxMHxtJjEwMjMK
+bD0yfWVsc2UgbD0xfWVsc2UgbD0xCms9Qy54Qi5OaihhLHMsdCkKaWYoaj09bnVsbCl7aj1uZXcgUC5S
+bigiIikKbz1qfWVsc2Ugbz1qCm8uYSs9awpvLmErPVAuelgocSkKdCs9bApzPXR9fX1pZihqPT1udWxs
+KXJldHVybiBDLnhCLk5qKGEsYixjKQppZihzPGMpai5hKz1DLnhCLk5qKGEscyxjKQpvPWouYQpyZXR1
+cm4gby5jaGFyQ29kZUF0KDApPT0wP286b30sCk9MOmZ1bmN0aW9uKGEsYixjKXt2YXIgdCxzLHIscSxw
+LG8sbixtLGwsayxqCmZvcih0PWIscz10LHI9bnVsbCxxPSEwO3Q8Yzspe3A9Qy54Qi5tKGEsdCkKaWYo
 cD09PTM3KXtvPVAucnYoYSx0LCEwKQpuPW89PW51bGwKaWYobiYmcSl7dCs9Mwpjb250aW51ZX1pZihy
 PT1udWxsKXI9bmV3IFAuUm4oIiIpCm09Qy54Qi5OaihhLHMsdCkKbD1yLmErPSFxP20udG9Mb3dlckNh
 c2UoKTptCmlmKG4pe289Qy54Qi5OaihhLHQsdCszKQprPTN9ZWxzZSBpZihvPT09IiUiKXtvPSIlMjUi
@@ -1530,2605 +1589,2604 @@
 ZihuPj04KXJldHVybiBILk9IKEMuYWssbikKbj0oQy5ha1tuXSYxPDwocCYxNSkpIT09MH1lbHNlIG49
 ITEKaWYobilQLlIzKGEsdCwiSW52YWxpZCBjaGFyYWN0ZXIiKQplbHNle2lmKChwJjY0NTEyKT09PTU1
 Mjk2JiZ0KzE8Yyl7aj1DLnhCLm0oYSx0KzEpCmlmKChqJjY0NTEyKT09PTU2MzIwKXtwPTY1NTM2fChw
-JjEwMjMpPDwxMHxqJjEwMjMKaz0yfWVsc2Ugaz0xfWVsc2Ugaz0xCmlmKHI9PW51bGwpcj1uZXcgUC5S
-bigiIikKbT1DLnhCLk5qKGEscyx0KQpyLmErPSFxP20udG9Mb3dlckNhc2UoKTptCnIuYSs9UC56WChw
-KQp0Kz1rCnM9dH19fX1pZihyPT1udWxsKXJldHVybiBDLnhCLk5qKGEsYixjKQppZihzPGMpe209Qy54
-Qi5OaihhLHMsYykKci5hKz0hcT9tLnRvTG93ZXJDYXNlKCk6bX1uPXIuYQpyZXR1cm4gbi5jaGFyQ29k
-ZUF0KDApPT0wP246bn0sClBpOmZ1bmN0aW9uKGEsYixjKXt2YXIgdCxzLHIscQppZihiPT09YylyZXR1
-cm4iIgppZighUC5FdChKLnJZKGEpLlcoYSxiKSkpUC5SMyhhLGIsIlNjaGVtZSBub3Qgc3RhcnRpbmcg
-d2l0aCBhbHBoYWJldGljIGNoYXJhY3RlciIpCmZvcih0PWIscz0hMTt0PGM7Kyt0KXtyPUMueEIuVyhh
-LHQpCmlmKHI8MTI4KXtxPXI+Pj40CmlmKHE+PTgpcmV0dXJuIEguT0goQy5tSyxxKQpxPShDLm1LW3Fd
-JjE8PChyJjE1KSkhPT0wfWVsc2UgcT0hMQppZighcSlQLlIzKGEsdCwiSWxsZWdhbCBzY2hlbWUgY2hh
-cmFjdGVyIikKaWYoNjU8PXImJnI8PTkwKXM9ITB9YT1DLnhCLk5qKGEsYixjKQpyZXR1cm4gUC5ZYShz
-P2EudG9Mb3dlckNhc2UoKTphKX0sCllhOmZ1bmN0aW9uKGEpe2lmKGE9PT0iaHR0cCIpcmV0dXJuImh0
-dHAiCmlmKGE9PT0iZmlsZSIpcmV0dXJuImZpbGUiCmlmKGE9PT0iaHR0cHMiKXJldHVybiJodHRwcyIK
-aWYoYT09PSJwYWNrYWdlIilyZXR1cm4icGFja2FnZSIKcmV0dXJuIGF9LAp6UjpmdW5jdGlvbihhLGIs
-Yyl7aWYoYT09bnVsbClyZXR1cm4iIgpyZXR1cm4gUC5QSShhLGIsYyxDLnRvLCExKX0sCmthOmZ1bmN0
-aW9uKGEsYixjLGQsZSxmKXt2YXIgdCxzPWU9PT0iZmlsZSIscj1zfHxmLHE9YT09bnVsbAppZihxJiZk
-PT1udWxsKXJldHVybiBzPyIvIjoiIgpxPSFxCmlmKHEmJmQhPW51bGwpdGhyb3cgSC5iKFAueFkoIkJv
-dGggcGF0aCBhbmQgcGF0aFNlZ21lbnRzIHNwZWNpZmllZCIpKQppZihxKXQ9UC5QSShhLGIsYyxDLldk
-LCEwKQplbHNle2QudG9TdHJpbmcKcT1ILnQ2KGQpCnQ9bmV3IEguQTgoZCxxLkMoInFVKDEpIikuYihu
-ZXcgUC5SWigpKSxxLkMoIkE4PDEscVU+IikpLnpWKDAsIi8iKX1pZih0Lmxlbmd0aD09PTApe2lmKHMp
-cmV0dXJuIi8ifWVsc2UgaWYociYmIUMueEIubih0LCIvIikpdD0iLyIrdApyZXR1cm4gUC5Kcih0LGUs
-Zil9LApKcjpmdW5jdGlvbihhLGIsYyl7dmFyIHQ9Yi5sZW5ndGg9PT0wCmlmKHQmJiFjJiYhQy54Qi5u
-KGEsIi8iKSlyZXR1cm4gUC53RihhLCF0fHxjKQpyZXR1cm4gUC54ZShhKX0sCmxlOmZ1bmN0aW9uKGEs
-YixjLGQpe3ZhciB0LHM9e30KaWYoYSE9bnVsbCl7aWYoZCE9bnVsbCl0aHJvdyBILmIoUC54WSgiQm90
-aCBxdWVyeSBhbmQgcXVlcnlQYXJhbWV0ZXJzIHNwZWNpZmllZCIpKQpyZXR1cm4gUC5QSShhLGIsYyxD
-LlZDLCEwKX1pZihkPT1udWxsKXJldHVybiBudWxsCnQ9bmV3IFAuUm4oIiIpCnMuYT0iIgpkLksoMCxu
-ZXcgUC55NShuZXcgUC5NRShzLHQpKSkKcz10LmEKcmV0dXJuIHMuY2hhckNvZGVBdCgwKT09MD9zOnN9
-LAp0RzpmdW5jdGlvbihhLGIsYyl7aWYoYT09bnVsbClyZXR1cm4gbnVsbApyZXR1cm4gUC5QSShhLGIs
-YyxDLlZDLCEwKX0sCnJ2OmZ1bmN0aW9uKGEsYixjKXt2YXIgdCxzLHIscSxwLG89YisyCmlmKG8+PWEu
-bGVuZ3RoKXJldHVybiIlIgp0PUMueEIubShhLGIrMSkKcz1DLnhCLm0oYSxvKQpyPUgub28odCkKcT1I
-Lm9vKHMpCmlmKHI8MHx8cTwwKXJldHVybiIlIgpwPXIqMTYrcQppZihwPDEyNyl7bz1DLmpuLndHKHAs
-NCkKaWYobz49OClyZXR1cm4gSC5PSChDLkYzLG8pCm89KEMuRjNbb10mMTw8KHAmMTUpKSE9PTB9ZWxz
-ZSBvPSExCmlmKG8pcmV0dXJuIEguTHcoYyYmNjU8PXAmJjkwPj1wPyhwfDMyKT4+PjA6cCkKaWYodD49
-OTd8fHM+PTk3KXJldHVybiBDLnhCLk5qKGEsYixiKzMpLnRvVXBwZXJDYXNlKCkKcmV0dXJuIG51bGx9
-LAp6WDpmdW5jdGlvbihhKXt2YXIgdCxzLHIscSxwLG8sbj0iMDEyMzQ1Njc4OUFCQ0RFRiIKaWYoYTwx
-Mjgpe3Q9bmV3IEFycmF5KDMpCnQuZml4ZWQkbGVuZ3RoPUFycmF5CnM9SC5WTSh0LHUudCkKQy5ObS5Z
-KHMsMCwzNykKQy5ObS5ZKHMsMSxDLnhCLlcobixhPj4+NCkpCkMuTm0uWShzLDIsQy54Qi5XKG4sYSYx
-NSkpfWVsc2V7aWYoYT4yMDQ3KWlmKGE+NjU1MzUpe3I9MjQwCnE9NH1lbHNle3I9MjI0CnE9M31lbHNl
-e3I9MTkyCnE9Mn10PW5ldyBBcnJheSgzKnEpCnQuZml4ZWQkbGVuZ3RoPUFycmF5CnM9SC5WTSh0LHUu
-dCkKZm9yKHA9MDstLXEscT49MDtyPTEyOCl7bz1DLmpuLmJmKGEsNipxKSY2M3xyCkMuTm0uWShzLHAs
-MzcpCkMuTm0uWShzLHArMSxDLnhCLlcobixvPj4+NCkpCkMuTm0uWShzLHArMixDLnhCLlcobixvJjE1
-KSkKcCs9M319cmV0dXJuIFAuSE0ocywwLG51bGwpfSwKUEk6ZnVuY3Rpb24oYSxiLGMsZCxlKXt2YXIg
-dD1QLlVsKGEsYixjLGQsZSkKcmV0dXJuIHQ9PW51bGw/Qy54Qi5OaihhLGIsYyk6dH0sClVsOmZ1bmN0
-aW9uKGEsYixjLGQsZSl7dmFyIHQscyxyLHEscCxvPW51bGwsbj0hZSxtPWIsbD1tLGs9bwp3aGlsZSgh
-MCl7aWYodHlwZW9mIG0hPT0ibnVtYmVyIilyZXR1cm4gbS5KKCkKaWYodHlwZW9mIGMhPT0ibnVtYmVy
-IilyZXR1cm4gSC5wWShjKQppZighKG08YykpYnJlYWsKYyQwOnt0PUMueEIubShhLG0pCmlmKHQ8MTI3
-KXtzPXQ+Pj40CmlmKHM+PTgpcmV0dXJuIEguT0goZCxzKQpzPShkW3NdJjE8PCh0JjE1KSkhPT0wfWVs
-c2Ugcz0hMQppZihzKSsrbQplbHNle2lmKHQ9PT0zNyl7cj1QLnJ2KGEsbSwhMSkKaWYocj09bnVsbCl7
-bSs9MwpicmVhayBjJDB9aWYoIiUiPT09cil7cj0iJTI1IgpxPTF9ZWxzZSBxPTN9ZWxzZXtpZihuKWlm
-KHQ8PTkzKXtzPXQ+Pj40CmlmKHM+PTgpcmV0dXJuIEguT0goQy5hayxzKQpzPShDLmFrW3NdJjE8PCh0
-JjE1KSkhPT0wfWVsc2Ugcz0hMQplbHNlIHM9ITEKaWYocyl7UC5SMyhhLG0sIkludmFsaWQgY2hhcmFj
-dGVyIikKcT1vCnI9cX1lbHNle2lmKCh0JjY0NTEyKT09PTU1Mjk2KXtzPW0rMQppZihzPGMpe3A9Qy54
-Qi5tKGEscykKaWYoKHAmNjQ1MTIpPT09NTYzMjApe3Q9NjU1MzZ8KHQmMTAyMyk8PDEwfHAmMTAyMwpx
-PTJ9ZWxzZSBxPTF9ZWxzZSBxPTF9ZWxzZSBxPTEKcj1QLnpYKHQpfX1pZihrPT1udWxsKWs9bmV3IFAu
-Um4oIiIpCmsuYSs9Qy54Qi5OaihhLGwsbSkKay5hKz1ILmQocikKaWYodHlwZW9mIHEhPT0ibnVtYmVy
-IilyZXR1cm4gSC5wWShxKQptKz1xCmw9bX19fWlmKGs9PW51bGwpcmV0dXJuIG8KaWYodHlwZW9mIGwh
-PT0ibnVtYmVyIilyZXR1cm4gbC5KKCkKaWYobDxjKWsuYSs9Qy54Qi5OaihhLGwsYykKbj1rLmEKcmV0
-dXJuIG4uY2hhckNvZGVBdCgwKT09MD9uOm59LAp5QjpmdW5jdGlvbihhKXtpZihDLnhCLm4oYSwiLiIp
-KXJldHVybiEwCnJldHVybiBDLnhCLk9ZKGEsIi8uIikhPT0tMX0sCnhlOmZ1bmN0aW9uKGEpe3ZhciB0
-LHMscixxLHAsbyxuCmlmKCFQLnlCKGEpKXJldHVybiBhCnQ9SC5WTShbXSx1LnMpCmZvcihzPWEuc3Bs
-aXQoIi8iKSxyPXMubGVuZ3RoLHE9ITEscD0wO3A8cjsrK3Ape289c1twXQppZihKLlJNKG8sIi4uIikp
-e249dC5sZW5ndGgKaWYobiE9PTApe2lmKDA+PW4pcmV0dXJuIEguT0godCwtMSkKdC5wb3AoKQppZih0
-Lmxlbmd0aD09PTApQy5ObS5pKHQsIiIpfXE9ITB9ZWxzZSBpZigiLiI9PT1vKXE9ITAKZWxzZXtDLk5t
-LmkodCxvKQpxPSExfX1pZihxKUMuTm0uaSh0LCIiKQpyZXR1cm4gQy5ObS56Vih0LCIvIil9LAp3Rjpm
-dW5jdGlvbihhLGIpe3ZhciB0LHMscixxLHAsbwppZighUC55QihhKSlyZXR1cm4hYj9QLkMxKGEpOmEK
-dD1ILlZNKFtdLHUucykKZm9yKHM9YS5zcGxpdCgiLyIpLHI9cy5sZW5ndGgscT0hMSxwPTA7cDxyOysr
-cCl7bz1zW3BdCmlmKCIuLiI9PT1vKWlmKHQubGVuZ3RoIT09MCYmQy5ObS5ncloodCkhPT0iLi4iKXtp
-ZigwPj10Lmxlbmd0aClyZXR1cm4gSC5PSCh0LC0xKQp0LnBvcCgpCnE9ITB9ZWxzZXtDLk5tLmkodCwi
-Li4iKQpxPSExfWVsc2UgaWYoIi4iPT09bylxPSEwCmVsc2V7Qy5ObS5pKHQsbykKcT0hMX19cz10Lmxl
-bmd0aAppZihzIT09MClpZihzPT09MSl7aWYoMD49cylyZXR1cm4gSC5PSCh0LDApCnM9dFswXS5sZW5n
-dGg9PT0wfWVsc2Ugcz0hMQplbHNlIHM9ITAKaWYocylyZXR1cm4iLi8iCmlmKHF8fEMuTm0uZ3JaKHQp
-PT09Ii4uIilDLk5tLmkodCwiIikKaWYoIWIpe2lmKDA+PXQubGVuZ3RoKXJldHVybiBILk9IKHQsMCkK
-Qy5ObS5ZKHQsMCxQLkMxKHRbMF0pKX1yZXR1cm4gQy5ObS56Vih0LCIvIil9LApDMTpmdW5jdGlvbihh
-KXt2YXIgdCxzLHIscT1hLmxlbmd0aAppZihxPj0yJiZQLkV0KEouUXooYSwwKSkpZm9yKHQ9MTt0PHE7
-Kyt0KXtzPUMueEIuVyhhLHQpCmlmKHM9PT01OClyZXR1cm4gQy54Qi5OaihhLDAsdCkrIiUzQSIrQy54
-Qi5HKGEsdCsxKQppZihzPD0xMjcpe3I9cz4+PjQKaWYocj49OClyZXR1cm4gSC5PSChDLm1LLHIpCnI9
-KEMubUtbcl0mMTw8KHMmMTUpKT09PTB9ZWxzZSByPSEwCmlmKHIpYnJlYWt9cmV0dXJuIGF9LAptbjpm
-dW5jdGlvbihhKXt2YXIgdCxzLHIscT1hLmdGaigpLHA9cS5sZW5ndGgKaWYocD4wJiZKLkhtKHFbMF0p
-PT09MiYmSi5hNihxWzBdLDEpPT09NTgpe2lmKDA+PXApcmV0dXJuIEguT0gocSwwKQpQLnJnKEouYTYo
-cVswXSwwKSwhMSkKUC5ITihxLCExLDEpCnQ9ITB9ZWxzZXtQLkhOKHEsITEsMCkKdD0hMX1zPWEuZ3RU
-KCkmJiF0PyJcXCI6IiIKaWYoYS5nY2ooKSl7cj1hLmdKZihhKQppZihyLmxlbmd0aCE9PTApcz1zKyJc
-XCIrcisiXFwifXM9UC52ZyhzLHEsIlxcIikKcD10JiZwPT09MT9zKyJcXCI6cwpyZXR1cm4gcC5jaGFy
-Q29kZUF0KDApPT0wP3A6cH0sCkloOmZ1bmN0aW9uKGEsYil7dmFyIHQscyxyCmZvcih0PTAscz0wO3M8
-MjsrK3Mpe3I9Qy54Qi5XKGEsYitzKQppZig0ODw9ciYmcjw9NTcpdD10KjE2K3ItNDgKZWxzZXtyfD0z
-MgppZig5Nzw9ciYmcjw9MTAyKXQ9dCoxNityLTg3CmVsc2UgdGhyb3cgSC5iKFAueFkoIkludmFsaWQg
-VVJMIGVuY29kaW5nIikpfX1yZXR1cm4gdH0sCmt1OmZ1bmN0aW9uKGEsYixjLGQsZSl7dmFyIHQscyxy
-LHEscD1KLnJZKGEpLG89Ygp3aGlsZSghMCl7aWYoIShvPGMpKXt0PSEwCmJyZWFrfXM9cC5XKGEsbykK
-aWYoczw9MTI3KWlmKHMhPT0zNylyPWUmJnM9PT00MwplbHNlIHI9ITAKZWxzZSByPSEwCmlmKHIpe3Q9
-ITEKYnJlYWt9KytvfWlmKHQpe2lmKEMueE0hPT1kKXI9ITEKZWxzZSByPSEwCmlmKHIpcmV0dXJuIHAu
-TmooYSxiLGMpCmVsc2UgcT1uZXcgSC5xaihwLk5qKGEsYixjKSl9ZWxzZXtxPUguVk0oW10sdS50KQpm
-b3Iobz1iO288YzsrK28pe3M9cC5XKGEsbykKaWYocz4xMjcpdGhyb3cgSC5iKFAueFkoIklsbGVnYWwg
-cGVyY2VudCBlbmNvZGluZyBpbiBVUkkiKSkKaWYocz09PTM3KXtpZihvKzM+YS5sZW5ndGgpdGhyb3cg
-SC5iKFAueFkoIlRydW5jYXRlZCBVUkkiKSkKQy5ObS5pKHEsUC5JaChhLG8rMSkpCm8rPTJ9ZWxzZSBp
-ZihlJiZzPT09NDMpQy5ObS5pKHEsMzIpCmVsc2UgQy5ObS5pKHEscyl9fXUuTC5iKHEpCnJldHVybiBu
-ZXcgUC5HWSghMSkuV0oocSl9LApFdDpmdW5jdGlvbihhKXt2YXIgdD1hfDMyCnJldHVybiA5Nzw9dCYm
-dDw9MTIyfSwKS0Q6ZnVuY3Rpb24oYSxiLGMpe3ZhciB0LHMscixxLHAsbyxuLG0sbD0iSW52YWxpZCBN
-SU1FIHR5cGUiLGs9SC5WTShbYi0xXSx1LnQpCmZvcih0PWEubGVuZ3RoLHM9YixyPS0xLHE9bnVsbDtz
-PHQ7KytzKXtxPUMueEIuVyhhLHMpCmlmKHE9PT00NHx8cT09PTU5KWJyZWFrCmlmKHE9PT00Nyl7aWYo
-cjwwKXtyPXMKY29udGludWV9dGhyb3cgSC5iKFAucnIobCxhLHMpKX19aWYocjwwJiZzPmIpdGhyb3cg
-SC5iKFAucnIobCxhLHMpKQpmb3IoO3EhPT00NDspe0MuTm0uaShrLHMpOysrcwpmb3IocD0tMTtzPHQ7
-KytzKXtxPUMueEIuVyhhLHMpCmlmKHE9PT02MSl7aWYocDwwKXA9c31lbHNlIGlmKHE9PT01OXx8cT09
-PTQ0KWJyZWFrfWlmKHA+PTApQy5ObS5pKGsscCkKZWxzZXtvPUMuTm0uZ3JaKGspCmlmKHEhPT00NHx8
-cyE9PW8rN3x8IUMueEIuUWkoYSwiYmFzZTY0IixvKzEpKXRocm93IEguYihQLnJyKCJFeHBlY3Rpbmcg
-Jz0nIixhLHMpKQpicmVha319Qy5ObS5pKGsscykKbj1zKzEKaWYoKGsubGVuZ3RoJjEpPT09MSlhPUMu
-aDkueXIoYSxuLHQpCmVsc2V7bT1QLlVsKGEsbix0LEMuVkMsITApCmlmKG0hPW51bGwpYT1DLnhCLmk3
-KGEsbix0LG0pfXJldHVybiBuZXcgUC5QRShhLGssYyl9LAp1eDpmdW5jdGlvbigpe3ZhciB0PSIwMTIz
-NDU2Nzg5QUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ei0u
-X34hJCYnKCkqKyw7PSIscz0iLiIscj0iOiIscT0iLyIscD0iPyIsbz0iIyIsbj11LmdjLG09UC5kSCgy
-MixuZXcgUC5xMygpLCEwLG4pLGw9bmV3IFAueUkobSksaz1uZXcgUC5jNigpLGo9bmV3IFAucWQoKSxp
-PW4uYihsLiQyKDAsMjI1KSkKay4kMyhpLHQsMSkKay4kMyhpLHMsMTQpCmsuJDMoaSxyLDM0KQprLiQz
-KGkscSwzKQprLiQzKGkscCwxNzIpCmsuJDMoaSxvLDIwNSkKaT1uLmIobC4kMigxNCwyMjUpKQprLiQz
-KGksdCwxKQprLiQzKGkscywxNSkKay4kMyhpLHIsMzQpCmsuJDMoaSxxLDIzNCkKay4kMyhpLHAsMTcy
-KQprLiQzKGksbywyMDUpCmk9bi5iKGwuJDIoMTUsMjI1KSkKay4kMyhpLHQsMSkKay4kMyhpLCIlIiwy
-MjUpCmsuJDMoaSxyLDM0KQprLiQzKGkscSw5KQprLiQzKGkscCwxNzIpCmsuJDMoaSxvLDIwNSkKaT1u
-LmIobC4kMigxLDIyNSkpCmsuJDMoaSx0LDEpCmsuJDMoaSxyLDM0KQprLiQzKGkscSwxMCkKay4kMyhp
-LHAsMTcyKQprLiQzKGksbywyMDUpCmk9bi5iKGwuJDIoMiwyMzUpKQprLiQzKGksdCwxMzkpCmsuJDMo
-aSxxLDEzMSkKay4kMyhpLHMsMTQ2KQprLiQzKGkscCwxNzIpCmsuJDMoaSxvLDIwNSkKaT1uLmIobC4k
-MigzLDIzNSkpCmsuJDMoaSx0LDExKQprLiQzKGkscSw2OCkKay4kMyhpLHMsMTgpCmsuJDMoaSxwLDE3
-MikKay4kMyhpLG8sMjA1KQppPW4uYihsLiQyKDQsMjI5KSkKay4kMyhpLHQsNSkKai4kMyhpLCJBWiIs
-MjI5KQprLiQzKGksciwxMDIpCmsuJDMoaSwiQCIsNjgpCmsuJDMoaSwiWyIsMjMyKQprLiQzKGkscSwx
-MzgpCmsuJDMoaSxwLDE3MikKay4kMyhpLG8sMjA1KQppPW4uYihsLiQyKDUsMjI5KSkKay4kMyhpLHQs
-NSkKai4kMyhpLCJBWiIsMjI5KQprLiQzKGksciwxMDIpCmsuJDMoaSwiQCIsNjgpCmsuJDMoaSxxLDEz
-OCkKay4kMyhpLHAsMTcyKQprLiQzKGksbywyMDUpCmk9bi5iKGwuJDIoNiwyMzEpKQpqLiQzKGksIjE5
-Iiw3KQprLiQzKGksIkAiLDY4KQprLiQzKGkscSwxMzgpCmsuJDMoaSxwLDE3MikKay4kMyhpLG8sMjA1
-KQppPW4uYihsLiQyKDcsMjMxKSkKai4kMyhpLCIwOSIsNykKay4kMyhpLCJAIiw2OCkKay4kMyhpLHEs
-MTM4KQprLiQzKGkscCwxNzIpCmsuJDMoaSxvLDIwNSkKay4kMyhuLmIobC4kMig4LDgpKSwiXSIsNSkK
-aT1uLmIobC4kMig5LDIzNSkpCmsuJDMoaSx0LDExKQprLiQzKGkscywxNikKay4kMyhpLHEsMjM0KQpr
-LiQzKGkscCwxNzIpCmsuJDMoaSxvLDIwNSkKaT1uLmIobC4kMigxNiwyMzUpKQprLiQzKGksdCwxMSkK
-ay4kMyhpLHMsMTcpCmsuJDMoaSxxLDIzNCkKay4kMyhpLHAsMTcyKQprLiQzKGksbywyMDUpCmk9bi5i
-KGwuJDIoMTcsMjM1KSkKay4kMyhpLHQsMTEpCmsuJDMoaSxxLDkpCmsuJDMoaSxwLDE3MikKay4kMyhp
-LG8sMjA1KQppPW4uYihsLiQyKDEwLDIzNSkpCmsuJDMoaSx0LDExKQprLiQzKGkscywxOCkKay4kMyhp
-LHEsMjM0KQprLiQzKGkscCwxNzIpCmsuJDMoaSxvLDIwNSkKaT1uLmIobC4kMigxOCwyMzUpKQprLiQz
-KGksdCwxMSkKay4kMyhpLHMsMTkpCmsuJDMoaSxxLDIzNCkKay4kMyhpLHAsMTcyKQprLiQzKGksbywy
-MDUpCmk9bi5iKGwuJDIoMTksMjM1KSkKay4kMyhpLHQsMTEpCmsuJDMoaSxxLDIzNCkKay4kMyhpLHAs
-MTcyKQprLiQzKGksbywyMDUpCmk9bi5iKGwuJDIoMTEsMjM1KSkKay4kMyhpLHQsMTEpCmsuJDMoaSxx
-LDEwKQprLiQzKGkscCwxNzIpCmsuJDMoaSxvLDIwNSkKaT1uLmIobC4kMigxMiwyMzYpKQprLiQzKGks
-dCwxMikKay4kMyhpLHAsMTIpCmsuJDMoaSxvLDIwNSkKaT1uLmIobC4kMigxMywyMzcpKQprLiQzKGks
-dCwxMykKay4kMyhpLHAsMTMpCmouJDMobi5iKGwuJDIoMjAsMjQ1KSksImF6IiwyMSkKbD1uLmIobC4k
-MigyMSwyNDUpKQpqLiQzKGwsImF6IiwyMSkKai4kMyhsLCIwOSIsMjEpCmsuJDMobCwiKy0uIiwyMSkK
-cmV0dXJuIG19LApVQjpmdW5jdGlvbihhLGIsYyxkLGUpe3ZhciB0LHMscixxLHAsbz0kLnZaKCkKZm9y
-KHQ9Si5yWShhKSxzPWI7czxjOysrcyl7aWYoZDwwfHxkPj1vLmxlbmd0aClyZXR1cm4gSC5PSChvLGQp
-CnI9b1tkXQpxPXQuVyhhLHMpXjk2CmlmKHE+OTUpcT0zMQppZihxPj1yLmxlbmd0aClyZXR1cm4gSC5P
-SChyLHEpCnA9cltxXQpkPXAmMzEKQy5ObS5ZKGUscD4+PjUscyl9cmV0dXJuIGR9LApXRjpmdW5jdGlv
-biBXRihhLGIpe3RoaXMuYT1hCnRoaXMuYj1ifSwKYTI6ZnVuY3Rpb24gYTIoKXt9LAppUDpmdW5jdGlv
-biBpUChhLGIpe3RoaXMuYT1hCnRoaXMuYj1ifSwKQ1A6ZnVuY3Rpb24gQ1AoKXt9LApYUzpmdW5jdGlv
-biBYUygpe30sCkM2OmZ1bmN0aW9uIEM2KGEpe3RoaXMuYT1hfSwKbjpmdW5jdGlvbiBuKCl7fSwKdTpm
-dW5jdGlvbiB1KGEsYixjLGQpe3ZhciBfPXRoaXMKXy5hPWEKXy5iPWIKXy5jPWMKXy5kPWR9LApiSjpm
-dW5jdGlvbiBiSihhLGIsYyxkLGUsZil7dmFyIF89dGhpcwpfLmU9YQpfLmY9YgpfLmE9YwpfLmI9ZApf
-LmM9ZQpfLmQ9Zn0sCmVZOmZ1bmN0aW9uIGVZKGEsYixjLGQsZSl7dmFyIF89dGhpcwpfLmY9YQpfLmE9
-YgpfLmI9YwpfLmM9ZApfLmQ9ZX0sCm1wOmZ1bmN0aW9uIG1wKGEsYixjLGQpe3ZhciBfPXRoaXMKXy5h
-PWEKXy5iPWIKXy5jPWMKXy5kPWR9LAp1YjpmdW5jdGlvbiB1YihhKXt0aGlzLmE9YX0sCmRzOmZ1bmN0
-aW9uIGRzKGEpe3RoaXMuYT1hfSwKbGo6ZnVuY3Rpb24gbGooYSl7dGhpcy5hPWF9LApVVjpmdW5jdGlv
-biBVVihhKXt0aGlzLmE9YX0sCms1OmZ1bmN0aW9uIGs1KCl7fSwKS1k6ZnVuY3Rpb24gS1koKXt9LApj
-OmZ1bmN0aW9uIGMoYSl7dGhpcy5hPWF9LApDRDpmdW5jdGlvbiBDRChhKXt0aGlzLmE9YX0sCmFFOmZ1
-bmN0aW9uIGFFKGEsYixjKXt0aGlzLmE9YQp0aGlzLmI9Ygp0aGlzLmM9Y30sCkVIOmZ1bmN0aW9uIEVI
-KCl7fSwKS046ZnVuY3Rpb24gS04oKXt9LApjWDpmdW5jdGlvbiBjWCgpe30sCkFuOmZ1bmN0aW9uIEFu
-KCl7fSwKek06ZnVuY3Rpb24gek0oKXt9LApaMDpmdW5jdGlvbiBaMCgpe30sCk4zOmZ1bmN0aW9uIE4z
-KGEsYixjKXt0aGlzLmE9YQp0aGlzLmI9Ygp0aGlzLiR0aT1jfSwKYzg6ZnVuY3Rpb24gYzgoKXt9LApG
-SzpmdW5jdGlvbiBGSygpe30sCms6ZnVuY3Rpb24gaygpe30sCk9kOmZ1bmN0aW9uIE9kKCl7fSwKaWI6
-ZnVuY3Rpb24gaWIoKXt9LAp4dTpmdW5jdGlvbiB4dSgpe30sCkd6OmZ1bmN0aW9uIEd6KCl7fSwKcVU6
-ZnVuY3Rpb24gcVUoKXt9LApSbjpmdW5jdGlvbiBSbihhKXt0aGlzLmE9YX0sCkdEOmZ1bmN0aW9uIEdE
-KCl7fSwKbjE6ZnVuY3Rpb24gbjEoYSl7dGhpcy5hPWF9LApjUzpmdW5jdGlvbiBjUyhhKXt0aGlzLmE9
-YX0sClZDOmZ1bmN0aW9uIFZDKGEpe3RoaXMuYT1hfSwKSlQ6ZnVuY3Rpb24gSlQoYSxiKXt0aGlzLmE9
-YQp0aGlzLmI9Yn0sCkRuOmZ1bmN0aW9uIERuKGEsYixjLGQsZSxmLGcpe3ZhciBfPXRoaXMKXy5hPWEK
-Xy5iPWIKXy5jPWMKXy5kPWQKXy5lPWUKXy5mPWYKXy5yPWcKXy5RPV8uej1fLnk9Xy54PW51bGx9LApl
-MTpmdW5jdGlvbiBlMShhLGIpe3RoaXMuYT1hCnRoaXMuYj1ifSwKTlk6ZnVuY3Rpb24gTlkoYSl7dGhp
-cy5hPWF9LApSWjpmdW5jdGlvbiBSWigpe30sCk1FOmZ1bmN0aW9uIE1FKGEsYil7dGhpcy5hPWEKdGhp
-cy5iPWJ9LAp5NTpmdW5jdGlvbiB5NShhKXt0aGlzLmE9YX0sClBFOmZ1bmN0aW9uIFBFKGEsYixjKXt0
-aGlzLmE9YQp0aGlzLmI9Ygp0aGlzLmM9Y30sCnEzOmZ1bmN0aW9uIHEzKCl7fSwKeUk6ZnVuY3Rpb24g
-eUkoYSl7dGhpcy5hPWF9LApjNjpmdW5jdGlvbiBjNigpe30sCnFkOmZ1bmN0aW9uIHFkKCl7fSwKVWY6
-ZnVuY3Rpb24gVWYoYSxiLGMsZCxlLGYsZyxoKXt2YXIgXz10aGlzCl8uYT1hCl8uYj1iCl8uYz1jCl8u
-ZD1kCl8uZT1lCl8uZj1mCl8ucj1nCl8ueD1oCl8ueT1udWxsfSwKcWU6ZnVuY3Rpb24gcWUoYSxiLGMs
-ZCxlLGYsZyl7dmFyIF89dGhpcwpfLmE9YQpfLmI9YgpfLmM9YwpfLmQ9ZApfLmU9ZQpfLmY9ZgpfLnI9
-ZwpfLlE9Xy56PV8ueT1fLng9bnVsbH0sCmlKOmZ1bmN0aW9uIGlKKCl7fSwKbFI6ZnVuY3Rpb24gbFIo
-YSxiKXt0aGlzLmE9YQp0aGlzLmI9Yn0sCmpnOmZ1bmN0aW9uIGpnKGEsYil7dGhpcy5hPWEKdGhpcy5i
-PWJ9LApCZjpmdW5jdGlvbiBCZihhLGIpe3RoaXMuYT1hCnRoaXMuYj1ifSwKQXM6ZnVuY3Rpb24gQXMo
-KXt9LApHRTpmdW5jdGlvbiBHRShhKXt0aGlzLmE9YX0sCk43OmZ1bmN0aW9uIE43KGEsYil7dGhpcy5h
-PWEKdGhpcy5iPWJ9LAp1UTpmdW5jdGlvbiB1USgpe30sCmhGOmZ1bmN0aW9uIGhGKCl7fSwKUjQ6ZnVu
-Y3Rpb24oYSxiLGMsZCl7dmFyIHQscyxyCkgueGQoYikKdS5qLmIoZCkKaWYoSC5vVChiKSl7dD1bY10K
-Qy5ObS5GVih0LGQpCmQ9dH1zPXUuegpyPVAuQ0goSi5NMShkLFAudzAoKSxzKSwhMCxzKQp1LlouYihh
-KQpyZXR1cm4gUC53WShILkVrKGEscixudWxsKSl9LApEbTpmdW5jdGlvbihhLGIsYyl7dmFyIHQKdHJ5
-e2lmKE9iamVjdC5pc0V4dGVuc2libGUoYSkmJiFPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5
-LmNhbGwoYSxiKSl7T2JqZWN0LmRlZmluZVByb3BlcnR5KGEsYix7dmFsdWU6Y30pCnJldHVybiEwfX1j
-YXRjaCh0KXtILlJ1KHQpfXJldHVybiExfSwKT206ZnVuY3Rpb24oYSxiKXtpZihPYmplY3QucHJvdG90
-eXBlLmhhc093blByb3BlcnR5LmNhbGwoYSxiKSlyZXR1cm4gYVtiXQpyZXR1cm4gbnVsbH0sCndZOmZ1
-bmN0aW9uKGEpe2lmKGE9PW51bGx8fHR5cGVvZiBhPT0ic3RyaW5nInx8dHlwZW9mIGE9PSJudW1iZXIi
-fHxILmwoYSkpcmV0dXJuIGEKaWYoYSBpbnN0YW5jZW9mIFAuRTQpcmV0dXJuIGEuYQppZihILlI5KGEp
-KXJldHVybiBhCmlmKHUudy5jKGEpKXJldHVybiBhCmlmKGEgaW5zdGFuY2VvZiBQLmlQKXJldHVybiBI
-Lm8yKGEpCmlmKHUuWi5jKGEpKXJldHVybiBQLmhFKGEsIiRkYXJ0X2pzRnVuY3Rpb24iLG5ldyBQLlBD
-KCkpCnJldHVybiBQLmhFKGEsIl8kZGFydF9qc09iamVjdCIsbmV3IFAubXQoJC5rSSgpKSl9LApoRTpm
-dW5jdGlvbihhLGIsYyl7dmFyIHQ9UC5PbShhLGIpCmlmKHQ9PW51bGwpe3Q9Yy4kMShhKQpQLkRtKGEs
-Yix0KX1yZXR1cm4gdH0sCkw3OmZ1bmN0aW9uKGEpe3ZhciB0LHMKaWYoYT09bnVsbHx8dHlwZW9mIGE9
-PSJzdHJpbmcifHx0eXBlb2YgYT09Im51bWJlciJ8fHR5cGVvZiBhPT0iYm9vbGVhbiIpcmV0dXJuIGEK
-ZWxzZSBpZihhIGluc3RhbmNlb2YgT2JqZWN0JiZILlI5KGEpKXJldHVybiBhCmVsc2UgaWYoYSBpbnN0
-YW5jZW9mIE9iamVjdCYmdS53LmMoYSkpcmV0dXJuIGEKZWxzZSBpZihhIGluc3RhbmNlb2YgRGF0ZSl7
-dD1ILlNjKGEuZ2V0VGltZSgpKQppZihNYXRoLmFicyh0KTw9ODY0ZTEzKXM9ITEKZWxzZSBzPSEwCmlm
-KHMpSC52aChQLnhZKCJEYXRlVGltZSBpcyBvdXRzaWRlIHZhbGlkIHJhbmdlOiAiK3QpKQpyZXR1cm4g
-bmV3IFAuaVAodCwhMSl9ZWxzZSBpZihhLmNvbnN0cnVjdG9yPT09JC5rSSgpKXJldHVybiBhLm8KZWxz
-ZSByZXR1cm4gUC5ORChhKX0sCk5EOmZ1bmN0aW9uKGEpe2lmKHR5cGVvZiBhPT0iZnVuY3Rpb24iKXJl
-dHVybiBQLmlRKGEsJC53KCksbmV3IFAuTnooKSkKaWYoYSBpbnN0YW5jZW9mIEFycmF5KXJldHVybiBQ
-LmlRKGEsJC5SOCgpLG5ldyBQLlFTKCkpCnJldHVybiBQLmlRKGEsJC5SOCgpLG5ldyBQLm5wKCkpfSwK
-aVE6ZnVuY3Rpb24oYSxiLGMpe3ZhciB0PVAuT20oYSxiKQppZih0PT1udWxsfHwhKGEgaW5zdGFuY2Vv
-ZiBPYmplY3QpKXt0PWMuJDEoYSkKUC5EbShhLGIsdCl9cmV0dXJuIHR9LApQQzpmdW5jdGlvbiBQQygp
-e30sCm10OmZ1bmN0aW9uIG10KGEpe3RoaXMuYT1hfSwKTno6ZnVuY3Rpb24gTnooKXt9LApRUzpmdW5j
-dGlvbiBRUygpe30sCm5wOmZ1bmN0aW9uIG5wKCl7fSwKRTQ6ZnVuY3Rpb24gRTQoYSl7dGhpcy5hPWF9
-LApyNzpmdW5jdGlvbiByNyhhKXt0aGlzLmE9YX0sClR6OmZ1bmN0aW9uIFR6KGEsYil7dGhpcy5hPWEK
-dGhpcy4kdGk9Yn0sCmNvOmZ1bmN0aW9uIGNvKCl7fSwKbmQ6ZnVuY3Rpb24gbmQoKXt9LApLZTpmdW5j
-dGlvbiBLZShhKXt0aGlzLmE9YX0sCmQ1OmZ1bmN0aW9uIGQ1KCl7fSwKbjY6ZnVuY3Rpb24gbjYoKXt9
-fSxXPXsKeDM6ZnVuY3Rpb24oKXtyZXR1cm4gd2luZG93fSwKWnI6ZnVuY3Rpb24oKXtyZXR1cm4gZG9j
-dW1lbnR9LApKNjpmdW5jdGlvbigpe3ZhciB0PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImEiKQpyZXR1
-cm4gdH0sClU5OmZ1bmN0aW9uKGEsYixjKXt2YXIgdD1kb2N1bWVudC5ib2R5LHM9KHQmJkMuUlkpLnI2
-KHQsYSxiLGMpCnMudG9TdHJpbmcKdD11LmFjCnQ9bmV3IEguVTUobmV3IFcuZTcocyksdC5DKCJhMihs
-RC5FKSIpLmIobmV3IFcuQ3YoKSksdC5DKCJVNTxsRC5FPiIpKQpyZXR1cm4gdS5oLmIodC5ncjgodCkp
-fSwKclM6ZnVuY3Rpb24oYSl7dmFyIHQscyxyPSJlbGVtZW50IHRhZyB1bmF2YWlsYWJsZSIKdHJ5e3Q9
-Si5SRShhKQppZih0eXBlb2YgdC5nbnMoYSk9PSJzdHJpbmciKXI9dC5nbnMoYSl9Y2F0Y2gocyl7SC5S
-dShzKX1yZXR1cm4gcn0sCnFEOmZ1bmN0aW9uKGEsYil7dmFyIHQscyxyLHE9bmV3IFAudnMoJC5YMyx1
-LlkpLHA9bmV3IFAuWmYocSx1LkUpLG89bmV3IFhNTEh0dHBSZXF1ZXN0KCkKQy5EdC5lbyhvLCJHRVQi
-LGEsITApCmIuSygwLG5ldyBXLmJVKG8pKQp0PXUuYW4Kcz10LmIobmV3IFcuaEgobyxwKSkKdS5NLmIo
-bnVsbCkKcj11LnAKVy5KRShvLCJsb2FkIixzLCExLHIpClcuSkUobywiZXJyb3IiLHQuYihwLmdZSigp
-KSwhMSxyKQpvLnNlbmQoKQpyZXR1cm4gcX0sCkMwOmZ1bmN0aW9uKGEsYil7YT01MzY4NzA5MTEmYSti
-CmE9NTM2ODcwOTExJmErKCg1MjQyODcmYSk8PDEwKQpyZXR1cm4gYV5hPj4+Nn0sCnJFOmZ1bmN0aW9u
-KGEsYixjLGQpe3ZhciB0PVcuQzAoVy5DMChXLkMwKFcuQzAoMCxhKSxiKSxjKSxkKSxzPTUzNjg3MDkx
-MSZ0KygoNjcxMDg4NjMmdCk8PDMpCnNePXM+Pj4xMQpyZXR1cm4gNTM2ODcwOTExJnMrKCgxNjM4MyZz
-KTw8MTUpfSwKVE46ZnVuY3Rpb24oYSxiKXt2YXIgdCxzLHI9YS5jbGFzc0xpc3QKZm9yKHQ9Yi5sZW5n
-dGgscz0wO3M8Yi5sZW5ndGg7Yi5sZW5ndGg9PT10fHwoMCxILmxrKShiKSwrK3Mpci5hZGQoYltzXSl9
-LApKRTpmdW5jdGlvbihhLGIsYyxkLGUpe3ZhciB0PVcuYUYobmV3IFcudk4oYyksdS5CKQppZih0IT1u
-dWxsJiYhMClKLmRaKGEsYix0LCExKQpyZXR1cm4gbmV3IFcueEMoYSxiLHQsITEsZS5DKCJ4QzwwPiIp
-KX0sClR3OmZ1bmN0aW9uKGEpe3ZhciB0PVcuSjYoKSxzPXdpbmRvdy5sb2NhdGlvbgp0PW5ldyBXLkpR
-KG5ldyBXLm1rKHQscykpCnQuQ1koYSkKcmV0dXJuIHR9LAp5VzpmdW5jdGlvbihhLGIsYyxkKXt1Lmgu
-YihhKQpILnkoYikKSC55KGMpCnUuTy5iKGQpCnJldHVybiEwfSwKUVc6ZnVuY3Rpb24oYSxiLGMsZCl7
-dmFyIHQscyxyCnUuaC5iKGEpCkgueShiKQpILnkoYykKdD11Lk8uYihkKS5hCnM9dC5hCnMuaHJlZj1j
-CnI9cy5ob3N0bmFtZQp0PXQuYgppZighKHI9PXQuaG9zdG5hbWUmJnMucG9ydD09dC5wb3J0JiZzLnBy
-b3RvY29sPT10LnByb3RvY29sKSlpZihyPT09IiIpaWYocy5wb3J0PT09IiIpe3Q9cy5wcm90b2NvbAp0
-PXQ9PT0iOiJ8fHQ9PT0iIn1lbHNlIHQ9ITEKZWxzZSB0PSExCmVsc2UgdD0hMApyZXR1cm4gdH0sCkJs
-OmZ1bmN0aW9uKCl7dmFyIHQ9dS5OLHM9UC50TShDLlF4LHQpLHI9dS5kRy5iKG5ldyBXLklBKCkpLHE9
-SC5WTShbIlRFTVBMQVRFIl0sdS5zKQp0PW5ldyBXLmN0KHMsUC5Mcyh0KSxQLkxzKHQpLFAuTHModCks
-bnVsbCkKdC5DWShudWxsLG5ldyBILkE4KEMuUXgscix1LmR2KSxxLG51bGwpCnJldHVybiB0fSwKdVY6
-ZnVuY3Rpb24oYSl7aWYoYT09bnVsbClyZXR1cm4gbnVsbApyZXR1cm4gVy5QMShhKX0sCnFjOmZ1bmN0
-aW9uKGEpe3ZhciB0CmlmKGE9PW51bGwpcmV0dXJuIG51bGwKaWYoInBvc3RNZXNzYWdlIiBpbiBhKXt0
-PVcuUDEoYSkKaWYodS51LmModCkpcmV0dXJuIHQKcmV0dXJuIG51bGx9ZWxzZSByZXR1cm4gdS51LmIo
-YSl9LApQMTpmdW5jdGlvbihhKXtpZihhPT09d2luZG93KXJldHVybiB1LmNpLmIoYSkKZWxzZSByZXR1
-cm4gbmV3IFcuZFcoYSl9LApISDpmdW5jdGlvbihhKXtpZihhPT09d2luZG93LmxvY2F0aW9uKXJldHVy
-biBhCmVsc2UgcmV0dXJuIG5ldyBXLkZiKCl9LAphRjpmdW5jdGlvbihhLGIpe3ZhciB0PSQuWDMKaWYo
-dD09PUMuTlUpcmV0dXJuIGEKcmV0dXJuIHQuUHkoYSxiKX0sCnFFOmZ1bmN0aW9uIHFFKCl7fSwKR2g6
-ZnVuY3Rpb24gR2goKXt9LApmWTpmdW5jdGlvbiBmWSgpe30sCm5COmZ1bmN0aW9uIG5CKCl7fSwKQXo6
-ZnVuY3Rpb24gQXooKXt9LApRUDpmdW5jdGlvbiBRUCgpe30sCm54OmZ1bmN0aW9uIG54KCl7fSwKb0o6
-ZnVuY3Rpb24gb0ooKXt9LAppZDpmdW5jdGlvbiBpZCgpe30sClFGOmZ1bmN0aW9uIFFGKCl7fSwKTmg6
-ZnVuY3Rpb24gTmgoKXt9LApJQjpmdW5jdGlvbiBJQigpe30sCm43OmZ1bmN0aW9uIG43KCl7fSwKd3o6
-ZnVuY3Rpb24gd3ooYSxiKXt0aGlzLmE9YQp0aGlzLiR0aT1ifSwKY3Y6ZnVuY3Rpb24gY3YoKXt9LApD
-djpmdW5jdGlvbiBDdigpe30sCmVhOmZ1bmN0aW9uIGVhKCl7fSwKRDA6ZnVuY3Rpb24gRDAoKXt9LApU
-NTpmdW5jdGlvbiBUNSgpe30sCmg0OmZ1bmN0aW9uIGg0KCl7fSwKYnI6ZnVuY3Rpb24gYnIoKXt9LApW
-YjpmdW5jdGlvbiBWYigpe30sCk83OmZ1bmN0aW9uIE83KCl7fSwKYlU6ZnVuY3Rpb24gYlUoYSl7dGhp
-cy5hPWF9LApoSDpmdW5jdGlvbiBoSChhLGIpe3RoaXMuYT1hCnRoaXMuYj1ifSwKd2E6ZnVuY3Rpb24g
-d2EoKXt9LApTZzpmdW5jdGlvbiBTZygpe30sCnU4OmZ1bmN0aW9uIHU4KCl7fSwKQWo6ZnVuY3Rpb24g
-QWooKXt9LAplNzpmdW5jdGlvbiBlNyhhKXt0aGlzLmE9YX0sCnVIOmZ1bmN0aW9uIHVIKCl7fSwKQkg6
-ZnVuY3Rpb24gQkgoKXt9LApTTjpmdW5jdGlvbiBTTigpe30sCmV3OmZ1bmN0aW9uIGV3KCl7fSwKbHA6
-ZnVuY3Rpb24gbHAoKXt9LApUYjpmdW5jdGlvbiBUYigpe30sCkl2OmZ1bmN0aW9uIEl2KCl7fSwKV1A6
-ZnVuY3Rpb24gV1AoKXt9LAp5WTpmdW5jdGlvbiB5WSgpe30sCnc2OmZ1bmN0aW9uIHc2KCl7fSwKSzU6
-ZnVuY3Rpb24gSzUoKXt9LApDbTpmdW5jdGlvbiBDbSgpe30sCkNROmZ1bmN0aW9uIENRKCl7fSwKdzQ6
-ZnVuY3Rpb24gdzQoKXt9LApyaDpmdW5jdGlvbiByaCgpe30sCmNmOmZ1bmN0aW9uIGNmKCl7fSwKaTc6
-ZnVuY3Rpb24gaTcoYSl7dGhpcy5hPWF9LApTeTpmdW5jdGlvbiBTeShhKXt0aGlzLmE9YX0sCktTOmZ1
-bmN0aW9uIEtTKGEsYil7dGhpcy5hPWEKdGhpcy5iPWJ9LApBMzpmdW5jdGlvbiBBMyhhLGIpe3RoaXMu
-YT1hCnRoaXMuYj1ifSwKSTQ6ZnVuY3Rpb24gSTQoYSl7dGhpcy5hPWF9LApGazpmdW5jdGlvbiBGayhh
-LGIpe3RoaXMuYT1hCnRoaXMuJHRpPWJ9LApSTzpmdW5jdGlvbiBSTyhhLGIsYyxkKXt2YXIgXz10aGlz
-Cl8uYT1hCl8uYj1iCl8uYz1jCl8uJHRpPWR9LApldTpmdW5jdGlvbiBldShhLGIsYyxkKXt2YXIgXz10
-aGlzCl8uYT1hCl8uYj1iCl8uYz1jCl8uJHRpPWR9LAp4QzpmdW5jdGlvbiB4QyhhLGIsYyxkLGUpe3Zh
-ciBfPXRoaXMKXy5iPWEKXy5jPWIKXy5kPWMKXy5lPWQKXy4kdGk9ZX0sCnZOOmZ1bmN0aW9uIHZOKGEp
-e3RoaXMuYT1hfSwKSlE6ZnVuY3Rpb24gSlEoYSl7dGhpcy5hPWF9LApHbTpmdW5jdGlvbiBHbSgpe30s
-CnZEOmZ1bmN0aW9uIHZEKGEpe3RoaXMuYT1hfSwKVXY6ZnVuY3Rpb24gVXYoYSl7dGhpcy5hPWF9LApF
-ZzpmdW5jdGlvbiBFZyhhLGIsYyl7dGhpcy5hPWEKdGhpcy5iPWIKdGhpcy5jPWN9LAptNjpmdW5jdGlv
-biBtNigpe30sCkVvOmZ1bmN0aW9uIEVvKCl7fSwKV2s6ZnVuY3Rpb24gV2soKXt9LApjdDpmdW5jdGlv
-biBjdChhLGIsYyxkLGUpe3ZhciBfPXRoaXMKXy5lPWEKXy5hPWIKXy5iPWMKXy5jPWQKXy5kPWV9LApJ
-QTpmdW5jdGlvbiBJQSgpe30sCk93OmZ1bmN0aW9uIE93KCl7fSwKVzk6ZnVuY3Rpb24gVzkoYSxiLGMp
-e3ZhciBfPXRoaXMKXy5hPWEKXy5iPWIKXy5jPS0xCl8uZD1udWxsCl8uJHRpPWN9LApkVzpmdW5jdGlv
-biBkVyhhKXt0aGlzLmE9YX0sCkZiOmZ1bmN0aW9uIEZiKCl7fSwKa0Y6ZnVuY3Rpb24ga0YoKXt9LApt
-azpmdW5jdGlvbiBtayhhLGIpe3RoaXMuYT1hCnRoaXMuYj1ifSwKS286ZnVuY3Rpb24gS28oYSl7dGhp
-cy5hPWF9LApmbTpmdW5jdGlvbiBmbShhKXt0aGlzLmE9YX0sCkxlOmZ1bmN0aW9uIExlKCl7fSwKSzc6
-ZnVuY3Rpb24gSzcoKXt9LApyQjpmdW5jdGlvbiByQigpe30sClhXOmZ1bmN0aW9uIFhXKCl7fSwKb2E6
-ZnVuY3Rpb24gb2EoKXt9fSxVPXsKamY6ZnVuY3Rpb24oYSl7dmFyIHQscyxyLHEKaWYoYT09bnVsbCl0
-PW51bGwKZWxzZXt0PUguVk0oW10sdS5mQSkKZm9yKHM9Si5JVCh1LlIuYihhKSk7cy5GKCk7KXtyPXMu
-Z2woKQpxPUouVTYocikKQy5ObS5pKHQsbmV3IFUuU2UoSC5jMChxLnEociwiZGVzY3JpcHRpb24iKSks
-SC5jMChxLnEociwiaHJlZiIpKSkpfX1yZXR1cm4gdH0sCk5kOmZ1bmN0aW9uKGEpe3ZhciB0LHMKaWYo
-YT09bnVsbCl0PW51bGwKZWxzZXt0PUguVk0oW10sdS5oaCkKZm9yKHM9Si5JVCh1LlIuYihhKSk7cy5G
+JjEwMjMpPDwxMHxqJjEwMjMKaz0yfWVsc2Ugaz0xfWVsc2Ugaz0xCm09Qy54Qi5OaihhLHMsdCkKaWYo
+IXEpbT1tLnRvTG93ZXJDYXNlKCkKaWYocj09bnVsbCl7cj1uZXcgUC5SbigiIikKbj1yfWVsc2Ugbj1y
+Cm4uYSs9bQpuLmErPVAuelgocCkKdCs9awpzPXR9fX19aWYocj09bnVsbClyZXR1cm4gQy54Qi5Oaihh
+LGIsYykKaWYoczxjKXttPUMueEIuTmooYSxzLGMpCnIuYSs9IXE/bS50b0xvd2VyQ2FzZSgpOm19bj1y
+LmEKcmV0dXJuIG4uY2hhckNvZGVBdCgwKT09MD9uOm59LApQaTpmdW5jdGlvbihhLGIsYyl7dmFyIHQs
+cyxyLHEKaWYoYj09PWMpcmV0dXJuIiIKaWYoIVAuRXQoSi5yWShhKS5XKGEsYikpKVAuUjMoYSxiLCJT
+Y2hlbWUgbm90IHN0YXJ0aW5nIHdpdGggYWxwaGFiZXRpYyBjaGFyYWN0ZXIiKQpmb3IodD1iLHM9ITE7
+dDxjOysrdCl7cj1DLnhCLlcoYSx0KQppZihyPDEyOCl7cT1yPj4+NAppZihxPj04KXJldHVybiBILk9I
+KEMubUsscSkKcT0oQy5tS1txXSYxPDwociYxNSkpIT09MH1lbHNlIHE9ITEKaWYoIXEpUC5SMyhhLHQs
+IklsbGVnYWwgc2NoZW1lIGNoYXJhY3RlciIpCmlmKDY1PD1yJiZyPD05MClzPSEwfWE9Qy54Qi5Oaihh
+LGIsYykKcmV0dXJuIFAuWWEocz9hLnRvTG93ZXJDYXNlKCk6YSl9LApZYTpmdW5jdGlvbihhKXtpZihh
+PT09Imh0dHAiKXJldHVybiJodHRwIgppZihhPT09ImZpbGUiKXJldHVybiJmaWxlIgppZihhPT09Imh0
+dHBzIilyZXR1cm4iaHR0cHMiCmlmKGE9PT0icGFja2FnZSIpcmV0dXJuInBhY2thZ2UiCnJldHVybiBh
+fSwKelI6ZnVuY3Rpb24oYSxiLGMpe2lmKGE9PW51bGwpcmV0dXJuIiIKcmV0dXJuIFAuUEkoYSxiLGMs
+Qy50bywhMSl9LAprYTpmdW5jdGlvbihhLGIsYyxkLGUsZil7dmFyIHQscyxyPWU9PT0iZmlsZSIscT1y
+fHxmCmlmKGE9PW51bGwpe2lmKGQ9PW51bGwpcmV0dXJuIHI/Ii8iOiIiCnQ9SC50NihkKQpzPW5ldyBI
+LmxKKGQsdC5DKCJxVSgxKSIpLmEobmV3IFAuUlooKSksdC5DKCJsSjwxLHFVPiIpKS56VigwLCIvIil9
+ZWxzZSBpZihkIT1udWxsKXRocm93IEguYihQLnhZKCJCb3RoIHBhdGggYW5kIHBhdGhTZWdtZW50cyBz
+cGVjaWZpZWQiKSkKZWxzZSBzPVAuUEkoYSxiLGMsQy5XZCwhMCkKaWYocy5sZW5ndGg9PT0wKXtpZihy
+KXJldHVybiIvIn1lbHNlIGlmKHEmJiFDLnhCLm4ocywiLyIpKXM9Ii8iK3MKcmV0dXJuIFAuSnIocyxl
+LGYpfSwKSnI6ZnVuY3Rpb24oYSxiLGMpe3ZhciB0PWIubGVuZ3RoPT09MAppZih0JiYhYyYmIUMueEIu
+bihhLCIvIikpcmV0dXJuIFAud0YoYSwhdHx8YykKcmV0dXJuIFAueGUoYSl9LApsZTpmdW5jdGlvbihh
+LGIsYyxkKXt2YXIgdCxzPXt9CmlmKGEhPW51bGwpe2lmKGQhPW51bGwpdGhyb3cgSC5iKFAueFkoIkJv
+dGggcXVlcnkgYW5kIHF1ZXJ5UGFyYW1ldGVycyBzcGVjaWZpZWQiKSkKcmV0dXJuIFAuUEkoYSxiLGMs
+Qy5WQywhMCl9aWYoZD09bnVsbClyZXR1cm4gbnVsbAp0PW5ldyBQLlJuKCIiKQpzLmE9IiIKZC5LKDAs
+bmV3IFAueTUobmV3IFAuTUUocyx0KSkpCnM9dC5hCnJldHVybiBzLmNoYXJDb2RlQXQoMCk9PTA/czpz
+fSwKdEc6ZnVuY3Rpb24oYSxiLGMpe2lmKGE9PW51bGwpcmV0dXJuIG51bGwKcmV0dXJuIFAuUEkoYSxi
+LGMsQy5WQywhMCl9LApydjpmdW5jdGlvbihhLGIsYyl7dmFyIHQscyxyLHEscCxvPWIrMgppZihvPj1h
+Lmxlbmd0aClyZXR1cm4iJSIKdD1DLnhCLm0oYSxiKzEpCnM9Qy54Qi5tKGEsbykKcj1ILm9vKHQpCnE9
+SC5vbyhzKQppZihyPDB8fHE8MClyZXR1cm4iJSIKcD1yKjE2K3EKaWYocDwxMjcpe289Qy5qbi53Ryhw
+LDQpCmlmKG8+PTgpcmV0dXJuIEguT0goQy5GMyxvKQpvPShDLkYzW29dJjE8PChwJjE1KSkhPT0wfWVs
+c2Ugbz0hMQppZihvKXJldHVybiBILkx3KGMmJjY1PD1wJiY5MD49cD8ocHwzMik+Pj4wOnApCmlmKHQ+
+PTk3fHxzPj05NylyZXR1cm4gQy54Qi5OaihhLGIsYiszKS50b1VwcGVyQ2FzZSgpCnJldHVybiBudWxs
+fSwKelg6ZnVuY3Rpb24oYSl7dmFyIHQscyxyLHEscCxvLG4sbSxsPSIwMTIzNDU2Nzg5QUJDREVGIgpp
+ZihhPDEyOCl7dD1uZXcgVWludDhBcnJheSgzKQpzPXQubGVuZ3RoCmlmKDA+PXMpcmV0dXJuIEguT0go
+dCwwKQp0WzBdPTM3CnI9Qy54Qi5XKGwsYT4+PjQpCmlmKDE+PXMpcmV0dXJuIEguT0godCwxKQp0WzFd
+PXIKcj1DLnhCLlcobCxhJjE1KQppZigyPj1zKXJldHVybiBILk9IKHQsMikKdFsyXT1yfWVsc2V7aWYo
+YT4yMDQ3KWlmKGE+NjU1MzUpe3E9MjQwCnA9NH1lbHNle3E9MjI0CnA9M31lbHNle3E9MTkyCnA9Mn10
+PW5ldyBVaW50OEFycmF5KDMqcCkKZm9yKHM9dC5sZW5ndGgsbz0wOy0tcCxwPj0wO3E9MTI4KXtuPUMu
+am4uYmYoYSw2KnApJjYzfHEKaWYobz49cylyZXR1cm4gSC5PSCh0LG8pCnRbb109MzcKcj1vKzEKbT1D
+LnhCLlcobCxuPj4+NCkKaWYocj49cylyZXR1cm4gSC5PSCh0LHIpCnRbcl09bQptPW8rMgpyPUMueEIu
+VyhsLG4mMTUpCmlmKG0+PXMpcmV0dXJuIEguT0godCxtKQp0W21dPXIKbys9M319cmV0dXJuIFAuSE0o
+dCwwLG51bGwpfSwKUEk6ZnVuY3Rpb24oYSxiLGMsZCxlKXt2YXIgdD1QLlVsKGEsYixjLGQsZSkKcmV0
+dXJuIHQ9PW51bGw/Qy54Qi5OaihhLGIsYyk6dH0sClVsOmZ1bmN0aW9uKGEsYixjLGQsZSl7dmFyIHQs
+cyxyLHEscCxvLG4sbSxsLGs9bnVsbApmb3IodD0hZSxzPWIscj1zLHE9aztzPGM7KXtwPUMueEIubShh
+LHMpCmlmKHA8MTI3KXtvPXA+Pj40CmlmKG8+PTgpcmV0dXJuIEguT0goZCxvKQpvPShkW29dJjE8PChw
+JjE1KSkhPT0wfWVsc2Ugbz0hMQppZihvKSsrcwplbHNle2lmKHA9PT0zNyl7bj1QLnJ2KGEscywhMSkK
+aWYobj09bnVsbCl7cys9Mwpjb250aW51ZX1pZigiJSI9PT1uKXtuPSIlMjUiCm09MX1lbHNlIG09M31l
+bHNle2lmKHQpaWYocDw9OTMpe289cD4+PjQKaWYobz49OClyZXR1cm4gSC5PSChDLmFrLG8pCm89KEMu
+YWtbb10mMTw8KHAmMTUpKSE9PTB9ZWxzZSBvPSExCmVsc2Ugbz0hMQppZihvKXtQLlIzKGEscywiSW52
+YWxpZCBjaGFyYWN0ZXIiKQptPWsKbj1tfWVsc2V7aWYoKHAmNjQ1MTIpPT09NTUyOTYpe289cysxCmlm
+KG88Yyl7bD1DLnhCLm0oYSxvKQppZigobCY2NDUxMik9PT01NjMyMCl7cD02NTUzNnwocCYxMDIzKTw8
+MTB8bCYxMDIzCm09Mn1lbHNlIG09MX1lbHNlIG09MX1lbHNlIG09MQpuPVAuelgocCl9fWlmKHE9PW51
+bGwpe3E9bmV3IFAuUm4oIiIpCm89cX1lbHNlIG89cQpvLmErPUMueEIuTmooYSxyLHMpCm8uYSs9SC5F
+aihuKQppZih0eXBlb2YgbSE9PSJudW1iZXIiKXJldHVybiBILnBZKG0pCnMrPW0Kcj1zfX1pZihxPT1u
+dWxsKXJldHVybiBrCmlmKHI8YylxLmErPUMueEIuTmooYSxyLGMpCnQ9cS5hCnJldHVybiB0LmNoYXJD
+b2RlQXQoMCk9PTA/dDp0fSwKeUI6ZnVuY3Rpb24oYSl7aWYoQy54Qi5uKGEsIi4iKSlyZXR1cm4hMApy
+ZXR1cm4gQy54Qi5PWShhLCIvLiIpIT09LTF9LAp4ZTpmdW5jdGlvbihhKXt2YXIgdCxzLHIscSxwLG8s
+bgppZighUC55QihhKSlyZXR1cm4gYQp0PUguVk0oW10sdS5zKQpmb3Iocz1hLnNwbGl0KCIvIikscj1z
+Lmxlbmd0aCxxPSExLHA9MDtwPHI7KytwKXtvPXNbcF0KaWYoSi5STShvLCIuLiIpKXtuPXQubGVuZ3Ro
+CmlmKG4hPT0wKXtpZigwPj1uKXJldHVybiBILk9IKHQsLTEpCnQucG9wKCkKaWYodC5sZW5ndGg9PT0w
+KUMuTm0uaSh0LCIiKX1xPSEwfWVsc2UgaWYoIi4iPT09bylxPSEwCmVsc2V7Qy5ObS5pKHQsbykKcT0h
+MX19aWYocSlDLk5tLmkodCwiIikKcmV0dXJuIEMuTm0uelYodCwiLyIpfSwKd0Y6ZnVuY3Rpb24oYSxi
+KXt2YXIgdCxzLHIscSxwLG8KaWYoIVAueUIoYSkpcmV0dXJuIWI/UC5DMShhKTphCnQ9SC5WTShbXSx1
+LnMpCmZvcihzPWEuc3BsaXQoIi8iKSxyPXMubGVuZ3RoLHE9ITEscD0wO3A8cjsrK3Ape289c1twXQpp
+ZigiLi4iPT09bylpZih0Lmxlbmd0aCE9PTAmJkMuTm0uZ3JaKHQpIT09Ii4uIil7aWYoMD49dC5sZW5n
+dGgpcmV0dXJuIEguT0godCwtMSkKdC5wb3AoKQpxPSEwfWVsc2V7Qy5ObS5pKHQsIi4uIikKcT0hMX1l
+bHNlIGlmKCIuIj09PW8pcT0hMAplbHNle0MuTm0uaSh0LG8pCnE9ITF9fXM9dC5sZW5ndGgKaWYocyE9
+PTApaWYocz09PTEpe2lmKDA+PXMpcmV0dXJuIEguT0godCwwKQpzPXRbMF0ubGVuZ3RoPT09MH1lbHNl
+IHM9ITEKZWxzZSBzPSEwCmlmKHMpcmV0dXJuIi4vIgppZihxfHxDLk5tLmdyWih0KT09PSIuLiIpQy5O
+bS5pKHQsIiIpCmlmKCFiKXtpZigwPj10Lmxlbmd0aClyZXR1cm4gSC5PSCh0LDApCkMuTm0uWSh0LDAs
+UC5DMSh0WzBdKSl9cmV0dXJuIEMuTm0uelYodCwiLyIpfSwKQzE6ZnVuY3Rpb24oYSl7dmFyIHQscyxy
+LHE9YS5sZW5ndGgKaWYocT49MiYmUC5FdChKLlF6KGEsMCkpKWZvcih0PTE7dDxxOysrdCl7cz1DLnhC
+LlcoYSx0KQppZihzPT09NTgpcmV0dXJuIEMueEIuTmooYSwwLHQpKyIlM0EiK0MueEIuRyhhLHQrMSkK
+aWYoczw9MTI3KXtyPXM+Pj40CmlmKHI+PTgpcmV0dXJuIEguT0goQy5tSyxyKQpyPShDLm1LW3JdJjE8
+PChzJjE1KSk9PT0wfWVsc2Ugcj0hMAppZihyKWJyZWFrfXJldHVybiBhfSwKbW46ZnVuY3Rpb24oYSl7
+dmFyIHQscyxyLHE9YS5nRmooKSxwPXEubGVuZ3RoCmlmKHA+MCYmSi5IbShxWzBdKT09PTImJkouYTYo
+cVswXSwxKT09PTU4KXtpZigwPj1wKXJldHVybiBILk9IKHEsMCkKUC5yZyhKLmE2KHFbMF0sMCksITEp
+ClAuSE4ocSwhMSwxKQp0PSEwfWVsc2V7UC5ITihxLCExLDApCnQ9ITF9cz1hLmd0VCgpJiYhdD8iIisi
+XFwiOiIiCmlmKGEuZ2NqKCkpe3I9YS5nSmYoYSkKaWYoci5sZW5ndGghPT0wKXM9cysiXFwiK3IrIlxc
+In1zPVAudmcocyxxLCJcXCIpCnA9dCYmcD09PTE/cysiXFwiOnMKcmV0dXJuIHAuY2hhckNvZGVBdCgw
+KT09MD9wOnB9LApJaDpmdW5jdGlvbihhLGIpe3ZhciB0LHMscgpmb3IodD0wLHM9MDtzPDI7KytzKXty
+PUMueEIuVyhhLGIrcykKaWYoNDg8PXImJnI8PTU3KXQ9dCoxNityLTQ4CmVsc2V7cnw9MzIKaWYoOTc8
+PXImJnI8PTEwMil0PXQqMTYrci04NwplbHNlIHRocm93IEguYihQLnhZKCJJbnZhbGlkIFVSTCBlbmNv
+ZGluZyIpKX19cmV0dXJuIHR9LAprdTpmdW5jdGlvbihhLGIsYyxkLGUpe3ZhciB0LHMscixxLHA9Si5y
+WShhKSxvPWIKd2hpbGUoITApe2lmKCEobzxjKSl7dD0hMApicmVha31zPXAuVyhhLG8pCmlmKHM8PTEy
+NylpZihzIT09Mzcpcj1lJiZzPT09NDMKZWxzZSByPSEwCmVsc2Ugcj0hMAppZihyKXt0PSExCmJyZWFr
+fSsrb31pZih0KXtpZihDLnhNIT09ZClyPSExCmVsc2Ugcj0hMAppZihyKXJldHVybiBwLk5qKGEsYixj
+KQplbHNlIHE9bmV3IEgucWoocC5OaihhLGIsYykpfWVsc2V7cT1ILlZNKFtdLHUudCkKZm9yKG89Yjtv
+PGM7KytvKXtzPXAuVyhhLG8pCmlmKHM+MTI3KXRocm93IEguYihQLnhZKCJJbGxlZ2FsIHBlcmNlbnQg
+ZW5jb2RpbmcgaW4gVVJJIikpCmlmKHM9PT0zNyl7aWYobyszPmEubGVuZ3RoKXRocm93IEguYihQLnhZ
+KCJUcnVuY2F0ZWQgVVJJIikpCkMuTm0uaShxLFAuSWgoYSxvKzEpKQpvKz0yfWVsc2UgaWYoZSYmcz09
+PTQzKUMuTm0uaShxLDMyKQplbHNlIEMuTm0uaShxLHMpfX11LkwuYShxKQpyZXR1cm4gbmV3IFAuR1ko
+ITEpLldKKHEpfSwKRXQ6ZnVuY3Rpb24oYSl7dmFyIHQ9YXwzMgpyZXR1cm4gOTc8PXQmJnQ8PTEyMn0s
+CktEOmZ1bmN0aW9uKGEsYixjKXt2YXIgdCxzLHIscSxwLG8sbixtLGw9IkludmFsaWQgTUlNRSB0eXBl
+IixrPUguVk0oW2ItMV0sdS50KQpmb3IodD1hLmxlbmd0aCxzPWIscj0tMSxxPW51bGw7czx0Oysrcyl7
+cT1DLnhCLlcoYSxzKQppZihxPT09NDR8fHE9PT01OSlicmVhawppZihxPT09NDcpe2lmKHI8MCl7cj1z
+CmNvbnRpbnVlfXRocm93IEguYihQLnJyKGwsYSxzKSl9fWlmKHI8MCYmcz5iKXRocm93IEguYihQLnJy
+KGwsYSxzKSkKZm9yKDtxIT09NDQ7KXtDLk5tLmkoayxzKTsrK3MKZm9yKHA9LTE7czx0Oysrcyl7cT1D
+LnhCLlcoYSxzKQppZihxPT09NjEpe2lmKHA8MClwPXN9ZWxzZSBpZihxPT09NTl8fHE9PT00NClicmVh
+a31pZihwPj0wKUMuTm0uaShrLHApCmVsc2V7bz1DLk5tLmdyWihrKQppZihxIT09NDR8fHMhPT1vKzd8
+fCFDLnhCLlFpKGEsImJhc2U2NCIsbysxKSl0aHJvdyBILmIoUC5ycigiRXhwZWN0aW5nICc9JyIsYSxz
+KSkKYnJlYWt9fUMuTm0uaShrLHMpCm49cysxCmlmKChrLmxlbmd0aCYxKT09PTEpYT1DLmg5LnlyKGEs
+bix0KQplbHNle209UC5VbChhLG4sdCxDLlZDLCEwKQppZihtIT1udWxsKWE9Qy54Qi5pNyhhLG4sdCxt
+KX1yZXR1cm4gbmV3IFAuUEUoYSxrLGMpfSwKS046ZnVuY3Rpb24oKXt2YXIgdD0iMDEyMzQ1Njc4OUFC
+Q0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXotLl9+ISQmJygp
+KissOz0iLHM9Ii4iLHI9IjoiLHE9Ii8iLHA9Ij8iLG89IiMiLG49dS5nYyxtPVAuZEgoMjIsbmV3IFAu
+cTMoKSwhMCxuKSxsPW5ldyBQLnlJKG0pLGs9bmV3IFAuYzYoKSxqPW5ldyBQLnFkKCksaT1uLmEobC4k
+MigwLDIyNSkpCmsuJDMoaSx0LDEpCmsuJDMoaSxzLDE0KQprLiQzKGksciwzNCkKay4kMyhpLHEsMykK
+ay4kMyhpLHAsMTcyKQprLiQzKGksbywyMDUpCmk9bi5hKGwuJDIoMTQsMjI1KSkKay4kMyhpLHQsMSkK
+ay4kMyhpLHMsMTUpCmsuJDMoaSxyLDM0KQprLiQzKGkscSwyMzQpCmsuJDMoaSxwLDE3MikKay4kMyhp
+LG8sMjA1KQppPW4uYShsLiQyKDE1LDIyNSkpCmsuJDMoaSx0LDEpCmsuJDMoaSwiJSIsMjI1KQprLiQz
+KGksciwzNCkKay4kMyhpLHEsOSkKay4kMyhpLHAsMTcyKQprLiQzKGksbywyMDUpCmk9bi5hKGwuJDIo
+MSwyMjUpKQprLiQzKGksdCwxKQprLiQzKGksciwzNCkKay4kMyhpLHEsMTApCmsuJDMoaSxwLDE3MikK
+ay4kMyhpLG8sMjA1KQppPW4uYShsLiQyKDIsMjM1KSkKay4kMyhpLHQsMTM5KQprLiQzKGkscSwxMzEp
+CmsuJDMoaSxzLDE0NikKay4kMyhpLHAsMTcyKQprLiQzKGksbywyMDUpCmk9bi5hKGwuJDIoMywyMzUp
+KQprLiQzKGksdCwxMSkKay4kMyhpLHEsNjgpCmsuJDMoaSxzLDE4KQprLiQzKGkscCwxNzIpCmsuJDMo
+aSxvLDIwNSkKaT1uLmEobC4kMig0LDIyOSkpCmsuJDMoaSx0LDUpCmouJDMoaSwiQVoiLDIyOSkKay4k
+MyhpLHIsMTAyKQprLiQzKGksIkAiLDY4KQprLiQzKGksIlsiLDIzMikKay4kMyhpLHEsMTM4KQprLiQz
+KGkscCwxNzIpCmsuJDMoaSxvLDIwNSkKaT1uLmEobC4kMig1LDIyOSkpCmsuJDMoaSx0LDUpCmouJDMo
+aSwiQVoiLDIyOSkKay4kMyhpLHIsMTAyKQprLiQzKGksIkAiLDY4KQprLiQzKGkscSwxMzgpCmsuJDMo
+aSxwLDE3MikKay4kMyhpLG8sMjA1KQppPW4uYShsLiQyKDYsMjMxKSkKai4kMyhpLCIxOSIsNykKay4k
+MyhpLCJAIiw2OCkKay4kMyhpLHEsMTM4KQprLiQzKGkscCwxNzIpCmsuJDMoaSxvLDIwNSkKaT1uLmEo
+bC4kMig3LDIzMSkpCmouJDMoaSwiMDkiLDcpCmsuJDMoaSwiQCIsNjgpCmsuJDMoaSxxLDEzOCkKay4k
+MyhpLHAsMTcyKQprLiQzKGksbywyMDUpCmsuJDMobi5hKGwuJDIoOCw4KSksIl0iLDUpCmk9bi5hKGwu
+JDIoOSwyMzUpKQprLiQzKGksdCwxMSkKay4kMyhpLHMsMTYpCmsuJDMoaSxxLDIzNCkKay4kMyhpLHAs
+MTcyKQprLiQzKGksbywyMDUpCmk9bi5hKGwuJDIoMTYsMjM1KSkKay4kMyhpLHQsMTEpCmsuJDMoaSxz
+LDE3KQprLiQzKGkscSwyMzQpCmsuJDMoaSxwLDE3MikKay4kMyhpLG8sMjA1KQppPW4uYShsLiQyKDE3
+LDIzNSkpCmsuJDMoaSx0LDExKQprLiQzKGkscSw5KQprLiQzKGkscCwxNzIpCmsuJDMoaSxvLDIwNSkK
+aT1uLmEobC4kMigxMCwyMzUpKQprLiQzKGksdCwxMSkKay4kMyhpLHMsMTgpCmsuJDMoaSxxLDIzNCkK
+ay4kMyhpLHAsMTcyKQprLiQzKGksbywyMDUpCmk9bi5hKGwuJDIoMTgsMjM1KSkKay4kMyhpLHQsMTEp
+CmsuJDMoaSxzLDE5KQprLiQzKGkscSwyMzQpCmsuJDMoaSxwLDE3MikKay4kMyhpLG8sMjA1KQppPW4u
+YShsLiQyKDE5LDIzNSkpCmsuJDMoaSx0LDExKQprLiQzKGkscSwyMzQpCmsuJDMoaSxwLDE3MikKay4k
+MyhpLG8sMjA1KQppPW4uYShsLiQyKDExLDIzNSkpCmsuJDMoaSx0LDExKQprLiQzKGkscSwxMCkKay4k
+MyhpLHAsMTcyKQprLiQzKGksbywyMDUpCmk9bi5hKGwuJDIoMTIsMjM2KSkKay4kMyhpLHQsMTIpCmsu
+JDMoaSxwLDEyKQprLiQzKGksbywyMDUpCmk9bi5hKGwuJDIoMTMsMjM3KSkKay4kMyhpLHQsMTMpCmsu
+JDMoaSxwLDEzKQpqLiQzKG4uYShsLiQyKDIwLDI0NSkpLCJheiIsMjEpCmw9bi5hKGwuJDIoMjEsMjQ1
+KSkKai4kMyhsLCJheiIsMjEpCmouJDMobCwiMDkiLDIxKQprLiQzKGwsIistLiIsMjEpCnJldHVybiBt
+fSwKVUI6ZnVuY3Rpb24oYSxiLGMsZCxlKXt2YXIgdCxzLHIscSxwLG89JC52WigpCmZvcih0PUouclko
+YSkscz1iO3M8YzsrK3Mpe2lmKGQ8MHx8ZD49by5sZW5ndGgpcmV0dXJuIEguT0gobyxkKQpyPW9bZF0K
+cT10LlcoYSxzKV45NgppZihxPjk1KXE9MzEKaWYocT49ci5sZW5ndGgpcmV0dXJuIEguT0gocixxKQpw
+PXJbcV0KZD1wJjMxCkMuTm0uWShlLHA+Pj41LHMpfXJldHVybiBkfSwKV0Y6ZnVuY3Rpb24gV0YoYSxi
+KXt0aGlzLmE9YQp0aGlzLmI9Yn0sCmEyOmZ1bmN0aW9uIGEyKCl7fSwKaVA6ZnVuY3Rpb24gaVAoYSxi
+KXt0aGlzLmE9YQp0aGlzLmI9Yn0sCkNQOmZ1bmN0aW9uIENQKCl7fSwKWFM6ZnVuY3Rpb24gWFMoKXt9
+LApDNjpmdW5jdGlvbiBDNihhKXt0aGlzLmE9YX0sCm46ZnVuY3Rpb24gbigpe30sCnU6ZnVuY3Rpb24g
+dShhLGIsYyxkKXt2YXIgXz10aGlzCl8uYT1hCl8uYj1iCl8uYz1jCl8uZD1kfSwKYko6ZnVuY3Rpb24g
+YkooYSxiLGMsZCxlLGYpe3ZhciBfPXRoaXMKXy5lPWEKXy5mPWIKXy5hPWMKXy5iPWQKXy5jPWUKXy5k
+PWZ9LAplWTpmdW5jdGlvbiBlWShhLGIsYyxkLGUpe3ZhciBfPXRoaXMKXy5mPWEKXy5hPWIKXy5iPWMK
+Xy5jPWQKXy5kPWV9LAptcDpmdW5jdGlvbiBtcChhLGIsYyxkKXt2YXIgXz10aGlzCl8uYT1hCl8uYj1i
+Cl8uYz1jCl8uZD1kfSwKdWI6ZnVuY3Rpb24gdWIoYSl7dGhpcy5hPWF9LApkczpmdW5jdGlvbiBkcyhh
+KXt0aGlzLmE9YX0sCmxqOmZ1bmN0aW9uIGxqKGEpe3RoaXMuYT1hfSwKVVY6ZnVuY3Rpb24gVVYoYSl7
+dGhpcy5hPWF9LAprNTpmdW5jdGlvbiBrNSgpe30sCktZOmZ1bmN0aW9uIEtZKCl7fSwKYzpmdW5jdGlv
+biBjKGEpe3RoaXMuYT1hfSwKQ0Q6ZnVuY3Rpb24gQ0QoYSl7dGhpcy5hPWF9LAphRTpmdW5jdGlvbiBh
+RShhLGIsYyl7dGhpcy5hPWEKdGhpcy5iPWIKdGhpcy5jPWN9LApFSDpmdW5jdGlvbiBFSCgpe30sCklm
+OmZ1bmN0aW9uIElmKCl7fSwKY1g6ZnVuY3Rpb24gY1goKXt9LApBbjpmdW5jdGlvbiBBbigpe30sCnpN
+OmZ1bmN0aW9uIHpNKCl7fSwKWjA6ZnVuY3Rpb24gWjAoKXt9LApOMzpmdW5jdGlvbiBOMyhhLGIsYyl7
+dGhpcy5hPWEKdGhpcy5iPWIKdGhpcy4kdGk9Y30sCmM4OmZ1bmN0aW9uIGM4KCl7fSwKbGY6ZnVuY3Rp
+b24gbGYoKXt9LApNaDpmdW5jdGlvbiBNaCgpe30sCk9kOmZ1bmN0aW9uIE9kKCl7fSwKaWI6ZnVuY3Rp
+b24gaWIoKXt9LAp4dTpmdW5jdGlvbiB4dSgpe30sCkd6OmZ1bmN0aW9uIEd6KCl7fSwKWmQ6ZnVuY3Rp
+b24gWmQoKXt9LApxVTpmdW5jdGlvbiBxVSgpe30sClJuOmZ1bmN0aW9uIFJuKGEpe3RoaXMuYT1hfSwK
+R0Q6ZnVuY3Rpb24gR0QoKXt9LApuMTpmdW5jdGlvbiBuMShhKXt0aGlzLmE9YX0sCmNTOmZ1bmN0aW9u
+IGNTKGEpe3RoaXMuYT1hfSwKVkM6ZnVuY3Rpb24gVkMoYSl7dGhpcy5hPWF9LApKVDpmdW5jdGlvbiBK
+VChhLGIpe3RoaXMuYT1hCnRoaXMuYj1ifSwKRG46ZnVuY3Rpb24gRG4oYSxiLGMsZCxlLGYsZyl7dmFy
+IF89dGhpcwpfLmE9YQpfLmI9YgpfLmM9YwpfLmQ9ZApfLmU9ZQpfLmY9ZgpfLnI9ZwpfLlE9Xy56PV8u
+eT1fLng9bnVsbH0sClJaOmZ1bmN0aW9uIFJaKCl7fSwKTUU6ZnVuY3Rpb24gTUUoYSxiKXt0aGlzLmE9
+YQp0aGlzLmI9Yn0sCnk1OmZ1bmN0aW9uIHk1KGEpe3RoaXMuYT1hfSwKUEU6ZnVuY3Rpb24gUEUoYSxi
+LGMpe3RoaXMuYT1hCnRoaXMuYj1iCnRoaXMuYz1jfSwKcTM6ZnVuY3Rpb24gcTMoKXt9LAp5STpmdW5j
+dGlvbiB5SShhKXt0aGlzLmE9YX0sCmM2OmZ1bmN0aW9uIGM2KCl7fSwKcWQ6ZnVuY3Rpb24gcWQoKXt9
+LApVZjpmdW5jdGlvbiBVZihhLGIsYyxkLGUsZixnLGgpe3ZhciBfPXRoaXMKXy5hPWEKXy5iPWIKXy5j
+PWMKXy5kPWQKXy5lPWUKXy5mPWYKXy5yPWcKXy54PWgKXy55PW51bGx9LApxZTpmdW5jdGlvbiBxZShh
+LGIsYyxkLGUsZixnKXt2YXIgXz10aGlzCl8uYT1hCl8uYj1iCl8uYz1jCl8uZD1kCl8uZT1lCl8uZj1m
+Cl8ucj1nCl8uUT1fLno9Xy55PV8ueD1udWxsfSwKaUo6ZnVuY3Rpb24gaUooKXt9LApqZzpmdW5jdGlv
+biBqZyhhLGIpe3RoaXMuYT1hCnRoaXMuYj1ifSwKVGE6ZnVuY3Rpb24gVGEoYSxiKXt0aGlzLmE9YQp0
+aGlzLmI9Yn0sCkJmOmZ1bmN0aW9uIEJmKGEsYil7dGhpcy5hPWEKdGhpcy5iPWJ9LApBczpmdW5jdGlv
+biBBcygpe30sCkdFOmZ1bmN0aW9uIEdFKGEpe3RoaXMuYT1hfSwKTjc6ZnVuY3Rpb24gTjcoYSxiKXt0
+aGlzLmE9YQp0aGlzLmI9Yn0sCnVROmZ1bmN0aW9uIHVRKCl7fSwKaEY6ZnVuY3Rpb24gaEYoKXt9LApS
+NDpmdW5jdGlvbihhLGIsYyxkKXt2YXIgdCxzLHIKSC55OChiKQp1LmouYShkKQppZihILm9UKGIpKXt0
+PVtjXQpDLk5tLkZWKHQsZCkKZD10fXM9dS56CnI9UC5DSChKLk0xKGQsUC53MCgpLHMpLCEwLHMpCnUu
+WS5hKGEpCnJldHVybiBQLndZKEguRWsoYSxyLG51bGwpKX0sCkRtOmZ1bmN0aW9uKGEsYixjKXt2YXIg
+dAp0cnl7aWYoT2JqZWN0LmlzRXh0ZW5zaWJsZShhKSYmIU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJv
+cGVydHkuY2FsbChhLGIpKXtPYmplY3QuZGVmaW5lUHJvcGVydHkoYSxiLHt2YWx1ZTpjfSkKcmV0dXJu
+ITB9fWNhdGNoKHQpe0guUnUodCl9cmV0dXJuITF9LApPbTpmdW5jdGlvbihhLGIpe2lmKE9iamVjdC5w
+cm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChhLGIpKXJldHVybiBhW2JdCnJldHVybiBudWxsfSwK
+d1k6ZnVuY3Rpb24oYSl7aWYoYT09bnVsbHx8dHlwZW9mIGE9PSJzdHJpbmcifHx0eXBlb2YgYT09Im51
+bWJlciJ8fEgubChhKSlyZXR1cm4gYQppZihhIGluc3RhbmNlb2YgUC5FNClyZXR1cm4gYS5hCmlmKEgu
+UjkoYSkpcmV0dXJuIGEKaWYodS54LmIoYSkpcmV0dXJuIGEKaWYoYSBpbnN0YW5jZW9mIFAuaVApcmV0
+dXJuIEgubzIoYSkKaWYodS5ZLmIoYSkpcmV0dXJuIFAuaEUoYSwiJGRhcnRfanNGdW5jdGlvbiIsbmV3
+IFAuUEMoKSkKcmV0dXJuIFAuaEUoYSwiXyRkYXJ0X2pzT2JqZWN0IixuZXcgUC5tdCgkLmtJKCkpKX0s
+CmhFOmZ1bmN0aW9uKGEsYixjKXt2YXIgdD1QLk9tKGEsYikKaWYodD09bnVsbCl7dD1jLiQxKGEpClAu
+RG0oYSxiLHQpfXJldHVybiB0fSwKTDc6ZnVuY3Rpb24oYSl7dmFyIHQscwppZihhPT1udWxsfHx0eXBl
+b2YgYT09InN0cmluZyJ8fHR5cGVvZiBhPT0ibnVtYmVyInx8dHlwZW9mIGE9PSJib29sZWFuIilyZXR1
+cm4gYQplbHNlIGlmKGEgaW5zdGFuY2VvZiBPYmplY3QmJkguUjkoYSkpcmV0dXJuIGEKZWxzZSBpZihh
+IGluc3RhbmNlb2YgT2JqZWN0JiZ1LnguYihhKSlyZXR1cm4gYQplbHNlIGlmKGEgaW5zdGFuY2VvZiBE
+YXRlKXt0PUgudVAoYS5nZXRUaW1lKCkpCmlmKE1hdGguYWJzKHQpPD04NjRlMTMpcz0hMQplbHNlIHM9
+ITAKaWYocylILnZoKFAueFkoIkRhdGVUaW1lIGlzIG91dHNpZGUgdmFsaWQgcmFuZ2U6ICIrdCkpClAu
+VUkoITEsImlzVXRjIix1LnkpCnJldHVybiBuZXcgUC5pUCh0LCExKX1lbHNlIGlmKGEuY29uc3RydWN0
+b3I9PT0kLmtJKCkpcmV0dXJuIGEubwplbHNlIHJldHVybiBQLk5EKGEpfSwKTkQ6ZnVuY3Rpb24oYSl7
+aWYodHlwZW9mIGE9PSJmdW5jdGlvbiIpcmV0dXJuIFAuaVEoYSwkLncoKSxuZXcgUC5OeigpKQppZihh
+IGluc3RhbmNlb2YgQXJyYXkpcmV0dXJuIFAuaVEoYSwkLlI4KCksbmV3IFAuUVMoKSkKcmV0dXJuIFAu
+aVEoYSwkLlI4KCksbmV3IFAubnAoKSl9LAppUTpmdW5jdGlvbihhLGIsYyl7dmFyIHQ9UC5PbShhLGIp
+CmlmKHQ9PW51bGx8fCEoYSBpbnN0YW5jZW9mIE9iamVjdCkpe3Q9Yy4kMShhKQpQLkRtKGEsYix0KX1y
+ZXR1cm4gdH0sClBDOmZ1bmN0aW9uIFBDKCl7fSwKbXQ6ZnVuY3Rpb24gbXQoYSl7dGhpcy5hPWF9LApO
+ejpmdW5jdGlvbiBOeigpe30sClFTOmZ1bmN0aW9uIFFTKCl7fSwKbnA6ZnVuY3Rpb24gbnAoKXt9LApF
+NDpmdW5jdGlvbiBFNChhKXt0aGlzLmE9YX0sCnI3OmZ1bmN0aW9uIHI3KGEpe3RoaXMuYT1hfSwKVHo6
+ZnVuY3Rpb24gVHooYSxiKXt0aGlzLmE9YQp0aGlzLiR0aT1ifSwKY286ZnVuY3Rpb24gY28oKXt9LApi
+QjpmdW5jdGlvbiBiQigpe30sCktlOmZ1bmN0aW9uIEtlKGEpe3RoaXMuYT1hfSwKZDU6ZnVuY3Rpb24g
+ZDUoKXt9LApuNjpmdW5jdGlvbiBuNigpe319LFc9ewp4MzpmdW5jdGlvbigpe3JldHVybiB3aW5kb3d9
+LApacjpmdW5jdGlvbigpe3JldHVybiBkb2N1bWVudH0sCko2OmZ1bmN0aW9uKGEpe3ZhciB0PWRvY3Vt
+ZW50LmNyZWF0ZUVsZW1lbnQoImEiKQppZihhIT1udWxsKXQuaHJlZj1hCnJldHVybiB0fSwKVTk6ZnVu
+Y3Rpb24oYSxiLGMpe3ZhciB0LHM9ZG9jdW1lbnQuYm9keQpzLnRvU3RyaW5nCnQ9dS5hYwp0PW5ldyBI
+LlU1KG5ldyBXLmU3KEMuUlkucjYocyxhLGIsYykpLHQuQygiYTIobEQuRSkiKS5hKG5ldyBXLkN2KCkp
+LHQuQygiVTU8bEQuRT4iKSkKcmV0dXJuIHUuaC5hKHQuZ3I4KHQpKX0sCnJTOmZ1bmN0aW9uKGEpe3Zh
+ciB0LHMscj0iZWxlbWVudCB0YWcgdW5hdmFpbGFibGUiCnRyeXt0PUouWUUoYSkKdC5nbnMoYSkKcj10
+LmducyhhKX1jYXRjaChzKXtILlJ1KHMpfXJldHVybiByfSwKcUQ6ZnVuY3Rpb24oYSxiKXt2YXIgdCxz
+LHIscT1uZXcgUC52cygkLlgzLHUuYW8pLHA9bmV3IFAuWmYocSx1LmJqKSxvPW5ldyBYTUxIdHRwUmVx
+dWVzdCgpCkMuRHQuZW8obywiR0VUIixhLCEwKQpiLksoMCxuZXcgVy5iVShvKSkKdD11LnUKcz10LmEo
+bmV3IFcuaEgobyxwKSkKdS5aLmEobnVsbCkKcj11LkUKVy5KRShvLCJsb2FkIixzLCExLHIpClcuSkUo
+bywiZXJyb3IiLHQuYShwLmdZSigpKSwhMSxyKQpvLnNlbmQoKQpyZXR1cm4gcX0sCkMwOmZ1bmN0aW9u
+KGEsYil7YT01MzY4NzA5MTEmYStiCmE9NTM2ODcwOTExJmErKCg1MjQyODcmYSk8PDEwKQpyZXR1cm4g
+YV5hPj4+Nn0sCnJFOmZ1bmN0aW9uKGEsYixjLGQpe3ZhciB0PVcuQzAoVy5DMChXLkMwKFcuQzAoMCxh
+KSxiKSxjKSxkKSxzPTUzNjg3MDkxMSZ0KygoNjcxMDg4NjMmdCk8PDMpCnNePXM+Pj4xMQpyZXR1cm4g
+NTM2ODcwOTExJnMrKCgxNjM4MyZzKTw8MTUpfSwKVE46ZnVuY3Rpb24oYSxiKXt2YXIgdCxzLHI9YS5j
+bGFzc0xpc3QKZm9yKHQ9Yi5sZW5ndGgscz0wO3M8Yi5sZW5ndGg7Yi5sZW5ndGg9PT10fHwoMCxILmxr
+KShiKSwrK3Mpci5hZGQoYltzXSl9LApKRTpmdW5jdGlvbihhLGIsYyxkLGUpe3ZhciB0PVcuYUYobmV3
+IFcudk4oYyksdS5CKQppZih0IT1udWxsJiYhMClKLmRaKGEsYix0LCExKQpyZXR1cm4gbmV3IFcueEMo
+YSxiLHQsITEsZS5DKCJ4QzwwPiIpKX0sClR3OmZ1bmN0aW9uKGEpe3ZhciB0PVcuSjYobnVsbCkscz13
+aW5kb3cubG9jYXRpb24KdD1uZXcgVy5KUShuZXcgVy5tayh0LHMpKQp0LkNZKGEpCnJldHVybiB0fSwK
+eVc6ZnVuY3Rpb24oYSxiLGMsZCl7dS5oLmEoYSkKSC5oKGIpCkguaChjKQp1LmNyLmEoZCkKcmV0dXJu
+ITB9LApRVzpmdW5jdGlvbihhLGIsYyxkKXt2YXIgdCxzLHIKdS5oLmEoYSkKSC5oKGIpCkguaChjKQp0
+PXUuY3IuYShkKS5hCnM9dC5hCnMuaHJlZj1jCnI9cy5ob3N0bmFtZQp0PXQuYgppZighKHI9PT10Lmhv
+c3RuYW1lJiZzLnBvcnQ9PT10LnBvcnQmJnMucHJvdG9jb2w9PT10LnByb3RvY29sKSlpZihyPT09IiIp
+aWYocy5wb3J0PT09IiIpe3Q9cy5wcm90b2NvbAp0PXQ9PT0iOiJ8fHQ9PT0iIn1lbHNlIHQ9ITEKZWxz
+ZSB0PSExCmVsc2UgdD0hMApyZXR1cm4gdH0sCkJsOmZ1bmN0aW9uKCl7dmFyIHQ9dS5OLHM9UC50TShD
+LlF4LHQpLHI9dS5kMC5hKG5ldyBXLklBKCkpLHE9SC5WTShbIlRFTVBMQVRFIl0sdS5zKQp0PW5ldyBX
+LmN0KHMsUC5Mcyh0KSxQLkxzKHQpLFAuTHModCksbnVsbCkKdC5DWShudWxsLG5ldyBILmxKKEMuUXgs
+cix1LmZqKSxxLG51bGwpCnJldHVybiB0fSwKUHY6ZnVuY3Rpb24oYSl7aWYoYT09bnVsbClyZXR1cm4g
+bnVsbApyZXR1cm4gVy5QMShhKX0sCnFjOmZ1bmN0aW9uKGEpe3ZhciB0CmlmKGE9PW51bGwpcmV0dXJu
+IG51bGwKaWYoInBvc3RNZXNzYWdlIiBpbiBhKXt0PVcuUDEoYSkKaWYodS5hUy5iKHQpKXJldHVybiB0
+CnJldHVybiBudWxsfWVsc2UgcmV0dXJuIHUuY2guYShhKX0sClAxOmZ1bmN0aW9uKGEpe2lmKGE9PT13
+aW5kb3cpcmV0dXJuIHUuY2kuYShhKQplbHNlIHJldHVybiBuZXcgVy5kVyhhKX0sCkhIOmZ1bmN0aW9u
+KGEpe2lmKGE9PT13aW5kb3cubG9jYXRpb24pcmV0dXJuIGEKZWxzZSByZXR1cm4gbmV3IFcuRmIoKX0s
+CmFGOmZ1bmN0aW9uKGEsYil7dmFyIHQ9JC5YMwppZih0PT09Qy5OVSlyZXR1cm4gYQpyZXR1cm4gdC5Q
+eShhLGIpfSwKcUU6ZnVuY3Rpb24gcUUoKXt9LApHaDpmdW5jdGlvbiBHaCgpe30sCmZZOmZ1bmN0aW9u
+IGZZKCl7fSwKbkI6ZnVuY3Rpb24gbkIoKXt9LApBejpmdW5jdGlvbiBBeigpe30sClFQOmZ1bmN0aW9u
+IFFQKCl7fSwKbng6ZnVuY3Rpb24gbngoKXt9LApvSjpmdW5jdGlvbiBvSigpe30sCmlkOmZ1bmN0aW9u
+IGlkKCl7fSwKUUY6ZnVuY3Rpb24gUUYoKXt9LApOaDpmdW5jdGlvbiBOaCgpe30sCmFlOmZ1bmN0aW9u
+IGFlKCl7fSwKSUI6ZnVuY3Rpb24gSUIoKXt9LApuNzpmdW5jdGlvbiBuNygpe30sCnd6OmZ1bmN0aW9u
+IHd6KGEsYil7dGhpcy5hPWEKdGhpcy4kdGk9Yn0sCmN2OmZ1bmN0aW9uIGN2KCl7fSwKQ3Y6ZnVuY3Rp
+b24gQ3YoKXt9LAplYTpmdW5jdGlvbiBlYSgpe30sCkQwOmZ1bmN0aW9uIEQwKCl7fSwKVDU6ZnVuY3Rp
+b24gVDUoKXt9LApoNDpmdW5jdGlvbiBoNCgpe30sCmJyOmZ1bmN0aW9uIGJyKCl7fSwKVmI6ZnVuY3Rp
+b24gVmIoKXt9LApmSjpmdW5jdGlvbiBmSigpe30sCmJVOmZ1bmN0aW9uIGJVKGEpe3RoaXMuYT1hfSwK
+aEg6ZnVuY3Rpb24gaEgoYSxiKXt0aGlzLmE9YQp0aGlzLmI9Yn0sCndhOmZ1bmN0aW9uIHdhKCl7fSwK
+U2c6ZnVuY3Rpb24gU2coKXt9LAp1ODpmdW5jdGlvbiB1OCgpe30sCk9LOmZ1bmN0aW9uIE9LKCl7fSwK
+ZTc6ZnVuY3Rpb24gZTcoYSl7dGhpcy5hPWF9LAp1SDpmdW5jdGlvbiB1SCgpe30sCkJIOmZ1bmN0aW9u
+IEJIKCl7fSwKU046ZnVuY3Rpb24gU04oKXt9LApldzpmdW5jdGlvbiBldygpe30sCmxwOmZ1bmN0aW9u
+IGxwKCl7fSwKVGI6ZnVuY3Rpb24gVGIoKXt9LApJdjpmdW5jdGlvbiBJdigpe30sCldQOmZ1bmN0aW9u
+IFdQKCl7fSwKeVk6ZnVuY3Rpb24geVkoKXt9LAp3NjpmdW5jdGlvbiB3Nigpe30sCks1OmZ1bmN0aW9u
+IEs1KCl7fSwKQ206ZnVuY3Rpb24gQ20oKXt9LApDUTpmdW5jdGlvbiBDUSgpe30sCnc0OmZ1bmN0aW9u
+IHc0KCl7fSwKcmg6ZnVuY3Rpb24gcmgoKXt9LApjZjpmdW5jdGlvbiBjZigpe30sCmk3OmZ1bmN0aW9u
+IGk3KGEpe3RoaXMuYT1hfSwKU3k6ZnVuY3Rpb24gU3koYSl7dGhpcy5hPWF9LApLUzpmdW5jdGlvbiBL
+UyhhLGIpe3RoaXMuYT1hCnRoaXMuYj1ifSwKQTM6ZnVuY3Rpb24gQTMoYSxiKXt0aGlzLmE9YQp0aGlz
+LmI9Yn0sCkk0OmZ1bmN0aW9uIEk0KGEpe3RoaXMuYT1hfSwKRms6ZnVuY3Rpb24gRmsoYSxiKXt0aGlz
+LmE9YQp0aGlzLiR0aT1ifSwKUk86ZnVuY3Rpb24gUk8oYSxiLGMsZCl7dmFyIF89dGhpcwpfLmE9YQpf
+LmI9YgpfLmM9YwpfLiR0aT1kfSwKZXU6ZnVuY3Rpb24gZXUoYSxiLGMsZCl7dmFyIF89dGhpcwpfLmE9
+YQpfLmI9YgpfLmM9YwpfLiR0aT1kfSwKeEM6ZnVuY3Rpb24geEMoYSxiLGMsZCxlKXt2YXIgXz10aGlz
+Cl8uYj1hCl8uYz1iCl8uZD1jCl8uZT1kCl8uJHRpPWV9LAp2TjpmdW5jdGlvbiB2TihhKXt0aGlzLmE9
+YX0sCkpROmZ1bmN0aW9uIEpRKGEpe3RoaXMuYT1hfSwKR206ZnVuY3Rpb24gR20oKXt9LAp2RDpmdW5j
+dGlvbiB2RChhKXt0aGlzLmE9YX0sClV2OmZ1bmN0aW9uIFV2KGEpe3RoaXMuYT1hfSwKRWc6ZnVuY3Rp
+b24gRWcoYSxiLGMpe3RoaXMuYT1hCnRoaXMuYj1iCnRoaXMuYz1jfSwKbTY6ZnVuY3Rpb24gbTYoKXt9
+LApFbzpmdW5jdGlvbiBFbygpe30sCldrOmZ1bmN0aW9uIFdrKCl7fSwKY3Q6ZnVuY3Rpb24gY3QoYSxi
+LGMsZCxlKXt2YXIgXz10aGlzCl8uZT1hCl8uYT1iCl8uYj1jCl8uYz1kCl8uZD1lfSwKSUE6ZnVuY3Rp
+b24gSUEoKXt9LApPdzpmdW5jdGlvbiBPdygpe30sClc5OmZ1bmN0aW9uIFc5KGEsYixjKXt2YXIgXz10
+aGlzCl8uYT1hCl8uYj1iCl8uYz0tMQpfLmQ9bnVsbApfLiR0aT1jfSwKZFc6ZnVuY3Rpb24gZFcoYSl7
+dGhpcy5hPWF9LApGYjpmdW5jdGlvbiBGYigpe30sCmtGOmZ1bmN0aW9uIGtGKCl7fSwKbWs6ZnVuY3Rp
+b24gbWsoYSxiKXt0aGlzLmE9YQp0aGlzLmI9Yn0sCktvOmZ1bmN0aW9uIEtvKGEpe3RoaXMuYT1hCnRo
+aXMuYj0hMX0sCmZtOmZ1bmN0aW9uIGZtKGEpe3RoaXMuYT1hfSwKTGU6ZnVuY3Rpb24gTGUoKXt9LApL
+NzpmdW5jdGlvbiBLNygpe30sCnJCOmZ1bmN0aW9uIHJCKCl7fSwKWFc6ZnVuY3Rpb24gWFcoKXt9LApv
+YTpmdW5jdGlvbiBvYSgpe319LFU9ewpqZjpmdW5jdGlvbihhKXt2YXIgdCxzLHIscQppZihhPT1udWxs
+KXQ9bnVsbAplbHNle3Q9SC5WTShbXSx1LmQ3KQpmb3Iocz1KLklUKHUuVC5hKGEpKTtzLkYoKTspe3I9
+cy5nbCgpCnE9Si5VNihyKQpDLk5tLmkodCxuZXcgVS5TZShILmgocS5xKHIsImRlc2NyaXB0aW9uIikp
+LEguaChxLnEociwiaHJlZiIpKSkpfX1yZXR1cm4gdH0sCk5kOmZ1bmN0aW9uKGEpe3ZhciB0LHMKaWYo
+YT09bnVsbCl0PW51bGwKZWxzZXt0PUguVk0oW10sdS5hQSkKZm9yKHM9Si5JVCh1LlQuYShhKSk7cy5G
 KCk7KUMuTm0uaSh0LFUuTmYocy5nbCgpKSl9cmV0dXJuIHR9LApOZjpmdW5jdGlvbihhKXt2YXIgdCxz
-LHIscSxwLG89ImRlc2NyaXB0aW9uIixuPUouVTYoYSksbT1ILmMwKG4ucShhLG8pKSxsPUguVk0oW10s
-dS5hSikKZm9yKG49Si5JVCh1LlIuYihuLnEoYSwiZW50cmllcyIpKSk7bi5GKCk7KXt0PW4uZ2woKQpz
-PUouVTYodCkKcj1ILmMwKHMucSh0LG8pKQpxPUguYzAocy5xKHQsImZ1bmN0aW9uIikpCnM9cy5xKHQs
-ImxpbmsiKQppZihzPT1udWxsKXM9bnVsbAplbHNle3A9Si5VNihzKQpzPW5ldyBVLk1sKEguYzAocC5x
-KHMsImhyZWYiKSksSC5XWShwLnEocywibGluZSIpKSxILmMwKHAucShzLCJwYXRoIikpKX1DLk5tLmko
-bCxuZXcgVS53YihyLHEscykpfXJldHVybiBuZXcgVS55RChtLGwpfSwKZDI6ZnVuY3Rpb24gZDIoYSxi
-LGMsZCxlKXt2YXIgXz10aGlzCl8uYT1hCl8uYj1iCl8uYz1jCl8uZD1kCl8uZT1lfSwKU2U6ZnVuY3Rp
-b24gU2UoYSxiKXt0aGlzLmE9YQp0aGlzLmI9Yn0sCk1sOmZ1bmN0aW9uIE1sKGEsYixjKXt0aGlzLmE9
-YQp0aGlzLmI9Ygp0aGlzLmM9Y30sCnlEOmZ1bmN0aW9uIHlEKGEsYil7dGhpcy5hPWEKdGhpcy5iPWJ9
-LAp3YjpmdW5jdGlvbiB3YihhLGIsYyl7dGhpcy5hPWEKdGhpcy5iPWIKdGhpcy5jPWN9fSxCPXsKWWY6
-ZnVuY3Rpb24oYSl7dmFyIHQscyxyLHEscCxvLG4sbSxsPUguYzAoYS5xKDAsInJlZ2lvbnMiKSksaz1I
-LmMwKGEucSgwLCJuYXZpZ2F0aW9uQ29udGVudCIpKSxqPUguYzAoYS5xKDAsInNvdXJjZUNvZGUiKSks
-aT1QLkZsKHUuTix1LmY0KQpmb3IodD11LlMuYShhLnEoMCwiZWRpdHMiKSksdD10LmdQdSh0KSx0PXQu
-Z2t6KHQpLHM9dS5SLHI9dS5naTt0LkYoKTspe3E9dC5nbCgpCnA9cS5hCm89SC5WTShbXSxyKQpmb3Io
-cT1KLklUKHMuYihxLmIpKTtxLkYoKTspe249cS5nbCgpCm09Si5VNihuKQpDLk5tLmkobyxuZXcgQi5q
-OChILldZKG0ucShuLCJsaW5lIikpLEguYzAobS5xKG4sImV4cGxhbmF0aW9uIikpLEguV1kobS5xKG4s
-Im9mZnNldCIpKSkpfWkuWSgwLHAsbyl9cmV0dXJuIG5ldyBCLnFwKGwsayxqLGkpfSwKajg6ZnVuY3Rp
-b24gajgoYSxiLGMpe3RoaXMuYT1hCnRoaXMuYj1iCnRoaXMuYz1jfSwKcXA6ZnVuY3Rpb24gcXAoYSxi
-LGMsZCl7dmFyIF89dGhpcwpfLmE9YQpfLmI9YgpfLmM9YwpfLmQ9ZH0sCmZ2OmZ1bmN0aW9uIGZ2KCl7
-fSwKT1M6ZnVuY3Rpb24oYSl7dmFyIHQKaWYoIShhPj02NSYmYTw9OTApKXQ9YT49OTcmJmE8PTEyMgpl
-bHNlIHQ9ITAKcmV0dXJuIHR9LApZdTpmdW5jdGlvbihhLGIpe3ZhciB0PWEubGVuZ3RoLHM9YisyCmlm
-KHQ8cylyZXR1cm4hMQppZighQi5PUyhDLnhCLm0oYSxiKSkpcmV0dXJuITEKaWYoQy54Qi5tKGEsYisx
-KSE9PTU4KXJldHVybiExCmlmKHQ9PT1zKXJldHVybiEwCnJldHVybiBDLnhCLm0oYSxzKT09PTQ3fX0s
-VD17bVE6ZnVuY3Rpb24gbVEoKXt9fSxMPXsKSXE6ZnVuY3Rpb24oKXtDLkJaLkIoZG9jdW1lbnQsIkRP
-TUNvbnRlbnRMb2FkZWQiLG5ldyBMLmUoKSkKQy5vbC5CKHdpbmRvdywicG9wc3RhdGUiLG5ldyBMLkwo
-KSl9LAprejpmdW5jdGlvbihhKXt2YXIgdCxzPXUuaC5hKGEucGFyZW50Tm9kZSkucXVlcnlTZWxlY3Rv
-cigiOnNjb3BlID4gdWwiKSxyPXMuc3R5bGUscT0iIitDLkNELnpRKHMub2Zmc2V0SGVpZ2h0KSoyKyJw
-eCIKci5tYXhIZWlnaHQ9cQpyPUoucUYoYSkKcT1yLiR0aQp0PXEuQygifigxKSIpLmIobmV3IEwuV3go
-cyxhKSkKdS5NLmIobnVsbCkKVy5KRShyLmEsci5iLHQsITEscS5kKX0sCnlYOmZ1bmN0aW9uKGEsYil7
-dmFyIHQscyxyLHEscCxvPSJxdWVyeVNlbGVjdG9yQWxsIixuPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3Io
-YSksbT11LmgKbi50b1N0cmluZwpILkRoKG0sbSwiVCIsbykKdD11LlQKcz1uZXcgVy53eihuLnF1ZXJ5
-U2VsZWN0b3JBbGwoIi5uYXYtbGluayIpLHQpCnMuSyhzLG5ldyBMLkFPKGIpKQpILkRoKG0sbSwiVCIs
-bykKcj1uZXcgVy53eihuLnF1ZXJ5U2VsZWN0b3JBbGwoIi5yZWdpb24iKSx0KQppZihyLmdBKHIpIT09
-MCl7cT1uLnF1ZXJ5U2VsZWN0b3IoInRhYmxlW2RhdGEtcGF0aF0iKQpxLnRvU3RyaW5nCnIuSyhyLG5l
-dyBMLkhvKHEuZ2V0QXR0cmlidXRlKCJkYXRhLSIrbmV3IFcuU3kobmV3IFcuaTcocSkpLk8oInBhdGgi
-KSkpKX1ILkRoKG0sbSwiVCIsbykKcD1uZXcgVy53eihuLnF1ZXJ5U2VsZWN0b3JBbGwoIi5hZGQtaGlu
-dC1saW5rIiksdCkKcC5LKHAsbmV3IEwuSUMoKSl9LApRNjpmdW5jdGlvbihhLGIpe3ZhciB0PXUuTgpy
+LHIscSxwLG89ImRlc2NyaXB0aW9uIixuPUouVTYoYSksbT1ILmgobi5xKGEsbykpLGw9SC5WTShbXSx1
+LmFKKQpmb3Iobj1KLklUKHUuVC5hKG4ucShhLCJlbnRyaWVzIikpKTtuLkYoKTspe3Q9bi5nbCgpCnM9
+Si5VNih0KQpyPUguaChzLnEodCxvKSkKcT1ILmgocy5xKHQsImZ1bmN0aW9uIikpCnM9cy5xKHQsImxp
+bmsiKQppZihzPT1udWxsKXM9bnVsbAplbHNle3A9Si5VNihzKQpzPW5ldyBVLk1sKEguaChwLnEocywi
+aHJlZiIpKSxILnVQKHAucShzLCJsaW5lIikpLEguaChwLnEocywicGF0aCIpKSl9Qy5ObS5pKGwsbmV3
+IFUud2IocixxLHMpKX1yZXR1cm4gbmV3IFUueUQobSxsKX0sCmQyOmZ1bmN0aW9uIGQyKGEsYixjLGQs
+ZSl7dmFyIF89dGhpcwpfLmE9YQpfLmI9YgpfLmM9YwpfLmQ9ZApfLmU9ZX0sClNlOmZ1bmN0aW9uIFNl
+KGEsYil7dGhpcy5hPWEKdGhpcy5iPWJ9LApNbDpmdW5jdGlvbiBNbChhLGIsYyl7dGhpcy5hPWEKdGhp
+cy5iPWIKdGhpcy5jPWN9LAp5RDpmdW5jdGlvbiB5RChhLGIpe3RoaXMuYT1hCnRoaXMuYj1ifSwKd2I6
+ZnVuY3Rpb24gd2IoYSxiLGMpe3RoaXMuYT1hCnRoaXMuYj1iCnRoaXMuYz1jfX0sQj17CllmOmZ1bmN0
+aW9uKGEpe3ZhciB0LHMscixxLHAsbyxuLG0sbD1ILmgoYS5xKDAsInJlZ2lvbnMiKSksaz1ILmgoYS5x
+KDAsIm5hdmlnYXRpb25Db250ZW50IikpLGo9SC5oKGEucSgwLCJzb3VyY2VDb2RlIikpLGk9UC5GbCh1
+LlgsdS5kXykKZm9yKHQ9dS5hLmEoYS5xKDAsImVkaXRzIikpLHQ9dC5nUHUodCksdD10Lmdreih0KSxz
+PXUuVCxyPXUuaDQ7dC5GKCk7KXtxPXQuZ2woKQpwPXEuYQpvPUguVk0oW10scikKZm9yKHE9Si5JVChz
+LmEocS5iKSk7cS5GKCk7KXtuPXEuZ2woKQptPUouVTYobikKQy5ObS5pKG8sbmV3IEIuajgoSC51UCht
+LnEobiwibGluZSIpKSxILmgobS5xKG4sImV4cGxhbmF0aW9uIikpLEgudVAobS5xKG4sIm9mZnNldCIp
+KSkpfWkuWSgwLHAsbyl9cmV0dXJuIG5ldyBCLnFwKGwsayxqLGkpfSwKajg6ZnVuY3Rpb24gajgoYSxi
+LGMpe3RoaXMuYT1hCnRoaXMuYj1iCnRoaXMuYz1jfSwKcXA6ZnVuY3Rpb24gcXAoYSxiLGMsZCl7dmFy
+IF89dGhpcwpfLmE9YQpfLmI9YgpfLmM9YwpfLmQ9ZH0sCmZ2OmZ1bmN0aW9uIGZ2KCl7fSwKT1M6ZnVu
+Y3Rpb24oYSl7dmFyIHQKaWYoIShhPj02NSYmYTw9OTApKXQ9YT49OTcmJmE8PTEyMgplbHNlIHQ9ITAK
+cmV0dXJuIHR9LApZdTpmdW5jdGlvbihhLGIpe3ZhciB0PWEubGVuZ3RoLHM9YisyCmlmKHQ8cylyZXR1
+cm4hMQppZighQi5PUyhDLnhCLm0oYSxiKSkpcmV0dXJuITEKaWYoQy54Qi5tKGEsYisxKSE9PTU4KXJl
+dHVybiExCmlmKHQ9PT1zKXJldHVybiEwCnJldHVybiBDLnhCLm0oYSxzKT09PTQ3fX0sVD17bVE6ZnVu
+Y3Rpb24gbVEoKXt9fSxMPXsKSXE6ZnVuY3Rpb24oKXtDLkJaLkIoZG9jdW1lbnQsIkRPTUNvbnRlbnRM
+b2FkZWQiLG5ldyBMLmUoKSkKQy5vbC5CKHdpbmRvdywicG9wc3RhdGUiLG5ldyBMLkwoKSl9LAprejpm
+dW5jdGlvbihhKXt2YXIgdCxzPXUuZy5hKGEucGFyZW50Tm9kZSkucXVlcnlTZWxlY3RvcigiOnNjb3Bl
+ID4gdWwiKSxyPXMuc3R5bGUscT0iIitDLkNELnpRKHMub2Zmc2V0SGVpZ2h0KSoyKyJweCIKci5tYXhI
+ZWlnaHQ9cQpyPUoucUYoYSkKcT1yLiR0aQp0PXEuQygifigxKT8iKS5hKG5ldyBMLld4KHMsYSkpCnUu
+Wi5hKG51bGwpClcuSkUoci5hLHIuYix0LCExLHEuYyl9LAp5WDpmdW5jdGlvbihhLGIpe3ZhciB0LHMs
+cixxLHAsbyxuPSJxdWVyeVNlbGVjdG9yQWxsIixtPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoYSksbD11
+LmcKbS50b1N0cmluZwp0PXUuaApILkRoKGwsdCwiVCIsbikKcz11LlIKcj1uZXcgVy53eihtLnF1ZXJ5
+U2VsZWN0b3JBbGwoIi5uYXYtbGluayIpLHMpCnIuSyhyLG5ldyBMLkFPKGIpKQpILkRoKGwsdCwiVCIs
+bikKcT1uZXcgVy53eihtLnF1ZXJ5U2VsZWN0b3JBbGwoIi5yZWdpb24iKSxzKQppZihxLmdBKHEpIT09
+MCl7cD1tLnF1ZXJ5U2VsZWN0b3IoInRhYmxlW2RhdGEtcGF0aF0iKQpwLnRvU3RyaW5nCnEuSyhxLG5l
+dyBMLkhvKHAuZ2V0QXR0cmlidXRlKCJkYXRhLSIrbmV3IFcuU3kobmV3IFcuaTcocCkpLk8oInBhdGgi
+KSkpKX1ILkRoKGwsdCwiVCIsbikKbz1uZXcgVy53eihtLnF1ZXJ5U2VsZWN0b3JBbGwoIi5hZGQtaGlu
+dC1saW5rIikscykKby5LKG8sbmV3IEwuSUMoKSl9LApRNjpmdW5jdGlvbihhLGIpe3ZhciB0PXUuWApy
 ZXR1cm4gVy5xRChMLlE0KGEsYiksUC5FRihbIkNvbnRlbnQtVHlwZSIsImFwcGxpY2F0aW9uL2pzb247
-IGNoYXJzZXQ9VVRGLTgiXSx0LHQpKX0sCnR5OmZ1bmN0aW9uKGEpe3ZhciB0PTAscz1QLkZYKHUuUyks
+IGNoYXJzZXQ9VVRGLTgiXSx0LHQpKX0sCnR5OmZ1bmN0aW9uKGEpe3ZhciB0PTAscz1QLkZYKHUuYSks
 cixxLHAsbyxuLG0sbCxrCnZhciAkYXN5bmMkdHk9UC5seihmdW5jdGlvbihiLGMpe2lmKGI9PT0xKXJl
 dHVybiBQLmYzKGMscykKd2hpbGUodHJ1ZSlzd2l0Y2godCl7Y2FzZSAwOm49bmV3IFAudnMoJC5YMyx1
-LlkpCm09bmV3IFAuWmYobix1LkUpCmw9bmV3IFhNTEh0dHBSZXF1ZXN0KCkKaz11Lk4KQy5EdC5lbyhs
-LCJQT1NUIixMLlE0KGEsUC5GbChrLGspKSwhMCkKbC5zZXRSZXF1ZXN0SGVhZGVyKCJDb250ZW50LVR5
-cGUiLCJhcHBsaWNhdGlvbi9qc29uOyBjaGFyc2V0PVVURi04IikKaz11LmFuCnE9ay5iKG5ldyBMLkwx
-KG0sbCkpCnUuTS5iKG51bGwpCnA9dS5wClcuSkUobCwibG9hZCIscSwhMSxwKQpXLkpFKGwsImVycm9y
-IixrLmIobS5nWUooKSksITEscCkKbC5zZW5kKCkKdD0zCnJldHVybiBQLmpRKG4sJGFzeW5jJHR5KQpj
-YXNlIDM6bz1DLkN0LnBXKDAsbC5yZXNwb25zZVRleHQsbnVsbCkKaWYobC5zdGF0dXM9PT0yMDApe3I9
-dS5TLmEobykKdD0xCmJyZWFrfWVsc2UgdGhyb3cgSC5iKG8pCmNhc2UgMTpyZXR1cm4gUC55QyhyLHMp
-fX0pCnJldHVybiBQLkRJKCRhc3luYyR0eSxzKX0sCmFLOmZ1bmN0aW9uKGEpe3ZhciB0PVAuaEsoYSku
-Z2hZKCkucSgwLCJsaW5lIikKcmV0dXJuIHQ9PW51bGw/bnVsbDpILkhwKHQsbnVsbCl9LApHNjpmdW5j
-dGlvbihhKXt2YXIgdD1QLmhLKGEpLmdoWSgpLnEoMCwib2Zmc2V0IikKcmV0dXJuIHQ9PW51bGw/bnVs
-bDpILkhwKHQsbnVsbCl9LAppNjpmdW5jdGlvbihhKXtyZXR1cm4gTC5uVyh1LlYuYihhKSl9LApuVzpm
-dW5jdGlvbihhKXt2YXIgdD0wLHM9UC5GWCh1LnopLHI9MSxxLHA9W10sbyxuLG0sbCxrCnZhciAkYXN5
-bmMkaTY9UC5seihmdW5jdGlvbihiLGMpe2lmKGI9PT0xKXtxPWMKdD1yfXdoaWxlKHRydWUpc3dpdGNo
-KHQpe2Nhc2UgMDpsPXUuaC5hKFcucWMoYS5jdXJyZW50VGFyZ2V0KSkuZ2V0QXR0cmlidXRlKCJocmVm
-IikKYS5wcmV2ZW50RGVmYXVsdCgpCnI9Mwp0PTYKcmV0dXJuIFAualEoTC50eShsKSwkYXN5bmMkaTYp
-CmNhc2UgNjp1LmFfLmEoSi5HcihXLnVWKGRvY3VtZW50LmRlZmF1bHRWaWV3KSkpLnJlbG9hZCgpCnI9
-MQp0PTUKYnJlYWsKY2FzZSAzOnI9MgprPXEKbz1ILlJ1KGspCm49SC50cyhrKQpMLkMyKCJDb3VsZCBu
-b3QgYWRkL3JlbW92ZSBoaW50IixvLG4pCnQ9NQpicmVhawpjYXNlIDI6dD0xCmJyZWFrCmNhc2UgNTpy
-ZXR1cm4gUC55QyhudWxsLHMpCmNhc2UgMTpyZXR1cm4gUC5mMyhxLHMpfX0pCnJldHVybiBQLkRJKCRh
-c3luYyRpNixzKX0sCkMyOmZ1bmN0aW9uKGEsYixjKXt2YXIgdCxzLHI9ImV4Y2VwdGlvbiIscT0ic3Rh
-Y2tUcmFjZSIscD11LlMuYyhiKSYmSi5STShiLnEoMCwic3VjY2VzcyIpLCExKSYmSC5vVChiLng0KHIp
-KSYmSC5vVChiLng0KHEpKSxvPUouaWEoYikKaWYocCl7dD1ILmMwKG8ucShiLHIpKQpjPW8ucShiLHEp
-fWVsc2UgdD1vLncoYikKcD1kb2N1bWVudApzPXAucXVlcnlTZWxlY3RvcigiLnBvcHVwLXBhbmUiKQpz
-LnF1ZXJ5U2VsZWN0b3IoImgyIikuaW5uZXJUZXh0PWEKcy5xdWVyeVNlbGVjdG9yKCJwIikuaW5uZXJU
-ZXh0PXQKcy5xdWVyeVNlbGVjdG9yKCJwcmUiKS5pbm5lclRleHQ9Si5qKGMpCm89dS5OCnUuYnEuYShz
-LnF1ZXJ5U2VsZWN0b3IoImEuYm90dG9tIikpLmhyZWY9UC5YZCgiaHR0cHMiLCJnaXRodWIuY29tIiwi
-ZGFydC1sYW5nL3Nkay9pc3N1ZXMvbmV3IixQLkVGKFsidGl0bGUiLCJJc3N1ZSB3aXRoIE5OQkQgbWln
-cmF0aW9uIHRvb2w6ICIrYSwibGFiZWxzIiwiYXJlYS1hbmFseXplcixhbmFseXplci1ubmJkLW1pZ3Jh
-dGlvbix0eXBlLWJ1ZyIsImJvZHkiLGErIlxuXG5FcnJvcjogIitILmQodCkrIlxuXG5QbGVhc2UgZmls
-bCBpbiB0aGUgZm9sbG93aW5nOlxuXG4qKk5hbWUgb2YgcGFja2FnZSBiZWluZyBtaWdyYXRlZCAoaWYg
-cHVibGljKSoqOlxuKipXaGF0IEkgd2FzIGRvaW5nIHdoZW4gdGhpcyBpc3N1ZSBvY2N1cnJlZCoqOlxu
-KipJcyBpdCBwb3NzaWJsZSB0byB3b3JrIGFyb3VuZCB0aGlzIGlzc3VlKio6XG4qKkhhcyB0aGlzIGlz
-c3VlIGhhcHBlbmVkIGJlZm9yZSwgYW5kIGlmIHNvLCBob3cgb2Z0ZW4qKjpcbioqRGFydCBTREsgdmVy
-c2lvbioqOiAiK0guZChwLmdldEVsZW1lbnRCeUlkKCJzZGstdmVyc2lvbiIpLnRleHRDb250ZW50KSsi
-XG4qKkFkZGl0aW9uYWwgZGV0YWlscyoqOlxuXG5UaGFua3MgZm9yIGZpbGluZyFcblxuU3RhY2t0cmFj
-ZTogX2F1dG8gcG9wdWxhdGVkIGJ5IG1pZ3JhdGlvbiBwcmV2aWV3IHRvb2wuX1xuXG5gYGBcbiIrSC5k
-KGMpKyJcbmBgYFxuIl0sbyxvKSkudygwKQpvPXMuc3R5bGUKby5kaXNwbGF5PSJpbml0aWFsIgpMLnFK
-KGErIjogIitILmQoYiksYyl9LAp0MjpmdW5jdGlvbihhLGIsYyl7dmFyIHQscyxyLHEscCxvLG49e30s
-bT11LmguYShXLnFjKGEuY3VycmVudFRhcmdldCkpCmEucHJldmVudERlZmF1bHQoKQp0PW4uYT1tLmdl
-dEF0dHJpYnV0ZSgiaHJlZiIpCmlmKEouemwodCwiPyIpKXtzPUMueEIuTmoodCwwLEMueEIuT1kodCwi
-PyIpKQpuLmE9cwpyPXN9ZWxzZSByPXQKaWYoYyE9bnVsbCl7cT0kLm5VKCkKcj1uLmE9cS5vNShELm5y
-KHEudE0oYykscikpfXA9TC5HNih0KQpvPUwuYUsodCkKaWYocCE9bnVsbClMLmFmKHIscCxvLGIsbmV3
-IEwublQobixwLG8pKQplbHNlIEwuYWYocixudWxsLG51bGwsYixuZXcgTC5CWihuKSl9LAp2VTpmdW5j
-dGlvbigpe3ZhciB0PWRvY3VtZW50LHM9dS5oCkguRGgocyxzLCJUIiwicXVlcnlTZWxlY3RvckFsbCIp
-CnQ9bmV3IFcud3oodC5xdWVyeVNlbGVjdG9yQWxsKCIuY29kZSIpLHUuVCkKdC5LKHQsbmV3IEwuR0go
-KSl9LApoWDpmdW5jdGlvbihhLGIsYyl7dmFyIHQ9dS5OCkwuUTYoYSxQLkVGKFsicmVnaW9uIiwicmVn
-aW9uIiwib2Zmc2V0IixILmQoYildLHQsdCkpLlc3KG5ldyBMLkRUKGEsYixjKSx1LlApLk9BKG5ldyBM
-LmVIKGEpKX0sCkc3OmZ1bmN0aW9uKGEsYixjLGQsZSl7dmFyIHQKaWYoIUouaHcoYSwiLmRhcnQiKSl7
-TC5CRShhLG5ldyBCLnFwKCIiLCIiLCIiLEMuQ00pLGQpCkwuQlgoYSxudWxsKQppZihlIT1udWxsKWUu
-JDAoKQpyZXR1cm59dD11Lk4KTC5RNihhLFAuRUYoWyJpbmxpbmUiLCJ0cnVlIl0sdCx0KSkuVzcobmV3
-IEwueXUoYSxkLGIsYyxlKSx1LlApLk9BKG5ldyBMLnpEKGEpKX0sCkdlOmZ1bmN0aW9uKCl7dmFyIHQ9
-Ii9fcHJldmlldy9uYXZpZ2F0aW9uVHJlZS5qc29uIgpMLlE2KHQsQy5XTykuVzcobmV3IEwuVFcoKSx1
-LlApLk9BKG5ldyBMLnhyKHQpKX0sCnFKOmZ1bmN0aW9uKGEsYil7dmFyIHQKd2luZG93CmlmKHR5cGVv
-ZiBjb25zb2xlIT0idW5kZWZpbmVkIil3aW5kb3cuY29uc29sZS5lcnJvcihhKQp3aW5kb3cKdD1ILmQo
-YikKaWYodHlwZW9mIGNvbnNvbGUhPSJ1bmRlZmluZWQiKXdpbmRvdy5jb25zb2xlLmVycm9yKHQpfSwK
-cU86ZnVuY3Rpb24oYSl7dmFyIHQ9YS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxzPUMuQ0QuelEoJC5m
-aSgpLm9mZnNldEhlaWdodCkscj13aW5kb3cuaW5uZXJIZWlnaHQscT1DLkNELnpRKCQuRFcoKS5vZmZz
-ZXRIZWlnaHQpCmlmKHR5cGVvZiByIT09Im51bWJlciIpcmV0dXJuIHIuSE4oKQppZih0LmJvdHRvbT5y
-LShxKzE0KSlKLmRoKGEpCmVsc2UgaWYodC50b3A8cysxNClKLmRoKGEpfSwKZkc6ZnVuY3Rpb24oYSxi
-KXt2YXIgdCxzLHIKaWYoYSE9bnVsbCl7dD1kb2N1bWVudApzPXQuZ2V0RWxlbWVudEJ5SWQoIm8iK0gu
-ZChhKSkKcj10LnF1ZXJ5U2VsZWN0b3IoIi5saW5lLSIrSC5kKGIpKQppZihzIT1udWxsKXtMLnFPKHMp
-CkouZFIocykuaSgwLCJ0YXJnZXQiKX1lbHNlIGlmKHIhPW51bGwpTC5xTyhyLnBhcmVudEVsZW1lbnQp
-CmlmKHIhPW51bGwpSi5kUih1LmguYShyLnBhcmVudE5vZGUpKS5pKDAsImhpZ2hsaWdodCIpfWVsc2Ug
-TC5xTygkLkQ5KCkpfSwKYWY6ZnVuY3Rpb24oYSxiLGMsZCxlKXt2YXIgdCxzLHI9TC5HNih3aW5kb3cu
-bG9jYXRpb24uaHJlZikscT1MLmFLKHdpbmRvdy5sb2NhdGlvbi5ocmVmKQppZihyIT1udWxsKXt0PWRv
-Y3VtZW50LmdldEVsZW1lbnRCeUlkKCJvIitILmQocikpCmlmKHQhPW51bGwpSi5kUih0KS5SKDAsInRh
-cmdldCIpfWlmKHEhPW51bGwpe3M9ZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiLmxpbmUtIitILmQocSkp
-CmlmKHMhPW51bGwpSi5kUihzLnBhcmVudEVsZW1lbnQpLlIoMCwiaGlnaGxpZ2h0Iil9aWYoYT09d2lu
-ZG93LmxvY2F0aW9uLnBhdGhuYW1lKXtMLmZHKGIsYykKZS4kMCgpfWVsc2UgTC5HNyhhLGIsYyxkLGUp
-fSwKUTQ6ZnVuY3Rpb24oYSxiKXt2YXIgdCxzLHI9UC5oSyhhKSxxPXUuTgpxPVAuRmwocSxxKQpmb3Io
-dD1yLmdoWSgpLHQ9dC5nUHUodCksdD10Lmdreih0KTt0LkYoKTspe3M9dC5nbCgpCnEuWSgwLHMuYSxz
-LmIpfWZvcih0PWIuZ1B1KGIpLHQ9dC5na3oodCk7dC5GKCk7KXtzPXQuZ2woKQpxLlkoMCxzLmEscy5i
-KX1xLlkoMCwiYXV0aFRva2VuIiwkLlVFKCkpCnJldHVybiByLm5tKDAscSkudygwKX0sClQxOmZ1bmN0
-aW9uKGEpe3ZhciB0LHMscixxLHAsbyxuLG0sbCxrPSQuaEwoKQpKLmw1KGssIiIpCmlmKGE9PW51bGwp
-e3Q9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgicCIpCnQudGV4dENvbnRlbnQ9IlNlZSBkZXRhaWxzIGFi
-b3V0IGEgcHJvcG9zZWQgZWRpdC4iCkMuTHQuc1AodCxILlZNKFsicGxhY2Vob2xkZXIiXSx1LnMpKQpr
-LmFwcGVuZENoaWxkKHQpCkMuTHQuRkYodCkKcmV0dXJufXM9YS5kCnI9JC5uVSgpCnE9ci50TShzKQpw
-PWEuYgpvPWRvY3VtZW50Cm49ci5IUChzLEouVDAoby5xdWVyeVNlbGVjdG9yKCIucm9vdCIpLnRleHRD
-b250ZW50KSkKbT1hLmMKbD1vLmNyZWF0ZUVsZW1lbnQoInAiKQprLmFwcGVuZENoaWxkKGwpCmwuYXBw
-ZW5kQ2hpbGQoby5jcmVhdGVUZXh0Tm9kZShILmQocCkrIiBhdCAiK0guZChuKSsiOiIrSC5kKG0pKyIu
-IikpCkouZGgobCkKTC5DQyhhLGsscSkKTC5GeihhLGspfSwKTEg6ZnVuY3Rpb24oYSxiLGMpe3ZhciB0
-LHMscixxLHAsbyxuLG0sbCxrLGosaSxoLGc9JC55UCgpCkoubDUoZywiIikKaWYoYi5nQShiKT09PTAp
-e3Q9ZG9jdW1lbnQKcz10LmNyZWF0ZUVsZW1lbnQoInAiKQpnLmFwcGVuZENoaWxkKHMpCnMuYXBwZW5k
-Q2hpbGQodC5jcmVhdGVUZXh0Tm9kZSgiTm8gcHJvcG9zZWQgZWRpdHMiKSl9ZWxzZSBmb3IoZz1iLmdQ
-dShiKSxnPWcuZ2t6KGcpLHQ9dS5RLHI9dC5DKCJ+KDEpIikscT11Lk0sdD10LmQ7Zy5GKCk7KXtwPWcu
-Z2woKQpvPWRvY3VtZW50CnM9by5jcmVhdGVFbGVtZW50KCJwIikKbj0kLnlQKCkKbi5hcHBlbmRDaGls
-ZChzKQpzLmFwcGVuZENoaWxkKG8uY3JlYXRlVGV4dE5vZGUoSC5kKHAuYSkrIjoiKSkKbT1vLmNyZWF0
-ZUVsZW1lbnQoInVsIikKbi5hcHBlbmRDaGlsZChtKQpmb3IocD1KLklUKHAuYik7cC5GKCk7KXtuPXAu
-Z2woKQpsPW8uY3JlYXRlRWxlbWVudCgibGkiKQptLmFwcGVuZENoaWxkKGwpCkouZFIobCkuaSgwLCJl
-ZGl0IikKaz1vLmNyZWF0ZUVsZW1lbnQoImEiKQpsLmFwcGVuZENoaWxkKGspCmsuY2xhc3NMaXN0LmFk
-ZCgiZWRpdC1saW5rIikKaj1uLmMKaT1ILmQoaikKay5zZXRBdHRyaWJ1dGUoImRhdGEtIituZXcgVy5T
-eShuZXcgVy5pNyhrKSkuTygib2Zmc2V0IiksaSkKaD1uLmEKaT1ILmQoaCkKay5zZXRBdHRyaWJ1dGUo
-ImRhdGEtIituZXcgVy5TeShuZXcgVy5pNyhrKSkuTygibGluZSIpLGkpCmsuYXBwZW5kQ2hpbGQoby5j
-cmVhdGVUZXh0Tm9kZSgibGluZSAiK0guZChoKSkpCmk9ci5iKG5ldyBMLkVFKGosaCxhKSkKcS5iKG51
-bGwpClcuSkUoaywiY2xpY2siLGksITEsdCkKbC5hcHBlbmRDaGlsZChvLmNyZWF0ZVRleHROb2RlKCI6
-ICIrSC5kKG4uYikpKX19aWYoYylMLlQxKG51bGwpfSwKRnI6ZnVuY3Rpb24oYSxiLGMpe3ZhciB0LHMs
-cj13aW5kb3cubG9jYXRpb24scT1QLmhLKChyJiZDLkV4KS5nRHIocikrSC5kKGEpKQpyPXUuTgpyPVAu
-RmwocixyKQppZihiIT1udWxsKXIuWSgwLCJvZmZzZXQiLEguZChiKSkKaWYoYyE9bnVsbClyLlkoMCwi
-bGluZSIsSC5kKGMpKQpyLlkoMCwiYXV0aFRva2VuIiwkLlVFKCkpCnE9cS5ubSgwLHIpCnI9d2luZG93
-Lmhpc3RvcnkKdD11LnoKcz1xLncoMCkKci50b1N0cmluZwpyLnB1c2hTdGF0ZShuZXcgUC5CZihbXSxb
-XSkuUHYoUC5GbCh0LHQpKSwiIixzKX0sCkVuOmZ1bmN0aW9uKGEpe3ZhciB0PUouYmIoZG9jdW1lbnQu
-cXVlcnlTZWxlY3RvcigiLnJvb3QiKS50ZXh0Q29udGVudCwiLyIpCmlmKEMueEIubihhLHQpKXJldHVy
-biBDLnhCLkcoYSx0Lmxlbmd0aCkKZWxzZSByZXR1cm4gYX0sCkJYOmZ1bmN0aW9uKGEsYil7dmFyIHQs
-cyxyPXt9CnIuYT1hCmE9TC5FbihhKQpyLmE9YQokLkQ5KCkudGV4dENvbnRlbnQ9YQp0PWRvY3VtZW50
-CnM9dS5oCkguRGgocyxzLCJUIiwicXVlcnlTZWxlY3RvckFsbCIpCnQ9bmV3IFcud3oodC5xdWVyeVNl
-bGVjdG9yQWxsKCIubmF2LXBhbmVsIC5uYXYtbGluayIpLHUuVCkKdC5LKHQsbmV3IEwuVlMocikpfSwK
-QkU6ZnVuY3Rpb24oYSxiLGMpe3ZhciB0PSIucmVnaW9ucyIscz1kb2N1bWVudCxyPXMucXVlcnlTZWxl
-Y3Rvcih0KSxxPXMucXVlcnlTZWxlY3RvcigiLmNvZGUiKQpKLnRIKHIsYi5hLCQuS0coKSkKSi50SChx
-LGIuYiwkLktHKCkpCkwuTEgoYSxiLmQsYykKTC52VSgpCkwueVgoIi5jb2RlIiwhMCkKTC55WCh0LCEw
-KX0sCnRYOmZ1bmN0aW9uKGEsYil7dmFyIHQscyxyLHEscCxvLG4sbSxsLGssaixpLGgsZz1kb2N1bWVu
-dCxmPWcuY3JlYXRlRWxlbWVudCgidWwiKQphLmFwcGVuZENoaWxkKGYpCmZvcih0PWIubGVuZ3RoLHM9
-dS5NLHI9MDtyPGIubGVuZ3RoO2IubGVuZ3RoPT09dHx8KDAsSC5saykoYiksKytyKXtxPWJbcl0KcD1n
-LmNyZWF0ZUVsZW1lbnQoImxpIikKZi5hcHBlbmRDaGlsZChwKQpvPUouUkUocCkKaWYocS5hPT09Qy5Z
-Mil7by5nUChwKS5pKDAsImRpciIpCm49Zy5jcmVhdGVFbGVtZW50KCJzcGFuIikKcC5hcHBlbmRDaGls
-ZChuKQpvPUouUkUobikKby5nUChuKS5pKDAsImFycm93IikKby5zaGYobiwiJiN4MjVCQzsiKQptPWcu
-Y3JlYXRlRWxlbWVudCgic3BhbiIpCnAuYXBwZW5kQ2hpbGQobSkKSi5sNShtLCImI3gxRjRDMTsiKQpw
-LmFwcGVuZENoaWxkKGcuY3JlYXRlVGV4dE5vZGUocS5iKSkKTC50WChwLHEuYykKTC5reihuKX1lbHNl
-e28uc2hmKHAsIiYjeDFGNEM0OyIpCmw9Zy5jcmVhdGVFbGVtZW50KCJhIikKcC5hcHBlbmRDaGlsZChs
-KQpvPUouUkUobCkKby5nUChsKS5pKDAsIm5hdi1saW5rIikKbC5zZXRBdHRyaWJ1dGUoImRhdGEtIitu
-ZXcgVy5TeShuZXcgVy5pNyhsKSkuTygibmFtZSIpLHEuZCkKbC5zZXRBdHRyaWJ1dGUoImhyZWYiLHEu
-ZSkKbC5hcHBlbmRDaGlsZChnLmNyZWF0ZVRleHROb2RlKHEuYikpCm89by5nVmwobCkKaz1vLiR0aQpq
-PWsuQygifigxKSIpLmIobmV3IEwuVEQoKSkKcy5iKG51bGwpClcuSkUoby5hLG8uYixqLCExLGsuZCkK
-aT1xLmYKaWYodHlwZW9mIGkhPT0ibnVtYmVyIilyZXR1cm4gaS5vcygpCmlmKGk+MCl7aD1nLmNyZWF0
-ZUVsZW1lbnQoInNwYW4iKQpwLmFwcGVuZENoaWxkKGgpCkouZFIoaCkuaSgwLCJlZGl0LWNvdW50IikK
-bz0iIitpKyIgIgppZihpPT09MSlrPSJlZGl0IgplbHNlIGs9ImVkaXRzIgpoLnNldEF0dHJpYnV0ZSgi
-dGl0bGUiLG8raykKaC5hcHBlbmRDaGlsZChnLmNyZWF0ZVRleHROb2RlKEMuam4udyhpKSkpfX19fSwK
-Rno6ZnVuY3Rpb24oYSxiKXt2YXIgdCxzLHIscSxwLG8sbixtLGwsayxqPWEuYQppZihqIT1udWxsKXt0
-PWRvY3VtZW50CnM9dC5jcmVhdGVFbGVtZW50KCJwIikKYi5hcHBlbmRDaGlsZChzKQpmb3Iocj1qLmxl
-bmd0aCxxPXUucyxwPXUuWCxvPTA7bzxqLmxlbmd0aDtqLmxlbmd0aD09PXJ8fCgwLEgubGspKGopLCsr
-byl7bj1qW29dCm09dC5jcmVhdGVFbGVtZW50KCJhIikKcy5hcHBlbmRDaGlsZChtKQptLmFwcGVuZENo
-aWxkKHQuY3JlYXRlVGV4dE5vZGUobi5hKSkKbS5zZXRBdHRyaWJ1dGUoImhyZWYiLG4uYikKbD1wLmIo
-SC5WTShbImFkZC1oaW50LWxpbmsiLCJiZWZvcmUtYXBwbHkiLCJidXR0b24iXSxxKSkKaz1KLmRSKG0p
-CmsuVjEoMCkKay5GVigwLGwpfX19LApDQzpmdW5jdGlvbihhMixhMyxhNCl7dmFyIHQscyxyLHEscCxv
-LG4sbSxsLGssaixpLGgsZyxmLGUsZCxjLGIsYSxhMCxhMT1udWxsCmZvcih0PWEyLmUscz10Lmxlbmd0
-aCxyPXUucyxxPXUuWCxwPTA7cDx0Lmxlbmd0aDt0Lmxlbmd0aD09PXN8fCgwLEgubGspKHQpLCsrcCl7
-bz10W3BdCm49ZG9jdW1lbnQKbT1uLmNyZWF0ZUVsZW1lbnQoInAiKQpsPXEuYihILlZNKFsidHJhY2Ui
-XSxyKSkKaz1KLmRSKG0pCmsuVjEoMCkKay5GVigwLGwpCmo9YTMuYXBwZW5kQ2hpbGQobSkKbT1uLmNy
-ZWF0ZUVsZW1lbnQoInNwYW4iKQpsPXEuYihILlZNKFsidHlwZS1kZXNjcmlwdGlvbiJdLHIpKQprPUou
-ZFIobSkKay5WMSgwKQprLkZWKDAsbCkKbS5hcHBlbmRDaGlsZChuLmNyZWF0ZVRleHROb2RlKG8uYSkp
-CmouYXBwZW5kQ2hpbGQobSkKai5hcHBlbmRDaGlsZChuLmNyZWF0ZVRleHROb2RlKCI6IikpCm09bi5j
-cmVhdGVFbGVtZW50KCJ1bCIpCmw9cS5iKEguVk0oWyJ0cmFjZSJdLHIpKQprPUouZFIobSkKay5WMSgw
-KQprLkZWKDAsbCkKaT1qLmFwcGVuZENoaWxkKG0pCmZvcihtPW8uYixsPW0ubGVuZ3RoLGg9MDtoPG0u
-bGVuZ3RoO20ubGVuZ3RoPT09bHx8KDAsSC5saykobSksKytoKXtnPW1baF0KZj1uLmNyZWF0ZUVsZW1l
-bnQoImxpIikKSi5sNShmLCImI3gyNzRGOyAiKQppLmFwcGVuZENoaWxkKGYpCmU9bi5jcmVhdGVFbGVt
-ZW50KCJzcGFuIikKZD1xLmIoSC5WTShbImZ1bmN0aW9uIl0scikpCms9Si5kUihlKQprLlYxKDApCmsu
-RlYoMCxkKQpkPWcuYgpMLmtEKGUsZD09bnVsbD8idW5rbm93biI6ZCkKZi5hcHBlbmRDaGlsZChlKQpj
-PWcuYwppZihjIT1udWxsKXtmLmFwcGVuZENoaWxkKG4uY3JlYXRlVGV4dE5vZGUoIiAoIikpCmI9Yy5i
-CmE9bi5jcmVhdGVFbGVtZW50KCJhIikKYS5hcHBlbmRDaGlsZChuLmNyZWF0ZVRleHROb2RlKEguZChj
-LmMpKyI6IitILmQoYikpKQphMD1jLmEKZT0kLm5VKCkKYS5zZXRBdHRyaWJ1dGUoImhyZWYiLGUubzUo
-ZS5xNygwLGE0LGEwLGExLGExLGExLGExLGExLGExKSkpCmEuY2xhc3NMaXN0LmFkZCgibmF2LWxpbmsi
-KQpmLmFwcGVuZENoaWxkKGEpCmYuYXBwZW5kQ2hpbGQobi5jcmVhdGVUZXh0Tm9kZSgiKSIpKX1mLmFw
-cGVuZENoaWxkKG4uY3JlYXRlVGV4dE5vZGUoIjogIikpCmU9Zy5hCkwua0QoZixlPT1udWxsPyJ1bmtu
-b3duIjplKX19fSwKa0Q6ZnVuY3Rpb24oYSxiKXt2YXIgdCxzLHI9SC5WTShiLnNwbGl0KCIuIiksdS5z
-KSxxPUMuTm0uZ3RIKHIpLHA9ZG9jdW1lbnQKYS5hcHBlbmRDaGlsZChwLmNyZWF0ZVRleHROb2RlKHEp
-KQpmb3IocT1ILnFDKHIsMSxudWxsLHUuTikscT1uZXcgSC5hNyhxLHEuZ0EocSkscS4kdGkuQygiYTc8
-YUwuRT4iKSksdD1KLlJFKGEpO3EuRigpOyl7cz1xLmQKdC5ueihhLCJiZWZvcmVlbmQiLCImIzgyMDM7
-LiIsbnVsbCxudWxsKQphLmFwcGVuZENoaWxkKHAuY3JlYXRlVGV4dE5vZGUocykpfX0sCmU6ZnVuY3Rp
-b24gZSgpe30sClZXOmZ1bmN0aW9uIFZXKGEsYixjKXt0aGlzLmE9YQp0aGlzLmI9Ygp0aGlzLmM9Y30s
-Cm9aOmZ1bmN0aW9uIG9aKCl7fSwKanI6ZnVuY3Rpb24ganIoKXt9LApxbDpmdW5jdGlvbiBxbCgpe30s
-Cnk4OmZ1bmN0aW9uIHk4KCl7fSwKSGk6ZnVuY3Rpb24gSGkoKXt9LApCVDpmdW5jdGlvbiBCVCgpe30s
-Ckw6ZnVuY3Rpb24gTCgpe30sCld4OmZ1bmN0aW9uIFd4KGEsYil7dGhpcy5hPWEKdGhpcy5iPWJ9LApB
-TzpmdW5jdGlvbiBBTyhhKXt0aGlzLmE9YX0sCmROOmZ1bmN0aW9uIGROKGEpe3RoaXMuYT1hfSwKSG86
-ZnVuY3Rpb24gSG8oYSl7dGhpcy5hPWF9LAp4ejpmdW5jdGlvbiB4eihhLGIpe3RoaXMuYT1hCnRoaXMu
-Yj1ifSwKSUM6ZnVuY3Rpb24gSUMoKXt9LApMMTpmdW5jdGlvbiBMMShhLGIpe3RoaXMuYT1hCnRoaXMu
-Yj1ifSwKblQ6ZnVuY3Rpb24gblQoYSxiLGMpe3RoaXMuYT1hCnRoaXMuYj1iCnRoaXMuYz1jfSwKQlo6
-ZnVuY3Rpb24gQlooYSl7dGhpcy5hPWF9LApHSDpmdW5jdGlvbiBHSCgpe30sCkRUOmZ1bmN0aW9uIERU
-KGEsYixjKXt0aGlzLmE9YQp0aGlzLmI9Ygp0aGlzLmM9Y30sCmVIOmZ1bmN0aW9uIGVIKGEpe3RoaXMu
-YT1hfSwKeXU6ZnVuY3Rpb24geXUoYSxiLGMsZCxlKXt2YXIgXz10aGlzCl8uYT1hCl8uYj1iCl8uYz1j
-Cl8uZD1kCl8uZT1lfSwKekQ6ZnVuY3Rpb24gekQoYSl7dGhpcy5hPWF9LApUVzpmdW5jdGlvbiBUVygp
-e30sCnhyOmZ1bmN0aW9uIHhyKGEpe3RoaXMuYT1hfSwKRUU6ZnVuY3Rpb24gRUUoYSxiLGMpe3RoaXMu
-YT1hCnRoaXMuYj1iCnRoaXMuYz1jfSwKUUw6ZnVuY3Rpb24gUUwoYSxiKXt0aGlzLmE9YQp0aGlzLmI9
-Yn0sClZTOmZ1bmN0aW9uIFZTKGEpe3RoaXMuYT1hfSwKVEQ6ZnVuY3Rpb24gVEQoKXt9LApYQTpmdW5j
-dGlvbiBYQSgpe30sCm1LOmZ1bmN0aW9uKGEpe3ZhciB0LHMscixxLHAsbyxuPUguVk0oW10sdS5maCkK
-Zm9yKHQ9Si5JVCh1LlIuYihhKSk7dC5GKCk7KXtzPXQuZ2woKQpyPUouVTYocykKcT1MLnAyKEguYzAo
-ci5xKHMsInR5cGUiKSkpCnA9SC5jMChyLnEocywibmFtZSIpKQpvPXIucShzLCJzdWJ0cmVlIikKbz1v
-PT1udWxsP251bGw6TC5tSyhvKQpDLk5tLmkobixuZXcgTC5aWihxLHAsbyxILmMwKHIucShzLCJwYXRo
-IikpLEguYzAoci5xKHMsImhyZWYiKSksSC5XWShyLnEocywiZWRpdENvdW50IikpKSl9cmV0dXJuIG59
-LApwMjpmdW5jdGlvbihhKXtzd2l0Y2goYSl7Y2FzZSJkaXJlY3RvcnkiOnJldHVybiBDLlkyCmNhc2Ui
-ZmlsZSI6cmV0dXJuIEMucmYKZGVmYXVsdDp0aHJvdyBILmIoUC5QVigiVW5yZWNvZ25pemVkIG5hdmln
-YXRpb24gdHJlZSBub2RlIHR5cGU6ICIrSC5kKGEpKSl9fSwKWlo6ZnVuY3Rpb24gWlooYSxiLGMsZCxl
-LGYpe3ZhciBfPXRoaXMKXy5hPWEKXy5iPWIKXy5jPWMKXy5kPWQKXy5lPWUKXy5mPWZ9LApPOTpmdW5j
-dGlvbiBPOShhKXt0aGlzLmI9YX0sCklWOmZ1bmN0aW9uIElWKGEsYixjLGQpe3ZhciBfPXRoaXMKXy5k
-PWEKXy5lPWIKXy5mPWMKXy5yPWR9fSxNPXsKWUY6ZnVuY3Rpb24oYSxiKXt2YXIgdCxzLHIscSxwLG8s
-bgpmb3IodD1iLmxlbmd0aCxzPTE7czx0Oysrcyl7aWYoYltzXT09bnVsbHx8YltzLTFdIT1udWxsKWNv
-bnRpbnVlCmZvcig7dD49MTt0PXIpe3I9dC0xCmlmKGJbcl0hPW51bGwpYnJlYWt9cT1uZXcgUC5Sbigi
-IikKcD1hKyIoIgpxLmE9cApvPUgucUMoYiwwLHQsSC50NihiKS5kKQpuPW8uJHRpCm49cCtuZXcgSC5B
-OChvLG4uQygicVUoYUwuRSkiKS5iKG5ldyBNLk5vKCkpLG4uQygiQTg8YUwuRSxxVT4iKSkuelYoMCwi
-LCAiKQpxLmE9bgpxLmE9bisoIik6IHBhcnQgIisocy0xKSsiIHdhcyBudWxsLCBidXQgcGFydCAiK3Mr
-IiB3YXMgbm90LiIpCnRocm93IEguYihQLnhZKHEudygwKSkpfX0sCmxJOmZ1bmN0aW9uIGxJKGEpe3Ro
-aXMuYT1hfSwKTWk6ZnVuY3Rpb24gTWkoKXt9LApxNzpmdW5jdGlvbiBxNygpe30sCk5vOmZ1bmN0aW9u
-IE5vKCl7fX0sWD17CkNMOmZ1bmN0aW9uKGEsYil7dmFyIHQscyxyLHEscCxvPWIueFooYSkKYi5oSyhh
-KQppZihvIT1udWxsKWE9Si5LVihhLG8ubGVuZ3RoKQp0PXUucwpzPUguVk0oW10sdCkKcj1ILlZNKFtd
-LHQpCnQ9YS5sZW5ndGgKaWYodCE9PTAmJmIucjQoQy54Qi5XKGEsMCkpKXtpZigwPj10KXJldHVybiBI
-Lk9IKGEsMCkKQy5ObS5pKHIsYVswXSkKcT0xfWVsc2V7Qy5ObS5pKHIsIiIpCnE9MH1mb3IocD1xO3A8
-dDsrK3ApaWYoYi5yNChDLnhCLlcoYSxwKSkpe0MuTm0uaShzLEMueEIuTmooYSxxLHApKQpDLk5tLmko
-cixhW3BdKQpxPXArMX1pZihxPHQpe0MuTm0uaShzLEMueEIuRyhhLHEpKQpDLk5tLmkociwiIil9cmV0
-dXJuIG5ldyBYLldEKGIsbyxzLHIpfSwKV0Q6ZnVuY3Rpb24gV0QoYSxiLGMsZCl7dmFyIF89dGhpcwpf
-LmE9YQpfLmI9YgpfLmQ9YwpfLmU9ZH0sCnFSOmZ1bmN0aW9uIHFSKGEpe3RoaXMuYT1hfSwKSTc6ZnVu
-Y3Rpb24oYSl7cmV0dXJuIG5ldyBYLmR2KGEpfSwKZHY6ZnVuY3Rpb24gZHYoYSl7dGhpcy5hPWF9fSxP
-PXsKUmg6ZnVuY3Rpb24oKXt2YXIgdCxzPW51bGwKaWYoUC51bygpLmdGaSgpIT09ImZpbGUiKXJldHVy
-biAkLkViKCkKdD1QLnVvKCkKaWYoIUMueEIuVGModC5nSWkodCksIi8iKSlyZXR1cm4gJC5FYigpCmlm
-KFAuS0wocywiYS9iIixzLHMscyxzLHMpLnQ0KCk9PT0iYVxcYiIpcmV0dXJuICQuS2soKQpyZXR1cm4g
-JC5iRCgpfSwKekw6ZnVuY3Rpb24gekwoKXt9fSxFPXtPRjpmdW5jdGlvbiBPRihhLGIsYyl7dGhpcy5k
-PWEKdGhpcy5lPWIKdGhpcy5mPWN9fSxGPXtydTpmdW5jdGlvbiBydShhLGIsYyxkKXt2YXIgXz10aGlz
-Cl8uZD1hCl8uZT1iCl8uZj1jCl8ucj1kfX0sRD17ClJYOmZ1bmN0aW9uKCl7dmFyIHQscyxyPVAudW8o
-KQppZihKLlJNKHIsJC5JNikpcmV0dXJuICQuRmYKJC5JNj1yCmlmKCQuSGsoKT09JC5FYigpKXJldHVy
-biAkLkZmPXIuWkkoIi4iKS53KDApCmVsc2V7dD1yLnQ0KCkKcz10Lmxlbmd0aC0xCnJldHVybiAkLkZm
-PXM9PT0wP3Q6Qy54Qi5Oaih0LDAscyl9fSwKbnI6ZnVuY3Rpb24oYSxiKXt2YXIgdD1udWxsCnJldHVy
-biAkLm5VKCkucTcoMCxhLGIsdCx0LHQsdCx0LHQpfX0KdmFyIHc9W0MsSCxKLFAsVyxVLEIsVCxMLE0s
-WCxPLEUsRixEXQpodW5rSGVscGVycy5zZXRGdW5jdGlvbk5hbWVzSWZOZWNlc3NhcnkodykKdmFyICQ9
-e30KSC5lby5wcm90b3R5cGU9e30KSi52Qi5wcm90b3R5cGU9ewpETjpmdW5jdGlvbihhLGIpe3JldHVy
-biBhPT09Yn0sCmdpTzpmdW5jdGlvbihhKXtyZXR1cm4gSC5lUShhKX0sCnc6ZnVuY3Rpb24oYSl7cmV0
-dXJuIkluc3RhbmNlIG9mICciK0guZChILk0oYSkpKyInIn0sCmU3OmZ1bmN0aW9uKGEsYil7dS5vLmIo
-YikKdGhyb3cgSC5iKFAubHIoYSxiLmdXYSgpLGIuZ25kKCksYi5nVm0oKSkpfX0KSi55RS5wcm90b3R5
-cGU9ewp3OmZ1bmN0aW9uKGEpe3JldHVybiBTdHJpbmcoYSl9LApnaU86ZnVuY3Rpb24oYSl7cmV0dXJu
-IGE/NTE5MDE4OjIxODE1OX0sCiRpYTI6MX0KSi5ZRS5wcm90b3R5cGU9ewpETjpmdW5jdGlvbihhLGIp
-e3JldHVybiBudWxsPT1ifSwKdzpmdW5jdGlvbihhKXtyZXR1cm4ibnVsbCJ9LApnaU86ZnVuY3Rpb24o
-YSl7cmV0dXJuIDB9LAplNzpmdW5jdGlvbihhLGIpe3JldHVybiB0aGlzLlNqKGEsdS5vLmIoYikpfSwK
-JGljODoxfQpKLk1GLnByb3RvdHlwZT17CmdpTzpmdW5jdGlvbihhKXtyZXR1cm4gMH0sCnc6ZnVuY3Rp
-b24oYSl7cmV0dXJuIFN0cmluZyhhKX0sCiRpdm06MX0KSi5pQy5wcm90b3R5cGU9e30KSi5rZC5wcm90
-b3R5cGU9e30KSi5jNS5wcm90b3R5cGU9ewp3OmZ1bmN0aW9uKGEpe3ZhciB0PWFbJC53KCldCmlmKHQ9
-PW51bGwpcmV0dXJuIHRoaXMudChhKQpyZXR1cm4iSmF2YVNjcmlwdCBmdW5jdGlvbiBmb3IgIitILmQo
-Si5qKHQpKX0sCiRTOmZ1bmN0aW9uKCl7cmV0dXJue2Z1bmM6MSxvcHQ6WywsLCwsLCwsLCwsLCwsLCxd
-fX0sCiRpRUg6MX0KSi5qZC5wcm90b3R5cGU9ewppOmZ1bmN0aW9uKGEsYil7SC50NihhKS5kLmIoYikK
-aWYoISFhLmZpeGVkJGxlbmd0aClILnZoKFAuTDQoImFkZCIpKQphLnB1c2goYil9LApXNDpmdW5jdGlv
-bihhLGIpe3ZhciB0CmlmKCEhYS5maXhlZCRsZW5ndGgpSC52aChQLkw0KCJyZW1vdmVBdCIpKQp0PWEu
-bGVuZ3RoCmlmKGI+PXQpdGhyb3cgSC5iKFAueChiLG51bGwpKQpyZXR1cm4gYS5zcGxpY2UoYiwxKVsw
-XX0sClVHOmZ1bmN0aW9uKGEsYixjKXt2YXIgdCxzLHIKSC50NihhKS5DKCJjWDwxPiIpLmIoYykKaWYo
-ISFhLmZpeGVkJGxlbmd0aClILnZoKFAuTDQoImluc2VydEFsbCIpKQp0PWEubGVuZ3RoClAud0EoYiww
-LHQsImluZGV4IikKcz1jLmxlbmd0aAp0aGlzLnNBKGEsdCtzKQpyPWIrcwp0aGlzLllXKGEscixhLmxl
-bmd0aCxhLGIpCnRoaXMudmcoYSxiLHIsYyl9LAptdjpmdW5jdGlvbihhKXtpZighIWEuZml4ZWQkbGVu
-Z3RoKUgudmgoUC5MNCgicmVtb3ZlTGFzdCIpKQppZihhLmxlbmd0aD09PTApdGhyb3cgSC5iKEguSFko
-YSwtMSkpCnJldHVybiBhLnBvcCgpfSwKRlY6ZnVuY3Rpb24oYSxiKXt2YXIgdApILnQ2KGEpLkMoImNY
-PDE+IikuYihiKQppZighIWEuZml4ZWQkbGVuZ3RoKUgudmgoUC5MNCgiYWRkQWxsIikpCmZvcih0PUou
-SVQoYik7dC5GKCk7KWEucHVzaCh0LmdsKCkpfSwKSzpmdW5jdGlvbihhLGIpe3ZhciB0LHMKSC50Nihh
-KS5DKCJ+KDEpIikuYihiKQp0PWEubGVuZ3RoCmZvcihzPTA7czx0Oysrcyl7Yi4kMShhW3NdKQppZihh
-Lmxlbmd0aCE9PXQpdGhyb3cgSC5iKFAuYTQoYSkpfX0sCkUyOmZ1bmN0aW9uKGEsYixjKXt2YXIgdD1I
-LnQ2KGEpCnJldHVybiBuZXcgSC5BOChhLHQuS3EoYykuQygiMSgyKSIpLmIoYiksdC5DKCJAPDE+Iiku
-S3EoYykuQygiQTg8MSwyPiIpKX0sCnpWOmZ1bmN0aW9uKGEsYil7dmFyIHQscz1uZXcgQXJyYXkoYS5s
-ZW5ndGgpCnMuZml4ZWQkbGVuZ3RoPUFycmF5CmZvcih0PTA7dDxhLmxlbmd0aDsrK3QpdGhpcy5ZKHMs
-dCxILmQoYVt0XSkpCnJldHVybiBzLmpvaW4oYil9LApOMDpmdW5jdGlvbihhLGIsYyxkKXt2YXIgdCxz
-LHIKZC5iKGIpCkgudDYoYSkuS3EoZCkuQygiMSgxLDIpIikuYihjKQp0PWEubGVuZ3RoCmZvcihzPWIs
-cj0wO3I8dDsrK3Ipe3M9Yy4kMihzLGFbcl0pCmlmKGEubGVuZ3RoIT09dCl0aHJvdyBILmIoUC5hNChh
-KSl9cmV0dXJuIHN9LApFOmZ1bmN0aW9uKGEsYil7aWYoYjwwfHxiPj1hLmxlbmd0aClyZXR1cm4gSC5P
-SChhLGIpCnJldHVybiBhW2JdfSwKRDY6ZnVuY3Rpb24oYSxiLGMpe2lmKGI8MHx8Yj5hLmxlbmd0aCl0
-aHJvdyBILmIoUC5URShiLDAsYS5sZW5ndGgsInN0YXJ0IixudWxsKSkKaWYoYzxifHxjPmEubGVuZ3Ro
-KXRocm93IEguYihQLlRFKGMsYixhLmxlbmd0aCwiZW5kIixudWxsKSkKaWYoYj09PWMpcmV0dXJuIEgu
-Vk0oW10sSC50NihhKSkKcmV0dXJuIEguVk0oYS5zbGljZShiLGMpLEgudDYoYSkpfSwKZ3RIOmZ1bmN0
-aW9uKGEpe2lmKGEubGVuZ3RoPjApcmV0dXJuIGFbMF0KdGhyb3cgSC5iKEguV3AoKSl9LApnclo6ZnVu
-Y3Rpb24oYSl7dmFyIHQ9YS5sZW5ndGgKaWYodD4wKXJldHVybiBhW3QtMV0KdGhyb3cgSC5iKEguV3Ao
-KSl9LApZVzpmdW5jdGlvbihhLGIsYyxkLGUpe3ZhciB0LHMscj1ILnQ2KGEpCnIuQygiY1g8MT4iKS5i
-KGQpCmlmKCEhYS5pbW11dGFibGUkbGlzdClILnZoKFAuTDQoInNldFJhbmdlIikpClAuakIoYixjLGEu
-bGVuZ3RoKQp0PWMtYgppZih0PT09MClyZXR1cm4KUC5rMShlLCJza2lwQ291bnQiKQpyLkMoInpNPDE+
-IikuYihkKQpyPUouVTYoZCkKaWYoZSt0PnIuZ0EoZCkpdGhyb3cgSC5iKEguYXIoKSkKaWYoZTxiKWZv
-cihzPXQtMTtzPj0wOy0tcylhW2Irc109ci5xKGQsZStzKQplbHNlIGZvcihzPTA7czx0OysrcylhW2Ir
-c109ci5xKGQsZStzKX0sCnZnOmZ1bmN0aW9uKGEsYixjLGQpe3JldHVybiB0aGlzLllXKGEsYixjLGQs
-MCl9LApWcjpmdW5jdGlvbihhLGIpe3ZhciB0LHMKSC50NihhKS5DKCJhMigxKSIpLmIoYikKdD1hLmxl
-bmd0aApmb3Iocz0wO3M8dDsrK3Mpe2lmKEgub1QoYi4kMShhW3NdKSkpcmV0dXJuITAKaWYoYS5sZW5n
-dGghPT10KXRocm93IEguYihQLmE0KGEpKX1yZXR1cm4hMX0sCnRnOmZ1bmN0aW9uKGEsYil7dmFyIHQK
-Zm9yKHQ9MDt0PGEubGVuZ3RoOysrdClpZihKLlJNKGFbdF0sYikpcmV0dXJuITAKcmV0dXJuITF9LAp3
-OmZ1bmN0aW9uKGEpe3JldHVybiBQLldFKGEsIlsiLCJdIil9LApna3o6ZnVuY3Rpb24oYSl7cmV0dXJu
-IG5ldyBKLm0xKGEsYS5sZW5ndGgsSC50NihhKS5DKCJtMTwxPiIpKX0sCmdpTzpmdW5jdGlvbihhKXty
-ZXR1cm4gSC5lUShhKX0sCmdBOmZ1bmN0aW9uKGEpe3JldHVybiBhLmxlbmd0aH0sCnNBOmZ1bmN0aW9u
-KGEsYil7aWYoISFhLmZpeGVkJGxlbmd0aClILnZoKFAuTDQoInNldCBsZW5ndGgiKSkKaWYoYjwwKXRo
-cm93IEguYihQLlRFKGIsMCxudWxsLCJuZXdMZW5ndGgiLG51bGwpKQphLmxlbmd0aD1ifSwKcTpmdW5j
-dGlvbihhLGIpe0guU2MoYikKaWYoYj49YS5sZW5ndGh8fGI8MCl0aHJvdyBILmIoSC5IWShhLGIpKQpy
-ZXR1cm4gYVtiXX0sClk6ZnVuY3Rpb24oYSxiLGMpe0gudDYoYSkuZC5iKGMpCmlmKCEhYS5pbW11dGFi
-bGUkbGlzdClILnZoKFAuTDQoImluZGV4ZWQgc2V0IikpCmlmKGI+PWEubGVuZ3RofHxiPDApdGhyb3cg
-SC5iKEguSFkoYSxiKSkKYVtiXT1jfSwKJGliUToxLAokaWNYOjEsCiRpek06MX0KSi5Qby5wcm90b3R5
-cGU9e30KSi5tMS5wcm90b3R5cGU9ewpnbDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmR9LApGOmZ1bmN0
-aW9uKCl7dmFyIHQscz10aGlzLHI9cy5hLHE9ci5sZW5ndGgKaWYocy5iIT09cSl0aHJvdyBILmIoSC5s
-ayhyKSkKdD1zLmMKaWYodD49cSl7cy5zSChudWxsKQpyZXR1cm4hMX1zLnNIKHJbdF0pOysrcy5jCnJl
-dHVybiEwfSwKc0g6ZnVuY3Rpb24oYSl7dGhpcy5kPXRoaXMuJHRpLmQuYihhKX0sCiRpQW46MX0KSi5x
-SS5wcm90b3R5cGU9ewp5dTpmdW5jdGlvbihhKXt2YXIgdAppZihhPj0tMjE0NzQ4MzY0OCYmYTw9MjE0
-NzQ4MzY0NylyZXR1cm4gYXwwCmlmKGlzRmluaXRlKGEpKXt0PWE8MD9NYXRoLmNlaWwoYSk6TWF0aC5m
-bG9vcihhKQpyZXR1cm4gdCswfXRocm93IEguYihQLkw0KCIiK2ErIi50b0ludCgpIikpfSwKelE6ZnVu
-Y3Rpb24oYSl7aWYoYT4wKXtpZihhIT09MS8wKXJldHVybiBNYXRoLnJvdW5kKGEpfWVsc2UgaWYoYT4t
-MS8wKXJldHVybiAwLU1hdGgucm91bmQoMC1hKQp0aHJvdyBILmIoUC5MNCgiIithKyIucm91bmQoKSIp
-KX0sCldaOmZ1bmN0aW9uKGEsYil7dmFyIHQscyxyLHEKaWYoYjwyfHxiPjM2KXRocm93IEguYihQLlRF
-KGIsMiwzNiwicmFkaXgiLG51bGwpKQp0PWEudG9TdHJpbmcoYikKaWYoQy54Qi5tKHQsdC5sZW5ndGgt
-MSkhPT00MSlyZXR1cm4gdApzPS9eKFtcZGEtel0rKSg/OlwuKFtcZGEtel0rKSk/XChlXCsoXGQrKVwp
-JC8uZXhlYyh0KQppZihzPT1udWxsKUgudmgoUC5MNCgiVW5leHBlY3RlZCB0b1N0cmluZyByZXN1bHQ6
-ICIrdCkpCnI9cy5sZW5ndGgKaWYoMT49cilyZXR1cm4gSC5PSChzLDEpCnQ9c1sxXQppZigzPj1yKXJl
-dHVybiBILk9IKHMsMykKcT0rc1szXQpyPXNbMl0KaWYociE9bnVsbCl7dCs9cgpxLT1yLmxlbmd0aH1y
-ZXR1cm4gdCtDLnhCLkl4KCIwIixxKX0sCnc6ZnVuY3Rpb24oYSl7aWYoYT09PTAmJjEvYTwwKXJldHVy
-biItMC4wIgplbHNlIHJldHVybiIiK2F9LApnaU86ZnVuY3Rpb24oYSl7dmFyIHQscyxyLHEscD1hfDAK
-aWYoYT09PXApcmV0dXJuIDUzNjg3MDkxMSZwCnQ9TWF0aC5hYnMoYSkKcz1NYXRoLmxvZyh0KS8wLjY5
-MzE0NzE4MDU1OTk0NTN8MApyPU1hdGgucG93KDIscykKcT10PDE/dC9yOnIvdApyZXR1cm4gNTM2ODcw
-OTExJigocSo5MDA3MTk5MjU0NzQwOTkyfDApKyhxKjM1NDIyNDMxODExNzY1MjF8MCkpKjU5OTE5Nytz
-KjEyNTl9LAp6WTpmdW5jdGlvbihhLGIpe3ZhciB0PWElYgppZih0PT09MClyZXR1cm4gMAppZih0PjAp
-cmV0dXJuIHQKaWYoYjwwKXJldHVybiB0LWIKZWxzZSByZXR1cm4gdCtifSwKd0c6ZnVuY3Rpb24oYSxi
-KXt2YXIgdAppZihhPjApdD10aGlzLnAzKGEsYikKZWxzZXt0PWI+MzE/MzE6Ygp0PWE+PnQ+Pj4wfXJl
-dHVybiB0fSwKYmY6ZnVuY3Rpb24oYSxiKXtpZihiPDApdGhyb3cgSC5iKEgudEwoYikpCnJldHVybiB0
-aGlzLnAzKGEsYil9LApwMzpmdW5jdGlvbihhLGIpe3JldHVybiBiPjMxPzA6YT4+PmJ9LAokaUNQOjEs
-CiRpRks6MX0KSi51ci5wcm90b3R5cGU9eyRpS046MX0KSi5WQS5wcm90b3R5cGU9e30KSi5Eci5wcm90
-b3R5cGU9ewptOmZ1bmN0aW9uKGEsYil7aWYoYjwwKXRocm93IEguYihILkhZKGEsYikpCmlmKGI+PWEu
-bGVuZ3RoKUgudmgoSC5IWShhLGIpKQpyZXR1cm4gYS5jaGFyQ29kZUF0KGIpfSwKVzpmdW5jdGlvbihh
-LGIpe2lmKGI+PWEubGVuZ3RoKXRocm93IEguYihILkhZKGEsYikpCnJldHVybiBhLmNoYXJDb2RlQXQo
-Yil9LApkZDpmdW5jdGlvbihhLGIpe3JldHVybiBuZXcgSC51bihiLGEsMCl9LApoOmZ1bmN0aW9uKGEs
-Yil7aWYodHlwZW9mIGIhPSJzdHJpbmciKXRocm93IEguYihQLkwzKGIsbnVsbCxudWxsKSkKcmV0dXJu
-IGErYn0sClRjOmZ1bmN0aW9uKGEsYil7dmFyIHQ9Yi5sZW5ndGgscz1hLmxlbmd0aAppZih0PnMpcmV0
-dXJuITEKcmV0dXJuIGI9PT10aGlzLkcoYSxzLXQpfSwKaTc6ZnVuY3Rpb24oYSxiLGMsZCl7dmFyIHQs
-cwpjPVAuakIoYixjLGEubGVuZ3RoKQp0PWEuc3Vic3RyaW5nKDAsYikKcz1hLnN1YnN0cmluZyhjKQpy
-ZXR1cm4gdCtkK3N9LApRaTpmdW5jdGlvbihhLGIsYyl7dmFyIHQKaWYoIUgub2soYykpSC52aChILnRM
-KGMpKQppZih0eXBlb2YgYyE9PSJudW1iZXIiKXJldHVybiBjLkooKQppZihjPDB8fGM+YS5sZW5ndGgp
-dGhyb3cgSC5iKFAuVEUoYywwLGEubGVuZ3RoLG51bGwsbnVsbCkpCnQ9YytiLmxlbmd0aAppZih0PmEu
-bGVuZ3RoKXJldHVybiExCnJldHVybiBiPT09YS5zdWJzdHJpbmcoYyx0KX0sCm46ZnVuY3Rpb24oYSxi
-KXtyZXR1cm4gdGhpcy5RaShhLGIsMCl9LApOajpmdW5jdGlvbihhLGIsYyl7aWYoIUgub2soYikpSC52
-aChILnRMKGIpKQppZihjPT1udWxsKWM9YS5sZW5ndGgKaWYodHlwZW9mIGIhPT0ibnVtYmVyIilyZXR1
-cm4gYi5KKCkKaWYoYjwwKXRocm93IEguYihQLngoYixudWxsKSkKaWYoYj5jKXRocm93IEguYihQLngo
-YixudWxsKSkKaWYoYz5hLmxlbmd0aCl0aHJvdyBILmIoUC54KGMsbnVsbCkpCnJldHVybiBhLnN1YnN0
-cmluZyhiLGMpfSwKRzpmdW5jdGlvbihhLGIpe3JldHVybiB0aGlzLk5qKGEsYixudWxsKX0sCmhjOmZ1
-bmN0aW9uKGEpe3JldHVybiBhLnRvTG93ZXJDYXNlKCl9LApiUzpmdW5jdGlvbihhKXt2YXIgdCxzLHIs
-cT1hLnRyaW0oKSxwPXEubGVuZ3RoCmlmKHA9PT0wKXJldHVybiBxCmlmKHRoaXMuVyhxLDApPT09MTMz
-KXt0PUoubW0ocSwxKQppZih0PT09cClyZXR1cm4iIn1lbHNlIHQ9MApzPXAtMQpyPXRoaXMubShxLHMp
-PT09MTMzP0ouYzEocSxzKTpwCmlmKHQ9PT0wJiZyPT09cClyZXR1cm4gcQpyZXR1cm4gcS5zdWJzdHJp
-bmcodCxyKX0sCkl4OmZ1bmN0aW9uKGEsYil7dmFyIHQscwppZigwPj1iKXJldHVybiIiCmlmKGI9PT0x
-fHxhLmxlbmd0aD09PTApcmV0dXJuIGEKaWYoYiE9PWI+Pj4wKXRocm93IEguYihDLkVxKQpmb3IodD1h
-LHM9IiI7ITA7KXtpZigoYiYxKT09PTEpcz10K3MKYj1iPj4+MQppZihiPT09MClicmVhawp0Kz10fXJl
-dHVybiBzfSwKWFU6ZnVuY3Rpb24oYSxiLGMpe3ZhciB0CmlmKGM8MHx8Yz5hLmxlbmd0aCl0aHJvdyBI
-LmIoUC5URShjLDAsYS5sZW5ndGgsbnVsbCxudWxsKSkKdD1hLmluZGV4T2YoYixjKQpyZXR1cm4gdH0s
-Ck9ZOmZ1bmN0aW9uKGEsYil7cmV0dXJuIHRoaXMuWFUoYSxiLDApfSwKUGs6ZnVuY3Rpb24oYSxiLGMp
-e3ZhciB0LHMKaWYoYz09bnVsbCljPWEubGVuZ3RoCmVsc2UgaWYoYzwwfHxjPmEubGVuZ3RoKXRocm93
-IEguYihQLlRFKGMsMCxhLmxlbmd0aCxudWxsLG51bGwpKQp0PWIubGVuZ3RoCnM9YS5sZW5ndGgKaWYo
-Yyt0PnMpYz1zLXQKcmV0dXJuIGEubGFzdEluZGV4T2YoYixjKX0sCmNuOmZ1bmN0aW9uKGEsYil7cmV0
-dXJuIHRoaXMuUGsoYSxiLG51bGwpfSwKSXM6ZnVuY3Rpb24oYSxiLGMpe3ZhciB0PWEubGVuZ3RoCmlm
-KGM+dCl0aHJvdyBILmIoUC5URShjLDAsdCxudWxsLG51bGwpKQpyZXR1cm4gSC5tMihhLGIsYyl9LAp0
-ZzpmdW5jdGlvbihhLGIpe3JldHVybiB0aGlzLklzKGEsYiwwKX0sCnc6ZnVuY3Rpb24oYSl7cmV0dXJu
-IGF9LApnaU86ZnVuY3Rpb24oYSl7dmFyIHQscyxyCmZvcih0PWEubGVuZ3RoLHM9MCxyPTA7cjx0Oysr
-cil7cz01MzY4NzA5MTEmcythLmNoYXJDb2RlQXQocikKcz01MzY4NzA5MTEmcysoKDUyNDI4NyZzKTw8
-MTApCnNePXM+PjZ9cz01MzY4NzA5MTEmcysoKDY3MTA4ODYzJnMpPDwzKQpzXj1zPj4xMQpyZXR1cm4g
-NTM2ODcwOTExJnMrKCgxNjM4MyZzKTw8MTUpfSwKZ0E6ZnVuY3Rpb24oYSl7cmV0dXJuIGEubGVuZ3Ro
-fSwKcTpmdW5jdGlvbihhLGIpe0guU2MoYikKaWYoYj49YS5sZW5ndGh8fCExKXRocm93IEguYihILkhZ
-KGEsYikpCnJldHVybiBhW2JdfSwKJGl2WDoxLAokaXFVOjF9CkgucWoucHJvdG90eXBlPXsKZ0E6ZnVu
-Y3Rpb24oYSl7cmV0dXJuIHRoaXMuYS5sZW5ndGh9LApxOmZ1bmN0aW9uKGEsYil7cmV0dXJuIEMueEIu
-bSh0aGlzLmEsSC5TYyhiKSl9fQpILmJRLnByb3RvdHlwZT17fQpILmFMLnByb3RvdHlwZT17Cmdrejpm
-dW5jdGlvbihhKXt2YXIgdD10aGlzCnJldHVybiBuZXcgSC5hNyh0LHQuZ0EodCksSC5MaCh0KS5DKCJh
-NzxhTC5FPiIpKX0sCnpWOmZ1bmN0aW9uKGEsYil7dmFyIHQscyxyLHE9dGhpcyxwPXEuZ0EocSkKaWYo
-Yi5sZW5ndGghPT0wKXtpZihwPT09MClyZXR1cm4iIgp0PUguZChxLkUoMCwwKSkKaWYocCE9PXEuZ0Eo
-cSkpdGhyb3cgSC5iKFAuYTQocSkpCmZvcihzPXQscj0xO3I8cDsrK3Ipe3M9cytiK0guZChxLkUoMCxy
+LmdWKQptPW5ldyBQLlpmKG4sdS5iQykKbD1uZXcgWE1MSHR0cFJlcXVlc3QoKQprPXUuWApDLkR0LmVv
+KGwsIlBPU1QiLEwuUTQoYSxQLkZsKGssaykpLCEwKQpsLnNldFJlcXVlc3RIZWFkZXIoIkNvbnRlbnQt
+VHlwZSIsImFwcGxpY2F0aW9uL2pzb247IGNoYXJzZXQ9VVRGLTgiKQprPXUudQpxPWsuYShuZXcgTC5M
+MShtLGwpKQp1LlouYShudWxsKQpwPXUuRQpXLkpFKGwsImxvYWQiLHEsITEscCkKVy5KRShsLCJlcnJv
+ciIsay5hKG0uZ1lKKCkpLCExLHApCmwuc2VuZCgpCnQ9MwpyZXR1cm4gUC5qUShuLCRhc3luYyR0eSkK
+Y2FzZSAzOm89Qy5DdC5wVygwLGwucmVzcG9uc2VUZXh0LG51bGwpCmlmKGwuc3RhdHVzPT09MjAwKXty
+PXUuYS5hKG8pCnQ9MQpicmVha31lbHNlIHRocm93IEguYihvKQpjYXNlIDE6cmV0dXJuIFAueUMocixz
+KX19KQpyZXR1cm4gUC5ESSgkYXN5bmMkdHkscyl9LAphSzpmdW5jdGlvbihhKXt2YXIgdD1QLmhLKGEp
+LmdoWSgpLnEoMCwibGluZSIpCnJldHVybiB0PT1udWxsP251bGw6SC5IcCh0LG51bGwpfSwKRzY6ZnVu
+Y3Rpb24oYSl7dmFyIHQ9UC5oSyhhKS5naFkoKS5xKDAsIm9mZnNldCIpCnJldHVybiB0PT1udWxsP251
+bGw6SC5IcCh0LG51bGwpfSwKaTY6ZnVuY3Rpb24oYSl7cmV0dXJuIEwublcodS5PLmEoYSkpfSwKblc6
+ZnVuY3Rpb24oYSl7dmFyIHQ9MCxzPVAuRlgodS56KSxyPTEscSxwPVtdLG8sbixtLGwsawp2YXIgJGFz
+eW5jJGk2PVAubHooZnVuY3Rpb24oYixjKXtpZihiPT09MSl7cT1jCnQ9cn13aGlsZSh0cnVlKXN3aXRj
+aCh0KXtjYXNlIDA6bD11LmcuYShXLnFjKGEuY3VycmVudFRhcmdldCkpLmdldEF0dHJpYnV0ZSgiaHJl
+ZiIpCmEucHJldmVudERlZmF1bHQoKQpyPTMKdD02CnJldHVybiBQLmpRKEwudHkobCksJGFzeW5jJGk2
+KQpjYXNlIDY6dS5iWi5hKEouR3IoVy5Qdihkb2N1bWVudC5kZWZhdWx0VmlldykpKS5yZWxvYWQoKQpy
+PTEKdD01CmJyZWFrCmNhc2UgMzpyPTIKaz1xCm89SC5SdShrKQpuPUgudHMoaykKTC5DMigiQ291bGQg
+bm90IGFkZC9yZW1vdmUgaGludCIsbyxuKQp0PTUKYnJlYWsKY2FzZSAyOnQ9MQpicmVhawpjYXNlIDU6
+cmV0dXJuIFAueUMobnVsbCxzKQpjYXNlIDE6cmV0dXJuIFAuZjMocSxzKX19KQpyZXR1cm4gUC5ESSgk
+YXN5bmMkaTYscyl9LApDMjpmdW5jdGlvbihhLGIsYyl7dmFyIHQscyxyPSJleGNlcHRpb24iLHE9InN0
+YWNrVHJhY2UiLHA9dS5hLmIoYikmJkouUk0oYi5xKDAsInN1Y2Nlc3MiKSwhMSkmJmIueDQocikmJmIu
+eDQocSksbz1KLmlhKGIpCmlmKHApe3Q9SC5oKG8ucShiLHIpKQpjPW8ucShiLHEpfWVsc2UgdD1vLnco
+YikKcD1kb2N1bWVudApzPXAucXVlcnlTZWxlY3RvcigiLnBvcHVwLXBhbmUiKQpzLnF1ZXJ5U2VsZWN0
+b3IoImgyIikuaW5uZXJUZXh0PWEKcy5xdWVyeVNlbGVjdG9yKCJwIikuaW5uZXJUZXh0PXQKcy5xdWVy
+eVNlbGVjdG9yKCJwcmUiKS5pbm5lclRleHQ9Si5qKGMpCm89dS5YCnUuZGQuYShzLnF1ZXJ5U2VsZWN0
+b3IoImEuYm90dG9tIikpLmhyZWY9UC5YZCgiaHR0cHMiLCJnaXRodWIuY29tIiwiZGFydC1sYW5nL3Nk
+ay9pc3N1ZXMvbmV3IixQLkVGKFsidGl0bGUiLCJDdXN0b21lci1yZXBvcnRlZCBpc3N1ZSB3aXRoIE5O
+QkQgbWlncmF0aW9uIHRvb2w6ICIrYSwibGFiZWxzIiwiYXJlYS1hbmFseXplcixhbmFseXplci1ubmJk
+LW1pZ3JhdGlvbix0eXBlLWJ1ZyIsImJvZHkiLGErIlxuXG5FcnJvcjogIitILkVqKHQpKyJcblxuUGxl
+YXNlIGZpbGwgaW4gdGhlIGZvbGxvd2luZzpcblxuKipOYW1lIG9mIHBhY2thZ2UgYmVpbmcgbWlncmF0
+ZWQgKGlmIHB1YmxpYykqKjpcbioqV2hhdCBJIHdhcyBkb2luZyB3aGVuIHRoaXMgaXNzdWUgb2NjdXJy
+ZWQqKjpcbioqSXMgaXQgcG9zc2libGUgdG8gd29yayBhcm91bmQgdGhpcyBpc3N1ZSoqOlxuKipIYXMg
+dGhpcyBpc3N1ZSBoYXBwZW5lZCBiZWZvcmUsIGFuZCBpZiBzbywgaG93IG9mdGVuKio6XG4qKkRhcnQg
+U0RLIHZlcnNpb24qKjogIitILkVqKHAuZ2V0RWxlbWVudEJ5SWQoInNkay12ZXJzaW9uIikudGV4dENv
+bnRlbnQpKyJcbioqQWRkaXRpb25hbCBkZXRhaWxzKio6XG5cblRoYW5rcyBmb3IgZmlsaW5nIVxuXG5T
+dGFja3RyYWNlOiBfYXV0byBwb3B1bGF0ZWQgYnkgbWlncmF0aW9uIHByZXZpZXcgdG9vbC5fXG5cbmBg
+YFxuIitILkVqKGMpKyJcbmBgYFxuIl0sbyxvKSkuZ25EKCkKbz1zLnN0eWxlCm8uZGlzcGxheT0iaW5p
+dGlhbCIKTC5xSihhKyI6ICIrSC5FaihiKSxjKX0sCnQyOmZ1bmN0aW9uKGEsYixjKXt2YXIgdCxzLHIs
+cSxwLG8sbj17fSxtPXUuZy5hKFcucWMoYS5jdXJyZW50VGFyZ2V0KSkKYS5wcmV2ZW50RGVmYXVsdCgp
+CnQ9bi5hPW0uZ2V0QXR0cmlidXRlKCJocmVmIikKaWYoSi56bCh0LCI/Iikpe3M9Qy54Qi5Oaih0LDAs
+Qy54Qi5PWSh0LCI/IikpCm4uYT1zCnI9c31lbHNlIHI9dAppZihjIT1udWxsKXtxPSQublUoKQpyPW4u
+YT1xLm81KEQubnIocS50TShjKSxyKSl9cD1MLkc2KHQpCm89TC5hSyh0KQppZihwIT1udWxsKUwuYWYo
+cixwLG8sYixuZXcgTC5uVChuLHAsbykpCmVsc2UgTC5hZihyLG51bGwsbnVsbCxiLG5ldyBMLk5ZKG4p
+KX0sCnZVOmZ1bmN0aW9uKCl7dmFyIHQ9ZG9jdW1lbnQKSC5EaCh1LmcsdS5oLCJUIiwicXVlcnlTZWxl
+Y3RvckFsbCIpCnQ9bmV3IFcud3oodC5xdWVyeVNlbGVjdG9yQWxsKCIuY29kZSIpLHUuUikKdC5LKHQs
+bmV3IEwuZVgoKSl9LApoWDpmdW5jdGlvbihhLGIsYyl7dmFyIHQ9dS5YCkwuUTYoYSxQLkVGKFsicmVn
+aW9uIiwicmVnaW9uIiwib2Zmc2V0IixILkVqKGIpXSx0LHQpKS5XNyhuZXcgTC5EVChhLGIsYyksdS5Q
+KS5PQShuZXcgTC5lSChhKSl9LApHNzpmdW5jdGlvbihhLGIsYyxkLGUpe3ZhciB0CmlmKCFKLnA0KGEs
+Ii5kYXJ0Iikpe0wuQkUoYSxuZXcgQi5xcCgiIiwiIiwiIixDLkNNKSxkKQpMLkJYKGEsbnVsbCkKaWYo
+ZSE9bnVsbCllLiQwKCkKcmV0dXJufXQ9dS5YCkwuUTYoYSxQLkVGKFsiaW5saW5lIiwidHJ1ZSJdLHQs
+dCkpLlc3KG5ldyBMLnl1KGEsZCxiLGMsZSksdS5QKS5PQShuZXcgTC56RChhKSl9LApHZTpmdW5jdGlv
+bigpe3ZhciB0PSIvX3ByZXZpZXcvbmF2aWdhdGlvblRyZWUuanNvbiIKTC5RNih0LEMuV08pLlc3KG5l
+dyBMLlRXKCksdS5QKS5PQShuZXcgTC54cih0KSl9LApxSjpmdW5jdGlvbihhLGIpe3ZhciB0CndpbmRv
+dwppZih0eXBlb2YgY29uc29sZSE9InVuZGVmaW5lZCIpd2luZG93LmNvbnNvbGUuZXJyb3IoYSkKd2lu
+ZG93CnQ9SC5FaihiKQppZih0eXBlb2YgY29uc29sZSE9InVuZGVmaW5lZCIpd2luZG93LmNvbnNvbGUu
+ZXJyb3IodCl9LApxTzpmdW5jdGlvbihhKXt2YXIgdD1hLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLHM9
+Qy5DRC56USgkLmZpKCkub2Zmc2V0SGVpZ2h0KSxyPXdpbmRvdy5pbm5lckhlaWdodCxxPUMuQ0QuelEo
+JC5EVygpLm9mZnNldEhlaWdodCkKaWYodC5ib3R0b20+ci0ocSsxNCkpSi5kaChhKQplbHNlIGlmKHQu
+dG9wPHMrMTQpSi5kaChhKX0sCmZHOmZ1bmN0aW9uKGEsYil7dmFyIHQscyxyCmlmKGEhPW51bGwpe3Q9
+ZG9jdW1lbnQKcz10LmdldEVsZW1lbnRCeUlkKCJvIitILkVqKGEpKQpyPXQucXVlcnlTZWxlY3Rvcigi
+LmxpbmUtIitILkVqKGIpKQppZihzIT1udWxsKXtMLnFPKHMpCkouZFIocykuaSgwLCJ0YXJnZXQiKX1l
+bHNlIGlmKHIhPW51bGwpTC5xTyhyLnBhcmVudEVsZW1lbnQpCmlmKHIhPW51bGwpSi5kUih1LmcuYShy
+LnBhcmVudE5vZGUpKS5pKDAsImhpZ2hsaWdodCIpfWVsc2UgTC5xTygkLkQ5KCkpfSwKYWY6ZnVuY3Rp
+b24oYSxiLGMsZCxlKXt2YXIgdCxzLHI9TC5HNih3aW5kb3cubG9jYXRpb24uaHJlZikscT1MLmFLKHdp
+bmRvdy5sb2NhdGlvbi5ocmVmKQppZihyIT1udWxsKXt0PWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJv
+IitILkVqKHIpKQppZih0IT1udWxsKUouZFIodCkuUigwLCJ0YXJnZXQiKX1pZihxIT1udWxsKXtzPWRv
+Y3VtZW50LnF1ZXJ5U2VsZWN0b3IoIi5saW5lLSIrSC5FaihxKSkKaWYocyE9bnVsbClKLmRSKHMucGFy
+ZW50RWxlbWVudCkuUigwLCJoaWdobGlnaHQiKX1pZihhPT09d2luZG93LmxvY2F0aW9uLnBhdGhuYW1l
+KXtMLmZHKGIsYykKZS4kMCgpfWVsc2UgTC5HNyhhLGIsYyxkLGUpfSwKUTQ6ZnVuY3Rpb24oYSxiKXt2
+YXIgdCxzLHI9UC5oSyhhKSxxPXUuWApxPVAuRmwocSxxKQpmb3IodD1yLmdoWSgpLHQ9dC5nUHUodCks
+dD10Lmdreih0KTt0LkYoKTspe3M9dC5nbCgpCnEuWSgwLHMuYSxzLmIpfWZvcih0PWIuZ1B1KGIpLHQ9
+dC5na3oodCk7dC5GKCk7KXtzPXQuZ2woKQpxLlkoMCxzLmEscy5iKX1xLlkoMCwiYXV0aFRva2VuIiwk
+LlVFKCkpCnJldHVybiByLm5tKDAscSkuZ25EKCl9LApUMTpmdW5jdGlvbihhKXt2YXIgdCxzLHIscSxw
+LG8sbixtLGwsaz0kLmhMKCkKSi5sNShrLCIiKQppZihhPT1udWxsKXt0PWRvY3VtZW50LmNyZWF0ZUVs
+ZW1lbnQoInAiKQpDLkx0LnNhNCh0LCJTZWUgZGV0YWlscyBhYm91dCBhIHByb3Bvc2VkIGVkaXQuIikK
+Qy5MdC5zUCh0LEguVk0oWyJwbGFjZWhvbGRlciJdLHUuaSkpCmsuYXBwZW5kQ2hpbGQodCkKQy5MdC5G
+Rih0KQpyZXR1cm59cz1hLmQKcj0kLm5VKCkKcT1yLnRNKHMpCnA9YS5iCm89ZG9jdW1lbnQKbj1yLkhQ
+KHMsSi5UMChvLnF1ZXJ5U2VsZWN0b3IoIi5yb290IikudGV4dENvbnRlbnQpKQptPWEuYwpsPW8uY3Jl
+YXRlRWxlbWVudCgicCIpCmsuYXBwZW5kQ2hpbGQobCkKbC5hcHBlbmRDaGlsZChvLmNyZWF0ZVRleHRO
+b2RlKEguRWoocCkrIiBhdCAiKSkKcj11LlgKcj1XLko2KEwuUTQocyxQLkVGKFsibGluZSIsSi5qKG0p
+XSxyLHIpKSkKci5hcHBlbmRDaGlsZChvLmNyZWF0ZVRleHROb2RlKEguRWoobikrIjoiK0guRWoobSkr
+Ii4iKSkKbC5hcHBlbmRDaGlsZChyKQpKLmRoKGwpCkwuQ0MoYSxrLHEpCkwuRnooYSxrKX0sCkxIOmZ1
+bmN0aW9uKGEsYixjKXt2YXIgdCxzLHIscSxwLG8sbixtLGwsayxqLGksaCxnPSQueVAoKQpKLmw1KGcs
+IiIpCmlmKGIuZ0EoYik9PT0wKXt0PWRvY3VtZW50CnM9dC5jcmVhdGVFbGVtZW50KCJwIikKZy5hcHBl
+bmRDaGlsZChzKQpzLmFwcGVuZENoaWxkKHQuY3JlYXRlVGV4dE5vZGUoIk5vIHByb3Bvc2VkIGVkaXRz
+IikpfWVsc2UgZm9yKGc9Yi5nUHUoYiksZz1nLmdreihnKSx0PXUuRyxyPXQuQygifigxKT8iKSxxPXUu
+Wix0PXQuYztnLkYoKTspe3A9Zy5nbCgpCm89ZG9jdW1lbnQKcz1vLmNyZWF0ZUVsZW1lbnQoInAiKQpu
+PSQueVAoKQpuLmFwcGVuZENoaWxkKHMpCnMuYXBwZW5kQ2hpbGQoby5jcmVhdGVUZXh0Tm9kZShILkVq
+KHAuYSkrIjoiKSkKbT1vLmNyZWF0ZUVsZW1lbnQoInVsIikKbi5hcHBlbmRDaGlsZChtKQpmb3IocD1K
+LklUKHAuYik7cC5GKCk7KXtsPXAuZ2woKQprPW8uY3JlYXRlRWxlbWVudCgibGkiKQptLmFwcGVuZENo
+aWxkKGspCkouZFIoaykuaSgwLCJlZGl0IikKaj1vLmNyZWF0ZUVsZW1lbnQoImEiKQprLmFwcGVuZENo
+aWxkKGopCmouY2xhc3NMaXN0LmFkZCgiZWRpdC1saW5rIikKaT1sLmMKbj1ILkVqKGkpCmouc2V0QXR0
+cmlidXRlKCJkYXRhLSIrbmV3IFcuU3kobmV3IFcuaTcoaikpLk8oIm9mZnNldCIpLG4pCmg9bC5hCm49
+SC5FaihoKQpqLnNldEF0dHJpYnV0ZSgiZGF0YS0iK25ldyBXLlN5KG5ldyBXLmk3KGopKS5PKCJsaW5l
+IiksbikKai5hcHBlbmRDaGlsZChvLmNyZWF0ZVRleHROb2RlKCJsaW5lICIrSC5FaihoKSkpCm49ci5h
+KG5ldyBMLkVFKGksaCxhKSkKcS5hKG51bGwpClcuSkUoaiwiY2xpY2siLG4sITEsdCkKay5hcHBlbmRD
+aGlsZChvLmNyZWF0ZVRleHROb2RlKCI6ICIrSC5FaihsLmIpKSl9fWlmKGMpTC5UMShudWxsKX0sCkZy
+OmZ1bmN0aW9uKGEsYixjKXt2YXIgdCxzLHI9d2luZG93LmxvY2F0aW9uLHE9UC5oSygociYmQy5FeCku
+Z0RyKHIpK0guRWooYSkpCnI9dS5YCnI9UC5GbChyLHIpCmlmKGIhPW51bGwpci5ZKDAsIm9mZnNldCIs
+SC5FaihiKSkKaWYoYyE9bnVsbClyLlkoMCwibGluZSIsSC5FaihjKSkKci5ZKDAsImF1dGhUb2tlbiIs
+JC5VRSgpKQpxPXEubm0oMCxyKQpyPXdpbmRvdy5oaXN0b3J5CnQ9dS56CnM9cS5nbkQoKQpyLnB1c2hT
+dGF0ZShuZXcgUC5CZihbXSxbXSkuUHYoUC5GbCh0LHQpKSwiIixzKX0sCkVuOmZ1bmN0aW9uKGEpe3Zh
+ciB0PUouYmIoZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiLnJvb3QiKS50ZXh0Q29udGVudCwiLyIpCmlm
+KEMueEIubihhLHQpKXJldHVybiBDLnhCLkcoYSx0Lmxlbmd0aCkKZWxzZSByZXR1cm4gYX0sCkJYOmZ1
+bmN0aW9uKGEsYil7dmFyIHQscz17fQpzLmE9YQphPUwuRW4oYSkKcy5hPWEKSi5kcigkLkQ5KCksYSkK
+dD1kb2N1bWVudApILkRoKHUuZyx1LmgsIlQiLCJxdWVyeVNlbGVjdG9yQWxsIikKdD1uZXcgVy53eih0
+LnF1ZXJ5U2VsZWN0b3JBbGwoIi5uYXYtcGFuZWwgLm5hdi1saW5rIiksdS5SKQp0LksodCxuZXcgTC5W
+UyhzKSl9LApCRTpmdW5jdGlvbihhLGIsYyl7dmFyIHQ9Ii5yZWdpb25zIixzPWRvY3VtZW50LHI9cy5x
+dWVyeVNlbGVjdG9yKHQpLHE9cy5xdWVyeVNlbGVjdG9yKCIuY29kZSIpCkoudEgocixiLmEsJC5LRygp
+KQpKLnRIKHEsYi5iLCQuS0coKSkKTC5MSChhLGIuZCxjKQpMLnZVKCkKTC55WCgiLmNvZGUiLCEwKQpM
+LnlYKHQsITApfSwKdFg6ZnVuY3Rpb24oYSxiKXt2YXIgdCxzLHIscSxwLG8sbixtLGwsayxqLGksaCxn
+PWRvY3VtZW50LGY9Zy5jcmVhdGVFbGVtZW50KCJ1bCIpCmEuYXBwZW5kQ2hpbGQoZikKZm9yKHQ9Yi5s
+ZW5ndGgscz11Lloscj0wO3I8Yi5sZW5ndGg7Yi5sZW5ndGg9PT10fHwoMCxILmxrKShiKSwrK3Ipe3E9
+YltyXQpwPWcuY3JlYXRlRWxlbWVudCgibGkiKQpmLmFwcGVuZENoaWxkKHApCm89Si5ZRShwKQppZihx
+LmE9PT1DLlkyKXtvLmdQKHApLmkoMCwiZGlyIikKbj1nLmNyZWF0ZUVsZW1lbnQoInNwYW4iKQpwLmFw
+cGVuZENoaWxkKG4pCm89Si5ZRShuKQpvLmdQKG4pLmkoMCwiYXJyb3ciKQpvLnNoZihuLCImI3gyNUJD
+OyIpCm09Zy5jcmVhdGVFbGVtZW50KCJzcGFuIikKcC5hcHBlbmRDaGlsZChtKQpKLmw1KG0sIiYjeDFG
+NEMxOyIpCnAuYXBwZW5kQ2hpbGQoZy5jcmVhdGVUZXh0Tm9kZShxLmIpKQpMLnRYKHAscS5jKQpMLmt6
+KG4pfWVsc2V7by5zaGYocCwiJiN4MUY0QzQ7IikKbD1nLmNyZWF0ZUVsZW1lbnQoImEiKQpwLmFwcGVu
+ZENoaWxkKGwpCm89Si5ZRShsKQpvLmdQKGwpLmkoMCwibmF2LWxpbmsiKQpsLnNldEF0dHJpYnV0ZSgi
+ZGF0YS0iK25ldyBXLlN5KG5ldyBXLmk3KGwpKS5PKCJuYW1lIikscS5kKQpsLnNldEF0dHJpYnV0ZSgi
+aHJlZiIscS5lKQpsLmFwcGVuZENoaWxkKGcuY3JlYXRlVGV4dE5vZGUocS5iKSkKbz1vLmdWbChsKQpr
+PW8uJHRpCmo9ay5DKCJ+KDEpPyIpLmEobmV3IEwuVEQoKSkKcy5hKG51bGwpClcuSkUoby5hLG8uYixq
+LCExLGsuYykKaT1xLmYKaWYodHlwZW9mIGkhPT0ibnVtYmVyIilyZXR1cm4gaS5vcygpCmlmKGk+MCl7
+aD1nLmNyZWF0ZUVsZW1lbnQoInNwYW4iKQpwLmFwcGVuZENoaWxkKGgpCkouZFIoaCkuaSgwLCJlZGl0
+LWNvdW50IikKbz0iIitpKyIgIgppZihpPT09MSlrPSJlZGl0IgplbHNlIGs9ImVkaXRzIgpoLnNldEF0
+dHJpYnV0ZSgidGl0bGUiLG8raykKaC5hcHBlbmRDaGlsZChnLmNyZWF0ZVRleHROb2RlKEMuam4udyhp
+KSkpfX19fSwKRno6ZnVuY3Rpb24oYSxiKXt2YXIgdCxzLHIscSxwLG8sbixtLGwsayxqPWEuYQppZihq
+IT1udWxsKXt0PWRvY3VtZW50CnM9dC5jcmVhdGVFbGVtZW50KCJwIikKYi5hcHBlbmRDaGlsZChzKQpm
+b3Iocj1qLmxlbmd0aCxxPXUuaSxwPXUuUSxvPTA7bzxqLmxlbmd0aDtqLmxlbmd0aD09PXJ8fCgwLEgu
+bGspKGopLCsrbyl7bj1qW29dCm09dC5jcmVhdGVFbGVtZW50KCJhIikKcy5hcHBlbmRDaGlsZChtKQpt
+LmFwcGVuZENoaWxkKHQuY3JlYXRlVGV4dE5vZGUobi5hKSkKbS5zZXRBdHRyaWJ1dGUoImhyZWYiLG4u
+YikKbD1wLmEoSC5WTShbImFkZC1oaW50LWxpbmsiLCJiZWZvcmUtYXBwbHkiLCJidXR0b24iXSxxKSkK
+az1KLmRSKG0pCmsuVjEoMCkKay5GVigwLGwpfX19LApDQzpmdW5jdGlvbihhMixhMyxhNCl7dmFyIHQs
+cyxyLHEscCxvLG4sbSxsLGssaixpLGgsZyxmLGUsZCxjLGIsYSxhMCxhMT1udWxsCmZvcih0PWEyLmUs
+cz10Lmxlbmd0aCxyPXUuaSxxPXUuUSxwPTA7cDx0Lmxlbmd0aDt0Lmxlbmd0aD09PXN8fCgwLEgubGsp
+KHQpLCsrcCl7bz10W3BdCm49ZG9jdW1lbnQKbT1uLmNyZWF0ZUVsZW1lbnQoInAiKQpsPXEuYShILlZN
+KFsidHJhY2UiXSxyKSkKaz1KLmRSKG0pCmsuVjEoMCkKay5GVigwLGwpCmo9YTMuYXBwZW5kQ2hpbGQo
+bSkKbT1uLmNyZWF0ZUVsZW1lbnQoInNwYW4iKQpsPXEuYShILlZNKFsidHlwZS1kZXNjcmlwdGlvbiJd
+LHIpKQprPUouZFIobSkKay5WMSgwKQprLkZWKDAsbCkKbS5hcHBlbmRDaGlsZChuLmNyZWF0ZVRleHRO
+b2RlKG8uYSkpCmouYXBwZW5kQ2hpbGQobSkKai5hcHBlbmRDaGlsZChuLmNyZWF0ZVRleHROb2RlKCI6
+IikpCm09bi5jcmVhdGVFbGVtZW50KCJ1bCIpCmw9cS5hKEguVk0oWyJ0cmFjZSJdLHIpKQprPUouZFIo
+bSkKay5WMSgwKQprLkZWKDAsbCkKaT1qLmFwcGVuZENoaWxkKG0pCmZvcihtPW8uYixsPW0ubGVuZ3Ro
+LGg9MDtoPG0ubGVuZ3RoO20ubGVuZ3RoPT09bHx8KDAsSC5saykobSksKytoKXtnPW1baF0KZj1uLmNy
+ZWF0ZUVsZW1lbnQoImxpIikKSi5sNShmLCImI3gyNzRGOyAiKQppLmFwcGVuZENoaWxkKGYpCmU9bi5j
+cmVhdGVFbGVtZW50KCJzcGFuIikKZD1xLmEoSC5WTShbImZ1bmN0aW9uIl0scikpCms9Si5kUihlKQpr
+LlYxKDApCmsuRlYoMCxkKQpkPWcuYgpMLmtEKGUsZD09bnVsbD8idW5rbm93biI6ZCkKZi5hcHBlbmRD
+aGlsZChlKQpjPWcuYwppZihjIT1udWxsKXtmLmFwcGVuZENoaWxkKG4uY3JlYXRlVGV4dE5vZGUoIiAo
+IikpCmI9Yy5iCmE9bi5jcmVhdGVFbGVtZW50KCJhIikKYS5hcHBlbmRDaGlsZChuLmNyZWF0ZVRleHRO
+b2RlKEguRWooYy5jKSsiOiIrSC5FaihiKSkpCmEwPWMuYQplPSQublUoKQphLnNldEF0dHJpYnV0ZSgi
+aHJlZiIsZS5vNShlLnE3KDAsYTQsYTAsYTEsYTEsYTEsYTEsYTEsYTEpKSkKYS5jbGFzc0xpc3QuYWRk
+KCJuYXYtbGluayIpCmYuYXBwZW5kQ2hpbGQoYSkKZi5hcHBlbmRDaGlsZChuLmNyZWF0ZVRleHROb2Rl
+KCIpIikpfWYuYXBwZW5kQ2hpbGQobi5jcmVhdGVUZXh0Tm9kZSgiOiAiKSkKZT1nLmEKTC5rRChmLGU9
+PW51bGw/InVua25vd24iOmUpfX19LAprRDpmdW5jdGlvbihhLGIpe3ZhciB0LHMscj1ILlZNKGIuc3Bs
+aXQoIi4iKSx1LnMpLHE9Qy5ObS5ndEgocikscD1kb2N1bWVudAphLmFwcGVuZENoaWxkKHAuY3JlYXRl
+VGV4dE5vZGUocSkpCmZvcihxPUgucUMociwxLG51bGwsdS5OKSxxPW5ldyBILmE3KHEscS5nQShxKSxx
+LiR0aS5DKCJhNzxhTC5FPiIpKSx0PUouWUUoYSk7cS5GKCk7KXtzPXEuZAp0Lm56KGEsImJlZm9yZWVu
+ZCIsIiYjODIwMzsuIixudWxsLG51bGwpCmEuYXBwZW5kQ2hpbGQocC5jcmVhdGVUZXh0Tm9kZShzKSl9
+fSwKZTpmdW5jdGlvbiBlKCl7fSwKVlc6ZnVuY3Rpb24gVlcoYSxiLGMpe3RoaXMuYT1hCnRoaXMuYj1i
+CnRoaXMuYz1jfSwKb1o6ZnVuY3Rpb24gb1ooKXt9LApqcjpmdW5jdGlvbiBqcigpe30sCnFsOmZ1bmN0
+aW9uIHFsKCl7fSwKSGk6ZnVuY3Rpb24gSGkoKXt9LApCVDpmdW5jdGlvbiBCVCgpe30sClBZOmZ1bmN0
+aW9uIFBZKCl7fSwKTDpmdW5jdGlvbiBMKCl7fSwKV3g6ZnVuY3Rpb24gV3goYSxiKXt0aGlzLmE9YQp0
+aGlzLmI9Yn0sCkFPOmZ1bmN0aW9uIEFPKGEpe3RoaXMuYT1hfSwKZE46ZnVuY3Rpb24gZE4oYSl7dGhp
+cy5hPWF9LApIbzpmdW5jdGlvbiBIbyhhKXt0aGlzLmE9YX0sCnh6OmZ1bmN0aW9uIHh6KGEsYil7dGhp
+cy5hPWEKdGhpcy5iPWJ9LApJQzpmdW5jdGlvbiBJQygpe30sCkwxOmZ1bmN0aW9uIEwxKGEsYil7dGhp
+cy5hPWEKdGhpcy5iPWJ9LApuVDpmdW5jdGlvbiBuVChhLGIsYyl7dGhpcy5hPWEKdGhpcy5iPWIKdGhp
+cy5jPWN9LApOWTpmdW5jdGlvbiBOWShhKXt0aGlzLmE9YX0sCmVYOmZ1bmN0aW9uIGVYKCl7fSwKRFQ6
+ZnVuY3Rpb24gRFQoYSxiLGMpe3RoaXMuYT1hCnRoaXMuYj1iCnRoaXMuYz1jfSwKZUg6ZnVuY3Rpb24g
+ZUgoYSl7dGhpcy5hPWF9LAp5dTpmdW5jdGlvbiB5dShhLGIsYyxkLGUpe3ZhciBfPXRoaXMKXy5hPWEK
+Xy5iPWIKXy5jPWMKXy5kPWQKXy5lPWV9LAp6RDpmdW5jdGlvbiB6RChhKXt0aGlzLmE9YX0sClRXOmZ1
+bmN0aW9uIFRXKCl7fSwKeHI6ZnVuY3Rpb24geHIoYSl7dGhpcy5hPWF9LApFRTpmdW5jdGlvbiBFRShh
+LGIsYyl7dGhpcy5hPWEKdGhpcy5iPWIKdGhpcy5jPWN9LApRTDpmdW5jdGlvbiBRTChhLGIpe3RoaXMu
+YT1hCnRoaXMuYj1ifSwKVlM6ZnVuY3Rpb24gVlMoYSl7dGhpcy5hPWF9LApURDpmdW5jdGlvbiBURCgp
+e30sClhBOmZ1bmN0aW9uIFhBKCl7fSwKbUs6ZnVuY3Rpb24oYSl7dmFyIHQscyxyLHEscCxvLG49SC5W
+TShbXSx1LmNRKQpmb3IodD1KLklUKHUuVC5hKGEpKTt0LkYoKTspe3M9dC5nbCgpCnI9Si5VNihzKQpx
+PUwucDIoSC5oKHIucShzLCJ0eXBlIikpKQpwPUguaChyLnEocywibmFtZSIpKQpvPXIucShzLCJzdWJ0
+cmVlIikKbz1vPT1udWxsP251bGw6TC5tSyhvKQpDLk5tLmkobixuZXcgTC5aWihxLHAsbyxILmgoci5x
+KHMsInBhdGgiKSksSC5oKHIucShzLCJocmVmIikpLEgudVAoci5xKHMsImVkaXRDb3VudCIpKSkpfXJl
+dHVybiBufSwKcDI6ZnVuY3Rpb24oYSl7c3dpdGNoKGEpe2Nhc2UiZGlyZWN0b3J5IjpyZXR1cm4gQy5Z
+MgpjYXNlImZpbGUiOnJldHVybiBDLnJmCmRlZmF1bHQ6dGhyb3cgSC5iKFAuUFYoIlVucmVjb2duaXpl
+ZCBuYXZpZ2F0aW9uIHRyZWUgbm9kZSB0eXBlOiAiK0guRWooYSkpKX19LApaWjpmdW5jdGlvbiBaWihh
+LGIsYyxkLGUsZil7dmFyIF89dGhpcwpfLmE9YQpfLmI9YgpfLmM9YwpfLmQ9ZApfLmU9ZQpfLmY9Zn0s
+Ck85OmZ1bmN0aW9uIE85KGEpe3RoaXMuYj1hfSwKSVY6ZnVuY3Rpb24gSVYoYSxiLGMsZCl7dmFyIF89
+dGhpcwpfLmQ9YQpfLmU9YgpfLmY9YwpfLnI9ZH19LE09ewpZRjpmdW5jdGlvbihhLGIpe3ZhciB0LHMs
+cixxLHAsbyxuCmZvcih0PWIubGVuZ3RoLHM9MTtzPHQ7KytzKXtpZihiW3NdPT1udWxsfHxiW3MtMV0h
+PW51bGwpY29udGludWUKZm9yKDt0Pj0xO3Q9cil7cj10LTEKaWYoYltyXSE9bnVsbClicmVha31xPW5l
+dyBQLlJuKCIiKQpwPSIiKyhhKyIoIikKcS5hPXAKbz1ILnFDKGIsMCx0LEgudDYoYikuYykKbj1vLiR0
+aQpuPXArbmV3IEgubEoobyxuLkMoInFVKihhTC5FKSIpLmEobmV3IE0uTm8oKSksbi5DKCJsSjxhTC5F
+LHFVKj4iKSkuelYoMCwiLCAiKQpxLmE9bgpxLmE9bisoIik6IHBhcnQgIisocy0xKSsiIHdhcyBudWxs
+LCBidXQgcGFydCAiK3MrIiB3YXMgbm90LiIpCnRocm93IEguYihQLnhZKHEudygwKSkpfX0sCmxJOmZ1
+bmN0aW9uIGxJKGEpe3RoaXMuYT1hfSwKTWk6ZnVuY3Rpb24gTWkoKXt9LApxNzpmdW5jdGlvbiBxNygp
+e30sCk5vOmZ1bmN0aW9uIE5vKCl7fX0sWD17CkNMOmZ1bmN0aW9uKGEsYil7dmFyIHQscyxyLHEscCxv
+PWIueFooYSkKYi5oSyhhKQppZihvIT1udWxsKWE9Si5LVihhLG8ubGVuZ3RoKQp0PXUuaQpzPUguVk0o
+W10sdCkKcj1ILlZNKFtdLHQpCnQ9YS5sZW5ndGgKaWYodCE9PTAmJmIucjQoQy54Qi5XKGEsMCkpKXtp
+ZigwPj10KXJldHVybiBILk9IKGEsMCkKQy5ObS5pKHIsYVswXSkKcT0xfWVsc2V7Qy5ObS5pKHIsIiIp
+CnE9MH1mb3IocD1xO3A8dDsrK3ApaWYoYi5yNChDLnhCLlcoYSxwKSkpe0MuTm0uaShzLEMueEIuTmoo
+YSxxLHApKQpDLk5tLmkocixhW3BdKQpxPXArMX1pZihxPHQpe0MuTm0uaShzLEMueEIuRyhhLHEpKQpD
+Lk5tLmkociwiIil9cmV0dXJuIG5ldyBYLldEKGIsbyxzLHIpfSwKV0Q6ZnVuY3Rpb24gV0QoYSxiLGMs
+ZCl7dmFyIF89dGhpcwpfLmE9YQpfLmI9YgpfLmQ9YwpfLmU9ZH0sCnFSOmZ1bmN0aW9uIHFSKGEpe3Ro
+aXMuYT1hfSwKSTc6ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyBYLmR2KGEpfSwKZHY6ZnVuY3Rpb24gZHYo
+YSl7dGhpcy5hPWF9fSxPPXsKUmg6ZnVuY3Rpb24oKXt2YXIgdCxzPW51bGwKaWYoUC51bygpLmdGaSgp
+IT09ImZpbGUiKXJldHVybiAkLkViKCkKdD1QLnVvKCkKaWYoIUMueEIuVGModC5nSWkodCksIi8iKSly
+ZXR1cm4gJC5FYigpCmlmKFAuS0wocywiYS9iIixzLHMscyxzLHMpLnQ0KCk9PT0iYVxcYiIpcmV0dXJu
+ICQuS2soKQpyZXR1cm4gJC5iRCgpfSwKekw6ZnVuY3Rpb24gekwoKXt9fSxFPXtPRjpmdW5jdGlvbiBP
+RihhLGIsYyl7dGhpcy5kPWEKdGhpcy5lPWIKdGhpcy5mPWN9fSxGPXtydTpmdW5jdGlvbiBydShhLGIs
+YyxkKXt2YXIgXz10aGlzCl8uZD1hCl8uZT1iCl8uZj1jCl8ucj1kfX0sRD17ClJYOmZ1bmN0aW9uKCl7
+dmFyIHQscyxyPVAudW8oKQppZihyLkROKDAsJC5JNikpcmV0dXJuICQuRmYKJC5JNj1yCmlmKCQuSGso
+KT09JC5FYigpKXJldHVybiAkLkZmPXIuWkkoIi4iKS53KDApCmVsc2V7dD1yLnQ0KCkKcz10Lmxlbmd0
+aC0xCnJldHVybiAkLkZmPXM9PT0wP3Q6Qy54Qi5Oaih0LDAscyl9fSwKbnI6ZnVuY3Rpb24oYSxiKXt2
+YXIgdD1udWxsCnJldHVybiAkLm5VKCkucTcoMCxhLGIsdCx0LHQsdCx0LHQpfX0KdmFyIHc9W0MsSCxK
+LFAsVyxVLEIsVCxMLE0sWCxPLEUsRixEXQpodW5rSGVscGVycy5zZXRGdW5jdGlvbk5hbWVzSWZOZWNl
+c3NhcnkodykKdmFyICQ9e30KSC5GSy5wcm90b3R5cGU9e30KSi52Qi5wcm90b3R5cGU9ewpETjpmdW5j
+dGlvbihhLGIpe3JldHVybiBhPT09Yn0sCmdpTzpmdW5jdGlvbihhKXtyZXR1cm4gSC5lUShhKX0sCnc6
+ZnVuY3Rpb24oYSl7cmV0dXJuIkluc3RhbmNlIG9mICciK0guRWooSC5NKGEpKSsiJyJ9LAplNzpmdW5j
+dGlvbihhLGIpe3Uuby5hKGIpCnRocm93IEguYihQLmxyKGEsYi5nV2EoKSxiLmduZCgpLGIuZ1ZtKCkp
+KX19CkoueUUucHJvdG90eXBlPXsKdzpmdW5jdGlvbihhKXtyZXR1cm4gU3RyaW5nKGEpfSwKZ2lPOmZ1
+bmN0aW9uKGEpe3JldHVybiBhPzUxOTAxODoyMTgxNTl9LAokaWEyOjF9Ckoud2UucHJvdG90eXBlPXsK
+RE46ZnVuY3Rpb24oYSxiKXtyZXR1cm4gbnVsbD09Yn0sCnc6ZnVuY3Rpb24oYSl7cmV0dXJuIm51bGwi
+fSwKZ2lPOmZ1bmN0aW9uKGEpe3JldHVybiAwfSwKZTc6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gdGhpcy5T
+aihhLHUuby5hKGIpKX0sCiRpYzg6MX0KSi5NRi5wcm90b3R5cGU9ewpnaU86ZnVuY3Rpb24oYSl7cmV0
+dXJuIDB9LAp3OmZ1bmN0aW9uKGEpe3JldHVybiBTdHJpbmcoYSl9LAokaXZtOjF9CkouaUMucHJvdG90
+eXBlPXt9Ckoua2QucHJvdG90eXBlPXt9CkouYzUucHJvdG90eXBlPXsKdzpmdW5jdGlvbihhKXt2YXIg
+dD1hWyQudygpXQppZih0PT1udWxsKXJldHVybiB0aGlzLnQoYSkKcmV0dXJuIkphdmFTY3JpcHQgZnVu
+Y3Rpb24gZm9yICIrSC5FaihKLmoodCkpfSwKJFM6ZnVuY3Rpb24oKXtyZXR1cm57ZnVuYzoxLG9wdDpb
+LCwsLCwsLCwsLCwsLCwsLF19fSwKJGlFSDoxfQpKLmpkLnByb3RvdHlwZT17Cmk6ZnVuY3Rpb24oYSxi
+KXtILnQ2KGEpLmMuYShiKQppZighIWEuZml4ZWQkbGVuZ3RoKUgudmgoUC5MNCgiYWRkIikpCmEucHVz
+aChiKX0sClc0OmZ1bmN0aW9uKGEsYil7dmFyIHQKaWYoISFhLmZpeGVkJGxlbmd0aClILnZoKFAuTDQo
+InJlbW92ZUF0IikpCnQ9YS5sZW5ndGgKaWYoYj49dCl0aHJvdyBILmIoUC5PNyhiLG51bGwpKQpyZXR1
+cm4gYS5zcGxpY2UoYiwxKVswXX0sClVHOmZ1bmN0aW9uKGEsYixjKXt2YXIgdCxzLHIKSC50NihhKS5D
+KCJjWDwxPiIpLmEoYykKaWYoISFhLmZpeGVkJGxlbmd0aClILnZoKFAuTDQoImluc2VydEFsbCIpKQp0
+PWEubGVuZ3RoClAud0EoYiwwLHQsImluZGV4IikKcz1jLmxlbmd0aAp0aGlzLnNBKGEsdCtzKQpyPWIr
+cwp0aGlzLllXKGEscixhLmxlbmd0aCxhLGIpCnRoaXMudmcoYSxiLHIsYyl9LAptdjpmdW5jdGlvbihh
+KXtpZighIWEuZml4ZWQkbGVuZ3RoKUgudmgoUC5MNCgicmVtb3ZlTGFzdCIpKQppZihhLmxlbmd0aD09
+PTApdGhyb3cgSC5iKEguSFkoYSwtMSkpCnJldHVybiBhLnBvcCgpfSwKRlY6ZnVuY3Rpb24oYSxiKXt2
+YXIgdApILnQ2KGEpLkMoImNYPDE+IikuYShiKQppZighIWEuZml4ZWQkbGVuZ3RoKUgudmgoUC5MNCgi
+YWRkQWxsIikpCmZvcih0PUouSVQoYik7dC5GKCk7KWEucHVzaCh0LmdsKCkpfSwKRTI6ZnVuY3Rpb24o
+YSxiLGMpe3ZhciB0PUgudDYoYSkKcmV0dXJuIG5ldyBILmxKKGEsdC5LcShjKS5DKCIxKDIpIikuYShi
+KSx0LkMoIkA8MT4iKS5LcShjKS5DKCJsSjwxLDI+IikpfSwKelY6ZnVuY3Rpb24oYSxiKXt2YXIgdCxz
+PVAuTzgoYS5sZW5ndGgsIiIsITEsdS5OKQpmb3IodD0wO3Q8YS5sZW5ndGg7Kyt0KXRoaXMuWShzLHQs
+SC5FaihhW3RdKSkKcmV0dXJuIHMuam9pbihiKX0sCk4wOmZ1bmN0aW9uKGEsYixjLGQpe3ZhciB0LHMs
+cgpkLmEoYikKSC50NihhKS5LcShkKS5DKCIxKDEsMikiKS5hKGMpCnQ9YS5sZW5ndGgKZm9yKHM9Yixy
+PTA7cjx0Oysrcil7cz1jLiQyKHMsYVtyXSkKaWYoYS5sZW5ndGghPT10KXRocm93IEguYihQLmE0KGEp
+KX1yZXR1cm4gc30sCkU6ZnVuY3Rpb24oYSxiKXtpZihiPDB8fGI+PWEubGVuZ3RoKXJldHVybiBILk9I
+KGEsYikKcmV0dXJuIGFbYl19LApndEg6ZnVuY3Rpb24oYSl7aWYoYS5sZW5ndGg+MClyZXR1cm4gYVsw
+XQp0aHJvdyBILmIoSC5XcCgpKX0sCmdyWjpmdW5jdGlvbihhKXt2YXIgdD1hLmxlbmd0aAppZih0PjAp
+cmV0dXJuIGFbdC0xXQp0aHJvdyBILmIoSC5XcCgpKX0sCllXOmZ1bmN0aW9uKGEsYixjLGQsZSl7dmFy
+IHQscyxyLHEKSC50NihhKS5DKCJjWDwxPiIpLmEoZCkKaWYoISFhLmltbXV0YWJsZSRsaXN0KUgudmgo
+UC5MNCgic2V0UmFuZ2UiKSkKUC5qQihiLGMsYS5sZW5ndGgpCnQ9Yy1iCmlmKHQ9PT0wKXJldHVybgpQ
+LmsxKGUsInNraXBDb3VudCIpCnM9ZApyPUouVTYocykKaWYoZSt0PnIuZ0EocykpdGhyb3cgSC5iKEgu
+YXIoKSkKaWYoZTxiKWZvcihxPXQtMTtxPj0wOy0tcSlhW2IrcV09ci5xKHMsZStxKQplbHNlIGZvcihx
+PTA7cTx0OysrcSlhW2IrcV09ci5xKHMsZStxKX0sCnZnOmZ1bmN0aW9uKGEsYixjLGQpe3JldHVybiB0
+aGlzLllXKGEsYixjLGQsMCl9LApWcjpmdW5jdGlvbihhLGIpe3ZhciB0LHMKSC50NihhKS5DKCJhMigx
+KSIpLmEoYikKdD1hLmxlbmd0aApmb3Iocz0wO3M8dDsrK3Mpe2lmKEgub1QoYi4kMShhW3NdKSkpcmV0
+dXJuITAKaWYoYS5sZW5ndGghPT10KXRocm93IEguYihQLmE0KGEpKX1yZXR1cm4hMX0sCnRnOmZ1bmN0
+aW9uKGEsYil7dmFyIHQKZm9yKHQ9MDt0PGEubGVuZ3RoOysrdClpZihKLlJNKGFbdF0sYikpcmV0dXJu
+ITAKcmV0dXJuITF9LAp3OmZ1bmN0aW9uKGEpe3JldHVybiBQLldFKGEsIlsiLCJdIil9LApna3o6ZnVu
+Y3Rpb24oYSl7cmV0dXJuIG5ldyBKLm0xKGEsYS5sZW5ndGgsSC50NihhKS5DKCJtMTwxPiIpKX0sCmdp
+TzpmdW5jdGlvbihhKXtyZXR1cm4gSC5lUShhKX0sCmdBOmZ1bmN0aW9uKGEpe3JldHVybiBhLmxlbmd0
+aH0sCnNBOmZ1bmN0aW9uKGEsYil7aWYoISFhLmZpeGVkJGxlbmd0aClILnZoKFAuTDQoInNldCBsZW5n
+dGgiKSkKYS5sZW5ndGg9Yn0sCnE6ZnVuY3Rpb24oYSxiKXtILnVQKGIpCmlmKGI+PWEubGVuZ3RofHxi
+PDApdGhyb3cgSC5iKEguSFkoYSxiKSkKcmV0dXJuIGFbYl19LApZOmZ1bmN0aW9uKGEsYixjKXtILnQ2
+KGEpLmMuYShjKQppZighIWEuaW1tdXRhYmxlJGxpc3QpSC52aChQLkw0KCJpbmRleGVkIHNldCIpKQpp
+ZihiPj1hLmxlbmd0aHx8YjwwKXRocm93IEguYihILkhZKGEsYikpCmFbYl09Y30sCiRpYlE6MSwKJGlj
+WDoxLAokaXpNOjF9CkouUG8ucHJvdG90eXBlPXt9CkoubTEucHJvdG90eXBlPXsKZ2w6ZnVuY3Rpb24o
+KXtyZXR1cm4gdGhpcy5kfSwKRjpmdW5jdGlvbigpe3ZhciB0LHM9dGhpcyxyPXMuYSxxPXIubGVuZ3Ro
+CmlmKHMuYiE9PXEpdGhyb3cgSC5iKEgubGsocikpCnQ9cy5jCmlmKHQ+PXEpe3Muc0gobnVsbCkKcmV0
+dXJuITF9cy5zSChyW3RdKTsrK3MuYwpyZXR1cm4hMH0sCnNIOmZ1bmN0aW9uKGEpe3RoaXMuZD10aGlz
+LiR0aS5DKCIxPyIpLmEoYSl9LAokaUFuOjF9CkoucUkucHJvdG90eXBlPXsKelE6ZnVuY3Rpb24oYSl7
+aWYoYT4wKXtpZihhIT09MS8wKXJldHVybiBNYXRoLnJvdW5kKGEpfWVsc2UgaWYoYT4tMS8wKXJldHVy
+biAwLU1hdGgucm91bmQoMC1hKQp0aHJvdyBILmIoUC5MNCgiIithKyIucm91bmQoKSIpKX0sCldaOmZ1
+bmN0aW9uKGEsYil7dmFyIHQscyxyLHEKaWYoYjwyfHxiPjM2KXRocm93IEguYihQLlRFKGIsMiwzNiwi
+cmFkaXgiLG51bGwpKQp0PWEudG9TdHJpbmcoYikKaWYoQy54Qi5tKHQsdC5sZW5ndGgtMSkhPT00MSly
+ZXR1cm4gdApzPS9eKFtcZGEtel0rKSg/OlwuKFtcZGEtel0rKSk/XChlXCsoXGQrKVwpJC8uZXhlYyh0
+KQppZihzPT1udWxsKUgudmgoUC5MNCgiVW5leHBlY3RlZCB0b1N0cmluZyByZXN1bHQ6ICIrdCkpCnI9
+cy5sZW5ndGgKaWYoMT49cilyZXR1cm4gSC5PSChzLDEpCnQ9c1sxXQppZigzPj1yKXJldHVybiBILk9I
+KHMsMykKcT0rc1szXQpyPXNbMl0KaWYociE9bnVsbCl7dCs9cgpxLT1yLmxlbmd0aH1yZXR1cm4gdCtD
+LnhCLkl4KCIwIixxKX0sCnc6ZnVuY3Rpb24oYSl7aWYoYT09PTAmJjEvYTwwKXJldHVybiItMC4wIgpl
+bHNlIHJldHVybiIiK2F9LApnaU86ZnVuY3Rpb24oYSl7dmFyIHQscyxyLHEscD1hfDAKaWYoYT09PXAp
+cmV0dXJuIDUzNjg3MDkxMSZwCnQ9TWF0aC5hYnMoYSkKcz1NYXRoLmxvZyh0KS8wLjY5MzE0NzE4MDU1
+OTk0NTN8MApyPU1hdGgucG93KDIscykKcT10PDE/dC9yOnIvdApyZXR1cm4gNTM2ODcwOTExJigocSo5
+MDA3MTk5MjU0NzQwOTkyfDApKyhxKjM1NDIyNDMxODExNzY1MjF8MCkpKjU5OTE5NytzKjEyNTl9LAp6
+WTpmdW5jdGlvbihhLGIpe3ZhciB0PWElYgppZih0PT09MClyZXR1cm4gMAppZih0PjApcmV0dXJuIHQK
+aWYoYjwwKXJldHVybiB0LWIKZWxzZSByZXR1cm4gdCtifSwKd0c6ZnVuY3Rpb24oYSxiKXt2YXIgdApp
+ZihhPjApdD10aGlzLnAzKGEsYikKZWxzZXt0PWI+MzE/MzE6Ygp0PWE+PnQ+Pj4wfXJldHVybiB0fSwK
+YmY6ZnVuY3Rpb24oYSxiKXtpZihiPDApdGhyb3cgSC5iKEgudEwoYikpCnJldHVybiB0aGlzLnAzKGEs
+Yil9LApwMzpmdW5jdGlvbihhLGIpe3JldHVybiBiPjMxPzA6YT4+PmJ9LAokaUNQOjEsCiRpbGY6MX0K
+Si51ci5wcm90b3R5cGU9eyRpSWY6MX0KSi5WQS5wcm90b3R5cGU9e30KSi5Eci5wcm90b3R5cGU9ewpt
+OmZ1bmN0aW9uKGEsYil7aWYoYjwwKXRocm93IEguYihILkhZKGEsYikpCmlmKGI+PWEubGVuZ3RoKUgu
+dmgoSC5IWShhLGIpKQpyZXR1cm4gYS5jaGFyQ29kZUF0KGIpfSwKVzpmdW5jdGlvbihhLGIpe2lmKGI+
+PWEubGVuZ3RoKXRocm93IEguYihILkhZKGEsYikpCnJldHVybiBhLmNoYXJDb2RlQXQoYil9LApkZDpm
+dW5jdGlvbihhLGIpe3JldHVybiBuZXcgSC51bihiLGEsMCl9LApoOmZ1bmN0aW9uKGEsYil7aWYodHlw
+ZW9mIGIhPSJzdHJpbmciKXRocm93IEguYihQLkwzKGIsbnVsbCxudWxsKSkKcmV0dXJuIGErYn0sClRj
+OmZ1bmN0aW9uKGEsYil7dmFyIHQ9Yi5sZW5ndGgscz1hLmxlbmd0aAppZih0PnMpcmV0dXJuITEKcmV0
+dXJuIGI9PT10aGlzLkcoYSxzLXQpfSwKaTc6ZnVuY3Rpb24oYSxiLGMsZCl7dmFyIHQ9UC5qQihiLGMs
+YS5sZW5ndGgpLHM9YS5zdWJzdHJpbmcoMCxiKSxyPWEuc3Vic3RyaW5nKHQpCnJldHVybiBzK2Qrcn0s
+ClFpOmZ1bmN0aW9uKGEsYixjKXt2YXIgdAppZihjPDB8fGM+YS5sZW5ndGgpdGhyb3cgSC5iKFAuVEUo
+YywwLGEubGVuZ3RoLG51bGwsbnVsbCkpCnQ9YytiLmxlbmd0aAppZih0PmEubGVuZ3RoKXJldHVybiEx
+CnJldHVybiBiPT09YS5zdWJzdHJpbmcoYyx0KX0sCm46ZnVuY3Rpb24oYSxiKXtyZXR1cm4gdGhpcy5R
+aShhLGIsMCl9LApOajpmdW5jdGlvbihhLGIsYyl7aWYoYz09bnVsbCljPWEubGVuZ3RoCmlmKGI8MCl0
+aHJvdyBILmIoUC5PNyhiLG51bGwpKQppZihiPmMpdGhyb3cgSC5iKFAuTzcoYixudWxsKSkKaWYoYz5h
+Lmxlbmd0aCl0aHJvdyBILmIoUC5PNyhjLG51bGwpKQpyZXR1cm4gYS5zdWJzdHJpbmcoYixjKX0sCkc6
+ZnVuY3Rpb24oYSxiKXtyZXR1cm4gdGhpcy5OaihhLGIsbnVsbCl9LApoYzpmdW5jdGlvbihhKXtyZXR1
+cm4gYS50b0xvd2VyQ2FzZSgpfSwKYlM6ZnVuY3Rpb24oYSl7dmFyIHQscyxyLHE9YS50cmltKCkscD1x
+Lmxlbmd0aAppZihwPT09MClyZXR1cm4gcQppZih0aGlzLlcocSwwKT09PTEzMyl7dD1KLm1tKHEsMSkK
+aWYodD09PXApcmV0dXJuIiJ9ZWxzZSB0PTAKcz1wLTEKcj10aGlzLm0ocSxzKT09PTEzMz9KLmMxKHEs
+cyk6cAppZih0PT09MCYmcj09PXApcmV0dXJuIHEKcmV0dXJuIHEuc3Vic3RyaW5nKHQscil9LApJeDpm
+dW5jdGlvbihhLGIpe3ZhciB0LHMKaWYoMD49YilyZXR1cm4iIgppZihiPT09MXx8YS5sZW5ndGg9PT0w
+KXJldHVybiBhCmlmKGIhPT1iPj4+MCl0aHJvdyBILmIoQy5FcSkKZm9yKHQ9YSxzPSIiOyEwOyl7aWYo
+KGImMSk9PT0xKXM9dCtzCmI9Yj4+PjEKaWYoYj09PTApYnJlYWsKdCs9dH1yZXR1cm4gc30sClhVOmZ1
+bmN0aW9uKGEsYixjKXt2YXIgdAppZihjPDB8fGM+YS5sZW5ndGgpdGhyb3cgSC5iKFAuVEUoYywwLGEu
+bGVuZ3RoLG51bGwsbnVsbCkpCnQ9YS5pbmRleE9mKGIsYykKcmV0dXJuIHR9LApPWTpmdW5jdGlvbihh
+LGIpe3JldHVybiB0aGlzLlhVKGEsYiwwKX0sClBrOmZ1bmN0aW9uKGEsYixjKXt2YXIgdCxzCmlmKGM9
+PW51bGwpYz1hLmxlbmd0aAplbHNlIGlmKGM8MHx8Yz5hLmxlbmd0aCl0aHJvdyBILmIoUC5URShjLDAs
+YS5sZW5ndGgsbnVsbCxudWxsKSkKdD1iLmxlbmd0aApzPWEubGVuZ3RoCmlmKGMrdD5zKWM9cy10CnJl
+dHVybiBhLmxhc3RJbmRleE9mKGIsYyl9LApjbjpmdW5jdGlvbihhLGIpe3JldHVybiB0aGlzLlBrKGEs
+YixudWxsKX0sCklzOmZ1bmN0aW9uKGEsYixjKXt2YXIgdD1hLmxlbmd0aAppZihjPnQpdGhyb3cgSC5i
+KFAuVEUoYywwLHQsbnVsbCxudWxsKSkKcmV0dXJuIEgubTIoYSxiLGMpfSwKdGc6ZnVuY3Rpb24oYSxi
+KXtyZXR1cm4gdGhpcy5JcyhhLGIsMCl9LAp3OmZ1bmN0aW9uKGEpe3JldHVybiBhfSwKZ2lPOmZ1bmN0
+aW9uKGEpe3ZhciB0LHMscgpmb3IodD1hLmxlbmd0aCxzPTAscj0wO3I8dDsrK3Ipe3M9NTM2ODcwOTEx
+JnMrYS5jaGFyQ29kZUF0KHIpCnM9NTM2ODcwOTExJnMrKCg1MjQyODcmcyk8PDEwKQpzXj1zPj42fXM9
+NTM2ODcwOTExJnMrKCg2NzEwODg2MyZzKTw8MykKc149cz4+MTEKcmV0dXJuIDUzNjg3MDkxMSZzKygo
+MTYzODMmcyk8PDE1KX0sCmdBOmZ1bmN0aW9uKGEpe3JldHVybiBhLmxlbmd0aH0sCnE6ZnVuY3Rpb24o
+YSxiKXtILnVQKGIpCmlmKGI+PWEubGVuZ3RofHwhMSl0aHJvdyBILmIoSC5IWShhLGIpKQpyZXR1cm4g
+YVtiXX0sCiRpdlg6MSwKJGlxVToxfQpILm5kLnByb3RvdHlwZT17Cnc6ZnVuY3Rpb24oYSl7dmFyIHQ9
+IkxhdGVJbml0aWFsaXphdGlvbkVycm9yOiAiK3RoaXMuYQpyZXR1cm4gdH19CkgucWoucHJvdG90eXBl
+PXsKZ0E6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuYS5sZW5ndGh9LApxOmZ1bmN0aW9uKGEsYil7cmV0
+dXJuIEMueEIubSh0aGlzLmEsSC51UChiKSl9fQpILmJRLnByb3RvdHlwZT17fQpILmFMLnByb3RvdHlw
+ZT17CmdrejpmdW5jdGlvbihhKXt2YXIgdD10aGlzCnJldHVybiBuZXcgSC5hNyh0LHQuZ0EodCksSC5M
+aCh0KS5DKCJhNzxhTC5FPiIpKX0sCnpWOmZ1bmN0aW9uKGEsYil7dmFyIHQscyxyLHE9dGhpcyxwPXEu
+Z0EocSkKaWYoYi5sZW5ndGghPT0wKXtpZihwPT09MClyZXR1cm4iIgp0PUguRWoocS5FKDAsMCkpCmlm
+KHAhPT1xLmdBKHEpKXRocm93IEguYihQLmE0KHEpKQpmb3Iocz10LHI9MTtyPHA7KytyKXtzPXMrYitI
+LkVqKHEuRSgwLHIpKQppZihwIT09cS5nQShxKSl0aHJvdyBILmIoUC5hNChxKSl9cmV0dXJuIHMuY2hh
+ckNvZGVBdCgwKT09MD9zOnN9ZWxzZXtmb3Iocj0wLHM9IiI7cjxwOysrcil7cys9SC5FaihxLkUoMCxy
 KSkKaWYocCE9PXEuZ0EocSkpdGhyb3cgSC5iKFAuYTQocSkpfXJldHVybiBzLmNoYXJDb2RlQXQoMCk9
-PTA/czpzfWVsc2V7Zm9yKHI9MCxzPSIiO3I8cDsrK3Ipe3MrPUguZChxLkUoMCxyKSkKaWYocCE9PXEu
-Z0EocSkpdGhyb3cgSC5iKFAuYTQocSkpfXJldHVybiBzLmNoYXJDb2RlQXQoMCk9PTA/czpzfX0sCmV2
-OmZ1bmN0aW9uKGEsYil7cmV0dXJuIHRoaXMuR0coMCxILkxoKHRoaXMpLkMoImEyKGFMLkUpIikuYihi
-KSl9LApFMjpmdW5jdGlvbihhLGIsYyl7dmFyIHQ9SC5MaCh0aGlzKQpyZXR1cm4gbmV3IEguQTgodGhp
-cyx0LktxKGMpLkMoIjEoYUwuRSkiKS5iKGIpLHQuQygiQDxhTC5FPiIpLktxKGMpLkMoIkE4PDEsMj4i
-KSl9fQpILm5ILnByb3RvdHlwZT17CmdVRDpmdW5jdGlvbigpe3ZhciB0PUouSG0odGhpcy5hKSxzPXRo
-aXMuYwppZihzPT1udWxsfHxzPnQpcmV0dXJuIHQKcmV0dXJuIHN9LApnQXM6ZnVuY3Rpb24oKXt2YXIg
-dD1KLkhtKHRoaXMuYSkscz10aGlzLmIKaWYocz50KXJldHVybiB0CnJldHVybiBzfSwKZ0E6ZnVuY3Rp
-b24oYSl7dmFyIHQscz1KLkhtKHRoaXMuYSkscj10aGlzLmIKaWYocj49cylyZXR1cm4gMAp0PXRoaXMu
-YwppZih0PT1udWxsfHx0Pj1zKXJldHVybiBzLXIKaWYodHlwZW9mIHQhPT0ibnVtYmVyIilyZXR1cm4g
-dC5ITigpCnJldHVybiB0LXJ9LApFOmZ1bmN0aW9uKGEsYil7dmFyIHQscz10aGlzLHI9cy5nQXMoKSti
-CmlmKGI+PTApe3Q9cy5nVUQoKQppZih0eXBlb2YgdCE9PSJudW1iZXIiKXJldHVybiBILnBZKHQpCnQ9
-cj49dH1lbHNlIHQ9ITAKaWYodCl0aHJvdyBILmIoUC5DZihiLHMsImluZGV4IixudWxsLG51bGwpKQpy
-ZXR1cm4gSi5HQShzLmEscil9fQpILmE3LnByb3RvdHlwZT17CmdsOmZ1bmN0aW9uKCl7cmV0dXJuIHRo
-aXMuZH0sCkY6ZnVuY3Rpb24oKXt2YXIgdCxzPXRoaXMscj1zLmEscT1KLlU2KHIpLHA9cS5nQShyKQpp
-ZihzLmIhPT1wKXRocm93IEguYihQLmE0KHIpKQp0PXMuYwppZih0Pj1wKXtzLnNJKG51bGwpCnJldHVy
-biExfXMuc0kocS5FKHIsdCkpOysrcy5jCnJldHVybiEwfSwKc0k6ZnVuY3Rpb24oYSl7dGhpcy5kPXRo
-aXMuJHRpLmQuYihhKX0sCiRpQW46MX0KSC5pMS5wcm90b3R5cGU9ewpna3o6ZnVuY3Rpb24oYSl7dmFy
-IHQ9SC5MaCh0aGlzKQpyZXR1cm4gbmV3IEguTUgoSi5JVCh0aGlzLmEpLHRoaXMuYix0LkMoIkA8MT4i
-KS5LcSh0LmNoWzFdKS5DKCJNSDwxLDI+IikpfSwKZ0E6ZnVuY3Rpb24oYSl7cmV0dXJuIEouSG0odGhp
-cy5hKX19CkgueHkucHJvdG90eXBlPXskaWJROjF9CkguTUgucHJvdG90eXBlPXsKRjpmdW5jdGlvbigp
-e3ZhciB0PXRoaXMscz10LmIKaWYocy5GKCkpe3Quc0kodC5jLiQxKHMuZ2woKSkpCnJldHVybiEwfXQu
-c0kobnVsbCkKcmV0dXJuITF9LApnbDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmF9LApzSTpmdW5jdGlv
-bihhKXt0aGlzLmE9dGhpcy4kdGkuY2hbMV0uYihhKX19CkguQTgucHJvdG90eXBlPXsKZ0E6ZnVuY3Rp
-b24oYSl7cmV0dXJuIEouSG0odGhpcy5hKX0sCkU6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gdGhpcy5iLiQx
-KEouR0EodGhpcy5hLGIpKX19CkguVTUucHJvdG90eXBlPXsKZ2t6OmZ1bmN0aW9uKGEpe3JldHVybiBu
-ZXcgSC5TTyhKLklUKHRoaXMuYSksdGhpcy5iLHRoaXMuJHRpLkMoIlNPPDE+IikpfX0KSC5TTy5wcm90
-b3R5cGU9ewpGOmZ1bmN0aW9uKCl7dmFyIHQscwpmb3IodD10aGlzLmEscz10aGlzLmI7dC5GKCk7KWlm
-KEgub1Qocy4kMSh0LmdsKCkpKSlyZXR1cm4hMApyZXR1cm4hMX0sCmdsOmZ1bmN0aW9uKCl7cmV0dXJu
-IHRoaXMuYS5nbCgpfX0KSC5TVS5wcm90b3R5cGU9e30KSC5SZS5wcm90b3R5cGU9ewpZOmZ1bmN0aW9u
-KGEsYixjKXtILkxoKHRoaXMpLkMoIlJlLkUiKS5iKGMpCnRocm93IEguYihQLkw0KCJDYW5ub3QgbW9k
-aWZ5IGFuIHVubW9kaWZpYWJsZSBsaXN0IikpfX0KSC5YQy5wcm90b3R5cGU9e30KSC53di5wcm90b3R5
-cGU9ewpnaU86ZnVuY3Rpb24oYSl7dmFyIHQ9dGhpcy5faGFzaENvZGUKaWYodCE9bnVsbClyZXR1cm4g
-dAp0PTUzNjg3MDkxMSY2NjQ1OTcqSi5oZih0aGlzLmEpCnRoaXMuX2hhc2hDb2RlPXQKcmV0dXJuIHR9
-LAp3OmZ1bmN0aW9uKGEpe3JldHVybidTeW1ib2woIicrSC5kKHRoaXMuYSkrJyIpJ30sCkROOmZ1bmN0
-aW9uKGEsYil7aWYoYj09bnVsbClyZXR1cm4hMQpyZXR1cm4gYiBpbnN0YW5jZW9mIEgud3YmJnRoaXMu
-YT09Yi5hfSwKJGlHRDoxfQpILlBELnByb3RvdHlwZT17fQpILldVLnByb3RvdHlwZT17Cnc6ZnVuY3Rp
-b24oYSl7cmV0dXJuIFAubk8odGhpcyl9LApZOmZ1bmN0aW9uKGEsYixjKXt2YXIgdD1ILkxoKHRoaXMp
-CnQuZC5iKGIpCnQuY2hbMV0uYihjKQpyZXR1cm4gSC5kYygpfSwKZ1B1OmZ1bmN0aW9uKGEpe3JldHVy
-biB0aGlzLnE0KGEsSC5MaCh0aGlzKS5DKCJOMzwxLDI+IikpfSwKcTQ6ZnVuY3Rpb24oYSxiKXt2YXIg
-dD10aGlzCnJldHVybiBQLmwwKGZ1bmN0aW9uKCl7dmFyIHM9YQp2YXIgcj0wLHE9MSxwLG8sbixtCnJl
-dHVybiBmdW5jdGlvbiAkYXN5bmMkZ1B1KGMsZCl7aWYoYz09PTEpe3A9ZApyPXF9d2hpbGUodHJ1ZSlz
-d2l0Y2gocil7Y2FzZSAwOm89dC5nVigpLG89by5na3oobyksbj1ILkxoKHQpLG49bi5DKCJAPDE+Iiku
-S3Eobi5jaFsxXSkuQygiTjM8MSwyPiIpCmNhc2UgMjppZighby5GKCkpe3I9MwpicmVha31tPW8uZ2wo
-KQpyPTQKcmV0dXJuIG5ldyBQLk4zKG0sdC5xKDAsbSksbikKY2FzZSA0OnI9MgpicmVhawpjYXNlIDM6
-cmV0dXJuIFAuVGgoKQpjYXNlIDE6cmV0dXJuIFAuWW0ocCl9fX0sYil9LAokaVowOjF9CkguTFAucHJv
-dG90eXBlPXsKZ0E6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuYX0sCng0OmZ1bmN0aW9uKGEpe2lmKHR5
-cGVvZiBhIT0ic3RyaW5nIilyZXR1cm4hMQppZigiX19wcm90b19fIj09PWEpcmV0dXJuITEKcmV0dXJu
-IHRoaXMuYi5oYXNPd25Qcm9wZXJ0eShhKX0sCnE6ZnVuY3Rpb24oYSxiKXtpZighdGhpcy54NChiKSly
-ZXR1cm4gbnVsbApyZXR1cm4gdGhpcy5EKGIpfSwKRDpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5iW0gu
-eShhKV19LApLOmZ1bmN0aW9uKGEsYil7dmFyIHQscyxyLHEscD1ILkxoKHRoaXMpCnAuQygifigxLDIp
-IikuYihiKQp0PXRoaXMuYwpmb3Iocz10Lmxlbmd0aCxwPXAuY2hbMV0scj0wO3I8czsrK3Ipe3E9dFty
-XQpiLiQyKHEscC5iKHRoaXMuRChxKSkpfX0sCmdWOmZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBILlhSKHRo
-aXMsSC5MaCh0aGlzKS5DKCJYUjwxPiIpKX19CkguWFIucHJvdG90eXBlPXsKZ2t6OmZ1bmN0aW9uKGEp
-e3ZhciB0PXRoaXMuYS5jCnJldHVybiBuZXcgSi5tMSh0LHQubGVuZ3RoLEgudDYodCkuQygibTE8MT4i
-KSl9LApnQTpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5hLmMubGVuZ3RofX0KSC5MSS5wcm90b3R5cGU9
-ewpnV2E6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLmEKcmV0dXJuIHR9LApnbmQ6ZnVuY3Rpb24oKXt2YXIg
-dCxzLHIscSxwPXRoaXMKaWYocC5jPT09MSlyZXR1cm4gQy5kbgp0PXAuZApzPXQubGVuZ3RoLXAuZS5s
-ZW5ndGgtcC5mCmlmKHM9PT0wKXJldHVybiBDLmRuCnI9W10KZm9yKHE9MDtxPHM7KytxKXtpZihxPj10
-Lmxlbmd0aClyZXR1cm4gSC5PSCh0LHEpCnIucHVzaCh0W3FdKX1yZXR1cm4gSi56QyhyKX0sCmdWbTpm
-dW5jdGlvbigpe3ZhciB0LHMscixxLHAsbyxuLG0sbD10aGlzCmlmKGwuYyE9PTApcmV0dXJuIEMuRHgK
-dD1sLmUKcz10Lmxlbmd0aApyPWwuZApxPXIubGVuZ3RoLXMtbC5mCmlmKHM9PT0wKXJldHVybiBDLkR4
-CnA9bmV3IEguTjUodS5lbykKZm9yKG89MDtvPHM7KytvKXtpZihvPj10Lmxlbmd0aClyZXR1cm4gSC5P
-SCh0LG8pCm49dFtvXQptPXErbwppZihtPDB8fG0+PXIubGVuZ3RoKXJldHVybiBILk9IKHIsbSkKcC5Z
-KDAsbmV3IEgud3YobiksclttXSl9cmV0dXJuIG5ldyBILlBEKHAsdS5nRil9LAokaXZROjF9CkguQ2ou
-cHJvdG90eXBlPXsKJDI6ZnVuY3Rpb24oYSxiKXt2YXIgdApILnkoYSkKdD10aGlzLmEKdC5iPXQuYisi
-JCIrSC5kKGEpCkMuTm0uaSh0aGlzLmIsYSkKQy5ObS5pKHRoaXMuYyxiKTsrK3QuYX0sCiRTOjEzfQpI
-LmY5LnByb3RvdHlwZT17CnFTOmZ1bmN0aW9uKGEpe3ZhciB0LHMscj10aGlzLHE9bmV3IFJlZ0V4cChy
-LmEpLmV4ZWMoYSkKaWYocT09bnVsbClyZXR1cm4gbnVsbAp0PU9iamVjdC5jcmVhdGUobnVsbCkKcz1y
-LmIKaWYocyE9PS0xKXQuYXJndW1lbnRzPXFbcysxXQpzPXIuYwppZihzIT09LTEpdC5hcmd1bWVudHNF
-eHByPXFbcysxXQpzPXIuZAppZihzIT09LTEpdC5leHByPXFbcysxXQpzPXIuZQppZihzIT09LTEpdC5t
-ZXRob2Q9cVtzKzFdCnM9ci5mCmlmKHMhPT0tMSl0LnJlY2VpdmVyPXFbcysxXQpyZXR1cm4gdH19Ckgu
-VzAucHJvdG90eXBlPXsKdzpmdW5jdGlvbihhKXt2YXIgdD10aGlzLmIKaWYodD09bnVsbClyZXR1cm4i
-Tm9TdWNoTWV0aG9kRXJyb3I6ICIrSC5kKHRoaXMuYSkKcmV0dXJuIk5vU3VjaE1ldGhvZEVycm9yOiBt
-ZXRob2Qgbm90IGZvdW5kOiAnIit0KyInIG9uIG51bGwifX0KSC5hei5wcm90b3R5cGU9ewp3OmZ1bmN0
-aW9uKGEpe3ZhciB0LHM9dGhpcyxyPSJOb1N1Y2hNZXRob2RFcnJvcjogbWV0aG9kIG5vdCBmb3VuZDog
-JyIscT1zLmIKaWYocT09bnVsbClyZXR1cm4iTm9TdWNoTWV0aG9kRXJyb3I6ICIrSC5kKHMuYSkKdD1z
-LmMKaWYodD09bnVsbClyZXR1cm4gcitxKyInICgiK0guZChzLmEpKyIpIgpyZXR1cm4gcitxKyInIG9u
-ICciK3QrIicgKCIrSC5kKHMuYSkrIikifX0KSC52Vi5wcm90b3R5cGU9ewp3OmZ1bmN0aW9uKGEpe3Zh
-ciB0PXRoaXMuYQpyZXR1cm4gdC5sZW5ndGg9PT0wPyJFcnJvciI6IkVycm9yOiAiK3R9fQpILmJxLnBy
-b3RvdHlwZT17fQpILkFtLnByb3RvdHlwZT17CiQxOmZ1bmN0aW9uKGEpe2lmKHUuYlUuYyhhKSlpZihh
-LiR0aHJvd25Kc0Vycm9yPT1udWxsKWEuJHRocm93bkpzRXJyb3I9dGhpcy5hCnJldHVybiBhfSwKJFM6
-NH0KSC5YTy5wcm90b3R5cGU9ewp3OmZ1bmN0aW9uKGEpe3ZhciB0LHM9dGhpcy5iCmlmKHMhPW51bGwp
-cmV0dXJuIHMKcz10aGlzLmEKdD1zIT09bnVsbCYmdHlwZW9mIHM9PT0ib2JqZWN0Ij9zLnN0YWNrOm51
-bGwKcmV0dXJuIHRoaXMuYj10PT1udWxsPyIiOnR9LAokaUd6OjF9CkguVHAucHJvdG90eXBlPXsKdzpm
-dW5jdGlvbihhKXt2YXIgdD10aGlzLmNvbnN0cnVjdG9yLHM9dD09bnVsbD9udWxsOnQubmFtZQpyZXR1
-cm4iQ2xvc3VyZSAnIitILk5RKHM9PW51bGw/InVua25vd24iOnMpKyInIn0sCiRpRUg6MSwKZ1FsOmZ1
-bmN0aW9uKCl7cmV0dXJuIHRoaXN9LAokQzoiJDEiLAokUjoxLAokRDpudWxsfQpILmxjLnByb3RvdHlw
-ZT17fQpILnp4LnByb3RvdHlwZT17Cnc6ZnVuY3Rpb24oYSl7dmFyIHQ9dGhpcy4kc3RhdGljX25hbWUK
-aWYodD09bnVsbClyZXR1cm4iQ2xvc3VyZSBvZiB1bmtub3duIHN0YXRpYyBtZXRob2QiCnJldHVybiJD
-bG9zdXJlICciK0guTlEodCkrIicifX0KSC5yVC5wcm90b3R5cGU9ewpETjpmdW5jdGlvbihhLGIpe3Zh
-ciB0PXRoaXMKaWYoYj09bnVsbClyZXR1cm4hMQppZih0PT09YilyZXR1cm4hMAppZighKGIgaW5zdGFu
-Y2VvZiBILnJUKSlyZXR1cm4hMQpyZXR1cm4gdC5hPT09Yi5hJiZ0LmI9PT1iLmImJnQuYz09PWIuY30s
-CmdpTzpmdW5jdGlvbihhKXt2YXIgdCxzPXRoaXMuYwppZihzPT1udWxsKXQ9SC5lUSh0aGlzLmEpCmVs
-c2UgdD10eXBlb2YgcyE9PSJvYmplY3QiP0ouaGYocyk6SC5lUShzKQpyZXR1cm4odF5ILmVRKHRoaXMu
-YikpPj4+MH0sCnc6ZnVuY3Rpb24oYSl7dmFyIHQ9dGhpcy5jCmlmKHQ9PW51bGwpdD10aGlzLmEKcmV0
-dXJuIkNsb3N1cmUgJyIrSC5kKHRoaXMuZCkrIicgb2YgIisoIkluc3RhbmNlIG9mICciK0guZChILk0o
-dCkpKyInIil9fQpILkVxLnByb3RvdHlwZT17Cnc6ZnVuY3Rpb24oYSl7cmV0dXJuIlJ1bnRpbWVFcnJv
-cjogIitILmQodGhpcy5hKX19Ckgua1kucHJvdG90eXBlPXsKdzpmdW5jdGlvbihhKXtyZXR1cm4iQXNz
-ZXJ0aW9uIGZhaWxlZDogIitQLnAodGhpcy5hKX19CkguTjUucHJvdG90eXBlPXsKZ0E6ZnVuY3Rpb24o
-YSl7cmV0dXJuIHRoaXMuYX0sCmdWOmZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBILmk1KHRoaXMsSC5MaCh0
-aGlzKS5DKCJpNTwxPiIpKX0sCng0OmZ1bmN0aW9uKGEpe3ZhciB0LHMKaWYodHlwZW9mIGE9PSJzdHJp
-bmciKXt0PXRoaXMuYgppZih0PT1udWxsKXJldHVybiExCnJldHVybiB0aGlzLlh1KHQsYSl9ZWxzZXtz
-PXRoaXMuQ1goYSkKcmV0dXJuIHN9fSwKQ1g6ZnVuY3Rpb24oYSl7dmFyIHQ9dGhpcy5kCmlmKHQ9PW51
-bGwpcmV0dXJuITEKcmV0dXJuIHRoaXMuRmgodGhpcy5CdCh0LEouaGYoYSkmMHgzZmZmZmZmKSxhKT49
-MH0sCnE6ZnVuY3Rpb24oYSxiKXt2YXIgdCxzLHIscSxwPXRoaXMsbz1udWxsCmlmKHR5cGVvZiBiPT0i
-c3RyaW5nIil7dD1wLmIKaWYodD09bnVsbClyZXR1cm4gbwpzPXAuajIodCxiKQpyPXM9PW51bGw/bzpz
-LmIKcmV0dXJuIHJ9ZWxzZSBpZih0eXBlb2YgYj09Im51bWJlciImJihiJjB4M2ZmZmZmZik9PT1iKXtx
-PXAuYwppZihxPT1udWxsKXJldHVybiBvCnM9cC5qMihxLGIpCnI9cz09bnVsbD9vOnMuYgpyZXR1cm4g
-cn1lbHNlIHJldHVybiBwLmFhKGIpfSwKYWE6ZnVuY3Rpb24oYSl7dmFyIHQscyxyPXRoaXMuZAppZihy
-PT1udWxsKXJldHVybiBudWxsCnQ9dGhpcy5CdChyLEouaGYoYSkmMHgzZmZmZmZmKQpzPXRoaXMuRmgo
-dCxhKQppZihzPDApcmV0dXJuIG51bGwKcmV0dXJuIHRbc10uYn0sClk6ZnVuY3Rpb24oYSxiLGMpe3Zh
-ciB0LHMscixxLHAsbyxuPXRoaXMsbT1ILkxoKG4pCm0uZC5iKGIpCm0uY2hbMV0uYihjKQppZih0eXBl
-b2YgYj09InN0cmluZyIpe3Q9bi5iCm4uRUgodD09bnVsbD9uLmI9bi56SygpOnQsYixjKX1lbHNlIGlm
-KHR5cGVvZiBiPT0ibnVtYmVyIiYmKGImMHgzZmZmZmZmKT09PWIpe3M9bi5jCm4uRUgocz09bnVsbD9u
-LmM9bi56SygpOnMsYixjKX1lbHNle3I9bi5kCmlmKHI9PW51bGwpcj1uLmQ9bi56SygpCnE9Si5oZihi
-KSYweDNmZmZmZmYKcD1uLkJ0KHIscSkKaWYocD09bnVsbCluLkVJKHIscSxbbi5IbihiLGMpXSkKZWxz
-ZXtvPW4uRmgocCxiKQppZihvPj0wKXBbb10uYj1jCmVsc2UgcC5wdXNoKG4uSG4oYixjKSl9fX0sCks6
-ZnVuY3Rpb24oYSxiKXt2YXIgdCxzLHI9dGhpcwpILkxoKHIpLkMoIn4oMSwyKSIpLmIoYikKdD1yLmUK
-cz1yLnIKZm9yKDt0IT1udWxsOyl7Yi4kMih0LmEsdC5iKQppZihzIT09ci5yKXRocm93IEguYihQLmE0
-KHIpKQp0PXQuY319LApFSDpmdW5jdGlvbihhLGIsYyl7dmFyIHQscz10aGlzLHI9SC5MaChzKQpyLmQu
-YihiKQpyLmNoWzFdLmIoYykKdD1zLmoyKGEsYikKaWYodD09bnVsbClzLkVJKGEsYixzLkhuKGIsYykp
-CmVsc2UgdC5iPWN9LAprczpmdW5jdGlvbigpe3RoaXMucj10aGlzLnIrMSY2NzEwODg2M30sCkhuOmZ1
-bmN0aW9uKGEsYil7dmFyIHQscz10aGlzLHI9SC5MaChzKSxxPW5ldyBILmRiKHIuZC5iKGEpLHIuY2hb
-MV0uYihiKSkKaWYocy5lPT1udWxsKXMuZT1zLmY9cQplbHNle3Q9cy5mCnEuZD10CnMuZj10LmM9cX0r
-K3MuYQpzLmtzKCkKcmV0dXJuIHF9LApGaDpmdW5jdGlvbihhLGIpe3ZhciB0LHMKaWYoYT09bnVsbCly
-ZXR1cm4tMQp0PWEubGVuZ3RoCmZvcihzPTA7czx0OysrcylpZihKLlJNKGFbc10uYSxiKSlyZXR1cm4g
-cwpyZXR1cm4tMX0sCnc6ZnVuY3Rpb24oYSl7cmV0dXJuIFAubk8odGhpcyl9LApqMjpmdW5jdGlvbihh
-LGIpe3JldHVybiBhW2JdfSwKQnQ6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gYVtiXX0sCkVJOmZ1bmN0aW9u
-KGEsYixjKXthW2JdPWN9LApybjpmdW5jdGlvbihhLGIpe2RlbGV0ZSBhW2JdfSwKWHU6ZnVuY3Rpb24o
-YSxiKXtyZXR1cm4gdGhpcy5qMihhLGIpIT1udWxsfSwKeks6ZnVuY3Rpb24oKXt2YXIgdD0iPG5vbi1p
-ZGVudGlmaWVyLWtleT4iLHM9T2JqZWN0LmNyZWF0ZShudWxsKQp0aGlzLkVJKHMsdCxzKQp0aGlzLnJu
-KHMsdCkKcmV0dXJuIHN9LAokaUZvOjF9CkguZGIucHJvdG90eXBlPXt9CkguaTUucHJvdG90eXBlPXsK
-Z0E6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuYS5hfSwKZ2t6OmZ1bmN0aW9uKGEpe3ZhciB0PXRoaXMu
-YSxzPW5ldyBILk42KHQsdC5yLHRoaXMuJHRpLkMoIk42PDE+IikpCnMuYz10LmUKcmV0dXJuIHN9LAp0
-ZzpmdW5jdGlvbihhLGIpe3JldHVybiB0aGlzLmEueDQoYil9fQpILk42LnByb3RvdHlwZT17CmdsOmZ1
-bmN0aW9uKCl7cmV0dXJuIHRoaXMuZH0sCkY6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLHM9dC5hCmlmKHQu
-YiE9PXMucil0aHJvdyBILmIoUC5hNChzKSkKZWxzZXtzPXQuYwppZihzPT1udWxsKXt0LnNxWShudWxs
-KQpyZXR1cm4hMX1lbHNle3Quc3FZKHMuYSkKdC5jPXQuYy5jCnJldHVybiEwfX19LApzcVk6ZnVuY3Rp
-b24oYSl7dGhpcy5kPXRoaXMuJHRpLmQuYihhKX0sCiRpQW46MX0KSC5kQy5wcm90b3R5cGU9ewokMTpm
-dW5jdGlvbihhKXtyZXR1cm4gdGhpcy5hKGEpfSwKJFM6NH0KSC53Ti5wcm90b3R5cGU9ewokMjpmdW5j
-dGlvbihhLGIpe3JldHVybiB0aGlzLmEoYSxiKX0sCiRTOjQ3fQpILlZYLnByb3RvdHlwZT17CiQxOmZ1
-bmN0aW9uKGEpe3JldHVybiB0aGlzLmEoSC55KGEpKX0sCiRTOjQyfQpILlZSLnByb3RvdHlwZT17Cnc6
-ZnVuY3Rpb24oYSl7cmV0dXJuIlJlZ0V4cC8iK3RoaXMuYSsiLyIrdGhpcy5iLmZsYWdzfSwKZ0hjOmZ1
-bmN0aW9uKCl7dmFyIHQ9dGhpcyxzPXQuYwppZihzIT1udWxsKXJldHVybiBzCnM9dC5iCnJldHVybiB0
-LmM9SC52NCh0LmEscy5tdWx0aWxpbmUsIXMuaWdub3JlQ2FzZSxzLnVuaWNvZGUscy5kb3RBbGwsITAp
-fSwKZGQ6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gbmV3IEguS1codGhpcyxiLDApfSwKVVo6ZnVuY3Rpb24o
-YSxiKXt2YXIgdCxzPXRoaXMuZ0hjKCkKcy5sYXN0SW5kZXg9Ygp0PXMuZXhlYyhhKQppZih0PT1udWxs
-KXJldHVybiBudWxsCnJldHVybiBuZXcgSC5FSyh0KX0sCiRpdlg6MSwKJGl3TDoxfQpILkVLLnByb3Rv
-dHlwZT17CnE6ZnVuY3Rpb24oYSxiKXt2YXIgdApILlNjKGIpCnQ9dGhpcy5iCmlmKGI+PXQubGVuZ3Ro
-KXJldHVybiBILk9IKHQsYikKcmV0dXJuIHRbYl19LAokaU9kOjEsCiRpaWI6MX0KSC5LVy5wcm90b3R5
-cGU9ewpna3o6ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyBILlBiKHRoaXMuYSx0aGlzLmIsdGhpcy5jKX19
-CkguUGIucHJvdG90eXBlPXsKZ2w6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5kfSwKRjpmdW5jdGlvbigp
-e3ZhciB0LHMscixxLHA9dGhpcyxvPXAuYgppZihvPT1udWxsKXJldHVybiExCnQ9cC5jCmlmKHQ8PW8u
-bGVuZ3RoKXtzPXAuYQpyPXMuVVoobyx0KQppZihyIT1udWxsKXtwLmQ9cgpvPXIuYgp0PW8uaW5kZXgK
-cT10K29bMF0ubGVuZ3RoCmlmKHQ9PT1xKXtpZihzLmIudW5pY29kZSl7bz1wLmMKdD1vKzEKcz1wLmIK
-aWYodDxzLmxlbmd0aCl7bz1KLnJZKHMpLm0ocyxvKQppZihvPj01NTI5NiYmbzw9NTYzMTkpe289Qy54
-Qi5tKHMsdCkKbz1vPj01NjMyMCYmbzw9NTczNDN9ZWxzZSBvPSExfWVsc2Ugbz0hMX1lbHNlIG89ITEK
-cT0obz9xKzE6cSkrMX1wLmM9cQpyZXR1cm4hMH19cC5iPXAuZD1udWxsCnJldHVybiExfSwKJGlBbjox
-fQpILnRRLnByb3RvdHlwZT17CnE6ZnVuY3Rpb24oYSxiKXtILlNjKGIpCmlmKGIhPT0wKUgudmgoUC54
-KGIsbnVsbCkpCnJldHVybiB0aGlzLmN9LAokaU9kOjF9CkgudW4ucHJvdG90eXBlPXsKZ2t6OmZ1bmN0
-aW9uKGEpe3JldHVybiBuZXcgSC5TZCh0aGlzLmEsdGhpcy5iLHRoaXMuYyl9fQpILlNkLnByb3RvdHlw
-ZT17CkY6ZnVuY3Rpb24oKXt2YXIgdCxzLHI9dGhpcyxxPXIuYyxwPXIuYixvPXAubGVuZ3RoLG49ci5h
-LG09bi5sZW5ndGgKaWYocStvPm0pe3IuZD1udWxsCnJldHVybiExfXQ9bi5pbmRleE9mKHAscSkKaWYo
-dDwwKXtyLmM9bSsxCnIuZD1udWxsCnJldHVybiExfXM9dCtvCnIuZD1uZXcgSC50USh0LHApCnIuYz1z
-PT09ci5jP3MrMTpzCnJldHVybiEwfSwKZ2w6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5kfSwKJGlBbjox
-fQpILkVULnByb3RvdHlwZT17JGlFVDoxLCRpQVM6MX0KSC5iMC5wcm90b3R5cGU9ewpnQTpmdW5jdGlv
-bihhKXtyZXR1cm4gYS5sZW5ndGh9LAokaVhqOjF9CkguRGcucHJvdG90eXBlPXsKcTpmdW5jdGlvbihh
-LGIpe0guU2MoYikKSC5vZChiLGEsYS5sZW5ndGgpCnJldHVybiBhW2JdfSwKWTpmdW5jdGlvbihhLGIs
-Yyl7SC5JZyhjKQpILm9kKGIsYSxhLmxlbmd0aCkKYVtiXT1jfSwKJGliUToxLAokaWNYOjEsCiRpek06
-MX0KSC5QZy5wcm90b3R5cGU9ewpZOmZ1bmN0aW9uKGEsYixjKXtILlNjKGMpCkgub2QoYixhLGEubGVu
-Z3RoKQphW2JdPWN9LAokaWJROjEsCiRpY1g6MSwKJGl6TToxfQpILnhqLnByb3RvdHlwZT17CnE6ZnVu
-Y3Rpb24oYSxiKXtILlNjKGIpCkgub2QoYixhLGEubGVuZ3RoKQpyZXR1cm4gYVtiXX19CkguZEUucHJv
-dG90eXBlPXsKcTpmdW5jdGlvbihhLGIpe0guU2MoYikKSC5vZChiLGEsYS5sZW5ndGgpCnJldHVybiBh
-W2JdfX0KSC5aQS5wcm90b3R5cGU9ewpxOmZ1bmN0aW9uKGEsYil7SC5TYyhiKQpILm9kKGIsYSxhLmxl
-bmd0aCkKcmV0dXJuIGFbYl19fQpILndmLnByb3RvdHlwZT17CnE6ZnVuY3Rpb24oYSxiKXtILlNjKGIp
-Ckgub2QoYixhLGEubGVuZ3RoKQpyZXR1cm4gYVtiXX19CkguUHEucHJvdG90eXBlPXsKcTpmdW5jdGlv
-bihhLGIpe0guU2MoYikKSC5vZChiLGEsYS5sZW5ndGgpCnJldHVybiBhW2JdfX0KSC5lRS5wcm90b3R5
-cGU9ewpnQTpmdW5jdGlvbihhKXtyZXR1cm4gYS5sZW5ndGh9LApxOmZ1bmN0aW9uKGEsYil7SC5TYyhi
-KQpILm9kKGIsYSxhLmxlbmd0aCkKcmV0dXJuIGFbYl19fQpILlY2LnByb3RvdHlwZT17CmdBOmZ1bmN0
-aW9uKGEpe3JldHVybiBhLmxlbmd0aH0sCnE6ZnVuY3Rpb24oYSxiKXtILlNjKGIpCkgub2QoYixhLGEu
-bGVuZ3RoKQpyZXR1cm4gYVtiXX0sCiRpVjY6MSwKJGluNjoxfQpILlJHLnByb3RvdHlwZT17fQpILlZQ
-LnByb3RvdHlwZT17fQpILldCLnByb3RvdHlwZT17fQpILlpHLnByb3RvdHlwZT17fQpILkpjLnByb3Rv
-dHlwZT17CkM6ZnVuY3Rpb24oYSl7cmV0dXJuIEguY0Uodi50eXBlVW5pdmVyc2UsdGhpcyxhKX0sCktx
-OmZ1bmN0aW9uKGEpe3JldHVybiBILnY1KHYudHlwZVVuaXZlcnNlLHRoaXMsYSl9fQpILkcucHJvdG90
-eXBlPXt9CkgudTkucHJvdG90eXBlPXsKdzpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5hfX0KSC5oei5w
-cm90b3R5cGU9e30KSC5pTS5wcm90b3R5cGU9e30KUC50aC5wcm90b3R5cGU9ewokMTpmdW5jdGlvbihh
-KXt2YXIgdD10aGlzLmEscz10LmEKdC5hPW51bGwKcy4kMCgpfSwKJFM6MTJ9ClAuaGEucHJvdG90eXBl
-PXsKJDE6ZnVuY3Rpb24oYSl7dmFyIHQscwp0aGlzLmEuYT11Lk0uYihhKQp0PXRoaXMuYgpzPXRoaXMu
-Ywp0LmZpcnN0Q2hpbGQ/dC5yZW1vdmVDaGlsZChzKTp0LmFwcGVuZENoaWxkKHMpfSwKJFM6Mzd9ClAu
-VnMucHJvdG90eXBlPXsKJDA6ZnVuY3Rpb24oKXt0aGlzLmEuJDAoKX0sCiRDOiIkMCIsCiRSOjAsCiRT
-OjB9ClAuRnQucHJvdG90eXBlPXsKJDA6ZnVuY3Rpb24oKXt0aGlzLmEuJDAoKX0sCiRDOiIkMCIsCiRS
-OjAsCiRTOjB9ClAuVzMucHJvdG90eXBlPXsKQ1k6ZnVuY3Rpb24oYSxiKXtpZihzZWxmLnNldFRpbWVv
-dXQhPW51bGwpc2VsZi5zZXRUaW1lb3V0KEgudFIobmV3IFAueUgodGhpcyxiKSwwKSxhKQplbHNlIHRo
-cm93IEguYihQLkw0KCJgc2V0VGltZW91dCgpYCBub3QgZm91bmQuIikpfX0KUC55SC5wcm90b3R5cGU9
-ewokMDpmdW5jdGlvbigpe3RoaXMuYi4kMCgpfSwKJEM6IiQwIiwKJFI6MCwKJFM6Mn0KUC5paC5wcm90
-b3R5cGU9ewphTTpmdW5jdGlvbihhLGIpe3ZhciB0LHMscj10aGlzLiR0aQpyLkMoIjEvIikuYihiKQp0
-PSF0aGlzLmJ8fHIuQygiYjg8MT4iKS5jKGIpCnM9dGhpcy5hCmlmKHQpcy5YZihiKQplbHNlIHMuWDIo
-ci5kLmIoYikpfSwKdzA6ZnVuY3Rpb24oYSxiKXt2YXIgdD10aGlzLmEKaWYodGhpcy5iKXQuWkwoYSxi
-KQplbHNlIHQuTmsoYSxiKX19ClAuV00ucHJvdG90eXBlPXsKJDE6ZnVuY3Rpb24oYSl7cmV0dXJuIHRo
-aXMuYS4kMigwLGEpfSwKJFM6MjF9ClAuU1gucHJvdG90eXBlPXsKJDI6ZnVuY3Rpb24oYSxiKXt0aGlz
-LmEuJDIoMSxuZXcgSC5icShhLHUubC5iKGIpKSl9LAokQzoiJDIiLAokUjoyLAokUzoyNn0KUC5Hcy5w
-cm90b3R5cGU9ewokMjpmdW5jdGlvbihhLGIpe3RoaXMuYShILlNjKGEpLGIpfSwKJFM6Mjd9ClAuRnku
-cHJvdG90eXBlPXsKdzpmdW5jdGlvbihhKXtyZXR1cm4iSXRlcmF0aW9uTWFya2VyKCIrdGhpcy5iKyIs
-ICIrSC5kKHRoaXMuYSkrIikifX0KUC5HVi5wcm90b3R5cGU9ewpnbDpmdW5jdGlvbigpe3ZhciB0PXRo
-aXMuYwppZih0PT1udWxsKXJldHVybiB0aGlzLmIKcmV0dXJuIHRoaXMuJHRpLmQuYih0LmdsKCkpfSwK
-RjpmdW5jdGlvbigpe3ZhciB0LHMscixxLHA9dGhpcwpmb3IoOyEwOyl7dD1wLmMKaWYodCE9bnVsbClp
-Zih0LkYoKSlyZXR1cm4hMAplbHNlIHAuYz1udWxsCnM9ZnVuY3Rpb24oYSxiLGMpe3ZhciBvLG49Ygp3
-aGlsZSh0cnVlKXRyeXtyZXR1cm4gYShuLG8pfWNhdGNoKG0pe289bQpuPWN9fShwLmEsMCwxKQppZihz
-IGluc3RhbmNlb2YgUC5GeSl7cj1zLmIKaWYocj09PTIpe3Q9cC5kCmlmKHQ9PW51bGx8fHQubGVuZ3Ro
-PT09MCl7cC5zRUMobnVsbCkKcmV0dXJuITF9aWYoMD49dC5sZW5ndGgpcmV0dXJuIEguT0godCwtMSkK
-cC5hPXQucG9wKCkKY29udGludWV9ZWxzZXt0PXMuYQppZihyPT09Myl0aHJvdyB0CmVsc2V7cT1KLklU
-KHQpCmlmKHEgaW5zdGFuY2VvZiBQLkdWKXt0PXAuZAppZih0PT1udWxsKXQ9cC5kPVtdCkMuTm0uaSh0
-LHAuYSkKcC5hPXEuYQpjb250aW51ZX1lbHNle3AuYz1xCmNvbnRpbnVlfX19fWVsc2V7cC5zRUMocykK
-cmV0dXJuITB9fXJldHVybiExfSwKc0VDOmZ1bmN0aW9uKGEpe3RoaXMuYj10aGlzLiR0aS5kLmIoYSl9
-LAokaUFuOjF9ClAucTQucHJvdG90eXBlPXsKZ2t6OmZ1bmN0aW9uKGEpe3JldHVybiBuZXcgUC5HVih0
-aGlzLmEoKSx0aGlzLiR0aS5DKCJHVjwxPiIpKX19ClAuYjgucHJvdG90eXBlPXt9ClAuUGYucHJvdG90
-eXBlPXsKdzA6ZnVuY3Rpb24oYSxiKXt2YXIgdAppZihhPT1udWxsKWE9bmV3IFAubigpCnQ9dGhpcy5h
-CmlmKHQuYSE9PTApdGhyb3cgSC5iKFAuUFYoIkZ1dHVyZSBhbHJlYWR5IGNvbXBsZXRlZCIpKQp0Lk5r
-KGEsYil9LApwbTpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy53MChhLG51bGwpfX0KUC5aZi5wcm90b3R5
-cGU9ewphTTpmdW5jdGlvbihhLGIpe3ZhciB0CnRoaXMuJHRpLkMoIjEvIikuYihiKQp0PXRoaXMuYQpp
-Zih0LmEhPT0wKXRocm93IEguYihQLlBWKCJGdXR1cmUgYWxyZWFkeSBjb21wbGV0ZWQiKSkKdC5YZihi
-KX19ClAuRmUucHJvdG90eXBlPXsKSFI6ZnVuY3Rpb24oYSl7aWYoKHRoaXMuYyYxNSkhPT02KXJldHVy
-biEwCnJldHVybiB0aGlzLmIuYi5idih1LmFsLmIodGhpcy5kKSxhLmEsdS5jSix1LkspfSwKS3c6ZnVu
-Y3Rpb24oYSl7dmFyIHQ9dGhpcy5lLHM9dS56LHI9dS5LLHE9dGhpcy4kdGkuQygiMi8iKSxwPXRoaXMu
-Yi5iCmlmKHUuRi5jKHQpKXJldHVybiBxLmIocC5ycCh0LGEuYSxhLmIscyxyLHUubCkpCmVsc2UgcmV0
-dXJuIHEuYihwLmJ2KHUueS5iKHQpLGEuYSxzLHIpKX19ClAudnMucHJvdG90eXBlPXsKU3E6ZnVuY3Rp
-b24oYSxiLGMpe3ZhciB0LHMscixxPXRoaXMuJHRpCnEuS3EoYykuQygiMS8oMikiKS5iKGEpCnQ9JC5Y
-MwppZih0IT09Qy5OVSl7Yy5DKCJAPDAvPiIpLktxKHEuZCkuQygiMSgyKSIpLmIoYSkKaWYoYiE9bnVs
-bCliPVAuVkgoYix0KX1zPW5ldyBQLnZzKCQuWDMsYy5DKCJ2czwwPiIpKQpyPWI9PW51bGw/MTozCnRo
-aXMueGYobmV3IFAuRmUocyxyLGEsYixxLkMoIkA8MT4iKS5LcShjKS5DKCJGZTwxLDI+IikpKQpyZXR1
-cm4gc30sClc3OmZ1bmN0aW9uKGEsYil7cmV0dXJuIHRoaXMuU3EoYSxudWxsLGIpfSwKUWQ6ZnVuY3Rp
-b24oYSxiLGMpe3ZhciB0LHM9dGhpcy4kdGkKcy5LcShjKS5DKCIxLygyKSIpLmIoYSkKdD1uZXcgUC52
-cygkLlgzLGMuQygidnM8MD4iKSkKdGhpcy54ZihuZXcgUC5GZSh0LChiPT1udWxsPzE6Myl8MTYsYSxi
-LHMuQygiQDwxPiIpLktxKGMpLkMoIkZlPDEsMj4iKSkpCnJldHVybiB0fSwKT0E6ZnVuY3Rpb24oYSl7
-dmFyIHQscyxyCnUuYmYuYihudWxsKQp0PXRoaXMuJHRpCnM9JC5YMwpyPW5ldyBQLnZzKHMsdCkKaWYo
-cyE9PUMuTlUpYT1QLlZIKGEscykKdGhpcy54ZihuZXcgUC5GZShyLDIsbnVsbCxhLHQuQygiQDwxPiIp
-LktxKHQuZCkuQygiRmU8MSwyPiIpKSkKcmV0dXJuIHJ9LAp4ZjpmdW5jdGlvbihhKXt2YXIgdCxzPXRo
-aXMscj1zLmEKaWYocjw9MSl7YS5hPXUueC5iKHMuYykKcy5jPWF9ZWxzZXtpZihyPT09Mil7dD11Ll8u
-YihzLmMpCnI9dC5hCmlmKHI8NCl7dC54ZihhKQpyZXR1cm59cy5hPXIKcy5jPXQuY31QLlRrKG51bGws
-bnVsbCxzLmIsdS5NLmIobmV3IFAuZGEocyxhKSkpfX0sCmpROmZ1bmN0aW9uKGEpe3ZhciB0LHMscixx
-LHAsbz10aGlzLG49e30Kbi5hPWEKaWYoYT09bnVsbClyZXR1cm4KdD1vLmEKaWYodDw9MSl7cz11Lngu
-YihvLmMpCnI9by5jPWEKaWYocyE9bnVsbCl7Zm9yKDtxPXIuYSxxIT1udWxsO3I9cSk7ci5hPXN9fWVs
-c2V7aWYodD09PTIpe3A9dS5fLmIoby5jKQp0PXAuYQppZih0PDQpe3AualEoYSkKcmV0dXJufW8uYT10
-Cm8uYz1wLmN9bi5hPW8uTjgoYSkKUC5UayhudWxsLG51bGwsby5iLHUuTS5iKG5ldyBQLm9RKG4sbykp
-KX19LAphaDpmdW5jdGlvbigpe3ZhciB0PXUueC5iKHRoaXMuYykKdGhpcy5jPW51bGwKcmV0dXJuIHRo
-aXMuTjgodCl9LApOODpmdW5jdGlvbihhKXt2YXIgdCxzLHIKZm9yKHQ9YSxzPW51bGw7dCE9bnVsbDtz
-PXQsdD1yKXtyPXQuYQp0LmE9c31yZXR1cm4gc30sCkhIOmZ1bmN0aW9uKGEpe3ZhciB0LHM9dGhpcyxy
-PXMuJHRpCnIuQygiMS8iKS5iKGEpCmlmKHIuQygiYjg8MT4iKS5jKGEpKWlmKHIuYyhhKSlQLkE5KGEs
-cykKZWxzZSBQLmszKGEscykKZWxzZXt0PXMuYWgoKQpyLmQuYihhKQpzLmE9NApzLmM9YQpQLkhaKHMs
-dCl9fSwKWDI6ZnVuY3Rpb24oYSl7dmFyIHQscz10aGlzCnMuJHRpLmQuYihhKQp0PXMuYWgoKQpzLmE9
-NApzLmM9YQpQLkhaKHMsdCl9LApaTDpmdW5jdGlvbihhLGIpe3ZhciB0LHM9dGhpcwp1LmwuYihiKQp0
-PXMuYWgoKQpzLmE9OApzLmM9bmV3IFAuQ3coYSxiKQpQLkhaKHMsdCl9LApYZjpmdW5jdGlvbihhKXt2
-YXIgdD10aGlzLHM9dC4kdGkKcy5DKCIxLyIpLmIoYSkKaWYocy5DKCJiODwxPiIpLmMoYSkpe3QuY1Uo
-YSkKcmV0dXJufXQuYT0xClAuVGsobnVsbCxudWxsLHQuYix1Lk0uYihuZXcgUC5ySCh0LGEpKSl9LApj
-VTpmdW5jdGlvbihhKXt2YXIgdD10aGlzLHM9dC4kdGkKcy5DKCJiODwxPiIpLmIoYSkKaWYocy5jKGEp
-KXtpZihhLmE9PT04KXt0LmE9MQpQLlRrKG51bGwsbnVsbCx0LmIsdS5NLmIobmV3IFAuS0YodCxhKSkp
-fWVsc2UgUC5BOShhLHQpCnJldHVybn1QLmszKGEsdCl9LApOazpmdW5jdGlvbihhLGIpe3RoaXMuYT0x
-ClAuVGsobnVsbCxudWxsLHRoaXMuYix1Lk0uYihuZXcgUC5aTCh0aGlzLGEsYikpKX0sCiRpYjg6MX0K
-UC5kYS5wcm90b3R5cGU9ewokMDpmdW5jdGlvbigpe1AuSFoodGhpcy5hLHRoaXMuYil9LAokUzowfQpQ
-Lm9RLnByb3RvdHlwZT17CiQwOmZ1bmN0aW9uKCl7UC5IWih0aGlzLmIsdGhpcy5hLmEpfSwKJFM6MH0K
-UC5wVi5wcm90b3R5cGU9ewokMTpmdW5jdGlvbihhKXt2YXIgdD10aGlzLmEKdC5hPTAKdC5ISChhKX0s
-CiRTOjEyfQpQLlU3LnByb3RvdHlwZT17CiQyOmZ1bmN0aW9uKGEsYil7dS5sLmIoYikKdGhpcy5hLlpM
-KGEsYil9LAokMTpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy4kMihhLG51bGwpfSwKJEM6IiQyIiwKJEQ6
-ZnVuY3Rpb24oKXtyZXR1cm5bbnVsbF19LAokUzozMH0KUC52ci5wcm90b3R5cGU9ewokMDpmdW5jdGlv
-bigpe3RoaXMuYS5aTCh0aGlzLmIsdGhpcy5jKX0sCiRTOjB9ClAuckgucHJvdG90eXBlPXsKJDA6ZnVu
-Y3Rpb24oKXt2YXIgdD10aGlzLmEKdC5YMih0LiR0aS5kLmIodGhpcy5iKSl9LAokUzowfQpQLktGLnBy
-b3RvdHlwZT17CiQwOmZ1bmN0aW9uKCl7UC5BOSh0aGlzLmIsdGhpcy5hKX0sCiRTOjB9ClAuWkwucHJv
-dG90eXBlPXsKJDA6ZnVuY3Rpb24oKXt0aGlzLmEuWkwodGhpcy5iLHRoaXMuYyl9LAokUzowfQpQLlJU
-LnByb3RvdHlwZT17CiQwOmZ1bmN0aW9uKCl7dmFyIHQscyxyLHEscCxvLG49dGhpcyxtPW51bGwKdHJ5
-e3I9bi5jCm09ci5iLmIuenoodS5mTy5iKHIuZCksdS56KX1jYXRjaChxKXt0PUguUnUocSkKcz1ILnRz
-KHEpCmlmKG4uZCl7cj11Lm4uYihuLmEuYS5jKS5hCnA9dApwPXI9PW51bGw/cD09bnVsbDpyPT09cApy
-PXB9ZWxzZSByPSExCnA9bi5iCmlmKHIpcC5iPXUubi5iKG4uYS5hLmMpCmVsc2UgcC5iPW5ldyBQLkN3
-KHQscykKcC5hPSEwCnJldHVybn1pZih1LmMuYyhtKSl7aWYobSBpbnN0YW5jZW9mIFAudnMmJm0uYT49
-NCl7aWYobS5hPT09OCl7cj1uLmIKci5iPXUubi5iKG0uYykKci5hPSEwfXJldHVybn1vPW4uYS5hCnI9
-bi5iCnIuYj1tLlc3KG5ldyBQLmpaKG8pLHUueikKci5hPSExfX0sCiRTOjJ9ClAualoucHJvdG90eXBl
-PXsKJDE6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuYX0sCiRTOjMzfQpQLnJxLnByb3RvdHlwZT17CiQw
-OmZ1bmN0aW9uKCl7dmFyIHQscyxyLHEscCxvLG4sbT10aGlzCnRyeXtyPW0uYgpxPXIuJHRpCnA9cS5k
-Cm89cC5iKG0uYykKbS5hLmI9ci5iLmIuYnYocS5DKCIyLygxKSIpLmIoci5kKSxvLHEuQygiMi8iKSxw
-KX1jYXRjaChuKXt0PUguUnUobikKcz1ILnRzKG4pCnI9bS5hCnIuYj1uZXcgUC5Ddyh0LHMpCnIuYT0h
-MH19LAokUzoyfQpQLlJXLnByb3RvdHlwZT17CiQwOmZ1bmN0aW9uKCl7dmFyIHQscyxyLHEscCxvLG4s
-bSxsPXRoaXMKdHJ5e3Q9dS5uLmIobC5hLmEuYykKcT1sLmMKaWYoSC5vVChxLkhSKHQpKSYmcS5lIT1u
-dWxsKXtwPWwuYgpwLmI9cS5Ldyh0KQpwLmE9ITF9fWNhdGNoKG8pe3M9SC5SdShvKQpyPUgudHMobykK
-cT11Lm4uYihsLmEuYS5jKQpwPXEuYQpuPXMKbT1sLmIKaWYocD09bnVsbD9uPT1udWxsOnA9PT1uKW0u
-Yj1xCmVsc2UgbS5iPW5ldyBQLkN3KHMscikKbS5hPSEwfX0sCiRTOjJ9ClAuT00ucHJvdG90eXBlPXt9
-ClAucWgucHJvdG90eXBlPXsKZ0E6ZnVuY3Rpb24oYSl7dmFyIHQscyxyPXRoaXMscT17fSxwPW5ldyBQ
-LnZzKCQuWDMsdS5mSikKcS5hPTAKdD1ILkxoKHIpCnM9dC5DKCJ+KDEpIikuYihuZXcgUC5CNShxLHIp
-KQp1Lk0uYihuZXcgUC51TyhxLHApKQpXLkpFKHIuYSxyLmIscywhMSx0LmQpCnJldHVybiBwfX0KUC5C
-NS5wcm90b3R5cGU9ewokMTpmdW5jdGlvbihhKXtILkxoKHRoaXMuYikuZC5iKGEpOysrdGhpcy5hLmF9
-LAokUzpmdW5jdGlvbigpe3JldHVybiBILkxoKHRoaXMuYikuQygiYzgoMSkiKX19ClAudU8ucHJvdG90
-eXBlPXsKJDA6ZnVuY3Rpb24oKXt0aGlzLmIuSEgodGhpcy5hLmEpfSwKJFM6MH0KUC5NTy5wcm90b3R5
-cGU9e30KUC5rVC5wcm90b3R5cGU9e30KUC54SS5wcm90b3R5cGU9e30KUC5Ddy5wcm90b3R5cGU9ewp3
-OmZ1bmN0aW9uKGEpe3JldHVybiBILmQodGhpcy5hKX0sCiRpWFM6MX0KUC5tMC5wcm90b3R5cGU9eyRp
-SkI6MX0KUC5wSy5wcm90b3R5cGU9ewokMDpmdW5jdGlvbigpe3ZhciB0LHM9dGhpcy5hLHI9cy5hCnM9
-cj09bnVsbD9zLmE9bmV3IFAubigpOnIKcj10aGlzLmIKaWYocj09bnVsbCl0aHJvdyBILmIocykKdD1I
-LmIocykKdC5zdGFjaz1yLncoMCkKdGhyb3cgdH0sCiRTOjB9ClAuSmkucHJvdG90eXBlPXsKYkg6ZnVu
-Y3Rpb24oYSl7dmFyIHQscyxyLHE9bnVsbAp1Lk0uYihhKQp0cnl7aWYoQy5OVT09PSQuWDMpe2EuJDAo
-KQpyZXR1cm59UC5UOChxLHEsdGhpcyxhLHUuSCl9Y2F0Y2gocil7dD1ILlJ1KHIpCnM9SC50cyhyKQpQ
-LkwyKHEscSx0aGlzLHQsdS5sLmIocykpfX0sCkRsOmZ1bmN0aW9uKGEsYixjKXt2YXIgdCxzLHIscT1u
-dWxsCmMuQygifigwKSIpLmIoYSkKYy5iKGIpCnRyeXtpZihDLk5VPT09JC5YMyl7YS4kMShiKQpyZXR1
-cm59UC55dihxLHEsdGhpcyxhLGIsdS5ILGMpfWNhdGNoKHIpe3Q9SC5SdShyKQpzPUgudHMocikKUC5M
-MihxLHEsdGhpcyx0LHUubC5iKHMpKX19LApSVDpmdW5jdGlvbihhLGIpe3JldHVybiBuZXcgUC5oaih0
-aGlzLGIuQygiMCgpIikuYihhKSxiKX0sCkdZOmZ1bmN0aW9uKGEpe3JldHVybiBuZXcgUC5WcCh0aGlz
-LHUuTS5iKGEpKX0sClB5OmZ1bmN0aW9uKGEsYil7cmV0dXJuIG5ldyBQLk9SKHRoaXMsYi5DKCJ+KDAp
-IikuYihhKSxiKX0sCnE6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gbnVsbH0sCnp6OmZ1bmN0aW9uKGEsYil7
-Yi5DKCIwKCkiKS5iKGEpCmlmKCQuWDM9PT1DLk5VKXJldHVybiBhLiQwKCkKcmV0dXJuIFAuVDgobnVs
-bCxudWxsLHRoaXMsYSxiKX0sCmJ2OmZ1bmN0aW9uKGEsYixjLGQpe2MuQygiQDwwPiIpLktxKGQpLkMo
-IjEoMikiKS5iKGEpCmQuYihiKQppZigkLlgzPT09Qy5OVSlyZXR1cm4gYS4kMShiKQpyZXR1cm4gUC55
-dihudWxsLG51bGwsdGhpcyxhLGIsYyxkKX0sCnJwOmZ1bmN0aW9uKGEsYixjLGQsZSxmKXtkLkMoIkA8
-MD4iKS5LcShlKS5LcShmKS5DKCIxKDIsMykiKS5iKGEpCmUuYihiKQpmLmIoYykKaWYoJC5YMz09PUMu
-TlUpcmV0dXJuIGEuJDIoYixjKQpyZXR1cm4gUC5ReChudWxsLG51bGwsdGhpcyxhLGIsYyxkLGUsZil9
-LApMajpmdW5jdGlvbihhLGIsYyxkKXtyZXR1cm4gYi5DKCJAPDA+IikuS3EoYykuS3EoZCkuQygiMSgy
-LDMpIikuYihhKX19ClAuaGoucHJvdG90eXBlPXsKJDA6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5hLnp6
-KHRoaXMuYix0aGlzLmMpfSwKJFM6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jLkMoIjAoKSIpfX0KUC5W
-cC5wcm90b3R5cGU9ewokMDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmEuYkgodGhpcy5iKX0sCiRTOjJ9
-ClAuT1IucHJvdG90eXBlPXsKJDE6ZnVuY3Rpb24oYSl7dmFyIHQ9dGhpcy5jCnJldHVybiB0aGlzLmEu
-RGwodGhpcy5iLHQuYihhKSx0KX0sCiRTOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuYy5DKCJ+KDApIil9
-fQpQLmI2LnByb3RvdHlwZT17CmdrejpmdW5jdGlvbihhKXt2YXIgdD10aGlzLHM9bmV3IFAubG0odCx0
-LnIsSC5MaCh0KS5DKCJsbTwxPiIpKQpzLmM9dC5lCnJldHVybiBzfSwKZ0E6ZnVuY3Rpb24oYSl7cmV0
-dXJuIHRoaXMuYX0sCnRnOmZ1bmN0aW9uKGEsYil7dmFyIHQscwppZih0eXBlb2YgYj09InN0cmluZyIm
-JmIhPT0iX19wcm90b19fIil7dD10aGlzLmIKaWYodD09bnVsbClyZXR1cm4hMQpyZXR1cm4gdS5KLmIo
-dFtiXSkhPW51bGx9ZWxzZXtzPXRoaXMuUFIoYikKcmV0dXJuIHN9fSwKUFI6ZnVuY3Rpb24oYSl7dmFy
-IHQ9dGhpcy5kCmlmKHQ9PW51bGwpcmV0dXJuITEKcmV0dXJuIHRoaXMuREYodFt0aGlzLk4oYSldLGEp
-Pj0wfSwKaTpmdW5jdGlvbihhLGIpe3ZhciB0LHMscj10aGlzCkguTGgocikuZC5iKGIpCmlmKHR5cGVv
-ZiBiPT0ic3RyaW5nIiYmYiE9PSJfX3Byb3RvX18iKXt0PXIuYgpyZXR1cm4gci5TKHQ9PW51bGw/ci5i
-PVAuVDIoKTp0LGIpfWVsc2UgaWYodHlwZW9mIGI9PSJudW1iZXIiJiYoYiYxMDczNzQxODIzKT09PWIp
-e3M9ci5jCnJldHVybiByLlMocz09bnVsbD9yLmM9UC5UMigpOnMsYil9ZWxzZSByZXR1cm4gci5CNyhi
-KX0sCkI3OmZ1bmN0aW9uKGEpe3ZhciB0LHMscixxPXRoaXMKSC5MaChxKS5kLmIoYSkKdD1xLmQKaWYo
-dD09bnVsbCl0PXEuZD1QLlQyKCkKcz1xLk4oYSkKcj10W3NdCmlmKHI9PW51bGwpdFtzXT1bcS55byhh
-KV0KZWxzZXtpZihxLkRGKHIsYSk+PTApcmV0dXJuITEKci5wdXNoKHEueW8oYSkpfXJldHVybiEwfSwK
-UjpmdW5jdGlvbihhLGIpe3ZhciB0PXRoaXMKaWYodHlwZW9mIGI9PSJzdHJpbmciJiZiIT09Il9fcHJv
-dG9fXyIpcmV0dXJuIHQuTCh0LmIsYikKZWxzZSBpZih0eXBlb2YgYj09Im51bWJlciImJihiJjEwNzM3
-NDE4MjMpPT09YilyZXR1cm4gdC5MKHQuYyxiKQplbHNlIHJldHVybiB0LnFnKGIpfSwKcWc6ZnVuY3Rp
-b24oYSl7dmFyIHQscyxyLHEscD10aGlzLG89cC5kCmlmKG89PW51bGwpcmV0dXJuITEKdD1wLk4oYSkK
-cz1vW3RdCnI9cC5ERihzLGEpCmlmKHI8MClyZXR1cm4hMQpxPXMuc3BsaWNlKHIsMSlbMF0KaWYoMD09
-PXMubGVuZ3RoKWRlbGV0ZSBvW3RdCnAuR1MocSkKcmV0dXJuITB9LApTOmZ1bmN0aW9uKGEsYil7SC5M
-aCh0aGlzKS5kLmIoYikKaWYodS5KLmIoYVtiXSkhPW51bGwpcmV0dXJuITEKYVtiXT10aGlzLnlvKGIp
-CnJldHVybiEwfSwKTDpmdW5jdGlvbihhLGIpe3ZhciB0CmlmKGE9PW51bGwpcmV0dXJuITEKdD11Lkou
-YihhW2JdKQppZih0PT1udWxsKXJldHVybiExCnRoaXMuR1ModCkKZGVsZXRlIGFbYl0KcmV0dXJuITB9
-LApYOmZ1bmN0aW9uKCl7dGhpcy5yPTEwNzM3NDE4MjMmdGhpcy5yKzF9LAp5bzpmdW5jdGlvbihhKXt2
-YXIgdCxzPXRoaXMscj1uZXcgUC5ibihILkxoKHMpLmQuYihhKSkKaWYocy5lPT1udWxsKXMuZT1zLmY9
-cgplbHNle3Q9cy5mCnIuYz10CnMuZj10LmI9cn0rK3MuYQpzLlgoKQpyZXR1cm4gcn0sCkdTOmZ1bmN0
-aW9uKGEpe3ZhciB0PXRoaXMscz1hLmMscj1hLmIKaWYocz09bnVsbCl0LmU9cgplbHNlIHMuYj1yCmlm
-KHI9PW51bGwpdC5mPXMKZWxzZSByLmM9czstLXQuYQp0LlgoKX0sCk46ZnVuY3Rpb24oYSl7cmV0dXJu
-IEouaGYoYSkmMTA3Mzc0MTgyM30sCkRGOmZ1bmN0aW9uKGEsYil7dmFyIHQscwppZihhPT1udWxsKXJl
-dHVybi0xCnQ9YS5sZW5ndGgKZm9yKHM9MDtzPHQ7KytzKWlmKEouUk0oYVtzXS5hLGIpKXJldHVybiBz
-CnJldHVybi0xfX0KUC5ibi5wcm90b3R5cGU9e30KUC5sbS5wcm90b3R5cGU9ewpnbDpmdW5jdGlvbigp
-e3JldHVybiB0aGlzLmR9LApGOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcyxzPXQuYQppZih0LmIhPT1zLnIp
-dGhyb3cgSC5iKFAuYTQocykpCmVsc2V7cz10LmMKaWYocz09bnVsbCl7dC5zaihudWxsKQpyZXR1cm4h
-MX1lbHNle3Quc2oodC4kdGkuZC5iKHMuYSkpCnQuYz10LmMuYgpyZXR1cm4hMH19fSwKc2o6ZnVuY3Rp
-b24oYSl7dGhpcy5kPXRoaXMuJHRpLmQuYihhKX0sCiRpQW46MX0KUC5tVy5wcm90b3R5cGU9e30KUC5M
-VS5wcm90b3R5cGU9eyRpYlE6MSwkaWNYOjEsJGl6TToxfQpQLmxELnByb3RvdHlwZT17CmdrejpmdW5j
-dGlvbihhKXtyZXR1cm4gbmV3IEguYTcoYSx0aGlzLmdBKGEpLEgueksoYSkuQygiYTc8bEQuRT4iKSl9
-LApFOmZ1bmN0aW9uKGEsYil7cmV0dXJuIHRoaXMucShhLGIpfSwKSzpmdW5jdGlvbihhLGIpe3ZhciB0
-LHMKSC56SyhhKS5DKCJ+KGxELkUpIikuYihiKQp0PXRoaXMuZ0EoYSkKZm9yKHM9MDtzPHQ7KytzKXti
-LiQxKHRoaXMucShhLHMpKQppZih0IT09dGhpcy5nQShhKSl0aHJvdyBILmIoUC5hNChhKSl9fSwKRTI6
-ZnVuY3Rpb24oYSxiLGMpe3ZhciB0PUgueksoYSkKcmV0dXJuIG5ldyBILkE4KGEsdC5LcShjKS5DKCIx
-KGxELkUpIikuYihiKSx0LkMoIkA8bEQuRT4iKS5LcShjKS5DKCJBODwxLDI+IikpfSwKZHU6ZnVuY3Rp
-b24oYSxiLGMsZCl7dmFyIHQKSC56SyhhKS5DKCJsRC5FIikuYihkKQpQLmpCKGIsYyx0aGlzLmdBKGEp
-KQpmb3IodD1iO3Q8YzsrK3QpdGhpcy5ZKGEsdCxkKX0sCnc6ZnVuY3Rpb24oYSl7cmV0dXJuIFAuV0Uo
-YSwiWyIsIl0iKX19ClAuaWwucHJvdG90eXBlPXt9ClAucmEucHJvdG90eXBlPXsKJDI6ZnVuY3Rpb24o
-YSxiKXt2YXIgdCxzPXRoaXMuYQppZighcy5hKXRoaXMuYi5hKz0iLCAiCnMuYT0hMQpzPXRoaXMuYgp0
-PXMuYSs9SC5kKGEpCnMuYT10KyI6ICIKcy5hKz1ILmQoYil9LAokUzoxfQpQLllrLnByb3RvdHlwZT17
-Cks6ZnVuY3Rpb24oYSxiKXt2YXIgdCxzCkguTGgodGhpcykuQygifihZay5LLFlrLlYpIikuYihiKQpm
-b3IodD1KLklUKHRoaXMuZ1YoKSk7dC5GKCk7KXtzPXQuZ2woKQpiLiQyKHMsdGhpcy5xKDAscykpfX0s
-CmdQdTpmdW5jdGlvbihhKXtyZXR1cm4gSi5NMSh0aGlzLmdWKCksbmV3IFAueVEodGhpcyksSC5MaCh0
-aGlzKS5DKCJOMzxZay5LLFlrLlY+IikpfSwKeDQ6ZnVuY3Rpb24oYSl7cmV0dXJuIEouemwodGhpcy5n
-VigpLGEpfSwKZ0E6ZnVuY3Rpb24oYSl7cmV0dXJuIEouSG0odGhpcy5nVigpKX0sCnc6ZnVuY3Rpb24o
-YSl7cmV0dXJuIFAubk8odGhpcyl9LAokaVowOjF9ClAueVEucHJvdG90eXBlPXsKJDE6ZnVuY3Rpb24o
-YSl7dmFyIHQ9dGhpcy5hLHM9SC5MaCh0KQpzLkMoIllrLksiKS5iKGEpCnJldHVybiBuZXcgUC5OMyhh
-LHQucSgwLGEpLHMuQygiQDxZay5LPiIpLktxKHMuQygiWWsuViIpKS5DKCJOMzwxLDI+IikpfSwKJFM6
-ZnVuY3Rpb24oKXtyZXR1cm4gSC5MaCh0aGlzLmEpLkMoIk4zPFlrLkssWWsuVj4oWWsuSykiKX19ClAu
-S1AucHJvdG90eXBlPXsKWTpmdW5jdGlvbihhLGIsYyl7dmFyIHQ9SC5MaCh0aGlzKQp0LmQuYihiKQp0
-LmNoWzFdLmIoYykKdGhyb3cgSC5iKFAuTDQoIkNhbm5vdCBtb2RpZnkgdW5tb2RpZmlhYmxlIG1hcCIp
-KX19ClAuUG4ucHJvdG90eXBlPXsKcTpmdW5jdGlvbihhLGIpe3JldHVybiB0aGlzLmEucSgwLGIpfSwK
-WTpmdW5jdGlvbihhLGIsYyl7dmFyIHQ9SC5MaCh0aGlzKQp0aGlzLmEuWSgwLHQuZC5iKGIpLHQuY2hb
-MV0uYihjKSl9LAp4NDpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5hLng0KGEpfSwKSzpmdW5jdGlvbihh
-LGIpe3RoaXMuYS5LKDAsSC5MaCh0aGlzKS5DKCJ+KDEsMikiKS5iKGIpKX0sCmdBOmZ1bmN0aW9uKGEp
-e3ZhciB0PXRoaXMuYQpyZXR1cm4gdC5nQSh0KX0sCnc6ZnVuY3Rpb24oYSl7cmV0dXJuIEouaih0aGlz
-LmEpfSwKZ1B1OmZ1bmN0aW9uKGEpe3ZhciB0PXRoaXMuYQpyZXR1cm4gdC5nUHUodCl9LAokaVowOjF9
-ClAuR2oucHJvdG90eXBlPXt9ClAubGYucHJvdG90eXBlPXsKdzpmdW5jdGlvbihhKXtyZXR1cm4gUC5X
-RSh0aGlzLCJ7IiwifSIpfX0KUC5Wai5wcm90b3R5cGU9eyRpYlE6MSwkaWNYOjEsJGl4dToxfQpQLlh2
-LnByb3RvdHlwZT17CkZWOmZ1bmN0aW9uKGEsYil7dmFyIHQKZm9yKHQ9Si5JVChILkxoKHRoaXMpLkMo
-ImNYPDE+IikuYihiKSk7dC5GKCk7KXRoaXMuaSgwLHQuZ2woKSl9LAp3OmZ1bmN0aW9uKGEpe3JldHVy
-biBQLldFKHRoaXMsInsiLCJ9Iil9LAp6VjpmdW5jdGlvbihhLGIpe3ZhciB0LHM9UC5yaih0aGlzLHRo
-aXMucixILkxoKHRoaXMpLmQpCmlmKCFzLkYoKSlyZXR1cm4iIgppZihiPT09IiIpe3Q9IiIKZG8gdCs9
-SC5kKHMuZCkKd2hpbGUocy5GKCkpfWVsc2V7dD1ILmQocy5kKQpmb3IoO3MuRigpOyl0PXQrYitILmQo
-cy5kKX1yZXR1cm4gdC5jaGFyQ29kZUF0KDApPT0wP3Q6dH0sCiRpYlE6MSwKJGljWDoxLAokaXh1OjF9
-ClAublkucHJvdG90eXBlPXt9ClAuVEMucHJvdG90eXBlPXt9ClAuUlUucHJvdG90eXBlPXt9ClAudXcu
-cHJvdG90eXBlPXsKcTpmdW5jdGlvbihhLGIpe3ZhciB0LHM9dGhpcy5iCmlmKHM9PW51bGwpcmV0dXJu
-IHRoaXMuYy5xKDAsYikKZWxzZSBpZih0eXBlb2YgYiE9InN0cmluZyIpcmV0dXJuIG51bGwKZWxzZXt0
-PXNbYl0KcmV0dXJuIHR5cGVvZiB0PT0idW5kZWZpbmVkIj90aGlzLmZiKGIpOnR9fSwKZ0E6ZnVuY3Rp
-b24oYSl7cmV0dXJuIHRoaXMuYj09bnVsbD90aGlzLmMuYTp0aGlzLkNmKCkubGVuZ3RofSwKZ1Y6ZnVu
-Y3Rpb24oKXtpZih0aGlzLmI9PW51bGwpe3ZhciB0PXRoaXMuYwpyZXR1cm4gbmV3IEguaTUodCxILkxo
-KHQpLkMoImk1PDE+IikpfXJldHVybiBuZXcgUC5pOCh0aGlzKX0sClk6ZnVuY3Rpb24oYSxiLGMpe3Zh
-ciB0LHMscj10aGlzCmlmKHIuYj09bnVsbClyLmMuWSgwLGIsYykKZWxzZSBpZihyLng0KGIpKXt0PXIu
-Ygp0W2JdPWMKcz1yLmEKaWYocz09bnVsbD90IT1udWxsOnMhPT10KXNbYl09bnVsbH1lbHNlIHIuWEso
-KS5ZKDAsYixjKX0sCng0OmZ1bmN0aW9uKGEpe2lmKHRoaXMuYj09bnVsbClyZXR1cm4gdGhpcy5jLng0
-KGEpCnJldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodGhpcy5hLGEpfSwK
-SzpmdW5jdGlvbihhLGIpe3ZhciB0LHMscixxLHA9dGhpcwp1LmNBLmIoYikKaWYocC5iPT1udWxsKXJl
-dHVybiBwLmMuSygwLGIpCnQ9cC5DZigpCmZvcihzPTA7czx0Lmxlbmd0aDsrK3Mpe3I9dFtzXQpxPXAu
-YltyXQppZih0eXBlb2YgcT09InVuZGVmaW5lZCIpe3E9UC5RZShwLmFbcl0pCnAuYltyXT1xfWIuJDIo
-cixxKQppZih0IT09cC5jKXRocm93IEguYihQLmE0KHApKX19LApDZjpmdW5jdGlvbigpe3ZhciB0PXUu
-ai5iKHRoaXMuYykKaWYodD09bnVsbCl0PXRoaXMuYz1ILlZNKE9iamVjdC5rZXlzKHRoaXMuYSksdS5z
-KQpyZXR1cm4gdH0sClhLOmZ1bmN0aW9uKCl7dmFyIHQscyxyLHEscCxvPXRoaXMKaWYoby5iPT1udWxs
-KXJldHVybiBvLmMKdD1QLkZsKHUuTix1LnopCnM9by5DZigpCmZvcihyPTA7cT1zLmxlbmd0aCxyPHE7
-KytyKXtwPXNbcl0KdC5ZKDAscCxvLnEoMCxwKSl9aWYocT09PTApQy5ObS5pKHMsbnVsbCkKZWxzZSBD
-Lk5tLnNBKHMsMCkKby5hPW8uYj1udWxsCnJldHVybiBvLmM9dH0sCmZiOmZ1bmN0aW9uKGEpe3ZhciB0
-CmlmKCFPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodGhpcy5hLGEpKXJldHVybiBu
-dWxsCnQ9UC5RZSh0aGlzLmFbYV0pCnJldHVybiB0aGlzLmJbYV09dH19ClAuaTgucHJvdG90eXBlPXsK
-Z0E6ZnVuY3Rpb24oYSl7dmFyIHQ9dGhpcy5hCnJldHVybiB0LmdBKHQpfSwKRTpmdW5jdGlvbihhLGIp
-e3ZhciB0PXRoaXMuYQppZih0LmI9PW51bGwpdD10LmdWKCkuRSgwLGIpCmVsc2V7dD10LkNmKCkKaWYo
-YjwwfHxiPj10Lmxlbmd0aClyZXR1cm4gSC5PSCh0LGIpCnQ9dFtiXX1yZXR1cm4gdH0sCmdrejpmdW5j
-dGlvbihhKXt2YXIgdD10aGlzLmEKaWYodC5iPT1udWxsKXt0PXQuZ1YoKQp0PXQuZ2t6KHQpfWVsc2V7
-dD10LkNmKCkKdD1uZXcgSi5tMSh0LHQubGVuZ3RoLEgudDYodCkuQygibTE8MT4iKSl9cmV0dXJuIHR9
-LAp0ZzpmdW5jdGlvbihhLGIpe3JldHVybiB0aGlzLmEueDQoYil9fQpQLkNWLnByb3RvdHlwZT17Cnly
-OmZ1bmN0aW9uKGEsYTAsYTEpe3ZhciB0LHMscixxLHAsbyxuLG0sbCxrLGosaSxoLGcsZixlLGQsYyxi
-PSJJbnZhbGlkIGJhc2U2NCBlbmNvZGluZyBsZW5ndGggIgphMT1QLmpCKGEwLGExLGEubGVuZ3RoKQp0
-PSQuVjcoKQpmb3Iocz1hMCxyPXMscT1udWxsLHA9LTEsbz0tMSxuPTA7czxhMTtzPW0pe209cysxCmw9
-Qy54Qi5XKGEscykKaWYobD09PTM3KXtrPW0rMgppZihrPD1hMSl7aj1ILm9vKEMueEIuVyhhLG0pKQpp
-PUgub28oQy54Qi5XKGEsbSsxKSkKaD1qKjE2K2ktKGkmMjU2KQppZihoPT09MzcpaD0tMQptPWt9ZWxz
-ZSBoPS0xfWVsc2UgaD1sCmlmKDA8PWgmJmg8PTEyNyl7aWYoaDwwfHxoPj10Lmxlbmd0aClyZXR1cm4g
-SC5PSCh0LGgpCmc9dFtoXQppZihnPj0wKXtoPUMueEIubSgiQUJDREVGR0hJSktMTU5PUFFSU1RVVldY
-WVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODkrLyIsZykKaWYoaD09PWwpY29udGlu
-dWUKbD1ofWVsc2V7aWYoZz09PS0xKXtpZihwPDApe2Y9cT09bnVsbD9udWxsOnEuYS5sZW5ndGgKaWYo
-Zj09bnVsbClmPTAKcD1mKyhzLXIpCm89c30rK24KaWYobD09PTYxKWNvbnRpbnVlfWw9aH1pZihnIT09
-LTIpe2lmKHE9PW51bGwpcT1uZXcgUC5SbigiIikKcS5hKz1DLnhCLk5qKGEscixzKQpxLmErPUguTHco
-bCkKcj1tCmNvbnRpbnVlfX10aHJvdyBILmIoUC5ycigiSW52YWxpZCBiYXNlNjQgZGF0YSIsYSxzKSl9
-aWYocSE9bnVsbCl7Zj1xLmErPUMueEIuTmooYSxyLGExKQplPWYubGVuZ3RoCmlmKHA+PTApUC54TShh
-LG8sYTEscCxuLGUpCmVsc2V7ZD1DLmpuLnpZKGUtMSw0KSsxCmlmKGQ9PT0xKXRocm93IEguYihQLnJy
-KGIsYSxhMSkpCmZvcig7ZDw0Oyl7Zis9Ij0iCnEuYT1mOysrZH19Zj1xLmEKcmV0dXJuIEMueEIuaTco
-YSxhMCxhMSxmLmNoYXJDb2RlQXQoMCk9PTA/ZjpmKX1jPWExLWEwCmlmKHA+PTApUC54TShhLG8sYTEs
-cCxuLGMpCmVsc2V7ZD1DLmpuLnpZKGMsNCkKaWYoZD09PTEpdGhyb3cgSC5iKFAucnIoYixhLGExKSkK
-aWYoZD4xKWE9Qy54Qi5pNyhhLGExLGExLGQ9PT0yPyI9PSI6Ij0iKX1yZXR1cm4gYX19ClAuVTgucHJv
-dG90eXBlPXt9ClAuVWsucHJvdG90eXBlPXt9ClAud0kucHJvdG90eXBlPXt9ClAuWmkucHJvdG90eXBl
-PXt9ClAuYnkucHJvdG90eXBlPXsKcFc6ZnVuY3Rpb24oYSxiLGMpe3ZhciB0CnUuZXAuYihjKQp0PVAu
-QlMoYix0aGlzLmdIZSgpLmEpCnJldHVybiB0fSwKZ0hlOmZ1bmN0aW9uKCl7cmV0dXJuIEMuQTN9fQpQ
-Lk14LnByb3RvdHlwZT17fQpQLnU1LnByb3RvdHlwZT17CmdaRTpmdW5jdGlvbigpe3JldHVybiBDLlFr
-fX0KUC5FMy5wcm90b3R5cGU9ewpXSjpmdW5jdGlvbihhKXt2YXIgdCxzLHI9UC5qQigwLG51bGwsYS5s
-ZW5ndGgpLHE9ci0wCmlmKHE9PT0wKXJldHVybiBuZXcgVWludDhBcnJheSgwKQp0PW5ldyBVaW50OEFy
-cmF5KHEqMykKcz1uZXcgUC5Sdyh0KQppZihzLkd4KGEsMCxyKSE9PXIpcy5PNihKLmE2KGEsci0xKSww
-KQpyZXR1cm4gbmV3IFVpbnQ4QXJyYXkodC5zdWJhcnJheSgwLEguck0oMCxzLmIsdC5sZW5ndGgpKSl9
-fQpQLlJ3LnByb3RvdHlwZT17Ck82OmZ1bmN0aW9uKGEsYil7dmFyIHQscz10aGlzLHI9cy5jLHE9cy5i
-LHA9cSsxLG89ci5sZW5ndGgKaWYoKGImNjQ1MTIpPT09NTYzMjApe3Q9NjU1MzYrKChhJjEwMjMpPDwx
-MCl8YiYxMDIzCnMuYj1wCmlmKHE+PW8pcmV0dXJuIEguT0gocixxKQpyW3FdPTI0MHx0Pj4+MTgKcT1z
-LmI9cCsxCmlmKHA+PW8pcmV0dXJuIEguT0gocixwKQpyW3BdPTEyOHx0Pj4+MTImNjMKcD1zLmI9cSsx
-CmlmKHE+PW8pcmV0dXJuIEguT0gocixxKQpyW3FdPTEyOHx0Pj4+NiY2MwpzLmI9cCsxCmlmKHA+PW8p
-cmV0dXJuIEguT0gocixwKQpyW3BdPTEyOHx0JjYzCnJldHVybiEwfWVsc2V7cy5iPXAKaWYocT49byly
-ZXR1cm4gSC5PSChyLHEpCnJbcV09MjI0fGE+Pj4xMgpxPXMuYj1wKzEKaWYocD49bylyZXR1cm4gSC5P
-SChyLHApCnJbcF09MTI4fGE+Pj42JjYzCnMuYj1xKzEKaWYocT49bylyZXR1cm4gSC5PSChyLHEpCnJb
-cV09MTI4fGEmNjMKcmV0dXJuITF9fSwKR3g6ZnVuY3Rpb24oYSxiLGMpe3ZhciB0LHMscixxLHAsbyxu
-LG09dGhpcwppZihiIT09YyYmKEMueEIubShhLGMtMSkmNjQ1MTIpPT09NTUyOTYpLS1jCmZvcih0PW0u
-YyxzPXQubGVuZ3RoLHI9YjtyPGM7KytyKXtxPUMueEIuVyhhLHIpCmlmKHE8PTEyNyl7cD1tLmIKaWYo
-cD49cylicmVhawptLmI9cCsxCnRbcF09cX1lbHNlIGlmKChxJjY0NTEyKT09PTU1Mjk2KXtpZihtLmIr
-Mz49cylicmVhawpvPXIrMQppZihtLk82KHEsQy54Qi5XKGEsbykpKXI9b31lbHNlIGlmKHE8PTIwNDcp
-e3A9bS5iCm49cCsxCmlmKG4+PXMpYnJlYWsKbS5iPW4KaWYocD49cylyZXR1cm4gSC5PSCh0LHApCnRb
-cF09MTkyfHE+Pj42Cm0uYj1uKzEKdFtuXT0xMjh8cSY2M31lbHNle3A9bS5iCmlmKHArMj49cylicmVh
-awpuPW0uYj1wKzEKaWYocD49cylyZXR1cm4gSC5PSCh0LHApCnRbcF09MjI0fHE+Pj4xMgpwPW0uYj1u
-KzEKaWYobj49cylyZXR1cm4gSC5PSCh0LG4pCnRbbl09MTI4fHE+Pj42JjYzCm0uYj1wKzEKaWYocD49
-cylyZXR1cm4gSC5PSCh0LHApCnRbcF09MTI4fHEmNjN9fXJldHVybiByfX0KUC5HWS5wcm90b3R5cGU9
-ewpXSjpmdW5jdGlvbihhKXt2YXIgdCxzLHIscSxwLG8sbixtLGwKdS5MLmIoYSkKdD1QLmt5KCExLGEs
-MCxudWxsKQppZih0IT1udWxsKXJldHVybiB0CnM9UC5qQigwLG51bGwsSi5IbShhKSkKcj1QLmNQKGEs
-MCxzKQppZihyPjApe3E9UC5ITShhLDAscikKaWYocj09PXMpcmV0dXJuIHEKcD1uZXcgUC5SbihxKQpv
-PXIKbj0hMX1lbHNle289MApwPW51bGwKbj0hMH1pZihwPT1udWxsKXA9bmV3IFAuUm4oIiIpCm09bmV3
-IFAuYnooITEscCkKbS5jPW4KbS5NRShhLG8scykKaWYobS5lPjApe0gudmgoUC5ycigiVW5maW5pc2hl
-ZCBVVEYtOCBvY3RldCBzZXF1ZW5jZSIsYSxzKSkKcC5hKz1ILkx3KDY1NTMzKQptLmY9bS5lPW0uZD0w
-fWw9cC5hCnJldHVybiBsLmNoYXJDb2RlQXQoMCk9PTA/bDpsfX0KUC5iei5wcm90b3R5cGU9ewpNRTpm
-dW5jdGlvbihhLGIsYyl7dmFyIHQscyxyLHEscCxvLG4sbSxsLGssaixpLGg9dGhpcyxnPSJCYWQgVVRG
-LTggZW5jb2RpbmcgMHgiCnUuTC5iKGEpCnQ9aC5kCnM9aC5lCnI9aC5mCmguZj1oLmU9aC5kPTAKJGxh
-YmVsMCQwOmZvcihxPUouVTYoYSkscD1oLmIsbz1iOyEwO289ail7JGxhYmVsMSQxOmlmKHM+MCl7ZG97
-aWYobz09PWMpYnJlYWsgJGxhYmVsMCQwCm49cS5xKGEsbykKaWYodHlwZW9mIG4hPT0ibnVtYmVyIily
-ZXR1cm4gbi56TSgpCmlmKChuJjE5MikhPT0xMjgpe209UC5ycihnK0Muam4uV1oobiwxNiksYSxvKQp0
-aHJvdyBILmIobSl9ZWxzZXt0PSh0PDw2fG4mNjMpPj4+MDstLXM7KytvfX13aGlsZShzPjApCm09ci0x
-CmlmKG08MHx8bT49NClyZXR1cm4gSC5PSChDLkdiLG0pCmlmKHQ8PUMuR2JbbV0pe209UC5ycigiT3Zl
-cmxvbmcgZW5jb2Rpbmcgb2YgMHgiK0Muam4uV1oodCwxNiksYSxvLXItMSkKdGhyb3cgSC5iKG0pfWlm
-KHQ+MTExNDExMSl7bT1QLnJyKCJDaGFyYWN0ZXIgb3V0c2lkZSB2YWxpZCBVbmljb2RlIHJhbmdlOiAw
-eCIrQy5qbi5XWih0LDE2KSxhLG8tci0xKQp0aHJvdyBILmIobSl9aWYoIWguY3x8dCE9PTY1Mjc5KXAu
-YSs9SC5Mdyh0KQpoLmM9ITF9Zm9yKG09bzxjO207KXtsPVAuY1AoYSxvLGMpCmlmKGw+MCl7aC5jPSEx
-Cms9bytsCnAuYSs9UC5ITShhLG8saykKaWYoaz09PWMpYnJlYWt9ZWxzZSBrPW8Kaj1rKzEKbj1xLnEo
-YSxrKQppZih0eXBlb2YgbiE9PSJudW1iZXIiKXJldHVybiBuLkooKQppZihuPDApe2k9UC5ycigiTmVn
-YXRpdmUgVVRGLTggY29kZSB1bml0OiAtMHgiK0Muam4uV1ooLW4sMTYpLGEsai0xKQp0aHJvdyBILmIo
-aSl9ZWxzZXtpZigobiYyMjQpPT09MTkyKXt0PW4mMzEKcz0xCnI9MQpjb250aW51ZSAkbGFiZWwwJDB9
-aWYoKG4mMjQwKT09PTIyNCl7dD1uJjE1CnM9MgpyPTIKY29udGludWUgJGxhYmVsMCQwfWlmKChuJjI0
-OCk9PT0yNDAmJm48MjQ1KXt0PW4mNwpzPTMKcj0zCmNvbnRpbnVlICRsYWJlbDAkMH1pPVAucnIoZytD
-LmpuLldaKG4sMTYpLGEsai0xKQp0aHJvdyBILmIoaSl9fWJyZWFrICRsYWJlbDAkMH1pZihzPjApe2gu
-ZD10CmguZT1zCmguZj1yfX19ClAuV0YucHJvdG90eXBlPXsKJDI6ZnVuY3Rpb24oYSxiKXt2YXIgdCxz
-LHIKdS5mby5iKGEpCnQ9dGhpcy5iCnM9dGhpcy5hCnQuYSs9cy5hCnI9dC5hKz1ILmQoYS5hKQp0LmE9
-cisiOiAiCnQuYSs9UC5wKGIpCnMuYT0iLCAifSwKJFM6Mzh9ClAuYTIucHJvdG90eXBlPXt9ClAuaVAu
-cHJvdG90eXBlPXsKRE46ZnVuY3Rpb24oYSxiKXtpZihiPT1udWxsKXJldHVybiExCnJldHVybiBiIGlu
-c3RhbmNlb2YgUC5pUCYmdGhpcy5hPT09Yi5hJiYhMH0sCmdpTzpmdW5jdGlvbihhKXt2YXIgdD10aGlz
-LmEKcmV0dXJuKHReQy5qbi53Ryh0LDMwKSkmMTA3Mzc0MTgyM30sCnc6ZnVuY3Rpb24oYSl7dmFyIHQ9
-dGhpcyxzPVAuR3EoSC50Sih0KSkscj1QLmgwKEguTlModCkpLHE9UC5oMChILmpBKHQpKSxwPVAuaDAo
-SC5JWCh0KSksbz1QLmgwKEguY2godCkpLG49UC5oMChILkpkKHQpKSxtPVAuVngoSC5vMSh0KSksbD1z
-KyItIityKyItIitxKyIgIitwKyI6IitvKyI6IituKyIuIittCnJldHVybiBsfX0KUC5DUC5wcm90b3R5
-cGU9e30KUC5YUy5wcm90b3R5cGU9e30KUC5DNi5wcm90b3R5cGU9ewp3OmZ1bmN0aW9uKGEpe3ZhciB0
-PXRoaXMuYQppZih0IT1udWxsKXJldHVybiJBc3NlcnRpb24gZmFpbGVkOiAiK1AucCh0KQpyZXR1cm4i
-QXNzZXJ0aW9uIGZhaWxlZCJ9fQpQLm4ucHJvdG90eXBlPXsKdzpmdW5jdGlvbihhKXtyZXR1cm4iVGhy
-b3cgb2YgbnVsbC4ifX0KUC51LnByb3RvdHlwZT17CmdaOmZ1bmN0aW9uKCl7cmV0dXJuIkludmFsaWQg
-YXJndW1lbnQiKyghdGhpcy5hPyIocykiOiIiKX0sCmd1OmZ1bmN0aW9uKCl7cmV0dXJuIiJ9LAp3OmZ1
-bmN0aW9uKGEpe3ZhciB0LHMscixxLHA9dGhpcyxvPXAuYyxuPW8hPW51bGw/IiAoIitvKyIpIjoiIgpv
-PXAuZAp0PW89PW51bGw/IiI6IjogIitILmQobykKcz1wLmdaKCkrbit0CmlmKCFwLmEpcmV0dXJuIHMK
-cj1wLmd1KCkKcT1QLnAocC5iKQpyZXR1cm4gcytyKyI6ICIrcX19ClAuYkoucHJvdG90eXBlPXsKZ1o6
-ZnVuY3Rpb24oKXtyZXR1cm4iUmFuZ2VFcnJvciJ9LApndTpmdW5jdGlvbigpe3ZhciB0LHMscj10aGlz
-LmUKaWYocj09bnVsbCl7cj10aGlzLmYKdD1yIT1udWxsPyI6IE5vdCBsZXNzIHRoYW4gb3IgZXF1YWwg
-dG8gIitILmQocik6IiJ9ZWxzZXtzPXRoaXMuZgppZihzPT1udWxsKXQ9IjogTm90IGdyZWF0ZXIgdGhh
-biBvciBlcXVhbCB0byAiK0guZChyKQplbHNlIGlmKHM+cil0PSI6IE5vdCBpbiByYW5nZSAiK0guZChy
-KSsiLi4iK0guZChzKSsiLCBpbmNsdXNpdmUiCmVsc2UgdD1zPHI/IjogVmFsaWQgdmFsdWUgcmFuZ2Ug
-aXMgZW1wdHkiOiI6IE9ubHkgdmFsaWQgdmFsdWUgaXMgIitILmQocil9cmV0dXJuIHR9fQpQLmVZLnBy
-b3RvdHlwZT17CmdaOmZ1bmN0aW9uKCl7cmV0dXJuIlJhbmdlRXJyb3IifSwKZ3U6ZnVuY3Rpb24oKXt2
-YXIgdCxzPUguU2ModGhpcy5iKQppZih0eXBlb2YgcyE9PSJudW1iZXIiKXJldHVybiBzLkooKQppZihz
-PDApcmV0dXJuIjogaW5kZXggbXVzdCBub3QgYmUgbmVnYXRpdmUiCnQ9dGhpcy5mCmlmKHQ9PT0wKXJl
-dHVybiI6IG5vIGluZGljZXMgYXJlIHZhbGlkIgpyZXR1cm4iOiBpbmRleCBzaG91bGQgYmUgbGVzcyB0
-aGFuICIrSC5kKHQpfSwKZ0E6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuZn19ClAubXAucHJvdG90eXBl
-PXsKdzpmdW5jdGlvbihhKXt2YXIgdCxzLHIscSxwLG8sbixtLGw9dGhpcyxrPXt9LGo9bmV3IFAuUm4o
-IiIpCmsuYT0iIgpmb3IodD1sLmMscz10Lmxlbmd0aCxyPTAscT0iIixwPSIiO3I8czsrK3IscD0iLCAi
-KXtvPXRbcl0Kai5hPXErcApxPWouYSs9UC5wKG8pCmsuYT0iLCAifWwuZC5LKDAsbmV3IFAuV0Yoayxq
-KSkKbj1QLnAobC5hKQptPWoudygwKQp0PSJOb1N1Y2hNZXRob2RFcnJvcjogbWV0aG9kIG5vdCBmb3Vu
-ZDogJyIrSC5kKGwuYi5hKSsiJ1xuUmVjZWl2ZXI6ICIrbisiXG5Bcmd1bWVudHM6IFsiK20rIl0iCnJl
-dHVybiB0fX0KUC51Yi5wcm90b3R5cGU9ewp3OmZ1bmN0aW9uKGEpe3JldHVybiJVbnN1cHBvcnRlZCBv
-cGVyYXRpb246ICIrdGhpcy5hfX0KUC5kcy5wcm90b3R5cGU9ewp3OmZ1bmN0aW9uKGEpe3ZhciB0PXRo
-aXMuYQpyZXR1cm4gdCE9bnVsbD8iVW5pbXBsZW1lbnRlZEVycm9yOiAiK3Q6IlVuaW1wbGVtZW50ZWRF
-cnJvciJ9fQpQLmxqLnByb3RvdHlwZT17Cnc6ZnVuY3Rpb24oYSl7cmV0dXJuIkJhZCBzdGF0ZTogIit0
-aGlzLmF9fQpQLlVWLnByb3RvdHlwZT17Cnc6ZnVuY3Rpb24oYSl7dmFyIHQ9dGhpcy5hCmlmKHQ9PW51
-bGwpcmV0dXJuIkNvbmN1cnJlbnQgbW9kaWZpY2F0aW9uIGR1cmluZyBpdGVyYXRpb24uIgpyZXR1cm4i
-Q29uY3VycmVudCBtb2RpZmljYXRpb24gZHVyaW5nIGl0ZXJhdGlvbjogIitQLnAodCkrIi4ifX0KUC5r
-NS5wcm90b3R5cGU9ewp3OmZ1bmN0aW9uKGEpe3JldHVybiJPdXQgb2YgTWVtb3J5In0sCiRpWFM6MX0K
-UC5LWS5wcm90b3R5cGU9ewp3OmZ1bmN0aW9uKGEpe3JldHVybiJTdGFjayBPdmVyZmxvdyJ9LAokaVhT
-OjF9ClAuYy5wcm90b3R5cGU9ewp3OmZ1bmN0aW9uKGEpe3ZhciB0PXRoaXMuYQpyZXR1cm4gdD09bnVs
-bD8iUmVhZGluZyBzdGF0aWMgdmFyaWFibGUgZHVyaW5nIGl0cyBpbml0aWFsaXphdGlvbiI6IlJlYWRp
-bmcgc3RhdGljIHZhcmlhYmxlICciK3QrIicgZHVyaW5nIGl0cyBpbml0aWFsaXphdGlvbiJ9fQpQLkNE
-LnByb3RvdHlwZT17Cnc6ZnVuY3Rpb24oYSl7cmV0dXJuIkV4Y2VwdGlvbjogIit0aGlzLmF9fQpQLmFF
-LnByb3RvdHlwZT17Cnc6ZnVuY3Rpb24oYSl7dmFyIHQscyxyLHEscCxvLG4sbSxsLGssaixpLGg9dGhp
-cy5hLGc9aCE9bnVsbCYmIiIhPT1oPyJGb3JtYXRFeGNlcHRpb246ICIrSC5kKGgpOiJGb3JtYXRFeGNl
-cHRpb24iLGY9dGhpcy5jLGU9dGhpcy5iCmlmKHR5cGVvZiBlPT0ic3RyaW5nIil7aWYoZiE9bnVsbClo
-PWY8MHx8Zj5lLmxlbmd0aAplbHNlIGg9ITEKaWYoaClmPW51bGwKaWYoZj09bnVsbCl7dD1lLmxlbmd0
-aD43OD9DLnhCLk5qKGUsMCw3NSkrIi4uLiI6ZQpyZXR1cm4gZysiXG4iK3R9Zm9yKHM9MSxyPTAscT0h
-MSxwPTA7cDxmOysrcCl7bz1DLnhCLlcoZSxwKQppZihvPT09MTApe2lmKHIhPT1wfHwhcSkrK3MKcj1w
-KzEKcT0hMX1lbHNlIGlmKG89PT0xMyl7KytzCnI9cCsxCnE9ITB9fWc9cz4xP2crKCIgKGF0IGxpbmUg
-IitzKyIsIGNoYXJhY3RlciAiKyhmLXIrMSkrIilcbiIpOmcrKCIgKGF0IGNoYXJhY3RlciAiKyhmKzEp
-KyIpXG4iKQpuPWUubGVuZ3RoCmZvcihwPWY7cDxuOysrcCl7bz1DLnhCLm0oZSxwKQppZihvPT09MTB8
-fG89PT0xMyl7bj1wCmJyZWFrfX1pZihuLXI+NzgpaWYoZi1yPDc1KXttPXIrNzUKbD1yCms9IiIKaj0i
-Li4uIn1lbHNle2lmKG4tZjw3NSl7bD1uLTc1Cm09bgpqPSIifWVsc2V7bD1mLTM2Cm09ZiszNgpqPSIu
-Li4ifWs9Ii4uLiJ9ZWxzZXttPW4KbD1yCms9IiIKaj0iIn1pPUMueEIuTmooZSxsLG0pCnJldHVybiBn
-K2sraStqKyJcbiIrQy54Qi5JeCgiICIsZi1sK2subGVuZ3RoKSsiXlxuIn1lbHNlIHJldHVybiBmIT1u
-dWxsP2crKCIgKGF0IG9mZnNldCAiK0guZChmKSsiKSIpOmd9fQpQLkVILnByb3RvdHlwZT17fQpQLktO
-LnByb3RvdHlwZT17fQpQLmNYLnByb3RvdHlwZT17CkUyOmZ1bmN0aW9uKGEsYixjKXt2YXIgdD1ILkxo
-KHRoaXMpCnJldHVybiBILksxKHRoaXMsdC5LcShjKS5DKCIxKGNYLkUpIikuYihiKSx0LkMoImNYLkUi
-KSxjKX0sCmV2OmZ1bmN0aW9uKGEsYil7dmFyIHQ9SC5MaCh0aGlzKQpyZXR1cm4gbmV3IEguVTUodGhp
-cyx0LkMoImEyKGNYLkUpIikuYihiKSx0LkMoIlU1PGNYLkU+IikpfSwKZ0E6ZnVuY3Rpb24oYSl7dmFy
-IHQscz10aGlzLmdreih0aGlzKQpmb3IodD0wO3MuRigpOykrK3QKcmV0dXJuIHR9LApnbDA6ZnVuY3Rp
-b24oYSl7cmV0dXJuIXRoaXMuZ2t6KHRoaXMpLkYoKX0sCmdyODpmdW5jdGlvbihhKXt2YXIgdCxzPXRo
-aXMuZ2t6KHRoaXMpCmlmKCFzLkYoKSl0aHJvdyBILmIoSC5XcCgpKQp0PXMuZ2woKQppZihzLkYoKSl0
-aHJvdyBILmIoSC5kVSgpKQpyZXR1cm4gdH0sCkU6ZnVuY3Rpb24oYSxiKXt2YXIgdCxzLHIKUC5rMShi
-LCJpbmRleCIpCmZvcih0PXRoaXMuZ2t6KHRoaXMpLHM9MDt0LkYoKTspe3I9dC5nbCgpCmlmKGI9PT1z
-KXJldHVybiByOysrc310aHJvdyBILmIoUC5DZihiLHRoaXMsImluZGV4IixudWxsLHMpKX0sCnc6ZnVu
-Y3Rpb24oYSl7cmV0dXJuIFAuRVAodGhpcywiKCIsIikiKX19ClAuQW4ucHJvdG90eXBlPXt9ClAuek0u
-cHJvdG90eXBlPXskaWJROjEsJGljWDoxfQpQLlowLnByb3RvdHlwZT17fQpQLk4zLnByb3RvdHlwZT17
-Cnc6ZnVuY3Rpb24oYSl7cmV0dXJuIk1hcEVudHJ5KCIrSC5kKHRoaXMuYSkrIjogIitILmQodGhpcy5i
-KSsiKSJ9fQpQLmM4LnByb3RvdHlwZT17CmdpTzpmdW5jdGlvbihhKXtyZXR1cm4gUC5rLnByb3RvdHlw
-ZS5naU8uY2FsbCh0aGlzLHRoaXMpfSwKdzpmdW5jdGlvbihhKXtyZXR1cm4ibnVsbCJ9fQpQLkZLLnBy
-b3RvdHlwZT17fQpQLmsucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjpQLmssJGlrOjEsCkROOmZ1bmN0aW9u
-KGEsYil7cmV0dXJuIHRoaXM9PT1ifSwKZ2lPOmZ1bmN0aW9uKGEpe3JldHVybiBILmVRKHRoaXMpfSwK
-dzpmdW5jdGlvbihhKXtyZXR1cm4iSW5zdGFuY2Ugb2YgJyIrSC5kKEguTSh0aGlzKSkrIicifSwKZTc6
-ZnVuY3Rpb24oYSxiKXt1Lm8uYihiKQp0aHJvdyBILmIoUC5scih0aGlzLGIuZ1dhKCksYi5nbmQoKSxi
-LmdWbSgpKSl9LAp0b1N0cmluZzpmdW5jdGlvbigpe3JldHVybiB0aGlzLncodGhpcyl9fQpQLk9kLnBy
-b3RvdHlwZT17fQpQLmliLnByb3RvdHlwZT17JGlPZDoxfQpQLnh1LnByb3RvdHlwZT17fQpQLkd6LnBy
-b3RvdHlwZT17fQpQLnFVLnByb3RvdHlwZT17JGl2WDoxfQpQLlJuLnByb3RvdHlwZT17CmdBOmZ1bmN0
-aW9uKGEpe3JldHVybiB0aGlzLmEubGVuZ3RofSwKdzpmdW5jdGlvbihhKXt2YXIgdD10aGlzLmEKcmV0
-dXJuIHQuY2hhckNvZGVBdCgwKT09MD90OnR9LAokaUJMOjF9ClAuR0QucHJvdG90eXBlPXt9ClAubjEu
-cHJvdG90eXBlPXsKJDI6ZnVuY3Rpb24oYSxiKXt2YXIgdCxzLHIscQp1LmYuYihhKQpILnkoYikKdD1K
-LnJZKGIpLk9ZKGIsIj0iKQppZih0PT09LTEpe2lmKGIhPT0iIilhLlkoMCxQLmt1KGIsMCxiLmxlbmd0
-aCx0aGlzLmEsITApLCIiKX1lbHNlIGlmKHQhPT0wKXtzPUMueEIuTmooYiwwLHQpCnI9Qy54Qi5HKGIs
-dCsxKQpxPXRoaXMuYQphLlkoMCxQLmt1KHMsMCxzLmxlbmd0aCxxLCEwKSxQLmt1KHIsMCxyLmxlbmd0
-aCxxLCEwKSl9cmV0dXJuIGF9LAokUzoyMH0KUC5jUy5wcm90b3R5cGU9ewokMjpmdW5jdGlvbihhLGIp
-e3Rocm93IEguYihQLnJyKCJJbGxlZ2FsIElQdjQgYWRkcmVzcywgIithLHRoaXMuYSxiKSl9LAokUzo0
-M30KUC5WQy5wcm90b3R5cGU9ewokMjpmdW5jdGlvbihhLGIpe3Rocm93IEguYihQLnJyKCJJbGxlZ2Fs
-IElQdjYgYWRkcmVzcywgIithLHRoaXMuYSxiKSl9LAokMTpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy4k
-MihhLG51bGwpfSwKJFM6NDR9ClAuSlQucHJvdG90eXBlPXsKJDI6ZnVuY3Rpb24oYSxiKXt2YXIgdApp
-ZihiLWE+NCl0aGlzLmEuJDIoImFuIElQdjYgcGFydCBjYW4gb25seSBjb250YWluIGEgbWF4aW11bSBv
-ZiA0IGhleCBkaWdpdHMiLGEpCnQ9UC5RQShDLnhCLk5qKHRoaXMuYixhLGIpLG51bGwsMTYpCmlmKHR5
-cGVvZiB0IT09Im51bWJlciIpcmV0dXJuIHQuSigpCmlmKHQ8MHx8dD42NTUzNSl0aGlzLmEuJDIoImVh
-Y2ggcGFydCBtdXN0IGJlIGluIHRoZSByYW5nZSBvZiBgMHgwLi4weEZGRkZgIixhKQpyZXR1cm4gdH0s
-CiRTOjQ2fQpQLkRuLnByb3RvdHlwZT17CmdrdTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmJ9LApnSmY6
-ZnVuY3Rpb24oYSl7dmFyIHQ9dGhpcy5jCmlmKHQ9PW51bGwpcmV0dXJuIiIKaWYoQy54Qi5uKHQsIlsi
-KSlyZXR1cm4gQy54Qi5Oaih0LDEsdC5sZW5ndGgtMSkKcmV0dXJuIHR9LApndHA6ZnVuY3Rpb24oYSl7
-dmFyIHQ9dGhpcy5kCmlmKHQ9PW51bGwpcmV0dXJuIFAud0sodGhpcy5hKQpyZXR1cm4gdH0sCmd0UDpm
-dW5jdGlvbigpe3ZhciB0PXRoaXMuZgpyZXR1cm4gdD09bnVsbD8iIjp0fSwKZ0thOmZ1bmN0aW9uKCl7
-dmFyIHQ9dGhpcy5yCnJldHVybiB0PT1udWxsPyIiOnR9LApubTpmdW5jdGlvbihhLGIpe3ZhciB0LHMs
-cixxLHAsbyxuLG0sbD10aGlzCnUuWC5iKG51bGwpCnUuYi5iKGIpCnQ9bC5hCnM9dD09PSJmaWxlIgpy
-PWwuYgpxPWwuZApwPWwuYwppZighKHAhPW51bGwpKXA9ci5sZW5ndGghPT0wfHxxIT1udWxsfHxzPyIi
-Om51bGwKbz1sLmUKaWYoIXMpbj1wIT1udWxsJiZvLmxlbmd0aCE9PTAKZWxzZSBuPSEwCmlmKG4mJiFD
-LnhCLm4obywiLyIpKW89Ii8iK28KbT1QLmxlKG51bGwsMCwwLGIpCnJldHVybiBuZXcgUC5Ebih0LHIs
-cCxxLG8sbSxsLnIpfSwKZ0ZqOmZ1bmN0aW9uKCl7dmFyIHQscz10aGlzLngKaWYocyE9bnVsbClyZXR1
-cm4gcwp0PXRoaXMuZQppZih0Lmxlbmd0aCE9PTAmJkMueEIuVyh0LDApPT09NDcpdD1DLnhCLkcodCwx
-KQpzPXQ9PT0iIj9DLnhEOlAuQUYobmV3IEguQTgoSC5WTSh0LnNwbGl0KCIvIiksdS5zKSx1LmRPLmIo
-UC5QSCgpKSx1LmRvKSx1Lk4pCnRoaXMuc282KHMpCnJldHVybiBzfSwKZ2hZOmZ1bmN0aW9uKCl7dmFy
-IHQscz10aGlzCmlmKHMuUT09bnVsbCl7dD1zLmYKcy5zUkgobmV3IFAuR2ooUC5XWCh0PT1udWxsPyIi
-OnQpLHUuVykpfXJldHVybiBzLlF9LApKaDpmdW5jdGlvbihhLGIpe3ZhciB0LHMscixxLHAsbwpmb3Io
-dD0wLHM9MDtDLnhCLlFpKGIsIi4uLyIscyk7KXtzKz0zOysrdH1yPUMueEIuY24oYSwiLyIpCndoaWxl
-KCEwKXtpZighKHI+MCYmdD4wKSlicmVhawpxPUMueEIuUGsoYSwiLyIsci0xKQppZihxPDApYnJlYWsK
-cD1yLXEKbz1wIT09MgppZighb3x8cD09PTMpaWYoQy54Qi5tKGEscSsxKT09PTQ2KW89IW98fEMueEIu
-bShhLHErMik9PT00NgplbHNlIG89ITEKZWxzZSBvPSExCmlmKG8pYnJlYWs7LS10CnI9cX1yZXR1cm4g
-Qy54Qi5pNyhhLHIrMSxudWxsLEMueEIuRyhiLHMtMyp0KSl9LApaSTpmdW5jdGlvbihhKXtyZXR1cm4g
-dGhpcy5tUyhQLmhLKGEpKX0sCm1TOmZ1bmN0aW9uKGEpe3ZhciB0LHMscixxLHAsbyxuLG0sbCxrPXRo
-aXMsaj1udWxsCmlmKGEuZ0ZpKCkubGVuZ3RoIT09MCl7dD1hLmdGaSgpCmlmKGEuZ2NqKCkpe3M9YS5n
-a3UoKQpyPWEuZ0pmKGEpCnE9YS5neEEoKT9hLmd0cChhKTpqfWVsc2V7cT1qCnI9cQpzPSIifXA9UC54
-ZShhLmdJaShhKSkKbz1hLmdRRCgpP2EuZ3RQKCk6an1lbHNle3Q9ay5hCmlmKGEuZ2NqKCkpe3M9YS5n
-a3UoKQpyPWEuZ0pmKGEpCnE9UC53QihhLmd4QSgpP2EuZ3RwKGEpOmosdCkKcD1QLnhlKGEuZ0lpKGEp
-KQpvPWEuZ1FEKCk/YS5ndFAoKTpqfWVsc2V7cz1rLmIKcj1rLmMKcT1rLmQKaWYoYS5nSWkoYSk9PT0i
-Iil7cD1rLmUKbz1hLmdRRCgpP2EuZ3RQKCk6ay5mfWVsc2V7aWYoYS5ndFQoKSlwPVAueGUoYS5nSWko
-YSkpCmVsc2V7bj1rLmUKaWYobi5sZW5ndGg9PT0wKWlmKHI9PW51bGwpcD10Lmxlbmd0aD09PTA/YS5n
-SWkoYSk6UC54ZShhLmdJaShhKSkKZWxzZSBwPVAueGUoIi8iK2EuZ0lpKGEpKQplbHNle209ay5KaChu
-LGEuZ0lpKGEpKQpsPXQubGVuZ3RoPT09MAppZighbHx8ciE9bnVsbHx8Qy54Qi5uKG4sIi8iKSlwPVAu
-eGUobSkKZWxzZSBwPVAud0YobSwhbHx8ciE9bnVsbCl9fW89YS5nUUQoKT9hLmd0UCgpOmp9fX1yZXR1
-cm4gbmV3IFAuRG4odCxzLHIscSxwLG8sYS5nWjgoKT9hLmdLYSgpOmopfSwKZ2NqOmZ1bmN0aW9uKCl7
-cmV0dXJuIHRoaXMuYyE9bnVsbH0sCmd4QTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmQhPW51bGx9LApn
-UUQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5mIT1udWxsfSwKZ1o4OmZ1bmN0aW9uKCl7cmV0dXJuIHRo
-aXMuciE9bnVsbH0sCmd0VDpmdW5jdGlvbigpe3JldHVybiBDLnhCLm4odGhpcy5lLCIvIil9LAp0NDpm
-dW5jdGlvbigpe3ZhciB0LHMscj10aGlzLHE9ci5hCmlmKHEhPT0iIiYmcSE9PSJmaWxlIil0aHJvdyBI
-LmIoUC5MNCgiQ2Fubm90IGV4dHJhY3QgYSBmaWxlIHBhdGggZnJvbSBhICIrSC5kKHEpKyIgVVJJIikp
-CnE9ci5mCmlmKChxPT1udWxsPyIiOnEpIT09IiIpdGhyb3cgSC5iKFAuTDQoIkNhbm5vdCBleHRyYWN0
-IGEgZmlsZSBwYXRoIGZyb20gYSBVUkkgd2l0aCBhIHF1ZXJ5IGNvbXBvbmVudCIpKQpxPXIucgppZigo
-cT09bnVsbD8iIjpxKSE9PSIiKXRocm93IEguYihQLkw0KCJDYW5ub3QgZXh0cmFjdCBhIGZpbGUgcGF0
-aCBmcm9tIGEgVVJJIHdpdGggYSBmcmFnbWVudCBjb21wb25lbnQiKSkKdD0kLndRKCkKaWYoSC5vVCh0
-KSlxPVAubW4ocikKZWxzZXtpZihyLmMhPW51bGwmJnIuZ0pmKHIpIT09IiIpSC52aChQLkw0KCJDYW5u
-b3QgZXh0cmFjdCBhIG5vbi1XaW5kb3dzIGZpbGUgcGF0aCBmcm9tIGEgZmlsZSBVUkkgd2l0aCBhbiBh
-dXRob3JpdHkiKSkKcz1yLmdGaigpClAua0UocywhMSkKcT1QLnZnKEMueEIubihyLmUsIi8iKT8iLyI6
-IiIscywiLyIpCnE9cS5jaGFyQ29kZUF0KDApPT0wP3E6cX1yZXR1cm4gcX0sCnc6ZnVuY3Rpb24oYSl7
-dmFyIHQscyxyLHE9dGhpcyxwPXEueQppZihwPT1udWxsKXtwPXEuYQp0PXAubGVuZ3RoIT09MD9wKyI6
-IjoiIgpzPXEuYwpyPXM9PW51bGwKaWYoIXJ8fHA9PT0iZmlsZSIpe3A9dCsiLy8iCnQ9cS5iCmlmKHQu
-bGVuZ3RoIT09MClwPXArdCsiQCIKaWYoIXIpcCs9cwp0PXEuZAppZih0IT1udWxsKXA9cCsiOiIrSC5k
-KHQpfWVsc2UgcD10CnArPXEuZQp0PXEuZgppZih0IT1udWxsKXA9cCsiPyIrdAp0PXEucgppZih0IT1u
-dWxsKXA9cCsiIyIrdApwPXEueT1wLmNoYXJDb2RlQXQoMCk9PTA/cDpwfXJldHVybiBwfSwKRE46ZnVu
-Y3Rpb24oYSxiKXt2YXIgdCxzLHI9dGhpcwppZihiPT1udWxsKXJldHVybiExCmlmKHI9PT1iKXJldHVy
-biEwCmlmKHUuRC5jKGIpKWlmKHIuYT09Yi5nRmkoKSlpZihyLmMhPW51bGw9PT1iLmdjaigpKWlmKHIu
-Yj09Yi5na3UoKSlpZihyLmdKZihyKT09Yi5nSmYoYikpaWYoci5ndHAocik9PWIuZ3RwKGIpKWlmKHIu
-ZT09PWIuZ0lpKGIpKXt0PXIuZgpzPXQ9PW51bGwKaWYoIXM9PT1iLmdRRCgpKXtpZihzKXQ9IiIKaWYo
-dD09PWIuZ3RQKCkpe3Q9ci5yCnM9dD09bnVsbAppZighcz09PWIuZ1o4KCkpe2lmKHMpdD0iIgp0PXQ9
-PT1iLmdLYSgpfWVsc2UgdD0hMX1lbHNlIHQ9ITF9ZWxzZSB0PSExfWVsc2UgdD0hMQplbHNlIHQ9ITEK
-ZWxzZSB0PSExCmVsc2UgdD0hMQplbHNlIHQ9ITEKZWxzZSB0PSExCmVsc2UgdD0hMQpyZXR1cm4gdH0s
-CmdpTzpmdW5jdGlvbihhKXt2YXIgdD10aGlzLnoKcmV0dXJuIHQ9PW51bGw/dGhpcy56PUMueEIuZ2lP
-KHRoaXMudygwKSk6dH0sCnNvNjpmdW5jdGlvbihhKXt0aGlzLng9dS5hLmIoYSl9LApzUkg6ZnVuY3Rp
-b24oYSl7dGhpcy5RPXUuZi5iKGEpfSwKJGlpRDoxLApnRmk6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5h
-fSwKZ0lpOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLmV9fQpQLmUxLnByb3RvdHlwZT17CiQxOmZ1bmN0
-aW9uKGEpe3Rocm93IEguYihQLnJyKCJJbnZhbGlkIHBvcnQiLHRoaXMuYSx0aGlzLmIrMSkpfSwKJFM6
-MTR9ClAuTlkucHJvdG90eXBlPXsKJDE6ZnVuY3Rpb24oYSl7dmFyIHQ9IklsbGVnYWwgcGF0aCBjaGFy
-YWN0ZXIgIgpILnkoYSkKaWYoSi56bChhLCIvIikpaWYodGhpcy5hKXRocm93IEguYihQLnhZKHQrYSkp
-CmVsc2UgdGhyb3cgSC5iKFAuTDQodCthKSl9LAokUzoxNH0KUC5SWi5wcm90b3R5cGU9ewokMTpmdW5j
-dGlvbihhKXtyZXR1cm4gUC5lUChDLlpKLEgueShhKSxDLnhNLCExKX0sCiRTOjV9ClAuTUUucHJvdG90
-eXBlPXsKJDI6ZnVuY3Rpb24oYSxiKXt2YXIgdD10aGlzLmIscz10aGlzLmEKdC5hKz1zLmEKcy5hPSIm
-IgpzPXQuYSs9SC5kKFAuZVAoQy5GMyxhLEMueE0sITApKQppZihiIT1udWxsJiZiLmxlbmd0aCE9PTAp
-e3QuYT1zKyI9Igp0LmErPUguZChQLmVQKEMuRjMsYixDLnhNLCEwKSl9fSwKJFM6MjJ9ClAueTUucHJv
-dG90eXBlPXsKJDI6ZnVuY3Rpb24oYSxiKXt2YXIgdCxzCkgueShhKQppZihiPT1udWxsfHx0eXBlb2Yg
-Yj09InN0cmluZyIpdGhpcy5hLiQyKGEsSC55KGIpKQplbHNlIGZvcih0PUouSVQodS5SLmIoYikpLHM9
-dGhpcy5hO3QuRigpOylzLiQyKGEsSC55KHQuZ2woKSkpfSwKJFM6MTN9ClAuUEUucHJvdG90eXBlPXsK
-Z2xSOmZ1bmN0aW9uKCl7dmFyIHQscyxyLHEscD10aGlzLG89bnVsbCxuPXAuYwppZihuIT1udWxsKXJl
-dHVybiBuCm49cC5iCmlmKDA+PW4ubGVuZ3RoKXJldHVybiBILk9IKG4sMCkKdD1wLmEKbj1uWzBdKzEK
-cz1DLnhCLlhVKHQsIj8iLG4pCnI9dC5sZW5ndGgKaWYocz49MCl7cT1QLlBJKHQscysxLHIsQy5WQywh
-MSkKcj1zfWVsc2UgcT1vCnJldHVybiBwLmM9bmV3IFAucWUoImRhdGEiLG8sbyxvLFAuUEkodCxuLHIs
-Qy5XZCwhMSkscSxvKX0sCnc6ZnVuY3Rpb24oYSl7dmFyIHQscz10aGlzLmIKaWYoMD49cy5sZW5ndGgp
-cmV0dXJuIEguT0gocywwKQp0PXRoaXMuYQpyZXR1cm4gc1swXT09PS0xPyJkYXRhOiIrdDp0fX0KUC5x
-My5wcm90b3R5cGU9ewokMTpmdW5jdGlvbihhKXtyZXR1cm4gbmV3IFVpbnQ4QXJyYXkoOTYpfSwKJFM6
-MjN9ClAueUkucHJvdG90eXBlPXsKJDI6ZnVuY3Rpb24oYSxiKXt2YXIgdD10aGlzLmEKaWYoYT49dC5s
-ZW5ndGgpcmV0dXJuIEguT0godCxhKQp0PXRbYV0KSi5DTSh0LDAsOTYsYikKcmV0dXJuIHR9LAokUzoy
-NH0KUC5jNi5wcm90b3R5cGU9ewokMzpmdW5jdGlvbihhLGIsYyl7dmFyIHQscyxyLHEKZm9yKHQ9Yi5s
-ZW5ndGgscz1hLmxlbmd0aCxyPTA7cjx0Oysrcil7cT1DLnhCLlcoYixyKV45NgppZihxPj1zKXJldHVy
-biBILk9IKGEscSkKYVtxXT1jfX19ClAucWQucHJvdG90eXBlPXsKJDM6ZnVuY3Rpb24oYSxiLGMpe3Zh
-ciB0LHMscixxCmZvcih0PUMueEIuVyhiLDApLHM9Qy54Qi5XKGIsMSkscj1hLmxlbmd0aDt0PD1zOysr
-dCl7cT0odF45Nik+Pj4wCmlmKHE+PXIpcmV0dXJuIEguT0goYSxxKQphW3FdPWN9fX0KUC5VZi5wcm90
-b3R5cGU9ewpnY2o6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jPjB9LApneEE6ZnVuY3Rpb24oKXt2YXIg
-dCxzCmlmKHRoaXMuYz4wKXt0PXRoaXMuZAppZih0eXBlb2YgdCE9PSJudW1iZXIiKXJldHVybiB0Lmgo
-KQpzPXRoaXMuZQppZih0eXBlb2YgcyE9PSJudW1iZXIiKXJldHVybiBILnBZKHMpCnM9dCsxPHMKdD1z
-fWVsc2UgdD0hMQpyZXR1cm4gdH0sCmdRRDpmdW5jdGlvbigpe3ZhciB0PXRoaXMuZgppZih0eXBlb2Yg
-dCE9PSJudW1iZXIiKXJldHVybiB0LkooKQpyZXR1cm4gdDx0aGlzLnJ9LApnWjg6ZnVuY3Rpb24oKXty
+PTA/czpzfX0sCmV2OmZ1bmN0aW9uKGEsYil7cmV0dXJuIHRoaXMuR0coMCxILkxoKHRoaXMpLkMoImEy
+KGFMLkUpIikuYShiKSl9LApFMjpmdW5jdGlvbihhLGIsYyl7dmFyIHQ9SC5MaCh0aGlzKQpyZXR1cm4g
+bmV3IEgubEoodGhpcyx0LktxKGMpLkMoIjEoYUwuRSkiKS5hKGIpLHQuQygiQDxhTC5FPiIpLktxKGMp
+LkMoImxKPDEsMj4iKSl9fQpILm5ILnByb3RvdHlwZT17CmdVRDpmdW5jdGlvbigpe3ZhciB0PUouSG0o
+dGhpcy5hKSxzPXRoaXMuYwppZihzPT1udWxsfHxzPnQpcmV0dXJuIHQKcmV0dXJuIHN9LApnQXM6ZnVu
+Y3Rpb24oKXt2YXIgdD1KLkhtKHRoaXMuYSkscz10aGlzLmIKaWYocz50KXJldHVybiB0CnJldHVybiBz
+fSwKZ0E6ZnVuY3Rpb24oYSl7dmFyIHQscz1KLkhtKHRoaXMuYSkscj10aGlzLmIKaWYocj49cylyZXR1
+cm4gMAp0PXRoaXMuYwppZih0PT1udWxsfHx0Pj1zKXJldHVybiBzLXIKaWYodHlwZW9mIHQhPT0ibnVt
+YmVyIilyZXR1cm4gdC5ITigpCnJldHVybiB0LXJ9LApFOmZ1bmN0aW9uKGEsYil7dmFyIHQ9dGhpcyxz
+PXQuZ0FzKCkrYgppZihiPDB8fHM+PXQuZ1VEKCkpdGhyb3cgSC5iKFAuQ2YoYix0LCJpbmRleCIsbnVs
+bCxudWxsKSkKcmV0dXJuIEouR0EodC5hLHMpfX0KSC5hNy5wcm90b3R5cGU9ewpnbDpmdW5jdGlvbigp
+e3ZhciB0PXRoaXMuZApyZXR1cm4gdH0sCkY6ZnVuY3Rpb24oKXt2YXIgdCxzPXRoaXMscj1zLmEscT1K
+LlU2KHIpLHA9cS5nQShyKQppZihzLmIhPT1wKXRocm93IEguYihQLmE0KHIpKQp0PXMuYwppZih0Pj1w
+KXtzLnNJKG51bGwpCnJldHVybiExfXMuc0kocS5FKHIsdCkpOysrcy5jCnJldHVybiEwfSwKc0k6ZnVu
+Y3Rpb24oYSl7dGhpcy5kPXRoaXMuJHRpLkMoIjE/IikuYShhKX0sCiRpQW46MX0KSC5pMS5wcm90b3R5
+cGU9ewpna3o6ZnVuY3Rpb24oYSl7dmFyIHQ9SC5MaCh0aGlzKQpyZXR1cm4gbmV3IEguTUgoSi5JVCh0
+aGlzLmEpLHRoaXMuYix0LkMoIkA8MT4iKS5LcSh0LlFbMV0pLkMoIk1IPDEsMj4iKSl9LApnQTpmdW5j
+dGlvbihhKXtyZXR1cm4gSi5IbSh0aGlzLmEpfX0KSC54eS5wcm90b3R5cGU9eyRpYlE6MX0KSC5NSC5w
+cm90b3R5cGU9ewpGOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcyxzPXQuYgppZihzLkYoKSl7dC5zSSh0LmMu
+JDEocy5nbCgpKSkKcmV0dXJuITB9dC5zSShudWxsKQpyZXR1cm4hMX0sCmdsOmZ1bmN0aW9uKCl7dmFy
+IHQ9dGhpcy5hCnJldHVybiB0fSwKc0k6ZnVuY3Rpb24oYSl7dGhpcy5hPXRoaXMuJHRpLkMoIjI/Iiku
+YShhKX19CkgubEoucHJvdG90eXBlPXsKZ0E6ZnVuY3Rpb24oYSl7cmV0dXJuIEouSG0odGhpcy5hKX0s
+CkU6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gdGhpcy5iLiQxKEouR0EodGhpcy5hLGIpKX19CkguVTUucHJv
+dG90eXBlPXsKZ2t6OmZ1bmN0aW9uKGEpe3JldHVybiBuZXcgSC5TTyhKLklUKHRoaXMuYSksdGhpcy5i
+LHRoaXMuJHRpLkMoIlNPPDE+IikpfX0KSC5TTy5wcm90b3R5cGU9ewpGOmZ1bmN0aW9uKCl7dmFyIHQs
+cwpmb3IodD10aGlzLmEscz10aGlzLmI7dC5GKCk7KWlmKEgub1Qocy4kMSh0LmdsKCkpKSlyZXR1cm4h
+MApyZXR1cm4hMX0sCmdsOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuYS5nbCgpfX0KSC5TVS5wcm90b3R5
+cGU9e30KSC5SZS5wcm90b3R5cGU9ewpZOmZ1bmN0aW9uKGEsYixjKXtILkxoKHRoaXMpLkMoIlJlLkUi
+KS5hKGMpCnRocm93IEguYihQLkw0KCJDYW5ub3QgbW9kaWZ5IGFuIHVubW9kaWZpYWJsZSBsaXN0Iikp
+fX0KSC53Mi5wcm90b3R5cGU9e30KSC53di5wcm90b3R5cGU9ewpnaU86ZnVuY3Rpb24oYSl7dmFyIHQ9
+dGhpcy5faGFzaENvZGUKaWYodCE9bnVsbClyZXR1cm4gdAp0PTUzNjg3MDkxMSY2NjQ1OTcqSi5oZih0
+aGlzLmEpCnRoaXMuX2hhc2hDb2RlPXQKcmV0dXJuIHR9LAp3OmZ1bmN0aW9uKGEpe3JldHVybidTeW1i
+b2woIicrSC5Faih0aGlzLmEpKyciKSd9LApETjpmdW5jdGlvbihhLGIpe2lmKGI9PW51bGwpcmV0dXJu
+ITEKcmV0dXJuIGIgaW5zdGFuY2VvZiBILnd2JiZ0aGlzLmE9PWIuYX0sCiRpR0Q6MX0KSC5QRC5wcm90
+b3R5cGU9e30KSC5XVS5wcm90b3R5cGU9ewp3OmZ1bmN0aW9uKGEpe3JldHVybiBQLm5PKHRoaXMpfSwK
+WTpmdW5jdGlvbihhLGIsYyl7dmFyIHQ9SC5MaCh0aGlzKQp0LmMuYShiKQp0LlFbMV0uYShjKQpILmRj
+KCl9LApnUHU6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMucTQoYSxILkxoKHRoaXMpLkMoIk4zPDEsMj4i
+KSl9LApxNDpmdW5jdGlvbihhLGIpe3ZhciB0PXRoaXMKcmV0dXJuIFAubDAoZnVuY3Rpb24oKXt2YXIg
+cz1hCnZhciByPTAscT0xLHAsbyxuLG0sbApyZXR1cm4gZnVuY3Rpb24gJGFzeW5jJGdQdShjLGQpe2lm
+KGM9PT0xKXtwPWQKcj1xfXdoaWxlKHRydWUpc3dpdGNoKHIpe2Nhc2UgMDpvPXQuZ1YoKSxvPW8uZ2t6
+KG8pLG49SC5MaCh0KSxuPW4uQygiQDwxPiIpLktxKG4uUVsxXSkuQygiTjM8MSwyPiIpCmNhc2UgMjpp
+Zighby5GKCkpe3I9MwpicmVha31tPW8uZ2woKQpsPXQucSgwLG0pCmwudG9TdHJpbmcKcj00CnJldHVy
+biBuZXcgUC5OMyhtLGwsbikKY2FzZSA0OnI9MgpicmVhawpjYXNlIDM6cmV0dXJuIFAuVGgoKQpjYXNl
+IDE6cmV0dXJuIFAuWW0ocCl9fX0sYil9LAokaVowOjF9CkguTFAucHJvdG90eXBlPXsKZ0E6ZnVuY3Rp
+b24oYSl7cmV0dXJuIHRoaXMuYX0sCng0OmZ1bmN0aW9uKGEpe2lmKHR5cGVvZiBhIT0ic3RyaW5nIily
+ZXR1cm4hMQppZigiX19wcm90b19fIj09PWEpcmV0dXJuITEKcmV0dXJuIHRoaXMuYi5oYXNPd25Qcm9w
+ZXJ0eShhKX0sCnE6ZnVuY3Rpb24oYSxiKXtpZighdGhpcy54NChiKSlyZXR1cm4gbnVsbApyZXR1cm4g
+dGhpcy5EKGIpfSwKRDpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5iW0guaChhKV19LApLOmZ1bmN0aW9u
+KGEsYil7dmFyIHQscyxyLHEscD1ILkxoKHRoaXMpCnAuQygifigxLDIpIikuYShiKQp0PXRoaXMuYwpm
+b3Iocz10Lmxlbmd0aCxwPXAuUVsxXSxyPTA7cjxzOysrcil7cT10W3JdCmIuJDIocSxwLmEodGhpcy5E
+KHEpKSl9fSwKZ1Y6ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IEguWFIodGhpcyxILkxoKHRoaXMpLkMoIlhS
+PDE+IikpfX0KSC5YUi5wcm90b3R5cGU9ewpna3o6ZnVuY3Rpb24oYSl7dmFyIHQ9dGhpcy5hLmMKcmV0
+dXJuIG5ldyBKLm0xKHQsdC5sZW5ndGgsSC50Nih0KS5DKCJtMTwxPiIpKX0sCmdBOmZ1bmN0aW9uKGEp
+e3JldHVybiB0aGlzLmEuYy5sZW5ndGh9fQpILkxJLnByb3RvdHlwZT17CmdXYTpmdW5jdGlvbigpe3Zh
+ciB0PXRoaXMuYQpyZXR1cm4gdH0sCmduZDpmdW5jdGlvbigpe3ZhciB0LHMscixxLHA9dGhpcwppZihw
+LmM9PT0xKXJldHVybiBDLmRuCnQ9cC5kCnM9dC5sZW5ndGgtcC5lLmxlbmd0aC1wLmYKaWYocz09PTAp
+cmV0dXJuIEMuZG4Kcj1bXQpmb3IocT0wO3E8czsrK3Epe2lmKHE+PXQubGVuZ3RoKXJldHVybiBILk9I
+KHQscSkKci5wdXNoKHRbcV0pfXJldHVybiBKLnpDKHIpfSwKZ1ZtOmZ1bmN0aW9uKCl7dmFyIHQscyxy
+LHEscCxvLG4sbSxsPXRoaXMKaWYobC5jIT09MClyZXR1cm4gQy5EeAp0PWwuZQpzPXQubGVuZ3RoCnI9
+bC5kCnE9ci5sZW5ndGgtcy1sLmYKaWYocz09PTApcmV0dXJuIEMuRHgKcD1uZXcgSC5ONSh1LmVvKQpm
+b3Iobz0wO288czsrK28pe2lmKG8+PXQubGVuZ3RoKXJldHVybiBILk9IKHQsbykKbj10W29dCm09cStv
+CmlmKG08MHx8bT49ci5sZW5ndGgpcmV0dXJuIEguT0gocixtKQpwLlkoMCxuZXcgSC53dihuKSxyW21d
+KX1yZXR1cm4gbmV3IEguUEQocCx1LmdGKX0sCiRpdlE6MX0KSC5Dai5wcm90b3R5cGU9ewokMjpmdW5j
+dGlvbihhLGIpe3ZhciB0CkguaChhKQp0PXRoaXMuYQp0LmI9dC5iKyIkIitILkVqKGEpCkMuTm0uaSh0
+aGlzLmIsYSkKQy5ObS5pKHRoaXMuYyxiKTsrK3QuYX0sCiRTOjEyfQpILmY5LnByb3RvdHlwZT17CnFT
+OmZ1bmN0aW9uKGEpe3ZhciB0LHMscj10aGlzLHE9bmV3IFJlZ0V4cChyLmEpLmV4ZWMoYSkKaWYocT09
+bnVsbClyZXR1cm4gbnVsbAp0PU9iamVjdC5jcmVhdGUobnVsbCkKcz1yLmIKaWYocyE9PS0xKXQuYXJn
+dW1lbnRzPXFbcysxXQpzPXIuYwppZihzIT09LTEpdC5hcmd1bWVudHNFeHByPXFbcysxXQpzPXIuZApp
+ZihzIT09LTEpdC5leHByPXFbcysxXQpzPXIuZQppZihzIT09LTEpdC5tZXRob2Q9cVtzKzFdCnM9ci5m
+CmlmKHMhPT0tMSl0LnJlY2VpdmVyPXFbcysxXQpyZXR1cm4gdH19CkguVzAucHJvdG90eXBlPXsKdzpm
+dW5jdGlvbihhKXt2YXIgdD10aGlzLmIKaWYodD09bnVsbClyZXR1cm4iTm9TdWNoTWV0aG9kRXJyb3I6
+ICIrSC5Faih0aGlzLmEpCnJldHVybiJOb1N1Y2hNZXRob2RFcnJvcjogbWV0aG9kIG5vdCBmb3VuZDog
+JyIrdCsiJyBvbiBudWxsIn19CkguYXoucHJvdG90eXBlPXsKdzpmdW5jdGlvbihhKXt2YXIgdCxzPXRo
+aXMscj0iTm9TdWNoTWV0aG9kRXJyb3I6IG1ldGhvZCBub3QgZm91bmQ6ICciLHE9cy5iCmlmKHE9PW51
+bGwpcmV0dXJuIk5vU3VjaE1ldGhvZEVycm9yOiAiK0guRWoocy5hKQp0PXMuYwppZih0PT1udWxsKXJl
+dHVybiByK3ErIicgKCIrSC5FaihzLmEpKyIpIgpyZXR1cm4gcitxKyInIG9uICciK3QrIicgKCIrSC5F
+aihzLmEpKyIpIn19CkgudlYucHJvdG90eXBlPXsKdzpmdW5jdGlvbihhKXt2YXIgdD10aGlzLmEKcmV0
+dXJuIHQubGVuZ3RoPT09MD8iRXJyb3IiOiJFcnJvcjogIit0fX0KSC5icS5wcm90b3R5cGU9e30KSC5B
+bS5wcm90b3R5cGU9ewokMTpmdW5jdGlvbihhKXtpZih1LlcuYihhKSlpZihhLiR0aHJvd25Kc0Vycm9y
+PT1udWxsKWEuJHRocm93bkpzRXJyb3I9dGhpcy5hCnJldHVybiBhfSwKJFM6NX0KSC5YTy5wcm90b3R5
+cGU9ewp3OmZ1bmN0aW9uKGEpe3ZhciB0LHM9dGhpcy5iCmlmKHMhPW51bGwpcmV0dXJuIHMKcz10aGlz
+LmEKdD1zIT09bnVsbCYmdHlwZW9mIHM9PT0ib2JqZWN0Ij9zLnN0YWNrOm51bGwKcmV0dXJuIHRoaXMu
+Yj10PT1udWxsPyIiOnR9LAokaUd6OjF9Ckgudi5wcm90b3R5cGU9ewp3OmZ1bmN0aW9uKGEpe3ZhciB0
+PXRoaXMuY29uc3RydWN0b3Iscz10PT1udWxsP251bGw6dC5uYW1lCnJldHVybiJDbG9zdXJlICciK0gu
+TlEocz09bnVsbD8idW5rbm93biI6cykrIicifSwKJGlFSDoxLApnUWw6ZnVuY3Rpb24oKXtyZXR1cm4g
+dGhpc30sCiRDOiIkMSIsCiRSOjEsCiREOm51bGx9CkgubGMucHJvdG90eXBlPXt9CkguengucHJvdG90
+eXBlPXsKdzpmdW5jdGlvbihhKXt2YXIgdD10aGlzLiRzdGF0aWNfbmFtZQppZih0PT1udWxsKXJldHVy
+biJDbG9zdXJlIG9mIHVua25vd24gc3RhdGljIG1ldGhvZCIKcmV0dXJuIkNsb3N1cmUgJyIrSC5OUSh0
+KSsiJyJ9fQpILnJULnByb3RvdHlwZT17CkROOmZ1bmN0aW9uKGEsYil7dmFyIHQ9dGhpcwppZihiPT1u
+dWxsKXJldHVybiExCmlmKHQ9PT1iKXJldHVybiEwCmlmKCEoYiBpbnN0YW5jZW9mIEguclQpKXJldHVy
+biExCnJldHVybiB0LmE9PT1iLmEmJnQuYj09PWIuYiYmdC5jPT09Yi5jfSwKZ2lPOmZ1bmN0aW9uKGEp
+e3ZhciB0LHM9dGhpcy5jCmlmKHM9PW51bGwpdD1ILmVRKHRoaXMuYSkKZWxzZSB0PXR5cGVvZiBzIT09
+Im9iamVjdCI/Si5oZihzKTpILmVRKHMpCnJldHVybih0XkguZVEodGhpcy5iKSk+Pj4wfSwKdzpmdW5j
+dGlvbihhKXt2YXIgdD10aGlzLmMKaWYodD09bnVsbCl0PXRoaXMuYQpyZXR1cm4iQ2xvc3VyZSAnIitI
+LkVqKHRoaXMuZCkrIicgb2YgIisoIkluc3RhbmNlIG9mICciK0guRWooSC5NKHQpKSsiJyIpfX0KSC5F
+cS5wcm90b3R5cGU9ewp3OmZ1bmN0aW9uKGEpe3JldHVybiJSdW50aW1lRXJyb3I6ICIrSC5Faih0aGlz
+LmEpfX0KSC5rWS5wcm90b3R5cGU9ewp3OmZ1bmN0aW9uKGEpe3JldHVybiJBc3NlcnRpb24gZmFpbGVk
+OiAiK1AucCh0aGlzLmEpfX0KSC5ONS5wcm90b3R5cGU9ewpnQTpmdW5jdGlvbihhKXtyZXR1cm4gdGhp
+cy5hfSwKZ1Y6ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IEguaTUodGhpcyxILkxoKHRoaXMpLkMoImk1PDE+
+IikpfSwKeDQ6ZnVuY3Rpb24oYSl7dmFyIHQscwppZih0eXBlb2YgYT09InN0cmluZyIpe3Q9dGhpcy5i
+CmlmKHQ9PW51bGwpcmV0dXJuITEKcmV0dXJuIHRoaXMuWHUodCxhKX1lbHNle3M9dGhpcy5DWChhKQpy
+ZXR1cm4gc319LApDWDpmdW5jdGlvbihhKXt2YXIgdD10aGlzLmQKaWYodD09bnVsbClyZXR1cm4hMQpy
+ZXR1cm4gdGhpcy5GaCh0aGlzLkJ0KHQsSi5oZihhKSYweDNmZmZmZmYpLGEpPj0wfSwKcTpmdW5jdGlv
+bihhLGIpe3ZhciB0LHMscixxLHA9dGhpcyxvPW51bGwKaWYodHlwZW9mIGI9PSJzdHJpbmciKXt0PXAu
+YgppZih0PT1udWxsKXJldHVybiBvCnM9cC5qMih0LGIpCnI9cz09bnVsbD9vOnMuYgpyZXR1cm4gcn1l
+bHNlIGlmKHR5cGVvZiBiPT0ibnVtYmVyIiYmKGImMHgzZmZmZmZmKT09PWIpe3E9cC5jCmlmKHE9PW51
+bGwpcmV0dXJuIG8Kcz1wLmoyKHEsYikKcj1zPT1udWxsP286cy5iCnJldHVybiByfWVsc2UgcmV0dXJu
+IHAuYWEoYil9LAphYTpmdW5jdGlvbihhKXt2YXIgdCxzLHI9dGhpcy5kCmlmKHI9PW51bGwpcmV0dXJu
+IG51bGwKdD10aGlzLkJ0KHIsSi5oZihhKSYweDNmZmZmZmYpCnM9dGhpcy5GaCh0LGEpCmlmKHM8MCly
+ZXR1cm4gbnVsbApyZXR1cm4gdFtzXS5ifSwKWTpmdW5jdGlvbihhLGIsYyl7dmFyIHQscyxyLHEscCxv
+LG49dGhpcyxtPUguTGgobikKbS5jLmEoYikKbS5RWzFdLmEoYykKaWYodHlwZW9mIGI9PSJzdHJpbmci
+KXt0PW4uYgpuLkVIKHQ9PW51bGw/bi5iPW4ueksoKTp0LGIsYyl9ZWxzZSBpZih0eXBlb2YgYj09Im51
+bWJlciImJihiJjB4M2ZmZmZmZik9PT1iKXtzPW4uYwpuLkVIKHM9PW51bGw/bi5jPW4ueksoKTpzLGIs
+Yyl9ZWxzZXtyPW4uZAppZihyPT1udWxsKXI9bi5kPW4ueksoKQpxPUouaGYoYikmMHgzZmZmZmZmCnA9
+bi5CdChyLHEpCmlmKHA9PW51bGwpbi5FSShyLHEsW24uSG4oYixjKV0pCmVsc2V7bz1uLkZoKHAsYikK
+aWYobz49MClwW29dLmI9YwplbHNlIHAucHVzaChuLkhuKGIsYykpfX19LApLOmZ1bmN0aW9uKGEsYil7
+dmFyIHQscyxyPXRoaXMKSC5MaChyKS5DKCJ+KDEsMikiKS5hKGIpCnQ9ci5lCnM9ci5yCmZvcig7dCE9
+bnVsbDspe2IuJDIodC5hLHQuYikKaWYocyE9PXIucil0aHJvdyBILmIoUC5hNChyKSkKdD10LmN9fSwK
+RUg6ZnVuY3Rpb24oYSxiLGMpe3ZhciB0LHM9dGhpcyxyPUguTGgocykKci5jLmEoYikKci5RWzFdLmEo
+YykKdD1zLmoyKGEsYikKaWYodD09bnVsbClzLkVJKGEsYixzLkhuKGIsYykpCmVsc2UgdC5iPWN9LApr
+czpmdW5jdGlvbigpe3RoaXMucj10aGlzLnIrMSY2NzEwODg2M30sCkhuOmZ1bmN0aW9uKGEsYil7dmFy
+IHQ9dGhpcyxzPUguTGgodCkscj1uZXcgSC5kYihzLmMuYShhKSxzLlFbMV0uYShiKSkKaWYodC5lPT1u
+dWxsKXQuZT10LmY9cgplbHNle3M9dC5mCnMudG9TdHJpbmcKci5kPXMKdC5mPXMuYz1yfSsrdC5hCnQu
+a3MoKQpyZXR1cm4gcn0sCkZoOmZ1bmN0aW9uKGEsYil7dmFyIHQscwppZihhPT1udWxsKXJldHVybi0x
+CnQ9YS5sZW5ndGgKZm9yKHM9MDtzPHQ7KytzKWlmKEouUk0oYVtzXS5hLGIpKXJldHVybiBzCnJldHVy
+bi0xfSwKdzpmdW5jdGlvbihhKXtyZXR1cm4gUC5uTyh0aGlzKX0sCmoyOmZ1bmN0aW9uKGEsYil7cmV0
+dXJuIGFbYl19LApCdDpmdW5jdGlvbihhLGIpe3JldHVybiBhW2JdfSwKRUk6ZnVuY3Rpb24oYSxiLGMp
+e2FbYl09Y30sCnJuOmZ1bmN0aW9uKGEsYil7ZGVsZXRlIGFbYl19LApYdTpmdW5jdGlvbihhLGIpe3Jl
+dHVybiB0aGlzLmoyKGEsYikhPW51bGx9LAp6SzpmdW5jdGlvbigpe3ZhciB0PSI8bm9uLWlkZW50aWZp
+ZXIta2V5PiIscz1PYmplY3QuY3JlYXRlKG51bGwpCnRoaXMuRUkocyx0LHMpCnRoaXMucm4ocyx0KQpy
+ZXR1cm4gc30sCiRpRm86MX0KSC5kYi5wcm90b3R5cGU9e30KSC5pNS5wcm90b3R5cGU9ewpnQTpmdW5j
+dGlvbihhKXtyZXR1cm4gdGhpcy5hLmF9LApna3o6ZnVuY3Rpb24oYSl7dmFyIHQ9dGhpcy5hLHM9bmV3
+IEguTjYodCx0LnIsdGhpcy4kdGkuQygiTjY8MT4iKSkKcy5jPXQuZQpyZXR1cm4gc30sCnRnOmZ1bmN0
+aW9uKGEsYil7cmV0dXJuIHRoaXMuYS54NChiKX19CkguTjYucHJvdG90eXBlPXsKZ2w6ZnVuY3Rpb24o
+KXtyZXR1cm4gdGhpcy5kfSwKRjpmdW5jdGlvbigpe3ZhciB0LHM9dGhpcyxyPXMuYQppZihzLmIhPT1y
+LnIpdGhyb3cgSC5iKFAuYTQocikpCnQ9cy5jCmlmKHQ9PW51bGwpe3Muc3FZKG51bGwpCnJldHVybiEx
+fWVsc2V7cy5zcVkodC5hKQpzLmM9dC5jCnJldHVybiEwfX0sCnNxWTpmdW5jdGlvbihhKXt0aGlzLmQ9
+dGhpcy4kdGkuQygiMT8iKS5hKGEpfSwKJGlBbjoxfQpILmRDLnByb3RvdHlwZT17CiQxOmZ1bmN0aW9u
+KGEpe3JldHVybiB0aGlzLmEoYSl9LAokUzo1fQpILndOLnByb3RvdHlwZT17CiQyOmZ1bmN0aW9uKGEs
+Yil7cmV0dXJuIHRoaXMuYShhLGIpfSwKJFM6MjF9CkguVlgucHJvdG90eXBlPXsKJDE6ZnVuY3Rpb24o
+YSl7cmV0dXJuIHRoaXMuYShILmgoYSkpfSwKJFM6NDd9CkguVlIucHJvdG90eXBlPXsKdzpmdW5jdGlv
+bihhKXtyZXR1cm4iUmVnRXhwLyIrdGhpcy5hKyIvIit0aGlzLmIuZmxhZ3N9LApnSGM6ZnVuY3Rpb24o
+KXt2YXIgdD10aGlzLHM9dC5jCmlmKHMhPW51bGwpcmV0dXJuIHMKcz10LmIKcmV0dXJuIHQuYz1ILnY0
+KHQuYSxzLm11bHRpbGluZSwhcy5pZ25vcmVDYXNlLHMudW5pY29kZSxzLmRvdEFsbCwhMCl9LApkZDpm
+dW5jdGlvbihhLGIpe3JldHVybiBuZXcgSC5LVyh0aGlzLGIsMCl9LApVWjpmdW5jdGlvbihhLGIpe3Zh
+ciB0LHM9dGhpcy5nSGMoKQpzLmxhc3RJbmRleD1iCnQ9cy5leGVjKGEpCmlmKHQ9PW51bGwpcmV0dXJu
+IG51bGwKcmV0dXJuIG5ldyBILkVLKHQpfSwKJGl2WDoxLAokaXdMOjF9CkguRUsucHJvdG90eXBlPXsK
+cTpmdW5jdGlvbihhLGIpe3ZhciB0CkgudVAoYikKdD10aGlzLmIKaWYoYj49dC5sZW5ndGgpcmV0dXJu
+IEguT0godCxiKQpyZXR1cm4gdFtiXX0sCiRpT2Q6MSwKJGlpYjoxfQpILktXLnByb3RvdHlwZT17Cmdr
+ejpmdW5jdGlvbihhKXtyZXR1cm4gbmV3IEguUGIodGhpcy5hLHRoaXMuYix0aGlzLmMpfX0KSC5QYi5w
+cm90b3R5cGU9ewpnbDpmdW5jdGlvbigpe3ZhciB0PXRoaXMuZAp0LnRvU3RyaW5nCnJldHVybiB0fSwK
+RjpmdW5jdGlvbigpe3ZhciB0LHMscixxLHAsbyxuPXRoaXMsbT1uLmIKaWYobT09bnVsbClyZXR1cm4h
+MQp0PW4uYwpzPW0ubGVuZ3RoCmlmKHQ8PXMpe3I9bi5hCnE9ci5VWihtLHQpCmlmKHEhPW51bGwpe24u
+ZD1xCnQ9cS5iCnA9dC5pbmRleApvPXArdFswXS5sZW5ndGgKaWYocD09PW8pe2lmKHIuYi51bmljb2Rl
+KXt0PW4uYwpyPXQrMQppZihyPHMpe3Q9Qy54Qi5tKG0sdCkKaWYodD49NTUyOTYmJnQ8PTU2MzE5KXt0
+PUMueEIubShtLHIpCnQ9dD49NTYzMjAmJnQ8PTU3MzQzfWVsc2UgdD0hMX1lbHNlIHQ9ITF9ZWxzZSB0
+PSExCm89KHQ/bysxOm8pKzF9bi5jPW8KcmV0dXJuITB9fW4uYj1uLmQ9bnVsbApyZXR1cm4hMX0sCiRp
+QW46MX0KSC50US5wcm90b3R5cGU9ewpxOmZ1bmN0aW9uKGEsYil7SC51UChiKQppZihiIT09MClILnZo
+KFAuTzcoYixudWxsKSkKcmV0dXJuIHRoaXMuY30sCiRpT2Q6MX0KSC51bi5wcm90b3R5cGU9ewpna3o6
+ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyBILlNkKHRoaXMuYSx0aGlzLmIsdGhpcy5jKX19CkguU2QucHJv
+dG90eXBlPXsKRjpmdW5jdGlvbigpe3ZhciB0LHMscj10aGlzLHE9ci5jLHA9ci5iLG89cC5sZW5ndGgs
+bj1yLmEsbT1uLmxlbmd0aAppZihxK28+bSl7ci5kPW51bGwKcmV0dXJuITF9dD1uLmluZGV4T2YocCxx
+KQppZih0PDApe3IuYz1tKzEKci5kPW51bGwKcmV0dXJuITF9cz10K28Kci5kPW5ldyBILnRRKHQscCkK
+ci5jPXM9PT1yLmM/cysxOnMKcmV0dXJuITB9LApnbDpmdW5jdGlvbigpe3ZhciB0PXRoaXMuZAp0LnRv
+U3RyaW5nCnJldHVybiB0fSwKJGlBbjoxfQpILkVULnByb3RvdHlwZT17JGlFVDoxLCRpQVM6MX0KSC5i
+MC5wcm90b3R5cGU9ewpnQTpmdW5jdGlvbihhKXtyZXR1cm4gYS5sZW5ndGh9LAokaVhqOjF9CkguRGcu
+cHJvdG90eXBlPXsKcTpmdW5jdGlvbihhLGIpe0gudVAoYikKSC5vZChiLGEsYS5sZW5ndGgpCnJldHVy
+biBhW2JdfSwKWTpmdW5jdGlvbihhLGIsYyl7SC5HSChjKQpILm9kKGIsYSxhLmxlbmd0aCkKYVtiXT1j
+fSwKJGliUToxLAokaWNYOjEsCiRpek06MX0KSC5QZy5wcm90b3R5cGU9ewpZOmZ1bmN0aW9uKGEsYixj
+KXtILnVQKGMpCkgub2QoYixhLGEubGVuZ3RoKQphW2JdPWN9LAokaWJROjEsCiRpY1g6MSwKJGl6TTox
+fQpILnhqLnByb3RvdHlwZT17CnE6ZnVuY3Rpb24oYSxiKXtILnVQKGIpCkgub2QoYixhLGEubGVuZ3Ro
+KQpyZXR1cm4gYVtiXX19CkguZEUucHJvdG90eXBlPXsKcTpmdW5jdGlvbihhLGIpe0gudVAoYikKSC5v
+ZChiLGEsYS5sZW5ndGgpCnJldHVybiBhW2JdfX0KSC5aQS5wcm90b3R5cGU9ewpxOmZ1bmN0aW9uKGEs
+Yil7SC51UChiKQpILm9kKGIsYSxhLmxlbmd0aCkKcmV0dXJuIGFbYl19fQpILmRULnByb3RvdHlwZT17
+CnE6ZnVuY3Rpb24oYSxiKXtILnVQKGIpCkgub2QoYixhLGEubGVuZ3RoKQpyZXR1cm4gYVtiXX19Ckgu
+UHEucHJvdG90eXBlPXsKcTpmdW5jdGlvbihhLGIpe0gudVAoYikKSC5vZChiLGEsYS5sZW5ndGgpCnJl
+dHVybiBhW2JdfX0KSC5lRS5wcm90b3R5cGU9ewpnQTpmdW5jdGlvbihhKXtyZXR1cm4gYS5sZW5ndGh9
+LApxOmZ1bmN0aW9uKGEsYil7SC51UChiKQpILm9kKGIsYSxhLmxlbmd0aCkKcmV0dXJuIGFbYl19fQpI
+LlY2LnByb3RvdHlwZT17CmdBOmZ1bmN0aW9uKGEpe3JldHVybiBhLmxlbmd0aH0sCnE6ZnVuY3Rpb24o
+YSxiKXtILnVQKGIpCkgub2QoYixhLGEubGVuZ3RoKQpyZXR1cm4gYVtiXX0sCiRpVjY6MSwKJGluNjox
+fQpILlJHLnByb3RvdHlwZT17fQpILlZQLnByb3RvdHlwZT17fQpILldCLnByb3RvdHlwZT17fQpILlpH
+LnByb3RvdHlwZT17fQpILkpjLnByb3RvdHlwZT17CkM6ZnVuY3Rpb24oYSl7cmV0dXJuIEguY0Uodi50
+eXBlVW5pdmVyc2UsdGhpcyxhKX0sCktxOmZ1bmN0aW9uKGEpe3JldHVybiBILnY1KHYudHlwZVVuaXZl
+cnNlLHRoaXMsYSl9fQpILkcucHJvdG90eXBlPXt9CkgudTkucHJvdG90eXBlPXsKdzpmdW5jdGlvbihh
+KXtyZXR1cm4gdGhpcy5hfX0KSC5pTS5wcm90b3R5cGU9e30KUC50aC5wcm90b3R5cGU9ewokMTpmdW5j
+dGlvbihhKXt2YXIgdD10aGlzLmEscz10LmEKdC5hPW51bGwKcy4kMCgpfSwKJFM6MTF9ClAuaGEucHJv
+dG90eXBlPXsKJDE6ZnVuY3Rpb24oYSl7dmFyIHQscwp0aGlzLmEuYT11Lk0uYShhKQp0PXRoaXMuYgpz
+PXRoaXMuYwp0LmZpcnN0Q2hpbGQ/dC5yZW1vdmVDaGlsZChzKTp0LmFwcGVuZENoaWxkKHMpfSwKJFM6
+MzB9ClAuVnMucHJvdG90eXBlPXsKJDA6ZnVuY3Rpb24oKXt0aGlzLmEuJDAoKX0sCiRDOiIkMCIsCiRS
+OjAsCiRTOjB9ClAuRnQucHJvdG90eXBlPXsKJDA6ZnVuY3Rpb24oKXt0aGlzLmEuJDAoKX0sCiRDOiIk
+MCIsCiRSOjAsCiRTOjB9ClAuVzMucHJvdG90eXBlPXsKQ1k6ZnVuY3Rpb24oYSxiKXtpZihzZWxmLnNl
+dFRpbWVvdXQhPW51bGwpc2VsZi5zZXRUaW1lb3V0KEgudFIobmV3IFAueUgodGhpcyxiKSwwKSxhKQpl
+bHNlIHRocm93IEguYihQLkw0KCJgc2V0VGltZW91dCgpYCBub3QgZm91bmQuIikpfX0KUC55SC5wcm90
+b3R5cGU9ewokMDpmdW5jdGlvbigpe3RoaXMuYi4kMCgpfSwKJEM6IiQwIiwKJFI6MCwKJFM6MX0KUC5p
+aC5wcm90b3R5cGU9ewphTTpmdW5jdGlvbihhLGIpe3ZhciB0LHM9dGhpcyxyPXMuJHRpCnIuQygiMS8/
+IikuYShiKQppZighcy5iKXMuYS5YZihiKQplbHNle3Q9cy5hCmlmKHIuQygiYjg8MT4iKS5iKGIpKXQu
+Y1UoYikKZWxzZSB0LlgyKHIuYy5hKGIpKX19LAp3MDpmdW5jdGlvbihhLGIpe3ZhciB0CmlmKGI9PW51
+bGwpYj1QLnYwKGEpCnQ9dGhpcy5hCmlmKHRoaXMuYil0LlpMKGEsYikKZWxzZSB0Lk5rKGEsYil9fQpQ
+LldNLnByb3RvdHlwZT17CiQxOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLmEuJDIoMCxhKX0sCiRTOjI5
+fQpQLlNYLnByb3RvdHlwZT17CiQyOmZ1bmN0aW9uKGEsYil7dGhpcy5hLiQyKDEsbmV3IEguYnEoYSx1
+LmwuYShiKSkpfSwKJEM6IiQyIiwKJFI6MiwKJFM6MjZ9ClAuR3MucHJvdG90eXBlPXsKJDI6ZnVuY3Rp
+b24oYSxiKXt0aGlzLmEoSC51UChhKSxiKX0sCiRTOjMyfQpQLkZ5LnByb3RvdHlwZT17Cnc6ZnVuY3Rp
+b24oYSl7cmV0dXJuIkl0ZXJhdGlvbk1hcmtlcigiK3RoaXMuYisiLCAiK0guRWoodGhpcy5hKSsiKSJ9
+fQpQLkdWLnByb3RvdHlwZT17CmdsOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5jCmlmKHQ9PW51bGwpcmV0
+dXJuIHRoaXMuJHRpLmMuYSh0aGlzLmIpCnJldHVybiB0LmdsKCl9LApGOmZ1bmN0aW9uKCl7dmFyIHQs
+cyxyLHEscCxvLG49dGhpcwpmb3IodD1uLiR0aS5DKCJBbjwxPiIpOyEwOyl7cz1uLmMKaWYocyE9bnVs
+bClpZihzLkYoKSlyZXR1cm4hMAplbHNlIG4uc1g5KG51bGwpCnI9ZnVuY3Rpb24oYSxiLGMpe3ZhciBt
+LGw9Ygp3aGlsZSh0cnVlKXRyeXtyZXR1cm4gYShsLG0pfWNhdGNoKGspe209awpsPWN9fShuLmEsMCwx
+KQppZihyIGluc3RhbmNlb2YgUC5GeSl7cT1yLmIKaWYocT09PTIpe3A9bi5kCmlmKHA9PW51bGx8fHAu
+bGVuZ3RoPT09MCl7bi5zRUMobnVsbCkKcmV0dXJuITF9aWYoMD49cC5sZW5ndGgpcmV0dXJuIEguT0go
+cCwtMSkKbi5hPXAucG9wKCkKY29udGludWV9ZWxzZXtzPXIuYQppZihxPT09Myl0aHJvdyBzCmVsc2V7
+bz10LmEoSi5JVChzKSkKaWYobyBpbnN0YW5jZW9mIFAuR1Ype3M9bi5kCmlmKHM9PW51bGwpcz1uLmQ9
+W10KQy5ObS5pKHMsbi5hKQpuLmE9by5hCmNvbnRpbnVlfWVsc2V7bi5zWDkobykKY29udGludWV9fX19
+ZWxzZXtuLnNFQyhyKQpyZXR1cm4hMH19cmV0dXJuITF9LApzRUM6ZnVuY3Rpb24oYSl7dGhpcy5iPXRo
+aXMuJHRpLkMoIjE/IikuYShhKX0sCnNYOTpmdW5jdGlvbihhKXt0aGlzLmM9dGhpcy4kdGkuQygiQW48
+MT4/IikuYShhKX0sCiRpQW46MX0KUC5xNC5wcm90b3R5cGU9ewpna3o6ZnVuY3Rpb24oYSl7cmV0dXJu
+IG5ldyBQLkdWKHRoaXMuYSgpLHRoaXMuJHRpLkMoIkdWPDE+IikpfX0KUC5iOC5wcm90b3R5cGU9e30K
+UC5QZi5wcm90b3R5cGU9ewp3MDpmdW5jdGlvbihhLGIpe3ZhciB0ClAuVUkoYSwiZXJyb3IiLHUuSykK
+dD10aGlzLmEKaWYodC5hIT09MCl0aHJvdyBILmIoUC5QVigiRnV0dXJlIGFscmVhZHkgY29tcGxldGVk
+IikpCmlmKGI9PW51bGwpYj1QLnYwKGEpCnQuTmsoYSxiKX0sCnBtOmZ1bmN0aW9uKGEpe3JldHVybiB0
+aGlzLncwKGEsbnVsbCl9fQpQLlpmLnByb3RvdHlwZT17CmFNOmZ1bmN0aW9uKGEsYil7dmFyIHQscz10
+aGlzLiR0aQpzLkMoIjEvPyIpLmEoYikKdD10aGlzLmEKaWYodC5hIT09MCl0aHJvdyBILmIoUC5QVigi
+RnV0dXJlIGFscmVhZHkgY29tcGxldGVkIikpCnQuWGYocy5DKCIxLyIpLmEoYikpfX0KUC5GZS5wcm90
+b3R5cGU9ewpIUjpmdW5jdGlvbihhKXtpZigodGhpcy5jJjE1KSE9PTYpcmV0dXJuITAKcmV0dXJuIHRo
+aXMuYi5iLmJ2KHUuYWwuYSh0aGlzLmQpLGEuYSx1LnksdS5LKX0sCkt3OmZ1bmN0aW9uKGEpe3ZhciB0
+PXRoaXMuZSxzPXUueixyPXUuSyxxPXRoaXMuJHRpLkMoIjIvIikscD10aGlzLmIuYgppZih1LmFnLmIo
+dCkpcmV0dXJuIHEuYShwLnJwKHQsYS5hLGEuYixzLHIsdS5sKSkKZWxzZSByZXR1cm4gcS5hKHAuYnYo
+dS5iSS5hKHQpLGEuYSxzLHIpKX19ClAudnMucHJvdG90eXBlPXsKU3E6ZnVuY3Rpb24oYSxiLGMpe3Zh
+ciB0LHMscixxPXRoaXMuJHRpCnEuS3EoYykuQygiMS8oMikiKS5hKGEpCnQ9JC5YMwppZih0IT09Qy5O
+VSl7Yy5DKCJAPDAvPiIpLktxKHEuYykuQygiMSgyKSIpLmEoYSkKaWYoYiE9bnVsbCliPVAuVkgoYix0
+KX1zPW5ldyBQLnZzKCQuWDMsYy5DKCJ2czwwPiIpKQpyPWI9PW51bGw/MTozCnRoaXMueGYobmV3IFAu
+RmUocyxyLGEsYixxLkMoIkA8MT4iKS5LcShjKS5DKCJGZTwxLDI+IikpKQpyZXR1cm4gc30sClc3OmZ1
+bmN0aW9uKGEsYil7cmV0dXJuIHRoaXMuU3EoYSxudWxsLGIpfSwKUWQ6ZnVuY3Rpb24oYSxiLGMpe3Zh
+ciB0LHM9dGhpcy4kdGkKcy5LcShjKS5DKCIxLygyKSIpLmEoYSkKdD1uZXcgUC52cygkLlgzLGMuQygi
+dnM8MD4iKSkKdGhpcy54ZihuZXcgUC5GZSh0LDE5LGEsYixzLkMoIkA8MT4iKS5LcShjKS5DKCJGZTwx
+LDI+IikpKQpyZXR1cm4gdH0sCk9BOmZ1bmN0aW9uKGEpe3ZhciB0LHMscgp1LmI3LmEobnVsbCkKdD10
+aGlzLiR0aQpzPSQuWDMKcj1uZXcgUC52cyhzLHQpCmlmKHMhPT1DLk5VKWE9UC5WSChhLHMpCnRoaXMu
+eGYobmV3IFAuRmUociwyLG51bGwsYSx0LkMoIkA8MT4iKS5LcSh0LmMpLkMoIkZlPDEsMj4iKSkpCnJl
+dHVybiByfSwKeGY6ZnVuY3Rpb24oYSl7dmFyIHQscz10aGlzLHI9cy5hCmlmKHI8PTEpe2EuYT11LkYu
+YShzLmMpCnMuYz1hfWVsc2V7aWYocj09PTIpe3Q9dS5jLmEocy5jKQpyPXQuYQppZihyPDQpe3QueGYo
+YSkKcmV0dXJufXMuYT1yCnMuYz10LmN9UC5UayhudWxsLG51bGwscy5iLHUuTS5hKG5ldyBQLmRhKHMs
+YSkpKX19LApqUTpmdW5jdGlvbihhKXt2YXIgdCxzLHIscSxwLG8sbj10aGlzLG09e30KbS5hPWEKaWYo
+YT09bnVsbClyZXR1cm4KdD1uLmEKaWYodDw9MSl7cz11LkYuYShuLmMpCm4uYz1hCmlmKHMhPW51bGwp
+e3I9YS5hCmZvcihxPWE7ciE9bnVsbDtxPXIscj1wKXA9ci5hCnEuYT1zfX1lbHNle2lmKHQ9PT0yKXtv
+PXUuYy5hKG4uYykKdD1vLmEKaWYodDw0KXtvLmpRKGEpCnJldHVybn1uLmE9dApuLmM9by5jfW0uYT1u
+Lk44KGEpClAuVGsobnVsbCxudWxsLG4uYix1Lk0uYShuZXcgUC5vUShtLG4pKSl9fSwKYWg6ZnVuY3Rp
+b24oKXt2YXIgdD11LkYuYSh0aGlzLmMpCnRoaXMuYz1udWxsCnJldHVybiB0aGlzLk44KHQpfSwKTjg6
+ZnVuY3Rpb24oYSl7dmFyIHQscyxyCmZvcih0PWEscz1udWxsO3QhPW51bGw7cz10LHQ9cil7cj10LmEK
+dC5hPXN9cmV0dXJuIHN9LApISDpmdW5jdGlvbihhKXt2YXIgdCxzPXRoaXMscj1zLiR0aQpyLkMoIjEv
+IikuYShhKQppZihyLkMoImI4PDE+IikuYihhKSlpZihyLmIoYSkpUC5BOShhLHMpCmVsc2UgUC5rMyhh
+LHMpCmVsc2V7dD1zLmFoKCkKci5jLmEoYSkKcy5hPTQKcy5jPWEKUC5IWihzLHQpfX0sClgyOmZ1bmN0
+aW9uKGEpe3ZhciB0LHM9dGhpcwpzLiR0aS5jLmEoYSkKdD1zLmFoKCkKcy5hPTQKcy5jPWEKUC5IWihz
+LHQpfSwKWkw6ZnVuY3Rpb24oYSxiKXt2YXIgdCxzLHI9dGhpcwp1LmwuYShiKQp0PXIuYWgoKQpzPVAu
+VGwoYSxiKQpyLmE9OApyLmM9cwpQLkhaKHIsdCl9LApYZjpmdW5jdGlvbihhKXt2YXIgdD10aGlzLiR0
+aQp0LkMoIjEvIikuYShhKQppZih0LkMoImI4PDE+IikuYihhKSl7dGhpcy5jVShhKQpyZXR1cm59dGhp
+cy53VSh0LmMuYShhKSl9LAp3VTpmdW5jdGlvbihhKXt2YXIgdD10aGlzCnQuJHRpLmMuYShhKQp0LmE9
+MQpQLlRrKG51bGwsbnVsbCx0LmIsdS5NLmEobmV3IFAucnQodCxhKSkpfSwKY1U6ZnVuY3Rpb24oYSl7
+dmFyIHQ9dGhpcyxzPXQuJHRpCnMuQygiYjg8MT4iKS5hKGEpCmlmKHMuYihhKSl7aWYoYS5hPT09OCl7
+dC5hPTEKUC5UayhudWxsLG51bGwsdC5iLHUuTS5hKG5ldyBQLktGKHQsYSkpKX1lbHNlIFAuQTkoYSx0
+KQpyZXR1cm59UC5rMyhhLHQpfSwKTms6ZnVuY3Rpb24oYSxiKXt0aGlzLmE9MQpQLlRrKG51bGwsbnVs
+bCx0aGlzLmIsdS5NLmEobmV3IFAuWkwodGhpcyxhLGIpKSl9LAokaWI4OjF9ClAuZGEucHJvdG90eXBl
+PXsKJDA6ZnVuY3Rpb24oKXtQLkhaKHRoaXMuYSx0aGlzLmIpfSwKJFM6MH0KUC5vUS5wcm90b3R5cGU9
+ewokMDpmdW5jdGlvbigpe1AuSFoodGhpcy5iLHRoaXMuYS5hKX0sCiRTOjB9ClAucFYucHJvdG90eXBl
+PXsKJDE6ZnVuY3Rpb24oYSl7dmFyIHQ9dGhpcy5hCnQuYT0wCnQuSEgoYSl9LAokUzoxMX0KUC5VNy5w
+cm90b3R5cGU9ewokMjpmdW5jdGlvbihhLGIpe3UubC5hKGIpCnRoaXMuYS5aTChhLGIpfSwKJEM6IiQy
+IiwKJFI6MiwKJFM6Mzh9ClAudnIucHJvdG90eXBlPXsKJDA6ZnVuY3Rpb24oKXt0aGlzLmEuWkwodGhp
+cy5iLHRoaXMuYyl9LAokUzowfQpQLnJ0LnByb3RvdHlwZT17CiQwOmZ1bmN0aW9uKCl7dGhpcy5hLlgy
+KHRoaXMuYil9LAokUzowfQpQLktGLnByb3RvdHlwZT17CiQwOmZ1bmN0aW9uKCl7UC5BOSh0aGlzLmIs
+dGhpcy5hKX0sCiRTOjB9ClAuWkwucHJvdG90eXBlPXsKJDA6ZnVuY3Rpb24oKXt0aGlzLmEuWkwodGhp
+cy5iLHRoaXMuYyl9LAokUzowfQpQLlJULnByb3RvdHlwZT17CiQwOmZ1bmN0aW9uKCl7dmFyIHQscyxy
+LHEscCxvLG49dGhpcyxtPW51bGwKdHJ5e3I9bi5hLmEKbT1yLmIuYi56eih1LmZPLmEoci5kKSx1Lnop
+fWNhdGNoKHEpe3Q9SC5SdShxKQpzPUgudHMocSkKaWYobi5jKXtyPXUubi5hKG4uYi5hLmMpLmEKcD10
+CnA9cj09bnVsbD9wPT1udWxsOnI9PT1wCnI9cH1lbHNlIHI9ITEKcD1uLmEKaWYocilwLmM9dS5uLmEo
+bi5iLmEuYykKZWxzZSBwLmM9UC5UbCh0LHMpCnAuYj0hMApyZXR1cm59aWYobSBpbnN0YW5jZW9mIFAu
+dnMmJm0uYT49NCl7aWYobS5hPT09OCl7cj1uLmEKci5jPXUubi5hKG0uYykKci5iPSEwfXJldHVybn1p
+Zih1LmQuYihtKSl7bz1uLmIuYQpyPW4uYQpyLmM9bS5XNyhuZXcgUC5qWihvKSx1LnopCnIuYj0hMX19
+LAokUzoxfQpQLmpaLnByb3RvdHlwZT17CiQxOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLmF9LAokUzoz
+OX0KUC5ycS5wcm90b3R5cGU9ewokMDpmdW5jdGlvbigpe3ZhciB0LHMscixxLHAsbyxuLG0KdHJ5e3I9
+dGhpcy5hCnE9ci5hCnA9cS4kdGkKbz1wLmMKbj1vLmEodGhpcy5iKQpyLmM9cS5iLmIuYnYocC5DKCIy
+LygxKSIpLmEocS5kKSxuLHAuQygiMi8iKSxvKX1jYXRjaChtKXt0PUguUnUobSkKcz1ILnRzKG0pCnI9
+dGhpcy5hCnIuYz1QLlRsKHQscykKci5iPSEwfX0sCiRTOjF9ClAuUlcucHJvdG90eXBlPXsKJDA6ZnVu
+Y3Rpb24oKXt2YXIgdCxzLHIscSxwLG8sbixtLGw9dGhpcwp0cnl7dD11Lm4uYShsLmEuYS5jKQpxPWwu
+YgppZihILm9UKHEuYS5IUih0KSkmJnEuYS5lIT1udWxsKXtxLmM9cS5hLkt3KHQpCnEuYj0hMX19Y2F0
+Y2gocCl7cz1ILlJ1KHApCnI9SC50cyhwKQpxPXUubi5hKGwuYS5hLmMpCm89cS5hCm49cwptPWwuYgpp
+ZihvPT1udWxsP249PW51bGw6bz09PW4pbS5jPXEKZWxzZSBtLmM9UC5UbChzLHIpCm0uYj0hMH19LAok
+UzoxfQpQLk9NLnByb3RvdHlwZT17fQpQLnFoLnByb3RvdHlwZT17CmdBOmZ1bmN0aW9uKGEpe3ZhciB0
+LHMscj10aGlzLHE9e30scD1uZXcgUC52cygkLlgzLHUuZkopCnEuYT0wCnQ9SC5MaChyKQpzPXQuQygi
+figxKT8iKS5hKG5ldyBQLkI1KHEscikpCnUuWi5hKG5ldyBQLnVPKHEscCkpClcuSkUoci5hLHIuYixz
+LCExLHQuYykKcmV0dXJuIHB9fQpQLkI1LnByb3RvdHlwZT17CiQxOmZ1bmN0aW9uKGEpe0guTGgodGhp
+cy5iKS5jLmEoYSk7Kyt0aGlzLmEuYX0sCiRTOmZ1bmN0aW9uKCl7cmV0dXJuIEguTGgodGhpcy5iKS5D
+KCJjOCgxKSIpfX0KUC51Ty5wcm90b3R5cGU9ewokMDpmdW5jdGlvbigpe3RoaXMuYi5ISCh0aGlzLmEu
+YSl9LAokUzowfQpQLk1PLnByb3RvdHlwZT17fQpQLmtULnByb3RvdHlwZT17fQpQLnhJLnByb3RvdHlw
+ZT17fQpQLkN3LnByb3RvdHlwZT17Cnc6ZnVuY3Rpb24oYSl7cmV0dXJuIEguRWoodGhpcy5hKX0sCiRp
+WFM6MSwKZ0lJOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuYn19ClAubTAucHJvdG90eXBlPXskaUpCOjF9
+ClAucEsucHJvdG90eXBlPXsKJDA6ZnVuY3Rpb24oKXt2YXIgdD1ILmIodGhpcy5hKQp0LnN0YWNrPUou
+aih0aGlzLmIpCnRocm93IHR9LAokUzowfQpQLkppLnByb3RvdHlwZT17CmJIOmZ1bmN0aW9uKGEpe3Zh
+ciB0LHMscixxPW51bGwKdS5NLmEoYSkKdHJ5e2lmKEMuTlU9PT0kLlgzKXthLiQwKCkKcmV0dXJufVAu
+VDgocSxxLHRoaXMsYSx1LkgpfWNhdGNoKHIpe3Q9SC5SdShyKQpzPUgudHMocikKUC5MMihxLHEsdGhp
+cyx0LHUubC5hKHMpKX19LApEbDpmdW5jdGlvbihhLGIsYyl7dmFyIHQscyxyLHE9bnVsbApjLkMoIn4o
+MCkiKS5hKGEpCmMuYShiKQp0cnl7aWYoQy5OVT09PSQuWDMpe2EuJDEoYikKcmV0dXJufVAueXYocSxx
+LHRoaXMsYSxiLHUuSCxjKX1jYXRjaChyKXt0PUguUnUocikKcz1ILnRzKHIpClAuTDIocSxxLHRoaXMs
+dCx1LmwuYShzKSl9fSwKUlQ6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gbmV3IFAuaGoodGhpcyxiLkMoIjAo
+KSIpLmEoYSksYil9LApHWTpmdW5jdGlvbihhKXtyZXR1cm4gbmV3IFAuVnAodGhpcyx1Lk0uYShhKSl9
+LApQeTpmdW5jdGlvbihhLGIpe3JldHVybiBuZXcgUC5PUih0aGlzLGIuQygifigwKSIpLmEoYSksYil9
+LApxOmZ1bmN0aW9uKGEsYil7cmV0dXJuIG51bGx9LAp6ejpmdW5jdGlvbihhLGIpe2IuQygiMCgpIiku
+YShhKQppZigkLlgzPT09Qy5OVSlyZXR1cm4gYS4kMCgpCnJldHVybiBQLlQ4KG51bGwsbnVsbCx0aGlz
+LGEsYil9LApidjpmdW5jdGlvbihhLGIsYyxkKXtjLkMoIkA8MD4iKS5LcShkKS5DKCIxKDIpIikuYShh
+KQpkLmEoYikKaWYoJC5YMz09PUMuTlUpcmV0dXJuIGEuJDEoYikKcmV0dXJuIFAueXYobnVsbCxudWxs
+LHRoaXMsYSxiLGMsZCl9LApycDpmdW5jdGlvbihhLGIsYyxkLGUsZil7ZC5DKCJAPDA+IikuS3EoZSku
+S3EoZikuQygiMSgyLDMpIikuYShhKQplLmEoYikKZi5hKGMpCmlmKCQuWDM9PT1DLk5VKXJldHVybiBh
+LiQyKGIsYykKcmV0dXJuIFAuUXgobnVsbCxudWxsLHRoaXMsYSxiLGMsZCxlLGYpfSwKTGo6ZnVuY3Rp
+b24oYSxiLGMsZCl7cmV0dXJuIGIuQygiQDwwPiIpLktxKGMpLktxKGQpLkMoIjEoMiwzKSIpLmEoYSl9
+fQpQLmhqLnByb3RvdHlwZT17CiQwOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuYS56eih0aGlzLmIsdGhp
+cy5jKX0sCiRTOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuYy5DKCIwKCkiKX19ClAuVnAucHJvdG90eXBl
+PXsKJDA6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5hLmJIKHRoaXMuYil9LAokUzoxfQpQLk9SLnByb3Rv
+dHlwZT17CiQxOmZ1bmN0aW9uKGEpe3ZhciB0PXRoaXMuYwpyZXR1cm4gdGhpcy5hLkRsKHRoaXMuYix0
+LmEoYSksdCl9LAokUzpmdW5jdGlvbigpe3JldHVybiB0aGlzLmMuQygifigwKSIpfX0KUC5iNi5wcm90
+b3R5cGU9ewpna3o6ZnVuY3Rpb24oYSl7dmFyIHQ9dGhpcyxzPW5ldyBQLmxtKHQsdC5yLEguTGgodCku
+QygibG08MT4iKSkKcy5jPXQuZQpyZXR1cm4gc30sCmdBOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLmF9
+LAp0ZzpmdW5jdGlvbihhLGIpe3ZhciB0LHMKaWYoYiE9PSJfX3Byb3RvX18iKXt0PXRoaXMuYgppZih0
+PT1udWxsKXJldHVybiExCnJldHVybiB1LkouYSh0W2JdKSE9bnVsbH1lbHNle3M9dGhpcy5QUihiKQpy
+ZXR1cm4gc319LApQUjpmdW5jdGlvbihhKXt2YXIgdD10aGlzLmQKaWYodD09bnVsbClyZXR1cm4hMQpy
+ZXR1cm4gdGhpcy5ERih0W3RoaXMuTihhKV0sYSk+PTB9LAppOmZ1bmN0aW9uKGEsYil7dmFyIHQscyxy
+PXRoaXMKSC5MaChyKS5jLmEoYikKaWYodHlwZW9mIGI9PSJzdHJpbmciJiZiIT09Il9fcHJvdG9fXyIp
+e3Q9ci5iCnJldHVybiByLlModD09bnVsbD9yLmI9UC5UMigpOnQsYil9ZWxzZSBpZih0eXBlb2YgYj09
+Im51bWJlciImJihiJjEwNzM3NDE4MjMpPT09Yil7cz1yLmMKcmV0dXJuIHIuUyhzPT1udWxsP3IuYz1Q
+LlQyKCk6cyxiKX1lbHNlIHJldHVybiByLkI3KGIpfSwKQjc6ZnVuY3Rpb24oYSl7dmFyIHQscyxyLHE9
+dGhpcwpILkxoKHEpLmMuYShhKQp0PXEuZAppZih0PT1udWxsKXQ9cS5kPVAuVDIoKQpzPXEuTihhKQpy
+PXRbc10KaWYocj09bnVsbCl0W3NdPVtxLnlvKGEpXQplbHNle2lmKHEuREYocixhKT49MClyZXR1cm4h
+MQpyLnB1c2gocS55byhhKSl9cmV0dXJuITB9LApSOmZ1bmN0aW9uKGEsYil7dmFyIHQ9dGhpcwppZih0
+eXBlb2YgYj09InN0cmluZyImJmIhPT0iX19wcm90b19fIilyZXR1cm4gdC5MKHQuYixiKQplbHNlIGlm
+KHR5cGVvZiBiPT0ibnVtYmVyIiYmKGImMTA3Mzc0MTgyMyk9PT1iKXJldHVybiB0LkwodC5jLGIpCmVs
+c2UgcmV0dXJuIHQucWcoYil9LApxZzpmdW5jdGlvbihhKXt2YXIgdCxzLHIscSxwPXRoaXMsbz1wLmQK
+aWYobz09bnVsbClyZXR1cm4hMQp0PXAuTihhKQpzPW9bdF0Kcj1wLkRGKHMsYSkKaWYocjwwKXJldHVy
+biExCnE9cy5zcGxpY2UociwxKVswXQppZigwPT09cy5sZW5ndGgpZGVsZXRlIG9bdF0KcC5HUyhxKQpy
+ZXR1cm4hMH0sClM6ZnVuY3Rpb24oYSxiKXtILkxoKHRoaXMpLmMuYShiKQppZih1LkouYShhW2JdKSE9
+bnVsbClyZXR1cm4hMQphW2JdPXRoaXMueW8oYikKcmV0dXJuITB9LApMOmZ1bmN0aW9uKGEsYil7dmFy
+IHQKaWYoYT09bnVsbClyZXR1cm4hMQp0PXUuSi5hKGFbYl0pCmlmKHQ9PW51bGwpcmV0dXJuITEKdGhp
+cy5HUyh0KQpkZWxldGUgYVtiXQpyZXR1cm4hMH0sClg6ZnVuY3Rpb24oKXt0aGlzLnI9MTA3Mzc0MTgy
+MyZ0aGlzLnIrMX0sCnlvOmZ1bmN0aW9uKGEpe3ZhciB0LHM9dGhpcyxyPW5ldyBQLmJuKEguTGgocyku
+Yy5hKGEpKQppZihzLmU9PW51bGwpcy5lPXMuZj1yCmVsc2V7dD1zLmYKdC50b1N0cmluZwpyLmM9dApz
+LmY9dC5iPXJ9KytzLmEKcy5YKCkKcmV0dXJuIHJ9LApHUzpmdW5jdGlvbihhKXt2YXIgdD10aGlzLHM9
+YS5jLHI9YS5iCmlmKHM9PW51bGwpdC5lPXIKZWxzZSBzLmI9cgppZihyPT1udWxsKXQuZj1zCmVsc2Ug
+ci5jPXM7LS10LmEKdC5YKCl9LApOOmZ1bmN0aW9uKGEpe3JldHVybiBKLmhmKGEpJjEwNzM3NDE4MjN9
+LApERjpmdW5jdGlvbihhLGIpe3ZhciB0LHMKaWYoYT09bnVsbClyZXR1cm4tMQp0PWEubGVuZ3RoCmZv
+cihzPTA7czx0OysrcylpZihKLlJNKGFbc10uYSxiKSlyZXR1cm4gcwpyZXR1cm4tMX19ClAuYm4ucHJv
+dG90eXBlPXt9ClAubG0ucHJvdG90eXBlPXsKZ2w6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5kfSwKRjpm
+dW5jdGlvbigpe3ZhciB0PXRoaXMscz10LmMscj10LmEKaWYodC5iIT09ci5yKXRocm93IEguYihQLmE0
+KHIpKQplbHNlIGlmKHM9PW51bGwpe3Quc2oobnVsbCkKcmV0dXJuITF9ZWxzZXt0LnNqKHQuJHRpLkMo
+IjE/IikuYShzLmEpKQp0LmM9cy5iCnJldHVybiEwfX0sCnNqOmZ1bmN0aW9uKGEpe3RoaXMuZD10aGlz
+LiR0aS5DKCIxPyIpLmEoYSl9LAokaUFuOjF9ClAubVcucHJvdG90eXBlPXt9ClAuTFUucHJvdG90eXBl
+PXskaWJROjEsJGljWDoxLCRpek06MX0KUC5sRC5wcm90b3R5cGU9ewpna3o6ZnVuY3Rpb24oYSl7cmV0
+dXJuIG5ldyBILmE3KGEsdGhpcy5nQShhKSxILnooYSkuQygiYTc8bEQuRT4iKSl9LApFOmZ1bmN0aW9u
+KGEsYil7cmV0dXJuIHRoaXMucShhLGIpfSwKSzpmdW5jdGlvbihhLGIpe3ZhciB0LHMKSC56KGEpLkMo
+In4obEQuRSkiKS5hKGIpCnQ9dGhpcy5nQShhKQpmb3Iocz0wO3M8dDsrK3Mpe2IuJDEodGhpcy5xKGEs
+cykpCmlmKHQhPT10aGlzLmdBKGEpKXRocm93IEguYihQLmE0KGEpKX19LApFMjpmdW5jdGlvbihhLGIs
+Yyl7dmFyIHQ9SC56KGEpCnJldHVybiBuZXcgSC5sSihhLHQuS3EoYykuQygiMShsRC5FKSIpLmEoYiks
+dC5DKCJAPGxELkU+IikuS3EoYykuQygibEo8MSwyPiIpKX0sCmR1OmZ1bmN0aW9uKGEsYixjLGQpe3Zh
+ciB0CkgueihhKS5DKCJsRC5FPyIpLmEoZCkKUC5qQihiLGMsdGhpcy5nQShhKSkKZm9yKHQ9Yjt0PGM7
+Kyt0KXRoaXMuWShhLHQsZCl9LAp3OmZ1bmN0aW9uKGEpe3JldHVybiBQLldFKGEsIlsiLCJdIil9fQpQ
+LmlsLnByb3RvdHlwZT17fQpQLnJhLnByb3RvdHlwZT17CiQyOmZ1bmN0aW9uKGEsYil7dmFyIHQscz10
+aGlzLmEKaWYoIXMuYSl0aGlzLmIuYSs9IiwgIgpzLmE9ITEKcz10aGlzLmIKdD1zLmErPUguRWooYSkK
+cy5hPXQrIjogIgpzLmErPUguRWooYil9LAokUzo0M30KUC5Zay5wcm90b3R5cGU9ewpLOmZ1bmN0aW9u
+KGEsYil7dmFyIHQscwpILkxoKHRoaXMpLkMoIn4oWWsuSyxZay5WKSIpLmEoYikKZm9yKHQ9Si5JVCh0
+aGlzLmdWKCkpO3QuRigpOyl7cz10LmdsKCkKYi4kMihzLHRoaXMucSgwLHMpKX19LApnUHU6ZnVuY3Rp
+b24oYSl7cmV0dXJuIEouTTEodGhpcy5nVigpLG5ldyBQLnlRKHRoaXMpLEguTGgodGhpcykuQygiTjM8
+WWsuSyxZay5WPiIpKX0sCng0OmZ1bmN0aW9uKGEpe3JldHVybiBKLnpsKHRoaXMuZ1YoKSxhKX0sCmdB
+OmZ1bmN0aW9uKGEpe3JldHVybiBKLkhtKHRoaXMuZ1YoKSl9LAp3OmZ1bmN0aW9uKGEpe3JldHVybiBQ
+Lm5PKHRoaXMpfSwKJGlaMDoxfQpQLnlRLnByb3RvdHlwZT17CiQxOmZ1bmN0aW9uKGEpe3ZhciB0PXRo
+aXMuYSxzPUguTGgodCkKcy5DKCJZay5LIikuYShhKQpyZXR1cm4gbmV3IFAuTjMoYSx0LnEoMCxhKSxz
+LkMoIkA8WWsuSz4iKS5LcShzLkMoIllrLlYiKSkuQygiTjM8MSwyPiIpKX0sCiRTOmZ1bmN0aW9uKCl7
+cmV0dXJuIEguTGgodGhpcy5hKS5DKCJOMzxZay5LLFlrLlY+KFlrLkspIil9fQpQLktQLnByb3RvdHlw
+ZT17Clk6ZnVuY3Rpb24oYSxiLGMpe3ZhciB0PUguTGgodGhpcykKdC5jLmEoYikKdC5RWzFdLmEoYykK
+dGhyb3cgSC5iKFAuTDQoIkNhbm5vdCBtb2RpZnkgdW5tb2RpZmlhYmxlIG1hcCIpKX19ClAuUG4ucHJv
+dG90eXBlPXsKcTpmdW5jdGlvbihhLGIpe3JldHVybiB0aGlzLmEucSgwLGIpfSwKWTpmdW5jdGlvbihh
+LGIsYyl7dmFyIHQ9SC5MaCh0aGlzKQp0aGlzLmEuWSgwLHQuYy5hKGIpLHQuUVsxXS5hKGMpKX0sCng0
+OmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLmEueDQoYSl9LApLOmZ1bmN0aW9uKGEsYil7dGhpcy5hLkso
+MCxILkxoKHRoaXMpLkMoIn4oMSwyKSIpLmEoYikpfSwKZ0E6ZnVuY3Rpb24oYSl7dmFyIHQ9dGhpcy5h
+CnJldHVybiB0LmdBKHQpfSwKdzpmdW5jdGlvbihhKXtyZXR1cm4gSi5qKHRoaXMuYSl9LApnUHU6ZnVu
+Y3Rpb24oYSl7dmFyIHQ9dGhpcy5hCnJldHVybiB0LmdQdSh0KX0sCiRpWjA6MX0KUC5Hai5wcm90b3R5
+cGU9e30KUC5NYS5wcm90b3R5cGU9ewp3OmZ1bmN0aW9uKGEpe3JldHVybiBQLldFKHRoaXMsInsiLCJ9
+Iil9fQpQLlZqLnByb3RvdHlwZT17JGliUToxLCRpY1g6MSwkaXh1OjF9ClAuWHYucHJvdG90eXBlPXsK
+RlY6ZnVuY3Rpb24oYSxiKXt2YXIgdApmb3IodD1KLklUKEguTGgodGhpcykuQygiY1g8MT4iKS5hKGIp
+KTt0LkYoKTspdGhpcy5pKDAsdC5nbCgpKX0sCnc6ZnVuY3Rpb24oYSl7cmV0dXJuIFAuV0UodGhpcywi
+eyIsIn0iKX0sCnpWOmZ1bmN0aW9uKGEsYil7dmFyIHQscz1QLnJqKHRoaXMsdGhpcy5yLEguTGgodGhp
+cykuYykKaWYoIXMuRigpKXJldHVybiIiCmlmKGI9PT0iIil7dD0iIgpkbyB0Kz1ILkVqKHMuZCkKd2hp
+bGUocy5GKCkpfWVsc2V7dD0iIitILkVqKHMuZCkKZm9yKDtzLkYoKTspdD10K2IrSC5FaihzLmQpfXJl
+dHVybiB0LmNoYXJDb2RlQXQoMCk9PTA/dDp0fSwKJGliUToxLAokaWNYOjEsCiRpeHU6MX0KUC5uWS5w
+cm90b3R5cGU9e30KUC5XWS5wcm90b3R5cGU9e30KUC5SVS5wcm90b3R5cGU9e30KUC51dy5wcm90b3R5
+cGU9ewpxOmZ1bmN0aW9uKGEsYil7dmFyIHQscz10aGlzLmIKaWYocz09bnVsbClyZXR1cm4gdGhpcy5j
+LnEoMCxiKQplbHNlIGlmKHR5cGVvZiBiIT0ic3RyaW5nIilyZXR1cm4gbnVsbAplbHNle3Q9c1tiXQpy
+ZXR1cm4gdHlwZW9mIHQ9PSJ1bmRlZmluZWQiP3RoaXMuZmIoYik6dH19LApnQTpmdW5jdGlvbihhKXty
+ZXR1cm4gdGhpcy5iPT1udWxsP3RoaXMuYy5hOnRoaXMuQ2YoKS5sZW5ndGh9LApnVjpmdW5jdGlvbigp
+e2lmKHRoaXMuYj09bnVsbCl7dmFyIHQ9dGhpcy5jCnJldHVybiBuZXcgSC5pNSh0LEguTGgodCkuQygi
+aTU8MT4iKSl9cmV0dXJuIG5ldyBQLmk4KHRoaXMpfSwKWTpmdW5jdGlvbihhLGIsYyl7dmFyIHQscyxy
+PXRoaXMKaWYoci5iPT1udWxsKXIuYy5ZKDAsYixjKQplbHNlIGlmKHIueDQoYikpe3Q9ci5iCnRbYl09
+YwpzPXIuYQppZihzPT1udWxsP3QhPW51bGw6cyE9PXQpc1tiXT1udWxsfWVsc2Ugci5YSygpLlkoMCxi
+LGMpfSwKeDQ6ZnVuY3Rpb24oYSl7aWYodGhpcy5iPT1udWxsKXJldHVybiB0aGlzLmMueDQoYSkKcmV0
+dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0aGlzLmEsYSl9LApLOmZ1bmN0
+aW9uKGEsYil7dmFyIHQscyxyLHEscD10aGlzCnUuY0EuYShiKQppZihwLmI9PW51bGwpcmV0dXJuIHAu
+Yy5LKDAsYikKdD1wLkNmKCkKZm9yKHM9MDtzPHQubGVuZ3RoOysrcyl7cj10W3NdCnE9cC5iW3JdCmlm
+KHR5cGVvZiBxPT0idW5kZWZpbmVkIil7cT1QLlFlKHAuYVtyXSkKcC5iW3JdPXF9Yi4kMihyLHEpCmlm
+KHQhPT1wLmMpdGhyb3cgSC5iKFAuYTQocCkpfX0sCkNmOmZ1bmN0aW9uKCl7dmFyIHQ9dS5iTS5hKHRo
+aXMuYykKaWYodD09bnVsbCl0PXRoaXMuYz1ILlZNKE9iamVjdC5rZXlzKHRoaXMuYSksdS5zKQpyZXR1
+cm4gdH0sClhLOmZ1bmN0aW9uKCl7dmFyIHQscyxyLHEscCxvPXRoaXMKaWYoby5iPT1udWxsKXJldHVy
+biBvLmMKdD1QLkZsKHUuTix1LnopCnM9by5DZigpCmZvcihyPTA7cT1zLmxlbmd0aCxyPHE7KytyKXtw
+PXNbcl0KdC5ZKDAscCxvLnEoMCxwKSl9aWYocT09PTApQy5ObS5pKHMsIiIpCmVsc2UgQy5ObS5zQShz
+LDApCm8uYT1vLmI9bnVsbApyZXR1cm4gby5jPXR9LApmYjpmdW5jdGlvbihhKXt2YXIgdAppZighT2Jq
+ZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHRoaXMuYSxhKSlyZXR1cm4gbnVsbAp0PVAu
+UWUodGhpcy5hW2FdKQpyZXR1cm4gdGhpcy5iW2FdPXR9fQpQLmk4LnByb3RvdHlwZT17CmdBOmZ1bmN0
+aW9uKGEpe3ZhciB0PXRoaXMuYQpyZXR1cm4gdC5nQSh0KX0sCkU6ZnVuY3Rpb24oYSxiKXt2YXIgdD10
+aGlzLmEKaWYodC5iPT1udWxsKXQ9dC5nVigpLkUoMCxiKQplbHNle3Q9dC5DZigpCmlmKGI8MHx8Yj49
+dC5sZW5ndGgpcmV0dXJuIEguT0godCxiKQp0PXRbYl19cmV0dXJuIHR9LApna3o6ZnVuY3Rpb24oYSl7
+dmFyIHQ9dGhpcy5hCmlmKHQuYj09bnVsbCl7dD10LmdWKCkKdD10Lmdreih0KX1lbHNle3Q9dC5DZigp
+CnQ9bmV3IEoubTEodCx0Lmxlbmd0aCxILnQ2KHQpLkMoIm0xPDE+IikpfXJldHVybiB0fSwKdGc6ZnVu
+Y3Rpb24oYSxiKXtyZXR1cm4gdGhpcy5hLng0KGIpfX0KUC5wZy5wcm90b3R5cGU9ewokMDpmdW5jdGlv
+bigpe3ZhciB0LHMKdHJ5e3Q9bmV3IFRleHREZWNvZGVyKCJ1dGYtOCIse2ZhdGFsOnRydWV9KQpyZXR1
+cm4gdH1jYXRjaChzKXtILlJ1KHMpfXJldHVybiBudWxsfSwKJFM6NDV9ClAuQ1YucHJvdG90eXBlPXsK
+eXI6ZnVuY3Rpb24oYSxhMCxhMSl7dmFyIHQscyxyLHEscCxvLG4sbSxsLGssaixpLGgsZyxmLGUsZCxj
+LGI9IkludmFsaWQgYmFzZTY0IGVuY29kaW5nIGxlbmd0aCAiCmExPVAuakIoYTAsYTEsYS5sZW5ndGgp
+CnQ9JC5WNygpCmZvcihzPWEwLHI9cyxxPW51bGwscD0tMSxvPS0xLG49MDtzPGExO3M9bSl7bT1zKzEK
+bD1DLnhCLlcoYSxzKQppZihsPT09Mzcpe2s9bSsyCmlmKGs8PWExKXtqPUgub28oQy54Qi5XKGEsbSkp
+Cmk9SC5vbyhDLnhCLlcoYSxtKzEpKQpoPWoqMTYraS0oaSYyNTYpCmlmKGg9PT0zNyloPS0xCm09a31l
+bHNlIGg9LTF9ZWxzZSBoPWwKaWYoMDw9aCYmaDw9MTI3KXtpZihoPDB8fGg+PXQubGVuZ3RoKXJldHVy
+biBILk9IKHQsaCkKZz10W2hdCmlmKGc+PTApe2g9Qy54Qi5tKCJBQkNERUZHSElKS0xNTk9QUVJTVFVW
+V1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OSsvIixnKQppZihoPT09bCljb250
+aW51ZQpsPWh9ZWxzZXtpZihnPT09LTEpe2lmKHA8MCl7Zj1xPT1udWxsP251bGw6cS5hLmxlbmd0aApp
+ZihmPT1udWxsKWY9MApwPWYrKHMtcikKbz1zfSsrbgppZihsPT09NjEpY29udGludWV9bD1ofWlmKGch
+PT0tMil7aWYocT09bnVsbCl7cT1uZXcgUC5SbigiIikKZj1xfWVsc2UgZj1xCmYuYSs9Qy54Qi5Oaihh
+LHIscykKZi5hKz1ILkx3KGwpCnI9bQpjb250aW51ZX19dGhyb3cgSC5iKFAucnIoIkludmFsaWQgYmFz
+ZTY0IGRhdGEiLGEscykpfWlmKHEhPW51bGwpe2Y9cS5hKz1DLnhCLk5qKGEscixhMSkKZT1mLmxlbmd0
+aAppZihwPj0wKVAueE0oYSxvLGExLHAsbixlKQplbHNle2Q9Qy5qbi56WShlLTEsNCkrMQppZihkPT09
+MSl0aHJvdyBILmIoUC5ycihiLGEsYTEpKQpmb3IoO2Q8NDspe2YrPSI9IgpxLmE9ZjsrK2R9fWY9cS5h
+CnJldHVybiBDLnhCLmk3KGEsYTAsYTEsZi5jaGFyQ29kZUF0KDApPT0wP2Y6Zil9Yz1hMS1hMAppZihw
+Pj0wKVAueE0oYSxvLGExLHAsbixjKQplbHNle2Q9Qy5qbi56WShjLDQpCmlmKGQ9PT0xKXRocm93IEgu
+YihQLnJyKGIsYSxhMSkpCmlmKGQ+MSlhPUMueEIuaTcoYSxhMSxhMSxkPT09Mj8iPT0iOiI9Iil9cmV0
+dXJuIGF9fQpQLlU4LnByb3RvdHlwZT17fQpQLlVrLnByb3RvdHlwZT17fQpQLndJLnByb3RvdHlwZT17
+fQpQLlppLnByb3RvdHlwZT17fQpQLmJ5LnByb3RvdHlwZT17CnBXOmZ1bmN0aW9uKGEsYixjKXt2YXIg
+dAp1LmZWLmEoYykKdD1QLkJTKGIsdGhpcy5nSGUoKS5hKQpyZXR1cm4gdH0sCmdIZTpmdW5jdGlvbigp
+e3JldHVybiBDLkEzfX0KUC5NeC5wcm90b3R5cGU9e30KUC51NS5wcm90b3R5cGU9ewpnWkU6ZnVuY3Rp
+b24oKXtyZXR1cm4gQy5Ra319ClAuRTMucHJvdG90eXBlPXsKV0o6ZnVuY3Rpb24oYSl7dmFyIHQscyxy
+PVAuakIoMCxudWxsLGEubGVuZ3RoKSxxPXItMAppZihxPT09MClyZXR1cm4gbmV3IFVpbnQ4QXJyYXko
+MCkKdD1uZXcgVWludDhBcnJheShxKjMpCnM9bmV3IFAuUncodCkKaWYocy5HeChhLDAscikhPT1yKXMu
+TzYoSi5hNihhLHItMSksMCkKcmV0dXJuIG5ldyBVaW50OEFycmF5KHQuc3ViYXJyYXkoMCxILnJNKDAs
+cy5iLHQubGVuZ3RoKSkpfX0KUC5Sdy5wcm90b3R5cGU9ewpPNjpmdW5jdGlvbihhLGIpe3ZhciB0LHM9
+dGhpcyxyPXMuYyxxPXMuYixwPXErMSxvPXIubGVuZ3RoCmlmKChiJjY0NTEyKT09PTU2MzIwKXt0PTY1
+NTM2KygoYSYxMDIzKTw8MTApfGImMTAyMwpzLmI9cAppZihxPj1vKXJldHVybiBILk9IKHIscSkKcltx
+XT0yNDB8dD4+PjE4CnE9cy5iPXArMQppZihwPj1vKXJldHVybiBILk9IKHIscCkKcltwXT0xMjh8dD4+
+PjEyJjYzCnA9cy5iPXErMQppZihxPj1vKXJldHVybiBILk9IKHIscSkKcltxXT0xMjh8dD4+PjYmNjMK
+cy5iPXArMQppZihwPj1vKXJldHVybiBILk9IKHIscCkKcltwXT0xMjh8dCY2MwpyZXR1cm4hMH1lbHNl
+e3MuYj1wCmlmKHE+PW8pcmV0dXJuIEguT0gocixxKQpyW3FdPTIyNHxhPj4+MTIKcT1zLmI9cCsxCmlm
+KHA+PW8pcmV0dXJuIEguT0gocixwKQpyW3BdPTEyOHxhPj4+NiY2MwpzLmI9cSsxCmlmKHE+PW8pcmV0
+dXJuIEguT0gocixxKQpyW3FdPTEyOHxhJjYzCnJldHVybiExfX0sCkd4OmZ1bmN0aW9uKGEsYixjKXt2
+YXIgdCxzLHIscSxwLG8sbixtPXRoaXMKaWYoYiE9PWMmJihDLnhCLm0oYSxjLTEpJjY0NTEyKT09PTU1
+Mjk2KS0tYwpmb3IodD1tLmMscz10Lmxlbmd0aCxyPWI7cjxjOysrcil7cT1DLnhCLlcoYSxyKQppZihx
+PD0xMjcpe3A9bS5iCmlmKHA+PXMpYnJlYWsKbS5iPXArMQp0W3BdPXF9ZWxzZSBpZigocSY2NDUxMik9
+PT01NTI5Nil7aWYobS5iKzM+PXMpYnJlYWsKbz1yKzEKaWYobS5PNihxLEMueEIuVyhhLG8pKSlyPW99
+ZWxzZSBpZihxPD0yMDQ3KXtwPW0uYgpuPXArMQppZihuPj1zKWJyZWFrCm0uYj1uCmlmKHA+PXMpcmV0
+dXJuIEguT0godCxwKQp0W3BdPTE5MnxxPj4+NgptLmI9bisxCnRbbl09MTI4fHEmNjN9ZWxzZXtwPW0u
+YgppZihwKzI+PXMpYnJlYWsKbj1tLmI9cCsxCmlmKHA+PXMpcmV0dXJuIEguT0godCxwKQp0W3BdPTIy
+NHxxPj4+MTIKcD1tLmI9bisxCmlmKG4+PXMpcmV0dXJuIEguT0godCxuKQp0W25dPTEyOHxxPj4+NiY2
+MwptLmI9cCsxCmlmKHA+PXMpcmV0dXJuIEguT0godCxwKQp0W3BdPTEyOHxxJjYzfX1yZXR1cm4gcn19
+ClAuR1kucHJvdG90eXBlPXsKV0o6ZnVuY3Rpb24oYSl7dmFyIHQscyxyLHEscCxvLG4sbSxsCnUuTC5h
+KGEpCnQ9UC5reSghMSxhLDAsbnVsbCkKaWYodCE9bnVsbClyZXR1cm4gdApzPVAuakIoMCxudWxsLEou
+SG0oYSkpCnI9UC5jUChhLDAscykKaWYocj4wKXtxPVAuSE0oYSwwLHIpCmlmKHI9PT1zKXJldHVybiBx
+CnA9bmV3IFAuUm4ocSkKbz1yCm49ITF9ZWxzZXtwPW5ldyBQLlJuKCIiKQpvPTAKbj0hMH1tPW5ldyBQ
+LmJ6KCExLHApCm0uYz1uCm0uTUUoYSxvLHMpCnUuZWcuYShhKQppZihtLmU+MCl7SC52aChQLnJyKCJV
+bmZpbmlzaGVkIFVURi04IG9jdGV0IHNlcXVlbmNlIixhLHMpKQpwLmErPUguTHcoNjU1MzMpCm0uZj1t
+LmU9bS5kPTB9bD1wLmEKcmV0dXJuIGwuY2hhckNvZGVBdCgwKT09MD9sOmx9fQpQLmJ6LnByb3RvdHlw
+ZT17Ck1FOmZ1bmN0aW9uKGEsYixjKXt2YXIgdCxzLHIscSxwLG8sbixtLGwsayxqLGksaD10aGlzLGc9
+IkJhZCBVVEYtOCBlbmNvZGluZyAweCIKdS5MLmEoYSkKdD1oLmQKcz1oLmUKcj1oLmYKaC5mPWguZT1o
+LmQ9MAokbGFiZWwwJDA6Zm9yKHE9Si5VNihhKSxwPWguYixvPWI7ITA7bz1qKXskbGFiZWwxJDE6aWYo
+cz4wKXtkb3tpZihvPT09YylicmVhayAkbGFiZWwwJDAKbj1xLnEoYSxvKQppZih0eXBlb2YgbiE9PSJu
+dW1iZXIiKXJldHVybiBuLnpNKCkKaWYoKG4mMTkyKSE9PTEyOCl7bT1QLnJyKGcrQy5qbi5XWihuLDE2
+KSxhLG8pCnRocm93IEguYihtKX1lbHNle3Q9KHQ8PDZ8biY2Myk+Pj4wOy0tczsrK299fXdoaWxlKHM+
+MCkKbT1yLTEKaWYobTwwfHxtPj00KXJldHVybiBILk9IKEMuR2IsbSkKaWYodDw9Qy5HYlttXSl7bT1Q
+LnJyKCJPdmVybG9uZyBlbmNvZGluZyBvZiAweCIrQy5qbi5XWih0LDE2KSxhLG8tci0xKQp0aHJvdyBI
+LmIobSl9aWYodD4xMTE0MTExKXttPVAucnIoIkNoYXJhY3RlciBvdXRzaWRlIHZhbGlkIFVuaWNvZGUg
+cmFuZ2U6IDB4IitDLmpuLldaKHQsMTYpLGEsby1yLTEpCnRocm93IEguYihtKX1pZighaC5jfHx0IT09
+NjUyNzkpcC5hKz1ILkx3KHQpCmguYz0hMX1mb3IobT1vPGM7bTspe2w9UC5jUChhLG8sYykKaWYobD4w
+KXtoLmM9ITEKaz1vK2wKcC5hKz1QLkhNKGEsbyxrKQppZihrPT09YylicmVha31lbHNlIGs9bwpqPWsr
+MQpuPXEucShhLGspCmlmKHR5cGVvZiBuIT09Im51bWJlciIpcmV0dXJuIG4uSigpCmlmKG48MCl7aT1Q
+LnJyKCJOZWdhdGl2ZSBVVEYtOCBjb2RlIHVuaXQ6IC0weCIrQy5qbi5XWigtbiwxNiksYSxqLTEpCnRo
+cm93IEguYihpKX1lbHNle2lmKChuJjIyNCk9PT0xOTIpe3Q9biYzMQpzPTEKcj0xCmNvbnRpbnVlICRs
+YWJlbDAkMH1pZigobiYyNDApPT09MjI0KXt0PW4mMTUKcz0yCnI9Mgpjb250aW51ZSAkbGFiZWwwJDB9
+aWYoKG4mMjQ4KT09PTI0MCYmbjwyNDUpe3Q9biY3CnM9MwpyPTMKY29udGludWUgJGxhYmVsMCQwfWk9
+UC5ycihnK0Muam4uV1oobiwxNiksYSxqLTEpCnRocm93IEguYihpKX19YnJlYWsgJGxhYmVsMCQwfWlm
+KHM+MCl7aC5kPXQKaC5lPXMKaC5mPXJ9fX0KUC5XRi5wcm90b3R5cGU9ewokMjpmdW5jdGlvbihhLGIp
+e3ZhciB0LHMscgp1LmZvLmEoYSkKdD10aGlzLmIKcz10aGlzLmEKdC5hKz1zLmEKcj10LmErPUguRWoo
+YS5hKQp0LmE9cisiOiAiCnQuYSs9UC5wKGIpCnMuYT0iLCAifSwKJFM6NDZ9ClAuYTIucHJvdG90eXBl
+PXt9ClAuaVAucHJvdG90eXBlPXsKRE46ZnVuY3Rpb24oYSxiKXtpZihiPT1udWxsKXJldHVybiExCnJl
+dHVybiBiIGluc3RhbmNlb2YgUC5pUCYmdGhpcy5hPT09Yi5hJiYhMH0sCmdpTzpmdW5jdGlvbihhKXt2
+YXIgdD10aGlzLmEKcmV0dXJuKHReQy5qbi53Ryh0LDMwKSkmMTA3Mzc0MTgyM30sCnc6ZnVuY3Rpb24o
+YSl7dmFyIHQ9dGhpcyxzPVAuR3EoSC50Sih0KSkscj1QLmgwKEguTlModCkpLHE9UC5oMChILmpBKHQp
+KSxwPVAuaDAoSC5JWCh0KSksbz1QLmgwKEguY2godCkpLG49UC5oMChILkpkKHQpKSxtPVAuVngoSC5v
+MSh0KSksbD1zKyItIityKyItIitxKyIgIitwKyI6IitvKyI6IituKyIuIittCnJldHVybiBsfX0KUC5D
+UC5wcm90b3R5cGU9e30KUC5YUy5wcm90b3R5cGU9ewpnSUk6ZnVuY3Rpb24oKXtyZXR1cm4gSC50cyh0
+aGlzLiR0aHJvd25Kc0Vycm9yKX19ClAuQzYucHJvdG90eXBlPXsKdzpmdW5jdGlvbihhKXt2YXIgdD10
+aGlzLmEKaWYodCE9bnVsbClyZXR1cm4iQXNzZXJ0aW9uIGZhaWxlZDogIitQLnAodCkKcmV0dXJuIkFz
+c2VydGlvbiBmYWlsZWQifX0KUC5uLnByb3RvdHlwZT17Cnc6ZnVuY3Rpb24oYSl7cmV0dXJuIlRocm93
+IG9mIG51bGwuIn19ClAudS5wcm90b3R5cGU9ewpnWjpmdW5jdGlvbigpe3JldHVybiJJbnZhbGlkIGFy
+Z3VtZW50IisoIXRoaXMuYT8iKHMpIjoiIil9LApndTpmdW5jdGlvbigpe3JldHVybiIifSwKdzpmdW5j
+dGlvbihhKXt2YXIgdCxzLHI9dGhpcyxxPXIuYyxwPXE9PW51bGw/IiI6IiAoIitxKyIpIixvPXIuZCxu
+PW89PW51bGw/IiI6IjogIitILkVqKG8pLG09ci5nWigpK3ArbgppZighci5hKXJldHVybiBtCnQ9ci5n
+dSgpCnM9UC5wKHIuYikKcmV0dXJuIG0rdCsiOiAiK3N9fQpQLmJKLnByb3RvdHlwZT17CmdaOmZ1bmN0
+aW9uKCl7cmV0dXJuIlJhbmdlRXJyb3IifSwKZ3U6ZnVuY3Rpb24oKXt2YXIgdCxzPXRoaXMuZSxyPXRo
+aXMuZgppZihzPT1udWxsKXQ9ciE9bnVsbD8iOiBOb3QgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICIrSC5F
+aihyKToiIgplbHNlIGlmKHI9PW51bGwpdD0iOiBOb3QgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICIr
+SC5FaihzKQplbHNlIGlmKHI+cyl0PSI6IE5vdCBpbiByYW5nZSAiK0guRWoocykrIi4uIitILkVqKHIp
+KyIsIGluY2x1c2l2ZSIKZWxzZSB0PXI8cz8iOiBWYWxpZCB2YWx1ZSByYW5nZSBpcyBlbXB0eSI6Ijog
+T25seSB2YWxpZCB2YWx1ZSBpcyAiK0guRWoocykKcmV0dXJuIHR9fQpQLmVZLnByb3RvdHlwZT17Cmda
+OmZ1bmN0aW9uKCl7cmV0dXJuIlJhbmdlRXJyb3IifSwKZ3U6ZnVuY3Rpb24oKXt2YXIgdCxzPUgudVAo
+dGhpcy5iKQppZih0eXBlb2YgcyE9PSJudW1iZXIiKXJldHVybiBzLkooKQppZihzPDApcmV0dXJuIjog
+aW5kZXggbXVzdCBub3QgYmUgbmVnYXRpdmUiCnQ9dGhpcy5mCmlmKHQ9PT0wKXJldHVybiI6IG5vIGlu
+ZGljZXMgYXJlIHZhbGlkIgpyZXR1cm4iOiBpbmRleCBzaG91bGQgYmUgbGVzcyB0aGFuICIrdH0sCmdB
+OmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLmZ9fQpQLm1wLnByb3RvdHlwZT17Cnc6ZnVuY3Rpb24oYSl7
+dmFyIHQscyxyLHEscCxvLG4sbSxsPXRoaXMsaz17fSxqPW5ldyBQLlJuKCIiKQprLmE9IiIKdD1sLmMK
+Zm9yKHM9dC5sZW5ndGgscj0wLHE9IiIscD0iIjtyPHM7KytyLHA9IiwgIil7bz10W3JdCmouYT1xK3AK
+cT1qLmErPVAucChvKQprLmE9IiwgIn1sLmQuSygwLG5ldyBQLldGKGssaikpCm49UC5wKGwuYSkKbT1q
+LncoMCkKcz0iTm9TdWNoTWV0aG9kRXJyb3I6IG1ldGhvZCBub3QgZm91bmQ6ICciK0guRWoobC5iLmEp
+KyInXG5SZWNlaXZlcjogIituKyJcbkFyZ3VtZW50czogWyIrbSsiXSIKcmV0dXJuIHN9fQpQLnViLnBy
+b3RvdHlwZT17Cnc6ZnVuY3Rpb24oYSl7cmV0dXJuIlVuc3VwcG9ydGVkIG9wZXJhdGlvbjogIit0aGlz
+LmF9fQpQLmRzLnByb3RvdHlwZT17Cnc6ZnVuY3Rpb24oYSl7dmFyIHQ9dGhpcy5hCnJldHVybiB0IT1u
+dWxsPyJVbmltcGxlbWVudGVkRXJyb3I6ICIrdDoiVW5pbXBsZW1lbnRlZEVycm9yIn19ClAubGoucHJv
+dG90eXBlPXsKdzpmdW5jdGlvbihhKXtyZXR1cm4iQmFkIHN0YXRlOiAiK3RoaXMuYX19ClAuVVYucHJv
+dG90eXBlPXsKdzpmdW5jdGlvbihhKXt2YXIgdD10aGlzLmEKaWYodD09bnVsbClyZXR1cm4iQ29uY3Vy
+cmVudCBtb2RpZmljYXRpb24gZHVyaW5nIGl0ZXJhdGlvbi4iCnJldHVybiJDb25jdXJyZW50IG1vZGlm
+aWNhdGlvbiBkdXJpbmcgaXRlcmF0aW9uOiAiK1AucCh0KSsiLiJ9fQpQLms1LnByb3RvdHlwZT17Cnc6
+ZnVuY3Rpb24oYSl7cmV0dXJuIk91dCBvZiBNZW1vcnkifSwKZ0lJOmZ1bmN0aW9uKCl7cmV0dXJuIG51
+bGx9LAokaVhTOjF9ClAuS1kucHJvdG90eXBlPXsKdzpmdW5jdGlvbihhKXtyZXR1cm4iU3RhY2sgT3Zl
+cmZsb3cifSwKZ0lJOmZ1bmN0aW9uKCl7cmV0dXJuIG51bGx9LAokaVhTOjF9ClAuYy5wcm90b3R5cGU9
+ewp3OmZ1bmN0aW9uKGEpe3ZhciB0PXRoaXMuYQpyZXR1cm4gdD09bnVsbD8iUmVhZGluZyBzdGF0aWMg
+dmFyaWFibGUgZHVyaW5nIGl0cyBpbml0aWFsaXphdGlvbiI6IlJlYWRpbmcgc3RhdGljIHZhcmlhYmxl
+ICciK3QrIicgZHVyaW5nIGl0cyBpbml0aWFsaXphdGlvbiJ9fQpQLkNELnByb3RvdHlwZT17Cnc6ZnVu
+Y3Rpb24oYSl7cmV0dXJuIkV4Y2VwdGlvbjogIit0aGlzLmF9fQpQLmFFLnByb3RvdHlwZT17Cnc6ZnVu
+Y3Rpb24oYSl7dmFyIHQscyxyLHEscCxvLG4sbSxsLGssaixpLGg9dGhpcy5hLGc9aCE9bnVsbCYmIiIh
+PT1oPyJGb3JtYXRFeGNlcHRpb246ICIrSC5FaihoKToiRm9ybWF0RXhjZXB0aW9uIixmPXRoaXMuYyxl
+PXRoaXMuYgppZih0eXBlb2YgZT09InN0cmluZyIpe2lmKGYhPW51bGwpdD1mPDB8fGY+ZS5sZW5ndGgK
+ZWxzZSB0PSExCmlmKHQpZj1udWxsCmlmKGY9PW51bGwpe2lmKGUubGVuZ3RoPjc4KWU9Qy54Qi5Oaihl
+LDAsNzUpKyIuLi4iCnJldHVybiBnKyJcbiIrZX1mb3Iocz0xLHI9MCxxPSExLHA9MDtwPGY7KytwKXtv
+PUMueEIuVyhlLHApCmlmKG89PT0xMCl7aWYociE9PXB8fCFxKSsrcwpyPXArMQpxPSExfWVsc2UgaWYo
+bz09PTEzKXsrK3MKcj1wKzEKcT0hMH19Zz1zPjE/ZysoIiAoYXQgbGluZSAiK3MrIiwgY2hhcmFjdGVy
+ICIrKGYtcisxKSsiKVxuIik6ZysoIiAoYXQgY2hhcmFjdGVyICIrKGYrMSkrIilcbiIpCm49ZS5sZW5n
+dGgKZm9yKHA9ZjtwPG47KytwKXtvPUMueEIubShlLHApCmlmKG89PT0xMHx8bz09PTEzKXtuPXAKYnJl
+YWt9fWlmKG4tcj43OClpZihmLXI8NzUpe209cis3NQpsPXIKaz0iIgpqPSIuLi4ifWVsc2V7aWYobi1m
+PDc1KXtsPW4tNzUKbT1uCmo9IiJ9ZWxzZXtsPWYtMzYKbT1mKzM2Cmo9Ii4uLiJ9az0iLi4uIn1lbHNl
+e209bgpsPXIKaz0iIgpqPSIifWk9Qy54Qi5OaihlLGwsbSkKcmV0dXJuIGcraytpK2orIlxuIitDLnhC
+Lkl4KCIgIixmLWwray5sZW5ndGgpKyJeXG4ifWVsc2UgcmV0dXJuIGYhPW51bGw/ZysoIiAoYXQgb2Zm
+c2V0ICIrSC5FaihmKSsiKSIpOmd9fQpQLkVILnByb3RvdHlwZT17fQpQLklmLnByb3RvdHlwZT17fQpQ
+LmNYLnByb3RvdHlwZT17CkUyOmZ1bmN0aW9uKGEsYixjKXt2YXIgdD1ILkxoKHRoaXMpCnJldHVybiBI
+LksxKHRoaXMsdC5LcShjKS5DKCIxKGNYLkUpIikuYShiKSx0LkMoImNYLkUiKSxjKX0sCmV2OmZ1bmN0
+aW9uKGEsYil7dmFyIHQ9SC5MaCh0aGlzKQpyZXR1cm4gbmV3IEguVTUodGhpcyx0LkMoImEyKGNYLkUp
+IikuYShiKSx0LkMoIlU1PGNYLkU+IikpfSwKZ0E6ZnVuY3Rpb24oYSl7dmFyIHQscz10aGlzLmdreih0
+aGlzKQpmb3IodD0wO3MuRigpOykrK3QKcmV0dXJuIHR9LApnbDA6ZnVuY3Rpb24oYSl7cmV0dXJuIXRo
+aXMuZ2t6KHRoaXMpLkYoKX0sCmdyODpmdW5jdGlvbihhKXt2YXIgdCxzPXRoaXMuZ2t6KHRoaXMpCmlm
+KCFzLkYoKSl0aHJvdyBILmIoSC5XcCgpKQp0PXMuZ2woKQppZihzLkYoKSl0aHJvdyBILmIoSC5kVSgp
+KQpyZXR1cm4gdH0sCkU6ZnVuY3Rpb24oYSxiKXt2YXIgdCxzLHIKUC5rMShiLCJpbmRleCIpCmZvcih0
+PXRoaXMuZ2t6KHRoaXMpLHM9MDt0LkYoKTspe3I9dC5nbCgpCmlmKGI9PT1zKXJldHVybiByOysrc310
+aHJvdyBILmIoUC5DZihiLHRoaXMsImluZGV4IixudWxsLHMpKX0sCnc6ZnVuY3Rpb24oYSl7cmV0dXJu
+IFAuRVAodGhpcywiKCIsIikiKX19ClAuQW4ucHJvdG90eXBlPXt9ClAuek0ucHJvdG90eXBlPXskaWJR
+OjEsJGljWDoxfQpQLlowLnByb3RvdHlwZT17fQpQLk4zLnByb3RvdHlwZT17Cnc6ZnVuY3Rpb24oYSl7
+cmV0dXJuIk1hcEVudHJ5KCIrSC5FaihKLmoodGhpcy5hKSkrIjogIitILkVqKEouaih0aGlzLmIpKSsi
+KSJ9fQpQLmM4LnByb3RvdHlwZT17CmdpTzpmdW5jdGlvbihhKXtyZXR1cm4gUC5NaC5wcm90b3R5cGUu
+Z2lPLmNhbGwodGhpcyx0aGlzKX0sCnc6ZnVuY3Rpb24oYSl7cmV0dXJuIm51bGwifX0KUC5sZi5wcm90
+b3R5cGU9e30KUC5NaC5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOlAuTWgsJGlNaDoxLApETjpmdW5jdGlv
+bihhLGIpe3JldHVybiB0aGlzPT09Yn0sCmdpTzpmdW5jdGlvbihhKXtyZXR1cm4gSC5lUSh0aGlzKX0s
+Cnc6ZnVuY3Rpb24oYSl7cmV0dXJuIkluc3RhbmNlIG9mICciK0guRWooSC5NKHRoaXMpKSsiJyJ9LApl
+NzpmdW5jdGlvbihhLGIpe3Uuby5hKGIpCnRocm93IEguYihQLmxyKHRoaXMsYi5nV2EoKSxiLmduZCgp
+LGIuZ1ZtKCkpKX0sCnRvU3RyaW5nOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudyh0aGlzKX19ClAuT2Qu
+cHJvdG90eXBlPXt9ClAuaWIucHJvdG90eXBlPXskaU9kOjF9ClAueHUucHJvdG90eXBlPXt9ClAuR3ou
+cHJvdG90eXBlPXt9ClAuWmQucHJvdG90eXBlPXsKdzpmdW5jdGlvbihhKXtyZXR1cm4iIn0sCiRpR3o6
+MX0KUC5xVS5wcm90b3R5cGU9eyRpdlg6MX0KUC5Sbi5wcm90b3R5cGU9ewpnQTpmdW5jdGlvbihhKXty
+ZXR1cm4gdGhpcy5hLmxlbmd0aH0sCnc6ZnVuY3Rpb24oYSl7dmFyIHQ9dGhpcy5hCnJldHVybiB0LmNo
+YXJDb2RlQXQoMCk9PTA/dDp0fSwKJGlCTDoxfQpQLkdELnByb3RvdHlwZT17fQpQLm4xLnByb3RvdHlw
+ZT17CiQyOmZ1bmN0aW9uKGEsYil7dmFyIHQscyxyLHEKdS5mLmEoYSkKSC5oKGIpCnQ9Si5yWShiKS5P
+WShiLCI9IikKaWYodD09PS0xKXtpZihiIT09IiIpYS5ZKDAsUC5rdShiLDAsYi5sZW5ndGgsdGhpcy5h
+LCEwKSwiIil9ZWxzZSBpZih0IT09MCl7cz1DLnhCLk5qKGIsMCx0KQpyPUMueEIuRyhiLHQrMSkKcT10
+aGlzLmEKYS5ZKDAsUC5rdShzLDAscy5sZW5ndGgscSwhMCksUC5rdShyLDAsci5sZW5ndGgscSwhMCkp
+fXJldHVybiBhfSwKJFM6MTl9ClAuY1MucHJvdG90eXBlPXsKJDI6ZnVuY3Rpb24oYSxiKXt0aHJvdyBI
+LmIoUC5ycigiSWxsZWdhbCBJUHY0IGFkZHJlc3MsICIrYSx0aGlzLmEsYikpfSwKJFM6NTB9ClAuVkMu
+cHJvdG90eXBlPXsKJDI6ZnVuY3Rpb24oYSxiKXt0aHJvdyBILmIoUC5ycigiSWxsZWdhbCBJUHY2IGFk
+ZHJlc3MsICIrYSx0aGlzLmEsYikpfSwKJDE6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuJDIoYSxudWxs
+KX0sCiRTOjUxfQpQLkpULnByb3RvdHlwZT17CiQyOmZ1bmN0aW9uKGEsYil7dmFyIHQKaWYoYi1hPjQp
+dGhpcy5hLiQyKCJhbiBJUHY2IHBhcnQgY2FuIG9ubHkgY29udGFpbiBhIG1heGltdW0gb2YgNCBoZXgg
+ZGlnaXRzIixhKQp0PVAuUUEoQy54Qi5Oaih0aGlzLmIsYSxiKSwxNikKaWYodHlwZW9mIHQhPT0ibnVt
+YmVyIilyZXR1cm4gdC5KKCkKaWYodDwwfHx0PjY1NTM1KXRoaXMuYS4kMigiZWFjaCBwYXJ0IG11c3Qg
+YmUgaW4gdGhlIHJhbmdlIG9mIGAweDAuLjB4RkZGRmAiLGEpCnJldHVybiB0fSwKJFM6MjB9ClAuRG4u
+cHJvdG90eXBlPXsKZ25EOmZ1bmN0aW9uKCl7dmFyIHQscyxyLHE9dGhpcyxwPXEueAppZihwPT1udWxs
+KXtwPXEuYQp0PXAubGVuZ3RoIT09MD8iIitwKyI6IjoiIgpzPXEuYwpyPXM9PW51bGwKaWYoIXJ8fHA9
+PT0iZmlsZSIpe3A9dCsiLy8iCnQ9cS5iCmlmKHQubGVuZ3RoIT09MClwPXArdCsiQCIKaWYoIXIpcCs9
+cwp0PXEuZAppZih0IT1udWxsKXA9cCsiOiIrSC5Faih0KX1lbHNlIHA9dApwKz1xLmUKdD1xLmYKaWYo
+dCE9bnVsbClwPXArIj8iK3QKdD1xLnIKaWYodCE9bnVsbClwPXArIiMiK3QKcD1wLmNoYXJDb2RlQXQo
+MCk9PTA/cDpwCmlmKHEueD09bnVsbClxLng9cAplbHNlIHA9SC52aChILnlSKCJGaWVsZCAnX3RleHQn
+IGhhcyBiZWVuIGFzc2lnbmVkIGR1cmluZyBpbml0aWFsaXphdGlvbi4iKSl9cmV0dXJuIHB9LApnRmo6
+ZnVuY3Rpb24oKXt2YXIgdCxzPXRoaXMscj1zLnkKaWYocj09bnVsbCl7dD1zLmUKaWYodC5sZW5ndGgh
+PT0wJiZDLnhCLlcodCwwKT09PTQ3KXQ9Qy54Qi5HKHQsMSkKcj10Lmxlbmd0aD09PTA/Qy54RDpQLkFG
+KG5ldyBILmxKKEguVk0odC5zcGxpdCgiLyIpLHUucyksdS5kTy5hKFAuUEgoKSksdS5kbyksdS5OKQpp
+ZihzLnk9PW51bGwpcy5zS3AocikKZWxzZSByPUgudmgoSC55UigiRmllbGQgJ3BhdGhTZWdtZW50cycg
+aGFzIGJlZW4gYXNzaWduZWQgZHVyaW5nIGluaXRpYWxpemF0aW9uLiIpKX1yZXR1cm4gcn0sCmdpTzpm
+dW5jdGlvbihhKXt2YXIgdD10aGlzLHM9dC56CmlmKHM9PW51bGwpe3M9Qy54Qi5naU8odC5nbkQoKSkK
+aWYodC56PT1udWxsKXQuej1zCmVsc2Ugcz1ILnZoKEgueVIoIkZpZWxkICdoYXNoQ29kZScgaGFzIGJl
+ZW4gYXNzaWduZWQgZHVyaW5nIGluaXRpYWxpemF0aW9uLiIpKX1yZXR1cm4gc30sCmdoWTpmdW5jdGlv
+bigpe3ZhciB0PXRoaXMscz10LlEKaWYocz09bnVsbCl7cz1uZXcgUC5HaihQLldYKHQuZ3RQKCkpLHUu
+ZHcpCmlmKHQuUT09bnVsbCl0LnNOTShzKQplbHNlIHM9SC52aChILnlSKCJGaWVsZCAncXVlcnlQYXJh
+bWV0ZXJzJyBoYXMgYmVlbiBhc3NpZ25lZCBkdXJpbmcgaW5pdGlhbGl6YXRpb24uIikpfXJldHVybiBz
+fSwKZ2t1OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuYn0sCmdKZjpmdW5jdGlvbihhKXt2YXIgdD10aGlz
+LmMKaWYodD09bnVsbClyZXR1cm4iIgppZihDLnhCLm4odCwiWyIpKXJldHVybiBDLnhCLk5qKHQsMSx0
+Lmxlbmd0aC0xKQpyZXR1cm4gdH0sCmd0cDpmdW5jdGlvbihhKXt2YXIgdD10aGlzLmQKcmV0dXJuIHQ9
+PW51bGw/UC53Syh0aGlzLmEpOnR9LApndFA6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLmYKcmV0dXJuIHQ9
+PW51bGw/IiI6dH0sCmdLYTpmdW5jdGlvbigpe3ZhciB0PXRoaXMucgpyZXR1cm4gdD09bnVsbD8iIjp0
+fSwKbm06ZnVuY3Rpb24oYSxiKXt2YXIgdCxzLHIscSxwLG8sbixtLGwsaz10aGlzCnUuVS5hKG51bGwp
+CnUuYzkuYShiKQp0PWsuYQpzPXQ9PT0iZmlsZSIKcj1rLmIKcT1rLmQKcD1rLmMKaWYoIShwIT1udWxs
+KSlwPXIubGVuZ3RoIT09MHx8cSE9bnVsbHx8cz8iIjpudWxsCm89ay5lCmlmKCFzKW49cCE9bnVsbCYm
+by5sZW5ndGghPT0wCmVsc2Ugbj0hMAppZihuJiYhQy54Qi5uKG8sIi8iKSlvPSIvIitvCm09bwpsPVAu
+bGUobnVsbCwwLDAsYikKcmV0dXJuIG5ldyBQLkRuKHQscixwLHEsbSxsLGsucil9LApKaDpmdW5jdGlv
+bihhLGIpe3ZhciB0LHMscixxLHAsbwpmb3IodD0wLHM9MDtDLnhCLlFpKGIsIi4uLyIscyk7KXtzKz0z
+OysrdH1yPUMueEIuY24oYSwiLyIpCndoaWxlKCEwKXtpZighKHI+MCYmdD4wKSlicmVhawpxPUMueEIu
+UGsoYSwiLyIsci0xKQppZihxPDApYnJlYWsKcD1yLXEKbz1wIT09MgppZighb3x8cD09PTMpaWYoQy54
+Qi5tKGEscSsxKT09PTQ2KW89IW98fEMueEIubShhLHErMik9PT00NgplbHNlIG89ITEKZWxzZSBvPSEx
+CmlmKG8pYnJlYWs7LS10CnI9cX1yZXR1cm4gQy54Qi5pNyhhLHIrMSxudWxsLEMueEIuRyhiLHMtMyp0
+KSl9LApaSTpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5tUyhQLmhLKGEpKX0sCm1TOmZ1bmN0aW9uKGEp
+e3ZhciB0LHMscixxLHAsbyxuLG0sbCxrPXRoaXMsaj1udWxsCmlmKGEuZ0ZpKCkubGVuZ3RoIT09MCl7
+dD1hLmdGaSgpCmlmKGEuZ2NqKCkpe3M9YS5na3UoKQpyPWEuZ0pmKGEpCnE9YS5neEEoKT9hLmd0cChh
+KTpqfWVsc2V7cT1qCnI9cQpzPSIifXA9UC54ZShhLmdJaShhKSkKbz1hLmdRRCgpP2EuZ3RQKCk6an1l
+bHNle3Q9ay5hCmlmKGEuZ2NqKCkpe3M9YS5na3UoKQpyPWEuZ0pmKGEpCnE9UC53QihhLmd4QSgpP2Eu
+Z3RwKGEpOmosdCkKcD1QLnhlKGEuZ0lpKGEpKQpvPWEuZ1FEKCk/YS5ndFAoKTpqfWVsc2V7cz1rLmIK
+cj1rLmMKcT1rLmQKaWYoYS5nSWkoYSk9PT0iIil7cD1rLmUKbz1hLmdRRCgpP2EuZ3RQKCk6ay5mfWVs
+c2V7aWYoYS5ndFQoKSlwPVAueGUoYS5nSWkoYSkpCmVsc2V7bj1rLmUKaWYobi5sZW5ndGg9PT0wKWlm
+KHI9PW51bGwpcD10Lmxlbmd0aD09PTA/YS5nSWkoYSk6UC54ZShhLmdJaShhKSkKZWxzZSBwPVAueGUo
+Ii8iK2EuZ0lpKGEpKQplbHNle209ay5KaChuLGEuZ0lpKGEpKQpsPXQubGVuZ3RoPT09MAppZighbHx8
+ciE9bnVsbHx8Qy54Qi5uKG4sIi8iKSlwPVAueGUobSkKZWxzZSBwPVAud0YobSwhbHx8ciE9bnVsbCl9
+fW89YS5nUUQoKT9hLmd0UCgpOmp9fX1yZXR1cm4gbmV3IFAuRG4odCxzLHIscSxwLG8sYS5nWjgoKT9h
+LmdLYSgpOmopfSwKZ2NqOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuYyE9bnVsbH0sCmd4QTpmdW5jdGlv
+bigpe3JldHVybiB0aGlzLmQhPW51bGx9LApnUUQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5mIT1udWxs
+fSwKZ1o4OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuciE9bnVsbH0sCmd0VDpmdW5jdGlvbigpe3JldHVy
+biBDLnhCLm4odGhpcy5lLCIvIil9LAp0NDpmdW5jdGlvbigpe3ZhciB0LHM9dGhpcyxyPXMuYQppZihy
+IT09IiImJnIhPT0iZmlsZSIpdGhyb3cgSC5iKFAuTDQoIkNhbm5vdCBleHRyYWN0IGEgZmlsZSBwYXRo
+IGZyb20gYSAiK3IrIiBVUkkiKSkKaWYocy5ndFAoKSE9PSIiKXRocm93IEguYihQLkw0KCJDYW5ub3Qg
+ZXh0cmFjdCBhIGZpbGUgcGF0aCBmcm9tIGEgVVJJIHdpdGggYSBxdWVyeSBjb21wb25lbnQiKSkKaWYo
+cy5nS2EoKSE9PSIiKXRocm93IEguYihQLkw0KCJDYW5ub3QgZXh0cmFjdCBhIGZpbGUgcGF0aCBmcm9t
+IGEgVVJJIHdpdGggYSBmcmFnbWVudCBjb21wb25lbnQiKSkKcj0kLndRKCkKaWYoSC5vVChyKSlyPVAu
+bW4ocykKZWxzZXtpZihzLmMhPW51bGwmJnMuZ0pmKHMpIT09IiIpSC52aChQLkw0KCJDYW5ub3QgZXh0
+cmFjdCBhIG5vbi1XaW5kb3dzIGZpbGUgcGF0aCBmcm9tIGEgZmlsZSBVUkkgd2l0aCBhbiBhdXRob3Jp
+dHkiKSkKdD1zLmdGaigpClAua0UodCwhMSkKcj1QLnZnKEMueEIubihzLmUsIi8iKT8iIisiLyI6IiIs
+dCwiLyIpCnI9ci5jaGFyQ29kZUF0KDApPT0wP3I6cn1yZXR1cm4gcn0sCnc6ZnVuY3Rpb24oYSl7cmV0
+dXJuIHRoaXMuZ25EKCl9LApETjpmdW5jdGlvbihhLGIpe3ZhciB0PXRoaXMKaWYoYj09bnVsbClyZXR1
+cm4hMQppZih0PT09YilyZXR1cm4hMApyZXR1cm4gdS5kRC5iKGIpJiZ0LmE9PT1iLmdGaSgpJiZ0LmMh
+PW51bGw9PT1iLmdjaigpJiZ0LmI9PT1iLmdrdSgpJiZ0LmdKZih0KT09PWIuZ0pmKGIpJiZ0Lmd0cCh0
+KT09PWIuZ3RwKGIpJiZ0LmU9PT1iLmdJaShiKSYmdC5mIT1udWxsPT09Yi5nUUQoKSYmdC5ndFAoKT09
+PWIuZ3RQKCkmJnQuciE9bnVsbD09PWIuZ1o4KCkmJnQuZ0thKCk9PT1iLmdLYSgpfSwKc0twOmZ1bmN0
+aW9uKGEpe3RoaXMueT11LmJrLmEoYSl9LApzTk06ZnVuY3Rpb24oYSl7dGhpcy5RPXUuY1ouYShhKX0s
+CiRpaUQ6MSwKZ0ZpOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuYX0sCmdJaTpmdW5jdGlvbihhKXtyZXR1
+cm4gdGhpcy5lfX0KUC5SWi5wcm90b3R5cGU9ewokMTpmdW5jdGlvbihhKXtyZXR1cm4gUC5lUChDLlpK
+LEguaChhKSxDLnhNLCExKX0sCiRTOjZ9ClAuTUUucHJvdG90eXBlPXsKJDI6ZnVuY3Rpb24oYSxiKXt2
+YXIgdD10aGlzLmIscz10aGlzLmEKdC5hKz1zLmEKcy5hPSImIgpzPXQuYSs9SC5FaihQLmVQKEMuRjMs
+YSxDLnhNLCEwKSkKaWYoYiE9bnVsbCYmYi5sZW5ndGghPT0wKXt0LmE9cysiPSIKdC5hKz1ILkVqKFAu
+ZVAoQy5GMyxiLEMueE0sITApKX19LAokUzoyMn0KUC55NS5wcm90b3R5cGU9ewokMjpmdW5jdGlvbihh
+LGIpe3ZhciB0LHMKSC5oKGEpCmlmKGI9PW51bGx8fHR5cGVvZiBiPT0ic3RyaW5nIil0aGlzLmEuJDIo
+YSxILmsoYikpCmVsc2UgZm9yKHQ9Si5JVCh1Lm0uYShiKSkscz10aGlzLmE7dC5GKCk7KXMuJDIoYSxI
+LmgodC5nbCgpKSl9LAokUzoxMn0KUC5QRS5wcm90b3R5cGU9ewpnbFI6ZnVuY3Rpb24oKXt2YXIgdCxz
+LHIscSxwPXRoaXMsbz1udWxsLG49cC5jCmlmKG49PW51bGwpe249cC5iCmlmKDA+PW4ubGVuZ3RoKXJl
+dHVybiBILk9IKG4sMCkKdD1wLmEKbj1uWzBdKzEKcz1DLnhCLlhVKHQsIj8iLG4pCnI9dC5sZW5ndGgK
+aWYocz49MCl7cT1QLlBJKHQscysxLHIsQy5WQywhMSkKcj1zfWVsc2UgcT1vCm49cC5jPW5ldyBQLnFl
+KCJkYXRhIiwiIixvLG8sUC5QSSh0LG4scixDLldkLCExKSxxLG8pfXJldHVybiBufSwKdzpmdW5jdGlv
+bihhKXt2YXIgdCxzPXRoaXMuYgppZigwPj1zLmxlbmd0aClyZXR1cm4gSC5PSChzLDApCnQ9dGhpcy5h
+CnJldHVybiBzWzBdPT09LTE/ImRhdGE6Iit0OnR9fQpQLnEzLnByb3RvdHlwZT17CiQxOmZ1bmN0aW9u
+KGEpe3JldHVybiBuZXcgVWludDhBcnJheSg5Nil9LAokUzoyM30KUC55SS5wcm90b3R5cGU9ewokMjpm
+dW5jdGlvbihhLGIpe3ZhciB0PXRoaXMuYQppZihhPj10Lmxlbmd0aClyZXR1cm4gSC5PSCh0LGEpCnQ9
+dFthXQpKLkNNKHQsMCw5NixiKQpyZXR1cm4gdH0sCiRTOjI0fQpQLmM2LnByb3RvdHlwZT17CiQzOmZ1
+bmN0aW9uKGEsYixjKXt2YXIgdCxzLHIscQpmb3IodD1iLmxlbmd0aCxzPWEubGVuZ3RoLHI9MDtyPHQ7
+KytyKXtxPUMueEIuVyhiLHIpXjk2CmlmKHE+PXMpcmV0dXJuIEguT0goYSxxKQphW3FdPWN9fX0KUC5x
+ZC5wcm90b3R5cGU9ewokMzpmdW5jdGlvbihhLGIsYyl7dmFyIHQscyxyLHEKZm9yKHQ9Qy54Qi5XKGIs
+MCkscz1DLnhCLlcoYiwxKSxyPWEubGVuZ3RoO3Q8PXM7Kyt0KXtxPSh0Xjk2KT4+PjAKaWYocT49cily
+ZXR1cm4gSC5PSChhLHEpCmFbcV09Y319fQpQLlVmLnByb3RvdHlwZT17CmdjajpmdW5jdGlvbigpe3Jl
+dHVybiB0aGlzLmM+MH0sCmd4QTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmM+MCYmdGhpcy5kKzE8dGhp
+cy5lfSwKZ1FEOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZjx0aGlzLnJ9LApnWjg6ZnVuY3Rpb24oKXty
 ZXR1cm4gdGhpcy5yPHRoaXMuYS5sZW5ndGh9LApnTnc6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5iPT09
 NCYmQy54Qi5uKHRoaXMuYSwiZmlsZSIpfSwKZ3ZoOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuYj09PTQm
 JkMueEIubih0aGlzLmEsImh0dHAiKX0sCmdSZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmI9PT01JiZD
 LnhCLm4odGhpcy5hLCJodHRwcyIpfSwKZ3RUOmZ1bmN0aW9uKCl7cmV0dXJuIEMueEIuUWkodGhpcy5h
-LCIvIix0aGlzLmUpfSwKZ0ZpOmZ1bmN0aW9uKCl7dmFyIHQscz10aGlzLHI9InBhY2thZ2UiLHE9cy5i
-CmlmKHE8PTApcmV0dXJuIiIKdD1zLngKaWYodCE9bnVsbClyZXR1cm4gdAppZihzLmd2aCgpKXE9cy54
-PSJodHRwIgplbHNlIGlmKHMuZ1JlKCkpe3MueD0iaHR0cHMiCnE9Imh0dHBzIn1lbHNlIGlmKHMuZ053
-KCkpe3MueD0iZmlsZSIKcT0iZmlsZSJ9ZWxzZSBpZihxPT09NyYmQy54Qi5uKHMuYSxyKSl7cy54PXIK
-cT1yfWVsc2V7cT1DLnhCLk5qKHMuYSwwLHEpCnMueD1xfXJldHVybiBxfSwKZ2t1OmZ1bmN0aW9uKCl7
-dmFyIHQ9dGhpcy5jLHM9dGhpcy5iKzMKcmV0dXJuIHQ+cz9DLnhCLk5qKHRoaXMuYSxzLHQtMSk6IiJ9
-LApnSmY6ZnVuY3Rpb24oYSl7dmFyIHQ9dGhpcy5jCnJldHVybiB0PjA/Qy54Qi5Oaih0aGlzLmEsdCx0
-aGlzLmQpOiIifSwKZ3RwOmZ1bmN0aW9uKGEpe3ZhciB0LHM9dGhpcwppZihzLmd4QSgpKXt0PXMuZApp
-Zih0eXBlb2YgdCE9PSJudW1iZXIiKXJldHVybiB0LmgoKQpyZXR1cm4gUC5RQShDLnhCLk5qKHMuYSx0
-KzEscy5lKSxudWxsLG51bGwpfWlmKHMuZ3ZoKCkpcmV0dXJuIDgwCmlmKHMuZ1JlKCkpcmV0dXJuIDQ0
-MwpyZXR1cm4gMH0sCmdJaTpmdW5jdGlvbihhKXtyZXR1cm4gQy54Qi5Oaih0aGlzLmEsdGhpcy5lLHRo
-aXMuZil9LApndFA6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLmYscz10aGlzLnIKaWYodHlwZW9mIHQhPT0i
-bnVtYmVyIilyZXR1cm4gdC5KKCkKcmV0dXJuIHQ8cz9DLnhCLk5qKHRoaXMuYSx0KzEscyk6IiJ9LApn
-S2E6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLnIscz10aGlzLmEKcmV0dXJuIHQ8cy5sZW5ndGg/Qy54Qi5H
-KHMsdCsxKToiIn0sCmdGajpmdW5jdGlvbigpe3ZhciB0LHMscj10aGlzLmUscT10aGlzLmYscD10aGlz
-LmEKaWYoQy54Qi5RaShwLCIvIixyKSl7aWYodHlwZW9mIHIhPT0ibnVtYmVyIilyZXR1cm4gci5oKCk7
-KytyfWlmKHI9PXEpcmV0dXJuIEMueEQKdD1ILlZNKFtdLHUucykKcz1yCndoaWxlKCEwKXtpZih0eXBl
-b2YgcyE9PSJudW1iZXIiKXJldHVybiBzLkooKQppZih0eXBlb2YgcSE9PSJudW1iZXIiKXJldHVybiBI
-LnBZKHEpCmlmKCEoczxxKSlicmVhawppZihDLnhCLm0ocCxzKT09PTQ3KXtDLk5tLmkodCxDLnhCLk5q
-KHAscixzKSkKcj1zKzF9KytzfUMuTm0uaSh0LEMueEIuTmoocCxyLHEpKQpyZXR1cm4gUC5BRih0LHUu
-Til9LApnaFk6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLmYKaWYodHlwZW9mIHQhPT0ibnVtYmVyIilyZXR1
-cm4gdC5KKCkKaWYodD49dGhpcy5yKXJldHVybiBDLldPCnJldHVybiBuZXcgUC5HaihQLldYKHRoaXMu
-Z3RQKCkpLHUuVyl9LAprWDpmdW5jdGlvbihhKXt2YXIgdCxzPXRoaXMuZAppZih0eXBlb2YgcyE9PSJu
-dW1iZXIiKXJldHVybiBzLmgoKQp0PXMrMQpyZXR1cm4gdCthLmxlbmd0aD09PXRoaXMuZSYmQy54Qi5R
-aSh0aGlzLmEsYSx0KX0sCk45OmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcyxzPXQucixyPXQuYQppZihzPj1y
-Lmxlbmd0aClyZXR1cm4gdApyZXR1cm4gbmV3IFAuVWYoQy54Qi5OaihyLDAscyksdC5iLHQuYyx0LmQs
-dC5lLHQuZixzLHQueCl9LApubTpmdW5jdGlvbihhLGIpe3ZhciB0LHMscixxLHAsbyxuLG0sbCxrLGo9
-dGhpcyxpPW51bGwKdS5YLmIobnVsbCkKdS5iLmIoYikKdD1qLmdGaSgpCnM9dD09PSJmaWxlIgpyPWou
-YwpxPXI+MD9DLnhCLk5qKGouYSxqLmIrMyxyKToiIgpwPWouZ3hBKCk/ai5ndHAoaik6aQpyPWouYwpp
-ZihyPjApbz1DLnhCLk5qKGouYSxyLGouZCkKZWxzZSBvPXEubGVuZ3RoIT09MHx8cCE9bnVsbHx8cz8i
-IjppCnI9ai5hCm49Qy54Qi5OaihyLGouZSxqLmYpCmlmKCFzKW09byE9bnVsbCYmbi5sZW5ndGghPT0w
-CmVsc2UgbT0hMAppZihtJiYhQy54Qi5uKG4sIi8iKSluPSIvIituCmw9UC5sZShpLDAsMCxiKQptPWou
-cgprPW08ci5sZW5ndGg/Qy54Qi5HKHIsbSsxKTppCnJldHVybiBuZXcgUC5Ebih0LHEsbyxwLG4sbCxr
-KX0sClpJOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLm1TKFAuaEsoYSkpfSwKbVM6ZnVuY3Rpb24oYSl7
-aWYoYSBpbnN0YW5jZW9mIFAuVWYpcmV0dXJuIHRoaXMudTEodGhpcyxhKQpyZXR1cm4gdGhpcy52cygp
-Lm1TKGEpfSwKdTE6ZnVuY3Rpb24oYSxiKXt2YXIgdCxzLHIscSxwLG8sbixtLGwsayxqLGksaCxnLGYs
-ZT1iLmIKaWYoZT4wKXJldHVybiBiCnQ9Yi5jCmlmKHQ+MCl7cz1hLmIKaWYoczw9MClyZXR1cm4gYgpp
-ZihhLmdOdygpKXI9Yi5lIT1iLmYKZWxzZSBpZihhLmd2aCgpKXI9IWIua1goIjgwIikKZWxzZSByPSFh
-LmdSZSgpfHwhYi5rWCgiNDQzIikKaWYocil7cT1zKzEKcD1DLnhCLk5qKGEuYSwwLHEpK0MueEIuRyhi
-LmEsZSsxKQplPWIuZAppZih0eXBlb2YgZSE9PSJudW1iZXIiKXJldHVybiBlLmgoKQpvPWIuZQppZih0
-eXBlb2YgbyE9PSJudW1iZXIiKXJldHVybiBvLmgoKQpuPWIuZgppZih0eXBlb2YgbiE9PSJudW1iZXIi
-KXJldHVybiBuLmgoKQpyZXR1cm4gbmV3IFAuVWYocCxzLHQrcSxlK3EsbytxLG4rcSxiLnIrcSxhLngp
-fWVsc2UgcmV0dXJuIHRoaXMudnMoKS5tUyhiKX1tPWIuZQplPWIuZgppZihtPT1lKXt0PWIucgppZih0
-eXBlb2YgZSE9PSJudW1iZXIiKXJldHVybiBlLkooKQppZihlPHQpe3M9YS5mCmlmKHR5cGVvZiBzIT09
-Im51bWJlciIpcmV0dXJuIHMuSE4oKQpxPXMtZQpyZXR1cm4gbmV3IFAuVWYoQy54Qi5OaihhLmEsMCxz
-KStDLnhCLkcoYi5hLGUpLGEuYixhLmMsYS5kLGEuZSxlK3EsdCtxLGEueCl9ZT1iLmEKaWYodDxlLmxl
-bmd0aCl7cz1hLnIKcmV0dXJuIG5ldyBQLlVmKEMueEIuTmooYS5hLDAscykrQy54Qi5HKGUsdCksYS5i
-LGEuYyxhLmQsYS5lLGEuZix0KyhzLXQpLGEueCl9cmV0dXJuIGEuTjkoKX10PWIuYQppZihDLnhCLlFp
-KHQsIi8iLG0pKXtzPWEuZQppZih0eXBlb2YgcyE9PSJudW1iZXIiKXJldHVybiBzLkhOKCkKaWYodHlw
-ZW9mIG0hPT0ibnVtYmVyIilyZXR1cm4gSC5wWShtKQpxPXMtbQpwPUMueEIuTmooYS5hLDAscykrQy54
-Qi5HKHQsbSkKaWYodHlwZW9mIGUhPT0ibnVtYmVyIilyZXR1cm4gZS5oKCkKcmV0dXJuIG5ldyBQLlVm
-KHAsYS5iLGEuYyxhLmQscyxlK3EsYi5yK3EsYS54KX1sPWEuZQprPWEuZgppZihsPT1rJiZhLmM+MCl7
-Zm9yKDtDLnhCLlFpKHQsIi4uLyIsbSk7KXtpZih0eXBlb2YgbSE9PSJudW1iZXIiKXJldHVybiBtLmgo
-KQptKz0zfWlmKHR5cGVvZiBsIT09Im51bWJlciIpcmV0dXJuIGwuSE4oKQppZih0eXBlb2YgbSE9PSJu
-dW1iZXIiKXJldHVybiBILnBZKG0pCnE9bC1tKzEKcD1DLnhCLk5qKGEuYSwwLGwpKyIvIitDLnhCLkco
-dCxtKQppZih0eXBlb2YgZSE9PSJudW1iZXIiKXJldHVybiBlLmgoKQpyZXR1cm4gbmV3IFAuVWYocCxh
-LmIsYS5jLGEuZCxsLGUrcSxiLnIrcSxhLngpfWo9YS5hCmZvcihpPWw7Qy54Qi5RaShqLCIuLi8iLGkp
-Oyl7aWYodHlwZW9mIGkhPT0ibnVtYmVyIilyZXR1cm4gaS5oKCkKaSs9M31oPTAKd2hpbGUoITApe2lm
-KHR5cGVvZiBtIT09Im51bWJlciIpcmV0dXJuIG0uaCgpCmc9bSszCmlmKHR5cGVvZiBlIT09Im51bWJl
-ciIpcmV0dXJuIEgucFkoZSkKaWYoIShnPD1lJiZDLnhCLlFpKHQsIi4uLyIsbSkpKWJyZWFrOysraApt
-PWd9Zj0iIgp3aGlsZSghMCl7aWYodHlwZW9mIGshPT0ibnVtYmVyIilyZXR1cm4gay5vcygpCmlmKHR5
-cGVvZiBpIT09Im51bWJlciIpcmV0dXJuIEgucFkoaSkKaWYoIShrPmkpKWJyZWFrOy0tawppZihDLnhC
-Lm0oaixrKT09PTQ3KXtpZihoPT09MCl7Zj0iLyIKYnJlYWt9LS1oCmY9Ii8ifX1pZihrPT09aSYmYS5i
-PD0wJiYhQy54Qi5RaShqLCIvIixsKSl7bS09aCozCmY9IiJ9cT1rLW0rZi5sZW5ndGgKcmV0dXJuIG5l
-dyBQLlVmKEMueEIuTmooaiwwLGspK2YrQy54Qi5HKHQsbSksYS5iLGEuYyxhLmQsbCxlK3EsYi5yK3Es
-YS54KX0sCnQ0OmZ1bmN0aW9uKCl7dmFyIHQscyxyLHEscD10aGlzCmlmKHAuYj49MCYmIXAuZ053KCkp
-dGhyb3cgSC5iKFAuTDQoIkNhbm5vdCBleHRyYWN0IGEgZmlsZSBwYXRoIGZyb20gYSAiK0guZChwLmdG
-aSgpKSsiIFVSSSIpKQp0PXAuZgpzPXAuYQppZih0eXBlb2YgdCE9PSJudW1iZXIiKXJldHVybiB0Lkoo
-KQppZih0PHMubGVuZ3RoKXtpZih0PHAucil0aHJvdyBILmIoUC5MNCgiQ2Fubm90IGV4dHJhY3QgYSBm
-aWxlIHBhdGggZnJvbSBhIFVSSSB3aXRoIGEgcXVlcnkgY29tcG9uZW50IikpCnRocm93IEguYihQLkw0
-KCJDYW5ub3QgZXh0cmFjdCBhIGZpbGUgcGF0aCBmcm9tIGEgVVJJIHdpdGggYSBmcmFnbWVudCBjb21w
-b25lbnQiKSl9cj0kLndRKCkKaWYoSC5vVChyKSl0PVAubW4ocCkKZWxzZXtxPXAuZAppZih0eXBlb2Yg
-cSE9PSJudW1iZXIiKXJldHVybiBILnBZKHEpCmlmKHAuYzxxKUgudmgoUC5MNCgiQ2Fubm90IGV4dHJh
-Y3QgYSBub24tV2luZG93cyBmaWxlIHBhdGggZnJvbSBhIGZpbGUgVVJJIHdpdGggYW4gYXV0aG9yaXR5
-IikpCnQ9Qy54Qi5OaihzLHAuZSx0KX1yZXR1cm4gdH0sCmdpTzpmdW5jdGlvbihhKXt2YXIgdD10aGlz
-LnkKcmV0dXJuIHQ9PW51bGw/dGhpcy55PUMueEIuZ2lPKHRoaXMuYSk6dH0sCkROOmZ1bmN0aW9uKGEs
-Yil7aWYoYj09bnVsbClyZXR1cm4hMQppZih0aGlzPT09YilyZXR1cm4hMApyZXR1cm4gdS5ELmMoYikm
-JnRoaXMuYT09PWIudygwKX0sCnZzOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcyxzPW51bGwscj10LmdGaSgp
-LHE9dC5na3UoKSxwPXQuYz4wP3QuZ0pmKHQpOnMsbz10Lmd4QSgpP3QuZ3RwKHQpOnMsbj10LmEsbT10
-LmYsbD1DLnhCLk5qKG4sdC5lLG0pLGs9dC5yCmlmKHR5cGVvZiBtIT09Im51bWJlciIpcmV0dXJuIG0u
-SigpCm09bTxrP3QuZ3RQKCk6cwpyZXR1cm4gbmV3IFAuRG4ocixxLHAsbyxsLG0sazxuLmxlbmd0aD90
-LmdLYSgpOnMpfSwKdzpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5hfSwKJGlpRDoxfQpQLnFlLnByb3Rv
-dHlwZT17fQpXLnFFLnByb3RvdHlwZT17fQpXLkdoLnByb3RvdHlwZT17Cnc6ZnVuY3Rpb24oYSl7cmV0
-dXJuIFN0cmluZyhhKX0sCiRpR2g6MX0KVy5mWS5wcm90b3R5cGU9ewp3OmZ1bmN0aW9uKGEpe3JldHVy
-biBTdHJpbmcoYSl9fQpXLm5CLnByb3RvdHlwZT17JGluQjoxfQpXLkF6LnByb3RvdHlwZT17JGlBejox
-fQpXLlFQLnByb3RvdHlwZT17JGlRUDoxfQpXLm54LnByb3RvdHlwZT17CmdBOmZ1bmN0aW9uKGEpe3Jl
-dHVybiBhLmxlbmd0aH19Clcub0oucHJvdG90eXBlPXsKZ0E6ZnVuY3Rpb24oYSl7cmV0dXJuIGEubGVu
-Z3RofX0KVy5pZC5wcm90b3R5cGU9e30KVy5RRi5wcm90b3R5cGU9e30KVy5OaC5wcm90b3R5cGU9ewp3
-OmZ1bmN0aW9uKGEpe3JldHVybiBTdHJpbmcoYSl9fQpXLklCLnByb3RvdHlwZT17Cnc6ZnVuY3Rpb24o
-YSl7cmV0dXJuIlJlY3RhbmdsZSAoIitILmQoYS5sZWZ0KSsiLCAiK0guZChhLnRvcCkrIikgIitILmQo
-YS53aWR0aCkrIiB4ICIrSC5kKGEuaGVpZ2h0KX0sCkROOmZ1bmN0aW9uKGEsYil7aWYoYj09bnVsbCly
-ZXR1cm4hMQpyZXR1cm4gdS5xLmMoYikmJmEubGVmdD09PWIubGVmdCYmYS50b3A9PT1iLnRvcCYmYS53
-aWR0aD09PWIud2lkdGgmJmEuaGVpZ2h0PT09Yi5oZWlnaHR9LApnaU86ZnVuY3Rpb24oYSl7cmV0dXJu
-IFcuckUoQy5DRC5naU8oYS5sZWZ0KSxDLkNELmdpTyhhLnRvcCksQy5DRC5naU8oYS53aWR0aCksQy5D
-RC5naU8oYS5oZWlnaHQpKX0sCiRpdG46MX0KVy5uNy5wcm90b3R5cGU9ewpnQTpmdW5jdGlvbihhKXty
-ZXR1cm4gYS5sZW5ndGh9fQpXLnd6LnByb3RvdHlwZT17CmdBOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlz
-LmEubGVuZ3RofSwKcTpmdW5jdGlvbihhLGIpe3ZhciB0CkguU2MoYikKdD10aGlzLmEKaWYoYjwwfHxi
-Pj10Lmxlbmd0aClyZXR1cm4gSC5PSCh0LGIpCnJldHVybiB0aGlzLiR0aS5kLmIodFtiXSl9LApZOmZ1
-bmN0aW9uKGEsYixjKXt0aGlzLiR0aS5kLmIoYykKdGhyb3cgSC5iKFAuTDQoIkNhbm5vdCBtb2RpZnkg
-bGlzdCIpKX19ClcuY3YucHJvdG90eXBlPXsKZ1FnOmZ1bmN0aW9uKGEpe3JldHVybiBuZXcgVy5pNyhh
-KX0sCmdQOmZ1bmN0aW9uKGEpe3JldHVybiBuZXcgVy5JNChhKX0sCnNQOmZ1bmN0aW9uKGEsYil7dmFy
-IHQKdS5YLmIoYikKdD10aGlzLmdQKGEpCnQuVjEoMCkKdC5GVigwLGIpfSwKdzpmdW5jdGlvbihhKXty
-ZXR1cm4gYS5sb2NhbE5hbWV9LApGRjpmdW5jdGlvbihhKXt2YXIgdD0hIWEuc2Nyb2xsSW50b1ZpZXdJ
-Zk5lZWRlZAppZih0KWEuc2Nyb2xsSW50b1ZpZXdJZk5lZWRlZCgpCmVsc2UgYS5zY3JvbGxJbnRvVmll
-dygpfSwKbno6ZnVuY3Rpb24oYSxiLGMsZCxlKXt2YXIgdCxzPXRoaXMucjYoYSxjLGQsZSkKc3dpdGNo
-KGIudG9Mb3dlckNhc2UoKSl7Y2FzZSJiZWZvcmViZWdpbiI6YS5wYXJlbnROb2RlLmluc2VydEJlZm9y
-ZShzLGEpCmJyZWFrCmNhc2UiYWZ0ZXJiZWdpbiI6dD1hLmNoaWxkTm9kZXMKYS5pbnNlcnRCZWZvcmUo
-cyx0Lmxlbmd0aD4wP3RbMF06bnVsbCkKYnJlYWsKY2FzZSJiZWZvcmVlbmQiOmEuYXBwZW5kQ2hpbGQo
-cykKYnJlYWsKY2FzZSJhZnRlcmVuZCI6YS5wYXJlbnROb2RlLmluc2VydEJlZm9yZShzLGEubmV4dFNp
-YmxpbmcpCmJyZWFrCmRlZmF1bHQ6SC52aChQLnhZKCJJbnZhbGlkIHBvc2l0aW9uICIrYikpfX0sCnI2
-OmZ1bmN0aW9uKGEsYixjLGQpe3ZhciB0LHMscixxCmlmKGM9PW51bGwpe2lmKGQ9PW51bGwpe3Q9JC5s
-dAppZih0PT1udWxsKXt0PUguVk0oW10sdS5rKQpzPW5ldyBXLnZEKHQpCkMuTm0uaSh0LFcuVHcobnVs
-bCkpCkMuTm0uaSh0LFcuQmwoKSkKJC5sdD1zCmQ9c31lbHNlIGQ9dH10PSQuRVUKaWYodD09bnVsbCl7
-dD1uZXcgVy5LbyhkKQokLkVVPXQKYz10fWVsc2V7dC5hPWQKYz10fX1lbHNlIGlmKGQhPW51bGwpdGhy
-b3cgSC5iKFAueFkoInZhbGlkYXRvciBjYW4gb25seSBiZSBwYXNzZWQgaWYgdHJlZVNhbml0aXplciBp
-cyBudWxsIikpCmlmKCQueG89PW51bGwpe3Q9ZG9jdW1lbnQKcz10LmltcGxlbWVudGF0aW9uLmNyZWF0
-ZUhUTUxEb2N1bWVudCgiIikKJC54bz1zCiQuQk89cy5jcmVhdGVSYW5nZSgpCnM9JC54by5jcmVhdGVF
-bGVtZW50KCJiYXNlIikKdS5jUi5iKHMpCnMuaHJlZj10LmJhc2VVUkkKJC54by5oZWFkLmFwcGVuZENo
-aWxkKHMpfXQ9JC54bwppZih0LmJvZHk9PW51bGwpe3M9dC5jcmVhdGVFbGVtZW50KCJib2R5IikKdC5i
-b2R5PXUuaS5iKHMpfXQ9JC54bwppZih1LmkuYyhhKSlyPXQuYm9keQplbHNle3I9dC5jcmVhdGVFbGVt
-ZW50KGEudGFnTmFtZSkKJC54by5ib2R5LmFwcGVuZENoaWxkKHIpfWlmKCJjcmVhdGVDb250ZXh0dWFs
-RnJhZ21lbnQiIGluIHdpbmRvdy5SYW5nZS5wcm90b3R5cGUmJiFDLk5tLnRnKEMuU3EsYS50YWdOYW1l
-KSl7JC5CTy5zZWxlY3ROb2RlQ29udGVudHMocikKcT0kLkJPLmNyZWF0ZUNvbnRleHR1YWxGcmFnbWVu
-dChiKX1lbHNle3IuaW5uZXJIVE1MPWIKcT0kLnhvLmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKQpmb3Io
-O3Q9ci5maXJzdENoaWxkLHQhPW51bGw7KXEuYXBwZW5kQ2hpbGQodCl9dD0kLnhvLmJvZHkKaWYocj09
-bnVsbD90IT1udWxsOnIhPT10KUouTHQocikKYy5QbihxKQpkb2N1bWVudC5hZG9wdE5vZGUocSkKcmV0
-dXJuIHF9LApBSDpmdW5jdGlvbihhLGIsYyl7cmV0dXJuIHRoaXMucjYoYSxiLGMsbnVsbCl9LApzaGY6
-ZnVuY3Rpb24oYSxiKXt0aGlzLllDKGEsYil9LApwazpmdW5jdGlvbihhLGIsYyl7YS50ZXh0Q29udGVu
-dD1udWxsCmEuYXBwZW5kQ2hpbGQodGhpcy5yNihhLGIsbnVsbCxjKSl9LApZQzpmdW5jdGlvbihhLGIp
-e3JldHVybiB0aGlzLnBrKGEsYixudWxsKX0sCmdWbDpmdW5jdGlvbihhKXtyZXR1cm4gbmV3IFcuZXUo
-YSwiY2xpY2siLCExLHUuUSl9LAokaWN2OjEsCmduczpmdW5jdGlvbihhKXtyZXR1cm4gYS50YWdOYW1l
-fX0KVy5Ddi5wcm90b3R5cGU9ewokMTpmdW5jdGlvbihhKXtyZXR1cm4gdS5oLmModS5BLmIoYSkpfSwK
-JFM6MjV9ClcuZWEucHJvdG90eXBlPXskaWVhOjF9ClcuRDAucHJvdG90eXBlPXsKT246ZnVuY3Rpb24o
-YSxiLGMsZCl7dS5VLmIoYykKaWYoYyE9bnVsbCl0aGlzLnYoYSxiLGMsZCl9LApCOmZ1bmN0aW9uKGEs
-YixjKXtyZXR1cm4gdGhpcy5PbihhLGIsYyxudWxsKX0sCnY6ZnVuY3Rpb24oYSxiLGMsZCl7cmV0dXJu
-IGEuYWRkRXZlbnRMaXN0ZW5lcihiLEgudFIodS5VLmIoYyksMSksZCl9LAokaUQwOjF9ClcuVDUucHJv
-dG90eXBlPXskaVQ1OjF9ClcuaDQucHJvdG90eXBlPXsKZ0E6ZnVuY3Rpb24oYSl7cmV0dXJuIGEubGVu
-Z3RofX0KVy5ici5wcm90b3R5cGU9ewpnQTpmdW5jdGlvbihhKXtyZXR1cm4gYS5sZW5ndGh9fQpXLlZi
-LnByb3RvdHlwZT17fQpXLk83LnByb3RvdHlwZT17CmVvOmZ1bmN0aW9uKGEsYixjLGQpe3JldHVybiBh
-Lm9wZW4oYixjLCEwKX0sCiRpTzc6MX0KVy5iVS5wcm90b3R5cGU9ewokMjpmdW5jdGlvbihhLGIpe3Ro
-aXMuYS5zZXRSZXF1ZXN0SGVhZGVyKEgueShhKSxILnkoYikpfSwKJFM6OH0KVy5oSC5wcm90b3R5cGU9
-ewokMTpmdW5jdGlvbihhKXt2YXIgdCxzLHIscSxwCnUucC5iKGEpCnQ9dGhpcy5hCnM9dC5zdGF0dXMK
-aWYodHlwZW9mIHMhPT0ibnVtYmVyIilyZXR1cm4gcy50QigpCnI9cz49MjAwJiZzPDMwMApxPXM+MzA3
-JiZzPDQwMApzPXJ8fHM9PT0wfHxzPT09MzA0fHxxCnA9dGhpcy5iCmlmKHMpcC5hTSgwLHQpCmVsc2Ug
-cC5wbShhKX0sCiRTOjE1fQpXLndhLnByb3RvdHlwZT17fQpXLlNnLnByb3RvdHlwZT17JGlTZzoxfQpX
-LnU4LnByb3RvdHlwZT17CmdEcjpmdW5jdGlvbihhKXtpZigib3JpZ2luIiBpbiBhKXJldHVybiBhLm9y
-aWdpbgpyZXR1cm4gSC5kKGEucHJvdG9jb2wpKyIvLyIrSC5kKGEuaG9zdCl9LAp3OmZ1bmN0aW9uKGEp
-e3JldHVybiBTdHJpbmcoYSl9LAokaXU4OjF9ClcuQWoucHJvdG90eXBlPXskaUFqOjF9ClcuZTcucHJv
-dG90eXBlPXsKZ3I4OmZ1bmN0aW9uKGEpe3ZhciB0PXRoaXMuYSxzPXQuY2hpbGROb2Rlcy5sZW5ndGgK
-aWYocz09PTApdGhyb3cgSC5iKFAuUFYoIk5vIGVsZW1lbnRzIikpCmlmKHM+MSl0aHJvdyBILmIoUC5Q
-VigiTW9yZSB0aGFuIG9uZSBlbGVtZW50IikpCnJldHVybiB0LmZpcnN0Q2hpbGR9LApGVjpmdW5jdGlv
-bihhLGIpe3ZhciB0LHMscixxCnUuZWguYihiKQp0PWIuYQpzPXRoaXMuYQppZih0IT09cylmb3Iocj10
-LmNoaWxkTm9kZXMubGVuZ3RoLHE9MDtxPHI7KytxKXMuYXBwZW5kQ2hpbGQodC5maXJzdENoaWxkKQpy
-ZXR1cm59LApZOmZ1bmN0aW9uKGEsYixjKXt2YXIgdCxzCnUuQS5iKGMpCnQ9dGhpcy5hCnM9dC5jaGls
-ZE5vZGVzCmlmKGI8MHx8Yj49cy5sZW5ndGgpcmV0dXJuIEguT0gocyxiKQp0LnJlcGxhY2VDaGlsZChj
-LHNbYl0pfSwKZ2t6OmZ1bmN0aW9uKGEpe3ZhciB0PXRoaXMuYS5jaGlsZE5vZGVzCnJldHVybiBuZXcg
-Vy5XOSh0LHQubGVuZ3RoLEgueksodCkuQygiVzk8R20uRT4iKSl9LApnQTpmdW5jdGlvbihhKXtyZXR1
-cm4gdGhpcy5hLmNoaWxkTm9kZXMubGVuZ3RofSwKcTpmdW5jdGlvbihhLGIpe3ZhciB0CkguU2MoYikK
+LCIvIix0aGlzLmUpfSwKZ0ZpOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy54CnJldHVybiB0PT1udWxsP3Ro
+aXMueD10aGlzLlUyKCk6dH0sClUyOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcyxzPXQuYgppZihzPD0wKXJl
+dHVybiIiCmlmKHQuZ3ZoKCkpcmV0dXJuImh0dHAiCmlmKHQuZ1JlKCkpcmV0dXJuImh0dHBzIgppZih0
+LmdOdygpKXJldHVybiJmaWxlIgppZihzPT09NyYmQy54Qi5uKHQuYSwicGFja2FnZSIpKXJldHVybiJw
+YWNrYWdlIgpyZXR1cm4gQy54Qi5Oaih0LmEsMCxzKX0sCmdrdTpmdW5jdGlvbigpe3ZhciB0PXRoaXMu
+YyxzPXRoaXMuYiszCnJldHVybiB0PnM/Qy54Qi5Oaih0aGlzLmEscyx0LTEpOiIifSwKZ0pmOmZ1bmN0
+aW9uKGEpe3ZhciB0PXRoaXMuYwpyZXR1cm4gdD4wP0MueEIuTmoodGhpcy5hLHQsdGhpcy5kKToiIn0s
+Cmd0cDpmdW5jdGlvbihhKXt2YXIgdD10aGlzCmlmKHQuZ3hBKCkpcmV0dXJuIFAuUUEoQy54Qi5Oaih0
+LmEsdC5kKzEsdC5lKSxudWxsKQppZih0Lmd2aCgpKXJldHVybiA4MAppZih0LmdSZSgpKXJldHVybiA0
+NDMKcmV0dXJuIDB9LApnSWk6ZnVuY3Rpb24oYSl7cmV0dXJuIEMueEIuTmoodGhpcy5hLHRoaXMuZSx0
+aGlzLmYpfSwKZ3RQOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5mLHM9dGhpcy5yCnJldHVybiB0PHM/Qy54
+Qi5Oaih0aGlzLmEsdCsxLHMpOiIifSwKZ0thOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5yLHM9dGhpcy5h
+CnJldHVybiB0PHMubGVuZ3RoP0MueEIuRyhzLHQrMSk6IiJ9LApnRmo6ZnVuY3Rpb24oKXt2YXIgdCxz
+LHI9dGhpcy5lLHE9dGhpcy5mLHA9dGhpcy5hCmlmKEMueEIuUWkocCwiLyIscikpKytyCmlmKHI9PT1x
+KXJldHVybiBDLnhECnQ9SC5WTShbXSx1LnMpCmZvcihzPXI7czxxOysrcylpZihDLnhCLm0ocCxzKT09
+PTQ3KXtDLk5tLmkodCxDLnhCLk5qKHAscixzKSkKcj1zKzF9Qy5ObS5pKHQsQy54Qi5OaihwLHIscSkp
+CnJldHVybiBQLkFGKHQsdS5OKX0sCmdoWTpmdW5jdGlvbigpe2lmKHRoaXMuZj49dGhpcy5yKXJldHVy
+biBDLldPCnJldHVybiBuZXcgUC5HaihQLldYKHRoaXMuZ3RQKCkpLHUuZHcpfSwKa1g6ZnVuY3Rpb24o
+YSl7dmFyIHQ9dGhpcy5kKzEKcmV0dXJuIHQrYS5sZW5ndGg9PT10aGlzLmUmJkMueEIuUWkodGhpcy5h
+LGEsdCl9LApOOTpmdW5jdGlvbigpe3ZhciB0PXRoaXMscz10LnIscj10LmEKaWYocz49ci5sZW5ndGgp
+cmV0dXJuIHQKcmV0dXJuIG5ldyBQLlVmKEMueEIuTmoociwwLHMpLHQuYix0LmMsdC5kLHQuZSx0LmYs
+cyx0LngpfSwKbm06ZnVuY3Rpb24oYSxiKXt2YXIgdCxzLHIscSxwLG8sbixtLGwsayxqPXRoaXMsaT1u
+dWxsCnUuVS5hKG51bGwpCnUuYzkuYShiKQp0PWouZ0ZpKCkKcz10PT09ImZpbGUiCnI9ai5jCnE9cj4w
+P0MueEIuTmooai5hLGouYiszLHIpOiIiCnA9ai5neEEoKT9qLmd0cChqKTppCnI9ai5jCmlmKHI+MClv
+PUMueEIuTmooai5hLHIsai5kKQplbHNlIG89cS5sZW5ndGghPT0wfHxwIT1udWxsfHxzPyIiOmkKcj1q
+LmEKbj1DLnhCLk5qKHIsai5lLGouZikKaWYoIXMpbT1vIT1udWxsJiZuLmxlbmd0aCE9PTAKZWxzZSBt
+PSEwCmlmKG0mJiFDLnhCLm4obiwiLyIpKW49Ii8iK24KbD1QLmxlKGksMCwwLGIpCm09ai5yCms9bTxy
+Lmxlbmd0aD9DLnhCLkcocixtKzEpOmkKcmV0dXJuIG5ldyBQLkRuKHQscSxvLHAsbixsLGspfSwKWkk6
+ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMubVMoUC5oSyhhKSl9LAptUzpmdW5jdGlvbihhKXtpZihhIGlu
+c3RhbmNlb2YgUC5VZilyZXR1cm4gdGhpcy51MSh0aGlzLGEpCnJldHVybiB0aGlzLnZzKCkubVMoYSl9
+LAp1MTpmdW5jdGlvbihhLGIpe3ZhciB0LHMscixxLHAsbyxuLG0sbCxrLGosaSxoPWIuYgppZihoPjAp
+cmV0dXJuIGIKdD1iLmMKaWYodD4wKXtzPWEuYgppZihzPD0wKXJldHVybiBiCmlmKGEuZ053KCkpcj1i
+LmUhPT1iLmYKZWxzZSBpZihhLmd2aCgpKXI9IWIua1goIjgwIikKZWxzZSByPSFhLmdSZSgpfHwhYi5r
+WCgiNDQzIikKaWYocil7cT1zKzEKcmV0dXJuIG5ldyBQLlVmKEMueEIuTmooYS5hLDAscSkrQy54Qi5H
+KGIuYSxoKzEpLHMsdCtxLGIuZCtxLGIuZStxLGIuZitxLGIucitxLGEueCl9ZWxzZSByZXR1cm4gdGhp
+cy52cygpLm1TKGIpfXA9Yi5lCmg9Yi5mCmlmKHA9PT1oKXt0PWIucgppZihoPHQpe3M9YS5mCnE9cy1o
+CnJldHVybiBuZXcgUC5VZihDLnhCLk5qKGEuYSwwLHMpK0MueEIuRyhiLmEsaCksYS5iLGEuYyxhLmQs
+YS5lLGgrcSx0K3EsYS54KX1oPWIuYQppZih0PGgubGVuZ3RoKXtzPWEucgpyZXR1cm4gbmV3IFAuVWYo
+Qy54Qi5OaihhLmEsMCxzKStDLnhCLkcoaCx0KSxhLmIsYS5jLGEuZCxhLmUsYS5mLHQrKHMtdCksYS54
+KX1yZXR1cm4gYS5OOSgpfXQ9Yi5hCmlmKEMueEIuUWkodCwiLyIscCkpe3M9YS5lCnE9cy1wCnJldHVy
+biBuZXcgUC5VZihDLnhCLk5qKGEuYSwwLHMpK0MueEIuRyh0LHApLGEuYixhLmMsYS5kLHMsaCtxLGIu
+citxLGEueCl9bz1hLmUKbj1hLmYKaWYobz09PW4mJmEuYz4wKXtmb3IoO0MueEIuUWkodCwiLi4vIixw
+KTspcCs9MwpxPW8tcCsxCnJldHVybiBuZXcgUC5VZihDLnhCLk5qKGEuYSwwLG8pKyIvIitDLnhCLkco
+dCxwKSxhLmIsYS5jLGEuZCxvLGgrcSxiLnIrcSxhLngpfW09YS5hCmZvcihsPW87Qy54Qi5RaShtLCIu
+Li8iLGwpOylsKz0zCms9MAp3aGlsZSghMCl7aj1wKzMKaWYoIShqPD1oJiZDLnhCLlFpKHQsIi4uLyIs
+cCkpKWJyZWFrOysrawpwPWp9Zm9yKGk9IiI7bj5sOyl7LS1uCmlmKEMueEIubShtLG4pPT09NDcpe2lm
+KGs9PT0wKXtpPSIvIgpicmVha30tLWsKaT0iLyJ9fWlmKG49PT1sJiZhLmI8PTAmJiFDLnhCLlFpKG0s
+Ii8iLG8pKXtwLT1rKjMKaT0iIn1xPW4tcCtpLmxlbmd0aApyZXR1cm4gbmV3IFAuVWYoQy54Qi5Oaiht
+LDAsbikraStDLnhCLkcodCxwKSxhLmIsYS5jLGEuZCxvLGgrcSxiLnIrcSxhLngpfSwKdDQ6ZnVuY3Rp
+b24oKXt2YXIgdCxzLHIscT10aGlzCmlmKHEuYj49MCYmIXEuZ053KCkpdGhyb3cgSC5iKFAuTDQoIkNh
+bm5vdCBleHRyYWN0IGEgZmlsZSBwYXRoIGZyb20gYSAiK3EuZ0ZpKCkrIiBVUkkiKSkKdD1xLmYKcz1x
+LmEKaWYodDxzLmxlbmd0aCl7aWYodDxxLnIpdGhyb3cgSC5iKFAuTDQoIkNhbm5vdCBleHRyYWN0IGEg
+ZmlsZSBwYXRoIGZyb20gYSBVUkkgd2l0aCBhIHF1ZXJ5IGNvbXBvbmVudCIpKQp0aHJvdyBILmIoUC5M
+NCgiQ2Fubm90IGV4dHJhY3QgYSBmaWxlIHBhdGggZnJvbSBhIFVSSSB3aXRoIGEgZnJhZ21lbnQgY29t
+cG9uZW50IikpfXI9JC53USgpCmlmKEgub1QocikpdD1QLm1uKHEpCmVsc2V7aWYocS5jPHEuZClILnZo
+KFAuTDQoIkNhbm5vdCBleHRyYWN0IGEgbm9uLVdpbmRvd3MgZmlsZSBwYXRoIGZyb20gYSBmaWxlIFVS
+SSB3aXRoIGFuIGF1dGhvcml0eSIpKQp0PUMueEIuTmoocyxxLmUsdCl9cmV0dXJuIHR9LApnaU86ZnVu
+Y3Rpb24oYSl7dmFyIHQ9dGhpcy55CnJldHVybiB0PT1udWxsP3RoaXMueT1DLnhCLmdpTyh0aGlzLmEp
+OnR9LApETjpmdW5jdGlvbihhLGIpe2lmKGI9PW51bGwpcmV0dXJuITEKaWYodGhpcz09PWIpcmV0dXJu
+ITAKcmV0dXJuIHUuZEQuYihiKSYmdGhpcy5hPT09Yi53KDApfSwKdnM6ZnVuY3Rpb24oKXt2YXIgdD10
+aGlzLHM9bnVsbCxyPXQuZ0ZpKCkscT10LmdrdSgpLHA9dC5jPjA/dC5nSmYodCk6cyxvPXQuZ3hBKCk/
+dC5ndHAodCk6cyxuPXQuYSxtPXQuZixsPUMueEIuTmoobix0LmUsbSksaz10LnIKbT1tPGs/dC5ndFAo
+KTpzCnJldHVybiBuZXcgUC5EbihyLHEscCxvLGwsbSxrPG4ubGVuZ3RoP3QuZ0thKCk6cyl9LAp3OmZ1
+bmN0aW9uKGEpe3JldHVybiB0aGlzLmF9LAokaWlEOjF9ClAucWUucHJvdG90eXBlPXt9ClcucUUucHJv
+dG90eXBlPXt9ClcuR2gucHJvdG90eXBlPXsKdzpmdW5jdGlvbihhKXtyZXR1cm4gU3RyaW5nKGEpfSwK
+JGlHaDoxfQpXLmZZLnByb3RvdHlwZT17Cnc6ZnVuY3Rpb24oYSl7cmV0dXJuIFN0cmluZyhhKX19Clcu
+bkIucHJvdG90eXBlPXskaW5COjF9ClcuQXoucHJvdG90eXBlPXskaUF6OjF9ClcuUVAucHJvdG90eXBl
+PXskaVFQOjF9ClcubngucHJvdG90eXBlPXsKZ0E6ZnVuY3Rpb24oYSl7cmV0dXJuIGEubGVuZ3RofX0K
+Vy5vSi5wcm90b3R5cGU9ewpnQTpmdW5jdGlvbihhKXtyZXR1cm4gYS5sZW5ndGh9fQpXLmlkLnByb3Rv
+dHlwZT17fQpXLlFGLnByb3RvdHlwZT17fQpXLk5oLnByb3RvdHlwZT17Cnc6ZnVuY3Rpb24oYSl7cmV0
+dXJuIFN0cmluZyhhKX19ClcuYWUucHJvdG90eXBlPXsKRGM6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gYS5j
+cmVhdGVIVE1MRG9jdW1lbnQoYil9fQpXLklCLnByb3RvdHlwZT17Cnc6ZnVuY3Rpb24oYSl7cmV0dXJu
+IlJlY3RhbmdsZSAoIitILkVqKGEubGVmdCkrIiwgIitILkVqKGEudG9wKSsiKSAiK0guRWooYS53aWR0
+aCkrIiB4ICIrSC5FaihhLmhlaWdodCl9LApETjpmdW5jdGlvbihhLGIpe2lmKGI9PW51bGwpcmV0dXJu
+ITEKcmV0dXJuIHUucS5iKGIpJiZhLmxlZnQ9PT1iLmxlZnQmJmEudG9wPT09Yi50b3AmJmEud2lkdGg9
+PT1iLndpZHRoJiZhLmhlaWdodD09PWIuaGVpZ2h0fSwKZ2lPOmZ1bmN0aW9uKGEpe3JldHVybiBXLnJF
+KEMuQ0QuZ2lPKGEubGVmdCksQy5DRC5naU8oYS50b3ApLEMuQ0QuZ2lPKGEud2lkdGgpLEMuQ0QuZ2lP
+KGEuaGVpZ2h0KSl9LAokaXRuOjF9ClcubjcucHJvdG90eXBlPXsKZ0E6ZnVuY3Rpb24oYSl7cmV0dXJu
+IGEubGVuZ3RofX0KVy53ei5wcm90b3R5cGU9ewpnQTpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5hLmxl
+bmd0aH0sCnE6ZnVuY3Rpb24oYSxiKXt2YXIgdApILnVQKGIpCnQ9dGhpcy5hCmlmKGI8MHx8Yj49dC5s
+ZW5ndGgpcmV0dXJuIEguT0godCxiKQpyZXR1cm4gdGhpcy4kdGkuYy5hKHRbYl0pfSwKWTpmdW5jdGlv
+bihhLGIsYyl7dGhpcy4kdGkuYy5hKGMpCnRocm93IEguYihQLkw0KCJDYW5ub3QgbW9kaWZ5IGxpc3Qi
+KSl9fQpXLmN2LnByb3RvdHlwZT17CmdRZzpmdW5jdGlvbihhKXtyZXR1cm4gbmV3IFcuaTcoYSl9LApn
+UDpmdW5jdGlvbihhKXtyZXR1cm4gbmV3IFcuSTQoYSl9LApzUDpmdW5jdGlvbihhLGIpe3ZhciB0CnUu
+US5hKGIpCnQ9dGhpcy5nUChhKQp0LlYxKDApCnQuRlYoMCxiKX0sCnc6ZnVuY3Rpb24oYSl7cmV0dXJu
+IGEubG9jYWxOYW1lfSwKRkY6ZnVuY3Rpb24oYSl7dmFyIHQ9ISFhLnNjcm9sbEludG9WaWV3SWZOZWVk
+ZWQKaWYodClhLnNjcm9sbEludG9WaWV3SWZOZWVkZWQoKQplbHNlIGEuc2Nyb2xsSW50b1ZpZXcoKX0s
+Cm56OmZ1bmN0aW9uKGEsYixjLGQsZSl7dmFyIHQscz10aGlzLnI2KGEsYyxkLGUpCnN3aXRjaChiLnRv
+TG93ZXJDYXNlKCkpe2Nhc2UiYmVmb3JlYmVnaW4iOnQ9YS5wYXJlbnROb2RlCnQudG9TdHJpbmcKSi5F
+aCh0LHMsYSkKYnJlYWsKY2FzZSJhZnRlcmJlZ2luIjp0PWEuY2hpbGROb2Rlcwp0aGlzLm1LKGEscyx0
+Lmxlbmd0aD4wP3RbMF06bnVsbCkKYnJlYWsKY2FzZSJiZWZvcmVlbmQiOmEuYXBwZW5kQ2hpbGQocykK
+YnJlYWsKY2FzZSJhZnRlcmVuZCI6dD1hLnBhcmVudE5vZGUKdC50b1N0cmluZwpKLkVoKHQscyxhLm5l
+eHRTaWJsaW5nKQpicmVhawpkZWZhdWx0OkgudmgoUC54WSgiSW52YWxpZCBwb3NpdGlvbiAiK2IpKX19
+LApyNjpmdW5jdGlvbihhLGIsYyxkKXt2YXIgdCxzLHIscQppZihjPT1udWxsKXtpZihkPT1udWxsKXt0
+PSQubHQKaWYodD09bnVsbCl7dD1ILlZNKFtdLHUucCkKcz1uZXcgVy52RCh0KQpDLk5tLmkodCxXLlR3
+KG51bGwpKQpDLk5tLmkodCxXLkJsKCkpCiQubHQ9cwpkPXN9ZWxzZSBkPXR9dD0kLkVVCmlmKHQ9PW51
+bGwpe3Q9bmV3IFcuS28oZCkKJC5FVT10CmM9dH1lbHNle3QuYT1kCmM9dH19ZWxzZSBpZihkIT1udWxs
+KXRocm93IEguYihQLnhZKCJ2YWxpZGF0b3IgY2FuIG9ubHkgYmUgcGFzc2VkIGlmIHRyZWVTYW5pdGl6
+ZXIgaXMgbnVsbCIpKQppZigkLnhvPT1udWxsKXt0PWRvY3VtZW50CnM9Qy5tSC5EYyh0LmltcGxlbWVu
+dGF0aW9uLCIiKQokLnhvPXMKJC5CTz1zLmNyZWF0ZVJhbmdlKCkKcz0kLnhvLmNyZWF0ZUVsZW1lbnQo
+ImJhc2UiKQp1LmNSLmEocykKcy5ocmVmPXQuYmFzZVVSSQokLnhvLmhlYWQuYXBwZW5kQ2hpbGQocyl9
+dD0kLnhvCmlmKHQuYm9keT09bnVsbCl7cz10LmNyZWF0ZUVsZW1lbnQoImJvZHkiKQpDLkJaLnNYRyh0
+LHUuay5hKHMpKX10PSQueG8KaWYodS5rLmIoYSkpe3Q9dC5ib2R5CnQudG9TdHJpbmcKcj10fWVsc2V7
+dC50b1N0cmluZwpyPXQuY3JlYXRlRWxlbWVudChhLnRhZ05hbWUpCiQueG8uYm9keS5hcHBlbmRDaGls
+ZChyKX1pZigiY3JlYXRlQ29udGV4dHVhbEZyYWdtZW50IiBpbiB3aW5kb3cuUmFuZ2UucHJvdG90eXBl
+JiYhQy5ObS50ZyhDLlNxLGEudGFnTmFtZSkpeyQuQk8uc2VsZWN0Tm9kZUNvbnRlbnRzKHIpCnE9JC5C
+Ty5jcmVhdGVDb250ZXh0dWFsRnJhZ21lbnQoYil9ZWxzZXtKLndmKHIsYikKcT0kLnhvLmNyZWF0ZURv
+Y3VtZW50RnJhZ21lbnQoKQpmb3IoO3Q9ci5maXJzdENoaWxkLHQhPW51bGw7KXEuYXBwZW5kQ2hpbGQo
+dCl9aWYociE9PSQueG8uYm9keSlKLkx0KHIpCmMuUG4ocSkKZG9jdW1lbnQuYWRvcHROb2RlKHEpCnJl
+dHVybiBxfSwKQUg6ZnVuY3Rpb24oYSxiLGMpe3JldHVybiB0aGlzLnI2KGEsYixjLG51bGwpfSwKc2hm
+OmZ1bmN0aW9uKGEsYil7dGhpcy5ZQyhhLGIpfSwKcGs6ZnVuY3Rpb24oYSxiLGMpe3RoaXMuc2E0KGEs
+bnVsbCkKYi50b1N0cmluZwphLmFwcGVuZENoaWxkKHRoaXMucjYoYSxiLG51bGwsYykpfSwKWUM6ZnVu
+Y3Rpb24oYSxiKXtyZXR1cm4gdGhpcy5wayhhLGIsbnVsbCl9LApzUk46ZnVuY3Rpb24oYSxiKXthLmlu
+bmVySFRNTD1ifSwKZ25zOmZ1bmN0aW9uKGEpe3JldHVybiBhLnRhZ05hbWV9LApnVmw6ZnVuY3Rpb24o
+YSl7cmV0dXJuIG5ldyBXLmV1KGEsImNsaWNrIiwhMSx1LkcpfSwKJGljdjoxfQpXLkN2LnByb3RvdHlw
+ZT17CiQxOmZ1bmN0aW9uKGEpe3JldHVybiB1LmguYih1LkEuYShhKSl9LAokUzoyNX0KVy5lYS5wcm90
+b3R5cGU9eyRpZWE6MX0KVy5EMC5wcm90b3R5cGU9ewpPbjpmdW5jdGlvbihhLGIsYyxkKXt1LmJ3LmEo
+YykKaWYoYyE9bnVsbCl0aGlzLnYoYSxiLGMsZCl9LApCOmZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gdGhp
+cy5PbihhLGIsYyxudWxsKX0sCnY6ZnVuY3Rpb24oYSxiLGMsZCl7cmV0dXJuIGEuYWRkRXZlbnRMaXN0
+ZW5lcihiLEgudFIodS5idy5hKGMpLDEpLGQpfSwKJGlEMDoxfQpXLlQ1LnByb3RvdHlwZT17JGlUNTox
+fQpXLmg0LnByb3RvdHlwZT17CmdBOmZ1bmN0aW9uKGEpe3JldHVybiBhLmxlbmd0aH19ClcuYnIucHJv
+dG90eXBlPXsKZ0E6ZnVuY3Rpb24oYSl7cmV0dXJuIGEubGVuZ3RofX0KVy5WYi5wcm90b3R5cGU9ewpz
+WEc6ZnVuY3Rpb24oYSxiKXthLmJvZHk9Yn19ClcuZkoucHJvdG90eXBlPXsKZW86ZnVuY3Rpb24oYSxi
+LGMsZCl7cmV0dXJuIGEub3BlbihiLGMsITApfSwKJGlmSjoxfQpXLmJVLnByb3RvdHlwZT17CiQyOmZ1
+bmN0aW9uKGEsYil7dGhpcy5hLnNldFJlcXVlc3RIZWFkZXIoSC5oKGEpLEguaChiKSl9LAokUzo3fQpX
+LmhILnByb3RvdHlwZT17CiQxOmZ1bmN0aW9uKGEpe3ZhciB0LHMscixxLHAKdS5nWi5hKGEpCnQ9dGhp
+cy5hCnM9dC5zdGF0dXMKcj1zPj0yMDAmJnM8MzAwCnE9cz4zMDcmJnM8NDAwCnM9cnx8cz09PTB8fHM9
+PT0zMDR8fHEKcD10aGlzLmIKaWYocylwLmFNKDAsdCkKZWxzZSBwLnBtKGEpfSwKJFM6Mjd9Clcud2Eu
+cHJvdG90eXBlPXt9ClcuU2cucHJvdG90eXBlPXskaVNnOjF9ClcudTgucHJvdG90eXBlPXsKZ0RyOmZ1
+bmN0aW9uKGEpe2lmKCJvcmlnaW4iIGluIGEpcmV0dXJuIGEub3JpZ2luCnJldHVybiBhLnByb3RvY29s
+KyIvLyIrYS5ob3N0fSwKdzpmdW5jdGlvbihhKXtyZXR1cm4gU3RyaW5nKGEpfSwKJGl1ODoxfQpXLk9L
+LnByb3RvdHlwZT17JGlPSzoxfQpXLmU3LnByb3RvdHlwZT17CmdyODpmdW5jdGlvbihhKXt2YXIgdD10
+aGlzLmEscz10LmNoaWxkTm9kZXMubGVuZ3RoCmlmKHM9PT0wKXRocm93IEguYihQLlBWKCJObyBlbGVt
+ZW50cyIpKQppZihzPjEpdGhyb3cgSC5iKFAuUFYoIk1vcmUgdGhhbiBvbmUgZWxlbWVudCIpKQp0PXQu
+Zmlyc3RDaGlsZAp0LnRvU3RyaW5nCnJldHVybiB0fSwKRlY6ZnVuY3Rpb24oYSxiKXt2YXIgdCxzLHIs
+cSxwCnUuZWguYShiKQp0PWIuYQpzPXRoaXMuYQppZih0IT09cylmb3Iocj10LmNoaWxkTm9kZXMubGVu
+Z3RoLHE9MDtxPHI7KytxKXtwPXQuZmlyc3RDaGlsZApwLnRvU3RyaW5nCnMuYXBwZW5kQ2hpbGQocCl9
+cmV0dXJufSwKWTpmdW5jdGlvbihhLGIsYyl7dmFyIHQscwp1LkEuYShjKQp0PXRoaXMuYQpzPXQuY2hp
+bGROb2RlcwppZihiPDB8fGI+PXMubGVuZ3RoKXJldHVybiBILk9IKHMsYikKdC5yZXBsYWNlQ2hpbGQo
+YyxzW2JdKX0sCmdrejpmdW5jdGlvbihhKXt2YXIgdD10aGlzLmEuY2hpbGROb2RlcwpyZXR1cm4gbmV3
+IFcuVzkodCx0Lmxlbmd0aCxILnoodCkuQygiVzk8R20uRT4iKSl9LApnQTpmdW5jdGlvbihhKXtyZXR1
+cm4gdGhpcy5hLmNoaWxkTm9kZXMubGVuZ3RofSwKcTpmdW5jdGlvbihhLGIpe3ZhciB0CkgudVAoYikK
 dD10aGlzLmEuY2hpbGROb2RlcwppZihiPDB8fGI+PXQubGVuZ3RoKXJldHVybiBILk9IKHQsYikKcmV0
 dXJuIHRbYl19fQpXLnVILnByb3RvdHlwZT17CndnOmZ1bmN0aW9uKGEpe3ZhciB0PWEucGFyZW50Tm9k
 ZQppZih0IT1udWxsKXQucmVtb3ZlQ2hpbGQoYSl9LApENDpmdW5jdGlvbihhKXt2YXIgdApmb3IoO3Q9
 YS5maXJzdENoaWxkLHQhPW51bGw7KWEucmVtb3ZlQ2hpbGQodCl9LAp3OmZ1bmN0aW9uKGEpe3ZhciB0
-PWEubm9kZVZhbHVlCnJldHVybiB0PT1udWxsP3RoaXMuVShhKTp0fSwKJGl1SDoxfQpXLkJILnByb3Rv
-dHlwZT17CmdBOmZ1bmN0aW9uKGEpe3JldHVybiBhLmxlbmd0aH0sCnE6ZnVuY3Rpb24oYSxiKXtILlNj
-KGIpCmlmKGI+Pj4wIT09Ynx8Yj49YS5sZW5ndGgpdGhyb3cgSC5iKFAuQ2YoYixhLG51bGwsbnVsbCxu
-dWxsKSkKcmV0dXJuIGFbYl19LApZOmZ1bmN0aW9uKGEsYixjKXt1LkEuYihjKQp0aHJvdyBILmIoUC5M
-NCgiQ2Fubm90IGFzc2lnbiBlbGVtZW50IG9mIGltbXV0YWJsZSBMaXN0LiIpKX0sCkU6ZnVuY3Rpb24o
-YSxiKXtpZihiPDB8fGI+PWEubGVuZ3RoKXJldHVybiBILk9IKGEsYikKcmV0dXJuIGFbYl19LAokaWJR
-OjEsCiRpWGo6MSwKJGljWDoxLAokaXpNOjF9ClcuU04ucHJvdG90eXBlPXt9ClcuZXcucHJvdG90eXBl
-PXskaWV3OjF9ClcubHAucHJvdG90eXBlPXsKZ0E6ZnVuY3Rpb24oYSl7cmV0dXJuIGEubGVuZ3RofX0K
-Vy5UYi5wcm90b3R5cGU9ewpyNjpmdW5jdGlvbihhLGIsYyxkKXt2YXIgdCxzCmlmKCJjcmVhdGVDb250
-ZXh0dWFsRnJhZ21lbnQiIGluIHdpbmRvdy5SYW5nZS5wcm90b3R5cGUpcmV0dXJuIHRoaXMuRFcoYSxi
-LGMsZCkKdD1XLlU5KCI8dGFibGU+IitILmQoYikrIjwvdGFibGU+IixjLGQpCnM9ZG9jdW1lbnQuY3Jl
-YXRlRG9jdW1lbnRGcmFnbWVudCgpCnMudG9TdHJpbmcKdC50b1N0cmluZwpuZXcgVy5lNyhzKS5GVigw
-LG5ldyBXLmU3KHQpKQpyZXR1cm4gc319ClcuSXYucHJvdG90eXBlPXsKcjY6ZnVuY3Rpb24oYSxiLGMs
-ZCl7dmFyIHQscyxyLHEKaWYoImNyZWF0ZUNvbnRleHR1YWxGcmFnbWVudCIgaW4gd2luZG93LlJhbmdl
-LnByb3RvdHlwZSlyZXR1cm4gdGhpcy5EVyhhLGIsYyxkKQp0PWRvY3VtZW50CnM9dC5jcmVhdGVEb2N1
-bWVudEZyYWdtZW50KCkKdD1DLkllLnI2KHQuY3JlYXRlRWxlbWVudCgidGFibGUiKSxiLGMsZCkKdC50
-b1N0cmluZwp0PW5ldyBXLmU3KHQpCnI9dC5ncjgodCkKci50b1N0cmluZwp0PW5ldyBXLmU3KHIpCnE9
-dC5ncjgodCkKcy50b1N0cmluZwpxLnRvU3RyaW5nCm5ldyBXLmU3KHMpLkZWKDAsbmV3IFcuZTcocSkp
-CnJldHVybiBzfX0KVy5XUC5wcm90b3R5cGU9ewpyNjpmdW5jdGlvbihhLGIsYyxkKXt2YXIgdCxzLHIK
-aWYoImNyZWF0ZUNvbnRleHR1YWxGcmFnbWVudCIgaW4gd2luZG93LlJhbmdlLnByb3RvdHlwZSlyZXR1
-cm4gdGhpcy5EVyhhLGIsYyxkKQp0PWRvY3VtZW50CnM9dC5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCkK
-dD1DLkllLnI2KHQuY3JlYXRlRWxlbWVudCgidGFibGUiKSxiLGMsZCkKdC50b1N0cmluZwp0PW5ldyBX
-LmU3KHQpCnI9dC5ncjgodCkKcy50b1N0cmluZwpyLnRvU3RyaW5nCm5ldyBXLmU3KHMpLkZWKDAsbmV3
-IFcuZTcocikpCnJldHVybiBzfX0KVy55WS5wcm90b3R5cGU9ewpwazpmdW5jdGlvbihhLGIsYyl7dmFy
-IHQscwphLnRleHRDb250ZW50PW51bGwKdD1hLmNvbnRlbnQKdC50b1N0cmluZwpKLmJUKHQpCnM9dGhp
-cy5yNihhLGIsbnVsbCxjKQphLmNvbnRlbnQuYXBwZW5kQ2hpbGQocyl9LApZQzpmdW5jdGlvbihhLGIp
-e3JldHVybiB0aGlzLnBrKGEsYixudWxsKX0sCiRpeVk6MX0KVy53Ni5wcm90b3R5cGU9e30KVy5LNS5w
-cm90b3R5cGU9ewpQbzpmdW5jdGlvbihhLGIsYyl7dmFyIHQ9Vy5QMShhLm9wZW4oYixjKSkKcmV0dXJu
-IHR9LApnbVc6ZnVuY3Rpb24oYSl7cmV0dXJuIGEubG9jYXRpb259LAokaUs1OjEsCiRpdjY6MX0KVy5D
-bS5wcm90b3R5cGU9eyRpQ206MX0KVy5DUS5wcm90b3R5cGU9eyRpQ1E6MX0KVy53NC5wcm90b3R5cGU9
-ewp3OmZ1bmN0aW9uKGEpe3JldHVybiJSZWN0YW5nbGUgKCIrSC5kKGEubGVmdCkrIiwgIitILmQoYS50
-b3ApKyIpICIrSC5kKGEud2lkdGgpKyIgeCAiK0guZChhLmhlaWdodCl9LApETjpmdW5jdGlvbihhLGIp
-e2lmKGI9PW51bGwpcmV0dXJuITEKcmV0dXJuIHUucS5jKGIpJiZhLmxlZnQ9PT1iLmxlZnQmJmEudG9w
-PT09Yi50b3AmJmEud2lkdGg9PT1iLndpZHRoJiZhLmhlaWdodD09PWIuaGVpZ2h0fSwKZ2lPOmZ1bmN0
-aW9uKGEpe3JldHVybiBXLnJFKEMuQ0QuZ2lPKGEubGVmdCksQy5DRC5naU8oYS50b3ApLEMuQ0QuZ2lP
-KGEud2lkdGgpLEMuQ0QuZ2lPKGEuaGVpZ2h0KSl9fQpXLnJoLnByb3RvdHlwZT17CmdBOmZ1bmN0aW9u
-KGEpe3JldHVybiBhLmxlbmd0aH0sCnE6ZnVuY3Rpb24oYSxiKXtILlNjKGIpCmlmKGI+Pj4wIT09Ynx8
-Yj49YS5sZW5ndGgpdGhyb3cgSC5iKFAuQ2YoYixhLG51bGwsbnVsbCxudWxsKSkKcmV0dXJuIGFbYl19
-LApZOmZ1bmN0aW9uKGEsYixjKXt1LkEuYihjKQp0aHJvdyBILmIoUC5MNCgiQ2Fubm90IGFzc2lnbiBl
-bGVtZW50IG9mIGltbXV0YWJsZSBMaXN0LiIpKX0sCkU6ZnVuY3Rpb24oYSxiKXtpZihiPDB8fGI+PWEu
-bGVuZ3RoKXJldHVybiBILk9IKGEsYikKcmV0dXJuIGFbYl19LAokaWJROjEsCiRpWGo6MSwKJGljWDox
-LAokaXpNOjF9ClcuY2YucHJvdG90eXBlPXsKSzpmdW5jdGlvbihhLGIpe3ZhciB0LHMscixxLHAKdS5l
-QS5iKGIpCmZvcih0PXRoaXMuZ1YoKSxzPXQubGVuZ3RoLHI9dGhpcy5hLHE9MDtxPHQubGVuZ3RoO3Qu
-bGVuZ3RoPT09c3x8KDAsSC5saykodCksKytxKXtwPXRbcV0KYi4kMihwLHIuZ2V0QXR0cmlidXRlKHAp
-KX19LApnVjpmdW5jdGlvbigpe3ZhciB0LHMscixxLHA9dGhpcy5hLmF0dHJpYnV0ZXMsbz1ILlZNKFtd
-LHUucykKZm9yKHQ9cC5sZW5ndGgscz11Lmg5LHI9MDtyPHQ7KytyKXtpZihyPj1wLmxlbmd0aClyZXR1
-cm4gSC5PSChwLHIpCnE9cy5iKHBbcl0pCmlmKHEubmFtZXNwYWNlVVJJPT1udWxsKUMuTm0uaShvLHEu
-bmFtZSl9cmV0dXJuIG99fQpXLmk3LnByb3RvdHlwZT17Cng0OmZ1bmN0aW9uKGEpe3JldHVybiB0aGlz
-LmEuaGFzQXR0cmlidXRlKGEpfSwKcTpmdW5jdGlvbihhLGIpe3JldHVybiB0aGlzLmEuZ2V0QXR0cmli
-dXRlKEgueShiKSl9LApZOmZ1bmN0aW9uKGEsYixjKXt0aGlzLmEuc2V0QXR0cmlidXRlKGIsYyl9LApn
-QTpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5nVigpLmxlbmd0aH19ClcuU3kucHJvdG90eXBlPXsKeDQ6
-ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuYS5hLmhhc0F0dHJpYnV0ZSgiZGF0YS0iK3RoaXMuTyhhKSl9
-LApxOmZ1bmN0aW9uKGEsYil7cmV0dXJuIHRoaXMuYS5hLmdldEF0dHJpYnV0ZSgiZGF0YS0iK3RoaXMu
-TyhILnkoYikpKX0sClk6ZnVuY3Rpb24oYSxiLGMpe3RoaXMuYS5hLnNldEF0dHJpYnV0ZSgiZGF0YS0i
-K3RoaXMuTyhiKSxjKX0sCks6ZnVuY3Rpb24oYSxiKXt0aGlzLmEuSygwLG5ldyBXLktTKHRoaXMsdS5l
-QS5iKGIpKSl9LApnVjpmdW5jdGlvbigpe3ZhciB0PUguVk0oW10sdS5zKQp0aGlzLmEuSygwLG5ldyBX
-LkEzKHRoaXMsdCkpCnJldHVybiB0fSwKZ0E6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuZ1YoKS5sZW5n
-dGh9LAprOmZ1bmN0aW9uKGEpe3ZhciB0LHMscj1ILlZNKGEuc3BsaXQoIi0iKSx1LnMpCmZvcih0PTE7
-dDxyLmxlbmd0aDsrK3Qpe3M9clt0XQppZihzLmxlbmd0aD4wKUMuTm0uWShyLHQsc1swXS50b1VwcGVy
-Q2FzZSgpK0ouS1YocywxKSl9cmV0dXJuIEMuTm0uelYociwiIil9LApPOmZ1bmN0aW9uKGEpe3ZhciB0
-LHMscixxLHAKZm9yKHQ9YS5sZW5ndGgscz0wLHI9IiI7czx0Oysrcyl7cT1hW3NdCnA9cS50b0xvd2Vy
-Q2FzZSgpCnI9KHEhPT1wJiZzPjA/cisiLSI6cikrcH1yZXR1cm4gci5jaGFyQ29kZUF0KDApPT0wP3I6
-cn19ClcuS1MucHJvdG90eXBlPXsKJDI6ZnVuY3Rpb24oYSxiKXtpZihKLnJZKGEpLm4oYSwiZGF0YS0i
-KSl0aGlzLmIuJDIodGhpcy5hLmsoQy54Qi5HKGEsNSkpLGIpfSwKJFM6OH0KVy5BMy5wcm90b3R5cGU9
-ewokMjpmdW5jdGlvbihhLGIpe2lmKEouclkoYSkubihhLCJkYXRhLSIpKUMuTm0uaSh0aGlzLmIsdGhp
-cy5hLmsoQy54Qi5HKGEsNSkpKX0sCiRTOjh9ClcuSTQucHJvdG90eXBlPXsKREc6ZnVuY3Rpb24oKXt2
-YXIgdCxzLHIscSxwPVAuTHModS5OKQpmb3IodD10aGlzLmEuY2xhc3NOYW1lLnNwbGl0KCIgIikscz10
-Lmxlbmd0aCxyPTA7cjxzOysrcil7cT1KLlQwKHRbcl0pCmlmKHEubGVuZ3RoIT09MClwLmkoMCxxKX1y
-ZXR1cm4gcH0sCnA6ZnVuY3Rpb24oYSl7dGhpcy5hLmNsYXNzTmFtZT11LkMuYihhKS56VigwLCIgIil9
-LApnQTpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5hLmNsYXNzTGlzdC5sZW5ndGh9LApWMTpmdW5jdGlv
-bihhKXt0aGlzLmEuY2xhc3NOYW1lPSIifSwKdGc6ZnVuY3Rpb24oYSxiKXt2YXIgdD10aGlzLmEuY2xh
-c3NMaXN0LmNvbnRhaW5zKGIpCnJldHVybiB0fSwKaTpmdW5jdGlvbihhLGIpe3ZhciB0PXRoaXMuYS5j
-bGFzc0xpc3Qscz10LmNvbnRhaW5zKGIpCnQuYWRkKGIpCnJldHVybiFzfSwKUjpmdW5jdGlvbihhLGIp
-e3ZhciB0PXRoaXMuYS5jbGFzc0xpc3Qscz10LmNvbnRhaW5zKGIpCnQucmVtb3ZlKGIpCnJldHVybiBz
-fSwKRlY6ZnVuY3Rpb24oYSxiKXtXLlROKHRoaXMuYSx1LlguYihiKSl9fQpXLkZrLnByb3RvdHlwZT17
-fQpXLlJPLnByb3RvdHlwZT17fQpXLmV1LnByb3RvdHlwZT17fQpXLnhDLnByb3RvdHlwZT17fQpXLnZO
-LnByb3RvdHlwZT17CiQxOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLmEuJDEodS5CLmIoYSkpfSwKJFM6
-Mjh9ClcuSlEucHJvdG90eXBlPXsKQ1k6ZnVuY3Rpb24oYSl7dmFyIHQKaWYoJC5vci5hPT09MCl7Zm9y
-KHQ9MDt0PDI2MjsrK3QpJC5vci5ZKDAsQy5jbVt0XSxXLnBTKCkpCmZvcih0PTA7dDwxMjsrK3QpJC5v
-ci5ZKDAsQy5CSVt0XSxXLlY0KCkpfX0sCmkwOmZ1bmN0aW9uKGEpe3JldHVybiAkLkFOKCkudGcoMCxX
-LnJTKGEpKX0sCkViOmZ1bmN0aW9uKGEsYixjKXt2YXIgdD0kLm9yLnEoMCxILmQoVy5yUyhhKSkrIjo6
-IitiKQppZih0PT1udWxsKXQ9JC5vci5xKDAsIio6OiIrYikKaWYodD09bnVsbClyZXR1cm4hMQpyZXR1
-cm4gSC54ZCh0LiQ0KGEsYixjLHRoaXMpKX0sCiRpa0Y6MX0KVy5HbS5wcm90b3R5cGU9ewpna3o6ZnVu
-Y3Rpb24oYSl7cmV0dXJuIG5ldyBXLlc5KGEsdGhpcy5nQShhKSxILnpLKGEpLkMoIlc5PEdtLkU+Iikp
-fX0KVy52RC5wcm90b3R5cGU9ewppMDpmdW5jdGlvbihhKXtyZXR1cm4gQy5ObS5Wcih0aGlzLmEsbmV3
-IFcuVXYoYSkpfSwKRWI6ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBDLk5tLlZyKHRoaXMuYSxuZXcgVy5F
-ZyhhLGIsYykpfSwKJGlrRjoxfQpXLlV2LnByb3RvdHlwZT17CiQxOmZ1bmN0aW9uKGEpe3JldHVybiB1
-LmUuYihhKS5pMCh0aGlzLmEpfSwKJFM6MTZ9ClcuRWcucHJvdG90eXBlPXsKJDE6ZnVuY3Rpb24oYSl7
-cmV0dXJuIHUuZS5iKGEpLkViKHRoaXMuYSx0aGlzLmIsdGhpcy5jKX0sCiRTOjE2fQpXLm02LnByb3Rv
-dHlwZT17CkNZOmZ1bmN0aW9uKGEsYixjLGQpe3ZhciB0LHMscgp0aGlzLmEuRlYoMCxjKQp0PWIuZXYo
-MCxuZXcgVy5FbygpKQpzPWIuZXYoMCxuZXcgVy5XaygpKQp0aGlzLmIuRlYoMCx0KQpyPXRoaXMuYwpy
-LkZWKDAsQy54RCkKci5GVigwLHMpfSwKaTA6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuYS50ZygwLFcu
-clMoYSkpfSwKRWI6ZnVuY3Rpb24oYSxiLGMpe3ZhciB0PXRoaXMscz1XLnJTKGEpLHI9dC5jCmlmKHIu
-dGcoMCxILmQocykrIjo6IitiKSlyZXR1cm4gdC5kLkR0KGMpCmVsc2UgaWYoci50ZygwLCIqOjoiK2Ip
-KXJldHVybiB0LmQuRHQoYykKZWxzZXtyPXQuYgppZihyLnRnKDAsSC5kKHMpKyI6OiIrYikpcmV0dXJu
-ITAKZWxzZSBpZihyLnRnKDAsIio6OiIrYikpcmV0dXJuITAKZWxzZSBpZihyLnRnKDAsSC5kKHMpKyI6
-OioiKSlyZXR1cm4hMAplbHNlIGlmKHIudGcoMCwiKjo6KiIpKXJldHVybiEwfXJldHVybiExfSwKJGlr
-RjoxfQpXLkVvLnByb3RvdHlwZT17CiQxOmZ1bmN0aW9uKGEpe3JldHVybiFDLk5tLnRnKEMuQkksSC55
-KGEpKX0sCiRTOjd9ClcuV2sucHJvdG90eXBlPXsKJDE6ZnVuY3Rpb24oYSl7cmV0dXJuIEMuTm0udGco
-Qy5CSSxILnkoYSkpfSwKJFM6N30KVy5jdC5wcm90b3R5cGU9ewpFYjpmdW5jdGlvbihhLGIsYyl7aWYo
-dGhpcy5qRihhLGIsYykpcmV0dXJuITAKaWYoYj09PSJ0ZW1wbGF0ZSImJmM9PT0iIilyZXR1cm4hMApp
-ZihhLmdldEF0dHJpYnV0ZSgidGVtcGxhdGUiKT09PSIiKXJldHVybiB0aGlzLmUudGcoMCxiKQpyZXR1
-cm4hMX19ClcuSUEucHJvdG90eXBlPXsKJDE6ZnVuY3Rpb24oYSl7cmV0dXJuIlRFTVBMQVRFOjoiK0gu
-ZChILnkoYSkpfSwKJFM6NX0KVy5Pdy5wcm90b3R5cGU9ewppMDpmdW5jdGlvbihhKXt2YXIgdAppZih1
-LmV3LmMoYSkpcmV0dXJuITEKdD11Lmc3LmMoYSkKaWYodCYmVy5yUyhhKT09PSJmb3JlaWduT2JqZWN0
-IilyZXR1cm4hMQppZih0KXJldHVybiEwCnJldHVybiExfSwKRWI6ZnVuY3Rpb24oYSxiLGMpe2lmKGI9
-PT0iaXMifHxDLnhCLm4oYiwib24iKSlyZXR1cm4hMQpyZXR1cm4gdGhpcy5pMChhKX0sCiRpa0Y6MX0K
-Vy5XOS5wcm90b3R5cGU9ewpGOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcyxzPXQuYysxLHI9dC5iCmlmKHM8
-cil7dC5zTShKLncyKHQuYSxzKSkKdC5jPXMKcmV0dXJuITB9dC5zTShudWxsKQp0LmM9cgpyZXR1cm4h
-MX0sCmdsOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZH0sCnNNOmZ1bmN0aW9uKGEpe3RoaXMuZD10aGlz
-LiR0aS5kLmIoYSl9LAokaUFuOjF9ClcuZFcucHJvdG90eXBlPXsKZ21XOmZ1bmN0aW9uKGEpe3JldHVy
-biBXLkhIKHRoaXMuYS5sb2NhdGlvbil9LAokaUQwOjEsCiRpdjY6MX0KVy5GYi5wcm90b3R5cGU9e30K
-Vy5rRi5wcm90b3R5cGU9e30KVy5tay5wcm90b3R5cGU9eyRpeTA6MX0KVy5Lby5wcm90b3R5cGU9ewpQ
-bjpmdW5jdGlvbihhKXtuZXcgVy5mbSh0aGlzKS4kMihhLG51bGwpfSwKRVA6ZnVuY3Rpb24oYSxiKXtp
-ZihiPT1udWxsKUouTHQoYSkKZWxzZSBiLnJlbW92ZUNoaWxkKGEpfSwKSTQ6ZnVuY3Rpb24oYSxiKXt2
-YXIgdCxzLHIscSxwLG89ITAsbj1udWxsLG09bnVsbAp0cnl7bj1KLmlnKGEpCm09bi5hLmdldEF0dHJp
-YnV0ZSgiaXMiKQp1LmguYihhKQp0PWZ1bmN0aW9uKGMpe2lmKCEoYy5hdHRyaWJ1dGVzIGluc3RhbmNl
-b2YgTmFtZWROb2RlTWFwKSlyZXR1cm4gdHJ1ZQp2YXIgbD1jLmNoaWxkTm9kZXMKaWYoYy5sYXN0Q2hp
-bGQmJmMubGFzdENoaWxkIT09bFtsLmxlbmd0aC0xXSlyZXR1cm4gdHJ1ZQppZihjLmNoaWxkcmVuKWlm
-KCEoYy5jaGlsZHJlbiBpbnN0YW5jZW9mIEhUTUxDb2xsZWN0aW9ufHxjLmNoaWxkcmVuIGluc3RhbmNl
-b2YgTm9kZUxpc3QpKXJldHVybiB0cnVlCnZhciBrPTAKaWYoYy5jaGlsZHJlbilrPWMuY2hpbGRyZW4u
-bGVuZ3RoCmZvcih2YXIgaj0wO2o8aztqKyspe3ZhciBpPWMuY2hpbGRyZW5bal0KaWYoaS5pZD09J2F0
-dHJpYnV0ZXMnfHxpLm5hbWU9PSdhdHRyaWJ1dGVzJ3x8aS5pZD09J2xhc3RDaGlsZCd8fGkubmFtZT09
-J2xhc3RDaGlsZCd8fGkuaWQ9PSdjaGlsZHJlbid8fGkubmFtZT09J2NoaWxkcmVuJylyZXR1cm4gdHJ1
-ZX1yZXR1cm4gZmFsc2V9KGEpCm89SC5vVCh0KT8hMDohKGEuYXR0cmlidXRlcyBpbnN0YW5jZW9mIE5h
-bWVkTm9kZU1hcCl9Y2F0Y2gocSl7SC5SdShxKX1zPSJlbGVtZW50IHVucHJpbnRhYmxlIgp0cnl7cz1K
-LmooYSl9Y2F0Y2gocSl7SC5SdShxKX10cnl7cj1XLnJTKGEpCnRoaXMua1IodS5oLmIoYSksYixvLHMs
-cix1LkcuYihuKSxILnkobSkpfWNhdGNoKHEpe2lmKEguUnUocSkgaW5zdGFuY2VvZiBQLnUpdGhyb3cg
-cQplbHNle3RoaXMuRVAoYSxiKQp3aW5kb3cKcD0iUmVtb3ZpbmcgY29ycnVwdGVkIGVsZW1lbnQgIitI
-LmQocykKaWYodHlwZW9mIGNvbnNvbGUhPSJ1bmRlZmluZWQiKXdpbmRvdy5jb25zb2xlLndhcm4ocCl9
-fX0sCmtSOmZ1bmN0aW9uKGEsYixjLGQsZSxmLGcpe3ZhciB0LHMscixxLHAsbyxuPXRoaXMKaWYoYyl7
-bi5FUChhLGIpCndpbmRvdwp0PSJSZW1vdmluZyBlbGVtZW50IGR1ZSB0byBjb3JydXB0ZWQgYXR0cmli
-dXRlcyBvbiA8IitkKyI+IgppZih0eXBlb2YgY29uc29sZSE9InVuZGVmaW5lZCIpd2luZG93LmNvbnNv
-bGUud2Fybih0KQpyZXR1cm59aWYoIW4uYS5pMChhKSl7bi5FUChhLGIpCndpbmRvdwp0PSJSZW1vdmlu
-ZyBkaXNhbGxvd2VkIGVsZW1lbnQgPCIrSC5kKGUpKyI+IGZyb20gIitILmQoYikKaWYodHlwZW9mIGNv
-bnNvbGUhPSJ1bmRlZmluZWQiKXdpbmRvdy5jb25zb2xlLndhcm4odCkKcmV0dXJufWlmKGchPW51bGwp
-aWYoIW4uYS5FYihhLCJpcyIsZykpe24uRVAoYSxiKQp3aW5kb3cKdD0iUmVtb3ZpbmcgZGlzYWxsb3dl
-ZCB0eXBlIGV4dGVuc2lvbiA8IitILmQoZSkrJyBpcz0iJytnKyciPicKaWYodHlwZW9mIGNvbnNvbGUh
-PSJ1bmRlZmluZWQiKXdpbmRvdy5jb25zb2xlLndhcm4odCkKcmV0dXJufXQ9Zi5nVigpCnM9SC5WTSh0
-LnNsaWNlKDApLEgudDYodCkuQygiamQ8MT4iKSkKZm9yKHI9Zi5nVigpLmxlbmd0aC0xLHQ9Zi5hO3I+
-PTA7LS1yKXtpZihyPj1zLmxlbmd0aClyZXR1cm4gSC5PSChzLHIpCnE9c1tyXQpwPW4uYQpvPUouY0go
-cSkKSC55KHEpCmlmKCFwLkViKGEsbyx0LmdldEF0dHJpYnV0ZShxKSkpe3dpbmRvdwpwPSJSZW1vdmlu
-ZyBkaXNhbGxvd2VkIGF0dHJpYnV0ZSA8IitILmQoZSkrIiAiK3ErJz0iJytILmQodC5nZXRBdHRyaWJ1
-dGUocSkpKyciPicKaWYodHlwZW9mIGNvbnNvbGUhPSJ1bmRlZmluZWQiKXdpbmRvdy5jb25zb2xlLndh
-cm4ocCkKdC5yZW1vdmVBdHRyaWJ1dGUocSl9fWlmKHUuYVcuYyhhKSluLlBuKGEuY29udGVudCl9LAok
-aW9uOjF9ClcuZm0ucHJvdG90eXBlPXsKJDI6ZnVuY3Rpb24oYSxiKXt2YXIgdCxzLHIscSxwPXRoaXMu
-YQpzd2l0Y2goYS5ub2RlVHlwZSl7Y2FzZSAxOnAuSTQoYSxiKQpicmVhawpjYXNlIDg6Y2FzZSAxMTpj
-YXNlIDM6Y2FzZSA0OmJyZWFrCmRlZmF1bHQ6cC5FUChhLGIpfXQ9YS5sYXN0Q2hpbGQKZm9yKHA9dS5B
-O251bGwhPXQ7KXtzPW51bGwKdHJ5e3M9dC5wcmV2aW91c1NpYmxpbmd9Y2F0Y2gocil7SC5SdShyKQpx
-PXAuYih0KQphLnJlbW92ZUNoaWxkKHEpCnQ9bnVsbApzPWEubGFzdENoaWxkfWlmKHQhPW51bGwpdGhp
-cy4kMih0LGEpCnQ9cC5iKHMpfX0sCiRTOjMxfQpXLkxlLnByb3RvdHlwZT17fQpXLks3LnByb3RvdHlw
-ZT17fQpXLnJCLnByb3RvdHlwZT17fQpXLlhXLnByb3RvdHlwZT17fQpXLm9hLnByb3RvdHlwZT17fQpQ
-LmlKLnByb3RvdHlwZT17ClZIOmZ1bmN0aW9uKGEpe3ZhciB0LHM9dGhpcy5hLHI9cy5sZW5ndGgKZm9y
-KHQ9MDt0PHI7Kyt0KWlmKHNbdF09PT1hKXJldHVybiB0CkMuTm0uaShzLGEpCkMuTm0uaSh0aGlzLmIs
-bnVsbCkKcmV0dXJuIHJ9LApQdjpmdW5jdGlvbihhKXt2YXIgdCxzLHIscT10aGlzLHA9e30KaWYoYT09
-bnVsbClyZXR1cm4gYQppZihILmwoYSkpcmV0dXJuIGEKaWYodHlwZW9mIGE9PSJudW1iZXIiKXJldHVy
-biBhCmlmKHR5cGVvZiBhPT0ic3RyaW5nIilyZXR1cm4gYQppZihhIGluc3RhbmNlb2YgUC5pUClyZXR1
-cm4gbmV3IERhdGUoYS5hKQppZih1LmZ2LmMoYSkpdGhyb3cgSC5iKFAuU1koInN0cnVjdHVyZWQgY2xv
-bmUgb2YgUmVnRXhwIikpCmlmKHUuYzguYyhhKSlyZXR1cm4gYQppZih1LmQuYyhhKSlyZXR1cm4gYQpp
-Zih1LkkuYyhhKSlyZXR1cm4gYQp0PXUuZEQuYyhhKXx8ITEKaWYodClyZXR1cm4gYQppZih1LkcuYyhh
-KSl7cz1xLlZIKGEpCnQ9cS5iCmlmKHM+PXQubGVuZ3RoKXJldHVybiBILk9IKHQscykKcj1wLmE9dFtz
-XQppZihyIT1udWxsKXJldHVybiByCnI9e30KcC5hPXIKQy5ObS5ZKHQscyxyKQphLksoMCxuZXcgUC5s
-UihwLHEpKQpyZXR1cm4gcC5hfWlmKHUuai5jKGEpKXtzPXEuVkgoYSkKcD1xLmIKaWYocz49cC5sZW5n
-dGgpcmV0dXJuIEguT0gocCxzKQpyPXBbc10KaWYociE9bnVsbClyZXR1cm4gcgpyZXR1cm4gcS5layhh
-LHMpfWlmKHUuZUguYyhhKSl7cz1xLlZIKGEpCnQ9cS5iCmlmKHM+PXQubGVuZ3RoKXJldHVybiBILk9I
-KHQscykKcj1wLmI9dFtzXQppZihyIT1udWxsKXJldHVybiByCnI9e30KcC5iPXIKQy5ObS5ZKHQscyxy
-KQpxLmltKGEsbmV3IFAuamcocCxxKSkKcmV0dXJuIHAuYn10aHJvdyBILmIoUC5TWSgic3RydWN0dXJl
-ZCBjbG9uZSBvZiBvdGhlciB0eXBlIikpfSwKZWs6ZnVuY3Rpb24oYSxiKXt2YXIgdCxzPUouVTYoYSks
-cj1zLmdBKGEpLHE9bmV3IEFycmF5KHIpCkMuTm0uWSh0aGlzLmIsYixxKQpmb3IodD0wO3Q8cjsrK3Qp
-Qy5ObS5ZKHEsdCx0aGlzLlB2KHMucShhLHQpKSkKcmV0dXJuIHF9fQpQLmxSLnByb3RvdHlwZT17CiQy
-OmZ1bmN0aW9uKGEsYil7dGhpcy5hLmFbYV09dGhpcy5iLlB2KGIpfSwKJFM6MX0KUC5qZy5wcm90b3R5
-cGU9ewokMjpmdW5jdGlvbihhLGIpe3RoaXMuYS5iW2FdPXRoaXMuYi5QdihiKX0sCiRTOjF9ClAuQmYu
-cHJvdG90eXBlPXsKaW06ZnVuY3Rpb24oYSxiKXt2YXIgdCxzLHIscQp1LmI4LmIoYikKZm9yKHQ9T2Jq
-ZWN0LmtleXMoYSkscz10Lmxlbmd0aCxyPTA7cjxzOysrcil7cT10W3JdCmIuJDIocSxhW3FdKX19fQpQ
-LkFzLnByb3RvdHlwZT17ClQ6ZnVuY3Rpb24oYSl7dmFyIHQKSC55KGEpCnQ9JC5oRygpLmIKaWYodHlw
-ZW9mIGEhPSJzdHJpbmciKUgudmgoSC50TChhKSkKaWYodC50ZXN0KGEpKXJldHVybiBhCnRocm93IEgu
-YihQLkwzKGEsInZhbHVlIiwiTm90IGEgdmFsaWQgY2xhc3MgdG9rZW4iKSl9LAp3OmZ1bmN0aW9uKGEp
-e3JldHVybiB0aGlzLkRHKCkuelYoMCwiICIpfSwKZ2t6OmZ1bmN0aW9uKGEpe3ZhciB0PXRoaXMuREco
-KQpyZXR1cm4gUC5yaih0LHQucixILkxoKHQpLmQpfSwKZ0E6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMu
-REcoKS5hfSwKdGc6ZnVuY3Rpb24oYSxiKXt0aGlzLlQoYikKcmV0dXJuIHRoaXMuREcoKS50ZygwLGIp
-fSwKaTpmdW5jdGlvbihhLGIpe3RoaXMuVChiKQpyZXR1cm4gSC54ZCh0aGlzLk9TKG5ldyBQLkdFKGIp
-KSl9LApSOmZ1bmN0aW9uKGEsYil7dmFyIHQscwp0aGlzLlQoYikKdD10aGlzLkRHKCkKcz10LlIoMCxi
-KQp0aGlzLnAodCkKcmV0dXJuIHN9LApGVjpmdW5jdGlvbihhLGIpe3RoaXMuT1MobmV3IFAuTjcodGhp
-cyx1LlguYihiKSkpfSwKVjE6ZnVuY3Rpb24oYSl7dGhpcy5PUyhuZXcgUC51USgpKX0sCk9TOmZ1bmN0
-aW9uKGEpe3ZhciB0LHMKdS5jaC5iKGEpCnQ9dGhpcy5ERygpCnM9YS4kMSh0KQp0aGlzLnAodCkKcmV0
-dXJuIHN9fQpQLkdFLnByb3RvdHlwZT17CiQxOmZ1bmN0aW9uKGEpe3JldHVybiB1LkMuYihhKS5pKDAs
-dGhpcy5hKX0sCiRTOjQ4fQpQLk43LnByb3RvdHlwZT17CiQxOmZ1bmN0aW9uKGEpe3ZhciB0PXRoaXMu
-YixzPUgudDYodCkKcmV0dXJuIHUuQy5iKGEpLkZWKDAsbmV3IEguQTgodCxzLkMoInFVKDEpIikuYih0
-aGlzLmEuZ3VNKCkpLHMuQygiQTg8MSxxVT4iKSkpfSwKJFM6MTd9ClAudVEucHJvdG90eXBlPXsKJDE6
-ZnVuY3Rpb24oYSl7dS5DLmIoYSkKaWYoYS5hPjApe2EuYj1hLmM9YS5kPWEuZT1hLmY9bnVsbAphLmE9
-MAphLlgoKX1yZXR1cm4gbnVsbH0sCiRTOjE3fQpQLmhGLnByb3RvdHlwZT17JGloRjoxfQpQLlBDLnBy
-b3RvdHlwZT17CiQxOmZ1bmN0aW9uKGEpe3ZhciB0CnUuWi5iKGEpCnQ9ZnVuY3Rpb24oYixjLGQpe3Jl
-dHVybiBmdW5jdGlvbigpe3JldHVybiBiKGMsZCx0aGlzLEFycmF5LnByb3RvdHlwZS5zbGljZS5hcHBs
-eShhcmd1bWVudHMpKX19KFAuUjQsYSwhMSkKUC5EbSh0LCQudygpLGEpCnJldHVybiB0fSwKJFM6NH0K
-UC5tdC5wcm90b3R5cGU9ewokMTpmdW5jdGlvbihhKXtyZXR1cm4gbmV3IHRoaXMuYShhKX0sCiRTOjR9
-ClAuTnoucHJvdG90eXBlPXsKJDE6ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyBQLnI3KGEpfSwKJFM6MzR9
-ClAuUVMucHJvdG90eXBlPXsKJDE6ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyBQLlR6KGEsdS5hbSl9LAok
-UzozNX0KUC5ucC5wcm90b3R5cGU9ewokMTpmdW5jdGlvbihhKXtyZXR1cm4gbmV3IFAuRTQoYSl9LAok
-UzozNn0KUC5FNC5wcm90b3R5cGU9ewpxOmZ1bmN0aW9uKGEsYil7aWYodHlwZW9mIGIhPSJzdHJpbmci
-JiZ0eXBlb2YgYiE9Im51bWJlciIpdGhyb3cgSC5iKFAueFkoInByb3BlcnR5IGlzIG5vdCBhIFN0cmlu
-ZyBvciBudW0iKSkKcmV0dXJuIFAuTDcodGhpcy5hW2JdKX0sClk6ZnVuY3Rpb24oYSxiLGMpe2lmKHR5
-cGVvZiBiIT0ic3RyaW5nIiYmdHlwZW9mIGIhPSJudW1iZXIiKXRocm93IEguYihQLnhZKCJwcm9wZXJ0
-eSBpcyBub3QgYSBTdHJpbmcgb3IgbnVtIikpCnRoaXMuYVtiXT1QLndZKGMpfSwKRE46ZnVuY3Rpb24o
-YSxiKXtpZihiPT1udWxsKXJldHVybiExCnJldHVybiBiIGluc3RhbmNlb2YgUC5FNCYmdGhpcy5hPT09
-Yi5hfSwKdzpmdW5jdGlvbihhKXt2YXIgdCxzCnRyeXt0PVN0cmluZyh0aGlzLmEpCnJldHVybiB0fWNh
-dGNoKHMpe0guUnUocykKdD10aGlzLnhiKDApCnJldHVybiB0fX0sClY3OmZ1bmN0aW9uKGEsYil7dmFy
-IHQscz10aGlzLmEKaWYoYj09bnVsbCl0PW51bGwKZWxzZXt0PUgudDYoYikKdD1QLkNIKG5ldyBILkE4
-KGIsdC5DKCJAKDEpIikuYihQLmlHKCkpLHQuQygiQTg8MSxAPiIpKSwhMCx1LnopfXJldHVybiBQLkw3
-KHNbYV0uYXBwbHkocyx0KSl9LApnaU86ZnVuY3Rpb24oYSl7cmV0dXJuIDB9fQpQLnI3LnByb3RvdHlw
-ZT17fQpQLlR6LnByb3RvdHlwZT17CmNQOmZ1bmN0aW9uKGEpe3ZhciB0PXRoaXMscz1hPDB8fGE+PXQu
-Z0EodCkKaWYocyl0aHJvdyBILmIoUC5URShhLDAsdC5nQSh0KSxudWxsLG51bGwpKX0sCnE6ZnVuY3Rp
-b24oYSxiKXtpZih0eXBlb2YgYj09Im51bWJlciImJmI9PT1DLmpuLnl1KGIpKXRoaXMuY1AoSC5TYyhi
-KSkKcmV0dXJuIHRoaXMuJHRpLmQuYih0aGlzLlVyKDAsYikpfSwKWTpmdW5jdGlvbihhLGIsYyl7dmFy
-IHQKdGhpcy4kdGkuZC5iKGMpCnQ9Qy5qbi55dShiKQppZihiPT09dCl0aGlzLmNQKGIpCnRoaXMuZTQo
-MCxiLGMpfSwKZ0E6ZnVuY3Rpb24oYSl7dmFyIHQ9dGhpcy5hLmxlbmd0aAppZih0eXBlb2YgdD09PSJu
-dW1iZXIiJiZ0Pj4+MD09PXQpcmV0dXJuIHQKdGhyb3cgSC5iKFAuUFYoIkJhZCBKc0FycmF5IGxlbmd0
-aCIpKX0sCiRpYlE6MSwKJGljWDoxLAokaXpNOjF9ClAuY28ucHJvdG90eXBlPXt9ClAubmQucHJvdG90
-eXBlPXskaW5kOjF9ClAuS2UucHJvdG90eXBlPXsKREc6ZnVuY3Rpb24oKXt2YXIgdCxzLHIscSxwPXRo
-aXMuYS5nZXRBdHRyaWJ1dGUoImNsYXNzIiksbz1QLkxzKHUuTikKaWYocD09bnVsbClyZXR1cm4gbwpm
-b3IodD1wLnNwbGl0KCIgIikscz10Lmxlbmd0aCxyPTA7cjxzOysrcil7cT1KLlQwKHRbcl0pCmlmKHEu
-bGVuZ3RoIT09MClvLmkoMCxxKX1yZXR1cm4gb30sCnA6ZnVuY3Rpb24oYSl7dGhpcy5hLnNldEF0dHJp
-YnV0ZSgiY2xhc3MiLGEuelYoMCwiICIpKX19ClAuZDUucHJvdG90eXBlPXsKZ1A6ZnVuY3Rpb24oYSl7
-cmV0dXJuIG5ldyBQLktlKGEpfSwKc2hmOmZ1bmN0aW9uKGEsYil7dGhpcy5ZQyhhLGIpfSwKcjY6ZnVu
-Y3Rpb24oYSxiLGMsZCl7dmFyIHQscyxyLHEscCxvCmlmKGQ9PW51bGwpe3Q9SC5WTShbXSx1LmspCmQ9
-bmV3IFcudkQodCkKQy5ObS5pKHQsVy5UdyhudWxsKSkKQy5ObS5pKHQsVy5CbCgpKQpDLk5tLmkodCxu
-ZXcgVy5PdygpKX1jPW5ldyBXLktvKGQpCnM9JzxzdmcgdmVyc2lvbj0iMS4xIj4nK0guZChiKSsiPC9z
-dmc+Igp0PWRvY3VtZW50CnI9dC5ib2R5CnE9KHImJkMuUlkpLkFIKHIscyxjKQpwPXQuY3JlYXRlRG9j
-dW1lbnRGcmFnbWVudCgpCnEudG9TdHJpbmcKdD1uZXcgVy5lNyhxKQpvPXQuZ3I4KHQpCmZvcig7dD1v
-LmZpcnN0Q2hpbGQsdCE9bnVsbDspcC5hcHBlbmRDaGlsZCh0KQpyZXR1cm4gcH0sCm56OmZ1bmN0aW9u
-KGEsYixjLGQsZSl7dGhyb3cgSC5iKFAuTDQoIkNhbm5vdCBpbnZva2UgaW5zZXJ0QWRqYWNlbnRIdG1s
-IG9uIFNWRy4iKSl9LApnVmw6ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyBXLmV1KGEsImNsaWNrIiwhMSx1
-LlEpfSwKJGlkNToxfQpQLm42LnByb3RvdHlwZT17JGliUToxLCRpY1g6MSwkaXpNOjEsJGlBUzoxfQpV
-LmQyLnByb3RvdHlwZT17fQpVLlNlLnByb3RvdHlwZT17fQpVLk1sLnByb3RvdHlwZT17fQpVLnlELnBy
-b3RvdHlwZT17fQpVLndiLnByb3RvdHlwZT17fQpCLmo4LnByb3RvdHlwZT17fQpCLnFwLnByb3RvdHlw
-ZT17fQpULm1RLnByb3RvdHlwZT17fQpMLmUucHJvdG90eXBlPXsKJDE6ZnVuY3Rpb24oYSl7dmFyIHQs
-cyxyLHEscCxvLG4KdS5CLmIoYSkKdD13aW5kb3cubG9jYXRpb24ucGF0aG5hbWUKcz1MLkc2KHdpbmRv
-dy5sb2NhdGlvbi5ocmVmKQpyPUwuYUsod2luZG93LmxvY2F0aW9uLmhyZWYpCkwuR2UoKQppZih0IT09
-Ii8iJiZ0IT09Si5UMChkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCIucm9vdCIpLnRleHRDb250ZW50KSlM
-Lkc3KHQscyxyLCEwLG5ldyBMLlZXKHQscyxyKSkKcT1kb2N1bWVudApwPUoucUYocS5xdWVyeVNlbGVj
-dG9yKCIuYXBwbHktbWlncmF0aW9uIikpCm89cC4kdGkKbj1vLkMoIn4oMSkiKS5iKG5ldyBMLm9aKCkp
-CnUuTS5iKG51bGwpClcuSkUocC5hLHAuYixuLCExLG8uZCkKbz1KLnFGKHEucXVlcnlTZWxlY3Rvcigi
-LnJlcnVuLW1pZ3JhdGlvbiIpKQpuPW8uJHRpClcuSkUoby5hLG8uYixuLkMoIn4oMSkiKS5iKG5ldyBM
-Lnk4KCkpLCExLG4uZCkKbj1KLnFGKHEucXVlcnlTZWxlY3RvcigiLnJlcG9ydC1wcm9ibGVtIikpCm89
-bi4kdGkKVy5KRShuLmEsbi5iLG8uQygifigxKSIpLmIobmV3IEwuSGkoKSksITEsby5kKQpxPUoucUYo
-cS5xdWVyeVNlbGVjdG9yKCIucG9wdXAtcGFuZSAuY2xvc2UiKSkKbz1xLiR0aQpXLkpFKHEuYSxxLmIs
-by5DKCJ+KDEpIikuYihuZXcgTC5CVCgpKSwhMSxvLmQpfSwKJFM6MTh9CkwuVlcucHJvdG90eXBlPXsK
-JDA6ZnVuY3Rpb24oKXtMLkZyKHRoaXMuYSx0aGlzLmIsdGhpcy5jKX0sCiRTOjB9Ckwub1oucHJvdG90
-eXBlPXsKJDE6ZnVuY3Rpb24oYSl7dS5WLmIoYSkKaWYoSC5vVCh3aW5kb3cuY29uZmlybSgiVGhpcyB3
-aWxsIGFwcGx5IHRoZSBjaGFuZ2VzIHlvdSd2ZSBwcmV2aWV3ZWQgdG8geW91ciB3b3JraW5nIGRpcmVj
-dG9yeS4gSXQgaXMgcmVjb21tZW5kZWQgeW91IGNvbW1pdCBhbnkgY2hhbmdlcyB5b3UgbWFkZSBiZWZv
-cmUgZG9pbmcgdGhpcy4iKSkpTC50eSgiL2FwcGx5LW1pZ3JhdGlvbiIpLlc3KG5ldyBMLmpyKCksdS5Q
-KS5PQShuZXcgTC5xbCgpKX0sCiRTOjN9CkwuanIucHJvdG90eXBlPXsKJDE6ZnVuY3Rpb24oYSl7dmFy
-IHQKdS5TLmIoYSkKdD1kb2N1bWVudC5ib2R5CnQuY2xhc3NMaXN0LnJlbW92ZSgicHJvcG9zZWQiKQp0
-LmNsYXNzTGlzdC5hZGQoImFwcGxpZWQiKX0sCiRTOjM5fQpMLnFsLnByb3RvdHlwZT17CiQyOmZ1bmN0
-aW9uKGEsYil7TC5DMigiQ291bGQgbm90IGFwcGx5IG1pZ3JhdGlvbiIsYSxiKX0sCiRDOiIkMiIsCiRS
-OjIsCiRTOjF9CkwueTgucHJvdG90eXBlPXsKJDE6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMueG4odS5W
-LmIoYSkpfSwKeG46ZnVuY3Rpb24oYSl7dmFyIHQ9MCxzPVAuRlgodS5QKSxyPTEscSxwPVtdLG8sbixt
-LGwKdmFyICRhc3luYyQkMT1QLmx6KGZ1bmN0aW9uKGIsYyl7aWYoYj09PTEpe3E9Ywp0PXJ9d2hpbGUo
-dHJ1ZSlzd2l0Y2godCl7Y2FzZSAwOnI9Mwpkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC5hZGQoInJlcnVu
-bmluZyIpCnQ9NgpyZXR1cm4gUC5qUShMLnR5KCIvcmVydW4tbWlncmF0aW9uIiksJGFzeW5jJCQxKQpj
-YXNlIDY6d2luZG93LmxvY2F0aW9uLnJlbG9hZCgpCnAucHVzaCg1KQp0PTQKYnJlYWsKY2FzZSAzOnI9
-MgpsPXEKbz1ILlJ1KGwpCm49SC50cyhsKQpMLkMyKCJGYWlsZWQgdG8gcmVydW4gbWlncmF0aW9uIixv
-LG4pCnAucHVzaCg1KQp0PTQKYnJlYWsKY2FzZSAyOnA9WzFdCmNhc2UgNDpyPTEKZG9jdW1lbnQuYm9k
-eS5jbGFzc0xpc3QucmVtb3ZlKCJyZXJ1bm5pbmciKQp0PXAucG9wKCkKYnJlYWsKY2FzZSA1OnJldHVy
-biBQLnlDKG51bGwscykKY2FzZSAxOnJldHVybiBQLmYzKHEscyl9fSkKcmV0dXJuIFAuREkoJGFzeW5j
-JCQxLHMpfSwKJFM6NDB9CkwuSGkucHJvdG90eXBlPXsKJDE6ZnVuY3Rpb24oYSl7dmFyIHQKdS5WLmIo
-YSkKdD11Lk4KQy5vbC5Qbyh3aW5kb3csUC5YZCgiaHR0cHMiLCJnaXRodWIuY29tIiwiZGFydC1sYW5n
-L3Nkay9pc3N1ZXMvbmV3IixQLkVGKFsibGFiZWxzIiwiYXJlYS1hbmFseXplcixhbmFseXplci1ubmJk
-LW1pZ3JhdGlvbix0eXBlLWJ1ZyIsImJvZHkiLCIjIyMjIFN0ZXBzIHRvIHJlcHJvZHVjZVxuXG4jIyMj
-IFdoYXQgZGlkIHlvdSBleHBlY3QgdG8gaGFwcGVuP1xuXG4jIyMjIFdoYXQgYWN0dWFsbHkgaGFwcGVu
-ZWQ/XG5cbl9TY3JlZW5zaG90cyBhcmUgYXBwcmVjaWF0ZWRfXG5cbioqRGFydCBTREsgdmVyc2lvbioq
-OiAiK0guZChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic2RrLXZlcnNpb24iKS50ZXh0Q29udGVudCkr
-IlxuXG5UaGFua3MgZm9yIGZpbGluZyFcbiJdLHQsdCkpLncoMCksInJlcG9ydC1wcm9ibGVtIil9LAok
-UzozfQpMLkJULnByb3RvdHlwZT17CiQxOmZ1bmN0aW9uKGEpe3ZhciB0CnUuVi5iKGEpCnQ9ZG9jdW1l
-bnQucXVlcnlTZWxlY3RvcigiLnBvcHVwLXBhbmUiKS5zdHlsZQpyZXR1cm4gdC5kaXNwbGF5PSJub25l
-In0sCiRTOjQxfQpMLkwucHJvdG90eXBlPXsKJDE6ZnVuY3Rpb24oYSl7dmFyIHQscyxyCnUuQi5iKGEp
-CnQ9d2luZG93LmxvY2F0aW9uLnBhdGhuYW1lCnM9TC5HNih3aW5kb3cubG9jYXRpb24uaHJlZikKcj1M
-LmFLKHdpbmRvdy5sb2NhdGlvbi5ocmVmKQppZih0Lmxlbmd0aD4xKUwuRzcodCxzLHIsITEsbnVsbCkK
-ZWxzZXtMLkJFKHQsbmV3IEIucXAoIiIsIiIsIiIsQy5DTSksITApCkwuQlgoIiZuYnNwOyIsbnVsbCl9
-fSwKJFM6MTh9CkwuV3gucHJvdG90eXBlPXsKJDE6ZnVuY3Rpb24oYSl7dmFyIHQscyxyLHE9ImNvbGxh
-cHNlZCIKdS5WLmIoYSkKdD10aGlzLmEKcz1KLlJFKHQpCnI9dGhpcy5iCmlmKCFzLmdQKHQpLnRnKDAs
-cSkpe3MuZ1AodCkuaSgwLHEpCkouZFIocikuaSgwLHEpfWVsc2V7cy5nUCh0KS5SKDAscSkKSi5kUihy
-KS5SKDAscSl9fSwKJFM6M30KTC5BTy5wcm90b3R5cGU9ewokMTpmdW5jdGlvbihhKXt2YXIgdD1KLnFG
-KHUuaC5iKGEpKSxzPXQuJHRpLHI9cy5DKCJ+KDEpIikuYihuZXcgTC5kTih0aGlzLmEpKQp1Lk0uYihu
-dWxsKQpXLkpFKHQuYSx0LmIsciwhMSxzLmQpfSwKJFM6Nn0KTC5kTi5wcm90b3R5cGU9ewokMTpmdW5j
-dGlvbihhKXt2YXIgdAp1LlYuYihhKQp0PWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoInRhYmxlW2RhdGEt
-cGF0aF0iKQp0LnRvU3RyaW5nCkwudDIoYSx0aGlzLmEsdC5nZXRBdHRyaWJ1dGUoImRhdGEtIituZXcg
-Vy5TeShuZXcgVy5pNyh0KSkuTygicGF0aCIpKSl9LAokUzozfQpMLkhvLnByb3RvdHlwZT17CiQxOmZ1
-bmN0aW9uKGEpe3ZhciB0LHMscgp1LmguYihhKQp0PUoucUYoYSkKcz10LiR0aQpyPXMuQygifigxKSIp
-LmIobmV3IEwueHooYSx0aGlzLmEpKQp1Lk0uYihudWxsKQpXLkpFKHQuYSx0LmIsciwhMSxzLmQpfSwK
-JFM6Nn0KTC54ei5wcm90b3R5cGU9ewokMTpmdW5jdGlvbihhKXt2YXIgdCxzPW51bGwKdS5WLmIoYSkK
-dD10aGlzLmEKTC5oWCh0aGlzLmIsUC5RQSh0LmdldEF0dHJpYnV0ZSgiZGF0YS0iK25ldyBXLlN5KG5l
-dyBXLmk3KHQpKS5PKCJvZmZzZXQiKSkscyxzKSxQLlFBKHQuZ2V0QXR0cmlidXRlKCJkYXRhLSIrbmV3
-IFcuU3kobmV3IFcuaTcodCkpLk8oImxpbmUiKSkscyxzKSl9LAokUzozfQpMLklDLnByb3RvdHlwZT17
-CiQxOmZ1bmN0aW9uKGEpe3ZhciB0PUoucUYodS5oLmIoYSkpLHM9dC4kdGkKcy5DKCJ+KDEpIikuYihM
-LmlTKCkpCnUuTS5iKG51bGwpClcuSkUodC5hLHQuYixMLmlTKCksITEscy5kKX0sCiRTOjZ9CkwuTDEu
-cHJvdG90eXBlPXsKJDE6ZnVuY3Rpb24oYSl7dS5wLmIoYSkKdGhpcy5hLmFNKDAsdGhpcy5iKX0sCiRT
-OjE1fQpMLm5ULnByb3RvdHlwZT17CiQwOmZ1bmN0aW9uKCl7TC5Gcih0aGlzLmEuYSx0aGlzLmIsdGhp
-cy5jKX0sCiRTOjB9CkwuQloucHJvdG90eXBlPXsKJDA6ZnVuY3Rpb24oKXtMLkZyKHRoaXMuYS5hLG51
-bGwsbnVsbCl9LAokUzowfQpMLkdILnByb3RvdHlwZT17CiQxOmZ1bmN0aW9uKGEpe3UuaC5iKGEpCiQu
-ekIoKS50b1N0cmluZwp1LnYuYSgkLm93KCkucSgwLCJobGpzIikpLlY3KCJoaWdobGlnaHRCbG9jayIs
-W2FdKX0sCiRTOjZ9CkwuRFQucHJvdG90eXBlPXsKJDE6ZnVuY3Rpb24oYSl7dmFyIHQscwp1LnIuYihh
-KQp0PWEuc3RhdHVzCmlmKHQ9PT0yMDApe3Q9Qy5DdC5wVygwLGEucmVzcG9uc2VUZXh0LG51bGwpCnM9
-Si5VNih0KQpMLlQxKG5ldyBVLmQyKFUuamYocy5xKHQsImVkaXRzIikpLEguYzAocy5xKHQsImV4cGxh
-bmF0aW9uIikpLEguV1kocy5xKHQsImxpbmUiKSksSC5jMChzLnEodCwicGF0aCIpKSxVLk5kKHMucSh0
-LCJ0cmFjZXMiKSkpKQpMLkZyKHRoaXMuYSx0aGlzLmIsdGhpcy5jKQpMLnlYKCIuZWRpdC1wYW5lbCAu
-cGFuZWwtY29udGVudCIsITEpfWVsc2Ugd2luZG93LmFsZXJ0KCJSZXF1ZXN0IGZhaWxlZDsgc3RhdHVz
-IG9mICIrSC5kKHQpKX0sCiRTOjl9CkwuZUgucHJvdG90eXBlPXsKJDI6ZnVuY3Rpb24oYSxiKXtMLnFK
-KCJsb2FkUmVnaW9uRXhwbGFuYXRpb246ICIrSC5kKGEpLGIpCndpbmRvdy5hbGVydCgiQ291bGQgbm90
-IGxvYWQgIitILmQodGhpcy5hKSsiICgiK0guZChhKSsiKS4iKX0sCiRDOiIkMiIsCiRSOjIsCiRTOjF9
-CkwueXUucHJvdG90eXBlPXsKJDE6ZnVuY3Rpb24oYSl7dmFyIHQscyxyPXRoaXMKdS5yLmIoYSkKdD1h
-LnN0YXR1cwppZih0PT09MjAwKXtzPXIuYQpMLkJFKHMsQi5ZZih1LmIuYShDLkN0LnBXKDAsYS5yZXNw
-b25zZVRleHQsbnVsbCkpKSxyLmIpCnQ9ci5jCkwuZkcodCxyLmQpCkwuQlgoQy54Qi50ZyhzLCI/Iik/
-Qy54Qi5OaihzLDAsQy54Qi5PWShzLCI/IikpOnMsdCkKdD1yLmUKaWYodCE9bnVsbCl0LiQwKCl9ZWxz
-ZSB3aW5kb3cuYWxlcnQoIlJlcXVlc3QgZmFpbGVkOyBzdGF0dXMgb2YgIitILmQodCkpfSwKJFM6OX0K
-TC56RC5wcm90b3R5cGU9ewokMjpmdW5jdGlvbihhLGIpe0wucUooImxvYWRGaWxlOiAiK0guZChhKSxi
-KQp3aW5kb3cuYWxlcnQoIkNvdWxkIG5vdCBsb2FkICIrdGhpcy5hKyIgKCIrSC5kKGEpKyIpLiIpfSwK
-JEM6IiQyIiwKJFI6MiwKJFM6MX0KTC5UVy5wcm90b3R5cGU9ewokMTpmdW5jdGlvbihhKXt2YXIgdCxz
-LHIKdS5yLmIoYSkKdD1hLnN0YXR1cwppZih0PT09MjAwKXtzPUMuQ3QucFcoMCxhLnJlc3BvbnNlVGV4
-dCxudWxsKQpyPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIi5uYXYtdHJlZSIpCkoubDUociwiIikKTC50
-WChyLEwubUsocykpfWVsc2Ugd2luZG93LmFsZXJ0KCJSZXF1ZXN0IGZhaWxlZDsgc3RhdHVzIG9mICIr
-SC5kKHQpKX0sCiRTOjl9CkwueHIucHJvdG90eXBlPXsKJDI6ZnVuY3Rpb24oYSxiKXtMLnFKKCJsb2Fk
-TmF2aWdhdGlvblRyZWU6ICIrSC5kKGEpLGIpCndpbmRvdy5hbGVydCgiQ291bGQgbm90IGxvYWQgIit0
-aGlzLmErIiAoIitILmQoYSkrIikuIil9LAokQzoiJDIiLAokUjoyLAokUzoxfQpMLkVFLnByb3RvdHlw
-ZT17CiQxOmZ1bmN0aW9uKGEpe3ZhciB0LHMKdS5WLmIoYSkKdD10aGlzLmEKcz10aGlzLmIKTC5hZih3
-aW5kb3cubG9jYXRpb24ucGF0aG5hbWUsdCxzLCEwLG5ldyBMLlFMKHQscykpCkwuaFgodGhpcy5jLHQs
-cyl9LAokUzozfQpMLlFMLnByb3RvdHlwZT17CiQwOmZ1bmN0aW9uKCl7TC5Gcih3aW5kb3cubG9jYXRp
-b24ucGF0aG5hbWUsdGhpcy5hLHRoaXMuYil9LAokUzowfQpMLlZTLnByb3RvdHlwZT17CiQxOmZ1bmN0
-aW9uKGEpe3ZhciB0LHM9InNlbGVjdGVkLWZpbGUiCnUuaC5iKGEpCmEudG9TdHJpbmcKdD1KLlJFKGEp
-CmlmKGEuZ2V0QXR0cmlidXRlKCJkYXRhLSIrbmV3IFcuU3kobmV3IFcuaTcoYSkpLk8oIm5hbWUiKSk9
-PT10aGlzLmEuYSl0LmdQKGEpLmkoMCxzKQplbHNlIHQuZ1AoYSkuUigwLHMpfSwKJFM6Nn0KTC5URC5w
-cm90b3R5cGU9ewokMTpmdW5jdGlvbihhKXtyZXR1cm4gTC50Mih1LlYuYihhKSwhMCxudWxsKX0sCiRT
-OjE5fQpMLlhBLnByb3RvdHlwZT17CkViOmZ1bmN0aW9uKGEsYixjKXtyZXR1cm4hMH0sCmkwOmZ1bmN0
-aW9uKGEpe3JldHVybiEwfSwKJGlrRjoxfQpMLlpaLnByb3RvdHlwZT17fQpMLk85LnByb3RvdHlwZT17
-Cnc6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuYn19Ck0ubEkucHJvdG90eXBlPXsKV086ZnVuY3Rpb24o
-YSxiKXt2YXIgdCxzPW51bGwKTS5ZRigiYWJzb2x1dGUiLEguVk0oW2IsbnVsbCxudWxsLG51bGwsbnVs
-bCxudWxsLG51bGxdLHUucykpCnQ9dGhpcy5hCnQ9dC5ZcihiKT4wJiYhdC5oSyhiKQppZih0KXJldHVy
-biBiCnQ9RC5SWCgpCnJldHVybiB0aGlzLnE3KDAsdCxiLHMscyxzLHMscyxzKX0sCnRNOmZ1bmN0aW9u
-KGEpe3ZhciB0LHMscj1YLkNMKGEsdGhpcy5hKQpyLklWKCkKdD1yLmQKcz10Lmxlbmd0aAppZihzPT09
-MCl7dD1yLmIKcmV0dXJuIHQ9PW51bGw/Ii4iOnR9aWYocz09PTEpe3Q9ci5iCnJldHVybiB0PT1udWxs
-PyIuIjp0fWlmKDA+PXMpcmV0dXJuIEguT0godCwtMSkKdC5wb3AoKQpDLk5tLm12KHIuZSkKci5JVigp
-CnJldHVybiByLncoMCl9LApxNzpmdW5jdGlvbihhLGIsYyxkLGUsZixnLGgsaSl7dmFyIHQ9SC5WTShb
-YixjLGQsZSxmLGcsaCxpXSx1LnMpCk0uWUYoImpvaW4iLHQpCnJldHVybiB0aGlzLklQKG5ldyBILlU1
-KHQsdS5iQi5iKG5ldyBNLk1pKCkpLHUuY2MpKX0sCklQOmZ1bmN0aW9uKGEpe3ZhciB0LHMscixxLHAs
-byxuLG0sbAp1LlguYihhKQpmb3IodD1hLiR0aSxzPXQuQygiYTIoY1guRSkiKS5iKG5ldyBNLnE3KCkp
-LHI9YS5na3ooYSksdD1uZXcgSC5TTyhyLHMsdC5DKCJTTzxjWC5FPiIpKSxzPXRoaXMuYSxxPSExLHA9
-ITEsbz0iIjt0LkYoKTspe249ci5nbCgpCmlmKHMuaEsobikmJnApe209WC5DTChuLHMpCmw9by5jaGFy
-Q29kZUF0KDApPT0wP286bwpvPUMueEIuTmoobCwwLHMuU3AobCwhMCkpCm0uYj1vCmlmKHMuZHMobykp
-Qy5ObS5ZKG0uZSwwLHMuZ21JKCkpCm89bS53KDApfWVsc2UgaWYocy5ZcihuKT4wKXtwPSFzLmhLKG4p
-Cm89SC5kKG4pfWVsc2V7aWYoIShuLmxlbmd0aD4wJiZzLlVkKG5bMF0pKSlpZihxKW8rPXMuZ21JKCkK
-bys9SC5kKG4pfXE9cy5kcyhuKX1yZXR1cm4gby5jaGFyQ29kZUF0KDApPT0wP286b30sCm81OmZ1bmN0
-aW9uKGEpe3ZhciB0CmlmKCF0aGlzLnkzKGEpKXJldHVybiBhCnQ9WC5DTChhLHRoaXMuYSkKdC5yUigp
-CnJldHVybiB0LncoMCl9LAp5MzpmdW5jdGlvbihhKXt2YXIgdCxzLHIscSxwLG8sbixtLGwsawphLnRv
-U3RyaW5nCnQ9dGhpcy5hCnM9dC5ZcihhKQppZihzIT09MCl7aWYodD09PSQuS2soKSlmb3Iocj0wO3I8
-czsrK3IpaWYoQy54Qi5XKGEscik9PT00NylyZXR1cm4hMApxPXMKcD00N31lbHNle3E9MApwPW51bGx9
-Zm9yKG89bmV3IEgucWooYSkuYSxuPW8ubGVuZ3RoLHI9cSxtPW51bGw7cjxuOysrcixtPXAscD1sKXts
-PUMueEIubShvLHIpCmlmKHQucjQobCkpe2lmKHQ9PT0kLktrKCkmJmw9PT00NylyZXR1cm4hMAppZihw
-IT1udWxsJiZ0LnI0KHApKXJldHVybiEwCmlmKHA9PT00NilrPW09PW51bGx8fG09PT00Nnx8dC5yNCht
-KQplbHNlIGs9ITEKaWYoaylyZXR1cm4hMH19aWYocD09bnVsbClyZXR1cm4hMAppZih0LnI0KHApKXJl
-dHVybiEwCmlmKHA9PT00Nil0PW09PW51bGx8fHQucjQobSl8fG09PT00NgplbHNlIHQ9ITEKaWYodCly
-ZXR1cm4hMApyZXR1cm4hMX0sCkhQOmZ1bmN0aW9uKGEsYil7dmFyIHQscyxyLHEscCxvPXRoaXMsbj0n
-VW5hYmxlIHRvIGZpbmQgYSBwYXRoIHRvICInCmI9by5XTygwLGIpCnQ9by5hCmlmKHQuWXIoYik8PTAm
-JnQuWXIoYSk+MClyZXR1cm4gby5vNShhKQppZih0LllyKGEpPD0wfHx0LmhLKGEpKWE9by5XTygwLGEp
-CmlmKHQuWXIoYSk8PTAmJnQuWXIoYik+MCl0aHJvdyBILmIoWC5JNyhuK0guZChhKSsnIiBmcm9tICIn
-K0guZChiKSsnIi4nKSkKcz1YLkNMKGIsdCkKcy5yUigpCnI9WC5DTChhLHQpCnIuclIoKQpxPXMuZApp
-ZihxLmxlbmd0aD4wJiZKLlJNKHFbMF0sIi4iKSlyZXR1cm4gci53KDApCnE9cy5iCnA9ci5iCmlmKHEh
-PXApcT1xPT1udWxsfHxwPT1udWxsfHwhdC5OYyhxLHApCmVsc2UgcT0hMQppZihxKXJldHVybiByLnco
-MCkKd2hpbGUoITApe3E9cy5kCmlmKHEubGVuZ3RoPjApe3A9ci5kCnE9cC5sZW5ndGg+MCYmdC5OYyhx
-WzBdLHBbMF0pfWVsc2UgcT0hMQppZighcSlicmVhawpDLk5tLlc0KHMuZCwwKQpDLk5tLlc0KHMuZSwx
-KQpDLk5tLlc0KHIuZCwwKQpDLk5tLlc0KHIuZSwxKX1xPXMuZAppZihxLmxlbmd0aD4wJiZKLlJNKHFb
-MF0sIi4uIikpdGhyb3cgSC5iKFguSTcobitILmQoYSkrJyIgZnJvbSAiJytILmQoYikrJyIuJykpCnE9
-dS5OCkMuTm0uVUcoci5kLDAsUC5POChzLmQubGVuZ3RoLCIuLiIscSkpCkMuTm0uWShyLmUsMCwiIikK
-Qy5ObS5VRyhyLmUsMSxQLk84KHMuZC5sZW5ndGgsdC5nbUkoKSxxKSkKdD1yLmQKcT10Lmxlbmd0aApp
-ZihxPT09MClyZXR1cm4iLiIKaWYocT4xJiZKLlJNKEMuTm0uZ3JaKHQpLCIuIikpe3Q9ci5kCmlmKDA+
-PXQubGVuZ3RoKXJldHVybiBILk9IKHQsLTEpCnQucG9wKCkKdD1yLmUKQy5ObS5tdih0KQpDLk5tLm12
-KHQpCkMuTm0uaSh0LCIiKX1yLmI9IiIKci5JVigpCnJldHVybiByLncoMCl9fQpNLk1pLnByb3RvdHlw
-ZT17CiQxOmZ1bmN0aW9uKGEpe3JldHVybiBILnkoYSkhPW51bGx9LAokUzo3fQpNLnE3LnByb3RvdHlw
-ZT17CiQxOmZ1bmN0aW9uKGEpe3JldHVybiBILnkoYSkhPT0iIn0sCiRTOjd9Ck0uTm8ucHJvdG90eXBl
-PXsKJDE6ZnVuY3Rpb24oYSl7SC55KGEpCnJldHVybiBhPT1udWxsPyJudWxsIjonIicrYSsnIid9LAok
-Uzo1fQpCLmZ2LnByb3RvdHlwZT17CnhaOmZ1bmN0aW9uKGEpe3ZhciB0LHM9dGhpcy5ZcihhKQppZihz
-PjApcmV0dXJuIEoubGQoYSwwLHMpCmlmKHRoaXMuaEsoYSkpe2lmKDA+PWEubGVuZ3RoKXJldHVybiBI
-Lk9IKGEsMCkKdD1hWzBdfWVsc2UgdD1udWxsCnJldHVybiB0fSwKTmM6ZnVuY3Rpb24oYSxiKXtyZXR1
-cm4gYT09Yn19ClguV0QucHJvdG90eXBlPXsKSVY6ZnVuY3Rpb24oKXt2YXIgdCxzLHI9dGhpcwp3aGls
-ZSghMCl7dD1yLmQKaWYoISh0Lmxlbmd0aCE9PTAmJkouUk0oQy5ObS5ncloodCksIiIpKSlicmVhawp0
-PXIuZAppZigwPj10Lmxlbmd0aClyZXR1cm4gSC5PSCh0LC0xKQp0LnBvcCgpCkMuTm0ubXYoci5lKX10
-PXIuZQpzPXQubGVuZ3RoCmlmKHM+MClDLk5tLlkodCxzLTEsIiIpfSwKclI6ZnVuY3Rpb24oKXt2YXIg
-dCxzLHIscSxwLG8sbixtPXRoaXMsbD1ILlZNKFtdLHUucykKZm9yKHQ9bS5kLHM9dC5sZW5ndGgscj0w
-LHE9MDtxPHQubGVuZ3RoO3QubGVuZ3RoPT09c3x8KDAsSC5saykodCksKytxKXtwPXRbcV0Kbz1KLmlh
-KHApCmlmKCEoby5ETihwLCIuIil8fG8uRE4ocCwiIikpKWlmKG8uRE4ocCwiLi4iKSlpZihsLmxlbmd0
-aD4wKWwucG9wKCkKZWxzZSArK3IKZWxzZSBDLk5tLmkobCxwKX1pZihtLmI9PW51bGwpQy5ObS5VRyhs
-LDAsUC5POChyLCIuLiIsdS5OKSkKaWYobC5sZW5ndGg9PT0wJiZtLmI9PW51bGwpQy5ObS5pKGwsIi4i
-KQpuPVAuZEgobC5sZW5ndGgsbmV3IFgucVIobSksITAsdS5OKQp0PW0uYgp0PXQhPW51bGwmJmwubGVu
-Z3RoPjAmJm0uYS5kcyh0KT9tLmEuZ21JKCk6IiIKSC50NihuKS5kLmIodCkKaWYoISFuLmZpeGVkJGxl
-bmd0aClILnZoKFAuTDQoImluc2VydCIpKQpuLnNwbGljZSgwLDAsdCkKbS5zbkoobCkKbS5zUGgobikK
-dD1tLmIKaWYodCE9bnVsbCYmbS5hPT09JC5LaygpKXt0LnRvU3RyaW5nCm0uYj1ILnlzKHQsIi8iLCJc
-XCIpfW0uSVYoKX0sCnc6ZnVuY3Rpb24oYSl7dmFyIHQscyxyPXRoaXMscT1yLmIKcT1xIT1udWxsP3E6
-IiIKZm9yKHQ9MDt0PHIuZC5sZW5ndGg7Kyt0KXtzPXIuZQppZih0Pj1zLmxlbmd0aClyZXR1cm4gSC5P
-SChzLHQpCnM9cStILmQoc1t0XSkKcT1yLmQKaWYodD49cS5sZW5ndGgpcmV0dXJuIEguT0gocSx0KQpx
-PXMrSC5kKHFbdF0pfXErPUguZChDLk5tLmdyWihyLmUpKQpyZXR1cm4gcS5jaGFyQ29kZUF0KDApPT0w
-P3E6cX0sCnNuSjpmdW5jdGlvbihhKXt0aGlzLmQ9dS5hLmIoYSl9LApzUGg6ZnVuY3Rpb24oYSl7dGhp
-cy5lPXUuYS5iKGEpfX0KWC5xUi5wcm90b3R5cGU9ewokMTpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5h
-LmEuZ21JKCl9LAokUzo0NX0KWC5kdi5wcm90b3R5cGU9ewp3OmZ1bmN0aW9uKGEpe3JldHVybiJQYXRo
-RXhjZXB0aW9uOiAiK3RoaXMuYX19Ck8uekwucHJvdG90eXBlPXsKdzpmdW5jdGlvbihhKXtyZXR1cm4g
-dGhpcy5nb2ModGhpcyl9fQpFLk9GLnByb3RvdHlwZT17ClVkOmZ1bmN0aW9uKGEpe3JldHVybiBDLnhC
-LnRnKGEsIi8iKX0sCnI0OmZ1bmN0aW9uKGEpe3JldHVybiBhPT09NDd9LApkczpmdW5jdGlvbihhKXt2
-YXIgdD1hLmxlbmd0aApyZXR1cm4gdCE9PTAmJkMueEIubShhLHQtMSkhPT00N30sClNwOmZ1bmN0aW9u
-KGEsYil7aWYoYS5sZW5ndGghPT0wJiZDLnhCLlcoYSwwKT09PTQ3KXJldHVybiAxCnJldHVybiAwfSwK
-WXI6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuU3AoYSwhMSl9LApoSzpmdW5jdGlvbihhKXtyZXR1cm4h
-MX0sCmdvYzpmdW5jdGlvbigpe3JldHVybiJwb3NpeCJ9LApnbUk6ZnVuY3Rpb24oKXtyZXR1cm4iLyJ9
-fQpGLnJ1LnByb3RvdHlwZT17ClVkOmZ1bmN0aW9uKGEpe3JldHVybiBDLnhCLnRnKGEsIi8iKX0sCnI0
-OmZ1bmN0aW9uKGEpe3JldHVybiBhPT09NDd9LApkczpmdW5jdGlvbihhKXt2YXIgdD1hLmxlbmd0aApp
-Zih0PT09MClyZXR1cm4hMQppZihDLnhCLm0oYSx0LTEpIT09NDcpcmV0dXJuITAKcmV0dXJuIEMueEIu
-VGMoYSwiOi8vIikmJnRoaXMuWXIoYSk9PT10fSwKU3A6ZnVuY3Rpb24oYSxiKXt2YXIgdCxzLHIscSxw
-PWEubGVuZ3RoCmlmKHA9PT0wKXJldHVybiAwCmlmKEMueEIuVyhhLDApPT09NDcpcmV0dXJuIDEKZm9y
-KHQ9MDt0PHA7Kyt0KXtzPUMueEIuVyhhLHQpCmlmKHM9PT00NylyZXR1cm4gMAppZihzPT09NTgpe2lm
-KHQ9PT0wKXJldHVybiAwCnI9Qy54Qi5YVShhLCIvIixDLnhCLlFpKGEsIi8vIix0KzEpP3QrMzp0KQpp
-ZihyPD0wKXJldHVybiBwCmlmKCFifHxwPHIrMylyZXR1cm4gcgppZighQy54Qi5uKGEsImZpbGU6Ly8i
-KSlyZXR1cm4gcgppZighQi5ZdShhLHIrMSkpcmV0dXJuIHIKcT1yKzMKcmV0dXJuIHA9PT1xP3E6cis0
-fX1yZXR1cm4gMH0sCllyOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLlNwKGEsITEpfSwKaEs6ZnVuY3Rp
-b24oYSl7cmV0dXJuIGEubGVuZ3RoIT09MCYmQy54Qi5XKGEsMCk9PT00N30sCmdvYzpmdW5jdGlvbigp
-e3JldHVybiJ1cmwifSwKZ21JOmZ1bmN0aW9uKCl7cmV0dXJuIi8ifX0KTC5JVi5wcm90b3R5cGU9ewpV
-ZDpmdW5jdGlvbihhKXtyZXR1cm4gQy54Qi50ZyhhLCIvIil9LApyNDpmdW5jdGlvbihhKXtyZXR1cm4g
-YT09PTQ3fHxhPT09OTJ9LApkczpmdW5jdGlvbihhKXt2YXIgdD1hLmxlbmd0aAppZih0PT09MClyZXR1
-cm4hMQp0PUMueEIubShhLHQtMSkKcmV0dXJuISh0PT09NDd8fHQ9PT05Mil9LApTcDpmdW5jdGlvbihh
-LGIpe3ZhciB0LHMscj1hLmxlbmd0aAppZihyPT09MClyZXR1cm4gMAp0PUMueEIuVyhhLDApCmlmKHQ9
-PT00NylyZXR1cm4gMQppZih0PT09OTIpe2lmKHI8Mnx8Qy54Qi5XKGEsMSkhPT05MilyZXR1cm4gMQpz
-PUMueEIuWFUoYSwiXFwiLDIpCmlmKHM+MCl7cz1DLnhCLlhVKGEsIlxcIixzKzEpCmlmKHM+MClyZXR1
-cm4gc31yZXR1cm4gcn1pZihyPDMpcmV0dXJuIDAKaWYoIUIuT1ModCkpcmV0dXJuIDAKaWYoQy54Qi5X
-KGEsMSkhPT01OClyZXR1cm4gMApyPUMueEIuVyhhLDIpCmlmKCEocj09PTQ3fHxyPT09OTIpKXJldHVy
-biAwCnJldHVybiAzfSwKWXI6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuU3AoYSwhMSl9LApoSzpmdW5j
-dGlvbihhKXtyZXR1cm4gdGhpcy5ZcihhKT09PTF9LApPdDpmdW5jdGlvbihhLGIpe3ZhciB0CmlmKGE9
-PT1iKXJldHVybiEwCmlmKGE9PT00NylyZXR1cm4gYj09PTkyCmlmKGE9PT05MilyZXR1cm4gYj09PTQ3
-CmlmKChhXmIpIT09MzIpcmV0dXJuITEKdD1hfDMyCnJldHVybiB0Pj05NyYmdDw9MTIyfSwKTmM6ZnVu
-Y3Rpb24oYSxiKXt2YXIgdCxzLHIKaWYoYT09YilyZXR1cm4hMAp0PWEubGVuZ3RoCmlmKHQhPT1iLmxl
-bmd0aClyZXR1cm4hMQpmb3Iocz1KLnJZKGIpLHI9MDtyPHQ7KytyKWlmKCF0aGlzLk90KEMueEIuVyhh
-LHIpLHMuVyhiLHIpKSlyZXR1cm4hMQpyZXR1cm4hMH0sCmdvYzpmdW5jdGlvbigpe3JldHVybiJ3aW5k
-b3dzIn0sCmdtSTpmdW5jdGlvbigpe3JldHVybiJcXCJ9fTsoZnVuY3Rpb24gYWxpYXNlcygpe3ZhciB0
-PUoudkIucHJvdG90eXBlCnQuVT10LncKdC5Taj10LmU3CnQ9Si5NRi5wcm90b3R5cGUKdC50PXQudwp0
-PVAuY1gucHJvdG90eXBlCnQuR0c9dC5ldgp0PVAuay5wcm90b3R5cGUKdC54Yj10LncKdD1XLmN2LnBy
-b3RvdHlwZQp0LkRXPXQucjYKdD1XLm02LnByb3RvdHlwZQp0LmpGPXQuRWIKdD1QLkU0LnByb3RvdHlw
-ZQp0LlVyPXQucQp0LmU0PXQuWX0pKCk7KGZ1bmN0aW9uIGluc3RhbGxUZWFyT2Zmcygpe3ZhciB0PWh1
-bmtIZWxwZXJzLl9zdGF0aWNfMSxzPWh1bmtIZWxwZXJzLl9zdGF0aWNfMCxyPWh1bmtIZWxwZXJzLmlu
-c3RhbGxJbnN0YW5jZVRlYXJPZmYscT1odW5rSGVscGVycy5pbnN0YWxsU3RhdGljVGVhck9mZixwPWh1
-bmtIZWxwZXJzLl9pbnN0YW5jZV8xdQp0KFAsIkVYIiwiWlYiLDEwKQp0KFAsInl0Iiwib0EiLDEwKQp0
-KFAsInFXIiwiQnoiLDEwKQpzKFAsIlVJIiwiZU4iLDIpCnIoUC5QZi5wcm90b3R5cGUsImdZSiIsMCwx
-LG51bGwsWyIkMiIsIiQxIl0sWyJ3MCIsInBtIl0sMjksMCkKdChQLCJQSCIsIk10Iiw1KQpxKFcsInBT
-Iiw0LG51bGwsWyIkNCJdLFsieVciXSwxMSwwKQpxKFcsIlY0Iiw0LG51bGwsWyIkNCJdLFsiUVciXSwx
-MSwwKQpwKFAuQXMucHJvdG90eXBlLCJndU0iLCJUIiw1KQp0KFAsImlHIiwid1kiLDQpCnQoUCwidzAi
-LCJMNyIsMzIpCnQoTCwiaVMiLCJpNiIsMTkpfSkoKTsoZnVuY3Rpb24gaW5oZXJpdGFuY2UoKXt2YXIg
-dD1odW5rSGVscGVycy5taXhpbixzPWh1bmtIZWxwZXJzLmluaGVyaXQscj1odW5rSGVscGVycy5pbmhl
-cml0TWFueQpzKFAuayxudWxsKQpyKFAuayxbSC5lbyxKLnZCLEoubTEsUC5uWSxQLmNYLEguYTcsUC5B
-bixILlNVLEguUmUsSC53dixQLlBuLEguV1UsSC5MSSxILlRwLEguZjksUC5YUyxILmJxLEguWE8sUC5Z
-ayxILmRiLEguTjYsSC5WUixILkVLLEguUGIsSC50USxILlNkLEguSmMsSC5HLFAuVzMsUC5paCxQLkZ5
-LFAuR1YsUC5iOCxQLlBmLFAuRmUsUC52cyxQLk9NLFAucWgsUC5NTyxQLmtULFAueEksUC5DdyxQLm0w
-LFAuWHYsUC5ibixQLmxtLFAubEQsUC5LUCxQLmxmLFAuVEMsUC5VayxQLlJ3LFAuYnosUC5hMixQLmlQ
-LFAuRkssUC5rNSxQLktZLFAuQ0QsUC5hRSxQLkVILFAuek0sUC5aMCxQLk4zLFAuYzgsUC5PZCxQLmli
-LFAuR3osUC5xVSxQLlJuLFAuR0QsUC5EbixQLlBFLFAuVWYsVy5pZCxXLkZrLFcuSlEsVy5HbSxXLnZE
-LFcubTYsVy5PdyxXLlc5LFcuZFcsVy5GYixXLmtGLFcubWssVy5LbyxQLmlKLFAuRTQsUC5uNixVLmQy
-LFUuU2UsVS5NbCxVLnlELFUud2IsQi5qOCxCLnFwLFQubVEsTC5YQSxMLlpaLEwuTzksTS5sSSxPLnpM
-LFguV0QsWC5kdl0pCnIoSi52QixbSi55RSxKLllFLEouTUYsSi5qZCxKLnFJLEouRHIsSC5FVCxXLkQw
-LFcuQXosVy5MZSxXLk5oLFcuSUIsVy5uNyxXLmVhLFcuYnIsVy5TZyxXLnU4LFcuSzcsVy5YVyxQLmhG
-XSkKcihKLk1GLFtKLmlDLEoua2QsSi5jNV0pCnMoSi5QbyxKLmpkKQpyKEoucUksW0oudXIsSi5WQV0p
-CnMoUC5MVSxQLm5ZKQpyKFAuTFUsW0guWEMsVy53eixXLmU3XSkKcyhILnFqLEguWEMpCnIoUC5jWCxb
-SC5iUSxILmkxLEguVTUsSC5YUixQLm1XLEgudW5dKQpyKEguYlEsW0guYUwsSC5pNSxQLnh1XSkKcihI
-LmFMLFtILm5ILEguQTgsUC5pOF0pCnMoSC54eSxILmkxKQpyKFAuQW4sW0guTUgsSC5TT10pCnMoUC5S
-VSxQLlBuKQpzKFAuR2osUC5SVSkKcyhILlBELFAuR2opCnMoSC5MUCxILldVKQpyKEguVHAsW0guQ2os
-SC5BbSxILmxjLEguZEMsSC53TixILlZYLFAudGgsUC5oYSxQLlZzLFAuRnQsUC55SCxQLldNLFAuU1gs
-UC5HcyxQLmRhLFAub1EsUC5wVixQLlU3LFAudnIsUC5ySCxQLktGLFAuWkwsUC5SVCxQLmpaLFAucnEs
-UC5SVyxQLkI1LFAudU8sUC5wSyxQLmhqLFAuVnAsUC5PUixQLnJhLFAueVEsUC5XRixQLm4xLFAuY1Ms
-UC5WQyxQLkpULFAuZTEsUC5OWSxQLlJaLFAuTUUsUC55NSxQLnEzLFAueUksUC5jNixQLnFkLFcuQ3Ys
-Vy5iVSxXLmhILFcuS1MsVy5BMyxXLnZOLFcuVXYsVy5FZyxXLkVvLFcuV2ssVy5JQSxXLmZtLFAubFIs
-UC5qZyxQLkdFLFAuTjcsUC51USxQLlBDLFAubXQsUC5OeixQLlFTLFAubnAsTC5lLEwuVlcsTC5vWixM
-LmpyLEwucWwsTC55OCxMLkhpLEwuQlQsTC5MLEwuV3gsTC5BTyxMLmROLEwuSG8sTC54eixMLklDLEwu
-TDEsTC5uVCxMLkJaLEwuR0gsTC5EVCxMLmVILEwueXUsTC56RCxMLlRXLEwueHIsTC5FRSxMLlFMLEwu
-VlMsTC5URCxNLk1pLE0ucTcsTS5ObyxYLnFSXSkKcihQLlhTLFtILlcwLEguYXosSC52VixILkVxLFAu
-QzYsSC51OSxQLm4sUC51LFAubXAsUC51YixQLmRzLFAubGosUC5VVixQLmNdKQpyKEgubGMsW0guengs
-SC5yVF0pCnMoSC5rWSxQLkM2KQpzKFAuaWwsUC5ZaykKcihQLmlsLFtILk41LFAudXcsVy5jZixXLlN5
-XSkKcihQLm1XLFtILktXLFAucTRdKQpzKEguYjAsSC5FVCkKcihILmIwLFtILlJHLEguV0JdKQpzKEgu
-VlAsSC5SRykKcyhILkRnLEguVlApCnMoSC5aRyxILldCKQpzKEguUGcsSC5aRykKcihILlBnLFtILnhq
-LEguZEUsSC5aQSxILndmLEguUHEsSC5lRSxILlY2XSkKcihILnU5LFtILmh6LEguaU1dKQpzKFAuWmYs
-UC5QZikKcyhQLkppLFAubTApCnMoUC5iNixQLlh2KQpzKFAuVmosUC5UQykKcihQLlVrLFtQLkNWLFAu
-WmksUC5ieV0pCnMoUC53SSxQLmtUKQpyKFAud0ksW1AuVTgsUC5NeCxQLkUzLFAuR1ldKQpzKFAudTUs
-UC5aaSkKcihQLkZLLFtQLkNQLFAuS05dKQpyKFAudSxbUC5iSixQLmVZXSkKcyhQLnFlLFAuRG4pCnIo
-Vy5EMCxbVy51SCxXLndhLFcuSzUsVy5DbV0pCnIoVy51SCxbVy5jdixXLm54LFcuUUYsVy5DUV0pCnIo
-Vy5jdixbVy5xRSxQLmQ1XSkKcihXLnFFLFtXLkdoLFcuZlksVy5uQixXLlFQLFcuaDQsVy5TTixXLmxw
-LFcuVGIsVy5JdixXLldQLFcueVldKQpzKFcub0osVy5MZSkKcyhXLlQ1LFcuQXopCnMoVy5WYixXLlFG
-KQpzKFcuTzcsVy53YSkKcihXLmVhLFtXLnc2LFcuZXddKQpzKFcuQWosVy53NikKcyhXLnJCLFcuSzcp
-CnMoVy5CSCxXLnJCKQpzKFcudzQsVy5JQikKcyhXLm9hLFcuWFcpCnMoVy5yaCxXLm9hKQpzKFcuaTcs
-Vy5jZikKcyhQLkFzLFAuVmopCnIoUC5BcyxbVy5JNCxQLktlXSkKcyhXLlJPLFAucWgpCnMoVy5ldSxX
-LlJPKQpzKFcueEMsUC5NTykKcyhXLmN0LFcubTYpCnMoUC5CZixQLmlKKQpyKFAuRTQsW1AucjcsUC5j
-b10pCnMoUC5UeixQLmNvKQpzKFAubmQsUC5kNSkKcyhCLmZ2LE8uekwpCnIoQi5mdixbRS5PRixGLnJ1
-LEwuSVZdKQp0KEguWEMsSC5SZSkKdChILlJHLFAubEQpCnQoSC5WUCxILlNVKQp0KEguV0IsUC5sRCkK
-dChILlpHLEguU1UpCnQoUC5uWSxQLmxEKQp0KFAuVEMsUC5sZikKdChQLlJVLFAuS1ApCnQoVy5MZSxX
-LmlkKQp0KFcuSzcsUC5sRCkKdChXLnJCLFcuR20pCnQoVy5YVyxQLmxEKQp0KFcub2EsVy5HbSkKdChQ
-LmNvLFAubEQpfSkoKQp2YXIgdj17dHlwZVVuaXZlcnNlOntlQzpuZXcgTWFwKCksdFI6e30sZVQ6e30s
-dFBWOnt9LHNFQTpbXX0sbWFuZ2xlZEdsb2JhbE5hbWVzOntLTjoiaW50IixDUDoiZG91YmxlIixGSzoi
-bnVtIixxVToiU3RyaW5nIixhMjoiYm9vbCIsYzg6Ik51bGwiLHpNOiJMaXN0In0sbWFuZ2xlZE5hbWVz
-Ont9LGdldFR5cGVGcm9tTmFtZTpnZXRHbG9iYWxGcm9tTmFtZSxtZXRhZGF0YTpbXSx0eXBlczpbImM4
-KCkiLCJjOChALEApIiwifigpIiwiYzgoQWopIiwiQChAKSIsInFVKHFVKSIsImM4KGN2KSIsImEyKHFV
-KSIsImM4KHFVLHFVKSIsImM4KE83KSIsIn4ofigpKSIsImEyKGN2LHFVLHFVLEpRKSIsImM4KEApIiwi
-YzgocVUsQCkiLCJjOChxVSkiLCJjOChldykiLCJhMihrRikiLCJ+KHh1PHFVPikiLCJjOChlYSkiLCJ+
-KEFqKSIsIlowPHFVLHFVPihaMDxxVSxxVT4scVUpIiwifihAKSIsIn4ocVUscVUpIiwibjYoS04pIiwi
-bjYoQCxAKSIsImEyKHVIKSIsImM4KEAsR3opIiwiYzgoS04sQCkiLCJAKGVhKSIsIn4oa1tHel0pIiwi
-YzgoQFtHel0pIiwifih1SCx1SCkiLCJrKEApIiwidnM8QD4oQCkiLCJyNyhAKSIsIlR6PEA+KEApIiwi
-RTQoQCkiLCJjOCh+KCkpIiwiYzgoR0QsQCkiLCJjOChaMDxxVSxrPikiLCJiODxjOD4oQWopIiwicVUo
-QWopIiwiQChxVSkiLCJ+KHFVLEtOKSIsIn4ocVVbQF0pIiwicVUoS04pIiwiS04oS04sS04pIiwiQChA
-LHFVKSIsImEyKHh1PHFVPikiXSxpbnRlcmNlcHRvcnNCeVRhZzpudWxsLGxlYWZUYWdzOm51bGx9Ckgu
-eGIodi50eXBlVW5pdmVyc2UsSlNPTi5wYXJzZSgneyJjNSI6Ik1GIiwiaUMiOiJNRiIsImtkIjoiTUYi
-LCJyeCI6ImVhIiwiZTUiOiJlYSIsIlkwIjoiZDUiLCJ0cCI6ImQ1IiwidjAiOiJldyIsIk1yIjoicUUi
-LCJlTCI6InFFIiwiSTAiOiJ1SCIsImhzIjoidUgiLCJYZyI6IlFGIiwieWMiOiJBaiIsInk0IjoidzYi
-LCJhUCI6IkNtIiwieGMiOiJueCIsImtKIjoibngiLCJ6VSI6IkRnIiwiZGYiOiJFVCIsInlFIjp7ImEy
-IjpbXX0sIllFIjp7ImM4IjpbXX0sIk1GIjp7InZtIjpbXSwiRUgiOltdfSwiamQiOnsiek0iOlsiMSJd
-LCJiUSI6WyIxIl0sImNYIjpbIjEiXX0sIlBvIjp7ImpkIjpbIjEiXSwiek0iOlsiMSJdLCJiUSI6WyIx
-Il0sImNYIjpbIjEiXX0sIm0xIjp7IkFuIjpbIjEiXX0sInFJIjp7IkNQIjpbXSwiRksiOltdfSwidXIi
-OnsiS04iOltdLCJDUCI6W10sIkZLIjpbXX0sIlZBIjp7IkNQIjpbXSwiRksiOltdfSwiRHIiOnsicVUi
-OltdLCJ2WCI6W119LCJxaiI6eyJSZSI6WyJLTiJdLCJsRCI6WyJLTiJdLCJ6TSI6WyJLTiJdLCJiUSI6
-WyJLTiJdLCJjWCI6WyJLTiJdLCJsRC5FIjoiS04iLCJSZS5FIjoiS04ifSwiYlEiOnsiY1giOlsiMSJd
-fSwiYUwiOnsiYlEiOlsiMSJdLCJjWCI6WyIxIl19LCJuSCI6eyJhTCI6WyIxIl0sImJRIjpbIjEiXSwi
-Y1giOlsiMSJdLCJhTC5FIjoiMSIsImNYLkUiOiIxIn0sImE3Ijp7IkFuIjpbIjEiXX0sImkxIjp7ImNY
-IjpbIjIiXSwiY1guRSI6IjIifSwieHkiOnsiaTEiOlsiMSIsIjIiXSwiYlEiOlsiMiJdLCJjWCI6WyIy
-Il0sImNYLkUiOiIyIn0sIk1IIjp7IkFuIjpbIjIiXX0sIkE4Ijp7ImFMIjpbIjIiXSwiYlEiOlsiMiJd
-LCJjWCI6WyIyIl0sImFMLkUiOiIyIiwiY1guRSI6IjIifSwiVTUiOnsiY1giOlsiMSJdLCJjWC5FIjoi
-MSJ9LCJTTyI6eyJBbiI6WyIxIl19LCJYQyI6eyJSZSI6WyIxIl0sImxEIjpbIjEiXSwiek0iOlsiMSJd
-LCJiUSI6WyIxIl0sImNYIjpbIjEiXX0sInd2Ijp7IkdEIjpbXX0sIlBEIjp7IkdqIjpbIjEiLCIyIl0s
-IlJVIjpbIjEiLCIyIl0sIlBuIjpbIjEiLCIyIl0sIktQIjpbIjEiLCIyIl0sIlowIjpbIjEiLCIyIl19
-LCJXVSI6eyJaMCI6WyIxIiwiMiJdfSwiTFAiOnsiV1UiOlsiMSIsIjIiXSwiWjAiOlsiMSIsIjIiXX0s
-IlhSIjp7ImNYIjpbIjEiXSwiY1guRSI6IjEifSwiTEkiOnsidlEiOltdfSwiVzAiOnsiWFMiOltdfSwi
-YXoiOnsiWFMiOltdfSwidlYiOnsiWFMiOltdfSwiWE8iOnsiR3oiOltdfSwiVHAiOnsiRUgiOltdfSwi
-bGMiOnsiRUgiOltdfSwiengiOnsiRUgiOltdfSwiclQiOnsiRUgiOltdfSwiRXEiOnsiWFMiOltdfSwi
-a1kiOnsiWFMiOltdfSwiTjUiOnsiRm8iOlsiMSIsIjIiXSwiWWsiOlsiMSIsIjIiXSwiWjAiOlsiMSIs
-IjIiXSwiWWsuSyI6IjEiLCJZay5WIjoiMiJ9LCJpNSI6eyJiUSI6WyIxIl0sImNYIjpbIjEiXSwiY1gu
-RSI6IjEifSwiTjYiOnsiQW4iOlsiMSJdfSwiVlIiOnsid0wiOltdLCJ2WCI6W119LCJFSyI6eyJpYiI6
-W10sIk9kIjpbXX0sIktXIjp7ImNYIjpbImliIl0sImNYLkUiOiJpYiJ9LCJQYiI6eyJBbiI6WyJpYiJd
-fSwidFEiOnsiT2QiOltdfSwidW4iOnsiY1giOlsiT2QiXSwiY1guRSI6Ik9kIn0sIlNkIjp7IkFuIjpb
-Ik9kIl19LCJFVCI6eyJBUyI6W119LCJiMCI6eyJYaiI6WyJAIl0sIkVUIjpbXSwiQVMiOltdfSwiRGci
-OnsibEQiOlsiQ1AiXSwiWGoiOlsiQCJdLCJ6TSI6WyJDUCJdLCJFVCI6W10sImJRIjpbIkNQIl0sIlNV
-IjpbIkNQIl0sIkFTIjpbXSwiY1giOlsiQ1AiXSwibEQuRSI6IkNQIn0sIlBnIjp7ImxEIjpbIktOIl0s
-InpNIjpbIktOIl0sIlhqIjpbIkAiXSwiRVQiOltdLCJiUSI6WyJLTiJdLCJTVSI6WyJLTiJdLCJBUyI6
-W10sImNYIjpbIktOIl19LCJ4aiI6eyJsRCI6WyJLTiJdLCJ6TSI6WyJLTiJdLCJYaiI6WyJAIl0sIkVU
-IjpbXSwiYlEiOlsiS04iXSwiU1UiOlsiS04iXSwiQVMiOltdLCJjWCI6WyJLTiJdLCJsRC5FIjoiS04i
-fSwiZEUiOnsibEQiOlsiS04iXSwiek0iOlsiS04iXSwiWGoiOlsiQCJdLCJFVCI6W10sImJRIjpbIktO
-Il0sIlNVIjpbIktOIl0sIkFTIjpbXSwiY1giOlsiS04iXSwibEQuRSI6IktOIn0sIlpBIjp7ImxEIjpb
-IktOIl0sInpNIjpbIktOIl0sIlhqIjpbIkAiXSwiRVQiOltdLCJiUSI6WyJLTiJdLCJTVSI6WyJLTiJd
-LCJBUyI6W10sImNYIjpbIktOIl0sImxELkUiOiJLTiJ9LCJ3ZiI6eyJsRCI6WyJLTiJdLCJ6TSI6WyJL
-TiJdLCJYaiI6WyJAIl0sIkVUIjpbXSwiYlEiOlsiS04iXSwiU1UiOlsiS04iXSwiQVMiOltdLCJjWCI6
-WyJLTiJdLCJsRC5FIjoiS04ifSwiUHEiOnsibEQiOlsiS04iXSwiek0iOlsiS04iXSwiWGoiOlsiQCJd
-LCJFVCI6W10sImJRIjpbIktOIl0sIlNVIjpbIktOIl0sIkFTIjpbXSwiY1giOlsiS04iXSwibEQuRSI6
-IktOIn0sImVFIjp7ImxEIjpbIktOIl0sInpNIjpbIktOIl0sIlhqIjpbIkAiXSwiRVQiOltdLCJiUSI6
-WyJLTiJdLCJTVSI6WyJLTiJdLCJBUyI6W10sImNYIjpbIktOIl0sImxELkUiOiJLTiJ9LCJWNiI6eyJu
-NiI6W10sImxEIjpbIktOIl0sInpNIjpbIktOIl0sIlhqIjpbIkAiXSwiRVQiOltdLCJiUSI6WyJLTiJd
-LCJTVSI6WyJLTiJdLCJBUyI6W10sImNYIjpbIktOIl0sImxELkUiOiJLTiJ9LCJ1OSI6eyJYUyI6W119
-LCJoeiI6eyJYUyI6W119LCJpTSI6eyJYUyI6W119LCJHViI6eyJBbiI6WyIxIl19LCJxNCI6eyJjWCI6
-WyIxIl0sImNYLkUiOiIxIn0sIlpmIjp7IlBmIjpbIjEiXX0sInZzIjp7ImI4IjpbIjEiXX0sIkN3Ijp7
-IlhTIjpbXX0sIm0wIjp7IkpCIjpbXX0sIkppIjp7IkpCIjpbXX0sImI2Ijp7Ilh2IjpbIjEiXSwieHUi
-OlsiMSJdLCJiUSI6WyIxIl0sImNYIjpbIjEiXX0sImxtIjp7IkFuIjpbIjEiXX0sIm1XIjp7ImNYIjpb
-IjEiXX0sIkxVIjp7ImxEIjpbIjEiXSwiek0iOlsiMSJdLCJiUSI6WyIxIl0sImNYIjpbIjEiXX0sImls
-Ijp7IllrIjpbIjEiLCIyIl0sIlowIjpbIjEiLCIyIl19LCJZayI6eyJaMCI6WyIxIiwiMiJdfSwiUG4i
-OnsiWjAiOlsiMSIsIjIiXX0sIkdqIjp7IlJVIjpbIjEiLCIyIl0sIlBuIjpbIjEiLCIyIl0sIktQIjpb
-IjEiLCIyIl0sIlowIjpbIjEiLCIyIl19LCJWaiI6eyJsZiI6WyIxIl0sInh1IjpbIjEiXSwiYlEiOlsi
-MSJdLCJjWCI6WyIxIl19LCJYdiI6eyJ4dSI6WyIxIl0sImJRIjpbIjEiXSwiY1giOlsiMSJdfSwidXci
-OnsiWWsiOlsicVUiLCJAIl0sIlowIjpbInFVIiwiQCJdLCJZay5LIjoicVUiLCJZay5WIjoiQCJ9LCJp
-OCI6eyJhTCI6WyJxVSJdLCJiUSI6WyJxVSJdLCJjWCI6WyJxVSJdLCJhTC5FIjoicVUiLCJjWC5FIjoi
-cVUifSwiQ1YiOnsiVWsiOlsiek08S04+IiwicVUiXSwiVWsuUyI6InpNPEtOPiJ9LCJVOCI6eyJ3SSI6
-WyJ6TTxLTj4iLCJxVSJdfSwiWmkiOnsiVWsiOlsicVUiLCJ6TTxLTj4iXX0sImJ5Ijp7IlVrIjpbImsi
-LCJxVSJdLCJVay5TIjoiayJ9LCJNeCI6eyJ3SSI6WyJxVSIsImsiXX0sInU1Ijp7IlVrIjpbInFVIiwi
-ek08S04+Il0sIlVrLlMiOiJxVSJ9LCJFMyI6eyJ3SSI6WyJxVSIsInpNPEtOPiJdfSwiR1kiOnsid0ki
-Olsiek08S04+IiwicVUiXX0sIkNQIjp7IkZLIjpbXX0sIkM2Ijp7IlhTIjpbXX0sIm4iOnsiWFMiOltd
-fSwidSI6eyJYUyI6W119LCJiSiI6eyJYUyI6W119LCJlWSI6eyJYUyI6W119LCJtcCI6eyJYUyI6W119
-LCJ1YiI6eyJYUyI6W119LCJkcyI6eyJYUyI6W119LCJsaiI6eyJYUyI6W119LCJVViI6eyJYUyI6W119
-LCJrNSI6eyJYUyI6W119LCJLWSI6eyJYUyI6W119LCJjIjp7IlhTIjpbXX0sIktOIjp7IkZLIjpbXX0s
-InpNIjp7ImJRIjpbIjEiXSwiY1giOlsiMSJdfSwiaWIiOnsiT2QiOltdfSwieHUiOnsiYlEiOlsiMSJd
-LCJjWCI6WyIxIl19LCJxVSI6eyJ2WCI6W119LCJSbiI6eyJCTCI6W119LCJEbiI6eyJpRCI6W119LCJV
-ZiI6eyJpRCI6W119LCJxZSI6eyJpRCI6W119LCJxRSI6eyJjdiI6W10sInVIIjpbXSwiRDAiOltdfSwi
-R2giOnsiY3YiOltdLCJ1SCI6W10sIkQwIjpbXX0sImZZIjp7ImN2IjpbXSwidUgiOltdLCJEMCI6W119
-LCJuQiI6eyJjdiI6W10sInVIIjpbXSwiRDAiOltdfSwiUVAiOnsiY3YiOltdLCJ1SCI6W10sIkQwIjpb
-XX0sIm54Ijp7InVIIjpbXSwiRDAiOltdfSwiUUYiOnsidUgiOltdLCJEMCI6W119LCJJQiI6eyJ0biI6
-WyJGSyJdfSwid3oiOnsibEQiOlsiMSJdLCJ6TSI6WyIxIl0sImJRIjpbIjEiXSwiY1giOlsiMSJdLCJs
-RC5FIjoiMSJ9LCJjdiI6eyJ1SCI6W10sIkQwIjpbXX0sIlQ1Ijp7IkF6IjpbXX0sImg0Ijp7ImN2Ijpb
-XSwidUgiOltdLCJEMCI6W119LCJWYiI6eyJ1SCI6W10sIkQwIjpbXX0sIk83Ijp7IkQwIjpbXX0sIndh
-Ijp7IkQwIjpbXX0sIkFqIjp7ImVhIjpbXX0sImU3Ijp7ImxEIjpbInVIIl0sInpNIjpbInVIIl0sImJR
-IjpbInVIIl0sImNYIjpbInVIIl0sImxELkUiOiJ1SCJ9LCJ1SCI6eyJEMCI6W119LCJCSCI6eyJHbSI6
-WyJ1SCJdLCJsRCI6WyJ1SCJdLCJ6TSI6WyJ1SCJdLCJYaiI6WyJ1SCJdLCJiUSI6WyJ1SCJdLCJjWCI6
-WyJ1SCJdLCJHbS5FIjoidUgiLCJsRC5FIjoidUgifSwiU04iOnsiY3YiOltdLCJ1SCI6W10sIkQwIjpb
-XX0sImV3Ijp7ImVhIjpbXX0sImxwIjp7ImN2IjpbXSwidUgiOltdLCJEMCI6W119LCJUYiI6eyJjdiI6
-W10sInVIIjpbXSwiRDAiOltdfSwiSXYiOnsiY3YiOltdLCJ1SCI6W10sIkQwIjpbXX0sIldQIjp7ImN2
-IjpbXSwidUgiOltdLCJEMCI6W119LCJ5WSI6eyJjdiI6W10sInVIIjpbXSwiRDAiOltdfSwidzYiOnsi
-ZWEiOltdfSwiSzUiOnsidjYiOltdLCJEMCI6W119LCJDbSI6eyJEMCI6W119LCJDUSI6eyJ1SCI6W10s
-IkQwIjpbXX0sInc0Ijp7InRuIjpbIkZLIl19LCJyaCI6eyJHbSI6WyJ1SCJdLCJsRCI6WyJ1SCJdLCJ6
-TSI6WyJ1SCJdLCJYaiI6WyJ1SCJdLCJiUSI6WyJ1SCJdLCJjWCI6WyJ1SCJdLCJHbS5FIjoidUgiLCJs
-RC5FIjoidUgifSwiY2YiOnsiWWsiOlsicVUiLCJxVSJdLCJaMCI6WyJxVSIsInFVIl19LCJpNyI6eyJZ
-ayI6WyJxVSIsInFVIl0sIlowIjpbInFVIiwicVUiXSwiWWsuSyI6InFVIiwiWWsuViI6InFVIn0sIlN5
-Ijp7IllrIjpbInFVIiwicVUiXSwiWjAiOlsicVUiLCJxVSJdLCJZay5LIjoicVUiLCJZay5WIjoicVUi
-fSwiSTQiOnsibGYiOlsicVUiXSwieHUiOlsicVUiXSwiYlEiOlsicVUiXSwiY1giOlsicVUiXX0sIlJP
-Ijp7InFoIjpbIjEiXX0sImV1Ijp7IlJPIjpbIjEiXSwicWgiOlsiMSJdfSwieEMiOnsiTU8iOlsiMSJd
-fSwiSlEiOnsia0YiOltdfSwidkQiOnsia0YiOltdfSwibTYiOnsia0YiOltdfSwiY3QiOnsia0YiOltd
-fSwiT3ciOnsia0YiOltdfSwiVzkiOnsiQW4iOlsiMSJdfSwiZFciOnsidjYiOltdLCJEMCI6W119LCJt
-ayI6eyJ5MCI6W119LCJLbyI6eyJvbiI6W119LCJBcyI6eyJsZiI6WyJxVSJdLCJ4dSI6WyJxVSJdLCJi
-USI6WyJxVSJdLCJjWCI6WyJxVSJdfSwicjciOnsiRTQiOltdfSwiVHoiOnsibEQiOlsiMSJdLCJ6TSI6
-WyIxIl0sImJRIjpbIjEiXSwiRTQiOltdLCJjWCI6WyIxIl0sImxELkUiOiIxIn0sIm5kIjp7ImQ1Ijpb
-XSwiY3YiOltdLCJ1SCI6W10sIkQwIjpbXX0sIktlIjp7ImxmIjpbInFVIl0sInh1IjpbInFVIl0sImJR
-IjpbInFVIl0sImNYIjpbInFVIl19LCJkNSI6eyJjdiI6W10sInVIIjpbXSwiRDAiOltdfSwibjYiOnsi
-ek0iOlsiS04iXSwiYlEiOlsiS04iXSwiQVMiOltdLCJjWCI6WyJLTiJdfSwiWEEiOnsia0YiOltdfSwi
-T0YiOnsiZnYiOltdfSwicnUiOnsiZnYiOltdfSwiSVYiOnsiZnYiOltdfX0nKSkKSC5GRih2LnR5cGVV
-bml2ZXJzZSxKU09OLnBhcnNlKCd7ImJRIjoxLCJYQyI6MSwiTU8iOjEsImtUIjoyLCJtVyI6MSwiTFUi
-OjEsImlsIjoyLCJWaiI6MSwiblkiOjEsIlRDIjoxLCJjbyI6MX0nKSkKdmFyIHU9KGZ1bmN0aW9uIHJ0
-aWkoKXt2YXIgdD1ILk4wCnJldHVybnticTp0KCJHaCIpLG46dCgiQ3ciKSxjUjp0KCJuQiIpLGQ6dCgi
-QXoiKSxpOnQoIlFQIiksZ0Y6dCgiUEQ8R0QsQD4iKSxndzp0KCJiUTxAPiIpLGg6dCgiY3YiKSxiVTp0
-KCJYUyIpLEI6dCgiZWEiKSx1OnQoIkQwIiksYzg6dCgiVDUiKSxaOnQoIkVIIiksYzp0KCJiODxAPiIp
-LHI6dCgiTzciKSxJOnQoIlNnIiksbzp0KCJ2USIpLGVoOnQoImNYPHVIPiIpLFg6dCgiY1g8cVU+Iiks
-Ujp0KCJjWDxAPiIpLGZBOnQoImpkPFNlPiIpLGdpOnQoImpkPGo4PiIpLGZoOnQoImpkPFpaPiIpLGs6
-dCgiamQ8a0Y+Iiksczp0KCJqZDxxVT4iKSxoaDp0KCJqZDx5RD4iKSxhSjp0KCJqZDx3Yj4iKSxtOnQo
-ImpkPEA+IiksdDp0KCJqZDxLTj4iKSxlSDp0KCJ2bSIpLGc6dCgiYzUiKSxhVTp0KCJYajxAPiIpLGFt
-OnQoIlR6PEA+IiksZW86dCgiTjU8R0QsQD4iKSx2OnQoIkU0IiksZHo6dCgiaEYiKSxmNDp0KCJ6TTxq
-OD4iKSxhOnQoInpNPHFVPiIpLGo6dCgiek08QD4iKSxMOnQoInpNPEtOPiIpLGFfOnQoInU4IiksUzp0
-KCJaMDxxVSxrPiIpLGY6dCgiWjA8cVUscVU+IiksYjp0KCJaMDxxVSxAPiIpLEc6dCgiWjA8QCxAPiIp
-LGR2OnQoIkE4PHFVLHFVPiIpLGRvOnQoIkE4PHFVLEA+IiksVjp0KCJBaiIpLGREOnQoIkVUIiksYm06
-dCgiVjYiKSxBOnQoInVIIiksZTp0KCJrRiIpLFA6dCgiYzgiKSxLOnQoImsiKSxwOnQoImV3IikscTp0
-KCJ0bjxGSz4iKSxmdjp0KCJ3TCIpLGF2OnQoIkpjIiksZXc6dCgibmQiKSxDOnQoInh1PHFVPiIpLGw6
-dCgiR3oiKSxOOnQoInFVIiksZEc6dCgicVUocVUpIiksZzc6dCgiZDUiKSxmbzp0KCJHRCIpLGFXOnQo
-InlZIiksdzp0KCJBUyIpLGdjOnQoIm42IiksYWs6dCgia2QiKSxXOnQoIkdqPHFVLHFVPiIpLEQ6dCgi
-aUQiKSxjYzp0KCJVNTxxVT4iKSxnNDp0KCJLNSIpLGNpOnQoInY2IiksZzI6dCgiQ20iKSxFOnQoIlpm
-PE83PiIpLGg5OnQoIkNRIiksYWM6dCgiZTciKSxROnQoImV1PEFqPiIpLFQ6dCgid3o8Y3Y+IikseDp0
-KCJGZTxALEA+IiksWTp0KCJ2czxPNz4iKSxfOnQoInZzPEA+IiksZko6dCgidnM8S04+IiksTzp0KCJK
-USIpLEo6dCgiYm4iKSxjSjp0KCJhMiIpLGFsOnQoImEyKGspIiksYkI6dCgiYTIocVUpIiksYmY6dCgi
-YTIoQCkiKSx6OnQoIkAiKSxmTzp0KCJAKCkiKSxVOnQoIkAoZWEpIikseTp0KCJAKGspIiksZXA6dCgi
-QChrLGspIiksRjp0KCJAKGssR3opIiksY2g6dCgiQCh4dTxxVT4pIiksZE86dCgiQChxVSkiKSxiODp0
-KCJAKEAsQCkiKSxlZzp0KCJLTiIpLEg6dCgifiIpLE06dCgifigpIiksYW46dCgifihldykiKSxlQTp0
-KCJ+KHFVLHFVKSIpLGNBOnQoIn4ocVUsQCkiKX19KSgpOyhmdW5jdGlvbiBjb25zdGFudHMoKXt2YXIg
-dD1odW5rSGVscGVycy5tYWtlQ29uc3RMaXN0CkMuUlk9Vy5RUC5wcm90b3R5cGUKQy5CWj1XLlZiLnBy
-b3RvdHlwZQpDLkR0PVcuTzcucHJvdG90eXBlCkMuT2s9Si52Qi5wcm90b3R5cGUKQy5ObT1KLmpkLnBy
-b3RvdHlwZQpDLmpuPUoudXIucHJvdG90eXBlCkMuQ0Q9Si5xSS5wcm90b3R5cGUKQy54Qj1KLkRyLnBy
-b3RvdHlwZQpDLkRHPUouYzUucHJvdG90eXBlCkMuRXg9Vy51OC5wcm90b3R5cGUKQy5MdD1XLlNOLnBy
-b3RvdHlwZQpDLlpRPUouaUMucHJvdG90eXBlCkMuSWU9Vy5UYi5wcm90b3R5cGUKQy52Qj1KLmtkLnBy
-b3RvdHlwZQpDLm9sPVcuSzUucHJvdG90eXBlCkMueTg9bmV3IFAuVTgoKQpDLmg5PW5ldyBQLkNWKCkK
-Qy5PND1mdW5jdGlvbiBnZXRUYWdGYWxsYmFjayhvKSB7CiAgdmFyIHMgPSBPYmplY3QucHJvdG90eXBl
-LnRvU3RyaW5nLmNhbGwobyk7CiAgcmV0dXJuIHMuc3Vic3RyaW5nKDgsIHMubGVuZ3RoIC0gMSk7Cn0K
-Qy5ZcT1mdW5jdGlvbigpIHsKICB2YXIgdG9TdHJpbmdGdW5jdGlvbiA9IE9iamVjdC5wcm90b3R5cGUu
-dG9TdHJpbmc7CiAgZnVuY3Rpb24gZ2V0VGFnKG8pIHsKICAgIHZhciBzID0gdG9TdHJpbmdGdW5jdGlv
-bi5jYWxsKG8pOwogICAgcmV0dXJuIHMuc3Vic3RyaW5nKDgsIHMubGVuZ3RoIC0gMSk7CiAgfQogIGZ1
-bmN0aW9uIGdldFVua25vd25UYWcob2JqZWN0LCB0YWcpIHsKICAgIGlmICgvXkhUTUxbQS1aXS4qRWxl
-bWVudCQvLnRlc3QodGFnKSkgewogICAgICB2YXIgbmFtZSA9IHRvU3RyaW5nRnVuY3Rpb24uY2FsbChv
-YmplY3QpOwogICAgICBpZiAobmFtZSA9PSAiW29iamVjdCBPYmplY3RdIikgcmV0dXJuIG51bGw7CiAg
-ICAgIHJldHVybiAiSFRNTEVsZW1lbnQiOwogICAgfQogIH0KICBmdW5jdGlvbiBnZXRVbmtub3duVGFn
-R2VuZXJpY0Jyb3dzZXIob2JqZWN0LCB0YWcpIHsKICAgIGlmIChzZWxmLkhUTUxFbGVtZW50ICYmIG9i
-amVjdCBpbnN0YW5jZW9mIEhUTUxFbGVtZW50KSByZXR1cm4gIkhUTUxFbGVtZW50IjsKICAgIHJldHVy
-biBnZXRVbmtub3duVGFnKG9iamVjdCwgdGFnKTsKICB9CiAgZnVuY3Rpb24gcHJvdG90eXBlRm9yVGFn
-KHRhZykgewogICAgaWYgKHR5cGVvZiB3aW5kb3cgPT0gInVuZGVmaW5lZCIpIHJldHVybiBudWxsOwog
-ICAgaWYgKHR5cGVvZiB3aW5kb3dbdGFnXSA9PSAidW5kZWZpbmVkIikgcmV0dXJuIG51bGw7CiAgICB2
-YXIgY29uc3RydWN0b3IgPSB3aW5kb3dbdGFnXTsKICAgIGlmICh0eXBlb2YgY29uc3RydWN0b3IgIT0g
-ImZ1bmN0aW9uIikgcmV0dXJuIG51bGw7CiAgICByZXR1cm4gY29uc3RydWN0b3IucHJvdG90eXBlOwog
-IH0KICBmdW5jdGlvbiBkaXNjcmltaW5hdG9yKHRhZykgeyByZXR1cm4gbnVsbDsgfQogIHZhciBpc0Jy
-b3dzZXIgPSB0eXBlb2YgbmF2aWdhdG9yID09ICJvYmplY3QiOwogIHJldHVybiB7CiAgICBnZXRUYWc6
-IGdldFRhZywKICAgIGdldFVua25vd25UYWc6IGlzQnJvd3NlciA/IGdldFVua25vd25UYWdHZW5lcmlj
-QnJvd3NlciA6IGdldFVua25vd25UYWcsCiAgICBwcm90b3R5cGVGb3JUYWc6IHByb3RvdHlwZUZvclRh
-ZywKICAgIGRpc2NyaW1pbmF0b3I6IGRpc2NyaW1pbmF0b3IgfTsKfQpDLndiPWZ1bmN0aW9uKGdldFRh
-Z0ZhbGxiYWNrKSB7CiAgcmV0dXJuIGZ1bmN0aW9uKGhvb2tzKSB7CiAgICBpZiAodHlwZW9mIG5hdmln
-YXRvciAhPSAib2JqZWN0IikgcmV0dXJuIGhvb2tzOwogICAgdmFyIHVhID0gbmF2aWdhdG9yLnVzZXJB
-Z2VudDsKICAgIGlmICh1YS5pbmRleE9mKCJEdW1wUmVuZGVyVHJlZSIpID49IDApIHJldHVybiBob29r
-czsKICAgIGlmICh1YS5pbmRleE9mKCJDaHJvbWUiKSA+PSAwKSB7CiAgICAgIGZ1bmN0aW9uIGNvbmZp
-cm0ocCkgewogICAgICAgIHJldHVybiB0eXBlb2Ygd2luZG93ID09ICJvYmplY3QiICYmIHdpbmRvd1tw
-XSAmJiB3aW5kb3dbcF0ubmFtZSA9PSBwOwogICAgICB9CiAgICAgIGlmIChjb25maXJtKCJXaW5kb3ci
-KSAmJiBjb25maXJtKCJIVE1MRWxlbWVudCIpKSByZXR1cm4gaG9va3M7CiAgICB9CiAgICBob29rcy5n
-ZXRUYWcgPSBnZXRUYWdGYWxsYmFjazsKICB9Owp9CkMuS1U9ZnVuY3Rpb24oaG9va3MpIHsKICBpZiAo
-dHlwZW9mIGRhcnRFeHBlcmltZW50YWxGaXh1cEdldFRhZyAhPSAiZnVuY3Rpb24iKSByZXR1cm4gaG9v
-a3M7CiAgaG9va3MuZ2V0VGFnID0gZGFydEV4cGVyaW1lbnRhbEZpeHVwR2V0VGFnKGhvb2tzLmdldFRh
-Zyk7Cn0KQy5mUT1mdW5jdGlvbihob29rcykgewogIHZhciBnZXRUYWcgPSBob29rcy5nZXRUYWc7CiAg
-dmFyIHByb3RvdHlwZUZvclRhZyA9IGhvb2tzLnByb3RvdHlwZUZvclRhZzsKICBmdW5jdGlvbiBnZXRU
-YWdGaXhlZChvKSB7CiAgICB2YXIgdGFnID0gZ2V0VGFnKG8pOwogICAgaWYgKHRhZyA9PSAiRG9jdW1l
-bnQiKSB7CiAgICAgIGlmICghIW8ueG1sVmVyc2lvbikgcmV0dXJuICIhRG9jdW1lbnQiOwogICAgICBy
-ZXR1cm4gIiFIVE1MRG9jdW1lbnQiOwogICAgfQogICAgcmV0dXJuIHRhZzsKICB9CiAgZnVuY3Rpb24g
-cHJvdG90eXBlRm9yVGFnRml4ZWQodGFnKSB7CiAgICBpZiAodGFnID09ICJEb2N1bWVudCIpIHJldHVy
-biBudWxsOwogICAgcmV0dXJuIHByb3RvdHlwZUZvclRhZyh0YWcpOwogIH0KICBob29rcy5nZXRUYWcg
-PSBnZXRUYWdGaXhlZDsKICBob29rcy5wcm90b3R5cGVGb3JUYWcgPSBwcm90b3R5cGVGb3JUYWdGaXhl
-ZDsKfQpDLmRrPWZ1bmN0aW9uKGhvb2tzKSB7CiAgdmFyIHVzZXJBZ2VudCA9IHR5cGVvZiBuYXZpZ2F0
-b3IgPT0gIm9iamVjdCIgPyBuYXZpZ2F0b3IudXNlckFnZW50IDogIiI7CiAgaWYgKHVzZXJBZ2VudC5p
-bmRleE9mKCJGaXJlZm94IikgPT0gLTEpIHJldHVybiBob29rczsKICB2YXIgZ2V0VGFnID0gaG9va3Mu
-Z2V0VGFnOwogIHZhciBxdWlja01hcCA9IHsKICAgICJCZWZvcmVVbmxvYWRFdmVudCI6ICJFdmVudCIs
-CiAgICAiRGF0YVRyYW5zZmVyIjogIkNsaXBib2FyZCIsCiAgICAiR2VvR2VvbG9jYXRpb24iOiAiR2Vv
-bG9jYXRpb24iLAogICAgIkxvY2F0aW9uIjogIiFMb2NhdGlvbiIsCiAgICAiV29ya2VyTWVzc2FnZUV2
-ZW50IjogIk1lc3NhZ2VFdmVudCIsCiAgICAiWE1MRG9jdW1lbnQiOiAiIURvY3VtZW50In07CiAgZnVu
-Y3Rpb24gZ2V0VGFnRmlyZWZveChvKSB7CiAgICB2YXIgdGFnID0gZ2V0VGFnKG8pOwogICAgcmV0dXJu
-IHF1aWNrTWFwW3RhZ10gfHwgdGFnOwogIH0KICBob29rcy5nZXRUYWcgPSBnZXRUYWdGaXJlZm94Owp9
-CkMueGk9ZnVuY3Rpb24oaG9va3MpIHsKICB2YXIgdXNlckFnZW50ID0gdHlwZW9mIG5hdmlnYXRvciA9
-PSAib2JqZWN0IiA/IG5hdmlnYXRvci51c2VyQWdlbnQgOiAiIjsKICBpZiAodXNlckFnZW50LmluZGV4
-T2YoIlRyaWRlbnQvIikgPT0gLTEpIHJldHVybiBob29rczsKICB2YXIgZ2V0VGFnID0gaG9va3MuZ2V0
-VGFnOwogIHZhciBxdWlja01hcCA9IHsKICAgICJCZWZvcmVVbmxvYWRFdmVudCI6ICJFdmVudCIsCiAg
-ICAiRGF0YVRyYW5zZmVyIjogIkNsaXBib2FyZCIsCiAgICAiSFRNTERERWxlbWVudCI6ICJIVE1MRWxl
-bWVudCIsCiAgICAiSFRNTERURWxlbWVudCI6ICJIVE1MRWxlbWVudCIsCiAgICAiSFRNTFBocmFzZUVs
-ZW1lbnQiOiAiSFRNTEVsZW1lbnQiLAogICAgIlBvc2l0aW9uIjogIkdlb3Bvc2l0aW9uIgogIH07CiAg
-ZnVuY3Rpb24gZ2V0VGFnSUUobykgewogICAgdmFyIHRhZyA9IGdldFRhZyhvKTsKICAgIHZhciBuZXdU
-YWcgPSBxdWlja01hcFt0YWddOwogICAgaWYgKG5ld1RhZykgcmV0dXJuIG5ld1RhZzsKICAgIGlmICh0
-YWcgPT0gIk9iamVjdCIpIHsKICAgICAgaWYgKHdpbmRvdy5EYXRhVmlldyAmJiAobyBpbnN0YW5jZW9m
-IHdpbmRvdy5EYXRhVmlldykpIHJldHVybiAiRGF0YVZpZXciOwogICAgfQogICAgcmV0dXJuIHRhZzsK
-ICB9CiAgZnVuY3Rpb24gcHJvdG90eXBlRm9yVGFnSUUodGFnKSB7CiAgICB2YXIgY29uc3RydWN0b3Ig
-PSB3aW5kb3dbdGFnXTsKICAgIGlmIChjb25zdHJ1Y3RvciA9PSBudWxsKSByZXR1cm4gbnVsbDsKICAg
-IHJldHVybiBjb25zdHJ1Y3Rvci5wcm90b3R5cGU7CiAgfQogIGhvb2tzLmdldFRhZyA9IGdldFRhZ0lF
-OwogIGhvb2tzLnByb3RvdHlwZUZvclRhZyA9IHByb3RvdHlwZUZvclRhZ0lFOwp9CkMuaTc9ZnVuY3Rp
-b24oaG9va3MpIHsgcmV0dXJuIGhvb2tzOyB9CgpDLkN0PW5ldyBQLmJ5KCkKQy5FcT1uZXcgUC5rNSgp
-CkMueE09bmV3IFAudTUoKQpDLlFrPW5ldyBQLkUzKCkKQy5OVT1uZXcgUC5KaSgpCkMuQTM9bmV3IFAu
-TXgobnVsbCkKQy5HYj1ILlZNKHQoWzEyNywyMDQ3LDY1NTM1LDExMTQxMTFdKSx1LnQpCkMuYWs9SC5W
-TSh0KFswLDAsMzI3NzYsMzM3OTIsMSwxMDI0MCwwLDBdKSx1LnQpCkMuY209SC5WTSh0KFsiKjo6Y2xh
-c3MiLCIqOjpkaXIiLCIqOjpkcmFnZ2FibGUiLCIqOjpoaWRkZW4iLCIqOjppZCIsIio6OmluZXJ0Iiwi
-Kjo6aXRlbXByb3AiLCIqOjppdGVtcmVmIiwiKjo6aXRlbXNjb3BlIiwiKjo6bGFuZyIsIio6OnNwZWxs
-Y2hlY2siLCIqOjp0aXRsZSIsIio6OnRyYW5zbGF0ZSIsIkE6OmFjY2Vzc2tleSIsIkE6OmNvb3JkcyIs
-IkE6OmhyZWZsYW5nIiwiQTo6bmFtZSIsIkE6OnNoYXBlIiwiQTo6dGFiaW5kZXgiLCJBOjp0YXJnZXQi
-LCJBOjp0eXBlIiwiQVJFQTo6YWNjZXNza2V5IiwiQVJFQTo6YWx0IiwiQVJFQTo6Y29vcmRzIiwiQVJF
-QTo6bm9ocmVmIiwiQVJFQTo6c2hhcGUiLCJBUkVBOjp0YWJpbmRleCIsIkFSRUE6OnRhcmdldCIsIkFV
-RElPOjpjb250cm9scyIsIkFVRElPOjpsb29wIiwiQVVESU86Om1lZGlhZ3JvdXAiLCJBVURJTzo6bXV0
-ZWQiLCJBVURJTzo6cHJlbG9hZCIsIkJETzo6ZGlyIiwiQk9EWTo6YWxpbmsiLCJCT0RZOjpiZ2NvbG9y
-IiwiQk9EWTo6bGluayIsIkJPRFk6OnRleHQiLCJCT0RZOjp2bGluayIsIkJSOjpjbGVhciIsIkJVVFRP
-Tjo6YWNjZXNza2V5IiwiQlVUVE9OOjpkaXNhYmxlZCIsIkJVVFRPTjo6bmFtZSIsIkJVVFRPTjo6dGFi
-aW5kZXgiLCJCVVRUT046OnR5cGUiLCJCVVRUT046OnZhbHVlIiwiQ0FOVkFTOjpoZWlnaHQiLCJDQU5W
-QVM6OndpZHRoIiwiQ0FQVElPTjo6YWxpZ24iLCJDT0w6OmFsaWduIiwiQ09MOjpjaGFyIiwiQ09MOjpj
-aGFyb2ZmIiwiQ09MOjpzcGFuIiwiQ09MOjp2YWxpZ24iLCJDT0w6OndpZHRoIiwiQ09MR1JPVVA6OmFs
-aWduIiwiQ09MR1JPVVA6OmNoYXIiLCJDT0xHUk9VUDo6Y2hhcm9mZiIsIkNPTEdST1VQOjpzcGFuIiwi
-Q09MR1JPVVA6OnZhbGlnbiIsIkNPTEdST1VQOjp3aWR0aCIsIkNPTU1BTkQ6OmNoZWNrZWQiLCJDT01N
-QU5EOjpjb21tYW5kIiwiQ09NTUFORDo6ZGlzYWJsZWQiLCJDT01NQU5EOjpsYWJlbCIsIkNPTU1BTkQ6
-OnJhZGlvZ3JvdXAiLCJDT01NQU5EOjp0eXBlIiwiREFUQTo6dmFsdWUiLCJERUw6OmRhdGV0aW1lIiwi
-REVUQUlMUzo6b3BlbiIsIkRJUjo6Y29tcGFjdCIsIkRJVjo6YWxpZ24iLCJETDo6Y29tcGFjdCIsIkZJ
-RUxEU0VUOjpkaXNhYmxlZCIsIkZPTlQ6OmNvbG9yIiwiRk9OVDo6ZmFjZSIsIkZPTlQ6OnNpemUiLCJG
-T1JNOjphY2NlcHQiLCJGT1JNOjphdXRvY29tcGxldGUiLCJGT1JNOjplbmN0eXBlIiwiRk9STTo6bWV0
-aG9kIiwiRk9STTo6bmFtZSIsIkZPUk06Om5vdmFsaWRhdGUiLCJGT1JNOjp0YXJnZXQiLCJGUkFNRTo6
-bmFtZSIsIkgxOjphbGlnbiIsIkgyOjphbGlnbiIsIkgzOjphbGlnbiIsIkg0OjphbGlnbiIsIkg1Ojph
-bGlnbiIsIkg2OjphbGlnbiIsIkhSOjphbGlnbiIsIkhSOjpub3NoYWRlIiwiSFI6OnNpemUiLCJIUjo6
-d2lkdGgiLCJIVE1MOjp2ZXJzaW9uIiwiSUZSQU1FOjphbGlnbiIsIklGUkFNRTo6ZnJhbWVib3JkZXIi
-LCJJRlJBTUU6OmhlaWdodCIsIklGUkFNRTo6bWFyZ2luaGVpZ2h0IiwiSUZSQU1FOjptYXJnaW53aWR0
-aCIsIklGUkFNRTo6d2lkdGgiLCJJTUc6OmFsaWduIiwiSU1HOjphbHQiLCJJTUc6OmJvcmRlciIsIklN
-Rzo6aGVpZ2h0IiwiSU1HOjpoc3BhY2UiLCJJTUc6OmlzbWFwIiwiSU1HOjpuYW1lIiwiSU1HOjp1c2Vt
-YXAiLCJJTUc6OnZzcGFjZSIsIklNRzo6d2lkdGgiLCJJTlBVVDo6YWNjZXB0IiwiSU5QVVQ6OmFjY2Vz
-c2tleSIsIklOUFVUOjphbGlnbiIsIklOUFVUOjphbHQiLCJJTlBVVDo6YXV0b2NvbXBsZXRlIiwiSU5Q
-VVQ6OmF1dG9mb2N1cyIsIklOUFVUOjpjaGVja2VkIiwiSU5QVVQ6OmRpc2FibGVkIiwiSU5QVVQ6Omlu
-cHV0bW9kZSIsIklOUFVUOjppc21hcCIsIklOUFVUOjpsaXN0IiwiSU5QVVQ6Om1heCIsIklOUFVUOjpt
-YXhsZW5ndGgiLCJJTlBVVDo6bWluIiwiSU5QVVQ6Om11bHRpcGxlIiwiSU5QVVQ6Om5hbWUiLCJJTlBV
-VDo6cGxhY2Vob2xkZXIiLCJJTlBVVDo6cmVhZG9ubHkiLCJJTlBVVDo6cmVxdWlyZWQiLCJJTlBVVDo6
-c2l6ZSIsIklOUFVUOjpzdGVwIiwiSU5QVVQ6OnRhYmluZGV4IiwiSU5QVVQ6OnR5cGUiLCJJTlBVVDo6
-dXNlbWFwIiwiSU5QVVQ6OnZhbHVlIiwiSU5TOjpkYXRldGltZSIsIktFWUdFTjo6ZGlzYWJsZWQiLCJL
-RVlHRU46OmtleXR5cGUiLCJLRVlHRU46Om5hbWUiLCJMQUJFTDo6YWNjZXNza2V5IiwiTEFCRUw6OmZv
-ciIsIkxFR0VORDo6YWNjZXNza2V5IiwiTEVHRU5EOjphbGlnbiIsIkxJOjp0eXBlIiwiTEk6OnZhbHVl
-IiwiTElOSzo6c2l6ZXMiLCJNQVA6Om5hbWUiLCJNRU5VOjpjb21wYWN0IiwiTUVOVTo6bGFiZWwiLCJN
-RU5VOjp0eXBlIiwiTUVURVI6OmhpZ2giLCJNRVRFUjo6bG93IiwiTUVURVI6Om1heCIsIk1FVEVSOjpt
-aW4iLCJNRVRFUjo6dmFsdWUiLCJPQkpFQ1Q6OnR5cGVtdXN0bWF0Y2giLCJPTDo6Y29tcGFjdCIsIk9M
-OjpyZXZlcnNlZCIsIk9MOjpzdGFydCIsIk9MOjp0eXBlIiwiT1BUR1JPVVA6OmRpc2FibGVkIiwiT1BU
-R1JPVVA6OmxhYmVsIiwiT1BUSU9OOjpkaXNhYmxlZCIsIk9QVElPTjo6bGFiZWwiLCJPUFRJT046OnNl
-bGVjdGVkIiwiT1BUSU9OOjp2YWx1ZSIsIk9VVFBVVDo6Zm9yIiwiT1VUUFVUOjpuYW1lIiwiUDo6YWxp
-Z24iLCJQUkU6OndpZHRoIiwiUFJPR1JFU1M6Om1heCIsIlBST0dSRVNTOjptaW4iLCJQUk9HUkVTUzo6
-dmFsdWUiLCJTRUxFQ1Q6OmF1dG9jb21wbGV0ZSIsIlNFTEVDVDo6ZGlzYWJsZWQiLCJTRUxFQ1Q6Om11
-bHRpcGxlIiwiU0VMRUNUOjpuYW1lIiwiU0VMRUNUOjpyZXF1aXJlZCIsIlNFTEVDVDo6c2l6ZSIsIlNF
-TEVDVDo6dGFiaW5kZXgiLCJTT1VSQ0U6OnR5cGUiLCJUQUJMRTo6YWxpZ24iLCJUQUJMRTo6Ymdjb2xv
-ciIsIlRBQkxFOjpib3JkZXIiLCJUQUJMRTo6Y2VsbHBhZGRpbmciLCJUQUJMRTo6Y2VsbHNwYWNpbmci
-LCJUQUJMRTo6ZnJhbWUiLCJUQUJMRTo6cnVsZXMiLCJUQUJMRTo6c3VtbWFyeSIsIlRBQkxFOjp3aWR0
-aCIsIlRCT0RZOjphbGlnbiIsIlRCT0RZOjpjaGFyIiwiVEJPRFk6OmNoYXJvZmYiLCJUQk9EWTo6dmFs
-aWduIiwiVEQ6OmFiYnIiLCJURDo6YWxpZ24iLCJURDo6YXhpcyIsIlREOjpiZ2NvbG9yIiwiVEQ6OmNo
-YXIiLCJURDo6Y2hhcm9mZiIsIlREOjpjb2xzcGFuIiwiVEQ6OmhlYWRlcnMiLCJURDo6aGVpZ2h0Iiwi
-VEQ6Om5vd3JhcCIsIlREOjpyb3dzcGFuIiwiVEQ6OnNjb3BlIiwiVEQ6OnZhbGlnbiIsIlREOjp3aWR0
-aCIsIlRFWFRBUkVBOjphY2Nlc3NrZXkiLCJURVhUQVJFQTo6YXV0b2NvbXBsZXRlIiwiVEVYVEFSRUE6
-OmNvbHMiLCJURVhUQVJFQTo6ZGlzYWJsZWQiLCJURVhUQVJFQTo6aW5wdXRtb2RlIiwiVEVYVEFSRUE6
-Om5hbWUiLCJURVhUQVJFQTo6cGxhY2Vob2xkZXIiLCJURVhUQVJFQTo6cmVhZG9ubHkiLCJURVhUQVJF
-QTo6cmVxdWlyZWQiLCJURVhUQVJFQTo6cm93cyIsIlRFWFRBUkVBOjp0YWJpbmRleCIsIlRFWFRBUkVB
-Ojp3cmFwIiwiVEZPT1Q6OmFsaWduIiwiVEZPT1Q6OmNoYXIiLCJURk9PVDo6Y2hhcm9mZiIsIlRGT09U
-Ojp2YWxpZ24iLCJUSDo6YWJiciIsIlRIOjphbGlnbiIsIlRIOjpheGlzIiwiVEg6OmJnY29sb3IiLCJU
-SDo6Y2hhciIsIlRIOjpjaGFyb2ZmIiwiVEg6OmNvbHNwYW4iLCJUSDo6aGVhZGVycyIsIlRIOjpoZWln
-aHQiLCJUSDo6bm93cmFwIiwiVEg6OnJvd3NwYW4iLCJUSDo6c2NvcGUiLCJUSDo6dmFsaWduIiwiVEg6
-OndpZHRoIiwiVEhFQUQ6OmFsaWduIiwiVEhFQUQ6OmNoYXIiLCJUSEVBRDo6Y2hhcm9mZiIsIlRIRUFE
-Ojp2YWxpZ24iLCJUUjo6YWxpZ24iLCJUUjo6Ymdjb2xvciIsIlRSOjpjaGFyIiwiVFI6OmNoYXJvZmYi
-LCJUUjo6dmFsaWduIiwiVFJBQ0s6OmRlZmF1bHQiLCJUUkFDSzo6a2luZCIsIlRSQUNLOjpsYWJlbCIs
-IlRSQUNLOjpzcmNsYW5nIiwiVUw6OmNvbXBhY3QiLCJVTDo6dHlwZSIsIlZJREVPOjpjb250cm9scyIs
-IlZJREVPOjpoZWlnaHQiLCJWSURFTzo6bG9vcCIsIlZJREVPOjptZWRpYWdyb3VwIiwiVklERU86Om11
-dGVkIiwiVklERU86OnByZWxvYWQiLCJWSURFTzo6d2lkdGgiXSksdS5zKQpDLlZDPUguVk0odChbMCww
-LDY1NDkwLDQ1MDU1LDY1NTM1LDM0ODE1LDY1NTM0LDE4NDMxXSksdS50KQpDLm1LPUguVk0odChbMCww
-LDI2NjI0LDEwMjMsNjU1MzQsMjA0Nyw2NTUzNCwyMDQ3XSksdS50KQpDLlNxPUguVk0odChbIkhFQUQi
-LCJBUkVBIiwiQkFTRSIsIkJBU0VGT05UIiwiQlIiLCJDT0wiLCJDT0xHUk9VUCIsIkVNQkVEIiwiRlJB
-TUUiLCJGUkFNRVNFVCIsIkhSIiwiSU1BR0UiLCJJTUciLCJJTlBVVCIsIklTSU5ERVgiLCJMSU5LIiwi
-TUVUQSIsIlBBUkFNIiwiU09VUkNFIiwiU1RZTEUiLCJUSVRMRSIsIldCUiJdKSx1LnMpCkMueEQ9SC5W
-TSh0KFtdKSx1LnMpCkMuZG49SC5WTSh0KFtdKSx1Lm0pCkMudG89SC5WTSh0KFswLDAsMzI3MjIsMTIy
-ODcsNjU1MzQsMzQ4MTUsNjU1MzQsMTg0MzFdKSx1LnQpCkMuRjM9SC5WTSh0KFswLDAsMjQ1NzYsMTAy
-Myw2NTUzNCwzNDgxNSw2NTUzNCwxODQzMV0pLHUudCkKQy5lYT1ILlZNKHQoWzAsMCwzMjc1NCwxMTI2
-Myw2NTUzNCwzNDgxNSw2NTUzNCwxODQzMV0pLHUudCkKQy5aSj1ILlZNKHQoWzAsMCwzMjcyMiwxMjI4
-Nyw2NTUzNSwzNDgxNSw2NTUzNCwxODQzMV0pLHUudCkKQy5XZD1ILlZNKHQoWzAsMCw2NTQ5MCwxMjI4
-Nyw2NTUzNSwzNDgxNSw2NTUzNCwxODQzMV0pLHUudCkKQy5ReD1ILlZNKHQoWyJiaW5kIiwiaWYiLCJy
-ZWYiLCJyZXBlYXQiLCJzeW50YXgiXSksdS5zKQpDLkJJPUguVk0odChbIkE6OmhyZWYiLCJBUkVBOjpo
-cmVmIiwiQkxPQ0tRVU9URTo6Y2l0ZSIsIkJPRFk6OmJhY2tncm91bmQiLCJDT01NQU5EOjppY29uIiwi
-REVMOjpjaXRlIiwiRk9STTo6YWN0aW9uIiwiSU1HOjpzcmMiLCJJTlBVVDo6c3JjIiwiSU5TOjpjaXRl
-IiwiUTo6Y2l0ZSIsIlZJREVPOjpwb3N0ZXIiXSksdS5zKQpDLkNNPW5ldyBILkxQKDAse30sQy54RCxI
-Lk4wKCJMUDxxVSx6TTxqOD4+IikpCkMuV089bmV3IEguTFAoMCx7fSxDLnhELEguTjAoIkxQPHFVLHFV
-PiIpKQpDLmhVPUguVk0odChbXSksSC5OMCgiamQ8R0Q+IikpCkMuRHg9bmV3IEguTFAoMCx7fSxDLmhV
-LEguTjAoIkxQPEdELEA+IikpCkMuWTI9bmV3IEwuTzkoIk5hdmlnYXRpb25UcmVlTm9kZVR5cGUuZGly
-ZWN0b3J5IikKQy5yZj1uZXcgTC5POSgiTmF2aWdhdGlvblRyZWVOb2RlVHlwZS5maWxlIikKQy5UZT1u
-ZXcgSC53digiY2FsbCIpCkMud1E9bmV3IFAuRnkobnVsbCwyKX0pKCk7KGZ1bmN0aW9uIHN0YXRpY0Zp
-ZWxkcygpeyQueWo9MAokLm1KPW51bGwKJC5QND1udWxsCiQuTkY9bnVsbAokLlRYPW51bGwKJC54Nz1u
-dWxsCiQubnc9bnVsbAokLnZ2PW51bGwKJC5Cdj1udWxsCiQuUzY9bnVsbAokLms4PW51bGwKJC5tZz1u
-dWxsCiQuVUQ9ITEKJC5YMz1DLk5VCiQueGc9W10KJC54bz1udWxsCiQuQk89bnVsbAokLmx0PW51bGwK
-JC5FVT1udWxsCiQub3I9UC5GbCh1Lk4sdS5aKQokLkk2PW51bGwKJC5GZj1udWxsfSkoKTsoZnVuY3Rp
-b24gbGF6eUluaXRpYWxpemVycygpe3ZhciB0PWh1bmtIZWxwZXJzLmxhenkKdCgkLCJmYSIsInciLGZ1
-bmN0aW9uKCl7cmV0dXJuIEguWWcoIl8kZGFydF9kYXJ0Q2xvc3VyZSIpfSkKdCgkLCJZMiIsIlVOIixm
-dW5jdGlvbigpe3JldHVybiBILllnKCJfJGRhcnRfanMiKX0pCnQoJCwiVTIiLCJTbiIsZnVuY3Rpb24o
-KXtyZXR1cm4gSC5jTShILlM3KHsKdG9TdHJpbmc6ZnVuY3Rpb24oKXtyZXR1cm4iJHJlY2VpdmVyJCJ9
-fSkpfSkKdCgkLCJ4cSIsImxxIixmdW5jdGlvbigpe3JldHVybiBILmNNKEguUzcoeyRtZXRob2QkOm51
-bGwsCnRvU3RyaW5nOmZ1bmN0aW9uKCl7cmV0dXJuIiRyZWNlaXZlciQifX0pKX0pCnQoJCwiUjEiLCJO
-OSIsZnVuY3Rpb24oKXtyZXR1cm4gSC5jTShILlM3KG51bGwpKX0pCnQoJCwiZk4iLCJpSSIsZnVuY3Rp
-b24oKXtyZXR1cm4gSC5jTShmdW5jdGlvbigpe3ZhciAkYXJndW1lbnRzRXhwciQ9JyRhcmd1bWVudHMk
-Jwp0cnl7bnVsbC4kbWV0aG9kJCgkYXJndW1lbnRzRXhwciQpfWNhdGNoKHMpe3JldHVybiBzLm1lc3Nh
-Z2V9fSgpKX0pCnQoJCwicWkiLCJLZiIsZnVuY3Rpb24oKXtyZXR1cm4gSC5jTShILlM3KHZvaWQgMCkp
-fSkKdCgkLCJyWiIsIlpoIixmdW5jdGlvbigpe3JldHVybiBILmNNKGZ1bmN0aW9uKCl7dmFyICRhcmd1
-bWVudHNFeHByJD0nJGFyZ3VtZW50cyQnCnRyeXsodm9pZCAwKS4kbWV0aG9kJCgkYXJndW1lbnRzRXhw
-ciQpfWNhdGNoKHMpe3JldHVybiBzLm1lc3NhZ2V9fSgpKX0pCnQoJCwia3EiLCJyTiIsZnVuY3Rpb24o
-KXtyZXR1cm4gSC5jTShILk1qKG51bGwpKX0pCnQoJCwidHQiLCJjMyIsZnVuY3Rpb24oKXtyZXR1cm4g
-SC5jTShmdW5jdGlvbigpe3RyeXtudWxsLiRtZXRob2QkfWNhdGNoKHMpe3JldHVybiBzLm1lc3NhZ2V9
-fSgpKX0pCnQoJCwiZHQiLCJISyIsZnVuY3Rpb24oKXtyZXR1cm4gSC5jTShILk1qKHZvaWQgMCkpfSkK
-dCgkLCJBNyIsInIxIixmdW5jdGlvbigpe3JldHVybiBILmNNKGZ1bmN0aW9uKCl7dHJ5eyh2b2lkIDAp
-LiRtZXRob2QkfWNhdGNoKHMpe3JldHVybiBzLm1lc3NhZ2V9fSgpKX0pCnQoJCwiV2MiLCJ1dCIsZnVu
-Y3Rpb24oKXtyZXR1cm4gUC5PaigpfSkKdCgkLCJraCIsInJmIixmdW5jdGlvbigpe3JldHVybiBQLldJ
-KCl9KQp0KCQsImJ0IiwiVjciLGZ1bmN0aW9uKCl7cmV0dXJuIEguRFEoSC5YRihILlZNKFstMiwtMiwt
-MiwtMiwtMiwtMiwtMiwtMiwtMiwtMiwtMiwtMiwtMiwtMiwtMiwtMiwtMiwtMiwtMiwtMiwtMiwtMiwt
-MiwtMiwtMiwtMiwtMiwtMiwtMiwtMiwtMiwtMiwtMiwtMiwtMiwtMiwtMiwtMSwtMiwtMiwtMiwtMiwt
-Miw2MiwtMiw2MiwtMiw2Myw1Miw1Myw1NCw1NSw1Niw1Nyw1OCw1OSw2MCw2MSwtMiwtMiwtMiwtMSwt
-MiwtMiwtMiwwLDEsMiwzLDQsNSw2LDcsOCw5LDEwLDExLDEyLDEzLDE0LDE1LDE2LDE3LDE4LDE5LDIw
-LDIxLDIyLDIzLDI0LDI1LC0yLC0yLC0yLC0yLDYzLC0yLDI2LDI3LDI4LDI5LDMwLDMxLDMyLDMzLDM0
-LDM1LDM2LDM3LDM4LDM5LDQwLDQxLDQyLDQzLDQ0LDQ1LDQ2LDQ3LDQ4LDQ5LDUwLDUxLC0yLC0yLC0y
-LC0yLC0yXSx1LnQpKSl9KQp0KCQsIk01Iiwid1EiLGZ1bmN0aW9uKCl7cmV0dXJuIHR5cGVvZiBwcm9j
-ZXNzIT0idW5kZWZpbmVkIiYmT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHByb2Nlc3MpPT0i
-W29iamVjdCBwcm9jZXNzXSImJnByb2Nlc3MucGxhdGZvcm09PSJ3aW4zMiJ9KQp0KCQsIm1mIiwiejQi
-LGZ1bmN0aW9uKCl7cmV0dXJuIFAubnUoIl5bXFwtXFwuMC05QS1aX2Eten5dKiQiKX0pCnQoJCwiSkci
-LCJ2WiIsZnVuY3Rpb24oKXtyZXR1cm4gUC51eCgpfSkKdCgkLCJTQyIsIkFOIixmdW5jdGlvbigpe3Jl
-dHVybiBQLnRNKFsiQSIsIkFCQlIiLCJBQ1JPTllNIiwiQUREUkVTUyIsIkFSRUEiLCJBUlRJQ0xFIiwi
-QVNJREUiLCJBVURJTyIsIkIiLCJCREkiLCJCRE8iLCJCSUciLCJCTE9DS1FVT1RFIiwiQlIiLCJCVVRU
-T04iLCJDQU5WQVMiLCJDQVBUSU9OIiwiQ0VOVEVSIiwiQ0lURSIsIkNPREUiLCJDT0wiLCJDT0xHUk9V
-UCIsIkNPTU1BTkQiLCJEQVRBIiwiREFUQUxJU1QiLCJERCIsIkRFTCIsIkRFVEFJTFMiLCJERk4iLCJE
-SVIiLCJESVYiLCJETCIsIkRUIiwiRU0iLCJGSUVMRFNFVCIsIkZJR0NBUFRJT04iLCJGSUdVUkUiLCJG
-T05UIiwiRk9PVEVSIiwiRk9STSIsIkgxIiwiSDIiLCJIMyIsIkg0IiwiSDUiLCJINiIsIkhFQURFUiIs
-IkhHUk9VUCIsIkhSIiwiSSIsIklGUkFNRSIsIklNRyIsIklOUFVUIiwiSU5TIiwiS0JEIiwiTEFCRUwi
-LCJMRUdFTkQiLCJMSSIsIk1BUCIsIk1BUksiLCJNRU5VIiwiTUVURVIiLCJOQVYiLCJOT0JSIiwiT0wi
-LCJPUFRHUk9VUCIsIk9QVElPTiIsIk9VVFBVVCIsIlAiLCJQUkUiLCJQUk9HUkVTUyIsIlEiLCJTIiwi
-U0FNUCIsIlNFQ1RJT04iLCJTRUxFQ1QiLCJTTUFMTCIsIlNPVVJDRSIsIlNQQU4iLCJTVFJJS0UiLCJT
-VFJPTkciLCJTVUIiLCJTVU1NQVJZIiwiU1VQIiwiVEFCTEUiLCJUQk9EWSIsIlREIiwiVEVYVEFSRUEi
-LCJURk9PVCIsIlRIIiwiVEhFQUQiLCJUSU1FIiwiVFIiLCJUUkFDSyIsIlRUIiwiVSIsIlVMIiwiVkFS
-IiwiVklERU8iLCJXQlIiXSx1Lk4pfSkKdCgkLCJYNCIsImhHIixmdW5jdGlvbigpe3JldHVybiBQLm51
-KCJeXFxTKyQiKX0pCnQoJCwid08iLCJvdyIsZnVuY3Rpb24oKXtyZXR1cm4gdS52LmIoUC5ORChzZWxm
-KSl9KQp0KCQsImt0IiwiUjgiLGZ1bmN0aW9uKCl7cmV0dXJuIEguWWcoIl8kZGFydF9kYXJ0T2JqZWN0
-Iil9KQp0KCQsImZLIiwia0kiLGZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uIERhcnRPYmplY3QoYSl7
-dGhpcy5vPWF9fSkKdCgkLCJxdCIsInpCIixmdW5jdGlvbigpe3JldHVybiBuZXcgVC5tUSgpfSkKdCgk
-LCJPbCIsIlVFIixmdW5jdGlvbigpe3JldHVybiBQLmhLKEMub2wuZ21XKFcueDMoKSkuaHJlZikuZ2hZ
-KCkucSgwLCJhdXRoVG9rZW4iKX0pCnQoJCwiaFQiLCJ5UCIsZnVuY3Rpb24oKXtyZXR1cm4gVy5acigp
-LnF1ZXJ5U2VsZWN0b3IoIi5lZGl0LWxpc3QgLnBhbmVsLWNvbnRlbnQiKX0pCnQoJCwiVzYiLCJoTCIs
-ZnVuY3Rpb24oKXtyZXR1cm4gVy5acigpLnF1ZXJ5U2VsZWN0b3IoIi5lZGl0LXBhbmVsIC5wYW5lbC1j
-b250ZW50Iil9KQp0KCQsIlRSIiwiRFciLGZ1bmN0aW9uKCl7cmV0dXJuIFcuWnIoKS5xdWVyeVNlbGVj
-dG9yKCJmb290ZXIiKX0pCnQoJCwiRVkiLCJmaSIsZnVuY3Rpb24oKXtyZXR1cm4gVy5acigpLnF1ZXJ5
-U2VsZWN0b3IoImhlYWRlciIpfSkKdCgkLCJhdiIsIkQ5IixmdW5jdGlvbigpe3JldHVybiBXLlpyKCku
-cXVlcnlTZWxlY3RvcigiI3VuaXQtbmFtZSIpfSkKdCgkLCJmZSIsIktHIixmdW5jdGlvbigpe3JldHVy
-biBuZXcgTC5YQSgpfSkKdCgkLCJtTSIsIm5VIixmdW5jdGlvbigpe3JldHVybiBuZXcgTS5sSSgkLkhr
-KCkpfSkKdCgkLCJ5ciIsImJEIixmdW5jdGlvbigpe3JldHVybiBuZXcgRS5PRihQLm51KCIvIiksUC5u
-dSgiW14vXSQiKSxQLm51KCJeLyIpKX0pCnQoJCwiTWsiLCJLayIsZnVuY3Rpb24oKXtyZXR1cm4gbmV3
-IEwuSVYoUC5udSgiWy9cXFxcXSIpLFAubnUoIlteL1xcXFxdJCIpLFAubnUoIl4oXFxcXFxcXFxbXlxc
-XFxdK1xcXFxbXlxcXFwvXSt8W2EtekEtWl06Wy9cXFxcXSkiKSxQLm51KCJeWy9cXFxcXSg/IVsvXFxc
-XF0pIikpfSkKdCgkLCJhayIsIkViIixmdW5jdGlvbigpe3JldHVybiBuZXcgRi5ydShQLm51KCIvIiks
-UC5udSgiKF5bYS16QS1aXVstKy5hLXpBLVpcXGRdKjovL3xbXi9dKSQiKSxQLm51KCJbYS16QS1aXVst
-Ky5hLXpBLVpcXGRdKjovL1teL10qIiksUC5udSgiXi8iKSl9KQp0KCQsImxzIiwiSGsiLGZ1bmN0aW9u
-KCl7cmV0dXJuIE8uUmgoKX0pfSkoKTsoZnVuY3Rpb24gbmF0aXZlU3VwcG9ydCgpeyFmdW5jdGlvbigp
-e3ZhciB0PWZ1bmN0aW9uKGEpe3ZhciBuPXt9Cm5bYV09MQpyZXR1cm4gT2JqZWN0LmtleXMoaHVua0hl
-bHBlcnMuY29udmVydFRvRmFzdE9iamVjdChuKSlbMF19CnYuZ2V0SXNvbGF0ZVRhZz1mdW5jdGlvbihh
-KXtyZXR1cm4gdCgiX19fZGFydF8iK2Erdi5pc29sYXRlVGFnKX0KdmFyIHM9Il9fX2RhcnRfaXNvbGF0
-ZV90YWdzXyIKdmFyIHI9T2JqZWN0W3NdfHwoT2JqZWN0W3NdPU9iamVjdC5jcmVhdGUobnVsbCkpCnZh
-ciBxPSJfWnhZeFgiCmZvcih2YXIgcD0wOztwKyspe3ZhciBvPXQocSsiXyIrcCsiXyIpCmlmKCEobyBp
-biByKSl7cltvXT0xCnYuaXNvbGF0ZVRhZz1vCmJyZWFrfX12LmRpc3BhdGNoUHJvcGVydHlOYW1lPXYu
-Z2V0SXNvbGF0ZVRhZygiZGlzcGF0Y2hfcmVjb3JkIil9KCkKaHVua0hlbHBlcnMuc2V0T3JVcGRhdGVJ
-bnRlcmNlcHRvcnNCeVRhZyh7RE9NRXJyb3I6Si52QixET01JbXBsZW1lbnRhdGlvbjpKLnZCLE1lZGlh
-RXJyb3I6Si52QixOYXZpZ2F0b3I6Si52QixOYXZpZ2F0b3JDb25jdXJyZW50SGFyZHdhcmU6Si52QixO
-YXZpZ2F0b3JVc2VyTWVkaWFFcnJvcjpKLnZCLE92ZXJjb25zdHJhaW5lZEVycm9yOkoudkIsUG9zaXRp
-b25FcnJvcjpKLnZCLFJhbmdlOkoudkIsU1FMRXJyb3I6Si52QixEYXRhVmlldzpILkVULEFycmF5QnVm
-ZmVyVmlldzpILkVULEZsb2F0MzJBcnJheTpILkRnLEZsb2F0NjRBcnJheTpILkRnLEludDE2QXJyYXk6
-SC54aixJbnQzMkFycmF5OkguZEUsSW50OEFycmF5OkguWkEsVWludDE2QXJyYXk6SC53ZixVaW50MzJB
-cnJheTpILlBxLFVpbnQ4Q2xhbXBlZEFycmF5OkguZUUsQ2FudmFzUGl4ZWxBcnJheTpILmVFLFVpbnQ4
-QXJyYXk6SC5WNixIVE1MQXVkaW9FbGVtZW50OlcucUUsSFRNTEJSRWxlbWVudDpXLnFFLEhUTUxCdXR0
-b25FbGVtZW50OlcucUUsSFRNTENhbnZhc0VsZW1lbnQ6Vy5xRSxIVE1MQ29udGVudEVsZW1lbnQ6Vy5x
-RSxIVE1MRExpc3RFbGVtZW50OlcucUUsSFRNTERhdGFFbGVtZW50OlcucUUsSFRNTERhdGFMaXN0RWxl
-bWVudDpXLnFFLEhUTUxEZXRhaWxzRWxlbWVudDpXLnFFLEhUTUxEaWFsb2dFbGVtZW50OlcucUUsSFRN
-TERpdkVsZW1lbnQ6Vy5xRSxIVE1MRW1iZWRFbGVtZW50OlcucUUsSFRNTEZpZWxkU2V0RWxlbWVudDpX
-LnFFLEhUTUxIUkVsZW1lbnQ6Vy5xRSxIVE1MSGVhZEVsZW1lbnQ6Vy5xRSxIVE1MSGVhZGluZ0VsZW1l
-bnQ6Vy5xRSxIVE1MSHRtbEVsZW1lbnQ6Vy5xRSxIVE1MSUZyYW1lRWxlbWVudDpXLnFFLEhUTUxJbWFn
-ZUVsZW1lbnQ6Vy5xRSxIVE1MSW5wdXRFbGVtZW50OlcucUUsSFRNTExJRWxlbWVudDpXLnFFLEhUTUxM
-YWJlbEVsZW1lbnQ6Vy5xRSxIVE1MTGVnZW5kRWxlbWVudDpXLnFFLEhUTUxMaW5rRWxlbWVudDpXLnFF
-LEhUTUxNYXBFbGVtZW50OlcucUUsSFRNTE1lZGlhRWxlbWVudDpXLnFFLEhUTUxNZW51RWxlbWVudDpX
-LnFFLEhUTUxNZXRhRWxlbWVudDpXLnFFLEhUTUxNZXRlckVsZW1lbnQ6Vy5xRSxIVE1MTW9kRWxlbWVu
-dDpXLnFFLEhUTUxPTGlzdEVsZW1lbnQ6Vy5xRSxIVE1MT2JqZWN0RWxlbWVudDpXLnFFLEhUTUxPcHRH
-cm91cEVsZW1lbnQ6Vy5xRSxIVE1MT3B0aW9uRWxlbWVudDpXLnFFLEhUTUxPdXRwdXRFbGVtZW50Olcu
-cUUsSFRNTFBhcmFtRWxlbWVudDpXLnFFLEhUTUxQaWN0dXJlRWxlbWVudDpXLnFFLEhUTUxQcmVFbGVt
-ZW50OlcucUUsSFRNTFByb2dyZXNzRWxlbWVudDpXLnFFLEhUTUxRdW90ZUVsZW1lbnQ6Vy5xRSxIVE1M
-U2NyaXB0RWxlbWVudDpXLnFFLEhUTUxTaGFkb3dFbGVtZW50OlcucUUsSFRNTFNsb3RFbGVtZW50Olcu
-cUUsSFRNTFNvdXJjZUVsZW1lbnQ6Vy5xRSxIVE1MU3BhbkVsZW1lbnQ6Vy5xRSxIVE1MU3R5bGVFbGVt
-ZW50OlcucUUsSFRNTFRhYmxlQ2FwdGlvbkVsZW1lbnQ6Vy5xRSxIVE1MVGFibGVDZWxsRWxlbWVudDpX
-LnFFLEhUTUxUYWJsZURhdGFDZWxsRWxlbWVudDpXLnFFLEhUTUxUYWJsZUhlYWRlckNlbGxFbGVtZW50
-OlcucUUsSFRNTFRhYmxlQ29sRWxlbWVudDpXLnFFLEhUTUxUZXh0QXJlYUVsZW1lbnQ6Vy5xRSxIVE1M
-VGltZUVsZW1lbnQ6Vy5xRSxIVE1MVGl0bGVFbGVtZW50OlcucUUsSFRNTFRyYWNrRWxlbWVudDpXLnFF
-LEhUTUxVTGlzdEVsZW1lbnQ6Vy5xRSxIVE1MVW5rbm93bkVsZW1lbnQ6Vy5xRSxIVE1MVmlkZW9FbGVt
-ZW50OlcucUUsSFRNTERpcmVjdG9yeUVsZW1lbnQ6Vy5xRSxIVE1MRm9udEVsZW1lbnQ6Vy5xRSxIVE1M
-RnJhbWVFbGVtZW50OlcucUUsSFRNTEZyYW1lU2V0RWxlbWVudDpXLnFFLEhUTUxNYXJxdWVlRWxlbWVu
-dDpXLnFFLEhUTUxFbGVtZW50OlcucUUsSFRNTEFuY2hvckVsZW1lbnQ6Vy5HaCxIVE1MQXJlYUVsZW1l
-bnQ6Vy5mWSxIVE1MQmFzZUVsZW1lbnQ6Vy5uQixCbG9iOlcuQXosSFRNTEJvZHlFbGVtZW50OlcuUVAs
-Q0RBVEFTZWN0aW9uOlcubngsQ2hhcmFjdGVyRGF0YTpXLm54LENvbW1lbnQ6Vy5ueCxQcm9jZXNzaW5n
-SW5zdHJ1Y3Rpb246Vy5ueCxUZXh0OlcubngsQ1NTU3R5bGVEZWNsYXJhdGlvbjpXLm9KLE1TU3R5bGVD
-U1NQcm9wZXJ0aWVzOlcub0osQ1NTMlByb3BlcnRpZXM6Vy5vSixYTUxEb2N1bWVudDpXLlFGLERvY3Vt
-ZW50OlcuUUYsRE9NRXhjZXB0aW9uOlcuTmgsRE9NUmVjdFJlYWRPbmx5OlcuSUIsRE9NVG9rZW5MaXN0
-OlcubjcsRWxlbWVudDpXLmN2LEFib3J0UGF5bWVudEV2ZW50OlcuZWEsQW5pbWF0aW9uRXZlbnQ6Vy5l
-YSxBbmltYXRpb25QbGF5YmFja0V2ZW50OlcuZWEsQXBwbGljYXRpb25DYWNoZUVycm9yRXZlbnQ6Vy5l
-YSxCYWNrZ3JvdW5kRmV0Y2hDbGlja0V2ZW50OlcuZWEsQmFja2dyb3VuZEZldGNoRXZlbnQ6Vy5lYSxC
-YWNrZ3JvdW5kRmV0Y2hGYWlsRXZlbnQ6Vy5lYSxCYWNrZ3JvdW5kRmV0Y2hlZEV2ZW50OlcuZWEsQmVm
-b3JlSW5zdGFsbFByb21wdEV2ZW50OlcuZWEsQmVmb3JlVW5sb2FkRXZlbnQ6Vy5lYSxCbG9iRXZlbnQ6
-Vy5lYSxDYW5NYWtlUGF5bWVudEV2ZW50OlcuZWEsQ2xpcGJvYXJkRXZlbnQ6Vy5lYSxDbG9zZUV2ZW50
-OlcuZWEsQ3VzdG9tRXZlbnQ6Vy5lYSxEZXZpY2VNb3Rpb25FdmVudDpXLmVhLERldmljZU9yaWVudGF0
-aW9uRXZlbnQ6Vy5lYSxFcnJvckV2ZW50OlcuZWEsRXh0ZW5kYWJsZUV2ZW50OlcuZWEsRXh0ZW5kYWJs
-ZU1lc3NhZ2VFdmVudDpXLmVhLEZldGNoRXZlbnQ6Vy5lYSxGb250RmFjZVNldExvYWRFdmVudDpXLmVh
-LEZvcmVpZ25GZXRjaEV2ZW50OlcuZWEsR2FtZXBhZEV2ZW50OlcuZWEsSGFzaENoYW5nZUV2ZW50Olcu
-ZWEsSW5zdGFsbEV2ZW50OlcuZWEsTWVkaWFFbmNyeXB0ZWRFdmVudDpXLmVhLE1lZGlhS2V5TWVzc2Fn
-ZUV2ZW50OlcuZWEsTWVkaWFRdWVyeUxpc3RFdmVudDpXLmVhLE1lZGlhU3RyZWFtRXZlbnQ6Vy5lYSxN
-ZWRpYVN0cmVhbVRyYWNrRXZlbnQ6Vy5lYSxNZXNzYWdlRXZlbnQ6Vy5lYSxNSURJQ29ubmVjdGlvbkV2
-ZW50OlcuZWEsTUlESU1lc3NhZ2VFdmVudDpXLmVhLE11dGF0aW9uRXZlbnQ6Vy5lYSxOb3RpZmljYXRp
-b25FdmVudDpXLmVhLFBhZ2VUcmFuc2l0aW9uRXZlbnQ6Vy5lYSxQYXltZW50UmVxdWVzdEV2ZW50Olcu
-ZWEsUGF5bWVudFJlcXVlc3RVcGRhdGVFdmVudDpXLmVhLFBvcFN0YXRlRXZlbnQ6Vy5lYSxQcmVzZW50
-YXRpb25Db25uZWN0aW9uQXZhaWxhYmxlRXZlbnQ6Vy5lYSxQcmVzZW50YXRpb25Db25uZWN0aW9uQ2xv
-c2VFdmVudDpXLmVhLFByb21pc2VSZWplY3Rpb25FdmVudDpXLmVhLFB1c2hFdmVudDpXLmVhLFJUQ0Rh
-dGFDaGFubmVsRXZlbnQ6Vy5lYSxSVENEVE1GVG9uZUNoYW5nZUV2ZW50OlcuZWEsUlRDUGVlckNvbm5l
-Y3Rpb25JY2VFdmVudDpXLmVhLFJUQ1RyYWNrRXZlbnQ6Vy5lYSxTZWN1cml0eVBvbGljeVZpb2xhdGlv
-bkV2ZW50OlcuZWEsU2Vuc29yRXJyb3JFdmVudDpXLmVhLFNwZWVjaFJlY29nbml0aW9uRXJyb3I6Vy5l
-YSxTcGVlY2hSZWNvZ25pdGlvbkV2ZW50OlcuZWEsU3BlZWNoU3ludGhlc2lzRXZlbnQ6Vy5lYSxTdG9y
-YWdlRXZlbnQ6Vy5lYSxTeW5jRXZlbnQ6Vy5lYSxUcmFja0V2ZW50OlcuZWEsVHJhbnNpdGlvbkV2ZW50
-OlcuZWEsV2ViS2l0VHJhbnNpdGlvbkV2ZW50OlcuZWEsVlJEZXZpY2VFdmVudDpXLmVhLFZSRGlzcGxh
-eUV2ZW50OlcuZWEsVlJTZXNzaW9uRXZlbnQ6Vy5lYSxNb2pvSW50ZXJmYWNlUmVxdWVzdEV2ZW50Olcu
-ZWEsVVNCQ29ubmVjdGlvbkV2ZW50OlcuZWEsSURCVmVyc2lvbkNoYW5nZUV2ZW50OlcuZWEsQXVkaW9Q
-cm9jZXNzaW5nRXZlbnQ6Vy5lYSxPZmZsaW5lQXVkaW9Db21wbGV0aW9uRXZlbnQ6Vy5lYSxXZWJHTENv
-bnRleHRFdmVudDpXLmVhLEV2ZW50OlcuZWEsSW5wdXRFdmVudDpXLmVhLEV2ZW50VGFyZ2V0OlcuRDAs
-RmlsZTpXLlQ1LEhUTUxGb3JtRWxlbWVudDpXLmg0LEhpc3Rvcnk6Vy5icixIVE1MRG9jdW1lbnQ6Vy5W
-YixYTUxIdHRwUmVxdWVzdDpXLk83LFhNTEh0dHBSZXF1ZXN0RXZlbnRUYXJnZXQ6Vy53YSxJbWFnZURh
-dGE6Vy5TZyxMb2NhdGlvbjpXLnU4LE1vdXNlRXZlbnQ6Vy5BaixEcmFnRXZlbnQ6Vy5BaixQb2ludGVy
-RXZlbnQ6Vy5BaixXaGVlbEV2ZW50OlcuQWosRG9jdW1lbnRGcmFnbWVudDpXLnVILFNoYWRvd1Jvb3Q6
-Vy51SCxEb2N1bWVudFR5cGU6Vy51SCxOb2RlOlcudUgsTm9kZUxpc3Q6Vy5CSCxSYWRpb05vZGVMaXN0
-OlcuQkgsSFRNTFBhcmFncmFwaEVsZW1lbnQ6Vy5TTixQcm9ncmVzc0V2ZW50OlcuZXcsUmVzb3VyY2VQ
-cm9ncmVzc0V2ZW50OlcuZXcsSFRNTFNlbGVjdEVsZW1lbnQ6Vy5scCxIVE1MVGFibGVFbGVtZW50Olcu
-VGIsSFRNTFRhYmxlUm93RWxlbWVudDpXLkl2LEhUTUxUYWJsZVNlY3Rpb25FbGVtZW50OlcuV1AsSFRN
-TFRlbXBsYXRlRWxlbWVudDpXLnlZLENvbXBvc2l0aW9uRXZlbnQ6Vy53NixGb2N1c0V2ZW50OlcudzYs
-S2V5Ym9hcmRFdmVudDpXLnc2LFRleHRFdmVudDpXLnc2LFRvdWNoRXZlbnQ6Vy53NixVSUV2ZW50Olcu
-dzYsV2luZG93OlcuSzUsRE9NV2luZG93OlcuSzUsRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGU6Vy5D
-bSxTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU6Vy5DbSxTaGFyZWRXb3JrZXJHbG9iYWxTY29wZTpXLkNt
-LFdvcmtlckdsb2JhbFNjb3BlOlcuQ20sQXR0cjpXLkNRLENsaWVudFJlY3Q6Vy53NCxET01SZWN0Olcu
-dzQsTmFtZWROb2RlTWFwOlcucmgsTW96TmFtZWRBdHRyTWFwOlcucmgsSURCS2V5UmFuZ2U6UC5oRixT
-VkdTY3JpcHRFbGVtZW50OlAubmQsU1ZHQUVsZW1lbnQ6UC5kNSxTVkdBbmltYXRlRWxlbWVudDpQLmQ1
-LFNWR0FuaW1hdGVNb3Rpb25FbGVtZW50OlAuZDUsU1ZHQW5pbWF0ZVRyYW5zZm9ybUVsZW1lbnQ6UC5k
-NSxTVkdBbmltYXRpb25FbGVtZW50OlAuZDUsU1ZHQ2lyY2xlRWxlbWVudDpQLmQ1LFNWR0NsaXBQYXRo
-RWxlbWVudDpQLmQ1LFNWR0RlZnNFbGVtZW50OlAuZDUsU1ZHRGVzY0VsZW1lbnQ6UC5kNSxTVkdEaXNj
-YXJkRWxlbWVudDpQLmQ1LFNWR0VsbGlwc2VFbGVtZW50OlAuZDUsU1ZHRkVCbGVuZEVsZW1lbnQ6UC5k
-NSxTVkdGRUNvbG9yTWF0cml4RWxlbWVudDpQLmQ1LFNWR0ZFQ29tcG9uZW50VHJhbnNmZXJFbGVtZW50
-OlAuZDUsU1ZHRkVDb21wb3NpdGVFbGVtZW50OlAuZDUsU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQ6
-UC5kNSxTVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQ6UC5kNSxTVkdGRURpc3BsYWNlbWVudE1hcEVs
-ZW1lbnQ6UC5kNSxTVkdGRURpc3RhbnRMaWdodEVsZW1lbnQ6UC5kNSxTVkdGRUZsb29kRWxlbWVudDpQ
-LmQ1LFNWR0ZFRnVuY0FFbGVtZW50OlAuZDUsU1ZHRkVGdW5jQkVsZW1lbnQ6UC5kNSxTVkdGRUZ1bmNH
-RWxlbWVudDpQLmQ1LFNWR0ZFRnVuY1JFbGVtZW50OlAuZDUsU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50
-OlAuZDUsU1ZHRkVJbWFnZUVsZW1lbnQ6UC5kNSxTVkdGRU1lcmdlRWxlbWVudDpQLmQ1LFNWR0ZFTWVy
-Z2VOb2RlRWxlbWVudDpQLmQ1LFNWR0ZFTW9ycGhvbG9neUVsZW1lbnQ6UC5kNSxTVkdGRU9mZnNldEVs
-ZW1lbnQ6UC5kNSxTVkdGRVBvaW50TGlnaHRFbGVtZW50OlAuZDUsU1ZHRkVTcGVjdWxhckxpZ2h0aW5n
-RWxlbWVudDpQLmQ1LFNWR0ZFU3BvdExpZ2h0RWxlbWVudDpQLmQ1LFNWR0ZFVGlsZUVsZW1lbnQ6UC5k
-NSxTVkdGRVR1cmJ1bGVuY2VFbGVtZW50OlAuZDUsU1ZHRmlsdGVyRWxlbWVudDpQLmQ1LFNWR0ZvcmVp
-Z25PYmplY3RFbGVtZW50OlAuZDUsU1ZHR0VsZW1lbnQ6UC5kNSxTVkdHZW9tZXRyeUVsZW1lbnQ6UC5k
-NSxTVkdHcmFwaGljc0VsZW1lbnQ6UC5kNSxTVkdJbWFnZUVsZW1lbnQ6UC5kNSxTVkdMaW5lRWxlbWVu
-dDpQLmQ1LFNWR0xpbmVhckdyYWRpZW50RWxlbWVudDpQLmQ1LFNWR01hcmtlckVsZW1lbnQ6UC5kNSxT
-VkdNYXNrRWxlbWVudDpQLmQ1LFNWR01ldGFkYXRhRWxlbWVudDpQLmQ1LFNWR1BhdGhFbGVtZW50OlAu
-ZDUsU1ZHUGF0dGVybkVsZW1lbnQ6UC5kNSxTVkdQb2x5Z29uRWxlbWVudDpQLmQ1LFNWR1BvbHlsaW5l
-RWxlbWVudDpQLmQ1LFNWR1JhZGlhbEdyYWRpZW50RWxlbWVudDpQLmQ1LFNWR1JlY3RFbGVtZW50OlAu
-ZDUsU1ZHU2V0RWxlbWVudDpQLmQ1LFNWR1N0b3BFbGVtZW50OlAuZDUsU1ZHU3R5bGVFbGVtZW50OlAu
-ZDUsU1ZHU1ZHRWxlbWVudDpQLmQ1LFNWR1N3aXRjaEVsZW1lbnQ6UC5kNSxTVkdTeW1ib2xFbGVtZW50
-OlAuZDUsU1ZHVFNwYW5FbGVtZW50OlAuZDUsU1ZHVGV4dENvbnRlbnRFbGVtZW50OlAuZDUsU1ZHVGV4
-dEVsZW1lbnQ6UC5kNSxTVkdUZXh0UGF0aEVsZW1lbnQ6UC5kNSxTVkdUZXh0UG9zaXRpb25pbmdFbGVt
-ZW50OlAuZDUsU1ZHVGl0bGVFbGVtZW50OlAuZDUsU1ZHVXNlRWxlbWVudDpQLmQ1LFNWR1ZpZXdFbGVt
-ZW50OlAuZDUsU1ZHR3JhZGllbnRFbGVtZW50OlAuZDUsU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlv
-bkVsZW1lbnQ6UC5kNSxTVkdGRURyb3BTaGFkb3dFbGVtZW50OlAuZDUsU1ZHTVBhdGhFbGVtZW50OlAu
-ZDUsU1ZHRWxlbWVudDpQLmQ1fSkKaHVua0hlbHBlcnMuc2V0T3JVcGRhdGVMZWFmVGFncyh7RE9NRXJy
-b3I6dHJ1ZSxET01JbXBsZW1lbnRhdGlvbjp0cnVlLE1lZGlhRXJyb3I6dHJ1ZSxOYXZpZ2F0b3I6dHJ1
-ZSxOYXZpZ2F0b3JDb25jdXJyZW50SGFyZHdhcmU6dHJ1ZSxOYXZpZ2F0b3JVc2VyTWVkaWFFcnJvcjp0
-cnVlLE92ZXJjb25zdHJhaW5lZEVycm9yOnRydWUsUG9zaXRpb25FcnJvcjp0cnVlLFJhbmdlOnRydWUs
-U1FMRXJyb3I6dHJ1ZSxEYXRhVmlldzp0cnVlLEFycmF5QnVmZmVyVmlldzpmYWxzZSxGbG9hdDMyQXJy
-YXk6dHJ1ZSxGbG9hdDY0QXJyYXk6dHJ1ZSxJbnQxNkFycmF5OnRydWUsSW50MzJBcnJheTp0cnVlLElu
-dDhBcnJheTp0cnVlLFVpbnQxNkFycmF5OnRydWUsVWludDMyQXJyYXk6dHJ1ZSxVaW50OENsYW1wZWRB
-cnJheTp0cnVlLENhbnZhc1BpeGVsQXJyYXk6dHJ1ZSxVaW50OEFycmF5OmZhbHNlLEhUTUxBdWRpb0Vs
-ZW1lbnQ6dHJ1ZSxIVE1MQlJFbGVtZW50OnRydWUsSFRNTEJ1dHRvbkVsZW1lbnQ6dHJ1ZSxIVE1MQ2Fu
-dmFzRWxlbWVudDp0cnVlLEhUTUxDb250ZW50RWxlbWVudDp0cnVlLEhUTUxETGlzdEVsZW1lbnQ6dHJ1
-ZSxIVE1MRGF0YUVsZW1lbnQ6dHJ1ZSxIVE1MRGF0YUxpc3RFbGVtZW50OnRydWUsSFRNTERldGFpbHNF
-bGVtZW50OnRydWUsSFRNTERpYWxvZ0VsZW1lbnQ6dHJ1ZSxIVE1MRGl2RWxlbWVudDp0cnVlLEhUTUxF
-bWJlZEVsZW1lbnQ6dHJ1ZSxIVE1MRmllbGRTZXRFbGVtZW50OnRydWUsSFRNTEhSRWxlbWVudDp0cnVl
-LEhUTUxIZWFkRWxlbWVudDp0cnVlLEhUTUxIZWFkaW5nRWxlbWVudDp0cnVlLEhUTUxIdG1sRWxlbWVu
-dDp0cnVlLEhUTUxJRnJhbWVFbGVtZW50OnRydWUsSFRNTEltYWdlRWxlbWVudDp0cnVlLEhUTUxJbnB1
-dEVsZW1lbnQ6dHJ1ZSxIVE1MTElFbGVtZW50OnRydWUsSFRNTExhYmVsRWxlbWVudDp0cnVlLEhUTUxM
-ZWdlbmRFbGVtZW50OnRydWUsSFRNTExpbmtFbGVtZW50OnRydWUsSFRNTE1hcEVsZW1lbnQ6dHJ1ZSxI
-VE1MTWVkaWFFbGVtZW50OnRydWUsSFRNTE1lbnVFbGVtZW50OnRydWUsSFRNTE1ldGFFbGVtZW50OnRy
-dWUsSFRNTE1ldGVyRWxlbWVudDp0cnVlLEhUTUxNb2RFbGVtZW50OnRydWUsSFRNTE9MaXN0RWxlbWVu
-dDp0cnVlLEhUTUxPYmplY3RFbGVtZW50OnRydWUsSFRNTE9wdEdyb3VwRWxlbWVudDp0cnVlLEhUTUxP
-cHRpb25FbGVtZW50OnRydWUsSFRNTE91dHB1dEVsZW1lbnQ6dHJ1ZSxIVE1MUGFyYW1FbGVtZW50OnRy
-dWUsSFRNTFBpY3R1cmVFbGVtZW50OnRydWUsSFRNTFByZUVsZW1lbnQ6dHJ1ZSxIVE1MUHJvZ3Jlc3NF
-bGVtZW50OnRydWUsSFRNTFF1b3RlRWxlbWVudDp0cnVlLEhUTUxTY3JpcHRFbGVtZW50OnRydWUsSFRN
-TFNoYWRvd0VsZW1lbnQ6dHJ1ZSxIVE1MU2xvdEVsZW1lbnQ6dHJ1ZSxIVE1MU291cmNlRWxlbWVudDp0
-cnVlLEhUTUxTcGFuRWxlbWVudDp0cnVlLEhUTUxTdHlsZUVsZW1lbnQ6dHJ1ZSxIVE1MVGFibGVDYXB0
-aW9uRWxlbWVudDp0cnVlLEhUTUxUYWJsZUNlbGxFbGVtZW50OnRydWUsSFRNTFRhYmxlRGF0YUNlbGxF
-bGVtZW50OnRydWUsSFRNTFRhYmxlSGVhZGVyQ2VsbEVsZW1lbnQ6dHJ1ZSxIVE1MVGFibGVDb2xFbGVt
-ZW50OnRydWUsSFRNTFRleHRBcmVhRWxlbWVudDp0cnVlLEhUTUxUaW1lRWxlbWVudDp0cnVlLEhUTUxU
-aXRsZUVsZW1lbnQ6dHJ1ZSxIVE1MVHJhY2tFbGVtZW50OnRydWUsSFRNTFVMaXN0RWxlbWVudDp0cnVl
-LEhUTUxVbmtub3duRWxlbWVudDp0cnVlLEhUTUxWaWRlb0VsZW1lbnQ6dHJ1ZSxIVE1MRGlyZWN0b3J5
-RWxlbWVudDp0cnVlLEhUTUxGb250RWxlbWVudDp0cnVlLEhUTUxGcmFtZUVsZW1lbnQ6dHJ1ZSxIVE1M
-RnJhbWVTZXRFbGVtZW50OnRydWUsSFRNTE1hcnF1ZWVFbGVtZW50OnRydWUsSFRNTEVsZW1lbnQ6ZmFs
-c2UsSFRNTEFuY2hvckVsZW1lbnQ6dHJ1ZSxIVE1MQXJlYUVsZW1lbnQ6dHJ1ZSxIVE1MQmFzZUVsZW1l
-bnQ6dHJ1ZSxCbG9iOmZhbHNlLEhUTUxCb2R5RWxlbWVudDp0cnVlLENEQVRBU2VjdGlvbjp0cnVlLENo
-YXJhY3RlckRhdGE6dHJ1ZSxDb21tZW50OnRydWUsUHJvY2Vzc2luZ0luc3RydWN0aW9uOnRydWUsVGV4
-dDp0cnVlLENTU1N0eWxlRGVjbGFyYXRpb246dHJ1ZSxNU1N0eWxlQ1NTUHJvcGVydGllczp0cnVlLENT
-UzJQcm9wZXJ0aWVzOnRydWUsWE1MRG9jdW1lbnQ6dHJ1ZSxEb2N1bWVudDpmYWxzZSxET01FeGNlcHRp
-b246dHJ1ZSxET01SZWN0UmVhZE9ubHk6ZmFsc2UsRE9NVG9rZW5MaXN0OnRydWUsRWxlbWVudDpmYWxz
-ZSxBYm9ydFBheW1lbnRFdmVudDp0cnVlLEFuaW1hdGlvbkV2ZW50OnRydWUsQW5pbWF0aW9uUGxheWJh
-Y2tFdmVudDp0cnVlLEFwcGxpY2F0aW9uQ2FjaGVFcnJvckV2ZW50OnRydWUsQmFja2dyb3VuZEZldGNo
-Q2xpY2tFdmVudDp0cnVlLEJhY2tncm91bmRGZXRjaEV2ZW50OnRydWUsQmFja2dyb3VuZEZldGNoRmFp
-bEV2ZW50OnRydWUsQmFja2dyb3VuZEZldGNoZWRFdmVudDp0cnVlLEJlZm9yZUluc3RhbGxQcm9tcHRF
-dmVudDp0cnVlLEJlZm9yZVVubG9hZEV2ZW50OnRydWUsQmxvYkV2ZW50OnRydWUsQ2FuTWFrZVBheW1l
-bnRFdmVudDp0cnVlLENsaXBib2FyZEV2ZW50OnRydWUsQ2xvc2VFdmVudDp0cnVlLEN1c3RvbUV2ZW50
-OnRydWUsRGV2aWNlTW90aW9uRXZlbnQ6dHJ1ZSxEZXZpY2VPcmllbnRhdGlvbkV2ZW50OnRydWUsRXJy
-b3JFdmVudDp0cnVlLEV4dGVuZGFibGVFdmVudDp0cnVlLEV4dGVuZGFibGVNZXNzYWdlRXZlbnQ6dHJ1
-ZSxGZXRjaEV2ZW50OnRydWUsRm9udEZhY2VTZXRMb2FkRXZlbnQ6dHJ1ZSxGb3JlaWduRmV0Y2hFdmVu
-dDp0cnVlLEdhbWVwYWRFdmVudDp0cnVlLEhhc2hDaGFuZ2VFdmVudDp0cnVlLEluc3RhbGxFdmVudDp0
-cnVlLE1lZGlhRW5jcnlwdGVkRXZlbnQ6dHJ1ZSxNZWRpYUtleU1lc3NhZ2VFdmVudDp0cnVlLE1lZGlh
-UXVlcnlMaXN0RXZlbnQ6dHJ1ZSxNZWRpYVN0cmVhbUV2ZW50OnRydWUsTWVkaWFTdHJlYW1UcmFja0V2
-ZW50OnRydWUsTWVzc2FnZUV2ZW50OnRydWUsTUlESUNvbm5lY3Rpb25FdmVudDp0cnVlLE1JRElNZXNz
-YWdlRXZlbnQ6dHJ1ZSxNdXRhdGlvbkV2ZW50OnRydWUsTm90aWZpY2F0aW9uRXZlbnQ6dHJ1ZSxQYWdl
-VHJhbnNpdGlvbkV2ZW50OnRydWUsUGF5bWVudFJlcXVlc3RFdmVudDp0cnVlLFBheW1lbnRSZXF1ZXN0
-VXBkYXRlRXZlbnQ6dHJ1ZSxQb3BTdGF0ZUV2ZW50OnRydWUsUHJlc2VudGF0aW9uQ29ubmVjdGlvbkF2
-YWlsYWJsZUV2ZW50OnRydWUsUHJlc2VudGF0aW9uQ29ubmVjdGlvbkNsb3NlRXZlbnQ6dHJ1ZSxQcm9t
-aXNlUmVqZWN0aW9uRXZlbnQ6dHJ1ZSxQdXNoRXZlbnQ6dHJ1ZSxSVENEYXRhQ2hhbm5lbEV2ZW50OnRy
-dWUsUlRDRFRNRlRvbmVDaGFuZ2VFdmVudDp0cnVlLFJUQ1BlZXJDb25uZWN0aW9uSWNlRXZlbnQ6dHJ1
-ZSxSVENUcmFja0V2ZW50OnRydWUsU2VjdXJpdHlQb2xpY3lWaW9sYXRpb25FdmVudDp0cnVlLFNlbnNv
-ckVycm9yRXZlbnQ6dHJ1ZSxTcGVlY2hSZWNvZ25pdGlvbkVycm9yOnRydWUsU3BlZWNoUmVjb2duaXRp
-b25FdmVudDp0cnVlLFNwZWVjaFN5bnRoZXNpc0V2ZW50OnRydWUsU3RvcmFnZUV2ZW50OnRydWUsU3lu
-Y0V2ZW50OnRydWUsVHJhY2tFdmVudDp0cnVlLFRyYW5zaXRpb25FdmVudDp0cnVlLFdlYktpdFRyYW5z
-aXRpb25FdmVudDp0cnVlLFZSRGV2aWNlRXZlbnQ6dHJ1ZSxWUkRpc3BsYXlFdmVudDp0cnVlLFZSU2Vz
-c2lvbkV2ZW50OnRydWUsTW9qb0ludGVyZmFjZVJlcXVlc3RFdmVudDp0cnVlLFVTQkNvbm5lY3Rpb25F
-dmVudDp0cnVlLElEQlZlcnNpb25DaGFuZ2VFdmVudDp0cnVlLEF1ZGlvUHJvY2Vzc2luZ0V2ZW50OnRy
-dWUsT2ZmbGluZUF1ZGlvQ29tcGxldGlvbkV2ZW50OnRydWUsV2ViR0xDb250ZXh0RXZlbnQ6dHJ1ZSxF
-dmVudDpmYWxzZSxJbnB1dEV2ZW50OmZhbHNlLEV2ZW50VGFyZ2V0OmZhbHNlLEZpbGU6dHJ1ZSxIVE1M
-Rm9ybUVsZW1lbnQ6dHJ1ZSxIaXN0b3J5OnRydWUsSFRNTERvY3VtZW50OnRydWUsWE1MSHR0cFJlcXVl
-c3Q6dHJ1ZSxYTUxIdHRwUmVxdWVzdEV2ZW50VGFyZ2V0OmZhbHNlLEltYWdlRGF0YTp0cnVlLExvY2F0
-aW9uOnRydWUsTW91c2VFdmVudDp0cnVlLERyYWdFdmVudDp0cnVlLFBvaW50ZXJFdmVudDp0cnVlLFdo
-ZWVsRXZlbnQ6dHJ1ZSxEb2N1bWVudEZyYWdtZW50OnRydWUsU2hhZG93Um9vdDp0cnVlLERvY3VtZW50
-VHlwZTp0cnVlLE5vZGU6ZmFsc2UsTm9kZUxpc3Q6dHJ1ZSxSYWRpb05vZGVMaXN0OnRydWUsSFRNTFBh
-cmFncmFwaEVsZW1lbnQ6dHJ1ZSxQcm9ncmVzc0V2ZW50OnRydWUsUmVzb3VyY2VQcm9ncmVzc0V2ZW50
-OnRydWUsSFRNTFNlbGVjdEVsZW1lbnQ6dHJ1ZSxIVE1MVGFibGVFbGVtZW50OnRydWUsSFRNTFRhYmxl
-Um93RWxlbWVudDp0cnVlLEhUTUxUYWJsZVNlY3Rpb25FbGVtZW50OnRydWUsSFRNTFRlbXBsYXRlRWxl
-bWVudDp0cnVlLENvbXBvc2l0aW9uRXZlbnQ6dHJ1ZSxGb2N1c0V2ZW50OnRydWUsS2V5Ym9hcmRFdmVu
-dDp0cnVlLFRleHRFdmVudDp0cnVlLFRvdWNoRXZlbnQ6dHJ1ZSxVSUV2ZW50OmZhbHNlLFdpbmRvdzp0
-cnVlLERPTVdpbmRvdzp0cnVlLERlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlOnRydWUsU2VydmljZVdv
-cmtlckdsb2JhbFNjb3BlOnRydWUsU2hhcmVkV29ya2VyR2xvYmFsU2NvcGU6dHJ1ZSxXb3JrZXJHbG9i
-YWxTY29wZTp0cnVlLEF0dHI6dHJ1ZSxDbGllbnRSZWN0OnRydWUsRE9NUmVjdDp0cnVlLE5hbWVkTm9k
-ZU1hcDp0cnVlLE1vek5hbWVkQXR0ck1hcDp0cnVlLElEQktleVJhbmdlOnRydWUsU1ZHU2NyaXB0RWxl
-bWVudDp0cnVlLFNWR0FFbGVtZW50OnRydWUsU1ZHQW5pbWF0ZUVsZW1lbnQ6dHJ1ZSxTVkdBbmltYXRl
-TW90aW9uRWxlbWVudDp0cnVlLFNWR0FuaW1hdGVUcmFuc2Zvcm1FbGVtZW50OnRydWUsU1ZHQW5pbWF0
-aW9uRWxlbWVudDp0cnVlLFNWR0NpcmNsZUVsZW1lbnQ6dHJ1ZSxTVkdDbGlwUGF0aEVsZW1lbnQ6dHJ1
-ZSxTVkdEZWZzRWxlbWVudDp0cnVlLFNWR0Rlc2NFbGVtZW50OnRydWUsU1ZHRGlzY2FyZEVsZW1lbnQ6
-dHJ1ZSxTVkdFbGxpcHNlRWxlbWVudDp0cnVlLFNWR0ZFQmxlbmRFbGVtZW50OnRydWUsU1ZHRkVDb2xv
-ck1hdHJpeEVsZW1lbnQ6dHJ1ZSxTVkdGRUNvbXBvbmVudFRyYW5zZmVyRWxlbWVudDp0cnVlLFNWR0ZF
-Q29tcG9zaXRlRWxlbWVudDp0cnVlLFNWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50OnRydWUsU1ZHRkVE
-aWZmdXNlTGlnaHRpbmdFbGVtZW50OnRydWUsU1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50OnRydWUs
-U1ZHRkVEaXN0YW50TGlnaHRFbGVtZW50OnRydWUsU1ZHRkVGbG9vZEVsZW1lbnQ6dHJ1ZSxTVkdGRUZ1
-bmNBRWxlbWVudDp0cnVlLFNWR0ZFRnVuY0JFbGVtZW50OnRydWUsU1ZHRkVGdW5jR0VsZW1lbnQ6dHJ1
-ZSxTVkdGRUZ1bmNSRWxlbWVudDp0cnVlLFNWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudDp0cnVlLFNWR0ZF
-SW1hZ2VFbGVtZW50OnRydWUsU1ZHRkVNZXJnZUVsZW1lbnQ6dHJ1ZSxTVkdGRU1lcmdlTm9kZUVsZW1l
-bnQ6dHJ1ZSxTVkdGRU1vcnBob2xvZ3lFbGVtZW50OnRydWUsU1ZHRkVPZmZzZXRFbGVtZW50OnRydWUs
-U1ZHRkVQb2ludExpZ2h0RWxlbWVudDp0cnVlLFNWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQ6dHJ1
-ZSxTVkdGRVNwb3RMaWdodEVsZW1lbnQ6dHJ1ZSxTVkdGRVRpbGVFbGVtZW50OnRydWUsU1ZHRkVUdXJi
-dWxlbmNlRWxlbWVudDp0cnVlLFNWR0ZpbHRlckVsZW1lbnQ6dHJ1ZSxTVkdGb3JlaWduT2JqZWN0RWxl
-bWVudDp0cnVlLFNWR0dFbGVtZW50OnRydWUsU1ZHR2VvbWV0cnlFbGVtZW50OnRydWUsU1ZHR3JhcGhp
-Y3NFbGVtZW50OnRydWUsU1ZHSW1hZ2VFbGVtZW50OnRydWUsU1ZHTGluZUVsZW1lbnQ6dHJ1ZSxTVkdM
-aW5lYXJHcmFkaWVudEVsZW1lbnQ6dHJ1ZSxTVkdNYXJrZXJFbGVtZW50OnRydWUsU1ZHTWFza0VsZW1l
-bnQ6dHJ1ZSxTVkdNZXRhZGF0YUVsZW1lbnQ6dHJ1ZSxTVkdQYXRoRWxlbWVudDp0cnVlLFNWR1BhdHRl
-cm5FbGVtZW50OnRydWUsU1ZHUG9seWdvbkVsZW1lbnQ6dHJ1ZSxTVkdQb2x5bGluZUVsZW1lbnQ6dHJ1
-ZSxTVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQ6dHJ1ZSxTVkdSZWN0RWxlbWVudDp0cnVlLFNWR1NldEVs
-ZW1lbnQ6dHJ1ZSxTVkdTdG9wRWxlbWVudDp0cnVlLFNWR1N0eWxlRWxlbWVudDp0cnVlLFNWR1NWR0Vs
-ZW1lbnQ6dHJ1ZSxTVkdTd2l0Y2hFbGVtZW50OnRydWUsU1ZHU3ltYm9sRWxlbWVudDp0cnVlLFNWR1RT
-cGFuRWxlbWVudDp0cnVlLFNWR1RleHRDb250ZW50RWxlbWVudDp0cnVlLFNWR1RleHRFbGVtZW50OnRy
-dWUsU1ZHVGV4dFBhdGhFbGVtZW50OnRydWUsU1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudDp0cnVlLFNW
-R1RpdGxlRWxlbWVudDp0cnVlLFNWR1VzZUVsZW1lbnQ6dHJ1ZSxTVkdWaWV3RWxlbWVudDp0cnVlLFNW
-R0dyYWRpZW50RWxlbWVudDp0cnVlLFNWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50OnRy
-dWUsU1ZHRkVEcm9wU2hhZG93RWxlbWVudDp0cnVlLFNWR01QYXRoRWxlbWVudDp0cnVlLFNWR0VsZW1l
-bnQ6ZmFsc2V9KQpILmIwLiRuYXRpdmVTdXBlcmNsYXNzVGFnPSJBcnJheUJ1ZmZlclZpZXciCkguUkcu
-JG5hdGl2ZVN1cGVyY2xhc3NUYWc9IkFycmF5QnVmZmVyVmlldyIKSC5WUC4kbmF0aXZlU3VwZXJjbGFz
-c1RhZz0iQXJyYXlCdWZmZXJWaWV3IgpILkRnLiRuYXRpdmVTdXBlcmNsYXNzVGFnPSJBcnJheUJ1ZmZl
-clZpZXciCkguV0IuJG5hdGl2ZVN1cGVyY2xhc3NUYWc9IkFycmF5QnVmZmVyVmlldyIKSC5aRy4kbmF0
-aXZlU3VwZXJjbGFzc1RhZz0iQXJyYXlCdWZmZXJWaWV3IgpILlBnLiRuYXRpdmVTdXBlcmNsYXNzVGFn
-PSJBcnJheUJ1ZmZlclZpZXcifSkoKQpjb252ZXJ0QWxsVG9GYXN0T2JqZWN0KHcpCmNvbnZlcnRUb0Zh
-c3RPYmplY3QoJCk7KGZ1bmN0aW9uKGEpe2lmKHR5cGVvZiBkb2N1bWVudD09PSJ1bmRlZmluZWQiKXth
-KG51bGwpCnJldHVybn1pZih0eXBlb2YgZG9jdW1lbnQuY3VycmVudFNjcmlwdCE9J3VuZGVmaW5lZCcp
-e2EoZG9jdW1lbnQuY3VycmVudFNjcmlwdCkKcmV0dXJufXZhciB0PWRvY3VtZW50LnNjcmlwdHMKZnVu
-Y3Rpb24gb25Mb2FkKGIpe2Zvcih2YXIgcj0wO3I8dC5sZW5ndGg7KytyKXRbcl0ucmVtb3ZlRXZlbnRM
-aXN0ZW5lcigibG9hZCIsb25Mb2FkLGZhbHNlKQphKGIudGFyZ2V0KX1mb3IodmFyIHM9MDtzPHQubGVu
-Z3RoOysrcyl0W3NdLmFkZEV2ZW50TGlzdGVuZXIoImxvYWQiLG9uTG9hZCxmYWxzZSl9KShmdW5jdGlv
-bihhKXt2LmN1cnJlbnRTY3JpcHQ9YQppZih0eXBlb2YgZGFydE1haW5SdW5uZXI9PT0iZnVuY3Rpb24i
-KWRhcnRNYWluUnVubmVyKEwuSXEsW10pCmVsc2UgTC5JcShbXSl9KX0pKCkKLy8jIHNvdXJjZU1hcHBp
-bmdVUkw9bWlncmF0aW9uLmpzLm1hcAo=
+PWEubm9kZVZhbHVlCnJldHVybiB0PT1udWxsP3RoaXMuVShhKTp0fSwKc2E0OmZ1bmN0aW9uKGEsYil7
+YS50ZXh0Q29udGVudD1ifSwKbUs6ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBhLmluc2VydEJlZm9yZShi
+LGMpfSwKJGl1SDoxfQpXLkJILnByb3RvdHlwZT17CmdBOmZ1bmN0aW9uKGEpe3JldHVybiBhLmxlbmd0
+aH0sCnE6ZnVuY3Rpb24oYSxiKXtILnVQKGIpCmlmKGI+Pj4wIT09Ynx8Yj49YS5sZW5ndGgpdGhyb3cg
+SC5iKFAuQ2YoYixhLG51bGwsbnVsbCxudWxsKSkKcmV0dXJuIGFbYl19LApZOmZ1bmN0aW9uKGEsYixj
+KXt1LkEuYShjKQp0aHJvdyBILmIoUC5MNCgiQ2Fubm90IGFzc2lnbiBlbGVtZW50IG9mIGltbXV0YWJs
+ZSBMaXN0LiIpKX0sCkU6ZnVuY3Rpb24oYSxiKXtpZihiPDB8fGI+PWEubGVuZ3RoKXJldHVybiBILk9I
+KGEsYikKcmV0dXJuIGFbYl19LAokaWJROjEsCiRpWGo6MSwKJGljWDoxLAokaXpNOjF9ClcuU04ucHJv
+dG90eXBlPXt9ClcuZXcucHJvdG90eXBlPXskaWV3OjF9ClcubHAucHJvdG90eXBlPXsKZ0E6ZnVuY3Rp
+b24oYSl7cmV0dXJuIGEubGVuZ3RofX0KVy5UYi5wcm90b3R5cGU9ewpyNjpmdW5jdGlvbihhLGIsYyxk
+KXt2YXIgdCxzCmlmKCJjcmVhdGVDb250ZXh0dWFsRnJhZ21lbnQiIGluIHdpbmRvdy5SYW5nZS5wcm90
+b3R5cGUpcmV0dXJuIHRoaXMuRFcoYSxiLGMsZCkKdD1XLlU5KCI8dGFibGU+IitILkVqKGIpKyI8L3Rh
+YmxlPiIsYyxkKQpzPWRvY3VtZW50LmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKQp0LnRvU3RyaW5nCm5l
+dyBXLmU3KHMpLkZWKDAsbmV3IFcuZTcodCkpCnJldHVybiBzfX0KVy5Jdi5wcm90b3R5cGU9ewpyNjpm
+dW5jdGlvbihhLGIsYyxkKXt2YXIgdCxzLHIscQppZigiY3JlYXRlQ29udGV4dHVhbEZyYWdtZW50IiBp
+biB3aW5kb3cuUmFuZ2UucHJvdG90eXBlKXJldHVybiB0aGlzLkRXKGEsYixjLGQpCnQ9ZG9jdW1lbnQK
+cz10LmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKQp0PW5ldyBXLmU3KEMuSWUucjYodC5jcmVhdGVFbGVt
+ZW50KCJ0YWJsZSIpLGIsYyxkKSkKcj10LmdyOCh0KQpyLnRvU3RyaW5nCnQ9bmV3IFcuZTcocikKcT10
+LmdyOCh0KQpxLnRvU3RyaW5nCm5ldyBXLmU3KHMpLkZWKDAsbmV3IFcuZTcocSkpCnJldHVybiBzfX0K
+Vy5XUC5wcm90b3R5cGU9ewpyNjpmdW5jdGlvbihhLGIsYyxkKXt2YXIgdCxzLHIKaWYoImNyZWF0ZUNv
+bnRleHR1YWxGcmFnbWVudCIgaW4gd2luZG93LlJhbmdlLnByb3RvdHlwZSlyZXR1cm4gdGhpcy5EVyhh
+LGIsYyxkKQp0PWRvY3VtZW50CnM9dC5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCkKdD1uZXcgVy5lNyhD
+LkllLnI2KHQuY3JlYXRlRWxlbWVudCgidGFibGUiKSxiLGMsZCkpCnI9dC5ncjgodCkKci50b1N0cmlu
+ZwpuZXcgVy5lNyhzKS5GVigwLG5ldyBXLmU3KHIpKQpyZXR1cm4gc319ClcueVkucHJvdG90eXBlPXsK
+cGs6ZnVuY3Rpb24oYSxiLGMpe3ZhciB0CnRoaXMuc2E0KGEsbnVsbCkKSi5iVChhLmNvbnRlbnQpCmIu
+dG9TdHJpbmcKdD10aGlzLnI2KGEsYixudWxsLGMpCmEuY29udGVudC5hcHBlbmRDaGlsZCh0KX0sCllD
+OmZ1bmN0aW9uKGEsYil7cmV0dXJuIHRoaXMucGsoYSxiLG51bGwpfSwKJGl5WToxfQpXLnc2LnByb3Rv
+dHlwZT17fQpXLks1LnByb3RvdHlwZT17ClBvOmZ1bmN0aW9uKGEsYixjKXt2YXIgdD1XLlAxKGEub3Bl
+bihiLGMpKQpyZXR1cm4gdH0sCmdtVzpmdW5jdGlvbihhKXtyZXR1cm4gYS5sb2NhdGlvbn0sClV4OmZ1
+bmN0aW9uKGEsYil7cmV0dXJuIGEuYWxlcnQoYil9LAp1czpmdW5jdGlvbihhLGIpe3JldHVybiBhLmNv
+bmZpcm0oYil9LAokaUs1OjEsCiRpdjY6MX0KVy5DbS5wcm90b3R5cGU9eyRpQ206MX0KVy5DUS5wcm90
+b3R5cGU9eyRpQ1E6MX0KVy53NC5wcm90b3R5cGU9ewp3OmZ1bmN0aW9uKGEpe3JldHVybiJSZWN0YW5n
+bGUgKCIrSC5FaihhLmxlZnQpKyIsICIrSC5FaihhLnRvcCkrIikgIitILkVqKGEud2lkdGgpKyIgeCAi
+K0guRWooYS5oZWlnaHQpfSwKRE46ZnVuY3Rpb24oYSxiKXtpZihiPT1udWxsKXJldHVybiExCnJldHVy
+biB1LnEuYihiKSYmYS5sZWZ0PT09Yi5sZWZ0JiZhLnRvcD09PWIudG9wJiZhLndpZHRoPT09Yi53aWR0
+aCYmYS5oZWlnaHQ9PT1iLmhlaWdodH0sCmdpTzpmdW5jdGlvbihhKXtyZXR1cm4gVy5yRShDLkNELmdp
+TyhhLmxlZnQpLEMuQ0QuZ2lPKGEudG9wKSxDLkNELmdpTyhhLndpZHRoKSxDLkNELmdpTyhhLmhlaWdo
+dCkpfX0KVy5yaC5wcm90b3R5cGU9ewpnQTpmdW5jdGlvbihhKXtyZXR1cm4gYS5sZW5ndGh9LApxOmZ1
+bmN0aW9uKGEsYil7SC51UChiKQppZihiPj4+MCE9PWJ8fGI+PWEubGVuZ3RoKXRocm93IEguYihQLkNm
+KGIsYSxudWxsLG51bGwsbnVsbCkpCnJldHVybiBhW2JdfSwKWTpmdW5jdGlvbihhLGIsYyl7dS5BLmEo
+YykKdGhyb3cgSC5iKFAuTDQoIkNhbm5vdCBhc3NpZ24gZWxlbWVudCBvZiBpbW11dGFibGUgTGlzdC4i
+KSl9LApFOmZ1bmN0aW9uKGEsYil7aWYoYjwwfHxiPj1hLmxlbmd0aClyZXR1cm4gSC5PSChhLGIpCnJl
+dHVybiBhW2JdfSwKJGliUToxLAokaVhqOjEsCiRpY1g6MSwKJGl6TToxfQpXLmNmLnByb3RvdHlwZT17
+Cks6ZnVuY3Rpb24oYSxiKXt2YXIgdCxzLHIscSxwCnUuZUEuYShiKQpmb3IodD10aGlzLmdWKCkscz10
+Lmxlbmd0aCxyPXRoaXMuYSxxPTA7cTx0Lmxlbmd0aDt0Lmxlbmd0aD09PXN8fCgwLEgubGspKHQpLCsr
+cSl7cD10W3FdCmIuJDIocCxyLmdldEF0dHJpYnV0ZShwKSl9fSwKZ1Y6ZnVuY3Rpb24oKXt2YXIgdCxz
+LHIscSxwPXRoaXMuYS5hdHRyaWJ1dGVzLG89SC5WTShbXSx1LnMpCmZvcih0PXAubGVuZ3RoLHM9dS5o
+OSxyPTA7cjx0Oysrcil7aWYocj49cC5sZW5ndGgpcmV0dXJuIEguT0gocCxyKQpxPXMuYShwW3JdKQpp
+ZihxLm5hbWVzcGFjZVVSST09bnVsbClDLk5tLmkobyxxLm5hbWUpfXJldHVybiBvfX0KVy5pNy5wcm90
+b3R5cGU9ewp4NDpmdW5jdGlvbihhKXt2YXIgdD10aGlzLmEuaGFzQXR0cmlidXRlKGEpCnJldHVybiB0
+fSwKcTpmdW5jdGlvbihhLGIpe3JldHVybiB0aGlzLmEuZ2V0QXR0cmlidXRlKEguaChiKSl9LApZOmZ1
+bmN0aW9uKGEsYixjKXt0aGlzLmEuc2V0QXR0cmlidXRlKGIsYyl9LApnQTpmdW5jdGlvbihhKXtyZXR1
+cm4gdGhpcy5nVigpLmxlbmd0aH19ClcuU3kucHJvdG90eXBlPXsKeDQ6ZnVuY3Rpb24oYSl7dmFyIHQ9
+dGhpcy5hLmEuaGFzQXR0cmlidXRlKCJkYXRhLSIrdGhpcy5PKGEpKQpyZXR1cm4gdH0sCnE6ZnVuY3Rp
+b24oYSxiKXtyZXR1cm4gdGhpcy5hLmEuZ2V0QXR0cmlidXRlKCJkYXRhLSIrdGhpcy5PKEguaChiKSkp
+fSwKWTpmdW5jdGlvbihhLGIsYyl7dGhpcy5hLmEuc2V0QXR0cmlidXRlKCJkYXRhLSIrdGhpcy5PKGIp
+LGMpfSwKSzpmdW5jdGlvbihhLGIpe3RoaXMuYS5LKDAsbmV3IFcuS1ModGhpcyx1LmVBLmEoYikpKX0s
+CmdWOmZ1bmN0aW9uKCl7dmFyIHQ9SC5WTShbXSx1LnMpCnRoaXMuYS5LKDAsbmV3IFcuQTModGhpcyx0
+KSkKcmV0dXJuIHR9LApnQTpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5nVigpLmxlbmd0aH0sCms6ZnVu
+Y3Rpb24oYSl7dmFyIHQscyxyPUguVk0oYS5zcGxpdCgiLSIpLHUucykKZm9yKHQ9MTt0PHIubGVuZ3Ro
+OysrdCl7cz1yW3RdCmlmKHMubGVuZ3RoPjApQy5ObS5ZKHIsdCxzWzBdLnRvVXBwZXJDYXNlKCkrSi5L
+VihzLDEpKX1yZXR1cm4gQy5ObS56VihyLCIiKX0sCk86ZnVuY3Rpb24oYSl7dmFyIHQscyxyLHEscApm
+b3IodD1hLmxlbmd0aCxzPTAscj0iIjtzPHQ7KytzKXtxPWFbc10KcD1xLnRvTG93ZXJDYXNlKCkKcj0o
+cSE9PXAmJnM+MD9yKyItIjpyKStwfXJldHVybiByLmNoYXJDb2RlQXQoMCk9PTA/cjpyfX0KVy5LUy5w
+cm90b3R5cGU9ewokMjpmdW5jdGlvbihhLGIpe2lmKEouclkoYSkubihhLCJkYXRhLSIpKXRoaXMuYi4k
+Mih0aGlzLmEuayhDLnhCLkcoYSw1KSksYil9LAokUzo3fQpXLkEzLnByb3RvdHlwZT17CiQyOmZ1bmN0
+aW9uKGEsYil7aWYoSi5yWShhKS5uKGEsImRhdGEtIikpQy5ObS5pKHRoaXMuYix0aGlzLmEuayhDLnhC
+LkcoYSw1KSkpfSwKJFM6N30KVy5JNC5wcm90b3R5cGU9ewpERzpmdW5jdGlvbigpe3ZhciB0LHMscixx
+LHA9UC5Mcyh1Lk4pCmZvcih0PXRoaXMuYS5jbGFzc05hbWUuc3BsaXQoIiAiKSxzPXQubGVuZ3RoLHI9
+MDtyPHM7KytyKXtxPUouVDAodFtyXSkKaWYocS5sZW5ndGghPT0wKXAuaSgwLHEpfXJldHVybiBwfSwK
+cDpmdW5jdGlvbihhKXt0aGlzLmEuY2xhc3NOYW1lPXUuQy5hKGEpLnpWKDAsIiAiKX0sCmdBOmZ1bmN0
+aW9uKGEpe3JldHVybiB0aGlzLmEuY2xhc3NMaXN0Lmxlbmd0aH0sClYxOmZ1bmN0aW9uKGEpe3RoaXMu
+YS5jbGFzc05hbWU9IiJ9LAp0ZzpmdW5jdGlvbihhLGIpe3ZhciB0PXRoaXMuYS5jbGFzc0xpc3QuY29u
+dGFpbnMoYikKcmV0dXJuIHR9LAppOmZ1bmN0aW9uKGEsYil7dmFyIHQ9dGhpcy5hLmNsYXNzTGlzdCxz
+PXQuY29udGFpbnMoYikKdC5hZGQoYikKcmV0dXJuIXN9LApSOmZ1bmN0aW9uKGEsYil7dmFyIHQ9dGhp
+cy5hLmNsYXNzTGlzdCxzPXQuY29udGFpbnMoYikKdC5yZW1vdmUoYikKcmV0dXJuIHN9LApGVjpmdW5j
+dGlvbihhLGIpe1cuVE4odGhpcy5hLHUuUS5hKGIpKX19ClcuRmsucHJvdG90eXBlPXt9ClcuUk8ucHJv
+dG90eXBlPXt9ClcuZXUucHJvdG90eXBlPXt9ClcueEMucHJvdG90eXBlPXt9Clcudk4ucHJvdG90eXBl
+PXsKJDE6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuYS4kMSh1LkIuYShhKSl9LAokUzoyOH0KVy5KUS5w
+cm90b3R5cGU9ewpDWTpmdW5jdGlvbihhKXt2YXIgdAppZigkLm9yLmE9PT0wKXtmb3IodD0wO3Q8MjYy
+OysrdCkkLm9yLlkoMCxDLmNtW3RdLFcucFMoKSkKZm9yKHQ9MDt0PDEyOysrdCkkLm9yLlkoMCxDLkJJ
+W3RdLFcuVjQoKSl9fSwKaTA6ZnVuY3Rpb24oYSl7cmV0dXJuICQuQU4oKS50ZygwLFcuclMoYSkpfSwK
+RWI6ZnVuY3Rpb24oYSxiLGMpe3ZhciB0PSQub3IucSgwLFcuclMoYSkrIjo6IitiKQppZih0PT1udWxs
+KXQ9JC5vci5xKDAsIio6OiIrYikKaWYodD09bnVsbClyZXR1cm4hMQpyZXR1cm4gSC55OCh0LiQ0KGEs
+YixjLHRoaXMpKX0sCiRpa0Y6MX0KVy5HbS5wcm90b3R5cGU9ewpna3o6ZnVuY3Rpb24oYSl7cmV0dXJu
+IG5ldyBXLlc5KGEsdGhpcy5nQShhKSxILnooYSkuQygiVzk8R20uRT4iKSl9fQpXLnZELnByb3RvdHlw
+ZT17CmkwOmZ1bmN0aW9uKGEpe3JldHVybiBDLk5tLlZyKHRoaXMuYSxuZXcgVy5VdihhKSl9LApFYjpm
+dW5jdGlvbihhLGIsYyl7cmV0dXJuIEMuTm0uVnIodGhpcy5hLG5ldyBXLkVnKGEsYixjKSl9LAokaWtG
+OjF9ClcuVXYucHJvdG90eXBlPXsKJDE6ZnVuY3Rpb24oYSl7cmV0dXJuIHUuZS5hKGEpLmkwKHRoaXMu
+YSl9LAokUzoxM30KVy5FZy5wcm90b3R5cGU9ewokMTpmdW5jdGlvbihhKXtyZXR1cm4gdS5lLmEoYSku
+RWIodGhpcy5hLHRoaXMuYix0aGlzLmMpfSwKJFM6MTN9ClcubTYucHJvdG90eXBlPXsKQ1k6ZnVuY3Rp
+b24oYSxiLGMsZCl7dmFyIHQscyxyCnRoaXMuYS5GVigwLGMpCnQ9Yi5ldigwLG5ldyBXLkVvKCkpCnM9
+Yi5ldigwLG5ldyBXLldrKCkpCnRoaXMuYi5GVigwLHQpCnI9dGhpcy5jCnIuRlYoMCxDLnhEKQpyLkZW
+KDAscyl9LAppMDpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5hLnRnKDAsVy5yUyhhKSl9LApFYjpmdW5j
+dGlvbihhLGIsYyl7dmFyIHQ9dGhpcyxzPVcuclMoYSkscj10LmMKaWYoci50ZygwLHMrIjo6IitiKSly
+ZXR1cm4gdC5kLkR0KGMpCmVsc2UgaWYoci50ZygwLCIqOjoiK2IpKXJldHVybiB0LmQuRHQoYykKZWxz
+ZXtyPXQuYgppZihyLnRnKDAscysiOjoiK2IpKXJldHVybiEwCmVsc2UgaWYoci50ZygwLCIqOjoiK2Ip
+KXJldHVybiEwCmVsc2UgaWYoci50ZygwLHMrIjo6KiIpKXJldHVybiEwCmVsc2UgaWYoci50ZygwLCIq
+OjoqIikpcmV0dXJuITB9cmV0dXJuITF9LAokaWtGOjF9ClcuRW8ucHJvdG90eXBlPXsKJDE6ZnVuY3Rp
+b24oYSl7cmV0dXJuIUMuTm0udGcoQy5CSSxILmgoYSkpfSwKJFM6MTR9ClcuV2sucHJvdG90eXBlPXsK
+JDE6ZnVuY3Rpb24oYSl7cmV0dXJuIEMuTm0udGcoQy5CSSxILmgoYSkpfSwKJFM6MTR9ClcuY3QucHJv
+dG90eXBlPXsKRWI6ZnVuY3Rpb24oYSxiLGMpe2lmKHRoaXMuakYoYSxiLGMpKXJldHVybiEwCmlmKGI9
+PT0idGVtcGxhdGUiJiZjPT09IiIpcmV0dXJuITAKaWYoYS5nZXRBdHRyaWJ1dGUoInRlbXBsYXRlIik9
+PT0iIilyZXR1cm4gdGhpcy5lLnRnKDAsYikKcmV0dXJuITF9fQpXLklBLnByb3RvdHlwZT17CiQxOmZ1
+bmN0aW9uKGEpe3JldHVybiJURU1QTEFURTo6IitILkVqKEguaChhKSl9LAokUzo2fQpXLk93LnByb3Rv
+dHlwZT17CmkwOmZ1bmN0aW9uKGEpe3ZhciB0CmlmKHUuZXcuYihhKSlyZXR1cm4hMQp0PXUuZzcuYihh
+KQppZih0JiZXLnJTKGEpPT09ImZvcmVpZ25PYmplY3QiKXJldHVybiExCmlmKHQpcmV0dXJuITAKcmV0
+dXJuITF9LApFYjpmdW5jdGlvbihhLGIsYyl7aWYoYj09PSJpcyJ8fEMueEIubihiLCJvbiIpKXJldHVy
+biExCnJldHVybiB0aGlzLmkwKGEpfSwKJGlrRjoxfQpXLlc5LnByb3RvdHlwZT17CkY6ZnVuY3Rpb24o
+KXt2YXIgdD10aGlzLHM9dC5jKzEscj10LmIKaWYoczxyKXt0LnNNKEoueDkodC5hLHMpKQp0LmM9cwpy
+ZXR1cm4hMH10LnNNKG51bGwpCnQuYz1yCnJldHVybiExfSwKZ2w6ZnVuY3Rpb24oKXtyZXR1cm4gdGhp
+cy5kfSwKc006ZnVuY3Rpb24oYSl7dGhpcy5kPXRoaXMuJHRpLkMoIjE/IikuYShhKX0sCiRpQW46MX0K
+Vy5kVy5wcm90b3R5cGU9ewpnbVc6ZnVuY3Rpb24oYSl7cmV0dXJuIFcuSEgodGhpcy5hLmxvY2F0aW9u
+KX0sCiRpRDA6MSwKJGl2NjoxfQpXLkZiLnByb3RvdHlwZT17fQpXLmtGLnByb3RvdHlwZT17fQpXLm1r
+LnByb3RvdHlwZT17JGl5MDoxfQpXLktvLnByb3RvdHlwZT17ClBuOmZ1bmN0aW9uKGEpe3ZhciB0PXRo
+aXMscz1uZXcgVy5mbSh0KQp0LmI9ITEKcy4kMihhLG51bGwpCmZvcig7dC5iOyl7dC5iPSExCnMuJDIo
+YSxudWxsKX19LApFUDpmdW5jdGlvbihhLGIpe3ZhciB0PXRoaXMuYj0hMAppZihiIT1udWxsP2IhPT1h
+LnBhcmVudE5vZGU6dClKLkx0KGEpCmVsc2UgYi5yZW1vdmVDaGlsZChhKX0sCkk0OmZ1bmN0aW9uKGEs
+Yil7dmFyIHQscyxyLHEscCxvPSEwLG49bnVsbCxtPW51bGwKdHJ5e249Si5pZyhhKQptPW4uYS5nZXRB
+dHRyaWJ1dGUoImlzIikKdS5oLmEoYSkKdD1mdW5jdGlvbihjKXtpZighKGMuYXR0cmlidXRlcyBpbnN0
+YW5jZW9mIE5hbWVkTm9kZU1hcCkpcmV0dXJuIHRydWUKaWYoYy5pZD09J2xhc3RDaGlsZCd8fGMubmFt
+ZT09J2xhc3RDaGlsZCd8fGMuaWQ9PSdwcmV2aW91c1NpYmxpbmcnfHxjLm5hbWU9PSdwcmV2aW91c1Np
+YmxpbmcnfHxjLmlkPT0nY2hpbGRyZW4nfHxjLm5hbWU9PSdjaGlsZHJlbicpcmV0dXJuIHRydWUKdmFy
+IGw9Yy5jaGlsZE5vZGVzCmlmKGMubGFzdENoaWxkJiZjLmxhc3RDaGlsZCE9PWxbbC5sZW5ndGgtMV0p
+cmV0dXJuIHRydWUKaWYoYy5jaGlsZHJlbilpZighKGMuY2hpbGRyZW4gaW5zdGFuY2VvZiBIVE1MQ29s
+bGVjdGlvbnx8Yy5jaGlsZHJlbiBpbnN0YW5jZW9mIE5vZGVMaXN0KSlyZXR1cm4gdHJ1ZQp2YXIgaz0w
+CmlmKGMuY2hpbGRyZW4paz1jLmNoaWxkcmVuLmxlbmd0aApmb3IodmFyIGo9MDtqPGs7aisrKXt2YXIg
+aT1jLmNoaWxkcmVuW2pdCmlmKGkuaWQ9PSdhdHRyaWJ1dGVzJ3x8aS5uYW1lPT0nYXR0cmlidXRlcyd8
+fGkuaWQ9PSdsYXN0Q2hpbGQnfHxpLm5hbWU9PSdsYXN0Q2hpbGQnfHxpLmlkPT0ncHJldmlvdXNTaWJs
+aW5nJ3x8aS5uYW1lPT0ncHJldmlvdXNTaWJsaW5nJ3x8aS5pZD09J2NoaWxkcmVuJ3x8aS5uYW1lPT0n
+Y2hpbGRyZW4nKXJldHVybiB0cnVlfXJldHVybiBmYWxzZX0oYSkKbz1ILm9UKHQpPyEwOiEoYS5hdHRy
+aWJ1dGVzIGluc3RhbmNlb2YgTmFtZWROb2RlTWFwKX1jYXRjaChxKXtILlJ1KHEpfXM9ImVsZW1lbnQg
+dW5wcmludGFibGUiCnRyeXtzPUouaihhKX1jYXRjaChxKXtILlJ1KHEpfXRyeXtyPVcuclMoYSkKdGhp
+cy5rUih1LmguYShhKSxiLG8scyxyLHUudi5hKG4pLEguayhtKSl9Y2F0Y2gocSl7aWYoSC5SdShxKSBp
+bnN0YW5jZW9mIFAudSl0aHJvdyBxCmVsc2V7dGhpcy5FUChhLGIpCndpbmRvdwpwPSJSZW1vdmluZyBj
+b3JydXB0ZWQgZWxlbWVudCAiK0guRWoocykKaWYodHlwZW9mIGNvbnNvbGUhPSJ1bmRlZmluZWQiKXdp
+bmRvdy5jb25zb2xlLndhcm4ocCl9fX0sCmtSOmZ1bmN0aW9uKGEsYixjLGQsZSxmLGcpe3ZhciB0LHMs
+cixxLHAsbyxuPXRoaXMKaWYoYyl7bi5FUChhLGIpCndpbmRvdwp0PSJSZW1vdmluZyBlbGVtZW50IGR1
+ZSB0byBjb3JydXB0ZWQgYXR0cmlidXRlcyBvbiA8IitkKyI+IgppZih0eXBlb2YgY29uc29sZSE9InVu
+ZGVmaW5lZCIpd2luZG93LmNvbnNvbGUud2Fybih0KQpyZXR1cm59aWYoIW4uYS5pMChhKSl7bi5FUChh
+LGIpCndpbmRvdwp0PSJSZW1vdmluZyBkaXNhbGxvd2VkIGVsZW1lbnQgPCIrZSsiPiBmcm9tICIrSC5F
+aihiKQppZih0eXBlb2YgY29uc29sZSE9InVuZGVmaW5lZCIpd2luZG93LmNvbnNvbGUud2Fybih0KQpy
+ZXR1cm59aWYoZyE9bnVsbClpZighbi5hLkViKGEsImlzIixnKSl7bi5FUChhLGIpCndpbmRvdwp0PSJS
+ZW1vdmluZyBkaXNhbGxvd2VkIHR5cGUgZXh0ZW5zaW9uIDwiK2UrJyBpcz0iJytnKyciPicKaWYodHlw
+ZW9mIGNvbnNvbGUhPSJ1bmRlZmluZWQiKXdpbmRvdy5jb25zb2xlLndhcm4odCkKcmV0dXJufXQ9Zi5n
+VigpCnM9SC5WTSh0LnNsaWNlKDApLEgudDYodCkuQygiamQ8MT4iKSkKZm9yKHI9Zi5nVigpLmxlbmd0
+aC0xLHQ9Zi5hO3I+PTA7LS1yKXtpZihyPj1zLmxlbmd0aClyZXR1cm4gSC5PSChzLHIpCnE9c1tyXQpw
+PW4uYQpvPUouY0gocSkKSC5oKHEpCmlmKCFwLkViKGEsbyx0LmdldEF0dHJpYnV0ZShxKSkpe3dpbmRv
+dwpwPSJSZW1vdmluZyBkaXNhbGxvd2VkIGF0dHJpYnV0ZSA8IitlKyIgIitxKyc9IicrSC5Faih0Lmdl
+dEF0dHJpYnV0ZShxKSkrJyI+JwppZih0eXBlb2YgY29uc29sZSE9InVuZGVmaW5lZCIpd2luZG93LmNv
+bnNvbGUud2FybihwKQp0LnJlbW92ZUF0dHJpYnV0ZShxKX19aWYodS5hVy5iKGEpKW4uUG4oYS5jb250
+ZW50KX0sCiRpb246MX0KVy5mbS5wcm90b3R5cGU9ewokMjpmdW5jdGlvbihhLGIpe3ZhciB0LHMscixx
+LHAsbyxuPXRoaXMuYQpzd2l0Y2goYS5ub2RlVHlwZSl7Y2FzZSAxOm4uSTQoYSxiKQpicmVhawpjYXNl
+IDg6Y2FzZSAxMTpjYXNlIDM6Y2FzZSA0OmJyZWFrCmRlZmF1bHQ6bi5FUChhLGIpfXQ9YS5sYXN0Q2hp
+bGQKZm9yKHI9dS5BO251bGwhPXQ7KXtzPW51bGwKdHJ5e3M9dC5wcmV2aW91c1NpYmxpbmcKaWYocyE9
+bnVsbCl7cT1zLm5leHRTaWJsaW5nCnA9dApwPXE9PW51bGw/cCE9bnVsbDpxIT09cApxPXB9ZWxzZSBx
+PSExCmlmKHEpe3E9UC5QVigiQ29ycnVwdCBIVE1MIikKdGhyb3cgSC5iKHEpfX1jYXRjaChvKXtILlJ1
+KG8pCnE9ci5hKHQpCm4uYj0hMAppZihhIT09cS5wYXJlbnROb2RlKXtwPXEucGFyZW50Tm9kZQppZihw
+IT1udWxsKXAucmVtb3ZlQ2hpbGQocSl9ZWxzZSBhLnJlbW92ZUNoaWxkKHEpCnQ9bnVsbApzPWEubGFz
+dENoaWxkfWlmKHQhPW51bGwpdGhpcy4kMih0LGEpCnQ9c319LAokUzozMX0KVy5MZS5wcm90b3R5cGU9
+e30KVy5LNy5wcm90b3R5cGU9e30KVy5yQi5wcm90b3R5cGU9e30KVy5YVy5wcm90b3R5cGU9e30KVy5v
+YS5wcm90b3R5cGU9e30KUC5pSi5wcm90b3R5cGU9ewpWSDpmdW5jdGlvbihhKXt2YXIgdCxzPXRoaXMu
+YSxyPXMubGVuZ3RoCmZvcih0PTA7dDxyOysrdClpZihzW3RdPT09YSlyZXR1cm4gdApDLk5tLmkocyxh
+KQpDLk5tLmkodGhpcy5iLG51bGwpCnJldHVybiByfSwKUHY6ZnVuY3Rpb24oYSl7dmFyIHQscyxyLHE9
+dGhpcyxwPXt9CmlmKGE9PW51bGwpcmV0dXJuIGEKaWYoSC5sKGEpKXJldHVybiBhCmlmKHR5cGVvZiBh
+PT0ibnVtYmVyIilyZXR1cm4gYQppZih0eXBlb2YgYT09InN0cmluZyIpcmV0dXJuIGEKaWYoYSBpbnN0
+YW5jZW9mIFAuaVApcmV0dXJuIG5ldyBEYXRlKGEuYSkKaWYodS5mdi5iKGEpKXRocm93IEguYihQLlNZ
+KCJzdHJ1Y3R1cmVkIGNsb25lIG9mIFJlZ0V4cCIpKQppZih1LmM4LmIoYSkpcmV0dXJuIGEKaWYodS53
+LmIoYSkpcmV0dXJuIGEKaWYodS5JLmIoYSkpcmV0dXJuIGEKdD11LmRFLmIoYSl8fCExCmlmKHQpcmV0
+dXJuIGEKaWYodS52LmIoYSkpe3M9cS5WSChhKQp0PXEuYgppZihzPj10Lmxlbmd0aClyZXR1cm4gSC5P
+SCh0LHMpCnI9cC5hPXRbc10KaWYociE9bnVsbClyZXR1cm4gcgpyPXt9CnAuYT1yCkMuTm0uWSh0LHMs
+cikKYS5LKDAsbmV3IFAuamcocCxxKSkKcmV0dXJuIHAuYX1pZih1LmouYihhKSl7cz1xLlZIKGEpCnA9
+cS5iCmlmKHM+PXAubGVuZ3RoKXJldHVybiBILk9IKHAscykKcj1wW3NdCmlmKHIhPW51bGwpcmV0dXJu
+IHIKcmV0dXJuIHEuZWsoYSxzKX1pZih1LmVILmIoYSkpe3M9cS5WSChhKQp0PXEuYgppZihzPj10Lmxl
+bmd0aClyZXR1cm4gSC5PSCh0LHMpCnI9cC5iPXRbc10KaWYociE9bnVsbClyZXR1cm4gcgpyPXt9CnAu
+Yj1yCkMuTm0uWSh0LHMscikKcS5pbShhLG5ldyBQLlRhKHAscSkpCnJldHVybiBwLmJ9dGhyb3cgSC5i
+KFAuU1koInN0cnVjdHVyZWQgY2xvbmUgb2Ygb3RoZXIgdHlwZSIpKX0sCmVrOmZ1bmN0aW9uKGEsYil7
+dmFyIHQscz1KLlU2KGEpLHI9cy5nQShhKSxxPW5ldyBBcnJheShyKQpDLk5tLlkodGhpcy5iLGIscSkK
+Zm9yKHQ9MDt0PHI7Kyt0KUMuTm0uWShxLHQsdGhpcy5QdihzLnEoYSx0KSkpCnJldHVybiBxfX0KUC5q
+Zy5wcm90b3R5cGU9ewokMjpmdW5jdGlvbihhLGIpe3RoaXMuYS5hW2FdPXRoaXMuYi5QdihiKX0sCiRT
+OjJ9ClAuVGEucHJvdG90eXBlPXsKJDI6ZnVuY3Rpb24oYSxiKXt0aGlzLmEuYlthXT10aGlzLmIuUHYo
+Yil9LAokUzoyfQpQLkJmLnByb3RvdHlwZT17CmltOmZ1bmN0aW9uKGEsYil7dmFyIHQscyxyLHEKdS5i
+OC5hKGIpCmZvcih0PU9iamVjdC5rZXlzKGEpLHM9dC5sZW5ndGgscj0wO3I8czsrK3Ipe3E9dFtyXQpi
+LiQyKHEsYVtxXSl9fX0KUC5Bcy5wcm90b3R5cGU9ewpUOmZ1bmN0aW9uKGEpe3ZhciB0CkguaChhKQp0
+PSQuaEcoKS5iCmlmKHR5cGVvZiBhIT0ic3RyaW5nIilILnZoKEgudEwoYSkpCmlmKHQudGVzdChhKSly
+ZXR1cm4gYQp0aHJvdyBILmIoUC5MMyhhLCJ2YWx1ZSIsIk5vdCBhIHZhbGlkIGNsYXNzIHRva2VuIikp
+fSwKdzpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5ERygpLnpWKDAsIiAiKX0sCmdrejpmdW5jdGlvbihh
+KXt2YXIgdD10aGlzLkRHKCkKcmV0dXJuIFAucmoodCx0LnIsSC5MaCh0KS5jKX0sCmdBOmZ1bmN0aW9u
+KGEpe3JldHVybiB0aGlzLkRHKCkuYX0sCnRnOmZ1bmN0aW9uKGEsYil7dGhpcy5UKGIpCnJldHVybiB0
+aGlzLkRHKCkudGcoMCxiKX0sCmk6ZnVuY3Rpb24oYSxiKXt2YXIgdAp0aGlzLlQoYikKdD10aGlzLk9T
+KG5ldyBQLkdFKGIpKQpyZXR1cm4gSC55OCh0PT1udWxsPyExOnQpfSwKUjpmdW5jdGlvbihhLGIpe3Zh
+ciB0LHMKdGhpcy5UKGIpCnQ9dGhpcy5ERygpCnM9dC5SKDAsYikKdGhpcy5wKHQpCnJldHVybiBzfSwK
+RlY6ZnVuY3Rpb24oYSxiKXt0aGlzLk9TKG5ldyBQLk43KHRoaXMsdS5RLmEoYikpKX0sClYxOmZ1bmN0
+aW9uKGEpe3RoaXMuT1MobmV3IFAudVEoKSl9LApPUzpmdW5jdGlvbihhKXt2YXIgdCxzCnUuYlUuYShh
+KQp0PXRoaXMuREcoKQpzPWEuJDEodCkKdGhpcy5wKHQpCnJldHVybiBzfX0KUC5HRS5wcm90b3R5cGU9
+ewokMTpmdW5jdGlvbihhKXtyZXR1cm4gdS5DLmEoYSkuaSgwLHRoaXMuYSl9LAokUzozM30KUC5ONy5w
+cm90b3R5cGU9ewokMTpmdW5jdGlvbihhKXt2YXIgdD10aGlzLmIscz1ILnQ2KHQpCnJldHVybiB1LkMu
+YShhKS5GVigwLG5ldyBILmxKKHQscy5DKCJxVSgxKSIpLmEodGhpcy5hLmd1TSgpKSxzLkMoImxKPDEs
+cVU+IikpKX0sCiRTOjE1fQpQLnVRLnByb3RvdHlwZT17CiQxOmZ1bmN0aW9uKGEpe3UuQy5hKGEpCmlm
+KGEuYT4wKXthLmI9YS5jPWEuZD1hLmU9YS5mPW51bGwKYS5hPTAKYS5YKCl9cmV0dXJuIG51bGx9LAok
+UzoxNX0KUC5oRi5wcm90b3R5cGU9eyRpaEY6MX0KUC5QQy5wcm90b3R5cGU9ewokMTpmdW5jdGlvbihh
+KXt2YXIgdAp1LlkuYShhKQp0PWZ1bmN0aW9uKGIsYyxkKXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4g
+YihjLGQsdGhpcyxBcnJheS5wcm90b3R5cGUuc2xpY2UuYXBwbHkoYXJndW1lbnRzKSl9fShQLlI0LGEs
+ITEpClAuRG0odCwkLncoKSxhKQpyZXR1cm4gdH0sCiRTOjV9ClAubXQucHJvdG90eXBlPXsKJDE6ZnVu
+Y3Rpb24oYSl7cmV0dXJuIG5ldyB0aGlzLmEoYSl9LAokUzo1fQpQLk56LnByb3RvdHlwZT17CiQxOmZ1
+bmN0aW9uKGEpe3JldHVybiBuZXcgUC5yNyhhKX0sCiRTOjUzfQpQLlFTLnByb3RvdHlwZT17CiQxOmZ1
+bmN0aW9uKGEpe3JldHVybiBuZXcgUC5UeihhLHUuYW0pfSwKJFM6MzZ9ClAubnAucHJvdG90eXBlPXsK
+JDE6ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyBQLkU0KGEpfSwKJFM6Mzd9ClAuRTQucHJvdG90eXBlPXsK
+cTpmdW5jdGlvbihhLGIpe2lmKHR5cGVvZiBiIT0ic3RyaW5nIiYmdHlwZW9mIGIhPSJudW1iZXIiKXRo
+cm93IEguYihQLnhZKCJwcm9wZXJ0eSBpcyBub3QgYSBTdHJpbmcgb3IgbnVtIikpCnJldHVybiBQLkw3
+KHRoaXMuYVtiXSl9LApZOmZ1bmN0aW9uKGEsYixjKXtpZih0eXBlb2YgYiE9InN0cmluZyImJnR5cGVv
+ZiBiIT0ibnVtYmVyIil0aHJvdyBILmIoUC54WSgicHJvcGVydHkgaXMgbm90IGEgU3RyaW5nIG9yIG51
+bSIpKQp0aGlzLmFbYl09UC53WShjKX0sCkROOmZ1bmN0aW9uKGEsYil7aWYoYj09bnVsbClyZXR1cm4h
+MQpyZXR1cm4gYiBpbnN0YW5jZW9mIFAuRTQmJnRoaXMuYT09PWIuYX0sCnc6ZnVuY3Rpb24oYSl7dmFy
+IHQscwp0cnl7dD1TdHJpbmcodGhpcy5hKQpyZXR1cm4gdH1jYXRjaChzKXtILlJ1KHMpCnQ9dGhpcy54
+YigwKQpyZXR1cm4gdH19LApWNzpmdW5jdGlvbihhLGIpe3ZhciB0LHM9dGhpcy5hCmlmKGI9PW51bGwp
+dD1udWxsCmVsc2V7dD1ILnQ2KGIpCnQ9UC5DSChuZXcgSC5sSihiLHQuQygiQCgxKSIpLmEoUC5pRygp
+KSx0LkMoImxKPDEsQD4iKSksITAsdS56KX1yZXR1cm4gUC5MNyhzW2FdLmFwcGx5KHMsdCkpfSwKZ2lP
+OmZ1bmN0aW9uKGEpe3JldHVybiAwfX0KUC5yNy5wcm90b3R5cGU9e30KUC5Uei5wcm90b3R5cGU9ewpj
+UDpmdW5jdGlvbihhKXt2YXIgdD10aGlzLHM9YTwwfHxhPj10LmdBKHQpCmlmKHMpdGhyb3cgSC5iKFAu
+VEUoYSwwLHQuZ0EodCksbnVsbCxudWxsKSl9LApxOmZ1bmN0aW9uKGEsYil7aWYoSC5vayhiKSl0aGlz
+LmNQKGIpCnJldHVybiB0aGlzLiR0aS5jLmEodGhpcy5VcigwLGIpKX0sClk6ZnVuY3Rpb24oYSxiLGMp
+e3RoaXMuY1AoYikKdGhpcy5lNCgwLGIsYyl9LApnQTpmdW5jdGlvbihhKXt2YXIgdD10aGlzLmEubGVu
+Z3RoCmlmKHR5cGVvZiB0PT09Im51bWJlciImJnQ+Pj4wPT09dClyZXR1cm4gdAp0aHJvdyBILmIoUC5Q
+VigiQmFkIEpzQXJyYXkgbGVuZ3RoIikpfSwKJGliUToxLAokaWNYOjEsCiRpek06MX0KUC5jby5wcm90
+b3R5cGU9e30KUC5iQi5wcm90b3R5cGU9eyRpYkI6MX0KUC5LZS5wcm90b3R5cGU9ewpERzpmdW5jdGlv
+bigpe3ZhciB0LHMscixxLHA9dGhpcy5hLmdldEF0dHJpYnV0ZSgiY2xhc3MiKSxvPVAuTHModS5OKQpp
+ZihwPT1udWxsKXJldHVybiBvCmZvcih0PXAuc3BsaXQoIiAiKSxzPXQubGVuZ3RoLHI9MDtyPHM7Kyty
+KXtxPUouVDAodFtyXSkKaWYocS5sZW5ndGghPT0wKW8uaSgwLHEpfXJldHVybiBvfSwKcDpmdW5jdGlv
+bihhKXt0aGlzLmEuc2V0QXR0cmlidXRlKCJjbGFzcyIsYS56VigwLCIgIikpfX0KUC5kNS5wcm90b3R5
+cGU9ewpnUDpmdW5jdGlvbihhKXtyZXR1cm4gbmV3IFAuS2UoYSl9LApzaGY6ZnVuY3Rpb24oYSxiKXt0
+aGlzLllDKGEsYil9LApyNjpmdW5jdGlvbihhLGIsYyxkKXt2YXIgdCxzLHIscSxwLG8KaWYoZD09bnVs
+bCl7dD1ILlZNKFtdLHUucCkKZD1uZXcgVy52RCh0KQpDLk5tLmkodCxXLlR3KG51bGwpKQpDLk5tLmko
+dCxXLkJsKCkpCkMuTm0uaSh0LG5ldyBXLk93KCkpfWM9bmV3IFcuS28oZCkKcz0nPHN2ZyB2ZXJzaW9u
+PSIxLjEiPicrSC5FaihiKSsiPC9zdmc+Igp0PWRvY3VtZW50CnI9dC5ib2R5CnIudG9TdHJpbmcKcT1D
+LlJZLkFIKHIscyxjKQpwPXQuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpCnQ9bmV3IFcuZTcocSkKbz10
+LmdyOCh0KQpmb3IoO3Q9by5maXJzdENoaWxkLHQhPW51bGw7KXAuYXBwZW5kQ2hpbGQodCkKcmV0dXJu
+IHB9LApuejpmdW5jdGlvbihhLGIsYyxkLGUpe3Rocm93IEguYihQLkw0KCJDYW5ub3QgaW52b2tlIGlu
+c2VydEFkamFjZW50SHRtbCBvbiBTVkcuIikpfSwKZ1ZsOmZ1bmN0aW9uKGEpe3JldHVybiBuZXcgVy5l
+dShhLCJjbGljayIsITEsdS5HKX0sCiRpZDU6MX0KUC5uNi5wcm90b3R5cGU9eyRpYlE6MSwkaWNYOjEs
+JGl6TToxLCRpQVM6MX0KVS5kMi5wcm90b3R5cGU9e30KVS5TZS5wcm90b3R5cGU9e30KVS5NbC5wcm90
+b3R5cGU9e30KVS55RC5wcm90b3R5cGU9e30KVS53Yi5wcm90b3R5cGU9e30KQi5qOC5wcm90b3R5cGU9
+e30KQi5xcC5wcm90b3R5cGU9e30KVC5tUS5wcm90b3R5cGU9e30KTC5lLnByb3RvdHlwZT17CiQxOmZ1
+bmN0aW9uKGEpe3ZhciB0LHMscixxLHAsbyxuCnUuYUwuYShhKQp0PXdpbmRvdy5sb2NhdGlvbi5wYXRo
+bmFtZQpzPUwuRzYod2luZG93LmxvY2F0aW9uLmhyZWYpCnI9TC5hSyh3aW5kb3cubG9jYXRpb24uaHJl
+ZikKTC5HZSgpCmlmKHQhPT0iLyImJnQhPT1KLlQwKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIi5yb290
+IikudGV4dENvbnRlbnQpKUwuRzcodCxzLHIsITAsbmV3IEwuVlcodCxzLHIpKQpxPWRvY3VtZW50CnA9
+Si5xRihxLnF1ZXJ5U2VsZWN0b3IoIi5hcHBseS1taWdyYXRpb24iKSkKbz1wLiR0aQpuPW8uQygifigx
+KT8iKS5hKG5ldyBMLm9aKCkpCnUuWi5hKG51bGwpClcuSkUocC5hLHAuYixuLCExLG8uYykKbz1KLnFG
+KHEucXVlcnlTZWxlY3RvcigiLnJlcnVuLW1pZ3JhdGlvbiIpKQpuPW8uJHRpClcuSkUoby5hLG8uYixu
+LkMoIn4oMSk/IikuYShuZXcgTC5IaSgpKSwhMSxuLmMpCm49Si5xRihxLnF1ZXJ5U2VsZWN0b3IoIi5y
+ZXBvcnQtcHJvYmxlbSIpKQpvPW4uJHRpClcuSkUobi5hLG4uYixvLkMoIn4oMSk/IikuYShuZXcgTC5C
+VCgpKSwhMSxvLmMpCnE9Si5xRihxLnF1ZXJ5U2VsZWN0b3IoIi5wb3B1cC1wYW5lIC5jbG9zZSIpKQpv
+PXEuJHRpClcuSkUocS5hLHEuYixvLkMoIn4oMSk/IikuYShuZXcgTC5QWSgpKSwhMSxvLmMpfSwKJFM6
+MTZ9CkwuVlcucHJvdG90eXBlPXsKJDA6ZnVuY3Rpb24oKXtMLkZyKHRoaXMuYSx0aGlzLmIsdGhpcy5j
+KX0sCiRTOjB9Ckwub1oucHJvdG90eXBlPXsKJDE6ZnVuY3Rpb24oYSl7dS5PLmEoYSkKaWYoQy5vbC51
+cyh3aW5kb3csIlRoaXMgd2lsbCBhcHBseSB0aGUgY2hhbmdlcyB5b3UndmUgcHJldmlld2VkIHRvIHlv
+dXIgd29ya2luZyBkaXJlY3RvcnkuIEl0IGlzIHJlY29tbWVuZGVkIHlvdSBjb21taXQgYW55IGNoYW5n
+ZXMgeW91IG1hZGUgYmVmb3JlIGRvaW5nIHRoaXMuIikpTC50eSgiL2FwcGx5LW1pZ3JhdGlvbiIpLlc3
+KG5ldyBMLmpyKCksdS5QKS5PQShuZXcgTC5xbCgpKX0sCiRTOjN9CkwuanIucHJvdG90eXBlPXsKJDE6
+ZnVuY3Rpb24oYSl7dmFyIHQKdS5hLmEoYSkKdD1kb2N1bWVudC5ib2R5CnQuY2xhc3NMaXN0LnJlbW92
+ZSgicHJvcG9zZWQiKQp0LmNsYXNzTGlzdC5hZGQoImFwcGxpZWQiKX0sCiRTOjQwfQpMLnFsLnByb3Rv
+dHlwZT17CiQyOmZ1bmN0aW9uKGEsYil7TC5DMigiQ291bGQgbm90IGFwcGx5IG1pZ3JhdGlvbiIsYSxi
+KX0sCiRDOiIkMiIsCiRSOjIsCiRTOjJ9CkwuSGkucHJvdG90eXBlPXsKJDE6ZnVuY3Rpb24oYSl7cmV0
+dXJuIHRoaXMueG4odS5PLmEoYSkpfSwKeG46ZnVuY3Rpb24oYSl7dmFyIHQ9MCxzPVAuRlgodS5QKSxy
+PTEscSxwPVtdLG8sbixtLGwKdmFyICRhc3luYyQkMT1QLmx6KGZ1bmN0aW9uKGIsYyl7aWYoYj09PTEp
+e3E9Ywp0PXJ9d2hpbGUodHJ1ZSlzd2l0Y2godCl7Y2FzZSAwOnI9Mwpkb2N1bWVudC5ib2R5LmNsYXNz
+TGlzdC5hZGQoInJlcnVubmluZyIpCnQ9NgpyZXR1cm4gUC5qUShMLnR5KCIvcmVydW4tbWlncmF0aW9u
+IiksJGFzeW5jJCQxKQpjYXNlIDY6d2luZG93LmxvY2F0aW9uLnJlbG9hZCgpCnAucHVzaCg1KQp0PTQK
+YnJlYWsKY2FzZSAzOnI9MgpsPXEKbz1ILlJ1KGwpCm49SC50cyhsKQpMLkMyKCJGYWlsZWQgdG8gcmVy
+dW4gbWlncmF0aW9uIixvLG4pCnAucHVzaCg1KQp0PTQKYnJlYWsKY2FzZSAyOnA9WzFdCmNhc2UgNDpy
+PTEKZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QucmVtb3ZlKCJyZXJ1bm5pbmciKQp0PXAucG9wKCkKYnJl
+YWsKY2FzZSA1OnJldHVybiBQLnlDKG51bGwscykKY2FzZSAxOnJldHVybiBQLmYzKHEscyl9fSkKcmV0
+dXJuIFAuREkoJGFzeW5jJCQxLHMpfSwKJFM6NDF9CkwuQlQucHJvdG90eXBlPXsKJDE6ZnVuY3Rpb24o
+YSl7dmFyIHQKdS5PLmEoYSkKdD11LlgKQy5vbC5Qbyh3aW5kb3csUC5YZCgiaHR0cHMiLCJnaXRodWIu
+Y29tIiwiZGFydC1sYW5nL3Nkay9pc3N1ZXMvbmV3IixQLkVGKFsidGl0bGUiLCJDdXN0b21lci1yZXBv
+cnRlZCBpc3N1ZSB3aXRoIE5OQkQgbWlncmF0aW9uIHRvb2wiLCJsYWJlbHMiLCJhcmVhLWFuYWx5emVy
+LGFuYWx5emVyLW5uYmQtbWlncmF0aW9uLHR5cGUtYnVnIiwiYm9keSIsIiMjIyMgU3RlcHMgdG8gcmVw
+cm9kdWNlXG5cbiMjIyMgV2hhdCBkaWQgeW91IGV4cGVjdCB0byBoYXBwZW4/XG5cbiMjIyMgV2hhdCBh
+Y3R1YWxseSBoYXBwZW5lZD9cblxuX1NjcmVlbnNob3RzIGFyZSBhcHByZWNpYXRlZF9cblxuKipEYXJ0
+IFNESyB2ZXJzaW9uKio6ICIrSC5Faihkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic2RrLXZlcnNpb24i
+KS50ZXh0Q29udGVudCkrIlxuXG5UaGFua3MgZm9yIGZpbGluZyFcbiJdLHQsdCkpLmduRCgpLCJyZXBv
+cnQtcHJvYmxlbSIpfSwKJFM6M30KTC5QWS5wcm90b3R5cGU9ewokMTpmdW5jdGlvbihhKXt2YXIgdAp1
+Lk8uYShhKQp0PWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIi5wb3B1cC1wYW5lIikuc3R5bGUKdC5kaXNw
+bGF5PSJub25lIgpyZXR1cm4ibm9uZSJ9LAokUzo0Mn0KTC5MLnByb3RvdHlwZT17CiQxOmZ1bmN0aW9u
+KGEpe3ZhciB0LHMscgp1LmFMLmEoYSkKdD13aW5kb3cubG9jYXRpb24ucGF0aG5hbWUKcz1MLkc2KHdp
+bmRvdy5sb2NhdGlvbi5ocmVmKQpyPUwuYUsod2luZG93LmxvY2F0aW9uLmhyZWYpCmlmKHQubGVuZ3Ro
+PjEpTC5HNyh0LHMsciwhMSxudWxsKQplbHNle0wuQkUodCxuZXcgQi5xcCgiIiwiIiwiIixDLkNNKSwh
+MCkKTC5CWCgiJm5ic3A7IixudWxsKX19LAokUzoxNn0KTC5XeC5wcm90b3R5cGU9ewokMTpmdW5jdGlv
+bihhKXt2YXIgdCxzLHIscT0iY29sbGFwc2VkIgp1Lk8uYShhKQp0PXRoaXMuYQpzPUouWUUodCkKcj10
+aGlzLmIKaWYoIXMuZ1AodCkudGcoMCxxKSl7cy5nUCh0KS5pKDAscSkKSi5kUihyKS5pKDAscSl9ZWxz
+ZXtzLmdQKHQpLlIoMCxxKQpKLmRSKHIpLlIoMCxxKX19LAokUzozfQpMLkFPLnByb3RvdHlwZT17CiQx
+OmZ1bmN0aW9uKGEpe3ZhciB0PUoucUYodS5nLmEoYSkpLHM9dC4kdGkscj1zLkMoIn4oMSk/IikuYShu
+ZXcgTC5kTih0aGlzLmEpKQp1LlouYShudWxsKQpXLkpFKHQuYSx0LmIsciwhMSxzLmMpfSwKJFM6NH0K
+TC5kTi5wcm90b3R5cGU9ewokMTpmdW5jdGlvbihhKXt2YXIgdAp1Lk8uYShhKQp0PWRvY3VtZW50LnF1
+ZXJ5U2VsZWN0b3IoInRhYmxlW2RhdGEtcGF0aF0iKQp0LnRvU3RyaW5nCkwudDIoYSx0aGlzLmEsdC5n
+ZXRBdHRyaWJ1dGUoImRhdGEtIituZXcgVy5TeShuZXcgVy5pNyh0KSkuTygicGF0aCIpKSl9LAokUzoz
+fQpMLkhvLnByb3RvdHlwZT17CiQxOmZ1bmN0aW9uKGEpe3ZhciB0LHMscgp1LmcuYShhKQp0PUoucUYo
+YSkKcz10LiR0aQpyPXMuQygifigxKT8iKS5hKG5ldyBMLnh6KGEsdGhpcy5hKSkKdS5aLmEobnVsbCkK
+Vy5KRSh0LmEsdC5iLHIsITEscy5jKX0sCiRTOjR9CkwueHoucHJvdG90eXBlPXsKJDE6ZnVuY3Rpb24o
+YSl7dmFyIHQKdS5PLmEoYSkKdD10aGlzLmEKTC5oWCh0aGlzLmIsUC5RQSh0LmdldEF0dHJpYnV0ZSgi
+ZGF0YS0iK25ldyBXLlN5KG5ldyBXLmk3KHQpKS5PKCJvZmZzZXQiKSksbnVsbCksUC5RQSh0LmdldEF0
+dHJpYnV0ZSgiZGF0YS0iK25ldyBXLlN5KG5ldyBXLmk3KHQpKS5PKCJsaW5lIikpLG51bGwpKX0sCiRT
+OjN9CkwuSUMucHJvdG90eXBlPXsKJDE6ZnVuY3Rpb24oYSl7dmFyIHQ9Si5xRih1LmcuYShhKSkscz10
+LiR0aQpzLkMoIn4oMSk/IikuYShMLmlTKCkpCnUuWi5hKG51bGwpClcuSkUodC5hLHQuYixMLmlTKCks
+ITEscy5jKX0sCiRTOjR9CkwuTDEucHJvdG90eXBlPXsKJDE6ZnVuY3Rpb24oYSl7dS5FLmEoYSkKdGhp
+cy5hLmFNKDAsdGhpcy5iKX0sCiRTOjQ0fQpMLm5ULnByb3RvdHlwZT17CiQwOmZ1bmN0aW9uKCl7TC5G
+cih0aGlzLmEuYSx0aGlzLmIsdGhpcy5jKX0sCiRTOjB9CkwuTlkucHJvdG90eXBlPXsKJDA6ZnVuY3Rp
+b24oKXtMLkZyKHRoaXMuYS5hLG51bGwsbnVsbCl9LAokUzowfQpMLmVYLnByb3RvdHlwZT17CiQxOmZ1
+bmN0aW9uKGEpe3UuZy5hKGEpCiQuekIoKS50b1N0cmluZwp1LmRILmEoJC5vdygpLnEoMCwiaGxqcyIp
+KS5WNygiaGlnaGxpZ2h0QmxvY2siLFthXSl9LAokUzo0fQpMLkRULnByb3RvdHlwZT17CiQxOmZ1bmN0
+aW9uKGEpe3ZhciB0LHMKdS5ELmEoYSkKdD1hLnN0YXR1cwppZih0PT09MjAwKXt0PUMuQ3QucFcoMCxh
+LnJlc3BvbnNlVGV4dCxudWxsKQpzPUouVTYodCkKTC5UMShuZXcgVS5kMihVLmpmKHMucSh0LCJlZGl0
+cyIpKSxILmgocy5xKHQsImV4cGxhbmF0aW9uIikpLEgudVAocy5xKHQsImxpbmUiKSksSC5oKHMucSh0
+LCJwYXRoIikpLFUuTmQocy5xKHQsInRyYWNlcyIpKSkpCkwuRnIodGhpcy5hLHRoaXMuYix0aGlzLmMp
+CkwueVgoIi5lZGl0LXBhbmVsIC5wYW5lbC1jb250ZW50IiwhMSl9ZWxzZSBDLm9sLlV4KHdpbmRvdywi
+UmVxdWVzdCBmYWlsZWQ7IHN0YXR1cyBvZiAiK3QpfSwKJFM6OH0KTC5lSC5wcm90b3R5cGU9ewokMjpm
+dW5jdGlvbihhLGIpe0wucUooImxvYWRSZWdpb25FeHBsYW5hdGlvbjogIitILkVqKGEpLGIpCkMub2wu
+VXgod2luZG93LCJDb3VsZCBub3QgbG9hZCAiK0guRWoodGhpcy5hKSsiICgiK0guRWooYSkrIikuIil9
+LAokQzoiJDIiLAokUjoyLAokUzoyfQpMLnl1LnByb3RvdHlwZT17CiQxOmZ1bmN0aW9uKGEpe3ZhciB0
+LHMscj10aGlzCnUuRC5hKGEpCnQ9YS5zdGF0dXMKaWYodD09PTIwMCl7cz1yLmEKTC5CRShzLEIuWWYo
+dS5iby5hKEMuQ3QucFcoMCxhLnJlc3BvbnNlVGV4dCxudWxsKSkpLHIuYikKdD1yLmMKTC5mRyh0LHIu
+ZCkKTC5CWChDLnhCLnRnKHMsIj8iKT9DLnhCLk5qKHMsMCxDLnhCLk9ZKHMsIj8iKSk6cyx0KQp0PXIu
+ZQppZih0IT1udWxsKXQuJDAoKX1lbHNlIEMub2wuVXgod2luZG93LCJSZXF1ZXN0IGZhaWxlZDsgc3Rh
+dHVzIG9mICIrdCl9LAokUzo4fQpMLnpELnByb3RvdHlwZT17CiQyOmZ1bmN0aW9uKGEsYil7TC5xSigi
+bG9hZEZpbGU6ICIrSC5FaihhKSxiKQpDLm9sLlV4KHdpbmRvdywiQ291bGQgbm90IGxvYWQgIit0aGlz
+LmErIiAoIitILkVqKGEpKyIpLiIpfSwKJEM6IiQyIiwKJFI6MiwKJFM6Mn0KTC5UVy5wcm90b3R5cGU9
+ewokMTpmdW5jdGlvbihhKXt2YXIgdCxzLHIKdS5ELmEoYSkKdD1hLnN0YXR1cwppZih0PT09MjAwKXtz
+PUMuQ3QucFcoMCxhLnJlc3BvbnNlVGV4dCxudWxsKQpyPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIi5u
+YXYtdHJlZSIpCkoubDUociwiIikKTC50WChyLEwubUsocykpfWVsc2UgQy5vbC5VeCh3aW5kb3csIlJl
+cXVlc3QgZmFpbGVkOyBzdGF0dXMgb2YgIit0KX0sCiRTOjh9CkwueHIucHJvdG90eXBlPXsKJDI6ZnVu
+Y3Rpb24oYSxiKXtMLnFKKCJsb2FkTmF2aWdhdGlvblRyZWU6ICIrSC5FaihhKSxiKQpDLm9sLlV4KHdp
+bmRvdywiQ291bGQgbm90IGxvYWQgIit0aGlzLmErIiAoIitILkVqKGEpKyIpLiIpfSwKJEM6IiQyIiwK
+JFI6MiwKJFM6Mn0KTC5FRS5wcm90b3R5cGU9ewokMTpmdW5jdGlvbihhKXt2YXIgdCxzCnUuTy5hKGEp
+CnQ9dGhpcy5hCnM9dGhpcy5iCkwuYWYod2luZG93LmxvY2F0aW9uLnBhdGhuYW1lLHQscywhMCxuZXcg
+TC5RTCh0LHMpKQpMLmhYKHRoaXMuYyx0LHMpfSwKJFM6M30KTC5RTC5wcm90b3R5cGU9ewokMDpmdW5j
+dGlvbigpe0wuRnIod2luZG93LmxvY2F0aW9uLnBhdGhuYW1lLHRoaXMuYSx0aGlzLmIpfSwKJFM6MH0K
+TC5WUy5wcm90b3R5cGU9ewokMTpmdW5jdGlvbihhKXt2YXIgdCxzPSJzZWxlY3RlZC1maWxlIgp1Lmcu
+YShhKQphLnRvU3RyaW5nCnQ9Si5ZRShhKQppZihhLmdldEF0dHJpYnV0ZSgiZGF0YS0iK25ldyBXLlN5
+KG5ldyBXLmk3KGEpKS5PKCJuYW1lIikpPT09dGhpcy5hLmEpdC5nUChhKS5pKDAscykKZWxzZSB0LmdQ
+KGEpLlIoMCxzKX0sCiRTOjR9CkwuVEQucHJvdG90eXBlPXsKJDE6ZnVuY3Rpb24oYSl7cmV0dXJuIEwu
+dDIodS5PLmEoYSksITAsbnVsbCl9LAokUzoxN30KTC5YQS5wcm90b3R5cGU9ewpFYjpmdW5jdGlvbihh
+LGIsYyl7cmV0dXJuITB9LAppMDpmdW5jdGlvbihhKXtyZXR1cm4hMH0sCiRpa0Y6MX0KTC5aWi5wcm90
+b3R5cGU9e30KTC5POS5wcm90b3R5cGU9ewp3OmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLmJ9fQpNLmxJ
+LnByb3RvdHlwZT17CldPOmZ1bmN0aW9uKGEsYil7dmFyIHQscz1udWxsCk0uWUYoImFic29sdXRlIixI
+LlZNKFtiLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsXSx1LmkpKQp0PXRoaXMuYQp0PXQuWXIo
+Yik+MCYmIXQuaEsoYikKaWYodClyZXR1cm4gYgp0PUQuUlgoKQpyZXR1cm4gdGhpcy5xNygwLHQsYixz
+LHMscyxzLHMscyl9LAp0TTpmdW5jdGlvbihhKXt2YXIgdCxzLHI9WC5DTChhLHRoaXMuYSkKci5JVigp
+CnQ9ci5kCnM9dC5sZW5ndGgKaWYocz09PTApe3Q9ci5iCnJldHVybiB0PT1udWxsPyIuIjp0fWlmKHM9
+PT0xKXt0PXIuYgpyZXR1cm4gdD09bnVsbD8iLiI6dH1pZigwPj1zKXJldHVybiBILk9IKHQsLTEpCnQu
+cG9wKCkKQy5ObS5tdihyLmUpCnIuSVYoKQpyZXR1cm4gci53KDApfSwKcTc6ZnVuY3Rpb24oYSxiLGMs
+ZCxlLGYsZyxoLGkpe3ZhciB0PUguVk0oW2IsYyxkLGUsZixnLGgsaV0sdS5pKQpNLllGKCJqb2luIix0
+KQpyZXR1cm4gdGhpcy5JUChuZXcgSC5VNSh0LHUuZ2YuYShuZXcgTS5NaSgpKSx1LmZpKSl9LApJUDpm
+dW5jdGlvbihhKXt2YXIgdCxzLHIscSxwLG8sbixtLGwKdS5lUy5hKGEpCmZvcih0PWEuJHRpLHM9dC5D
+KCJhMihjWC5FKSIpLmEobmV3IE0ucTcoKSkscj1hLmdreihhKSx0PW5ldyBILlNPKHIscyx0LkMoIlNP
+PGNYLkU+IikpLHM9dGhpcy5hLHE9ITEscD0hMSxvPSIiO3QuRigpOyl7bj1ILmgoci5nbCgpKQppZihz
+LmhLKG4pJiZwKXttPVguQ0wobixzKQpsPW8uY2hhckNvZGVBdCgwKT09MD9vOm8Kbz1DLnhCLk5qKGws
+MCxzLlNwKGwsITApKQptLmI9bwppZihzLmRzKG8pKUMuTm0uWShtLmUsMCxzLmdtSSgpKQpvPSIiK20u
+dygwKX1lbHNlIGlmKHMuWXIobik+MCl7cD0hcy5oSyhuKQpvPSIiK0guRWoobil9ZWxzZXtpZighKG4u
+bGVuZ3RoPjAmJnMuVWQoblswXSkpKWlmKHEpbys9cy5nbUkoKQpvKz1ufXE9cy5kcyhuKX1yZXR1cm4g
+by5jaGFyQ29kZUF0KDApPT0wP286b30sCm81OmZ1bmN0aW9uKGEpe3ZhciB0CmlmKCF0aGlzLnkzKGEp
+KXJldHVybiBhCnQ9WC5DTChhLHRoaXMuYSkKdC5yUigpCnJldHVybiB0LncoMCl9LAp5MzpmdW5jdGlv
+bihhKXt2YXIgdCxzLHIscSxwLG8sbixtLGwsawphLnRvU3RyaW5nCnQ9dGhpcy5hCnM9dC5ZcihhKQpp
+ZihzIT09MCl7aWYodD09PSQuS2soKSlmb3Iocj0wO3I8czsrK3IpaWYoQy54Qi5XKGEscik9PT00Nyly
+ZXR1cm4hMApxPXMKcD00N31lbHNle3E9MApwPW51bGx9Zm9yKG89bmV3IEgucWooYSkuYSxuPW8ubGVu
+Z3RoLHI9cSxtPW51bGw7cjxuOysrcixtPXAscD1sKXtsPUMueEIubShvLHIpCmlmKHQucjQobCkpe2lm
+KHQ9PT0kLktrKCkmJmw9PT00NylyZXR1cm4hMAppZihwIT1udWxsJiZ0LnI0KHApKXJldHVybiEwCmlm
+KHA9PT00NilrPW09PW51bGx8fG09PT00Nnx8dC5yNChtKQplbHNlIGs9ITEKaWYoaylyZXR1cm4hMH19
+aWYocD09bnVsbClyZXR1cm4hMAppZih0LnI0KHApKXJldHVybiEwCmlmKHA9PT00Nil0PW09PW51bGx8
+fHQucjQobSl8fG09PT00NgplbHNlIHQ9ITEKaWYodClyZXR1cm4hMApyZXR1cm4hMX0sCkhQOmZ1bmN0
+aW9uKGEsYil7dmFyIHQscyxyLHEscCxvPXRoaXMsbj0nVW5hYmxlIHRvIGZpbmQgYSBwYXRoIHRvICIn
+CmI9by5XTygwLGIpCnQ9by5hCmlmKHQuWXIoYik8PTAmJnQuWXIoYSk+MClyZXR1cm4gby5vNShhKQpp
+Zih0LllyKGEpPD0wfHx0LmhLKGEpKWE9by5XTygwLGEpCmlmKHQuWXIoYSk8PTAmJnQuWXIoYik+MCl0
+aHJvdyBILmIoWC5JNyhuK0guRWooYSkrJyIgZnJvbSAiJytILkVqKGIpKyciLicpKQpzPVguQ0woYix0
+KQpzLnJSKCkKcj1YLkNMKGEsdCkKci5yUigpCnE9cy5kCmlmKHEubGVuZ3RoPjAmJkouUk0ocVswXSwi
+LiIpKXJldHVybiByLncoMCkKcT1zLmIKcD1yLmIKaWYocSE9cClxPXE9PW51bGx8fHA9PW51bGx8fCF0
+Lk5jKHEscCkKZWxzZSBxPSExCmlmKHEpcmV0dXJuIHIudygwKQp3aGlsZSghMCl7cT1zLmQKaWYocS5s
+ZW5ndGg+MCl7cD1yLmQKcT1wLmxlbmd0aD4wJiZ0Lk5jKHFbMF0scFswXSl9ZWxzZSBxPSExCmlmKCFx
+KWJyZWFrCkMuTm0uVzQocy5kLDApCkMuTm0uVzQocy5lLDEpCkMuTm0uVzQoci5kLDApCkMuTm0uVzQo
+ci5lLDEpfXE9cy5kCmlmKHEubGVuZ3RoPjAmJkouUk0ocVswXSwiLi4iKSl0aHJvdyBILmIoWC5JNyhu
+K0guRWooYSkrJyIgZnJvbSAiJytILkVqKGIpKyciLicpKQpxPXUuWApDLk5tLlVHKHIuZCwwLFAuTzgo
+cy5kLmxlbmd0aCwiLi4iLCExLHEpKQpDLk5tLlkoci5lLDAsIiIpCkMuTm0uVUcoci5lLDEsUC5POChz
+LmQubGVuZ3RoLHQuZ21JKCksITEscSkpCnQ9ci5kCnE9dC5sZW5ndGgKaWYocT09PTApcmV0dXJuIi4i
+CmlmKHE+MSYmSi5STShDLk5tLmdyWih0KSwiLiIpKXt0PXIuZAppZigwPj10Lmxlbmd0aClyZXR1cm4g
+SC5PSCh0LC0xKQp0LnBvcCgpCnQ9ci5lCkMuTm0ubXYodCkKQy5ObS5tdih0KQpDLk5tLmkodCwiIil9
+ci5iPSIiCnIuSVYoKQpyZXR1cm4gci53KDApfX0KTS5NaS5wcm90b3R5cGU9ewokMTpmdW5jdGlvbihh
+KXtyZXR1cm4gSC5oKGEpIT1udWxsfSwKJFM6MTh9Ck0ucTcucHJvdG90eXBlPXsKJDE6ZnVuY3Rpb24o
+YSl7cmV0dXJuIEguaChhKSE9PSIifSwKJFM6MTh9Ck0uTm8ucHJvdG90eXBlPXsKJDE6ZnVuY3Rpb24o
+YSl7SC5oKGEpCnJldHVybiBhPT1udWxsPyJudWxsIjonIicrYSsnIid9LAokUzo0OH0KQi5mdi5wcm90
+b3R5cGU9ewp4WjpmdW5jdGlvbihhKXt2YXIgdCxzPXRoaXMuWXIoYSkKaWYocz4wKXJldHVybiBKLmxk
+KGEsMCxzKQppZih0aGlzLmhLKGEpKXtpZigwPj1hLmxlbmd0aClyZXR1cm4gSC5PSChhLDApCnQ9YVsw
+XX1lbHNlIHQ9bnVsbApyZXR1cm4gdH0sCk5jOmZ1bmN0aW9uKGEsYil7cmV0dXJuIGE9PWJ9fQpYLldE
+LnByb3RvdHlwZT17CklWOmZ1bmN0aW9uKCl7dmFyIHQscyxyPXRoaXMKd2hpbGUoITApe3Q9ci5kCmlm
+KCEodC5sZW5ndGghPT0wJiZKLlJNKEMuTm0uZ3JaKHQpLCIiKSkpYnJlYWsKdD1yLmQKaWYoMD49dC5s
+ZW5ndGgpcmV0dXJuIEguT0godCwtMSkKdC5wb3AoKQpDLk5tLm12KHIuZSl9dD1yLmUKcz10Lmxlbmd0
+aAppZihzPjApQy5ObS5ZKHQscy0xLCIiKX0sCnJSOmZ1bmN0aW9uKCl7dmFyIHQscyxyLHEscCxvLG4s
+bT10aGlzLGw9SC5WTShbXSx1LmkpCmZvcih0PW0uZCxzPXQubGVuZ3RoLHI9MCxxPTA7cTx0Lmxlbmd0
+aDt0Lmxlbmd0aD09PXN8fCgwLEgubGspKHQpLCsrcSl7cD10W3FdCm89Si5pYShwKQppZighKG8uRE4o
+cCwiLiIpfHxvLkROKHAsIiIpKSlpZihvLkROKHAsIi4uIikpaWYobC5sZW5ndGg+MClsLnBvcCgpCmVs
+c2UgKytyCmVsc2UgQy5ObS5pKGwscCl9aWYobS5iPT1udWxsKUMuTm0uVUcobCwwLFAuTzgociwiLi4i
+LCExLHUuWCkpCmlmKGwubGVuZ3RoPT09MCYmbS5iPT1udWxsKUMuTm0uaShsLCIuIikKbj1QLmRIKGwu
+bGVuZ3RoLG5ldyBYLnFSKG0pLCEwLHUuWCkKdD1tLmIKdD10IT1udWxsJiZsLmxlbmd0aD4wJiZtLmEu
+ZHModCk/bS5hLmdtSSgpOiIiCkgudDYobikuYy5hKHQpCmlmKCEhbi5maXhlZCRsZW5ndGgpSC52aChQ
+Lkw0KCJpbnNlcnQiKSkKbi5zcGxpY2UoMCwwLHQpCm0uc25KKGwpCm0uc1BoKG4pCnQ9bS5iCmlmKHQh
+PW51bGwmJm0uYT09PSQuS2soKSl7dC50b1N0cmluZwptLmI9SC55cyh0LCIvIiwiXFwiKX1tLklWKCl9
+LAp3OmZ1bmN0aW9uKGEpe3ZhciB0LHMscj10aGlzLHE9ci5iCnE9cSE9bnVsbD8iIitxOiIiCmZvcih0
+PTA7dDxyLmQubGVuZ3RoOysrdCl7cz1yLmUKaWYodD49cy5sZW5ndGgpcmV0dXJuIEguT0gocyx0KQpz
+PXErSC5FaihzW3RdKQpxPXIuZAppZih0Pj1xLmxlbmd0aClyZXR1cm4gSC5PSChxLHQpCnE9cytILkVq
+KHFbdF0pfXErPUguRWooQy5ObS5nclooci5lKSkKcmV0dXJuIHEuY2hhckNvZGVBdCgwKT09MD9xOnF9
+LApzbko6ZnVuY3Rpb24oYSl7dGhpcy5kPXUuZUcuYShhKX0sCnNQaDpmdW5jdGlvbihhKXt0aGlzLmU9
+dS5lRy5hKGEpfX0KWC5xUi5wcm90b3R5cGU9ewokMTpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5hLmEu
+Z21JKCl9LAokUzo0OX0KWC5kdi5wcm90b3R5cGU9ewp3OmZ1bmN0aW9uKGEpe3JldHVybiJQYXRoRXhj
+ZXB0aW9uOiAiK3RoaXMuYX19Ck8uekwucHJvdG90eXBlPXsKdzpmdW5jdGlvbihhKXtyZXR1cm4gdGhp
+cy5nb2ModGhpcyl9fQpFLk9GLnByb3RvdHlwZT17ClVkOmZ1bmN0aW9uKGEpe3JldHVybiBDLnhCLnRn
+KGEsIi8iKX0sCnI0OmZ1bmN0aW9uKGEpe3JldHVybiBhPT09NDd9LApkczpmdW5jdGlvbihhKXt2YXIg
+dD1hLmxlbmd0aApyZXR1cm4gdCE9PTAmJkMueEIubShhLHQtMSkhPT00N30sClNwOmZ1bmN0aW9uKGEs
+Yil7aWYoYS5sZW5ndGghPT0wJiZDLnhCLlcoYSwwKT09PTQ3KXJldHVybiAxCnJldHVybiAwfSwKWXI6
+ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuU3AoYSwhMSl9LApoSzpmdW5jdGlvbihhKXtyZXR1cm4hMX0s
+CmdvYzpmdW5jdGlvbigpe3JldHVybiJwb3NpeCJ9LApnbUk6ZnVuY3Rpb24oKXtyZXR1cm4iLyJ9fQpG
+LnJ1LnByb3RvdHlwZT17ClVkOmZ1bmN0aW9uKGEpe3JldHVybiBDLnhCLnRnKGEsIi8iKX0sCnI0OmZ1
+bmN0aW9uKGEpe3JldHVybiBhPT09NDd9LApkczpmdW5jdGlvbihhKXt2YXIgdD1hLmxlbmd0aAppZih0
+PT09MClyZXR1cm4hMQppZihDLnhCLm0oYSx0LTEpIT09NDcpcmV0dXJuITAKcmV0dXJuIEMueEIuVGMo
+YSwiOi8vIikmJnRoaXMuWXIoYSk9PT10fSwKU3A6ZnVuY3Rpb24oYSxiKXt2YXIgdCxzLHIscSxwPWEu
+bGVuZ3RoCmlmKHA9PT0wKXJldHVybiAwCmlmKEMueEIuVyhhLDApPT09NDcpcmV0dXJuIDEKZm9yKHQ9
+MDt0PHA7Kyt0KXtzPUMueEIuVyhhLHQpCmlmKHM9PT00NylyZXR1cm4gMAppZihzPT09NTgpe2lmKHQ9
+PT0wKXJldHVybiAwCnI9Qy54Qi5YVShhLCIvIixDLnhCLlFpKGEsIi8vIix0KzEpP3QrMzp0KQppZihy
+PD0wKXJldHVybiBwCmlmKCFifHxwPHIrMylyZXR1cm4gcgppZighQy54Qi5uKGEsImZpbGU6Ly8iKSly
+ZXR1cm4gcgppZighQi5ZdShhLHIrMSkpcmV0dXJuIHIKcT1yKzMKcmV0dXJuIHA9PT1xP3E6cis0fX1y
+ZXR1cm4gMH0sCllyOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLlNwKGEsITEpfSwKaEs6ZnVuY3Rpb24o
+YSl7cmV0dXJuIGEubGVuZ3RoIT09MCYmQy54Qi5XKGEsMCk9PT00N30sCmdvYzpmdW5jdGlvbigpe3Jl
+dHVybiJ1cmwifSwKZ21JOmZ1bmN0aW9uKCl7cmV0dXJuIi8ifX0KTC5JVi5wcm90b3R5cGU9ewpVZDpm
+dW5jdGlvbihhKXtyZXR1cm4gQy54Qi50ZyhhLCIvIil9LApyNDpmdW5jdGlvbihhKXtyZXR1cm4gYT09
+PTQ3fHxhPT09OTJ9LApkczpmdW5jdGlvbihhKXt2YXIgdD1hLmxlbmd0aAppZih0PT09MClyZXR1cm4h
+MQp0PUMueEIubShhLHQtMSkKcmV0dXJuISh0PT09NDd8fHQ9PT05Mil9LApTcDpmdW5jdGlvbihhLGIp
+e3ZhciB0LHMscj1hLmxlbmd0aAppZihyPT09MClyZXR1cm4gMAp0PUMueEIuVyhhLDApCmlmKHQ9PT00
+NylyZXR1cm4gMQppZih0PT09OTIpe2lmKHI8Mnx8Qy54Qi5XKGEsMSkhPT05MilyZXR1cm4gMQpzPUMu
+eEIuWFUoYSwiXFwiLDIpCmlmKHM+MCl7cz1DLnhCLlhVKGEsIlxcIixzKzEpCmlmKHM+MClyZXR1cm4g
+c31yZXR1cm4gcn1pZihyPDMpcmV0dXJuIDAKaWYoIUIuT1ModCkpcmV0dXJuIDAKaWYoQy54Qi5XKGEs
+MSkhPT01OClyZXR1cm4gMApyPUMueEIuVyhhLDIpCmlmKCEocj09PTQ3fHxyPT09OTIpKXJldHVybiAw
+CnJldHVybiAzfSwKWXI6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuU3AoYSwhMSl9LApoSzpmdW5jdGlv
+bihhKXtyZXR1cm4gdGhpcy5ZcihhKT09PTF9LApPdDpmdW5jdGlvbihhLGIpe3ZhciB0CmlmKGE9PT1i
+KXJldHVybiEwCmlmKGE9PT00NylyZXR1cm4gYj09PTkyCmlmKGE9PT05MilyZXR1cm4gYj09PTQ3Cmlm
+KChhXmIpIT09MzIpcmV0dXJuITEKdD1hfDMyCnJldHVybiB0Pj05NyYmdDw9MTIyfSwKTmM6ZnVuY3Rp
+b24oYSxiKXt2YXIgdCxzLHIKaWYoYT09YilyZXR1cm4hMAp0PWEubGVuZ3RoCmlmKHQhPT1iLmxlbmd0
+aClyZXR1cm4hMQpmb3Iocz1KLnJZKGIpLHI9MDtyPHQ7KytyKWlmKCF0aGlzLk90KEMueEIuVyhhLHIp
+LHMuVyhiLHIpKSlyZXR1cm4hMQpyZXR1cm4hMH0sCmdvYzpmdW5jdGlvbigpe3JldHVybiJ3aW5kb3dz
+In0sCmdtSTpmdW5jdGlvbigpe3JldHVybiJcXCJ9fTsoZnVuY3Rpb24gYWxpYXNlcygpe3ZhciB0PUou
+dkIucHJvdG90eXBlCnQuVT10LncKdC5Taj10LmU3CnQ9Si5NRi5wcm90b3R5cGUKdC50PXQudwp0PVAu
+Y1gucHJvdG90eXBlCnQuR0c9dC5ldgp0PVAuTWgucHJvdG90eXBlCnQueGI9dC53CnQ9Vy5jdi5wcm90
+b3R5cGUKdC5EVz10LnI2CnQ9Vy5tNi5wcm90b3R5cGUKdC5qRj10LkViCnQ9UC5FNC5wcm90b3R5cGUK
+dC5Vcj10LnEKdC5lND10Lll9KSgpOyhmdW5jdGlvbiBpbnN0YWxsVGVhck9mZnMoKXt2YXIgdD1odW5r
+SGVscGVycy5fc3RhdGljXzEscz1odW5rSGVscGVycy5fc3RhdGljXzAscj1odW5rSGVscGVycy5pbnN0
+YWxsSW5zdGFuY2VUZWFyT2ZmLHE9aHVua0hlbHBlcnMuaW5zdGFsbFN0YXRpY1RlYXJPZmYscD1odW5r
+SGVscGVycy5faW5zdGFuY2VfMXUKdChQLCJFWCIsIlpWIiw5KQp0KFAsInl0Iiwib0EiLDkpCnQoUCwi
+cVciLCJCeiIsOSkKcyhQLCJWOSIsImVOIiwxKQpyKFAuUGYucHJvdG90eXBlLCJnWUoiLDAsMSxudWxs
+LFsiJDIiLCIkMSJdLFsidzAiLCJwbSJdLDM0LDApCnQoUCwiUEgiLCJNdCIsNikKcShXLCJwUyIsNCxu
+dWxsLFsiJDQiXSxbInlXIl0sMTAsMCkKcShXLCJWNCIsNCxudWxsLFsiJDQiXSxbIlFXIl0sMTAsMCkK
+cChQLkFzLnByb3RvdHlwZSwiZ3VNIiwiVCIsNikKdChQLCJpRyIsIndZIiw1MikKdChQLCJ3MCIsIkw3
+IiwzNSkKdChMLCJpUyIsImk2IiwxNyl9KSgpOyhmdW5jdGlvbiBpbmhlcml0YW5jZSgpe3ZhciB0PWh1
+bmtIZWxwZXJzLm1peGluLHM9aHVua0hlbHBlcnMuaW5oZXJpdCxyPWh1bmtIZWxwZXJzLmluaGVyaXRN
+YW55CnMoUC5NaCxudWxsKQpyKFAuTWgsW0guRkssSi52QixKLm0xLFAuWFMsUC5uWSxQLmNYLEguYTcs
+UC5BbixILlNVLEguUmUsSC53dixQLlBuLEguV1UsSC5MSSxILnYsSC5mOSxILmJxLEguWE8sUC5ZayxI
+LmRiLEguTjYsSC5WUixILkVLLEguUGIsSC50USxILlNkLEguSmMsSC5HLFAuVzMsUC5paCxQLkZ5LFAu
+R1YsUC5iOCxQLlBmLFAuRmUsUC52cyxQLk9NLFAucWgsUC5NTyxQLmtULFAueEksUC5DdyxQLm0wLFAu
+WHYsUC5ibixQLmxtLFAubEQsUC5LUCxQLk1hLFAuV1ksUC5VayxQLlJ3LFAuYnosUC5hMixQLmlQLFAu
+bGYsUC5rNSxQLktZLFAuQ0QsUC5hRSxQLkVILFAuek0sUC5aMCxQLk4zLFAuYzgsUC5PZCxQLmliLFAu
+R3osUC5aZCxQLnFVLFAuUm4sUC5HRCxQLkRuLFAuUEUsUC5VZixXLmlkLFcuRmssVy5KUSxXLkdtLFcu
+dkQsVy5tNixXLk93LFcuVzksVy5kVyxXLkZiLFcua0YsVy5tayxXLktvLFAuaUosUC5FNCxQLm42LFUu
+ZDIsVS5TZSxVLk1sLFUueUQsVS53YixCLmo4LEIucXAsVC5tUSxMLlhBLEwuWlosTC5POSxNLmxJLE8u
+ekwsWC5XRCxYLmR2XSkKcihKLnZCLFtKLnlFLEoud2UsSi5NRixKLmpkLEoucUksSi5EcixILkVULFcu
+RDAsVy5BeixXLkxlLFcuTmgsVy5hZSxXLklCLFcubjcsVy5lYSxXLmJyLFcuU2csVy51OCxXLks3LFcu
+WFcsUC5oRl0pCnIoSi5NRixbSi5pQyxKLmtkLEouYzVdKQpzKEouUG8sSi5qZCkKcihKLnFJLFtKLnVy
+LEouVkFdKQpyKFAuWFMsW0gubmQsSC5XMCxILmF6LEgudlYsSC5FcSxQLkM2LEgudTksUC5uLFAudSxQ
+Lm1wLFAudWIsUC5kcyxQLmxqLFAuVVYsUC5jXSkKcyhQLkxVLFAublkpCnIoUC5MVSxbSC53MixXLnd6
+LFcuZTddKQpzKEgucWosSC53MikKcihQLmNYLFtILmJRLEguaTEsSC5VNSxILlhSLFAubVcsSC51bl0p
+CnIoSC5iUSxbSC5hTCxILmk1LFAueHVdKQpyKEguYUwsW0gubkgsSC5sSixQLmk4XSkKcyhILnh5LEgu
+aTEpCnIoUC5BbixbSC5NSCxILlNPXSkKcyhQLlJVLFAuUG4pCnMoUC5HaixQLlJVKQpzKEguUEQsUC5H
+aikKcyhILkxQLEguV1UpCnIoSC52LFtILkNqLEguQW0sSC5sYyxILmRDLEgud04sSC5WWCxQLnRoLFAu
+aGEsUC5WcyxQLkZ0LFAueUgsUC5XTSxQLlNYLFAuR3MsUC5kYSxQLm9RLFAucFYsUC5VNyxQLnZyLFAu
+cnQsUC5LRixQLlpMLFAuUlQsUC5qWixQLnJxLFAuUlcsUC5CNSxQLnVPLFAucEssUC5oaixQLlZwLFAu
+T1IsUC5yYSxQLnlRLFAucGcsUC5XRixQLm4xLFAuY1MsUC5WQyxQLkpULFAuUlosUC5NRSxQLnk1LFAu
+cTMsUC55SSxQLmM2LFAucWQsVy5DdixXLmJVLFcuaEgsVy5LUyxXLkEzLFcudk4sVy5VdixXLkVnLFcu
+RW8sVy5XayxXLklBLFcuZm0sUC5qZyxQLlRhLFAuR0UsUC5ONyxQLnVRLFAuUEMsUC5tdCxQLk56LFAu
+UVMsUC5ucCxMLmUsTC5WVyxMLm9aLEwuanIsTC5xbCxMLkhpLEwuQlQsTC5QWSxMLkwsTC5XeCxMLkFP
+LEwuZE4sTC5IbyxMLnh6LEwuSUMsTC5MMSxMLm5ULEwuTlksTC5lWCxMLkRULEwuZUgsTC55dSxMLnpE
+LEwuVFcsTC54cixMLkVFLEwuUUwsTC5WUyxMLlRELE0uTWksTS5xNyxNLk5vLFgucVJdKQpyKEgubGMs
+W0guengsSC5yVF0pCnMoSC5rWSxQLkM2KQpzKFAuaWwsUC5ZaykKcihQLmlsLFtILk41LFAudXcsVy5j
+ZixXLlN5XSkKcihQLm1XLFtILktXLFAucTRdKQpzKEguYjAsSC5FVCkKcihILmIwLFtILlJHLEguV0Jd
+KQpzKEguVlAsSC5SRykKcyhILkRnLEguVlApCnMoSC5aRyxILldCKQpzKEguUGcsSC5aRykKcihILlBn
+LFtILnhqLEguZEUsSC5aQSxILmRULEguUHEsSC5lRSxILlY2XSkKcyhILmlNLEgudTkpCnMoUC5aZixQ
+LlBmKQpzKFAuSmksUC5tMCkKcyhQLmI2LFAuWHYpCnMoUC5WaixQLldZKQpyKFAuVWssW1AuQ1YsUC5a
+aSxQLmJ5XSkKcyhQLndJLFAua1QpCnIoUC53SSxbUC5VOCxQLk14LFAuRTMsUC5HWV0pCnMoUC51NSxQ
+LlppKQpyKFAubGYsW1AuQ1AsUC5JZl0pCnIoUC51LFtQLmJKLFAuZVldKQpzKFAucWUsUC5EbikKcihX
+LkQwLFtXLnVILFcud2EsVy5LNSxXLkNtXSkKcihXLnVILFtXLmN2LFcubngsVy5RRixXLkNRXSkKcihX
+LmN2LFtXLnFFLFAuZDVdKQpyKFcucUUsW1cuR2gsVy5mWSxXLm5CLFcuUVAsVy5oNCxXLlNOLFcubHAs
+Vy5UYixXLkl2LFcuV1AsVy55WV0pCnMoVy5vSixXLkxlKQpzKFcuVDUsVy5BeikKcyhXLlZiLFcuUUYp
+CnMoVy5mSixXLndhKQpyKFcuZWEsW1cudzYsVy5ld10pCnMoVy5PSyxXLnc2KQpzKFcuckIsVy5LNykK
+cyhXLkJILFcuckIpCnMoVy53NCxXLklCKQpzKFcub2EsVy5YVykKcyhXLnJoLFcub2EpCnMoVy5pNyxX
+LmNmKQpzKFAuQXMsUC5WaikKcihQLkFzLFtXLkk0LFAuS2VdKQpzKFcuUk8sUC5xaCkKcyhXLmV1LFcu
+Uk8pCnMoVy54QyxQLk1PKQpzKFcuY3QsVy5tNikKcyhQLkJmLFAuaUopCnIoUC5FNCxbUC5yNyxQLmNv
+XSkKcyhQLlR6LFAuY28pCnMoUC5iQixQLmQ1KQpzKEIuZnYsTy56TCkKcihCLmZ2LFtFLk9GLEYucnUs
+TC5JVl0pCnQoSC53MixILlJlKQp0KEguUkcsUC5sRCkKdChILlZQLEguU1UpCnQoSC5XQixQLmxEKQp0
+KEguWkcsSC5TVSkKdChQLm5ZLFAubEQpCnQoUC5XWSxQLk1hKQp0KFAuUlUsUC5LUCkKdChXLkxlLFcu
+aWQpCnQoVy5LNyxQLmxEKQp0KFcuckIsVy5HbSkKdChXLlhXLFAubEQpCnQoVy5vYSxXLkdtKQp0KFAu
+Y28sUC5sRCl9KSgpCnZhciB2PXt0eXBlVW5pdmVyc2U6e2VDOm5ldyBNYXAoKSx0Ujp7fSxlVDp7fSx0
+UFY6e30sc0VBOltdfSxtYW5nbGVkR2xvYmFsTmFtZXM6e0lmOiJpbnQiLENQOiJkb3VibGUiLGxmOiJu
+dW0iLHFVOiJTdHJpbmciLGEyOiJib29sIixjODoiTnVsbCIsek06Ikxpc3QifSxtYW5nbGVkTmFtZXM6
+e30sZ2V0VHlwZUZyb21OYW1lOmdldEdsb2JhbEZyb21OYW1lLG1ldGFkYXRhOltdLHR5cGVzOlsiYzgo
+KSIsIn4oKSIsImM4KEAsQCkiLCJjOChPSyopIiwiYzgoY3YqKSIsIkAoQCkiLCJxVShxVSkiLCJjOChx
+VSxxVSkiLCJjOChmSiopIiwifih+KCkpIiwiYTIoY3YscVUscVUsSlEpIiwiYzgoQCkiLCJjOChxVSxA
+KSIsImEyKGtGKSIsImEyKHFVKSIsIn4oeHU8cVU+KSIsImM4KGVhKikiLCJ+KE9LKikiLCJhMioocVUq
+KSIsIlowPHFVLHFVPihaMDxxVSxxVT4scVUpIiwiSWYoSWYsSWYpIiwiQChALHFVKSIsIn4ocVUscVU/
+KSIsIm42KElmKSIsIm42KEAsQCkiLCJhMih1SCkiLCJjOChALEd6KSIsImM4KGV3KSIsIkAoZWEpIiwi
+fihAKSIsImM4KH4oKSkiLCJ+KHVILHVIPykiLCJjOChJZixAKSIsImEyKHh1PHFVPikiLCJ+KE1oW0d6
+P10pIiwiTWg/KEApIiwiVHo8QD4oQCkiLCJFNChAKSIsImM4KE1oLEd6KSIsInZzPEA+KEApIiwiYzgo
+WjA8cVUqLE1oKj4qKSIsImI4PGM4PiooT0sqKSIsInFVKihPSyopIiwiYzgoTWg/LE1oPykiLCJjOChl
+dyopIiwiQCgpIiwiYzgoR0QsQCkiLCJAKHFVKSIsInFVKihxVSopIiwicVUqKElmKikiLCJ+KHFVLElm
+KSIsIn4ocVVbQF0pIiwiTWg/KE1oPykiLCJyNyhAKSJdLGludGVyY2VwdG9yc0J5VGFnOm51bGwsbGVh
+ZlRhZ3M6bnVsbCxhcnJheVJ0aTp0eXBlb2YgU3ltYm9sPT0iZnVuY3Rpb24iJiZ0eXBlb2YgU3ltYm9s
+KCk9PSJzeW1ib2wiP1N5bWJvbCgiJHRpIik6IiR0aSJ9CkgueGIodi50eXBlVW5pdmVyc2UsSlNPTi5w
+YXJzZSgneyJjNSI6Ik1GIiwiaUMiOiJNRiIsImtkIjoiTUYiLCJyeCI6ImVhIiwiZTUiOiJlYSIsIlkw
+IjoiZDUiLCJ0cCI6ImQ1IiwiRzgiOiJldyIsIk1yIjoicUUiLCJlTCI6InFFIiwiSTAiOiJ1SCIsImhz
+IjoidUgiLCJYZyI6IlFGIiwieWMiOiJPSyIsInk0IjoidzYiLCJhUCI6IkNtIiwieGMiOiJueCIsImtK
+IjoibngiLCJ6VSI6IkRnIiwiZGYiOiJFVCIsInlFIjp7ImEyIjpbXX0sIndlIjp7ImM4IjpbXX0sIk1G
+Ijp7InZtIjpbXSwiRUgiOltdfSwiamQiOnsiek0iOlsiMSJdLCJiUSI6WyIxIl0sImNYIjpbIjEiXX0s
+IlBvIjp7ImpkIjpbIjEiXSwiek0iOlsiMSJdLCJiUSI6WyIxIl0sImNYIjpbIjEiXX0sIm0xIjp7IkFu
+IjpbIjEiXX0sInFJIjp7IkNQIjpbXSwibGYiOltdfSwidXIiOnsiSWYiOltdLCJDUCI6W10sImxmIjpb
+XX0sIlZBIjp7IkNQIjpbXSwibGYiOltdfSwiRHIiOnsicVUiOltdLCJ2WCI6W119LCJuZCI6eyJYUyI6
+W119LCJxaiI6eyJSZSI6WyJJZiJdLCJsRCI6WyJJZiJdLCJ6TSI6WyJJZiJdLCJiUSI6WyJJZiJdLCJj
+WCI6WyJJZiJdLCJsRC5FIjoiSWYiLCJSZS5FIjoiSWYifSwiYlEiOnsiY1giOlsiMSJdfSwiYUwiOnsi
+YlEiOlsiMSJdLCJjWCI6WyIxIl19LCJuSCI6eyJhTCI6WyIxIl0sImJRIjpbIjEiXSwiY1giOlsiMSJd
+LCJhTC5FIjoiMSIsImNYLkUiOiIxIn0sImE3Ijp7IkFuIjpbIjEiXX0sImkxIjp7ImNYIjpbIjIiXSwi
+Y1guRSI6IjIifSwieHkiOnsiaTEiOlsiMSIsIjIiXSwiYlEiOlsiMiJdLCJjWCI6WyIyIl0sImNYLkUi
+OiIyIn0sIk1IIjp7IkFuIjpbIjIiXX0sImxKIjp7ImFMIjpbIjIiXSwiYlEiOlsiMiJdLCJjWCI6WyIy
+Il0sImFMLkUiOiIyIiwiY1guRSI6IjIifSwiVTUiOnsiY1giOlsiMSJdLCJjWC5FIjoiMSJ9LCJTTyI6
+eyJBbiI6WyIxIl19LCJ3MiI6eyJSZSI6WyIxIl0sImxEIjpbIjEiXSwiek0iOlsiMSJdLCJiUSI6WyIx
+Il0sImNYIjpbIjEiXX0sInd2Ijp7IkdEIjpbXX0sIlBEIjp7IkdqIjpbIjEiLCIyIl0sIlJVIjpbIjEi
+LCIyIl0sIlBuIjpbIjEiLCIyIl0sIktQIjpbIjEiLCIyIl0sIlowIjpbIjEiLCIyIl19LCJXVSI6eyJa
+MCI6WyIxIiwiMiJdfSwiTFAiOnsiV1UiOlsiMSIsIjIiXSwiWjAiOlsiMSIsIjIiXX0sIlhSIjp7ImNY
+IjpbIjEiXSwiY1guRSI6IjEifSwiTEkiOnsidlEiOltdfSwiVzAiOnsiWFMiOltdfSwiYXoiOnsiWFMi
+OltdfSwidlYiOnsiWFMiOltdfSwiWE8iOnsiR3oiOltdfSwidiI6eyJFSCI6W119LCJsYyI6eyJFSCI6
+W119LCJ6eCI6eyJFSCI6W119LCJyVCI6eyJFSCI6W119LCJFcSI6eyJYUyI6W119LCJrWSI6eyJYUyI6
+W119LCJONSI6eyJGbyI6WyIxIiwiMiJdLCJZayI6WyIxIiwiMiJdLCJaMCI6WyIxIiwiMiJdLCJZay5L
+IjoiMSIsIllrLlYiOiIyIn0sImk1Ijp7ImJRIjpbIjEiXSwiY1giOlsiMSJdLCJjWC5FIjoiMSJ9LCJO
+NiI6eyJBbiI6WyIxIl19LCJWUiI6eyJ3TCI6W10sInZYIjpbXX0sIkVLIjp7ImliIjpbXSwiT2QiOltd
+fSwiS1ciOnsiY1giOlsiaWIiXSwiY1guRSI6ImliIn0sIlBiIjp7IkFuIjpbImliIl19LCJ0USI6eyJP
+ZCI6W119LCJ1biI6eyJjWCI6WyJPZCJdLCJjWC5FIjoiT2QifSwiU2QiOnsiQW4iOlsiT2QiXX0sIkVU
+Ijp7IkFTIjpbXX0sImIwIjp7IlhqIjpbIjEiXSwiRVQiOltdLCJBUyI6W119LCJEZyI6eyJsRCI6WyJD
+UCJdLCJYaiI6WyJDUCJdLCJ6TSI6WyJDUCJdLCJFVCI6W10sImJRIjpbIkNQIl0sIlNVIjpbIkNQIl0s
+IkFTIjpbXSwiY1giOlsiQ1AiXSwibEQuRSI6IkNQIn0sIlBnIjp7ImxEIjpbIklmIl0sInpNIjpbIklm
+Il0sIlhqIjpbIklmIl0sIkVUIjpbXSwiYlEiOlsiSWYiXSwiU1UiOlsiSWYiXSwiQVMiOltdLCJjWCI6
+WyJJZiJdfSwieGoiOnsibEQiOlsiSWYiXSwiek0iOlsiSWYiXSwiWGoiOlsiSWYiXSwiRVQiOltdLCJi
+USI6WyJJZiJdLCJTVSI6WyJJZiJdLCJBUyI6W10sImNYIjpbIklmIl0sImxELkUiOiJJZiJ9LCJkRSI6
+eyJsRCI6WyJJZiJdLCJ6TSI6WyJJZiJdLCJYaiI6WyJJZiJdLCJFVCI6W10sImJRIjpbIklmIl0sIlNV
+IjpbIklmIl0sIkFTIjpbXSwiY1giOlsiSWYiXSwibEQuRSI6IklmIn0sIlpBIjp7ImxEIjpbIklmIl0s
+InpNIjpbIklmIl0sIlhqIjpbIklmIl0sIkVUIjpbXSwiYlEiOlsiSWYiXSwiU1UiOlsiSWYiXSwiQVMi
+OltdLCJjWCI6WyJJZiJdLCJsRC5FIjoiSWYifSwiZFQiOnsibEQiOlsiSWYiXSwiek0iOlsiSWYiXSwi
+WGoiOlsiSWYiXSwiRVQiOltdLCJiUSI6WyJJZiJdLCJTVSI6WyJJZiJdLCJBUyI6W10sImNYIjpbIklm
+Il0sImxELkUiOiJJZiJ9LCJQcSI6eyJsRCI6WyJJZiJdLCJ6TSI6WyJJZiJdLCJYaiI6WyJJZiJdLCJF
+VCI6W10sImJRIjpbIklmIl0sIlNVIjpbIklmIl0sIkFTIjpbXSwiY1giOlsiSWYiXSwibEQuRSI6Iklm
+In0sImVFIjp7ImxEIjpbIklmIl0sInpNIjpbIklmIl0sIlhqIjpbIklmIl0sIkVUIjpbXSwiYlEiOlsi
+SWYiXSwiU1UiOlsiSWYiXSwiQVMiOltdLCJjWCI6WyJJZiJdLCJsRC5FIjoiSWYifSwiVjYiOnsibjYi
+OltdLCJsRCI6WyJJZiJdLCJ6TSI6WyJJZiJdLCJYaiI6WyJJZiJdLCJFVCI6W10sImJRIjpbIklmIl0s
+IlNVIjpbIklmIl0sIkFTIjpbXSwiY1giOlsiSWYiXSwibEQuRSI6IklmIn0sInU5Ijp7IlhTIjpbXX0s
+ImlNIjp7IlhTIjpbXX0sIkdWIjp7IkFuIjpbIjEiXX0sInE0Ijp7ImNYIjpbIjEiXSwiY1guRSI6IjEi
+fSwiWmYiOnsiUGYiOlsiMSJdfSwidnMiOnsiYjgiOlsiMSJdfSwiQ3ciOnsiWFMiOltdfSwibTAiOnsi
+SkIiOltdfSwiSmkiOnsibTAiOltdLCJKQiI6W119LCJiNiI6eyJYdiI6WyIxIl0sInh1IjpbIjEiXSwi
+YlEiOlsiMSJdLCJjWCI6WyIxIl19LCJsbSI6eyJBbiI6WyIxIl19LCJtVyI6eyJjWCI6WyIxIl19LCJM
+VSI6eyJsRCI6WyIxIl0sInpNIjpbIjEiXSwiYlEiOlsiMSJdLCJjWCI6WyIxIl19LCJpbCI6eyJZayI6
+WyIxIiwiMiJdLCJaMCI6WyIxIiwiMiJdfSwiWWsiOnsiWjAiOlsiMSIsIjIiXX0sIlBuIjp7IlowIjpb
+IjEiLCIyIl19LCJHaiI6eyJSVSI6WyIxIiwiMiJdLCJQbiI6WyIxIiwiMiJdLCJLUCI6WyIxIiwiMiJd
+LCJaMCI6WyIxIiwiMiJdfSwiVmoiOnsiTWEiOlsiMSJdLCJ4dSI6WyIxIl0sImJRIjpbIjEiXSwiY1gi
+OlsiMSJdfSwiWHYiOnsieHUiOlsiMSJdLCJiUSI6WyIxIl0sImNYIjpbIjEiXX0sInV3Ijp7IllrIjpb
+InFVIiwiQCJdLCJaMCI6WyJxVSIsIkAiXSwiWWsuSyI6InFVIiwiWWsuViI6IkAifSwiaTgiOnsiYUwi
+OlsicVUiXSwiYlEiOlsicVUiXSwiY1giOlsicVUiXSwiYUwuRSI6InFVIiwiY1guRSI6InFVIn0sIkNW
+Ijp7IlVrIjpbInpNPElmPiIsInFVIl0sIlVrLlMiOiJ6TTxJZj4ifSwiVTgiOnsid0kiOlsiek08SWY+
+IiwicVUiXX0sIlppIjp7IlVrIjpbInFVIiwiek08SWY+Il19LCJieSI6eyJVayI6WyJNaD8iLCJxVSJd
+LCJVay5TIjoiTWg/In0sIk14Ijp7IndJIjpbInFVIiwiTWg/Il19LCJ1NSI6eyJVayI6WyJxVSIsInpN
+PElmPiJdLCJVay5TIjoicVUifSwiRTMiOnsid0kiOlsicVUiLCJ6TTxJZj4iXX0sIkdZIjp7IndJIjpb
+InpNPElmPiIsInFVIl19LCJDUCI6eyJsZiI6W119LCJDNiI6eyJYUyI6W119LCJuIjp7IlhTIjpbXX0s
+InUiOnsiWFMiOltdfSwiYkoiOnsiWFMiOltdfSwiZVkiOnsiWFMiOltdfSwibXAiOnsiWFMiOltdfSwi
+dWIiOnsiWFMiOltdfSwiZHMiOnsiWFMiOltdfSwibGoiOnsiWFMiOltdfSwiVVYiOnsiWFMiOltdfSwi
+azUiOnsiWFMiOltdfSwiS1kiOnsiWFMiOltdfSwiYyI6eyJYUyI6W119LCJJZiI6eyJsZiI6W119LCJ6
+TSI6eyJiUSI6WyIxIl0sImNYIjpbIjEiXX0sImliIjp7Ik9kIjpbXX0sInh1Ijp7ImJRIjpbIjEiXSwi
+Y1giOlsiMSJdfSwiWmQiOnsiR3oiOltdfSwicVUiOnsidlgiOltdfSwiUm4iOnsiQkwiOltdfSwiRG4i
+OnsiaUQiOltdfSwiVWYiOnsiaUQiOltdfSwicWUiOnsiaUQiOltdfSwicUUiOnsiY3YiOltdLCJ1SCI6
+W10sIkQwIjpbXX0sIkdoIjp7ImN2IjpbXSwidUgiOltdLCJEMCI6W119LCJmWSI6eyJjdiI6W10sInVI
+IjpbXSwiRDAiOltdfSwibkIiOnsiY3YiOltdLCJ1SCI6W10sIkQwIjpbXX0sIlFQIjp7ImN2IjpbXSwi
+dUgiOltdLCJEMCI6W119LCJueCI6eyJ1SCI6W10sIkQwIjpbXX0sIlFGIjp7InVIIjpbXSwiRDAiOltd
+fSwiSUIiOnsidG4iOlsibGYiXX0sInd6Ijp7ImxEIjpbIjEiXSwiek0iOlsiMSJdLCJiUSI6WyIxIl0s
+ImNYIjpbIjEiXSwibEQuRSI6IjEifSwiY3YiOnsidUgiOltdLCJEMCI6W119LCJUNSI6eyJBeiI6W119
+LCJoNCI6eyJjdiI6W10sInVIIjpbXSwiRDAiOltdfSwiVmIiOnsidUgiOltdLCJEMCI6W119LCJmSiI6
+eyJEMCI6W119LCJ3YSI6eyJEMCI6W119LCJPSyI6eyJlYSI6W119LCJlNyI6eyJsRCI6WyJ1SCJdLCJ6
+TSI6WyJ1SCJdLCJiUSI6WyJ1SCJdLCJjWCI6WyJ1SCJdLCJsRC5FIjoidUgifSwidUgiOnsiRDAiOltd
+fSwiQkgiOnsiR20iOlsidUgiXSwibEQiOlsidUgiXSwiek0iOlsidUgiXSwiWGoiOlsidUgiXSwiYlEi
+OlsidUgiXSwiY1giOlsidUgiXSwiR20uRSI6InVIIiwibEQuRSI6InVIIn0sIlNOIjp7ImN2IjpbXSwi
+dUgiOltdLCJEMCI6W119LCJldyI6eyJlYSI6W119LCJscCI6eyJjdiI6W10sInVIIjpbXSwiRDAiOltd
+fSwiVGIiOnsiY3YiOltdLCJ1SCI6W10sIkQwIjpbXX0sIkl2Ijp7ImN2IjpbXSwidUgiOltdLCJEMCI6
+W119LCJXUCI6eyJjdiI6W10sInVIIjpbXSwiRDAiOltdfSwieVkiOnsiY3YiOltdLCJ1SCI6W10sIkQw
+IjpbXX0sInc2Ijp7ImVhIjpbXX0sIks1Ijp7InY2IjpbXSwiRDAiOltdfSwiQ20iOnsiRDAiOltdfSwi
+Q1EiOnsidUgiOltdLCJEMCI6W119LCJ3NCI6eyJ0biI6WyJsZiJdfSwicmgiOnsiR20iOlsidUgiXSwi
+bEQiOlsidUgiXSwiek0iOlsidUgiXSwiWGoiOlsidUgiXSwiYlEiOlsidUgiXSwiY1giOlsidUgiXSwi
+R20uRSI6InVIIiwibEQuRSI6InVIIn0sImNmIjp7IllrIjpbInFVIiwicVUiXSwiWjAiOlsicVUiLCJx
+VSJdfSwiaTciOnsiWWsiOlsicVUiLCJxVSJdLCJaMCI6WyJxVSIsInFVIl0sIllrLksiOiJxVSIsIllr
+LlYiOiJxVSJ9LCJTeSI6eyJZayI6WyJxVSIsInFVIl0sIlowIjpbInFVIiwicVUiXSwiWWsuSyI6InFV
+IiwiWWsuViI6InFVIn0sIkk0Ijp7Ik1hIjpbInFVIl0sInh1IjpbInFVIl0sImJRIjpbInFVIl0sImNY
+IjpbInFVIl19LCJSTyI6eyJxaCI6WyIxIl19LCJldSI6eyJSTyI6WyIxIl0sInFoIjpbIjEiXX0sInhD
+Ijp7Ik1PIjpbIjEiXX0sIkpRIjp7ImtGIjpbXX0sInZEIjp7ImtGIjpbXX0sIm02Ijp7ImtGIjpbXX0s
+ImN0Ijp7ImtGIjpbXX0sIk93Ijp7ImtGIjpbXX0sIlc5Ijp7IkFuIjpbIjEiXX0sImRXIjp7InY2Ijpb
+XSwiRDAiOltdfSwibWsiOnsieTAiOltdfSwiS28iOnsib24iOltdfSwiQXMiOnsiTWEiOlsicVUiXSwi
+eHUiOlsicVUiXSwiYlEiOlsicVUiXSwiY1giOlsicVUiXX0sInI3Ijp7IkU0IjpbXX0sIlR6Ijp7ImxE
+IjpbIjEiXSwiek0iOlsiMSJdLCJiUSI6WyIxIl0sIkU0IjpbXSwiY1giOlsiMSJdLCJsRC5FIjoiMSJ9
+LCJiQiI6eyJkNSI6W10sImN2IjpbXSwidUgiOltdLCJEMCI6W119LCJLZSI6eyJNYSI6WyJxVSJdLCJ4
+dSI6WyJxVSJdLCJiUSI6WyJxVSJdLCJjWCI6WyJxVSJdfSwiZDUiOnsiY3YiOltdLCJ1SCI6W10sIkQw
+IjpbXX0sIm42Ijp7InpNIjpbIklmIl0sImJRIjpbIklmIl0sIkFTIjpbXSwiY1giOlsiSWYiXX0sIlhB
+Ijp7ImtGIjpbXX0sIk9GIjp7ImZ2IjpbXX0sInJ1Ijp7ImZ2IjpbXX0sIklWIjp7ImZ2IjpbXX19Jykp
+CkguRkYodi50eXBlVW5pdmVyc2UsSlNPTi5wYXJzZSgneyJiUSI6MSwidzIiOjEsImIwIjoxLCJrVCI6
+MiwibVciOjEsIkxVIjoxLCJpbCI6MiwiVmoiOjEsIm5ZIjoxLCJXWSI6MSwiY28iOjF9JykpCnZhciB1
+PShmdW5jdGlvbiBydGlpKCl7dmFyIHQ9SC5OMApyZXR1cm57bjp0KCJDdyIpLGNSOnQoIm5CIiksdzp0
+KCJBeiIpLGs6dCgiUVAiKSxnRjp0KCJQRDxHRCxAPiIpLGd3OnQoImJRPEA+IiksaDp0KCJjdiIpLFc6
+dCgiWFMiKSxCOnQoImVhIiksYVM6dCgiRDAiKSxjODp0KCJUNSIpLFk6dCgiRUgiKSxkOnQoImI4PEA+
+IiksSTp0KCJTZyIpLG86dCgidlEiKSxlaDp0KCJjWDx1SD4iKSxROnQoImNYPHFVPiIpLG06dCgiY1g8
+QD4iKSxwOnQoImpkPGtGPiIpLHM6dCgiamQ8cVU+IiksYjp0KCJqZDxAPiIpLHQ6dCgiamQ8SWY+Iiks
+ZDc6dCgiamQ8U2UqPiIpLGg0OnQoImpkPGo4Kj4iKSxjUTp0KCJqZDxaWio+IiksaTp0KCJqZDxxVSo+
+IiksYUE6dCgiamQ8eUQqPiIpLGFKOnQoImpkPHdiKj4iKSxWOnQoImpkPElmKj4iKSxlSDp0KCJ2bSIp
+LHI6dCgiYzUiKSxhVTp0KCJYajxAPiIpLGFtOnQoIlR6PEA+IiksZW86dCgiTjU8R0QsQD4iKSxkejp0
+KCJoRiIpLGo6dCgiek08QD4iKSxMOnQoInpNPElmPiIpLGY6dCgiWjA8cVUscVU+Iiksdjp0KCJaMDxA
+LEA+IiksZG86dCgibEo8cVUsQD4iKSxmajp0KCJsSjxxVSoscVU+IiksZEU6dCgiRVQiKSxibTp0KCJW
+NiIpLEE6dCgidUgiKSxlOnQoImtGIiksUDp0KCJjOCIpLEs6dCgiTWgiKSxnWjp0KCJldyIpLHE6dCgi
+dG48bGY+IiksZnY6dCgid0wiKSxldzp0KCJiQiIpLEM6dCgieHU8cVU+IiksbDp0KCJHeiIpLE46dCgi
+cVUiKSxkMDp0KCJxVShxVSopIiksZzc6dCgiZDUiKSxmbzp0KCJHRCIpLGFXOnQoInlZIikseDp0KCJB
+UyIpLGdjOnQoIm42IiksYWs6dCgia2QiKSxkdzp0KCJHajxxVSxxVT4iKSxkRDp0KCJpRCIpLGZpOnQo
+IlU1PHFVKj4iKSxnNDp0KCJLNSIpLGNpOnQoInY2IiksZzI6dCgiQ20iKSxiajp0KCJaZjxmSj4iKSxi
+Qzp0KCJaZjxmSio+IiksaDk6dCgiQ1EiKSxhYzp0KCJlNyIpLEc6dCgiZXU8T0sqPiIpLFI6dCgid3o8
+Y3YqPiIpLGFvOnQoInZzPGZKPiIpLGM6dCgidnM8QD4iKSxmSjp0KCJ2czxJZj4iKSxnVjp0KCJ2czxm
+Sio+IiksY3I6dCgiSlEiKSxKOnQoImJuIikseTp0KCJhMiIpLGFsOnQoImEyKE1oKSIpLGdmOnQoImEy
+KHFVKikiKSxnUjp0KCJDUCIpLHo6dCgiQCIpLGZPOnQoIkAoKSIpLGJJOnQoIkAoTWgpIiksYWc6dCgi
+QChNaCxHeikiKSxiVTp0KCJAKHh1PHFVPikiKSxkTzp0KCJAKHFVKSIpLGI4OnQoIkAoQCxAKSIpLFM6
+dCgiSWYiKSxkZDp0KCJHaCoiKSxnOnQoImN2KiIpLGFMOnQoImVhKiIpLEQ6dCgiZkoqIiksVDp0KCJj
+WDxAPioiKSxlUzp0KCJjWDxxVSo+KiIpLGRIOnQoIkU0KiIpLGRfOnQoInpNPGo4Kj4qIiksZUc6dCgi
+ek08cVUqPioiKSxiWjp0KCJ1OCoiKSxibzp0KCJaMDxxVSosQD4qIiksYTp0KCJaMDxxVSosTWgqPioi
+KSxPOnQoIk9LKiIpLGF3OnQoIjAmKiIpLF86dCgiTWgqIiksRTp0KCJldyoiKSxYOnQoInFVKiIpLGNo
+OnQoIkQwPyIpLGJHOnQoImI4PGM4Pj8iKSxVOnQoImNYPHFVPj8iKSxiazp0KCJ6TTxxVT4/IiksYk06
+dCgiek08QD4/IiksZWc6dCgiek08SWY+PyIpLGNaOnQoIlowPHFVLHFVPj8iKSxjOTp0KCJaMDxxVSxA
+Pj8iKSxjSzp0KCJNaD8iKSxGOnQoIkZlPEAsQD4/IiksYjc6dCgiYTIoTWgpPyIpLGJ3OnQoIkAoZWEp
+PyIpLGZWOnQoIk1oPyhNaD8sTWg/KT8iKSxaOnQoIn4oKT8iKSx1OnQoIn4oZXcqKT8iKSxkaTp0KCJs
+ZiIpLEg6dCgifiIpLE06dCgifigpIiksZUE6dCgifihxVSxxVSkiKSxjQTp0KCJ+KHFVLEApIil9fSko
+KTsoZnVuY3Rpb24gY29uc3RhbnRzKCl7dmFyIHQ9aHVua0hlbHBlcnMubWFrZUNvbnN0TGlzdApDLlJZ
+PVcuUVAucHJvdG90eXBlCkMubUg9Vy5hZS5wcm90b3R5cGUKQy5CWj1XLlZiLnByb3RvdHlwZQpDLkR0
+PVcuZkoucHJvdG90eXBlCkMuT2s9Si52Qi5wcm90b3R5cGUKQy5ObT1KLmpkLnByb3RvdHlwZQpDLmpu
+PUoudXIucHJvdG90eXBlCkMuQ0Q9Si5xSS5wcm90b3R5cGUKQy54Qj1KLkRyLnByb3RvdHlwZQpDLkRH
+PUouYzUucHJvdG90eXBlCkMuRXg9Vy51OC5wcm90b3R5cGUKQy5MdD1XLlNOLnByb3RvdHlwZQpDLlpR
+PUouaUMucHJvdG90eXBlCkMuSWU9Vy5UYi5wcm90b3R5cGUKQy52Qj1KLmtkLnByb3RvdHlwZQpDLm9s
+PVcuSzUucHJvdG90eXBlCkMueTg9bmV3IFAuVTgoKQpDLmg5PW5ldyBQLkNWKCkKQy5PND1mdW5jdGlv
+biBnZXRUYWdGYWxsYmFjayhvKSB7CiAgdmFyIHMgPSBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNh
+bGwobyk7CiAgcmV0dXJuIHMuc3Vic3RyaW5nKDgsIHMubGVuZ3RoIC0gMSk7Cn0KQy5ZcT1mdW5jdGlv
+bigpIHsKICB2YXIgdG9TdHJpbmdGdW5jdGlvbiA9IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmc7CiAg
+ZnVuY3Rpb24gZ2V0VGFnKG8pIHsKICAgIHZhciBzID0gdG9TdHJpbmdGdW5jdGlvbi5jYWxsKG8pOwog
+ICAgcmV0dXJuIHMuc3Vic3RyaW5nKDgsIHMubGVuZ3RoIC0gMSk7CiAgfQogIGZ1bmN0aW9uIGdldFVu
+a25vd25UYWcob2JqZWN0LCB0YWcpIHsKICAgIGlmICgvXkhUTUxbQS1aXS4qRWxlbWVudCQvLnRlc3Qo
+dGFnKSkgewogICAgICB2YXIgbmFtZSA9IHRvU3RyaW5nRnVuY3Rpb24uY2FsbChvYmplY3QpOwogICAg
+ICBpZiAobmFtZSA9PSAiW29iamVjdCBPYmplY3RdIikgcmV0dXJuIG51bGw7CiAgICAgIHJldHVybiAi
+SFRNTEVsZW1lbnQiOwogICAgfQogIH0KICBmdW5jdGlvbiBnZXRVbmtub3duVGFnR2VuZXJpY0Jyb3dz
+ZXIob2JqZWN0LCB0YWcpIHsKICAgIGlmIChzZWxmLkhUTUxFbGVtZW50ICYmIG9iamVjdCBpbnN0YW5j
+ZW9mIEhUTUxFbGVtZW50KSByZXR1cm4gIkhUTUxFbGVtZW50IjsKICAgIHJldHVybiBnZXRVbmtub3du
+VGFnKG9iamVjdCwgdGFnKTsKICB9CiAgZnVuY3Rpb24gcHJvdG90eXBlRm9yVGFnKHRhZykgewogICAg
+aWYgKHR5cGVvZiB3aW5kb3cgPT0gInVuZGVmaW5lZCIpIHJldHVybiBudWxsOwogICAgaWYgKHR5cGVv
+ZiB3aW5kb3dbdGFnXSA9PSAidW5kZWZpbmVkIikgcmV0dXJuIG51bGw7CiAgICB2YXIgY29uc3RydWN0
+b3IgPSB3aW5kb3dbdGFnXTsKICAgIGlmICh0eXBlb2YgY29uc3RydWN0b3IgIT0gImZ1bmN0aW9uIikg
+cmV0dXJuIG51bGw7CiAgICByZXR1cm4gY29uc3RydWN0b3IucHJvdG90eXBlOwogIH0KICBmdW5jdGlv
+biBkaXNjcmltaW5hdG9yKHRhZykgeyByZXR1cm4gbnVsbDsgfQogIHZhciBpc0Jyb3dzZXIgPSB0eXBl
+b2YgbmF2aWdhdG9yID09ICJvYmplY3QiOwogIHJldHVybiB7CiAgICBnZXRUYWc6IGdldFRhZywKICAg
+IGdldFVua25vd25UYWc6IGlzQnJvd3NlciA/IGdldFVua25vd25UYWdHZW5lcmljQnJvd3NlciA6IGdl
+dFVua25vd25UYWcsCiAgICBwcm90b3R5cGVGb3JUYWc6IHByb3RvdHlwZUZvclRhZywKICAgIGRpc2Ny
+aW1pbmF0b3I6IGRpc2NyaW1pbmF0b3IgfTsKfQpDLndiPWZ1bmN0aW9uKGdldFRhZ0ZhbGxiYWNrKSB7
+CiAgcmV0dXJuIGZ1bmN0aW9uKGhvb2tzKSB7CiAgICBpZiAodHlwZW9mIG5hdmlnYXRvciAhPSAib2Jq
+ZWN0IikgcmV0dXJuIGhvb2tzOwogICAgdmFyIHVhID0gbmF2aWdhdG9yLnVzZXJBZ2VudDsKICAgIGlm
+ICh1YS5pbmRleE9mKCJEdW1wUmVuZGVyVHJlZSIpID49IDApIHJldHVybiBob29rczsKICAgIGlmICh1
+YS5pbmRleE9mKCJDaHJvbWUiKSA+PSAwKSB7CiAgICAgIGZ1bmN0aW9uIGNvbmZpcm0ocCkgewogICAg
+ICAgIHJldHVybiB0eXBlb2Ygd2luZG93ID09ICJvYmplY3QiICYmIHdpbmRvd1twXSAmJiB3aW5kb3db
+cF0ubmFtZSA9PSBwOwogICAgICB9CiAgICAgIGlmIChjb25maXJtKCJXaW5kb3ciKSAmJiBjb25maXJt
+KCJIVE1MRWxlbWVudCIpKSByZXR1cm4gaG9va3M7CiAgICB9CiAgICBob29rcy5nZXRUYWcgPSBnZXRU
+YWdGYWxsYmFjazsKICB9Owp9CkMuS1U9ZnVuY3Rpb24oaG9va3MpIHsKICBpZiAodHlwZW9mIGRhcnRF
+eHBlcmltZW50YWxGaXh1cEdldFRhZyAhPSAiZnVuY3Rpb24iKSByZXR1cm4gaG9va3M7CiAgaG9va3Mu
+Z2V0VGFnID0gZGFydEV4cGVyaW1lbnRhbEZpeHVwR2V0VGFnKGhvb2tzLmdldFRhZyk7Cn0KQy5mUT1m
+dW5jdGlvbihob29rcykgewogIHZhciBnZXRUYWcgPSBob29rcy5nZXRUYWc7CiAgdmFyIHByb3RvdHlw
+ZUZvclRhZyA9IGhvb2tzLnByb3RvdHlwZUZvclRhZzsKICBmdW5jdGlvbiBnZXRUYWdGaXhlZChvKSB7
+CiAgICB2YXIgdGFnID0gZ2V0VGFnKG8pOwogICAgaWYgKHRhZyA9PSAiRG9jdW1lbnQiKSB7CiAgICAg
+IGlmICghIW8ueG1sVmVyc2lvbikgcmV0dXJuICIhRG9jdW1lbnQiOwogICAgICByZXR1cm4gIiFIVE1M
+RG9jdW1lbnQiOwogICAgfQogICAgcmV0dXJuIHRhZzsKICB9CiAgZnVuY3Rpb24gcHJvdG90eXBlRm9y
+VGFnRml4ZWQodGFnKSB7CiAgICBpZiAodGFnID09ICJEb2N1bWVudCIpIHJldHVybiBudWxsOwogICAg
+cmV0dXJuIHByb3RvdHlwZUZvclRhZyh0YWcpOwogIH0KICBob29rcy5nZXRUYWcgPSBnZXRUYWdGaXhl
+ZDsKICBob29rcy5wcm90b3R5cGVGb3JUYWcgPSBwcm90b3R5cGVGb3JUYWdGaXhlZDsKfQpDLmRrPWZ1
+bmN0aW9uKGhvb2tzKSB7CiAgdmFyIHVzZXJBZ2VudCA9IHR5cGVvZiBuYXZpZ2F0b3IgPT0gIm9iamVj
+dCIgPyBuYXZpZ2F0b3IudXNlckFnZW50IDogIiI7CiAgaWYgKHVzZXJBZ2VudC5pbmRleE9mKCJGaXJl
+Zm94IikgPT0gLTEpIHJldHVybiBob29rczsKICB2YXIgZ2V0VGFnID0gaG9va3MuZ2V0VGFnOwogIHZh
+ciBxdWlja01hcCA9IHsKICAgICJCZWZvcmVVbmxvYWRFdmVudCI6ICJFdmVudCIsCiAgICAiRGF0YVRy
+YW5zZmVyIjogIkNsaXBib2FyZCIsCiAgICAiR2VvR2VvbG9jYXRpb24iOiAiR2VvbG9jYXRpb24iLAog
+ICAgIkxvY2F0aW9uIjogIiFMb2NhdGlvbiIsCiAgICAiV29ya2VyTWVzc2FnZUV2ZW50IjogIk1lc3Nh
+Z2VFdmVudCIsCiAgICAiWE1MRG9jdW1lbnQiOiAiIURvY3VtZW50In07CiAgZnVuY3Rpb24gZ2V0VGFn
+RmlyZWZveChvKSB7CiAgICB2YXIgdGFnID0gZ2V0VGFnKG8pOwogICAgcmV0dXJuIHF1aWNrTWFwW3Rh
+Z10gfHwgdGFnOwogIH0KICBob29rcy5nZXRUYWcgPSBnZXRUYWdGaXJlZm94Owp9CkMueGk9ZnVuY3Rp
+b24oaG9va3MpIHsKICB2YXIgdXNlckFnZW50ID0gdHlwZW9mIG5hdmlnYXRvciA9PSAib2JqZWN0IiA/
+IG5hdmlnYXRvci51c2VyQWdlbnQgOiAiIjsKICBpZiAodXNlckFnZW50LmluZGV4T2YoIlRyaWRlbnQv
+IikgPT0gLTEpIHJldHVybiBob29rczsKICB2YXIgZ2V0VGFnID0gaG9va3MuZ2V0VGFnOwogIHZhciBx
+dWlja01hcCA9IHsKICAgICJCZWZvcmVVbmxvYWRFdmVudCI6ICJFdmVudCIsCiAgICAiRGF0YVRyYW5z
+ZmVyIjogIkNsaXBib2FyZCIsCiAgICAiSFRNTERERWxlbWVudCI6ICJIVE1MRWxlbWVudCIsCiAgICAi
+SFRNTERURWxlbWVudCI6ICJIVE1MRWxlbWVudCIsCiAgICAiSFRNTFBocmFzZUVsZW1lbnQiOiAiSFRN
+TEVsZW1lbnQiLAogICAgIlBvc2l0aW9uIjogIkdlb3Bvc2l0aW9uIgogIH07CiAgZnVuY3Rpb24gZ2V0
+VGFnSUUobykgewogICAgdmFyIHRhZyA9IGdldFRhZyhvKTsKICAgIHZhciBuZXdUYWcgPSBxdWlja01h
+cFt0YWddOwogICAgaWYgKG5ld1RhZykgcmV0dXJuIG5ld1RhZzsKICAgIGlmICh0YWcgPT0gIk9iamVj
+dCIpIHsKICAgICAgaWYgKHdpbmRvdy5EYXRhVmlldyAmJiAobyBpbnN0YW5jZW9mIHdpbmRvdy5EYXRh
+VmlldykpIHJldHVybiAiRGF0YVZpZXciOwogICAgfQogICAgcmV0dXJuIHRhZzsKICB9CiAgZnVuY3Rp
+b24gcHJvdG90eXBlRm9yVGFnSUUodGFnKSB7CiAgICB2YXIgY29uc3RydWN0b3IgPSB3aW5kb3dbdGFn
+XTsKICAgIGlmIChjb25zdHJ1Y3RvciA9PSBudWxsKSByZXR1cm4gbnVsbDsKICAgIHJldHVybiBjb25z
+dHJ1Y3Rvci5wcm90b3R5cGU7CiAgfQogIGhvb2tzLmdldFRhZyA9IGdldFRhZ0lFOwogIGhvb2tzLnBy
+b3RvdHlwZUZvclRhZyA9IHByb3RvdHlwZUZvclRhZ0lFOwp9CkMuaTc9ZnVuY3Rpb24oaG9va3MpIHsg
+cmV0dXJuIGhvb2tzOyB9CgpDLkN0PW5ldyBQLmJ5KCkKQy5FcT1uZXcgUC5rNSgpCkMueE09bmV3IFAu
+dTUoKQpDLlFrPW5ldyBQLkUzKCkKQy5OVT1uZXcgUC5KaSgpCkMucGQ9bmV3IFAuWmQoKQpDLkEzPW5l
+dyBQLk14KG51bGwpCkMuR2I9SC5WTSh0KFsxMjcsMjA0Nyw2NTUzNSwxMTE0MTExXSksdS5WKQpDLmFr
+PUguVk0odChbMCwwLDMyNzc2LDMzNzkyLDEsMTAyNDAsMCwwXSksdS5WKQpDLmNtPUguVk0odChbIio6
+OmNsYXNzIiwiKjo6ZGlyIiwiKjo6ZHJhZ2dhYmxlIiwiKjo6aGlkZGVuIiwiKjo6aWQiLCIqOjppbmVy
+dCIsIio6Oml0ZW1wcm9wIiwiKjo6aXRlbXJlZiIsIio6Oml0ZW1zY29wZSIsIio6OmxhbmciLCIqOjpz
+cGVsbGNoZWNrIiwiKjo6dGl0bGUiLCIqOjp0cmFuc2xhdGUiLCJBOjphY2Nlc3NrZXkiLCJBOjpjb29y
+ZHMiLCJBOjpocmVmbGFuZyIsIkE6Om5hbWUiLCJBOjpzaGFwZSIsIkE6OnRhYmluZGV4IiwiQTo6dGFy
+Z2V0IiwiQTo6dHlwZSIsIkFSRUE6OmFjY2Vzc2tleSIsIkFSRUE6OmFsdCIsIkFSRUE6OmNvb3JkcyIs
+IkFSRUE6Om5vaHJlZiIsIkFSRUE6OnNoYXBlIiwiQVJFQTo6dGFiaW5kZXgiLCJBUkVBOjp0YXJnZXQi
+LCJBVURJTzo6Y29udHJvbHMiLCJBVURJTzo6bG9vcCIsIkFVRElPOjptZWRpYWdyb3VwIiwiQVVESU86
+Om11dGVkIiwiQVVESU86OnByZWxvYWQiLCJCRE86OmRpciIsIkJPRFk6OmFsaW5rIiwiQk9EWTo6Ymdj
+b2xvciIsIkJPRFk6OmxpbmsiLCJCT0RZOjp0ZXh0IiwiQk9EWTo6dmxpbmsiLCJCUjo6Y2xlYXIiLCJC
+VVRUT046OmFjY2Vzc2tleSIsIkJVVFRPTjo6ZGlzYWJsZWQiLCJCVVRUT046Om5hbWUiLCJCVVRUT046
+OnRhYmluZGV4IiwiQlVUVE9OOjp0eXBlIiwiQlVUVE9OOjp2YWx1ZSIsIkNBTlZBUzo6aGVpZ2h0Iiwi
+Q0FOVkFTOjp3aWR0aCIsIkNBUFRJT046OmFsaWduIiwiQ09MOjphbGlnbiIsIkNPTDo6Y2hhciIsIkNP
+TDo6Y2hhcm9mZiIsIkNPTDo6c3BhbiIsIkNPTDo6dmFsaWduIiwiQ09MOjp3aWR0aCIsIkNPTEdST1VQ
+OjphbGlnbiIsIkNPTEdST1VQOjpjaGFyIiwiQ09MR1JPVVA6OmNoYXJvZmYiLCJDT0xHUk9VUDo6c3Bh
+biIsIkNPTEdST1VQOjp2YWxpZ24iLCJDT0xHUk9VUDo6d2lkdGgiLCJDT01NQU5EOjpjaGVja2VkIiwi
+Q09NTUFORDo6Y29tbWFuZCIsIkNPTU1BTkQ6OmRpc2FibGVkIiwiQ09NTUFORDo6bGFiZWwiLCJDT01N
+QU5EOjpyYWRpb2dyb3VwIiwiQ09NTUFORDo6dHlwZSIsIkRBVEE6OnZhbHVlIiwiREVMOjpkYXRldGlt
+ZSIsIkRFVEFJTFM6Om9wZW4iLCJESVI6OmNvbXBhY3QiLCJESVY6OmFsaWduIiwiREw6OmNvbXBhY3Qi
+LCJGSUVMRFNFVDo6ZGlzYWJsZWQiLCJGT05UOjpjb2xvciIsIkZPTlQ6OmZhY2UiLCJGT05UOjpzaXpl
+IiwiRk9STTo6YWNjZXB0IiwiRk9STTo6YXV0b2NvbXBsZXRlIiwiRk9STTo6ZW5jdHlwZSIsIkZPUk06
+Om1ldGhvZCIsIkZPUk06Om5hbWUiLCJGT1JNOjpub3ZhbGlkYXRlIiwiRk9STTo6dGFyZ2V0IiwiRlJB
+TUU6Om5hbWUiLCJIMTo6YWxpZ24iLCJIMjo6YWxpZ24iLCJIMzo6YWxpZ24iLCJINDo6YWxpZ24iLCJI
+NTo6YWxpZ24iLCJINjo6YWxpZ24iLCJIUjo6YWxpZ24iLCJIUjo6bm9zaGFkZSIsIkhSOjpzaXplIiwi
+SFI6OndpZHRoIiwiSFRNTDo6dmVyc2lvbiIsIklGUkFNRTo6YWxpZ24iLCJJRlJBTUU6OmZyYW1lYm9y
+ZGVyIiwiSUZSQU1FOjpoZWlnaHQiLCJJRlJBTUU6Om1hcmdpbmhlaWdodCIsIklGUkFNRTo6bWFyZ2lu
+d2lkdGgiLCJJRlJBTUU6OndpZHRoIiwiSU1HOjphbGlnbiIsIklNRzo6YWx0IiwiSU1HOjpib3JkZXIi
+LCJJTUc6OmhlaWdodCIsIklNRzo6aHNwYWNlIiwiSU1HOjppc21hcCIsIklNRzo6bmFtZSIsIklNRzo6
+dXNlbWFwIiwiSU1HOjp2c3BhY2UiLCJJTUc6OndpZHRoIiwiSU5QVVQ6OmFjY2VwdCIsIklOUFVUOjph
+Y2Nlc3NrZXkiLCJJTlBVVDo6YWxpZ24iLCJJTlBVVDo6YWx0IiwiSU5QVVQ6OmF1dG9jb21wbGV0ZSIs
+IklOUFVUOjphdXRvZm9jdXMiLCJJTlBVVDo6Y2hlY2tlZCIsIklOUFVUOjpkaXNhYmxlZCIsIklOUFVU
+OjppbnB1dG1vZGUiLCJJTlBVVDo6aXNtYXAiLCJJTlBVVDo6bGlzdCIsIklOUFVUOjptYXgiLCJJTlBV
+VDo6bWF4bGVuZ3RoIiwiSU5QVVQ6Om1pbiIsIklOUFVUOjptdWx0aXBsZSIsIklOUFVUOjpuYW1lIiwi
+SU5QVVQ6OnBsYWNlaG9sZGVyIiwiSU5QVVQ6OnJlYWRvbmx5IiwiSU5QVVQ6OnJlcXVpcmVkIiwiSU5Q
+VVQ6OnNpemUiLCJJTlBVVDo6c3RlcCIsIklOUFVUOjp0YWJpbmRleCIsIklOUFVUOjp0eXBlIiwiSU5Q
+VVQ6OnVzZW1hcCIsIklOUFVUOjp2YWx1ZSIsIklOUzo6ZGF0ZXRpbWUiLCJLRVlHRU46OmRpc2FibGVk
+IiwiS0VZR0VOOjprZXl0eXBlIiwiS0VZR0VOOjpuYW1lIiwiTEFCRUw6OmFjY2Vzc2tleSIsIkxBQkVM
+Ojpmb3IiLCJMRUdFTkQ6OmFjY2Vzc2tleSIsIkxFR0VORDo6YWxpZ24iLCJMSTo6dHlwZSIsIkxJOjp2
+YWx1ZSIsIkxJTks6OnNpemVzIiwiTUFQOjpuYW1lIiwiTUVOVTo6Y29tcGFjdCIsIk1FTlU6OmxhYmVs
+IiwiTUVOVTo6dHlwZSIsIk1FVEVSOjpoaWdoIiwiTUVURVI6OmxvdyIsIk1FVEVSOjptYXgiLCJNRVRF
+Ujo6bWluIiwiTUVURVI6OnZhbHVlIiwiT0JKRUNUOjp0eXBlbXVzdG1hdGNoIiwiT0w6OmNvbXBhY3Qi
+LCJPTDo6cmV2ZXJzZWQiLCJPTDo6c3RhcnQiLCJPTDo6dHlwZSIsIk9QVEdST1VQOjpkaXNhYmxlZCIs
+Ik9QVEdST1VQOjpsYWJlbCIsIk9QVElPTjo6ZGlzYWJsZWQiLCJPUFRJT046OmxhYmVsIiwiT1BUSU9O
+OjpzZWxlY3RlZCIsIk9QVElPTjo6dmFsdWUiLCJPVVRQVVQ6OmZvciIsIk9VVFBVVDo6bmFtZSIsIlA6
+OmFsaWduIiwiUFJFOjp3aWR0aCIsIlBST0dSRVNTOjptYXgiLCJQUk9HUkVTUzo6bWluIiwiUFJPR1JF
+U1M6OnZhbHVlIiwiU0VMRUNUOjphdXRvY29tcGxldGUiLCJTRUxFQ1Q6OmRpc2FibGVkIiwiU0VMRUNU
+OjptdWx0aXBsZSIsIlNFTEVDVDo6bmFtZSIsIlNFTEVDVDo6cmVxdWlyZWQiLCJTRUxFQ1Q6OnNpemUi
+LCJTRUxFQ1Q6OnRhYmluZGV4IiwiU09VUkNFOjp0eXBlIiwiVEFCTEU6OmFsaWduIiwiVEFCTEU6OmJn
+Y29sb3IiLCJUQUJMRTo6Ym9yZGVyIiwiVEFCTEU6OmNlbGxwYWRkaW5nIiwiVEFCTEU6OmNlbGxzcGFj
+aW5nIiwiVEFCTEU6OmZyYW1lIiwiVEFCTEU6OnJ1bGVzIiwiVEFCTEU6OnN1bW1hcnkiLCJUQUJMRTo6
+d2lkdGgiLCJUQk9EWTo6YWxpZ24iLCJUQk9EWTo6Y2hhciIsIlRCT0RZOjpjaGFyb2ZmIiwiVEJPRFk6
+OnZhbGlnbiIsIlREOjphYmJyIiwiVEQ6OmFsaWduIiwiVEQ6OmF4aXMiLCJURDo6Ymdjb2xvciIsIlRE
+OjpjaGFyIiwiVEQ6OmNoYXJvZmYiLCJURDo6Y29sc3BhbiIsIlREOjpoZWFkZXJzIiwiVEQ6OmhlaWdo
+dCIsIlREOjpub3dyYXAiLCJURDo6cm93c3BhbiIsIlREOjpzY29wZSIsIlREOjp2YWxpZ24iLCJURDo6
+d2lkdGgiLCJURVhUQVJFQTo6YWNjZXNza2V5IiwiVEVYVEFSRUE6OmF1dG9jb21wbGV0ZSIsIlRFWFRB
+UkVBOjpjb2xzIiwiVEVYVEFSRUE6OmRpc2FibGVkIiwiVEVYVEFSRUE6OmlucHV0bW9kZSIsIlRFWFRB
+UkVBOjpuYW1lIiwiVEVYVEFSRUE6OnBsYWNlaG9sZGVyIiwiVEVYVEFSRUE6OnJlYWRvbmx5IiwiVEVY
+VEFSRUE6OnJlcXVpcmVkIiwiVEVYVEFSRUE6OnJvd3MiLCJURVhUQVJFQTo6dGFiaW5kZXgiLCJURVhU
+QVJFQTo6d3JhcCIsIlRGT09UOjphbGlnbiIsIlRGT09UOjpjaGFyIiwiVEZPT1Q6OmNoYXJvZmYiLCJU
+Rk9PVDo6dmFsaWduIiwiVEg6OmFiYnIiLCJUSDo6YWxpZ24iLCJUSDo6YXhpcyIsIlRIOjpiZ2NvbG9y
+IiwiVEg6OmNoYXIiLCJUSDo6Y2hhcm9mZiIsIlRIOjpjb2xzcGFuIiwiVEg6OmhlYWRlcnMiLCJUSDo6
+aGVpZ2h0IiwiVEg6Om5vd3JhcCIsIlRIOjpyb3dzcGFuIiwiVEg6OnNjb3BlIiwiVEg6OnZhbGlnbiIs
+IlRIOjp3aWR0aCIsIlRIRUFEOjphbGlnbiIsIlRIRUFEOjpjaGFyIiwiVEhFQUQ6OmNoYXJvZmYiLCJU
+SEVBRDo6dmFsaWduIiwiVFI6OmFsaWduIiwiVFI6OmJnY29sb3IiLCJUUjo6Y2hhciIsIlRSOjpjaGFy
+b2ZmIiwiVFI6OnZhbGlnbiIsIlRSQUNLOjpkZWZhdWx0IiwiVFJBQ0s6OmtpbmQiLCJUUkFDSzo6bGFi
+ZWwiLCJUUkFDSzo6c3JjbGFuZyIsIlVMOjpjb21wYWN0IiwiVUw6OnR5cGUiLCJWSURFTzo6Y29udHJv
+bHMiLCJWSURFTzo6aGVpZ2h0IiwiVklERU86Omxvb3AiLCJWSURFTzo6bWVkaWFncm91cCIsIlZJREVP
+OjptdXRlZCIsIlZJREVPOjpwcmVsb2FkIiwiVklERU86OndpZHRoIl0pLHUuaSkKQy5WQz1ILlZNKHQo
+WzAsMCw2NTQ5MCw0NTA1NSw2NTUzNSwzNDgxNSw2NTUzNCwxODQzMV0pLHUuVikKQy5tSz1ILlZNKHQo
+WzAsMCwyNjYyNCwxMDIzLDY1NTM0LDIwNDcsNjU1MzQsMjA0N10pLHUuVikKQy5TcT1ILlZNKHQoWyJI
+RUFEIiwiQVJFQSIsIkJBU0UiLCJCQVNFRk9OVCIsIkJSIiwiQ09MIiwiQ09MR1JPVVAiLCJFTUJFRCIs
+IkZSQU1FIiwiRlJBTUVTRVQiLCJIUiIsIklNQUdFIiwiSU1HIiwiSU5QVVQiLCJJU0lOREVYIiwiTElO
+SyIsIk1FVEEiLCJQQVJBTSIsIlNPVVJDRSIsIlNUWUxFIiwiVElUTEUiLCJXQlIiXSksdS5pKQpDLmRu
+PUguVk0odChbXSksdS5iKQpDLnhEPUguVk0odChbXSksdS5pKQpDLnRvPUguVk0odChbMCwwLDMyNzIy
+LDEyMjg3LDY1NTM0LDM0ODE1LDY1NTM0LDE4NDMxXSksdS5WKQpDLkYzPUguVk0odChbMCwwLDI0NTc2
+LDEwMjMsNjU1MzQsMzQ4MTUsNjU1MzQsMTg0MzFdKSx1LlYpCkMuZWE9SC5WTSh0KFswLDAsMzI3NTQs
+MTEyNjMsNjU1MzQsMzQ4MTUsNjU1MzQsMTg0MzFdKSx1LlYpCkMuWko9SC5WTSh0KFswLDAsMzI3MjIs
+MTIyODcsNjU1MzUsMzQ4MTUsNjU1MzQsMTg0MzFdKSx1LlYpCkMuV2Q9SC5WTSh0KFswLDAsNjU0OTAs
+MTIyODcsNjU1MzUsMzQ4MTUsNjU1MzQsMTg0MzFdKSx1LlYpCkMuUXg9SC5WTSh0KFsiYmluZCIsImlm
+IiwicmVmIiwicmVwZWF0Iiwic3ludGF4Il0pLHUuaSkKQy5CST1ILlZNKHQoWyJBOjpocmVmIiwiQVJF
+QTo6aHJlZiIsIkJMT0NLUVVPVEU6OmNpdGUiLCJCT0RZOjpiYWNrZ3JvdW5kIiwiQ09NTUFORDo6aWNv
+biIsIkRFTDo6Y2l0ZSIsIkZPUk06OmFjdGlvbiIsIklNRzo6c3JjIiwiSU5QVVQ6OnNyYyIsIklOUzo6
+Y2l0ZSIsIlE6OmNpdGUiLCJWSURFTzo6cG9zdGVyIl0pLHUuaSkKQy5DTT1uZXcgSC5MUCgwLHt9LEMu
+eEQsSC5OMCgiTFA8cVUqLHpNPGo4Kj4qPiIpKQpDLldPPW5ldyBILkxQKDAse30sQy54RCxILk4wKCJM
+UDxxVSoscVUqPiIpKQpDLmhVPUguVk0odChbXSksSC5OMCgiamQ8R0QqPiIpKQpDLkR4PW5ldyBILkxQ
+KDAse30sQy5oVSxILk4wKCJMUDxHRCosQD4iKSkKQy5ZMj1uZXcgTC5POSgiTmF2aWdhdGlvblRyZWVO
+b2RlVHlwZS5kaXJlY3RvcnkiKQpDLnJmPW5ldyBMLk85KCJOYXZpZ2F0aW9uVHJlZU5vZGVUeXBlLmZp
+bGUiKQpDLlRlPW5ldyBILnd2KCJjYWxsIikKQy53UT1uZXcgUC5GeShudWxsLDIpfSkoKTsoZnVuY3Rp
+b24gc3RhdGljRmllbGRzKCl7JC56bT1udWxsCiQueWo9MAokLm1KPW51bGwKJC5QND1udWxsCiQuTkY9
+bnVsbAokLlRYPW51bGwKJC54Nz1udWxsCiQubnc9bnVsbAokLnZ2PW51bGwKJC5Cdj1udWxsCiQuUzY9
+bnVsbAokLms4PW51bGwKJC5tZz1udWxsCiQuVUQ9ITEKJC5YMz1DLk5VCiQueGc9SC5WTShbXSxILk4w
+KCJqZDxNaD4iKSkKJC54bz1udWxsCiQuQk89bnVsbAokLmx0PW51bGwKJC5FVT1udWxsCiQub3I9UC5G
+bCh1Lk4sdS5ZKQokLkk2PW51bGwKJC5GZj1udWxsfSkoKTsoZnVuY3Rpb24gbGF6eUluaXRpYWxpemVy
+cygpe3ZhciB0PWh1bmtIZWxwZXJzLmxhenkKdCgkLCJmYSIsInciLGZ1bmN0aW9uKCl7cmV0dXJuIEgu
+WWcoIl8kZGFydF9kYXJ0Q2xvc3VyZSIpfSkKdCgkLCJVMiIsIlNuIixmdW5jdGlvbigpe3JldHVybiBI
+LmNNKEguUzcoewp0b1N0cmluZzpmdW5jdGlvbigpe3JldHVybiIkcmVjZWl2ZXIkIn19KSl9KQp0KCQs
+InhxIiwibHEiLGZ1bmN0aW9uKCl7cmV0dXJuIEguY00oSC5TNyh7JG1ldGhvZCQ6bnVsbCwKdG9TdHJp
+bmc6ZnVuY3Rpb24oKXtyZXR1cm4iJHJlY2VpdmVyJCJ9fSkpfSkKdCgkLCJSMSIsIk45IixmdW5jdGlv
+bigpe3JldHVybiBILmNNKEguUzcobnVsbCkpfSkKdCgkLCJmTiIsImlJIixmdW5jdGlvbigpe3JldHVy
+biBILmNNKGZ1bmN0aW9uKCl7dmFyICRhcmd1bWVudHNFeHByJD0nJGFyZ3VtZW50cyQnCnRyeXtudWxs
+LiRtZXRob2QkKCRhcmd1bWVudHNFeHByJCl9Y2F0Y2gocyl7cmV0dXJuIHMubWVzc2FnZX19KCkpfSkK
+dCgkLCJxaSIsIlVOIixmdW5jdGlvbigpe3JldHVybiBILmNNKEguUzcodm9pZCAwKSl9KQp0KCQsInJa
+IiwiWmgiLGZ1bmN0aW9uKCl7cmV0dXJuIEguY00oZnVuY3Rpb24oKXt2YXIgJGFyZ3VtZW50c0V4cHIk
+PSckYXJndW1lbnRzJCcKdHJ5eyh2b2lkIDApLiRtZXRob2QkKCRhcmd1bWVudHNFeHByJCl9Y2F0Y2go
+cyl7cmV0dXJuIHMubWVzc2FnZX19KCkpfSkKdCgkLCJrcSIsInJOIixmdW5jdGlvbigpe3JldHVybiBI
+LmNNKEguTWoobnVsbCkpfSkKdCgkLCJ0dCIsImMzIixmdW5jdGlvbigpe3JldHVybiBILmNNKGZ1bmN0
+aW9uKCl7dHJ5e251bGwuJG1ldGhvZCR9Y2F0Y2gocyl7cmV0dXJuIHMubWVzc2FnZX19KCkpfSkKdCgk
+LCJkdCIsIkhLIixmdW5jdGlvbigpe3JldHVybiBILmNNKEguTWoodm9pZCAwKSl9KQp0KCQsIkE3Iiwi
+cjEiLGZ1bmN0aW9uKCl7cmV0dXJuIEguY00oZnVuY3Rpb24oKXt0cnl7KHZvaWQgMCkuJG1ldGhvZCR9
+Y2F0Y2gocyl7cmV0dXJuIHMubWVzc2FnZX19KCkpfSkKdCgkLCJXYyIsInV0IixmdW5jdGlvbigpe3Jl
+dHVybiBQLk9qKCl9KQp0KCQsImtoIiwicmYiLGZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBQLnBnKCkuJDAo
+KX0pCnQoJCwiYnQiLCJWNyIsZnVuY3Rpb24oKXtyZXR1cm4gbmV3IEludDhBcnJheShILlhGKEguVk0o
+Wy0yLC0yLC0yLC0yLC0yLC0yLC0yLC0yLC0yLC0yLC0yLC0yLC0yLC0yLC0yLC0yLC0yLC0yLC0yLC0y
+LC0yLC0yLC0yLC0yLC0yLC0yLC0yLC0yLC0yLC0yLC0yLC0yLC0yLC0yLC0yLC0yLC0yLC0xLC0yLC0y
+LC0yLC0yLC0yLDYyLC0yLDYyLC0yLDYzLDUyLDUzLDU0LDU1LDU2LDU3LDU4LDU5LDYwLDYxLC0yLC0y
+LC0yLC0xLC0yLC0yLC0yLDAsMSwyLDMsNCw1LDYsNyw4LDksMTAsMTEsMTIsMTMsMTQsMTUsMTYsMTcs
+MTgsMTksMjAsMjEsMjIsMjMsMjQsMjUsLTIsLTIsLTIsLTIsNjMsLTIsMjYsMjcsMjgsMjksMzAsMzEs
+MzIsMzMsMzQsMzUsMzYsMzcsMzgsMzksNDAsNDEsNDIsNDMsNDQsNDUsNDYsNDcsNDgsNDksNTAsNTEs
+LTIsLTIsLTIsLTIsLTJdLHUudCkpKX0pCnQoJCwiTTUiLCJ3USIsZnVuY3Rpb24oKXtyZXR1cm4gdHlw
+ZW9mIHByb2Nlc3MhPSJ1bmRlZmluZWQiJiZPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwocHJv
+Y2Vzcyk9PSJbb2JqZWN0IHByb2Nlc3NdIiYmcHJvY2Vzcy5wbGF0Zm9ybT09IndpbjMyIn0pCnQoJCwi
+bWYiLCJ6NCIsZnVuY3Rpb24oKXtyZXR1cm4gUC5udSgiXltcXC1cXC4wLTlBLVpfYS16fl0qJCIpfSkK
+dCgkLCJKRyIsInZaIixmdW5jdGlvbigpe3JldHVybiBQLktOKCl9KQp0KCQsIlNDIiwiQU4iLGZ1bmN0
+aW9uKCl7cmV0dXJuIFAudE0oWyJBIiwiQUJCUiIsIkFDUk9OWU0iLCJBRERSRVNTIiwiQVJFQSIsIkFS
+VElDTEUiLCJBU0lERSIsIkFVRElPIiwiQiIsIkJESSIsIkJETyIsIkJJRyIsIkJMT0NLUVVPVEUiLCJC
+UiIsIkJVVFRPTiIsIkNBTlZBUyIsIkNBUFRJT04iLCJDRU5URVIiLCJDSVRFIiwiQ09ERSIsIkNPTCIs
+IkNPTEdST1VQIiwiQ09NTUFORCIsIkRBVEEiLCJEQVRBTElTVCIsIkREIiwiREVMIiwiREVUQUlMUyIs
+IkRGTiIsIkRJUiIsIkRJViIsIkRMIiwiRFQiLCJFTSIsIkZJRUxEU0VUIiwiRklHQ0FQVElPTiIsIkZJ
+R1VSRSIsIkZPTlQiLCJGT09URVIiLCJGT1JNIiwiSDEiLCJIMiIsIkgzIiwiSDQiLCJINSIsIkg2Iiwi
+SEVBREVSIiwiSEdST1VQIiwiSFIiLCJJIiwiSUZSQU1FIiwiSU1HIiwiSU5QVVQiLCJJTlMiLCJLQkQi
+LCJMQUJFTCIsIkxFR0VORCIsIkxJIiwiTUFQIiwiTUFSSyIsIk1FTlUiLCJNRVRFUiIsIk5BViIsIk5P
+QlIiLCJPTCIsIk9QVEdST1VQIiwiT1BUSU9OIiwiT1VUUFVUIiwiUCIsIlBSRSIsIlBST0dSRVNTIiwi
+USIsIlMiLCJTQU1QIiwiU0VDVElPTiIsIlNFTEVDVCIsIlNNQUxMIiwiU09VUkNFIiwiU1BBTiIsIlNU
+UklLRSIsIlNUUk9ORyIsIlNVQiIsIlNVTU1BUlkiLCJTVVAiLCJUQUJMRSIsIlRCT0RZIiwiVEQiLCJU
+RVhUQVJFQSIsIlRGT09UIiwiVEgiLCJUSEVBRCIsIlRJTUUiLCJUUiIsIlRSQUNLIiwiVFQiLCJVIiwi
+VUwiLCJWQVIiLCJWSURFTyIsIldCUiJdLHUuTil9KQp0KCQsIlg0IiwiaEciLGZ1bmN0aW9uKCl7cmV0
+dXJuIFAubnUoIl5cXFMrJCIpfSkKdCgkLCJ3TyIsIm93IixmdW5jdGlvbigpe3JldHVybiBQLk5EKHNl
+bGYpfSkKdCgkLCJrdCIsIlI4IixmdW5jdGlvbigpe3JldHVybiBILllnKCJfJGRhcnRfZGFydE9iamVj
+dCIpfSkKdCgkLCJmSyIsImtJIixmdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbiBEYXJ0T2JqZWN0KGEp
+e3RoaXMubz1hfX0pCnQoJCwicXQiLCJ6QiIsZnVuY3Rpb24oKXtyZXR1cm4gbmV3IFQubVEoKX0pCnQo
+JCwiT2wiLCJVRSIsZnVuY3Rpb24oKXtyZXR1cm4gUC5oSyhDLm9sLmdtVyhXLngzKCkpLmhyZWYpLmdo
+WSgpLnEoMCwiYXV0aFRva2VuIil9KQp0KCQsImhUIiwieVAiLGZ1bmN0aW9uKCl7cmV0dXJuIFcuWnIo
+KS5xdWVyeVNlbGVjdG9yKCIuZWRpdC1saXN0IC5wYW5lbC1jb250ZW50Iil9KQp0KCQsIlc2IiwiaEwi
+LGZ1bmN0aW9uKCl7cmV0dXJuIFcuWnIoKS5xdWVyeVNlbGVjdG9yKCIuZWRpdC1wYW5lbCAucGFuZWwt
+Y29udGVudCIpfSkKdCgkLCJUUiIsIkRXIixmdW5jdGlvbigpe3JldHVybiBXLlpyKCkucXVlcnlTZWxl
+Y3RvcigiZm9vdGVyIil9KQp0KCQsIkVZIiwiZmkiLGZ1bmN0aW9uKCl7cmV0dXJuIFcuWnIoKS5xdWVy
+eVNlbGVjdG9yKCJoZWFkZXIiKX0pCnQoJCwiYXYiLCJEOSIsZnVuY3Rpb24oKXtyZXR1cm4gVy5acigp
+LnF1ZXJ5U2VsZWN0b3IoIiN1bml0LW5hbWUiKX0pCnQoJCwiZmUiLCJLRyIsZnVuY3Rpb24oKXtyZXR1
+cm4gbmV3IEwuWEEoKX0pCnQoJCwiZW8iLCJuVSIsZnVuY3Rpb24oKXtyZXR1cm4gbmV3IE0ubEkoJC5I
+aygpKX0pCnQoJCwieXIiLCJiRCIsZnVuY3Rpb24oKXtyZXR1cm4gbmV3IEUuT0YoUC5udSgiLyIpLFAu
+bnUoIlteL10kIiksUC5udSgiXi8iKSl9KQp0KCQsIk1rIiwiS2siLGZ1bmN0aW9uKCl7cmV0dXJuIG5l
+dyBMLklWKFAubnUoIlsvXFxcXF0iKSxQLm51KCJbXi9cXFxcXSQiKSxQLm51KCJeKFxcXFxcXFxcW15c
+XFxcXStcXFxcW15cXFxcL10rfFthLXpBLVpdOlsvXFxcXF0pIiksUC5udSgiXlsvXFxcXF0oPyFbL1xc
+XFxdKSIpKX0pCnQoJCwiYWsiLCJFYiIsZnVuY3Rpb24oKXtyZXR1cm4gbmV3IEYucnUoUC5udSgiLyIp
+LFAubnUoIiheW2EtekEtWl1bLSsuYS16QS1aXFxkXSo6Ly98W14vXSkkIiksUC5udSgiW2EtekEtWl1b
+LSsuYS16QS1aXFxkXSo6Ly9bXi9dKiIpLFAubnUoIl4vIikpfSkKdCgkLCJscyIsIkhrIixmdW5jdGlv
+bigpe3JldHVybiBPLlJoKCl9KX0pKCk7KGZ1bmN0aW9uIG5hdGl2ZVN1cHBvcnQoKXshZnVuY3Rpb24o
+KXt2YXIgdD1mdW5jdGlvbihhKXt2YXIgbj17fQpuW2FdPTEKcmV0dXJuIE9iamVjdC5rZXlzKGh1bmtI
+ZWxwZXJzLmNvbnZlcnRUb0Zhc3RPYmplY3QobikpWzBdfQp2LmdldElzb2xhdGVUYWc9ZnVuY3Rpb24o
+YSl7cmV0dXJuIHQoIl9fX2RhcnRfIithK3YuaXNvbGF0ZVRhZyl9CnZhciBzPSJfX19kYXJ0X2lzb2xh
+dGVfdGFnc18iCnZhciByPU9iamVjdFtzXXx8KE9iamVjdFtzXT1PYmplY3QuY3JlYXRlKG51bGwpKQp2
+YXIgcT0iX1p4WXhYIgpmb3IodmFyIHA9MDs7cCsrKXt2YXIgbz10KHErIl8iK3ArIl8iKQppZighKG8g
+aW4gcikpe3Jbb109MQp2Lmlzb2xhdGVUYWc9bwpicmVha319di5kaXNwYXRjaFByb3BlcnR5TmFtZT12
+LmdldElzb2xhdGVUYWcoImRpc3BhdGNoX3JlY29yZCIpfSgpCmh1bmtIZWxwZXJzLnNldE9yVXBkYXRl
+SW50ZXJjZXB0b3JzQnlUYWcoe0RPTUVycm9yOkoudkIsTWVkaWFFcnJvcjpKLnZCLE5hdmlnYXRvcjpK
+LnZCLE5hdmlnYXRvckNvbmN1cnJlbnRIYXJkd2FyZTpKLnZCLE5hdmlnYXRvclVzZXJNZWRpYUVycm9y
+OkoudkIsT3ZlcmNvbnN0cmFpbmVkRXJyb3I6Si52QixQb3NpdGlvbkVycm9yOkoudkIsUmFuZ2U6Si52
+QixTUUxFcnJvcjpKLnZCLERhdGFWaWV3OkguRVQsQXJyYXlCdWZmZXJWaWV3OkguRVQsRmxvYXQzMkFy
+cmF5OkguRGcsRmxvYXQ2NEFycmF5OkguRGcsSW50MTZBcnJheTpILnhqLEludDMyQXJyYXk6SC5kRSxJ
+bnQ4QXJyYXk6SC5aQSxVaW50MTZBcnJheTpILmRULFVpbnQzMkFycmF5OkguUHEsVWludDhDbGFtcGVk
+QXJyYXk6SC5lRSxDYW52YXNQaXhlbEFycmF5OkguZUUsVWludDhBcnJheTpILlY2LEhUTUxBdWRpb0Vs
+ZW1lbnQ6Vy5xRSxIVE1MQlJFbGVtZW50OlcucUUsSFRNTEJ1dHRvbkVsZW1lbnQ6Vy5xRSxIVE1MQ2Fu
+dmFzRWxlbWVudDpXLnFFLEhUTUxDb250ZW50RWxlbWVudDpXLnFFLEhUTUxETGlzdEVsZW1lbnQ6Vy5x
+RSxIVE1MRGF0YUVsZW1lbnQ6Vy5xRSxIVE1MRGF0YUxpc3RFbGVtZW50OlcucUUsSFRNTERldGFpbHNF
+bGVtZW50OlcucUUsSFRNTERpYWxvZ0VsZW1lbnQ6Vy5xRSxIVE1MRGl2RWxlbWVudDpXLnFFLEhUTUxF
+bWJlZEVsZW1lbnQ6Vy5xRSxIVE1MRmllbGRTZXRFbGVtZW50OlcucUUsSFRNTEhSRWxlbWVudDpXLnFF
+LEhUTUxIZWFkRWxlbWVudDpXLnFFLEhUTUxIZWFkaW5nRWxlbWVudDpXLnFFLEhUTUxIdG1sRWxlbWVu
+dDpXLnFFLEhUTUxJRnJhbWVFbGVtZW50OlcucUUsSFRNTEltYWdlRWxlbWVudDpXLnFFLEhUTUxJbnB1
+dEVsZW1lbnQ6Vy5xRSxIVE1MTElFbGVtZW50OlcucUUsSFRNTExhYmVsRWxlbWVudDpXLnFFLEhUTUxM
+ZWdlbmRFbGVtZW50OlcucUUsSFRNTExpbmtFbGVtZW50OlcucUUsSFRNTE1hcEVsZW1lbnQ6Vy5xRSxI
+VE1MTWVkaWFFbGVtZW50OlcucUUsSFRNTE1lbnVFbGVtZW50OlcucUUsSFRNTE1ldGFFbGVtZW50Olcu
+cUUsSFRNTE1ldGVyRWxlbWVudDpXLnFFLEhUTUxNb2RFbGVtZW50OlcucUUsSFRNTE9MaXN0RWxlbWVu
+dDpXLnFFLEhUTUxPYmplY3RFbGVtZW50OlcucUUsSFRNTE9wdEdyb3VwRWxlbWVudDpXLnFFLEhUTUxP
+cHRpb25FbGVtZW50OlcucUUsSFRNTE91dHB1dEVsZW1lbnQ6Vy5xRSxIVE1MUGFyYW1FbGVtZW50Olcu
+cUUsSFRNTFBpY3R1cmVFbGVtZW50OlcucUUsSFRNTFByZUVsZW1lbnQ6Vy5xRSxIVE1MUHJvZ3Jlc3NF
+bGVtZW50OlcucUUsSFRNTFF1b3RlRWxlbWVudDpXLnFFLEhUTUxTY3JpcHRFbGVtZW50OlcucUUsSFRN
+TFNoYWRvd0VsZW1lbnQ6Vy5xRSxIVE1MU2xvdEVsZW1lbnQ6Vy5xRSxIVE1MU291cmNlRWxlbWVudDpX
+LnFFLEhUTUxTcGFuRWxlbWVudDpXLnFFLEhUTUxTdHlsZUVsZW1lbnQ6Vy5xRSxIVE1MVGFibGVDYXB0
+aW9uRWxlbWVudDpXLnFFLEhUTUxUYWJsZUNlbGxFbGVtZW50OlcucUUsSFRNTFRhYmxlRGF0YUNlbGxF
+bGVtZW50OlcucUUsSFRNTFRhYmxlSGVhZGVyQ2VsbEVsZW1lbnQ6Vy5xRSxIVE1MVGFibGVDb2xFbGVt
+ZW50OlcucUUsSFRNTFRleHRBcmVhRWxlbWVudDpXLnFFLEhUTUxUaW1lRWxlbWVudDpXLnFFLEhUTUxU
+aXRsZUVsZW1lbnQ6Vy5xRSxIVE1MVHJhY2tFbGVtZW50OlcucUUsSFRNTFVMaXN0RWxlbWVudDpXLnFF
+LEhUTUxVbmtub3duRWxlbWVudDpXLnFFLEhUTUxWaWRlb0VsZW1lbnQ6Vy5xRSxIVE1MRGlyZWN0b3J5
+RWxlbWVudDpXLnFFLEhUTUxGb250RWxlbWVudDpXLnFFLEhUTUxGcmFtZUVsZW1lbnQ6Vy5xRSxIVE1M
+RnJhbWVTZXRFbGVtZW50OlcucUUsSFRNTE1hcnF1ZWVFbGVtZW50OlcucUUsSFRNTEVsZW1lbnQ6Vy5x
+RSxIVE1MQW5jaG9yRWxlbWVudDpXLkdoLEhUTUxBcmVhRWxlbWVudDpXLmZZLEhUTUxCYXNlRWxlbWVu
+dDpXLm5CLEJsb2I6Vy5BeixIVE1MQm9keUVsZW1lbnQ6Vy5RUCxDREFUQVNlY3Rpb246Vy5ueCxDaGFy
+YWN0ZXJEYXRhOlcubngsQ29tbWVudDpXLm54LFByb2Nlc3NpbmdJbnN0cnVjdGlvbjpXLm54LFRleHQ6
+Vy5ueCxDU1NTdHlsZURlY2xhcmF0aW9uOlcub0osTVNTdHlsZUNTU1Byb3BlcnRpZXM6Vy5vSixDU1My
+UHJvcGVydGllczpXLm9KLFhNTERvY3VtZW50OlcuUUYsRG9jdW1lbnQ6Vy5RRixET01FeGNlcHRpb246
+Vy5OaCxET01JbXBsZW1lbnRhdGlvbjpXLmFlLERPTVJlY3RSZWFkT25seTpXLklCLERPTVRva2VuTGlz
+dDpXLm43LEVsZW1lbnQ6Vy5jdixBYm9ydFBheW1lbnRFdmVudDpXLmVhLEFuaW1hdGlvbkV2ZW50Olcu
+ZWEsQW5pbWF0aW9uUGxheWJhY2tFdmVudDpXLmVhLEFwcGxpY2F0aW9uQ2FjaGVFcnJvckV2ZW50Olcu
+ZWEsQmFja2dyb3VuZEZldGNoQ2xpY2tFdmVudDpXLmVhLEJhY2tncm91bmRGZXRjaEV2ZW50OlcuZWEs
+QmFja2dyb3VuZEZldGNoRmFpbEV2ZW50OlcuZWEsQmFja2dyb3VuZEZldGNoZWRFdmVudDpXLmVhLEJl
+Zm9yZUluc3RhbGxQcm9tcHRFdmVudDpXLmVhLEJlZm9yZVVubG9hZEV2ZW50OlcuZWEsQmxvYkV2ZW50
+OlcuZWEsQ2FuTWFrZVBheW1lbnRFdmVudDpXLmVhLENsaXBib2FyZEV2ZW50OlcuZWEsQ2xvc2VFdmVu
+dDpXLmVhLEN1c3RvbUV2ZW50OlcuZWEsRGV2aWNlTW90aW9uRXZlbnQ6Vy5lYSxEZXZpY2VPcmllbnRh
+dGlvbkV2ZW50OlcuZWEsRXJyb3JFdmVudDpXLmVhLEV4dGVuZGFibGVFdmVudDpXLmVhLEV4dGVuZGFi
+bGVNZXNzYWdlRXZlbnQ6Vy5lYSxGZXRjaEV2ZW50OlcuZWEsRm9udEZhY2VTZXRMb2FkRXZlbnQ6Vy5l
+YSxGb3JlaWduRmV0Y2hFdmVudDpXLmVhLEdhbWVwYWRFdmVudDpXLmVhLEhhc2hDaGFuZ2VFdmVudDpX
+LmVhLEluc3RhbGxFdmVudDpXLmVhLE1lZGlhRW5jcnlwdGVkRXZlbnQ6Vy5lYSxNZWRpYUtleU1lc3Nh
+Z2VFdmVudDpXLmVhLE1lZGlhUXVlcnlMaXN0RXZlbnQ6Vy5lYSxNZWRpYVN0cmVhbUV2ZW50OlcuZWEs
+TWVkaWFTdHJlYW1UcmFja0V2ZW50OlcuZWEsTWVzc2FnZUV2ZW50OlcuZWEsTUlESUNvbm5lY3Rpb25F
+dmVudDpXLmVhLE1JRElNZXNzYWdlRXZlbnQ6Vy5lYSxNdXRhdGlvbkV2ZW50OlcuZWEsTm90aWZpY2F0
+aW9uRXZlbnQ6Vy5lYSxQYWdlVHJhbnNpdGlvbkV2ZW50OlcuZWEsUGF5bWVudFJlcXVlc3RFdmVudDpX
+LmVhLFBheW1lbnRSZXF1ZXN0VXBkYXRlRXZlbnQ6Vy5lYSxQb3BTdGF0ZUV2ZW50OlcuZWEsUHJlc2Vu
+dGF0aW9uQ29ubmVjdGlvbkF2YWlsYWJsZUV2ZW50OlcuZWEsUHJlc2VudGF0aW9uQ29ubmVjdGlvbkNs
+b3NlRXZlbnQ6Vy5lYSxQcm9taXNlUmVqZWN0aW9uRXZlbnQ6Vy5lYSxQdXNoRXZlbnQ6Vy5lYSxSVENE
+YXRhQ2hhbm5lbEV2ZW50OlcuZWEsUlRDRFRNRlRvbmVDaGFuZ2VFdmVudDpXLmVhLFJUQ1BlZXJDb25u
+ZWN0aW9uSWNlRXZlbnQ6Vy5lYSxSVENUcmFja0V2ZW50OlcuZWEsU2VjdXJpdHlQb2xpY3lWaW9sYXRp
+b25FdmVudDpXLmVhLFNlbnNvckVycm9yRXZlbnQ6Vy5lYSxTcGVlY2hSZWNvZ25pdGlvbkVycm9yOlcu
+ZWEsU3BlZWNoUmVjb2duaXRpb25FdmVudDpXLmVhLFNwZWVjaFN5bnRoZXNpc0V2ZW50OlcuZWEsU3Rv
+cmFnZUV2ZW50OlcuZWEsU3luY0V2ZW50OlcuZWEsVHJhY2tFdmVudDpXLmVhLFRyYW5zaXRpb25FdmVu
+dDpXLmVhLFdlYktpdFRyYW5zaXRpb25FdmVudDpXLmVhLFZSRGV2aWNlRXZlbnQ6Vy5lYSxWUkRpc3Bs
+YXlFdmVudDpXLmVhLFZSU2Vzc2lvbkV2ZW50OlcuZWEsTW9qb0ludGVyZmFjZVJlcXVlc3RFdmVudDpX
+LmVhLFVTQkNvbm5lY3Rpb25FdmVudDpXLmVhLElEQlZlcnNpb25DaGFuZ2VFdmVudDpXLmVhLEF1ZGlv
+UHJvY2Vzc2luZ0V2ZW50OlcuZWEsT2ZmbGluZUF1ZGlvQ29tcGxldGlvbkV2ZW50OlcuZWEsV2ViR0xD
+b250ZXh0RXZlbnQ6Vy5lYSxFdmVudDpXLmVhLElucHV0RXZlbnQ6Vy5lYSxTdWJtaXRFdmVudDpXLmVh
+LEV2ZW50VGFyZ2V0OlcuRDAsRmlsZTpXLlQ1LEhUTUxGb3JtRWxlbWVudDpXLmg0LEhpc3Rvcnk6Vy5i
+cixIVE1MRG9jdW1lbnQ6Vy5WYixYTUxIdHRwUmVxdWVzdDpXLmZKLFhNTEh0dHBSZXF1ZXN0RXZlbnRU
+YXJnZXQ6Vy53YSxJbWFnZURhdGE6Vy5TZyxMb2NhdGlvbjpXLnU4LE1vdXNlRXZlbnQ6Vy5PSyxEcmFn
+RXZlbnQ6Vy5PSyxQb2ludGVyRXZlbnQ6Vy5PSyxXaGVlbEV2ZW50OlcuT0ssRG9jdW1lbnRGcmFnbWVu
+dDpXLnVILFNoYWRvd1Jvb3Q6Vy51SCxEb2N1bWVudFR5cGU6Vy51SCxOb2RlOlcudUgsTm9kZUxpc3Q6
+Vy5CSCxSYWRpb05vZGVMaXN0OlcuQkgsSFRNTFBhcmFncmFwaEVsZW1lbnQ6Vy5TTixQcm9ncmVzc0V2
+ZW50OlcuZXcsUmVzb3VyY2VQcm9ncmVzc0V2ZW50OlcuZXcsSFRNTFNlbGVjdEVsZW1lbnQ6Vy5scCxI
+VE1MVGFibGVFbGVtZW50OlcuVGIsSFRNTFRhYmxlUm93RWxlbWVudDpXLkl2LEhUTUxUYWJsZVNlY3Rp
+b25FbGVtZW50OlcuV1AsSFRNTFRlbXBsYXRlRWxlbWVudDpXLnlZLENvbXBvc2l0aW9uRXZlbnQ6Vy53
+NixGb2N1c0V2ZW50OlcudzYsS2V5Ym9hcmRFdmVudDpXLnc2LFRleHRFdmVudDpXLnc2LFRvdWNoRXZl
+bnQ6Vy53NixVSUV2ZW50OlcudzYsV2luZG93OlcuSzUsRE9NV2luZG93OlcuSzUsRGVkaWNhdGVkV29y
+a2VyR2xvYmFsU2NvcGU6Vy5DbSxTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU6Vy5DbSxTaGFyZWRXb3Jr
+ZXJHbG9iYWxTY29wZTpXLkNtLFdvcmtlckdsb2JhbFNjb3BlOlcuQ20sQXR0cjpXLkNRLENsaWVudFJl
+Y3Q6Vy53NCxET01SZWN0OlcudzQsTmFtZWROb2RlTWFwOlcucmgsTW96TmFtZWRBdHRyTWFwOlcucmgs
+SURCS2V5UmFuZ2U6UC5oRixTVkdTY3JpcHRFbGVtZW50OlAuYkIsU1ZHQUVsZW1lbnQ6UC5kNSxTVkdB
+bmltYXRlRWxlbWVudDpQLmQ1LFNWR0FuaW1hdGVNb3Rpb25FbGVtZW50OlAuZDUsU1ZHQW5pbWF0ZVRy
+YW5zZm9ybUVsZW1lbnQ6UC5kNSxTVkdBbmltYXRpb25FbGVtZW50OlAuZDUsU1ZHQ2lyY2xlRWxlbWVu
+dDpQLmQ1LFNWR0NsaXBQYXRoRWxlbWVudDpQLmQ1LFNWR0RlZnNFbGVtZW50OlAuZDUsU1ZHRGVzY0Vs
+ZW1lbnQ6UC5kNSxTVkdEaXNjYXJkRWxlbWVudDpQLmQ1LFNWR0VsbGlwc2VFbGVtZW50OlAuZDUsU1ZH
+RkVCbGVuZEVsZW1lbnQ6UC5kNSxTVkdGRUNvbG9yTWF0cml4RWxlbWVudDpQLmQ1LFNWR0ZFQ29tcG9u
+ZW50VHJhbnNmZXJFbGVtZW50OlAuZDUsU1ZHRkVDb21wb3NpdGVFbGVtZW50OlAuZDUsU1ZHRkVDb252
+b2x2ZU1hdHJpeEVsZW1lbnQ6UC5kNSxTVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQ6UC5kNSxTVkdG
+RURpc3BsYWNlbWVudE1hcEVsZW1lbnQ6UC5kNSxTVkdGRURpc3RhbnRMaWdodEVsZW1lbnQ6UC5kNSxT
+VkdGRUZsb29kRWxlbWVudDpQLmQ1LFNWR0ZFRnVuY0FFbGVtZW50OlAuZDUsU1ZHRkVGdW5jQkVsZW1l
+bnQ6UC5kNSxTVkdGRUZ1bmNHRWxlbWVudDpQLmQ1LFNWR0ZFRnVuY1JFbGVtZW50OlAuZDUsU1ZHRkVH
+YXVzc2lhbkJsdXJFbGVtZW50OlAuZDUsU1ZHRkVJbWFnZUVsZW1lbnQ6UC5kNSxTVkdGRU1lcmdlRWxl
+bWVudDpQLmQ1LFNWR0ZFTWVyZ2VOb2RlRWxlbWVudDpQLmQ1LFNWR0ZFTW9ycGhvbG9neUVsZW1lbnQ6
+UC5kNSxTVkdGRU9mZnNldEVsZW1lbnQ6UC5kNSxTVkdGRVBvaW50TGlnaHRFbGVtZW50OlAuZDUsU1ZH
+RkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudDpQLmQ1LFNWR0ZFU3BvdExpZ2h0RWxlbWVudDpQLmQ1LFNW
+R0ZFVGlsZUVsZW1lbnQ6UC5kNSxTVkdGRVR1cmJ1bGVuY2VFbGVtZW50OlAuZDUsU1ZHRmlsdGVyRWxl
+bWVudDpQLmQ1LFNWR0ZvcmVpZ25PYmplY3RFbGVtZW50OlAuZDUsU1ZHR0VsZW1lbnQ6UC5kNSxTVkdH
+ZW9tZXRyeUVsZW1lbnQ6UC5kNSxTVkdHcmFwaGljc0VsZW1lbnQ6UC5kNSxTVkdJbWFnZUVsZW1lbnQ6
+UC5kNSxTVkdMaW5lRWxlbWVudDpQLmQ1LFNWR0xpbmVhckdyYWRpZW50RWxlbWVudDpQLmQ1LFNWR01h
+cmtlckVsZW1lbnQ6UC5kNSxTVkdNYXNrRWxlbWVudDpQLmQ1LFNWR01ldGFkYXRhRWxlbWVudDpQLmQ1
+LFNWR1BhdGhFbGVtZW50OlAuZDUsU1ZHUGF0dGVybkVsZW1lbnQ6UC5kNSxTVkdQb2x5Z29uRWxlbWVu
+dDpQLmQ1LFNWR1BvbHlsaW5lRWxlbWVudDpQLmQ1LFNWR1JhZGlhbEdyYWRpZW50RWxlbWVudDpQLmQ1
+LFNWR1JlY3RFbGVtZW50OlAuZDUsU1ZHU2V0RWxlbWVudDpQLmQ1LFNWR1N0b3BFbGVtZW50OlAuZDUs
+U1ZHU3R5bGVFbGVtZW50OlAuZDUsU1ZHU1ZHRWxlbWVudDpQLmQ1LFNWR1N3aXRjaEVsZW1lbnQ6UC5k
+NSxTVkdTeW1ib2xFbGVtZW50OlAuZDUsU1ZHVFNwYW5FbGVtZW50OlAuZDUsU1ZHVGV4dENvbnRlbnRF
+bGVtZW50OlAuZDUsU1ZHVGV4dEVsZW1lbnQ6UC5kNSxTVkdUZXh0UGF0aEVsZW1lbnQ6UC5kNSxTVkdU
+ZXh0UG9zaXRpb25pbmdFbGVtZW50OlAuZDUsU1ZHVGl0bGVFbGVtZW50OlAuZDUsU1ZHVXNlRWxlbWVu
+dDpQLmQ1LFNWR1ZpZXdFbGVtZW50OlAuZDUsU1ZHR3JhZGllbnRFbGVtZW50OlAuZDUsU1ZHQ29tcG9u
+ZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQ6UC5kNSxTVkdGRURyb3BTaGFkb3dFbGVtZW50OlAuZDUs
+U1ZHTVBhdGhFbGVtZW50OlAuZDUsU1ZHRWxlbWVudDpQLmQ1fSkKaHVua0hlbHBlcnMuc2V0T3JVcGRh
+dGVMZWFmVGFncyh7RE9NRXJyb3I6dHJ1ZSxNZWRpYUVycm9yOnRydWUsTmF2aWdhdG9yOnRydWUsTmF2
+aWdhdG9yQ29uY3VycmVudEhhcmR3YXJlOnRydWUsTmF2aWdhdG9yVXNlck1lZGlhRXJyb3I6dHJ1ZSxP
+dmVyY29uc3RyYWluZWRFcnJvcjp0cnVlLFBvc2l0aW9uRXJyb3I6dHJ1ZSxSYW5nZTp0cnVlLFNRTEVy
+cm9yOnRydWUsRGF0YVZpZXc6dHJ1ZSxBcnJheUJ1ZmZlclZpZXc6ZmFsc2UsRmxvYXQzMkFycmF5OnRy
+dWUsRmxvYXQ2NEFycmF5OnRydWUsSW50MTZBcnJheTp0cnVlLEludDMyQXJyYXk6dHJ1ZSxJbnQ4QXJy
+YXk6dHJ1ZSxVaW50MTZBcnJheTp0cnVlLFVpbnQzMkFycmF5OnRydWUsVWludDhDbGFtcGVkQXJyYXk6
+dHJ1ZSxDYW52YXNQaXhlbEFycmF5OnRydWUsVWludDhBcnJheTpmYWxzZSxIVE1MQXVkaW9FbGVtZW50
+OnRydWUsSFRNTEJSRWxlbWVudDp0cnVlLEhUTUxCdXR0b25FbGVtZW50OnRydWUsSFRNTENhbnZhc0Vs
+ZW1lbnQ6dHJ1ZSxIVE1MQ29udGVudEVsZW1lbnQ6dHJ1ZSxIVE1MRExpc3RFbGVtZW50OnRydWUsSFRN
+TERhdGFFbGVtZW50OnRydWUsSFRNTERhdGFMaXN0RWxlbWVudDp0cnVlLEhUTUxEZXRhaWxzRWxlbWVu
+dDp0cnVlLEhUTUxEaWFsb2dFbGVtZW50OnRydWUsSFRNTERpdkVsZW1lbnQ6dHJ1ZSxIVE1MRW1iZWRF
+bGVtZW50OnRydWUsSFRNTEZpZWxkU2V0RWxlbWVudDp0cnVlLEhUTUxIUkVsZW1lbnQ6dHJ1ZSxIVE1M
+SGVhZEVsZW1lbnQ6dHJ1ZSxIVE1MSGVhZGluZ0VsZW1lbnQ6dHJ1ZSxIVE1MSHRtbEVsZW1lbnQ6dHJ1
+ZSxIVE1MSUZyYW1lRWxlbWVudDp0cnVlLEhUTUxJbWFnZUVsZW1lbnQ6dHJ1ZSxIVE1MSW5wdXRFbGVt
+ZW50OnRydWUsSFRNTExJRWxlbWVudDp0cnVlLEhUTUxMYWJlbEVsZW1lbnQ6dHJ1ZSxIVE1MTGVnZW5k
+RWxlbWVudDp0cnVlLEhUTUxMaW5rRWxlbWVudDp0cnVlLEhUTUxNYXBFbGVtZW50OnRydWUsSFRNTE1l
+ZGlhRWxlbWVudDp0cnVlLEhUTUxNZW51RWxlbWVudDp0cnVlLEhUTUxNZXRhRWxlbWVudDp0cnVlLEhU
+TUxNZXRlckVsZW1lbnQ6dHJ1ZSxIVE1MTW9kRWxlbWVudDp0cnVlLEhUTUxPTGlzdEVsZW1lbnQ6dHJ1
+ZSxIVE1MT2JqZWN0RWxlbWVudDp0cnVlLEhUTUxPcHRHcm91cEVsZW1lbnQ6dHJ1ZSxIVE1MT3B0aW9u
+RWxlbWVudDp0cnVlLEhUTUxPdXRwdXRFbGVtZW50OnRydWUsSFRNTFBhcmFtRWxlbWVudDp0cnVlLEhU
+TUxQaWN0dXJlRWxlbWVudDp0cnVlLEhUTUxQcmVFbGVtZW50OnRydWUsSFRNTFByb2dyZXNzRWxlbWVu
+dDp0cnVlLEhUTUxRdW90ZUVsZW1lbnQ6dHJ1ZSxIVE1MU2NyaXB0RWxlbWVudDp0cnVlLEhUTUxTaGFk
+b3dFbGVtZW50OnRydWUsSFRNTFNsb3RFbGVtZW50OnRydWUsSFRNTFNvdXJjZUVsZW1lbnQ6dHJ1ZSxI
+VE1MU3BhbkVsZW1lbnQ6dHJ1ZSxIVE1MU3R5bGVFbGVtZW50OnRydWUsSFRNTFRhYmxlQ2FwdGlvbkVs
+ZW1lbnQ6dHJ1ZSxIVE1MVGFibGVDZWxsRWxlbWVudDp0cnVlLEhUTUxUYWJsZURhdGFDZWxsRWxlbWVu
+dDp0cnVlLEhUTUxUYWJsZUhlYWRlckNlbGxFbGVtZW50OnRydWUsSFRNTFRhYmxlQ29sRWxlbWVudDp0
+cnVlLEhUTUxUZXh0QXJlYUVsZW1lbnQ6dHJ1ZSxIVE1MVGltZUVsZW1lbnQ6dHJ1ZSxIVE1MVGl0bGVF
+bGVtZW50OnRydWUsSFRNTFRyYWNrRWxlbWVudDp0cnVlLEhUTUxVTGlzdEVsZW1lbnQ6dHJ1ZSxIVE1M
+VW5rbm93bkVsZW1lbnQ6dHJ1ZSxIVE1MVmlkZW9FbGVtZW50OnRydWUsSFRNTERpcmVjdG9yeUVsZW1l
+bnQ6dHJ1ZSxIVE1MRm9udEVsZW1lbnQ6dHJ1ZSxIVE1MRnJhbWVFbGVtZW50OnRydWUsSFRNTEZyYW1l
+U2V0RWxlbWVudDp0cnVlLEhUTUxNYXJxdWVlRWxlbWVudDp0cnVlLEhUTUxFbGVtZW50OmZhbHNlLEhU
+TUxBbmNob3JFbGVtZW50OnRydWUsSFRNTEFyZWFFbGVtZW50OnRydWUsSFRNTEJhc2VFbGVtZW50OnRy
+dWUsQmxvYjpmYWxzZSxIVE1MQm9keUVsZW1lbnQ6dHJ1ZSxDREFUQVNlY3Rpb246dHJ1ZSxDaGFyYWN0
+ZXJEYXRhOnRydWUsQ29tbWVudDp0cnVlLFByb2Nlc3NpbmdJbnN0cnVjdGlvbjp0cnVlLFRleHQ6dHJ1
+ZSxDU1NTdHlsZURlY2xhcmF0aW9uOnRydWUsTVNTdHlsZUNTU1Byb3BlcnRpZXM6dHJ1ZSxDU1MyUHJv
+cGVydGllczp0cnVlLFhNTERvY3VtZW50OnRydWUsRG9jdW1lbnQ6ZmFsc2UsRE9NRXhjZXB0aW9uOnRy
+dWUsRE9NSW1wbGVtZW50YXRpb246dHJ1ZSxET01SZWN0UmVhZE9ubHk6ZmFsc2UsRE9NVG9rZW5MaXN0
+OnRydWUsRWxlbWVudDpmYWxzZSxBYm9ydFBheW1lbnRFdmVudDp0cnVlLEFuaW1hdGlvbkV2ZW50OnRy
+dWUsQW5pbWF0aW9uUGxheWJhY2tFdmVudDp0cnVlLEFwcGxpY2F0aW9uQ2FjaGVFcnJvckV2ZW50OnRy
+dWUsQmFja2dyb3VuZEZldGNoQ2xpY2tFdmVudDp0cnVlLEJhY2tncm91bmRGZXRjaEV2ZW50OnRydWUs
+QmFja2dyb3VuZEZldGNoRmFpbEV2ZW50OnRydWUsQmFja2dyb3VuZEZldGNoZWRFdmVudDp0cnVlLEJl
+Zm9yZUluc3RhbGxQcm9tcHRFdmVudDp0cnVlLEJlZm9yZVVubG9hZEV2ZW50OnRydWUsQmxvYkV2ZW50
+OnRydWUsQ2FuTWFrZVBheW1lbnRFdmVudDp0cnVlLENsaXBib2FyZEV2ZW50OnRydWUsQ2xvc2VFdmVu
+dDp0cnVlLEN1c3RvbUV2ZW50OnRydWUsRGV2aWNlTW90aW9uRXZlbnQ6dHJ1ZSxEZXZpY2VPcmllbnRh
+dGlvbkV2ZW50OnRydWUsRXJyb3JFdmVudDp0cnVlLEV4dGVuZGFibGVFdmVudDp0cnVlLEV4dGVuZGFi
+bGVNZXNzYWdlRXZlbnQ6dHJ1ZSxGZXRjaEV2ZW50OnRydWUsRm9udEZhY2VTZXRMb2FkRXZlbnQ6dHJ1
+ZSxGb3JlaWduRmV0Y2hFdmVudDp0cnVlLEdhbWVwYWRFdmVudDp0cnVlLEhhc2hDaGFuZ2VFdmVudDp0
+cnVlLEluc3RhbGxFdmVudDp0cnVlLE1lZGlhRW5jcnlwdGVkRXZlbnQ6dHJ1ZSxNZWRpYUtleU1lc3Nh
+Z2VFdmVudDp0cnVlLE1lZGlhUXVlcnlMaXN0RXZlbnQ6dHJ1ZSxNZWRpYVN0cmVhbUV2ZW50OnRydWUs
+TWVkaWFTdHJlYW1UcmFja0V2ZW50OnRydWUsTWVzc2FnZUV2ZW50OnRydWUsTUlESUNvbm5lY3Rpb25F
+dmVudDp0cnVlLE1JRElNZXNzYWdlRXZlbnQ6dHJ1ZSxNdXRhdGlvbkV2ZW50OnRydWUsTm90aWZpY2F0
+aW9uRXZlbnQ6dHJ1ZSxQYWdlVHJhbnNpdGlvbkV2ZW50OnRydWUsUGF5bWVudFJlcXVlc3RFdmVudDp0
+cnVlLFBheW1lbnRSZXF1ZXN0VXBkYXRlRXZlbnQ6dHJ1ZSxQb3BTdGF0ZUV2ZW50OnRydWUsUHJlc2Vu
+dGF0aW9uQ29ubmVjdGlvbkF2YWlsYWJsZUV2ZW50OnRydWUsUHJlc2VudGF0aW9uQ29ubmVjdGlvbkNs
+b3NlRXZlbnQ6dHJ1ZSxQcm9taXNlUmVqZWN0aW9uRXZlbnQ6dHJ1ZSxQdXNoRXZlbnQ6dHJ1ZSxSVENE
+YXRhQ2hhbm5lbEV2ZW50OnRydWUsUlRDRFRNRlRvbmVDaGFuZ2VFdmVudDp0cnVlLFJUQ1BlZXJDb25u
+ZWN0aW9uSWNlRXZlbnQ6dHJ1ZSxSVENUcmFja0V2ZW50OnRydWUsU2VjdXJpdHlQb2xpY3lWaW9sYXRp
+b25FdmVudDp0cnVlLFNlbnNvckVycm9yRXZlbnQ6dHJ1ZSxTcGVlY2hSZWNvZ25pdGlvbkVycm9yOnRy
+dWUsU3BlZWNoUmVjb2duaXRpb25FdmVudDp0cnVlLFNwZWVjaFN5bnRoZXNpc0V2ZW50OnRydWUsU3Rv
+cmFnZUV2ZW50OnRydWUsU3luY0V2ZW50OnRydWUsVHJhY2tFdmVudDp0cnVlLFRyYW5zaXRpb25FdmVu
+dDp0cnVlLFdlYktpdFRyYW5zaXRpb25FdmVudDp0cnVlLFZSRGV2aWNlRXZlbnQ6dHJ1ZSxWUkRpc3Bs
+YXlFdmVudDp0cnVlLFZSU2Vzc2lvbkV2ZW50OnRydWUsTW9qb0ludGVyZmFjZVJlcXVlc3RFdmVudDp0
+cnVlLFVTQkNvbm5lY3Rpb25FdmVudDp0cnVlLElEQlZlcnNpb25DaGFuZ2VFdmVudDp0cnVlLEF1ZGlv
+UHJvY2Vzc2luZ0V2ZW50OnRydWUsT2ZmbGluZUF1ZGlvQ29tcGxldGlvbkV2ZW50OnRydWUsV2ViR0xD
+b250ZXh0RXZlbnQ6dHJ1ZSxFdmVudDpmYWxzZSxJbnB1dEV2ZW50OmZhbHNlLFN1Ym1pdEV2ZW50OmZh
+bHNlLEV2ZW50VGFyZ2V0OmZhbHNlLEZpbGU6dHJ1ZSxIVE1MRm9ybUVsZW1lbnQ6dHJ1ZSxIaXN0b3J5
+OnRydWUsSFRNTERvY3VtZW50OnRydWUsWE1MSHR0cFJlcXVlc3Q6dHJ1ZSxYTUxIdHRwUmVxdWVzdEV2
+ZW50VGFyZ2V0OmZhbHNlLEltYWdlRGF0YTp0cnVlLExvY2F0aW9uOnRydWUsTW91c2VFdmVudDp0cnVl
+LERyYWdFdmVudDp0cnVlLFBvaW50ZXJFdmVudDp0cnVlLFdoZWVsRXZlbnQ6dHJ1ZSxEb2N1bWVudEZy
+YWdtZW50OnRydWUsU2hhZG93Um9vdDp0cnVlLERvY3VtZW50VHlwZTp0cnVlLE5vZGU6ZmFsc2UsTm9k
+ZUxpc3Q6dHJ1ZSxSYWRpb05vZGVMaXN0OnRydWUsSFRNTFBhcmFncmFwaEVsZW1lbnQ6dHJ1ZSxQcm9n
+cmVzc0V2ZW50OnRydWUsUmVzb3VyY2VQcm9ncmVzc0V2ZW50OnRydWUsSFRNTFNlbGVjdEVsZW1lbnQ6
+dHJ1ZSxIVE1MVGFibGVFbGVtZW50OnRydWUsSFRNTFRhYmxlUm93RWxlbWVudDp0cnVlLEhUTUxUYWJs
+ZVNlY3Rpb25FbGVtZW50OnRydWUsSFRNTFRlbXBsYXRlRWxlbWVudDp0cnVlLENvbXBvc2l0aW9uRXZl
+bnQ6dHJ1ZSxGb2N1c0V2ZW50OnRydWUsS2V5Ym9hcmRFdmVudDp0cnVlLFRleHRFdmVudDp0cnVlLFRv
+dWNoRXZlbnQ6dHJ1ZSxVSUV2ZW50OmZhbHNlLFdpbmRvdzp0cnVlLERPTVdpbmRvdzp0cnVlLERlZGlj
+YXRlZFdvcmtlckdsb2JhbFNjb3BlOnRydWUsU2VydmljZVdvcmtlckdsb2JhbFNjb3BlOnRydWUsU2hh
+cmVkV29ya2VyR2xvYmFsU2NvcGU6dHJ1ZSxXb3JrZXJHbG9iYWxTY29wZTp0cnVlLEF0dHI6dHJ1ZSxD
+bGllbnRSZWN0OnRydWUsRE9NUmVjdDp0cnVlLE5hbWVkTm9kZU1hcDp0cnVlLE1vek5hbWVkQXR0ck1h
+cDp0cnVlLElEQktleVJhbmdlOnRydWUsU1ZHU2NyaXB0RWxlbWVudDp0cnVlLFNWR0FFbGVtZW50OnRy
+dWUsU1ZHQW5pbWF0ZUVsZW1lbnQ6dHJ1ZSxTVkdBbmltYXRlTW90aW9uRWxlbWVudDp0cnVlLFNWR0Fu
+aW1hdGVUcmFuc2Zvcm1FbGVtZW50OnRydWUsU1ZHQW5pbWF0aW9uRWxlbWVudDp0cnVlLFNWR0NpcmNs
+ZUVsZW1lbnQ6dHJ1ZSxTVkdDbGlwUGF0aEVsZW1lbnQ6dHJ1ZSxTVkdEZWZzRWxlbWVudDp0cnVlLFNW
+R0Rlc2NFbGVtZW50OnRydWUsU1ZHRGlzY2FyZEVsZW1lbnQ6dHJ1ZSxTVkdFbGxpcHNlRWxlbWVudDp0
+cnVlLFNWR0ZFQmxlbmRFbGVtZW50OnRydWUsU1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQ6dHJ1ZSxTVkdG
+RUNvbXBvbmVudFRyYW5zZmVyRWxlbWVudDp0cnVlLFNWR0ZFQ29tcG9zaXRlRWxlbWVudDp0cnVlLFNW
+R0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50OnRydWUsU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50OnRy
+dWUsU1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50OnRydWUsU1ZHRkVEaXN0YW50TGlnaHRFbGVtZW50
+OnRydWUsU1ZHRkVGbG9vZEVsZW1lbnQ6dHJ1ZSxTVkdGRUZ1bmNBRWxlbWVudDp0cnVlLFNWR0ZFRnVu
+Y0JFbGVtZW50OnRydWUsU1ZHRkVGdW5jR0VsZW1lbnQ6dHJ1ZSxTVkdGRUZ1bmNSRWxlbWVudDp0cnVl
+LFNWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudDp0cnVlLFNWR0ZFSW1hZ2VFbGVtZW50OnRydWUsU1ZHRkVN
+ZXJnZUVsZW1lbnQ6dHJ1ZSxTVkdGRU1lcmdlTm9kZUVsZW1lbnQ6dHJ1ZSxTVkdGRU1vcnBob2xvZ3lF
+bGVtZW50OnRydWUsU1ZHRkVPZmZzZXRFbGVtZW50OnRydWUsU1ZHRkVQb2ludExpZ2h0RWxlbWVudDp0
+cnVlLFNWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQ6dHJ1ZSxTVkdGRVNwb3RMaWdodEVsZW1lbnQ6
+dHJ1ZSxTVkdGRVRpbGVFbGVtZW50OnRydWUsU1ZHRkVUdXJidWxlbmNlRWxlbWVudDp0cnVlLFNWR0Zp
+bHRlckVsZW1lbnQ6dHJ1ZSxTVkdGb3JlaWduT2JqZWN0RWxlbWVudDp0cnVlLFNWR0dFbGVtZW50OnRy
+dWUsU1ZHR2VvbWV0cnlFbGVtZW50OnRydWUsU1ZHR3JhcGhpY3NFbGVtZW50OnRydWUsU1ZHSW1hZ2VF
+bGVtZW50OnRydWUsU1ZHTGluZUVsZW1lbnQ6dHJ1ZSxTVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQ6dHJ1
+ZSxTVkdNYXJrZXJFbGVtZW50OnRydWUsU1ZHTWFza0VsZW1lbnQ6dHJ1ZSxTVkdNZXRhZGF0YUVsZW1l
+bnQ6dHJ1ZSxTVkdQYXRoRWxlbWVudDp0cnVlLFNWR1BhdHRlcm5FbGVtZW50OnRydWUsU1ZHUG9seWdv
+bkVsZW1lbnQ6dHJ1ZSxTVkdQb2x5bGluZUVsZW1lbnQ6dHJ1ZSxTVkdSYWRpYWxHcmFkaWVudEVsZW1l
+bnQ6dHJ1ZSxTVkdSZWN0RWxlbWVudDp0cnVlLFNWR1NldEVsZW1lbnQ6dHJ1ZSxTVkdTdG9wRWxlbWVu
+dDp0cnVlLFNWR1N0eWxlRWxlbWVudDp0cnVlLFNWR1NWR0VsZW1lbnQ6dHJ1ZSxTVkdTd2l0Y2hFbGVt
+ZW50OnRydWUsU1ZHU3ltYm9sRWxlbWVudDp0cnVlLFNWR1RTcGFuRWxlbWVudDp0cnVlLFNWR1RleHRD
+b250ZW50RWxlbWVudDp0cnVlLFNWR1RleHRFbGVtZW50OnRydWUsU1ZHVGV4dFBhdGhFbGVtZW50OnRy
+dWUsU1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudDp0cnVlLFNWR1RpdGxlRWxlbWVudDp0cnVlLFNWR1Vz
+ZUVsZW1lbnQ6dHJ1ZSxTVkdWaWV3RWxlbWVudDp0cnVlLFNWR0dyYWRpZW50RWxlbWVudDp0cnVlLFNW
+R0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50OnRydWUsU1ZHRkVEcm9wU2hhZG93RWxlbWVu
+dDp0cnVlLFNWR01QYXRoRWxlbWVudDp0cnVlLFNWR0VsZW1lbnQ6ZmFsc2V9KQpILmIwLiRuYXRpdmVT
+dXBlcmNsYXNzVGFnPSJBcnJheUJ1ZmZlclZpZXciCkguUkcuJG5hdGl2ZVN1cGVyY2xhc3NUYWc9IkFy
+cmF5QnVmZmVyVmlldyIKSC5WUC4kbmF0aXZlU3VwZXJjbGFzc1RhZz0iQXJyYXlCdWZmZXJWaWV3IgpI
+LkRnLiRuYXRpdmVTdXBlcmNsYXNzVGFnPSJBcnJheUJ1ZmZlclZpZXciCkguV0IuJG5hdGl2ZVN1cGVy
+Y2xhc3NUYWc9IkFycmF5QnVmZmVyVmlldyIKSC5aRy4kbmF0aXZlU3VwZXJjbGFzc1RhZz0iQXJyYXlC
+dWZmZXJWaWV3IgpILlBnLiRuYXRpdmVTdXBlcmNsYXNzVGFnPSJBcnJheUJ1ZmZlclZpZXcifSkoKQpj
+b252ZXJ0QWxsVG9GYXN0T2JqZWN0KHcpCmNvbnZlcnRUb0Zhc3RPYmplY3QoJCk7KGZ1bmN0aW9uKGEp
+e2lmKHR5cGVvZiBkb2N1bWVudD09PSJ1bmRlZmluZWQiKXthKG51bGwpCnJldHVybn1pZih0eXBlb2Yg
+ZG9jdW1lbnQuY3VycmVudFNjcmlwdCE9J3VuZGVmaW5lZCcpe2EoZG9jdW1lbnQuY3VycmVudFNjcmlw
+dCkKcmV0dXJufXZhciB0PWRvY3VtZW50LnNjcmlwdHMKZnVuY3Rpb24gb25Mb2FkKGIpe2Zvcih2YXIg
+cj0wO3I8dC5sZW5ndGg7KytyKXRbcl0ucmVtb3ZlRXZlbnRMaXN0ZW5lcigibG9hZCIsb25Mb2FkLGZh
+bHNlKQphKGIudGFyZ2V0KX1mb3IodmFyIHM9MDtzPHQubGVuZ3RoOysrcyl0W3NdLmFkZEV2ZW50TGlz
+dGVuZXIoImxvYWQiLG9uTG9hZCxmYWxzZSl9KShmdW5jdGlvbihhKXt2LmN1cnJlbnRTY3JpcHQ9YQpp
+Zih0eXBlb2YgZGFydE1haW5SdW5uZXI9PT0iZnVuY3Rpb24iKWRhcnRNYWluUnVubmVyKEwuSXEsW10p
+CmVsc2UgTC5JcShbXSl9KX0pKCkKLy8jIHNvdXJjZU1hcHBpbmdVUkw9bWlncmF0aW9uLmpzLm1hcAo=
 ''';
diff --git a/pkg/nnbd_migration/lib/src/front_end/web/migration.dart b/pkg/nnbd_migration/lib/src/front_end/web/migration.dart
index dba292b..4d26e69 100644
--- a/pkg/nnbd_migration/lib/src/front_end/web/migration.dart
+++ b/pkg/nnbd_migration/lib/src/front_end/web/migration.dart
@@ -194,7 +194,7 @@
 Uri getGitHubErrorUri(
         String description, Object exception, Object stackTrace) =>
     Uri.https('github.com', 'dart-lang/sdk/issues/new', {
-      'title': 'Issue with NNBD migration tool: $description',
+      'title': 'Customer-reported issue with NNBD migration tool: $description',
       'labels': 'area-analyzer,analyzer-nnbd-migration,type-bug',
       'body': '''
 $description
@@ -224,6 +224,7 @@
 /// pre-populating some labels and a body template.
 Uri getGitHubProblemUri() =>
     Uri.https('github.com', 'dart-lang/sdk/issues/new', {
+      'title': 'Customer-reported issue with NNBD migration tool',
       'labels': 'area-analyzer,analyzer-nnbd-migration,type-bug',
       'body': '''
 #### Steps to reproduce
@@ -532,7 +533,11 @@
   var line = response.line;
   Element explanation = document.createElement('p');
   editPanel.append(explanation);
-  explanation.append(Text('$explanationMessage at $relPath:$line.'));
+  explanation
+    ..appendText('$explanationMessage at ')
+    ..append(AnchorElement(
+        href: pathWithQueryParameters(filePath, {'line': line.toString()}))
+      ..appendText('$relPath:$line.'));
   explanation.scrollIntoView();
   _populateEditTraces(response, editPanel, parentDirectory);
   _populateEditLinks(response, editPanel);
diff --git a/pkg/nnbd_migration/lib/src/node_builder.dart b/pkg/nnbd_migration/lib/src/node_builder.dart
index 4b19615..c0fb6da 100644
--- a/pkg/nnbd_migration/lib/src/node_builder.dart
+++ b/pkg/nnbd_migration/lib/src/node_builder.dart
@@ -67,15 +67,34 @@
       this._typeProvider,
       {this.instrumentation});
 
+  NullabilityNodeTarget get safeTarget {
+    var target = _target;
+    if (target != null) return target;
+    assert(false, 'Unknown nullability node target');
+    return NullabilityNodeTarget.text('unknown');
+  }
+
+  @override
+  DecoratedType visitAsExpression(AsExpression node) {
+    node.expression?.accept(this);
+    _pushNullabilityNodeTarget(
+        NullabilityNodeTarget.text('cast type'), () => node.type?.accept(this));
+    return null;
+  }
+
   @override
   DecoratedType visitCatchClause(CatchClause node) {
-    DecoratedType exceptionType = node.exceptionType?.accept(this);
+    var exceptionElement = node.exceptionParameter?.staticElement;
+    var target = exceptionElement == null
+        ? NullabilityNodeTarget.text('exception type')
+        : NullabilityNodeTarget.element(exceptionElement);
+    DecoratedType exceptionType = _pushNullabilityNodeTarget(
+        target, () => node.exceptionType?.accept(this));
     if (node.exceptionParameter != null) {
       // If there is no `on Type` part of the catch clause, the type is dynamic.
       if (exceptionType == null) {
-        var target = NullabilityNodeTarget.text('exception').withCodeRef(node);
-        exceptionType = DecoratedType.forImplicitType(
-            _typeProvider, _typeProvider.dynamicType, _graph, target);
+        exceptionType = DecoratedType.forImplicitType(_typeProvider,
+            _typeProvider.dynamicType, _graph, target.withCodeRef(node));
         instrumentation?.implicitType(
             source, node.exceptionParameter, exceptionType);
       }
@@ -171,13 +190,22 @@
   }
 
   @override
+  DecoratedType visitConstructorName(ConstructorName node) {
+    _pushNullabilityNodeTarget(NullabilityNodeTarget.text('constructed type'),
+        () => node.type?.accept(this));
+    node.name?.accept(this);
+    return null;
+  }
+
+  @override
   DecoratedType visitDeclaredIdentifier(DeclaredIdentifier node) {
     node.metadata.accept(this);
-    DecoratedType type = node.type?.accept(this);
+    var declaredElement = node.declaredElement;
+    var target = NullabilityNodeTarget.element(declaredElement);
+    DecoratedType type =
+        _pushNullabilityNodeTarget(target, () => node.type?.accept(this));
     if (node.identifier != null) {
       if (type == null) {
-        var declaredElement = node.declaredElement;
-        var target = NullabilityNodeTarget.element(declaredElement);
         type = DecoratedType.forImplicitType(
             _typeProvider, declaredElement.type, _graph, target);
         instrumentation?.implicitType(source, node, type);
@@ -258,7 +286,9 @@
   DecoratedType visitExtensionDeclaration(ExtensionDeclaration node) {
     node.metadata.accept(this);
     node.typeParameters?.accept(this);
-    var type = node.extendedType.accept(this);
+    var type = _pushNullabilityNodeTarget(
+        NullabilityNodeTarget.text('extended type'),
+        () => node.extendedType.accept(this));
     _variables.recordDecoratedElementType(node.declaredElement, type);
     node.members.accept(this);
     return null;
@@ -276,12 +306,10 @@
     for (var parameter in node.parameters) {
       var element = parameter.declaredElement;
       NullabilityNodeTarget newTarget;
-      if (_target == null) {
-        newTarget = null;
-      } else if (element.isNamed) {
-        newTarget = _target.namedParameter(element.name);
+      if (element.isNamed) {
+        newTarget = safeTarget.namedParameter(element.name);
       } else {
-        newTarget = _target.positionalParameter(index++);
+        newTarget = safeTarget.positionalParameter(index++);
       }
       _pushNullabilityNodeTarget(newTarget, () => parameter.accept(this));
     }
@@ -311,6 +339,16 @@
   }
 
   @override
+  DecoratedType visitFunctionExpressionInvocation(
+      FunctionExpressionInvocation node) {
+    node.function?.accept(this);
+    _pushNullabilityNodeTarget(NullabilityNodeTarget.text('type argument'),
+        () => node.typeArguments?.accept(this));
+    node.argumentList?.accept(this);
+    return null;
+  }
+
+  @override
   DecoratedType visitFunctionTypeAlias(FunctionTypeAlias node) {
     node.metadata.accept(this);
     var declaredElement = node.declaredElement;
@@ -335,7 +373,7 @@
     DecoratedType decoratedFunctionType;
     try {
       node.typeParameters?.accept(this);
-      node.parameters?.accept(this);
+      _pushNullabilityNodeTarget(target, () => node.parameters?.accept(this));
       // Note: we don't pass _typeFormalBounds into DecoratedType because we're
       // not defining a generic function type, we're defining a generic typedef
       // of an ordinary (non-generic) function type.
@@ -365,14 +403,9 @@
     DecoratedType decoratedFunctionType;
     node.typeParameters?.accept(this);
     var target = NullabilityNodeTarget.element(node.declaredElement);
-    var returnType = node.functionType.returnType;
-    if (returnType != null) {
-      _pushNullabilityNodeTarget(target.returnType(), () {
-        decoratedFunctionType = node.functionType.accept(this);
-      });
-    } else {
+    _pushNullabilityNodeTarget(target, () {
       decoratedFunctionType = node.functionType.accept(this);
-    }
+    });
     _variables.recordDecoratedElementType(
         (node.declaredElement as GenericTypeAliasElement).function,
         decoratedFunctionType);
@@ -380,6 +413,22 @@
   }
 
   @override
+  DecoratedType visitIsExpression(IsExpression node) {
+    node.expression?.accept(this);
+    _pushNullabilityNodeTarget(NullabilityNodeTarget.text('tested type'),
+        () => node.type?.accept(this));
+    return null;
+  }
+
+  @override
+  DecoratedType visitListLiteral(ListLiteral node) {
+    _pushNullabilityNodeTarget(NullabilityNodeTarget.text('list element type'),
+        () => node.typeArguments?.accept(this));
+    node.elements.accept(this);
+    return null;
+  }
+
+  @override
   DecoratedType visitMethodDeclaration(MethodDeclaration node) {
     _handleExecutableDeclaration(
         node,
@@ -395,6 +444,16 @@
   }
 
   @override
+  DecoratedType visitMethodInvocation(MethodInvocation node) {
+    node.target?.accept(this);
+    node.methodName?.accept(this);
+    _pushNullabilityNodeTarget(NullabilityNodeTarget.text('type argument'),
+        () => node.typeArguments?.accept(this));
+    node.argumentList?.accept(this);
+    return null;
+  }
+
+  @override
   visitMixinDeclaration(MixinDeclaration node) {
     node.metadata.accept(this);
     node.name?.accept(this);
@@ -406,6 +465,26 @@
   }
 
   @override
+  DecoratedType visitSetOrMapLiteral(SetOrMapLiteral node) {
+    var typeArguments = node.typeArguments;
+    if (typeArguments != null) {
+      var arguments = typeArguments.arguments;
+      if (arguments.length == 2) {
+        _pushNullabilityNodeTarget(NullabilityNodeTarget.text('map key type'),
+            () => arguments[0].accept(this));
+        _pushNullabilityNodeTarget(NullabilityNodeTarget.text('map value type'),
+            () => arguments[1].accept(this));
+      } else {
+        _pushNullabilityNodeTarget(
+            NullabilityNodeTarget.text('set element type'),
+            () => typeArguments.accept(this));
+      }
+    }
+    node.elements.accept(this);
+    return null;
+  }
+
+  @override
   DecoratedType visitSimpleFormalParameter(SimpleFormalParameter node) {
     return _handleFormalParameter(node, node.type, null, null);
   }
@@ -414,8 +493,7 @@
   DecoratedType visitTypeAnnotation(TypeAnnotation node) {
     assert(node != null); // TODO(paulberry)
     var type = node.type;
-    var target = (_target ?? NullabilityNodeTarget.text('explicit type'))
-        .withCodeRef(node);
+    var target = safeTarget.withCodeRef(node);
     if (type.isVoid || type.isDynamic) {
       var nullabilityNode = NullabilityNode.forTypeAnnotation(target);
       var decoratedType = DecoratedType(type, nullabilityNode);
@@ -436,8 +514,11 @@
               .toList();
           instrumentation?.implicitTypeArguments(source, node, typeArguments);
         } else {
-          typeArguments =
-              node.typeArguments.arguments.map((t) => t.accept(this)).toList();
+          int index = 0;
+          typeArguments = node.typeArguments.arguments
+              .map((t) => _pushNullabilityNodeTarget(
+                  target.typeArgument(index++), () => t.accept(this)))
+              .toList();
         }
       } else {
         assert(false); // TODO(paulberry): is this possible?
@@ -453,7 +534,7 @@
         // If [_target] is non-null, then it represents the return type for
         // a FunctionTypeAlias. Otherwise, create a return type target for
         // `target`.
-        _pushNullabilityNodeTarget(_target ?? target.returnType(), () {
+        _pushNullabilityNodeTarget(target.returnType(), () {
           decoratedReturnType = returnType.accept(this);
         });
       }
@@ -493,23 +574,7 @@
           namedParameters: namedParameters);
     }
     _variables.recordDecoratedTypeAnnotation(source, node, decoratedType);
-    var hint = getPostfixHint(node.endToken);
-    if (hint != null) {
-      switch (hint.kind) {
-        case HintCommentKind.bang:
-          _graph.makeNonNullableUnion(decoratedType.node,
-              NullabilityCommentOrigin(source, node, false));
-          _variables.recordNullabilityHint(source, node, hint);
-          break;
-        case HintCommentKind.question:
-          _graph.makeNullableUnion(
-              decoratedType.node, NullabilityCommentOrigin(source, node, true));
-          _variables.recordNullabilityHint(source, node, hint);
-          break;
-        default:
-          break;
-      }
-    }
+    _handleNullabilityHint(node, decoratedType);
     return decoratedType;
   }
 
@@ -524,11 +589,12 @@
     var element = node.declaredElement;
     var bound = node.bound;
     DecoratedType decoratedBound;
+    var target = NullabilityNodeTarget.typeParameterBound(element);
     if (bound != null) {
-      decoratedBound = bound.accept(this);
+      decoratedBound =
+          _pushNullabilityNodeTarget(target, () => bound.accept(this));
     } else {
-      var nullabilityNode = NullabilityNode.forInferredType(
-          NullabilityNodeTarget.typeParameterBound(element));
+      var nullabilityNode = NullabilityNode.forInferredType(target);
       decoratedBound = DecoratedType(_typeProvider.objectType, nullabilityNode);
       _graph.connect(_graph.always, nullabilityNode,
           AlwaysNullableTypeOrigin.forElement(element, false));
@@ -541,7 +607,9 @@
   DecoratedType visitVariableDeclarationList(VariableDeclarationList node) {
     node.metadata.accept(this);
     var typeAnnotation = node.type;
-    var type = typeAnnotation?.accept(this);
+    var type = _pushNullabilityNodeTarget(
+        NullabilityNodeTarget.element(node.variables.first.declaredElement),
+        () => typeAnnotation?.accept(this));
     var hint = getPrefixHint(node.firstTokenAfterCommentAndMetadata);
     if (hint != null && hint.kind == HintCommentKind.late_) {
       _variables.recordLateHint(source, node, hint);
@@ -640,7 +708,7 @@
     var declaredElement = node.declaredElement;
     node.metadata?.accept(this);
     DecoratedType decoratedType;
-    var target = NullabilityNodeTarget.element(declaredElement);
+    var target = safeTarget;
     if (parameters == null) {
       if (type != null) {
         decoratedType = type.accept(this);
@@ -680,6 +748,7 @@
           returnType: decoratedReturnType,
           positionalParameters: positionalParameters,
           namedParameters: namedParameters);
+      _handleNullabilityHint(node, decoratedType);
     }
     _variables.recordDecoratedElementType(declaredElement, decoratedType);
     if (declaredElement.isNamed) {
@@ -690,6 +759,32 @@
     return decoratedType;
   }
 
+  /// Nullability hints can be added to [TypeAnnotation]s,
+  /// [FunctionTypedFormalParameter]s, and function-typed
+  /// [FieldFormalParameter]s.
+  void _handleNullabilityHint(AstNode node, DecoratedType decoratedType) {
+    assert(node is TypeAnnotation ||
+        node is FunctionTypedFormalParameter ||
+        (node is FieldFormalParameter && node.parameters != null));
+    var hint = getPostfixHint(node.endToken);
+    if (hint != null) {
+      switch (hint.kind) {
+        case HintCommentKind.bang:
+          _graph.makeNonNullableUnion(decoratedType.node,
+              NullabilityCommentOrigin(source, node, false));
+          _variables.recordNullabilityHint(source, node, hint);
+          break;
+        case HintCommentKind.question:
+          _graph.makeNullableUnion(
+              decoratedType.node, NullabilityCommentOrigin(source, node, true));
+          _variables.recordNullabilityHint(source, node, hint);
+          break;
+        default:
+          break;
+      }
+    }
+  }
+
   void _handleSupertypeClauses(
       NamedCompilationUnitMember astNode,
       ClassElement declaredElement,
@@ -709,31 +804,34 @@
       supertypes.addAll(onClause.superclassConstraints);
     }
     var decoratedSupertypes = <ClassElement, DecoratedType>{};
-    for (var supertype in supertypes) {
-      DecoratedType decoratedSupertype;
-      if (supertype == null) {
-        var target = NullabilityNodeTarget.text('implicit object supertype')
-            .withCodeRef(astNode);
-        var nullabilityNode = NullabilityNode.forInferredType(target);
-        _graph.makeNonNullableUnion(
-            nullabilityNode, NonNullableObjectSuperclass(source, astNode));
-        decoratedSupertype =
-            DecoratedType(_typeProvider.objectType, nullabilityNode);
-      } else {
-        decoratedSupertype = supertype.accept(this);
+    _pushNullabilityNodeTarget(
+        NullabilityNodeTarget.element(declaredElement).supertype, () {
+      for (var supertype in supertypes) {
+        DecoratedType decoratedSupertype;
+        if (supertype == null) {
+          var nullabilityNode =
+              NullabilityNode.forInferredType(_target.withCodeRef(astNode));
+          _graph.makeNonNullableUnion(
+              nullabilityNode, NonNullableObjectSuperclass(source, astNode));
+          decoratedSupertype =
+              DecoratedType(_typeProvider.objectType, nullabilityNode);
+        } else {
+          decoratedSupertype = supertype.accept(this);
+        }
+        var class_ = (decoratedSupertype.type as InterfaceType).element;
+        decoratedSupertypes[class_] = decoratedSupertype;
       }
-      var class_ = (decoratedSupertype.type as InterfaceType).element;
-      decoratedSupertypes[class_] = decoratedSupertype;
-    }
+    });
     _variables.recordDecoratedDirectSupertypes(
         declaredElement, decoratedSupertypes);
   }
 
-  void _pushNullabilityNodeTarget(NullabilityNodeTarget target, Function() fn) {
+  T _pushNullabilityNodeTarget<T>(
+      NullabilityNodeTarget target, T Function() fn) {
     NullabilityNodeTarget previousTarget = _target;
     try {
       _target = target;
-      fn();
+      return fn();
     } finally {
       _target = previousTarget;
     }
diff --git a/pkg/nnbd_migration/lib/src/nullability_migration_impl.dart b/pkg/nnbd_migration/lib/src/nullability_migration_impl.dart
index d80b2b4..dcaff93 100644
--- a/pkg/nnbd_migration/lib/src/nullability_migration_impl.dart
+++ b/pkg/nnbd_migration/lib/src/nullability_migration_impl.dart
@@ -72,7 +72,7 @@
   NullabilityMigrationImpl(NullabilityMigrationListener listener,
       {bool permissive: false,
       NullabilityMigrationInstrumentation instrumentation,
-      bool removeViaComments = true,
+      bool removeViaComments = false,
       bool warnOnWeakCode = true})
       : this._(listener, NullabilityGraph(instrumentation: instrumentation),
             permissive, instrumentation, removeViaComments, warnOnWeakCode);
@@ -136,6 +136,7 @@
 
   void finish() {
     _postmortemFileWriter?.write();
+    _instrumentation?.finished();
   }
 
   void prepareInput(ResolvedUnitResult result) {
diff --git a/pkg/nnbd_migration/lib/src/nullability_node_target.dart b/pkg/nnbd_migration/lib/src/nullability_node_target.dart
index 61a46e6..baa55f6 100644
--- a/pkg/nnbd_migration/lib/src/nullability_node_target.dart
+++ b/pkg/nnbd_migration/lib/src/nullability_node_target.dart
@@ -56,6 +56,8 @@
     return '$description (${codeReference.shortName})';
   }
 
+  NullabilityNodeTarget get supertype => _NullabilityNodeTarget_Supertype(this);
+
   /// Creates a new [NullabilityNodeTarget] representing a named function
   /// parameter of this target.
   NullabilityNodeTarget namedParameter(String name) =>
@@ -158,6 +160,14 @@
   String get description => 'return type of ${inner.description}';
 }
 
+/// Nullability node target representing one of a class's supertypes.
+class _NullabilityNodeTarget_Supertype extends _NullabilityNodeTarget_Part {
+  _NullabilityNodeTarget_Supertype(NullabilityNodeTarget inner) : super(inner);
+
+  @override
+  String get description => 'supertype of ${inner.description}';
+}
+
 /// Nullability node target for which we only know a string description.
 class _NullabilityNodeTarget_Text extends NullabilityNodeTarget {
   final String name;
diff --git a/pkg/nnbd_migration/lib/src/preview/preview_site.dart b/pkg/nnbd_migration/lib/src/preview/preview_site.dart
index 3f212ff..42f8e79 100644
--- a/pkg/nnbd_migration/lib/src/preview/preview_site.dart
+++ b/pkg/nnbd_migration/lib/src/preview/preview_site.dart
@@ -240,7 +240,7 @@
     // Update the code on disk.
     //
     var params = uri.queryParameters;
-    var path = Uri.parse(uri.path).toFilePath();
+    var path = pathMapper.reverseMap(uri);
     var offset = int.parse(params['offset']);
     var end = int.parse(params['end']);
     var replacement = params['replacement'];
diff --git a/pkg/nnbd_migration/lib/src/utilities/source_edit_diff_formatter.dart b/pkg/nnbd_migration/lib/src/utilities/source_edit_diff_formatter.dart
new file mode 100644
index 0000000..b0908c1
--- /dev/null
+++ b/pkg/nnbd_migration/lib/src/utilities/source_edit_diff_formatter.dart
@@ -0,0 +1,158 @@
+// Copyright (c) 2020, the Dart project authors. Please see the AUTHORS file
+// 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.
+
+import 'package:cli_util/cli_logging.dart';
+import 'package:meta/meta.dart';
+import 'package:nnbd_migration/src/edit_plan.dart';
+import 'package:nnbd_migration/src/utilities/source_edit_diff_output.dart';
+
+/// Information about the style in which we display diffs.
+abstract class DiffStyle {
+  /// Creates a DiffStyle suitable for use with a terminal whose ANSI support is
+  /// indicated by [ansi].
+  ///
+  /// If the terminal supports ANSI, we use a compact diff style with intra-line
+  /// diffs, where insertions are represented by green reversed text and
+  /// deletions are represented by red reversed text.
+  ///
+  /// If the terminal does not support ANSI, we use a traditional diff style
+  /// with before and after lines.
+  factory DiffStyle(Ansi ansi) = _DiffStyleForProduction;
+
+  /// Creates a DiffStyle suitable for unit testing.  Instead of using ANSI
+  /// escape codes for color coding, we use `{+` and `+}` to surround added
+  /// text, and `{-` and `-}` to surround deleted text.
+  @visibleForTesting
+  factory DiffStyle.forTesting(bool compact) = _DiffStyleForTesting;
+
+  DiffStyle._();
+
+  /// Formats a diff showing the result of applying the given [edits] to the
+  /// given [origText].
+  List<String> formatDiff(String origText, Map<int, List<AtomicEdit>> edits);
+}
+
+abstract class DiffStyleImpl extends DiffStyle {
+  DiffStyleImpl._() : super._();
+
+  String get bullet;
+
+  String deleted(String text);
+
+  @override
+  List<String> formatDiff(String origText, Map<int, List<AtomicEdit>> edits) {
+    var output = _createOutput();
+    int prevOffset = 0;
+    for (var offset in edits.keys.toList()..sort()) {
+      if (offset > prevOffset) {
+        var text = origText.substring(prevOffset, offset);
+        var splitText = text.split('\n');
+        output.addUnchangedText(splitText.first);
+        if (splitText.length > 1) {
+          output.skipUnchangedNewlines(splitText.length - 1);
+          output.addUnchangedText(splitText.last);
+        }
+        prevOffset = offset;
+      }
+      for (var edit in edits[offset]) {
+        if (edit.length > 0) {
+          var offset = prevOffset + edit.length;
+          var text = origText.substring(prevOffset, offset);
+          var splitText = text.split('\n');
+          output.addDeletedText(splitText.first);
+          for (int i = 1; i < splitText.length; i++) {
+            output.addDeletedNewline();
+            output.addDeletedText(splitText[i]);
+          }
+          prevOffset = offset;
+        }
+        if (edit.replacement.isNotEmpty) {
+          var splitText = edit.replacement.split('\n');
+          output.addInsertedText(splitText.first);
+          for (int i = 1; i < splitText.length; i++) {
+            output.addInsertedNewline();
+            output.addInsertedText(splitText[i]);
+          }
+        }
+      }
+    }
+    var text = origText.substring(prevOffset);
+    var splitText = text.split('\n');
+    output.addUnchangedText(splitText.first);
+    output.skipUnchangedNewlines(splitText.length - 1);
+    if (splitText.length > 1) {
+      output.addUnchangedText(splitText.last);
+    }
+    return output.finish();
+  }
+
+  String inserted(String text);
+
+  String lineHeader(int lineNum, String separator) {
+    const String emptyLineHeader = '         ';
+    if (lineNum == null) {
+      return emptyLineHeader + separator;
+    } else {
+      var text = 'line $lineNum';
+      if (text.length < emptyLineHeader.length) {
+        text = text + ' ' * (emptyLineHeader.length - text.length);
+      }
+      return text + separator;
+    }
+  }
+
+  String unchanged(String text);
+
+  SourceEditDiffOutput _createOutput();
+}
+
+/// Implementation of [DiffStyle] used in production.
+class _DiffStyleForProduction extends DiffStyleImpl {
+  final Ansi _ansi;
+
+  _DiffStyleForProduction(this._ansi) : super._();
+
+  @override
+  String get bullet => '•';
+
+  @override
+  String deleted(String text) =>
+      '${_ansi.red}${_ansi.reversed}$text${_ansi.none}';
+
+  @override
+  String inserted(String text) =>
+      '${_ansi.green}${_ansi.reversed}$text${_ansi.none}';
+
+  @override
+  String unchanged(String text) => text;
+
+  @override
+  SourceEditDiffOutput _createOutput() =>
+      _ansi.useAnsi ? CompactOutput(this) : TraditionalOutput(this);
+}
+
+/// Implementation of [DiffStyle] used in unit tests.  Instead of using ANSI
+/// escape sequences and unicode characters, we use characters easy to type into
+/// unit tests.
+class _DiffStyleForTesting extends DiffStyleImpl {
+  final bool _compact;
+
+  _DiffStyleForTesting(this._compact) : super._();
+
+  @override
+  String get bullet => '*';
+
+  @override
+  String deleted(String text) => '{-$text-}';
+
+  @override
+  String inserted(String text) => '{+$text+}';
+
+  @override
+  String unchanged(String text) => text;
+
+  @override
+  SourceEditDiffOutput _createOutput() =>
+      _compact ? CompactOutput(this) : TraditionalOutput(this);
+}
diff --git a/pkg/nnbd_migration/lib/src/utilities/source_edit_diff_output.dart b/pkg/nnbd_migration/lib/src/utilities/source_edit_diff_output.dart
new file mode 100644
index 0000000..f9f19b6
--- /dev/null
+++ b/pkg/nnbd_migration/lib/src/utilities/source_edit_diff_output.dart
@@ -0,0 +1,206 @@
+// Copyright (c) 2020, the Dart project authors. Please see the AUTHORS file
+// 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.
+
+import 'package:nnbd_migration/src/utilities/source_edit_diff_formatter.dart';
+
+/// Implementation of [SourceEditDiffOutput] for generating compact intra-line diffs.
+class CompactOutput extends SourceEditDiffOutput {
+  final DiffStyleImpl style;
+
+  /// Output generated so far.
+  final List<String> _lines = [];
+
+  /// Accumulator for the current output line.
+  final _currentLine = StringBuffer();
+
+  /// True if the string in [_currentLine] indicates changes.
+  bool _pendingChanges = false;
+
+  /// The current line number, with reference to the original source text.
+  int _lineNum = 1;
+
+  CompactOutput(this.style) {
+    _writeLineHeader(true);
+  }
+
+  void addDeletedNewline() {
+    _flushLine();
+    _lineNum++;
+    _writeLineHeader(true);
+  }
+
+  void addDeletedText(String text) {
+    if (text.isNotEmpty) {
+      _currentLine.write(style.deleted(text));
+      _pendingChanges = true;
+    }
+  }
+
+  void addInsertedNewline() {
+    _flushLine();
+    _writeLineHeader(false);
+  }
+
+  void addInsertedText(String text) {
+    if (text.isNotEmpty) {
+      _currentLine.write(style.inserted(text));
+      _pendingChanges = true;
+    }
+  }
+
+  void addUnchangedText(String text) {
+    if (text.isNotEmpty) {
+      _currentLine.write(style.unchanged(text));
+    }
+  }
+
+  @override
+  List<String> finish() {
+    assert(!_pendingChanges);
+    return _lines;
+  }
+
+  void skipUnchangedNewlines(int count) {
+    _flushLine(suppressOutput: !_pendingChanges);
+    _lineNum += count;
+    _writeLineHeader(true);
+  }
+
+  void _flushLine({bool suppressOutput = false}) {
+    if (!suppressOutput) {
+      _lines.add(_currentLine.toString());
+    }
+    _currentLine.clear();
+    _pendingChanges = false;
+  }
+
+  void _writeLineHeader(bool includeLineNum) {
+    _currentLine.write(
+        style.lineHeader(includeLineNum ? _lineNum : null, '${style.bullet} '));
+  }
+}
+
+/// Abstract base class capable of generating diff output.
+///
+/// Clients shouldn't interact with this class directly; they should use
+/// [DiffStyle.formatDiff] instead.
+abstract class SourceEditDiffOutput {
+  void addDeletedNewline();
+
+  void addDeletedText(String text);
+
+  void addInsertedNewline();
+
+  void addInsertedText(String text);
+
+  void addUnchangedText(String text);
+
+  List<String> finish();
+
+  void skipUnchangedNewlines(int count);
+}
+
+/// Implementation of [SourceEditDiffOutput] for generating traditional diffs that show
+/// before and after lines.
+class TraditionalOutput extends SourceEditDiffOutput {
+  final DiffStyleImpl style;
+
+  /// Output generated so far.
+  final List<String> _lines = [];
+
+  /// Accumulator for the "after" lines in the current diff hunk.
+  final List<String> _afterLines = [];
+
+  /// Accumulator for the current "before" line.
+  final _currentBeforeLine = StringBuffer();
+
+  /// Accumulator for the current "after" line.
+  final _currentAfterLine = StringBuffer();
+
+  /// True if a hunk is currently in progress that represents changes.
+  bool _pendingChanges = false;
+
+  /// The current line number, with reference to the original source text.
+  int _lineNum = 1;
+
+  TraditionalOutput(this.style);
+
+  void addDeletedNewline() {
+    _flushBeforeLine();
+    _lineNum++;
+    if (_currentAfterLine.isEmpty) {
+      // After text is at a line break, so we can output pending changes
+      _outputPendingChanges();
+    }
+  }
+
+  void addDeletedText(String text) {
+    if (text.isNotEmpty) {
+      _currentBeforeLine.write(style.deleted(text));
+      _pendingChanges = true;
+    }
+  }
+
+  void addInsertedNewline() {
+    if (_currentBeforeLine.isEmpty) {
+      // Before text is at a line break, so we are adding a whole line
+      _flushAfterLine(includeLineNum: true);
+      _outputPendingChanges();
+    } else {
+      _flushAfterLine();
+    }
+  }
+
+  void addInsertedText(String text) {
+    if (text.isNotEmpty) {
+      _currentAfterLine.write(style.inserted(text));
+      _pendingChanges = true;
+    }
+  }
+
+  void addUnchangedText(String text) {
+    if (text.isNotEmpty) {
+      var styledText = style.unchanged(text);
+      _currentBeforeLine.write(styledText);
+      _currentAfterLine.write(styledText);
+    }
+  }
+
+  @override
+  List<String> finish() {
+    assert(!_pendingChanges);
+    assert(_afterLines.isEmpty);
+    return _lines;
+  }
+
+  void skipUnchangedNewlines(int count) {
+    _flushBeforeLine(suppressOutput: !_pendingChanges);
+    _flushAfterLine(suppressOutput: !_pendingChanges);
+    _outputPendingChanges();
+    _lineNum += count;
+  }
+
+  void _flushAfterLine(
+      {bool suppressOutput = false, bool includeLineNum = false}) {
+    if (!suppressOutput) {
+      _afterLines.add(style.lineHeader(includeLineNum ? _lineNum : null, '+') +
+          _currentAfterLine.toString());
+    }
+    _currentAfterLine.clear();
+  }
+
+  void _flushBeforeLine({bool suppressOutput = false}) {
+    if (!suppressOutput) {
+      _lines
+          .add(style.lineHeader(_lineNum, '-') + _currentBeforeLine.toString());
+    }
+    _currentBeforeLine.clear();
+  }
+
+  void _outputPendingChanges() {
+    _lines.addAll(_afterLines);
+    _afterLines.clear();
+    _pendingChanges = false;
+  }
+}
diff --git a/pkg/nnbd_migration/lib/src/variables.dart b/pkg/nnbd_migration/lib/src/variables.dart
index 1d60f68..1dcac79 100644
--- a/pkg/nnbd_migration/lib/src/variables.dart
+++ b/pkg/nnbd_migration/lib/src/variables.dart
@@ -176,7 +176,10 @@
   /// If the given [node] is followed by a `/*?*/` or /*!*/ hint, returns the
   /// HintComment for it; otherwise returns `null`.  See
   /// [recordNullabilityHint].
-  HintComment getNullabilityHint(Source source, TypeAnnotation node) {
+  HintComment getNullabilityHint(Source source, AstNode node) {
+    assert(node is TypeAnnotation ||
+        node is FunctionTypedFormalParameter ||
+        (node is FieldFormalParameter && node.parameters != null));
     return (_nullabilityHints[source] ??
         {})[uniqueIdentifierForSpan(node.offset, node.end)];
   }
@@ -248,7 +251,10 @@
 
   /// Records that the given [node] was followed by a `/*?*/` or `/*!*/` hint.
   void recordNullabilityHint(
-      Source source, TypeAnnotation node, HintComment hintComment) {
+      Source source, AstNode node, HintComment hintComment) {
+    assert(node is TypeAnnotation ||
+        node is FunctionTypedFormalParameter ||
+        (node is FieldFormalParameter && node.parameters != null));
     (_nullabilityHints[source] ??=
         {})[uniqueIdentifierForSpan(node.offset, node.end)] = hintComment;
   }
diff --git a/pkg/nnbd_migration/pubspec.yaml b/pkg/nnbd_migration/pubspec.yaml
index 55968c0..4f3b776 100644
--- a/pkg/nnbd_migration/pubspec.yaml
+++ b/pkg/nnbd_migration/pubspec.yaml
@@ -6,6 +6,7 @@
   _fe_analyzer_shared: ^2.0.0
   analyzer: ^0.37.0
   analyzer_plugin: ^0.2.2
+  cli_util: ^0.1.4
   path: ^1.6.2
   stream_channel: any
   yaml: any
diff --git a/pkg/nnbd_migration/test/already_migrated_code_decorator_test.dart b/pkg/nnbd_migration/test/already_migrated_code_decorator_test.dart
index ebebc47..4ed0086 100644
--- a/pkg/nnbd_migration/test/already_migrated_code_decorator_test.dart
+++ b/pkg/nnbd_migration/test/already_migrated_code_decorator_test.dart
@@ -45,9 +45,7 @@
       : this._(
           nullabilitySuffix,
           NullabilityGraphForTesting(),
-          TestTypeProvider(
-              isNonNullableByDefault:
-                  nullabilitySuffix == NullabilitySuffix.none),
+          TestTypeProvider(),
         );
 
   _AlreadyMigratedCodeDecoratorTestBase._(
diff --git a/pkg/nnbd_migration/test/api_test.dart b/pkg/nnbd_migration/test/api_test.dart
index c13e7a8..72b8d29 100644
--- a/pkg/nnbd_migration/test/api_test.dart
+++ b/pkg/nnbd_migration/test/api_test.dart
@@ -1816,6 +1816,23 @@
     await _checkSingleFileChanges(content, expected);
   }
 
+  @FailingTest(issue: 'https://github.com/dart-lang/sdk/issues/41409')
+  Future<void> test_exact_nullability_in_nested_list() async {
+    var content = '''
+f(List<int/*?*/> y) {
+  var x = <List<int>>[];
+  x.add(y);
+}
+''';
+    var expected = '''
+f(List<int?> y) {
+  var x = <List<int?>>[];
+  x.add(y);
+}
+''';
+    await _checkSingleFileChanges(content, expected);
+  }
+
   Future<void> test_explicit_nullable_overrides_hard_edge() async {
     var content = '''
 int f(int/*?*/ i) => i + 1;
@@ -1836,6 +1853,27 @@
     await _checkSingleFileChanges(content, expected, removeViaComments: true);
   }
 
+  Future<void> test_expression_bang_hint_in_as() async {
+    var content = '''
+int f(num/*?*/ i) => i as int/*!*/;
+''';
+    var expected = '''
+int f(num? i) => i as int;
+''';
+    await _checkSingleFileChanges(content, expected, removeViaComments: true);
+  }
+
+  @FailingTest(issue: 'https://github.com/dart-lang/sdk/issues/41788')
+  Future<void> test_expression_bang_hint_in_as_wrapped() async {
+    var content = '''
+int f(num/*?*/ i) => (i as int)/*!*/;
+''';
+    var expected = '''
+int f(num? i) => (i as int?)!;
+''';
+    await _checkSingleFileChanges(content, expected, removeViaComments: true);
+  }
+
   Future<void> test_expression_bang_hint_unnecessary() async {
     var content = '''
 int/*?*/ f(int/*?*/ i) => i/*!*/;
@@ -1862,6 +1900,27 @@
     await _checkSingleFileChanges(content, expected);
   }
 
+  Future<void> test_expression_nullable_cast_then_checked() async {
+    var content = '''
+int/*!*/ f(num/*?*/ i) => (i as int);
+''';
+    var expected = '''
+int f(num? i) => (i as int);
+''';
+    await _checkSingleFileChanges(content, expected, removeViaComments: true);
+  }
+
+  @FailingTest(issue: 'https://github.com/dart-lang/sdk/issues/41788')
+  Future<void> test_expression_wrapped_with_null_check_and_null_intent() async {
+    var content = '''
+int/*!*/ f(int/*?*/ i) => (i)/*!*/;
+''';
+    var expected = '''
+int f(int? i) => i!;
+''';
+    await _checkSingleFileChanges(content, expected, removeViaComments: true);
+  }
+
   @FailingTest(issue: 'https://github.com/dart-lang/sdk/issues/40023')
   Future<void> test_extension_nullableOnType_addsNullCheckToThis() async {
     var content = '''
@@ -2567,6 +2626,44 @@
   Future<void> test_function_typed_field_formal_param() async {
     var content = '''
 class C {
+  void Function(int) f;
+  C(void this.f(int i));
+}
+main() {
+  C(null);
+}
+''';
+    var expected = '''
+class C {
+  void Function(int)? f;
+  C(void this.f(int i)?);
+}
+main() {
+  C(null);
+}
+''';
+    await _checkSingleFileChanges(content, expected);
+  }
+
+  Future<void> test_function_typed_field_formal_param_accepts_hint() async {
+    var content = '''
+class C {
+  void Function(int) f;
+  C(void this.f(int i) /*?*/);
+}
+''';
+    var expected = '''
+class C {
+  void Function(int)? f;
+  C(void this.f(int i)?);
+}
+''';
+    await _checkSingleFileChanges(content, expected);
+  }
+
+  Future<void> test_function_typed_field_formal_param_inner_types() async {
+    var content = '''
+class C {
   int Function(int) f;
   C(int this.f(int i));
 }
@@ -2592,6 +2689,32 @@
 
   Future<void> test_function_typed_formal_param() async {
     var content = '''
+void f(g()) {}
+void main() {
+  f(null);
+}
+''';
+    var expected = '''
+void f(g()?) {}
+void main() {
+  f(null);
+}
+''';
+    await _checkSingleFileChanges(content, expected);
+  }
+
+  Future<void> test_function_typed_formal_param_accepts_hint() async {
+    var content = '''
+void f(g() /*?*/) {}
+''';
+    var expected = '''
+void f(g()?) {}
+''';
+    await _checkSingleFileChanges(content, expected);
+  }
+
+  Future<void> test_function_typed_formal_param_inner_types() async {
+    var content = '''
 int f(int callback(int i), int j) => callback(j);
 int g(int i) => i;
 int test(int i) => f(g, i);
@@ -3892,6 +4015,20 @@
     await _checkSingleFileChanges(content, expected);
   }
 
+  Future<void> test_named_parameter_add_required_function_typed() async {
+    var content = '''
+void f({void g(int i)}) {
+  assert(g != null);
+}
+''';
+    var expected = '''
+void f({required void g(int i)}) {
+  assert(g != null);
+}
+''';
+    await _checkSingleFileChanges(content, expected);
+  }
+
   Future<void> test_named_parameter_no_default_unused() async {
     var content = '''
 void f({String s}) {}
diff --git a/pkg/nnbd_migration/test/edge_builder_test.dart b/pkg/nnbd_migration/test/edge_builder_test.dart
index 145e37b..95c3ce0 100644
--- a/pkg/nnbd_migration/test/edge_builder_test.dart
+++ b/pkg/nnbd_migration/test/edge_builder_test.dart
@@ -1959,6 +1959,18 @@
         hard: false);
   }
 
+  Future<void> test_cast_type_used_as_non_nullable() async {
+    await analyze('''
+void f(int/*!*/ i) {}
+void g(num/*?*/ j) {
+  f(j as int);
+}
+''');
+    assertEdge(decoratedTypeAnnotation('int)').node,
+        decoratedTypeAnnotation('int/*!*/').node,
+        hard: true);
+  }
+
   Future<void> test_catch_clause() async {
     await analyze('''
 foo() => 1;
@@ -3458,6 +3470,33 @@
     assertEdge(int_2.node, int_1.node, hard: true);
   }
 
+  Future<void> test_functionInvocation_parameter_functionTyped() async {
+    await analyze('''
+void f(void g()) {}
+void test() {
+  f(null);
+}
+''');
+
+    var parameter = variables.decoratedElementType(
+        findNode.functionTypedFormalParameter('void g()').declaredElement);
+    assertNullCheck(checkExpression('null'),
+        assertEdge(inSet(alwaysPlus), parameter.node, hard: false));
+  }
+
+  Future<void>
+      test_functionInvocation_parameter_functionTyped_named_missing() async {
+    await analyze('''
+void f({void g()}) {}
+void h() {
+  f();
+}
+''');
+    var parameter = variables.decoratedElementType(
+        findNode.functionTypedFormalParameter('void g()').declaredElement);
+    expect(getEdges(always, parameter.node), isNotEmpty);
+  }
+
   Future<void> test_functionInvocation_parameter_named() async {
     await analyze('''
 void f({int i: 0}) {}
@@ -5188,6 +5227,24 @@
     expect(hasNullCheckHint(findNode.simple('int')), isFalse);
   }
 
+  Future<void> test_override_parameter_function_typed() async {
+    await analyze('''
+abstract class Base {
+  void f(void g(int i)/*1*/);
+}
+class Derived extends Base {
+  void f(void g(int i)/*2*/) {}
+}
+''');
+    var p1 = variables.decoratedElementType(findNode
+        .functionTypedFormalParameter('void g(int i)/*1*/')
+        .declaredElement);
+    var p2 = variables.decoratedElementType(findNode
+        .functionTypedFormalParameter('void g(int i)/*2*/')
+        .declaredElement);
+    assertEdge(p1.node, p2.node, hard: false, checkable: false);
+  }
+
   Future<void> test_override_parameter_type_named() async {
     await analyze('''
 abstract class Base {
diff --git a/pkg/nnbd_migration/test/edit_plan_test.dart b/pkg/nnbd_migration/test/edit_plan_test.dart
index 910e7aa..6616c78 100644
--- a/pkg/nnbd_migration/test/edit_plan_test.dart
+++ b/pkg/nnbd_migration/test/edit_plan_test.dart
@@ -92,6 +92,37 @@
         '@deprecated late int x = 0;');
   }
 
+  Future<void>
+      test_acceptNullabilityHint_function_typed_field_formal_parameter() async {
+    await analyze('''
+class C {
+  void Function(int) f;
+  C(void this.f(int i) /*?*/);
+}
+''');
+    var parameter = findNode.fieldFormalParameter('void this.f(int i)');
+    var typeName = planner.passThrough(parameter);
+    checkPlan(
+        planner.acceptNullabilityOrNullCheckHint(
+            typeName, getPostfixHint(parameter.parameters.rightParenthesis)),
+        '''
+class C {
+  void Function(int) f;
+  C(void this.f(int i)?);
+}
+''');
+  }
+
+  Future<void> test_acceptNullabilityHint_function_typed_parameter() async {
+    await analyze('f(void g(int i) /*?*/) {}');
+    var parameter = findNode.functionTypedFormalParameter('void g(int i)');
+    var typeName = planner.passThrough(parameter);
+    checkPlan(
+        planner.acceptNullabilityOrNullCheckHint(
+            typeName, getPostfixHint(parameter.parameters.rightParenthesis)),
+        'f(void g(int i)?) {}');
+  }
+
   Future<void> test_acceptNullabilityOrNullCheckHint() async {
     var code = 'int /*?*/ x = 0;';
     await analyze(code);
diff --git a/pkg/nnbd_migration/test/fix_aggregator_test.dart b/pkg/nnbd_migration/test/fix_aggregator_test.dart
index db9f2ba..ae81449 100644
--- a/pkg/nnbd_migration/test/fix_aggregator_test.dart
+++ b/pkg/nnbd_migration/test/fix_aggregator_test.dart
@@ -1296,6 +1296,24 @@
     expect(previewInfo.values.single.single.isDeletion, true);
   }
 
+  Future<void>
+      test_requiredAnnotationToRequiredKeyword_simple_removeViaComment() async {
+    addMetaPackage();
+    await analyze('''
+import 'package:meta/meta.dart';
+f({@required int x}) {}
+''');
+    var annotation = findNode.annotation('required');
+    var previewInfo = run(
+        {annotation: NodeChangeForAnnotation()..changeToRequiredKeyword = true},
+        removeViaComments: true);
+    expect(previewInfo.applyTo(code), '''
+import 'package:meta/meta.dart';
+f({required int x}) {}
+''');
+    expect(previewInfo.values.single.single.isDeletion, true);
+  }
+
   Future<void> test_variableDeclarationList_addExplicitType_insert() async {
     await analyze('final x = 0;');
     var previewInfo = run({
diff --git a/pkg/nnbd_migration/test/front_end/info_builder_test.dart b/pkg/nnbd_migration/test/front_end/info_builder_test.dart
index a1490f0..07259a4 100644
--- a/pkg/nnbd_migration/test/front_end/info_builder_test.dart
+++ b/pkg/nnbd_migration/test/front_end/info_builder_test.dart
@@ -694,6 +694,40 @@
         explanation: "Changed type 'String' to be nullable");
   }
 
+  Future<void> test_function_typed_parameter_made_nullable_due_to_hint() async {
+    var content = 'f(void g(int i)/*?*/) {}';
+    var migratedContent = 'f(void g(int  i)/*?*/) {}';
+    var unit = await buildInfoForSingleTestFile(content,
+        migratedContent: migratedContent);
+    var regions = unit.fixRegions;
+    expect(regions, hasLength(2));
+    var textToRemove = '/*?*/';
+    assertRegionPair(regions, 0,
+        offset1: migratedContent.indexOf(textToRemove),
+        length1: 2,
+        offset2: migratedContent.indexOf(textToRemove) + 3,
+        length2: 2,
+        explanation:
+            "Changed type 'void Function(int)' to be nullable, due to a "
+            'nullability hint',
+        kind: NullabilityFixKind.makeTypeNullableDueToHint,
+        traces: isNotNull, edits: (List<EditDetail> edits) {
+      expect(edits, hasLength(2));
+      var editsByDescription = {for (var edit in edits) edit.description: edit};
+      assertEdit(
+          edit: editsByDescription['Change to /*!*/ hint'],
+          offset: content.indexOf(textToRemove),
+          length: textToRemove.length,
+          replacement: '/*!*/');
+      assertEdit(
+          edit: editsByDescription['Remove /*?*/ hint'],
+          offset: content.indexOf(textToRemove),
+          length: textToRemove.length,
+          replacement: '');
+      return true;
+    });
+  }
+
   Future<void> test_increment_nullable_result() async {
     var unit = await buildInfoForSingleTestFile('''
 abstract class C {
@@ -985,7 +1019,7 @@
     // Entry 0 is the nullability of the type of A.m.
     // TODO(srawlins): "A" is probably incorrect here. Should be "A.m".
     assertTraceEntry(unit, entries[0], 'A', unit.content.indexOf('int?'),
-        contains('explicit type'));
+        contains('A.m (test.dart:2:3)'));
   }
 
   Future<void> test_removal_handles_offsets_correctly() async {
@@ -1328,7 +1362,12 @@
     expect(region.explanation, "Type 'int' was not made nullable");
     expect(region.edits.map((edit) => edit.description).toSet(),
         {'Add /*?*/ hint', 'Add /*!*/ hint'});
-    expect(region.traces, isEmpty);
+    var trace = region.traces.first;
+    expect(trace.description, 'Non-nullability reason');
+    var entries = trace.entries;
+    expect(entries, hasLength(1));
+    assertTraceEntry(unit, entries[0], null, unit.content.indexOf('int'),
+        'No reason found to make nullable');
     expect(region.kind, NullabilityFixKind.typeNotMadeNullable);
   }
 
diff --git a/pkg/nnbd_migration/test/front_end/migration_summary_test.dart b/pkg/nnbd_migration/test/front_end/migration_summary_test.dart
new file mode 100644
index 0000000..15b75bd
--- /dev/null
+++ b/pkg/nnbd_migration/test/front_end/migration_summary_test.dart
@@ -0,0 +1,66 @@
+// Copyright (c) 2020, the Dart project authors. Please see the AUTHORS file
+// 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.
+
+import 'dart:convert';
+
+import 'package:analyzer/file_system/memory_file_system.dart';
+import 'package:analyzer/src/string_source.dart';
+import 'package:nnbd_migration/nnbd_migration.dart';
+import 'package:nnbd_migration/src/edit_plan.dart';
+import 'package:nnbd_migration/src/front_end/migration_summary.dart';
+import 'package:path/path.dart' as path;
+import 'package:test/test.dart';
+import 'package:test_reflective_loader/test_reflective_loader.dart';
+
+void main() {
+  defineReflectiveSuite(() {
+    defineReflectiveTests(MigrationSummaryTestPosix);
+    defineReflectiveTests(MigrationSummaryTestWindows);
+  });
+}
+
+abstract class MigrationSummaryTestBase {
+  MemoryResourceProvider get resourceProvider;
+}
+
+mixin MigrationSummaryTestCases on MigrationSummaryTestBase {
+  test_summarize_changes_by_file() {
+    var summaryPath = resourceProvider.convertPath('/summary.json');
+    var rootPath = resourceProvider.convertPath('/project');
+    var summary = MigrationSummary(summaryPath, resourceProvider, rootPath);
+    summary.recordChanges(
+        StringSource('', resourceProvider.convertPath('/project/lib/foo.dart')),
+        {
+          0: [
+            AtomicEdit.insert('x',
+                info: AtomicEditInfo(
+                    NullabilityFixDescription.makeTypeNullable('int'),
+                    const {}))
+          ]
+        });
+    summary.write();
+    var json =
+        jsonDecode(resourceProvider.getFile(summaryPath).readAsStringSync());
+    var separator = resourceProvider.pathContext.separator;
+    expect(json['changes']['byPath'], {
+      'lib${separator}foo.dart': {'makeTypeNullable': 1}
+    });
+  }
+}
+
+@reflectiveTest
+class MigrationSummaryTestPosix extends MigrationSummaryTestBase
+    with MigrationSummaryTestCases {
+  @override
+  final MemoryResourceProvider resourceProvider =
+      MemoryResourceProvider(context: path.posix);
+}
+
+@reflectiveTest
+class MigrationSummaryTestWindows extends MigrationSummaryTestBase
+    with MigrationSummaryTestCases {
+  @override
+  final MemoryResourceProvider resourceProvider =
+      MemoryResourceProvider(context: path.windows);
+}
diff --git a/pkg/nnbd_migration/test/instrumentation_test.dart b/pkg/nnbd_migration/test/instrumentation_test.dart
index 74c2c3f..bf7607c 100644
--- a/pkg/nnbd_migration/test/instrumentation_test.dart
+++ b/pkg/nnbd_migration/test/instrumentation_test.dart
@@ -102,6 +102,9 @@
   void prepareForUpdate() {
     test.changes = null;
   }
+
+  @override
+  void finished() {}
 }
 
 @reflectiveTest
diff --git a/pkg/nnbd_migration/test/migration_cli_test.dart b/pkg/nnbd_migration/test/migration_cli_test.dart
index cd3a4b4..2df7447 100644
--- a/pkg/nnbd_migration/test/migration_cli_test.dart
+++ b/pkg/nnbd_migration/test/migration_cli_test.dart
@@ -3,6 +3,7 @@
 // BSD-style license that can be found in the LICENSE file.
 
 import 'dart:async';
+import 'dart:convert';
 import 'dart:io';
 
 import 'package:analysis_server/src/edit/fix/non_nullable_fix.dart';
@@ -78,6 +79,21 @@
     return stderrText;
   }
 
+  void assertHttpSuccess(http.Response response) {
+    if (response.statusCode == 500) {
+      try {
+        var decodedResponse = jsonDecode(response.body);
+        print('Exception: ${decodedResponse['exception']}');
+        print('Stack trace:');
+        print(decodedResponse['stackTrace']);
+      } catch (_) {
+        print(response.body);
+      }
+      fail('HTTP request failed');
+    }
+    expect(response.statusCode, 200);
+  }
+
   Future<String> assertParseArgsFailure(List<String> args) async {
     var cli = _createCli();
     await cli.run(args);
@@ -96,7 +112,7 @@
 
   Future assertPreviewServerResponsive(String url) async {
     var response = await http.get(url);
-    expect(response.statusCode, 200);
+    assertHttpSuccess(response);
   }
 
   void assertProjectContents(String projectDir, Map<String, String> expected) {
@@ -135,6 +151,10 @@
     expect(http.get(url), throwsA(anything));
   }
 
+  void setUp() {
+    resourceProvider.newFolder(resourceProvider.pathContext.current);
+  }
+
   Map<String, String> simpleProject({bool migrated: false, String sourceText}) {
     return {
       'pubspec.yaml': '''
@@ -301,12 +321,15 @@
     var cli = _createCli();
     await cli.run(['--no-web-preview', projectDir]);
     // Check that a summary was printed
-    expect(logger.stdoutBuffer.toString(), contains('Summary'));
+    var output = logger.stdoutBuffer.toString();
+    expect(output, contains('Summary'));
     // And that it refers to test.dart and pubspec.yaml
-    expect(logger.stdoutBuffer.toString(), contains('test.dart'));
-    expect(logger.stdoutBuffer.toString(), contains('pubspec.yaml'));
+    expect(output, contains('test.dart'));
+    expect(output, contains('pubspec.yaml'));
+    // And that it contains text from a changed line
+    expect(output, contains('f() => null'));
     // And that it tells the user they can rerun with `--apply-changes`
-    expect(logger.stdoutBuffer.toString(), contains('--apply-changes'));
+    expect(output, contains('--apply-changes'));
     // No changes should have been made
     assertProjectContents(projectDir, projectContents);
   }
@@ -324,6 +347,35 @@
     assertProjectContents(projectDir, projectContents);
   }
 
+  test_lifecycle_preview_add_hint() async {
+    var projectContents = simpleProject(sourceText: 'int x;');
+    var projectDir = await createProjectDir(projectContents);
+    var cli = _createCli();
+    await runWithPreviewServer(cli, [projectDir], (url) async {
+      expect(
+          logger.stdoutBuffer.toString(), contains('No analysis issues found'));
+      await assertPreviewServerResponsive(url);
+      var uri = Uri.parse(url);
+      var authToken = uri.queryParameters['authToken'];
+      var response = await http.post(
+          uri.replace(
+              path: resourceProvider.pathContext
+                  .toUri(resourceProvider.pathContext
+                      .join(projectDir, 'lib', 'test.dart'))
+                  .path,
+              queryParameters: {
+                'offset': '3',
+                'end': '3',
+                'replacement': '/*!*/',
+                'authToken': authToken
+              }),
+          headers: {'Content-Type': 'application/json; charset=UTF-8'});
+      assertHttpSuccess(response);
+      assertProjectContents(
+          projectDir, simpleProject(sourceText: 'int/*!*/ x;'));
+    });
+  }
+
   test_lifecycle_preview_extra_forward_slash() async {
     var projectDir = await createProjectDir(simpleProject());
     var cli = _createCli();
@@ -334,6 +386,31 @@
     });
   }
 
+  test_lifecycle_summary() async {
+    var projectContents = simpleProject();
+    var projectDir = await createProjectDir(projectContents);
+    var cli = _createCli();
+    var summaryPath = resourceProvider.convertPath('/summary.json');
+    await cli.run(['--no-web-preview', '--summary', summaryPath, projectDir]);
+    var summaryData =
+        jsonDecode(resourceProvider.getFile(summaryPath).readAsStringSync());
+    expect(summaryData, TypeMatcher<Map>());
+    expect(summaryData, contains('changes'));
+  }
+
+  test_lifecycle_summary_does_not_double_count_hint_removals() async {
+    var projectContents = simpleProject(sourceText: 'int/*?*/ x;');
+    var projectDir = await createProjectDir(projectContents);
+    var cli = _createCli();
+    var summaryPath = resourceProvider.convertPath('/summary.json');
+    await cli.run(['--no-web-preview', '--summary', summaryPath, projectDir]);
+    var summaryData =
+        jsonDecode(resourceProvider.getFile(summaryPath).readAsStringSync());
+    var separator = resourceProvider.pathContext.separator;
+    expect(summaryData['changes']['byPath']['lib${separator}test.dart'],
+        {'makeTypeNullableDueToHint': 1});
+  }
+
   test_lifecycle_uri_error() async {
     var projectContents = simpleProject(sourceText: '''
 import 'package:does_not/exist.dart';
@@ -355,12 +432,41 @@
     expect(output, contains('Please fix the analysis issues'));
   }
 
+  test_migrate_path_absolute() {
+    resourceProvider.newFolder(resourceProvider.pathContext
+        .join(resourceProvider.pathContext.current, 'foo'));
+    expect(
+        resourceProvider.pathContext
+            .isAbsolute(assertParseArgsSuccess(['foo']).directory),
+        isTrue);
+  }
+
+  test_migrate_path_file() async {
+    resourceProvider.newFile(resourceProvider.pathContext.absolute('foo'), '');
+    expect(await assertParseArgsFailure(['foo']), contains('foo is a file'));
+  }
+
+  test_migrate_path_non_existent() async {
+    expect(
+        await assertParseArgsFailure(['foo']), contains('foo does not exist'));
+  }
+
   test_migrate_path_none() {
-    expect(assertParseArgsSuccess([]).directory, Directory.current.path);
+    expect(assertParseArgsSuccess([]).directory,
+        resourceProvider.pathContext.current);
+  }
+
+  test_migrate_path_normalized() {
+    expect(assertParseArgsSuccess(['..']).directory, isNot(contains('..')));
   }
 
   test_migrate_path_one() {
-    expect(assertParseArgsSuccess(['foo']).directory, 'foo');
+    resourceProvider.newFolder(resourceProvider.pathContext
+        .join(resourceProvider.pathContext.current, 'foo'));
+    expect(
+        assertParseArgsSuccess(['foo']).directory,
+        resourceProvider.pathContext
+            .join(resourceProvider.pathContext.current, 'foo'));
   }
 
   test_migrate_path_two() async {
@@ -402,6 +508,12 @@
     expect(await _getHelpText(verbose: true), contains(optionName));
   }
 
+  test_option_summary() {
+    var summaryPath = resourceProvider.convertPath('/summary.json');
+    expect(assertParseArgsSuccess(['--summary', summaryPath]).summary,
+        summaryPath);
+  }
+
   test_option_unrecognized() async {
     expect(
         await assertParseArgsFailure(['--this-option-does-not-exist']),
@@ -437,7 +549,10 @@
 
   _MigrationCliTestPosix()
       : resourceProvider = MemoryResourceProvider(
-            context: path.style == path.Style.posix ? null : path.posix);
+            context: path.style == path.Style.posix
+                ? null
+                : path.Context(
+                    style: path.Style.posix, current: '/working_dir'));
 }
 
 @reflectiveTest
@@ -450,7 +565,8 @@
       : resourceProvider = MemoryResourceProvider(
             context: path.style == path.Style.windows
                 ? null
-                : path.Context(style: path.Style.windows, current: 'C:\\'));
+                : path.Context(
+                    style: path.Style.windows, current: 'C:\\working_dir'));
 }
 
 /// TODO(paulberry): move into cli_util
diff --git a/pkg/nnbd_migration/test/node_builder_test.dart b/pkg/nnbd_migration/test/node_builder_test.dart
index adbd403..4d07f3b 100644
--- a/pkg/nnbd_migration/test/node_builder_test.dart
+++ b/pkg/nnbd_migration/test/node_builder_test.dart
@@ -454,6 +454,63 @@
         same(decoratedTypeAnnotation('V> {').node));
   }
 
+  Future<void> test_displayName_castType() async {
+    await analyze('f(x) => x as int;');
+    expect(decoratedTypeAnnotation('int').node.displayName,
+        'cast type (test.dart:1:14)');
+  }
+
+  Future<void> test_displayName_constructedType() async {
+    await analyze('''
+class C {
+  factory C() = D<int>;
+}
+class D<T> implements C {}
+''');
+    expect(decoratedTypeAnnotation('int').node.displayName,
+        'type argument 0 of constructed type (test.dart:2:19)');
+  }
+
+  Future<void> test_displayName_exceptionType_implicit() async {
+    await analyze('''
+f(void Function() g) {
+  try {
+    g();
+  } catch (e) {}
+}
+''');
+    expect(
+        variables
+            .decoratedElementType(findNode.simple('e)').staticElement)
+            .node
+            .displayName,
+        'f.e (test.dart:4:5)');
+  }
+
+  Future<void> test_displayName_exceptionType_no_variable() async {
+    await analyze('''
+f(void Function() g) {
+  try {
+    g();
+  } on String {}
+}
+''');
+    expect(decoratedTypeAnnotation('String').node.displayName,
+        'exception type (test.dart:4:8)');
+  }
+
+  Future<void> test_displayName_exceptionType_variable() async {
+    await analyze('''
+f(void Function() g) {
+  try {
+    g();
+  } on String catch (s) {}
+}
+''');
+    expect(decoratedTypeAnnotation('String').node.displayName,
+        'f.s (test.dart:4:8)');
+  }
+
   Future<void> test_displayName_explicitParameterType_named() async {
     await analyze('void f({int x, int y}) {}');
     expect(decoratedTypeAnnotation('int x').node.displayName,
@@ -472,6 +529,135 @@
         'parameter 2 of f (test.dart:1:23)');
   }
 
+  Future<void> test_displayName_extendedType() async {
+    await analyze('extension E on int {}');
+    expect(decoratedTypeAnnotation('int').node.displayName,
+        'extended type (test.dart:1:16)');
+  }
+
+  Future<void> test_displayName_field() async {
+    await analyze('class C { int x; }');
+    expect(decoratedTypeAnnotation('int').node.displayName,
+        'C.x (test.dart:1:11)');
+  }
+
+  Future<void> test_displayName_for_loop_variable() async {
+    await analyze('f(List<int> x) { for (int y in x) {} }');
+    expect(decoratedTypeAnnotation('int y').node.displayName,
+        'f.y (test.dart:1:23)');
+  }
+
+  Future<void>
+      test_displayName_functionExpressionInvocation_type_argument() async {
+    await analyze('f(g) => g<int>();');
+    expect(decoratedTypeAnnotation('int').node.displayName,
+        'type argument (test.dart:1:11)');
+  }
+
+  Future<void> test_displayName_listElementType() async {
+    await analyze('f() => <int>[];');
+    expect(decoratedTypeAnnotation('int').node.displayName,
+        'list element type (test.dart:1:9)');
+  }
+
+  Future<void> test_displayName_mapKeyType() async {
+    await analyze('f() => <int, String>{};');
+    expect(decoratedTypeAnnotation('int').node.displayName,
+        'map key type (test.dart:1:9)');
+  }
+
+  Future<void> test_displayName_mapValueType() async {
+    await analyze('f() => <int, String>{};');
+    expect(decoratedTypeAnnotation('String').node.displayName,
+        'map value type (test.dart:1:14)');
+  }
+
+  Future<void> test_displayName_methodInvocation_type_argument() async {
+    await analyze('f(x) => x.g<int>();');
+    expect(decoratedTypeAnnotation('int').node.displayName,
+        'type argument (test.dart:1:13)');
+  }
+
+  Future<void> test_displayName_setElementType() async {
+    await analyze('f() => <int>{};');
+    expect(decoratedTypeAnnotation('int').node.displayName,
+        'set element type (test.dart:1:9)');
+  }
+
+  Future<void> test_displayName_supertype() async {
+    await analyze('''
+class C<T> {}
+class D extends C<int> {}
+''');
+    expect(decoratedTypeAnnotation('int').node.displayName,
+        'type argument 0 of supertype of D (test.dart:2:19)');
+  }
+
+  Future<void> test_displayName_testedType() async {
+    await analyze('f(x) => x is int;');
+    expect(decoratedTypeAnnotation('int').node.displayName,
+        'tested type (test.dart:1:14)');
+  }
+
+  Future<void> test_displayName_typeArgument() async {
+    await analyze('var x = <List<int>>[];');
+    expect(decoratedTypeAnnotation('int').node.displayName,
+        'type argument 0 of list element type (test.dart:1:15)');
+  }
+
+  Future<void> test_displayName_typedef_new_parameter() async {
+    await analyze('typedef F = void Function(int x);');
+    expect(decoratedTypeAnnotation('int').node.displayName,
+        'parameter 0 of F (test.dart:1:27)');
+  }
+
+  Future<void> test_displayName_typedef_new_returnType() async {
+    await analyze('typedef F = int Function();');
+    expect(decoratedTypeAnnotation('int').node.displayName,
+        'return type of F (test.dart:1:13)');
+  }
+
+  Future<void> test_displayName_typedef_old_parameter() async {
+    await analyze('typedef void F(int x);');
+    expect(decoratedTypeAnnotation('int').node.displayName,
+        'parameter 0 of F (test.dart:1:16)');
+  }
+
+  Future<void> test_displayName_typedef_old_returnType() async {
+    await analyze('typedef int F();');
+    expect(decoratedTypeAnnotation('int').node.displayName,
+        'return type of F (test.dart:1:9)');
+  }
+
+  Future<void> test_displayName_typeParameterBound() async {
+    await analyze('class C<T extends num> {}');
+    expect(decoratedTypeAnnotation('num').node.displayName,
+        'bound of C.T (test.dart:1:19)');
+  }
+
+  Future<void> test_displayName_typeParameterBound_implicit() async {
+    await analyze('class C<T extends num> {}');
+    expect(
+        variables
+            .decoratedTypeParameterBound(
+                findElement.class_('C').typeParameters[0])
+            .node
+            .displayName,
+        'bound of C.T (test.dart:1:19)');
+  }
+
+  Future<void> test_displayName_variable_local() async {
+    await analyze('f() { int x; }');
+    expect(
+        decoratedTypeAnnotation('int').node.displayName, 'f.x (test.dart:1:7)');
+  }
+
+  Future<void> test_displayName_variable_top_level() async {
+    await analyze('int x;');
+    expect(
+        decoratedTypeAnnotation('int').node.displayName, 'x (test.dart:1:1)');
+  }
+
   Future<void> test_dynamic_type() async {
     await analyze('''
 dynamic f() {}
@@ -922,7 +1108,7 @@
     expect(decoratedIntType.node, isNotNull);
     expect(decoratedIntType.node, isNot(never));
     expect(decoratedType.returnType.node.displayName,
-        'parameter 0 of f (test.dart:1:8)');
+        'return type of parameter 0 of f (test.dart:1:8)');
   }
 
   Future<void> test_genericFunctionType_syntax_inferred_dynamic_return() async {
@@ -1636,7 +1822,7 @@
         .get((decoratedType.type as FunctionType).typeFormals[0]);
     _assertType(decoratedTypeFormalBound.type, 'num');
     expect(decoratedTypeFormalBound.node.displayName,
-        'bound of type formal T of explicit type (test.dart:2:1)');
+        'bound of type formal T of f (test.dart:2:1)');
     var decoratedTypedefTypeFormalBound = decoratedTypeParameterBounds
         .get((typedefDecoratedType.type as FunctionType).typeFormals[0]);
     expect(decoratedTypeFormalBound.node,
@@ -1665,14 +1851,14 @@
     expect(typedefDecoratedType.returnType.node.displayName,
         'return type of F (test.dart:1:9)');
     expect(decoratedType.returnType.node.displayName,
-        'return type of explicit type (test.dart:2:1)');
+        'return type of f (test.dart:2:1)');
     _assertType(decoratedType.positionalParameters[0].type, 'String');
     expect(decoratedType.positionalParameters[0].node,
         TypeMatcher<NullabilityNodeMutable>());
     expect(decoratedType.positionalParameters[0].node,
         isNot(same(typedefDecoratedType.positionalParameters[0].node)));
     expect(decoratedType.positionalParameters[0].node.displayName,
-        'parameter 0 of explicit type (test.dart:2:1)');
+        'parameter 0 of f (test.dart:2:1)');
   }
 
   Future<void> test_typedef_reference_simple_named_parameter() async {
@@ -1686,7 +1872,7 @@
     // its usage will be visited first.
     var decoratedType = decoratedTypeAnnotation('F f');
     expect(decoratedType.namedParameters['s'].node.displayName,
-        'parameter s of explicit type (test.dart:2:1)');
+        'parameter s of f (test.dart:2:1)');
   }
 
   Future<void> test_typedef_reference_simple_two_parameters() async {
@@ -1700,9 +1886,9 @@
     // its usage will be visited first.
     var decoratedType = decoratedTypeAnnotation('F f');
     expect(decoratedType.positionalParameters[0].node.displayName,
-        'parameter 0 of explicit type (test.dart:2:1)');
+        'parameter 0 of f (test.dart:2:1)');
     expect(decoratedType.positionalParameters[1].node.displayName,
-        'parameter 1 of explicit type (test.dart:2:1)');
+        'parameter 1 of f (test.dart:2:1)');
   }
 
   Future<void> test_typedef_rhs_nullability() async {
diff --git a/pkg/nnbd_migration/test/preview/preview_site_test.dart b/pkg/nnbd_migration/test/preview/preview_site_test.dart
index cfce5a6..82b611f 100644
--- a/pkg/nnbd_migration/test/preview/preview_site_test.dart
+++ b/pkg/nnbd_migration/test/preview/preview_site_test.dart
@@ -251,7 +251,7 @@
         offsetMapper: unitInfo.offsetMapper);
     var trace = unitInfo.regions[1].traces[0];
     assertTraceEntry(unitInfo, trace.entries[0], null,
-        unitInfo.content.indexOf('int/*?*/? y'), contains('explicit type'));
+        unitInfo.content.indexOf('int/*?*/? y'), contains('y (test.dart:2:1)'));
     assertTraceEntry(unitInfo, trace.entries[1], 'y',
         unitInfo.content.indexOf('= x;') + '= '.length, contains('data flow'));
     expect(state.hasBeenApplied, false);
diff --git a/pkg/nnbd_migration/test/utilities/source_edit_diff_formatter_test.dart b/pkg/nnbd_migration/test/utilities/source_edit_diff_formatter_test.dart
new file mode 100644
index 0000000..39cf314
--- /dev/null
+++ b/pkg/nnbd_migration/test/utilities/source_edit_diff_formatter_test.dart
@@ -0,0 +1,255 @@
+// Copyright (c) 2020, the Dart project authors. Please see the AUTHORS file
+// 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.
+
+import 'package:cli_util/cli_logging.dart';
+import 'package:nnbd_migration/src/edit_plan.dart';
+import 'package:nnbd_migration/src/utilities/source_edit_diff_formatter.dart';
+import 'package:test/test.dart';
+import 'package:test_reflective_loader/test_reflective_loader.dart';
+
+main() {
+  defineReflectiveSuite(() {
+    defineReflectiveTests(SourceEditDiffFormatterTest);
+  });
+}
+
+@reflectiveTest
+class SourceEditDiffFormatterTest {
+  DiffStyle get compactStyle => DiffStyle.forTesting(true);
+
+  DiffStyle get traditionalStyle => DiffStyle.forTesting(false);
+
+  test_ansi_supported() {
+    var ansi = Ansi(true);
+    expect(
+        DiffStyle(ansi).formatDiff('ab', {
+          0: [AtomicEdit.delete(1)],
+          2: [AtomicEdit.insert('c')]
+        }),
+        [
+          'line 1   • ${ansi.red}${ansi.reversed}a${ansi.none}'
+              'b${ansi.green}${ansi.reversed}c${ansi.none}'
+        ]);
+  }
+
+  test_ansi_unsupported() {
+    var ansi = Ansi(false);
+    expect(
+        DiffStyle(ansi).formatDiff('ab', {
+          0: [AtomicEdit.delete(1)],
+          2: [AtomicEdit.insert('c')]
+        }),
+        ['line 1   -ab', '         +bc']);
+  }
+
+  test_compact_consecutiveEdits() {
+    expect(
+        compactStyle.formatDiff('a', {
+          1: [AtomicEdit.insert('b'), AtomicEdit.insert('c')]
+        }),
+        ['line 1   * a{+b+}{+c+}']);
+  }
+
+  test_compact_deletion() {
+    expect(
+        compactStyle.formatDiff('abc', {
+          1: [AtomicEdit.delete(1)]
+        }),
+        ['line 1   * a{-b-}c']);
+  }
+
+  test_compact_deletion_ending_in_newline_at_line_start() {
+    expect(
+        compactStyle.formatDiff('abc\ndef', {
+          0: [AtomicEdit.delete(4)]
+        }),
+        ['line 1   * {-abc-}']);
+  }
+
+  test_compact_deletion_ending_in_newline_not_at_line_start() {
+    expect(
+        compactStyle.formatDiff('abc\ndef', {
+          1: [AtomicEdit.delete(3)]
+        }),
+        ['line 1   * a{-bc-}']);
+  }
+
+  test_compact_deletion_multiline() {
+    expect(
+        compactStyle.formatDiff('abc\ndef', {
+          1: [AtomicEdit.delete(5)]
+        }),
+        ['line 1   * a{-bc-}', 'line 2   * {-de-}f']);
+  }
+
+  test_compact_initialText() {
+    expect(
+        compactStyle.formatDiff('abc', {
+          3: [AtomicEdit.insert('d')]
+        }),
+        ['line 1   * abc{+d+}']);
+  }
+
+  test_compact_insertion() {
+    expect(
+        compactStyle.formatDiff('ac', {
+          1: [AtomicEdit.insert('b')]
+        }),
+        ['line 1   * a{+b+}c']);
+  }
+
+  test_compact_insertion_ending_in_newline() {
+    expect(
+        compactStyle.formatDiff('def', {
+          0: [AtomicEdit.insert('abc\n')]
+        }),
+        ['line 1   * {+abc+}']);
+  }
+
+  test_compact_insertion_multiline() {
+    expect(
+        compactStyle.formatDiff('af', {
+          1: [AtomicEdit.insert('bc\nde')]
+        }),
+        ['line 1   * a{+bc+}', '         * {+de+}f']);
+  }
+
+  test_compact_sort() {
+    expect(
+        compactStyle.formatDiff('b', {
+          1: [AtomicEdit.insert('c')],
+          0: [AtomicEdit.insert('a')]
+        }),
+        ['line 1   * {+a+}b{+c+}']);
+  }
+
+  test_compact_startsWithUnchangedLine() {
+    expect(
+        compactStyle.formatDiff('a\nb', {
+          3: [AtomicEdit.insert('c')]
+        }),
+        ['line 2   * b{+c+}']);
+  }
+
+  test_compact_trailingTextOnEditedLine_withFinalNewline() {
+    expect(
+        compactStyle.formatDiff('ac\n', {
+          1: [AtomicEdit.insert('b')]
+        }),
+        ['line 1   * a{+b+}c']);
+  }
+
+  test_compact_trailingTextOnEditedLine_withoutFinalNewline() {
+    expect(
+        compactStyle.formatDiff('ac', {
+          1: [AtomicEdit.insert('b')]
+        }),
+        ['line 1   * a{+b+}c']);
+  }
+
+  test_traditional_consecutiveEdits() {
+    expect(
+        traditionalStyle.formatDiff('a', {
+          1: [AtomicEdit.insert('b'), AtomicEdit.insert('c')]
+        }),
+        ['line 1   -a', '         +a{+b+}{+c+}']);
+  }
+
+  test_traditional_deletion() {
+    expect(
+        traditionalStyle.formatDiff('abc', {
+          1: [AtomicEdit.delete(1)]
+        }),
+        ['line 1   -a{-b-}c', '         +ac']);
+  }
+
+  test_traditional_deletion_ending_in_newline_at_line_start() {
+    expect(
+        traditionalStyle.formatDiff('abc\ndef', {
+          0: [AtomicEdit.delete(4)]
+        }),
+        ['line 1   -{-abc-}']);
+  }
+
+  test_traditional_deletion_ending_in_newline_not_at_line_start() {
+    expect(
+        traditionalStyle.formatDiff('abc\ndef', {
+          1: [AtomicEdit.delete(3)]
+        }),
+        ['line 1   -a{-bc-}', 'line 2   -def', '         +adef']);
+  }
+
+  test_traditional_deletion_multiline() {
+    expect(
+        traditionalStyle.formatDiff('abc\ndef', {
+          1: [AtomicEdit.delete(5)]
+        }),
+        ['line 1   -a{-bc-}', 'line 2   -{-de-}f', '         +af']);
+  }
+
+  test_traditional_initialText() {
+    expect(
+        traditionalStyle.formatDiff('abc', {
+          3: [AtomicEdit.insert('d')]
+        }),
+        ['line 1   -abc', '         +abc{+d+}']);
+  }
+
+  test_traditional_insertion() {
+    expect(
+        traditionalStyle.formatDiff('ac', {
+          1: [AtomicEdit.insert('b')]
+        }),
+        ['line 1   -ac', '         +a{+b+}c']);
+  }
+
+  test_traditional_insertion_ending_in_newline() {
+    expect(
+        traditionalStyle.formatDiff('def', {
+          0: [AtomicEdit.insert('abc\n')]
+        }),
+        ['line 1   +{+abc+}']);
+  }
+
+  test_traditional_insertion_multiline() {
+    expect(
+        traditionalStyle.formatDiff('af', {
+          1: [AtomicEdit.insert('bc\nde')]
+        }),
+        ['line 1   -af', '         +a{+bc+}', '         +{+de+}f']);
+  }
+
+  test_traditional_sort() {
+    expect(
+        traditionalStyle.formatDiff('b', {
+          1: [AtomicEdit.insert('c')],
+          0: [AtomicEdit.insert('a')]
+        }),
+        ['line 1   -b', '         +{+a+}b{+c+}']);
+  }
+
+  test_traditional_startsWithUnchangedLine() {
+    expect(
+        traditionalStyle.formatDiff('a\nb', {
+          3: [AtomicEdit.insert('c')]
+        }),
+        ['line 2   -b', '         +b{+c+}']);
+  }
+
+  test_traditional_trailingTextOnEditedLine_withFinalNewline() {
+    expect(
+        traditionalStyle.formatDiff('ac\n', {
+          1: [AtomicEdit.insert('b')]
+        }),
+        ['line 1   -ac', '         +a{+b+}c']);
+  }
+
+  test_traditional_trailingTextOnEditedLine_withoutFinalNewline() {
+    expect(
+        traditionalStyle.formatDiff('ac', {
+          1: [AtomicEdit.insert('b')]
+        }),
+        ['line 1   -ac', '         +a{+b+}c']);
+  }
+}
diff --git a/pkg/sourcemap_testing/lib/src/stepping_helper.dart b/pkg/sourcemap_testing/lib/src/stepping_helper.dart
index 525b818..b2c8c47 100644
--- a/pkg/sourcemap_testing/lib/src/stepping_helper.dart
+++ b/pkg/sourcemap_testing/lib/src/stepping_helper.dart
@@ -13,8 +13,8 @@
  * It is furthermore expected that the js has been compiled from a file in the
  * same folder called test.dart.
  */
-ProcessResult runD8AndStep(
-    String outputPath, AnnotatedCode code, List<String> scriptD8Command) {
+ProcessResult runD8AndStep(String outputPath, String testFileName,
+    AnnotatedCode code, List<String> scriptD8Command) {
   var outputFile = path.join(outputPath, "js.js");
   SingleMapping sourceMap =
       parse(new File("${outputFile}.map").readAsStringSync());
@@ -37,12 +37,13 @@
   // Annotations are 1-based, js breakpoints are 0-based.
   for (Annotation breakAt
       in code.annotations.where((a) => a.text.trim() == "bl")) {
-    breakpoints.add(_getJsBreakpointLine(sourceMap, breakAt.lineNo - 1));
+    breakpoints
+        .add(_getJsBreakpointLine(testFileName, sourceMap, breakAt.lineNo - 1));
   }
   for (Annotation breakAt
       in code.annotations.where((a) => a.text.trim().startsWith("bc:"))) {
     breakpoints.add(_getJsBreakpointLineAndColumn(
-        sourceMap, breakAt.lineNo - 1, breakAt.columnNo - 1));
+        testFileName, sourceMap, breakAt.lineNo - 1, breakAt.columnNo - 1));
   }
 
   File inspectorFile = new File.fromUri(
@@ -376,13 +377,16 @@
  * frontend/blob/fa18d70a995f06cb73365b2e5b8ae974cf60bd3a/front_end/sources/
  * JavaScriptSourceFrame.js#L1520-L1523
  */
-String _getJsBreakpointLine(SingleMapping sourceMap, int breakOnLine) {
+String _getJsBreakpointLine(
+    String testFileName, SingleMapping sourceMap, int breakOnLine) {
   List<_PointMapping> mappingsOnLines = [];
   for (var line in sourceMap.lines) {
     for (var entry in line.entries) {
       if (entry.sourceLine == null) continue;
       if (entry.sourceLine >= breakOnLine &&
-          entry.sourceLine < breakOnLine + 4) {
+          entry.sourceLine < breakOnLine + 4 &&
+          entry.sourceUrlId != null &&
+          sourceMap.urls[entry.sourceUrlId] == testFileName) {
         mappingsOnLines.add(new _PointMapping(
             entry.sourceLine, entry.sourceColumn, line.line, entry.column));
       }
@@ -407,12 +411,14 @@
 /**
  * Input and output is expected to be 0-based.
  */
-String _getJsBreakpointLineAndColumn(
+String _getJsBreakpointLineAndColumn(String testFileName,
     SingleMapping sourceMap, int breakOnLine, int breakOnColumn) {
   for (var line in sourceMap.lines) {
     for (var entry in line.entries) {
       if (entry.sourceLine == breakOnLine &&
-          entry.sourceColumn == breakOnColumn)
+          entry.sourceColumn == breakOnColumn &&
+          entry.sourceUrlId != null &&
+          sourceMap.urls[entry.sourceUrlId] == testFileName)
         return "${line.line}:${entry.column}";
     }
   }
diff --git a/pkg/test_runner/lib/src/configuration.dart b/pkg/test_runner/lib/src/configuration.dart
index 239ffcd..26a9f91 100644
--- a/pkg/test_runner/lib/src/configuration.dart
+++ b/pkg/test_runner/lib/src/configuration.dart
@@ -69,7 +69,8 @@
       this.reproducingArguments,
       this.fastTestsOnly,
       this.printPassingStdout})
-      : _packages = packages;
+      : _packages = packages,
+        isPreNNBD = configuration.name.split('-').contains('prennbd');
 
   final Map<String, RegExp> selectors;
   final Progress progress;
@@ -98,6 +99,7 @@
   final bool writeResults;
   final bool writeLogs;
   final bool printPassingStdout;
+  final bool isPreNNBD;
 
   Architecture get architecture => configuration.architecture;
   Compiler get compiler => configuration.compiler;
@@ -468,13 +470,11 @@
     var normal = '$result$arch';
     var cross = '${result}X$arch';
 
-    // TODO(38701): When enabling the NNBD experiment, we need to use the
-    // forked version of the SDK core libraries that have NNBD support. Remove
-    // this once the forked SDK at `<repo>/sdk_nnbd` has been merged back with
-    // `<repo>/sdk`.
-    if (experiments.contains("non-nullable")) {
-      normal += "NNBD";
-      cross += "NNBD";
+    // TODO(sigmund): remove once all prennbd coverage is dropped. Currently
+    // only dart2js supports opting-out of using the nnbd sdk.
+    if (isPreNNBD) {
+      normal += 'Legacy';
+      cross += 'Legacy';
     }
 
     var outDir = system.outputDirectory;
diff --git a/pkg/vm/bin/run_binary_size_analysis.dart b/pkg/vm/bin/run_binary_size_analysis.dart
index 4c4c9cf..bb67ba8 100644
--- a/pkg/vm/bin/run_binary_size_analysis.dart
+++ b/pkg/vm/bin/run_binary_size_analysis.dart
@@ -16,6 +16,8 @@
 
 import 'package:path/path.dart' as p;
 
+import 'package:vm/snapshot/instruction_sizes.dart' as instruction_sizes;
+
 void main(List<String> args) async {
   if (args.length != 2) {
     print(r"""
@@ -35,27 +37,18 @@
   final input = new File(args[0]);
   final outputDir = new Directory(args[1]);
 
+  if (!input.existsSync()) {
+    print("Input file ${input} does not exist");
+    return;
+  }
+
   // Load symbols data produced by the AOT compiler and convert it to
   // a tree.
-  final symbols = await input
-      .openRead()
-      .cast<List<int>>()
-      .transform(utf8.decoder)
-      .transform(json.decoder)
-      .first;
+  final symbols = await instruction_sizes.load(input);
 
   final root = {'n': '', 'children': {}, 'k': kindPath, 'maxDepth': 0};
   for (var symbol in symbols) {
-    final name = symbol['n'];
-    final size = symbol['s'];
-
-    if (symbol.containsKey('c')) {
-      final libraryUri = symbol['l'];
-      final className = symbol['c'];
-      addSymbol(root, '${libraryUri}/${className}', name, size);
-    } else {
-      addSymbol(root, '@stubs', name, size);
-    }
+    addSymbol(root, treePath(symbol), symbol.name.scrubbed, symbol.size);
   }
   final tree = flatten(root);
 
@@ -90,6 +83,19 @@
   print('Generated ${p.toUri(p.absolute(outputDir.path, 'index.html'))}');
 }
 
+/// Returns a /-separated path to the given symbol within the treemap.
+String treePath(instruction_sizes.SymbolInfo symbol) {
+  if (symbol.name.isStub) {
+    if (symbol.name.isAllocationStub) {
+      return '@stubs/allocation-stubs/${symbol.libraryUri}/${symbol.className}';
+    } else {
+      return '@stubs';
+    }
+  } else {
+    return '${symbol.libraryUri}/${symbol.className}';
+  }
+}
+
 const kindSymbol = 's';
 const kindPath = 'p';
 const kindBucket = 'b';
@@ -99,6 +105,9 @@
 /// an existing child.
 Map<String, dynamic> addChild(
     Map<String, dynamic> node, String kind, String name) {
+  if (kind == kindSymbol && node['children'].containsKey(name)) {
+    print('Duplicate symbol ${name}');
+  }
   return node['children'].putIfAbsent(name, () {
     final n = <String, dynamic>{'n': name, 'k': kind};
     if (kind != kindSymbol) {
diff --git a/pkg/vm/lib/bytecode/generics.dart b/pkg/vm/lib/bytecode/generics.dart
index f29fcce..e316f86 100644
--- a/pkg/vm/lib/bytecode/generics.dart
+++ b/pkg/vm/lib/bytecode/generics.dart
@@ -74,6 +74,8 @@
     }
   }
 
+  assert(typeParameters.length == typeArgs.length);
+
   final substitution = Substitution.fromPairs(typeParameters, typeArgs);
 
   List<DartType> flatTypeArgs = <DartType>[];
diff --git a/pkg/vm/lib/bytecode/local_vars.dart b/pkg/vm/lib/bytecode/local_vars.dart
index d92e15a..5ba6c9c 100644
--- a/pkg/vm/lib/bytecode/local_vars.dart
+++ b/pkg/vm/lib/bytecode/local_vars.dart
@@ -282,9 +282,15 @@
 
   Frame(this.function, this.parent);
 
-  VariableDeclaration getSyntheticVar(String name) =>
-      syntheticVars[name] ??
-      (throw '${name} variable is not declared in ${function}');
+  VariableDeclaration getSyntheticVar(String name) {
+    if (syntheticVars == null) {
+      throw 'No synthetic variables declared in ${function}!';
+    }
+    if (syntheticVars[name] == null) {
+      throw '${name} variable is not declared in ${function}';
+    }
+    return syntheticVars[name];
+  }
 }
 
 class Scope {
@@ -316,6 +322,20 @@
 class _ScopeBuilder extends RecursiveVisitor<Null> {
   final LocalVariables locals;
 
+  // Set of synthetic variables we need to keep track of in Frame.
+  static final registeredSyntheticVars = RegExp(r'^(' +
+      '${ContinuationVariables.awaitJumpVar}|' +
+      '${ContinuationVariables.awaitContextVar}|' +
+      '${ContinuationVariables.asyncCompleter}|' +
+      '${ContinuationVariables.asyncStackTraceVar}|' +
+      '${ContinuationVariables.controller}|' +
+      '${ContinuationVariables.controllerStreamVar}|' +
+      // :exception0, :stack_trace17, etc..
+      '${ContinuationVariables.savedTryContextVarPrefix}[0-9]+|' +
+      '${ContinuationVariables.exceptionVarPrefix}[0-9]+|' +
+      '${ContinuationVariables.stackTraceVarPrefix}[0-9]+' +
+      r')$');
+
   Scope _currentScope;
   Frame _currentFrame;
   List<TreeNode> _enclosingTryBlocks;
@@ -402,6 +422,7 @@
       visitList(function.positionalParameters, this);
       visitList(_currentFrame.sortedNamedParameters, this);
 
+      // Inner (a)sync_op(..).
       if (_currentFrame.isSyncYielding) {
         // The following variables from parent frame are used implicitly and need
         // to be captured to preserve state across closure invocations.
@@ -424,7 +445,7 @@
           _useVariable(_currentFrame.parent
               .getSyntheticVar(ContinuationVariables.asyncStackTraceVar));
         }
-      }
+      } // _currentFrame.isSyncYielding
 
       if (node is Constructor) {
         for (var field in node.enclosingClass.fields) {
@@ -437,13 +458,25 @@
 
       function.body?.accept(this);
 
+      // sync* is transformed to have two nested synthetic functions.
+      // The first such function defines :await_jump_var, which needs to be
+      // made part of the outer function's scope.
+      if (_currentFrame.parent?.dartAsyncMarker == AsyncMarker.SyncStar) {
+        locals
+            ._getVarDesc(_currentFrame
+                .getSyntheticVar(ContinuationVariables.awaitJumpVar))
+            .moveToScope(_currentScope);
+      }
+
+      // Outer, original async/async*.
       if (_currentFrame.dartAsyncMarker == AsyncMarker.Async ||
-          _currentFrame.dartAsyncMarker == AsyncMarker.SyncStar ||
           _currentFrame.dartAsyncMarker == AsyncMarker.AsyncStar) {
         locals
             ._getVarDesc(_currentFrame
                 .getSyntheticVar(ContinuationVariables.awaitJumpVar))
             .moveToScope(_currentScope);
+
+        // Depending on the type of async, an additional synth. var. is needed.
         if (_currentFrame.dartAsyncMarker == AsyncMarker.Async) {
           locals
               ._getVarDesc(_currentFrame
@@ -509,7 +542,8 @@
       scope = _currentScope;
     }
     final VarDesc v = new VarDesc(variable, scope);
-    assert(locals._vars[variable] == null);
+    assert(locals._vars[variable] == null,
+        'Double declaring variable ${variable}!');
     locals._vars[variable] = v;
   }
 
@@ -540,7 +574,7 @@
         _currentFrame.scratchVar,
         _currentFrame.returnVar,
       ]);
-    transient.addAll((_currentFrame.function as FunctionDeclaration)
+    transient.addAll((_currentFrame.function as LocalFunction)
         .function
         .positionalParameters);
     for (Scope scope = _currentScope;
@@ -621,11 +655,12 @@
   @override
   visitVariableDeclaration(VariableDeclaration node) {
     _declareVariable(node);
-
-    if (_currentFrame.dartAsyncMarker != AsyncMarker.Sync &&
-        node.name[0] == ':') {
+    // Register synthetic variables so we can reference them later where
+    // they're implicitely used.
+    if (node.name != null && registeredSyntheticVars.hasMatch(node.name)) {
       _currentFrame.syntheticVars ??= <String, VariableDeclaration>{};
-      assert(_currentFrame.syntheticVars[node.name] == null);
+      assert(_currentFrame.syntheticVars[node.name] == null,
+          "Synthetic variable ${node} double declared!");
       _currentFrame.syntheticVars[node.name] = node;
     }
 
@@ -737,7 +772,7 @@
     VariableDeclaration iteratorVar;
     if (_currentFrame.isSyncYielding) {
       // Declare a variable to hold 'iterator' so it could be captured.
-      iteratorVar = new VariableDeclaration(':iterator');
+      iteratorVar = VariableDeclaration(':for-in-iterator');
       _declareVariable(iteratorVar);
       locals._capturedIteratorVars ??=
           new Map<ForInStatement, VariableDeclaration>();
@@ -833,6 +868,7 @@
   }
 }
 
+// Allocate context slots for each local variable.
 class _Allocator extends RecursiveVisitor<Null> {
   final LocalVariables locals;
 
@@ -853,20 +889,6 @@
 
       if (_currentScope.parent != null) {
         _currentFrame.contextLevelAtEntry = _currentScope.parent.contextLevel;
-
-        if (_currentFrame.isSyncYielding) {
-          // _Closure._clone(), which is used to clone sync-yielding closures
-          // only clones 1 level of a context. So parent frame of a
-          // sync-yielding closure should have exactly 1 context level.
-          final parentFrame = _currentFrame.parent;
-          final currentLevel = _currentFrame.contextLevelAtEntry;
-          final parentLevel = parentFrame.contextLevelAtEntry ?? -1;
-          if (currentLevel != parentLevel + 1) {
-            throw 'Unexpected context allocation in ${parentFrame.function}\n'
-                ' - context level at parent entry: ${parentLevel}\n'
-                ' - context level at synthetic closure entry: ${currentLevel}\n';
-          }
-        }
       }
 
       _currentScope.localsUsed = 0;
@@ -883,6 +905,8 @@
     final int parentContextLevel =
         _currentScope.parent != null ? _currentScope.parent.contextLevel : -1;
 
+    assert(parentContextLevel != null);
+
     final int numCaptured =
         _currentScope.vars.where((v) => v.isCaptured).length;
     if (numCaptured > 0) {
@@ -1100,8 +1124,11 @@
       final FunctionNode function = (node as dynamic).function;
       assert(function != null);
 
+      // Specially allocate implicit variables before anything else to ensure
+      // reserved spot in context.
+
+      // Outer async/async* function.
       if (_currentFrame.dartAsyncMarker == AsyncMarker.Async ||
-          _currentFrame.dartAsyncMarker == AsyncMarker.SyncStar ||
           _currentFrame.dartAsyncMarker == AsyncMarker.AsyncStar) {
         final awaitJumpVar =
             _currentFrame.getSyntheticVar(ContinuationVariables.awaitJumpVar);
@@ -1109,19 +1136,29 @@
         assert(
             locals._getVarDesc(awaitJumpVar).index == awaitJumpVarContextIndex);
       }
+
+      // :await_jump_var is declared in sync_op_gen, and implicitely used in sync_op.
+      if (_currentFrame.parent?.dartAsyncMarker == AsyncMarker.SyncStar) {
+        final awaitJumpVar =
+            _currentFrame.getSyntheticVar(ContinuationVariables.awaitJumpVar);
+        _allocateVariable(awaitJumpVar);
+        assert(
+            locals._getVarDesc(awaitJumpVar).index == awaitJumpVarContextIndex);
+      }
+
       if (_currentFrame.dartAsyncMarker == AsyncMarker.Async) {
         final asyncCompleter =
             _currentFrame.getSyntheticVar(ContinuationVariables.asyncCompleter);
         _allocateVariable(asyncCompleter);
         assert(locals._getVarDesc(asyncCompleter).index ==
             asyncCompleterContextIndex);
-      }
-      if (_currentFrame.dartAsyncMarker == AsyncMarker.AsyncStar) {
+      } else if (_currentFrame.dartAsyncMarker == AsyncMarker.AsyncStar) {
         final controller =
             _currentFrame.getSyntheticVar(ContinuationVariables.controller);
         _allocateVariable(controller);
         assert(locals._getVarDesc(controller).index == controllerContextIndex);
       }
+
       _allocateParameters(node, function);
       _allocateSpecialVariables();
 
@@ -1134,6 +1171,7 @@
         visitList(node.initializers, this);
       }
 
+      // The visit the function body.
       function.body?.accept(this);
     }
 
@@ -1180,6 +1218,8 @@
 
   @override
   visitVariableDeclaration(VariableDeclaration node) {
+    // Since these synthetic vars are specially allocated at a set index,
+    // verify these slots, and only allocate normal vars.
     if (node.name == ContinuationVariables.awaitJumpVar) {
       assert(locals._getVarDesc(node).index == awaitJumpVarContextIndex);
     } else if (node.name == ContinuationVariables.asyncCompleter) {
@@ -1189,6 +1229,7 @@
     } else {
       _allocateVariable(node);
     }
+
     node.visitChildren(this);
   }
 
diff --git a/pkg/vm/lib/snapshot/instruction_sizes.dart b/pkg/vm/lib/snapshot/instruction_sizes.dart
new file mode 100644
index 0000000..e73ec00
--- /dev/null
+++ b/pkg/vm/lib/snapshot/instruction_sizes.dart
@@ -0,0 +1,53 @@
+// Copyright (c) 2020, the Dart project authors.  Please see the AUTHORS file
+// 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.
+
+/// Helper functions for parsing output of `--print-instructions-sizes-to` flag.
+library vm.snapshot.instruction_sizes;
+
+import 'dart:convert';
+import 'dart:io';
+
+import 'package:vm/snapshot/name.dart';
+
+/// Parse the output of `--print-instructions-sizes-to` saved in the given
+/// file [input].
+Future<List<SymbolInfo>> load(File input) async {
+  final List<dynamic> symbolsArray = await input
+      .openRead()
+      .transform(utf8.decoder)
+      .transform(json.decoder)
+      .first;
+  return symbolsArray
+      .cast<Map<String, dynamic>>()
+      .map(SymbolInfo._fromJson)
+      .toList(growable: false);
+}
+
+/// Information about the size of the instruction object.
+class SymbolInfo {
+  /// Name of the code object (`Code::QualifiedName`) owning these instructions.
+  final Name name;
+
+  /// If this instructions object originated from a function then [libraryUri]
+  /// will contain uri of the library of that function.
+  final String libraryUri;
+
+  /// If this instructions object originated from a function then [className]
+  /// would contain name of the class owning that function.
+  final String className;
+
+  /// Size of the instructions object in bytes.
+  final int size;
+
+  SymbolInfo({String name, this.libraryUri, this.className, this.size})
+      : name = Name(name);
+
+  static SymbolInfo _fromJson(Map<String, dynamic> map) {
+    return SymbolInfo(
+        libraryUri: map['l'],
+        className: map['c'],
+        name: map['n'],
+        size: map['s']);
+  }
+}
diff --git a/pkg/vm/lib/snapshot/name.dart b/pkg/vm/lib/snapshot/name.dart
new file mode 100644
index 0000000..e14e1a4
--- /dev/null
+++ b/pkg/vm/lib/snapshot/name.dart
@@ -0,0 +1,39 @@
+// Copyright (c) 2020, the Dart project authors.  Please see the AUTHORS file
+// 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.
+
+/// Helpers for parsing Code object name produced by Code::QualifiedName
+library vm.snapshot.name;
+
+// Wrapper around the name of a Code object produced by Code::QualifiedName.
+//
+// Raw textual representation of the name contains not just the name of itself,
+// but also various attributes (whether this code object originates from the
+// Dart function or from a stub, whether it is optimized or not, whether
+// it corresponds to some synthetic function, etc).
+class Name {
+  /// Raw textual representation of the name as it occurred in the output
+  /// of the AOT compiler.
+  final String raw;
+
+  Name(this.raw);
+
+  /// Pretty version of the name, with some of the irrelevant information
+  /// removed from it.
+  /// Note: we still expect this name to be unique within compilation,
+  /// so we are not removing any details that are used for disambiguation.
+  String get scrubbed => raw.replaceAll(_scrubbingRe, '');
+
+  /// Returns true if this name refers to a stub.
+  bool get isStub => raw.startsWith('[Stub] ');
+
+  /// Returns true if this name refers to an allocation stub.
+  bool get isAllocationStub => raw.startsWith('[Stub] Allocate ');
+}
+
+// Remove useless prefixes and private library suffixes from the raw name.
+//
+// Note that we want to keep anonymous closure token positions in the name
+// still, these names are formatted as '<anonymous closure @\d+>'.
+final _scrubbingRe =
+    RegExp(r'\[(Optimized|Unoptimized|Stub)\]\s*|@\d+(?![>\d])');
diff --git a/pkg/vm/lib/transformations/type_flow/transformer.dart b/pkg/vm/lib/transformations/type_flow/transformer.dart
index 65d3abc..b16f5c1 100644
--- a/pkg/vm/lib/transformations/type_flow/transformer.dart
+++ b/pkg/vm/lib/transformations/type_flow/transformer.dart
@@ -1001,12 +1001,12 @@
 
   @override
   TreeNode defaultMember(Member node) {
+    currentMember = node;
     if (shaker.isMemberBodyReachable(node)) {
       if (kPrintTrace) {
         tracePrint("Visiting $node");
       }
       shaker.addUsedMember(node);
-      currentMember = node;
       node.transformChildren(this);
     } else if (shaker.isMemberReferencedFromNativeCode(node)) {
       // Preserve members referenced from native code to satisfy lookups, even
@@ -1015,11 +1015,13 @@
       // its enclosing class are allocated.
       shaker.addUsedMember(node);
     }
+    currentMember = null;
     return node;
   }
 
   @override
   TreeNode visitField(Field node) {
+    currentMember = node;
     if (shaker.retainField(node)) {
       if (kPrintTrace) {
         tracePrint("Visiting $node");
@@ -1037,6 +1039,7 @@
       // used as an instance call target.
       fieldMorpher.adjustInstanceCallTarget(node, isSetter: true);
     }
+    currentMember = null;
     return node;
   }
 
diff --git a/pkg/vm/testcases/bytecode/async.dart.expect b/pkg/vm/testcases/bytecode/async.dart.expect
index 73d3434..b55bb25 100644
--- a/pkg/vm/testcases/bytecode/async.dart.expect
+++ b/pkg/vm/testcases/bytecode/async.dart.expect
@@ -2015,8 +2015,8 @@
         dart.async::_completeOnAsyncReturn(:async_completer, :return_value);
         return;
       }
-      on dynamic catch(dynamic :exception, dart.core::StackTrace* :stack_trace) {
-        :async_completer.{dart.async::Completer::completeError}(:exception, :stack_trace);
+      on dynamic catch(dynamic exception, dart.core::StackTrace* stack_trace) {
+        :async_completer.{dart.async::Completer::completeError}(exception, stack_trace);
       }
     :async_stack_trace = dart.async::_asyncStackTraceHelper(:async_op);
     :async_op_then = dart.async::_asyncThenWrapperHelper(:async_op);
@@ -2042,8 +2042,8 @@
         dart.async::_completeOnAsyncReturn(:async_completer, :return_value);
         return;
       }
-      on dynamic catch(dynamic :exception, dart.core::StackTrace* :stack_trace) {
-        :async_completer.{dart.async::Completer::completeError}(:exception, :stack_trace);
+      on dynamic catch(dynamic exception, dart.core::StackTrace* stack_trace) {
+        :async_completer.{dart.async::Completer::completeError}(exception, stack_trace);
       }
     :async_stack_trace = dart.async::_asyncStackTraceHelper(:async_op);
     :async_op_then = dart.async::_asyncThenWrapperHelper(:async_op);
@@ -2074,8 +2074,8 @@
         dart.async::_completeOnAsyncReturn(:async_completer, :return_value);
         return;
       }
-      on dynamic catch(dynamic :exception, dart.core::StackTrace* :stack_trace) {
-        :async_completer.{dart.async::Completer::completeError}(:exception, :stack_trace);
+      on dynamic catch(dynamic exception, dart.core::StackTrace* stack_trace) {
+        :async_completer.{dart.async::Completer::completeError}(exception, stack_trace);
       }
     :async_stack_trace = dart.async::_asyncStackTraceHelper(:async_op);
     :async_op_then = dart.async::_asyncThenWrapperHelper(:async_op);
@@ -2122,8 +2122,8 @@
         dart.async::_completeOnAsyncReturn(:async_completer, :return_value);
         return;
       }
-      on dynamic catch(dynamic :exception, dart.core::StackTrace* :stack_trace) {
-        :async_completer.{dart.async::Completer::completeError}(:exception, :stack_trace);
+      on dynamic catch(dynamic exception, dart.core::StackTrace* stack_trace) {
+        :async_completer.{dart.async::Completer::completeError}(exception, stack_trace);
       }
     :async_stack_trace = dart.async::_asyncStackTraceHelper(:async_op);
     :async_op_then = dart.async::_asyncThenWrapperHelper(:async_op);
@@ -2180,8 +2180,8 @@
         dart.async::_completeOnAsyncReturn(:async_completer, :return_value);
         return;
       }
-      on dynamic catch(dynamic :exception, dart.core::StackTrace* :stack_trace) {
-        :async_completer.{dart.async::Completer::completeError}(:exception, :stack_trace);
+      on dynamic catch(dynamic exception, dart.core::StackTrace* stack_trace) {
+        :async_completer.{dart.async::Completer::completeError}(exception, stack_trace);
       }
     :async_stack_trace = dart.async::_asyncStackTraceHelper(:async_op);
     :async_op_then = dart.async::_asyncThenWrapperHelper(:async_op);
@@ -2220,8 +2220,8 @@
           dart.async::_completeOnAsyncReturn(:async_completer, :return_value);
           return;
         }
-        on dynamic catch(dynamic :exception, dart.core::StackTrace* :stack_trace) {
-          :async_completer.{dart.async::Completer::completeError}(:exception, :stack_trace);
+        on dynamic catch(dynamic exception, dart.core::StackTrace* stack_trace) {
+          :async_completer.{dart.async::Completer::completeError}(exception, stack_trace);
         }
       :async_stack_trace = dart.async::_asyncStackTraceHelper(:async_op);
       :async_op_then = dart.async::_asyncThenWrapperHelper(:async_op);
@@ -2254,8 +2254,8 @@
         dart.async::_completeOnAsyncReturn(:async_completer, :return_value);
         return;
       }
-      on dynamic catch(dynamic :exception, dart.core::StackTrace* :stack_trace) {
-        :async_completer.{dart.async::Completer::completeError}(:exception, :stack_trace);
+      on dynamic catch(dynamic exception, dart.core::StackTrace* stack_trace) {
+        :async_completer.{dart.async::Completer::completeError}(exception, stack_trace);
       }
     :async_stack_trace = dart.async::_asyncStackTraceHelper(:async_op);
     :async_op_then = dart.async::_asyncThenWrapperHelper(:async_op);
diff --git a/pkg/vm/testcases/bytecode/bootstrapping.dart.expect b/pkg/vm/testcases/bytecode/bootstrapping.dart.expect
index 6f5d2ad..8fbd06a 100644
--- a/pkg/vm/testcases/bytecode/bootstrapping.dart.expect
+++ b/pkg/vm/testcases/bytecode/bootstrapping.dart.expect
@@ -259,6 +259,46 @@
   [1] = Reserved
 }
 
+
+Function 'get:_identityHashCode', getter, abstract, debuggable
+    parameters [] (required: 0)
+    return-type dart:core::int
+
+Function '_instanceOf', abstract, debuggable
+    parameters [dynamic 'instantiatorTypeArguments', dynamic 'functionTypeArguments', dynamic 'type'] (required: 3)
+    return-type dart:core::bool
+
+Function '_simpleInstanceOf', abstract, debuggable
+    parameters [dynamic 'type'] (required: 1)
+    return-type dart:core::bool
+
+Function '_simpleInstanceOfTrue', abstract, debuggable
+    parameters [dynamic 'type'] (required: 1)
+    return-type dart:core::bool
+
+Function '_simpleInstanceOfFalse', abstract, debuggable
+    parameters [dynamic 'type'] (required: 1)
+    return-type dart:core::bool
+
+Function '==', abstract, debuggable
+    parameters [dynamic 'other'] (required: 1)
+    return-type dart:core::bool
+
+Function 'get:hashCode', getter, abstract, debuggable
+    parameters [] (required: 0)
+    return-type dart:core::int
+
+Function 'toString', abstract, debuggable
+    parameters [] (required: 0)
+    return-type dart:core::String
+
+Function 'noSuchMethod', abstract, debuggable
+    parameters [dart:core::Invocation 'invocation'] (required: 1)
+    return-type dynamic
+
+Function 'get:runtimeType', getter, abstract, debuggable
+    parameters [] (required: 0)
+    return-type dart:core::Type
 Class '_NamespaceImpl', script = '#lib'
     extends dart:core::Object
     implements [#lib::_Namespace]
@@ -412,6 +452,46 @@
   [3] = Reserved
 }
 
+
+Function 'get:_identityHashCode', getter, abstract, debuggable
+    parameters [] (required: 0)
+    return-type dart:core::int
+
+Function '_instanceOf', abstract, debuggable
+    parameters [dynamic 'instantiatorTypeArguments', dynamic 'functionTypeArguments', dynamic 'type'] (required: 3)
+    return-type dart:core::bool
+
+Function '_simpleInstanceOf', abstract, debuggable
+    parameters [dynamic 'type'] (required: 1)
+    return-type dart:core::bool
+
+Function '_simpleInstanceOfTrue', abstract, debuggable
+    parameters [dynamic 'type'] (required: 1)
+    return-type dart:core::bool
+
+Function '_simpleInstanceOfFalse', abstract, debuggable
+    parameters [dynamic 'type'] (required: 1)
+    return-type dart:core::bool
+
+Function '==', abstract, debuggable
+    parameters [dynamic 'other'] (required: 1)
+    return-type dart:core::bool
+
+Function 'get:hashCode', getter, abstract, debuggable
+    parameters [] (required: 0)
+    return-type dart:core::int
+
+Function 'toString', abstract, debuggable
+    parameters [] (required: 0)
+    return-type dart:core::String
+
+Function 'noSuchMethod', abstract, debuggable
+    parameters [dart:core::Invocation 'invocation'] (required: 1)
+    return-type dynamic
+
+Function 'get:runtimeType', getter, abstract, debuggable
+    parameters [] (required: 0)
+    return-type dart:core::Type
 Class '_Namespace', script = '#lib'
     extends dart:core::Object
 
@@ -485,6 +565,46 @@
   [1] = Reserved
 }
 
+
+Function 'get:_identityHashCode', getter, abstract, debuggable
+    parameters [] (required: 0)
+    return-type dart:core::int
+
+Function '_instanceOf', abstract, debuggable
+    parameters [dynamic 'instantiatorTypeArguments', dynamic 'functionTypeArguments', dynamic 'type'] (required: 3)
+    return-type dart:core::bool
+
+Function '_simpleInstanceOf', abstract, debuggable
+    parameters [dynamic 'type'] (required: 1)
+    return-type dart:core::bool
+
+Function '_simpleInstanceOfTrue', abstract, debuggable
+    parameters [dynamic 'type'] (required: 1)
+    return-type dart:core::bool
+
+Function '_simpleInstanceOfFalse', abstract, debuggable
+    parameters [dynamic 'type'] (required: 1)
+    return-type dart:core::bool
+
+Function '==', abstract, debuggable
+    parameters [dynamic 'other'] (required: 1)
+    return-type dart:core::bool
+
+Function 'get:hashCode', getter, abstract, debuggable
+    parameters [] (required: 0)
+    return-type dart:core::int
+
+Function 'toString', abstract, debuggable
+    parameters [] (required: 0)
+    return-type dart:core::String
+
+Function 'noSuchMethod', abstract, debuggable
+    parameters [dart:core::Invocation 'invocation'] (required: 1)
+    return-type dynamic
+
+Function 'get:runtimeType', getter, abstract, debuggable
+    parameters [] (required: 0)
+    return-type dart:core::Type
 Class 'VMLibraryHooks', script = '#lib'
     extends dart:core::Object
 
@@ -585,6 +705,46 @@
   [3] = Reserved
 }
 
+
+Function 'get:_identityHashCode', getter, abstract, debuggable
+    parameters [] (required: 0)
+    return-type dart:core::int
+
+Function '_instanceOf', abstract, debuggable
+    parameters [dynamic 'instantiatorTypeArguments', dynamic 'functionTypeArguments', dynamic 'type'] (required: 3)
+    return-type dart:core::bool
+
+Function '_simpleInstanceOf', abstract, debuggable
+    parameters [dynamic 'type'] (required: 1)
+    return-type dart:core::bool
+
+Function '_simpleInstanceOfTrue', abstract, debuggable
+    parameters [dynamic 'type'] (required: 1)
+    return-type dart:core::bool
+
+Function '_simpleInstanceOfFalse', abstract, debuggable
+    parameters [dynamic 'type'] (required: 1)
+    return-type dart:core::bool
+
+Function '==', abstract, debuggable
+    parameters [dynamic 'other'] (required: 1)
+    return-type dart:core::bool
+
+Function 'get:hashCode', getter, abstract, debuggable
+    parameters [] (required: 0)
+    return-type dart:core::int
+
+Function 'toString', abstract, debuggable
+    parameters [] (required: 0)
+    return-type dart:core::String
+
+Function 'noSuchMethod', abstract, debuggable
+    parameters [dart:core::Invocation 'invocation'] (required: 1)
+    return-type dynamic
+
+Function 'get:runtimeType', getter, abstract, debuggable
+    parameters [] (required: 0)
+    return-type dart:core::Type
 Class 'Stdin', script = '#lib'
     extends dart:core::Object
 
@@ -607,6 +767,46 @@
   [1] = Reserved
 }
 
+
+Function 'get:_identityHashCode', getter, abstract, debuggable
+    parameters [] (required: 0)
+    return-type dart:core::int
+
+Function '_instanceOf', abstract, debuggable
+    parameters [dynamic 'instantiatorTypeArguments', dynamic 'functionTypeArguments', dynamic 'type'] (required: 3)
+    return-type dart:core::bool
+
+Function '_simpleInstanceOf', abstract, debuggable
+    parameters [dynamic 'type'] (required: 1)
+    return-type dart:core::bool
+
+Function '_simpleInstanceOfTrue', abstract, debuggable
+    parameters [dynamic 'type'] (required: 1)
+    return-type dart:core::bool
+
+Function '_simpleInstanceOfFalse', abstract, debuggable
+    parameters [dynamic 'type'] (required: 1)
+    return-type dart:core::bool
+
+Function '==', abstract, debuggable
+    parameters [dynamic 'other'] (required: 1)
+    return-type dart:core::bool
+
+Function 'get:hashCode', getter, abstract, debuggable
+    parameters [] (required: 0)
+    return-type dart:core::int
+
+Function 'toString', abstract, debuggable
+    parameters [] (required: 0)
+    return-type dart:core::String
+
+Function 'noSuchMethod', abstract, debuggable
+    parameters [dart:core::Invocation 'invocation'] (required: 1)
+    return-type dynamic
+
+Function 'get:runtimeType', getter, abstract, debuggable
+    parameters [] (required: 0)
+    return-type dart:core::Type
 Class '_StdIOUtils', script = '#lib'
     extends dart:core::Object
 
@@ -644,6 +844,46 @@
 }
 
 
+Function 'get:_identityHashCode', getter, abstract, debuggable
+    parameters [] (required: 0)
+    return-type dart:core::int
+
+Function '_instanceOf', abstract, debuggable
+    parameters [dynamic 'instantiatorTypeArguments', dynamic 'functionTypeArguments', dynamic 'type'] (required: 3)
+    return-type dart:core::bool
+
+Function '_simpleInstanceOf', abstract, debuggable
+    parameters [dynamic 'type'] (required: 1)
+    return-type dart:core::bool
+
+Function '_simpleInstanceOfTrue', abstract, debuggable
+    parameters [dynamic 'type'] (required: 1)
+    return-type dart:core::bool
+
+Function '_simpleInstanceOfFalse', abstract, debuggable
+    parameters [dynamic 'type'] (required: 1)
+    return-type dart:core::bool
+
+Function '==', abstract, debuggable
+    parameters [dynamic 'other'] (required: 1)
+    return-type dart:core::bool
+
+Function 'get:hashCode', getter, abstract, debuggable
+    parameters [] (required: 0)
+    return-type dart:core::int
+
+Function 'toString', abstract, debuggable
+    parameters [] (required: 0)
+    return-type dart:core::String
+
+Function 'noSuchMethod', abstract, debuggable
+    parameters [dart:core::Invocation 'invocation'] (required: 1)
+    return-type dynamic
+
+Function 'get:runtimeType', getter, abstract, debuggable
+    parameters [] (required: 0)
+    return-type dart:core::Type
+
 }
 ]library #lib from "#lib" as #lib {
 
@@ -653,6 +893,16 @@
     synthetic constructor •() → #lib::_ScheduleImmediate*
       : super dart.core::Object::•()
       ;
+    abstract member-signature get _identityHashCode() → dart.core::int*;
+    abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfTrue(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfFalse(dynamic type) → dart.core::bool*;
+    abstract member-signature operator ==(dynamic other) → dart.core::bool*;
+    abstract member-signature get hashCode() → dart.core::int*;
+    abstract member-signature method toString() → dart.core::String*;
+    abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic;
+    abstract member-signature get runtimeType() → dart.core::Type*;
   }
   class _NamespaceImpl extends dart.core::Object implements #lib::_Namespace {
     static field #lib::_NamespaceImpl* _cachedNamespace = null;
@@ -669,13 +919,23 @@
       #lib::_NamespaceImpl::_cachedNamespace = #lib::_NamespaceImpl::_create(new #lib::_NamespaceImpl::_(), namespace);
     }
     static get _namespace() → #lib::_NamespaceImpl* {
-      if(#lib::_NamespaceImpl::_cachedNamespace.{dart.core::Object::==}(null)) {
+      if(#lib::_NamespaceImpl::_cachedNamespace.{#lib::_NamespaceImpl::==}(null)) {
         #lib::_NamespaceImpl::_cachedNamespace = #lib::_NamespaceImpl::_create(new #lib::_NamespaceImpl::_(), #lib::_NamespaceImpl::_getDefault());
       }
       return #lib::_NamespaceImpl::_cachedNamespace;
     }
     static get _namespacePointer() → dart.core::int*
       return #lib::_NamespaceImpl::_getPointer(#lib::_NamespaceImpl::_namespace);
+    abstract member-signature get _identityHashCode() → dart.core::int*;
+    abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfTrue(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfFalse(dynamic type) → dart.core::bool*;
+    abstract member-signature operator ==(dynamic other) → dart.core::bool*;
+    abstract member-signature get hashCode() → dart.core::int*;
+    abstract member-signature method toString() → dart.core::String*;
+    abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic;
+    abstract member-signature get runtimeType() → dart.core::Type*;
   }
   class _Namespace extends dart.core::Object {
     synthetic constructor •() → #lib::_Namespace*
@@ -688,6 +948,16 @@
       return #lib::_NamespaceImpl::_namespace;
     static get _namespacePointer() → dart.core::int*
       return #lib::_NamespaceImpl::_namespacePointer;
+    abstract member-signature get _identityHashCode() → dart.core::int*;
+    abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfTrue(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfFalse(dynamic type) → dart.core::bool*;
+    abstract member-signature operator ==(dynamic other) → dart.core::bool*;
+    abstract member-signature get hashCode() → dart.core::int*;
+    abstract member-signature method toString() → dart.core::String*;
+    abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic;
+    abstract member-signature get runtimeType() → dart.core::Type*;
   }
   class VMLibraryHooks extends dart.core::Object {
     static field dynamic timerFactory = null;
@@ -714,11 +984,31 @@
       }
       return #lib::VMLibraryHooks::_cachedScript;
     }
+    abstract member-signature get _identityHashCode() → dart.core::int*;
+    abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfTrue(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfFalse(dynamic type) → dart.core::bool*;
+    abstract member-signature operator ==(dynamic other) → dart.core::bool*;
+    abstract member-signature get hashCode() → dart.core::int*;
+    abstract member-signature method toString() → dart.core::String*;
+    abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic;
+    abstract member-signature get runtimeType() → dart.core::Type*;
   }
   class Stdin extends dart.core::Object {
     synthetic constructor •() → #lib::Stdin*
       : super dart.core::Object::•()
       ;
+    abstract member-signature get _identityHashCode() → dart.core::int*;
+    abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfTrue(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfFalse(dynamic type) → dart.core::bool*;
+    abstract member-signature operator ==(dynamic other) → dart.core::bool*;
+    abstract member-signature get hashCode() → dart.core::int*;
+    abstract member-signature method toString() → dart.core::String*;
+    abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic;
+    abstract member-signature get runtimeType() → dart.core::Type*;
   }
   class _StdIOUtils extends dart.core::Object {
     synthetic constructor •() → #lib::_StdIOUtils*
@@ -726,6 +1016,16 @@
       ;
     static method _getStdioInputStream(dart.core::int* fd) → #lib::Stdin*
       return null;
+    abstract member-signature get _identityHashCode() → dart.core::int*;
+    abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfTrue(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfFalse(dynamic type) → dart.core::bool*;
+    abstract member-signature operator ==(dynamic other) → dart.core::bool*;
+    abstract member-signature get hashCode() → dart.core::int*;
+    abstract member-signature method toString() → dart.core::String*;
+    abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic;
+    abstract member-signature get runtimeType() → dart.core::Type*;
   }
   static field dart.core::int* _stdinFD = 0;
   static field dart.core::int* _stdoutFD = 1;
@@ -759,7 +1059,7 @@
     #lib::VMLibraryHooks::platformScript = #C10;
   }
   static get stdin() → #lib::Stdin* {
-    #lib::_stdin.{dart.core::Object::==}(null) ?{#lib::Stdin*} #lib::_stdin = #lib::_StdIOUtils::_getStdioInputStream(#lib::_stdinFD) : null;
+    #lib::_stdin.{#lib::Stdin::==}(null) ?{#lib::Stdin*} #lib::_stdin = #lib::_StdIOUtils::_getStdioInputStream(#lib::_stdinFD) : null;
     return #lib::_stdin;
   }
   static method main() → dynamic {}
diff --git a/pkg/vm/testcases/bytecode/closures.dart.expect b/pkg/vm/testcases/bytecode/closures.dart.expect
index 675d337d..2b004ef 100644
--- a/pkg/vm/testcases/bytecode/closures.dart.expect
+++ b/pkg/vm/testcases/bytecode/closures.dart.expect
@@ -383,6 +383,46 @@
   [1] = Reserved
 }
 
+
+Function 'get:_identityHashCode', getter, abstract, debuggable
+    parameters [] (required: 0)
+    return-type dart:core::int
+
+Function '_instanceOf', abstract, debuggable
+    parameters [dynamic 'instantiatorTypeArguments', dynamic 'functionTypeArguments', dynamic 'type'] (required: 3)
+    return-type dart:core::bool
+
+Function '_simpleInstanceOf', abstract, debuggable
+    parameters [dynamic 'type'] (required: 1)
+    return-type dart:core::bool
+
+Function '_simpleInstanceOfTrue', abstract, debuggable
+    parameters [dynamic 'type'] (required: 1)
+    return-type dart:core::bool
+
+Function '_simpleInstanceOfFalse', abstract, debuggable
+    parameters [dynamic 'type'] (required: 1)
+    return-type dart:core::bool
+
+Function '==', abstract, debuggable
+    parameters [dynamic 'other'] (required: 1)
+    return-type dart:core::bool
+
+Function 'get:hashCode', getter, abstract, debuggable
+    parameters [] (required: 0)
+    return-type dart:core::int
+
+Function 'toString', abstract, debuggable
+    parameters [] (required: 0)
+    return-type dart:core::String
+
+Function 'noSuchMethod', abstract, debuggable
+    parameters [dart:core::Invocation 'invocation'] (required: 1)
+    return-type dynamic
+
+Function 'get:runtimeType', getter, abstract, debuggable
+    parameters [] (required: 0)
+    return-type dart:core::Type
 Class 'C2', script = '#lib'
     extends dart:core::Object
 
@@ -405,6 +445,46 @@
   [1] = Reserved
 }
 
+
+Function 'get:_identityHashCode', getter, abstract, debuggable
+    parameters [] (required: 0)
+    return-type dart:core::int
+
+Function '_instanceOf', abstract, debuggable
+    parameters [dynamic 'instantiatorTypeArguments', dynamic 'functionTypeArguments', dynamic 'type'] (required: 3)
+    return-type dart:core::bool
+
+Function '_simpleInstanceOf', abstract, debuggable
+    parameters [dynamic 'type'] (required: 1)
+    return-type dart:core::bool
+
+Function '_simpleInstanceOfTrue', abstract, debuggable
+    parameters [dynamic 'type'] (required: 1)
+    return-type dart:core::bool
+
+Function '_simpleInstanceOfFalse', abstract, debuggable
+    parameters [dynamic 'type'] (required: 1)
+    return-type dart:core::bool
+
+Function '==', abstract, debuggable
+    parameters [dynamic 'other'] (required: 1)
+    return-type dart:core::bool
+
+Function 'get:hashCode', getter, abstract, debuggable
+    parameters [] (required: 0)
+    return-type dart:core::int
+
+Function 'toString', abstract, debuggable
+    parameters [] (required: 0)
+    return-type dart:core::String
+
+Function 'noSuchMethod', abstract, debuggable
+    parameters [dart:core::Invocation 'invocation'] (required: 1)
+    return-type dynamic
+
+Function 'get:runtimeType', getter, abstract, debuggable
+    parameters [] (required: 0)
+    return-type dart:core::Type
 Class 'C3', script = '#lib'
     extends dart:core::Object
 
@@ -427,6 +507,46 @@
   [1] = Reserved
 }
 
+
+Function 'get:_identityHashCode', getter, abstract, debuggable
+    parameters [] (required: 0)
+    return-type dart:core::int
+
+Function '_instanceOf', abstract, debuggable
+    parameters [dynamic 'instantiatorTypeArguments', dynamic 'functionTypeArguments', dynamic 'type'] (required: 3)
+    return-type dart:core::bool
+
+Function '_simpleInstanceOf', abstract, debuggable
+    parameters [dynamic 'type'] (required: 1)
+    return-type dart:core::bool
+
+Function '_simpleInstanceOfTrue', abstract, debuggable
+    parameters [dynamic 'type'] (required: 1)
+    return-type dart:core::bool
+
+Function '_simpleInstanceOfFalse', abstract, debuggable
+    parameters [dynamic 'type'] (required: 1)
+    return-type dart:core::bool
+
+Function '==', abstract, debuggable
+    parameters [dynamic 'other'] (required: 1)
+    return-type dart:core::bool
+
+Function 'get:hashCode', getter, abstract, debuggable
+    parameters [] (required: 0)
+    return-type dart:core::int
+
+Function 'toString', abstract, debuggable
+    parameters [] (required: 0)
+    return-type dart:core::String
+
+Function 'noSuchMethod', abstract, debuggable
+    parameters [dart:core::Invocation 'invocation'] (required: 1)
+    return-type dynamic
+
+Function 'get:runtimeType', getter, abstract, debuggable
+    parameters [] (required: 0)
+    return-type dart:core::Type
 Class 'C4', script = '#lib'
     extends dart:core::Object
 
@@ -449,6 +569,46 @@
   [1] = Reserved
 }
 
+
+Function 'get:_identityHashCode', getter, abstract, debuggable
+    parameters [] (required: 0)
+    return-type dart:core::int
+
+Function '_instanceOf', abstract, debuggable
+    parameters [dynamic 'instantiatorTypeArguments', dynamic 'functionTypeArguments', dynamic 'type'] (required: 3)
+    return-type dart:core::bool
+
+Function '_simpleInstanceOf', abstract, debuggable
+    parameters [dynamic 'type'] (required: 1)
+    return-type dart:core::bool
+
+Function '_simpleInstanceOfTrue', abstract, debuggable
+    parameters [dynamic 'type'] (required: 1)
+    return-type dart:core::bool
+
+Function '_simpleInstanceOfFalse', abstract, debuggable
+    parameters [dynamic 'type'] (required: 1)
+    return-type dart:core::bool
+
+Function '==', abstract, debuggable
+    parameters [dynamic 'other'] (required: 1)
+    return-type dart:core::bool
+
+Function 'get:hashCode', getter, abstract, debuggable
+    parameters [] (required: 0)
+    return-type dart:core::int
+
+Function 'toString', abstract, debuggable
+    parameters [] (required: 0)
+    return-type dart:core::String
+
+Function 'noSuchMethod', abstract, debuggable
+    parameters [dart:core::Invocation 'invocation'] (required: 1)
+    return-type dynamic
+
+Function 'get:runtimeType', getter, abstract, debuggable
+    parameters [] (required: 0)
+    return-type dart:core::Type
 Class 'C5', script = '#lib'
     extends dart:core::Object
 
@@ -471,6 +631,46 @@
   [1] = Reserved
 }
 
+
+Function 'get:_identityHashCode', getter, abstract, debuggable
+    parameters [] (required: 0)
+    return-type dart:core::int
+
+Function '_instanceOf', abstract, debuggable
+    parameters [dynamic 'instantiatorTypeArguments', dynamic 'functionTypeArguments', dynamic 'type'] (required: 3)
+    return-type dart:core::bool
+
+Function '_simpleInstanceOf', abstract, debuggable
+    parameters [dynamic 'type'] (required: 1)
+    return-type dart:core::bool
+
+Function '_simpleInstanceOfTrue', abstract, debuggable
+    parameters [dynamic 'type'] (required: 1)
+    return-type dart:core::bool
+
+Function '_simpleInstanceOfFalse', abstract, debuggable
+    parameters [dynamic 'type'] (required: 1)
+    return-type dart:core::bool
+
+Function '==', abstract, debuggable
+    parameters [dynamic 'other'] (required: 1)
+    return-type dart:core::bool
+
+Function 'get:hashCode', getter, abstract, debuggable
+    parameters [] (required: 0)
+    return-type dart:core::int
+
+Function 'toString', abstract, debuggable
+    parameters [] (required: 0)
+    return-type dart:core::String
+
+Function 'noSuchMethod', abstract, debuggable
+    parameters [dart:core::Invocation 'invocation'] (required: 1)
+    return-type dynamic
+
+Function 'get:runtimeType', getter, abstract, debuggable
+    parameters [] (required: 0)
+    return-type dart:core::Type
 Class 'C6', script = '#lib'
     extends dart:core::Object
 
@@ -493,6 +693,46 @@
   [1] = Reserved
 }
 
+
+Function 'get:_identityHashCode', getter, abstract, debuggable
+    parameters [] (required: 0)
+    return-type dart:core::int
+
+Function '_instanceOf', abstract, debuggable
+    parameters [dynamic 'instantiatorTypeArguments', dynamic 'functionTypeArguments', dynamic 'type'] (required: 3)
+    return-type dart:core::bool
+
+Function '_simpleInstanceOf', abstract, debuggable
+    parameters [dynamic 'type'] (required: 1)
+    return-type dart:core::bool
+
+Function '_simpleInstanceOfTrue', abstract, debuggable
+    parameters [dynamic 'type'] (required: 1)
+    return-type dart:core::bool
+
+Function '_simpleInstanceOfFalse', abstract, debuggable
+    parameters [dynamic 'type'] (required: 1)
+    return-type dart:core::bool
+
+Function '==', abstract, debuggable
+    parameters [dynamic 'other'] (required: 1)
+    return-type dart:core::bool
+
+Function 'get:hashCode', getter, abstract, debuggable
+    parameters [] (required: 0)
+    return-type dart:core::int
+
+Function 'toString', abstract, debuggable
+    parameters [] (required: 0)
+    return-type dart:core::String
+
+Function 'noSuchMethod', abstract, debuggable
+    parameters [dart:core::Invocation 'invocation'] (required: 1)
+    return-type dynamic
+
+Function 'get:runtimeType', getter, abstract, debuggable
+    parameters [] (required: 0)
+    return-type dart:core::Type
 Class 'C7', script = '#lib'
     extends dart:core::Object
 
@@ -515,6 +755,46 @@
   [1] = Reserved
 }
 
+
+Function 'get:_identityHashCode', getter, abstract, debuggable
+    parameters [] (required: 0)
+    return-type dart:core::int
+
+Function '_instanceOf', abstract, debuggable
+    parameters [dynamic 'instantiatorTypeArguments', dynamic 'functionTypeArguments', dynamic 'type'] (required: 3)
+    return-type dart:core::bool
+
+Function '_simpleInstanceOf', abstract, debuggable
+    parameters [dynamic 'type'] (required: 1)
+    return-type dart:core::bool
+
+Function '_simpleInstanceOfTrue', abstract, debuggable
+    parameters [dynamic 'type'] (required: 1)
+    return-type dart:core::bool
+
+Function '_simpleInstanceOfFalse', abstract, debuggable
+    parameters [dynamic 'type'] (required: 1)
+    return-type dart:core::bool
+
+Function '==', abstract, debuggable
+    parameters [dynamic 'other'] (required: 1)
+    return-type dart:core::bool
+
+Function 'get:hashCode', getter, abstract, debuggable
+    parameters [] (required: 0)
+    return-type dart:core::int
+
+Function 'toString', abstract, debuggable
+    parameters [] (required: 0)
+    return-type dart:core::String
+
+Function 'noSuchMethod', abstract, debuggable
+    parameters [dart:core::Invocation 'invocation'] (required: 1)
+    return-type dynamic
+
+Function 'get:runtimeType', getter, abstract, debuggable
+    parameters [] (required: 0)
+    return-type dart:core::Type
 Class 'C8', script = '#lib'
     extends dart:core::Object
 
@@ -537,6 +817,46 @@
   [1] = Reserved
 }
 
+
+Function 'get:_identityHashCode', getter, abstract, debuggable
+    parameters [] (required: 0)
+    return-type dart:core::int
+
+Function '_instanceOf', abstract, debuggable
+    parameters [dynamic 'instantiatorTypeArguments', dynamic 'functionTypeArguments', dynamic 'type'] (required: 3)
+    return-type dart:core::bool
+
+Function '_simpleInstanceOf', abstract, debuggable
+    parameters [dynamic 'type'] (required: 1)
+    return-type dart:core::bool
+
+Function '_simpleInstanceOfTrue', abstract, debuggable
+    parameters [dynamic 'type'] (required: 1)
+    return-type dart:core::bool
+
+Function '_simpleInstanceOfFalse', abstract, debuggable
+    parameters [dynamic 'type'] (required: 1)
+    return-type dart:core::bool
+
+Function '==', abstract, debuggable
+    parameters [dynamic 'other'] (required: 1)
+    return-type dart:core::bool
+
+Function 'get:hashCode', getter, abstract, debuggable
+    parameters [] (required: 0)
+    return-type dart:core::int
+
+Function 'toString', abstract, debuggable
+    parameters [] (required: 0)
+    return-type dart:core::String
+
+Function 'noSuchMethod', abstract, debuggable
+    parameters [dart:core::Invocation 'invocation'] (required: 1)
+    return-type dynamic
+
+Function 'get:runtimeType', getter, abstract, debuggable
+    parameters [] (required: 0)
+    return-type dart:core::Type
 Class 'A', script = '#lib'
     type-params <dart:core::Object T1, dart:core::Object T2> (args: 2)
     extends dart:core::Object
@@ -846,6 +1166,46 @@
   ReturnTOS
 }
 
+
+Function 'get:_identityHashCode', getter, abstract, debuggable
+    parameters [] (required: 0)
+    return-type dart:core::int
+
+Function '_instanceOf', abstract, debuggable
+    parameters [dynamic 'instantiatorTypeArguments', dynamic 'functionTypeArguments', dynamic 'type'] (required: 3)
+    return-type dart:core::bool
+
+Function '_simpleInstanceOf', abstract, debuggable
+    parameters [dynamic 'type'] (required: 1)
+    return-type dart:core::bool
+
+Function '_simpleInstanceOfTrue', abstract, debuggable
+    parameters [dynamic 'type'] (required: 1)
+    return-type dart:core::bool
+
+Function '_simpleInstanceOfFalse', abstract, debuggable
+    parameters [dynamic 'type'] (required: 1)
+    return-type dart:core::bool
+
+Function '==', abstract, debuggable
+    parameters [dynamic 'other'] (required: 1)
+    return-type dart:core::bool
+
+Function 'get:hashCode', getter, abstract, debuggable
+    parameters [] (required: 0)
+    return-type dart:core::int
+
+Function 'toString', abstract, debuggable
+    parameters [] (required: 0)
+    return-type dart:core::String
+
+Function 'noSuchMethod', abstract, debuggable
+    parameters [dart:core::Invocation 'invocation'] (required: 1)
+    return-type dynamic
+
+Function 'get:runtimeType', getter, abstract, debuggable
+    parameters [] (required: 0)
+    return-type dart:core::Type
 Class 'B', script = '#lib'
     extends dart:core::Object
 
@@ -1101,6 +1461,46 @@
   ReturnTOS
 }
 
+
+Function 'get:_identityHashCode', getter, abstract, debuggable
+    parameters [] (required: 0)
+    return-type dart:core::int
+
+Function '_instanceOf', abstract, debuggable
+    parameters [dynamic 'instantiatorTypeArguments', dynamic 'functionTypeArguments', dynamic 'type'] (required: 3)
+    return-type dart:core::bool
+
+Function '_simpleInstanceOf', abstract, debuggable
+    parameters [dynamic 'type'] (required: 1)
+    return-type dart:core::bool
+
+Function '_simpleInstanceOfTrue', abstract, debuggable
+    parameters [dynamic 'type'] (required: 1)
+    return-type dart:core::bool
+
+Function '_simpleInstanceOfFalse', abstract, debuggable
+    parameters [dynamic 'type'] (required: 1)
+    return-type dart:core::bool
+
+Function '==', abstract, debuggable
+    parameters [dynamic 'other'] (required: 1)
+    return-type dart:core::bool
+
+Function 'get:hashCode', getter, abstract, debuggable
+    parameters [] (required: 0)
+    return-type dart:core::int
+
+Function 'toString', abstract, debuggable
+    parameters [] (required: 0)
+    return-type dart:core::String
+
+Function 'noSuchMethod', abstract, debuggable
+    parameters [dart:core::Invocation 'invocation'] (required: 1)
+    return-type dynamic
+
+Function 'get:runtimeType', getter, abstract, debuggable
+    parameters [] (required: 0)
+    return-type dart:core::Type
 Class 'C', script = '#lib'
     extends dart:core::Object
 
@@ -1380,6 +1780,46 @@
   ReturnTOS
 }
 
+
+Function 'get:_identityHashCode', getter, abstract, debuggable
+    parameters [] (required: 0)
+    return-type dart:core::int
+
+Function '_instanceOf', abstract, debuggable
+    parameters [dynamic 'instantiatorTypeArguments', dynamic 'functionTypeArguments', dynamic 'type'] (required: 3)
+    return-type dart:core::bool
+
+Function '_simpleInstanceOf', abstract, debuggable
+    parameters [dynamic 'type'] (required: 1)
+    return-type dart:core::bool
+
+Function '_simpleInstanceOfTrue', abstract, debuggable
+    parameters [dynamic 'type'] (required: 1)
+    return-type dart:core::bool
+
+Function '_simpleInstanceOfFalse', abstract, debuggable
+    parameters [dynamic 'type'] (required: 1)
+    return-type dart:core::bool
+
+Function '==', abstract, debuggable
+    parameters [dynamic 'other'] (required: 1)
+    return-type dart:core::bool
+
+Function 'get:hashCode', getter, abstract, debuggable
+    parameters [] (required: 0)
+    return-type dart:core::int
+
+Function 'toString', abstract, debuggable
+    parameters [] (required: 0)
+    return-type dart:core::String
+
+Function 'noSuchMethod', abstract, debuggable
+    parameters [dart:core::Invocation 'invocation'] (required: 1)
+    return-type dynamic
+
+Function 'get:runtimeType', getter, abstract, debuggable
+    parameters [] (required: 0)
+    return-type dart:core::Type
 Class 'D', script = '#lib'
     type-params <dart:core::Object T> (args: 1)
     extends dart:core::Object
@@ -1565,6 +2005,46 @@
   ReturnTOS
 }
 
+
+Function 'get:_identityHashCode', getter, abstract, debuggable
+    parameters [] (required: 0)
+    return-type dart:core::int
+
+Function '_instanceOf', abstract, debuggable
+    parameters [dynamic 'instantiatorTypeArguments', dynamic 'functionTypeArguments', dynamic 'type'] (required: 3)
+    return-type dart:core::bool
+
+Function '_simpleInstanceOf', abstract, debuggable
+    parameters [dynamic 'type'] (required: 1)
+    return-type dart:core::bool
+
+Function '_simpleInstanceOfTrue', abstract, debuggable
+    parameters [dynamic 'type'] (required: 1)
+    return-type dart:core::bool
+
+Function '_simpleInstanceOfFalse', abstract, debuggable
+    parameters [dynamic 'type'] (required: 1)
+    return-type dart:core::bool
+
+Function '==', abstract, debuggable
+    parameters [dynamic 'other'] (required: 1)
+    return-type dart:core::bool
+
+Function 'get:hashCode', getter, abstract, debuggable
+    parameters [] (required: 0)
+    return-type dart:core::int
+
+Function 'toString', abstract, debuggable
+    parameters [] (required: 0)
+    return-type dart:core::String
+
+Function 'noSuchMethod', abstract, debuggable
+    parameters [dart:core::Invocation 'invocation'] (required: 1)
+    return-type dynamic
+
+Function 'get:runtimeType', getter, abstract, debuggable
+    parameters [] (required: 0)
+    return-type dart:core::Type
 Class 'E', script = '#lib', abstract
     extends dart:core::Object
 
@@ -1715,6 +2195,46 @@
 }
 
 
+Function 'get:_identityHashCode', getter, abstract, debuggable
+    parameters [] (required: 0)
+    return-type dart:core::int
+
+Function '_instanceOf', abstract, debuggable
+    parameters [dynamic 'instantiatorTypeArguments', dynamic 'functionTypeArguments', dynamic 'type'] (required: 3)
+    return-type dart:core::bool
+
+Function '_simpleInstanceOf', abstract, debuggable
+    parameters [dynamic 'type'] (required: 1)
+    return-type dart:core::bool
+
+Function '_simpleInstanceOfTrue', abstract, debuggable
+    parameters [dynamic 'type'] (required: 1)
+    return-type dart:core::bool
+
+Function '_simpleInstanceOfFalse', abstract, debuggable
+    parameters [dynamic 'type'] (required: 1)
+    return-type dart:core::bool
+
+Function '==', abstract, debuggable
+    parameters [dynamic 'other'] (required: 1)
+    return-type dart:core::bool
+
+Function 'get:hashCode', getter, abstract, debuggable
+    parameters [] (required: 0)
+    return-type dart:core::int
+
+Function 'toString', abstract, debuggable
+    parameters [] (required: 0)
+    return-type dart:core::String
+
+Function 'noSuchMethod', abstract, debuggable
+    parameters [dart:core::Invocation 'invocation'] (required: 1)
+    return-type dynamic
+
+Function 'get:runtimeType', getter, abstract, debuggable
+    parameters [] (required: 0)
+    return-type dart:core::Type
+
 }
 ]library #lib from "#lib" as #lib {
 
@@ -1723,41 +2243,121 @@
     synthetic constructor •() → #lib::C1*
       : super dart.core::Object::•()
       ;
+    abstract member-signature get _identityHashCode() → dart.core::int*;
+    abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfTrue(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfFalse(dynamic type) → dart.core::bool*;
+    abstract member-signature operator ==(dynamic other) → dart.core::bool*;
+    abstract member-signature get hashCode() → dart.core::int*;
+    abstract member-signature method toString() → dart.core::String*;
+    abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic;
+    abstract member-signature get runtimeType() → dart.core::Type*;
   }
   class C2 extends dart.core::Object {
     synthetic constructor •() → #lib::C2*
       : super dart.core::Object::•()
       ;
+    abstract member-signature get _identityHashCode() → dart.core::int*;
+    abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfTrue(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfFalse(dynamic type) → dart.core::bool*;
+    abstract member-signature operator ==(dynamic other) → dart.core::bool*;
+    abstract member-signature get hashCode() → dart.core::int*;
+    abstract member-signature method toString() → dart.core::String*;
+    abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic;
+    abstract member-signature get runtimeType() → dart.core::Type*;
   }
   class C3 extends dart.core::Object {
     synthetic constructor •() → #lib::C3*
       : super dart.core::Object::•()
       ;
+    abstract member-signature get _identityHashCode() → dart.core::int*;
+    abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfTrue(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfFalse(dynamic type) → dart.core::bool*;
+    abstract member-signature operator ==(dynamic other) → dart.core::bool*;
+    abstract member-signature get hashCode() → dart.core::int*;
+    abstract member-signature method toString() → dart.core::String*;
+    abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic;
+    abstract member-signature get runtimeType() → dart.core::Type*;
   }
   class C4 extends dart.core::Object {
     synthetic constructor •() → #lib::C4*
       : super dart.core::Object::•()
       ;
+    abstract member-signature get _identityHashCode() → dart.core::int*;
+    abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfTrue(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfFalse(dynamic type) → dart.core::bool*;
+    abstract member-signature operator ==(dynamic other) → dart.core::bool*;
+    abstract member-signature get hashCode() → dart.core::int*;
+    abstract member-signature method toString() → dart.core::String*;
+    abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic;
+    abstract member-signature get runtimeType() → dart.core::Type*;
   }
   class C5 extends dart.core::Object {
     synthetic constructor •() → #lib::C5*
       : super dart.core::Object::•()
       ;
+    abstract member-signature get _identityHashCode() → dart.core::int*;
+    abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfTrue(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfFalse(dynamic type) → dart.core::bool*;
+    abstract member-signature operator ==(dynamic other) → dart.core::bool*;
+    abstract member-signature get hashCode() → dart.core::int*;
+    abstract member-signature method toString() → dart.core::String*;
+    abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic;
+    abstract member-signature get runtimeType() → dart.core::Type*;
   }
   class C6 extends dart.core::Object {
     synthetic constructor •() → #lib::C6*
       : super dart.core::Object::•()
       ;
+    abstract member-signature get _identityHashCode() → dart.core::int*;
+    abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfTrue(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfFalse(dynamic type) → dart.core::bool*;
+    abstract member-signature operator ==(dynamic other) → dart.core::bool*;
+    abstract member-signature get hashCode() → dart.core::int*;
+    abstract member-signature method toString() → dart.core::String*;
+    abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic;
+    abstract member-signature get runtimeType() → dart.core::Type*;
   }
   class C7 extends dart.core::Object {
     synthetic constructor •() → #lib::C7*
       : super dart.core::Object::•()
       ;
+    abstract member-signature get _identityHashCode() → dart.core::int*;
+    abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfTrue(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfFalse(dynamic type) → dart.core::bool*;
+    abstract member-signature operator ==(dynamic other) → dart.core::bool*;
+    abstract member-signature get hashCode() → dart.core::int*;
+    abstract member-signature method toString() → dart.core::String*;
+    abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic;
+    abstract member-signature get runtimeType() → dart.core::Type*;
   }
   class C8 extends dart.core::Object {
     synthetic constructor •() → #lib::C8*
       : super dart.core::Object::•()
       ;
+    abstract member-signature get _identityHashCode() → dart.core::int*;
+    abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfTrue(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfFalse(dynamic type) → dart.core::bool*;
+    abstract member-signature operator ==(dynamic other) → dart.core::bool*;
+    abstract member-signature get hashCode() → dart.core::int*;
+    abstract member-signature method toString() → dart.core::String*;
+    abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic;
+    abstract member-signature get runtimeType() → dart.core::Type*;
   }
   class A<T1 extends dart.core::Object* = dynamic, T2 extends dart.core::Object* = dynamic> extends dart.core::Object {
     synthetic constructor •() → #lib::A<#lib::A::T1*, #lib::A::T2*>*
@@ -1778,6 +2378,16 @@
       [@vm.call-site-attributes.metadata=receiverType:FunctionType(void Function<T5, T6>()*)] nested1.call<#lib::C5*, #lib::C6*>();
       [@vm.call-site-attributes.metadata=receiverType:FunctionType(void Function<T5, T6>()*)] nested1.call<dart.core::List<#lib::C5*>*, dart.core::List<#lib::C6*>*>();
     }
+    abstract member-signature get _identityHashCode() → dart.core::int*;
+    abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfTrue(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfFalse(dynamic type) → dart.core::bool*;
+    abstract member-signature operator ==(dynamic other) → dart.core::bool*;
+    abstract member-signature get hashCode() → dart.core::int*;
+    abstract member-signature method toString() → dart.core::String*;
+    abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic;
+    abstract member-signature get runtimeType() → dart.core::Type*;
   }
   class B extends dart.core::Object {
     field dart.core::int* foo = null;
@@ -1817,6 +2427,16 @@
         [@vm.call-site-attributes.metadata=receiverType:FunctionType(Null? Function()*)] closure3.call();
       }
     }
+    abstract member-signature get _identityHashCode() → dart.core::int*;
+    abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfTrue(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfFalse(dynamic type) → dart.core::bool*;
+    abstract member-signature operator ==(dynamic other) → dart.core::bool*;
+    abstract member-signature get hashCode() → dart.core::int*;
+    abstract member-signature method toString() → dart.core::String*;
+    abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic;
+    abstract member-signature get runtimeType() → dart.core::Type*;
   }
   class C extends dart.core::Object {
     synthetic constructor •() → #lib::C*
@@ -1848,6 +2468,16 @@
         }
       }
     }
+    abstract member-signature get _identityHashCode() → dart.core::int*;
+    abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfTrue(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfFalse(dynamic type) → dart.core::bool*;
+    abstract member-signature operator ==(dynamic other) → dart.core::bool*;
+    abstract member-signature get hashCode() → dart.core::int*;
+    abstract member-signature method toString() → dart.core::String*;
+    abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic;
+    abstract member-signature get runtimeType() → dart.core::Type*;
   }
   class D<T extends dart.core::Object* = dynamic> extends dart.core::Object {
     synthetic constructor •() → #lib::D<#lib::D::T*>*
@@ -1862,6 +2492,16 @@
         [@vm.call-site-attributes.metadata=receiverType:FunctionType(Null? Function()*)] inner.call();
       };
     }
+    abstract member-signature get _identityHashCode() → dart.core::int*;
+    abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfTrue(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfFalse(dynamic type) → dart.core::bool*;
+    abstract member-signature operator ==(dynamic other) → dart.core::bool*;
+    abstract member-signature get hashCode() → dart.core::int*;
+    abstract member-signature method toString() → dart.core::String*;
+    abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic;
+    abstract member-signature get runtimeType() → dart.core::Type*;
   }
   abstract class E extends dart.core::Object {
     field (dart.core::int*, dart.core::int*) →* dart.core::int* foo1 = null;
@@ -1878,6 +2518,16 @@
       return let final dart.core::int* #t3 = this.{#lib::E::evalArg1}() in let final dart.core::int* #t4 = this.{#lib::E::evalArg2}() in [@vm.call-site-attributes.metadata=receiverType:FunctionType(int* Function<T>(T*, T*)*)] this.{#lib::E::foo2}.call<dart.core::int*>(#t3, #t4);
     method testCallThroughGetter3() → dart.core::int*
       return let final #lib::E* #t5 = this.{#lib::E::getE}() in let final dart.core::int* #t6 = this.{#lib::E::evalArg1}() in let final dart.core::int* #t7 = this.{#lib::E::evalArg2}() in [@vm.call-site-attributes.metadata=receiverType:FunctionType(int* Function<T>(T*, T*)*)] #t5.{#lib::E::foo2}.call<dart.core::int*>(#t6, #t7);
+    abstract member-signature get _identityHashCode() → dart.core::int*;
+    abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfTrue(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfFalse(dynamic type) → dart.core::bool*;
+    abstract member-signature operator ==(dynamic other) → dart.core::bool*;
+    abstract member-signature get hashCode() → dart.core::int*;
+    abstract member-signature method toString() → dart.core::String*;
+    abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic;
+    abstract member-signature get runtimeType() → dart.core::Type*;
   }
   static method simpleClosure() → dart.core::int* {
     dart.core::int* x = 5;
diff --git a/pkg/vm/testcases/bytecode/field_initializers.dart.expect b/pkg/vm/testcases/bytecode/field_initializers.dart.expect
index ce083da..7e0795c 100644
--- a/pkg/vm/testcases/bytecode/field_initializers.dart.expect
+++ b/pkg/vm/testcases/bytecode/field_initializers.dart.expect
@@ -159,6 +159,46 @@
   [1] = Reserved
 }
 
+
+Function 'get:_identityHashCode', getter, abstract, debuggable
+    parameters [] (required: 0)
+    return-type dart:core::int
+
+Function '_instanceOf', abstract, debuggable
+    parameters [dynamic 'instantiatorTypeArguments', dynamic 'functionTypeArguments', dynamic 'type'] (required: 3)
+    return-type dart:core::bool
+
+Function '_simpleInstanceOf', abstract, debuggable
+    parameters [dynamic 'type'] (required: 1)
+    return-type dart:core::bool
+
+Function '_simpleInstanceOfTrue', abstract, debuggable
+    parameters [dynamic 'type'] (required: 1)
+    return-type dart:core::bool
+
+Function '_simpleInstanceOfFalse', abstract, debuggable
+    parameters [dynamic 'type'] (required: 1)
+    return-type dart:core::bool
+
+Function '==', abstract, debuggable
+    parameters [dynamic 'other'] (required: 1)
+    return-type dart:core::bool
+
+Function 'get:hashCode', getter, abstract, debuggable
+    parameters [] (required: 0)
+    return-type dart:core::int
+
+Function 'toString', abstract, debuggable
+    parameters [] (required: 0)
+    return-type dart:core::String
+
+Function 'noSuchMethod', abstract, debuggable
+    parameters [dart:core::Invocation 'invocation'] (required: 1)
+    return-type dynamic
+
+Function 'get:runtimeType', getter, abstract, debuggable
+    parameters [] (required: 0)
+    return-type dart:core::Type
 Class 'B', script = '#lib'
     extends #lib::A
 
@@ -246,6 +286,16 @@
     constructor redirecting2(dart.core::int* a, dart.core::int* b, dart.core::int* c) → #lib::A*
       : this #lib::A::constr2(a, b.{dart.core::num::*}(c))
       ;
+    abstract member-signature get _identityHashCode() → dart.core::int*;
+    abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfTrue(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfFalse(dynamic type) → dart.core::bool*;
+    abstract member-signature operator ==(dynamic other) → dart.core::bool*;
+    abstract member-signature get hashCode() → dart.core::int*;
+    abstract member-signature method toString() → dart.core::String*;
+    abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic;
+    abstract member-signature get runtimeType() → dart.core::Type*;
   }
   class B extends #lib::A {
     field dart.core::int* foo6 = 46;
diff --git a/pkg/vm/testcases/bytecode/instance_creation.dart.expect b/pkg/vm/testcases/bytecode/instance_creation.dart.expect
index b3d07d01..26b018c 100644
--- a/pkg/vm/testcases/bytecode/instance_creation.dart.expect
+++ b/pkg/vm/testcases/bytecode/instance_creation.dart.expect
@@ -280,6 +280,46 @@
   [10] = Reserved
 }
 
+
+Function 'get:_identityHashCode', getter, abstract, debuggable
+    parameters [] (required: 0)
+    return-type dart:core::int
+
+Function '_instanceOf', abstract, debuggable
+    parameters [dynamic 'instantiatorTypeArguments', dynamic 'functionTypeArguments', dynamic 'type'] (required: 3)
+    return-type dart:core::bool
+
+Function '_simpleInstanceOf', abstract, debuggable
+    parameters [dynamic 'type'] (required: 1)
+    return-type dart:core::bool
+
+Function '_simpleInstanceOfTrue', abstract, debuggable
+    parameters [dynamic 'type'] (required: 1)
+    return-type dart:core::bool
+
+Function '_simpleInstanceOfFalse', abstract, debuggable
+    parameters [dynamic 'type'] (required: 1)
+    return-type dart:core::bool
+
+Function '==', abstract, debuggable
+    parameters [dynamic 'other'] (required: 1)
+    return-type dart:core::bool
+
+Function 'get:hashCode', getter, abstract, debuggable
+    parameters [] (required: 0)
+    return-type dart:core::int
+
+Function 'toString', abstract, debuggable
+    parameters [] (required: 0)
+    return-type dart:core::String
+
+Function 'noSuchMethod', abstract, debuggable
+    parameters [dart:core::Invocation 'invocation'] (required: 1)
+    return-type dynamic
+
+Function 'get:runtimeType', getter, abstract, debuggable
+    parameters [] (required: 0)
+    return-type dart:core::Type
 Class 'A', script = '#lib'
     extends #lib::Base < dart:core::int, dart:core::String >
 
@@ -392,6 +432,46 @@
   [6] = Reserved
 }
 
+
+Function 'get:_identityHashCode', getter, abstract, debuggable
+    parameters [] (required: 0)
+    return-type dart:core::int
+
+Function '_instanceOf', abstract, debuggable
+    parameters [dynamic 'instantiatorTypeArguments', dynamic 'functionTypeArguments', dynamic 'type'] (required: 3)
+    return-type dart:core::bool
+
+Function '_simpleInstanceOf', abstract, debuggable
+    parameters [dynamic 'type'] (required: 1)
+    return-type dart:core::bool
+
+Function '_simpleInstanceOfTrue', abstract, debuggable
+    parameters [dynamic 'type'] (required: 1)
+    return-type dart:core::bool
+
+Function '_simpleInstanceOfFalse', abstract, debuggable
+    parameters [dynamic 'type'] (required: 1)
+    return-type dart:core::bool
+
+Function '==', abstract, debuggable
+    parameters [dynamic 'other'] (required: 1)
+    return-type dart:core::bool
+
+Function 'get:hashCode', getter, abstract, debuggable
+    parameters [] (required: 0)
+    return-type dart:core::int
+
+Function 'toString', abstract, debuggable
+    parameters [] (required: 0)
+    return-type dart:core::String
+
+Function 'noSuchMethod', abstract, debuggable
+    parameters [dart:core::Invocation 'invocation'] (required: 1)
+    return-type dynamic
+
+Function 'get:runtimeType', getter, abstract, debuggable
+    parameters [] (required: 0)
+    return-type dart:core::Type
 Class 'E', script = '#lib'
     type-params <dart:core::Object K, dart:core::Object V> (args: 2)
     extends dart:core::Object
@@ -434,6 +514,46 @@
   [2] = Reserved
 }
 
+
+Function 'get:_identityHashCode', getter, abstract, debuggable
+    parameters [] (required: 0)
+    return-type dart:core::int
+
+Function '_instanceOf', abstract, debuggable
+    parameters [dynamic 'instantiatorTypeArguments', dynamic 'functionTypeArguments', dynamic 'type'] (required: 3)
+    return-type dart:core::bool
+
+Function '_simpleInstanceOf', abstract, debuggable
+    parameters [dynamic 'type'] (required: 1)
+    return-type dart:core::bool
+
+Function '_simpleInstanceOfTrue', abstract, debuggable
+    parameters [dynamic 'type'] (required: 1)
+    return-type dart:core::bool
+
+Function '_simpleInstanceOfFalse', abstract, debuggable
+    parameters [dynamic 'type'] (required: 1)
+    return-type dart:core::bool
+
+Function '==', abstract, debuggable
+    parameters [dynamic 'other'] (required: 1)
+    return-type dart:core::bool
+
+Function 'get:hashCode', getter, abstract, debuggable
+    parameters [] (required: 0)
+    return-type dart:core::int
+
+Function 'toString', abstract, debuggable
+    parameters [] (required: 0)
+    return-type dart:core::String
+
+Function 'noSuchMethod', abstract, debuggable
+    parameters [dart:core::Invocation 'invocation'] (required: 1)
+    return-type dynamic
+
+Function 'get:runtimeType', getter, abstract, debuggable
+    parameters [] (required: 0)
+    return-type dart:core::Type
 Class 'F', script = '#lib'
     type-params <dart:core::Object K, dart:core::Object V> (args: 4)
     extends #lib::E < dart:core::String, dart:core::List < #lib::F::TypeParam/1 > >
@@ -526,6 +646,46 @@
   [3] = Reserved
 }
 
+
+Function 'get:_identityHashCode', getter, abstract, debuggable
+    parameters [] (required: 0)
+    return-type dart:core::int
+
+Function '_instanceOf', abstract, debuggable
+    parameters [dynamic 'instantiatorTypeArguments', dynamic 'functionTypeArguments', dynamic 'type'] (required: 3)
+    return-type dart:core::bool
+
+Function '_simpleInstanceOf', abstract, debuggable
+    parameters [dynamic 'type'] (required: 1)
+    return-type dart:core::bool
+
+Function '_simpleInstanceOfTrue', abstract, debuggable
+    parameters [dynamic 'type'] (required: 1)
+    return-type dart:core::bool
+
+Function '_simpleInstanceOfFalse', abstract, debuggable
+    parameters [dynamic 'type'] (required: 1)
+    return-type dart:core::bool
+
+Function '==', abstract, debuggable
+    parameters [dynamic 'other'] (required: 1)
+    return-type dart:core::bool
+
+Function 'get:hashCode', getter, abstract, debuggable
+    parameters [] (required: 0)
+    return-type dart:core::int
+
+Function 'toString', abstract, debuggable
+    parameters [] (required: 0)
+    return-type dart:core::String
+
+Function 'noSuchMethod', abstract, debuggable
+    parameters [dart:core::Invocation 'invocation'] (required: 1)
+    return-type dynamic
+
+Function 'get:runtimeType', getter, abstract, debuggable
+    parameters [] (required: 0)
+    return-type dart:core::Type
 Class 'H', script = '#lib'
     type-params <dart:core::Object P1, dart:core::Object P2, dart:core::Object P3> (args: 5)
     extends #lib::G < #lib::H::TypeParam/1, #lib::H::TypeParam/2 >
@@ -598,6 +758,46 @@
   [4] = Reserved
 }
 
+
+Function 'get:_identityHashCode', getter, abstract, debuggable
+    parameters [] (required: 0)
+    return-type dart:core::int
+
+Function '_instanceOf', abstract, debuggable
+    parameters [dynamic 'instantiatorTypeArguments', dynamic 'functionTypeArguments', dynamic 'type'] (required: 3)
+    return-type dart:core::bool
+
+Function '_simpleInstanceOf', abstract, debuggable
+    parameters [dynamic 'type'] (required: 1)
+    return-type dart:core::bool
+
+Function '_simpleInstanceOfTrue', abstract, debuggable
+    parameters [dynamic 'type'] (required: 1)
+    return-type dart:core::bool
+
+Function '_simpleInstanceOfFalse', abstract, debuggable
+    parameters [dynamic 'type'] (required: 1)
+    return-type dart:core::bool
+
+Function '==', abstract, debuggable
+    parameters [dynamic 'other'] (required: 1)
+    return-type dart:core::bool
+
+Function 'get:hashCode', getter, abstract, debuggable
+    parameters [] (required: 0)
+    return-type dart:core::int
+
+Function 'toString', abstract, debuggable
+    parameters [] (required: 0)
+    return-type dart:core::String
+
+Function 'noSuchMethod', abstract, debuggable
+    parameters [dart:core::Invocation 'invocation'] (required: 1)
+    return-type dynamic
+
+Function 'get:runtimeType', getter, abstract, debuggable
+    parameters [] (required: 0)
+    return-type dart:core::Type
 Class 'J', script = '#lib'
     extends dart:core::Object
 
@@ -617,6 +817,46 @@
   [0] = NativeEntry agent_J
 }
 
+
+Function 'get:_identityHashCode', getter, abstract, debuggable
+    parameters [] (required: 0)
+    return-type dart:core::int
+
+Function '_instanceOf', abstract, debuggable
+    parameters [dynamic 'instantiatorTypeArguments', dynamic 'functionTypeArguments', dynamic 'type'] (required: 3)
+    return-type dart:core::bool
+
+Function '_simpleInstanceOf', abstract, debuggable
+    parameters [dynamic 'type'] (required: 1)
+    return-type dart:core::bool
+
+Function '_simpleInstanceOfTrue', abstract, debuggable
+    parameters [dynamic 'type'] (required: 1)
+    return-type dart:core::bool
+
+Function '_simpleInstanceOfFalse', abstract, debuggable
+    parameters [dynamic 'type'] (required: 1)
+    return-type dart:core::bool
+
+Function '==', abstract, debuggable
+    parameters [dynamic 'other'] (required: 1)
+    return-type dart:core::bool
+
+Function 'get:hashCode', getter, abstract, debuggable
+    parameters [] (required: 0)
+    return-type dart:core::int
+
+Function 'toString', abstract, debuggable
+    parameters [] (required: 0)
+    return-type dart:core::String
+
+Function 'noSuchMethod', abstract, debuggable
+    parameters [dart:core::Invocation 'invocation'] (required: 1)
+    return-type dynamic
+
+Function 'get:runtimeType', getter, abstract, debuggable
+    parameters [] (required: 0)
+    return-type dart:core::Type
 Class 'K', script = '#lib', abstract
     type-params <dart:core::Object A, dart:core::Object B> (args: 2)
     extends dart:core::Object
@@ -645,6 +885,46 @@
   [2] = Reserved
 }
 
+
+Function 'get:_identityHashCode', getter, abstract, debuggable
+    parameters [] (required: 0)
+    return-type dart:core::int
+
+Function '_instanceOf', abstract, debuggable
+    parameters [dynamic 'instantiatorTypeArguments', dynamic 'functionTypeArguments', dynamic 'type'] (required: 3)
+    return-type dart:core::bool
+
+Function '_simpleInstanceOf', abstract, debuggable
+    parameters [dynamic 'type'] (required: 1)
+    return-type dart:core::bool
+
+Function '_simpleInstanceOfTrue', abstract, debuggable
+    parameters [dynamic 'type'] (required: 1)
+    return-type dart:core::bool
+
+Function '_simpleInstanceOfFalse', abstract, debuggable
+    parameters [dynamic 'type'] (required: 1)
+    return-type dart:core::bool
+
+Function '==', abstract, debuggable
+    parameters [dynamic 'other'] (required: 1)
+    return-type dart:core::bool
+
+Function 'get:hashCode', getter, abstract, debuggable
+    parameters [] (required: 0)
+    return-type dart:core::int
+
+Function 'toString', abstract, debuggable
+    parameters [] (required: 0)
+    return-type dart:core::String
+
+Function 'noSuchMethod', abstract, debuggable
+    parameters [dart:core::Invocation 'invocation'] (required: 1)
+    return-type dynamic
+
+Function 'get:runtimeType', getter, abstract, debuggable
+    parameters [] (required: 0)
+    return-type dart:core::Type
 Class 'TestTypeArgReuse', script = '#lib'
     type-params <dart:core::Object P, dart:core::Object Q> (args: 2)
     extends #lib::Base < #lib::TestTypeArgReuse::TypeParam/0, #lib::TestTypeArgReuse::TypeParam/1 >
@@ -680,6 +960,16 @@
       : super dart.core::Object::•() {
       dart.core::print("Base: ${#lib::Base::T1*}, ${#lib::Base::T2*}");
     }
+    abstract member-signature get _identityHashCode() → dart.core::int*;
+    abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfTrue(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfFalse(dynamic type) → dart.core::bool*;
+    abstract member-signature operator ==(dynamic other) → dart.core::bool*;
+    abstract member-signature get hashCode() → dart.core::int*;
+    abstract member-signature method toString() → dart.core::String*;
+    abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic;
+    abstract member-signature get runtimeType() → dart.core::Type*;
   }
   class A extends #lib::Base<dart.core::int*, dart.core::String*> {
     constructor •(dart.core::String* s) → #lib::A*
@@ -697,6 +987,16 @@
       : super dart.core::Object::•() {
       dart.core::print("C: ${s}");
     }
+    abstract member-signature get _identityHashCode() → dart.core::int*;
+    abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfTrue(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfFalse(dynamic type) → dart.core::bool*;
+    abstract member-signature operator ==(dynamic other) → dart.core::bool*;
+    abstract member-signature get hashCode() → dart.core::int*;
+    abstract member-signature method toString() → dart.core::String*;
+    abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic;
+    abstract member-signature get runtimeType() → dart.core::Type*;
   }
   class E<K extends dart.core::Object* = dynamic, V extends dart.core::Object* = dynamic> extends dart.core::Object {
     synthetic constructor •() → #lib::E<#lib::E::K*, #lib::E::V*>*
@@ -704,6 +1004,16 @@
       ;
     method test_reuse1() → dynamic
       return dart.core::Map::•<#lib::E::K*, #lib::E::V*>();
+    abstract member-signature get _identityHashCode() → dart.core::int*;
+    abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfTrue(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfFalse(dynamic type) → dart.core::bool*;
+    abstract member-signature operator ==(dynamic other) → dart.core::bool*;
+    abstract member-signature get hashCode() → dart.core::int*;
+    abstract member-signature method toString() → dart.core::String*;
+    abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic;
+    abstract member-signature get runtimeType() → dart.core::Type*;
   }
   class F<K extends dart.core::Object* = dynamic, V extends dart.core::Object* = dynamic> extends #lib::E<dart.core::String*, dart.core::List<#lib::F::V*>*> {
     synthetic constructor •() → #lib::F<#lib::F::K*, #lib::F::V*>*
@@ -718,6 +1028,16 @@
       ;
     static factory test_factory<K extends dart.core::Object* = dynamic, V extends dart.core::Object* = dynamic>() → #lib::G<#lib::G::test_factory::K*, #lib::G::test_factory::V*>*
       return new #lib::H::•<dart.core::String*, #lib::G::test_factory::K*, #lib::G::test_factory::V*>();
+    abstract member-signature get _identityHashCode() → dart.core::int*;
+    abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfTrue(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfFalse(dynamic type) → dart.core::bool*;
+    abstract member-signature operator ==(dynamic other) → dart.core::bool*;
+    abstract member-signature get hashCode() → dart.core::int*;
+    abstract member-signature method toString() → dart.core::String*;
+    abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic;
+    abstract member-signature get runtimeType() → dart.core::Type*;
   }
   class H<P1 extends dart.core::Object* = dynamic, P2 extends dart.core::Object* = dynamic, P3 extends dart.core::Object* = dynamic> extends #lib::G<#lib::H::P2*, #lib::H::P3*> {
     synthetic constructor •() → #lib::H<#lib::H::P1*, #lib::H::P2*, #lib::H::P3*>*
@@ -730,14 +1050,44 @@
       ;
     static factory test_factory2({dynamic param = #C1}) → #lib::I*
       return new #lib::I::•(param);
+    abstract member-signature get _identityHashCode() → dart.core::int*;
+    abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfTrue(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfFalse(dynamic type) → dart.core::bool*;
+    abstract member-signature operator ==(dynamic other) → dart.core::bool*;
+    abstract member-signature get hashCode() → dart.core::int*;
+    abstract member-signature method toString() → dart.core::String*;
+    abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic;
+    abstract member-signature get runtimeType() → dart.core::Type*;
   }
   class J extends dart.core::Object {
     @#C3
     external static factory •() → #lib::J*;
+    abstract member-signature get _identityHashCode() → dart.core::int*;
+    abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfTrue(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfFalse(dynamic type) → dart.core::bool*;
+    abstract member-signature operator ==(dynamic other) → dart.core::bool*;
+    abstract member-signature get hashCode() → dart.core::int*;
+    abstract member-signature method toString() → dart.core::String*;
+    abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic;
+    abstract member-signature get runtimeType() → dart.core::Type*;
   }
   abstract class K<A extends dart.core::Object* = dynamic, B extends dart.core::Object* = dynamic> extends dart.core::Object {
     static factory •<A extends dart.core::Object* = dynamic, B extends dart.core::Object* = dynamic>() → #lib::K<#lib::K::•::A*, #lib::K::•::B*>*
       return new #lib::TestTypeArgReuse::•<#lib::K::•::A*, #lib::K::•::B*>();
+    abstract member-signature get _identityHashCode() → dart.core::int*;
+    abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfTrue(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfFalse(dynamic type) → dart.core::bool*;
+    abstract member-signature operator ==(dynamic other) → dart.core::bool*;
+    abstract member-signature get hashCode() → dart.core::int*;
+    abstract member-signature method toString() → dart.core::String*;
+    abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic;
+    abstract member-signature get runtimeType() → dart.core::Type*;
   }
   class TestTypeArgReuse<P extends dart.core::Object* = dynamic, Q extends dart.core::Object* = dynamic> extends #lib::Base<#lib::TestTypeArgReuse::P*, #lib::TestTypeArgReuse::Q*> implements #lib::K<#lib::TestTypeArgReuse::P*, #lib::TestTypeArgReuse::Q*> {
     synthetic constructor •() → #lib::TestTypeArgReuse<#lib::TestTypeArgReuse::P*, #lib::TestTypeArgReuse::Q*>*
diff --git a/pkg/vm/testcases/bytecode/literals.dart.expect b/pkg/vm/testcases/bytecode/literals.dart.expect
index 316e2e4..be92e6d 100644
--- a/pkg/vm/testcases/bytecode/literals.dart.expect
+++ b/pkg/vm/testcases/bytecode/literals.dart.expect
@@ -530,6 +530,42 @@
   [1] = Reserved
 }
 
+
+Function 'get:_identityHashCode', getter, abstract, debuggable
+    parameters [] (required: 0)
+    return-type dart:core::int
+
+Function '_instanceOf', abstract, debuggable
+    parameters [dynamic 'instantiatorTypeArguments', dynamic 'functionTypeArguments', dynamic 'type'] (required: 3)
+    return-type dart:core::bool
+
+Function '_simpleInstanceOf', abstract, debuggable
+    parameters [dynamic 'type'] (required: 1)
+    return-type dart:core::bool
+
+Function '_simpleInstanceOfTrue', abstract, debuggable
+    parameters [dynamic 'type'] (required: 1)
+    return-type dart:core::bool
+
+Function '_simpleInstanceOfFalse', abstract, debuggable
+    parameters [dynamic 'type'] (required: 1)
+    return-type dart:core::bool
+
+Function '==', abstract, debuggable
+    parameters [dynamic 'other'] (required: 1)
+    return-type dart:core::bool
+
+Function 'get:hashCode', getter, abstract, debuggable
+    parameters [] (required: 0)
+    return-type dart:core::int
+
+Function 'noSuchMethod', abstract, debuggable
+    parameters [dart:core::Invocation 'invocation'] (required: 1)
+    return-type dynamic
+
+Function 'get:runtimeType', getter, abstract, debuggable
+    parameters [] (required: 0)
+    return-type dart:core::Type
 Class 'B', script = '#lib'
     extends dart:core::Object
 
@@ -559,6 +595,46 @@
   [3] = Reserved
 }
 
+
+Function 'get:_identityHashCode', getter, abstract, debuggable
+    parameters [] (required: 0)
+    return-type dart:core::int
+
+Function '_instanceOf', abstract, debuggable
+    parameters [dynamic 'instantiatorTypeArguments', dynamic 'functionTypeArguments', dynamic 'type'] (required: 3)
+    return-type dart:core::bool
+
+Function '_simpleInstanceOf', abstract, debuggable
+    parameters [dynamic 'type'] (required: 1)
+    return-type dart:core::bool
+
+Function '_simpleInstanceOfTrue', abstract, debuggable
+    parameters [dynamic 'type'] (required: 1)
+    return-type dart:core::bool
+
+Function '_simpleInstanceOfFalse', abstract, debuggable
+    parameters [dynamic 'type'] (required: 1)
+    return-type dart:core::bool
+
+Function '==', abstract, debuggable
+    parameters [dynamic 'other'] (required: 1)
+    return-type dart:core::bool
+
+Function 'get:hashCode', getter, abstract, debuggable
+    parameters [] (required: 0)
+    return-type dart:core::int
+
+Function 'toString', abstract, debuggable
+    parameters [] (required: 0)
+    return-type dart:core::String
+
+Function 'noSuchMethod', abstract, debuggable
+    parameters [dart:core::Invocation 'invocation'] (required: 1)
+    return-type dynamic
+
+Function 'get:runtimeType', getter, abstract, debuggable
+    parameters [] (required: 0)
+    return-type dart:core::Type
 Class 'C', script = '#lib'
     extends #lib::B
 
@@ -633,6 +709,46 @@
   [6] = Reserved
 }
 
+
+Function 'get:_identityHashCode', getter, abstract, debuggable
+    parameters [] (required: 0)
+    return-type dart:core::int
+
+Function '_instanceOf', abstract, debuggable
+    parameters [dynamic 'instantiatorTypeArguments', dynamic 'functionTypeArguments', dynamic 'type'] (required: 3)
+    return-type dart:core::bool
+
+Function '_simpleInstanceOf', abstract, debuggable
+    parameters [dynamic 'type'] (required: 1)
+    return-type dart:core::bool
+
+Function '_simpleInstanceOfTrue', abstract, debuggable
+    parameters [dynamic 'type'] (required: 1)
+    return-type dart:core::bool
+
+Function '_simpleInstanceOfFalse', abstract, debuggable
+    parameters [dynamic 'type'] (required: 1)
+    return-type dart:core::bool
+
+Function '==', abstract, debuggable
+    parameters [dynamic 'other'] (required: 1)
+    return-type dart:core::bool
+
+Function 'get:hashCode', getter, abstract, debuggable
+    parameters [] (required: 0)
+    return-type dart:core::int
+
+Function 'toString', abstract, debuggable
+    parameters [] (required: 0)
+    return-type dart:core::String
+
+Function 'noSuchMethod', abstract, debuggable
+    parameters [dart:core::Invocation 'invocation'] (required: 1)
+    return-type dynamic
+
+Function 'get:runtimeType', getter, abstract, debuggable
+    parameters [] (required: 0)
+    return-type dart:core::Type
 Class 'E', script = '#lib'
     type-params <dart:core::Object T> (args: 1)
     extends dart:core::Object
@@ -656,6 +772,46 @@
   [1] = Reserved
 }
 
+
+Function 'get:_identityHashCode', getter, abstract, debuggable
+    parameters [] (required: 0)
+    return-type dart:core::int
+
+Function '_instanceOf', abstract, debuggable
+    parameters [dynamic 'instantiatorTypeArguments', dynamic 'functionTypeArguments', dynamic 'type'] (required: 3)
+    return-type dart:core::bool
+
+Function '_simpleInstanceOf', abstract, debuggable
+    parameters [dynamic 'type'] (required: 1)
+    return-type dart:core::bool
+
+Function '_simpleInstanceOfTrue', abstract, debuggable
+    parameters [dynamic 'type'] (required: 1)
+    return-type dart:core::bool
+
+Function '_simpleInstanceOfFalse', abstract, debuggable
+    parameters [dynamic 'type'] (required: 1)
+    return-type dart:core::bool
+
+Function '==', abstract, debuggable
+    parameters [dynamic 'other'] (required: 1)
+    return-type dart:core::bool
+
+Function 'get:hashCode', getter, abstract, debuggable
+    parameters [] (required: 0)
+    return-type dart:core::int
+
+Function 'toString', abstract, debuggable
+    parameters [] (required: 0)
+    return-type dart:core::String
+
+Function 'noSuchMethod', abstract, debuggable
+    parameters [dart:core::Invocation 'invocation'] (required: 1)
+    return-type dynamic
+
+Function 'get:runtimeType', getter, abstract, debuggable
+    parameters [] (required: 0)
+    return-type dart:core::Type
 Class 'F', script = '#lib'
     type-params <dart:core::Object P, dart:core::Object Q> (args: 3)
     extends #lib::E < dart:core::Map < #lib::F::TypeParam/0, #lib::F::TypeParam/1 > >
@@ -697,12 +853,31 @@
       ;
     method toString() → dart.core::String*
       return this.{=#lib::A::_name};
+    abstract member-signature get _identityHashCode() → dart.core::int*;
+    abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfTrue(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfFalse(dynamic type) → dart.core::bool*;
+    abstract member-signature operator ==(dynamic other) → dart.core::bool*;
+    abstract member-signature get hashCode() → dart.core::int*;
+    abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic;
+    abstract member-signature get runtimeType() → dart.core::Type*;
   }
   class B extends dart.core::Object /*hasConstConstructor*/  {
     final field dart.core::int* i;
     const constructor •(dart.core::int* i) → #lib::B*
       : #lib::B::i = i, super dart.core::Object::•()
       ;
+    abstract member-signature get _identityHashCode() → dart.core::int*;
+    abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfTrue(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfFalse(dynamic type) → dart.core::bool*;
+    abstract member-signature operator ==(dynamic other) → dart.core::bool*;
+    abstract member-signature get hashCode() → dart.core::int*;
+    abstract member-signature method toString() → dart.core::String*;
+    abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic;
+    abstract member-signature get runtimeType() → dart.core::Type*;
   }
   class C extends #lib::B /*hasConstConstructor*/  {
     final field dart.core::int* j;
@@ -716,11 +891,31 @@
     const constructor •(dynamic x, [dynamic y = #C14]) → #lib::D*
       : #lib::D::x = x, #lib::D::y = y, super dart.core::Object::•()
       ;
+    abstract member-signature get _identityHashCode() → dart.core::int*;
+    abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfTrue(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfFalse(dynamic type) → dart.core::bool*;
+    abstract member-signature operator ==(dynamic other) → dart.core::bool*;
+    abstract member-signature get hashCode() → dart.core::int*;
+    abstract member-signature method toString() → dart.core::String*;
+    abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic;
+    abstract member-signature get runtimeType() → dart.core::Type*;
   }
   class E<T extends dart.core::Object* = dynamic> extends dart.core::Object /*hasConstConstructor*/  {
     const constructor •() → #lib::E<#lib::E::T*>*
       : super dart.core::Object::•()
       ;
+    abstract member-signature get _identityHashCode() → dart.core::int*;
+    abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfTrue(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfFalse(dynamic type) → dart.core::bool*;
+    abstract member-signature operator ==(dynamic other) → dart.core::bool*;
+    abstract member-signature get hashCode() → dart.core::int*;
+    abstract member-signature method toString() → dart.core::String*;
+    abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic;
+    abstract member-signature get runtimeType() → dart.core::Type*;
   }
   class F<P extends dart.core::Object* = dynamic, Q extends dart.core::Object* = dynamic> extends #lib::E<dart.core::Map<#lib::F::P*, #lib::F::Q*>*> /*hasConstConstructor*/  {
     const constructor •() → #lib::F<#lib::F::P*, #lib::F::Q*>*
diff --git a/pkg/vm/testcases/bytecode/loops.dart.expect b/pkg/vm/testcases/bytecode/loops.dart.expect
index 524ae14..4b4932f 100644
--- a/pkg/vm/testcases/bytecode/loops.dart.expect
+++ b/pkg/vm/testcases/bytecode/loops.dart.expect
@@ -26,12 +26,13 @@
   Push                 r1
   Push                 FP[-5]
   InterfaceCall        CP#0, 1
-  CompareIntLt
+  InterfaceCall        CP#2, 2
+  AssertBoolean        0
   JumpIfFalse          L1
   Push                 r0
   Push                 FP[-5]
   Push                 r1
-  InterfaceCall        CP#2, 2
+  InterfaceCall        CP#4, 2
   AddInt
   PopLocal             r0
   Push                 r1
@@ -47,8 +48,10 @@
 ConstantPool {
   [0] = InterfaceCall 'dart:core::List::get:length', ArgDesc num-args 1, num-type-args 0, names []
   [1] = Reserved
-  [2] = InterfaceCall 'dart:core::List::[]', ArgDesc num-args 2, num-type-args 0, names []
+  [2] = InterfaceCall 'dart:core::num::<', ArgDesc num-args 2, num-type-args 0, names []
   [3] = Reserved
+  [4] = InterfaceCall 'dart:core::List::[]', ArgDesc num-args 2, num-type-args 0, names []
+  [5] = Reserved
 }
 
 
@@ -72,14 +75,15 @@
   Push                 r1
   Push                 FP[-5]
   InterfaceCall        CP#0, 1
-  CompareIntGe
+  InterfaceCall        CP#2, 2
+  AssertBoolean        0
   JumpIfFalse          L2
   Jump                 L1
 L2:
   Push                 r0
   Push                 FP[-5]
   Push                 r1
-  InterfaceCall        CP#2, 2
+  InterfaceCall        CP#4, 2
   AddInt
   PopLocal             r0
   Push                 r1
@@ -95,8 +99,10 @@
 ConstantPool {
   [0] = InterfaceCall 'dart:core::List::get:length', ArgDesc num-args 1, num-type-args 0, names []
   [1] = Reserved
-  [2] = InterfaceCall 'dart:core::List::[]', ArgDesc num-args 2, num-type-args 0, names []
+  [2] = InterfaceCall 'dart:core::num::>=', ArgDesc num-args 2, num-type-args 0, names []
   [3] = Reserved
+  [4] = InterfaceCall 'dart:core::List::[]', ArgDesc num-args 2, num-type-args 0, names []
+  [5] = Reserved
 }
 
 
@@ -117,7 +123,8 @@
   Push                 r1
   Push                 FP[-5]
   InterfaceCall        CP#0, 1
-  CompareIntLt
+  InterfaceCall        CP#2, 2
+  AssertBoolean        0
   JumpIfFalse          L1
   Push                 r1
   PushInt              0
@@ -128,7 +135,7 @@
   Push                 r0
   Push                 FP[-5]
   Push                 r1
-  InterfaceCall        CP#2, 2
+  InterfaceCall        CP#4, 2
   AddInt
   PopLocal             r0
 L3:
@@ -145,8 +152,10 @@
 ConstantPool {
   [0] = InterfaceCall 'dart:core::List::get:length', ArgDesc num-args 1, num-type-args 0, names []
   [1] = Reserved
-  [2] = InterfaceCall 'dart:core::List::[]', ArgDesc num-args 2, num-type-args 0, names []
+  [2] = InterfaceCall 'dart:core::num::<', ArgDesc num-args 2, num-type-args 0, names []
   [3] = Reserved
+  [4] = InterfaceCall 'dart:core::List::[]', ArgDesc num-args 2, num-type-args 0, names []
+  [5] = Reserved
 }
 
 
@@ -166,7 +175,8 @@
   Push                 r1
   Push                 FP[-5]
   InterfaceCall        CP#0, 1
-  CompareIntLt
+  InterfaceCall        CP#2, 2
+  AssertBoolean        0
   JumpIfFalse          L1
   Push                 r0
   Push                 FP[-5]
@@ -178,7 +188,7 @@
   StoreLocal           r1
   PopLocal             r3
   Push                 r2
-  InterfaceCall        CP#2, 2
+  InterfaceCall        CP#4, 2
   AddInt
   PopLocal             r0
   Jump                 L2
@@ -189,8 +199,10 @@
 ConstantPool {
   [0] = InterfaceCall 'dart:core::List::get:length', ArgDesc num-args 1, num-type-args 0, names []
   [1] = Reserved
-  [2] = InterfaceCall 'dart:core::List::[]', ArgDesc num-args 2, num-type-args 0, names []
+  [2] = InterfaceCall 'dart:core::num::<', ArgDesc num-args 2, num-type-args 0, names []
   [3] = Reserved
+  [4] = InterfaceCall 'dart:core::List::[]', ArgDesc num-args 2, num-type-args 0, names []
+  [5] = Reserved
 }
 
 
@@ -220,7 +232,8 @@
   Push                 r1
   Push                 FP[-5]
   InterfaceCall        CP#2, 1
-  CompareIntLt
+  InterfaceCall        CP#4, 2
+  AssertBoolean        0
   JumpIfTrue           L1
   Push                 r0
   ReturnTOS
@@ -230,6 +243,8 @@
   [1] = Reserved
   [2] = InterfaceCall 'dart:core::List::get:length', ArgDesc num-args 1, num-type-args 0, names []
   [3] = Reserved
+  [4] = InterfaceCall 'dart:core::num::<', ArgDesc num-args 2, num-type-args 0, names []
+  [5] = Reserved
 }
 
 
diff --git a/pkg/vm/testcases/bytecode/super_calls.dart.expect b/pkg/vm/testcases/bytecode/super_calls.dart.expect
index d872423..181a7cb 100644
--- a/pkg/vm/testcases/bytecode/super_calls.dart.expect
+++ b/pkg/vm/testcases/bytecode/super_calls.dart.expect
@@ -89,6 +89,46 @@
 ConstantPool {
 }
 
+
+Function 'get:_identityHashCode', getter, abstract, debuggable
+    parameters [] (required: 0)
+    return-type dart:core::int
+
+Function '_instanceOf', abstract, debuggable
+    parameters [dynamic 'instantiatorTypeArguments', dynamic 'functionTypeArguments', dynamic 'type'] (required: 3)
+    return-type dart:core::bool
+
+Function '_simpleInstanceOf', abstract, debuggable
+    parameters [dynamic 'type'] (required: 1)
+    return-type dart:core::bool
+
+Function '_simpleInstanceOfTrue', abstract, debuggable
+    parameters [dynamic 'type'] (required: 1)
+    return-type dart:core::bool
+
+Function '_simpleInstanceOfFalse', abstract, debuggable
+    parameters [dynamic 'type'] (required: 1)
+    return-type dart:core::bool
+
+Function '==', abstract, debuggable
+    parameters [dynamic 'other'] (required: 1)
+    return-type dart:core::bool
+
+Function 'get:hashCode', getter, abstract, debuggable
+    parameters [] (required: 0)
+    return-type dart:core::int
+
+Function 'toString', abstract, debuggable
+    parameters [] (required: 0)
+    return-type dart:core::String
+
+Function 'noSuchMethod', abstract, debuggable
+    parameters [dart:core::Invocation 'invocation'] (required: 1)
+    return-type dynamic
+
+Function 'get:runtimeType', getter, abstract, debuggable
+    parameters [] (required: 0)
+    return-type dart:core::Type
 Class 'A', script = '#lib'
     extends #lib::Base1
 
@@ -246,6 +286,46 @@
 Function 'set:bazz', setter, abstract, reflectable, debuggable
     parameters [dart:core::int 'x'] (required: 1)
     return-type void
+
+Function 'get:_identityHashCode', getter, abstract, debuggable
+    parameters [] (required: 0)
+    return-type dart:core::int
+
+Function '_instanceOf', abstract, debuggable
+    parameters [dynamic 'instantiatorTypeArguments', dynamic 'functionTypeArguments', dynamic 'type'] (required: 3)
+    return-type dart:core::bool
+
+Function '_simpleInstanceOf', abstract, debuggable
+    parameters [dynamic 'type'] (required: 1)
+    return-type dart:core::bool
+
+Function '_simpleInstanceOfTrue', abstract, debuggable
+    parameters [dynamic 'type'] (required: 1)
+    return-type dart:core::bool
+
+Function '_simpleInstanceOfFalse', abstract, debuggable
+    parameters [dynamic 'type'] (required: 1)
+    return-type dart:core::bool
+
+Function '==', abstract, debuggable
+    parameters [dynamic 'other'] (required: 1)
+    return-type dart:core::bool
+
+Function 'get:hashCode', getter, abstract, debuggable
+    parameters [] (required: 0)
+    return-type dart:core::int
+
+Function 'toString', abstract, debuggable
+    parameters [] (required: 0)
+    return-type dart:core::String
+
+Function 'noSuchMethod', abstract, debuggable
+    parameters [dart:core::Invocation 'invocation'] (required: 1)
+    return-type dynamic
+
+Function 'get:runtimeType', getter, abstract, debuggable
+    parameters [] (required: 0)
+    return-type dart:core::Type
 Class 'B', script = '#lib', abstract
     extends #lib::Base2
 
@@ -482,6 +562,16 @@
     get bar() → dynamic
       return 42;
     set bazz(dart.core::int* x) → void {}
+    abstract member-signature get _identityHashCode() → dart.core::int*;
+    abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfTrue(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfFalse(dynamic type) → dart.core::bool*;
+    abstract member-signature operator ==(dynamic other) → dart.core::bool*;
+    abstract member-signature get hashCode() → dart.core::int*;
+    abstract member-signature method toString() → dart.core::String*;
+    abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic;
+    abstract member-signature get runtimeType() → dart.core::Type*;
   }
   class A extends #lib::Base1 {
     synthetic constructor •() → #lib::A*
@@ -506,6 +596,16 @@
     abstract method foo<T extends dart.core::Object* = dynamic>(dart.core::String* a1, #lib::Base2::foo::T* a2, dart.core::int* a3) → void;
     abstract get bar() → dynamic;
     abstract set bazz(dart.core::int* x) → void;
+    abstract member-signature get _identityHashCode() → dart.core::int*;
+    abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfTrue(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfFalse(dynamic type) → dart.core::bool*;
+    abstract member-signature operator ==(dynamic other) → dart.core::bool*;
+    abstract member-signature get hashCode() → dart.core::int*;
+    abstract member-signature method toString() → dart.core::String*;
+    abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic;
+    abstract member-signature get runtimeType() → dart.core::Type*;
   }
   abstract class B extends #lib::Base2 {
     synthetic constructor •() → #lib::B*
diff --git a/pkg/vm/testcases/bytecode/type_ops.dart.expect b/pkg/vm/testcases/bytecode/type_ops.dart.expect
index b78c771..8ed5202 100644
--- a/pkg/vm/testcases/bytecode/type_ops.dart.expect
+++ b/pkg/vm/testcases/bytecode/type_ops.dart.expect
@@ -123,6 +123,46 @@
   [1] = Reserved
 }
 
+
+Function 'get:_identityHashCode', getter, abstract, debuggable
+    parameters [] (required: 0)
+    return-type dart:core::int
+
+Function '_instanceOf', abstract, debuggable
+    parameters [dynamic 'instantiatorTypeArguments', dynamic 'functionTypeArguments', dynamic 'type'] (required: 3)
+    return-type dart:core::bool
+
+Function '_simpleInstanceOf', abstract, debuggable
+    parameters [dynamic 'type'] (required: 1)
+    return-type dart:core::bool
+
+Function '_simpleInstanceOfTrue', abstract, debuggable
+    parameters [dynamic 'type'] (required: 1)
+    return-type dart:core::bool
+
+Function '_simpleInstanceOfFalse', abstract, debuggable
+    parameters [dynamic 'type'] (required: 1)
+    return-type dart:core::bool
+
+Function '==', abstract, debuggable
+    parameters [dynamic 'other'] (required: 1)
+    return-type dart:core::bool
+
+Function 'get:hashCode', getter, abstract, debuggable
+    parameters [] (required: 0)
+    return-type dart:core::int
+
+Function 'toString', abstract, debuggable
+    parameters [] (required: 0)
+    return-type dart:core::String
+
+Function 'noSuchMethod', abstract, debuggable
+    parameters [dart:core::Invocation 'invocation'] (required: 1)
+    return-type dynamic
+
+Function 'get:runtimeType', getter, abstract, debuggable
+    parameters [] (required: 0)
+    return-type dart:core::Type
 Class 'B', script = '#lib'
     extends #lib::A < dart:core::String >
 
@@ -432,6 +472,46 @@
   [4] = ObjectRef 'T'
 }
 
+
+Function 'get:_identityHashCode', getter, abstract, debuggable
+    parameters [] (required: 0)
+    return-type dart:core::int
+
+Function '_instanceOf', abstract, debuggable
+    parameters [dynamic 'instantiatorTypeArguments', dynamic 'functionTypeArguments', dynamic 'type'] (required: 3)
+    return-type dart:core::bool
+
+Function '_simpleInstanceOf', abstract, debuggable
+    parameters [dynamic 'type'] (required: 1)
+    return-type dart:core::bool
+
+Function '_simpleInstanceOfTrue', abstract, debuggable
+    parameters [dynamic 'type'] (required: 1)
+    return-type dart:core::bool
+
+Function '_simpleInstanceOfFalse', abstract, debuggable
+    parameters [dynamic 'type'] (required: 1)
+    return-type dart:core::bool
+
+Function '==', abstract, debuggable
+    parameters [dynamic 'other'] (required: 1)
+    return-type dart:core::bool
+
+Function 'get:hashCode', getter, abstract, debuggable
+    parameters [] (required: 0)
+    return-type dart:core::int
+
+Function 'toString', abstract, debuggable
+    parameters [] (required: 0)
+    return-type dart:core::String
+
+Function 'noSuchMethod', abstract, debuggable
+    parameters [dart:core::Invocation 'invocation'] (required: 1)
+    return-type dynamic
+
+Function 'get:runtimeType', getter, abstract, debuggable
+    parameters [] (required: 0)
+    return-type dart:core::Type
 Class 'F', script = '#lib', abstract
     type-params <dart:core::Object T> (args: 1)
     extends dart:core::Object
@@ -465,6 +545,46 @@
     type-params <#lib::F::TypeParam/0 Q>
     parameters [#lib::F::foo8::TypeParam/0 'a', dart:core::num 'b', #lib::F::TypeParam/0 'c'] (required: 3)
     return-type void
+
+Function 'get:_identityHashCode', getter, abstract, debuggable
+    parameters [] (required: 0)
+    return-type dart:core::int
+
+Function '_instanceOf', abstract, debuggable
+    parameters [dynamic 'instantiatorTypeArguments', dynamic 'functionTypeArguments', dynamic 'type'] (required: 3)
+    return-type dart:core::bool
+
+Function '_simpleInstanceOf', abstract, debuggable
+    parameters [dynamic 'type'] (required: 1)
+    return-type dart:core::bool
+
+Function '_simpleInstanceOfTrue', abstract, debuggable
+    parameters [dynamic 'type'] (required: 1)
+    return-type dart:core::bool
+
+Function '_simpleInstanceOfFalse', abstract, debuggable
+    parameters [dynamic 'type'] (required: 1)
+    return-type dart:core::bool
+
+Function '==', abstract, debuggable
+    parameters [dynamic 'other'] (required: 1)
+    return-type dart:core::bool
+
+Function 'get:hashCode', getter, abstract, debuggable
+    parameters [] (required: 0)
+    return-type dart:core::int
+
+Function 'toString', abstract, debuggable
+    parameters [] (required: 0)
+    return-type dart:core::String
+
+Function 'noSuchMethod', abstract, debuggable
+    parameters [dart:core::Invocation 'invocation'] (required: 1)
+    return-type dynamic
+
+Function 'get:runtimeType', getter, abstract, debuggable
+    parameters [] (required: 0)
+    return-type dart:core::Type
 Class 'G', script = '#lib'
     type-params <dart:core::Object T> (args: 1)
     extends dart:core::Object
@@ -535,6 +655,46 @@
   [6] = ObjectRef < #lib::G::TypeParam/0 >
 }
 
+
+Function 'get:_identityHashCode', getter, abstract, debuggable
+    parameters [] (required: 0)
+    return-type dart:core::int
+
+Function '_instanceOf', abstract, debuggable
+    parameters [dynamic 'instantiatorTypeArguments', dynamic 'functionTypeArguments', dynamic 'type'] (required: 3)
+    return-type dart:core::bool
+
+Function '_simpleInstanceOf', abstract, debuggable
+    parameters [dynamic 'type'] (required: 1)
+    return-type dart:core::bool
+
+Function '_simpleInstanceOfTrue', abstract, debuggable
+    parameters [dynamic 'type'] (required: 1)
+    return-type dart:core::bool
+
+Function '_simpleInstanceOfFalse', abstract, debuggable
+    parameters [dynamic 'type'] (required: 1)
+    return-type dart:core::bool
+
+Function '==', abstract, debuggable
+    parameters [dynamic 'other'] (required: 1)
+    return-type dart:core::bool
+
+Function 'get:hashCode', getter, abstract, debuggable
+    parameters [] (required: 0)
+    return-type dart:core::int
+
+Function 'toString', abstract, debuggable
+    parameters [] (required: 0)
+    return-type dart:core::String
+
+Function 'noSuchMethod', abstract, debuggable
+    parameters [dart:core::Invocation 'invocation'] (required: 1)
+    return-type dynamic
+
+Function 'get:runtimeType', getter, abstract, debuggable
+    parameters [] (required: 0)
+    return-type dart:core::Type
 Class 'H', script = '#lib'
     type-params <dart:core::Object T> (args: 1)
     extends #lib::G < #lib::H::TypeParam/0 >
@@ -690,6 +850,16 @@
     synthetic constructor •() → #lib::A<#lib::A::T*>*
       : super dart.core::Object::•()
       ;
+    abstract member-signature get _identityHashCode() → dart.core::int*;
+    abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfTrue(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfFalse(dynamic type) → dart.core::bool*;
+    abstract member-signature operator ==(dynamic other) → dart.core::bool*;
+    abstract member-signature get hashCode() → dart.core::int*;
+    abstract member-signature method toString() → dart.core::String*;
+    abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic;
+    abstract member-signature get runtimeType() → dart.core::Type*;
   }
   class B extends #lib::A<dart.core::String*> {
     synthetic constructor •() → #lib::B*
@@ -733,6 +903,16 @@
     static factory •<P extends dart.core::String* = dynamic>() → #lib::E<#lib::E::•::P*>*
       return null;
     method foo6<generic-covariant-impl T extends #lib::E::P* = #lib::E::P*, U extends dart.core::List<#lib::E::foo6::T*>* = dart.core::List<#lib::E::P*>*>(dart.core::Map<#lib::E::foo6::T*, #lib::E::foo6::U*>* map) → void {}
+    abstract member-signature get _identityHashCode() → dart.core::int*;
+    abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfTrue(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfFalse(dynamic type) → dart.core::bool*;
+    abstract member-signature operator ==(dynamic other) → dart.core::bool*;
+    abstract member-signature get hashCode() → dart.core::int*;
+    abstract member-signature method toString() → dart.core::String*;
+    abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic;
+    abstract member-signature get runtimeType() → dart.core::Type*;
   }
   abstract class F<T extends dart.core::Object* = dynamic> extends dart.core::Object {
     synthetic constructor •() → #lib::F<#lib::F::T*>*
@@ -740,12 +920,32 @@
       ;
     abstract method foo7<generic-covariant-impl Q extends #lib::F::T* = #lib::F::T*>(#lib::F::foo7::Q* a, covariant dart.core::num* b, generic-covariant-impl #lib::F::T* c) → void;
     abstract method foo8<generic-covariant-impl Q extends #lib::F::T* = #lib::F::T*>(#lib::F::foo8::Q* a, covariant dart.core::num* b, generic-covariant-impl #lib::F::T* c) → void;
+    abstract member-signature get _identityHashCode() → dart.core::int*;
+    abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfTrue(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfFalse(dynamic type) → dart.core::bool*;
+    abstract member-signature operator ==(dynamic other) → dart.core::bool*;
+    abstract member-signature get hashCode() → dart.core::int*;
+    abstract member-signature method toString() → dart.core::String*;
+    abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic;
+    abstract member-signature get runtimeType() → dart.core::Type*;
   }
   class G<T extends dart.core::Object* = dynamic> extends dart.core::Object {
     synthetic constructor •() → #lib::G<#lib::G::T*>*
       : super dart.core::Object::•()
       ;
     method foo7<generic-covariant-impl Q extends #lib::G::T* = #lib::G::T*>(#lib::G::foo7::Q* a, dart.core::int* b, generic-covariant-impl #lib::G::T* c) → void {}
+    abstract member-signature get _identityHashCode() → dart.core::int*;
+    abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfTrue(dynamic type) → dart.core::bool*;
+    abstract member-signature method _simpleInstanceOfFalse(dynamic type) → dart.core::bool*;
+    abstract member-signature operator ==(dynamic other) → dart.core::bool*;
+    abstract member-signature get hashCode() → dart.core::int*;
+    abstract member-signature method toString() → dart.core::String*;
+    abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic;
+    abstract member-signature get runtimeType() → dart.core::Type*;
   }
   class H<T extends dart.core::Object* = dynamic> extends #lib::G<#lib::H::T*> implements #lib::F<#lib::H::T*> {
     synthetic constructor •() → #lib::H<#lib::H::T*>*
diff --git a/pkg/vm/testcases/transformations/type_flow/summary_collector/control_flow.dart.expect b/pkg/vm/testcases/transformations/type_flow/summary_collector/control_flow.dart.expect
index 9bea26d..cc1c945 100644
--- a/pkg/vm/testcases/transformations/type_flow/summary_collector/control_flow.dart.expect
+++ b/pkg/vm/testcases/transformations/type_flow/summary_collector/control_flow.dart.expect
@@ -129,7 +129,7 @@
 RESULT: _T {}?
 ------------ if9 ------------
 %x = _Parameter #0 [_T (#lib::TestEnum)+?]
-t1* = _Call [Object::==] (%x, _T (#lib::TestEnum, #lib::TestEnum {index: 0, #lib::_name: TestEnum.v1, }))
+t1* = _Call [TestEnum::==] (%x, _T (#lib::TestEnum, #lib::TestEnum {index: 0, #lib::_name: TestEnum.v1, }))
 t2 = _Call direct [foo] (_T (#lib::TestEnum, #lib::TestEnum {index: 0, #lib::_name: TestEnum.v1, }))
 RESULT: _T {}?
 ------------ conditional1 ------------
diff --git a/pkg/vm/testcases/transformations/type_flow/transformer/async_await.dart.expect b/pkg/vm/testcases/transformations/type_flow/transformer/async_await.dart.expect
index 17ce2e4..a00d5c0 100644
--- a/pkg/vm/testcases/transformations/type_flow/transformer/async_await.dart.expect
+++ b/pkg/vm/testcases/transformations/type_flow/transformer/async_await.dart.expect
@@ -26,8 +26,8 @@
         asy::_completeOnAsyncReturn(:async_completer, :return_value);
         return;
       }
-      on dynamic catch(dynamic :exception, core::StackTrace* :stack_trace) {
-        [@vm.direct-call.metadata=_AsyncAwaitCompleter::completeError] [@vm.inferred-type.metadata=!? (skip check)] :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+      on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
+        [@vm.direct-call.metadata=_AsyncAwaitCompleter::completeError] [@vm.inferred-type.metadata=!? (skip check)] :async_completer.{asy::Completer::completeError}(exception, stack_trace);
       }
     :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
     :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
@@ -61,8 +61,8 @@
       asy::_completeOnAsyncReturn(:async_completer, :return_value);
       return;
     }
-    on dynamic catch(dynamic :exception, core::StackTrace* :stack_trace) {
-      [@vm.direct-call.metadata=_AsyncAwaitCompleter::completeError] [@vm.inferred-type.metadata=!? (skip check)] :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+    on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
+      [@vm.direct-call.metadata=_AsyncAwaitCompleter::completeError] [@vm.inferred-type.metadata=!? (skip check)] :async_completer.{asy::Completer::completeError}(exception, stack_trace);
     }
   :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
@@ -92,8 +92,8 @@
       asy::_completeOnAsyncReturn(:async_completer, :return_value);
       return;
     }
-    on dynamic catch(dynamic :exception, core::StackTrace* :stack_trace) {
-      [@vm.direct-call.metadata=_AsyncAwaitCompleter::completeError] [@vm.inferred-type.metadata=!? (skip check)] :async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
+    on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
+      [@vm.direct-call.metadata=_AsyncAwaitCompleter::completeError] [@vm.inferred-type.metadata=!? (skip check)] :async_completer.{asy::Completer::completeError}(exception, stack_trace);
     }
   :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
diff --git a/pkg/vm/testcases/transformations/type_flow/transformer/bench_is_prime.dart.expect b/pkg/vm/testcases/transformations/type_flow/transformer/bench_is_prime.dart.expect
index 2dcdcb8..839a730 100644
--- a/pkg/vm/testcases/transformations/type_flow/transformer/bench_is_prime.dart.expect
+++ b/pkg/vm/testcases/transformations/type_flow/transformer/bench_is_prime.dart.expect
@@ -6,7 +6,7 @@
 [@vm.unboxing-info.metadata=(i)->b]static method isPrime([@vm.inferred-type.metadata=int] dynamic n) → core::bool* {
   if(_in::unsafeCast<core::bool*>([@vm.direct-call.metadata=_IntegerImplementation::<] [@vm.inferred-type.metadata=dart.core::bool] n.<(2)))
     return false;
-  for (core::int* i = 2; [@vm.direct-call.metadata=_IntegerImplementation::<=] [@vm.inferred-type.metadata=dart.core::bool (skip check)] [@vm.direct-call.metadata=_IntegerImplementation::*] [@vm.inferred-type.metadata=int (skip check)] i.{core::num::*}(i).{core::num::<=}(_in::unsafeCast<core::num*>(n)); i = [@vm.direct-call.metadata=_IntegerImplementation::+] [@vm.inferred-type.metadata=int (skip check)] i.{core::num::+}(1)) {
+  for (core::int* i = 2; [@vm.direct-call.metadata=_IntegerImplementation::<=] [@vm.inferred-type.metadata=dart.core::bool (skip check)] [@vm.direct-call.metadata=_IntegerImplementation::*] [@vm.inferred-type.metadata=int (skip check)] i.{core::num::*}(i).{core::num::<=}(_in::unsafeCast<core::num>(n)); i = [@vm.direct-call.metadata=_IntegerImplementation::+] [@vm.inferred-type.metadata=int (skip check)] i.{core::num::+}(1)) {
     if([@vm.direct-call.metadata=_IntegerImplementation::==] [@vm.inferred-type.metadata=dart.core::bool (skip check)] [@vm.direct-call.metadata=_IntegerImplementation::%] [@vm.inferred-type.metadata=int] n.%(i).{core::Object::==}(0))
       return false;
   }
@@ -30,7 +30,7 @@
   }
 }
 static method main(core::List<core::String*>* args) → dynamic {
-  core::Stopwatch* timer = let final core::Stopwatch* #t1 = new core::Stopwatch::•() in let final void #t2 = [@vm.direct-call.metadata=Stopwatch::start] [@vm.inferred-type.metadata=!? (skip check)] #t1.{core::Stopwatch::start}() in #t1;
+  core::Stopwatch* timer = let final core::Stopwatch #t1 = new core::Stopwatch::•() in let final void #t2 = [@vm.direct-call.metadata=Stopwatch::start] [@vm.inferred-type.metadata=!? (skip check)] #t1.{core::Stopwatch::start}() in #t1;
   for (core::int* i = 0; [@vm.direct-call.metadata=_IntegerImplementation::<] [@vm.inferred-type.metadata=dart.core::bool (skip check)] i.{core::num::<}(100); i = [@vm.direct-call.metadata=_IntegerImplementation::+] [@vm.inferred-type.metadata=int (skip check)] i.{core::num::+}(1)) {
     self::run();
   }
diff --git a/pkg/vm/testcases/transformations/type_flow/transformer/bench_vector.dart.expect b/pkg/vm/testcases/transformations/type_flow/transformer/bench_vector.dart.expect
index e6599fe..e934ac4 100644
--- a/pkg/vm/testcases/transformations/type_flow/transformer/bench_vector.dart.expect
+++ b/pkg/vm/testcases/transformations/type_flow/transformer/bench_vector.dart.expect
@@ -27,7 +27,7 @@
 [@vm.inferred-type.metadata=#lib::_Vector?]static field self::_Vector* v = new self::_Vector::•(10);
 [@vm.inferred-type.metadata=dart.core::_Double?]static field core::double* x = 0.0;
 static method main(core::List<core::String*>* args) → dynamic {
-  core::Stopwatch* timer = let final core::Stopwatch* #t3 = new core::Stopwatch::•() in let final void #t4 = [@vm.direct-call.metadata=Stopwatch::start] [@vm.inferred-type.metadata=!? (skip check)] #t3.{core::Stopwatch::start}() in #t3;
+  core::Stopwatch* timer = let final core::Stopwatch #t3 = new core::Stopwatch::•() in let final void #t4 = [@vm.direct-call.metadata=Stopwatch::start] [@vm.inferred-type.metadata=!? (skip check)] #t3.{core::Stopwatch::start}() in #t3;
   for (core::int* i = 0; [@vm.direct-call.metadata=_IntegerImplementation::<] [@vm.inferred-type.metadata=dart.core::bool (skip check)] i.{core::num::<}(100000000); i = [@vm.direct-call.metadata=_IntegerImplementation::+] [@vm.inferred-type.metadata=int (skip check)] i.{core::num::+}(1)) {
     self::x = [@vm.direct-call.metadata=_Double::+??] [@vm.inferred-type.metadata=dart.core::_Double (skip check)] [@vm.inferred-type.metadata=dart.core::_Double?] self::x.{core::double::+}([@vm.direct-call.metadata=_Vector::*??] [@vm.inferred-type.metadata=dart.core::_Double (skip check)] [@vm.inferred-type.metadata=#lib::_Vector?] self::v.{self::_Vector::*}([@vm.inferred-type.metadata=#lib::_Vector?] self::v));
   }
diff --git a/pkg/vm/testcases/transformations/type_flow/transformer/invalidation_cycle.dart.expect b/pkg/vm/testcases/transformations/type_flow/transformer/invalidation_cycle.dart.expect
index 31fb99c..4b9e704 100644
--- a/pkg/vm/testcases/transformations/type_flow/transformer/invalidation_cycle.dart.expect
+++ b/pkg/vm/testcases/transformations/type_flow/transformer/invalidation_cycle.dart.expect
@@ -22,6 +22,7 @@
     : super core::Object::•()
     ;
 [@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasNonThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:1,getterSelectorId:2]  abstract method foobar((dynamic) →* void onData, {core::Function* onError = #C1}) → self::StreamSubscription*;
+[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasNonThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:3]  abstract member-signature operator ==(dynamic other) → core::bool*;
 }
 abstract class _StreamImpl extends self::Stream {
   synthetic constructor •() → self::_StreamImpl*
@@ -30,7 +31,7 @@
 [@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:1,getterSelectorId:2]  method foobar([@vm.inferred-type.metadata=dart.core::Null? (value: null)] (dynamic) →* void onData, {[@vm.inferred-type.metadata=dart.core::Null? (value: null)] core::Function* onError = #C1}) → self::StreamSubscription* {
     return [@vm.inferred-type.metadata=! (skip check)] this.{self::_StreamImpl::_createSubscription}();
   }
-[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasNonThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:3,getterSelectorId:4]  method _createSubscription() → self::StreamSubscription* {
+[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasNonThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:4,getterSelectorId:5]  method _createSubscription() → self::StreamSubscription* {
     return new self::_BufferingStreamSubscription::•();
   }
 }
@@ -38,7 +39,7 @@
   synthetic constructor •() → self::_ControllerStream*
     : super self::_StreamImpl::•()
     ;
-[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasNonThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:3,getterSelectorId:4]  method _createSubscription() → self::StreamSubscription* {
+[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasNonThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:4,getterSelectorId:5]  method _createSubscription() → self::StreamSubscription* {
     return new self::_BroadcastSubscription::•();
   }
 }
@@ -48,7 +49,7 @@
     ;
 }
 abstract class StreamView extends self::Stream {
-[@vm.inferred-type.metadata=!] [@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasNonThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:5,getterSelectorId:6]  final field self::Stream* _stream;
+[@vm.inferred-type.metadata=!] [@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasNonThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:6,getterSelectorId:7]  final field self::Stream* _stream;
   constructor •([@vm.inferred-type.metadata=!] self::Stream* stream) → self::StreamView*
     : self::StreamView::_stream = stream, super self::Stream::•()
     ;
@@ -60,16 +61,16 @@
   constructor •([@vm.inferred-type.metadata=!] self::Stream* stream) → self::ByteStream*
     : super self::StreamView::•(stream)
     ;
-[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:7,getterSelectorId:8]  method super_foobar1([@vm.inferred-type.metadata=dart.core::Null? (value: null)] (dynamic) →* void onData) → dynamic {
+[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:8,getterSelectorId:9]  method super_foobar1([@vm.inferred-type.metadata=dart.core::Null? (value: null)] (dynamic) →* void onData) → dynamic {
     super.{self::StreamView::foobar}(onData);
   }
-[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:9,getterSelectorId:10]  method super_foobar2([@vm.inferred-type.metadata=dart.core::Null? (value: null)] (dynamic) →* void onData) → dynamic {
+[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:10,getterSelectorId:11]  method super_foobar2([@vm.inferred-type.metadata=dart.core::Null? (value: null)] (dynamic) →* void onData) → dynamic {
     super.{self::StreamView::foobar}(onData);
   }
-[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:11,getterSelectorId:12]  method super_foobar3({[@vm.inferred-type.metadata=dart.core::Null? (value: null)] (dynamic) →* void onData = #C1, [@vm.inferred-type.metadata=dart.core::Null? (value: null)] core::Function* onError = #C1}) → dynamic {
+[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:12,getterSelectorId:13]  method super_foobar3({[@vm.inferred-type.metadata=dart.core::Null? (value: null)] (dynamic) →* void onData = #C1, [@vm.inferred-type.metadata=dart.core::Null? (value: null)] core::Function* onError = #C1}) → dynamic {
     super.{self::StreamView::foobar}(onData, onError: onError);
   }
-[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasNonThisUses:false,hasTearOffUses:false,getterSelectorId:13]  get super_stream() → self::Stream*
+[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasNonThisUses:false,hasTearOffUses:false,getterSelectorId:14]  get super_stream() → self::Stream*
     return [@vm.inferred-type.metadata=!] super.{self::StreamView::_stream};
 }
 class _HandleErrorStream extends self::Stream {
@@ -100,7 +101,7 @@
   self::ByteStream* x = new self::ByteStream::•(new self::_ControllerStream::•());
   self::Stream* y = [@vm.direct-call.metadata=ByteStream::super_stream] [@vm.inferred-type.metadata=!] x.{self::ByteStream::super_stream};
   self::Stream* z = [@vm.direct-call.metadata=StreamView::_stream] [@vm.inferred-type.metadata=!] x.{self::StreamView::_stream};
-  if([@vm.direct-call.metadata=Object::==] [@vm.inferred-type.metadata=dart.core::bool (skip check) (receiver not int)] y.{core::Object::==}(z)) {
+  if([@vm.direct-call.metadata=Object::==] [@vm.inferred-type.metadata=dart.core::bool (skip check)] y.{self::Stream::==}(z)) {
     [@vm.direct-call.metadata=ByteStream::super_foobar2] [@vm.inferred-type.metadata=!? (skip check)] x.{self::ByteStream::super_foobar2}(onData);
   }
 }
diff --git a/pkg/vm/testcases/transformations/type_flow/transformer/null_check_elimination_nnbd.dart.expect b/pkg/vm/testcases/transformations/type_flow/transformer/null_check_elimination_nnbd.dart.expect
index c69020d9..4780f9d 100644
--- a/pkg/vm/testcases/transformations/type_flow/transformer/null_check_elimination_nnbd.dart.expect
+++ b/pkg/vm/testcases/transformations/type_flow/transformer/null_check_elimination_nnbd.dart.expect
@@ -21,7 +21,7 @@
 static method main() → void {
   final core::List<self::A> list = <self::A>[let core::String #arg1 = "foo" in let core::Null? #arg2 = null in let core::Null? #arg3 = null in new self::A::•(#arg1, #arg2, alwaysNull: #arg3), self::staticField];
   {
-    core::Iterator<self::A*> :sync-for-iterator = [@vm.direct-call.metadata=_GrowableList::iterator] [@vm.inferred-type.metadata=dart._internal::ListIterator<InterfaceType(A*)>] list.{core::Iterable::iterator};
+    core::Iterator<self::A> :sync-for-iterator = [@vm.direct-call.metadata=_GrowableList::iterator] [@vm.inferred-type.metadata=dart._internal::ListIterator<InterfaceType(A)>] list.{core::Iterable::iterator};
     for (; [@vm.direct-call.metadata=ListIterator::moveNext] [@vm.inferred-type.metadata=dart.core::bool (skip check)] :sync-for-iterator.{core::Iterator::moveNext}(); ) {
       self::A a = [@vm.direct-call.metadata=ListIterator::current] [@vm.inferred-type.metadata=#lib::A?] :sync-for-iterator.{core::Iterator::current};
       {
diff --git a/pkg/vm/testcases/transformations/type_flow/transformer/regress_flutter16182.dart.expect b/pkg/vm/testcases/transformations/type_flow/transformer/regress_flutter16182.dart.expect
index 00c3bcf..b39b249 100644
--- a/pkg/vm/testcases/transformations/type_flow/transformer/regress_flutter16182.dart.expect
+++ b/pkg/vm/testcases/transformations/type_flow/transformer/regress_flutter16182.dart.expect
@@ -19,7 +19,7 @@
   synthetic constructor •() → self::A1*
     : super core::Object::•()
     ;
-[@vm.procedure-attributes.metadata=getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:3,getterSelectorId:4]  method call([dynamic a1 = #C1, dynamic a2 = #C1, [@vm.inferred-type.metadata=int?] dynamic a3 = #C1, [@vm.inferred-type.metadata=dart.core::_Smi?] dynamic a4 = #C1, [@vm.inferred-type.metadata=#lib::T1?] dynamic a5 = #C1]) → void {
+[@vm.procedure-attributes.metadata=getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:3,getterSelectorId:4]  method call([dynamic a1 = #C1, dynamic a2 = #C1, dynamic a3 = #C1, [@vm.inferred-type.metadata=dart.core::_Smi?] dynamic a4 = #C1, [@vm.inferred-type.metadata=#lib::T1?] dynamic a5 = #C1]) → void {
     [@vm.direct-call.metadata=A1::foo] [@vm.inferred-type.metadata=!? (skip check)] this.{self::A1::foo} = _in::unsafeCast<self::T1*>(a5);
   }
 }
@@ -42,7 +42,7 @@
   synthetic constructor •() → self::A2*
     : super core::Object::•()
     ;
-[@vm.procedure-attributes.metadata=getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:3,getterSelectorId:4]  method call([dynamic a1 = #C1, dynamic a2 = #C1, [@vm.inferred-type.metadata=int?] dynamic a3 = #C1, [@vm.inferred-type.metadata=dart.core::_Smi?] dynamic a4 = #C1, [@vm.inferred-type.metadata=dart.core::_Smi?] dynamic a5 = #C1, [@vm.inferred-type.metadata=#lib::T2?] dynamic a6 = #C1]) → void {
+[@vm.procedure-attributes.metadata=getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:3,getterSelectorId:4]  method call([dynamic a1 = #C1, dynamic a2 = #C1, dynamic a3 = #C1, [@vm.inferred-type.metadata=dart.core::_Smi?] dynamic a4 = #C1, [@vm.inferred-type.metadata=dart.core::_Smi?] dynamic a5 = #C1, [@vm.inferred-type.metadata=#lib::T2?] dynamic a6 = #C1]) → void {
     [@vm.direct-call.metadata=A2::foo] [@vm.inferred-type.metadata=!? (skip check)] this.{self::A2::foo} = a6;
   }
 }
@@ -75,7 +75,7 @@
   synthetic constructor •() → self::A3*
     : super core::Object::•()
     ;
-[@vm.procedure-attributes.metadata=getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:3,getterSelectorId:4]  method call([dynamic a1 = #C1, dynamic a2 = #C1, [@vm.inferred-type.metadata=int?] dynamic a3 = #C1, [@vm.inferred-type.metadata=dart.core::_Smi?] dynamic a4 = #C1, [@vm.inferred-type.metadata=dart.core::_Smi?] dynamic a5 = #C1, [@vm.inferred-type.metadata=dart.core::_Smi?] dynamic a6 = #C1, [@vm.inferred-type.metadata=#lib::T3?] dynamic a7 = #C1]) → void {
+[@vm.procedure-attributes.metadata=getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:3,getterSelectorId:4]  method call([dynamic a1 = #C1, dynamic a2 = #C1, dynamic a3 = #C1, [@vm.inferred-type.metadata=dart.core::_Smi?] dynamic a4 = #C1, [@vm.inferred-type.metadata=dart.core::_Smi?] dynamic a5 = #C1, [@vm.inferred-type.metadata=dart.core::_Smi?] dynamic a6 = #C1, [@vm.inferred-type.metadata=#lib::T3?] dynamic a7 = #C1]) → void {
     [@vm.direct-call.metadata=A3::foo] [@vm.inferred-type.metadata=!? (skip check)] this.{self::A3::foo} = a7;
   }
 }
@@ -98,7 +98,7 @@
   synthetic constructor •() → self::A4*
     : super core::Object::•()
     ;
-[@vm.procedure-attributes.metadata=getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:3,getterSelectorId:4]  method call([dynamic a1 = #C1, dynamic a2 = #C1, [@vm.inferred-type.metadata=int?] dynamic a3 = #C1, [@vm.inferred-type.metadata=dart.core::_Smi?] dynamic a4 = #C1, [@vm.inferred-type.metadata=dart.core::_Smi?] dynamic a5 = #C1, [@vm.inferred-type.metadata=dart.core::_Smi?] dynamic a6 = #C1, [@vm.inferred-type.metadata=dart.core::_Smi?] dynamic a7 = #C1, [@vm.inferred-type.metadata=#lib::T4?] dynamic a8 = #C1]) → void {
+[@vm.procedure-attributes.metadata=getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:3,getterSelectorId:4]  method call([dynamic a1 = #C1, dynamic a2 = #C1, dynamic a3 = #C1, [@vm.inferred-type.metadata=dart.core::_Smi?] dynamic a4 = #C1, [@vm.inferred-type.metadata=dart.core::_Smi?] dynamic a5 = #C1, [@vm.inferred-type.metadata=dart.core::_Smi?] dynamic a6 = #C1, [@vm.inferred-type.metadata=dart.core::_Smi?] dynamic a7 = #C1, [@vm.inferred-type.metadata=#lib::T4?] dynamic a8 = #C1]) → void {
     [@vm.direct-call.metadata=A4::foo] [@vm.inferred-type.metadata=!? (skip check)] this.{self::A4::foo} = a8;
   }
 }
diff --git a/pkg/vm/testcases/transformations/type_flow/transformer/tear_off_dynamic_method.dart.expect b/pkg/vm/testcases/transformations/type_flow/transformer/tear_off_dynamic_method.dart.expect
index e232d6b..1eaa0f9 100644
--- a/pkg/vm/testcases/transformations/type_flow/transformer/tear_off_dynamic_method.dart.expect
+++ b/pkg/vm/testcases/transformations/type_flow/transformer/tear_off_dynamic_method.dart.expect
@@ -12,7 +12,7 @@
     : super self::A::•()
     ;
 [@vm.procedure-attributes.metadata=hasThisUses:false,methodOrSetterSelectorId:1,getterSelectorId:2]  method foo() → core::int*
-    return [@vm.direct-call.metadata=_IntegerImplementation::+] [@vm.inferred-type.metadata=! (skip check)] 1.{core::num::+}([@vm.direct-call.metadata=B::foo] [@vm.inferred-type.metadata=!? (receiver not int)] [@vm.inferred-type.metadata=#lib::B] self::knownResult().foo() as{TypeError,ForDynamic} core::num*) as{TypeError} core::int*;
+    return [@vm.direct-call.metadata=_IntegerImplementation::+] [@vm.inferred-type.metadata=! (skip check)] 1.{core::num::+}([@vm.direct-call.metadata=B::foo] [@vm.inferred-type.metadata=!? (receiver not int)] [@vm.inferred-type.metadata=#lib::B] self::knownResult().foo() as{TypeError,ForDynamic} core::num) as{TypeError} core::int*;
 }
 class TearOffDynamicMethod extends core::Object {
 [@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasNonThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:3,getterSelectorId:4]  field dynamic bazz;
diff --git a/pkg/vm/testcases/transformations/type_flow/transformer/tear_off_interface_method.dart.expect b/pkg/vm/testcases/transformations/type_flow/transformer/tear_off_interface_method.dart.expect
index 868f6f8..66ded4c 100644
--- a/pkg/vm/testcases/transformations/type_flow/transformer/tear_off_interface_method.dart.expect
+++ b/pkg/vm/testcases/transformations/type_flow/transformer/tear_off_interface_method.dart.expect
@@ -14,7 +14,7 @@
     : super self::A::•()
     ;
 [@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasNonThisUses:false,methodOrSetterSelectorId:1,getterSelectorId:2]  method foo() → core::int*
-    return _in::unsafeCast<core::int*>([@vm.direct-call.metadata=_IntegerImplementation::+] [@vm.inferred-type.metadata=int (skip check)] 1.{core::num::+}(_in::unsafeCast<core::num*>([@vm.direct-call.metadata=B::bar] [@vm.inferred-type.metadata=dart.core::_Smi (value: 3) (receiver not int)] [@vm.inferred-type.metadata=#lib::B] self::knownResult().bar())));
+    return _in::unsafeCast<core::int*>([@vm.direct-call.metadata=_IntegerImplementation::+] [@vm.inferred-type.metadata=int (skip check)] 1.{core::num::+}(_in::unsafeCast<core::num>([@vm.direct-call.metadata=B::bar] [@vm.inferred-type.metadata=dart.core::_Smi (value: 3) (receiver not int)] [@vm.inferred-type.metadata=#lib::B] self::knownResult().bar())));
 [@vm.procedure-attributes.metadata=getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:3,getterSelectorId:4]  method bar() → core::int*
     return 3;
 }
diff --git a/pkg/vm/testcases/transformations/type_flow/transformer/tear_off_super_method.dart.expect b/pkg/vm/testcases/transformations/type_flow/transformer/tear_off_super_method.dart.expect
index 894ccaa..475df5a 100644
--- a/pkg/vm/testcases/transformations/type_flow/transformer/tear_off_super_method.dart.expect
+++ b/pkg/vm/testcases/transformations/type_flow/transformer/tear_off_super_method.dart.expect
@@ -14,14 +14,14 @@
     : super self::A::•()
     ;
 [@vm.procedure-attributes.metadata=getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:1,getterSelectorId:2]  method foo() → core::int*
-    return _in::unsafeCast<core::int*>([@vm.direct-call.metadata=_IntegerImplementation::+] [@vm.inferred-type.metadata=int (skip check)] 1.{core::num::+}(_in::unsafeCast<core::num*>([@vm.direct-call.metadata=B::foo] [@vm.inferred-type.metadata=int? (receiver not int)] [@vm.inferred-type.metadata=#lib::B] self::knownResult().foo())));
+    return _in::unsafeCast<core::int*>([@vm.direct-call.metadata=_IntegerImplementation::+] [@vm.inferred-type.metadata=int (skip check)] 1.{core::num::+}(_in::unsafeCast<core::num>([@vm.direct-call.metadata=B::foo] [@vm.inferred-type.metadata=int? (receiver not int)] [@vm.inferred-type.metadata=#lib::B] self::knownResult().foo())));
 }
 abstract class Base extends core::Object {
   synthetic constructor •() → self::Base*
     : super core::Object::•()
     ;
 [@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasNonThisUses:false,methodOrSetterSelectorId:1,getterSelectorId:2]  method foo() → core::int*
-    return _in::unsafeCast<core::int*>([@vm.direct-call.metadata=_IntegerImplementation::+] [@vm.inferred-type.metadata=int (skip check)] 3.{core::num::+}(_in::unsafeCast<core::num*>([@vm.direct-call.metadata=B::foo] [@vm.inferred-type.metadata=int? (receiver not int)] [@vm.inferred-type.metadata=#lib::B] self::knownResult().foo())));
+    return _in::unsafeCast<core::int*>([@vm.direct-call.metadata=_IntegerImplementation::+] [@vm.inferred-type.metadata=int (skip check)] 3.{core::num::+}(_in::unsafeCast<core::num>([@vm.direct-call.metadata=B::foo] [@vm.inferred-type.metadata=int? (receiver not int)] [@vm.inferred-type.metadata=#lib::B] self::knownResult().foo())));
 [@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasNonThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:3,getterSelectorId:4]  method doCall(dynamic x) → core::int*
     return [@vm.call-site-attributes.metadata=receiverType:DynamicType(dynamic)] x.call() as{TypeError,ForDynamic} core::int*;
 }
diff --git a/pkg/vm/testcases/transformations/unreachable_code_elimination/uce_testcases.dart.expect b/pkg/vm/testcases/transformations/unreachable_code_elimination/uce_testcases.dart.expect
index 04ae51a..d839d62 100644
--- a/pkg/vm/testcases/transformations/unreachable_code_elimination/uce_testcases.dart.expect
+++ b/pkg/vm/testcases/transformations/unreachable_code_elimination/uce_testcases.dart.expect
@@ -5,6 +5,16 @@
 class TestAssertInitializer extends core::Object {
   constructor •() → self::TestAssertInitializer*
     : super core::Object::•() {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 static const field core::bool* constTrue = #C1;
 static const field core::bool* constFalse = #C2;
diff --git a/pkg/vm_service/CHANGELOG.md b/pkg/vm_service/CHANGELOG.md
index 9a99196..3d045e8 100644
--- a/pkg/vm_service/CHANGELOG.md
+++ b/pkg/vm_service/CHANGELOG.md
@@ -1,6 +1,6 @@
 # Changelog
 
-## next
+## 4.0.3 
 - Update to version `3.33.0` of the spec.
 - Add static error code constants to `RPCError`.
 - Update the toString() method or `RPCError` and add a toMap() method.
diff --git a/pkg/vm_service/pubspec.yaml b/pkg/vm_service/pubspec.yaml
index 45a7871..a59b68f 100644
--- a/pkg/vm_service/pubspec.yaml
+++ b/pkg/vm_service/pubspec.yaml
@@ -2,7 +2,7 @@
 description: >-
   A library to communicate with a service implementing the Dart VM
   service protocol.
-version: 4.0.2
+version: 4.0.3
 
 homepage: https://github.com/dart-lang/sdk/tree/master/pkg/vm_service
 
diff --git a/runtime/BUILD.gn b/runtime/BUILD.gn
index c7d66dc..b7998c8 100644
--- a/runtime/BUILD.gn
+++ b/runtime/BUILD.gn
@@ -140,10 +140,6 @@
     }
   }
 
-  if (use_nnbd) {
-    defines += [ "DART_BUILT_WITH_NNBD_FLAG" ]
-  }
-
   if (!is_win) {
     cflags = [
       "-Werror",
@@ -153,7 +149,6 @@
       "-Wno-unused-private-field",
       "-Wnon-virtual-dtor",
       "-Wvla",
-      "-Wno-conversion-null",
       "-Woverloaded-virtual",
       "-Wno-comments",  # Conflicts with clang-format.
       "-g3",
diff --git a/runtime/bin/BUILD.gn b/runtime/bin/BUILD.gn
index abf3f53..55668ad 100644
--- a/runtime/bin/BUILD.gn
+++ b/runtime/bin/BUILD.gn
@@ -529,7 +529,7 @@
     isolate_snapshot_instructions,
   ]
   args = []
-  if (use_nnbd) {
+  if (!dont_use_nnbd) {
     args += [
       "--enable-experiment=non-nullable",
       "--null-safety",
diff --git a/runtime/bin/dartutils.h b/runtime/bin/dartutils.h
index 5a405f3..23122ad 100644
--- a/runtime/bin/dartutils.h
+++ b/runtime/bin/dartutils.h
@@ -56,6 +56,7 @@
   }
 
   int count() const { return count_; }
+  int max_count() const { return max_count_; }
   const char** arguments() const { return arguments_; }
 
   const char* GetArgument(int index) const {
@@ -70,6 +71,15 @@
     }
   }
 
+  void AddArguments(const char** argv, int argc) {
+    if (count_ + argc >= max_count_) {
+      abort();  // We should never get into this situation.
+    }
+    for (int i = 0; i < argc; ++i) {
+      arguments_[count_++] = argv[i];
+    }
+  }
+
   void operator delete(void* pointer) { abort(); }
 
  private:
diff --git a/runtime/bin/directory_win.cc b/runtime/bin/directory_win.cc
index 363613f..726ecd1 100644
--- a/runtime/bin/directory_win.cc
+++ b/runtime/bin/directory_win.cc
@@ -11,11 +11,13 @@
 #include <sys/stat.h>  // NOLINT
 
 #include "bin/dartutils.h"
+#include "bin/crypto.h"
 #include "bin/file.h"
 #include "bin/namespace.h"
 #include "bin/utils.h"
 #include "bin/utils_win.h"
 #include "platform/syslog.h"
+#include "platform/utils.h"
 
 #undef DeleteFile
 
@@ -384,12 +386,8 @@
   return path.AsScopedString();
 }
 
-const char* Directory::CreateTemp(Namespace* namespc, const char* prefix) {
-  // Returns a new, unused directory name, adding characters to the
-  // end of prefix.
-  // Creates this directory, with a default security
-  // descriptor inherited from its parent directory.
-  // The return value is Dart_ScopeAllocated.
+// Creates a new temporary directory with a UUID as suffix.
+static const char* CreateTempFromUUID(const char* prefix) {
   PathBuffer path;
   Utf8ToWideScope system_prefix(prefix);
   if (!path.AddW(system_prefix.wide())) {
@@ -423,6 +421,57 @@
   return path.AsScopedString();
 }
 
+// Creates a new, unused directory, adding characters to the end of prefix, and
+// returns the directory's name.
+//
+// Creates this directory, with a default security descriptor inherited from its
+// parent directory. The return value is Dart_ScopeAllocated.
+//
+// First, attempts appending a suffix created from a random uint32_t. If that
+// name is already taken, falls back on using a UUID for the suffix.
+//
+// Note: More attempts at finding an available short suffix would more reliably
+// avoid a uuid suffix. We choose one attempt here because it is simpler, and
+// to have a small bound on the number of calls to CreateDirectoryW().
+const char* Directory::CreateTemp(Namespace* namespc, const char* prefix) {
+  PathBuffer path;
+  Utf8ToWideScope system_prefix(prefix);
+  if (!path.AddW(system_prefix.wide())) {
+    return NULL;
+  }
+
+  // Adding 8 hex digits.
+  if (path.length() > MAX_LONG_PATH - 8) {
+    // No fallback, there won't be enough room for the UUID, either.
+    return NULL;
+  }
+
+  // First try a short suffix using the rng, then if that fails fall back on
+  // a uuid.
+  uint32_t suffix_bytes = 0;
+  const int kSuffixSize = sizeof(suffix_bytes);
+  if (!Crypto::GetRandomBytes(
+      kSuffixSize, reinterpret_cast<uint8_t*>(&suffix_bytes))) {
+    // Getting random bytes failed, maybe the UUID will work?
+    return CreateTempFromUUID(prefix);
+  }
+
+  // Two digits per byte plus null.
+  char suffix[kSuffixSize * 2 + 1];
+  Utils::SNPrint(suffix, sizeof(suffix), "%x", suffix_bytes);
+  if (!path.Add(suffix)) {
+    // Adding to the path failed, maybe because of low-memory. Don't fall back.
+    return NULL;
+  }
+
+  if (!CreateDirectoryW(path.AsStringW(), NULL)) {
+    // Creation failed, possibly because an entry with the name already exists.
+    // Fall back to using the UUID suffix.
+    return CreateTempFromUUID(prefix);
+  }
+  return path.AsScopedString();
+}
+
 bool Directory::Delete(Namespace* namespc,
                        const char* dir_name,
                        bool recursive) {
diff --git a/runtime/bin/file_android.cc b/runtime/bin/file_android.cc
index 51a7599..15352c0 100644
--- a/runtime/bin/file_android.cc
+++ b/runtime/bin/file_android.cc
@@ -484,7 +484,7 @@
 static void MillisecondsToTimespec(int64_t millis, struct timespec* t) {
   ASSERT(t != NULL);
   t->tv_sec = millis / kMillisecondsPerSecond;
-  t->tv_nsec = (millis - (t->tv_sec * kMillisecondsPerSecond)) * 1000L;
+  t->tv_nsec = (millis % kMillisecondsPerSecond) * 1000L;
 }
 
 void File::Stat(Namespace* namespc, const char* name, int64_t* data) {
diff --git a/runtime/bin/file_fuchsia.cc b/runtime/bin/file_fuchsia.cc
index 354dd65..39d667b 100644
--- a/runtime/bin/file_fuchsia.cc
+++ b/runtime/bin/file_fuchsia.cc
@@ -480,7 +480,7 @@
 static void MillisecondsToTimespec(int64_t millis, struct timespec* t) {
   ASSERT(t != NULL);
   t->tv_sec = millis / kMillisecondsPerSecond;
-  t->tv_nsec = (millis - (t->tv_sec * kMillisecondsPerSecond)) * 1000L;
+  t->tv_nsec = (millis % kMillisecondsPerSecond) * 1000L;
 }
 
 void File::Stat(Namespace* namespc, const char* name, int64_t* data) {
diff --git a/runtime/bin/file_linux.cc b/runtime/bin/file_linux.cc
index 16c1770..dab296d 100644
--- a/runtime/bin/file_linux.cc
+++ b/runtime/bin/file_linux.cc
@@ -489,7 +489,7 @@
 static void MillisecondsToTimespec(int64_t millis, struct timespec* t) {
   ASSERT(t != NULL);
   t->tv_sec = millis / kMillisecondsPerSecond;
-  t->tv_nsec = (millis - (t->tv_sec * kMillisecondsPerSecond)) * 1000L;
+  t->tv_nsec = (millis % kMillisecondsPerSecond) * 1000L;
 }
 
 void File::Stat(Namespace* namespc, const char* name, int64_t* data) {
diff --git a/runtime/bin/gen_snapshot.cc b/runtime/bin/gen_snapshot.cc
index eb40122..c6685da 100644
--- a/runtime/bin/gen_snapshot.cc
+++ b/runtime/bin/gen_snapshot.cc
@@ -659,7 +659,7 @@
 
 static int CreateIsolateAndSnapshot(const CommandLineOptions& inputs) {
   uint8_t* kernel_buffer = NULL;
-  intptr_t kernel_buffer_size = NULL;
+  intptr_t kernel_buffer_size = 0;
   ReadFile(inputs.GetArgument(0), &kernel_buffer, &kernel_buffer_size);
 
   Dart_IsolateFlags isolate_flags;
diff --git a/runtime/bin/hashmap_test.cc b/runtime/bin/hashmap_test.cc
index 307d21f..c30e87c 100644
--- a/runtime/bin/hashmap_test.cc
+++ b/runtime/bin/hashmap_test.cc
@@ -123,12 +123,12 @@
   EXPECT_EQ(0u, set.occupancy());
 
   // Insert a long series of values.
-  const int start = 453;
-  const int factor = 13;
-  const int offset = 7;
+  const uint32_t start = 453;
+  const uint32_t factor = 13;
+  const uint32_t offset = 7;
   const uint32_t n = size;
 
-  int x = start;
+  uint32_t x = start;
   for (uint32_t i = 0; i < n; i++) {
     EXPECT_EQ(i, set.occupancy());
     set.Insert(x);
diff --git a/runtime/bin/main_options.cc b/runtime/bin/main_options.cc
index 0f04e7d..7dd360d 100644
--- a/runtime/bin/main_options.cc
+++ b/runtime/bin/main_options.cc
@@ -393,6 +393,8 @@
   // Start the rest after the executable name.
   int i = 1;
 
+  CommandLineOptions temp_vm_options(vm_options->max_count());
+
   // Parse out the vm options.
   while (i < argc) {
     if (OptionProcessor::TryProcess(argv[i], vm_options)) {
@@ -417,7 +419,7 @@
                   0)) {
         *verbose_debug_seen = true;
       }
-      vm_options->AddArgument(argv[i]);
+      temp_vm_options.AddArgument(argv[i]);
       i++;
     }
   }
@@ -427,7 +429,7 @@
 #endif  // !defined(DART_PRECOMPILED_RUNTIME)
   if (Options::deterministic()) {
     // Both an embedder and VM flag.
-    vm_options->AddArgument("--deterministic");
+    temp_vm_options.AddArgument("--deterministic");
   }
 
   Socket::set_short_socket_read(Options::short_socket_read());
@@ -440,14 +442,18 @@
   // The arguments to the VM are at positions 1 through i-1 in argv.
   Platform::SetExecutableArguments(i, argv);
 
+  bool is_script = false;
+  int script_or_cmd_index = -1;
   // Get the script name.
   if (i < argc) {
+    // If the script name is a valid file or a URL, we'll run the script directly.
+    // Otherwise, this might be a DartDev command and we need to try to
+    // find the DartDev snapshot so we can forward the command and its arguments.
+    script_or_cmd_index = i;
     if (Options::disable_dart_dev() ||
         !DartDevUtils::ShouldParseCommand(argv[i])) {
-      // If the script name isn't a valid file or a URL, this might be a DartDev
-      // command. Try to find the DartDev snapshot so we can forward the command
-      // and its arguments.
       *script_name = strdup(argv[i]);
+      is_script = true;
       i++;
     } else if (!DartDevUtils::TryResolveDartDevSnapshotPath(script_name)) {
       Syslog::PrintErr(
@@ -466,6 +472,29 @@
     return -1;
   }
 
+  if (Options::disable_dart_dev() || is_script) {
+    // Only populate the VM options if we're not running with dartdev.
+    const char** vm_argv = temp_vm_options.arguments();
+    int vm_argc = temp_vm_options.count();
+    vm_options->AddArguments(vm_argv, vm_argc);
+  } else if (i > 1) {
+    // If we're running with DartDev, we're going to ignore the VM options for
+    // this VM instance and print a warning.
+    Syslog::PrintErr(
+        "Warning: The following flags were passed as VM options and are being "
+        "ignored: ");
+    for (int j = 1; j < script_or_cmd_index; ++j) {
+      Syslog::PrintErr("%s", argv[j]);
+      if (j + 1 < script_or_cmd_index) {
+        Syslog::PrintErr(", ");
+      }
+    }
+    Syslog::PrintErr(
+        "\nThese flags should be passed after the dart command (e.g., 'dart "
+        "run --enable-asserts foo.dart' instead of 'dart --enable-asserts run "
+        "foo.dart').\n");
+  }
+
   // Parse out options to be passed to dart main.
   while (i < argc) {
     dart_options->AddArgument(argv[i]);
diff --git a/runtime/bin/process_test.cc b/runtime/bin/process_test.cc
index 3f4cd8f..f8fb361 100644
--- a/runtime/bin/process_test.cc
+++ b/runtime/bin/process_test.cc
@@ -6,6 +6,14 @@
 #include <stdlib.h>
 #include <string.h>
 
+#if defined(__GNUC__) || defined(__Clang__)
+__attribute__((no_sanitize("undefined")))
+#endif
+void Crash() {
+  int* segfault = NULL;
+  *segfault = 1;
+}
+
 /*
  * Run ./process_test <outstream> <echocount> <exitcode> <crash>
  * <outstream>: 0 = stdout, 1 = stderr, 2 = stdout and stderr
@@ -32,8 +40,7 @@
   int crash = atoi(argv[4]);
 
   if (crash == 1) {
-    int* segfault = NULL;
-    *segfault = 1;
+    Crash();
   }
 
   const int kLineSize = 128;
diff --git a/runtime/include/dart_api.h b/runtime/include/dart_api.h
index e5ad04f..f0951db 100644
--- a/runtime/include/dart_api.h
+++ b/runtime/include/dart_api.h
@@ -518,7 +518,7 @@
  * for each part.
  */
 
-#define DART_FLAGS_CURRENT_VERSION (0x0000000b)
+#define DART_FLAGS_CURRENT_VERSION (0x0000000c)
 
 typedef struct {
   int32_t version;
@@ -528,7 +528,6 @@
   bool obfuscate;
   Dart_QualifiedFunctionName* entry_points;
   bool load_vmservice_library;
-  bool unsafe_trust_strong_mode_types;
   bool copy_parent_code;
 } Dart_IsolateFlags;
 
@@ -844,6 +843,9 @@
  *
  * \return NULL if cleanup is successful. Returns an error message otherwise.
  *   The caller is responsible for freeing the error message.
+ *
+ * NOTE: This function must not be called on a thread that was created by the VM
+ * itself.
  */
 DART_EXPORT DART_WARN_UNUSED_RESULT char* Dart_Cleanup();
 
diff --git a/runtime/include/dart_tools_api.h b/runtime/include/dart_tools_api.h
index b4985bf..4c86a82 100644
--- a/runtime/include/dart_tools_api.h
+++ b/runtime/include/dart_tools_api.h
@@ -398,8 +398,8 @@
 /**
  * Return metrics gathered for the VM and individual isolates.
  *
- * NOTE: Metrics are not available in PRODUCT builds of Dart.
- * Calling the metric functions on a PRODUCT build might return invalid metrics.
+ * NOTE: Non-heap metrics are not available in PRODUCT builds of Dart.
+ * Calling the non-heap metric functions on a PRODUCT build might return invalid metrics.
  */
 DART_EXPORT int64_t Dart_VMIsolateCountMetric();  // Counter
 DART_EXPORT int64_t Dart_VMCurrentRSSMetric();    // Byte
diff --git a/runtime/lib/double.cc b/runtime/lib/double.cc
index 471e41b..61b76a3 100644
--- a/runtime/lib/double.cc
+++ b/runtime/lib/double.cc
@@ -89,8 +89,8 @@
   if (FLAG_trace_intrinsified_natives) {
     OS::PrintErr("Double_hashCode %f\n", val);
   }
-  if (val >= static_cast<double>(kMinInt64) &&
-      val <= static_cast<double>(kMaxInt64)) {
+  if ((val >= kMinInt64RepresentableAsDouble) &&
+      (val <= kMaxInt64RepresentableAsDouble)) {
     int64_t ival = static_cast<int64_t>(val);
     if (static_cast<double>(ival) == val) {
       return Integer::New(ival);
diff --git a/runtime/lib/isolate.cc b/runtime/lib/isolate.cc
index 7833f4a..fe943ae 100644
--- a/runtime/lib/isolate.cc
+++ b/runtime/lib/isolate.cc
@@ -263,8 +263,11 @@
 class SpawnIsolateTask : public ThreadPool::Task {
  public:
   SpawnIsolateTask(Isolate* parent_isolate,
-                   std::unique_ptr<IsolateSpawnState> state)
-      : parent_isolate_(parent_isolate), state_(std::move(state)) {
+                   std::unique_ptr<IsolateSpawnState> state,
+                   bool in_new_isolate_group)
+      : parent_isolate_(parent_isolate),
+        state_(std::move(state)),
+        in_new_isolate_group_(in_new_isolate_group) {
     parent_isolate->IncrementSpawnCount();
   }
 
@@ -299,7 +302,7 @@
     char* error = nullptr;
     Isolate* isolate = nullptr;
     if (!FLAG_enable_isolate_groups || group == nullptr ||
-        initialize_callback == nullptr) {
+        initialize_callback == nullptr || in_new_isolate_group_) {
       // Make a copy of the state's isolate flags and hand it to the callback.
       Dart_IsolateFlags api_flags = *(state_->isolate_flags());
       isolate = reinterpret_cast<Isolate*>((create_group_callback)(
@@ -377,6 +380,7 @@
 
   Isolate* parent_isolate_;
   std::unique_ptr<IsolateSpawnState> state_;
+  bool in_new_isolate_group_;
 
   DISALLOW_COPY_AND_ASSIGN(SpawnIsolateTask);
 };
@@ -390,7 +394,7 @@
   return result;
 }
 
-DEFINE_NATIVE_ENTRY(Isolate_spawnFunction, 0, 10) {
+DEFINE_NATIVE_ENTRY(Isolate_spawnFunction, 0, 11) {
   GET_NON_NULL_NATIVE_ARGUMENT(SendPort, port, arguments->NativeArgAt(0));
   GET_NON_NULL_NATIVE_ARGUMENT(String, script_uri, arguments->NativeArgAt(1));
   GET_NON_NULL_NATIVE_ARGUMENT(Instance, closure, arguments->NativeArgAt(2));
@@ -400,7 +404,8 @@
   GET_NATIVE_ARGUMENT(SendPort, onExit, arguments->NativeArgAt(6));
   GET_NATIVE_ARGUMENT(SendPort, onError, arguments->NativeArgAt(7));
   GET_NATIVE_ARGUMENT(String, packageConfig, arguments->NativeArgAt(8));
-  GET_NATIVE_ARGUMENT(String, debugName, arguments->NativeArgAt(9));
+  GET_NATIVE_ARGUMENT(Bool, newIsolateGroup, arguments->NativeArgAt(9));
+  GET_NATIVE_ARGUMENT(String, debugName, arguments->NativeArgAt(10));
 
   if (closure.IsClosure()) {
     Function& func = Function::Handle();
@@ -440,7 +445,9 @@
       // Since this is a call to Isolate.spawn, copy the parent isolate's code.
       state->isolate_flags()->copy_parent_code = true;
 
-      Dart::thread_pool()->Run<SpawnIsolateTask>(isolate, std::move(state));
+      const bool in_new_isolate_group = newIsolateGroup.value();
+      isolate->group()->thread_pool()->Run<SpawnIsolateTask>(
+          isolate, std::move(state), in_new_isolate_group);
       return Object::null();
     }
   }
@@ -554,7 +561,9 @@
   // Since this is a call to Isolate.spawnUri, don't copy the parent's code.
   state->isolate_flags()->copy_parent_code = false;
 
-  Dart::thread_pool()->Run<SpawnIsolateTask>(isolate, std::move(state));
+  const bool in_new_isolate_group = false;
+  isolate->group()->thread_pool()->Run<SpawnIsolateTask>(
+      isolate, std::move(state), in_new_isolate_group);
   return Object::null();
 }
 
diff --git a/runtime/lib/mirrors.cc b/runtime/lib/mirrors.cc
index b8a123e..9f2dfe5 100644
--- a/runtime/lib/mirrors.cc
+++ b/runtime/lib/mirrors.cc
@@ -54,14 +54,14 @@
   const Smi& invocation_type =
       Smi::Handle(Smi::New(InvocationMirror::EncodeType(level, kind)));
 
-  const Array& args = Array::Handle(Array::New(6));
+  const Array& args = Array::Handle(Array::New(7));
   args.SetAt(0, receiver);
   args.SetAt(1, function_name);
   args.SetAt(2, invocation_type);
-  // TODO(regis): Support invocation of generic functions with type arguments.
-  args.SetAt(3, Object::null_type_arguments());
-  args.SetAt(4, arguments);
-  args.SetAt(5, argument_names);
+  args.SetAt(3, Object::smi_zero());  // Type arguments length.
+  args.SetAt(4, Object::null_type_arguments());
+  args.SetAt(5, arguments);
+  args.SetAt(6, argument_names);
 
   const Library& libcore = Library::Handle(Library::CoreLibrary());
   const Class& NoSuchMethodError =
diff --git a/runtime/observatory/tests/service/breakpoint_non_debuggable_library_test.dart b/runtime/observatory/tests/service/breakpoint_non_debuggable_library_test.dart
index 0bc3c1f..ccc7895 100644
--- a/runtime/observatory/tests/service/breakpoint_non_debuggable_library_test.dart
+++ b/runtime/observatory/tests/service/breakpoint_non_debuggable_library_test.dart
@@ -11,9 +11,9 @@
 
 const String file = 'package:path/path.dart';
 // At join() function
-const int LINE_A = 259;
+const int LINE_A = 271;
 // At current getter function
-const int LINE_B = 84;
+const int LINE_B = 83;
 
 testMain() {
   print(join('test', 'test'));
diff --git a/runtime/observatory/tests/service/dds_log_history_size_gigantic_test.dart b/runtime/observatory/tests/service/dds_log_history_size_gigantic_test.dart
new file mode 100644
index 0000000..1bd6136
--- /dev/null
+++ b/runtime/observatory/tests/service/dds_log_history_size_gigantic_test.dart
@@ -0,0 +1,83 @@
+// Copyright (c) 2020, the Dart project authors.  Please see the AUTHORS file
+// 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.
+
+import 'dart:async';
+import 'dart:developer';
+
+import 'package:observatory/service_io.dart';
+import 'package:test/test.dart';
+import 'service_test_common.dart';
+import 'test_helper.dart';
+
+Future testMain() async {
+  // Log a total of 30 messages
+  for (int i = 1; i <= maxLogHistorySize + 10; ++i) {
+    log('All work and no play makes Ben a dull boy ($i)');
+  }
+  debugger();
+}
+
+const maxLogHistorySize = 100000;
+
+Future setLogHistorySize(Isolate isolate, int size) async {
+  return await isolate.invokeRpcNoUpgrade('setLogHistorySize', {
+    'size': size,
+  });
+}
+
+Future<int> getLogHistorySize(Isolate isolate) async {
+  final result = await isolate.invokeRpcNoUpgrade('getLogHistorySize', {});
+  expect(result['type'], 'Size');
+  return result['size'];
+}
+
+var tests = <IsolateTest>[
+  hasPausedAtStart,
+  (Isolate isolate) async {
+    final initialSize = await getLogHistorySize(isolate);
+    try {
+      await setLogHistorySize(isolate, maxLogHistorySize + 1);
+    } on ServerRpcException catch (e) {
+      expect(e.message, "'size' must be less than $maxLogHistorySize");
+    }
+    expect(await getLogHistorySize(isolate), initialSize);
+  },
+  (Isolate isolate) async {
+    final result = await setLogHistorySize(isolate, maxLogHistorySize);
+    expect(result['type'], 'Success');
+    expect(await getLogHistorySize(isolate), maxLogHistorySize);
+  },
+  resumeIsolate,
+  hasStoppedAtBreakpoint,
+  (Isolate isolate) async {
+    print("Starting step 6");
+    final completer = Completer<void>();
+
+    await Future.delayed(const Duration(seconds: 1));
+
+    int i = 11;
+    await subscribeToStream(isolate.vm, 'Logging', (event) async {
+      expect(
+        event.logRecord['message'].valueAsString,
+        'All work and no play makes Ben a dull boy ($i)',
+      );
+      i++;
+
+      if (i == maxLogHistorySize + 10) {
+        await cancelStreamSubscription('Logging');
+        completer.complete();
+      }
+    });
+    await completer.future;
+  },
+];
+
+main(args) => runIsolateTests(
+      args,
+      tests,
+      enableService: false, // DDS specific feature
+      testeeConcurrent: testMain,
+      pause_on_start: true,
+      pause_on_exit: true,
+    );
diff --git a/runtime/observatory/tests/service/dds_log_history_size_simple_test.dart b/runtime/observatory/tests/service/dds_log_history_size_simple_test.dart
new file mode 100644
index 0000000..69e0ee2
--- /dev/null
+++ b/runtime/observatory/tests/service/dds_log_history_size_simple_test.dart
@@ -0,0 +1,98 @@
+// Copyright (c) 2020, the Dart project authors.  Please see the AUTHORS file
+// 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.
+
+import 'dart:async';
+import 'dart:developer';
+
+import 'package:observatory/service_io.dart';
+import 'package:test/test.dart';
+import 'client_resume_approvals_common.dart';
+import 'service_test_common.dart';
+import 'test_helper.dart';
+
+Future testMain() async {
+  // Log a total of 9 messages
+  for (int i = 1; i <= 9; ++i) {
+    log('log$i');
+  }
+  debugger();
+  log('log10');
+}
+
+Future setLogHistorySize(Isolate isolate, int size) async {
+  return await isolate.invokeRpcNoUpgrade('setLogHistorySize', {
+    'size': size,
+  });
+}
+
+Future<int> getLogHistorySize(Isolate isolate) async {
+  final result = await isolate.invokeRpcNoUpgrade('getLogHistorySize', {});
+  expect(result['type'], 'Size');
+  return result['size'];
+}
+
+var tests = <IsolateTest>[
+  isPausedAtStart,
+  resumeIsolate,
+  (Isolate isolate) async {
+    // Check that resizing does the right thing.
+    final result = await setLogHistorySize(isolate, 10);
+    expect(result['type'], 'Success');
+    expect(await getLogHistorySize(isolate), 10);
+
+    final completer = Completer<void>();
+
+    int i = 1;
+    await subscribeToStream(isolate.vm, 'Logging', (event) async {
+      expect(event.logRecord['message'].valueAsString, 'log$i');
+      i++;
+
+      if (i == 10) {
+        await cancelStreamSubscription('Logging');
+        completer.complete();
+      } else if (i > 10) {
+        fail('Too many log messages');
+      }
+    });
+    await completer.future;
+  },
+  (Isolate isolate) async {
+    // Resize to be smaller
+    final result = await setLogHistorySize(isolate, 5);
+    expect(result['type'], 'Success');
+    expect(await getLogHistorySize(isolate), 5);
+  },
+  resumeIsolate,
+  (Isolate isolate) async {
+    final completer = Completer<void>();
+
+    // Create a new client as we want to get log messages from the entire
+    // history buffer.
+    final client = await createClient(isolate.vm);
+
+    int i = 6;
+    await subscribeToStream(client, 'Logging', (event) async {
+      expect(event.logRecord['message'].valueAsString, 'log$i');
+      i++;
+
+      if (i == 11) {
+        await cancelStreamSubscription('Logging');
+        completer.complete();
+      } else if (i > 11) {
+        fail('Too many log messages');
+      }
+    });
+    await completer.future;
+    await client.disconnect();
+  },
+];
+
+main(args) => runIsolateTests(
+      args,
+      tests,
+      enableService: false, // DDS specific feature
+      testeeConcurrent: testMain,
+      pause_on_start: true,
+      pause_on_exit: true,
+    );
diff --git a/runtime/observatory/tests/service/dds_log_history_size_test.dart b/runtime/observatory/tests/service/dds_log_history_size_test.dart
new file mode 100644
index 0000000..98cc6e3
--- /dev/null
+++ b/runtime/observatory/tests/service/dds_log_history_size_test.dart
@@ -0,0 +1,91 @@
+// Copyright (c) 2020, the Dart project authors.  Please see the AUTHORS file
+// 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.
+
+import 'dart:async';
+import 'dart:developer';
+
+import 'package:observatory/service_io.dart';
+import 'package:test/test.dart';
+import 'service_test_common.dart';
+import 'test_helper.dart';
+
+Future testMain() async {
+  // Initial logging history should be 0, so these messages won't be buffered.
+  log('log1');
+  log('log2');
+
+  // Setting the log history length does not apply retroactively.
+  debugger();
+
+  // Log a total of 30 messages
+  for (int i = 3; i <= 30; ++i) {
+    log('log$i');
+  }
+}
+
+Future setLogHistorySize(Isolate isolate, int size) async {
+  return await isolate.invokeRpcNoUpgrade('setLogHistorySize', {
+    'size': size,
+  });
+}
+
+Future<int> getLogHistorySize(Isolate isolate) async {
+  final result = await isolate.invokeRpcNoUpgrade('getLogHistorySize', {});
+  expect(result['type'], 'Size');
+  return result['size'];
+}
+
+var tests = <IsolateTest>[
+  hasPausedAtStart,
+  (Isolate isolate) async {
+    final result = await setLogHistorySize(isolate, 0);
+    expect(result['type'], 'Success');
+    expect(await getLogHistorySize(isolate), 0);
+  },
+  resumeIsolate,
+  hasStoppedAtBreakpoint,
+  (Isolate isolate) async {
+    final result = await setLogHistorySize(isolate, 20);
+    expect(await getLogHistorySize(isolate), 20);
+    expect(result['type'], 'Success');
+  },
+  resumeIsolate,
+  (Isolate isolate) async {
+    final completer = Completer<void>();
+
+    await Future.delayed(const Duration(seconds: 1));
+
+    // With the log history set to 20, the first log message should be 'log11'
+    int i = 11;
+    await subscribeToStream(isolate.vm, 'Logging', (event) async {
+      expect(event.logRecord['message'].valueAsString, 'log$i');
+      i++;
+
+      if (i == 30) {
+        await cancelStreamSubscription('Logging');
+        completer.complete();
+      }
+    });
+    await completer.future;
+  },
+  (Isolate isolate) async {
+    try {
+      // Try to set an invalid history size
+      await setLogHistorySize(isolate, -1);
+      fail('Successfully set invalid size');
+    } on ServerRpcException catch (e) {
+      expect(e.message, "'size' must be greater or equal to zero");
+    }
+    expect(await getLogHistorySize(isolate), 20);
+  }
+];
+
+main(args) => runIsolateTests(
+      args,
+      tests,
+      enableService: false, // DDS specific feature
+      testeeConcurrent: testMain,
+      pause_on_start: true,
+      pause_on_exit: true,
+    );
diff --git a/runtime/observatory/tests/service/service.status b/runtime/observatory/tests/service/service.status
index cf5797a..7aa88bb 100644
--- a/runtime/observatory/tests/service/service.status
+++ b/runtime/observatory/tests/service/service.status
@@ -2,6 +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.
 # Flaky failures
+dds_log_history_size_gigantic_test: Pass, Slow # Involves processing lots of logs
 field_script_test: Pass, RuntimeError
 get_allocation_samples_test: Pass, RuntimeError # Inconsistent stack trace
 get_isolate_rpc_test: Pass, RuntimeError # Issue 29324
@@ -41,6 +42,9 @@
 [ $compiler == none && $runtime == vm && $system == fuchsia ]
 *: Skip # Not yet triaged.
 
+[ $mode == debug && $system == windows ]
+dds_log_history_size_gigantic_test: Skip # Too slow: dartbug.com/41825
+
 [ $mode == debug && $system == windows && $checked ]
 async_scope_test: Pass, Slow
 
diff --git a/runtime/observatory/tests/service/service_kernel.status b/runtime/observatory/tests/service/service_kernel.status
index 026478e..fc5f0d4 100644
--- a/runtime/observatory/tests/service/service_kernel.status
+++ b/runtime/observatory/tests/service/service_kernel.status
@@ -72,6 +72,7 @@
 coverage_const_field_async_closure_test: Skip, Timeout
 coverage_leaf_function_test: Skip, Timeout
 coverage_optimized_function_test: Skip, Timeout
+dds_log_history_size_*: Skip, Timeout
 debugger_inspect_test: SkipByDesign
 debugger_location_second_test: Skip, Timeout
 debugger_location_test: Skip, Timeout
@@ -193,6 +194,9 @@
 get_vm_timeline_rpc_test: Pass, Slow
 rewind_optimized_out_test: SkipSlow # Timeout
 
+[ $arch == ia32 && $compiler == dartk ]
+valid_source_locations_test: Skip # Issue 34736, too slow.
+
 [ $arch != simarm && $arch != simarm64 && $compiler == dartk ]
 complex_reload_test: RuntimeError
 
@@ -266,6 +270,7 @@
 break_on_activation_test: RuntimeError # Issue #34736
 breakpoint_in_package_parts_class_file_uri_test: RuntimeError # Issue #34736
 complex_reload_test: Skip # Times out on sim architectures, also RuntimeError.
+dds_log_history_size_gigantic_test: SkipSlow # Involves hundreds of thousands of log messages
 debugger_inspect_test: RuntimeError, Timeout # Issue #34736
 eval_internal_class_test: RuntimeError # Issue #34736
 eval_regression_flutter20255_test: SkipByDesign # No incremental compiler available.
@@ -286,7 +291,7 @@
 rewind_test: Pass, RuntimeError
 set_name_rpc_test: RuntimeError # Please triage.
 simple_reload_test: RuntimeError, Timeout
-valid_source_locations_test: Pass, Slow, Timeout # Issue 34736
+valid_source_locations_test: Skip # Issue 34736, too slow.
 
 [ $compiler == dartk || $compiler == dartkb ]
 bad_reload_test: RuntimeError # Issue 34025
diff --git a/runtime/observatory/tests/service/step_through_mixin_from_sdk_test.dart b/runtime/observatory/tests/service/step_through_mixin_from_sdk_test.dart
index 5c4a65a..0b804ee 100644
--- a/runtime/observatory/tests/service/step_through_mixin_from_sdk_test.dart
+++ b/runtime/observatory/tests/service/step_through_mixin_from_sdk_test.dart
@@ -35,19 +35,19 @@
 List<String> expected = [
   "$file:${LINE + 0}:17", // on "Foo" (in "new Foo()")
   "$file:${LINE + 1}:11", // on "="
-  "list.dart:107:24", // on parameter to "contains"
-  "list.dart:108:23", // on "length" in "this.length"
-  "list.dart:109:16", // on "=" in "i = 0"
-  "list.dart:109:23", // on "<" in "i < length"
-  "list.dart:110:15", // on "[" in "this[i]"
+  "list.dart:105:25", // on parameter to "contains"
+  "list.dart:106:23", // on "length" in "this.length"
+  "list.dart:107:16", // on "=" in "i = 0"
+  "list.dart:107:23", // on "<" in "i < length"
+  "list.dart:108:15", // on "[" in "this[i]"
   "$file:${LINE + 13}:23", // on parameter in "operator []"
   "$file:${LINE + 14}:5", // on "return"
-  "list.dart:110:19", // on "=="
-  "list.dart:111:26", // on "length" in "this.length"
-  "list.dart:111:18", // on "!="
-  "list.dart:109:34", // on "++" in "i++"
-  "list.dart:109:23", // on "<" in "i < length"
-  "list.dart:115:5", // on "return"
+  "list.dart:108:19", // on "=="
+  "list.dart:109:26", // on "length" in "this.length"
+  "list.dart:109:18", // on "!="
+  "list.dart:107:34", // on "++" in "i++"
+  "list.dart:107:23", // on "<" in "i < length"
+  "list.dart:113:5", // on "return"
   "$file:${LINE + 4}:5", // on "print"
   "$file:${LINE + 6}:1" // on ending '}'
 ];
diff --git a/runtime/observatory/tests/service/test_helper.dart b/runtime/observatory/tests/service/test_helper.dart
index a63bc14..bbb68b4 100644
--- a/runtime/observatory/tests/service/test_helper.dart
+++ b/runtime/observatory/tests/service/test_helper.dart
@@ -347,6 +347,7 @@
     bool enable_service_port_fallback: false,
     bool testeeControlsServer: false,
     bool enableDds: true,
+    bool enableService: true,
     int port = 0,
   }) {
     if (executableArgs == null) {
@@ -465,6 +466,10 @@
       print('Skipping DDS run for $name');
       return;
     }
+    if (!useDds && !enableService) {
+      print('Skipping VM Service run for $name');
+      return;
+    }
     runTest(name);
   }
 
@@ -524,6 +529,7 @@
     bool pause_on_unhandled_exceptions: false,
     bool testeeControlsServer: false,
     bool enableDds: true,
+    bool enableService: true,
     List<String> extraArgs}) async {
   assert(!pause_on_start || testeeBefore == null);
   if (_isTestee()) {
@@ -534,15 +540,17 @@
         pause_on_exit: pause_on_exit);
   } else {
     new _ServiceTesterRunner().run(
-        mainArgs: mainArgs,
-        extraArgs: extraArgs,
-        isolateTests: tests,
-        pause_on_start: pause_on_start,
-        pause_on_exit: pause_on_exit,
-        verbose_vm: verbose_vm,
-        pause_on_unhandled_exceptions: pause_on_unhandled_exceptions,
-        testeeControlsServer: testeeControlsServer,
-        enableDds: enableDds);
+      mainArgs: mainArgs,
+      extraArgs: extraArgs,
+      isolateTests: tests,
+      pause_on_start: pause_on_start,
+      pause_on_exit: pause_on_exit,
+      verbose_vm: verbose_vm,
+      pause_on_unhandled_exceptions: pause_on_unhandled_exceptions,
+      testeeControlsServer: testeeControlsServer,
+      enableDds: enableDds,
+      enableService: enableService,
+    );
   }
 }
 
@@ -595,6 +603,7 @@
     bool pause_on_unhandled_exceptions: false,
     bool enable_service_port_fallback: false,
     bool enableDds: true,
+    bool enableService: true,
     int port = 0,
     List<String> extraArgs,
     List<String> executableArgs}) async {
@@ -616,6 +625,7 @@
       pause_on_unhandled_exceptions: pause_on_unhandled_exceptions,
       enable_service_port_fallback: enable_service_port_fallback,
       enableDds: enableDds,
+      enableService: enableService,
       port: port,
     );
   }
@@ -655,6 +665,7 @@
       pause_on_unhandled_exceptions: pause_on_unhandled_exceptions,
       enable_service_port_fallback: enable_service_port_fallback,
       enableDds: true,
+      enableService: false,
       port: port,
     );
   }
diff --git a/runtime/platform/globals.h b/runtime/platform/globals.h
index ac995f4..e11a833 100644
--- a/runtime/platform/globals.h
+++ b/runtime/platform/globals.h
@@ -459,6 +459,8 @@
 const uint32_t kMaxUint32 = 0xFFFFFFFF;
 const int64_t kMinInt64 = DART_INT64_C(0x8000000000000000);
 const int64_t kMaxInt64 = DART_INT64_C(0x7FFFFFFFFFFFFFFF);
+const int64_t kMinInt64RepresentableAsDouble = kMinInt64;
+const int64_t kMaxInt64RepresentableAsDouble = DART_INT64_C(0x7FFFFFFFFFFFFC00);
 const uint64_t kMaxUint64 = DART_2PART_UINT64_C(0xFFFFFFFF, FFFFFFFF);
 const int64_t kSignBitDouble = DART_INT64_C(0x8000000000000000);
 
@@ -636,36 +638,6 @@
   return destination;
 }
 
-#if defined(HOST_ARCH_ARM) || defined(HOST_ARCH_ARM64)
-// Similar to bit_copy and bit_cast, but does take the type from the argument.
-template <typename T>
-static inline T ReadUnaligned(const T* ptr) {
-  T value;
-  memcpy(reinterpret_cast<void*>(&value), reinterpret_cast<const void*>(ptr),
-         sizeof(value));
-  return value;
-}
-
-// Similar to bit_copy and bit_cast, but does take the type from the argument.
-template <typename T>
-static inline void StoreUnaligned(T* ptr, T value) {
-  memcpy(reinterpret_cast<void*>(ptr), reinterpret_cast<const void*>(&value),
-         sizeof(value));
-}
-#else   // !(HOST_ARCH_ARM || HOST_ARCH_ARM64)
-// Similar to bit_copy and bit_cast, but does take the type from the argument.
-template <typename T>
-static inline T ReadUnaligned(const T* ptr) {
-  return *ptr;
-}
-
-// Similar to bit_copy and bit_cast, but does take the type from the argument.
-template <typename T>
-static inline void StoreUnaligned(T* ptr, T value) {
-  *ptr = value;
-}
-#endif  // !(HOST_ARCH_ARM || HOST_ARCH_ARM64)
-
 // On Windows the reentrent version of strtok is called
 // strtok_s. Unify on the posix name strtok_r.
 #if defined(HOST_OS_WINDOWS)
diff --git a/runtime/platform/growable_array.h b/runtime/platform/growable_array.h
index 83deee8..b604ea4 100644
--- a/runtime/platform/growable_array.h
+++ b/runtime/platform/growable_array.h
@@ -205,6 +205,9 @@
 template <typename T, typename B, typename Allocator>
 inline void BaseGrowableArray<T, B, Allocator>::Sort(int compare(const T*,
                                                                  const T*)) {
+  // Avoid calling qsort with a null array.
+  if (length_ == 0) return;
+
   typedef int (*CompareFunction)(const void*, const void*);
   qsort(data_, length_, sizeof(T), reinterpret_cast<CompareFunction>(compare));
 }
diff --git a/runtime/platform/safe_stack.h b/runtime/platform/safe_stack.h
index 5a9bbeb..d6aa08f 100644
--- a/runtime/platform/safe_stack.h
+++ b/runtime/platform/safe_stack.h
@@ -5,8 +5,6 @@
 #ifndef RUNTIME_PLATFORM_SAFE_STACK_H_
 #define RUNTIME_PLATFORM_SAFE_STACK_H_
 
-#include "platform/globals.h"
-
 #if defined(__has_feature)
 #if __has_feature(safe_stack)
 #define USING_SAFE_STACK
diff --git a/runtime/platform/unaligned.h b/runtime/platform/unaligned.h
new file mode 100644
index 0000000..42f932b
--- /dev/null
+++ b/runtime/platform/unaligned.h
@@ -0,0 +1,43 @@
+// Copyright (c) 2020, the Dart project authors.  Please see the AUTHORS file
+// 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.
+
+#ifndef RUNTIME_PLATFORM_UNALIGNED_H_
+#define RUNTIME_PLATFORM_UNALIGNED_H_
+
+#include "platform/globals.h"
+#include "platform/undefined_behavior_sanitizer.h"
+
+namespace dart {
+
+#if defined(HOST_ARCH_ARM) || defined(HOST_ARCH_ARM64)
+template <typename T>
+static inline T LoadUnaligned(const T* ptr) {
+  T value;
+  memcpy(reinterpret_cast<void*>(&value), reinterpret_cast<const void*>(ptr),
+         sizeof(value));
+  return value;
+}
+
+template <typename T>
+static inline void StoreUnaligned(T* ptr, T value) {
+  memcpy(reinterpret_cast<void*>(ptr), reinterpret_cast<const void*>(&value),
+         sizeof(value));
+}
+#else   // !(HOST_ARCH_ARM || HOST_ARCH_ARM64)
+template <typename T>
+NO_SANITIZE_UNDEFINED("alignment")
+static inline T LoadUnaligned(const T* ptr) {
+  return *ptr;
+}
+
+template <typename T>
+NO_SANITIZE_UNDEFINED("alignment")
+static inline void StoreUnaligned(T* ptr, T value) {
+  *ptr = value;
+}
+#endif  // !(HOST_ARCH_ARM || HOST_ARCH_ARM64)
+
+}  // namespace dart
+
+#endif  // RUNTIME_PLATFORM_UNALIGNED_H_
diff --git a/runtime/platform/undefined_behavior_sanitizer.h b/runtime/platform/undefined_behavior_sanitizer.h
new file mode 100644
index 0000000..68c6a92
--- /dev/null
+++ b/runtime/platform/undefined_behavior_sanitizer.h
@@ -0,0 +1,20 @@
+// Copyright (c) 2020, the Dart project authors.  Please see the AUTHORS file
+// 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.
+
+#ifndef RUNTIME_PLATFORM_UNDEFINED_BEHAVIOR_SANITIZER_H_
+#define RUNTIME_PLATFORM_UNDEFINED_BEHAVIOR_SANITIZER_H_
+
+#if defined(__has_feature)
+#if __has_feature(undefined_behavior_sanitizer)
+#define USING_UNDEFINED_BEHAVIOR_SANITIZER
+#endif
+#endif
+
+#if defined(USING_UNDEFINED_BEHAVIOR_SANITIZER)
+#define NO_SANITIZE_UNDEFINED(check) __attribute__((no_sanitize(check)))
+#else
+#define NO_SANITIZE_UNDEFINED(check)
+#endif
+
+#endif  // RUNTIME_PLATFORM_UNDEFINED_BEHAVIOR_SANITIZER_H_
diff --git a/runtime/platform/unicode.h b/runtime/platform/unicode.h
index b784823..58338ed 100644
--- a/runtime/platform/unicode.h
+++ b/runtime/platform/unicode.h
@@ -7,6 +7,7 @@
 
 #include "platform/allocation.h"
 #include "platform/globals.h"
+#include "platform/unaligned.h"
 
 namespace dart {
 
@@ -132,9 +133,9 @@
   // Returns the character at i and advances i to the next character
   // boundary.
   static int32_t Next(const uint16_t* characters, intptr_t* i, intptr_t len) {
-    int32_t ch = characters[*i];
+    int32_t ch = LoadUnaligned(&characters[*i]);
     if (Utf16::IsLeadSurrogate(ch) && (*i < (len - 1))) {
-      int32_t ch2 = characters[*i + 1];
+      int32_t ch2 = LoadUnaligned(&characters[*i + 1]);
       if (Utf16::IsTrailSurrogate(ch2)) {
         ch = Utf16::Decode(ch, ch2);
         *i += 1;
diff --git a/runtime/platform/utils.h b/runtime/platform/utils.h
index 6635fc3..c64a062 100644
--- a/runtime/platform/utils.h
+++ b/runtime/platform/utils.h
@@ -215,7 +215,7 @@
   }
 
   static inline int64_t LowHighTo64Bits(uint32_t low, int32_t high) {
-    return (static_cast<int64_t>(high) << 32) | (low & 0x0ffffffffLL);
+    return (static_cast<uint64_t>(high) << 32) | (low & 0x0ffffffffLL);
   }
 
   static inline constexpr bool IsAlphaNumeric(uint32_t c) {
@@ -347,7 +347,7 @@
                             "Unexpected uword size");
       return std::numeric_limits<uword>::max();
     }
-    return (1ll << n) - 1;
+    return (static_cast<uword>(1) << n) - 1;
   }
 
   static word SignedNBitMask(uint32_t n) {
@@ -373,22 +373,22 @@
   static ValueType DecodeSLEB128(const uint8_t* data,
                                  const intptr_t data_length,
                                  intptr_t* byte_index) {
+    using Unsigned = typename std::make_unsigned<ValueType>::type;
     ASSERT(*byte_index < data_length);
     uword shift = 0;
-    ValueType value = 0;
+    Unsigned value = 0;
     uint8_t part = 0;
     do {
       part = data[(*byte_index)++];
-      value |= static_cast<ValueType>(part & 0x7f) << shift;
+      value |= static_cast<Unsigned>(part & 0x7f) << shift;
       shift += 7;
     } while ((part & 0x80) != 0);
 
     if ((shift < (sizeof(ValueType) * CHAR_BIT)) && ((part & 0x40) != 0)) {
-      using Unsigned = typename std::make_unsigned<ValueType>::type;
       const Unsigned kMax = std::numeric_limits<Unsigned>::max();
-      value |= static_cast<ValueType>(kMax << shift);
+      value |= static_cast<Unsigned>(kMax << shift);
     }
-    return value;
+    return static_cast<ValueType>(value);
   }
 
   static char* StrError(int err, char* buffer, size_t bufsize);
diff --git a/runtime/tests/vm/dart/isolates/fibonacci_call_ig_test.dart b/runtime/tests/vm/dart/isolates/fibonacci_call_ig_test.dart
new file mode 100644
index 0000000..9a2938b
--- /dev/null
+++ b/runtime/tests/vm/dart/isolates/fibonacci_call_ig_test.dart
@@ -0,0 +1,19 @@
+// Copyright (c) 2020, the Dart project authors.  Please see the AUTHORS file
+// 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.
+
+// VMOptions=--enable-isolate-groups --disable-heap-verification
+
+import 'dart:isolate';
+
+import 'package:expect/expect.dart';
+
+import 'internal.dart';
+import 'test_utils.dart';
+
+main(args) async {
+  final rp = ReceivePort();
+  final int n = 18;
+  await spawnInDetachedGroup(fibonacciRecursive, [rp.sendPort, n]);
+  Expect.equals(4181, await rp.first);
+}
diff --git a/runtime/tests/vm/dart/isolates/fibonacci_call_test.dart b/runtime/tests/vm/dart/isolates/fibonacci_call_test.dart
new file mode 100644
index 0000000..b6b32ef
--- /dev/null
+++ b/runtime/tests/vm/dart/isolates/fibonacci_call_test.dart
@@ -0,0 +1,18 @@
+// Copyright (c) 2020, the Dart project authors.  Please see the AUTHORS file
+// 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.
+
+// VMOptions=--enable-isolate-groups --disable-heap-verification
+
+import 'dart:isolate';
+
+import 'package:expect/expect.dart';
+
+import 'test_utils.dart';
+
+main(args) async {
+  final rp = ReceivePort();
+  final int n = 18;
+  await Isolate.spawn(fibonacciRecursive, [rp.sendPort, n]);
+  Expect.equals(4181, await rp.first);
+}
diff --git a/runtime/tests/vm/dart/isolates/internal.dart b/runtime/tests/vm/dart/isolates/internal.dart
new file mode 100644
index 0000000..961f23f
--- /dev/null
+++ b/runtime/tests/vm/dart/isolates/internal.dart
@@ -0,0 +1,87 @@
+// Copyright (c) 2020, the Dart project authors.  Please see the AUTHORS file
+// 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.
+
+import 'dart:io';
+import 'dart:isolate';
+import 'dart:async';
+import 'dart:_internal' as dart_internal;
+
+/// Similar to `Isolate.spawn<T>()` but supports `newIsolateGroup`.
+Future<Isolate> internalSpawn<T>(void entryPoint(T message), T message,
+    {SendPort onExit,
+    SendPort onError,
+    bool newIsolateGroup,
+    String debugName}) async {
+  newIsolateGroup ??= false;
+  final packageConfig = null;
+  final paused = false;
+  final bool errorsAreFatal = null;
+  final readyPort = new RawReceivePort();
+  try {
+    dart_internal.spawnFunction(
+        readyPort.sendPort,
+        Platform.script.toString(),
+        entryPoint,
+        message,
+        paused,
+        errorsAreFatal,
+        onExit,
+        onError,
+        packageConfig,
+        newIsolateGroup,
+        debugName);
+    return await _spawnCommon(readyPort);
+  } catch (e, st) {
+    readyPort.close();
+    return await new Future<Isolate>.error(e, st);
+  }
+}
+
+/// A copy of `dart:isolate`s internal `Isolate._spawnCommon()`.
+Future<Isolate> _spawnCommon(RawReceivePort readyPort) {
+  final completer = new Completer<Isolate>.sync();
+  readyPort.handler = (readyMessage) {
+    readyPort.close();
+    if (readyMessage is List && readyMessage.length == 2) {
+      SendPort controlPort = readyMessage[0];
+      List capabilities = readyMessage[1];
+      completer.complete(new Isolate(controlPort,
+          pauseCapability: capabilities[0],
+          terminateCapability: capabilities[1]));
+    } else if (readyMessage is String) {
+      // We encountered an error while starting the new isolate.
+      completer.completeError(new IsolateSpawnException(
+          'Unable to spawn isolate: ${readyMessage}'));
+    } else {
+      // This shouldn't happen.
+      completer.completeError(new IsolateSpawnException(
+          "Internal error: unexpected format for ready message: "
+          "'${readyMessage}'"));
+    }
+  };
+  return completer.future;
+}
+
+/// Spawns the [staticClosure] in a detached isolate group.
+Future<Isolate> spawnInDetachedGroup<T>(
+    void staticClosure(T message), T message,
+    {SendPort onExit, SendPort onError}) async {
+  _IG0([staticClosure, message]);
+}
+
+// This is the isolate group of "main". We spawn another one.
+_IG0(args) => internalSpawn(_IG1, args, newIsolateGroup: true);
+
+// This is an intermediate isolate group. The actual code we run in a new IG and
+// this one will die.
+_IG1(args) => internalSpawn(_IG2, args, newIsolateGroup: true);
+
+// Run the actual code
+_IG2(args) => args[0](args[1]);
+
+extension SendPortSendAndExit on SendPort {
+  void sendAndExit(var message) {
+    dart_internal.sendAndExit(this, message);
+  }
+}
diff --git a/runtime/tests/vm/dart/isolates/ring_gc_sendAndExit_test.dart b/runtime/tests/vm/dart/isolates/ring_gc_sendAndExit_test.dart
new file mode 100644
index 0000000..10f5f19
--- /dev/null
+++ b/runtime/tests/vm/dart/isolates/ring_gc_sendAndExit_test.dart
@@ -0,0 +1,32 @@
+// Copyright (c) 2020, the Dart project authors.  Please see the AUTHORS file
+// 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.
+
+// VMOptions=--enable-isolate-groups --disable-heap-verification
+
+import 'dart:math' as math;
+
+import 'package:expect/expect.dart';
+
+import 'ring_gc_test.dart' show Worker;
+import 'test_utils.dart';
+
+main(args) async {
+  final int numIsolates = (isDebugMode || isSimulator) ? 100 : 5000;
+
+  // Spawn ring of 1k isolates.
+  final ring = await Ring.create(numIsolates);
+
+  // Let each node produce a tree, send it to it's neighbour and let it return
+  // the one it received (via sendAndExit).
+  final results = await ring.runAndClose((int id) => Worker(id));
+  Expect.equals(numIsolates, results.length);
+
+  // Validate the result.
+  for (int i = 0; i < numIsolates; ++i) {
+    final Tree tree = results[i];
+    final senderId = (numIsolates + i - 1) % numIsolates;
+    final expectedCount = math.pow(2, senderId % 10) - 1;
+    Expect.equals(expectedCount, tree.sum);
+  }
+}
diff --git a/runtime/tests/vm/dart/isolates/ring_gc_test.dart b/runtime/tests/vm/dart/isolates/ring_gc_test.dart
new file mode 100644
index 0000000..a126755
--- /dev/null
+++ b/runtime/tests/vm/dart/isolates/ring_gc_test.dart
@@ -0,0 +1,54 @@
+// Copyright (c) 2020, the Dart project authors.  Please see the AUTHORS file
+// 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.
+
+// VMOptions=--enable-isolate-groups --disable-heap-verification
+
+import 'dart:async';
+import 'dart:math' as math;
+import 'dart:isolate';
+
+import 'package:expect/expect.dart';
+
+import 'test_utils.dart';
+
+class Worker extends RingElement {
+  final int id;
+  Worker(this.id);
+
+  Future run(SendPort next, StreamIterator prev) async {
+    final Tree tree = buildTree(id % 10);
+
+    // Send to next in ring.
+    next.send(tree);
+    // Receive from previous in ring.
+    await prev.moveNext();
+    final prevTree = prev.current as Tree;
+
+    // Return to main
+    return prevTree;
+  }
+}
+
+main(args) async {
+  final int numIsolates = (isDebugMode || isSimulator) ? 100 : 1000;
+
+  // Spawn ring of 1k isolates.
+  final ring = await Ring.create(numIsolates);
+
+  // Let each node produce a tree, send it to it's neighbour and let it return
+  // the one it received.
+  final results = await ring.run((int id) => Worker(id));
+  Expect.equals(numIsolates, results.length);
+
+  // Validate the result.
+  for (int i = 0; i < numIsolates; ++i) {
+    final Tree tree = results[i];
+    final senderId = (numIsolates + i - 1) % numIsolates;
+    final expectedCount = math.pow(2, senderId % 10) - 1;
+    Expect.equals(expectedCount, tree.sum);
+  }
+
+  // Close the ring.
+  await ring.close();
+}
diff --git a/runtime/tests/vm/dart/isolates/sum_recursive_call_ig_test.dart b/runtime/tests/vm/dart/isolates/sum_recursive_call_ig_test.dart
new file mode 100644
index 0000000..915c102
--- /dev/null
+++ b/runtime/tests/vm/dart/isolates/sum_recursive_call_ig_test.dart
@@ -0,0 +1,19 @@
+// Copyright (c) 2020, the Dart project authors.  Please see the AUTHORS file
+// 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.
+
+// VMOptions=--enable-isolate-groups --disable-heap-verification
+
+import 'dart:isolate';
+
+import 'package:expect/expect.dart';
+
+import 'internal.dart';
+import 'test_utils.dart';
+
+main(args) async {
+  final rp = ReceivePort();
+  final int count = (isDebugMode || isSimulator) ? 100 : (10 * 1000);
+  await spawnInDetachedGroup(sumRecursive, [rp.sendPort, count]);
+  Expect.equals(count, await rp.first);
+}
diff --git a/runtime/tests/vm/dart/isolates/sum_recursive_call_test.dart b/runtime/tests/vm/dart/isolates/sum_recursive_call_test.dart
new file mode 100644
index 0000000..89bcc58
--- /dev/null
+++ b/runtime/tests/vm/dart/isolates/sum_recursive_call_test.dart
@@ -0,0 +1,18 @@
+// Copyright (c) 2020, the Dart project authors.  Please see the AUTHORS file
+// 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.
+
+// VMOptions=--enable-isolate-groups --disable-heap-verification
+
+import 'dart:isolate';
+
+import 'package:expect/expect.dart';
+
+import 'test_utils.dart';
+
+main(args) async {
+  final rp = ReceivePort();
+  final int count = (isDebugMode || isSimulator) ? 100 : (10 * 1000);
+  await Isolate.spawn(sumRecursive, [rp.sendPort, count]);
+  Expect.equals(count, await rp.first);
+}
diff --git a/runtime/tests/vm/dart/isolates/sum_recursive_tail_call_ig_test.dart b/runtime/tests/vm/dart/isolates/sum_recursive_tail_call_ig_test.dart
new file mode 100644
index 0000000..a3fb967
--- /dev/null
+++ b/runtime/tests/vm/dart/isolates/sum_recursive_tail_call_ig_test.dart
@@ -0,0 +1,19 @@
+// Copyright (c) 2020, the Dart project authors.  Please see the AUTHORS file
+// 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.
+
+// VMOptions=--enable-isolate-groups --disable-heap-verification
+
+import 'dart:isolate';
+
+import 'package:expect/expect.dart';
+
+import 'internal.dart';
+import 'test_utils.dart';
+
+main(args) async {
+  final rp = ReceivePort();
+  final int count = (isDebugMode || isSimulator) ? 100 : (10 * 1000);
+  await spawnInDetachedGroup(sumRecursiveTailCall, [rp.sendPort, count, 0]);
+  Expect.equals(count, await rp.first);
+}
diff --git a/runtime/tests/vm/dart/isolates/sum_recursive_tail_call_test.dart b/runtime/tests/vm/dart/isolates/sum_recursive_tail_call_test.dart
new file mode 100644
index 0000000..866b8f3
--- /dev/null
+++ b/runtime/tests/vm/dart/isolates/sum_recursive_tail_call_test.dart
@@ -0,0 +1,18 @@
+// Copyright (c) 2020, the Dart project authors.  Please see the AUTHORS file
+// 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.
+
+// VMOptions=--enable-isolate-groups --disable-heap-verification
+
+import 'dart:isolate';
+
+import 'package:expect/expect.dart';
+
+import 'test_utils.dart';
+
+main(args) async {
+  final rp = ReceivePort();
+  final int count = (isDebugMode || isSimulator) ? 100 : (10 * 1000);
+  await Isolate.spawn(sumRecursiveTailCall, [rp.sendPort, count, 0]);
+  Expect.equals(count, await rp.first);
+}
diff --git a/runtime/tests/vm/dart/isolates/test_utils.dart b/runtime/tests/vm/dart/isolates/test_utils.dart
new file mode 100644
index 0000000..0017fab
--- /dev/null
+++ b/runtime/tests/vm/dart/isolates/test_utils.dart
@@ -0,0 +1,205 @@
+// Copyright (c) 2020, the Dart project authors.  Please see the AUTHORS file
+// 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.
+
+import 'dart:async';
+import 'dart:io';
+import 'dart:isolate';
+
+import 'internal.dart';
+
+final bool isDebugMode = Platform.script.path.contains('Debug');
+final bool isSimulator = Platform.script.path.contains('SIM');
+
+// Implements recursive summation:
+//   sum(n) => n == 0 ? 0
+//                    : 1 + sum(n-1);
+Future sumRecursive(List args) async {
+  final SendPort port = args[0];
+  final n = args[1];
+  if (n == 0) {
+    port.send(0);
+  } else {
+    final rp = ReceivePort();
+    await Isolate.spawn(sumRecursive, [rp.sendPort, n - 1]);
+    port.send(1 + (await rp.first));
+  }
+}
+
+// Implements recursive summation via tail calls:
+//   sum(n, s) => n == 0 ? s
+//                       : sum(n-1, s+1);
+Future sumRecursiveTailCall(List args) async {
+  final SendPort port = args[0];
+  final n = args[1];
+  final s = args[2];
+  if (n == 0) {
+    port.send(s);
+  } else {
+    await Isolate.spawn(sumRecursiveTailCall, [port, n - 1, s + 1]);
+  }
+}
+
+// Implements recursive summation via tail calls:
+//   fib(n) => n <= 1 ? 1
+//                    : fib(n-1) + fib(n-2);
+Future fibonacciRecursive(List args) async {
+  final SendPort port = args[0];
+  final n = args[1];
+  if (n <= 1) {
+    port.send(1);
+    return;
+  }
+  final left = ReceivePort();
+  final right = ReceivePort();
+  await Future.wait([
+    Isolate.spawn(fibonacciRecursive, [left.sendPort, n - 1]),
+    Isolate.spawn(fibonacciRecursive, [right.sendPort, n - 2]),
+  ]);
+  final results = await Future.wait([left.first, right.first]);
+  port.send(results[0] + results[1]);
+}
+
+class Command {
+  static const int kRun = 0;
+  static const int kRunAndClose = 1;
+  static const int kClose = 2;
+}
+
+abstract class RingElement {
+  Future run(SendPort nextNeighbour, StreamIterator prevNeighbour);
+}
+
+class Ring {
+  final int size;
+  final List<StreamIterator> receivePorts;
+  final List<SendPort> controlSendPorts;
+  final List<SendPort> dataSendPorts;
+
+  Ring(this.size, this.receivePorts, this.controlSendPorts, this.dataSendPorts);
+
+  static Future<Ring> create(int n) async {
+    final ports = <StreamIterator>[];
+    final spawnFutures = <Future>[];
+    for (int i = 0; i < n; ++i) {
+      final port = ReceivePort();
+      ports.add(StreamIterator(port));
+      spawnFutures
+          .add(Isolate.spawn(_ringEntry, port.sendPort, debugName: 'ring-$i'));
+    }
+    await Future.wait(spawnFutures);
+    final controlSendPorts = <SendPort>[];
+    final dataSendPorts = <SendPort>[];
+    for (int i = 0; i < n; ++i) {
+      final si = ports[i];
+      await si.moveNext();
+      controlSendPorts.add(si.current[0]);
+      dataSendPorts.add(si.current[1]);
+    }
+
+    return Ring(n, ports, controlSendPorts, dataSendPorts);
+  }
+
+  static Future _ringEntry(SendPort port) async {
+    final rpControl = ReceivePort();
+    final rpData = ReceivePort();
+    port.send([rpControl.sendPort, rpData.sendPort]);
+
+    final siControl = StreamIterator(rpControl);
+    final siData = StreamIterator(rpData);
+    while (await siControl.moveNext()) {
+      final List args = siControl.current;
+      final command = args[0];
+      switch (command) {
+        case Command.kRun:
+          final RingElement re = args[1];
+          final SendPort nextNeighbor = args[2];
+          port.send(await re.run(nextNeighbor, siData));
+          break;
+        case Command.kRunAndClose:
+          final RingElement re = args[1];
+          final SendPort nextNeighbor = args[2];
+          port.sendAndExit(await re.run(nextNeighbor, siData));
+          break;
+        case Command.kClose:
+          port.send('done');
+          rpControl.close();
+          rpData.close();
+          return;
+      }
+    }
+
+    throw 'bug';
+  }
+
+  Future<List> run(RingElement buildRingElement(int id)) async {
+    for (int i = 0; i < size; i++) {
+      final nextNeighbor = dataSendPorts[(i + 1) % size];
+      controlSendPorts[i]
+          .send([Command.kRun, buildRingElement(i), nextNeighbor]);
+    }
+
+    final results = await Future.wait(receivePorts.map((si) async {
+      await si.moveNext();
+      return si.current;
+    }).toList());
+
+    return results;
+  }
+
+  Future<List> runAndClose(RingElement buildRingElement(int id)) async {
+    for (int i = 0; i < size; i++) {
+      final nextNeighbor = dataSendPorts[(i + 1) % size];
+      controlSendPorts[i]
+          .send([Command.kRunAndClose, buildRingElement(i), nextNeighbor]);
+    }
+
+    final results = await Future.wait(receivePorts.map((si) async {
+      await si.moveNext();
+      return si.current;
+    }).toList());
+    finalize();
+    return results;
+  }
+
+  Future close() async {
+    for (int i = 0; i < size; i++) {
+      controlSendPorts[i].send([Command.kClose]);
+    }
+    final results = await Future.wait(receivePorts.map((si) async {
+      await si.moveNext();
+      return si.current;
+    }).toList());
+    finalize();
+    return results;
+  }
+
+  void finalize() async {
+    for (int i = 0; i < size; ++i) {
+      await receivePorts[i].cancel();
+    }
+  }
+}
+
+class Tree {
+  final int value;
+  final Tree left;
+  final Tree right;
+
+  Tree(this.value, this.left, this.right);
+
+  int get sum => value + (left?.sum ?? 0) + (right?.sum ?? 0);
+
+  Tree get copy => Tree(value, left?.copy, right?.copy);
+}
+
+Tree buildTree(int n) {
+  if (n == 0) return Tree(0, null, null);
+  Tree left = Tree(0, null, null);
+  Tree right = Tree(0, null, null);
+  for (int i = 1; i < n; ++i) {
+    left = Tree(1, left, right);
+    right = left.copy;
+  }
+  return Tree(1, left, right);
+}
diff --git a/runtime/tests/vm/dart/run_appended_aot_snapshot_test.dart b/runtime/tests/vm/dart/run_appended_aot_snapshot_test.dart
index 0515cd8..c38c859 100644
--- a/runtime/tests/vm/dart/run_appended_aot_snapshot_test.dart
+++ b/runtime/tests/vm/dart/run_appended_aot_snapshot_test.dart
@@ -37,7 +37,7 @@
 
     {
       final result = await generateAotSnapshot(
-          genSnapshot, dillPath, aotPath, null, false);
+          genSnapshot, dillPath, aotPath, null, false, []);
       Expect.equals(result.stderr, '');
       Expect.equals(result.exitCode, 0);
       Expect.equals(result.stdout, '');
diff --git a/runtime/tests/vm/dart/transferable_test.dart b/runtime/tests/vm/dart/transferable_test.dart
index b8d6bfe..8daf5a0 100644
--- a/runtime/tests/vm/dart/transferable_test.dart
+++ b/runtime/tests/vm/dart/transferable_test.dart
@@ -37,7 +37,6 @@
   final transferable = stopwatch.elapsedMilliseconds;
   print(
       'standard($standard ms)/transferable($transferable ms): ${standard / transferable}x');
-  Expect.isTrue(standard / transferable > 1.2);
   keepTimerRunning = false;
 }
 
@@ -47,12 +46,6 @@
       : data;
 }
 
-packageByteData(ByteData data, bool useTransferable) {
-  return useTransferable
-      ? TransferableTypedData.fromList(<Uint8List>[data.buffer.asUint8List()])
-      : data;
-}
-
 class StartMessage {
   final SendPort sendPort;
   final bool useTransferable;
@@ -85,11 +78,15 @@
     await inbox.moveNext();
 
     final received = inbox.current;
-    final receivedData =
-        received is TransferableTypedData ? received.materialize() : received;
+    final receivedData = received is TransferableTypedData
+        ? received.materialize().asUint8List()
+        : received;
+
     int time = workWatch.elapsedMilliseconds;
     print('${time}ms for round-trip');
     workWatch.reset();
+
+    Expect.equals(data.length, receivedData.length);
   }
   outbox.send(null);
 
diff --git a/runtime/tests/vm/vm.status b/runtime/tests/vm/vm.status
index 7011e5b..1bf7994 100644
--- a/runtime/tests/vm/vm.status
+++ b/runtime/tests/vm/vm.status
@@ -2,6 +2,8 @@
 # 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/isolates/*: Pass, Slow # Tests use many isolates and take a longer time.
+
 cc/Fail0: Fail # These tests are expected to crash on all platforms.
 cc/Fail1: Fail # These tests are expected to crash on all platforms.
 cc/Fail2: Fail # These tests are expected to crash on all platforms.
@@ -20,6 +22,17 @@
 dart/stack_overflow_shared_test: Pass, Slow # Uses --shared-slow-path-triggers-gc flag.
 dart/use_bare_instructions_flag_test: Pass, Slow # Spawns several subprocesses
 
+[ $runtime != dart_precompiled || $system == android ]
+dart/isolates/fibonacci_call_ig_test: Skip # Only AOT has lightweight enough isolates to run those tests, JIT work is pending.
+dart/isolates/fibonacci_call_test: Skip # Only AOT has lightweight enough isolates to run those tests.
+dart/isolates/internal: Skip # Only AOT has lightweight enough isolates to run those tests.
+dart/isolates/ring_gc_sendAndExit_test: Skip # Only AOT has lightweight enough isolates to run those tests.
+dart/isolates/ring_gc_test: Skip # Only AOT has lightweight enough isolates to run those tests.
+dart/isolates/sum_recursive_call_ig_test: Skip # Only AOT has lightweight enough isolates to run those tests.
+dart/isolates/sum_recursive_call_test: Skip # Only AOT has lightweight enough isolates to run those tests.
+dart/isolates/sum_recursive_tail_call_ig_test: Skip # Only AOT has lightweight enough isolates to run those tests.
+dart/isolates/sum_recursive_tail_call_test: Skip # Only AOT has lightweight enough isolates to run those tests.
+
 [ $builder_tag == asan ]
 dart/transferable_throws_oom_test: SkipByDesign # This test tries to allocate too much memory on purpose. Still dartbug.com/37188
 
diff --git a/runtime/vm/BUILD.gn b/runtime/vm/BUILD.gn
index 7ab44f4..b29ca39 100644
--- a/runtime/vm/BUILD.gn
+++ b/runtime/vm/BUILD.gn
@@ -157,7 +157,7 @@
     }
     single_root_scheme = "org-dartlang-sdk"
     single_root_base = rebase_path("../../")
-    if (use_nnbd) {
+    if (!dont_use_nnbd) {
       libraries_specification_uri =
           "org-dartlang-sdk:///sdk_nnbd/lib/libraries.json"
     } else {
@@ -175,7 +175,7 @@
       "-Ddart.developer.causal_async_stacks=$allow_causal_async_stacks",
       "-Ddart.isVM=true",
     ]
-    if (use_nnbd) {
+    if (!dont_use_nnbd) {
       args += [ "--enable-experiment=non-nullable" ]
       args += [ "--nnbd-agnostic" ]
     }
diff --git a/runtime/vm/bootstrap_natives.cc b/runtime/vm/bootstrap_natives.cc
index 4b667d2..a6b8a6b 100644
--- a/runtime/vm/bootstrap_natives.cc
+++ b/runtime/vm/bootstrap_natives.cc
@@ -55,11 +55,11 @@
   return NULL;
 }
 
-const uint8_t* BootstrapNatives::Symbol(Dart_NativeFunction* nf) {
+const uint8_t* BootstrapNatives::Symbol(Dart_NativeFunction nf) {
   int num_entries = sizeof(BootStrapEntries) / sizeof(struct NativeEntries);
   for (int i = 0; i < num_entries; i++) {
     struct NativeEntries* entry = &(BootStrapEntries[i]);
-    if (reinterpret_cast<Dart_NativeFunction*>(entry->function_) == nf) {
+    if (reinterpret_cast<Dart_NativeFunction>(entry->function_) == nf) {
       return reinterpret_cast<const uint8_t*>(entry->name_);
     }
   }
@@ -69,11 +69,9 @@
 void Bootstrap::SetupNativeResolver() {
   Library& library = Library::Handle();
 
-  Dart_NativeEntryResolver resolver =
-      reinterpret_cast<Dart_NativeEntryResolver>(BootstrapNatives::Lookup);
+  Dart_NativeEntryResolver resolver = BootstrapNatives::Lookup;
 
-  Dart_NativeEntrySymbol symbol_resolver =
-      reinterpret_cast<Dart_NativeEntrySymbol>(BootstrapNatives::Symbol);
+  Dart_NativeEntrySymbol symbol_resolver = BootstrapNatives::Symbol;
 
   library = Library::AsyncLibrary();
   ASSERT(!library.IsNull());
@@ -144,8 +142,7 @@
 }
 
 bool Bootstrap::IsBootstrapResolver(Dart_NativeEntryResolver resolver) {
-  return (resolver ==
-          reinterpret_cast<Dart_NativeEntryResolver>(BootstrapNatives::Lookup));
+  return resolver == BootstrapNatives::Lookup;
 }
 
 }  // namespace dart
diff --git a/runtime/vm/bootstrap_natives.h b/runtime/vm/bootstrap_natives.h
index aab5d58..6e113a0 100644
--- a/runtime/vm/bootstrap_natives.h
+++ b/runtime/vm/bootstrap_natives.h
@@ -317,7 +317,7 @@
   V(Int32x4_setFlagZ, 2)                                                       \
   V(Int32x4_setFlagW, 2)                                                       \
   V(Int32x4_select, 3)                                                         \
-  V(Isolate_spawnFunction, 10)                                                 \
+  V(Isolate_spawnFunction, 11)                                                 \
   V(Isolate_spawnUri, 12)                                                      \
   V(Isolate_getPortAndCapabilitiesOfCurrentIsolate, 0)                         \
   V(Isolate_getCurrentRootUriStr, 0)                                           \
@@ -484,7 +484,7 @@
                                     int argument_count,
                                     bool* auto_setup_scope);
 
-  static const uint8_t* Symbol(Dart_NativeFunction* nf);
+  static const uint8_t* Symbol(Dart_NativeFunction nf);
 
 #define DECLARE_BOOTSTRAP_NATIVE(name, ignored)                                \
   static ObjectPtr DN_##name(Thread* thread, Zone* zone,                       \
diff --git a/runtime/vm/clustered_snapshot.cc b/runtime/vm/clustered_snapshot.cc
index 16baa7a..007eb2b 100644
--- a/runtime/vm/clustered_snapshot.cc
+++ b/runtime/vm/clustered_snapshot.cc
@@ -1203,10 +1203,6 @@
         field.InitializeGuardedListLengthInObjectOffset();
       }
     }
-
-    Isolate* isolate = Isolate::Current();
-    isolate->set_saved_initial_field_table(
-        std::shared_ptr<FieldTable>(isolate->field_table()->Clone()));
   }
 };
 
@@ -6511,6 +6507,19 @@
 #undef CHECK_FLAG
 #undef SET_FLAG
 
+    if (FLAG_null_safety == kNullSafetyOptionUnspecified) {
+      if (strncmp(cursor, "null-safety", end - cursor) == 0) {
+        FLAG_null_safety = kNullSafetyOptionStrong;
+        cursor = end;
+        continue;
+      }
+      if (strncmp(cursor, "no-null-safety", end - cursor) == 0) {
+        FLAG_null_safety = kNullSafetyOptionWeak;
+        cursor = end;
+        continue;
+      }
+    }
+
     cursor = end;
   }
 
diff --git a/runtime/vm/code_patcher_ia32.cc b/runtime/vm/code_patcher_ia32.cc
index 3c886ba..2c123dc 100644
--- a/runtime/vm/code_patcher_ia32.cc
+++ b/runtime/vm/code_patcher_ia32.cc
@@ -5,6 +5,7 @@
 #include "vm/globals.h"  // Needed here to get TARGET_ARCH_IA32.
 #if defined(TARGET_ARCH_IA32)
 
+#include "platform/unaligned.h"
 #include "vm/code_patcher.h"
 #include "vm/cpu.h"
 #include "vm/dart_entry.h"
@@ -89,21 +90,18 @@
 #endif  // DEBUG
   }
 
-  ObjectPtr data() const { return *reinterpret_cast<ObjectPtr*>(start_ + 1); }
+  ObjectPtr data() const {
+    return LoadUnaligned(reinterpret_cast<ObjectPtr*>(start_ + 1));
+  }
   void set_data(const Object& data) const {
-    uword* cache_addr = reinterpret_cast<uword*>(start_ + 1);
-    uword imm = static_cast<uword>(data.raw());
-    *cache_addr = imm;
+    StoreUnaligned(reinterpret_cast<ObjectPtr*>(start_ + 1), data.raw());
   }
 
   CodePtr target() const {
-    const uword imm = *reinterpret_cast<uword*>(start_ + 6);
-    return static_cast<CodePtr>(imm);
+    return LoadUnaligned(reinterpret_cast<CodePtr*>(start_ + 6));
   }
   void set_target(const Code& target) const {
-    uword* target_addr = reinterpret_cast<uword*>(start_ + 6);
-    uword imm = static_cast<uword>(target.raw());
-    *target_addr = imm;
+    StoreUnaligned(reinterpret_cast<CodePtr*>(start_ + 6), target.raw());
   }
 
  private:
diff --git a/runtime/vm/compiler/aot/aot_call_specializer.cc b/runtime/vm/compiler/aot/aot_call_specializer.cc
index 4da0354..316cbd0 100644
--- a/runtime/vm/compiler/aot/aot_call_specializer.cc
+++ b/runtime/vm/compiler/aot/aot_call_specializer.cc
@@ -294,7 +294,6 @@
 Value* AotCallSpecializer::PrepareStaticOpInput(Value* input,
                                                 intptr_t cid,
                                                 Instruction* call) {
-  ASSERT(I->can_use_strong_mode_types());
   ASSERT((cid == kDoubleCid) || (cid == kMintCid));
 
   if (input->Type()->is_nullable()) {
@@ -368,18 +367,13 @@
 
 bool AotCallSpecializer::TryOptimizeInstanceCallUsingStaticTypes(
     InstanceCallInstr* instr) {
-  ASSERT(I->can_use_strong_mode_types());
-
   const Token::Kind op_kind = instr->token_kind();
-
   return TryOptimizeIntegerOperation(instr, op_kind) ||
          TryOptimizeDoubleOperation(instr, op_kind);
 }
 
 bool AotCallSpecializer::TryOptimizeStaticCallUsingStaticTypes(
     StaticCallInstr* instr) {
-  ASSERT(I->can_use_strong_mode_types());
-
   const String& name = String::Handle(Z, instr->function().name());
   const Token::Kind op_kind = MethodTokenRecognizer::RecognizeTokenKind(name);
 
@@ -472,8 +466,6 @@
     return false;
   }
 
-  ASSERT(I->can_use_strong_mode_types());
-
   Definition* replacement = NULL;
   if (instr->ArgumentCount() == 2) {
     Value* left_value = instr->ArgumentValueAt(0);
@@ -801,43 +793,8 @@
 
   const CallTargets& targets = instr->Targets();
   const intptr_t receiver_idx = instr->FirstArgIndex();
-  if (I->can_use_strong_mode_types()) {
-    // In AOT strong mode, we avoid deopting speculation.
-    // TODO(ajcbik): replace this with actual analysis phase
-    //               that determines if checks are removed later.
-  } else if (speculative_policy_->IsAllowedForInlining(instr->deopt_id()) &&
-             !targets.is_empty()) {
-    if ((op_kind == Token::kINDEX) && TryReplaceWithIndexedOp(instr)) {
-      return;
-    }
-    if ((op_kind == Token::kASSIGN_INDEX) && TryReplaceWithIndexedOp(instr)) {
-      return;
-    }
-    if ((op_kind == Token::kEQ) && TryReplaceWithEqualityOp(instr, op_kind)) {
-      return;
-    }
 
-    if (Token::IsRelationalOperator(op_kind) &&
-        TryReplaceWithRelationalOp(instr, op_kind)) {
-      return;
-    }
-
-    if (Token::IsBinaryOperator(op_kind) &&
-        TryReplaceWithBinaryOp(instr, op_kind)) {
-      return;
-    }
-    if (Token::IsUnaryOperator(op_kind) &&
-        TryReplaceWithUnaryOp(instr, op_kind)) {
-      return;
-    }
-
-    if (TryInlineInstanceMethod(instr)) {
-      return;
-    }
-  }
-
-  if (I->can_use_strong_mode_types() &&
-      TryOptimizeInstanceCallUsingStaticTypes(instr)) {
+  if (TryOptimizeInstanceCallUsingStaticTypes(instr)) {
     return;
   }
 
diff --git a/runtime/vm/compiler/assembler/assembler_base.cc b/runtime/vm/compiler/assembler/assembler_base.cc
index 9f00096..96d98a1 100644
--- a/runtime/vm/compiler/assembler/assembler_base.cc
+++ b/runtime/vm/compiler/assembler/assembler_base.cc
@@ -179,7 +179,7 @@
     // Patch the handle into the code. Once the instructions are installed into
     // a raw code object and the pointer offsets are setup, the handle is
     // resolved.
-    region.Store<const Object*>(position, &object_);
+    region.StoreUnaligned<const Object*>(position, &object_);
     pointer_offsets_->Add(position);
   }
 
diff --git a/runtime/vm/compiler/assembler/assembler_base.h b/runtime/vm/compiler/assembler/assembler_base.h
index 419ec7d..03f0cfc 100644
--- a/runtime/vm/compiler/assembler/assembler_base.h
+++ b/runtime/vm/compiler/assembler/assembler_base.h
@@ -10,6 +10,7 @@
 #endif  // defined(DART_PRECOMPILED_RUNTIME)
 
 #include "platform/assert.h"
+#include "platform/unaligned.h"
 #include "vm/allocation.h"
 #include "vm/compiler/assembler/object_pool_builder.h"
 #include "vm/compiler/runtime_api.h"
@@ -164,7 +165,13 @@
   template <typename T>
   void Emit(T value) {
     ASSERT(HasEnsuredCapacity());
+#if defined(TARGET_ARCH_IA32) || defined(TARGET_ARCH_X64)
+    // Variable-length instructions in ia32/x64 have unaligned immediates.
+    StoreUnaligned(reinterpret_cast<T*>(cursor_), value);
+#else
+    // Other architecture have aligned, fixed-length instructions.
     *reinterpret_cast<T*>(cursor_) = value;
+#endif
     cursor_ += sizeof(T);
   }
 
@@ -181,14 +188,26 @@
   T Load(intptr_t position) {
     ASSERT(position >= 0 &&
            position <= (Size() - static_cast<intptr_t>(sizeof(T))));
+#if defined(TARGET_ARCH_IA32) || defined(TARGET_ARCH_X64)
+    // Variable-length instructions in ia32/x64 have unaligned immediates.
+    return LoadUnaligned(reinterpret_cast<T*>(contents_ + position));
+#else
+    // Other architecture have aligned, fixed-length instructions.
     return *reinterpret_cast<T*>(contents_ + position);
+#endif
   }
 
   template <typename T>
   void Store(intptr_t position, T value) {
     ASSERT(position >= 0 &&
            position <= (Size() - static_cast<intptr_t>(sizeof(T))));
+#if defined(TARGET_ARCH_IA32) || defined(TARGET_ARCH_X64)
+    // Variable-length instructions in ia32/x64 have unaligned immediates.
+    StoreUnaligned(reinterpret_cast<T*>(contents_ + position), value);
+#else
+    // Other architecture have aligned, fixed-length instructions.
     *reinterpret_cast<T*>(contents_ + position) = value;
+#endif
   }
 
   const ZoneGrowableArray<intptr_t>& pointer_offsets() const {
diff --git a/runtime/vm/compiler/assembler/assembler_ia32.h b/runtime/vm/compiler/assembler/assembler_ia32.h
index f11a048..f2bbd9f 100644
--- a/runtime/vm/compiler/assembler/assembler_ia32.h
+++ b/runtime/vm/compiler/assembler/assembler_ia32.h
@@ -600,6 +600,14 @@
     cmpl(reg, Immediate(immediate));
   }
 
+  void LoadImmediate(Register reg, int32_t immediate) {
+    if (immediate == 0) {
+      xorl(reg, reg);
+    } else {
+      movl(reg, Immediate(immediate));
+    }
+  }
+
   void Drop(intptr_t stack_elements);
 
   void LoadIsolate(Register dst);
diff --git a/runtime/vm/compiler/assembler/assembler_x64.h b/runtime/vm/compiler/assembler/assembler_x64.h
index b24b9eb..4a02ad7 100644
--- a/runtime/vm/compiler/assembler/assembler_x64.h
+++ b/runtime/vm/compiler/assembler/assembler_x64.h
@@ -711,6 +711,9 @@
 
   // Unlike movq this can affect the flags or use the constant pool.
   void LoadImmediate(Register reg, const Immediate& imm);
+  void LoadImmediate(Register reg, int32_t immediate) {
+    LoadImmediate(reg, Immediate(immediate));
+  }
 
   void LoadIsolate(Register dst);
   void LoadDispatchTable(Register dst);
diff --git a/runtime/vm/compiler/assembler/disassembler.cc b/runtime/vm/compiler/assembler/disassembler.cc
index 45d4f99..8af6086 100644
--- a/runtime/vm/compiler/assembler/disassembler.cc
+++ b/runtime/vm/compiler/assembler/disassembler.cc
@@ -4,6 +4,7 @@
 
 #include "vm/compiler/assembler/disassembler.h"
 
+#include "platform/unaligned.h"
 #include "vm/code_patcher.h"
 #include "vm/deopt_instructions.h"
 #include "vm/globals.h"
@@ -232,7 +233,7 @@
   Object& obj = Object::Handle(zone);
   for (intptr_t i = code.pointer_offsets_length() - 1; i >= 0; i--) {
     const uword addr = code.GetPointerOffsetAt(i) + code.PayloadStart();
-    obj = *reinterpret_cast<ObjectPtr*>(addr);
+    obj = LoadUnaligned(reinterpret_cast<ObjectPtr*>(addr));
     THR_Print(" %d : %#" Px " '%s'\n", code.GetPointerOffsetAt(i), addr,
               obj.ToCString());
   }
@@ -417,7 +418,9 @@
           cls ^= code.owner();
           if (cls.IsNull()) {
             THR_Print("  0x%" Px ": %s, (%s)%s\n", base + offset,
-                      code.QualifiedName(), skind, s_entry_point);
+                      code.QualifiedName(Object::kScrubbedName,
+                                         Object::NameDisambiguation::kYes),
+                      skind, s_entry_point);
           } else {
             THR_Print("  0x%" Px ": allocation stub for %s, (%s)%s\n",
                       base + offset, cls.ToCString(), skind, s_entry_point);
diff --git a/runtime/vm/compiler/assembler/disassembler_x86.cc b/runtime/vm/compiler/assembler/disassembler_x86.cc
index 93f3129..78c9458 100644
--- a/runtime/vm/compiler/assembler/disassembler_x86.cc
+++ b/runtime/vm/compiler/assembler/disassembler_x86.cc
@@ -9,6 +9,7 @@
 
 #include "vm/compiler/assembler/disassembler.h"
 
+#include "platform/unaligned.h"
 #include "platform/utils.h"
 #include "vm/allocation.h"
 #include "vm/constants_x86.h"
@@ -403,7 +404,7 @@
   switch (mod) {
     case 0:
       if ((rm & 7) == 5) {
-        int32_t disp = *reinterpret_cast<int32_t*>(modrmp + 1);
+        int32_t disp = LoadUnaligned(reinterpret_cast<int32_t*>(modrmp + 1));
         Print("[rip");
         PrintDisp(disp, "]");
         return 5;
@@ -419,7 +420,7 @@
           return 2;
         } else if (base == 5) {
           // base == rbp means no base register (when mod == 0).
-          int32_t disp = *reinterpret_cast<int32_t*>(modrmp + 2);
+          int32_t disp = LoadUnaligned(reinterpret_cast<int32_t*>(modrmp + 2));
           Print("[%s*%d", NameOfCPURegister(index), 1 << scale);
           PrintDisp(disp, "]");
           return 6;
@@ -444,8 +445,9 @@
         uint8_t sib = *(modrmp + 1);
         int scale, index, base;
         get_sib(sib, &scale, &index, &base);
-        int disp = (mod == 2) ? *reinterpret_cast<int32_t*>(modrmp + 2)
-                              : *reinterpret_cast<int8_t*>(modrmp + 2);
+        int disp = (mod == 2)
+                       ? LoadUnaligned(reinterpret_cast<int32_t*>(modrmp + 2))
+                       : *reinterpret_cast<int8_t*>(modrmp + 2);
         if (index == 4 && (base & 7) == 4 && scale == 0 /*times_1*/) {
           Print("[%s", NameOfCPURegister(base));
           PrintDisp(disp, "]");
@@ -457,8 +459,9 @@
         return mod == 2 ? 6 : 3;
       } else {
         // No sib.
-        int disp = (mod == 2) ? *reinterpret_cast<int32_t*>(modrmp + 1)
-                              : *reinterpret_cast<int8_t*>(modrmp + 1);
+        int disp = (mod == 2)
+                       ? LoadUnaligned(reinterpret_cast<int32_t*>(modrmp + 1))
+                       : *reinterpret_cast<int8_t*>(modrmp + 1);
         Print("[%s", NameOfCPURegister(rm));
         PrintDisp(disp, "]");
         return (mod == 2) ? 5 : 2;
@@ -490,18 +493,18 @@
       break;
     case WORD_SIZE:
       if (sign_extend) {
-        value = *reinterpret_cast<int16_t*>(data);
+        value = LoadUnaligned(reinterpret_cast<int16_t*>(data));
       } else {
-        value = *reinterpret_cast<uint16_t*>(data);
+        value = LoadUnaligned(reinterpret_cast<uint16_t*>(data));
       }
       count = 2;
       break;
     case DOUBLEWORD_SIZE:
     case QUADWORD_SIZE:
       if (sign_extend) {
-        value = *reinterpret_cast<int32_t*>(data);
+        value = LoadUnaligned(reinterpret_cast<int32_t*>(data));
       } else {
-        value = *reinterpret_cast<uint32_t*>(data);
+        value = LoadUnaligned(reinterpret_cast<uint32_t*>(data));
       }
       count = 4;
       break;
@@ -525,21 +528,21 @@
     if (byte_count == 1) {
       int8_t v8 = static_cast<int8_t>(value);
       if (v8 < 0 && signed_value) {
-        Print("-%#" Px32, static_cast<int8_t>(-v8));
+        Print("-%#" Px32, -static_cast<uint8_t>(v8));
       } else {
         Print("%#" Px32, static_cast<uint8_t>(v8));
       }
     } else if (byte_count == 2) {
       int16_t v16 = static_cast<int16_t>(value);
       if (v16 < 0 && signed_value) {
-        Print("-%#" Px32, static_cast<int16_t>(-v16));
+        Print("-%#" Px32, -static_cast<uint16_t>(v16));
       } else {
         Print("%#" Px32, static_cast<uint16_t>(v16));
       }
     } else if (byte_count == 4) {
       int32_t v32 = static_cast<int32_t>(value);
       if (v32 < 0 && signed_value) {
-        Print("-%#010" Px32, static_cast<int32_t>(-v32));
+        Print("-%#010" Px32, -static_cast<uint32_t>(v32));
       } else {
         if (v32 > 0xffff) {
           Print("%#010" Px32, v32);
@@ -550,7 +553,7 @@
     } else if (byte_count == 8) {
       int64_t v64 = static_cast<int64_t>(value);
       if (v64 < 0 && signed_value) {
-        Print("-%#018" Px64, static_cast<int64_t>(-v64));
+        Print("-%#018" Px64, -static_cast<uint64_t>(v64));
       } else {
         if (v64 > 0xffffffffll) {
           Print("%#018" Px64, v64);
@@ -778,7 +781,8 @@
   if (FLAG_disassemble_relative) {
     Print("%+d", disp);
   } else {
-    PrintAddress(pc + disp);
+    PrintAddress(
+        reinterpret_cast<uint8_t*>(reinterpret_cast<uintptr_t>(pc) + disp));
   }
 }
 
@@ -810,7 +814,7 @@
 int DisassemblerX64::JumpConditional(uint8_t* data) {
   ASSERT(0x0F == *data);
   uint8_t cond = *(data + 1) & 0x0F;
-  int32_t disp = *reinterpret_cast<int32_t*>(data + 2) + 6;
+  int32_t disp = LoadUnaligned(reinterpret_cast<int32_t*>(data + 2)) + 6;
   const char* mnem = conditional_code_suffix[cond];
   Print("j%s ", mnem);
   PrintJump(data, disp);
@@ -1178,15 +1182,15 @@
       int imm_bytes = 0;
       switch (operand_size()) {
         case WORD_SIZE:
-          addr = *reinterpret_cast<int16_t*>(*data + 1);
+          addr = LoadUnaligned(reinterpret_cast<int16_t*>(*data + 1));
           imm_bytes = 2;
           break;
         case DOUBLEWORD_SIZE:
-          addr = *reinterpret_cast<int32_t*>(*data + 1);
+          addr = LoadUnaligned(reinterpret_cast<int32_t*>(*data + 1));
           imm_bytes = 4;
           break;
         case QUADWORD_SIZE:
-          addr = *reinterpret_cast<int64_t*>(*data + 1);
+          addr = LoadUnaligned(reinterpret_cast<int64_t*>(*data + 1));
           imm_bytes = 8;
           break;
         default:
@@ -1200,7 +1204,7 @@
     }
 
     case CALL_JUMP_INSTR: {
-      int32_t disp = *reinterpret_cast<int32_t*>(*data + 1) + 5;
+      int32_t disp = LoadUnaligned(reinterpret_cast<int32_t*>(*data + 1)) + 5;
       Print("%s ", idesc.mnem);
       PrintJump(*data, disp);
       (*data) += 5;
@@ -1635,8 +1639,9 @@
       case 0x6B: {
         int mod, regop, rm;
         get_modrm(*(data + 1), &mod, &regop, &rm);
-        int32_t imm =
-            *data == 0x6B ? *(data + 2) : *reinterpret_cast<int32_t*>(data + 2);
+        int32_t imm = *data == 0x6B
+                          ? *(data + 2)
+                          : LoadUnaligned(reinterpret_cast<int32_t*>(data + 2));
         Print("imul%s %s,%s,", operand_size_code(), NameOfCPURegister(regop),
               NameOfCPURegister(rm));
         PrintImmediateValue(imm);
@@ -1800,7 +1805,8 @@
       }
       case 0x68:
         Print("push ");
-        PrintImmediateValue(*reinterpret_cast<int32_t*>(data + 1));
+        PrintImmediateValue(
+            LoadUnaligned(reinterpret_cast<int32_t*>(data + 1)));
         data += 5;
         break;
 
@@ -1995,7 +2001,8 @@
     for (intptr_t i = 0; i < offsets_length; i++) {
       uword addr = code.GetPointerOffsetAt(i) + code.PayloadStart();
       if ((pc <= addr) && (addr < (pc + instruction_length))) {
-        *object = &Object::Handle(*reinterpret_cast<ObjectPtr*>(addr));
+        *object =
+            &Object::Handle(LoadUnaligned(reinterpret_cast<ObjectPtr*>(addr)));
         break;
       }
     }
diff --git a/runtime/vm/compiler/backend/flow_graph.cc b/runtime/vm/compiler/backend/flow_graph.cc
index c930e71..6c7297f 100644
--- a/runtime/vm/compiler/backend/flow_graph.cc
+++ b/runtime/vm/compiler/backend/flow_graph.cc
@@ -424,8 +424,8 @@
   if (function().IsDynamicFunction() && IsReceiver(receiver->definition())) {
     // Call receiver is callee receiver: calling "this.g()" in f().
     receiver_class = function().Owner();
-  } else if (isolate()->can_use_strong_mode_types()) {
-    // In strong mode, get the receiver's compile type. Note that
+  } else {
+    // Get the receiver's compile type. Note that
     // we allow nullable types, which may result in just generating
     // a null check rather than the more elaborate class check
     CompileType* type = receiver->Type();
@@ -1381,7 +1381,7 @@
           captured_parameters_->Add(index);
         }
 
-        if ((phi != NULL) && isolate()->can_use_strong_mode_types()) {
+        if (phi != nullptr) {
           // Assign type to Phi if it doesn't have a type yet.
           // For a Phi to appear in the local variable it either was placed
           // there as incoming value by renaming or it was stored there by
diff --git a/runtime/vm/compiler/backend/flow_graph_compiler.cc b/runtime/vm/compiler/backend/flow_graph_compiler.cc
index a00b77c..60cbfb7 100644
--- a/runtime/vm/compiler/backend/flow_graph_compiler.cc
+++ b/runtime/vm/compiler/backend/flow_graph_compiler.cc
@@ -1309,26 +1309,8 @@
         }
         return false;
       }
-      case FunctionLayout::kImplicitSetter: {
-        if (!isolate()->argument_type_checks()) {
-          Field& field = Field::Handle(function().accessor_field());
-          ASSERT(!field.IsNull());
-#if defined(DEBUG)
-          // HACK: Clone the field to ignore assertion in Field::guarded_cid().
-          // The same reasons as above apply, but we only check if it's dynamic.
-          field = field.CloneFromOriginal();
-#endif
-
-          if (field.is_instance() && field.guarded_cid() == kDynamicCid) {
-            SpecialStatsBegin(CombinedCodeStatistics::kTagIntrinsics);
-            GenerateSetterIntrinsic(compiler::target::Field::OffsetOf(field));
-            SpecialStatsEnd(CombinedCodeStatistics::kTagIntrinsics);
-            return true;
-          }
-          return false;
-        }
+      case FunctionLayout::kImplicitSetter:
         break;
-      }
 #if !defined(TARGET_ARCH_IA32)
       case FunctionLayout::kMethodExtractor: {
         auto& extracted_method = Function::ZoneHandle(
diff --git a/runtime/vm/compiler/backend/flow_graph_compiler.h b/runtime/vm/compiler/backend/flow_graph_compiler.h
index 62a91c6..1635fc1 100644
--- a/runtime/vm/compiler/backend/flow_graph_compiler.h
+++ b/runtime/vm/compiler/backend/flow_graph_compiler.h
@@ -1094,7 +1094,6 @@
                                         intptr_t type_arguments_field_offset);
 
   void GenerateGetterIntrinsic(intptr_t offset);
-  void GenerateSetterIntrinsic(intptr_t offset);
 
   // Perform a greedy local register allocation.  Consider all registers free.
   void AllocateRegistersLocally(Instruction* instr);
diff --git a/runtime/vm/compiler/backend/flow_graph_compiler_arm.cc b/runtime/vm/compiler/backend/flow_graph_compiler_arm.cc
index 58b1ee1..c1349ab 100644
--- a/runtime/vm/compiler/backend/flow_graph_compiler_arm.cc
+++ b/runtime/vm/compiler/backend/flow_graph_compiler_arm.cc
@@ -871,20 +871,6 @@
   __ Ret();
 }
 
-void FlowGraphCompiler::GenerateSetterIntrinsic(intptr_t offset) {
-  // LR: return address.
-  // SP+1: receiver.
-  // SP+0: value.
-  // Sequence node has one store node and one return NULL node.
-  __ Comment("Intrinsic Setter");
-  __ ldr(R0,
-         compiler::Address(SP, 1 * compiler::target::kWordSize));  // Receiver.
-  __ ldr(R1, compiler::Address(SP, 0 * compiler::target::kWordSize));  // Value.
-  __ StoreIntoObjectOffset(R0, offset, R1);
-  __ LoadObject(R0, Object::null_object());
-  __ Ret();
-}
-
 void FlowGraphCompiler::EmitFrameEntry() {
   const Function& function = parsed_function().function();
   if (CanOptimizeFunction() && function.IsOptimizable() &&
diff --git a/runtime/vm/compiler/backend/flow_graph_compiler_arm64.cc b/runtime/vm/compiler/backend/flow_graph_compiler_arm64.cc
index 60bad9af..a7bbc2e 100644
--- a/runtime/vm/compiler/backend/flow_graph_compiler_arm64.cc
+++ b/runtime/vm/compiler/backend/flow_graph_compiler_arm64.cc
@@ -832,19 +832,6 @@
   __ ret();
 }
 
-void FlowGraphCompiler::GenerateSetterIntrinsic(intptr_t offset) {
-  // LR: return address.
-  // SP+1: receiver.
-  // SP+0: value.
-  // Sequence node has one store node and one return NULL node.
-  __ Comment("Intrinsic Setter");
-  __ LoadFromOffset(R0, SP, 1 * kWordSize);  // Receiver.
-  __ LoadFromOffset(R1, SP, 0 * kWordSize);  // Value.
-  __ StoreIntoObjectOffset(R0, offset, R1);
-  __ LoadObject(R0, Object::null_object());
-  __ ret();
-}
-
 void FlowGraphCompiler::EmitFrameEntry() {
   const Function& function = parsed_function().function();
   if (CanOptimizeFunction() && function.IsOptimizable() &&
diff --git a/runtime/vm/compiler/backend/flow_graph_compiler_ia32.cc b/runtime/vm/compiler/backend/flow_graph_compiler_ia32.cc
index 9fbb02c..9a69432 100644
--- a/runtime/vm/compiler/backend/flow_graph_compiler_ia32.cc
+++ b/runtime/vm/compiler/backend/flow_graph_compiler_ia32.cc
@@ -752,21 +752,6 @@
   __ ret();
 }
 
-void FlowGraphCompiler::GenerateSetterIntrinsic(intptr_t offset) {
-  // TOS: return address.
-  // +1 : value
-  // +2 : receiver.
-  // Sequence node has one store node and one return NULL node.
-  __ Comment("Intrinsic Setter");
-  __ movl(EAX, compiler::Address(ESP, 2 * kWordSize));  // Receiver.
-  __ movl(EBX, compiler::Address(ESP, 1 * kWordSize));  // Value.
-  __ StoreIntoObject(EAX, compiler::FieldAddress(EAX, offset), EBX);
-  const compiler::Immediate& raw_null =
-      compiler::Immediate(static_cast<intptr_t>(Object::null()));
-  __ movl(EAX, raw_null);
-  __ ret();
-}
-
 // NOTE: If the entry code shape changes, ReturnAddressLocator in profiler.cc
 // needs to be updated to match.
 void FlowGraphCompiler::EmitFrameEntry() {
diff --git a/runtime/vm/compiler/backend/flow_graph_compiler_x64.cc b/runtime/vm/compiler/backend/flow_graph_compiler_x64.cc
index 091b51f..b8c8ba7 100644
--- a/runtime/vm/compiler/backend/flow_graph_compiler_x64.cc
+++ b/runtime/vm/compiler/backend/flow_graph_compiler_x64.cc
@@ -837,19 +837,6 @@
   __ ret();
 }
 
-void FlowGraphCompiler::GenerateSetterIntrinsic(intptr_t offset) {
-  // TOS: return address.
-  // +1 : value
-  // +2 : receiver.
-  // Sequence node has one store node and one return NULL node.
-  __ Comment("Intrinsic Setter");
-  __ movq(RAX, compiler::Address(RSP, 2 * kWordSize));  // Receiver.
-  __ movq(RBX, compiler::Address(RSP, 1 * kWordSize));  // Value.
-  __ StoreIntoObject(RAX, compiler::FieldAddress(RAX, offset), RBX);
-  __ LoadObject(RAX, Object::null_object());
-  __ ret();
-}
-
 // NOTE: If the entry code shape changes, ReturnAddressLocator in profiler.cc
 // needs to be updated to match.
 void FlowGraphCompiler::EmitFrameEntry() {
diff --git a/runtime/vm/compiler/backend/il.cc b/runtime/vm/compiler/backend/il.cc
index a37b4ef..ebd5cc6 100644
--- a/runtime/vm/compiler/backend/il.cc
+++ b/runtime/vm/compiler/backend/il.cc
@@ -2337,8 +2337,7 @@
 
   if ((left_type->ToCid() == kSmiCid) && (right_type->ToCid() == kSmiCid)) {
     op_cid = kSmiCid;
-  } else if (Isolate::Current()->can_use_strong_mode_types() &&
-             FlowGraphCompiler::SupportsUnboxedInt64() &&
+  } else if (FlowGraphCompiler::SupportsUnboxedInt64() &&
              // TODO(dartbug.com/30480): handle nullable types here
              left_type->IsNullableInt() && !left_type->is_nullable() &&
              right_type->IsNullableInt() && !right_type->is_nullable()) {
diff --git a/runtime/vm/compiler/backend/inliner.cc b/runtime/vm/compiler/backend/inliner.cc
index 169d57d..24ad6a3 100644
--- a/runtime/vm/compiler/backend/inliner.cc
+++ b/runtime/vm/compiler/backend/inliner.cc
@@ -2535,7 +2535,7 @@
   }
 
   Instruction* cursor = *entry;
-  if (flow_graph->isolate()->argument_type_checks() && !is_unchecked_call &&
+  if (!is_unchecked_call &&
       (kind != MethodRecognizer::kObjectArraySetIndexedUnchecked &&
        kind != MethodRecognizer::kGrowableArraySetIndexedUnchecked)) {
     // Only type check for the value. A type check for the index is not
@@ -2827,60 +2827,6 @@
   return true;
 }
 
-// Adds an explicit bounds check for a typed getter/setter.
-static void PrepareInlineTypedArrayBoundsCheck(FlowGraph* flow_graph,
-                                               Instruction* call,
-                                               intptr_t array_cid,
-                                               intptr_t view_cid,
-                                               Definition* array,
-                                               Definition** byte_index,
-                                               Instruction** cursor) {
-  ASSERT(array_cid != kDynamicCid);
-
-  LoadFieldInstr* length = new (Z) LoadFieldInstr(
-      new (Z) Value(array), Slot::GetLengthFieldForArrayCid(array_cid),
-      call->token_pos());
-  *cursor = flow_graph->AppendTo(*cursor, length, NULL, FlowGraph::kValue);
-
-  intptr_t element_size = compiler::target::Instance::ElementSizeFor(array_cid);
-  ConstantInstr* bytes_per_element =
-      flow_graph->GetConstant(Smi::Handle(Z, Smi::New(element_size)));
-  BinarySmiOpInstr* len_in_bytes = new (Z)
-      BinarySmiOpInstr(Token::kMUL, new (Z) Value(length),
-                       new (Z) Value(bytes_per_element), call->deopt_id());
-  *cursor = flow_graph->AppendTo(*cursor, len_in_bytes, call->env(),
-                                 FlowGraph::kValue);
-
-  // adjusted_length = len_in_bytes - (element_size - 1).
-  Definition* adjusted_length = len_in_bytes;
-  intptr_t adjustment =
-      compiler::target::Instance::ElementSizeFor(view_cid) - 1;
-  if (adjustment > 0) {
-    ConstantInstr* length_adjustment =
-        flow_graph->GetConstant(Smi::Handle(Z, Smi::New(adjustment)));
-    adjusted_length = new (Z)
-        BinarySmiOpInstr(Token::kSUB, new (Z) Value(len_in_bytes),
-                         new (Z) Value(length_adjustment), call->deopt_id());
-    *cursor = flow_graph->AppendTo(*cursor, adjusted_length, call->env(),
-                                   FlowGraph::kValue);
-  }
-
-  // Check adjusted_length > 0.
-  // TODO(ajcbik): this is a synthetic check that cannot
-  // be directly linked to a use, is that a sign of wrong use?
-  ConstantInstr* zero = flow_graph->GetConstant(Object::smi_zero());
-  Definition* check =
-      flow_graph->CreateCheckBound(adjusted_length, zero, call->deopt_id());
-  *cursor =
-      flow_graph->AppendTo(*cursor, check, call->env(), FlowGraph::kValue);
-
-  // Check 0 <= byte_index < adjusted_length.
-  *byte_index = flow_graph->CreateCheckBound(adjusted_length, *byte_index,
-                                             call->deopt_id());
-  *cursor = flow_graph->AppendTo(*cursor, *byte_index, call->env(),
-                                 FlowGraph::kValue);
-}
-
 // Emits preparatory code for a typed getter/setter.
 // Handles three cases:
 //   (1) dynamic:  generates load untagged (internal or external)
@@ -2919,12 +2865,12 @@
   // Dynamic calls are polymorphic due to:
   // (A) extra bounds check computations (length stored in receiver),
   // (B) external/internal typed data in receiver.
-  // For Dart2, both issues are resolved in the inlined code.
+  // Both issues are resolved in the inlined code.
+  // All getters that go through InlineByteArrayBaseLoad() have explicit
+  // bounds checks in all their clients in the library, so we can omit yet
+  // another inlined bounds check.
   if (array_cid == kDynamicCid) {
     ASSERT(call->IsStaticCall());
-    if (!flow_graph->isolate()->can_use_strong_mode_types()) {
-      return false;
-    }
   }
 
   Definition* array = receiver;
@@ -2935,15 +2881,6 @@
   (*entry)->InheritDeoptTarget(Z, call);
   Instruction* cursor = *entry;
 
-  // All getters that go through InlineByteArrayBaseLoad() have explicit
-  // bounds checks in all their clients in the library, so we can omit yet
-  // another inlined bounds check when compiling for Dart2 (resolves (A)).
-  const bool needs_bounds_check =
-      !flow_graph->isolate()->can_use_strong_mode_types();
-  if (needs_bounds_check) {
-    PrepareInlineTypedArrayBoundsCheck(flow_graph, call, array_cid, view_cid,
-                                       array, &index, &cursor);
-  }
 
   // Generates a template for the load, either a dynamic conditional
   // that dispatches on external and internal storage, or a single
@@ -2999,12 +2936,12 @@
   // Dynamic calls are polymorphic due to:
   // (A) extra bounds check computations (length stored in receiver),
   // (B) external/internal typed data in receiver.
-  // For Dart2, both issues are resolved in the inlined code.
+  // Both issues are resolved in the inlined code.
+  // All setters that go through InlineByteArrayBaseLoad() have explicit
+  // bounds checks in all their clients in the library, so we can omit yet
+  // another inlined bounds check.
   if (array_cid == kDynamicCid) {
     ASSERT(call->IsStaticCall());
-    if (!flow_graph->isolate()->can_use_strong_mode_types()) {
-      return false;
-    }
   }
 
   Definition* array = receiver;
@@ -3015,16 +2952,6 @@
   (*entry)->InheritDeoptTarget(Z, call);
   Instruction* cursor = *entry;
 
-  // All setters that go through InlineByteArrayBaseLoad() have explicit
-  // bounds checks in all their clients in the library, so we can omit yet
-  // another inlined bounds check when compiling for Dart2 (resolves (A)).
-  const bool needs_bounds_check =
-      !flow_graph->isolate()->can_use_strong_mode_types();
-  if (needs_bounds_check) {
-    PrepareInlineTypedArrayBoundsCheck(flow_graph, call, array_cid, view_cid,
-                                       array, &index, &cursor);
-  }
-
   // Prepare additional checks. In AOT Dart2, we use an explicit null check and
   // non-speculative unboxing for most value types.
   Cids* value_check = nullptr;
@@ -3037,8 +2964,7 @@
     case kExternalTypedDataUint8ClampedArrayCid:
     case kTypedDataInt16ArrayCid:
     case kTypedDataUint16ArrayCid: {
-      if (CompilerState::Current().is_aot() &&
-          flow_graph->isolate()->can_use_strong_mode_types()) {
+      if (CompilerState::Current().is_aot()) {
         needs_null_check = true;
       } else {
         // Check that value is always smi.
@@ -3048,8 +2974,7 @@
     }
     case kTypedDataInt32ArrayCid:
     case kTypedDataUint32ArrayCid:
-      if (CompilerState::Current().is_aot() &&
-          flow_graph->isolate()->can_use_strong_mode_types()) {
+      if (CompilerState::Current().is_aot()) {
         needs_null_check = true;
       } else {
         // On 64-bit platforms assume that stored value is always a smi.
@@ -3061,8 +2986,7 @@
     case kTypedDataFloat32ArrayCid:
     case kTypedDataFloat64ArrayCid: {
       // Check that value is always double.
-      if (CompilerState::Current().is_aot() &&
-          flow_graph->isolate()->can_use_strong_mode_types()) {
+      if (CompilerState::Current().is_aot()) {
         needs_null_check = true;
       } else {
         value_check = Cids::CreateMonomorphic(Z, kDoubleCid);
@@ -3082,10 +3006,9 @@
     case kTypedDataInt64ArrayCid:
     case kTypedDataUint64ArrayCid:
       // StoreIndexedInstr takes unboxed int64, so value is
-      // checked when unboxing. In AOT Dart2, we use an
+      // checked when unboxing. In AOT, we use an
       // explicit null check and non-speculative unboxing.
-      needs_null_check = CompilerState::Current().is_aot() &&
-                         flow_graph->isolate()->can_use_strong_mode_types();
+      needs_null_check = CompilerState::Current().is_aot();
       break;
     default:
       // Array cids are already checked in the caller.
diff --git a/runtime/vm/compiler/backend/locations.cc b/runtime/vm/compiler/backend/locations.cc
index f5853c2..c9b0dac 100644
--- a/runtime/vm/compiler/backend/locations.cc
+++ b/runtime/vm/compiler/backend/locations.cc
@@ -41,7 +41,8 @@
   intptr_t count = 0;
   while (registers != 0) {
     ++count;
-    registers &= (registers - 1);  // Clear the least significant bit set.
+    // Clear the least significant bit set.
+    registers &= (static_cast<uintptr_t>(registers) - 1);
   }
   return count;
 }
diff --git a/runtime/vm/compiler/backend/locations.h b/runtime/vm/compiler/backend/locations.h
index a270ad8..558767f 100644
--- a/runtime/vm/compiler/backend/locations.h
+++ b/runtime/vm/compiler/backend/locations.h
@@ -97,7 +97,7 @@
   // Note that two locations with different kinds should never point to
   // the same place. For example kQuadStackSlot location should never intersect
   // with kDoubleStackSlot location.
-  enum Kind {
+  enum Kind : intptr_t {
     // This location is invalid.  Payload must be zero.
     kInvalid = 0,
 
diff --git a/runtime/vm/compiler/backend/range_analysis.cc b/runtime/vm/compiler/backend/range_analysis.cc
index b960558..ff24226 100644
--- a/runtime/vm/compiler/backend/range_analysis.cc
+++ b/runtime/vm/compiler/backend/range_analysis.cc
@@ -1827,7 +1827,7 @@
   } else if (shift_count == 0 ||
              (limit > 0 && Utils::IsInt(static_cast<int>(limit), value))) {
     // Result stays in 64 bit range.
-    const int64_t result = value << shift_count;
+    const int64_t result = static_cast<uint64_t>(value) << shift_count;
     return RangeBoundary(result);
   }
 
diff --git a/runtime/vm/compiler/backend/type_propagator.cc b/runtime/vm/compiler/backend/type_propagator.cc
index 81d0f03..1f4c05d 100644
--- a/runtime/vm/compiler/backend/type_propagator.cc
+++ b/runtime/vm/compiler/backend/type_propagator.cc
@@ -59,15 +59,13 @@
     types_.Add(NULL);
   }
 
-  if (Isolate::Current()->argument_type_checks()) {
-    asserts_ = new ZoneGrowableArray<AssertAssignableInstr*>(
-        flow_graph->current_ssa_temp_index());
-    for (intptr_t i = 0; i < flow_graph->current_ssa_temp_index(); i++) {
-      asserts_->Add(NULL);
-    }
-
-    collected_asserts_ = new ZoneGrowableArray<intptr_t>(10);
+  asserts_ = new ZoneGrowableArray<AssertAssignableInstr*>(
+      flow_graph->current_ssa_temp_index());
+  for (intptr_t i = 0; i < flow_graph->current_ssa_temp_index(); i++) {
+    asserts_->Add(NULL);
   }
+
+  collected_asserts_ = new ZoneGrowableArray<intptr_t>(10);
 }
 
 void FlowGraphTypePropagator::Propagate() {
@@ -121,13 +119,7 @@
 
   const intptr_t rollback_point = rollback_.length();
 
-  // When having assertions enabled or when running in strong-mode the IR graphs
-  // can contain [AssertAssignableInstr]s and we therefore enable this
-  // optimization.
-  Isolate* isolate = Isolate::Current();
-  if (isolate->argument_type_checks()) {
-    StrengthenAsserts(block);
-  }
+  StrengthenAsserts(block);
 
   block->Accept(this);
 
@@ -1096,43 +1088,41 @@
   const bool is_unchecked_entry_param =
       graph_entry->unchecked_entry() == block_;
 
-  if (Isolate::Current()->can_use_strong_mode_types()) {
-    LocalScope* scope = graph_entry->parsed_function().scope();
-    // Note: in catch-blocks we have ParameterInstr for each local variable
-    // not only for normal parameters.
-    const LocalVariable* param = nullptr;
-    if (scope != nullptr && (index() < scope->num_variables())) {
-      param = scope->VariableAt(index());
-    } else if (index() < function.NumParameters()) {
-      param = graph_entry->parsed_function().RawParameterVariable(index());
+  LocalScope* scope = graph_entry->parsed_function().scope();
+  // Note: in catch-blocks we have ParameterInstr for each local variable
+  // not only for normal parameters.
+  const LocalVariable* param = nullptr;
+  if (scope != nullptr && (index() < scope->num_variables())) {
+    param = scope->VariableAt(index());
+  } else if (index() < function.NumParameters()) {
+    param = graph_entry->parsed_function().RawParameterVariable(index());
+  }
+  if (param != nullptr) {
+    CompileType* inferred_type = NULL;
+    if (!block_->IsCatchBlockEntry()) {
+      inferred_type = param->parameter_type();
     }
-    if (param != nullptr) {
-      CompileType* inferred_type = NULL;
-      if (!block_->IsCatchBlockEntry()) {
-        inferred_type = param->parameter_type();
-      }
-      // Best bet: use inferred type if it is a concrete class or int.
-      if ((inferred_type != nullptr) &&
-          ((inferred_type->ToNullableCid() != kDynamicCid) ||
-           inferred_type->IsNullableInt())) {
-        TraceStrongModeType(this, inferred_type);
-        return *inferred_type;
-      }
-      // If parameter type was checked by caller, then use Dart type annotation,
-      // plus non-nullability from inferred type if known.
-      if (param->was_type_checked_by_caller() ||
-          (is_unchecked_entry_param &&
-           !param->is_explicit_covariant_parameter())) {
-        const bool is_nullable =
-            (inferred_type == NULL) || inferred_type->is_nullable();
-        TraceStrongModeType(this, param->type());
-        return CompileType::FromAbstractType(param->type(), is_nullable);
-      }
-      // Last resort: use inferred non-nullability.
-      if (inferred_type != NULL) {
-        TraceStrongModeType(this, inferred_type);
-        return *inferred_type;
-      }
+    // Best bet: use inferred type if it is a concrete class or int.
+    if ((inferred_type != nullptr) &&
+        ((inferred_type->ToNullableCid() != kDynamicCid) ||
+         inferred_type->IsNullableInt())) {
+      TraceStrongModeType(this, inferred_type);
+      return *inferred_type;
+    }
+    // If parameter type was checked by caller, then use Dart type annotation,
+    // plus non-nullability from inferred type if known.
+    if (param->was_type_checked_by_caller() ||
+        (is_unchecked_entry_param &&
+         !param->is_explicit_covariant_parameter())) {
+      const bool is_nullable =
+          (inferred_type == NULL) || inferred_type->is_nullable();
+      TraceStrongModeType(this, param->type());
+      return CompileType::FromAbstractType(param->type(), is_nullable);
+    }
+    // Last resort: use inferred non-nullability.
+    if (inferred_type != NULL) {
+      TraceStrongModeType(this, inferred_type);
+      return *inferred_type;
     }
   }
 
@@ -1260,25 +1250,23 @@
     return *inferred_type;
   }
 
-  if (Isolate::Current()->can_use_strong_mode_types()) {
-    const Function& target = interface_target();
-    if (!target.IsNull()) {
-      const AbstractType& result_type =
-          AbstractType::ZoneHandle(target.result_type());
-      // Currently VM doesn't have enough information to instantiate generic
-      // result types of interface targets:
-      // 1. receiver type inferred by the front-end is not passed to VM.
-      // 2. VM collects type arguments through the chain of superclasses but
-      // not through implemented interfaces.
-      // So treat non-instantiated generic types as dynamic to avoid pretending
-      // the type is known.
-      // TODO(dartbug.com/30480): instantiate generic result_type
-      if (result_type.IsInstantiated()) {
-        TraceStrongModeType(this, result_type);
-        const bool is_nullable =
-            (inferred_type == NULL) || inferred_type->is_nullable();
-        return CompileType::FromAbstractType(result_type, is_nullable);
-      }
+  const Function& target = interface_target();
+  if (!target.IsNull()) {
+    const AbstractType& result_type =
+        AbstractType::ZoneHandle(target.result_type());
+    // Currently VM doesn't have enough information to instantiate generic
+    // result types of interface targets:
+    // 1. receiver type inferred by the front-end is not passed to VM.
+    // 2. VM collects type arguments through the chain of superclasses but
+    // not through implemented interfaces.
+    // So treat non-instantiated generic types as dynamic to avoid pretending
+    // the type is known.
+    // TODO(dartbug.com/30480): instantiate generic result_type
+    if (result_type.IsInstantiated()) {
+      TraceStrongModeType(this, result_type);
+      const bool is_nullable =
+          (inferred_type == NULL) || inferred_type->is_nullable();
+      return CompileType::FromAbstractType(result_type, is_nullable);
     }
   }
 
@@ -1336,30 +1324,25 @@
     }
   }
 
-  if (Isolate::Current()->can_use_strong_mode_types()) {
-    const AbstractType& result_type =
-        AbstractType::ZoneHandle(function().result_type());
-    // TODO(dartbug.com/30480): instantiate generic result_type if possible.
-    // Also, consider fixing AbstractType::IsSubtypeOf to handle
-    // non-instantiated types properly.
-    if (result_type.IsInstantiated()) {
-      TraceStrongModeType(this, result_type);
-      is_nullable = is_nullable &&
-                    (inferred_type == nullptr || inferred_type->is_nullable());
-      return CompileType::FromAbstractType(result_type, is_nullable);
-    }
+  const AbstractType& result_type =
+      AbstractType::ZoneHandle(function().result_type());
+  // TODO(dartbug.com/30480): instantiate generic result_type if possible.
+  // Also, consider fixing AbstractType::IsSubtypeOf to handle
+  // non-instantiated types properly.
+  if (result_type.IsInstantiated()) {
+    TraceStrongModeType(this, result_type);
+    is_nullable = is_nullable &&
+                  (inferred_type == nullptr || inferred_type->is_nullable());
+    return CompileType::FromAbstractType(result_type, is_nullable);
   }
 
   return CompileType::Dynamic();
 }
 
 CompileType LoadLocalInstr::ComputeType() const {
-  if (Isolate::Current()->can_use_strong_mode_types()) {
-    const AbstractType& local_type = local().type();
-    TraceStrongModeType(this, local_type);
-    return CompileType::FromAbstractType(local_type);
-  }
-  return CompileType::Dynamic();
+  const AbstractType& local_type = local().type();
+  TraceStrongModeType(this, local_type);
+  return CompileType::FromAbstractType(local_type);
 }
 
 CompileType DropTempsInstr::ComputeType() const {
@@ -1385,15 +1368,11 @@
 }
 
 CompileType LoadStaticFieldInstr::ComputeType() const {
-  bool is_nullable = CompileType::kNullable;
-  intptr_t cid = kDynamicCid;
-  AbstractType* abstract_type = NULL;
   const Field& field = this->StaticField();
-  if (Isolate::Current()->can_use_strong_mode_types()) {
-    cid = kIllegalCid;  // Abstract type is known, calculate cid lazily.
-    abstract_type = &AbstractType::ZoneHandle(field.type());
-    TraceStrongModeType(this, *abstract_type);
-  }
+  bool is_nullable = CompileType::kNullable;
+  intptr_t cid = kIllegalCid;  // Abstract type is known, calculate cid lazily.
+  AbstractType* abstract_type = &AbstractType::ZoneHandle(field.type());
+  TraceStrongModeType(this, *abstract_type);
   ASSERT(field.is_static());
   const bool is_initialized = IsFieldInitialized() && !FLAG_fields_may_be_reset;
   if (field.is_final() && is_initialized) {
@@ -1448,13 +1427,8 @@
     return compile_type_cid;
   }
 
-  const Isolate* isolate = Isolate::Current();
-  const AbstractType* abstract_type = NULL;
-  if (isolate->can_use_strong_mode_types() ||
-      (field_type.IsFunctionType() || field_type.HasTypeClass())) {
-    abstract_type = &field_type;
-    TraceStrongModeType(this, *abstract_type);
-  }
+  const AbstractType* abstract_type = &field_type;
+  TraceStrongModeType(this, *abstract_type);
 
   if (compile_type_cid.ToNullableCid() != kDynamicCid) {
     abstract_type = nullptr;
@@ -1538,20 +1512,17 @@
 }
 
 CompileType CheckedSmiOpInstr::ComputeType() const {
-  if (Isolate::Current()->can_use_strong_mode_types()) {
-    if (left()->Type()->IsNullableInt() && right()->Type()->IsNullableInt()) {
-      const AbstractType& abstract_type =
-          AbstractType::ZoneHandle(Type::IntType());
-      TraceStrongModeType(this, abstract_type);
-      return CompileType::FromAbstractType(abstract_type,
-                                           CompileType::kNonNullable);
-    } else {
-      CompileType* type = call()->Type();
-      TraceStrongModeType(this, type);
-      return *type;
-    }
+  if (left()->Type()->IsNullableInt() && right()->Type()->IsNullableInt()) {
+    const AbstractType& abstract_type =
+        AbstractType::ZoneHandle(Type::IntType());
+    TraceStrongModeType(this, abstract_type);
+    return CompileType::FromAbstractType(abstract_type,
+                                         CompileType::kNonNullable);
+  } else {
+    CompileType* type = call()->Type();
+    TraceStrongModeType(this, type);
+    return *type;
   }
-  return CompileType::Dynamic();
 }
 
 bool CheckedSmiOpInstr::RecomputeType() {
@@ -1559,12 +1530,9 @@
 }
 
 CompileType CheckedSmiComparisonInstr::ComputeType() const {
-  if (Isolate::Current()->can_use_strong_mode_types()) {
-    CompileType* type = call()->Type();
-    TraceStrongModeType(this, type);
-    return *type;
-  }
-  return CompileType::Dynamic();
+  CompileType* type = call()->Type();
+  TraceStrongModeType(this, type);
+  return *type;
 }
 
 CompileType BoxIntegerInstr::ComputeType() const {
diff --git a/runtime/vm/compiler/call_specializer.cc b/runtime/vm/compiler/call_specializer.cc
index 750c41d..4369236 100644
--- a/runtime/vm/compiler/call_specializer.cc
+++ b/runtime/vm/compiler/call_specializer.cc
@@ -261,7 +261,6 @@
                                    intptr_t deopt_id,
                                    Environment* deopt_environment,
                                    Instruction* insert_before) {
-  ASSERT(I->can_use_strong_mode_types());
   if (to_check->Type()->is_nullable()) {
     CheckNullInstr* check_null =
         new (Z) CheckNullInstr(to_check->CopyWithType(Z), function_name,
@@ -867,7 +866,7 @@
 
   // Build an AssertAssignable if necessary.
   const AbstractType& dst_type = AbstractType::ZoneHandle(zone(), field.type());
-  if (I->argument_type_checks() && !dst_type.IsTopTypeForSubtyping()) {
+  if (!dst_type.IsTopTypeForSubtyping()) {
     // Compute if we need to type check the value. Always type check if
     // at a dynamic invocation.
     bool needs_check = true;
@@ -1204,7 +1203,6 @@
 bool CallSpecializer::TryOptimizeInstanceOfUsingStaticTypes(
     InstanceCallInstr* call,
     const AbstractType& type) {
-  ASSERT(I->can_use_strong_mode_types());
   ASSERT(Token::IsTypeTestOperator(call->token_kind()));
   if (!type.IsInstantiated()) {
     return false;
@@ -1274,8 +1272,7 @@
     type = AbstractType::Cast(call->ArgumentAt(3)->AsConstant()->value()).raw();
   }
 
-  if (I->can_use_strong_mode_types() &&
-      TryOptimizeInstanceOfUsingStaticTypes(call, type)) {
+  if (TryOptimizeInstanceOfUsingStaticTypes(call, type)) {
     return;
   }
 
@@ -1408,8 +1405,7 @@
     }
   }
 
-  if (I->can_use_strong_mode_types() &&
-      TryOptimizeStaticCallUsingStaticTypes(call)) {
+  if (TryOptimizeStaticCallUsingStaticTypes(call)) {
     return;
   }
 }
diff --git a/runtime/vm/compiler/frontend/base_flow_graph_builder.cc b/runtime/vm/compiler/frontend/base_flow_graph_builder.cc
index 67faab3..6ab86e8 100644
--- a/runtime/vm/compiler/frontend/base_flow_graph_builder.cc
+++ b/runtime/vm/compiler/frontend/base_flow_graph_builder.cc
@@ -830,9 +830,6 @@
 }
 
 Fragment BaseFlowGraphBuilder::AssertBool(TokenPosition position) {
-  if (!I->should_emit_strong_mode_checks()) {
-    return Fragment();
-  }
   Value* value = Pop();
   AssertBooleanInstr* instr =
       new (Z) AssertBooleanInstr(position, value, GetNextDeoptId());
@@ -1111,10 +1108,6 @@
     const AbstractType& dst_type,
     const String& dst_name,
     AssertAssignableInstr::Kind kind) {
-  if (!I->should_emit_strong_mode_checks()) {
-    return Drop() + Drop();
-  }
-
   Value* function_type_args = Pop();
   Value* instantiator_type_args = Pop();
   Value* value = Pop();
diff --git a/runtime/vm/compiler/frontend/bytecode_flow_graph_builder.cc b/runtime/vm/compiler/frontend/bytecode_flow_graph_builder.cc
index 23dcf66..c7555ff 100644
--- a/runtime/vm/compiler/frontend/bytecode_flow_graph_builder.cc
+++ b/runtime/vm/compiler/frontend/bytecode_flow_graph_builder.cc
@@ -1368,10 +1368,21 @@
 
   LoadStackSlots(5);
 
+  const AbstractType& dst_type =
+      AbstractType::Cast(B->Peek(/*depth=*/3)->AsConstant()->value());
+  if (dst_type.IsTopTypeForSubtyping()) {
+    code_ += B->Drop();  // dst_name
+    code_ += B->Drop();  // function_type_args
+    code_ += B->Drop();  // instantiator_type_args
+    code_ += B->Drop();  // dst_type
+    // Leave value on top.
+    return;
+  }
+
   const String& dst_name = String::Cast(PopConstant().value());
   Value* function_type_args = Pop();
   Value* instantiator_type_args = Pop();
-  const AbstractType& dst_type = AbstractType::Cast(PopConstant().value());
+  code_ += B->Drop();  // dst_type
   Value* value = Pop();
 
   AssertAssignableInstr* instr = new (Z) AssertAssignableInstr(
@@ -2105,7 +2116,7 @@
     const KBCInstr* jump_if_unchecked) {
   ASSERT(KernelBytecode::IsJumpIfUncheckedOpcode(jump_if_unchecked));
 
-  if (!function().MayHaveUncheckedEntryPoint(isolate())) {
+  if (!function().MayHaveUncheckedEntryPoint()) {
     return UncheckedEntryPointStyle::kNone;
   }
 
diff --git a/runtime/vm/compiler/frontend/bytecode_reader.cc b/runtime/vm/compiler/frontend/bytecode_reader.cc
index 9295cb6..99cad2f 100644
--- a/runtime/vm/compiler/frontend/bytecode_reader.cc
+++ b/runtime/vm/compiler/frontend/bytecode_reader.cc
@@ -912,7 +912,7 @@
         //     checked at the entry because the parameter is marked covariant,
         //     neither of those cases require a dynamic invocation forwarder;
         //   * we assume that all closures are entered in a checked way.
-        if (!Field::IsGetterName(name) && I->should_emit_strong_mode_checks() &&
+        if (!Field::IsGetterName(name) &&
             (name.raw() != Symbols::EqualOperator().raw()) &&
             (name.raw() != Symbols::Call().raw())) {
           name = Function::CreateDynamicInvocationForwarderName(name);
diff --git a/runtime/vm/compiler/frontend/bytecode_scope_builder.cc b/runtime/vm/compiler/frontend/bytecode_scope_builder.cc
index bc1a30b..2a5e79f 100644
--- a/runtime/vm/compiler/frontend/bytecode_scope_builder.cc
+++ b/runtime/vm/compiler/frontend/bytecode_scope_builder.cc
@@ -137,8 +137,7 @@
   if (needs_expr_temp) {
     scope_->AddVariable(parsed_function_->EnsureExpressionTemp());
   }
-  if (parsed_function_->function().MayHaveUncheckedEntryPoint(
-          parsed_function_->isolate())) {
+  if (parsed_function_->function().MayHaveUncheckedEntryPoint()) {
     scope_->AddVariable(parsed_function_->EnsureEntryPointsTemp());
   }
   parsed_function_->AllocateVariables();
diff --git a/runtime/vm/compiler/frontend/kernel_binary_flowgraph.cc b/runtime/vm/compiler/frontend/kernel_binary_flowgraph.cc
index 3079ccf..121aff8 100644
--- a/runtime/vm/compiler/frontend/kernel_binary_flowgraph.cc
+++ b/runtime/vm/compiler/frontend/kernel_binary_flowgraph.cc
@@ -763,7 +763,7 @@
     Fragment* explicit_checks,
     Fragment* implicit_checks,
     Fragment* implicit_redefinitions) {
-  if (!dart_function.NeedsArgumentTypeChecks(I)) return;
+  if (!dart_function.NeedsArgumentTypeChecks()) return;
 
   // Check if parent function was annotated with no-dynamic-invocations.
   const ProcedureAttributesMetadata attrs =
@@ -903,7 +903,7 @@
     const Fragment& every_time_prologue,
     const Fragment& type_args_handling) {
   ASSERT(!dart_function.IsImplicitClosureFunction());
-  if (!dart_function.MayHaveUncheckedEntryPoint(I) ||
+  if (!dart_function.MayHaveUncheckedEntryPoint() ||
       implicit_type_checks.is_empty()) {
     return UncheckedEntryPointStyle::kNone;
   }
@@ -1685,8 +1685,9 @@
   return flow_graph_builder_->RethrowException(position, catch_try_index);
 }
 
-Fragment StreamingFlowGraphBuilder::ThrowNoSuchMethodError() {
-  return flow_graph_builder_->ThrowNoSuchMethodError();
+Fragment StreamingFlowGraphBuilder::ThrowNoSuchMethodError(
+    const Function& target) {
+  return flow_graph_builder_->ThrowNoSuchMethodError(target);
 }
 
 Fragment StreamingFlowGraphBuilder::Constant(const Object& value) {
@@ -1715,32 +1716,12 @@
                                         clear_the_temp);
 }
 
-static void BadArity(const Script& script,
-                     TokenPosition position,
-                     const String& error_message) {
-#ifndef PRODUCT
-  // TODO(https://github.com/dart-lang/sdk/issues/37517): Should emit code to
-  // throw a NoSuchMethodError.
-  // Correct arity is checked at compile time by CFE. However, an isolate reload
-  // after an arity change may lead here.
-  // Using strong mode with a mix of opted in and opted out libraries may
-  // also result in this error undetected by CFE.
-  Isolate* isolate = Isolate::Current();
-  ASSERT(isolate->HasAttemptedReload() || isolate->null_safety());
-  Report::MessageF(Report::kError, script, position, Report::AtLocation,
-                   "Static call with invalid arguments: %s",
-                   error_message.ToCString());
-#endif
-  UNREACHABLE();
-}
-
 Fragment StreamingFlowGraphBuilder::StaticCall(TokenPosition position,
                                                const Function& target,
                                                intptr_t argument_count,
                                                ICData::RebindRule rebind_rule) {
-  String& error_message = String::Handle();
-  if (!target.AreValidArgumentCounts(0, argument_count, 0, &error_message)) {
-    BadArity(script_, position, error_message);
+  if (!target.AreValidArgumentCounts(0, argument_count, 0, nullptr)) {
+    return flow_graph_builder_->ThrowNoSuchMethodError(target);
   }
   return flow_graph_builder_->StaticCall(position, target, argument_count,
                                          rebind_rule);
@@ -1755,10 +1736,9 @@
     const InferredTypeMetadata* result_type,
     intptr_t type_args_count,
     bool use_unchecked_entry) {
-  String& error_message = String::Handle();
   if (!target.AreValidArguments(type_args_count, argument_count, argument_names,
-                                &error_message)) {
-    BadArity(script_, position, error_message);
+                                nullptr)) {
+    return flow_graph_builder_->ThrowNoSuchMethodError(target);
   }
   return flow_graph_builder_->StaticCall(
       position, target, argument_count, argument_names, rebind_rule,
@@ -2437,7 +2417,7 @@
 
   const String* mangled_name = &setter_name;
   const Function* direct_call_target = &direct_call.target_;
-  if (I->should_emit_strong_mode_checks() && H.IsRoot(itarget_name)) {
+  if (H.IsRoot(itarget_name)) {
     mangled_name = &String::ZoneHandle(
         Z, Function::CreateDynamicInvocationForwarderName(setter_name));
     if (!direct_call_target->IsNull()) {
@@ -3014,8 +2994,7 @@
   //     those cases require a dynamic invocation forwarder;
   //   * we assume that all closures are entered in a checked way.
   const Function* direct_call_target = &direct_call.target_;
-  if (I->should_emit_strong_mode_checks() &&
-      (name.raw() != Symbols::EqualOperator().raw()) &&
+  if ((name.raw() != Symbols::EqualOperator().raw()) &&
       (name.raw() != Symbols::Call().raw()) && H.IsRoot(itarget_name)) {
     mangled_name = &String::ZoneHandle(
         Z, Function::CreateDynamicInvocationForwarderName(name));
diff --git a/runtime/vm/compiler/frontend/kernel_binary_flowgraph.h b/runtime/vm/compiler/frontend/kernel_binary_flowgraph.h
index fbba4d6..d694a83 100644
--- a/runtime/vm/compiler/frontend/kernel_binary_flowgraph.h
+++ b/runtime/vm/compiler/frontend/kernel_binary_flowgraph.h
@@ -166,7 +166,7 @@
       intptr_t yield_index = PcDescriptorsLayout::kInvalidYieldIndex);
   Fragment EvaluateAssertion();
   Fragment RethrowException(TokenPosition position, int catch_try_index);
-  Fragment ThrowNoSuchMethodError();
+  Fragment ThrowNoSuchMethodError(const Function& target);
   Fragment Constant(const Object& value);
   Fragment IntConstant(int64_t value);
   Fragment LoadStaticField(const Field& field);
diff --git a/runtime/vm/compiler/frontend/kernel_to_il.cc b/runtime/vm/compiler/frontend/kernel_to_il.cc
index de87175..35e2fad 100644
--- a/runtime/vm/compiler/frontend/kernel_to_il.cc
+++ b/runtime/vm/compiler/frontend/kernel_to_il.cc
@@ -392,7 +392,7 @@
   instructions +=
       Fragment(new (Z) ThrowInstr(position, GetNextDeoptId(), exception))
           .closed();
-  // Use it's side effect of leaving a constant on the stack (does not change
+  // Use its side effect of leaving a constant on the stack (does not change
   // the graph).
   NullConstant();
 
@@ -408,7 +408,7 @@
       Fragment(new (Z) ReThrowInstr(position, catch_try_index, GetNextDeoptId(),
                                     exception, stacktrace))
           .closed();
-  // Use it's side effect of leaving a constant on the stack (does not change
+  // Use its side effect of leaving a constant on the stack (does not change
   // the graph).
   NullConstant();
 
@@ -678,7 +678,7 @@
   return instructions;
 }
 
-Fragment FlowGraphBuilder::ThrowNoSuchMethodError() {
+Fragment FlowGraphBuilder::ThrowNoSuchMethodError(const Function& target) {
   const Class& klass = Class::ZoneHandle(
       Z, Library::LookupCoreClass(Symbols::NoSuchMethodError()));
   ASSERT(!klass.IsNull());
@@ -688,20 +688,36 @@
 
   Fragment instructions;
 
-  // Call NoSuchMethodError._throwNew static function.
-  instructions += NullConstant();  // receiver
+  const Class& owner = Class::Handle(Z, target.Owner());
+  AbstractType& receiver = AbstractType::ZoneHandle();
+  InvocationMirror::Kind kind = InvocationMirror::Kind::kMethod;
+  InvocationMirror::Level level;
+  if (owner.IsTopLevel()) {
+    level = InvocationMirror::Level::kTopLevel;
+  } else {
+    receiver = owner.RareType();
+    if (target.kind() == FunctionLayout::kConstructor) {
+      level = InvocationMirror::Level::kConstructor;
+    } else {
+      level = InvocationMirror::Level::kStatic;
+    }
+  }
 
-  instructions +=
-      Constant(H.DartString("<unknown>", Heap::kOld));  // memberName
-  instructions += IntConstant(-1);                      // invocation_type
-  instructions += NullConstant();                       // type arguments
-  instructions += NullConstant();                       // arguments
-  instructions += NullConstant();                       // argumentNames
+  // Call NoSuchMethodError._throwNew static function.
+  instructions += Constant(receiver);                              // receiver
+  instructions += Constant(String::ZoneHandle(Z, target.name()));  // memberName
+  instructions += IntConstant(InvocationMirror::EncodeType(level, kind));
+  instructions += IntConstant(0);  // type arguments length
+  instructions += NullConstant();  // type arguments
+  instructions += NullConstant();  // arguments
+  instructions += NullConstant();  // argumentNames
 
   instructions += StaticCall(TokenPosition::kNoSource, throw_function,
-                             /* argument_count = */ 6, ICData::kStatic);
-  // Leave "result" on the stack since callers expect it to be there (even
-  // though the function will result in an exception).
+                             /* argument_count = */ 7, ICData::kStatic);
+
+  // Properly close graph with a ThrowInstr, although it is not executed.
+  instructions += ThrowException(TokenPosition::kNoSource);
+  instructions += Drop();
 
   return instructions;
 }
@@ -1534,9 +1550,6 @@
                                            const String& dst_name,
                                            AssertAssignableInstr::Kind kind) {
   Fragment instructions;
-  if (!I->should_emit_strong_mode_checks()) {
-    return Fragment();
-  }
   if (!dst_type.IsTopTypeForSubtyping()) {
     LocalVariable* top_of_stack = MakeTemporary();
     instructions += LoadLocal(top_of_stack);
@@ -1552,10 +1565,6 @@
     const AbstractType& dst_type,
     const String& dst_name,
     AssertAssignableInstr::Kind kind) {
-  if (!I->should_emit_strong_mode_checks()) {
-    return Fragment();
-  }
-
   Fragment instructions;
 
   if (!dst_type.IsInstantiated(kCurrentClass)) {
@@ -1599,7 +1608,6 @@
     Fragment* explicit_checks,
     Fragment* implicit_checks,
     Fragment* implicit_redefinitions) {
-  if (!I->should_emit_strong_mode_checks()) return;
   const Function& dart_function = parsed_function_->function();
 
   const Function* forwarding_target = nullptr;
@@ -2033,7 +2041,7 @@
     }
   }
 
-  if (function.NeedsArgumentTypeChecks(I)) {
+  if (function.NeedsArgumentTypeChecks()) {
     BuildArgumentTypeChecks(TypeChecksToBuild::kCheckAllTypeParameterBounds,
                             &body, &body, nullptr);
   }
@@ -2402,7 +2410,7 @@
   // We're going to throw away the explicit checks because the target will
   // always check them.
   Fragment implicit_checks;
-  if (function.NeedsArgumentTypeChecks(I)) {
+  if (function.NeedsArgumentTypeChecks()) {
     Fragment explicit_checks_unused;
     if (target.is_static()) {
       // Tearoffs of static methods needs to perform arguments checks since
@@ -2460,7 +2468,7 @@
 
   // Setup multiple entrypoints if useful.
   FunctionEntryInstr* extra_entry = nullptr;
-  if (function.MayHaveUncheckedEntryPoint(I)) {
+  if (function.MayHaveUncheckedEntryPoint()) {
     // The prologue for a closure will always have context handling (e.g.
     // setting up the receiver variable), but we don't need it on the unchecked
     // entry because the only time we reference this is for loading the
@@ -2538,7 +2546,7 @@
       body += LoadLocal(parsed_function_->ParameterVariable(0));
     }
     body += LoadLocal(setter_value);
-    if (I->argument_type_checks() && setter_value->needs_type_check()) {
+    if (setter_value->needs_type_check()) {
       body += CheckAssignable(setter_value->type(), setter_value->name(),
                               AssertAssignableInstr::kParameterCheck);
     }
diff --git a/runtime/vm/compiler/frontend/kernel_to_il.h b/runtime/vm/compiler/frontend/kernel_to_il.h
index f6f08e5..fbee853 100644
--- a/runtime/vm/compiler/frontend/kernel_to_il.h
+++ b/runtime/vm/compiler/frontend/kernel_to_il.h
@@ -164,7 +164,7 @@
                       bool use_unchecked_entry = false);
   Fragment StringInterpolateSingle(TokenPosition position);
   Fragment ThrowTypeError();
-  Fragment ThrowNoSuchMethodError();
+  Fragment ThrowNoSuchMethodError(const Function& target);
   Fragment ThrowLateInitializationError(TokenPosition position,
                                         const String& name);
   Fragment BuildImplicitClosureCreation(const Function& target);
diff --git a/runtime/vm/compiler/frontend/kernel_translation_helper.h b/runtime/vm/compiler/frontend/kernel_translation_helper.h
index e6f25bf..23f3151 100644
--- a/runtime/vm/compiler/frontend/kernel_translation_helper.h
+++ b/runtime/vm/compiler/frontend/kernel_translation_helper.h
@@ -277,7 +277,7 @@
     kEnd,
   };
 
-  enum AsyncMarker {
+  enum AsyncMarker : intptr_t {
     kSync = 0,
     kSyncStar = 1,
     kAsync = 2,
diff --git a/runtime/vm/compiler/frontend/scope_builder.cc b/runtime/vm/compiler/frontend/scope_builder.cc
index 78903ef..a1582ac 100644
--- a/runtime/vm/compiler/frontend/scope_builder.cc
+++ b/runtime/vm/compiler/frontend/scope_builder.cc
@@ -430,7 +430,7 @@
   if (needs_expr_temp_) {
     scope_->AddVariable(parsed_function_->EnsureExpressionTemp());
   }
-  if (parsed_function_->function().MayHaveUncheckedEntryPoint(I)) {
+  if (parsed_function_->function().MayHaveUncheckedEntryPoint()) {
     scope_->AddVariable(parsed_function_->EnsureEntryPointsTemp());
   }
   parsed_function_->AllocateVariables();
diff --git a/runtime/vm/compiler/graph_intrinsifier.cc b/runtime/vm/compiler/graph_intrinsifier.cc
index 3a42c2d..fc8fa3d 100644
--- a/runtime/vm/compiler/graph_intrinsifier.cc
+++ b/runtime/vm/compiler/graph_intrinsifier.cc
@@ -748,14 +748,6 @@
   return true;
 }
 
-bool GraphIntrinsifier::Build_ObjectArraySetIndexed(FlowGraph* flow_graph) {
-  if (Isolate::Current()->argument_type_checks()) {
-    return false;
-  }
-
-  return Build_ObjectArraySetIndexedUnchecked(flow_graph);
-}
-
 bool GraphIntrinsifier::Build_ObjectArraySetIndexedUnchecked(
     FlowGraph* flow_graph) {
   GraphEntryInstr* graph_entry = flow_graph->graph_entry();
@@ -780,14 +772,6 @@
   return true;
 }
 
-bool GraphIntrinsifier::Build_GrowableArraySetIndexed(FlowGraph* flow_graph) {
-  if (Isolate::Current()->argument_type_checks()) {
-    return false;
-  }
-
-  return Build_GrowableArraySetIndexedUnchecked(flow_graph);
-}
-
 bool GraphIntrinsifier::Build_GrowableArraySetIndexedUnchecked(
     FlowGraph* flow_graph) {
   GraphEntryInstr* graph_entry = flow_graph->graph_entry();
diff --git a/runtime/vm/compiler/jit/compiler.cc b/runtime/vm/compiler/jit/compiler.cc
index 1364dd0..befaa2a 100644
--- a/runtime/vm/compiler/jit/compiler.cc
+++ b/runtime/vm/compiler/jit/compiler.cc
@@ -1296,6 +1296,10 @@
   if (running_ || !done_) return;
   running_ = true;
   done_ = false;
+  // If we ever wanted to run the BG compiler on the
+  // `IsolateGroup::mutator_pool()` we would need to ensure the BG compiler
+  // stops when it's idle - otherwise the [MutatorThreadPool]-based idle
+  // notification would not work anymore.
   bool task_started = Dart::thread_pool()->Run<BackgroundCompilerTask>(this);
   if (!task_started) {
     running_ = false;
diff --git a/runtime/vm/compiler/recognized_methods_list.h b/runtime/vm/compiler/recognized_methods_list.h
index 2fd4cd7..c26d1f8 100644
--- a/runtime/vm/compiler/recognized_methods_list.h
+++ b/runtime/vm/compiler/recognized_methods_list.h
@@ -17,6 +17,8 @@
   V(Object, Object., ObjectConstructor, 0x8f3ae7ea)                            \
   V(List, ., ListFactory, 0xdf9970a9)                                          \
   V(_List, ., ObjectArrayAllocate, 0x03ddbd3a)                                 \
+  V(_List, []=, ObjectArraySetIndexed, 0x4d5e74cf)                             \
+  V(_GrowableList, []=, GrowableArraySetIndexed, 0x4d5e74cf)                   \
   V(_TypedList, _getInt8, ByteArrayBaseGetInt8, 0xa24c2704)                    \
   V(_TypedList, _getUint8, ByteArrayBaseGetUint8, 0xa491df3e)                  \
   V(_TypedList, _getInt16, ByteArrayBaseGetInt16, 0xb65ae1fc)                  \
@@ -347,7 +349,6 @@
 #define GRAPH_CORE_INTRINSICS_LIST(V)                                          \
   V(_List, get:length, ObjectArrayLength, 0x05176aac)                          \
   V(_List, [], ObjectArrayGetIndexed, 0x7e13418e)                              \
-  V(_List, []=, ObjectArraySetIndexed, 0x4d5e74cf)                             \
   V(_List, _setIndexed, ObjectArraySetIndexedUnchecked, 0x91b2c203)            \
   V(_ImmutableList, get:length, ImmutableArrayLength, 0x05176aac)              \
   V(_ImmutableList, [], ImmutableArrayGetIndexed, 0x7e13418e)                  \
@@ -356,7 +357,6 @@
   V(_GrowableList, _setData, GrowableArraySetData, 0x9e2350fe)                 \
   V(_GrowableList, _setLength, GrowableArraySetLength, 0x8d94d91d)             \
   V(_GrowableList, [], GrowableArrayGetIndexed, 0x7e13418e)                    \
-  V(_GrowableList, []=, GrowableArraySetIndexed, 0x4d5e74cf)                   \
   V(_GrowableList, _setIndexed, GrowableArraySetIndexedUnchecked, 0x91b2c203)  \
   V(_StringBase, get:length, StringBaseLength, 0x05176aac)                     \
   V(_OneByteString, codeUnitAt, OneByteStringCodeUnitAt, 0xb0959953)           \
diff --git a/runtime/vm/compiler/relocation.cc b/runtime/vm/compiler/relocation.cc
index c32196be..fcf1393 100644
--- a/runtime/vm/compiler/relocation.cc
+++ b/runtime/vm/compiler/relocation.cc
@@ -372,7 +372,7 @@
     auto const caller = unresolved_call->caller;
     uword addr = Code::PayloadStartOf(caller) + call_offset;
     if (FLAG_write_protect_code) {
-      addr -= HeapPage::Of(Code::InstructionsOf(caller))->AliasOffset();
+      addr -= OldPage::Of(Code::InstructionsOf(caller))->AliasOffset();
     }
     if (unresolved_call->is_tail_call) {
       PcRelativeTailCallPattern call(addr);
diff --git a/runtime/vm/compiler/runtime_api.cc b/runtime/vm/compiler/runtime_api.cc
index ca41bd5..916bfaf 100644
--- a/runtime/vm/compiler/runtime_api.cc
+++ b/runtime/vm/compiler/runtime_api.cc
@@ -174,6 +174,11 @@
   return Class::Handle(object_store->double_class());
 }
 
+const Array& OneArgArgumentsDescriptor() {
+  return Array::ZoneHandle(
+      ArgumentsDescriptor::NewBoxed(/*type_args_len=*/0, /*num_arguments=*/1));
+}
+
 bool IsOriginalObject(const Object& object) {
   if (object.IsICData()) {
     return ICData::Cast(object).IsOriginal();
@@ -261,9 +266,9 @@
 
 namespace target {
 
-const word kPageSize = dart::kPageSize;
-const word kPageSizeInWords = dart::kPageSize / kWordSize;
-const word kPageMask = dart::kPageMask;
+const word kOldPageSize = dart::kOldPageSize;
+const word kOldPageSizeInWords = dart::kOldPageSize / kWordSize;
+const word kOldPageMask = dart::kOldPageMask;
 
 static word TranslateOffsetInWordsToHost(word offset) {
   RELEASE_ASSERT((offset % kWordSize) == 0);
diff --git a/runtime/vm/compiler/runtime_api.h b/runtime/vm/compiler/runtime_api.h
index 3e024c0..ae21caf 100644
--- a/runtime/vm/compiler/runtime_api.h
+++ b/runtime/vm/compiler/runtime_api.h
@@ -107,6 +107,7 @@
 const Class& GrowableObjectArrayClass();
 const Class& MintClass();
 const Class& DoubleClass();
+const Array& OneArgArgumentsDescriptor();
 
 template <typename To, typename From>
 const To& CastHandle(const From& from) {
@@ -290,9 +291,9 @@
 constexpr word kSmiMin = -(static_cast<uword>(1) << kSmiBits);
 
 // Information about heap pages.
-extern const word kPageSize;
-extern const word kPageSizeInWords;
-extern const word kPageMask;
+extern const word kOldPageSize;
+extern const word kOldPageSizeInWords;
+extern const word kOldPageMask;
 
 static constexpr intptr_t kObjectAlignment = ObjectAlignment::kObjectAlignment;
 static constexpr intptr_t kNumParameterFlagsPerElement = kBitsPerWord / 2;
@@ -1189,7 +1190,7 @@
   static word NextFieldOffset();
 };
 
-class HeapPage : public AllStatic {
+class OldPage : public AllStatic {
  public:
   static const word kBytesPerCardLog2;
 
diff --git a/runtime/vm/compiler/runtime_offsets_extracted.h b/runtime/vm/compiler/runtime_offsets_extracted.h
index a575006..bc994c1 100644
--- a/runtime/vm/compiler/runtime_offsets_extracted.h
+++ b/runtime/vm/compiler/runtime_offsets_extracted.h
@@ -32,7 +32,7 @@
     Instructions_kMonomorphicEntryOffsetAOT = 0;
 static constexpr dart::compiler::target::word
     Instructions_kPolymorphicEntryOffsetAOT = 12;
-static constexpr dart::compiler::target::word HeapPage_kBytesPerCardLog2 = 9;
+static constexpr dart::compiler::target::word OldPage_kBytesPerCardLog2 = 9;
 static constexpr dart::compiler::target::word
     NativeEntry_kNumCallWrapperArguments = 2;
 static constexpr dart::compiler::target::word String_kMaxElements = 536870911;
@@ -128,7 +128,7 @@
     GrowableObjectArray_length_offset = 8;
 static constexpr dart::compiler::target::word
     GrowableObjectArray_type_arguments_offset = 4;
-static constexpr dart::compiler::target::word HeapPage_card_table_offset = 20;
+static constexpr dart::compiler::target::word OldPage_card_table_offset = 20;
 static constexpr dart::compiler::target::word
     CallSiteData_arguments_descriptor_offset = 8;
 static constexpr dart::compiler::target::word ICData_NumArgsTestedMask = 3;
@@ -512,7 +512,7 @@
     Instructions_kMonomorphicEntryOffsetAOT = 8;
 static constexpr dart::compiler::target::word
     Instructions_kPolymorphicEntryOffsetAOT = 22;
-static constexpr dart::compiler::target::word HeapPage_kBytesPerCardLog2 = 10;
+static constexpr dart::compiler::target::word OldPage_kBytesPerCardLog2 = 10;
 static constexpr dart::compiler::target::word
     NativeEntry_kNumCallWrapperArguments = 2;
 static constexpr dart::compiler::target::word String_kMaxElements =
@@ -609,7 +609,7 @@
     GrowableObjectArray_length_offset = 16;
 static constexpr dart::compiler::target::word
     GrowableObjectArray_type_arguments_offset = 8;
-static constexpr dart::compiler::target::word HeapPage_card_table_offset = 40;
+static constexpr dart::compiler::target::word OldPage_card_table_offset = 40;
 static constexpr dart::compiler::target::word
     CallSiteData_arguments_descriptor_offset = 16;
 static constexpr dart::compiler::target::word ICData_NumArgsTestedMask = 3;
@@ -997,7 +997,7 @@
     Instructions_kMonomorphicEntryOffsetAOT = 0;
 static constexpr dart::compiler::target::word
     Instructions_kPolymorphicEntryOffsetAOT = 0;
-static constexpr dart::compiler::target::word HeapPage_kBytesPerCardLog2 = 9;
+static constexpr dart::compiler::target::word OldPage_kBytesPerCardLog2 = 9;
 static constexpr dart::compiler::target::word
     NativeEntry_kNumCallWrapperArguments = 2;
 static constexpr dart::compiler::target::word String_kMaxElements = 536870911;
@@ -1093,7 +1093,7 @@
     GrowableObjectArray_length_offset = 8;
 static constexpr dart::compiler::target::word
     GrowableObjectArray_type_arguments_offset = 4;
-static constexpr dart::compiler::target::word HeapPage_card_table_offset = 20;
+static constexpr dart::compiler::target::word OldPage_card_table_offset = 20;
 static constexpr dart::compiler::target::word
     CallSiteData_arguments_descriptor_offset = 8;
 static constexpr dart::compiler::target::word ICData_NumArgsTestedMask = 3;
@@ -1474,7 +1474,7 @@
     Instructions_kMonomorphicEntryOffsetAOT = 8;
 static constexpr dart::compiler::target::word
     Instructions_kPolymorphicEntryOffsetAOT = 20;
-static constexpr dart::compiler::target::word HeapPage_kBytesPerCardLog2 = 10;
+static constexpr dart::compiler::target::word OldPage_kBytesPerCardLog2 = 10;
 static constexpr dart::compiler::target::word
     NativeEntry_kNumCallWrapperArguments = 2;
 static constexpr dart::compiler::target::word String_kMaxElements =
@@ -1571,7 +1571,7 @@
     GrowableObjectArray_length_offset = 16;
 static constexpr dart::compiler::target::word
     GrowableObjectArray_type_arguments_offset = 8;
-static constexpr dart::compiler::target::word HeapPage_card_table_offset = 40;
+static constexpr dart::compiler::target::word OldPage_card_table_offset = 40;
 static constexpr dart::compiler::target::word
     CallSiteData_arguments_descriptor_offset = 16;
 static constexpr dart::compiler::target::word ICData_NumArgsTestedMask = 3;
@@ -1962,7 +1962,7 @@
     Instructions_kMonomorphicEntryOffsetAOT = 0;
 static constexpr dart::compiler::target::word
     Instructions_kPolymorphicEntryOffsetAOT = 12;
-static constexpr dart::compiler::target::word HeapPage_kBytesPerCardLog2 = 9;
+static constexpr dart::compiler::target::word OldPage_kBytesPerCardLog2 = 9;
 static constexpr dart::compiler::target::word
     NativeEntry_kNumCallWrapperArguments = 2;
 static constexpr dart::compiler::target::word String_kMaxElements = 536870911;
@@ -2056,7 +2056,7 @@
     GrowableObjectArray_length_offset = 8;
 static constexpr dart::compiler::target::word
     GrowableObjectArray_type_arguments_offset = 4;
-static constexpr dart::compiler::target::word HeapPage_card_table_offset = 20;
+static constexpr dart::compiler::target::word OldPage_card_table_offset = 20;
 static constexpr dart::compiler::target::word
     CallSiteData_arguments_descriptor_offset = 8;
 static constexpr dart::compiler::target::word ICData_NumArgsTestedMask = 3;
@@ -2436,7 +2436,7 @@
     Instructions_kMonomorphicEntryOffsetAOT = 8;
 static constexpr dart::compiler::target::word
     Instructions_kPolymorphicEntryOffsetAOT = 22;
-static constexpr dart::compiler::target::word HeapPage_kBytesPerCardLog2 = 10;
+static constexpr dart::compiler::target::word OldPage_kBytesPerCardLog2 = 10;
 static constexpr dart::compiler::target::word
     NativeEntry_kNumCallWrapperArguments = 2;
 static constexpr dart::compiler::target::word String_kMaxElements =
@@ -2531,7 +2531,7 @@
     GrowableObjectArray_length_offset = 16;
 static constexpr dart::compiler::target::word
     GrowableObjectArray_type_arguments_offset = 8;
-static constexpr dart::compiler::target::word HeapPage_card_table_offset = 40;
+static constexpr dart::compiler::target::word OldPage_card_table_offset = 40;
 static constexpr dart::compiler::target::word
     CallSiteData_arguments_descriptor_offset = 16;
 static constexpr dart::compiler::target::word ICData_NumArgsTestedMask = 3;
@@ -2915,7 +2915,7 @@
     Instructions_kMonomorphicEntryOffsetAOT = 0;
 static constexpr dart::compiler::target::word
     Instructions_kPolymorphicEntryOffsetAOT = 0;
-static constexpr dart::compiler::target::word HeapPage_kBytesPerCardLog2 = 9;
+static constexpr dart::compiler::target::word OldPage_kBytesPerCardLog2 = 9;
 static constexpr dart::compiler::target::word
     NativeEntry_kNumCallWrapperArguments = 2;
 static constexpr dart::compiler::target::word String_kMaxElements = 536870911;
@@ -3009,7 +3009,7 @@
     GrowableObjectArray_length_offset = 8;
 static constexpr dart::compiler::target::word
     GrowableObjectArray_type_arguments_offset = 4;
-static constexpr dart::compiler::target::word HeapPage_card_table_offset = 20;
+static constexpr dart::compiler::target::word OldPage_card_table_offset = 20;
 static constexpr dart::compiler::target::word
     CallSiteData_arguments_descriptor_offset = 8;
 static constexpr dart::compiler::target::word ICData_NumArgsTestedMask = 3;
@@ -3386,7 +3386,7 @@
     Instructions_kMonomorphicEntryOffsetAOT = 8;
 static constexpr dart::compiler::target::word
     Instructions_kPolymorphicEntryOffsetAOT = 20;
-static constexpr dart::compiler::target::word HeapPage_kBytesPerCardLog2 = 10;
+static constexpr dart::compiler::target::word OldPage_kBytesPerCardLog2 = 10;
 static constexpr dart::compiler::target::word
     NativeEntry_kNumCallWrapperArguments = 2;
 static constexpr dart::compiler::target::word String_kMaxElements =
@@ -3481,7 +3481,7 @@
     GrowableObjectArray_length_offset = 16;
 static constexpr dart::compiler::target::word
     GrowableObjectArray_type_arguments_offset = 8;
-static constexpr dart::compiler::target::word HeapPage_card_table_offset = 40;
+static constexpr dart::compiler::target::word OldPage_card_table_offset = 40;
 static constexpr dart::compiler::target::word
     CallSiteData_arguments_descriptor_offset = 16;
 static constexpr dart::compiler::target::word ICData_NumArgsTestedMask = 3;
@@ -3871,8 +3871,7 @@
     AOT_Instructions_kMonomorphicEntryOffsetAOT = 0;
 static constexpr dart::compiler::target::word
     AOT_Instructions_kPolymorphicEntryOffsetAOT = 12;
-static constexpr dart::compiler::target::word AOT_HeapPage_kBytesPerCardLog2 =
-    9;
+static constexpr dart::compiler::target::word AOT_OldPage_kBytesPerCardLog2 = 9;
 static constexpr dart::compiler::target::word
     AOT_NativeEntry_kNumCallWrapperArguments = 2;
 static constexpr dart::compiler::target::word AOT_String_kMaxElements =
@@ -3963,7 +3962,7 @@
     AOT_GrowableObjectArray_length_offset = 8;
 static constexpr dart::compiler::target::word
     AOT_GrowableObjectArray_type_arguments_offset = 4;
-static constexpr dart::compiler::target::word AOT_HeapPage_card_table_offset =
+static constexpr dart::compiler::target::word AOT_OldPage_card_table_offset =
     20;
 static constexpr dart::compiler::target::word
     AOT_CallSiteData_arguments_descriptor_offset = 8;
@@ -4394,7 +4393,7 @@
     AOT_Instructions_kMonomorphicEntryOffsetAOT = 8;
 static constexpr dart::compiler::target::word
     AOT_Instructions_kPolymorphicEntryOffsetAOT = 22;
-static constexpr dart::compiler::target::word AOT_HeapPage_kBytesPerCardLog2 =
+static constexpr dart::compiler::target::word AOT_OldPage_kBytesPerCardLog2 =
     10;
 static constexpr dart::compiler::target::word
     AOT_NativeEntry_kNumCallWrapperArguments = 2;
@@ -4486,7 +4485,7 @@
     AOT_GrowableObjectArray_length_offset = 16;
 static constexpr dart::compiler::target::word
     AOT_GrowableObjectArray_type_arguments_offset = 8;
-static constexpr dart::compiler::target::word AOT_HeapPage_card_table_offset =
+static constexpr dart::compiler::target::word AOT_OldPage_card_table_offset =
     40;
 static constexpr dart::compiler::target::word
     AOT_CallSiteData_arguments_descriptor_offset = 16;
@@ -4923,7 +4922,7 @@
     AOT_Instructions_kMonomorphicEntryOffsetAOT = 8;
 static constexpr dart::compiler::target::word
     AOT_Instructions_kPolymorphicEntryOffsetAOT = 20;
-static constexpr dart::compiler::target::word AOT_HeapPage_kBytesPerCardLog2 =
+static constexpr dart::compiler::target::word AOT_OldPage_kBytesPerCardLog2 =
     10;
 static constexpr dart::compiler::target::word
     AOT_NativeEntry_kNumCallWrapperArguments = 2;
@@ -5015,7 +5014,7 @@
     AOT_GrowableObjectArray_length_offset = 16;
 static constexpr dart::compiler::target::word
     AOT_GrowableObjectArray_type_arguments_offset = 8;
-static constexpr dart::compiler::target::word AOT_HeapPage_card_table_offset =
+static constexpr dart::compiler::target::word AOT_OldPage_card_table_offset =
     40;
 static constexpr dart::compiler::target::word
     AOT_CallSiteData_arguments_descriptor_offset = 16;
@@ -5452,8 +5451,7 @@
     AOT_Instructions_kMonomorphicEntryOffsetAOT = 0;
 static constexpr dart::compiler::target::word
     AOT_Instructions_kPolymorphicEntryOffsetAOT = 12;
-static constexpr dart::compiler::target::word AOT_HeapPage_kBytesPerCardLog2 =
-    9;
+static constexpr dart::compiler::target::word AOT_OldPage_kBytesPerCardLog2 = 9;
 static constexpr dart::compiler::target::word
     AOT_NativeEntry_kNumCallWrapperArguments = 2;
 static constexpr dart::compiler::target::word AOT_String_kMaxElements =
@@ -5542,7 +5540,7 @@
     AOT_GrowableObjectArray_length_offset = 8;
 static constexpr dart::compiler::target::word
     AOT_GrowableObjectArray_type_arguments_offset = 4;
-static constexpr dart::compiler::target::word AOT_HeapPage_card_table_offset =
+static constexpr dart::compiler::target::word AOT_OldPage_card_table_offset =
     20;
 static constexpr dart::compiler::target::word
     AOT_CallSiteData_arguments_descriptor_offset = 8;
@@ -5968,7 +5966,7 @@
     AOT_Instructions_kMonomorphicEntryOffsetAOT = 8;
 static constexpr dart::compiler::target::word
     AOT_Instructions_kPolymorphicEntryOffsetAOT = 22;
-static constexpr dart::compiler::target::word AOT_HeapPage_kBytesPerCardLog2 =
+static constexpr dart::compiler::target::word AOT_OldPage_kBytesPerCardLog2 =
     10;
 static constexpr dart::compiler::target::word
     AOT_NativeEntry_kNumCallWrapperArguments = 2;
@@ -6058,7 +6056,7 @@
     AOT_GrowableObjectArray_length_offset = 16;
 static constexpr dart::compiler::target::word
     AOT_GrowableObjectArray_type_arguments_offset = 8;
-static constexpr dart::compiler::target::word AOT_HeapPage_card_table_offset =
+static constexpr dart::compiler::target::word AOT_OldPage_card_table_offset =
     40;
 static constexpr dart::compiler::target::word
     AOT_CallSiteData_arguments_descriptor_offset = 16;
@@ -6490,7 +6488,7 @@
     AOT_Instructions_kMonomorphicEntryOffsetAOT = 8;
 static constexpr dart::compiler::target::word
     AOT_Instructions_kPolymorphicEntryOffsetAOT = 20;
-static constexpr dart::compiler::target::word AOT_HeapPage_kBytesPerCardLog2 =
+static constexpr dart::compiler::target::word AOT_OldPage_kBytesPerCardLog2 =
     10;
 static constexpr dart::compiler::target::word
     AOT_NativeEntry_kNumCallWrapperArguments = 2;
@@ -6580,7 +6578,7 @@
     AOT_GrowableObjectArray_length_offset = 16;
 static constexpr dart::compiler::target::word
     AOT_GrowableObjectArray_type_arguments_offset = 8;
-static constexpr dart::compiler::target::word AOT_HeapPage_card_table_offset =
+static constexpr dart::compiler::target::word AOT_OldPage_card_table_offset =
     40;
 static constexpr dart::compiler::target::word
     AOT_CallSiteData_arguments_descriptor_offset = 16;
diff --git a/runtime/vm/compiler/runtime_offsets_list.h b/runtime/vm/compiler/runtime_offsets_list.h
index 5371356..36b717a 100644
--- a/runtime/vm/compiler/runtime_offsets_list.h
+++ b/runtime/vm/compiler/runtime_offsets_list.h
@@ -38,7 +38,7 @@
   CONSTANT(Instructions, kPolymorphicEntryOffsetJIT)                           \
   CONSTANT(Instructions, kMonomorphicEntryOffsetAOT)                           \
   CONSTANT(Instructions, kPolymorphicEntryOffsetAOT)                           \
-  CONSTANT(HeapPage, kBytesPerCardLog2)                                        \
+  CONSTANT(OldPage, kBytesPerCardLog2)                                         \
   CONSTANT(NativeEntry, kNumCallWrapperArguments)                              \
   CONSTANT(String, kMaxElements)                                               \
   CONSTANT(SubtypeTestCache, kFunctionTypeArguments)                           \
@@ -98,7 +98,7 @@
   FIELD(GrowableObjectArray, data_offset)                                      \
   FIELD(GrowableObjectArray, length_offset)                                    \
   FIELD(GrowableObjectArray, type_arguments_offset)                            \
-  FIELD(HeapPage, card_table_offset)                                           \
+  FIELD(OldPage, card_table_offset)                                            \
   FIELD(CallSiteData, arguments_descriptor_offset)                             \
   FIELD(ICData, NumArgsTestedMask)                                             \
   FIELD(ICData, NumArgsTestedShift)                                            \
diff --git a/runtime/vm/compiler/stub_code_compiler.cc b/runtime/vm/compiler/stub_code_compiler.cc
index 27a2839..bb23702 100644
--- a/runtime/vm/compiler/stub_code_compiler.cc
+++ b/runtime/vm/compiler/stub_code_compiler.cc
@@ -62,6 +62,14 @@
   if (!FLAG_precompiled_mode || !FLAG_use_bare_instructions) {
     __ LoadField(CODE_REG,
                  FieldAddress(kFunctionReg, target::Function::code_offset()));
+    if (FLAG_enable_interpreter) {
+      // InterpretCall stub needs arguments descriptor for all function calls.
+      __ LoadObject(ARGS_DESC_REG,
+                    CastHandle<Object>(OneArgArgumentsDescriptor()));
+    } else {
+      // Load a GC-safe value for the arguments descriptor (unused but tagged).
+      __ LoadImmediate(ARGS_DESC_REG, 0);
+    }
   }
   __ Call(FieldAddress(kFunctionReg, target::Function::entry_point_offset()));
   __ Drop(1);  // Drop argument.
diff --git a/runtime/vm/compiler/stub_code_compiler_arm.cc b/runtime/vm/compiler/stub_code_compiler_arm.cc
index 6ce6f66..e6dcde1 100644
--- a/runtime/vm/compiler/stub_code_compiler_arm.cc
+++ b/runtime/vm/compiler/stub_code_compiler_arm.cc
@@ -1841,20 +1841,20 @@
 
     // Get card table.
     __ Bind(&remember_card);
-    __ AndImmediate(TMP, R1, target::kPageMask);  // HeapPage.
+    __ AndImmediate(TMP, R1, target::kOldPageMask);  // OldPage.
     __ ldr(TMP,
-           Address(TMP, target::HeapPage::card_table_offset()));  // Card table.
+           Address(TMP, target::OldPage::card_table_offset()));  // Card table.
     __ cmp(TMP, Operand(0));
     __ b(&remember_card_slow, EQ);
 
     // Dirty the card.
-    __ AndImmediate(TMP, R1, target::kPageMask);  // HeapPage.
-    __ sub(R9, R9, Operand(TMP));                 // Offset in page.
+    __ AndImmediate(TMP, R1, target::kOldPageMask);  // OldPage.
+    __ sub(R9, R9, Operand(TMP));                    // Offset in page.
     __ ldr(TMP,
-           Address(TMP, target::HeapPage::card_table_offset()));  // Card table.
+           Address(TMP, target::OldPage::card_table_offset()));  // Card table.
     __ add(TMP, TMP,
            Operand(R9, LSR,
-                   target::HeapPage::kBytesPerCardLog2));  // Card address.
+                   target::OldPage::kBytesPerCardLog2));  // Card address.
     __ strb(R1,
             Address(TMP, 0));  // Low byte of R0 is non-zero from object tag.
     __ Ret();
diff --git a/runtime/vm/compiler/stub_code_compiler_arm64.cc b/runtime/vm/compiler/stub_code_compiler_arm64.cc
index 5ff469e..01c8b0f 100644
--- a/runtime/vm/compiler/stub_code_compiler_arm64.cc
+++ b/runtime/vm/compiler/stub_code_compiler_arm64.cc
@@ -1952,19 +1952,19 @@
 
     // Get card table.
     __ Bind(&remember_card);
-    __ AndImmediate(TMP, R1, target::kPageMask);  // HeapPage.
+    __ AndImmediate(TMP, R1, target::kOldPageMask);  // OldPage.
     __ ldr(TMP,
-           Address(TMP, target::HeapPage::card_table_offset()));  // Card table.
+           Address(TMP, target::OldPage::card_table_offset()));  // Card table.
     __ cbz(&remember_card_slow, TMP);
 
     // Dirty the card.
-    __ AndImmediate(TMP, R1, target::kPageMask);  // HeapPage.
+    __ AndImmediate(TMP, R1, target::kOldPageMask);  // OldPage.
     __ sub(R25, R25, Operand(TMP));               // Offset in page.
     __ ldr(TMP,
-           Address(TMP, target::HeapPage::card_table_offset()));  // Card table.
+           Address(TMP, target::OldPage::card_table_offset()));  // Card table.
     __ add(TMP, TMP,
            Operand(R25, LSR,
-                   target::HeapPage::kBytesPerCardLog2));  // Card address.
+                   target::OldPage::kBytesPerCardLog2));  // Card address.
     __ str(R1, Address(TMP, 0),
            kUnsignedByte);  // Low byte of R1 is non-zero from object tag.
     __ ret();
diff --git a/runtime/vm/compiler/stub_code_compiler_ia32.cc b/runtime/vm/compiler/stub_code_compiler_ia32.cc
index 73db068..b728979 100644
--- a/runtime/vm/compiler/stub_code_compiler_ia32.cc
+++ b/runtime/vm/compiler/stub_code_compiler_ia32.cc
@@ -1472,19 +1472,18 @@
 
     // Get card table.
     __ Bind(&remember_card);
-    __ movl(EAX, EDX);                           // Object.
-    __ andl(EAX, Immediate(target::kPageMask));  // HeapPage.
-    __ cmpl(Address(EAX, target::HeapPage::card_table_offset()), Immediate(0));
+    __ movl(EAX, EDX);                              // Object.
+    __ andl(EAX, Immediate(target::kOldPageMask));  // OldPage.
+    __ cmpl(Address(EAX, target::OldPage::card_table_offset()), Immediate(0));
     __ j(EQUAL, &remember_card_slow, Assembler::kNearJump);
 
     // Dirty the card.
     __ subl(EDI, EAX);  // Offset in page.
-    __ movl(
-        EAX,
-        Address(EAX, target::HeapPage::card_table_offset()));  // Card table.
-    __ shrl(EDI,
-            Immediate(
-                target::HeapPage::kBytesPerCardLog2));  // Index in card table.
+    __ movl(EAX,
+            Address(EAX, target::OldPage::card_table_offset()));  // Card table.
+    __ shrl(
+        EDI,
+        Immediate(target::OldPage::kBytesPerCardLog2));  // Index in card table.
     __ movb(Address(EAX, EDI, TIMES_1, 0), Immediate(1));
     __ popl(ECX);
     __ popl(EAX);
diff --git a/runtime/vm/compiler/stub_code_compiler_x64.cc b/runtime/vm/compiler/stub_code_compiler_x64.cc
index 0e7f495..7e96d7c 100644
--- a/runtime/vm/compiler/stub_code_compiler_x64.cc
+++ b/runtime/vm/compiler/stub_code_compiler_x64.cc
@@ -1852,19 +1852,18 @@
 
     // Get card table.
     __ Bind(&remember_card);
-    __ movq(TMP, RDX);                           // Object.
-    __ andq(TMP, Immediate(target::kPageMask));  // HeapPage.
-    __ cmpq(Address(TMP, target::HeapPage::card_table_offset()), Immediate(0));
+    __ movq(TMP, RDX);                              // Object.
+    __ andq(TMP, Immediate(target::kOldPageMask));  // OldPage.
+    __ cmpq(Address(TMP, target::OldPage::card_table_offset()), Immediate(0));
     __ j(EQUAL, &remember_card_slow, Assembler::kNearJump);
 
     // Dirty the card.
     __ subq(R13, TMP);  // Offset in page.
-    __ movq(
-        TMP,
-        Address(TMP, target::HeapPage::card_table_offset()));  // Card table.
-    __ shrq(R13,
-            Immediate(
-                target::HeapPage::kBytesPerCardLog2));  // Index in card table.
+    __ movq(TMP,
+            Address(TMP, target::OldPage::card_table_offset()));  // Card table.
+    __ shrq(
+        R13,
+        Immediate(target::OldPage::kBytesPerCardLog2));  // Index in card table.
     __ movb(Address(TMP, R13, TIMES_1, 0), Immediate(1));
     __ ret();
 
diff --git a/runtime/vm/dart.cc b/runtime/vm/dart.cc
index 08ae076..d7c7691 100644
--- a/runtime/vm/dart.cc
+++ b/runtime/vm/dart.cc
@@ -559,6 +559,7 @@
     OS::PrintErr("[+%" Pd64 "ms] SHUTDOWN: Deleting thread pool\n",
                  UptimeMillis());
   }
+  thread_pool_->Shutdown();
   delete thread_pool_;
   thread_pool_ = NULL;
 
@@ -667,18 +668,13 @@
                                      Isolate* I,
                                      IsolateGroup* source_isolate_group) {
   // In AOT we speed up isolate spawning by copying donor's isolate structure.
-  Isolate* donor_isolate = source_isolate_group != nullptr
-                               ? source_isolate_group->FirstIsolate()
-                               : nullptr;
-  if (donor_isolate == nullptr) {
+  if (source_isolate_group == nullptr) {
     return false;
   }
   I->isolate_object_store()->Init();
   I->isolate_object_store()->PreallocateObjects();
-  // Initialize field_table with initial values.
-  I->set_field_table(T, donor_isolate->saved_initial_field_table()->Clone());
-  I->set_saved_initial_field_table(
-      donor_isolate->saved_initial_field_table_shareable());
+  I->set_field_table(
+      T, source_isolate_group->saved_initial_field_table()->Clone());
 
   return true;
 }
@@ -724,6 +720,8 @@
     }
 
     ReversePcLookupCache::BuildAndAttachToIsolateGroup(I->group());
+    I->group()->set_saved_initial_field_table(
+        std::shared_ptr<FieldTable>(I->field_table()->Clone()));
 
 #if defined(SUPPORT_TIMELINE)
     if (tbes.enabled()) {
diff --git a/runtime/vm/dart_api_impl.cc b/runtime/vm/dart_api_impl.cc
index 91d3d63..668fe7b 100644
--- a/runtime/vm/dart_api_impl.cc
+++ b/runtime/vm/dart_api_impl.cc
@@ -1076,6 +1076,12 @@
   }
 VM_METRIC_LIST(VM_METRIC_API);
 #undef VM_METRIC_API
+#else  // !defined(PRODUCT)
+#define VM_METRIC_API(type, variable, name, unit)                              \
+  DART_EXPORT int64_t Dart_VM##variable##Metric() { return -1; }
+VM_METRIC_LIST(VM_METRIC_API)
+#undef VM_METRIC_API
+#endif  // !defined(PRODUCT)
 
 #define ISOLATE_GROUP_METRIC_API(type, variable, name, unit)                   \
   DART_EXPORT int64_t Dart_Isolate##variable##Metric(Dart_Isolate isolate) {   \
@@ -1088,6 +1094,7 @@
 ISOLATE_GROUP_METRIC_LIST(ISOLATE_GROUP_METRIC_API)
 #undef ISOLATE_GROUP_METRIC_API
 
+#if !defined(PRODUCT)
 #define ISOLATE_METRIC_API(type, variable, name, unit)                         \
   DART_EXPORT int64_t Dart_Isolate##variable##Metric(Dart_Isolate isolate) {   \
     if (isolate == NULL) {                                                     \
@@ -1098,20 +1105,13 @@
   }
 ISOLATE_METRIC_LIST(ISOLATE_METRIC_API)
 #undef ISOLATE_METRIC_API
-
 #else  // !defined(PRODUCT)
-
-#define VM_METRIC_API(type, variable, name, unit)                              \
-  DART_EXPORT int64_t Dart_VM##variable##Metric() { return -1; }
-VM_METRIC_LIST(VM_METRIC_API)
-#undef VM_METRIC_API
-
 #define ISOLATE_METRIC_API(type, variable, name, unit)                         \
   DART_EXPORT int64_t Dart_Isolate##variable##Metric(Dart_Isolate isolate) {   \
     return -1;                                                                 \
   }
 ISOLATE_METRIC_LIST(ISOLATE_METRIC_API)
-ISOLATE_GROUP_METRIC_LIST(ISOLATE_METRIC_API)
+#undef ISOLATE_METRIC_API
 #endif  // !defined(PRODUCT)
 
 // --- Isolates ---
@@ -1956,7 +1956,7 @@
     RunLoopData data;
     data.monitor = &monitor;
     data.done = false;
-    I->message_handler()->Run(Dart::thread_pool(), NULL, RunLoopDone,
+    I->message_handler()->Run(I->group()->thread_pool(), NULL, RunLoopDone,
                               reinterpret_cast<uword>(&data));
     while (!data.done) {
       ml.Wait();
diff --git a/runtime/vm/dart_api_message.cc b/runtime/vm/dart_api_message.cc
index 639270c..f5814c4 100644
--- a/runtime/vm/dart_api_message.cc
+++ b/runtime/vm/dart_api_message.cc
@@ -5,6 +5,8 @@
 #include <memory>
 
 #include "vm/dart_api_message.h"
+
+#include "platform/undefined_behavior_sanitizer.h"
 #include "platform/unicode.h"
 #include "vm/object.h"
 #include "vm/snapshot_ids.h"
@@ -102,8 +104,6 @@
   return value;
 }
 
-_Dart_CObject* ApiMessageReader::singleton_uint32_typed_data_ = NULL;
-
 Dart_CObject* ApiMessageReader::AllocateDartCObjectDouble(double val) {
   Dart_CObject* value = AllocateDartCObject(Dart_CObject_kDouble);
   value->value.as_double = val;
@@ -789,6 +789,8 @@
   delete finalizable_data_;
 }
 
+NO_SANITIZE_UNDEFINED(
+    "enum")  // TODO(https://github.com/dart-lang/sdk/issues/39427)
 void ApiMessageWriter::MarkCObject(Dart_CObject* object, intptr_t object_id) {
   // Mark the object as serialized by adding the object id to the
   // upper bits of the type field in the Dart_CObject structure. Add
@@ -799,16 +801,22 @@
       ((mark_value) << kDartCObjectTypeBits) | object->type);
 }
 
+NO_SANITIZE_UNDEFINED(
+    "enum")  // TODO(https://github.com/dart-lang/sdk/issues/39427)
 void ApiMessageWriter::UnmarkCObject(Dart_CObject* object) {
   ASSERT(IsCObjectMarked(object));
   object->type =
       static_cast<Dart_CObject_Type>(object->type & kDartCObjectTypeMask);
 }
 
+NO_SANITIZE_UNDEFINED(
+    "enum")  // TODO(https://github.com/dart-lang/sdk/issues/39427)
 bool ApiMessageWriter::IsCObjectMarked(Dart_CObject* object) {
   return (object->type & kDartCObjectMarkMask) != 0;
 }
 
+NO_SANITIZE_UNDEFINED(
+    "enum")  // TODO(https://github.com/dart-lang/sdk/issues/39427)
 intptr_t ApiMessageWriter::GetMarkedCObjectMark(Dart_CObject* object) {
   ASSERT(IsCObjectMarked(object));
   intptr_t mark_value =
@@ -954,6 +962,8 @@
   return WriteCObjectInlined(object, type);
 }
 
+NO_SANITIZE_UNDEFINED(
+    "enum")  // TODO(https://github.com/dart-lang/sdk/issues/39427)
 bool ApiMessageWriter::WriteForwardedCObject(Dart_CObject* object) {
   ASSERT(IsCObjectMarked(object));
   Dart_CObject_Type type =
diff --git a/runtime/vm/dart_api_message.h b/runtime/vm/dart_api_message.h
index aa80031..ace7dd3 100644
--- a/runtime/vm/dart_api_message.h
+++ b/runtime/vm/dart_api_message.h
@@ -148,8 +148,6 @@
   Dart_CObject dynamic_type_marker;
 
   MessageFinalizableData* finalizable_data_;
-
-  static _Dart_CObject* singleton_uint32_typed_data_;
 };
 
 class ApiMessageWriter : public BaseWriter {
diff --git a/runtime/vm/datastream.h b/runtime/vm/datastream.h
index d34cdbe..89240d4 100644
--- a/runtime/vm/datastream.h
+++ b/runtime/vm/datastream.h
@@ -68,7 +68,9 @@
   // Reads 'len' bytes from the stream.
   void ReadBytes(uint8_t* addr, intptr_t len) {
     ASSERT((end_ - current_) >= len);
-    memmove(addr, current_, len);
+    if (len != 0) {
+      memmove(addr, current_, len);
+    }
     current_ += len;
   }
 
@@ -128,23 +130,24 @@
 
   template <typename T>
   T Read(uint8_t end_byte_marker) {
+    using Unsigned = typename std::make_unsigned<T>::type;
     const uint8_t* c = current_;
     ASSERT(c < end_);
     uint8_t b = *c++;
     if (b > kMaxUnsignedDataPerByte) {
       current_ = c;
-      return static_cast<T>(b) - end_byte_marker;
+      return static_cast<Unsigned>(b) - end_byte_marker;
     }
     T r = 0;
     uint8_t s = 0;
     do {
-      r |= static_cast<T>(b) << s;
+      r |= static_cast<Unsigned>(b) << s;
       s += kDataBitsPerByte;
       ASSERT(c < end_);
       b = *c++;
     } while (b <= kMaxUnsignedDataPerByte);
     current_ = c;
-    return r | ((static_cast<T>(b) - end_byte_marker) << s);
+    return r | ((static_cast<Unsigned>(b) - end_byte_marker) << s);
   }
 
   uint16_t Read16(uint8_t end_byte_marker) {
@@ -406,7 +409,9 @@
       Resize(len);
     }
     ASSERT((end_ - current_) >= len);
-    memmove(current_, addr, len);
+    if (len != 0) {
+      memmove(current_, addr, len);
+    }
     current_ += len;
   }
 
@@ -550,7 +555,9 @@
 
   void WriteBytes(const uint8_t* buffer, intptr_t size) {
     EnsureAvailable(size);
-    memmove(cursor_, buffer, size);
+    if (size != 0) {
+      memmove(cursor_, buffer, size);
+    }
     cursor_ += size;
   }
 
diff --git a/runtime/vm/exceptions.h b/runtime/vm/exceptions.h
index 430d7a9..7a44cd8 100644
--- a/runtime/vm/exceptions.h
+++ b/runtime/vm/exceptions.h
@@ -181,9 +181,9 @@
   static CatchEntryMove FromSlot(SourceKind kind,
                                  intptr_t src_slot,
                                  intptr_t dest_slot) {
-    return CatchEntryMove(src_slot,
-                          SourceKindField::encode(kind) |
-                              (dest_slot << SourceKindField::bitsize()));
+    return CatchEntryMove(src_slot, SourceKindField::encode(kind) |
+                                        (static_cast<uintptr_t>(dest_slot)
+                                         << SourceKindField::bitsize()));
   }
 
   static intptr_t EncodePairSource(intptr_t src_lo_slot, intptr_t src_hi_slot) {
diff --git a/runtime/vm/flag_list.h b/runtime/vm/flag_list.h
index 8fdc0de..605385f 100644
--- a/runtime/vm/flag_list.h
+++ b/runtime/vm/flag_list.h
@@ -85,9 +85,6 @@
 #define FLAG_LIST(P, R, C, D)                                                  \
   VM_GLOBAL_FLAG_LIST(P, R, C, D)                                              \
   DISASSEMBLE_FLAGS(P, R, C, D)                                                \
-  P(experimental_unsafe_mode_use_at_your_own_risk, bool, false,                \
-    "Omit runtime strong mode type checks and disable optimizations based on " \
-    "types.")                                                                  \
   P(abort_on_oom, bool, false,                                                 \
     "Abort if memory allocation fails - use only with --old-gen-heap-size")    \
   C(async_debugger, false, false, bool, true,                                  \
@@ -233,7 +230,6 @@
     "Use class hierarchy analysis even if it can cause deoptimization.")       \
   P(use_field_guards, bool, true, "Use field guards and track field types")    \
   C(use_osr, false, true, bool, true, "Use OSR")                               \
-  P(use_strong_mode_types, bool, true, "Optimize based on strong mode types.") \
   R(verbose_gc, false, bool, false, "Enables verbose GC.")                     \
   R(verbose_gc_hdr, 40, int, 40, "Print verbose GC header interval.")          \
   R(verify_after_gc, false, bool, false,                                       \
diff --git a/runtime/vm/flags.cc b/runtime/vm/flags.cc
index d326235..508a9ee 100644
--- a/runtime/vm/flags.cc
+++ b/runtime/vm/flags.cc
@@ -158,7 +158,7 @@
     OptionHandler option_handler_;
   };
   FlagType type_;
-  bool changed_;
+  bool changed_ = false;
 };
 
 Flag* Flags::Lookup(const char* name) {
diff --git a/runtime/vm/globals.h b/runtime/vm/globals.h
index 9b05b88..893a989 100644
--- a/runtime/vm/globals.h
+++ b/runtime/vm/globals.h
@@ -38,7 +38,7 @@
 // The default old gen heap size in MB, where 0 == unlimited.
 // 32-bit: OS limit is 2 or 3 GB
 // 64-bit: Linux's limit is
-//   sysctl vm.max_map_count (default 2^16) * 512 KB HeapPages = 32 GB
+//   sysctl vm.max_map_count (default 2^16) * 512 KB OldPages = 32 GB
 // Set the VM limit below the OS limit to increase the likelihood of failing
 // gracefully with a Dart OutOfMemory exception instead of SIGABORT.
 const intptr_t kDefaultMaxOldGenHeapSize = (kWordSize <= 4) ? 1536 : 30720;
diff --git a/runtime/vm/hash_map.h b/runtime/vm/hash_map.h
index 69758a2..0ac5463 100644
--- a/runtime/vm/hash_map.h
+++ b/runtime/vm/hash_map.h
@@ -528,7 +528,7 @@
   struct Pair {
     Key key;
     Value value;
-    Pair() : key(NULL), value() {}
+    Pair() : key(0), value() {}
     Pair(const Key key, const Value& value) : key(key), value(value) {}
     Pair(const Pair& other) : key(other.key), value(other.value) {}
     Pair& operator=(const Pair&) = default;
diff --git a/runtime/vm/heap/become.cc b/runtime/vm/heap/become.cc
index 2799db6..76f1303 100644
--- a/runtime/vm/heap/become.cc
+++ b/runtime/vm/heap/become.cc
@@ -296,8 +296,9 @@
   isolate_group->ForEachIsolate(
       [&](Isolate* isolate) {
         ObjectIdRing* ring = isolate->object_id_ring();
-        ASSERT(ring != NULL);
-        ring->VisitPointers(&pointer_visitor);
+        if (ring != nullptr) {
+          ring->VisitPointers(&pointer_visitor);
+        }
       },
       /*at_safepoint=*/true);
 #endif  // !PRODUCT
diff --git a/runtime/vm/heap/compactor.cc b/runtime/vm/heap/compactor.cc
index fbea2f8..4f2723c 100644
--- a/runtime/vm/heap/compactor.cc
+++ b/runtime/vm/heap/compactor.cc
@@ -19,11 +19,11 @@
             false,
             "Force compaction to move every movable object");
 
-// Each HeapPage is divided into blocks of size kBlockSize. Each object belongs
+// Each OldPage is divided into blocks of size kBlockSize. Each object belongs
 // to the block containing its header word (so up to kBlockSize +
 // kAllocatablePageSize - 2 * kObjectAlignment bytes belong to the same block).
 // During compaction, all live objects in the same block will slide such that
-// they all end up on the same HeapPage, and all gaps within the block will be
+// they all end up on the same OldPage, and all gaps within the block will be
 // closed. During sliding, a bitvector is computed that indictates which
 // allocation units are live, so the new address of any object in the block can
 // be found by adding the number of live allocation units before the object to
@@ -95,7 +95,7 @@
   uword Lookup(uword old_addr) { return BlockFor(old_addr)->Lookup(old_addr); }
 
   ForwardingBlock* BlockFor(uword old_addr) {
-    intptr_t page_offset = old_addr & ~kPageMask;
+    intptr_t page_offset = old_addr & ~kOldPageMask;
     intptr_t block_number = page_offset / kBlockSize;
     ASSERT(block_number >= 0);
     ASSERT(block_number <= kBlocksPerPage);
@@ -109,7 +109,7 @@
   DISALLOW_IMPLICIT_CONSTRUCTORS(ForwardingPage);
 };
 
-void HeapPage::AllocateForwardingPage() {
+void OldPage::AllocateForwardingPage() {
   ASSERT(forwarding_page_ == NULL);
   ASSERT((object_start() + sizeof(ForwardingPage)) < object_end());
   ASSERT(Utils::IsAligned(sizeof(ForwardingPage), kObjectAlignment));
@@ -123,8 +123,8 @@
                 GCCompactor* compactor,
                 ThreadBarrier* barrier,
                 RelaxedAtomic<intptr_t>* next_forwarding_task,
-                HeapPage* head,
-                HeapPage** tail,
+                OldPage* head,
+                OldPage** tail,
                 FreeList* freelist)
       : isolate_group_(isolate_group),
         compactor_(compactor),
@@ -141,8 +141,8 @@
   void RunEnteredIsolateGroup();
 
  private:
-  void PlanPage(HeapPage* page);
-  void SlidePage(HeapPage* page);
+  void PlanPage(OldPage* page);
+  void SlidePage(OldPage* page);
   uword PlanBlock(uword first_object, ForwardingPage* forwarding_page);
   uword SlideBlock(uword first_object, ForwardingPage* forwarding_page);
   void PlanMoveToContiguousSize(intptr_t size);
@@ -151,10 +151,10 @@
   GCCompactor* compactor_;
   ThreadBarrier* barrier_;
   RelaxedAtomic<intptr_t>* next_forwarding_task_;
-  HeapPage* head_;
-  HeapPage** tail_;
+  OldPage* head_;
+  OldPage** tail_;
   FreeList* freelist_;
-  HeapPage* free_page_;
+  OldPage* free_page_;
   uword free_current_;
   uword free_end_;
 
@@ -167,7 +167,7 @@
 // time, keeping blocks from spanning page boundaries (see ForwardingBlock).
 // Free space at the end of a page that is too small for the next block is
 // added to the freelist.
-void GCCompactor::Compact(HeapPage* pages,
+void GCCompactor::Compact(OldPage* pages,
                           FreeList* freelist,
                           Mutex* pages_lock) {
   SetupImagePageBoundaries();
@@ -175,7 +175,7 @@
   // Divide the heap.
   // TODO(30978): Try to divide based on live bytes or with work stealing.
   intptr_t num_pages = 0;
-  for (HeapPage* page = pages; page != NULL; page = page->next()) {
+  for (OldPage* page = pages; page != NULL; page = page->next()) {
     num_pages++;
   }
 
@@ -184,15 +184,15 @@
   if (num_pages < num_tasks) {
     num_tasks = num_pages;
   }
-  HeapPage** heads = new HeapPage*[num_tasks];
-  HeapPage** tails = new HeapPage*[num_tasks];
+  OldPage** heads = new OldPage*[num_tasks];
+  OldPage** tails = new OldPage*[num_tasks];
 
   {
     const intptr_t pages_per_task = num_pages / num_tasks;
     intptr_t task_index = 0;
     intptr_t page_index = 0;
-    HeapPage* page = pages;
-    HeapPage* prev = NULL;
+    OldPage* page = pages;
+    OldPage* prev = NULL;
     while (task_index < num_tasks) {
       if (page_index % pages_per_task == 0) {
         heads[task_index] = page;
@@ -220,8 +220,8 @@
          task_index++) {
       const intptr_t pages_per_task = num_pages / num_tasks;
       for (intptr_t j = 0; j < pages_per_task; j++) {
-        HeapPage* page = heap_->old_space()->AllocatePage(HeapPage::kData,
-                                                          /* link */ false);
+        OldPage* page = heap_->old_space()->AllocatePage(OldPage::kData,
+                                                         /* link */ false);
 
         if (page == nullptr) {
           oom = true;
@@ -301,9 +301,9 @@
 
     // Free empty pages.
     for (intptr_t task_index = 0; task_index < num_tasks; task_index++) {
-      HeapPage* page = tails[task_index]->next();
+      OldPage* page = tails[task_index]->next();
       while (page != NULL) {
-        HeapPage* next = page->next();
+        OldPage* next = page->next();
         heap_->old_space()->IncreaseCapacityInWordsLocked(
             -(page->memory_->size() >> kWordSizeLog2));
         page->Deallocate();
@@ -349,7 +349,7 @@
       free_current_ = free_page_->object_start();
       free_end_ = free_page_->object_end();
 
-      for (HeapPage* page = head_; page != NULL; page = page->next()) {
+      for (OldPage* page = head_; page != NULL; page = page->next()) {
         PlanPage(page);
       }
     }
@@ -362,7 +362,7 @@
       free_current_ = free_page_->object_start();
       free_end_ = free_page_->object_end();
 
-      for (HeapPage* page = head_; page != NULL; page = page->next()) {
+      for (OldPage* page = head_; page != NULL; page = page->next()) {
         SlidePage(page);
       }
 
@@ -386,7 +386,7 @@
       switch (forwarding_task) {
         case 0: {
           TIMELINE_FUNCTION_GC_DURATION(thread, "ForwardLargePages");
-          for (HeapPage* large_page =
+          for (OldPage* large_page =
                    isolate_group_->heap()->old_space()->large_pages_;
                large_page != NULL; large_page = large_page->next()) {
             large_page->VisitObjectPointers(compactor_);
@@ -418,7 +418,10 @@
           TIMELINE_FUNCTION_GC_DURATION(thread, "ForwardObjectIdRing");
           isolate_group_->ForEachIsolate(
               [&](Isolate* isolate) {
-                isolate->object_id_ring()->VisitPointers(compactor_);
+                ObjectIdRing* ring = isolate->object_id_ring();
+                if (ring != nullptr) {
+                  ring->VisitPointers(compactor_);
+                }
               },
               /*at_safepoint=*/true);
           break;
@@ -433,7 +436,7 @@
   }
 }
 
-void CompactorTask::PlanPage(HeapPage* page) {
+void CompactorTask::PlanPage(OldPage* page) {
   uword current = page->object_start();
   uword end = page->object_end();
 
@@ -445,7 +448,7 @@
   }
 }
 
-void CompactorTask::SlidePage(HeapPage* page) {
+void CompactorTask::SlidePage(OldPage* page) {
   uword current = page->object_start();
   uword end = page->object_end();
 
@@ -509,7 +512,7 @@
         // to a new page.  But if we exactly hit the end of the previous page
         // then free_current could be at the start of the next page, so we
         // subtract 1.
-        ASSERT(HeapPage::Of(free_current_ - 1) != HeapPage::Of(new_addr));
+        ASSERT(OldPage::Of(free_current_ - 1) != OldPage::Of(new_addr));
         intptr_t free_remaining = free_end_ - free_current_;
         // Add any leftover at the end of a page to the free list.
         if (free_remaining > 0) {
@@ -550,7 +553,7 @@
 
 void CompactorTask::PlanMoveToContiguousSize(intptr_t size) {
   // Move the free cursor to ensure 'size' bytes of contiguous space.
-  ASSERT(size <= kPageSize);
+  ASSERT(size <= kOldPageSize);
 
   // Check if the current free page has enough space.
   intptr_t free_remaining = free_end_ - free_current_;
@@ -571,7 +574,7 @@
     image_page_ranges_[i].size = 0;
   }
   intptr_t next_offset = 0;
-  HeapPage* image_page = Dart::vm_isolate()->heap()->old_space()->image_pages_;
+  OldPage* image_page = Dart::vm_isolate()->heap()->old_space()->image_pages_;
   while (image_page != NULL) {
     RELEASE_ASSERT(next_offset <= kMaxImagePages);
     image_page_ranges_[next_offset].base = image_page->object_start();
@@ -605,7 +608,7 @@
     }
   }
 
-  HeapPage* page = HeapPage::Of(old_target);
+  OldPage* page = OldPage::Of(old_target);
   ForwardingPage* forwarding_page = page->forwarding_page();
   if (forwarding_page == NULL) {
     return;  // Not moved (VM isolate, large page, code page).
diff --git a/runtime/vm/heap/compactor.h b/runtime/vm/heap/compactor.h
index e657f84..0de8b14 100644
--- a/runtime/vm/heap/compactor.h
+++ b/runtime/vm/heap/compactor.h
@@ -17,7 +17,7 @@
 // Forward declarations.
 class FreeList;
 class Heap;
-class HeapPage;
+class OldPage;
 
 // Implements a sliding compactor.
 class GCCompactor : public ValueObject,
@@ -30,7 +30,7 @@
         heap_(heap) {}
   ~GCCompactor() {}
 
-  void Compact(HeapPage* pages, FreeList* freelist, Mutex* mutex);
+  void Compact(OldPage* pages, FreeList* freelist, Mutex* mutex);
 
  private:
   friend class CompactorTask;
diff --git a/runtime/vm/heap/freelist.h b/runtime/vm/heap/freelist.h
index 1187ff3..00414b8 100644
--- a/runtime/vm/heap/freelist.h
+++ b/runtime/vm/heap/freelist.h
@@ -135,7 +135,7 @@
     return result;
   }
 
-  // Ensures HeapPage::VisitObjects can successful walk over a partially
+  // Ensures OldPage::VisitObjects can successful walk over a partially
   // allocated bump region.
   void MakeIterable() {
     if (top_ < end_) {
diff --git a/runtime/vm/heap/heap.cc b/runtime/vm/heap/heap.cc
index 79a159d..8a4cdf9 100644
--- a/runtime/vm/heap/heap.cc
+++ b/runtime/vm/heap/heap.cc
@@ -34,6 +34,10 @@
 namespace dart {
 
 DEFINE_FLAG(bool, write_protect_vm_isolate, true, "Write protect vm_isolate.");
+DEFINE_FLAG(bool,
+            disable_heap_verification,
+            false,
+            "Explicitly disable heap verification.");
 
 // We ensure that the GC does not use the current isolate.
 class NoActiveIsolateScope {
@@ -101,10 +105,10 @@
 
   // It is possible a GC doesn't clear enough space.
   // In that case, we must fall through and allocate into old space.
-  return AllocateOld(size, HeapPage::kData);
+  return AllocateOld(size, OldPage::kData);
 }
 
-uword Heap::AllocateOld(intptr_t size, HeapPage::PageType type) {
+uword Heap::AllocateOld(intptr_t size, OldPage::PageType type) {
   ASSERT(Thread::Current()->no_safepoint_scope_depth() == 0);
   CollectForDebugging();
   uword addr = old_space_.TryAllocate(size, type);
@@ -205,7 +209,7 @@
 }
 
 bool Heap::CodeContains(uword addr) const {
-  return old_space_.Contains(addr, HeapPage::kExecutable);
+  return old_space_.Contains(addr, OldPage::kExecutable);
 }
 
 bool Heap::DataContains(uword addr) const {
@@ -325,14 +329,14 @@
 
 InstructionsPtr Heap::FindObjectInCodeSpace(FindObjectVisitor* visitor) const {
   // Only executable pages can have RawInstructions objects.
-  ObjectPtr raw_obj = old_space_.FindObject(visitor, HeapPage::kExecutable);
+  ObjectPtr raw_obj = old_space_.FindObject(visitor, OldPage::kExecutable);
   ASSERT((raw_obj == Object::null()) ||
          (raw_obj->GetClassId() == kInstructionsCid));
   return static_cast<InstructionsPtr>(raw_obj);
 }
 
 ObjectPtr Heap::FindOldObject(FindObjectVisitor* visitor) const {
-  return old_space_.FindObject(visitor, HeapPage::kData);
+  return old_space_.FindObject(visitor, OldPage::kData);
 }
 
 ObjectPtr Heap::FindNewObject(FindObjectVisitor* visitor) {
@@ -641,14 +645,12 @@
 }
 
 void Heap::UpdateGlobalMaxUsed() {
-#if !defined(PRODUCT)
   ASSERT(isolate_group_ != NULL);
   // We are accessing the used in words count for both new and old space
   // without synchronizing. The value of this metric is approximate.
   isolate_group_->GetHeapGlobalUsedMaxMetric()->SetValue(
       (UsedInWords(Heap::kNew) * kWordSize) +
       (UsedInWords(Heap::kOld) * kWordSize));
-#endif  // !defined(PRODUCT)
 }
 
 void Heap::InitGrowthControl() {
@@ -768,6 +770,9 @@
 }
 
 bool Heap::Verify(MarkExpectation mark_expectation) {
+  if (FLAG_disable_heap_verification) {
+    return true;
+  }
   HeapIterationScope heap_iteration_scope(Thread::Current());
   return VerifyGC(mark_expectation);
 }
diff --git a/runtime/vm/heap/heap.h b/runtime/vm/heap/heap.h
index 49ee780..afeb2de 100644
--- a/runtime/vm/heap/heap.h
+++ b/runtime/vm/heap/heap.h
@@ -81,13 +81,13 @@
       case kNew:
         // Do not attempt to allocate very large objects in new space.
         if (!IsAllocatableInNewSpace(size)) {
-          return AllocateOld(size, HeapPage::kData);
+          return AllocateOld(size, OldPage::kData);
         }
         return AllocateNew(size);
       case kOld:
-        return AllocateOld(size, HeapPage::kData);
+        return AllocateOld(size, OldPage::kData);
       case kCode:
-        return AllocateOld(size, HeapPage::kExecutable);
+        return AllocateOld(size, OldPage::kExecutable);
       default:
         UNREACHABLE();
     }
@@ -349,7 +349,7 @@
        intptr_t max_old_gen_words);
 
   uword AllocateNew(intptr_t size);
-  uword AllocateOld(intptr_t size, HeapPage::PageType type);
+  uword AllocateOld(intptr_t size, OldPage::PageType type);
 
   // Visit all pointers. Caller must ensure concurrent sweeper is not running,
   // and the visitor must not allocate.
diff --git a/runtime/vm/heap/marker.cc b/runtime/vm/heap/marker.cc
index 44a7031..c99181e 100644
--- a/runtime/vm/heap/marker.cc
+++ b/runtime/vm/heap/marker.cc
@@ -216,7 +216,7 @@
   static bool TryAcquireMarkBit(ObjectPtr raw_obj) {
     if (FLAG_write_protect_code && raw_obj->IsInstructions()) {
       // A non-writable alias mapping may exist for instruction pages.
-      raw_obj = HeapPage::ToWritable(raw_obj);
+      raw_obj = OldPage::ToWritable(raw_obj);
     }
     if (!sync) {
       raw_obj->ptr()->SetMarkBitUnsynchronized();
diff --git a/runtime/vm/heap/pages.cc b/runtime/vm/heap/pages.cc
index 1c6444c..2534628 100644
--- a/runtime/vm/heap/pages.cc
+++ b/runtime/vm/heap/pages.cc
@@ -43,18 +43,18 @@
             "Print free list statistics after a GC");
 DEFINE_FLAG(bool, log_growth, false, "Log PageSpace growth policy decisions.");
 
-HeapPage* HeapPage::Allocate(intptr_t size_in_words,
-                             PageType type,
-                             const char* name) {
+OldPage* OldPage::Allocate(intptr_t size_in_words,
+                           PageType type,
+                           const char* name) {
   const bool executable = type == kExecutable;
 
   VirtualMemory* memory = VirtualMemory::AllocateAligned(
-      size_in_words << kWordSizeLog2, kPageSize, executable, name);
+      size_in_words << kWordSizeLog2, kOldPageSize, executable, name);
   if (memory == NULL) {
     return NULL;
   }
 
-  HeapPage* result = reinterpret_cast<HeapPage*>(memory->address());
+  OldPage* result = reinterpret_cast<OldPage*>(memory->address());
   ASSERT(result != NULL);
   result->memory_ = memory;
   result->next_ = NULL;
@@ -68,7 +68,7 @@
   return result;
 }
 
-void HeapPage::Deallocate() {
+void OldPage::Deallocate() {
   if (card_table_ != NULL) {
     free(card_table_);
     card_table_ = NULL;
@@ -84,14 +84,14 @@
   // unavailable after the delete below.
   delete memory_;
 
-  // For a heap page from a snapshot, the HeapPage object lives in the malloc
+  // For a heap page from a snapshot, the OldPage object lives in the malloc
   // heap rather than the page itself.
   if (image_page) {
     free(this);
   }
 }
 
-void HeapPage::VisitObjects(ObjectVisitor* visitor) const {
+void OldPage::VisitObjects(ObjectVisitor* visitor) const {
   ASSERT(Thread::Current()->IsAtSafepoint());
   NoSafepointScope no_safepoint;
   uword obj_addr = object_start();
@@ -104,7 +104,7 @@
   ASSERT(obj_addr == end_addr);
 }
 
-void HeapPage::VisitObjectPointers(ObjectPointerVisitor* visitor) const {
+void OldPage::VisitObjectPointers(ObjectPointerVisitor* visitor) const {
   ASSERT(Thread::Current()->IsAtSafepoint() ||
          (Thread::Current()->task_kind() == Thread::kCompactorTask));
   NoSafepointScope no_safepoint;
@@ -117,7 +117,7 @@
   ASSERT(obj_addr == end_addr);
 }
 
-void HeapPage::VisitRememberedCards(ObjectPointerVisitor* visitor) {
+void OldPage::VisitRememberedCards(ObjectPointerVisitor* visitor) {
   ASSERT(Thread::Current()->IsAtSafepoint() ||
          (Thread::Current()->task_kind() == Thread::kScavengerTask));
   NoSafepointScope no_safepoint;
@@ -178,7 +178,7 @@
   }
 }
 
-ObjectPtr HeapPage::FindObject(FindObjectVisitor* visitor) const {
+ObjectPtr OldPage::FindObject(FindObjectVisitor* visitor) const {
   uword obj_addr = object_start();
   uword end_addr = object_end();
   if (visitor->VisitRange(obj_addr, end_addr)) {
@@ -196,7 +196,7 @@
   return Object::null();
 }
 
-void HeapPage::WriteProtect(bool read_only) {
+void OldPage::WriteProtect(bool read_only) {
   ASSERT(!is_image_page());
 
   VirtualMemory::Protection prot;
@@ -267,12 +267,12 @@
 }
 
 intptr_t PageSpace::LargePageSizeInWordsFor(intptr_t size) {
-  intptr_t page_size = Utils::RoundUp(size + HeapPage::ObjectStartOffset(),
+  intptr_t page_size = Utils::RoundUp(size + OldPage::ObjectStartOffset(),
                                       VirtualMemory::PageSize());
   return page_size >> kWordSizeLog2;
 }
 
-void PageSpace::AddPageLocked(HeapPage* page) {
+void PageSpace::AddPageLocked(OldPage* page) {
   if (pages_ == nullptr) {
     pages_ = page;
   } else {
@@ -281,7 +281,7 @@
   pages_tail_ = page;
 }
 
-void PageSpace::AddLargePageLocked(HeapPage* page) {
+void PageSpace::AddLargePageLocked(OldPage* page) {
   if (large_pages_ == nullptr) {
     large_pages_ = page;
   } else {
@@ -290,7 +290,7 @@
   large_pages_tail_ = page;
 }
 
-void PageSpace::AddExecPageLocked(HeapPage* page) {
+void PageSpace::AddExecPageLocked(OldPage* page) {
   if (exec_pages_ == nullptr) {
     exec_pages_ = page;
   } else {
@@ -305,7 +305,7 @@
   exec_pages_tail_ = page;
 }
 
-void PageSpace::RemovePageLocked(HeapPage* page, HeapPage* previous_page) {
+void PageSpace::RemovePageLocked(OldPage* page, OldPage* previous_page) {
   if (previous_page != NULL) {
     previous_page->set_next(page->next());
   } else {
@@ -316,7 +316,7 @@
   }
 }
 
-void PageSpace::RemoveLargePageLocked(HeapPage* page, HeapPage* previous_page) {
+void PageSpace::RemoveLargePageLocked(OldPage* page, OldPage* previous_page) {
   if (previous_page != NULL) {
     previous_page->set_next(page->next());
   } else {
@@ -327,7 +327,7 @@
   }
 }
 
-void PageSpace::RemoveExecPageLocked(HeapPage* page, HeapPage* previous_page) {
+void PageSpace::RemoveExecPageLocked(OldPage* page, OldPage* previous_page) {
   if (previous_page != NULL) {
     previous_page->set_next(page->next());
   } else {
@@ -338,20 +338,20 @@
   }
 }
 
-HeapPage* PageSpace::AllocatePage(HeapPage::PageType type, bool link) {
+OldPage* PageSpace::AllocatePage(OldPage::PageType type, bool link) {
   {
     MutexLocker ml(&pages_lock_);
-    if (!CanIncreaseCapacityInWordsLocked(kPageSizeInWords)) {
+    if (!CanIncreaseCapacityInWordsLocked(kOldPageSizeInWords)) {
       return nullptr;
     }
-    IncreaseCapacityInWordsLocked(kPageSizeInWords);
+    IncreaseCapacityInWordsLocked(kOldPageSizeInWords);
   }
-  const bool is_exec = (type == HeapPage::kExecutable);
+  const bool is_exec = (type == OldPage::kExecutable);
   const char* name = Heap::RegionName(is_exec ? Heap::kCode : Heap::kOld);
-  HeapPage* page = HeapPage::Allocate(kPageSizeInWords, type, name);
+  OldPage* page = OldPage::Allocate(kOldPageSizeInWords, type, name);
   if (page == nullptr) {
     RELEASE_ASSERT(!FLAG_abort_on_oom);
-    IncreaseCapacityInWords(-kPageSizeInWords);
+    IncreaseCapacityInWords(-kOldPageSizeInWords);
     return nullptr;
   }
 
@@ -365,14 +365,14 @@
   }
 
   page->set_object_end(page->memory_->end());
-  if ((type != HeapPage::kExecutable) && (heap_ != nullptr) &&
+  if ((type != OldPage::kExecutable) && (heap_ != nullptr) &&
       (heap_->isolate_group() != Dart::vm_isolate()->group())) {
     page->AllocateForwardingPage();
   }
   return page;
 }
 
-HeapPage* PageSpace::AllocateLargePage(intptr_t size, HeapPage::PageType type) {
+OldPage* PageSpace::AllocateLargePage(intptr_t size, OldPage::PageType type) {
   const intptr_t page_size_in_words = LargePageSizeInWordsFor(size);
   {
     MutexLocker ml(&pages_lock_);
@@ -381,9 +381,9 @@
     }
     IncreaseCapacityInWordsLocked(page_size_in_words);
   }
-  const bool is_exec = (type == HeapPage::kExecutable);
+  const bool is_exec = (type == OldPage::kExecutable);
   const char* name = Heap::RegionName(is_exec ? Heap::kCode : Heap::kOld);
-  HeapPage* page = HeapPage::Allocate(page_size_in_words, type, name);
+  OldPage* page = OldPage::Allocate(page_size_in_words, type, name);
 
   MutexLocker ml(&pages_lock_);
   if (page == nullptr) {
@@ -402,7 +402,7 @@
   return page;
 }
 
-void PageSpace::TruncateLargePage(HeapPage* page,
+void PageSpace::TruncateLargePage(OldPage* page,
                                   intptr_t new_object_size_in_bytes) {
   const intptr_t old_object_size_in_bytes =
       page->object_end() - page->object_start();
@@ -418,8 +418,8 @@
   }
 }
 
-void PageSpace::FreePage(HeapPage* page, HeapPage* previous_page) {
-  bool is_exec = (page->type() == HeapPage::kExecutable);
+void PageSpace::FreePage(OldPage* page, OldPage* previous_page) {
+  bool is_exec = (page->type() == OldPage::kExecutable);
   {
     MutexLocker ml(&pages_lock_);
     IncreaseCapacityInWordsLocked(-(page->memory_->size() >> kWordSizeLog2));
@@ -433,18 +433,18 @@
   page->Deallocate();
 }
 
-void PageSpace::FreeLargePage(HeapPage* page, HeapPage* previous_page) {
-  ASSERT(page->type() != HeapPage::kExecutable);
+void PageSpace::FreeLargePage(OldPage* page, OldPage* previous_page) {
+  ASSERT(page->type() != OldPage::kExecutable);
   MutexLocker ml(&pages_lock_);
   IncreaseCapacityInWordsLocked(-(page->memory_->size() >> kWordSizeLog2));
   RemoveLargePageLocked(page, previous_page);
   page->Deallocate();
 }
 
-void PageSpace::FreePages(HeapPage* pages) {
-  HeapPage* page = pages;
+void PageSpace::FreePages(OldPage* pages) {
+  OldPage* page = pages;
   while (page != NULL) {
-    HeapPage* next = page->next();
+    OldPage* next = page->next();
     page->Deallocate();
     page = next;
   }
@@ -464,7 +464,7 @@
 
 uword PageSpace::TryAllocateInFreshPage(intptr_t size,
                                         FreeList* freelist,
-                                        HeapPage::PageType type,
+                                        OldPage::PageType type,
                                         GrowthPolicy growth_policy,
                                         bool is_locked) {
   ASSERT(Heap::IsAllocatableViaFreeLists(size));
@@ -475,10 +475,10 @@
   SpaceUsage after_allocation = GetCurrentUsage();
   after_allocation.used_in_words += size >> kWordSizeLog2;
   // Can we grow by one page?
-  after_allocation.capacity_in_words += kPageSizeInWords;
+  after_allocation.capacity_in_words += kOldPageSizeInWords;
   if (growth_policy == kForceGrowth ||
       !page_space_controller_.NeedsGarbageCollection(after_allocation)) {
-    HeapPage* page = AllocatePage(type);
+    OldPage* page = AllocatePage(type);
     if (page == NULL) {
       return 0;
     }
@@ -501,7 +501,7 @@
 }
 
 uword PageSpace::TryAllocateInFreshLargePage(intptr_t size,
-                                             HeapPage::PageType type,
+                                             OldPage::PageType type,
                                              GrowthPolicy growth_policy) {
   ASSERT(!Heap::IsAllocatableViaFreeLists(size));
 
@@ -519,7 +519,7 @@
   after_allocation.capacity_in_words += page_size_in_words;
   if (growth_policy == kForceGrowth ||
       !page_space_controller_.NeedsGarbageCollection(after_allocation)) {
-    HeapPage* page = AllocateLargePage(size, type);
+    OldPage* page = AllocateLargePage(size, type);
     if (page != NULL) {
       result = page->object_start();
       // Note: usage_.capacity_in_words is increased by AllocateLargePage.
@@ -531,7 +531,7 @@
 
 uword PageSpace::TryAllocateInternal(intptr_t size,
                                      FreeList* freelist,
-                                     HeapPage::PageType type,
+                                     OldPage::PageType type,
                                      GrowthPolicy growth_policy,
                                      bool is_protected,
                                      bool is_locked) {
@@ -588,7 +588,7 @@
  public:
   explicit BasePageIterator(const PageSpace* space) : space_(space) {}
 
-  HeapPage* page() const { return page_; }
+  OldPage* page() const { return page_; }
 
   bool Done() const { return page_ == NULL; }
 
@@ -632,7 +632,7 @@
 
   const PageSpace* space_ = nullptr;
   List list_;
-  HeapPage* page_ = nullptr;
+  OldPage* page_ = nullptr;
 };
 
 // Provides unsafe access to all pages. Assumes pages are walkable.
@@ -667,7 +667,7 @@
     space_->MakeIterable();
     page_ = space_->exec_pages_;
   }
-  HeapPage* page() const { return page_; }
+  OldPage* page() const { return page_; }
   bool Done() const { return page_ == NULL; }
   void Advance() {
     ASSERT(!Done());
@@ -678,7 +678,7 @@
   const PageSpace* space_;
   MutexLocker ml_;
   NoSafepointScope no_safepoint;
-  HeapPage* page_;
+  OldPage* page_;
 };
 
 void PageSpace::MakeIterable() const {
@@ -702,7 +702,6 @@
 }
 
 void PageSpace::UpdateMaxCapacityLocked() {
-#if !defined(PRODUCT)
   if (heap_ == NULL) {
     // Some unit tests.
     return;
@@ -712,11 +711,9 @@
   auto isolate_group = heap_->isolate_group();
   isolate_group->GetHeapOldCapacityMaxMetric()->SetValue(
       static_cast<int64_t>(usage_.capacity_in_words) * kWordSize);
-#endif  // !defined(PRODUCT)
 }
 
 void PageSpace::UpdateMaxUsed() {
-#if !defined(PRODUCT)
   if (heap_ == NULL) {
     // Some unit tests.
     return;
@@ -725,7 +722,6 @@
   ASSERT(heap_->isolate_group() != NULL);
   auto isolate_group = heap_->isolate_group();
   isolate_group->GetHeapOldUsedMaxMetric()->SetValue(UsedInWords() * kWordSize);
-#endif  // !defined(PRODUCT)
 }
 
 bool PageSpace::Contains(uword addr) const {
@@ -746,8 +742,8 @@
   return false;
 }
 
-bool PageSpace::Contains(uword addr, HeapPage::PageType type) const {
-  if (type == HeapPage::kExecutable) {
+bool PageSpace::Contains(uword addr, OldPage::PageType type) const {
+  if (type == OldPage::kExecutable) {
     // Fast path executable pages.
     for (ExclusiveCodePageIterator it(this); !it.Done(); it.Advance()) {
       if (it.page()->Contains(addr)) {
@@ -766,7 +762,7 @@
 
 bool PageSpace::DataContains(uword addr) const {
   for (ExclusivePageIterator it(this); !it.Done(); it.Advance()) {
-    if ((it.page()->type() != HeapPage::kExecutable) &&
+    if ((it.page()->type() != OldPage::kExecutable) &&
         it.page()->Contains(addr)) {
       return true;
     }
@@ -822,9 +818,9 @@
   // Large pages may be added concurrently due to promotion in another scavenge
   // worker, so terminate the traversal when we hit the tail we saw while
   // holding the pages lock, instead of at NULL, otherwise we are racing when we
-  // read HeapPage::next_ and HeapPage::remembered_cards_.
-  HeapPage* page;
-  HeapPage* tail;
+  // read OldPage::next_ and OldPage::remembered_cards_.
+  OldPage* page;
+  OldPage* tail;
   {
     MutexLocker ml(&pages_lock_);
     page = large_pages_;
@@ -838,8 +834,8 @@
 }
 
 ObjectPtr PageSpace::FindObject(FindObjectVisitor* visitor,
-                                HeapPage::PageType type) const {
-  if (type == HeapPage::kExecutable) {
+                                OldPage::PageType type) const {
+  if (type == OldPage::kExecutable) {
     // Fast path executable pages.
     for (ExclusiveCodePageIterator it(this); !it.Done(); it.Advance()) {
       ObjectPtr obj = it.page()->FindObject(visitor);
@@ -918,7 +914,7 @@
   heap_map.AddProperty("freeClassId", static_cast<intptr_t>(kFreeListElement));
   heap_map.AddProperty("unitSizeBytes",
                        static_cast<intptr_t>(kObjectAlignment));
-  heap_map.AddProperty("pageSizeBytes", kPageSizeInWords * kWordSize);
+  heap_map.AddProperty("pageSizeBytes", kOldPageSizeInWords * kWordSize);
   {
     JSONObject class_list(&heap_map, "classList");
     isolate->class_table()->PrintToJSONObject(&class_list);
@@ -931,7 +927,7 @@
     MutexLocker ml(&pages_lock_);
     MakeIterable();
     JSONArray all_pages(&heap_map, "pages");
-    for (HeapPage* page = pages_; page != NULL; page = page->next()) {
+    for (OldPage* page = pages_; page != NULL; page = page->next()) {
       JSONObject page_container(&all_pages);
       page_container.AddPropertyF("objectStart", "0x%" Px "",
                                   page->object_start());
@@ -939,7 +935,7 @@
       HeapMapAsJSONVisitor printer(&page_map);
       page->VisitObjects(&printer);
     }
-    for (HeapPage* page = exec_pages_; page != NULL; page = page->next()) {
+    for (OldPage* page = exec_pages_; page != NULL; page = page->next()) {
       JSONObject page_container(&all_pages);
       page_container.AddPropertyF("objectStart", "0x%" Px "",
                                   page->object_start());
@@ -956,15 +952,15 @@
     MutexLocker ml(&pages_lock_);
     NoSafepointScope no_safepoint;
     // No need to go through all of the data pages first.
-    HeapPage* page = exec_pages_;
+    OldPage* page = exec_pages_;
     while (page != NULL) {
-      ASSERT(page->type() == HeapPage::kExecutable);
+      ASSERT(page->type() == OldPage::kExecutable);
       page->WriteProtect(read_only);
       page = page->next();
     }
     page = large_pages_;
     while (page != NULL) {
-      if (page->type() == HeapPage::kExecutable) {
+      if (page->type() == OldPage::kExecutable) {
         page->WriteProtect(read_only);
       }
       page = page->next();
@@ -1007,7 +1003,7 @@
   // Discount two pages to account for the newest data and code pages, whose
   // partial use doesn't indicate fragmentation.
   const intptr_t excess_in_words =
-      usage_.capacity_in_words - usage_.used_in_words - 2 * kPageSizeInWords;
+      usage_.capacity_in_words - usage_.used_in_words - 2 * kOldPageSizeInWords;
   const double excess_ratio = static_cast<double>(excess_in_words) /
                               static_cast<double>(usage_.capacity_in_words);
   const bool fragmented = excess_ratio > 0.05;
@@ -1184,12 +1180,12 @@
 
     TIMELINE_FUNCTION_GC_DURATION(thread, "SweepExecutable");
     GCSweeper sweeper;
-    HeapPage* prev_page = NULL;
-    HeapPage* page = exec_pages_;
-    FreeList* freelist = &freelists_[HeapPage::kExecutable];
+    OldPage* prev_page = NULL;
+    OldPage* page = exec_pages_;
+    FreeList* freelist = &freelists_[OldPage::kExecutable];
     MutexLocker ml(freelist->mutex());
     while (page != NULL) {
-      HeapPage* next_page = page->next();
+      OldPage* next_page = page->next();
       bool page_in_use = sweeper.SweepPage(page, freelist, true /*is_locked*/);
       if (page_in_use) {
         prev_page = page;
@@ -1248,10 +1244,10 @@
   TIMELINE_FUNCTION_GC_DURATION(Thread::Current(), "SweepLarge");
 
   GCSweeper sweeper;
-  HeapPage* prev_page = nullptr;
-  HeapPage* page = large_pages_;
+  OldPage* prev_page = nullptr;
+  OldPage* page = large_pages_;
   while (page != nullptr) {
-    HeapPage* next_page = page->next();
+    OldPage* next_page = page->next();
     const intptr_t words_to_end = sweeper.SweepLargePage(page);
     if (words_to_end == 0) {
       FreeLargePage(page, prev_page);
@@ -1275,11 +1271,11 @@
     DataFreeList(i)->mutex()->Lock();
   }
 
-  HeapPage* prev_page = nullptr;
-  HeapPage* page = pages_;
+  OldPage* prev_page = nullptr;
+  OldPage* page = pages_;
   while (page != nullptr) {
-    HeapPage* next_page = page->next();
-    ASSERT(page->type() == HeapPage::kData);
+    OldPage* next_page = page->next();
+    ASSERT(page->type() == OldPage::kData);
     shard = (shard + 1) % num_shards;
     bool page_in_use =
         sweeper.SweepPage(page, DataFreeList(shard), true /*is_locked*/);
@@ -1306,13 +1302,13 @@
 void PageSpace::ConcurrentSweep(IsolateGroup* isolate_group) {
   // Start the concurrent sweeper task now.
   GCSweeper::SweepConcurrent(isolate_group, pages_, pages_tail_, large_pages_,
-                             large_pages_tail_, &freelists_[HeapPage::kData]);
+                             large_pages_tail_, &freelists_[OldPage::kData]);
 }
 
 void PageSpace::Compact(Thread* thread) {
   thread->isolate_group()->set_compaction_in_progress(true);
   GCCompactor compactor(thread, heap_);
-  compactor.Compact(pages_, &freelists_[HeapPage::kData], &pages_lock_);
+  compactor.Compact(pages_, &freelists_[OldPage::kData], &pages_lock_);
   thread->isolate_group()->set_compaction_in_progress(false);
 
   if (FLAG_verify_after_gc) {
@@ -1338,7 +1334,7 @@
       // side-effect of populating the freelist with a large block. The next
       // bump allocation request will have a chance to consume that block.
       // TODO(koda): Could take freelist lock just once instead of twice.
-      return TryAllocateInFreshPage(size, freelist, HeapPage::kData,
+      return TryAllocateInFreshPage(size, freelist, OldPage::kData,
                                     kForceGrowth, true /* is_locked*/);
     }
     intptr_t block_size = block->HeapSize();
@@ -1376,18 +1372,18 @@
 }
 
 void PageSpace::SetupImagePage(void* pointer, uword size, bool is_executable) {
-  // Setup a HeapPage so precompiled Instructions can be traversed.
-  // Instructions are contiguous at [pointer, pointer + size). HeapPage
+  // Setup a OldPage so precompiled Instructions can be traversed.
+  // Instructions are contiguous at [pointer, pointer + size). OldPage
   // expects to find objects at [memory->start() + ObjectStartOffset,
   // memory->end()).
-  uword offset = HeapPage::ObjectStartOffset();
+  uword offset = OldPage::ObjectStartOffset();
   pointer = reinterpret_cast<void*>(reinterpret_cast<uword>(pointer) - offset);
   ASSERT(Utils::IsAligned(pointer, kObjectAlignment));
   size += offset;
 
   VirtualMemory* memory = VirtualMemory::ForImagePage(pointer, size);
   ASSERT(memory != NULL);
-  HeapPage* page = reinterpret_cast<HeapPage*>(malloc(sizeof(HeapPage)));
+  OldPage* page = reinterpret_cast<OldPage*>(malloc(sizeof(OldPage)));
   page->memory_ = memory;
   page->next_ = NULL;
   page->object_end_ = memory->end();
@@ -1395,9 +1391,9 @@
   page->forwarding_page_ = NULL;
   page->card_table_ = NULL;
   if (is_executable) {
-    page->type_ = HeapPage::kExecutable;
+    page->type_ = OldPage::kExecutable;
   } else {
-    page->type_ = HeapPage::kData;
+    page->type_ = OldPage::kData;
   }
 
   MutexLocker ml(&pages_lock_);
@@ -1407,7 +1403,7 @@
 
 bool PageSpace::IsObjectFromImagePages(dart::ObjectPtr object) {
   uword object_addr = ObjectLayout::ToAddr(object);
-  HeapPage* image_page = image_pages_;
+  OldPage* image_page = image_pages_;
   while (image_page != nullptr) {
     if (image_page->Contains(object_addr)) {
       return true;
@@ -1417,10 +1413,10 @@
   return false;
 }
 
-static void AppendList(HeapPage** pages,
-                       HeapPage** pages_tail,
-                       HeapPage** other_pages,
-                       HeapPage** other_pages_tail) {
+static void AppendList(OldPage** pages,
+                       OldPage** pages_tail,
+                       OldPage** other_pages,
+                       OldPage** other_pages_tail) {
   ASSERT((*pages == nullptr) == (*pages_tail == nullptr));
   ASSERT((*other_pages == nullptr) == (*other_pages_tail == nullptr));
 
@@ -1430,7 +1426,7 @@
       *pages_tail = *other_pages_tail;
     } else {
       const bool is_execute = FLAG_write_protect_code &&
-                              (*pages_tail)->type() == HeapPage::kExecutable;
+                              (*pages_tail)->type() == OldPage::kExecutable;
       if (is_execute) {
         (*pages_tail)->WriteProtect(false);
       }
@@ -1445,7 +1441,7 @@
   }
 }
 
-static void EnsureEqualImagePages(HeapPage* pages, HeapPage* other_pages) {
+static void EnsureEqualImagePages(OldPage* pages, OldPage* other_pages) {
 #if defined(DEBUG)
   while (pages != nullptr) {
     ASSERT((pages == nullptr) == (other_pages == nullptr));
@@ -1470,7 +1466,7 @@
     ASSERT(other->freelists_[i].top() == 0);
     ASSERT(other->freelists_[i].end() == 0);
     const bool is_protected =
-        FLAG_write_protect_code && i == HeapPage::kExecutable;
+        FLAG_write_protect_code && i == OldPage::kExecutable;
     freelists_[i].MergeOtherFreelist(&other->freelists_[i], is_protected);
     other->freelists_[i].Reset();
   }
@@ -1593,7 +1589,7 @@
         (static_cast<intptr_t>(after.CombinedUsedInWords() /
                                desired_utilization_) -
          (after.CombinedUsedInWords())) /
-        kPageSizeInWords;
+        kOldPageSizeInWords;
     if (garbage_ratio == 0) {
       // No garbage in the previous cycle so it would be hard to compute a
       // grow_heap size based on estimated garbage so we use growth ratio
@@ -1608,8 +1604,8 @@
       intptr_t local_grow_heap = 0;
       while (min < max) {
         local_grow_heap = (max + min) / 2;
-        const intptr_t limit =
-            after.CombinedUsedInWords() + (local_grow_heap * kPageSizeInWords);
+        const intptr_t limit = after.CombinedUsedInWords() +
+                               (local_grow_heap * kOldPageSizeInWords);
         const intptr_t allocated_before_next_gc =
             limit - (after.CombinedUsedInWords());
         const double estimated_garbage = k * allocated_before_next_gc;
@@ -1637,7 +1633,7 @@
   // Limit shrinkage: allow growth by at least half the pages freed by GC.
   const intptr_t freed_pages =
       (before.CombinedUsedInWords() - after.CombinedUsedInWords()) /
-      kPageSizeInWords;
+      kOldPageSizeInWords;
   grow_heap = Utils::Maximum(grow_heap, freed_pages / 2);
   heap_->RecordData(PageSpace::kAllowedGrowth, grow_heap);
   last_usage_ = after;
@@ -1648,11 +1644,15 @@
 void PageSpaceController::EvaluateAfterLoading(SpaceUsage after) {
   // Number of pages we can allocate and still be within the desired growth
   // ratio.
-  intptr_t growth_in_pages =
-      (static_cast<intptr_t>(after.CombinedUsedInWords() /
-                             desired_utilization_) -
-       (after.CombinedUsedInWords())) /
-      kPageSizeInWords;
+  intptr_t growth_in_pages;
+  if (desired_utilization_ == 0.0) {
+    growth_in_pages = heap_growth_max_;
+  } else {
+    growth_in_pages = (static_cast<intptr_t>(after.CombinedUsedInWords() /
+                                             desired_utilization_) -
+                       (after.CombinedUsedInWords())) /
+                      kOldPageSizeInWords;
+  }
 
   // Apply growth cap.
   growth_in_pages =
@@ -1667,7 +1667,7 @@
                                        const char* reason) {
   // Save final threshold compared before growing.
   hard_gc_threshold_in_words_ =
-      after.CombinedUsedInWords() + (kPageSizeInWords * growth_in_pages);
+      after.CombinedUsedInWords() + (kOldPageSizeInWords * growth_in_pages);
 
   // Start concurrent marking when old-space has less than half of new-space
   // available or less than 5% available.
@@ -1684,7 +1684,7 @@
 
   // Set a tight idle threshold.
   idle_gc_threshold_in_words_ =
-      after.CombinedUsedInWords() + (2 * kPageSizeInWords);
+      after.CombinedUsedInWords() + (2 * kOldPageSizeInWords);
 
 #if defined(SUPPORT_TIMELINE)
   Thread* thread = Thread::Current();
diff --git a/runtime/vm/heap/pages.h b/runtime/vm/heap/pages.h
index 6460ae0..951e95b 100644
--- a/runtime/vm/heap/pages.h
+++ b/runtime/vm/heap/pages.h
@@ -26,23 +26,23 @@
 class ForwardingPage;
 class GCMarker;
 
-static const intptr_t kPageSize = 512 * KB;
-static const intptr_t kPageSizeInWords = kPageSize / kWordSize;
-static const intptr_t kPageMask = ~(kPageSize - 1);
+static constexpr intptr_t kOldPageSize = 512 * KB;
+static constexpr intptr_t kOldPageSizeInWords = kOldPageSize / kWordSize;
+static constexpr intptr_t kOldPageMask = ~(kOldPageSize - 1);
 
-static const intptr_t kBitVectorWordsPerBlock = 1;
-static const intptr_t kBlockSize =
+static constexpr intptr_t kBitVectorWordsPerBlock = 1;
+static constexpr intptr_t kBlockSize =
     kObjectAlignment * kBitsPerWord * kBitVectorWordsPerBlock;
-static const intptr_t kBlockMask = ~(kBlockSize - 1);
-static const intptr_t kBlocksPerPage = kPageSize / kBlockSize;
+static constexpr intptr_t kBlockMask = ~(kBlockSize - 1);
+static constexpr intptr_t kBlocksPerPage = kOldPageSize / kBlockSize;
 
 // A page containing old generation objects.
-class HeapPage {
+class OldPage {
  public:
   enum PageType { kExecutable = 0, kData };
 
-  HeapPage* next() const { return next_; }
-  void set_next(HeapPage* next) { next_ = next; }
+  OldPage* next() const { return next_; }
+  void set_next(OldPage* next) { next_ = next; }
 
   bool Contains(uword addr) const { return memory_->Contains(addr); }
   intptr_t AliasOffset() const { return memory_->AliasOffset(); }
@@ -70,26 +70,26 @@
   void WriteProtect(bool read_only);
 
   static intptr_t ObjectStartOffset() {
-    return Utils::RoundUp(sizeof(HeapPage), kMaxObjectAlignment);
+    return Utils::RoundUp(sizeof(OldPage), kMaxObjectAlignment);
   }
 
   // Warning: This does not work for objects on image pages because image pages
   // are not aligned. However, it works for objects on large pages, because
   // only one object is allocated per large page.
-  static HeapPage* Of(ObjectPtr obj) {
+  static OldPage* Of(ObjectPtr obj) {
     ASSERT(obj->IsHeapObject());
     ASSERT(obj->IsOldObject());
-    return reinterpret_cast<HeapPage*>(static_cast<uword>(obj) & kPageMask);
+    return reinterpret_cast<OldPage*>(static_cast<uword>(obj) & kOldPageMask);
   }
 
   // Warning: This does not work for addresses on image pages or on large pages.
-  static HeapPage* Of(uword addr) {
-    return reinterpret_cast<HeapPage*>(addr & kPageMask);
+  static OldPage* Of(uword addr) {
+    return reinterpret_cast<OldPage*>(addr & kOldPageMask);
   }
 
   // Warning: This does not work for objects on image pages.
   static ObjectPtr ToExecutable(ObjectPtr obj) {
-    HeapPage* page = Of(obj);
+    OldPage* page = Of(obj);
     VirtualMemory* memory = page->memory_;
     const intptr_t alias_offset = memory->AliasOffset();
     if (alias_offset == 0) {
@@ -106,7 +106,7 @@
 
   // Warning: This does not work for objects on image pages.
   static ObjectPtr ToWritable(ObjectPtr obj) {
-    HeapPage* page = Of(obj);
+    OldPage* page = Of(obj);
     VirtualMemory* memory = page->memory_;
     const intptr_t alias_offset = memory->AliasOffset();
     if (alias_offset == 0) {
@@ -130,7 +130,7 @@
   }
 
   static intptr_t card_table_offset() {
-    return OFFSET_OF(HeapPage, card_table_);
+    return OFFSET_OF(OldPage, card_table_);
   }
 
   void RememberCard(ObjectPtr const* slot) {
@@ -154,16 +154,16 @@
   }
 
   // Returns NULL on OOM.
-  static HeapPage* Allocate(intptr_t size_in_words,
-                            PageType type,
-                            const char* name);
+  static OldPage* Allocate(intptr_t size_in_words,
+                           PageType type,
+                           const char* name);
 
   // Deallocate the virtual memory backing this page. The page pointer to this
   // page becomes immediately inaccessible.
   void Deallocate();
 
   VirtualMemory* memory_;
-  HeapPage* next_;
+  OldPage* next_;
   uword object_end_;
   uword used_in_bytes_;
   ForwardingPage* forwarding_page_;
@@ -174,7 +174,7 @@
   friend class GCCompactor;
 
   DISALLOW_ALLOCATION();
-  DISALLOW_IMPLICIT_CONSTRUCTORS(HeapPage);
+  DISALLOW_IMPLICIT_CONSTRUCTORS(OldPage);
 };
 
 // The history holds the timing information of the last garbage collection
@@ -297,10 +297,10 @@
   ~PageSpace();
 
   uword TryAllocate(intptr_t size,
-                    HeapPage::PageType type = HeapPage::kData,
+                    OldPage::PageType type = OldPage::kData,
                     GrowthPolicy growth_policy = kControlGrowth) {
     bool is_protected =
-        (type == HeapPage::kExecutable) && FLAG_write_protect_code;
+        (type == OldPage::kExecutable) && FLAG_write_protect_code;
     bool is_locked = false;
     return TryAllocateInternal(size, &freelists_[type], type, growth_policy,
                                is_protected, is_locked);
@@ -342,7 +342,7 @@
   int64_t ImageInWords() const {
     int64_t size = 0;
     MutexLocker ml(&pages_lock_);
-    for (HeapPage* page = image_pages_; page != nullptr; page = page->next()) {
+    for (OldPage* page = image_pages_; page != nullptr; page = page->next()) {
       size += page->memory_->size();
     }
     return size >> kWordSizeLog2;
@@ -350,7 +350,7 @@
 
   bool Contains(uword addr) const;
   bool ContainsUnsafe(uword addr) const;
-  bool Contains(uword addr, HeapPage::PageType type) const;
+  bool Contains(uword addr, OldPage::PageType type) const;
   bool DataContains(uword addr) const;
   bool IsValidAddress(uword addr) const { return Contains(addr); }
 
@@ -362,7 +362,7 @@
   void VisitRememberedCards(ObjectPointerVisitor* visitor) const;
 
   ObjectPtr FindObject(FindObjectVisitor* visitor,
-                       HeapPage::PageType type) const;
+                       OldPage::PageType type) const;
 
   // Collect the garbage in the page space using mark-sweep or mark-compact.
   void CollectGarbage(bool compact, bool finalize);
@@ -415,7 +415,7 @@
 
   // Bulk data allocation.
   FreeList* DataFreeList(intptr_t i = 0) {
-    return &freelists_[HeapPage::kData + i];
+    return &freelists_[OldPage::kData + i];
   }
   void AcquireLock(FreeList* freelist);
   void ReleaseLock(FreeList* freelist);
@@ -425,7 +425,7 @@
                               GrowthPolicy growth_policy) {
     bool is_protected = false;
     bool is_locked = true;
-    return TryAllocateInternal(size, freelist, HeapPage::kData, growth_policy,
+    return TryAllocateInternal(size, freelist, OldPage::kData, growth_policy,
                                is_protected, is_locked);
   }
 
@@ -445,7 +445,7 @@
 
   // Attempt to allocate from bump block rather than normal freelist.
   uword TryAllocateDataBumpLocked(intptr_t size) {
-    return TryAllocateDataBumpLocked(&freelists_[HeapPage::kData], size);
+    return TryAllocateDataBumpLocked(&freelists_[OldPage::kData], size);
   }
   uword TryAllocateDataBumpLocked(FreeList* freelist, intptr_t size);
   DART_FORCE_INLINE
@@ -493,17 +493,17 @@
 
   uword TryAllocateInternal(intptr_t size,
                             FreeList* freelist,
-                            HeapPage::PageType type,
+                            OldPage::PageType type,
                             GrowthPolicy growth_policy,
                             bool is_protected,
                             bool is_locked);
   uword TryAllocateInFreshPage(intptr_t size,
                                FreeList* freelist,
-                               HeapPage::PageType type,
+                               OldPage::PageType type,
                                GrowthPolicy growth_policy,
                                bool is_locked);
   uword TryAllocateInFreshLargePage(intptr_t size,
-                                    HeapPage::PageType type,
+                                    OldPage::PageType type,
                                     GrowthPolicy growth_policy);
 
   void EvaluateConcurrentMarking(GrowthPolicy growth_policy);
@@ -511,20 +511,20 @@
   // Makes bump block walkable; do not call concurrently with mutator.
   void MakeIterable() const;
 
-  void AddPageLocked(HeapPage* page);
-  void AddLargePageLocked(HeapPage* page);
-  void AddExecPageLocked(HeapPage* page);
-  void RemovePageLocked(HeapPage* page, HeapPage* previous_page);
-  void RemoveLargePageLocked(HeapPage* page, HeapPage* previous_page);
-  void RemoveExecPageLocked(HeapPage* page, HeapPage* previous_page);
+  void AddPageLocked(OldPage* page);
+  void AddLargePageLocked(OldPage* page);
+  void AddExecPageLocked(OldPage* page);
+  void RemovePageLocked(OldPage* page, OldPage* previous_page);
+  void RemoveLargePageLocked(OldPage* page, OldPage* previous_page);
+  void RemoveExecPageLocked(OldPage* page, OldPage* previous_page);
 
-  HeapPage* AllocatePage(HeapPage::PageType type, bool link = true);
-  HeapPage* AllocateLargePage(intptr_t size, HeapPage::PageType type);
+  OldPage* AllocatePage(OldPage::PageType type, bool link = true);
+  OldPage* AllocateLargePage(intptr_t size, OldPage::PageType type);
 
-  void TruncateLargePage(HeapPage* page, intptr_t new_object_size_in_bytes);
-  void FreePage(HeapPage* page, HeapPage* previous_page);
-  void FreeLargePage(HeapPage* page, HeapPage* previous_page);
-  void FreePages(HeapPage* pages);
+  void TruncateLargePage(OldPage* page, intptr_t new_object_size_in_bytes);
+  void FreePage(OldPage* page, OldPage* previous_page);
+  void FreeLargePage(OldPage* page, OldPage* previous_page);
+  void FreePages(OldPage* pages);
 
   void CollectGarbageAtSafepoint(bool compact,
                                  bool finalize,
@@ -550,9 +550,9 @@
 
   Heap* const heap_;
 
-  // One list for executable pages at freelists_[HeapPage::kExecutable].
+  // One list for executable pages at freelists_[OldPage::kExecutable].
   // FLAG_scavenger_tasks count of lists for data pages starting at
-  // freelists_[HeapPage::kData]. The sweeper inserts into the data page
+  // freelists_[OldPage::kData]. The sweeper inserts into the data page
   // freelists round-robin. The scavenger workers each use one of the data
   // page freelists without locking.
   const intptr_t num_freelists_;
@@ -560,13 +560,13 @@
 
   // Use ExclusivePageIterator for safe access to these.
   mutable Mutex pages_lock_;
-  HeapPage* pages_ = nullptr;
-  HeapPage* pages_tail_ = nullptr;
-  HeapPage* exec_pages_ = nullptr;
-  HeapPage* exec_pages_tail_ = nullptr;
-  HeapPage* large_pages_ = nullptr;
-  HeapPage* large_pages_tail_ = nullptr;
-  HeapPage* image_pages_ = nullptr;
+  OldPage* pages_ = nullptr;
+  OldPage* pages_tail_ = nullptr;
+  OldPage* exec_pages_ = nullptr;
+  OldPage* exec_pages_tail_ = nullptr;
+  OldPage* large_pages_ = nullptr;
+  OldPage* large_pages_tail_ = nullptr;
+  OldPage* image_pages_ = nullptr;
 
   // Various sizes being tracked for this generation.
   intptr_t max_capacity_in_words_;
diff --git a/runtime/vm/heap/scavenger.cc b/runtime/vm/heap/scavenger.cc
index 26056f2..7642a61 100644
--- a/runtime/vm/heap/scavenger.cc
+++ b/runtime/vm/heap/scavenger.cc
@@ -36,30 +36,35 @@
             "Grow new gen when less than this percentage is garbage.");
 DEFINE_FLAG(int, new_gen_growth_factor, 2, "Grow new gen by this factor.");
 
-// Scavenger uses ObjectLayout::kMarkBit to distinguish forwarded and
-// non-forwarded objects. The kMarkBit does not intersect with the target
-// address because of object alignment.
+// Scavenger uses the kCardRememberedBit to distinguish forwarded and
+// non-forwarded objects. We must choose a bit that is clear for all new-space
+// object headers, and which doesn't intersect with the target address because
+// of object alignment.
 enum {
-  kForwardingMask = 1 << ObjectLayout::kOldAndNotMarkedBit,
+  kForwardingMask = 1 << ObjectLayout::kCardRememberedBit,
   kNotForwarded = 0,
   kForwarded = kForwardingMask,
 };
 
+// If the forwarded bit and pointer tag bit are the same, we can avoid a few
+// conversions.
+COMPILE_ASSERT(kForwarded == kHeapObjectTag);
+
 static inline bool IsForwarding(uword header) {
   uword bits = header & kForwardingMask;
   ASSERT((bits == kNotForwarded) || (bits == kForwarded));
   return bits == kForwarded;
 }
 
-static inline uword ForwardedAddr(uword header) {
+static inline ObjectPtr ForwardedObj(uword header) {
   ASSERT(IsForwarding(header));
-  return header & ~kForwardingMask;
+  return static_cast<ObjectPtr>(header);
 }
 
-static inline uword ForwardingHeader(uword target) {
-  // Make sure forwarding can be encoded.
-  ASSERT((target & kForwardingMask) == 0);
-  return target | kForwarded;
+static inline uword ForwardingHeader(ObjectPtr target) {
+  uword result = static_cast<uword>(target);
+  ASSERT(IsForwarding(result));
+  return result;
 }
 
 // Races: The first word in the copied region is a header word that may be
@@ -94,9 +99,9 @@
   } while (size > 0);
 }
 
-static const intptr_t kNewPageSize = 512 * KB;
-static const intptr_t kNewPageSizeInWords = kNewPageSize / kWordSize;
-static const intptr_t kNewPageMask = ~(kNewPageSize - 1);
+static constexpr intptr_t kNewPageSize = 512 * KB;
+static constexpr intptr_t kNewPageSizeInWords = kNewPageSize / kWordSize;
+static constexpr intptr_t kNewPageMask = ~(kNewPageSize - 1);
 
 // A page containing new generation objects.
 class NewPage {
@@ -298,7 +303,7 @@
     ASSERT((obj == nullptr) || obj->IsOldObject());
     visiting_old_object_ = obj;
     if (obj != nullptr) {
-      // Card update happens in HeapPage::VisitRememberedCards.
+      // Card update happens in OldPage::VisitRememberedCards.
       ASSERT(!obj->ptr()->IsCardRemembered());
     }
   }
@@ -379,12 +384,13 @@
     // already been copied.
     uword header = reinterpret_cast<std::atomic<uword>*>(raw_addr)->load(
         std::memory_order_relaxed);
-    uword new_addr = 0;
+    ObjectPtr new_obj;
     if (IsForwarding(header)) {
       // Get the new location of the object.
-      new_addr = ForwardedAddr(header);
+      new_obj = ForwardedObj(header);
     } else {
       intptr_t size = raw_obj->ptr()->HeapSize(header);
+      uword new_addr = 0;
       // Check whether object should be promoted.
       if (!NewPage::Of(raw_obj)->IsSurvivor(raw_addr)) {
         // Not a survivor of a previous scavenge. Just copy the object into the
@@ -416,7 +422,7 @@
       objcpy(reinterpret_cast<void*>(new_addr),
              reinterpret_cast<void*>(raw_addr), size);
 
-      ObjectPtr new_obj = ObjectLayout::FromAddr(new_addr);
+      new_obj = ObjectLayout::FromAddr(new_addr);
       if (new_obj->IsOldObject()) {
         // Promoted: update age/barrier tags.
         uint32_t tags = static_cast<uint32_t>(header);
@@ -439,7 +445,7 @@
       }
 
       // Try to install forwarding address.
-      uword forwarding_header = ForwardingHeader(new_addr);
+      uword forwarding_header = ForwardingHeader(new_obj);
       if (!InstallForwardingPointer(raw_addr, &header, forwarding_header)) {
         ASSERT(IsForwarding(header));
         if (new_obj->IsOldObject()) {
@@ -451,12 +457,11 @@
           tail_->Unallocate(new_addr, size);
         }
         // Use the winner's forwarding target.
-        new_addr = ForwardedAddr(header);
+        new_obj = ForwardedObj(header);
       }
     }
 
     // Update the reference.
-    ObjectPtr new_obj = ObjectLayout::FromAddr(new_addr);
     if (!new_obj->IsNewObject()) {
       // Setting the mark bit above must not be ordered after a publishing store
       // of this object. Note this could be a publishing store even if the
@@ -1180,8 +1185,7 @@
   }
   uword header = *reinterpret_cast<uword*>(raw_addr);
   if (IsForwarding(header)) {
-    uword new_addr = ForwardedAddr(header);
-    *p = ObjectLayout::FromAddr(new_addr);
+    *p = ForwardedObj(header);
     return false;
   }
   return true;
@@ -1269,7 +1273,6 @@
 }
 
 void Scavenger::UpdateMaxHeapCapacity() {
-#if !defined(PRODUCT)
   if (heap_ == NULL) {
     // Some unit tests.
     return;
@@ -1280,11 +1283,9 @@
   ASSERT(isolate_group != NULL);
   isolate_group->GetHeapNewCapacityMaxMetric()->SetValue(
       to_->max_capacity_in_words() * kWordSize);
-#endif  // !defined(PRODUCT)
 }
 
 void Scavenger::UpdateMaxHeapUsage() {
-#if !defined(PRODUCT)
   if (heap_ == NULL) {
     // Some unit tests.
     return;
@@ -1294,7 +1295,6 @@
   auto isolate_group = heap_->isolate_group();
   ASSERT(isolate_group != NULL);
   isolate_group->GetHeapNewUsedMaxMetric()->SetValue(UsedInWords() * kWordSize);
-#endif  // !defined(PRODUCT)
 }
 
 template <bool parallel>
@@ -1348,8 +1348,7 @@
         uword header = *reinterpret_cast<uword*>(raw_addr);
         if (IsForwarding(header)) {
           // The object has survived.  Preserve its record.
-          uword new_addr = ForwardedAddr(header);
-          raw_obj = ObjectLayout::FromAddr(new_addr);
+          raw_obj = ForwardedObj(header);
           auto replacement =
               raw_obj->IsNewObject() ? replacement_new : replacement_old;
           replacement->SetValueExclusive(raw_obj, table->ValueAtExclusive(i));
diff --git a/runtime/vm/heap/scavenger.h b/runtime/vm/heap/scavenger.h
index 56baac3..2946977 100644
--- a/runtime/vm/heap/scavenger.h
+++ b/runtime/vm/heap/scavenger.h
@@ -112,6 +112,9 @@
 };
 
 class Scavenger {
+ private:
+  static const intptr_t kTLABSize = 512 * KB;
+
  public:
   Scavenger(Heap* heap, intptr_t max_semi_capacity_in_words);
   ~Scavenger();
@@ -194,6 +197,17 @@
 
   bool scavenging() const { return scavenging_; }
 
+  // The maximum number of Dart mutator threads we allow to execute at the same
+  // time.
+  static intptr_t MaxMutatorThreadCount() {
+    // With a max new-space of 16 MB and 512kb TLABs we would allow up to 8
+    // mutator threads to run at the same time.
+    const intptr_t max_parallel_tlab_usage =
+        (FLAG_new_gen_semi_max_size * MB) / Scavenger::kTLABSize;
+    const intptr_t max_pool_size = max_parallel_tlab_usage / 4;
+    return max_pool_size;
+  }
+
  private:
   // Ids for time and data records in Heap::GCStats.
   enum {
diff --git a/runtime/vm/heap/sweeper.cc b/runtime/vm/heap/sweeper.cc
index 5581e45..f579074 100644
--- a/runtime/vm/heap/sweeper.cc
+++ b/runtime/vm/heap/sweeper.cc
@@ -15,13 +15,13 @@
 
 namespace dart {
 
-bool GCSweeper::SweepPage(HeapPage* page, FreeList* freelist, bool locked) {
+bool GCSweeper::SweepPage(OldPage* page, FreeList* freelist, bool locked) {
   ASSERT(!page->is_image_page());
 
   // Keep track whether this page is still in use.
   intptr_t used_in_bytes = 0;
 
-  bool is_executable = (page->type() == HeapPage::kExecutable);
+  bool is_executable = (page->type() == OldPage::kExecutable);
   uword start = page->object_start();
   uword end = page->object_end();
   uword current = start;
@@ -29,7 +29,7 @@
   while (current < end) {
     intptr_t obj_size;
     ObjectPtr raw_obj = ObjectLayout::FromAddr(current);
-    ASSERT(HeapPage::Of(raw_obj) == page);
+    ASSERT(OldPage::Of(raw_obj) == page);
     if (raw_obj->ptr()->IsMarked()) {
       // Found marked object. Clear the mark bit and update swept bytes.
       raw_obj->ptr()->ClearMarkBit();
@@ -76,12 +76,12 @@
   return used_in_bytes != 0;  // In use.
 }
 
-intptr_t GCSweeper::SweepLargePage(HeapPage* page) {
+intptr_t GCSweeper::SweepLargePage(OldPage* page) {
   ASSERT(!page->is_image_page());
 
   intptr_t words_to_end = 0;
   ObjectPtr raw_obj = ObjectLayout::FromAddr(page->object_start());
-  ASSERT(HeapPage::Of(raw_obj) == page);
+  ASSERT(OldPage::Of(raw_obj) == page);
   if (raw_obj->ptr()->IsMarked()) {
     raw_obj->ptr()->ClearMarkBit();
     words_to_end = (raw_obj->ptr()->HeapSize() >> kWordSizeLog2);
@@ -106,10 +106,10 @@
  public:
   ConcurrentSweeperTask(IsolateGroup* isolate_group,
                         PageSpace* old_space,
-                        HeapPage* first,
-                        HeapPage* last,
-                        HeapPage* large_first,
-                        HeapPage* large_last)
+                        OldPage* first,
+                        OldPage* last,
+                        OldPage* large_first,
+                        OldPage* large_last)
       : task_isolate_group_(isolate_group),
         old_space_(old_space),
         first_(first),
@@ -135,10 +135,10 @@
       TIMELINE_FUNCTION_GC_DURATION(thread, "ConcurrentSweep");
       GCSweeper sweeper;
 
-      HeapPage* page = large_first_;
-      HeapPage* prev_page = NULL;
+      OldPage* page = large_first_;
+      OldPage* prev_page = NULL;
       while (page != NULL) {
-        HeapPage* next_page;
+        OldPage* next_page;
         if (page == large_last_) {
           // Don't access page->next(), which would be a race with mutator
           // allocating new pages.
@@ -146,7 +146,7 @@
         } else {
           next_page = page->next();
         }
-        ASSERT(page->type() == HeapPage::kData);
+        ASSERT(page->type() == OldPage::kData);
         const intptr_t words_to_end = sweeper.SweepLargePage(page);
         if (words_to_end == 0) {
           old_space_->FreeLargePage(page, prev_page);
@@ -169,7 +169,7 @@
       page = first_;
       prev_page = NULL;
       while (page != NULL) {
-        HeapPage* next_page;
+        OldPage* next_page;
         if (page == last_) {
           // Don't access page->next(), which would be a race with mutator
           // allocating new pages.
@@ -177,7 +177,7 @@
         } else {
           next_page = page->next();
         }
-        ASSERT(page->type() == HeapPage::kData);
+        ASSERT(page->type() == OldPage::kData);
         shard = (shard + 1) % num_shards;
         bool page_in_use =
             sweeper.SweepPage(page, old_space_->DataFreeList(shard), false);
@@ -210,17 +210,17 @@
  private:
   IsolateGroup* task_isolate_group_;
   PageSpace* old_space_;
-  HeapPage* first_;
-  HeapPage* last_;
-  HeapPage* large_first_;
-  HeapPage* large_last_;
+  OldPage* first_;
+  OldPage* last_;
+  OldPage* large_first_;
+  OldPage* large_last_;
 };
 
 void GCSweeper::SweepConcurrent(IsolateGroup* isolate_group,
-                                HeapPage* first,
-                                HeapPage* last,
-                                HeapPage* large_first,
-                                HeapPage* large_last,
+                                OldPage* first,
+                                OldPage* last,
+                                OldPage* large_first,
+                                OldPage* large_last,
                                 FreeList* freelist) {
   bool result = Dart::thread_pool()->Run<ConcurrentSweeperTask>(
       isolate_group, isolate_group->heap()->old_space(), first, last,
diff --git a/runtime/vm/heap/sweeper.h b/runtime/vm/heap/sweeper.h
index 60d3d3c..ca9b6c4 100644
--- a/runtime/vm/heap/sweeper.h
+++ b/runtime/vm/heap/sweeper.h
@@ -12,7 +12,7 @@
 // Forward declarations.
 class FreeList;
 class Heap;
-class HeapPage;
+class OldPage;
 class IsolateGroup;
 class PageSpace;
 
@@ -28,18 +28,18 @@
   // pre-locked is indicated by the locked parameter.
   // Returns true if the page is in use. Freelist is untouched if page is not
   // in use.
-  bool SweepPage(HeapPage* page, FreeList* freelist, bool locked);
+  bool SweepPage(OldPage* page, FreeList* freelist, bool locked);
 
   // Returns the number of words from page->object_start() to the end of the
   // last marked object.
-  intptr_t SweepLargePage(HeapPage* page);
+  intptr_t SweepLargePage(OldPage* page);
 
   // Sweep the regular sized data pages between first and last inclusive.
   static void SweepConcurrent(IsolateGroup* isolate_group,
-                              HeapPage* first,
-                              HeapPage* last,
-                              HeapPage* large_first,
-                              HeapPage* large_last,
+                              OldPage* first,
+                              OldPage* last,
+                              OldPage* large_first,
+                              OldPage* large_last,
                               FreeList* freelist);
 };
 
diff --git a/runtime/vm/heap/verifier.cc b/runtime/vm/heap/verifier.cc
index 777cf33..48610f8 100644
--- a/runtime/vm/heap/verifier.cc
+++ b/runtime/vm/heap/verifier.cc
@@ -50,7 +50,7 @@
     if (raw_obj->IsHeapObject()) {
       if (!allocated_set_->Contains(raw_obj)) {
         if (raw_obj->IsInstructions() &&
-            allocated_set_->Contains(HeapPage::ToWritable(raw_obj))) {
+            allocated_set_->Contains(OldPage::ToWritable(raw_obj))) {
           continue;
         }
         uword raw_addr = ObjectLayout::ToAddr(raw_obj);
diff --git a/runtime/vm/image_snapshot.cc b/runtime/vm/image_snapshot.cc
index 566f596..e19d411 100644
--- a/runtime/vm/image_snapshot.cc
+++ b/runtime/vm/image_snapshot.cc
@@ -315,7 +315,7 @@
   js.OpenArray();
   for (intptr_t i = 0; i < instructions_.length(); i++) {
     auto& data = instructions_[i];
-    owner = data.code_->owner();
+    owner = WeakSerializationReference::Unwrap(data.code_->owner());
     js.OpenObject();
     if (owner.IsFunction()) {
       cls = Function::Cast(owner).Owner();
@@ -324,8 +324,16 @@
       url = lib.url();
       js.PrintPropertyStr("l", url);
       js.PrintPropertyStr("c", name);
+    } else if (owner.IsClass()) {
+      cls ^= owner.raw();
+      name = cls.ScrubbedName();
+      lib = cls.library();
+      js.PrintPropertyStr("l", url);
+      js.PrintPropertyStr("c", name);
     }
-    js.PrintProperty("n", data.code_->QualifiedName());
+    js.PrintProperty(
+        "n", data.code_->QualifiedName(Object::kInternalName,
+                                       Object::NameDisambiguation::kYes));
     js.PrintProperty("s", SizeInSnapshot(data.insns_->raw()));
     js.CloseObject();
   }
@@ -636,7 +644,7 @@
   assembly_stream_.Print("%s:\n", instructions_symbol);
 
   // This head also provides the gap to make the instructions snapshot
-  // look like a HeapPage.
+  // look like a OldPage.
   const intptr_t image_size = Utils::RoundUp(
       next_text_offset_, compiler::target::ObjectAlignment::kObjectAlignment);
   WriteWordLiteralText(image_size);
@@ -1088,7 +1096,7 @@
 #endif
 
   // This header provides the gap to make the instructions snapshot look like a
-  // HeapPage.
+  // OldPage.
   const intptr_t image_size = Utils::RoundUp(
       next_text_offset_, compiler::target::ObjectAlignment::kObjectAlignment);
   instructions_blob_stream_.WriteTargetWord(image_size);
diff --git a/runtime/vm/instructions_x64.cc b/runtime/vm/instructions_x64.cc
index cbeba5f..256faa9 100644
--- a/runtime/vm/instructions_x64.cc
+++ b/runtime/vm/instructions_x64.cc
@@ -5,6 +5,8 @@
 #include "vm/globals.h"  // Needed here to get TARGET_ARCH_X64.
 #if defined(TARGET_ARCH_X64)
 
+#include "platform/unaligned.h"
+
 #include "vm/code_patcher.h"
 #include "vm/instructions.h"
 #include "vm/instructions_x64.h"
@@ -22,7 +24,7 @@
 }
 
 intptr_t IndexFromPPLoadDisp32(uword start) {
-  int32_t offset = *reinterpret_cast<int32_t*>(start);
+  int32_t offset = LoadUnaligned(reinterpret_cast<int32_t*>(start));
   return ObjectPool::IndexFromOffset(offset);
 }
 
@@ -35,7 +37,7 @@
   if ((bytes[0] == 0x49) || (bytes[0] == 0x4d)) {
     if ((bytes[1] == 0x8b) || (bytes[1] == 0x3b)) {   // movq, cmpq
       if ((bytes[2] & 0xc7) == (0x80 | (THR & 7))) {  // [r14+disp32]
-        int32_t offset = *reinterpret_cast<int32_t*>(pc + 3);
+        int32_t offset = LoadUnaligned(reinterpret_cast<int32_t*>(pc + 3));
         return Thread::ObjectAtOffset(offset, obj);
       }
       if ((bytes[2] & 0xc7) == (0x40 | (THR & 7))) {  // [r14+disp8]
diff --git a/runtime/vm/instructions_x64.h b/runtime/vm/instructions_x64.h
index 81e69c6..efc8abd 100644
--- a/runtime/vm/instructions_x64.h
+++ b/runtime/vm/instructions_x64.h
@@ -10,6 +10,7 @@
 #error "Do not include instructions_x64.h directly; use instructions.h instead."
 #endif
 
+#include "platform/unaligned.h"
 #include "vm/allocation.h"
 
 namespace dart {
@@ -115,13 +116,15 @@
   explicit PcRelativeCallPattern(uword pc) : InstructionPattern(pc) {}
 
   int32_t distance() {
-    return *reinterpret_cast<int32_t*>(start() + 1) + kLengthInBytes;
+    return LoadUnaligned(reinterpret_cast<int32_t*>(start() + 1)) +
+           kLengthInBytes;
   }
 
   void set_distance(int32_t distance) {
     // [distance] is relative to the start of the instruction, x64 considers the
     // offset relative to next PC.
-    *reinterpret_cast<int32_t*>(start() + 1) = distance - kLengthInBytes;
+    StoreUnaligned(reinterpret_cast<int32_t*>(start() + 1),
+                   distance - kLengthInBytes);
   }
 
   static const int* pattern() {
@@ -162,13 +165,15 @@
   }
 
   int32_t distance() {
-    return *reinterpret_cast<int32_t*>(pattern_start_ + 1) + kLengthInBytes;
+    return LoadUnaligned(reinterpret_cast<int32_t*>(pattern_start_ + 1)) +
+           kLengthInBytes;
   }
 
   void set_distance(int32_t distance) {
     // [distance] is relative to the start of the instruction, x64 considers the
     // offset relative to next PC.
-    *reinterpret_cast<int32_t*>(pattern_start_ + 1) = distance - kLengthInBytes;
+    StoreUnaligned(reinterpret_cast<int32_t*>(pattern_start_ + 1),
+                   distance - kLengthInBytes);
   }
 
   bool IsValid() const {
diff --git a/runtime/vm/isolate.cc b/runtime/vm/isolate.cc
index ccca676..80ed871 100644
--- a/runtime/vm/isolate.cc
+++ b/runtime/vm/isolate.cc
@@ -230,10 +230,55 @@
   DISALLOW_COPY_AND_ASSIGN(FinalizeWeakPersistentHandlesVisitor);
 };
 
+void MutatorThreadPool::OnEnterIdleLocked(MonitorLocker* ml) {
+  if (FLAG_idle_timeout_micros == 0) return;
+
+  // If the isolate has not started running application code yet, we ignore the
+  // idle time.
+  if (!isolate_group_->initial_spawn_successful()) return;
+
+  int64_t idle_expiry = 0;
+  // Obtain the idle time we should wait.
+  if (isolate_group_->idle_time_handler()->ShouldNotifyIdle(&idle_expiry)) {
+    MonitorLeaveScope mls(ml);
+    NotifyIdle();
+    return;
+  }
+
+  // Wait for the recommended idle timeout.
+  // We can be woken up because of a), b) or c)
+  const auto result =
+      ml->WaitMicros(idle_expiry - OS::GetCurrentMonotonicMicros());
+
+  // a) If there are new tasks we have to run them.
+  if (TasksWaitingToRunLocked()) return;
+
+  // b) If the thread pool is shutting down we're done.
+  if (ShuttingDownLocked()) return;
+
+  // c) We timed out and should run the idle notifier.
+  if (result == Monitor::kTimedOut &&
+      isolate_group_->idle_time_handler()->ShouldNotifyIdle(&idle_expiry)) {
+    MonitorLeaveScope mls(ml);
+    NotifyIdle();
+    return;
+  }
+
+  // There must've been another thread doing active work in the meantime.
+  // If that thread becomes idle and is the last idle thread it will run this
+  // code again.
+}
+
+void MutatorThreadPool::NotifyIdle() {
+  EnterIsolateGroupScope isolate_group_scope(isolate_group_);
+  isolate_group_->idle_time_handler()->NotifyIdleUsingDefaultDeadline();
+}
+
 IsolateGroup::IsolateGroup(std::shared_ptr<IsolateGroupSource> source,
                            void* embedder_data,
                            ObjectStore* object_store)
     : embedder_data_(embedder_data),
+      thread_pool_(),
       isolates_lock_(new SafepointRwLock()),
       isolates_(),
       start_time_micros_(OS::GetCurrentMonotonicMicros()),
@@ -255,6 +300,11 @@
       store_buffer_(new StoreBuffer()),
       heap_(nullptr),
       saved_unlinked_calls_(Array::null()) {
+  const bool is_vm_isolate = Dart::VmIsolateNameEquals(source_->name);
+  if (!is_vm_isolate) {
+    thread_pool_.reset(
+        new MutatorThreadPool(this, Scavenger::MaxMutatorThreadCount()));
+  }
   {
     WriteRwLocker wl(ThreadState::Current(), isolate_groups_rwlock_);
     id_ = isolate_group_random_->NextUInt64();
@@ -332,12 +382,10 @@
 
   is_vm_isolate_heap_ = is_vm_isolate;
 
-#if !defined(PRODUCT)
 #define ISOLATE_METRIC_CONSTRUCTORS(type, variable, name, unit)                \
   metric_##variable##_.InitInstance(this, name, nullptr, Metric::unit);
   ISOLATE_GROUP_METRIC_LIST(ISOLATE_METRIC_CONSTRUCTORS)
 #undef ISOLATE_METRIC_CONSTRUCTORS
-#endif
 }
 
 void IsolateGroup::Shutdown() {
@@ -366,6 +414,14 @@
     }
   }
 
+  // Ensure to join all threads before starting to delete the members.
+  // (for vm-isolate we don't have a thread pool)
+  if (!Dart::VmIsolateNameEquals(source()->name)) {
+    ASSERT(thread_pool_ != nullptr);
+    thread_pool_->Shutdown();
+    thread_pool_.reset();
+  }
+
   delete this;
 }
 
@@ -1417,9 +1473,6 @@
 #undef ISOLATE_METRIC_CONSTRUCTORS
           reload_every_n_stack_overflow_checks_(FLAG_reload_every),
 #endif  // !defined(PRODUCT)
-#if !defined(PRODUCT)
-      object_id_ring_(new ObjectIdRing()),
-#endif
       start_time_micros_(OS::GetCurrentMonotonicMicros()),
       random_(),
       mutex_(NOT_IN_PRODUCT("Isolate::mutex_")),
@@ -2216,7 +2269,7 @@
 }
 
 void Isolate::Run() {
-  message_handler()->Run(Dart::thread_pool(), RunIsolate, ShutdownIsolate,
+  message_handler()->Run(group()->thread_pool(), RunIsolate, ShutdownIsolate,
                          reinterpret_cast<uword>(this));
 }
 
@@ -2462,7 +2515,24 @@
   const bool shutdown_group =
       isolate_group->UnregisterIsolateDecrementCount(isolate);
   if (shutdown_group) {
-    isolate_group->Shutdown();
+    if (!OSThread::CurrentThreadRunsOn(isolate_group->thread_pool())) {
+      isolate_group->Shutdown();
+    } else {
+      class ShutdownGroupTask : public ThreadPool::Task {
+       public:
+        explicit ShutdownGroupTask(IsolateGroup* isolate_group)
+            : isolate_group_(isolate_group) {}
+
+        virtual void Run() { isolate_group_->Shutdown(); }
+
+       private:
+        IsolateGroup* isolate_group_;
+      };
+      // The current thread is running on the isolate group's thread pool.
+      // So we cannot safely delete the isolate group (and it's pool).
+      // Instead we will destroy the isolate group on the VM-global pool.
+      Dart::thread_pool()->Run<ShutdownGroupTask>(isolate_group);
+    }
   } else {
     if (FLAG_enable_isolate_groups) {
       // TODO(dartbug.com/36097): An isolate just died. A significant amount of
@@ -2511,9 +2581,6 @@
 
   // Visit objects in the field table.
   field_table()->VisitObjectPointers(visitor);
-  if (saved_initial_field_table() != nullptr) {
-    saved_initial_field_table()->VisitObjectPointers(visitor);
-  }
 
   visitor->clear_gc_root_type();
   // Visit the objects directly referenced from the isolate structure.
@@ -2628,6 +2695,10 @@
 
 Isolate* IsolateGroup::FirstIsolate() const {
   SafepointWriteRwLocker ml(Thread::Current(), isolates_lock_.get());
+  return FirstIsolateLocked();
+}
+
+Isolate* IsolateGroup::FirstIsolateLocked() const {
   return isolates_.IsEmpty() ? nullptr : isolates_.First();
 }
 
@@ -2680,6 +2751,9 @@
     object_store()->VisitObjectPointers(visitor);
   }
   visitor->VisitPointer(reinterpret_cast<ObjectPtr*>(&saved_unlinked_calls_));
+  if (saved_initial_field_table() != nullptr) {
+    saved_initial_field_table()->VisitObjectPointers(visitor);
+  }
   VisitStackPointers(visitor, validate_frames);
 }
 
@@ -2705,7 +2779,10 @@
 void IsolateGroup::VisitObjectIdRingPointers(ObjectPointerVisitor* visitor) {
 #if !defined(PRODUCT)
   for (Isolate* isolate : isolates_) {
-    isolate->object_id_ring()->VisitPointers(visitor);
+    ObjectIdRing* ring = isolate->object_id_ring();
+    if (ring != nullptr) {
+      ring->VisitPointers(visitor);
+    }
   }
 #endif  // !defined(PRODUCT)
 }
@@ -2765,6 +2842,15 @@
 #endif  // !defined(PRODUCT) && !defined(DART_PRECOMPILED_RUNTIME)
 }
 
+#if !defined(PRODUCT)
+ObjectIdRing* Isolate::EnsureObjectIdRing() {
+  if (object_id_ring_ == nullptr) {
+    object_id_ring_ = new ObjectIdRing();
+  }
+  return object_id_ring_;
+}
+#endif  // !defined(PRODUCT)
+
 void Isolate::AddPendingDeopt(uword fp, uword pc) {
   // GrowableArray::Add is not atomic and may be interrupt by a profiler
   // stack walk.
diff --git a/runtime/vm/isolate.h b/runtime/vm/isolate.h
index 0487039..13b2425 100644
--- a/runtime/vm/isolate.h
+++ b/runtime/vm/isolate.h
@@ -33,6 +33,7 @@
 #include "vm/random.h"
 #include "vm/tags.h"
 #include "vm/thread.h"
+#include "vm/thread_pool.h"
 #include "vm/thread_stack_resource.h"
 #include "vm/token_position.h"
 #include "vm/virtual_memory.h"
@@ -163,10 +164,7 @@
   V(NONPRODUCT, use_field_guards, UseFieldGuards, use_field_guards,            \
     FLAG_use_field_guards)                                                     \
   V(NONPRODUCT, use_osr, UseOsr, use_osr, FLAG_use_osr)                        \
-  V(PRECOMPILER, obfuscate, Obfuscate, obfuscate, false_by_default)            \
-  V(PRODUCT, unsafe_trust_strong_mode_types, UnsafeTrustStrongModeTypes,       \
-    unsafe_trust_strong_mode_types,                                            \
-    FLAG_experimental_unsafe_mode_use_at_your_own_risk)
+  V(PRECOMPILER, obfuscate, Obfuscate, obfuscate, false_by_default)
 
 // Represents the information used for spawning the first isolate within an
 // isolate group.
@@ -274,6 +272,21 @@
   IdleTimeHandler* handler_;
 };
 
+class MutatorThreadPool : public ThreadPool {
+ public:
+  MutatorThreadPool(IsolateGroup* isolate_group, intptr_t max_pool_size)
+      : ThreadPool(max_pool_size), isolate_group_(isolate_group) {}
+  virtual ~MutatorThreadPool() {}
+
+ protected:
+  virtual void OnEnterIdleLocked(MonitorLocker* ml);
+
+ private:
+  void NotifyIdle();
+
+  IsolateGroup* isolate_group_ = nullptr;
+};
+
 // Represents an isolate group and is shared among all isolates within a group.
 class IsolateGroup : public IntrusiveDListEntry<IsolateGroup> {
  public:
@@ -314,12 +327,12 @@
   void CreateHeap(bool is_vm_isolate, bool is_service_or_kernel_isolate);
   void Shutdown();
 
-#if !defined(PRODUCT)
 #define ISOLATE_METRIC_ACCESSOR(type, variable, name, unit)                    \
   type* Get##variable##Metric() { return &metric_##variable##_; }
   ISOLATE_GROUP_METRIC_LIST(ISOLATE_METRIC_ACCESSOR);
 #undef ISOLATE_METRIC_ACCESSOR
 
+#if !defined(PRODUCT)
   void UpdateLastAllocationProfileAccumulatorResetTimestamp() {
     last_allocationprofile_accumulator_reset_timestamp_ =
         OS::GetCurrentTimeMillis();
@@ -402,6 +415,7 @@
   void ForEachIsolate(std::function<void(Isolate* isolate)> function,
                       bool at_safepoint = false);
   Isolate* FirstIsolate() const;
+  Isolate* FirstIsolateLocked() const;
 
   // Ensures mutators are stopped during execution of the provided function.
   //
@@ -515,6 +529,18 @@
     reverse_pc_lookup_cache_ = table;
   }
 
+  FieldTable* saved_initial_field_table() const {
+    return saved_initial_field_table_.get();
+  }
+  std::shared_ptr<FieldTable> saved_initial_field_table_shareable() {
+    return saved_initial_field_table_;
+  }
+  void set_saved_initial_field_table(std::shared_ptr<FieldTable> field_table) {
+    saved_initial_field_table_ = field_table;
+  }
+
+  MutatorThreadPool* thread_pool() { return thread_pool_.get(); }
+
  private:
   friend class Dart;  // For `object_store_ = ` in Dart::Init
   friend class Heap;
@@ -548,6 +574,8 @@
   bool is_vm_isolate_heap_ = false;
   void* embedder_data_ = nullptr;
 
+  IdleTimeHandler idle_time_handler_;
+  std::unique_ptr<MutatorThreadPool> thread_pool_;
   std::unique_ptr<SafepointRwLock> isolates_lock_;
   IntrusiveDList<Isolate> isolates_;
   intptr_t isolate_count_ = 0;
@@ -560,12 +588,12 @@
   std::shared_ptr<IsolateGroupReloadContext> group_reload_context_;
 #endif
 
-#if !defined(PRODUCT)
 #define ISOLATE_METRIC_VARIABLE(type, variable, name, unit)                    \
   type metric_##variable##_;
   ISOLATE_GROUP_METRIC_LIST(ISOLATE_METRIC_VARIABLE);
 #undef ISOLATE_METRIC_VARIABLE
 
+#if !defined(PRODUCT)
   // Timestamps of last operation via service.
   int64_t last_allocationprofile_accumulator_reset_timestamp_ = 0;
   int64_t last_allocationprofile_gc_timestamp_ = 0;
@@ -597,8 +625,8 @@
   std::unique_ptr<DispatchTable> dispatch_table_;
   ReversePcLookupCache* reverse_pc_lookup_cache_ = nullptr;
   ArrayPtr saved_unlinked_calls_;
+  std::shared_ptr<FieldTable> saved_initial_field_table_;
 
-  IdleTimeHandler idle_time_handler_;
   uint32_t isolate_group_flags_ = 0;
 };
 
@@ -706,16 +734,6 @@
     T->field_table_values_ = field_table->table();
   }
 
-  FieldTable* saved_initial_field_table() const {
-    return saved_initial_field_table_.get();
-  }
-  std::shared_ptr<FieldTable> saved_initial_field_table_shareable() {
-    return saved_initial_field_table_;
-  }
-  void set_saved_initial_field_table(std::shared_ptr<FieldTable> field_table) {
-    saved_initial_field_table_ = field_table;
-  }
-
   IsolateObjectStore* isolate_object_store() const {
     return isolate_object_store_.get();
   }
@@ -936,7 +954,8 @@
   }
 
 #if !defined(PRODUCT)
-  ObjectIdRing* object_id_ring() { return object_id_ring_; }
+  ObjectIdRing* object_id_ring() const { return object_id_ring_; }
+  ObjectIdRing* EnsureObjectIdRing();
 #endif  // !defined(PRODUCT)
 
   void AddPendingDeopt(uword fp, uword pc);
@@ -1122,10 +1141,6 @@
     isolate_flags_ = IsKernelIsolateBit::update(value, isolate_flags_);
   }
 
-  bool can_use_strong_mode_types() const {
-    return FLAG_use_strong_mode_types && !unsafe_trust_strong_mode_types();
-  }
-
   // Whether it's possible for unoptimized code to optimize immediately on entry
   // (can happen with random or very low optimization counter thresholds)
   bool CanOptimizeImmediately() const {
@@ -1208,14 +1223,6 @@
     isolate_flags_ = NullSafetyBit::update(null_safety, isolate_flags_);
   }
 
-  // Convenience flag tester indicating whether incoming function arguments
-  // should be type checked.
-  bool argument_type_checks() const { return should_emit_strong_mode_checks(); }
-
-  bool should_emit_strong_mode_checks() const {
-    return !unsafe_trust_strong_mode_types();
-  }
-
   bool has_attempted_stepping() const {
     return HasAttemptedSteppingBit::decode(isolate_flags_);
   }
@@ -1351,7 +1358,6 @@
 
   IsolateGroup* isolate_group_;
   IdleTimeHandler idle_time_handler_;
-  std::shared_ptr<FieldTable> saved_initial_field_table_;
   std::unique_ptr<IsolateObjectStore> isolate_object_store_;
   // shared in AOT(same pointer as on IsolateGroup), not shared in JIT
   std::shared_ptr<ObjectStore> object_store_shared_ptr_;
@@ -1379,8 +1385,7 @@
   V(Obfuscate)                                                                 \
   V(ShouldLoadVmService)                                                       \
   V(NullSafety)                                                                \
-  V(NullSafetySet)                                                             \
-  V(UnsafeTrustStrongModeTypes)
+  V(NullSafetySet)
 
   // Isolate specific flags.
   enum FlagBits {
@@ -1592,6 +1597,26 @@
   DISALLOW_COPY_AND_ASSIGN(StartIsolateScope);
 };
 
+class EnterIsolateGroupScope {
+ public:
+  explicit EnterIsolateGroupScope(IsolateGroup* isolate_group)
+      : isolate_group_(isolate_group) {
+    ASSERT(IsolateGroup::Current() == nullptr);
+    const bool result = Thread::EnterIsolateGroupAsHelper(
+        isolate_group_, Thread::kUnknownTask, /*bypass_safepoint=*/false);
+    ASSERT(result);
+  }
+
+  ~EnterIsolateGroupScope() {
+    Thread::ExitIsolateGroupAsHelper(/*bypass_safepoint=*/false);
+  }
+
+ private:
+  IsolateGroup* isolate_group_;
+
+  DISALLOW_COPY_AND_ASSIGN(EnterIsolateGroupScope);
+};
+
 class IsolateSpawnState {
  public:
   IsolateSpawnState(Dart_Port parent_port,
diff --git a/runtime/vm/isolate_reload_test.cc b/runtime/vm/isolate_reload_test.cc
index 5f16ca6..72411fb 100644
--- a/runtime/vm/isolate_reload_test.cc
+++ b/runtime/vm/isolate_reload_test.cc
@@ -4516,7 +4516,9 @@
   lib = TestCase::ReloadTestScript(kReloadScript);
   EXPECT_VALID(lib);
   EXPECT_ERROR(SimpleInvokeError(lib, "main"),
-               "Static call with invalid arguments");
+               "Unhandled exception:\n"
+               "NoSuchMethodError: No constructor 'A.' "
+               "with matching arguments declared in class 'A'.");
 }
 
 #endif  // !defined(PRODUCT) && !defined(DART_PRECOMPILED_RUNTIME)
diff --git a/runtime/vm/json_stream.cc b/runtime/vm/json_stream.cc
index bae68b3..0fd8b33 100644
--- a/runtime/vm/json_stream.cc
+++ b/runtime/vm/json_stream.cc
@@ -41,7 +41,7 @@
   ObjectIdRing* ring = NULL;
   Isolate* isolate = Isolate::Current();
   if (isolate != NULL) {
-    ring = isolate->object_id_ring();
+    ring = isolate->EnsureObjectIdRing();
   }
   default_id_zone_.Init(ring, ObjectIdRing::kAllocateId);
 }
diff --git a/runtime/vm/kernel_binary.h b/runtime/vm/kernel_binary.h
index af2d8ba..11527eb 100644
--- a/runtime/vm/kernel_binary.h
+++ b/runtime/vm/kernel_binary.h
@@ -7,6 +7,7 @@
 
 #if !defined(DART_PRECOMPILED_RUNTIME)
 
+#include "platform/unaligned.h"
 #include "vm/kernel.h"
 #include "vm/object.h"
 
@@ -236,7 +237,8 @@
     ASSERT((size_ >= 4) && (offset >= 0) && (offset <= size_ - 4));
     uint32_t value;
     if (raw_buffer_ != NULL) {
-      value = *reinterpret_cast<const uint32_t*>(raw_buffer_ + offset);
+      value = LoadUnaligned(
+          reinterpret_cast<const uint32_t*>(raw_buffer_ + offset));
     } else {
       value = typed_data_->GetUint32(offset);
     }
@@ -259,7 +261,7 @@
 
   double ReadDouble() {
     ASSERT((size_ >= 8) && (offset_ >= 0) && (offset_ <= size_ - 8));
-    double value = ReadUnaligned(
+    double value = LoadUnaligned(
         reinterpret_cast<const double*>(&this->buffer()[offset_]));
     offset_ += 8;
     return value;
diff --git a/runtime/vm/kernel_isolate.cc b/runtime/vm/kernel_isolate.cc
index a67d70a..9fe4c5f 100644
--- a/runtime/vm/kernel_isolate.cc
+++ b/runtime/vm/kernel_isolate.cc
@@ -86,7 +86,6 @@
     Dart_IsolateFlags api_flags;
     Isolate::FlagsInitialize(&api_flags);
     api_flags.enable_asserts = false;
-    api_flags.unsafe_trust_strong_mode_types = false;
 #if !defined(DART_PRECOMPILER)
     api_flags.use_field_guards = true;
 #endif
diff --git a/runtime/vm/kernel_loader.cc b/runtime/vm/kernel_loader.cc
index 7bfd7d7..00dae4c 100644
--- a/runtime/vm/kernel_loader.cc
+++ b/runtime/vm/kernel_loader.cc
@@ -1038,7 +1038,7 @@
   }
   if (I->null_safety() && (mode == NNBDCompiledMode::kWeak ||
                            mode == NNBDCompiledMode::kDisabled)) {
-    H.ReportError(
+    FATAL1(
         "Library '%s' was compiled without null safety (in weak mode) and it "
         "cannot be used with --null-safety at runtime",
         String::Handle(library.url()).ToCString());
diff --git a/runtime/vm/memory_region.h b/runtime/vm/memory_region.h
index 63cc44a..3432f6f 100644
--- a/runtime/vm/memory_region.h
+++ b/runtime/vm/memory_region.h
@@ -6,6 +6,7 @@
 #define RUNTIME_VM_MEMORY_REGION_H_
 
 #include "platform/assert.h"
+#include "platform/unaligned.h"
 #include "vm/allocation.h"
 #include "vm/globals.h"
 
@@ -43,6 +44,11 @@
   }
 
   template <typename T>
+  void StoreUnaligned(uword offset, T value) const {
+    dart::StoreUnaligned(ComputeInternalPointer<T>(offset), value);
+  }
+
+  template <typename T>
   T* PointerTo(uword offset) const {
     return ComputeInternalPointer<T>(offset);
   }
diff --git a/runtime/vm/message.h b/runtime/vm/message.h
index d29e7fb..f6f0b02 100644
--- a/runtime/vm/message.h
+++ b/runtime/vm/message.h
@@ -22,7 +22,7 @@
 class Bequest;
 class JSONStream;
 class PersistentHandle;
-class HeapPage;
+class OldPage;
 class WeakTable;
 class FreeList;
 
diff --git a/runtime/vm/message_handler.cc b/runtime/vm/message_handler.cc
index 1012630..28a89a2 100644
--- a/runtime/vm/message_handler.cc
+++ b/runtime/vm/message_handler.cc
@@ -438,18 +438,9 @@
         ml.Enter();
       }
 
-      bool handle_messages = true;
-      while (handle_messages) {
-        handle_messages = false;
-
-        // Handle any pending messages for this message handler.
-        if (status != kShutdown) {
-          status = HandleMessages(&ml, (status == kOK), true);
-        }
-
-        if (status == kOK && HasLivePorts()) {
-          handle_messages = CheckIfIdleLocked(&ml);
-        }
+      // Handle any pending messages for this message handler.
+      if (status != kShutdown) {
+        status = HandleMessages(&ml, (status == kOK), true);
       }
     }
 
@@ -522,48 +513,6 @@
   }
 }
 
-bool MessageHandler::CheckIfIdleLocked(MonitorLocker* ml) {
-  if (isolate() == nullptr ||
-      !isolate()->group()->idle_time_handler()->ShouldCheckForIdle()) {
-    // No idle task to schedule.
-    return false;
-  }
-  if (!isolate()->group()->initial_spawn_successful()) {
-    // The isolate has not started running application code yet.
-    return false;
-  }
-  int64_t idle_expirary = 0;
-  if (isolate()->group()->idle_time_handler()->ShouldNotifyIdle(
-          &idle_expirary)) {
-    // We've been without a message long enough to hope we can do some
-    // cleanup before the next message arrives.
-    RunIdleTaskLocked(ml);
-    // We may have received new messages while running idle task, so return
-    // true so that the handle messages loop is run again.
-    return true;
-  }
-
-  // We wait here for the scheduled idle time to expire or
-  // new messages or OOB messages to arrive.
-  paused_for_messages_ = true;
-  ml->WaitMicros(idle_expirary - OS::GetCurrentMonotonicMicros());
-  paused_for_messages_ = false;
-  // We want to loop back in order to handle the new messages
-  // or run the idle task.
-  return true;
-}
-
-void MessageHandler::RunIdleTaskLocked(MonitorLocker* ml) {
-  // Idle tasks may take a while: don't block other isolates sending
-  // us messages.
-  ml->Exit();
-  {
-    StartIsolateScope start_isolate(isolate());
-    isolate()->group()->idle_time_handler()->NotifyIdleUsingDefaultDeadline();
-  }
-  ml->Enter();
-}
-
 void MessageHandler::ClosePort(Dart_Port port) {
   MonitorLocker ml(&monitor_);
   if (FLAG_trace_isolates) {
diff --git a/runtime/vm/metrics.cc b/runtime/vm/metrics.cc
index 3a59272..ecfda6c 100644
--- a/runtime/vm/metrics.cc
+++ b/runtime/vm/metrics.cc
@@ -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.
 
-#if !defined(PRODUCT)
-
 #include "vm/metrics.h"
 
 #include "vm/isolate.h"
@@ -37,6 +35,7 @@
   unit_ = unit;
 }
 
+#if !defined(PRODUCT)
 void Metric::InitInstance(Isolate* isolate,
                           const char* name,
                           const char* description,
@@ -59,7 +58,6 @@
   unit_ = unit;
 }
 
-#ifndef PRODUCT
 static const char* UnitString(intptr_t unit) {
   switch (unit) {
     case Metric::kCounter:
@@ -90,7 +88,7 @@
   double value_as_double = static_cast<double>(Value());
   obj.AddProperty("value", value_as_double);
 }
-#endif  // !PRODUCT
+#endif  // !defined(PRODUCT)
 
 char* Metric::ValueToString(int64_t value, Unit unit) {
   Thread* thread = Thread::Current();
@@ -179,6 +177,7 @@
          isolate_group()->heap()->UsedInWords(Heap::kOld) * kWordSize;
 }
 
+#if !defined(PRODUCT)
 int64_t MetricIsolateCount::Value() const {
   return Isolate::IsolateListLength();
 }
@@ -190,6 +189,9 @@
 int64_t MetricPeakRSS::Value() const {
   return Service::MaxRSS();
 }
+#endif  // !defined(PRODUCT)
+
+#if !defined(PRODUCT)
 
 #define VM_METRIC_VARIABLE(type, variable, name, unit)                         \
   type vm_metric_##variable;
@@ -217,6 +219,8 @@
   }
 }
 
+#endif  // !defined(PRODUCT)
+
 MaxMetric::MaxMetric() : Metric() {
   set_value(kMinInt64);
 }
@@ -238,5 +242,3 @@
 }
 
 }  // namespace dart
-
-#endif  // !defined(PRODUCT)
diff --git a/runtime/vm/metrics.h b/runtime/vm/metrics.h
index ea17ad4..dfb4822 100644
--- a/runtime/vm/metrics.h
+++ b/runtime/vm/metrics.h
@@ -48,9 +48,10 @@
 
   Metric();
 
+#if !defined(PRODUCT)
   static void Init();
-
   static void Cleanup();
+#endif  // !defined(PRODUCT)
 
   // Initialize a metric for an isolate.
   void InitInstance(Isolate* isolate,
@@ -160,6 +161,7 @@
   virtual int64_t Value() const;
 };
 
+#if !defined(PRODUCT)
 class MetricIsolateCount : public Metric {
  public:
   virtual int64_t Value() const;
@@ -174,6 +176,7 @@
  public:
   virtual int64_t Value() const;
 };
+#endif  // !defined(PRODUCT)
 
 class MetricHeapUsed : public Metric {
  public:
diff --git a/runtime/vm/metrics_test.cc b/runtime/vm/metrics_test.cc
index aceb5a7..5798b7a 100644
--- a/runtime/vm/metrics_test.cc
+++ b/runtime/vm/metrics_test.cc
@@ -16,8 +16,7 @@
 
 namespace dart {
 
-#ifndef PRODUCT
-
+#if !defined(PRODUCT)
 VM_UNIT_TEST_CASE(Metric_Simple) {
   TestCase::CreateTestIsolate();
   {
@@ -75,6 +74,7 @@
   }
   Dart_ShutdownIsolate();
 }
+#endif  // !defined(PRODUCT)
 
 ISOLATE_UNIT_TEST_CASE(Metric_EmbedderAPI) {
   {
@@ -98,7 +98,9 @@
     TransitionVMToNative transition(Thread::Current());
 
     Dart_Isolate isolate = Dart_CurrentIsolate();
+#if !defined(PRODUCT)
     EXPECT(Dart_VMIsolateCountMetric() > 0);
+#endif
     EXPECT(Dart_IsolateHeapOldUsedMetric(isolate) > 0);
     EXPECT(Dart_IsolateHeapOldUsedMaxMetric(isolate) > 0);
     EXPECT(Dart_IsolateHeapOldCapacityMetric(isolate) > 0);
@@ -112,6 +114,4 @@
   }
 }
 
-#endif  // !PRODUCT
-
 }  // namespace dart
diff --git a/runtime/vm/native_entry.cc b/runtime/vm/native_entry.cc
index 44f3d91b..7a13118 100644
--- a/runtime/vm/native_entry.cc
+++ b/runtime/vm/native_entry.cc
@@ -112,7 +112,8 @@
       reinterpret_cast<uword>(NativeEntry::BootstrapNativeCallWrapper);
 #if defined(USING_SIMULATOR)
   entry = Simulator::RedirectExternalReference(
-      entry, Simulator::kNativeCall, NativeEntry::kNumCallWrapperArguments);
+      entry, Simulator::kNativeCallWrapper,
+      NativeEntry::kNumCallWrapperArguments);
 #endif
   return entry;
 }
@@ -150,7 +151,8 @@
   uword entry = reinterpret_cast<uword>(NativeEntry::NoScopeNativeCallWrapper);
 #if defined(USING_SIMULATOR)
   entry = Simulator::RedirectExternalReference(
-      entry, Simulator::kNativeCall, NativeEntry::kNumCallWrapperArguments);
+      entry, Simulator::kNativeCallWrapper,
+      NativeEntry::kNumCallWrapperArguments);
 #endif
   return entry;
 }
@@ -184,7 +186,8 @@
       reinterpret_cast<uword>(NativeEntry::AutoScopeNativeCallWrapper);
 #if defined(USING_SIMULATOR)
   entry = Simulator::RedirectExternalReference(
-      entry, Simulator::kNativeCall, NativeEntry::kNumCallWrapperArguments);
+      entry, Simulator::kNativeCallWrapper,
+      NativeEntry::kNumCallWrapperArguments);
 #endif
   return entry;
 }
diff --git a/runtime/vm/object.cc b/runtime/vm/object.cc
index 7bac01c..e3eaf18 100644
--- a/runtime/vm/object.cc
+++ b/runtime/vm/object.cc
@@ -8,6 +8,7 @@
 
 #include "include/dart_api.h"
 #include "platform/assert.h"
+#include "platform/unaligned.h"
 #include "platform/unicode.h"
 #include "vm/bit_vector.h"
 #include "vm/bootstrap.h"
@@ -555,6 +556,7 @@
     // Allocate a dummy bool object to give true the desired alignment.
     uword address = heap->Allocate(Bool::InstanceSize(), Heap::kOld);
     InitializeObject(address, kBoolCid, Bool::InstanceSize());
+    static_cast<BoolPtr>(address + kHeapObjectTag)->ptr()->value_ = false;
   }
   {
     // Allocate true.
@@ -2513,7 +2515,7 @@
     uword addr = ObjectLayout::ToAddr(raw());
     if (!vm_isolate_heap->Contains(addr)) {
       ASSERT(FLAG_write_protect_code);
-      addr = ObjectLayout::ToAddr(HeapPage::ToWritable(raw()));
+      addr = ObjectLayout::ToAddr(OldPage::ToWritable(raw()));
       ASSERT(vm_isolate_heap->Contains(addr));
     }
   }
@@ -2603,7 +2605,7 @@
         uword addr = ObjectLayout::ToAddr(raw_);
         if (!isolate_heap->Contains(addr) && !vm_isolate_heap->Contains(addr)) {
           ASSERT(FLAG_write_protect_code);
-          addr = ObjectLayout::ToAddr(HeapPage::ToWritable(raw_));
+          addr = ObjectLayout::ToAddr(OldPage::ToWritable(raw_));
           ASSERT(isolate_heap->Contains(addr) ||
                  vm_isolate_heap->Contains(addr));
         }
@@ -2754,6 +2756,20 @@
   return GenerateUserVisibleName();  // No caching in PRODUCT, regenerate.
 }
 
+const char* Class::NameCString(NameVisibility name_visibility) const {
+  switch (name_visibility) {
+    case Object::kInternalName:
+      return String::Handle(Name()).ToCString();
+    case Object::kScrubbedName:
+      return ScrubbedNameCString();
+    case Object::kUserVisibleName:
+      return UserVisibleNameCString();
+    default:
+      UNREACHABLE();
+      return nullptr;
+  }
+}
+
 ClassPtr Class::Mixin() const {
   if (is_transformed_mixin_application()) {
     const Array& interfaces = Array::Handle(this->interfaces());
@@ -3891,14 +3907,14 @@
   const Smi& invocation_type =
       Smi::Handle(Smi::New(InvocationMirror::EncodeType(level, kind)));
 
-  const Array& args = Array::Handle(Array::New(6));
+  const Array& args = Array::Handle(Array::New(7));
   args.SetAt(0, receiver);
   args.SetAt(1, function_name);
   args.SetAt(2, invocation_type);
-  // TODO(regis): Support invocation of generic functions with type arguments.
-  args.SetAt(3, Object::null_type_arguments());
-  args.SetAt(4, arguments);
-  args.SetAt(5, argument_names);
+  args.SetAt(3, Object::smi_zero());  // Type arguments length.
+  args.SetAt(4, Object::null_type_arguments());
+  args.SetAt(5, arguments);
+  args.SetAt(6, argument_names);
 
   const Library& libcore = Library::Handle(Library::CoreLibrary());
   const Class& NoSuchMethodError =
@@ -5791,10 +5807,13 @@
   return Symbols::New(thread, printer.buffer());
 }
 
-void TypeArguments::PrintSubvectorName(intptr_t from_index,
-                                       intptr_t len,
-                                       NameVisibility name_visibility,
-                                       ZoneTextBuffer* printer) const {
+void TypeArguments::PrintSubvectorName(
+    intptr_t from_index,
+    intptr_t len,
+    NameVisibility name_visibility,
+    ZoneTextBuffer* printer,
+    NameDisambiguation name_disambiguation /* = NameDisambiguation::kNo */)
+    const {
   printer->AddString("<");
   AbstractType& type = AbstractType::Handle();
   for (intptr_t i = 0; i < len; i++) {
@@ -5803,7 +5822,7 @@
       if (type.IsNull()) {
         printer->AddString("null");  // Unfinalized vector.
       } else {
-        type.PrintName(name_visibility, printer);
+        type.PrintName(name_visibility, printer, name_disambiguation);
       }
     } else {
       printer->AddString("dynamic");
@@ -8515,7 +8534,7 @@
 intptr_t Function::ComputeClosureHash() const {
   ASSERT(IsClosureFunction());
   const Class& cls = Class::Handle(Owner());
-  intptr_t result = String::Handle(name()).Hash();
+  uintptr_t result = String::Handle(name()).Hash();
   result += String::Handle(Signature()).Hash();
   result += String::Handle(cls.Name()).Hash();
   return result;
@@ -8757,6 +8776,18 @@
          ForceOptimize();
 }
 
+const char* Function::NameCString(NameVisibility name_visibility) const {
+  switch (name_visibility) {
+    case kInternalName:
+      return String::Handle(name()).ToCString();
+    case kScrubbedName:
+    case kUserVisibleName:
+      return UserVisibleNameCString();
+  }
+  UNREACHABLE();
+  return nullptr;
+}
+
 const char* Function::UserVisibleNameCString() const {
   if (FLAG_show_internal_names) {
     return String::Handle(name()).ToCString();
@@ -8787,12 +8818,31 @@
   return Symbols::New(thread, printer.buffer());
 }
 
-void Function::PrintQualifiedName(NameVisibility name_visibility,
-                                  ZoneTextBuffer* printer) const {
-  ASSERT(name_visibility != kInternalName);  // We never request it.
+void Function::PrintQualifiedName(
+    NameVisibility name_visibility,
+    ZoneTextBuffer* printer,
+    NameDisambiguation name_disambiguation /* = NameDisambiguation::kNo */)
+    const {
   // If |this| is the generated asynchronous body closure, use the
   // name of the parent function.
   Function& fun = Function::Handle(raw());
+
+  if (name_disambiguation == NameDisambiguation::kYes) {
+    if (fun.IsInvokeFieldDispatcher()) {
+      printer->AddString("[invoke-field] ");
+    }
+    if (fun.IsImplicitClosureFunction()) {
+      printer->AddString("[tear-off] ");
+    }
+    if (fun.IsMethodExtractor()) {
+      printer->AddString("[tear-off-extractor] ");
+    }
+    if (fun.IsAsyncClosure() || fun.IsAsyncGenClosure() ||
+        fun.IsGeneratorClosure()) {
+      printer->AddString("[body] ");
+    }
+  }
+
   if (fun.IsClosureFunction()) {
     // Sniff the parent function.
     fun = fun.parent_function();
@@ -8813,10 +8863,15 @@
         // the parent.
         parent = parent.parent_function();
       }
-      parent.PrintQualifiedName(name_visibility, printer);
+      parent.PrintQualifiedName(name_visibility, printer, name_disambiguation);
       // A function's scrubbed name and its user visible name are identical.
       printer->AddString(".");
-      printer->AddString(fun.UserVisibleNameCString());
+      if (name_disambiguation == NameDisambiguation::kYes &&
+          fun.name() == Symbols::AnonymousClosure().raw()) {
+        printer->Printf("<anonymous closure @%" Pd ">", fun.token_pos().Pos());
+      } else {
+        printer->AddString(fun.NameCString(name_visibility));
+      }
       return;
     }
   }
@@ -8826,14 +8881,40 @@
       printer->AddString("new ");
     } else {
       const Class& mixin = Class::Handle(cls.Mixin());
-      printer->AddString(name_visibility == kScrubbedName
-                             ? cls.ScrubbedNameCString()
-                             : mixin.UserVisibleNameCString());
+      printer->AddString(name_visibility == kUserVisibleName
+                             ? mixin.UserVisibleNameCString()
+                             : cls.NameCString(name_visibility));
       printer->AddString(".");
     }
   }
-  // A function's scrubbed name and its user visible name are identical.
-  printer->AddString(fun.UserVisibleNameCString());
+
+  printer->AddString(fun.NameCString(name_visibility));
+
+  // Field dispatchers are specialized for an argument descriptor so there
+  // might be multiples of them with the same name but different argument
+  // descriptors. Add a suffix to disambiguate.
+  if (name_disambiguation == NameDisambiguation::kYes &&
+      fun.IsInvokeFieldDispatcher()) {
+    printer->AddString(" ");
+    if (NumTypeParameters() != 0) {
+      printer->Printf("<%" Pd ">", fun.NumTypeParameters());
+    }
+    printer->AddString("(");
+    printer->Printf("%" Pd "", fun.num_fixed_parameters());
+    if (fun.NumOptionalPositionalParameters() != 0) {
+      printer->Printf(" [%" Pd "]", fun.NumOptionalPositionalParameters());
+    }
+    if (fun.NumOptionalNamedParameters() != 0) {
+      printer->AddString(" {");
+      String& name = String::Handle();
+      for (intptr_t i = 0; i < fun.NumOptionalNamedParameters(); i++) {
+        name = fun.ParameterNameAt(fun.num_fixed_parameters() + i);
+        printer->Printf("%s%s", i > 0 ? ", " : "", name.ToCString());
+      }
+      printer->AddString("}");
+    }
+    printer->AddString(")");
+  }
 }
 
 StringPtr Function::GetSource() const {
@@ -9099,9 +9180,9 @@
 #endif
 }
 
-bool Function::MayHaveUncheckedEntryPoint(Isolate* I) const {
+bool Function::MayHaveUncheckedEntryPoint() const {
   return FLAG_enable_multiple_entrypoints &&
-         (NeedsArgumentTypeChecks(I) || IsImplicitClosureFunction());
+         (NeedsArgumentTypeChecks() || IsImplicitClosureFunction());
 }
 
 const char* Function::ToCString() const {
@@ -15877,18 +15958,19 @@
 
     // Set pointer offsets list in Code object and resolve all handles in
     // the instruction stream to raw objects.
+    Thread* thread = Thread::Current();
     for (intptr_t i = 0; i < pointer_offsets.length(); i++) {
       intptr_t offset_in_instrs = pointer_offsets[i];
       code.SetPointerOffsetAt(i, offset_in_instrs);
       uword addr = region.start() + offset_in_instrs;
       ASSERT(instrs.PayloadStart() <= addr);
       ASSERT((instrs.PayloadStart() + instrs.Size()) > addr);
-      const Object* object = *reinterpret_cast<Object**>(addr);
+      const Object* object = LoadUnaligned(reinterpret_cast<Object**>(addr));
       ASSERT(object->IsOld());
       // N.B. The pointer is embedded in the Instructions object, but visited
       // through the Code object.
-      code.raw()->ptr()->StorePointer(reinterpret_cast<ObjectPtr*>(addr),
-                                      object->raw());
+      code.raw()->ptr()->StorePointerUnaligned(
+          reinterpret_cast<ObjectPtr*>(addr), object->raw(), thread);
     }
 
     // Write protect instructions and, if supported by OS, use dual mapping
@@ -15896,7 +15978,7 @@
     if (FLAG_write_protect_code) {
       uword address = ObjectLayout::ToAddr(instrs.raw());
       // Check if a dual mapping exists.
-      instrs = Instructions::RawCast(HeapPage::ToExecutable(instrs.raw()));
+      instrs = Instructions::RawCast(OldPage::ToExecutable(instrs.raw()));
       uword exec_address = ObjectLayout::ToAddr(instrs.raw());
       const bool use_dual_mapping = exec_address != address;
       ASSERT(use_dual_mapping == FLAG_dual_map_code);
@@ -16085,7 +16167,8 @@
 }
 
 const char* Code::ToCString() const {
-  return Thread::Current()->zone()->PrintToString("Code(%s)", QualifiedName());
+  return OS::SCreate(Thread::Current()->zone(), "Code(%s)",
+                     QualifiedName(kScrubbedName, NameDisambiguation::kYes));
 }
 
 const char* Code::Name() const {
@@ -16096,7 +16179,7 @@
     if (name == NULL) {
       return "[unknown stub]";  // Not yet recorded.
     }
-    return zone->PrintToString("[Stub] %s", name);
+    return OS::SCreate(zone, "[Stub] %s", name);
   }
   const auto& obj =
       Object::Handle(zone, WeakSerializationReference::UnwrapIfTarget(owner()));
@@ -16104,11 +16187,11 @@
     // Allocation stub.
     String& cls_name = String::Handle(zone, Class::Cast(obj).ScrubbedName());
     ASSERT(!cls_name.IsNull());
-    return zone->PrintToString("[Stub] Allocate %s", cls_name.ToCString());
+    return OS::SCreate(zone, "[Stub] Allocate %s", cls_name.ToCString());
   } else if (obj.IsAbstractType()) {
     // Type test stub.
-    return zone->PrintToString("[Stub] Type Test %s",
-                               AbstractType::Cast(obj).ToCString());
+    return OS::SCreate(zone, "[Stub] Type Test %s",
+                       AbstractType::Cast(obj).ToCString());
   } else {
     ASSERT(IsFunctionCode());
     // Dart function.
@@ -16118,17 +16201,20 @@
             ? String::Handle(zone, Function::Cast(obj).UserVisibleName())
                   .ToCString()
             : WeakSerializationReference::Cast(obj).ToCString();
-    return zone->PrintToString("%s %s", opt, function_name);
+    return OS::SCreate(zone, "%s %s", opt, function_name);
   }
 }
 
-const char* Code::QualifiedName() const {
+const char* Code::QualifiedName(NameVisibility name_visibility,
+                                NameDisambiguation name_disambiguation) const {
   Zone* zone = Thread::Current()->zone();
-  const Object& obj = Object::Handle(zone, owner());
+  const Object& obj =
+      Object::Handle(zone, WeakSerializationReference::UnwrapIfTarget(owner()));
   if (obj.IsFunction()) {
     ZoneTextBuffer printer(zone);
     printer.AddString(is_optimized() ? "[Optimized] " : "[Unoptimized] ");
-    Function::Cast(obj).PrintQualifiedName(kUserVisibleName, &printer);
+    Function::Cast(obj).PrintQualifiedName(name_visibility, &printer,
+                                           name_disambiguation);
     return printer.buffer();
   }
   return Name();
@@ -18546,22 +18632,44 @@
   return Symbols::New(thread, printer.buffer());
 }
 
-void AbstractType::PrintName(NameVisibility name_visibility,
-                             ZoneTextBuffer* printer) const {
+void AbstractType::PrintName(
+    NameVisibility name_visibility,
+    ZoneTextBuffer* printer,
+    NameDisambiguation name_disambiguation /* = NameDisambiguation::kNo */)
+    const {
   ASSERT(name_visibility != kScrubbedName);
   Thread* thread = Thread::Current();
   Zone* zone = thread->zone();
+  Class& cls = Class::Handle(zone);
+  String& class_name = String::Handle(zone);
   if (IsTypeParameter()) {
-    printer->AddString(String::Handle(zone, TypeParameter::Cast(*this).name()));
+    const TypeParameter& param = TypeParameter::Cast(*this);
+
+    // Type parameters might have the same name but be owned by different
+    // entities. If we want to disambiguate them we need to prefix
+    // type parameter name with the name of its owner.
+    if (name_disambiguation == NameDisambiguation::kYes) {
+      cls = param.parameterized_class();
+      if (cls.raw() != Class::null()) {
+        printer->AddString(cls.NameCString(name_visibility));
+        printer->AddString("::");
+      } else if (param.parameterized_function() != Function::null()) {
+        const Function& func =
+            Function::Handle(zone, param.parameterized_function());
+        func.PrintQualifiedName(name_visibility, printer, name_disambiguation);
+        printer->AddString("::");
+      }
+    }
+
+    printer->AddString(String::Handle(zone, param.name()));
     printer->AddString(NullabilitySuffix(name_visibility));
     return;
   }
   const TypeArguments& args = TypeArguments::Handle(zone, arguments());
   const intptr_t num_args = args.IsNull() ? 0 : args.Length();
-  String& class_name = String::Handle(zone);
   intptr_t first_type_param_index;
   intptr_t num_type_params;  // Number of type parameters to print.
-  Class& cls = Class::Handle(zone, type_class());
+  cls = type_class();
   if (IsFunctionType()) {
     const Function& signature_function =
         Function::Handle(zone, Type::Cast(*this).signature());
@@ -18619,7 +18727,7 @@
     // Do nothing.
   } else {
     args.PrintSubvectorName(first_type_param_index, num_type_params,
-                            name_visibility, printer);
+                            name_visibility, printer, name_disambiguation);
   }
   printer->AddString(NullabilitySuffix(name_visibility));
   // The name is only used for type checking and debugging purposes.
@@ -19689,7 +19797,8 @@
   const TypeArguments& type_args = TypeArguments::Handle(zone, arguments());
   const char* args_cstr = "";
   if (!type_args.IsNull()) {
-    type_args.PrintSubvectorName(0, type_args.Length(), kInternalName, &args);
+    type_args.PrintSubvectorName(0, type_args.Length(), kInternalName, &args,
+                                 NameDisambiguation::kYes);
     args_cstr = args.buffer();
   }
   const Class& cls = Class::Handle(zone, type_class());
@@ -20370,7 +20479,7 @@
   ASSERT(IsSmi() || IsMint());
   int64_t value = AsInt64Value();
   if (value < 0) {
-    return OS::SCreate(zone, "-0x%" PX64, static_cast<uint64_t>(-value));
+    return OS::SCreate(zone, "-0x%" PX64, -static_cast<uint64_t>(value));
   } else {
     return OS::SCreate(zone, "0x%" PX64, static_cast<uint64_t>(value));
   }
@@ -21010,7 +21119,7 @@
   }
 
   for (intptr_t i = 0; i < len; i++) {
-    if (this->CharAt(i) != utf16_array[i]) {
+    if (this->CharAt(i) != LoadUnaligned(&utf16_array[i])) {
       return false;
     }
   }
@@ -21154,7 +21263,7 @@
                             Heap::Space space) {
   bool is_one_byte_string = true;
   for (intptr_t i = 0; i < array_len; ++i) {
-    if (!Utf::IsLatin1(utf16_array[i])) {
+    if (!Utf::IsLatin1(LoadUnaligned(&utf16_array[i]))) {
       is_one_byte_string = false;
       break;
     }
@@ -21251,7 +21360,7 @@
   if (dst.IsOneByteString()) {
     NoSafepointScope no_safepoint;
     for (intptr_t i = 0; i < array_len; ++i) {
-      ASSERT(Utf::IsLatin1(utf16_array[i]));
+      ASSERT(Utf::IsLatin1(LoadUnaligned(&utf16_array[i])));
       *OneByteString::CharAddr(dst, i + dst_offset) = utf16_array[i];
     }
   } else {
@@ -22754,7 +22863,7 @@
 }
 
 simd128_value_t Float32x4::value() const {
-  return ReadUnaligned(
+  return LoadUnaligned(
       reinterpret_cast<const simd128_value_t*>(&raw_ptr()->value_));
 }
 
@@ -22870,7 +22979,7 @@
 }
 
 simd128_value_t Int32x4::value() const {
-  return ReadUnaligned(
+  return LoadUnaligned(
       reinterpret_cast<const simd128_value_t*>(&raw_ptr()->value_));
 }
 
diff --git a/runtime/vm/object.h b/runtime/vm/object.h
index 82779b4..21f60df 100644
--- a/runtime/vm/object.h
+++ b/runtime/vm/object.h
@@ -596,6 +596,20 @@
     kUserVisibleName
   };
 
+  // Sometimes simple formating might produce the same name for two different
+  // entities, for example we might inject a synthetic forwarder into the
+  // class which has the same name as an already existing function, or
+  // two different types can be formatted as X<T> because T has different
+  // meaning (refers to a different type parameter) in these two types.
+  // Such ambiguity might be acceptable in some contexts but not in others, so
+  // some formatting methods have two modes - one which tries to be more
+  // user friendly, and another one which tries to avoid name conflicts by
+  // emitting longer and less user friendly names.
+  enum class NameDisambiguation {
+    kYes,
+    kNo,
+  };
+
  protected:
   // Used for extracting the C++ vtable during bringup.
   Object() : raw_(null_) {}
@@ -1017,6 +1031,8 @@
   StringPtr UserVisibleName() const;
   const char* UserVisibleNameCString() const;
 
+  const char* NameCString(NameVisibility name_visibility) const;
+
   // The mixin for this class if one exists. Otherwise, returns a raw pointer
   // to this class.
   ClassPtr Mixin() const;
@@ -2412,8 +2428,12 @@
   StringPtr UserVisibleName() const;  // Same as scrubbed name.
   const char* UserVisibleNameCString() const;
 
-  void PrintQualifiedName(NameVisibility name_visibility,
-                          ZoneTextBuffer* printer) const;
+  const char* NameCString(NameVisibility name_visibility) const;
+
+  void PrintQualifiedName(
+      NameVisibility name_visibility,
+      ZoneTextBuffer* printer,
+      NameDisambiguation name_disambiguation = NameDisambiguation::kNo) const;
   StringPtr QualifiedScrubbedName() const;
   StringPtr QualifiedUserVisibleName() const;
 
@@ -2834,17 +2854,14 @@
   }
   bool IsInFactoryScope() const;
 
-  bool NeedsArgumentTypeChecks(Isolate* I) const {
-    if (!I->should_emit_strong_mode_checks()) {
-      return false;
-    }
+  bool NeedsArgumentTypeChecks() const {
     return IsClosureFunction() ||
            !(is_static() || (kind() == FunctionLayout::kConstructor));
   }
 
   bool NeedsMonomorphicCheckedEntry(Zone* zone) const;
 
-  bool MayHaveUncheckedEntryPoint(Isolate* I) const;
+  bool MayHaveUncheckedEntryPoint() const;
 
   TokenPosition token_pos() const {
 #if defined(DART_PRECOMPILED_RUNTIME)
@@ -6293,7 +6310,8 @@
   intptr_t GetDeoptIdForOsr(uword pc) const;
 
   const char* Name() const;
-  const char* QualifiedName() const;
+  const char* QualifiedName(NameVisibility name_visibility,
+                            NameDisambiguation name_disambiguation) const;
 
   int64_t compile_timestamp() const {
 #if defined(PRODUCT)
@@ -7359,10 +7377,12 @@
 
   // Print the internal or public name of a subvector of this type argument
   // vector, e.g. "<T, dynamic, List<T>, int>".
-  void PrintSubvectorName(intptr_t from_index,
-                          intptr_t len,
-                          NameVisibility name_visibility,
-                          ZoneTextBuffer* printer) const;
+  void PrintSubvectorName(
+      intptr_t from_index,
+      intptr_t len,
+      NameVisibility name_visibility,
+      ZoneTextBuffer* printer,
+      NameDisambiguation name_disambiguation = NameDisambiguation::kNo) const;
 
   // Check if the subvector of length 'len' starting at 'from_index' of this
   // type argument vector consists solely of DynamicType.
@@ -7686,7 +7706,10 @@
 
   // Return the internal or public name of this type, including the names of its
   // type arguments, if any.
-  void PrintName(NameVisibility visibility, ZoneTextBuffer* printer) const;
+  void PrintName(
+      NameVisibility visibility,
+      ZoneTextBuffer* printer,
+      NameDisambiguation name_disambiguation = NameDisambiguation::kNo) const;
 
   // Add the class name and URI of each occuring type to the uris
   // list and mark ambiguous triplets to be printed.
@@ -9770,7 +9793,7 @@
     ASSERT((byte_offset >= 0) &&                                               \
            (byte_offset + static_cast<intptr_t>(sizeof(type)) - 1) <           \
                LengthInBytes());                                               \
-    return ReadUnaligned(ReadOnlyDataAddr<type>(byte_offset));                 \
+    return LoadUnaligned(ReadOnlyDataAddr<type>(byte_offset));                 \
   }                                                                            \
   void Set##name(intptr_t byte_offset, type value) const {                     \
     NoSafepointScope no_safepoint;                                             \
@@ -9905,7 +9928,7 @@
 
 #define TYPED_GETTER_SETTER(name, type)                                        \
   type Get##name(intptr_t byte_offset) const {                                 \
-    return ReadUnaligned(reinterpret_cast<type*>(DataAddr(byte_offset)));      \
+    return LoadUnaligned(reinterpret_cast<type*>(DataAddr(byte_offset)));      \
   }                                                                            \
   void Set##name(intptr_t byte_offset, type value) const {                     \
     StoreUnaligned(reinterpret_cast<type*>(DataAddr(byte_offset)), value);     \
@@ -10871,7 +10894,7 @@
       uword addr = ObjectLayout::ToAddr(raw_);
       if (!isolate_heap->Contains(addr) && !vm_isolate_heap->Contains(addr)) {
         ASSERT(FLAG_write_protect_code);
-        addr = ObjectLayout::ToAddr(HeapPage::ToWritable(raw_));
+        addr = ObjectLayout::ToAddr(OldPage::ToWritable(raw_));
         ASSERT(isolate_heap->Contains(addr) || vm_isolate_heap->Contains(addr));
       }
     }
diff --git a/runtime/vm/object_graph.cc b/runtime/vm/object_graph.cc
index 6f028d9..717ff52 100644
--- a/runtime/vm/object_graph.cc
+++ b/runtime/vm/object_graph.cc
@@ -527,7 +527,7 @@
   return visitor.length();
 }
 
-// Each HeapPage is divided into blocks of size kBlockSize. Each object belongs
+// Each OldPage is divided into blocks of size kBlockSize. Each object belongs
 // to the block containing its header word.
 // When generating a heap snapshot, we assign objects sequential ids in heap
 // iteration order. A bitvector is computed that indicates the number of objects
@@ -584,7 +584,7 @@
   }
 
   CountingBlock* BlockFor(uword addr) {
-    intptr_t page_offset = addr & ~kPageMask;
+    intptr_t page_offset = addr & ~kOldPageMask;
     intptr_t block_number = page_offset / kBlockSize;
     ASSERT(block_number >= 0);
     ASSERT(block_number <= kBlocksPerPage);
@@ -656,7 +656,7 @@
     image_page_ranges_[i].size = 0;
   }
   intptr_t next_offset = 0;
-  HeapPage* image_page = Dart::vm_isolate()->heap()->old_space()->image_pages_;
+  OldPage* image_page = Dart::vm_isolate()->heap()->old_space()->image_pages_;
   while (image_page != NULL) {
     RELEASE_ASSERT(next_offset <= kMaxImagePages);
     image_page_ranges_[next_offset].base = image_page->object_start();
@@ -675,7 +675,7 @@
     next_offset++;
   }
 
-  HeapPage* page = isolate()->heap()->old_space()->pages_;
+  OldPage* page = isolate()->heap()->old_space()->pages_;
   while (page != NULL) {
     page->forwarding_page();
     CountingPage* counting_page =
@@ -699,7 +699,7 @@
 CountingPage* HeapSnapshotWriter::FindCountingPage(ObjectPtr obj) const {
   if (obj->IsOldObject() && !OnImagePage(obj)) {
     // On a regular or large page.
-    HeapPage* page = HeapPage::Of(obj);
+    OldPage* page = OldPage::Of(obj);
     return reinterpret_cast<CountingPage*>(page->forwarding_page());
   }
 
@@ -727,7 +727,7 @@
 
   if (FLAG_write_protect_code && obj->IsInstructions() && !OnImagePage(obj)) {
     // A non-writable alias mapping may exist for instruction pages.
-    obj = HeapPage::ToWritable(obj);
+    obj = OldPage::ToWritable(obj);
   }
 
   CountingPage* counting_page = FindCountingPage(obj);
diff --git a/runtime/vm/object_id_ring.cc b/runtime/vm/object_id_ring.cc
index 1de2e54..4e60ce05 100644
--- a/runtime/vm/object_id_ring.cc
+++ b/runtime/vm/object_id_ring.cc
@@ -86,16 +86,16 @@
   }
 }
 
-ObjectIdRing::ObjectIdRing(int32_t capacity) {
-  ASSERT(capacity > 0);
+ObjectIdRing::ObjectIdRing() {
   serial_num_ = 0;
   wrapped_ = false;
   table_ = NULL;
-  SetCapacityAndMaxSerial(capacity, kMaxId);
+  SetCapacityAndMaxSerial(kDefaultCapacity, kMaxId);
 }
 
 void ObjectIdRing::SetCapacityAndMaxSerial(int32_t capacity,
                                            int32_t max_serial) {
+  ASSERT(capacity > 0);
   ASSERT(max_serial <= kMaxId);
   capacity_ = capacity;
   if (table_ != NULL) {
diff --git a/runtime/vm/object_id_ring.h b/runtime/vm/object_id_ring.h
index 63fe1a7..deca92b 100644
--- a/runtime/vm/object_id_ring.h
+++ b/runtime/vm/object_id_ring.h
@@ -39,7 +39,7 @@
   static const int32_t kInvalidId = -1;
   static const int32_t kDefaultCapacity = 8192;
 
-  explicit ObjectIdRing(int32_t capacity = kDefaultCapacity);
+  ObjectIdRing();
   ~ObjectIdRing();
 
   // Adds the argument to the ring and returns its id. Note we do not allow
diff --git a/runtime/vm/object_id_ring_test.cc b/runtime/vm/object_id_ring_test.cc
index 07fa8ea..d0d62c9 100644
--- a/runtime/vm/object_id_ring_test.cc
+++ b/runtime/vm/object_id_ring_test.cc
@@ -52,7 +52,7 @@
 // Test that serial number wrapping works.
 ISOLATE_UNIT_TEST_CASE(ObjectIdRingSerialWrapTest) {
   Isolate* isolate = Isolate::Current();
-  ObjectIdRing* ring = isolate->object_id_ring();
+  ObjectIdRing* ring = isolate->EnsureObjectIdRing();
   ObjectIdRingTestHelper::SetCapacityAndMaxSerial(ring, 2, 4);
   intptr_t id;
   ObjectIdRing::LookupResult kind = ObjectIdRing::kInvalid;
@@ -137,7 +137,7 @@
   EXPECT_EQ(3, list_length);
 
   Isolate* isolate = thread->isolate();
-  ObjectIdRing* ring = isolate->object_id_ring();
+  ObjectIdRing* ring = isolate->EnsureObjectIdRing();
   ObjectIdRing::LookupResult kind = ObjectIdRing::kInvalid;
 
   {
@@ -196,7 +196,7 @@
 // Test that the ring table is updated with nulls when the old GC collects.
 ISOLATE_UNIT_TEST_CASE(ObjectIdRingOldGCTest) {
   Isolate* isolate = thread->isolate();
-  ObjectIdRing* ring = isolate->object_id_ring();
+  ObjectIdRing* ring = isolate->EnsureObjectIdRing();
 
   ObjectIdRing::LookupResult kind = ObjectIdRing::kInvalid;
   intptr_t raw_obj_id1 = -1;
@@ -241,7 +241,7 @@
 // overridden by new entries.
 ISOLATE_UNIT_TEST_CASE(ObjectIdRingExpiredEntryTest) {
   Isolate* isolate = Isolate::Current();
-  ObjectIdRing* ring = isolate->object_id_ring();
+  ObjectIdRing* ring = isolate->EnsureObjectIdRing();
 
   // Insert an object and check we can look it up.
   String& obj = String::Handle(String::New("I will expire"));
diff --git a/runtime/vm/object_reload.cc b/runtime/vm/object_reload.cc
index 669e441..6567789 100644
--- a/runtime/vm/object_reload.cc
+++ b/runtime/vm/object_reload.cc
@@ -4,6 +4,7 @@
 
 #include "vm/object.h"
 
+#include "platform/unaligned.h"
 #include "vm/code_patcher.h"
 #include "vm/hash_table.h"
 #include "vm/isolate_reload.h"
@@ -74,7 +75,7 @@
   for (intptr_t i = 0; i < offsets_length; i++) {
     int32_t offset = offsets[i];
     ObjectPtr* object_ptr = reinterpret_cast<ObjectPtr*>(base_address + offset);
-    ObjectPtr raw_object = *object_ptr;
+    ObjectPtr raw_object = LoadUnaligned(object_ptr);
     if (!raw_object->IsHeapObject()) {
       continue;
     }
diff --git a/runtime/vm/object_service.cc b/runtime/vm/object_service.cc
index 5b261ca..cf2d5c0 100644
--- a/runtime/vm/object_service.cc
+++ b/runtime/vm/object_service.cc
@@ -876,7 +876,8 @@
   AddCommonObjectProperties(&jsobj, "Code", ref);
   jsobj.AddFixedServiceId("code/%" Px64 "-%" Px "", compile_timestamp(),
                           PayloadStart());
-  const char* qualified_name = QualifiedName();
+  const char* qualified_name =
+      QualifiedName(kUserVisibleName, NameDisambiguation::kNo);
   const char* vm_name = Name();
   AddNameProperties(&jsobj, qualified_name, vm_name);
   const bool is_stub =
diff --git a/runtime/vm/object_store.h b/runtime/vm/object_store.h
index b28f776..9fb5e5d 100644
--- a/runtime/vm/object_store.h
+++ b/runtime/vm/object_store.h
@@ -211,7 +211,6 @@
   RW(Array, dispatch_table_code_entries)                                       \
   RW(Array, code_order_table)                                                  \
   RW(Array, obfuscation_map)                                                   \
-  RW(Array, saved_initial_field_values)                                        \
   RW(Class, ffi_pointer_class)                                                 \
   RW(Class, ffi_native_type_class)                                             \
   RW(Class, ffi_struct_class)                                                  \
diff --git a/runtime/vm/object_test.cc b/runtime/vm/object_test.cc
index 67fa779..210d32c 100644
--- a/runtime/vm/object_test.cc
+++ b/runtime/vm/object_test.cc
@@ -2581,7 +2581,7 @@
       Object::Handle(DartEntry::InvokeFunction(function, Array::empty_array()));
   EXPECT_EQ(1, Smi::Cast(result).Value());
   // Switch to the writeable but non-executable view of the instructions.
-  instructions ^= HeapPage::ToWritable(instructions.raw());
+  instructions ^= OldPage::ToWritable(instructions.raw());
   payload_start = instructions.PayloadStart();
   EXPECT_EQ(instructions.raw(), Instructions::FromPayloadStart(payload_start));
   // Hook up Code and Instructions objects.
diff --git a/runtime/vm/os_thread.h b/runtime/vm/os_thread.h
index 849d472..193a5f8 100644
--- a/runtime/vm/os_thread.h
+++ b/runtime/vm/os_thread.h
@@ -39,6 +39,7 @@
 class Mutex;
 class ThreadState;
 class TimelineEventBlock;
+class ThreadPool;
 
 class Mutex {
  public:
@@ -236,6 +237,11 @@
   static void DisableOSThreadCreation();
   static void EnableOSThreadCreation();
 
+  static bool CurrentThreadRunsOn(ThreadPool* pool) {
+    auto owning_pool = OSThread::Current()->owning_thread_pool_;
+    return owning_pool != nullptr && owning_pool == pool;
+  }
+
   static const intptr_t kStackSizeBufferMax = (16 * KB * kWordSize);
   static constexpr float kStackSizeBufferFraction = 0.5;
 
@@ -295,6 +301,10 @@
   uword stack_limit_;
   uword stack_headroom_;
   ThreadState* thread_;
+  // The ThreadPool which owns this OSThread. If this OSThread was not started
+  // by a ThreadPool it will be nullptr. This TLS value is not protected and
+  // should only be read/written by the OSThread itself.
+  ThreadPool* owning_thread_pool_ = nullptr;
 
   // thread_list_lock_ cannot have a static lifetime because the order in which
   // destructors run is undefined. At the moment this lock cannot be deleted
@@ -313,6 +323,7 @@
   friend class OSThreadIterator;
   friend class ThreadInterrupterWin;
   friend class ThreadInterrupterFuchsia;
+  friend class ThreadPool;  // to access owning_thread_pool_
 };
 
 // Note that this takes the thread list lock, prohibiting threads from coming
diff --git a/runtime/vm/profiler.cc b/runtime/vm/profiler.cc
index f4741fd..5a01001 100644
--- a/runtime/vm/profiler.cc
+++ b/runtime/vm/profiler.cc
@@ -1175,11 +1175,13 @@
   native_stack_walker.walk();
   OS::PrintErr("-- End of DumpStackTrace\n");
 
-  if (thread->execution_state() == Thread::kThreadInNative) {
-    TransitionNativeToVM transition(thread);
-    StackFrame::DumpCurrentTrace();
-  } else if (thread->execution_state() == Thread::kThreadInVM) {
-    StackFrame::DumpCurrentTrace();
+  if (thread != nullptr) {
+    if (thread->execution_state() == Thread::kThreadInNative) {
+      TransitionNativeToVM transition(thread);
+      StackFrame::DumpCurrentTrace();
+    } else if (thread->execution_state() == Thread::kThreadInVM) {
+      StackFrame::DumpCurrentTrace();
+    }
   }
 }
 
diff --git a/runtime/vm/profiler.h b/runtime/vm/profiler.h
index d63175b..4031e34 100644
--- a/runtime/vm/profiler.h
+++ b/runtime/vm/profiler.h
@@ -499,7 +499,8 @@
 
   const char* QualifiedName() const {
     if (code_.IsCode()) {
-      return Code::Cast(code_).QualifiedName();
+      return Code::Cast(code_).QualifiedName(Object::kUserVisibleName,
+                                             Object::NameDisambiguation::kNo);
     } else if (code_.IsBytecode()) {
       return Bytecode::Cast(code_).QualifiedName();
     } else {
diff --git a/runtime/vm/raw_object.cc b/runtime/vm/raw_object.cc
index 5611f2c..d29e083 100644
--- a/runtime/vm/raw_object.cc
+++ b/runtime/vm/raw_object.cc
@@ -688,7 +688,7 @@
 }
 
 void ObjectLayout::RememberCard(ObjectPtr const* slot) {
-  HeapPage::Of(static_cast<ObjectPtr>(this))->RememberCard(slot);
+  OldPage::Of(static_cast<ObjectPtr>(this))->RememberCard(slot);
 }
 
 DEFINE_LEAF_RUNTIME_ENTRY(void,
@@ -699,7 +699,7 @@
   ObjectPtr object = static_cast<ObjectPtr>(object_in);
   ASSERT(object->IsOldObject());
   ASSERT(object->ptr()->IsCardRemembered());
-  HeapPage::Of(object)->RememberCard(slot);
+  OldPage::Of(object)->RememberCard(slot);
 }
 END_LEAF_RUNTIME_ENTRY
 
diff --git a/runtime/vm/raw_object.h b/runtime/vm/raw_object.h
index fd0ddb6..ff37d6f 100644
--- a/runtime/vm/raw_object.h
+++ b/runtime/vm/raw_object.h
@@ -537,6 +537,14 @@
     }
   }
 
+  template <typename type>
+  void StorePointerUnaligned(type const* addr, type value, Thread* thread) {
+    StoreUnaligned(const_cast<type*>(addr), value);
+    if (value->IsHeapObject()) {
+      CheckHeapPointerStore(value, thread);
+    }
+  }
+
   DART_FORCE_INLINE
   void CheckHeapPointerStore(ObjectPtr value, Thread* thread) {
     uint32_t source_tags = this->tags_;
@@ -1643,50 +1651,41 @@
    public:
     // Most of the time try_index will be small and merged field will fit into
     // one byte.
-    static int32_t Encode(intptr_t kind,
-                          intptr_t try_index,
-                          intptr_t yield_index) {
-      const intptr_t kind_shift = Utils::ShiftForPowerOfTwo(kind);
-      ASSERT(Utils::IsUint(kKindShiftSize, kind_shift));
-      ASSERT(Utils::IsInt(kTryIndexSize, try_index));
-      ASSERT(Utils::IsInt(kYieldIndexSize, yield_index));
-      return (yield_index << kYieldIndexPos) | (try_index << kTryIndexPos) |
-             (kind_shift << kKindShiftPos);
+    static uint32_t Encode(intptr_t kind,
+                           intptr_t try_index,
+                           intptr_t yield_index) {
+      return KindShiftBits::encode(Utils::ShiftForPowerOfTwo(kind)) |
+             TryIndexBits::encode(try_index + 1) |
+             YieldIndexBits::encode(yield_index + 1);
     }
 
-    static intptr_t DecodeKind(int32_t kind_and_metadata) {
-      const intptr_t kKindShiftMask = (1 << kKindShiftSize) - 1;
-      return 1 << (kind_and_metadata & kKindShiftMask);
+    static intptr_t DecodeKind(uint32_t kind_and_metadata) {
+      return 1 << KindShiftBits::decode(kind_and_metadata);
     }
 
-    static intptr_t DecodeTryIndex(int32_t kind_and_metadata) {
-      // Arithmetic shift.
-      return static_cast<int32_t>(static_cast<uint32_t>(kind_and_metadata)
-                                  << (32 - (kTryIndexPos + kTryIndexSize))) >>
-             (32 - kTryIndexSize);
+    static intptr_t DecodeTryIndex(uint32_t kind_and_metadata) {
+      return TryIndexBits::decode(kind_and_metadata) - 1;
     }
 
-    static intptr_t DecodeYieldIndex(int32_t kind_and_metadata) {
-      // Arithmetic shift.
-      return static_cast<int32_t>(
-                 static_cast<uint32_t>(kind_and_metadata)
-                 << (32 - (kYieldIndexPos + kYieldIndexSize))) >>
-             (32 - kYieldIndexSize);
+    static intptr_t DecodeYieldIndex(uint32_t kind_and_metadata) {
+      return YieldIndexBits::decode(kind_and_metadata) - 1;
     }
 
    private:
-    static const intptr_t kKindShiftPos = 0;
     static const intptr_t kKindShiftSize = 3;
-    // Is kKindShiftSize enough bits?
-    COMPILE_ASSERT(kLastKind <= 1 << ((1 << kKindShiftSize) - 1));
-
-    static const intptr_t kTryIndexPos = kKindShiftPos + kKindShiftSize;
     static const intptr_t kTryIndexSize = 10;
+    static const intptr_t kYieldIndexSize = 32 - kKindShiftSize - kTryIndexSize;
 
-    static const intptr_t kYieldIndexPos = kTryIndexPos + kTryIndexSize;
-    static const intptr_t kYieldIndexSize = 32 - kYieldIndexPos;
-
-    COMPILE_ASSERT((kYieldIndexPos + kYieldIndexSize) == 32);
+    class KindShiftBits
+        : public BitField<uint32_t, intptr_t, 0, kKindShiftSize> {};
+    class TryIndexBits : public BitField<uint32_t,
+                                         intptr_t,
+                                         KindShiftBits::kNextBit,
+                                         kTryIndexSize> {};
+    class YieldIndexBits : public BitField<uint32_t,
+                                           intptr_t,
+                                           TryIndexBits::kNextBit,
+                                           kYieldIndexSize> {};
   };
 
  private:
@@ -2562,7 +2561,7 @@
   friend class ICData;            // For high performance access.
   friend class SubtypeTestCache;  // For high performance access.
 
-  friend class HeapPage;
+  friend class OldPage;
 };
 
 class ImmutableArrayLayout : public ArrayLayout {
diff --git a/runtime/vm/runtime_entry.cc b/runtime/vm/runtime_entry.cc
index ecd35ca..36ec9f8 100644
--- a/runtime/vm/runtime_entry.cc
+++ b/runtime/vm/runtime_entry.cc
@@ -179,13 +179,14 @@
       zone,
       Smi::New(InvocationMirror::EncodeType(InvocationMirror::kDynamic, kind)));
 
-  const Array& args = Array::Handle(zone, Array::New(6));
+  const Array& args = Array::Handle(zone, Array::New(7));
   args.SetAt(0, /* instance */ Object::null_object());
   args.SetAt(1, selector);
   args.SetAt(2, invocation_type);
-  args.SetAt(3, /* func_type_args */ Object::null_object());
-  args.SetAt(4, /* func_args */ Object::null_object());
-  args.SetAt(5, /* func_arg_names */ Object::null_object());
+  args.SetAt(3, /* func_type_args_length */ Object::smi_zero());
+  args.SetAt(4, /* func_type_args */ Object::null_object());
+  args.SetAt(5, /* func_args */ Object::null_object());
+  args.SetAt(6, /* func_arg_names */ Object::null_object());
   Exceptions::ThrowByType(Exceptions::kNoSuchMethod, args);
 }
 
diff --git a/runtime/vm/scopes.h b/runtime/vm/scopes.h
index 6d6166f..8cf342c 100644
--- a/runtime/vm/scopes.h
+++ b/runtime/vm/scopes.h
@@ -151,10 +151,7 @@
 
   // Returns true if this local variable represents a parameter that needs type
   // check when we enter the function.
-  bool needs_type_check() const {
-    return (type_check_mode_ == kDoTypeCheck) &&
-           Isolate::Current()->should_emit_strong_mode_checks();
-  }
+  bool needs_type_check() const { return (type_check_mode_ == kDoTypeCheck); }
 
   // Returns true if this local variable represents a parameter which type is
   // guaranteed by the caller.
diff --git a/runtime/vm/service.cc b/runtime/vm/service.cc
index fafe51d..62abc18 100644
--- a/runtime/vm/service.cc
+++ b/runtime/vm/service.cc
@@ -1685,8 +1685,7 @@
     return Object::null();
   }
 
-  ObjectIdRing* ring = thread->isolate()->object_id_ring();
-  ASSERT(ring != NULL);
+  ObjectIdRing* ring = thread->isolate()->EnsureObjectIdRing();
   intptr_t id = -1;
   if (!GetIntegerId(arg, &id)) {
     *kind = ObjectIdRing::kInvalid;
diff --git a/runtime/vm/service_test.cc b/runtime/vm/service_test.cc
index 11fb555..152765e 100644
--- a/runtime/vm/service_test.cc
+++ b/runtime/vm/service_test.cc
@@ -186,7 +186,7 @@
 ISOLATE_UNIT_TEST_CASE(Service_IdZones) {
   Zone* zone = thread->zone();
   Isolate* isolate = thread->isolate();
-  ObjectIdRing* ring = isolate->object_id_ring();
+  ObjectIdRing* ring = isolate->EnsureObjectIdRing();
 
   const String& test_a = String::Handle(zone, String::New("a"));
   const String& test_b = String::Handle(zone, String::New("b"));
@@ -384,7 +384,7 @@
   const PcDescriptors& descriptors =
       PcDescriptors::Handle(code_c.pc_descriptors());
   EXPECT(!descriptors.IsNull());
-  ObjectIdRing* ring = isolate->object_id_ring();
+  ObjectIdRing* ring = isolate->EnsureObjectIdRing();
   intptr_t id = ring->GetIdForObject(descriptors.raw());
 
   // Build a mock message handler and wrap it in a dart port.
@@ -455,7 +455,7 @@
   const LocalVarDescriptors& descriptors =
       LocalVarDescriptors::Handle(code_c.GetLocalVarDescriptors());
   // Generate an ID for this object.
-  ObjectIdRing* ring = isolate->object_id_ring();
+  ObjectIdRing* ring = isolate->EnsureObjectIdRing();
   intptr_t id = ring->GetIdForObject(descriptors.raw());
 
   // Build a mock message handler and wrap it in a dart port.
diff --git a/runtime/vm/simulator_arm.cc b/runtime/vm/simulator_arm.cc
index 5ceb7e4..ab712c9 100644
--- a/runtime/vm/simulator_arm.cc
+++ b/runtime/vm/simulator_arm.cc
@@ -1372,8 +1372,8 @@
 typedef double (*SimulatorLeafFloatRuntimeCall)(double d0, double d1);
 
 // Calls to native Dart functions are based on this interface.
-typedef void (*SimulatorBootstrapNativeCall)(NativeArguments* arguments);
-typedef void (*SimulatorNativeCall)(NativeArguments* arguments, uword target);
+typedef void (*SimulatorNativeCallWrapper)(Dart_NativeArguments arguments,
+                                           Dart_NativeFunction target);
 
 void Simulator::SupervisorCall(Instr* instr) {
   int svc = instr->SvcField();
@@ -1443,22 +1443,15 @@
             set_register(R0, r0);
             set_register(R1, r1);
           }
-        } else if (redirection->call_kind() == kBootstrapNativeCall) {
-          ASSERT(redirection->argument_count() == 1);
-          NativeArguments* arguments;
-          arguments = reinterpret_cast<NativeArguments*>(get_register(R0));
-          SimulatorBootstrapNativeCall target =
-              reinterpret_cast<SimulatorBootstrapNativeCall>(external);
-          target(arguments);
-          set_register(R0, icount_);  // Zap result register from void function.
         } else {
-          ASSERT(redirection->call_kind() == kNativeCall);
-          NativeArguments* arguments;
-          arguments = reinterpret_cast<NativeArguments*>(get_register(R0));
-          uword target_func = get_register(R1);
-          SimulatorNativeCall target =
-              reinterpret_cast<SimulatorNativeCall>(external);
-          target(arguments, target_func);
+          ASSERT(redirection->call_kind() == kNativeCallWrapper);
+          SimulatorNativeCallWrapper wrapper =
+              reinterpret_cast<SimulatorNativeCallWrapper>(external);
+          Dart_NativeArguments arguments =
+              reinterpret_cast<Dart_NativeArguments>(get_register(R0));
+          Dart_NativeFunction target_func =
+              reinterpret_cast<Dart_NativeFunction>(get_register(R1));
+          wrapper(arguments, target_func);
           set_register(R0, icount_);  // Zap result register from void function.
           set_register(R1, icount_);
         }
diff --git a/runtime/vm/simulator_arm.h b/runtime/vm/simulator_arm.h
index a682fb7..8074d56 100644
--- a/runtime/vm/simulator_arm.h
+++ b/runtime/vm/simulator_arm.h
@@ -108,8 +108,7 @@
     kRuntimeCall,
     kLeafRuntimeCall,
     kLeafFloatRuntimeCall,
-    kBootstrapNativeCall,
-    kNativeCall
+    kNativeCallWrapper
   };
   static uword RedirectExternalReference(uword function,
                                          CallKind call_kind,
diff --git a/runtime/vm/simulator_arm64.cc b/runtime/vm/simulator_arm64.cc
index 312c12f..e044026 100644
--- a/runtime/vm/simulator_arm64.cc
+++ b/runtime/vm/simulator_arm64.cc
@@ -1548,8 +1548,8 @@
                                                 double d7);
 
 // Calls to native Dart functions are based on this interface.
-typedef void (*SimulatorBootstrapNativeCall)(NativeArguments* arguments);
-typedef void (*SimulatorNativeCall)(NativeArguments* arguments, uword target);
+typedef void (*SimulatorNativeCallWrapper)(Dart_NativeArguments arguments,
+                                           Dart_NativeFunction target);
 
 void Simulator::DoRedirectedCall(Instr* instr) {
   SimulatorSetjmpBuffer buffer(this);
@@ -1602,23 +1602,15 @@
       const double res = target(d0, d1, d2, d3, d4, d5, d6, d7);
       set_vregisterd(V0, 0, bit_cast<int64_t, double>(res));
       set_vregisterd(V0, 1, 0);
-    } else if (redirection->call_kind() == kBootstrapNativeCall) {
-      ASSERT(redirection->argument_count() == 1);
-      NativeArguments* arguments;
-      arguments = reinterpret_cast<NativeArguments*>(get_register(R0));
-      SimulatorBootstrapNativeCall target =
-          reinterpret_cast<SimulatorBootstrapNativeCall>(external);
-      target(arguments);
-      // Zap result register from void function.
-      set_register(instr, R0, icount_);
     } else {
-      ASSERT(redirection->call_kind() == kNativeCall);
-      NativeArguments* arguments;
-      arguments = reinterpret_cast<NativeArguments*>(get_register(R0));
-      uword target_func = get_register(R1);
-      SimulatorNativeCall target =
-          reinterpret_cast<SimulatorNativeCall>(external);
-      target(arguments, target_func);
+      ASSERT(redirection->call_kind() == kNativeCallWrapper);
+      SimulatorNativeCallWrapper wrapper =
+          reinterpret_cast<SimulatorNativeCallWrapper>(external);
+      Dart_NativeArguments arguments =
+          reinterpret_cast<Dart_NativeArguments>(get_register(R0));
+      Dart_NativeFunction target =
+          reinterpret_cast<Dart_NativeFunction>(get_register(R1));
+      wrapper(arguments, target);
       // Zap result register from void function.
       set_register(instr, R0, icount_);
       set_register(instr, R1, icount_);
diff --git a/runtime/vm/simulator_arm64.h b/runtime/vm/simulator_arm64.h
index 3d00d23..5d82fb8 100644
--- a/runtime/vm/simulator_arm64.h
+++ b/runtime/vm/simulator_arm64.h
@@ -102,8 +102,7 @@
     kRuntimeCall,
     kLeafRuntimeCall,
     kLeafFloatRuntimeCall,
-    kBootstrapNativeCall,
-    kNativeCall
+    kNativeCallWrapper
   };
   static uword RedirectExternalReference(uword function,
                                          CallKind call_kind,
diff --git a/runtime/vm/snapshot.h b/runtime/vm/snapshot.h
index cb43fc2..e78bd6a 100644
--- a/runtime/vm/snapshot.h
+++ b/runtime/vm/snapshot.h
@@ -155,7 +155,7 @@
 
   template <typename T>
   T Read(intptr_t offset) const {
-    return ReadUnaligned(
+    return LoadUnaligned(
         reinterpret_cast<const T*>(reinterpret_cast<uword>(this) + offset));
   }
 
diff --git a/runtime/vm/stack_frame.cc b/runtime/vm/stack_frame.cc
index a073259..3c5b17b 100644
--- a/runtime/vm/stack_frame.cc
+++ b/runtime/vm/stack_frame.cc
@@ -114,9 +114,12 @@
   }
 
   isolate_group = this->isolate_group();
-  if (isolate_group->object_store()->code_order_table() != Object::null()) {
-    auto rct = isolate_group->reverse_pc_lookup_cache();
-    if (rct->Contains(pc())) return isolate_group;
+  auto* object_store = isolate_group->object_store();
+  if (object_store != nullptr) {
+    if (object_store->code_order_table() != Object::null()) {
+      auto rct = isolate_group->reverse_pc_lookup_cache();
+      if (rct->Contains(pc())) return isolate_group;
+    }
   }
 
   return nullptr;
diff --git a/runtime/vm/thread_pool.cc b/runtime/vm/thread_pool.cc
index d307f5f..0199a1b 100644
--- a/runtime/vm/thread_pool.cc
+++ b/runtime/vm/thread_pool.cc
@@ -34,10 +34,28 @@
   }
 }
 
-ThreadPool::ThreadPool() : all_workers_dead_(false) {}
+ThreadPool::ThreadPool(uintptr_t max_pool_size)
+    : all_workers_dead_(false), max_pool_size_(max_pool_size) {}
 
 ThreadPool::~ThreadPool() {
-  TriggerShutdown();
+  Shutdown();
+}
+
+void ThreadPool::Shutdown() {
+  {
+    MonitorLocker ml(&pool_monitor_);
+
+    // Prevent scheduling of new tasks.
+    shutting_down_ = true;
+
+    if (running_workers_.IsEmpty() && idle_workers_.IsEmpty()) {
+      // All workers have already died.
+      all_workers_dead_ = true;
+    } else {
+      // Tell workers to drain remaining work and then shut down.
+      ml.NotifyAll();
+    }
+  }
 
   // Wait until all workers are dead. Any new death will notify the exit
   // monitor.
@@ -47,14 +65,20 @@
       eml.Wait();
     }
   }
+  ASSERT(count_idle_ == 0);
+  ASSERT(count_running_ == 0);
+  ASSERT(idle_workers_.IsEmpty());
+  ASSERT(running_workers_.IsEmpty());
 
-  // Join all dead workers.
   WorkerList dead_workers_to_join;
   {
     MonitorLocker ml(&pool_monitor_);
     ObtainDeadWorkersLocked(&dead_workers_to_join);
   }
   JoinDeadWorkersLocked(&dead_workers_to_join);
+
+  ASSERT(count_dead_ == 0);
+  ASSERT(dead_workers_.IsEmpty());
 }
 
 bool ThreadPool::RunImpl(std::unique_ptr<Task> task) {
@@ -91,6 +115,14 @@
       RunningToIdleLocked(worker);
     }
 
+    if (running_workers_.IsEmpty()) {
+      ASSERT(tasks_.IsEmpty());
+      OnEnterIdleLocked(&ml);
+      if (!tasks_.IsEmpty()) {
+        continue;
+      }
+    }
+
     if (shutting_down_) {
       ObtainDeadWorkersLocked(&dead_workers_to_join);
       IdleToDeadLocked(worker);
@@ -125,21 +157,6 @@
   JoinDeadWorkersLocked(&dead_workers_to_join);
 }
 
-void ThreadPool::TriggerShutdown() {
-  MonitorLocker ml(&pool_monitor_);
-
-  // Prevent scheduling of new tasks.
-  shutting_down_ = true;
-
-  if (running_workers_.IsEmpty() && idle_workers_.IsEmpty()) {
-    // All workers have already died.
-    all_workers_dead_ = true;
-  } else {
-    // Tell workers to drain remaining work and then shut down.
-    ml.NotifyAll();
-  }
-}
-
 void ThreadPool::IdleToRunningLocked(Worker* worker) {
   ASSERT(idle_workers_.ContainsForDebugging(worker));
   idle_workers_.Remove(worker);
@@ -209,6 +226,15 @@
     return nullptr;
   }
 
+  // If we have maxed out the number of threads running, we will not start a
+  // new one.
+  if (max_pool_size_ > 0 && (count_idle_ + count_running_) >= max_pool_size_) {
+    if (!idle_workers_.IsEmpty()) {
+      ml->Notify();
+    }
+    return nullptr;
+  }
+
   // Otherwise start a new worker.
   auto new_worker = new Worker(this);
   idle_workers_.Append(new_worker);
@@ -234,6 +260,8 @@
   Worker* worker = reinterpret_cast<Worker*>(args);
   ThreadPool* pool = worker->pool_;
 
+  os_thread->owning_thread_pool_ = pool;
+
   // Once the worker quits it needs to be joined.
   worker->join_id_ = OSThread::GetCurrentThreadJoinId(os_thread);
 
@@ -246,6 +274,8 @@
 
   pool->WorkerLoop(worker);
 
+  os_thread->owning_thread_pool_ = nullptr;
+
   // Call the thread exit hook here to notify the embedder that the
   // thread pool thread is exiting.
   if (Dart::thread_exit_callback() != NULL) {
diff --git a/runtime/vm/thread_pool.h b/runtime/vm/thread_pool.h
index 08fc19d..c0c532c 100644
--- a/runtime/vm/thread_pool.h
+++ b/runtime/vm/thread_pool.h
@@ -34,7 +34,10 @@
     DISALLOW_COPY_AND_ASSIGN(Task);
   };
 
-  ThreadPool();
+  explicit ThreadPool(uintptr_t max_pool_size = 0);
+
+  // Prevent scheduling of new tasks, wait until all pending tasks are done
+  // and join worker threads.
   virtual ~ThreadPool();
 
   // Runs a task on the thread pool.
@@ -43,8 +46,8 @@
     return RunImpl(std::unique_ptr<Task>(new T(std::forward<Args>(args)...)));
   }
 
-  // Trigger shutdown, prevents scheduling of new tasks.
-  void TriggerShutdown();
+  // Triggers shutdown, prevents scheduling of new tasks.
+  void Shutdown();
 
   // Exposed for unit test in thread_pool_test.cc
   uint64_t workers_started() const { return count_idle_ + count_running_; }
@@ -74,6 +77,19 @@
     DISALLOW_COPY_AND_ASSIGN(Worker);
   };
 
+ protected:
+  // Called when the thread pool turns idle.
+  //
+  // Subclasses can override this to perform some action.
+  // NOTE: While this function is running the thread pool will be locked.
+  virtual void OnEnterIdleLocked(MonitorLocker* ml) {}
+
+  // Whether a shutdown was requested.
+  bool ShuttingDownLocked() { return shutting_down_; }
+
+  // Whether new tasks are ready to be run.
+  bool TasksWaitingToRunLocked() { return !tasks_.IsEmpty(); }
+
  private:
   using TaskList = IntrusiveDList<Task>;
   using WorkerList = IntrusiveDList<Worker>;
@@ -103,6 +119,8 @@
   Monitor exit_monitor_;
   std::atomic<bool> all_workers_dead_;
 
+  uintptr_t max_pool_size_ = 0;
+
   DISALLOW_COPY_AND_ASSIGN(ThreadPool);
 };
 
diff --git a/runtime/vm/virtual_memory_test.cc b/runtime/vm/virtual_memory_test.cc
index 304383a..8ef5d82 100644
--- a/runtime/vm/virtual_memory_test.cc
+++ b/runtime/vm/virtual_memory_test.cc
@@ -51,7 +51,7 @@
 }
 
 VM_UNIT_TEST_CASE(AllocateAlignedVirtualMemory) {
-  intptr_t kHeapPageSize = kPageSize;
+  intptr_t kHeapPageSize = kOldPageSize;
   intptr_t kVirtualPageSize = 4096;
 
   intptr_t kIterations = kHeapPageSize / kVirtualPageSize;
diff --git a/sdk/lib/_internal/js_dev_runtime/patch/core_patch.dart b/sdk/lib/_internal/js_dev_runtime/patch/core_patch.dart
index dea22f5..76ff542 100644
--- a/sdk/lib/_internal/js_dev_runtime/patch/core_patch.dart
+++ b/sdk/lib/_internal/js_dev_runtime/patch/core_patch.dart
@@ -2825,7 +2825,7 @@
           // There is already one in the cachedBits.
           roundUp();
         } else {
-          for (int i = digitIndex; digitIndex >= 0; i--) {
+          for (int i = digitIndex; i >= 0; i--) {
             if (_digits[i] != 0) {
               roundUp();
               break;
diff --git a/sdk/lib/_internal/js_runtime/lib/core_patch.dart b/sdk/lib/_internal/js_runtime/lib/core_patch.dart
index 20f023e..4a557d4 100644
--- a/sdk/lib/_internal/js_runtime/lib/core_patch.dart
+++ b/sdk/lib/_internal/js_runtime/lib/core_patch.dart
@@ -2738,7 +2738,7 @@
           // There is already one in the cachedBits.
           roundUp();
         } else {
-          for (int i = digitIndex; digitIndex >= 0; i--) {
+          for (int i = digitIndex; i >= 0; i--) {
             if (_digits[i] != 0) {
               roundUp();
               break;
diff --git a/sdk/lib/_internal/vm/bin/socket_patch.dart b/sdk/lib/_internal/vm/bin/socket_patch.dart
index 94d6903..8d2e06c 100644
--- a/sdk/lib/_internal/vm/bin/socket_patch.dart
+++ b/sdk/lib/_internal/vm/bin/socket_patch.dart
@@ -1401,7 +1401,6 @@
 class _RawServerSocket extends Stream<RawSocket> implements RawServerSocket {
   final _NativeSocket _socket;
   StreamController<RawSocket> _controller;
-  ReceivePort _referencePort;
   bool _v6Only;
 
   static Future<_RawServerSocket> bind(
@@ -1426,27 +1425,24 @@
         onCancel: _onSubscriptionStateChange,
         onPause: _onPauseStateChange,
         onResume: _onPauseStateChange);
-    _socket.setHandlers(read: zone.bindCallbackGuarded(() {
-      while (_socket.connections > 0) {
-        var socket = _socket.accept();
-        if (socket == null) return;
-        if (!const bool.fromEnvironment("dart.vm.product")) {
-          _SocketProfile.collectNewSocket(socket.nativeGetSocketId(),
-              _tcpSocket, socket.address, socket.port);
-        }
-        _controller.add(_RawSocket(socket));
-        if (_controller.isPaused) return;
-      }
-    }), error: zone.bindBinaryCallbackGuarded((e, st) {
-      _controller.addError(e, st);
-      _controller.close();
-    }), destroyed: () {
-      _controller.close();
-      if (_referencePort != null) {
-        _referencePort.close();
-        _referencePort = null;
-      }
-    });
+    _socket.setHandlers(
+        read: zone.bindCallbackGuarded(() {
+          while (_socket.connections > 0) {
+            var socket = _socket.accept();
+            if (socket == null) return;
+            if (!const bool.fromEnvironment("dart.vm.product")) {
+              _SocketProfile.collectNewSocket(socket.nativeGetSocketId(),
+                  _tcpSocket, socket.address, socket.port);
+            }
+            _controller.add(_RawSocket(socket));
+            if (_controller.isPaused) return;
+          }
+        }),
+        error: zone.bindBinaryCallbackGuarded((e, st) {
+          _controller.addError(e, st);
+          _controller.close();
+        }),
+        destroyed: () => _controller.close());
     return _controller.stream.listen(onData,
         onError: onError, onDone: onDone, cancelOnError: cancelOnError);
   }
@@ -1456,13 +1452,7 @@
   InternetAddress get address => _socket.address;
 
   Future<RawServerSocket> close() {
-    return _socket.close().then<RawServerSocket>((_) {
-      if (_referencePort != null) {
-        _referencePort.close();
-        _referencePort = null;
-      }
-      return this;
-    });
+    return _socket.close().then<RawServerSocket>((_) => this);
   }
 
   void _pause() {
diff --git a/sdk/lib/_internal/vm/lib/bigint_patch.dart b/sdk/lib/_internal/vm/lib/bigint_patch.dart
index edac94b..0712115 100644
--- a/sdk/lib/_internal/vm/lib/bigint_patch.dart
+++ b/sdk/lib/_internal/vm/lib/bigint_patch.dart
@@ -2409,7 +2409,7 @@
           // There is already one in the cachedBits.
           roundUp();
         } else {
-          for (int i = digitIndex; digitIndex >= 0; i--) {
+          for (int i = digitIndex; i >= 0; i--) {
             if (_digits[i] != 0) {
               roundUp();
               break;
diff --git a/sdk/lib/_internal/vm/lib/core_patch.dart b/sdk/lib/_internal/vm/lib/core_patch.dart
index eaf9d93..81bb93d 100644
--- a/sdk/lib/_internal/vm/lib/core_patch.dart
+++ b/sdk/lib/_internal/vm/lib/core_patch.dart
@@ -100,19 +100,19 @@
 // implement sync* generator functions. A sync* generator allocates
 // and returns a new _SyncIterable object.
 
-typedef bool _SyncGeneratorCallback<T>(_SyncIterator<T> iterator);
+typedef _SyncGeneratorCallback<T> = bool Function(_SyncIterator<T>);
+typedef _SyncGeneratorCallbackCallback<T> = _SyncGeneratorCallback<T>
+    Function();
 
 class _SyncIterable<T> extends IterableBase<T> {
-  // _moveNextFn is the closurized body of the generator function.
-  final _SyncGeneratorCallback<T> _moveNextFn;
+  // Closure that effectively "clones" the inner _moveNextFn.
+  // This means a _SyncIterable creates _SyncIterators that do not share state.
+  final _SyncGeneratorCallbackCallback<T> _moveNextFnMaker;
 
-  const _SyncIterable(this._moveNextFn);
+  const _SyncIterable(this._moveNextFnMaker);
 
   Iterator<T> get iterator {
-    // Note: _Closure._clone returns _Closure which is not related to
-    // _SyncGeneratorCallback, which means we need explicit cast.
-    return new _SyncIterator<T>(unsafeCast<_SyncGeneratorCallback<T>>(
-        unsafeCast<_Closure>(_moveNextFn)._clone()));
+    return _SyncIterator<T>(_moveNextFnMaker());
   }
 }
 
diff --git a/sdk/lib/_internal/vm/lib/errors_patch.dart b/sdk/lib/_internal/vm/lib/errors_patch.dart
index ee0d608..add6b29 100644
--- a/sdk/lib/_internal/vm/lib/errors_patch.dart
+++ b/sdk/lib/_internal/vm/lib/errors_patch.dart
@@ -180,19 +180,13 @@
 
 @patch
 class NoSuchMethodError {
-  // Deprecated members to be removed.
-  Symbol _memberName;
-  List _arguments;
-  Map<Symbol, dynamic> _namedArguments;
-  List _existingArgumentNames;
-
   final Object _receiver;
-  final _InvocationMirror _invocation;
+  final Invocation _invocation;
 
   @patch
   NoSuchMethodError.withInvocation(Object receiver, Invocation invocation)
       : _receiver = receiver,
-        _invocation = invocation as _InvocationMirror;
+        _invocation = invocation;
 
   static void _throwNewInvocation(Object receiver, Invocation invocation) {
     throw new NoSuchMethodError.withInvocation(receiver, invocation);
@@ -202,44 +196,29 @@
   // method at compile time. The receiver is actually the literal class of the
   // unresolved method.
   @pragma("vm:entry-point", "call")
-  static void _throwNew(Object receiver, String memberName, int invocation_type,
-      Object typeArguments, List arguments, List argumentNames) {
-    throw new NoSuchMethodError._withType(receiver, memberName, invocation_type,
-        typeArguments, arguments, argumentNames);
-  }
-
-  static void _throwNewIfNotLoaded(
-      _LibraryPrefix prefix,
+  static void _throwNew(
       Object receiver,
       String memberName,
-      int invocation_type,
+      int invocationType,
+      int typeArgumentsLength,
       Object typeArguments,
       List arguments,
       List argumentNames) {
-    if (!prefix.isLoaded()) {
-      _throwNew(receiver, memberName, invocation_type, typeArguments, arguments,
-          argumentNames);
-    }
+    throw new NoSuchMethodError._withType(receiver, memberName, invocationType,
+        typeArgumentsLength, typeArguments, arguments, argumentNames);
   }
 
-  // TODO(regis): Deprecated member still used by dart2js to be removed.
-  // Remember the type from the invocation mirror or static compilation
-  // analysis when thrown directly with _throwNew. A negative value means
-  // that no information is available.
-  int _invocation_type;
-
-  // TODO(regis): Deprecated constructor still used by dart2js to be removed.
+  // Deprecated constructor.
   @patch
-  NoSuchMethodError(Object receiver, Symbol memberName,
-      List positionalArguments, Map<Symbol, dynamic> namedArguments,
-      [List existingArgumentNames = null])
-      : _receiver = receiver,
-        _invocation = null,
-        _memberName = memberName,
-        _arguments = positionalArguments,
-        _namedArguments = namedArguments,
-        _existingArgumentNames = existingArgumentNames,
-        _invocation_type = -1;
+  NoSuchMethodError(this._receiver, Symbol memberName, List positionalArguments,
+      Map<Symbol, dynamic> namedArguments,
+      [List existingArgumentNames = null]) // existingArgumentNames ignored.
+      : this._invocation = new _InvocationMirror._withType(
+            memberName,
+            _InvocationMirror._UNINITIALIZED,
+            null, // Type arguments not supported in deprecated constructor.
+            positionalArguments,
+            namedArguments);
 
   // Helper to build a map of named arguments.
   static Map<Symbol, dynamic> _NamedArgumentsMap(
@@ -247,8 +226,8 @@
     Map<Symbol, dynamic> namedArguments = new Map<Symbol, dynamic>();
     int numPositionalArguments = arguments.length - argumentNames.length;
     for (int i = 0; i < argumentNames.length; i++) {
-      var arg_value = arguments[numPositionalArguments + i];
-      namedArguments[new Symbol(argumentNames[i])] = arg_value;
+      final argValue = arguments[numPositionalArguments + i];
+      namedArguments[new Symbol(argumentNames[i])] = argValue;
     }
     return namedArguments;
   }
@@ -261,17 +240,16 @@
   NoSuchMethodError._withType(
       this._receiver,
       String memberName,
-      int invocation_type,
+      int invocationType,
+      int typeArgumentsLength, // Needed with all-dynamic (null) typeArguments.
       Object typeArguments,
       List arguments,
       List argumentNames)
       : this._invocation = new _InvocationMirror._withType(
             new Symbol(memberName),
-            invocation_type,
-            typeArguments != null
-                // TODO(33073): Use actual count of type arguments in place of 0.
-                ? _InvocationMirror._unpackTypeArguments(typeArguments, 0)
-                : null,
+            invocationType,
+            _InvocationMirror._unpackTypeArguments(
+                typeArguments, typeArgumentsLength),
             argumentNames != null
                 ? arguments.sublist(0, arguments.length - argumentNames.length)
                 : arguments,
@@ -284,295 +262,207 @@
 
   @patch
   String toString() {
-    // TODO(regis): Remove this null check once dart2js is updated.
-    if (_invocation == null) {
-      // Use deprecated version of toString.
-      return _toStringDeprecated();
-    }
-    String memberName =
-        internal.Symbol.computeUnmangledName(_invocation.memberName);
-    var level = (_invocation._type >> _InvocationMirror._LEVEL_SHIFT) &
-        _InvocationMirror._LEVEL_MASK;
-    var kind = _invocation._type & _InvocationMirror._KIND_MASK;
-    if (kind == _InvocationMirror._LOCAL_VAR) {
-      return "NoSuchMethodError: Cannot assign to final variable '$memberName'";
-    }
-
-    StringBuffer typeArgumentsBuf = null;
-    var typeArguments = _invocation.typeArguments;
-    if ((typeArguments != null) && (typeArguments.length > 0)) {
-      typeArgumentsBuf = new StringBuffer();
-      typeArgumentsBuf.write("<");
-      for (int i = 0; i < typeArguments.length; i++) {
-        if (i > 0) {
-          typeArgumentsBuf.write(", ");
-        }
-        typeArgumentsBuf.write(Error.safeToString(typeArguments[i]));
+    var invocation = _invocation;
+    if (invocation is _InvocationMirror) {
+      String memberName =
+          internal.Symbol.computeUnmangledName(invocation.memberName);
+      var level = (invocation._type >> _InvocationMirror._LEVEL_SHIFT) &
+          _InvocationMirror._LEVEL_MASK;
+      var kind = invocation._type & _InvocationMirror._KIND_MASK;
+      if (kind == _InvocationMirror._LOCAL_VAR) {
+        return "NoSuchMethodError: Cannot assign to final variable '$memberName'";
       }
-      typeArgumentsBuf.write(">");
-    }
-    StringBuffer argumentsBuf = new StringBuffer();
-    var positionalArguments = _invocation.positionalArguments;
-    int argumentCount = 0;
-    if (positionalArguments != null) {
-      for (; argumentCount < positionalArguments.length; argumentCount++) {
-        if (argumentCount > 0) {
-          argumentsBuf.write(", ");
-        }
-        argumentsBuf
-            .write(Error.safeToString(positionalArguments[argumentCount]));
-      }
-    }
-    var namedArguments = _invocation.namedArguments;
-    if (namedArguments != null) {
-      namedArguments.forEach((Symbol key, var value) {
-        if (argumentCount > 0) {
-          argumentsBuf.write(", ");
-        }
-        argumentsBuf.write(internal.Symbol.computeUnmangledName(key));
-        argumentsBuf.write(": ");
-        argumentsBuf.write(Error.safeToString(value));
-        argumentCount++;
-      });
-    }
-    String existingSig =
-        _existingMethodSignature(_receiver, memberName, _invocation._type);
-    String argsMsg = existingSig != null ? " with matching arguments" : "";
 
-    String kindBuf;
-    if (kind >= 0 && kind < 5) {
-      kindBuf = (const [
-        "method",
-        "getter",
-        "setter",
-        "getter or setter",
-        "variable"
-      ])[kind];
-    }
-
-    StringBuffer msgBuf = new StringBuffer("NoSuchMethodError: ");
-    bool is_type_call = false;
-    switch (level) {
-      case _InvocationMirror._DYNAMIC:
-        {
-          if (_receiver == null) {
-            if (existingSig != null) {
-              msgBuf.writeln("The null object does not have a $kindBuf "
-                  "'$memberName'$argsMsg.");
-            } else {
-              msgBuf.writeln("The $kindBuf '$memberName' was called on null.");
-            }
-          } else {
-            if (_receiver is _Closure) {
-              msgBuf.writeln("Closure call with mismatched arguments: "
-                  "function '$memberName'");
-            } else if (_receiver is _Type && memberName == "call") {
-              is_type_call = true;
-              String name = _receiver.toString();
-              msgBuf.writeln("Attempted to use type '$name' as a function. "
-                  "Since types do not define a method 'call', this is not "
-                  "possible. Did you intend to call the $name constructor and "
-                  "forget the 'new' operator?");
-            } else {
-              msgBuf.writeln("Class '${_receiver.runtimeType}' has no instance "
-                  "$kindBuf '$memberName'$argsMsg.");
-            }
+      StringBuffer typeArgumentsBuf = null;
+      var typeArguments = invocation.typeArguments;
+      if ((typeArguments != null) && (typeArguments.length > 0)) {
+        typeArgumentsBuf = new StringBuffer();
+        typeArgumentsBuf.write("<");
+        for (int i = 0; i < typeArguments.length; i++) {
+          if (i > 0) {
+            typeArgumentsBuf.write(", ");
           }
-          break;
+          typeArgumentsBuf.write(Error.safeToString(typeArguments[i]));
         }
-      case _InvocationMirror._SUPER:
-        {
-          msgBuf.writeln("Super class of class '${_receiver.runtimeType}' has "
-              "no instance $kindBuf '$memberName'$argsMsg.");
-          memberName = "super.$memberName";
-          break;
-        }
-      case _InvocationMirror._STATIC:
-        {
-          msgBuf.writeln("No static $kindBuf '$memberName'$argsMsg "
-              "declared in class '$_receiver'.");
-          break;
-        }
-      case _InvocationMirror._CONSTRUCTOR:
-        {
-          msgBuf.writeln("No constructor '$memberName'$argsMsg declared "
-              "in class '$_receiver'.");
-          memberName = "new $memberName";
-          break;
-        }
-      case _InvocationMirror._TOP_LEVEL:
-        {
-          msgBuf.writeln("No top-level $kindBuf '$memberName'$argsMsg "
-              "declared.");
-          break;
-        }
-    }
-
-    if (level == _InvocationMirror._TOP_LEVEL) {
-      msgBuf.writeln("Receiver: top-level");
-    } else {
-      msgBuf.writeln("Receiver: ${Error.safeToString(_receiver)}");
-    }
-
-    if (kind == _InvocationMirror._METHOD) {
-      String m = is_type_call ? "$_receiver" : "$memberName";
-      msgBuf.write("Tried calling: $m");
-      if (typeArgumentsBuf != null) {
-        msgBuf.write(typeArgumentsBuf);
+        typeArgumentsBuf.write(">");
       }
-      msgBuf.write("($argumentsBuf)");
-    } else if (argumentCount == 0) {
-      msgBuf.write("Tried calling: $memberName");
-    } else if (kind == _InvocationMirror._SETTER) {
-      msgBuf.write("Tried calling: $memberName$argumentsBuf");
-    } else {
-      msgBuf.write("Tried calling: $memberName = $argumentsBuf");
-    }
+      StringBuffer argumentsBuf = new StringBuffer();
+      var positionalArguments = invocation.positionalArguments;
+      int argumentCount = 0;
+      if (positionalArguments != null) {
+        for (; argumentCount < positionalArguments.length; argumentCount++) {
+          if (argumentCount > 0) {
+            argumentsBuf.write(", ");
+          }
+          argumentsBuf
+              .write(Error.safeToString(positionalArguments[argumentCount]));
+        }
+      }
+      var namedArguments = invocation.namedArguments;
+      if (namedArguments != null) {
+        namedArguments.forEach((Symbol key, var value) {
+          if (argumentCount > 0) {
+            argumentsBuf.write(", ");
+          }
+          argumentsBuf.write(internal.Symbol.computeUnmangledName(key));
+          argumentsBuf.write(": ");
+          argumentsBuf.write(Error.safeToString(value));
+          argumentCount++;
+        });
+      }
+      String existingSig =
+          _existingMethodSignature(_receiver, memberName, invocation._type);
+      String argsMsg = existingSig != null ? " with matching arguments" : "";
 
-    if (existingSig != null) {
-      msgBuf.write("\nFound: $memberName$existingSig");
-    }
+      String kindBuf = "function";
+      if (kind >= 0 && kind < 5) {
+        kindBuf = (const [
+          "method",
+          "getter",
+          "setter",
+          "getter or setter",
+          "variable"
+        ])[kind];
+      }
 
-    return msgBuf.toString();
+      StringBuffer msgBuf = new StringBuffer("NoSuchMethodError: ");
+      bool is_type_call = false;
+      switch (level) {
+        case _InvocationMirror._DYNAMIC:
+          {
+            if (_receiver == null) {
+              if (existingSig != null) {
+                msgBuf.writeln("The null object does not have a $kindBuf "
+                    "'$memberName'$argsMsg.");
+              } else {
+                msgBuf
+                    .writeln("The $kindBuf '$memberName' was called on null.");
+              }
+            } else {
+              if (_receiver is _Closure) {
+                msgBuf.writeln("Closure call with mismatched arguments: "
+                    "function '$memberName'");
+              } else if (_receiver is _Type && memberName == "call") {
+                is_type_call = true;
+                String name = _receiver.toString();
+                msgBuf.writeln("Attempted to use type '$name' as a function. "
+                    "Since types do not define a method 'call', this is not "
+                    "possible. Did you intend to call the $name constructor and "
+                    "forget the 'new' operator?");
+              } else {
+                msgBuf
+                    .writeln("Class '${_receiver.runtimeType}' has no instance "
+                        "$kindBuf '$memberName'$argsMsg.");
+              }
+            }
+            break;
+          }
+        case _InvocationMirror._SUPER:
+          {
+            msgBuf
+                .writeln("Super class of class '${_receiver.runtimeType}' has "
+                    "no instance $kindBuf '$memberName'$argsMsg.");
+            memberName = "super.$memberName";
+            break;
+          }
+        case _InvocationMirror._STATIC:
+          {
+            msgBuf.writeln("No static $kindBuf '$memberName'$argsMsg "
+                "declared in class '$_receiver'.");
+            break;
+          }
+        case _InvocationMirror._CONSTRUCTOR:
+          {
+            msgBuf.writeln("No constructor '$memberName'$argsMsg declared "
+                "in class '$_receiver'.");
+            memberName = "new $memberName";
+            break;
+          }
+        case _InvocationMirror._TOP_LEVEL:
+          {
+            msgBuf.writeln("No top-level $kindBuf '$memberName'$argsMsg "
+                "declared.");
+            break;
+          }
+      }
+
+      if (level == _InvocationMirror._TOP_LEVEL) {
+        msgBuf.writeln("Receiver: top-level");
+      } else {
+        msgBuf.writeln("Receiver: ${Error.safeToString(_receiver)}");
+      }
+
+      if (kind == _InvocationMirror._METHOD) {
+        String m = is_type_call ? "$_receiver" : "$memberName";
+        msgBuf.write("Tried calling: $m");
+        if (typeArgumentsBuf != null) {
+          msgBuf.write(typeArgumentsBuf);
+        }
+        msgBuf.write("($argumentsBuf)");
+      } else if (argumentCount == 0) {
+        msgBuf.write("Tried calling: $memberName");
+      } else if (kind == _InvocationMirror._SETTER) {
+        msgBuf.write("Tried calling: $memberName$argumentsBuf");
+      } else {
+        msgBuf.write("Tried calling: $memberName = $argumentsBuf");
+      }
+
+      if (existingSig != null) {
+        msgBuf.write("\nFound: $memberName$existingSig");
+      }
+
+      return msgBuf.toString();
+    }
+    return _toStringPlain(_receiver, invocation);
   }
 
-  // TODO(regis): Remove this function once dart2js is updated.
-  String _toStringDeprecated() {
-    var level = (_invocation_type >> _InvocationMirror._LEVEL_SHIFT) &
-        _InvocationMirror._LEVEL_MASK;
-    var type = _invocation_type & _InvocationMirror._KIND_MASK;
-    String memberName = (_memberName == null)
-        ? ""
-        : internal.Symbol.computeUnmangledName(_memberName);
-
-    if (type == _InvocationMirror._LOCAL_VAR) {
-      return "NoSuchMethodError: Cannot assign to final variable '$memberName'";
+  /// Creates a string representation of an invocation.
+  ///
+  /// Used for situations where there is no extra information available
+  /// about the failed invocation than the [Invocation] object and receiver,
+  /// which includes errors created using [NoSuchMethodError.withInvocation].
+  static String _toStringPlain(Object receiver, Invocation invocation) {
+    var name = _symbolToString(invocation.memberName);
+    var receiverType = "${receiver.runtimeType}";
+    if (invocation.isAccessor) {
+      return "NoSuchMethodError: $receiverType has no $name "
+          "${invocation.isGetter ? "getter" : "setter"}";
     }
-
-    StringBuffer arguments = new StringBuffer();
-    int argumentCount = 0;
-    if (_arguments != null) {
-      for (; argumentCount < _arguments.length; argumentCount++) {
-        if (argumentCount > 0) {
-          arguments.write(", ");
-        }
-        arguments.write(Error.safeToString(_arguments[argumentCount]));
+    var buffer = StringBuffer("NoSuchMethodError")..write(": ");
+    buffer.write("$receiverType has no $name method accepting arguments ");
+    var separator = "";
+    if (invocation.typeArguments.isNotEmpty) {
+      buffer.write("<");
+      for (var type in invocation.typeArguments) {
+        buffer..write(separator)..write("_");
+        separator = ", ";
       }
+      buffer.write(">");
+      separator = "";
     }
-    if (_namedArguments != null) {
-      _namedArguments.forEach((Symbol key, var value) {
-        if (argumentCount > 0) {
-          arguments.write(", ");
-        }
-        arguments.write(internal.Symbol.computeUnmangledName(key));
-        arguments.write(": ");
-        arguments.write(Error.safeToString(value));
-        argumentCount++;
-      });
+    buffer.write("(");
+    for (var argument in invocation.positionalArguments) {
+      buffer..write(separator)..write("_");
+      separator = ", ";
     }
-    bool argsMismatch = _existingArgumentNames != null;
-    String argsMessage = argsMismatch ? " with matching arguments" : "";
-
-    String type_str;
-    if (type >= 0 && type < 5) {
-      type_str = (const [
-        "method",
-        "getter",
-        "setter",
-        "getter or setter",
-        "variable"
-      ])[type];
-    }
-
-    StringBuffer msg_buf = new StringBuffer("NoSuchMethodError: ");
-    bool is_type_call = false;
-    switch (level) {
-      case _InvocationMirror._DYNAMIC:
-        {
-          if (_receiver == null) {
-            if (argsMismatch) {
-              msg_buf.writeln("The null object does not have a $type_str "
-                  "'$memberName'$argsMessage.");
-            } else {
-              msg_buf
-                  .writeln("The $type_str '$memberName' was called on null.");
-            }
-          } else {
-            if (_receiver is _Closure) {
-              msg_buf.writeln("Closure call with mismatched arguments: "
-                  "function '$memberName'");
-            } else if (_receiver is _Type && memberName == "call") {
-              is_type_call = true;
-              String name = _receiver.toString();
-              msg_buf.writeln("Attempted to use type '$name' as a function. "
-                  "Since types do not define a method 'call', this is not "
-                  "possible. Did you intend to call the $name constructor and "
-                  "forget the 'new' operator?");
-            } else {
-              msg_buf
-                  .writeln("Class '${_receiver.runtimeType}' has no instance "
-                      "$type_str '$memberName'$argsMessage.");
-            }
-          }
-          break;
-        }
-      case _InvocationMirror._SUPER:
-        {
-          msg_buf.writeln("Super class of class '${_receiver.runtimeType}' has "
-              "no instance $type_str '$memberName'$argsMessage.");
-          memberName = "super.$memberName";
-          break;
-        }
-      case _InvocationMirror._STATIC:
-        {
-          msg_buf.writeln("No static $type_str '$memberName'$argsMessage "
-              "declared in class '$_receiver'.");
-          break;
-        }
-      case _InvocationMirror._CONSTRUCTOR:
-        {
-          msg_buf.writeln("No constructor '$memberName'$argsMessage declared "
-              "in class '$_receiver'.");
-          memberName = "new $memberName";
-          break;
-        }
-      case _InvocationMirror._TOP_LEVEL:
-        {
-          msg_buf.writeln("No top-level $type_str '$memberName'$argsMessage "
-              "declared.");
-          break;
-        }
-    }
-
-    if (level == _InvocationMirror._TOP_LEVEL) {
-      msg_buf.writeln("Receiver: top-level");
-    } else {
-      msg_buf.writeln("Receiver: ${Error.safeToString(_receiver)}");
-    }
-
-    if (type == _InvocationMirror._METHOD) {
-      String m = is_type_call ? "$_receiver" : "$memberName";
-      msg_buf.write("Tried calling: $m($arguments)");
-    } else if (argumentCount == 0) {
-      msg_buf.write("Tried calling: $memberName");
-    } else if (type == _InvocationMirror._SETTER) {
-      msg_buf.write("Tried calling: $memberName$arguments");
-    } else {
-      msg_buf.write("Tried calling: $memberName = $arguments");
-    }
-
-    if (argsMismatch) {
-      StringBuffer formalParameters = new StringBuffer();
-      for (int i = 0; i < _existingArgumentNames.length; i++) {
-        if (i > 0) {
-          formalParameters.write(", ");
-        }
-        formalParameters.write(_existingArgumentNames[i]);
+    if (invocation.namedArguments.isNotEmpty) {
+      buffer..write(separator)..write("{");
+      separator = "";
+      for (var name in invocation.namedArguments.keys) {
+        buffer..write(separator)..write(_symbolToString(name))..write(": _");
+        separator = ",";
       }
-      msg_buf.write("\nFound: $memberName($formalParameters)");
+      buffer.write("}");
     }
+    buffer.write(")");
+    return buffer.toString();
+  }
 
-    return msg_buf.toString();
+  static String _symbolToString(Symbol symbol) {
+    if (symbol is internal.Symbol) {
+      return internal.Symbol.computeUnmangledName(symbol);
+    }
+    return "$symbol";
   }
 }
 
diff --git a/sdk/lib/_internal/vm/lib/internal_patch.dart b/sdk/lib/_internal/vm/lib/internal_patch.dart
index 76a8a88..0aa7290 100644
--- a/sdk/lib/_internal/vm/lib/internal_patch.dart
+++ b/sdk/lib/_internal/vm/lib/internal_patch.dart
@@ -133,3 +133,16 @@
 
 void sendAndExit(SendPort sendPort, var message)
     native "SendPortImpl_sendAndExitInternal_";
+
+void spawnFunction(
+    SendPort readyPort,
+    String uri,
+    Function topLevelFunction,
+    var message,
+    bool paused,
+    bool errorsAreFatal,
+    SendPort onExit,
+    SendPort onError,
+    String packageConfig,
+    bool newIsolateGroup,
+    String debugName) native "Isolate_spawnFunction";
diff --git a/sdk/lib/_internal/vm/lib/invocation_mirror_patch.dart b/sdk/lib/_internal/vm/lib/invocation_mirror_patch.dart
index cfa7a6d..1f43d54 100644
--- a/sdk/lib/_internal/vm/lib/invocation_mirror_patch.dart
+++ b/sdk/lib/_internal/vm/lib/invocation_mirror_patch.dart
@@ -12,6 +12,7 @@
 class _InvocationMirror implements Invocation {
   // Constants describing the invocation kind.
   // _FIELD cannot be generated by regular invocation mirrors.
+  static const int _UNINITIALIZED = -1;
   static const int _METHOD = 0;
   static const int _GETTER = 1;
   static const int _SETTER = 2;
@@ -48,7 +49,7 @@
 
   // External representation of the invocation mirror; populated on demand.
   Symbol _memberName;
-  int _type;
+  int _type = _UNINITIALIZED;
   List<Type> _typeArguments;
   List _positionalArguments;
   Map<Symbol, dynamic> _namedArguments;
@@ -61,7 +62,9 @@
   }
 
   void _setMemberNameAndType() {
-    _type ??= 0;
+    if (_type == _UNINITIALIZED) {
+      _type = 0;
+    }
     if (_functionName.startsWith("get:")) {
       _type |= _GETTER;
       _memberName = new internal.Symbol.unvalidated(_functionName.substring(4));
@@ -144,28 +147,28 @@
   }
 
   bool get isMethod {
-    if (_type == null) {
+    if (_type == _UNINITIALIZED) {
       _setMemberNameAndType();
     }
     return (_type & _KIND_MASK) == _METHOD;
   }
 
   bool get isAccessor {
-    if (_type == null) {
+    if (_type == _UNINITIALIZED) {
       _setMemberNameAndType();
     }
     return (_type & _KIND_MASK) != _METHOD;
   }
 
   bool get isGetter {
-    if (_type == null) {
+    if (_type == _UNINITIALIZED) {
       _setMemberNameAndType();
     }
     return (_type & _KIND_MASK) == _GETTER;
   }
 
   bool get isSetter {
-    if (_type == null) {
+    if (_type == _UNINITIALIZED) {
       _setMemberNameAndType();
     }
     return (_type & _KIND_MASK) == _SETTER;
@@ -182,7 +185,7 @@
   @pragma("vm:entry-point", "call")
   static _allocateInvocationMirror(String functionName,
       List argumentsDescriptor, List arguments, bool isSuperInvocation,
-      [int type = null]) {
+      [int type = _UNINITIALIZED]) {
     return new _InvocationMirror(
         functionName, argumentsDescriptor, arguments, isSuperInvocation, type);
   }
@@ -200,6 +203,6 @@
       int type,
       int delayedTypeArgumentsLen) {
     return new _InvocationMirror(functionName, argumentsDescriptor, arguments,
-        false, type, delayedTypeArgumentsLen);
+        false, type ?? _UNINITIALIZED, delayedTypeArgumentsLen);
   }
 }
diff --git a/sdk/lib/_internal/vm/lib/isolate_patch.dart b/sdk/lib/_internal/vm/lib/isolate_patch.dart
index e357b8a..c06dc3f 100644
--- a/sdk/lib/_internal/vm/lib/isolate_patch.dart
+++ b/sdk/lib/_internal/vm/lib/isolate_patch.dart
@@ -16,6 +16,7 @@
 
 import "dart:collection" show HashMap;
 import "dart:typed_data" show ByteBuffer, TypedData, Uint8List;
+import "dart:_internal" show spawnFunction;
 
 /// These are the additional parts of this patch library:
 // part "timer_impl.dart";
@@ -374,10 +375,21 @@
       script = await Isolate.resolvePackageUri(script);
     }
 
+    const bool newIsolateGroup = false;
     final RawReceivePort readyPort = new RawReceivePort();
     try {
-      _spawnFunction(readyPort.sendPort, script.toString(), entryPoint, message,
-          paused, errorsAreFatal, onExit, onError, packageConfig, debugName);
+      spawnFunction(
+          readyPort.sendPort,
+          script.toString(),
+          entryPoint,
+          message,
+          paused,
+          errorsAreFatal,
+          onExit,
+          onError,
+          packageConfig,
+          newIsolateGroup,
+          debugName);
       return await _spawnCommon(readyPort);
     } catch (e, st) {
       readyPort.close();
@@ -501,17 +513,7 @@
   static const _DEL_ERROR = 8;
   static const _ERROR_FATAL = 9;
 
-  static void _spawnFunction(
-      SendPort readyPort,
-      String uri,
-      Function topLevelFunction,
-      var message,
-      bool paused,
-      bool errorsAreFatal,
-      SendPort onExit,
-      SendPort onError,
-      String packageConfig,
-      String debugName) native "Isolate_spawnFunction";
+  // For 'spawnFunction' see internal_patch.dart.
 
   static void _spawnUri(
       SendPort readyPort,
diff --git a/sdk/lib/html/dart2js/html_dart2js.dart b/sdk/lib/html/dart2js/html_dart2js.dart
index 73f1e6e..9be8e79 100644
--- a/sdk/lib/html/dart2js/html_dart2js.dart
+++ b/sdk/lib/html/dart2js/html_dart2js.dart
@@ -13647,7 +13647,9 @@
     if (Range.supportsCreateContextualFragment &&
         _canBeUsedToCreateContextualFragment) {
       _parseRange.selectNodeContents(contextElement);
-      fragment = _parseRange.createContextualFragment(html);
+      // createContextualFragment expects a non-nullable html string.
+      // If null is passed, it gets converted to 'null' instead.
+      fragment = _parseRange.createContextualFragment(html ?? 'null');
     } else {
       contextElement._innerHtml = html;
 
diff --git a/sdk_args.gni b/sdk_args.gni
index 7ebca48..eb4017e 100644
--- a/sdk_args.gni
+++ b/sdk_args.gni
@@ -5,9 +5,11 @@
 _dart_root = get_path_info(".", "abspath")
 
 declare_args() {
-  # Whether to use the NNBD fork of the SDK core libraries.
-  # TODO(#38701): Remove this when the fork has been merged back in.
-  use_nnbd = false
+  # Whether to build a Legacy SDK using Legacy core libraries.
+  # TODO(38701): Remove dont_use_nnbd once the NNBD SDK is stable/performant
+  # and there is no need to build a legacy version of the SDK for comparison
+  # purposes.
+  dont_use_nnbd = false
 
   # Absolute path to the .git folder.
   #
diff --git a/sdk_nnbd/lib/_internal/js_dev_runtime/patch/convert_patch.dart b/sdk_nnbd/lib/_internal/js_dev_runtime/patch/convert_patch.dart
index 1b79fe8..a7f5e19 100644
--- a/sdk_nnbd/lib/_internal/js_dev_runtime/patch/convert_patch.dart
+++ b/sdk_nnbd/lib/_internal/js_dev_runtime/patch/convert_patch.dart
@@ -382,7 +382,7 @@
     super.close();
     String accumulated = _stringSink.toString();
     _stringSink.clear();
-    Object decoded = _parseJson(accumulated, _reviver);
+    Object? decoded = _parseJson(accumulated, _reviver);
     _sink.add(decoded);
     _sink.close();
   }
diff --git a/sdk_nnbd/lib/_internal/js_dev_runtime/patch/core_patch.dart b/sdk_nnbd/lib/_internal/js_dev_runtime/patch/core_patch.dart
index 1d3e398..2171a9f 100644
--- a/sdk_nnbd/lib/_internal/js_dev_runtime/patch/core_patch.dart
+++ b/sdk_nnbd/lib/_internal/js_dev_runtime/patch/core_patch.dart
@@ -2830,7 +2830,7 @@
           // There is already one in the cachedBits.
           roundUp();
         } else {
-          for (int i = digitIndex; digitIndex >= 0; i--) {
+          for (int i = digitIndex; i >= 0; i--) {
             if (_digits[i] != 0) {
               roundUp();
               break;
diff --git a/sdk_nnbd/lib/_internal/js_runtime/lib/convert_patch.dart b/sdk_nnbd/lib/_internal/js_runtime/lib/convert_patch.dart
index 070946a..f4e8f2b 100644
--- a/sdk_nnbd/lib/_internal/js_runtime/lib/convert_patch.dart
+++ b/sdk_nnbd/lib/_internal/js_runtime/lib/convert_patch.dart
@@ -377,7 +377,7 @@
     super.close();
     String accumulated = _stringSink.toString();
     _stringSink.clear();
-    Object decoded = _parseJson(accumulated, _reviver);
+    Object? decoded = _parseJson(accumulated, _reviver);
     _sink.add(decoded);
     _sink.close();
   }
diff --git a/sdk_nnbd/lib/_internal/js_runtime/lib/core_patch.dart b/sdk_nnbd/lib/_internal/js_runtime/lib/core_patch.dart
index 232cc8d..6ffa92e 100644
--- a/sdk_nnbd/lib/_internal/js_runtime/lib/core_patch.dart
+++ b/sdk_nnbd/lib/_internal/js_runtime/lib/core_patch.dart
@@ -2760,7 +2760,7 @@
           // There is already one in the cachedBits.
           roundUp();
         } else {
-          for (int i = digitIndex; digitIndex >= 0; i--) {
+          for (int i = digitIndex; i >= 0; i--) {
             if (_digits[i] != 0) {
               roundUp();
               break;
diff --git a/sdk_nnbd/lib/_internal/vm/bin/file_patch.dart b/sdk_nnbd/lib/_internal/vm/bin/file_patch.dart
index 354f809..033abea 100644
--- a/sdk_nnbd/lib/_internal/vm/bin/file_patch.dart
+++ b/sdk_nnbd/lib/_internal/vm/bin/file_patch.dart
@@ -143,7 +143,7 @@
       try {
         _id = _initWatcher();
         _newWatcher();
-      } catch (e) {
+      } on dynamic catch (e) {
         _broadcastController.addError(new FileSystemException(
             "Failed to initialize file system entity watcher", null, e));
         _broadcastController.close();
@@ -154,7 +154,7 @@
     try {
       pathId =
           _watchPath(_id!, _Namespace._namespace, _path, _events, _recursive);
-    } catch (e) {
+    } on dynamic catch (e) {
       _broadcastController
           .addError(new FileSystemException("Failed to watch path", _path, e));
       _broadcastController.close();
diff --git a/sdk_nnbd/lib/_internal/vm/bin/socket_patch.dart b/sdk_nnbd/lib/_internal/vm/bin/socket_patch.dart
index 94072d8..0aae529 100644
--- a/sdk_nnbd/lib/_internal/vm/bin/socket_patch.dart
+++ b/sdk_nnbd/lib/_internal/vm/bin/socket_patch.dart
@@ -1425,7 +1425,6 @@
 class _RawServerSocket extends Stream<RawSocket> implements RawServerSocket {
   final _NativeSocket _socket;
   StreamController<RawSocket>? _controller;
-  ReceivePort? _referencePort;
   bool _v6Only;
 
   static Future<_RawServerSocket> bind(
@@ -1450,27 +1449,24 @@
         onCancel: _onSubscriptionStateChange,
         onPause: _onPauseStateChange,
         onResume: _onPauseStateChange);
-    _socket.setHandlers(read: zone.bindCallbackGuarded(() {
-      while (_socket.connections > 0) {
-        var socket = _socket.accept();
-        if (socket == null) return;
-        if (!const bool.fromEnvironment("dart.vm.product")) {
-          _SocketProfile.collectNewSocket(socket.nativeGetSocketId(),
-              _tcpSocket, socket.address, socket.port);
-        }
-        controller.add(_RawSocket(socket));
-        if (controller.isPaused) return;
-      }
-    }), error: zone.bindBinaryCallbackGuarded((Object e, StackTrace? st) {
-      controller.addError(e, st);
-      controller.close();
-    }), destroyed: () {
-      controller.close();
-      if (_referencePort != null) {
-        _referencePort!.close();
-        _referencePort = null;
-      }
-    });
+    _socket.setHandlers(
+        read: zone.bindCallbackGuarded(() {
+          while (_socket.connections > 0) {
+            var socket = _socket.accept();
+            if (socket == null) return;
+            if (!const bool.fromEnvironment("dart.vm.product")) {
+              _SocketProfile.collectNewSocket(socket.nativeGetSocketId(),
+                  _tcpSocket, socket.address, socket.port);
+            }
+            controller.add(_RawSocket(socket));
+            if (controller.isPaused) return;
+          }
+        }),
+        error: zone.bindBinaryCallbackGuarded((Object e, StackTrace? st) {
+          controller.addError(e, st);
+          controller.close();
+        }),
+        destroyed: () => controller.close());
     return controller.stream.listen(onData,
         onError: onError, onDone: onDone, cancelOnError: cancelOnError);
   }
@@ -1480,13 +1476,7 @@
   InternetAddress get address => _socket.address;
 
   Future<RawServerSocket> close() {
-    return _socket.close().then<RawServerSocket>((_) {
-      if (_referencePort != null) {
-        _referencePort!.close();
-        _referencePort = null;
-      }
-      return this;
-    });
+    return _socket.close().then<RawServerSocket>((_) => this);
   }
 
   void _pause() {
diff --git a/sdk_nnbd/lib/_internal/vm/bin/vmservice_server.dart b/sdk_nnbd/lib/_internal/vm/bin/vmservice_server.dart
index d1a5a7c..a45c806 100644
--- a/sdk_nnbd/lib/_internal/vm/bin/vmservice_server.dart
+++ b/sdk_nnbd/lib/_internal/vm/bin/vmservice_server.dart
@@ -58,7 +58,7 @@
             onResponse(rpc);
             break;
         }
-      } catch (e) {
+      } on dynamic catch (e) {
         socket.close(idErrorCode, e.message);
       }
     } else {
diff --git a/sdk_nnbd/lib/_internal/vm/lib/bigint_patch.dart b/sdk_nnbd/lib/_internal/vm/lib/bigint_patch.dart
index 25f9dbc..5cc0bef 100644
--- a/sdk_nnbd/lib/_internal/vm/lib/bigint_patch.dart
+++ b/sdk_nnbd/lib/_internal/vm/lib/bigint_patch.dart
@@ -2413,7 +2413,7 @@
           // There is already one in the cachedBits.
           roundUp();
         } else {
-          for (int i = digitIndex; digitIndex >= 0; i--) {
+          for (int i = digitIndex; i >= 0; i--) {
             if (_digits[i] != 0) {
               roundUp();
               break;
diff --git a/sdk_nnbd/lib/_internal/vm/lib/core_patch.dart b/sdk_nnbd/lib/_internal/vm/lib/core_patch.dart
index 0366017..c4a0ba0 100644
--- a/sdk_nnbd/lib/_internal/vm/lib/core_patch.dart
+++ b/sdk_nnbd/lib/_internal/vm/lib/core_patch.dart
@@ -98,19 +98,19 @@
 // implement sync* generator functions. A sync* generator allocates
 // and returns a new _SyncIterable object.
 
-typedef bool _SyncGeneratorCallback<T>(_SyncIterator<T> iterator);
+typedef _SyncGeneratorCallback<T> = bool Function(_SyncIterator<T>);
+typedef _SyncGeneratorCallbackCallback<T> = _SyncGeneratorCallback<T>
+    Function();
 
 class _SyncIterable<T> extends IterableBase<T> {
-  // _moveNextFn is the closurized body of the generator function.
-  final _SyncGeneratorCallback<T> _moveNextFn;
+  // Closure that effectively "clones" the inner _moveNextFn.
+  // This means a _SyncIterable creates _SyncIterators that do not share state.
+  final _SyncGeneratorCallbackCallback<T> _moveNextFnMaker;
 
-  const _SyncIterable(this._moveNextFn);
+  const _SyncIterable(this._moveNextFnMaker);
 
   Iterator<T> get iterator {
-    // Note: _Closure._clone returns _Closure which is not related to
-    // _SyncGeneratorCallback, which means we need explicit cast.
-    return new _SyncIterator<T>(unsafeCast<_SyncGeneratorCallback<T>>(
-        unsafeCast<_Closure>(_moveNextFn)._clone()));
+    return _SyncIterator<T>(_moveNextFnMaker());
   }
 }
 
diff --git a/sdk_nnbd/lib/_internal/vm/lib/errors_patch.dart b/sdk_nnbd/lib/_internal/vm/lib/errors_patch.dart
index 3a964d6..c4b91f2 100644
--- a/sdk_nnbd/lib/_internal/vm/lib/errors_patch.dart
+++ b/sdk_nnbd/lib/_internal/vm/lib/errors_patch.dart
@@ -177,22 +177,15 @@
 
 @patch
 class NoSuchMethodError {
-  // Deprecated members to be removed.
-  Symbol? _memberName;
-  List? _arguments;
-  Map<Symbol, dynamic>? _namedArguments;
-  List? _existingArgumentNames;
+  final Object? _receiver;
+  final Invocation _invocation;
 
-  final Object _receiver;
-  final _InvocationMirror? _invocation;
-
-  // Issue(dartbug.com/127160): Remove the cast to [_InvocationMirror].
   @patch
-  NoSuchMethodError.withInvocation(Object receiver, Invocation invocation)
+  NoSuchMethodError.withInvocation(Object? receiver, Invocation invocation)
       : _receiver = receiver,
-        _invocation = invocation as _InvocationMirror;
+        _invocation = invocation;
 
-  static void _throwNewInvocation(Object receiver, Invocation invocation) {
+  static void _throwNewInvocation(Object? receiver, Invocation invocation) {
     throw new NoSuchMethodError.withInvocation(receiver, invocation);
   }
 
@@ -200,44 +193,29 @@
   // method at compile time. The receiver is actually the literal class of the
   // unresolved method.
   @pragma("vm:entry-point", "call")
-  static void _throwNew(Object receiver, String memberName, int invocationType,
-      Object? typeArguments, List? arguments, List? argumentNames) {
-    throw new NoSuchMethodError._withType(receiver, memberName, invocationType,
-        typeArguments, arguments, argumentNames);
-  }
-
-  static void _throwNewIfNotLoaded(
-      _LibraryPrefix prefix,
+  static void _throwNew(
       Object receiver,
       String memberName,
       int invocationType,
-      Object typeArguments,
-      List arguments,
-      List argumentNames) {
-    if (!prefix.isLoaded()) {
-      _throwNew(receiver, memberName, invocationType, typeArguments, arguments,
-          argumentNames);
-    }
+      int typeArgumentsLength,
+      Object? typeArguments,
+      List? arguments,
+      List? argumentNames) {
+    throw new NoSuchMethodError._withType(receiver, memberName, invocationType,
+        typeArgumentsLength, typeArguments, arguments, argumentNames);
   }
 
-  // TODO(regis): Deprecated member still used by dart2js to be removed.
-  // Remember the type from the invocation mirror or static compilation
-  // analysis when thrown directly with _throwNew. A negative value means
-  // that no information is available.
-  int _invocationType = -1;
-
-  // TODO(regis): Deprecated constructor still used by dart2js to be removed.
+  // Deprecated constructor.
   @patch
-  NoSuchMethodError(Object receiver, Symbol memberName,
-      List positionalArguments, Map<Symbol, dynamic> namedArguments,
-      [List? existingArgumentNames = null])
-      : _receiver = receiver,
-        _invocation = null,
-        _memberName = memberName,
-        _arguments = positionalArguments,
-        _namedArguments = namedArguments,
-        _existingArgumentNames = existingArgumentNames,
-        _invocationType = -1;
+  NoSuchMethodError(this._receiver, Symbol memberName,
+      List? positionalArguments, Map<Symbol, dynamic>? namedArguments,
+      [List? existingArgumentNames = null]) // existingArgumentNames ignored.
+      : this._invocation = new _InvocationMirror._withType(
+            memberName,
+            _InvocationMirror._UNINITIALIZED,
+            null, // Type arguments not supported in deprecated constructor.
+            positionalArguments,
+            namedArguments);
 
   // Helper to build a map of named arguments.
   static Map<Symbol, dynamic> _NamedArgumentsMap(
@@ -260,16 +238,15 @@
       this._receiver,
       String memberName,
       int invocationType,
+      int typeArgumentsLength, // Needed with all-dynamic (null) typeArguments.
       Object? typeArguments,
       List? arguments,
       List? argumentNames)
       : this._invocation = new _InvocationMirror._withType(
             new Symbol(memberName),
             invocationType,
-            typeArguments != null
-                // TODO(33073): Use actual count of type arguments in place of 0.
-                ? _InvocationMirror._unpackTypeArguments(typeArguments, 0)
-                : null,
+            _InvocationMirror._unpackTypeArguments(
+                typeArguments, typeArgumentsLength),
             argumentNames != null
                 ? arguments!.sublist(0, arguments.length - argumentNames.length)
                 : arguments,
@@ -277,300 +254,216 @@
                 ? _NamedArgumentsMap(arguments!, argumentNames)
                 : null);
 
-  static String? _existingMethodSignature(Object receiver, String methodName,
+  static String? _existingMethodSignature(Object? receiver, String methodName,
       int invocationType) native "NoSuchMethodError_existingMethodSignature";
 
   @patch
   String toString() {
-    // TODO(regis): Remove this null check once dart2js is updated.
     final localInvocation = _invocation;
-    if (localInvocation == null) {
-      // Use deprecated version of toString.
-      return _toStringDeprecated();
-    }
-    var internalName = localInvocation.memberName as internal.Symbol;
-    String memberName = internal.Symbol.computeUnmangledName(internalName);
+    if (localInvocation is _InvocationMirror) {
+      var internalName = localInvocation.memberName as internal.Symbol;
+      String memberName = internal.Symbol.computeUnmangledName(internalName);
 
-    var level = (localInvocation._type >> _InvocationMirror._LEVEL_SHIFT) &
-        _InvocationMirror._LEVEL_MASK;
-    var kind = localInvocation._type & _InvocationMirror._KIND_MASK;
-    if (kind == _InvocationMirror._LOCAL_VAR) {
-      return "NoSuchMethodError: Cannot assign to final variable '$memberName'";
-    }
-
-    StringBuffer? typeArgumentsBuf = null;
-    final typeArguments = localInvocation.typeArguments;
-    if ((typeArguments != null) && (typeArguments.length > 0)) {
-      final argsBuf = new StringBuffer();
-      argsBuf.write("<");
-      for (int i = 0; i < typeArguments.length; i++) {
-        if (i > 0) {
-          argsBuf.write(", ");
-        }
-        argsBuf.write(Error.safeToString(typeArguments[i]));
+      var level = (localInvocation._type >> _InvocationMirror._LEVEL_SHIFT) &
+          _InvocationMirror._LEVEL_MASK;
+      var kind = localInvocation._type & _InvocationMirror._KIND_MASK;
+      if (kind == _InvocationMirror._LOCAL_VAR) {
+        return "NoSuchMethodError: Cannot assign to final variable '$memberName'";
       }
-      argsBuf.write(">");
-      typeArgumentsBuf = argsBuf;
-    }
-    StringBuffer argumentsBuf = new StringBuffer();
-    var positionalArguments = localInvocation.positionalArguments;
-    int argumentCount = 0;
-    if (positionalArguments != null) {
-      for (; argumentCount < positionalArguments.length; argumentCount++) {
-        if (argumentCount > 0) {
-          argumentsBuf.write(", ");
-        }
-        argumentsBuf
-            .write(Error.safeToString(positionalArguments[argumentCount]));
-      }
-    }
-    var namedArguments = localInvocation.namedArguments;
-    if (namedArguments != null) {
-      namedArguments.forEach((Symbol key, var value) {
-        if (argumentCount > 0) {
-          argumentsBuf.write(", ");
-        }
-        var internalName = key as internal.Symbol;
-        argumentsBuf.write(internal.Symbol.computeUnmangledName(internalName));
-        argumentsBuf.write(": ");
-        argumentsBuf.write(Error.safeToString(value));
-        argumentCount++;
-      });
-    }
-    String? existingSig =
-        _existingMethodSignature(_receiver, memberName, localInvocation._type);
-    String argsMsg = existingSig != null ? " with matching arguments" : "";
 
-    assert(kind >= 0 && kind < 5);
-    final String kindBuf = (const [
-      "method",
-      "getter",
-      "setter",
-      "getter or setter",
-      "variable"
-    ])[kind];
-
-    StringBuffer msgBuf = new StringBuffer("NoSuchMethodError: ");
-    bool isTypeCall = false;
-    switch (level) {
-      case _InvocationMirror._DYNAMIC:
-        {
-          if (_receiver == null) {
-            if (existingSig != null) {
-              msgBuf.writeln("The null object does not have a $kindBuf "
-                  "'$memberName'$argsMsg.");
-            } else {
-              msgBuf.writeln("The $kindBuf '$memberName' was called on null.");
-            }
-          } else {
-            if (_receiver is _Closure) {
-              msgBuf.writeln("Closure call with mismatched arguments: "
-                  "function '$memberName'");
-            } else if (_receiver is _Type && memberName == "call") {
-              isTypeCall = true;
-              String name = _receiver.toString();
-              msgBuf.writeln("Attempted to use type '$name' as a function. "
-                  "Since types do not define a method 'call', this is not "
-                  "possible. Did you intend to call the $name constructor and "
-                  "forget the 'new' operator?");
-            } else {
-              msgBuf.writeln("Class '${_receiver.runtimeType}' has no instance "
-                  "$kindBuf '$memberName'$argsMsg.");
-            }
+      StringBuffer? typeArgumentsBuf = null;
+      final typeArguments = localInvocation.typeArguments;
+      if ((typeArguments != null) && (typeArguments.length > 0)) {
+        final argsBuf = new StringBuffer();
+        argsBuf.write("<");
+        for (int i = 0; i < typeArguments.length; i++) {
+          if (i > 0) {
+            argsBuf.write(", ");
           }
-          break;
+          argsBuf.write(Error.safeToString(typeArguments[i]));
         }
-      case _InvocationMirror._SUPER:
-        {
-          msgBuf.writeln("Super class of class '${_receiver.runtimeType}' has "
-              "no instance $kindBuf '$memberName'$argsMsg.");
-          memberName = "super.$memberName";
-          break;
-        }
-      case _InvocationMirror._STATIC:
-        {
-          msgBuf.writeln("No static $kindBuf '$memberName'$argsMsg "
-              "declared in class '$_receiver'.");
-          break;
-        }
-      case _InvocationMirror._CONSTRUCTOR:
-        {
-          msgBuf.writeln("No constructor '$memberName'$argsMsg declared "
-              "in class '$_receiver'.");
-          memberName = "new $memberName";
-          break;
-        }
-      case _InvocationMirror._TOP_LEVEL:
-        {
-          msgBuf.writeln("No top-level $kindBuf '$memberName'$argsMsg "
-              "declared.");
-          break;
-        }
-    }
-
-    if (level == _InvocationMirror._TOP_LEVEL) {
-      msgBuf.writeln("Receiver: top-level");
-    } else {
-      msgBuf.writeln("Receiver: ${Error.safeToString(_receiver)}");
-    }
-
-    if (kind == _InvocationMirror._METHOD) {
-      String m = isTypeCall ? "$_receiver" : "$memberName";
-      msgBuf.write("Tried calling: $m");
-      if (typeArgumentsBuf != null) {
-        msgBuf.write(typeArgumentsBuf);
+        argsBuf.write(">");
+        typeArgumentsBuf = argsBuf;
       }
-      msgBuf.write("($argumentsBuf)");
-    } else if (argumentCount == 0) {
-      msgBuf.write("Tried calling: $memberName");
-    } else if (kind == _InvocationMirror._SETTER) {
-      msgBuf.write("Tried calling: $memberName$argumentsBuf");
-    } else {
-      msgBuf.write("Tried calling: $memberName = $argumentsBuf");
-    }
+      StringBuffer argumentsBuf = new StringBuffer();
+      var positionalArguments = localInvocation.positionalArguments;
+      int argumentCount = 0;
+      if (positionalArguments != null) {
+        for (; argumentCount < positionalArguments.length; argumentCount++) {
+          if (argumentCount > 0) {
+            argumentsBuf.write(", ");
+          }
+          argumentsBuf
+              .write(Error.safeToString(positionalArguments[argumentCount]));
+        }
+      }
+      var namedArguments = localInvocation.namedArguments;
+      if (namedArguments != null) {
+        namedArguments.forEach((Symbol key, var value) {
+          if (argumentCount > 0) {
+            argumentsBuf.write(", ");
+          }
+          var internalName = key as internal.Symbol;
+          argumentsBuf
+              .write(internal.Symbol.computeUnmangledName(internalName));
+          argumentsBuf.write(": ");
+          argumentsBuf.write(Error.safeToString(value));
+          argumentCount++;
+        });
+      }
+      String? existingSig = _existingMethodSignature(
+          _receiver, memberName, localInvocation._type);
+      String argsMsg = existingSig != null ? " with matching arguments" : "";
 
-    if (existingSig != null) {
-      msgBuf.write("\nFound: $memberName$existingSig");
-    }
+      String kindBuf = "function";
+      if (kind >= 0 && kind < 5) {
+        kindBuf = (const [
+          "method",
+          "getter",
+          "setter",
+          "getter or setter",
+          "variable"
+        ])[kind];
+      }
 
-    return msgBuf.toString();
+      StringBuffer msgBuf = new StringBuffer("NoSuchMethodError: ");
+      bool isTypeCall = false;
+      switch (level) {
+        case _InvocationMirror._DYNAMIC:
+          {
+            if (_receiver == null) {
+              if (existingSig != null) {
+                msgBuf.writeln("The null object does not have a $kindBuf "
+                    "'$memberName'$argsMsg.");
+              } else {
+                msgBuf
+                    .writeln("The $kindBuf '$memberName' was called on null.");
+              }
+            } else {
+              if (_receiver is _Closure) {
+                msgBuf.writeln("Closure call with mismatched arguments: "
+                    "function '$memberName'");
+              } else if (_receiver is _Type && memberName == "call") {
+                isTypeCall = true;
+                String name = _receiver.toString();
+                msgBuf.writeln("Attempted to use type '$name' as a function. "
+                    "Since types do not define a method 'call', this is not "
+                    "possible. Did you intend to call the $name constructor and "
+                    "forget the 'new' operator?");
+              } else {
+                msgBuf
+                    .writeln("Class '${_receiver.runtimeType}' has no instance "
+                        "$kindBuf '$memberName'$argsMsg.");
+              }
+            }
+            break;
+          }
+        case _InvocationMirror._SUPER:
+          {
+            msgBuf
+                .writeln("Super class of class '${_receiver.runtimeType}' has "
+                    "no instance $kindBuf '$memberName'$argsMsg.");
+            memberName = "super.$memberName";
+            break;
+          }
+        case _InvocationMirror._STATIC:
+          {
+            msgBuf.writeln("No static $kindBuf '$memberName'$argsMsg "
+                "declared in class '$_receiver'.");
+            break;
+          }
+        case _InvocationMirror._CONSTRUCTOR:
+          {
+            msgBuf.writeln("No constructor '$memberName'$argsMsg declared "
+                "in class '$_receiver'.");
+            memberName = "new $memberName";
+            break;
+          }
+        case _InvocationMirror._TOP_LEVEL:
+          {
+            msgBuf.writeln("No top-level $kindBuf '$memberName'$argsMsg "
+                "declared.");
+            break;
+          }
+      }
+
+      if (level == _InvocationMirror._TOP_LEVEL) {
+        msgBuf.writeln("Receiver: top-level");
+      } else {
+        msgBuf.writeln("Receiver: ${Error.safeToString(_receiver)}");
+      }
+
+      if (kind == _InvocationMirror._METHOD) {
+        String m = isTypeCall ? "$_receiver" : "$memberName";
+        msgBuf.write("Tried calling: $m");
+        if (typeArgumentsBuf != null) {
+          msgBuf.write(typeArgumentsBuf);
+        }
+        msgBuf.write("($argumentsBuf)");
+      } else if (argumentCount == 0) {
+        msgBuf.write("Tried calling: $memberName");
+      } else if (kind == _InvocationMirror._SETTER) {
+        msgBuf.write("Tried calling: $memberName$argumentsBuf");
+      } else {
+        msgBuf.write("Tried calling: $memberName = $argumentsBuf");
+      }
+
+      if (existingSig != null) {
+        msgBuf.write("\nFound: $memberName$existingSig");
+      }
+
+      return msgBuf.toString();
+    }
+    return _toStringPlain(_receiver, localInvocation);
   }
 
-  // TODO(regis): Remove this function once dart2js is updated.
-  String _toStringDeprecated() {
-    var level = (_invocationType >> _InvocationMirror._LEVEL_SHIFT) &
-        _InvocationMirror._LEVEL_MASK;
-    var type = _invocationType & _InvocationMirror._KIND_MASK;
-    String memberName = (_memberName == null)
-        ? ""
-        : internal.Symbol.computeUnmangledName(_memberName as internal.Symbol);
-
-    if (type == _InvocationMirror._LOCAL_VAR) {
-      return "NoSuchMethodError: Cannot assign to final variable '$memberName'";
+  /// Creates a string representation of an invocation.
+  ///
+  /// Used for situations where there is no extra information available
+  /// about the failed invocation than the [Invocation] object and receiver,
+  /// which includes errors created using [NoSuchMethodError.withInvocation].
+  static String _toStringPlain(Object? receiver, Invocation invocation) {
+    var name = _symbolToString(invocation.memberName);
+    var receiverType = "${receiver.runtimeType}";
+    if (invocation.isAccessor) {
+      return "NoSuchMethodError: $receiverType has no $name "
+          "${invocation.isGetter ? "getter" : "setter"}";
     }
-
-    StringBuffer arguments = new StringBuffer();
-    int argumentCount = 0;
-    final args = _arguments;
-    if (args != null) {
-      for (; argumentCount < args.length; argumentCount++) {
-        if (argumentCount > 0) {
-          arguments.write(", ");
-        }
-        arguments.write(Error.safeToString(args[argumentCount]));
+    var buffer = StringBuffer("NoSuchMethodError")..write(": ");
+    buffer.write("$receiverType has no $name method accepting arguments ");
+    var separator = "";
+    if (invocation.typeArguments.isNotEmpty) {
+      buffer.write("<");
+      for (var type in invocation.typeArguments) {
+        buffer..write(separator)..write("_");
+        separator = ", ";
       }
+      buffer.write(">");
+      separator = "";
     }
-    _namedArguments?.forEach((Symbol key, var value) {
-      if (argumentCount > 0) {
-        arguments.write(", ");
+    buffer.write("(");
+    for (var argument in invocation.positionalArguments) {
+      buffer..write(separator)..write("_");
+      separator = ", ";
+    }
+    if (invocation.namedArguments.isNotEmpty) {
+      buffer..write(separator)..write("{");
+      separator = "";
+      for (var name in invocation.namedArguments.keys) {
+        buffer..write(separator)..write(_symbolToString(name))..write(": _");
+        separator = ",";
       }
-      var internalName = key as internal.Symbol;
-      arguments.write(internal.Symbol.computeUnmangledName(internalName));
-      arguments.write(": ");
-      arguments.write(Error.safeToString(value));
-      argumentCount++;
-    });
-    bool argsMismatch = _existingArgumentNames != null;
-    String argsMessage = argsMismatch ? " with matching arguments" : "";
-
-    final String typeStr = (type >= 0 && type < 5)
-        ? (const [
-            "method",
-            "getter",
-            "setter",
-            "getter or setter",
-            "variable"
-          ])[type]
-        : "";
-
-    StringBuffer msgBuf = new StringBuffer("NoSuchMethodError: ");
-    bool isTypeCall = false;
-    switch (level) {
-      case _InvocationMirror._DYNAMIC:
-        {
-          if (_receiver == null) {
-            if (argsMismatch) {
-              msgBuf.writeln("The null object does not have a $typeStr "
-                  "'$memberName'$argsMessage.");
-            } else {
-              msgBuf.writeln("The $typeStr '$memberName' was called on null.");
-            }
-          } else {
-            if (_receiver is _Closure) {
-              msgBuf.writeln("Closure call with mismatched arguments: "
-                  "function '$memberName'");
-            } else if (_receiver is _Type && memberName == "call") {
-              isTypeCall = true;
-              String name = _receiver.toString();
-              msgBuf.writeln("Attempted to use type '$name' as a function. "
-                  "Since types do not define a method 'call', this is not "
-                  "possible. Did you intend to call the $name constructor and "
-                  "forget the 'new' operator?");
-            } else {
-              msgBuf.writeln("Class '${_receiver.runtimeType}' has no instance "
-                  "$typeStr '$memberName'$argsMessage.");
-            }
-          }
-          break;
-        }
-      case _InvocationMirror._SUPER:
-        {
-          msgBuf.writeln("Super class of class '${_receiver.runtimeType}' has "
-              "no instance $typeStr '$memberName'$argsMessage.");
-          memberName = "super.$memberName";
-          break;
-        }
-      case _InvocationMirror._STATIC:
-        {
-          msgBuf.writeln("No static $typeStr '$memberName'$argsMessage "
-              "declared in class '$_receiver'.");
-          break;
-        }
-      case _InvocationMirror._CONSTRUCTOR:
-        {
-          msgBuf.writeln("No constructor '$memberName'$argsMessage declared "
-              "in class '$_receiver'.");
-          memberName = "new $memberName";
-          break;
-        }
-      case _InvocationMirror._TOP_LEVEL:
-        {
-          msgBuf.writeln("No top-level $typeStr '$memberName'$argsMessage "
-              "declared.");
-          break;
-        }
+      buffer.write("}");
     }
+    buffer.write(")");
+    return buffer.toString();
+  }
 
-    if (level == _InvocationMirror._TOP_LEVEL) {
-      msgBuf.writeln("Receiver: top-level");
-    } else {
-      msgBuf.writeln("Receiver: ${Error.safeToString(_receiver)}");
+  static String _symbolToString(Symbol symbol) {
+    if (symbol is internal.Symbol) {
+      return internal.Symbol.computeUnmangledName(symbol);
     }
-
-    if (type == _InvocationMirror._METHOD) {
-      String m = isTypeCall ? "$_receiver" : "$memberName";
-      msgBuf.write("Tried calling: $m($arguments)");
-    } else if (argumentCount == 0) {
-      msgBuf.write("Tried calling: $memberName");
-    } else if (type == _InvocationMirror._SETTER) {
-      msgBuf.write("Tried calling: $memberName$arguments");
-    } else {
-      msgBuf.write("Tried calling: $memberName = $arguments");
-    }
-
-    if (argsMismatch) {
-      StringBuffer formalParameters = new StringBuffer();
-      final argumentNames = _existingArgumentNames!;
-      for (int i = 0; i < argumentNames.length; i++) {
-        if (i > 0) {
-          formalParameters.write(", ");
-        }
-        formalParameters.write(argumentNames[i]);
-      }
-      msgBuf.write("\nFound: $memberName($formalParameters)");
-    }
-
-    return msgBuf.toString();
+    return "$symbol";
   }
 }
 
diff --git a/sdk_nnbd/lib/_internal/vm/lib/internal_patch.dart b/sdk_nnbd/lib/_internal/vm/lib/internal_patch.dart
index 2faf799..b7997c6 100644
--- a/sdk_nnbd/lib/_internal/vm/lib/internal_patch.dart
+++ b/sdk_nnbd/lib/_internal/vm/lib/internal_patch.dart
@@ -137,3 +137,16 @@
 
 void sendAndExit(SendPort sendPort, var message)
     native "SendPortImpl_sendAndExitInternal_";
+
+void spawnFunction(
+    SendPort readyPort,
+    String uri,
+    Function topLevelFunction,
+    var message,
+    bool paused,
+    bool errorsAreFatal,
+    SendPort? onExit,
+    SendPort? onError,
+    String? packageConfig,
+    bool newIsolateGroup,
+    String? debugName) native "Isolate_spawnFunction";
diff --git a/sdk_nnbd/lib/_internal/vm/lib/isolate_patch.dart b/sdk_nnbd/lib/_internal/vm/lib/isolate_patch.dart
index 1f97131..da2ed68 100644
--- a/sdk_nnbd/lib/_internal/vm/lib/isolate_patch.dart
+++ b/sdk_nnbd/lib/_internal/vm/lib/isolate_patch.dart
@@ -14,6 +14,7 @@
 
 import "dart:collection" show HashMap;
 import "dart:typed_data" show ByteBuffer, TypedData, Uint8List;
+import "dart:_internal" show spawnFunction;
 
 /// These are the additional parts of this patch library:
 // part "timer_impl.dart";
@@ -373,10 +374,21 @@
       script = await Isolate.resolvePackageUri(script);
     }
 
+    const bool newIsolateGroup = false;
     final RawReceivePort readyPort = new RawReceivePort();
     try {
-      _spawnFunction(readyPort.sendPort, script.toString(), entryPoint, message,
-          paused, errorsAreFatal, onExit, onError, packageConfig, debugName);
+      spawnFunction(
+          readyPort.sendPort,
+          script.toString(),
+          entryPoint,
+          message,
+          paused,
+          errorsAreFatal,
+          onExit,
+          onError,
+          packageConfig,
+          newIsolateGroup,
+          debugName);
       return await _spawnCommon(readyPort);
     } catch (e, st) {
       readyPort.close();
@@ -500,17 +512,7 @@
   static const _DEL_ERROR = 8;
   static const _ERROR_FATAL = 9;
 
-  static void _spawnFunction(
-      SendPort readyPort,
-      String uri,
-      Function topLevelFunction,
-      var message,
-      bool paused,
-      bool errorsAreFatal,
-      SendPort? onExit,
-      SendPort? onError,
-      String? packageConfig,
-      String? debugName) native "Isolate_spawnFunction";
+  // For 'spawnFunction' see internal_patch.dart.
 
   static void _spawnUri(
       SendPort readyPort,
diff --git a/sdk_nnbd/lib/html/dart2js/html_dart2js.dart b/sdk_nnbd/lib/html/dart2js/html_dart2js.dart
index 0a6e37b..2fb33d3 100644
--- a/sdk_nnbd/lib/html/dart2js/html_dart2js.dart
+++ b/sdk_nnbd/lib/html/dart2js/html_dart2js.dart
@@ -13674,7 +13674,9 @@
     if (Range.supportsCreateContextualFragment &&
         _canBeUsedToCreateContextualFragment) {
       _parseRange!.selectNodeContents(contextElement);
-      fragment = _parseRange!.createContextualFragment(html!);
+      // createContextualFragment expects a non-nullable html string.
+      // If null is passed, it gets converted to 'null' instead.
+      fragment = _parseRange!.createContextualFragment(html ?? 'null');
     } else {
       contextElement._innerHtml = html;
 
@@ -37166,16 +37168,18 @@
   }
 
   Future cancel() {
-    // Return type cannot be null due to override, so return empty Future
-    // instead.
-    var emptyFuture = new Future<void>.value();
-    if (_canceled) return emptyFuture;
+    // Check for strong mode. This function can no longer return null in strong
+    // mode, so only return null in weak mode to preserve synchronous timing.
+    // See issue 41653 for more details.
+    dynamic emptyFuture =
+        typeAcceptsNull<Event>() ? null : Future<void>.value();
+    if (_canceled) return emptyFuture as Future;
 
     _unlisten();
     // Clear out the target to indicate this is complete.
     _target = null;
     _onData = null;
-    return emptyFuture;
+    return emptyFuture as Future;
   }
 
   bool get _canceled => _target == null;
diff --git a/sdk_nnbd/lib/io/network_profiling.dart b/sdk_nnbd/lib/io/network_profiling.dart
index 59c47f4..5032d72 100644
--- a/sdk_nnbd/lib/io/network_profiling.dart
+++ b/sdk_nnbd/lib/io/network_profiling.dart
@@ -71,7 +71,7 @@
               'Method $method does not exist'));
       }
       return Future.value(ServiceExtensionResponse.result(responseJson));
-    } catch (errorMessage) {
+    } on dynamic catch (errorMessage) {
       return Future.value(ServiceExtensionResponse.error(
           ServiceExtensionResponse.invalidParams, errorMessage));
     }
diff --git a/sdk_nnbd/lib/vmservice/vmservice.dart b/sdk_nnbd/lib/vmservice/vmservice.dart
index 4b2988a..01847bb 100644
--- a/sdk_nnbd/lib/vmservice/vmservice.dart
+++ b/sdk_nnbd/lib/vmservice/vmservice.dart
@@ -336,7 +336,7 @@
       if (parsePermission('onPauseExit')) {
         pauseTypeMask |= RunningIsolate.kPauseOnExitMask;
       }
-    } catch (rpcError) {
+    } on dynamic catch (rpcError) {
       return rpcError;
     }
 
diff --git a/tests/compiler/dart2js/codegen/gvn_dynamic_field_get_test.dart b/tests/compiler/dart2js/codegen/gvn_dynamic_field_get_test.dart
deleted file mode 100644
index 48ceec8..0000000
--- a/tests/compiler/dart2js/codegen/gvn_dynamic_field_get_test.dart
+++ /dev/null
@@ -1,60 +0,0 @@
-// Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
-// 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.7
-// Test that dart2js gvns dynamic getters that don't have side
-// effects.
-
-import 'package:async_helper/async_helper.dart';
-import 'package:compiler/compiler_new.dart';
-import 'package:compiler/src/compiler.dart';
-import 'package:compiler/src/elements/names.dart';
-import 'package:compiler/src/universe/selector.dart' show Selector;
-import 'package:compiler/src/js_model/js_world.dart';
-import 'package:expect/expect.dart';
-import '../helpers/compiler_helper.dart';
-import '../helpers/memory_compiler.dart';
-
-const String TEST = r"""
-class A {
-  var foo;
-  bar(a) {
-    return a.foo + a.foo;
-  }
-}
-
-main() {
-  new A().bar(new Object());
-}
-""";
-
-main() {
-  runTests() async {
-    OutputCollector outputCollector = new OutputCollector();
-    CompilationResult result = await runCompiler(
-        memorySourceFiles: {'main.dart': TEST},
-        outputProvider: outputCollector);
-    Compiler compiler = result.compiler;
-    JsClosedWorld closedWorld = compiler.backendClosedWorldForTesting;
-    var elementEnvironment = closedWorld.elementEnvironment;
-
-    String generated = outputCollector.getOutput('', OutputType.js);
-    RegExp regexp = new RegExp(r"get\$foo");
-    Iterator matches = regexp.allMatches(generated).iterator;
-    checkNumberOfMatches(matches, 1);
-    dynamic cls =
-        elementEnvironment.lookupClass(elementEnvironment.mainLibrary, 'A');
-    Expect.isNotNull(cls);
-    String name = 'foo';
-    var element = elementEnvironment.lookupClassMember(cls, name);
-    Expect.isNotNull(element);
-    Selector selector = new Selector.getter(new PublicName(name));
-    Expect.isFalse(closedWorld.hasAnyUserDefinedGetter(selector, null));
-  }
-
-  asyncTest(() async {
-    print('--test from kernel------------------------------------------------');
-    await runTests();
-  });
-}
diff --git a/tests/compiler/dart2js/codegen/list_tracer_length_test.dart b/tests/compiler/dart2js/codegen/list_tracer_length_test.dart
index 7b81c20..69b22c6 100644
--- a/tests/compiler/dart2js/codegen/list_tracer_length_test.dart
+++ b/tests/compiler/dart2js/codegen/list_tracer_length_test.dart
@@ -76,7 +76,7 @@
 """;
 
 const String TEST8 = r"""
-var b = 42;
+var b = int.parse('42');
 var a = new List(b);
 main() {
   return a[1];
@@ -91,8 +91,9 @@
 }
 """;
 
-checkRangeError(String test, {bool hasRangeError}) async {
-  String generated = await compileAll(test);
+checkRangeError(String test, {bool hasRangeError, String methodName}) async {
+  String generated =
+      await compile(test, methodName: methodName, disableTypeInference: false);
   Expect.equals(
       hasRangeError,
       generated.contains('ioore'),
@@ -110,7 +111,7 @@
     await checkRangeError(TEST3, hasRangeError: false);
     await checkRangeError(TEST4, hasRangeError: true);
     await checkRangeError(TEST5, hasRangeError: true);
-    await checkRangeError(TEST6, hasRangeError: true);
+    await checkRangeError(TEST6, hasRangeError: true, methodName: 'foo');
     await checkRangeError(TEST7, hasRangeError: false);
     await checkRangeError(TEST8, hasRangeError: true);
     await checkRangeError(TEST9, hasRangeError: false);
diff --git a/tests/compiler/dart2js/codegen/side_effect_tdiv_regression_test.dart b/tests/compiler/dart2js/codegen/side_effect_tdiv_regression_test.dart
index aed03d0..234611b 100644
--- a/tests/compiler/dart2js/codegen/side_effect_tdiv_regression_test.dart
+++ b/tests/compiler/dart2js/codegen/side_effect_tdiv_regression_test.dart
@@ -11,16 +11,21 @@
 
 const String TEST = r'''
 class A {
-  var field = 42;
+  int field = 0;
+}
+dynamic g;
+test(A a) {
+  var b = [42, -1];
+  var c = a.field;
+  g = b[0] ~/ b[1];
+  // `~/` on numbers is known to have no effects so it should not block
+  // store-forwarding of a field.
+  return c + a.field;
 }
 main() {
-  var a = new A();
-  var b = [42, -1];
-  // Force a setter on [field].
-  if (false) a.field = 12;
-  var c = a.field;
-  print(b[0] ~/ b[1]);
-  return c + a.field;
+  // Assign field so it is not defacto final.
+  test(A()..field = 42);
+  test(A()..field = 43);
 }
 ''';
 
diff --git a/tests/compiler/dart2js/codegen/simple_function_subtype_test.dart b/tests/compiler/dart2js/codegen/simple_function_subtype_test.dart
deleted file mode 100644
index dd2bdaf..0000000
--- a/tests/compiler/dart2js/codegen/simple_function_subtype_test.dart
+++ /dev/null
@@ -1,72 +0,0 @@
-// Copyright (c) 2013, the Dart project authors.  Please see the AUTHORS file
-// 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.7
-
-// Test that simple function subtype checks use predicates.
-
-library simple_function_subtype_test;
-
-import 'package:expect/expect.dart';
-import 'package:async_helper/async_helper.dart';
-import '../helpers/compiler_helper.dart';
-
-const String TEST = r"""
-typedef Args0();
-typedef Args1(a);
-typedef Args2(a, b);
-typedef Args3(a, b, c);
-typedef Args4(a, b, c, d);
-typedef Args5(a, b, c, d, e);
-typedef Args6(a, b, c, d, e, f);
-typedef Args7(a, b, c, d, e, f, g);
-typedef Args8(a, b, c, d, e, f, g, h);
-typedef Args9(a, b, c, d, e, f, g, h, i);
-typedef Args10(a, b, c, d, e, f, g, h, i, j);
-typedef Args11(a, b, c, d, e, f, g, h, i, j, k);
-typedef Args12(a, b, c, d, e, f, g, h, i, j, k, l);
-typedef Args13(a, b, c, d, e, f, g, h, i, j, k, l, m);
-typedef Args14(a, b, c, d, e, f, g, h, i, j, k, l, m, n);
-typedef Args15(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o);
-
-args5_10(a, b, c, d, e, [f, g, h, i, j]) {}
-
-foo() {
-  print(args5_10 is Args0);
-  print(args5_10 is Args1);
-  print(args5_10 is Args2);
-  print(args5_10 is Args3);
-  print(args5_10 is Args4);
-  print(args5_10 is Args5);
-  print(args5_10 is Args6);
-  print(args5_10 is Args7);
-  print(args5_10 is Args8);
-  print(args5_10 is Args9);
-  print(args5_10 is Args10);
-  print(args5_10 is Args11);
-  print(args5_10 is Args12);
-  print(args5_10 is Args13);
-  print(args5_10 is Args14);
-  print(args5_10 is Args15);
-}
-""";
-
-main() {
-  runTest() async {
-    await compile(TEST, entry: 'foo', check: (String generated) {
-      for (int i = 0; i <= 15; i++) {
-        String predicateCheck = '.\$is_args$i';
-        Expect.isTrue(generated.contains(predicateCheck),
-            'Expected predicate check $predicateCheck');
-      }
-      Expect.isFalse(generated.contains('checkFunctionSubtype'),
-          'Unexpected use of checkFunctionSubtype');
-    });
-  }
-
-  asyncTest(() async {
-    print('--test from kernel------------------------------------------------');
-    await runTest();
-  });
-}
diff --git a/tests/compiler/dart2js/codegen/variance_subtype_cast_test.dart b/tests/compiler/dart2js/codegen/variance_subtype_cast_test.dart
index f77cd3b..be34b8e 100644
--- a/tests/compiler/dart2js/codegen/variance_subtype_cast_test.dart
+++ b/tests/compiler/dart2js/codegen/variance_subtype_cast_test.dart
@@ -14,7 +14,8 @@
 foo(param) {
   LegacyCovariant<num> c = LegacyCovariant<num>();
   (c as LegacyCovariant<int>).method();
-  // present: 'LegacyCovariant_int._as'
+  // present: '._as('
+  // present: /(legacy_)?LegacyCovariant_(legacy_)?int._as/
 }
 """;
 
@@ -25,7 +26,7 @@
 foo(param) {
   LegacyCovariant<num> c = LegacyCovariant<num>();
   (c as LegacyCovariant<Object>).method();
-  // absent: 'LegacyCovariant_Object._as'
+  // absent: '._as('
 }
 """;
 
@@ -36,7 +37,8 @@
 foo(param) {
   Covariant<num> c = Covariant<num>();
   (c as Covariant<int>).method();
-  // present: 'Covariant_int._as'
+  // present: '._as('
+  // present: /(legacy_)?Covariant_(legacy_)?int._as/
 }
 """;
 
@@ -47,7 +49,7 @@
 foo(param) {
   Covariant<num> c = Covariant<num>();
   (c as Covariant<Object>).method();
-  // absent: 'Covariant_Object._as'
+  // absent: '._as('
 }
 """;
 
@@ -58,7 +60,8 @@
 foo(param) {
   Contravariant<num> c = Contravariant<num>();
   (c as Contravariant<Object>).method();
-  // present: 'Contravariant_Object._as'
+  // present: '._as('
+  // present: /(legacy_)?Contravariant_(legacy_)?Object._as/
 }
 """;
 
@@ -69,7 +72,7 @@
 foo(param) {
   Contravariant<num> c = Contravariant<num>();
   (c as Contravariant<int>).method();
-  // absent: 'Contravariant_int._as'
+  // absent: '._as('
 }
 """;
 
@@ -80,7 +83,8 @@
 foo(param) {
   Invariant<num> i = Invariant<num>();
   (i as Invariant<Object>).method();
-  // present: 'Invariant_Object._as'
+  // present: '._as('
+  // present: /(legacy_)?Invariant_(legacy_)?Object._as/
 }
 """;
 
@@ -91,7 +95,8 @@
 foo(param) {
   Invariant<num> i = Invariant<num>();
   (i as Invariant<int>).method();
-  // present: 'Invariant_int._as'
+  // present: '._as('
+  // present: /(legacy_)?Invariant_(legacy_)?int._as/
 }
 """;
 
@@ -102,7 +107,7 @@
 foo(param) {
   Invariant<num> i = Invariant<num>();
   (i as Invariant<num>).method();
-  // absent: 'Invariant_num._as'
+  // absent: '._as('
 }
 """;
 
diff --git a/tests/compiler/dart2js/end_to_end/generate_code_with_compile_time_errors_test.dart b/tests/compiler/dart2js/end_to_end/generate_code_with_compile_time_errors_test.dart
deleted file mode 100644
index d195707..0000000
--- a/tests/compiler/dart2js/end_to_end/generate_code_with_compile_time_errors_test.dart
+++ /dev/null
@@ -1,76 +0,0 @@
-// Copyright (c) 2015, the Dart project authors.  Please see the AUTHORS file
-// 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.7
-
-// Test that the compiler can generates code with compile time error according
-// to the compiler options.
-
-library dart2js.test.generate_code_with_compile_time_errors;
-
-import 'package:expect/expect.dart';
-import 'package:async_helper/async_helper.dart';
-import 'package:compiler/src/compiler.dart';
-import 'package:compiler/src/js_model/js_strategy.dart';
-import '../helpers/memory_compiler.dart';
-import '../helpers/output_collector.dart';
-
-const MEMORY_SOURCE_FILES = const {
-  'main.dart': ''' 
-foo() {
- const [ new List() ];
-}
-
-main() {
-  foo();
-}
-''',
-};
-
-test(List<String> options,
-    {bool expectedOutput,
-    bool expectedCodeGenerated,
-    bool expectHint: false}) async {
-  DiagnosticCollector collector = new DiagnosticCollector();
-  OutputCollector outputCollector = new OutputCollector();
-  CompilationResult result = await runCompiler(
-      memorySourceFiles: MEMORY_SOURCE_FILES,
-      diagnosticHandler: collector,
-      outputProvider: outputCollector,
-      options: options);
-  Compiler compiler = result.compiler;
-  Expect.isFalse(result.isSuccess, "Expected compilation failure.");
-  Expect.isTrue(
-      collector.warnings.isEmpty, "Unexpected warnings: ${collector.warnings}");
-  Expect.isFalse(collector.errors.isEmpty, "Expected compile-time errors.");
-  Expect.equals(expectHint, collector.hints.isNotEmpty,
-      "Unexpected hints: ${collector.warnings}");
-
-  JsBackendStrategy backendStrategy = compiler.backendStrategy;
-  bool isCodeGenerated = backendStrategy.generatedCode.isNotEmpty;
-  Expect.equals(
-      expectedCodeGenerated,
-      isCodeGenerated,
-      expectedCodeGenerated
-          ? "Expected generated code for options $options."
-          : "Expected no code generated for options $options.");
-  Expect.equals(
-      expectedOutput,
-      outputCollector.outputMap.isNotEmpty,
-      expectedOutput
-          ? "Expected output for options $options."
-          : "Expected no output for options $options.");
-}
-
-void main() {
-  asyncTest(() async {
-    await test([], expectedCodeGenerated: false, expectedOutput: false);
-    await test(['--test-mode'],
-        expectedCodeGenerated: false, expectedOutput: false);
-    await test(['--generate-code-with-compile-time-errors'],
-        expectedCodeGenerated: true, expectedOutput: true);
-    await test(['--generate-code-with-compile-time-errors', '--test-mode'],
-        expectedCodeGenerated: true, expectedOutput: false);
-  });
-}
diff --git a/tests/compiler/dart2js/helpers/compiler_helper.dart b/tests/compiler/dart2js/helpers/compiler_helper.dart
index 5a39fad..183ee1f 100644
--- a/tests/compiler/dart2js/helpers/compiler_helper.dart
+++ b/tests/compiler/dart2js/helpers/compiler_helper.dart
@@ -220,7 +220,8 @@
     }
     for (Match match in matches) {
       String directive = match.group(1);
-      String pattern = match.groups([2, 3]).where((s) => s != null).single;
+      Pattern pattern = match.groups([2, 3, 4]).where((s) => s != null).single;
+      if (match.group(4) != null) pattern = RegExp(pattern);
       if (directive == 'present') {
         Expect.isTrue(generated.contains(pattern),
             "Cannot find '$pattern' in:\n$generated");
@@ -236,5 +237,6 @@
 }
 
 RegExp _directivePattern = new RegExp(
-    //      \1                     \2        \3
-    r'''// *(present|absent): *(?:"([^"]*)"|'([^'']*)')''', multiLine: true);
+    //      \1                     \2        \3         \4
+    r'''// *(present|absent): *(?:"([^"]*)"|'([^'']*)'|/(.*)/)''',
+    multiLine: true);
diff --git a/tests/compiler/dart2js/helpers/memory_compiler.dart b/tests/compiler/dart2js/helpers/memory_compiler.dart
index e941153..3fd019f 100644
--- a/tests/compiler/dart2js/helpers/memory_compiler.dart
+++ b/tests/compiler/dart2js/helpers/memory_compiler.dart
@@ -26,7 +26,7 @@
 export 'diagnostic_helper.dart';
 
 bool isDart2jsNnbd =
-    Platform.environment['DART_CONFIGURATION'] == 'ReleaseX64NNBD';
+    !Platform.environment['DART_CONFIGURATION'].endsWith('Legacy');
 
 String sdkPath = isDart2jsNnbd ? 'sdk_nnbd/lib' : 'sdk/lib';
 
diff --git a/tests/compiler/dart2js/inference/data/mixin_constructor_default_parameter_values/lib.dart b/tests/compiler/dart2js/inference/data/mixin_constructor_default_parameter_values/lib.dart
index b759f52..3fc8ed9 100644
--- a/tests/compiler/dart2js/inference/data/mixin_constructor_default_parameter_values/lib.dart
+++ b/tests/compiler/dart2js/inference/data/mixin_constructor_default_parameter_values/lib.dart
@@ -5,7 +5,6 @@
 // @dart = 2.7
 
 class _SECRET {
-  /*member: _SECRET.:[exact=_SECRET]*/
   const _SECRET();
   /*member: _SECRET.toString:Value([exact=JSString], value: "SECRET!")*/
   @override
@@ -16,12 +15,13 @@
   /*member: C.x:[exact=JSUInt31]*/
   final int x;
 
-  /*member: C.y:Union([exact=JSString], [exact=_SECRET])*/
+  /*member: C.y:Union(null, [exact=JSString], [exact=_SECRET])*/
   final y;
 
   /*member: C.a:[exact=C]*/
   C.a(int /*[exact=JSUInt31]*/ x,
-      [var /*Union([exact=JSString], [exact=_SECRET])*/ b = const _SECRET()])
+      [var /*Value([null|exact=JSString], value: "overt")*/ b =
+          const _SECRET()])
       : this.x = x,
         this.y = b;
 
diff --git a/tests/compiler/dart2js/inference/inference_test_helper.dart b/tests/compiler/dart2js/inference/inference_test_helper.dart
index 5e70947..fa5feb0 100644
--- a/tests/compiler/dart2js/inference/inference_test_helper.dart
+++ b/tests/compiler/dart2js/inference/inference_test_helper.dart
@@ -20,10 +20,7 @@
 import '../equivalence/id_equivalence.dart';
 import '../equivalence/id_equivalence_helper.dart';
 
-const List<String> skip = const <String>[
-  // TODO(johnniwinther): Remove this when issue 31767 is fixed.
-  'mixin_constructor_default_parameter_values',
-];
+const List<String> skip = const <String>[];
 
 main(List<String> args) {
   runTests(args);
diff --git a/tests/compiler/dart2js/model/strong_mode_impact_test.dart b/tests/compiler/dart2js/model/strong_mode_impact_test.dart
index bb7c914..422f7ea 100644
--- a/tests/compiler/dart2js/model/strong_mode_impact_test.dart
+++ b/tests/compiler/dart2js/model/strong_mode_impact_test.dart
@@ -10,6 +10,7 @@
 import 'package:compiler/src/compiler.dart';
 import 'package:compiler/src/common_elements.dart';
 import 'package:compiler/src/elements/entities.dart';
+import 'package:compiler/src/elements/types.dart';
 import 'package:compiler/src/world.dart';
 import 'package:compiler/src/universe/use.dart';
 import 'package:compiler/src/universe/world_impact.dart';
@@ -57,7 +58,7 @@
 }
 ''';
 
-  Map<String, Impact> expectedImpactMap = <String, Impact>{
+  Map<String, Impact> expectedImpactMapNnbdOff = <String, Impact>{
     'method1': const Impact(),
     'method2': new Impact(implicitCasts: ['int']),
     'method3': new Impact(parameterChecks: ['int']),
@@ -73,11 +74,36 @@
     'method13': new Impact(implicitCasts: ['int'], parameterChecks: ['String']),
   };
 
+  Map<String, Impact> expectedImpactMapNnbdOn = <String, Impact>{
+    'method1': const Impact(),
+    'method2': new Impact(implicitCasts: ['int*']),
+    'method3': new Impact(parameterChecks: ['int*']),
+    'method4': new Impact(asCasts: ['int*']),
+    'method5': const Impact(),
+    'method6': const Impact(),
+    'method7': const Impact(),
+    'method8': const Impact(),
+    'method9': new Impact(implicitCasts: ['int*']),
+    'method10': const Impact(),
+    'method11': const Impact(),
+    'method12': const Impact(),
+    'method13':
+        new Impact(implicitCasts: ['int*'], parameterChecks: ['String*']),
+  };
+
+  Map<String, Impact> expectedImpactMap =
+      isDart2jsNnbd ? expectedImpactMapNnbdOn : expectedImpactMapNnbdOff;
   retainDataForTesting = true;
   CompilationResult result =
       await runCompiler(memorySourceFiles: {'main.dart': source});
   Expect.isTrue(result.isSuccess);
   Compiler compiler = result.compiler;
+  var options = compiler.options;
+
+  String printType(DartType type) {
+    return type.toStructuredText(
+        printLegacyStars: true, useLegacySubtyping: options.useLegacySubtyping);
+  }
 
   KClosedWorld closedWorld = compiler.frontendClosedWorldForTesting;
   ElementEnvironment elementEnvironment = closedWorld.elementEnvironment;
@@ -100,7 +126,7 @@
     String context = 'in $member:\n'
         'Expected: $expectedImpact\nActual: $typeUses';
     for (TypeUse typeUse in typeUses) {
-      String type = '${typeUse.type}';
+      String type = printType(typeUse.type);
       switch (typeUse.kind) {
         case TypeUseKind.AS_CAST:
           Expect.isTrue(asCasts.contains(type), "Extra $typeUse $context");
diff --git a/tests/compiler/dart2js/rti/data/as.dart b/tests/compiler/dart2js/rti/data/as.dart
index 1b2e5b5..d61df9a 100644
--- a/tests/compiler/dart2js/rti/data/as.dart
+++ b/tests/compiler/dart2js/rti/data/as.dart
@@ -14,7 +14,8 @@
 /*class: Bar:*/
 class Bar<T extends num> {}
 
-/*class: Baz:explicit=[Baz<num>],needsArgs*/
+/*spec:nnbd-off|prod:nnbd-off.class: Baz:explicit=[Baz<num>],needsArgs*/
+/*spec:nnbd-sdk|prod:nnbd-sdk.class: Baz:explicit=[Baz<num*>*],needsArgs*/
 class Baz<T extends num> {}
 
 @pragma('dart2js:disableFinal')
diff --git a/tests/compiler/dart2js/rti/data/async_foreach.dart b/tests/compiler/dart2js/rti/data/async_foreach.dart
index 16b3479..3da2228 100644
--- a/tests/compiler/dart2js/rti/data/async_foreach.dart
+++ b/tests/compiler/dart2js/rti/data/async_foreach.dart
@@ -5,7 +5,8 @@
 // @dart = 2.7
 
 /*spec:nnbd-off.class: Class:direct,explicit=[Class.T],implicit=[Class.T],needsArgs*/
-/*prod:nnbd-off.class: Class:needsArgs*/
+/*prod:nnbd-off|prod:nnbd-sdk.class: Class:needsArgs*/
+/*spec:nnbd-sdk.class: Class:direct,explicit=[Class.T*],implicit=[Class.T],needsArgs*/
 class Class<T> {
   method() {
     var list = <T>[];
@@ -16,8 +17,7 @@
     // This happens because the closure is thought as possibly going to the
     // async.errorHandler callback.
     list.forEach(
-        /*spec:nnbd-off.needsSignature*/
-        /*prod:nnbd-off.needsSignature*/
+        /*needsSignature*/
         (x) => print(x));
   }
 }
diff --git a/tests/compiler/dart2js/rti/data/async_foreach_nonasync.dart b/tests/compiler/dart2js/rti/data/async_foreach_nonasync.dart
index 208a51d..98b2c41 100644
--- a/tests/compiler/dart2js/rti/data/async_foreach_nonasync.dart
+++ b/tests/compiler/dart2js/rti/data/async_foreach_nonasync.dart
@@ -5,15 +5,14 @@
 // @dart = 2.7
 
 /*spec:nnbd-off.class: Class:direct,explicit=[Class.T],implicit=[Class.T],needsArgs*/
-/*prod:nnbd-off.class: Class:*/
+/*spec:nnbd-sdk.class: Class:direct,explicit=[Class.T*],implicit=[Class.T],needsArgs*/
 class Class<T> {
   method() {
     var list = <T>[];
     // If any method was `async`, this would have triggered the need for type
     // arguments on `Class`. See the 'async_foreach.dart' test.
     list.forEach(
-        /*spec:nnbd-off.needsSignature*/
-        /*prod:nnbd-off.*/
+        /*spec:nnbd-off|spec:nnbd-sdk.needsSignature*/
         (x) => print(x));
   }
 }
diff --git a/tests/compiler/dart2js/rti/data/async_local.dart b/tests/compiler/dart2js/rti/data/async_local.dart
index a402273..13149d7 100644
--- a/tests/compiler/dart2js/rti/data/async_local.dart
+++ b/tests/compiler/dart2js/rti/data/async_local.dart
@@ -12,8 +12,7 @@
   // This happens because the closure is thought as possibly going to the
   // async.errorHandler callback.
 
-  /*spec:nnbd-off.needsSignature*/
-  /*prod:nnbd-off.needsSignature*/
+  /*needsSignature*/
   local(object, stacktrace) => null;
 
   return local;
diff --git a/tests/compiler/dart2js/rti/data/async_local_nonasync.dart b/tests/compiler/dart2js/rti/data/async_local_nonasync.dart
index 350559d..5ebef70 100644
--- a/tests/compiler/dart2js/rti/data/async_local_nonasync.dart
+++ b/tests/compiler/dart2js/rti/data/async_local_nonasync.dart
@@ -8,8 +8,6 @@
   // If any method was `async`, this would have triggered the need for the
   // signature on this closure. See the 'async_local.dart' test.
 
-  /*spec:nnbd-off.*/
-  /*prod:nnbd-off.*/
   local(object, stacktrace) => null;
 
   return local;
diff --git a/tests/compiler/dart2js/rti/data/async_local_typed.dart b/tests/compiler/dart2js/rti/data/async_local_typed.dart
index 3ef5a62..37b3a75 100644
--- a/tests/compiler/dart2js/rti/data/async_local_typed.dart
+++ b/tests/compiler/dart2js/rti/data/async_local_typed.dart
@@ -5,7 +5,7 @@
 // @dart = 2.7
 
 /*spec:nnbd-off.class: Class:explicit=[Class<int>],needsArgs*/
-/*prod:nnbd-off.class: Class:*/
+/*spec:nnbd-sdk.class: Class:explicit=[Class<int*>*],needsArgs*/
 class Class<T> {}
 
 main() async {
@@ -14,8 +14,7 @@
   // `dynamic Function(dynamic, Class<int>)`, is not a potential subtype and
   // therefore doesn't need its signature.
 
-  /*spec:nnbd-off.needsSignature*/
-  /*prod:nnbd-off.*/
+  /*spec:nnbd-off|spec:nnbd-sdk.needsSignature*/
   local(object, Class<int> stacktrace) => null;
 
   return local;
diff --git a/tests/compiler/dart2js/rti/data/call_typed_generic.dart b/tests/compiler/dart2js/rti/data/call_typed_generic.dart
index 2dbf94e..d135a92 100644
--- a/tests/compiler/dart2js/rti/data/call_typed_generic.dart
+++ b/tests/compiler/dart2js/rti/data/call_typed_generic.dart
@@ -7,10 +7,9 @@
 import 'package:expect/expect.dart';
 
 /*spec:nnbd-off.class: A:direct,explicit=[A.T],needsArgs*/
-/*prod:nnbd-off.class: A:*/
+/*spec:nnbd-sdk.class: A:direct,explicit=[A.T*],needsArgs*/
 class A<T> {
-  /*spec:nnbd-off.member: A.call:*/
-  /*prod:nnbd-off.member: A.call:*/
+  /*spec:nnbd-off|prod:nnbd-off.member: A.call:*/
   call(T t) {}
 }
 
diff --git a/tests/compiler/dart2js/rti/data/closure.dart b/tests/compiler/dart2js/rti/data/closure.dart
index ab166f5..5ed9c92b 100644
--- a/tests/compiler/dart2js/rti/data/closure.dart
+++ b/tests/compiler/dart2js/rti/data/closure.dart
@@ -4,8 +4,9 @@
 
 // @dart = 2.7
 
-/*prod:nnbd-off.class: A:needsArgs*/
+/*prod:nnbd-off|prod:nnbd-sdk.class: A:needsArgs*/
 /*spec:nnbd-off.class: A:direct,explicit=[A.T],needsArgs*/
+/*spec:nnbd-sdk.class: A:direct,explicit=[A.T*],needsArgs*/
 class A<T> {
   m() {
     return /*needsSignature*/ (T t) {};
@@ -16,8 +17,7 @@
     // TODO(johnniwinther): Optimize local function type signature need.
     return
 
-        /*spec:nnbd-off.needsSignature*/
-        /*prod:nnbd-off.needsSignature*/
+        /*needsSignature*/
         (int t) {};
   }
 }
diff --git a/tests/compiler/dart2js/rti/data/closure_generic_unneeded.dart b/tests/compiler/dart2js/rti/data/closure_generic_unneeded.dart
index 229f8f7..05e0a5b 100644
--- a/tests/compiler/dart2js/rti/data/closure_generic_unneeded.dart
+++ b/tests/compiler/dart2js/rti/data/closure_generic_unneeded.dart
@@ -4,12 +4,12 @@
 
 // @dart = 2.7
 
-/*prod:nnbd-off.class: A:*/
 /*spec:nnbd-off.class: A:direct,explicit=[A.T],needsArgs*/
+/*spec:nnbd-sdk.class: A:direct,explicit=[A.T*],needsArgs*/
 class A<T> {
   @pragma('dart2js:noInline')
   m() {
-    return /**/ (T t, String s) {};
+    return (T t, String s) {};
   }
 }
 
diff --git a/tests/compiler/dart2js/rti/data/closure_unneeded.dart b/tests/compiler/dart2js/rti/data/closure_unneeded.dart
index 229f8f7..05e0a5b 100644
--- a/tests/compiler/dart2js/rti/data/closure_unneeded.dart
+++ b/tests/compiler/dart2js/rti/data/closure_unneeded.dart
@@ -4,12 +4,12 @@
 
 // @dart = 2.7
 
-/*prod:nnbd-off.class: A:*/
 /*spec:nnbd-off.class: A:direct,explicit=[A.T],needsArgs*/
+/*spec:nnbd-sdk.class: A:direct,explicit=[A.T*],needsArgs*/
 class A<T> {
   @pragma('dart2js:noInline')
   m() {
-    return /**/ (T t, String s) {};
+    return (T t, String s) {};
   }
 }
 
diff --git a/tests/compiler/dart2js/rti/data/direct.dart b/tests/compiler/dart2js/rti/data/direct.dart
index e7a05cf..dadfd6e 100644
--- a/tests/compiler/dart2js/rti/data/direct.dart
+++ b/tests/compiler/dart2js/rti/data/direct.dart
@@ -4,7 +4,8 @@
 
 // @dart = 2.7
 
-/*class: A:explicit=[A<int>],needsArgs*/
+/*spec:nnbd-off|prod:nnbd-off.class: A:explicit=[A<int>],needsArgs*/
+/*spec:nnbd-sdk|prod:nnbd-sdk.class: A:explicit=[A<int*>*],needsArgs*/
 class A<T> {}
 
 main() {
diff --git a/tests/compiler/dart2js/rti/data/dynamic_is.dart b/tests/compiler/dart2js/rti/data/dynamic_is.dart
index 9edf610..44855c2 100644
--- a/tests/compiler/dart2js/rti/data/dynamic_is.dart
+++ b/tests/compiler/dart2js/rti/data/dynamic_is.dart
@@ -5,7 +5,8 @@
 // @dart = 2.7
 
 class A {
-  /*member: A.instanceMethod:direct,explicit=[instanceMethod.T],needsArgs,selectors=[Selector(call, instanceMethod, arity=1, types=1)]*/
+  /*spec:nnbd-off|prod:nnbd-off.member: A.instanceMethod:direct,explicit=[instanceMethod.T],needsArgs,selectors=[Selector(call, instanceMethod, arity=1, types=1)]*/
+  /*spec:nnbd-sdk|prod:nnbd-sdk.member: A.instanceMethod:direct,explicit=[instanceMethod.T*],needsArgs,selectors=[Selector(call, instanceMethod, arity=1, types=1)]*/
   instanceMethod<T>(t) => t is T;
 }
 
diff --git a/tests/compiler/dart2js/rti/data/dynamic_is2.dart b/tests/compiler/dart2js/rti/data/dynamic_is2.dart
index 5018f3a..aadb3f5 100644
--- a/tests/compiler/dart2js/rti/data/dynamic_is2.dart
+++ b/tests/compiler/dart2js/rti/data/dynamic_is2.dart
@@ -4,10 +4,11 @@
 
 // @dart = 2.7
 
-/*prod:nnbd-off.class: A:*/
 /*spec:nnbd-off.class: A:explicit=[A]*/
+/*spec:nnbd-sdk.class: A:explicit=[A*]*/
 class A {
-  /*member: A.instanceMethod:deps=[B.instanceMethod],direct,explicit=[instanceMethod.T],needsArgs,selectors=[Selector(call, instanceMethod, arity=1, types=1)]*/
+  /*spec:nnbd-off|prod:nnbd-off.member: A.instanceMethod:deps=[B.instanceMethod],direct,explicit=[instanceMethod.T],needsArgs,selectors=[Selector(call, instanceMethod, arity=1, types=1)]*/
+  /*spec:nnbd-sdk|prod:nnbd-sdk.member: A.instanceMethod:deps=[B.instanceMethod],direct,explicit=[instanceMethod.T*],needsArgs,selectors=[Selector(call, instanceMethod, arity=1, types=1)]*/
   instanceMethod<T>(t) => t is T;
 }
 
diff --git a/tests/compiler/dart2js/rti/data/dynamic_is_closure.dart b/tests/compiler/dart2js/rti/data/dynamic_is_closure.dart
index e224bf8..c3c5d22 100644
--- a/tests/compiler/dart2js/rti/data/dynamic_is_closure.dart
+++ b/tests/compiler/dart2js/rti/data/dynamic_is_closure.dart
@@ -5,7 +5,8 @@
 // @dart = 2.7
 
 class A {
-  /*member: A.instanceMethod:direct,explicit=[instanceMethod.T],needsArgs,selectors=[Selector(call, instanceMethod, arity=1, types=1)]*/
+  /*spec:nnbd-off|prod:nnbd-off.member: A.instanceMethod:direct,explicit=[instanceMethod.T],needsArgs,selectors=[Selector(call, instanceMethod, arity=1, types=1)]*/
+  /*spec:nnbd-sdk|prod:nnbd-sdk.member: A.instanceMethod:direct,explicit=[instanceMethod.T*],needsArgs,selectors=[Selector(call, instanceMethod, arity=1, types=1)]*/
   instanceMethod<T>(t) => t is T;
 }
 
diff --git a/tests/compiler/dart2js/rti/data/dynamic_is_closure2.dart b/tests/compiler/dart2js/rti/data/dynamic_is_closure2.dart
index 26842e1..2434fcc 100644
--- a/tests/compiler/dart2js/rti/data/dynamic_is_closure2.dart
+++ b/tests/compiler/dart2js/rti/data/dynamic_is_closure2.dart
@@ -5,7 +5,8 @@
 // @dart = 2.7
 
 class A {
-  /*member: A.instanceMethod:deps=[local],direct,explicit=[instanceMethod.T],needsArgs,selectors=[Selector(call, instanceMethod, arity=1, types=1)]*/
+  /*spec:nnbd-off|prod:nnbd-off.member: A.instanceMethod:deps=[local],direct,explicit=[instanceMethod.T],needsArgs,selectors=[Selector(call, instanceMethod, arity=1, types=1)]*/
+  /*spec:nnbd-sdk|prod:nnbd-sdk.member: A.instanceMethod:deps=[local],direct,explicit=[instanceMethod.T*],needsArgs,selectors=[Selector(call, instanceMethod, arity=1, types=1)]*/
   instanceMethod<T>(t) => t is T;
 }
 
diff --git a/tests/compiler/dart2js/rti/data/dynamic_not2.dart b/tests/compiler/dart2js/rti/data/dynamic_not2.dart
index 83b7dda..c9c002a 100644
--- a/tests/compiler/dart2js/rti/data/dynamic_not2.dart
+++ b/tests/compiler/dart2js/rti/data/dynamic_not2.dart
@@ -5,6 +5,7 @@
 // @dart = 2.7
 
 /*spec:nnbd-off.class: A:explicit=[A]*/
+/*spec:nnbd-sdk.class: A:explicit=[A*]*/
 class A {
   /*member: A.instanceMethod:deps=[B.instanceMethod]*/
   instanceMethod<T>(t) => t;
diff --git a/tests/compiler/dart2js/rti/data/dynamic_tear_off.dart b/tests/compiler/dart2js/rti/data/dynamic_tear_off.dart
index d69f33e..280839c 100644
--- a/tests/compiler/dart2js/rti/data/dynamic_tear_off.dart
+++ b/tests/compiler/dart2js/rti/data/dynamic_tear_off.dart
@@ -4,7 +4,8 @@
 
 // @dart = 2.7
 
-/*member: staticMethod:direct,explicit=[staticMethod.T],needsArgs,selectors=[Selector(call, call, arity=1, types=1)]*/
+/*spec:nnbd-off|prod:nnbd-off.member: staticMethod:direct,explicit=[staticMethod.T],needsArgs,selectors=[Selector(call, call, arity=1, types=1)]*/
+/*spec:nnbd-sdk|prod:nnbd-sdk.member: staticMethod:direct,explicit=[staticMethod.T*],needsArgs,selectors=[Selector(call, call, arity=1, types=1)]*/
 staticMethod<T>(t) => t is T;
 
 main() {
diff --git a/tests/compiler/dart2js/rti/data/dynamic_tear_off2.dart b/tests/compiler/dart2js/rti/data/dynamic_tear_off2.dart
index af93d70..c8fe9a3 100644
--- a/tests/compiler/dart2js/rti/data/dynamic_tear_off2.dart
+++ b/tests/compiler/dart2js/rti/data/dynamic_tear_off2.dart
@@ -4,7 +4,8 @@
 
 // @dart = 2.7
 
-/*member: staticMethod:deps=[B.instanceMethod],direct,explicit=[staticMethod.T],needsArgs,selectors=[Selector(call, call, arity=1, types=1)]*/
+/*spec:nnbd-off|prod:nnbd-off.member: staticMethod:deps=[B.instanceMethod],direct,explicit=[staticMethod.T],needsArgs,selectors=[Selector(call, call, arity=1, types=1)]*/
+/*spec:nnbd-sdk|prod:nnbd-sdk.member: staticMethod:deps=[B.instanceMethod],direct,explicit=[staticMethod.T*],needsArgs,selectors=[Selector(call, call, arity=1, types=1)]*/
 staticMethod<T>(t) => t is T;
 
 class B {
diff --git a/tests/compiler/dart2js/rti/data/dynamic_tear_off3.dart b/tests/compiler/dart2js/rti/data/dynamic_tear_off3.dart
index 666f0f9..84bce6e 100644
--- a/tests/compiler/dart2js/rti/data/dynamic_tear_off3.dart
+++ b/tests/compiler/dart2js/rti/data/dynamic_tear_off3.dart
@@ -4,10 +4,11 @@
 
 // @dart = 2.7
 
-/*prod:nnbd-off.class: A:*/
 /*spec:nnbd-off.class: A:explicit=[A]*/
+/*spec:nnbd-sdk.class: A:explicit=[A*]*/
 class A {
-  /*member: A.instanceMethod:deps=[staticMethod],direct,explicit=[instanceMethod.T],needsArgs,selectors=[Selector(call, instanceMethod, arity=1, types=1)]*/
+  /*spec:nnbd-off|prod:nnbd-off.member: A.instanceMethod:deps=[staticMethod],direct,explicit=[instanceMethod.T],needsArgs,selectors=[Selector(call, instanceMethod, arity=1, types=1)]*/
+  /*spec:nnbd-sdk|prod:nnbd-sdk.member: A.instanceMethod:deps=[staticMethod],direct,explicit=[instanceMethod.T*],needsArgs,selectors=[Selector(call, instanceMethod, arity=1, types=1)]*/
   instanceMethod<T>(t) => t is T;
 }
 
diff --git a/tests/compiler/dart2js/rti/data/dynamic_tear_off4.dart b/tests/compiler/dart2js/rti/data/dynamic_tear_off4.dart
index a7a7b5e..6f26717 100644
--- a/tests/compiler/dart2js/rti/data/dynamic_tear_off4.dart
+++ b/tests/compiler/dart2js/rti/data/dynamic_tear_off4.dart
@@ -4,7 +4,8 @@
 
 // @dart = 2.7
 
-/*member: staticMethod1:deps=[staticMethod2],direct,explicit=[staticMethod1.T],needsArgs,selectors=[Selector(call, call, arity=1, types=1)]*/
+/*spec:nnbd-off|prod:nnbd-off.member: staticMethod1:deps=[staticMethod2],direct,explicit=[staticMethod1.T],needsArgs,selectors=[Selector(call, call, arity=1, types=1)]*/
+/*spec:nnbd-sdk|prod:nnbd-sdk.member: staticMethod1:deps=[staticMethod2],direct,explicit=[staticMethod1.T*],needsArgs,selectors=[Selector(call, call, arity=1, types=1)]*/
 staticMethod1<T>(t) => t is T;
 
 /*member: staticMethod2:implicit=[staticMethod2.T],indirect,needsArgs,selectors=[Selector(call, call, arity=2, types=1)]*/
diff --git a/tests/compiler/dart2js/rti/data/dynamic_type_literal2.dart b/tests/compiler/dart2js/rti/data/dynamic_type_literal2.dart
index 8812e53..ef748a3 100644
--- a/tests/compiler/dart2js/rti/data/dynamic_type_literal2.dart
+++ b/tests/compiler/dart2js/rti/data/dynamic_type_literal2.dart
@@ -5,6 +5,7 @@
 // @dart = 2.7
 
 /*spec:nnbd-off.class: A:explicit=[A]*/
+/*spec:nnbd-sdk.class: A:explicit=[A*]*/
 class A {
   /*member: A.instanceMethod:deps=[B.instanceMethod],exp,needsArgs,selectors=[Selector(call, instanceMethod, arity=0, types=1)]*/
   instanceMethod<T>() => T;
diff --git a/tests/compiler/dart2js/rti/data/explicit_as.dart b/tests/compiler/dart2js/rti/data/explicit_as.dart
index 439b1a3..ba89b25 100644
--- a/tests/compiler/dart2js/rti/data/explicit_as.dart
+++ b/tests/compiler/dart2js/rti/data/explicit_as.dart
@@ -5,7 +5,7 @@
 // @dart = 2.7
 
 /*spec:nnbd-off.class: C:direct,explicit=[C.T,C<String>],needsArgs*/
-/*prod:nnbd-off.class: C:*/
+/*spec:nnbd-sdk.class: C:direct,explicit=[C.T*,C<String*>*],needsArgs*/
 class C<T> {
   T field;
 }
diff --git a/tests/compiler/dart2js/rti/data/function_subtype_local5.dart b/tests/compiler/dart2js/rti/data/function_subtype_local5.dart
index e45aa6c..40e1bba 100644
--- a/tests/compiler/dart2js/rti/data/function_subtype_local5.dart
+++ b/tests/compiler/dart2js/rti/data/function_subtype_local5.dart
@@ -16,17 +16,16 @@
 typedef int Boz<T>(T a);
 typedef int Biz<T>(T a, int b);
 
-/*class: C:direct,explicit=[int Function(C.T),int Function(C.T,[String]),int Function(C.T,int),int Function(C.T,{,b:String})],needsArgs*/
+/*spec:nnbd-off|prod:nnbd-off.class: C:direct,explicit=[int Function(C.T),int Function(C.T,[String]),int Function(C.T,int),int Function(C.T,{,b:String})],needsArgs*/
+/*spec:nnbd-sdk|prod:nnbd-sdk.class: C:direct,explicit=[int* Function(C.T*)*,int* Function(C.T*,[String*])*,int* Function(C.T*,int*)*,int* Function(C.T*,{,b:String*})*],needsArgs*/
 class C<T> {
   void test(String nameOfT, bool expectedResult) {
     // TODO(johnniwinther): Optimize local function type signature need.
 
-    /*spec:nnbd-off.needsSignature*/
-    /*prod:nnbd-off.needsSignature*/
+    /*needsSignature*/
     int foo(bool a, [String b]) => null;
 
-    /*spec:nnbd-off.needsSignature*/
-    /*prod:nnbd-off.needsSignature*/
+    /*needsSignature*/
     int baz(bool a, {String b}) => null;
 
     Expect.equals(expectedResult, foo is Foo<T>, 'foo is Foo<$nameOfT>');
diff --git a/tests/compiler/dart2js/rti/data/future_or.dart b/tests/compiler/dart2js/rti/data/future_or.dart
index bffc174..2f6b61b 100644
--- a/tests/compiler/dart2js/rti/data/future_or.dart
+++ b/tests/compiler/dart2js/rti/data/future_or.dart
@@ -6,9 +6,11 @@
 
 import 'dart:async';
 
-/*class: global#Future:implicit=[Future<A>],indirect,needsArgs*/
+/*spec:nnbd-off|prod:nnbd-off.class: global#Future:implicit=[Future<A>],indirect,needsArgs*/
+/*spec:nnbd-sdk|prod:nnbd-sdk.class: global#Future:implicit=[Future<A*>],indirect,needsArgs*/
 
-/*class: A:explicit=[FutureOr<A>],implicit=[A,Future<A>]*/
+/*spec:nnbd-off|prod:nnbd-off.class: A:explicit=[FutureOr<A>],implicit=[A,Future<A>]*/
+/*spec:nnbd-sdk|prod:nnbd-sdk.class: A:explicit=[FutureOr<A*>*],implicit=[A,Future<A*>]*/
 class A {}
 
 main() {
diff --git a/tests/compiler/dart2js/rti/data/future_or_future_or.dart b/tests/compiler/dart2js/rti/data/future_or_future_or.dart
index 095ea3d..5996add 100644
--- a/tests/compiler/dart2js/rti/data/future_or_future_or.dart
+++ b/tests/compiler/dart2js/rti/data/future_or_future_or.dart
@@ -6,9 +6,11 @@
 
 import 'dart:async';
 
-/*class: global#Future:implicit=[Future<A>,Future<FutureOr<A>>],indirect,needsArgs*/
+/*spec:nnbd-off|prod:nnbd-off.class: global#Future:implicit=[Future<A>,Future<FutureOr<A>>],indirect,needsArgs*/
+/*spec:nnbd-sdk|prod:nnbd-sdk.class: global#Future:implicit=[Future<A*>,Future<FutureOr<A*>*>],indirect,needsArgs*/
 
-/*class: A:explicit=[FutureOr<FutureOr<A>>],implicit=[A,Future<A>,Future<FutureOr<A>>,FutureOr<A>]*/
+/*spec:nnbd-off|prod:nnbd-off.class: A:explicit=[FutureOr<FutureOr<A>>],implicit=[A,Future<A>,Future<FutureOr<A>>,FutureOr<A>]*/
+/*spec:nnbd-sdk|prod:nnbd-sdk.class: A:explicit=[FutureOr<FutureOr<A*>*>*],implicit=[A,Future<A*>,Future<FutureOr<A*>*>,FutureOr<A*>]*/
 class A {}
 
 main() {
diff --git a/tests/compiler/dart2js/rti/data/future_or_future_or_generic.dart b/tests/compiler/dart2js/rti/data/future_or_future_or_generic.dart
index 3cc54d6e..4969272 100644
--- a/tests/compiler/dart2js/rti/data/future_or_future_or_generic.dart
+++ b/tests/compiler/dart2js/rti/data/future_or_future_or_generic.dart
@@ -6,17 +6,21 @@
 
 import 'dart:async';
 
-/*class: global#Future:deps=[A],implicit=[Future<B<A.T>>,Future<C>],indirect,needsArgs*/
+/*spec:nnbd-off|prod:nnbd-off.class: global#Future:deps=[A],implicit=[Future<B<A.T>>,Future<C>],indirect,needsArgs*/
+/*spec:nnbd-sdk|prod:nnbd-sdk.class: global#Future:deps=[A],implicit=[Future<B<A.T*>*>,Future<C*>],indirect,needsArgs*/
 
-/*class: A:explicit=[FutureOr<B<A.T>>],implicit=[B<A.T>,Future<B<A.T>>],indirect,needsArgs*/
+/*spec:nnbd-off|prod:nnbd-off.class: A:explicit=[FutureOr<B<A.T>>],implicit=[B<A.T>,Future<B<A.T>>],indirect,needsArgs*/
+/*spec:nnbd-sdk|prod:nnbd-sdk.class: A:explicit=[FutureOr<B<A.T*>*>*],implicit=[B<A.T*>,Future<B<A.T*>*>],indirect,needsArgs*/
 class A<T> {
   m(o) => o is FutureOr<B<T>>;
 }
 
-/*class: B:deps=[A],explicit=[FutureOr<B<A.T>>],implicit=[B<A.T>,Future<B<A.T>>],needsArgs*/
+/*spec:nnbd-off|prod:nnbd-off.class: B:deps=[A],explicit=[FutureOr<B<A.T>>],implicit=[B<A.T>,Future<B<A.T>>],needsArgs*/
+/*spec:nnbd-sdk|prod:nnbd-sdk.class: B:deps=[A],explicit=[FutureOr<B<A.T*>*>*],implicit=[B<A.T*>,Future<B<A.T*>*>],needsArgs*/
 class B<T> {}
 
-/*class: C:implicit=[C,Future<C>,FutureOr<C>]*/
+/*spec:nnbd-off|prod:nnbd-off.class: C:implicit=[C,Future<C>,FutureOr<C>]*/
+/*spec:nnbd-sdk|prod:nnbd-sdk.class: C:implicit=[C,Future<C*>,FutureOr<C*>]*/
 class C {}
 
 main() {
diff --git a/tests/compiler/dart2js/rti/data/future_or_generic.dart b/tests/compiler/dart2js/rti/data/future_or_generic.dart
index 901b5bf..55546d6 100644
--- a/tests/compiler/dart2js/rti/data/future_or_generic.dart
+++ b/tests/compiler/dart2js/rti/data/future_or_generic.dart
@@ -6,9 +6,11 @@
 
 import 'dart:async';
 
-/*class: global#Future:deps=[A],implicit=[Future<A.T>],indirect,needsArgs*/
+/*spec:nnbd-off|prod:nnbd-off.class: global#Future:deps=[A],implicit=[Future<A.T>],indirect,needsArgs*/
+/*spec:nnbd-sdk|prod:nnbd-sdk.class: global#Future:deps=[A],implicit=[Future<A.T*>],indirect,needsArgs*/
 
-/*class: A:explicit=[FutureOr<A.T>],implicit=[A.T,Future<A.T>],indirect,needsArgs*/
+/*spec:nnbd-off|prod:nnbd-off.class: A:explicit=[FutureOr<A.T>],implicit=[A.T,Future<A.T>],indirect,needsArgs*/
+/*spec:nnbd-sdk|prod:nnbd-sdk.class: A:explicit=[FutureOr<A.T*>*],implicit=[A.T,Future<A.T*>],indirect,needsArgs*/
 class A<T> {
   m(o) => o is FutureOr<T>;
 }
diff --git a/tests/compiler/dart2js/rti/data/future_or_generic2.dart b/tests/compiler/dart2js/rti/data/future_or_generic2.dart
index e80d9a0..0376f55 100644
--- a/tests/compiler/dart2js/rti/data/future_or_generic2.dart
+++ b/tests/compiler/dart2js/rti/data/future_or_generic2.dart
@@ -6,14 +6,17 @@
 
 import 'dart:async';
 
-/*class: global#Future:deps=[A],implicit=[Future<B<A.T>>],indirect,needsArgs*/
+/*spec:nnbd-off|prod:nnbd-off.class: global#Future:deps=[A],implicit=[Future<B<A.T>>],indirect,needsArgs*/
+/*spec:nnbd-sdk|prod:nnbd-sdk.class: global#Future:deps=[A],implicit=[Future<B<A.T*>*>],indirect,needsArgs*/
 
-/*class: A:explicit=[FutureOr<B<A.T>>],implicit=[B<A.T>,Future<B<A.T>>],indirect,needsArgs*/
+/*spec:nnbd-off|prod:nnbd-off.class: A:explicit=[FutureOr<B<A.T>>],implicit=[B<A.T>,Future<B<A.T>>],indirect,needsArgs*/
+/*spec:nnbd-sdk|prod:nnbd-sdk.class: A:explicit=[FutureOr<B<A.T*>*>*],implicit=[B<A.T*>,Future<B<A.T*>*>],indirect,needsArgs*/
 class A<T> {
   m(o) => o is FutureOr<B<T>>;
 }
 
-/*class: B:deps=[A],explicit=[FutureOr<B<A.T>>],implicit=[B<A.T>,Future<B<A.T>>],needsArgs*/
+/*spec:nnbd-off|prod:nnbd-off.class: B:deps=[A],explicit=[FutureOr<B<A.T>>],implicit=[B<A.T>,Future<B<A.T>>],needsArgs*/
+/*spec:nnbd-sdk|prod:nnbd-sdk.class: B:deps=[A],explicit=[FutureOr<B<A.T*>*>*],implicit=[B<A.T*>,Future<B<A.T*>*>],needsArgs*/
 class B<T> {}
 
 /*class: C:implicit=[C]*/
diff --git a/tests/compiler/dart2js/rti/data/generic_bounds.dart b/tests/compiler/dart2js/rti/data/generic_bounds.dart
index d87e5fd..7a8b7d8 100644
--- a/tests/compiler/dart2js/rti/data/generic_bounds.dart
+++ b/tests/compiler/dart2js/rti/data/generic_bounds.dart
@@ -7,47 +7,49 @@
 import 'package:expect/expect.dart';
 
 /*spec:nnbd-off.class: Class1a:explicit=[Class1a]*/
+/*spec:nnbd-sdk.class: Class1a:explicit=[Class1a*]*/
 class Class1a {}
 
 class Class1b extends Class1a {}
 
 /*spec:nnbd-off.class: Class2a:explicit=[Class2a<num>],needsArgs*/
+/*spec:nnbd-sdk.class: Class2a:explicit=[Class2a<num*>*],needsArgs*/
 class Class2a<T> {}
 
 class Class2b<T> extends Class2a<T> {}
 
-/*spec:nnbd-off.member: method1:needsArgs,selectors=[Selector(call, call, arity=0, types=1)]*/
+/*spec:nnbd-off|spec:nnbd-sdk.member: method1:needsArgs,selectors=[Selector(call, call, arity=0, types=1)]*/
 method1<T extends Class1a>() => null;
 
-/*spec:nnbd-off.member: method2:needsArgs,selectors=[Selector(call, call, arity=0, types=1)]*/
+/*spec:nnbd-off|spec:nnbd-sdk.member: method2:needsArgs,selectors=[Selector(call, call, arity=0, types=1)]*/
 method2<T extends Class2a<num>>() => null;
 
 method3<T>() => null;
 
 class Class3 {
-  /*spec:nnbd-off.member: Class3.method4:needsArgs,selectors=[Selector(call, method4, arity=0, types=1)]*/
+  /*spec:nnbd-off|spec:nnbd-sdk.member: Class3.method4:needsArgs,selectors=[Selector(call, method4, arity=0, types=1)]*/
   method4<T extends Class1a>() => null;
 
-  /*spec:nnbd-off.member: Class3.method5:needsArgs,selectors=[Selector(call, method5, arity=0, types=1)]*/
+  /*spec:nnbd-off|spec:nnbd-sdk.member: Class3.method5:needsArgs,selectors=[Selector(call, method5, arity=0, types=1)]*/
   method5<T extends Class2a<num>>() => null;
 
   method6<T>() => null;
 }
 
 /*spec:nnbd-off.class: Class4:explicit=[Class4]*/
+/*spec:nnbd-sdk.class: Class4:explicit=[Class4*]*/
 class Class4 {}
 
-/*spec:nnbd-off.member: method10:needsArgs*/
+/*spec:nnbd-off|spec:nnbd-sdk.member: method10:needsArgs*/
 method10<T extends Class4>() => null;
 
 main() {
-  /*spec:nnbd-off.needsArgs,selectors=[Selector(call, call, arity=0, types=1)]*/
-  /*prod:nnbd-off.*/method7<T extends Class1a>() => null;
+  /*spec:nnbd-off|spec:nnbd-sdk.needsArgs,selectors=[Selector(call, call, arity=0, types=1)]*/
+  method7<T extends Class1a>() => null;
 
-  /*spec:nnbd-off.needsArgs,selectors=[Selector(call, call, arity=0, types=1)]*/
-  /*prod:nnbd-off.*/method8<T extends Class2a<num>>() => null;
+  /*spec:nnbd-off|spec:nnbd-sdk.needsArgs,selectors=[Selector(call, call, arity=0, types=1)]*/
+  method8<T extends Class2a<num>>() => null;
 
-  /**/
   method9<T>() => null;
 
   dynamic f1 = method1;
diff --git a/tests/compiler/dart2js/rti/data/generic_class_instantiate.dart b/tests/compiler/dart2js/rti/data/generic_class_instantiate.dart
index 937ee3e..f16781b 100644
--- a/tests/compiler/dart2js/rti/data/generic_class_instantiate.dart
+++ b/tests/compiler/dart2js/rti/data/generic_class_instantiate.dart
@@ -4,10 +4,12 @@
 
 // @dart = 2.7
 
-/*class: A:explicit=[B<A>]*/
+/*spec:nnbd-off|prod:nnbd-off.class: A:explicit=[B<A>]*/
+/*spec:nnbd-sdk|prod:nnbd-sdk.class: A:explicit=[B<A*>*]*/
 class A {}
 
-/*class: B:deps=[C],explicit=[B<A>],needsArgs*/
+/*spec:nnbd-off|prod:nnbd-off.class: B:deps=[C],explicit=[B<A>],needsArgs*/
+/*spec:nnbd-sdk|prod:nnbd-sdk.class: B:deps=[C],explicit=[B<A*>*],needsArgs*/
 class B<T> {}
 
 /*class: C:needsArgs*/
diff --git a/tests/compiler/dart2js/rti/data/generic_class_is.dart b/tests/compiler/dart2js/rti/data/generic_class_is.dart
index 46f569d..c208db7 100644
--- a/tests/compiler/dart2js/rti/data/generic_class_is.dart
+++ b/tests/compiler/dart2js/rti/data/generic_class_is.dart
@@ -7,7 +7,8 @@
 /*class: A:implicit=[A]*/
 class A {}
 
-/*class: B:direct,explicit=[B.T],needsArgs*/
+/*spec:nnbd-off|prod:nnbd-off.class: B:direct,explicit=[B.T],needsArgs*/
+/*spec:nnbd-sdk|prod:nnbd-sdk.class: B:direct,explicit=[B.T*],needsArgs*/
 class B<T> {
   @pragma('dart2js:noInline')
   method(T t) => t is T;
diff --git a/tests/compiler/dart2js/rti/data/generic_class_is2.dart b/tests/compiler/dart2js/rti/data/generic_class_is2.dart
index 4801a9b..eeb8da8 100644
--- a/tests/compiler/dart2js/rti/data/generic_class_is2.dart
+++ b/tests/compiler/dart2js/rti/data/generic_class_is2.dart
@@ -6,25 +6,28 @@
 
 import 'package:expect/expect.dart';
 
-/*class: A:implicit=[List<A<C2>>,List<A<C>>]*/
+/*spec:nnbd-off|prod:nnbd-off.class: A:implicit=[List<A<C2>>,List<A<C>>]*/
+/*spec:nnbd-sdk|prod:nnbd-sdk.class: A:implicit=[List<A<C*>*>,List<A<C2*>*>]*/
 class A<T> {}
 
-/*prod:nnbd-off.class: A1:*/
-/*spec:nnbd-off.class: A1:implicit=[A1]*/
+/*spec:nnbd-off|spec:nnbd-sdk.class: A1:implicit=[A1]*/
 class A1 implements A<C1> {}
 
-/*class: B:direct,explicit=[B.T],needsArgs*/
+/*spec:nnbd-off|prod:nnbd-off.class: B:direct,explicit=[B.T],needsArgs*/
+/*spec:nnbd-sdk|prod:nnbd-sdk.class: B:direct,explicit=[B.T*],needsArgs*/
 class B<T> {
   @pragma('dart2js:noInline')
   method(var t) => t is T;
 }
 
-/*class: C:implicit=[List<A<C>>]*/
+/*spec:nnbd-off|prod:nnbd-off.class: C:implicit=[List<A<C>>]*/
+/*spec:nnbd-sdk|prod:nnbd-sdk.class: C:implicit=[List<A<C*>*>]*/
 class C {}
 
 class C1 implements C {}
 
-/*class: C2:implicit=[List<A<C2>>]*/
+/*spec:nnbd-off|prod:nnbd-off.class: C2:implicit=[List<A<C2>>]*/
+/*spec:nnbd-sdk|prod:nnbd-sdk.class: C2:implicit=[List<A<C2*>*>]*/
 class C2 implements C {}
 
 main() {
diff --git a/tests/compiler/dart2js/rti/data/generic_closure_instantiate.dart b/tests/compiler/dart2js/rti/data/generic_closure_instantiate.dart
index 907fc44..fa1f48a 100644
--- a/tests/compiler/dart2js/rti/data/generic_closure_instantiate.dart
+++ b/tests/compiler/dart2js/rti/data/generic_closure_instantiate.dart
@@ -4,10 +4,12 @@
 
 // @dart = 2.7
 
-/*class: A:explicit=[B<A>]*/
+/*spec:nnbd-off|prod:nnbd-off.class: A:explicit=[B<A>]*/
+/*spec:nnbd-sdk|prod:nnbd-sdk.class: A:explicit=[B<A*>*]*/
 class A {}
 
-/*class: B:deps=[closure],explicit=[B<A>],needsArgs*/
+/*spec:nnbd-off|prod:nnbd-off.class: B:deps=[closure],explicit=[B<A>],needsArgs*/
+/*spec:nnbd-sdk|prod:nnbd-sdk.class: B:deps=[closure],explicit=[B<A*>*],needsArgs*/
 class B<T> {}
 
 main() {
diff --git a/tests/compiler/dart2js/rti/data/generic_instanceof4.dart b/tests/compiler/dart2js/rti/data/generic_instanceof4.dart
index afc5297..cee37bf 100644
--- a/tests/compiler/dart2js/rti/data/generic_instanceof4.dart
+++ b/tests/compiler/dart2js/rti/data/generic_instanceof4.dart
@@ -4,7 +4,8 @@
 
 // @dart = 2.7
 
-/*class: A:deps=[B],direct,explicit=[A.T],needsArgs*/
+/*spec:nnbd-off|prod:nnbd-off.class: A:deps=[B],direct,explicit=[A.T],needsArgs*/
+/*spec:nnbd-sdk|prod:nnbd-sdk.class: A:deps=[B],direct,explicit=[A.T*],needsArgs*/
 class A<T> {
   @pragma('dart2js:noInline')
   foo(x) {
diff --git a/tests/compiler/dart2js/rti/data/generic_instanceof4_unused.dart b/tests/compiler/dart2js/rti/data/generic_instanceof4_unused.dart
index 54d013f..a6035cc 100644
--- a/tests/compiler/dart2js/rti/data/generic_instanceof4_unused.dart
+++ b/tests/compiler/dart2js/rti/data/generic_instanceof4_unused.dart
@@ -4,7 +4,8 @@
 
 // @dart = 2.7
 
-/*class: A:deps=[B],direct,explicit=[A.T],needsArgs*/
+/*spec:nnbd-off|prod:nnbd-off.class: A:deps=[B],direct,explicit=[A.T],needsArgs*/
+/*spec:nnbd-sdk|prod:nnbd-sdk.class: A:deps=[B],direct,explicit=[A.T*],needsArgs*/
 class A<T> {
   @pragma('dart2js:noInline')
   foo(x) {
diff --git a/tests/compiler/dart2js/rti/data/generic_method1.dart b/tests/compiler/dart2js/rti/data/generic_method1.dart
index 6af8aa1..bfd2cf1 100644
--- a/tests/compiler/dart2js/rti/data/generic_method1.dart
+++ b/tests/compiler/dart2js/rti/data/generic_method1.dart
@@ -6,7 +6,8 @@
 
 import "package:expect/expect.dart";
 
-/*class: A:deps=[method2],direct,explicit=[A.T],needsArgs*/
+/*spec:nnbd-off|prod:nnbd-off.class: A:deps=[method2],direct,explicit=[A.T],needsArgs*/
+/*spec:nnbd-sdk|prod:nnbd-sdk.class: A:deps=[method2],direct,explicit=[A.T*],needsArgs*/
 class A<T> {
   @pragma('dart2js:noInline')
   foo(x) {
diff --git a/tests/compiler/dart2js/rti/data/generic_method2.dart b/tests/compiler/dart2js/rti/data/generic_method2.dart
index 7d4afea..333c57e 100644
--- a/tests/compiler/dart2js/rti/data/generic_method2.dart
+++ b/tests/compiler/dart2js/rti/data/generic_method2.dart
@@ -6,7 +6,8 @@
 
 import "package:expect/expect.dart";
 
-/*class: A:deps=[B],direct,explicit=[A.T],needsArgs*/
+/*spec:nnbd-off|prod:nnbd-off.class: A:deps=[B],direct,explicit=[A.T],needsArgs*/
+/*spec:nnbd-sdk|prod:nnbd-sdk.class: A:deps=[B],direct,explicit=[A.T*],needsArgs*/
 class A<T> {
   @pragma('dart2js:noInline')
   foo(x) {
diff --git a/tests/compiler/dart2js/rti/data/generic_method3.dart b/tests/compiler/dart2js/rti/data/generic_method3.dart
index 9aa3794..040a20a 100644
--- a/tests/compiler/dart2js/rti/data/generic_method3.dart
+++ b/tests/compiler/dart2js/rti/data/generic_method3.dart
@@ -6,7 +6,8 @@
 
 import "package:expect/expect.dart";
 
-/*class: A:deps=[method2],direct,explicit=[A.T],needsArgs*/
+/*spec:nnbd-off|prod:nnbd-off.class: A:deps=[method2],direct,explicit=[A.T],needsArgs*/
+/*spec:nnbd-sdk|prod:nnbd-sdk.class: A:deps=[method2],direct,explicit=[A.T*],needsArgs*/
 class A<T> {
   @pragma('dart2js:noInline')
   foo(x) {
diff --git a/tests/compiler/dart2js/rti/data/generic_method4.dart b/tests/compiler/dart2js/rti/data/generic_method4.dart
index 2f6f471..7f7f614 100644
--- a/tests/compiler/dart2js/rti/data/generic_method4.dart
+++ b/tests/compiler/dart2js/rti/data/generic_method4.dart
@@ -6,7 +6,8 @@
 
 import "package:expect/expect.dart";
 
-/*class: A:deps=[C.method2],direct,explicit=[A.T],needsArgs*/
+/*spec:nnbd-off|prod:nnbd-off.class: A:deps=[C.method2],direct,explicit=[A.T],needsArgs*/
+/*spec:nnbd-sdk|prod:nnbd-sdk.class: A:deps=[C.method2],direct,explicit=[A.T*],needsArgs*/
 class A<T> {
   @pragma('dart2js:noInline')
   foo(x) {
diff --git a/tests/compiler/dart2js/rti/data/generic_method_instantiate.dart b/tests/compiler/dart2js/rti/data/generic_method_instantiate.dart
index 1b5c9bf..fc237a1 100644
--- a/tests/compiler/dart2js/rti/data/generic_method_instantiate.dart
+++ b/tests/compiler/dart2js/rti/data/generic_method_instantiate.dart
@@ -4,14 +4,15 @@
 
 // @dart = 2.7
 
-/*class: A:explicit=[B<A>]*/
+/*spec:nnbd-off|prod:nnbd-off.class: A:explicit=[B<A>]*/
+/*spec:nnbd-sdk|prod:nnbd-sdk.class: A:explicit=[B<A*>*]*/
 class A {}
 
-/*class: B:deps=[method],explicit=[B<A>],needsArgs*/
+/*spec:nnbd-off|prod:nnbd-off.class: B:deps=[method],explicit=[B<A>],needsArgs*/
+/*spec:nnbd-sdk|prod:nnbd-sdk.class: B:deps=[method],explicit=[B<A*>*],needsArgs*/
 class B<T> {}
 
-/*spec:nnbd-off.member: method:needsArgs*/
-/*prod:nnbd-off.member: method:needsArgs*/
+/*member: method:needsArgs*/
 method<T>() => new B<T>();
 
 main() {
diff --git a/tests/compiler/dart2js/rti/data/generic_method_is.dart b/tests/compiler/dart2js/rti/data/generic_method_is.dart
index 53bf8c4..94435ab 100644
--- a/tests/compiler/dart2js/rti/data/generic_method_is.dart
+++ b/tests/compiler/dart2js/rti/data/generic_method_is.dart
@@ -4,8 +4,8 @@
 
 // @dart = 2.7
 
-/*spec:nnbd-off.member: method:direct,explicit=[method.T],needsArgs*/
-/*prod:nnbd-off.member: method:direct,explicit=[method.T],needsArgs*/
+/*spec:nnbd-off|prod:nnbd-off.member: method:direct,explicit=[method.T],needsArgs*/
+/*spec:nnbd-sdk|prod:nnbd-sdk.member: method:direct,explicit=[method.T*],needsArgs*/
 method<T>(T t) => t is T;
 
 main() {
diff --git a/tests/compiler/dart2js/rti/data/generic_method_is2.dart b/tests/compiler/dart2js/rti/data/generic_method_is2.dart
index 590ae1b..97c9b7ad 100644
--- a/tests/compiler/dart2js/rti/data/generic_method_is2.dart
+++ b/tests/compiler/dart2js/rti/data/generic_method_is2.dart
@@ -7,19 +7,19 @@
 /*class: A1:implicit=[A1]*/
 class A1 {}
 
-/*spec:nnbd-off.class: A2:implicit=[A2]*/
+/*spec:nnbd-off|spec:nnbd-sdk.class: A2:implicit=[A2]*/
 class A2 {}
 
 /*class: B1:implicit=[B1]*/
 class B1 {}
 
-/*spec:nnbd-off.class: B2:implicit=[B2]*/
+/*spec:nnbd-off|spec:nnbd-sdk.class: B2:implicit=[B2]*/
 class B2 {}
 
 /*class: C1:implicit=[C1]*/
 class C1 {}
 
-/*spec:nnbd-off.class: C2:implicit=[C2]*/
+/*spec:nnbd-off|spec:nnbd-sdk.class: C2:implicit=[C2]*/
 class C2 {}
 
 /*class: C3:implicit=[C3]*/
@@ -28,56 +28,64 @@
 /*class: D1:implicit=[D1]*/
 class D1 {}
 
-/*spec:nnbd-off.class: D2:implicit=[D2]*/
+/*spec:nnbd-off|spec:nnbd-sdk.class: D2:implicit=[D2]*/
 class D2 {}
 
 /*class: E1:implicit=[E1]*/
 class E1 {}
 
-/*spec:nnbd-off.class: E2:implicit=[E2]*/
+/*spec:nnbd-off|spec:nnbd-sdk.class: E2:implicit=[E2]*/
 class E2 {}
 
 /*class: F1:implicit=[F1]*/
 class F1 {}
 
-/*spec:nnbd-off.class: F2:implicit=[F2]*/
+/*spec:nnbd-off|spec:nnbd-sdk.class: F2:implicit=[F2]*/
 class F2 {}
 
 /*class: F3:implicit=[F3]*/
 class F3 {}
 
-/*member: topLevelMethod1:direct,explicit=[topLevelMethod1.T],needsArgs,selectors=[Selector(call, call, arity=2, named=[a1], types=1)]*/
+/*spec:nnbd-off|prod:nnbd-off.member: topLevelMethod1:direct,explicit=[topLevelMethod1.T],needsArgs,selectors=[Selector(call, call, arity=2, named=[a1], types=1)]*/
+/*spec:nnbd-sdk|prod:nnbd-sdk.member: topLevelMethod1:direct,explicit=[topLevelMethod1.T*],needsArgs,selectors=[Selector(call, call, arity=2, named=[a1], types=1)]*/
 // Calls to this imply a check of the passed type arguments.
 bool topLevelMethod1<T>(T t, {a1}) => t is T;
 
 /*spec:nnbd-off.member: topLevelMethod2:direct,explicit=[topLevelMethod2.T],needsArgs,selectors=[Selector(call, call, arity=2, named=[a2], types=1)]*/
 // Calls to this does _not_ imply a check of the passed type arguments.
+/*spec:nnbd-sdk.member: topLevelMethod2:direct,explicit=[topLevelMethod2.T*],needsArgs,selectors=[Selector(call, call, arity=2, named=[a2], types=1)]*/
 T topLevelMethod2<T>(T t, {a2}) => t;
 
 class Class {
-  /*member: Class.instanceMethod1:direct,explicit=[instanceMethod1.S],needsArgs,selectors=[Selector(call, call, arity=2, named=[b1], types=1),Selector(call, instanceMethod1, arity=2, named=[b1], types=1)]*/
+  /*spec:nnbd-off|prod:nnbd-off.member: Class.instanceMethod1:direct,explicit=[instanceMethod1.S],needsArgs,selectors=[Selector(call, call, arity=2, named=[b1], types=1),Selector(call, instanceMethod1, arity=2, named=[b1], types=1)]*/
+  /*spec:nnbd-sdk|prod:nnbd-sdk.member: Class.instanceMethod1:direct,explicit=[instanceMethod1.S*],needsArgs,selectors=[Selector(call, call, arity=2, named=[b1], types=1),Selector(call, instanceMethod1, arity=2, named=[b1], types=1)]*/
   // Calls to this imply a check of the passed type arguments.
   bool instanceMethod1<S>(S s, {b1}) => s is S;
 
   /*spec:nnbd-off.member: Class.instanceMethod2:direct,explicit=[instanceMethod2.S],needsArgs,selectors=[Selector(call, call, arity=2, named=[b2], types=1),Selector(call, instanceMethod2, arity=2, named=[b2], types=1)]*/
   // Calls to this does _not_ imply a check of the passed type arguments.
+  /*spec:nnbd-sdk.member: Class.instanceMethod2:direct,explicit=[instanceMethod2.S*],needsArgs,selectors=[Selector(call, call, arity=2, named=[b2], types=1),Selector(call, instanceMethod2, arity=2, named=[b2], types=1)]*/
   S instanceMethod2<S>(S s, {b2}) => s;
 }
 
 main() {
   // Calls to this imply a check of the passed type arguments.
-  /*direct,explicit=[localFunction1.U],needsArgs,selectors=[Selector(call, call, arity=2, named=[c1], types=1)]*/
+  /*spec:nnbd-off|prod:nnbd-off.direct,explicit=[localFunction1.U],needsArgs,selectors=[Selector(call, call, arity=2, named=[c1], types=1)]*/
+  /*spec:nnbd-sdk|prod:nnbd-sdk.direct,explicit=[localFunction1.U*],needsArgs,selectors=[Selector(call, call, arity=2, named=[c1], types=1)]*/
   bool localFunction1<U>(U u, {c1}) => u is U;
 
   // Calls to this does _not_ imply a check of the passed type arguments.
   /*spec:nnbd-off.direct,explicit=[localFunction2.U],needsArgs,selectors=[Selector(call, call, arity=2, named=[c2], types=1)]*/
-  U localFunction2<U>(U u, {c2}) => u;
+  /*spec:nnbd-sdk.direct,explicit=[localFunction2.U*],needsArgs,selectors=[Selector(call, call, arity=2, named=[c2], types=1)]*/ U
+      localFunction2<U>(U u, {c2}) => u;
 
   // Calls to this does _not_ imply a check of the passed type arguments. A
   // call to the .call function on this will, though, since it has the same
   // signature as [localFunction1] which needs its type arguments.
   /*spec:nnbd-off.direct,explicit=[localFunction3.U],needsArgs,selectors=[Selector(call, call, arity=2, named=[c1], types=1)]*/
-  localFunction3<U>(U u, {c1}) => u;
+  /*spec:nnbd-sdk.direct,explicit=[localFunction3.U*],needsArgs,selectors=[Selector(call, call, arity=2, named=[c1], types=1)]*/ localFunction3<
+          U>(U u, {c1}) =>
+      u;
 
   var c = new Class();
 
diff --git a/tests/compiler/dart2js/rti/data/generic_methods_dynamic_05.dart b/tests/compiler/dart2js/rti/data/generic_methods_dynamic_05.dart
index f32f4e6..29202cd 100644
--- a/tests/compiler/dart2js/rti/data/generic_methods_dynamic_05.dart
+++ b/tests/compiler/dart2js/rti/data/generic_methods_dynamic_05.dart
@@ -17,11 +17,14 @@
 
 /*spec:nnbd-off.class: B:explicit=[List<B>],implicit=[B]*/
 /*prod:nnbd-off.class: B:explicit=[List<B>]*/
+/*spec:nnbd-sdk.class: B:explicit=[List<B*>*],implicit=[B]*/
+/*prod:nnbd-sdk.class: B:explicit=[List<B*>*]*/
 class B {}
 
 class C {
+  /*spec:nnbd-sdk.member: C.bar:direct,explicit=[Iterable<bar.T*>*],implicit=[bar.T],needsArgs,selectors=[Selector(call, bar, arity=1, types=1)]*/
   /*spec:nnbd-off.member: C.bar:direct,explicit=[Iterable<bar.T>],implicit=[bar.T],needsArgs,selectors=[Selector(call, bar, arity=1, types=1)]*/
-  /*prod:nnbd-off.member: C.bar:needsArgs,selectors=[Selector(call, bar, arity=1, types=1)]*/
+  /*prod:nnbd-off|prod:nnbd-sdk.member: C.bar:needsArgs,selectors=[Selector(call, bar, arity=1, types=1)]*/
   List<T> bar<T>(Iterable<T> t) => <T>[t.first];
 }
 
diff --git a/tests/compiler/dart2js/rti/data/generic_methods_dynamic_05a.dart b/tests/compiler/dart2js/rti/data/generic_methods_dynamic_05a.dart
index b780758..27cd271 100644
--- a/tests/compiler/dart2js/rti/data/generic_methods_dynamic_05a.dart
+++ b/tests/compiler/dart2js/rti/data/generic_methods_dynamic_05a.dart
@@ -10,6 +10,8 @@
 
 /*prod:nnbd-off.class: A:deps=[C.bar],explicit=[A<B>],needsArgs*/
 /*spec:nnbd-off.class: A:deps=[C.bar],direct,explicit=[A.T,A<B>,A<bar.T>],needsArgs*/
+/*spec:nnbd-sdk.class: A:deps=[C.bar],direct,explicit=[A.T*,A<B*>*,A<bar.T*>*],needsArgs*/
+/*prod:nnbd-sdk.class: A:deps=[C.bar],explicit=[A<B*>*],needsArgs*/
 class A<T> {
   final T field;
 
@@ -18,10 +20,13 @@
 
 /*prod:nnbd-off.class: B:explicit=[A<B>]*/
 /*spec:nnbd-off.class: B:explicit=[A<B>],implicit=[B]*/
+/*spec:nnbd-sdk.class: B:explicit=[A<B*>*],implicit=[B]*/
+/*prod:nnbd-sdk.class: B:explicit=[A<B*>*]*/
 class B {}
 
 class C {
-  /*prod:nnbd-off.member: C.bar:needsArgs,selectors=[Selector(call, bar, arity=1, types=1)]*/
+  /*spec:nnbd-sdk.member: C.bar:explicit=[A<bar.T*>*],implicit=[bar.T],indirect,needsArgs,selectors=[Selector(call, bar, arity=1, types=1)]*/
+  /*prod:nnbd-off|prod:nnbd-sdk.member: C.bar:needsArgs,selectors=[Selector(call, bar, arity=1, types=1)]*/
   /*spec:nnbd-off.member: C.bar:explicit=[A<bar.T>],implicit=[bar.T],indirect,needsArgs,selectors=[Selector(call, bar, arity=1, types=1)]*/
   A<T> bar<T>(A<T> t) => new A<T>(t.field);
 }
diff --git a/tests/compiler/dart2js/rti/data/implicit_as.dart b/tests/compiler/dart2js/rti/data/implicit_as.dart
index 95770b8..b63494d 100644
--- a/tests/compiler/dart2js/rti/data/implicit_as.dart
+++ b/tests/compiler/dart2js/rti/data/implicit_as.dart
@@ -5,7 +5,7 @@
 // @dart = 2.7
 
 /*spec:nnbd-off.class: C:direct,explicit=[C.T,C<String>],needsArgs*/
-/*prod:nnbd-off.class: C:*/
+/*spec:nnbd-sdk.class: C:direct,explicit=[C.T*,C<String*>*],needsArgs*/
 class C<T> {
   T field;
 }
diff --git a/tests/compiler/dart2js/rti/data/indirect_through_static.dart b/tests/compiler/dart2js/rti/data/indirect_through_static.dart
index 3dd9a7c..c9c137a 100644
--- a/tests/compiler/dart2js/rti/data/indirect_through_static.dart
+++ b/tests/compiler/dart2js/rti/data/indirect_through_static.dart
@@ -4,8 +4,7 @@
 
 // @dart = 2.7
 
-/*spec:nnbd-off.class: A:implicit=[A]*/
-/*prod:nnbd-off.class: A:implicit=[A]*/
+/*class: A:implicit=[A]*/
 abstract class A {}
 
 class B implements A {}
@@ -20,6 +19,8 @@
  deps=[lookup],explicit=[C<lookup.T>],
  needsArgs
 */
+/*spec:nnbd-sdk.class: C:deps=[lookup],explicit=[C<lookup.T*>*,Map<String*,C*>*],implicit=[C],needsArgs*/
+/*prod:nnbd-sdk.class: C:deps=[lookup],explicit=[C<lookup.T*>*],needsArgs*/
 class C<T> {}
 
 final Map<String, C> map = {};
@@ -28,8 +29,8 @@
   map['x'] = new C<B>();
 }
 
-/*spec:nnbd-off.member: lookup:direct,explicit=[C<lookup.T>],needsArgs*/
-/*prod:nnbd-off.member: lookup:direct,explicit=[C<lookup.T>],needsArgs*/
+/*spec:nnbd-off|prod:nnbd-off.member: lookup:direct,explicit=[C<lookup.T>],needsArgs*/
+/*spec:nnbd-sdk|prod:nnbd-sdk.member: lookup:direct,explicit=[C<lookup.T*>*],needsArgs*/
 C<T> lookup<T>(String key) {
   final value = map[key];
   if (value != null && value is C<T>) {
diff --git a/tests/compiler/dart2js/rti/data/instantiation1.dart b/tests/compiler/dart2js/rti/data/instantiation1.dart
index 3ed0070..9c19364 100644
--- a/tests/compiler/dart2js/rti/data/instantiation1.dart
+++ b/tests/compiler/dart2js/rti/data/instantiation1.dart
@@ -5,12 +5,14 @@
 // @dart = 2.7
 
 /*spec:nnbd-off.member: f:deps=[B],direct,explicit=[f.T],needsArgs,needsInst=[<B.S>]*/
-/*prod:nnbd-off.member: f:deps=[B]*/
+/*prod:nnbd-off|prod:nnbd-sdk.member: f:deps=[B]*/
+/*spec:nnbd-sdk.member: f:deps=[B],direct,explicit=[f.T*],needsArgs,needsInst=[<B.S*>]*/
 int f<T>(T a) => null;
 
 typedef int F<R>(R a);
 
 /*spec:nnbd-off.class: B:explicit=[int Function(B.S)],indirect,needsArgs*/
+/*spec:nnbd-sdk.class: B:explicit=[int* Function(B.S*)*],indirect,needsArgs*/
 class B<S> {
   F<S> c;
 
diff --git a/tests/compiler/dart2js/rti/data/instantiation2.dart b/tests/compiler/dart2js/rti/data/instantiation2.dart
index ee21996..fa8c257 100644
--- a/tests/compiler/dart2js/rti/data/instantiation2.dart
+++ b/tests/compiler/dart2js/rti/data/instantiation2.dart
@@ -4,14 +4,15 @@
 
 // @dart = 2.7
 
-/*spec:nnbd-off.member: f:deps=[B],direct,explicit=[f.T],needsArgs,needsInst=[<B.S>]*/
-/*prod:nnbd-off.member: f:deps=[B],direct,explicit=[f.T],needsArgs,needsInst=[<B.S>]*/
+/*spec:nnbd-off|prod:nnbd-off.member: f:deps=[B],direct,explicit=[f.T],needsArgs,needsInst=[<B.S>]*/
+/*spec:nnbd-sdk|prod:nnbd-sdk.member: f:deps=[B],direct,explicit=[f.T*],needsArgs,needsInst=[<B.S*>]*/
 bool f<T>(T a) => a is T;
 
 typedef bool F<R>(R a);
 
 /*spec:nnbd-off.class: B:explicit=[bool Function(B.S)],indirect,needsArgs*/
-/*prod:nnbd-off.class: B:indirect,needsArgs*/
+/*prod:nnbd-off|prod:nnbd-sdk.class: B:indirect,needsArgs*/
+/*spec:nnbd-sdk.class: B:explicit=[bool* Function(B.S*)*],indirect,needsArgs*/
 class B<S> {
   F<S> c;
 
diff --git a/tests/compiler/dart2js/rti/data/instantiation3.dart b/tests/compiler/dart2js/rti/data/instantiation3.dart
index 67bfc44..f5ac584 100644
--- a/tests/compiler/dart2js/rti/data/instantiation3.dart
+++ b/tests/compiler/dart2js/rti/data/instantiation3.dart
@@ -5,12 +5,14 @@
 // @dart = 2.7
 
 /*spec:nnbd-off.member: f:deps=[B],direct,explicit=[f.T],needsArgs,needsInst=[<B.S>]*/
-/*prod:nnbd-off.member: f:deps=[B]*/
+/*prod:nnbd-off|prod:nnbd-sdk.member: f:deps=[B]*/
+/*spec:nnbd-sdk.member: f:deps=[B],direct,explicit=[f.T*],needsArgs,needsInst=[<B.S*>]*/
 int f<T>(T a) => null;
 
 typedef int F<R>(R a);
 
 /*spec:nnbd-off.class: B:direct,explicit=[int Function(B.S)],needsArgs*/
+/*spec:nnbd-sdk.class: B:direct,explicit=[int* Function(B.S*)*],needsArgs*/
 class B<S> {
   F<S> c;
 
diff --git a/tests/compiler/dart2js/rti/data/instantiation4.dart b/tests/compiler/dart2js/rti/data/instantiation4.dart
index 57616a0..c270b0a 100644
--- a/tests/compiler/dart2js/rti/data/instantiation4.dart
+++ b/tests/compiler/dart2js/rti/data/instantiation4.dart
@@ -4,14 +4,15 @@
 
 // @dart = 2.7
 
-/*spec:nnbd-off.member: f:deps=[B],direct,explicit=[f.T],needsArgs,needsInst=[<B.S>]*/
-/*prod:nnbd-off.member: f:deps=[B],direct,explicit=[f.T],needsArgs,needsInst=[<B.S>]*/
+/*spec:nnbd-off|prod:nnbd-off.member: f:deps=[B],direct,explicit=[f.T],needsArgs,needsInst=[<B.S>]*/
+/*spec:nnbd-sdk|prod:nnbd-sdk.member: f:deps=[B],direct,explicit=[f.T*],needsArgs,needsInst=[<B.S*>]*/
 bool f<T>(T a) => a is T;
 
 typedef bool F<R>(R a);
 
 /*spec:nnbd-off.class: B:direct,explicit=[bool Function(B.S)],needsArgs*/
-/*prod:nnbd-off.class: B:indirect,needsArgs*/
+/*prod:nnbd-off|prod:nnbd-sdk.class: B:indirect,needsArgs*/
+/*spec:nnbd-sdk.class: B:direct,explicit=[bool* Function(B.S*)*],needsArgs*/
 class B<S> {
   F<S> c;
 
diff --git a/tests/compiler/dart2js/rti/data/instantiation5.dart b/tests/compiler/dart2js/rti/data/instantiation5.dart
index 7ffbd29..9c9d4c9 100644
--- a/tests/compiler/dart2js/rti/data/instantiation5.dart
+++ b/tests/compiler/dart2js/rti/data/instantiation5.dart
@@ -5,12 +5,13 @@
 // @dart = 2.7
 
 /*spec:nnbd-off.member: f:deps=[method],direct,explicit=[f.T],needsArgs,needsInst=[<method.S>]*/
-/*prod:nnbd-off.member: f:deps=[method]*/
+/*prod:nnbd-off|prod:nnbd-sdk.member: f:deps=[method]*/
+/*spec:nnbd-sdk.member: f:deps=[method],direct,explicit=[f.T*],needsArgs,needsInst=[<method.S*>]*/
 int f<T>(T a) => null;
 
 typedef int F<R>(R a);
 
-/*spec:nnbd-off.member: method:indirect,needsArgs*/
+/*spec:nnbd-off|spec:nnbd-sdk.member: method:indirect,needsArgs*/
 method<S>() {
   F<S> c;
 
diff --git a/tests/compiler/dart2js/rti/data/instantiation6.dart b/tests/compiler/dart2js/rti/data/instantiation6.dart
index a2e2c79..fc8417a 100644
--- a/tests/compiler/dart2js/rti/data/instantiation6.dart
+++ b/tests/compiler/dart2js/rti/data/instantiation6.dart
@@ -4,14 +4,13 @@
 
 // @dart = 2.7
 
-/*spec:nnbd-off.member: f:deps=[method],direct,explicit=[f.T],needsArgs,needsInst=[<method.S>]*/
-/*prod:nnbd-off.member: f:deps=[method],direct,explicit=[f.T],needsArgs,needsInst=[<method.S>]*/
+/*spec:nnbd-off|prod:nnbd-off.member: f:deps=[method],direct,explicit=[f.T],needsArgs,needsInst=[<method.S>]*/
+/*spec:nnbd-sdk|prod:nnbd-sdk.member: f:deps=[method],direct,explicit=[f.T*],needsArgs,needsInst=[<method.S*>]*/
 bool f<T>(T a) => a is T;
 
 typedef bool F<R>(R a);
 
-/*spec:nnbd-off.member: method:indirect,needsArgs*/
-/*prod:nnbd-off.member: method:indirect,needsArgs*/
+/*member: method:indirect,needsArgs*/
 method<S>() {
   F<S> c;
 
diff --git a/tests/compiler/dart2js/rti/data/instantiation7.dart b/tests/compiler/dart2js/rti/data/instantiation7.dart
index 71498ebb..379bc93 100644
--- a/tests/compiler/dart2js/rti/data/instantiation7.dart
+++ b/tests/compiler/dart2js/rti/data/instantiation7.dart
@@ -5,22 +5,25 @@
 // @dart = 2.7
 
 /*spec:nnbd-off.member: f1:deps=[method],direct,explicit=[f1.T],needsArgs,needsInst=[<method.X>]*/
-/*prod:nnbd-off.member: f1:deps=[method]*/
+/*prod:nnbd-off|prod:nnbd-sdk.member: f1:deps=[method]*/
+/*spec:nnbd-sdk.member: f1:deps=[method],direct,explicit=[f1.T*],needsArgs,needsInst=[<method.X*>]*/
 int f1<T>(T a, T b, T c) => null;
 
 /*spec:nnbd-off.member: f2:deps=[method],direct,explicit=[f2.S,f2.T],needsArgs,needsInst=[<method.X,method.Y>]*/
-/*prod:nnbd-off.member: f2:deps=[method]*/
+/*prod:nnbd-off|prod:nnbd-sdk.member: f2:deps=[method]*/
+/*spec:nnbd-sdk.member: f2:deps=[method],direct,explicit=[f2.S*,f2.T*],needsArgs,needsInst=[<method.X*,method.Y*>]*/
 int f2<T, S>(T a, S b, S c) => null;
 
 /*spec:nnbd-off.member: f3:deps=[method],direct,explicit=[f3.S,f3.T,f3.U],needsArgs,needsInst=[<method.X,method.Y,method.Z>]*/
-/*prod:nnbd-off.member: f3:deps=[method]*/
+/*prod:nnbd-off|prod:nnbd-sdk.member: f3:deps=[method]*/
+/*spec:nnbd-sdk.member: f3:deps=[method],direct,explicit=[f3.S*,f3.T*,f3.U*],needsArgs,needsInst=[<method.X*,method.Y*,method.Z*>]*/
 int f3<T, S, U>(T a, S b, U c) => null;
 
 typedef int F1<R>(R a, R b, R c);
 typedef int F2<R, P>(R a, P b, P c);
 typedef int F3<R, P, Q>(R a, P b, Q c);
 
-/*spec:nnbd-off.member: method:indirect,needsArgs*/
+/*spec:nnbd-off|spec:nnbd-sdk.member: method:indirect,needsArgs*/
 method<X, Y, Z>() {
   F1<X> c1;
   F2<X, Y> c2;
diff --git a/tests/compiler/dart2js/rti/data/is_type_variable.dart b/tests/compiler/dart2js/rti/data/is_type_variable.dart
index 7d38ee1..f80470a 100644
--- a/tests/compiler/dart2js/rti/data/is_type_variable.dart
+++ b/tests/compiler/dart2js/rti/data/is_type_variable.dart
@@ -4,7 +4,8 @@
 
 // @dart = 2.7
 
-/*class: A:direct,explicit=[A.T],needsArgs*/
+/*spec:nnbd-off|prod:nnbd-off.class: A:direct,explicit=[A.T],needsArgs*/
+/*spec:nnbd-sdk|prod:nnbd-sdk.class: A:direct,explicit=[A.T*],needsArgs*/
 class A<T> {
   m(T t) => t is T;
 }
diff --git a/tests/compiler/dart2js/rti/data/is_type_variable_super.dart b/tests/compiler/dart2js/rti/data/is_type_variable_super.dart
index 6f168e3..fa7755f 100644
--- a/tests/compiler/dart2js/rti/data/is_type_variable_super.dart
+++ b/tests/compiler/dart2js/rti/data/is_type_variable_super.dart
@@ -6,7 +6,8 @@
 
 class A<T> {}
 
-/*class: B:direct,explicit=[B.T],needsArgs*/
+/*spec:nnbd-off|prod:nnbd-off.class: B:direct,explicit=[B.T],needsArgs*/
+/*spec:nnbd-sdk|prod:nnbd-sdk.class: B:direct,explicit=[B.T*],needsArgs*/
 class B<T> extends A<T> {
   m(T t) => t is T;
 }
diff --git a/tests/compiler/dart2js/rti/data/is_type_variable_super_complex.dart b/tests/compiler/dart2js/rti/data/is_type_variable_super_complex.dart
index fd30e1b..0e67f2e 100644
--- a/tests/compiler/dart2js/rti/data/is_type_variable_super_complex.dart
+++ b/tests/compiler/dart2js/rti/data/is_type_variable_super_complex.dart
@@ -6,7 +6,8 @@
 
 class A<T> {}
 
-/*class: B:direct,explicit=[B.T],needsArgs*/
+/*spec:nnbd-off|prod:nnbd-off.class: B:direct,explicit=[B.T],needsArgs*/
+/*spec:nnbd-sdk|prod:nnbd-sdk.class: B:direct,explicit=[B.T*],needsArgs*/
 class B<T> extends A<List<T>> {
   m(T t) => t is T;
 }
diff --git a/tests/compiler/dart2js/rti/data/local_function_generic.dart b/tests/compiler/dart2js/rti/data/local_function_generic.dart
index c3ca915..1f18492 100644
--- a/tests/compiler/dart2js/rti/data/local_function_generic.dart
+++ b/tests/compiler/dart2js/rti/data/local_function_generic.dart
@@ -8,8 +8,9 @@
 
 method1() {
   /*spec:nnbd-off.direct,explicit=[local.T],needsArgs,needsSignature*/
-  /*prod:nnbd-off.needsSignature*/
-  T local<T>(T t) => t;
+  /*prod:nnbd-off|prod:nnbd-sdk.needsSignature*/
+  /*spec:nnbd-sdk.direct,explicit=[local.T*],needsArgs,needsSignature*/ T
+      local<T>(T t) => t;
   return local;
 }
 
diff --git a/tests/compiler/dart2js/rti/data/local_function_list_literal.dart b/tests/compiler/dart2js/rti/data/local_function_list_literal.dart
index 66de226..2a7a9a0 100644
--- a/tests/compiler/dart2js/rti/data/local_function_list_literal.dart
+++ b/tests/compiler/dart2js/rti/data/local_function_list_literal.dart
@@ -6,8 +6,8 @@
 
 import 'package:expect/expect.dart';
 
-/*spec:nnbd-off.member: method:implicit=[method.T],indirect,needsArgs*/
-/*prod:nnbd-off.member: method:needsArgs*/
+/*spec:nnbd-off|spec:nnbd-sdk.member: method:implicit=[method.T],indirect,needsArgs*/
+/*prod:nnbd-off|prod:nnbd-sdk.member: method:needsArgs*/
 /*spec:nnbd-off.class: global#JSArray:deps=[ArrayIterator,List],direct,explicit=[JSArray,JSArray.E,JSArray<ArrayIterator.E>],implicit=[JSArray.E],needsArgs*/
 /*prod:nnbd-off.class: global#JSArray:deps=[List],explicit=[JSArray],needsArgs*/
 
diff --git a/tests/compiler/dart2js/rti/data/local_function_map_literal.dart b/tests/compiler/dart2js/rti/data/local_function_map_literal.dart
index 0fed376..f6a18a4 100644
--- a/tests/compiler/dart2js/rti/data/local_function_map_literal.dart
+++ b/tests/compiler/dart2js/rti/data/local_function_map_literal.dart
@@ -9,8 +9,8 @@
 /*spec:nnbd-off.class: global#LinkedHashMap:deps=[Map],direct,explicit=[LinkedHashMap<LinkedHashMap.K,LinkedHashMap.V>],implicit=[LinkedHashMap.K,LinkedHashMap.V],needsArgs*/
 /*prod:nnbd-off.class: global#LinkedHashMap:deps=[Map],needsArgs*/
 
-/*spec:nnbd-off.member: method:implicit=[method.T],indirect,needsArgs*/
-/*prod:nnbd-off.member: method:needsArgs*/
+/*spec:nnbd-off|spec:nnbd-sdk.member: method:implicit=[method.T],indirect,needsArgs*/
+/*prod:nnbd-off|prod:nnbd-sdk.member: method:needsArgs*/
 @pragma('dart2js:noInline')
 method<T>() {
   return () => <T, int>{};
diff --git a/tests/compiler/dart2js/rti/data/local_function_signature2.dart b/tests/compiler/dart2js/rti/data/local_function_signature2.dart
index 48d3161..6970e69 100644
--- a/tests/compiler/dart2js/rti/data/local_function_signature2.dart
+++ b/tests/compiler/dart2js/rti/data/local_function_signature2.dart
@@ -8,27 +8,25 @@
 
 class Class1 {
   method1() {
-    /**/
     num local<T>(num n) => null;
     return local;
   }
 
   method2() {
-    /**/
     num local<T>(int n) => null;
     return local;
   }
 
   method3() {
-    /**/
     int local<T>(num n) => null;
     return local;
   }
 }
 
 class Class2 {
+  /*spec:nnbd-sdk.member: Class2.method4:direct,explicit=[method4.T*],needsArgs,selectors=[Selector(call, method4, arity=0, types=1)]*/
   /*spec:nnbd-off.member: Class2.method4:direct,explicit=[method4.T],needsArgs,selectors=[Selector(call, method4, arity=0, types=1)]*/
-  /*prod:nnbd-off.member: Class2.method4:needsArgs,selectors=[Selector(call, method4, arity=0, types=1)]*/
+  /*prod:nnbd-off|prod:nnbd-sdk.member: Class2.method4:needsArgs,selectors=[Selector(call, method4, arity=0, types=1)]*/
   method4<T>() {
     /*needsSignature*/
     num local(T n) => null;
@@ -46,17 +44,17 @@
 }
 
 class Class4 {
+  /*spec:nnbd-sdk.member: Class4.method6:direct,explicit=[method6.T*],needsArgs,selectors=[Selector(call, method6, arity=0, types=1)]*/
   /*spec:nnbd-off.member: Class4.method6:direct,explicit=[method6.T],needsArgs,selectors=[Selector(call, method6, arity=0, types=1)]*/
-  /*prod:nnbd-off.member: Class4.method6:*/
   method6<T>() {
-    /**/
     num local(num n, T t) => null;
     return local;
   }
 }
 
 /*spec:nnbd-off.member: method7:direct,explicit=[method7.T],needsArgs*/
-/*prod:nnbd-off.member: method7:needsArgs*/
+/*prod:nnbd-off|prod:nnbd-sdk.member: method7:needsArgs*/
+/*spec:nnbd-sdk.member: method7:direct,explicit=[method7.T*],needsArgs*/
 method7<T>() {
   /*needsSignature*/
   num local(T n) => null;
@@ -71,30 +69,29 @@
 }
 
 /*spec:nnbd-off.member: method9:direct,explicit=[method9.T],needsArgs*/
-/*prod:nnbd-off.member: method9:*/
+/*spec:nnbd-sdk.member: method9:direct,explicit=[method9.T*],needsArgs*/
 method9<T>() {
-  /**/
   num local(num n, T t) => null;
   return local;
 }
 
 method10() {
   /*spec:nnbd-off.direct,explicit=[local.T],needsArgs*/
-  /*prod:nnbd-off.*/
-  num local<T>(T n) => null;
+  /*spec:nnbd-sdk.direct,explicit=[local.T*],needsArgs*/ num local<T>(T n) =>
+      null;
   return local;
 }
 
 method11() {
-  /**/
   T local<T>(num n) => null;
   return local;
 }
 
 method12() {
   /*spec:nnbd-off.direct,explicit=[local.T],needsArgs*/
-  /*prod:nnbd-off.*/
-  num local<T>(num n, T t) => null;
+  /*spec:nnbd-sdk.direct,explicit=[local.T*],needsArgs*/ num local<T>(
+          num n, T t) =>
+      null;
   return local;
 }
 
diff --git a/tests/compiler/dart2js/rti/data/local_function_signatures.dart b/tests/compiler/dart2js/rti/data/local_function_signatures.dart
index 2a2b2e9..11d3122 100644
--- a/tests/compiler/dart2js/rti/data/local_function_signatures.dart
+++ b/tests/compiler/dart2js/rti/data/local_function_signatures.dart
@@ -8,8 +8,7 @@
 
 class Class1 {
   method1() {
-    /*spec:nnbd-off.needsSignature*/
-    /*prod:nnbd-off.needsSignature*/
+    /*needsSignature*/
     num local(num n) => null;
     return local;
   }
@@ -25,8 +24,9 @@
   }
 }
 
-/*prod:nnbd-off.class: Class2:needsArgs*/
+/*prod:nnbd-off|prod:nnbd-sdk.class: Class2:needsArgs*/
 /*spec:nnbd-off.class: Class2:direct,explicit=[Class2.T],needsArgs*/
+/*spec:nnbd-sdk.class: Class2:direct,explicit=[Class2.T*],needsArgs*/
 class Class2<T> {
   method4() {
     /*needsSignature*/
@@ -44,11 +44,10 @@
   }
 }
 
-/*prod:nnbd-off.class: Class4:*/
 /*spec:nnbd-off.class: Class4:direct,explicit=[Class4.T],needsArgs*/
+/*spec:nnbd-sdk.class: Class4:direct,explicit=[Class4.T*],needsArgs*/
 class Class4<T> {
   method6() {
-    /**/
     num local(num n, T t) => null;
     return local;
   }
diff --git a/tests/compiler/dart2js/rti/data/local_function_signatures_generic.dart b/tests/compiler/dart2js/rti/data/local_function_signatures_generic.dart
index 1a089c8..f41c0d8 100644
--- a/tests/compiler/dart2js/rti/data/local_function_signatures_generic.dart
+++ b/tests/compiler/dart2js/rti/data/local_function_signatures_generic.dart
@@ -14,7 +14,6 @@
   }
 
   method2() {
-    /**/
     num local<T>(int n) => null;
     return local;
   }
@@ -27,8 +26,9 @@
 }
 
 class Class2 {
+  /*spec:nnbd-sdk.member: Class2.method4:direct,explicit=[method4.T*],needsArgs,selectors=[Selector(call, method4, arity=0, types=1)]*/
   /*spec:nnbd-off.member: Class2.method4:direct,explicit=[method4.T],needsArgs,selectors=[Selector(call, method4, arity=0, types=1)]*/
-  /*prod:nnbd-off.member: Class2.method4:needsArgs,selectors=[Selector(call, method4, arity=0, types=1)]*/
+  /*prod:nnbd-off|prod:nnbd-sdk.member: Class2.method4:needsArgs,selectors=[Selector(call, method4, arity=0, types=1)]*/
   method4<T>() {
     /*needsSignature*/
     num local(T n) => null;
@@ -46,17 +46,17 @@
 }
 
 class Class4 {
+  /*spec:nnbd-sdk.member: Class4.method6:direct,explicit=[method6.T*],needsArgs,selectors=[Selector(call, method6, arity=0, types=1)]*/
   /*spec:nnbd-off.member: Class4.method6:direct,explicit=[method6.T],needsArgs,selectors=[Selector(call, method6, arity=0, types=1)]*/
-  /*prod:nnbd-off.member: Class4.method6:*/
   method6<T>() {
-    /**/
     num local(num n, T t) => null;
     return local;
   }
 }
 
 /*spec:nnbd-off.member: method7:direct,explicit=[method7.T],needsArgs*/
-/*prod:nnbd-off.member: method7:needsArgs*/
+/*prod:nnbd-off|prod:nnbd-sdk.member: method7:needsArgs*/
+/*spec:nnbd-sdk.member: method7:direct,explicit=[method7.T*],needsArgs*/
 method7<T>() {
   /*needsSignature*/
   num local(T n) => null;
@@ -71,17 +71,17 @@
 }
 
 /*spec:nnbd-off.member: method9:direct,explicit=[method9.T],needsArgs*/
-/*prod:nnbd-off.member: method9:*/
+/*spec:nnbd-sdk.member: method9:direct,explicit=[method9.T*],needsArgs*/
 method9<T>() {
-  /**/
   num local(num n, T t) => null;
   return local;
 }
 
 method10() {
   /*spec:nnbd-off.direct,explicit=[local.T],needsArgs,needsInst=[<dynamic>,<num>,<num>],needsSignature*/
-  /*prod:nnbd-off.needsSignature*/
-  num local<T>(T n) => null;
+  /*prod:nnbd-off|prod:nnbd-sdk.needsSignature*/
+  /*spec:nnbd-sdk.direct,explicit=[local.T*],needsArgs,needsInst=[<dynamic>,<num*>,<num*>],needsSignature*/ num
+      local<T>(T n) => null;
   return local;
 }
 
@@ -93,8 +93,8 @@
 
 method12() {
   /*spec:nnbd-off.direct,explicit=[local.T],needsArgs,needsInst=[<dynamic>,<num>,<num>]*/
-  /*prod:nnbd-off.*/
-  num local<T>(num n, T t) => null;
+  /*spec:nnbd-sdk.direct,explicit=[local.T*],needsArgs,needsInst=[<dynamic>,<num*>,<num*>]*/ num
+      local<T>(num n, T t) => null;
   return local;
 }
 
@@ -106,8 +106,9 @@
 
 num Function(num) method14() {
   /*spec:nnbd-off.direct,explicit=[local.T],needsArgs,needsInst=[<dynamic>,<num>,<num>],needsSignature*/
-  /*prod:nnbd-off.needsSignature*/
-  num local<T>(T n) => null;
+  /*prod:nnbd-off|prod:nnbd-sdk.needsSignature*/
+  /*spec:nnbd-sdk.direct,explicit=[local.T*],needsArgs,needsInst=[<dynamic>,<num*>,<num*>],needsSignature*/ num
+      local<T>(T n) => null;
   return local;
 }
 
diff --git a/tests/compiler/dart2js/rti/data/map_to_set.dart b/tests/compiler/dart2js/rti/data/map_to_set.dart
index 78dff5e..d057f79 100644
--- a/tests/compiler/dart2js/rti/data/map_to_set.dart
+++ b/tests/compiler/dart2js/rti/data/map_to_set.dart
@@ -25,8 +25,8 @@
   set is Set<String>;
 }
 
-/*prod:nnbd-off.class: Class:needsArgs*/
-/*spec:nnbd-off.class: Class:implicit=[Class.S,Class.T],indirect,needsArgs*/
+/*prod:nnbd-off|prod:nnbd-sdk.class: Class:needsArgs*/
+/*spec:nnbd-off|spec:nnbd-sdk.class: Class:implicit=[Class.S,Class.T],indirect,needsArgs*/
 class Class<T, S> {
   m() {
     return <T, S>{};
diff --git a/tests/compiler/dart2js/rti/data/method_signatures.dart b/tests/compiler/dart2js/rti/data/method_signatures.dart
index 77a96ee..7475a2e 100644
--- a/tests/compiler/dart2js/rti/data/method_signatures.dart
+++ b/tests/compiler/dart2js/rti/data/method_signatures.dart
@@ -18,10 +18,9 @@
 }
 
 /*spec:nnbd-off.class: Class2:direct,explicit=[Class2.T],needsArgs*/
-/*prod:nnbd-off.class: Class2:*/
+/*spec:nnbd-sdk.class: Class2:direct,explicit=[Class2.T*],needsArgs*/
 class Class2<T> {
-  /*spec:nnbd-off.member: Class2.method4:*/
-  /*prod:nnbd-off.member: Class2.method4:*/
+  /*spec:nnbd-off|prod:nnbd-off.member: Class2.method4:*/
   num method4(T n) => null;
 }
 
@@ -31,8 +30,8 @@
   T method5(num n) => null;
 }
 
-/*prod:nnbd-off.class: Class4:*/
 /*spec:nnbd-off.class: Class4:direct,explicit=[Class4.T],needsArgs*/
+/*spec:nnbd-sdk.class: Class4:direct,explicit=[Class4.T*],needsArgs*/
 class Class4<T> {
   /*member: Class4.method6:*/
   num method6(num n, T t) => null;
diff --git a/tests/compiler/dart2js/rti/data/method_signatures_generic.dart b/tests/compiler/dart2js/rti/data/method_signatures_generic.dart
index 0a7024c..2419d0a 100644
--- a/tests/compiler/dart2js/rti/data/method_signatures_generic.dart
+++ b/tests/compiler/dart2js/rti/data/method_signatures_generic.dart
@@ -18,8 +18,8 @@
 }
 
 class Class2 {
+  /*spec:nnbd-sdk.member: Class2.method4:direct,explicit=[method4.T*],needsArgs,needsInst=[<num*>,<num*>,<num*>,<num*>]*/
   /*spec:nnbd-off.member: Class2.method4:direct,explicit=[method4.T],needsArgs,needsInst=[<num>,<num>,<num>,<num>]*/
-  /*prod:nnbd-off.member: Class2.method4:*/
   num method4<T>(T n) => null;
 }
 
@@ -29,20 +29,20 @@
 }
 
 class Class4 {
+  /*spec:nnbd-sdk.member: Class4.method6:direct,explicit=[method6.T*],needsArgs,needsInst=[<num*>,<num*>,<num*>,<num*>]*/
   /*spec:nnbd-off.member: Class4.method6:direct,explicit=[method6.T],needsArgs,needsInst=[<num>,<num>,<num>,<num>]*/
-  /*prod:nnbd-off.member: Class4.method6:*/
   num method6<T>(num n, T t) => null;
 }
 
 /*spec:nnbd-off.member: method7:direct,explicit=[method7.T],needsArgs,needsInst=[<num>,<num>,<num>,<num>]*/
-/*prod:nnbd-off.member: method7:*/
+/*spec:nnbd-sdk.member: method7:direct,explicit=[method7.T*],needsArgs,needsInst=[<num*>,<num*>,<num*>,<num*>]*/
 num method7<T>(T n) => null;
 
 /*member: method8:*/
 T method8<T>(num n) => null;
 
 /*spec:nnbd-off.member: method9:direct,explicit=[method9.T],needsArgs,needsInst=[<num>,<num>,<num>,<num>]*/
-/*prod:nnbd-off.member: method9:*/
+/*spec:nnbd-sdk.member: method9:direct,explicit=[method9.T*],needsArgs,needsInst=[<num*>,<num*>,<num*>,<num*>]*/
 num method9<T>(num n, T t) => null;
 
 @pragma('dart2js:noInline')
diff --git a/tests/compiler/dart2js/rti/data/pragma_directives_instance.dart b/tests/compiler/dart2js/rti/data/pragma_directives_instance.dart
index 51c3d8b..4448e90 100644
--- a/tests/compiler/dart2js/rti/data/pragma_directives_instance.dart
+++ b/tests/compiler/dart2js/rti/data/pragma_directives_instance.dart
@@ -21,7 +21,8 @@
 }
 
 // Checks are needed both with and without --omit-implicit-checks.
-/*class: Class1a:explicit=[Class1a]*/
+/*spec:nnbd-off|prod:nnbd-off.class: Class1a:explicit=[Class1a]*/
+/*spec:nnbd-sdk|prod:nnbd-sdk.class: Class1a:explicit=[Class1a*]*/
 class Class1a {}
 
 // Checks are needed neither with nor without --omit-implicit-checks.
@@ -29,7 +30,8 @@
 class Class1b {}
 
 // Checks are needed both with and without --omit-implicit-checks.
-/*class: Class2a:explicit=[Class2a]*/
+/*spec:nnbd-off|prod:nnbd-off.class: Class2a:explicit=[Class2a]*/
+/*spec:nnbd-sdk|prod:nnbd-sdk.class: Class2a:explicit=[Class2a*]*/
 class Class2a {}
 
 // Checks are needed neither with nor without --omit-implicit-checks.
@@ -37,7 +39,8 @@
 class Class2b {}
 
 // Checks are needed both with and without --omit-implicit-checks.
-/*class: Class3a:explicit=[Class3a]*/
+/*spec:nnbd-off|prod:nnbd-off.class: Class3a:explicit=[Class3a]*/
+/*spec:nnbd-sdk|prod:nnbd-sdk.class: Class3a:explicit=[Class3a*]*/
 class Class3a {}
 
 // Checks are needed neither with nor without --omit-implicit-checks.
@@ -45,7 +48,8 @@
 class Class3b {}
 
 // Checks are needed both with and without --omit-implicit-checks.
-/*class: Class4a:explicit=[Class4a<int>],needsArgs*/
+/*spec:nnbd-off|prod:nnbd-off.class: Class4a:explicit=[Class4a<int>],needsArgs*/
+/*spec:nnbd-sdk|prod:nnbd-sdk.class: Class4a:explicit=[Class4a<int*>*],needsArgs*/
 class Class4a<T> {}
 
 // Checks are needed neither with nor without --omit-implicit-checks.
@@ -53,7 +57,8 @@
 class Class4b<T> {}
 
 // Checks are needed both with and without --omit-implicit-checks.
-/*class: Class5a:explicit=[Class5a<int>],needsArgs*/
+/*spec:nnbd-off|prod:nnbd-off.class: Class5a:explicit=[Class5a<int>],needsArgs*/
+/*spec:nnbd-sdk|prod:nnbd-sdk.class: Class5a:explicit=[Class5a<int*>*],needsArgs*/
 class Class5a<T> {}
 
 // Checks are needed neither with nor without --omit-implicit-checks.
@@ -61,7 +66,8 @@
 class Class5b<T> {}
 
 // Checks are needed both with and without --omit-implicit-checks.
-/*class: Class6a:explicit=[Class6a<int>],needsArgs*/
+/*spec:nnbd-off|prod:nnbd-off.class: Class6a:explicit=[Class6a<int>],needsArgs*/
+/*spec:nnbd-sdk|prod:nnbd-sdk.class: Class6a:explicit=[Class6a<int*>*],needsArgs*/
 class Class6a<T> {}
 
 // Checks are needed neither with nor without --omit-implicit-checks.
diff --git a/tests/compiler/dart2js/rti/data/pragma_directives_static.dart b/tests/compiler/dart2js/rti/data/pragma_directives_static.dart
index 4a44a16..c27c623 100644
--- a/tests/compiler/dart2js/rti/data/pragma_directives_static.dart
+++ b/tests/compiler/dart2js/rti/data/pragma_directives_static.dart
@@ -20,7 +20,8 @@
 }
 
 // Checks are needed both with and without --omit-implicit-checks.
-/*class: Class1a:explicit=[Class1a]*/
+/*spec:nnbd-off|prod:nnbd-off.class: Class1a:explicit=[Class1a]*/
+/*spec:nnbd-sdk|prod:nnbd-sdk.class: Class1a:explicit=[Class1a*]*/
 class Class1a {}
 
 // Checks are needed neither with nor without --omit-implicit-checks.
@@ -28,7 +29,8 @@
 class Class1b {}
 
 // Checks are needed both with and without --omit-implicit-checks.
-/*class: Class2a:explicit=[Class2a]*/
+/*spec:nnbd-off|prod:nnbd-off.class: Class2a:explicit=[Class2a]*/
+/*spec:nnbd-sdk|prod:nnbd-sdk.class: Class2a:explicit=[Class2a*]*/
 class Class2a {}
 
 // Checks are needed neither with nor without --omit-implicit-checks.
@@ -36,7 +38,8 @@
 class Class2b {}
 
 // Checks are needed both with and without --omit-implicit-checks.
-/*class: Class3a:explicit=[Class3a]*/
+/*spec:nnbd-off|prod:nnbd-off.class: Class3a:explicit=[Class3a]*/
+/*spec:nnbd-sdk|prod:nnbd-sdk.class: Class3a:explicit=[Class3a*]*/
 class Class3a {}
 
 // Checks are needed neither with nor without --omit-implicit-checks.
@@ -44,7 +47,8 @@
 class Class3b {}
 
 // Checks are needed both with and without --omit-implicit-checks.
-/*class: Class4a:explicit=[Class4a<int>],needsArgs*/
+/*spec:nnbd-off|prod:nnbd-off.class: Class4a:explicit=[Class4a<int>],needsArgs*/
+/*spec:nnbd-sdk|prod:nnbd-sdk.class: Class4a:explicit=[Class4a<int*>*],needsArgs*/
 class Class4a<T> {}
 
 // Checks are needed neither with nor without --omit-implicit-checks.
@@ -52,7 +56,8 @@
 class Class4b<T> {}
 
 // Checks are needed both with and without --omit-implicit-checks.
-/*class: Class5a:explicit=[Class5a<int>],needsArgs*/
+/*spec:nnbd-off|prod:nnbd-off.class: Class5a:explicit=[Class5a<int>],needsArgs*/
+/*spec:nnbd-sdk|prod:nnbd-sdk.class: Class5a:explicit=[Class5a<int*>*],needsArgs*/
 class Class5a<T> {}
 
 // Checks are needed neither with nor without --omit-implicit-checks.
@@ -60,7 +65,8 @@
 class Class5b<T> {}
 
 // Checks are needed both with and without --omit-implicit-checks.
-/*class: Class6a:explicit=[Class6a<int>],needsArgs*/
+/*spec:nnbd-off|prod:nnbd-off.class: Class6a:explicit=[Class6a<int>],needsArgs*/
+/*spec:nnbd-sdk|prod:nnbd-sdk.class: Class6a:explicit=[Class6a<int*>*],needsArgs*/
 class Class6a<T> {}
 
 // Checks are needed neither with nor without --omit-implicit-checks.
diff --git a/tests/compiler/dart2js/rti/data/private_dynamic.dart b/tests/compiler/dart2js/rti/data/private_dynamic.dart
index 135d54c..15e49f3 100644
--- a/tests/compiler/dart2js/rti/data/private_dynamic.dart
+++ b/tests/compiler/dart2js/rti/data/private_dynamic.dart
@@ -5,7 +5,8 @@
 // @dart = 2.7
 
 class C {
-  /*member: C._private:direct,explicit=[_private.T],needsArgs,selectors=[Selector(call, _private, arity=1, types=1)]*/
+  /*spec:nnbd-off|prod:nnbd-off.member: C._private:direct,explicit=[_private.T],needsArgs,selectors=[Selector(call, _private, arity=1, types=1)]*/
+  /*spec:nnbd-sdk|prod:nnbd-sdk.member: C._private:direct,explicit=[_private.T*],needsArgs,selectors=[Selector(call, _private, arity=1, types=1)]*/
   _private<T>(t) => t is T;
 }
 
diff --git a/tests/compiler/dart2js/rti/data/private_dynamic2.dart b/tests/compiler/dart2js/rti/data/private_dynamic2.dart
index d682df3..cf6f2d8 100644
--- a/tests/compiler/dart2js/rti/data/private_dynamic2.dart
+++ b/tests/compiler/dart2js/rti/data/private_dynamic2.dart
@@ -5,7 +5,8 @@
 // @dart = 2.7
 
 class C {
-  /*member: C._private:deps=[D._private2],direct,explicit=[_private.T],needsArgs,selectors=[Selector(call, _private, arity=1, types=1)]*/
+  /*spec:nnbd-off|prod:nnbd-off.member: C._private:deps=[D._private2],direct,explicit=[_private.T],needsArgs,selectors=[Selector(call, _private, arity=1, types=1)]*/
+  /*spec:nnbd-sdk|prod:nnbd-sdk.member: C._private:deps=[D._private2],direct,explicit=[_private.T*],needsArgs,selectors=[Selector(call, _private, arity=1, types=1)]*/
   _private<T>(t) => t is T;
 }
 
diff --git a/tests/compiler/dart2js/rti/data/runtime_type_closure_equals2.dart b/tests/compiler/dart2js/rti/data/runtime_type_closure_equals2.dart
index 77913d6..6d479bc 100644
--- a/tests/compiler/dart2js/rti/data/runtime_type_closure_equals2.dart
+++ b/tests/compiler/dart2js/rti/data/runtime_type_closure_equals2.dart
@@ -6,28 +6,24 @@
 
 import 'package:expect/expect.dart';
 
-/*spec:nnbd-off.class: Class:*/
-/*prod:nnbd-off.class: Class:*/
+/*spec:nnbd-off|prod:nnbd-off.class: Class:*/
 class Class<T> {
-  /*spec:nnbd-off.member: Class.:*/
-  /*prod:nnbd-off.member: Class.:*/
+  /*spec:nnbd-off|prod:nnbd-off.member: Class.:*/
   Class();
 }
 
-/*spec:nnbd-off.member: main:*/
-/*prod:nnbd-off.member: main:*/
+/*spec:nnbd-off|prod:nnbd-off.member: main:*/
 main() {
-  /*spec:nnbd-off.needsArgs,needsSignature*/
-  /*prod:nnbd-off.needsArgs,needsSignature*/
+  /*needsArgs,needsSignature*/
   T local1a<T>() => null;
 
-  /*spec:nnbd-off.needsArgs,needsSignature*/
-  /*prod:nnbd-off.needsArgs,needsSignature*/
+  /*needsArgs,needsSignature*/
   T local1b<T>() => null;
 
   /*spec:nnbd-off.direct,explicit=[local2.T],needsArgs,needsSignature*/
-  /*prod:nnbd-off.needsArgs,needsSignature*/
-  T local2<T>(T t, String s) => t;
+  /*prod:nnbd-off|prod:nnbd-sdk.needsArgs,needsSignature*/
+  /*spec:nnbd-sdk.direct,explicit=[local2.T*],needsArgs,needsSignature*/ T
+      local2<T>(T t, String s) => t;
 
   Expect.isTrue(local1a.runtimeType == local1b.runtimeType);
   Expect.isFalse(local1a.runtimeType == local2.runtimeType);
diff --git a/tests/compiler/dart2js/rti/data/runtime_type_closure_equals3.dart b/tests/compiler/dart2js/rti/data/runtime_type_closure_equals3.dart
index 51e8cfc..5ec7e5a 100644
--- a/tests/compiler/dart2js/rti/data/runtime_type_closure_equals3.dart
+++ b/tests/compiler/dart2js/rti/data/runtime_type_closure_equals3.dart
@@ -8,15 +8,14 @@
 
 String method() => null;
 
-/*prod:nnbd-off.class: Class1:needsArgs*/
+/*prod:nnbd-off|prod:nnbd-sdk.class: Class1:needsArgs*/
 /*spec:nnbd-off.class: Class1:direct,explicit=[Class1.T],needsArgs*/
+/*spec:nnbd-sdk.class: Class1:direct,explicit=[Class1.T*],needsArgs*/
 class Class1<T> {
-  /*spec:nnbd-off.member: Class1.:*/
-  /*prod:nnbd-off.member: Class1.:*/
+  /*spec:nnbd-off|prod:nnbd-off.member: Class1.:*/
   Class1();
 
-  /*spec:nnbd-off.member: Class1.method:*/
-  /*prod:nnbd-off.member: Class1.method:*/
+  /*spec:nnbd-off|prod:nnbd-off.member: Class1.method:*/
   method() {
     /*needsSignature*/
     T local1a() => null;
@@ -33,16 +32,13 @@
   }
 }
 
-/*spec:nnbd-off.class: Class2:*/
-/*prod:nnbd-off.class: Class2:*/
+/*spec:nnbd-off|prod:nnbd-off.class: Class2:*/
 class Class2<T> {
-  /*spec:nnbd-off.member: Class2.:*/
-  /*prod:nnbd-off.member: Class2.:*/
+  /*spec:nnbd-off|prod:nnbd-off.member: Class2.:*/
   Class2();
 }
 
-/*spec:nnbd-off.member: main:*/
-/*prod:nnbd-off.member: main:*/
+/*spec:nnbd-off|prod:nnbd-off.member: main:*/
 main() {
   new Class1<int>().method();
   new Class2<int>();
diff --git a/tests/compiler/dart2js/rti/data/runtime_type_closure_equals5.dart b/tests/compiler/dart2js/rti/data/runtime_type_closure_equals5.dart
index 2feedd8..c883acf 100644
--- a/tests/compiler/dart2js/rti/data/runtime_type_closure_equals5.dart
+++ b/tests/compiler/dart2js/rti/data/runtime_type_closure_equals5.dart
@@ -6,36 +6,30 @@
 
 import 'package:expect/expect.dart';
 
-/*prod:nnbd-off.class: Class1:needsArgs*/
+/*prod:nnbd-off|prod:nnbd-sdk.class: Class1:needsArgs*/
 /*spec:nnbd-off.class: Class1:direct,explicit=[Class1.T],needsArgs*/
+/*spec:nnbd-sdk.class: Class1:direct,explicit=[Class1.T*],needsArgs*/
 class Class1<T> {
-  /*spec:nnbd-off.member: Class1.:*/
-  /*prod:nnbd-off.member: Class1.:*/
+  /*spec:nnbd-off|prod:nnbd-off.member: Class1.:*/
   Class1();
 
-  /*spec:nnbd-off.member: Class1.method1a:needsSignature*/
-  /*prod:nnbd-off.member: Class1.method1a:needsSignature*/
+  /*member: Class1.method1a:needsSignature*/
   T method1a() => null;
 
-  /*spec:nnbd-off.member: Class1.method1b:needsSignature*/
-  /*prod:nnbd-off.member: Class1.method1b:needsSignature*/
+  /*member: Class1.method1b:needsSignature*/
   T method1b() => null;
 
-  /*spec:nnbd-off.member: Class1.method2:needsSignature*/
-  /*prod:nnbd-off.member: Class1.method2:needsSignature*/
+  /*member: Class1.method2:needsSignature*/
   T method2(T t, String s) => t;
 }
 
-/*spec:nnbd-off.class: Class2:*/
-/*prod:nnbd-off.class: Class2:*/
+/*spec:nnbd-off|prod:nnbd-off.class: Class2:*/
 class Class2<T> {
-  /*spec:nnbd-off.member: Class2.:*/
-  /*prod:nnbd-off.member: Class2.:*/
+  /*spec:nnbd-off|prod:nnbd-off.member: Class2.:*/
   Class2();
 }
 
-/*spec:nnbd-off.member: main:*/
-/*prod:nnbd-off.member: main:*/
+/*spec:nnbd-off|prod:nnbd-off.member: main:*/
 main() {
   var c = new Class1<int>();
 
diff --git a/tests/compiler/dart2js/rti/data/runtime_type_closure_equals7.dart b/tests/compiler/dart2js/rti/data/runtime_type_closure_equals7.dart
index e43e522..4dbbd52a 100644
--- a/tests/compiler/dart2js/rti/data/runtime_type_closure_equals7.dart
+++ b/tests/compiler/dart2js/rti/data/runtime_type_closure_equals7.dart
@@ -13,19 +13,16 @@
 T method1b<T>() => null;
 
 /*spec:nnbd-off.member: method2:direct,explicit=[method2.T],needsArgs*/
-/*prod:nnbd-off.member: method2:*/
+/*spec:nnbd-sdk.member: method2:direct,explicit=[method2.T*],needsArgs*/
 T method2<T>(T t, String s) => t;
 
-/*spec:nnbd-off.class: Class:*/
-/*prod:nnbd-off.class: Class:*/
+/*spec:nnbd-off|prod:nnbd-off.class: Class:*/
 class Class<T> {
-  /*spec:nnbd-off.member: Class.:*/
-  /*prod:nnbd-off.member: Class.:*/
+  /*spec:nnbd-off|prod:nnbd-off.member: Class.:*/
   Class();
 }
 
-/*spec:nnbd-off.member: main:*/
-/*prod:nnbd-off.member: main:*/
+/*spec:nnbd-off|prod:nnbd-off.member: main:*/
 main() {
   Expect.isTrue(method1a.runtimeType == method1b.runtimeType);
   Expect.isFalse(method1a.runtimeType == method2.runtimeType);
diff --git a/tests/compiler/dart2js/rti/data/runtime_type_closure_equals8.dart b/tests/compiler/dart2js/rti/data/runtime_type_closure_equals8.dart
index ca1408e..a3d072c 100644
--- a/tests/compiler/dart2js/rti/data/runtime_type_closure_equals8.dart
+++ b/tests/compiler/dart2js/rti/data/runtime_type_closure_equals8.dart
@@ -6,11 +6,9 @@
 
 import 'package:expect/expect.dart';
 
-/*spec:nnbd-off.class: Class1:*/
-/*prod:nnbd-off.class: Class1:*/
+/*spec:nnbd-off|prod:nnbd-off.class: Class1:*/
 class Class1<S> {
-  /*spec:nnbd-off.member: Class1.:*/
-  /*prod:nnbd-off.member: Class1.:*/
+  /*spec:nnbd-off|prod:nnbd-off.member: Class1.:*/
   Class1();
 
   /*member: Class1.method1a:*/
@@ -19,21 +17,18 @@
   /*member: Class1.method1b:*/
   T method1b<T>() => null;
 
+  /*spec:nnbd-sdk.member: Class1.method2:direct,explicit=[method2.T*],needsArgs*/
   /*spec:nnbd-off.member: Class1.method2:direct,explicit=[method2.T],needsArgs*/
-  /*prod:nnbd-off.member: Class1.method2:*/
   T method2<T>(T t, String s) => t;
 }
 
-/*spec:nnbd-off.class: Class2:*/
-/*prod:nnbd-off.class: Class2:*/
+/*spec:nnbd-off|prod:nnbd-off.class: Class2:*/
 class Class2<T> {
-  /*spec:nnbd-off.member: Class2.:*/
-  /*prod:nnbd-off.member: Class2.:*/
+  /*spec:nnbd-off|prod:nnbd-off.member: Class2.:*/
   Class2();
 }
 
-/*spec:nnbd-off.member: main:*/
-/*prod:nnbd-off.member: main:*/
+/*spec:nnbd-off|prod:nnbd-off.member: main:*/
 main() {
   var c = new Class1<int>();
 
diff --git a/tests/compiler/dart2js/rti/data/runtime_type_closure_to_string1.dart b/tests/compiler/dart2js/rti/data/runtime_type_closure_to_string1.dart
index 8622fed..cdc738f 100644
--- a/tests/compiler/dart2js/rti/data/runtime_type_closure_to_string1.dart
+++ b/tests/compiler/dart2js/rti/data/runtime_type_closure_to_string1.dart
@@ -4,23 +4,18 @@
 
 // @dart = 2.7
 
-/*spec:nnbd-off.class: Class:*/
-/*prod:nnbd-off.class: Class:*/
+/*spec:nnbd-off|prod:nnbd-off.class: Class:*/
 class Class<T> {
-  /*spec:nnbd-off.member: Class.:*/
-  /*prod:nnbd-off.member: Class.:*/
+  /*spec:nnbd-off|prod:nnbd-off.member: Class.:*/
   Class();
 }
 
-/*spec:nnbd-off.member: main:*/
-/*prod:nnbd-off.member: main:*/
+/*spec:nnbd-off|prod:nnbd-off.member: main:*/
 main() {
-  /*spec:nnbd-off.needsSignature*/
-  /*prod:nnbd-off.*/
+  /*spec:nnbd-off|spec:nnbd-sdk.needsSignature*/
   local1() {}
 
-  /*spec:nnbd-off.needsSignature*/
-  /*prod:nnbd-off.*/
+  /*spec:nnbd-off|spec:nnbd-sdk.needsSignature*/
   local2(int i, String s) => i;
 
   print('${local1.runtimeType}');
diff --git a/tests/compiler/dart2js/rti/data/runtime_type_closure_to_string2.dart b/tests/compiler/dart2js/rti/data/runtime_type_closure_to_string2.dart
index d01980c..6a9ac40 100644
--- a/tests/compiler/dart2js/rti/data/runtime_type_closure_to_string2.dart
+++ b/tests/compiler/dart2js/rti/data/runtime_type_closure_to_string2.dart
@@ -4,23 +4,18 @@
 
 // @dart = 2.7
 
-/*spec:nnbd-off.class: Class:*/
-/*prod:nnbd-off.class: Class:*/
+/*spec:nnbd-off|prod:nnbd-off.class: Class:*/
 class Class<T> {
-  /*spec:nnbd-off.member: Class.:*/
-  /*prod:nnbd-off.member: Class.:*/
+  /*spec:nnbd-off|prod:nnbd-off.member: Class.:*/
   Class();
 }
 
-/*spec:nnbd-off.member: main:*/
-/*prod:nnbd-off.member: main:*/
+/*spec:nnbd-off|prod:nnbd-off.member: main:*/
 main() {
-  /*spec:nnbd-off.needsArgs,needsSignature*/
-  /*prod:nnbd-off.*/
+  /*spec:nnbd-off|spec:nnbd-sdk.needsArgs,needsSignature*/
   local1<T>() {}
 
-  /*spec:nnbd-off.needsArgs,needsSignature,selectors=[Selector(call, call, arity=2, types=1)]*/
-  /*prod:nnbd-off.*/
+  /*spec:nnbd-off|spec:nnbd-sdk.needsArgs,needsSignature,selectors=[Selector(call, call, arity=2, types=1)]*/
   local2<T>(t, s) => t;
 
   print('${local1.runtimeType}');
diff --git a/tests/compiler/dart2js/rti/data/runtime_type_closure_to_string3.dart b/tests/compiler/dart2js/rti/data/runtime_type_closure_to_string3.dart
index ac6dcf5..74b0f81 100644
--- a/tests/compiler/dart2js/rti/data/runtime_type_closure_to_string3.dart
+++ b/tests/compiler/dart2js/rti/data/runtime_type_closure_to_string3.dart
@@ -4,28 +4,22 @@
 
 // @dart = 2.7
 
-/*spec:nnbd-off.class: Class1:needsArgs*/
-/*prod:nnbd-off.class: Class1:*/
+/*spec:nnbd-off|spec:nnbd-sdk.class: Class1:needsArgs*/
 class Class1<T> {
-  /*spec:nnbd-off.member: Class1.:*/
-  /*prod:nnbd-off.member: Class1.:*/
+  /*spec:nnbd-off|prod:nnbd-off.member: Class1.:*/
   Class1();
 
-  /*spec:nnbd-off.member: Class1.method:needsSignature*/
-  /*prod:nnbd-off.member: Class1.method:*/
+  /*spec:nnbd-off|spec:nnbd-sdk.member: Class1.method:needsSignature*/
   T method() => null;
 }
 
-/*spec:nnbd-off.class: Class2:*/
-/*prod:nnbd-off.class: Class2:*/
+/*spec:nnbd-off|prod:nnbd-off.class: Class2:*/
 class Class2<T> {
-  /*spec:nnbd-off.member: Class2.:*/
-  /*prod:nnbd-off.member: Class2.:*/
+  /*spec:nnbd-off|prod:nnbd-off.member: Class2.:*/
   Class2();
 }
 
-/*spec:nnbd-off.member: main:*/
-/*prod:nnbd-off.member: main:*/
+/*spec:nnbd-off|prod:nnbd-off.member: main:*/
 main() {
   Class1<int> cls1 = new Class1<int>();
   print(cls1.method.runtimeType.toString());
diff --git a/tests/compiler/dart2js/rti/data/runtime_type_equals5.dart b/tests/compiler/dart2js/rti/data/runtime_type_equals5.dart
index ad20c46..11e696c 100644
--- a/tests/compiler/dart2js/rti/data/runtime_type_equals5.dart
+++ b/tests/compiler/dart2js/rti/data/runtime_type_equals5.dart
@@ -7,36 +7,32 @@
 import 'package:expect/expect.dart';
 
 /*spec:nnbd-off.class: Class1a:explicit=[Class1a]*/
+/*spec:nnbd-sdk.class: Class1a:explicit=[Class1a*]*/
 class Class1a {
   Class1a();
 }
 
-/*spec:nnbd-off.class: Class1b:needsArgs*/
-/*prod:nnbd-off.class: Class1b:needsArgs*/
+/*class: Class1b:needsArgs*/
 class Class1b<T> extends Class1a {
   Class1b();
 }
 
-/*spec:nnbd-off.class: Class1c:needsArgs*/
-/*prod:nnbd-off.class: Class1c:needsArgs*/
+/*class: Class1c:needsArgs*/
 class Class1c<T> extends Class1a {
   Class1c();
 }
 
-/*spec:nnbd-off.class: Class2:*/
-/*prod:nnbd-off.class: Class2:*/
+/*spec:nnbd-off|prod:nnbd-off.class: Class2:*/
 class Class2<T> {
   Class2();
 }
 
-/*spec:nnbd-off.member: test:*/
-/*prod:nnbd-off.member: test:*/
+/*spec:nnbd-off|prod:nnbd-off.member: test:*/
 test(Class1a c, Type type) {
   return c.runtimeType == type;
 }
 
-/*spec:nnbd-off.member: main:*/
-/*prod:nnbd-off.member: main:*/
+/*spec:nnbd-off|prod:nnbd-off.member: main:*/
 main() {
   Expect.isTrue(test(new Class1a(), Class1a));
   Expect.isFalse(test(new Class1b<int>(), Class1a));
diff --git a/tests/compiler/dart2js/rti/data/runtime_type_equals6.dart b/tests/compiler/dart2js/rti/data/runtime_type_equals6.dart
index 2098c62..cdd86d1 100644
--- a/tests/compiler/dart2js/rti/data/runtime_type_equals6.dart
+++ b/tests/compiler/dart2js/rti/data/runtime_type_equals6.dart
@@ -7,37 +7,33 @@
 import 'package:expect/expect.dart';
 
 /*spec:nnbd-off.class: Class1a:explicit=[Class1a],needsArgs*/
-/*prod:nnbd-off.class: Class1a:needsArgs*/
+/*prod:nnbd-off|prod:nnbd-sdk.class: Class1a:needsArgs*/
+/*spec:nnbd-sdk.class: Class1a:explicit=[Class1a*],needsArgs*/
 class Class1a<T> {
   Class1a();
 }
 
-/*spec:nnbd-off.class: Class1b:needsArgs*/
-/*prod:nnbd-off.class: Class1b:needsArgs*/
+/*class: Class1b:needsArgs*/
 class Class1b<T> extends Class1a<T> {
   Class1b();
 }
 
-/*spec:nnbd-off.class: Class1c:needsArgs*/
-/*prod:nnbd-off.class: Class1c:needsArgs*/
+/*class: Class1c:needsArgs*/
 class Class1c<T> extends Class1a<T> {
   Class1c();
 }
 
-/*spec:nnbd-off.class: Class2:*/
-/*prod:nnbd-off.class: Class2:*/
+/*spec:nnbd-off|prod:nnbd-off.class: Class2:*/
 class Class2<T> {
   Class2();
 }
 
-/*spec:nnbd-off.member: test:*/
-/*prod:nnbd-off.member: test:*/
+/*spec:nnbd-off|prod:nnbd-off.member: test:*/
 test(Class1a c, Type type) {
   return c.runtimeType == type;
 }
 
-/*spec:nnbd-off.member: main:*/
-/*prod:nnbd-off.member: main:*/
+/*spec:nnbd-off|prod:nnbd-off.member: main:*/
 main() {
   Expect.isTrue(test(new Class1a(), Class1a));
   Expect.isFalse(test(new Class1b<int>(), Class1a));
diff --git a/tests/compiler/dart2js/rti/data/runtime_type_equals7.dart b/tests/compiler/dart2js/rti/data/runtime_type_equals7.dart
index 9d448cd..d1ba59a 100644
--- a/tests/compiler/dart2js/rti/data/runtime_type_equals7.dart
+++ b/tests/compiler/dart2js/rti/data/runtime_type_equals7.dart
@@ -7,44 +7,40 @@
 import 'package:expect/expect.dart';
 
 /*spec:nnbd-off.class: Class1a:explicit=[Class1a]*/
+/*spec:nnbd-sdk.class: Class1a:explicit=[Class1a*]*/
 class Class1a {
   Class1a();
 }
 
-/*spec:nnbd-off.class: Class1b:needsArgs*/
-/*prod:nnbd-off.class: Class1b:needsArgs*/
+/*class: Class1b:needsArgs*/
 class Class1b<T> extends Class1a {
   Class1b();
 }
 
-/*spec:nnbd-off.class: Class1c:needsArgs*/
-/*prod:nnbd-off.class: Class1c:needsArgs*/
+/*class: Class1c:needsArgs*/
 class Class1c<T> extends Class1a {
   Class1c();
 }
 
-/*spec:nnbd-off.class: Class2:*/
-/*prod:nnbd-off.class: Class2:*/
+/*spec:nnbd-off|prod:nnbd-off.class: Class2:*/
 class Class2<T> {
   Class2();
 }
 
 /*spec:nnbd-off.class: Class3:explicit=[Class3]*/
-/*prod:nnbd-off.class: Class3:*/
+/*spec:nnbd-sdk.class: Class3:explicit=[Class3*]*/
 class Class3<T> {
   final Class1a field;
 
   Class3(this.field);
 }
 
-/*spec:nnbd-off.member: test:*/
-/*prod:nnbd-off.member: test:*/
+/*spec:nnbd-off|prod:nnbd-off.member: test:*/
 test(Class3 c, Type type) {
   return c.field.runtimeType == type;
 }
 
-/*spec:nnbd-off.member: main:*/
-/*prod:nnbd-off.member: main:*/
+/*spec:nnbd-off|prod:nnbd-off.member: main:*/
 main() {
   Expect.isTrue(test(new Class3<int>(new Class1a()), Class1a));
   Expect.isFalse(test(new Class3<int>(new Class1b<int>()), Class1a));
diff --git a/tests/compiler/dart2js/rti/data/runtime_type_instantiate_to_string1.dart b/tests/compiler/dart2js/rti/data/runtime_type_instantiate_to_string1.dart
index a5a2214..b589903 100644
--- a/tests/compiler/dart2js/rti/data/runtime_type_instantiate_to_string1.dart
+++ b/tests/compiler/dart2js/rti/data/runtime_type_instantiate_to_string1.dart
@@ -8,7 +8,8 @@
 
 main() {
   /*spec:nnbd-off.direct,explicit=[id.T],needsArgs,needsInst=[<int>],needsSignature*/
-  T id<T>(T t, String s) => t;
+  /*spec:nnbd-sdk.direct,explicit=[id.T*],needsArgs,needsInst=[<int*>],needsSignature*/ T
+      id<T>(T t, String s) => t;
   int Function(int, String s) x = id;
   print("${x.runtimeType}");
 }
diff --git a/tests/compiler/dart2js/rti/data/runtime_type_instantiate_to_string2.dart b/tests/compiler/dart2js/rti/data/runtime_type_instantiate_to_string2.dart
index d5c35e2..05f9e68 100644
--- a/tests/compiler/dart2js/rti/data/runtime_type_instantiate_to_string2.dart
+++ b/tests/compiler/dart2js/rti/data/runtime_type_instantiate_to_string2.dart
@@ -7,6 +7,7 @@
 /*member: global#instantiate1:needsArgs*/
 
 /*spec:nnbd-off.member: id:direct,explicit=[id.T],needsArgs,needsInst=[<int>]*/
+/*spec:nnbd-sdk.member: id:direct,explicit=[id.T*],needsArgs,needsInst=[<int*>]*/
 T id<T>(T t, String s) => t;
 
 main() {
diff --git a/tests/compiler/dart2js/rti/data/runtime_type_instantiate_to_string3.dart b/tests/compiler/dart2js/rti/data/runtime_type_instantiate_to_string3.dart
index 49733ad..59e63ae 100644
--- a/tests/compiler/dart2js/rti/data/runtime_type_instantiate_to_string3.dart
+++ b/tests/compiler/dart2js/rti/data/runtime_type_instantiate_to_string3.dart
@@ -7,6 +7,7 @@
 /*member: global#instantiate1:needsArgs*/
 
 class Class {
+  /*spec:nnbd-sdk.member: Class.id:direct,explicit=[id.T*],needsArgs,needsInst=[<int*>]*/
   /*spec:nnbd-off.member: Class.id:direct,explicit=[id.T],needsArgs,needsInst=[<int>]*/
   T id<T>(T t, String s) => t;
 }
diff --git a/tests/compiler/dart2js/rti/data/runtime_type_to_string1.dart b/tests/compiler/dart2js/rti/data/runtime_type_to_string1.dart
index a414f91..eecc600 100644
--- a/tests/compiler/dart2js/rti/data/runtime_type_to_string1.dart
+++ b/tests/compiler/dart2js/rti/data/runtime_type_to_string1.dart
@@ -4,32 +4,25 @@
 
 // @dart = 2.7
 
-/*spec:nnbd-off.class: Class1:*/
-/*prod:nnbd-off.class: Class1:*/
+/*spec:nnbd-off|prod:nnbd-off.class: Class1:*/
 class Class1 {
-  /*spec:nnbd-off.member: Class1.:*/
-  /*prod:nnbd-off.member: Class1.:*/
+  /*spec:nnbd-off|prod:nnbd-off.member: Class1.:*/
   Class1();
 }
 
-/*spec:nnbd-off.class: Class2:*/
-/*prod:nnbd-off.class: Class2:*/
+/*spec:nnbd-off|prod:nnbd-off.class: Class2:*/
 class Class2<T> {
-  /*spec:nnbd-off.member: Class2.:*/
-  /*prod:nnbd-off.member: Class2.:*/
+  /*spec:nnbd-off|prod:nnbd-off.member: Class2.:*/
   Class2();
 }
 
-/*spec:nnbd-off.class: Class3:needsArgs*/
-/*prod:nnbd-off.class: Class3:*/
+/*spec:nnbd-off|spec:nnbd-sdk.class: Class3:needsArgs*/
 class Class3<T> implements Class1 {
-  /*spec:nnbd-off.member: Class3.:*/
-  /*prod:nnbd-off.member: Class3.:*/
+  /*spec:nnbd-off|prod:nnbd-off.member: Class3.:*/
   Class3();
 }
 
-/*spec:nnbd-off.member: main:*/
-/*prod:nnbd-off.member: main:*/
+/*spec:nnbd-off|prod:nnbd-off.member: main:*/
 main() {
   Class1 cls1 = new Class1();
   print(cls1.runtimeType.toString());
diff --git a/tests/compiler/dart2js/rti/data/runtime_type_to_string2.dart b/tests/compiler/dart2js/rti/data/runtime_type_to_string2.dart
index 97d71504..bfef9f0 100644
--- a/tests/compiler/dart2js/rti/data/runtime_type_to_string2.dart
+++ b/tests/compiler/dart2js/rti/data/runtime_type_to_string2.dart
@@ -4,24 +4,19 @@
 
 // @dart = 2.7
 
-/*spec:nnbd-off.class: Class1:needsArgs*/
-/*prod:nnbd-off.class: Class1:*/
+/*spec:nnbd-off|spec:nnbd-sdk.class: Class1:needsArgs*/
 class Class1<T> {
-  /*spec:nnbd-off.member: Class1.:*/
-  /*prod:nnbd-off.member: Class1.:*/
+  /*spec:nnbd-off|prod:nnbd-off.member: Class1.:*/
   Class1();
 }
 
-/*spec:nnbd-off.class: Class2:*/
-/*prod:nnbd-off.class: Class2:*/
+/*spec:nnbd-off|prod:nnbd-off.class: Class2:*/
 class Class2<T> {
-  /*spec:nnbd-off.member: Class2.:*/
-  /*prod:nnbd-off.member: Class2.:*/
+  /*spec:nnbd-off|prod:nnbd-off.member: Class2.:*/
   Class2();
 }
 
-/*spec:nnbd-off.member: main:*/
-/*prod:nnbd-off.member: main:*/
+/*spec:nnbd-off|prod:nnbd-off.member: main:*/
 main() {
   Class1<int> cls1 = new Class1<int>();
   print('${cls1.runtimeType}');
diff --git a/tests/compiler/dart2js/rti/data/runtime_type_to_string3.dart b/tests/compiler/dart2js/rti/data/runtime_type_to_string3.dart
index c13a88b..7a79fb4 100644
--- a/tests/compiler/dart2js/rti/data/runtime_type_to_string3.dart
+++ b/tests/compiler/dart2js/rti/data/runtime_type_to_string3.dart
@@ -4,24 +4,19 @@
 
 // @dart = 2.7
 
-/*spec:nnbd-off.class: Class1:needsArgs*/
-/*prod:nnbd-off.class: Class1:*/
+/*spec:nnbd-off|spec:nnbd-sdk.class: Class1:needsArgs*/
 class Class1<T> {
-  /*spec:nnbd-off.member: Class1.:*/
-  /*prod:nnbd-off.member: Class1.:*/
+  /*spec:nnbd-off|prod:nnbd-off.member: Class1.:*/
   Class1();
 }
 
-/*spec:nnbd-off.class: Class2:*/
-/*prod:nnbd-off.class: Class2:*/
+/*spec:nnbd-off|prod:nnbd-off.class: Class2:*/
 class Class2<T> {
-  /*spec:nnbd-off.member: Class2.:*/
-  /*prod:nnbd-off.member: Class2.:*/
+  /*spec:nnbd-off|prod:nnbd-off.member: Class2.:*/
   Class2();
 }
 
-/*spec:nnbd-off.member: main:*/
-/*prod:nnbd-off.member: main:*/
+/*spec:nnbd-off|prod:nnbd-off.member: main:*/
 main() {
   Class1<int> cls1 = new Class1<int>();
   print(cls1.runtimeType?.toString());
diff --git a/tests/compiler/dart2js/rti/data/runtime_type_to_string4.dart b/tests/compiler/dart2js/rti/data/runtime_type_to_string4.dart
index d8418e1..1a3a4f7 100644
--- a/tests/compiler/dart2js/rti/data/runtime_type_to_string4.dart
+++ b/tests/compiler/dart2js/rti/data/runtime_type_to_string4.dart
@@ -4,24 +4,19 @@
 
 // @dart = 2.7
 
-/*spec:nnbd-off.class: Class1:needsArgs*/
-/*prod:nnbd-off.class: Class1:*/
+/*spec:nnbd-off|spec:nnbd-sdk.class: Class1:needsArgs*/
 class Class1<T> {
-  /*spec:nnbd-off.member: Class1.:*/
-  /*prod:nnbd-off.member: Class1.:*/
+  /*spec:nnbd-off|prod:nnbd-off.member: Class1.:*/
   Class1();
 }
 
-/*spec:nnbd-off.class: Class2:*/
-/*prod:nnbd-off.class: Class2:*/
+/*spec:nnbd-off|prod:nnbd-off.class: Class2:*/
 class Class2<T> {
-  /*spec:nnbd-off.member: Class2.:*/
-  /*prod:nnbd-off.member: Class2.:*/
+  /*spec:nnbd-off|prod:nnbd-off.member: Class2.:*/
   Class2();
 }
 
-/*spec:nnbd-off.member: main:*/
-/*prod:nnbd-off.member: main:*/
+/*spec:nnbd-off|prod:nnbd-off.member: main:*/
 main() {
   Class1<int> cls1 = new Class1<int>();
   print(cls1?.runtimeType?.toString());
diff --git a/tests/compiler/dart2js/rti/data/runtime_type_to_string5.dart b/tests/compiler/dart2js/rti/data/runtime_type_to_string5.dart
index 56a3c53..10b7a50 100644
--- a/tests/compiler/dart2js/rti/data/runtime_type_to_string5.dart
+++ b/tests/compiler/dart2js/rti/data/runtime_type_to_string5.dart
@@ -4,24 +4,19 @@
 
 // @dart = 2.7
 
-/*spec:nnbd-off.class: Class1:needsArgs*/
-/*prod:nnbd-off.class: Class1:*/
+/*spec:nnbd-off|spec:nnbd-sdk.class: Class1:needsArgs*/
 class Class1<T> {
-  /*spec:nnbd-off.member: Class1.:*/
-  /*prod:nnbd-off.member: Class1.:*/
+  /*spec:nnbd-off|prod:nnbd-off.member: Class1.:*/
   Class1();
 }
 
-/*spec:nnbd-off.class: Class2:*/
-/*prod:nnbd-off.class: Class2:*/
+/*spec:nnbd-off|prod:nnbd-off.class: Class2:*/
 class Class2<T> {
-  /*spec:nnbd-off.member: Class2.:*/
-  /*prod:nnbd-off.member: Class2.:*/
+  /*spec:nnbd-off|prod:nnbd-off.member: Class2.:*/
   Class2();
 }
 
-/*spec:nnbd-off.member: main:*/
-/*prod:nnbd-off.member: main:*/
+/*spec:nnbd-off|prod:nnbd-off.member: main:*/
 main() {
   Class1<int> cls1 = new Class1<int>();
   print('${cls1?.runtimeType}');
diff --git a/tests/compiler/dart2js/rti/data/runtime_type_to_string6.dart b/tests/compiler/dart2js/rti/data/runtime_type_to_string6.dart
index b9a04c6..0c835f1 100644
--- a/tests/compiler/dart2js/rti/data/runtime_type_to_string6.dart
+++ b/tests/compiler/dart2js/rti/data/runtime_type_to_string6.dart
@@ -4,24 +4,19 @@
 
 // @dart = 2.7
 
-/*spec:nnbd-off.class: Class1:needsArgs*/
-/*prod:nnbd-off.class: Class1:*/
+/*spec:nnbd-off|spec:nnbd-sdk.class: Class1:needsArgs*/
 class Class1<T> {
-  /*spec:nnbd-off.member: Class1.:*/
-  /*prod:nnbd-off.member: Class1.:*/
+  /*spec:nnbd-off|prod:nnbd-off.member: Class1.:*/
   Class1();
 }
 
-/*spec:nnbd-off.class: Class2:needsArgs*/
-/*prod:nnbd-off.class: Class2:*/
+/*spec:nnbd-off|spec:nnbd-sdk.class: Class2:needsArgs*/
 class Class2<T> {
-  /*spec:nnbd-off.member: Class2.:*/
-  /*prod:nnbd-off.member: Class2.:*/
+  /*spec:nnbd-off|prod:nnbd-off.member: Class2.:*/
   Class2();
 }
 
-/*spec:nnbd-off.member: main:*/
-/*prod:nnbd-off.member: main:*/
+/*spec:nnbd-off|prod:nnbd-off.member: main:*/
 main() {
   dynamic cls1 = new Class1<int>();
   print('${cls1.runtimeType}');
diff --git a/tests/compiler/dart2js/rti/data/runtime_type_to_string7.dart b/tests/compiler/dart2js/rti/data/runtime_type_to_string7.dart
index a414f91..eecc600 100644
--- a/tests/compiler/dart2js/rti/data/runtime_type_to_string7.dart
+++ b/tests/compiler/dart2js/rti/data/runtime_type_to_string7.dart
@@ -4,32 +4,25 @@
 
 // @dart = 2.7
 
-/*spec:nnbd-off.class: Class1:*/
-/*prod:nnbd-off.class: Class1:*/
+/*spec:nnbd-off|prod:nnbd-off.class: Class1:*/
 class Class1 {
-  /*spec:nnbd-off.member: Class1.:*/
-  /*prod:nnbd-off.member: Class1.:*/
+  /*spec:nnbd-off|prod:nnbd-off.member: Class1.:*/
   Class1();
 }
 
-/*spec:nnbd-off.class: Class2:*/
-/*prod:nnbd-off.class: Class2:*/
+/*spec:nnbd-off|prod:nnbd-off.class: Class2:*/
 class Class2<T> {
-  /*spec:nnbd-off.member: Class2.:*/
-  /*prod:nnbd-off.member: Class2.:*/
+  /*spec:nnbd-off|prod:nnbd-off.member: Class2.:*/
   Class2();
 }
 
-/*spec:nnbd-off.class: Class3:needsArgs*/
-/*prod:nnbd-off.class: Class3:*/
+/*spec:nnbd-off|spec:nnbd-sdk.class: Class3:needsArgs*/
 class Class3<T> implements Class1 {
-  /*spec:nnbd-off.member: Class3.:*/
-  /*prod:nnbd-off.member: Class3.:*/
+  /*spec:nnbd-off|prod:nnbd-off.member: Class3.:*/
   Class3();
 }
 
-/*spec:nnbd-off.member: main:*/
-/*prod:nnbd-off.member: main:*/
+/*spec:nnbd-off|prod:nnbd-off.member: main:*/
 main() {
   Class1 cls1 = new Class1();
   print(cls1.runtimeType.toString());
diff --git a/tests/compiler/dart2js/rti/data/subclass.dart b/tests/compiler/dart2js/rti/data/subclass.dart
index d6b8a6e..652cbb2 100644
--- a/tests/compiler/dart2js/rti/data/subclass.dart
+++ b/tests/compiler/dart2js/rti/data/subclass.dart
@@ -4,7 +4,8 @@
 
 // @dart = 2.7
 
-/*class: A:explicit=[A<int>],needsArgs*/
+/*spec:nnbd-off|prod:nnbd-off.class: A:explicit=[A<int>],needsArgs*/
+/*spec:nnbd-sdk|prod:nnbd-sdk.class: A:explicit=[A<int*>*],needsArgs*/
 class A<T> {}
 
 /*class: B:needsArgs*/
diff --git a/tests/compiler/dart2js/rti/data/subclass_fixed.dart b/tests/compiler/dart2js/rti/data/subclass_fixed.dart
index df179af..05e5c4d 100644
--- a/tests/compiler/dart2js/rti/data/subclass_fixed.dart
+++ b/tests/compiler/dart2js/rti/data/subclass_fixed.dart
@@ -4,7 +4,8 @@
 
 // @dart = 2.7
 
-/*class: A:explicit=[A<int>],needsArgs*/
+/*spec:nnbd-off|prod:nnbd-off.class: A:explicit=[A<int>],needsArgs*/
+/*spec:nnbd-sdk|prod:nnbd-sdk.class: A:explicit=[A<int*>*],needsArgs*/
 class A<T> {}
 
 class B extends A<int> {}
diff --git a/tests/compiler/dart2js/rti/data/subtype_named_args.dart b/tests/compiler/dart2js/rti/data/subtype_named_args.dart
index bd72027..06a5436 100644
--- a/tests/compiler/dart2js/rti/data/subtype_named_args.dart
+++ b/tests/compiler/dart2js/rti/data/subtype_named_args.dart
@@ -26,12 +26,16 @@
   dynamic Function({f1:dynamic Function({a:A,b:B,c:C,d:D}),f2:dynamic Function({g:G<A,B,C,D>,l:List<List<B>>,m:Map<num,int>}),f3:dynamic Function({v:dynamic,x:dynamic,y:dynamic,z:dynamic})}),
   dynamic Function({g:G<A,B,C,D>,l:List<List<B>>,m:Map<num,int>})]
 */
+/*spec:nnbd-sdk.class: A:explicit=[A*,G<A*,A1*,A1*,A1*>*,dynamic Function({a:A*,b:A1*,c:A1*,d:A1*})*,dynamic Function({a:A*,b:B*,c:C*,d:D*})*,dynamic Function({b:B*,f:dynamic Function({f1:dynamic Function({a:A*,b:B*,c:C*,d:D*})*,f2:dynamic Function({g:G<A*,B*,C*,D*>*,l:List<List<B*>*>*,m:Map<num*,int*>*})*,f3:dynamic Function({v:dynamic,x:dynamic,y:dynamic,z:dynamic})*})*,g:G<A*,B*,C*,D*>*,x:dynamic})*,dynamic Function({f1:dynamic Function({a:A*,b:B*,c:C*,d:D*})*,f2:dynamic Function({g:G<A*,B*,C*,D*>*,l:List<List<B*>*>*,m:Map<num*,int*>*})*,f3:dynamic Function({v:dynamic,x:dynamic,y:dynamic,z:dynamic})*})*,dynamic Function({g:G<A*,A1*,A1*,A1*>*,l:List<List<A1*>*>*,m:Map<num*,num*>*})*,dynamic Function({g:G<A*,B*,C*,D*>*,l:List<List<B*>*>*,m:Map<num*,int*>*})*,dynamic Function({v:dynamic Function({a:A*,b:B*,c:C*,d:D*})*,x:int*,y:bool*,z:List<Map*>*})*,dynamic Function({v:dynamic,x:A*,y:G*,z:dynamic Function({b:B*,f:dynamic Function({f1:dynamic Function({a:A*,b:B*,c:C*,d:D*})*,f2:dynamic Function({g:G<A*,B*,C*,D*>*,l:List<List<B*>*>*,m:Map<num*,int*>*})*,f3:dynamic Function({v:dynamic,x:dynamic,y:dynamic,z:dynamic})*})*,g:G<A*,B*,C*,D*>*,x:dynamic})*})*]*/
+/*prod:nnbd-sdk.class: A:explicit=[dynamic Function({a:A*,b:B*,c:C*,d:D*})*,dynamic Function({f1:dynamic Function({a:A*,b:B*,c:C*,d:D*})*,f2:dynamic Function({g:G<A*,B*,C*,D*>*,l:List<List<B*>*>*,m:Map<num*,int*>*})*,f3:dynamic Function({v:dynamic,x:dynamic,y:dynamic,z:dynamic})*})*,dynamic Function({g:G<A*,B*,C*,D*>*,l:List<List<B*>*>*,m:Map<num*,int*>*})*]*/
 class A {}
 
 /*spec:nnbd-off.class: A1:explicit=[A1,G<A,A1,A1,A1>,List<List<A1>>,dynamic Function({a:A,b:A1,c:A1,d:A1}),dynamic Function({g:G<A,A1,A1,A1>,l:List<List<A1>>,m:Map<num,num>})]*/
+/*spec:nnbd-sdk.class: A1:explicit=[A1*,G<A*,A1*,A1*,A1*>*,List<List<A1*>*>*,dynamic Function({a:A*,b:A1*,c:A1*,d:A1*})*,dynamic Function({g:G<A*,A1*,A1*,A1*>*,l:List<List<A1*>*>*,m:Map<num*,num*>*})*]*/
 class A1 {}
 
 /*spec:nnbd-off.class: A2:explicit=[A2]*/
+/*spec:nnbd-sdk.class: A2:explicit=[A2*]*/
 class A2 {}
 
 /*spec:nnbd-off.class: B:
@@ -50,6 +54,8 @@
   dynamic Function({f1:dynamic Function({a:A,b:B,c:C,d:D}),f2:dynamic Function({g:G<A,B,C,D>,l:List<List<B>>,m:Map<num,int>}),f3:dynamic Function({v:dynamic,x:dynamic,y:dynamic,z:dynamic})}),
   dynamic Function({g:G<A,B,C,D>,l:List<List<B>>,m:Map<num,int>})]
 */
+/*spec:nnbd-sdk.class: B:explicit=[B*,dynamic Function({a:A*,b:B*,c:C*,d:D*})*,dynamic Function({b:B*,f:dynamic Function({f1:dynamic Function({a:A*,b:B*,c:C*,d:D*})*,f2:dynamic Function({g:G<A*,B*,C*,D*>*,l:List<List<B*>*>*,m:Map<num*,int*>*})*,f3:dynamic Function({v:dynamic,x:dynamic,y:dynamic,z:dynamic})*})*,g:G<A*,B*,C*,D*>*,x:dynamic})*,dynamic Function({f1:dynamic Function({a:A*,b:B*,c:C*,d:D*})*,f2:dynamic Function({g:G<A*,B*,C*,D*>*,l:List<List<B*>*>*,m:Map<num*,int*>*})*,f3:dynamic Function({v:dynamic,x:dynamic,y:dynamic,z:dynamic})*})*,dynamic Function({g:G<A*,B*,C*,D*>*,l:List<List<B*>*>*,m:Map<num*,int*>*})*,dynamic Function({v:dynamic Function({a:A*,b:B*,c:C*,d:D*})*,x:int*,y:bool*,z:List<Map*>*})*,dynamic Function({v:dynamic,x:A*,y:G*,z:dynamic Function({b:B*,f:dynamic Function({f1:dynamic Function({a:A*,b:B*,c:C*,d:D*})*,f2:dynamic Function({g:G<A*,B*,C*,D*>*,l:List<List<B*>*>*,m:Map<num*,int*>*})*,f3:dynamic Function({v:dynamic,x:dynamic,y:dynamic,z:dynamic})*})*,g:G<A*,B*,C*,D*>*,x:dynamic})*})*]*/
+/*prod:nnbd-sdk.class: B:explicit=[dynamic Function({a:A*,b:B*,c:C*,d:D*})*,dynamic Function({f1:dynamic Function({a:A*,b:B*,c:C*,d:D*})*,f2:dynamic Function({g:G<A*,B*,C*,D*>*,l:List<List<B*>*>*,m:Map<num*,int*>*})*,f3:dynamic Function({v:dynamic,x:dynamic,y:dynamic,z:dynamic})*})*,dynamic Function({g:G<A*,B*,C*,D*>*,l:List<List<B*>*>*,m:Map<num*,int*>*})*]*/
 class B implements A, A1, A2 {}
 
 /*spec:nnbd-off.class: C:
@@ -67,6 +73,8 @@
   dynamic Function({f1:dynamic Function({a:A,b:B,c:C,d:D}),f2:dynamic Function({g:G<A,B,C,D>,l:List<List<B>>,m:Map<num,int>}),f3:dynamic Function({v:dynamic,x:dynamic,y:dynamic,z:dynamic})}),
   dynamic Function({g:G<A,B,C,D>,l:List<List<B>>,m:Map<num,int>})]
 */
+/*spec:nnbd-sdk.class: C:explicit=[C*,dynamic Function({a:A*,b:B*,c:C*,d:D*})*,dynamic Function({b:B*,f:dynamic Function({f1:dynamic Function({a:A*,b:B*,c:C*,d:D*})*,f2:dynamic Function({g:G<A*,B*,C*,D*>*,l:List<List<B*>*>*,m:Map<num*,int*>*})*,f3:dynamic Function({v:dynamic,x:dynamic,y:dynamic,z:dynamic})*})*,g:G<A*,B*,C*,D*>*,x:dynamic})*,dynamic Function({f1:dynamic Function({a:A*,b:B*,c:C*,d:D*})*,f2:dynamic Function({g:G<A*,B*,C*,D*>*,l:List<List<B*>*>*,m:Map<num*,int*>*})*,f3:dynamic Function({v:dynamic,x:dynamic,y:dynamic,z:dynamic})*})*,dynamic Function({g:G<A*,B*,C*,D*>*,l:List<List<B*>*>*,m:Map<num*,int*>*})*,dynamic Function({v:dynamic Function({a:A*,b:B*,c:C*,d:D*})*,x:int*,y:bool*,z:List<Map*>*})*,dynamic Function({v:dynamic,x:A*,y:G*,z:dynamic Function({b:B*,f:dynamic Function({f1:dynamic Function({a:A*,b:B*,c:C*,d:D*})*,f2:dynamic Function({g:G<A*,B*,C*,D*>*,l:List<List<B*>*>*,m:Map<num*,int*>*})*,f3:dynamic Function({v:dynamic,x:dynamic,y:dynamic,z:dynamic})*})*,g:G<A*,B*,C*,D*>*,x:dynamic})*})*]*/
+/*prod:nnbd-sdk.class: C:explicit=[dynamic Function({a:A*,b:B*,c:C*,d:D*})*,dynamic Function({f1:dynamic Function({a:A*,b:B*,c:C*,d:D*})*,f2:dynamic Function({g:G<A*,B*,C*,D*>*,l:List<List<B*>*>*,m:Map<num*,int*>*})*,f3:dynamic Function({v:dynamic,x:dynamic,y:dynamic,z:dynamic})*})*,dynamic Function({g:G<A*,B*,C*,D*>*,l:List<List<B*>*>*,m:Map<num*,int*>*})*]*/
 class C implements B {}
 
 /*spec:nnbd-off.class: D:
@@ -84,6 +92,8 @@
   dynamic Function({f1:dynamic Function({a:A,b:B,c:C,d:D}),f2:dynamic Function({g:G<A,B,C,D>,l:List<List<B>>,m:Map<num,int>}),f3:dynamic Function({v:dynamic,x:dynamic,y:dynamic,z:dynamic})}),
   dynamic Function({g:G<A,B,C,D>,l:List<List<B>>,m:Map<num,int>})]
 */
+/*spec:nnbd-sdk.class: D:explicit=[D*,G<D*,D*,D*,D*>*,List<List<D*>*>*,dynamic Function({a:A*,b:B*,c:C*,d:D*})*,dynamic Function({a:D*,b:D*,c:D*,d:D*})*,dynamic Function({b:B*,f:dynamic Function({f1:dynamic Function({a:A*,b:B*,c:C*,d:D*})*,f2:dynamic Function({g:G<A*,B*,C*,D*>*,l:List<List<B*>*>*,m:Map<num*,int*>*})*,f3:dynamic Function({v:dynamic,x:dynamic,y:dynamic,z:dynamic})*})*,g:G<A*,B*,C*,D*>*,x:dynamic})*,dynamic Function({f1:dynamic Function({a:A*,b:B*,c:C*,d:D*})*,f2:dynamic Function({g:G<A*,B*,C*,D*>*,l:List<List<B*>*>*,m:Map<num*,int*>*})*,f3:dynamic Function({v:dynamic,x:dynamic,y:dynamic,z:dynamic})*})*,dynamic Function({g:G<A*,B*,C*,D*>*,l:List<List<B*>*>*,m:Map<num*,int*>*})*,dynamic Function({g:G<D*,D*,D*,D*>*,l:List<List<D*>*>*,m:Map<int*,int*>*})*,dynamic Function({v:dynamic Function({a:A*,b:B*,c:C*,d:D*})*,x:int*,y:bool*,z:List<Map*>*})*,dynamic Function({v:dynamic,x:A*,y:G*,z:dynamic Function({b:B*,f:dynamic Function({f1:dynamic Function({a:A*,b:B*,c:C*,d:D*})*,f2:dynamic Function({g:G<A*,B*,C*,D*>*,l:List<List<B*>*>*,m:Map<num*,int*>*})*,f3:dynamic Function({v:dynamic,x:dynamic,y:dynamic,z:dynamic})*})*,g:G<A*,B*,C*,D*>*,x:dynamic})*})*]*/
+/*prod:nnbd-sdk.class: D:explicit=[dynamic Function({a:A*,b:B*,c:C*,d:D*})*,dynamic Function({f1:dynamic Function({a:A*,b:B*,c:C*,d:D*})*,f2:dynamic Function({g:G<A*,B*,C*,D*>*,l:List<List<B*>*>*,m:Map<num*,int*>*})*,f3:dynamic Function({v:dynamic,x:dynamic,y:dynamic,z:dynamic})*})*,dynamic Function({g:G<A*,B*,C*,D*>*,l:List<List<B*>*>*,m:Map<num*,int*>*})*]*/
 class D implements C {}
 
 /*spec:nnbd-off.class: G:
@@ -102,6 +112,8 @@
   dynamic Function({f1:dynamic Function({a:A,b:B,c:C,d:D}),f2:dynamic Function({g:G<A,B,C,D>,l:List<List<B>>,m:Map<num,int>}),f3:dynamic Function({v:dynamic,x:dynamic,y:dynamic,z:dynamic})}),
   dynamic Function({g:G<A,B,C,D>,l:List<List<B>>,m:Map<num,int>})]
 */
+/*spec:nnbd-sdk.class: G:explicit=[G*,G<A*,A1*,A1*,A1*>*,G<D*,D*,D*,D*>*,dynamic Function({b:B*,f:dynamic Function({f1:dynamic Function({a:A*,b:B*,c:C*,d:D*})*,f2:dynamic Function({g:G<A*,B*,C*,D*>*,l:List<List<B*>*>*,m:Map<num*,int*>*})*,f3:dynamic Function({v:dynamic,x:dynamic,y:dynamic,z:dynamic})*})*,g:G<A*,B*,C*,D*>*,x:dynamic})*,dynamic Function({f1:dynamic Function({a:A*,b:B*,c:C*,d:D*})*,f2:dynamic Function({g:G<A*,B*,C*,D*>*,l:List<List<B*>*>*,m:Map<num*,int*>*})*,f3:dynamic Function({v:dynamic,x:dynamic,y:dynamic,z:dynamic})*})*,dynamic Function({g:G<A*,A1*,A1*,A1*>*,l:List<List<A1*>*>*,m:Map<num*,num*>*})*,dynamic Function({g:G<A*,B*,C*,D*>*,l:List<List<B*>*>*,m:Map<num*,int*>*})*,dynamic Function({g:G<D*,D*,D*,D*>*,l:List<List<D*>*>*,m:Map<int*,int*>*})*,dynamic Function({v:dynamic,x:A*,y:G*,z:dynamic Function({b:B*,f:dynamic Function({f1:dynamic Function({a:A*,b:B*,c:C*,d:D*})*,f2:dynamic Function({g:G<A*,B*,C*,D*>*,l:List<List<B*>*>*,m:Map<num*,int*>*})*,f3:dynamic Function({v:dynamic,x:dynamic,y:dynamic,z:dynamic})*})*,g:G<A*,B*,C*,D*>*,x:dynamic})*})*],needsArgs*/
+/*prod:nnbd-sdk.class: G:explicit=[dynamic Function({f1:dynamic Function({a:A*,b:B*,c:C*,d:D*})*,f2:dynamic Function({g:G<A*,B*,C*,D*>*,l:List<List<B*>*>*,m:Map<num*,int*>*})*,f3:dynamic Function({v:dynamic,x:dynamic,y:dynamic,z:dynamic})*})*,dynamic Function({g:G<A*,B*,C*,D*>*,l:List<List<B*>*>*,m:Map<num*,int*>*})*]*/
 class G<T, S, U, W> {}
 
 typedef classesFunc({A a, B b, C c, D d});
@@ -123,19 +135,19 @@
 
 main() {
   Expect.isTrue(
-      /*spec:nnbd-off.needsSignature*/
+      /*spec:nnbd-off|spec:nnbd-sdk.needsSignature*/
       ({D a, B b, C c, A d}) {} is classesFunc);
   Expect.isTrue(
       /*needsSignature*/
       ({A a, A b, A c, A d}) {} is classesFunc);
   Expect.isTrue(
-      /*spec:nnbd-off.needsSignature*/
+      /*spec:nnbd-off|spec:nnbd-sdk.needsSignature*/
       ({D a, A1 b, A1 c, A1 d}) {} is classesFunc);
   Expect.isTrue(
-      /*spec:nnbd-off.needsSignature*/
+      /*spec:nnbd-off|spec:nnbd-sdk.needsSignature*/
       ({D a, A2 b, A2 c, A2 d}) {} is classesFunc);
   Expect.isTrue(
-      /*spec:nnbd-off.needsSignature*/
+      /*spec:nnbd-off|spec:nnbd-sdk.needsSignature*/
       ({D a, D b, D c, D d}) {} is classesFunc);
   Expect.isTrue(
       /*needsSignature*/
@@ -149,7 +161,7 @@
       ({Map<num, num> m, List<List<A1>> l, G<A, A1, A1, A1> g}) {}
           is genericsFunc);
   Expect.isTrue(
-      /*spec:nnbd-off.needsSignature*/
+      /*spec:nnbd-off|spec:nnbd-sdk.needsSignature*/
       ({Map<int, int> m, List<List<D>> l, G<D, D, D, D> g}) {} is genericsFunc);
   Expect.isTrue(
       /*needsSignature*/
@@ -159,10 +171,10 @@
       ({Object m, Object l, Object g}) {} is genericsFunc);
 
   Expect.isTrue(
-      /*spec:nnbd-off.needsSignature*/
+      /*spec:nnbd-off|spec:nnbd-sdk.needsSignature*/
       ({A x, G y, mixFunc z, var v}) {} is dynamicFunc);
   Expect.isTrue(
-      /*spec:nnbd-off.needsSignature*/
+      /*spec:nnbd-off|spec:nnbd-sdk.needsSignature*/
       ({int x, bool y, List<Map> z, classesFunc v}) {} is dynamicFunc);
 
   Expect.isTrue((
diff --git a/tests/compiler/dart2js/rti/data/subtype_named_args1.dart b/tests/compiler/dart2js/rti/data/subtype_named_args1.dart
index 08e4684..2918d43 100644
--- a/tests/compiler/dart2js/rti/data/subtype_named_args1.dart
+++ b/tests/compiler/dart2js/rti/data/subtype_named_args1.dart
@@ -9,17 +9,23 @@
 import "package:expect/expect.dart";
 
 /*spec:nnbd-off.class: A:explicit=[A,dynamic Function({a:A})]*/
+/*spec:nnbd-sdk.class: A:explicit=[A*,dynamic Function({a:A*})*]*/
 class A {}
 
 /*spec:nnbd-off.class: B:explicit=[B,dynamic Function({a:B}),dynamic Function({f:dynamic Function({a:B})})]*/
 /*prod:nnbd-off.class: B:explicit=[dynamic Function({a:B}),dynamic Function({f:dynamic Function({a:B})})]*/
+/*spec:nnbd-sdk.class: B:explicit=[B*,dynamic Function({a:B*})*,dynamic Function({f:dynamic Function({a:B*})*})*]*/
+/*prod:nnbd-sdk.class: B:explicit=[dynamic Function({a:B*})*,dynamic Function({f:dynamic Function({a:B*})*})*]*/
 class B implements A {}
 
 /*spec:nnbd-off.class: C:explicit=[C,dynamic Function({a:C}),dynamic Function({c:C})]*/
 /*prod:nnbd-off.class: C:explicit=[dynamic Function({c:C})]*/
+/*spec:nnbd-sdk.class: C:explicit=[C*,dynamic Function({a:C*})*,dynamic Function({c:C*})*]*/
+/*prod:nnbd-sdk.class: C:explicit=[dynamic Function({c:C*})*]*/
 class C implements B {}
 
 /*spec:nnbd-off.class: D:explicit=[D,dynamic Function({a:D})]*/
+/*spec:nnbd-sdk.class: D:explicit=[D*,dynamic Function({a:D*})*]*/
 class D implements C {}
 
 typedef t1({B a});
@@ -39,8 +45,10 @@
 main() {
   Expect.isTrue(/*needsSignature*/ ({A a}) {} is t1);
   Expect.isTrue(/*needsSignature*/ ({B a}) {} is t1);
-  Expect.isTrue(/*spec:nnbd-off.needsSignature*/ ({C a}) {} is t1);
-  Expect.isTrue(/*spec:nnbd-off.needsSignature*/ ({D a}) {} is t1);
+  Expect.isTrue(
+      /*spec:nnbd-off|spec:nnbd-sdk.needsSignature*/ ({C a}) {} is t1);
+  Expect.isTrue(
+      /*spec:nnbd-off|spec:nnbd-sdk.needsSignature*/ ({D a}) {} is t1);
   Expect.isTrue(/*needsSignature*/ ({Object a}) {} is t1);
   Expect.isTrue(/*needsSignature*/ ({var a}) {} is t1);
 
@@ -90,8 +98,10 @@
 
   Expect.isTrue(/*needsSignature*/ ({A a}) {} is t8);
   Expect.isTrue(/*needsSignature*/ ({B a}) {} is t8);
-  Expect.isTrue(/*spec:nnbd-off.needsSignature*/ ({C a}) {} is t8);
-  Expect.isTrue(/*spec:nnbd-off.needsSignature*/ ({D a}) {} is t8);
+  Expect.isTrue(
+      /*spec:nnbd-off|spec:nnbd-sdk.needsSignature*/ ({C a}) {} is t8);
+  Expect.isTrue(
+      /*spec:nnbd-off|spec:nnbd-sdk.needsSignature*/ ({D a}) {} is t8);
   Expect.isTrue(/*needsSignature*/ ({Object a}) {} is t8);
   Expect.isTrue(/*needsSignature*/ ({var a}) {} is t8);
   Expect.isTrue(({num a}) {} is t8);
diff --git a/tests/compiler/dart2js/rti/data/superclass.dart b/tests/compiler/dart2js/rti/data/superclass.dart
index 9dfda6e..442de00 100644
--- a/tests/compiler/dart2js/rti/data/superclass.dart
+++ b/tests/compiler/dart2js/rti/data/superclass.dart
@@ -6,7 +6,8 @@
 
 class A<T> {}
 
-/*class: B:explicit=[B<int>],needsArgs*/
+/*spec:nnbd-off|prod:nnbd-off.class: B:explicit=[B<int>],needsArgs*/
+/*spec:nnbd-sdk|prod:nnbd-sdk.class: B:explicit=[B<int*>*],needsArgs*/
 class B<T> extends A<T> {}
 
 main() {
diff --git a/tests/compiler/dart2js/rti/data/tear_off_generic.dart b/tests/compiler/dart2js/rti/data/tear_off_generic.dart
index 727f8be..f0d3442 100644
--- a/tests/compiler/dart2js/rti/data/tear_off_generic.dart
+++ b/tests/compiler/dart2js/rti/data/tear_off_generic.dart
@@ -5,10 +5,9 @@
 // @dart = 2.7
 
 /*spec:nnbd-off.class: A:direct,explicit=[A.T],needsArgs*/
-/*prod:nnbd-off.class: A:*/
+/*spec:nnbd-sdk.class: A:direct,explicit=[A.T*],needsArgs*/
 class A<T> {
-  /*spec:nnbd-off.member: A.m:*/
-  /*prod:nnbd-off.member: A.m:*/
+  /*spec:nnbd-off|prod:nnbd-off.member: A.m:*/
   void m(T t) {}
 
   /*member: A.f:*/
diff --git a/tests/compiler/dart2js/rti/data/type_argument_substitution.dart b/tests/compiler/dart2js/rti/data/type_argument_substitution.dart
index 869bbdf..32ca1a1 100644
--- a/tests/compiler/dart2js/rti/data/type_argument_substitution.dart
+++ b/tests/compiler/dart2js/rti/data/type_argument_substitution.dart
@@ -11,12 +11,14 @@
 
 class K {}
 
-/*class: A:explicit=[X<A<String>>]*/
+/*spec:nnbd-off|prod:nnbd-off.class: A:explicit=[X<A<String>>]*/
+/*spec:nnbd-sdk|prod:nnbd-sdk.class: A:explicit=[X<A<String*>*>*]*/
 class A<T> {}
 
 class B extends A<K> {}
 
-/*class: X:explicit=[X<A<String>>],needsArgs*/
+/*spec:nnbd-off|prod:nnbd-off.class: X:explicit=[X<A<String>>],needsArgs*/
+/*spec:nnbd-sdk|prod:nnbd-sdk.class: X:explicit=[X<A<String*>*>*],needsArgs*/
 class X<T> {}
 
 main() {
diff --git a/tests/compiler/dart2js/rti/data/type_variable_function_type.dart b/tests/compiler/dart2js/rti/data/type_variable_function_type.dart
index e40a848..c0ddfad 100644
--- a/tests/compiler/dart2js/rti/data/type_variable_function_type.dart
+++ b/tests/compiler/dart2js/rti/data/type_variable_function_type.dart
@@ -10,7 +10,8 @@
 
 typedef T Func<T>();
 
-/*class: Foo:direct,explicit=[Foo.S Function()],needsArgs*/
+/*spec:nnbd-off|prod:nnbd-off.class: Foo:direct,explicit=[Foo.S Function()],needsArgs*/
+/*spec:nnbd-sdk|prod:nnbd-sdk.class: Foo:direct,explicit=[Foo.S* Function()*],needsArgs*/
 class Foo<S> {
   m(x) => x is Func<S>;
 }
diff --git a/tests/compiler/dart2js/sourcemaps/stepping_test.dart b/tests/compiler/dart2js/sourcemaps/stepping_test.dart
index f5911da..763c1bd 100644
--- a/tests/compiler/dart2js/sourcemaps/stepping_test.dart
+++ b/tests/compiler/dart2js/sourcemaps/stepping_test.dart
@@ -67,8 +67,9 @@
     bool verbose: false,
     List<String> options: const <String>[]}) async {
   Directory dir = Directory.systemTemp.createTempSync('stepping_test');
+  String testFileName = 'test.dart';
   String path = dir.path;
-  String inputFile = '$path/test.dart';
+  String inputFile = '$path/$testFileName';
   new File(inputFile).writeAsStringSync(annotatedCode.sourceCode);
   String outputFile = '$path/js.js';
   List<String> arguments = <String>[
@@ -82,7 +83,8 @@
     '$sdkPath/_internal/js_runtime/lib/preambles/d8.js',
     outputFile
   ];
-  ProcessResult result = runD8AndStep(dir.path, annotatedCode, scriptD8Command);
+  ProcessResult result =
+      runD8AndStep(dir.path, testFileName, annotatedCode, scriptD8Command);
   List<String> d8output = result.stdout.split("\n");
   if (verbose) {
     d8output.forEach(print);
diff --git a/tests/compiler/dart2js_extra/regress/41781_test.dart b/tests/compiler/dart2js_extra/regress/41781_test.dart
new file mode 100644
index 0000000..f4f6ac8
--- /dev/null
+++ b/tests/compiler/dart2js_extra/regress/41781_test.dart
@@ -0,0 +1,18 @@
+// Copyright (c) 2020, the Dart project authors.  Please see the AUTHORS file
+// 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.
+
+@pragma('dart2js:noInline')
+test(List a, List b) {
+  return [
+    throw 123,
+    {...a, ...b}
+  ];
+}
+
+void main() {
+  try {
+    print(test([1], [2, 3]));
+    print(test([1, 2], [3]));
+  } catch (e) {}
+}
diff --git a/tests/corelib/bigint_test.dart b/tests/corelib/bigint_test.dart
index ccabdb8..93b6c16 100644
--- a/tests/corelib/bigint_test.dart
+++ b/tests/corelib/bigint_test.dart
@@ -1039,6 +1039,13 @@
 
   Expect.equals(BigInt.zero, new BigInt.from(0.9999999999999999));
   Expect.equals(BigInt.zero, new BigInt.from(-0.9999999999999999));
+
+  // Regression test for http://dartbug.com/41819
+  // Rounding edge case where last digit causes rounding.
+  Expect.equals(-3.69616463331328e+27,
+      BigInt.parse("-3696164633313280000000000000").toDouble());
+  Expect.equals(-3.6961646333132803e+27,
+      BigInt.parse("-3696164633313280000000000001").toDouble());
 }
 
 main() {
diff --git a/tests/corelib/error_stack_trace1_test.dart b/tests/corelib/error_stack_trace1_test.dart
index 17adde7..ee73fe6 100644
--- a/tests/corelib/error_stack_trace1_test.dart
+++ b/tests/corelib/error_stack_trace1_test.dart
@@ -18,7 +18,7 @@
       A.Aa();
     } catch (e) {
       // This should produce a NoSuchMethodError.
-      var trace = e.stackTrace;
+      var trace = (e as dynamic).stackTrace;
     }
   }
 }
diff --git a/tests/corelib/error_stack_trace_test.dart b/tests/corelib/error_stack_trace_test.dart
index 347f26f..f7491a2 100644
--- a/tests/corelib/error_stack_trace_test.dart
+++ b/tests/corelib/error_stack_trace_test.dart
@@ -58,7 +58,7 @@
     bool hasThrown = false;
     try {
       f();
-    } catch (e) {
+    } on Error catch (e) {
       hasThrown = true;
       Expect.isTrue(
           e.stackTrace is StackTrace, "$e doesn't have a non-null stack trace");
diff --git a/tests/corelib/list_test.dart b/tests/corelib/list_test.dart
index a607a5a..a6b746a 100644
--- a/tests/corelib/list_test.dart
+++ b/tests/corelib/list_test.dart
@@ -54,7 +54,7 @@
   testIndexError(list, index, name) {
     try {
       list[list.length];
-    } catch (err, s) {
+    } on RangeError catch (err, s) {
       Expect.isTrue(err is RangeError, "$name[$index]");
       Expect.equals(list.length, err.invalidValue, "$name[$index] value");
       Expect.equals(list.length - 1, err.end, "$name[$index] end");
@@ -81,7 +81,7 @@
     var result;
     try {
       result = list.sublist(start, end);
-    } catch (actualError) {
+    } on RangeError catch (actualError) {
       Expect.isNotNull(realError, "$name should not fail");
       Expect.isTrue(actualError is RangeError, "$name is-error: $actualError");
       Expect.equals(realError.name, actualError.name, "$name name");
diff --git a/tests/corelib_2/bigint_test.dart b/tests/corelib_2/bigint_test.dart
index bffa4c9..37e2836 100644
--- a/tests/corelib_2/bigint_test.dart
+++ b/tests/corelib_2/bigint_test.dart
@@ -1039,6 +1039,13 @@
 
   Expect.equals(BigInt.zero, new BigInt.from(0.9999999999999999));
   Expect.equals(BigInt.zero, new BigInt.from(-0.9999999999999999));
+
+  // Regression test for http://dartbug.com/41819
+  // Rounding edge case where last digit causes rounding.
+  Expect.equals(-3.69616463331328e+27,
+      BigInt.parse("-3696164633313280000000000000").toDouble());
+  Expect.equals(-3.6961646333132803e+27,
+      BigInt.parse("-3696164633313280000000000001").toDouble());
 }
 
 main() {
diff --git a/tests/corelib_2/list_test.dart b/tests/corelib_2/list_test.dart
index 42e2ae2..8192773 100644
--- a/tests/corelib_2/list_test.dart
+++ b/tests/corelib_2/list_test.dart
@@ -56,7 +56,7 @@
   testIndexError(list, index, name) {
     try {
       list[list.length];
-    } catch (err, s) {
+    } on RangeError catch (err, s) {
       Expect.isTrue(err is RangeError, "$name[$index]");
       Expect.equals(list.length, err.invalidValue, "$name[$index] value");
       Expect.equals(list.length - 1, err.end, "$name[$index] end");
@@ -83,7 +83,7 @@
     var result;
     try {
       result = list.sublist(start, end);
-    } catch (actualError) {
+    } on RangeError catch (actualError) {
       Expect.isNotNull(realError, "$name should not fail");
       Expect.isTrue(actualError is RangeError, "$name is-error: $actualError");
       Expect.equals(realError.name, actualError.name, "$name name");
diff --git a/tests/language/async/finally_rethrow_test.dart b/tests/language/async/finally_rethrow_test.dart
index 50b1cb3..f8a8257 100644
--- a/tests/language/async/finally_rethrow_test.dart
+++ b/tests/language/async/finally_rethrow_test.dart
@@ -18,7 +18,7 @@
 }
 
 main() async {
-  var error = "no error";
+  Object error = "no error";
   try {
     await foo();
   } catch (e) {
diff --git a/tests/language/async/return_types_test.dart b/tests/language/async/return_types_test.dart
index 9adba85..20a3c22 100644
--- a/tests/language/async/return_types_test.dart
+++ b/tests/language/async/return_types_test.dart
@@ -27,18 +27,14 @@
 // [analyzer] STATIC_TYPE_WARNING.WRONG_NUMBER_OF_TYPE_ARGUMENTS
 // [cfe] Expected 1 type arguments.
 foo4() async {
-// [error line 29, column 1]
-// [cfe] Functions marked 'async' must have a return type assignable to 'Future'.
   return "String";
-  //     ^
-  // [cfe] A value of type 'String' can't be assigned to a variable of type 'FutureOr<invalid-type>'.
 }
 
 int
-// [error line 37, column 1, length 3]
+// [error line 33, column 1, length 3]
 // [analyzer] STATIC_TYPE_WARNING.ILLEGAL_ASYNC_RETURN_TYPE
 foo5() async {
-// [error line 40, column 1]
+// [error line 36, column 1, length 3]
 // [cfe] Functions marked 'async' must have a return type assignable to 'Future'.
   return 3;
 }
@@ -48,11 +44,9 @@
   return new Future<int>.value(3);
 }
 
-Future<Future<int>>
-foo7() async {
+Future<Future<int>> foo7() async {
+  // This is fine, the future is used to complete the returned future.
   return new Future<int>.value(3);
-  //     ^^^^^^^^^^^^^^^^^^^^^^^^
-  // [analyzer] STATIC_TYPE_WARNING.RETURN_OF_INVALID_TYPE
 }
 
 Iterable<int> foo8() sync* {
diff --git a/tests/language/await/exceptions_test.dart b/tests/language/await/exceptions_test.dart
index c141edc..15419d4 100644
--- a/tests/language/await/exceptions_test.dart
+++ b/tests/language/await/exceptions_test.dart
@@ -32,7 +32,7 @@
 test1_2() async {
   try {
     await test1_1();
-  } catch (e) {
+  } on int catch (e) {
     throw e + 1;
   }
 }
@@ -50,18 +50,18 @@
   var test2_1 = () async {
     try {
       throw 'a';
-    } catch (e) {
+    } on String catch (e) {
       throw e + 'b';
     }
   };
   try {
     try {
       await test2_1();
-    } catch (e) {
+    } on String catch (e) {
       var y = await bar(e + 'c');
       throw y;
     }
-  } catch (e) {
+  } on String catch (e) {
     x = e + 'd';
     return '?';
   } finally {
diff --git a/tests/language/await/future_test.dart b/tests/language/await/future_test.dart
index bfd11e6..10314a4 100644
--- a/tests/language/await/future_test.dart
+++ b/tests/language/await/future_test.dart
@@ -42,7 +42,7 @@
     try {
       x = await bar(1);
       throw x;
-    } catch (e1) {
+    } on int catch (e1) {
       var y = await baz(e1 + 1);
       throw y;
     }
@@ -65,7 +65,7 @@
       };
       var a = await y();
       throw a;
-    } catch (e2) {
+    } on int catch (e2) {
       throw e2 + 1;
     }
   } catch (e3) {
diff --git a/tests/language/exception/throw6_test.dart b/tests/language/exception/throw6_test.dart
index 1433467..6bd4063 100644
--- a/tests/language/exception/throw6_test.dart
+++ b/tests/language/exception/throw6_test.dart
@@ -17,7 +17,7 @@
     int j = 0;
     try {
       j = func();
-    } catch (exception) {
+    } on MyException1 catch (exception) {
       i = i + 100;
       print(exception.message_);
     } finally {
diff --git a/tests/language/exception/try_catch3_test.dart b/tests/language/exception/try_catch3_test.dart
index 6cff3f8..c81e04d 100644
--- a/tests/language/exception/try_catch3_test.dart
+++ b/tests/language/exception/try_catch3_test.dart
@@ -55,25 +55,25 @@
       }
       try {
         j = j + 24;
-      } catch (e) {
+      } on TestException catch (e) {
         i = 300;
         print(e.getMessage());
       }
       try {
         j += 20;
-      } catch (e) {
+      } on TestException catch (e) {
         i = 400;
         print(e.getMessage());
       }
       try {
         j += 40;
-      } catch (e) {
+      } on TestException catch (e) {
         i = 600;
         print(e.getMessage());
       }
       try {
         j += 60;
-      } catch (e, trace) {
+      } on TestException catch (e, trace) {
         i = 700;
         print(trace.toString());
         print(e.getMessage());
diff --git a/tests/language/extension_methods/static_extension_getter_setter_conflicts_test.dart b/tests/language/extension_methods/static_extension_getter_setter_conflicts_test.dart
index 686c40f..00207bc 100644
--- a/tests/language/extension_methods/static_extension_getter_setter_conflicts_test.dart
+++ b/tests/language/extension_methods/static_extension_getter_setter_conflicts_test.dart
@@ -138,60 +138,72 @@
 
   c1a[0];
 
-  C1<Object> c1b = C1<Object>(); // Neither extension is more specific.
+  C1<Object?> c1b = C1<Object?>(); // Neither extension is more specific.
 
   c1b.m1;
   //  ^^
   // [analyzer] COMPILE_TIME_ERROR.AMBIGUOUS_EXTENSION_MEMBER_ACCESS
-  // [cfe] The property 'm1' is defined in multiple extensions for 'C1<Object>' and neither is more specific.
+  // [cfe] The property 'm1' is defined in multiple extensions for 'C1<Object?>' and neither is more specific.
 
   c1b.m1 = 0;
   //  ^^
   // [analyzer] COMPILE_TIME_ERROR.AMBIGUOUS_EXTENSION_MEMBER_ACCESS
-  // [cfe] The property 'm1' is defined in multiple extensions for 'C1<Object>' and neither is more specific.
+  // [cfe] The property 'm1' is defined in multiple extensions for 'C1<Object?>' and neither is more specific.
 
   c1b.m1 += 0;
   //  ^^
   // [analyzer] COMPILE_TIME_ERROR.AMBIGUOUS_EXTENSION_MEMBER_ACCESS
-  // [cfe] The property 'm1' is defined in multiple extensions for 'C1<Object>' and neither is more specific.
+  // [cfe] The property 'm1' is defined in multiple extensions for 'C1<Object?>' and neither is more specific.
 
   c1b.m1++;
   //  ^^
   // [analyzer] COMPILE_TIME_ERROR.AMBIGUOUS_EXTENSION_MEMBER_ACCESS
-  // [cfe] The property 'm1' is defined in multiple extensions for 'C1<Object>' and neither is more specific.
+  // [cfe] The property 'm1' is defined in multiple extensions for 'C1<Object?>' and neither is more specific.
 
   c1b.m2;
   //  ^^
   // [analyzer] COMPILE_TIME_ERROR.AMBIGUOUS_EXTENSION_MEMBER_ACCESS
-  // [cfe] The property 'm2' is defined in multiple extensions for 'C1<Object>' and neither is more specific.
+  // [cfe] The property 'm2' is defined in multiple extensions for 'C1<Object?>' and neither is more specific.
 
   c1b[0];
 //^^^
 // [analyzer] COMPILE_TIME_ERROR.AMBIGUOUS_EXTENSION_MEMBER_ACCESS
 //   ^
-// [cfe] The operator '[]' is defined in multiple extensions for 'C1<Object>' and neither is more specific.
+// [cfe] The operator '[]' is defined in multiple extensions for 'C1<Object?>' and neither is more specific.
 
   c1b[0] = 0;
 //^^^
 // [analyzer] COMPILE_TIME_ERROR.AMBIGUOUS_EXTENSION_MEMBER_ACCESS
 //   ^
-// [cfe] The operator '[]=' is defined in multiple extensions for 'C1<Object>' and neither is more specific.
+// [cfe] The operator '[]=' is defined in multiple extensions for 'C1<Object?>' and neither is more specific.
 
   c1b[0] += 0;
 //^^^
 // [analyzer] COMPILE_TIME_ERROR.AMBIGUOUS_EXTENSION_MEMBER_ACCESS
 //   ^
-// [cfe] The operator '[]' is defined in multiple extensions for 'C1<Object>' and neither is more specific.
+// [cfe] The operator '[]' is defined in multiple extensions for 'C1<Object?>' and neither is more specific.
 //   ^
-// [cfe] The operator '[]=' is defined in multiple extensions for 'C1<Object>' and neither is more specific.
+// [cfe] The operator '[]=' is defined in multiple extensions for 'C1<Object?>' and neither is more specific.
 
   c1b[0]++;
 //^^^
 // [analyzer] COMPILE_TIME_ERROR.AMBIGUOUS_EXTENSION_MEMBER_ACCESS
 //   ^
-// [cfe] The operator '[]' is defined in multiple extensions for 'C1<Object>' and neither is more specific.
+// [cfe] The operator '[]' is defined in multiple extensions for 'C1<Object?>' and neither is more specific.
 //   ^
-// [cfe] The operator '[]=' is defined in multiple extensions for 'C1<Object>' and neither is more specific.
+// [cfe] The operator '[]=' is defined in multiple extensions for 'C1<Object?>' and neither is more specific.
+
+  C1<Object> c1c = C1<Object>(); // E1A is more specific.
+  
+  c1c.m1 = 0;
+  //  ^^
+  // [analyzer] STATIC_WARNING.ASSIGNMENT_TO_FINAL_LOCAL
+  // [cfe] The setter 'm1' isn't defined for the class 'C1<Object>'.
+
+  c1c.m2;
+  //  ^^
+  // [analyzer] STATIC_TYPE_WARNING.UNDEFINED_GETTER
+  // [cfe] The getter 'm2' isn't defined for the class 'C1<Object>'.
 }
 
 // Getter on the extension itself.
diff --git a/tests/language/function_subtype/bound_closure0_test.dart b/tests/language/function_subtype/bound_closure0_test.dart
new file mode 100644
index 0000000..9a37578
--- /dev/null
+++ b/tests/language/function_subtype/bound_closure0_test.dart
@@ -0,0 +1,40 @@
+// Copyright (c) 2013, the Dart project authors.  Please see the AUTHORS file
+// 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 test program for constructors and initializers.
+
+// Check function subtyping for bound closures.
+
+import 'package:expect/expect.dart';
+
+typedef int Foo(bool a, [String b]);
+typedef int Bar(bool a, [String b]);
+typedef int Baz(bool a, {String b});
+typedef int Boz(bool a);
+
+class C {
+  int foo(bool a, [String b = '']) => -1;
+  int baz(bool a, {String b = ''}) => -1;
+  int boz(bool a, {int b = -1}) => -1;
+}
+
+main() {
+  var c = new C();
+  var foo = c.foo;
+  Expect.isTrue(foo is Foo, 'foo is Foo');
+  Expect.isTrue(foo is Bar, 'foo is Bar');
+  Expect.isFalse(foo is Baz, 'foo is Baz');
+  Expect.isTrue(foo is Boz, 'foo is Boz');
+
+  var baz = c.baz;
+  Expect.isFalse(baz is Foo, 'baz is Foo');
+  Expect.isFalse(baz is Bar, 'baz is Bar');
+  Expect.isTrue(baz is Baz, 'baz is Baz');
+  Expect.isTrue(baz is Boz, 'baz is Boz');
+
+  var boz = c.boz;
+  Expect.isFalse(boz is Foo, 'boz is Foo');
+  Expect.isFalse(boz is Bar, 'boz is Bar');
+  Expect.isFalse(boz is Baz, 'boz is Baz');
+  Expect.isTrue(boz is Boz, 'boz is Boz');
+}
diff --git a/tests/language/function_subtype/bound_closure1_test.dart b/tests/language/function_subtype/bound_closure1_test.dart
new file mode 100644
index 0000000..dfb33e0
--- /dev/null
+++ b/tests/language/function_subtype/bound_closure1_test.dart
@@ -0,0 +1,53 @@
+// Copyright (c) 2013, the Dart project authors.  Please see the AUTHORS file
+// 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 test program for constructors and initializers.
+
+// Check function subtyping for bound closures against generic typedefs.
+
+import 'package:expect/expect.dart';
+
+typedef int Foo<T>(T a, [String b]);
+typedef int Bar<T>(T a, [String b]);
+typedef int Baz<T>(T a, {String b});
+typedef int Boz<T>(T a);
+
+class C {
+  int foo(bool a, [String b = '']) => -1;
+  int baz(bool a, {String b = ''}) => -1;
+}
+
+main() {
+  var c = new C();
+  var foo = c.foo;
+  Expect.isTrue(foo is Foo<bool>, 'foo is Foo<bool>');
+  Expect.isTrue(foo is Bar<bool>, 'foo is Bar<bool>');
+  Expect.isFalse(foo is Baz<bool>, 'foo is Baz<bool>');
+  Expect.isTrue(foo is Boz<bool>, 'foo is Boz<bool>');
+
+  Expect.isFalse(foo is Foo<int>, 'foo is Foo<int>');
+  Expect.isFalse(foo is Bar<int>, 'foo is Bar<int>');
+  Expect.isFalse(foo is Baz<int>, 'foo is Baz<int>');
+  Expect.isFalse(foo is Boz<int>, 'foo is Boz<int>');
+
+  Expect.isFalse(foo is Foo, 'foo is Foo');
+  Expect.isFalse(foo is Bar, 'foo is Bar');
+  Expect.isFalse(foo is Baz, 'foo is Baz');
+  Expect.isFalse(foo is Boz, 'foo is Boz');
+
+  var baz = c.baz;
+  Expect.isFalse(baz is Foo<bool>, 'baz is Foo<bool>');
+  Expect.isFalse(baz is Bar<bool>, 'baz is Bar<bool>');
+  Expect.isTrue(baz is Baz<bool>, 'baz is Baz<bool>');
+  Expect.isTrue(baz is Boz<bool>, 'baz is Boz<bool>');
+
+  Expect.isFalse(baz is Foo<int>, 'baz is Foo<int>');
+  Expect.isFalse(baz is Bar<int>, 'baz is Bar<int>');
+  Expect.isFalse(baz is Baz<int>, 'baz is Baz<int>');
+  Expect.isFalse(baz is Boz<int>, 'baz is Boz<int>');
+
+  Expect.isFalse(baz is Foo, 'baz is Foo');
+  Expect.isFalse(baz is Bar, 'baz is Bar');
+  Expect.isFalse(baz is Baz, 'baz is Baz');
+  Expect.isFalse(baz is Boz, 'baz is Boz');
+}
diff --git a/tests/language/function_subtype/bound_closure2_test.dart b/tests/language/function_subtype/bound_closure2_test.dart
new file mode 100644
index 0000000..79bea27
--- /dev/null
+++ b/tests/language/function_subtype/bound_closure2_test.dart
@@ -0,0 +1,41 @@
+// Copyright (c) 2013, the Dart project authors.  Please see the AUTHORS file
+// 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 test program for constructors and initializers.
+
+// Check function subtyping for bound closures on generic type against generic
+// typedefs.
+
+import 'package:expect/expect.dart';
+
+typedef int Foo<T>(T a, [String b]);
+typedef int Bar<T>(T a, [String b]);
+typedef int Baz<T>(T a, {String b});
+typedef int Boz<T>(T a);
+typedef int Biz<T>(T a, int b);
+
+class C<T> {
+  int foo(bool a, [String b = '']) => -1;
+  int baz(bool a, {String b = ''}) => -1;
+
+  void test(String nameOfT, bool expectedResult) {
+    Expect.equals(expectedResult, foo is Foo<T>, 'foo is Foo<$nameOfT>');
+    Expect.equals(expectedResult, foo is Bar<T>, 'foo is Bar<$nameOfT>');
+    Expect.isFalse(foo is Baz<T>, 'foo is Baz<$nameOfT>');
+    Expect.equals(expectedResult, foo is Boz<T>, 'foo is Boz<$nameOfT>');
+    Expect.isFalse(foo is Biz<T>, 'foo is Biz<$nameOfT>');
+
+    Expect.isFalse(baz is Foo<T>, 'baz is Foo<$nameOfT>');
+    Expect.isFalse(baz is Bar<T>, 'baz is Bar<$nameOfT>');
+    Expect.equals(expectedResult, baz is Baz<T>, 'baz is Baz<$nameOfT>');
+    Expect.equals(expectedResult, baz is Boz<T>, 'baz is Boz<$nameOfT>');
+    Expect.isFalse(baz is Biz<T>, 'bar is Biz<$nameOfT>');
+  }
+}
+
+main() {
+  new C<bool>().test('bool', true);
+  new C<int>().test('int', false);
+  new C<Object>().test('Object', false);
+  new C<dynamic>().test('dynamic', false);
+}
diff --git a/tests/language/function_subtype/bound_closure3_test.dart b/tests/language/function_subtype/bound_closure3_test.dart
new file mode 100644
index 0000000..0a1eec9
--- /dev/null
+++ b/tests/language/function_subtype/bound_closure3_test.dart
@@ -0,0 +1,36 @@
+// Copyright (c) 2013, the Dart project authors.  Please see the AUTHORS file
+// 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 test program for constructors and initializers.
+
+// Check function subtyping for generic bound closures.
+
+import 'package:expect/expect.dart';
+
+typedef void Foo(bool a, [String b]);
+typedef void Bar(bool a, [String b]);
+typedef void Baz(bool a, {String b});
+typedef int Boz(bool a);
+
+class C<T> {
+  void foo(T a, [String b = '']) {}
+  void baz(T a, {String b = ''}) {}
+
+  void test(String nameOfT) {
+    Expect.isTrue(foo is Foo, 'C<$nameOfT>.foo is not Foo');
+    Expect.isTrue(foo is Bar, 'C<$nameOfT>.foo is not Bar');
+    Expect.isFalse(foo is Baz, 'C<$nameOfT>.foo is Baz');
+    Expect.isFalse(foo is Boz, 'C<$nameOfT>.foo is Boz');
+
+    Expect.isFalse(baz is Foo, 'C<$nameOfT>.baz is Foo');
+    Expect.isFalse(baz is Bar, 'C<$nameOfT>.baz is Bar');
+    Expect.isTrue(baz is Baz, 'C<$nameOfT>.baz is not Baz');
+    Expect.isFalse(baz is Boz, 'C<$nameOfT>.baz is Boz');
+  }
+}
+
+main() {
+  new C<bool>().test('bool');
+  new C<int>().test('int');
+  new C<dynamic>().test('dynamic');
+}
diff --git a/tests/language/function_subtype/bound_closure4_test.dart b/tests/language/function_subtype/bound_closure4_test.dart
new file mode 100644
index 0000000..a0df342
--- /dev/null
+++ b/tests/language/function_subtype/bound_closure4_test.dart
@@ -0,0 +1,38 @@
+// Copyright (c) 2013, the Dart project authors.  Please see the AUTHORS file
+// 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 test program for constructors and initializers.
+
+// Check function subtyping for generic bound closures.
+
+import 'package:expect/expect.dart';
+
+typedef void Foo(bool a, [String b]);
+typedef void Bar(bool a, [String b]);
+typedef void Baz(bool a, {String b});
+typedef int Boz(bool a);
+
+class C<T> {
+  void foo(T a, [String b = '']) {}
+  void baz(T a, {String b = ''}) {}
+
+  void test(String nameOfT) {
+    Expect.isTrue(foo is Foo, 'C<$nameOfT>.foo is not Foo');
+    Expect.isTrue(foo is Bar, 'C<$nameOfT>.foo is not Bar');
+    Expect.isFalse(foo is Baz, 'C<$nameOfT>.foo is Baz');
+    Expect.isFalse(foo is Boz, 'C<$nameOfT>.foo is Boz');
+
+    Expect.isFalse(baz is Foo, 'C<$nameOfT>.baz is Foo');
+    Expect.isFalse(baz is Bar, 'C<$nameOfT>.baz is Bar');
+    Expect.isTrue(baz is Baz, 'C<$nameOfT>.baz is not Baz');
+    Expect.isFalse(baz is Boz, 'C<$nameOfT>.baz is Boz');
+  }
+}
+
+class D<S, T> extends C<T> {}
+
+main() {
+  new D<String, bool>().test('bool');
+  new D<bool, int>().test('int');
+  new D<dynamic, dynamic>().test('dynamic');
+}
diff --git a/tests/language/function_subtype/bound_closure5_test.dart b/tests/language/function_subtype/bound_closure5_test.dart
new file mode 100644
index 0000000..1844a42
--- /dev/null
+++ b/tests/language/function_subtype/bound_closure5_test.dart
@@ -0,0 +1,45 @@
+// Copyright (c) 2013, the Dart project authors.  Please see the AUTHORS file
+// 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 test program for constructors and initializers.
+
+// Check function subtyping for bound closures on generic type against generic
+// typedefs.
+
+import 'package:expect/expect.dart';
+
+typedef int Foo<T>(T a, [String b]);
+typedef int Bar<T>(T a, [String b]);
+typedef int Baz<T>(T a, {String b});
+typedef int Boz<T>(T a);
+typedef int Biz<T>(T a, int b);
+
+class C<T> {
+  int foo(bool a, [String b = '']) => -1;
+  int baz(bool a, {String b = ''}) => -1;
+
+  void test(String nameOfT, bool expectedResult) {
+    Expect.equals(expectedResult, foo is Foo<T>, 'foo is Foo<$nameOfT>');
+    Expect.equals(expectedResult, foo is Bar<T>, 'foo is Bar<$nameOfT>');
+    Expect.isFalse(foo is Baz<T>, 'foo is Baz<$nameOfT>');
+    Expect.equals(expectedResult, foo is Boz<T>, 'foo is Boz<$nameOfT>');
+    Expect.isFalse(foo is Biz<T>, 'foo is Biz<$nameOfT>');
+
+    Expect.isFalse(baz is Foo<T>, 'baz is Foo<$nameOfT>');
+    Expect.isFalse(baz is Bar<T>, 'baz is Bar<$nameOfT>');
+    Expect.equals(expectedResult, baz is Baz<T>, 'baz is Baz<$nameOfT>');
+    Expect.equals(expectedResult, baz is Boz<T>, 'baz is Boz<$nameOfT>');
+    Expect.isFalse(baz is Biz<T>, 'bar is Biz<$nameOfT>');
+  }
+}
+
+class D<S, T> extends C<T> {}
+
+main() {
+  new D<String, bool>().test('bool', true);
+  new D<bool, int>().test('int', false);
+  new D<Object, Object>().test('Object', false);
+  new D<Null, Null>().test('Null', isWeakMode);
+  new D<Never, Never>().test('Never', true);
+  new D<dynamic, dynamic>().test('dynamic', false);
+}
diff --git a/tests/language/function_subtype/bound_closure5a_test.dart b/tests/language/function_subtype/bound_closure5a_test.dart
new file mode 100644
index 0000000..38b173d
--- /dev/null
+++ b/tests/language/function_subtype/bound_closure5a_test.dart
@@ -0,0 +1,47 @@
+// Copyright (c) 2013, the Dart project authors.  Please see the AUTHORS file
+// 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 test program for constructors and initializers.
+
+// Check function subtyping for bound closures on generic type against generic
+// typedefs.
+
+import 'package:expect/expect.dart';
+
+typedef int Foo<T>(T a, [String b]);
+typedef int Bar<T>(T a, [String b]);
+typedef int Baz<T>(T a, {String b});
+typedef int Boz<T>(T a);
+typedef int Biz<T>(T a, int b);
+
+class C<T> {
+  int foo(bool a, [String b = '']) => -1;
+  int baz(bool a, {String b = ''}) => -1;
+
+  void test(String nameOfT, bool expectedResult) {
+    Expect.equals(expectedResult, foo is Foo<T>, 'foo is Foo<$nameOfT>');
+    Expect.equals(expectedResult, foo is Bar<T>, 'foo is Bar<$nameOfT>');
+    Expect.isFalse(foo is Baz<T>, 'foo is Baz<$nameOfT>');
+    Expect.equals(expectedResult, foo is Boz<T>, 'foo is Boz<$nameOfT>');
+    Expect.isFalse(foo is Biz<T>, 'foo is Biz<$nameOfT>');
+
+    Expect.isFalse(baz is Foo<T>, 'baz is Foo<$nameOfT>');
+    Expect.isFalse(baz is Bar<T>, 'baz is Bar<$nameOfT>');
+    Expect.equals(expectedResult, baz is Baz<T>, 'baz is Baz<$nameOfT>');
+    Expect.equals(expectedResult, baz is Boz<T>, 'baz is Boz<$nameOfT>');
+    Expect.isFalse(baz is Biz<T>, 'bar is Biz<$nameOfT>');
+  }
+}
+
+class Cm<T> extends C<T> {}
+
+class D<S, T> extends Cm<T> {}
+
+main() {
+  new D<String, bool>().test('bool', true);
+  new D<bool, int>().test('int', false);
+  new D<Object, Object>().test('Object', false);
+  new D<Null, Null>().test('Null', isWeakMode);
+  new D<Never, Never>().test('Never', true);
+  new D<dynamic, dynamic>().test('dynamic', false);
+}
diff --git a/tests/language/function_subtype/bound_closure6_test.dart b/tests/language/function_subtype/bound_closure6_test.dart
new file mode 100644
index 0000000..e26d21f
--- /dev/null
+++ b/tests/language/function_subtype/bound_closure6_test.dart
@@ -0,0 +1,47 @@
+// Copyright (c) 2013, the Dart project authors.  Please see the AUTHORS file
+// 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 test program for constructors and initializers.
+
+// Check function subtyping for bound closures on generic type against generic
+// typedefs.
+
+import 'package:expect/expect.dart';
+
+typedef int Foo<T>(T a, [String b]);
+typedef int Bar<T>(T a, [String b]);
+typedef int Baz<T>(T a, {String b});
+typedef int Boz<T>(T a);
+typedef int Biz<T>(T a, int b);
+
+class C<T> {
+  int foo(bool a, [String b = '']) => -1;
+  int baz(bool a, {String b = ''}) => -1;
+
+  void test(String nameOfT, bool expectedResult) {
+    void localMethod() {
+      Expect.equals(expectedResult, foo is Foo<T>, 'foo is Foo<$nameOfT>');
+      Expect.equals(expectedResult, foo is Bar<T>, 'foo is Bar<$nameOfT>');
+      Expect.isFalse(foo is Baz<T>, 'foo is Baz<$nameOfT>');
+      Expect.equals(expectedResult, foo is Boz<T>, 'foo is Boz<$nameOfT>');
+      Expect.isFalse(foo is Biz<T>, 'foo is Biz<$nameOfT>');
+
+      Expect.isFalse(baz is Foo<T>, 'baz is Foo<$nameOfT>');
+      Expect.isFalse(baz is Bar<T>, 'baz is Bar<$nameOfT>');
+      Expect.equals(expectedResult, baz is Baz<T>, 'baz is Baz<$nameOfT>');
+      Expect.equals(expectedResult, baz is Boz<T>, 'baz is Boz<$nameOfT>');
+      Expect.isFalse(baz is Biz<T>, 'bar is Biz<$nameOfT>');
+    }
+
+    localMethod();
+  }
+}
+
+main() {
+  new C<bool>().test('bool', true);
+  new C<int>().test('int', false);
+  new C<Object>().test('Object', false);
+  new C<dynamic>().test('dynamic', false);
+  new C<Null>().test('Null', isWeakMode);
+  new C<Never>().test('Never', true);
+}
diff --git a/tests/language/function_subtype/bound_closure7_test.dart b/tests/language/function_subtype/bound_closure7_test.dart
new file mode 100644
index 0000000..2e16207
--- /dev/null
+++ b/tests/language/function_subtype/bound_closure7_test.dart
@@ -0,0 +1,35 @@
+// Copyright (c) 2013, the Dart project authors.  Please see the AUTHORS file
+// 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 test program for constructors and initializers.
+
+// Check function subtyping for bound closures.
+
+import 'package:expect/expect.dart';
+
+typedef Foo<T>(T t);
+
+class Class<T> {
+  foo(Foo<T> o) => o is Foo<T>;
+}
+
+bar(int i) {}
+
+baz<T>(Foo<T> o) => o is Foo<T>;
+
+void main() {
+  dynamic f = new Class<int>().foo;
+  Expect.isTrue(f(bar));
+  Expect.isTrue(f is Foo<Foo<int>>);
+  Expect.isFalse(f is Foo<int>);
+  Expect.isFalse(f is Foo<Object>);
+  Expect.throwsTypeError(() => f(f));
+  Expect.throwsTypeError(() => f(42));
+
+  Foo<Foo<int>> bazInt = baz; // implicit instantiation baz<int>
+  f = bazInt;
+  Expect.isTrue(f(bar));
+  Expect.isFalse(f is Foo<int>);
+  Expect.throwsTypeError(() => f(f));
+  Expect.throwsTypeError(() => f(42));
+}
diff --git a/tests/language/function_subtype/call0_test.dart b/tests/language/function_subtype/call0_test.dart
new file mode 100644
index 0000000..61b9819
--- /dev/null
+++ b/tests/language/function_subtype/call0_test.dart
@@ -0,0 +1,60 @@
+// Copyright (c) 2013, the Dart project authors.  Please see the AUTHORS file
+// 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 test program for constructors and initializers.
+
+// Check function subtyping for classes with call functions.
+
+import 'package:expect/expect.dart';
+
+typedef void Foo(bool a, [String b]);
+typedef void Bar(bool a, [String b]);
+typedef void Baz(bool a, {String b});
+typedef void Boz(bool a);
+
+class C1 {
+  void call(bool a, [String b = '']) {}
+}
+
+class C2 {
+  void call(bool a, {String b = ''}) {}
+}
+
+class C3 {
+  void call(bool a, {int b = -1}) {}
+}
+
+main() {
+  Function c1 = new C1(); // implicit tearoff of `call`
+  Expect.isTrue(c1 is Foo, 'c1 is Foo');
+  Expect.isTrue(c1 is Bar, 'c1 is Bar');
+  Expect.isFalse(c1 is Baz, 'c1 is Baz');
+  Expect.isTrue(c1 is Boz, 'c1 is Boz');
+  Expect.isFalse(c1 is C1, 'c1 is C1');
+
+  Function c2 = new C2(); // implicit tearoff of `call`
+  Expect.isFalse(c2 is Foo, 'c2 is Foo');
+  Expect.isFalse(c2 is Bar, 'c2 is Bar');
+  Expect.isTrue(c2 is Baz, 'c2 is Baz');
+  Expect.isTrue(c2 is Boz, 'c2 is Boz');
+  Expect.isFalse(c2 is C2, 'c2 is C2');
+
+  Function c3 = new C3(); // implicit tearoff of `call`
+  Expect.isFalse(c3 is Foo, 'c3 is Foo');
+  Expect.isFalse(c3 is Bar, 'c3 is Bar');
+  Expect.isFalse(c3 is Baz, 'c3 is Baz');
+  Expect.isTrue(c3 is Boz, 'c3 is Boz');
+  Expect.isFalse(c3 is C3, 'c3 is C3');
+
+  expectIsNotFunction(new C1());
+  expectIsNotFunction(new C2());
+  expectIsNotFunction(new C3());
+}
+
+expectIsNotFunction(Object obj) {
+  Expect.isFalse(obj is Function, '$obj should not be a Function');
+  Expect.isFalse(obj is Foo, '$obj should not be a Foo');
+  Expect.isFalse(obj is Bar, '$obj should not be a Bar');
+  Expect.isFalse(obj is Baz, '$obj should not be a Baz');
+  Expect.isFalse(obj is Boz, '$obj should not be a Boz');
+}
diff --git a/tests/language/function_subtype/call1_test.dart b/tests/language/function_subtype/call1_test.dart
new file mode 100644
index 0000000..ff9163c
--- /dev/null
+++ b/tests/language/function_subtype/call1_test.dart
@@ -0,0 +1,59 @@
+// Copyright (c) 2013, the Dart project authors.  Please see the AUTHORS file
+// 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 test program for constructors and initializers.
+
+// Check function subtyping for classes with call functions.
+
+import 'package:expect/expect.dart';
+
+typedef void Foo(bool a, [String b]);
+typedef void Bar(bool a, [String b]);
+typedef void Baz(bool a, {String b});
+typedef void Boz(bool a);
+
+class C1<T> {
+  void call(T a, [String b = '']) {}
+}
+
+class C2<T> {
+  void call(T a, {String b = ''}) {}
+}
+
+main() {
+  Function c1_bool = new C1<bool>(); // implicit tearoff of `call`
+  Expect.isTrue(c1_bool is Foo, 'c1_bool is Foo');
+  Expect.isTrue(c1_bool is Bar, 'c1_bool is Bar');
+  Expect.isFalse(c1_bool is Baz, 'c1_bool is Baz');
+  Expect.isTrue(c1_bool is Boz, 'c1_bool is Boz');
+
+  Function c1_int = new C1<int>(); // implicit tearoff of `call`
+  Expect.isTrue(c1_int is Foo, 'c1_int is Foo');
+  Expect.isTrue(c1_int is Bar, 'c1_int is Bar');
+  Expect.isFalse(c1_int is Baz, 'c1_int is Baz');
+  Expect.isTrue(c1_int is Boz, 'c1_int is Boz');
+
+  Function c1 = new C1(); // implicit tearoff of `call`
+  Expect.isTrue(c1 is Foo, 'c1 is Foo');
+  Expect.isTrue(c1 is Bar, 'c1 is Bar');
+  Expect.isFalse(c1 is Baz, 'c1 is Baz');
+  Expect.isTrue(c1 is Boz, 'c1 is Boz');
+
+  Function c2_bool = new C2<bool>(); // implicit tearoff of `call`
+  Expect.isFalse(c2_bool is Foo, 'c2_bool is Foo');
+  Expect.isFalse(c2_bool is Bar, 'c2_bool is Bar');
+  Expect.isTrue(c2_bool is Baz, 'c2_bool is Baz');
+  Expect.isTrue(c2_bool is Boz, 'c2_bool is Boz');
+
+  Function c2_int = new C2<int>(); // implicit tearoff of `call`
+  Expect.isFalse(c2_int is Foo, 'c2_int is Foo');
+  Expect.isFalse(c2_int is Bar, 'c2_int is Bar');
+  Expect.isTrue(c2_int is Baz, 'c2_int is Baz');
+  Expect.isTrue(c2_int is Boz, 'c2_int is Boz');
+
+  Function c2 = new C2(); // implicit tearoff of `call`
+  Expect.isFalse(c2 is Foo, 'c2 is Foo');
+  Expect.isFalse(c2 is Bar, 'c2 is Bar');
+  Expect.isTrue(c2 is Baz, 'c2 is Baz');
+  Expect.isTrue(c2 is Boz, 'c2 is Boz');
+}
diff --git a/tests/language/function_subtype/call2_test.dart b/tests/language/function_subtype/call2_test.dart
new file mode 100644
index 0000000..3b2320c
--- /dev/null
+++ b/tests/language/function_subtype/call2_test.dart
@@ -0,0 +1,63 @@
+// Copyright (c) 2013, the Dart project authors.  Please see the AUTHORS file
+// 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 test program for constructors and initializers.
+
+// Check function subtyping for classes with call functions.
+
+import 'package:expect/expect.dart';
+
+typedef void Foo(bool a, [String b]);
+typedef void Bar(bool a, [String b]);
+typedef void Baz(bool a, {String b});
+typedef void Boz(bool a);
+
+class C1<T> {
+  void call(T a, [String b = '']) {}
+}
+
+class D1<S, T> extends C1<T> {}
+
+class C2<T> {
+  void call(T a, {String b = ''}) {}
+}
+
+class D2<S, T> extends C2<T> {}
+
+main() {
+  Function d1_String_bool = new D1<String, bool>();
+  Expect.isTrue(d1_String_bool is Foo, 'd1_String_bool is Foo');
+  Expect.isTrue(d1_String_bool is Bar, 'd1_String_bool is Bar');
+  Expect.isFalse(d1_String_bool is Baz, 'd1_String_bool is Baz');
+  Expect.isTrue(d1_String_bool is Boz, 'd1_String_bool is Boz');
+
+  Function d1_bool_int = new D1<bool, int>();
+  Expect.isTrue(d1_bool_int is Foo, 'd1_bool_int is Foo');
+  Expect.isTrue(d1_bool_int is Bar, 'd1_bool_int is Bar');
+  Expect.isFalse(d1_bool_int is Baz, 'd1_bool_int is Baz');
+  Expect.isTrue(d1_bool_int is Boz, 'd1_bool_int is Boz');
+
+  Function d1 = new D1();
+  Expect.isTrue(d1 is Foo, 'd1 is Foo');
+  Expect.isTrue(d1 is Bar, 'd1 is Bar');
+  Expect.isFalse(d1 is Baz, 'd1 is Baz');
+  Expect.isTrue(d1 is Boz, 'd1 is Boz');
+
+  Function d2_String_bool = new D2<String, bool>();
+  Expect.isFalse(d2_String_bool is Foo, 'd2_String_bool is Foo');
+  Expect.isFalse(d2_String_bool is Bar, 'd2_String_bool is Bar');
+  Expect.isTrue(d2_String_bool is Baz, 'd2_String_bool is Baz');
+  Expect.isTrue(d2_String_bool is Boz, 'd2_String_bool is Boz');
+
+  Function d2_bool_int = new D2<bool, int>();
+  Expect.isFalse(d2_bool_int is Foo, 'd2_bool_int is Foo');
+  Expect.isFalse(d2_bool_int is Bar, 'd2_bool_int is Bar');
+  Expect.isTrue(d2_bool_int is Baz, 'd2_bool_int is Baz');
+  Expect.isTrue(d2_bool_int is Boz, 'd2_bool_int is Boz');
+
+  Function d2 = new D2();
+  Expect.isFalse(d2 is Foo, 'd2 is Foo');
+  Expect.isFalse(d2 is Bar, 'd2 is Bar');
+  Expect.isTrue(d2 is Baz, 'd2 is Baz');
+  Expect.isTrue(d2 is Boz, 'd2 is Boz');
+}
diff --git a/tests/language/function_subtype/call_type_variable_test.dart b/tests/language/function_subtype/call_type_variable_test.dart
new file mode 100644
index 0000000..9f42b92
--- /dev/null
+++ b/tests/language/function_subtype/call_type_variable_test.dart
@@ -0,0 +1,25 @@
+// Copyright (c) 2020, the Dart project authors.  Please see the AUTHORS file
+// 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.
+
+import "package:expect/expect.dart";
+
+// Test that it is possible to invoke an object whose type is a proper subtype
+// of a function type (that is, its type is 'function-type bounded', and we
+// get to call it as if its type had been that bound).
+
+class A<X, Y extends X Function(X)> {
+  final Y f;
+  A(this.f);
+  X m(X value) => f(value);
+}
+
+class B extends A<String, String Function(String, {int i})> {
+  B(String Function(String, {int i}) f) : super(f);
+  String m(String value) => f(value, i: 42);
+}
+
+void main() {
+  B b = B((String s, {int i = -1}) => "$s and $i");
+  Expect.equals('24 and 42', b.m('24'));
+}
diff --git a/tests/language/function_subtype/cast0_test.dart b/tests/language/function_subtype/cast0_test.dart
new file mode 100644
index 0000000..f93ffc8
--- /dev/null
+++ b/tests/language/function_subtype/cast0_test.dart
@@ -0,0 +1,20 @@
+// Copyright (c) 2013, the Dart project authors.  Please see the AUTHORS file
+// 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 test program for constructors and initializers.
+
+// Check function subtyping casts.
+
+import 'package:expect/expect.dart';
+
+typedef void Foo<T>(T t);
+typedef void Bar(int i);
+
+void bar(int i) {}
+
+void main() {
+  Expect.throws(() => bar as Foo);
+  Expect.throws(() => bar as Foo<bool>);
+  Expect.isNotNull(bar as Foo<int>);
+  Expect.isNotNull(bar as Bar);
+}
diff --git a/tests/language/function_subtype/cast1_test.dart b/tests/language/function_subtype/cast1_test.dart
new file mode 100644
index 0000000..e23eb0f
--- /dev/null
+++ b/tests/language/function_subtype/cast1_test.dart
@@ -0,0 +1,32 @@
+// Copyright (c) 2013, the Dart project authors.  Please see the AUTHORS file
+// 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 test program for constructors and initializers.
+
+// Check function subtyping casts.
+
+import 'package:expect/expect.dart';
+
+typedef void Foo<T>(T t);
+typedef void Bar(int i);
+
+class Class<T> {
+  void bar(T i) {}
+}
+
+void main() {
+  Expect.isNotNull(new Class().bar as Foo);
+  Expect.isNotNull(new Class().bar as Foo<bool>);
+  Expect.isNotNull(new Class().bar as Foo<int>);
+  Expect.isNotNull(new Class().bar as Bar);
+
+  Expect.isNotNull(new Class<int>().bar as Foo);
+  Expect.isNotNull(new Class<int>().bar as Foo<bool>);
+  Expect.isNotNull(new Class<int>().bar as Foo<int>);
+  Expect.isNotNull(new Class<int>().bar as Bar);
+
+  Expect.isNotNull(new Class<bool>().bar as Foo);
+  Expect.isNotNull(new Class<bool>().bar as Foo<bool>);
+  Expect.isNotNull(new Class<bool>().bar as Foo<int>);
+  Expect.isNotNull(new Class<bool>().bar as Bar);
+}
diff --git a/tests/language/function_subtype/cast2_test.dart b/tests/language/function_subtype/cast2_test.dart
new file mode 100644
index 0000000..03a8f53
--- /dev/null
+++ b/tests/language/function_subtype/cast2_test.dart
@@ -0,0 +1,33 @@
+// Copyright (c) 2013, the Dart project authors.  Please see the AUTHORS file
+// 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 test program for constructors and initializers.
+
+// Check function subtyping casts.
+
+import 'package:expect/expect.dart';
+
+typedef void Foo<T>(T t);
+typedef void Bar(int i);
+
+class Class<T> {
+  test(bool expectedResult, var o, String typeName) {
+    if (expectedResult) {
+      Expect.isNotNull(o as Foo<T>, "bar as Foo<$typeName>");
+    } else {
+      Expect.throws(() => o as Foo<T>, (e) => true, "bar as Foo<$typeName>");
+    }
+    Expect.isNotNull(o as Bar, "bar as Bar");
+  }
+}
+
+void bar(int i) {}
+
+void main() {
+  new Class<dynamic>().test(false, bar, "dynamic");
+  new Class<Object>().test(false, bar, "Object");
+  new Class<Null>().test(isWeakMode, bar, "Null");
+  new Class<Never>().test(true, bar, "Never");
+  new Class<int>().test(true, bar, "int");
+  new Class<bool>().test(false, bar, "bool");
+}
diff --git a/tests/language/function_subtype/cast3_test.dart b/tests/language/function_subtype/cast3_test.dart
new file mode 100644
index 0000000..ec222ac
--- /dev/null
+++ b/tests/language/function_subtype/cast3_test.dart
@@ -0,0 +1,35 @@
+// Copyright (c) 2013, the Dart project authors.  Please see the AUTHORS file
+// 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 test program for constructors and initializers.
+
+// Check function subtyping casts.
+
+import 'package:expect/expect.dart';
+
+typedef void Foo<T>(T t);
+typedef void Bar(int i);
+
+class Class<T> {
+  test(bool expectedResult, var o, String typeName) {
+    void local() {
+      if (expectedResult) {
+        Expect.isNotNull(o as Foo<T>, "bar as Foo<$typeName>");
+      } else {
+        Expect.throws(() => o as Foo<T>, (e) => true, "bar as Foo<$typeName>");
+      }
+      Expect.isNotNull(o as Bar, "bar as Bar");
+    }
+
+    local();
+  }
+}
+
+void bar(int i) {}
+
+void main() {
+  new Class<dynamic>().test(false, bar, "dynamic");
+  new Class<Object>().test(false, bar, "Object");
+  new Class<int>().test(true, bar, "int");
+  new Class<bool>().test(false, bar, "bool");
+}
diff --git a/tests/language/function_subtype/checked0_test.dart b/tests/language/function_subtype/checked0_test.dart
new file mode 100644
index 0000000..a314529
--- /dev/null
+++ b/tests/language/function_subtype/checked0_test.dart
@@ -0,0 +1,74 @@
+// Copyright (c) 2013, the Dart project authors.  Please see the AUTHORS file
+// 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 test program for constructors and initializers.
+
+// Check function subtyping of typedef vs. inlined function types.
+
+import 'package:expect/expect.dart';
+
+typedef int Foo<T>(T a, [String b]);
+typedef int Bar<T>(T a, [String b]);
+typedef int Baz<T>(T a, {String b});
+typedef int Boz<T>(T a);
+
+int fooF(bool a, [String b = '']) => -1;
+int bazF(bool a, {String b = ''}) => -1;
+int bozF(bool a, {int b = -1}) => -1;
+
+class C<T> {
+  void test1a(Foo<T> f) {}
+  void test1b(Bar<T> f) {}
+  void test1c(int f(T a, [String b])) {}
+
+  void test2a(Baz<T> f) {}
+  void test2b(int f(T a, {String b})) {}
+
+  void test3a(Boz<T> f) {}
+  void test3b(int f(T a)) {}
+
+  void test(String nameOfT, bool expectedResult) {
+    check(bool expectedResult, f()) {
+      if (!expectedResult) {
+        Expect.throwsTypeError(f);
+      } else {
+        f();
+      }
+    }
+
+    dynamic foo = fooF, baz = bazF, boz = bozF;
+
+    check(expectedResult, () => test1a(foo));
+    check(expectedResult, () => test1b(foo));
+    check(expectedResult, () => test1b(foo));
+    check(false, () => test2a(foo));
+    check(false, () => test2b(foo));
+    check(expectedResult, () => test3a(foo));
+    check(expectedResult, () => test3b(foo));
+
+    check(false, () => test1a(baz));
+    check(false, () => test1b(baz));
+    check(false, () => test1b(baz));
+    check(expectedResult, () => test2a(baz));
+    check(expectedResult, () => test2b(baz));
+    check(expectedResult, () => test3a(baz));
+    check(expectedResult, () => test3b(baz));
+
+    check(false, () => test1a(boz));
+    check(false, () => test1b(boz));
+    check(false, () => test1b(boz));
+    check(false, () => test2a(boz));
+    check(false, () => test2b(boz));
+    check(expectedResult, () => test3a(boz));
+    check(expectedResult, () => test3b(boz));
+  }
+}
+
+main() {
+  new C<bool>().test('bool', true);
+  new C<int>().test('int', false);
+  new C<dynamic>().test('dynamic', false);
+  new C<Object>().test('Object', false);
+  new C<Null>().test('Null', isWeakMode);
+  new C<Never>().test('Null', true);
+}
diff --git a/tests/language/function_subtype/closure0_test.dart b/tests/language/function_subtype/closure0_test.dart
new file mode 100644
index 0000000..bfb29a0
--- /dev/null
+++ b/tests/language/function_subtype/closure0_test.dart
@@ -0,0 +1,27 @@
+// Copyright (c) 2013, the Dart project authors.  Please see the AUTHORS file
+// 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 test program for constructors and initializers.
+
+// Check function subtyping of static functions.
+
+import 'package:expect/expect.dart';
+
+typedef I<T> f2<T>();
+
+class X {
+  static J<bool> f1() => throw 'uncalled';
+}
+
+class C<T> {
+  C(f2<T> f);
+}
+
+class I<T> {}
+
+class J<T> extends I<int> {}
+
+main() {
+  new C<int>(X.f1);
+  Expect.throwsTypeError(() => new C<bool>(X.f1 as dynamic));
+}
diff --git a/tests/language/function_subtype/closure1_test.dart b/tests/language/function_subtype/closure1_test.dart
new file mode 100644
index 0000000..b4addb8
--- /dev/null
+++ b/tests/language/function_subtype/closure1_test.dart
@@ -0,0 +1,27 @@
+// Copyright (c) 2013, the Dart project authors.  Please see the AUTHORS file
+// 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 test program for constructors and initializers.
+
+// Check function subtyping of dynamic closures.
+
+import 'package:expect/expect.dart';
+
+typedef I<T> f2<T>();
+
+class X {
+  J<bool> f1() => throw 'uncalled';
+}
+
+class C<T> {
+  C(f2<T> f);
+}
+
+class I<T> {}
+
+class J<T> extends I<int> {}
+
+main() {
+  new C<int>(new X().f1);
+  Expect.throwsTypeError(() => new C<bool>(new X().f1 as dynamic));
+}
diff --git a/tests/language/function_subtype/factory0_test.dart b/tests/language/function_subtype/factory0_test.dart
new file mode 100644
index 0000000..18c3d11
--- /dev/null
+++ b/tests/language/function_subtype/factory0_test.dart
@@ -0,0 +1,27 @@
+// Copyright (c) 2013, the Dart project authors.  Please see the AUTHORS file
+// 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 test program for constructors and initializers.
+
+// Check function subtyping with type variables in factory constructors.
+
+import 'package:expect/expect.dart';
+
+typedef void Foo<T>(T t);
+
+class C<T> {
+  factory C(foo) {
+    if (foo is Foo<T>) {
+      return new C.internal();
+    }
+    throw 'not Foo<$T>';
+  }
+  C.internal();
+}
+
+void method(String s) {}
+
+void main() {
+  Expect.isNotNull(new C<String>(method));
+  Expect.throws(() => new C<bool>(method), (error) => error == 'not Foo<bool>');
+}
diff --git a/tests/language/function_subtype/factory1_test.dart b/tests/language/function_subtype/factory1_test.dart
new file mode 100644
index 0000000..dd7022a
--- /dev/null
+++ b/tests/language/function_subtype/factory1_test.dart
@@ -0,0 +1,20 @@
+// Copyright (c) 2013, the Dart project authors.  Please see the AUTHORS file
+// 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 test program for constructors and initializers.
+
+// Check function subtyping with type variables in factory constructors.
+
+import 'package:expect/expect.dart';
+
+class C<T> {
+  factory C(void foo(T t)) => new C.internal();
+  C.internal();
+}
+
+void method(String s) {}
+
+void main() {
+  Expect.isNotNull(new C<String>(method));
+  Expect.throwsTypeError(() => new C<bool>(method as dynamic));
+}
diff --git a/tests/language/function_subtype/function_subtype0_test.dart b/tests/language/function_subtype/function_subtype0_test.dart
new file mode 100644
index 0000000..fc9c708
--- /dev/null
+++ b/tests/language/function_subtype/function_subtype0_test.dart
@@ -0,0 +1,87 @@
+// Copyright (c) 2013, the Dart project authors.  Please see the AUTHORS file
+// 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 test program for constructors and initializers.
+
+// Check function subtyping.
+
+import 'package:expect/expect.dart';
+
+typedef t__();
+typedef void t_void_();
+typedef void t_void_2();
+typedef int t_int_();
+typedef int t_int_2();
+typedef Object t_Object_();
+typedef double t_double_();
+typedef void t_void__int(int i);
+typedef int t_int__int(int i);
+typedef int t_int__int2(int i);
+typedef int t_int__Object(Object o);
+typedef Object t_Object__int(int i);
+typedef int t_int__double(double d);
+typedef int t_int__int_int(int i1, int i2);
+typedef void t_inline_void_(void f());
+typedef void t_inline_void__int(void f(int i));
+
+void _() => null;
+void void_() {}
+void void_2() {}
+int int_() => 0;
+int int_2() => 0;
+Object Object_() => Object();
+double double_() => 0.0;
+void void__int(int i) {}
+int int__int(int i) => 0;
+int int__int2(int i) => 0;
+int int__Object(Object o) => 0;
+Object Object__int(int i) => Object();
+int int__double(double d) => 0;
+int int__int_int(int i1, int i2) => 0;
+void inline_void_(void f()) {}
+void inline_void__int(void f(int i)) {}
+
+main() {
+  // () -> int <: Function
+  Expect.isTrue(int_ is Function);
+  // () -> dynamic <: () -> dynamic
+  Expect.isTrue(_ is t__);
+  // () -> dynamic <: () -> void
+  Expect.isTrue(_ is t_void_);
+  // () -> void <: () -> dynamic
+  Expect.isTrue(void_ is t__);
+  // () -> int <: () -> void
+  Expect.isTrue(int_ is t_void_);
+  // () -> void <: () -> int
+  Expect.isFalse(void_ is t_int_);
+  // () -> void <: () -> void
+  Expect.isTrue(void_ is t_void_2);
+  // () -> int <: () -> int
+  Expect.isTrue(int_ is t_int_2);
+  // () -> int <: () -> Object
+  Expect.isTrue(int_ is t_Object_);
+  // () -> int <: () -> double
+  Expect.isFalse(int_ is t_double_);
+  // () -> int <: (int) -> void
+  Expect.isFalse(int_ is t_void__int);
+  // () -> void <: (int) -> int
+  Expect.isFalse(void_ is t_int__int);
+  // () -> void <: (int) -> void
+  Expect.isFalse(void_ is t_void__int);
+  // (int) -> int <: (int) -> int
+  Expect.isTrue(int__int is t_int__int2);
+  // (Object) -> int <: (int) -> Object
+  Expect.isTrue(int__Object is t_Object__int);
+  // (int) -> int <: (double) -> int
+  Expect.isFalse(int__int is t_int__double);
+  // () -> int <: (int) -> int
+  Expect.isFalse(int_ is t_int__int);
+  // (int) -> int <: (int,int) -> int
+  Expect.isFalse(int__int is t_int__int_int);
+  // (int,int) -> int <: (int) -> int
+  Expect.isFalse(int__int_int is t_int__int);
+  // (()->void) -> void <: ((int)->void) -> void
+  Expect.isFalse(inline_void_ is t_inline_void__int);
+  // ((int)->void) -> void <: (()->void) -> void
+  Expect.isFalse(inline_void__int is t_inline_void_);
+}
diff --git a/tests/language/function_subtype/function_subtype1_test.dart b/tests/language/function_subtype/function_subtype1_test.dart
new file mode 100644
index 0000000..a7bd199
--- /dev/null
+++ b/tests/language/function_subtype/function_subtype1_test.dart
@@ -0,0 +1,74 @@
+// Copyright (c) 2013, the Dart project authors.  Please see the AUTHORS file
+// 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 test program for constructors and initializers.
+
+// Check function subtyping.
+
+import 'package:expect/expect.dart';
+
+class C<T> {}
+
+typedef _();
+typedef void void_();
+typedef void void_2();
+typedef int int_();
+typedef int int_2();
+typedef Object Object_();
+typedef double double_();
+typedef void void__int(int i);
+typedef int int__int(int i);
+typedef int int__int2(int i);
+typedef int int__Object(Object o);
+typedef Object Object__int(int i);
+typedef int int__double(double d);
+typedef int int__int_int(int i1, int i2);
+typedef void inline_void_(void f());
+typedef void inline_void__int(void f(int i));
+
+main() {
+  // () -> int <: Function
+  Expect.isTrue(new C<int_>() is C<Function>);
+  // Function <: () -> int
+  Expect.isFalse(new C<Function>() is C<int_>);
+  // () -> dynamic <: () -> dynamic
+  Expect.isTrue(new C<_>() is C<_>);
+  // () -> dynamic <: () -> void
+  Expect.isTrue(new C<_>() is C<void_>);
+  // () -> void <: () -> dynamic
+  Expect.isTrue(new C<void_>() is C<_>);
+  // () -> int <: () -> void
+  Expect.isTrue(new C<int_>() is C<void_>);
+  // () -> void <: () -> int
+  Expect.isFalse(new C<void_>() is C<int_>);
+  // () -> void <: () -> void
+  Expect.isTrue(new C<void_>() is C<void_2>);
+  // () -> int <: () -> int
+  Expect.isTrue(new C<int_>() is C<int_2>);
+  // () -> int <: () -> Object
+  Expect.isTrue(new C<int_>() is C<Object_>);
+  // () -> int <: () -> double
+  Expect.isFalse(new C<int_>() is C<double_>);
+  // () -> int <: (int) -> void
+  Expect.isFalse(new C<int_>() is C<void__int>);
+  // () -> void <: (int) -> int
+  Expect.isFalse(new C<void_>() is C<int__int>);
+  // () -> void <: (int) -> void
+  Expect.isFalse(new C<void_>() is C<void__int>);
+  // (int) -> int <: (int) -> int
+  Expect.isTrue(new C<int__int>() is C<int__int2>);
+  // (Object) -> int <: (int) -> Object
+  Expect.isTrue(new C<int__Object>() is C<Object__int>);
+  // (int) -> int <: (double) -> int
+  Expect.isFalse(new C<int__int>() is C<int__double>);
+  // () -> int <: (int) -> int
+  Expect.isFalse(new C<int_>() is C<int__int>);
+  // (int) -> int <: (int,int) -> int
+  Expect.isFalse(new C<int__int>() is C<int__int_int>);
+  // (int,int) -> int <: (int) -> int
+  Expect.isFalse(new C<int__int_int>() is C<int__int>);
+  // (()->void) -> void <: ((int)->void) -> void
+  Expect.isFalse(new C<inline_void_>() is C<inline_void__int>);
+  // ((int)->void) -> void <: (()->void) -> void
+  Expect.isFalse(new C<inline_void__int>() is C<inline_void_>);
+}
diff --git a/tests/language/function_subtype/function_subtype2_test.dart b/tests/language/function_subtype/function_subtype2_test.dart
new file mode 100644
index 0000000..f876303
--- /dev/null
+++ b/tests/language/function_subtype/function_subtype2_test.dart
@@ -0,0 +1,140 @@
+// Copyright (c) 2013, the Dart project authors.  Please see the AUTHORS file
+// 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 test program for constructors and initializers.
+
+// Check function subtyping for optional parameters.
+
+import 'package:expect/expect.dart';
+
+typedef void T1(int? a, int? b);
+typedef void T2(int? a, [int? b]);
+typedef void T3([int? a, int? b]);
+typedef void T4(int? a, [int? b, int? c]);
+typedef void T5([int? a, int? b, int? c]);
+
+class C<T, S, U> {
+  get m1 => (T? a, S? b) {};
+  get m2 => (T? a, [S? b]) {};
+  get m3 => ([T? a, S? b]) {};
+  get m4 => (T? a, [S? b, U? c]) {};
+  get m5 => ([T? a, S? b, U? c]) {};
+}
+
+main() {
+  var c1 = new C<int, int, int>();
+  Expect.isTrue(c1.m1 is T1, "(int,int)->void is (int,int)->void");
+  Expect.isFalse(c1.m1 is T2, "(int,int)->void is not (int,[int])->void");
+  Expect.isFalse(c1.m1 is T3, "(int,int)->void is not ([int,int])->void");
+  Expect.isFalse(c1.m1 is T4, "(int,int)->void is not (int,[int,int])->void");
+  Expect.isFalse(c1.m1 is T5, "(int,int)->void is not ([int,int,int])->void");
+
+  Expect.isTrue(c1.m2 is T1, "(int,[int])->void is (int,int)->void");
+  Expect.isTrue(c1.m2 is T2, "(int,[int])->void is (int,[int])->void");
+  Expect.isFalse(c1.m2 is T3, "(int,[int])->void is not ([int,int])->void");
+  Expect.isFalse(c1.m2 is T4, "(int,[int])->void is not (int,[int,int])->void");
+  Expect.isFalse(c1.m2 is T5, "(int,[int])->void is not ([int,int,int])->void");
+
+  Expect.isTrue(c1.m3 is T1, "([int,int])->void is (int,int)->void");
+  Expect.isTrue(c1.m3 is T2, "([int,int])->void is (int,[int])->void");
+  Expect.isTrue(c1.m3 is T3, "([int,int])->void is ([int,int])->void");
+  Expect.isFalse(c1.m3 is T4, "([int,int])->void is not (int,[int,int])->void");
+  Expect.isFalse(c1.m3 is T5, "([int,int])->void is not ([int,int,int])->void");
+
+  Expect.isTrue(c1.m4 is T1, "(int,[int,int])->void is (int,int)->void");
+  Expect.isTrue(c1.m4 is T2, "(int,[int,int])->void is (int,[int])->void");
+  Expect.isFalse(c1.m4 is T3, "(int,[int,int])->void is not ([int,int])->void");
+  Expect.isTrue(c1.m4 is T4, "(int,[int,int])->void is (int,[int,int])->void");
+  Expect.isFalse(
+      c1.m4 is T5, "(int,[int,int])->void is not ([int,int,int])->void");
+
+  Expect.isTrue(c1.m5 is T1, "([int,int,int])->void is (int,int)->void");
+  Expect.isTrue(c1.m5 is T2, "([int,int,int])->void is (int,[int])->void");
+  Expect.isTrue(c1.m5 is T3, "([int,int,int])->void is ([int,int])->void");
+  Expect.isTrue(c1.m5 is T4, "([int,int,int])->void is (int,[int,int])->void");
+  Expect.isTrue(c1.m5 is T5, "([int,int,int])->void is ([int,int,int])->void");
+
+  var c2 = new C<int, double, int>();
+  Expect.isFalse(c2.m1 is T1, "(int,double)->void is not (int,int)->void");
+  Expect.isFalse(
+      c2.m1 is T2, "(int,double)->void is not not (int,[int])->void");
+  Expect.isFalse(c2.m1 is T3, "(int,double)->void is not ([int,int])->void");
+  Expect.isFalse(
+      c2.m1 is T4, "(int,double)->void is not (int,[int,int])->void");
+  Expect.isFalse(
+      c2.m1 is T5, "(int,double)->void is not ([int,int,int])->void");
+
+  Expect.isFalse(c2.m2 is T1, "(int,[double])->void is not (int,int)->void");
+  Expect.isFalse(c2.m2 is T2, "(int,[double])->void is not (int,[int])->void");
+  Expect.isFalse(c2.m2 is T3, "(int,[double])->void is not ([int,int])->void");
+  Expect.isFalse(
+      c2.m2 is T4, "(int,[double])->void is not (int,[int,int])->void");
+  Expect.isFalse(
+      c2.m2 is T5, "(int,[double])->void is not ([int,int,int])->void");
+
+  Expect.isFalse(c2.m3 is T1, "([int,double])->void is not (int,int)->void");
+  Expect.isFalse(c2.m3 is T2, "([int,double])->void is not (int,[int])->void");
+  Expect.isFalse(c2.m3 is T3, "([int,double])->void is not ([int,int])->void");
+  Expect.isFalse(
+      c2.m3 is T4, "([int,double])->void is not (int,[int,int])->void");
+  Expect.isFalse(
+      c2.m3 is T5, "([int,double])->void is not ([int,int,int])->void");
+
+  Expect.isFalse(
+      c2.m4 is T1, "(int,[double,int])->void is not (int,int)->void");
+  Expect.isFalse(
+      c2.m4 is T2, "(int,[double,int])->void is not (int,[int])->void");
+  Expect.isFalse(
+      c2.m4 is T3, "(int,[double,int])->void is not ([int,int])->void");
+  Expect.isFalse(
+      c2.m4 is T4, "(int,[double,int])->void is (int,[int,int])->void");
+  Expect.isFalse(
+      c2.m4 is T5, "(int,[double,int])->void is ([int,int,int])->void");
+
+  Expect.isFalse(
+      c2.m5 is T1, "([int,double,int])->void is not (int,int)->void");
+  Expect.isFalse(
+      c2.m5 is T2, "([int,double,int])->void is not (int,[int])->void");
+  Expect.isFalse(
+      c2.m5 is T3, "([int,double,int])->void is not ([int,int])->void");
+  Expect.isFalse(
+      c2.m5 is T4, "([int,double,int])->void is (int,[int,int])->void");
+  Expect.isFalse(
+      c2.m5 is T5, "([int,double,int])->void is ([int,int,int])->void");
+
+  var c3 = new C<int, int, double>();
+  Expect.isTrue(c3.m1 is T1, "(int,int)->void is (int,int)->void");
+  Expect.isFalse(c3.m1 is T2, "(int,int)->void is not (int,[int])->void");
+  Expect.isFalse(c3.m1 is T3, "(int,int)->void is not ([int,int])->void");
+  Expect.isFalse(c3.m1 is T4, "(int,int)->void is not (int,[int,int])->void");
+  Expect.isFalse(c3.m1 is T5, "(int,int)->void is not ([int,int,int])->void");
+
+  Expect.isTrue(c3.m2 is T1, "(int,[int])->void is (int,int)->void");
+  Expect.isTrue(c3.m2 is T2, "(int,[int])->void is (int,[int])->void");
+  Expect.isFalse(c3.m2 is T3, "(int,[int])->void is not ([int,int])->void");
+  Expect.isFalse(c3.m2 is T4, "(int,[int])->void is not (int,[int,int])->void");
+  Expect.isFalse(c3.m2 is T5, "(int,[int])->void is not ([int,int,int])->void");
+
+  Expect.isTrue(c3.m3 is T1, "([int,int])->void is (int,int)->void");
+  Expect.isTrue(c3.m3 is T2, "([int,int])->void is (int,[int])->void");
+  Expect.isTrue(c3.m3 is T3, "([int,int])->void is ([int,int])->void");
+  Expect.isFalse(c3.m3 is T4, "([int,int])->void is not (int,[int,int])->void");
+  Expect.isFalse(c3.m3 is T5, "([int,int])->void is not ([int,int,int])->void");
+
+  Expect.isTrue(c3.m4 is T1, "(int,[int,double])->void is (int,int)->void");
+  Expect.isTrue(c3.m4 is T2, "(int,[int,double])->void is (int,[int])->void");
+  Expect.isFalse(
+      c3.m4 is T3, "(int,[int,double])->void is not ([int,int])->void");
+  Expect.isFalse(
+      c3.m4 is T4, "(int,[int,double])->void is (int,[int,int])->void");
+  Expect.isFalse(
+      c3.m4 is T5, "(int,[int,double])->void is ([int,int,int])->void");
+
+  Expect.isTrue(c3.m5 is T1, "([int,int,double])->void is (int,int)->void");
+  Expect.isTrue(c3.m5 is T2, "([int,int,double])->void is (int,[int])->void");
+  Expect.isTrue(c3.m5 is T3, "([int,int,double])->void is ([int,int])->void");
+  Expect.isFalse(
+      c3.m5 is T4, "([int,int,double])->void is (int,[int,int])->void");
+  Expect.isFalse(
+      c3.m5 is T5, "([int,int,double])->void is ([int,int,int])->void");
+}
diff --git a/tests/language/function_subtype/function_subtype3_test.dart b/tests/language/function_subtype/function_subtype3_test.dart
new file mode 100644
index 0000000..09bc65f
--- /dev/null
+++ b/tests/language/function_subtype/function_subtype3_test.dart
@@ -0,0 +1,51 @@
+// Copyright (c) 2015, the Dart project authors.  Please see the AUTHORS file
+// 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.
+
+import 'package:expect/expect.dart';
+
+class FunctionLike<T> {
+  T call(T arg) {
+    return arg;
+  }
+}
+
+class Foo<T> {
+  testString() => new FunctionLike<String>() is T;
+  testInt() => new FunctionLike<int>() is T;
+}
+
+class Bar<T> {
+  testString() {
+    Function f = new FunctionLike<String>();
+    return f is T;
+  }
+
+  testInt() {
+    Function f = new FunctionLike<int>();
+    return f is T;
+  }
+}
+
+typedef String ReturnString(Object arg);
+typedef int ReturnInt(Object arg);
+
+main() {
+  {
+    var stringFoo = new Foo<ReturnString>();
+    var intFoo = new Foo<ReturnInt>();
+    Expect.isFalse(stringFoo.testString());
+    Expect.isFalse(stringFoo.testInt());
+    Expect.isFalse(intFoo.testString());
+    Expect.isFalse(intFoo.testInt());
+  }
+
+  {
+    var stringBar = new Bar<ReturnString>();
+    var intBar = new Bar<ReturnInt>();
+    Expect.isTrue(stringBar.testString());
+    Expect.isFalse(stringBar.testInt());
+    Expect.isFalse(intBar.testString());
+    Expect.isTrue(intBar.testInt());
+  }
+}
diff --git a/tests/language/function_subtype/inline0_test.dart b/tests/language/function_subtype/inline0_test.dart
new file mode 100644
index 0000000..4e99998
--- /dev/null
+++ b/tests/language/function_subtype/inline0_test.dart
@@ -0,0 +1,47 @@
+// Copyright (c) 2013, the Dart project authors.  Please see the AUTHORS file
+// 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 test program for constructors and initializers.
+
+// Check function subtyping for generic bound closures.
+
+import 'package:expect/expect.dart';
+
+typedef void Foo(bool a, [String b]);
+typedef void Bar(bool a, [String b]);
+typedef void Baz(bool a, {String b});
+typedef int Boz(bool a);
+
+class C<T> {
+  void test(String nameOfT, bool expectedResult, bool expectedBozResult) {
+    Expect.equals(expectedResult, (T a, [String b = '']) {} is Foo,
+        '($nameOfT,[String])->void is Foo');
+    Expect.equals(expectedResult, (T a, [String b = '']) {} is Bar,
+        '($nameOfT,[String])->void is Bar');
+    Expect.isFalse(
+        (T a, [String b = '']) {} is Baz, '($nameOfT,[String])->void is Baz');
+
+    // Boz returns a non-nullable int, so a void function is only of that type
+    // in weak mode.
+    Expect.equals(expectedBozResult, (T a, [String b = '']) {} is Boz,
+        '($nameOfT,[String])->void is Boz');
+
+    Expect.isFalse(
+        (T a, {String b = ''}) {} is Foo, '($nameOfT,{b:String})->void is Foo');
+    Expect.isFalse(
+        (T a, {String b = ''}) {} is Bar, '($nameOfT,{b:String})->void is Bar');
+    Expect.equals(expectedResult, (T a, {String b = ''}) {} is Baz,
+        '($nameOfT,{b:String})->void is Baz');
+
+    // Boz returns a non-nullable int, so a void function is only of that type
+    // in weak mode.
+    Expect.equals(expectedBozResult, (T a, {String b = ''}) {} is Boz,
+        '($nameOfT,{b:String})->void is Boz');
+  }
+}
+
+main() {
+  new C<bool>().test('bool', true, isWeakMode);
+  new C<int>().test('int', false, false);
+  new C<dynamic>().test('dynamic', true, isWeakMode);
+}
diff --git a/tests/language/function_subtype/inline1_test.dart b/tests/language/function_subtype/inline1_test.dart
new file mode 100644
index 0000000..487c63d
--- /dev/null
+++ b/tests/language/function_subtype/inline1_test.dart
@@ -0,0 +1,25 @@
+// Copyright (c) 2013, the Dart project authors.  Please see the AUTHORS file
+// 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 test program for constructors and initializers.
+
+// Check function subtyping.
+
+import 'package:expect/expect.dart';
+
+class A {}
+
+class B extends A {}
+
+class C extends A {}
+
+class Class<K, V> {
+  void forEach(void f(K k, V v)) {}
+}
+
+main() {
+  Class<B, C> c = new Class<B, C>();
+  c.forEach((A a, A b) {});
+  c.forEach((B a, C b) {});
+  Expect.throwsTypeError(() => c.forEach((A a, B b) {} as dynamic));
+}
diff --git a/tests/language/function_subtype/inline2_test.dart b/tests/language/function_subtype/inline2_test.dart
new file mode 100644
index 0000000..a3f4078
--- /dev/null
+++ b/tests/language/function_subtype/inline2_test.dart
@@ -0,0 +1,45 @@
+// Copyright (c) 2013, the Dart project authors.  Please see the AUTHORS file
+// 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 test program for constructors and initializers.
+
+// Check function subtyping of inlined function typed parameters.
+import 'package:expect/expect.dart';
+
+import '../dynamic_type_helper.dart';
+
+class C {
+  var field;
+  C.c1(int this.field()?);
+  C.c2({int this.field()?});
+  C.c3({int field()?: null});
+  C.c4({int this.field()?: null});
+  C.c5([int this.field()?]);
+  C.c6([int field()? = null]);
+  C.c7([int this.field()? = null]);
+}
+
+void test(var f, String constructorName) {
+  testDynamicTypeError(false, () => f(m1), "'new C.$constructorName(m1)'");
+  testDynamicTypeError(true, () => f(m2), "'new C.$constructorName(m2)'");
+  testDynamicTypeError(
+      isStrongMode, () => f(m3), "'new C.$constructorName(m3)'");
+  testDynamicTypeError(true, () => f(m4), "'new C.$constructorName(m4)'");
+  testDynamicTypeError(false, () => f(m5), "'new C.$constructorName(m5)'");
+}
+
+int m1() => -1;
+String m2() => '';
+Null m3() => null;
+Null m4(int i) => null;
+Never m5() => throw 'never';
+
+main() {
+  test((m) => new C.c1(m), 'c1');
+  test((m) => new C.c2(field: m), 'c2');
+  test((m) => new C.c3(field: m), 'c3');
+  test((m) => new C.c4(field: m), 'c4');
+  test((m) => new C.c5(m), 'c5');
+  test((m) => new C.c6(m), 'c6');
+  test((m) => new C.c7(m), 'c7');
+}
diff --git a/tests/language/function_subtype/local0_test.dart b/tests/language/function_subtype/local0_test.dart
new file mode 100644
index 0000000..3107743
--- /dev/null
+++ b/tests/language/function_subtype/local0_test.dart
@@ -0,0 +1,34 @@
+// Copyright (c) 2013, the Dart project authors.  Please see the AUTHORS file
+// 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 test program for constructors and initializers.
+
+// Check function subtyping for local functions.
+
+import 'package:expect/expect.dart';
+
+typedef int Foo(bool a, [String b]);
+typedef int Bar(bool a, [String b]);
+typedef int Baz(bool a, {String b});
+typedef int Boz(bool a);
+
+main() {
+  int foo(bool a, [String b = '']) => -1;
+  int baz(bool a, {String b = ''}) => -1;
+  int boz(bool a, {int b = -1}) => -1;
+
+  Expect.isTrue(foo is Foo, 'foo is Foo');
+  Expect.isTrue(foo is Bar, 'foo is Bar');
+  Expect.isFalse(foo is Baz, 'foo is Baz');
+  Expect.isTrue(foo is Boz, 'foo is Boz');
+
+  Expect.isFalse(baz is Foo, 'baz is Foo');
+  Expect.isFalse(baz is Bar, 'baz is Bar');
+  Expect.isTrue(baz is Baz, 'baz is Baz');
+  Expect.isTrue(baz is Boz, 'baz is Boz');
+
+  Expect.isFalse(boz is Foo, 'boz is Foo');
+  Expect.isFalse(boz is Bar, 'boz is Bar');
+  Expect.isFalse(boz is Baz, 'boz is Baz');
+  Expect.isTrue(boz is Boz, 'boz is Boz');
+}
diff --git a/tests/language/function_subtype/local1_test.dart b/tests/language/function_subtype/local1_test.dart
new file mode 100644
index 0000000..5458c10
--- /dev/null
+++ b/tests/language/function_subtype/local1_test.dart
@@ -0,0 +1,48 @@
+// Copyright (c) 2013, the Dart project authors.  Please see the AUTHORS file
+// 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 test program for constructors and initializers.
+
+// Check function subtyping for local functions against generic typedefs.
+
+import 'package:expect/expect.dart';
+
+typedef int Foo<T>(T a, [String b]);
+typedef int Bar<T>(T a, [String b]);
+typedef int Baz<T>(T a, {String b});
+typedef int Boz<T>(T a);
+
+main() {
+  int foo(bool a, [String b = '']) => -1;
+  int baz(bool a, {String b = ''}) => -1;
+
+  Expect.isTrue(foo is Foo<bool>, 'foo is Foo<bool>');
+  Expect.isTrue(foo is Bar<bool>, 'foo is Bar<bool>');
+  Expect.isFalse(foo is Baz<bool>, 'foo is Baz<bool>');
+  Expect.isTrue(foo is Boz<bool>, 'foo is Boz<bool>');
+
+  Expect.isFalse(foo is Foo<int>, 'foo is Foo<int>');
+  Expect.isFalse(foo is Bar<int>, 'foo is Bar<int>');
+  Expect.isFalse(foo is Baz<int>, 'foo is Baz<int>');
+  Expect.isFalse(foo is Boz<int>, 'foo is Boz<int>');
+
+  Expect.isFalse(foo is Foo, 'foo is Foo');
+  Expect.isFalse(foo is Bar, 'foo is Bar');
+  Expect.isFalse(foo is Baz, 'foo is Baz');
+  Expect.isFalse(foo is Boz, 'foo is Boz');
+
+  Expect.isFalse(baz is Foo<bool>, 'baz is Foo<bool>');
+  Expect.isFalse(baz is Bar<bool>, 'baz is Bar<bool>');
+  Expect.isTrue(baz is Baz<bool>, 'baz is Baz<bool>');
+  Expect.isTrue(baz is Boz<bool>, 'baz is Boz<bool>');
+
+  Expect.isFalse(baz is Foo<int>, 'baz is Foo<int>');
+  Expect.isFalse(baz is Bar<int>, 'baz is Bar<int>');
+  Expect.isFalse(baz is Baz<int>, 'baz is Baz<int>');
+  Expect.isFalse(baz is Boz<int>, 'baz is Boz<int>');
+
+  Expect.isFalse(baz is Foo, 'baz is Foo');
+  Expect.isFalse(baz is Bar, 'baz is Bar');
+  Expect.isFalse(baz is Baz, 'baz is Baz');
+  Expect.isFalse(baz is Boz, 'baz is Boz');
+}
diff --git a/tests/language/function_subtype/local2_test.dart b/tests/language/function_subtype/local2_test.dart
new file mode 100644
index 0000000..7b0d19d
--- /dev/null
+++ b/tests/language/function_subtype/local2_test.dart
@@ -0,0 +1,43 @@
+// Copyright (c) 2013, the Dart project authors.  Please see the AUTHORS file
+// 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 test program for constructors and initializers.
+
+// Check function subtyping for local functions on generic type against generic
+// typedefs.
+
+import 'package:expect/expect.dart';
+
+typedef int Foo<T>(T a, [String b]);
+typedef int Bar<T>(T a, [String b]);
+typedef int Baz<T>(T a, {String b});
+typedef int Boz<T>(T a);
+typedef int Biz<T>(T a, int b);
+
+class C<T> {
+  void test(String nameOfT, bool expectedResult) {
+    int foo(bool a, [String b = '']) => -1;
+    int baz(bool a, {String b = ''}) => -1;
+
+    Expect.equals(expectedResult, foo is Foo<T>, 'foo is Foo<$nameOfT>');
+    Expect.equals(expectedResult, foo is Bar<T>, 'foo is Bar<$nameOfT>');
+    Expect.isFalse(foo is Baz<T>, 'foo is Baz<$nameOfT>');
+    Expect.equals(expectedResult, foo is Boz<T>, 'foo is Boz<$nameOfT>');
+    Expect.isFalse(foo is Biz<T>, 'foo is Biz<$nameOfT>');
+
+    Expect.isFalse(baz is Foo<T>, 'baz is Foo<$nameOfT>');
+    Expect.isFalse(baz is Bar<T>, 'baz is Bar<$nameOfT>');
+    Expect.equals(expectedResult, baz is Baz<T>, 'baz is Baz<$nameOfT>');
+    Expect.equals(expectedResult, baz is Boz<T>, 'baz is Boz<$nameOfT>');
+    Expect.isFalse(baz is Biz<T>, 'bar is Biz<$nameOfT>');
+  }
+}
+
+main() {
+  new C<bool>().test('bool', true);
+  new C<int>().test('int', false);
+  new C<dynamic>().test('dynamic', false);
+  new C<Object>().test('Object', false);
+  new C<Null>().test('Null', isWeakMode);
+  new C<Never>().test('Never', true);
+}
diff --git a/tests/language/function_subtype/local3_test.dart b/tests/language/function_subtype/local3_test.dart
new file mode 100644
index 0000000..f40abbb
--- /dev/null
+++ b/tests/language/function_subtype/local3_test.dart
@@ -0,0 +1,36 @@
+// Copyright (c) 2013, the Dart project authors.  Please see the AUTHORS file
+// 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 test program for constructors and initializers.
+
+// Check function subtyping for generic bound closures.
+
+import 'package:expect/expect.dart';
+
+typedef void Foo(bool a, [String b]);
+typedef void Bar(bool a, [String b]);
+typedef void Baz(bool a, {String b});
+typedef int Boz(bool a);
+
+class C<T> {
+  void test(String nameOfT, bool expectedResult) {
+    void foo(T a, [String b = '']) {}
+    void baz(T a, {String b = ''}) {}
+
+    Expect.equals(expectedResult, foo is Foo, 'C<$nameOfT>.foo is Foo');
+    Expect.equals(expectedResult, foo is Bar, 'C<$nameOfT>.foo is Bar');
+    Expect.isFalse(foo is Baz, 'C<$nameOfT>.foo is Baz');
+    Expect.isFalse(foo is Boz, 'C<$nameOfT>.foo is Boz');
+
+    Expect.isFalse(baz is Foo, 'C<$nameOfT>.baz is Foo');
+    Expect.isFalse(baz is Bar, 'C<$nameOfT>.baz is Bar');
+    Expect.equals(expectedResult, baz is Baz, 'C<$nameOfT>.baz is Baz');
+    Expect.isFalse(baz is Boz, 'C<$nameOfT>.baz is Boz');
+  }
+}
+
+main() {
+  new C<bool>().test('bool', true);
+  new C<int>().test('int', false);
+  new C<dynamic>().test('dynamic', true);
+}
diff --git a/tests/language/function_subtype/local4_test.dart b/tests/language/function_subtype/local4_test.dart
new file mode 100644
index 0000000..0f255d7
--- /dev/null
+++ b/tests/language/function_subtype/local4_test.dart
@@ -0,0 +1,39 @@
+// Copyright (c) 2013, the Dart project authors.  Please see the AUTHORS file
+// 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 test program for constructors and initializers.
+
+// Check function subtyping for generic bound closures. This also tests
+// type argument substitution.
+
+import 'package:expect/expect.dart';
+
+typedef void Foo(bool a, [String b]);
+typedef void Bar(bool a, [String b]);
+typedef void Baz(bool a, {String b});
+typedef int Boz(bool a);
+
+class C<T> {
+  void test(String nameOfT, bool expectedResult) {
+    void foo(T a, [String b = '']) {}
+    void baz(T a, {String b = ''}) {}
+
+    Expect.equals(expectedResult, foo is Foo, 'C<$nameOfT>.foo is Foo');
+    Expect.equals(expectedResult, foo is Bar, 'C<$nameOfT>.foo is Bar');
+    Expect.isFalse(foo is Baz, 'C<$nameOfT>.foo is Baz');
+    Expect.isFalse(foo is Boz, 'C<$nameOfT>.foo is Boz');
+
+    Expect.isFalse(baz is Foo, 'C<$nameOfT>.baz is Foo');
+    Expect.isFalse(baz is Bar, 'C<$nameOfT>.baz is Bar');
+    Expect.equals(expectedResult, baz is Baz, 'C<$nameOfT>.baz is Baz');
+    Expect.isFalse(baz is Boz, 'C<$nameOfT>.baz is Boz');
+  }
+}
+
+class D<S, T> extends C<T> {}
+
+main() {
+  new D<String, bool>().test('bool', true);
+  new D<bool, int>().test('int', false);
+  new D().test('dynamic', true);
+}
diff --git a/tests/language/function_subtype/local5_test.dart b/tests/language/function_subtype/local5_test.dart
new file mode 100644
index 0000000..92d570f
--- /dev/null
+++ b/tests/language/function_subtype/local5_test.dart
@@ -0,0 +1,45 @@
+// Copyright (c) 2013, the Dart project authors.  Please see the AUTHORS file
+// 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 test program for constructors and initializers.
+
+// Check function subtyping for local functions on generic type against generic
+// typedefs.
+
+import 'package:expect/expect.dart';
+
+typedef int Foo<T>(T a, [String b]);
+typedef int Bar<T>(T a, [String b]);
+typedef int Baz<T>(T a, {String b});
+typedef int Boz<T>(T a);
+typedef int Biz<T>(T a, int b);
+
+class C<T> {
+  void test(String nameOfT, bool expectedResult) {
+    int foo(bool a, [String b = '']) => -1;
+    int baz(bool a, {String b = ''}) => -1;
+
+    Expect.equals(expectedResult, foo is Foo<T>, 'foo is Foo<$nameOfT>');
+    Expect.equals(expectedResult, foo is Bar<T>, 'foo is Bar<$nameOfT>');
+    Expect.isFalse(foo is Baz<T>, 'foo is Baz<$nameOfT>');
+    Expect.equals(expectedResult, foo is Boz<T>, 'foo is Boz<$nameOfT>');
+    Expect.isFalse(foo is Biz<T>, 'foo is Biz<$nameOfT>');
+
+    Expect.isFalse(baz is Foo<T>, 'baz is Foo<$nameOfT>');
+    Expect.isFalse(baz is Bar<T>, 'baz is Bar<$nameOfT>');
+    Expect.equals(expectedResult, baz is Baz<T>, 'baz is Baz<$nameOfT>');
+    Expect.equals(expectedResult, baz is Boz<T>, 'baz is Boz<$nameOfT>');
+    Expect.isFalse(baz is Biz<T>, 'bar is Biz<$nameOfT>');
+  }
+}
+
+class D<S, T> extends C<T> {}
+
+main() {
+  new D<String, bool>().test('bool', true);
+  new D<bool, int>().test('int', false);
+  new D<dynamic, dynamic>().test('dynamic', false);
+  new D<Object, Object>().test('Object', false);
+  new D<Null, Null>().test('Null', isWeakMode);
+  new D<Never, Never>().test('Never', true);
+}
diff --git a/tests/language/function_subtype/local6_test.dart b/tests/language/function_subtype/local6_test.dart
new file mode 100644
index 0000000..95817d1
--- /dev/null
+++ b/tests/language/function_subtype/local6_test.dart
@@ -0,0 +1,17 @@
+// Copyright (c) 2013, the Dart project authors.  Please see the AUTHORS file
+// 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 test program for constructors and initializers.
+// VMOptions=--no-eliminate-type-checks
+
+// Regression test for issue 12127.
+
+class C<T> {
+  void test() {
+    void foo(T a) {}
+  }
+}
+
+main() {
+  new C<bool>().test();
+}
diff --git a/tests/language/function_subtype/named1_test.dart b/tests/language/function_subtype/named1_test.dart
new file mode 100644
index 0000000..374dfc0
--- /dev/null
+++ b/tests/language/function_subtype/named1_test.dart
@@ -0,0 +1,69 @@
+// Copyright (c) 2013, the Dart project authors.  Please see the AUTHORS file
+// 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 test program for constructors and initializers.
+
+// Check function subtyping.
+
+import 'package:expect/expect.dart';
+
+void void_() {}
+void void__int(int i) {}
+void void___a_int({int a = -1}) {}
+void void___a_int2({int a = -1}) {}
+void void___b_int({int b = -1}) {}
+void void___a_Object({Object a = -1}) {}
+void void__int__a_int(int i1, {int a = -1}) {}
+void void__int__a_int2(int i1, {int a = -1}) {}
+void void___a_double({double a = -1.0}) {}
+void void___a_int_b_int({int a = -1, int b = -1}) {}
+void void___a_int_b_int_c_int({int a = -1, int b = -1, int c = -1}) {}
+void void___a_int_c_int({int a = -1, int c = -1}) {}
+void void___b_int_c_int({int b = -1, int c = -1}) {}
+void void___c_int({int c = -1}) {}
+
+typedef void t_void_();
+typedef void t_void__int(int i);
+typedef void t_void___a_int({int a});
+typedef void t_void___a_int2({int a});
+typedef void t_void___b_int({int b});
+typedef void t_void___a_Object({Object a});
+typedef void t_void__int__a_int(int i1, {int a});
+typedef void t_void__int__a_int2(int i1, {int a});
+typedef void t_void___a_double({double a});
+typedef void t_void___a_int_b_int({int a, int b});
+typedef void t_void___a_int_b_int_c_int({int a, int b, int c});
+typedef void t_void___a_int_c_int({int a, int c});
+typedef void t_void___b_int_c_int({int b, int c});
+typedef void t_void___c_int({int c});
+
+main() {
+  // Test ({int a})->void <: ()->void.
+  Expect.isTrue(void___a_int is t_void_);
+  // Test ({int a})->void <: (int)->void.
+  Expect.isFalse(void___a_int is t_void__int);
+  // Test (int)->void <: ({int a})->void.
+  Expect.isFalse(void__int is t_void___a_int);
+  // Test ({int a})->void <: ({int a})->void.
+  Expect.isTrue(void___a_int is t_void___a_int2);
+  // Test ({int a})->void <: ({int b})->void.
+  Expect.isFalse(void___a_int is t_void___b_int);
+  // Test ({Object a})->void <: ({int a})->void.
+  Expect.isTrue(void___a_Object is t_void___a_int);
+  // Test ({int a})->void <: ({Object a})->void.
+  Expect.isFalse(void___a_int is t_void___a_Object);
+  // Test (int,{int a})->void <: (int,{int a})->void.
+  Expect.isTrue(void__int__a_int is t_void__int__a_int2);
+  // Test ({int a})->void <: ({double a})->void.
+  Expect.isFalse(void___a_int is t_void___a_double);
+  // Test ({int a})->void <: ({int a,int b})->void.
+  Expect.isFalse(void___a_int is t_void___a_int_b_int);
+  // Test ({int a,int b})->void <: ({int a})->void.
+  Expect.isTrue(void___a_int_b_int is t_void___a_int);
+  // Test ({int a,int b,int c})->void <: ({int a,int c})->void.
+  Expect.isTrue(void___a_int_b_int_c_int is t_void___a_int_c_int);
+  // Test ({int a,int b,int c})->void <: ({int b,int c})->void.
+  Expect.isTrue(void___a_int_b_int_c_int is t_void___b_int_c_int);
+  // Test ({int a,int b,int c})->void <: ({int c})->void.
+  Expect.isTrue(void___a_int_b_int_c_int is t_void___c_int);
+}
diff --git a/tests/language/function_subtype/named2_test.dart b/tests/language/function_subtype/named2_test.dart
new file mode 100644
index 0000000..c74a4d4
--- /dev/null
+++ b/tests/language/function_subtype/named2_test.dart
@@ -0,0 +1,56 @@
+// Copyright (c) 2013, the Dart project authors.  Please see the AUTHORS file
+// 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 test program for constructors and initializers.
+
+// Check function subtyping.
+
+import 'package:expect/expect.dart';
+
+class C<T> {}
+
+typedef void void_();
+typedef void void__int(int i);
+typedef void void___a_int({int a});
+typedef void void___a_int2({int a});
+typedef void void___b_int({int b});
+typedef void void___a_Object({Object a});
+typedef void void__int__a_int(int i1, {int a});
+typedef void void__int__a_int2(int i1, {int a});
+typedef void void___a_double({double a});
+typedef void void___a_int_b_int({int a, int b});
+typedef void void___a_int_b_int_c_int({int a, int b, int c});
+typedef void void___a_int_c_int({int a, int c});
+typedef void void___b_int_c_int({int b, int c});
+typedef void void___c_int({int c});
+
+main() {
+  // Test ({int a})->void <: ()->void.
+  Expect.isTrue(new C<void___a_int>() is C<void_>);
+  // Test ({int a})->void <: (int)->void.
+  Expect.isFalse(new C<void___a_int>() is C<void__int>);
+  // Test (int)->void <: ({int a})->void.
+  Expect.isFalse(new C<void__int>() is C<void___a_int>);
+  // Test ({int a})->void <: ({int a})->void.
+  Expect.isTrue(new C<void___a_int>() is C<void___a_int2>);
+  // Test ({int a})->void <: ({int b})->void.
+  Expect.isFalse(new C<void___a_int>() is C<void___b_int>);
+  // Test ({Object a})->void <: ({int a})->void.
+  Expect.isTrue(new C<void___a_Object>() is C<void___a_int>);
+  // Test ({int a})->void <: ({Object a})->void.
+  Expect.isFalse(new C<void___a_int>() is C<void___a_Object>);
+  // Test (int,{int a})->void <: (int,{int a})->void.
+  Expect.isTrue(new C<void__int__a_int>() is C<void__int__a_int2>);
+  // Test ({int a})->void <: ({double a})->void.
+  Expect.isFalse(new C<void___a_int>() is C<void___a_double>);
+  // Test ({int a})->void <: ({int a,int b})->void.
+  Expect.isFalse(new C<void___a_int>() is C<void___a_int_b_int>);
+  // Test ({int a,int b})->void <: ({int a})->void.
+  Expect.isTrue(new C<void___a_int_b_int>() is C<void___a_int>);
+  // Test ({int a,int b,int c})->void <: ({int a,int c})->void.
+  Expect.isTrue(new C<void___a_int_b_int_c_int>() is C<void___a_int_c_int>);
+  // Test ({int a,int b,int c})->void <: ({int b,int c})->void.
+  Expect.isTrue(new C<void___a_int_b_int_c_int>() is C<void___b_int_c_int>);
+  // Test ({int a,int b,int c})->void <: ({int c})->void.
+  Expect.isTrue(new C<void___a_int_b_int_c_int>() is C<void___c_int>);
+}
diff --git a/tests/language/function_subtype/not0_test.dart b/tests/language/function_subtype/not0_test.dart
new file mode 100644
index 0000000..4959ece
--- /dev/null
+++ b/tests/language/function_subtype/not0_test.dart
@@ -0,0 +1,20 @@
+// Copyright (c) 2013, the Dart project authors.  Please see the AUTHORS file
+// 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 test program for constructors and initializers.
+
+// Check negative function subtyping tests.
+
+import 'package:expect/expect.dart';
+
+typedef void Foo<T>(T t);
+typedef void Bar(int i);
+
+void bar(int i) {}
+
+void main() {
+  Expect.isTrue(bar is! Foo);
+  Expect.isTrue(bar is! Foo<bool>);
+  Expect.isFalse(bar is! Foo<int>);
+  Expect.isFalse(bar is! Bar);
+}
diff --git a/tests/language/function_subtype/not1_test.dart b/tests/language/function_subtype/not1_test.dart
new file mode 100644
index 0000000..431bb76
--- /dev/null
+++ b/tests/language/function_subtype/not1_test.dart
@@ -0,0 +1,32 @@
+// Copyright (c) 2013, the Dart project authors.  Please see the AUTHORS file
+// 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 test program for constructors and initializers.
+
+// Check negative function subtyping tests.
+
+import 'package:expect/expect.dart';
+
+typedef void Foo<T>(T t);
+typedef void Bar(int i);
+
+class Class<T> {
+  void bar(T i) {}
+}
+
+void main() {
+  Expect.isFalse(new Class().bar is! Foo);
+  Expect.isFalse(new Class().bar is! Foo<bool>);
+  Expect.isFalse(new Class().bar is! Foo<int>);
+  Expect.isFalse(new Class().bar is! Bar);
+
+  Expect.isFalse(new Class<int>().bar is! Foo);
+  Expect.isFalse(new Class<int>().bar is! Foo<bool>);
+  Expect.isFalse(new Class<int>().bar is! Foo<int>);
+  Expect.isFalse(new Class<int>().bar is! Bar);
+
+  Expect.isFalse(new Class<bool>().bar is! Foo);
+  Expect.isFalse(new Class<bool>().bar is! Foo<bool>);
+  Expect.isFalse(new Class<bool>().bar is! Foo<int>);
+  Expect.isFalse(new Class<bool>().bar is! Bar);
+}
diff --git a/tests/language/function_subtype/not2_test.dart b/tests/language/function_subtype/not2_test.dart
new file mode 100644
index 0000000..03b0110
--- /dev/null
+++ b/tests/language/function_subtype/not2_test.dart
@@ -0,0 +1,29 @@
+// Copyright (c) 2013, the Dart project authors.  Please see the AUTHORS file
+// 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 test program for constructors and initializers.
+
+// Check negative function subtyping tests.
+
+import 'package:expect/expect.dart';
+
+typedef void Foo<T>(T t);
+typedef void Bar(int i);
+
+class Class<T> {
+  test(bool expectedResult, var o, String typeName) {
+    Expect.equals(expectedResult, o is! Foo<T>, "bar is! Foo<$typeName>");
+    Expect.isFalse(o is! Bar, "bar is! Bar");
+  }
+}
+
+void bar(int i) {}
+
+void main() {
+  new Class<dynamic>().test(true, bar, "dynamic");
+  new Class<Object>().test(true, bar, "Object");
+  new Class<Null>().test(isStrongMode, bar, "Null");
+  new Class<Never>().test(false, bar, "Never");
+  new Class<int>().test(false, bar, "int");
+  new Class<bool>().test(true, bar, "bool");
+}
diff --git a/tests/language/function_subtype/not3_test.dart b/tests/language/function_subtype/not3_test.dart
new file mode 100644
index 0000000..0c03826
--- /dev/null
+++ b/tests/language/function_subtype/not3_test.dart
@@ -0,0 +1,33 @@
+// Copyright (c) 2013, the Dart project authors.  Please see the AUTHORS file
+// 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 test program for constructors and initializers.
+
+// Check negative function subtyping tests.
+
+import 'package:expect/expect.dart';
+
+typedef void Foo<T>(T t);
+typedef void Bar(int i);
+
+class Class<T> {
+  test(bool expectedResult, var o, String typeName) {
+    void local() {
+      Expect.equals(expectedResult, o is! Foo<T>, "bar is! Foo<$typeName>");
+      Expect.isFalse(o is! Bar, "bar is! Bar");
+    }
+
+    local();
+  }
+}
+
+void bar(int i) {}
+
+void main() {
+  new Class<dynamic>().test(true, bar, "dynamic");
+  new Class<Object>().test(true, bar, "Object");
+  new Class<Null>().test(isStrongMode, bar, "Null");
+  new Class<Never>().test(false, bar, "Never");
+  new Class<int>().test(false, bar, "int");
+  new Class<bool>().test(true, bar, "bool");
+}
diff --git a/tests/language/function_subtype/null.dart b/tests/language/function_subtype/null.dart
new file mode 100644
index 0000000..44bdec4
--- /dev/null
+++ b/tests/language/function_subtype/null.dart
@@ -0,0 +1,17 @@
+// Copyright (c) 2013, the Dart project authors.  Please see the AUTHORS file
+// 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 test program for constructors and initializers.
+
+// Check function subtyping for null.
+
+import 'package:expect/expect.dart';
+
+typedef int Foo(bool a, [String b]);
+typedef int Bar<T>(T a, [String b]);
+
+main() {
+  Expect.isFalse(null is Foo, 'null is Foo');
+  Expect.isFalse(null is Bar<bool>, 'null is Bar<bool>');
+  Expect.isFalse(null is Bar, 'null is Bar');
+}
diff --git a/tests/language/function_subtype/optional1_test.dart b/tests/language/function_subtype/optional1_test.dart
new file mode 100644
index 0000000..50c6566
--- /dev/null
+++ b/tests/language/function_subtype/optional1_test.dart
@@ -0,0 +1,71 @@
+// Copyright (c) 2013, the Dart project authors.  Please see the AUTHORS file
+// 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 test program for constructors and initializers.
+
+// Check function subtyping.
+
+import 'package:expect/expect.dart';
+
+void void_() {}
+void void__int(int i) {}
+void void___int([int i = -1]) {}
+void void___int2([int i = -1]) {}
+void void___Object([Object o = -1]) {}
+void void__int__int(int i1, [int i2 = -1]) {}
+void void__int__int2(int i1, [int i2 = -1]) {}
+void void__int__int_int(int i1, [int i2 = -1, int i3 = -1]) {}
+void void___double(double d) {}
+void void___int_int([int i1 = -1, int i2 = -1]) {}
+void void___int_int_int([int i1 = -1, int i2 = -1, int i3 = -1]) {}
+void void___Object_int([Object o = -1, int i = -1]) {}
+
+typedef void t_void_();
+typedef void t_void__int(int i);
+typedef void t_void___int([int i]);
+typedef void t_void___int2([int i]);
+typedef void t_void___Object([Object o]);
+typedef void t_void__int__int(int i1, [int i2]);
+typedef void t_void__int__int2(int i1, [int i2]);
+typedef void t_void__int__int_int(int i1, [int i2, int i3]);
+typedef void t_void___double(double d);
+typedef void t_void___int_int([int i1, int i2]);
+typedef void t_void___int_int_int([int i1, int i2, int i3]);
+typedef void t_void___Object_int([Object o, int i]);
+
+main() {
+  // Test ([int])->void <: ()->void.
+  Expect.isTrue(void___int is t_void_);
+  // Test ([int])->void <: (int)->void.
+  Expect.isTrue(void___int is t_void__int);
+  // Test (int)->void <: ([int])->void.
+  Expect.isFalse(void__int is t_void___int);
+  // Test ([int])->void <: ([int])->void.
+  Expect.isTrue(void___int is t_void___int2);
+  // Test ([Object])->void <: ([int])->void.
+  Expect.isTrue(void___Object is t_void___int);
+  // Test ([int])->void <: ([Object])->void.
+  Expect.isFalse(void___int is t_void___Object);
+  // Test (int,[int])->void <: (int)->void.
+  Expect.isTrue(void__int__int is t_void__int);
+  // Test (int,[int])->void <: (int,[int])->void.
+  Expect.isTrue(void__int__int is t_void__int__int2);
+  // Test (int)->void <: ([int])->void.
+  Expect.isFalse(void__int is t_void___int);
+  // Test ([int,int])->void <: (int)->void.
+  Expect.isTrue(void___int_int is t_void__int);
+  // Test ([int,int])->void <: (int,[int])->void.
+  Expect.isTrue(void___int_int is t_void__int__int);
+  // Test ([int,int])->void <: (int,[int,int])->void.
+  Expect.isFalse(void___int_int is t_void__int__int_int);
+  // Test ([int,int,int])->void <: (int,[int,int])->void.
+  Expect.isTrue(void___int_int_int is t_void__int__int_int);
+  // Test ([int])->void <: ([double])->void.
+  Expect.isFalse(void___int is t_void___double);
+  // Test ([int])->void <: ([int,int])->void.
+  Expect.isFalse(void___int is t_void___int_int);
+  // Test ([int,int])->void <: ([int])->void.
+  Expect.isTrue(void___int_int is t_void___int);
+  // Test ([Object,int])->void <: ([int])->void.
+  Expect.isTrue(void___Object_int is t_void___int);
+}
diff --git a/tests/language/function_subtype/optional2_test.dart b/tests/language/function_subtype/optional2_test.dart
new file mode 100644
index 0000000..197dc0c
--- /dev/null
+++ b/tests/language/function_subtype/optional2_test.dart
@@ -0,0 +1,60 @@
+// Copyright (c) 2013, the Dart project authors.  Please see the AUTHORS file
+// 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 test program for constructors and initializers.
+
+// Check function subtyping.
+
+import 'package:expect/expect.dart';
+
+class C<T> {}
+
+typedef void void_();
+typedef void void__int(int i);
+typedef void void___int([int i]);
+typedef void void___int2([int i]);
+typedef void void___Object([Object o]);
+typedef void void__int__int(int i1, [int i2]);
+typedef void void__int__int2(int i1, [int i2]);
+typedef void void__int__int_int(int i1, [int i2, int i3]);
+typedef void void___double(double d);
+typedef void void___int_int([int i1, int i2]);
+typedef void void___int_int_int([int i1, int i2, int i3]);
+typedef void void___Object_int([Object o, int i]);
+
+main() {
+  // Test ([int])->void <: ()->void.
+  Expect.isTrue(new C<void___int>() is C<void_>);
+  // Test ([int])->void <: (int)->void.
+  Expect.isTrue(new C<void___int>() is C<void__int>);
+  // Test (int)->void <: ([int])->void.
+  Expect.isFalse(new C<void__int>() is C<void___int>);
+  // Test ([int])->void <: ([int])->void.
+  Expect.isTrue(new C<void___int>() is C<void___int2>);
+  // Test ([Object])->void <: ([int])->void.
+  Expect.isTrue(new C<void___Object>() is C<void___int>);
+  // Test ([int])->void <: ([Object])->void.
+  Expect.isFalse(new C<void___int>() is C<void___Object>);
+  // Test (int,[int])->void <: (int)->void.
+  Expect.isTrue(new C<void__int__int>() is C<void__int>);
+  // Test (int,[int])->void <: (int,[int])->void.
+  Expect.isTrue(new C<void__int__int>() is C<void__int__int2>);
+  // Test (int)->void <: ([int])->void.
+  Expect.isFalse(new C<void__int>() is C<void___int>);
+  // Test ([int,int])->void <: (int)->void.
+  Expect.isTrue(new C<void___int_int>() is C<void__int>);
+  // Test ([int,int])->void <: (int,[int])->void.
+  Expect.isTrue(new C<void___int_int>() is C<void__int__int>);
+  // Test ([int,int])->void <: (int,[int,int])->void.
+  Expect.isFalse(new C<void___int_int>() is C<void__int__int_int>);
+  // Test ([int,int,int])->void <: (int,[int,int])->void.
+  Expect.isTrue(new C<void___int_int_int>() is C<void__int__int_int>);
+  // Test ([int])->void <: ([double])->void.
+  Expect.isFalse(new C<void___int>() is C<void___double>);
+  // Test ([int])->void <: ([int,int])->void.
+  Expect.isFalse(new C<void___int>() is C<void___int_int>);
+  // Test ([int,int])->void <: ([int])->void.
+  Expect.isTrue(new C<void___int_int>() is C<void___int>);
+  // Test ([Object,int])->void <: ([int])->void.
+  Expect.isTrue(new C<void___Object_int>() is C<void___int>);
+}
diff --git a/tests/language/function_subtype/regression_ddc_588_test.dart b/tests/language/function_subtype/regression_ddc_588_test.dart
new file mode 100644
index 0000000..edf3c61
--- /dev/null
+++ b/tests/language/function_subtype/regression_ddc_588_test.dart
@@ -0,0 +1,14 @@
+import "package:expect/expect.dart";
+
+// regression test for ddc #588
+
+typedef int Int2Int(int x);
+
+void foo(List<Int2Int> list) {
+  list.forEach((f) => print(f(42)));
+}
+
+void main() {
+  dynamic l = <Function>[];
+  Expect.throwsTypeError(() => foo(l));
+}
diff --git a/tests/language/function_subtype/setter0_test.dart b/tests/language/function_subtype/setter0_test.dart
new file mode 100644
index 0000000..30bbb4e
--- /dev/null
+++ b/tests/language/function_subtype/setter0_test.dart
@@ -0,0 +1,31 @@
+// Copyright (c) 2013, the Dart project authors.  Please see the AUTHORS file
+// 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 test program for constructors and initializers.
+
+// Check function subtyping for implicit setters.
+
+import 'package:expect/expect.dart';
+
+typedef void Foo();
+
+class A<T> {}
+
+class C {
+  late Foo foo;
+  late A<int> bar;
+}
+
+class D {
+  late Foo foo;
+  late A<int> bar;
+}
+
+test(c) {
+  Expect.throwsTypeError(() => c.foo = 1);
+}
+
+void main() {
+  test(new C());
+  test(new D());
+}
diff --git a/tests/language/function_subtype/simple0_test.dart b/tests/language/function_subtype/simple0_test.dart
new file mode 100644
index 0000000..929be52
--- /dev/null
+++ b/tests/language/function_subtype/simple0_test.dart
@@ -0,0 +1,316 @@
+// Copyright (c) 2013, the Dart project authors.  Please see the AUTHORS file
+// 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 test program for constructors and initializers.
+
+// Check function subtyping of simple function types.
+
+import 'package:expect/expect.dart';
+
+typedef Args0();
+typedef Args1(a);
+typedef Args2(a, b);
+typedef Args3(a, b, c);
+typedef Args4(a, b, c, d);
+typedef Args5(a, b, c, d, e);
+typedef Args6(a, b, c, d, e, f);
+typedef Args7(a, b, c, d, e, f, g);
+typedef Args8(a, b, c, d, e, f, g, h);
+typedef Args9(a, b, c, d, e, f, g, h, i);
+typedef Args10(a, b, c, d, e, f, g, h, i, j);
+typedef Args11(a, b, c, d, e, f, g, h, i, j, k);
+typedef Args12(a, b, c, d, e, f, g, h, i, j, k, l);
+typedef Args13(a, b, c, d, e, f, g, h, i, j, k, l, m);
+typedef Args14(a, b, c, d, e, f, g, h, i, j, k, l, m, n);
+typedef Args15(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o);
+
+args0() {}
+args1(a) {}
+args2(a, b) {}
+args3(a, b, c) {}
+args4(a, b, c, d) {}
+args5(a, b, c, d, e) {}
+args6(a, b, c, d, e, f) {}
+args7(a, b, c, d, e, f, g) {}
+args8(a, b, c, d, e, f, g, h) {}
+args9(a, b, c, d, e, f, g, h, i) {}
+args10(a, b, c, d, e, f, g, h, i, j) {}
+args11(a, b, c, d, e, f, g, h, i, j, k) {}
+args12(a, b, c, d, e, f, g, h, i, j, k, l) {}
+args13(a, b, c, d, e, f, g, h, i, j, k, l, m) {}
+args14(a, b, c, d, e, f, g, h, i, j, k, l, m, n) {}
+args15(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o) {}
+
+main() {
+  Expect.isTrue(args0 is Args0);
+  Expect.isFalse(args0 is Args1);
+  Expect.isFalse(args0 is Args2);
+  Expect.isFalse(args0 is Args3);
+  Expect.isFalse(args0 is Args4);
+  Expect.isFalse(args0 is Args5);
+  Expect.isFalse(args0 is Args6);
+  Expect.isFalse(args0 is Args7);
+  Expect.isFalse(args0 is Args8);
+  Expect.isFalse(args0 is Args9);
+  Expect.isFalse(args0 is Args10);
+  Expect.isFalse(args0 is Args11);
+  Expect.isFalse(args0 is Args12);
+  Expect.isFalse(args0 is Args13);
+  Expect.isFalse(args0 is Args14);
+  Expect.isFalse(args0 is Args15);
+
+  Expect.isFalse(args1 is Args0);
+  Expect.isTrue(args1 is Args1);
+  Expect.isFalse(args1 is Args2);
+  Expect.isFalse(args1 is Args3);
+  Expect.isFalse(args1 is Args4);
+  Expect.isFalse(args1 is Args5);
+  Expect.isFalse(args1 is Args6);
+  Expect.isFalse(args1 is Args7);
+  Expect.isFalse(args1 is Args8);
+  Expect.isFalse(args1 is Args9);
+  Expect.isFalse(args1 is Args10);
+  Expect.isFalse(args1 is Args11);
+  Expect.isFalse(args1 is Args12);
+  Expect.isFalse(args1 is Args13);
+  Expect.isFalse(args1 is Args14);
+  Expect.isFalse(args1 is Args15);
+
+  Expect.isFalse(args2 is Args0);
+  Expect.isFalse(args2 is Args1);
+  Expect.isTrue(args2 is Args2);
+  Expect.isFalse(args2 is Args3);
+  Expect.isFalse(args2 is Args4);
+  Expect.isFalse(args2 is Args5);
+  Expect.isFalse(args2 is Args6);
+  Expect.isFalse(args2 is Args7);
+  Expect.isFalse(args2 is Args8);
+  Expect.isFalse(args2 is Args9);
+  Expect.isFalse(args2 is Args10);
+  Expect.isFalse(args2 is Args11);
+  Expect.isFalse(args2 is Args12);
+  Expect.isFalse(args2 is Args13);
+  Expect.isFalse(args2 is Args14);
+  Expect.isFalse(args2 is Args15);
+
+  Expect.isFalse(args3 is Args0);
+  Expect.isFalse(args3 is Args1);
+  Expect.isFalse(args3 is Args2);
+  Expect.isTrue(args3 is Args3);
+  Expect.isFalse(args3 is Args4);
+  Expect.isFalse(args3 is Args5);
+  Expect.isFalse(args3 is Args6);
+  Expect.isFalse(args3 is Args7);
+  Expect.isFalse(args3 is Args8);
+  Expect.isFalse(args3 is Args9);
+  Expect.isFalse(args3 is Args10);
+  Expect.isFalse(args3 is Args11);
+  Expect.isFalse(args3 is Args12);
+  Expect.isFalse(args3 is Args13);
+  Expect.isFalse(args3 is Args14);
+  Expect.isFalse(args3 is Args15);
+
+  Expect.isFalse(args4 is Args0);
+  Expect.isFalse(args4 is Args1);
+  Expect.isFalse(args4 is Args2);
+  Expect.isFalse(args4 is Args3);
+  Expect.isTrue(args4 is Args4);
+  Expect.isFalse(args4 is Args5);
+  Expect.isFalse(args4 is Args6);
+  Expect.isFalse(args4 is Args7);
+  Expect.isFalse(args4 is Args8);
+  Expect.isFalse(args4 is Args9);
+  Expect.isFalse(args4 is Args10);
+  Expect.isFalse(args4 is Args11);
+  Expect.isFalse(args4 is Args12);
+  Expect.isFalse(args4 is Args13);
+  Expect.isFalse(args4 is Args14);
+  Expect.isFalse(args4 is Args15);
+
+  Expect.isFalse(args5 is Args0);
+  Expect.isFalse(args5 is Args1);
+  Expect.isFalse(args5 is Args2);
+  Expect.isFalse(args5 is Args3);
+  Expect.isFalse(args5 is Args4);
+  Expect.isTrue(args5 is Args5);
+  Expect.isFalse(args5 is Args6);
+  Expect.isFalse(args5 is Args7);
+  Expect.isFalse(args5 is Args8);
+  Expect.isFalse(args5 is Args9);
+  Expect.isFalse(args5 is Args10);
+  Expect.isFalse(args5 is Args11);
+  Expect.isFalse(args5 is Args12);
+  Expect.isFalse(args5 is Args13);
+  Expect.isFalse(args5 is Args14);
+  Expect.isFalse(args5 is Args15);
+
+  Expect.isFalse(args6 is Args0);
+  Expect.isFalse(args6 is Args1);
+  Expect.isFalse(args6 is Args2);
+  Expect.isFalse(args6 is Args3);
+  Expect.isFalse(args6 is Args4);
+  Expect.isFalse(args6 is Args5);
+  Expect.isTrue(args6 is Args6);
+  Expect.isFalse(args6 is Args7);
+  Expect.isFalse(args6 is Args8);
+  Expect.isFalse(args6 is Args9);
+  Expect.isFalse(args6 is Args10);
+  Expect.isFalse(args6 is Args11);
+  Expect.isFalse(args6 is Args12);
+  Expect.isFalse(args6 is Args13);
+  Expect.isFalse(args6 is Args14);
+  Expect.isFalse(args6 is Args15);
+
+  Expect.isFalse(args7 is Args0);
+  Expect.isFalse(args7 is Args1);
+  Expect.isFalse(args7 is Args2);
+  Expect.isFalse(args7 is Args3);
+  Expect.isFalse(args7 is Args4);
+  Expect.isFalse(args7 is Args5);
+  Expect.isFalse(args7 is Args6);
+  Expect.isTrue(args7 is Args7);
+  Expect.isFalse(args7 is Args8);
+  Expect.isFalse(args7 is Args9);
+  Expect.isFalse(args7 is Args10);
+  Expect.isFalse(args7 is Args11);
+  Expect.isFalse(args7 is Args12);
+  Expect.isFalse(args7 is Args13);
+  Expect.isFalse(args7 is Args14);
+  Expect.isFalse(args7 is Args15);
+
+  Expect.isFalse(args8 is Args0);
+  Expect.isFalse(args8 is Args1);
+  Expect.isFalse(args8 is Args2);
+  Expect.isFalse(args8 is Args3);
+  Expect.isFalse(args8 is Args4);
+  Expect.isFalse(args8 is Args5);
+  Expect.isFalse(args8 is Args6);
+  Expect.isFalse(args8 is Args7);
+  Expect.isTrue(args8 is Args8);
+  Expect.isFalse(args8 is Args9);
+  Expect.isFalse(args8 is Args10);
+  Expect.isFalse(args8 is Args11);
+  Expect.isFalse(args8 is Args12);
+  Expect.isFalse(args8 is Args13);
+  Expect.isFalse(args8 is Args14);
+  Expect.isFalse(args8 is Args15);
+
+  Expect.isFalse(args9 is Args0);
+  Expect.isFalse(args9 is Args1);
+  Expect.isFalse(args9 is Args2);
+  Expect.isFalse(args9 is Args3);
+  Expect.isFalse(args9 is Args4);
+  Expect.isFalse(args9 is Args5);
+  Expect.isFalse(args9 is Args6);
+  Expect.isFalse(args9 is Args7);
+  Expect.isFalse(args9 is Args8);
+  Expect.isTrue(args9 is Args9);
+  Expect.isFalse(args9 is Args10);
+  Expect.isFalse(args9 is Args11);
+  Expect.isFalse(args9 is Args12);
+  Expect.isFalse(args9 is Args13);
+  Expect.isFalse(args9 is Args14);
+  Expect.isFalse(args9 is Args15);
+
+  Expect.isFalse(args10 is Args0);
+  Expect.isFalse(args10 is Args1);
+  Expect.isFalse(args10 is Args2);
+  Expect.isFalse(args10 is Args3);
+  Expect.isFalse(args10 is Args4);
+  Expect.isFalse(args10 is Args5);
+  Expect.isFalse(args10 is Args6);
+  Expect.isFalse(args10 is Args7);
+  Expect.isFalse(args10 is Args8);
+  Expect.isFalse(args10 is Args9);
+  Expect.isTrue(args10 is Args10);
+  Expect.isFalse(args10 is Args11);
+  Expect.isFalse(args10 is Args12);
+  Expect.isFalse(args10 is Args13);
+  Expect.isFalse(args10 is Args14);
+  Expect.isFalse(args10 is Args15);
+
+  Expect.isFalse(args11 is Args0);
+  Expect.isFalse(args11 is Args1);
+  Expect.isFalse(args11 is Args2);
+  Expect.isFalse(args11 is Args3);
+  Expect.isFalse(args11 is Args4);
+  Expect.isFalse(args11 is Args5);
+  Expect.isFalse(args11 is Args6);
+  Expect.isFalse(args11 is Args7);
+  Expect.isFalse(args11 is Args8);
+  Expect.isFalse(args11 is Args9);
+  Expect.isFalse(args11 is Args10);
+  Expect.isTrue(args11 is Args11);
+  Expect.isFalse(args11 is Args12);
+  Expect.isFalse(args11 is Args13);
+  Expect.isFalse(args11 is Args14);
+  Expect.isFalse(args11 is Args15);
+
+  Expect.isFalse(args12 is Args0);
+  Expect.isFalse(args12 is Args1);
+  Expect.isFalse(args12 is Args2);
+  Expect.isFalse(args12 is Args3);
+  Expect.isFalse(args12 is Args4);
+  Expect.isFalse(args12 is Args5);
+  Expect.isFalse(args12 is Args6);
+  Expect.isFalse(args12 is Args7);
+  Expect.isFalse(args12 is Args8);
+  Expect.isFalse(args12 is Args9);
+  Expect.isFalse(args12 is Args10);
+  Expect.isFalse(args12 is Args11);
+  Expect.isTrue(args12 is Args12);
+  Expect.isFalse(args12 is Args13);
+  Expect.isFalse(args12 is Args14);
+  Expect.isFalse(args12 is Args15);
+
+  Expect.isFalse(args13 is Args0);
+  Expect.isFalse(args13 is Args1);
+  Expect.isFalse(args13 is Args2);
+  Expect.isFalse(args13 is Args3);
+  Expect.isFalse(args13 is Args4);
+  Expect.isFalse(args13 is Args5);
+  Expect.isFalse(args13 is Args6);
+  Expect.isFalse(args13 is Args7);
+  Expect.isFalse(args13 is Args8);
+  Expect.isFalse(args13 is Args9);
+  Expect.isFalse(args13 is Args10);
+  Expect.isFalse(args13 is Args11);
+  Expect.isFalse(args13 is Args12);
+  Expect.isTrue(args13 is Args13);
+  Expect.isFalse(args13 is Args14);
+  Expect.isFalse(args13 is Args15);
+
+  Expect.isFalse(args14 is Args0);
+  Expect.isFalse(args14 is Args1);
+  Expect.isFalse(args14 is Args2);
+  Expect.isFalse(args14 is Args3);
+  Expect.isFalse(args14 is Args4);
+  Expect.isFalse(args14 is Args5);
+  Expect.isFalse(args14 is Args6);
+  Expect.isFalse(args14 is Args7);
+  Expect.isFalse(args14 is Args8);
+  Expect.isFalse(args14 is Args9);
+  Expect.isFalse(args14 is Args10);
+  Expect.isFalse(args14 is Args11);
+  Expect.isFalse(args14 is Args12);
+  Expect.isFalse(args14 is Args13);
+  Expect.isTrue(args14 is Args14);
+  Expect.isFalse(args14 is Args15);
+
+  Expect.isFalse(args15 is Args0);
+  Expect.isFalse(args15 is Args1);
+  Expect.isFalse(args15 is Args2);
+  Expect.isFalse(args15 is Args3);
+  Expect.isFalse(args15 is Args4);
+  Expect.isFalse(args15 is Args5);
+  Expect.isFalse(args15 is Args6);
+  Expect.isFalse(args15 is Args7);
+  Expect.isFalse(args15 is Args8);
+  Expect.isFalse(args15 is Args9);
+  Expect.isFalse(args15 is Args10);
+  Expect.isFalse(args15 is Args11);
+  Expect.isFalse(args15 is Args12);
+  Expect.isFalse(args15 is Args13);
+  Expect.isFalse(args15 is Args14);
+  Expect.isTrue(args15 is Args15);
+}
diff --git a/tests/language/function_subtype/simple1_test.dart b/tests/language/function_subtype/simple1_test.dart
new file mode 100644
index 0000000..35b018a
--- /dev/null
+++ b/tests/language/function_subtype/simple1_test.dart
@@ -0,0 +1,331 @@
+// Copyright (c) 2013, the Dart project authors.  Please see the AUTHORS file
+// 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 test program for constructors and initializers.
+
+// Check function subtyping of simple function types.
+
+import 'package:expect/expect.dart';
+
+typedef Args0();
+typedef Args1(Never a);
+typedef Args2(Never a, Never b);
+typedef Args3(Never a, Never b, Never c);
+typedef Args4(Never a, Never b, Never c, Never d);
+typedef Args5(Never a, Never b, Never c, Never d, Never e);
+typedef Args6(Never a, Never b, Never c, Never d, Never e, Never f);
+typedef Args7(Never a, Never b, Never c, Never d, Never e, Never f, Never g);
+typedef Args8(Never a, Never b, Never c, Never d, Never e, Never f, Never g,
+    Never h);
+typedef Args9(
+    Never a, Never b, Never c, Never d, Never e, Never f, Never g, Never h,
+    Never i);
+typedef Args10(Never a, Never b, Never c, Never d, Never e, Never f, Never g,
+    Never h, Never i, Never j);
+typedef Args11(Never a, Never b, Never c, Never d, Never e, Never f, Never g,
+    Never h, Never i, Never j, Never k);
+typedef Args12(Never a, Never b, Never c, Never d, Never e, Never f, Never g,
+    Never h, Never i, Never j, Never k, Never l);
+typedef Args13(Never a, Never b, Never c, Never d, Never e, Never f, Never g,
+    Never h, Never i, Never j, Never k, Never l, Never m);
+typedef Args14(Never a, Never b, Never c, Never d, Never e, Never f, Never g,
+    Never h, Never i, Never j, Never k, Never l, Never m, Never n);
+typedef Args15(Never a, Never b, Never c, Never d, Never e, Never f, Never g,
+    Never h, Never i, Never j, Never k, Never l, Never m, Never n, Never o);
+
+void args0() {}
+void args1(int a) {}
+void args2(int a, int b) {}
+void args3(int a, int b, int c) {}
+void args4(int a, int b, int c, int d) {}
+void args5(int a, int b, int c, int d, int e) {}
+void args6(int a, int b, int c, int d, int e, int f) {}
+void args7(int a, int b, int c, int d, int e, int f, int g) {}
+void args8(int a, int b, int c, int d, int e, int f, int g, int h) {}
+void args9(int a, int b, int c, int d, int e, int f, int g, int h, int i) {}
+void args10(
+    int a, int b, int c, int d, int e, int f, int g, int h, int i, int j) {}
+void args11(int a, int b, int c, int d, int e, int f, int g, int h, int i,
+    int j, int k) {}
+void args12(int a, int b, int c, int d, int e, int f, int g, int h, int i,
+    int j, int k, int l) {}
+void args13(int a, int b, int c, int d, int e, int f, int g, int h, int i,
+    int j, int k, int l, int m) {}
+void args14(int a, int b, int c, int d, int e, int f, int g, int h, int i,
+    int j, int k, int l, int m, int n) {}
+void args15(int a, int b, int c, int d, int e, int f, int g, int h, int i,
+    int j, int k, int l, int m, int n, int o) {}
+
+main() {
+  Expect.isTrue(args0 is Args0);
+  Expect.isFalse(args0 is Args1);
+  Expect.isFalse(args0 is Args2);
+  Expect.isFalse(args0 is Args3);
+  Expect.isFalse(args0 is Args4);
+  Expect.isFalse(args0 is Args5);
+  Expect.isFalse(args0 is Args6);
+  Expect.isFalse(args0 is Args7);
+  Expect.isFalse(args0 is Args8);
+  Expect.isFalse(args0 is Args9);
+  Expect.isFalse(args0 is Args10);
+  Expect.isFalse(args0 is Args11);
+  Expect.isFalse(args0 is Args12);
+  Expect.isFalse(args0 is Args13);
+  Expect.isFalse(args0 is Args14);
+  Expect.isFalse(args0 is Args15);
+
+  Expect.isFalse(args1 is Args0);
+  Expect.isTrue(args1 is Args1);
+  Expect.isFalse(args1 is Args2);
+  Expect.isFalse(args1 is Args3);
+  Expect.isFalse(args1 is Args4);
+  Expect.isFalse(args1 is Args5);
+  Expect.isFalse(args1 is Args6);
+  Expect.isFalse(args1 is Args7);
+  Expect.isFalse(args1 is Args8);
+  Expect.isFalse(args1 is Args9);
+  Expect.isFalse(args1 is Args10);
+  Expect.isFalse(args1 is Args11);
+  Expect.isFalse(args1 is Args12);
+  Expect.isFalse(args1 is Args13);
+  Expect.isFalse(args1 is Args14);
+  Expect.isFalse(args1 is Args15);
+
+  Expect.isFalse(args2 is Args0);
+  Expect.isFalse(args2 is Args1);
+  Expect.isTrue(args2 is Args2);
+  Expect.isFalse(args2 is Args3);
+  Expect.isFalse(args2 is Args4);
+  Expect.isFalse(args2 is Args5);
+  Expect.isFalse(args2 is Args6);
+  Expect.isFalse(args2 is Args7);
+  Expect.isFalse(args2 is Args8);
+  Expect.isFalse(args2 is Args9);
+  Expect.isFalse(args2 is Args10);
+  Expect.isFalse(args2 is Args11);
+  Expect.isFalse(args2 is Args12);
+  Expect.isFalse(args2 is Args13);
+  Expect.isFalse(args2 is Args14);
+  Expect.isFalse(args2 is Args15);
+
+  Expect.isFalse(args3 is Args0);
+  Expect.isFalse(args3 is Args1);
+  Expect.isFalse(args3 is Args2);
+  Expect.isTrue(args3 is Args3);
+  Expect.isFalse(args3 is Args4);
+  Expect.isFalse(args3 is Args5);
+  Expect.isFalse(args3 is Args6);
+  Expect.isFalse(args3 is Args7);
+  Expect.isFalse(args3 is Args8);
+  Expect.isFalse(args3 is Args9);
+  Expect.isFalse(args3 is Args10);
+  Expect.isFalse(args3 is Args11);
+  Expect.isFalse(args3 is Args12);
+  Expect.isFalse(args3 is Args13);
+  Expect.isFalse(args3 is Args14);
+  Expect.isFalse(args3 is Args15);
+
+  Expect.isFalse(args4 is Args0);
+  Expect.isFalse(args4 is Args1);
+  Expect.isFalse(args4 is Args2);
+  Expect.isFalse(args4 is Args3);
+  Expect.isTrue(args4 is Args4);
+  Expect.isFalse(args4 is Args5);
+  Expect.isFalse(args4 is Args6);
+  Expect.isFalse(args4 is Args7);
+  Expect.isFalse(args4 is Args8);
+  Expect.isFalse(args4 is Args9);
+  Expect.isFalse(args4 is Args10);
+  Expect.isFalse(args4 is Args11);
+  Expect.isFalse(args4 is Args12);
+  Expect.isFalse(args4 is Args13);
+  Expect.isFalse(args4 is Args14);
+  Expect.isFalse(args4 is Args15);
+
+  Expect.isFalse(args5 is Args0);
+  Expect.isFalse(args5 is Args1);
+  Expect.isFalse(args5 is Args2);
+  Expect.isFalse(args5 is Args3);
+  Expect.isFalse(args5 is Args4);
+  Expect.isTrue(args5 is Args5);
+  Expect.isFalse(args5 is Args6);
+  Expect.isFalse(args5 is Args7);
+  Expect.isFalse(args5 is Args8);
+  Expect.isFalse(args5 is Args9);
+  Expect.isFalse(args5 is Args10);
+  Expect.isFalse(args5 is Args11);
+  Expect.isFalse(args5 is Args12);
+  Expect.isFalse(args5 is Args13);
+  Expect.isFalse(args5 is Args14);
+  Expect.isFalse(args5 is Args15);
+
+  Expect.isFalse(args6 is Args0);
+  Expect.isFalse(args6 is Args1);
+  Expect.isFalse(args6 is Args2);
+  Expect.isFalse(args6 is Args3);
+  Expect.isFalse(args6 is Args4);
+  Expect.isFalse(args6 is Args5);
+  Expect.isTrue(args6 is Args6);
+  Expect.isFalse(args6 is Args7);
+  Expect.isFalse(args6 is Args8);
+  Expect.isFalse(args6 is Args9);
+  Expect.isFalse(args6 is Args10);
+  Expect.isFalse(args6 is Args11);
+  Expect.isFalse(args6 is Args12);
+  Expect.isFalse(args6 is Args13);
+  Expect.isFalse(args6 is Args14);
+  Expect.isFalse(args6 is Args15);
+
+  Expect.isFalse(args7 is Args0);
+  Expect.isFalse(args7 is Args1);
+  Expect.isFalse(args7 is Args2);
+  Expect.isFalse(args7 is Args3);
+  Expect.isFalse(args7 is Args4);
+  Expect.isFalse(args7 is Args5);
+  Expect.isFalse(args7 is Args6);
+  Expect.isTrue(args7 is Args7);
+  Expect.isFalse(args7 is Args8);
+  Expect.isFalse(args7 is Args9);
+  Expect.isFalse(args7 is Args10);
+  Expect.isFalse(args7 is Args11);
+  Expect.isFalse(args7 is Args12);
+  Expect.isFalse(args7 is Args13);
+  Expect.isFalse(args7 is Args14);
+  Expect.isFalse(args7 is Args15);
+
+  Expect.isFalse(args8 is Args0);
+  Expect.isFalse(args8 is Args1);
+  Expect.isFalse(args8 is Args2);
+  Expect.isFalse(args8 is Args3);
+  Expect.isFalse(args8 is Args4);
+  Expect.isFalse(args8 is Args5);
+  Expect.isFalse(args8 is Args6);
+  Expect.isFalse(args8 is Args7);
+  Expect.isTrue(args8 is Args8);
+  Expect.isFalse(args8 is Args9);
+  Expect.isFalse(args8 is Args10);
+  Expect.isFalse(args8 is Args11);
+  Expect.isFalse(args8 is Args12);
+  Expect.isFalse(args8 is Args13);
+  Expect.isFalse(args8 is Args14);
+  Expect.isFalse(args8 is Args15);
+
+  Expect.isFalse(args9 is Args0);
+  Expect.isFalse(args9 is Args1);
+  Expect.isFalse(args9 is Args2);
+  Expect.isFalse(args9 is Args3);
+  Expect.isFalse(args9 is Args4);
+  Expect.isFalse(args9 is Args5);
+  Expect.isFalse(args9 is Args6);
+  Expect.isFalse(args9 is Args7);
+  Expect.isFalse(args9 is Args8);
+  Expect.isTrue(args9 is Args9);
+  Expect.isFalse(args9 is Args10);
+  Expect.isFalse(args9 is Args11);
+  Expect.isFalse(args9 is Args12);
+  Expect.isFalse(args9 is Args13);
+  Expect.isFalse(args9 is Args14);
+  Expect.isFalse(args9 is Args15);
+
+  Expect.isFalse(args10 is Args0);
+  Expect.isFalse(args10 is Args1);
+  Expect.isFalse(args10 is Args2);
+  Expect.isFalse(args10 is Args3);
+  Expect.isFalse(args10 is Args4);
+  Expect.isFalse(args10 is Args5);
+  Expect.isFalse(args10 is Args6);
+  Expect.isFalse(args10 is Args7);
+  Expect.isFalse(args10 is Args8);
+  Expect.isFalse(args10 is Args9);
+  Expect.isTrue(args10 is Args10);
+  Expect.isFalse(args10 is Args11);
+  Expect.isFalse(args10 is Args12);
+  Expect.isFalse(args10 is Args13);
+  Expect.isFalse(args10 is Args14);
+  Expect.isFalse(args10 is Args15);
+
+  Expect.isFalse(args11 is Args0);
+  Expect.isFalse(args11 is Args1);
+  Expect.isFalse(args11 is Args2);
+  Expect.isFalse(args11 is Args3);
+  Expect.isFalse(args11 is Args4);
+  Expect.isFalse(args11 is Args5);
+  Expect.isFalse(args11 is Args6);
+  Expect.isFalse(args11 is Args7);
+  Expect.isFalse(args11 is Args8);
+  Expect.isFalse(args11 is Args9);
+  Expect.isFalse(args11 is Args10);
+  Expect.isTrue(args11 is Args11);
+  Expect.isFalse(args11 is Args12);
+  Expect.isFalse(args11 is Args13);
+  Expect.isFalse(args11 is Args14);
+  Expect.isFalse(args11 is Args15);
+
+  Expect.isFalse(args12 is Args0);
+  Expect.isFalse(args12 is Args1);
+  Expect.isFalse(args12 is Args2);
+  Expect.isFalse(args12 is Args3);
+  Expect.isFalse(args12 is Args4);
+  Expect.isFalse(args12 is Args5);
+  Expect.isFalse(args12 is Args6);
+  Expect.isFalse(args12 is Args7);
+  Expect.isFalse(args12 is Args8);
+  Expect.isFalse(args12 is Args9);
+  Expect.isFalse(args12 is Args10);
+  Expect.isFalse(args12 is Args11);
+  Expect.isTrue(args12 is Args12);
+  Expect.isFalse(args12 is Args13);
+  Expect.isFalse(args12 is Args14);
+  Expect.isFalse(args12 is Args15);
+
+  Expect.isFalse(args13 is Args0);
+  Expect.isFalse(args13 is Args1);
+  Expect.isFalse(args13 is Args2);
+  Expect.isFalse(args13 is Args3);
+  Expect.isFalse(args13 is Args4);
+  Expect.isFalse(args13 is Args5);
+  Expect.isFalse(args13 is Args6);
+  Expect.isFalse(args13 is Args7);
+  Expect.isFalse(args13 is Args8);
+  Expect.isFalse(args13 is Args9);
+  Expect.isFalse(args13 is Args10);
+  Expect.isFalse(args13 is Args11);
+  Expect.isFalse(args13 is Args12);
+  Expect.isTrue(args13 is Args13);
+  Expect.isFalse(args13 is Args14);
+  Expect.isFalse(args13 is Args15);
+
+  Expect.isFalse(args14 is Args0);
+  Expect.isFalse(args14 is Args1);
+  Expect.isFalse(args14 is Args2);
+  Expect.isFalse(args14 is Args3);
+  Expect.isFalse(args14 is Args4);
+  Expect.isFalse(args14 is Args5);
+  Expect.isFalse(args14 is Args6);
+  Expect.isFalse(args14 is Args7);
+  Expect.isFalse(args14 is Args8);
+  Expect.isFalse(args14 is Args9);
+  Expect.isFalse(args14 is Args10);
+  Expect.isFalse(args14 is Args11);
+  Expect.isFalse(args14 is Args12);
+  Expect.isFalse(args14 is Args13);
+  Expect.isTrue(args14 is Args14);
+  Expect.isFalse(args14 is Args15);
+
+  Expect.isFalse(args15 is Args0);
+  Expect.isFalse(args15 is Args1);
+  Expect.isFalse(args15 is Args2);
+  Expect.isFalse(args15 is Args3);
+  Expect.isFalse(args15 is Args4);
+  Expect.isFalse(args15 is Args5);
+  Expect.isFalse(args15 is Args6);
+  Expect.isFalse(args15 is Args7);
+  Expect.isFalse(args15 is Args8);
+  Expect.isFalse(args15 is Args9);
+  Expect.isFalse(args15 is Args10);
+  Expect.isFalse(args15 is Args11);
+  Expect.isFalse(args15 is Args12);
+  Expect.isFalse(args15 is Args13);
+  Expect.isFalse(args15 is Args14);
+  Expect.isTrue(args15 is Args15);
+}
diff --git a/tests/language/function_subtype/simple2_test.dart b/tests/language/function_subtype/simple2_test.dart
new file mode 100644
index 0000000..119869b
--- /dev/null
+++ b/tests/language/function_subtype/simple2_test.dart
@@ -0,0 +1,74 @@
+// Copyright (c) 2013, the Dart project authors.  Please see the AUTHORS file
+// 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 test program for constructors and initializers.
+
+// Check function subtyping of simple function types.
+
+import 'package:expect/expect.dart';
+
+typedef Args0();
+typedef Args1(a);
+typedef Args2(a, b);
+typedef Args3(a, b, c);
+typedef Args4(a, b, c, d);
+
+args0_1([a]) {}
+args1_2(a, [b]) {}
+args0_2([a, b]) {}
+args1_3(a, [b, c]) {}
+
+args0_1_named({a}) {}
+args1_2_named(a, {b}) {}
+args0_2_named({a, b}) {}
+args1_3_named(a, {b, c}) {}
+
+main() {
+  Expect.isTrue(args0_1 is Args0);
+  Expect.isTrue(args0_1 is Args1);
+  Expect.isFalse(args0_1 is Args2);
+  Expect.isFalse(args0_1 is Args3);
+  Expect.isFalse(args0_1 is Args4);
+
+  Expect.isFalse(args1_2 is Args0);
+  Expect.isTrue(args1_2 is Args1);
+  Expect.isTrue(args1_2 is Args2);
+  Expect.isFalse(args1_2 is Args3);
+  Expect.isFalse(args1_2 is Args4);
+
+  Expect.isTrue(args0_2 is Args0);
+  Expect.isTrue(args0_2 is Args1);
+  Expect.isTrue(args0_2 is Args2);
+  Expect.isFalse(args0_2 is Args3);
+  Expect.isFalse(args0_2 is Args4);
+
+  Expect.isFalse(args1_3 is Args0);
+  Expect.isTrue(args1_3 is Args1);
+  Expect.isTrue(args1_3 is Args2);
+  Expect.isTrue(args1_3 is Args3);
+  Expect.isFalse(args1_3 is Args4);
+
+  Expect.isTrue(args0_1_named is Args0);
+  Expect.isFalse(args0_1_named is Args1);
+  Expect.isFalse(args0_1_named is Args2);
+  Expect.isFalse(args0_1_named is Args3);
+  Expect.isFalse(args0_1_named is Args4);
+
+  Expect.isFalse(args1_2_named is Args0);
+  Expect.isTrue(args1_2_named is Args1);
+  Expect.isFalse(args1_2_named is Args2);
+  Expect.isFalse(args1_2_named is Args3);
+  Expect.isFalse(args1_2_named is Args4);
+
+  Expect.isTrue(args0_2_named is Args0);
+  Expect.isFalse(args0_2_named is Args1);
+  Expect.isFalse(args0_2_named is Args2);
+  Expect.isFalse(args0_2_named is Args3);
+  Expect.isFalse(args0_2_named is Args4);
+
+  Expect.isFalse(args1_3_named is Args0);
+  Expect.isTrue(args1_3_named is Args1);
+  Expect.isFalse(args1_3_named is Args2);
+  Expect.isFalse(args1_3_named is Args3);
+  Expect.isFalse(args1_3_named is Args4);
+}
diff --git a/tests/language/function_subtype/top_level0_test.dart b/tests/language/function_subtype/top_level0_test.dart
new file mode 100644
index 0000000..95bd78e
--- /dev/null
+++ b/tests/language/function_subtype/top_level0_test.dart
@@ -0,0 +1,34 @@
+// Copyright (c) 2013, the Dart project authors.  Please see the AUTHORS file
+// 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 test program for constructors and initializers.
+
+// Check function subtyping for top level functions.
+
+import 'package:expect/expect.dart';
+
+typedef int Foo(bool a, [String b]);
+typedef int Bar(bool a, [String b]);
+typedef int Baz(bool a, {String b});
+typedef int Boz(bool a);
+
+int foo(bool a, [String b = '']) => -1;
+int baz(bool a, {String b = ''}) => -1;
+int boz(bool a, {int b = -1}) => -1;
+
+main() {
+  Expect.isTrue(foo is Foo, 'foo is Foo');
+  Expect.isTrue(foo is Bar, 'foo is Bar');
+  Expect.isFalse(foo is Baz, 'foo is Baz');
+  Expect.isTrue(foo is Boz, 'foo is Boz');
+
+  Expect.isFalse(baz is Foo, 'foo is Foo');
+  Expect.isFalse(baz is Bar, 'foo is Bar');
+  Expect.isTrue(baz is Baz, 'foo is Baz');
+  Expect.isTrue(baz is Boz, 'foo is Boz');
+
+  Expect.isFalse(boz is Foo, 'foo is Foo');
+  Expect.isFalse(boz is Bar, 'foo is Bar');
+  Expect.isFalse(boz is Baz, 'foo is Baz');
+  Expect.isTrue(boz is Boz, 'foo is Boz');
+}
diff --git a/tests/language/function_subtype/top_level1_test.dart b/tests/language/function_subtype/top_level1_test.dart
new file mode 100644
index 0000000..4e2d763
--- /dev/null
+++ b/tests/language/function_subtype/top_level1_test.dart
@@ -0,0 +1,45 @@
+// Copyright (c) 2013, the Dart project authors.  Please see the AUTHORS file
+// 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 test program for constructors and initializers.
+
+// Check function subtyping for top level functions.
+
+import 'package:expect/expect.dart';
+
+typedef int Foo<T>(T a, [String b]);
+typedef int Bar<T>(T a, [String b]);
+typedef int Baz<T>(T a, {String b});
+typedef int Boz<T>(T a);
+
+int foo(bool a, [String b = '']) => -1;
+int baz(bool a, {String b = ''}) => -1;
+int boz(bool a, {int b = -1}) => -1;
+
+class C<T> {
+  void test(String nameOfT, bool expectedResult) {
+    Expect.equals(expectedResult, foo is Foo<T>, 'foo is Foo<$nameOfT>');
+    Expect.equals(expectedResult, foo is Bar<T>, 'foo is Bar<$nameOfT>');
+    Expect.isFalse(foo is Baz<T>, 'foo is Baz<$nameOfT>');
+    Expect.equals(expectedResult, foo is Boz<T>, 'foo is Boz<$nameOfT>');
+
+    Expect.isFalse(baz is Foo<T>, 'foo is Foo<$nameOfT>');
+    Expect.isFalse(baz is Bar<T>, 'foo is Bar<$nameOfT>');
+    Expect.equals(expectedResult, baz is Baz<T>, 'foo is Baz<$nameOfT>');
+    Expect.equals(expectedResult, baz is Boz<T>, 'foo is Boz<$nameOfT>');
+
+    Expect.isFalse(boz is Foo<T>, 'foo is Foo<$nameOfT>');
+    Expect.isFalse(boz is Bar<T>, 'foo is Bar<$nameOfT>');
+    Expect.isFalse(boz is Baz<T>, 'foo is Baz<$nameOfT>');
+    Expect.equals(expectedResult, boz is Boz<T>, 'foo is Boz<$nameOfT>');
+  }
+}
+
+main() {
+  new C<bool>().test('bool', true);
+  new C<int>().test('int', false);
+  new C<Object>().test('Object', false);
+  new C<dynamic>().test('dynamic', false);
+  new C<Null>().test('Null', isWeakMode);
+  new C<Never>().test('Never', true);
+}
diff --git a/tests/language/function_subtype/typearg0_test.dart b/tests/language/function_subtype/typearg0_test.dart
new file mode 100644
index 0000000..ef39ba9
--- /dev/null
+++ b/tests/language/function_subtype/typearg0_test.dart
@@ -0,0 +1,29 @@
+// Copyright (c) 2013, the Dart project authors.  Please see the AUTHORS file
+// 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 test program for constructors and initializers.
+
+// Check function subtyping with type variables in factory constructors.
+
+import 'package:expect/expect.dart';
+
+typedef void Foo();
+
+class A<T> {
+  bool foo(a) => a is T;
+}
+
+void bar1() {}
+void bar2(i) {}
+
+void main() {
+  void bar3() {}
+  void bar4(i) {}
+
+  Expect.isTrue(new A<Foo>().foo(bar1));
+  Expect.isFalse(new A<Foo>().foo(bar2));
+  Expect.isTrue(new A<Foo>().foo(bar3));
+  Expect.isFalse(new A<Foo>().foo(bar4));
+  Expect.isTrue(new A<Foo>().foo(() {}));
+  Expect.isFalse(new A<Foo>().foo((i) {}));
+}
diff --git a/tests/language/function_subtype/typearg1_test.dart b/tests/language/function_subtype/typearg1_test.dart
new file mode 100644
index 0000000..1d6e473
--- /dev/null
+++ b/tests/language/function_subtype/typearg1_test.dart
@@ -0,0 +1,21 @@
+// Copyright (c) 2013, the Dart project authors.  Please see the AUTHORS file
+// 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 test program for constructors and initializers.
+
+// Check function subtyping of type arguments.
+
+import 'package:expect/expect.dart';
+
+class C<T> {}
+
+class I {}
+
+class J extends I {}
+
+typedef void f1(C<J> c);
+typedef void f2(C<I> c);
+
+main() {
+  Expect.isTrue(new C<f2>() is C<f1>);
+}
diff --git a/tests/language/function_subtype/typearg2_test.dart b/tests/language/function_subtype/typearg2_test.dart
new file mode 100644
index 0000000..e23c88f
--- /dev/null
+++ b/tests/language/function_subtype/typearg2_test.dart
@@ -0,0 +1,22 @@
+// Copyright (c) 2013, the Dart project authors.  Please see the AUTHORS file
+// 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 test program for constructors and initializers.
+
+// Check function subtyping of type arguments.
+
+import 'package:expect/expect.dart';
+
+class C<T> {}
+
+class I {}
+
+class J extends I {}
+
+typedef void f1(C<J> c);
+typedef void f2(C<I> c);
+
+main() {
+  Expect.isFalse(new C<f1>() is C<f2>);
+  Expect.isTrue(new C<f2>() is C<f1>);
+}
diff --git a/tests/language/function_subtype/typearg3_test.dart b/tests/language/function_subtype/typearg3_test.dart
new file mode 100644
index 0000000..b2208af
--- /dev/null
+++ b/tests/language/function_subtype/typearg3_test.dart
@@ -0,0 +1,22 @@
+// Copyright (c) 2013, the Dart project authors.  Please see the AUTHORS file
+// 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 test program for constructors and initializers.
+
+// Check function subtyping of type arguments.
+
+import 'package:expect/expect.dart';
+
+class C<T> {}
+
+class I {}
+
+class J extends I {}
+
+typedef J f1();
+typedef I f2();
+
+main() {
+  Expect.isTrue(new C<f1>() is C<f2>);
+  Expect.isFalse(new C<f2>() is C<f1>);
+}
diff --git a/tests/language/function_subtype/typearg5_test.dart b/tests/language/function_subtype/typearg5_test.dart
new file mode 100644
index 0000000..bd6e2bd
--- /dev/null
+++ b/tests/language/function_subtype/typearg5_test.dart
@@ -0,0 +1,56 @@
+// Copyright (c) 2016, the Dart project authors.  Please see the AUTHORS file
+// 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.
+
+// Check function subtyping of type arguments. These cases use typedefs as type
+// arguments, and the typedefs have type parameters that are used more than
+// once.
+
+import 'package:expect/expect.dart';
+
+typedef A F<A>(A arg1, A arg2);
+typedef B G<A, B>(B arg1, B arg2);
+
+typedef Set<A> FS<A>(Set<A> arg1, Set<A> arg2);
+
+@pragma('dart2js:noInline')
+@pragma('dart2js:assumeDynamic')
+dyn(x) => x;
+
+class CheckEnv<X, Y> {
+  test(bool intX) {
+    Expect.isTrue(<F<X>>[] is! List<F>);
+    Expect.isTrue(<F<X>>[] is List<F<X>>);
+    Expect.isTrue(<F<X>>[] is List<G<Y, X>>);
+
+    Expect.isTrue(dyn(<F<X>>[]) is! List<F>);
+    Expect.isTrue(dyn(<F<X>>[]) is List<F<X>>);
+    Expect.isTrue(dyn(<F<X>>[]) is List<G<Y, X>>);
+
+    Expect.isFalse(<F<X>>[] is List<F<Y>>);
+    Expect.isFalse(<F<X>>[] is List<G<X, Y>>);
+
+    Expect.isFalse(dyn(<F<X>>[]) is List<F<Y>>);
+    Expect.isFalse(dyn(<F<X>>[]) is List<G<X, Y>>);
+
+    Expect.isFalse(dyn(<FS<X>>[]) is List<FS>);
+    Expect.isFalse(dyn(<FS<X>>[]) is List<FS<Null>>);
+    Expect.isTrue(dyn(<FS<X>>[]) is List<FS<X>>);
+    if (intX) {
+      Expect.isTrue(dyn(<FS<X>>[]) is List<FS<int>>);
+      Expect.isTrue(dyn(<FS<int>>[]) is List<FS<X>>);
+      Expect.isFalse(dyn(<FS<Y>>[]) is List<FS<int>>);
+      Expect.isFalse(dyn(<FS<int>>[]) is List<FS<Y>>);
+    }
+  }
+}
+
+main() {
+  Expect.isTrue(<F<int>>[] is List<F<int>>);
+  Expect.isTrue(dyn(<F<int>>[]) is List<F<int>>);
+  Expect.isTrue(<F<int>>[] is List<G<bool, int>>);
+  Expect.isTrue(dyn(<F<int>>[]) is List<G<bool, int>>);
+
+  new CheckEnv<int, String>().test(true);
+  new CheckEnv<String, int>().test(false);
+}
diff --git a/tests/language/invalid_returns/async_invalid_return_00_test.dart b/tests/language/invalid_returns/async_invalid_return_00_test.dart
new file mode 100644
index 0000000..1b2e03c
--- /dev/null
+++ b/tests/language/invalid_returns/async_invalid_return_00_test.dart
@@ -0,0 +1,44 @@
+// Copyright (c) 2018, the Dart project authors.  Please see the AUTHORS file
+// 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.
+
+import 'dart:async';
+
+/* `return;` is an error if the future value type of the function is not
+ * `void`, `dynamic`, or `Null`.
+ */
+
+Object test1() async {
+  return;
+//^
+// [analyzer] unspecified
+// [cfe] unspecified
+}
+
+Object? test2() async {
+  return;
+//^
+// [analyzer] unspecified
+// [cfe] unspecified
+}
+
+Object Function() test3 = () async {
+  return;
+//^
+// [analyzer] unspecified
+// [cfe] unspecified
+};
+
+Object? Function() test4 = () async {
+  return;
+//^
+// [analyzer] unspecified
+// [cfe] unspecified
+};
+
+void main() {
+  test1();
+  test2();
+  test3();
+  test4();
+}
diff --git a/tests/language/invalid_returns/async_invalid_return_01_test.dart b/tests/language/invalid_returns/async_invalid_return_01_test.dart
new file mode 100644
index 0000000..e2b0e9b
--- /dev/null
+++ b/tests/language/invalid_returns/async_invalid_return_01_test.dart
@@ -0,0 +1,28 @@
+// Copyright (c) 2018, the Dart project authors.  Please see the AUTHORS file
+// 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.
+
+import 'dart:async';
+
+/* `return;` is an error if the future value type of the function is not
+ * `void`, `dynamic`, or `Null`.
+ */
+
+Future<int> test1() async {
+  return;
+//^
+// [analyzer] unspecified
+// [cfe] unspecified
+}
+
+Future<int> Function() test2 = () async {
+  return;
+//^
+// [analyzer] unspecified
+// [cfe] unspecified
+};
+
+void main() {
+  test1();
+  test2();
+}
diff --git a/tests/language/invalid_returns/async_invalid_return_02_test.dart b/tests/language/invalid_returns/async_invalid_return_02_test.dart
new file mode 100644
index 0000000..1b36160
--- /dev/null
+++ b/tests/language/invalid_returns/async_invalid_return_02_test.dart
@@ -0,0 +1,28 @@
+// Copyright (c) 2018, the Dart project authors.  Please see the AUTHORS file
+// 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.
+
+import 'dart:async';
+
+/* `return;` is an error if the future value type of the function is not
+ * `void`, `dynamic`, or `Null`.
+ */
+
+FutureOr<int> test1() async {
+  return;
+//^
+// [analyzer] unspecified
+// [cfe] unspecified
+}
+
+FutureOr<int> Function() test2 = () async {
+  return;
+//^
+// [analyzer] unspecified
+// [cfe] unspecified
+};
+
+void main() {
+  test1();
+  test2();
+}
diff --git a/tests/language/invalid_returns/async_invalid_return_03_test.dart b/tests/language/invalid_returns/async_invalid_return_03_test.dart
new file mode 100644
index 0000000..40bb341
--- /dev/null
+++ b/tests/language/invalid_returns/async_invalid_return_03_test.dart
@@ -0,0 +1,28 @@
+// Copyright (c) 2018, the Dart project authors.  Please see the AUTHORS file
+// 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.
+
+import 'dart:async';
+
+/* `return;` is an error if the future value type of the function is not
+ * `void`, `dynamic`, or `Null`.
+ */
+
+Future<Object?> test1() async {
+  return;
+//^
+// [analyzer] unspecified
+// [cfe] unspecified
+}
+
+Future<Object?> Function() test2 = () async {
+  return;
+//^
+// [analyzer] unspecified
+// [cfe] unspecified
+};
+
+void main() {
+  test1();
+  test2();
+}
diff --git a/tests/language/invalid_returns/async_invalid_return_04_test.dart b/tests/language/invalid_returns/async_invalid_return_04_test.dart
new file mode 100644
index 0000000..f1e1ad3
--- /dev/null
+++ b/tests/language/invalid_returns/async_invalid_return_04_test.dart
@@ -0,0 +1,28 @@
+// Copyright (c) 2018, the Dart project authors.  Please see the AUTHORS file
+// 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.
+
+import 'dart:async';
+
+/* `return;` is an error if the future value type of the function is not
+ * `void`, `dynamic`, or `Null`.
+ */
+
+FutureOr<Object?> test1() async {
+  return;
+//^
+// [analyzer] unspecified
+// [cfe] unspecified
+}
+
+FutureOr<Object?> Function() test2 = () async {
+  return;
+//^
+// [analyzer] unspecified
+// [cfe] unspecified
+};
+
+void main() {
+  test1();
+  test2();
+}
diff --git a/tests/language/invalid_returns/async_invalid_return_05_test.dart b/tests/language/invalid_returns/async_invalid_return_05_test.dart
new file mode 100644
index 0000000..aecbb45
--- /dev/null
+++ b/tests/language/invalid_returns/async_invalid_return_05_test.dart
@@ -0,0 +1,31 @@
+// Copyright (c) 2018, the Dart project authors.  Please see the AUTHORS file
+// 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.
+
+import 'dart:async';
+
+/* `return exp;` where `exp` has static type `S` is an error if the future
+ * value type of the function is `void` and `flatten(S)` is not
+ * `void`, `dynamic`, `Null`, `void*`, `dynamic*`, or `Null*`.
+ */
+
+int v = 0;
+
+void test1() async {
+  return v;
+  //     ^
+  // [analyzer] unspecified
+  // [cfe] unspecified
+}
+
+void Function() test2 = () async {
+  return v;
+  //     ^
+  // [analyzer] unspecified
+  // [cfe] unspecified
+};
+
+void main() {
+  test1();
+  test2();
+}
diff --git a/tests/language/invalid_returns/async_invalid_return_08_test.dart b/tests/language/invalid_returns/async_invalid_return_08_test.dart
new file mode 100644
index 0000000..435742f
--- /dev/null
+++ b/tests/language/invalid_returns/async_invalid_return_08_test.dart
@@ -0,0 +1,31 @@
+// Copyright (c) 2018, the Dart project authors.  Please see the AUTHORS file
+// 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.
+
+import 'dart:async';
+
+/* `return exp;` where `exp` has static type `S` is an error if the future
+ * value type of the function is `void` and `flatten(S)` is not
+ * `void`, `dynamic`, `Null`, `void*`, `dynamic*`, or `Null*`.
+ */
+
+Object v = false;
+
+void test1() async {
+  return v;
+  //     ^
+  // [analyzer] unspecified
+  // [cfe] unspecified
+}
+
+void Function() test2 = () async {
+  return v;
+  //     ^
+  // [analyzer] unspecified
+  // [cfe] unspecified
+};
+
+void main() {
+  test1();
+  test2();
+}
diff --git a/tests/language/invalid_returns/async_invalid_return_11_test.dart b/tests/language/invalid_returns/async_invalid_return_11_test.dart
new file mode 100644
index 0000000..dee2323
--- /dev/null
+++ b/tests/language/invalid_returns/async_invalid_return_11_test.dart
@@ -0,0 +1,31 @@
+// Copyright (c) 2018, the Dart project authors.  Please see the AUTHORS file
+// 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.
+
+import 'dart:async';
+
+/* `return exp;` where `exp` has static type `S` is an error if the future
+ * value type of the function is `void` and `flatten(S)` is not
+ * `void`, `dynamic`, `Null`, `void*`, `dynamic*`, or `Null*`.
+ */
+
+Future<int>? v = null;
+
+void test1() async {
+  return v;
+  //     ^
+  // [analyzer] unspecified
+  // [cfe] unspecified
+}
+
+void Function() test2 = () async {
+  return v;
+  //     ^
+  // [analyzer] unspecified
+  // [cfe] unspecified
+};
+
+void main() {
+  test1();
+  test2();
+}
diff --git a/tests/language/invalid_returns/async_invalid_return_14_test.dart b/tests/language/invalid_returns/async_invalid_return_14_test.dart
new file mode 100644
index 0000000..e8014db
--- /dev/null
+++ b/tests/language/invalid_returns/async_invalid_return_14_test.dart
@@ -0,0 +1,31 @@
+// Copyright (c) 2018, the Dart project authors.  Please see the AUTHORS file
+// 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.
+
+import 'dart:async';
+
+/* `return exp;` where `exp` has static type `S` is an error if the future
+ * value type of the function is `void` and `flatten(S)` is not
+ * `void`, `dynamic`, `Null`, `void*`, `dynamic*`, or `Null*`.
+ */
+
+FutureOr<int> v = 0;
+
+void test1() async {
+  return v;
+  //     ^
+  // [analyzer] unspecified
+  // [cfe] unspecified
+}
+
+void Function() test2 = () async {
+  return v;
+  //     ^
+  // [analyzer] unspecified
+  // [cfe] unspecified
+};
+
+void main() {
+  test1();
+  test2();
+}
diff --git a/tests/language/invalid_returns/async_invalid_return_17_test.dart b/tests/language/invalid_returns/async_invalid_return_17_test.dart
new file mode 100644
index 0000000..536a110
--- /dev/null
+++ b/tests/language/invalid_returns/async_invalid_return_17_test.dart
@@ -0,0 +1,31 @@
+// Copyright (c) 2018, the Dart project authors.  Please see the AUTHORS file
+// 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.
+
+import 'dart:async';
+
+/* `return exp;` where `exp` has static type `S` is an error if the future
+ * value type of the function is `void` and `flatten(S)` is not
+ * `void`, `dynamic`, `Null`, `void*`, `dynamic*`, or `Null*`.
+ */
+
+Future<Object> v = Future.value(Object());
+
+void test1() async {
+  return v;
+  //     ^
+  // [analyzer] unspecified
+  // [cfe] unspecified
+}
+
+void Function() test2 = () async {
+  return v;
+  //     ^
+  // [analyzer] unspecified
+  // [cfe] unspecified
+};
+
+void main() {
+  test1();
+  test2();
+}
diff --git a/tests/language/invalid_returns/async_invalid_return_20_test.dart b/tests/language/invalid_returns/async_invalid_return_20_test.dart
new file mode 100644
index 0000000..8a5be6d
--- /dev/null
+++ b/tests/language/invalid_returns/async_invalid_return_20_test.dart
@@ -0,0 +1,31 @@
+// Copyright (c) 2018, the Dart project authors.  Please see the AUTHORS file
+// 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.
+
+import 'dart:async';
+
+/* `return exp;` where `exp` has static type `S` is an error if the future
+ * value type of the function is `void` and `flatten(S)` is not
+ * `void`, `dynamic`, `Null`, `void*`, `dynamic*`, or `Null*`.
+ */
+
+FutureOr<Object> v = true;
+
+void test1() async {
+  return v;
+  //     ^
+  // [analyzer] unspecified
+  // [cfe] unspecified
+}
+
+void Function() test2 = () async {
+  return v;
+  //     ^
+  // [analyzer] unspecified
+  // [cfe] unspecified
+};
+
+void main() {
+  test1();
+  test2();
+}
diff --git a/tests/language/invalid_returns/async_invalid_return_23_test.dart b/tests/language/invalid_returns/async_invalid_return_23_test.dart
new file mode 100644
index 0000000..3ddefdc
--- /dev/null
+++ b/tests/language/invalid_returns/async_invalid_return_23_test.dart
@@ -0,0 +1,47 @@
+// Copyright (c) 2018, the Dart project authors.  Please see the AUTHORS file
+// 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.
+
+import 'dart:async';
+
+/* `return exp;` where `exp` has static type `S` is an error if the future
+ * value type of the function is neither `void` nor `dynamic`,
+ * and `flatten(S)` is `void` or `void*`.
+ */
+
+void v = null;
+
+Object test1() async {
+  return v;
+  //     ^
+  // [analyzer] unspecified
+  // [cfe] unspecified
+}
+
+Object? test2() async {
+  return v;
+  //     ^
+  // [analyzer] unspecified
+  // [cfe] unspecified
+}
+
+Object Function() test3 = () async {
+  return v;
+  //     ^
+  // [analyzer] unspecified
+  // [cfe] unspecified
+};
+
+Object? Function() test4 = () async {
+  return v;
+  //     ^
+  // [analyzer] unspecified
+  // [cfe] unspecified
+};
+
+void main() {
+  test1();
+  test2();
+  test3();
+  test4();
+}
diff --git a/tests/language/invalid_returns/async_invalid_return_24_test.dart b/tests/language/invalid_returns/async_invalid_return_24_test.dart
new file mode 100644
index 0000000..6a23787
--- /dev/null
+++ b/tests/language/invalid_returns/async_invalid_return_24_test.dart
@@ -0,0 +1,47 @@
+// Copyright (c) 2018, the Dart project authors.  Please see the AUTHORS file
+// 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.
+
+import 'dart:async';
+
+/* `return exp;` where `exp` has static type `S` is an error if the future
+ * value type of the function is neither `void` nor `dynamic`,
+ * and `flatten(S)` is `void` or `void*`.
+ */
+
+Future<void>? v = null;
+
+Object test1() async {
+  return v;
+  //     ^
+  // [analyzer] unspecified
+  // [cfe] unspecified
+}
+
+Object? test2() async {
+  return v;
+  //     ^
+  // [analyzer] unspecified
+  // [cfe] unspecified
+}
+
+Object Function() test3 = () async {
+  return v;
+  //     ^
+  // [analyzer] unspecified
+  // [cfe] unspecified
+};
+
+Object? Function() test4 = () async {
+  return v;
+  //     ^
+  // [analyzer] unspecified
+  // [cfe] unspecified
+};
+
+void main() {
+  test1();
+  test2();
+  test3();
+  test4();
+}
diff --git a/tests/language/invalid_returns/async_invalid_return_25_test.dart b/tests/language/invalid_returns/async_invalid_return_25_test.dart
new file mode 100644
index 0000000..3bc637d
--- /dev/null
+++ b/tests/language/invalid_returns/async_invalid_return_25_test.dart
@@ -0,0 +1,47 @@
+// Copyright (c) 2018, the Dart project authors.  Please see the AUTHORS file
+// 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.
+
+import 'dart:async';
+
+/* `return exp;` where `exp` has static type `S` is an error if the future
+ * value type of the function is neither `void` nor `dynamic`,
+ * and `flatten(S)` is `void` or `void*`.
+ */
+
+FutureOr<void> v = null;
+
+Object test1() async {
+  return v;
+  //     ^
+  // [analyzer] unspecified
+  // [cfe] unspecified
+}
+
+Object? test2() async {
+  return v;
+  //     ^
+  // [analyzer] unspecified
+  // [cfe] unspecified
+}
+
+Object Function() test3 = () async {
+  return v;
+  //     ^
+  // [analyzer] unspecified
+  // [cfe] unspecified
+};
+
+Object? Function() test4 = () async {
+  return v;
+  //     ^
+  // [analyzer] unspecified
+  // [cfe] unspecified
+};
+
+void main() {
+  test1();
+  test2();
+  test3();
+  test4();
+}
diff --git a/tests/language/invalid_returns/async_invalid_return_32_test.dart b/tests/language/invalid_returns/async_invalid_return_32_test.dart
new file mode 100644
index 0000000..f6d337c
--- /dev/null
+++ b/tests/language/invalid_returns/async_invalid_return_32_test.dart
@@ -0,0 +1,31 @@
+// Copyright (c) 2018, the Dart project authors.  Please see the AUTHORS file
+// 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.
+
+import 'dart:async';
+
+/* `return exp;` where `exp` has static type `S` is an error if the future
+ * value type of the function is neither `void` nor `dynamic`,
+ * and `flatten(S)` is `void` or `void*`.
+ */
+
+void v = null;
+
+Future<Object?> test1() async {
+  return v;
+  //     ^
+  // [analyzer] unspecified
+  // [cfe] unspecified
+}
+
+Future<Object?> Function() test2 = () async {
+  return v;
+  //     ^
+  // [analyzer] unspecified
+  // [cfe] unspecified
+};
+
+void main() {
+  test1();
+  test2();
+}
diff --git a/tests/language/invalid_returns/async_invalid_return_33_test.dart b/tests/language/invalid_returns/async_invalid_return_33_test.dart
new file mode 100644
index 0000000..cd77320
--- /dev/null
+++ b/tests/language/invalid_returns/async_invalid_return_33_test.dart
@@ -0,0 +1,31 @@
+// Copyright (c) 2018, the Dart project authors.  Please see the AUTHORS file
+// 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.
+
+import 'dart:async';
+
+/* `return exp;` where `exp` has static type `S` is an error if the future
+ * value type of the function is neither `void` nor `dynamic`,
+ * and `flatten(S)` is `void` or `void*`.
+ */
+
+Future<void> v = Future.value(null);
+
+Future<Object?> test1() async {
+  return v;
+  //     ^
+  // [analyzer] unspecified
+  // [cfe] unspecified
+}
+
+Future<Object?> Function() test2 = () async {
+  return v;
+  //     ^
+  // [analyzer] unspecified
+  // [cfe] unspecified
+};
+
+void main() {
+  test1();
+  test2();
+}
diff --git a/tests/language/invalid_returns/async_invalid_return_34_test.dart b/tests/language/invalid_returns/async_invalid_return_34_test.dart
new file mode 100644
index 0000000..25969da
--- /dev/null
+++ b/tests/language/invalid_returns/async_invalid_return_34_test.dart
@@ -0,0 +1,31 @@
+// Copyright (c) 2018, the Dart project authors.  Please see the AUTHORS file
+// 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.
+
+import 'dart:async';
+
+/* `return exp;` where `exp` has static type `S` is an error if the future
+ * value type of the function is neither `void` nor `dynamic`,
+ * and `flatten(S)` is `void` or `void*`.
+ */
+
+FutureOr<void> v = null;
+
+Future<Object?> test1() async {
+  return v;
+  //     ^
+  // [analyzer] unspecified
+  // [cfe] unspecified
+}
+
+Future<Object?> Function() test2 = () async {
+  return v;
+  //     ^
+  // [analyzer] unspecified
+  // [cfe] unspecified
+};
+
+void main() {
+  test1();
+  test2();
+}
diff --git a/tests/language/invalid_returns/async_invalid_return_35_test.dart b/tests/language/invalid_returns/async_invalid_return_35_test.dart
new file mode 100644
index 0000000..79e6995
--- /dev/null
+++ b/tests/language/invalid_returns/async_invalid_return_35_test.dart
@@ -0,0 +1,31 @@
+// Copyright (c) 2018, the Dart project authors.  Please see the AUTHORS file
+// 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.
+
+import 'dart:async';
+
+/* `return exp;` where `exp` has static type `S` is an error if the future
+ * value type of the function is neither `void` nor `dynamic`,
+ * and `flatten(S)` is `void` or `void*`.
+ */
+
+void v = null;
+
+FutureOr<Object?> test1() async {
+  return v;
+  //     ^
+  // [analyzer] unspecified
+  // [cfe] unspecified
+}
+
+FutureOr<Object?> Function() test2 = () async {
+  return v;
+  //     ^
+  // [analyzer] unspecified
+  // [cfe] unspecified
+};
+
+void main() {
+  test1();
+  test2();
+}
diff --git a/tests/language/invalid_returns/async_invalid_return_36_test.dart b/tests/language/invalid_returns/async_invalid_return_36_test.dart
new file mode 100644
index 0000000..6ba0c69
--- /dev/null
+++ b/tests/language/invalid_returns/async_invalid_return_36_test.dart
@@ -0,0 +1,47 @@
+// Copyright (c) 2018, the Dart project authors.  Please see the AUTHORS file
+// 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.
+
+import 'dart:async';
+
+/* `return exp;` where `exp` has static type `S` is an error if the future
+ * value type of the function is neither `void` nor `dynamic`,
+ * and `flatten(S)` is `void` or `void*`.
+ */
+
+Future<void> v = Future.value(null);
+
+FutureOr<Object> test1() async {
+  return v;
+  //     ^
+  // [analyzer] unspecified
+  // [cfe] unspecified
+}
+
+FutureOr<Object?> test2() async {
+  return v;
+  //     ^
+  // [analyzer] unspecified
+  // [cfe] unspecified
+}
+
+FutureOr<Object> Function() test3 = () async {
+  return v;
+  //     ^
+  // [analyzer] unspecified
+  // [cfe] unspecified
+};
+
+FutureOr<Object?> Function() test4 = () async {
+  return v;
+  //     ^
+  // [analyzer] unspecified
+  // [cfe] unspecified
+};
+
+void main() {
+  test1();
+  test2();
+  test3();
+  test4();
+}
diff --git a/tests/language/invalid_returns/async_invalid_return_37_test.dart b/tests/language/invalid_returns/async_invalid_return_37_test.dart
new file mode 100644
index 0000000..4a89515
--- /dev/null
+++ b/tests/language/invalid_returns/async_invalid_return_37_test.dart
@@ -0,0 +1,31 @@
+// Copyright (c) 2018, the Dart project authors.  Please see the AUTHORS file
+// 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.
+
+import 'dart:async';
+
+/* `return exp;` where `exp` has static type `S` is an error if the future
+ * value type of the function is neither `void` nor `dynamic`,
+ * and `flatten(S)` is `void` or `void*`.
+ */
+
+FutureOr<void> v = null;
+
+FutureOr<Object?> test1() async {
+  return v;
+  //     ^
+  // [analyzer] unspecified
+  // [cfe] unspecified
+}
+
+FutureOr<Object?> Function() test2 = () async {
+  return v;
+  //     ^
+  // [analyzer] unspecified
+  // [cfe] unspecified
+};
+
+void main() {
+  test1();
+  test2();
+}
diff --git a/tests/language/invalid_returns/async_invalid_return_38_test.dart b/tests/language/invalid_returns/async_invalid_return_38_test.dart
new file mode 100644
index 0000000..3f18592
--- /dev/null
+++ b/tests/language/invalid_returns/async_invalid_return_38_test.dart
@@ -0,0 +1,31 @@
+// Copyright (c) 2018, the Dart project authors.  Please see the AUTHORS file
+// 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.
+
+import 'dart:async';
+
+/* `return exp;` where `exp` has static type `S` and the future value type of
+ * the function is `Tv` is an error if `S` is not assignable to `Tv` and
+ * `flatten(S)` is not a subtype of `Tv`.
+ */
+
+int v = 0;
+
+Future<String> test1() async {
+  return v;
+  //     ^
+  // [analyzer] unspecified
+  // [cfe] unspecified
+}
+
+Future<String> Function() test2 = () async {
+  return v;
+  //     ^
+  // [analyzer] unspecified
+  // [cfe] unspecified
+};
+
+void main() {
+  test1();
+  test2();
+}
diff --git a/tests/language/invalid_returns/async_invalid_return_39_test.dart b/tests/language/invalid_returns/async_invalid_return_39_test.dart
new file mode 100644
index 0000000..80deb7f
--- /dev/null
+++ b/tests/language/invalid_returns/async_invalid_return_39_test.dart
@@ -0,0 +1,31 @@
+// Copyright (c) 2018, the Dart project authors.  Please see the AUTHORS file
+// 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.
+
+import 'dart:async';
+
+/* `return exp;` where `exp` has static type `S` and the future value type of
+ * the function is `Tv` is an error if `S` is not assignable to `Tv` and
+ * `flatten(S)` is not a subtype of `Tv`.
+ */
+
+Future<int> v = Future.value(0);
+
+Future<String> test1() async {
+  return v;
+  //     ^
+  // [analyzer] unspecified
+  // [cfe] unspecified
+}
+
+Future<String> Function() test2 = () async {
+  return v;
+  //     ^
+  // [analyzer] unspecified
+  // [cfe] unspecified
+};
+
+void main() {
+  test1();
+  test2();
+}
diff --git a/tests/language/invalid_returns/async_invalid_return_40_test.dart b/tests/language/invalid_returns/async_invalid_return_40_test.dart
new file mode 100644
index 0000000..71589c8
--- /dev/null
+++ b/tests/language/invalid_returns/async_invalid_return_40_test.dart
@@ -0,0 +1,31 @@
+// Copyright (c) 2018, the Dart project authors.  Please see the AUTHORS file
+// 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.
+
+import 'dart:async';
+
+/* `return exp;` where `exp` has static type `S` and the future value type of
+ * the function is `Tv` is an error if `S` is not assignable to `Tv` and
+ * `flatten(S)` is not a subtype of `Tv`.
+ */
+
+FutureOr<num> v = 0;
+
+Future<int> test1() async {
+  return v;
+  //     ^
+  // [analyzer] unspecified
+  // [cfe] unspecified
+}
+
+Future<int> Function() test2 = () async {
+  return v;
+  //     ^
+  // [analyzer] unspecified
+  // [cfe] unspecified
+};
+
+void main() {
+  test1();
+  test2();
+}
diff --git a/tests/language/invalid_returns/async_invalid_return_41_test.dart b/tests/language/invalid_returns/async_invalid_return_41_test.dart
new file mode 100644
index 0000000..6191c70
--- /dev/null
+++ b/tests/language/invalid_returns/async_invalid_return_41_test.dart
@@ -0,0 +1,31 @@
+// Copyright (c) 2018, the Dart project authors.  Please see the AUTHORS file
+// 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.
+
+import 'dart:async';
+
+/* `return exp;` where `exp` has static type `S` and the future value type of
+ * the function is `Tv` is an error if `S` is not assignable to `Tv` and
+ * `flatten(S)` is not a subtype of `Tv`.
+ */
+
+Future<Future<String>> v = Future.value(Future.value(''));
+
+Future<String> test1() async {
+  return v;
+  //     ^
+  // [analyzer] unspecified
+  // [cfe] unspecified
+}
+
+Future<String> Function() test2 = () async {
+  return v;
+  //     ^
+  // [analyzer] unspecified
+  // [cfe] unspecified
+};
+
+void main() {
+  test1();
+  test2();
+}
diff --git a/tests/language/invalid_returns/async_invalid_return_42_test.dart b/tests/language/invalid_returns/async_invalid_return_42_test.dart
new file mode 100644
index 0000000..0988253
--- /dev/null
+++ b/tests/language/invalid_returns/async_invalid_return_42_test.dart
@@ -0,0 +1,31 @@
+// Copyright (c) 2018, the Dart project authors.  Please see the AUTHORS file
+// 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.
+
+import 'dart:async';
+
+/* `return exp;` where `exp` has static type `S` and the future value type of
+ * the function is `Tv` is an error if `S` is not assignable to `Tv` and
+ * `flatten(S)` is not a subtype of `Tv`.
+ */
+
+int v = 0;
+
+FutureOr<String> test1() async {
+  return v;
+  //     ^
+  // [analyzer] unspecified
+  // [cfe] unspecified
+}
+
+FutureOr<String> Function() test2 = () async {
+  return v;
+  //     ^
+  // [analyzer] unspecified
+  // [cfe] unspecified
+};
+
+void main() {
+  test1();
+  test2();
+}
diff --git a/tests/language/invalid_returns/async_invalid_return_43_test.dart b/tests/language/invalid_returns/async_invalid_return_43_test.dart
new file mode 100644
index 0000000..dbb5b1d
--- /dev/null
+++ b/tests/language/invalid_returns/async_invalid_return_43_test.dart
@@ -0,0 +1,31 @@
+// Copyright (c) 2018, the Dart project authors.  Please see the AUTHORS file
+// 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.
+
+import 'dart:async';
+
+/* `return exp;` where `exp` has static type `S` and the future value type of
+ * the function is `Tv` is an error if `S` is not assignable to `Tv` and
+ * `flatten(S)` is not a subtype of `Tv`.
+ */
+
+Future<int> v = Future.value(0);
+
+FutureOr<String> test1() async {
+  return v;
+  //     ^
+  // [analyzer] unspecified
+  // [cfe] unspecified
+}
+
+FutureOr<String> Function() test2 = () async {
+  return v;
+  //     ^
+  // [analyzer] unspecified
+  // [cfe] unspecified
+};
+
+void main() {
+  test1();
+  test2();
+}
diff --git a/tests/language/invalid_returns/async_invalid_return_44_test.dart b/tests/language/invalid_returns/async_invalid_return_44_test.dart
new file mode 100644
index 0000000..c9adfeb
--- /dev/null
+++ b/tests/language/invalid_returns/async_invalid_return_44_test.dart
@@ -0,0 +1,31 @@
+// Copyright (c) 2018, the Dart project authors.  Please see the AUTHORS file
+// 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.
+
+import 'dart:async';
+
+/* `return exp;` where `exp` has static type `S` and the future value type of
+ * the function is `Tv` is an error if `S` is not assignable to `Tv` and
+ * `flatten(S)` is not a subtype of `Tv`.
+ */
+
+FutureOr<int> v = 0;
+
+FutureOr<String> test1() async {
+  return v;
+  //     ^
+  // [analyzer] unspecified
+  // [cfe] unspecified
+}
+
+FutureOr<String> Function() test2 = () async {
+  return v;
+  //     ^
+  // [analyzer] unspecified
+  // [cfe] unspecified
+};
+
+void main() {
+  test1();
+  test2();
+}
diff --git a/tests/language/invalid_returns/async_invalid_return_45_test.dart b/tests/language/invalid_returns/async_invalid_return_45_test.dart
new file mode 100644
index 0000000..60b916a
--- /dev/null
+++ b/tests/language/invalid_returns/async_invalid_return_45_test.dart
@@ -0,0 +1,31 @@
+// Copyright (c) 2018, the Dart project authors.  Please see the AUTHORS file
+// 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.
+
+import 'dart:async';
+
+/* `return exp;` where `exp` has static type `S` and the future value type of
+ * the function is `Tv` is an error if `S` is not assignable to `Tv` and
+ * `flatten(S)` is not a subtype of `Tv`.
+ */
+
+Future<Future<String>> v = Future.value(Future.value(''));
+
+FutureOr<String> test1() async {
+  return v;
+  //     ^
+  // [analyzer] unspecified
+  // [cfe] unspecified
+}
+
+FutureOr<String> Function() test2 = () async {
+  return v;
+  //     ^
+  // [analyzer] unspecified
+  // [cfe] unspecified
+};
+
+void main() {
+  test1();
+  test2();
+}
diff --git a/tests/language/invalid_returns/async_invalid_return_47_test.dart b/tests/language/invalid_returns/async_invalid_return_47_test.dart
new file mode 100644
index 0000000..156c737
--- /dev/null
+++ b/tests/language/invalid_returns/async_invalid_return_47_test.dart
@@ -0,0 +1,31 @@
+// Copyright (c) 2020, the Dart project authors.  Please see the AUTHORS file
+// 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.
+
+import 'dart:async';
+
+/* `return exp;` where `exp` has static type `S` is an error if the future
+ * value type of the function is neither `void` nor `dynamic`,
+ * and `flatten(S)` is `void` or `void*`.
+ */
+
+Future<void> v = Future.value(null);
+
+Future<Null> test1() async {
+  return v;
+  //     ^
+  // [analyzer] unspecified
+  // [cfe] unspecified
+}
+
+Future<Nullf> Function() test2 = () async {
+  return v;
+  //     ^
+  // [analyzer] unspecified
+  // [cfe] unspecified
+};
+
+void main() {
+  test1();
+  test2();
+}
diff --git a/tests/language/invalid_returns/async_invalid_return_48_test.dart b/tests/language/invalid_returns/async_invalid_return_48_test.dart
new file mode 100644
index 0000000..58e9013
--- /dev/null
+++ b/tests/language/invalid_returns/async_invalid_return_48_test.dart
@@ -0,0 +1,31 @@
+// Copyright (c) 2020, the Dart project authors.  Please see the AUTHORS file
+// 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.
+
+import 'dart:async';
+
+/* `return exp;` where `exp` has static type `S` is an error if the future
+ * value type of the function is neither `void` nor `dynamic`,
+ * and `flatten(S)` is `void` or `void*`.
+ */
+
+FutureOr<void> v = null;
+
+Future<Null> test1() async {
+  return v;
+  //     ^
+  // [analyzer] unspecified
+  // [cfe] unspecified
+}
+
+Future<Null> Function() test2 = () async {
+  return v;
+  //     ^
+  // [analyzer] unspecified
+  // [cfe] unspecified
+};
+
+void main() {
+  test1();
+  test2();
+}
diff --git a/tests/language/invalid_returns/async_invalid_return_50_test.dart b/tests/language/invalid_returns/async_invalid_return_50_test.dart
new file mode 100644
index 0000000..ae29187
--- /dev/null
+++ b/tests/language/invalid_returns/async_invalid_return_50_test.dart
@@ -0,0 +1,31 @@
+// Copyright (c) 2020, the Dart project authors.  Please see the AUTHORS file
+// 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.
+
+import 'dart:async';
+
+/* `return exp;` where `exp` has static type `S` is an error if the future
+ * value type of the function is neither `void` nor `dynamic`,
+ * and `flatten(S)` is `void` or `void*`.
+ */
+
+Future<void> v = Future.value(null);
+
+FutureOr<Null> test1() async {
+  return v;
+  //     ^
+  // [analyzer] unspecified
+  // [cfe] unspecified
+}
+
+FutureOr<Null> Function() test2 = () async {
+  return v;
+  //     ^
+  // [analyzer] unspecified
+  // [cfe] unspecified
+};
+
+void main() {
+  test1();
+  test2();
+}
diff --git a/tests/language/invalid_returns/async_invalid_return_51_test.dart b/tests/language/invalid_returns/async_invalid_return_51_test.dart
new file mode 100644
index 0000000..819a989
--- /dev/null
+++ b/tests/language/invalid_returns/async_invalid_return_51_test.dart
@@ -0,0 +1,31 @@
+// Copyright (c) 2020, the Dart project authors.  Please see the AUTHORS file
+// 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.
+
+import 'dart:async';
+
+/* `return exp;` where `exp` has static type `S` is an error if the future
+ * value type of the function is neither `void` nor `dynamic`,
+ * and `flatten(S)` is `void` or `void*`.
+ */
+
+FutureOr<void> v = null;
+
+FutureOr<Null> test1() async {
+  return v;
+  //     ^
+  // [analyzer] unspecified
+  // [cfe] unspecified
+}
+
+FutureOr<Null> Function() test2 = () async {
+  return v;
+  //     ^
+  // [analyzer] unspecified
+  // [cfe] unspecified
+};
+
+void main() {
+  test1();
+  test2();
+}
diff --git a/tests/language/invalid_returns/async_invalid_return_52_test.dart b/tests/language/invalid_returns/async_invalid_return_52_test.dart
new file mode 100644
index 0000000..a665932
--- /dev/null
+++ b/tests/language/invalid_returns/async_invalid_return_52_test.dart
@@ -0,0 +1,31 @@
+// Copyright (c) 2020, the Dart project authors.  Please see the AUTHORS file
+// 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.
+
+import 'dart:async';
+
+/* `return exp;` where `exp` has static type `S` is an error if the future
+ * value type of the function is neither `void` nor `dynamic`,
+ * and `flatten(S)` is `void` or `void*`.
+ */
+
+int v = 0;
+
+Future<void> test1() async {
+  return v;
+  //     ^
+  // [analyzer] unspecified
+  // [cfe] unspecified
+}
+
+Future<void> Function() test2 = () async {
+  return v;
+  //     ^
+  // [analyzer] unspecified
+  // [cfe] unspecified
+};
+
+void main() {
+  test1();
+  test2();
+}
diff --git a/tests/language/invalid_returns/async_invalid_return_53_test.dart b/tests/language/invalid_returns/async_invalid_return_53_test.dart
new file mode 100644
index 0000000..23dcce8
--- /dev/null
+++ b/tests/language/invalid_returns/async_invalid_return_53_test.dart
@@ -0,0 +1,31 @@
+// Copyright (c) 2020, the Dart project authors.  Please see the AUTHORS file
+// 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.
+
+import 'dart:async';
+
+/* `return exp;` where `exp` has static type `S` is an error if the future
+ * value type of the function is neither `void` nor `dynamic`,
+ * and `flatten(S)` is `void` or `void*`.
+ */
+
+Object v = true;
+
+Future<void> test1() async {
+  return v;
+  //     ^
+  // [analyzer] unspecified
+  // [cfe] unspecified
+}
+
+Future<void> Function() test2 = () async {
+  return v;
+  //     ^
+  // [analyzer] unspecified
+  // [cfe] unspecified
+};
+
+void main() {
+  test1();
+  test2();
+}
diff --git a/tests/language/invalid_returns/async_invalid_return_54_test.dart b/tests/language/invalid_returns/async_invalid_return_54_test.dart
new file mode 100644
index 0000000..66a536f
--- /dev/null
+++ b/tests/language/invalid_returns/async_invalid_return_54_test.dart
@@ -0,0 +1,31 @@
+// Copyright (c) 2020, the Dart project authors.  Please see the AUTHORS file
+// 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.
+
+import 'dart:async';
+
+/* `return exp;` where `exp` has static type `S` is an error if the future
+ * value type of the function is neither `void` nor `dynamic`,
+ * and `flatten(S)` is `void` or `void*`.
+ */
+
+FutureOr<int> v = 0;
+
+Future<void> test1() async {
+  return v;
+  //     ^
+  // [analyzer] unspecified
+  // [cfe] unspecified
+}
+
+Future<void> Function() test2 = () async {
+  return v;
+  //     ^
+  // [analyzer] unspecified
+  // [cfe] unspecified
+};
+
+void main() {
+  test1();
+  test2();
+}
diff --git a/tests/language/invalid_returns/async_invalid_return_55_test.dart b/tests/language/invalid_returns/async_invalid_return_55_test.dart
new file mode 100644
index 0000000..eb29648
--- /dev/null
+++ b/tests/language/invalid_returns/async_invalid_return_55_test.dart
@@ -0,0 +1,31 @@
+// Copyright (c) 2020, the Dart project authors.  Please see the AUTHORS file
+// 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.
+
+import 'dart:async';
+
+/* `return exp;` where `exp` has static type `S` is an error if the future
+ * value type of the function is neither `void` nor `dynamic`,
+ * and `flatten(S)` is `void` or `void*`.
+ */
+
+Future<int> v = Future.value(0);
+
+Future<void> test1() async {
+  return v;
+  //     ^
+  // [analyzer] unspecified
+  // [cfe] unspecified
+}
+
+Future<void> Function() test2 = () async {
+  return v;
+  //     ^
+  // [analyzer] unspecified
+  // [cfe] unspecified
+};
+
+void main() {
+  test1();
+  test2();
+}
diff --git a/tests/language/invalid_returns/async_invalid_return_56_test.dart b/tests/language/invalid_returns/async_invalid_return_56_test.dart
new file mode 100644
index 0000000..66460f9
--- /dev/null
+++ b/tests/language/invalid_returns/async_invalid_return_56_test.dart
@@ -0,0 +1,31 @@
+// Copyright (c) 2020, the Dart project authors.  Please see the AUTHORS file
+// 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.
+
+import 'dart:async';
+
+/* `return exp;` where `exp` has static type `S` is an error if the future
+ * value type of the function is neither `void` nor `dynamic`,
+ * and `flatten(S)` is `void` or `void*`.
+ */
+
+int v = 0;
+
+FutureOr<void> test1() async {
+  return v;
+  //     ^
+  // [analyzer] unspecified
+  // [cfe] unspecified
+}
+
+FutureOr<void> Function() test2 = () async {
+  return v;
+  //     ^
+  // [analyzer] unspecified
+  // [cfe] unspecified
+};
+
+void main() {
+  test1();
+  test2();
+}
diff --git a/tests/language/invalid_returns/async_invalid_return_57_test.dart b/tests/language/invalid_returns/async_invalid_return_57_test.dart
new file mode 100644
index 0000000..f0c9284
--- /dev/null
+++ b/tests/language/invalid_returns/async_invalid_return_57_test.dart
@@ -0,0 +1,31 @@
+// Copyright (c) 2020, the Dart project authors.  Please see the AUTHORS file
+// 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.
+
+import 'dart:async';
+
+/* `return exp;` where `exp` has static type `S` is an error if the future
+ * value type of the function is neither `void` nor `dynamic`,
+ * and `flatten(S)` is `void` or `void*`.
+ */
+
+Object v = true;
+
+FutureOr<void> test1() async {
+  return v;
+  //     ^
+  // [analyzer] unspecified
+  // [cfe] unspecified
+}
+
+FutureOr<void> Function() test2 = () async {
+  return v;
+  //     ^
+  // [analyzer] unspecified
+  // [cfe] unspecified
+};
+
+void main() {
+  test1();
+  test2();
+}
diff --git a/tests/language/invalid_returns/async_invalid_return_58_test.dart b/tests/language/invalid_returns/async_invalid_return_58_test.dart
new file mode 100644
index 0000000..ea3599c
--- /dev/null
+++ b/tests/language/invalid_returns/async_invalid_return_58_test.dart
@@ -0,0 +1,31 @@
+// Copyright (c) 2020, the Dart project authors.  Please see the AUTHORS file
+// 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.
+
+import 'dart:async';
+
+/* `return exp;` where `exp` has static type `S` is an error if the future
+ * value type of the function is neither `void` nor `dynamic`,
+ * and `flatten(S)` is `void` or `void*`.
+ */
+
+FutureOr<int> v = 0;
+
+FutureOr<void> test1() async {
+  return v;
+  //     ^
+  // [analyzer] unspecified
+  // [cfe] unspecified
+}
+
+FutureOr<void> Function() test2 = () async {
+  return v;
+  //     ^
+  // [analyzer] unspecified
+  // [cfe] unspecified
+};
+
+void main() {
+  test1();
+  test2();
+}
diff --git a/tests/language/invalid_returns/async_invalid_return_59_test.dart b/tests/language/invalid_returns/async_invalid_return_59_test.dart
new file mode 100644
index 0000000..b24a015
--- /dev/null
+++ b/tests/language/invalid_returns/async_invalid_return_59_test.dart
@@ -0,0 +1,31 @@
+// Copyright (c) 2020, the Dart project authors.  Please see the AUTHORS file
+// 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.
+
+import 'dart:async';
+
+/* `return exp;` where `exp` has static type `S` is an error if the future
+ * value type of the function is neither `void` nor `dynamic`,
+ * and `flatten(S)` is `void` or `void*`.
+ */
+
+Future<int> v = Future.value(0);
+
+FutureOr<void> test1() async {
+  return v;
+  //     ^
+  // [analyzer] unspecified
+  // [cfe] unspecified
+}
+
+FutureOr<void> Function() test2 = () async {
+  return v;
+  //     ^
+  // [analyzer] unspecified
+  // [cfe] unspecified
+};
+
+void main() {
+  test1();
+  test2();
+}
diff --git a/tests/language/invalid_returns/async_mixed_valid_returns_legacy_lib.dart b/tests/language/invalid_returns/async_mixed_valid_returns_legacy_lib.dart
new file mode 100644
index 0000000..980deba
--- /dev/null
+++ b/tests/language/invalid_returns/async_mixed_valid_returns_legacy_lib.dart
@@ -0,0 +1,23 @@
+// Copyright (c) 2020, the Dart project authors.  Please see the AUTHORS file
+// 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.6
+
+import 'dart:async';
+
+void vv = null;
+dynamic vd = null;
+Object vo = null;
+Null vn = null;
+int vi = 0;
+Future<void> fvv = Future<void>.value(null);
+Future<dynamic> fvd = Future<dynamic>.value(null);
+Future<Object> fvo = Future<Object>.value(null);
+Future<Null> fvn = Future<Null>.value(null);
+Future<int> fvi = Future<int>.value(0);
+FutureOr<void> fovv = null;
+FutureOr<dynamic> fovd = null;
+FutureOr<Object> fovo = null;
+FutureOr<Null> fovn = null;
+FutureOr<int> fovi = 0;
diff --git a/tests/language/invalid_returns/async_mixed_valid_returns_test.dart b/tests/language/invalid_returns/async_mixed_valid_returns_test.dart
new file mode 100644
index 0000000..d6f93ed
--- /dev/null
+++ b/tests/language/invalid_returns/async_mixed_valid_returns_test.dart
@@ -0,0 +1,537 @@
+// Copyright (c) 2018, the Dart project authors.  Please see the AUTHORS file
+// 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.
+
+// Requirements=nnbd-weak
+
+import 'dart:async';
+import 'async_mixed_valid_returns_legacy_lib.dart';
+
+/* Test the cases where expression bodied functions are more permissive
+ * than block bodied functions (places where they behave the same
+ * are tested below).
+ *
+ * An asynchronous expression bodied function with return type `T`, future
+ * value type `Tv`, and return expression `e` has a valid return if:
+ * `Tv` is `void`,
+ * or `return e;` is a valid return for an equivalent block bodied function
+ * with return type `T` as defined below.
+ */
+
+void async_int_to_void_e() async => vi;
+Future<void> async_int_to_Future_void__e() async => vi;
+FutureOr<void> async_int_to_FutureOr_void__e() async => vi;
+Future<void>? async_int_to_Future_void_q__e() async => vi;
+FutureOr<void>? async_int_to_FutureOr_void_q__e() async => vi;
+void async_Object_to_void_e() async => vo;
+Future<void> async_Object_to_Future_void__e() async => vo;
+FutureOr<void> async_Object_to_FutureOr_void__e() async => vo;
+Future<void>? async_Object_to_Future_void_q__e() async => vo;
+FutureOr<void>? async_Object_to_FutureOr_void_q__e() async => vo;
+void async_Future_int__to_void_e() async => fvi;
+Future<void> async_Future_int__to_Future_void__e() async => fvi;
+FutureOr<void> async_Future_int__to_FutureOr_void__e() async => fvi;
+Future<void>? async_Future_int__to_Future_void_q__e() async => fvi;
+FutureOr<void>? async_Future_int__to_FutureOr_void_q__e() async => fvi;
+void async_FutureOr_int__to_void_e() async => fovi;
+Future<void> async_FutureOr_int__to_Future_void__e() async => fovi;
+FutureOr<void> async_FutureOr_int__to_FutureOr_void__e() async => fovi;
+Future<void>? async_FutureOr_int__to_Future_void_q__e() async => fovi;
+FutureOr<void>? async_FutureOr_int__to_FutureOr_void_q__e() async => fovi;
+void async_Future_Object__to_void_e() async => fvo;
+Future<void> async_Future_Object__to_Future_void__e() async => fvo;
+FutureOr<void> async_Future_Object__to_FutureOr_void__e() async => fvo;
+Future<void>? async_Future_Object__to_Future_void_q__e() async => fvo;
+FutureOr<void>? async_Future_Object__to_FutureOr_void_q__e() async => fvo;
+void async_FutureOr_Object__to_void_e() async => fovo;
+Future<void> async_FutureOr_Object__to_Future_void__e() async => fovo;
+FutureOr<void> async_FutureOr_Object__to_FutureOr_void__e() async => fovo;
+Future<void>? async_FutureOr_Object__to_Future_void_q__e() async => fovo;
+FutureOr<void>? async_FutureOr_Object__to_FutureOr_void_q__e() async => fovo;
+
+/* `return exp;` where `exp` has static type `S` and the future value type
+ * of the function is `Tv` is a valid return if:
+ * `flatten(S)` is `void*`
+ * and `Tv` is `void` or `dynamic`.
+ */
+
+Future<void> async_void_to_Future_void__e() async => vv;
+Future<void> async_void_to_Future_void_() async {
+  return vv;
+}
+
+Future<void>? async_void_to_Future_void_q__e() async => vv;
+Future<void>? async_void_to_Future_void_q_() async {
+  return vv;
+}
+
+Future<void> async_Future_void__to_Future_void__e() async => fvv;
+Future<void> async_Future_void__to_Future_void_() async {
+  return fvv;
+}
+
+Future<void>? async_Future_void__to_Future_void_q__e() async => fvv;
+Future<void>? async_Future_void__to_Future_void_q_() async {
+  return fvv;
+}
+
+Future<void> async_FutureOr_void__to_Future_void__e() async => fovv;
+Future<void> async_FutureOr_void__to_Future_void_() async {
+  return fovv;
+}
+
+Future<void>? async_FutureOr_void__to_Future_void_q__e() async => fovv;
+Future<void>? async_FutureOr_void__to_Future_void_q_() async {
+  return fovv;
+}
+
+Future<dynamic> async_void_to_Future_dynamic__e() async => vv;
+Future<dynamic> async_void_to_Future_dynamic_() async {
+  return vv;
+}
+
+Future<dynamic>? async_void_to_Future_dynamic_q__e() async => vv;
+Future<dynamic>? async_void_to_Future_dynamic_q_() async {
+  return vv;
+}
+
+Future<dynamic> async_Future_void__to_Future_dynamic__e() async => fvv;
+Future<dynamic> async_Future_void__to_Future_dynamic_() async {
+  return fvv;
+}
+
+Future<dynamic>? async_Future_void__to_Future_dynamic_q__e() async => fvv;
+Future<dynamic>? async_Future_void__to_Future_dynamic_q_() async {
+  return fvv;
+}
+
+Future<dynamic> async_FutureOr_void__to_Future_dynamic__e() async => fovv;
+Future<dynamic> async_FutureOr_void__to_Future_dynamic_() async {
+  return fovv;
+}
+
+Future<dynamic>? async_FutureOr_void__to_Future_dynamic_q__e() async => fovv;
+Future<dynamic>? async_FutureOr_void__to_Future_dynamic_q_() async {
+  return fovv;
+}
+
+FutureOr<void> async_void_to_FutureOr_void__e() async => vv;
+FutureOr<void> async_void_to_FutureOr_void_() async {
+  return vv;
+}
+
+FutureOr<void>? async_void_to_FutureOr_void_q__e() async => vv;
+FutureOr<void>? async_void_to_FutureOr_void_q_() async {
+  return vv;
+}
+
+FutureOr<void> async_Future_void__to_FutureOr_void__e() async => fvv;
+FutureOr<void> async_Future_void__to_FutureOr_void_() async {
+  return fvv;
+}
+
+FutureOr<void>? async_Future_void__to_FutureOr_void_q__e() async => fvv;
+FutureOr<void>? async_Future_void__to_FutureOr_void_q_() async {
+  return fvv;
+}
+
+FutureOr<void> async_FutureOr_void__to_FutureOr_void__e() async => fovv;
+FutureOr<void> async_FutureOr_void__to_FutureOr_void_() async {
+  return fovv;
+}
+
+FutureOr<void>? async_FutureOr_void__to_FutureOr_void_q__e() async => fovv;
+FutureOr<void>? async_FutureOr_void__to_FutureOr_void_q_() async {
+  return fovv;
+}
+
+FutureOr<dynamic> async_void_to_FutureOr_dynamic__e() async => vv;
+FutureOr<dynamic> async_void_to_FutureOr_dynamic_() async {
+  return vv;
+}
+
+FutureOr<dynamic>? async_void_to_FutureOr_dynamic_q__e() async => vv;
+FutureOr<dynamic>? async_void_to_FutureOr_dynamic_q_() async {
+  return vv;
+}
+
+FutureOr<dynamic> async_Future_void__to_FutureOr_dynamic__e() async => fvv;
+FutureOr<dynamic> async_Future_void__to_FutureOr_dynamic_() async {
+  return fvv;
+}
+
+FutureOr<dynamic>? async_Future_void__to_FutureOr_dynamic_q__e() async => fvv;
+FutureOr<dynamic>? async_Future_void__to_FutureOr_dynamic_q_() async {
+  return fvv;
+}
+
+FutureOr<dynamic> async_FutureOr_void__to_FutureOr_dynamic__e() async => fovv;
+FutureOr<dynamic> async_FutureOr_void__to_FutureOr_dynamic_() async {
+  return fovv;
+}
+
+FutureOr<dynamic>? async_FutureOr_void__to_FutureOr_dynamic_q__e() async =>
+    fovv;
+FutureOr<dynamic>? async_FutureOr_void__to_FutureOr_dynamic_q_() async {
+  return fovv;
+}
+
+void async_void_to_void_e() async => vv;
+void async_void_to_void() async {
+  return vv;
+}
+
+void async_Future_void__to_void_e() async => fvv;
+void async_Future_void__to_void() async {
+  return fvv;
+}
+
+void async_FutureOr_void__to_void_e() async => fovv;
+void async_FutureOr_void__to_void() async {
+  return fovv;
+}
+
+dynamic async_void_to_dynamic_e() async => vv;
+dynamic async_void_to_dynamic() async {
+  return vv;
+}
+
+dynamic? async_void_to_dynamic_q_e() async => vv;
+dynamic? async_void_to_dynamic_q() async {
+  return vv;
+}
+
+dynamic async_Future_void__to_dynamic_e() async => fvv;
+dynamic async_Future_void__to_dynamic() async {
+  return fvv;
+}
+
+dynamic? async_Future_void__to_dynamic_q_e() async => fvv;
+dynamic? async_Future_void__to_dynamic_q() async {
+  return fvv;
+}
+
+dynamic async_FutureOr_void__to_dynamic_e() async => fovv;
+dynamic async_FutureOr_void__to_dynamic() async {
+  return fovv;
+}
+
+dynamic? async_FutureOr_void__to_dynamic_q_e() async => fovv;
+dynamic? async_FutureOr_void__to_dynamic_q() async {
+  return fovv;
+}
+
+/* `return exp;` where `exp` has static type `S` and the future value type
+ * of the function is `Tv` is a valid return if:
+ * `Tv` is `void`
+ * and `flatten(S)` is `void*`, `dynamic*`, or `Null*`.
+ */
+
+void async_Future_dynamic__to_void_e() async => fvd;
+void async_Future_dynamic__to_void() async {
+  return fvd;
+}
+
+Future<void> async_Future_dynamic__to_Future_void__e() async => fvd;
+Future<void> async_Future_dynamic__to_Future_void_() async {
+  return fvd;
+}
+
+Future<void>? async_Future_dynamic__to_Future_void_q__e() async => fvd;
+Future<void>? async_Future_dynamic__to_Future_void_q_() async {
+  return fvd;
+}
+
+FutureOr<void> async_Future_dynamic__to_FutureOr_void__e() async => fvd;
+FutureOr<void> async_Future_dynamic__to_FutureOr_void_() async {
+  return fvd;
+}
+
+FutureOr<void>? async_Future_dynamic__to_FutureOr_void_q__e() async => fvd;
+FutureOr<void>? async_Future_dynamic__to_FutureOr_void_q_() async {
+  return fvd;
+}
+
+void async_Future_Null__to_void_e() async => fvn;
+void async_Future_Null__to_void() async {
+  return fvn;
+}
+
+Future<void> async_Future_Null__to_Future_void__e() async => fvn;
+Future<void> async_Future_Null__to_Future_void_() async {
+  return fvn;
+}
+
+Future<void>? async_Future_Null__to_Future_void_q__e() async => fvn;
+Future<void>? async_Future_Null__to_Future_void_q_() async {
+  return fvn;
+}
+
+FutureOr<void> async_Future_Null__to_FutureOr_void__e() async => fvn;
+FutureOr<void> async_Future_Null__to_FutureOr_void_() async {
+  return fvn;
+}
+
+FutureOr<void>? async_Future_Null__to_FutureOr_void_q__e() async => fvn;
+FutureOr<void>? async_Future_Null__to_FutureOr_void_q_() async {
+  return fvn;
+}
+
+void async_FutureOr_dynamic__to_void_e() async => fovd;
+void async_FutureOr_dynamic__to_void() async {
+  return fovd;
+}
+
+Future<void> async_FutureOr_dynamic__to_Future_void__e() async => fovd;
+Future<void> async_FutureOr_dynamic__to_Future_void_() async {
+  return fovd;
+}
+
+Future<void>? async_FutureOr_dynamic__to_Future_void_q__e() async => fovd;
+Future<void>? async_FutureOr_dynamic__to_Future_void_q_() async {
+  return fovd;
+}
+
+FutureOr<void> async_FutureOr_dynamic__to_FutureOr_void__e() async => fovd;
+FutureOr<void> async_FutureOr_dynamic__to_FutureOr_void_() async {
+  return fovd;
+}
+
+FutureOr<void>? async_FutureOr_dynamic__to_FutureOr_void_q__e() async => fovd;
+FutureOr<void>? async_FutureOr_dynamic__to_FutureOr_void_q_() async {
+  return fovd;
+}
+
+void async_FutureOr_Null__to_void_e() async => fovn;
+void async_FutureOr_Null__to_void() async {
+  return fovn;
+}
+
+Future<void> async_FutureOr_Null__to_Future_void__e() async => fovn;
+Future<void> async_FutureOr_Null__to_Future_void_() async {
+  return fovn;
+}
+
+Future<void>? async_FutureOr_Null__to_Future_void_q__e() async => fovn;
+Future<void>? async_FutureOr_Null__to_Future_void_q_() async {
+  return fovn;
+}
+
+FutureOr<void> async_FutureOr_Null__to_FutureOr_void__e() async => fovn;
+FutureOr<void> async_FutureOr_Null__to_FutureOr_void_() async {
+  return fovn;
+}
+
+FutureOr<void>? async_FutureOr_Null__to_FutureOr_void_q__e() async => fovn;
+FutureOr<void>? async_FutureOr_Null__to_FutureOr_void_q_() async {
+  return fovn;
+}
+
+void async_dynamic_to_void_e() async => vd;
+void async_dynamic_to_void() async {
+  return vd;
+}
+
+Future<void> async_dynamic_to_Future_void__e() async => vd;
+Future<void> async_dynamic_to_Future_void_() async {
+  return vd;
+}
+
+Future<void>? async_dynamic_to_Future_void_q__e() async => vd;
+Future<void>? async_dynamic_to_Future_void_q_() async {
+  return vd;
+}
+
+FutureOr<void> async_dynamic_to_FutureOr_void__e() async => vd;
+FutureOr<void> async_dynamic_to_FutureOr_void_() async {
+  return vd;
+}
+
+FutureOr<void>? async_dynamic_to_FutureOr_void_q__e() async => vd;
+FutureOr<void>? async_dynamic_to_FutureOr_void_q_() async {
+  return vd;
+}
+
+void async_Null_to_void_e() async => vn;
+void async_Null_to_void() async {
+  return vn;
+}
+
+Future<void> async_Null_to_Future_void__e() async => vn;
+Future<void> async_Null_to_Future_void_() async {
+  return vn;
+}
+
+Future<void>? async_Null_to_Future_void_q__e() async => vn;
+Future<void>? async_Null_to_Future_void_q_() async {
+  return vn;
+}
+
+FutureOr<void> async_Null_to_FutureOr_void__e() async => vn;
+FutureOr<void> async_Null_to_FutureOr_void_() async {
+  return vn;
+}
+
+FutureOr<void>? async_Null_to_FutureOr_void_q__e() async => vn;
+FutureOr<void>? async_Null_to_FutureOr_void_q_() async {
+  return vn;
+}
+
+void main() {
+  async_int_to_void_e();
+  async_int_to_Future_void__e();
+  async_int_to_FutureOr_void__e();
+  async_int_to_Future_void_q__e();
+  async_int_to_FutureOr_void_q__e();
+  async_Object_to_void_e();
+  async_Object_to_Future_void__e();
+  async_Object_to_FutureOr_void__e();
+  async_Object_to_Future_void_q__e();
+  async_Object_to_FutureOr_void_q__e();
+  async_Future_int__to_void_e();
+  async_Future_int__to_Future_void__e();
+  async_Future_int__to_FutureOr_void__e();
+  async_Future_int__to_Future_void_q__e();
+  async_Future_int__to_FutureOr_void_q__e();
+  async_FutureOr_int__to_void_e();
+  async_FutureOr_int__to_Future_void__e();
+  async_FutureOr_int__to_FutureOr_void__e();
+  async_FutureOr_int__to_Future_void_q__e();
+  async_FutureOr_int__to_FutureOr_void_q__e();
+  async_Future_Object__to_void_e();
+  async_Future_Object__to_Future_void__e();
+  async_Future_Object__to_FutureOr_void__e();
+  async_Future_Object__to_Future_void_q__e();
+  async_Future_Object__to_FutureOr_void_q__e();
+  async_FutureOr_Object__to_void_e();
+  async_FutureOr_Object__to_Future_void__e();
+  async_FutureOr_Object__to_FutureOr_void__e();
+  async_FutureOr_Object__to_Future_void_q__e();
+  async_FutureOr_Object__to_FutureOr_void_q__e();
+  async_void_to_Future_void__e();
+  async_void_to_Future_void_();
+  async_void_to_Future_void_q__e();
+  async_void_to_Future_void_q_();
+  async_Future_void__to_Future_void__e();
+  async_Future_void__to_Future_void_();
+  async_Future_void__to_Future_void_q__e();
+  async_Future_void__to_Future_void_q_();
+  async_FutureOr_void__to_Future_void__e();
+  async_FutureOr_void__to_Future_void_();
+  async_FutureOr_void__to_Future_void_q__e();
+  async_FutureOr_void__to_Future_void_q_();
+  async_void_to_Future_dynamic__e();
+  async_void_to_Future_dynamic_();
+  async_void_to_Future_dynamic_q__e();
+  async_void_to_Future_dynamic_q_();
+  async_Future_void__to_Future_dynamic__e();
+  async_Future_void__to_Future_dynamic_();
+  async_Future_void__to_Future_dynamic_q__e();
+  async_Future_void__to_Future_dynamic_q_();
+  async_FutureOr_void__to_Future_dynamic__e();
+  async_FutureOr_void__to_Future_dynamic_();
+  async_FutureOr_void__to_Future_dynamic_q__e();
+  async_FutureOr_void__to_Future_dynamic_q_();
+  async_void_to_FutureOr_void__e();
+  async_void_to_FutureOr_void_();
+  async_void_to_FutureOr_void_q__e();
+  async_void_to_FutureOr_void_q_();
+  async_Future_void__to_FutureOr_void__e();
+  async_Future_void__to_FutureOr_void_();
+  async_Future_void__to_FutureOr_void_q__e();
+  async_Future_void__to_FutureOr_void_q_();
+  async_FutureOr_void__to_FutureOr_void__e();
+  async_FutureOr_void__to_FutureOr_void_();
+  async_FutureOr_void__to_FutureOr_void_q__e();
+  async_FutureOr_void__to_FutureOr_void_q_();
+  async_void_to_FutureOr_dynamic__e();
+  async_void_to_FutureOr_dynamic_();
+  async_void_to_FutureOr_dynamic_q__e();
+  async_void_to_FutureOr_dynamic_q_();
+  async_Future_void__to_FutureOr_dynamic__e();
+  async_Future_void__to_FutureOr_dynamic_();
+  async_Future_void__to_FutureOr_dynamic_q__e();
+  async_Future_void__to_FutureOr_dynamic_q_();
+  async_FutureOr_void__to_FutureOr_dynamic__e();
+  async_FutureOr_void__to_FutureOr_dynamic_();
+  async_FutureOr_void__to_FutureOr_dynamic_q__e();
+  async_FutureOr_void__to_FutureOr_dynamic_q_();
+  async_void_to_void_e();
+  async_void_to_void();
+  async_Future_void__to_void_e();
+  async_Future_void__to_void();
+  async_FutureOr_void__to_void_e();
+  async_FutureOr_void__to_void();
+  async_void_to_dynamic_e();
+  async_void_to_dynamic();
+  async_void_to_dynamic_q_e();
+  async_void_to_dynamic_q();
+  async_Future_void__to_dynamic_e();
+  async_Future_void__to_dynamic();
+  async_Future_void__to_dynamic_q_e();
+  async_Future_void__to_dynamic_q();
+  async_FutureOr_void__to_dynamic_e();
+  async_FutureOr_void__to_dynamic();
+  async_FutureOr_void__to_dynamic_q_e();
+  async_FutureOr_void__to_dynamic_q();
+  async_Future_dynamic__to_void_e();
+  async_Future_dynamic__to_void();
+  async_Future_dynamic__to_Future_void__e();
+  async_Future_dynamic__to_Future_void_();
+  async_Future_dynamic__to_Future_void_q__e();
+  async_Future_dynamic__to_Future_void_q_();
+  async_Future_dynamic__to_FutureOr_void__e();
+  async_Future_dynamic__to_FutureOr_void_();
+  async_Future_dynamic__to_FutureOr_void_q__e();
+  async_Future_dynamic__to_FutureOr_void_q_();
+  async_Future_Null__to_void_e();
+  async_Future_Null__to_void();
+  async_Future_Null__to_Future_void__e();
+  async_Future_Null__to_Future_void_();
+  async_Future_Null__to_Future_void_q__e();
+  async_Future_Null__to_Future_void_q_();
+  async_Future_Null__to_FutureOr_void__e();
+  async_Future_Null__to_FutureOr_void_();
+  async_Future_Null__to_FutureOr_void_q__e();
+  async_Future_Null__to_FutureOr_void_q_();
+  async_FutureOr_dynamic__to_void_e();
+  async_FutureOr_dynamic__to_void();
+  async_FutureOr_dynamic__to_Future_void__e();
+  async_FutureOr_dynamic__to_Future_void_();
+  async_FutureOr_dynamic__to_Future_void_q__e();
+  async_FutureOr_dynamic__to_Future_void_q_();
+  async_FutureOr_dynamic__to_FutureOr_void__e();
+  async_FutureOr_dynamic__to_FutureOr_void_();
+  async_FutureOr_dynamic__to_FutureOr_void_q__e();
+  async_FutureOr_dynamic__to_FutureOr_void_q_();
+  async_FutureOr_Null__to_void_e();
+  async_FutureOr_Null__to_void();
+  async_FutureOr_Null__to_Future_void__e();
+  async_FutureOr_Null__to_Future_void_();
+  async_FutureOr_Null__to_Future_void_q__e();
+  async_FutureOr_Null__to_Future_void_q_();
+  async_FutureOr_Null__to_FutureOr_void__e();
+  async_FutureOr_Null__to_FutureOr_void_();
+  async_FutureOr_Null__to_FutureOr_void_q__e();
+  async_FutureOr_Null__to_FutureOr_void_q_();
+  async_dynamic_to_void_e();
+  async_dynamic_to_void();
+  async_dynamic_to_Future_void__e();
+  async_dynamic_to_Future_void_();
+  async_dynamic_to_Future_void_q__e();
+  async_dynamic_to_Future_void_q_();
+  async_dynamic_to_FutureOr_void__e();
+  async_dynamic_to_FutureOr_void_();
+  async_dynamic_to_FutureOr_void_q__e();
+  async_dynamic_to_FutureOr_void_q_();
+  async_Null_to_void_e();
+  async_Null_to_void();
+  async_Null_to_Future_void__e();
+  async_Null_to_Future_void_();
+  async_Null_to_Future_void_q__e();
+  async_Null_to_Future_void_q_();
+  async_Null_to_FutureOr_void__e();
+  async_Null_to_FutureOr_void_();
+  async_Null_to_FutureOr_void_q__e();
+  async_Null_to_FutureOr_void_q_();
+}
diff --git a/tests/language/invalid_returns/async_valid_returns_test.dart b/tests/language/invalid_returns/async_valid_returns_test.dart
new file mode 100644
index 0000000..f74d6d1
--- /dev/null
+++ b/tests/language/invalid_returns/async_valid_returns_test.dart
@@ -0,0 +1,777 @@
+// Copyright (c) 2018, the Dart project authors.  Please see the AUTHORS file
+// 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.
+
+import 'dart:async';
+
+void vv = null;
+dynamic vd = null;
+Object? vo = null;
+Null vn = null;
+int vi = 0;
+Future<void> fvv = Future<void>.value(null);
+Future<dynamic> fvd = Future<dynamic>.value(null);
+Future<Object?> fvo = Future<Object?>.value(null);
+Future<Null> fvn = Future<Null>.value(null);
+Future<int> fvi = Future<int>.value(0);
+Future<Future<int>> ffvi = Future<Future<int>>.value(fvi);
+FutureOr<void> fovv = null;
+FutureOr<dynamic> fovd = null;
+FutureOr<Object?> fovo = null;
+FutureOr<Null> fovn = null;
+FutureOr<int> fovi = 0;
+FutureOr<Future<int>> fofvi = fvi;
+
+/* Test the cases where expression bodied functions are more permissive
+ * than block bodied functions (places where they behave the same
+ * are tested below).
+ *
+ * An asynchronous expression bodied function with return type `T`, future
+ * value type `Tv`, and return expression `e` has a valid return if:
+ * `Tv` is `void`,
+ * or `return e;` is a valid return for an equivalent block bodied function
+ * with return type `T` as defined below.
+ */
+
+void async_int_to_void_e() async => vi;
+Future<void> async_int_to_Future_void__e() async => vi;
+FutureOr<void> async_int_to_FutureOr_void__e() async => vi;
+Future<void>? async_int_to_Future_void_q__e() async => vi;
+FutureOr<void>? async_int_to_FutureOr_void_q__e() async => vi;
+void async_Object_to_void_e() async => vo;
+Future<void> async_Object_to_Future_void__e() async => vo;
+FutureOr<void> async_Object_to_FutureOr_void__e() async => vo;
+Future<void>? async_Object_to_Future_void_q__e() async => vo;
+FutureOr<void>? async_Object_to_FutureOr_void_q__e() async => vo;
+void async_Future_int__to_void_e() async => fvi;
+Future<void> async_Future_int__to_Future_void__e() async => fvi;
+FutureOr<void> async_Future_int__to_FutureOr_void__e() async => fvi;
+Future<void>? async_Future_int__to_Future_void_q__e() async => fvi;
+FutureOr<void>? async_Future_int__to_FutureOr_void_q__e() async => fvi;
+void async_Future_Future_int__to_void_e() async => ffvi;
+Future<void> async_Future_Future_int__to_Future_void__e() async => ffvi;
+FutureOr<void> async_Future_Future_int__to_FutureOr_void__e() async => ffvi;
+Future<void>? async_Future_Future_int__to_Future_void_q__e() async => ffvi;
+FutureOr<void>? async_Future_Future_int__to_FutureOr_void_q__e() async => ffvi;
+void async_FutureOr_int__to_void_e() async => fovi;
+Future<void> async_FutureOr_int__to_Future_void__e() async => fovi;
+FutureOr<void> async_FutureOr_int__to_FutureOr_void__e() async => fovi;
+Future<void>? async_FutureOr_int__to_Future_void_q__e() async => fovi;
+FutureOr<void>? async_FutureOr_int__to_FutureOr_void_q__e() async => fovi;
+void async_Future_Object__to_void_e() async => fvo;
+Future<void> async_Future_Object__to_Future_void__e() async => fvo;
+FutureOr<void> async_Future_Object__to_FutureOr_void__e() async => fvo;
+Future<void>? async_Future_Object__to_Future_void_q__e() async => fvo;
+FutureOr<void>? async_Future_Object__to_FutureOr_void_q__e() async => fvo;
+void async_FutureOr_Object__to_void_e() async => fovo;
+Future<void> async_FutureOr_Object__to_Future_void__e() async => fovo;
+FutureOr<void> async_FutureOr_Object__to_FutureOr_void__e() async => fovo;
+Future<void>? async_FutureOr_Object__to_Future_void_q__e() async => fovo;
+FutureOr<void>? async_FutureOr_Object__to_FutureOr_void_q__e() async => fovo;
+
+/* Test the cases that apply only to block bodied functions
+ */
+
+/* `return;` is a valid return if the future value type of the function is
+ * one of the following types: `void`, `dynamic`, `Null`.
+ */
+
+Future<void> async_empty_to_Future_void_() async {
+  return;
+}
+
+Future<void>? async_empty_to_Future_void_q_() async {
+  return;
+}
+
+Future<dynamic> async_empty_to_Future_dynamic_() async {
+  return;
+}
+
+Future<dynamic>? async_empty_to_Future_dynamic_q_() async {
+  return;
+}
+
+Future<Null> async_empty_to_Future_Null_() async {
+  return;
+}
+
+Future<Null>? async_empty_to_Future_Null_q_() async {
+  return;
+}
+
+FutureOr<void> async_empty_to_FutureOr_void_() async {
+  return;
+}
+
+FutureOr<void>? async_empty_to_FutureOr_void_q_() async {
+  return;
+}
+
+FutureOr<dynamic> async_empty_to_FutureOr_dynamic_() async {
+  return;
+}
+
+FutureOr<dynamic>? async_empty_to_FutureOr_dynamic_q_() async {
+  return;
+}
+
+FutureOr<Null> async_empty_to_FutureOr_Null_() async {
+  return;
+}
+
+FutureOr<Null>? async_empty_to_FutureOr_Null_q_() async {
+  return;
+}
+
+void async_empty_to_void() async {
+  return;
+}
+
+dynamic async_empty_to_dynamic() async {
+  return;
+}
+
+dynamic? async_empty_to_dynamic_q() async {
+  return;
+}
+
+/* Test the cases that apply to both expression bodied and block bodied
+ * functions
+ */
+
+/* `return exp;` where `exp` has static type `S` and the future value type
+ * of the function is `Tv` is a valid return if:
+ * `flatten(S)` is `void`
+ * and `Tv` is `void` or `dynamic`.
+ */
+
+Future<void> async_void_to_Future_void__e() async => vv;
+Future<void> async_void_to_Future_void_() async {
+  return vv;
+}
+
+Future<void>? async_void_to_Future_void_q__e() async => vv;
+Future<void>? async_void_to_Future_void_q_() async {
+  return vv;
+}
+
+Future<void> async_Future_void__to_Future_void__e() async => fvv;
+Future<void> async_Future_void__to_Future_void_() async {
+  return fvv;
+}
+
+Future<void>? async_Future_void__to_Future_void_q__e() async => fvv;
+Future<void>? async_Future_void__to_Future_void_q_() async {
+  return fvv;
+}
+
+Future<void> async_FutureOr_void__to_Future_void__e() async => fovv;
+Future<void> async_FutureOr_void__to_Future_void_() async {
+  return fovv;
+}
+
+Future<void>? async_FutureOr_void__to_Future_void_q__e() async => fovv;
+Future<void>? async_FutureOr_void__to_Future_void_q_() async {
+  return fovv;
+}
+
+Future<dynamic> async_void_to_Future_dynamic__e() async => vv;
+Future<dynamic> async_void_to_Future_dynamic_() async {
+  return vv;
+}
+
+Future<dynamic>? async_void_to_Future_dynamic_q__e() async => vv;
+Future<dynamic>? async_void_to_Future_dynamic_q_() async {
+  return vv;
+}
+
+Future<dynamic> async_Future_void__to_Future_dynamic__e() async => fvv;
+Future<dynamic> async_Future_void__to_Future_dynamic_() async {
+  return fvv;
+}
+
+Future<dynamic>? async_Future_void__to_Future_dynamic_q__e() async => fvv;
+Future<dynamic>? async_Future_void__to_Future_dynamic_q_() async {
+  return fvv;
+}
+
+Future<dynamic> async_FutureOr_void__to_Future_dynamic__e() async => fovv;
+Future<dynamic> async_FutureOr_void__to_Future_dynamic_() async {
+  return fovv;
+}
+
+Future<dynamic>? async_FutureOr_void__to_Future_dynamic_q__e() async => fovv;
+Future<dynamic>? async_FutureOr_void__to_Future_dynamic_q_() async {
+  return fovv;
+}
+
+FutureOr<void> async_void_to_FutureOr_void__e() async => vv;
+FutureOr<void> async_void_to_FutureOr_void_() async {
+  return vv;
+}
+
+FutureOr<void>? async_void_to_FutureOr_void_q__e() async => vv;
+FutureOr<void>? async_void_to_FutureOr_void_q_() async {
+  return vv;
+}
+
+FutureOr<void> async_Future_void__to_FutureOr_void__e() async => fvv;
+FutureOr<void> async_Future_void__to_FutureOr_void_() async {
+  return fvv;
+}
+
+FutureOr<void>? async_Future_void__to_FutureOr_void_q__e() async => fvv;
+FutureOr<void>? async_Future_void__to_FutureOr_void_q_() async {
+  return fvv;
+}
+
+FutureOr<void> async_FutureOr_void__to_FutureOr_void__e() async => fovv;
+FutureOr<void> async_FutureOr_void__to_FutureOr_void_() async {
+  return fovv;
+}
+
+FutureOr<void>? async_FutureOr_void__to_FutureOr_void_q__e() async => fovv;
+FutureOr<void>? async_FutureOr_void__to_FutureOr_void_q_() async {
+  return fovv;
+}
+
+FutureOr<dynamic> async_void_to_FutureOr_dynamic__e() async => vv;
+FutureOr<dynamic> async_void_to_FutureOr_dynamic_() async {
+  return vv;
+}
+
+FutureOr<dynamic>? async_void_to_FutureOr_dynamic_q__e() async => vv;
+FutureOr<dynamic>? async_void_to_FutureOr_dynamic_q_() async {
+  return vv;
+}
+
+FutureOr<dynamic> async_Future_void__to_FutureOr_dynamic__e() async => fvv;
+FutureOr<dynamic> async_Future_void__to_FutureOr_dynamic_() async {
+  return fvv;
+}
+
+FutureOr<dynamic>? async_Future_void__to_FutureOr_dynamic_q__e() async => fvv;
+FutureOr<dynamic>? async_Future_void__to_FutureOr_dynamic_q_() async {
+  return fvv;
+}
+
+FutureOr<dynamic> async_FutureOr_void__to_FutureOr_dynamic__e() async => fovv;
+FutureOr<dynamic> async_FutureOr_void__to_FutureOr_dynamic_() async {
+  return fovv;
+}
+
+FutureOr<dynamic>? async_FutureOr_void__to_FutureOr_dynamic_q__e() async =>
+    fovv;
+FutureOr<dynamic>? async_FutureOr_void__to_FutureOr_dynamic_q_() async {
+  return fovv;
+}
+
+void async_void_to_void_e() async => vv;
+void async_void_to_void() async {
+  return vv;
+}
+
+void async_Future_void__to_void_e() async => fvv;
+void async_Future_void__to_void() async {
+  return fvv;
+}
+
+void async_FutureOr_void__to_void_e() async => fovv;
+void async_FutureOr_void__to_void() async {
+  return fovv;
+}
+
+dynamic async_void_to_dynamic_e() async => vv;
+dynamic async_void_to_dynamic() async {
+  return vv;
+}
+
+dynamic? async_void_to_dynamic_q_e() async => vv;
+dynamic? async_void_to_dynamic_q() async {
+  return vv;
+}
+
+dynamic async_Future_void__to_dynamic_e() async => fvv;
+dynamic async_Future_void__to_dynamic() async {
+  return fvv;
+}
+
+dynamic? async_Future_void__to_dynamic_q_e() async => fvv;
+dynamic? async_Future_void__to_dynamic_q() async {
+  return fvv;
+}
+
+dynamic async_FutureOr_void__to_dynamic_e() async => fovv;
+dynamic async_FutureOr_void__to_dynamic() async {
+  return fovv;
+}
+
+dynamic? async_FutureOr_void__to_dynamic_q_e() async => fovv;
+dynamic? async_FutureOr_void__to_dynamic_q() async {
+  return fovv;
+}
+
+/* `return exp;` where `exp` has static type `S` and the future value type
+ * of the function is `Tv` is a valid return if:
+ * `Tv` is `void`
+ * and `flatten(S)` is `void`, `dynamic`, or `Null`.
+ */
+
+void async_Future_dynamic__to_void_e() async => fvd;
+void async_Future_dynamic__to_void() async {
+  return fvd;
+}
+
+Future<void> async_Future_dynamic__to_Future_void__e() async => fvd;
+Future<void> async_Future_dynamic__to_Future_void_() async {
+  return fvd;
+}
+
+Future<void>? async_Future_dynamic__to_Future_void_q__e() async => fvd;
+Future<void>? async_Future_dynamic__to_Future_void_q_() async {
+  return fvd;
+}
+
+FutureOr<void> async_Future_dynamic__to_FutureOr_void__e() async => fvd;
+FutureOr<void> async_Future_dynamic__to_FutureOr_void_() async {
+  return fvd;
+}
+
+FutureOr<void>? async_Future_dynamic__to_FutureOr_void_q__e() async => fvd;
+FutureOr<void>? async_Future_dynamic__to_FutureOr_void_q_() async {
+  return fvd;
+}
+
+void async_Future_Null__to_void_e() async => fvn;
+void async_Future_Null__to_void() async {
+  return fvn;
+}
+
+Future<void> async_Future_Null__to_Future_void__e() async => fvn;
+Future<void> async_Future_Null__to_Future_void_() async {
+  return fvn;
+}
+
+Future<void>? async_Future_Null__to_Future_void_q__e() async => fvn;
+Future<void>? async_Future_Null__to_Future_void_q_() async {
+  return fvn;
+}
+
+FutureOr<void> async_Future_Null__to_FutureOr_void__e() async => fvn;
+FutureOr<void> async_Future_Null__to_FutureOr_void_() async {
+  return fvn;
+}
+
+FutureOr<void>? async_Future_Null__to_FutureOr_void_q__e() async => fvn;
+FutureOr<void>? async_Future_Null__to_FutureOr_void_q_() async {
+  return fvn;
+}
+
+void async_FutureOr_dynamic__to_void_e() async => fovd;
+void async_FutureOr_dynamic__to_void() async {
+  return fovd;
+}
+
+Future<void> async_FutureOr_dynamic__to_Future_void__e() async => fovd;
+Future<void> async_FutureOr_dynamic__to_Future_void_() async {
+  return fovd;
+}
+
+Future<void>? async_FutureOr_dynamic__to_Future_void_q__e() async => fovd;
+Future<void>? async_FutureOr_dynamic__to_Future_void_q_() async {
+  return fovd;
+}
+
+FutureOr<void> async_FutureOr_dynamic__to_FutureOr_void__e() async => fovd;
+FutureOr<void> async_FutureOr_dynamic__to_FutureOr_void_() async {
+  return fovd;
+}
+
+FutureOr<void>? async_FutureOr_dynamic__to_FutureOr_void_q__e() async => fovd;
+FutureOr<void>? async_FutureOr_dynamic__to_FutureOr_void_q_() async {
+  return fovd;
+}
+
+void async_FutureOr_Null__to_void_e() async => fovn;
+void async_FutureOr_Null__to_void() async {
+  return fovn;
+}
+
+Future<void> async_FutureOr_Null__to_Future_void__e() async => fovn;
+Future<void> async_FutureOr_Null__to_Future_void_() async {
+  return fovn;
+}
+
+Future<void>? async_FutureOr_Null__to_Future_void_q__e() async => fovn;
+Future<void>? async_FutureOr_Null__to_Future_void_q_() async {
+  return fovn;
+}
+
+FutureOr<void> async_FutureOr_Null__to_FutureOr_void__e() async => fovn;
+FutureOr<void> async_FutureOr_Null__to_FutureOr_void_() async {
+  return fovn;
+}
+
+FutureOr<void>? async_FutureOr_Null__to_FutureOr_void_q__e() async => fovn;
+FutureOr<void>? async_FutureOr_Null__to_FutureOr_void_q_() async {
+  return fovn;
+}
+
+void async_dynamic_to_void_e() async => vd;
+void async_dynamic_to_void() async {
+  return vd;
+}
+
+Future<void> async_dynamic_to_Future_void__e() async => vd;
+Future<void> async_dynamic_to_Future_void_() async {
+  return vd;
+}
+
+Future<void>? async_dynamic_to_Future_void_q__e() async => vd;
+Future<void>? async_dynamic_to_Future_void_q_() async {
+  return vd;
+}
+
+FutureOr<void> async_dynamic_to_FutureOr_void__e() async => vd;
+FutureOr<void> async_dynamic_to_FutureOr_void_() async {
+  return vd;
+}
+
+FutureOr<void>? async_dynamic_to_FutureOr_void_q__e() async => vd;
+FutureOr<void>? async_dynamic_to_FutureOr_void_q_() async {
+  return vd;
+}
+
+void async_Null_to_void_e() async => vn;
+void async_Null_to_void() async {
+  return vn;
+}
+
+Future<void> async_Null_to_Future_void__e() async => vn;
+Future<void> async_Null_to_Future_void_() async {
+  return vn;
+}
+
+Future<void>? async_Null_to_Future_void_q__e() async => vn;
+Future<void>? async_Null_to_Future_void_q_() async {
+  return vn;
+}
+
+FutureOr<void> async_Null_to_FutureOr_void__e() async => vn;
+FutureOr<void> async_Null_to_FutureOr_void_() async {
+  return vn;
+}
+
+FutureOr<void>? async_Null_to_FutureOr_void_q__e() async => vn;
+FutureOr<void>? async_Null_to_FutureOr_void_q_() async {
+  return vn;
+}
+
+/* `return exp;` where `exp` has static type `S` and the future value type
+ * of the function is `Tv` is a valid return if:
+ * `Tv` is not `void`,
+ * and `flatten(S)` is not `void` nor `void*`,
+ * and `S` is assignable to `Tv` or `flatten(S)` is a subtype of `Tv`.
+ */
+
+Future<int> async_int_to_Future_int__e() async => vi;
+Future<int> async_int_to_Future_int_() async {
+  return vi;
+}
+
+Future<int>? async_int_to_Future_int_q__e() async => vi;
+Future<int>? async_int_to_Future_int_q_() async {
+  return vi;
+}
+
+Future<int> async_dynamic_to_Future_int__e() async =>
+    vi as dynamic; // No await.
+Future<int> async_dynamic_to_Future_int_() async {
+  return fvi as dynamic; // Should await.
+}
+
+Future<int>? async_dynamic_to_Future_int_q__e() async =>
+    fvi as dynamic; // Should await.
+Future<int>? async_dynamic_to_Future_int_q_() async {
+  return vi as dynamic; // No await.
+}
+
+Future<int> async_FutureOr_int__to_Future_int__e() async => fovi;
+Future<int> async_FutureOr_int__to_Future_int_() async {
+  return fovi;
+}
+
+Future<int>? async_FutureOr_int__to_Future_int_q__e() async => fovi;
+Future<int>? async_FutureOr_int__to_Future_int_q_() async {
+  return fovi;
+}
+
+Future<int> async_Future_int__to_Future_int__e() async => fvi;
+Future<int> async_Future_int__to_Future_int_() async {
+  return fvi;
+}
+
+Future<int>? async_Future_int__to_Future_int_q__e() async => fvi;
+Future<int>? async_Future_int__to_Future_int_q_() async {
+  return fvi;
+}
+
+Future<Future<int>> async_Future_int_to_Future_Future_int__e() async => fvi;
+Future<Future<int>> async_Future_int_to_Future_Future_int_() async {
+  return fvi;
+}
+
+Future<Future<int>>? async_Future_int_to_Future_Future_int_q__e() async => fvi;
+Future<Future<int>>? async_Future_int_to_Future_Future_int_q_() async {
+  return fvi;
+}
+
+Future<Future<int>> async_dynamic_to_Future_Future_int__e() async =>
+    fvi as dynamic; // No await.
+Future<Future<int>> async_dynamic_to_Future_Future_int_() async {
+  return ffvi as dynamic; // Should await.
+}
+
+Future<Future<int>>? async_dynamic_to_Future_Future_int_q__e() async =>
+    ffvi as dynamic; // Should await.
+Future<Future<int>>? async_dynamic_to_Future_Future_int_q_() async {
+  return fvi as dynamic; // No await.
+}
+
+Future<Future<int>>
+    async_FutureOr_Future_int__to_Future_Future_int__e() async => fofvi;
+Future<Future<int>> async_FutureOr_Future_int__to_Future_Future_int_() async {
+  return fofvi;
+}
+
+Future<Future<int>>?
+    async_FutureOr_Future_int__to_Future_Future_int_q__e() async => fofvi;
+Future<Future<int>>?
+    async_FutureOr_Future_int__to_Future_Future_int_q_() async {
+  return fofvi;
+}
+
+Future<Future<int>> async_Future_Future_int__to_Future_Future_int__e() async =>
+    ffvi;
+Future<Future<int>> async_Future_Future_int__to_Future_Future_int_() async {
+  return ffvi;
+}
+
+Future<Future<int>>?
+    async_Future_Future_int__to_Future_Future_int_q__e() async => ffvi;
+Future<Future<int>>? async_Future_Future_int__to_Future_Future_int_q_() async {
+  return ffvi;
+}
+
+void main() {
+  async_int_to_void_e();
+  async_int_to_Future_void__e();
+  async_int_to_FutureOr_void__e();
+  async_int_to_Future_void_q__e();
+  async_int_to_FutureOr_void_q__e();
+  async_Object_to_void_e();
+  async_Object_to_Future_void__e();
+  async_Object_to_FutureOr_void__e();
+  async_Object_to_Future_void_q__e();
+  async_Object_to_FutureOr_void_q__e();
+  async_Future_int__to_void_e();
+  async_Future_int__to_Future_void__e();
+  async_Future_int__to_FutureOr_void__e();
+  async_Future_int__to_Future_void_q__e();
+  async_Future_int__to_FutureOr_void_q__e();
+  async_Future_Future_int__to_void_e();
+  async_Future_Future_int__to_Future_void__e();
+  async_Future_Future_int__to_FutureOr_void__e();
+  async_Future_Future_int__to_Future_void_q__e();
+  async_Future_Future_int__to_FutureOr_void_q__e();
+  async_FutureOr_int__to_void_e();
+  async_FutureOr_int__to_Future_void__e();
+  async_FutureOr_int__to_FutureOr_void__e();
+  async_FutureOr_int__to_Future_void_q__e();
+  async_FutureOr_int__to_FutureOr_void_q__e();
+  async_Future_Object__to_void_e();
+  async_Future_Object__to_Future_void__e();
+  async_Future_Object__to_FutureOr_void__e();
+  async_Future_Object__to_Future_void_q__e();
+  async_Future_Object__to_FutureOr_void_q__e();
+  async_FutureOr_Object__to_void_e();
+  async_FutureOr_Object__to_Future_void__e();
+  async_FutureOr_Object__to_FutureOr_void__e();
+  async_FutureOr_Object__to_Future_void_q__e();
+  async_FutureOr_Object__to_FutureOr_void_q__e();
+  async_empty_to_Future_void_();
+  async_empty_to_Future_void_q_();
+  async_empty_to_Future_dynamic_();
+  async_empty_to_Future_dynamic_q_();
+  async_empty_to_Future_Null_();
+  async_empty_to_Future_Null_q_();
+  async_empty_to_FutureOr_void_();
+  async_empty_to_FutureOr_void_q_();
+  async_empty_to_FutureOr_dynamic_();
+  async_empty_to_FutureOr_dynamic_q_();
+  async_empty_to_FutureOr_Null_();
+  async_empty_to_FutureOr_Null_q_();
+  async_empty_to_void();
+  async_empty_to_dynamic();
+  async_empty_to_dynamic_q();
+  async_void_to_Future_void__e();
+  async_void_to_Future_void_();
+  async_void_to_Future_void_q__e();
+  async_void_to_Future_void_q_();
+  async_Future_void__to_Future_void__e();
+  async_Future_void__to_Future_void_();
+  async_Future_void__to_Future_void_q__e();
+  async_Future_void__to_Future_void_q_();
+  async_FutureOr_void__to_Future_void__e();
+  async_FutureOr_void__to_Future_void_();
+  async_FutureOr_void__to_Future_void_q__e();
+  async_FutureOr_void__to_Future_void_q_();
+  async_void_to_Future_dynamic__e();
+  async_void_to_Future_dynamic_();
+  async_void_to_Future_dynamic_q__e();
+  async_void_to_Future_dynamic_q_();
+  async_Future_void__to_Future_dynamic__e();
+  async_Future_void__to_Future_dynamic_();
+  async_Future_void__to_Future_dynamic_q__e();
+  async_Future_void__to_Future_dynamic_q_();
+  async_FutureOr_void__to_Future_dynamic__e();
+  async_FutureOr_void__to_Future_dynamic_();
+  async_FutureOr_void__to_Future_dynamic_q__e();
+  async_FutureOr_void__to_Future_dynamic_q_();
+  async_void_to_FutureOr_void__e();
+  async_void_to_FutureOr_void_();
+  async_void_to_FutureOr_void_q__e();
+  async_void_to_FutureOr_void_q_();
+  async_Future_void__to_FutureOr_void__e();
+  async_Future_void__to_FutureOr_void_();
+  async_Future_void__to_FutureOr_void_q__e();
+  async_Future_void__to_FutureOr_void_q_();
+  async_FutureOr_void__to_FutureOr_void__e();
+  async_FutureOr_void__to_FutureOr_void_();
+  async_FutureOr_void__to_FutureOr_void_q__e();
+  async_FutureOr_void__to_FutureOr_void_q_();
+  async_void_to_FutureOr_dynamic__e();
+  async_void_to_FutureOr_dynamic_();
+  async_void_to_FutureOr_dynamic_q__e();
+  async_void_to_FutureOr_dynamic_q_();
+  async_Future_void__to_FutureOr_dynamic__e();
+  async_Future_void__to_FutureOr_dynamic_();
+  async_Future_void__to_FutureOr_dynamic_q__e();
+  async_Future_void__to_FutureOr_dynamic_q_();
+  async_FutureOr_void__to_FutureOr_dynamic__e();
+  async_FutureOr_void__to_FutureOr_dynamic_();
+  async_FutureOr_void__to_FutureOr_dynamic_q__e();
+  async_FutureOr_void__to_FutureOr_dynamic_q_();
+  async_void_to_void_e();
+  async_void_to_void();
+  async_Future_void__to_void_e();
+  async_Future_void__to_void();
+  async_FutureOr_void__to_void_e();
+  async_FutureOr_void__to_void();
+  async_void_to_dynamic_e();
+  async_void_to_dynamic();
+  async_void_to_dynamic_q_e();
+  async_void_to_dynamic_q();
+  async_Future_void__to_dynamic_e();
+  async_Future_void__to_dynamic();
+  async_Future_void__to_dynamic_q_e();
+  async_Future_void__to_dynamic_q();
+  async_FutureOr_void__to_dynamic_e();
+  async_FutureOr_void__to_dynamic();
+  async_FutureOr_void__to_dynamic_q_e();
+  async_FutureOr_void__to_dynamic_q();
+  async_Future_dynamic__to_void_e();
+  async_Future_dynamic__to_void();
+  async_Future_dynamic__to_Future_void__e();
+  async_Future_dynamic__to_Future_void_();
+  async_Future_dynamic__to_Future_void_q__e();
+  async_Future_dynamic__to_Future_void_q_();
+  async_Future_dynamic__to_FutureOr_void__e();
+  async_Future_dynamic__to_FutureOr_void_();
+  async_Future_dynamic__to_FutureOr_void_q__e();
+  async_Future_dynamic__to_FutureOr_void_q_();
+  async_Future_Null__to_void_e();
+  async_Future_Null__to_void();
+  async_Future_Null__to_Future_void__e();
+  async_Future_Null__to_Future_void_();
+  async_Future_Null__to_Future_void_q__e();
+  async_Future_Null__to_Future_void_q_();
+  async_Future_Null__to_FutureOr_void__e();
+  async_Future_Null__to_FutureOr_void_();
+  async_Future_Null__to_FutureOr_void_q__e();
+  async_Future_Null__to_FutureOr_void_q_();
+  async_FutureOr_dynamic__to_void_e();
+  async_FutureOr_dynamic__to_void();
+  async_FutureOr_dynamic__to_Future_void__e();
+  async_FutureOr_dynamic__to_Future_void_();
+  async_FutureOr_dynamic__to_Future_void_q__e();
+  async_FutureOr_dynamic__to_Future_void_q_();
+  async_FutureOr_dynamic__to_FutureOr_void__e();
+  async_FutureOr_dynamic__to_FutureOr_void_();
+  async_FutureOr_dynamic__to_FutureOr_void_q__e();
+  async_FutureOr_dynamic__to_FutureOr_void_q_();
+  async_FutureOr_Null__to_void_e();
+  async_FutureOr_Null__to_void();
+  async_FutureOr_Null__to_Future_void__e();
+  async_FutureOr_Null__to_Future_void_();
+  async_FutureOr_Null__to_Future_void_q__e();
+  async_FutureOr_Null__to_Future_void_q_();
+  async_FutureOr_Null__to_FutureOr_void__e();
+  async_FutureOr_Null__to_FutureOr_void_();
+  async_FutureOr_Null__to_FutureOr_void_q__e();
+  async_FutureOr_Null__to_FutureOr_void_q_();
+  async_dynamic_to_void_e();
+  async_dynamic_to_void();
+  async_dynamic_to_Future_void__e();
+  async_dynamic_to_Future_void_();
+  async_dynamic_to_Future_void_q__e();
+  async_dynamic_to_Future_void_q_();
+  async_dynamic_to_FutureOr_void__e();
+  async_dynamic_to_FutureOr_void_();
+  async_dynamic_to_FutureOr_void_q__e();
+  async_dynamic_to_FutureOr_void_q_();
+  async_Null_to_void_e();
+  async_Null_to_void();
+  async_Null_to_Future_void__e();
+  async_Null_to_Future_void_();
+  async_Null_to_Future_void_q__e();
+  async_Null_to_Future_void_q_();
+  async_Null_to_FutureOr_void__e();
+  async_Null_to_FutureOr_void_();
+  async_Null_to_FutureOr_void_q__e();
+  async_Null_to_FutureOr_void_q_();
+  async_int_to_Future_int__e();
+  async_int_to_Future_int_();
+  async_int_to_Future_int_q__e();
+  async_int_to_Future_int_q_();
+  async_dynamic_to_Future_int__e();
+  async_dynamic_to_Future_int_();
+  async_dynamic_to_Future_int_q__e();
+  async_dynamic_to_Future_int_q_();
+  async_FutureOr_int__to_Future_int__e();
+  async_FutureOr_int__to_Future_int_();
+  async_FutureOr_int__to_Future_int_q__e();
+  async_FutureOr_int__to_Future_int_q_();
+  async_Future_int__to_Future_int__e();
+  async_Future_int__to_Future_int_();
+  async_Future_int__to_Future_int_q__e();
+  async_Future_int__to_Future_int_q_();
+
+  async_Future_int_to_Future_Future_int__e();
+  async_Future_int_to_Future_Future_int_();
+  async_Future_int_to_Future_Future_int_q__e();
+  async_Future_int_to_Future_Future_int_q_();
+  async_dynamic_to_Future_Future_int__e();
+  async_dynamic_to_Future_Future_int_();
+  async_dynamic_to_Future_Future_int_q__e();
+  async_dynamic_to_Future_Future_int_q_();
+  async_FutureOr_Future_int__to_Future_Future_int__e();
+  async_FutureOr_Future_int__to_Future_Future_int_();
+  async_FutureOr_Future_int__to_Future_Future_int_q__e();
+  async_FutureOr_Future_int__to_Future_Future_int_q_();
+  async_Future_Future_int__to_Future_Future_int__e();
+  async_Future_Future_int__to_Future_Future_int_();
+  async_Future_Future_int__to_Future_Future_int_q__e();
+  async_Future_Future_int__to_Future_Future_int_q_();
+}
diff --git a/tests/language/invalid_returns/sync_invalid_return_00_test.dart b/tests/language/invalid_returns/sync_invalid_return_00_test.dart
new file mode 100644
index 0000000..1c368e0
--- /dev/null
+++ b/tests/language/invalid_returns/sync_invalid_return_00_test.dart
@@ -0,0 +1,19 @@
+// Copyright (c) 2018, the Dart project authors.  Please see the AUTHORS file
+// 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.
+
+import 'dart:async';
+
+/* `return;` is an error if `T` is not `void`, `dynamic`, or `Null`.
+ */
+
+int? test() {
+  return;
+//^
+// [analyzer] unspecified
+// [cfe] unspecified
+}
+
+void main() {
+  test();
+}
diff --git a/tests/language/invalid_returns/sync_invalid_return_01_test.dart b/tests/language/invalid_returns/sync_invalid_return_01_test.dart
new file mode 100644
index 0000000..a290916
--- /dev/null
+++ b/tests/language/invalid_returns/sync_invalid_return_01_test.dart
@@ -0,0 +1,19 @@
+// Copyright (c) 2018, the Dart project authors.  Please see the AUTHORS file
+// 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.
+
+import 'dart:async';
+
+/* `return;` is an error if `T` is not `void`, `dynamic`, or `Null`.
+ */
+
+Object? test() {
+  return;
+//^
+// [analyzer] unspecified
+// [cfe] unspecified
+}
+
+void main() {
+  test();
+}
diff --git a/tests/language/invalid_returns/sync_invalid_return_02_test.dart b/tests/language/invalid_returns/sync_invalid_return_02_test.dart
new file mode 100644
index 0000000..05db4f2
--- /dev/null
+++ b/tests/language/invalid_returns/sync_invalid_return_02_test.dart
@@ -0,0 +1,19 @@
+// Copyright (c) 2018, the Dart project authors.  Please see the AUTHORS file
+// 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.
+
+import 'dart:async';
+
+/* `return;` is an error if `T` is not `void`, `dynamic`, or `Null`.
+ */
+
+Future<int>? test() {
+  return;
+//^
+// [analyzer] unspecified
+// [cfe] unspecified
+}
+
+void main() {
+  test();
+}
diff --git a/tests/language/invalid_returns/sync_invalid_return_03_test.dart b/tests/language/invalid_returns/sync_invalid_return_03_test.dart
new file mode 100644
index 0000000..4116191
--- /dev/null
+++ b/tests/language/invalid_returns/sync_invalid_return_03_test.dart
@@ -0,0 +1,19 @@
+// Copyright (c) 2018, the Dart project authors.  Please see the AUTHORS file
+// 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.
+
+import 'dart:async';
+
+/* `return;` is an error if `T` is not `void`, `dynamic`, or `Null`.
+ */
+
+FutureOr<int?> test() {
+  return;
+//^
+// [analyzer] unspecified
+// [cfe] unspecified
+}
+
+void main() {
+  test();
+}
diff --git a/tests/language/invalid_returns/sync_invalid_return_04_test.dart b/tests/language/invalid_returns/sync_invalid_return_04_test.dart
new file mode 100644
index 0000000..1a80d62
--- /dev/null
+++ b/tests/language/invalid_returns/sync_invalid_return_04_test.dart
@@ -0,0 +1,19 @@
+// Copyright (c) 2018, the Dart project authors.  Please see the AUTHORS file
+// 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.
+
+import 'dart:async';
+
+/* `return;` is an error if `T` is not `void`, `dynamic`, or `Null`.
+ */
+
+Future<Object>? test() {
+  return;
+//^
+// [analyzer] unspecified
+// [cfe] unspecified
+}
+
+void main() {
+  test();
+}
diff --git a/tests/language/invalid_returns/sync_invalid_return_05_test.dart b/tests/language/invalid_returns/sync_invalid_return_05_test.dart
new file mode 100644
index 0000000..27daec4
--- /dev/null
+++ b/tests/language/invalid_returns/sync_invalid_return_05_test.dart
@@ -0,0 +1,19 @@
+// Copyright (c) 2018, the Dart project authors.  Please see the AUTHORS file
+// 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.
+
+import 'dart:async';
+
+/* `return;` is an error if `T` is not `void`, `dynamic`, or `Null`.
+ */
+
+FutureOr<Object?> test() {
+  return;
+//^
+// [analyzer] unspecified
+// [cfe] unspecified
+}
+
+void main() {
+  test();
+}
diff --git a/tests/language/invalid_returns/sync_invalid_return_06_test.dart b/tests/language/invalid_returns/sync_invalid_return_06_test.dart
new file mode 100644
index 0000000..e7530f1
--- /dev/null
+++ b/tests/language/invalid_returns/sync_invalid_return_06_test.dart
@@ -0,0 +1,21 @@
+// Copyright (c) 2018, the Dart project authors.  Please see the AUTHORS file
+// 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.
+
+import 'dart:async';
+
+/* `return exp;` where `exp` has static type `S` is an error if `T` is `void` 
+ * and `S` is not `void`, `dynamic`, or `Null`.
+ */
+
+int v = 0;
+void test() {
+  return v;
+  //     ^
+  // [analyzer] unspecified
+  // [cfe] unspecified
+}
+
+void main() {
+  test();
+}
diff --git a/tests/language/invalid_returns/sync_invalid_return_07_test.dart b/tests/language/invalid_returns/sync_invalid_return_07_test.dart
new file mode 100644
index 0000000..691cf5d
--- /dev/null
+++ b/tests/language/invalid_returns/sync_invalid_return_07_test.dart
@@ -0,0 +1,21 @@
+// Copyright (c) 2018, the Dart project authors.  Please see the AUTHORS file
+// 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.
+
+import 'dart:async';
+
+/* `return exp;` where `exp` has static type `S` is an error if `T` is `void` 
+ * and `S` is not `void`, `dynamic`, or `Null`.
+ */
+
+Object? v = null;
+void test() {
+  return v;
+  //     ^
+  // [analyzer] unspecified
+  // [cfe] unspecified
+}
+
+void main() {
+  test();
+}
diff --git a/tests/language/invalid_returns/sync_invalid_return_08_test.dart b/tests/language/invalid_returns/sync_invalid_return_08_test.dart
new file mode 100644
index 0000000..94067eb
--- /dev/null
+++ b/tests/language/invalid_returns/sync_invalid_return_08_test.dart
@@ -0,0 +1,21 @@
+// Copyright (c) 2018, the Dart project authors.  Please see the AUTHORS file
+// 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.
+
+import 'dart:async';
+
+/* `return exp;` where `exp` has static type `S` is an error if `T` is `void`
+ * and `S` is not `void`, `dynamic`, or `Null`.
+ */
+
+Future<int>? v = null;
+void test() {
+  return v;
+  //     ^
+  // [analyzer] unspecified
+  // [cfe] unspecified
+}
+
+void main() {
+  test();
+}
diff --git a/tests/language/invalid_returns/sync_invalid_return_09_test.dart b/tests/language/invalid_returns/sync_invalid_return_09_test.dart
new file mode 100644
index 0000000..b4bca3e
--- /dev/null
+++ b/tests/language/invalid_returns/sync_invalid_return_09_test.dart
@@ -0,0 +1,21 @@
+// Copyright (c) 2018, the Dart project authors.  Please see the AUTHORS file
+// 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.
+
+import 'dart:async';
+
+/* `return exp;` where `exp` has static type `S` is an error if `T` is `void`
+ * and `S` is not `void`, `dynamic`, or `Null`.
+ */
+
+FutureOr<int> v = 0;
+void test() {
+  return v;
+  //     ^
+  // [analyzer] unspecified
+  // [cfe] unspecified
+}
+
+void main() {
+  test();
+}
diff --git a/tests/language/invalid_returns/sync_invalid_return_10_test.dart b/tests/language/invalid_returns/sync_invalid_return_10_test.dart
new file mode 100644
index 0000000..26508b3
--- /dev/null
+++ b/tests/language/invalid_returns/sync_invalid_return_10_test.dart
@@ -0,0 +1,21 @@
+// Copyright (c) 2018, the Dart project authors.  Please see the AUTHORS file
+// 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.
+
+import 'dart:async';
+
+/* `return exp;` where `exp` has static type `S` is an error if `T` is `void`
+ * and `S` is not `void`, `dynamic`, or `Null`.
+ */
+
+Future<Object>? v = null;
+void test() {
+  return v;
+  //     ^
+  // [analyzer] unspecified
+  // [cfe] unspecified
+}
+
+void main() {
+  test();
+}
diff --git a/tests/language/invalid_returns/sync_invalid_return_11_test.dart b/tests/language/invalid_returns/sync_invalid_return_11_test.dart
new file mode 100644
index 0000000..cfdef54
--- /dev/null
+++ b/tests/language/invalid_returns/sync_invalid_return_11_test.dart
@@ -0,0 +1,21 @@
+// Copyright (c) 2018, the Dart project authors.  Please see the AUTHORS file
+// 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.
+
+import 'dart:async';
+
+/* `return exp;` where `exp` has static type `S` is an error if `T` is `void`
+ * and `S` is not `void`, `dynamic`, or `Null`.
+ */
+
+FutureOr<Object?> v = null;
+void test() {
+  return v;
+  //     ^
+  // [analyzer] unspecified
+  // [cfe] unspecified
+}
+
+void main() {
+  test();
+}
diff --git a/tests/language/invalid_returns/sync_invalid_return_12_test.dart b/tests/language/invalid_returns/sync_invalid_return_12_test.dart
new file mode 100644
index 0000000..23b45a4
--- /dev/null
+++ b/tests/language/invalid_returns/sync_invalid_return_12_test.dart
@@ -0,0 +1,21 @@
+// Copyright (c) 2018, the Dart project authors.  Please see the AUTHORS file
+// 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.
+
+import 'dart:async';
+
+/* `return exp;` where `exp` has static type `S` is an error if `S` is `void`
+ * and `T` is not `void` or `dynamic`.
+ */
+
+void v = null;
+int test() {
+  return v;
+  //     ^
+  // [analyzer] unspecified
+  // [cfe] unspecified
+}
+
+void main() {
+  test();
+}
diff --git a/tests/language/invalid_returns/sync_invalid_return_13_test.dart b/tests/language/invalid_returns/sync_invalid_return_13_test.dart
new file mode 100644
index 0000000..cadaa24
--- /dev/null
+++ b/tests/language/invalid_returns/sync_invalid_return_13_test.dart
@@ -0,0 +1,21 @@
+// Copyright (c) 2018, the Dart project authors.  Please see the AUTHORS file
+// 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.
+
+import 'dart:async';
+
+/* `return exp;` where `exp` has static type `S` is an error if `S` is `void`
+ * and `T` is not `void` or `dynamic`.
+ */
+
+void v = null;
+Object? test() {
+  return v;
+  //     ^
+  // [analyzer] unspecified
+  // [cfe] unspecified
+}
+
+void main() {
+  test();
+}
diff --git a/tests/language/invalid_returns/sync_invalid_return_14_test.dart b/tests/language/invalid_returns/sync_invalid_return_14_test.dart
new file mode 100644
index 0000000..0082e8e
--- /dev/null
+++ b/tests/language/invalid_returns/sync_invalid_return_14_test.dart
@@ -0,0 +1,21 @@
+// Copyright (c) 2018, the Dart project authors.  Please see the AUTHORS file
+// 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.
+
+import 'dart:async';
+
+/* `return exp;` where `exp` has static type `S` is an error if `S` is `void`
+ * and `T` is not `void` or `dynamic`.
+ */
+
+void v = null;
+Future<int>? test() {
+  return v;
+  //     ^
+  // [analyzer] unspecified
+  // [cfe] unspecified
+}
+
+void main() {
+  test();
+}
diff --git a/tests/language/invalid_returns/sync_invalid_return_15_test.dart b/tests/language/invalid_returns/sync_invalid_return_15_test.dart
new file mode 100644
index 0000000..0bbb367
--- /dev/null
+++ b/tests/language/invalid_returns/sync_invalid_return_15_test.dart
@@ -0,0 +1,21 @@
+// Copyright (c) 2018, the Dart project authors.  Please see the AUTHORS file
+// 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.
+
+import 'dart:async';
+
+/* `return exp;` where `exp` has static type `S` is an error if `S` is `void`
+ * and `T` is not `void` or `dynamic`.
+ */
+
+void v = null;
+FutureOr<int?> test() {
+  return v;
+  //     ^
+  // [analyzer] unspecified
+  // [cfe] unspecified
+}
+
+void main() {
+  test();
+}
diff --git a/tests/language/invalid_returns/sync_invalid_return_16_test.dart b/tests/language/invalid_returns/sync_invalid_return_16_test.dart
new file mode 100644
index 0000000..d2a2cd9
--- /dev/null
+++ b/tests/language/invalid_returns/sync_invalid_return_16_test.dart
@@ -0,0 +1,21 @@
+// Copyright (c) 2018, the Dart project authors.  Please see the AUTHORS file
+// 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.
+
+import 'dart:async';
+
+/* `return exp;` where `exp` has static type `S` is an error if `S` is `void`
+ * and `T` is not `void` or `dynamic`.
+ */
+
+void v = null;
+Future<Object>? test() {
+  return v;
+  //     ^
+  // [analyzer] unspecified
+  // [cfe] unspecified
+}
+
+void main() {
+  test();
+}
diff --git a/tests/language/invalid_returns/sync_invalid_return_17_test.dart b/tests/language/invalid_returns/sync_invalid_return_17_test.dart
new file mode 100644
index 0000000..4834cd6
--- /dev/null
+++ b/tests/language/invalid_returns/sync_invalid_return_17_test.dart
@@ -0,0 +1,21 @@
+// Copyright (c) 2018, the Dart project authors.  Please see the AUTHORS file
+// 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.
+
+import 'dart:async';
+
+/* `return exp;` where `exp` has static type `S` is an error if `S` is `void`
+ * and `T` is not `void` or `dynamic`.
+ */
+
+void v = null;
+FutureOr<Object?> test() {
+  return v;
+  //     ^
+  // [analyzer] unspecified
+  // [cfe] unspecified
+}
+
+void main() {
+  test();
+}
diff --git a/tests/language/invalid_returns/sync_invalid_return_18_test.dart b/tests/language/invalid_returns/sync_invalid_return_18_test.dart
new file mode 100644
index 0000000..24abec0
--- /dev/null
+++ b/tests/language/invalid_returns/sync_invalid_return_18_test.dart
@@ -0,0 +1,21 @@
+// Copyright (c) 2018, the Dart project authors.  Please see the AUTHORS file
+// 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.
+
+import 'dart:async';
+
+/* `return exp;` where `exp` has static type `S` is an error if `S` is not
+ * assignable to `T`.
+ */
+
+int v = 0;
+String test() {
+  return v;
+  //     ^
+  // [analyzer] unspecified
+  // [cfe] unspecified
+}
+
+void main() {
+  test();
+}
diff --git a/tests/language/invalid_returns/sync_invalid_return_19_test.dart b/tests/language/invalid_returns/sync_invalid_return_19_test.dart
new file mode 100644
index 0000000..7e0d3df
--- /dev/null
+++ b/tests/language/invalid_returns/sync_invalid_return_19_test.dart
@@ -0,0 +1,21 @@
+// Copyright (c) 2018, the Dart project authors.  Please see the AUTHORS file
+// 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.
+
+import 'dart:async';
+
+/* `return exp;` where `exp` has static type `S` is an error if `S` is not
+ * assignable to `T`.
+ */
+
+Future<int> v = Future.value(0);
+String test() {
+  return v;
+  //     ^
+  // [analyzer] unspecified
+  // [cfe] unspecified
+}
+
+void main() {
+  test();
+}
diff --git a/tests/language/invalid_returns/sync_invalid_return_20_test.dart b/tests/language/invalid_returns/sync_invalid_return_20_test.dart
new file mode 100644
index 0000000..a057f8f
--- /dev/null
+++ b/tests/language/invalid_returns/sync_invalid_return_20_test.dart
@@ -0,0 +1,21 @@
+// Copyright (c) 2018, the Dart project authors.  Please see the AUTHORS file
+// 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.
+
+import 'dart:async';
+
+/* `return exp;` where `exp` has static type `S` is an error if `S` is not
+ * assignable to `T`.
+ */
+
+FutureOr<int?> v = null;
+String test() {
+  return v;
+  //     ^
+  // [analyzer] unspecified
+  // [cfe] unspecified
+}
+
+void main() {
+  test();
+}
diff --git a/tests/language/invalid_returns/sync_invalid_return_21_test.dart b/tests/language/invalid_returns/sync_invalid_return_21_test.dart
new file mode 100644
index 0000000..140508e
--- /dev/null
+++ b/tests/language/invalid_returns/sync_invalid_return_21_test.dart
@@ -0,0 +1,21 @@
+// Copyright (c) 2018, the Dart project authors.  Please see the AUTHORS file
+// 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.
+
+import 'dart:async';
+
+/* `return exp;` where `exp` has static type `S` is an error if `S` is not
+ * assignable to `T`.
+ */
+
+int v = 0;
+Future<String> test() {
+  return v;
+  //     ^
+  // [analyzer] unspecified
+  // [cfe] unspecified
+}
+
+void main() {
+  test();
+}
diff --git a/tests/language/invalid_returns/sync_invalid_return_22_test.dart b/tests/language/invalid_returns/sync_invalid_return_22_test.dart
new file mode 100644
index 0000000..b1e2dc7
--- /dev/null
+++ b/tests/language/invalid_returns/sync_invalid_return_22_test.dart
@@ -0,0 +1,21 @@
+// Copyright (c) 2018, the Dart project authors.  Please see the AUTHORS file
+// 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.
+
+import 'dart:async';
+
+/* `return exp;` where `exp` has static type `S` is an error if `S` is not
+ * assignable to `T`.
+ */
+
+Future<int> v = Future.value(0);
+Future<String> test() {
+  return v;
+  //     ^
+  // [analyzer] unspecified
+  // [cfe] unspecified
+}
+
+void main() {
+  test();
+}
diff --git a/tests/language/invalid_returns/sync_invalid_return_23_test.dart b/tests/language/invalid_returns/sync_invalid_return_23_test.dart
new file mode 100644
index 0000000..2b9a833
--- /dev/null
+++ b/tests/language/invalid_returns/sync_invalid_return_23_test.dart
@@ -0,0 +1,21 @@
+// Copyright (c) 2018, the Dart project authors.  Please see the AUTHORS file
+// 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.
+
+import 'dart:async';
+
+/* `return exp;` where `exp` has static type `S` is an error if `S` is not
+ * assignable to `T`.
+ */
+
+FutureOr<int> v = 0;
+Future<String> test() {
+  return v;
+  //     ^
+  // [analyzer] unspecified
+  // [cfe] unspecified
+}
+
+void main() {
+  test();
+}
diff --git a/tests/language/invalid_returns/sync_invalid_return_24_test.dart b/tests/language/invalid_returns/sync_invalid_return_24_test.dart
new file mode 100644
index 0000000..5606fd4
--- /dev/null
+++ b/tests/language/invalid_returns/sync_invalid_return_24_test.dart
@@ -0,0 +1,21 @@
+// Copyright (c) 2018, the Dart project authors.  Please see the AUTHORS file
+// 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.
+
+import 'dart:async';
+
+/* `return exp;` where `exp` has static type `S` is an error if `S` is not
+ * assignable to `T`.
+ */
+
+int v = 0;
+FutureOr<String> test() {
+  return v;
+  //     ^
+  // [analyzer] unspecified
+  // [cfe] unspecified
+}
+
+void main() {
+  test();
+}
diff --git a/tests/language/invalid_returns/sync_invalid_return_25_test.dart b/tests/language/invalid_returns/sync_invalid_return_25_test.dart
new file mode 100644
index 0000000..90014c9
--- /dev/null
+++ b/tests/language/invalid_returns/sync_invalid_return_25_test.dart
@@ -0,0 +1,21 @@
+// Copyright (c) 2018, the Dart project authors.  Please see the AUTHORS file
+// 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.
+
+import 'dart:async';
+
+/* `return exp;` where `exp` has static type `S` is an error if `S` is not
+ * assignable to `T`.
+ */
+
+Future<int> v = Future.value(0);
+FutureOr<String> test() {
+  return v;
+  //     ^
+  // [analyzer] unspecified
+  // [cfe] unspecified
+}
+
+void main() {
+  test();
+}
diff --git a/tests/language/invalid_returns/sync_invalid_return_26_test.dart b/tests/language/invalid_returns/sync_invalid_return_26_test.dart
new file mode 100644
index 0000000..1ea644f
--- /dev/null
+++ b/tests/language/invalid_returns/sync_invalid_return_26_test.dart
@@ -0,0 +1,21 @@
+// Copyright (c) 2018, the Dart project authors.  Please see the AUTHORS file
+// 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.
+
+import 'dart:async';
+
+/* `return exp;` where `exp` has static type `S` is an error if `S` is not
+ * assignable to `T`.
+ */
+
+FutureOr<int?> v = null;
+FutureOr<String> test() {
+  return v;
+  //     ^
+  // [analyzer] unspecified
+  // [cfe] unspecified
+}
+
+void main() {
+  test();
+}
diff --git a/tests/language/invalid_returns/sync_invalid_return_27_test.dart b/tests/language/invalid_returns/sync_invalid_return_27_test.dart
new file mode 100644
index 0000000..5a04adb
--- /dev/null
+++ b/tests/language/invalid_returns/sync_invalid_return_27_test.dart
@@ -0,0 +1,21 @@
+// Copyright (c) 2018, the Dart project authors.  Please see the AUTHORS file
+// 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.
+
+import 'dart:async';
+
+/* `return exp;` where `exp` has static type `S` is an error if `S` is `void`
+ * and `T` is not `void` or `dynamic`.
+ */
+
+void v = null;
+Null test() {
+  return v;
+  //     ^
+  // [analyzer] unspecified
+  // [cfe] unspecified
+}
+
+void main() {
+  test();
+}
diff --git a/tests/language/invalid_returns/sync_mixed_valid_returns_legacy_lib.dart b/tests/language/invalid_returns/sync_mixed_valid_returns_legacy_lib.dart
new file mode 100644
index 0000000..980deba
--- /dev/null
+++ b/tests/language/invalid_returns/sync_mixed_valid_returns_legacy_lib.dart
@@ -0,0 +1,23 @@
+// Copyright (c) 2020, the Dart project authors.  Please see the AUTHORS file
+// 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.6
+
+import 'dart:async';
+
+void vv = null;
+dynamic vd = null;
+Object vo = null;
+Null vn = null;
+int vi = 0;
+Future<void> fvv = Future<void>.value(null);
+Future<dynamic> fvd = Future<dynamic>.value(null);
+Future<Object> fvo = Future<Object>.value(null);
+Future<Null> fvn = Future<Null>.value(null);
+Future<int> fvi = Future<int>.value(0);
+FutureOr<void> fovv = null;
+FutureOr<dynamic> fovd = null;
+FutureOr<Object> fovo = null;
+FutureOr<Null> fovn = null;
+FutureOr<int> fovi = 0;
diff --git a/tests/language/invalid_returns/sync_mixed_valid_returns_test.dart b/tests/language/invalid_returns/sync_mixed_valid_returns_test.dart
new file mode 100644
index 0000000..020e4dc
--- /dev/null
+++ b/tests/language/invalid_returns/sync_mixed_valid_returns_test.dart
@@ -0,0 +1,122 @@
+// Copyright (c) 2020, the Dart project authors.  Please see the AUTHORS file
+// 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.
+
+// Requirements=nnbd-weak
+
+import 'dart:async';
+import 'sync_mixed_valid_returns_legacy_lib.dart';
+
+/* Test the cases where expression bodied functions are more permissive
+ * than block bodied functions (places where they behave the same
+ * are tested below).
+ *
+ * A synchronous expression bodied function with return type `T` and return
+ * expression `e` has a valid return if:
+ * `T` is `void`,
+ * or `return exp;` is a valid return for an equivalent block bodied function
+ * with return type `T` as defined below.
+ */
+
+void sync_Object_to_void_e() => vo;
+void sync_int_to_void_e() => vi;
+void sync_Future_void_to_void_e() => fvv;
+void sync_Future_dynamic_to_void_e() => fvd;
+void sync_Future_Object_to_void_e() => fvo;
+void sync_Future_Null_to_void_e() => fvn;
+void sync_Future_int_to_void_e() => fvi;
+void sync_FutureOr_void_to_void_e() => fovv;
+void sync_FutureOr_dynamic_to_void_e() => fovd;
+void sync_FutureOr_Object_to_void_e() => fovo;
+void sync_FutureOr_Null_to_void_e() => fovn;
+void sync_FutureOr_int_to_void_e() => fovi;
+
+/* `return exp;` where `exp` has static type `S` is a valid return if:
+ * `S` is `void*`
+ * and `T` is `void` or `dynamic`.
+ */
+
+void sync_void_to_void_e() => vv;
+void sync_void_to_void() {
+  return vv;
+}
+
+dynamic sync_void_to_dynamic_e() => vv;
+dynamic sync_void_to_dynamic() {
+  return vv;
+}
+
+/* `return exp;` where `exp` has static type `S` is a valid return if:
+ * `T` is `void`
+ * and `S` is `void*` or `dynamic*` or `Null*`
+ */
+
+void sync_dynamic_to_void_e() => vd;
+void sync_dynamic_to_void() {
+  return vd;
+}
+
+void sync_Null_to_void_e() => vn;
+void sync_Null_to_void() {
+  return vn;
+}
+
+/* `return exp;` where `exp` has static type `S` is a valid return if:
+ * `T` is not `void`
+ * and `S` is not `void` nor `void*`,
+ * and `S` is assignable to `T`
+ */
+
+int sync_int_to_int_e() => vi;
+int sync_int_to_int() {
+  return vi;
+}
+
+int sync_dynamic_to_int_e() => vi as dynamic;
+int sync_dynamic_to_int() {
+  return vi as dynamic;
+}
+
+FutureOr<int> sync_int_to_FutureOr_int_e() => vi;
+FutureOr<int> sync_int_to_FutureOr_int() {
+  return vi;
+}
+
+FutureOr<int> sync_dynamic_to_FutureOr_int_e() => vi as dynamic;
+FutureOr<int> sync_dynamic_to_FutureOr_int() {
+  return vi as dynamic;
+}
+
+void main() {
+  sync_void_to_void_e();
+  sync_dynamic_to_void_e();
+  sync_Object_to_void_e();
+  sync_Null_to_void_e();
+  sync_int_to_void_e();
+  sync_Future_void_to_void_e();
+  sync_Future_dynamic_to_void_e();
+  sync_Future_Object_to_void_e();
+  sync_Future_Null_to_void_e();
+  sync_Future_int_to_void_e();
+  sync_FutureOr_void_to_void_e();
+  sync_FutureOr_dynamic_to_void_e();
+  sync_FutureOr_Object_to_void_e();
+  sync_FutureOr_Null_to_void_e();
+  sync_FutureOr_int_to_void_e();
+  sync_void_to_void_e();
+  sync_void_to_void();
+  sync_void_to_dynamic_e();
+  sync_void_to_dynamic();
+  sync_dynamic_to_void_e();
+  sync_dynamic_to_void();
+  sync_Null_to_void_e();
+  sync_Null_to_void();
+  sync_int_to_int_e();
+  sync_int_to_int();
+  sync_dynamic_to_int_e();
+  sync_dynamic_to_int();
+  sync_int_to_FutureOr_int_e();
+  sync_int_to_FutureOr_int();
+  sync_dynamic_to_FutureOr_int_e();
+  sync_dynamic_to_FutureOr_int();
+}
diff --git a/tests/language/invalid_returns/sync_valid_returns_test.dart b/tests/language/invalid_returns/sync_valid_returns_test.dart
new file mode 100644
index 0000000..1819a7a
--- /dev/null
+++ b/tests/language/invalid_returns/sync_valid_returns_test.dart
@@ -0,0 +1,161 @@
+// Copyright (c) 2018, the Dart project authors.  Please see the AUTHORS file
+// 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.
+
+import 'dart:async';
+
+void vv = null;
+dynamic vd = null;
+Object? vo = null;
+Null vn = null;
+int vi = 0;
+Future<void> fvv = Future<void>.value(null);
+Future<dynamic> fvd = Future<dynamic>.value(null);
+Future<Object?> fvo = Future<Object?>.value(null);
+Future<Null> fvn = Future<Null>.value(null);
+Future<int> fvi = Future<int>.value(0);
+FutureOr<void> fovv = null;
+FutureOr<dynamic> fovd = null;
+FutureOr<Object?> fovo = null;
+FutureOr<Null> fovn = null;
+FutureOr<int> fovi = 0;
+
+/* Test the cases where expression bodied functions are more permissive
+ * than block bodied functions (places where they behave the same
+ * are tested below).
+ *
+ * A synchronous expression bodied function with return type `T` and return
+ * expression `e` has a valid return if:
+ * `T` is `void`,
+ * or `return exp;` is a valid return for an equivalent block bodied function
+ * with return type `T` as defined below.
+ */
+
+void sync_Object_to_void_e() => vo;
+void sync_int_to_void_e() => vi;
+void sync_Future_void_to_void_e() => fvv;
+void sync_Future_dynamic_to_void_e() => fvd;
+void sync_Future_Object_to_void_e() => fvo;
+void sync_Future_Null_to_void_e() => fvn;
+void sync_Future_int_to_void_e() => fvi;
+void sync_FutureOr_void_to_void_e() => fovv;
+void sync_FutureOr_dynamic_to_void_e() => fovd;
+void sync_FutureOr_Object_to_void_e() => fovo;
+void sync_FutureOr_Null_to_void_e() => fovn;
+void sync_FutureOr_int_to_void_e() => fovi;
+
+/* Test the cases that apply only to block bodied functions
+ */
+
+/* `return;` is a valid return if the declared return type is `void`,
+ * `dynamic`, or `Null`.
+ */
+
+void sync_empty_to_void() {
+  return;
+}
+
+dynamic sync_empty_to_dynamic() {
+  return;
+}
+
+Null sync_empty_to_Null() {
+  return;
+}
+
+/* Test the cases that apply to both expression bodied and block bodied
+ * functions
+ */
+
+/* `return exp;` where `exp` has static type `S` is a valid return if:
+ * `S` is `void`
+ * and `T` is `void` or `dynamic`.
+ */
+
+void sync_void_to_void_e() => vv;
+void sync_void_to_void() {
+  return vv;
+}
+
+dynamic sync_void_to_dynamic_e() => vv;
+dynamic sync_void_to_dynamic() {
+  return vv;
+}
+
+/* `return exp;` where `exp` has static type `S` is a valid return if:
+ * `T` is `void`
+ * and `S` is `void` or `dynamic` or `Null`
+ */
+
+void sync_dynamic_to_void_e() => vd;
+void sync_dynamic_to_void() {
+  return vd;
+}
+
+void sync_Null_to_void_e() => vn;
+void sync_Null_to_void() {
+  return vn;
+}
+
+/* `return exp;` where `exp` has static type `S` is a valid return if:
+ * `T` is not `void`
+ * and `S` is not `void` nor `void*`,
+ * and `S` is assignable to `T`
+ */
+
+int sync_int_to_int_e() => vi;
+int sync_int_to_int() {
+  return vi;
+}
+
+int sync_dynamic_to_int_e() => vi as dynamic;
+int sync_dynamic_to_int() {
+  return vi as dynamic;
+}
+
+FutureOr<int> sync_int_to_FutureOr_int_e() => vi;
+FutureOr<int> sync_int_to_FutureOr_int() {
+  return vi;
+}
+
+FutureOr<int> sync_dynamic_to_FutureOr_int_e() => vi as dynamic;
+FutureOr<int> sync_dynamic_to_FutureOr_int() {
+  return vi as dynamic;
+}
+
+void main() {
+  sync_void_to_void_e();
+  sync_dynamic_to_void_e();
+  sync_Object_to_void_e();
+  sync_Null_to_void_e();
+  sync_int_to_void_e();
+  sync_Future_void_to_void_e();
+  sync_Future_dynamic_to_void_e();
+  sync_Future_Object_to_void_e();
+  sync_Future_Null_to_void_e();
+  sync_Future_int_to_void_e();
+  sync_FutureOr_void_to_void_e();
+  sync_FutureOr_dynamic_to_void_e();
+  sync_FutureOr_Object_to_void_e();
+  sync_FutureOr_Null_to_void_e();
+  sync_FutureOr_int_to_void_e();
+  sync_empty_to_void();
+  sync_empty_to_dynamic();
+  sync_empty_to_Null();
+  sync_void_to_void_e();
+  sync_void_to_void();
+  sync_void_to_dynamic_e();
+  sync_void_to_dynamic();
+  sync_dynamic_to_void_e();
+  sync_dynamic_to_void();
+  sync_Null_to_void_e();
+  sync_Null_to_void();
+  sync_int_to_int_e();
+  sync_int_to_int();
+  sync_dynamic_to_int_e();
+  sync_dynamic_to_int();
+  sync_int_to_FutureOr_int_e();
+  sync_int_to_FutureOr_int();
+  sync_dynamic_to_FutureOr_int_e();
+  sync_dynamic_to_FutureOr_int();
+}
diff --git a/tests/language/stack_trace/custom_await_test.dart b/tests/language/stack_trace/custom_await_test.dart
new file mode 100644
index 0000000..7a07f7e
--- /dev/null
+++ b/tests/language/stack_trace/custom_await_test.dart
@@ -0,0 +1,35 @@
+// Copyright (c) 2015, the Dart project authors.  Please see the AUTHORS file
+// 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.
+
+// Tests that `await` can handle a future with a non-native stack trace.
+
+import "dart:async";
+import "package:expect/expect.dart";
+
+class Blah implements StackTrace {
+  Blah(this._trace);
+
+  toString() {
+    return "Blah " + _trace.toString();
+  }
+
+  var _trace;
+}
+
+foo() {
+  var x = "\nBloop\nBleep\n";
+  return Future.error(42, Blah(x));
+}
+
+main() async {
+  try {
+    await foo();
+    Expect.fail("Should not reach here.");
+  } on int catch (e, s) {
+    Expect.equals(42, e);
+    Expect.equals("Blah \nBloop\nBleep\n", s.toString());
+    return;
+  }
+  Expect.fail("Unreachable.");
+}
diff --git a/tests/language/stack_trace/error_runtime_test.dart b/tests/language/stack_trace/error_runtime_test.dart
new file mode 100644
index 0000000..d99c295
--- /dev/null
+++ b/tests/language/stack_trace/error_runtime_test.dart
@@ -0,0 +1,82 @@
+// Copyright (c) 2013, the Dart project authors.  Please see the AUTHORS file
+// 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 test program for testing throw statement
+
+// Tests that thrown errors contain their stack trace.
+
+import "package:expect/expect.dart";
+
+class MyException {
+  const MyException(String message) : message_ = message;
+  final String message_;
+}
+
+class Helper1 {
+  static int func1() {
+    return func2();
+  }
+
+  static int func2() {
+    return func3();
+  }
+
+  static int func3() {
+    return func4();
+  }
+
+  static int func4() {
+    var i = 0;
+    try {
+      i = 10;
+      func5();
+    } on ArgumentError catch (e) {
+      i = 100;
+      // Error contains stack trace, even if we don't ask for one with (e, s).
+      Expect.isNotNull(e.stackTrace, "Errors need a stackTrace on throw");
+    }
+    return i;
+  }
+
+  static void func5() {
+    // Throw an Error.
+    throw new ArgumentError("ArgumentError in func5");
+  }
+}
+
+class Helper2 {
+  static int func1() {
+    return func2();
+  }
+
+  static int func2() {
+    return func3();
+  }
+
+  static int func3() {
+    return func4();
+  }
+
+  static int func4() {
+    var i = 0;
+    try {
+      i = 10;
+      func5();
+    } on ArgumentError catch (e, s) {
+      i = 200;
+      Expect.isNotNull(e.stackTrace, "Errors need a stackTrace on throw");
+      Expect.equals(e.stackTrace.toString(), s.toString());
+    }
+    return i;
+  }
+
+  static List func5() {
+    // Throw an Error.
+    throw new ArgumentError("ArgumentError in func5");
+  }
+}
+
+main() {
+  Expect.equals(100, Helper1.func1());
+  Expect.equals(200, Helper2.func1());
+}
diff --git a/tests/language/stack_trace/stacktrace_test.dart b/tests/language/stack_trace/stacktrace_test.dart
new file mode 100644
index 0000000..ecbf6d38
--- /dev/null
+++ b/tests/language/stack_trace/stacktrace_test.dart
@@ -0,0 +1,17 @@
+// Copyright (c) 2013, the Dart project authors.  Please see the AUTHORS file
+// 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.
+
+// Test that a stack trace is properly terminated (issue 8850).
+
+import "package:expect/expect.dart";
+
+void main() {
+  var ex = new Exception("fail");
+  try {
+    throw ex;
+  } on Exception catch (e, st) {
+    Expect.equals(ex, e);
+    Expect.isTrue(st.toString().length > 0);
+  }
+}
diff --git a/tests/language_2/function_subtype/regress41680_test.dart b/tests/language_2/function_subtype/regress41680_test.dart
index e4d689d..696e9ec 100644
--- a/tests/language_2/function_subtype/regress41680_test.dart
+++ b/tests/language_2/function_subtype/regress41680_test.dart
@@ -2,6 +2,8 @@
 // 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.
 
+// [NNBD non-migrated]: This test is migrated to regress41680_strong_test.dart
+// and regress41680_weak_test.dart.
 import "package:expect/expect.dart";
 
 typedef dynamicToDynamic = dynamic Function(dynamic);
diff --git a/tests/language_2/stack_trace/custom_await_test.dart b/tests/language_2/stack_trace/custom_await_test.dart
index dfcb429..0790fb1 100644
--- a/tests/language_2/stack_trace/custom_await_test.dart
+++ b/tests/language_2/stack_trace/custom_await_test.dart
@@ -1,3 +1,7 @@
+// Copyright (c) 2015, the Dart project authors.  Please see the AUTHORS file
+// 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.
+
 import "dart:async";
 import "package:expect/expect.dart";
 
diff --git a/tests/language_2/stack_trace/error_test.dart b/tests/language_2/stack_trace/error_test.dart
deleted file mode 100644
index 56707da..0000000
--- a/tests/language_2/stack_trace/error_test.dart
+++ /dev/null
@@ -1,126 +0,0 @@
-// Copyright (c) 2013, the Dart project authors.  Please see the AUTHORS file
-// 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 test program for testing throw statement
-
-import "package:expect/expect.dart";
-
-class MyException {
-  const MyException(String message) : message_ = message;
-  final String message_;
-}
-
-class Helper1 {
-  static int func1() {
-    return func2();
-  }
-
-  static int func2() {
-    return func3();
-  }
-
-  static int func3() {
-    return func4();
-  }
-
-  static int func4() {
-    var i = 0;
-    try {
-      i = 10;
-      func5();
-    } on ArgumentError catch (e) {
-      i = 100;
-      Expect.isNotNull(e.stackTrace, "Errors need a stackTrace on throw");
-    }
-    return i;
-  }
-
-  static void func5() {
-    // Throw an Error.
-    throw new ArgumentError("ArgumentError in func5");
-  }
-}
-
-class Helper2 {
-  static int func1() {
-    return func2();
-  }
-
-  static int func2() {
-    return func3();
-  }
-
-  static int func3() {
-    return func4();
-  }
-
-  static int func4() {
-    var i = 0;
-    try {
-      i = 10;
-      func5();
-    } on ArgumentError catch (e, s) {
-      i = 200;
-      Expect.isNotNull(e.stackTrace, "Errors need a stackTrace on throw");
-      Expect.equals(e.stackTrace.toString(), s.toString());
-    }
-    return i;
-  }
-
-  static List func5() {
-    // Throw an Error.
-    throw new ArgumentError("ArgumentError in func5");
-  }
-}
-
-class Helper3 {
-  static int func1() {
-    return func2();
-  }
-
-  static int func2() {
-    return func3();
-  }
-
-  static int func3() {
-    return func4();
-  }
-
-  static int func4() {
-    var i = 0;
-    try {
-      i = 10;
-      func5();
-    } on MyException catch (e) {
-      i = 300;
-      try {
-        // There should be no stackTrace in this normal exception object.
-        // We should get a NoSuchMethodError.
-        var trace = e.stackTrace;
-        //            ^^^^^^^^^^
-        // [analyzer] STATIC_TYPE_WARNING.UNDEFINED_GETTER
-        // [cfe] The getter 'stackTrace' isn't defined for the class 'MyException'.
-      } on NoSuchMethodError catch (e) {
-        Expect.isNotNull(e.stackTrace, "Error needs a stackTrace on throw");
-      }
-    }
-    return i;
-  }
-
-  static List func5() {
-    // Throw an Exception (any random object).
-    throw new MyException("MyException in func5");
-  }
-}
-
-class ErrorStackTraceTest {
-  static testMain() {
-    Expect.equals(100, Helper1.func1());
-    Expect.equals(200, Helper2.func1());
-    Expect.equals(300, Helper3.func1());
-  }
-}
-
-main() {
-  ErrorStackTraceTest.testMain();
-}
diff --git a/tests/language_2/vm/regress_flutter_56479_test.dart b/tests/language_2/vm/regress_flutter_56479_test.dart
new file mode 100644
index 0000000..87e3a70
--- /dev/null
+++ b/tests/language_2/vm/regress_flutter_56479_test.dart
@@ -0,0 +1,19 @@
+// Copyright (c) 2020, the Dart project authors.  Please see the AUTHORS file
+// 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.
+
+// Verifies that optional parameters can be transformed in field initializers.
+// Regression test for https://github.com/flutter/flutter/issues/56479.
+
+import "package:expect/expect.dart";
+
+int bar({int x = 2}) => x + 1;
+
+class A {
+  static int foo = bar(x: 42);
+}
+
+main() {
+  Expect.equals(5, bar(x: 4));
+  Expect.equals(43, A.foo);
+}
diff --git a/tests/legacy_status_dart2js.csv b/tests/legacy_status_dart2js.csv
index e7f8343..8d779d6 100644
--- a/tests/legacy_status_dart2js.csv
+++ b/tests/legacy_status_dart2js.csv
@@ -4,7 +4,6 @@
 ,codegen/logical_expression_test,Fail,Issue 17027,https://dartbug.com/17027,open
 ,codegen/side_effect_tdiv_regression_test,Fail,Issue 33050,https://dartbug.com/33050,open
 ,codegen/simple_function_subtype_test,Fail,simple_function_subtype_test is temporarily(?) disabled due to new method for building function type tests.,,
-,end_to_end/generate_code_with_compile_time_errors_test,RuntimeError,not supported yet with the new FE.,,
 ,end_to_end/show_package_warnings_test,RuntimeError,missing errors from the FE,,
 ,inference/simple_inferrer_const_closure2_test,Fail,Issue 16507,https://dartbug.com/16507,open
 ,inference/simple_inferrer_const_closure_test,Fail,Issue 16507,https://dartbug.com/16507,open
diff --git a/tests/lib/html/fileapi_directory_test.dart b/tests/lib/html/fileapi_directory_test.dart
index b2c7945..9b4ee72 100644
--- a/tests/lib/html/fileapi_directory_test.dart
+++ b/tests/lib/html/fileapi_directory_test.dart
@@ -29,8 +29,7 @@
     test('directoryDoesntExist', () async {
       try {
         await fs.root.getDirectory('directory2');
-      } catch (error) {
-        expect(true, error is DomException);
+      } on DomException catch (error) {
         expect(DomException.NOT_FOUND, error.name);
       }
     });
diff --git a/tests/lib/html/fileapi_entry_test.dart b/tests/lib/html/fileapi_entry_test.dart
index 7669fc8..fd0e303 100644
--- a/tests/lib/html/fileapi_entry_test.dart
+++ b/tests/lib/html/fileapi_entry_test.dart
@@ -58,9 +58,7 @@
       try {
         entry = await fs.root.getFile('file4');
         fail("File file4 should not exist.");
-      } catch (error) {
-        expect(error is DomException, true,
-            reason: "Not DomException - not exist");
+      } on DomException catch (error) {
         expect(DomException.NOT_FOUND, error.name);
       }
 
@@ -71,9 +69,7 @@
       try {
         var entry = await fileAndDir.dir.getFile(fileAndDir.file.name);
         fail("file not removed");
-      } catch (error) {
-        expect(error is DomException, true,
-            reason: "Not DomException - removed");
+      } on DomException catch (error) {
         expect(DomException.NOT_FOUND, error.name);
       }
     });
diff --git a/tests/lib/html/fileapi_file_test.dart b/tests/lib/html/fileapi_file_test.dart
index f70bb13..8eb644b 100644
--- a/tests/lib/html/fileapi_file_test.dart
+++ b/tests/lib/html/fileapi_file_test.dart
@@ -30,8 +30,7 @@
       try {
         var fileObj = await fs.root.getFile('file2');
         fail("file found");
-      } catch (error) {
-        expect(true, error is DomException);
+      } on DomException catch (error) {
         expect(DomException.NOT_FOUND, error.name);
       }
     });
diff --git a/tests/lib/html/interactive_media_test.dart b/tests/lib/html/interactive_media_test.dart
index 840e16a..eebae09 100644
--- a/tests/lib/html/interactive_media_test.dart
+++ b/tests/lib/html/interactive_media_test.dart
@@ -27,7 +27,7 @@
               device.label.endsWith('Built-in Microphone');
           expect(goodDevLabel, true);
         }
-      } catch (e) {
+      } on DomException catch (e) {
         // Could fail if bot machine doesn't support audio or video.
         expect(e.name == DomException.NOT_FOUND, true);
       }
@@ -54,7 +54,7 @@
         video.src = url;
 
         return completer.future;
-      }).catchError((e) {
+      }).catchError((dynamic e) {
         // Could fail if bot machine doesn't support audio or video.
         expect(e.name == DomException.NOT_FOUND, true);
       });
@@ -87,7 +87,7 @@
         video.src = url;
 
         return completer.future;
-      }).catchError((e) {
+      }).catchError((dynamic e) {
         // Could fail if bot machine doesn't support audio or video.
         expect(e.name == DomException.NOT_FOUND, true);
       });
diff --git a/tests/lib/html/websql_test.dart b/tests/lib/html/websql_test.dart
index 36daf6c..7d88a91 100644
--- a/tests/lib/html/websql_test.dart
+++ b/tests/lib/html/websql_test.dart
@@ -66,7 +66,7 @@
       try {
         await dropTable(tx, tableName);
         expect(false, true, reason: "dropTable should fail");
-      } catch (error) {
+      } on DomException catch (error) {
         expect(error.message,
             "could not prepare statement (1 no such table: test_table)");
       }
@@ -80,7 +80,7 @@
         SqlResultSet createResult =
             await createTable(tx, tableName, columnName);
         expect(createResult.insertId, 0);
-      } catch (error) {
+      } on DomException catch (error) {
         expect(false, true, reason: "createTable failed - ${error.message}");
       }
     });
@@ -94,7 +94,7 @@
             await insertTable(tx, tableName, columnName, 'Some text data');
         expect(insertResult.insertId, 1);
         expect(insertResult.rowsAffected, 1);
-      } catch (error) {
+      } on DomException catch (error) {
         expect(false, true, reason: "insert failed - ${error.message}");
       }
     });
@@ -107,7 +107,7 @@
         SqlResultSet queryResult = await queryTable(tx, tableName);
         expect(queryResult.rows.length, 1);
         expect(queryResult.rows[0]['test_data'], "Some text data");
-      } catch (error) {
+      } on DomException catch (error) {
         expect(false, true, reason: "queryTable failed - ${error.message}");
       }
     });
diff --git a/tests/lib/html/xhr_test.dart b/tests/lib/html/xhr_test.dart
index c885248..bffd1cf 100644
--- a/tests/lib/html/xhr_test.dart
+++ b/tests/lib/html/xhr_test.dart
@@ -76,8 +76,8 @@
   try {
     await HttpRequest.request('NonExistingFile');
     fail('Request should not have succeeded.');
-  } catch (error) {
-    HttpRequest xhr = error.target;
+  } on ProgressEvent catch (error) {
+    HttpRequest xhr = error.target as HttpRequest;
     expect(xhr.readyState, HttpRequest.DONE);
     validate404(xhr);
   }
@@ -103,8 +103,8 @@
   try {
     await HttpRequest.request('NonExistingFile', withCredentials: true);
     fail('Request should not have succeeded.');
-  } catch (error) {
-    HttpRequest xhr = error.target;
+  } on ProgressEvent catch (error) {
+    HttpRequest xhr = error.target as HttpRequest;
     expect(xhr.readyState, HttpRequest.DONE);
     validate404(xhr);
   }
@@ -126,8 +126,8 @@
   try {
     await HttpRequest.getString('NonExistingFile');
     fail('Succeeded for non-existing file.');
-  } catch (error) {
-    HttpRequest xhr = error.target;
+  } on ProgressEvent catch (error) {
+    HttpRequest xhr = error.target as HttpRequest;
     expect(xhr.readyState, HttpRequest.DONE);
     validate404(xhr);
   }
diff --git a/tests/lib/mirrors/null_test.dart b/tests/lib/mirrors/null_test.dart
index cc19df8..21ae2d8 100644
--- a/tests/lib/mirrors/null_test.dart
+++ b/tests/lib/mirrors/null_test.dart
@@ -64,7 +64,7 @@
   try {
     if (new DateTime.now().millisecondsSinceEpoch == 42) x = 42;
     throw [x];
-  } catch (e) {
+  } on List catch (e) {
     return e[0];
   }
   return 42;
diff --git a/tests/lib/mirrors/syntax_error_test.dart b/tests/lib/mirrors/syntax_error_test.dart
index 227e791..def22ec 100644
--- a/tests/lib/mirrors/syntax_error_test.dart
+++ b/tests/lib/mirrors/syntax_error_test.dart
@@ -11,7 +11,7 @@
 
 class MD {
   final String name;
-  const MD({this.name});
+  const MD({required this.name});
 }
 
 @MD(name: 'A')
diff --git a/tests/standalone/io/directory_test.dart b/tests/standalone/io/directory_test.dart
index 5c29207..5c39405 100644
--- a/tests/standalone/io/directory_test.dart
+++ b/tests/standalone/io/directory_test.dart
@@ -603,10 +603,9 @@
   try {
     new Directory(foo).renameSync(bar);
     Expect.fail('Directory.rename should fail to rename a non-directory');
-  } catch (e) {
-    Expect.isTrue(e is FileSystemException);
+  } on FileSystemException catch (e) {
     if (Platform.isLinux || Platform.isMacOS) {
-      Expect.isTrue(e.osError.message.contains('Not a directory'));
+      Expect.isTrue(e.osError!.message.contains('Not a directory'));
     }
   }
 
diff --git a/tests/standalone/io/file_create_test.dart b/tests/standalone/io/file_create_test.dart
index 126ac4a..7d37d47 100644
--- a/tests/standalone/io/file_create_test.dart
+++ b/tests/standalone/io/file_create_test.dart
@@ -31,8 +31,7 @@
   try {
     await badFile.create();
     Expect.fail('Should be unreachable');
-  } catch (e) {
-    Expect.isTrue(e is FileSystemException);
+  } on FileSystemException catch (e) {
     Expect.isNotNull(e.osError);
   }
   await tmp.delete(recursive: true);
diff --git a/tests/standalone/io/http_parser_test.dart b/tests/standalone/io/http_parser_test.dart
index 4f27fcf..c6400b6 100644
--- a/tests/standalone/io/http_parser_test.dart
+++ b/tests/standalone/io/http_parser_test.dart
@@ -439,6 +439,18 @@
     headers["x-header-b"] = "bbb";
     _testParseRequestLean(request, "POST", "/test", expectedHeaders: headers);
 
+    // _testParseRequestLean encodes the request as ISO-8859-1. Test that the
+    // HTTP parser decodes header values as ISO-8859-1.
+    request = """
+POST /test HTTP/1.1\r
+latin1:   blåbærgrød\r
+\r
+""";
+
+    headers = new Map();
+    headers["latin1"] = "blåbærgrød";
+    _testParseRequestLean(request, "POST", "/test", expectedHeaders: headers);
+
     request = """
 POST /test HTTP/1.1\r
 Content-Length: 10\r
@@ -642,6 +654,18 @@
         expectedBytesReceived: 0,
         expectedHeaders: headers);
 
+    // _testParseRequestLean encodes the request as ISO-8859-1. Test that the
+    // HTTP parser decodes header values as ISO-8859-1.
+    response = """
+HTTP/1.1 200 OK\r
+Content-Length: 0\r
+test-latin1: blåbærgrød\r
+\r\n""";
+    headers = new Map();
+    headers["content-length"] = "0";
+    headers["test-latin1"] = "blåbærgrød";
+    _testParseResponse(response, 200, "OK", expectedHeaders: headers);
+
     // Test content.
     response = """
 HTTP/1.1 200 OK\r
diff --git a/tests/standalone/io/snapshot_fail_test.dart b/tests/standalone/io/snapshot_fail_test.dart
index b5b681d..ca4a6d0 100644
--- a/tests/standalone/io/snapshot_fail_test.dart
+++ b/tests/standalone/io/snapshot_fail_test.dart
@@ -15,8 +15,11 @@
   Directory dir = thisscript.parent;
   String snapshot = "${dir.path}/dummy.snapshot";
   String script = "${dir.path}/snapshot_fail_script.dart";
-  var pr =
-      Process.runSync(Platform.executable, ["--snapshot=$snapshot", script]);
+  var pr = Process.runSync(Platform.executable, [
+    // We need to disable dartdev so this test doesn't try to create a snapshot
+    // of dartdev when we run from kernel on simarm configurations.
+    "--disable-dart-dev", "--snapshot=$snapshot", script,
+  ]);
 
   // There should be no dummy.snapshot file created.
   File dummy = new File(snapshot);
diff --git a/tests/standalone/no_such_method_error_with_invocation_test.dart b/tests/standalone/no_such_method_error_with_invocation_test.dart
new file mode 100644
index 0000000..9d8dc17
--- /dev/null
+++ b/tests/standalone/no_such_method_error_with_invocation_test.dart
@@ -0,0 +1,48 @@
+// Copyright (c) 2020, the Dart project authors.  Please see the AUTHORS file
+// 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.
+
+import "package:expect/expect.dart";
+
+main() {
+  // Using withInvocation constructor.
+  var receiver = Object();
+  {
+    var invocationGet = Invocation.getter(#foo);
+    var errorGet = NoSuchMethodError.withInvocation(receiver, invocationGet);
+    var errorString = errorGet.toString();
+    Expect.isTrue(errorString.contains("foo"), "01: $errorString");
+    Expect.isTrue(errorString.contains("getter"), "02: $errorString");
+  }
+  {
+    var invocationSet = Invocation.setter(#foo, 42);
+    var error = NoSuchMethodError.withInvocation(receiver, invocationSet);
+    var errorString = error.toString();
+    Expect.isTrue(errorString.contains("foo"), "03: $errorString");
+    Expect.isTrue(errorString.contains("setter"), "04: $errorString");
+  }
+  {
+    var invocationCall = Invocation.method(#foo, [42]);
+    var error = NoSuchMethodError.withInvocation(receiver, invocationCall);
+    var errorString = error.toString();
+    Expect.isTrue(errorString.contains("foo"), "05: $errorString");
+    Expect.isTrue(errorString.contains("method"), "06: $errorString");
+    Expect.isTrue(errorString.contains("(_)"), "07: $errorString");
+  }
+  {
+    var invocationCall = Invocation.method(#foo, [42], {#bar: 37});
+    var error = NoSuchMethodError.withInvocation(receiver, invocationCall);
+    var errorString = error.toString();
+    Expect.isTrue(errorString.contains("foo"), "08: $errorString");
+    Expect.isTrue(errorString.contains("method"), "09: $errorString");
+    Expect.isTrue(errorString.contains("(_, {bar: _})"), "10: $errorString");
+  }
+  {
+    var invocationCall = Invocation.genericMethod(#foo, [int], [42]);
+    var error = NoSuchMethodError.withInvocation(receiver, invocationCall);
+    var errorString = error.toString();
+    Expect.isTrue(errorString.contains("foo"), "11: $errorString");
+    Expect.isTrue(errorString.contains("method"), "12: $errorString");
+    Expect.isTrue(errorString.contains("<_>(_)"), "13: $errorString");
+  }
+}
diff --git a/tests/standalone/stack_trace/demangle_ctors_test.dart b/tests/standalone/stack_trace/demangle_ctors_test.dart
new file mode 100644
index 0000000..1968bee
--- /dev/null
+++ b/tests/standalone/stack_trace/demangle_ctors_test.dart
@@ -0,0 +1,60 @@
+// Copyright (c) 2017, the Dart project authors.  Please see the AUTHORS file
+// 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.
+
+// Test that stack traces are properly demangled in constructors (#28740).
+// Regression test for http://dartbug.com/28740
+
+import "package:expect/expect.dart";
+
+class SomeClass {
+  SomeClass.namedConstructor() {
+    throw Exception();
+  }
+
+  SomeClass() {
+    throw Exception();
+  }
+
+  factory SomeClass.useFactory() {
+    throw Exception();
+  }
+}
+
+class OnlyHasFactory {
+  factory OnlyHasFactory() {
+    throw Exception();
+  }
+}
+
+void main() {
+  try {
+    SomeClass();
+  } on Exception catch (e, st) {
+    final stString = st.toString();
+    Expect.isTrue(stString.contains("new SomeClass"));
+    Expect.isFalse(stString.contains("SomeClass."));
+  }
+
+  try {
+    SomeClass.namedConstructor();
+  } on Exception catch (e, st) {
+    final stString = st.toString();
+    Expect.isTrue(stString.contains("new SomeClass.namedConstructor"));
+  }
+
+  try {
+    OnlyHasFactory();
+  } on Exception catch (e, st) {
+    final stString = st.toString();
+    Expect.isTrue(stString.contains("new OnlyHasFactory"));
+    Expect.isFalse(stString.contains("OnlyHasFactory."));
+  }
+
+  try {
+    SomeClass.useFactory();
+  } on Exception catch (e, st) {
+    final stString = st.toString();
+    Expect.isTrue(stString.contains("new SomeClass.useFactory"));
+  }
+}
diff --git a/tests/standalone/stack_trace/full1_test.dart b/tests/standalone/stack_trace/full1_test.dart
new file mode 100644
index 0000000..42963f2
--- /dev/null
+++ b/tests/standalone/stack_trace/full1_test.dart
@@ -0,0 +1,54 @@
+// (c) 2013, the Dart project authors.  Please see the AUTHORS file
+// 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.
+
+import "package:expect/expect.dart";
+
+@pragma("vm:entry-point") // Prevents obfuscation
+void func1() {
+  throw new Exception("Test full stacktrace");
+}
+
+@pragma("vm:entry-point") // Prevents obfuscation
+void func2() {
+  func1();
+}
+
+@pragma("vm:entry-point") // Prevents obfuscation
+void func3() {
+  try {
+    func2();
+  } on Object catch (e, s) {
+    var fullTrace = s.toString();
+    Expect.isTrue(fullTrace.contains("func1"));
+    Expect.isTrue(fullTrace.contains("func2"));
+    Expect.isTrue(fullTrace.contains("func3"));
+    Expect.isTrue(fullTrace.contains("func4"));
+    Expect.isTrue(fullTrace.contains("func5"));
+    Expect.isTrue(fullTrace.contains("func6"));
+    Expect.isTrue(fullTrace.contains("main"));
+  }
+}
+
+@pragma("vm:entry-point") // Prevents obfuscation
+int func4() {
+  func3();
+  return 1;
+}
+
+@pragma("vm:entry-point") // Prevents obfuscation
+int func5() {
+  func4();
+  return 1;
+}
+
+@pragma("vm:entry-point") // Prevents obfuscation
+int func6() {
+  func5();
+  return 1;
+}
+
+main() {
+  var i = func6();
+  Expect.equals(1, i);
+}
diff --git a/tests/standalone/stack_trace/full2_test.dart b/tests/standalone/stack_trace/full2_test.dart
new file mode 100644
index 0000000..fc15d54
--- /dev/null
+++ b/tests/standalone/stack_trace/full2_test.dart
@@ -0,0 +1,75 @@
+// (c) 2013, the Dart project authors.  Please see the AUTHORS file
+// 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.
+
+import "package:expect/expect.dart";
+
+@pragma("vm:entry-point") // Prevent obfuscation.
+void func1() {
+  throw new Exception("Test full stacktrace");
+}
+
+@pragma("vm:entry-point") // Prevent obfuscation.
+void func2() {
+  func1();
+}
+
+@pragma("vm:entry-point") // Prevent obfuscation.
+void func3() {
+  try {
+    func2();
+  } on Object catch (e, s) {
+    var fullTrace = s.toString();
+    Expect.isTrue(fullTrace.contains("func1"));
+    Expect.isTrue(fullTrace.contains("func2"));
+    Expect.isTrue(fullTrace.contains("func3"));
+    Expect.isTrue(fullTrace.contains("func4"));
+    Expect.isTrue(fullTrace.contains("func5"));
+    Expect.isTrue(fullTrace.contains("func6"));
+    Expect.isTrue(fullTrace.contains("func7"));
+    Expect.isTrue(fullTrace.contains("main"));
+
+    rethrow; // This is a rethrow.
+  }
+}
+
+@pragma("vm:entry-point") // Prevent obfuscation.
+int func4() {
+  func3();
+  return 1;
+}
+
+@pragma("vm:entry-point") // Prevent obfuscation.
+int func5() {
+  try {
+    func4();
+  } on Object catch (e, s) {
+    var fullTrace = s.toString();
+    Expect.isTrue(fullTrace.contains("func1"));
+    Expect.isTrue(fullTrace.contains("func2"));
+    Expect.isTrue(fullTrace.contains("func3"));
+    Expect.isTrue(fullTrace.contains("func4"));
+    Expect.isTrue(fullTrace.contains("func5"));
+    Expect.isTrue(fullTrace.contains("func6"));
+    Expect.isTrue(fullTrace.contains("func7"));
+    Expect.isTrue(fullTrace.contains("main"));
+  }
+  return 1;
+}
+
+@pragma("vm:entry-point") // Prevent obfuscation.
+int func6() {
+  func5();
+  return 1;
+}
+
+@pragma("vm:entry-point") // Prevent obfuscation.
+int func7() {
+  func6();
+  return 1;
+}
+
+main() {
+  var i = func7();
+  Expect.equals(1, i);
+}
diff --git a/tests/standalone/stack_trace/full3_test.dart b/tests/standalone/stack_trace/full3_test.dart
new file mode 100644
index 0000000..f6b28a3
--- /dev/null
+++ b/tests/standalone/stack_trace/full3_test.dart
@@ -0,0 +1,74 @@
+// (c) 2013, the Dart project authors.  Please see the AUTHORS file
+// 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.
+
+import "package:expect/expect.dart";
+
+@pragma("vm:entry-point") // Prevent obfuscation
+void func1() {
+  throw new Exception("Test full stacktrace");
+}
+
+@pragma("vm:entry-point") // Prevent obfuscation
+void func2() {
+  func1();
+}
+
+@pragma("vm:entry-point") // Prevent obfuscation
+void func3() {
+  try {
+    func2();
+  } on Object catch (e, s) {
+    var fullTrace = s.toString();
+    Expect.isTrue(fullTrace.contains("func1"));
+    Expect.isTrue(fullTrace.contains("func2"));
+    Expect.isTrue(fullTrace.contains("func3"));
+    Expect.isTrue(fullTrace.contains("func4"));
+    Expect.isTrue(fullTrace.contains("func5"));
+    Expect.isTrue(fullTrace.contains("func6"));
+    Expect.isTrue(fullTrace.contains("func7"));
+    Expect.isTrue(fullTrace.contains("main"));
+    throw new Exception("This is not a rethrow");
+  }
+}
+
+@pragma("vm:entry-point") // Prevent obfuscation
+int func4() {
+  func3();
+  return 1;
+}
+
+@pragma("vm:entry-point") // Prevent obfuscation
+int func5() {
+  try {
+    func4();
+  } on Object catch (e, s) {
+    var fullTrace = s.toString();
+    Expect.isFalse(fullTrace.contains("func1"));
+    Expect.isFalse(fullTrace.contains("func2"));
+    Expect.isTrue(fullTrace.contains("func3"));
+    Expect.isTrue(fullTrace.contains("func4"));
+    Expect.isTrue(fullTrace.contains("func5"));
+    Expect.isTrue(fullTrace.contains("func6"));
+    Expect.isTrue(fullTrace.contains("func7"));
+    Expect.isTrue(fullTrace.contains("main"));
+  }
+  return 1;
+}
+
+@pragma("vm:entry-point") // Prevent obfuscation
+int func6() {
+  func5();
+  return 1;
+}
+
+@pragma("vm:entry-point") // Prevent obfuscation
+int func7() {
+  func6();
+  return 1;
+}
+
+main() {
+  var i = func7();
+  Expect.equals(1, i);
+}
diff --git a/tests/standalone/stack_trace/rethrow_error_test.dart b/tests/standalone/stack_trace/rethrow_error_test.dart
new file mode 100644
index 0000000..a32b7d1
--- /dev/null
+++ b/tests/standalone/stack_trace/rethrow_error_test.dart
@@ -0,0 +1,179 @@
+// Copyright (c) 2014, the Dart project authors.  Please see the AUTHORS file
+// 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.
+
+class SubclassOfError extends Error {}
+
+fail() => throw "Fail";
+
+// == Rethrow, skipping through typed handlers. ==
+
+@pragma("vm:entry-point") // Prevent obfuscation
+aa1() {
+  try {
+    bb1();
+    fail();
+  } on Error catch (error
+          , stacktrace // //# withtraceparameter: ok
+  ) {
+    expectTrace(
+        ['gg1', 'ff1', 'ee1', 'dd1', 'cc1', 'bb1', 'aa1'], error.stackTrace);
+    expectTrace(['gg1', 'ff1', 'ee1', 'dd1', 'cc1', 'bb1', 'aa1'], stacktrace); // //# withtraceparameter: continued
+  }
+}
+
+@pragma("vm:entry-point") // Prevent obfuscation
+bb1() => cc1();
+
+@pragma("vm:entry-point") // Prevent obfuscation
+cc1() {
+  try {
+    dd1();
+  } on String catch (_) {
+    fail();
+  } on int catch (_) {
+    fail();
+  }
+}
+
+@pragma("vm:entry-point") // Prevent obfuscation
+dd1() => ee1();
+
+@pragma("vm:entry-point") // Prevent obfuscation
+ee1() {
+  try {
+    ff1();
+  } catch (_) {
+    rethrow;
+  }
+}
+
+@pragma("vm:entry-point") // Prevent obfuscation
+ff1() => gg1();
+
+@pragma("vm:entry-point") // Prevent obfuscation
+gg1() => throw new SubclassOfError();
+
+// == Rethrow, rethrow again in typed handler. ==
+
+@pragma("vm:entry-point") // Prevent obfuscation
+aa2() {
+  try {
+    bb2();
+    fail();
+  } on Error catch (error
+          , stacktrace // //# withtraceparameter: continued
+  ) {
+    expectTrace(
+        ['gg2', 'ff2', 'ee2', 'dd2', 'cc2', 'bb2', 'aa2'], error.stackTrace);
+    expectTrace(['gg2', 'ff2', 'ee2', 'dd2', 'cc2', 'bb2', 'aa2'], stacktrace); // //# withtraceparameter: continued
+  }
+}
+
+@pragma("vm:entry-point") // Prevent obfuscation
+bb2() => cc2();
+
+@pragma("vm:entry-point") // Prevent obfuscation
+cc2() {
+  try {
+    dd2();
+  } on SubclassOfError catch (_) {
+    rethrow;
+  } on int catch (_) {
+    fail();
+  }
+}
+
+@pragma("vm:entry-point") // Prevent obfuscation
+dd2() => ee2();
+
+@pragma("vm:entry-point") // Prevent obfuscation
+ee2() {
+  try {
+    ff2();
+  } catch (e) {
+    rethrow;
+  }
+}
+
+@pragma("vm:entry-point") // Prevent obfuscation
+ff2() => gg2();
+
+@pragma("vm:entry-point") // Prevent obfuscation
+gg2() => throw new SubclassOfError();
+
+// == Rethrow, with intervening catch without a trace parameter.
+
+@pragma("vm:entry-point") // Prevent obfuscation
+aa3() {
+  try {
+    bb3();
+    fail();
+  } on Error catch (error
+          , stacktrace // //# withtraceparameter: continued
+  ) {
+    expectTrace(
+        ['gg3', 'ff3', 'ee3', 'dd3', 'cc3', 'bb3', 'aa3'], error.stackTrace);
+    expectTrace(['cc3', 'bb3', 'aa3'], stacktrace); // //# withtraceparameter: continued
+  }
+}
+
+@pragma("vm:entry-point") // Prevent obfuscation
+bb3() => cc3();
+
+@pragma("vm:entry-point") // Prevent obfuscation
+cc3() {
+  try {
+    dd3();
+  } catch (e) {
+    throw e;
+  }
+}
+
+@pragma("vm:entry-point") // Prevent obfuscation
+dd3() => ee3();
+
+@pragma("vm:entry-point") // Prevent obfuscation
+ee3() {
+  try {
+    ff3();
+  } catch (_) {
+    rethrow;
+  }
+}
+
+@pragma("vm:entry-point") // Prevent obfuscation
+ff3() => gg3();
+
+@pragma("vm:entry-point") // Prevent obfuscation
+gg3() => throw new SubclassOfError();
+
+expectTrace(functionNames, stacktrace) {
+  // Note we don't expect functionNames to cover the whole trace, only the
+  // top portion, because the frames below main are an implementation detail.
+  var traceLines = stacktrace.toString().split('\n');
+  var expectedIndex = 0;
+  var actualIndex = 0;
+  print(stacktrace);
+  print(functionNames);
+  while (expectedIndex < functionNames.length) {
+    var expected = functionNames[expectedIndex];
+    var actual = traceLines[actualIndex];
+    if (actual.indexOf(expected) == -1) {
+      if (expectedIndex == 0) {
+        actualIndex++; // Skip over some helper frames at the top
+      } else {
+        throw "Expected: $expected actual: $actual";
+      }
+    } else {
+      actualIndex++;
+      expectedIndex++;
+    }
+  }
+}
+
+main() {
+  aa1();
+  aa2();
+  aa3();
+}
diff --git a/tests/standalone/stack_trace/rethrow_nonerror_test.dart b/tests/standalone/stack_trace/rethrow_nonerror_test.dart
new file mode 100644
index 0000000..6af6903
--- /dev/null
+++ b/tests/standalone/stack_trace/rethrow_nonerror_test.dart
@@ -0,0 +1,167 @@
+// Copyright (c) 2014, the Dart project authors.  Please see the AUTHORS file
+// 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.
+
+class NotASubclassOfError {}
+
+fail() => throw "Fail";
+
+// == Rethrow, skipping through typed handlers. ==
+
+@pragma("vm:entry-point")
+aa1() {
+  try {
+    bb1();
+    fail();
+  } catch (exception, stacktrace) {
+    expectTrace(['gg1', 'ff1', 'ee1', 'dd1', 'cc1', 'bb1', 'aa1'], stacktrace);
+  }
+}
+
+@pragma("vm:entry-point")
+bb1() => cc1();
+
+@pragma("vm:entry-point")
+cc1() {
+  try {
+    dd1();
+  } on String catch (_) {
+    fail();
+  } on int catch (_) {
+    fail();
+  }
+}
+
+@pragma("vm:entry-point")
+dd1() => ee1();
+
+@pragma("vm:entry-point")
+ee1() {
+  try {
+    ff1();
+  } catch (_) {
+    rethrow;
+  }
+}
+
+@pragma("vm:entry-point")
+ff1() => gg1();
+
+@pragma("vm:entry-point")
+gg1() => throw new NotASubclassOfError();
+
+// == Rethrow, rethrow again in typed handler. ==
+
+@pragma("vm:entry-point")
+aa2() {
+  try {
+    bb2();
+    fail();
+  } catch (exception, stacktrace) {
+    expectTrace(['gg2', 'ff2', 'ee2', 'dd2', 'cc2', 'bb2', 'aa2'], stacktrace);
+  }
+}
+
+@pragma("vm:entry-point")
+bb2() => cc2();
+
+@pragma("vm:entry-point")
+cc2() {
+  try {
+    dd2();
+  } on NotASubclassOfError catch (_) {
+    rethrow;
+  } on int catch (_) {
+    fail();
+  }
+}
+
+@pragma("vm:entry-point")
+dd2() => ee2();
+
+@pragma("vm:entry-point")
+ee2() {
+  try {
+    ff2();
+  } catch (e) {
+    rethrow;
+  }
+}
+
+@pragma("vm:entry-point")
+ff2() => gg2();
+
+@pragma("vm:entry-point")
+gg2() => throw new NotASubclassOfError();
+
+// == Rethrow, with intervening catch without a trace parameter.
+
+@pragma("vm:entry-point")
+aa3() {
+  try {
+    bb3();
+    fail();
+  } catch (exception, stacktrace) {
+    expectTrace(['cc3', 'bb3', 'aa3'], stacktrace);
+  }
+}
+
+@pragma("vm:entry-point")
+bb3() => cc3();
+
+@pragma("vm:entry-point")
+cc3() {
+  try {
+    dd3();
+  } catch (e) {
+    throw e;
+  }
+}
+
+@pragma("vm:entry-point")
+dd3() => ee3();
+
+@pragma("vm:entry-point")
+ee3() {
+  try {
+    ff3();
+  } catch (e) {
+    rethrow;
+  }
+}
+
+@pragma("vm:entry-point")
+ff3() => gg3();
+
+@pragma("vm:entry-point")
+gg3() => throw new NotASubclassOfError();
+
+expectTrace(functionNames, stacktrace) {
+  // Note we don't expect functionNames to cover the whole trace, only the
+  // top portion, because the frames below main are an implementation detail.
+  var traceLines = stacktrace.toString().split('\n');
+  var expectedIndex = 0;
+  var actualIndex = 0;
+  print(stacktrace);
+  print(functionNames);
+  while (expectedIndex < functionNames.length) {
+    var expected = functionNames[expectedIndex];
+    var actual = traceLines[actualIndex];
+    if (actual.indexOf(expected) == -1) {
+      if (expectedIndex == 0) {
+        actualIndex++; // Skip over some helper frames at the top
+      } else {
+        throw "Expected: $expected actual: $actual";
+      }
+    } else {
+      actualIndex++;
+      expectedIndex++;
+    }
+  }
+}
+
+main() {
+  aa1();
+  aa2();
+  aa3();
+}
diff --git a/tests/standalone/stack_trace/stack_trace_test.dart b/tests/standalone/stack_trace/stack_trace_test.dart
new file mode 100644
index 0000000..5e4d7c6
--- /dev/null
+++ b/tests/standalone/stack_trace/stack_trace_test.dart
@@ -0,0 +1,138 @@
+// Copyright (c) 2011, the Dart project authors.  Please see the AUTHORS file
+// 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 test program for testing throw statement
+
+import "package:expect/expect.dart";
+
+class MyException {
+  const MyException(String message) : message_ = message;
+  final String message_;
+}
+
+class Helper {
+  static int f1(int i) {
+    try {
+      i = func();
+      i = 10;
+    } on MyException catch (exception, stacktrace) {
+      i = 50;
+      print(exception.message_);
+      Expect.isNotNull(stacktrace);
+      print(stacktrace);
+    }
+    try {
+      int j;
+      i = func1();
+      i = 200;
+    } on MyException catch (exception, stacktrace) {
+      i = 50;
+      print(exception.message_);
+      Expect.isNotNull(stacktrace);
+      print(stacktrace);
+    }
+    try {
+      int j;
+      i = func2();
+      i = 200;
+    } on MyException catch (exception, stacktrace) {
+      i = 50;
+      print(exception.message_);
+      Expect.isNotNull(stacktrace);
+      print(stacktrace);
+    } finally {
+      i = i + 800;
+    }
+    return i;
+  }
+
+  static int func() {
+    int i = 0;
+    while (i < 10) {
+      i++;
+    }
+    if (i > 0) {
+      throw new MyException("Exception Test for stack trace being printed");
+    }
+    return 10;
+  }
+
+  static int func1() {
+    try {
+      func();
+    } on MyException catch (exception) {
+      throw new MyException("Exception Test for stack trace being printed");
+      ;
+    }
+    return 10;
+  }
+
+  static int func2() {
+    try {
+      func();
+    } on MyException catch (exception) {
+      rethrow;
+    }
+    return 10;
+  }
+}
+
+class StackTraceTest {
+  static testMain() {
+    Expect.equals(850, Helper.f1(1));
+  }
+}
+
+// Test that the full stack trace is generated for rethrow.
+class RethrowStacktraceTest {
+  var config = 0;
+
+  @pragma("vm:entry-point") // Prevent obfuscation
+  issue12940() {
+    throw "Progy";
+  }
+
+  b() {
+    issue12940();
+  }
+
+  c() {
+    if (config == 0) {
+      try {
+        b();
+      } catch (e) {
+        rethrow;
+      }
+    } else {
+      try {
+        b();
+      } catch (e, s) {
+        rethrow;
+      }
+    }
+  }
+
+  d() {
+    c();
+  }
+
+  testBoth() {
+    for (config = 0; config < 2; config++) {
+      try {
+        d();
+      } catch (e, s) {
+        Expect.isTrue(s.toString().contains("issue12940"));
+      }
+    }
+  }
+
+  static testMain() {
+    var test = new RethrowStacktraceTest();
+    test.testBoth();
+  }
+}
+
+main() {
+  StackTraceTest.testMain();
+  RethrowStacktraceTest.testMain();
+}
diff --git a/tests/standalone/standalone.status b/tests/standalone/standalone.status
index 59dca0b..fd4c088 100644
--- a/tests/standalone/standalone.status
+++ b/tests/standalone/standalone.status
@@ -24,6 +24,9 @@
 io/socket_ipv6_test: SkipByDesign
 io/socket_source_address_test: SkipByDesign
 
+[ $builder_tag == obfuscated ]
+no_such_method_error_with_invocation_test: SkipByDesign # Checks the member names in the NSM error message.
+
 [ $compiler == dart2analyzer ]
 deferred_transitive_import_error_test: Skip
 
diff --git a/tests/standalone_2/io/http_parser_test.dart b/tests/standalone_2/io/http_parser_test.dart
index 4f27fcf..c6400b6 100644
--- a/tests/standalone_2/io/http_parser_test.dart
+++ b/tests/standalone_2/io/http_parser_test.dart
@@ -439,6 +439,18 @@
     headers["x-header-b"] = "bbb";
     _testParseRequestLean(request, "POST", "/test", expectedHeaders: headers);
 
+    // _testParseRequestLean encodes the request as ISO-8859-1. Test that the
+    // HTTP parser decodes header values as ISO-8859-1.
+    request = """
+POST /test HTTP/1.1\r
+latin1:   blåbærgrød\r
+\r
+""";
+
+    headers = new Map();
+    headers["latin1"] = "blåbærgrød";
+    _testParseRequestLean(request, "POST", "/test", expectedHeaders: headers);
+
     request = """
 POST /test HTTP/1.1\r
 Content-Length: 10\r
@@ -642,6 +654,18 @@
         expectedBytesReceived: 0,
         expectedHeaders: headers);
 
+    // _testParseRequestLean encodes the request as ISO-8859-1. Test that the
+    // HTTP parser decodes header values as ISO-8859-1.
+    response = """
+HTTP/1.1 200 OK\r
+Content-Length: 0\r
+test-latin1: blåbærgrød\r
+\r\n""";
+    headers = new Map();
+    headers["content-length"] = "0";
+    headers["test-latin1"] = "blåbærgrød";
+    _testParseResponse(response, 200, "OK", expectedHeaders: headers);
+
     // Test content.
     response = """
 HTTP/1.1 200 OK\r
diff --git a/tests/standalone_2/io/snapshot_fail_test.dart b/tests/standalone_2/io/snapshot_fail_test.dart
index b5b681d..ca4a6d0 100644
--- a/tests/standalone_2/io/snapshot_fail_test.dart
+++ b/tests/standalone_2/io/snapshot_fail_test.dart
@@ -15,8 +15,11 @@
   Directory dir = thisscript.parent;
   String snapshot = "${dir.path}/dummy.snapshot";
   String script = "${dir.path}/snapshot_fail_script.dart";
-  var pr =
-      Process.runSync(Platform.executable, ["--snapshot=$snapshot", script]);
+  var pr = Process.runSync(Platform.executable, [
+    // We need to disable dartdev so this test doesn't try to create a snapshot
+    // of dartdev when we run from kernel on simarm configurations.
+    "--disable-dart-dev", "--snapshot=$snapshot", script,
+  ]);
 
   // There should be no dummy.snapshot file created.
   File dummy = new File(snapshot);
diff --git a/tests/standalone_2/no_such_method_error_with_invocation_test.dart b/tests/standalone_2/no_such_method_error_with_invocation_test.dart
new file mode 100644
index 0000000..9d8dc17
--- /dev/null
+++ b/tests/standalone_2/no_such_method_error_with_invocation_test.dart
@@ -0,0 +1,48 @@
+// Copyright (c) 2020, the Dart project authors.  Please see the AUTHORS file
+// 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.
+
+import "package:expect/expect.dart";
+
+main() {
+  // Using withInvocation constructor.
+  var receiver = Object();
+  {
+    var invocationGet = Invocation.getter(#foo);
+    var errorGet = NoSuchMethodError.withInvocation(receiver, invocationGet);
+    var errorString = errorGet.toString();
+    Expect.isTrue(errorString.contains("foo"), "01: $errorString");
+    Expect.isTrue(errorString.contains("getter"), "02: $errorString");
+  }
+  {
+    var invocationSet = Invocation.setter(#foo, 42);
+    var error = NoSuchMethodError.withInvocation(receiver, invocationSet);
+    var errorString = error.toString();
+    Expect.isTrue(errorString.contains("foo"), "03: $errorString");
+    Expect.isTrue(errorString.contains("setter"), "04: $errorString");
+  }
+  {
+    var invocationCall = Invocation.method(#foo, [42]);
+    var error = NoSuchMethodError.withInvocation(receiver, invocationCall);
+    var errorString = error.toString();
+    Expect.isTrue(errorString.contains("foo"), "05: $errorString");
+    Expect.isTrue(errorString.contains("method"), "06: $errorString");
+    Expect.isTrue(errorString.contains("(_)"), "07: $errorString");
+  }
+  {
+    var invocationCall = Invocation.method(#foo, [42], {#bar: 37});
+    var error = NoSuchMethodError.withInvocation(receiver, invocationCall);
+    var errorString = error.toString();
+    Expect.isTrue(errorString.contains("foo"), "08: $errorString");
+    Expect.isTrue(errorString.contains("method"), "09: $errorString");
+    Expect.isTrue(errorString.contains("(_, {bar: _})"), "10: $errorString");
+  }
+  {
+    var invocationCall = Invocation.genericMethod(#foo, [int], [42]);
+    var error = NoSuchMethodError.withInvocation(receiver, invocationCall);
+    var errorString = error.toString();
+    Expect.isTrue(errorString.contains("foo"), "11: $errorString");
+    Expect.isTrue(errorString.contains("method"), "12: $errorString");
+    Expect.isTrue(errorString.contains("<_>(_)"), "13: $errorString");
+  }
+}
diff --git a/tests/standalone_2/standalone_2.status b/tests/standalone_2/standalone_2.status
index 1fa495c..e9477e1 100644
--- a/tests/standalone_2/standalone_2.status
+++ b/tests/standalone_2/standalone_2.status
@@ -24,6 +24,9 @@
 io/socket_ipv6_test: SkipByDesign
 io/socket_source_address_test: SkipByDesign
 
+[ $builder_tag == obfuscated ]
+no_such_method_error_with_invocation_test: SkipByDesign # Checks the member names in the NSM error message.
+
 [ $compiler == dart2analyzer ]
 deferred_transitive_import_error_test: Skip
 
diff --git a/tools/VERSION b/tools/VERSION
index b30807e..3b83bf6 100644
--- a/tools/VERSION
+++ b/tools/VERSION
@@ -33,7 +33,7 @@
 MAJOR 2
 MINOR 9
 PATCH 0
-PRERELEASE 8
+PRERELEASE 9
 PRERELEASE_PATCH 0
-ABI_VERSION 32
-OLDEST_SUPPORTED_ABI_VERSION 32
+ABI_VERSION 33
+OLDEST_SUPPORTED_ABI_VERSION 33
diff --git a/tools/abiversions/.gitignore b/tools/abiversions/.gitignore
index 3e2c1ba..d36db5c 100644
--- a/tools/abiversions/.gitignore
+++ b/tools/abiversions/.gitignore
@@ -2,3 +2,4 @@
 # to be checked in, and git doesn't track empty directories, hence this file.
 *
 !.gitignore
+!README.md
diff --git a/tools/abiversions/README.md b/tools/abiversions/README.md
new file mode 100644
index 0000000..7d0aab6
--- /dev/null
+++ b/tools/abiversions/README.md
@@ -0,0 +1,2 @@
+The files in this directory are auto-generated by the dart-sdk-linux-be bot
+when the ABI_VERSION in tools/VERSION is incremented.
\ No newline at end of file
diff --git a/tools/bots/test_matrix.json b/tools/bots/test_matrix.json
index 9dc2f2f..aa7fbec 100644
--- a/tools/bots/test_matrix.json
+++ b/tools/bots/test_matrix.json
@@ -17,9 +17,7 @@
       "third_party/pkg_tested/",
       "tools/",
       "out/ReleaseX64/dart-sdk/",
-      "out/ReleaseX64NNBD/dart-sdk/",
-      "xcodebuild/ReleaseX64/dart-sdk/",
-      "xcodebuild/ReleaseX64NNBD/dart-sdk/"
+      "xcodebuild/ReleaseX64/dart-sdk/"
     ],
     "dart2js": [
       ".packages",
@@ -31,7 +29,7 @@
       "runtime/tests/",
       "samples-dev/",
       "samples/",
-      "sdk/",
+      "sdk_nnbd/",
       "tests/.dart_tool/package_config.json",
       "tests/angular/",
       "tests/co19_2/co19_2-analyzer.status",
@@ -70,9 +68,9 @@
     "dart2js_nnbd": [
       ".packages",
       ".dart_tool/package_config.json",
-      "out/ReleaseIA32NNBD/dart-sdk/",
-      "out/ReleaseX64NNBD/dart-sdk/",
-      "out/ReleaseX64NNBD/gen/utils/dartdevc/",
+      "out/ReleaseIA32/dart-sdk/",
+      "out/ReleaseX64/dart-sdk/",
+      "out/ReleaseX64/gen/utils/dartdevc/",
       "pkg/",
       "runtime/tests/",
       "samples-dev/",
@@ -86,35 +84,24 @@
       "tests/co19/co19-dartdevc.status",
       "tests/co19/co19-kernel.status",
       "tests/co19/co19-runtime.status",
-      "tests/co19_2/co19_2-analyzer.status",
-      "tests/co19_2/co19_2-co19.status",
-      "tests/co19_2/co19_2-dart2js.status",
-      "tests/co19_2/co19_2-dartdevc.status",
-      "tests/co19_2/co19_2-kernel.status",
-      "tests/co19_2/co19_2-runtime.status",
       "tests/compiler/",
-      "tests/corelib_2/",
       "tests/corelib/",
       "tests/dart/",
       "tests/kernel/",
-      "tests/language_2/",
       "tests/language/",
-      "tests/lib_2/",
       "tests/lib/",
       "tests/light_unittest.dart",
       "tests/search/",
-      "tests/standalone_2/",
       "tests/ffi/",
-      "tests/ffi_2/",
       "third_party/babel/babel.min.js",
       "third_party/d8/",
       "third_party/pkg/",
       "third_party/pkg_tested/",
       "third_party/requirejs/",
       "tools/",
-      "xcodebuild/ReleaseIA32NNBD/dart-sdk/",
-      "xcodebuild/ReleaseX64NNBD/dart-sdk/",
-      "xcodebuild/ReleaseX64NNBD/gen/utils/dartdevc/"
+      "xcodebuild/ReleaseIA32/dart-sdk/",
+      "xcodebuild/ReleaseX64/dart-sdk/",
+      "xcodebuild/ReleaseX64/gen/utils/dartdevc/"
     ],
     "dart2js_hostasserts": [
       ".packages",
@@ -167,18 +154,17 @@
       "xcodebuild/ReleaseX64/dart2js_platform.dill",
       "xcodebuild/ReleaseX64/dart2js_platform_strong.dill"
     ],
-    "dart2js_hostasserts_nnbd": [
+    "dart2js_hostasserts_prennbd": [
       ".packages",
       ".dart_tool/package_config.json",
-      "out/ReleaseX64NNBD/dart",
-      "out/ReleaseX64NNBD/dart2js_platform.dill",
-      "out/ReleaseX64NNBD/dart2js_platform_strong.dill",
+      "out/ReleaseX64Legacy/dart",
+      "out/ReleaseX64Legacy/dart2js_platform.dill",
+      "out/ReleaseX64Legacy/dart2js_platform_strong.dill",
       "pkg/",
       "runtime/tests/",
       "samples-dev/",
       "samples/",
       "sdk/",
-      "sdk_nnbd/",
       "tests/.dart_tool/package_config.json",
       "tests/angular/",
       "tests/co19/co19-analyzer.status",
@@ -195,32 +181,67 @@
       "tests/co19_2/co19_2-runtime.status",
       "tests/compiler/",
       "tests/corelib_2/",
-      "tests/corelib/",
       "tests/dart/",
       "tests/kernel/",
       "tests/language_2/",
-      "tests/language/",
       "tests/lib_2/",
-      "tests/lib/",
       "tests/light_unittest.dart",
       "tests/search/",
       "tests/standalone_2/",
       "tests/ffi/",
+      "tests/ffi_2/",
+      "third_party/d8/",
+      "third_party/pkg/",
+      "third_party/pkg_tested/",
+      "third_party/requirejs/",
+      "tools/",
+      "xcodebuild/ReleaseX64Legacy/dart",
+      "xcodebuild/ReleaseX64Legacy/dart2js_platform.dill",
+      "xcodebuild/ReleaseX64Legacy/dart2js_platform_strong.dill"
+    ],
+    "dart2js_hostasserts_nnbd": [
+      ".packages",
+      ".dart_tool/package_config.json",
+      "out/ReleaseX64/dart",
+      "out/ReleaseX64/dart2js_platform.dill",
+      "out/ReleaseX64/dart2js_platform_strong.dill",
+      "pkg/",
+      "runtime/tests/",
+      "samples-dev/",
+      "samples/",
+      "sdk/",
+      "sdk_nnbd/",
+      "tests/.dart_tool/package_config.json",
+      "tests/angular/",
+      "tests/co19/co19-analyzer.status",
+      "tests/co19/co19-co19.status",
+      "tests/co19/co19-dart2js.status",
+      "tests/co19/co19-dartdevc.status",
+      "tests/co19/co19-kernel.status",
+      "tests/co19/co19-runtime.status",
+      "tests/compiler/",
+      "tests/corelib/",
+      "tests/dart/",
+      "tests/kernel/",
+      "tests/language/",
+      "tests/lib/",
+      "tests/light_unittest.dart",
+      "tests/search/",
+      "tests/ffi/",
       "third_party/d8/",
       "third_party/pkg/",
       "third_party/pkg_tested/",
       "third_party/requirejs/",
       "tools/",
-      "xcodebuild/ReleaseX64NNBD/dart",
-      "xcodebuild/ReleaseX64NNBD/dart2js_platform.dill",
-      "xcodebuild/ReleaseX64NNBD/dart2js_platform_strong.dill"
+      "xcodebuild/ReleaseX64/dart",
+      "xcodebuild/ReleaseX64/dart2js_platform.dill",
+      "xcodebuild/ReleaseX64/dart2js_platform_strong.dill"
     ],
     "front-end": [
       ".packages",
       ".dart_tool/package_config.json",
       "out/ReleaseIA32/",
       "out/ReleaseX64/",
-      "out/ReleaseX64NNBD/",
       "pkg/",
       "runtime/tests/",
       "samples-dev/",
@@ -380,45 +401,46 @@
       "pkg/vm/",
       "runtime/",
       "sdk/",
+      "sdk_nnbd/",
       ".dart_tool/package_config.json",
       ".packages",
       ".vpython"
     ],
     "vm-kernel-nnbd": [
       "benchmarks/",
-      "out/DebugIA32NNBD/",
-      "out/DebugX64NNBD/",
-      "out/DebugSIMARMNNBD/",
-      "out/DebugSIMARM64NNBD/",
-      "out/DebugSIMARM_X64NNBD/",
-      "out/DebugAndroidARMNNBD/",
-      "out/DebugAndroidARM_X64NNBD/",
-      "out/DebugAndroidARM64NNBD/",
-      "out/ReleaseIA32NNBD/",
-      "out/ReleaseX64NNBD/",
-      "out/ReleaseSIMARMNNBD/",
-      "out/ReleaseSIMARM64NNBD/",
-      "out/ReleaseSIMARM_X64NNBD/",
-      "out/ReleaseAndroidARMNNBD/",
-      "out/ReleaseAndroidARM_X64NNBD/",
-      "out/ReleaseAndroidARM64NNBD/",
-      "out/ReleaseXARM64NNBD/",
-      "out/ProductIA32NNBD/",
-      "out/ProductX64NNBD/",
-      "out/ProductSIMARMNNBD/",
-      "out/ProductSIMARM64NNBD/",
-      "out/ProductSIMARM_X64NNBD/",
-      "out/ProductAndroidARMNNBD/",
-      "out/ProductAndroidARM64NNBD/",
-      "xcodebuild/DebugIA32NNBD/",
-      "xcodebuild/DebugSIMARMNNBD/",
-      "xcodebuild/DebugSIMARM64NNBD/",
-      "xcodebuild/DebugX64NNBD/",
-      "xcodebuild/ProductX64NNBD/",
-      "xcodebuild/ReleaseIA32NNBD/",
-      "xcodebuild/ReleaseSIMARMNNBD/",
-      "xcodebuild/ReleaseSIMARM64NNBD/",
-      "xcodebuild/ReleaseX64NNBD/",
+      "out/DebugIA32/",
+      "out/DebugX64/",
+      "out/DebugSIMARM/",
+      "out/DebugSIMARM64/",
+      "out/DebugSIMARM_X64/",
+      "out/DebugAndroidARM/",
+      "out/DebugAndroidARM_X64/",
+      "out/DebugAndroidARM64/",
+      "out/ReleaseIA32/",
+      "out/ReleaseX64/",
+      "out/ReleaseSIMARM/",
+      "out/ReleaseSIMARM64/",
+      "out/ReleaseSIMARM_X64/",
+      "out/ReleaseAndroidARM/",
+      "out/ReleaseAndroidARM_X64/",
+      "out/ReleaseAndroidARM64/",
+      "out/ReleaseXARM64/",
+      "out/ProductIA32/",
+      "out/ProductX64/",
+      "out/ProductSIMARM/",
+      "out/ProductSIMARM64/",
+      "out/ProductSIMARM_X64/",
+      "out/ProductAndroidARM/",
+      "out/ProductAndroidARM64/",
+      "xcodebuild/DebugIA32/",
+      "xcodebuild/DebugSIMARM/",
+      "xcodebuild/DebugSIMARM64/",
+      "xcodebuild/DebugX64/",
+      "xcodebuild/ProductX64/",
+      "xcodebuild/ReleaseIA32/",
+      "xcodebuild/ReleaseSIMARM/",
+      "xcodebuild/ReleaseSIMARM64/",
+      "xcodebuild/ReleaseX64/",
       "samples/",
       "samples-dev/",
       "tools/",
@@ -435,23 +457,12 @@
       "tests/co19/co19-dartdevc.status",
       "tests/co19/co19-kernel.status",
       "tests/co19/co19-runtime.status",
-      "tests/co19_2/co19_2-analyzer.status",
-      "tests/co19_2/co19_2-co19.status",
-      "tests/co19_2/co19_2-dart2js.status",
-      "tests/co19_2/co19_2-dartdevc.status",
-      "tests/co19_2/co19_2-kernel.status",
-      "tests/co19_2/co19_2-runtime.status",
       "tests/compiler/",
-      "tests/corelib_2/",
       "tests/dart/",
       "tests/kernel/",
-      "tests/language_2/",
-      "tests/lib_2/",
       "tests/light_unittest.dart",
       "tests/search/",
-      "tests/standalone_2/",
       "tests/ffi/",
-      "tests/ffi_2/",
       "pkg/_fe_analyzer_shared/",
       "pkg/async_helper/",
       "pkg/build_integration/",
@@ -553,61 +564,61 @@
         "builder-tag": "analyzer_use_fasta"
       }
     },
-    "dartk-asan-(linux|mac)-(debug|product|release)-(ia32|x64)": {
+    "dartk-asan-(linux|mac)-(debug|product|release)-(ia32|x64|simarm|simarm64)": {
       "options": {
         "builder-tag": "asan",
         "timeout": 240
       }
     },
-    "dartk-lsan-(linux|mac)-(debug|product|release)-(ia32|x64)": {
+    "dartk-lsan-(linux|mac)-(debug|product|release)-(ia32|x64|simarm|simarm64)": {
       "options": {
         "builder-tag": "lsan",
         "timeout": 240
       }
     },
-    "dartk-msan-linux-(debug|product|release)-x64": {
+    "dartk-msan-linux-(debug|product|release)-(x64|simarm64)": {
       "options": {
         "builder-tag": "msan",
         "timeout": 240
       }
     },
-    "dartk-tsan-(linux|mac)-(debug|product|release)-x64": {
+    "dartk-tsan-(linux|mac)-(debug|product|release)-(x64|simarm64)": {
       "options": {
         "builder-tag": "tsan",
         "timeout": 240
       }
     },
-    "dartk-ubsan-(linux|mac)-(debug|product|release)-(ia32|x64)": {
+    "dartk-ubsan-(linux|mac)-(debug|product|release)-(ia32|x64|simarm|simarm64)": {
       "options": {
         "builder-tag": "ubsan",
         "timeout": 240
       }
     },
-    "dartkp-asan-(linux|mac)-(debug|product|release)-x64": {
+    "dartkp-asan-(linux|mac)-(debug|product|release)-(x64|simarm|simarm64)": {
       "options": {
         "builder-tag": "asan",
         "timeout": 240
       }
     },
-    "dartkp-lsan-(linux|mac)-(debug|product|release)-x64": {
+    "dartkp-lsan-(linux|mac)-(debug|product|release)-(x64|simarm|simarm64)": {
       "options": {
         "builder-tag": "lsan",
         "timeout": 240
       }
     },
-    "dartkp-msan-linux-(debug|product|release)-x64": {
+    "dartkp-msan-linux-(debug|product|release)-(x64|simarm64)": {
       "options": {
         "builder-tag": "msan",
         "timeout": 240
       }
     },
-    "dartkp-tsan-(linux|mac)-(debug|product|release)-x64": {
+    "dartkp-tsan-(linux|mac)-(debug|product|release)-(x64|simarm64)": {
       "options": {
         "builder-tag": "tsan",
         "timeout": 240
       }
     },
-    "dartkp-ubsan-(linux|mac)-(debug|product|release)-x64": {
+    "dartkp-ubsan-(linux|mac)-(debug|product|release)-(x64|simarm|simarm64)": {
       "options": {
         "builder-tag": "ubsan",
         "timeout": 240
@@ -678,6 +689,17 @@
         "host-checked": true
       }
     },
+    "dart2js-hostasserts-prennbd-(linux|win)-x64-(d8|chrome)": {
+      "options": {
+        "builder-tag": "dart2js-prennbd",
+        "dart2js-options": [
+          "--libraries-spec=sdk/lib/libraries.json",
+          "--platform-binaries=out/ReleaseX64Legacy/"
+        ],
+        "timeout": 240,
+        "host-checked": true
+      }
+    },
     "dart2js-hostasserts-weak-(linux|win)-x64-(d8|chrome)": {
       "options": {
         "builder-tag": "dart2js-weak",
@@ -687,7 +709,7 @@
         "dart2js-options": [
           "--no-null-safety",
           "--libraries-spec=sdk_nnbd/lib/libraries.json",
-          "--platform-binaries=out/ReleaseX64NNBD/"
+          "--platform-binaries=out/ReleaseX64/"
         ],
         "timeout": 240,
         "host-checked": true
@@ -702,7 +724,7 @@
         "dart2js-options": [
           "--no-null-safety",
           "--libraries-spec=sdk_nnbd/lib/libraries.json",
-          "--platform-binaries=xcodebuild/ReleaseX64NNBD/"
+          "--platform-binaries=xcodebuild/ReleaseX64/"
         ],
         "timeout": 240,
         "host-checked": true
@@ -717,7 +739,7 @@
         "dart2js-options": [
           "--null-safety",
           "--libraries-spec=sdk_nnbd/lib/libraries.json",
-          "--platform-binaries=out/ReleaseX64NNBD/"
+          "--platform-binaries=out/ReleaseX64/"
         ],
         "timeout": 240,
         "host-checked": true
@@ -732,32 +754,12 @@
         "dart2js-options": [
           "--null-safety",
           "--libraries-spec=sdk_nnbd/lib/libraries.json",
-          "--platform-binaries=xcodebuild/ReleaseX64NNBD/"
+          "--platform-binaries=xcodebuild/ReleaseX64/"
         ],
         "timeout": 240,
         "host-checked": true
       }
     },
-    "dart2js-old-rti-(linux|mac|win)-x64-d8": {
-      "options": {
-        "builder-tag": "old_rti",
-        "dart2js-options": [
-          "--use-old-rti"
-        ],
-        "host-checked": true
-      }
-    },
-    "dart2js-old-rti-minified-csp-(linux|mac|win)-x64-d8": {
-      "options": {
-        "builder-tag": "old_rti",
-        "csp": true,
-        "dart2js-options": [
-          "--use-old-rti"
-        ],
-        "minified": true,
-        "use-sdk": true
-      }
-    },
     "dartkp-android-(debug|product|release)-arm_x64": {
       "options": {
         "builder-tag": "crossword",
@@ -1185,7 +1187,6 @@
           "name": "build dart",
           "script": "tools/build.py",
           "arguments": [
-            "--nnbd",
             "create_sdk",
             "dartdevc_test",
             "kernel_platform_files",
@@ -1193,23 +1194,6 @@
           ]
         },
         {
-          "name": "legacy sdk tests",
-          "arguments": [
-            "-ncfe-weak-${system}"
-          ],
-          "fileset": "front-end",
-          "shards": 5
-        },
-        {
-          "name": "legacy co19_2 tests",
-          "arguments": [
-            "-ncfe-weak-${system}",
-            "co19_2"
-          ],
-          "fileset": "front-end",
-          "shards": 6
-        },
-        {
           "name": "weak sdk tests",
           "arguments": [
             "-ncfe-weak-${system}",
@@ -1452,29 +1436,11 @@
           "name": "build dart",
           "script": "tools/build.py",
           "arguments": [
-            "--nnbd",
             "runtime_kernel",
             "dart_precompiled_runtime"
           ]
         },
         {
-          "name": "vm legacy tests in weak mode with asserts",
-          "arguments": [
-            "-ndartkp-weak-asserts-${system}-${mode}-${arch}"
-          ],
-          "fileset": "vm-kernel-nnbd",
-          "shards": 6
-        },
-        {
-          "name": "vm legacy tests(co19_2) in weak mode with asserts",
-          "arguments": [
-            "-ndartkp-weak-asserts-${system}-${mode}-${arch}",
-            "co19_2"
-          ],
-          "fileset": "vm-kernel-nnbd",
-          "shards": 10
-        },
-        {
           "name": "vm nnbd tests in weak mode with asserts",
           "arguments": [
             "-ndartkp-weak-asserts-${system}-${mode}-${arch}",
@@ -1817,29 +1783,11 @@
           "name": "build dart",
           "script": "tools/build.py",
           "arguments": [
-            "--nnbd",
             "create_sdk",
             "runtime_kernel"
           ]
         },
         {
-          "name": "vm legacy tests in weak mode with asserts",
-          "arguments": [
-            "-ndartk-weak-asserts-${system}-${mode}-${arch}"
-          ],
-          "fileset": "vm-kernel-nnbd",
-          "shards": 6
-        },
-        {
-          "name": "vm legacy tests(co19_2) in weak mode with asserts",
-          "arguments": [
-            "-ndartk-weak-asserts-${system}-${mode}-${arch}",
-            "co19_2"
-          ],
-          "fileset": "vm-kernel-nnbd",
-          "shards": 6
-        },
-        {
           "name": "vm nnbd test in weak mode with asserts",
           "arguments": [
             "-ndartk-weak-asserts-${system}-${mode}-${arch}",
@@ -2143,13 +2091,12 @@
           "name": "build dart",
           "script": "tools/build.py",
           "arguments": [
-            "--nnbd",
             "dartdevc_test"
           ]
         },
         {
           "name": "check dart nnbd sdk for static errors",
-          "script": "out/ReleaseX64NNBD/dart-sdk/bin/dart",
+          "script": "out/ReleaseX64/dart-sdk/bin/dart",
           "arguments": [
             "--enable-experiment=non-nullable",
             "pkg/dev_compiler/tool/check_nnbd_sdk.dart"
@@ -2157,7 +2104,7 @@
         },
         {
           "name": "ddc weak modular tests",
-          "script": "out/ReleaseX64NNBD/dart-sdk/bin/dart",
+          "script": "out/ReleaseX64/dart-sdk/bin/dart",
           "testRunner": true,
           "arguments": [
             "pkg/dev_compiler/test/modular_suite_nnbd.dart",
@@ -2179,26 +2126,6 @@
           "fileset": "dart2js_nnbd"
         },
         {
-          "name": "ddc legacy weak tests",
-          "arguments": [
-            "-ndartdevk-weak-linux-release-chrome",
-            "language_2",
-            "corelib_2",
-            "lib_2"
-          ],
-          "shards": 6,
-          "fileset": "dart2js_nnbd"
-        },
-        {
-          "name": "ddc legacy weak co19 tests",
-          "arguments": [
-            "-ndartdevk-weak-linux-release-chrome",
-            "co19_2"
-          ],
-          "shards": 6,
-          "fileset": "dart2js_nnbd"
-        },
-        {
           "name": "ddc nnbd strong tests",
           "arguments": [
             "-ndartdevk-strong-linux-release-chrome",
@@ -2473,20 +2400,22 @@
         "dart2js-rti-linux-x64-d8"
       ],
       "meta": {
-        "description": "dart2js-d8 tests with new-RTI enabled"
+        "description": "dart2js-d8 tests without null safety"
       },
       "steps": [
         {
           "name": "build dart",
           "script": "tools/build.py",
           "arguments": [
+            "--no-nnbd",
+            "create_sdk",
             "dart2js_bot"
           ]
         },
         {
-          "name": "dart2js old-rti tests",
+          "name": "dart2js pre nnbd tests",
           "arguments": [
-            "-ndart2js-old-rti-linux-x64-d8",
+            "-ndart2js-hostasserts-prennbd-linux-x64-d8",
             "--dart2js-batch",
             "language_2",
             "corelib_2",
@@ -2494,20 +2423,7 @@
             "dart2js_extra"
           ],
           "shards": 6,
-          "fileset": "dart2js_hostasserts"
-        },
-        {
-          "name": "dart2js old-rti minified+csp tests",
-          "arguments": [
-            "-ndart2js-old-rti-minified-csp-linux-x64-d8",
-            "--dart2js-batch",
-            "language_2",
-            "corelib_2",
-            "dart2js_native",
-            "dart2js_extra"
-          ],
-          "shards": 6,
-          "fileset": "dart2js"
+          "fileset": "dart2js_hostasserts_prennbd"
         }
       ]
     },
@@ -2723,14 +2639,13 @@
           "name": "build dart",
           "script": "tools/build.py",
           "arguments": [
-            "--nnbd",
             "create_sdk",
             "dart2js_bot"
           ]
         },
         {
           "name": "check dart nnbd sdk for static errors",
-          "script": "out/ReleaseX64NNBD/dart-sdk/bin/dart",
+          "script": "out/ReleaseX64/dart-sdk/bin/dart",
           "arguments": [
             "--enable-experiment=non-nullable",
             "pkg/dev_compiler/tool/check_nnbd_sdk.dart",
@@ -2743,8 +2658,8 @@
           "arguments": [
             "-ndart2js-hostasserts-weak-linux-x64-d8",
             "--dart2js-batch",
-            "language_2",
-            "corelib_2",
+            "language",
+            "corelib",
             "dart2js_extra",
             "dart2js_native",
             "kernel"
@@ -2757,7 +2672,7 @@
           "arguments": [
             "-ndart2js-hostasserts-weak-linux-x64-chrome",
             "--dart2js-batch",
-            "lib_2"
+            "lib"
           ],
           "shards": 3,
           "fileset": "dart2js_hostasserts_nnbd"
@@ -2767,7 +2682,7 @@
           "arguments": [
             "-ndart2js-hostasserts-weak-linux-x64-chrome",
             "--dart2js-batch",
-            "co19_2"
+            "co19"
           ],
           "shards": 6,
           "fileset": "dart2js_hostasserts_nnbd"
@@ -3128,7 +3043,6 @@
           "name": "build dart",
           "script": "tools/build.py",
           "arguments": [
-            "--nnbd",
             "create_sdk"
           ]
         },
@@ -3155,19 +3069,6 @@
           ]
         },
         {
-          "name": "analyze nnbd legacy weak tests enable-asserts",
-          "arguments": [
-            "-nanalyzer-asserts-weak-${system}"
-          ]
-        },
-        {
-          "name": "analyze nnbd legacy weak tests enable-asserts co19_2",
-          "arguments": [
-            "-nanalyzer-asserts-weak-${system}",
-            "co19_2"
-          ]
-        },
-        {
           "name": "analyze nnbd strong co19 tests",
           "arguments": [
             "-nanalyzer-asserts-strong-${system}",
@@ -3819,8 +3720,8 @@
     "ASAN_OPTIONS": "check_initialization_order=true:handle_segv=0:detect_leaks=1:detect_stack_use_after_return=0:disable_coredump=0:abort_on_error=1",
     "LSAN_OPTIONS": "check_initialization_order=true:handle_segv=0:detect_leaks=1:detect_stack_use_after_return=0:disable_coredump=0:abort_on_error=1",
     "MSAN_OPTIONS": "check_initialization_order=true:handle_segv=0:detect_leaks=1:detect_stack_use_after_return=0:disable_coredump=0:abort_on_error=1",
-    "TSAN_OPTIONS": "handle_segv=0:disable_coredump=0:abort_on_error=1",
-    "UBSAN_OPTIONS": "handle_segv=0:disable_coredump=0:abort_on_error=1"
+    "TSAN_OPTIONS": "handle_segv=0:disable_coredump=0:abort_on_error=1:report_thread_leaks=0",
+    "UBSAN_OPTIONS": "handle_segv=0:disable_coredump=0:halt_on_error=1:print_stacktrace=1"
   },
   "sanitizer_symbolizer": {
     "linux": "buildtools/linux-x64/clang/bin/llvm-symbolizer",
diff --git a/tools/build.py b/tools/build.py
index 20ac683..0d05cd9 100755
--- a/tools/build.py
+++ b/tools/build.py
@@ -67,11 +67,12 @@
         help='Build variants (comma-separated).',
         metavar='[all,none,asan,lsan,msan,tsan,ubsan]',
         default='none')
-    # TODO(38701): Remove this and everything that references it once the
-    # forked NNBD SDK is merged back in.
+    # TODO(38701): Remove this option once the NNBD SDK is stable/performant
+    # and there is no need to build a legacy version of the SDK for comparison
+    # purposes.
     result.add_option(
-        "--nnbd",
-        help='Use the NNBD fork of the SDK.',
+        "--no-nnbd",
+        help='Build the Legacy (pre NNBD) version of the SDK.',
         default=False,
         action='store_true')
     result.add_option(
@@ -218,7 +219,7 @@
     return True
 
 
-def RunGNIfNeeded(out_dir, target_os, mode, arch, use_nnbd, sanitizer):
+def RunGNIfNeeded(out_dir, target_os, mode, arch, dont_use_nnbd, sanitizer):
     if os.path.isfile(os.path.join(out_dir, 'args.gn')):
         return
     gn_os = 'host' if target_os == HOST_OS else target_os
@@ -235,8 +236,8 @@
         gn_os,
         '-v',
     ]
-    if use_nnbd:
-        gn_command.append('--nnbd')
+    if dont_use_nnbd:
+        gn_command.append('--no-nnbd')
 
     process = subprocess.Popen(gn_command)
     process.wait()
@@ -291,13 +292,13 @@
 # Returns a tuple (build_config, command to run, whether goma is used)
 def BuildOneConfig(options, targets, target_os, mode, arch, sanitizer):
     build_config = utils.GetBuildConf(mode, arch, target_os, sanitizer,
-                                      options.nnbd)
+                                      options.no_nnbd)
     out_dir = utils.GetBuildRoot(HOST_OS, mode, arch, target_os, sanitizer,
-                                 options.nnbd)
+                                 options.no_nnbd)
     using_goma = False
     # TODO(zra): Remove auto-run of gn, replace with prompt for user to run
     # gn.py manually.
-    RunGNIfNeeded(out_dir, target_os, mode, arch, options.nnbd, sanitizer)
+    RunGNIfNeeded(out_dir, target_os, mode, arch, options.no_nnbd, sanitizer)
     command = ['ninja', '-C', out_dir]
     if options.verbose:
         command += ['-v']
diff --git a/tools/dom/nnbd_src/EventStreamProvider.dart b/tools/dom/nnbd_src/EventStreamProvider.dart
index ec89e89..fe01be9 100644
--- a/tools/dom/nnbd_src/EventStreamProvider.dart
+++ b/tools/dom/nnbd_src/EventStreamProvider.dart
@@ -248,16 +248,18 @@
   }
 
   Future cancel() {
-    // Return type cannot be null due to override, so return empty Future
-    // instead.
-    var emptyFuture = new Future<void>.value();
-    if (_canceled) return emptyFuture;
+    // Check for strong mode. This function can no longer return null in strong
+    // mode, so only return null in weak mode to preserve synchronous timing.
+    // See issue 41653 for more details.
+    dynamic emptyFuture =
+        typeAcceptsNull<Event>() ? null : Future<void>.value();
+    if (_canceled) return emptyFuture as Future;
 
     _unlisten();
     // Clear out the target to indicate this is complete.
     _target = null;
     _onData = null;
-    return emptyFuture;
+    return emptyFuture as Future;
   }
 
   bool get _canceled => _target == null;
diff --git a/tools/dom/nnbd_src/dart2js_KeyEvent.dart b/tools/dom/nnbd_src/dart2js_KeyEvent.dart
index 2b2caf8..422c7ad 100644
--- a/tools/dom/nnbd_src/dart2js_KeyEvent.dart
+++ b/tools/dom/nnbd_src/dart2js_KeyEvent.dart
@@ -108,7 +108,7 @@
       view = window;
     }
 
-    var eventObj;
+    dynamic eventObj;
 
     // Currently this works on everything but Safari. Safari throws an
     // "Attempting to change access mechanism for an unconfigurable property"
diff --git a/tools/dom/templates/html/impl/impl_Element.darttemplate b/tools/dom/templates/html/impl/impl_Element.darttemplate
index 6523947..bdca7ed 100644
--- a/tools/dom/templates/html/impl/impl_Element.darttemplate
+++ b/tools/dom/templates/html/impl/impl_Element.darttemplate
@@ -1374,7 +1374,9 @@
     if (Range.supportsCreateContextualFragment &&
         _canBeUsedToCreateContextualFragment) {
       _parseRange$NULLASSERT.selectNodeContents(contextElement);
-      fragment = _parseRange$NULLASSERT.createContextualFragment(html$NULLASSERT);
+      // createContextualFragment expects a non-nullable html string.
+      // If null is passed, it gets converted to 'null' instead.
+      fragment = _parseRange$NULLASSERT.createContextualFragment(html ?? 'null');
     } else {
       contextElement._innerHtml = html;
 
diff --git a/tools/gn.py b/tools/gn.py
index 99a59cb..7d2f7b6 100755
--- a/tools/gn.py
+++ b/tools/gn.py
@@ -51,10 +51,11 @@
     return args.split()
 
 
-# TODO(38701): Remove use_nnbd once the forked NNBD SDK is merged back in.
-def GetOutDir(mode, arch, target_os, sanitizer, use_nnbd):
+# TODO(38701): Remove dont_use_nnbd once the NNBD SDK is stable/performant and
+# there is no need to build a legacy version of the SDK for comparison purposes.
+def GetOutDir(mode, arch, target_os, sanitizer, dont_use_nnbd):
     return utils.GetBuildRoot(HOST_OS, mode, arch, target_os, sanitizer,
-                              use_nnbd)
+                              dont_use_nnbd)
 
 
 def ToCommandLine(gn_args):
@@ -134,12 +135,19 @@
     # Don't use the sysroot if we're given another sysroot.
     if TargetSysroot(args):
         return False
+    # Our Debian Jesse sysroot doesn't work with GCC 9
+    if not gn_args['is_clang']:
+        return False
+    # Our Debian Jesse sysroot has incorrect annotations on realloc.
+    if gn_args['is_ubsan']:
+        return False
     # Otherwise use the sysroot.
     return True
 
 
-# TODO(38701): Remove use_nnbd once the forked NNBD SDK is merged back in.
-def ToGnArgs(args, mode, arch, target_os, sanitizer, use_nnbd):
+# TODO(38701): Remove dont_use_nnbd once the NNBD SDK is stable/performant and
+# there is no need to build a legacy version of the SDK for comparison purposes.
+def ToGnArgs(args, mode, arch, target_os, sanitizer, dont_use_nnbd):
     gn_args = {}
 
     host_os = HostOsForGn(HOST_OS)
@@ -260,7 +268,7 @@
         gn_args['dart_debug_optimization_level'] = args.debug_opt_level
         gn_args['debug_optimization_level'] = args.debug_opt_level
 
-    gn_args['use_nnbd'] = use_nnbd
+    gn_args['dont_use_nnbd'] = dont_use_nnbd
 
     return gn_args
 
@@ -370,9 +378,11 @@
         help='Build variants (comma-separated).',
         metavar='[all,none,asan,lsan,msan,tsan,ubsan]',
         default='none')
-    # TODO(38701): Remove this once the forked NNBD SDK is merged back in.
+    # TODO(38701): Remove dont_use_nnbd once the NNBD SDK is stable/performant
+    # and there is no need to build a legacy version of the SDK for
+    # comparison purposes.
     common_group.add_argument(
-        "--nnbd",
+        "--no-nnbd",
         help='Use the NNBD fork of the SDK.',
         default=False,
         action='store_true')
@@ -509,14 +519,14 @@
             for arch in args.arch:
                 for sanitizer in args.sanitizer:
                     out_dir = GetOutDir(mode, arch, target_os, sanitizer,
-                                        args.nnbd)
+                                        args.no_nnbd)
                     # TODO(infra): Re-enable --check. Many targets fail to use
                     # public_deps to re-expose header files to their dependents.
                     # See dartbug.com/32364
                     command = [gn, 'gen', out_dir]
                     gn_args = ToCommandLine(
                         ToGnArgs(args, mode, arch, target_os, sanitizer,
-                                 args.nnbd))
+                                 args.no_nnbd))
                     gn_args += GetGNArgs(args)
                     if args.verbose:
                         print("gn gen --check in %s" % out_dir)
diff --git a/tools/migration/bin/test.dart b/tools/migration/bin/test.dart
index 1f39c51..d165634 100644
--- a/tools/migration/bin/test.dart
+++ b/tools/migration/bin/test.dart
@@ -20,17 +20,26 @@
   "vm": "dartk",
 };
 
-const configurations = {
+const strongConfigurations = {
   "analyzer": "analyzer-asserts-strong-linux",
   "cfe": "cfe-strong-linux",
-  "dart2js": "dart2js-weak-linux-x64-d8",
+  "dart2js": "dart2js-hostasserts-strong-linux-x64-d8",
   "ddc": "dartdevk-strong-linux-release-chrome",
   "vm": "dartk-strong-linux-release-x64",
 };
 
+const weakConfigurations = {
+  "analyzer": "analyzer-asserts-weak-linux",
+  "cfe": "cfe-weak-linux",
+  "dart2js": "dart2js-weak-linux-x64-d8",
+  "ddc": "dartdevk-weak-linux-release-chrome",
+  "vm": "dartk-weak-asserts-linux-release-x64",
+};
+
 void main(List<String> arguments) async {
   var testDir = "";
   var isLegacy = false;
+  var isStrong = true;
   var compiler = "ddc";
 
   var argParser = ArgParser();
@@ -45,6 +54,10 @@
       allowed: ["analyzer", "cfe", "dart2js", "ddc", "vm"],
       callback: (option) => compiler = option as String);
 
+  argParser.addFlag("weak", abbr: "w",
+      help: "Run the tests in weak mode.",
+      negatable: false, callback: (flag) => isStrong = !flag);
+
   if (arguments.contains("--help")) {
     showUsage(argParser);
   }
@@ -71,6 +84,7 @@
   // configuration. Otherwise, use the right named configuration.
   List<String> testArgs;
   if (Platform.isLinux || compiler != "ddc") {
+    var configurations = isStrong ? strongConfigurations : weakConfigurations;
     var configuration = configurations[compiler];
     if (!Platform.isLinux) {
       // TODO(rnystrom): We'll probably never need to run this script on
diff --git a/tools/promote.py b/tools/promote.py
index dea4dd2..d88039d 100644
--- a/tools/promote.py
+++ b/tools/promote.py
@@ -46,7 +46,14 @@
         help='The channel to promote.',
         default=None)
     group.add_option(
-        "--dry", help='Dry run', default=False, action="store_true")
+        '--source-channel',
+        type='string',
+        help='The channel to promote from. Defaults to the --channel value.',
+        default=None)
+    group.add_option('--dry',
+                     help='Dry run',
+                     default=False,
+                     action='store_true')
     result.add_option_group(group)
 
     return result
@@ -67,14 +74,16 @@
     if args[0] == 'promote':
         command = 'promote'
         if options.revision is None:
-            die('You must specify a --revision to specify which revision to promote'
-               )
+            die('You must specify the --version to promote')
 
         # Make sure options.channel is a valid
         if not options.channel:
             die('Specify --channel=beta/dev/stable')
         if options.channel not in bot_utils.Channel.ALL_CHANNELS:
-            die('You must supply a valid channel to --channel to promote')
+            die('You must supply a valid --channel to promote')
+        if (options.source_channel and
+                options.source_channel not in bot_utils.Channel.ALL_CHANNELS):
+            die('You must supply a valid --source-channel to promote from')
     else:
         die('Invalid command specified: {0}.  See help below'.format(args[0]))
 
@@ -82,13 +91,14 @@
         global DRY_RUN
         DRY_RUN = True
     if command == 'promote':
-        _PromoteDartArchiveBuild(options.channel, options.revision)
+        source = options.source_channel or options.channel
+        _PromoteDartArchiveBuild(options.channel, source, options.revision)
 
 
 def UpdateDocs():
     try:
         print 'Updating docs'
-        url = "http://api.dartlang.org/docs/releases/latest/?force_reload=true"
+        url = 'http://api.dartlang.org/docs/releases/latest/?force_reload=true'
         f = urllib.urlopen(url)
         f.read()
         print 'Successfully updated api docs'
@@ -97,11 +107,12 @@
         print 'Failed with: %s' % e
 
 
-def _PromoteDartArchiveBuild(channel, revision):
+def _PromoteDartArchiveBuild(channel, source_channel, revision):
     # These namer objects will be used to create GCS object URIs. For the
     # structure we use, please see tools/bots/bot_utils.py:GCSNamer
-    raw_namer = bot_utils.GCSNamer(channel, bot_utils.ReleaseType.RAW)
-    signed_namer = bot_utils.GCSNamer(channel, bot_utils.ReleaseType.SIGNED)
+    raw_namer = bot_utils.GCSNamer(source_channel, bot_utils.ReleaseType.RAW)
+    signed_namer = bot_utils.GCSNamer(source_channel,
+                                      bot_utils.ReleaseType.SIGNED)
     release_namer = bot_utils.GCSNamer(channel, bot_utils.ReleaseType.RELEASE)
 
     def promote(to_revision):
@@ -110,7 +121,7 @@
             if not (revision != None and len(channel) > 0 and
                     ('%s' % revision) in gs_path and channel in gs_path):
                 raise Exception(
-                    "InternalError: Sanity check failed on GS URI: %s" %
+                    'InternalError: Sanity check failed on GS URI: %s' %
                     gs_path)
 
         def exists(gs_path):
@@ -176,7 +187,7 @@
     gsutilTool = join(DART_PATH, 'third_party', 'gsutil', 'gsutil')
     command = [sys.executable, gsutilTool] + cmd
     if DRY_RUN:
-        print "DRY runnning: %s" % command
+        print 'DRY runnning: %s' % command
         return (None, None, 0)
     return bot_utils.run(command, throw_on_error=throw_on_error)
 
diff --git a/tools/upload_abi_dills.sh b/tools/upload_abi_dills.sh
index dad280a..28d3627 100755
--- a/tools/upload_abi_dills.sh
+++ b/tools/upload_abi_dills.sh
@@ -10,6 +10,9 @@
 #   $build_dir/gen_kernel_bytecode.dill
 # This script is a no-op unless $BUILDBOT_BUILDERNAME is "dart-sdk-linux-be".
 # It's also a no-op if dill files were already uploaded today.
+#
+# If the ABI was modified, the ABI_VERSION in tools/VERSIONS should be manually
+# incremented accordingly.
 set -e
 set -x
 
diff --git a/tools/utils.py b/tools/utils.py
index b1084cc..5bb768f 100644
--- a/tools/utils.py
+++ b/tools/utils.py
@@ -316,9 +316,11 @@
     return ((GetArchFamily(host_arch) != GetArchFamily(arch)) or
             (target_os != GuessOS()))
 
-# TODO(38701): Remove use_nnbd once the forked NNBD SDK is merged back in.
-def GetBuildConf(mode, arch, conf_os=None, sanitizer=None, use_nnbd=False):
-    nnbd = "NNBD" if use_nnbd else ""
+
+# TODO(38701): Remove dont_use_nnbd once the NNBD SDK is stable/performant and
+# there is no need to build a legacy version of the SDK for comparison purposes.
+def GetBuildConf(mode, arch, conf_os=None, sanitizer=None, dont_use_nnbd=False):
+    nnbd = "Legacy" if dont_use_nnbd else ""
     if conf_os == 'android':
         return '%s%s%s%s' % (GetBuildMode(mode), conf_os.title(), arch.upper(),
                              nnbd)
@@ -336,28 +338,30 @@
     return BUILD_ROOT[host_os]
 
 
-# TODO(38701): Remove use_nnbd once the forked NNBD SDK is merged back in.
+# TODO(38701): Remove dont_use_nnbd once the NNBD SDK is stable/performant and
+# there is no need to build a legacy version of the SDK for comparison purposes.
 def GetBuildRoot(host_os,
                  mode=None,
                  arch=None,
                  target_os=None,
                  sanitizer=None,
-                 use_nnbd=False):
+                 dont_use_nnbd=False):
     build_root = GetBuildDir(host_os)
     if mode:
         build_root = os.path.join(
-            build_root, GetBuildConf(mode, arch, target_os, sanitizer,
-                                     use_nnbd))
+            build_root,
+            GetBuildConf(mode, arch, target_os, sanitizer, dont_use_nnbd))
     return build_root
 
 
-# TODO(38701): Remove use_nnbd once the forked NNBD SDK is merged back in.
+# TODO(38701): Remove dont_use_nnbd once the NNBD SDK is stable/performant and
+# there is no need to build a legacy version of the SDK for comparison purposes.
 def GetBuildSdkBin(host_os,
                    mode=None,
                    arch=None,
                    target_os=None,
-                   use_nnbd=False):
-    build_root = GetBuildRoot(host_os, mode, arch, target_os, use_nnbd)
+                   dont_use_nnbd=False):
+    build_root = GetBuildRoot(host_os, mode, arch, target_os, dont_use_nnbd)
     return os.path.join(build_root, 'dart-sdk', 'bin')
 
 
diff --git a/utils/compiler/BUILD.gn b/utils/compiler/BUILD.gn
index dda6c4e..0ccee9d 100644
--- a/utils/compiler/BUILD.gn
+++ b/utils/compiler/BUILD.gn
@@ -46,10 +46,10 @@
   args = [ "--output_dir=$output_dir" ]
 }
 
-if (use_nnbd) {
-  libraries_specification_path = "sdk_nnbd/lib/libraries.json"
-} else {
+if (dont_use_nnbd) {
   libraries_specification_path = "sdk/lib/libraries.json"
+} else {
+  libraries_specification_path = "sdk_nnbd/lib/libraries.json"
 }
 
 application_snapshot("dart2js") {
@@ -91,7 +91,7 @@
     "dart:core",
   ]
 
-  if (use_nnbd) {
+  if (!dont_use_nnbd) {
     args += [ "--enable-experiment=non-nullable" ]
   }
 }
@@ -112,7 +112,7 @@
     "dart:core",
   ]
 
-  if (use_nnbd) {
+  if (!dont_use_nnbd) {
     args += [ "--enable-experiment=non-nullable" ]
   }
 }
diff --git a/utils/dartanalyzer/BUILD.gn b/utils/dartanalyzer/BUILD.gn
index 6065802..ad34236 100644
--- a/utils/dartanalyzer/BUILD.gn
+++ b/utils/dartanalyzer/BUILD.gn
@@ -44,7 +44,7 @@
   inputs = sdk_lib_files + analyzer_files
   output = "$root_gen_dir/strong.sum"
   outputs = [ output ]
-  if (use_nnbd) {
+  if (!dont_use_nnbd) {
     args = [
       "build-non-nullable",
       rebase_path(output),
diff --git a/utils/dartdevc/BUILD.gn b/utils/dartdevc/BUILD.gn
index a0fa6b0..3f4f974 100644
--- a/utils/dartdevc/BUILD.gn
+++ b/utils/dartdevc/BUILD.gn
@@ -16,10 +16,10 @@
 sdk_outline_dill = "$root_out_dir/ddc_sdk.dill"
 sdk_full_dill = "$root_out_dir/ddc_platform.dill"
 
-if (use_nnbd) {
-  libraries_specification_path = "sdk_nnbd/lib/libraries.json"
-} else {
+if (dont_use_nnbd) {
   libraries_specification_path = "sdk/lib/libraries.json"
+} else {
+  libraries_specification_path = "sdk_nnbd/lib/libraries.json"
 }
 
 application_snapshot("dartdevc") {
@@ -35,7 +35,9 @@
     "dartdevc.js",
   ]
 
-  if (use_nnbd) {
+  if (dont_use_nnbd) {
+    training_args += [ rebase_path("../../pkg/dev_compiler/bin/dartdevc.dart") ]
+  } else {
     training_args += [
       "--enable-experiment=non-nullable",
 
@@ -45,8 +47,6 @@
       # should be easier to compile while we bootstrap NNBD.
       rebase_path("../../tests/language_2/abstract/equal_test.dart"),
     ]
-  } else {
-    training_args += [ rebase_path("../../pkg/dev_compiler/bin/dartdevc.dart") ]
   }
 
   deps = [
@@ -58,12 +58,12 @@
 }
 
 # TODO(#38701) Cleanup after merging the forked SDK into mainline.
-if (use_nnbd) {
-  sdk_root = "../../sdk_nnbd"
-  libraries_specification_path = "sdk_nnbd/lib/libraries.json"
-} else {
+if (dont_use_nnbd) {
   sdk_root = "../../sdk"
   libraries_specification_path = "sdk/lib/libraries.json"
+} else {
+  sdk_root = "../../sdk_nnbd"
+  libraries_specification_path = "sdk_nnbd/lib/libraries.json"
 }
 
 sdk_lib_files = exec_script("../../tools/list_dart_files.py",
@@ -154,8 +154,8 @@
   ]
 
   # TODO(#38701) Cleanup after merging the forked SDK into mainline.
-  if (use_nnbd) {
-    args += [ "--nnbd" ]
+  if (dont_use_nnbd) {
+    args += [ "--no-nnbd" ]
   }
 }
 
@@ -276,7 +276,7 @@
     }
 
     # TODO(38701): Cleanup after merging the forked SDK into mainline.
-    if (use_nnbd) {
+    if (!dont_use_nnbd) {
       args += [ "--enable-experiment=non-nullable" ]
     }
   }
@@ -335,7 +335,7 @@
   ]
 
   # TODO(38701): Cleanup after merging the forked SDK into mainline.
-  if (use_nnbd) {
+  if (!dont_use_nnbd) {
     args += [ "--enable-experiment=non-nullable" ]
   }
 }
@@ -392,7 +392,7 @@
   ]
 
   # TODO(38701): Cleanup after merging the forked SDK into mainline.
-  if (use_nnbd) {
+  if (!dont_use_nnbd) {
     args += [ "--enable-experiment=non-nullable" ]
   }
 }